@featurevisor/core 1.22.0 → 1.23.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.
Files changed (34) hide show
  1. package/.eslintcache +1 -1
  2. package/CHANGELOG.md +22 -0
  3. package/coverage/clover.xml +146 -142
  4. package/coverage/coverage-final.json +4 -4
  5. package/coverage/lcov-report/index.html +21 -21
  6. package/coverage/lcov-report/lib/builder/allocator.js.html +37 -28
  7. package/coverage/lcov-report/lib/builder/index.html +10 -10
  8. package/coverage/lcov-report/lib/builder/revision.js.html +1 -1
  9. package/coverage/lcov-report/lib/builder/traffic.js.html +46 -46
  10. package/coverage/lcov-report/lib/tester/checkIfObjectsAreEqual.js.html +1 -1
  11. package/coverage/lcov-report/lib/tester/index.html +1 -1
  12. package/coverage/lcov-report/lib/tester/matrix.js.html +1 -1
  13. package/coverage/lcov-report/src/builder/allocator.ts.html +40 -28
  14. package/coverage/lcov-report/src/builder/index.html +10 -10
  15. package/coverage/lcov-report/src/builder/revision.ts.html +1 -1
  16. package/coverage/lcov-report/src/builder/traffic.ts.html +44 -44
  17. package/coverage/lcov-report/src/tester/checkIfObjectsAreEqual.ts.html +1 -1
  18. package/coverage/lcov-report/src/tester/index.html +1 -1
  19. package/coverage/lcov-report/src/tester/matrix.ts.html +1 -1
  20. package/coverage/lcov.info +242 -235
  21. package/lib/builder/allocator.js +3 -0
  22. package/lib/builder/allocator.js.map +1 -1
  23. package/lib/builder/traffic.spec.js +236 -0
  24. package/lib/builder/traffic.spec.js.map +1 -1
  25. package/lib/config/projectConfig.d.ts +1 -0
  26. package/lib/config/projectConfig.js +1 -0
  27. package/lib/config/projectConfig.js.map +1 -1
  28. package/lib/linter/featureSchema.js +15 -0
  29. package/lib/linter/featureSchema.js.map +1 -1
  30. package/package.json +2 -2
  31. package/src/builder/allocator.ts +4 -0
  32. package/src/builder/traffic.spec.ts +259 -0
  33. package/src/config/projectConfig.ts +3 -0
  34. package/src/linter/featureSchema.ts +25 -0
@@ -4,45 +4,49 @@ FN:4,getAllocation
4
4
  FN:19,getUpdatedAvailableRangesAfterFilling
5
5
  FNF:2
6
6
  FNH:2
7
- FNDA:29,getAllocation
8
- FNDA:30,getUpdatedAvailableRangesAfterFilling
7
+ FNDA:37,getAllocation
8
+ FNDA:38,getUpdatedAvailableRangesAfterFilling
9
9
  DA:2,2
10
10
  DA:3,2
11
- DA:5,29
12
- DA:6,29
13
- DA:7,29
14
- DA:8,29
15
- DA:9,34
16
- DA:10,34
17
- DA:11,34
18
- DA:12,34
19
- DA:13,34
20
- DA:14,34
21
- DA:16,29
11
+ DA:5,37
12
+ DA:6,37
13
+ DA:7,37
14
+ DA:8,37
15
+ DA:9,39
16
+ DA:10,39
17
+ DA:11,39
18
+ DA:12,39
19
+ DA:13,39
20
+ DA:14,39
21
+ DA:16,37
22
22
  DA:18,2
