coreum-js 2.5.7 → 2.5.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/dist/main/coreum/index.d.ts +16 -16
  2. package/dist/main/coreum/index.js +17 -17
  3. package/dist/main/cosmos/bank/v1beta1/authz.d.ts +80 -0
  4. package/dist/main/cosmos/bank/v1beta1/authz.js +84 -0
  5. package/dist/main/cosmos/bank/v1beta1/bank.d.ts +440 -0
  6. package/dist/main/cosmos/bank/v1beta1/bank.js +557 -0
  7. package/dist/main/cosmos/bank/v1beta1/genesis.d.ts +473 -0
  8. package/dist/main/cosmos/bank/v1beta1/genesis.js +208 -0
  9. package/dist/main/cosmos/bank/v1beta1/pagination.d.ts +128 -0
  10. package/dist/main/cosmos/bank/v1beta1/pagination.js +228 -0
  11. package/dist/main/cosmos/bank/v1beta1/query.d.ts +1633 -0
  12. package/dist/main/cosmos/bank/v1beta1/query.js +1596 -0
  13. package/dist/main/cosmos/bank/v1beta1/tx.d.ts +514 -0
  14. package/dist/main/cosmos/bank/v1beta1/tx.js +499 -0
  15. package/dist/main/cosmos/feegrant/v1beta1/feegrant.d.ts +367 -0
  16. package/dist/main/cosmos/feegrant/v1beta1/feegrant.js +413 -0
  17. package/dist/main/cosmos/feegrant/v1beta1/genesis.d.ts +111 -0
  18. package/dist/main/cosmos/feegrant/v1beta1/genesis.js +67 -0
  19. package/dist/main/cosmos/feegrant/v1beta1/pagination.d.ts +128 -0
  20. package/dist/main/cosmos/feegrant/v1beta1/pagination.js +228 -0
  21. package/dist/main/cosmos/feegrant/v1beta1/query.d.ts +512 -0
  22. package/dist/main/cosmos/feegrant/v1beta1/query.js +461 -0
  23. package/dist/main/cosmos/feegrant/v1beta1/tx.d.ts +143 -0
  24. package/dist/main/cosmos/feegrant/v1beta1/tx.js +253 -0
  25. package/dist/main/cosmos/gov/v1beta1/genesis.d.ts +639 -0
  26. package/dist/main/cosmos/gov/v1beta1/genesis.js +195 -0
  27. package/dist/main/cosmos/gov/v1beta1/gov.d.ts +620 -0
  28. package/dist/main/cosmos/gov/v1beta1/gov.js +1038 -0
  29. package/dist/main/cosmos/gov/v1beta1/pagination.d.ts +128 -0
  30. package/dist/main/cosmos/gov/v1beta1/pagination.js +228 -0
  31. package/dist/main/cosmos/gov/v1beta1/query.d.ts +1511 -0
  32. package/dist/main/cosmos/gov/v1beta1/query.js +1187 -0
  33. package/dist/main/cosmos/gov/v1beta1/tx.d.ts +350 -0
  34. package/dist/main/cosmos/gov/v1beta1/tx.js +567 -0
  35. package/dist/main/cosmos/index.d.ts +321 -0
  36. package/dist/main/cosmos/index.js +79 -0
  37. package/dist/main/google/protobuf/descriptor.d.ts +101937 -0
  38. package/dist/main/google/protobuf/descriptor.js +3375 -0
  39. package/dist/main/google/protobuf/duration.d.ts +110 -0
  40. package/dist/main/google/protobuf/duration.js +102 -0
  41. package/dist/main/google/protobuf/timestamp.d.ts +139 -0
  42. package/dist/main/google/protobuf/timestamp.js +102 -0
  43. package/dist/module/coreum/index.d.ts +16 -16
  44. package/dist/module/coreum/index.js +17 -17
  45. package/dist/module/cosmos/bank/v1beta1/authz.d.ts +80 -0
  46. package/dist/module/cosmos/bank/v1beta1/authz.js +77 -0
  47. package/dist/module/cosmos/bank/v1beta1/bank.d.ts +440 -0
  48. package/dist/module/cosmos/bank/v1beta1/bank.js +544 -0
  49. package/dist/module/cosmos/bank/v1beta1/genesis.d.ts +473 -0
  50. package/dist/module/cosmos/bank/v1beta1/genesis.js +200 -0
  51. package/dist/module/cosmos/bank/v1beta1/pagination.d.ts +128 -0
  52. package/dist/module/cosmos/bank/v1beta1/pagination.js +220 -0
  53. package/dist/module/cosmos/bank/v1beta1/query.d.ts +1633 -0
  54. package/dist/module/cosmos/bank/v1beta1/query.js +1576 -0
  55. package/dist/module/cosmos/bank/v1beta1/tx.d.ts +514 -0
  56. package/dist/module/cosmos/bank/v1beta1/tx.js +490 -0
  57. package/dist/module/cosmos/feegrant/v1beta1/feegrant.d.ts +367 -0
  58. package/dist/module/cosmos/feegrant/v1beta1/feegrant.js +403 -0
  59. package/dist/module/cosmos/feegrant/v1beta1/genesis.d.ts +111 -0
  60. package/dist/module/cosmos/feegrant/v1beta1/genesis.js +60 -0
  61. package/dist/module/cosmos/feegrant/v1beta1/pagination.d.ts +128 -0
  62. package/dist/module/cosmos/feegrant/v1beta1/pagination.js +220 -0
  63. package/dist/module/cosmos/feegrant/v1beta1/query.d.ts +512 -0
  64. package/dist/module/cosmos/feegrant/v1beta1/query.js +451 -0
  65. package/dist/module/cosmos/feegrant/v1beta1/tx.d.ts +143 -0
  66. package/dist/module/cosmos/feegrant/v1beta1/tx.js +246 -0
  67. package/dist/module/cosmos/gov/v1beta1/genesis.d.ts +639 -0
  68. package/dist/module/cosmos/gov/v1beta1/genesis.js +188 -0
  69. package/dist/module/cosmos/gov/v1beta1/gov.d.ts +620 -0
  70. package/dist/module/cosmos/gov/v1beta1/gov.js +1020 -0
  71. package/dist/module/cosmos/gov/v1beta1/pagination.d.ts +128 -0
  72. package/dist/module/cosmos/gov/v1beta1/pagination.js +220 -0
  73. package/dist/module/cosmos/gov/v1beta1/query.d.ts +1511 -0
  74. package/dist/module/cosmos/gov/v1beta1/query.js +1171 -0
  75. package/dist/module/cosmos/gov/v1beta1/tx.d.ts +350 -0
  76. package/dist/module/cosmos/gov/v1beta1/tx.js +557 -0
  77. package/dist/module/cosmos/index.d.ts +321 -0
  78. package/dist/module/cosmos/index.js +76 -0
  79. package/dist/module/google/protobuf/descriptor.d.ts +101937 -0
  80. package/dist/module/google/protobuf/descriptor.js +3330 -0
  81. package/dist/module/google/protobuf/duration.d.ts +110 -0
  82. package/dist/module/google/protobuf/duration.js +95 -0
  83. package/dist/module/google/protobuf/timestamp.d.ts +139 -0
  84. package/dist/module/google/protobuf/timestamp.js +95 -0
  85. package/package.json +1 -1
