@apiclient.xyz/gitlab 2.5.0 → 2.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist_ts/gitlab.classes.branch.d.ts +7 -0
- package/dist_ts/gitlab.classes.branch.js +13 -0
- package/dist_ts/gitlab.classes.gitlabclient.d.ts +112 -81
- package/dist_ts/gitlab.classes.gitlabclient.js +236 -156
- package/dist_ts/gitlab.classes.group.d.ts +47 -0
- package/dist_ts/gitlab.classes.group.js +97 -0
- package/dist_ts/gitlab.classes.job.d.ts +29 -0
- package/dist_ts/gitlab.classes.job.js +74 -0
- package/dist_ts/gitlab.classes.pipeline.d.ts +32 -0
- package/dist_ts/gitlab.classes.pipeline.js +87 -0
- package/dist_ts/gitlab.classes.project.d.ts +63 -0
- package/dist_ts/gitlab.classes.project.js +122 -0
- package/dist_ts/gitlab.classes.protectedbranch.d.ts +8 -0
- package/dist_ts/gitlab.classes.protectedbranch.js +15 -0
- package/dist_ts/gitlab.classes.tag.d.ts +7 -0
- package/dist_ts/gitlab.classes.tag.js +13 -0
- package/dist_ts/gitlab.classes.testreport.d.ts +34 -0
- package/dist_ts/gitlab.classes.testreport.js +67 -0
- package/dist_ts/gitlab.classes.variable.d.ts +18 -0
- package/dist_ts/gitlab.classes.variable.js +35 -0
- package/dist_ts/gitlab.helpers.d.ts +8 -0
- package/dist_ts/gitlab.helpers.js +23 -0
- package/dist_ts/index.d.ts +10 -0
- package/dist_ts/index.js +15 -1
- package/package.json +1 -1
- package/readme.md +468 -163
- package/ts/gitlab.classes.branch.ts +18 -0
- package/ts/gitlab.classes.gitlabclient.ts +297 -196
- package/ts/gitlab.classes.group.ts +137 -0
- package/ts/gitlab.classes.job.ts +104 -0
- package/ts/gitlab.classes.pipeline.ts +122 -0
- package/ts/gitlab.classes.project.ts +177 -0
- package/ts/gitlab.classes.protectedbranch.ts +21 -0
- package/ts/gitlab.classes.tag.ts +18 -0
- package/ts/gitlab.classes.testreport.ts +97 -0
- package/ts/gitlab.classes.variable.ts +50 -0
- package/ts/gitlab.helpers.ts +26 -0
- package/ts/index.ts +19 -0
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
import * as plugins from './gitlab.plugins.js';
|
|
2
|
-
import {
|
|
2
|
+
import { GitLabGroup } from './gitlab.classes.group.js';
|
|
3
|
+
import { GitLabProject } from './gitlab.classes.project.js';
|
|
4
|
+
import { GitLabPipeline } from './gitlab.classes.pipeline.js';
|
|
5
|
+
import { autoPaginate } from './gitlab.helpers.js';
|
|
3
6
|
export class GitLabClient {
|
|
4
7
|
constructor(baseUrl, token) {
|
|
5
|
-
// Remove trailing slash if present
|
|
6
8
|
this.baseUrl = baseUrl.replace(/\/+$/, '');
|
|
7
9
|
this.token = token;
|
|
8
10
|
}
|
|
9
|
-
//
|
|
10
|
-
// HTTP helpers
|
|
11
|
-
//
|
|
11
|
+
// ===========================================================================
|
|
12
|
+
// HTTP helpers (internal)
|
|
13
|
+
// ===========================================================================
|
|
14
|
+
/** @internal */
|
|
12
15
|
async request(method, path, data, customHeaders) {
|
|
13
16
|
const url = `${this.baseUrl}${path}`;
|
|
14
17
|
let builder = plugins.smartrequest.SmartRequest.create()
|
|
@@ -49,6 +52,7 @@ export class GitLabClient {
|
|
|
49
52
|
return undefined;
|
|
50
53
|
}
|
|
51
54
|
}
|
|
55
|
+
/** @internal */
|
|
52
56
|
async requestText(method, path) {
|
|
53
57
|
const url = `${this.baseUrl}${path}`;
|
|
54
58
|
let builder = plugins.smartrequest.SmartRequest.create()
|
|
@@ -76,9 +80,40 @@ export class GitLabClient {
|
|
|
76
80
|
}
|
|
77
81
|
return response.text();
|
|
78
82
|
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
83
|
+
/** @internal — multipart form upload (for avatars) */
|
|
84
|
+
async requestMultipart(method, path, formData) {
|
|
85
|
+
const url = `${this.baseUrl}${path}`;
|
|
86
|
+
const response = await fetch(url, {
|
|
87
|
+
method,
|
|
88
|
+
headers: { 'PRIVATE-TOKEN': this.token },
|
|
89
|
+
body: formData,
|
|
90
|
+
});
|
|
91
|
+
if (!response.ok) {
|
|
92
|
+
const errorText = await response.text();
|
|
93
|
+
throw new Error(`${method} ${path}: ${response.status} ${response.statusText} - ${errorText}`);
|
|
94
|
+
}
|
|
95
|
+
try {
|
|
96
|
+
return await response.json();
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
return undefined;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/** @internal — fetch binary data (e.g. avatar images) */
|
|
103
|
+
async requestBinary(url) {
|
|
104
|
+
const fullUrl = url.startsWith('http') ? url : `${this.baseUrl}${url}`;
|
|
105
|
+
const response = await fetch(fullUrl, {
|
|
106
|
+
headers: { 'PRIVATE-TOKEN': this.token },
|
|
107
|
+
});
|
|
108
|
+
if (!response.ok) {
|
|
109
|
+
throw new Error(`GET ${url}: ${response.status} ${response.statusText}`);
|
|
110
|
+
}
|
|
111
|
+
const buf = await response.arrayBuffer();
|
|
112
|
+
return new Uint8Array(buf);
|
|
113
|
+
}
|
|
114
|
+
// ===========================================================================
|
|
115
|
+
// Public API — Connection
|
|
116
|
+
// ===========================================================================
|
|
82
117
|
async testConnection() {
|
|
83
118
|
try {
|
|
84
119
|
await this.request('GET', '/api/v4/user');
|
|
@@ -88,19 +123,72 @@ export class GitLabClient {
|
|
|
88
123
|
return { ok: false, error: err instanceof Error ? err.message : String(err) };
|
|
89
124
|
}
|
|
90
125
|
}
|
|
91
|
-
//
|
|
92
|
-
//
|
|
93
|
-
//
|
|
126
|
+
// ===========================================================================
|
|
127
|
+
// Public API — Groups (returns rich objects)
|
|
128
|
+
// ===========================================================================
|
|
94
129
|
/**
|
|
95
|
-
* Get
|
|
130
|
+
* Get all groups (auto-paginated).
|
|
96
131
|
*/
|
|
97
|
-
async
|
|
98
|
-
return this.
|
|
132
|
+
async getGroups(opts) {
|
|
133
|
+
return autoPaginate((page, perPage) => this.requestGetGroups({ ...opts, page, perPage }), opts).then(groups => groups.map(g => new GitLabGroup(this, g)));
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Get a single group by full path.
|
|
137
|
+
*/
|
|
138
|
+
async getGroup(fullPath) {
|
|
139
|
+
const raw = await this.requestGetGroupByPath(fullPath);
|
|
140
|
+
return new GitLabGroup(this, raw);
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Create a new group.
|
|
144
|
+
*/
|
|
145
|
+
async createGroup(name, path, parentId) {
|
|
146
|
+
const raw = await this.requestCreateGroup(name, path, parentId);
|
|
147
|
+
return new GitLabGroup(this, raw);
|
|
99
148
|
}
|
|
149
|
+
// ===========================================================================
|
|
150
|
+
// Public API — Projects (returns rich objects)
|
|
151
|
+
// ===========================================================================
|
|
100
152
|
/**
|
|
101
|
-
*
|
|
153
|
+
* Get all projects (auto-paginated, membership=true).
|
|
102
154
|
*/
|
|
103
|
-
async
|
|
155
|
+
async getProjects(opts) {
|
|
156
|
+
return autoPaginate((page, perPage) => this.requestGetProjects({ ...opts, page, perPage }), opts).then(projects => projects.map(p => new GitLabProject(this, p)));
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Get a single project by ID or path.
|
|
160
|
+
*/
|
|
161
|
+
async getProject(idOrPath) {
|
|
162
|
+
const raw = await this.requestGetProject(idOrPath);
|
|
163
|
+
return new GitLabProject(this, raw);
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Create a new project.
|
|
167
|
+
*/
|
|
168
|
+
async createProject(name, opts) {
|
|
169
|
+
const raw = await this.requestCreateProject(name, opts);
|
|
170
|
+
return new GitLabProject(this, raw);
|
|
171
|
+
}
|
|
172
|
+
// ===========================================================================
|
|
173
|
+
// Internal request methods — called by domain classes
|
|
174
|
+
// ===========================================================================
|
|
175
|
+
// --- Groups ---
|
|
176
|
+
/** @internal */
|
|
177
|
+
async requestGetGroups(opts) {
|
|
178
|
+
const page = opts?.page || 1;
|
|
179
|
+
const perPage = opts?.perPage || 50;
|
|
180
|
+
let url = `/api/v4/groups?order_by=name&sort=asc&page=${page}&per_page=${perPage}`;
|
|
181
|
+
if (opts?.search) {
|
|
182
|
+
url += `&search=${encodeURIComponent(opts.search)}`;
|
|
183
|
+
}
|
|
184
|
+
return this.request('GET', url);
|
|
185
|
+
}
|
|
186
|
+
/** @internal */
|
|
187
|
+
async requestGetGroupByPath(fullPath) {
|
|
188
|
+
return this.request('GET', `/api/v4/groups/${encodeURIComponent(fullPath)}`);
|
|
189
|
+
}
|
|
190
|
+
/** @internal */
|
|
191
|
+
async requestGetGroupProjects(groupId, opts) {
|
|
104
192
|
const page = opts?.page || 1;
|
|
105
193
|
const perPage = opts?.perPage || 50;
|
|
106
194
|
let url = `/api/v4/groups/${encodeURIComponent(groupId)}/projects?include_subgroups=true&order_by=updated_at&sort=desc&page=${page}&per_page=${perPage}`;
|
|
@@ -109,10 +197,8 @@ export class GitLabClient {
|
|
|
109
197
|
}
|
|
110
198
|
return this.request('GET', url);
|
|
111
199
|
}
|
|
112
|
-
/**
|
|
113
|
-
|
|
114
|
-
*/
|
|
115
|
-
async getDescendantGroups(groupId, opts) {
|
|
200
|
+
/** @internal */
|
|
201
|
+
async requestGetDescendantGroups(groupId, opts) {
|
|
116
202
|
const page = opts?.page || 1;
|
|
117
203
|
const perPage = opts?.perPage || 50;
|
|
118
204
|
let url = `/api/v4/groups/${encodeURIComponent(groupId)}/descendant_groups?order_by=name&sort=asc&page=${page}&per_page=${perPage}`;
|
|
@@ -121,19 +207,51 @@ export class GitLabClient {
|
|
|
121
207
|
}
|
|
122
208
|
return this.request('GET', url);
|
|
123
209
|
}
|
|
124
|
-
/**
|
|
125
|
-
|
|
126
|
-
*/
|
|
127
|
-
async createGroup(name, path, parentId) {
|
|
210
|
+
/** @internal */
|
|
211
|
+
async requestCreateGroup(name, path, parentId) {
|
|
128
212
|
const body = { name, path, visibility: 'private' };
|
|
129
213
|
if (parentId)
|
|
130
214
|
body.parent_id = parentId;
|
|
131
215
|
return this.request('POST', '/api/v4/groups', body);
|
|
132
216
|
}
|
|
133
|
-
/**
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
217
|
+
/** @internal */
|
|
218
|
+
async requestUpdateGroup(groupId, data) {
|
|
219
|
+
await this.request('PUT', `/api/v4/groups/${encodeURIComponent(groupId)}`, data);
|
|
220
|
+
}
|
|
221
|
+
/** @internal */
|
|
222
|
+
async requestSetGroupAvatar(groupId, imageData, filename) {
|
|
223
|
+
const blob = new Blob([imageData.buffer]);
|
|
224
|
+
const formData = new FormData();
|
|
225
|
+
formData.append('avatar', blob, filename);
|
|
226
|
+
await this.requestMultipart('PUT', `/api/v4/groups/${encodeURIComponent(groupId)}`, formData);
|
|
227
|
+
}
|
|
228
|
+
/** @internal */
|
|
229
|
+
async requestTransferGroup(groupId, parentGroupId) {
|
|
230
|
+
await this.request('POST', `/api/v4/groups/${encodeURIComponent(groupId)}/transfer`, {
|
|
231
|
+
group_id: parentGroupId,
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
/** @internal */
|
|
235
|
+
async requestDeleteGroup(groupId) {
|
|
236
|
+
await this.request('DELETE', `/api/v4/groups/${encodeURIComponent(groupId)}`);
|
|
237
|
+
}
|
|
238
|
+
// --- Projects ---
|
|
239
|
+
/** @internal */
|
|
240
|
+
async requestGetProjects(opts) {
|
|
241
|
+
const page = opts?.page || 1;
|
|
242
|
+
const perPage = opts?.perPage || 50;
|
|
243
|
+
let url = `/api/v4/projects?membership=true&order_by=updated_at&sort=desc&page=${page}&per_page=${perPage}`;
|
|
244
|
+
if (opts?.search) {
|
|
245
|
+
url += `&search=${encodeURIComponent(opts.search)}`;
|
|
246
|
+
}
|
|
247
|
+
return this.request('GET', url);
|
|
248
|
+
}
|
|
249
|
+
/** @internal */
|
|
250
|
+
async requestGetProject(idOrPath) {
|
|
251
|
+
return this.request('GET', `/api/v4/projects/${encodeURIComponent(idOrPath)}`);
|
|
252
|
+
}
|
|
253
|
+
/** @internal */
|
|
254
|
+
async requestCreateProject(name, opts) {
|
|
137
255
|
return this.request('POST', '/api/v4/projects', {
|
|
138
256
|
name,
|
|
139
257
|
path: opts?.path || name,
|
|
@@ -142,37 +260,56 @@ export class GitLabClient {
|
|
|
142
260
|
description: opts?.description || '',
|
|
143
261
|
});
|
|
144
262
|
}
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
263
|
+
/** @internal */
|
|
264
|
+
async requestUpdateProject(projectId, data) {
|
|
265
|
+
await this.request('PUT', `/api/v4/projects/${encodeURIComponent(projectId)}`, data);
|
|
266
|
+
}
|
|
267
|
+
/** @internal */
|
|
268
|
+
async requestSetProjectAvatar(projectId, imageData, filename) {
|
|
269
|
+
const blob = new Blob([imageData.buffer]);
|
|
270
|
+
const formData = new FormData();
|
|
271
|
+
formData.append('avatar', blob, filename);
|
|
272
|
+
await this.requestMultipart('PUT', `/api/v4/projects/${encodeURIComponent(projectId)}`, formData);
|
|
273
|
+
}
|
|
274
|
+
/** @internal */
|
|
275
|
+
async requestTransferProject(projectId, namespaceId) {
|
|
276
|
+
await this.request('PUT', `/api/v4/projects/${encodeURIComponent(projectId)}/transfer`, {
|
|
277
|
+
namespace: namespaceId,
|
|
278
|
+
});
|
|
279
|
+
}
|
|
280
|
+
/** @internal */
|
|
281
|
+
async requestDeleteProject(projectId) {
|
|
282
|
+
await this.request('DELETE', `/api/v4/projects/${encodeURIComponent(projectId)}`);
|
|
283
|
+
}
|
|
284
|
+
// --- Repo Branches & Tags ---
|
|
285
|
+
/** @internal */
|
|
286
|
+
async requestGetRepoBranches(projectId, opts) {
|
|
149
287
|
const page = opts?.page || 1;
|
|
150
288
|
const perPage = opts?.perPage || 50;
|
|
151
|
-
|
|
152
|
-
if (opts?.search) {
|
|
153
|
-
url += `&search=${encodeURIComponent(opts.search)}`;
|
|
154
|
-
}
|
|
155
|
-
return this.request('GET', url);
|
|
289
|
+
return this.request('GET', `/api/v4/projects/${encodeURIComponent(projectId)}/repository/branches?page=${page}&per_page=${perPage}`);
|
|
156
290
|
}
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
// ---------------------------------------------------------------------------
|
|
160
|
-
async getGroups(opts) {
|
|
291
|
+
/** @internal */
|
|
292
|
+
async requestGetRepoTags(projectId, opts) {
|
|
161
293
|
const page = opts?.page || 1;
|
|
162
294
|
const perPage = opts?.perPage || 50;
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
295
|
+
return this.request('GET', `/api/v4/projects/${encodeURIComponent(projectId)}/repository/tags?page=${page}&per_page=${perPage}`);
|
|
296
|
+
}
|
|
297
|
+
// --- Protected Branches ---
|
|
298
|
+
/** @internal */
|
|
299
|
+
async requestGetProtectedBranches(projectId) {
|
|
300
|
+
return this.request('GET', `/api/v4/projects/${encodeURIComponent(projectId)}/protected_branches`);
|
|
301
|
+
}
|
|
302
|
+
/** @internal */
|
|
303
|
+
async requestUnprotectBranch(projectId, branchName) {
|
|
304
|
+
await this.request('DELETE', `/api/v4/projects/${encodeURIComponent(projectId)}/protected_branches/${encodeURIComponent(branchName)}`);
|
|
168
305
|
}
|
|
169
|
-
//
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
async getProjectVariables(projectId) {
|
|
306
|
+
// --- Project Variables ---
|
|
307
|
+
/** @internal */
|
|
308
|
+
async requestGetProjectVariables(projectId) {
|
|
173
309
|
return this.request('GET', `/api/v4/projects/${encodeURIComponent(projectId)}/variables`);
|
|
174
310
|
}
|
|
175
|
-
|
|
311
|
+
/** @internal */
|
|
312
|
+
async requestCreateProjectVariable(projectId, key, value, opts) {
|
|
176
313
|
return this.request('POST', `/api/v4/projects/${encodeURIComponent(projectId)}/variables`, {
|
|
177
314
|
key,
|
|
178
315
|
value,
|
|
@@ -181,7 +318,8 @@ export class GitLabClient {
|
|
|
181
318
|
environment_scope: opts?.environment_scope ?? '*',
|
|
182
319
|
});
|
|
183
320
|
}
|
|
184
|
-
|
|
321
|
+
/** @internal */
|
|
322
|
+
async requestUpdateProjectVariable(projectId, key, value, opts) {
|
|
185
323
|
const body = { value };
|
|
186
324
|
if (opts?.protected !== undefined)
|
|
187
325
|
body.protected = opts.protected;
|
|
@@ -191,16 +329,17 @@ export class GitLabClient {
|
|
|
191
329
|
body.environment_scope = opts.environment_scope;
|
|
192
330
|
return this.request('PUT', `/api/v4/projects/${encodeURIComponent(projectId)}/variables/${encodeURIComponent(key)}`, body);
|
|
193
331
|
}
|
|
194
|
-
|
|
332
|
+
/** @internal */
|
|
333
|
+
async requestDeleteProjectVariable(projectId, key) {
|
|
195
334
|
await this.request('DELETE', `/api/v4/projects/${encodeURIComponent(projectId)}/variables/${encodeURIComponent(key)}`);
|
|
196
335
|
}
|
|
197
|
-
//
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
async getGroupVariables(groupId) {
|
|
336
|
+
// --- Group Variables ---
|
|
337
|
+
/** @internal */
|
|
338
|
+
async requestGetGroupVariables(groupId) {
|
|
201
339
|
return this.request('GET', `/api/v4/groups/${encodeURIComponent(groupId)}/variables`);
|
|
202
340
|
}
|
|
203
|
-
|
|
341
|
+
/** @internal */
|
|
342
|
+
async requestCreateGroupVariable(groupId, key, value, opts) {
|
|
204
343
|
return this.request('POST', `/api/v4/groups/${encodeURIComponent(groupId)}/variables`, {
|
|
205
344
|
key,
|
|
206
345
|
value,
|
|
@@ -209,7 +348,8 @@ export class GitLabClient {
|
|
|
209
348
|
environment_scope: opts?.environment_scope ?? '*',
|
|
210
349
|
});
|
|
211
350
|
}
|
|
212
|
-
|
|
351
|
+
/** @internal */
|
|
352
|
+
async requestUpdateGroupVariable(groupId, key, value, opts) {
|
|
213
353
|
const body = { value };
|
|
214
354
|
if (opts?.protected !== undefined)
|
|
215
355
|
body.protected = opts.protected;
|
|
@@ -219,17 +359,13 @@ export class GitLabClient {
|
|
|
219
359
|
body.environment_scope = opts.environment_scope;
|
|
220
360
|
return this.request('PUT', `/api/v4/groups/${encodeURIComponent(groupId)}/variables/${encodeURIComponent(key)}`, body);
|
|
221
361
|
}
|
|
222
|
-
|
|
362
|
+
/** @internal */
|
|
363
|
+
async requestDeleteGroupVariable(groupId, key) {
|
|
223
364
|
await this.request('DELETE', `/api/v4/groups/${encodeURIComponent(groupId)}/variables/${encodeURIComponent(key)}`);
|
|
224
365
|
}
|
|
225
|
-
//
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
/**
|
|
229
|
-
* List pipelines for a project with optional filters.
|
|
230
|
-
* Supports status, ref, source, scope, username, date range, ordering.
|
|
231
|
-
*/
|
|
232
|
-
async getPipelines(projectId, opts) {
|
|
366
|
+
// --- Pipelines ---
|
|
367
|
+
/** @internal */
|
|
368
|
+
async requestGetPipelines(projectId, opts) {
|
|
233
369
|
const page = opts?.page || 1;
|
|
234
370
|
const perPage = opts?.perPage || 30;
|
|
235
371
|
const orderBy = opts?.orderBy || 'updated_at';
|
|
@@ -251,53 +387,41 @@ export class GitLabClient {
|
|
|
251
387
|
url += `&updated_before=${encodeURIComponent(opts.updatedBefore)}`;
|
|
252
388
|
return this.request('GET', url);
|
|
253
389
|
}
|
|
254
|
-
/**
|
|
255
|
-
|
|
256
|
-
*/
|
|
257
|
-
async getPipeline(projectId, pipelineId) {
|
|
390
|
+
/** @internal */
|
|
391
|
+
async requestGetPipeline(projectId, pipelineId) {
|
|
258
392
|
return this.request('GET', `/api/v4/projects/${encodeURIComponent(projectId)}/pipelines/${pipelineId}`);
|
|
259
393
|
}
|
|
260
|
-
/**
|
|
261
|
-
|
|
262
|
-
*/
|
|
263
|
-
async triggerPipeline(projectId, ref, variables) {
|
|
394
|
+
/** @internal */
|
|
395
|
+
async requestTriggerPipeline(projectId, ref, variables) {
|
|
264
396
|
const body = { ref };
|
|
265
397
|
if (variables && variables.length > 0) {
|
|
266
398
|
body.variables = variables;
|
|
267
399
|
}
|
|
268
400
|
return this.request('POST', `/api/v4/projects/${encodeURIComponent(projectId)}/pipeline`, body);
|
|
269
401
|
}
|
|
270
|
-
/**
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
402
|
+
/** @internal */
|
|
403
|
+
async requestRetryPipeline(projectId, pipelineId) {
|
|
404
|
+
return this.request('POST', `/api/v4/projects/${encodeURIComponent(projectId)}/pipelines/${pipelineId}/retry`);
|
|
405
|
+
}
|
|
406
|
+
/** @internal */
|
|
407
|
+
async requestCancelPipeline(projectId, pipelineId) {
|
|
408
|
+
return this.request('POST', `/api/v4/projects/${encodeURIComponent(projectId)}/pipelines/${pipelineId}/cancel`);
|
|
409
|
+
}
|
|
410
|
+
/** @internal */
|
|
411
|
+
async requestDeletePipeline(projectId, pipelineId) {
|
|
274
412
|
await this.request('DELETE', `/api/v4/projects/${encodeURIComponent(projectId)}/pipelines/${pipelineId}`);
|
|
275
413
|
}
|
|
276
|
-
/**
|
|
277
|
-
|
|
278
|
-
*/
|
|
279
|
-
async getPipelineVariables(projectId, pipelineId) {
|
|
414
|
+
/** @internal */
|
|
415
|
+
async requestGetPipelineVariables(projectId, pipelineId) {
|
|
280
416
|
return this.request('GET', `/api/v4/projects/${encodeURIComponent(projectId)}/pipelines/${pipelineId}/variables`);
|
|
281
417
|
}
|
|
282
|
-
/**
|
|
283
|
-
|
|
284
|
-
*/
|
|
285
|
-
async getPipelineTestReport(projectId, pipelineId) {
|
|
418
|
+
/** @internal */
|
|
419
|
+
async requestGetPipelineTestReport(projectId, pipelineId) {
|
|
286
420
|
return this.request('GET', `/api/v4/projects/${encodeURIComponent(projectId)}/pipelines/${pipelineId}/test_report`);
|
|
287
421
|
}
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
async cancelPipeline(projectId, pipelineId) {
|
|
292
|
-
return this.request('POST', `/api/v4/projects/${encodeURIComponent(projectId)}/pipelines/${pipelineId}/cancel`);
|
|
293
|
-
}
|
|
294
|
-
// ---------------------------------------------------------------------------
|
|
295
|
-
// Jobs
|
|
296
|
-
// ---------------------------------------------------------------------------
|
|
297
|
-
/**
|
|
298
|
-
* List jobs for a pipeline with optional scope filter and pagination.
|
|
299
|
-
*/
|
|
300
|
-
async getPipelineJobs(projectId, pipelineId, opts) {
|
|
422
|
+
// --- Jobs ---
|
|
423
|
+
/** @internal */
|
|
424
|
+
async requestGetPipelineJobs(projectId, pipelineId, opts) {
|
|
301
425
|
const page = opts?.page || 1;
|
|
302
426
|
const perPage = opts?.perPage || 100;
|
|
303
427
|
let url = `/api/v4/projects/${encodeURIComponent(projectId)}/pipelines/${pipelineId}/jobs?page=${page}&per_page=${perPage}`;
|
|
@@ -308,69 +432,25 @@ export class GitLabClient {
|
|
|
308
432
|
}
|
|
309
433
|
return this.request('GET', url);
|
|
310
434
|
}
|
|
311
|
-
/**
|
|
312
|
-
|
|
313
|
-
*/
|
|
314
|
-
async getJob(projectId, jobId) {
|
|
315
|
-
return this.request('GET', `/api/v4/projects/${encodeURIComponent(projectId)}/jobs/${jobId}`);
|
|
316
|
-
}
|
|
317
|
-
/**
|
|
318
|
-
* Get a job's raw log (trace) output.
|
|
319
|
-
*/
|
|
320
|
-
async getJobLog(projectId, jobId) {
|
|
435
|
+
/** @internal */
|
|
436
|
+
async requestGetJobLog(projectId, jobId) {
|
|
321
437
|
return this.requestText('GET', `/api/v4/projects/${encodeURIComponent(projectId)}/jobs/${jobId}/trace`);
|
|
322
438
|
}
|
|
323
|
-
/**
|
|
324
|
-
|
|
325
|
-
*/
|
|
326
|
-
async retryJob(projectId, jobId) {
|
|
439
|
+
/** @internal */
|
|
440
|
+
async requestRetryJob(projectId, jobId) {
|
|
327
441
|
return this.request('POST', `/api/v4/projects/${encodeURIComponent(projectId)}/jobs/${jobId}/retry`);
|
|
328
442
|
}
|
|
329
|
-
/**
|
|
330
|
-
|
|
331
|
-
*/
|
|
332
|
-
async cancelJob(projectId, jobId) {
|
|
443
|
+
/** @internal */
|
|
444
|
+
async requestCancelJob(projectId, jobId) {
|
|
333
445
|
return this.request('POST', `/api/v4/projects/${encodeURIComponent(projectId)}/jobs/${jobId}/cancel`);
|
|
334
446
|
}
|
|
335
|
-
/**
|
|
336
|
-
|
|
337
|
-
*/
|
|
338
|
-
async playJob(projectId, jobId) {
|
|
447
|
+
/** @internal */
|
|
448
|
+
async requestPlayJob(projectId, jobId) {
|
|
339
449
|
return this.request('POST', `/api/v4/projects/${encodeURIComponent(projectId)}/jobs/${jobId}/play`);
|
|
340
450
|
}
|
|
341
|
-
/**
|
|
342
|
-
|
|
343
|
-
*/
|
|
344
|
-
async eraseJob(projectId, jobId) {
|
|
451
|
+
/** @internal */
|
|
452
|
+
async requestEraseJob(projectId, jobId) {
|
|
345
453
|
await this.request('POST', `/api/v4/projects/${encodeURIComponent(projectId)}/jobs/${jobId}/erase`);
|
|
346
454
|
}
|
|
347
|
-
// ---------------------------------------------------------------------------
|
|
348
|
-
// Repository Branches & Tags
|
|
349
|
-
// ---------------------------------------------------------------------------
|
|
350
|
-
async getRepoBranches(projectId, opts) {
|
|
351
|
-
const page = opts?.page || 1;
|
|
352
|
-
const perPage = opts?.perPage || 50;
|
|
353
|
-
return this.request('GET', `/api/v4/projects/${encodeURIComponent(projectId)}/repository/branches?page=${page}&per_page=${perPage}`);
|
|
354
|
-
}
|
|
355
|
-
async getRepoTags(projectId, opts) {
|
|
356
|
-
const page = opts?.page || 1;
|
|
357
|
-
const perPage = opts?.perPage || 50;
|
|
358
|
-
return this.request('GET', `/api/v4/projects/${encodeURIComponent(projectId)}/repository/tags?page=${page}&per_page=${perPage}`);
|
|
359
|
-
}
|
|
360
|
-
// ---------------------------------------------------------------------------
|
|
361
|
-
// Protected Branches
|
|
362
|
-
// ---------------------------------------------------------------------------
|
|
363
|
-
async getProtectedBranches(projectId) {
|
|
364
|
-
return this.request('GET', `/api/v4/projects/${encodeURIComponent(projectId)}/protected_branches`);
|
|
365
|
-
}
|
|
366
|
-
async unprotectBranch(projectId, branchName) {
|
|
367
|
-
await this.request('DELETE', `/api/v4/projects/${encodeURIComponent(projectId)}/protected_branches/${encodeURIComponent(branchName)}`);
|
|
368
|
-
}
|
|
369
|
-
// ---------------------------------------------------------------------------
|
|
370
|
-
// Project Deletion
|
|
371
|
-
// ---------------------------------------------------------------------------
|
|
372
|
-
async deleteProject(projectId) {
|
|
373
|
-
await this.request('DELETE', `/api/v4/projects/${encodeURIComponent(projectId)}`);
|
|
374
|
-
}
|
|
375
455
|
}
|
|
376
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0bGFiLmNsYXNzZXMuZ2l0bGFiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvZ2l0bGFiLmNsYXNzZXMuZ2l0bGFiY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0scUJBQXFCLENBQUM7QUFDL0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBb0I3QyxNQUFNLE9BQU8sWUFBWTtJQUl2QixZQUFZLE9BQWUsRUFBRSxLQUFhO1FBQ3hDLG1DQUFtQztRQUNuQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLENBQUM7SUFFRCw4RUFBOEU7SUFDOUUsZUFBZTtJQUNmLDhFQUE4RTtJQUV0RSxLQUFLLENBQUMsT0FBTyxDQUNuQixNQUF5QyxFQUN6QyxJQUFZLEVBQ1osSUFBVSxFQUNWLGFBQXNDO1FBRXRDLE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLEVBQUUsQ0FBQztRQUVyQyxJQUFJLE9BQU8sR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUU7YUFDckQsR0FBRyxDQUFDLEdBQUcsQ0FBQzthQUNSLE1BQU0sQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQzthQUNuQyxNQUFNLENBQUMsY0FBYyxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFFOUMsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNsQixLQUFLLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO2dCQUNuRCxPQUFPLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FB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
|
|
456
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0bGFiLmNsYXNzZXMuZ2l0bGFiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvZ2l0bGFiLmNsYXNzZXMuZ2l0bGFiY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0scUJBQXFCLENBQUM7QUFtQi9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVuRCxNQUFNLE9BQU8sWUFBWTtJQUl2QixZQUFZLE9BQWUsRUFBRSxLQUFhO1FBQ3hDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVELDhFQUE4RTtJQUM5RSwwQkFBMEI7SUFDMUIsOEVBQThFO0lBRTlFLGdCQUFnQjtJQUNoQixLQUFLLENBQUMsT0FBTyxDQUNYLE1BQXlDLEVBQ3pDLElBQVksRUFDWixJQUFVLEVBQ1YsYUFBc0M7UUFFdEMsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksRUFBRSxDQUFDO1FBRXJDLElBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRTthQUNyRCxHQUFHLENBQUMsR0FBRyxDQUFDO2FBQ1IsTUFBTSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDO2FBQ25DLE1BQU0sQ0FBQyxjQUFjLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztRQUU5QyxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ2xCLEtBQUssTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7Z0JBQ25ELE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNqQyxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksSUFBSSxFQUFFLENBQUM7WUFDVCxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQixDQUFDO1FBRUQsSUFBSSxRQUFpRCxDQUFDO1FBQ3RELFFBQVEsTUFBTSxFQUFFLENBQUM7WUFDZixLQUFLLEtBQUs7Z0JBQ1IsUUFBUSxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUMvQixNQUFNO1lBQ1IsS0FBSyxNQUFNO2dCQUNULFFBQVEsR0FBRyxNQUFNLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDaEMsTUFBTTtZQUNSLEtBQUssS0FBSztnQkFDUixRQUFRLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQy9CLE1BQU07WUFDUixLQUFLLFFBQVE7Z0JBQ1gsUUFBUSxHQUFHLE1BQU0sT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNsQyxNQUFNO1FBQ1YsQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDakIsTUFBTSxTQUFTLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDeEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLE1BQU0sSUFBSSxJQUFJLEtBQUssUUFBUSxDQUFDLE1BQU0sSUFBSSxRQUFRLENBQUMsVUFBVSxNQUFNLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDakcsQ0FBQztRQUVELElBQUksQ0FBQztZQUNILE9BQU8sTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFPLENBQUM7UUFDcEMsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLE9BQU8sU0FBeUIsQ0FBQztRQUNuQyxDQUFDO0lBQ0gsQ0FBQztJQUVELGdCQUFnQjtJQUNoQixLQUFLLENBQUMsV0FBVyxDQUNmLE1BQXlDLEVBQ3pDLElBQVk7UUFFWixNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxFQUFFLENBQUM7UUFFckMsSUFBSSxPQUFPLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFO2FBQ3JELEdBQUcsQ0FBQyxHQUFHLENBQUM7YUFDUixNQUFNLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUM7YUFDbkMsTUFBTSxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUVsQyxJQUFJLFFBQWlELENBQUM7UUFDdEQsUUFBUSxNQUFNLEVBQUUsQ0FBQztZQUNmLEtBQUssS0FBSztnQkFDUixRQUFRLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQy9CLE1BQU07WUFDUixLQUFLLE1BQU07Z0JBQ1QsUUFBUSxHQUFHLE1BQU0sT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNoQyxNQUFNO1lBQ1IsS0FBSyxLQUFLO2dCQUNSLFFBQVEsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDL0IsTUFBTTtZQUNSLEtBQUssUUFBUTtnQkFDWCxRQUFRLEdBQUcsTUFBTSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2xDLE1BQU07UUFDVixDQUFDO1FBRUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNqQixNQUFNLFNBQVMsR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN4QyxNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsTUFBTSxJQUFJLElBQUksS0FBSyxRQUFRLENBQUMsTUFBTSxJQUFJLFFBQVEsQ0FBQyxVQUFVLE1BQU0sU0FBUyxFQUFFLENBQUMsQ0FBQztRQUNqRyxDQUFDO1FBRUQsT0FBTyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELHNEQUFzRDtJQUN0RCxLQUFLLENBQUMsZ0JBQWdCLENBQ3BCLE1BQXNCLEVBQ3RCLElBQVksRUFDWixRQUFrQjtRQUVsQixNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxFQUFFLENBQUM7UUFDckMsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBRyxFQUFFO1lBQ2hDLE1BQU07WUFDTixPQUFPLEVBQUUsRUFBRSxlQUFlLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUN4QyxJQUFJLEVBQUUsUUFBUTtTQUNmLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDakIsTUFBTSxTQUFTLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDeEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLE1BQU0sSUFBSSxJQUFJLEtBQUssUUFBUSxDQUFDLE1BQU0sSUFBSSxRQUFRLENBQUMsVUFBVSxNQUFNLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDakcsQ0FBQztRQUNELElBQUksQ0FBQztZQUNILE9BQU8sTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFPLENBQUM7UUFDcEMsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLE9BQU8sU0FBeUIsQ0FBQztRQUNuQyxDQUFDO0lBQ0gsQ0FBQztJQUVELHlEQUF5RDtJQUN6RCxLQUFLLENBQUMsYUFBYSxDQUFDLEdBQVc7UUFDN0IsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFDdkUsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsT0FBTyxFQUFFO1lBQ3BDLE9BQU8sRUFBRSxFQUFFLGVBQWUsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFO1NBQ3pDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLEdBQUcsS0FBSyxRQUFRLENBQUMsTUFBTSxJQUFJLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQzNFLENBQUM7UUFDRCxNQUFNLEdBQUcsR0FBRyxNQUFNLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN6QyxPQUFPLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCw4RUFBOEU7SUFDOUUsMEJBQTBCO0lBQzFCLDhFQUE4RTtJQUV2RSxLQUFLLENBQUMsY0FBYztRQUN6QixJQUFJLENBQUM7WUFDSCxNQUFNLElBQUksQ0FBQyxPQUFPLENBQWMsS0FBSyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1lBQ3ZELE9BQU8sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDdEIsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDaEYsQ0FBQztJQUNILENBQUM7SUFFRCw4RUFBOEU7SUFDOUUsNkNBQTZDO0lBQzdDLDhFQUE4RTtJQUU5RTs7T0FFRztJQUNJLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBbUI7UUFDeEMsT0FBTyxZQUFZLENBQ2pCLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQ3BFLElBQUksQ0FDTCxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBZ0I7UUFDcEMsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkQsT0FBTyxJQUFJLFdBQVcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFZLEVBQUUsSUFBWSxFQUFFLFFBQWlCO1FBQ3BFLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDaEUsT0FBTyxJQUFJLFdBQVcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELDhFQUE4RTtJQUM5RSwrQ0FBK0M7SUFDL0MsOEVBQThFO0lBRTlFOztPQUVHO0lBQ0ksS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFtQjtRQUMxQyxPQUFPLFlBQVksQ0FDakIsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRSxHQUFHLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFDdEUsSUFBSSxDQUNMLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUF5QjtRQUMvQyxNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNuRCxPQUFPLElBQUksYUFBYSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsYUFBYSxDQUFDLElBQVksRUFBRSxJQUt4QztRQUNDLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN4RCxPQUFPLElBQUksYUFBYSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsOEVBQThFO0lBQzlFLHNEQUFzRDtJQUN0RCw4RUFBOEU7SUFFOUUsaUJBQWlCO0lBRWpCLGdCQUFnQjtJQUNoQixLQUFLLENBQUMsZ0JBQWdCLENBQUMsSUFBbUI7UUFDeEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLENBQUM7UUFDN0IsTUFBTSxPQUFPLEdBQUcsSUFBSSxFQUFFLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFDcEMsSUFBSSxHQUFHLEdBQUcsOENBQThDLElBQUksYUFBYSxPQUFPLEVBQUUsQ0FBQztRQUNuRixJQUFJLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUNqQixHQUFHLElBQUksV0FBVyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUN0RCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFpQixLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELGdCQUFnQjtJQUNoQixLQUFLLENBQUMscUJBQXFCLENBQUMsUUFBZ0I7UUFDMUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFlLEtBQUssRUFBRSxrQkFBa0Isa0JBQWtCLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdGLENBQUM7SUFFRCxnQkFBZ0I7SUFDaEIsS0FBSyxDQUFDLHVCQUF1QixDQUFDLE9BQXdCLEVBQUUsSUFBbUI7UUFDekUsTUFBTSxJQUFJLEdBQUcsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLENBQUM7UUFDN0IsTUFBTSxPQUFPLEdBQUcsSUFBSSxFQUFFLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFDcEMsSUFBSSxHQUFHLEdBQUcsa0JBQWtCLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyx1RUFBdUUsSUFBSSxhQUFhLE9BQU8sRUFBRSxDQUFDO1FBQ3pKLElBQUksSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQ2pCLEdBQUcsSUFBSSxXQUFXLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQ3RELENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQW1CLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsZ0JBQWdCO0lBQ2hCLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxPQUF3QixFQUFFLElBQW1CO1FBQzVFLE1BQU0sSUFBSSxHQUFHLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxDQUFDO1FBQzdCLE1BQU0sT0FBTyxHQUFHLElBQUksRUFBRSxPQUFPLElBQUksRUFBRSxDQUFDO1FBQ3BDLElBQUksR0FBRyxHQUFHLGtCQUFrQixrQkFBa0IsQ0FBQyxPQUFPLENBQUMsa0RBQWtELElBQUksYUFBYSxPQUFPLEVBQUUsQ0FBQztRQUNwSSxJQUFJLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUNqQixHQUFHLElBQUksV0FBVyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUN0RCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFpQixLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELGdCQUFnQjtJQUNoQixLQUFLLENBQUMsa0JBQWtCLENBQUMsSUFBWSxFQUFFLElBQVksRUFBRSxRQUFpQjtRQUNwRSxNQUFNLElBQUksR0FBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxDQUFDO1FBQ3hELElBQUksUUFBUTtZQUFFLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBZSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELGdCQUFnQjtJQUNoQixLQUFLLENBQUMsa0JBQWtCLENBQUMsT0FBd0IsRUFBRSxJQUF5QjtRQUMxRSxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLGtCQUFrQixrQkFBa0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFFRCxnQkFBZ0I7SUFDaEIsS0FBSyxDQUFDLHFCQUFxQixDQUFDLE9BQXdCLEVBQUUsU0FBcUIsRUFBRSxRQUFnQjtRQUMzRixNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFxQixDQUFDLENBQUMsQ0FBQztRQUN6RCxNQUFNLFFBQVEsR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQ2hDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMxQyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsa0JBQWtCLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDaEcsQ0FBQztJQUVELGdCQUFnQjtJQUNoQixLQUFLLENBQUMsb0JBQW9CLENBQUMsT0FBd0IsRUFBRSxhQUFxQjtRQUN4RSxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLGtCQUFrQixrQkFBa0IsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFO1lBQ25GLFFBQVEsRUFBRSxhQUFhO1NBQ3hCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxnQkFBZ0I7SUFDaEIsS0FBSyxDQUFDLGtCQUFrQixDQUFDLE9BQXdCO1FBQy9DLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsa0JBQWtCLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRUQsbUJBQW1CO0lBRW5CLGdCQUFnQjtJQUNoQixLQUFLLENBQUMsa0JBQWtCLENBQUMsSUFBbUI7UUFDMUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLENBQUM7UUFDN0IsTUFBTSxPQUFPLEdBQUcsSUFBSSxFQUFFLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFDcEMsSUFBSSxHQUFHLEdBQUcsdUVBQXVFLElBQUksYUFBYSxPQUFPLEVBQUUsQ0FBQztRQUM1RyxJQUFJLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUNqQixHQUFHLElBQUksV0FBVyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUN0RCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFtQixLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELGdCQUFnQjtJQUNoQixLQUFLLENBQUMsaUJBQWlCLENBQUMsUUFBeUI7UUFDL0MsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFpQixLQUFLLEVBQUUsb0JBQW9CLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqRyxDQUFDO0lBRUQsZ0JBQWdCO0lBQ2hCLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxJQUFZLEVBQUUsSUFLeEM7UUFDQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQWlCLE1BQU0sRUFBRSxrQkFBa0IsRUFBRTtZQUM5RCxJQUFJO1lBQ0osSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLElBQUksSUFBSTtZQUN4QixZQUFZLEVBQUUsSUFBSSxFQUFFLFdBQVc7WUFDL0IsVUFBVSxFQUFFLElBQUksRUFBRSxVQUFVLElBQUksU0FBUztZQUN6QyxXQUFXLEVBQUUsSUFBSSxFQUFFLFdBQVcsSUFBSSxFQUFFO1NBQ3JDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxnQkFBZ0I7SUFDaEIsS0FBSyxDQUFDLG9CQUFvQixDQUFDLFNBQTBCLEVBQUUsSUFBeUI7UUFDOUUsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxvQkFBb0Isa0JBQWtCLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRUQsZ0JBQWdCO0lBQ2hCLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxTQUEwQixFQUFFLFNBQXFCLEVBQUUsUUFBZ0I7UUFDL0YsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBcUIsQ0FBQyxDQUFDLENBQUM7UUFDekQsTUFBTSxRQUFRLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUNoQyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDMUMsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLG9CQUFvQixrQkFBa0IsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3BHLENBQUM7SUFFRCxnQkFBZ0I7SUFDaEIsS0FBSyxDQUFDLHNCQUFzQixDQUFDLFNBQTBCLEVBQUUsV0FBbUI7UUFDMUUsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxvQkFBb0Isa0JBQWtCLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRTtZQUN0RixTQUFTLEVBQUUsV0FBVztTQUN2QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsZ0JBQWdCO0lBQ2hCLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxTQUEwQjtRQUNuRCxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLG9CQUFvQixrQkFBa0IsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVELCtCQUErQjtJQUUvQixnQkFBZ0I7SUFDaEIsS0FBSyxDQUFDLHNCQUFzQixDQUFDLFNBQTBCLEVBQUUsSUFBbUI7UUFDMUUsTUFBTSxJQUFJLEdBQUcsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLENBQUM7UUFDN0IsTUFBTSxPQUFPLEdBQUcsSUFBSSxFQUFFLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFDcEMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUNqQixLQUFLLEVBQ0wsb0JBQW9CLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyw2QkFBNkIsSUFBSSxhQUFhLE9BQU8sRUFBRSxDQUN6RyxDQUFDO0lBQ0osQ0FBQztJQUVELGdCQUFnQjtJQUNoQixLQUFLLENBQUMsa0JBQWtCLENBQUMsU0FBMEIsRUFBRSxJQUFtQjtRQUN0RSxNQUFNLElBQUksR0FBRyxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsQ0FBQztRQUM3QixNQUFNLE9BQU8sR0FBRyxJQUFJLEVBQUUsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUNwQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQ2pCLEtBQUssRUFDTCxvQkFBb0Isa0JBQWtCLENBQUMsU0FBUyxDQUFDLHlCQUF5QixJQUFJLGFBQWEsT0FBTyxFQUFFLENBQ3JHLENBQUM7SUFDSixDQUFDO0lBRUQsNkJBQTZCO0lBRTdCLGdCQUFnQjtJQUNoQixLQUFLLENBQUMsMkJBQTJCLENBQUMsU0FBMEI7UUFDMUQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUNqQixLQUFLLEVBQ0wsb0JBQW9CLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxxQkFBcUIsQ0FDdkUsQ0FBQztJQUNKLENBQUM7SUFFRCxnQkFBZ0I7SUFDaEIsS0FBSyxDQUFDLHNCQUFzQixDQUFDLFNBQTBCLEVBQUUsVUFBa0I7UUFDekUsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUNoQixRQUFRLEVBQ1Isb0JBQW9CLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyx1QkFBdUIsa0JBQWtCLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FDekcsQ0FBQztJQUNKLENBQUM7SUFFRCw0QkFBNEI7SUFFNUIsZ0JBQWdCO0lBQ2hCLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxTQUEwQjtRQUN6RCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQ2pCLEtBQUssRUFDTCxvQkFBb0Isa0JBQWtCLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FDOUQsQ0FBQztJQUNKLENBQUM7SUFFRCxnQkFBZ0I7SUFDaEIsS0FBSyxDQUFDLDRCQUE0QixDQUNoQyxTQUEwQixFQUMxQixHQUFXLEVBQ1gsS0FBYSxFQUNiLElBQXVCO1FBRXZCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FDakIsTUFBTSxFQUNOLG9CQUFvQixrQkFBa0IsQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUM3RDtZQUNFLEdBQUc7WUFDSCxLQUFLO1lBQ0wsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLElBQUksS0FBSztZQUNuQyxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sSUFBSSxLQUFLO1lBQzdCLGlCQUFpQixFQUFFLElBQUksRUFBRSxpQkFBaUIsSUFBSSxHQUFHO1NBQ2xELENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxnQkFBZ0I7SUFDaEIsS0FBSyxDQUFDLDRCQUE0QixDQUNoQyxTQUEwQixFQUMxQixHQUFXLEVBQ1gsS0FBYSxFQUNiLElBQXVCO1FBRXZCLE1BQU0sSUFBSSxHQUFRLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDNUIsSUFBSSxJQUFJLEVBQUUsU0FBUyxLQUFLLFNBQVM7WUFBRSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDbkUsSUFBSSxJQUFJLEVBQUUsTUFBTSxLQUFLLFNBQVM7WUFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDMUQsSUFBSSxJQUFJLEVBQUUsaUJBQWlCLEtBQUssU0FBUztZQUFFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUM7UUFDM0YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUNqQixLQUFLLEVBQ0wsb0JBQW9CLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxjQUFjLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQ3hGLElBQUksQ0FDTCxDQUFDO0lBQ0osQ0FBQztJQUVELGdCQUFnQjtJQUNoQixLQUFLLENBQUMsNEJBQTRCLENBQUMsU0FBMEIsRUFBRSxHQUFXO1FBQ3hFLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FDaEIsUUFBUSxFQUNSLG9CQUFvQixrQkFBa0IsQ0FBQyxTQUFTLENBQUMsY0FBYyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUN6RixDQUFDO0lBQ0osQ0FBQztJQUVELDBCQUEwQjtJQUUxQixnQkFBZ0I7SUFDaEIsS0FBSyxDQUFDLHdCQUF3QixDQUFDLE9BQXdCO1FBQ3JELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FDakIsS0FBSyxFQUNMLGtCQUFrQixrQkFBa0IsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUMxRCxDQUFDO0lBQ0osQ0FBQztJQUVELGdCQUFnQjtJQUNoQixLQUFLLENBQUMsMEJBQTBCLENBQzlCLE9BQXdCLEVBQ3hCLEdBQVcsRUFDWCxLQUFhLEVBQ2IsSUFBdUI7UUFFdkIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUNqQixNQUFNLEVBQ04sa0JBQWtCLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQ3pEO1lBQ0UsR0FBRztZQUNILEtBQUs7WUFDTCxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsSUFBSSxLQUFLO1lBQ25DLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxJQUFJLEtBQUs7WUFDN0IsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixJQUFJLEdBQUc7U0FDbEQsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELGdCQUFnQjtJQUNoQixLQUFLLENBQUMsMEJBQTBCLENBQzlCLE9BQXdCLEVBQ3hCLEdBQVcsRUFDWCxLQUFhLEVBQ2IsSUFBdUI7UUFFdkIsTUFBTSxJQUFJLEdBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUM1QixJQUFJLElBQUksRUFBRSxTQUFTLEtBQUssU0FBUztZQUFFLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUNuRSxJQUFJLElBQUksRUFBRSxNQUFNLEtBQUssU0FBUztZQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMxRCxJQUFJLElBQUksRUFBRSxpQkFBaUIsS0FBSyxTQUFTO1lBQUUsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztRQUMzRixPQUFPLElBQUksQ0FBQyxPQUFPLENBQ2pCLEtBQUssRUFDTCxrQkFBa0Isa0JBQWtCLENBQUMsT0FBTyxDQUFDLGNBQWMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFDcEYsSUFBSSxDQUNMLENBQUM7SUFDSixDQUFDO0lBRUQsZ0JBQWdCO0lBQ2hCLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxPQUF3QixFQUFFLEdBQVc7UUFDcEUsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUNoQixRQUFRLEVBQ1Isa0JBQWtCLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxjQUFjLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQ3JGLENBQUM7SUFDSixDQUFDO0lBRUQsb0JBQW9CO0lBRXBCLGdCQUFnQjtJQUNoQixLQUFLLENBQUMsbUJBQW1CLENBQUMsU0FBMEIsRUFBRSxJQUEyQjtRQUMvRSxNQUFNLElBQUksR0FBRyxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsQ0FBQztRQUM3QixNQUFNLE9BQU8sR0FBRyxJQUFJLEVBQUUsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUNwQyxNQUFNLE9BQU8sR0FBRyxJQUFJLEVBQUUsT0FBTyxJQUFJLFlBQVksQ0FBQztRQUM5QyxNQUFNLElBQUksR0FBRyxJQUFJLEVBQUUsSUFBSSxJQUFJLE1BQU0sQ0FBQztRQUNsQyxJQUFJLEdBQUcsR0FBRyxvQkFBb0Isa0JBQWtCLENBQUMsU0FBUyxDQUFDLG1CQUFtQixJQUFJLGFBQWEsT0FBTyxhQUFhLE9BQU8sU0FBUyxJQUFJLEVBQUUsQ0FBQztRQUMxSSxJQUFJLElBQUksRUFBRSxNQUFNO1lBQUUsR0FBRyxJQUFJLFdBQVcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDdEUsSUFBSSxJQUFJLEVBQUUsR0FBRztZQUFFLEdBQUcsSUFBSSxRQUFRLGtCQUFrQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzdELElBQUksSUFBSSxFQUFFLE1BQU07WUFBRSxHQUFHLElBQUksV0FBVyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUN0RSxJQUFJLElBQUksRUFBRSxLQUFLO1lBQUUsR0FBRyxJQUFJLFVBQVUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDbkUsSUFBSSxJQUFJLEVBQUUsUUFBUTtZQUFFLEdBQUcsSUFBSSxhQUFhLGtCQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQzVFLElBQUksSUFBSSxFQUFFLFlBQVk7WUFBRSxHQUFHLElBQUksa0JBQWtCLGtCQUFrQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1FBQ3pGLElBQUksSUFBSSxFQUFFLGFBQWE7WUFBRSxHQUFHLElBQUksbUJBQW1CLGtCQUFrQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1FBQzVGLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBb0IsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxnQkFBZ0I7SUFDaEIsS0FBSyxDQUFDLGtCQUFrQixDQUFDLFNBQTBCLEVBQUUsVUFBa0I7UUFDckUsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUNqQixLQUFLLEVBQ0wsb0JBQW9CLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxjQUFjLFVBQVUsRUFBRSxDQUM1RSxDQUFDO0lBQ0osQ0FBQztJQUVELGdCQUFnQjtJQUNoQixLQUFLLENBQUMsc0JBQXNCLENBQzFCLFNBQTBCLEVBQzFCLEdBQVcsRUFDWCxTQUFvRTtRQUVwRSxNQUFNLElBQUksR0FBUSxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQzFCLElBQUksU0FBUyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDN0IsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FDakIsTUFBTSxFQUNOLG9CQUFvQixrQkFBa0IsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUM1RCxJQUFJLENBQ0wsQ0FBQztJQUNKLENBQUM7SUFFRCxnQkFBZ0I7SUFDaEIsS0FBSyxDQUFDLG9CQUFvQixDQUFDLFNBQTBCLEVBQUUsVUFBa0I7UUFDdkUsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUNqQixNQUFNLEVBQ04sb0JBQW9CLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxjQUFjLFVBQVUsUUFBUSxDQUNsRixDQUFDO0lBQ0osQ0FBQztJQUVELGdCQUFnQjtJQUNoQixLQUFLLENBQUMscUJBQXFCLENBQUMsU0FBMEIsRUFBRSxVQUFrQjtRQUN4RSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQ2pCLE1BQU0sRUFDTixvQkFBb0Isa0JBQWtCLENBQUMsU0FBUyxDQUFDLGNBQWMsVUFBVSxTQUFTLENBQ25GLENBQUM7SUFDSixDQUFDO0lBRUQsZ0JBQWdCO0lBQ2hCLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxTQUEwQixFQUFFLFVBQWtCO1FBQ3hFLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FDaEIsUUFBUSxFQUNSLG9CQUFvQixrQkFBa0IsQ0FBQyxTQUFTLENBQUMsY0FBYyxVQUFVLEVBQUUsQ0FDNUUsQ0FBQztJQUNKLENBQUM7SUFFRCxnQkFBZ0I7SUFDaEIsS0FBSyxDQUFDLDJCQUEyQixDQUFDLFNBQTBCLEVBQUUsVUFBa0I7UUFDOUUsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUNqQixLQUFLLEVBQ0wsb0JBQW9CLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxjQUFjLFVBQVUsWUFBWSxDQUN0RixDQUFDO0lBQ0osQ0FBQztJQUVELGdCQUFnQjtJQUNoQixLQUFLLENBQUMsNEJBQTRCLENBQUMsU0FBMEIsRUFBRSxVQUFrQjtRQUMvRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQ2pCLEtBQUssRUFDTCxvQkFBb0Isa0JBQWtCLENBQUMsU0FBUyxDQUFDLGNBQWMsVUFBVSxjQUFjLENBQ3hGLENBQUM7SUFDSixDQUFDO0lBRUQsZUFBZTtJQUVmLGdCQUFnQjtJQUNoQixLQUFLLENBQUMsc0JBQXNCLENBQUMsU0FBMEIsRUFBRSxVQUFrQixFQUFFLElBQXNCO1FBQ2pHLE1BQU0sSUFBSSxHQUFHLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxDQUFDO1FBQzdCLE1BQU0sT0FBTyxHQUFHLElBQUksRUFBRSxPQUFPLElBQUksR0FBRyxDQUFDO1FBQ3JDLElBQUksR0FBRyxHQUFHLG9CQUFvQixrQkFBa0IsQ0FBQyxTQUFTLENBQUMsY0FBYyxVQUFVLGNBQWMsSUFBSSxhQUFhLE9BQU8sRUFBRSxDQUFDO1FBQzVILElBQUksSUFBSSxFQUFFLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN6QyxLQUFLLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDM0IsR0FBRyxJQUFJLFlBQVksa0JBQWtCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUM3QyxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBZSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELGdCQUFnQjtJQUNoQixLQUFLLENBQUMsZ0JBQWdCLENBQUMsU0FBMEIsRUFBRSxLQUFhO1FBQzlELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FDckIsS0FBSyxFQUNMLG9CQUFvQixrQkFBa0IsQ0FBQyxTQUFTLENBQUMsU0FBUyxLQUFLLFFBQVEsQ0FDeEUsQ0FBQztJQUNKLENBQUM7SUFFRCxnQkFBZ0I7SUFDaEIsS0FBSyxDQUFDLGVBQWUsQ0FBQyxTQUEwQixFQUFFLEtBQWE7UUFDN0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUNqQixNQUFNLEVBQ04sb0JBQW9CLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxTQUFTLEtBQUssUUFBUSxDQUN4RSxDQUFDO0lBQ0osQ0FBQztJQUVELGdCQUFnQjtJQUNoQixLQUFLLENBQUMsZ0JBQWdCLENBQUMsU0FBMEIsRUFBRSxLQUFhO1FBQzlELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FDakIsTUFBTSxFQUNOLG9CQUFvQixrQkFBa0IsQ0FBQyxTQUFTLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FDekUsQ0FBQztJQUNKLENBQUM7SUFFRCxnQkFBZ0I7SUFDaEIsS0FBSyxDQUFDLGNBQWMsQ0FBQyxTQUEwQixFQUFFLEtBQWE7UUFDNUQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUNqQixNQUFNLEVBQ04sb0JBQW9CLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxTQUFTLEtBQUssT0FBTyxDQUN2RSxDQUFDO0lBQ0osQ0FBQztJQUVELGdCQUFnQjtJQUNoQixLQUFLLENBQUMsZUFBZSxDQUFDLFNBQTBCLEVBQUUsS0FBYTtRQUM3RCxNQUFNLElBQUksQ0FBQyxPQUFPLENBQ2hCLE1BQU0sRUFDTixvQkFBb0Isa0JBQWtCLENBQUMsU0FBUyxDQUFDLFNBQVMsS0FBSyxRQUFRLENBQ3hFLENBQUM7SUFDSixDQUFDO0NBQ0YifQ==
|