23
- DA:20,30
24
- DA:21,30
25
- DA:22,30
26
- DA:23,30
27
- DA:24,35
28
- DA:25,35
29
- DA:26,35
30
- DA:27,35
31
- DA:28,23
32
- DA:30,35
33
- DA:31,35
34
- DA:33,30
35
- DA:35,2
36
- LF:27
37
- LH:27
38
- BRDA:8,0,0,63
39
- BRDA:8,0,1,34
40
- BRDA:23,1,0,65
41
- BRDA:23,1,1,35
42
- BRDA:27,2,0,23
43
- BRDA:27,2,1,12
44
- BRF:6
45
- BRH:6
23
+ DA:20,38
24
+ DA:21,4
25
+ DA:23,34
26
+ DA:24,34
27
+ DA:25,34
28
+ DA:26,34
29
+ DA:27,40
30
+ DA:28,40
31
+ DA:29,40
32
+ DA:30,40
33
+ DA:31,27
34
+ DA:33,40
35
+ DA:34,40
36
+ DA:36,34
37
+ DA:38,2
38
+ LF:29
39
+ LH:29
40
+ BRDA:8,0,0,76
41
+ BRDA:8,0,1,39
42
+ BRDA:20,1,0,4
43
+ BRDA:20,1,1,34
44
+ BRDA:26,2,0,74
45
+ BRDA:26,2,1,40
46
+ BRDA:30,3,0,27
47
+ BRDA:30,3,1,13
48
+ BRF:8
49
+ BRH:8
46
50
  end_of_record
47
51
  TN:
48
52
  SF:lib/builder/revision.js
@@ -91,60 +95,60 @@ FN:109,(anonymous_10)
91
95
  FN:118,(anonymous_11)
92
96
  FNF:12
93
97
  FNH:12
94
- FNDA:9,detectIfVariationsChanged
95
- FNDA:15,(anonymous_1)
96
- FNDA:16,(anonymous_2)
97
- FNDA:9,getRulePercentageDiff
98
- FNDA:9,detectIfRangesChanged
99
- FNDA:9,getTraffic
100
- FNDA:9,(anonymous_6)
101
- FNDA:6,(anonymous_7)
98
+ FNDA:13,detectIfVariationsChanged
99
+ FNDA:21,(anonymous_1)
100
+ FNDA:22,(anonymous_2)
101
+ FNDA:13,getRulePercentageDiff
102
+ FNDA:13,detectIfRangesChanged
103
+ FNDA:13,getTraffic
104
+ FNDA:13,(anonymous_6)
105
+ FNDA:9,(anonymous_7)
102
106
  FNDA:2,(anonymous_8)
103
- FNDA:22,(anonymous_9)
104
- FNDA:21,(anonymous_10)
105
- FNDA:23,(anonymous_11)
107
+ FNDA:30,(anonymous_9)
108
+ FNDA:26,(anonymous_10)
109
+ FNDA:28,(anonymous_11)
106
110
  DA:2,1
107
111
  DA:3,1
108
112
  DA:4,1
109
113
  DA:5,1
110
- DA:8,9
111
- DA:9,3
112
- DA:12,3
114
+ DA:8,13
115
+ DA:9,4
116
+ DA:12,4
113
117
  DA:15,0
114
- DA:17,6
115
- DA:19,15
116
- DA:20,15
117
- DA:23,6
118
- DA:24,16
119
- DA:25,16
118
+ DA:17,9
119
+ DA:19,21
120
+ DA:20,21
121
+ DA:23,9
122
+ DA:24,22
123
+ DA:25,22
120
124
  DA:31,1
121
- DA:34,9
122
- DA:35,3
123
- DA:37,6
124
- DA:38,6
125
+ DA:34,13
126
+ DA:35,4
127
+ DA:37,9
128
+ DA:38,9
125
129
  DA:40,1
126
- DA:43,9
127
- DA:44,3
128
- DA:46,6
129
- DA:47,6
130
+ DA:43,13
131
+ DA:44,4
132
+ DA:46,9
133
+ DA:47,9
130
134
  DA:49,0
131
135
  DA:51,1
132
- DA:59,9
133
- DA:61,9
134
- DA:62,9
135
- DA:63,9
136
- DA:64,9
137
- DA:71,9
136
+ DA:59,13
137
+ DA:61,13
138
+ DA:62,13
139
+ DA:63,13
140
+ DA:64,13
141
+ DA:71,13
138
142
  DA:72,0
139
- DA:74,9
143
+ DA:74,13
140
144
  DA:75,0
141
- DA:78,9
142
- DA:79,9
143
- DA:80,9
144
- DA:81,9
145
- DA:82,9
146
- DA:86,9
147
- DA:87,9
145
+ DA:78,13
146
+ DA:79,13
147
+ DA:80,13
148
+ DA:81,13
149
+ DA:82,13
150
+ DA:86,13
151
+ DA:87,13
148
152
  DA:89,1
149
153
  DA:90,1
150
154
  DA:91,2
@@ -152,68 +156,68 @@ DA:92,2
152
156
  DA:96,2
