"use strict";(self.webpackChunkmontana_messenger=self.webpackChunkmontana_messenger||[]).push([[984],{94481(e,t,a){a.d(t,{k:()=>c});var s=a(10718),i=a(17833),r=a(47675),n=a(80400),o=a(68191),d=a(74604);const h=i("music-metadata:parser:ID3");class c extends d.s{constructor(){super(...arguments),this.id3parser=new n.S}static async startsWithID3v2Header(e){return"ID3"===(await e.peekToken(r.yW)).fileIdentifier}async parse(){try{await this.parseID3v2()}catch(e){if(!(e instanceof s.d1))throw e;h("End-of-stream")}}finalize(){}async parseID3v2(){if(await this.tryReadId3v2Headers(),h("End of ID3v2 header, go to MPEG-parser: pos=%s",this.tokenizer.position),await this.postId3v2Parse(),this.options.skipPostHeaders&&this.metadata.hasAny())this.finalize();else{const e=new o.Bn(this.metadata,this.tokenizer,this.options);await e.parse(),this.finalize()}}async tryReadId3v2Headers(){if("ID3"===(await this.tokenizer.peekToken(r.yW)).fileIdentifier)return h("Found ID3v2 header, pos=%s",this.tokenizer.position),await this.id3parser.parse(this.metadata,this.tokenizer,this.options),this.tryReadId3v2Headers()}}},60984(e,t,a){a.r(t),a.d(t,{MusepackParser:()=>S});var s=a(17833),i=a(4017),r=a(94481),n=a(74604),o=a(10283),d=a(5031),h=a(56185);const c=s("music-metadata:parser:musepack:sv8"),m=new i.StringType(2,"latin1"),u={len:5,get:(e,t)=>({crc:i.UINT32_LE.get(e,t),streamVersion:i.UINT8.get(e,t+4)})},l={len:2,get:(e,t)=>({sampleFrequency:[44100,48e3,37800,32e3][h.f5(e,t,0,3)],maxUsedBands:h.f5(e,t,3,5),channelCount:h.f5(e,t+1,0,4)+1,msUsed:h.cD(e,t+1,4),audioBlockFrames:h.f5(e,t+1,5,3)})};class p{get tokenizer(){return this._tokenizer}set tokenizer(e){this._tokenizer=e}constructor(e){this._tokenizer=e}async readPacketHeader(){const e=await this.tokenizer.readToken(m),t=await this.readVariableSizeField();return{key:e,payloadLength:t.value-2-t.len}}async readStreamHeader(e){const t={};c(`Reading SH at offset=${this.tokenizer.position}`);const a=await this.tokenizer.readToken(u);e-=u.len,Object.assign(t,a),c(`SH.streamVersion = ${a.streamVersion}`);const s=await this.readVariableSizeField();e-=s.len,t.sampleCount=s.value;const i=await this.readVariableSizeField();e-=i.len,t.beginningOfSilence=i.value;const r=await this.tokenizer.readToken(l);return e-=l.len,Object.assign(t,r),await this.tokenizer.ignore(e),t}async readVariableSizeField(e=1,t=0){let a=await this.tokenizer.readNumber(i.UINT8);return 128&a?(a&=127,a+=t,this.readVariableSizeField(e+1,a<<7)):{len:e,value:t+a}}}var k=a(63324);class w extends((0,k.fO)("Musepack")){}const g=s("music-metadata:parser:musepack");class f extends n.s{constructor(){super(...arguments),this.audioLength=0}async parse(){if("MPCK"!==await this.tokenizer.readToken(d.e))throw new w("Invalid Magic number");return this.metadata.setFormat("container","Musepack, SV8"),this.parsePacket()}async parsePacket(){const e=new p(this.tokenizer);for(;;){const t=await e.readPacketHeader();switch(g(`packet-header key=${t.key}, payloadLength=${t.payloadLength}`),t.key){case"SH":{const a=await e.readStreamHeader(t.payloadLength);this.metadata.setFormat("numberOfSamples",a.sampleCount),this.metadata.setFormat("sampleRate",a.sampleFrequency),this.metadata.setFormat("duration",a.sampleCount/a.sampleFrequency),this.metadata.setFormat("numberOfChannels",a.channelCount);break}case"AP":this.audioLength+=t.payloadLength,await this.tokenizer.ignore(t.payloadLength);break;case"RG":case"EI":case"SO":case"ST":case"CT":await this.tokenizer.ignore(t.payloadLength);break;case"SE":return this.metadata.format.duration&&this.metadata.setFormat("bitrate",8*this.audioLength/this.metadata.format.duration),(0,o.tryParseApeHeader)(this.metadata,this.tokenizer,this.options);default:throw new w(`Unexpected header: ${t.key}`)}}}}class y{constructor(e){this.pos=0,this.dword=null,this.tokenizer=e}async read(e){for(;null===this.dword;)this.dword=await this.tokenizer.readToken(i.UINT32_LE);let t=this.dword;return this.pos+=e,this.pos<32?(t>>>=32-this.pos,t&(1<>>32-this.pos),t&(1<0){const t=32-this.pos;this.dword=null,e-=t,this.pos=0}const t=e%32,a=(e-t)/32;return await this.tokenizer.ignore(4*a),this.read(t)}}var z=a(12971);const b={len:24,get:(e,t)=>{const a={signature:(0,z.c)(e.subarray(t,t+3),"latin1"),streamMinorVersion:h.f5(e,t+3,0,4),streamMajorVersion:h.f5(e,t+3,4,4),frameCount:i.UINT32_LE.get(e,t+4),maxLevel:i.UINT16_LE.get(e,t+8),sampleFrequency:[44100,48e3,37800,32e3][h.f5(e,t+10,0,2)],link:h.f5(e,t+10,2,2),profile:h.f5(e,t+10,4,4),maxBand:h.f5(e,t+11,0,6),intensityStereo:h.cD(e,t+11,6),midSideStereo:h.cD(e,t+11,7),titlePeak:i.UINT16_LE.get(e,t+12),titleGain:i.UINT16_LE.get(e,t+14),albumPeak:i.UINT16_LE.get(e,t+16),albumGain:i.UINT16_LE.get(e,t+18),lastFrameLength:i.UINT32_LE.get(e,t+20)>>>20&2047,trueGapless:h.cD(e,t+23,0)};return a.lastFrameLength=a.trueGapless?i.UINT32_LE.get(e,20)>>>20&2047:0,a}},I=s("music-metadata:parser:musepack");class F extends n.s{constructor(){super(...arguments),this.bitreader=null,this.audioLength=0,this.duration=null}async parse(){const e=await this.tokenizer.readToken(b);if("MP+"!==e.signature)throw new w("Unexpected magic number");I(`stream-version=${e.streamMajorVersion}.${e.streamMinorVersion}`),this.metadata.setFormat("container","Musepack, SV7"),this.metadata.setFormat("sampleRate",e.sampleFrequency);const t=1152*(e.frameCount-1)+e.lastFrameLength;this.metadata.setFormat("numberOfSamples",t),this.duration=t/e.sampleFrequency,this.metadata.setFormat("duration",this.duration),this.bitreader=new y(this.tokenizer),this.metadata.setFormat("numberOfChannels",e.midSideStereo||e.intensityStereo?2:1);const a=await this.bitreader.read(8);return this.metadata.setFormat("codec",(a/100).toFixed(2)),await this.skipAudioData(e.frameCount),I(`End of audio stream, switching to APEv2, offset=${this.tokenizer.position}`),(0,o.tryParseApeHeader)(this.metadata,this.tokenizer,this.options)}async skipAudioData(e){for(;e-- >0;){const e=await this.bitreader.read(20);this.audioLength+=20+e,await this.bitreader.ignore(e)}const t=await this.bitreader.read(11);this.audioLength+=t,null!==this.duration&&this.metadata.setFormat("bitrate",this.audioLength/this.duration)}}const L=s("music-metadata:parser:musepack");class S extends r.k{async postId3v2Parse(){let e;switch(await this.tokenizer.peekToken(new i.StringType(3,"latin1"))){case"MP+":L("Stream-version 7"),e=new F(this.metadata,this.tokenizer,this.options);break;case"MPC":L("Stream-version 8"),e=new f(this.metadata,this.tokenizer,this.options);break;default:throw new w("Invalid signature prefix")}return this.metadata.setAudioOnly(),e.parse()}}}}]); //# sourceMappingURL=984.f1dabf3be828a42b9fd8.js.map