@vpmedia/phaser 1.70.0 → 1.72.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @vpmedia/phaser
2
2
 
3
- [![npm version](https://badge.fury.io/js/@vpmedia%2Fphaser.svg?v=1.70.0)](https://badge.fury.io/js/@vpmedia%2Fphaser)
3
+ [![npm version](https://badge.fury.io/js/@vpmedia%2Fphaser.svg?v=1.72.0)](https://badge.fury.io/js/@vpmedia%2Fphaser)
4
4
  [![Node.js CI](https://github.com/vpmedia/phaser/actions/workflows/ci.yml/badge.svg)](https://github.com/vpmedia/phaser/actions/workflows/ci.yml)
5
5
 
6
6
  @vpmedia/phaser is the modern ECMAScript port of the popular Phaser game engine v2.6.2.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vpmedia/phaser",
3
- "version": "1.70.0",
3
+ "version": "1.72.0",
4
4
  "description": "@vpmedia/phaser is the modern ECMAScript port of the popular Phaser game engine v2.6.2",
5
5
  "author": "Andras Csizmadia <andras@vpmedia.hu> (www.vpmedia.hu)",
6
6
  "license": "MIT",
@@ -190,7 +190,10 @@ export const checkAudio = (device) => {
190
190
  const { type, codecs } = format;
191
191
  for (const codec of codecs) {
192
192
  if (!device.supportedAudioFormats[type]) {
193
- device.supportedAudioFormats[type] = isMediaSourceTypeSupported(codec) || canPlayType(audioElement, codec);
193
+ const isSupported = isMediaSourceTypeSupported(codec) || canPlayType(audioElement, codec);
194
+ if (isSupported) {
195
+ device.supportedAudioFormats[type] = isSupported;
196
+ }
194
197
  }
195
198
  }
196
199
  }
@@ -1,34 +1,33 @@
1
1
  export class RequestAnimationFrame {
2
2
  /**
3
- * TBD.
4
- * @param {import('./game.js').Game} game - TBD.
3
+ * Constructor.
4
+ * @param {import('./game.js').Game} game - Reference to the game instance.
5
5
  */
6
6
  constructor(game) {
7
7
  this.game = game;
8
8
  this.rafId = 0;
9
- this.updateBinded = this.update.bind(this);
10
9
  }
11
10
 
12
11
  /**
13
- * TBD.
12
+ * Starts an animation frame request.
14
13
  */
15
- start() {
16
- this.rafId = requestAnimationFrame(this.updateBinded);
17
- }
14
+ start = () => {
15
+ this.rafId = requestAnimationFrame(this.update);
16
+ };
18
17
 
19
18
  /**
20
- * TBD.
19
+ * Cancels an animation frame request.
21
20
  */
22
- stop() {
21
+ stop = () => {
23
22
  cancelAnimationFrame(this.rafId);
24
- }
23
+ };
25
24
 
26
25
  /**
27
- * TBD.
26
+ * Performs an animation frame request.
28
27
  * @param {number} rafTime - TBD.
29
28
  */
30
- update(rafTime) {
29
+ update = (rafTime) => {
31
30
  this.game.update(rafTime);
32
- this.rafId = requestAnimationFrame(this.updateBinded);
33
- }
31
+ this.rafId = requestAnimationFrame(this.update);
32
+ };
34
33
  }
@@ -127,27 +127,29 @@ export class Sound {
127
127
  this.isPlaying = false;
128
128
  this.currentTime = this.durationMS;
129
129
  this.stop();
130
- if (this._markedToDelete) {
131
- if (this.externalNode) {
132
- this._sound.disconnect(this.externalNode);
133
- } else if (this.gainNode) {
134
- this._sound.disconnect(this.gainNode);
135
- }
136
- if (this._removeFromSoundManager) {
137
- this.game.sound.remove(this);
138
- } else {
139
- this.markers = {};
140
- this.context = null;
141
- this._buffer = null;
142
- this.externalNode = null;
143
- this.onPlay.dispose();
144
- this.onPause.dispose();
145
- this.onResume.dispose();
146
- this.onLoop.dispose();
147
- this.onStop.dispose();
148
- this.onMute.dispose();
149
- this.onMarkerComplete.dispose();
150
- }
130
+ if (!this._markedToDelete) {
131
+ return;
132
+ }
133
+ if (this.externalNode) {
134
+ this._sound.disconnect(this.externalNode);
135
+ } else if (this.gainNode) {
136
+ this._sound.disconnect(this.gainNode);
137
+ }
138
+ if (this._removeFromSoundManager) {
139
+ this.game.sound.remove(this);
140
+ } else {
141
+ this.markers = {};
142
+ this.context = null;
143
+ this._buffer = null;
144
+ this.externalNode = null;
145
+ this.onPlay.dispose();
146
+ this.onPause.dispose();
147
+ this.onResume.dispose();
148
+ this.onLoop.dispose();
149
+ this.onStop.dispose();
150
+ this.onMute.dispose();
151
+ this.onMarkerComplete.dispose();
152
+ this.onFadeComplete.dispose();
151
153
  }
152
154
  }
153
155
 
@@ -440,7 +442,7 @@ export class Sound {
440
442
  return;
441
443
  }
442
444
  this.fadeTween = this.game.tweens.create(this).to({ volume }, duration, 'Linear', true);
443
- this.fadeTween.onComplete.add(this.fadeComplete, this);
445
+ this.fadeTween.onComplete.addOnce(this.fadeComplete, this);
444
446
  }
445
447
 
446
448
  /**
@@ -475,6 +477,7 @@ export class Sound {
475
477
  this.onStop.dispose();
476
478
  this.onMute.dispose();
477
479
  this.onMarkerComplete.dispose();
480
+ this.onFadeComplete.dispose();
478
481
  }
479
482
  }
480
483
 
@@ -41,9 +41,13 @@ export class SoundManager {
41
41
  * TBD.
42
42
  */
43
43
  boot() {
44
- if (this.game.config.isForceDisabledAudio) {
44
+ const setAudioDisabledState = () => {
45
+ this.type = AUDIO_DISABLED;
45
46
  this.noAudio = true;
46
47
  this.isLocked = false;
48
+ };
49
+ if (this.game.config.isForceDisabledAudio) {
50
+ setAudioDisabledState();
47
51
  return;
48
52
  }
49
53
  if (window.AudioContext) {
@@ -52,8 +56,7 @@ export class SoundManager {
52
56
  this.type = AUDIO_STANDARD;
53
57
  } catch (error) {
54
58
  this.context = null;
55
- this.noAudio = true;
56
- this.isLocked = false;
59
+ setAudioDisabledState();
57
60
  this.game.exceptionHandler(error);
58
61
  }
59
62
  } else if (window.webkitAudioContext) {
@@ -62,14 +65,13 @@ export class SoundManager {
62
65
  this.type = AUDIO_WEBKIT;
63
66
  } catch (error) {
64
67
  this.context = null;
65
- this.noAudio = true;
66
- this.isLocked = false;
68
+ setAudioDisabledState();
67
69
  this.game.exceptionHandler(error);
68
70
  }
69
71
  }
70
72
  if (!this.context) {
71
73
  this.game.exceptionHandler(new Error('Error creating AudioContext'));
72
- this.noAudio = true;
74
+ setAudioDisabledState();
73
75
  return;
74
76
  }
75
77
  this.baseLatency = this.context.baseLatency || 256 / (this.context.sampleRate || 44100);
@@ -1 +1 @@
1
- {"version":3,"file":"device_util.d.ts","sourceRoot":"","sources":["../../../src/phaser/core/device_util.js"],"names":[],"mappings":"AAWO,qCAJI,MAAM,QACN,MAAM,GACJ,OAAO,CAInB;AAMM,gCAFI,MAAM,QAiChB;AAMM,mCAFI,MAAM,QAgBhB;AAMM,+CAFI,MAAM,QA0ChB;AAMM,qCAFI,MAAM,QAahB;AAQM,0CAJI,gBAAgB,QAChB,MAAM,GACJ,OAAO,CAWnB;AAOM,iDAHI,MAAM,GACJ,OAAO,CAanB;AASM,mCALI,MAAM,QAwBhB;AAMM,mCAFI,MAAM,QAwBhB;AAMM,mCAFI,MAAM,QAShB;AAMM,gCAFM,MAAM,CAIlB;uBApPsB,aAAa"}
1
+ {"version":3,"file":"device_util.d.ts","sourceRoot":"","sources":["../../../src/phaser/core/device_util.js"],"names":[],"mappings":"AAWO,qCAJI,MAAM,QACN,MAAM,GACJ,OAAO,CAInB;AAMM,gCAFI,MAAM,QAiChB;AAMM,mCAFI,MAAM,QAgBhB;AAMM,+CAFI,MAAM,QA0ChB;AAMM,qCAFI,MAAM,QAahB;AAQM,0CAJI,gBAAgB,QAChB,MAAM,GACJ,OAAO,CAWnB;AAOM,iDAHI,MAAM,GACJ,OAAO,CAanB;AASM,mCALI,MAAM,QA2BhB;AAMM,mCAFI,MAAM,QAwBhB;AAMM,mCAFI,MAAM,QAShB;AAMM,gCAFM,MAAM,CAIlB;uBAvPsB,aAAa"}
@@ -1,24 +1,23 @@
1
1
  export class RequestAnimationFrame {
2
2
  /**
3
- * TBD.
4
- * @param {import('./game.js').Game} game - TBD.
3
+ * Constructor.
4
+ * @param {import('./game.js').Game} game - Reference to the game instance.
5
5
  */
6
6
  constructor(game: import("./game.js").Game);
7
7
  game: import("./game.js").Game;
8
8
  rafId: number;
9
- updateBinded: (rafTime: number) => void;
10
9
  /**
11
- * TBD.
10
+ * Starts an animation frame request.
12
11
  */
13
- start(): void;
12
+ start: () => void;
14
13
  /**
15
- * TBD.
14
+ * Cancels an animation frame request.
16
15
  */
17
- stop(): void;
16
+ stop: () => void;
18
17
  /**
19
- * TBD.
18
+ * Performs an animation frame request.
20
19
  * @param {number} rafTime - TBD.
21
20
  */
22
- update(rafTime: number): void;
21
+ update: (rafTime: number) => void;
23
22
  }
24
23
  //# sourceMappingURL=raf.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"raf.d.ts","sourceRoot":"","sources":["../../../src/phaser/core/raf.js"],"names":[],"mappings":"AAAA;IACE;;;OAGG;IACH,kBAFW,OAAO,WAAW,EAAE,IAAI,EAMlC;IAHC,+BAAgB;IAChB,cAAc;IACd,wBAmBS,MAAM,UAnB2B;IAG5C;;OAEG;IACH,cAEC;IAED;;OAEG;IACH,aAEC;IAED;;;OAGG;IACH,gBAFW,MAAM,QAKhB;CACF"}
1
+ {"version":3,"file":"raf.d.ts","sourceRoot":"","sources":["../../../src/phaser/core/raf.js"],"names":[],"mappings":"AAAA;IACE;;;OAGG;IACH,kBAFW,OAAO,WAAW,EAAE,IAAI,EAKlC;IAFC,+BAAgB;IAChB,cAAc;IAGhB;;OAEG;IACH,kBAEE;IAEF;;OAEG;IACH,iBAEE;IAEF;;;OAGG;IACH,kBAFW,MAAM,UAKf;CACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"sound.d.ts","sourceRoot":"","sources":["../../../src/phaser/core/sound.js"],"names":[],"mappings":"AAEA;IACE;;;;;;;OAOG;IACH,kBANW,OAAO,WAAW,EAAE,IAAI,OACxB,MAAM,WACN,MAAM,SACN,OAAO,YACP,OAAO,EAuEjB;IA/DC,+BAAgB;IAChB,aAAe;IACf,YAAc;IACd,cAAgB;IAChB,YAAiB;IACjB,sBAAmB;IACnB,kBAAqB;IACrB,sBAAsB;IACtB,kBAAkB;IAClB,oBAAoB;IACpB,iBAAiB;IACjB,mBAAmB;IACnB,iBAAiB;IACjB,iBAAiB;IACjB,gBAAmB;IACnB,uBAAuB;IACvB,mBAAmB;IACnB,mBAAsB;IACtB,sBAAuB;IACvB,sCAAqB;IACrB,yBAA4B;IAC5B,kBAAqB;IACrB,uBAA0B;IAC1B,uBAAuB;IACvB,cADW,QAAQ,CACK;IACxB,uBAAuB;IACvB,gBADW,QAAQ,CACO;IAC1B,uBAAuB;IACvB,UADW,QAAQ,CACC;IACpB,oCAAoC;IACpC,QADW,qBAAqB,CACd;IAClB,yBAA4B;IAC5B,iCAAoC;IAYpC,eAA0B;IAC1B,gBAA2B;IAC3B,iBAA4B;IAC5B,eAA0B;IAC1B,eAA0B;IAC1B,eAA0B;IAC1B,yBAAoC;IACpC,uBAAkC;IAClC,gBAAqB;IACrB,0BAA0B;IAC1B,SADW,WAAW,CACH;IACnB,gBAAmB;IACnB,oBAAqB;IACrB,sBAAsB;IACtB,oBAAoB;IACpB,mBAAmB;IACnB,oBAAoB;IACpB,mBAAsB;IACtB,iBAAoB;IAGtB;;;OAGG;IACH,sBAFW,MAAM,QAOhB;IAED;;;;;;;OAOG;IACH,gBANW,MAAM,SACN,MAAM,aACN,MAAM,WACN,MAAM,SACN,OAAO,QAYjB;IAED;;;OAGG;IACH,mBAFW,MAAM,QAIhB;IAED;;OAEG;IACH,uBA2BC;IAED;;OAEG;IACH,eAgCC;IAED;;;;OAIG;IACH,iBAHW,MAAM,GACJ,KAAK,CAIjB;IAED;;;;;;;;OAQG;IACH,aAPW,MAAM,YACN,MAAM,UACN,MAAM,QACN,OAAO,gBACP,OAAO,GACL,KAAK,CAkHjB;IAmMD;;OAEG;IACH,0BAQC;IAnBD;;;OAGG;IACH,qBAEC;IA/LD;;;;;;OAMG;IACH,iBALW,MAAM,aACN,MAAM,WACN,MAAM,SACN,OAAO,QAIjB;IAED;;OAEG;IACH,cASC;IAED;;OAEG;IACH,eA2BC;IAED;;OAEG;IACH,aA0BC;IAED;;;;;OAKG;IACH,iBAJW,MAAM,SACN,OAAO,WACP,MAAM,QAQhB;IAED;;;OAGG;IACH,kBAFW,MAAM,QAIhB;IAED;;;;OAIG;IACH,kBAHW,MAAM,WACN,MAAM,QAQhB;IAED;;OAEG;IACH,qBAKC;IAED;;;OAGG;IACH,iBAFW,OAAO,QAqBjB;IAUD;;OAEG;IACH,yBAcC;IAzBD;;;OAGG;IACH,oBAEC;CAyCF;uBA/gBsB,aAAa"}
1
+ {"version":3,"file":"sound.d.ts","sourceRoot":"","sources":["../../../src/phaser/core/sound.js"],"names":[],"mappings":"AAEA;IACE;;;;;;;OAOG;IACH,kBANW,OAAO,WAAW,EAAE,IAAI,OACxB,MAAM,WACN,MAAM,SACN,OAAO,YACP,OAAO,EAuEjB;IA/DC,+BAAgB;IAChB,aAAe;IACf,YAAc;IACd,cAAgB;IAChB,YAAiB;IACjB,sBAAmB;IACnB,kBAAqB;IACrB,sBAAsB;IACtB,kBAAkB;IAClB,oBAAoB;IACpB,iBAAiB;IACjB,mBAAmB;IACnB,iBAAiB;IACjB,iBAAiB;IACjB,gBAAmB;IACnB,uBAAuB;IACvB,mBAAmB;IACnB,mBAAsB;IACtB,sBAAuB;IACvB,sCAAqB;IACrB,yBAA4B;IAC5B,kBAAqB;IACrB,uBAA0B;IAC1B,uBAAuB;IACvB,cADW,QAAQ,CACK;IACxB,uBAAuB;IACvB,gBADW,QAAQ,CACO;IAC1B,uBAAuB;IACvB,UADW,QAAQ,CACC;IACpB,oCAAoC;IACpC,QADW,qBAAqB,CACd;IAClB,yBAA4B;IAC5B,iCAAoC;IAYpC,eAA0B;IAC1B,gBAA2B;IAC3B,iBAA4B;IAC5B,eAA0B;IAC1B,eAA0B;IAC1B,eAA0B;IAC1B,yBAAoC;IACpC,uBAAkC;IAClC,gBAAqB;IACrB,0BAA0B;IAC1B,SADW,WAAW,CACH;IACnB,gBAAmB;IACnB,oBAAqB;IACrB,sBAAsB;IACtB,oBAAoB;IACpB,mBAAmB;IACnB,oBAAoB;IACpB,mBAAsB;IACtB,iBAAoB;IAGtB;;;OAGG;IACH,sBAFW,MAAM,QAOhB;IAED;;;;;;;OAOG;IACH,gBANW,MAAM,SACN,MAAM,aACN,MAAM,WACN,MAAM,SACN,OAAO,QAYjB;IAED;;;OAGG;IACH,mBAFW,MAAM,QAIhB;IAED;;OAEG;IACH,uBA6BC;IAED;;OAEG;IACH,eAgCC;IAED;;;;OAIG;IACH,iBAHW,MAAM,GACJ,KAAK,CAIjB;IAED;;;;;;;;OAQG;IACH,aAPW,MAAM,YACN,MAAM,UACN,MAAM,QACN,OAAO,gBACP,OAAO,GACL,KAAK,CAkHjB;IAoMD;;OAEG;IACH,0BAQC;IAnBD;;;OAGG;IACH,qBAEC;IAhMD;;;;;;OAMG;IACH,iBALW,MAAM,aACN,MAAM,WACN,MAAM,SACN,OAAO,QAIjB;IAED;;OAEG;IACH,cASC;IAED;;OAEG;IACH,eA2BC;IAED;;OAEG;IACH,aA0BC;IAED;;;;;OAKG;IACH,iBAJW,MAAM,SACN,OAAO,WACP,MAAM,QAQhB;IAED;;;OAGG;IACH,kBAFW,MAAM,QAIhB;IAED;;;;OAIG;IACH,kBAHW,MAAM,WACN,MAAM,QAQhB;IAED;;OAEG;IACH,qBAKC;IAED;;;OAGG;IACH,iBAFW,OAAO,QAsBjB;IAUD;;OAEG;IACH,yBAcC;IAzBD;;;OAGG;IACH,oBAEC;CAyCF;uBAlhBsB,aAAa"}
@@ -13,7 +13,6 @@ export class SoundManager {
13
13
  type: number;
14
14
  connectToMaster: boolean;
15
15
  isLocked: boolean;
16
- muteOnPause: boolean;
17
16
  _codeMuted: boolean;
18
17
  _muted: boolean;
19
18
  _unlockSource: any;
@@ -1 +1 @@
1
- {"version":3,"file":"sound_manager.d.ts","sourceRoot":"","sources":["../../../src/phaser/core/sound_manager.js"],"names":[],"mappings":"AAYA;IACE;;;OAGG;IACH,kBAFW,OAAO,WAAW,EAAE,IAAI,EAsBlC;IAnBC,+BAAgB;IAChB,iBAA4B;IAC5B,2BAA2B;IAC3B,SADW,YAAY,CACJ;IACnB,oBAAoB;IACpB,iBAAoB;IACpB,aAA0B;IAC1B,yBAA2B;IAC3B,kBAAqB;IACrB,qBAAuB;IACvB,oBAAuB;IACvB,gBAAmB;IACnB,mBAAyB;IACzB,gBAAgB;IAChB,eAAiB;IACjB,qBAAgC;IAChC,mBAAsB;IACtB,yBAA0B;IAC1B,mBAAyB;IAG3B;;OAEG;IACH,aA+CC;IAbG,gBAA+C;IAenD;;OAEG;IACH,kCAIE;IAEF;;OAEG;IACH,iCAME;IAEF;;OAEG;IACH,gCAUE;IAEF;;OAEG;IACH,8BASE;IAEF;;OAEG;IACH,iCASE;IAEF;;;OAGG;IACH,uBAFW,KAAK,UAsCd;IAEF;;OAEG;IACH,gBASC;IAED;;OAEG;IACH,iBASC;IAED;;OAEG;IACH,kBASC;IAED;;;OAGG;IACH,YAFW,MAAM,QAuBhB;IAED;;;;;OAKG;IACH,0BAJW,KAAK,EAAE,GAAC,MAAM,EAAE,uCAEhB,MAAM,QA0BhB;IAED;;OAEG;IACH,eAqBC;IAED;;;;;;;OAOG;IACH,SANW,MAAM,WACN,MAAM,SACN,OAAO,YACP,OAAO,GACL,KAAK,CAMjB;IAED;;;;OAIG;IACH,eAHW,MAAM,GACJ,WAAW,CAIvB;IAED;;;;OAIG;IACH,cAHW,KAAK,GACH,OAAO,CAanB;IAED;;;;OAIG;IACH,iBAHW,MAAM,GACJ,MAAM,CAclB;IAED;;;;;;OAMG;IACH,UALW,MAAM,WACN,MAAM,SACN,OAAO,GACL,KAAK,CASjB;IAED;;OAEG;IACH,gBAUC;IAJG,iBAA6C;IAMjD;;OAEG;IACH,kBASC;IAED;;OAEG;IACH,gBAYC;IAUD;;OAEG;IACH,yBAcC;IAzBD;;;OAGG;IACH,oBAEC;IA6BD;;OAEG;IACH,0BAYC;IAvBD;;;OAGG;IACH,qBAEC;CAkBF;uBAxesB,aAAa;yBAFX,gBAAgB;sBAGnB,YAAY;4BACN,mBAAmB"}
1
+ {"version":3,"file":"sound_manager.d.ts","sourceRoot":"","sources":["../../../src/phaser/core/sound_manager.js"],"names":[],"mappings":"AAYA;IACE;;;OAGG;IACH,kBAFW,OAAO,WAAW,EAAE,IAAI,EAsBlC;IAnBC,+BAAgB;IAChB,iBAA4B;IAC5B,2BAA2B;IAC3B,SADW,YAAY,CACJ;IACnB,oBAAoB;IACpB,iBAAoB;IACpB,aAA0B;IAC1B,yBAA2B;IAC3B,kBAAqB;IAErB,oBAAuB;IACvB,gBAAmB;IACnB,mBAAyB;IACzB,gBAAgB;IAChB,eAAiB;IACjB,qBAAgC;IAChC,mBAAsB;IACtB,yBAA0B;IAC1B,mBAAyB;IAG3B;;OAEG;IACH,aAiDC;IAbG,gBAA+C;IAenD;;OAEG;IACH,kCAIE;IAEF;;OAEG;IACH,iCAME;IAEF;;OAEG;IACH,gCAUE;IAEF;;OAEG;IACH,8BASE;IAEF;;OAEG;IACH,iCASE;IAEF;;;OAGG;IACH,uBAFW,KAAK,UAsCd;IAEF;;OAEG;IACH,gBASC;IAED;;OAEG;IACH,iBASC;IAED;;OAEG;IACH,kBASC;IAED;;;OAGG;IACH,YAFW,MAAM,QAuBhB;IAED;;;;;OAKG;IACH,0BAJW,KAAK,EAAE,GAAC,MAAM,EAAE,uCAEhB,MAAM,QA0BhB;IAED;;OAEG;IACH,eAqBC;IAED;;;;;;;OAOG;IACH,SANW,MAAM,WACN,MAAM,SACN,OAAO,YACP,OAAO,GACL,KAAK,CAMjB;IAED;;;;OAIG;IACH,eAHW,MAAM,GACJ,WAAW,CAIvB;IAED;;;;OAIG;IACH,cAHW,KAAK,GACH,OAAO,CAanB;IAED;;;;OAIG;IACH,iBAHW,MAAM,GACJ,MAAM,CAclB;IAED;;;;;;OAMG;IACH,UALW,MAAM,WACN,MAAM,SACN,OAAO,GACL,KAAK,CASjB;IAED;;OAEG;IACH,gBAUC;IAJG,iBAA6C;IAMjD;;OAEG;IACH,kBASC;IAED;;OAEG;IACH,gBAYC;IAUD;;OAEG;IACH,yBAcC;IAzBD;;;OAGG;IACH,oBAEC;IA6BD;;OAEG;IACH,0BAYC;IAvBD;;;OAGG;IACH,qBAEC;CAkBF;uBA1esB,aAAa;yBAFX,gBAAgB;sBAGnB,YAAY;4BACN,mBAAmB"}