153
157
  DA:97,2
154
158
  DA:99,1
155
- DA:101,9
156
- DA:102,9
157
- DA:103,22
158
- DA:104,22
159
- DA:105,22
160
- DA:108,22
161
- DA:109,22
162
- DA:110,21
163
- DA:115,22
164
- DA:118,9
165
- DA:119,23
159
+ DA:101,13
160
+ DA:102,13
161
+ DA:103,30
162
+ DA:104,30
163
+ DA:105,30
164
+ DA:108,30
165
+ DA:109,30
166
+ DA:110,26
167
+ DA:115,30
168
+ DA:118,13
169
+ DA:119,28
166
170
  DA:120,0
167
- DA:122,23
168
- DA:124,9
169
- DA:126,9
171
+ DA:122,28
172
+ DA:124,13
173
+ DA:126,13
170
174
  DA:128,1
171
175
  LF:65
172
176
  LH:60
173
- BRDA:8,0,0,3
174
- BRDA:8,0,1,6
175
- BRDA:8,1,0,9
176
- BRDA:8,1,1,6
177
- BRDA:9,2,0,3
177
+ BRDA:8,0,0,4
178
+ BRDA:8,0,1,9
179
+ BRDA:8,1,0,13
180
+ BRDA:8,1,1,9
181
+ BRDA:9,2,0,4
178
182
  BRDA:9,2,1,0
179
- BRDA:9,3,0,3
180
- BRDA:9,3,1,3
181
- BRDA:17,4,0,6
183
+ BRDA:9,3,0,4
184
+ BRDA:9,3,1,4
185
+ BRDA:17,4,0,9
182
186
  BRDA:17,4,1,0
183
- BRDA:34,5,0,3
184
- BRDA:34,5,1,6
185
- BRDA:43,6,0,3
186
- BRDA:43,6,1,6
187
- BRDA:46,7,0,6
187
+ BRDA:34,5,0,4
188
+ BRDA:34,5,1,9
189
+ BRDA:43,6,0,4
190
+ BRDA:43,6,1,9
191
+ BRDA:46,7,0,9
188
192
  BRDA:46,7,1,0
189
193
  BRDA:61,8,0,0
190
- BRDA:61,8,1,9
191
- BRDA:61,9,0,9
194
+ BRDA:61,8,1,13
195
+ BRDA:61,9,0,13
192
196
  BRDA:61,9,1,0
193
197
  BRDA:71,10,0,0
194
- BRDA:71,10,1,9
198
+ BRDA:71,10,1,13
195
199
  BRDA:74,11,0,0
196
- BRDA:74,11,1,9
197
- BRDA:79,12,0,3
198
- BRDA:79,12,1,6
199
- BRDA:79,13,0,9
200
- BRDA:79,13,1,9
201
- BRDA:82,14,0,9
202
- BRDA:82,14,1,6
200
+ BRDA:74,11,1,13
201
+ BRDA:79,12,0,4
202
+ BRDA:79,12,1,9
203
+ BRDA:79,13,0,13
204
+ BRDA:79,13,1,13
205
+ BRDA:82,14,0,13
206
+ BRDA:82,14,1,9
203
207
  BRDA:82,14,2,2
204
208
  BRDA:82,14,3,1
205
209
  BRDA:87,15,0,1
206
- BRDA:87,15,1,8
207
- BRDA:87,16,0,9
208
- BRDA:87,16,1,6
209
- BRDA:101,17,0,9
210
+ BRDA:87,15,1,12
211
+ BRDA:87,16,0,13
212
+ BRDA:87,16,1,9
213
+ BRDA:101,17,0,13
210
214
  BRDA:101,17,1,0
211
- BRDA:105,18,0,20
215
+ BRDA:105,18,0,28
212
216
  BRDA:105,18,1,2
213
217
  BRDA:119,19,0,0
214
- BRDA:119,19,1,23
215
- BRDA:119,20,0,23
216
- BRDA:119,20,1,23
218
+ BRDA:119,19,1,28
219
+ BRDA:119,20,0,28
220
+ BRDA:119,20,1,28
217
221
  BRF:44
218
222
  BRH:35
219
223
  end_of_record
@@ -416,42 +420,45 @@ FN:3,getAllocation
416
420
  FN:21,getUpdatedAvailableRangesAfterFilling