@@ -0,0 +1,1020 @@
1
+ /* eslint-disable */
2
+ import Long from "long";
3
+ import _m0 from "protobufjs/minimal";
4
+ import { Coin } from "../../base/v1beta1/coin";
5
+ import { Any } from "../../../google/protobuf/any";
6
+ import { Duration } from "../../../google/protobuf/duration";
7
+ import { Timestamp } from "../../../google/protobuf/timestamp";
8
+ export const protobufPackage = "cosmos.gov.v1beta1";
9
+ /** VoteOption enumerates the valid vote options for a given governance proposal. */
10
+ export var VoteOption;
11
+ (function (VoteOption) {
12
+ /** VOTE_OPTION_UNSPECIFIED - VOTE_OPTION_UNSPECIFIED defines a no-op vote option. */
13
+ VoteOption[VoteOption["VOTE_OPTION_UNSPECIFIED"] = 0] = "VOTE_OPTION_UNSPECIFIED";
14
+ /** VOTE_OPTION_YES - VOTE_OPTION_YES defines a yes vote option. */
15
+ VoteOption[VoteOption["VOTE_OPTION_YES"] = 1] = "VOTE_OPTION_YES";
16
+ /** VOTE_OPTION_ABSTAIN - VOTE_OPTION_ABSTAIN defines an abstain vote option. */
17
+ VoteOption[VoteOption["VOTE_OPTION_ABSTAIN"] = 2] = "VOTE_OPTION_ABSTAIN";
18
+ /** VOTE_OPTION_NO - VOTE_OPTION_NO defines a no vote option. */
19
+ VoteOption[VoteOption["VOTE_OPTION_NO"] = 3] = "VOTE_OPTION_NO";
20
+ /** VOTE_OPTION_NO_WITH_VETO - VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. */
21
+ VoteOption[VoteOption["VOTE_OPTION_NO_WITH_VETO"] = 4] = "VOTE_OPTION_NO_WITH_VETO";
22
+ VoteOption[VoteOption["UNRECOGNIZED"] = -1] = "UNRECOGNIZED";
23
+ })(VoteOption || (VoteOption = {}));
24
+ export function voteOptionFromJSON(object) {
25
+ switch (object) {
26
+ case 0:
27
+ case "VOTE_OPTION_UNSPECIFIED":
28
+ return VoteOption.VOTE_OPTION_UNSPECIFIED;
29
+ case 1:
30
+ case "VOTE_OPTION_YES":
31
+ return VoteOption.VOTE_OPTION_YES;
32
+ case 2:
33
+ case "VOTE_OPTION_ABSTAIN":
34
+ return VoteOption.VOTE_OPTION_ABSTAIN;
35
+ case 3:
36
+ case "VOTE_OPTION_NO":
37
+ return VoteOption.VOTE_OPTION_NO;
38
+ case 4:
39
+ case "VOTE_OPTION_NO_WITH_VETO":
40
+ return VoteOption.VOTE_OPTION_NO_WITH_VETO;
41
+ case -1:
42
+ case "UNRECOGNIZED":
43
+ default:
44
+ return VoteOption.UNRECOGNIZED;
45
+ }
46
+ }
47
+ export function voteOptionToJSON(object) {
48
+ switch (object) {
49
+ case VoteOption.VOTE_OPTION_UNSPECIFIED:
50
+ return "VOTE_OPTION_UNSPECIFIED";
51
+ case VoteOption.VOTE_OPTION_YES:
52
+ return "VOTE_OPTION_YES";
53
+ case VoteOption.VOTE_OPTION_ABSTAIN:
54
+ return "VOTE_OPTION_ABSTAIN";
55
+ case VoteOption.VOTE_OPTION_NO:
56
+ return "VOTE_OPTION_NO";
57
+ case VoteOption.VOTE_OPTION_NO_WITH_VETO:
58
+ return "VOTE_OPTION_NO_WITH_VETO";
59
+ case VoteOption.UNRECOGNIZED:
60
+ default:
61
+ return "UNRECOGNIZED";
62
+ }
63
+ }
64
+ /** ProposalStatus enumerates the valid statuses of a proposal. */
65
+ export var ProposalStatus;
66
+ (function (ProposalStatus) {
67
+ /** PROPOSAL_STATUS_UNSPECIFIED - PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status. */
68
+ ProposalStatus[ProposalStatus["PROPOSAL_STATUS_UNSPECIFIED"] = 0] = "PROPOSAL_STATUS_UNSPECIFIED";
69
+ /**
70
+ * PROPOSAL_STATUS_DEPOSIT_PERIOD - PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit
71
+ * period.
72
+ */
73
+ ProposalStatus[ProposalStatus["PROPOSAL_STATUS_DEPOSIT_PERIOD"] = 1] = "PROPOSAL_STATUS_DEPOSIT_PERIOD";
74
+ /**
75
+ * PROPOSAL_STATUS_VOTING_PERIOD - PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting
76
+ * period.
77
+ */
78
+ ProposalStatus[ProposalStatus["PROPOSAL_STATUS_VOTING_PERIOD"] = 2] = "PROPOSAL_STATUS_VOTING_PERIOD";
79
+ /**
80
+ * PROPOSAL_STATUS_PASSED - PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has
81
+ * passed.
82
+ */
83
+ ProposalStatus[ProposalStatus["PROPOSAL_STATUS_PASSED"] = 3] = "PROPOSAL_STATUS_PASSED";
84
+ /**
85
+ * PROPOSAL_STATUS_REJECTED - PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has
86
+ * been rejected.
87
+ */
88
+ ProposalStatus[ProposalStatus["PROPOSAL_STATUS_REJECTED"] = 4] = "PROPOSAL_STATUS_REJECTED";
89
+ /**
90
+ * PROPOSAL_STATUS_FAILED - PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has
91
+ * failed.
92
+ */
93
+ ProposalStatus[ProposalStatus["PROPOSAL_STATUS_FAILED"] = 5] = "PROPOSAL_STATUS_FAILED";
94
+ ProposalStatus[ProposalStatus["UNRECOGNIZED"] = -1] = "UNRECOGNIZED";
95
+ })(ProposalStatus || (ProposalStatus = {}));
96
+ export function proposalStatusFromJSON(object) {
97
+ switch (object) {
98
+ case 0:
99
+ case "PROPOSAL_STATUS_UNSPECIFIED":
100
+ return ProposalStatus.PROPOSAL_STATUS_UNSPECIFIED;
101
+ case 1:
102
+ case "PROPOSAL_STATUS_DEPOSIT_PERIOD":
103
+ return ProposalStatus.PROPOSAL_STATUS_DEPOSIT_PERIOD;
104
+ case 2:
105
+ case "PROPOSAL_STATUS_VOTING_PERIOD":
106
+ return ProposalStatus.PROPOSAL_STATUS_VOTING_PERIOD;
107
+ case 3:
108
+ case "PROPOSAL_STATUS_PASSED":
109
+ return ProposalStatus.PROPOSAL_STATUS_PASSED;
110
+ case 4:
111
+ case "PROPOSAL_STATUS_REJECTED":
112
+ return ProposalStatus.PROPOSAL_STATUS_REJECTED;
113
+ case 5:
114
+ case "PROPOSAL_STATUS_FAILED":
115
+ return ProposalStatus.PROPOSAL_STATUS_FAILED;
116
+ case -1:
117
+ case "UNRECOGNIZED":
118
+ default:
119
+ return ProposalStatus.UNRECOGNIZED;
120
+ }
121
+ }
122
+ export function proposalStatusToJSON(object) {
123
+ switch (object) {
124
+ case ProposalStatus.PROPOSAL_STATUS_UNSPECIFIED:
125
+ return "PROPOSAL_STATUS_UNSPECIFIED";
126
+ case ProposalStatus.PROPOSAL_STATUS_DEPOSIT_PERIOD:
127
+ return "PROPOSAL_STATUS_DEPOSIT_PERIOD";
128
+ case ProposalStatus.PROPOSAL_STATUS_VOTING_PERIOD:
129
+ return "PROPOSAL_STATUS_VOTING_PERIOD";
130
+ case ProposalStatus.PROPOSAL_STATUS_PASSED:
131
+ return "PROPOSAL_STATUS_PASSED";
132
+ case ProposalStatus.PROPOSAL_STATUS_REJECTED:
133
+ return "PROPOSAL_STATUS_REJECTED";
134
+ case ProposalStatus.PROPOSAL_STATUS_FAILED:
135
+ return "PROPOSAL_STATUS_FAILED";
136
+ case ProposalStatus.UNRECOGNIZED:
137
+ default:
138
+ return "UNRECOGNIZED";
139
+ }
140
+ }
141
+ function createBaseWeightedVoteOption() {
142
+ return { option: 0, weight: "" };
143
+ }
144
+ export const WeightedVoteOption = {
145
+ encode(message, writer = _m0.Writer.create()) {
146
+ if (message.option !== 0) {
147
+ writer.uint32(8).int32(message.option);
148
+ }
149
+ if (message.weight !== "") {
150
+ writer.uint32(18).string(message.weight);
151
+ }
152
+ return writer;
153
+ },
154
+ decode(input, length) {
155
+ const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);
156
+ let end = length === undefined ? reader.len : reader.pos + length;
157
+ const message = createBaseWeightedVoteOption();
158
+ while (reader.pos < end) {
159
+ const tag = reader.uint32();
160
+ switch (tag >>> 3) {
161
+ case 1:
162
+ if (tag !== 8) {
163
+ break;
164
+ }
165
+ message.option = reader.int32();
166
+ continue;
167
+ case 2:
168
+ if (tag !== 18) {
169
+ break;
170
+ }
171
+ message.weight = reader.string();
172
+ continue;
173
+ }
174
+ if ((tag & 7) === 4 || tag === 0) {
175
+ break;
176
+ }
177
+ reader.skipType(tag & 7);
178
+ }
179
+ return message;
180
+ },
181
+ fromJSON(object) {
182
+ return {
183
+ option: isSet(object.option) ? voteOptionFromJSON(object.option) : 0,
184
+ weight: isSet(object.weight) ? String(object.weight) : "",
185
+ };
186
+ },
187
+ toJSON(message) {
188
+ const obj = {};
189
+ message.option !== undefined &&
190
+ (obj.option = voteOptionToJSON(message.option));
191
+ message.weight !== undefined && (obj.weight = message.weight);
192
+ return obj;
193
+ },
194
+ create(base) {
195
+ return WeightedVoteOption.fromPartial(base ?? {});
196
+ },
197
+ fromPartial(object) {
198
+ const message = createBaseWeightedVoteOption();
199
+ message.option = object.option ?? 0;
200
+ message.weight = object.weight ?? "";
201
+ return message;
202
+ },
203
+ };
204
+ function createBaseTextProposal() {
205
+ return { title: "", description: "" };
206
+ }
207
+ export const TextProposal = {
208
+ encode(message, writer = _m0.Writer.create()) {
209
+ if (message.title !== "") {
210
+ writer.uint32(10).string(message.title);
211
+ }
212
+ if (message.description !== "") {
213
+ writer.uint32(18).string(message.description);
214
+ }
215
+ return writer;
216
+ },
217
+ decode(input, length) {
218
+ const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);
219
+ let end = length === undefined ? reader.len : reader.pos + length;
220
+ const message = createBaseTextProposal();
221
+ while (reader.pos < end) {
222
+ const tag = reader.uint32();
223
+ switch (tag >>> 3) {
224
+ case 1:
225
+ if (tag !== 10) {
226
+ break;
227
+ }
228
+ message.title = reader.string();
229
+ continue;
230
+ case 2:
231
+ if (tag !== 18) {
232
+ break;
233
+ }
234
+ message.description = reader.string();
235
+ continue;
236
+ }
237
+ if ((tag & 7) === 4 || tag === 0) {
238
+ break;
239
+ }
240
+ reader.skipType(tag & 7);
241
+ }
242
+ return message;
243
+ },
244
+ fromJSON(object) {
245
+ return {
246
+ title: isSet(object.title) ? String(object.title) : "",
247
+ description: isSet(object.description) ? String(object.description) : "",
248
+ };
249
+ },
250
+ toJSON(message) {
251
+ const obj = {};
252
+ message.title !== undefined && (obj.title = message.title);
253
+ message.description !== undefined &&
254
+ (obj.description = message.description);
255
+ return obj;
256
+ },
257
+ create(base) {
258
+ return TextProposal.fromPartial(base ?? {});
259
+ },
260
+ fromPartial(object) {
261
+ const message = createBaseTextProposal();
262
+ message.title = object.title ?? "";
263
+ message.description = object.description ?? "";
264
+ return message;
265
+ },
266
+ };
267
+ function createBaseDeposit() {
268
+ return { proposalId: 0, depositor: "", amount: [] };
269
+ }
270
+ export const Deposit = {
271
+ encode(message, writer = _m0.Writer.create()) {
272
+ if (message.proposalId !== 0) {
273
+ writer.uint32(8).uint64(message.proposalId);
274
+ }
275
+ if (message.depositor !== "") {
276
+ writer.uint32(18).string(message.depositor);
277
+ }
278
+ for (const v of message.amount) {
279
+ Coin.encode(v, writer.uint32(26).fork()).ldelim();
280
+ }
281
+ return writer;
282
+ },
283
+ decode(input, length) {
284
+ const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);
285
+ let end = length === undefined ? reader.len : reader.pos + length;
286
+ const message = createBaseDeposit();
287
+ while (reader.pos < end) {
288
+ const tag = reader.uint32();
289
+ switch (tag >>> 3) {
290
+ case 1:
291
+ if (tag !== 8) {
292
+ break;
293
+ }
294
+ message.proposalId = longToNumber(reader.uint64());
295
+ continue;
296
+ case 2:
297
+ if (tag !== 18) {
298
+ break;
299
+ }
300
+ message.depositor = reader.string();
301
+ continue;
302
+ case 3:
303
+ if (tag !== 26) {
304
+ break;
305
+ }
306
+ message.amount.push(Coin.decode(reader, reader.uint32()));
307
+ continue;
308
+ }
309
+ if ((tag & 7) === 4 || tag === 0) {
310
+ break;
311
+ }
312
+ reader.skipType(tag & 7);
313
+ }
314
+ return message;
315
+ },
316
+ fromJSON(object) {
317
+ return {
318
+ proposalId: isSet(object.proposalId) ? Number(object.proposalId) : 0,
319
+ depositor: isSet(object.depositor) ? String(object.depositor) : "",
320
+ amount: Array.isArray(object?.amount)
321
+ ? object.amount.map((e) => Coin.fromJSON(e))
322
+ : [],
323
+ };
324
+ },
325
+ toJSON(message) {
326
+ const obj = {};
327
+ message.proposalId !== undefined &&
328
+ (obj.proposalId = Math.round(message.proposalId));
329
+ message.depositor !== undefined && (obj.depositor = message.depositor);
330
+ if (message.amount) {
331
+ obj.amount = message.amount.map((e) => (e ? Coin.toJSON(e) : undefined));
332
+ }
333
+ else {
334
+ obj.amount = [];
335
+ }
336
+ return obj;
337
+ },
338
+ create(base) {
339
+ return Deposit.fromPartial(base ?? {});
340
+ },
341
+ fromPartial(object) {
342
+ const message = createBaseDeposit();
343
+ message.proposalId = object.proposalId ?? 0;
344
+ message.depositor = object.depositor ?? "";
345
+ message.amount = object.amount?.map((e) => Coin.fromPartial(e)) || [];
346
+ return message;
347
+ },
348
+ };
349
+ function createBaseProposal() {
350
+ return {
351
+ proposalId: 0,
352
+ content: undefined,
353
+ status: 0,
354
+ finalTallyResult: undefined,
355
+ submitTime: undefined,
356
+ depositEndTime: undefined,
357
+ totalDeposit: [],
358
+ votingStartTime: undefined,
359
+ votingEndTime: undefined,
360
+ };
361
+ }
362
+ export const Proposal = {
363
+ encode(message, writer = _m0.Writer.create()) {
364
+ if (message.proposalId !== 0) {
365
+ writer.uint32(8).uint64(message.proposalId);
366
+ }
367
+ if (message.content !== undefined) {
368
+ Any.encode(message.content, writer.uint32(18).fork()).ldelim();
369
+ }
370
+ if (message.status !== 0) {
371
+ writer.uint32(24).int32(message.status);
372
+ }
373
+ if (message.finalTallyResult !== undefined) {
374
+ TallyResult.encode(message.finalTallyResult, writer.uint32(34).fork()).ldelim();
375
+ }
376
+ if (message.submitTime !== undefined) {
377
+ Timestamp.encode(toTimestamp(message.submitTime), writer.uint32(42).fork()).ldelim();
378
+ }
379
+ if (message.depositEndTime !== undefined) {
380
+ Timestamp.encode(toTimestamp(message.depositEndTime), writer.uint32(50).fork()).ldelim();
381
+ }
382
+ for (const v of message.totalDeposit) {
383
+ Coin.encode(v, writer.uint32(58).fork()).ldelim();
384
+ }
385
+ if (message.votingStartTime !== undefined) {
386
+ Timestamp.encode(toTimestamp(message.votingStartTime), writer.uint32(66).fork()).ldelim();
387
+ }
388
+ if (message.votingEndTime !== undefined) {
389
+ Timestamp.encode(toTimestamp(message.votingEndTime), writer.uint32(74).fork()).ldelim();
390
+ }
391
+ return writer;
392
+ },
393
+ decode(input, length) {
394
+ const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);
395
+ let end = length === undefined ? reader.len : reader.pos + length;
396
+ const message = createBaseProposal();
397
+ while (reader.pos < end) {
398
+ const tag = reader.uint32();
399
+ switch (tag >>> 3) {
400
+ case 1:
401
+ if (tag !== 8) {
402
+ break;
403
+ }
404
+ message.proposalId = longToNumber(reader.uint64());
405
+ continue;
406
+ case 2:
407
+ if (tag !== 18) {
408
+ break;
409
+ }
410
+ message.content = Any.decode(reader, reader.uint32());
411
+ continue;
412
+ case 3:
413
+ if (tag !== 24) {
414
+ break;
415
+ }
416
+ message.status = reader.int32();
417
+ continue;
418
+ case 4:
419
+ if (tag !== 34) {
420
+ break;
421
+ }
422
+ message.finalTallyResult = TallyResult.decode(reader, reader.uint32());
423
+ continue;
424
+ case 5:
425
+ if (tag !== 42) {
426
+ break;
427
+ }
428
+ message.submitTime = fromTimestamp(Timestamp.decode(reader, reader.uint32()));
429
+ continue;
430
+ case 6:
431
+ if (tag !== 50) {
432
+ break;
433
+ }
434
+ message.depositEndTime = fromTimestamp(Timestamp.decode(reader, reader.uint32()));
435
+ continue;
436
+ case 7:
437
+ if (tag !== 58) {
438
+ break;
439
+ }
440
+ message.totalDeposit.push(Coin.decode(reader, reader.uint32()));
441
+ continue;
442
+ case 8:
443
+ if (tag !== 66) {
444
+ break;
445
+ }
446
+ message.votingStartTime = fromTimestamp(Timestamp.decode(reader, reader.uint32()));
447
+ continue;
448
+ case 9:
449
+ if (tag !== 74) {
450
+ break;
451
+ }
452
+ message.votingEndTime = fromTimestamp(Timestamp.decode(reader, reader.uint32()));
453
+ continue;
454
+ }
455
+ if ((tag & 7) === 4 || tag === 0) {
456
+ break;
457
+ }
458
+ reader.skipType(tag & 7);
459
+ }
460
+ return message;
461
+ },
462
+ fromJSON(object) {
463
+ return {
464
+ proposalId: isSet(object.proposalId) ? Number(object.proposalId) : 0,
465
+ content: isSet(object.content) ? Any.fromJSON(object.content) : undefined,
466
+ status: isSet(object.status) ? proposalStatusFromJSON(object.status) : 0,
467
+ finalTallyResult: isSet(object.finalTallyResult)
468
+ ? TallyResult.fromJSON(object.finalTallyResult)
469
+ : undefined,
470
+ submitTime: isSet(object.submitTime)
471
+ ? fromJsonTimestamp(object.submitTime)
472
+ : undefined,
473
+ depositEndTime: isSet(object.depositEndTime)
474
+ ? fromJsonTimestamp(object.depositEndTime)
475
+ : undefined,
476
+ totalDeposit: Array.isArray(object?.totalDeposit)
477
+ ? object.totalDeposit.map((e) => Coin.fromJSON(e))
478
+ : [],
479
+ votingStartTime: isSet(object.votingStartTime)
480
+ ? fromJsonTimestamp(object.votingStartTime)
481
+ : undefined,
482
+ votingEndTime: isSet(object.votingEndTime)
483
+ ? fromJsonTimestamp(object.votingEndTime)
484
+ : undefined,
485
+ };
486
+ },
487
+ toJSON(message) {
488
+ const obj = {};
489
+ message.proposalId !== undefined &&
490
+ (obj.proposalId = Math.round(message.proposalId));
491
+ message.content !== undefined &&
492
+ (obj.content = message.content ? Any.toJSON(message.content) : undefined);
493
+ message.status !== undefined &&
494
+ (obj.status = proposalStatusToJSON(message.status));
495
+ message.finalTallyResult !== undefined &&
496
+ (obj.finalTallyResult = message.finalTallyResult
497
+ ? TallyResult.toJSON(message.finalTallyResult)
498
+ : undefined);
499
+ message.submitTime !== undefined &&
500
+ (obj.submitTime = message.submitTime.toISOString());
501
+ message.depositEndTime !== undefined &&
502
+ (obj.depositEndTime = message.depositEndTime.toISOString());
503
+ if (message.totalDeposit) {
504
+ obj.totalDeposit = message.totalDeposit.map((e) => e ? Coin.toJSON(e) : undefined);
505
+ }
506
+ else {
507
+ obj.totalDeposit = [];
508
+ }
509
+ message.votingStartTime !== undefined &&
510
+ (obj.votingStartTime = message.votingStartTime.toISOString());
511
+ message.votingEndTime !== undefined &&
512
+ (obj.votingEndTime = message.votingEndTime.toISOString());
513
+ return obj;
514
+ },
515
+ create(base) {
516
+ return Proposal.fromPartial(base ?? {});
517
+ },
518
+ fromPartial(object) {
519
+ const message = createBaseProposal();
520
+ message.proposalId = object.proposalId ?? 0;
521
+ message.content =
522
+ object.content !== undefined && object.content !== null
523
+ ? Any.fromPartial(object.content)
524
+ : undefined;
525
+ message.status = object.status ?? 0;
526
+ message.finalTallyResult =
527
+ object.finalTallyResult !== undefined && object.finalTallyResult !== null
528
+ ? TallyResult.fromPartial(object.finalTallyResult)
529
+ : undefined;
530
+ message.submitTime = object.submitTime ?? undefined;
531
+ message.depositEndTime = object.depositEndTime ?? undefined;
532
+ message.totalDeposit =
533
+ object.totalDeposit?.map((e) => Coin.fromPartial(e)) || [];
534
+ message.votingStartTime = object.votingStartTime ?? undefined;
535
+ message.votingEndTime = object.votingEndTime ?? undefined;
536
+ return message;
537
+ },
538
+ };
539
+ function createBaseTallyResult() {
540
+ return { yes: "", abstain: "", no: "", noWithVeto: "" };
541
+ }
542
+ export const TallyResult = {
543
+ encode(message, writer = _m0.Writer.create()) {
544
+ if (message.yes !== "") {
545
+ writer.uint32(10).string(message.yes);
546
+ }
547
+ if (message.abstain !== "") {
548
+ writer.uint32(18).string(message.abstain);
549
+ }
550
+ if (message.no !== "") {
551
+ writer.uint32(26).string(message.no);
552
+ }
553
+ if (message.noWithVeto !== "") {
554
+ writer.uint32(34).string(message.noWithVeto);
555
+ }
556
+ return writer;
557
+ },
558
+ decode(input, length) {
559
+ const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);
560
+ let end = length === undefined ? reader.len : reader.pos + length;
561
+ const message = createBaseTallyResult();
562
+ while (reader.pos < end) {
563
+ const tag = reader.uint32();
564
+ switch (tag >>> 3) {
565
+ case 1:
566
+ if (tag !== 10) {
567
+ break;
568
+ }
569
+ message.yes = reader.string();
570
+ continue;
571
+ case 2:
572
+ if (tag !== 18) {
573
+ break;
574
+ }
575
+ message.abstain = reader.string();
576
+ continue;
577
+ case 3:
578
+ if (tag !== 26) {
579
+ break;
580
+ }
581
+ message.no = reader.string();
582
+ continue;
583
+ case 4:
584
+ if (tag !== 34) {
585
+ break;
586
+ }
587
+ message.noWithVeto = reader.string();
588
+ continue;
589
+ }
590
+ if ((tag & 7) === 4 || tag === 0) {
591
+ break;
592
+ }
593
+ reader.skipType(tag & 7);
594
+ }
595
+ return message;
596
+ },
597
+ fromJSON(object) {
598
+ return {
599
+ yes: isSet(object.yes) ? String(object.yes) : "",
600
+ abstain: isSet(object.abstain) ? String(object.abstain) : "",
601
+ no: isSet(object.no) ? String(object.no) : "",
602
+ noWithVeto: isSet(object.noWithVeto) ? String(object.noWithVeto) : "",
603
+ };
604
+ },
605
+ toJSON(message) {
606
+ const obj = {};
607
+ message.yes !== undefined && (obj.yes = message.yes);
608
+ message.abstain !== undefined && (obj.abstain = message.abstain);
609
+ message.no !== undefined && (obj.no = message.no);
610
+ message.noWithVeto !== undefined && (obj.noWithVeto = message.noWithVeto);
611
+ return obj;
612
+ },
613
+ create(base) {
614
+ return TallyResult.fromPartial(base ?? {});
615
+ },
616
+ fromPartial(object) {
617
+ const message = createBaseTallyResult();
618
+ message.yes = object.yes ?? "";
619
+ message.abstain = object.abstain ?? "";
620
+ message.no = object.no ?? "";
621
+ message.noWithVeto = object.noWithVeto ?? "";
622
+ return message;
623
+ },
624
+ };
625
+ function createBaseVote() {
626
+ return { proposalId: 0, voter: "", option: 0, options: [] };
627
+ }
628
+ export const Vote = {
629
+ encode(message, writer = _m0.Writer.create()) {
630
+ if (message.proposalId !== 0) {
631
+ writer.uint32(8).uint64(message.proposalId);
632
+ }
633
+ if (message.voter !== "") {
634
+ writer.uint32(18).string(message.voter);
635
+ }
636
+ if (message.option !== 0) {
637
+ writer.uint32(24).int32(message.option);
638
+ }
639
+ for (const v of message.options) {
640
+ WeightedVoteOption.encode(v, writer.uint32(34).fork()).ldelim();
641
+ }
642
+ return writer;
643
+ },
644
+ decode(input, length) {
645
+ const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);
646
+ let end = length === undefined ? reader.len : reader.pos + length;
647
+ const message = createBaseVote();
648
+ while (reader.pos < end) {
649
+ const tag = reader.uint32();
650
+ switch (tag >>> 3) {
651
+ case 1:
652
+ if (tag !== 8) {
653
+ break;
654
+ }
655
+ message.proposalId = longToNumber(reader.uint64());
656
+ continue;
657
+ case 2:
658
+ if (tag !== 18) {
659
+ break;
660
+ }
661
+ message.voter = reader.string();
662
+ continue;
663
+ case 3:
664
+ if (tag !== 24) {
665
+ break;
666
+ }
667
+ message.option = reader.int32();
668
+ continue;
669
+ case 4:
670
+ if (tag !== 34) {
671
+ break;
672
+ }
673
+ message.options.push(WeightedVoteOption.decode(reader, reader.uint32()));
674
+ continue;
675
+ }
676
+ if ((tag & 7) === 4 || tag === 0) {
677
+ break;
678
+ }
679
+ reader.skipType(tag & 7);
680
+ }
681
+ return message;
682
+ },
683
+ fromJSON(object) {
684
+ return {
685
+ proposalId: isSet(object.proposalId) ? Number(object.proposalId) : 0,
686
+ voter: isSet(object.voter) ? String(object.voter) : "",
687
+ option: isSet(object.option) ? voteOptionFromJSON(object.option) : 0,
688
+ options: Array.isArray(object?.options)
689
+ ? object.options.map((e) => WeightedVoteOption.fromJSON(e))
690
+ : [],
691
+ };
692
+ },
693
+ toJSON(message) {
694
+ const obj = {};
695
+ message.proposalId !== undefined &&
696
+ (obj.proposalId = Math.round(message.proposalId));
697
+ message.voter !== undefined && (obj.voter = message.voter);
698
+ message.option !== undefined &&
699
+ (obj.option = voteOptionToJSON(message.option));
700
+ if (message.options) {
701
+ obj.options = message.options.map((e) => e ? WeightedVoteOption.toJSON(e) : undefined);
702
+ }
703
+ else {
704
+ obj.options = [];
705
+ }
706
+ return obj;
707
+ },
708
+ create(base) {
709
+ return Vote.fromPartial(base ?? {});
710
+ },
711
+ fromPartial(object) {
712
+ const message = createBaseVote();
713
+ message.proposalId = object.proposalId ?? 0;
714
+ message.voter = object.voter ?? "";
715
+ message.option = object.option ?? 0;
716
+ message.options =
717
+ object.options?.map((e) => WeightedVoteOption.fromPartial(e)) || [];
718
+ return message;
719
+ },
720
+ };
721
+ function createBaseDepositParams() {
722
+ return { minDeposit: [], maxDepositPeriod: undefined };
723
+ }
724
+ export const DepositParams = {
725
+ encode(message, writer = _m0.Writer.create()) {
726
+ for (const v of message.minDeposit) {
727
+ Coin.encode(v, writer.uint32(10).fork()).ldelim();
728
+ }
729
+ if (message.maxDepositPeriod !== undefined) {
730
+ Duration.encode(message.maxDepositPeriod, writer.uint32(18).fork()).ldelim();
731
+ }
732
+ return writer;
733
+ },
734
+ decode(input, length) {
735
+ const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);
736
+ let end = length === undefined ? reader.len : reader.pos + length;
737
+ const message = createBaseDepositParams();
738
+ while (reader.pos < end) {
739
+ const tag = reader.uint32();
740
+ switch (tag >>> 3) {
741
+ case 1:
742
+ if (tag !== 10) {
743
+ break;
744
+ }
745
+ message.minDeposit.push(Coin.decode(reader, reader.uint32()));
746
+ continue;
747
+ case 2:
748
+ if (tag !== 18) {
749
+ break;
750
+ }
751
+ message.maxDepositPeriod = Duration.decode(reader, reader.uint32());
752
+ continue;
753
+ }
754
+ if ((tag & 7) === 4 || tag === 0) {
755
+ break;
756
+ }
757
+ reader.skipType(tag & 7);
758
+ }
759
+ return message;
760
+ },
761
+ fromJSON(object) {
762
+ return {
763
+ minDeposit: Array.isArray(object?.minDeposit)
764
+ ? object.minDeposit.map((e) => Coin.fromJSON(e))
765
+ : [],
766
+ maxDepositPeriod: isSet(object.maxDepositPeriod)
767
+ ? Duration.fromJSON(object.maxDepositPeriod)
768
+ : undefined,
769
+ };
770
+ },
771
+ toJSON(message) {
772
+ const obj = {};
773
+ if (message.minDeposit) {
774
+ obj.minDeposit = message.minDeposit.map((e) => e ? Coin.toJSON(e) : undefined);
775
+ }
776
+ else {
777
+ obj.minDeposit = [];
778
+ }
779
+ message.maxDepositPeriod !== undefined &&
780
+ (obj.maxDepositPeriod = message.maxDepositPeriod
781
+ ? Duration.toJSON(message.maxDepositPeriod)
782
+ : undefined);
783
+ return obj;
784
+ },
785
+ create(base) {
786
+ return DepositParams.fromPartial(base ?? {});
787
+ },
788
+ fromPartial(object) {
789
+ const message = createBaseDepositParams();
790
+ message.minDeposit =
791
+ object.minDeposit?.map((e) => Coin.fromPartial(e)) || [];
792
+ message.maxDepositPeriod =
793
+ object.maxDepositPeriod !== undefined && object.maxDepositPeriod !== null
794
+ ? Duration.fromPartial(object.maxDepositPeriod)
795
+ : undefined;
796
+ return message;
797
+ },
798
+ };
799
+ function createBaseVotingParams() {
800
+ return { votingPeriod: undefined };
801
+ }
802
+ export const VotingParams = {
803
+ encode(message, writer = _m0.Writer.create()) {
804
+ if (message.votingPeriod !== undefined) {
805
+ Duration.encode(message.votingPeriod, writer.uint32(10).fork()).ldelim();
806
+ }
807
+ return writer;
808
+ },
809
+ decode(input, length) {
810
+ const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);
811
+ let end = length === undefined ? reader.len : reader.pos + length;
812
+ const message = createBaseVotingParams();
813
+ while (reader.pos < end) {
814
+ const tag = reader.uint32();
815
+ switch (tag >>> 3) {
816
+ case 1:
817
+ if (tag !== 10) {
818
+ break;
819
+ }
820
+ message.votingPeriod = Duration.decode(reader, reader.uint32());
821
+ continue;
822
+ }
823
+ if ((tag & 7) === 4 || tag === 0) {
824
+ break;
825
+ }
826
+ reader.skipType(tag & 7);
827
+ }
828
+ return message;
829
+ },
830
+ fromJSON(object) {
831
+ return {
832
+ votingPeriod: isSet(object.votingPeriod)
833
+ ? Duration.fromJSON(object.votingPeriod)
834
+ : undefined,
835
+ };
836
+ },
837
+ toJSON(message) {
838
+ const obj = {};
839
+ message.votingPeriod !== undefined &&
840
+ (obj.votingPeriod = message.votingPeriod
841
+ ? Duration.toJSON(message.votingPeriod)
842
+ : undefined);
843
+ return obj;
844
+ },
845
+ create(base) {
846
+ return VotingParams.fromPartial(base ?? {});
847
+ },
848
+ fromPartial(object) {
849
+ const message = createBaseVotingParams();
850
+ message.votingPeriod =
851
+ object.votingPeriod !== undefined && object.votingPeriod !== null
852
+ ? Duration.fromPartial(object.votingPeriod)
853
+ : undefined;
854
+ return message;
855
+ },
856
+ };
857
+ function createBaseTallyParams() {
858
+ return {
859
+ quorum: new Uint8Array(),
860
+ threshold: new Uint8Array(),
861
+ vetoThreshold: new Uint8Array(),
862
+ };
863
+ }
864
+ export const TallyParams = {
865
+ encode(message, writer = _m0.Writer.create()) {
866
+ if (message.quorum.length !== 0) {
867
+ writer.uint32(10).bytes(message.quorum);
868
+ }
869
+ if (message.threshold.length !== 0) {
870
+ writer.uint32(18).bytes(message.threshold);
871
+ }
872
+ if (message.vetoThreshold.length !== 0) {
873
+ writer.uint32(26).bytes(message.vetoThreshold);
874
+ }
875
+ return writer;
876
+ },
877
+ decode(input, length) {
878
+ const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);
879
+ let end = length === undefined ? reader.len : reader.pos + length;
880
+ const message = createBaseTallyParams();
881
+ while (reader.pos < end) {
882
+ const tag = reader.uint32();
883
+ switch (tag >>> 3) {
884
+ case 1:
885
+ if (tag !== 10) {
886
+ break;
887
+ }
888
+ message.quorum = reader.bytes();
889
+ continue;
890
+ case 2:
891
+ if (tag !== 18) {
892
+ break;
893
+ }
894
+ message.threshold = reader.bytes();
895
+ continue;
896
+ case 3:
897
+ if (tag !== 26) {
898
+ break;
899
+ }
900
+ message.vetoThreshold = reader.bytes();
901
+ continue;
902
+ }
903
+ if ((tag & 7) === 4 || tag === 0) {
904
+ break;
905
+ }
906
+ reader.skipType(tag & 7);
907
+ }
908
+ return message;
909
+ },
910
+ fromJSON(object) {
911
+ return {
912
+ quorum: isSet(object.quorum)
913
+ ? bytesFromBase64(object.quorum)
914
+ : new Uint8Array(),
915
+ threshold: isSet(object.threshold)
916
+ ? bytesFromBase64(object.threshold)
917
+ : new Uint8Array(),
918
+ vetoThreshold: isSet(object.vetoThreshold)
919
+ ? bytesFromBase64(object.vetoThreshold)
920
+ : new Uint8Array(),
921
+ };
922
+ },
923
+ toJSON(message) {
924
+ const obj = {};
925
+ message.quorum !== undefined &&
926
+ (obj.quorum = base64FromBytes(message.quorum !== undefined ? message.quorum : new Uint8Array()));
927
+ message.threshold !== undefined &&
928
+ (obj.threshold = base64FromBytes(message.threshold !== undefined ? message.threshold : new Uint8Array()));
929
+ message.vetoThreshold !== undefined &&
930
+ (obj.vetoThreshold = base64FromBytes(message.vetoThreshold !== undefined
931
+ ? message.vetoThreshold
932
+ : new Uint8Array()));
933
+ return obj;
934
+ },
935
+ create(base) {
936
+ return TallyParams.fromPartial(base ?? {});
937
+ },
938
+ fromPartial(object) {
939
+ const message = createBaseTallyParams();
940
+ message.quorum = object.quorum ?? new Uint8Array();
941
+ message.threshold = object.threshold ?? new Uint8Array();
942
+ message.vetoThreshold = object.vetoThreshold ?? new Uint8Array();
943
+ return message;
944
+ },
945
+ };
946
+ var tsProtoGlobalThis = (() => {
947
+ if (typeof globalThis !== "undefined") {
948
+ return globalThis;
949
+ }
950
+ if (typeof self !== "undefined") {
951
+ return self;
952
+ }
953
+ if (typeof window !== "undefined") {
954
+ return window;
955
+ }
956
+ if (typeof global !== "undefined") {
957
+ return global;
958
+ }
959
+ throw "Unable to locate global object";
960
+ })();
961
+ function bytesFromBase64(b64) {
962
+ if (tsProtoGlobalThis.Buffer) {
963
+ return Uint8Array.from(tsProtoGlobalThis.Buffer.from(b64, "base64"));
964
+ }
965
+ else {
966
+ const bin = tsProtoGlobalThis.atob(b64);
967
+ const arr = new Uint8Array(bin.length);
968
+ for (let i = 0; i < bin.length; ++i) {
969
+ arr[i] = bin.charCodeAt(i);
970
+ }
971
+ return arr;
972
+ }
973
+ }
974
+ function base64FromBytes(arr) {
975
+ if (tsProtoGlobalThis.Buffer) {
976
+ return tsProtoGlobalThis.Buffer.from(arr).toString("base64");
977
+ }
978
+ else {
979
+ const bin = [];
980
+ arr.forEach((byte) => {
981
+ bin.push(String.fromCharCode(byte));
982
+ });
983
+ return tsProtoGlobalThis.btoa(bin.join(""));
984
+ }
985
+ }
986
+ function toTimestamp(date) {
987
+ const seconds = date.getTime() / 1_000;
988
+ const nanos = (date.getTime() % 1_000) * 1_000_000;
989
+ return { seconds, nanos };
990
+ }
991
+ function fromTimestamp(t) {
992
+ let millis = (t.seconds || 0) * 1_000;
993
+ millis += (t.nanos || 0) / 1_000_000;
994
+ return new Date(millis);
995
+ }
996
+ function fromJsonTimestamp(o) {
997
+ if (o instanceof Date) {
998
+ return o;
999
+ }
1000
+ else if (typeof o === "string") {
1001
+ return new Date(o);
1002
+ }
1003
+ else {
1004
+ return fromTimestamp(Timestamp.fromJSON(o));
1005
+ }
1006
+ }
1007
+ function longToNumber(long) {
1008
+ if (long.gt(Number.MAX_SAFE_INTEGER)) {
1009
+ throw new tsProtoGlobalThis.Error("Value is larger than Number.MAX_SAFE_INTEGER");
1010
+ }
1011
+ return long.toNumber();
1012
+ }
1013
+ if (_m0.util.Long !== Long) {
1014
+ _m0.util.Long = Long;
1015
+ _m0.configure();
1016
+ }
1017
+ function isSet(value) {
1018
+ return value !== null && value !== undefined;
1019
+ }
1020
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ292LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2Nvc21vcy9nb3YvdjFiZXRhMS9nb3YudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0JBQW9CO0FBQ3BCLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUN4QixPQUFPLEdBQUcsTUFBTSxvQkFBb0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUM3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFL0QsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLG9CQUFvQixDQUFDO0FBRXBELG9GQUFvRjtBQUNwRixNQUFNLENBQU4sSUFBWSxVQVlYO0FBWkQsV0FBWSxVQUFVO0lBQ3BCLHFGQUFxRjtJQUNyRixpRkFBMkIsQ0FBQTtJQUMzQixtRUFBbUU7SUFDbkUsaUVBQW1CLENBQUE7SUFDbkIsZ0ZBQWdGO0lBQ2hGLHlFQUF1QixDQUFBO0lBQ3ZCLGdFQUFnRTtJQUNoRSwrREFBa0IsQ0FBQTtJQUNsQiw4RkFBOEY7SUFDOUYsbUZBQTRCLENBQUE7SUFDNUIsNERBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQVpXLFVBQVUsS0FBVixVQUFVLFFBWXJCO0FBRUQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLE1BQVc7SUFDNUMsUUFBUSxNQUFNLEVBQUU7UUFDZCxLQUFLLENBQUMsQ0FBQztRQUNQLEtBQUsseUJBQXlCO1lBQzVCLE9BQU8sVUFBVSxDQUFDLHVCQUF1QixDQUFDO1FBQzVDLEtBQUssQ0FBQyxDQUFDO1FBQ1AsS0FBSyxpQkFBaUI7WUFDcEIsT0FBTyxVQUFVLENBQUMsZUFBZSxDQUFDO1FBQ3BDLEtBQUssQ0FBQyxDQUFDO1FBQ1AsS0FBSyxxQkFBcUI7WUFDeEIsT0FBTyxVQUFVLENBQUMsbUJBQW1CLENBQUM7UUFDeEMsS0FBSyxDQUFDLENBQUM7UUFDUCxLQUFLLGdCQUFnQjtZQUNuQixPQUFPLFVBQVUsQ0FBQyxjQUFjLENBQUM7UUFDbkMsS0FBSyxDQUFDLENBQUM7UUFDUCxLQUFLLDBCQUEwQjtZQUM3QixPQUFPLFVBQVUsQ0FBQyx3QkFBd0IsQ0FBQztRQUM3QyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ1IsS0FBSyxjQUFjLENBQUM7UUFDcEI7WUFDRSxPQUFPLFVBQVUsQ0FBQyxZQUFZLENBQUM7S0FDbEM7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLGdCQUFnQixDQUFDLE1BQWtCO0lBQ2pELFFBQVEsTUFBTSxFQUFFO1FBQ2QsS0FBSyxVQUFVLENBQUMsdUJBQXVCO1lBQ3JDLE9BQU8seUJBQXlCLENBQUM7UUFDbkMsS0FBSyxVQUFVLENBQUMsZUFBZTtZQUM3QixPQUFPLGlCQUFpQixDQUFDO1FBQzNCLEtBQUssVUFBVSxDQUFDLG1CQUFtQjtZQUNqQyxPQUFPLHFCQUFxQixDQUFDO1FBQy9CLEtBQUssVUFBVSxDQUFDLGNBQWM7WUFDNUIsT0FBTyxnQkFBZ0IsQ0FBQztRQUMxQixLQUFLLFVBQVUsQ0FBQyx3QkFBd0I7WUFDdEMsT0FBTywwQkFBMEIsQ0FBQztRQUNwQyxLQUFLLFVBQVUsQ0FBQyxZQUFZLENBQUM7UUFDN0I7WUFDRSxPQUFPLGNBQWMsQ0FBQztLQUN6QjtBQUNILENBQUM7QUFFRCxrRUFBa0U7QUFDbEUsTUFBTSxDQUFOLElBQVksY0E2Qlg7QUE3QkQsV0FBWSxjQUFjO0lBQ3hCLHFHQUFxRztJQUNyRyxpR0FBK0IsQ0FBQTtJQUMvQjs7O09BR0c7SUFDSCx1R0FBa0MsQ0FBQTtJQUNsQzs7O09BR0c7SUFDSCxxR0FBaUMsQ0FBQTtJQUNqQzs7O09BR0c7SUFDSCx1RkFBMEIsQ0FBQTtJQUMxQjs7O09BR0c7SUFDSCwyRkFBNEIsQ0FBQTtJQUM1Qjs7O09BR0c7SUFDSCx1RkFBMEIsQ0FBQTtJQUMxQixvRUFBaUIsQ0FBQTtBQUNuQixDQUFDLEVBN0JXLGNBQWMsS0FBZCxjQUFjLFFBNkJ6QjtBQUVELE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxNQUFXO0lBQ2hELFFBQVEsTUFBTSxFQUFFO1FBQ2QsS0FBSyxDQUFDLENBQUM7UUFDUCxLQUFLLDZCQUE2QjtZQUNoQyxPQUFPLGNBQWMsQ0FBQywyQkFBMkIsQ0FBQztRQUNwRCxLQUFLLENBQUMsQ0FBQztRQUNQLEtBQUssZ0NBQWdDO1lBQ25DLE9BQU8sY0FBYyxDQUFDLDhCQUE4QixDQUFDO1FBQ3ZELEtBQUssQ0FBQyxDQUFDO1FBQ1AsS0FBSywrQkFBK0I7WUFDbEMsT0FBTyxjQUFjLENBQUMsNkJBQTZCLENBQUM7UUFDdEQsS0FBSyxDQUFDLENBQUM7UUFDUCxLQUFLLHdCQUF3QjtZQUMzQixPQUFPLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQztRQUMvQyxLQUFLLENBQUMsQ0FBQztRQUNQLEtBQUssMEJBQTBCO1lBQzdCLE9BQU8sY0FBYyxDQUFDLHdCQUF3QixDQUFDO1FBQ2pELEtBQUssQ0FBQyxDQUFDO1FBQ1AsS0FBSyx3QkFBd0I7WUFDM0IsT0FBTyxjQUFjLENBQUMsc0JBQXNCLENBQUM7UUFDL0MsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNSLEtBQUssY0FBYyxDQUFDO1FBQ3BCO1lBQ0UsT0FBTyxjQUFjLENBQUMsWUFBWSxDQUFDO0tBQ3RDO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxNQUFzQjtJQUN6RCxRQUFRLE1BQU0sRUFBRTtRQUNkLEtBQUssY0FBYyxDQUFDLDJCQUEyQjtZQUM3QyxPQUFPLDZCQUE2QixDQUFDO1FBQ3ZDLEtBQUssY0FBYyxDQUFDLDhCQUE4QjtZQUNoRCxPQUFPLGdDQUFnQyxDQUFDO1FBQzFDLEtBQUssY0FBYyxDQUFDLDZCQUE2QjtZQUMvQyxPQUFPLCtCQUErQixDQUFDO1FBQ3pDLEtBQUssY0FBYyxDQUFDLHNCQUFzQjtZQUN4QyxPQUFPLHdCQUF3QixDQUFDO1FBQ2xDLEtBQUssY0FBYyxDQUFDLHdCQUF3QjtZQUMxQyxPQUFPLDBCQUEwQixDQUFDO1FBQ3BDLEtBQUssY0FBYyxDQUFDLHNCQUFzQjtZQUN4QyxPQUFPLHdCQUF3QixDQUFDO1FBQ2xDLEtBQUssY0FBYyxDQUFDLFlBQVksQ0FBQztRQUNqQztZQUNFLE9BQU8sY0FBYyxDQUFDO0tBQ3pCO0FBQ0gsQ0FBQztBQXNJRCxTQUFTLDRCQUE0QjtJQUNuQyxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbkMsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHO0lBQ2hDLE1BQU0sQ0FDSixPQUEyQixFQUMzQixTQUFxQixHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtRQUV4QyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3hCLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN4QztRQUNELElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxFQUFFLEVBQUU7WUFDekIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUE4QixFQUFFLE1BQWU7UUFDcEQsTUFBTSxNQUFNLEdBQ1YsS0FBSyxZQUFZLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakUsSUFBSSxHQUFHLEdBQUcsTUFBTSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUM7UUFDbEUsTUFBTSxPQUFPLEdBQUcsNEJBQTRCLEVBQUUsQ0FBQztRQUMvQyxPQUFPLE1BQU0sQ0FBQyxHQUFHLEdBQUcsR0FBRyxFQUFFO1lBQ3ZCLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM1QixRQUFRLEdBQUcsS0FBSyxDQUFDLEVBQUU7Z0JBQ2pCLEtBQUssQ0FBQztvQkFDSixJQUFJLEdBQUcsS0FBSyxDQUFDLEVBQUU7d0JBQ2IsTUFBTTtxQkFDUDtvQkFFRCxPQUFPLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQVMsQ0FBQztvQkFDdkMsU0FBUztnQkFDWCxLQUFLLENBQUM7b0JBQ0osSUFBSSxHQUFHLEtBQUssRUFBRSxFQUFFO3dCQUNkLE1BQU07cUJBQ1A7b0JBRUQsT0FBTyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ2pDLFNBQVM7YUFDWjtZQUNELElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLEVBQUU7Z0JBQ2hDLE1BQU07YUFDUDtZQUNELE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQzFCO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVELFFBQVEsQ0FBQyxNQUFXO1FBQ2xCLE9BQU87WUFDTCxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BFLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO1NBQzFELENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQTJCO1FBQ2hDLE1BQU0sR0FBRyxHQUFRLEVBQUUsQ0FBQztRQUNwQixPQUFPLENBQUMsTUFBTSxLQUFLLFNBQVM7WUFDMUIsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ2xELE9BQU8sQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDOUQsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQsTUFBTSxDQUNKLElBQVE7UUFFUixPQUFPLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELFdBQVcsQ0FDVCxNQUFTO1FBRVQsTUFBTSxPQUFPLEdBQUcsNEJBQTRCLEVBQUUsQ0FBQztRQUMvQyxPQUFPLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUM7UUFDckMsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztDQUNGLENBQUM7QUFFRixTQUFTLHNCQUFzQjtJQUM3QixPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDeEMsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRztJQUMxQixNQUFNLENBQ0osT0FBcUIsRUFDckIsU0FBcUIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7UUFFeEMsSUFBSSxPQUFPLENBQUMsS0FBSyxLQUFLLEVBQUUsRUFBRTtZQUN4QixNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDekM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxXQUFXLEtBQUssRUFBRSxFQUFFO1lBQzlCLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUMvQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBOEIsRUFBRSxNQUFlO1FBQ3BELE1BQU0sTUFBTSxHQUNWLEtBQUssWUFBWSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pFLElBQUksR0FBRyxHQUFHLE1BQU0sS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDO1FBQ2xFLE1BQU0sT0FBTyxHQUFHLHNCQUFzQixFQUFFLENBQUM7UUFDekMsT0FBTyxNQUFNLENBQUMsR0FBRyxHQUFHLEdBQUcsRUFBRTtZQUN2QixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDNUIsUUFBUSxHQUFHLEtBQUssQ0FBQyxFQUFFO2dCQUNqQixLQUFLLENBQUM7b0JBQ0osSUFBSSxHQUFHLEtBQUssRUFBRSxFQUFFO3dCQUNkLE1BQU07cUJBQ1A7b0JBRUQsT0FBTyxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ2hDLFNBQVM7Z0JBQ1gsS0FBSyxDQUFDO29CQUNKLElBQUksR0FBRyxLQUFLLEVBQUUsRUFBRTt3QkFDZCxNQUFNO3FCQUNQO29CQUVELE9BQU8sQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUN0QyxTQUFTO2FBQ1o7WUFDRCxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxFQUFFO2dCQUNoQyxNQUFNO2FBQ1A7WUFDRCxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUMxQjtRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxRQUFRLENBQUMsTUFBVztRQUNsQixPQUFPO1lBQ0wsS0FBSyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDdEQsV0FBVyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7U0FDekUsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsT0FBcUI7UUFDMUIsTUFBTSxHQUFHLEdBQVEsRUFBRSxDQUFDO1FBQ3BCLE9BQU8sQ0FBQyxLQUFLLEtBQUssU0FBUyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0QsT0FBTyxDQUFDLFdBQVcsS0FBSyxTQUFTO1lBQy9CLENBQUMsR0FBRyxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDMUMsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQsTUFBTSxDQUNKLElBQVE7UUFFUixPQUFPLFlBQVksQ0FBQyxXQUFXLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxXQUFXLENBQ1QsTUFBUztRQUVULE1BQU0sT0FBTyxHQUFHLHNCQUFzQixFQUFFLENBQUM7UUFDekMsT0FBTyxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUNuQyxPQUFPLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO1FBQy9DLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7Q0FDRixDQUFDO0FBRUYsU0FBUyxpQkFBaUI7SUFDeEIsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDdEQsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRztJQUNyQixNQUFNLENBQ0osT0FBZ0IsRUFDaEIsU0FBcUIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7UUFFeEMsSUFBSSxPQUFPLENBQUMsVUFBVSxLQUFLLENBQUMsRUFBRTtZQUM1QixNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDN0M7UUFDRCxJQUFJLE9BQU8sQ0FBQyxTQUFTLEtBQUssRUFBRSxFQUFFO1lBQzVCLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUM3QztRQUNELEtBQUssTUFBTSxDQUFDLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRTtZQUM5QixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUUsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDcEQ7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQThCLEVBQUUsTUFBZTtRQUNwRCxNQUFNLE1BQU0sR0FDVixLQUFLLFlBQVksR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRSxJQUFJLEdBQUcsR0FBRyxNQUFNLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQztRQUNsRSxNQUFNLE9BQU8sR0FBRyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3BDLE9BQU8sTUFBTSxDQUFDLEdBQUcsR0FBRyxHQUFHLEVBQUU7WUFDdkIsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzVCLFFBQVEsR0FBRyxLQUFLLENBQUMsRUFBRTtnQkFDakIsS0FBSyxDQUFDO29CQUNKLElBQUksR0FBRyxLQUFLLENBQUMsRUFBRTt3QkFDYixNQUFNO3FCQUNQO29CQUVELE9BQU8sQ0FBQyxVQUFVLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQVUsQ0FBQyxDQUFDO29CQUMzRCxTQUFTO2dCQUNYLEtBQUssQ0FBQztvQkFDSixJQUFJLEdBQUcsS0FBSyxFQUFFLEVBQUU7d0JBQ2QsTUFBTTtxQkFDUDtvQkFFRCxPQUFPLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDcEMsU0FBUztnQkFDWCxLQUFLLENBQUM7b0JBQ0osSUFBSSxHQUFHLEtBQUssRUFBRSxFQUFFO3dCQUNkLE1BQU07cUJBQ1A7b0JBRUQsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDMUQsU0FBUzthQUNaO1lBQ0QsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsRUFBRTtnQkFDaEMsTUFBTTthQUNQO1lBQ0QsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDMUI7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQsUUFBUSxDQUFDLE1BQVc7UUFDbEIsT0FBTztZQUNMLFVBQVUsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BFLFNBQVMsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ2xFLE1BQU0sRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUM7Z0JBQ25DLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDakQsQ0FBQyxDQUFDLEVBQUU7U0FDUCxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxPQUFnQjtRQUNyQixNQUFNLEdBQUcsR0FBUSxFQUFFLENBQUM7UUFDcEIsT0FBTyxDQUFDLFVBQVUsS0FBSyxTQUFTO1lBQzlCLENBQUMsR0FBRyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ3BELE9BQU8sQ0FBQyxTQUFTLEtBQUssU0FBUyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkUsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFO1lBQ2xCLEdBQUcsQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1NBQzFFO2FBQU07WUFDTCxHQUFHLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztTQUNqQjtRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELE1BQU0sQ0FBMkMsSUFBUTtRQUN2RCxPQUFPLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxXQUFXLENBQTJDLE1BQVM7UUFDN0QsTUFBTSxPQUFPLEdBQUcsaUJBQWlCLEVBQUUsQ0FBQztRQUNwQyxPQUFPLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDO1FBQzVDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUM7UUFDM0MsT0FBTyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0RSxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0NBQ0YsQ0FBQztBQUVGLFNBQVMsa0JBQWtCO0lBQ3pCLE9BQU87UUFDTCxVQUFVLEVBQUUsQ0FBQztRQUNiLE9BQU8sRUFBRSxTQUFTO1FBQ2xCLE1BQU0sRUFBRSxDQUFDO1FBQ1QsZ0JBQWdCLEVBQUUsU0FBUztRQUMzQixVQUFVLEVBQUUsU0FBUztRQUNyQixjQUFjLEVBQUUsU0FBUztRQUN6QixZQUFZLEVBQUUsRUFBRTtRQUNoQixlQUFlLEVBQUUsU0FBUztRQUMxQixhQUFhLEVBQUUsU0FBUztLQUN6QixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRztJQUN0QixNQUFNLENBQ0osT0FBaUIsRUFDakIsU0FBcUIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7UUFFeEMsSUFBSSxPQUFPLENBQUMsVUFBVSxLQUFLLENBQUMsRUFBRTtZQUM1QixNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDN0M7UUFDRCxJQUFJLE9BQU8sQ0FBQyxPQUFPLEtBQUssU0FBUyxFQUFFO1lBQ2pDLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDaEU7UUFDRCxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3hCLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN6QztRQUNELElBQUksT0FBTyxDQUFDLGdCQUFnQixLQUFLLFNBQVMsRUFBRTtZQUMxQyxXQUFXLENBQUMsTUFBTSxDQUNoQixPQUFPLENBQUMsZ0JBQWdCLEVBQ3hCLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQ3pCLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDWjtRQUNELElBQUksT0FBTyxDQUFDLFVBQVUsS0FBSyxTQUFTLEVBQUU7WUFDcEMsU0FBUyxDQUFDLE1BQU0sQ0FDZCxXQUFXLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUMvQixNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUN6QixDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ1o7UUFDRCxJQUFJLE9BQU8sQ0FBQyxjQUFjLEtBQUssU0FBUyxFQUFFO1lBQ3hDLFNBQVMsQ0FBQyxNQUFNLENBQ2QsV0FBVyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsRUFDbkMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FDekIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUNaO1FBQ0QsS0FBSyxNQUFNLENBQUMsSUFBSSxPQUFPLENBQUMsWUFBWSxFQUFFO1lBQ3BDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBRSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUNwRDtRQUNELElBQUksT0FBTyxDQUFDLGVBQWUsS0FBSyxTQUFTLEVBQUU7WUFDekMsU0FBUyxDQUFDLE1BQU0sQ0FDZCxXQUFXLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxFQUNwQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUN6QixDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ1o7UUFDRCxJQUFJLE9BQU8sQ0FBQyxhQUFhLEtBQUssU0FBUyxFQUFFO1lBQ3ZDLFNBQVMsQ0FBQyxNQUFNLENBQ2QsV0FBVyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsRUFDbEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FDekIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUNaO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUE4QixFQUFFLE1BQWU7UUFDcEQsTUFBTSxNQUFNLEdBQ1YsS0FBSyxZQUFZLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakUsSUFBSSxHQUFHLEdBQUcsTUFBTSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUM7UUFDbEUsTUFBTSxPQUFPLEdBQUcsa0JBQWtCLEVBQUUsQ0FBQztRQUNyQyxPQUFPLE1BQU0sQ0FBQyxHQUFHLEdBQUcsR0FBRyxFQUFFO1lBQ3ZCLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM1QixRQUFRLEdBQUcsS0FBSyxDQUFDLEVBQUU7Z0JBQ2pCLEtBQUssQ0FBQztvQkFDSixJQUFJLEdBQUcsS0FBSyxDQUFDLEVBQUU7d0JBQ2IsTUFBTTtxQkFDUDtvQkFFRCxPQUFPLENBQUMsVUFBVSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFVLENBQUMsQ0FBQztvQkFDM0QsU0FBUztnQkFDWCxLQUFLLENBQUM7b0JBQ0osSUFBSSxHQUFHLEtBQUssRUFBRSxFQUFFO3dCQUNkLE1BQU07cUJBQ1A7b0JBRUQsT0FBTyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztvQkFDdEQsU0FBUztnQkFDWCxLQUFLLENBQUM7b0JBQ0osSUFBSSxHQUFHLEtBQUssRUFBRSxFQUFFO3dCQUNkLE1BQU07cUJBQ1A7b0JBRUQsT0FBTyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFTLENBQUM7b0JBQ3ZDLFNBQVM7Z0JBQ1gsS0FBSyxDQUFDO29CQUNKLElBQUksR0FBRyxLQUFLLEVBQUUsRUFBRTt3QkFDZCxNQUFNO3FCQUNQO29CQUVELE9BQU8sQ0FBQyxnQkFBZ0IsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUMzQyxNQUFNLEVBQ04sTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUNoQixDQUFDO29CQUNGLFNBQVM7Z0JBQ1gsS0FBSyxDQUFDO29CQUNKLElBQUksR0FBRyxLQUFLLEVBQUUsRUFBRTt3QkFDZCxNQUFNO3FCQUNQO29CQUVELE9BQU8sQ0FBQyxVQUFVLEdBQUcsYUFBYSxDQUNoQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FDMUMsQ0FBQztvQkFDRixTQUFTO2dCQUNYLEtBQUssQ0FBQztvQkFDSixJQUFJLEdBQUcsS0FBSyxFQUFFLEVBQUU7d0JBQ2QsTUFBTTtxQkFDUDtvQkFFRCxPQUFPLENBQUMsY0FBYyxHQUFHLGFBQWEsQ0FDcEMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQzFDLENBQUM7b0JBQ0YsU0FBUztnQkFDWCxLQUFLLENBQUM7b0JBQ0osSUFBSSxHQUFHLEtBQUssRUFBRSxFQUFFO3dCQUNkLE1BQU07cUJBQ1A7b0JBRUQsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDaEUsU0FBUztnQkFDWCxLQUFLLENBQUM7b0JBQ0osSUFBSSxHQUFHLEtBQUssRUFBRSxFQUFFO3dCQUNkLE1BQU07cUJBQ1A7b0JBRUQsT0FBTyxDQUFDLGVBQWUsR0FBRyxhQUFhLENBQ3JDLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUMxQyxDQUFDO29CQUNGLFNBQVM7Z0JBQ1gsS0FBSyxDQUFDO29CQUNKLElBQUksR0FBRyxLQUFLLEVBQUUsRUFBRTt3QkFDZCxNQUFNO3FCQUNQO29CQUVELE9BQU8sQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUNuQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FDMUMsQ0FBQztvQkFDRixTQUFTO2FBQ1o7WUFDRCxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxFQUFFO2dCQUNoQyxNQUFNO2FBQ1A7WUFDRCxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUMxQjtRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxRQUFRLENBQUMsTUFBVztRQUNsQixPQUFPO1lBQ0wsVUFBVSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEUsT0FBTyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO1lBQ3pFLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEUsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDOUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDO2dCQUMvQyxDQUFDLENBQUMsU0FBUztZQUNiLFVBQVUsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQztnQkFDbEMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7Z0JBQ3RDLENBQUMsQ0FBQyxTQUFTO1lBQ2IsY0FBYyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDO2dCQUMxQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQztnQkFDMUMsQ0FBQyxDQUFDLFNBQVM7WUFDYixZQUFZLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDO2dCQUMvQyxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZELENBQUMsQ0FBQyxFQUFFO1lBQ04sZUFBZSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDO2dCQUM1QyxDQUFDLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQztnQkFDM0MsQ0FBQyxDQUFDLFNBQVM7WUFDYixhQUFhLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUM7Z0JBQ3hDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDO2dCQUN6QyxDQUFDLENBQUMsU0FBUztTQUNkLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQWlCO1FBQ3RCLE1BQU0sR0FBRyxHQUFRLEVBQUUsQ0FBQztRQUNwQixPQUFPLENBQUMsVUFBVSxLQUFLLFNBQVM7WUFDOUIsQ0FBQyxHQUFHLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDcEQsT0FBTyxDQUFDLE9BQU8sS0FBSyxTQUFTO1lBQzNCLENBQUMsR0FBRyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDNUUsT0FBTyxDQUFDLE1BQU0sS0FBSyxTQUFTO1lBQzFCLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUN0RCxPQUFPLENBQUMsZ0JBQWdCLEtBQUssU0FBUztZQUNwQyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsZ0JBQWdCO2dCQUM5QyxDQUFDLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUM7Z0JBQzlDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNqQixPQUFPLENBQUMsVUFBVSxLQUFLLFNBQVM7WUFDOUIsQ0FBQyxHQUFHLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUN0RCxPQUFPLENBQUMsY0FBYyxLQUFLLFNBQVM7WUFDbEMsQ0FBQyxHQUFHLENBQUMsY0FBYyxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUM5RCxJQUFJLE9BQU8sQ0FBQyxZQUFZLEVBQUU7WUFDeEIsR0FBRyxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ2hELENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUMvQixDQUFDO1NBQ0g7YUFBTTtZQUNMLEdBQUcsQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1NBQ3ZCO1FBQ0QsT0FBTyxDQUFDLGVBQWUsS0FBSyxTQUFTO1lBQ25DLENBQUMsR0FBRyxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDaEUsT0FBTyxDQUFDLGFBQWEsS0FBSyxTQUFTO1lBQ2pDLENBQUMsR0FBRyxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDNUQsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQsTUFBTSxDQUE0QyxJQUFRO1FBQ3hELE9BQU8sUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELFdBQVcsQ0FBNEMsTUFBUztRQUM5RCxNQUFNLE9BQU8sR0FBRyxrQkFBa0IsRUFBRSxDQUFDO1FBQ3JDLE9BQU8sQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUM7UUFDNUMsT0FBTyxDQUFDLE9BQU87WUFDYixNQUFNLENBQUMsT0FBTyxLQUFLLFNBQVMsSUFBSSxNQUFNLENBQUMsT0FBTyxLQUFLLElBQUk7Z0JBQ3JELENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7Z0JBQ2pDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDaEIsT0FBTyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQztRQUNwQyxPQUFPLENBQUMsZ0JBQWdCO1lBQ3RCLE1BQU0sQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTLElBQUksTUFBTSxDQUFDLGdCQUFnQixLQUFLLElBQUk7Z0JBQ3ZFLENBQUMsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDbEQsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNoQixPQUFPLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLElBQUksU0FBUyxDQUFDO1FBQ3BELE9BQU8sQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDLGNBQWMsSUFBSSxTQUFTLENBQUM7UUFDNUQsT0FBTyxDQUFDLFlBQVk7WUFDbEIsTUFBTSxDQUFDLFlBQVksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDN0QsT0FBTyxDQUFDLGVBQWUsR0FBRyxNQUFNLENBQUMsZUFBZSxJQUFJLFNBQVMsQ0FBQztRQUM5RCxPQUFPLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLElBQUksU0FBUyxDQUFDO1FBQzFELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7Q0FDRixDQUFDO0FBRUYsU0FBUyxxQkFBcUI7SUFDNUIsT0FBTyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUMxRCxDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHO0lBQ3pCLE1BQU0sQ0FDSixPQUFvQixFQUNwQixTQUFxQixHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtRQUV4QyxJQUFJLE9BQU8sQ0FBQyxHQUFHLEtBQUssRUFBRSxFQUFFO1lBQ3RCLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN2QztRQUNELElBQUksT0FBTyxDQUFDLE9BQU8sS0FBSyxFQUFFLEVBQUU7WUFDMUIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzNDO1FBQ0QsSUFBSSxPQUFPLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNyQixNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDdEM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxVQUFVLEtBQUssRUFBRSxFQUFFO1lBQzdCLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUM5QztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBOEIsRUFBRSxNQUFlO1FBQ3BELE1BQU0sTUFBTSxHQUNWLEtBQUssWUFBWSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pFLElBQUksR0FBRyxHQUFHLE1BQU0sS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDO1FBQ2xFLE1BQU0sT0FBTyxHQUFHLHFCQUFxQixFQUFFLENBQUM7UUFDeEMsT0FBTyxNQUFNLENBQUMsR0FBRyxHQUFHLEdBQUcsRUFBRTtZQUN2QixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDNUIsUUFBUSxHQUFHLEtBQUssQ0FBQyxFQUFFO2dCQUNqQixLQUFLLENBQUM7b0JBQ0osSUFBSSxHQUFHLEtBQUssRUFBRSxFQUFFO3dCQUNkLE1BQU07cUJBQ1A7b0JBRUQsT0FBTyxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQzlCLFNBQVM7Z0JBQ1gsS0FBSyxDQUFDO29CQUNKLElBQUksR0FBRyxLQUFLLEVBQUUsRUFBRTt3QkFDZCxNQUFNO3FCQUNQO29CQUVELE9BQU8sQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNsQyxTQUFTO2dCQUNYLEtBQUssQ0FBQztvQkFDSixJQUFJLEdBQUcsS0FBSyxFQUFFLEVBQUU7d0JBQ2QsTUFBTTtxQkFDUDtvQkFFRCxPQUFPLENBQUMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDN0IsU0FBUztnQkFDWCxLQUFLLENBQUM7b0JBQ0osSUFBSSxHQUFHLEtBQUssRUFBRSxFQUFFO3dCQUNkLE1BQU07cUJBQ1A7b0JBRUQsT0FBTyxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ3JDLFNBQVM7YUFDWjtZQUNELElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLEVBQUU7Z0JBQ2hDLE1BQU07YUFDUDtZQUNELE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQzFCO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVELFFBQVEsQ0FBQyxNQUFXO1FBQ2xCLE9BQU87WUFDTCxHQUFHLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNoRCxPQUFPLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUM1RCxFQUFFLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUM3QyxVQUFVLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtTQUN0RSxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxPQUFvQjtRQUN6QixNQUFNLEdBQUcsR0FBUSxFQUFFLENBQUM7UUFDcEIsT0FBTyxDQUFDLEdBQUcsS0FBSyxTQUFTLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyRCxPQUFPLENBQUMsT0FBTyxLQUFLLFNBQVMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pFLE9BQU8sQ0FBQyxFQUFFLEtBQUssU0FBUyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbEQsT0FBTyxDQUFDLFVBQVUsS0FBSyxTQUFTLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMxRSxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRCxNQUFNLENBQStDLElBQVE7UUFDM0QsT0FBTyxXQUFXLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsV0FBVyxDQUNULE1BQVM7UUFFVCxNQUFNLE9BQU8sR0FBRyxxQkFBcUIsRUFBRSxDQUFDO1FBQ3hDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUM7UUFDL0IsT0FBTyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUN2QyxPQUFPLENBQUMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDO1FBQzdCLE9BQU8sQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUM7UUFDN0MsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztDQUNGLENBQUM7QUFFRixTQUFTLGNBQWM7SUFDckIsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUM5RCxDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sSUFBSSxHQUFHO0lBQ2xCLE1BQU0sQ0FBQyxPQUFhLEVBQUUsU0FBcUIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7UUFDNUQsSUFBSSxPQUFPLENBQUMsVUFBVSxLQUFLLENBQUMsRUFBRTtZQUM1QixNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDN0M7UUFDRCxJQUFJLE9BQU8sQ0FBQyxLQUFLLEtBQUssRUFBRSxFQUFFO1lBQ3hCLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN6QztRQUNELElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDeEIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3pDO1FBQ0QsS0FBSyxNQUFNLENBQUMsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFO1lBQy9CLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFFLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ2xFO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUE4QixFQUFFLE1BQWU7UUFDcEQsTUFBTSxNQUFNLEdBQ1YsS0FBSyxZQUFZLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakUsSUFBSSxHQUFHLEdBQUcsTUFBTSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUM7UUFDbEUsTUFBTSxPQUFPLEdBQUcsY0FBYyxFQUFFLENBQUM7UUFDakMsT0FBTyxNQUFNLENBQUMsR0FBRyxHQUFHLEdBQUcsRUFBRTtZQUN2QixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDNUIsUUFBUSxHQUFHLEtBQUssQ0FBQyxFQUFFO2dCQUNqQixLQUFLLENBQUM7b0JBQ0osSUFBSSxHQUFHLEtBQUssQ0FBQyxFQUFFO3dCQUNiLE1BQU07cUJBQ1A7b0JBRUQsT0FBTyxDQUFDLFVBQVUsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBVSxDQUFDLENBQUM7b0JBQzNELFNBQVM7Z0JBQ1gsS0FBSyxDQUFDO29CQUNKLElBQUksR0FBRyxLQUFLLEVBQUUsRUFBRTt3QkFDZCxNQUFNO3FCQUNQO29CQUVELE9BQU8sQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNoQyxTQUFTO2dCQUNYLEtBQUssQ0FBQztvQkFDSixJQUFJLEdBQUcsS0FBSyxFQUFFLEVBQUU7d0JBQ2QsTUFBTTtxQkFDUDtvQkFFRCxPQUFPLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQVMsQ0FBQztvQkFDdkMsU0FBUztnQkFDWCxLQUFLLENBQUM7b0JBQ0osSUFBSSxHQUFHLEtBQUssRUFBRSxFQUFFO3dCQUNkLE1BQU07cUJBQ1A7b0JBRUQsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQ2xCLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQ25ELENBQUM7b0JBQ0YsU0FBUzthQUNaO1lBQ0QsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsRUFBRTtnQkFDaEMsTUFBTTthQUNQO1lBQ0QsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDMUI7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQsUUFBUSxDQUFDLE1BQVc7UUFDbEIsT0FBTztZQUNMLFVBQVUsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BFLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3RELE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEUsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQztnQkFDckMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2hFLENBQUMsQ0FBQyxFQUFFO1NBQ1AsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsT0FBYTtRQUNsQixNQUFNLEdBQUcsR0FBUSxFQUFFLENBQUM7UUFDcEIsT0FBTyxDQUFDLFVBQVUsS0FBSyxTQUFTO1lBQzlCLENBQUMsR0FBRyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ3BELE9BQU8sQ0FBQyxLQUFLLEtBQUssU0FBUyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0QsT0FBTyxDQUFDLE1BQU0sS0FBSyxTQUFTO1lBQzFCLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUNsRCxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUU7WUFDbkIsR0FBRyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ3RDLENBQUMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQzdDLENBQUM7U0FDSDthQUFNO1lBQ0wsR0FBRyxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7U0FDbEI7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRCxNQUFNLENBQXdDLElBQVE7UUFDcEQsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsV0FBVyxDQUF3QyxNQUFTO1FBQzFELE1BQU0sT0FBTyxHQUFHLGNBQWMsRUFBRSxDQUFDO1FBQ2pDLE9BQU8sQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUM7UUFDNUMsT0FBTyxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUNuQyxPQUFPLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sQ0FBQyxPQUFPO1lBQ2IsTUFBTSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0RSxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0NBQ0YsQ0FBQztBQUVGLFNBQVMsdUJBQXVCO0lBQzlCLE9BQU8sRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxDQUFDO0FBQ3pELENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUc7SUFDM0IsTUFBTSxDQUNKLE9BQXNCLEVBQ3RCLFNBQXFCLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFO1FBRXhDLEtBQUssTUFBTSxDQUFDLElBQUksT0FBTyxDQUFDLFVBQVUsRUFBRTtZQUNsQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUUsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDcEQ7UUFDRCxJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTLEVBQUU7WUFDMUMsUUFBUSxDQUFDLE1BQU0sQ0FDYixPQUFPLENBQUMsZ0JBQWdCLEVBQ3hCLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQ3pCLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDWjtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBOEIsRUFBRSxNQUFlO1FBQ3BELE1BQU0sTUFBTSxHQUNWLEtBQUssWUFBWSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pFLElBQUksR0FBRyxHQUFHLE1BQU0sS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDO1FBQ2xFLE1BQU0sT0FBTyxHQUFHLHVCQUF1QixFQUFFLENBQUM7UUFDMUMsT0FBTyxNQUFNLENBQUMsR0FBRyxHQUFHLEdBQUcsRUFBRTtZQUN2QixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDNUIsUUFBUSxHQUFHLEtBQUssQ0FBQyxFQUFFO2dCQUNqQixLQUFLLENBQUM7b0JBQ0osSUFBSSxHQUFHLEtBQUssRUFBRSxFQUFFO3dCQUNkLE1BQU07cUJBQ1A7b0JBRUQsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDOUQsU0FBUztnQkFDWCxLQUFLLENBQUM7b0JBQ0osSUFBSSxHQUFHLEtBQUssRUFBRSxFQUFFO3dCQUNkLE1BQU07cUJBQ1A7b0JBRUQsT0FBTyxDQUFDLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO29CQUNwRSxTQUFTO2FBQ1o7WUFDRCxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxFQUFFO2dCQUNoQyxNQUFNO2FBQ1A7WUFDRCxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUMxQjtRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxRQUFRLENBQUMsTUFBVztRQUNsQixPQUFPO1lBQ0wsVUFBVSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQztnQkFDM0MsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNyRCxDQUFDLENBQUMsRUFBRTtZQUNOLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7Z0JBQzlDLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDNUMsQ0FBQyxDQUFDLFNBQVM7U0FDZCxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxPQUFzQjtRQUMzQixNQUFNLEdBQUcsR0FBUSxFQUFFLENBQUM7UUFDcEIsSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFO1lBQ3RCLEdBQUcsQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUM1QyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FDL0IsQ0FBQztTQUNIO2FBQU07WUFDTCxHQUFHLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztTQUNyQjtRQUNELE9BQU8sQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTO1lBQ3BDLENBQUMsR0FBRyxDQUFDLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxnQkFBZ0I7Z0JBQzlDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDM0MsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2pCLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELE1BQU0sQ0FDSixJQUFRO1FBRVIsT0FBTyxhQUFhLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsV0FBVyxDQUNULE1BQVM7UUFFVCxNQUFNLE9BQU8sR0FBRyx1QkFBdUIsRUFBRSxDQUFDO1FBQzFDLE9BQU8sQ0FBQyxVQUFVO1lBQ2hCLE1BQU0sQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNELE9BQU8sQ0FBQyxnQkFBZ0I7WUFDdEIsTUFBTSxDQUFDLGdCQUFnQixLQUFLLFNBQVMsSUFBSSxNQUFNLENBQUMsZ0JBQWdCLEtBQUssSUFBSTtnQkFDdkUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDO2dCQUMvQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ2hCLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7Q0FDRixDQUFDO0FBRUYsU0FBUyxzQkFBc0I7SUFDN0IsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsQ0FBQztBQUNyQyxDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHO0lBQzFCLE1BQU0sQ0FDSixPQUFxQixFQUNyQixTQUFxQixHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtRQUV4QyxJQUFJLE9BQU8sQ0FBQyxZQUFZLEtBQUssU0FBUyxFQUFFO1lBQ3RDLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDMUU7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQThCLEVBQUUsTUFBZTtRQUNwRCxNQUFNLE1BQU0sR0FDVixLQUFLLFlBQVksR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRSxJQUFJLEdBQUcsR0FBRyxNQUFNLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQztRQUNsRSxNQUFNLE9BQU8sR0FBRyxzQkFBc0IsRUFBRSxDQUFDO1FBQ3pDLE9BQU8sTUFBTSxDQUFDLEdBQUcsR0FBRyxHQUFHLEVBQUU7WUFDdkIsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzVCLFFBQVEsR0FBRyxLQUFLLENBQUMsRUFBRTtnQkFDakIsS0FBSyxDQUFDO29CQUNKLElBQUksR0FBRyxLQUFLLEVBQUUsRUFBRTt3QkFDZCxNQUFNO3FCQUNQO29CQUVELE9BQU8sQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7b0JBQ2hFLFNBQVM7YUFDWjtZQUNELElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLEVBQUU7Z0JBQ2hDLE1BQU07YUFDUDtZQUNELE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQzFCO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVELFFBQVEsQ0FBQyxNQUFXO1FBQ2xCLE9BQU87WUFDTCxZQUFZLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUM7Z0JBQ3RDLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUM7Z0JBQ3hDLENBQUMsQ0FBQyxTQUFTO1NBQ2QsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsT0FBcUI7UUFDMUIsTUFBTSxHQUFHLEdBQVEsRUFBRSxDQUFDO1FBQ3BCLE9BQU8sQ0FBQyxZQUFZLEtBQUssU0FBUztZQUNoQyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLFlBQVk7Z0JBQ3RDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7Z0JBQ3ZDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNqQixPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRCxNQUFNLENBQ0osSUFBUTtRQUVSLE9BQU8sWUFBWSxDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELFdBQVcsQ0FDVCxNQUFTO1FBRVQsTUFBTSxPQUFPLEdBQUcsc0JBQXNCLEVBQUUsQ0FBQztRQUN6QyxPQUFPLENBQUMsWUFBWTtZQUNsQixNQUFNLENBQUMsWUFBWSxLQUFLLFNBQVMsSUFBSSxNQUFNLENBQUMsWUFBWSxLQUFLLElBQUk7Z0JBQy9ELENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUM7Z0JBQzNDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDaEIsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztDQUNGLENBQUM7QUFFRixTQUFTLHFCQUFxQjtJQUM1QixPQUFPO1FBQ0wsTUFBTSxFQUFFLElBQUksVUFBVSxFQUFFO1FBQ3hCLFNBQVMsRUFBRSxJQUFJLFVBQVUsRUFBRTtRQUMzQixhQUFhLEVBQUUsSUFBSSxVQUFVLEVBQUU7S0FDaEMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUc7SUFDekIsTUFBTSxDQUNKLE9BQW9CLEVBQ3BCLFNBQXFCLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFO1FBRXhDLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQy9CLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN6QztRQUNELElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ2xDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUM1QztRQUNELElBQUksT0FBTyxDQUFDLGFBQWEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3RDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUNoRDtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBOEIsRUFBRSxNQUFlO1FBQ3BELE1BQU0sTUFBTSxHQUNWLEtBQUssWUFBWSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pFLElBQUksR0FBRyxHQUFHLE1BQU0sS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDO1FBQ2xFLE1BQU0sT0FBTyxHQUFHLHFCQUFxQixFQUFFLENBQUM7UUFDeEMsT0FBTyxNQUFNLENBQUMsR0FBRyxHQUFHLEdBQUcsRUFBRTtZQUN2QixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDNUIsUUFBUSxHQUFHLEtBQUssQ0FBQyxFQUFFO2dCQUNqQixLQUFLLENBQUM7b0JBQ0osSUFBSSxHQUFHLEtBQUssRUFBRSxFQUFFO3dCQUNkLE1BQU07cUJBQ1A7b0JBRUQsT0FBTyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQ2hDLFNBQVM7Z0JBQ1gsS0FBSyxDQUFDO29CQUNKLElBQUksR0FBRyxLQUFLLEVBQUUsRUFBRTt3QkFDZCxNQUFNO3FCQUNQO29CQUVELE9BQU8sQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUNuQyxTQUFTO2dCQUNYLEtBQUssQ0FBQztvQkFDSixJQUFJLEdBQUcsS0FBSyxFQUFFLEVBQUU7d0JBQ2QsTUFBTTtxQkFDUDtvQkFFRCxPQUFPLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDdkMsU0FBUzthQUNaO1lBQ0QsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsRUFBRTtnQkFDaEMsTUFBTTthQUNQO1lBQ0QsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDMUI7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQsUUFBUSxDQUFDLE1BQVc7UUFDbEIsT0FBTztZQUNMLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztnQkFDMUIsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO2dCQUNoQyxDQUFDLENBQUMsSUFBSSxVQUFVLEVBQUU7WUFDcEIsU0FBUyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO2dCQUNoQyxDQUFDLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7Z0JBQ25DLENBQUMsQ0FBQyxJQUFJLFVBQVUsRUFBRTtZQUNwQixhQUFhLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUM7Z0JBQ3hDLENBQUMsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQztnQkFDdkMsQ0FBQyxDQUFDLElBQUksVUFBVSxFQUFFO1NBQ3JCLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQW9CO1FBQ3pCLE1BQU0sR0FBRyxHQUFRLEVBQUUsQ0FBQztRQUNwQixPQUFPLENBQUMsTUFBTSxLQUFLLFNBQVM7WUFDMUIsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLGVBQWUsQ0FDM0IsT0FBTyxDQUFDLE1BQU0sS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksVUFBVSxFQUFFLENBQ2pFLENBQUMsQ0FBQztRQUNMLE9BQU8sQ0FBQyxTQUFTLEtBQUssU0FBUztZQUM3QixDQUFDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsZUFBZSxDQUM5QixPQUFPLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxVQUFVLEVBQUUsQ0FDdkUsQ0FBQyxDQUFDO1FBQ0wsT0FBTyxDQUFDLGFBQWEsS0FBSyxTQUFTO1lBQ2pDLENBQUMsR0FBRyxDQUFDLGFBQWEsR0FBRyxlQUFlLENBQ2xDLE9BQU8sQ0FBQyxhQUFhLEtBQUssU0FBUztnQkFDakMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhO2dCQUN2QixDQUFDLENBQUMsSUFBSSxVQUFVLEVBQUUsQ0FDckIsQ0FBQyxDQUFDO1FBQ0wsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQsTUFBTSxDQUErQyxJQUFRO1FBQzNELE9BQU8sV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELFdBQVcsQ0FDVCxNQUFTO1FBRVQsTUFBTSxPQUFPLEdBQUcscUJBQXFCLEVBQUUsQ0FBQztRQUN4QyxPQUFPLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLElBQUksSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUNuRCxPQUFPLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLElBQUksSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUN6RCxPQUFPLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLElBQUksSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUNqRSxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0NBQ0YsQ0FBQztBQUtGLElBQUksaUJBQWlCLEdBQVEsQ0FBQyxHQUFHLEVBQUU7SUFDakMsSUFBSSxPQUFPLFVBQVUsS0FBSyxXQUFXLEVBQUU7UUFDckMsT0FBTyxVQUFVLENBQUM7S0FDbkI7SUFDRCxJQUFJLE9BQU8sSUFBSSxLQUFLLFdBQVcsRUFBRTtRQUMvQixPQUFPLElBQUksQ0FBQztLQUNiO0lBQ0QsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLEVBQUU7UUFDakMsT0FBTyxNQUFNLENBQUM7S0FDZjtJQUNELElBQUksT0FBTyxNQUFNLEtBQUssV0FBVyxFQUFFO1FBQ2pDLE9BQU8sTUFBTSxDQUFDO0tBQ2Y7SUFDRCxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFFTCxTQUFTLGVBQWUsQ0FBQyxHQUFXO0lBQ2xDLElBQUksaUJBQWlCLENBQUMsTUFBTSxFQUFFO1FBQzVCLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO0tBQ3RFO1NBQU07UUFDTCxNQUFNLEdBQUcsR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUFFO1lBQ25DLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzVCO1FBQ0QsT0FBTyxHQUFHLENBQUM7S0FDWjtBQUNILENBQUM7QUFFRCxTQUFTLGVBQWUsQ0FBQyxHQUFlO0lBQ3RDLElBQUksaUJBQWlCLENBQUMsTUFBTSxFQUFFO1FBQzVCLE9BQU8saUJBQWlCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7S0FDOUQ7U0FBTTtRQUNMLE1BQU0sR0FBRyxHQUFhLEVBQUUsQ0FBQztRQUN6QixHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDbkIsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLGlCQUFpQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7S0FDN0M7QUFDSCxDQUFDO0FBNEJELFNBQVMsV0FBVyxDQUFDLElBQVU7SUFDN0IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLEtBQUssQ0FBQztJQUN2QyxNQUFNLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxLQUFLLENBQUMsR0FBRyxTQUFTLENBQUM7SUFDbkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQztBQUM1QixDQUFDO0FBRUQsU0FBUyxhQUFhLENBQUMsQ0FBWTtJQUNqQyxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQ3RDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDO0lBQ3JDLE9BQU8sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDMUIsQ0FBQztBQUVELFNBQVMsaUJBQWlCLENBQUMsQ0FBTTtJQUMvQixJQUFJLENBQUMsWUFBWSxJQUFJLEVBQUU7UUFDckIsT0FBTyxDQUFDLENBQUM7S0FDVjtTQUFNLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxFQUFFO1FBQ2hDLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDcEI7U0FBTTtRQUNMLE9BQU8sYUFBYSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUM3QztBQUNILENBQUM7QUFFRCxTQUFTLFlBQVksQ0FBQyxJQUFVO0lBQzlCLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsRUFBRTtRQUNwQyxNQUFNLElBQUksaUJBQWlCLENBQUMsS0FBSyxDQUMvQiw4Q0FBOEMsQ0FDL0MsQ0FBQztLQUNIO0lBQ0QsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDekIsQ0FBQztBQUVELElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFFO0lBQzFCLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQVcsQ0FBQztJQUM1QixHQUFHLENBQUMsU0FBUyxFQUFFLENBQUM7Q0FDakI7QUFFRCxTQUFTLEtBQUssQ0FBQyxLQUFVO0lBQ3ZCLE9BQU8sS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssU0FBUyxDQUFDO0FBQy9DLENBQUMifQ==