@libs-ui/interfaces-types 0.2.356-0 → 0.2.356-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.
|
@@ -1,187 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
/** ====================== (Tuỳ chọn) Ví dụ nhanh ====================== **/
|
|
3
|
-
// export interface IComment {
|
|
4
|
-
// comments?: WritableSignal<ISubComment>;
|
|
5
|
-
// }
|
|
6
|
-
// export interface ISubComment {
|
|
7
|
-
// store?: WritableSignal<Array<WritableSignal<IComment>>>;
|
|
8
|
-
// data?: WritableSignal<Array<WritableSignal<IComment>>>;
|
|
9
|
-
// specific_temp_data?: WritableSignal<Array<WritableSignal<IComment>>>;
|
|
10
|
-
// paging?: WritableSignal<{
|
|
11
|
-
// cursors?: WritableSignal<{
|
|
12
|
-
// after?: WritableSignal<string>;
|
|
13
|
-
// before?: WritableSignal<string>;
|
|
14
|
-
// }>;
|
|
15
|
-
// before?: WritableSignal<string>;
|
|
16
|
-
// after?: WritableSignal<string>;
|
|
17
|
-
// next?: WritableSignal<string>;
|
|
18
|
-
// previous?: WritableSignal<string>;
|
|
19
|
-
// }>;
|
|
20
|
-
// summary?: WritableSignal<{
|
|
21
|
-
// can_comment?: WritableSignal<boolean>;
|
|
22
|
-
// canorder_comment?: WritableSignal<string>;
|
|
23
|
-
// total_count?: WritableSignal<number>;
|
|
24
|
-
// }>;
|
|
25
|
-
// }
|
|
26
|
-
// type V_comments_F = GetValueAtPath<IComment, 'comments', false>; // ISubComment
|
|
27
|
-
// type V_comments_T = GetValueAtPath<IComment, 'comments', true>; // WritableSignal<ISubComment>
|
|
28
|
-
// type V_comments_store_F = GetValueAtPath<IComment, 'comments.data', false>; // Array<WritableSignal<IComment>>
|
|
29
|
-
// type V_comments_store_T = GetValueAtPath<IComment, 'comments.data', true>; // WritableSignal<Array<WritableSignal<IComment>>>
|
|
30
|
-
// export interface Test {
|
|
31
|
-
// specific_query?: WritableSignal<IAssignmentItemQuery>;
|
|
32
|
-
// data: WritableSignal<Array<WritableSignal<IAssignmentItem>>>;
|
|
33
|
-
// index: number;
|
|
34
|
-
// info: {
|
|
35
|
-
// name: string;
|
|
36
|
-
// age: number;
|
|
37
|
-
// };
|
|
38
|
-
// city: WritableSignal<{
|
|
39
|
-
// name: string;
|
|
40
|
-
// country: string;
|
|
41
|
-
// }>;
|
|
42
|
-
// address: WritableSignal<{
|
|
43
|
-
// ip: WritableSignal<string>;
|
|
44
|
-
// port: WritableSignal<number>;
|
|
45
|
-
// }>;
|
|
46
|
-
// owner: Array<string>;
|
|
47
|
-
// support: Array<WritableSignal<string>>;
|
|
48
|
-
// host: Array<{
|
|
49
|
-
// ip: WritableSignal<string>;
|
|
50
|
-
// port: number;
|
|
51
|
-
// }>;
|
|
52
|
-
// country: WritableSignal<
|
|
53
|
-
// Array<
|
|
54
|
-
// WritableSignal<{
|
|
55
|
-
// name: WritableSignal<{
|
|
56
|
-
// vi: string;
|
|
57
|
-
// en: string;
|
|
58
|
-
// }>;
|
|
59
|
-
// code: WritableSignal<{
|
|
60
|
-
// vi: WritableSignal<string>;
|
|
61
|
-
// en: WritableSignal<string>;
|
|
62
|
-
// }>;
|
|
63
|
-
// flag: WritableSignal<string>;
|
|
64
|
-
// phone_code: string;
|
|
65
|
-
// currency: {
|
|
66
|
-
// name: string;
|
|
67
|
-
// code: WritableSignal<string>;
|
|
68
|
-
// symbol: WritableSignal<{
|
|
69
|
-
// vi: string;
|
|
70
|
-
// en: string;
|
|
71
|
-
// cn: WritableSignal<Array<string>>;
|
|
72
|
-
// jp: WritableSignal<
|
|
73
|
-
// Array<
|
|
74
|
-
// WritableSignal<{
|
|
75
|
-
// vi: string;
|
|
76
|
-
// en: string;
|
|
77
|
-
// }>
|
|
78
|
-
// >
|
|
79
|
-
// >;
|
|
80
|
-
// }>;
|
|
81
|
-
// };
|
|
82
|
-
// }>
|
|
83
|
-
// >
|
|
84
|
-
// >;
|
|
85
|
-
// }
|
|
86
|
-
// interface IAssignmentItem {
|
|
87
|
-
// id: WritableSignal<string>;
|
|
88
|
-
// name: WritableSignal<string>;
|
|
89
|
-
// description: WritableSignal<string>;
|
|
90
|
-
// created_at: WritableSignal<string>;
|
|
91
|
-
// updated_at: WritableSignal<string>;
|
|
92
|
-
// assignees?: WritableSignal<Array<WritableSignal<IAssignee>>>;
|
|
93
|
-
// }
|
|
94
|
-
// export interface IAssignee {
|
|
95
|
-
// assignee_id?: WritableSignal<string>;
|
|
96
|
-
// conversation_id?: WritableSignal<string>;
|
|
97
|
-
// created_time?: WritableSignal<string>;
|
|
98
|
-
// created_user?: WritableSignal<string>;
|
|
99
|
-
// id?: WritableSignal<string>;
|
|
100
|
-
// note?: WritableSignal<string>;
|
|
101
|
-
// status?: WritableSignal<number>;
|
|
102
|
-
// assign_tag_activity_status?: WritableSignal<number>;
|
|
103
|
-
// comment_id?: WritableSignal<string>;
|
|
104
|
-
// rating_id?: WritableSignal<string>;
|
|
105
|
-
// }
|
|
106
|
-
// export interface IAssignmentItemQuery {
|
|
107
|
-
// per_page: WritableSignal<number>;
|
|
108
|
-
// after_token?: WritableSignal<string>;
|
|
109
|
-
// before_token?: WritableSignal<string>;
|
|
110
|
-
// search?: WritableSignal<string>;
|
|
111
|
-
// search_index?: WritableSignal<number>;
|
|
112
|
-
// }
|
|
113
|
-
// type V_index_F = GetValueAtPath<Test, 'index', false>; // number
|
|
114
|
-
// type V_index_T = GetValueAtPath<Test, 'index', true>; // number
|
|
115
|
-
// type V_info_F = GetValueAtPath<Test, 'info', false>; // { name: string; age: number }
|
|
116
|
-
// type V_info_T = GetValueAtPath<Test, 'info', true>; // { name: string; age: number }
|
|
117
|
-
// type V_info_name_F = GetValueAtPath<Test, 'info.name', false>; // string
|
|
118
|
-
// type V_info_name_T = GetValueAtPath<Test, 'info.name', true>; // string
|
|
119
|
-
// type V_info_age_F = GetValueAtPath<Test, 'info.age', false>; // number
|
|
120
|
-
// type V_info_age_T = GetValueAtPath<Test, 'info.age', true>; // number
|
|
121
|
-
// // City (signal-wrapped object with plain fields)
|
|
122
|
-
// type V_city_F = GetValueAtPath<Test, 'city', false>; // { name: string; country: string }
|
|
123
|
-
// type V_city_T = GetValueAtPath<Test, 'city', true>; // WritableSignal<{ name: string; country: string }>
|
|
124
|
-
// type V_city_name_F = GetValueAtPath<Test, 'city.name', false>; // string
|
|
125
|
-
// type V_city_name_T = GetValueAtPath<Test, 'city.name', true>; // string
|
|
126
|
-
// type V_city_country_F = GetValueAtPath<Test, 'city.country', false>; // string
|
|
127
|
-
// type V_city_country_T = GetValueAtPath<Test, 'city.country', true>; // string
|
|
128
|
-
// // Address (signal-wrapped object with signal leaves)
|
|
129
|
-
// type V_address_F = GetValueAtPath<Test, 'address', false>; // { ip: string; port: number }
|
|
130
|
-
// type V_address_T = GetValueAtPath<Test, 'address', true>; // WritableSignal<{ ip: WritableSignal<string>; port: WritableSignal<number> }>
|
|
131
|
-
// type V_address_ip_F = GetValueAtPath<Test, 'address.ip', false>; // string
|
|
132
|
-
// type V_address_ip_T = GetValueAtPath<Test, 'address.ip', true>; // WritableSignal<string>
|
|
133
|
-
// type V_address_port_F = GetValueAtPath<Test, 'address.port', false>; // number
|
|
134
|
-
// type V_address_port_T = GetValueAtPath<Test, 'address.port', true>; // WritableSignal<number>
|
|
135
|
-
// // Owner (array of primitives)
|
|
136
|
-
// type V_owner_F = GetValueAtPath<Test, 'owner', false>; // string[]
|
|
137
|
-
// type V_owner_T = GetValueAtPath<Test, 'owner', true>; // string[]
|
|
138
|
-
// type V_owner_idx_F = GetValueAtPath<Test, 'owner[0]', false>; // string
|
|
139
|
-
// type V_owner_idx_T = GetValueAtPath<Test, 'owner[0]', true>; // string
|
|
140
|
-
// // Support (array of signals)
|
|
141
|
-
// type V_support_F = GetValueAtPath<Test, 'support', false>; // string[]
|
|
142
|
-
// type V_support_T = GetValueAtPath<Test, 'support', true>; // WritableSignal<string>[]
|
|
143
|
-
// type V_support_idx_F = GetValueAtPath<Test, 'support[0]', false>; // string
|
|
144
|
-
// type V_support_idx_T = GetValueAtPath<Test, 'support[0]', true>; // WritableSignal<string>
|
|
145
|
-
// // Host (array of objects with mixed leaves)
|
|
146
|
-
// type V_host_F = GetValueAtPath<Test, 'host', false>; // { ip: string; port: number }[]
|
|
147
|
-
// type V_host_T = GetValueAtPath<Test, 'host', true>; // { ip: WritableSignal<string>; port: number }[]
|
|
148
|
-
// type V_host_idx_F = GetValueAtPath<Test, 'host[0]', false>; // { ip: string; port: number }
|
|
149
|
-
// type V_host_idx_T = GetValueAtPath<Test, 'host[0]', true>; // { ip: WritableSignal<string>; port: number }
|
|
150
|
-
// type V_host_ip_F = GetValueAtPath<Test, 'host[0].ip', false>; // string
|
|
151
|
-
// type V_host_ip_T = GetValueAtPath<Test, 'host[0].ip', true>; // WritableSignal<string>
|
|
152
|
-
// type V_host_port_F = GetValueAtPath<Test, 'host[0].port', false>; // number
|
|
153
|
-
// type V_host_port_T = GetValueAtPath<Test, 'host[0].port', true>; // number
|
|
154
|
-
// // currency
|
|
155
|
-
// type V_currency_F = GetValueAtPath<Test, 'country[0].currency', false>; // { name: string; code: string; symbol: { ... } }
|
|
156
|
-
// type V_currency_T = GetValueAtPath<Test, 'country[0].currency', true>; // { name: string; code: WritableSignal<string>; symbol: WritableSignal<{ ... }> }
|
|
157
|
-
// type V_currency_name_F = GetValueAtPath<Test, 'country[0].currency.name', false>; // string
|
|
158
|
-
// type V_currency_name_T = GetValueAtPath<Test, 'country[0].currency.name', true>; // string
|
|
159
|
-
// type V_currency_code_F = GetValueAtPath<Test, 'country[0].currency.code', false>; // string
|
|
160
|
-
// type V_currency_code_T = GetValueAtPath<Test, 'country[0].currency.code', true>; // WritableSignal<string>
|
|
161
|
-
// // currency.symbol
|
|
162
|
-
// type V_symbol_F = GetValueAtPath<Test, 'country[0].currency.symbol', false>; // { vi: string; en: string; cn: string[]; jp: { vi: string; en: string }[] }
|
|
163
|
-
// type V_symbol_T = GetValueAtPath<Test, 'country[0].currency.symbol', true>; // WritableSignal<{ vi: string; en: string; cn: WritableSignal<string[]>; jp: WritableSignal<{ vi: string; en: string }[]> }>
|
|
164
|
-
// type V_symbol_vi_F = GetValueAtPath<Test, 'country[0].currency.symbol.vi', false>; // string
|
|
165
|
-
// type V_symbol_vi_T = GetValueAtPath<Test, 'country[0].currency.symbol.vi', true>; // string
|
|
166
|
-
// type V_symbol_en_F = GetValueAtPath<Test, 'country[0].currency.symbol.en', false>; // string
|
|
167
|
-
// type V_symbol_en_T = GetValueAtPath<Test, 'country[0].currency.symbol.en', true>; // string
|
|
168
|
-
// type V_symbol_cn_F = GetValueAtPath<Test, 'country[0].currency.symbol.cn', false>; // string[]
|
|
169
|
-
// type V_symbol_cn_T = GetValueAtPath<Test, 'country[0].currency.symbol.cn', true>; // WritableSignal<string[]>
|
|
170
|
-
// type V_symbol_cn_idx_F = GetValueAtPath<Test, 'country[0].currency.symbol.cn[0]', false>; // string
|
|
171
|
-
// type V_symbol_cn_idx_T = GetValueAtPath<Test, 'country[0].currency.symbol.cn[0]', true>; // string
|
|
172
|
-
// type V_symbol_jp_F = GetValueAtPath<Test, 'country[0].currency.symbol.jp', false>; // { vi: string; en: string }[]
|
|
173
|
-
// type V_symbol_jp_T = GetValueAtPath<Test, 'country[0].currency.symbol.jp', true>; // WritableSignal<{ vi: string; en: string }[]>
|
|
174
|
-
// type V_symbol_jp_idx_F = GetValueAtPath<Test, 'country[0].currency.symbol.jp[0]', false>; // { vi: string; en: string }
|
|
175
|
-
// type V_symbol_jp_idx_T = GetValueAtPath<Test, 'country[0].currency.symbol.jp[0]', true>; // WritableSignal<{ vi: string; en: string }>
|
|
176
|
-
// type V_symbol_jp_vi_F = GetValueAtPath<Test, 'country[0].currency.symbol.jp[0].vi', false>; // string
|
|
177
|
-
// type V_symbol_jp_vi_T = GetValueAtPath<Test, 'country[0].currency.symbol.jp[0].vi', true>; // string
|
|
178
|
-
// type V_symbol_jp_en_F = GetValueAtPath<Test, 'country[0].currency.symbol.jp[0].en', false>; // string
|
|
179
|
-
// type V_symbol_jp_en_T = GetValueAtPath<Test, 'country[0].currency.symbol.jp[0].en', true>; // string
|
|
180
|
-
// type V_Array_symbol_cn_F = GetValueAtPath<Array<Test>, '[0].country[0].currency.symbol.cn', false>; // string[]
|
|
181
|
-
// type V_Array_symbol_cn_T = GetValueAtPath<Array<Test>, '[0].country[0].currency.symbol.cn', true>; // WritableSignal<string[]>
|
|
182
|
-
// type V_Array_symbol_cn_idx_F = GetValueAtPath<Array<Test>, '[0].country[0].currency.symbol.cn[0]', false>; // string
|
|
183
|
-
// type V_Array_symbol_cn_idx_T = GetValueAtPath<Array<Test>, '[0].country[0].currency.symbol.cn[0]', true>; // string
|
|
184
|
-
// type pathIAssignmentItem = PathOf<IAssignmentItem>;
|
|
185
|
-
// type pathIAssignmentItem = PathOf<unknown>; // string
|
|
186
|
-
// type V_assignees_F = GetValueAtPath<IAssignmentItem, 'assignees[0]', false>; // IAssignee
|
|
187
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy11dGlsaXRpZXMtZm9yLXBhdGgtdmFsdWUudHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMtdWkvaW50ZXJmYWNlcy10eXBlcy9zcmMvZ2VuZXJpYy11dGlsaXRpZXMtZm9yLXBhdGgtdmFsdWUudHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBaUxBLDRFQUE0RTtBQUU1RSw4QkFBOEI7QUFDOUIsNENBQTRDO0FBQzVDLElBQUk7QUFFSixpQ0FBaUM7QUFDakMsNkRBQTZEO0FBQzdELDREQUE0RDtBQUM1RCwwRUFBMEU7QUFDMUUsOEJBQThCO0FBQzlCLGlDQUFpQztBQUNqQyx3Q0FBd0M7QUFDeEMseUNBQXlDO0FBQ3pDLFVBQVU7QUFDVix1Q0FBdUM7QUFDdkMsc0NBQXNDO0FBQ3RDLHFDQUFxQztBQUNyQyx5Q0FBeUM7QUFDekMsUUFBUTtBQUNSLCtCQUErQjtBQUMvQiw2Q0FBNkM7QUFDN0MsaURBQWlEO0FBQ2pELDRDQUE0QztBQUM1QyxRQUFRO0FBQ1IsSUFBSTtBQUVKLGtGQUFrRjtBQUNsRixpR0FBaUc7QUFFakcsaUhBQWlIO0FBQ2pILGdJQUFnSTtBQUVoSSwwQkFBMEI7QUFDMUIsMkRBQTJEO0FBRTNELGtFQUFrRTtBQUVsRSxtQkFBbUI7QUFDbkIsWUFBWTtBQUNaLG9CQUFvQjtBQUNwQixtQkFBbUI7QUFDbkIsT0FBTztBQUNQLDJCQUEyQjtBQUMzQixvQkFBb0I7QUFDcEIsdUJBQXVCO0FBQ3ZCLFFBQVE7QUFDUiw4QkFBOEI7QUFDOUIsa0NBQWtDO0FBQ2xDLG9DQUFvQztBQUNwQyxRQUFRO0FBQ1IsMEJBQTBCO0FBQzFCLDRDQUE0QztBQUM1QyxrQkFBa0I7QUFDbEIsa0NBQWtDO0FBQ2xDLG9CQUFvQjtBQUNwQixRQUFRO0FBRVIsNkJBQTZCO0FBQzdCLGFBQWE7QUFDYix5QkFBeUI7QUFDekIsaUNBQWlDO0FBQ2pDLHdCQUF3QjtBQUN4Qix3QkFBd0I7QUFDeEIsY0FBYztBQUNkLGlDQUFpQztBQUNqQyx3Q0FBd0M7QUFDeEMsd0NBQXdDO0FBQ3hDLGNBQWM7QUFDZCx3Q0FBd0M7QUFDeEMsOEJBQThCO0FBQzlCLHNCQUFzQjtBQUN0QiwwQkFBMEI7QUFDMUIsMENBQTBDO0FBQzFDLHFDQUFxQztBQUNyQywwQkFBMEI7QUFDMUIsMEJBQTBCO0FBQzFCLGlEQUFpRDtBQUNqRCxrQ0FBa0M7QUFDbEMsdUJBQXVCO0FBQ3ZCLG1DQUFtQztBQUNuQyxnQ0FBZ0M7QUFDaEMsZ0NBQWdDO0FBQ2hDLHFCQUFxQjtBQUNyQixrQkFBa0I7QUFDbEIsaUJBQWlCO0FBQ2pCLGdCQUFnQjtBQUNoQixhQUFhO0FBQ2IsV0FBVztBQUNYLFFBQVE7QUFDUixPQUFPO0FBQ1AsSUFBSTtBQUVKLDhCQUE4QjtBQUM5QixnQ0FBZ0M7QUFDaEMsa0NBQWtDO0FBQ2xDLHlDQUF5QztBQUN6Qyx3Q0FBd0M7QUFDeEMsd0NBQXdDO0FBQ3hDLGtFQUFrRTtBQUNsRSxJQUFJO0FBRUosK0JBQStCO0FBQy9CLDBDQUEwQztBQUMxQyw4Q0FBOEM7QUFDOUMsMkNBQTJDO0FBQzNDLDJDQUEyQztBQUMzQyxpQ0FBaUM7QUFDakMsbUNBQW1DO0FBQ25DLHFDQUFxQztBQUNyQyx5REFBeUQ7QUFDekQseUNBQXlDO0FBQ3pDLHdDQUF3QztBQUN4QyxJQUFJO0FBRUosMENBQTBDO0FBQzFDLHNDQUFzQztBQUN0QywwQ0FBMEM7QUFDMUMsMkNBQTJDO0FBQzNDLHFDQUFxQztBQUNyQywyQ0FBMkM7QUFDM0MsSUFBSTtBQUVKLG1FQUFtRTtBQUNuRSxrRUFBa0U7QUFFbEUsd0ZBQXdGO0FBQ3hGLHVGQUF1RjtBQUN2RiwyRUFBMkU7QUFDM0UsMEVBQTBFO0FBQzFFLHlFQUF5RTtBQUN6RSx3RUFBd0U7QUFFeEUsb0RBQW9EO0FBQ3BELDRGQUE0RjtBQUM1RiwyR0FBMkc7QUFDM0csMkVBQTJFO0FBQzNFLDBFQUEwRTtBQUMxRSxpRkFBaUY7QUFDakYsZ0ZBQWdGO0FBRWhGLHdEQUF3RDtBQUN4RCw2RkFBNkY7QUFDN0YsNElBQTRJO0FBQzVJLDZFQUE2RTtBQUM3RSw0RkFBNEY7QUFDNUYsaUZBQWlGO0FBQ2pGLGdHQUFnRztBQUVoRyxpQ0FBaUM7QUFDakMscUVBQXFFO0FBQ3JFLG9FQUFvRTtBQUNwRSwwRUFBMEU7QUFDMUUseUVBQXlFO0FBRXpFLGdDQUFnQztBQUNoQyx5RUFBeUU7QUFDekUsd0ZBQXdGO0FBQ3hGLDhFQUE4RTtBQUM5RSw2RkFBNkY7QUFFN0YsK0NBQStDO0FBQy9DLHlGQUF5RjtBQUN6Rix3R0FBd0c7QUFDeEcsOEZBQThGO0FBQzlGLDZHQUE2RztBQUM3RywwRUFBMEU7QUFDMUUseUZBQXlGO0FBQ3pGLDhFQUE4RTtBQUM5RSw2RUFBNkU7QUFFN0UsY0FBYztBQUNkLDZIQUE2SDtBQUM3SCw0SkFBNEo7QUFDNUosOEZBQThGO0FBQzlGLDZGQUE2RjtBQUM3Riw4RkFBOEY7QUFDOUYsNkdBQTZHO0FBRTdHLHFCQUFxQjtBQUNyQiw2SkFBNko7QUFDN0osNE1BQTRNO0FBQzVNLCtGQUErRjtBQUMvRiw4RkFBOEY7QUFDOUYsK0ZBQStGO0FBQy9GLDhGQUE4RjtBQUM5RixpR0FBaUc7QUFDakcsZ0hBQWdIO0FBQ2hILHNHQUFzRztBQUN0RyxxR0FBcUc7QUFDckcscUhBQXFIO0FBQ3JILG9JQUFvSTtBQUNwSSwwSEFBMEg7QUFDMUgseUlBQXlJO0FBQ3pJLHdHQUF3RztBQUN4Ryx1R0FBdUc7QUFDdkcsd0dBQXdHO0FBQ3hHLHVHQUF1RztBQUV2RyxrSEFBa0g7QUFDbEgsaUlBQWlJO0FBQ2pJLHVIQUF1SDtBQUN2SCxzSEFBc0g7QUFFdEgsc0RBQXNEO0FBQ3RELHdEQUF3RDtBQUV4RCw0RkFBNEYiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgU2lnbmFsLCBXcml0YWJsZVNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGF5anMgfSBmcm9tICdkYXlqcyc7XG5cbi8qKiA9PT09PT09PT09PT09PT09PT09PT09IEhlbHBlcnM6IHVud3JhcCAmIHNoYXBlID09PT09PT09PT09PT09PT09PT09PT0gKiovXG5cbnR5cGUgSXNFbXB0eU9iamVjdDxPYmo+ID0gW2tleW9mIE9ial0gZXh0ZW5kcyBbbmV2ZXJdID8gdHJ1ZSA6IGZhbHNlO1xuXG4vLyBVbndyYXAgdG/DoG4gYuG7mSBTaWduYWxcbnR5cGUgVW53cmFwQWxsU2lnbmFsczxUPiA9IFQgZXh0ZW5kcyBTaWduYWw8aW5mZXIgVT4gPyBVbndyYXBBbGxTaWduYWxzPFU+IDogVDtcblxuLy8gTG/huqFpIGLhu48gdW5kZWZpbmVkIHwgbnVsbCBzYXUga2hpIHVud3JhcCAxIGzhu5twIFNpZ25hbCDEkeG7gyBzb2kgc2hhcGVcbnR5cGUgQ2xlYW48VD4gPSBFeGNsdWRlPFVud3JhcEFsbFNpZ25hbHM8VD4sIHVuZGVmaW5lZCB8IG51bGw+O1xuXG4vLyBLZXkgZOG6oW5nIHN0cmluZ1xudHlwZSBTdHJLZXlzPFQ+ID0gRXh0cmFjdDxrZXlvZiBULCBzdHJpbmc+O1xuXG4vKiogPT09PT09PT09PT09PT09PT09PT09PSBBcnJheSBoZWxwZXJzID09PT09PT09PT09PT09PT09PT09PT0gKiovXG5cbi8vIEzhuqV5IGVsZW1lbnQgdHlwZSBj4bunYSBt4bqjbmcsIHThu7EgbMOgbSBz4bqhY2ggKGLhu48gdW5kZWZpbmVkL251bGwsIHVud3JhcCBTaWduYWwgdHLGsOG7m2Mga2hpIGtp4buDbSB0cmEpXG50eXBlIEFycmF5RWxlbWVudFJhdzxUPiA9IFVud3JhcEFsbFNpZ25hbHM8Q2xlYW48VD4+IGV4dGVuZHMgUmVhZG9ubHlBcnJheTxpbmZlciBVPiA/IFUgOiBVbndyYXBBbGxTaWduYWxzPENsZWFuPFQ+PiBleHRlbmRzIChpbmZlciBVKVtdID8gVSA6IG5ldmVyO1xuXG4vLyBLaeG7g20gdHJhIGFycmF5LWxpa2Ugc2F1IGtoaSB1bndyYXAgdG/DoG4gYuG7mSBTaWduYWwgdsOgIGzDoG0gc+G6oWNoIG9wdGlvbmFsXG50eXBlIElzQXJyYXlMaWtlPFQ+ID0gVW53cmFwQWxsU2lnbmFsczxDbGVhbjxUPj4gZXh0ZW5kcyByZWFkb25seSB1bmtub3duW10gPyB0cnVlIDogVW53cmFwQWxsU2lnbmFsczxDbGVhbjxUPj4gZXh0ZW5kcyB1bmtub3duW10gPyB0cnVlIDogZmFsc2U7XG5cbi8vIEtp4buDbSB0cmEgb2JqZWN0IGtow7RuZyBwaOG6o2kgYXJyYXkgc2F1IGtoaSB1bndyYXAgdG/DoG4gYuG7mSBTaWduYWwgdsOgIGzDoG0gc+G6oWNoIG9wdGlvbmFsXG50eXBlIElzTm9uQXJyYXlPYmplY3Q8VD4gPSBVbndyYXBBbGxTaWduYWxzPENsZWFuPFQ+PiBleHRlbmRzIG9iamVjdCA/IChVbndyYXBBbGxTaWduYWxzPENsZWFuPFQ+PiBleHRlbmRzIHJlYWRvbmx5IHVua25vd25bXSA/IGZhbHNlIDogVW53cmFwQWxsU2lnbmFsczxDbGVhbjxUPj4gZXh0ZW5kcyB1bmtub3duW10gPyBmYWxzZSA6IHRydWUpIDogZmFsc2U7XG5cbi8qKiA9PT09PT09PT09PT09PT09PT09PT09IERPTS9FdnQgZ3VhcmQgPT09PT09PT09PT09PT09PT09PT09PSAqKi9cblxudHlwZSBJc0RPTVR5cGU8VD4gPSBVbndyYXBBbGxTaWduYWxzPFQ+IGV4dGVuZHMgRXZlbnQgfCBOb2RlIHwgRG9jdW1lbnQgfCBFbGVtZW50IHwgV2luZG93IHwgQ1NTU3R5bGVEZWNsYXJhdGlvbiB8IENTU1J1bGUgfCBDU1NTdHlsZVNoZWV0ID8gdHJ1ZSA6IGZhbHNlO1xuXG4vKiogPT09PT09PT09PT09PT09PT09PT09PSBGaW5hbGl6ZSAoZ2nhu68gU2lnbmFsIG7hur91IGPhuqduKSA9PT09PT09PT09PT09PT09PT09PT09ICoqL1xuXG50eXBlIEZpbmFsaXplPFQsIFIgZXh0ZW5kcyBib29sZWFuPiA9IFIgZXh0ZW5kcyB0cnVlID8gVCA6IFVud3JhcEFsbFNpZ25hbHM8VD47XG5cbi8qKiA9PT09PT09PT09PT09PT09PT09PT09IERlcHRoIGxpbWl0ZXIgKGh5YnJpZCwgbeG6t2MgxJHhu4tuaCA2KSA9PT09PT09PT09PT09PT09PT09PT09ICoqL1xuXG50eXBlIERlYzxOIGV4dGVuZHMgbnVtYmVyPiA9IE4gZXh0ZW5kcyA2ID8gNSA6IE4gZXh0ZW5kcyA1ID8gNCA6IE4gZXh0ZW5kcyA0ID8gMyA6IE4gZXh0ZW5kcyAzID8gMiA6IE4gZXh0ZW5kcyAyID8gMSA6IE4gZXh0ZW5kcyAxID8gMCA6IDA7XG5cbi8qKiA9PT09PT09PT09PT09PT09PT09PT09IFBhdGggYnVpbGRlcnMgKERlcHRoLWxpbWl0ZWQpID09PT09PT09PT09PT09PT09PT09PT0gKiovXG5cbi8vIFBhdGggY2hvIGFycmF5IOG7nyByb290L2ZpZWxkXG50eXBlIFBhdGhGb3JBcnJheTxULCBEZXB0aCBleHRlbmRzIG51bWJlcj4gPSBbRGVwdGhdIGV4dGVuZHMgWzBdID8gbmV2ZXIgOiBgWyR7bnVtYmVyfV1gIHwgKFBhdGhPZjxBcnJheUVsZW1lbnRSYXc8VD4sIERlYzxEZXB0aD4+IGV4dGVuZHMgbmV2ZXIgPyBuZXZlciA6IGBbJHtudW1iZXJ9XS4ke1BhdGhPZjxBcnJheUVsZW1lbnRSYXc8VD4sIERlYzxEZXB0aD4+fWApO1xuXG4vLyBQYXRoIGNobyB04burbmcgcHJvcCBLIHTDuXkga2nhu4N1IGdpw6EgdHLhu4tcbnR5cGUgUGF0aEZvclByb3A8VFByb3AsIEsgZXh0ZW5kcyBzdHJpbmcsIERlcHRoIGV4dGVuZHMgbnVtYmVyPiA9IFtEZXB0aF0gZXh0ZW5kcyBbMF1cbiAgPyBLXG4gIDogSXNBcnJheUxpa2U8VFByb3A+IGV4dGVuZHMgdHJ1ZVxuICAgID8gYCR7S31gIHwgYCR7S31bJHtudW1iZXJ9XWAgfCAoUGF0aE9mPEFycmF5RWxlbWVudFJhdzxUUHJvcD4sIERlYzxEZXB0aD4+IGV4dGVuZHMgbmV2ZXIgPyBuZXZlciA6IGAke0t9WyR7bnVtYmVyfV0uJHtQYXRoT2Y8QXJyYXlFbGVtZW50UmF3PFRQcm9wPiwgRGVjPERlcHRoPj59YClcbiAgICA6IElzTm9uQXJyYXlPYmplY3Q8VFByb3A+IGV4dGVuZHMgdHJ1ZVxuICAgICAgPyBgJHtLfWAgfCAoUGF0aE9mPENsZWFuPFRQcm9wPiwgRGVjPERlcHRoPj4gZXh0ZW5kcyBuZXZlciA/IG5ldmVyIDogYCR7S30uJHtQYXRoT2Y8Q2xlYW48VFByb3A+LCBEZWM8RGVwdGg+Pn1gKVxuICAgICAgOiBgJHtLfWA7XG5cbi8vIFBhdGggY2hvIG9iamVjdCAobWFwIHThu6tuZyBrZXkpXG50eXBlIFBhdGhGb3JPYmplY3Q8VCwgRGVwdGggZXh0ZW5kcyBudW1iZXI+ID0ge1xuICBbSyBpbiBTdHJLZXlzPFQ+XTogUGF0aEZvclByb3A8VFtLXSwgSywgRGVwdGg+O1xufVtTdHJLZXlzPFQ+XTtcblxuLyoqID09PT09PT09PT09PT09PT09PT09PT0gUHVibGljOiBQYXRoT2YgKGh5YnJpZCwgRGVwdGggbeG6t2MgxJHhu4tuaCA2KSA9PT09PT09PT09PT09PT09PT09PT09ICoqL1xuXG5leHBvcnQgdHlwZSBQYXRoT2Y8VFJhdywgRGVwdGggZXh0ZW5kcyBudW1iZXIgPSA2PiA9XG4gIElzRW1wdHlPYmplY3Q8Q2xlYW48VFJhdz4+IGV4dGVuZHMgdHJ1ZVxuICAgID8gYW55XG4gICAgOiBJc0RPTVR5cGU8Q2xlYW48VFJhdz4+IGV4dGVuZHMgdHJ1ZVxuICAgICAgPyBhbnlcbiAgICAgIDogW0RlcHRoXSBleHRlbmRzIFswXVxuICAgICAgICA/IG5ldmVyXG4gICAgICAgIDogVW53cmFwQWxsU2lnbmFsczxDbGVhbjxUUmF3Pj4gZXh0ZW5kcyByZWFkb25seSB1bmtub3duW10gfCB1bmtub3duW11cbiAgICAgICAgICA/IFBhdGhGb3JBcnJheTxDbGVhbjxUUmF3PiwgRGVwdGg+XG4gICAgICAgICAgOiBVbndyYXBBbGxTaWduYWxzPENsZWFuPFRSYXc+PiBleHRlbmRzIG9iamVjdFxuICAgICAgICAgICAgPyBQYXRoRm9yT2JqZWN0PFVud3JhcEFsbFNpZ25hbHM8Q2xlYW48VFJhdz4+LCBEZXB0aD5cbiAgICAgICAgICAgIDogc3RyaW5nO1xuXG4vKiogPT09PT09PT09PT09PT09PT09PT09PSBSZXNvbHZlIGdpw6EgdHLhu4sgdGhlbyBwYXRoID09PT09PT09PT09PT09PT09PT09PT0gKiovXG5cbi8vIEdldEludGVybmFsOiDEkWkgdGhlbyBzdHJpbmcgcGF0aCDEkeG7gyByZXNvbHZlIHR5cGUgZ2nDoSB0cuG7iyBjdeG7kWkgY8O5bmdcbi8vIFPhu60gZOG7pW5nIGRpc3RyaWJ1dGl2ZSBjb25kaXRpb25hbCB0eXBlIChUUmF3IGV4dGVuZHMgbnVsbCB8IHVuZGVmaW5lZCkgxJHhu4MgdOG7sSDEkeG7mW5nIGhhbmRsZSB1bmlvbiBjw7MgdW5kZWZpbmVkL251bGwgKHbDrSBk4bulIG9wdGlvbmFsIHByb3BzKS5cbnR5cGUgR2V0SW50ZXJuYWw8VFJhdywgUCBleHRlbmRzIHN0cmluZywgUiBleHRlbmRzIGJvb2xlYW4+ID0gVFJhdyBleHRlbmRzIG51bGwgfCB1bmRlZmluZWRcbiAgPyBUUmF3XG4gIDogLy8gW3hdLlJlc3QgKMSRw6FuaCBpbmRleCB2w6BvIHJvb3QgYXJyYXkpXG4gICAgUCBleHRlbmRzIGBbJHtpbmZlciBJfV0uJHtpbmZlciBSZXN0fWBcbiAgICA/IEkgZXh0ZW5kcyBgJHtudW1iZXJ9YFxuICAgICAgPyBHZXRJbnRlcm5hbDxBcnJheUVsZW1lbnRSYXc8VFJhdz4sIFJlc3QsIFI+XG4gICAgICA6IGFueVxuICAgIDogLy8gW3hdIChjaOG7iSBpbmRleClcbiAgICAgIFAgZXh0ZW5kcyBgWyR7aW5mZXIgSX1dYFxuICAgICAgPyBJIGV4dGVuZHMgYCR7bnVtYmVyfWBcbiAgICAgICAgPyBGaW5hbGl6ZTxBcnJheUVsZW1lbnRSYXc8VFJhdz4sIFI+XG4gICAgICAgIDogYW55XG4gICAgICA6IC8vIEtbeF0uUmVzdCAoxJHDoW5oIGluZGV4IHbDoG8gZmllbGQgbeG6o25nKVxuICAgICAgICBQIGV4dGVuZHMgYCR7aW5mZXIgS31bJHtpbmZlciBJfV0uJHtpbmZlciBSZXN0fWBcbiAgICAgICAgPyBLIGV4dGVuZHMgU3RyS2V5czxDbGVhbjxVbndyYXBBbGxTaWduYWxzPFRSYXc+Pj5cbiAgICAgICAgICA/IEkgZXh0ZW5kcyBgJHtudW1iZXJ9YFxuICAgICAgICAgICAgPyBHZXRJbnRlcm5hbDxBcnJheUVsZW1lbnRSYXc8Q2xlYW48VW53cmFwQWxsU2lnbmFsczxUUmF3Pj5bS10+LCBSZXN0LCBSPlxuICAgICAgICAgICAgOiBhbnlcbiAgICAgICAgICA6IGFueVxuICAgICAgICA6IC8vIEsuUmVzdCAoxJFpIHPDonUgdsOgbyBvYmplY3QpXG4gICAgICAgICAgUCBleHRlbmRzIGAke2luZmVyIEt9LiR7aW5mZXIgUmVzdH1gXG4gICAgICAgICAgPyBLIGV4dGVuZHMgU3RyS2V5czxDbGVhbjxVbndyYXBBbGxTaWduYWxzPFRSYXc+Pj5cbiAgICAgICAgICAgID8gSXNBcnJheUxpa2U8Q2xlYW48VW53cmFwQWxsU2lnbmFsczxUUmF3Pj5bS10+IGV4dGVuZHMgdHJ1ZVxuICAgICAgICAgICAgICA/IGFueSAvLyBraMO0bmcgaOG7lyB0cuG7oyBkb3QgdsOgbyBwaOG6p24gdOG7rSBt4bqjbmcga2hpIHRoaeG6v3UgaW5kZXhcbiAgICAgICAgICAgICAgOiBHZXRJbnRlcm5hbDxDbGVhbjxVbndyYXBBbGxTaWduYWxzPFRSYXc+PltLXSwgUmVzdCwgUj5cbiAgICAgICAgICAgIDogYW55XG4gICAgICAgICAgOiAvLyBLWzxudW1iZXI+XSAoa+G6v3QgdGjDumMg4bufIGluZGV4KVxuICAgICAgICAgICAgUCBleHRlbmRzIGAke2luZmVyIEt9WyR7aW5mZXIgSX1dYFxuICAgICAgICAgICAgPyBLIGV4dGVuZHMgU3RyS2V5czxDbGVhbjxVbndyYXBBbGxTaWduYWxzPFRSYXc+Pj5cbiAgICAgICAgICAgICAgPyBJIGV4dGVuZHMgYCR7bnVtYmVyfWBcbiAgICAgICAgICAgICAgICA/IEZpbmFsaXplPEFycmF5RWxlbWVudFJhdzxDbGVhbjxVbndyYXBBbGxTaWduYWxzPFRSYXc+PltLXT4sIFI+XG4gICAgICAgICAgICAgICAgOiBhbnlcbiAgICAgICAgICAgICAgOiBhbnlcbiAgICAgICAgICAgIDogLy8gSyAoa+G6v3QgdGjDumMg4bufIGtleSlcbiAgICAgICAgICAgICAgUCBleHRlbmRzIGAke2luZmVyIEt9YFxuICAgICAgICAgICAgICA/IEsgZXh0ZW5kcyBTdHJLZXlzPENsZWFuPFVud3JhcEFsbFNpZ25hbHM8VFJhdz4+PlxuICAgICAgICAgICAgICAgID8gRmluYWxpemU8Q2xlYW48VW53cmFwQWxsU2lnbmFsczxUUmF3Pj5bS10sIFI+XG4gICAgICAgICAgICAgICAgOiBhbnlcbiAgICAgICAgICAgICAgOiBhbnk7XG5cbi8qKiA9PT09PT09PT09PT09PT09PT09PT09IFB1YmxpYzogR2V0VmFsdWVBdFBhdGggJiBHZXRSZXR1cm5UeXBlID09PT09PT09PT09PT09PT09PT09PT0gKiovXG5cbi8vIFJlc29sdmUga2nhu4N1IGdpw6EgdHLhu4sgdOG6oWkgcGF0aCBQLiBO4bq/dSBSPXRydWUsIGdp4buvIG5ndXnDqm4gU2lnbmFsOyBt4bq3YyDEkeG7i25oIFI9ZmFsc2Ugc+G6vSB1bndyYXAgdG/DoG4gYuG7mSBTaWduYWwuXG5leHBvcnQgdHlwZSBHZXRWYWx1ZUF0UGF0aDxUUmF3LCBQIGV4dGVuZHMgUGF0aE9mPFRSYXc+LCBSIGV4dGVuZHMgYm9vbGVhbiA9IGZhbHNlPiA9IFRSYXcgZXh0ZW5kcyBudWxsIHwgdW5kZWZpbmVkID8gVFJhdyA6IEdldEludGVybmFsPFRSYXcsIFAsIFI+O1xuXG4vLyBLaeG7g3UgdHLhuqMgduG7gSBj4bunYSBnZXQoKSBk4buxYSB0csOqbiBkZWZhdWx0VmFsdWUgRFxuZXhwb3J0IHR5cGUgR2V0UmV0dXJuVHlwZTxPLCBQIGV4dGVuZHMgUGF0aE9mPE8+LCBLUyBleHRlbmRzIGJvb2xlYW4sIEQ+ID0gRCBleHRlbmRzIHVuZGVmaW5lZCA/IEdldFZhbHVlQXRQYXRoPE8sIFAsIEtTPiA6IEQ7XG5cbi8vIEtp4buDbSB0cmEgY8OhYyBraeG7g3UgZOG7ryBsaeG7h3UgxJHhurdjIGJp4buHdCDEkeG7gyBjaOG7iSB3cmFwIHNpZ25hbCAxIGPhuqVwXG50eXBlIElzU3BlY2lmaWNUeXBlPFQ+ID0gVCBleHRlbmRzXG4gIHwgRXZlbnRcbiAgfCBOb2RlXG4gIHwgRG9jdW1lbnRcbiAgfCBFbGVtZW50XG4gIHwgV2luZG93XG4gIHwgQ1NTU3R5bGVEZWNsYXJhdGlvblxuICB8IENTU1J1bGVcbiAgfCBDU1NTdHlsZVNoZWV0XG4gIHwgSHR0cFBhcmFtc1xuICB8IERheWpzXG4gIHwgRGF0ZVxuICB8ICgoLi4uYXJnczogYW55W10pID0+IGFueSlcbiAgfCBQcm9taXNlPGFueT5cbiAgfCBNYXA8YW55LCBhbnk+XG4gIHwgU2V0PGFueT5cbiAgfCBXZWFrTWFwPGFueSwgYW55PlxuICB8IFdlYWtTZXQ8YW55PlxuICB8IFJlZ0V4cFxuICB8IEZpbGVcbiAgfCBCbG9iXG4gIHwgRmlsZUxpc3RcbiAgfCBGb3JtRGF0YVxuICA/IHRydWVcbiAgOiBmYWxzZTtcblxuLy8gxJDGsGEga2nhu4N1IGThu68gbGnhu4d1IGLhuqV0IGvhu7MgduG7gSBk4bqhbmcgc2lnbmFsLCBO4bq/dSBQID0gdHJ1ZSDEkcawYSBj4bqjIGThu68gbGnhu4d1IHByZW1ldGl2ZV90eXBlIHbhu4EgZOG6oW5nIHNpZ25hbFxuZXhwb3J0IHR5cGUgU2lnbmFsT2Y8VCwgUCBleHRlbmRzIGJvb2xlYW4gPSB0cnVlLCBGIGV4dGVuZHMgYm9vbGVhbiA9IGZhbHNlPiA9IFQgZXh0ZW5kcyBudWxsIHwgdW5kZWZpbmVkXG4gID8gVFxuICA6IElzU3BlY2lmaWNUeXBlPENsZWFuPFQ+PiBleHRlbmRzIHRydWVcbiAgICA/IEYgZXh0ZW5kcyB0cnVlXG4gICAgICA/IFdyaXRhYmxlU2lnbmFsPFQ+XG4gICAgICA6IFRcbiAgICA6IENsZWFuPFQ+IGV4dGVuZHMgQXJyYXk8aW5mZXIgVT5cbiAgICAgID8gRiBleHRlbmRzIHRydWVcbiAgICAgICAgPyBXcml0YWJsZVNpZ25hbDxBcnJheTxTaWduYWxPZjxDbGVhbjxVPiwgUCwgdHJ1ZT4+PlxuICAgICAgICA6IEFycmF5PFNpZ25hbE9mPENsZWFuPFU+LCBQLCB0cnVlPj5cbiAgICAgIDogQ2xlYW48VD4gZXh0ZW5kcyBvYmplY3RcbiAgICAgICAgPyBGIGV4dGVuZHMgdHJ1ZVxuICAgICAgICAgID8gV3JpdGFibGVTaWduYWw8eyBbSyBpbiBrZXlvZiBDbGVhbjxUPl06IFNpZ25hbE9mPENsZWFuPENsZWFuPFQ+W0tdPiwgUCwgdHJ1ZT4gfT5cbiAgICAgICAgICA6IHsgW0sgaW4ga2V5b2YgQ2xlYW48VD5dOiBTaWduYWxPZjxDbGVhbjxDbGVhbjxUPltLXT4sIFAsIHRydWU+IH1cbiAgICAgICAgOiBDbGVhbjxUPiBleHRlbmRzIHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW5cbiAgICAgICAgICA/IFAgZXh0ZW5kcyB0cnVlXG4gICAgICAgICAgICA/IFdyaXRhYmxlU2lnbmFsPENsZWFuPFQ+PlxuICAgICAgICAgICAgOiBDbGVhbjxUPlxuICAgICAgICAgIDogV3JpdGFibGVTaWduYWw8Q2xlYW48VD4+O1xuXG5leHBvcnQgdHlwZSBOb25TaWduYWxPZjxUPiA9IFQgZXh0ZW5kcyBudWxsIHwgdW5kZWZpbmVkID8gVCA6IENsZWFuPFQ+IGV4dGVuZHMgQXJyYXk8aW5mZXIgVT4gPyBBcnJheTxOb25TaWduYWxPZjxDbGVhbjxVPj4+IDogQ2xlYW48VD4gZXh0ZW5kcyBvYmplY3QgPyB7IFtLIGluIGtleW9mIENsZWFuPFQ+XTogTm9uU2lnbmFsT2Y8Q2xlYW48Q2xlYW48VD5bS10+PiB9IDogQ2xlYW48VD47XG5cbi8qKiA9PT09PT09PT09PT09PT09PT09PT09IChUdeG7syBjaOG7jW4pIFbDrSBk4bulIG5oYW5oID09PT09PT09PT09PT09PT09PT09PT0gKiovXG5cbi8vIGV4cG9ydCBpbnRlcmZhY2UgSUNvbW1lbnQge1xuLy8gICBjb21tZW50cz86IFdyaXRhYmxlU2lnbmFsPElTdWJDb21tZW50Pjtcbi8vIH1cblxuLy8gZXhwb3J0IGludGVyZmFjZSBJU3ViQ29tbWVudCB7XG4vLyAgIHN0b3JlPzogV3JpdGFibGVTaWduYWw8QXJyYXk8V3JpdGFibGVTaWduYWw8SUNvbW1lbnQ+Pj47XG4vLyAgIGRhdGE/OiBXcml0YWJsZVNpZ25hbDxBcnJheTxXcml0YWJsZVNpZ25hbDxJQ29tbWVudD4+Pjtcbi8vICAgc3BlY2lmaWNfdGVtcF9kYXRhPzogV3JpdGFibGVTaWduYWw8QXJyYXk8V3JpdGFibGVTaWduYWw8SUNvbW1lbnQ+Pj47XG4vLyAgIHBhZ2luZz86IFdyaXRhYmxlU2lnbmFsPHtcbi8vICAgICBjdXJzb3JzPzogV3JpdGFibGVTaWduYWw8e1xuLy8gICAgICAgYWZ0ZXI/OiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+O1xuLy8gICAgICAgYmVmb3JlPzogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbi8vICAgICB9Pjtcbi8vICAgICBiZWZvcmU/OiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+O1xuLy8gICAgIGFmdGVyPzogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbi8vICAgICBuZXh0PzogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbi8vICAgICBwcmV2aW91cz86IFdyaXRhYmxlU2lnbmFsPHN0cmluZz47XG4vLyAgIH0+O1xuLy8gICBzdW1tYXJ5PzogV3JpdGFibGVTaWduYWw8e1xuLy8gICAgIGNhbl9jb21tZW50PzogV3JpdGFibGVTaWduYWw8Ym9vbGVhbj47XG4vLyAgICAgY2Fub3JkZXJfY29tbWVudD86IFdyaXRhYmxlU2lnbmFsPHN0cmluZz47XG4vLyAgICAgdG90YWxfY291bnQ/OiBXcml0YWJsZVNpZ25hbDxudW1iZXI+O1xuLy8gICB9Pjtcbi8vIH1cblxuLy8gdHlwZSBWX2NvbW1lbnRzX0YgPSBHZXRWYWx1ZUF0UGF0aDxJQ29tbWVudCwgJ2NvbW1lbnRzJywgZmFsc2U+OyAvLyBJU3ViQ29tbWVudFxuLy8gdHlwZSBWX2NvbW1lbnRzX1QgPSBHZXRWYWx1ZUF0UGF0aDxJQ29tbWVudCwgJ2NvbW1lbnRzJywgdHJ1ZT47IC8vIFdyaXRhYmxlU2lnbmFsPElTdWJDb21tZW50PlxuXG4vLyB0eXBlIFZfY29tbWVudHNfc3RvcmVfRiA9IEdldFZhbHVlQXRQYXRoPElDb21tZW50LCAnY29tbWVudHMuZGF0YScsIGZhbHNlPjsgLy8gQXJyYXk8V3JpdGFibGVTaWduYWw8SUNvbW1lbnQ+PlxuLy8gdHlwZSBWX2NvbW1lbnRzX3N0b3JlX1QgPSBHZXRWYWx1ZUF0UGF0aDxJQ29tbWVudCwgJ2NvbW1lbnRzLmRhdGEnLCB0cnVlPjsgLy8gV3JpdGFibGVTaWduYWw8QXJyYXk8V3JpdGFibGVTaWduYWw8SUNvbW1lbnQ+Pj5cblxuLy8gZXhwb3J0IGludGVyZmFjZSBUZXN0IHtcbi8vICAgc3BlY2lmaWNfcXVlcnk/OiBXcml0YWJsZVNpZ25hbDxJQXNzaWdubWVudEl0ZW1RdWVyeT47XG5cbi8vICAgZGF0YTogV3JpdGFibGVTaWduYWw8QXJyYXk8V3JpdGFibGVTaWduYWw8SUFzc2lnbm1lbnRJdGVtPj4+O1xuXG4vLyAgIGluZGV4OiBudW1iZXI7XG4vLyAgIGluZm86IHtcbi8vICAgICBuYW1lOiBzdHJpbmc7XG4vLyAgICAgYWdlOiBudW1iZXI7XG4vLyAgIH07XG4vLyAgIGNpdHk6IFdyaXRhYmxlU2lnbmFsPHtcbi8vICAgICBuYW1lOiBzdHJpbmc7XG4vLyAgICAgY291bnRyeTogc3RyaW5nO1xuLy8gICB9Pjtcbi8vICAgYWRkcmVzczogV3JpdGFibGVTaWduYWw8e1xuLy8gICAgIGlwOiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+O1xuLy8gICAgIHBvcnQ6IFdyaXRhYmxlU2lnbmFsPG51bWJlcj47XG4vLyAgIH0+O1xuLy8gICBvd25lcjogQXJyYXk8c3RyaW5nPjtcbi8vICAgc3VwcG9ydDogQXJyYXk8V3JpdGFibGVTaWduYWw8c3RyaW5nPj47XG4vLyAgIGhvc3Q6IEFycmF5PHtcbi8vICAgICBpcDogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbi8vICAgICBwb3J0OiBudW1iZXI7XG4vLyAgIH0+O1xuXG4vLyAgIGNvdW50cnk6IFdyaXRhYmxlU2lnbmFsPFxuLy8gICAgIEFycmF5PFxuLy8gICAgICAgV3JpdGFibGVTaWduYWw8e1xuLy8gICAgICAgICBuYW1lOiBXcml0YWJsZVNpZ25hbDx7XG4vLyAgICAgICAgICAgdmk6IHN0cmluZztcbi8vICAgICAgICAgICBlbjogc3RyaW5nO1xuLy8gICAgICAgICB9Pjtcbi8vICAgICAgICAgY29kZTogV3JpdGFibGVTaWduYWw8e1xuLy8gICAgICAgICAgIHZpOiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+O1xuLy8gICAgICAgICAgIGVuOiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+O1xuLy8gICAgICAgICB9Pjtcbi8vICAgICAgICAgZmxhZzogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbi8vICAgICAgICAgcGhvbmVfY29kZTogc3RyaW5nO1xuLy8gICAgICAgICBjdXJyZW5jeToge1xuLy8gICAgICAgICAgIG5hbWU6IHN0cmluZztcbi8vICAgICAgICAgICBjb2RlOiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+O1xuLy8gICAgICAgICAgIHN5bWJvbDogV3JpdGFibGVTaWduYWw8e1xuLy8gICAgICAgICAgICAgdmk6IHN0cmluZztcbi8vICAgICAgICAgICAgIGVuOiBzdHJpbmc7XG4vLyAgICAgICAgICAgICBjbjogV3JpdGFibGVTaWduYWw8QXJyYXk8c3RyaW5nPj47XG4vLyAgICAgICAgICAgICBqcDogV3JpdGFibGVTaWduYWw8XG4vLyAgICAgICAgICAgICAgIEFycmF5PFxuLy8gICAgICAgICAgICAgICAgIFdyaXRhYmxlU2lnbmFsPHtcbi8vICAgICAgICAgICAgICAgICAgIHZpOiBzdHJpbmc7XG4vLyAgICAgICAgICAgICAgICAgICBlbjogc3RyaW5nO1xuLy8gICAgICAgICAgICAgICAgIH0+XG4vLyAgICAgICAgICAgICAgID5cbi8vICAgICAgICAgICAgID47XG4vLyAgICAgICAgICAgfT47XG4vLyAgICAgICAgIH07XG4vLyAgICAgICB9PlxuLy8gICAgID5cbi8vICAgPjtcbi8vIH1cblxuLy8gaW50ZXJmYWNlIElBc3NpZ25tZW50SXRlbSB7XG4vLyAgIGlkOiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+O1xuLy8gICBuYW1lOiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+O1xuLy8gICBkZXNjcmlwdGlvbjogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbi8vICAgY3JlYXRlZF9hdDogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbi8vICAgdXBkYXRlZF9hdDogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbi8vICAgYXNzaWduZWVzPzogV3JpdGFibGVTaWduYWw8QXJyYXk8V3JpdGFibGVTaWduYWw8SUFzc2lnbmVlPj4+O1xuLy8gfVxuXG4vLyBleHBvcnQgaW50ZXJmYWNlIElBc3NpZ25lZSB7XG4vLyAgIGFzc2lnbmVlX2lkPzogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbi8vICAgY29udmVyc2F0aW9uX2lkPzogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbi8vICAgY3JlYXRlZF90aW1lPzogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbi8vICAgY3JlYXRlZF91c2VyPzogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbi8vICAgaWQ/OiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+O1xuLy8gICBub3RlPzogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbi8vICAgc3RhdHVzPzogV3JpdGFibGVTaWduYWw8bnVtYmVyPjtcbi8vICAgYXNzaWduX3RhZ19hY3Rpdml0eV9zdGF0dXM/OiBXcml0YWJsZVNpZ25hbDxudW1iZXI+O1xuLy8gICBjb21tZW50X2lkPzogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbi8vICAgcmF0aW5nX2lkPzogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbi8vIH1cblxuLy8gZXhwb3J0IGludGVyZmFjZSBJQXNzaWdubWVudEl0ZW1RdWVyeSB7XG4vLyAgIHBlcl9wYWdlOiBXcml0YWJsZVNpZ25hbDxudW1iZXI+O1xuLy8gICBhZnRlcl90b2tlbj86IFdyaXRhYmxlU2lnbmFsPHN0cmluZz47XG4vLyAgIGJlZm9yZV90b2tlbj86IFdyaXRhYmxlU2lnbmFsPHN0cmluZz47XG4vLyAgIHNlYXJjaD86IFdyaXRhYmxlU2lnbmFsPHN0cmluZz47XG4vLyAgIHNlYXJjaF9pbmRleD86IFdyaXRhYmxlU2lnbmFsPG51bWJlcj47XG4vLyB9XG5cbi8vIHR5cGUgVl9pbmRleF9GID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2luZGV4JywgZmFsc2U+OyAvLyBudW1iZXJcbi8vIHR5cGUgVl9pbmRleF9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2luZGV4JywgdHJ1ZT47IC8vIG51bWJlclxuXG4vLyB0eXBlIFZfaW5mb19GID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2luZm8nLCBmYWxzZT47IC8vIHsgbmFtZTogc3RyaW5nOyBhZ2U6IG51bWJlciB9XG4vLyB0eXBlIFZfaW5mb19UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2luZm8nLCB0cnVlPjsgLy8geyBuYW1lOiBzdHJpbmc7IGFnZTogbnVtYmVyIH1cbi8vIHR5cGUgVl9pbmZvX25hbWVfRiA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdpbmZvLm5hbWUnLCBmYWxzZT47IC8vIHN0cmluZ1xuLy8gdHlwZSBWX2luZm9fbmFtZV9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2luZm8ubmFtZScsIHRydWU+OyAvLyBzdHJpbmdcbi8vIHR5cGUgVl9pbmZvX2FnZV9GID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2luZm8uYWdlJywgZmFsc2U+OyAvLyBudW1iZXJcbi8vIHR5cGUgVl9pbmZvX2FnZV9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2luZm8uYWdlJywgdHJ1ZT47IC8vIG51bWJlclxuXG4vLyAvLyBDaXR5IChzaWduYWwtd3JhcHBlZCBvYmplY3Qgd2l0aCBwbGFpbiBmaWVsZHMpXG4vLyB0eXBlIFZfY2l0eV9GID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2NpdHknLCBmYWxzZT47IC8vIHsgbmFtZTogc3RyaW5nOyBjb3VudHJ5OiBzdHJpbmcgfVxuLy8gdHlwZSBWX2NpdHlfVCA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdjaXR5JywgdHJ1ZT47IC8vIFdyaXRhYmxlU2lnbmFsPHsgbmFtZTogc3RyaW5nOyBjb3VudHJ5OiBzdHJpbmcgfT5cbi8vIHR5cGUgVl9jaXR5X25hbWVfRiA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdjaXR5Lm5hbWUnLCBmYWxzZT47IC8vIHN0cmluZ1xuLy8gdHlwZSBWX2NpdHlfbmFtZV9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2NpdHkubmFtZScsIHRydWU+OyAvLyBzdHJpbmdcbi8vIHR5cGUgVl9jaXR5X2NvdW50cnlfRiA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdjaXR5LmNvdW50cnknLCBmYWxzZT47IC8vIHN0cmluZ1xuLy8gdHlwZSBWX2NpdHlfY291bnRyeV9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2NpdHkuY291bnRyeScsIHRydWU+OyAvLyBzdHJpbmdcblxuLy8gLy8gQWRkcmVzcyAoc2lnbmFsLXdyYXBwZWQgb2JqZWN0IHdpdGggc2lnbmFsIGxlYXZlcylcbi8vIHR5cGUgVl9hZGRyZXNzX0YgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnYWRkcmVzcycsIGZhbHNlPjsgLy8geyBpcDogc3RyaW5nOyBwb3J0OiBudW1iZXIgfVxuLy8gdHlwZSBWX2FkZHJlc3NfVCA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdhZGRyZXNzJywgdHJ1ZT47IC8vIFdyaXRhYmxlU2lnbmFsPHsgaXA6IFdyaXRhYmxlU2lnbmFsPHN0cmluZz47IHBvcnQ6IFdyaXRhYmxlU2lnbmFsPG51bWJlcj4gfT5cbi8vIHR5cGUgVl9hZGRyZXNzX2lwX0YgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnYWRkcmVzcy5pcCcsIGZhbHNlPjsgLy8gc3RyaW5nXG4vLyB0eXBlIFZfYWRkcmVzc19pcF9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2FkZHJlc3MuaXAnLCB0cnVlPjsgLy8gV3JpdGFibGVTaWduYWw8c3RyaW5nPlxuLy8gdHlwZSBWX2FkZHJlc3NfcG9ydF9GID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2FkZHJlc3MucG9ydCcsIGZhbHNlPjsgLy8gbnVtYmVyXG4vLyB0eXBlIFZfYWRkcmVzc19wb3J0X1QgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnYWRkcmVzcy5wb3J0JywgdHJ1ZT47IC8vIFdyaXRhYmxlU2lnbmFsPG51bWJlcj5cblxuLy8gLy8gT3duZXIgKGFycmF5IG9mIHByaW1pdGl2ZXMpXG4vLyB0eXBlIFZfb3duZXJfRiA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdvd25lcicsIGZhbHNlPjsgLy8gc3RyaW5nW11cbi8vIHR5cGUgVl9vd25lcl9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ293bmVyJywgdHJ1ZT47IC8vIHN0cmluZ1tdXG4vLyB0eXBlIFZfb3duZXJfaWR4X0YgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnb3duZXJbMF0nLCBmYWxzZT47IC8vIHN0cmluZ1xuLy8gdHlwZSBWX293bmVyX2lkeF9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ293bmVyWzBdJywgdHJ1ZT47IC8vIHN0cmluZ1xuXG4vLyAvLyBTdXBwb3J0IChhcnJheSBvZiBzaWduYWxzKVxuLy8gdHlwZSBWX3N1cHBvcnRfRiA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdzdXBwb3J0JywgZmFsc2U+OyAvLyBzdHJpbmdbXVxuLy8gdHlwZSBWX3N1cHBvcnRfVCA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdzdXBwb3J0JywgdHJ1ZT47IC8vIFdyaXRhYmxlU2lnbmFsPHN0cmluZz5bXVxuLy8gdHlwZSBWX3N1cHBvcnRfaWR4X0YgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnc3VwcG9ydFswXScsIGZhbHNlPjsgLy8gc3RyaW5nXG4vLyB0eXBlIFZfc3VwcG9ydF9pZHhfVCA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdzdXBwb3J0WzBdJywgdHJ1ZT47IC8vIFdyaXRhYmxlU2lnbmFsPHN0cmluZz5cblxuLy8gLy8gSG9zdCAoYXJyYXkgb2Ygb2JqZWN0cyB3aXRoIG1peGVkIGxlYXZlcylcbi8vIHR5cGUgVl9ob3N0X0YgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnaG9zdCcsIGZhbHNlPjsgLy8geyBpcDogc3RyaW5nOyBwb3J0OiBudW1iZXIgfVtdXG4vLyB0eXBlIFZfaG9zdF9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2hvc3QnLCB0cnVlPjsgLy8geyBpcDogV3JpdGFibGVTaWduYWw8c3RyaW5nPjsgcG9ydDogbnVtYmVyIH1bXVxuLy8gdHlwZSBWX2hvc3RfaWR4X0YgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnaG9zdFswXScsIGZhbHNlPjsgLy8geyBpcDogc3RyaW5nOyBwb3J0OiBudW1iZXIgfVxuLy8gdHlwZSBWX2hvc3RfaWR4X1QgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnaG9zdFswXScsIHRydWU+OyAvLyB7IGlwOiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+OyBwb3J0OiBudW1iZXIgfVxuLy8gdHlwZSBWX2hvc3RfaXBfRiA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdob3N0WzBdLmlwJywgZmFsc2U+OyAvLyBzdHJpbmdcbi8vIHR5cGUgVl9ob3N0X2lwX1QgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnaG9zdFswXS5pcCcsIHRydWU+OyAvLyBXcml0YWJsZVNpZ25hbDxzdHJpbmc+XG4vLyB0eXBlIFZfaG9zdF9wb3J0X0YgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnaG9zdFswXS5wb3J0JywgZmFsc2U+OyAvLyBudW1iZXJcbi8vIHR5cGUgVl9ob3N0X3BvcnRfVCA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdob3N0WzBdLnBvcnQnLCB0cnVlPjsgLy8gbnVtYmVyXG5cbi8vIC8vIGN1cnJlbmN5XG4vLyB0eXBlIFZfY3VycmVuY3lfRiA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdjb3VudHJ5WzBdLmN1cnJlbmN5JywgZmFsc2U+OyAvLyB7IG5hbWU6IHN0cmluZzsgY29kZTogc3RyaW5nOyBzeW1ib2w6IHsgLi4uIH0gfVxuLy8gdHlwZSBWX2N1cnJlbmN5X1QgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnY291bnRyeVswXS5jdXJyZW5jeScsIHRydWU+OyAvLyB7IG5hbWU6IHN0cmluZzsgY29kZTogV3JpdGFibGVTaWduYWw8c3RyaW5nPjsgc3ltYm9sOiBXcml0YWJsZVNpZ25hbDx7IC4uLiB9PiB9XG4vLyB0eXBlIFZfY3VycmVuY3lfbmFtZV9GID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2NvdW50cnlbMF0uY3VycmVuY3kubmFtZScsIGZhbHNlPjsgLy8gc3RyaW5nXG4vLyB0eXBlIFZfY3VycmVuY3lfbmFtZV9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2NvdW50cnlbMF0uY3VycmVuY3kubmFtZScsIHRydWU+OyAvLyBzdHJpbmdcbi8vIHR5cGUgVl9jdXJyZW5jeV9jb2RlX0YgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnY291bnRyeVswXS5jdXJyZW5jeS5jb2RlJywgZmFsc2U+OyAvLyBzdHJpbmdcbi8vIHR5cGUgVl9jdXJyZW5jeV9jb2RlX1QgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnY291bnRyeVswXS5jdXJyZW5jeS5jb2RlJywgdHJ1ZT47IC8vIFdyaXRhYmxlU2lnbmFsPHN0cmluZz5cblxuLy8gLy8gY3VycmVuY3kuc3ltYm9sXG4vLyB0eXBlIFZfc3ltYm9sX0YgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnY291bnRyeVswXS5jdXJyZW5jeS5zeW1ib2wnLCBmYWxzZT47IC8vIHsgdmk6IHN0cmluZzsgZW46IHN0cmluZzsgY246IHN0cmluZ1tdOyBqcDogeyB2aTogc3RyaW5nOyBlbjogc3RyaW5nIH1bXSB9XG4vLyB0eXBlIFZfc3ltYm9sX1QgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnY291bnRyeVswXS5jdXJyZW5jeS5zeW1ib2wnLCB0cnVlPjsgLy8gV3JpdGFibGVTaWduYWw8eyB2aTogc3RyaW5nOyBlbjogc3RyaW5nOyBjbjogV3JpdGFibGVTaWduYWw8c3RyaW5nW10+OyBqcDogV3JpdGFibGVTaWduYWw8eyB2aTogc3RyaW5nOyBlbjogc3RyaW5nIH1bXT4gfT5cbi8vIHR5cGUgVl9zeW1ib2xfdmlfRiA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdjb3VudHJ5WzBdLmN1cnJlbmN5LnN5bWJvbC52aScsIGZhbHNlPjsgLy8gc3RyaW5nXG4vLyB0eXBlIFZfc3ltYm9sX3ZpX1QgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnY291bnRyeVswXS5jdXJyZW5jeS5zeW1ib2wudmknLCB0cnVlPjsgLy8gc3RyaW5nXG4vLyB0eXBlIFZfc3ltYm9sX2VuX0YgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnY291bnRyeVswXS5jdXJyZW5jeS5zeW1ib2wuZW4nLCBmYWxzZT47IC8vIHN0cmluZ1xuLy8gdHlwZSBWX3N5bWJvbF9lbl9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2NvdW50cnlbMF0uY3VycmVuY3kuc3ltYm9sLmVuJywgdHJ1ZT47IC8vIHN0cmluZ1xuLy8gdHlwZSBWX3N5bWJvbF9jbl9GID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2NvdW50cnlbMF0uY3VycmVuY3kuc3ltYm9sLmNuJywgZmFsc2U+OyAvLyBzdHJpbmdbXVxuLy8gdHlwZSBWX3N5bWJvbF9jbl9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2NvdW50cnlbMF0uY3VycmVuY3kuc3ltYm9sLmNuJywgdHJ1ZT47IC8vIFdyaXRhYmxlU2lnbmFsPHN0cmluZ1tdPlxuLy8gdHlwZSBWX3N5bWJvbF9jbl9pZHhfRiA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdjb3VudHJ5WzBdLmN1cnJlbmN5LnN5bWJvbC5jblswXScsIGZhbHNlPjsgLy8gc3RyaW5nXG4vLyB0eXBlIFZfc3ltYm9sX2NuX2lkeF9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2NvdW50cnlbMF0uY3VycmVuY3kuc3ltYm9sLmNuWzBdJywgdHJ1ZT47IC8vIHN0cmluZ1xuLy8gdHlwZSBWX3N5bWJvbF9qcF9GID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2NvdW50cnlbMF0uY3VycmVuY3kuc3ltYm9sLmpwJywgZmFsc2U+OyAvLyB7IHZpOiBzdHJpbmc7IGVuOiBzdHJpbmcgfVtdXG4vLyB0eXBlIFZfc3ltYm9sX2pwX1QgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnY291bnRyeVswXS5jdXJyZW5jeS5zeW1ib2wuanAnLCB0cnVlPjsgLy8gV3JpdGFibGVTaWduYWw8eyB2aTogc3RyaW5nOyBlbjogc3RyaW5nIH1bXT5cbi8vIHR5cGUgVl9zeW1ib2xfanBfaWR4X0YgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnY291bnRyeVswXS5jdXJyZW5jeS5zeW1ib2wuanBbMF0nLCBmYWxzZT47IC8vIHsgdmk6IHN0cmluZzsgZW46IHN0cmluZyB9XG4vLyB0eXBlIFZfc3ltYm9sX2pwX2lkeF9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2NvdW50cnlbMF0uY3VycmVuY3kuc3ltYm9sLmpwWzBdJywgdHJ1ZT47IC8vIFdyaXRhYmxlU2lnbmFsPHsgdmk6IHN0cmluZzsgZW46IHN0cmluZyB9PlxuLy8gdHlwZSBWX3N5bWJvbF9qcF92aV9GID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2NvdW50cnlbMF0uY3VycmVuY3kuc3ltYm9sLmpwWzBdLnZpJywgZmFsc2U+OyAvLyBzdHJpbmdcbi8vIHR5cGUgVl9zeW1ib2xfanBfdmlfVCA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdjb3VudHJ5WzBdLmN1cnJlbmN5LnN5bWJvbC5qcFswXS52aScsIHRydWU+OyAvLyBzdHJpbmdcbi8vIHR5cGUgVl9zeW1ib2xfanBfZW5fRiA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdjb3VudHJ5WzBdLmN1cnJlbmN5LnN5bWJvbC5qcFswXS5lbicsIGZhbHNlPjsgLy8gc3RyaW5nXG4vLyB0eXBlIFZfc3ltYm9sX2pwX2VuX1QgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnY291bnRyeVswXS5jdXJyZW5jeS5zeW1ib2wuanBbMF0uZW4nLCB0cnVlPjsgLy8gc3RyaW5nXG5cbi8vIHR5cGUgVl9BcnJheV9zeW1ib2xfY25fRiA9IEdldFZhbHVlQXRQYXRoPEFycmF5PFRlc3Q+LCAnWzBdLmNvdW50cnlbMF0uY3VycmVuY3kuc3ltYm9sLmNuJywgZmFsc2U+OyAvLyBzdHJpbmdbXVxuLy8gdHlwZSBWX0FycmF5X3N5bWJvbF9jbl9UID0gR2V0VmFsdWVBdFBhdGg8QXJyYXk8VGVzdD4sICdbMF0uY291bnRyeVswXS5jdXJyZW5jeS5zeW1ib2wuY24nLCB0cnVlPjsgLy8gV3JpdGFibGVTaWduYWw8c3RyaW5nW10+XG4vLyB0eXBlIFZfQXJyYXlfc3ltYm9sX2NuX2lkeF9GID0gR2V0VmFsdWVBdFBhdGg8QXJyYXk8VGVzdD4sICdbMF0uY291bnRyeVswXS5jdXJyZW5jeS5zeW1ib2wuY25bMF0nLCBmYWxzZT47IC8vIHN0cmluZ1xuLy8gdHlwZSBWX0FycmF5X3N5bWJvbF9jbl9pZHhfVCA9IEdldFZhbHVlQXRQYXRoPEFycmF5PFRlc3Q+LCAnWzBdLmNvdW50cnlbMF0uY3VycmVuY3kuc3ltYm9sLmNuWzBdJywgdHJ1ZT47IC8vIHN0cmluZ1xuXG4vLyB0eXBlIHBhdGhJQXNzaWdubWVudEl0ZW0gPSBQYXRoT2Y8SUFzc2lnbm1lbnRJdGVtPjtcbi8vIHR5cGUgcGF0aElBc3NpZ25tZW50SXRlbSA9IFBhdGhPZjx1bmtub3duPjsgLy8gc3RyaW5nXG5cbi8vIHR5cGUgVl9hc3NpZ25lZXNfRiA9IEdldFZhbHVlQXRQYXRoPElBc3NpZ25tZW50SXRlbSwgJ2Fzc2lnbmVlc1swXScsIGZhbHNlPjsgLy8gSUFzc2lnbmVlXG4iXX0=
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy11dGlsaXRpZXMtZm9yLXBhdGgtdmFsdWUudHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMtdWkvaW50ZXJmYWNlcy10eXBlcy9zcmMvZ2VuZXJpYy11dGlsaXRpZXMtZm9yLXBhdGgtdmFsdWUudHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IFNpZ25hbCwgV3JpdGFibGVTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERheWpzIH0gZnJvbSAnZGF5anMnO1xuXG4vKiogPT09PT09PT09PT09PT09PT09PT09PSBIZWxwZXJzOiB1bndyYXAgJiBzaGFwZSA9PT09PT09PT09PT09PT09PT09PT09ICoqL1xuXG50eXBlIElzRW1wdHlPYmplY3Q8T2JqPiA9IFtrZXlvZiBPYmpdIGV4dGVuZHMgW25ldmVyXSA/IHRydWUgOiBmYWxzZTtcblxuLy8gVW53cmFwIHRvw6BuIGLhu5kgU2lnbmFsXG50eXBlIFVud3JhcEFsbFNpZ25hbHM8VD4gPSBUIGV4dGVuZHMgU2lnbmFsPGluZmVyIFU+ID8gVW53cmFwQWxsU2lnbmFsczxVPiA6IFQ7XG5cbi8vIExv4bqhaSBi4buPIHVuZGVmaW5lZCB8IG51bGwgc2F1IGtoaSB1bndyYXAgMSBs4bubcCBTaWduYWwgxJHhu4Mgc29pIHNoYXBlXG50eXBlIENsZWFuPFQ+ID0gRXhjbHVkZTxVbndyYXBBbGxTaWduYWxzPFQ+LCB1bmRlZmluZWQgfCBudWxsPjtcblxuLy8gS2V5IGThuqFuZyBzdHJpbmdcbnR5cGUgU3RyS2V5czxUPiA9IEV4dHJhY3Q8a2V5b2YgVCwgc3RyaW5nPjtcblxuLyoqID09PT09PT09PT09PT09PT09PT09PT0gQXJyYXkgaGVscGVycyA9PT09PT09PT09PT09PT09PT09PT09ICoqL1xuXG4vLyBM4bqleSBlbGVtZW50IHR5cGUgY+G7p2EgbeG6o25nLCB04buxIGzDoG0gc+G6oWNoIChi4buPIHVuZGVmaW5lZC9udWxsLCB1bndyYXAgU2lnbmFsIHRyxrDhu5tjIGtoaSBraeG7g20gdHJhKVxudHlwZSBBcnJheUVsZW1lbnRSYXc8VD4gPSBVbndyYXBBbGxTaWduYWxzPENsZWFuPFQ+PiBleHRlbmRzIFJlYWRvbmx5QXJyYXk8aW5mZXIgVT4gPyBVIDogVW53cmFwQWxsU2lnbmFsczxDbGVhbjxUPj4gZXh0ZW5kcyAoaW5mZXIgVSlbXSA/IFUgOiBuZXZlcjtcblxuLy8gS2nhu4NtIHRyYSBhcnJheS1saWtlIHNhdSBraGkgdW53cmFwIHRvw6BuIGLhu5kgU2lnbmFsIHbDoCBsw6BtIHPhuqFjaCBvcHRpb25hbFxudHlwZSBJc0FycmF5TGlrZTxUPiA9IFVud3JhcEFsbFNpZ25hbHM8Q2xlYW48VD4+IGV4dGVuZHMgcmVhZG9ubHkgdW5rbm93bltdID8gdHJ1ZSA6IFVud3JhcEFsbFNpZ25hbHM8Q2xlYW48VD4+IGV4dGVuZHMgdW5rbm93bltdID8gdHJ1ZSA6IGZhbHNlO1xuXG4vLyBLaeG7g20gdHJhIG9iamVjdCBraMO0bmcgcGjhuqNpIGFycmF5IHNhdSBraGkgdW53cmFwIHRvw6BuIGLhu5kgU2lnbmFsIHbDoCBsw6BtIHPhuqFjaCBvcHRpb25hbFxudHlwZSBJc05vbkFycmF5T2JqZWN0PFQ+ID0gVW53cmFwQWxsU2lnbmFsczxDbGVhbjxUPj4gZXh0ZW5kcyBvYmplY3QgPyAoVW53cmFwQWxsU2lnbmFsczxDbGVhbjxUPj4gZXh0ZW5kcyByZWFkb25seSB1bmtub3duW10gPyBmYWxzZSA6IFVud3JhcEFsbFNpZ25hbHM8Q2xlYW48VD4+IGV4dGVuZHMgdW5rbm93bltdID8gZmFsc2UgOiB0cnVlKSA6IGZhbHNlO1xuXG4vKiogPT09PT09PT09PT09PT09PT09PT09PSBET00vRXZ0IGd1YXJkID09PT09PT09PT09PT09PT09PT09PT0gKiovXG5cbnR5cGUgSXNET01UeXBlPFQ+ID0gVW53cmFwQWxsU2lnbmFsczxUPiBleHRlbmRzIEV2ZW50IHwgTm9kZSB8IERvY3VtZW50IHwgRWxlbWVudCB8IFdpbmRvdyB8IENTU1N0eWxlRGVjbGFyYXRpb24gfCBDU1NSdWxlIHwgQ1NTU3R5bGVTaGVldCA/IHRydWUgOiBmYWxzZTtcblxuLyoqID09PT09PT09PT09PT09PT09PT09PT0gRmluYWxpemUgKGdp4buvIFNpZ25hbCBu4bq/dSBj4bqnbikgPT09PT09PT09PT09PT09PT09PT09PSAqKi9cblxudHlwZSBGaW5hbGl6ZTxULCBSIGV4dGVuZHMgYm9vbGVhbj4gPSBSIGV4dGVuZHMgdHJ1ZSA/IFQgOiBVbndyYXBBbGxTaWduYWxzPFQ+O1xuXG4vKiogPT09PT09PT09PT09PT09PT09PT09PSBEZXB0aCBsaW1pdGVyIChoeWJyaWQsIG3hurdjIMSR4buLbmggNikgPT09PT09PT09PT09PT09PT09PT09PSAqKi9cblxudHlwZSBEZWM8TiBleHRlbmRzIG51bWJlcj4gPSBOIGV4dGVuZHMgNiA/IDUgOiBOIGV4dGVuZHMgNSA/IDQgOiBOIGV4dGVuZHMgNCA/IDMgOiBOIGV4dGVuZHMgMyA/IDIgOiBOIGV4dGVuZHMgMiA/IDEgOiBOIGV4dGVuZHMgMSA/IDAgOiAwO1xuXG4vKiogPT09PT09PT09PT09PT09PT09PT09PSBQYXRoIGJ1aWxkZXJzIChEZXB0aC1saW1pdGVkKSA9PT09PT09PT09PT09PT09PT09PT09ICoqL1xuXG4vLyBQYXRoIGNobyBhcnJheSDhu58gcm9vdC9maWVsZFxudHlwZSBQYXRoRm9yQXJyYXk8VCwgRGVwdGggZXh0ZW5kcyBudW1iZXI+ID0gW0RlcHRoXSBleHRlbmRzIFswXSA/IG5ldmVyIDogYFske251bWJlcn1dYCB8IChQYXRoT2Y8QXJyYXlFbGVtZW50UmF3PFQ+LCBEZWM8RGVwdGg+PiBleHRlbmRzIG5ldmVyID8gbmV2ZXIgOiBgWyR7bnVtYmVyfV0uJHtQYXRoT2Y8QXJyYXlFbGVtZW50UmF3PFQ+LCBEZWM8RGVwdGg+Pn1gKTtcblxuLy8gUGF0aCBjaG8gdOG7q25nIHByb3AgSyB0w7l5IGtp4buDdSBnacOhIHRy4buLXG50eXBlIFBhdGhGb3JQcm9wPFRQcm9wLCBLIGV4dGVuZHMgc3RyaW5nLCBEZXB0aCBleHRlbmRzIG51bWJlcj4gPSBbRGVwdGhdIGV4dGVuZHMgWzBdXG4gID8gS1xuICA6IElzQXJyYXlMaWtlPFRQcm9wPiBleHRlbmRzIHRydWVcbiAgICA/IGAke0t9YCB8IGAke0t9WyR7bnVtYmVyfV1gIHwgKFBhdGhPZjxBcnJheUVsZW1lbnRSYXc8VFByb3A+LCBEZWM8RGVwdGg+PiBleHRlbmRzIG5ldmVyID8gbmV2ZXIgOiBgJHtLfVske251bWJlcn1dLiR7UGF0aE9mPEFycmF5RWxlbWVudFJhdzxUUHJvcD4sIERlYzxEZXB0aD4+fWApXG4gICAgOiBJc05vbkFycmF5T2JqZWN0PFRQcm9wPiBleHRlbmRzIHRydWVcbiAgICAgID8gYCR7S31gIHwgKFBhdGhPZjxDbGVhbjxUUHJvcD4sIERlYzxEZXB0aD4+IGV4dGVuZHMgbmV2ZXIgPyBuZXZlciA6IGAke0t9LiR7UGF0aE9mPENsZWFuPFRQcm9wPiwgRGVjPERlcHRoPj59YClcbiAgICAgIDogYCR7S31gO1xuXG4vLyBQYXRoIGNobyBvYmplY3QgKG1hcCB04burbmcga2V5KVxudHlwZSBQYXRoRm9yT2JqZWN0PFQsIERlcHRoIGV4dGVuZHMgbnVtYmVyPiA9IHtcbiAgW0sgaW4gU3RyS2V5czxUPl06IFBhdGhGb3JQcm9wPFRbS10sIEssIERlcHRoPjtcbn1bU3RyS2V5czxUPl07XG5cbi8qKiA9PT09PT09PT09PT09PT09PT09PT09IFB1YmxpYzogUGF0aE9mIChoeWJyaWQsIERlcHRoIG3hurdjIMSR4buLbmggNikgPT09PT09PT09PT09PT09PT09PT09PSAqKi9cblxuZXhwb3J0IHR5cGUgUGF0aE9mPFRSYXcsIERlcHRoIGV4dGVuZHMgbnVtYmVyID0gNj4gPVxuICBJc0VtcHR5T2JqZWN0PENsZWFuPFRSYXc+PiBleHRlbmRzIHRydWVcbiAgICA/IGFueVxuICAgIDogSXNET01UeXBlPENsZWFuPFRSYXc+PiBleHRlbmRzIHRydWVcbiAgICAgID8gYW55XG4gICAgICA6IFtEZXB0aF0gZXh0ZW5kcyBbMF1cbiAgICAgICAgPyBuZXZlclxuICAgICAgICA6IFVud3JhcEFsbFNpZ25hbHM8Q2xlYW48VFJhdz4+IGV4dGVuZHMgcmVhZG9ubHkgdW5rbm93bltdIHwgdW5rbm93bltdXG4gICAgICAgICAgPyBQYXRoRm9yQXJyYXk8Q2xlYW48VFJhdz4sIERlcHRoPlxuICAgICAgICAgIDogVW53cmFwQWxsU2lnbmFsczxDbGVhbjxUUmF3Pj4gZXh0ZW5kcyBvYmplY3RcbiAgICAgICAgICAgID8gUGF0aEZvck9iamVjdDxVbndyYXBBbGxTaWduYWxzPENsZWFuPFRSYXc+PiwgRGVwdGg+XG4gICAgICAgICAgICA6IHN0cmluZztcblxuLyoqID09PT09PT09PT09PT09PT09PT09PT0gUmVzb2x2ZSBnacOhIHRy4buLIHRoZW8gcGF0aCA9PT09PT09PT09PT09PT09PT09PT09ICoqL1xuXG4vLyBHZXRJbnRlcm5hbDogxJFpIHRoZW8gc3RyaW5nIHBhdGggxJHhu4MgcmVzb2x2ZSB0eXBlIGdpw6EgdHLhu4sgY3Xhu5FpIGPDuW5nXG4vLyBT4butIGThu6VuZyBkaXN0cmlidXRpdmUgY29uZGl0aW9uYWwgdHlwZSAoVFJhdyBleHRlbmRzIG51bGwgfCB1bmRlZmluZWQpIMSR4buDIHThu7EgxJHhu5luZyBoYW5kbGUgdW5pb24gY8OzIHVuZGVmaW5lZC9udWxsICh2w60gZOG7pSBvcHRpb25hbCBwcm9wcykuXG50eXBlIEdldEludGVybmFsPFRSYXcsIFAgZXh0ZW5kcyBzdHJpbmcsIFIgZXh0ZW5kcyBib29sZWFuPiA9IFRSYXcgZXh0ZW5kcyBudWxsIHwgdW5kZWZpbmVkXG4gID8gVFJhd1xuICA6IC8vIFt4XS5SZXN0ICjEkcOhbmggaW5kZXggdsOgbyByb290IGFycmF5KVxuICAgIFAgZXh0ZW5kcyBgWyR7aW5mZXIgSX1dLiR7aW5mZXIgUmVzdH1gXG4gICAgPyBJIGV4dGVuZHMgYCR7bnVtYmVyfWBcbiAgICAgID8gR2V0SW50ZXJuYWw8QXJyYXlFbGVtZW50UmF3PFRSYXc+LCBSZXN0LCBSPlxuICAgICAgOiBhbnlcbiAgICA6IC8vIFt4XSAoY2jhu4kgaW5kZXgpXG4gICAgICBQIGV4dGVuZHMgYFske2luZmVyIEl9XWBcbiAgICAgID8gSSBleHRlbmRzIGAke251bWJlcn1gXG4gICAgICAgID8gRmluYWxpemU8QXJyYXlFbGVtZW50UmF3PFRSYXc+LCBSPlxuICAgICAgICA6IGFueVxuICAgICAgOiAvLyBLW3hdLlJlc3QgKMSRw6FuaCBpbmRleCB2w6BvIGZpZWxkIG3huqNuZylcbiAgICAgICAgUCBleHRlbmRzIGAke2luZmVyIEt9WyR7aW5mZXIgSX1dLiR7aW5mZXIgUmVzdH1gXG4gICAgICAgID8gSyBleHRlbmRzIFN0cktleXM8Q2xlYW48VW53cmFwQWxsU2lnbmFsczxUUmF3Pj4+XG4gICAgICAgICAgPyBJIGV4dGVuZHMgYCR7bnVtYmVyfWBcbiAgICAgICAgICAgID8gR2V0SW50ZXJuYWw8QXJyYXlFbGVtZW50UmF3PENsZWFuPFVud3JhcEFsbFNpZ25hbHM8VFJhdz4+W0tdPiwgUmVzdCwgUj5cbiAgICAgICAgICAgIDogYW55XG4gICAgICAgICAgOiBhbnlcbiAgICAgICAgOiAvLyBLLlJlc3QgKMSRaSBzw6J1IHbDoG8gb2JqZWN0KVxuICAgICAgICAgIFAgZXh0ZW5kcyBgJHtpbmZlciBLfS4ke2luZmVyIFJlc3R9YFxuICAgICAgICAgID8gSyBleHRlbmRzIFN0cktleXM8Q2xlYW48VW53cmFwQWxsU2lnbmFsczxUUmF3Pj4+XG4gICAgICAgICAgICA/IElzQXJyYXlMaWtlPENsZWFuPFVud3JhcEFsbFNpZ25hbHM8VFJhdz4+W0tdPiBleHRlbmRzIHRydWVcbiAgICAgICAgICAgICAgPyBhbnkgLy8ga2jDtG5nIGjhu5cgdHLhu6MgZG90IHbDoG8gcGjhuqduIHThu60gbeG6o25nIGtoaSB0aGnhur91IGluZGV4XG4gICAgICAgICAgICAgIDogR2V0SW50ZXJuYWw8Q2xlYW48VW53cmFwQWxsU2lnbmFsczxUUmF3Pj5bS10sIFJlc3QsIFI+XG4gICAgICAgICAgICA6IGFueVxuICAgICAgICAgIDogLy8gS1s8bnVtYmVyPl0gKGvhur90IHRow7pjIOG7nyBpbmRleClcbiAgICAgICAgICAgIFAgZXh0ZW5kcyBgJHtpbmZlciBLfVske2luZmVyIEl9XWBcbiAgICAgICAgICAgID8gSyBleHRlbmRzIFN0cktleXM8Q2xlYW48VW53cmFwQWxsU2lnbmFsczxUUmF3Pj4+XG4gICAgICAgICAgICAgID8gSSBleHRlbmRzIGAke251bWJlcn1gXG4gICAgICAgICAgICAgICAgPyBGaW5hbGl6ZTxBcnJheUVsZW1lbnRSYXc8Q2xlYW48VW53cmFwQWxsU2lnbmFsczxUUmF3Pj5bS10+LCBSPlxuICAgICAgICAgICAgICAgIDogYW55XG4gICAgICAgICAgICAgIDogYW55XG4gICAgICAgICAgICA6IC8vIEsgKGvhur90IHRow7pjIOG7nyBrZXkpXG4gICAgICAgICAgICAgIFAgZXh0ZW5kcyBgJHtpbmZlciBLfWBcbiAgICAgICAgICAgICAgPyBLIGV4dGVuZHMgU3RyS2V5czxDbGVhbjxVbndyYXBBbGxTaWduYWxzPFRSYXc+Pj5cbiAgICAgICAgICAgICAgICA/IEZpbmFsaXplPENsZWFuPFVud3JhcEFsbFNpZ25hbHM8VFJhdz4+W0tdLCBSPlxuICAgICAgICAgICAgICAgIDogYW55XG4gICAgICAgICAgICAgIDogYW55O1xuXG4vKiogPT09PT09PT09PT09PT09PT09PT09PSBQdWJsaWM6IEdldFZhbHVlQXRQYXRoICYgR2V0UmV0dXJuVHlwZSA9PT09PT09PT09PT09PT09PT09PT09ICoqL1xuXG4vLyBSZXNvbHZlIGtp4buDdSBnacOhIHRy4buLIHThuqFpIHBhdGggUC4gTuG6v3UgUj10cnVlLCBnaeG7ryBuZ3V5w6puIFNpZ25hbDsgbeG6t2MgxJHhu4tuaCBSPWZhbHNlIHPhur0gdW53cmFwIHRvw6BuIGLhu5kgU2lnbmFsLlxuZXhwb3J0IHR5cGUgR2V0VmFsdWVBdFBhdGg8VFJhdywgUCBleHRlbmRzIFBhdGhPZjxUUmF3PiwgUiBleHRlbmRzIGJvb2xlYW4gPSBmYWxzZT4gPSBUUmF3IGV4dGVuZHMgbnVsbCB8IHVuZGVmaW5lZCA/IFRSYXcgOiBHZXRJbnRlcm5hbDxUUmF3LCBQLCBSPjtcblxuLy8gS2nhu4N1IHRy4bqjIHbhu4EgY+G7p2EgZ2V0KCkgZOG7sWEgdHLDqm4gZGVmYXVsdFZhbHVlIERcbmV4cG9ydCB0eXBlIEdldFJldHVyblR5cGU8TywgUCBleHRlbmRzIFBhdGhPZjxPPiwgS1MgZXh0ZW5kcyBib29sZWFuLCBEIGV4dGVuZHMgR2V0VmFsdWVBdFBhdGg8TywgUCwgS1M+IHwgdW5kZWZpbmVkPiA9IEQgZXh0ZW5kcyB1bmRlZmluZWQgPyBHZXRWYWx1ZUF0UGF0aDxPLCBQLCBLUz4gOiBFeGNsdWRlPEdldFZhbHVlQXRQYXRoPE8sIFAsIEtTPiwgbnVsbCB8IHVuZGVmaW5lZD47XG5cbi8vIEtp4buDbSB0cmEgY8OhYyBraeG7g3UgZOG7ryBsaeG7h3UgxJHhurdjIGJp4buHdCDEkeG7gyBjaOG7iSB3cmFwIHNpZ25hbCAxIGPhuqVwXG50eXBlIElzU3BlY2lmaWNUeXBlPFQ+ID0gW1RdIGV4dGVuZHMgW1xuICB8IEV2ZW50XG4gIHwgTm9kZVxuICB8IERvY3VtZW50XG4gIHwgRWxlbWVudFxuICB8IFdpbmRvd1xuICB8IENTU1N0eWxlRGVjbGFyYXRpb25cbiAgfCBDU1NSdWxlXG4gIHwgQ1NTU3R5bGVTaGVldFxuICB8IEh0dHBQYXJhbXNcbiAgfCBEYXlqc1xuICB8IERhdGVcbiAgfCAoKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnkpXG4gIHwgUHJvbWlzZTxhbnk+XG4gIHwgTWFwPGFueSwgYW55PlxuICB8IFNldDxhbnk+XG4gIHwgV2Vha01hcDxhbnksIGFueT5cbiAgfCBXZWFrU2V0PGFueT5cbiAgfCBSZWdFeHBcbiAgfCBGaWxlXG4gIHwgQmxvYlxuICB8IEZpbGVMaXN0XG4gIHwgRm9ybURhdGEsXG5dXG4gID8gdHJ1ZVxuICA6IGZhbHNlO1xuXG4vLyBIZWxwZXIgdHlwZTogeOG7rSBsw70gbG9naWMgY2jDrW5oIG3DoCBLSMOUTkcgZGlzdHJpYnV0ZSAobm9uLWRpc3RyaWJ1dGl2ZSlcbnR5cGUgU2lnbmFsT2ZOb25OdWxsYWJsZTxULCBQIGV4dGVuZHMgYm9vbGVhbiwgRiBleHRlbmRzIGJvb2xlYW4+ID1cbiAgLy8gTuG6v3UgVCDEkcOjIGzDoCBXcml0YWJsZVNpZ25hbCwgZ2nhu68gbmd1ecOqbiAodHLDoW5oIHdyYXAgMiBs4bqnbilcbiAgW1RdIGV4dGVuZHMgW1dyaXRhYmxlU2lnbmFsPGFueT5dXG4gICAgPyBUXG4gICAgOiBbSXNTcGVjaWZpY1R5cGU8VD5dIGV4dGVuZHMgW3RydWVdXG4gICAgICA/IEYgZXh0ZW5kcyB0cnVlXG4gICAgICAgID8gV3JpdGFibGVTaWduYWw8VD5cbiAgICAgICAgOiBUXG4gICAgICA6IFtUXSBleHRlbmRzIFtSZWFkb25seUFycmF5PGFueT5dXG4gICAgICAgID8gRiBleHRlbmRzIHRydWVcbiAgICAgICAgICA/IFdyaXRhYmxlU2lnbmFsPEFycmF5PFNpZ25hbE9mSW1wbDxBcnJheUVsZW1lbnRSYXc8VD4sIFAsIHRydWU+Pj5cbiAgICAgICAgICA6IEFycmF5PFNpZ25hbE9mSW1wbDxBcnJheUVsZW1lbnRSYXc8VD4sIFAsIHRydWU+PlxuICAgICAgICA6IFtUXSBleHRlbmRzIFtvYmplY3RdXG4gICAgICAgICAgPyBGIGV4dGVuZHMgdHJ1ZVxuICAgICAgICAgICAgPyBXcml0YWJsZVNpZ25hbDx7IFtLIGluIGtleW9mIFRdOiBTaWduYWxPZkltcGw8VFtLXSwgUCwgdHJ1ZT4gfT5cbiAgICAgICAgICAgIDogeyBbSyBpbiBrZXlvZiBUXTogU2lnbmFsT2ZJbXBsPFRbS10sIFAsIHRydWU+IH1cbiAgICAgICAgICA6IFtUXSBleHRlbmRzIFtzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuXVxuICAgICAgICAgICAgPyBQIGV4dGVuZHMgdHJ1ZVxuICAgICAgICAgICAgICA/IFdyaXRhYmxlU2lnbmFsPFQ+XG4gICAgICAgICAgICAgIDogVFxuICAgICAgICAgICAgOiBXcml0YWJsZVNpZ25hbDxUPjtcblxuLy8gSW1wbGVtZW50YXRpb24gaGVscGVyOiB0w6FjaCBudWxsL3VuZGVmaW5lZCBtw6AgS0jDlE5HIGTDuW5nIGRpc3RyaWJ1dGl2ZSBjb25kaXRpb25hbFxudHlwZSBTaWduYWxPZkltcGw8VCwgUCBleHRlbmRzIGJvb2xlYW4sIEYgZXh0ZW5kcyBib29sZWFuPiA9IEV4dHJhY3Q8VCwgbnVsbCB8IHVuZGVmaW5lZD4gZXh0ZW5kcyBuZXZlciA/IFNpZ25hbE9mTm9uTnVsbGFibGU8VCwgUCwgRj4gOiBTaWduYWxPZk5vbk51bGxhYmxlPEV4Y2x1ZGU8VCwgbnVsbCB8IHVuZGVmaW5lZD4sIFAsIEY+IHwgRXh0cmFjdDxULCBudWxsIHwgdW5kZWZpbmVkPjtcblxuLy8gxJDGsGEga2nhu4N1IGThu68gbGnhu4d1IGLhuqV0IGvhu7MgduG7gSBk4bqhbmcgc2lnbmFsLCBO4bq/dSBQID0gdHJ1ZSDEkcawYSBj4bqjIGThu68gbGnhu4d1IHByZW1ldGl2ZV90eXBlIHbhu4EgZOG6oW5nIHNpZ25hbFxuZXhwb3J0IHR5cGUgU2lnbmFsT2Y8VCwgUCBleHRlbmRzIGJvb2xlYW4gPSB0cnVlLCBGIGV4dGVuZHMgYm9vbGVhbiA9IGZhbHNlPiA9IFNpZ25hbE9mSW1wbDxULCBQLCBGPjtcblxuZXhwb3J0IHR5cGUgTm9uU2lnbmFsT2Y8VD4gPSBUIGV4dGVuZHMgbnVsbCB8IHVuZGVmaW5lZCA/IFQgOiBDbGVhbjxUPiBleHRlbmRzIEFycmF5PGluZmVyIFU+ID8gQXJyYXk8Tm9uU2lnbmFsT2Y8Q2xlYW48VT4+PiA6IENsZWFuPFQ+IGV4dGVuZHMgb2JqZWN0ID8geyBbSyBpbiBrZXlvZiBDbGVhbjxUPl06IE5vblNpZ25hbE9mPENsZWFuPENsZWFuPFQ+W0tdPj4gfSA6IENsZWFuPFQ+O1xuXG4vKiogPT09PT09PT09PT09PT09PT09PT09PSAoVHXhu7MgY2jhu41uKSBWw60gZOG7pSBuaGFuaCA9PT09PT09PT09PT09PT09PT09PT09ICoqL1xuXG5leHBvcnQgdHlwZSBUX1BhZ2VCb3RDb25maWcgPSB7XG4gIGVuYWJsZWQ6IGJvb2xlYW47XG4gIG1vZGU/OiAnQVVUTycgfCAnUkVWSUVXJztcbn07XG5cbmV4cG9ydCB0eXBlIFRfU2lnbmFsX1BhZ2VCb3RDb25maWcgPSBTaWduYWxPZjxUX1BhZ2VCb3RDb25maWc+O1xuZXhwb3J0IGludGVyZmFjZSBJQ29tbWVudCB7XG4gIGNvbW1lbnRzPzogV3JpdGFibGVTaWduYWw8SVN1YkNvbW1lbnQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTdWJDb21tZW50IHtcbiAgc3RvcmU/OiBXcml0YWJsZVNpZ25hbDxBcnJheTxXcml0YWJsZVNpZ25hbDxJQ29tbWVudD4+PjtcbiAgZGF0YT86IFdyaXRhYmxlU2lnbmFsPEFycmF5PFdyaXRhYmxlU2lnbmFsPElDb21tZW50Pj4+O1xuICBzcGVjaWZpY190ZW1wX2RhdGE/OiBXcml0YWJsZVNpZ25hbDxBcnJheTxXcml0YWJsZVNpZ25hbDxJQ29tbWVudD4+PjtcbiAgcGFnaW5nPzogV3JpdGFibGVTaWduYWw8e1xuICAgIGN1cnNvcnM/OiBXcml0YWJsZVNpZ25hbDx7XG4gICAgICBhZnRlcj86IFdyaXRhYmxlU2lnbmFsPHN0cmluZz47XG4gICAgICBiZWZvcmU/OiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+O1xuICAgIH0+O1xuICAgIGJlZm9yZT86IFdyaXRhYmxlU2lnbmFsPHN0cmluZz47XG4gICAgYWZ0ZXI/OiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+O1xuICAgIG5leHQ/OiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+O1xuICAgIHByZXZpb3VzPzogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbiAgfT47XG4gIHN1bW1hcnk/OiBXcml0YWJsZVNpZ25hbDx7XG4gICAgY2FuX2NvbW1lbnQ/OiBXcml0YWJsZVNpZ25hbDxib29sZWFuPjtcbiAgICBjYW5vcmRlcl9jb21tZW50PzogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbiAgICB0b3RhbF9jb3VudD86IFdyaXRhYmxlU2lnbmFsPG51bWJlcj47XG4gIH0+O1xufVxuXG50eXBlIFZfY29tbWVudHNfRiA9IEdldFZhbHVlQXRQYXRoPElDb21tZW50LCAnY29tbWVudHMnLCBmYWxzZT47IC8vIElTdWJDb21tZW50XG50eXBlIFZfY29tbWVudHNfVCA9IEdldFZhbHVlQXRQYXRoPElDb21tZW50LCAnY29tbWVudHMnLCB0cnVlPjsgLy8gV3JpdGFibGVTaWduYWw8SVN1YkNvbW1lbnQ+XG5cbnR5cGUgVl9jb21tZW50c19zdG9yZV9GID0gR2V0VmFsdWVBdFBhdGg8SUNvbW1lbnQsICdjb21tZW50cy5kYXRhJywgZmFsc2U+OyAvLyBBcnJheTxXcml0YWJsZVNpZ25hbDxJQ29tbWVudD4+XG50eXBlIFZfY29tbWVudHNfc3RvcmVfVCA9IEdldFZhbHVlQXRQYXRoPElDb21tZW50LCAnY29tbWVudHMuZGF0YScsIHRydWU+OyAvLyBXcml0YWJsZVNpZ25hbDxBcnJheTxXcml0YWJsZVNpZ25hbDxJQ29tbWVudD4+PlxuXG5leHBvcnQgaW50ZXJmYWNlIFRlc3Qge1xuICBzcGVjaWZpY19xdWVyeT86IFdyaXRhYmxlU2lnbmFsPElBc3NpZ25tZW50SXRlbVF1ZXJ5PjtcblxuICBkYXRhOiBXcml0YWJsZVNpZ25hbDxBcnJheTxXcml0YWJsZVNpZ25hbDxJQXNzaWdubWVudEl0ZW0+Pj47XG5cbiAgaW5kZXg6IG51bWJlcjtcbiAgaW5mbzoge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBhZ2U6IG51bWJlcjtcbiAgICBhbmltYWw6IGJvb2xlYW47XG4gICAgY2F0ZTogJ2FsbycgfCAnYWxvMic7XG4gIH07XG4gIGNpdHk6IFdyaXRhYmxlU2lnbmFsPHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgY291bnRyeTogc3RyaW5nO1xuICB9PjtcbiAgYWRkcmVzczogV3JpdGFibGVTaWduYWw8e1xuICAgIGlwOiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+O1xuICAgIHBvcnQ6IFdyaXRhYmxlU2lnbmFsPG51bWJlcj47XG4gIH0+O1xuICBvd25lcjogQXJyYXk8c3RyaW5nPjtcbiAgc3VwcG9ydDogQXJyYXk8V3JpdGFibGVTaWduYWw8c3RyaW5nPj47XG4gIGhvc3Q6IEFycmF5PHtcbiAgICBpcDogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbiAgICBwb3J0OiBudW1iZXI7XG4gIH0+O1xuXG4gIGNvdW50cnk6IFdyaXRhYmxlU2lnbmFsPFxuICAgIEFycmF5PFxuICAgICAgV3JpdGFibGVTaWduYWw8e1xuICAgICAgICBuYW1lOiBXcml0YWJsZVNpZ25hbDx7XG4gICAgICAgICAgdmk6IHN0cmluZztcbiAgICAgICAgICBlbjogc3RyaW5nO1xuICAgICAgICB9PjtcbiAgICAgICAgY29kZTogV3JpdGFibGVTaWduYWw8e1xuICAgICAgICAgIHZpOiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+O1xuICAgICAgICAgIGVuOiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+O1xuICAgICAgICB9PjtcbiAgICAgICAgZmxhZzogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbiAgICAgICAgcGhvbmVfY29kZTogc3RyaW5nO1xuICAgICAgICBjdXJyZW5jeToge1xuICAgICAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgICAgICBjb2RlOiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+O1xuICAgICAgICAgIHN5bWJvbDogV3JpdGFibGVTaWduYWw8e1xuICAgICAgICAgICAgdmk6IHN0cmluZztcbiAgICAgICAgICAgIGVuOiBzdHJpbmc7XG4gICAgICAgICAgICBjbjogV3JpdGFibGVTaWduYWw8QXJyYXk8c3RyaW5nPj47XG4gICAgICAgICAgICBqcDogV3JpdGFibGVTaWduYWw8XG4gICAgICAgICAgICAgIEFycmF5PFxuICAgICAgICAgICAgICAgIFdyaXRhYmxlU2lnbmFsPHtcbiAgICAgICAgICAgICAgICAgIHZpOiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICBlbjogc3RyaW5nO1xuICAgICAgICAgICAgICAgIH0+XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgID47XG4gICAgICAgICAgfT47XG4gICAgICAgIH07XG4gICAgICB9PlxuICAgID5cbiAgPjtcbn1cblxudHlwZSBUZXN0MSA9IEdldFJldHVyblR5cGU8SUFzc2lnbm1lbnRJdGVtLCAnY2hhdGJvdF9jb25maWcubW9kZScsIHRydWUsICdSRVZJRVcnPjtcbnR5cGUgVGVzdDIgPSBTaWduYWxPZjxUZXN0PjtcbnR5cGUgVGVzdDMgPSBHZXRSZXR1cm5UeXBlPFRlc3QyLCAnaW5mby5jYXRlJywgdHJ1ZSwgV3JpdGFibGVTaWduYWw8J2Fsbyc+PjtcblxuaW50ZXJmYWNlIElBc3NpZ25tZW50SXRlbSB7XG4gIGlkOiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+O1xuICBuYW1lOiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+O1xuICBkZXNjcmlwdGlvbjogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbiAgY3JlYXRlZF9hdDogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbiAgdXBkYXRlZF9hdDogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbiAgYXNzaWduZWVzPzogV3JpdGFibGVTaWduYWw8QXJyYXk8V3JpdGFibGVTaWduYWw8SUFzc2lnbmVlPj4+O1xuICBjaGF0Ym90X2NvbmZpZz86IFdyaXRhYmxlU2lnbmFsPFRfUGFnZUJvdENvbmZpZz47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUFzc2lnbmVlIHtcbiAgYXNzaWduZWVfaWQ/OiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+O1xuICBjb252ZXJzYXRpb25faWQ/OiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+O1xuICBjcmVhdGVkX3RpbWU/OiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+O1xuICBjcmVhdGVkX3VzZXI/OiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+O1xuICBpZD86IFdyaXRhYmxlU2lnbmFsPHN0cmluZz47XG4gIG5vdGU/OiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+O1xuICBzdGF0dXM/OiBXcml0YWJsZVNpZ25hbDxudW1iZXI+O1xuICBhc3NpZ25fdGFnX2FjdGl2aXR5X3N0YXR1cz86IFdyaXRhYmxlU2lnbmFsPG51bWJlcj47XG4gIGNvbW1lbnRfaWQ/OiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+O1xuICByYXRpbmdfaWQ/OiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElBc3NpZ25tZW50SXRlbVF1ZXJ5IHtcbiAgcGVyX3BhZ2U6IFdyaXRhYmxlU2lnbmFsPG51bWJlcj47XG4gIGFmdGVyX3Rva2VuPzogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbiAgYmVmb3JlX3Rva2VuPzogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbiAgc2VhcmNoPzogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbiAgc2VhcmNoX2luZGV4PzogV3JpdGFibGVTaWduYWw8bnVtYmVyPjtcbn1cblxudHlwZSBWX2luZGV4X0YgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnaW5kZXgnLCBmYWxzZT47IC8vIG51bWJlclxudHlwZSBWX2luZGV4X1QgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnaW5kZXgnLCB0cnVlPjsgLy8gbnVtYmVyXG5cbnR5cGUgVl9pbmZvX0YgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnaW5mbycsIGZhbHNlPjsgLy8geyBuYW1lOiBzdHJpbmc7IGFnZTogbnVtYmVyIH1cbnR5cGUgVl9pbmZvX1QgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnaW5mbycsIHRydWU+OyAvLyB7IG5hbWU6IHN0cmluZzsgYWdlOiBudW1iZXIgfVxudHlwZSBWX2luZm9fbmFtZV9GID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2luZm8ubmFtZScsIGZhbHNlPjsgLy8gc3RyaW5nXG50eXBlIFZfaW5mb19uYW1lX1QgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnaW5mby5uYW1lJywgdHJ1ZT47IC8vIHN0cmluZ1xudHlwZSBWX2luZm9fYWdlX0YgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnaW5mby5hZ2UnLCBmYWxzZT47IC8vIG51bWJlclxudHlwZSBWX2luZm9fYWdlX1QgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnaW5mby5hZ2UnLCB0cnVlPjsgLy8gbnVtYmVyXG5cbi8vIENpdHkgKHNpZ25hbC13cmFwcGVkIG9iamVjdCB3aXRoIHBsYWluIGZpZWxkcylcbnR5cGUgVl9jaXR5X0YgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnY2l0eScsIGZhbHNlPjsgLy8geyBuYW1lOiBzdHJpbmc7IGNvdW50cnk6IHN0cmluZyB9XG50eXBlIFZfY2l0eV9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2NpdHknLCB0cnVlPjsgLy8gV3JpdGFibGVTaWduYWw8eyBuYW1lOiBzdHJpbmc7IGNvdW50cnk6IHN0cmluZyB9PlxudHlwZSBWX2NpdHlfbmFtZV9GID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2NpdHkubmFtZScsIGZhbHNlPjsgLy8gc3RyaW5nXG50eXBlIFZfY2l0eV9uYW1lX1QgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnY2l0eS5uYW1lJywgdHJ1ZT47IC8vIHN0cmluZ1xudHlwZSBWX2NpdHlfY291bnRyeV9GID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2NpdHkuY291bnRyeScsIGZhbHNlPjsgLy8gc3RyaW5nXG50eXBlIFZfY2l0eV9jb3VudHJ5X1QgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnY2l0eS5jb3VudHJ5JywgdHJ1ZT47IC8vIHN0cmluZ1xuXG4vLyBBZGRyZXNzIChzaWduYWwtd3JhcHBlZCBvYmplY3Qgd2l0aCBzaWduYWwgbGVhdmVzKVxudHlwZSBWX2FkZHJlc3NfRiA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdhZGRyZXNzJywgZmFsc2U+OyAvLyB7IGlwOiBzdHJpbmc7IHBvcnQ6IG51bWJlciB9XG50eXBlIFZfYWRkcmVzc19UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2FkZHJlc3MnLCB0cnVlPjsgLy8gV3JpdGFibGVTaWduYWw8eyBpcDogV3JpdGFibGVTaWduYWw8c3RyaW5nPjsgcG9ydDogV3JpdGFibGVTaWduYWw8bnVtYmVyPiB9PlxudHlwZSBWX2FkZHJlc3NfaXBfRiA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdhZGRyZXNzLmlwJywgZmFsc2U+OyAvLyBzdHJpbmdcbnR5cGUgVl9hZGRyZXNzX2lwX1QgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnYWRkcmVzcy5pcCcsIHRydWU+OyAvLyBXcml0YWJsZVNpZ25hbDxzdHJpbmc+XG50eXBlIFZfYWRkcmVzc19wb3J0X0YgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnYWRkcmVzcy5wb3J0JywgZmFsc2U+OyAvLyBudW1iZXJcbnR5cGUgVl9hZGRyZXNzX3BvcnRfVCA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdhZGRyZXNzLnBvcnQnLCB0cnVlPjsgLy8gV3JpdGFibGVTaWduYWw8bnVtYmVyPlxuXG4vLyBPd25lciAoYXJyYXkgb2YgcHJpbWl0aXZlcylcbnR5cGUgVl9vd25lcl9GID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ293bmVyJywgZmFsc2U+OyAvLyBzdHJpbmdbXVxudHlwZSBWX293bmVyX1QgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnb3duZXInLCB0cnVlPjsgLy8gc3RyaW5nW11cbnR5cGUgVl9vd25lcl9pZHhfRiA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdvd25lclswXScsIGZhbHNlPjsgLy8gc3RyaW5nXG50eXBlIFZfb3duZXJfaWR4X1QgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnb3duZXJbMF0nLCB0cnVlPjsgLy8gc3RyaW5nXG5cbi8vIFN1cHBvcnQgKGFycmF5IG9mIHNpZ25hbHMpXG50eXBlIFZfc3VwcG9ydF9GID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ3N1cHBvcnQnLCBmYWxzZT47IC8vIHN0cmluZ1tdXG50eXBlIFZfc3VwcG9ydF9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ3N1cHBvcnQnLCB0cnVlPjsgLy8gV3JpdGFibGVTaWduYWw8c3RyaW5nPltdXG50eXBlIFZfc3VwcG9ydF9pZHhfRiA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdzdXBwb3J0WzBdJywgZmFsc2U+OyAvLyBzdHJpbmdcbnR5cGUgVl9zdXBwb3J0X2lkeF9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ3N1cHBvcnRbMF0nLCB0cnVlPjsgLy8gV3JpdGFibGVTaWduYWw8c3RyaW5nPlxuXG4vLyBIb3N0IChhcnJheSBvZiBvYmplY3RzIHdpdGggbWl4ZWQgbGVhdmVzKVxudHlwZSBWX2hvc3RfRiA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdob3N0JywgZmFsc2U+OyAvLyB7IGlwOiBzdHJpbmc7IHBvcnQ6IG51bWJlciB9W11cbnR5cGUgVl9ob3N0X1QgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnaG9zdCcsIHRydWU+OyAvLyB7IGlwOiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+OyBwb3J0OiBudW1iZXIgfVtdXG50eXBlIFZfaG9zdF9pZHhfRiA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdob3N0WzBdJywgZmFsc2U+OyAvLyB7IGlwOiBzdHJpbmc7IHBvcnQ6IG51bWJlciB9XG50eXBlIFZfaG9zdF9pZHhfVCA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdob3N0WzBdJywgdHJ1ZT47IC8vIHsgaXA6IFdyaXRhYmxlU2lnbmFsPHN0cmluZz47IHBvcnQ6IG51bWJlciB9XG50eXBlIFZfaG9zdF9pcF9GID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2hvc3RbMF0uaXAnLCBmYWxzZT47IC8vIHN0cmluZ1xudHlwZSBWX2hvc3RfaXBfVCA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdob3N0WzBdLmlwJywgdHJ1ZT47IC8vIFdyaXRhYmxlU2lnbmFsPHN0cmluZz5cbnR5cGUgVl9ob3N0X3BvcnRfRiA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdob3N0WzBdLnBvcnQnLCBmYWxzZT47IC8vIG51bWJlclxudHlwZSBWX2hvc3RfcG9ydF9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2hvc3RbMF0ucG9ydCcsIHRydWU+OyAvLyBudW1iZXJcblxuLy8gY3VycmVuY3lcbnR5cGUgVl9jdXJyZW5jeV9GID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2NvdW50cnlbMF0uY3VycmVuY3knLCBmYWxzZT47IC8vIHsgbmFtZTogc3RyaW5nOyBjb2RlOiBzdHJpbmc7IHN5bWJvbDogeyAuLi4gfSB9XG50eXBlIFZfY3VycmVuY3lfVCA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdjb3VudHJ5WzBdLmN1cnJlbmN5JywgdHJ1ZT47IC8vIHsgbmFtZTogc3RyaW5nOyBjb2RlOiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+OyBzeW1ib2w6IFdyaXRhYmxlU2lnbmFsPHsgLi4uIH0+IH1cbnR5cGUgVl9jdXJyZW5jeV9uYW1lX0YgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnY291bnRyeVswXS5jdXJyZW5jeS5uYW1lJywgZmFsc2U+OyAvLyBzdHJpbmdcbnR5cGUgVl9jdXJyZW5jeV9uYW1lX1QgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnY291bnRyeVswXS5jdXJyZW5jeS5uYW1lJywgdHJ1ZT47IC8vIHN0cmluZ1xudHlwZSBWX2N1cnJlbmN5X2NvZGVfRiA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdjb3VudHJ5WzBdLmN1cnJlbmN5LmNvZGUnLCBmYWxzZT47IC8vIHN0cmluZ1xudHlwZSBWX2N1cnJlbmN5X2NvZGVfVCA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdjb3VudHJ5WzBdLmN1cnJlbmN5LmNvZGUnLCB0cnVlPjsgLy8gV3JpdGFibGVTaWduYWw8c3RyaW5nPlxuXG4vLyBjdXJyZW5jeS5zeW1ib2xcbnR5cGUgVl9zeW1ib2xfRiA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdjb3VudHJ5WzBdLmN1cnJlbmN5LnN5bWJvbCcsIGZhbHNlPjsgLy8geyB2aTogc3RyaW5nOyBlbjogc3RyaW5nOyBjbjogc3RyaW5nW107IGpwOiB7IHZpOiBzdHJpbmc7IGVuOiBzdHJpbmcgfVtdIH1cbnR5cGUgVl9zeW1ib2xfVCA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdjb3VudHJ5WzBdLmN1cnJlbmN5LnN5bWJvbCcsIHRydWU+OyAvLyBXcml0YWJsZVNpZ25hbDx7IHZpOiBzdHJpbmc7IGVuOiBzdHJpbmc7IGNuOiBXcml0YWJsZVNpZ25hbDxzdHJpbmdbXT47IGpwOiBXcml0YWJsZVNpZ25hbDx7IHZpOiBzdHJpbmc7IGVuOiBzdHJpbmcgfVtdPiB9PlxudHlwZSBWX3N5bWJvbF92aV9GID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2NvdW50cnlbMF0uY3VycmVuY3kuc3ltYm9sLnZpJywgZmFsc2U+OyAvLyBzdHJpbmdcbnR5cGUgVl9zeW1ib2xfdmlfVCA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdjb3VudHJ5WzBdLmN1cnJlbmN5LnN5bWJvbC52aScsIHRydWU+OyAvLyBzdHJpbmdcbnR5cGUgVl9zeW1ib2xfZW5fRiA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdjb3VudHJ5WzBdLmN1cnJlbmN5LnN5bWJvbC5lbicsIGZhbHNlPjsgLy8gc3RyaW5nXG50eXBlIFZfc3ltYm9sX2VuX1QgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnY291bnRyeVswXS5jdXJyZW5jeS5zeW1ib2wuZW4nLCB0cnVlPjsgLy8gc3RyaW5nXG50eXBlIFZfc3ltYm9sX2NuX0YgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnY291bnRyeVswXS5jdXJyZW5jeS5zeW1ib2wuY24nLCBmYWxzZT47IC8vIHN0cmluZ1tdXG50eXBlIFZfc3ltYm9sX2NuX1QgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnY291bnRyeVswXS5jdXJyZW5jeS5zeW1ib2wuY24nLCB0cnVlPjsgLy8gV3JpdGFibGVTaWduYWw8c3RyaW5nW10+XG50eXBlIFZfc3ltYm9sX2NuX2lkeF9GID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2NvdW50cnlbMF0uY3VycmVuY3kuc3ltYm9sLmNuWzBdJywgZmFsc2U+OyAvLyBzdHJpbmdcbnR5cGUgVl9zeW1ib2xfY25faWR4X1QgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnY291bnRyeVswXS5jdXJyZW5jeS5zeW1ib2wuY25bMF0nLCB0cnVlPjsgLy8gc3RyaW5nXG50eXBlIFZfc3ltYm9sX2pwX0YgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnY291bnRyeVswXS5jdXJyZW5jeS5zeW1ib2wuanAnLCBmYWxzZT47IC8vIHsgdmk6IHN0cmluZzsgZW46IHN0cmluZyB9W11cbnR5cGUgVl9zeW1ib2xfanBfVCA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdjb3VudHJ5WzBdLmN1cnJlbmN5LnN5bWJvbC5qcCcsIHRydWU+OyAvLyBXcml0YWJsZVNpZ25hbDx7IHZpOiBzdHJpbmc7IGVuOiBzdHJpbmcgfVtdPlxudHlwZSBWX3N5bWJvbF9qcF9pZHhfRiA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdjb3VudHJ5WzBdLmN1cnJlbmN5LnN5bWJvbC5qcFswXScsIGZhbHNlPjsgLy8geyB2aTogc3RyaW5nOyBlbjogc3RyaW5nIH1cbnR5cGUgVl9zeW1ib2xfanBfaWR4X1QgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnY291bnRyeVswXS5jdXJyZW5jeS5zeW1ib2wuanBbMF0nLCB0cnVlPjsgLy8gV3JpdGFibGVTaWduYWw8eyB2aTogc3RyaW5nOyBlbjogc3RyaW5nIH0+XG50eXBlIFZfc3ltYm9sX2pwX3ZpX0YgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnY291bnRyeVswXS5jdXJyZW5jeS5zeW1ib2wuanBbMF0udmknLCBmYWxzZT47IC8vIHN0cmluZ1xudHlwZSBWX3N5bWJvbF9qcF92aV9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2NvdW50cnlbMF0uY3VycmVuY3kuc3ltYm9sLmpwWzBdLnZpJywgdHJ1ZT47IC8vIHN0cmluZ1xudHlwZSBWX3N5bWJvbF9qcF9lbl9GID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2NvdW50cnlbMF0uY3VycmVuY3kuc3ltYm9sLmpwWzBdLmVuJywgZmFsc2U+OyAvLyBzdHJpbmdcbnR5cGUgVl9zeW1ib2xfanBfZW5fVCA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdjb3VudHJ5WzBdLmN1cnJlbmN5LnN5bWJvbC5qcFswXS5lbicsIHRydWU+OyAvLyBzdHJpbmdcblxudHlwZSBWX0FycmF5X3N5bWJvbF9jbl9GID0gR2V0VmFsdWVBdFBhdGg8QXJyYXk8VGVzdD4sICdbMF0uY291bnRyeVswXS5jdXJyZW5jeS5zeW1ib2wuY24nLCBmYWxzZT47IC8vIHN0cmluZ1tdXG50eXBlIFZfQXJyYXlfc3ltYm9sX2NuX1QgPSBHZXRWYWx1ZUF0UGF0aDxBcnJheTxUZXN0PiwgJ1swXS5jb3VudHJ5WzBdLmN1cnJlbmN5LnN5bWJvbC5jbicsIHRydWU+OyAvLyBXcml0YWJsZVNpZ25hbDxzdHJpbmdbXT5cbnR5cGUgVl9BcnJheV9zeW1ib2xfY25faWR4X0YgPSBHZXRWYWx1ZUF0UGF0aDxBcnJheTxUZXN0PiwgJ1swXS5jb3VudHJ5WzBdLmN1cnJlbmN5LnN5bWJvbC5jblswXScsIGZhbHNlPjsgLy8gc3RyaW5nXG50eXBlIFZfQXJyYXlfc3ltYm9sX2NuX2lkeF9UID0gR2V0VmFsdWVBdFBhdGg8QXJyYXk8VGVzdD4sICdbMF0uY291bnRyeVswXS5jdXJyZW5jeS5zeW1ib2wuY25bMF0nLCB0cnVlPjsgLy8gc3RyaW5nXG5cbnR5cGUgcGF0aElBc3NpZ25tZW50SXRlbSA9IFBhdGhPZjxJQXNzaWdubWVudEl0ZW0+O1xudHlwZSBwYXRoSUFzc2lnbm1lbnRJdGVtMSA9IFBhdGhPZjx1bmtub3duPjsgLy8gc3RyaW5nXG5cbnR5cGUgVl9hc3NpZ25lZXNfRiA9IEdldFZhbHVlQXRQYXRoPElBc3NpZ25tZW50SXRlbSwgJ2Fzc2lnbmVlc1swXScsIGZhbHNlPjsgLy8gSUFzc2lnbmVlXG4iXX0=
|
|
@@ -1,191 +1,5 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
2
|
|
|
3
|
-
/** ====================== (Tuỳ chọn) Ví dụ nhanh ====================== **/
|
|
4
|
-
// export interface IComment {
|
|
5
|
-
// comments?: WritableSignal<ISubComment>;
|
|
6
|
-
// }
|
|
7
|
-
// export interface ISubComment {
|
|
8
|
-
// store?: WritableSignal<Array<WritableSignal<IComment>>>;
|
|
9
|
-
// data?: WritableSignal<Array<WritableSignal<IComment>>>;
|
|
10
|
-
// specific_temp_data?: WritableSignal<Array<WritableSignal<IComment>>>;
|
|
11
|
-
// paging?: WritableSignal<{
|
|
12
|
-
// cursors?: WritableSignal<{
|
|
13
|
-
// after?: WritableSignal<string>;
|
|
14
|
-
// before?: WritableSignal<string>;
|
|
15
|
-
// }>;
|
|
16
|
-
// before?: WritableSignal<string>;
|
|
17
|
-
// after?: WritableSignal<string>;
|
|
18
|
-
// next?: WritableSignal<string>;
|
|
19
|
-
// previous?: WritableSignal<string>;
|
|
20
|
-
// }>;
|
|
21
|
-
// summary?: WritableSignal<{
|
|
22
|
-
// can_comment?: WritableSignal<boolean>;
|
|
23
|
-
// canorder_comment?: WritableSignal<string>;
|
|
24
|
-
// total_count?: WritableSignal<number>;
|
|
25
|
-
// }>;
|
|
26
|
-
// }
|
|
27
|
-
// type V_comments_F = GetValueAtPath<IComment, 'comments', false>; // ISubComment
|
|
28
|
-
// type V_comments_T = GetValueAtPath<IComment, 'comments', true>; // WritableSignal<ISubComment>
|
|
29
|
-
// type V_comments_store_F = GetValueAtPath<IComment, 'comments.data', false>; // Array<WritableSignal<IComment>>
|
|
30
|
-
// type V_comments_store_T = GetValueAtPath<IComment, 'comments.data', true>; // WritableSignal<Array<WritableSignal<IComment>>>
|
|
31
|
-
// export interface Test {
|
|
32
|
-
// specific_query?: WritableSignal<IAssignmentItemQuery>;
|
|
33
|
-
// data: WritableSignal<Array<WritableSignal<IAssignmentItem>>>;
|
|
34
|
-
// index: number;
|
|
35
|
-
// info: {
|
|
36
|
-
// name: string;
|
|
37
|
-
// age: number;
|
|
38
|
-
// };
|
|
39
|
-
// city: WritableSignal<{
|
|
40
|
-
// name: string;
|
|
41
|
-
// country: string;
|
|
42
|
-
// }>;
|
|
43
|
-
// address: WritableSignal<{
|
|
44
|
-
// ip: WritableSignal<string>;
|
|
45
|
-
// port: WritableSignal<number>;
|
|
46
|
-
// }>;
|
|
47
|
-
// owner: Array<string>;
|
|
48
|
-
// support: Array<WritableSignal<string>>;
|
|
49
|
-
// host: Array<{
|
|
50
|
-
// ip: WritableSignal<string>;
|
|
51
|
-
// port: number;
|
|
52
|
-
// }>;
|
|
53
|
-
// country: WritableSignal<
|
|
54
|
-
// Array<
|
|
55
|
-
// WritableSignal<{
|
|
56
|
-
// name: WritableSignal<{
|
|
57
|
-
// vi: string;
|
|
58
|
-
// en: string;
|
|
59
|
-
// }>;
|
|
60
|
-
// code: WritableSignal<{
|
|
61
|
-
// vi: WritableSignal<string>;
|
|
62
|
-
// en: WritableSignal<string>;
|
|
63
|
-
// }>;
|
|
64
|
-
// flag: WritableSignal<string>;
|
|
65
|
-
// phone_code: string;
|
|
66
|
-
// currency: {
|
|
67
|
-
// name: string;
|
|
68
|
-
// code: WritableSignal<string>;
|
|
69
|
-
// symbol: WritableSignal<{
|
|
70
|
-
// vi: string;
|
|
71
|
-
// en: string;
|
|
72
|
-
// cn: WritableSignal<Array<string>>;
|
|
73
|
-
// jp: WritableSignal<
|
|
74
|
-
// Array<
|
|
75
|
-
// WritableSignal<{
|
|
76
|
-
// vi: string;
|
|
77
|
-
// en: string;
|
|
78
|
-
// }>
|
|
79
|
-
// >
|
|
80
|
-
// >;
|
|
81
|
-
// }>;
|
|
82
|
-
// };
|
|
83
|
-
// }>
|
|
84
|
-
// >
|
|
85
|
-
// >;
|
|
86
|
-
// }
|
|
87
|
-
// interface IAssignmentItem {
|
|
88
|
-
// id: WritableSignal<string>;
|
|
89
|
-
// name: WritableSignal<string>;
|
|
90
|
-
// description: WritableSignal<string>;
|
|
91
|
-
// created_at: WritableSignal<string>;
|
|
92
|
-
// updated_at: WritableSignal<string>;
|
|
93
|
-
// assignees?: WritableSignal<Array<WritableSignal<IAssignee>>>;
|
|
94
|
-
// }
|
|
95
|
-
// export interface IAssignee {
|
|
96
|
-
// assignee_id?: WritableSignal<string>;
|
|
97
|
-
// conversation_id?: WritableSignal<string>;
|
|
98
|
-
// created_time?: WritableSignal<string>;
|
|
99
|
-
// created_user?: WritableSignal<string>;
|
|
100
|
-
// id?: WritableSignal<string>;
|
|
101
|
-
// note?: WritableSignal<string>;
|
|
102
|
-
// status?: WritableSignal<number>;
|
|
103
|
-
// assign_tag_activity_status?: WritableSignal<number>;
|
|
104
|
-
// comment_id?: WritableSignal<string>;
|
|
105
|
-
// rating_id?: WritableSignal<string>;
|
|
106
|
-
// }
|
|
107
|
-
// export interface IAssignmentItemQuery {
|
|
108
|
-
// per_page: WritableSignal<number>;
|
|
109
|
-
// after_token?: WritableSignal<string>;
|
|
110
|
-
// before_token?: WritableSignal<string>;
|
|
111
|
-
// search?: WritableSignal<string>;
|
|
112
|
-
// search_index?: WritableSignal<number>;
|
|
113
|
-
// }
|
|
114
|
-
// type V_index_F = GetValueAtPath<Test, 'index', false>; // number
|
|
115
|
-
// type V_index_T = GetValueAtPath<Test, 'index', true>; // number
|
|
116
|
-
// type V_info_F = GetValueAtPath<Test, 'info', false>; // { name: string; age: number }
|
|
117
|
-
// type V_info_T = GetValueAtPath<Test, 'info', true>; // { name: string; age: number }
|
|
118
|
-
// type V_info_name_F = GetValueAtPath<Test, 'info.name', false>; // string
|
|
119
|
-
// type V_info_name_T = GetValueAtPath<Test, 'info.name', true>; // string
|
|
120
|
-
// type V_info_age_F = GetValueAtPath<Test, 'info.age', false>; // number
|
|
121
|
-
// type V_info_age_T = GetValueAtPath<Test, 'info.age', true>; // number
|
|
122
|
-
// // City (signal-wrapped object with plain fields)
|
|
123
|
-
// type V_city_F = GetValueAtPath<Test, 'city', false>; // { name: string; country: string }
|
|
124
|
-
// type V_city_T = GetValueAtPath<Test, 'city', true>; // WritableSignal<{ name: string; country: string }>
|
|
125
|
-
// type V_city_name_F = GetValueAtPath<Test, 'city.name', false>; // string
|
|
126
|
-
// type V_city_name_T = GetValueAtPath<Test, 'city.name', true>; // string
|
|
127
|
-
// type V_city_country_F = GetValueAtPath<Test, 'city.country', false>; // string
|
|
128
|
-
// type V_city_country_T = GetValueAtPath<Test, 'city.country', true>; // string
|
|
129
|
-
// // Address (signal-wrapped object with signal leaves)
|
|
130
|
-
// type V_address_F = GetValueAtPath<Test, 'address', false>; // { ip: string; port: number }
|
|
131
|
-
// type V_address_T = GetValueAtPath<Test, 'address', true>; // WritableSignal<{ ip: WritableSignal<string>; port: WritableSignal<number> }>
|
|
132
|
-
// type V_address_ip_F = GetValueAtPath<Test, 'address.ip', false>; // string
|
|
133
|
-
// type V_address_ip_T = GetValueAtPath<Test, 'address.ip', true>; // WritableSignal<string>
|
|
134
|
-
// type V_address_port_F = GetValueAtPath<Test, 'address.port', false>; // number
|
|
135
|
-
// type V_address_port_T = GetValueAtPath<Test, 'address.port', true>; // WritableSignal<number>
|
|
136
|
-
// // Owner (array of primitives)
|
|
137
|
-
// type V_owner_F = GetValueAtPath<Test, 'owner', false>; // string[]
|
|
138
|
-
// type V_owner_T = GetValueAtPath<Test, 'owner', true>; // string[]
|
|
139
|
-
// type V_owner_idx_F = GetValueAtPath<Test, 'owner[0]', false>; // string
|
|
140
|
-
// type V_owner_idx_T = GetValueAtPath<Test, 'owner[0]', true>; // string
|
|
141
|
-
// // Support (array of signals)
|
|
142
|
-
// type V_support_F = GetValueAtPath<Test, 'support', false>; // string[]
|
|
143
|
-
// type V_support_T = GetValueAtPath<Test, 'support', true>; // WritableSignal<string>[]
|
|
144
|
-
// type V_support_idx_F = GetValueAtPath<Test, 'support[0]', false>; // string
|
|
145
|
-
// type V_support_idx_T = GetValueAtPath<Test, 'support[0]', true>; // WritableSignal<string>
|
|
146
|
-
// // Host (array of objects with mixed leaves)
|
|
147
|
-
// type V_host_F = GetValueAtPath<Test, 'host', false>; // { ip: string; port: number }[]
|
|
148
|
-
// type V_host_T = GetValueAtPath<Test, 'host', true>; // { ip: WritableSignal<string>; port: number }[]
|
|
149
|
-
// type V_host_idx_F = GetValueAtPath<Test, 'host[0]', false>; // { ip: string; port: number }
|
|
150
|
-
// type V_host_idx_T = GetValueAtPath<Test, 'host[0]', true>; // { ip: WritableSignal<string>; port: number }
|
|
151
|
-
// type V_host_ip_F = GetValueAtPath<Test, 'host[0].ip', false>; // string
|
|
152
|
-
// type V_host_ip_T = GetValueAtPath<Test, 'host[0].ip', true>; // WritableSignal<string>
|
|
153
|
-
// type V_host_port_F = GetValueAtPath<Test, 'host[0].port', false>; // number
|
|
154
|
-
// type V_host_port_T = GetValueAtPath<Test, 'host[0].port', true>; // number
|
|
155
|
-
// // currency
|
|
156
|
-
// type V_currency_F = GetValueAtPath<Test, 'country[0].currency', false>; // { name: string; code: string; symbol: { ... } }
|
|
157
|
-
// type V_currency_T = GetValueAtPath<Test, 'country[0].currency', true>; // { name: string; code: WritableSignal<string>; symbol: WritableSignal<{ ... }> }
|
|
158
|
-
// type V_currency_name_F = GetValueAtPath<Test, 'country[0].currency.name', false>; // string
|
|
159
|
-
// type V_currency_name_T = GetValueAtPath<Test, 'country[0].currency.name', true>; // string
|
|
160
|
-
// type V_currency_code_F = GetValueAtPath<Test, 'country[0].currency.code', false>; // string
|
|
161
|
-
// type V_currency_code_T = GetValueAtPath<Test, 'country[0].currency.code', true>; // WritableSignal<string>
|
|
162
|
-
// // currency.symbol
|
|
163
|
-
// type V_symbol_F = GetValueAtPath<Test, 'country[0].currency.symbol', false>; // { vi: string; en: string; cn: string[]; jp: { vi: string; en: string }[] }
|
|
164
|
-
// type V_symbol_T = GetValueAtPath<Test, 'country[0].currency.symbol', true>; // WritableSignal<{ vi: string; en: string; cn: WritableSignal<string[]>; jp: WritableSignal<{ vi: string; en: string }[]> }>
|
|
165
|
-
// type V_symbol_vi_F = GetValueAtPath<Test, 'country[0].currency.symbol.vi', false>; // string
|
|
166
|
-
// type V_symbol_vi_T = GetValueAtPath<Test, 'country[0].currency.symbol.vi', true>; // string
|
|
167
|
-
// type V_symbol_en_F = GetValueAtPath<Test, 'country[0].currency.symbol.en', false>; // string
|
|
168
|
-
// type V_symbol_en_T = GetValueAtPath<Test, 'country[0].currency.symbol.en', true>; // string
|
|
169
|
-
// type V_symbol_cn_F = GetValueAtPath<Test, 'country[0].currency.symbol.cn', false>; // string[]
|
|
170
|
-
// type V_symbol_cn_T = GetValueAtPath<Test, 'country[0].currency.symbol.cn', true>; // WritableSignal<string[]>
|
|
171
|
-
// type V_symbol_cn_idx_F = GetValueAtPath<Test, 'country[0].currency.symbol.cn[0]', false>; // string
|
|
172
|
-
// type V_symbol_cn_idx_T = GetValueAtPath<Test, 'country[0].currency.symbol.cn[0]', true>; // string
|
|
173
|
-
// type V_symbol_jp_F = GetValueAtPath<Test, 'country[0].currency.symbol.jp', false>; // { vi: string; en: string }[]
|
|
174
|
-
// type V_symbol_jp_T = GetValueAtPath<Test, 'country[0].currency.symbol.jp', true>; // WritableSignal<{ vi: string; en: string }[]>
|
|
175
|
-
// type V_symbol_jp_idx_F = GetValueAtPath<Test, 'country[0].currency.symbol.jp[0]', false>; // { vi: string; en: string }
|
|
176
|
-
// type V_symbol_jp_idx_T = GetValueAtPath<Test, 'country[0].currency.symbol.jp[0]', true>; // WritableSignal<{ vi: string; en: string }>
|
|
177
|
-
// type V_symbol_jp_vi_F = GetValueAtPath<Test, 'country[0].currency.symbol.jp[0].vi', false>; // string
|
|
178
|
-
// type V_symbol_jp_vi_T = GetValueAtPath<Test, 'country[0].currency.symbol.jp[0].vi', true>; // string
|
|
179
|
-
// type V_symbol_jp_en_F = GetValueAtPath<Test, 'country[0].currency.symbol.jp[0].en', false>; // string
|
|
180
|
-
// type V_symbol_jp_en_T = GetValueAtPath<Test, 'country[0].currency.symbol.jp[0].en', true>; // string
|
|
181
|
-
// type V_Array_symbol_cn_F = GetValueAtPath<Array<Test>, '[0].country[0].currency.symbol.cn', false>; // string[]
|
|
182
|
-
// type V_Array_symbol_cn_T = GetValueAtPath<Array<Test>, '[0].country[0].currency.symbol.cn', true>; // WritableSignal<string[]>
|
|
183
|
-
// type V_Array_symbol_cn_idx_F = GetValueAtPath<Array<Test>, '[0].country[0].currency.symbol.cn[0]', false>; // string
|
|
184
|
-
// type V_Array_symbol_cn_idx_T = GetValueAtPath<Array<Test>, '[0].country[0].currency.symbol.cn[0]', true>; // string
|
|
185
|
-
// type pathIAssignmentItem = PathOf<IAssignmentItem>;
|
|
186
|
-
// type pathIAssignmentItem = PathOf<unknown>; // string
|
|
187
|
-
// type V_assignees_F = GetValueAtPath<IAssignmentItem, 'assignees[0]', false>; // IAssignee
|
|
188
|
-
|
|
189
3
|
// | 'fr' // Tiếng Pháp
|
|
190
4
|
// | 'de' // Tiếng Đức
|
|
191
5
|
// | 'es' // Tiếng Tây Ban Nha
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libs-ui-interfaces-types.mjs","sources":["../../../../libs-ui/interfaces-types/src/event-browser.interface.ts","../../../../libs-ui/interfaces-types/src/generic-utilities-for-path-value.type.ts","../../../../libs-ui/interfaces-types/src/language-support.type.ts","../../../../libs-ui/interfaces-types/src/libs-ui-interfaces-types.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport interface IEvent extends Event, MouseEvent, IEventCustom, KeyboardEvent, ErrorEvent {\n target: IEventTarget;\n keyCode: number;\n dataTransfer?: DataTransfer;\n clipboardData?: DataTransfer;\n which: number;\n}\n\nexport interface IEventTarget extends EventTarget {\n value: any;\n selectionStart: number;\n scrollHeight: number;\n scrollTop: number;\n offsetHeight: number;\n style: any;\n files?: any;\n src?: string;\n innerHTML: any;\n textContent: string;\n parentElement: any;\n getAttribute: (key: string) => any;\n setAttribute: (key: string, value: any) => void;\n className: string;\n}\nexport interface IEventCustom {\n target: IEventTarget;\n data: any;\n keyCode?: number;\n fakeEvent?: boolean;\n which?: number;\n inputType?: 'deleteContentBackward' | 'insertText' | 'insertFromPaste' | 'insertCompositionText';\n preventDefault: () => void;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { HttpParams } from '@angular/common/http';\nimport { Signal, WritableSignal } from '@angular/core';\nimport { Dayjs } from 'dayjs';\n\n/** ====================== Helpers: unwrap & shape ====================== **/\n\ntype IsEmptyObject<Obj> = [keyof Obj] extends [never] ? true : false;\n\n// Unwrap toàn bộ Signal\ntype UnwrapAllSignals<T> = T extends Signal<infer U> ? UnwrapAllSignals<U> : T;\n\n// Loại bỏ undefined | null sau khi unwrap 1 lớp Signal để soi shape\ntype Clean<T> = Exclude<UnwrapAllSignals<T>, undefined | null>;\n\n// Key dạng string\ntype StrKeys<T> = Extract<keyof T, string>;\n\n/** ====================== Array helpers ====================== **/\n\n// Lấy element type của mảng, tự làm sạch (bỏ undefined/null, unwrap Signal trước khi kiểm tra)\ntype ArrayElementRaw<T> = UnwrapAllSignals<Clean<T>> extends ReadonlyArray<infer U> ? U : UnwrapAllSignals<Clean<T>> extends (infer U)[] ? U : never;\n\n// Kiểm tra array-like sau khi unwrap toàn bộ Signal và làm sạch optional\ntype IsArrayLike<T> = UnwrapAllSignals<Clean<T>> extends readonly unknown[] ? true : UnwrapAllSignals<Clean<T>> extends unknown[] ? true : false;\n\n// Kiểm tra object không phải array sau khi unwrap toàn bộ Signal và làm sạch optional\ntype IsNonArrayObject<T> = UnwrapAllSignals<Clean<T>> extends object ? (UnwrapAllSignals<Clean<T>> extends readonly unknown[] ? false : UnwrapAllSignals<Clean<T>> extends unknown[] ? false : true) : false;\n\n/** ====================== DOM/Evt guard ====================== **/\n\ntype IsDOMType<T> = UnwrapAllSignals<T> extends Event | Node | Document | Element | Window | CSSStyleDeclaration | CSSRule | CSSStyleSheet ? true : false;\n\n/** ====================== Finalize (giữ Signal nếu cần) ====================== **/\n\ntype Finalize<T, R extends boolean> = R extends true ? T : UnwrapAllSignals<T>;\n\n/** ====================== Depth limiter (hybrid, mặc định 6) ====================== **/\n\ntype Dec<N extends number> = N extends 6 ? 5 : N extends 5 ? 4 : N extends 4 ? 3 : N extends 3 ? 2 : N extends 2 ? 1 : N extends 1 ? 0 : 0;\n\n/** ====================== Path builders (Depth-limited) ====================== **/\n\n// Path cho array ở root/field\ntype PathForArray<T, Depth extends number> = [Depth] extends [0] ? never : `[${number}]` | (PathOf<ArrayElementRaw<T>, Dec<Depth>> extends never ? never : `[${number}].${PathOf<ArrayElementRaw<T>, Dec<Depth>>}`);\n\n// Path cho từng prop K tùy kiểu giá trị\ntype PathForProp<TProp, K extends string, Depth extends number> = [Depth] extends [0]\n ? K\n : IsArrayLike<TProp> extends true\n ? `${K}` | `${K}[${number}]` | (PathOf<ArrayElementRaw<TProp>, Dec<Depth>> extends never ? never : `${K}[${number}].${PathOf<ArrayElementRaw<TProp>, Dec<Depth>>}`)\n : IsNonArrayObject<TProp> extends true\n ? `${K}` | (PathOf<Clean<TProp>, Dec<Depth>> extends never ? never : `${K}.${PathOf<Clean<TProp>, Dec<Depth>>}`)\n : `${K}`;\n\n// Path cho object (map từng key)\ntype PathForObject<T, Depth extends number> = {\n [K in StrKeys<T>]: PathForProp<T[K], K, Depth>;\n}[StrKeys<T>];\n\n/** ====================== Public: PathOf (hybrid, Depth mặc định 6) ====================== **/\n\nexport type PathOf<TRaw, Depth extends number = 6> =\n IsEmptyObject<Clean<TRaw>> extends true\n ? any\n : IsDOMType<Clean<TRaw>> extends true\n ? any\n : [Depth] extends [0]\n ? never\n : UnwrapAllSignals<Clean<TRaw>> extends readonly unknown[] | unknown[]\n ? PathForArray<Clean<TRaw>, Depth>\n : UnwrapAllSignals<Clean<TRaw>> extends object\n ? PathForObject<UnwrapAllSignals<Clean<TRaw>>, Depth>\n : string;\n\n/** ====================== Resolve giá trị theo path ====================== **/\n\n// GetInternal: đi theo string path để resolve type giá trị cuối cùng\n// Sử dụng distributive conditional type (TRaw extends null | undefined) để tự động handle union có undefined/null (ví dụ optional props).\ntype GetInternal<TRaw, P extends string, R extends boolean> = TRaw extends null | undefined\n ? TRaw\n : // [x].Rest (đánh index vào root array)\n P extends `[${infer I}].${infer Rest}`\n ? I extends `${number}`\n ? GetInternal<ArrayElementRaw<TRaw>, Rest, R>\n : any\n : // [x] (chỉ index)\n P extends `[${infer I}]`\n ? I extends `${number}`\n ? Finalize<ArrayElementRaw<TRaw>, R>\n : any\n : // K[x].Rest (đánh index vào field mảng)\n P extends `${infer K}[${infer I}].${infer Rest}`\n ? K extends StrKeys<Clean<UnwrapAllSignals<TRaw>>>\n ? I extends `${number}`\n ? GetInternal<ArrayElementRaw<Clean<UnwrapAllSignals<TRaw>>[K]>, Rest, R>\n : any\n : any\n : // K.Rest (đi sâu vào object)\n P extends `${infer K}.${infer Rest}`\n ? K extends StrKeys<Clean<UnwrapAllSignals<TRaw>>>\n ? IsArrayLike<Clean<UnwrapAllSignals<TRaw>>[K]> extends true\n ? any // không hỗ trợ dot vào phần tử mảng khi thiếu index\n : GetInternal<Clean<UnwrapAllSignals<TRaw>>[K], Rest, R>\n : any\n : // K[<number>] (kết thúc ở index)\n P extends `${infer K}[${infer I}]`\n ? K extends StrKeys<Clean<UnwrapAllSignals<TRaw>>>\n ? I extends `${number}`\n ? Finalize<ArrayElementRaw<Clean<UnwrapAllSignals<TRaw>>[K]>, R>\n : any\n : any\n : // K (kết thúc ở key)\n P extends `${infer K}`\n ? K extends StrKeys<Clean<UnwrapAllSignals<TRaw>>>\n ? Finalize<Clean<UnwrapAllSignals<TRaw>>[K], R>\n : any\n : any;\n\n/** ====================== Public: GetValueAtPath & GetReturnType ====================== **/\n\n// Resolve kiểu giá trị tại path P. Nếu R=true, giữ nguyên Signal; mặc định R=false sẽ unwrap toàn bộ Signal.\nexport type GetValueAtPath<TRaw, P extends PathOf<TRaw>, R extends boolean = false> = TRaw extends null | undefined ? TRaw : GetInternal<TRaw, P, R>;\n\n// Kiểu trả về của get() dựa trên defaultValue D\nexport type GetReturnType<O, P extends PathOf<O>, KS extends boolean, D> = D extends undefined ? GetValueAtPath<O, P, KS> : D;\n\n// Kiểm tra các kiểu dữ liệu đặc biệt để chỉ wrap signal 1 cấp\ntype IsSpecificType<T> = T extends\n | Event\n | Node\n | Document\n | Element\n | Window\n | CSSStyleDeclaration\n | CSSRule\n | CSSStyleSheet\n | HttpParams\n | Dayjs\n | Date\n | ((...args: any[]) => any)\n | Promise<any>\n | Map<any, any>\n | Set<any>\n | WeakMap<any, any>\n | WeakSet<any>\n | RegExp\n | File\n | Blob\n | FileList\n | FormData\n ? true\n : false;\n\n// Đưa kiểu dữ liệu bất kỳ về dạng signal, Nếu P = true đưa cả dữ liệu premetive_type về dạng signal\nexport type SignalOf<T, P extends boolean = true, F extends boolean = false> = T extends null | undefined\n ? T\n : IsSpecificType<Clean<T>> extends true\n ? F extends true\n ? WritableSignal<T>\n : T\n : Clean<T> extends Array<infer U>\n ? F extends true\n ? WritableSignal<Array<SignalOf<Clean<U>, P, true>>>\n : Array<SignalOf<Clean<U>, P, true>>\n : Clean<T> extends object\n ? F extends true\n ? WritableSignal<{ [K in keyof Clean<T>]: SignalOf<Clean<Clean<T>[K]>, P, true> }>\n : { [K in keyof Clean<T>]: SignalOf<Clean<Clean<T>[K]>, P, true> }\n : Clean<T> extends string | number | boolean\n ? P extends true\n ? WritableSignal<Clean<T>>\n : Clean<T>\n : WritableSignal<Clean<T>>;\n\nexport type NonSignalOf<T> = T extends null | undefined ? T : Clean<T> extends Array<infer U> ? Array<NonSignalOf<Clean<U>>> : Clean<T> extends object ? { [K in keyof Clean<T>]: NonSignalOf<Clean<Clean<T>[K]>> } : Clean<T>;\n\n/** ====================== (Tuỳ chọn) Ví dụ nhanh ====================== **/\n\n// export interface IComment {\n// comments?: WritableSignal<ISubComment>;\n// }\n\n// export interface ISubComment {\n// store?: WritableSignal<Array<WritableSignal<IComment>>>;\n// data?: WritableSignal<Array<WritableSignal<IComment>>>;\n// specific_temp_data?: WritableSignal<Array<WritableSignal<IComment>>>;\n// paging?: WritableSignal<{\n// cursors?: WritableSignal<{\n// after?: WritableSignal<string>;\n// before?: WritableSignal<string>;\n// }>;\n// before?: WritableSignal<string>;\n// after?: WritableSignal<string>;\n// next?: WritableSignal<string>;\n// previous?: WritableSignal<string>;\n// }>;\n// summary?: WritableSignal<{\n// can_comment?: WritableSignal<boolean>;\n// canorder_comment?: WritableSignal<string>;\n// total_count?: WritableSignal<number>;\n// }>;\n// }\n\n// type V_comments_F = GetValueAtPath<IComment, 'comments', false>; // ISubComment\n// type V_comments_T = GetValueAtPath<IComment, 'comments', true>; // WritableSignal<ISubComment>\n\n// type V_comments_store_F = GetValueAtPath<IComment, 'comments.data', false>; // Array<WritableSignal<IComment>>\n// type V_comments_store_T = GetValueAtPath<IComment, 'comments.data', true>; // WritableSignal<Array<WritableSignal<IComment>>>\n\n// export interface Test {\n// specific_query?: WritableSignal<IAssignmentItemQuery>;\n\n// data: WritableSignal<Array<WritableSignal<IAssignmentItem>>>;\n\n// index: number;\n// info: {\n// name: string;\n// age: number;\n// };\n// city: WritableSignal<{\n// name: string;\n// country: string;\n// }>;\n// address: WritableSignal<{\n// ip: WritableSignal<string>;\n// port: WritableSignal<number>;\n// }>;\n// owner: Array<string>;\n// support: Array<WritableSignal<string>>;\n// host: Array<{\n// ip: WritableSignal<string>;\n// port: number;\n// }>;\n\n// country: WritableSignal<\n// Array<\n// WritableSignal<{\n// name: WritableSignal<{\n// vi: string;\n// en: string;\n// }>;\n// code: WritableSignal<{\n// vi: WritableSignal<string>;\n// en: WritableSignal<string>;\n// }>;\n// flag: WritableSignal<string>;\n// phone_code: string;\n// currency: {\n// name: string;\n// code: WritableSignal<string>;\n// symbol: WritableSignal<{\n// vi: string;\n// en: string;\n// cn: WritableSignal<Array<string>>;\n// jp: WritableSignal<\n// Array<\n// WritableSignal<{\n// vi: string;\n// en: string;\n// }>\n// >\n// >;\n// }>;\n// };\n// }>\n// >\n// >;\n// }\n\n// interface IAssignmentItem {\n// id: WritableSignal<string>;\n// name: WritableSignal<string>;\n// description: WritableSignal<string>;\n// created_at: WritableSignal<string>;\n// updated_at: WritableSignal<string>;\n// assignees?: WritableSignal<Array<WritableSignal<IAssignee>>>;\n// }\n\n// export interface IAssignee {\n// assignee_id?: WritableSignal<string>;\n// conversation_id?: WritableSignal<string>;\n// created_time?: WritableSignal<string>;\n// created_user?: WritableSignal<string>;\n// id?: WritableSignal<string>;\n// note?: WritableSignal<string>;\n// status?: WritableSignal<number>;\n// assign_tag_activity_status?: WritableSignal<number>;\n// comment_id?: WritableSignal<string>;\n// rating_id?: WritableSignal<string>;\n// }\n\n// export interface IAssignmentItemQuery {\n// per_page: WritableSignal<number>;\n// after_token?: WritableSignal<string>;\n// before_token?: WritableSignal<string>;\n// search?: WritableSignal<string>;\n// search_index?: WritableSignal<number>;\n// }\n\n// type V_index_F = GetValueAtPath<Test, 'index', false>; // number\n// type V_index_T = GetValueAtPath<Test, 'index', true>; // number\n\n// type V_info_F = GetValueAtPath<Test, 'info', false>; // { name: string; age: number }\n// type V_info_T = GetValueAtPath<Test, 'info', true>; // { name: string; age: number }\n// type V_info_name_F = GetValueAtPath<Test, 'info.name', false>; // string\n// type V_info_name_T = GetValueAtPath<Test, 'info.name', true>; // string\n// type V_info_age_F = GetValueAtPath<Test, 'info.age', false>; // number\n// type V_info_age_T = GetValueAtPath<Test, 'info.age', true>; // number\n\n// // City (signal-wrapped object with plain fields)\n// type V_city_F = GetValueAtPath<Test, 'city', false>; // { name: string; country: string }\n// type V_city_T = GetValueAtPath<Test, 'city', true>; // WritableSignal<{ name: string; country: string }>\n// type V_city_name_F = GetValueAtPath<Test, 'city.name', false>; // string\n// type V_city_name_T = GetValueAtPath<Test, 'city.name', true>; // string\n// type V_city_country_F = GetValueAtPath<Test, 'city.country', false>; // string\n// type V_city_country_T = GetValueAtPath<Test, 'city.country', true>; // string\n\n// // Address (signal-wrapped object with signal leaves)\n// type V_address_F = GetValueAtPath<Test, 'address', false>; // { ip: string; port: number }\n// type V_address_T = GetValueAtPath<Test, 'address', true>; // WritableSignal<{ ip: WritableSignal<string>; port: WritableSignal<number> }>\n// type V_address_ip_F = GetValueAtPath<Test, 'address.ip', false>; // string\n// type V_address_ip_T = GetValueAtPath<Test, 'address.ip', true>; // WritableSignal<string>\n// type V_address_port_F = GetValueAtPath<Test, 'address.port', false>; // number\n// type V_address_port_T = GetValueAtPath<Test, 'address.port', true>; // WritableSignal<number>\n\n// // Owner (array of primitives)\n// type V_owner_F = GetValueAtPath<Test, 'owner', false>; // string[]\n// type V_owner_T = GetValueAtPath<Test, 'owner', true>; // string[]\n// type V_owner_idx_F = GetValueAtPath<Test, 'owner[0]', false>; // string\n// type V_owner_idx_T = GetValueAtPath<Test, 'owner[0]', true>; // string\n\n// // Support (array of signals)\n// type V_support_F = GetValueAtPath<Test, 'support', false>; // string[]\n// type V_support_T = GetValueAtPath<Test, 'support', true>; // WritableSignal<string>[]\n// type V_support_idx_F = GetValueAtPath<Test, 'support[0]', false>; // string\n// type V_support_idx_T = GetValueAtPath<Test, 'support[0]', true>; // WritableSignal<string>\n\n// // Host (array of objects with mixed leaves)\n// type V_host_F = GetValueAtPath<Test, 'host', false>; // { ip: string; port: number }[]\n// type V_host_T = GetValueAtPath<Test, 'host', true>; // { ip: WritableSignal<string>; port: number }[]\n// type V_host_idx_F = GetValueAtPath<Test, 'host[0]', false>; // { ip: string; port: number }\n// type V_host_idx_T = GetValueAtPath<Test, 'host[0]', true>; // { ip: WritableSignal<string>; port: number }\n// type V_host_ip_F = GetValueAtPath<Test, 'host[0].ip', false>; // string\n// type V_host_ip_T = GetValueAtPath<Test, 'host[0].ip', true>; // WritableSignal<string>\n// type V_host_port_F = GetValueAtPath<Test, 'host[0].port', false>; // number\n// type V_host_port_T = GetValueAtPath<Test, 'host[0].port', true>; // number\n\n// // currency\n// type V_currency_F = GetValueAtPath<Test, 'country[0].currency', false>; // { name: string; code: string; symbol: { ... } }\n// type V_currency_T = GetValueAtPath<Test, 'country[0].currency', true>; // { name: string; code: WritableSignal<string>; symbol: WritableSignal<{ ... }> }\n// type V_currency_name_F = GetValueAtPath<Test, 'country[0].currency.name', false>; // string\n// type V_currency_name_T = GetValueAtPath<Test, 'country[0].currency.name', true>; // string\n// type V_currency_code_F = GetValueAtPath<Test, 'country[0].currency.code', false>; // string\n// type V_currency_code_T = GetValueAtPath<Test, 'country[0].currency.code', true>; // WritableSignal<string>\n\n// // currency.symbol\n// type V_symbol_F = GetValueAtPath<Test, 'country[0].currency.symbol', false>; // { vi: string; en: string; cn: string[]; jp: { vi: string; en: string }[] }\n// type V_symbol_T = GetValueAtPath<Test, 'country[0].currency.symbol', true>; // WritableSignal<{ vi: string; en: string; cn: WritableSignal<string[]>; jp: WritableSignal<{ vi: string; en: string }[]> }>\n// type V_symbol_vi_F = GetValueAtPath<Test, 'country[0].currency.symbol.vi', false>; // string\n// type V_symbol_vi_T = GetValueAtPath<Test, 'country[0].currency.symbol.vi', true>; // string\n// type V_symbol_en_F = GetValueAtPath<Test, 'country[0].currency.symbol.en', false>; // string\n// type V_symbol_en_T = GetValueAtPath<Test, 'country[0].currency.symbol.en', true>; // string\n// type V_symbol_cn_F = GetValueAtPath<Test, 'country[0].currency.symbol.cn', false>; // string[]\n// type V_symbol_cn_T = GetValueAtPath<Test, 'country[0].currency.symbol.cn', true>; // WritableSignal<string[]>\n// type V_symbol_cn_idx_F = GetValueAtPath<Test, 'country[0].currency.symbol.cn[0]', false>; // string\n// type V_symbol_cn_idx_T = GetValueAtPath<Test, 'country[0].currency.symbol.cn[0]', true>; // string\n// type V_symbol_jp_F = GetValueAtPath<Test, 'country[0].currency.symbol.jp', false>; // { vi: string; en: string }[]\n// type V_symbol_jp_T = GetValueAtPath<Test, 'country[0].currency.symbol.jp', true>; // WritableSignal<{ vi: string; en: string }[]>\n// type V_symbol_jp_idx_F = GetValueAtPath<Test, 'country[0].currency.symbol.jp[0]', false>; // { vi: string; en: string }\n// type V_symbol_jp_idx_T = GetValueAtPath<Test, 'country[0].currency.symbol.jp[0]', true>; // WritableSignal<{ vi: string; en: string }>\n// type V_symbol_jp_vi_F = GetValueAtPath<Test, 'country[0].currency.symbol.jp[0].vi', false>; // string\n// type V_symbol_jp_vi_T = GetValueAtPath<Test, 'country[0].currency.symbol.jp[0].vi', true>; // string\n// type V_symbol_jp_en_F = GetValueAtPath<Test, 'country[0].currency.symbol.jp[0].en', false>; // string\n// type V_symbol_jp_en_T = GetValueAtPath<Test, 'country[0].currency.symbol.jp[0].en', true>; // string\n\n// type V_Array_symbol_cn_F = GetValueAtPath<Array<Test>, '[0].country[0].currency.symbol.cn', false>; // string[]\n// type V_Array_symbol_cn_T = GetValueAtPath<Array<Test>, '[0].country[0].currency.symbol.cn', true>; // WritableSignal<string[]>\n// type V_Array_symbol_cn_idx_F = GetValueAtPath<Array<Test>, '[0].country[0].currency.symbol.cn[0]', false>; // string\n// type V_Array_symbol_cn_idx_T = GetValueAtPath<Array<Test>, '[0].country[0].currency.symbol.cn[0]', true>; // string\n\n// type pathIAssignmentItem = PathOf<IAssignmentItem>;\n// type pathIAssignmentItem = PathOf<unknown>; // string\n\n// type V_assignees_F = GetValueAtPath<IAssignmentItem, 'assignees[0]', false>; // IAssignee\n","export type TYPE_LANGUAGE_SUPPORT =\n | 'vi' // Tiếng Việt\n | 'en'; // Tiếng Anh\n// | 'fr' // Tiếng Pháp\n// | 'de' // Tiếng Đức\n// | 'es' // Tiếng Tây Ban Nha\n// | 'zh' // Tiếng Trung (Giản thể)\n// | 'zh-TW' // Tiếng Trung (Phồn thể)\n// | 'ja' // Tiếng Nhật\n// | 'ko' // Tiếng Hàn\n// | 'ru' // Tiếng Nga\n// | 'it' // Tiếng Ý\n// | 'pt' // Tiếng Bồ Đào Nha\n// | 'th' // Tiếng Thái\n// | 'id' // Tiếng Indonesia\n// | 'ms' // Tiếng Malaysia\n// | 'ar' // Tiếng Ả Rập\n// | 'hi' // Tiếng Hindi\n// | 'bn' // Tiếng Bengal\n// | 'tr' // Tiếng Thổ Nhĩ Kỳ\n// | 'nl' // Tiếng Hà Lan\n// | 'km' // Tiếng Khmer (Campuchia)\n// | 'lo' // Tiếng Lào\n// | 'my' // Tiếng Miến Điện (Myanmar)\n// | 'tl' // Tiếng Tagalog (Philippines)\n// | 'ceb' // Tiếng Cebuano (Philippines)\n// | 'jv' // Tiếng Java (Indonesia)\n// | 'su'; // Tiếng Sundanese (Indonesia)\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAAA;;ACiLA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;;AC7XA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;;AAEG"}
|
|
1
|
+
{"version":3,"file":"libs-ui-interfaces-types.mjs","sources":["../../../../libs-ui/interfaces-types/src/event-browser.interface.ts","../../../../libs-ui/interfaces-types/src/language-support.type.ts","../../../../libs-ui/interfaces-types/src/libs-ui-interfaces-types.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport interface IEvent extends Event, MouseEvent, IEventCustom, KeyboardEvent, ErrorEvent {\n target: IEventTarget;\n keyCode: number;\n dataTransfer?: DataTransfer;\n clipboardData?: DataTransfer;\n which: number;\n}\n\nexport interface IEventTarget extends EventTarget {\n value: any;\n selectionStart: number;\n scrollHeight: number;\n scrollTop: number;\n offsetHeight: number;\n style: any;\n files?: any;\n src?: string;\n innerHTML: any;\n textContent: string;\n parentElement: any;\n getAttribute: (key: string) => any;\n setAttribute: (key: string, value: any) => void;\n className: string;\n}\nexport interface IEventCustom {\n target: IEventTarget;\n data: any;\n keyCode?: number;\n fakeEvent?: boolean;\n which?: number;\n inputType?: 'deleteContentBackward' | 'insertText' | 'insertFromPaste' | 'insertCompositionText';\n preventDefault: () => void;\n}\n","export type TYPE_LANGUAGE_SUPPORT =\n | 'vi' // Tiếng Việt\n | 'en'; // Tiếng Anh\n// | 'fr' // Tiếng Pháp\n// | 'de' // Tiếng Đức\n// | 'es' // Tiếng Tây Ban Nha\n// | 'zh' // Tiếng Trung (Giản thể)\n// | 'zh-TW' // Tiếng Trung (Phồn thể)\n// | 'ja' // Tiếng Nhật\n// | 'ko' // Tiếng Hàn\n// | 'ru' // Tiếng Nga\n// | 'it' // Tiếng Ý\n// | 'pt' // Tiếng Bồ Đào Nha\n// | 'th' // Tiếng Thái\n// | 'id' // Tiếng Indonesia\n// | 'ms' // Tiếng Malaysia\n// | 'ar' // Tiếng Ả Rập\n// | 'hi' // Tiếng Hindi\n// | 'bn' // Tiếng Bengal\n// | 'tr' // Tiếng Thổ Nhĩ Kỳ\n// | 'nl' // Tiếng Hà Lan\n// | 'km' // Tiếng Khmer (Campuchia)\n// | 'lo' // Tiếng Lào\n// | 'my' // Tiếng Miến Điện (Myanmar)\n// | 'tl' // Tiếng Tagalog (Philippines)\n// | 'ceb' // Tiếng Cebuano (Philippines)\n// | 'jv' // Tiếng Java (Indonesia)\n// | 'su'; // Tiếng Sundanese (Indonesia)\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAAA;;ACGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;;AAEG"}
|
|
@@ -28,15 +28,127 @@ export type PathOf<TRaw, Depth extends number = 6> = IsEmptyObject<Clean<TRaw>>
|
|
|
28
28
|
type GetInternal<TRaw, P extends string, R extends boolean> = TRaw extends null | undefined ? TRaw : P extends `[${infer I}].${infer Rest}` ? I extends `${number}` ? GetInternal<ArrayElementRaw<TRaw>, Rest, R> : any : P extends `[${infer I}]` ? I extends `${number}` ? Finalize<ArrayElementRaw<TRaw>, R> : any : P extends `${infer K}[${infer I}].${infer Rest}` ? K extends StrKeys<Clean<UnwrapAllSignals<TRaw>>> ? I extends `${number}` ? GetInternal<ArrayElementRaw<Clean<UnwrapAllSignals<TRaw>>[K]>, Rest, R> : any : any : P extends `${infer K}.${infer Rest}` ? K extends StrKeys<Clean<UnwrapAllSignals<TRaw>>> ? IsArrayLike<Clean<UnwrapAllSignals<TRaw>>[K]> extends true ? any : GetInternal<Clean<UnwrapAllSignals<TRaw>>[K], Rest, R> : any : P extends `${infer K}[${infer I}]` ? K extends StrKeys<Clean<UnwrapAllSignals<TRaw>>> ? I extends `${number}` ? Finalize<ArrayElementRaw<Clean<UnwrapAllSignals<TRaw>>[K]>, R> : any : any : P extends `${infer K}` ? K extends StrKeys<Clean<UnwrapAllSignals<TRaw>>> ? Finalize<Clean<UnwrapAllSignals<TRaw>>[K], R> : any : any;
|
|
29
29
|
/** ====================== Public: GetValueAtPath & GetReturnType ====================== **/
|
|
30
30
|
export type GetValueAtPath<TRaw, P extends PathOf<TRaw>, R extends boolean = false> = TRaw extends null | undefined ? TRaw : GetInternal<TRaw, P, R>;
|
|
31
|
-
export type GetReturnType<O, P extends PathOf<O>, KS extends boolean, D> = D extends undefined ? GetValueAtPath<O, P, KS> :
|
|
32
|
-
type IsSpecificType<T> = T extends
|
|
33
|
-
|
|
34
|
-
|
|
31
|
+
export type GetReturnType<O, P extends PathOf<O>, KS extends boolean, D extends GetValueAtPath<O, P, KS> | undefined> = D extends undefined ? GetValueAtPath<O, P, KS> : Exclude<GetValueAtPath<O, P, KS>, null | undefined>;
|
|
32
|
+
type IsSpecificType<T> = [T] extends [
|
|
33
|
+
Event | Node | Document | Element | Window | CSSStyleDeclaration | CSSRule | CSSStyleSheet | HttpParams | Dayjs | Date | ((...args: any[]) => any) | Promise<any> | Map<any, any> | Set<any> | WeakMap<any, any> | WeakSet<any> | RegExp | File | Blob | FileList | FormData
|
|
34
|
+
] ? true : false;
|
|
35
|
+
type SignalOfNonNullable<T, P extends boolean, F extends boolean> = [
|
|
36
|
+
T
|
|
37
|
+
] extends [WritableSignal<any>] ? T : [IsSpecificType<T>] extends [true] ? F extends true ? WritableSignal<T> : T : [T] extends [ReadonlyArray<any>] ? F extends true ? WritableSignal<Array<SignalOfImpl<ArrayElementRaw<T>, P, true>>> : Array<SignalOfImpl<ArrayElementRaw<T>, P, true>> : [T] extends [object] ? F extends true ? WritableSignal<{
|
|
38
|
+
[K in keyof T]: SignalOfImpl<T[K], P, true>;
|
|
35
39
|
}> : {
|
|
36
|
-
[K in keyof
|
|
37
|
-
} :
|
|
40
|
+
[K in keyof T]: SignalOfImpl<T[K], P, true>;
|
|
41
|
+
} : [T] extends [string | number | boolean] ? P extends true ? WritableSignal<T> : T : WritableSignal<T>;
|
|
42
|
+
type SignalOfImpl<T, P extends boolean, F extends boolean> = Extract<T, null | undefined> extends never ? SignalOfNonNullable<T, P, F> : SignalOfNonNullable<Exclude<T, null | undefined>, P, F> | Extract<T, null | undefined>;
|
|
43
|
+
export type SignalOf<T, P extends boolean = true, F extends boolean = false> = SignalOfImpl<T, P, F>;
|
|
38
44
|
export type NonSignalOf<T> = T extends null | undefined ? T : Clean<T> extends Array<infer U> ? Array<NonSignalOf<Clean<U>>> : Clean<T> extends object ? {
|
|
39
45
|
[K in keyof Clean<T>]: NonSignalOf<Clean<Clean<T>[K]>>;
|
|
40
46
|
} : Clean<T>;
|
|
41
|
-
export {};
|
|
42
47
|
/** ====================== (Tuỳ chọn) Ví dụ nhanh ====================== **/
|
|
48
|
+
export type T_PageBotConfig = {
|
|
49
|
+
enabled: boolean;
|
|
50
|
+
mode?: 'AUTO' | 'REVIEW';
|
|
51
|
+
};
|
|
52
|
+
export type T_Signal_PageBotConfig = SignalOf<T_PageBotConfig>;
|
|
53
|
+
export interface IComment {
|
|
54
|
+
comments?: WritableSignal<ISubComment>;
|
|
55
|
+
}
|
|
56
|
+
export interface ISubComment {
|
|
57
|
+
store?: WritableSignal<Array<WritableSignal<IComment>>>;
|
|
58
|
+
data?: WritableSignal<Array<WritableSignal<IComment>>>;
|
|
59
|
+
specific_temp_data?: WritableSignal<Array<WritableSignal<IComment>>>;
|
|
60
|
+
paging?: WritableSignal<{
|
|
61
|
+
cursors?: WritableSignal<{
|
|
62
|
+
after?: WritableSignal<string>;
|
|
63
|
+
before?: WritableSignal<string>;
|
|
64
|
+
}>;
|
|
65
|
+
before?: WritableSignal<string>;
|
|
66
|
+
after?: WritableSignal<string>;
|
|
67
|
+
next?: WritableSignal<string>;
|
|
68
|
+
previous?: WritableSignal<string>;
|
|
69
|
+
}>;
|
|
70
|
+
summary?: WritableSignal<{
|
|
71
|
+
can_comment?: WritableSignal<boolean>;
|
|
72
|
+
canorder_comment?: WritableSignal<string>;
|
|
73
|
+
total_count?: WritableSignal<number>;
|
|
74
|
+
}>;
|
|
75
|
+
}
|
|
76
|
+
export interface Test {
|
|
77
|
+
specific_query?: WritableSignal<IAssignmentItemQuery>;
|
|
78
|
+
data: WritableSignal<Array<WritableSignal<IAssignmentItem>>>;
|
|
79
|
+
index: number;
|
|
80
|
+
info: {
|
|
81
|
+
name: string;
|
|
82
|
+
age: number;
|
|
83
|
+
animal: boolean;
|
|
84
|
+
cate: 'alo' | 'alo2';
|
|
85
|
+
};
|
|
86
|
+
city: WritableSignal<{
|
|
87
|
+
name: string;
|
|
88
|
+
country: string;
|
|
89
|
+
}>;
|
|
90
|
+
address: WritableSignal<{
|
|
91
|
+
ip: WritableSignal<string>;
|
|
92
|
+
port: WritableSignal<number>;
|
|
93
|
+
}>;
|
|
94
|
+
owner: Array<string>;
|
|
95
|
+
support: Array<WritableSignal<string>>;
|
|
96
|
+
host: Array<{
|
|
97
|
+
ip: WritableSignal<string>;
|
|
98
|
+
port: number;
|
|
99
|
+
}>;
|
|
100
|
+
country: WritableSignal<Array<WritableSignal<{
|
|
101
|
+
name: WritableSignal<{
|
|
102
|
+
vi: string;
|
|
103
|
+
en: string;
|
|
104
|
+
}>;
|
|
105
|
+
code: WritableSignal<{
|
|
106
|
+
vi: WritableSignal<string>;
|
|
107
|
+
en: WritableSignal<string>;
|
|
108
|
+
}>;
|
|
109
|
+
flag: WritableSignal<string>;
|
|
110
|
+
phone_code: string;
|
|
111
|
+
currency: {
|
|
112
|
+
name: string;
|
|
113
|
+
code: WritableSignal<string>;
|
|
114
|
+
symbol: WritableSignal<{
|
|
115
|
+
vi: string;
|
|
116
|
+
en: string;
|
|
117
|
+
cn: WritableSignal<Array<string>>;
|
|
118
|
+
jp: WritableSignal<Array<WritableSignal<{
|
|
119
|
+
vi: string;
|
|
120
|
+
en: string;
|
|
121
|
+
}>>>;
|
|
122
|
+
}>;
|
|
123
|
+
};
|
|
124
|
+
}>>>;
|
|
125
|
+
}
|
|
126
|
+
interface IAssignmentItem {
|
|
127
|
+
id: WritableSignal<string>;
|
|
128
|
+
name: WritableSignal<string>;
|
|
129
|
+
description: WritableSignal<string>;
|
|
130
|
+
created_at: WritableSignal<string>;
|
|
131
|
+
updated_at: WritableSignal<string>;
|
|
132
|
+
assignees?: WritableSignal<Array<WritableSignal<IAssignee>>>;
|
|
133
|
+
chatbot_config?: WritableSignal<T_PageBotConfig>;
|
|
134
|
+
}
|
|
135
|
+
export interface IAssignee {
|
|
136
|
+
assignee_id?: WritableSignal<string>;
|
|
137
|
+
conversation_id?: WritableSignal<string>;
|
|
138
|
+
created_time?: WritableSignal<string>;
|
|
139
|
+
created_user?: WritableSignal<string>;
|
|
140
|
+
id?: WritableSignal<string>;
|
|
141
|
+
note?: WritableSignal<string>;
|
|
142
|
+
status?: WritableSignal<number>;
|
|
143
|
+
assign_tag_activity_status?: WritableSignal<number>;
|
|
144
|
+
comment_id?: WritableSignal<string>;
|
|
145
|
+
rating_id?: WritableSignal<string>;
|
|
146
|
+
}
|
|
147
|
+
export interface IAssignmentItemQuery {
|
|
148
|
+
per_page: WritableSignal<number>;
|
|
149
|
+
after_token?: WritableSignal<string>;
|
|
150
|
+
before_token?: WritableSignal<string>;
|
|
151
|
+
search?: WritableSignal<string>;
|
|
152
|
+
search_index?: WritableSignal<number>;
|
|
153
|
+
}
|
|
154
|
+
export {};
|