417
421
  FNF:2
418
422
  FNH:2
419
- FNDA:29,getAllocation
420
- FNDA:30,getUpdatedAvailableRangesAfterFilling
423
+ FNDA:37,getAllocation
424
+ FNDA:38,getUpdatedAvailableRangesAfterFilling
421
425
  DA:3,2
422
- DA:4,29
423
- DA:6,29
424
- DA:7,29
425
- DA:8,29
426
- DA:9,34
427
- DA:10,34
428
- DA:12,34
429
- DA:13,34
430
- DA:14,34
431
- DA:15,34
432
- DA:18,29
426
+ DA:4,37
427
+ DA:6,37
428
+ DA:7,37
429
+ DA:8,37
430
+ DA:9,39
431
+ DA:10,39
432
+ DA:12,39
433
+ DA:13,39
434
+ DA:14,39
435
+ DA:15,39
436
+ DA:18,37
433
437
  DA:21,2
434
- DA:25,30
435
- DA:27,30
436
- DA:28,30
437
- DA:29,30
438
- DA:30,35
439
- DA:31,35
440
- DA:32,35
441
- DA:33,35
442
- DA:34,23
443
- DA:36,35
444
- DA:37,35
445
- DA:40,30
446
- LF:25
447
- LH:25
448
- BRDA:8,0,0,63
449
- BRDA:8,0,1,34
450
- BRDA:29,1,0,65
451
- BRDA:29,1,1,35
452
- BRDA:33,2,0,23
453
- BRF:5
454
- BRH:5
438
+ DA:25,38
439
+ DA:26,4
440
+ DA:29,34
441
+ DA:31,34
442
+ DA:32,34
443
+ DA:33,34
444
+ DA:34,40
445
+ DA:35,40
446
+ DA:36,40
447
+ DA:37,40
448
+ DA:38,27
449
+ DA:40,40
450
+ DA:41,40
451
+ DA:44,34
452
+ LF:27
453
+ LH:27
454
+ BRDA:8,0,0,76
455
+ BRDA:8,0,1,39
456
+ BRDA:25,1,0,4
457
+ BRDA:33,2,0,74
458
+ BRDA:33,2,1,40
459
+ BRDA:37,3,0,27
460
+ BRF:6
461
+ BRH:6
455
462
  end_of_record
456
463
  TN:
457
464
  SF:src/builder/revision.ts
@@ -495,114 +502,114 @@ FN:139,(anonymous_10)
495
502
  FN:153,(anonymous_11)
496
503
  FNF:12
497
504
  FNH:12
498
- FNDA:9,detectIfVariationsChanged
499
- FNDA:15,(anonymous_1)
500
- FNDA:16,(anonymous_2)
501
- FNDA:9,getRulePercentageDiff
502
- FNDA:9,detectIfRangesChanged
503
- FNDA:9,getTraffic
504
- FNDA:9,(anonymous_6)
505
- FNDA:6,(anonymous_7)
505
+ FNDA:13,detectIfVariationsChanged
506
+ FNDA:21,(anonymous_1)
507
+ FNDA:22,(anonymous_2)
508
+ FNDA:13,getRulePercentageDiff
509
+ FNDA:13,detectIfRangesChanged
510
+ FNDA:13,getTraffic
511
+ FNDA:13,(anonymous_6)
512
+ FNDA:9,(anonymous_7)
506
513
  FNDA:2,(anonymous_8)
507
- FNDA:22,(anonymous_9)
508
- FNDA:21,(anonymous_10)
509
- FNDA:23,(anonymous_11)
514
+ FNDA:30,(anonymous_9)
515
+ FNDA:26,(anonymous_10)
516
+ FNDA:28,(anonymous_11)
510
517
  DA:2,1
511
518
  DA:4,1
512
519
  DA:6,1
513
- DA:10,9
514
- DA:11,3
515
- DA:14,3
520
+ DA:10,13
521
+ DA:11,4
522
+ DA:14,4
516
523
  DA:18,0
517
- DA:21,6
518
- DA:22,15
519
- DA:25,6
520
- DA:27,16
524
+ DA:21,9
525
+ DA:22,21
526
+ DA:25,9
527
+ DA:27,22
521
528
  DA:35,1
522
- DA:39,9
523
- DA:40,3
524
- DA:43,6
525
- DA:45,6
529
+ DA:39,13
530
+ DA:40,4
531
+ DA:43,9
532
+ DA:45,9
526
533
  DA:48,1
527
- DA:52,9
528
- DA:53,3
529
- DA:56,6
530
- DA:57,6
534
+ DA:52,13
535
+ DA:53,4
536
+ DA:56,9
537
+ DA:57,9
531
538
  DA:60,0
532
539
  DA:63,1
533
- DA:72,9
534
- DA:76,9
535
- DA:78,9
536
- DA:79,9
537
- DA:81,9
538
- DA:89,9
540
+ DA:72,13
541
+ DA:76,13
542
+ DA:78,13
543
+ DA:79,13
544
+ DA:81,13
545
+ DA:89,13
539
546
  DA:90,0
540
- DA:93,9
547
+ DA:93,13
541
548
  DA:94,0
542
- DA:98,9
543
- DA:99,9
544
- DA:100,9
545
- DA:101,9
546
- DA:104,9
547
- DA:109,9
548
- DA:111,9
549
+ DA:98,13
550
+ DA:99,13
551
+ DA:100,13
552
+ DA:101,13
553
+ DA:104,13
554
+ DA:109,13
555
+ DA:111,13
549
556
  DA:113,1
550
557
  DA:115,1
551
558
  DA:116,2
552
559
  DA:121,2
553
560
  DA:123,2
554
561
  DA:126,1
555
- DA:129,9
556
- DA:130,9
557
- DA:131,22
558
- DA:132,22
559
- DA:134,22
560
- DA:137,22
561
- DA:139,22
562
- DA:140,21
563
- DA:146,22
564
- DA:153,9
565
- DA:154,23
562
+ DA:129,13
563
+ DA:130,13
564
+ DA:131,30
565
+ DA:132,30
566
+ DA:134,30
567
+ DA:137,30
568
+ DA:139,30
569
+ DA:140,26
570
+ DA:146,30
571
+ DA:153,13
572
+ DA:154,28
566
573
  DA:155,0
567
- DA:158,23
568
- DA:161,9
569
- DA:164,9
574
+ DA:158,28
575
+ DA:161,13
576
+ DA:164,13
570
577
  LF:60
571
578
  LH:55
572
- BRDA:10,0,0,3
573
- BRDA:10,1,0,9
574
- BRDA:10,1,1,6
575
- BRDA:11,2,0,3
576
- BRDA:11,3,0,3
577
- BRDA:11,3,1,3
578
- BRDA:21,4,0,6
579
+ BRDA:10,0,0,4
580
+ BRDA:10,1,0,13
581
+ BRDA:10,1,1,9
582
+ BRDA:11,2,0,4
583
+ BRDA:11,3,0,4
584
+ BRDA:11,3,1,4
585
+ BRDA:21,4,0,9
579
586
  BRDA:21,4,1,0
580
- BRDA:39,5,0,3
581
- BRDA:52,6,0,3
582
- BRDA:56,7,0,6
587
+ BRDA:39,5,0,4
588
+ BRDA:52,6,0,4
589
+ BRDA:56,7,0,9
583
590
  BRDA:76,8,0,0
584
- BRDA:76,8,1,9
585
- BRDA:76,9,0,9
591
+ BRDA:76,8,1,13
592
+ BRDA:76,9,0,13
586
593
  BRDA:76,9,1,0
587
594
  BRDA:89,10,0,0
588
595
  BRDA:93,11,0,0
589
- BRDA:99,12,0,3
590
- BRDA:99,12,1,6
591
- BRDA:99,13,0,9
592
- BRDA:99,13,1,9
593
- BRDA:104,14,0,9
594
- BRDA:104,14,1,6
596
+ BRDA:99,12,0,4
597
+ BRDA:99,12,1,9
598
+ BRDA:99,13,0,13
599
+ BRDA:99,13,1,13
600
+ BRDA:104,14,0,13
601
+ BRDA:104,14,1,9
595
602
  BRDA:104,14,2,2
596
603
  BRDA:104,14,3,1
597
604
  BRDA:111,15,0,1
598
- BRDA:111,16,0,9
599
- BRDA:111,16,1,6
600
- BRDA:129,17,0,9
601
- BRDA:134,18,0,20
605
+ BRDA:111,16,0,13
606
+ BRDA:111,16,1,9
607
+ BRDA:129,17,0,13
608
+ BRDA:134,18,0,28
602
609
  BRDA:134,18,1,2
603
610
  BRDA:154,19,0,0
604
- BRDA:154,20,0,23
605
- BRDA:154,20,1,23
611
+ BRDA:154,20,0,28
612
+ BRDA:154,20,1,28
606
613
  BRF:34
607
614
  BRH:28
608
615
  end_of_record
@@ -17,6 +17,9 @@ function getAllocation(availableRanges, fill) {
17
17
  }
18
18
  exports.getAllocation = getAllocation;
19
19
  function getUpdatedAvailableRangesAfterFilling(availableRanges, fill) {
20
+ if (fill === 0) {
21
+ return availableRanges;
22
+ }
20
23
  var result = [];
21
24
  var remaining = fill;
22
25
  var i = 0;
@@ -1 +1 @@
1
- {"version":3,"file":"allocator.js","sourceRoot":"","sources":["../../src/builder/allocator.ts"],"names":[],"mappings":";;;AAEA,SAAgB,aAAa,CAAC,eAAwB,EAAE,IAAgB;IACtE,IAAM,MAAM,GAAY,EAAE,CAAC;IAE3B,IAAI,SAAS,GAAG,IAAI,CAAC;IACrB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,SAAS,GAAG,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE;QAClD,IAAM,KAAK,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAA,KAAK,GAAS,KAAK,GAAd,EAAE,GAAG,GAAI,KAAK,GAAT,CAAU;QAE3B,IAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC;QACnD,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC;QACxC,SAAS,IAAI,SAAS,CAAC;QACvB,CAAC,EAAE,CAAC;KACL;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAhBD,sCAgBC;AAED,SAAgB,qCAAqC,CACnD,eAAwB,EACxB,IAAgB;IAEhB,IAAM,MAAM,GAAY,EAAE,CAAC;IAE3B,IAAI,SAAS,GAAG,IAAI,CAAC;IACrB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,SAAS,GAAG,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE;QAClD,IAAM,KAAK,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAA,KAAK,GAAS,KAAK,GAAd,EAAE,GAAG,GAAI,KAAK,GAAT,CAAU;QAC3B,IAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC;QACnD,IAAI,SAAS,GAAG,GAAG,GAAG,KAAK,EAAE;YAC3B,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;SACvC;QACD,SAAS,IAAI,SAAS,CAAC;QACvB,CAAC,EAAE,CAAC;KACL;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AApBD,sFAoBC"}
1
+ {"version":3,"file":"allocator.js","sourceRoot":"","sources":["../../src/builder/allocator.ts"],"names":[],"mappings":";;;AAEA,SAAgB,aAAa,CAAC,eAAwB,EAAE,IAAgB;IACtE,IAAM,MAAM,GAAY,EAAE,CAAC;IAE3B,IAAI,SAAS,GAAG,IAAI,CAAC;IACrB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,SAAS,GAAG,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE;QAClD,IAAM,KAAK,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAA,KAAK,GAAS,KAAK,GAAd,EAAE,GAAG,GAAI,KAAK,GAAT,CAAU;QAE3B,IAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC;QACnD,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC;QACxC,SAAS,IAAI,SAAS,CAAC;QACvB,CAAC,EAAE,CAAC;KACL;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAhBD,sCAgBC;AAED,SAAgB,qCAAqC,CACnD,eAAwB,EACxB,IAAgB;IAEhB,IAAI,IAAI,KAAK,CAAC,EAAE;QACd,OAAO,eAAe,CAAC;KACxB;IAED,IAAM,MAAM,GAAY,EAAE,CAAC;IAE3B,IAAI,SAAS,GAAG,IAAI,CAAC;IACrB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,SAAS,GAAG,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE;QAClD,IAAM,KAAK,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAA,KAAK,GAAS,KAAK,GAAd,EAAE,GAAG,GAAI,KAAK,GAAT,CAAU;QAC3B,IAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC;QACnD,IAAI,SAAS,GAAG,GAAG,GAAG,KAAK,EAAE;YAC3B,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;SACvC;QACD,SAAS,IAAI,SAAS,CAAC;QACvB,CAAC,EAAE,CAAC;KACL;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAxBD,sFAwBC"}