@stinkycomputing/web-live-player 0.1.4 → 0.1.6

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.
@@ -1,4 +1,4 @@
1
- "use strict";var As=Object.create;var Qn=Object.defineProperty;var js=Object.getOwnPropertyDescriptor;var Ks=Object.getOwnPropertyNames;var Ps=Object.getPrototypeOf,qs=Object.prototype.hasOwnProperty;var $s=(i,U,e)=>U in i?Qn(i,U,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[U]=e;var Ul=(i,U,e,t)=>{if(U&&typeof U=="object"||typeof U=="function")for(let F of Ks(U))!qs.call(i,F)&&F!==e&&Qn(i,F,{get:()=>U[F],enumerable:!(t=js(U,F))||t.enumerable});return i};var Dn=(i,U,e)=>(e=i!=null?As(Ps(i)):{},Ul(U||!i||!i.__esModule?Qn(e,"default",{value:i,enumerable:!0}):e,i));var d=(i,U,e)=>($s(i,typeof U!="symbol"?U+"":U,e),e),nn=(i,U,e)=>{if(!U.has(i))throw TypeError("Cannot "+e)};var xn=(i,U,e)=>(nn(i,U,"read from private field"),e?e.call(i):U.get(i)),sn=(i,U,e)=>{if(U.has(i))throw TypeError("Cannot add the same private member more than once");U instanceof WeakSet?U.add(i):U.set(i,e)},bn=(i,U,e,t)=>(nn(i,U,"write to private field"),t?t.call(i,e):U.set(i,e),e);var ln=(i,U,e)=>(nn(i,U,"access private method"),e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const el=require("stinky-moq-js"),iU={debug:i=>console.debug(`[VideoPlayer] ${i}`),info:i=>console.info(`[VideoPlayer] ${i}`),warn:i=>console.warn(`[VideoPlayer] ${i}`),error:i=>console.error(`[VideoPlayer] ${i}`)},On={debug:()=>{},info:()=>{},warn:()=>{},error:()=>{}};class Wn{constructor(){d(this,"handlers",new Map);d(this,"_connected",!1)}get connected(){return this._connected}on(U,e){this.handlers.has(U)||this.handlers.set(U,new Set),this.handlers.get(U).add(e)}off(U,e){var t;(t=this.handlers.get(U))==null||t.delete(e)}emit(U,...e){var t;(t=this.handlers.get(U))==null||t.forEach(F=>F(...e))}dispose(){this.handlers.clear()}}function Mn(i){return{debug:i?iU.debug:On.debug,info:iU.info,warn:iU.warn,error:iU.error}}class pn{constructor(U,e=!1){d(this,"eventHandlers",new Map);d(this,"logger");d(this,"_state");this._state=U,this.logger=Mn(e)}get state(){return this._state}setState(U){if(this._state!==U){const e=this._state;this._state=U,this.logger.debug(`State: ${e} -> ${U}`),this.emit("statechange",U)}}setDebugLogging(U){this.logger=Mn(U)}on(U,e){this.eventHandlers.has(U)||this.eventHandlers.set(U,new Set),this.eventHandlers.get(U).add(e)}off(U,e){var t;(t=this.eventHandlers.get(U))==null||t.delete(e)}emit(U,...e){var t;(t=this.eventHandlers.get(U))==null||t.forEach(F=>F(...e))}clearEventHandlers(){this.eventHandlers.clear()}}const yn=1297302867,wn=1,an=32,gi=24,dU=64,oU=1,bi=2,$i=4;var $=(i=>(i[i.VIDEO_FRAME=1]="VIDEO_FRAME",i[i.AUDIO_FRAME=2]="AUDIO_FRAME",i[i.RPC=3]="RPC",i[i.MUXED_DATA=4]="MUXED_DATA",i[i.DECODER_DATA=5]="DECODER_DATA",i))($||{}),g=(i=>(i[i.VIDEO_VP8=1]="VIDEO_VP8",i[i.VIDEO_VP9=2]="VIDEO_VP9",i[i.VIDEO_AVC=3]="VIDEO_AVC",i[i.VIDEO_HEVC=4]="VIDEO_HEVC",i[i.VIDEO_AV1=5]="VIDEO_AV1",i[i.AUDIO_OPUS=64]="AUDIO_OPUS",i[i.AUDIO_AAC=65]="AUDIO_AAC",i[i.AUDIO_PCM=66]="AUDIO_PCM",i))(g||{});class WU{static initHeader(U,e,t,F){return{magic:yn,version:wn,header_size:this.calculateHeaderSize(e),type:U,flags:e,pts:t,id:F,reserved:0}}static calculateHeaderSize(U){let e=an;return U&bi&&(e+=dU),U&oU&&(e+=gi),e}static validateHeader(U,e){if(U.magic!==yn||U.version!==wn)return!1;const t=this.calculateHeaderSize(U.flags);return!(U.header_size!==t||e<U.header_size)}static serialize(U,e=null,t=null,F=null){const Q=e!==null&&U.flags&bi,n=t!==null&&U.flags&oU;let s=an;Q&&(s+=dU),n&&(s+=gi),F&&(s+=F.length),U.header_size=s-(F?F.length:0);const l=new ArrayBuffer(s),a=new DataView(l);let B=0;if(a.setUint32(B,U.magic,!0),B+=4,a.setUint32(B,U.flags,!0),B+=4,a.setBigUint64(B,U.pts,!0),B+=8,a.setBigUint64(B,U.id,!0),B+=8,a.setUint16(B,U.version,!0),B+=2,a.setUint16(B,U.header_size,!0),B+=2,a.setUint16(B,U.type,!0),B+=2,a.setUint16(B,U.reserved,!0),B+=2,Q&&e){const r=this.stringToFixedBytes(e.metadata,64);new Uint8Array(l,B,64).set(r),B+=64}return n&&t&&(a.setUint32(B,t.sample_rate,!0),B+=4,a.setUint32(B,t.timebase_num,!0),B+=4,a.setUint32(B,t.timebase_den,!0),B+=4,a.setUint16(B,t.codec_profile,!0),B+=2,a.setUint16(B,t.codec_level,!0),B+=2,a.setUint16(B,t.width,!0),B+=2,a.setUint16(B,t.height,!0),B+=2,a.setUint8(B,t.codec_type),B+=1,a.setUint8(B,t.channels),B+=1,a.setUint8(B,t.bit_depth),B+=1,a.setUint8(B,t.reserved),B+=1),F&&F.length>0&&new Uint8Array(l,B).set(F),new Uint8Array(l)}static parseData(U){const e={valid:!1,header:null,metadata:null,codec_data:null,payload:null,payload_size:0};if(!U||U.length<36)return e;const t=new DataView(U.buffer,U.byteOffset);let F=0;const Q={magic:t.getUint32(F,!0),flags:t.getUint32(F+4,!0),pts:t.getBigUint64(F+8,!0),id:t.getBigUint64(F+16,!0),version:t.getUint16(F+24,!0),header_size:t.getUint16(F+26,!0),type:t.getUint16(F+28,!0),reserved:t.getUint16(F+30,!0)};if(F+=an,!this.validateHeader(Q,U.length))return e;if(e.header=Q,Q.flags&bi){if(U.length<F+dU)return e;const n=U.slice(F,F+dU),s=this.fixedBytesToString(n);e.metadata={metadata:s},F+=dU}if(Q.flags&oU){if(U.length<F+gi)return e;e.codec_data={sample_rate:t.getUint32(F,!0),timebase_num:t.getUint32(F+4,!0),timebase_den:t.getUint32(F+8,!0),codec_profile:t.getUint16(F+12,!0),codec_level:t.getUint16(F+14,!0),width:t.getUint16(F+16,!0),height:t.getUint16(F+18,!0),codec_type:t.getUint8(F+20),channels:t.getUint8(F+21),bit_depth:t.getUint8(F+22),reserved:t.getUint8(F+23)},F+=gi}return F<U.length?(e.payload=U.slice(F),e.payload_size=e.payload.length):(e.payload=new Uint8Array(0),e.payload_size=0),e.valid=!0,e}static stringToFixedBytes(U,e){const t=new Uint8Array(e);let F;typeof TextEncoder<"u"?F=new TextEncoder().encode(U):F=new Uint8Array(Buffer.from(U,"utf8"));const Q=Math.min(F.length,e-1);return t.set(F.slice(0,Q)),t[Q]=0,t}static fixedBytesToString(U){let e=U.length;for(let t=0;t<U.length;t++)if(U[t]===0){e=t;break}return typeof TextDecoder<"u"?new TextDecoder().decode(U.slice(0,e)):Buffer.from(U.slice(0,e)).toString("utf8")}}function En(i,U,e){const t=i*BigInt(U.num)*BigInt(e.den)/(BigInt(U.den)*BigInt(e.num));return Number(t)}function In(i,U){return!i&&!U?!1:!i||!U?!0:i.codec_type!==U.codec_type||i.width!==U.width||i.height!==U.height||i.codec_profile!==U.codec_profile||i.codec_level!==U.codec_level}function tl(i){switch(i.codec_type){case 3:const U=i.codec_profile>0?i.codec_profile.toString(16).padStart(2,"0"):"42",e="00",t=i.codec_level>0?i.codec_level.toString(16).padStart(2,"0"):"1f";return`avc1.${U}${e}${t}`;case 4:return"hev1.1.6.L93.B0";case 2:return"vp09.00.10.08";case 1:return"vp8";case 5:return"av01.0.00M.08";default:return null}}class Li{constructor(U={}){d(this,"decoder",null);d(this,"config");d(this,"flushing",!1);d(this,"logger");d(this,"maxQueueSize");d(this,"onFrameDecoded");d(this,"onError");d(this,"onQueueOverflow");d(this,"chunksSentToDecoder",0);d(this,"framesDecoded",0);this.logger=U.logger??iU,this.onFrameDecoded=U.onFrameDecoded??U.onFrame,this.onError=U.onError,this.onQueueOverflow=U.onQueueOverflow,this.maxQueueSize=U.maxQueueSize??10,this.createDecoder()}get decodeQueueSize(){var U;return((U=this.decoder)==null?void 0:U.decodeQueueSize)??0}get state(){var U;return((U=this.decoder)==null?void 0:U.state)??"closed"}createDecoder(){this.decoder=new VideoDecoder({output:U=>{this.framesDecoded++,this.onFrameDecoded?this.onFrameDecoded(U):U.close()},error:U=>{this.logger.error(`Decoder error: ${U.message}`),this.onError&&this.onError(U)}})}async configure(U,e=!0){return"codec"in U&&typeof U.codec=="string"?this.configureWithConfig(U):this.configureWithCodecData(U,e)}async configureWithConfig(U){var t;const e=[U,{...U,hardwareAcceleration:U.hardwareAcceleration==="prefer-hardware"?"prefer-software":"prefer-hardware"}];for(const F of e)if((await VideoDecoder.isConfigSupported(F)).supported){this.config=F,(t=this.decoder)==null||t.configure(F),this.logger.info(`Decoder configured: ${F.codec} ${F.codedWidth}x${F.codedHeight} (${F.hardwareAcceleration??"default"})`);return}throw new Error(`Codec configuration not supported: ${U.codec}`)}async configureWithCodecData(U,e=!0){var Q;const t=tl(U);if(!t)throw new Error(`Unsupported codec type: ${U.codec_type}`);const F=[{codec:t,codedWidth:U.width,codedHeight:U.height,hardwareAcceleration:e?"prefer-hardware":"prefer-software",latencyMode:"realtime"},{codec:t,codedWidth:U.width,codedHeight:U.height,hardwareAcceleration:e?"prefer-software":"prefer-hardware",latencyMode:"realtime"}];for(const n of F)if((await VideoDecoder.isConfigSupported(n)).supported){this.config=n,(Q=this.decoder)==null||Q.configure(n),this.logger.info(`Decoder configured: ${t} ${U.width}x${U.height} (${n.hardwareAcceleration})`);return}throw new Error(`Codec configuration not supported: ${t}`)}decodeBinary(U){var n,s;if(this.flushing){this.logger.warn("Received packet while flushing");return}if(!U.header||!U.payload||!this.decoder||this.decoder.state!=="configured")return;if(this.decoder.decodeQueueSize>this.maxQueueSize){this.onQueueOverflow&&this.onQueueOverflow(this.decoder.decodeQueueSize);return}const e=(n=U.codec_data)!=null&&n.timebase_den&&((s=U.codec_data)!=null&&s.timebase_num)?{num:U.codec_data.timebase_num,den:U.codec_data.timebase_den}:{num:1,den:1e6},t={num:1,den:1e6},F=En(U.header.pts,e,t),Q=new EncodedVideoChunk({timestamp:F,type:U.header.flags&$i?"key":"delta",data:U.payload??new Uint8Array(0)});try{this.chunksSentToDecoder++,this.decoder.decode(Q)}catch(l){this.logger.error(`Decode error: ${l}`)}}decode(U){if(this.flushing){this.logger.warn("Received sample while flushing");return}if(!this.decoder||this.decoder.state!=="configured")return;if(this.decoder.decodeQueueSize>this.maxQueueSize){this.onQueueOverflow&&this.onQueueOverflow(this.decoder.decodeQueueSize);return}const e=new EncodedVideoChunk({timestamp:U.timestamp,duration:U.duration,type:U.isKeyframe?"key":"delta",data:U.data});try{this.chunksSentToDecoder++,this.decoder.decode(e)}catch(t){this.logger.error(`Decode error: ${t}`)}}async flush(){if(!(!this.decoder||this.decoder.state==="closed")){this.flushing=!0;try{await this.decoder.flush()}catch{}this.flushing=!1}}flushSync(){this.flushing=!0,this.decoder&&this.decoder.state!=="closed"&&(this.decoder.reset(),this.config&&this.decoder.configure(this.config)),this.flushing=!1}reset(){this.decoder&&this.decoder.state!=="closed"&&(this.decoder.reset(),this.config&&this.decoder.configure(this.config))}dispose(){this.decoder&&(this.decoder.state!=="closed"&&this.decoder.close(),this.decoder=null),this.config=void 0}}const An="dmFyIEwgPSAvKiBAX19QVVJFX18gKi8gZnVuY3Rpb24oKSB7CiAgZnVuY3Rpb24gYShBLCBDKSB7CiAgICB0aGlzLnRpbnlIMjY0TW9kdWxlID0gQSwgdGhpcy5vblBpY3R1cmVSZWFkeSA9IEMsIHRoaXMucFN0b3JhZ2UgPSB0aGlzLnRpbnlIMjY0TW9kdWxlLl9oMjY0YnNkQWxsb2MoKSwgdGhpcy5wV2lkdGggPSB0aGlzLnRpbnlIMjY0TW9kdWxlLl9tYWxsb2MoNCksIHRoaXMucEhlaWdodCA9IHRoaXMudGlueUgyNjRNb2R1bGUuX21hbGxvYyg0KSwgdGhpcy5wUGljdHVyZSA9IHRoaXMudGlueUgyNjRNb2R1bGUuX21hbGxvYyg0KSwgdGhpcy5fZGVjQnVmZmVyID0gdGhpcy50aW55SDI2NE1vZHVsZS5fbWFsbG9jKDEwNDg1NzYpLCB0aGlzLnRpbnlIMjY0TW9kdWxlLl9oMjY0YnNkSW5pdCh0aGlzLnBTdG9yYWdlLCAwKTsKICB9CiAgdmFyIEogPSBhLnByb3RvdHlwZTsKICByZXR1cm4gSi5yZWxlYXNlID0gZnVuY3Rpb24oKSB7CiAgICB2YXIgQyA9IHRoaXMucFN0b3JhZ2U7CiAgICBDICE9PSAwICYmICh0aGlzLnRpbnlIMjY0TW9kdWxlLl9oMjY0YnNkU2h1dGRvd24oQyksIHRoaXMudGlueUgyNjRNb2R1bGUuX2gyNjRic2RGcmVlKEMpKSwgdGhpcy50aW55SDI2NE1vZHVsZS5fZnJlZSh0aGlzLnBXaWR0aCksIHRoaXMudGlueUgyNjRNb2R1bGUuX2ZyZWUodGhpcy5wSGVpZ2h0KSwgdGhpcy50aW55SDI2NE1vZHVsZS5fZnJlZSh0aGlzLnBQaWN0dXJlKSwgdGhpcy5wU3RvcmFnZSA9IDAsIHRoaXMucFdpZHRoID0gMCwgdGhpcy5wSGVpZ2h0ID0gMDsKICB9LCBKLmRlY29kZSA9IGZ1bmN0aW9uKEMpIHsKICAgIEMgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciAmJiAoQyA9IG5ldyBVaW50OEFycmF5KEMpKSwgdGhpcy50aW55SDI2NE1vZHVsZS5IRUFQVTguc2V0KEMsIHRoaXMuX2RlY0J1ZmZlcik7CiAgICB2YXIgUyA9IHRoaXMudGlueUgyNjRNb2R1bGUuX2gyNjRic2REZWNvZGUodGhpcy5wU3RvcmFnZSwgdGhpcy5fZGVjQnVmZmVyLCBDLmJ5dGVMZW5ndGgsIHRoaXMucFBpY3R1cmUsIHRoaXMucFdpZHRoLCB0aGlzLnBIZWlnaHQpOwogICAgaWYgKFMgPT09IGEuUElDX1JEWSkgewogICAgICB2YXIgRCA9IHRoaXMudGlueUgyNjRNb2R1bGUuZ2V0VmFsdWUodGhpcy5wV2lkdGgsICJpMzIiKSwgRSA9IHRoaXMudGlueUgyNjRNb2R1bGUuZ2V0VmFsdWUodGhpcy5wSGVpZ2h0LCAiaTMyIiksIHMgPSB0aGlzLnRpbnlIMjY0TW9kdWxlLmdldFZhbHVlKHRoaXMucFBpY3R1cmUsICJpOCoiKSwgRyA9IG5ldyBVaW50OEFycmF5KHRoaXMudGlueUgyNjRNb2R1bGUuSEVBUFU4LnN1YmFycmF5KHMsIHMgKyBEICogRSAqIDMgLyAyKSk7CiAgICAgIHRoaXMub25QaWN0dXJlUmVhZHkoRywgRCwgRSk7CiAgICB9CiAgfSwgYTsKfSgpOwpMLlJEWSA9IDA7CkwuUElDX1JEWSA9IDE7CkwuSERSU19SRFkgPSAyOwpMLkVSUk9SID0gMzsKTC5QQVJBTV9TRVRfRVJST1IgPSA0OwpMLk1FTUFMTE9DX0VSUk9SID0gNTsKdmFyIFNBID0gZnVuY3Rpb24oKSB7CiAgdmFyIGEgPSB0eXBlb2YgZG9jdW1lbnQgPCAidSIgJiYgZG9jdW1lbnQuY3VycmVudFNjcmlwdCA/IGRvY3VtZW50LmN1cnJlbnRTY3JpcHQuc3JjIDogdm9pZCAwOwogIHJldHVybiBmdW5jdGlvbihBKSB7CiAgICBBID0gQSB8fCB7fTsKICAgIHZhciBBID0gdHlwZW9mIEEgPCAidSIgPyBBIDoge30sIEMsIFM7CiAgICBBLnJlYWR5ID0gbmV3IFByb21pc2UoZnVuY3Rpb24oSSwgZykgewogICAgICBDID0gSSwgUyA9IGc7CiAgICB9KTsKICAgIHZhciBEID0ge30sIEU7CiAgICBmb3IgKEUgaW4gQSkKICAgICAgQS5oYXNPd25Qcm9wZXJ0eShFKSAmJiAoRFtFXSA9IEFbRV0pOwogICAgdmFyIHMgPSAhMCwgRyA9ICIiOwogICAgZnVuY3Rpb24gVShJKSB7CiAgICAgIHJldHVybiBBLmxvY2F0ZUZpbGUgPyBBLmxvY2F0ZUZpbGUoSSwgRykgOiBHICsgSTsKICAgIH0KICAgIHZhciBNOwogICAgRyA9IHNlbGYubG9jYXRpb24uaHJlZiwgYSAmJiAoRyA9IGEpLCBHLmluZGV4T2YoImJsb2I6IikgIT09IDAgPyBHID0gRy5zdWJzdHIoMCwgRy5sYXN0SW5kZXhPZigiLyIpICsgMSkgOiBHID0gIiIsIE0gPSBmdW5jdGlvbihnKSB7CiAgICAgIHRyeSB7CiAgICAgICAgdmFyIFEgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKICAgICAgICByZXR1cm4gUS5vcGVuKCJHRVQiLCBnLCAhMSksIFEucmVzcG9uc2VUeXBlID0gImFycmF5YnVmZmVyIiwgUS5zZW5kKG51bGwpLCBuZXcgVWludDhBcnJheShRLnJlc3BvbnNlKTsKICAgICAgfSBjYXRjaCAoeSkgewogICAgICAgIHZhciBCID0geihnKTsKICAgICAgICBpZiAoQikKICAgICAgICAgIHJldHVybiBCOwogICAgICAgIHRocm93IHk7CiAgICAgIH0KICAgIH0sIEEucHJpbnQgfHwgY29uc29sZS5sb2cuYmluZChjb25zb2xlKTsKICAgIHZhciBrID0gQS5wcmludEVyciB8fCBjb25zb2xlLndhcm4uYmluZChjb25zb2xlKTsKICAgIGZvciAoRSBpbiBEKQogICAgICBELmhhc093blByb3BlcnR5KEUpICYmIChBW0VdID0gRFtFXSk7CiAgICBEID0gbnVsbCwgQS5hcmd1bWVudHMgJiYgQS5hcmd1bWVudHMsIEEudGhpc1Byb2dyYW0gJiYgQS50aGlzUHJvZ3JhbSwgQS5xdWl0ICYmIEEucXVpdDsKICAgIHZhciBIOwogICAgQS53YXNtQmluYXJ5ICYmIChIID0gQS53YXNtQmluYXJ5KSwgQS5ub0V4aXRSdW50aW1lLCB0eXBlb2YgV2ViQXNzZW1ibHkgIT0gIm9iamVjdCIgJiYgYygibm8gbmF0aXZlIHdhc20gc3VwcG9ydCBkZXRlY3RlZCIpOwogICAgZnVuY3Rpb24gdihJLCBnLCBRKSB7CiAgICAgIHN3aXRjaCAoZyA9IGcgfHwgImk4IiwgZy5jaGFyQXQoZy5sZW5ndGggLSAxKSA9PT0gIioiICYmIChnID0gImkzMiIpLCBnKSB7CiAgICAgICAgY2FzZSAiaTEiOgogICAgICAgICAgcmV0dXJuIHRbSSA+PiAwXTsKICAgICAgICBjYXNlICJpOCI6CiAgICAgICAgICByZXR1cm4gdFtJID4+IDBdOwogICAgICAgIGNhc2UgImkxNiI6CiAgICAgICAgICByZXR1cm4gT1tJID4+IDFdOwogICAgICAgIGNhc2UgImkzMiI6CiAgICAgICAgICByZXR1cm4gbltJID4+IDJdOwogICAgICAgIGNhc2UgImk2NCI6CiAgICAgICAgICByZXR1cm4gbltJID4+IDJdOwogICAgICAgIGNhc2UgImZsb2F0IjoKICAgICAgICAgIHJldHVybiBsW0kgPj4gMl07CiAgICAgICAgY2FzZSAiZG91YmxlIjoKICAgICAgICAgIHJldHVybiBUW0kgPj4gM107CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgIGMoImludmFsaWQgdHlwZSBmb3IgZ2V0VmFsdWU6ICIgKyBnKTsKICAgICAgfQogICAgICByZXR1cm4gbnVsbDsKICAgIH0KICAgIHZhciBLLCBlID0gITE7CiAgICBmdW5jdGlvbiBfKEksIGcpIHsKICAgICAgcmV0dXJuIEkgJSBnID4gMCAmJiAoSSArPSBnIC0gSSAlIGcpLCBJOwogICAgfQogICAgdmFyIG0sIHQsIHIsIE8sIG4sIGwsIFQ7CiAgICBmdW5jdGlvbiBYKEkpIHsKICAgICAgbSA9IEksIEEuSEVBUDggPSB0ID0gbmV3IEludDhBcnJheShJKSwgQS5IRUFQMTYgPSBPID0gbmV3IEludDE2QXJyYXkoSSksIEEuSEVBUDMyID0gbiA9IG5ldyBJbnQzMkFycmF5KEkpLCBBLkhFQVBVOCA9IHIgPSBuZXcgVWludDhBcnJheShJKSwgQS5IRUFQVTE2ID0gbmV3IFVpbnQxNkFycmF5KEkpLCBBLkhFQVBVMzIgPSBuZXcgVWludDMyQXJyYXkoSSksIEEuSEVBUEYzMiA9IGwgPSBuZXcgRmxvYXQzMkFycmF5KEkpLCBBLkhFQVBGNjQgPSBUID0gbmV3IEZsb2F0NjRBcnJheShJKTsKICAgIH0KICAgIEEuSU5JVElBTF9NRU1PUlk7CiAgICB2YXIgcCwgYiA9IFtdLCBqID0gW10sIFYgPSBbXTsKICAgIGZ1bmN0aW9uICQoKSB7CiAgICAgIGlmIChBLnByZVJ1bikKICAgICAgICBmb3IgKHR5cGVvZiBBLnByZVJ1biA9PSAiZnVuY3Rpb24iICYmIChBLnByZVJ1biA9IFtBLnByZVJ1bl0pOyBBLnByZVJ1bi5sZW5ndGg7ICkKICAgICAgICAgIGdBKEEucHJlUnVuLnNoaWZ0KCkpOwogICAgICBaKGIpOwogICAgfQogICAgZnVuY3Rpb24gQUEoKSB7CiAgICAgIFooaik7CiAgICB9CiAgICBmdW5jdGlvbiBJQSgpIHsKICAgICAgaWYgKEEucG9zdFJ1bikKICAgICAgICBmb3IgKHR5cGVvZiBBLnBvc3RSdW4gPT0gImZ1bmN0aW9uIiAmJiAoQS5wb3N0UnVuID0gW0EucG9zdFJ1bl0pOyBBLnBvc3RSdW4ubGVuZ3RoOyApCiAgICAgICAgICBDQShBLnBvc3RSdW4uc2hpZnQoKSk7CiAgICAgIFooVik7CiAgICB9CiAgICBmdW5jdGlvbiBnQShJKSB7CiAgICAgIGIudW5zaGlmdChJKTsKICAgIH0KICAgIGZ1bmN0aW9uIFFBKEkpIHsKICAgICAgai51bnNoaWZ0KEkpOwogICAgfQogICAgZnVuY3Rpb24gQ0EoSSkgewogICAgICBWLnVuc2hpZnQoSSk7CiAgICB9CiAgICB2YXIgdyA9IDAsIEYgPSBudWxsOwogICAgZnVuY3Rpb24gQkEoSSkgewogICAgICB3KyssIEEubW9uaXRvclJ1bkRlcGVuZGVuY2llcyAmJiBBLm1vbml0b3JSdW5EZXBlbmRlbmNpZXModyk7CiAgICB9CiAgICBmdW5jdGlvbiBFQShJKSB7CiAgICAgIGlmICh3LS0sIEEubW9uaXRvclJ1bkRlcGVuZGVuY2llcyAmJiBBLm1vbml0b3JSdW5EZXBlbmRlbmNpZXModyksIHcgPT0gMCAmJiBGKSB7CiAgICAgICAgdmFyIGcgPSBGOwogICAgICAgIEYgPSBudWxsLCBnKCk7CiAgICAgIH0KICAgIH0KICAgIEEucHJlbG9hZGVkSW1hZ2VzID0ge30sIEEucHJlbG9hZGVkQXVkaW9zID0ge307CiAgICBmdW5jdGlvbiBjKEkpIHsKICAgICAgQS5vbkFib3J0ICYmIEEub25BYm9ydChJKSwgSSArPSAiIiwgayhJKSwgZSA9ICEwLCBJID0gImFib3J0KCIgKyBJICsgIikuIEJ1aWxkIHdpdGggLXMgQVNTRVJUSU9OUz0xIGZvciBtb3JlIGluZm8uIjsKICAgICAgdmFyIGcgPSBuZXcgV2ViQXNzZW1ibHkuUnVudGltZUVycm9yKEkpOwogICAgICB0aHJvdyBTKGcpLCBnOwogICAgfQogICAgdmFyIFAgPSAiZGF0YTphcHBsaWNhdGlvbi9vY3RldC1zdHJlYW07YmFzZTY0LCI7CiAgICBmdW5jdGlvbiBXKEkpIHsKICAgICAgcmV0dXJuIEkuc3RhcnRzV2l0aChQKTsKICAgIH0KICAgIHZhciBoOwogICAgaCA9ICJkYXRhOmFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbTtiYXNlNjQsQUdGemJRRUFBQUFCWWc1Z0NYOS9mMzkvZjM5L2Z3QmdBMzkvZndGL1lBSi9md0YvWUFGL0FYOWdBWDhBWUFSL2YzOS9BWDlnQm45L2YzOS9md0JnQW45L0FHQURmMzkvQUdBQUFHQUlmMzkvZjM5L2YzOEFZQVIvZjM5L0FHQUFBWDlnQm45L2YzOS9md0YvQWcwQ0FXRUJZUUFEQVdFQllnQUJBeVFqQWdFRUJRVUJBd0FCQ0FBR0F3Y0NBUUFHQWdrREFBQUFBQVFLQndJTEJBd0VEUUlFQlFGd0FRRUJCUWNCQVlBQ2dJQUNCZ2tCZndGQmdNVEFBZ3NIS1FvQll3SUFBV1FBRlFGbEFDUUJaZ0FJQVdjQUJBRm9BQ01CYVFBaUFXb0FJUUZyQUNBQmJBRUFDdktWQnlQM0NRRUpmeUFBS0FJRUlRVUNRQUpBQWtBQ1FBSkFJQUFvQWd4QkEzUWlDU0FBS0FJUUlnaHJJZ2RCSUU0RVFDQUZLQUFBSWdKQkdIUWdBa0VJZEVHQWdQd0hjWElnQWtFSWRrR0EvZ054SUFKQkdIWnljaUVESUFBb0FnZ2lBa1VOQVNBRElBSjBJQVV0QUFSQkNDQUNhM1p5SVFNTUFRc2dCMEVCU0FSQURBSUxJQVV0QUFBZ0FDZ0NDQ0lDUVJocUlnWjBJUU1nQWlBSGFrRUlheUlFUVFGSURRQWdCU0VDQTBBZ0FpMEFBU0FHUVFocklnWjBJQU55SVFNZ0JFRUlTaUVISUFKQkFXb2hBaUFFUVFocklRUWdCdzBBQ3dzZ0EwRi9UQVJBSUFBZ0NFRUJhaUlDTmdJUUlBQWdBa0VIY1RZQ0NFRUFJUVFnQWlBSlN3MENJQUFnQUNnQ0FDQUNRUU4yYWpZQ0JBd0NDeUFEUVlDQWdJQUVUd1JBSUFBZ0NFRURhaUlDTmdJUUlBQWdBa0VIY1RZQ0NFRUJJUVlnQWlBSlN3MEVJQUFnQUNnQ0FDQUNRUU4yYWpZQ0JDQURRUjEyUVFGeFFRRnFJUVFNQWdzZ0EwR0FnSUNBQWs4RVFDQUFJQWhCQldvaUFqWUNFQ0FBSUFKQkIzRTJBZ2hCQVNFR0lBSWdDVXNOQkNBQUlBQW9BZ0FnQWtFRGRtbzJBZ1FnQTBFYmRrRURjVUVEYWlFRURBSUxJQU5CZ0lDQWdBRkpEUUFnQUNBSVFRZHFJZ0kyQWhBZ0FDQUNRUWR4TmdJSVFRRWhCaUFDSUFsTERRTWdBQ0FBS0FJQUlBSkJBM1pxTmdJRUlBTkJHWFpCQjNGQkIyb2hCQXdCQzBHQWdJREFBQ0VFUVFRaENrRUFJUUlDUUNBRFFZQ0FnTUFBY1EwQUEwQUNRQ0FDSWdaQkFXb2hBaUFFUVFKSkRRQWdCRUVCZGlJRUlBTnhSUTBCQ3dzZ0JrRUZhaUlLUVNCSERRQWdBVUVBTmdJQUlBQWdBQ2dDRUNJS1FRZHhJZ00yQWdnZ0FDQUtRU0JxSWdJMkFoQWdBaUFBS0FJTVFRTjBJZ2ROQkVBZ0FDQUFLQUlBSUFKQkEzWnFJZ1UyQWdRTEFrQWdCeUFDYXlJR1FTQk9CRUFnQlNnQUFDSUNRUmgwSUFKQkNIUkJnSUQ4QjNGeUlBSkJDSFpCZ1A0RGNTQUNRUmgyY25JaEJDQURSUTBCSUFRZ0EzUWdCUzBBQkVFSUlBTnJkbkloQkF3QkN5QUdRUUZJQkVCQkFDRUVEQUVMSUFVdEFBQWdBMEVZY2lJQ2RDRUVJQU1nQm1wQkNHc2lBMEVCU0EwQUEwQWdCUzBBQVNBQ1FRaHJJZ0owSUFSeUlRUWdBMEVJU2lFR0lBVkJBV29oQlNBRFFRaHJJUU1nQmcwQUN3c2dBQ0FLUVNGcUlnTTJBaEFnQUNBRFFRZHhJZ1UyQWdoQkFTRUdJQU1nQjBzTkF5QUFJQUFvQWdBaUFpQURRUU4yYWpZQ0JDQUVRWDlLRFFNZ0FCQVdJUU1nQUNBRk5nSUlJQUFnQ2tIQkFHb2lCVFlDRUNBRklBZExEUU1nQUNBQ0lBVkJBM1pxTmdJRVFYOGhCQUpBSUFNT0FnTUFCQXRCQVNFRERBSUxJQUFnQWlBSWFrRUZhaUlJTmdJUUlBQWdDRUVIY1NJSE5nSUlJQWdnQ1UwRVFDQUFJQUFvQWdBZ0NFRURkbW9pQlRZQ0JBc0NRQ0FKSUFocklnTkJJRTRFUUNBRktBQUFJZ1pCR0hRZ0JrRUlkRUdBZ1B3SGNYSWdCa0VJZGtHQS9nTnhJQVpCR0haeWNpRUVJQWRGRFFFZ0JDQUhkQ0FGTFFBRVFRZ2dCMnQyY2lFRURBRUxJQU5CQVVnRVFFRUFJUVFNQVFzZ0JTMEFBQ0FIUVJoeUlnWjBJUVFnQXlBSGFrRUlheUlEUVFGSURRQURRQ0FGTFFBQklBWkJDR3NpQm5RZ0JISWhCQ0FEUVFoS0lRY2dCVUVCYWlFRklBTkJDR3NoQXlBSERRQUxDeUFBSUFnZ0Ntb2lCVFlDRUNBQUlBVkJCM0UyQWdoQkFTRUdJQVVnQ1VzTkFpQUFJQUFvQWdBZ0JVRURkbW8yQWdRZ0JFRWNJQUpyZGlJQVFYOUdEUUlnQUVGL0lBcDBRWDl6YWlFRUMwRUFJUU1MSUFFZ0JEWUNBQ0FESVFZTElBWUw4Z0lDQW44QmZnSkFJQUpGRFFBZ0FDQUNhaUlEUVFGcklBRTZBQUFnQUNBQk9nQUFJQUpCQTBrTkFDQURRUUpySUFFNkFBQWdBQ0FCT2dBQklBTkJBMnNnQVRvQUFDQUFJQUU2QUFJZ0FrRUhTUTBBSUFOQkJHc2dBVG9BQUNBQUlBRTZBQU1nQWtFSlNRMEFJQUJCQUNBQWEwRURjU0lFYWlJRElBRkIvd0Z4UVlHQ2hBaHNJZ0UyQWdBZ0F5QUNJQVJyUVh4eElnUnFJZ0pCQkdzZ0FUWUNBQ0FFUVFsSkRRQWdBeUFCTmdJSUlBTWdBVFlDQkNBQ1FRaHJJQUUyQWdBZ0FrRU1heUFCTmdJQUlBUkJHVWtOQUNBRElBRTJBaGdnQXlBQk5nSVVJQU1nQVRZQ0VDQURJQUUyQWd3Z0FrRVFheUFCTmdJQUlBSkJGR3NnQVRZQ0FDQUNRUmhySUFFMkFnQWdBa0VjYXlBQk5nSUFJQVFnQTBFRWNVRVljaUlFYXlJQ1FTQkpEUUFnQWExQ2dZQ0FnQkIrSVFVZ0F5QUVhaUVCQTBBZ0FTQUZOd01ZSUFFZ0JUY0RFQ0FCSUFVM0F3Z2dBU0FGTndNQUlBRkJJR29oQVNBQ1FTQnJJZ0pCSDBzTkFBc0xJQUFMekF3QkIzOENRQ0FBUlEwQUlBQkJDR3NpQXlBQVFRUnJLQUlBSWdGQmVIRWlBR29oQlFKQUlBRkJBWEVOQUNBQlFRTnhSUTBCSUFNZ0F5Z0NBQ0lCYXlJRFFaakFBQ2dDQUVrTkFTQUFJQUZxSVFBZ0EwR2N3QUFvQWdCSEJFQWdBVUgvQVUwRVFDQURLQUlJSWdJZ0FVRURkaUlFUVFOMFFiREFBR3BHR2lBQ0lBTW9BZ3dpQVVZRVFFR0l3QUJCaU1BQUtBSUFRWDRnQkhkeE5nSUFEQU1MSUFJZ0FUWUNEQ0FCSUFJMkFnZ01BZ3NnQXlnQ0dDRUdBa0FnQXlBREtBSU1JZ0ZIQkVBZ0F5Z0NDQ0lDSUFFMkFnd2dBU0FDTmdJSURBRUxBa0FnQTBFVWFpSUNLQUlBSWdRTkFDQURRUkJxSWdJb0FnQWlCQTBBUVFBaEFRd0JDd05BSUFJaEJ5QUVJZ0ZCRkdvaUFpZ0NBQ0lFRFFBZ0FVRVFhaUVDSUFFb0FoQWlCQTBBQ3lBSFFRQTJBZ0FMSUFaRkRRRUNRQ0FESUFNb0Fod2lBa0VDZEVHNHdnQnFJZ1FvQWdCR0JFQWdCQ0FCTmdJQUlBRU5BVUdNd0FCQmpNQUFLQUlBUVg0Z0FuZHhOZ0lBREFNTElBWkJFRUVVSUFZb0FoQWdBMFliYWlBQk5nSUFJQUZGRFFJTElBRWdCallDR0NBREtBSVFJZ0lFUUNBQklBSTJBaEFnQWlBQk5nSVlDeUFES0FJVUlnSkZEUUVnQVNBQ05nSVVJQUlnQVRZQ0dBd0JDeUFGS0FJRUlnRkJBM0ZCQTBjTkFFR1F3QUFnQURZQ0FDQUZJQUZCZm5FMkFnUWdBeUFBUVFGeU5nSUVJQUFnQTJvZ0FEWUNBQThMSUFNZ0JVOE5BQ0FGS0FJRUlnRkJBWEZGRFFBQ1FDQUJRUUp4UlFSQUlBVkJvTUFBS0FJQVJnUkFRYURBQUNBRE5nSUFRWlRBQUVHVXdBQW9BZ0FnQUdvaUFEWUNBQ0FESUFCQkFYSTJBZ1FnQTBHY3dBQW9BZ0JIRFFOQmtNQUFRUUEyQWdCQm5NQUFRUUEyQWdBUEN5QUZRWnpBQUNnQ0FFWUVRRUdjd0FBZ0F6WUNBRUdRd0FCQmtNQUFLQUlBSUFCcUlnQTJBZ0FnQXlBQVFRRnlOZ0lFSUFBZ0Eyb2dBRFlDQUE4TElBRkJlSEVnQUdvaEFBSkFJQUZCL3dGTkJFQWdCU2dDQ0NJQ0lBRkJBM1lpQkVFRGRFR3d3QUJxUmhvZ0FpQUZLQUlNSWdGR0JFQkJpTUFBUVlqQUFDZ0NBRUYrSUFSM2NUWUNBQXdDQ3lBQ0lBRTJBZ3dnQVNBQ05nSUlEQUVMSUFVb0FoZ2hCZ0pBSUFVZ0JTZ0NEQ0lCUndSQUlBVW9BZ2dpQWtHWXdBQW9BZ0JKR2lBQ0lBRTJBZ3dnQVNBQ05nSUlEQUVMQWtBZ0JVRVVhaUlDS0FJQUlnUU5BQ0FGUVJCcUlnSW9BZ0FpQkEwQVFRQWhBUXdCQ3dOQUlBSWhCeUFFSWdGQkZHb2lBaWdDQUNJRURRQWdBVUVRYWlFQ0lBRW9BaEFpQkEwQUN5QUhRUUEyQWdBTElBWkZEUUFDUUNBRklBVW9BaHdpQWtFQ2RFRzR3Z0JxSWdRb0FnQkdCRUFnQkNBQk5nSUFJQUVOQVVHTXdBQkJqTUFBS0FJQVFYNGdBbmR4TmdJQURBSUxJQVpCRUVFVUlBWW9BaEFnQlVZYmFpQUJOZ0lBSUFGRkRRRUxJQUVnQmpZQ0dDQUZLQUlRSWdJRVFDQUJJQUkyQWhBZ0FpQUJOZ0lZQ3lBRktBSVVJZ0pGRFFBZ0FTQUNOZ0lVSUFJZ0FUWUNHQXNnQXlBQVFRRnlOZ0lFSUFBZ0Eyb2dBRFlDQUNBRFFaekFBQ2dDQUVjTkFVR1F3QUFnQURZQ0FBOExJQVVnQVVGK2NUWUNCQ0FESUFCQkFYSTJBZ1FnQUNBRGFpQUFOZ0lBQ3lBQVFmOEJUUVJBSUFCQkEzWWlBVUVEZEVHd3dBQnFJUUFDZjBHSXdBQW9BZ0FpQWtFQklBRjBJZ0Z4UlFSQVFZakFBQ0FCSUFKeU5nSUFJQUFNQVFzZ0FDZ0NDQXNoQWlBQUlBTTJBZ2dnQWlBRE5nSU1JQU1nQURZQ0RDQURJQUkyQWdnUEMwRWZJUUlnQTBJQU53SVFJQUJCLy8vL0IwMEVRQ0FBUVFoMklnRWdBVUdBL2o5cVFSQjJRUWh4SWdGMElnSWdBa0dBNEI5cVFSQjJRUVJ4SWdKMElnUWdCRUdBZ0E5cVFSQjJRUUp4SWdSMFFROTJJQUVnQW5JZ0JISnJJZ0ZCQVhRZ0FDQUJRUlZxZGtFQmNYSkJIR29oQWdzZ0F5QUNOZ0ljSUFKQkFuUkJ1TUlBYWlFQkFrQUNRQUpBUVl6QUFDZ0NBQ0lFUVFFZ0FuUWlCM0ZGQkVCQmpNQUFJQVFnQjNJMkFnQWdBU0FETmdJQUlBTWdBVFlDR0F3QkN5QUFRUUJCR1NBQ1FRRjJheUFDUVI5R0czUWhBaUFCS0FJQUlRRURRQ0FCSWdRb0FnUkJlSEVnQUVZTkFpQUNRUjEySVFFZ0FrRUJkQ0VDSUFRZ0FVRUVjV29pQjBFUWFpZ0NBQ0lCRFFBTElBY2dBellDRUNBRElBUTJBaGdMSUFNZ0F6WUNEQ0FESUFNMkFnZ01BUXNnQkNnQ0NDSUFJQU0yQWd3Z0JDQUROZ0lJSUFOQkFEWUNHQ0FESUFRMkFnd2dBeUFBTmdJSUMwR293QUJCcU1BQUtBSUFRUUZySWdCQmZ5QUFHellDQUFzTDJBc0JGSDhnQVVHUVBXb3RBQUJCREd3aUIwSEVQR29vQWdBaEJTQUhRY0E4YWlnQ0FDQUJRWUE4YWkwQUFDSUdkQ0VFSUFKRkJFQWdBQ0FBS0FJQUlBUnNOZ0lBQ3lBRklBWjBJUUVDUUFKQUlBTkJuUDhEY1FSQVFRRWhBeUFBSUFBb0FqZ2dBV3dpQlNBQUtBSWtJQUZzSWcxcUlnd2dCMEhJUEdvb0FnQWdCblFpQWlBQUtBSThiQ0lHUVFGMUlBQW9BaWdnQW13aUNtb2lEMnNpQnpZQ1BDQUFJQTBnQldzaUJTQUtRUUYxSUFacklnMXJJZ1kyQWpnZ0FDZ0NOQ0VLSUFBZ0JTQU5haUlGTmdJMElBQWdBQ2dDTENBRWJDSUlJQUFvQWd3Z0JHd2lEbW9pRUNBQUtBSWdJQUZzSWdrZ0FTQUtiQ0lLUVFGMWFpSVNheUlOTmdJc0lBQWdEaUFJYXlJSUlBbEJBWFVnQ21zaURtc2lDallDS0NBQUlBZ2dEbW9pQ0RZQ0pDQUFJQUFvQWh3Z0FXd2lEaUFBS0FJSUlBRnNJZ2xxSWhRZ0FDZ0NFQ0FDYkNJTElBQW9BakFnQW13aUVVRUJkV29pRldzaUFqWUNIQ0FBS0FJWUlSTWdBQ0FKSUE1cklna2dDMEVCZFNBUmF5SUxheUlPTmdJWUlBQW9BaFFoRVNBQUlBa2dDMm9pQ1RZQ0ZDQUFJQVFnRVd3aUJDQUFLQUlBSWd0cUloRWdBQ2dDQkNBQmJDSVdJQUVnRTJ3aUUwRUJkV29pRjJzaUFUWUNEQ0FBSUFzZ0JHc2lDeUFXUVFGMUlCTnJJaE5ySWdRMkFnZ2dBQ0FMSUJOcUlnczJBZ1FnQUNBUUlCSnFJaEFnRVNBWGFpSVNha0VnYWlJUklCUWdGV29pRkNBTUlBOXFJZ3hCQVhWcUlnOXJRUVoxSWhVMkFqQWdBQ0FTSUJCclFTQnFJaEFnRkVFQmRTQU1heUlNYTBFR2RTSVNOZ0lnSUFBZ0RDQVFha0VHZFNJTU5nSVFJQUFnRHlBUmFrRUdkU0lQTmdJQUlBOUJnQVJxUWY4SFN3MENJQXhCZ0FScVFmOEhTdzBDSUJKQmdBUnFRZjhIU3cwQ0lCVkJnQVJxUWY4SFN3MENJQUFnQ0NBTGFrRWdhaUlNSUFWQkFYVWdDV29pRDJ0QkJuVWlFRFlDTkNBQUlBc2dDR3RCSUdvaUNDQUpRUUYxSUFWcklnVnJRUVoxSWdrMkFpUWdBQ0FGSUFocVFRWjFJZ1UyQWhRZ0FDQU1JQTlxUVFaMUlnZzJBZ1FnQ0VHQUJHcEIvd2RMRFFJZ0JVR0FCR3BCL3dkTERRSWdDVUdBQkdwQi93ZExEUUlnRUVHQUJHcEIvd2RMRFFJZ0FDQUVJQXBxUVNCcUlnVWdCa0VCZFNBT2FpSUlhMEVHZFNJSk5nSTRJQUFnQkNBS2EwRWdhaUlFSUE1QkFYVWdCbXNpQm10QkJuVWlDallDS0NBQUlBUWdCbXBCQm5VaUJEWUNHQ0FBSUFVZ0NHcEJCblVpQmpZQ0NDQUdRWUFFYWtIL0Iwc05BaUFFUVlBRWFrSC9CMHNOQWlBS1FZQUVha0gvQjBzTkFpQUpRWUFFYWtIL0Iwc05BaUFBSUFFZ0RXcEJJR29pQkNBSFFRRjFJQUpxSWdaclFRWjFJZ1UyQWp3Z0FDQUJJQTFyUVNCcUlnRWdBa0VCZFNBSGF5SUNhMEVHZFNJSE5nSXNJQUFnQVNBQ2FrRUdkU0lCTmdJY0lBQWdCQ0FHYWtFR2RTSUFOZ0lNSUFCQmdBUnFRZjhIU3cwQ0lBRkJnQVJxUWY4SFN3MENJQWRCZ0FScVFmOEhTdzBDSUFWQmdBUnFRZjhIVFEwQkRBSUxJQU5CNGdCeFJRUkFRUUVoQXlBQUtBSUFRU0JxUVFaMUlnRkJnQVJxUWY4SFN3MENJQUFnQVRZQ09DQUFJQUUyQWp3Z0FDQUJOZ0kwSUFBZ0FUWUNNQ0FBSUFFMkFpd2dBQ0FCTmdJb0lBQWdBVFlDSkNBQUlBRTJBaUFnQUNBQk5nSWNJQUFnQVRZQ0dDQUFJQUUyQWhRZ0FDQUJOZ0lRSUFBZ0FUWUNEQ0FBSUFFMkFnZ2dBQ0FCTmdJRUlBQWdBVFlDQUF3QkMwRUJJUU1nQUNBQUtBSUVJQUZzSWdVZ0FDZ0NHQ0FCYkNJTlFRRjFhaUlDSUFBb0FnQWlCeUFBS0FJVUlBUnNJZ1pxSWdScVFTQnFRUVoxSWdFMkFqQWdBQ0FFSUFKclFTQnFRUVoxSWdJMkFnd2dBQ0FGUVFGMUlBMXJJZ1VnQnlBR2EycEJJR3BCQm5VaUJEWUNCQ0FBSUFFMkFnQWdBQ0FCTmdJZ0lBQWdCRFlDTkNBQUlBRTJBaEFnQUNBRU5nSWtJQUFnQkRZQ0ZDQUFJQUkyQWp3Z0FDQUhJQVVnQm1wclFTQnFRUVoxSWdjMkFnZ2dBQ0FITmdJNElBQWdCellDS0NBQUlBYzJBaGdnQUNBQ05nSXNJQUFnQWpZQ0hDQUJRWUFFYWtIL0Iwc05BU0FFUVlBRWFrSC9CMHNOQVNBSFFZQUVha0gvQjBzTkFTQUNRWUFFYWtIL0Iwc05BUXRCQUNFREN5QURDL29hQVJGL0l3QkJnQUZySWcwa0FDQUFLQUlFSVFRQ2Z3SkFBbjhDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FBS0FJTUloSkJBM1FpRUNBQUtBSVFJZ2xySWdWQklFNEVRQ0FFS0FBQUlnVkJHSFFnQlVFSWRFR0FnUHdIY1hJZ0JVRUlka0dBL2dOeElBVkJHSFp5Y2lFR0lBQW9BZ2dpQlVVTkFTQUdJQVYwSUFRdEFBUkJDQ0FGYTNaeUlRWU1BUXNnQlVFQlNBMEJJQVF0QUFBZ0FDZ0NDQ0lLUVJocUlnZDBJUVlnQlNBS2FrRUlheUlGUVFGSURRQURRQ0FFTFFBQklBZEJDR3NpQjNRZ0JuSWhCaUFGUVFoS0lRb2dCRUVCYWlFRUlBVkJDR3NoQlNBS0RRQUxDeUFDUVFKUERRTWdCa0VBU0FSQVFRRWhDd3dPQ3lBR1FSbDJRZjRBY1VHQUNHb2dCa0dBZ0lEZ0FFOE5EQm9nQmtFVmRrSCtEM0ZCd0FocUlBWkJnSUNBQ0U4TkRCb2dCa0dBZ0lBQlNRUkFJQVpCRUhZaEJBd0NDeUFHUVJGMlFmNy9BWEZCa0FscURBd0xRUUFoQkNBQ1FRSlBEUUVMSUFSQkFYUkJrQXBxREFvTElBSkJCRThOQVF3SUN5QUNRUVJKRFFZZ0FrRUlUdzBDSUFaQi8vLy8vd0ZORFFFZ0JrRVpka0grQUhGQjBBMXFEQWdMSUFKQkNFOE5BZ3NnQmtFVmRrSCtEM0ZCMEE1cURBWUxJQUpCRVVrTkFTQUdRZi8vLy84QlRRMENJQVpCSEhaQkRuRkIwQkZxREFVTElBSkJFRXNOQVFzZ0JrRVpka0grQUhGQjBCQnFEQU1MSUFaQkYzWkIvZ054UWVBUmFnd0NDeUFHUVg5TUJFQkJBa0dpRUNBR1FZQ0FnSUFFY1JzaEN3d0RDeUFHUVJsMlFmNEFjVUhRQ21vZ0JrR0FnSUNBQVU4TkFSb2dCa0dBZ0lBUVNRMEFJQVpCRm5aQi9nZHhRWkFMYWd3QkN5QUdRUkYyUWY3L0FYRkIwQXRxQ3k4QkFDSUxEUUJCQVF3QkMwRUJJQU1nQzBFTGRpSU9TUTBBR2tFZ0lBdEJIM0VpQW1zaENFRUFJUVVDUUNBTFFZQVFTUTBBSUFZZ0MzUWhCQUpBSUF0QkJYWkJQM0VpRDBVRVFFRUFJUWNNQVFzQ1FDQUlJQTlQRFFBZ0FDQUNJQWxxSWdrMkFoQWdBQ0FKUVFkeElnSTJBZ2hCQVNBSklCQkxEUU1hSUFBZ0FDZ0NBQ0FKUVFOMmFpSUZOZ0lFUVNBaENDQVFJQWxySWdwQklFNEVRQ0FGS0FBQUlnUkJHSFFnQkVFSWRFR0FnUHdIY1hJZ0JFRUlka0dBL2dOeElBUkJHSFp5Y2lFRUlBSkZEUUVnQkNBQ2RDQUZMUUFFUVFnZ0FtdDJjaUVFREFFTElBcEJBVWdFUUVFQUlRUU1BUXNnQlMwQUFDQUNRUmh5SWdkMElRUWdBaUFLYWtFSWF5SUdRUUZJRFFBRFFDQUZMUUFCSUFkQkNHc2lCM1FnQkhJaEJDQUdRUWhLSVFJZ0JVRUJhaUVGSUFaQkNHc2hCaUFDRFFBTEMwRUJJQTlCQVd0MElRVWdCRUVnSUE5cmRpRUNRUUFoQndOQUlBMUJRR3NnQjBFQ2RHcEJmMEVCSUFJZ0JYRWJOZ0lBSUFkQkFXb2hCeUFGUVFGTElRb2dCVUVCZGlFRklBb05BQXNnQ0NBUGF5RUlJQVFnRDNRaEJBc2dCeUFPU1FSQUlBOUJBMGtpRkNBTFFmK3ZBVXR4SVFvRFFBSkFJQWhCRDBzTkFDQUFJQWtnQ0d0QklHb2lDVFlDRUNBQUlBbEJCM0VpQWpZQ0NFRUJJQkpCQTNRaUJDQUpTUTBFR2lBQUlBQW9BZ0FnQ1VFRGRtb2lCVFlDQkNBRUlBbHJJZ3hCSUU0RVFDQUZLQUFBSWdSQkdIUWdCRUVJZEVHQWdQd0hjWElnQkVFSWRrR0EvZ054SUFSQkdIWnljaUVFUVNBaENDQUNSUTBCSUFRZ0FuUWdCUzBBQkVFSUlBSnJkbkloQkF3QkMwRUJJQXhCQVVnTkJCb2dCUzBBQUNBQ1FSaHlJZ3QwSVFSQklDRUlJQUlnREdwQkNHc2lCa0VCU0EwQUEwQWdCUzBBQVNBTFFRaHJJZ3QwSUFSeUlRUWdCa0VJU2lFQ0lBVkJBV29oQlNBR1FRaHJJUVlnQWcwQUN3dEJBQ0VGQWtBQ1FBSi9Ba0FnQkVFQVNBMEFRUUVoQlNBRVFmLy8vLzhEU3cwQVFRSWhCU0FFUWYvLy8vOEJTdzBBUVFNaEJTQUVRZi8vLy84QVN3MEFRUVFoQlNBRVFmLy8vejlMRFFCQkJTRUZJQVJCLy8vL0gwc05BRUVHSVFVZ0JFSC8vLzhQU3cwQVFRY2hCU0FFUWYvLy93ZExEUUJCQ0NFRklBUkIvLy8vQTBzTkFFRUpJUVVnQkVILy8vOEJTdzBBUVFvaEJTQUVRZi8vL3dCTERRQkJDeUVGSUFSQi8vOC9TdzBBUVF3aEJTQUVRZi8vSDBzTkFFRU5JUVVnQkVILy93OUxEUUFDZndKQUlBUkIvLzhIVFFSQUlBUkJnSUI4Y1VHQWdBUkdEUUZCQVF3S0N5QUtRUVFnQ2hzaERDQUlRUTlySVFoQkRpRUZJQVJCRDNRTUFRc2dDa0VCSUFvYklRb2dDRUVRYXlFSVFRd2hERUVQSVFVZ0JFRVFkQXNoQkNBRklBcDBJUXNnQ2tVTUFRc2dCU0FLZENFTFFRRWhFeUFJSUFWQkFXb2lBbXNoQ0NBRUlBSjBJUVFnQ2tVTkFTQUtJUXhCQUFzaEV3SkFJQWdnREU4RVFDQUVJUVVNQVFzZ0FDQUpJQWhyUVNCcUlnazJBaEFnQUNBSlFRZHhJZ1kyQWdoQkFTQVNRUU4wSUFsSkRRWWFJQUFnQUNnQ0FDQUpRUU4yYWlJRU5nSUVJQkFnQ1dzaUVVRWdUZ1JBSUFRb0FBQWlBa0VZZENBQ1FRaDBRWUNBL0FkeGNpQUNRUWgyUVlEK0EzRWdBa0VZZG5KeUlRVkJJQ0VJSUFaRkRRRWdCU0FHZENBRUxRQUVRUWdnQm10MmNpRUZEQUVMUVNBaENDQVJRUUZJQkVCQkFDRUZEQUVMSUFRdEFBQWdCa0VZY2lJQ2RDRUZJQVlnRVdwQkNHc2lCa0VCU0EwQUEwQWdCQzBBQVNBQ1FRaHJJZ0owSUFWeUlRVWdCa0VJU2lFUklBUkJBV29oQkNBR1FRaHJJUVlnRVEwQUN3c2dDQ0FNYXlFSUlBVWdESFFoQkNBRlFTQWdER3QySUF0cUlRc01BUXRCQUNFS0N5QU5RVUJySUFkQkFuUnFRUUFnQzBFQ2FpQUxJQWNnRDBZYklBc2dGQnNpQlVFQ2FrRUJkaUlDYXlBQ0lBVkJBWEViTmdJQVFRRWdDaUFUR3lJRklBVkJCa2tnQWtFRElBVkJBV3QwU25GcUlRb2dCMEVCYWlJSElBNUhEUUFMQzBFQUlRY2dBeUFPU3dSQUlBaEJDRTBFUUNBSklBaHJJUUpCSUNFSUlBQWdBa0VnYWlJSk5nSVFJQUFnQ1VFSGNUWUNDRUVCSUFrZ0VFc05BeG9nQUNBQUtBSUFJQWxCQTNacU5nSUVJQUFRRmlFRUN3SkFBa0FDZndKQUlBTkJCRWNFUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUE1QkFXc09EZzRBQVFJREJBVUdCd2dKQ2dzTUVBc2dCRUVhZGtIZ0Vtb01EZ3NnQkVFYWRrR2dFMm9NRFFzZ0JFRWJka0hnRTJvTURBc2dCRUViZGtHQUZHb01Dd3NnQkVFYWRrR2dGR29NQ2dzZ0JFRWFka0hnRkdvTUNRc2dCRUVhZGtHZ0ZXb01DQXNnQkVFYWRrSGdGV29NQndzZ0JFRWJka0dnRm1vTUJnc2dCRUVjZGtIQUZtb01CUXNnQkVFY2RrSFFGbW9NQkFzZ0JFRWRka0hnRm1vTUF3c2dCRUVlZGtIb0Ztb01BZ3NnQkVFQVNBUkFRUUVoQlF3RUMwRVJJUVVnRGtFRFJnMERRUkloQlNBRVFmLy8vLzhEU3cwRFFTSWhCU0FPUVFKR0RRTkJNMEVqSUFSQmdJQ0FnQUpKR3lFRkRBTUxJQVJCRjNaQndCSnFJZ0lnQWlBRVFSdDJJZ0pCb0JKcUlBSkJBVVliSUFSQmdJQ0F3QUJKR3dzdEFBQWlCUTBCUVFFTUJBdEJBVUVSSUFSQmYwb2JJUVVMSUFWQkJIWWhCeUFJSUFWQkQzRWlBbXNoQ0NBRUlBSjBJUVFMSUE1QkFXc2lBd1JBSUJKQkEzUWhEMEVBSVFvRFFBSkFJQWNFUUFKQUlBaEJDa3NOQUNBQUlBa2dDR3RCSUdvaUNUWUNFQ0FBSUFsQkIzRWlBallDQ0VFQklBa2dEMHNOQmhvZ0FDQUFLQUlBSUFsQkEzWnFJZ1UyQWdRZ0VDQUpheUlNUVNCT0JFQWdCU2dBQUNJRVFSaDBJQVJCQ0hSQmdJRDhCM0Z5SUFSQkNIWkJnUDREY1NBRVFSaDJjbkloQkVFZ0lRZ2dBa1VOQVNBRUlBSjBJQVV0QUFSQkNDQUNhM1p5SVFRTUFRdEJJQ0VJSUF4QkFVZ0VRRUVBSVFRTUFRc2dCUzBBQUNBQ1FSaHlJZ3QwSVFRZ0FpQU1ha0VJYXlJR1FRRklEUUFEUUNBRkxRQUJJQXRCQ0dzaUMzUWdCSEloQkNBR1FRaEtJUUlnQlVFQmFpRUZJQVpCQ0dzaEJpQUNEUUFMQ3dKQUFuOENRQUpBQWtBQ1FBSkFBa0FDUUNBSFFRRnJEZ1lHQUFFQ0F3UUZDeUFFUVI1MlFlNFdhZ3dHQ3lBRVFSNTJRZklXYWd3RkN5QUVRUjEyUWZZV2Fnd0VDeUFFUVIxMlFmNFdhZ3dEQ3lBRVFSMTJRWVlYYWd3Q0N3Si9RZk1BSUFSQkdYWkI4QUJ4YXlBRVFZQ0FnSUFDVHcwQUdrSDBBQ0FFUWYvLy8vOEFTdzBBR2tHRkFTQUVRZi8vL3o5TERRQWFRWllCSUFSQi8vLy9IMHNOQUJwQnB3RWdCRUgvLy84UFN3MEFHa0c0QVNBRVFmLy8vd2RMRFFBYVFja0JJQVJCLy8vL0Ewc05BQnBCMmdFZ0JFSC8vLzhCU3cwQUdrRUFRZXNCSUFSQmdJQ0FBVWtiQ3lJRlFRUjJJQWRORFFKQkFRd0lDeUFFUVI5MlFld1dhZ3N0QUFBaEJRdEJBU0FGUlEwRkdpQU5JQXBCQW5ScUlBVkJCSFlpQWtFQmFqWUNBQ0FISUFKcklRY2dDQ0FGUVE5eElnSnJJUWdnQkNBQ2RDRUVEQUVMSUEwZ0NrRUNkR3BCQVRZQ0FFRUFJUWNMSUFwQkFXb2lDaUFEUncwQUN5QUJJQWRCQW5ScUlBMUJRR3NnQTBFQ2RHb29BZ0EyQWdBZ0RrRUNheUVDUVFFZ0IzUWhCU0FEUVFGeEJIOGdBU0FOSUFKQkFuUWlBMm9vQWdBZ0Iyb2lCMEVDZEdvZ0RVRkFheUFEYWlnQ0FEWUNBRUVCSUFkMElBVnlJUVVnRGtFRGF3VWdBZ3NoQkNBQ1JRMEJBMEFnQVNBTklBUkJBblFpQTJvb0FnQWdCMm9pQWtFQ2RHb2dEVUZBYXlJTUlBTnFLQUlBTmdJQUlBRWdEU0FFUVFGcklnTkJBblFpQ21vb0FnQWdBbW9pQjBFQ2RHb2dDaUFNYWlnQ0FEWUNBRUVCSUFKMElBVnlRUUVnQjNSeUlRVWdCRUVDYXlFRUlBTU5BQXNNQVFzZ0FTQUhRUUowYWlBTktBSkFOZ0lBUVFFZ0IzUWhCUXNnQUNBQUtBSVFJQWhyUVNCcUlnRTJBaEFnQUNBQlFRZHhOZ0lJUVFFZ0FTQUFLQUlNUVFOMFN3MEFHaUFBSUFBb0FnQWdBVUVEZG1vMkFnUWdCVUVRZENBT1FRUjBjZ3NoQkNBTlFZQUJhaVFBSUFRTGd3UUJBMzhnQWtHQUJFOEVRQ0FBSUFFZ0FoQUJHaUFBRHdzZ0FDQUNhaUVEQWtBZ0FDQUJjMEVEY1VVRVFBSkFJQUJCQTNGRkJFQWdBQ0VDREFFTElBSkJBVWdFUUNBQUlRSU1BUXNnQUNFQ0EwQWdBaUFCTFFBQU9nQUFJQUZCQVdvaEFTQUNRUUZxSWdKQkEzRkZEUUVnQWlBRFNRMEFDd3NDUUNBRFFYeHhJZ1JCd0FCSkRRQWdBaUFFUVVCcUlnVkxEUUFEUUNBQ0lBRW9BZ0EyQWdBZ0FpQUJLQUlFTmdJRUlBSWdBU2dDQ0RZQ0NDQUNJQUVvQWd3MkFnd2dBaUFCS0FJUU5nSVFJQUlnQVNnQ0ZEWUNGQ0FDSUFFb0FoZzJBaGdnQWlBQktBSWNOZ0ljSUFJZ0FTZ0NJRFlDSUNBQ0lBRW9BaVEyQWlRZ0FpQUJLQUlvTmdJb0lBSWdBU2dDTERZQ0xDQUNJQUVvQWpBMkFqQWdBaUFCS0FJME5nSTBJQUlnQVNnQ09EWUNPQ0FDSUFFb0FqdzJBandnQVVGQWF5RUJJQUpCUUdzaUFpQUZUUTBBQ3dzZ0FpQUVUdzBCQTBBZ0FpQUJLQUlBTmdJQUlBRkJCR29oQVNBQ1FRUnFJZ0lnQkVrTkFBc01BUXNnQTBFRVNRUkFJQUFoQWd3QkN5QUFJQU5CQkdzaUJFc0VRQ0FBSVFJTUFRc2dBQ0VDQTBBZ0FpQUJMUUFBT2dBQUlBSWdBUzBBQVRvQUFTQUNJQUV0QUFJNkFBSWdBaUFCTFFBRE9nQURJQUZCQkdvaEFTQUNRUVJxSWdJZ0JFME5BQXNMSUFJZ0Ewa0VRQU5BSUFJZ0FTMEFBRG9BQUNBQlFRRnFJUUVnQWtFQmFpSUNJQU5IRFFBTEN5QUFDNEF2QVF0L0l3QkJFR3NpQ3lRQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FBUWZRQlRRUkFRWWpBQUNnQ0FDSUhRUkFnQUVFTGFrRjRjU0FBUVF0Skd5SUdRUU4ySWdKMklnRkJBM0VFUUNBQlFYOXpRUUZ4SUFKcUlnUkJBM1FpQVVHNHdBQnFLQUlBSWdOQkNHb2hBQUpBSUFNb0FnZ2lBaUFCUWJEQUFHb2lBVVlFUUVHSXdBQWdCMEYrSUFSM2NUWUNBQXdCQ3lBQ0lBRTJBZ3dnQVNBQ05nSUlDeUFESUFSQkEzUWlBVUVEY2pZQ0JDQUJJQU5xSWdFZ0FTZ0NCRUVCY2pZQ0JBd01DeUFHUVpEQUFDZ0NBQ0lLVFEwQklBRUVRQUpBUVFJZ0FuUWlBRUVBSUFCcmNpQUJJQUowY1NJQVFRQWdBR3R4UVFGcklnQWdBRUVNZGtFUWNTSUNkaUlCUVFWMlFRaHhJZ0FnQW5JZ0FTQUFkaUlCUVFKMlFRUnhJZ0J5SUFFZ0FIWWlBVUVCZGtFQ2NTSUFjaUFCSUFCMklnRkJBWFpCQVhFaUFISWdBU0FBZG1vaUJFRURkQ0lBUWJqQUFHb29BZ0FpQXlnQ0NDSUJJQUJCc01BQWFpSUFSZ1JBUVlqQUFDQUhRWDRnQkhkeElnYzJBZ0FNQVFzZ0FTQUFOZ0lNSUFBZ0FUWUNDQXNnQTBFSWFpRUFJQU1nQmtFRGNqWUNCQ0FESUFacUlnSWdCRUVEZENJQklBWnJJZ1JCQVhJMkFnUWdBU0FEYWlBRU5nSUFJQW9FUUNBS1FRTjJJZ0ZCQTNSQnNNQUFhaUVGUVp6QUFDZ0NBQ0VEQW44Z0IwRUJJQUYwSWdGeFJRUkFRWWpBQUNBQklBZHlOZ0lBSUFVTUFRc2dCU2dDQ0FzaEFTQUZJQU0yQWdnZ0FTQUROZ0lNSUFNZ0JUWUNEQ0FESUFFMkFnZ0xRWnpBQUNBQ05nSUFRWkRBQUNBRU5nSUFEQXdMUVl6QUFDZ0NBQ0lKUlEwQklBbEJBQ0FKYTNGQkFXc2lBQ0FBUVF4MlFSQnhJZ0oySWdGQkJYWkJDSEVpQUNBQ2NpQUJJQUIySWdGQkFuWkJCSEVpQUhJZ0FTQUFkaUlCUVFGMlFRSnhJZ0J5SUFFZ0FIWWlBVUVCZGtFQmNTSUFjaUFCSUFCMmFrRUNkRUc0d2dCcUtBSUFJZ0VvQWdSQmVIRWdCbXNoQkNBQklRSURRQUpBSUFJb0FoQWlBRVVFUUNBQ0tBSVVJZ0JGRFFFTElBQW9BZ1JCZUhFZ0Jtc2lBaUFFSUFJZ0JFa2lBaHNoQkNBQUlBRWdBaHNoQVNBQUlRSU1BUXNMSUFFb0FoZ2hDQ0FCSUFFb0Fnd2lBMGNFUUNBQktBSUlJZ0JCbU1BQUtBSUFTUm9nQUNBRE5nSU1JQU1nQURZQ0NBd0xDeUFCUVJScUlnSW9BZ0FpQUVVRVFDQUJLQUlRSWdCRkRRTWdBVUVRYWlFQ0N3TkFJQUloQlNBQUlnTkJGR29pQWlnQ0FDSUFEUUFnQTBFUWFpRUNJQU1vQWhBaUFBMEFDeUFGUVFBMkFnQU1DZ3RCZnlFR0lBQkJ2MzlMRFFBZ0FFRUxhaUlBUVhoeElRWkJqTUFBS0FJQUlnbEZEUUJCQUNBR2F5RUVBa0FDUUFKQUFuOUJBQ0FHUVlBQ1NRMEFHa0VmSUFaQi8vLy9CMHNOQUJvZ0FFRUlkaUlBSUFCQmdQNC9ha0VRZGtFSWNTSUNkQ0lBSUFCQmdPQWZha0VRZGtFRWNTSUJkQ0lBSUFCQmdJQVBha0VRZGtFQ2NTSUFkRUVQZGlBQklBSnlJQUJ5YXlJQVFRRjBJQVlnQUVFVmFuWkJBWEZ5UVJ4cUN5SUhRUUowUWJqQ0FHb29BZ0FpQWtVRVFFRUFJUUFNQVF0QkFDRUFJQVpCQUVFWklBZEJBWFpySUFkQkgwWWJkQ0VCQTBBQ1FDQUNLQUlFUVhoeElBWnJJZ1VnQkU4TkFDQUNJUU1nQlNJRURRQkJBQ0VFSUFJaEFBd0RDeUFBSUFJb0FoUWlCU0FGSUFJZ0FVRWRka0VFY1dvb0FoQWlBa1liSUFBZ0JSc2hBQ0FCUVFGMElRRWdBZzBBQ3dzZ0FDQURja1VFUUVFQUlRTkJBaUFIZENJQVFRQWdBR3R5SUFseElnQkZEUU1nQUVFQUlBQnJjVUVCYXlJQUlBQkJESFpCRUhFaUFuWWlBVUVGZGtFSWNTSUFJQUp5SUFFZ0FIWWlBVUVDZGtFRWNTSUFjaUFCSUFCMklnRkJBWFpCQW5FaUFISWdBU0FBZGlJQlFRRjJRUUZ4SWdCeUlBRWdBSFpxUVFKMFFiakNBR29vQWdBaEFBc2dBRVVOQVFzRFFDQUFLQUlFUVhoeElBWnJJZ0VnQkVraEFpQUJJQVFnQWhzaEJDQUFJQU1nQWhzaEF5QUFLQUlRSWdFRWZ5QUJCU0FBS0FJVUN5SUFEUUFMQ3lBRFJRMEFJQVJCa01BQUtBSUFJQVpyVHcwQUlBTW9BaGdoQnlBRElBTW9BZ3dpQVVjRVFDQURLQUlJSWdCQm1NQUFLQUlBU1JvZ0FDQUJOZ0lNSUFFZ0FEWUNDQXdKQ3lBRFFSUnFJZ0lvQWdBaUFFVUVRQ0FES0FJUUlnQkZEUU1nQTBFUWFpRUNDd05BSUFJaEJTQUFJZ0ZCRkdvaUFpZ0NBQ0lBRFFBZ0FVRVFhaUVDSUFFb0FoQWlBQTBBQ3lBRlFRQTJBZ0FNQ0FzZ0JrR1F3QUFvQWdBaUFrMEVRRUdjd0FBb0FnQWhCQUpBSUFJZ0Jtc2lBVUVRVHdSQVFaREFBQ0FCTmdJQVFaekFBQ0FFSUFacUlnQTJBZ0FnQUNBQlFRRnlOZ0lFSUFJZ0JHb2dBVFlDQUNBRUlBWkJBM0kyQWdRTUFRdEJuTUFBUVFBMkFnQkJrTUFBUVFBMkFnQWdCQ0FDUVFOeU5nSUVJQUlnQkdvaUFDQUFLQUlFUVFGeU5nSUVDeUFFUVFocUlRQU1DZ3NnQmtHVXdBQW9BZ0FpQ0VrRVFFR1V3QUFnQ0NBR2F5SUJOZ0lBUWFEQUFFR2d3QUFvQWdBaUFpQUdhaUlBTmdJQUlBQWdBVUVCY2pZQ0JDQUNJQVpCQTNJMkFnUWdBa0VJYWlFQURBb0xRUUFoQUNBR1FTOXFJZ2tDZjBIZ3d3QW9BZ0FFUUVIb3d3QW9BZ0FNQVF0QjdNTUFRbjgzQWdCQjVNTUFRb0NnZ0lDQWdBUTNBZ0JCNE1NQUlBdEJER3BCY0hGQjJLclZxZ1Z6TmdJQVFmVERBRUVBTmdJQVFjVERBRUVBTmdJQVFZQWdDeUlCYWlJSFFRQWdBV3NpQlhFaUFpQUdUUTBKUWNEREFDZ0NBQ0lEQkVCQnVNTUFLQUlBSWdRZ0Ftb2lBU0FFVFEwS0lBRWdBMHNOQ2d0QnhNTUFMUUFBUVFSeERRUUNRQUpBUWFEQUFDZ0NBQ0lFQkVCQnlNTUFJUUFEUUNBRUlBQW9BZ0FpQVU4RVFDQUJJQUFvQWdScUlBUkxEUU1MSUFBb0FnZ2lBQTBBQ3d0QkFCQU9JZ0ZCZjBZTkJTQUNJUWRCNU1NQUtBSUFJZ1JCQVdzaUFDQUJjUVJBSUFJZ0FXc2dBQ0FCYWtFQUlBUnJjV29oQndzZ0JpQUhUdzBGSUFkQi92Ly8vd2RMRFFWQndNTUFLQUlBSWdNRVFFRzR3d0FvQWdBaUJDQUhhaUlBSUFSTkRRWWdBQ0FEU3cwR0N5QUhFQTRpQUNBQlJ3MEJEQWNMSUFjZ0NHc2dCWEVpQjBIKy8vLy9CMHNOQkNBSEVBNGlBU0FBS0FJQUlBQW9BZ1JxUmcwRElBRWhBQXNDUUNBQVFYOUdEUUFnQmtFd2FpQUhUUTBBUWVqREFDZ0NBQ0lCSUFrZ0IydHFRUUFnQVd0eElnRkIvdi8vL3dkTEJFQWdBQ0VCREFjTElBRVFEa0YvUndSQUlBRWdCMm9oQnlBQUlRRU1Cd3RCQUNBSGF4QU9HZ3dFQ3lBQUlnRkJmMGNOQlF3REMwRUFJUU1NQnd0QkFDRUJEQVVMSUFGQmYwY05BZ3RCeE1NQVFjVERBQ2dDQUVFRWNqWUNBQXNnQWtIKy8vLy9CMHNOQVVHQXdBQW9BZ0FpQVNBQ1FRTnFRWHh4SWdKcUlRQUNRQUpBQW44Q1FDQUNSUTBBSUFBZ0FVc05BQ0FCREFFTElBQS9BRUVRZEUwTkFTQUFFQUFOQVVHQXdBQW9BZ0FMSVFCQmhNQUFRVEEyQWdCQmZ5RUJEQUVMUVlEQUFDQUFOZ0lBQ3lBQVB3QkJFSFJMQkVBZ0FCQUFSUTBDQzBHQXdBQWdBRFlDQUNBQlFYOUdEUUVnQUVGL1JnMEJJQUFnQVUwTkFTQUFJQUZySWdjZ0JrRW9hazBOQVF0QnVNTUFRYmpEQUNnQ0FDQUhhaUlBTmdJQVFiekRBQ2dDQUNBQVNRUkFRYnpEQUNBQU5nSUFDd0pBQWtBQ1FFR2d3QUFvQWdBaUJRUkFRY2pEQUNFQUEwQWdBU0FBS0FJQUlnUWdBQ2dDQkNJQ2FrWU5BaUFBS0FJSUlnQU5BQXNNQWd0Qm1NQUFLQUlBSWdCQkFDQUFJQUZORzBVRVFFR1l3QUFnQVRZQ0FBdEJBQ0VBUWN6REFDQUhOZ0lBUWNqREFDQUJOZ0lBUWFqQUFFRi9OZ0lBUWF6QUFFSGd3d0FvQWdBMkFnQkIxTU1BUVFBMkFnQURRQ0FBUVFOMElnUkJ1TUFBYWlBRVFiREFBR29pQWpZQ0FDQUVRYnpBQUdvZ0FqWUNBQ0FBUVFGcUlnQkJJRWNOQUF0QmxNQUFJQWRCS0dzaUJFRjRJQUZyUVFkeFFRQWdBVUVJYWtFSGNSc2lBR3NpQWpZQ0FFR2d3QUFnQUNBQmFpSUFOZ0lBSUFBZ0FrRUJjallDQkNBQklBUnFRU2cyQWdSQnBNQUFRZkREQUNnQ0FEWUNBQXdDQ3lBQUxRQU1RUWh4RFFBZ0JDQUZTdzBBSUFFZ0JVME5BQ0FBSUFJZ0IybzJBZ1JCb01BQUlBVkJlQ0FGYTBFSGNVRUFJQVZCQ0dwQkIzRWJJZ0JxSWdJMkFnQkJsTUFBUVpUQUFDZ0NBQ0FIYWlJQklBQnJJZ0EyQWdBZ0FpQUFRUUZ5TmdJRUlBRWdCV3BCS0RZQ0JFR2t3QUJCOE1NQUtBSUFOZ0lBREFFTFFaakFBQ2dDQUNBQlN3UkFRWmpBQUNBQk5nSUFDeUFCSUFkcUlRUkJ5TU1BSVFJQ1FBTkFJQVFnQWlnQ0FFY0VRRUhJd3dBaEFDQUNLQUlJSWdJTkFRd0NDd3RCeU1NQUlRQWdBaTBBREVFSWNRMEFJQUlnQVRZQ0FDQUNJQUlvQWdRZ0IybzJBZ1FnQVVGNElBRnJRUWR4UVFBZ0FVRUlha0VIY1J0cUlna2dCa0VEY2pZQ0JDQUVRWGdnQkd0QkIzRkJBQ0FFUVFocVFRZHhHMm9pQXlBR0lBbHFJZ2hySVFJQ1FDQURJQVZHQkVCQm9NQUFJQWcyQWdCQmxNQUFRWlRBQUNnQ0FDQUNhaUlBTmdJQUlBZ2dBRUVCY2pZQ0JBd0JDeUFEUVp6QUFDZ0NBRVlFUUVHY3dBQWdDRFlDQUVHUXdBQkJrTUFBS0FJQUlBSnFJZ0EyQWdBZ0NDQUFRUUZ5TmdJRUlBQWdDR29nQURZQ0FBd0JDeUFES0FJRUlnQkJBM0ZCQVVZRVFDQUFRWGh4SVFjQ1FDQUFRZjhCVFFSQUlBTW9BZ2dpQkNBQVFRTjJJZ0JCQTNSQnNNQUFha1lhSUFRZ0F5Z0NEQ0lCUmdSQVFZakFBRUdJd0FBb0FnQkJmaUFBZDNFMkFnQU1BZ3NnQkNBQk5nSU1JQUVnQkRZQ0NBd0JDeUFES0FJWUlRWUNRQ0FESUFNb0Fnd2lBVWNFUUNBREtBSUlJZ0FnQVRZQ0RDQUJJQUEyQWdnTUFRc0NRQ0FEUVJScUlnQW9BZ0FpQkEwQUlBTkJFR29pQUNnQ0FDSUVEUUJCQUNFQkRBRUxBMEFnQUNFRklBUWlBVUVVYWlJQUtBSUFJZ1FOQUNBQlFSQnFJUUFnQVNnQ0VDSUVEUUFMSUFWQkFEWUNBQXNnQmtVTkFBSkFJQU1nQXlnQ0hDSUVRUUowUWJqQ0FHb2lBQ2dDQUVZRVFDQUFJQUUyQWdBZ0FRMEJRWXpBQUVHTXdBQW9BZ0JCZmlBRWQzRTJBZ0FNQWdzZ0JrRVFRUlFnQmlnQ0VDQURSaHRxSUFFMkFnQWdBVVVOQVFzZ0FTQUdOZ0lZSUFNb0FoQWlBQVJBSUFFZ0FEWUNFQ0FBSUFFMkFoZ0xJQU1vQWhRaUFFVU5BQ0FCSUFBMkFoUWdBQ0FCTmdJWUN5QURJQWRxSVFNZ0FpQUhhaUVDQ3lBRElBTW9BZ1JCZm5FMkFnUWdDQ0FDUVFGeU5nSUVJQUlnQ0dvZ0FqWUNBQ0FDUWY4QlRRUkFJQUpCQTNZaUFFRURkRUd3d0FCcUlRSUNmMEdJd0FBb0FnQWlBVUVCSUFCMElnQnhSUVJBUVlqQUFDQUFJQUZ5TmdJQUlBSU1BUXNnQWlnQ0NBc2hBQ0FDSUFnMkFnZ2dBQ0FJTmdJTUlBZ2dBallDRENBSUlBQTJBZ2dNQVF0Qkh5RUFJQUpCLy8vL0IwMEVRQ0FDUVFoMklnQWdBRUdBL2o5cVFSQjJRUWh4SWdSMElnQWdBRUdBNEI5cVFSQjJRUVJ4SWdGMElnQWdBRUdBZ0E5cVFSQjJRUUp4SWdCMFFROTJJQUVnQkhJZ0FISnJJZ0JCQVhRZ0FpQUFRUlZxZGtFQmNYSkJIR29oQUFzZ0NDQUFOZ0ljSUFoQ0FEY0NFQ0FBUVFKMFFiakNBR29oQXdKQUFrQkJqTUFBS0FJQUlnUkJBU0FBZENJQmNVVUVRRUdNd0FBZ0FTQUVjallDQUNBRElBZzJBZ0FnQ0NBRE5nSVlEQUVMSUFKQkFFRVpJQUJCQVhacklBQkJIMFliZENFQUlBTW9BZ0FoQVFOQUlBRWlCQ2dDQkVGNGNTQUNSZzBDSUFCQkhYWWhBU0FBUVFGMElRQWdCQ0FCUVFSeGFpSURLQUlRSWdFTkFBc2dBeUFJTmdJUUlBZ2dCRFlDR0FzZ0NDQUlOZ0lNSUFnZ0NEWUNDQXdCQ3lBRUtBSUlJZ0FnQ0RZQ0RDQUVJQWcyQWdnZ0NFRUFOZ0lZSUFnZ0JEWUNEQ0FJSUFBMkFnZ0xJQWxCQ0dvaEFBd0ZDd05BQWtBZ0JTQUFLQUlBSWdKUEJFQWdBaUFBS0FJRWFpSURJQVZMRFFFTElBQW9BZ2doQUF3QkN3dEJsTUFBSUFkQktHc2lCRUY0SUFGclFRZHhRUUFnQVVFSWFrRUhjUnNpQUdzaUFqWUNBRUdnd0FBZ0FDQUJhaUlBTmdJQUlBQWdBa0VCY2pZQ0JDQUJJQVJxUVNnMkFnUkJwTUFBUWZEREFDZ0NBRFlDQUNBRklBTkJKeUFEYTBFSGNVRUFJQU5CSjJ0QkIzRWJha0V2YXlJQUlBQWdCVUVRYWtrYklnSkJHellDQkNBQ1FkRERBQ2tDQURjQ0VDQUNRY2pEQUNrQ0FEY0NDRUhRd3dBZ0FrRUlhallDQUVITXd3QWdCellDQUVISXd3QWdBVFlDQUVIVXd3QkJBRFlDQUNBQ1FSaHFJUUFEUUNBQVFRYzJBZ1FnQUVFSWFpRUJJQUJCQkdvaEFDQUJJQU5KRFFBTElBSWdCVVlOQUNBQ0lBSW9BZ1JCZm5FMkFnUWdCU0FDSUFWcklnTkJBWEkyQWdRZ0FpQUROZ0lBSUFOQi93Rk5CRUFnQTBFRGRpSUFRUU4wUWJEQUFHb2hBZ0ovUVlqQUFDZ0NBQ0lCUVFFZ0FIUWlBSEZGQkVCQmlNQUFJQUFnQVhJMkFnQWdBZ3dCQ3lBQ0tBSUlDeUVBSUFJZ0JUWUNDQ0FBSUFVMkFnd2dCU0FDTmdJTUlBVWdBRFlDQ0F3QkMwRWZJUUFnQlVJQU53SVFJQU5CLy8vL0IwMEVRQ0FEUVFoMklnQWdBRUdBL2o5cVFSQjJRUWh4SWdKMElnQWdBRUdBNEI5cVFSQjJRUVJ4SWdGMElnQWdBRUdBZ0E5cVFSQjJRUUp4SWdCMFFROTJJQUVnQW5JZ0FISnJJZ0JCQVhRZ0F5QUFRUlZxZGtFQmNYSkJIR29oQUFzZ0JTQUFOZ0ljSUFCQkFuUkJ1TUlBYWlFRUFrQUNRRUdNd0FBb0FnQWlBa0VCSUFCMElnRnhSUVJBUVl6QUFDQUJJQUp5TmdJQUlBUWdCVFlDQUNBRklBUTJBaGdNQVFzZ0EwRUFRUmtnQUVFQmRtc2dBRUVmUmh0MElRQWdCQ2dDQUNFQkEwQWdBU0lDS0FJRVFYaHhJQU5HRFFJZ0FFRWRkaUVCSUFCQkFYUWhBQ0FDSUFGQkJIRnFJZ1FvQWhBaUFRMEFDeUFFSUFVMkFoQWdCU0FDTmdJWUN5QUZJQVUyQWd3Z0JTQUZOZ0lJREFFTElBSW9BZ2dpQUNBRk5nSU1JQUlnQlRZQ0NDQUZRUUEyQWhnZ0JTQUNOZ0lNSUFVZ0FEWUNDQXRCbE1BQUtBSUFJZ0FnQmswTkFFR1V3QUFnQUNBR2F5SUJOZ0lBUWFEQUFFR2d3QUFvQWdBaUFpQUdhaUlBTmdJQUlBQWdBVUVCY2pZQ0JDQUNJQVpCQTNJMkFnUWdBa0VJYWlFQURBTUxRUUFoQUVHRXdBQkJNRFlDQUF3Q0N3SkFJQWRGRFFBQ1FDQURLQUljSWdKQkFuUkJ1TUlBYWlJQUtBSUFJQU5HQkVBZ0FDQUJOZ0lBSUFFTkFVR013QUFnQ1VGK0lBSjNjU0lKTmdJQURBSUxJQWRCRUVFVUlBY29BaEFnQTBZYmFpQUJOZ0lBSUFGRkRRRUxJQUVnQnpZQ0dDQURLQUlRSWdBRVFDQUJJQUEyQWhBZ0FDQUJOZ0lZQ3lBREtBSVVJZ0JGRFFBZ0FTQUFOZ0lVSUFBZ0FUWUNHQXNDUUNBRVFROU5CRUFnQXlBRUlBWnFJZ0JCQTNJMkFnUWdBQ0FEYWlJQUlBQW9BZ1JCQVhJMkFnUU1BUXNnQXlBR1FRTnlOZ0lFSUFNZ0Jtb2lCU0FFUVFGeU5nSUVJQVFnQldvZ0JEWUNBQ0FFUWY4QlRRUkFJQVJCQTNZaUFFRURkRUd3d0FCcUlRSUNmMEdJd0FBb0FnQWlBVUVCSUFCMElnQnhSUVJBUVlqQUFDQUFJQUZ5TmdJQUlBSU1BUXNnQWlnQ0NBc2hBQ0FDSUFVMkFnZ2dBQ0FGTmdJTUlBVWdBallDRENBRklBQTJBZ2dNQVF0Qkh5RUFJQVJCLy8vL0IwMEVRQ0FFUVFoMklnQWdBRUdBL2o5cVFSQjJRUWh4SWdKMElnQWdBRUdBNEI5cVFSQjJRUVJ4SWdGMElnQWdBRUdBZ0E5cVFSQjJRUUp4SWdCMFFROTJJQUVnQW5JZ0FISnJJZ0JCQVhRZ0JDQUFRUlZxZGtFQmNYSkJIR29oQUFzZ0JTQUFOZ0ljSUFWQ0FEY0NFQ0FBUVFKMFFiakNBR29oQVFKQUFrQWdDVUVCSUFCMElnSnhSUVJBUVl6QUFDQUNJQWx5TmdJQUlBRWdCVFlDQUF3QkN5QUVRUUJCR1NBQVFRRjJheUFBUVI5R0czUWhBQ0FCS0FJQUlRWURRQ0FHSWdFb0FnUkJlSEVnQkVZTkFpQUFRUjEySVFJZ0FFRUJkQ0VBSUFFZ0FrRUVjV29pQWlnQ0VDSUdEUUFMSUFJZ0JUWUNFQXNnQlNBQk5nSVlJQVVnQlRZQ0RDQUZJQVUyQWdnTUFRc2dBU2dDQ0NJQUlBVTJBZ3dnQVNBRk5nSUlJQVZCQURZQ0dDQUZJQUUyQWd3Z0JTQUFOZ0lJQ3lBRFFRaHFJUUFNQVFzQ1FDQUlSUTBBQWtBZ0FTZ0NIQ0lDUVFKMFFiakNBR29pQUNnQ0FDQUJSZ1JBSUFBZ0F6WUNBQ0FERFFGQmpNQUFJQWxCZmlBQ2QzRTJBZ0FNQWdzZ0NFRVFRUlFnQ0NnQ0VDQUJSaHRxSUFNMkFnQWdBMFVOQVFzZ0F5QUlOZ0lZSUFFb0FoQWlBQVJBSUFNZ0FEWUNFQ0FBSUFNMkFoZ0xJQUVvQWhRaUFFVU5BQ0FESUFBMkFoUWdBQ0FETmdJWUN3SkFJQVJCRDAwRVFDQUJJQVFnQm1vaUFFRURjallDQkNBQUlBRnFJZ0FnQUNnQ0JFRUJjallDQkF3QkN5QUJJQVpCQTNJMkFnUWdBU0FHYWlJQ0lBUkJBWEkyQWdRZ0FpQUVhaUFFTmdJQUlBb0VRQ0FLUVFOMklnQkJBM1JCc01BQWFpRUZRWnpBQUNnQ0FDRURBbjlCQVNBQWRDSUFJQWR4UlFSQVFZakFBQ0FBSUFkeU5nSUFJQVVNQVFzZ0JTZ0NDQXNoQUNBRklBTTJBZ2dnQUNBRE5nSU1JQU1nQlRZQ0RDQURJQUEyQWdnTFFaekFBQ0FDTmdJQVFaREFBQ0FFTmdJQUN5QUJRUWhxSVFBTElBdEJFR29rQUNBQUMrNFdBUkIvSUFBZ0JFRUFJQVpySUFJZ0FpQUdha0VBU0JzaUFpQUNJQVJLR3lJT1FRQWdEa0VBU2hzaUZHb2dCVUVBSUFkcklBTWdBeUFIYWtFQVNCc2lBQ0FBSUFWS0d5SURJQVJzUVFBZ0EwRUFTaHRxSVFrZ0IwRUFJQU5ySUFOQkgzVnhJZ29nQXlBSGFpSVZJQVZySWhKQkFDQUZJQlZJR3lJWGFtc2hEeUFHUVFBZ0Rtc2dEa0VmZFhFaUN5QUdJQTVxSWhNZ0JHdEJBQ0FFSUJOSUlnQWJJZzFxYXlFTUFrQWdEa0VBU0NBQWNpSVlSUVJBQWtBZ0NrVU5BQ0FLUVFOeElnSUVRQU5BSUFwQkFXc2hDaUFCSUFrZ0RCQUhJQWhxSVFFZ0FrRUJheUlDRFFBTEN5QURRWDl6SUFOQkFDQURRUUJLRzJwQkEwa05BQU5BSUFFZ0NTQU1FQWNnQ0dvZ0NTQU1FQWNnQ0dvZ0NTQU1FQWNnQ0dvZ0NTQU1FQWNnQ0dvaEFTQUtRUVJySWdvTkFBc0xJQTlGRFFFZ0QwRURjU0lDQkVBRFFDQVBRUUZySVE4Z0FTQUpJQXdRQnlBSWFpRUJJQVFnQ1dvaENTQUNRUUZySWdJTkFBc0xJQVVnQjJvZ0Eyb2dCU0FWSUFVZ0ZVb2JRWDl6YWlBRFFRQWdBMEVBU2h0clFRTkpEUUVEUUNBQklBa2dEQkFISUFocUlBUWdDV29pQUNBTUVBY2dDR29nQUNBRWFpSUFJQXdRQnlBSWFpQUFJQVJxSWdBZ0RCQUhJQWhxSVFFZ0FDQUVhaUVKSUE5QkJHc2lEdzBBQ3d3QkN3SkFJQXBGRFFBQ1FDQU1SUVJBSUFsQkFXc2hBaUFMUlFSQUlBMUZEUUlnQTBGL2N5QURRUUFnQTBFQVNodHFJUUFnQ2tFRGNTSURCRUFEUUNBS1FRRnJJUW9nQVNBQ0xRQUFJQTBRQXlBSWFpRUJJQU5CQVdzaUF3MEFDd3NnQUVFRFNRMERJQXBCQkdzaUFFRUVjVVVFUUNBQUlRb2dBU0FDTFFBQUlBMFFBeUFJYWlBQ0xRQUFJQTBRQXlBSWFpQUNMUUFBSUEwUUF5QUlhaUFDTFFBQUlBMFFBeUFJYWlFQkN5QUFRUVJKRFFNRFFDQUJJQUl0QUFBZ0RSQURJQWhxSUFJdEFBQWdEUkFESUFocUlBSXRBQUFnRFJBRElBaHFJQUl0QUFBZ0RSQURJQWhxSUFJdEFBQWdEUkFESUFocUlBSXRBQUFnRFJBRElBaHFJQUl0QUFBZ0RSQURJQWhxSUFJdEFBQWdEUkFESUFocUlRRWdDa0VJYXlJS0RRQUxEQU1MSUFOQmYzTWdBMEVBSUFOQkFFb2JhaUVBSUFwQkEzRWhBeUFOQkVBZ0F3UkFBMEFnQVNBSkxRQUFJQXNRQXlJQklBdHFJQUl0QUFBZ0RSQURHaUFLUVFGcklRb2dBU0FJYWlFQklBTkJBV3NpQXcwQUN3c2dBRUVEU1EwREEwQWdBU0FKTFFBQUlBc1FBeUlBSUF0cUlBSXRBQUFnRFJBREdpQUFJQWhxSUFrdEFBQWdDeEFESWdBZ0Myb2dBaTBBQUNBTkVBTWFJQUFnQ0dvZ0NTMEFBQ0FMRUFNaUFDQUxhaUFDTFFBQUlBMFFBeG9nQUNBSWFpQUpMUUFBSUFzUUF5SUFJQXRxSUFJdEFBQWdEUkFER2lBQUlBaHFJUUVnQ2tFRWF5SUtEUUFMREFNTElBTUVRQU5BSUFwQkFXc2hDaUFCSUFrdEFBQWdDeEFESUFocUlRRWdBMEVCYXlJRERRQUxDeUFBUVFOSkRRSWdDa0VFYXlJQVFRUnhSUVJBSUFBaENpQUJJQWt0QUFBZ0N4QURJQWhxSUFrdEFBQWdDeEFESUFocUlBa3RBQUFnQ3hBRElBaHFJQWt0QUFBZ0N4QURJQWhxSVFFTElBQkJCRWtOQWdOQUlBRWdDUzBBQUNBTEVBTWdDR29nQ1MwQUFDQUxFQU1nQ0dvZ0NTMEFBQ0FMRUFNZ0NHb2dDUzBBQUNBTEVBTWdDR29nQ1MwQUFDQUxFQU1nQ0dvZ0NTMEFBQ0FMRUFNZ0NHb2dDUzBBQUNBTEVBTWdDR29nQ1MwQUFDQUxFQU1nQ0dvaEFTQUtRUWhySWdvTkFBc01BZ3NnQkNBR2FpQU9haUFFSUJNZ0JDQVRTaHRCZjNOcUlRQWdDMFVFUUNBTVFRZHhJUkFnQUNBVWF5RUFJQTFGQkVBZ0FFRUhTU0VSQTBBZ0RDRUhJQUVoQWlBSklRTWdFQ0lBQkVBRFFDQUNJQU10QUFBNkFBQWdCMEVCYXlFSElBSkJBV29oQWlBRFFRRnFJUU1nQUVFQmF5SUFEUUFMQ3lBUlJRUkFBMEFnQWlBRExRQUFPZ0FBSUFJZ0F5MEFBVG9BQVNBQ0lBTXRBQUk2QUFJZ0FpQURMUUFET2dBRElBSWdBeTBBQkRvQUJDQUNJQU10QUFVNkFBVWdBaUFETFFBR09nQUdJQUlnQXkwQUJ6b0FCeUFDUVFocUlRSWdBMEVJYWlFRElBZEJDR3NpQncwQUN3c2dBU0FJYWlFQklBcEJBV3NpQ2cwQUN3d0RDeUFBUVFkSklSWURRQ0FNSVFjZ0FTRUNJQWtoQUNBUUlSRWdFQVJBQTBBZ0FpQUFJZ010QUFBNkFBQWdCMEVCYXlFSElBSkJBV29oQWlBRFFRRnFJUUFnRVVFQmF5SVJEUUFMQ3lBV1JRUkFBMEFnQWlBQUlnTXRBQUE2QUFBZ0FpQURMUUFCT2dBQklBSWdBeTBBQWpvQUFpQUNJQU10QUFNNkFBTWdBaUFETFFBRU9nQUVJQUlnQXkwQUJUb0FCU0FDSUFNdEFBWTZBQVlnQWlBRExRQUhPZ0FISUFKQkNHb2hBaUFEUVFocUlRQWdCMEVJYXlJSERRQUxJQU5CQjJvaEF3c2dBaUFETFFBQUlBMFFBeG9nQVNBSWFpRUJJQXBCQVdzaUNnMEFDd3dDQ3lBTkJFQWdERUVIY1NFUUlBQWdEa0VBSUE1QkFFb2JhMEVIU1NFUkEwQWdBU0FKTFFBQUlBc1FBeUlXSUF0cUlRSWdEQ0VISUFraEFDQVFJZ0VFUUFOQUlBSWdBQ0lETFFBQU9nQUFJQWRCQVdzaEJ5QUNRUUZxSVFJZ0EwRUJhaUVBSUFGQkFXc2lBUTBBQ3dzZ0VVVUVRQU5BSUFJZ0FDSUJMUUFBT2dBQUlBSWdBUzBBQVRvQUFTQUNJQUV0QUFJNkFBSWdBaUFCTFFBRE9nQURJQUlnQVMwQUJEb0FCQ0FDSUFFdEFBVTZBQVVnQWlBQkxRQUdPZ0FHSUFJZ0FTMEFCem9BQnlBQ1FRaHFJUUlnQVVFSWFpRUFJQWRCQ0dzaUJ3MEFDeUFCUVFkcUlRTUxJQUlnQXkwQUFDQU5FQU1hSUFnZ0Ztb2hBU0FLUVFGcklnb05BQXNNQWdzZ0RFRUhjU0VRSUFBZ0ZHdEJCMGtoRVFOQUlBRWdDUzBBQUNBTEVBTWlBU0FMYWlFQ0lBd2hCeUFKSVFNZ0VDSUFCRUFEUUNBQ0lBTXRBQUE2QUFBZ0IwRUJheUVISUFKQkFXb2hBaUFEUVFGcUlRTWdBRUVCYXlJQURRQUxDeUFSUlFSQUEwQWdBaUFETFFBQU9nQUFJQUlnQXkwQUFUb0FBU0FDSUFNdEFBSTZBQUlnQWlBRExRQURPZ0FESUFJZ0F5MEFCRG9BQkNBQ0lBTXRBQVU2QUFVZ0FpQURMUUFHT2dBR0lBSWdBeTBBQnpvQUJ5QUNRUWhxSVFJZ0EwRUlhaUVESUFkQkNHc2lCdzBBQ3dzZ0FTQUlhaUVCSUFwQkFXc2lDZzBBQ3d3QkN5QUJJQWdnQ214cUlRRUxJQTlGRFFBZ0RFRUhjU0VLSUFRZ0Jtb2dEbW9nQkNBVElBUWdFMG9iUVg5emFpQVVhMEVIU1NFUUEwQWdBU0VDSUFzRVFDQUJJQWt0QUFBZ0N4QURJQXRxSVFJTEFrQWdERVVFUUNBSklRTU1BUXNnRENFSElBa2hBeUFLSWdBRVFBTkFJQUlnQXkwQUFEb0FBQ0FIUVFGcklRY2dBa0VCYWlFQ0lBTkJBV29oQXlBQVFRRnJJZ0FOQUFzTElCQU5BQU5BSUFJZ0F5MEFBRG9BQUNBQ0lBTXRBQUU2QUFFZ0FpQURMUUFDT2dBQ0lBSWdBeTBBQXpvQUF5QUNJQU10QUFRNkFBUWdBaUFETFFBRk9nQUZJQUlnQXkwQUJqb0FCaUFDSUFNdEFBYzZBQWNnQWtFSWFpRUNJQU5CQ0dvaEF5QUhRUWhySWdjTkFBc0xJQTBFUUNBQ0lBTkJBV3N0QUFBZ0RSQURHZ3NnQVNBSWFpRUJJQVFnQ1dvaENTQVBRUUZySWc4TkFBc0xBa0FnRjBVTkFDQUpJQVJySVFrZ0dFVUVRQ0FTUVFOeElnSUVRQU5BSUJKQkFXc2hFaUFCSUFrZ0RCQUhJQWhxSVFFZ0FrRUJheUlDRFFBTEN5QVZJQVZCZjNOcVFRTkpEUUVEUUNBQklBa2dEQkFISUFocUlBa2dEQkFISUFocUlBa2dEQkFISUFocUlBa2dEQkFISUFocUlRRWdFa0VFYXlJU0RRQUxEQUVMSUF4QkIzRWhCU0FFSUFacUlBNXFJQVFnRXlBRUlCTktHMEYvYzJvZ0ZHdEJCMGtoQkFOQUlBRWhBaUFMQkVBZ0FTQUpMUUFBSUFzUUF5QUxhaUVDQ3dKQUlBeEZCRUFnQ1NFRERBRUxJQXdoQnlBSklRTWdCU0lBQkVBRFFDQUNJQU10QUFBNkFBQWdCMEVCYXlFSElBSkJBV29oQWlBRFFRRnFJUU1nQUVFQmF5SUFEUUFMQ3lBRURRQURRQ0FDSUFNdEFBQTZBQUFnQWlBRExRQUJPZ0FCSUFJZ0F5MEFBam9BQWlBQ0lBTXRBQU02QUFNZ0FpQURMUUFFT2dBRUlBSWdBeTBBQlRvQUJTQUNJQU10QUFZNkFBWWdBaUFETFFBSE9nQUhJQUpCQ0dvaEFpQURRUWhxSVFNZ0IwRUlheUlIRFFBTEN5QU5CRUFnQWlBRFFRRnJMUUFBSUEwUUF4b0xJQUVnQ0dvaEFTQVNRUUZySWhJTkFBc0xDOEFDQVFOL1Fjei9zd1lnQVhaQkFYRWhCQ0FCUVFOMElnTkI1Q3hxTFFBQUlRVWdBMEdrSzJvdEFBQWhBd0pBUWZyMXF3VWdBWFpCQVhFRVFDQUNJQU5CQVhScUxnRUFJUUVnQkFSQUlBRWdBaUFGUVFGMGFpNEJBR3BCQVdwQkFYVVBDeUFBS0FMTUFTSUNSUTBCSUFBb0FnUWdBaWdDQkVjTkFTQUJJQUlnQlVFQmRHb3VBUnhxUVFGcVFRRjFEd3NnQkFSQUlBSWdCVUVCZEdvdUFRQWhBU0FBS0FMSUFTSUNSUTBCSUFBb0FnUWdBaWdDQkVjTkFTQUJJQUlnQTBFQmRHb3VBUnhxUVFGcVFRRjFEd3RCQUNFQlFRRWhBZ0pBSUFBb0FzZ0JJZ1JGRFFBZ0FDZ0NCQ0FFS0FJRVJ3MEFJQVFnQTBFQmRHb3VBUndoQVVFQUlRSUxJQUFvQXN3QklnTkZEUUFnQUNnQ0JDQURLQUlFUncwQUlBTWdCVUVCZEdvdUFSd2hBQ0FDQkVBZ0FBOExJQUFnQVdwQkFXcEJBWFVoQVFzZ0FRdnlBd0VEZnlBQktBSUFJZ05CLy8vL0IwY0VRQ0FCS0FJRUlRUWdBQ0FDSUFKQkEzRWdBa0VRU1NJQ0cwRUNkQ0lGUWZBcGFpZ0NBRUVRUVFnZ0Foc2lBbXhxSUFWQnNDbHFLQUlBYWlJQUlBTWdBQzBBQUdwQndEVnFMUUFBT2dBQUlBRW9BZ2doQXlBQUlBUWdBQzBBQVdwQndEVnFMUUFBT2dBQklBRW9BZ3doQkNBQUlBTWdBQzBBQW1wQndEVnFMUUFBT2dBQ0lBQWdCQ0FBTFFBRGFrSEFOV290QUFBNkFBTWdBU2dDRkNFRElBQWdBbW9pQUNBQktBSVFJQUF0QUFCcVFjQTFhaTBBQURvQUFDQUJLQUlZSVFRZ0FDQURJQUF0QUFGcVFjQTFhaTBBQURvQUFTQUJLQUljSVFNZ0FDQUVJQUF0QUFKcVFjQTFhaTBBQURvQUFpQUFJQU1nQUMwQUEycEJ3RFZxTFFBQU9nQURJQUVvQWlRaEF5QUFJQUpxSWdBZ0FTZ0NJQ0FBTFFBQWFrSEFOV290QUFBNkFBQWdBU2dDS0NFRUlBQWdBeUFBTFFBQmFrSEFOV290QUFBNkFBRWdBU2dDTENFRElBQWdCQ0FBTFFBQ2FrSEFOV290QUFBNkFBSWdBQ0FESUFBdEFBTnFRY0ExYWkwQUFEb0FBeUFCS0FJMElRTWdBQ0FDYWlJQUlBRW9BakFnQUMwQUFHcEJ3RFZxTFFBQU9nQUFJQUVvQWpnaEFpQUFJQU1nQUMwQUFXcEJ3RFZxTFFBQU9nQUJJQUVvQWp3aEFTQUFJQUlnQUMwQUFtcEJ3RFZxTFFBQU9nQUNJQUFnQVNBQUxRQURha0hBTldvdEFBQTZBQU1MQzVja0FSUi9Jd0JCZ0E1ckloVWtBQ0FESUFWcUloa2dBUzRCQUNJT1FRSjFhaUVESUFRZ0Jtb2lHeUFCTGdFQ0lndEJBblZxSVFrZ0FpZ0NDRUVFZENFTUlBSW9BZ1JCQkhRaERTQUFJQVpCQkhScUlBVnFJUVFDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQTVCQTNGQkJIUWdDMEVEY1VFQ2RISkJ3RHRxS0FJQURnOEFBUUlEQkFVR0J3Z0pDZ3NNRFE0UEN5QUNLQUlBSUFRZ0F5QUpJQTBnRENBSElBaEJFQkFKREE4TElBSW9BZ0FnQkNBRElBbEJBbXNnRFNBTUlBY2dDRUVBRUJvTURnc2dDVUVDYXlFS1FRQWhEaUFDS0FJQUlRc0NRQUpBSUFOQkFFZ05BQ0FESUFkcUlBMUxEUUFnQ1VFQ1NBMEFJQWdnQ21wQkJXb2dERXNOQUNBS0lRNE1BUXNnQ3lBVklBTWdDaUFOSUF3Z0J5QUlRUVZxSUFjUUNTQVZJUXNnQnlFTlFRQWhBd3NnQ3lBTklBNXNJQU5xYWlBTmFpSUpJQTFCQld4cUlRTWdDRUVDZGlFUlFjQUFJQWRySVJRZ0RVRUJkQ0VNSUExQkFuUWdCMnNoRDBFQUlBMXJJaEJCQVhRaEdBTkFJQWNoRXdOQUlBUWdDU0FNYWkwQUFDSU9JQU1nREdvdEFBQWdBeUFOYWkwQUFDSVdJQU1nR0dvdEFBQWlDMm9pQ21zZ0NrRUNkR3RxSUFNdEFBQWlFaUFESUJCcUxRQUFJZ3BxUVJSc2FrRVFha0VGZFVIQU5Xb3RBQUE2QURBZ0JDQUpJQTFxTFFBQUloY2dGaUFLSUF0cUlocEJCSFJxSUE0Z0Vtb2lGbXRxSUJvZ0ZtdEJBblJxUVJCcVFRVjFRY0ExYWkwQUFEb0FJQ0FFSUFrdEFBQWlGaUFTSUFzZ0Rtb2lHa0VFZEdvZ0NpQVhhaUlTYTJvZ0dpQVNhMEVDZEdwQkVHcEJCWFZCd0RWcUxRQUFPZ0FRSUFRZ0NTQVFhaTBBQUNBS0lBNGdGMm9pRGtFRWRHb2dDeUFXYWlJTGEyb2dEaUFMYTBFQ2RHcEJFR3BCQlhWQndEVnFMUUFBT2dBQUlBbEJBV29oQ1NBRVFRRnFJUVFnQTBFQmFpRURJQk5CQVdzaUV3MEFDeUFFSUJScUlRUWdBeUFQYWlFRElBa2dEMm9oQ1NBUlFRRnJJaEVOQUFzTURRc2dBaWdDQUNBRUlBTWdDVUVDYXlBTklBd2dCeUFJUVFFUUdnd01DeUFDS0FJQUlBUWdBMEVDYXlBSklBMGdEQ0FISUFoQkFCQVpEQXNMSUFJb0FnQWdCQ0FEUVFKcklBbEJBbXNnRFNBTUlBY2dDRUVBRUJJTUNnc2dBaWdDQUNBRUlBTkJBbXNnQ1VFQ2F5QU5JQXdnQnlBSVFRQVFGd3dKQ3lBQ0tBSUFJQVFnQTBFQ2F5QUpRUUpySUEwZ0RDQUhJQWhCQWhBU0RBZ0xJQWRCQldvaEN5QURRUUpySVFvZ0FpZ0NBQ0VPQWtBQ1FDQURRUUpJRFFBZ0NpQUxhaUFOU3cwQUlBbEJBRWdOQUNBSUlBbHFJQXhMRFFBZ0RTRUxEQUVMSUE0Z0ZTQUtJQWtnRFNBTUlBc2dDQ0FMRUFsQkFDRUpJQlVoRGtFQUlRb0xRUkFnQjJzaEZDQUxJQWRySVJnZ0IwRUNkaUVTSUE0Z0NTQUxiQ0FLYW1wQkJXb2hBeUFJSVFzRFFDQURRUUZyTFFBQUlRa2dBMEVDYXkwQUFDRU1JQU5CQTJzdEFBQWhDaUFEUVFSckxRQUFJUThnQTBFRmF5MEFBQ0VUSUJJaEVRTkFJQVFnQXkwQUFDSU9JQk1nQ2lBTWFpSU5RUVIwYWlBSklBOXFJaE5ySUEwZ0UydEJBblJxYWtFUWFrRUZkVUhBTldvdEFBQTZBQUFnQkNBRExRQUJJZzBnRHlBSklBeHFJaE5CQkhScUlBb2dEbW9pRDJ0cUlCTWdEMnRCQW5ScVFSQnFRUVYxUWNBMWFpMEFBRG9BQVNBRUlBTXRBQUlpRUNBS0lBa2dEbW9pRTBFRWRHb2dEQ0FOYWlJS2Eyb2dFeUFLYTBFQ2RHcEJFR3BCQlhWQndEVnFMUUFBT2dBQ0lBUWdBeTBBQXlJWElBd2dEU0FPYWlJS1FRUjBhaUFKSUJCcUlneHJhaUFLSUF4clFRSjBha0VRYWtFRmRVSEFOV290QUFBNkFBTWdCRUVFYWlFRUlBTkJCR29oQXlBSklSTWdEaUVQSUEwaENpQVFJUXdnRnlFSklCRkJBV3NpRVEwQUN5QUVJQlJxSVFRZ0F5QVlhaUVESUF0QkFXc2lDdzBBQ3d3SEN5QUNLQUlBSUFRZ0EwRUNheUFKUVFKcklBMGdEQ0FISUFoQkFCQVlEQVlMSUFkQkJXb2hDeUFKUVFKcklRNGdBMEVDYXlFS0lBSW9BZ0FoRHdKQUFrQWdBMEVDU0EwQUlBb2dDMm9nRFVzTkFDQUpRUUpJRFFBZ0NFRUZhaUlVSUE1cUlBeExEUUFnRFNFTERBRUxJQThnRlVIQUNtb2lEeUFLSUE0Z0RTQU1JQXNnQ0VFRmFpSVVJQXNRQ1VFQUlRNUJBQ0VLQ3lBVUJFQWdDeUFIYXlFWUlBZEJBblloRWlBUElBc2dEbXdnQ21wcVFRVnFJUU1nRlNFTUEwQWdBMEVCYXkwQUFDRUpJQU5CQW1zdEFBQWhDeUFEUVFOckxRQUFJUTRnQTBFRWF5MEFBQ0VOSUFOQkJXc3RBQUFoRVNBU0lROERRQ0FNSUFNdEFBQWlDaUFSSUFzZ0Rtb2lFMEVFZEdvZ0NTQU5haUlSYXlBVElCRnJRUUowYW1vMkFnQWdEQ0FETFFBQkloTWdEU0FKSUF0cUloRkJCSFJxSUFvZ0Rtb2lEV3RxSUJFZ0RXdEJBblJxTmdJRUlBd2dBeTBBQWlJUUlBNGdDU0FLYWlJT1FRUjBhaUFMSUJOcUlnMXJhaUFPSUExclFRSjBhallDQ0NBTUlBTXRBQU1pRnlBS0lCTnFJZzVCQkhRZ0Myb2dDU0FRYWlJTGEyb2dEaUFMYTBFQ2RHbzJBZ3dnREVFUWFpRU1JQU5CQkdvaEF5QUpJUkVnQ2lFTklCTWhEaUFRSVFzZ0Z5RUpJQTlCQVdzaUR3MEFDeUFESUJocUlRTWdGRUVCYXlJVURRQUxDeUFWSUFkQkFuUWlER29pQ1NBSFFSUnNhaUVESUFoQkFuWWhEMEhBQUNBSGF5RVhRUUFnQjJzaUZFRURkQ0VZSUFkQkEzUWhFU0FIUVFOc1FRSjBJUk1EUUNBSElRMERRQ0FFSUFrZ0VXb29BZ0FpRGlBRElCRnFLQUlBSUFNZ0RHb29BZ0FpRmlBRElCaHFLQUlBSWd0cUlncHJJQXBCQW5ScmFpQURLQUlBSWhBZ0F5QVVRUUowSWhwcUtBSUFJZ3BxUVJSc2FrR0FCR3BCQ25WQndEVnFMUUFBT2dBd0lBUWdDU0FNYWlnQ0FDSVNJQllnQ2lBTGFpSWNRUVIwYWlBT0lCQnFJaFpyYWlBY0lCWnJRUUowYWtHQUJHcEJDblZCd0RWcUxRQUFPZ0FnSUFRZ0NTZ0NBQ0lXSUJBZ0N5QU9haUljUVFSMGFpQUtJQkpxSWhCcmFpQWNJQkJyUVFKMGFrR0FCR3BCQ25WQndEVnFMUUFBT2dBUUlBUWdDU0FhYWlnQ0FDQUtJQTRnRW1vaURrRUVkR29nQ3lBV2FpSUxhMm9nRGlBTGEwRUNkR3BCZ0FScVFRcDFRY0ExYWkwQUFEb0FBQ0FKUVFScUlRa2dCRUVCYWlFRUlBTkJCR29oQXlBTlFRRnJJZzBOQUFzZ0JDQVhhaUVFSUFNZ0Uyb2hBeUFKSUJOcUlRa2dEMEVCYXlJUERRQUxEQVVMSUFJb0FnQWdCQ0FEUVFKcklBbEJBbXNnRFNBTUlBY2dDRUVCRUJnTUJBc2dBaWdDQUNBRUlBTkJBbXNnQ1NBTklBd2dCeUFJUVFFUUdRd0RDeUFDS0FJQUlBUWdBMEVDYXlBSlFRSnJJQTBnRENBSElBaEJBUkFTREFJTElBSW9BZ0FnQkNBRFFRSnJJQWxCQW1zZ0RTQU1JQWNnQ0VFQkVCY01BUXNnQWlnQ0FDQUVJQU5CQW1zZ0NVRUNheUFOSUF3Z0J5QUlRUU1RRWdzZ0FTNEJBQ0lPUVFOMUlCbEJBWFpxSVE4Z0FTNEJBaUlMUVFOMUlCdEJBWFpxSVFNZ0FpZ0NBQ0FDS0FJRUlnb2dBaWdDQ0NJQ2JFRUlkR29oQVNBQUlBWkJBblJCZUhGcUlBVkJBWFpxUVlBQ2FpRUVJQWhCQVhZaEVTQUhRUUYySVEwZ0MwRUhjU0VRSUFKQkEzUWhBQ0FLUVFOMElRb0NRQUpBSUE1QkIzRWlFa1VOQUNBUVJRMEFJQTFCQVdvaERrRUFJUVVDUUFKQUlBOUJBRWdOQUNBT0lBOXFJQXBMRFFBZ0EwRUFTQTBBSUFNZ0VXcEJBV29nQUVzTkFDQUFJUVlnQ2lFT0lBTWhCUXdCQ3lBQklCVWdEeUFESUFvZ0FDQU9JQkZCQVdvaUJpQU9FQWtnQVNBQUlBcHNhaUFWSUFZZ0RteHFJQThnQXlBS0lBQWdEaUFHSUE0UUNTQVZJUUZCQUNFUEMwRVFJQTFySVJjZ0IwRUNkaUVBUVFnZ0VHc2hBMEVJSUJKcklRa2dEa0VCZENJTUlBMXJJUlFnQVNBRklBNXNhaUFQYWlFTElBUWhDaUFJUVFKMklnY2hBZ05BSUJBZ0N5QU1haTBBQUd3Z0F5QUxJQTVxTFFBQUlnaHNhaUVOSUFnZ0VHd2dBeUFMTFFBQWJHb2hFeUFBSVJFRFFDQUxRUUZxSWdnZ0RHb3RBQUFoR1NBS0lBa2dFMndnRUNBSUlBNXFMUUFBSWdoc0lBTWdDeTBBQVd4cUloTWdFbXhxUVNCcVFRWjJPZ0FBSUFvZ0NTQU5iQ0FRSUJsc0lBTWdDR3hxSWdnZ0VteHFRU0JxUVFaMk9nQUlJQXN0QUFJaERTQUxRUUpxSWdzZ0RHb3RBQUFoR1NBS0lBa2dFMndnRUNBTElBNXFMUUFBSWh0c0lBTWdEV3hxSWhNZ0VteHFRU0JxUVFaMk9nQUJJQW9nQ0NBSmJDQVFJQmxzSUFNZ0cyeHFJZzBnRW14cVFTQnFRUVoyT2dBSklBcEJBbW9oQ2lBUlFRRnJJaEVOQUFzZ0N5QVVhaUVMSUFvZ0Yyb2hDaUFDUVFGcklnSU5BQXNnQkVGQWF5RUtJQUVnQlNBR2FpQU9iR29nRDJvaEN3TkFJQkFnQ3lBTWFpMEFBR3dnQXlBTElBNXFMUUFBSWdGc2FpRU5JQUVnRUd3Z0F5QUxMUUFBYkdvaEV5QUFJUkVEUUNBTFFRRnFJZ0VnREdvdEFBQWhBaUFLSUFrZ0Uyd2dFQ0FCSUE1cUxRQUFJZ0ZzSUFNZ0N5MEFBV3hxSWdRZ0VteHFRU0JxUVFaMk9nQUFJQW9nQ1NBTmJDQUNJQkJzSUFFZ0EyeHFJZ0VnRW14cVFTQnFRUVoyT2dBSUlBc3RBQUloQWlBTFFRSnFJZ3NnREdvdEFBQWhCU0FLSUFRZ0NXd2dFQ0FMSUE1cUxRQUFJZ1JzSUFJZ0EyeHFJaE1nRW14cVFTQnFRUVoyT2dBQklBb2dBU0FKYkNBRklCQnNJQU1nQkd4cUlnMGdFbXhxUVNCcVFRWjJPZ0FKSUFwQkFtb2hDaUFSUVFGckloRU5BQXNnQ3lBVWFpRUxJQW9nRjJvaENpQUhRUUZySWdjTkFBc01BUXNnRWdSQUlBMUJBV29oQzBFQUlRSUNRQUpBSUE5QkFFZ05BQ0FMSUE5cUlBcExEUUFnQTBFQVNBMEFJQU1nRVdvZ0FFc05BQ0FBSVJFZ0NpRUxJQU1oQWd3QkN5QUJJQlVnRHlBRElBb2dBQ0FMSUJFZ0N4QUpJQUVnQUNBS2JHb2dGU0FMSUJGc2FpQVBJQU1nQ2lBQUlBc2dFU0FMRUFrZ0ZTRUJRUUFoRHd0QkVDQU5heUVHSUFkQkFuWWhBRUVJSUJKcklRTWdDMEVCZENBTmF5RUhJQUVnQWlBTGJHb2dEMm9oQ1NBRUlRd2dDRUVDZGlJVUlRVURRQ0FBSVE0RFFDQUpRUUZxSUF0cUxRQUFJUWdnQ1NBTGFpMEFBQ0VLSUF3Z0VpQUpMUUFCSWcxc0lBTWdDUzBBQUd4cVFRTjBRU0JxUVFaMk9nQUFJQXdnQ0NBU2JDQURJQXBzYWtFRGRFRWdha0VHZGpvQUNDQUpMUUFDSVFvZ0NVRUNhaUlKSUF0cUxRQUFJUk1nRENBS0lCSnNJQU1nRFd4cVFRTjBRU0JxUVFaMk9nQUJJQXdnRWlBVGJDQURJQWhzYWtFRGRFRWdha0VHZGpvQUNTQU1RUUpxSVF3Z0RrRUJheUlPRFFBTElBY2dDV29oQ1NBR0lBeHFJUXdnQlVFQmF5SUZEUUFMSUFSQlFHc2hEQ0FCSUFJZ0VXb2dDMnhxSUE5cUlRa0RRQ0FBSVE0RFFDQUpRUUZxSUF0cUxRQUFJUUVnQ1NBTGFpMEFBQ0VDSUF3Z0VpQUpMUUFCSWdSc0lBTWdDUzBBQUd4cVFRTjBRU0JxUVFaMk9nQUFJQXdnQVNBU2JDQUNJQU5zYWtFRGRFRWdha0VHZGpvQUNDQUpMUUFDSVFJZ0NVRUNhaUlKSUF0cUxRQUFJUVVnRENBQ0lCSnNJQU1nQkd4cVFRTjBRU0JxUVFaMk9nQUJJQXdnQlNBU2JDQUJJQU5zYWtFRGRFRWdha0VHZGpvQUNTQU1RUUpxSVF3Z0RrRUJheUlPRFFBTElBY2dDV29oQ1NBR0lBeHFJUXdnRkVFQmF5SVVEUUFMREFFTElCQUVRRUVBSVFJQ1FBSkFJQTlCQUVnTkFDQU5JQTlxSUFwTERRQWdBMEVBU0EwQUlBTWdFV3BCQVdvZ0FFc05BQ0FBSVFVZ0F5RUNEQUVMSUFFZ0ZTQVBJQU1nQ2lBQUlBMGdFVUVCYWlJRklBMFFDU0FCSUFBZ0NteHFJQlVnQlNBTmJHb2dEeUFESUFvZ0FDQU5JQVVnRFJBSklCVWhBU0FOSVFwQkFDRVBDMEVRSUExcklSRWdCMEVDZGlFQVFRZ2dFR3NoQXlBS1FRRjBJZ1lnRFdzaEJ5QUJJQUlnQ214cUlBOXFJUWtnQkNFTUlBaEJBbllpQ3lFVUEwQWdBQ0VPQTBBZ0JpQUphaTBBQUNFSUlBd2dBeUFKTFFBQWJDQVFJQWtnQ21vdEFBQWlEV3hxUVFOMFFTQnFRUVoyT2dBQUlBd2dBeUFOYkNBSUlCQnNha0VEZEVFZ2FrRUdkam9BQ0NBSlFRRnFJZ2dnQm1vdEFBQWhEU0FNSUFNZ0NTMEFBV3dnRUNBSUlBcHFMUUFBSWdoc2FrRURkRUVnYWtFR2Rqb0FBU0FNSUFNZ0NHd2dEU0FRYkdwQkEzUkJJR3BCQm5ZNkFBa2dERUVDYWlFTUlBbEJBbW9oQ1NBT1FRRnJJZzROQUFzZ0J5QUphaUVKSUF3Z0VXb2hEQ0FVUVFGckloUU5BQXNnQkVGQWF5RU1JQUVnQWlBRmFpQUtiR29nRDJvaENRTkFJQUFoRGdOQUlBWWdDV290QUFBaEFTQU1JQU1nQ1MwQUFHd2dFQ0FKSUFwcUxRQUFJZ0pzYWtFRGRFRWdha0VHZGpvQUFDQU1JQUlnQTJ3Z0FTQVFiR3BCQTNSQklHcEJCblk2QUFnZ0NVRUJhaUlCSUFacUxRQUFJUUlnRENBRElBa3RBQUZzSUJBZ0FTQUthaTBBQUNJQmJHcEJBM1JCSUdwQkJuWTZBQUVnRENBQklBTnNJQUlnRUd4cVFRTjBRU0JxUVFaMk9nQUpJQXhCQW1vaERDQUpRUUpxSVFrZ0RrRUJheUlPRFFBTElBY2dDV29oQ1NBTUlCRnFJUXdnQzBFQmF5SUxEUUFMREFFTElBRWdCQ0FQSUFNZ0NpQUFJQTBnRVVFSUVBa2dBU0FBSUFwc2FpQUVRVUJySUE4Z0F5QUtJQUFnRFNBUlFRZ1FDUXNnRlVHQURtb2tBQXYxRndFZ2Z5TUFRZEFEYXlJR0pBQWdBU0FCS0FJQUlnb2dBU2dDQkNJSUlBSnNJaFFnQTJvaUJ5QUljQ0lMUVFSMGFpQUhJQXRySWdsQkNIUnFOZ0lNSUFFZ0NpQUlJQUVvQWdnaUIyd2lERUVJZEdvaUhDQUpRUVowYWlBTFFRTjBhaUlMTmdJUUlBRWdDeUFNUVFaMElpSnFOZ0lVSUFCQ0FEY0NEQ0FBUWlnM0FoUWdBRUVBTmdJSUlBQkJCallDQUNBRFFRUjBJUXNDUUFKQUFrQWdCRUVDYXc0R0FRQUFBQUFCQUFzZ0JrRUFOZ0lNSUFZZ0J6WUNHQ0FHSUFnMkFoUWdCaUFGTmdJUUlBVkZCRUFNQVFzZ0JrSFFBR29pQUNBR1FReHFJQVpCRUdvZ0N5QUNRUVIwUVFCQkFFRVFRUkFRRENBQklBQVFEd3dCQ3lBR1FkQUFha0VBUVlBREVBTWFJQW9nRkVFSWRHb2dDMm9oRENBR1FnQTNBMGdnQmtGQWEwSUFOd01BSUFaQ0FEY0RPQ0FHUWdBM0F6QWdCa0lBTndNb0lBWkNBRGNESUNBR1FnQTNBeGdnQmtJQU53TVFRUUFoQlVFQUlRa0Nmd0pBSUFJRVFDQUFJQWhCcUg1c2FpZ0N4QUVOQVF0QkFDRUxRUUFNQVFzZ0JpQU1JQWhCQkhScklnUXRBQVVnQkMwQUJHb2dCQzBBQm1vZ0JDMEFCMm9pRmlBRUxRQURJQVF0QUFJZ0JDMEFBU0FFTFFBQWFtcHFJaFZxSWdvZ0JDMEFEeUFFTFFBT0lBUXRBQTBnQkMwQURHcHFhaUlZSUFRdEFBc2dCQzBBQ2lBRUxRQUpJQVF0QUFocWFtb2lGMm9pQkdzaUNUWUNGQ0FHSUFRZ0Ntb2lDellDRUVFQklSbEJBUXNoQkFKQUlBZEJBV3NnQWtZTkFDQUFJQWhCMkFGc2FpZ0N4QUZGQkVBTUFRc2dCaUFNSUFoQkNIUnFJZ0l0QUFVZ0FpMEFCR29nQWkwQUJtb2dBaTBBQjJvaUhTQUNMUUFESUFJdEFBSWdBaTBBQVNBQ0xRQUFhbXBxSWg1cUlnVWdBaTBBRHlBQ0xRQU9JQUl0QUEwZ0FpMEFER3BxYWlJZklBSXRBQXNnQWkwQUNpQUNMUUFKSUFJdEFBaHFhbW9pSUdvaUFtc2dDV29pQ1RZQ0ZDQUdJQUlnQldvZ0Myb2lDellDRUVFQklRVWdCRUVCYWlFRUN3Si9Ba0FnQTBVTkFDQUFRUlJyS0FJQVJRMEFJQVlnREVFQmF5SUNJQWhCQm5RaUVHb2lDaUFJUVFSMElnZHFMUUFBSUFvdEFBQnFJQW9nQ0VFRmRDSU5haTBBQUdvZ0NpQUlRVEJzSWc5cUxRQUFhaUlhSUFJZ0Qyb3RBQUFnQWlBTmFpMEFBQ0FDSUFkcUxRQUFJQUl0QUFCcWFtb2lHMm9pRVNBS0lCQnFJZ0lnRUdvaUNpQUhhaTBBQUNBS0xRQUFhaUFLSUExcUxRQUFhaUFLSUE5cUxRQUFhaUlRSUFJZ0Qyb3RBQUFnQWlBTmFpMEFBQ0FDSUFkcUxRQUFJQUl0QUFCcWFtb2lEMm9pQW1zaUJ6WUNJQ0FHSUFJZ0VXb2dDMm9pQ3pZQ0VFRUJJUkVnQkVFQmFpRUtRUUVNQVF0QkFDRUhJQVFoQ2tFQUN5RUNBa0FDUUFKQUFrQUNRQ0FESUFoQkFXdEhCRUFnQUNnQ25BTU5BUXNnQkEwQkRBSUxJQWNnREVFUWFpSUhJQWhCQm5RaUUyb2lBQ0FJUVFSMElnMXFMUUFBSUFBdEFBQnFJQUFnQ0VFRmRDSVNhaTBBQUdvZ0FDQUlRVEJzSWc1cUxRQUFhaUFISUE1cUxRQUFJQWNnRW1vdEFBQWdCeUFOYWkwQUFDQU1MUUFRYW1wcWFpSU1JQUFnRTJvaUFDQVRhaUlISUExcUxRQUFJQWN0QUFCcUlBY2dFbW90QUFCcUlBY2dEbW90QUFCcUloTWdBQ0FPYWkwQUFDQUFJQkpxTFFBQUlBQWdEV290QUFBZ0FDMEFBR3BxYWlJQWFpSU5hMm9oQnlBTUlBMXFJQXRxSVF0QkFTRVNJQUpCQVdvaEFpQUtRUUZxSVFvZ0VVVWdCRUVBUjNKRkJFQWdHaUFiYWlBUGFpQVFhaUFBSUF4cUlCTnFhMEVGZFNFSkRBTUxJQVJGRFFJTElBa2dCRUVEYW5VaENRc2dHU0FDUlhFZ0JYRUVRQ0FWSUJacUlCZHFJQmhxSUI4Z0lHb2dIV29nSG1wclFRVjFJUWNNQWdzZ0FrVU5BUXNnQnlBQ1FRTnFkU0VIQ3lBR0FuOENRQUpBQWtBQ1FDQUtRUUZyRGdNQUFRSURDeUFMUVFSMkRBTUxJQXRCQlhZTUFnc2dDMEVWYkVFS2Rnd0JDeUFMUVFaMkN5SUFOZ0lRQW44Z0J5QUpja1VFUUNBR0lBQTJBa2dnQmlBQU5nSk1JQVlnQURZQ1JDQUdJQUEyQWtBZ0JpQUFOZ0k4SUFZZ0FEWUNPQ0FHSUFBMkFqUWdCaUFBTmdJd0lBWWdBRFlDTENBR0lBQTJBaWdnQmlBQU5nSWtJQVlnQURZQ0lDQUdJQUEyQWh3Z0JpQUFOZ0lZSUFZZ0FEWUNGQ0FHUWRBQWFpRUhJQVpCRUdvaENVRUFEQUVMSUFZZ0FDQUphaUlFSUFkck5nSkFJQVlnQkNBSFFRRjFJZ0pyTmdJd0lBWWdBaUFFYWpZQ0lDQUdJQVFnQjJvMkFoQWdCaUFBSUFscklnUWdCMnMyQWt3Z0JpQUVJQUpyTmdJOElBWWdBaUFFYWpZQ0xDQUdJQVFnQjJvMkFod2dCaUFBSUFsQkFYVWlDbW9pQkNBSGF6WUNSQ0FHSUFRZ0FtczJBalFnQmlBQ0lBUnFOZ0lrSUFZZ0JDQUhhallDRkNBR0lBQWdDbXNpQUNBSGF6WUNTQ0FHSUFBZ0FtczJBamdnQmlBQUlBSnFOZ0lvSUFZZ0FDQUhhallDR0NBR1FkQUFhaUVISUFaQkVHb2hDVUVBQ3lFQUEwQWdCeUFKSUFCQkRIRnFLQUlBSWdKQi93RWdBa0gvQVVnYklnSkJBQ0FDUVFCS0d5SUNPZ0FCSUFjZ0Fqb0FBQ0FIUVFKcUlRY2dDU0FBUVFKcUlnQkJQbkZGUVFSMGFpRUpJQUJCZ0FKSERRQUxJQndnRkVFR2RHb2dBMEVEZEdvaEF5QUlRUVIwSVEwZ0NFRUdkQ0VVUVFBZ0NFRURkQ0lNYXlFVElBWkIwQUpxSVJ3Z0JrRkFheUVqUVFBaEMwRUFJUW9EUUNBR1FnQTNBMGdnSTBJQU53TUFJQVpDQURjRE9DQUdRZ0EzQXpBZ0JrSUFOd01vSUFaQ0FEY0RJQ0FHUWdBM0F4Z2dCa0lBTndNUVFRQWhDVUVBSVFCQkFDRUNJQmtFUUNBR0lBTWdFMm9pQUMwQUF5QUFMUUFDYWlJV0lBQXRBQUVnQUMwQUFHb2lGV29pQWlBQUxRQUhJQUF0QUFacUloZ2dBQzBBQlNBQUxRQUVhaUlYYWlJQWF5SUpOZ0lVSUFZZ0FDQUNhaUlBTmdJUVFRRWhBZ3NnQlFSQUlBWWdBeUFVYWlJRUxRQURJQVF0QUFKcUloMGdCQzBBQVNBRUxRQUFhaUllYWlJSUlBUXRBQWNnQkMwQUJtb2lIeUFFTFFBRklBUXRBQVJxSWlCcUlnUnJJQWxxSWdrMkFoUWdCaUFFSUFocUlBQnFJZ0EyQWhBZ0FrRUJhaUVDQzBFQUlRY0NmeUFSUlFSQUlBSWhDRUVBREFFTElBWWdBMEVCYXlJRUlBMXFJZ2dnREdvdEFBQWdDQzBBQUdvaUdpQUVJQXhxTFFBQUlBUXRBQUJxSWh0cUlnNGdDQ0FOYWlJRUlBMXFJZ2dnREdvdEFBQWdDQzBBQUdvaUVDQUVJQXhxTFFBQUlBUXRBQUJxSWc5cUlnUnJJZ2MyQWlBZ0JpQUVJQTVxSUFCcUlnQTJBaEFnQWtFQmFpRUlRUUVMSVFRQ1FBSkFBa0FDUUNBU1JRUkFJQUlOQVF3Q0N5QUhJQU5CQ0dvaURpQU5haUlISUF4cUxRQUFJQWN0QUFCcUlBd2dEbW90QUFBZ0F5MEFDR3BxSWc0Z0J5QU5haUlISUExcUlpRWdER290QUFBZ0lTMEFBR29pSVNBSElBeHFMUUFBSUFjdEFBQnFJaVJxSWlWcmFpRUhJQTRnSldvZ0FHb2hBQ0FFUVFGcUlRUWdDRUVCYWlFSUlCRkZJQUpCQUVkeVJRUkFJQm9nRzJvZ0Qyb2dFR29nRGlBa2FpQWhhbXRCQkhVaENRd0RDeUFDUlEwQ0N5QUpJQUpCQW1wMUlRa0xJQmtnQkVWeElBVnhCRUFnRlNBV2FpQVhhaUFZYWlBZklDQnFJQjFxSUI1cWEwRUVkU0VIREFJTElBUkZEUUVMSUFjZ0JFRUNhblVoQndzZ0JnSi9Ba0FDUUFKQUFrQWdDRUVCYXc0REFBRUNBd3NnQUVFRGRnd0RDeUFBUVFSMkRBSUxJQUJCRld4QkNYWU1BUXNnQUVFRmRnc2lBRFlDRUFKQUlBY2dDWEpGQkVBZ0JpQUFOZ0pJSUFZZ0FEWUNUQ0FHSUFBMkFrUWdCaUFBTmdKQUlBWWdBRFlDUENBR0lBQTJBamdnQmlBQU5nSTBJQVlnQURZQ01DQUdJQUEyQWl3Z0JpQUFOZ0lvSUFZZ0FEWUNKQ0FHSUFBMkFpQWdCaUFBTmdJY0lBWWdBRFlDR0NBR0lBQTJBaFFNQVFzZ0JpQUFJQWxxSWdRZ0IyczJBa0FnQmlBRUlBZEJBWFVpQW1zMkFqQWdCaUFDSUFScU5nSWdJQVlnQkNBSGFqWUNFQ0FHSUFBZ0NXc2lCQ0FIYXpZQ1RDQUdJQVFnQW1zMkFqd2dCaUFDSUFScU5nSXNJQVlnQkNBSGFqWUNIQ0FHSUFBZ0NVRUJkU0lJYWlJRUlBZHJOZ0pFSUFZZ0JDQUNhellDTkNBR0lBSWdCR28yQWlRZ0JpQUVJQWRxTmdJVUlBWWdBQ0FJYXlJQUlBZHJOZ0pJSUFZZ0FDQUNhellDT0NBR0lBQWdBbW8yQWlnZ0JpQUFJQWRxTmdJWUN5QUtJQnhxSVFCQkFDRUhJQVpCRUdvaENRTkFJQUFnQ1NBSFFRRjBRUXh4YWlnQ0FDSUNRZjhCSUFKQi93RklHeUlDUVFBZ0FrRUFTaHNpQWpvQUFTQUFJQUk2QUFBZ0FFRUNhaUVBSUFrZ0IwRUNhaUlIUVE1eFJVRUVkR29oQ1NBSFFjQUFSdzBBQ3lBRElDSnFJUU1nQ3lFQVFjQUFJUXBCQVNFTElBQkZEUUFMSUFFZ0JrSFFBR29RRHdzZ0JrSFFBMm9rQUF0U0FRSi9RWURBQUNnQ0FDSUJJQUJCQTJwQmZIRWlBbW9oQUFKQUlBSkJBQ0FBSUFGTkd3MEFJQUEvQUVFUWRFc0VRQ0FBRUFCRkRRRUxRWURBQUNBQU5nSUFJQUVQQzBHRXdBQkJNRFlDQUVGL0M3VUZBUVIvSUFBb0FoUWhBeUFBS0FJUUlRUWdBQ2dDQkNFRklBQW9BZ3dpQWlBQktRSUFOd0lBSUFJZ0FTa0NDRGNDQ0NBQ0lBVkJCSFFpQUdvaUFpQUJLUUlRTndJQUlBSWdBU2tDR0RjQ0NDQUFJQUpxSWdJZ0FTa0NJRGNDQUNBQ0lBRXBBaWczQWdnZ0FDQUNhaUlDSUFFcEFqQTNBZ0FnQWlBQktRSTROd0lJSUFBZ0Ftb2lBaUFCS1FKQU53SUFJQUlnQVNrQ1NEY0NDQ0FBSUFKcUlnSWdBU2tDVURjQ0FDQUNJQUVwQWxnM0FnZ2dBQ0FDYWlJQ0lBRXBBbUEzQWdBZ0FpQUJLUUpvTndJSUlBQWdBbW9pQWlBQktRSndOd0lBSUFJZ0FTa0NlRGNDQ0NBQUlBSnFJZ0lnQVNrQ2dBRTNBZ0FnQWlBQktRS0lBVGNDQ0NBQUlBSnFJZ0lnQVNrQ2tBRTNBZ0FnQWlBQktRS1lBVGNDQ0NBQUlBSnFJZ0lnQVNrQ29BRTNBZ0FnQWlBQktRS29BVGNDQ0NBQUlBSnFJZ0lnQVNrQ3NBRTNBZ0FnQWlBQktRSzRBVGNDQ0NBQUlBSnFJZ0lnQVNrQ3dBRTNBZ0FnQWlBQktRTElBVGNDQ0NBQUlBSnFJZ0lnQVNrQzBBRTNBZ0FnQWlBQktRTFlBVGNDQ0NBQUlBSnFJZ0lnQVNrQzRBRTNBZ0FnQWlBQktRTG9BVGNDQ0NBQUlBSnFJZ0FnQVNrQzhBRTNBZ0FnQUNBQktRTDRBVGNDQ0NBRUlBRXBBb0FDTndJQUlBUWdCVUVEZENJQWFpSUVJQUVwQW9nQ053SUFJQUFnQkdvaUJDQUJLUUtRQWpjQ0FDQUFJQVJxSWdRZ0FTa0NtQUkzQWdBZ0FDQUVhaUlFSUFFcEFxQUNOd0lBSUFBZ0JHb2lCQ0FCS1FLb0FqY0NBQ0FBSUFScUlnUWdBU2tDc0FJM0FnQWdBQ0FFYWlBQktRSzRBamNDQUNBRElBRXBBc0FDTndJQUlBQWdBMm9pQXlBQktRTElBamNDQUNBQUlBTnFJZ01nQVNrQzBBSTNBZ0FnQUNBRGFpSURJQUVwQXRnQ053SUFJQUFnQTJvaUF5QUJLUUxnQWpjQ0FDQUFJQU5xSWdNZ0FTa0M2QUkzQWdBZ0FDQURhaUlESUFFcEF2QUNOd0lBSUFBZ0Eyb2dBU2tDK0FJM0FnQUxid0VCZnlNQVFSQnJJZ0lrQUNBQ1FRQTJBZ3dnQUNBQ1FReHFFQUloQUFKL0lBRUNmeUFDS0FJTUlnRkJmMFlFUUVHQWdJQ0FlQ0FBRFFFYVFRRU1BZ3RCQVNBQURRRWFJQUZCQVdwQkFYWWlBRUVBSUFCcklBRkJBWEViQ3pZQ0FFRUFDeUVBSUFKQkVHb2tBQ0FBQ3pZQUlBSUVRQ0FBSUFFUUFnOExRUUVoQWlBQklBQkJBUkFVSWdBMkFnQWdBRUYvUndSL0lBRWdBRUVCY3pZQ0FFRUFCVUVCQ3d2YUJ3RU5meU1BUWNBRGF5SVJKQUFnQmtFRmFpRUpBa0FDUUNBQ1FRQklEUUFnQWlBSmFpQUVTdzBBSUFOQkFFZ05BQ0FESUFkcVFRVnFJQVZMRFFBZ0JDRUpJQU1oQ2d3QkN5QUFJQkVnQWlBRElBUWdCU0FKSUFkQkJXb2dDUkFKSUJFaEFFRUFJUUlMSUFBZ0NTQUtiQ0FDYW1vaUFDQUpJQWhCQVhaQkFYRkJBbkpzYWtFRmFpRUNRUkFnQm1zaERDQUpJQVpySVE0Z0JrRUNkaUVTSUFoQkFYRWhGQ0FBSUFscUlSVWdCeUVQQTBBZ0FrRUJheTBBQUNFQUlBSkJBbXN0QUFBaENDQUNRUU5yTFFBQUlRUWdBa0VFYXkwQUFDRUtJQUpCQldzdEFBQWhDeUFTSVEwRFFDQUJJQUl0QUFBaUF5QUxJQVFnQ0dvaUJVRUVkR29nQUNBS2FpSUxheUFGSUF0clFRSjBhbXBCRUdwQkJYVkJ3RFZxTFFBQU9nQUFJQUVnQWkwQUFTSUZJQW9nQUNBSWFpSUxRUVIwYWlBRElBUnFJZ3ByYWlBTElBcHJRUUowYWtFUWFrRUZkVUhBTldvdEFBQTZBQUVnQVNBQ0xRQUNJaEFnQkNBQUlBTnFJZ3BCQkhScUlBVWdDR29pQkd0cUlBb2dCR3RCQW5ScVFSQnFRUVYxUWNBMWFpMEFBRG9BQWlBQklBSXRBQU1pRXlBSUlBTWdCV29pQkVFRWRHb2dBQ0FRYWlJSWEyb2dCQ0FJYTBFQ2RHcEJFR3BCQlhWQndEVnFMUUFBT2dBRElBRkJCR29oQVNBQ1FRUnFJUUlnQUNFTElBTWhDaUFGSVFRZ0VDRUlJQk1oQUNBTlFRRnJJZzBOQUFzZ0FTQU1haUVCSUFJZ0Rtb2hBaUFQUVFGcklnOE5BQXNnRkNBVmFrRUNhaUlJSUFsQkJXeHFJUUFnQjBFQ2RpRUtRY0FBSUFacklSSWdDVUVCZENFUElBRWdCMEVFZEdzaEFpQUpRUUowSUFacklRZEJBQ0FKYXlJTFFRRjBJUk1EUUNBR0lRRURRQ0FDSUFnZ0Qyb3RBQUFpQXlBQUlBOXFMUUFBSUFBZ0NXb3RBQUFpRENBQUlCTnFMUUFBSWdScUlnVnJJQVZCQW5ScmFpQUFMUUFBSWcwZ0FDQUxhaTBBQUNJRmFrRVViR3BCRUdwQkJYVkJ3RFZxTFFBQUlBSXRBREJxUVFGcVFRRjJPZ0F3SUFJZ0NDQUphaTBBQUNJUUlBd2dCQ0FGYWlJT1FRUjBhaUFESUExcUlneHJJQTRnREd0QkFuUnFha0VRYWtFRmRVSEFOV290QUFBZ0FpMEFJR3BCQVdwQkFYWTZBQ0FnQWlBSUxRQUFJZ3dnRFNBRElBUnFJZzVCQkhScUlBVWdFR29pRFdzZ0RpQU5hMEVDZEdwcVFSQnFRUVYxUWNBMWFpMEFBQ0FDTFFBUWFrRUJha0VCZGpvQUVDQUNJQWdnQzJvdEFBQWdCU0FESUJCcUlnTkJCSFJxSUFRZ0RHb2lCR3NnQXlBRWEwRUNkR3BxUVJCcVFRVjFRY0ExYWkwQUFDQUNMUUFBYWtFQmFrRUJkam9BQUNBSVFRRnFJUWdnQWtFQmFpRUNJQUJCQVdvaEFDQUJRUUZySWdFTkFBc2dBaUFTYWlFQ0lBQWdCMm9oQUNBSElBaHFJUWdnQ2tFQmF5SUtEUUFMSUJGQndBTnFKQUFMNXdZQkRIOENRQ0FCUVFSUEJFQWdBMEVDZGtFQ2FpRUxRUVFoQVFOQUFrQWdBRUVCYXlJR0xRQUFJZ2NnQUMwQUFDSUlheUlDSUFKQkgzVWlBbW9nQW5NaUFpQURUdzBBSUFCQkFtc2lEeTBBQUNJS0lBZHJJZ2tnQ1VFZmRTSUphaUFKY3lBRVR3MEFJQUF0QUFFaURDQUlheUlKSUFsQkgzVWlDV29nQ1hNZ0JFOE5BQUovQWtBZ0FpQUxTUVJBSUFBdEFBSWhEZ0ovSUFRZ0FFRURheUlKTFFBQUlnSWdCMnNpRFNBTlFSOTFJZzFxSUExelN3UkFJQVlnRENBSElBaHFJQXBxSWdaQkFYUnFJQUpxUVFScVFRTjJPZ0FBSUE4Z0FpQUdha0VDYWtFQ2Rqb0FBQ0FHSUFKQkEyeHFJQUJCQkdzdEFBQkJBWFJxUVFScVFRTjJEQUVMSUFZaENTQUhJQXhxSUFwQkFYUnFRUUpxUVFKMkN5RUNJQWtnQWpvQUFDQU9JQWhySWdJZ0FrRWZkU0lDYWlBQ2N5QUVUdzBCSUFBZ0J5QU1haUFJYWlJR0lBNXFRUUpxUVFKMk9nQUJJQUFnQ2lBR1FRRjBhaUFPYWtFRWFrRURkam9BQUNBR0lBNUJBMnhxSUFBdEFBTkJBWFJxUVFScVFRTjJJUVlnQUVFQ2Fnd0NDeUFHSUFjZ0RHb2dDa0VCZEdwQkFtcEJBblk2QUFBTElBZ2dDbW9nREVFQmRHcEJBbXBCQW5ZaEJpQUFDeUFHT2dBQUN5QUFJQVZxSVFBZ0FVRUJheUlCRFFBTERBRUxJQUVnQW1wQkFXc3RBQUFpQmtFQmFpRUpRUUFnQm1zaENrRUVJUUVEUUFKQUlBQkJBV3NpRHkwQUFDSUhJQUF0QUFBaUNHc2lBaUFDUVI5MUlnSnFJQUp6SUFOUERRQWdBRUVDYXlJTkxRQUFJZ3dnQjJzaUFpQUNRUjkxSWdKcUlBSnpJQVJQRFFBZ0FDMEFBU0lPSUFocklnSWdBa0VmZFNJQ2FpQUNjeUFFVHcwQUlBQXRBQUloQ3lBR0lRSWdCQ0FBUVFOckxRQUFJaEVnQjJzaUVDQVFRUjkxSWhCcUlCQnpTd1JBSUEwZ0RDQUtJQVlnQnlBSWFrRUJha0VCZGlBTVFRRjBheUFSYWtFQmRTSUNJQUlnQmtvYklBSWdDa2diYWpvQUFDQUpJUUlMSUE4Z0J3Si9JQVFnQ3lBSWF5SU5JQTFCSDNVaURXb2dEWE5MQkVBZ0FDQU9JQW9nQmlBSElBaHFRUUZxUVFGMklBNUJBWFJySUF0cVFRRjFJZ3NnQmlBTFNCc2dDaUFMU2h0cU9nQUJJQUpCQVdvaEFndEJBQ0FDYXlJTEN5QUNJQXdnRG1zZ0NDQUhhMEVDZEdwQkJHcEJBM1VpQnlBQ0lBZElHeUFISUF0SUd5SUNha0hBTldvdEFBQTZBQUFnQUNBSUlBSnJRY0ExYWkwQUFEb0FBQXNnQUNBRmFpRUFJQUZCQVdzaUFRMEFDd3NMaUFJQkIzOGdBQ2dDQkNFRUFrQWdBQ2dDREVFRGRDSUhJQUFvQWhBaUNHc2lBa0VnVGdSQUlBUW9BQUFpQTBFWWRDQURRUWgwUVlDQS9BZHhjaUFEUVFoMlFZRCtBM0VnQTBFWWRuSnlJUU1nQUNnQ0NDSUNSUTBCSUFNZ0FuUWdCQzBBQkVFSUlBSnJkbkloQXd3QkN5QUNRUUZJQkVBTUFRc2dCQzBBQUNBQUtBSUlJZ1ZCR0dvaUJuUWhBeUFDSUFWcVFRaHJJZ0pCQVVnTkFBTkFJQVF0QUFFZ0JrRUlheUlHZENBRGNpRURJQUpCQ0VvaEJTQUVRUUZxSVFRZ0FrRUlheUVDSUFVTkFBc0xJQUFnQVNBSWFpSUVOZ0lRSUFBZ0JFRUhjVFlDQ0VGL0lRSWdCQ0FIVFFSL0lBQWdBQ2dDQUNBRVFRTjJhallDQkNBRFFTQWdBV3QyQlVGL0N3c0RBQUVMeHdFQkJIOGdBQ2dDQkNFQ0FrQWdBQ2dDREVFRGRDQUFLQUlRYXlJRFFTQk9CRUFnQWlnQUFDSUJRUmgwSUFGQkNIUkJnSUQ4QjNGeUlBRkJDSFpCZ1A0RGNTQUJRUmgyY25JaEFTQUFLQUlJSWdCRkRRRWdBU0FBZENBQ0xRQUVRUWdnQUd0MmNnOExJQU5CQVVnRVFFRUFEd3NnQWkwQUFDQUFLQUlJSWdCQkdHb2lCSFFoQVNBQUlBTnFRUWhySWdCQkFVZ05BQU5BSUFJdEFBRWdCRUVJYXlJRWRDQUJjaUVCSUFCQkNFb2hBeUFDUVFGcUlRSWdBRUVJYXlFQUlBTU5BQXNMSUFFTDh3Y0JFbjhqQUVHQURtc2lEeVFBSUFaQkJXb2hDUUpBQWtBZ0FrRUFTQTBBSUFJZ0NXb2dCRXNOQUNBRFFRQklEUUFnQXlBSGFrRUZhaUFGU3cwQUlBTWhDZ3dCQ3lBQUlBOUJ3QXBxSWdBZ0FpQURJQVFnQlNBSklBZEJCV29nQ1JBSklBa2hCRUVBSVFJTElBQWdCQ0FLYkNBQ2Ftb2dCR29pQUNBRVFRVnNhaUVDSUFSQkFYUWhFQ0FIUVFKMklSSkJBQ0FFYXlJTFFRRjBJUllnQkVFQ2RDQUdhMEVGYXlFVElBOGdDVUVDZENJWGFpRURJQWxCQTNRaEdFRjdJQVpyUVFKMElSa2dDVUVEYkVFQ2RDRWFBMEFnQ1NFRkEwQWdBeUFZYWlBQUlCQnFMUUFBSWdvZ0FpQVFhaTBBQUNBQ0lBUnFMUUFBSWhFZ0FpQVdhaTBBQUNJTWFpSU5heUFOUVFKMGEyb2dBaTBBQUNJT0lBSWdDMm90QUFBaURXcEJGR3hxTmdJQUlBTWdGMm9nQUNBRWFpMEFBQ0lWSUJFZ0RDQU5haUlVUVFSMGFpQUtJQTVxSWhGcmFpQVVJQkZyUVFKMGFqWUNBQ0FESUFBdEFBQWlFU0FPSUFvZ0RHb2lGRUVFZEdvZ0RTQVZhaUlPYTJvZ0ZDQU9hMEVDZEdvMkFnQWdBeUFaYWlBQUlBdHFMUUFBSUEwZ0NpQVZhaUlLUVFSMGFpQU1JQkZxSWd4cmFpQUtJQXhyUVFKMGFqWUNBQ0FBUVFGcUlRQWdBMEVFYWlFRElBSkJBV29oQWlBRlFRRnJJZ1VOQUFzZ0FpQVRhaUVDSUFBZ0Uyb2hBQ0FESUJwcUlRTWdFa0VCYXlJU0RRQUxRUkFnQm1zaERpQUdRUUoySVJJZ0R5QUlRUUowYWtFSWFpRUlJQTlCRkdvaEJBTkFJQVJCQkdzb0FnQWhBaUFFUVFocktBSUFJUUFnQkVFTWF5Z0NBQ0VGSUFSQkVHc29BZ0FoQ1NBRVFSUnJLQUlBSVF3Z0VpRU5BMEFnQVNBRUlnc29BZ0FpQmlBTUlBQWdCV29pQTBFRWRHb2dBaUFKYWlJRWF5QURJQVJyUVFKMGFtcEJnQVJxUVFwMVFjQTFhaTBBQUNBSUlnTW9BZ0JCRUdwQkJYVkJ3RFZxTFFBQWFrRUJha0VCZGpvQUFDQUJJQXNvQWdRaUNpQUpJQUFnQW1vaUJFRUVkR29nQlNBR2FpSUlheUFFSUFoclFRSjBhbXBCZ0FScVFRcDFRY0ExYWkwQUFDQURLQUlFUVJCcVFRVjFRY0ExYWkwQUFHcEJBV3BCQVhZNkFBRWdBU0FMS0FJSUloQWdCU0FDSUFacUlnUkJCSFJxSUFBZ0Ntb2lCV3NnQkNBRmEwRUNkR3BxUVlBRWFrRUtkVUhBTldvdEFBQWdBeWdDQ0VFUWFrRUZkVUhBTldvdEFBQnFRUUZxUVFGMk9nQUNJQUVnQ3lnQ0RDSVRJQUFnQmlBS2FpSUVRUVIwYWlBQ0lCQnFJZ0JySUFRZ0FHdEJBblJxYWtHQUJHcEJDblZCd0RWcUxRQUFJQU1vQWd4QkVHcEJCWFZCd0RWcUxRQUFha0VCYWtFQmRqb0FBeUFCUVFScUlRRWdBMEVRYWlFSUlBdEJFR29oQkNBQ0lRd2dCaUVKSUFvaEJTQVFJUUFnRXlFQ0lBMUJBV3NpRFEwQUN5QUJJQTVxSVFFZ0EwRWthaUVJSUF0QkpHb2hCQ0FIUVFGcklnY05BQXNnRDBHQURtb2tBQXZnQndFTmZ5TUFRWUFPYXlJUkpBQWdCa0VGYWlFSkFrQUNRQ0FDUVFCSURRQWdBaUFKYWlBRVN3MEFJQU5CQUVnTkFDQUhRUVZxSWc0Z0Eyb2dCVXNOQUNBRUlRa2dBeUVLREFFTElBQWdFVUhBQ21vaUFDQUNJQU1nQkNBRklBa2dCMEVGYWlJT0lBa1FDVUVBSVFJTElBNEVRQ0FKSUFacklSTWdCa0VDZGlFU0lBQWdDU0FLYkNBQ2FtcEJCV29oQWlBUklRQURRQ0FDUVFGckxRQUFJUWtnQWtFQ2F5MEFBQ0VESUFKQkEyc3RBQUFoQlNBQ1FRUnJMUUFBSVFvZ0FrRUZheTBBQUNFTElCSWhEUU5BSUFBZ0FpMEFBQ0lFSUFzZ0F5QUZhaUlNUVFSMGFpQUpJQXBxSWd0cklBd2dDMnRCQW5ScWFqWUNBQ0FBSUFJdEFBRWlEQ0FLSUFNZ0NXb2lDMEVFZEdvZ0JDQUZhaUlLYTJvZ0N5QUthMEVDZEdvMkFnUWdBQ0FDTFFBQ0lnOGdCU0FFSUFscUlnVkJCSFJxSUFNZ0RHb2lDbXRxSUFVZ0NtdEJBblJxTmdJSUlBQWdBaTBBQXlJVUlBTWdCQ0FNYWlJRFFRUjBhaUFKSUE5cUlnVnJhaUFESUFWclFRSjBhallDRENBQVFSQnFJUUFnQWtFRWFpRUNJQWtoQ3lBRUlRb2dEQ0VGSUE4aEF5QVVJUWtnRFVFQmF5SU5EUUFMSUFJZ0Uyb2hBaUFPUVFGcklnNE5BQXNMSUJFZ0JrRUNkQ0lFYWlJSklBWkJGR3hxSVFJZ0NTQUlRUUpxSUFac1FRSjBhaUVBSUFkQkFuWWhDRUhBQUNBR2F5RVVRUUFnQm1zaURrRURkQ0VUSUFaQkEzUWhCU0FHUVFOc1FRSjBJUWNEUUNBR0lRTURRQ0FCSUFVZ0NXb29BZ0FpQ2lBQ0lBVnFLQUlBSUFJZ0JHb29BZ0FpRUNBQ0lCTnFLQUlBSWd4cUlndHJJQXRCQW5ScmFpQUNLQUlBSWcwZ0FpQU9RUUowSWc5cUtBSUFJZ3RxUVJSc2FrR0FCR3BCQ25WQndEVnFMUUFBSUFBZ0JXb29BZ0JCRUdwQkJYVkJ3RFZxTFFBQWFrRUJha0VCZGpvQU1DQUJJQVFnQ1dvb0FnQWlFaUFRSUFzZ0RHb2lGVUVFZEdvZ0NpQU5haUlRYXlBVklCQnJRUUowYW1wQmdBUnFRUXAxUWNBMWFpMEFBQ0FBSUFScUtBSUFRUkJxUVFWMVFjQTFhaTBBQUdwQkFXcEJBWFk2QUNBZ0FTQUpLQUlBSWhBZ0RTQUtJQXhxSWhWQkJIUnFJQXNnRW1vaURXc2dGU0FOYTBFQ2RHcHFRWUFFYWtFS2RVSEFOV290QUFBZ0FDZ0NBRUVRYWtFRmRVSEFOV290QUFCcVFRRnFRUUYyT2dBUUlBRWdDU0FQYWlnQ0FDQUxJQW9nRW1vaUNrRUVkR29nRENBUWFpSU1heUFLSUF4clFRSjBhbXBCZ0FScVFRcDFRY0ExYWkwQUFDQUFJQTlxS0FJQVFSQnFRUVYxUWNBMWFpMEFBR3BCQVdwQkFYWTZBQUFnQUVFRWFpRUFJQWxCQkdvaENTQUJRUUZxSVFFZ0FrRUVhaUVDSUFOQkFXc2lBdzBBQ3lBQklCUnFJUUVnQUNBSGFpRUFJQUlnQjJvaEFpQUhJQWxxSVFrZ0NFRUJheUlJRFFBTElCRkJnQTVxSkFBTHBnUUJDWDhqQUVIQUEyc2lDeVFBSUFaQkJXb2hDUUpBQWtBZ0FrRUFTQTBBSUFJZ0NXb2dCRXNOQUNBRFFRQklEUUFnQXlBSGFpQUZTdzBBSUFRaENTQURJUW9NQVFzZ0FDQUxJQUlnQXlBRUlBVWdDU0FISUFrUUNTQUxJUUJCQUNFQ0MwRVFJQVpySVE0Z0NTQUdheUVQSUFaQkFuWWhFQ0FBSUFrZ0Ntd2dBbXBxUVFWcUlRQURRQ0FBUVFGckxRQUFJUWtnQUVFQ2F5MEFBQ0VDSUFCQkEyc3RBQUFoQXlBQVFRUnJMUUFBSVFvZ0FFRUZheTBBQUNFR0lCQWhEQU5BSUFFZ0FDMEFBQ0lFSUFZZ0FpQURhaUlGUVFSMGFpQUpJQXBxSWdacklBVWdCbXRCQW5ScWFrRVFha0VGZFVIQU5Xb3RBQUFnQWlBRElBZ2Jha0VCYWtFQmRqb0FBQ0FCSUFBdEFBRWlCU0FLSUFJZ0NXb2lCa0VFZEdvZ0F5QUVhaUlLYTJvZ0JpQUthMEVDZEdwQkVHcEJCWFZCd0RWcUxRQUFJQWtnQWlBSUcycEJBV3BCQVhZNkFBRWdBU0FBTFFBQ0lnMGdBeUFFSUFscUlnWkJCSFJxSUFJZ0JXb2lBMnRxSUFZZ0EydEJBblJxUVJCcVFRVjFRY0ExYWkwQUFDQUVJQWtnQ0J0cVFRRnFRUUYyT2dBQ0lBRWdBQzBBQXlJUklBSWdCQ0FGYWlJRFFRUjBhaUFKSUExcUlnSnJhaUFESUFKclFRSjBha0VRYWtFRmRVSEFOV290QUFBZ0JTQUVJQWdiYWtFQmFrRUJkam9BQXlBQlFRUnFJUUVnQUVFRWFpRUFJQWtoQmlBRUlRb2dCU0VESUEwaEFpQVJJUWtnREVFQmF5SU1EUUFMSUFFZ0Rtb2hBU0FBSUE5cUlRQWdCMEVCYXlJSERRQUxJQXRCd0FOcUpBQUx6UVFCREg4akFFSEFBMnNpRHlRQUFrQUNRQ0FDUVFCSURRQWdBaUFHYWlBRVN3MEFJQU5CQUVnTkFDQURJQWRxUVFWcUlBVkxEUUFnQXlFSkRBRUxJQUFnRHlBQ0lBTWdCQ0FGSUFZZ0IwRUZhaUFHRUFrZ0R5RUFJQVloQkVFQUlRSUxJQUFnQkNBSmJDQUNhbW9nQkdvaUFDQUVRUVZzYWlFQ0lBQWdCQ0FJUVFKcWJHb2hBeUFIUVFKMklSRkJ3QUFnQm1zaEV5QUVRUUYwSVFjZ0JFRUNkQ0FHYXlFSVFRQWdCR3NpQ1VFQmRDRVVBMEFnQmlFRkEwQWdBU0FBSUFkcUxRQUFJZ29nQWlBSGFpMEFBQ0FDSUFScUxRQUFJZ3NnQWlBVWFpMEFBQ0lNYWlJTmF5QU5RUUowYTJvZ0FpMEFBQ0lPSUFJZ0NXb3RBQUFpRFdwQkZHeHFRUkJxUVFWMVFjQTFhaTBBQUNBRElBZHFMUUFBYWtFQmFrRUJkam9BTUNBQklBQWdCR290QUFBaUVpQUxJQXdnRFdvaUVFRUVkR29nQ2lBT2FpSUxheUFRSUF0clFRSjBhbXBCRUdwQkJYVkJ3RFZxTFFBQUlBTWdCR290QUFCcVFRRnFRUUYyT2dBZ0lBRWdBQzBBQUNJTElBNGdDaUFNYWlJUVFRUjBhaUFOSUJKcUlnNXJJQkFnRG10QkFuUnFha0VRYWtFRmRVSEFOV290QUFBZ0F5MEFBR3BCQVdwQkFYWTZBQkFnQVNBQUlBbHFMUUFBSUEwZ0NpQVNhaUlLUVFSMGFpQUxJQXhxSWd4cklBb2dER3RCQW5ScWFrRVFha0VGZFVIQU5Xb3RBQUFnQXlBSmFpMEFBR3BCQVdwQkFYWTZBQUFnQTBFQmFpRURJQUJCQVdvaEFDQUJRUUZxSVFFZ0FrRUJhaUVDSUFWQkFXc2lCUTBBQ3lBQklCTnFJUUVnQXlBSWFpRURJQUlnQ0dvaEFpQUFJQWhxSVFBZ0VVRUJheUlSRFFBTElBOUJ3QU5xSkFBTDZnWUJDSDhDUUNBQUtBSUFJZ0VvQWhSRkRRQWdBVUVBTmdJVUlBRW9BaGdOQUNBQUlBQW9BaXhCQVdzMkFpd0xBa0FnQVNnQ1BFVU5BQ0FCUVFBMkFqd2dBVUZBYXlnQ0FBMEFJQUFnQUNnQ0xFRUJhellDTEFzQ1FDQUJLQUprUlEwQUlBRkJBRFlDWkNBQktBSm9EUUFnQUNBQUtBSXNRUUZyTmdJc0N3SkFJQUVvQW93QlJRMEFJQUZCQURZQ2pBRWdBU2dDa0FFTkFDQUFJQUFvQWl4QkFXczJBaXdMQWtBZ0FTZ0N0QUZGRFFBZ0FVRUFOZ0swQVNBQktBSzRBUTBBSUFBZ0FDZ0NMRUVCYXpZQ0xBc0NRQ0FCS0FMY0FVVU5BQ0FCUVFBMkF0d0JJQUVvQXVBQkRRQWdBQ0FBS0FJc1FRRnJOZ0lzQ3dKQUlBRW9Bb1FDUlEwQUlBRkJBRFlDaEFJZ0FTZ0NpQUlOQUNBQUlBQW9BaXhCQVdzMkFpd0xBa0FnQVNnQ3JBSkZEUUFnQVVFQU5nS3NBaUFCS0FLd0FnMEFJQUFnQUNnQ0xFRUJhellDTEFzQ1FDQUJLQUxVQWtVTkFDQUJRUUEyQXRRQ0lBRW9BdGdDRFFBZ0FDQUFLQUlzUVFGck5nSXNDd0pBSUFFb0F2d0NSUTBBSUFGQkFEWUMvQUlnQVNnQ2dBTU5BQ0FBSUFBb0FpeEJBV3MyQWl3TEFrQWdBU2dDcEFORkRRQWdBVUVBTmdLa0F5QUJLQUtvQXcwQUlBQWdBQ2dDTEVFQmF6WUNMQXNDUUNBQktBTE1BMFVOQUNBQlFRQTJBc3dESUFFb0F0QUREUUFnQUNBQUtBSXNRUUZyTmdJc0N3SkFJQUVvQXZRRFJRMEFJQUZCQURZQzlBTWdBU2dDK0FNTkFDQUFJQUFvQWl4QkFXczJBaXdMQWtBZ0FTZ0NuQVJGRFFBZ0FVRUFOZ0tjQkNBQktBS2dCQTBBSUFBZ0FDZ0NMRUVCYXpZQ0xBc0NRQ0FCS0FMRUJFVU5BQ0FCUVFBMkFzUUVJQUVvQXNnRURRQWdBQ0FBS0FJc1FRRnJOZ0lzQ3dKQUlBRW9BdXdFUlEwQUlBRkJBRFlDN0FRZ0FTZ0M4QVFOQUNBQUlBQW9BaXhCQVdzMkFpd0xJQUFvQWpnaEJnTkFBa0FnQmcwQUlBQW9BaHdoQjBFQUlRSkIvLy8vL3djaEEwRUFJUVFEUUNBQklBUkJLR3hxSWdVb0FoZ0VRQ0FGSUFJZ0JTZ0NFQ0lGSUFOSUlnZ2JJUUlnQlNBRElBZ2JJUU1MSUFSQkFXb2lCQ0FIVFEwQUN5QUNSUTBBSUFBb0Fnd2dBQ2dDRUNJRVFRUjBhaUlESUFJb0FnQTJBZ0FnQXlBQ0tBSWtOZ0lNSUFNZ0FpZ0NIRFlDQkNBRElBSW9BaUEyQWdnZ0FDQUVRUUZxTmdJUUlBSkJBRFlDR0NBQ0tBSVVEUUVnQUNBQUtBSXNRUUZyTmdJc0RBRUxDeUFBUVFBMkFqQWdBRUwvL3dNM0FpUUwyUThCQ244Z0FpQUFLQUlJSWdrb0FnQkdCRUFnQUVFQU5nSTBJQUFvQWpnaUFrVWhFUUpBSUFGRkJFQWdDU0FETmdJTUlBbEJBRFlDRkNBSklCRTJBaGdnQ1NBRU5nSVFJQWtnQXpZQ0NDQUNEUUVnQUNBQUtBSXNRUUZxTmdJc0RBRUxJQVVFUUNBQVFnQTNBaEFnQUJBYkFrQWdBU2dDQUVVRVFDQUFLQUk0UlEwQkN5QUFRZ0EzQWhBTElBQW9BZ2dpQWtFRFFRSWdBU2dDQkNJQkd6WUNGQ0FBUVFCQi8vOERJQUViTmdJa0lBSWdFVFlDR0NBQ1FRQTJBaEFnQWtJQU53SUlJQUJDZ1lDQWdCQTNBaWdNQVFzQ1FBSkFJQUVvQWdnRVFFRUFJUWtEUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQUVnQ1VFVWJHb2lBaWdDREVFQmF3NEdBQUVDQXdRRkNRc2dBQ2dDR0NJS1JRMElJQU1nQWlnQ0VHc2hDeUFBS0FJQUlReEJBQ0VDQTBBQ1FDQU1JQUpCS0d4cUlnZ29BaFJCQVd0QkFVMEVRQ0FJS0FJSUlBdEdEUUVMSUFKQkFXb2lBaUFLUncwQkRBb0xDeUFDUVFCSURRZ2dDRUVBTmdJVUlBQWdBQ2dDS0VFQmF6WUNLQ0FJS0FJWURRVWdBQ0FBS0FJc1FRRnJOZ0lzSUFsQkFXb2hDUXdHQ3lBQUtBSVlJZ3BGRFFjZ0FpZ0NGQ0VMSUFBb0FnQWhERUVBSVFJRFFBSkFJQXdnQWtFb2JHb2lDQ2dDRkVFRFJnUkFJQWdvQWdnZ0MwWU5BUXNnQWtFQmFpSUNJQXBIRFFFTUNRc0xJQUpCQUVnTkJ5QUlRUUEyQWhRZ0FDQUFLQUlvUVFGck5nSW9JQWdvQWhnTkJDQUFJQUFvQWl4QkFXczJBaXdnQ1VFQmFpRUpEQVVMSUFBb0FpUWlDRUgvL3dOR0RRWWdDQ0FDS0FJWUlndEpEUVlnQUNnQ0dDSUlSUTBHSUFJb0FoQWhEeUFBS0FJQUlReEJBQ0VDQTBBQ1FBSkFJQXdnQWtFb2JHb2lDaWdDRkVFRFJ3MEFJQW9vQWdnZ0MwY05BQ0FLUVFBMkFoUWdBQ0FBS0FJb1FRRnJOZ0lvSUFvb0FoZ05BU0FBSUFBb0FpeEJBV3MyQWl3TUFRc2dBa0VCYWlJQ0lBaEhEUUVMQ3lBSVFRRWdDRUVCU3hzaENpQURJQTlySVE5QkFDRUNBMEFDUUNBTUlBSkJLR3hxSWdnb0FoUWlEVUVCYTBFQlRRUkFJQWdvQWdnZ0QwWU5BUXNnQWtFQmFpSUNJQXBIRFFFTUNBc0xJQUpCQUVnTkJpQU5RUUpKRFFZZ0NFRUROZ0lVSUFnZ0N6WUNDQ0FKUVFGcUlRa01CQXNnQUNBQ0tBSWNJZ28yQWlRZ0FDZ0NHQ0lMUlEwQ0lBQW9BZ0FoREVFQUlRSWdDa0gvL3dOR0JFQURRQUpBSUF3Z0FrRW9iR29pQ0NnQ0ZFRURSdzBBSUFoQkFEWUNGQ0FBSUFBb0FpaEJBV3MyQWlnZ0NDZ0NHQTBBSUFBZ0FDZ0NMRUVCYXpZQ0xBc2dBa0VCYWlJQ0lBdEhEUUFNQkFzQUN3TkFBa0FnRENBQ1FTaHNhaUlJS0FJVVFRTkhEUUFnQ0NnQ0NDQUtUUTBBSUFoQkFEWUNGQ0FBSUFBb0FpaEJBV3MyQWlnZ0NDZ0NHQTBBSUFBZ0FDZ0NMRUVCYXpZQ0xBc2dBa0VCYWlJQ0lBdEhEUUFMREFJTElBQVFHeUFBUVFFMkFqUkJBQ0VESUFsQkFXb2hDUXdDQ3lBQUtBSWtJZ2hCLy84RFJnMERJQWdnQWlnQ0dDSUtTUTBEQWtBZ0FDZ0NHQ0lMUlEwQUlBQW9BZ0FoREVFQUlRSURRQUpBSUF3Z0FrRW9iR29pQ0NnQ0ZFRURSdzBBSUFnb0FnZ2dDa2NOQUNBSVFRQTJBaFFnQUNBQUtBSW9RUUZyTmdJb0lBZ29BaGdOQWlBQUlBQW9BaXhCQVdzMkFpd01BZ3NnQWtFQmFpSUNJQXRIRFFBTEN5QUFLQUlvSWdnZ0MwOE5BeUFBS0FJSUlnSkJBellDRkNBQ0lBUTJBaEFnQWlBS05nSUlJQUlnQXpZQ0RDQUNJQUFvQWpoRk5nSVlRUUVoRGlBQUlBaEJBV28yQWlnZ0FDQUFLQUlzUVFGcU5nSXNDeUFKUVFGcUlRa01BQXNBQ3lBQUtBSW9JZ2dnQUNnQ0dDSUxTUTBCSUFoRkJFQkJBQ0VJREFJTElBQW9BZ0FoQ2tFQUlRbEJmeUVCQWtBZ0NFRUJSd1JBSUFoQkFYRWhEMEVBSVFJZ0NFRitjU0lPSVF3RFFDQUtJQUpCS0d4cUlnMG9BaFJCQVd0QkFVMEVRQ0FOS0FJSUlnMGdDU0FCUVg5R0lBa2dEVXB5SWcwYklRa2dBaUFCSUEwYklRRUxJQW9nQWtFQmNpSU5RU2hzYWlJUUtBSVVRUUZyUVFKSkJFQWdFQ2dDQ0NJUUlBa2dBVUYvUmlBSklCQktjaUlRR3lFSklBMGdBU0FRR3lFQkN5QUNRUUpxSVFJZ0RFRUNheUlNRFFBTElBOUZEUUVMSUFvZ0RrRW9iR29pQWlnQ0ZFRUJhMEVCU3cwQUlBNGdEaUFCSUFGQmYwWWJJQUlvQWdnZ0NVZ2JJUUVMSUFGQkFFZ05BU0FLSUFGQktHeHFJZ0ZCQURZQ0ZDQUFJQWhCQVdzaUNEWUNLQ0FCS0FJWURRRWdBQ0FBS0FJc1FRRnJOZ0lzREFFTElBNE5BU0FBS0FJWUlRc2dBQ2dDS0NFSUN5QUlJQXRQRFFBZ0FDZ0NDQ0lCSUJFMkFoZ2dBVUVDTmdJVUlBRWdCRFlDRUNBQklBTTJBZ2dnQVNBRE5nSU1JQUFnQ0VFQmFqWUNLQ0FBSUFBb0FpeEJBV28yQWl3TElBQW9BZ2dpQVNBSE5nSWdJQUVnQmpZQ0hDQUJJQVUyQWlRQ1FDQUFLQUk0UlFSQUlBQW9BaXdpQVNBQUtBSWNJZ05ORFFFZ0FDZ0NBQ0VHQTBCQi8vLy8vd2NoQlVFQUlRbEJBQ0VDQTBBZ0JpQUNRU2hzYWlJRUtBSVlCRUFnQkNBSklBUW9BaEFpQkNBRlNDSUhHeUVKSUFRZ0JTQUhHeUVGQ3lBQ1FRRnFJZ0lnQTAwTkFBc0NRQ0FKUlEwQUlBQW9BZ3dnQUNnQ0VDSUVRUVIwYWlJQ0lBa29BZ0EyQWdBZ0FpQUpLQUlrTmdJTUlBSWdDU2dDSERZQ0JDQUNJQWtvQWlBMkFnZ2dBQ0FFUVFGcU5nSVFJQWxCQURZQ0dDQUpLQUlVRFFBZ0FDQUJRUUZySWdFMkFpd0xJQUVnQTBzTkFBc01BUXNnQVNnQ0FDRUNJQUFvQWd3Z0FDZ0NFQ0lEUVFSMGFpSUJJQVUyQWd3Z0FTQUNOZ0lBSUFFZ0J6WUNDQ0FCSUFZMkFnUWdBQ0FEUVFGcU5nSVFJQUFvQWh3aEF3c2dBQ2dDQUNBRFFRRnFFQjBMQzhjRUFneC9BbjVCQnlFRkl3QkJFR3NpQ3lFTUEwQWdBU0FGU3dSQVFRQWdCV3NoQnlBRklRWURRQ0FBSUFaQktHeHFJZ0lvQWhnaERTQUNLUUlNSVE0Z0FpZ0NDQ0VJSUFJcEFnQWhEeUFDS0FJVUlRa2dEQ0FDS0FJa05nSUlJQXNnQWlrQ0hEY0RBQUpBSUFZaUFpQUZTUTBBSUFsRkJFQWdEVVVOQVFOQUlBQWdBa0VvYkdvaUJDQUhRU2hzYWlJREtBSVVEUUlnQXlnQ0dBMENJQVFnQUNBQ0lBVnJJZ0pCS0d4cUlnTXBBZ0EzQWdBZ0JDQURLUUlnTndJZ0lBUWdBeWtDR0RjQ0dDQUVJQU1wQWhBM0FoQWdCQ0FES1FJSU53SUlJQUlnQlU4TkFBc01BUXNnQ1VFQmEwRUJUUVJBQTBBQ1FDQUFJQUpCS0d4cUlnUWdCMEVvYkdvaUF5Z0NGQ0lLUlEwQUlBcEJBV3RCQVVzTkFDQURLQUlJSUFoT0RRTUxJQVFnQUNBQ0lBVnJJZ0pCS0d4cUlnTXBBZ0EzQWdBZ0JDQURLUUlnTndJZ0lBUWdBeWtDR0RjQ0dDQUVJQU1wQWhBM0FoQWdCQ0FES1FJSU53SUlJQUlnQlU4TkFBd0NDd0FMQTBBZ0FDQUNRU2hzYWlJRUlBZEJLR3hxSWdNb0FoUWlDZ1JBSUFwQkFXdEJBa2tOQWlBREtBSUlJQWhNRFFJTElBUWdBQ0FDSUFWcklnSkJLR3hxSWdNcEFnQTNBZ0FnQkNBREtRSWdOd0lnSUFRZ0F5a0NHRGNDR0NBRUlBTXBBaEEzQWhBZ0JDQURLUUlJTndJSUlBSWdCVThOQUFzTElBQWdBa0VvYkdvaUFpQU5OZ0lZSUFJZ0NUWUNGQ0FDSUE0M0Fnd2dBaUFJTmdJSUlBSWdEemNDQUNBQ0lBc3BBd0EzQWh3Z0FpQU1LQUlJTmdJa0lBWkJBV29pQmlBQlJ3MEFDd3NnQlVFQlN5RUdJQVZCQVhZaEJTQUdEUUFMQzlZTEFRcC9RUUVoQndKQUlBQWdBUkFDRFFBZ0FTQUJLQUlBUVFGcUlnbzJBZ0FnQ2tFZ1N3MEFJQUFvQWdRaEJBSkFJQUFvQWd4QkEzUWlDQ0FBS0FJUUlnWnJJZ05CSUU0RVFDQUVLQUFBSWdKQkdIUWdBa0VJZEVHQWdQd0hjWElnQWtFSWRrR0EvZ054SUFKQkdIWnljaUVDSUFBb0FnZ2lBMFVOQVNBQ0lBTjBJQVF0QUFSQkNDQURhM1p5SVFJTUFRc2dBMEVCU0FSQURBRUxJQVF0QUFBZ0FDZ0NDQ0lKUVJocUlnVjBJUUlnQXlBSmFrRUlheUlEUVFGSURRQURRQ0FFTFFBQklBVkJDR3NpQlhRZ0FuSWhBaUFEUVFoS0lRa2dCRUVCYWlFRUlBTkJDR3NoQXlBSkRRQUxDeUFBSUFaQkJHb2lCVFlDRUNBQUlBVkJCM0VpQXpZQ0NDQUZJQWhMRFFBZ0FDQUFLQUlBSWdrZ0JVRURkbW9pQkRZQ0JDQUJJQUpCSEhZMkFnUUNRQ0FJSUFWcklndEJJRTRFUUNBRUtBQUFJZ0pCR0hRZ0FrRUlkRUdBZ1B3SGNYSWdBa0VJZGtHQS9nTnhJQUpCR0haeWNpRUNJQU5GRFFFZ0FpQURkQ0FFTFFBRVFRZ2dBMnQyY2lFQ0RBRUxJQXRCQVVnRVFFRUFJUUlNQVFzZ0JDMEFBQ0FEUVJoeUlnVjBJUUlnQXlBTGFrRUlheUlEUVFGSURRQURRQ0FFTFFBQklBVkJDR3NpQlhRZ0FuSWhBaUFEUVFoS0lRc2dCRUVCYWlFRUlBTkJDR3NoQXlBTERRQUxDeUFBSUFaQkIzRTJBZ2dnQUNBR1FRaHFJZ1UyQWhBZ0JTQUlTdzBBSUFBZ0NTQUZRUU4yYWlJRU5nSUVJQUVnQWtFY2RqWUNDQ0FLQkVCQkFDRUlBMEFnQUNBQklBaEJBblJxSWdVaUFrRU1haEFDQkVCQkFROExJQUlvQWd3aUJFRi9SZ1JBUVFFUEN5QUNJQVJCQVdvaUJEWUNEQ0FDSUFRZ0FTZ0NCRUVHYW5RMkFnd2dBQ0FGUVl3QmFoQUNEUUlnQlNnQ2pBRWlBa0YvUmcwQ0lBVWdBa0VCYWlJQ05nS01BU0FGSUFJZ0FTZ0NDRUVFYW5RMkFvd0JJQUFvQWdRaEJBSkFJQUFvQWd4QkEzUWlDU0FBS0FJUUlnWnJJZ05CSUU0RVFDQUVLQUFBSWdKQkdIUWdBa0VJZEVHQWdQd0hjWElnQWtFSWRrR0EvZ054SUFKQkdIWnljaUVDSUFBb0FnZ2lBMFVOQVNBQ0lBTjBJQVF0QUFSQkNDQURhM1p5SVFJTUFRc2dBMEVCU0FSQVFRQWhBZ3dCQ3lBRUxRQUFJQUFvQWdnaUNrRVlhaUlIZENFQ0lBTWdDbXBCQ0dzaUEwRUJTQTBBQTBBZ0JDMEFBU0FIUVFocklnZDBJQUp5SVFJZ0EwRUlTaUVLSUFSQkFXb2hCQ0FEUVFocklRTWdDZzBBQ3d0QkFTRUhJQUFnQmtFQmFpSUVOZ0lRSUFBZ0JFRUhjVFlDQ0NBRUlBbExEUUlnQUNBQUtBSUFJZ2tnQkVFRGRtb2lCRFlDQkNBRklBSkJIM1kyQW93Q0lBaEJBV29pQ0NBQktBSUFTUTBBQ3lBQUtBSU1RUU4wSVFnZ0FDZ0NFQ0VGQ3dKQUlBZ2dCV3NpQTBFZ1RnUkFJQVFvQUFBaUFrRVlkQ0FDUVFoMFFZQ0EvQWR4Y2lBQ1FRaDJRWUQrQTNFZ0FrRVlkbkp5SVFJZ0FDZ0NDQ0lEUlEwQklBSWdBM1FnQkMwQUJFRUlJQU5yZG5JaEFnd0JDeUFEUVFGSUJFQkJBQ0VDREFFTElBUXRBQUFnQUNnQ0NDSUdRUmhxSWdkMElRSWdBeUFHYWtFSWF5SURRUUZJRFFBRFFDQUVMUUFCSUFkQkNHc2lCM1FnQW5JaEFpQURRUWhLSVFZZ0JFRUJhaUVFSUFOQkNHc2hBeUFHRFFBTEN5QUFJQVZCQldvaUJqWUNFQ0FBSUFaQkIzRWlBellDQ0VFQklRY2dCaUFJU3cwQUlBQWdDU0FHUVFOMmFpSUVOZ0lFSUFFZ0FrRWJka0VCYWpZQ2pBTUNRQ0FJSUFacklnWkJJRTRFUUNBRUtBQUFJZ0pCR0hRZ0FrRUlkRUdBZ1B3SGNYSWdBa0VJZGtHQS9nTnhJQUpCR0haeWNpRUNJQU5GRFFFZ0FpQURkQ0FFTFFBRVFRZ2dBMnQyY2lFQ0RBRUxJQVpCQVVnRVFFRUFJUUlNQVFzZ0JDMEFBQ0FEUVJoeUlnZDBJUUlnQXlBR2FrRUlheUlEUVFGSURRQURRQ0FFTFFBQklBZEJDR3NpQjNRZ0FuSWhBaUFEUVFoS0lRWWdCRUVCYWlFRUlBTkJDR3NoQXlBR0RRQUxDeUFBSUFWQkNtb2lCRFlDRUNBQUlBUkJCM0UyQWdoQkFTRUhJQVFnQ0VzTkFDQUFJQWtnQkVFRGRtbzJBZ1FnQVNBQ1FSdDJRUUZxTmdLUUF5QUFRUVVRRkNJQ1FYOUdEUUFnQVNBQ1FRRnFOZ0tVQXlBQVFRVVFGQ0lBUVg5R0RRQWdBU0FBTmdLWUEwRUFJUWNMSUFjTHFBd0JDbjhDUUNBQlFRUlBCRUJCQUNBRGF5SU1RUUYwSVFzQ1FDQUNLQUlFSWdFZ0FDQURheUlHTFFBQUlnY2dBQzBBQUNJSWF5SUtJQXBCSDNVaUNtb2dDbk5ORFFBZ0FpZ0NDQ0lGSUFBZ0Myb3RBQUFpQ2lBSGF5SUpJQWxCSDNVaUNXb2dDWE5ORFFBZ0JTQUFJQU5xTFFBQUlnVWdDR3NpQ1NBSlFSOTFJZ2xxSUFselRRMEFJQVlnQlNBSGFpQUtRUUYwYWtFQ2FrRUNkam9BQUNBQUlBZ2dCVUVCZEdvZ0NtcEJBbXBCQW5ZNkFBQWdBaWdDQkNFQkN3SkFJQUJCQVdvaUJ5QU1haUlKTFFBQUlnZ2dBQzBBQVNJS2F5SUZJQVZCSDNVaUJXb2dCWE1nQVU4TkFDQUNLQUlJSWdZZ0J5QUxhaTBBQUNJRklBaHJJZ1FnQkVFZmRTSUVhaUFFYzAwTkFDQUdJQU1nQjJvdEFBQWlCaUFLYXlJRUlBUkJIM1VpQkdvZ0JITk5EUUFnQ1NBR0lBaHFJQVZCQVhScVFRSnFRUUoyT2dBQUlBY2dDaUFHUVFGMGFpQUZha0VDYWtFQ2Rqb0FBQ0FDS0FJRUlRRUxBa0FnQUVFQ2FpSUhJQXhxSWdrdEFBQWlDQ0FBTFFBQ0lncHJJZ1VnQlVFZmRTSUZhaUFGY3lBQlR3MEFJQUlvQWdnaUJpQUhJQXRxTFFBQUlnVWdDR3NpQkNBRVFSOTFJZ1JxSUFSelRRMEFJQVlnQXlBSGFpMEFBQ0lHSUFwcklnUWdCRUVmZFNJRWFpQUVjMDBOQUNBSklBWWdDR29nQlVFQmRHcEJBbXBCQW5ZNkFBQWdCeUFLSUFaQkFYUnFJQVZxUVFKcVFRSjJPZ0FBSUFJb0FnUWhBUXNDUUNBQVFRTnFJZ2NnREdvaUNTMEFBQ0lJSUFBdEFBTWlDbXNpQlNBRlFSOTFJZ1ZxSUFWeklBRlBEUUFnQWlnQ0NDSUdJQWNnQzJvdEFBQWlCU0FJYXlJRUlBUkJIM1VpQkdvZ0JITk5EUUFnQmlBRElBZHFMUUFBSWdZZ0Ntc2lCQ0FFUVI5MUlnUnFJQVJ6VFEwQUlBa2dCaUFJYWlBRlFRRjBha0VDYWtFQ2Rqb0FBQ0FISUFvZ0JrRUJkR29nQldwQkFtcEJBblk2QUFBZ0FpZ0NCQ0VCQ3dKQUlBQkJCR29pQnlBTWFpSUpMUUFBSWdnZ0FDMEFCQ0lLYXlJRklBVkJIM1VpQldvZ0JYTWdBVThOQUNBQ0tBSUlJZ1lnQnlBTGFpMEFBQ0lGSUFocklnUWdCRUVmZFNJRWFpQUVjMDBOQUNBR0lBTWdCMm90QUFBaUJpQUtheUlFSUFSQkgzVWlCR29nQkhOTkRRQWdDU0FHSUFocUlBVkJBWFJxUVFKcVFRSjJPZ0FBSUFjZ0NpQUdRUUYwYWlBRmFrRUNha0VDZGpvQUFDQUNLQUlFSVFFTEFrQWdBRUVGYWlJSElBeHFJZ2t0QUFBaUNDQUFMUUFGSWdwcklnVWdCVUVmZFNJRmFpQUZjeUFCVHcwQUlBSW9BZ2dpQmlBSElBdHFMUUFBSWdVZ0NHc2lCQ0FFUVI5MUlnUnFJQVJ6VFEwQUlBWWdBeUFIYWkwQUFDSUdJQXBySWdRZ0JFRWZkU0lFYWlBRWMwME5BQ0FKSUFZZ0NHb2dCVUVCZEdwQkFtcEJBblk2QUFBZ0J5QUtJQVpCQVhScUlBVnFRUUpxUVFKMk9nQUFJQUlvQWdRaEFRc0NRQ0FBUVFacUlnY2dER29pQ1MwQUFDSUlJQUF0QUFZaUNtc2lCU0FGUVI5MUlnVnFJQVZ6SUFGUERRQWdBaWdDQ0NJR0lBY2dDMm90QUFBaUJTQUlheUlFSUFSQkgzVWlCR29nQkhOTkRRQWdCaUFESUFkcUxRQUFJZ1lnQ21zaUJDQUVRUjkxSWdScUlBUnpUUTBBSUFrZ0JpQUlhaUFGUVFGMGFrRUNha0VDZGpvQUFDQUhJQW9nQmtFQmRHb2dCV3BCQW1wQkFuWTZBQUFnQWlnQ0JDRUJDeUFCSUFCQkIyb2lBU0FNYWlJSExRQUFJZ3dnQUMwQUJ5SUFheUlJSUFoQkgzVWlDR29nQ0hOTkRRRWdBaWdDQ0NJSUlBRWdDMm90QUFBaUFpQU1heUlMSUF0QkgzVWlDMm9nQzNOTkRRRWdBU0FEYWkwQUFDSURJQUJySWdzZ0MwRWZkU0lMYWlBTGN5QUlUdzBCSUFjZ0F5QU1haUFDUVFGMGFrRUNha0VDZGpvQUFDQUJJQUFnQTBFQmRHb2dBbXBCQW1wQkFuWTZBQUFQQzBFQUlBTnJJZ3BCQVhRaEJTQUJJQUlvQWdCcVFRRnJMUUFBSWdGQmYzTWhCeUFCUVFGcUlRaEJDQ0VCQTBBQ1FDQUNLQUlFSUFBZ0Ntb2lCaTBBQUNJTElBQXRBQUFpREdzaUNTQUpRUjkxSWdscUlBbHpUUTBBSUFJb0FnZ2lDU0FBSUFWcUxRQUFJZ1FnQzJzaURTQU5RUjkxSWcxcUlBMXpUUTBBSUFrZ0FDQURhaTBBQUNJSklBeHJJZzBnRFVFZmRTSU5haUFOYzAwTkFDQUdJQXNnQnlBSUlBd2dDMnRCQW5RZ0NXc2dCR3BCQkdwQkEzVWlDeUFJSUF0SUd5QUhJQXRLR3lJTGFrSEFOV290QUFBNkFBQWdBQ0FNSUF0clFjQTFhaTBBQURvQUFBc2dBRUVCYWlFQUlBRkJBV3NpQVEwQUN3c0xCZ0FnQUJBRUN3Y0FRY1FhRUFnTHlBTUJBMzhEUUNBQUlBSkJBblJxSWdGQkZHb29BZ0FpQXdSQUlBTW9BaWdRQkNBQktBSVVRUUEyQWlnZ0FTZ0NGQ2dDVkJBRUlBRW9BaFJCQURZQ1ZDQUJLQUlVRUFRZ0FVRUFOZ0lVQ3lBQ1FRRnFJZ0pCSUVjTkFBdEJBQ0VDQTBBZ0FDQUNRUUowYWlJQlFaUUJhaWdDQUNJREJFQWdBeWdDRkJBRUlBRW9BcFFCUVFBMkFoUWdBU2dDbEFFb0FoZ1FCQ0FCS0FLVUFVRUFOZ0lZSUFFb0FwUUJLQUljRUFRZ0FTZ0NsQUZCQURZQ0hDQUJLQUtVQVNnQ0xCQUVJQUVvQXBRQlFRQTJBaXdnQVNnQ2xBRVFCQ0FCUVFBMkFwUUJDeUFDUVFGcUlnSkJnQUpIRFFBTElBQW9BckFhRUFSQkFDRUNJQUJCQURZQ3NCb2dBQ2dDdkFrUUJDQUFRUUEyQXJ3SklBQW9BcFFKRUFRZ0FFRUFOZ0tVQ1NBQUtBSzhHaUlEQkVBZ0F4QUVJQUJCQURZQ3ZCb0xBa0FnQUNnQ3hBa2lBMFVOQUNBQVFlQUphaWdDQUVGL1JnUkFJQU1oQWd3QkMwRUFJUUVnQXlFQ0EwQWdBaUFCUVNoc0lnTnFLQUlFRUFRZ0FDZ0N4QWtpQWlBRGFrRUFOZ0lFSUFGQkFXb2lBU0FBS0FMZ0NVRUJha2tOQUFzTElBSVFCQ0FBUVFBMkFzUUpJQUJCeUFscUlnTW9BZ0FRQkNBRFFRQTJBZ0FnQUVIUUNXb2lBQ2dDQUJBRUlBQkJBRFlDQUF2TjN3UUNhSDhDZmlNQVFmQUJheUlMSkFBZ0FFSHNER29oVkNBQVFiUVNhaUZWSUFCQjJBcHFJVllnQUVIRUNXb2hPQ0FBUWJnS2FpRXJJQUJCbkJwcUlUd2dDMEcwQVdvaFZ5QUxRYkFCYWlGWUlBdEJyQUZxSVZrZ0MwR29BV29oV2lBTFFaUUJhaUZiSUF0QmpBRnFJVndnQzBId0FHb2hYU0FMUVRCcUlWNGdDMEVnYWtFRWNpRmZBMEFnQVNBeWFpRUJJQUlnTW1zaEFnSkFBa0FDUUFKQUlBQW9BcEFhUlEwQUlBQW9BcFFhSUFGSERRQWdDeUE4S0FJUU5nSVlJQXNnUENrQ0NEY0RFQ0E4S1FJQUlXNUJBQ0VLSUF0QkFEWUNHQ0FMUVFBMkFoQWdDeUJ1TndNSUlBc2diajRDRENBQUtBS1lHaUV5SUFzb0FoUWhCZ3dCQ3dKQUFrQWdBa0VFU1EwQUlBRXRBQUFOQUNBQkxRQUJEUUFnQVMwQUFpSU5RUUZMRFFCQkF5RUhJQUZCQTJvaENVRUNJVElEUUNBSklRWUNRQ0FOUWY4QmNTSUlSUVJBSURKQkFXb2hNZ3dCQzBFQUlRa2dDRUVCUndSQVFRQWhNZ3dCQ3lBeVFRRkxJUWhCQUNFeUlBaEZEUUFnQnlFeVFRQWhHRUVBSVJJRFFFRUJJQmdnQ1NBR0xRQUFJZ3BGYWlJSVFRSkdHeUFZSUFwQkEwWWJJUmdDUUNBS1FRRkhEUUFnQ0VFQ1NRMEFJQXNnTWlBSElBaHFheUlHTmdJVVFRQWdDRUVEYXlJSklBZ2dDVWtiSVFrTUJRdEJBQ0FJSUFvYklRbEJBU0FTSUFoQkFrc2JJQklnQ2hzaEVpQUdRUUZxSVFZZ01rRUJhaUl5SUFKSERRQUxJQXNnQWlBSElBbHFheUlHTmdJVURBTUxJQVpCQVdvaENTQUdMUUFBSVExQkF5RU1RUUFoQ2lBSFFRRnFJZ2NnQWtjTkFBc2dBaUV5REFRTElBc2dBallDRkVFQklSaEJBQ0VISUFJaEJrRUFJUWxCQUNFU0MwRUFJUW9nQzBFQU5nSVlJQXRCQURZQ0VDQUxJQUVnQjJvaURUWUNEQ0FMSUEwMkFnZ2dCeUFKYWlBR2FpRXlRUU1oRENBU0RRSWdHQVJBSUEwaEJ5QUxJQVlFZndOQUlBWkJBV3NoQmlBSExRQUFJUWdDZnlBS1FRSkdCRUFnQ0VFRFJnUkFJQVpGQkVCQkFDRUtEQWtMUVFBaUNpQUhMUUFCUVFOTkRRSWFEQWdMSUFoQkEwa05CZ3NnRFNBSU9nQUFJQTFCQVdvaERVRUFJQXBCQVdvZ0NCc0xJUW9nQjBFQmFpRUhJQVlOQUFzZ0N5Z0NHQ0VLSUFzb0FoUUZRUUFMSUEwZ0IydHFJZ1kyQWhRTElEd2dDeWtEQ0RjQ0FDQThJQXNvQWhnMkFoQWdQQ0FMS1FNUU53SUlJQUFnQVRZQ2xCb2dBQ0F5TmdLWUdnc2dBRUVBTmdLUUdnSkFJQVpCQTNRaUdDQUtheUlHUVFGclFSNUxEUUFnQmlBTEtBSVFha0VJYXlJR1FRRklEUUFEUUNBR1FRaEtJUWNnQmtFSWF5RUdJQWNOQUFzTElBc2dDa0VCYWlJSE5nSVlJQXNnQjBFSGNTSUlOZ0lRSUFjZ0dFc0VRRUVESVF4QkFDRUtEQUlMSUFzZ0N5Z0NDQ0lPSUFkQkEzWnFJZ1kyQWd3Q1FDQVlJQWRySWcxQklFNEVRQ0FHS0FBQUlnZEJHSFFnQjBFSWRFR0FnUHdIY1hJZ0IwRUlka0dBL2dOeElBZEJHSFp5Y2lFSklBaEZEUUVnQ1NBSWRDQUdMUUFFUVFnZ0NHdDJjaUVKREFFTElBMUJBVWdFUUVFQUlRa01BUXNnQmkwQUFDQUlRUmh5SWd4MElRa2dCaUVISUFnZ0RXcEJDR3NpRFVFQlNBMEFBMEFnQnkwQUFTQU1RUWhySWd4MElBbHlJUWtnRFVFSVNpRUlJQWRCQVdvaEJ5QU5RUWhySVEwZ0NBMEFDd3NnQ3lBS1FRTnFJZ2cyQWhnZ0N5QUlRUWR4SWdjMkFoQkJmeUVTSUFnZ0dFMEVRQ0FMSUE0Z0NFRURkbW9pQmpZQ0RDQUpRUjUySVJJTEFrQWdHQ0FJYXlJSVFTQk9CRUFnQmlnQUFDSUlRUmgwSUFoQkNIUkJnSUQ4QjNGeUlBaEJDSFpCZ1A0RGNTQUlRUmgyY25JaERTQUhSUTBCSUEwZ0IzUWdCaTBBQkVFSUlBZHJkbkloRFF3QkN5QUlRUUZJQkVCQkFDRU5EQUVMSUFZdEFBQWdCMEVZY2lJSmRDRU5JQWNnQ0dwQkNHc2lCMEVCU0EwQUEwQWdCaTBBQVNBSlFRaHJJZ2wwSUExeUlRMGdCMEVJU2lFSUlBWkJBV29oQmlBSFFRaHJJUWNnQ0EwQUN3c2dDeUFLUVFkeE5nSVFJQXNnQ2tFSWFpSUdOZ0lZUVFBaENpQUdJQmhMQkVCQkFDRU1EQUlMSUFzZ0RpQUdRUU4yYWpZQ0RDQU5RUnQySWhwQkFtdEJBMGtFUUVFRElRd01BZ3NDUUNBYVFReExEUUJCQVNBYWRDSUdRY0E4Y1VVRVFDQUdRYUFEY1VVTkFTQVNSUVJBUVFNaERBd0VDeUFhUVFaSERRRkJBeUVNREFNTElCSkZEUUJCQXlFTURBSUxJQnBCQVdzaUUwRUxTd1JBUVFBaERBd0NDd0pBSUJwQkVrc05BQUpBQWtCQkFTQWFkQ0lHUWNEZkgzRkZCRUFnQmtFaWNVVU5BeUFBS0FLMENnUi9JQUJCQURZQ3RBcEJBUVZCQUFzaENpQUxJQXNvQWhnMkF1QUJJQXNnQ3lrRENEY0QwQUVnQ3lBTFFSQnFJaGdwQXdBM0E5Z0JJQXRCMEFGcUlBdEI3QUZxRUFJaUJnMEJJQXRCMEFGcUlBdEI3QUZxRUFJTkJDQUxRZEFCYWlBTFFld0JhaEFDRFFRZ0N5Z0M3QUVpQmtIL0FVc05CQ0FBSUFaQkFuUnFLQUtVQVNJTlJRMENJQUFnRFNnQ0JDSUdRUUowYWlnQ0ZDSUhSUTBDQWtBZ0FDZ0NDQ0lJUVNCR0RRQWdCaUFJUmcwQUlCcEJCVWNOQXdzZ0NpQUtRUUVnRWh0QkFTQUFLQUtZQ2lJR0d5QUdJQkpHR3lFS0FrQUNRQ0FBS0FLVUNrRUZSZ1JBSUJwQkJVY05BUXdDQ3lBYVFRVkhEUUVMUVFFaENnc2dCeWdDRENFR0lBc2dDeWdDR0RZQzRBRWdDeUFZS1FNQU53UFlBU0FMSUFzcEF3ZzNBOUFCSUF0QjBBRnFJQXRCN0FGcUVBSU5CQ0FMUWRBQmFpQUxRZXdCYWhBQ0RRUWdDMEhRQVdvZ0MwSHNBV29RQWcwRVFSOGdCbWNpQ1dzaEp5QUxLQUxVQVNFT0FrQWdDeWdDM0FGQkEzUWlEQ0FMS0FMZ0FTSVVheUlHUVNCT0JFQWdEaWdBQUNJR1FSaDBJQVpCQ0hSQmdJRDhCM0Z5SUFaQkNIWkJnUDREY1NBR1FSaDJjbkloRHlBTEtBTFlBU0lHUlEwQklBOGdCblFnRGkwQUJFRUlJQVpyZG5JaER3d0JDeUFHUVFGSUJFQkJBQ0VQREFFTElBNHRBQUFnQ3lnQzJBRWlFVUVZYWlJSWRDRVBJQVlnRVdwQkNHc2lFVUVCU0EwQUEwQWdEaTBBQVNBSVFRaHJJZ2gwSUE5eUlROGdFVUVJU2lFR0lBNUJBV29oRGlBUlFRaHJJUkVnQmcwQUN3c2dGQ0FuYWlBTVN3MEVJQThnQ1VFQmFuWWlCa0YvUmcwRUlBWWdBQ2dDbkFwSEJFQWdBQ0FHTmdLY0NrRUJJUW9MSUJwQkJVY2lGRVVFUUNBSEtBSU1JUVlnQ3lBTEtBSVlOZ0xnQVNBTElCZ3BBd0EzQTlnQklBc2dDeWtEQ0RjRDBBRWdDMEhRQVdvZ0MwSHNBV29RQWcwRklBdEIwQUZxSUF0QjdBRnFFQUlOQlNBTFFkQUJhaUFMUWV3QmFoQUNEUVZCSHlBR1p5SU1heUVPSUFzb0F0UUJJUkVDUUNBTEtBTGNBVUVEZENJY0lBc29BdUFCSWhkcklnbEJJRTRFUUNBUktBQUFJZ1pCR0hRZ0JrRUlkRUdBZ1B3SGNYSWdCa0VJZGtHQS9nTnhJQVpCR0haeWNpRUlJQXNvQXRnQklnWkZEUUVnQ0NBR2RDQVJMUUFFUVFnZ0JtdDJjaUVJREFFTElBbEJBVWdFUUVFQUlRZ01BUXNnRVMwQUFDQUxLQUxZQVNJblFSaHFJZ1owSVFnZ0NTQW5ha0VJYXlJUFFRRklEUUFEUUNBUkxRQUJJQVpCQ0dzaUJuUWdDSEloQ0NBUFFRaEtJU2NnRVVFQmFpRVJJQTlCQ0dzaER5QW5EUUFMQ3lBTElBNGdGMm9pQmpZQzRBRWdDeUFHUVFkeE5nTFlBU0FHSUJ4TERRVWdDeUFMS0FMUUFTQUdRUU4yYWpZQzFBRWdDQ0FNUVFGcWRrRi9SZzBGSUF0QjBBRnFJQXRCeUFGcUVBSU5CUUpBSUFBb0FwUUtRUVZIQkVBZ0N5Z0N5QUVoRVF3QkN5QUtRUUVnQ3lnQ3lBRWlFU0FBS0FLZ0NrWWJJUW9MSUFBZ0VUWUNvQW9MQWtBQ1FBSkFJQWNvQWhBT0FnQUJBZ3NnQ3lBTEtBSVlOZ0xnQVNBTElBc3BBd2czQTlBQklBc2dHQ2tEQURjRDJBRWdDMEhRQVdvZ0MwSHNBV29RQWcwR0lBdEIwQUZxSUF0QjdBRnFFQUlOQmlBTFFkQUJhaUFMUWV3QmFoQUNEUVpCSHlBSEtBSU1aeUlNYXlFY0lBc29BdFFCSVJFQ1FDQUxLQUxjQVVFRGRDSU9JQXNvQXVBQkloZHJJZ2xCSUU0RVFDQVJLQUFBSWdaQkdIUWdCa0VJZEVHQWdQd0hjWElnQmtFSWRrR0EvZ054SUFaQkdIWnljaUVJSUFzb0F0Z0JJZ1pGRFFFZ0NDQUdkQ0FSTFFBRVFRZ2dCbXQyY2lFSURBRUxJQWxCQVVnRVFFRUFJUWdNQVFzZ0VTMEFBQ0FMS0FMWUFTSW5RUmhxSWdaMElRZ2dDU0FuYWtFSWF5SVBRUUZJRFFBRFFDQVJMUUFCSUFaQkNHc2lCblFnQ0hJaENDQVBRUWhLSVNjZ0VVRUJhaUVSSUE5QkNHc2hEeUFuRFFBTEN5QUxJQmNnSEdvaUJqWUM0QUVnQ3lBR1FRZHhOZ0xZQVNBR0lBNUxEUVlnQ3lBTEtBTFFBU0FHUVFOMmFpSVJOZ0xVQVNBSUlBeEJBV3AyUVg5R0RRWWdGRVVFUUNBTFFkQUJhaUFMUWV3QmFoQUNEUWNnQ3lnQzFBRWhFU0FMS0FMY0FVRURkQ0VPSUFzb0F1QUJJUVlMUVI4Z0J5Z0NGR2NpREdzaEhBSkFJQTRnQm1zaUNVRWdUZ1JBSUJFb0FBQWlDRUVZZENBSVFRaDBRWUNBL0FkeGNpQUlRUWgyUVlEK0EzRWdDRUVZZG5KeUlRZ2dDeWdDMkFFaUNVVU5BU0FJSUFsMElCRXRBQVJCQ0NBSmEzWnlJUWdNQVFzZ0NVRUJTQVJBUVFBaENBd0JDeUFSTFFBQUlBc29BdGdCSWc5QkdHb2lKM1FoQ0NBSklBOXFRUWhySWc5QkFVZ05BQU5BSUJFdEFBRWdKMEVJYXlJbmRDQUljaUVJSUE5QkNFb2hDU0FSUVFGcUlSRWdEMEVJYXlFUElBa05BQXNMSUFZZ0hHb2dEa3NOQmlBSUlBeEJBV3AySWdaQmYwWU5CaUFHSUFBb0FxUUtSd1JBSUFBZ0JqWUNwQXBCQVNFS0N5QU5LQUlJUlEwQklBc2dDeWdDR0RZQzRBRWdDeUFMS1FNSU53UFFBU0FMSUJncEF3QTNBOWdCSUF0QjBBRnFJQXRCekFGcUVBSU5CaUFMUWRBQmFpQUxRY3dCYWhBQ0RRWWdDMEhRQVdvZ0MwSE1BV29RQWcwR1FSOGdCeWdDREdjaUoyc2hDQ0FMS0FMVUFTRU5Ba0FnQ3lnQzNBRkJBM1FpRHlBTEtBTGdBU0lPYXlJR1FTQk9CRUFnRFNnQUFDSUdRUmgwSUFaQkNIUkJnSUQ4QjNGeUlBWkJDSFpCZ1A0RGNTQUdRUmgyY25JaERDQUxLQUxZQVNJR1JRMEJJQXdnQm5RZ0RTMEFCRUVJSUFacmRuSWhEQXdCQ3lBR1FRRklCRUJCQUNFTURBRUxJQTB0QUFBZ0N5Z0MyQUVpQ1VFWWFpSVlkQ0VNSUFZZ0NXcEJDR3NpQ1VFQlNBMEFBMEFnRFMwQUFTQVlRUWhySWhoMElBeHlJUXdnQ1VFSVNpRUdJQTFCQVdvaERTQUpRUWhySVFrZ0JnMEFDd3NnQ3lBSUlBNXFJaGcyQXVBQklBc2dHRUVIY1RZQzJBRWdEeUFZU1EwR0lBc2dDeWdDMEFFZ0dFRURkbW9pRFRZQzFBRWdEQ0FuUVFGcWRrRi9SZzBHSUJSRkJFQWdDMEhRQVdvZ0MwSE1BV29RQWcwSElBc29BdHdCUVFOMElROGdDeWdDNEFFaEdDQUxLQUxVQVNFTkMwRWZJQWNvQWhSbklnZHJJUWdDUUNBUElCaHJJZ1pCSUU0RVFDQU5LQUFBSWdaQkdIUWdCa0VJZEVHQWdQd0hjWElnQmtFSWRrR0EvZ054SUFaQkdIWnljaUVNSUFzb0F0Z0JJZ1pGRFFFZ0RDQUdkQ0FOTFFBRVFRZ2dCbXQyY2lFTURBRUxJQVpCQVVnRVFFRUFJUXdNQVFzZ0RTMEFBQ0FMS0FMWUFTSUpRUmhxSWc1MElRd2dCaUFKYWtFSWF5SUpRUUZJRFFBRFFDQU5MUUFCSUE1QkNHc2lEblFnREhJaERDQUpRUWhLSVFZZ0RVRUJhaUVOSUFsQkNHc2hDU0FHRFFBTEN5QUxJQWdnR0dvaUJqWUM0QUVnQ3lBR1FRZHhOZ0xZQVNBR0lBOUxEUVlnQ3lBTEtBTFFBU0FHUVFOMmFqWUMxQUVnRENBSFFRRnFka0YvUmcwR0lBdEJBRFlDN0FFZ0MwSFFBV29nQzBIc0FXb1FBaUVHQWtBZ0N5Z0M3QUVpQjBGL1JnUkFRWUNBZ0lCNElRa2dCa1VOQ0F3QkN5QUdEUWNnQjBFQmFrRUJkaUlHUVFBZ0Jtc2dCMEVCY1JzaENRc2dBQ2dDcUFvZ0NVWU5BU0FBSUFrMkFxZ0tRUUVoQ2d3QkN5QUhLQUlZRFFBZ0RTZ0NDQ0VPSUFzZ0N5Z0NHRFlDNEFFZ0N5QVlLUU1BTndQWUFTQUxJQXNwQXdnM0E5QUJJQXRCMEFGcUlBdEJ6QUZxRUFJTkJTQUxRZEFCYWlBTFFjd0JhaEFDRFFVZ0MwSFFBV29nQzBITUFXb1FBZzBGUVI4Z0J5Z0NER2NpQjJzaEVTQUxLQUxVQVNFSkFrQWdDeWdDM0FGQkEzUWlEeUFMS0FMZ0FTSW5heUlHUVNCT0JFQWdDU2dBQUNJR1FSaDBJQVpCQ0hSQmdJRDhCM0Z5SUFaQkNIWkJnUDREY1NBR1FSaDJjbkloR0NBTEtBTFlBU0lHUlEwQklCZ2dCblFnQ1MwQUJFRUlJQVpyZG5JaEdBd0JDeUFHUVFGSUJFQkJBQ0VZREFFTElBa3RBQUFnQ3lnQzJBRWlERUVZYWlJSWRDRVlJQVlnREdwQkNHc2lERUVCU0EwQUEwQWdDUzBBQVNBSVFRaHJJZ2gwSUJoeUlSZ2dERUVJU2lFR0lBbEJBV29oQ1NBTVFRaHJJUXdnQmcwQUN3c2dDeUFSSUNkcUlnWTJBdUFCSUFzZ0JrRUhjVFlDMkFFZ0JpQVBTdzBGSUFzZ0N5Z0MwQUVnQmtFRGRtbzJBdFFCSUJnZ0IwRUJhblpCZjBZTkJTQVVSUVJBSUF0QjBBRnFJQXRCekFGcUVBSU5CZ3NnQzBFQU5nTHNBU0FMUWRBQmFpQUxRZXdCYWhBQ0lRWUNRQ0FMS0FMc0FTSUhRWDlHQkVCQmdJQ0FnSGdoRENBR1JRMEhEQUVMSUFZTkJpQUhRUUZxUVFGMklnWkJBQ0FHYXlBSFFRRnhHeUVNQ3dKQUlBNUZCRUFnWUNFSkRBRUxJQXRCQURZQzdBRWdDMEhRQVdvZ0MwSHNBV29RQWlFWUlBc29BdXdCSWdaQmYwWUVRRUdBZ0lDQWVDRUpJQmhGRFFjTUFRc2dHQTBHSUFaQkFXcEJBWFlpR0VFQUlCaHJJQVpCQVhFYklRa0xJQXdnQUNnQ3JBcEhCRUFnQUNBTU5nS3NDa0VCSVFvTEFrQWdEU2dDQ0VVTkFDQUFLQUt3Q2lBSlJnMEFJQUFnQ1RZQ3NBcEJBU0VLQ3lBSklXQUxJQUFnR3EwZ0VxMUNJSWFFTndLVUNnd0RDMEVCSVFvTUFnc2dCa1VOQVNBR1FmRC9BMGNOQWd0QkJDRU1RUUFoQ2d3Q0N3SkFJQW9FUUFKQUlBQW9BcUFKUlEwQUlBQW9BaEJGRFFCQkFDRUtJQUFvQXJRYUJFQkJBeUVNREFVTEFrQWdBQ2dDcEFsRkJFQWdBQ0FBS0FMRUNTSUhJQUFvQXVBSlFTaHNhaUlHTmdMTUNTQUFJQVlvQWdBMkFyZ0tJQUFvQXV3SklnaEZCRUJCQUNFSkRBSUxJQWhCQTNFaENrRUFJUWxCQUNFR0FrQWdDRUVCYTBFRFNRMEFJQWhCZkhFaERRTkFJQUFvQXNnSklBWkJBblJxSUFjZ0JrRW9iR28yQWdBZ0FDZ0N5QWtnQmtFQmNpSUhRUUowYWlBQUtBTEVDU0FIUVNoc2FqWUNBQ0FBS0FMSUNTQUdRUUp5SWdkQkFuUnFJQUFvQXNRSklBZEJLR3hxTmdJQUlBQW9Bc2dKSUFaQkEzSWlCMEVDZEdvZ0FDZ0N4QWtnQjBFb2JHbzJBZ0FnQmtFRWFpRUdJQTFCQkdzaURVVU5BU0E0S0FJQUlRY01BQXNBQ3lBS1JRMEJBMEFnQUNnQ3lBa2dCa0VDZEdvZ0FDZ0N4QWtnQmtFb2JHbzJBZ0FnQmtFQmFpRUdJQXBCQVdzaUNnMEFDd3dCQ3lBQUtBTGNDaUVKQzBFQUlRZEJBQ0VNUVFBaERRSkFBa0FDUUNBSkRnWUJBQUFBQUFFQUN5QUFLQUs0R2cwQURBRUxJQUJCeUFscUtBSUFJUWdEUUFKL1FRQWdDQ0FIUVFKMGFpZ0NBQ0lHUlEwQUdrRUFJQVlvQWhSQkFra05BQm9nQmlnQ0FBc2hEQ0FIUVE1TERRRWdCMEVCYWlFSElBeEZEUUFMQ3lBcktBSUlJUkVnS3lnQ0JDRU9Ba0FDUUFKQUlBQW9BcGdKSWdoRkJFQkJBQ0VHUVFBaEJ3d0JDeUFBS0FLOENTRUtRUUFoQjBFQUlRWURRQ0FLSUFkQjJBRnNhaWdDeEFFTkFVRUFJQVpCQVdvaUJpQUdJQTVHSWhJYklRWWdEU0FTYWlFTklBZEJBV29pQnlBSVJ3MEFDd3dCQ3lBSElBaEdEUUFnQUNnQ3ZBa2dEU0FPYkVIWUFXeHFJUWdnQmdSQUlBWWhCd05BSUFnZ0IwRUJheUlIUWRnQmJHb2lDaUFySUEwZ0J5QUpJQXdRRFNBS1FRRTJBc1FCSUFBZ0FDZ0N0QWxCQVdvMkFyUUpJQWNOQUFzTElBNGdCa0VCYWlJSFN3UkFBMEFnQ0NBSFFkZ0JiR29pQmlnQ3hBRkZCRUFnQmlBcklBMGdCeUFKSUF3UURTQUdRUUUyQXNRQklBQWdBQ2dDdEFsQkFXbzJBclFKQ3lBSFFRRnFJZ2NnRGtjTkFBc0xJQTBFUUNBT1JRMENJQTFCQW1zaENrRUFJUkpCQUNBT2F5RVVJQTFCQVdzaUR5QU9iRUhZQVd3aEV3TkFJQUFvQXJ3SklCTnFJQkpCMkFGc2FpSUdJQ3NnRHlBU0lBa2dEQkFOSUFaQkFUWUN4QUVnQUNBQUtBSzBDVUVCYWpZQ3RBa0NRQ0FQUlEwQUlBWWdGRUhZQVd3aUdtb2lDQ0FySUFvZ0VpQUpJQXdRRFNBS0lRY0RRQ0FHSUJwcVFRRTJBc1FCSUFBZ0FDZ0N0QWxCQVdvMkFyUUpJQWRGRFFFZ0NDSUdJQnBxSWdnZ0t5QUhRUUZySWdjZ0VpQUpJQXdRRFF3QUN3QUxJQkpCQVdvaUVpQU9SdzBBQ3dzZ0RVRUJhaUlHSUJGUERRRWdEa1VOQVFOQUlBQW9BcndKSUFZZ0RteEIyQUZzYWlFS1FRQWhCd05BSUFvZ0IwSFlBV3hxSWdnb0FzUUJSUVJBSUFnZ0t5QUdJQWNnQ1NBTUVBMGdDRUVCTmdMRUFTQUFJQUFvQXJRSlFRRnFOZ0swQ1FzZ0IwRUJhaUlISUE1SERRQUxJQVpCQVdvaUJpQVJSdzBBQ3d3QkN3SkFBa0FDUUFKQUFrQWdDVUVDYXc0R0FBRUJBUUVBQVFzZ0FDZ0N1QnBGRFFFTElBd05BUXNnS3lnQ0FFR0FBU0FPSUJGc1FZQURiQkFER2d3QkN5QXJLQUlBSUF3Z0RpQVJiRUdBQTJ3UUJ4b0xJQUFnQUNnQ21Ba2lDVFlDdEFrZ0NVVU5BQ0FKUVFkeElRWWdBQ2dDdkFraENFRUFJUWNnQ1VFQmEwRUhUd1JBSUFsQmVIRWhEQU5BSUFnZ0IwSFlBV3hxUVFFMkFnZ2dDQ0FIUVFGeVFkZ0JiR3BCQVRZQ0NDQUlJQWRCQW5KQjJBRnNha0VCTmdJSUlBZ2dCMEVEY2tIWUFXeHFRUUUyQWdnZ0NDQUhRUVJ5UWRnQmJHcEJBVFlDQ0NBSUlBZEJCWEpCMkFGc2FrRUJOZ0lJSUFnZ0IwRUdja0hZQVd4cVFRRTJBZ2dnQ0NBSFFRZHlRZGdCYkdwQkFUWUNDQ0FIUVFocUlRY2dERUVJYXlJTURRQUxDeUFHUlEwQUEwQWdDQ0FIUWRnQmJHcEJBVFlDQ0NBSFFRRnFJUWNnQmtFQmF5SUdEUUFMQ3lBQVFRRTJBcEFhUVFBaEJrRUFJVElNQWdzZ0FFRUFOZ0tjQ1NBQVFRQTJBcVFKQzBFQUlRcEJBQ0VNQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUJNT0NBSUxDd3NDQ3dBQkN3c2dDMEhvQUdwQkFFSGNBQkFER2lBTEtBSU1JUVlDUUNBTEtBSVVRUU4wSWdnZ0N5Z0NHQ0lKYXlJS1FTQk9CRUFnQmlnQUFDSUhRUmgwSUFkQkNIUkJnSUQ4QjNGeUlBZEJDSFpCZ1A0RGNTQUhRUmgyY25JaEJ5QUxLQUlRSWdwRkRRRWdCeUFLZENBR0xRQUVRUWdnQ210MmNpRUhEQUVMSUFwQkFVZ0VRRUVBSVFjTUFRc2dCaTBBQUNBTEtBSVFJZ3hCR0dvaURYUWhCeUFLSUF4cVFRaHJJZ3BCQVVnTkFBTkFJQVl0QUFFZ0RVRUlheUlOZENBSGNpRUhJQXBCQ0VvaERDQUdRUUZxSVFZZ0NrRUlheUVLSUF3TkFBc0xJQXNnQ1VFSGNTSU1OZ0lRSUFzZ0NVRUlhaUlHTmdJWUlBWWdDRXNOQnlBTElBZEJHSFkyQW1nZ0N5QUxLQUlJSWc0Z0JrRURkbW8yQWd3Z0NVRUphaUlHSUFoTkJFQWdDeUFPSUFaQkEzWnFOZ0lNQ3lBTElBbEJDbW9pQmpZQ0dDQUxJQVpCQjNFaUJ6WUNFQ0FHSUFoTkJFQWdDeUFPSUFaQkEzWnFOZ0lNQ3dKQUlBZ2dCbXNpQmtFQmEwRWVTdzBBSUFZZ0IycEJDR3NpQmtFQlNBMEFBMEFnQmtFSVNpRUhJQVpCQ0dzaEJpQUhEUUFMQ3lBTElBbEJDMm9pQmpZQ0dDQUxJQVpCQjNFaUJ6WUNFQ0FHSUFoTERRY2dDeUFPSUFaQkEzWnFOZ0lNQWtBZ0NDQUdheUlHUVFGclFSNUxEUUFnQmlBSGFrRUlheUlHUVFGSURRQURRQ0FHUVFoS0lRY2dCa0VJYXlFR0lBY05BQXNMSUFzZ0REWUNFQ0FMSUFsQkVHb2lCellDR0NBSElBaExEUWNnQ3lBT0lBZEJBM1pxSWdZMkFnd0NRQ0FJSUFkcklncEJJRTRFUUNBR0tBQUFJZ2RCR0hRZ0IwRUlkRUdBZ1B3SGNYSWdCMEVJZGtHQS9nTnhJQWRCR0haeWNpRUhJQXhGRFFFZ0J5QU1kQ0FHTFFBRVFRZ2dER3QyY2lFSERBRUxJQXBCQVVnRVFFRUFJUWNNQVFzZ0JpMEFBQ0FNUVJoeUlnMTBJUWNnQ2lBTWFrRUlheUlLUVFGSURRQURRQ0FHTFFBQklBMUJDR3NpRFhRZ0IzSWhCeUFLUVFoS0lSSWdCa0VCYWlFR0lBcEJDR3NoQ2lBU0RRQUxDeUFMSUF3MkFoQWdDeUFKUVJocUlnWTJBaGdnQmlBSVN3MEhJQXNnQjBFWWRqWUNiQ0FMSUE0Z0JrRURkbW8yQWd3Z0MwRUlhaUJkRUFJTkJ5QUxLQUp3UVI5TERRY2dDMEVJYWlBTFFld0JhaEFDRFFjZ0N5Z0M3QUVpQmtFTVN3MEhJQXRCQVNBR1FRUnFkRFlDZENBTFFRaHFJQXRCN0FGcUVBSU5CeUFMS0FMc0FTSUdRUUpMRFFjZ0N5QUdOZ0o0QWtBQ1FBSkFJQVlPQWdBQkFnc2dDMEVJYWlBTFFld0JhaEFDRFFrZ0N5Z0M3QUVpQmtFTVN3MEpJQXRCQVNBR1FRUnFkRFlDZkF3QkN5QUxLQUlNSVFZQ1FDQUxLQUlVUVFOMElna2dDeWdDR0NJTWF5SUlRU0JPQkVBZ0JpZ0FBQ0lIUVJoMElBZEJDSFJCZ0lEOEIzRnlJQWRCQ0haQmdQNERjU0FIUVJoMmNuSWhCeUFMS0FJUUlnaEZEUUVnQnlBSWRDQUdMUUFFUVFnZ0NHdDJjaUVIREFFTElBaEJBVWdFUUVFQUlRY01BUXNnQmkwQUFDQUxLQUlRSWdwQkdHb2lEWFFoQnlBSUlBcHFRUWhySWdwQkFVZ05BQU5BSUFZdEFBRWdEVUVJYXlJTmRDQUhjaUVISUFwQkNFb2hDQ0FHUVFGcUlRWWdDa0VJYXlFS0lBZ05BQXNMSUFzZ0RFRUJhaUlHTmdJWUlBc2dCa0VIY1RZQ0VDQUdJQWxMRFFnZ0N5QUhRUjkyTmdLQUFTQUxJQXNvQWdnZ0JrRURkbW8yQWd3Z0MwRUFOZ0xRQVNBTFFRaHFJQXRCMEFGcUVBSWhCaUFMQW44Z0N5Z0MwQUVpQjBGL1JnUkFRWUNBZ0lCNElBWU5BUm9NQ2dzZ0JnMEpJQWRCQVdwQkFYWWlCa0VBSUFacklBZEJBWEViQ3pZQ2hBRWdDMEVBTmdMUUFTQUxRUWhxSUF0QjBBRnFFQUloQmlBTEFuOGdDeWdDMEFFaUIwRi9SZ1JBUVlDQWdJQjRJQVlOQVJvTUNnc2dCZzBKSUFkQkFXcEJBWFlpQmtFQUlBWnJJQWRCQVhFYkN6WUNpQUVnQzBFSWFpQmNFQUlOQ0NBTEtBS01BU0lHUWY4QlN3MElJQVlFUUNBTElBWkJBblFRQ0NJSE5nS1FBU0FIUlEwSlFRQWhCZ05BSUF0QkFEWUMwQUVnQzBFSWFpQUxRZEFCYWhBQ0lRZ2dCeUFHUVFKMGFnSi9JQXNvQXRBQklnZEJmMFlFUUVHQWdJQ0FlQ0FJRFFFYURBd0xJQWdOQ3lBSFFRRnFRUUYySWdoQkFDQUlheUFIUVFGeEd3czJBZ0FnQmtFQmFpSUdJQXNvQW93QlR3MENJQXNvQXBBQklRY01BQXNBQ3lBTFFRQTJBcEFCQ3lBTFFRaHFJRnNRQWcwSElBc29BcFFCUVJCTERRY2dDeWdDRENFR0FrQWdDeWdDRkVFRGRDSUpJQXNvQWhnaURHc2lDRUVnVGdSQUlBWW9BQUFpQjBFWWRDQUhRUWgwUVlDQS9BZHhjaUFIUVFoMlFZRCtBM0VnQjBFWWRuSnlJUWNnQ3lnQ0VDSUlSUTBCSUFjZ0NIUWdCaTBBQkVFSUlBaHJkbkloQnd3QkN5QUlRUUZJQkVCQkFDRUhEQUVMSUFZdEFBQWdDeWdDRUNJS1FSaHFJZzEwSVFjZ0NDQUtha0VJYXlJS1FRRklEUUFEUUNBR0xRQUJJQTFCQ0dzaURYUWdCM0loQnlBS1FRaEtJUWdnQmtFQmFpRUdJQXBCQ0dzaENpQUlEUUFMQ3lBTElBeEJBV29pQmpZQ0dDQUxJQVpCQjNFMkFoQWdCaUFKU3cwSElBc2dCMEVmZGpZQ21BRWdDeUFMS0FJSUlBWkJBM1pxTmdJTUlBdEJDR29nQzBIc0FXb1FBZzBISUFzZ0N5Z0M3QUZCQVdvMkFwd0JJQXRCQ0dvZ0MwSHNBV29RQWcwSElBc2dDeWdDN0FGQkFXb2lHRFlDb0FFZ0N5Z0NEQ0VHQWtBZ0N5Z0NGRUVEZENJSUlBc29BaGdpREdzaUNVRWdUZ1JBSUFZb0FBQWlCMEVZZENBSFFRaDBRWUNBL0FkeGNpQUhRUWgyUVlEK0EzRWdCMEVZZG5KeUlRY2dDeWdDRUNJSlJRMEJJQWNnQ1hRZ0JpMEFCRUVJSUFscmRuSWhCd3dCQ3lBSlFRRklCRUJCQUNFSERBRUxJQVl0QUFBZ0N5Z0NFQ0lLUVJocUlnMTBJUWNnQ1NBS2FrRUlheUlLUVFGSURRQURRQ0FHTFFBQklBMUJDR3NpRFhRZ0IzSWhCeUFLUVFoS0lRa2dCa0VCYWlFR0lBcEJDR3NoQ2lBSkRRQUxDeUFMSUF4QkFXb2lCallDR0NBTElBWkJCM0VpQ1RZQ0VDQUdJQWhMRFFjZ0N5QUxLQUlJSWc0Z0JrRURkbW8yQWd3Z0IwRi9TZzBIQWtBZ0NDQUdheUlHUVFGclFSNUxEUUFnQmlBSmFrRUlheUlHUVFGSURRQURRQ0FHUVFoS0lRY2dCa0VJYXlFR0lBY05BQXNMSUFzZ0RFRUNhaUlITmdJWUlBc2dCMEVIY1NJSk5nSVFJQWNnQ0VzTkJ5QUxJQTRnQjBFRGRtb2lCallDREFKQUlBZ2dCMnNpQ2tFZ1RnUkFJQVlvQUFBaUIwRVlkQ0FIUVFoMFFZQ0EvQWR4Y2lBSFFRaDJRWUQrQTNFZ0IwRVlkbkp5SVFjZ0NVVU5BU0FISUFsMElBWXRBQVJCQ0NBSmEzWnlJUWNNQVFzZ0NrRUJTQVJBUVFBaEJ3d0JDeUFHTFFBQUlBbEJHSElpRFhRaEJ5QUpJQXBxUVFocklncEJBVWdOQUFOQUlBWXRBQUVnRFVFSWF5SU5kQ0FIY2lFSElBcEJDRW9oQ1NBR1FRRnFJUVlnQ2tFSWF5RUtJQWtOQUFzTElBc2dERUVEYWlJR05nSVlJQXNnQmtFSGNUWUNFQ0FHSUFoTERRY2dDeUFIUVI5Mk5nS2tBU0FMSUE0Z0JrRURkbW8yQWd3Q1FDQUhRUUJPQkVBZ0N5Z0NuQUVoRFF3QkN5QUxRUWhxSUZvUUFnMElJQXRCQ0dvZ1dSQUNEUWdnQzBFSWFpQllFQUlOQ0NBTFFRaHFJRmNRQWcwSUlBc29BcWdCSUFzb0Fxd0JRWDl6SUFzb0Fwd0JJZzFCQTNScVNnMElJQXNvQXJBQklBc29BclFCUVg5eklBc29BcUFCSWhoQkEzUnFTZzBJQzBIakFDRUtRWUNrQ1NFSFFmLy8vLzhISVFZQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQ3lnQ2JFRUthdzRxQ2dBQkFRc0xDd3NMQ3dFQ0F3c0xDd3NMQ3dzREJBVUxDd3NMQ3dzTEJnWUhDd3NMQ3dzTEN3Z0pDd3RCakFNaENrR0FqQlVoQnd3SkMwR01BeUVLUVlEWU55RUhEQWdMUVpnR0lRcEJnTER2QUNFSERBY0xRZFFNSVFwQmdPeTlBU0VIREFZTFFaQWNJUXBCZ1BDbEF5RUhEQVVMUVlBb0lRcEJnSURnQXlFSERBUUxRWURBQUNFS1FZQ0FnQVloQnd3REMwR0F4QUFoQ2tHQWdMQUdJUWNNQWd0QndLd0JJUXBCZ01DYkZDRUhEQUVMUVlDZ0FpRUtRWUNBNENFaEJ3c2dDaUFOSUJoc0lnaEpEUUFnQnlBSVFZQURiRzRpQmtFUUlBWkJFRWtiSVFZTElBc2dDeWdDbEFFaUJ5QUhJQVlnQmlBSFNSc2dCa0gvLy8vL0IwWWJJZ1kyQXV3QklBc2dCallDd0FFZ0N5Z0NEQ0VHQWtBZ0N5Z0NGRUVEZENJSklBc29BaGdpREdzaUNFRWdUZ1JBSUFZb0FBQWlCMEVZZENBSFFRaDBRWUNBL0FkeGNpQUhRUWgyUVlEK0EzRWdCMEVZZG5KeUlRY2dDeWdDRUNJSVJRMEJJQWNnQ0hRZ0JpMEFCRUVJSUFocmRuSWhCd3dCQ3lBSVFRRklCRUJCQUNFSERBRUxJQVl0QUFBZ0N5Z0NFQ0lLUVJocUlnMTBJUWNnQ0NBS2FrRUlheUlLUVFGSURRQURRQ0FHTFFBQklBMUJDR3NpRFhRZ0IzSWhCeUFLUVFoS0lRZ2dCa0VCYWlFR0lBcEJDR3NoQ2lBSURRQUxDeUFMSUF4QkFXb2lCallDR0NBTElBWkJCM0UyQWhBZ0JpQUpTdzBISUFzZ0IwRWZkallDdUFFZ0N5QUxLQUlJSUFaQkEzWnFOZ0lNQWtBZ0IwRi9TZzBBSUF0QnVBY1FDQ0lHTmdLOEFTQUdSUTBJSUFaQkFFRzRCeEFESVFnZ0N5Z0NEQ0VHQWtBZ0N5Z0NGRUVEZENJU0lBc29BaGdpRVdzaUNVRWdUZ1JBSUFZb0FBQWlCMEVZZENBSFFRaDBRWUNBL0FkeGNpQUhRUWgyUVlEK0EzRWdCMEVZZG5KeUlRY2dDeWdDRUNJSlJRMEJJQWNnQ1hRZ0JpMEFCRUVJSUFscmRuSWhCd3dCQ3lBSlFRRklCRUJCQUNFSERBRUxJQVl0QUFBZ0N5Z0NFQ0lLUVJocUlnMTBJUWNnQ1NBS2FrRUlheUlLUVFGSURRQURRQ0FHTFFBQklBMUJDR3NpRFhRZ0IzSWhCeUFLUVFoS0lRa2dCa0VCYWlFR0lBcEJDR3NoQ2lBSkRRQUxDeUFMSUJGQkFXb2lEVFlDR0NBTElBMUJCM0VpRERZQ0VDQU5JQkpMRFFnZ0N5QUxLQUlJSWc0Z0RVRURkbW9pQmpZQ0RDQUlJQWRCSDNZMkFnQUNRQ0FIUVg5S0RRQUNRQ0FTSUExcklnbEJJRTRFUUNBR0tBQUFJZ2RCR0hRZ0IwRUlkRUdBZ1B3SGNYSWdCMEVJZGtHQS9nTnhJQWRCR0haeWNpRUhJQXhGRFFFZ0J5QU1kQ0FHTFFBRVFRZ2dER3QyY2lFSERBRUxJQWxCQVVnRVFFRUFJUWNNQVFzZ0JpMEFBQ0FNUVJoeUlnMTBJUWNnQ1NBTWFrRUlheUlLUVFGSURRQURRQ0FHTFFBQklBMUJDR3NpRFhRZ0IzSWhCeUFLUVFoS0lRa2dCa0VCYWlFR0lBcEJDR3NoQ2lBSkRRQUxDeUFMSUF3MkFoQWdDeUFSUVFscUlnMDJBaGdnRFNBU1N3MEpJQXNnRGlBTlFRTjJhaUlHTmdJTUlBZ2dCMEVZZGlJSE5nSUVJQWRCL3dGSERRQUNRQ0FTSUExcklncEJJRTRFUUNBR0tBQUFJZ2RCR0hRZ0IwRUlkRUdBZ1B3SGNYSWdCMEVJZGtHQS9nTnhJQWRCR0haeWNpRUhJQXhGRFFFZ0J5QU1kQ0FHTFFBRVFRZ2dER3QyY2lFSERBRUxJQXBCQVVnRVFFRUFJUWNNQVFzZ0JpMEFBQ0FNUVJoeUlnbDBJUWNnQ2lBTWFrRUlheUlLUVFGSURRQURRQ0FHTFFBQklBbEJDR3NpQ1hRZ0IzSWhCeUFLUVFoS0lRd2dCa0VCYWlFR0lBcEJDR3NoQ2lBTURRQUxDeUFMSUExQkIzRWlDVFlDRUNBTElCRkJHV29pRERZQ0dDQU1JQkpMRFFrZ0N5QU9JQXhCQTNacUlnWTJBZ3dnQ0NBSFFSQjJOZ0lJQWtBZ0VpQU1heUlLUVNCT0JFQWdCaWdBQUNJSFFSaDBJQWRCQ0hSQmdJRDhCM0Z5SUFkQkNIWkJnUDREY1NBSFFSaDJjbkloQnlBSlJRMEJJQWNnQ1hRZ0JpMEFCRUVJSUFscmRuSWhCd3dCQ3lBS1FRRklCRUJCQUNFSERBRUxJQVl0QUFBZ0NVRVljaUlOZENFSElBa2dDbXBCQ0dzaUNrRUJTQTBBQTBBZ0JpMEFBU0FOUVFocklnMTBJQWR5SVFjZ0NrRUlTaUVKSUFaQkFXb2hCaUFLUVFocklRb2dDUTBBQ3dzZ0N5QU1RUWR4SWd3MkFoQWdDeUFSUVNscUlnMDJBaGdnRFNBU1N3MEpJQXNnRGlBTlFRTjJhaUlHTmdJTUlBZ2dCMEVRZGpZQ0RBc0NRQ0FTSUExcklncEJJRTRFUUNBR0tBQUFJZ2RCR0hRZ0IwRUlkRUdBZ1B3SGNYSWdCMEVJZGtHQS9nTnhJQWRCR0haeWNpRUhJQXhGRFFFZ0J5QU1kQ0FHTFFBRVFRZ2dER3QyY2lFSERBRUxJQXBCQVVnRVFFRUFJUWNNQVFzZ0JpMEFBQ0FNUVJoeUlnbDBJUWNnQ2lBTWFrRUlheUlLUVFGSURRQURRQ0FHTFFBQklBbEJDR3NpQ1hRZ0IzSWhCeUFLUVFoS0lRd2dCa0VCYWlFR0lBcEJDR3NoQ2lBTURRQUxDeUFMSUExQkFXb2lDVFlDR0NBTElBbEJCM0VpQ2pZQ0VDQUpJQkpMRFFnZ0N5QU9JQWxCQTNacUlnWTJBZ3dnQ0NBSFFSOTJOZ0lRSUFkQmYwd0VRQUpBSUJJZ0NXc2lERUVnVGdSQUlBWW9BQUFpQjBFWWRDQUhRUWgwUVlDQS9BZHhjaUFIUVFoMlFZRCtBM0VnQjBFWWRuSnlJUWNnQ2tVTkFTQUhJQXAwSUFZdEFBUkJDQ0FLYTNaeUlRY01BUXNnREVFQlNBUkFRUUFoQnd3QkN5QUdMUUFBSUFwQkdISWlDWFFoQnlBS0lBeHFRUWhySWdwQkFVZ05BQU5BSUFZdEFBRWdDVUVJYXlJSmRDQUhjaUVISUFwQkNFb2hEQ0FHUVFGcUlRWWdDa0VJYXlFS0lBd05BQXNMSUFzZ0RVRUNhaUlKTmdJWUlBc2dDVUVIY1NJS05nSVFJQWtnRWtzTkNTQUxJQTRnQ1VFRGRtb2lCallDRENBSUlBZEJIM1kyQWhRTEFrQWdFaUFKYXlJTVFTQk9CRUFnQmlnQUFDSUhRUmgwSUFkQkNIUkJnSUQ4QjNGeUlBZEJDSFpCZ1A0RGNTQUhRUmgyY25JaEJ5QUtSUTBCSUFjZ0NuUWdCaTBBQkVFSUlBcHJkbkloQnd3QkN5QU1RUUZJQkVCQkFDRUhEQUVMSUFZdEFBQWdDa0VZY2lJTmRDRUhJQW9nREdwQkNHc2lDa0VCU0EwQUEwQWdCaTBBQVNBTlFRaHJJZzEwSUFkeUlRY2dDa0VJU2lFTUlBWkJBV29oQmlBS1FRaHJJUW9nREEwQUN3c2dDeUFKUVFGcUlnMDJBaGdnQ3lBTlFRZHhJZ28yQWhBZ0RTQVNTdzBJSUFzZ0RpQU5RUU4yYWlJR05nSU1JQWdnQjBFZmRqWUNHQ0FJQW44Q1FDQUhRWDlNQkVBQ1FDQVNJQTFySWd4QklFNEVRQ0FHS0FBQUlnZEJHSFFnQjBFSWRFR0FnUHdIY1hJZ0IwRUlka0dBL2dOeElBZEJHSFp5Y2lFSElBcEZEUUVnQnlBS2RDQUdMUUFFUVFnZ0NtdDJjaUVIREFFTElBeEJBVWdFUUVFQUlRY01BUXNnQmkwQUFDQUtRUmh5SWcxMElRY2dDaUFNYWtFSWF5SUtRUUZJRFFBRFFDQUdMUUFCSUExQkNHc2lEWFFnQjNJaEJ5QUtRUWhLSVF3Z0JrRUJhaUVHSUFwQkNHc2hDaUFNRFFBTEN5QUxJQWxCQkdvaUREWUNHQ0FMSUF4QkIzRWlDallDRUNBTUlCSkxEUXNnQ3lBT0lBeEJBM1pxSWdZMkFnd2dDQ0FIUVIxMk5nSWNBa0FnRWlBTWF5SU1RU0JPQkVBZ0JpZ0FBQ0lIUVJoMElBZEJDSFJCZ0lEOEIzRnlJQWRCQ0haQmdQNERjU0FIUVJoMmNuSWhCeUFLUlEwQklBY2dDblFnQmkwQUJFRUlJQXByZG5JaEJ3d0JDeUFNUVFGSUJFQkJBQ0VIREFFTElBWXRBQUFnQ2tFWWNpSU5kQ0VISUFvZ0RHcEJDR3NpQ2tFQlNBMEFBMEFnQmkwQUFTQU5RUWhySWcxMElBZHlJUWNnQ2tFSVNpRU1JQVpCQVdvaEJpQUtRUWhySVFvZ0RBMEFDd3NnQ3lBSlFRVnFJZ3cyQWhnZ0N5QU1RUWR4SWdvMkFoQWdEQ0FTU3cwTElBc2dEaUFNUVFOMmFpSUdOZ0lNSUFnZ0IwRWZkallDSUFKQUlCSWdER3NpREVFZ1RnUkFJQVlvQUFBaUIwRVlkQ0FIUVFoMFFZQ0EvQWR4Y2lBSFFRaDJRWUQrQTNFZ0IwRVlkbkp5SVFjZ0NrVU5BU0FISUFwMElBWXRBQVJCQ0NBS2EzWnlJUWNNQVFzZ0RFRUJTQVJBUVFBaEJ3d0JDeUFHTFFBQUlBcEJHSElpRFhRaEJ5QUtJQXhxUVFocklncEJBVWdOQUFOQUlBWXRBQUVnRFVFSWF5SU5kQ0FIY2lFSElBcEJDRW9oRENBR1FRRnFJUVlnQ2tFSWF5RUtJQXdOQUFzTElBc2dDVUVHYWlJTk5nSVlJQXNnRFVFSGNTSUtOZ0lRSUEwZ0Vrc05DeUFMSUE0Z0RVRURkbW9pQmpZQ0RDQUlJQWRCSDNZMkFpUWdCMEYvU2cwQkFrQWdFaUFOYXlJSFFTQk9CRUFnQmlnQUFDSUhRUmgwSUFkQkNIUkJnSUQ4QjNGeUlBZEJDSFpCZ1A0RGNTQUhRUmgyY25JaERTQUtSUTBCSUEwZ0NuUWdCaTBBQkVFSUlBcHJkbkloRFF3QkN5QUhRUUZJQkVCQkFDRU5EQUVMSUFZdEFBQWdDa0VZY2lJTWRDRU5JQWNnQ21wQkNHc2lCMEVCU0EwQUEwQWdCaTBBQVNBTVFRaHJJZ3gwSUExeUlRMGdCMEVJU2lFUklBWkJBV29oQmlBSFFRaHJJUWNnRVEwQUN3c2dDeUFLTmdJUUlBc2dDVUVPYWlJTU5nSVlJQXdnRWtzTkN5QUxJQTRnREVFRGRtb2lCallDRENBSUlBMUJHSFkyQWlnQ1FDQVNJQXhySWhGQklFNEVRQ0FHS0FBQUlnZEJHSFFnQjBFSWRFR0FnUHdIY1hJZ0IwRUlka0dBL2dOeElBZEJHSFp5Y2lFSElBcEZEUUVnQnlBS2RDQUdMUUFFUVFnZ0NtdDJjaUVIREFFTElCRkJBVWdFUUVFQUlRY01BUXNnQmkwQUFDQUtRUmh5SWcxMElRY2dDaUFSYWtFSWF5SUtRUUZJRFFBRFFDQUdMUUFCSUExQkNHc2lEWFFnQjNJaEJ5QUtRUWhLSVJFZ0JrRUJhaUVHSUFwQkNHc2hDaUFSRFFBTEN5QUxJQXhCQjNFaUNqWUNFQ0FMSUFsQkZtb2lERFlDR0NBTUlCSkxEUXNnQ3lBT0lBeEJBM1pxSWdZMkFnd2dDQ0FIUVJoMk5nSXNBa0FnRWlBTWF5SVJRU0JPQkVBZ0JpZ0FBQ0lIUVJoMElBZEJDSFJCZ0lEOEIzRnlJQWRCQ0haQmdQNERjU0FIUVJoMmNuSWhCeUFLUlEwQklBY2dDblFnQmkwQUJFRUlJQXByZG5JaEJ3d0JDeUFSUVFGSUJFQkJBQ0VIREFFTElBWXRBQUFnQ2tFWWNpSU5kQ0VISUFvZ0VXcEJDR3NpQ2tFQlNBMEFBMEFnQmkwQUFTQU5RUWhySWcxMElBZHlJUWNnQ2tFSVNpRVJJQVpCQVdvaEJpQUtRUWhySVFvZ0VRMEFDd3NnQ3lBTVFRZHhJZ28yQWhBZ0N5QUpRUjVxSWcwMkFoZ2dEU0FTU3cwTElBc2dEaUFOUVFOMmFpSUdOZ0lNSUFkQkdIWU1BZ3NnQ0VFRk5nSWNDeUFJUW9LQWdJQWdOd01vUVFJTE5nSXdBa0FnRWlBTmF5SU1RU0JPQkVBZ0JpZ0FBQ0lIUVJoMElBZEJDSFJCZ0lEOEIzRnlJQWRCQ0haQmdQNERjU0FIUVJoMmNuSWhCeUFLUlEwQklBY2dDblFnQmkwQUJFRUlJQXByZG5JaEJ3d0JDeUFNUVFGSUJFQkJBQ0VIREFFTElBWXRBQUFnQ2tFWWNpSUpkQ0VISUFvZ0RHcEJDR3NpQ2tFQlNBMEFBMEFnQmkwQUFTQUpRUWhySWdsMElBZHlJUWNnQ2tFSVNpRU1JQVpCQVdvaEJpQUtRUWhySVFvZ0RBMEFDd3NnQ3lBTlFRRnFJZzAyQWhnZ0N5QU5RUWR4TmdJUUlBMGdFa3NOQ0NBTElBNGdEVUVEZG1vaUJqWUNEQ0FJSUFkQkgzWTJBalFnQjBGL1RBUkFJQXRCQ0dvZ0NFRTRhaEFDRFFrZ0NDZ0NPRUVGU3cwSklBdEJDR29nQ0VFOGFoQUNEUWtnQ0NnQ1BFRUZTdzBKSUFzb0FoUkJBM1FoRWlBTEtBSVlJUTBnQ3lnQ0RDRUdDd0pBSUJJZ0RXc2lDa0VnVGdSQUlBWW9BQUFpQjBFWWRDQUhRUWgwUVlDQS9BZHhjaUFIUVFoMlFZRCtBM0VnQjBFWWRuSnlJUWNnQ3lnQ0VDSUpSUTBCSUFjZ0NYUWdCaTBBQkVFSUlBbHJkbkloQnd3QkN5QUtRUUZJQkVCQkFDRUhEQUVMSUFZdEFBQWdDeWdDRUNJTVFSaHFJZ2wwSVFjZ0NpQU1ha0VJYXlJS1FRRklEUUFEUUNBR0xRQUJJQWxCQ0dzaUNYUWdCM0loQnlBS1FRaEtJUXdnQmtFQmFpRUdJQXBCQ0dzaENpQU1EUUFMQ3lBTElBMUJBV29pQ1RZQ0dDQUxJQWxCQjNFaUdEWUNFQ0FKSUJKTERRZ2dDeUFMS0FJSUlnNGdDVUVEZG1vaUJqWUNEQ0FJSUFkQkgzWTJBa0FnQjBGL1RBUkFBa0FnRWlBSmF5SUtRU0JPQkVBZ0JpZ0FBQ0lIUVJoMElBZEJDSFJCZ0lEOEIzRnlJQWRCQ0haQmdQNERjU0FIUVJoMmNuSWhCeUFZUlEwQklBY2dHSFFnQmkwQUJFRUlJQmhyZG5JaEJ3d0JDeUFLUVFGSUJFQkJBQ0VIREFFTElBWXRBQUFnR0VFWWNpSUpkQ0VISUFvZ0dHcEJDR3NpQ2tFQlNBMEFBMEFnQmkwQUFTQUpRUWhySWdsMElBZHlJUWNnQ2tFSVNpRU1JQVpCQVdvaEJpQUtRUWhySVFvZ0RBMEFDd3NnQ3lBWU5nSVFJQXNnRFVFaGFpSU1OZ0lZSUF3Z0Vrc05DU0FMSUE0Z0RFRURkbW9pQmpZQ0RDQUhSUTBKSUFnZ0J6WUNSQUpBSUJJZ0RHc2lDa0VnVGdSQUlBWW9BQUFpQjBFWWRDQUhRUWgwUVlDQS9BZHhjaUFIUVFoMlFZRCtBM0VnQjBFWWRuSnlJUWNnR0VVTkFTQUhJQmgwSUFZdEFBUkJDQ0FZYTNaeUlRY01BUXNnQ2tFQlNBUkFRUUFoQnd3QkN5QUdMUUFBSUJoQkdISWlDWFFoQnlBS0lCaHFRUWhySWdwQkFVZ05BQU5BSUFZdEFBRWdDVUVJYXlJSmRDQUhjaUVISUFwQkNFb2hFU0FHUVFGcUlRWWdDa0VJYXlFS0lCRU5BQXNMSUFzZ0RFRUhjU0lLTmdJUUlBc2dEVUhCQUdvaUNUWUNHQ0FKSUJKTERRa2dDeUFPSUFsQkEzWnFJZ1kyQWd3Z0IwVU5DU0FJSUFjMkFrZ0NRQ0FTSUFscklneEJJRTRFUUNBR0tBQUFJZ2RCR0hRZ0IwRUlkRUdBZ1B3SGNYSWdCMEVJZGtHQS9nTnhJQWRCR0haeWNpRUhJQXBGRFFFZ0J5QUtkQ0FHTFFBRVFRZ2dDbXQyY2lFSERBRUxJQXhCQVVnRVFFRUFJUWNNQVFzZ0JpMEFBQ0FLUVJoeUlnbDBJUWNnQ2lBTWFrRUlheUlLUVFGSURRQURRQ0FHTFFBQklBbEJDR3NpQ1hRZ0IzSWhCeUFLUVFoS0lRd2dCa0VCYWlFR0lBcEJDR3NoQ2lBTURRQUxDeUFMSUExQndnQnFJZ2syQWhnZ0N5QUpRUWR4SWhnMkFoQWdDU0FTU3cwSklBc2dEaUFKUVFOMmFpSUdOZ0lNSUFnZ0IwRWZkallDVEFzQ1FDQVNJQWxySWdwQklFNEVRQ0FHS0FBQUlnZEJHSFFnQjBFSWRFR0FnUHdIY1hJZ0IwRUlka0dBL2dOeElBZEJHSFp5Y2lFSElCaEZEUUVnQnlBWWRDQUdMUUFFUVFnZ0dHdDJjaUVIREFFTElBcEJBVWdFUUVFQUlRY01BUXNnQmkwQUFDQVlRUmh5SWcxMElRY2dDaUFZYWtFSWF5SUtRUUZJRFFBRFFDQUdMUUFCSUExQkNHc2lEWFFnQjNJaEJ5QUtRUWhLSVF3Z0JrRUJhaUVHSUFwQkNHc2hDaUFNRFFBTEN5QUxJQWxCQVdvaUREWUNHQ0FMSUF4QkIzRTJBaEFnRENBU1N3MElJQXNnRGlBTVFRTjJhaUlHTmdJTUlBZ2dCMEVmZGpZQ1VBSkFJQWRCZjB3RVFDQUxRUWhxSUFoQjFBQnFFQjROQ2lBTEtBSVVRUU4wSVJJZ0N5Z0NHQ0VNSUFzb0Fnd2hCZ3dCQ3lBSVFwaUFnSUNBQXpjRDZBTWdDRUtZZ0lDQWdBTTNBK0FESUFoQmdaQ3FpUUUyQXVBQklBaEJnWkNxaVFFMkFtQWdDRUVCTmdKVUN3SkFJQklnREdzaUNVRWdUZ1JBSUFZb0FBQWlCMEVZZENBSFFRaDBRWUNBL0FkeGNpQUhRUWgyUVlEK0EzRWdCMEVZZG5KeUlRY2dDeWdDRUNJSlJRMEJJQWNnQ1hRZ0JpMEFCRUVJSUFscmRuSWhCd3dCQ3lBSlFRRklCRUJCQUNFSERBRUxJQVl0QUFBZ0N5Z0NFQ0lLUVJocUlnMTBJUWNnQ1NBS2FrRUlheUlLUVFGSURRQURRQ0FHTFFBQklBMUJDR3NpRFhRZ0IzSWhCeUFLUVFoS0lRa2dCa0VCYWlFR0lBcEJDR3NoQ2lBSkRRQUxDeUFMSUF4QkFXb2lCallDR0NBTElBWkJCM0UyQWhBZ0JpQVNTdzBJSUFzZ0N5Z0NDQ0FHUVFOMmFqWUNEQ0FJSUFkQkgzWTJBdkFEQWtBZ0IwRi9UQVJBSUF0QkNHb2dDRUgwQTJvUUhrVU5BUXdLQ3lBSVFwaUFnSUNBQXpjRGlBY2dDRUtZZ0lDQWdBTTNBNEFISUFoQmdiaTQ4Z0EyQW9BRklBaEJnYmk0OGdBMkFvQUVJQWhCQVRZQzlBTUxBa0FDUUNBSUtBSlFEUUFnQ0NnQzhBTU5BQ0FMS0FJVVFRTjBJUklnQ3lnQ0dDRU1JQXNvQWd3aEJnd0JDeUFMS0FJTUlRWUNRQ0FMS0FJVVFRTjBJaElnQ3lnQ0dDSU1heUlKUVNCT0JFQWdCaWdBQUNJSFFSaDBJQWRCQ0hSQmdJRDhCM0Z5SUFkQkNIWkJnUDREY1NBSFFSaDJjbkloQnlBTEtBSVFJZ2xGRFFFZ0J5QUpkQ0FHTFFBRVFRZ2dDV3QyY2lFSERBRUxJQWxCQVVnRVFFRUFJUWNNQVFzZ0JpMEFBQ0FMS0FJUUlncEJHR29pRFhRaEJ5QUpJQXBxUVFocklncEJBVWdOQUFOQUlBWXRBQUVnRFVFSWF5SU5kQ0FIY2lFSElBcEJDRW9oQ1NBR1FRRnFJUVlnQ2tFSWF5RUtJQWtOQUFzTElBc2dERUVCYWlJTU5nSVlJQXNnREVFSGNUWUNFQ0FNSUJKTERRa2dDeUFMS0FJSUlBeEJBM1pxSWdZMkFnd2dDQ0FIUVI5Mk5nS1FCd3NDUUNBU0lBeHJJZ2xCSUU0RVFDQUdLQUFBSWdkQkdIUWdCMEVJZEVHQWdQd0hjWElnQjBFSWRrR0EvZ054SUFkQkdIWnljaUVISUFzb0FoQWlDVVVOQVNBSElBbDBJQVl0QUFSQkNDQUphM1p5SVFjTUFRc2dDVUVCU0FSQVFRQWhCd3dCQ3lBR0xRQUFJQXNvQWhBaUNrRVlhaUlOZENFSElBa2dDbXBCQ0dzaUNrRUJTQTBBQTBBZ0JpMEFBU0FOUVFocklnMTBJQWR5SVFjZ0NrRUlTaUVKSUFaQkFXb2hCaUFLUVFocklRb2dDUTBBQ3dzZ0N5QU1RUUZxSWdvMkFoZ2dDeUFLUVFkeElnazJBaEFnQ2lBU1N3MElJQXNnQ3lnQ0NDSU9JQXBCQTNacUlnWTJBZ3dnQ0NBSFFSOTJOZ0tVQndKQUlCSWdDbXNpQ2tFZ1RnUkFJQVlvQUFBaUIwRVlkQ0FIUVFoMFFZQ0EvQWR4Y2lBSFFRaDJRWUQrQTNFZ0IwRVlkbkp5SVFjZ0NVVU5BU0FISUFsMElBWXRBQVJCQ0NBSmEzWnlJUWNNQVFzZ0NrRUJTQVJBUVFBaEJ3d0JDeUFHTFFBQUlBbEJHSElpRFhRaEJ5QUpJQXBxUVFocklncEJBVWdOQUFOQUlBWXRBQUVnRFVFSWF5SU5kQ0FIY2lFSElBcEJDRW9oQ1NBR1FRRnFJUVlnQ2tFSWF5RUtJQWtOQUFzTElBc2dERUVDYWlJS05nSVlJQXNnQ2tFSGNTSUpOZ0lRSUFvZ0Vrc05DQ0FMSUE0Z0NrRURkbW9pQmpZQ0RDQUlJQWRCSDNZMkFwZ0hBa0FnQjBGL1RBUkFBa0FnRWlBS2F5SUtRU0JPQkVBZ0JpZ0FBQ0lIUVJoMElBZEJDSFJCZ0lEOEIzRnlJQWRCQ0haQmdQNERjU0FIUVJoMmNuSWhCeUFKUlEwQklBY2dDWFFnQmkwQUJFRUlJQWxyZG5JaEJ3d0JDeUFLUVFGSUJFQkJBQ0VIREFFTElBWXRBQUFnQ1VFWWNpSU5kQ0VISUFrZ0NtcEJDR3NpQ2tFQlNBMEFBMEFnQmkwQUFTQU5RUWhySWcxMElBZHlJUWNnQ2tFSVNpRUpJQVpCQVdvaEJpQUtRUWhySVFvZ0NRMEFDd3NnQ3lBTVFRTnFJZ1kyQWhnZ0N5QUdRUWR4TmdJUUlBWWdFa3NOQ2lBTElBNGdCa0VEZG1vMkFnd2dDQ0FIUVI5Mk5nS2NCeUFMUVFocUlBaEJvQWRxRUFJTkNpQUlLQUtnQjBFUVN3MEtJQXRCQ0dvZ0NFR2tCMm9RQWcwS0lBZ29BcVFIUVJCTERRb2dDMEVJYWlBSVFhZ0hhaEFDRFFvZ0NDZ0NxQWRCRUVzTkNpQUxRUWhxSUFoQnJBZHFFQUlOQ2lBSUtBS3NCMEVRU3cwS0lBdEJDR29nQ0VHd0Iyb1FBZzBLSUF0QkNHb2dDRUcwQjJvUUFnMEtEQUVMSUFoQkVEWUN0QWNnQ0VLUWdJQ0FnQUkzQXF3SElBaENnWUNBZ0lBQ053S2tCeUFJUW9HQWdJQWdOd0tjQndzZ0N5Z0N2QUVpQnlnQ21BZEZEUUFnQnlnQ3RBY2lCaUFIS0FLd0Iwa05DQ0FHSUFzb0FwUUJTUTBJSUFZZ0N5Z0N3QUZMRFFnZ0N5QUdRUUVnQmhzMkFzQUJDMEVJSUFzb0FoQWlCbXNoQndKQUlBc29BaFJCQTNRaUNDQUxLQUlZSWdscklncEJBV3RCSGtzTkFDQUdJQXBxUVFocklnWkJBVWdOQUFOQUlBWkJDRW9oQ2lBR1FRaHJJUVlnQ2cwQUN3c2dDeUFISUFscUlnWTJBaGdnQ3lBR1FRZHhOZ0lRSUFZZ0NFMEVRQ0FMSUFzb0FnZ2dCa0VEZG1vMkFnd0xBa0FnQUNBTEtBSndJZ1pCQW5ScUlnY29BaFFpQ0VVRVFDQUhRZHdBRUFnaUJqWUNGQ0FHRFFFTUNBc2dBQ2dDQ0NBR1JnUkFBa0FDUUNBTEtBSm9JQUFvQWhBaUJpZ0NBRWNOQUNBTEtBSnNJQVlvQWdSSERRQWdDeWdDZENBR0tBSU1SdzBBSUFzb0FuZ2lDU0FHS0FJUVJ3MEFJQXNvQXBRQklBWW9BaXhIRFFBZ0N5Z0NtQUVnQmlnQ01FY05BQ0FMS0FLY0FTQUdLQUkwUncwQUlBc29BcUFCSUFZb0FqaEhEUUFnQ3lnQ3BBRWlDaUFHS0FJOFJ3MEFJQXNvQXJnQklBWW9BbEJIRFFBQ1FBSkFBa0FnQ1E0Q0FRQUNDeUFMS0FLQUFTQUdLQUlZUncwQ0lBc29Bb1FCSUFZb0FoeEhEUUlnQ3lnQ2lBRWdCaWdDSUVjTkFpQUxLQUtNQVNJSklBWW9BaVJIRFFJZ0NVVU5BU0FHS0FJb0lReEJBQ0VOSUFzb0FwQUJJUTREUUNBT0lBMUJBblFpRW1vb0FnQWdEQ0FTYWlnQ0FFY05BeUFKSUExQkFXb2lEVWNOQUFzTUFRc2dDeWdDZkNBR0tBSVVSdzBCQ3lBS1JRMEJJQXNvQXFnQklBWW9Ba0JIRFFBZ0N5Z0NyQUVnQmlnQ1JFY05BQ0FMS0FLd0FTQUdLQUpJUncwQUlBc29BclFCSUFZb0FreEdEUUVMSUFnb0FpZ1FCQ0FIS0FJVVFRQTJBaWdnQnlnQ0ZDZ0NWQkFFSUFjb0FoUkJBRFlDVkNBQVFRQTJBaEFnQUVHQkFqWUNCQ0FBUWlFM0FnZ01BZ3NnQ3lnQ2tBRVFCRUVBSVFvZ0MwRUFOZ0tRQVNBTEtBSzhBUkFFSUF0QkFEWUN2QUZCQUNFTURBd0xJQWdvQWlnUUJDQUhLQUlVUVFBMkFpZ2dCeWdDRkNnQ1ZCQUVJQWNvQWhSQkFEWUNWQXNnQnlnQ0ZDQUxRZWdBYWtIY0FCQUhHZ3dHQ3lBTFFTQnFJZ1pCQUVISUFCQURHaUFMUVFocUlBWVFBZzBDSUFzb0FpQkIvd0ZMRFFJZ0MwRUlhaUJmRUFJTkFpQUxLQUlrUVI5TERRSWdDeWdDRENFR0FrQWdDeWdDRkVFRGRDSU1JQXNvQWhnaURtc2lDRUVnVGdSQUlBWW9BQUFpQjBFWWRDQUhRUWgwUVlDQS9BZHhjaUFIUVFoMlFZRCtBM0VnQjBFWWRuSnlJUWNnQ3lnQ0VDSUlSUTBCSUFjZ0NIUWdCaTBBQkVFSUlBaHJkbkloQnd3QkN5QUlRUUZJQkVCQkFDRUhEQUVMSUFZdEFBQWdDeWdDRUNJSlFSaHFJZzEwSVFjZ0NDQUpha0VJYXlJS1FRRklEUUFEUUNBR0xRQUJJQTFCQ0dzaURYUWdCM0loQnlBS1FRaEtJUWdnQmtFQmFpRUdJQXBCQ0dzaENpQUlEUUFMQ3lBTElBNUJBV29pQ1RZQ0dDQUxJQWxCQjNFaUNEWUNFQ0FKSUF4TERRSWdDeUFMS0FJSUloSWdDVUVEZG1vaUJqWUNEQ0FIUVFCSURRSUNRQ0FNSUFscklnbEJJRTRFUUNBR0tBQUFJZ2RCR0hRZ0IwRUlkRUdBZ1B3SGNYSWdCMEVJZGtHQS9nTnhJQWRCR0haeWNpRUhJQWhGRFFFZ0J5QUlkQ0FHTFFBRVFRZ2dDR3QyY2lFSERBRUxJQWxCQVVnRVFFRUFJUWNNQVFzZ0JpMEFBQ0FJUVJoeUlnMTBJUWNnQ0NBSmFrRUlheUlLUVFGSURRQURRQ0FHTFFBQklBMUJDR3NpRFhRZ0IzSWhCeUFLUVFoS0lRZ2dCa0VCYWlFR0lBcEJDR3NoQ2lBSURRQUxDeUFMSUE1QkFtb2lCallDR0NBTElBWkJCM0UyQWhBZ0JpQU1TdzBDSUFzZ0IwRWZkallDS0NBTElCSWdCa0VEZG1vMkFnd2dDMEVJYWlBTFFld0JhaEFDRFFJZ0N5QUxLQUxzQVVFQmFpSUdOZ0lzSUFaQkNFc05BaUFHUVFKSkRRRWdDMEVJYWlCZUVBSU5BaUFMS0FJd0lnWkJCa3NOQWdKQUFrQUNRQUpBSUFZT0J3QUZBUUlDQWdNRkN5QUxJQXNvQWl3aUIwRUNkQkFJSWdnMkFqUWdDRVVOQlVFQUlRWWdCMFVOQkFOQUlBdEJDR29nQzBIc0FXb1FBZzBHSUFnZ0JrRUNkR29nQ3lnQzdBRkJBV28yQWdBZ0JrRUJhaUlHSUFkSERRQUxEQVFMSUFzZ0N5Z0NMQ0lHUVFKMFFRUnJJZ2dRQ0NJSE5nSTRJQXNnQ0JBSUlnZzJBandnQjBVTkJDQUlSUTBFSUFaQkFVWU5BeUFHUVFGcklRbEJBQ0VHQTBBZ0MwRUlhaUFMUWV3QmFoQUNEUVVnQnlBR1FRSjBJZ3BxSUFzb0F1d0JOZ0lBSUF0QkNHb2dDMEhzQVdvUUFnMEZJQWdnQ21vZ0N5Z0M3QUUyQWdBZ0JrRUJhaUlHSUFsSERRQUxEQU1MSUFzb0Fnd2hCZ0pBSUFzb0FoUkJBM1FpQ1NBTEtBSVlJZ3hySWdoQklFNEVRQ0FHS0FBQUlnZEJHSFFnQjBFSWRFR0FnUHdIY1hJZ0IwRUlka0dBL2dOeElBZEJHSFp5Y2lFSElBc29BaEFpQ0VVTkFTQUhJQWgwSUFZdEFBUkJDQ0FJYTNaeUlRY01BUXNnQ0VFQlNBUkFRUUFoQnd3QkN5QUdMUUFBSUFzb0FoQWlDa0VZYWlJTmRDRUhJQWdnQ21wQkNHc2lDa0VCU0EwQUEwQWdCaTBBQVNBTlFRaHJJZzEwSUFkeUlRY2dDa0VJU2lFSUlBWkJBV29oQmlBS1FRaHJJUW9nQ0EwQUN3c2dDeUFNUVFGcUlnWTJBaGdnQ3lBR1FRZHhOZ0lRSUFZZ0NVc05BeUFMSUFkQkgzWTJBa0FnQ3lBTEtBSUlJQVpCQTNacU5nSU1JQXRCQ0dvZ0MwSHNBV29RQWcwRElBc2dDeWdDN0FGQkFXbzJBa1FNQWdzZ0MwRUlhaUFMUWV3QmFoQUNEUUlnQ3lBTEtBTHNBU0lPUVFGcUlnWTJBa2dnQ3lBR1FRSjBFQWdpQ0RZQ1RDQUlSUTBDSUFaRkRRRkJJQ0FMS0FJc0loSkJBblJCbkRGcUtBSUFJaEZySVE5QkFDRU1JQXNvQWd3aEJpQUxLQUlJSVJvRFFBSkFJQXNvQWhSQkEzUWlGQ0FMS0FJWUloaHJJZ2xCSUU0RVFDQUdLQUFBSWdkQkdIUWdCMEVJZEVHQWdQd0hjWElnQjBFSWRrR0EvZ054SUFkQkdIWnljaUVISUFzb0FoQWlDVVVOQVNBSElBbDBJQVl0QUFSQkNDQUphM1p5SVFjTUFRc2dDVUVCU0FSQVFRQWhCd3dCQ3lBR0xRQUFJQXNvQWhBaUNrRVlhaUlOZENFSElBa2dDbXBCQ0dzaUNrRUJTQTBBQTBBZ0JpMEFBU0FOUVFocklnMTBJQWR5SVFjZ0NrRUlTaUVKSUFaQkFXb2hCaUFLUVFocklRb2dDUTBBQ3dzZ0N5QVJJQmhxSWdZMkFoZ2dDeUFHUVFkeE5nSVFJQVlnRkVzRVFDQUlJQXhCQW5ScVFYODJBZ0FNQkFzZ0N5QWFJQVpCQTNacUlnWTJBZ3dnQ0NBTVFRSjBhaUFISUE5MklnYzJBZ0FnQnlBU1R3MERJQXdnRGtZaEJ5QU1RUUZxSVF3Z0IwVU5BQXNNQVFzZ0FDZ0NuQWtOQ0NBQVFRRTJBcUFKQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBZ0FDZ0NwQWtOQUNBQVFnQTNBclFKSUFzZ0N5Z0NHRFlDNEFFZ0N5QUxLUU1RTndQWUFTQUxJQXNwQXdnM0E5QUJBa0FnQzBIUUFXb2dDMEhzQVdvUUFnMEFJQXRCMEFGcUlBdEI3QUZxRUFJTkFDQUxRZEFCYWlBTFFld0JhaEFDRFFBZ1BTQUxLQUxzQVNJR0lBWkIvd0ZMR3lFOUMwRUVJUXdnQUNBOVFRSjBhaWdDbEFFaUJrVU5DU0FBSUFZb0FnUWlDRUVDZEdvaUNTZ0NGQ0lIUlEwSklBQW9BZ2doRHdKQUlBWW9BZ3dpRGtFQ1NRMEFJQWNvQWpRaURTQUhLQUk0YkNFSEFrQUNRQUpBQWtBZ0JpZ0NFQ0lSRGdNQkF3QURDeUFPUVFGcklSRWdCaWdDSENFVUlBWW9BaGdoSnd3QkN5QUdLQUlVSVEwRFFDQU5JQXBCQW5ScUtBSUFJQWRMRFEwZ0RpQUtRUUZxSWdwSERRQUxEQUlMQTBBZ0p5QUtRUUowSWc1cUtBSUFJaGdnRGlBVWFpZ0NBQ0lPU3cwTUlBY2dEazBORENBWUlBMXdJQTRnRFhCTERRd2dFU0FLUVFGcUlncEhEUUFMREFFTElCRkJBMnRCQWswRVFDQUdLQUlrSUFkTERRc01BUXNnRVVFR1J3MEFJQVlvQWlnZ0Iwa05DZ3NDUUFKQUlBQW9BZ1FpQjBHQUFrWUVRQ0FBSUFZMkFnd2dBQ0E5TmdJRUlBQWdDRFlDQ0NBQUlBa29BaFFpQmpZQ0VDQUdLQUkwSVFjZ0JpZ0NPQ0VHSUFCQkFUWUN0Qm9nQUNBR05nTEFDaUFBSUFjMkFyd0tJQUFnQmlBSGJEWUNtQWtNQVFzZ0FDZ0N0Qm9FUUNBQVFRQTJBclFhSUFBb0Fyd0pFQVFnQUVFQU5nSzhDU0FBS0FLVUNSQUVJQUFnQUNnQ21Ba2lEa0hZQVd3aUJ4QUlJZ1kyQXJ3SklBQWdEa0VDZEJBSUlnZzJBcFFKUVFVaERDQUdSUTBNSUFoRkRRd2dCa0VBSUFjUUF5RVJJQUFvQWhBaENpQU9CRUJCQVNBS0tBSTBJZ2hySVJRZ0NFRUJheUVZUVFBZ0NHc2hFeUFSUWRnQmF5RWNJQkVnQ0VGL2MwSFlBV3hxSVJkQkFDRUhRUUFoRFVFQUlRa0RRQ0FSSUFsQjJBRnNJZ3BxSWdZZ0NpQWNha0VBSUFjYk5nTElBU0FHQW44Z0RVVUVRQ0FHUWdBM0Fzd0JRUUFNQVFzZ0JpQUdJQk5CMkFGc2FqWUN6QUVnQmlBR0lCUkIyQUZzYWtFQUlBY2dHRWtiTmdMUUFTQUtJQmRxUVFBZ0J4c0xOZ0xVQVVFQUlBZEJBV29pQmlBR0lBaEdJZ1liSVFjZ0JpQU5haUVOSUFsQkFXb2lDU0FPUncwQUN5QUFLQUlRSVFvTFFRRWhHRUVBSVFjQ2YwRUFJQUFvQXNBSkRRQWFRUUFnQ2lnQ0VFRUNSZzBBR2dKQUlBb29BbEJGRFFBZ0NpZ0NWQ0lHS0FLWUIwVU5BRUVBSUFZb0FyQUhSUTBCR2d0QkFDRVlRUUVMSVFrZ0NpZ0NOQ0VuSUFvb0FqZ2hEaUFLS0FJTUlRMGdDaWdDTENFSUlBb29BbGdoRVFKQUlEZ29BZ0FpQmtVTkFFRUFJUW9nQmlFSElBQW9BdUFKUVg5R0RRQURRQ0FISUFwQktHd2lCbW9vQWdRUUJDQUFLQUxFQ1NJSElBWnFRUUEyQWdRZ0NrRUJhaUlLSUFBb0F1QUpRUUZxU1EwQUN3c2dCeEFFSUFCQkFEWUN4QWtnQUNnQ3lBa1FCQ0FBUVFBMkFzZ0pJQUFvQXRBSkVBUWdBRUgvL3dNMkF1Z0pJQUJCQURZQzBBa2dBQ0FZTmdMOENTQUFJQTAyQXVRSklBQWdFU0FJUVFFZ0NFRUJTeHNpQnlBSkd5SUdOZ0xnQ1NBQUlBYzJBdHdKSUFCQkFEWUM5QWtnQUVJQU53THNDU0FBUWFnRkVBZ2lCellDeEFrZ0IwVU5ERUVBSVFvZ0IwRUFRYWdGRUFNaENDQUdRWDlIQkVBZ0RpQW5iRUdBQTJ4QkwzSWhDUU5BSUFnZ0NrRW9iR29pRGlBSkVBZ2lCellDQkNBSFJRME9JQTRnQjBFQUlBZHJRUWh4YWpZQ0FDQUdJQXBISVFjZ0NrRUJhaUVLSUFjTkFBc0xJQUJCeEFBUUNDSUhOZ0xJQ1NBQUlBWkJCSFJCRUdvUUNDSUdOZ0xRQ1NBR1JRME1JQWRGRFF3Z0IwRUFRY1FBRUFNYUlBQkNBRGNDMUFrZ0FDZ0NDQ0VJREFFTElBY2dQVVlOQXlBSUlBOUdEUUVnR2tFRlJ3MExJQUFnQmpZQ0RDQUFJRDAyQWdRZ0FDQUlOZ0lJSUFBZ0NTZ0NGQ0lHTmdJUUlBWW9BalFoQnlBR0tBSTRJUVlnQUVFQk5nSzBHaUFBSUFZMkFzQUtJQUFnQnpZQ3ZBb2dBQ0FHSUFkc05nS1lDUXNnQ0NBUFJnMEJRUUFoQ2lBQUtBSUFJZ1pCSDAwRVFDQUFJQVpCQW5ScUtBSVVJUW9MSUFBb0FoQWhCeUFBUVFFMkFwQWFJQnBCQlVjTkJ5QUFLQUlNSVFnZ0N5QUxLQUlZTmdMZ0FTQUxJQXNwQXhBM0E5Z0JJQXNnQ3lrRENEY0QwQUZCQVNFR0lBdEIwQUZxSUF0QnpBRnFFQUlFUUVFQklRME1Cd3NnQzBIUUFXb2dDMEhNQVdvUUFnUkFRUUVoRFF3SEN5QUxRZEFCYWlBTFFjd0JhaEFDQkVCQkFTRU5EQWNMUVI4Z0J5Z0NER2NpRG1zaEVTQUxLQUxVQVNFTkFrQWdDeWdDM0FGQkEzUWlEeUFMS0FMZ0FTSWFheUlKUVNCT0JFQWdEU2dBQUNJSlFSaDBJQWxCQ0hSQmdJRDhCM0Z5SUFsQkNIWkJnUDREY1NBSlFSaDJjbkloRENBTEtBTFlBU0lKUlEwQklBd2dDWFFnRFMwQUJFRUlJQWxyZG5JaERBd0JDeUFKUVFGSUJFQkJBQ0VNREFFTElBMHRBQUFnQ3lnQzJBRWlGRUVZYWlJU2RDRU1JQWtnRkdwQkNHc2lDVUVCU0EwQUEwQWdEUzBBQVNBU1FRaHJJaEowSUF4eUlRd2dDVUVJU2lFVUlBMUJBV29oRFNBSlFRaHJJUWtnRkEwQUN3c2dDeUFSSUJwcUlnazJBdUFCSUFzZ0NVRUhjVFlDMkFGQkFTRU5JQWtnRDBzTkJpQUxJQXNvQXRBQklBbEJBM1pxTmdMVUFTQU1JQTVCQVdwMlFYOUdEUVlnQzBIUUFXb2dDMEhNQVdvUUFnMEdJQWNvQWhBaUJnMEVRUjhnQnlnQ0ZHY2lEbXNoRVNBTEtBTFVBU0VHQWtBZ0N5Z0MzQUZCQTNRaUR5QUxLQUxnQVNJYWF5SUpRU0JPQkVBZ0JpZ0FBQ0lKUVJoMElBbEJDSFJCZ0lEOEIzRnlJQWxCQ0haQmdQNERjU0FKUVJoMmNuSWhEQ0FMS0FMWUFTSUpSUTBCSUF3Z0NYUWdCaTBBQkVFSUlBbHJkbkloREF3QkN5QUpRUUZJQkVCQkFDRU1EQUVMSUFZdEFBQWdDeWdDMkFFaUZFRVlhaUlTZENFTUlBa2dGR3BCQ0dzaUNVRUJTQTBBQTBBZ0JpMEFBU0FTUVFockloSjBJQXh5SVF3Z0NVRUlTaUVVSUFaQkFXb2hCaUFKUVFocklRa2dGQTBBQ3dzZ0N5QVJJQnBxSWdZMkF1QUJJQXNnQmtFSGNUWUMyQUVnQmlBUFN3UkFRUUVoQmd3SEN5QUxJQXNvQXRBQklBWkJBM1pxTmdMVUFVRUJJUVlnRENBT1FRRnFka0YvUmcwR0lBZ29BZ2hGRFFVZ0MwRUFOZ0xzQVNBTFFkQUJhaUFMUWV3QmFoQUNJUWtDUUNBTEtBTHNBVUYvUmdSQUlBbEZEUUVNQlFzZ0NVVU5CQXNNQmdzZ0FDQUdOZ0lNSUFBZ1BUWUNCQXRCQUNFS0lBQW9BclFhUlEwQVFRTWhEQXdSQ3lBQUtBSU1JUWNnQUNnQ0VDRUdJRlZCQUVIY0J4QURJUk1nQmlnQ05DRUlJQVlvQWpnaENTQUxRUWhxSUF0QnpBRnFFQUlORHlBVElBc29Bc3dCSWdvMkFnQWdDaUFJSUFsc0lnMVBEUThnQzBFSWFpQUxRY3dCYWhBQ0RROGdBQ0FMS0FMTUFTSUlOZ0s0RWdKQUFrQWdDQTRJQUJFQkVSRUFFUUVSQ3lBYVFRVkdEUkFnQmlnQ0xFVU5FQXNnQzBFSWFpQUxRY3dCYWhBQ0RROGdBQ0FMS0FMTUFTSUlOZ0s4RWlBSUlBY29BZ0JIRFE5Qkh5QUdLQUlNWnlJbmF5RU1JQXNvQWd3aENRSkFJQXNvQWhSQkEzUWlFU0FMS0FJWUlnOXJJZ3BCSUU0RVFDQUpLQUFBSWdoQkdIUWdDRUVJZEVHQWdQd0hjWElnQ0VFSWRrR0EvZ054SUFoQkdIWnljaUVPSUFzb0FoQWlDRVVOQVNBT0lBaDBJQWt0QUFSQkNDQUlhM1p5SVE0TUFRc2dDa0VCU0FSQVFRQWhEZ3dCQ3lBSkxRQUFJQXNvQWhBaUZFRVlhaUlJZENFT0lBb2dGR3BCQ0dzaUdFRUJTQTBBQTBBZ0NTMEFBU0FJUVFocklnaDBJQTV5SVE0Z0dFRUlTaUVLSUFsQkFXb2hDU0FZUVFocklSZ2dDZzBBQ3dzZ0N5QU1JQTlxSWdnMkFoZ2dDeUFJUVFkeE5nSVFJQWdnRVVzTkR5QUxJQXNvQWdnZ0NFRURkbW8yQWd3Z0RpQW5RUUZxZGlJSVFYOUdEUThnR2tFRlJ5SUtRUUVnQ0J0RkRROGdBQ0FJTmdMQUVpQUtSUVJBSUF0QkNHb2dDMEhNQVdvUUFnMFFJQUFnQ3lnQ3pBRWlDRFlDeEJJZ0NFSC8vd05MRFJBTEFrQWdCaWdDRUNJSUJIOGdDQVZCSHlBR0tBSVVaeUlNYXlFUElBc29BZ3doQ1FKQUlBc29BaFJCQTNRaUZDQUxLQUlZSWlkcklnaEJJRTRFUUNBSktBQUFJZ2hCR0hRZ0NFRUlkRUdBZ1B3SGNYSWdDRUVJZGtHQS9nTnhJQWhCR0haeWNpRU9JQXNvQWhBaUNFVU5BU0FPSUFoMElBa3RBQVJCQ0NBSWEzWnlJUTRNQVFzZ0NFRUJTQVJBUVFBaERnd0JDeUFKTFFBQUlBc29BaEFpR0VFWWFpSVJkQ0VPSUFnZ0dHcEJDR3NpR0VFQlNBMEFBMEFnQ1MwQUFTQVJRUWhySWhGMElBNXlJUTRnR0VFSVNpRUlJQWxCQVdvaENTQVlRUWhySVJnZ0NBMEFDd3NnQ3lBUElDZHFJZ2cyQWhnZ0N5QUlRUWR4TmdJUUlBZ2dGRXNORVNBTElBc29BZ2dnQ0VFRGRtbzJBZ3dnRGlBTVFRRnFkaUlJUVg5R0RSRWdBQ0FJTmdMSUVpQUhLQUlJQkVBZ0MwRUFOZ0xRQVNBTFFRaHFJQXRCMEFGcUVBSWhDQUpBSUFzb0F0QUJJZ2xCZjBZRVFFR0FnSUNBZUNFWUlBaEZEUlFNQVFzZ0NBMFRJQWxCQVdwQkFYWWlDRUVBSUFocklBbEJBWEViSVJnTElBQWdHRFlDekJJTElBcEZCRUFnQUNnQ3lCSWlDQ0FHS0FJVVFRRjJTdzBTSUFoQkFDQUFLQUxNRWlJSlFSOTFJQWx4YTBjTkVnc2dCaWdDRUF0QkFVY05BQ0FHS0FJWURRQWdDMEVBTmdMUUFTQUxRUWhxSUF0QjBBRnFFQUloQ0FKQUlBc29BdEFCSWdsQmYwWUVRRUdBZ0lDQWVDRVlJQWhGRFJJTUFRc2dDQTBSSUFsQkFXcEJBWFlpQ0VFQUlBaHJJQWxCQVhFYklSZ0xJQUFnR0RZQzBCSWdCeWdDQ0FSQUlBdEJBRFlDMEFFZ0MwRUlhaUFMUWRBQmFoQUNJUWdDUUNBTEtBTFFBU0lKUVg5R0JFQkJnSUNBZ0hnaEdDQUlSUTBUREFFTElBZ05FaUFKUVFGcVFRRjJJZ2hCQUNBSWF5QUpRUUZ4R3lFWUN5QUFJQmcyQXRRU0N5QUtEUUFnQUNnQzBCSWlDQ0FBS0FMVUVpQUlJQVlvQWlCcWFpSUpJQWdnQ1VnYkRSQUxJQWNvQWtRRVFDQUxRUWhxSUF0QnpBRnFFQUlORUNBQUlBc29Bc3dCSWdnMkF0Z1NJQWhCL3dCTERSQUxBa0FDUUNBQUtBSzRFaUluRGdZQUFRRUJBUUFCQ3lBTEtBSU1JUWtDUUNBTEtBSVVRUU4wSWd3Z0N5Z0NHQ0lQYXlJSVFTQk9CRUFnQ1NnQUFDSUlRUmgwSUFoQkNIUkJnSUQ4QjNGeUlBaEJDSFpCZ1A0RGNTQUlRUmgyY25JaERpQUxLQUlRSWdoRkRRRWdEaUFJZENBSkxRQUVRUWdnQ0d0MmNpRU9EQUVMSUFoQkFVZ0VRRUVBSVE0TUFRc2dDUzBBQUNBTEtBSVFJaFJCR0dvaUVYUWhEaUFJSUJScVFRaHJJaGhCQVVnTkFBTkFJQWt0QUFFZ0VVRUlheUlSZENBT2NpRU9JQmhCQ0VvaENDQUpRUUZxSVFrZ0dFRUlheUVZSUFnTkFBc0xJQXNnRDBFQmFpSUlOZ0lZSUFzZ0NFRUhjVFlDRUNBSUlBeExEUkFnQ3lBTEtBSUlJQWhCQTNacU5nSU1JQUFnRGtFZmRqWUMzQklDUUNBT1FYOU1CRUFnQzBFSWFpQUxRY3dCYWhBQ0RSSWdDeWdDekFFaUNFRVBTdzBTSUFoQkFXb2hDU0FBS0FLNEVpRW5EQUVMSUFjb0FqQWlDVUVRU3cwUkN5QUFJQWsyQXVBU0N3SkFBa0FnSnc0R0FBRUJBUUVBQVFzZ0N5Z0NEQ0VKQWtBZ0N5Z0NGRUVEZENJTUlBc29BaGdpRDJzaUNFRWdUZ1JBSUFrb0FBQWlDRUVZZENBSVFRaDBRWUNBL0FkeGNpQUlRUWgyUVlEK0EzRWdDRUVZZG5KeUlRNGdDeWdDRUNJSVJRMEJJQTRnQ0hRZ0NTMEFCRUVJSUFocmRuSWhEZ3dCQ3lBSVFRRklCRUJCQUNFT0RBRUxJQWt0QUFBZ0N5Z0NFQ0lVUVJocUloRjBJUTRnQ0NBVWFrRUlheUlZUVFGSURRQURRQ0FKTFFBQklCRkJDR3NpRVhRZ0RuSWhEaUFZUVFoS0lRZ2dDVUVCYWlFSklCaEJDR3NoR0NBSURRQUxDeUFHS0FJTUlSRWdBQ2dDNEJJaEZDQUxJQTlCQVdvaUNEWUNHQ0FMSUFoQkIzRTJBaEFnQ0NBTVN3MFFJQXNnQ3lnQ0NDQUlRUU4yYWpZQ0RDQUFJQTVCSDNZMkF2Z1NJQTVCZjBvTkFFRUFJUWtEUUNBSklCUkxEUkVnQzBFSWFpQUxRZXdCYWhBQ0RSRWdDeWdDN0FFaUNFRURTdzBSSUFBZ0NVRU1iR29pREVIOEVtb2dDRFlDQUNBSVFRRk5CRUFnQzBFSWFpQUxRZEFCYWhBQ0RSSWdDeWdDMEFFaUNDQVJUdzBTSUF4QmdCTnFJQWhCQVdvMkFnQWdDVUVCYWlFSkRBRUxJQWhCQWtZRVFDQUxRUWhxSUF0QjBBRnFFQUlORWlBTVFZUVRhaUFMS0FMUUFUWUNBQ0FKUVFGcUlRa01BUXNMSUFsRkRSQUxBa0FnRWtVTkFDQUxLQUlNSVFnQ1FDQUxLQUlVUVFOMElnOGdDeWdDR0NJbmF5SU1RU0JPQkVBZ0NDZ0FBQ0lKUVJoMElBbEJDSFJCZ0lEOEIzRnlJQWxCQ0haQmdQNERjU0FKUVJoMmNuSWhEaUFMS0FJUUlnbEZEUUVnRGlBSmRDQUlMUUFFUVFnZ0NXdDJjaUVPREFFTElBeEJBVWdFUUVFQUlRNE1BUXNnQ0MwQUFDQUxLQUlRSWhSQkdHb2lFWFFoRGlBSUlRa2dEQ0FVYWtFSWF5SVlRUUZJRFFBRFFDQUpMUUFCSUJGQkNHc2lFWFFnRG5JaERpQVlRUWhLSVF3Z0NVRUJhaUVKSUJoQkNHc2hHQ0FNRFFBTEN5QUdLQUlzSVJRZ0N5QW5RUUZxSWd3MkFoZ2dDeUFNUVFkeElnWTJBaEJCZnlFSklBd2dEMDBFUUNBTElBc29BZ2dnREVFRGRtb2lDRFlDRENBT1FSOTJJUWtMSUFwRkJFQWdDVUYvUmcwUklBQWdDVFlDeUJRQ1FDQVBJQXhySWdwQklFNEVRQ0FJS0FBQUlnbEJHSFFnQ1VFSWRFR0FnUHdIY1hJZ0NVRUlka0dBL2dOeElBbEJHSFp5Y2lFSklBWkZEUUVnQ1NBR2RDQUlMUUFFUVFnZ0JtdDJjaUVKREFFTElBcEJBVWdFUUVFQUlRa01BUXNnQ0MwQUFDQUdRUmh5SWhoMElRa2dCaUFLYWtFSWF5SUtRUUZJRFFBRFFDQUlMUUFCSUJoQkNHc2lHSFFnQ1hJaENTQUtRUWhLSVFZZ0NFRUJhaUVJSUFwQkNHc2hDaUFHRFFBTEN5QUxJQ2RCQW1vaUJqWUNHQ0FMSUFaQkIzRTJBaEFnQmlBUFN3MFJJQXNnQ3lnQ0NDQUdRUU4yYWpZQ0RDQUFJQWxCSDNZMkFzd1VJQlFOQVNBSlFYOU1EUkVNQVFzZ0NVRi9SZzBRSUFBZ0NUWUMwQlFnQ1VVTkFDQVVRUUYwUVFOcUlROUJBQ0VKUVFBaEowRUFJUTVCQUNFSVFRQWhFUU5BSUFrZ0QwWU5FU0FMUVFocUlBdEI3QUZxRUFJTkVTQUxLQUxzQVNJR1FRWkxEUkVnQUNBSlFSUnNhaUlLUWRRVWFpQUdOZ0lBSUFaQmZYRkJBVVlFUUNBTFFRaHFJQXRCMEFGcUVBSU5FaUFLUWRnVWFpQUxLQUxRQVVFQmFqWUNBQXNDUUFKQUFrQUNRQ0FHUVFKckRnVUFBUUlEQVFNTElBdEJDR29nQzBIUUFXb1FBZzBVSUFwQjNCUnFJQXNvQXRBQk5nSUFEQUlMSUF0QkNHb2dDMEhRQVdvUUFnMFRJQXBCNEJScUlBc29BdEFCTmdJQUlBWkJCRWNOQVFzZ0MwRUlhaUFMUWRBQmFoQUNEUklnQ3lnQzBBRWlEQ0FVU3cwU0lBcEI1QlJxSUF4QkFXdEIvLzhESUF3Yk5nSUFJQ2RCQVdvaEp3c2dDVUVCYWlFSklBZ2dCa0VHUm1vaENDQU9JQVpCQlVacUlRNGdFU0FHUVFGclFRTkphaUVSSUFZTkFBc2dKMEVCU3cwUUlBNUJBVXNORUNBSVFRRkxEUkFnRVVVTkFDQU9EUkFMSUF0QkFEWUMwQUVnQzBFSWFpQUxRZEFCYWhBQ0lRWUNRQ0FMS0FMUUFTSUlRWDlHQkVCQmdJQ0FnSGdoQ1NBR1JRMFJEQUVMSUFZTkVDQUlRUUZxUVFGMklnWkJBQ0FHYXlBSVFRRnhHeUVKQ3lBQUlBazJBdVFTSUFjb0FqUWdDV3BCTTBzTkR3SkFJQWNvQWp4RkRRQWdDMEVJYWlBTFFjd0JhaEFDRFJBZ0FDQUxLQUxNQVNJR05nTG9FaUFHUVFKTERSQWdCa0VCUmcwQUlBdEJBRFlDMEFFZ0MwRUlhaUFMUWRBQmFoQUNJUWdnQ3lnQzBBRWlCa0YvUmcwUUlBZ05FQ0FHUVFGcVFRRjJJZ2hCQUNBSWF5QUdRUUZ4R3lJR1FRWnFRUXhMRFJBZ0FDQUdRUUYwTmdMc0VpQUxRUUEyQXRBQklBdEJDR29nQzBIUUFXb1FBaUVJSUFzb0F0QUJJZ1pCZjBZTkVDQUlEUkFnQmtFQmFrRUJkaUlJUVFBZ0NHc2dCa0VCY1JzaUJrRUdha0VNU3cwUUlBQWdCa0VCZERZQzhCSUxBa0FnQnlnQ0RFRUNTUTBBSUFjb0FoQkJBMnRCQWtzTkFFRUJRUUlnRFNBTklBY29BaVFpQjI0aUJpQUhiRVliSUFacUlRaEJBQ0VLQTBBZ0NDQUtJZ1pCQVdvaUNuWU5BQXNnQ2lBR0lBaEJmeUFHZEVGL2MzRWJJUWdnQ3lnQ0RDRUtBa0FnQ3lnQ0ZFRURkQ0lPSUFzb0FoZ2lFV3NpQmtFZ1RnUkFJQW9vQUFBaUJrRVlkQ0FHUVFoMFFZQ0EvQWR4Y2lBR1FRaDJRWUQrQTNFZ0JrRVlkbkp5SVF3Z0N5Z0NFQ0lHUlEwQklBd2dCblFnQ2kwQUJFRUlJQVpyZG5JaERBd0JDeUFHUVFGSUJFQkJBQ0VNREFFTElBb3RBQUFnQ3lnQ0VDSUpRUmhxSWhoMElRd2dCaUFKYWtFSWF5SUpRUUZJRFFBRFFDQUtMUUFCSUJoQkNHc2lHSFFnREhJaERDQUpRUWhLSVFZZ0NrRUJhaUVLSUFsQkNHc2hDU0FHRFFBTEN5QUxJQWdnRVdvaUJqWUNHQ0FMSUFaQkIzRTJBaEFnQmlBT1N3UkFJQXRCZnpZQ3pBRU1FUXNnQ3lBTEtBSUlJQVpCQTNacU5nSU1JQXhCSUNBSWEzWWlCa0YvUmcwUUlBQWdCallDOUJJZ0JpQUhJQTFxUVFGcklBZHVTdzBRQ3lBQUtBS2tDVVVFUUFKQUlCcEJCVVlOQUNBQUtBSVFLQUl3SVFZZ0FFSUFOd0xVQ1NBR1JRMEFBa0FDUUFKQUFrQWdBQ2dDOUFraUNpQUFLQUxBRWlJblJ3UkFJQ2NnQ2tFQmFpQUFLQUxrQ1NJT2NDSUdSd1JBSUFBb0FzUUpJQUFvQXVBSlFTaHNhaWdDQUNFUkEwQUNRQUpBQWtBQ1FDQUFLQUxzQ1NJS0JFQWdDa0VCY1NFSklBQW9Bc1FKSVFkQkFDRU5Ba0FnQ2tFQlJpSVBSUVJBSUFwQmZuRWhEQU5BSUFjZ0RVRW9iR29pQ0NnQ0ZFRUJhMEVCVFFSQUlBZ2dDQ2dDRENJSUlBNUJBQ0FHSUFoSkcyczJBZ2dMSUFjZ0RVRUJja0VvYkdvaUNDZ0NGRUVCYTBFQ1NRUkFJQWdnQ0NnQ0RDSUlJQTVCQUNBR0lBaEpHMnMyQWdnTElBMUJBbW9oRFNBTVFRSnJJZ3dOQUFzZ0NVVU5BUXNnQnlBTlFTaHNhaUlJS0FJVVFRRnJRUUZMRFFBZ0NDQUlLQUlNSWdnZ0RrRUFJQVlnQ0VrYmF6WUNDQXNnQ2lBQUtBTGNDVWtOQkNBUFJRMEJRUUFoR0VGL0lReEJBQ0VJREFJTFFRQWhDaUFBS0FMY0NRMERRUU1oREF3ZEMwRi9JUXhCQUNFTlFRQWhHQ0FLUVg1eElnZ2hEZ05BSUFjZ0RVRW9iR29pRHlnQ0ZFRUJhMEVCVFFSQUlBOG9BZ2dpRHlBWUlBeEJmMFlnRHlBWVNISWlEeHNoR0NBTklBd2dEeHNoREFzZ0J5QU5RUUZ5SWc5QktHeHFJaFFvQWhSQkFXdEJBa2tFUUNBVUtBSUlJaFFnR0NBTVFYOUdJQlFnR0VoeUloUWJJUmdnRHlBTUlCUWJJUXdMSUExQkFtb2hEU0FPUVFKcklnNE5BQXNnQ1VVTkFRc2dCeUFJUVNoc2FpSUpLQUlVUVFGclFRRkxEUUFnQ0NBSUlBd2dERUYvUmhzZ0NTZ0NDQ0FZU0JzaERBc2dERUVBU0EwWklBY2dERUVvYkdvaUIwRUFOZ0lVSUFBZ0NrRUJheUlLTmdMc0NTQUhLQUlZRFFBZ0FDQUFLQUx3Q1VFQmF6WUM4QWtMQWtBZ0FDZ0M4QWtpQ0NBQUtBTGdDU0lIU1FSQUlBQW9Bc1FKSVE4TUFRc2dBQ2dDL0FrTkJDQUFLQUxFQ1NFUEEwQkJBQ0VZUWYvLy8vOEhJUXhCQUNFTkEwQWdEeUFOUVNoc2FpSUpLQUlZQkVBZ0NTQVlJQWtvQWhBaUNTQU1TQ0lPR3lFWUlBa2dEQ0FPR3lFTUN5QU5RUUZxSWcwZ0IwME5BQXNnR0FSQUlBQW9BdEFKSUFBb0F0UUpJZ3hCQkhScUlna2dHQ2dDQURZQ0FDQUpJQmdvQWlRMkFnd2dDU0FZS0FJY05nSUVJQWtnR0NnQ0lEWUNDQ0FBSUF4QkFXbzJBdFFKSUJoQkFEWUNHQ0FJSUJnb0FoUkZheUVJQ3lBSElBaE5EUUFMQ3lBUElBZEJLR3hxSWdrZ0JqWUNEQ0FKUW9DQWdJQVFOd0lRSUFsQkFEWUNHQ0FKSUFZMkFnZ2dBQ0FLUVFGcU5nTHNDU0FBSUFoQkFXbzJBdkFKSUE4Z0IwRUJhaEFkSUFaQkFXb2dBQ2dDNUFraURuQWlCaUFuUncwQUN5QUFLQUxVQ1NJSVJRMERJQUFvQXNRSklna2dBQ2dDNEFraUJrRW9iR29pRENnQ0FDRUhJQUFvQXRBSklRMUJBQ0VLQTBBZ0J5QU5JQXBCQkhScUtBSUFSd1JBSUFnZ0NrRUJhaUlLUncwQkRBVUxDMEVBSVFvZ0JrVU5Bd05BSUJFZ0NTQUtRU2hzYWlJSUtBSUFSd1JBSUFZZ0NrRUJhaUlLUncwQkRBVUxDeUFJSUFjMkFnQWdEQ0FSTmdJQURBTUxJQklOQkF3REMwRUFJUW9nRWtVTkJFRURJUXdNRmdzRFFBd0FDd0FMSUJJTkFTQUFLQUwwQ1NFS0N5QUtJQ2RHRFFFZ0RpQW5ha0VCYXlBT2NDRW5DeUFBSUNjMkF2UUpDeUFBSUFBb0FzUUpJQUFvQXVBSlFTaHNhaUlHTmdMTUNTQUFJQVlvQWdBMkFyZ0tDeUJXSUJOQjNBY1FCeUV2SUFCQkFUWUNwQWtnQUNBYXJTQVNyVUlnaG9RM0F0QUtJQUFvQWhBaUJpZ0NPQ0lPSUFZb0FqUWlFbXdoR0NBQUtBS1VDU0VQQWtBZ0FDZ0NEQ0lHS0FJTUlncEJBVVlFUUNBUFFRQWdHRUVDZEJBREdnd0JDMEVBSVEwQ1FBSkFJQVlvQWhBaUIwRURhMEVDVFFSQUlBWW9BaVFnQUNnQ21BdHNJZ2dnR0NBSUlCaEpHeUVhSUFZb0FpQWhDQ0FIUVg1eFFRUkhEUUVnR0NBYWF5QWFJQWdiSVEwTEFrQUNRQUpBQWtBQ1FBSkFJQWNPQmdFQ0F3QUZCQUFMSUJoRkRRY2dHRUVEY1NFSklBWW9BaXdoQjBFQUlRWWdHRUVCYTBFRFR3UkFJQmhCZkhFaERBTkFJQThnQmtFQ2RDSUlhaUFISUFocUtBSUFOZ0lBSUE4Z0NFRUVjaUlLYWlBSElBcHFLQUlBTmdJQUlBOGdDRUVJY2lJS2FpQUhJQXBxS0FJQU5nSUFJQThnQ0VFTWNpSUlhaUFISUFocUtBSUFOZ0lBSUFaQkJHb2hCaUFNUVFScklnd05BQXNMSUFsRkRRY0RRQ0FQSUFaQkFuUWlDR29nQnlBSWFpZ0NBRFlDQUNBR1FRRnFJUVlnQ1VFQmF5SUpEUUFMREFjTElBcEZEUVVnQmlnQ0ZDRUlRUUFoQndOQVFRQWhEU0FISUJoUERRY0RRQUpBSUFnZ0RVRUNkR29pRENnQ0FDSUpSUVJBUVFBaENRd0JDMEVBSVFaQkFDQVlJQWRySWc0Z0RpQVlTeHNpRGtVTkFBTkFJQThnQmlBSGFrRUNkR29nRFRZQ0FDQUdRUUZxSWdZZ0RDZ0NBQ0lKVHcwQklBWWdEa2NOQUFzTElBb2dEVUVCYWlJTlMwRUFJQmdnQnlBSmFpSUhTeHNOQUFzZ0J5QVlTUTBBQ3d3R0N5QVlSUTBGUVFBaEJnTkFJQThnQmtFQ2RHb2dCaUFTYmlJSElBcHNRUUYySUFZZ0J5QVNiR3RxSUFwd05nSUFJQVpCQVdvaUJpQVlSdzBBQ3d3RkN5QUdLQUljSVE0Z0JpZ0NHQ0VSQWtBZ0dFVU5BQ0FLUVFGcklRWWdHRUVIY1NFSlFRQWhEU0FZUVFGclFRZFBCRUFnR0VGNGNTRU1BMEFnRHlBTlFRSjBJZ2RxSUFZMkFnQWdEeUFIUVFSeWFpQUdOZ0lBSUE4Z0IwRUljbW9nQmpZQ0FDQVBJQWRCREhKcUlBWTJBZ0FnRHlBSFFSQnlhaUFHTmdJQUlBOGdCMEVVY21vZ0JqWUNBQ0FQSUFkQkdISnFJQVkyQWdBZ0R5QUhRUnh5YWlBR05nSUFJQTFCQ0dvaERTQU1RUWhySWd3TkFBc0xJQWxGRFFBRFFDQVBJQTFCQW5ScUlBWTJBZ0FnRFVFQmFpRU5JQWxCQVdzaUNRMEFDd3NnQ2tFQ2F5RUdBMEFDUUNBUklBWWlCMEVDZENJR2FpZ0NBQ0lJSUJKdUlnd2dCaUFPYWlnQ0FDSUdJQkp1SWhoTERRQWdDQ0FNSUJKc2F5SUlJQVlnRWlBWWJHc2lDVXNOQUFOQUlBd2dFbXdoQ2lBSUlRWURRQ0FQSUFZZ0NtcEJBblJxSUFjMkFnQWdCa0VCYWlJR0lBbE5EUUFMSUF4QkFXb2lEQ0FZVFEwQUN3c2dCMEVCYXlFR0lBY05BQXNNQkFzZ0VrVU5BeUFPUlEwRFFRRWdCaWdDSUNJWWF5RVJJQTVCZm5FaENpQU9RUUZ4SVJwQkFDRUlRUUFoQ1FOQUlBZ2hCa0VBSVFjZ0NpRU1JQTVCQVVjRVFBTkFJQThnQnlBU2JDQUpha0VDZEdvZ0dDQVJJQVlnRFVrYk5nSUFJQThnQjBFQmNpQVNiQ0FKYWtFQ2RHb2dHQ0FSSUFaQkFXb2dEVWtiTmdJQUlBZEJBbW9oQnlBR1FRSnFJUVlnREVFQ2F5SU1EUUFMQ3lBYUJFQWdEeUFISUJKc0lBbHFRUUowYWlBWUlCRWdCaUFOU1JzMkFnQUxJQWdnRG1vaENDQUpRUUZxSWdrZ0VrY05BQXNNQXdzZ0dFVU5Ba0VCSUFZb0FpQWlCMnNoQ0NBWVFRTnhJUXhCQUNFR0lCaEJBV3RCQTA4RVFDQVlRWHh4SVJJRFFDQVBJQVpCQW5ScUlBY2dDQ0FHSUExSkd6WUNBQ0FQSUFaQkFYSWlDVUVDZEdvZ0J5QUlJQWtnRFVrYk5nSUFJQThnQmtFQ2NpSUpRUUowYWlBSElBZ2dDU0FOU1JzMkFnQWdEeUFHUVFOeUloaEJBblJxSUFjZ0NDQU5JQmhMR3pZQ0FDQUdRUVJxSVFZZ0VrRUVheUlTRFFBTEN5QU1SUTBDQTBBZ0R5QUdRUUowYWlBSElBZ2dCaUFOU1JzMkFnQWdCa0VCYWlFR0lBeEJBV3NpREEwQUN3d0NDd0pBSUJoRkRRQWdHRUVIY1NFTlFRQWhCeUFZUVFGclFRZFBCRUFnR0VGNGNTRUpBMEFnRHlBSFFRSjBJZ1pxUVFFMkFnQWdEeUFHUVFSeWFrRUJOZ0lBSUE4Z0JrRUljbXBCQVRZQ0FDQVBJQVpCREhKcVFRRTJBZ0FnRHlBR1FSQnlha0VCTmdJQUlBOGdCa0VVY21wQkFUWUNBQ0FQSUFaQkdISnFRUUUyQWdBZ0R5QUdRUnh5YWtFQk5nSUFJQWRCQ0dvaEJ5QUpRUWhySWdrTkFBc0xJQTFGRFFBRFFDQVBJQWRCQW5ScVFRRTJBZ0FnQjBFQmFpRUhJQTFCQVdzaURRMEFDd3NnR2tVTkFTQVNRUUZySVJRZ0RrRUJheUVUUVFFZ0NFRUJkQ0lHYXlFS0lBWkJBV3NoRENBSVFRRnJJUWRCQUNFSklBNGdDR3RCQVhZaURpRW5JQklnQ0d0QkFYWWlFU0VOSUE0aEdDQVJJUVlEUUNBUElCSWdHR3dnQm1wQkFuUnFJaHdvQWdBaUYwRUJSZ1JBSUJ4QkFEWUNBQXNnRjBFQlJpRWNBa0FDUUNBSFFYOUhEUUFnQmlBTlJ3MEFRUUFoQnlBTUlRZ2dEVUVCSUExQkFVb2JRUUZySWdZaERRd0JDd0pBSUFkQkFVY05BQ0FHSUJGSERRQkJBQ0VISUFvaENDQVJRUUZxSWdZZ0ZDQUdJQlJJR3lJR0lSRU1BUXNDUUNBSVFYOUhEUUFnR0NBblJ3MEFRUUFoQ0NBS0lRY2dKMEVCSUNkQkFVb2JRUUZySWhnaEp3d0JDd0pBSUFoQkFVY05BQ0FPSUJoSERRQkJBQ0VJSUF3aEJ5QU9RUUZxSWc0Z0V5QU9JQk5JR3lJWUlRNE1BUXNnQ0NBWWFpRVlJQVlnQjJvaEJnc2dDU0FjYWlJSklCcEpEUUFMREFFTElCaEZEUUFEUUF3QUN3QUxBa0FnQUNnQzdBa2lDRVVFUUNBQUtBS0VDeUVTSUFBb0F1UUtJUXdNQVFzZ0NFRURjU0VLUVFBaEJpQUlRUUZyUVFOUEJFQWdDRUY4Y1NFSEEwQWdBQ2dDeUFrZ0JrRUNkR29nQUNnQ3hBa2dCa0VvYkdvMkFnQWdBQ2dDeUFrZ0JrRUJjaUlKUVFKMGFpQUFLQUxFQ1NBSlFTaHNhallDQUNBQUtBTElDU0FHUVFKeUlnbEJBblJxSUFBb0FzUUpJQWxCS0d4cU5nSUFJQUFvQXNnSklBWkJBM0lpQ1VFQ2RHb2dBQ2dDeEFrZ0NVRW9iR28yQWdBZ0JrRUVhaUVHSUFkQkJHc2lCdzBBQ3dzZ0NnUkFBMEFnQUNnQ3lBa2dCa0VDZEdvZ0FDZ0N4QWtnQmtFb2JHbzJBZ0FnQmtFQmFpRUdJQXBCQVdzaUNnMEFDd3NnQUNnQ2hBc2hFaUFBS0FMa0NpRU1JQWhGRFFBZ09DZ0NBQ0VKUVFBaEJnTkFJQWtnQmtFb2JHb2lCeWdDRkVFQmEwRUJUUVJBSUFjZ0RDQUhLQUlNSWdkSkJIOGdCeUFBS0FMa0NXc0ZJQWNMTmdJSUN5QUdRUUZxSWdZZ0NFY05BQXNMQWtBZ0FDZ0NuQXRGRFFCQkFDRVlJQXdoQ0NBQUtBS2dDeUlHUVFKTERRQURRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBWU9Bd0FCQXdFTElBZ2dBQ0FZUVF4c2FrR2tDMm9vQWdCcklnaEJmMG9OQVNBQUtBTGtDU0FJYWlFSURBRUxJQUFnR0VFTWJHcEJwQXRxS0FJQUlBaHFJZ1pCQUNBQUtBTGtDU0lISUFZZ0IwZ2JheUVJQ3lBSUlnNGdERXNFUUNBSUlBQW9BdVFKYXlFT0N5QUFLQUxjQ1NJSlJRMFZJRGdvQWdBaEIwRUFJUVlEUUNBSElBWkJLR3hxSWdvb0FoUWlEVUVCYTBFQlRRUkFJQW9vQWdnZ0RrWU5Bd3RCQUNFS0lBWkJBV29pQmlBSlJ3MEFDMEVESVF3TUZnc2dBQ2dDM0FraUNVVU5GQ0FBSUJoQkRHeHFRYWdMYWlnQ0FDRU9JRGdvQWdBaEIwRUFJUVlEUUNBSElBWkJLR3hxSWdvb0FoUkJBMFlFUUNBS0tBSUlJQTVHRFFNTFFRQWhDaUFHUVFGcUlnWWdDVWNOQUF0QkF5RU1EQlVMUVFBaENpQUdRUUJJQkVCQkF5RU1EQlVMSUExQkFVc05BVUVESVF3TUZBdEJBQ0VLSUFaQkFFNE5BRUVESVF3TUV3c2dFaUFZU3dSQUlCSWlDaUFZYTBFRGNTSUhCRUFEUUNBQUtBTElDU0lKSUFwQkFuUnFJQWtnQ2tFQmF5SUtRUUowYWlnQ0FEWUNBQ0FIUVFGcklnY05BQXNMSUJJZ0dFRi9jMnBCQTA4RVFBTkFJQUFvQXNnSklna2dDa0VDZENJSGFpQUpJQWRCQkdzaURtb29BZ0EyQWdBZ0FDZ0N5QWtpQ1NBT2FpQUpJQWRCQ0dzaURtb29BZ0EyQWdBZ0FDZ0N5QWtpQ1NBT2FpQUpJQWRCREdzaUIyb29BZ0EyQWdBZ0J5QUFLQUxJQ1NJSmFpQUpJQXBCQkdzaUNrRUNkR29vQWdBMkFnQWdDaUFZU3cwQUN3c2dPQ2dDQUNFSEN5QUFLQUxJQ1NBWVFRSjBhaUFISUFaQktHd2lDV28yQWdBZ0dFRUJhaUlZSVFvZ0VpQVlJZ1pQQkVBRFFDQUFLQUxJQ1NJSElBWkJBblJxS0FJQUlnNGdBQ2dDeEFrZ0NXcEhCRUFnQnlBS1FRSjBhaUFPTmdJQUlBcEJBV29oQ2dzZ0JrRUJhaUlHSUJKTkRRQUxDeUFBSUJoQkRHeHFRYUFMYWlnQ0FDSUdRUU5KRFFBTEN3Si9JQXRCQ0dvaElFRUFJVGxCQUNFMEl3QkI4QU5ySWg4a0FDQXZLQUlBSVNvZ0FDZ0NzQm9oRmlBZlFRQTJBZ3dnQUVHd0NXcEJBRFlDQUNBQUlBQW9BcWdKUVFGcU5nS29DU0FXUVlnUWFpRTJJQlpCeUFwcUlSc2dGa0dJQ21vaE55QVdRY2dKYWlFNklCWkJpQWxxSVQ0Z0ZrSElDR29oUHlBV1FZZ0lhaUZBSUJaQnlBZHFJVUVnRmtHSUIyb2hRaUFXUWNnR2FpRkRJQlpCaUFacUlVUWdGa0hJQldvaFJTQVdRWWdGYWlGR0lCWkJ5QVJxSVVjZ0ZrR0lCR29oU0NBV1FjZ0RhaUZKSUJaQmlBTnFJVW9nRmtISUQyb2hLQ0FXUWNnQ2FpRVVJQlpCbUE5cUlVc2dGa0dJRDJvaFRDQVdRY2dPYWlGTklCWkJER29oVGlBdktBSXdJQUFvQWd3b0FqUnFJUzBnQUNnQ3ZBa2hEaUFXUWN3S2FpRlBJQlpCakF0cUlUc2dGa0dNRUdvaFVDQVdRY3dMYWlGUklCWkJrQkJxSVZJZ0ZrR01ER29oWVNBV1FaUVFhaUZpSUJaQnpBeHFJV01nRmtHWUVHb2haQ0FXUVl3TmFpRmxJQlpCbkJCcUlXWWdGa0hNRFdvaFp5QVdRYUFRYWlGb0lCWkJqQTVxSVdrZ0ZrR2tFR29oYWlBV1FaQUNhaUlqSVdzQ1FBTkFBa0FnTHlnQ0pBMEFJQTRnS2tIWUFXeHFLQUxFQVVVTkFFRUJJUVlNQWdzZ0x5a0NOQ0Z1SUM4b0Fqd2hCeUFBS0FLb0NTRUlJQTRnS2tIWUFXd2lNV29pQmlBQUtBSU1LQUk0TmdJWUlBWWdCellDRUNBR0lHNDNBZ2dnQmlBSU5nSUVBa0FnTHlnQ0JDSUdRUUpHRFFBZ0JrRUhSZzBBSURrTkFFRUJJUVlnSUNBZlFReHFFQUlOQWlBZktBSU1JZ2NnQUNnQ21Ba2dLbXRMRFFJZ0IwVUVRRUVBSVRrTUFRc2dUa0VBUWFRQkVBTWFJQlpCQURZQ0FFRUJJVGtMQWtBZ0h5Z0NEQ0lHQkVBZ0h5QUdRUUZyTmdJTURBRUxJQzhvQWl3aERTQUFLQUs4Q1NFUklDOG9BZ1FoQmlBV1FRQkJxQkFRQXlFS0lDQWdIMEhNQTJvUUFpRUhBa0FDUUFKQUlBWkJBbXNPQmdBQkFRRUJBQUVMUVFFaEJpQWZLQUxNQTBFR2FpSUpRUjlMRFFRZ0IwVU5BUXdFQzBFQklRWWdIeWdDekFOQkFXb2lDVUVmU3cwRElBY05Bd3NnQ2lBSk5nSUFBa0FnQ1VFZlJnUkFJQ0FvQWdnaEV3TkFJQ0FvQWdRaEJpQVRSUVJBUVFBaENpQVVJUWNEUUFKQUlDQW9BZ3hCQTNRaURpQWdLQUlRSWd4cklnbEJJRTRFUUNBR0tBQUFJZ2hCR0hRZ0NFRUlkRUdBZ1B3SGNYSWdDRUVJZGtHQS9nTnhJQWhCR0haeWNpRUlJQ0FvQWdnaUNVVU5BU0FJSUFsMElBWXRBQVJCQ0NBSmEzWnlJUWdNQVFzZ0NVRUJTQVJBUVFBaENBd0JDeUFHTFFBQUlDQW9BZ2dpRFVFWWFpSWFkQ0VJSUFrZ0RXcEJDR3NpQ1VFQlNBMEFBMEFnQmkwQUFTQWFRUWhySWhwMElBaHlJUWdnQ1VFSVNpRU5JQVpCQVdvaEJpQUpRUWhySVFrZ0RRMEFDd3NnSUNBTVFRZHhOZ0lJSUNBZ0RFRUlhaUlHTmdJUUlBWWdEa3NFUUVFQklRWU1DQXNnSUNBZ0tBSUFJQVpCQTNacUlnWTJBZ1FnQnlBSVFSaDJOZ0lBSUFkQkJHb2hCeUFLUVFGcUlncEJnQU5IRFFBTERBTUxBa0FnSUNnQ0RFRURkQ0lLSUNBb0FoQWlER3NpQjBFZ1RnUkFJQVlvQUFBaUIwRVlkQ0FIUVFoMFFZQ0EvQWR4Y2lBSFFRaDJRWUQrQTNFZ0IwRVlkbkp5SUJOMElBWXRBQVJCQ0NBVGEzWnlJUWdNQVFzZ0IwRUJTQVJBUVFBaENBd0JDeUFHTFFBQUlCTkJHR29pR25RaENDQUhJQk5xUVFocklnbEJBVWdOQUFOQUlBWXRBQUVnR2tFSWF5SWFkQ0FJY2lFSUlBbEJDRW9oQnlBR1FRRnFJUVlnQ1VFSWF5RUpJQWNOQUFzTFFRRWhCaUFnSUF4QkFXb2lCellDRUNBZ0lBZEJCM0VpRXpZQ0NDQUhJQXBMRFFVZ0lDQWdLQUlBSUFkQkEzWnFOZ0lFSUFoQmYwb05BQXNNQkF0QkFpQUpRUVpISWc4Z0NVRUdTUnNoRWdKQUFrQUNRQ0FKUVg1eFFRUkdCRUFnSUNBZlFkUURhaEFDQkVCQkFTRUlEQVFMSUI4b0F0UURJZ1pCQTBzRVFFRUJJUWdNQkFzZ0NpQUdOZ0t3QVNBZ0lCOUIxQU5xRUFJRVFFRUJJUWdNQkFzZ0h5Z0MxQU1pQmtFRFN3UkFRUUVoQ0F3RUN5QUtJQVkyQXJRQklDQWdIMEhVQTJvUUFnUkFRUUVoQ0F3RUN5QWZLQUxVQXlJR1FRTkxCRUJCQVNFSURBUUxJQW9nQmpZQ3VBRWdJQ0FmUWRRRGFoQUNCRUJCQVNFSURBUUxJQjhvQXRRRElnWkJBMHNFUUVFQklRZ01CQXNnQ2lBR05nSzhBU0FOUVFKSkRRSWdDVUVGUncwQkRBSUxBa0FDZndKQUFrQUNRQ0FTUVFGckRnSUVBUUFMSUNBb0FnUWhCZ0pBSUNBb0FneEJBM1FnSUNnQ0VHc2lCMEVnVGdSQUlBWW9BQUFpQjBFWWRDQUhRUWgwUVlDQS9BZHhjaUFIUVFoMlFZRCtBM0VnQjBFWWRuSnlJUWdnSUNnQ0NDSUhSUTBCSUFnZ0IzUWdCaTBBQkVFSUlBZHJkbkloQ0F3QkN5QUhRUUJNQkVCQkFDRUlJQXBCQURZQ0RBd0RDeUFHTFFBQUlDQW9BZ2dpQ1VFWWFpSVRkQ0VJSUFjZ0NXcEJDR3NpQ1VFQlNBMEFBMEFnQmkwQUFTQVRRUWhySWhOMElBaHlJUWdnQ1VFSVNpRUhJQVpCQVdvaEJpQUpRUWhySVFrZ0J3MEFDd3NnQ2lBSVFSOTJOZ0lNSUFoQmYwb05BU0FJUVFGMElRbEJBQXdDQ3lBTlFRSlBCRUJCQXlFR0lBbEJBMDBFUUNBSlFRSjBRZndxYWlnQ0FDRUdDMEVBSVF3RFFDQUdJUWNDUUNBTlFRSk5CRUFnSUNnQ0JDRUdBa0FnSUNnQ0RFRURkQ0lhSUNBb0FoQWlIR3NpQ0VFZ1RnUkFJQVlvQUFBaUNFRVlkQ0FJUVFoMFFZQ0EvQWR4Y2lBSVFRaDJRWUQrQTNFZ0NFRVlkbkp5SVJNZ0lDZ0NDQ0lJUlEwQklCTWdDSFFnQmkwQUJFRUlJQWhyZG5JaEV3d0JDeUFJUVFGSUJFQkJBQ0VUREFFTElBWXRBQUFnSUNnQ0NDSVhRUmhxSWc1MElSTWdDQ0FYYWtFSWF5SUlRUUZJRFFBRFFDQUdMUUFCSUE1QkNHc2lEblFnRTNJaEV5QUlRUWhLSVJjZ0JrRUJhaUVHSUFoQkNHc2hDQ0FYRFFBTEMwRUJJUWdnSUNBY1FRRnFJZ1kyQWhBZ0lDQUdRUWR4TmdJSUlBWWdHa3NOQ1NBZ0lDQW9BZ0FnQmtFRGRtbzJBZ1FnSHlBVFFYOXpRUjkySWdZMkF0UUREQUVMSUNBZ0gwSFVBMm9RQWdSQVFRRWhDQXdKQ3lBZktBTFVBeUVHQ3lBR0lBMVBCRUJCQVNFSURBZ0xJQW9nREVFQ2RHb2dCallDa0FFZ0IwRUJheUVHSUF4QkFXb2hEQ0FIRFFBTEMwRURJUWhCQUNFR0lBbEJBMDBFUUNBSlFRSjBRZndxYWlnQ0FDRUlDd0pBQWtBRFFDQUlJUWNnSDBFQU5nTFlBeUFnSUI5QjJBTnFFQUloQ0FKL0lCOG9BdGdESWdsQmYwWUVRRUdBZ0lDQWVDQUlEUUVhREFRTElBZ05BeUFKUVFGcVFRRjJJZ2hCQUNBSWF5QUpRUUZ4R3dzaENDQUtJQVpCQW5ScUlna2dDRHNCb0FFZ0gwRUFOZ0xZQXlBZ0lCOUIyQU5xRUFJaENDQUpBbjhnSHlnQzJBTWlDVUYvUmdSQVFZQ0FnSUI0SUFnTkFSb01Bd3NnQ0EwQ0lBbEJBV3BCQVhZaUNFRUFJQWhySUFsQkFYRWJDenNCb2dFZ0IwRUJheUVJSUFaQkFXb2hCaUFIRFFBTFFRQWhDQXdIQzBFQklRZ01CZ3RCQVNFSURBVUxJQW9nQ0VFY2RqWUNUQ0FJUVFSMElRbEJBUXNoQmlBS0lBbEJIM1kyQWhBZ0NpQUpRWDlNQkg4Z0NVRUJkQVVnQ2lBSlFSeDJOZ0pRSUFaQkFXb2hCaUFKUVFSMEN5SUhRUjkyTmdJVUlBb2dCMEVBU0FSL0lBZEJBWFFGSUFvZ0IwRWNkallDVkNBR1FRRnFJUVlnQjBFRWRBc2lCMEVmZGpZQ0dDQUtJQWRCQUVnRWZ5QUhRUUYwQlNBS0lBZEJISFkyQWxnZ0JrRUJhaUVHSUFkQkJIUUxJZ2RCSDNZMkFod2dDaUFIUVFCSUJIOGdCMEVCZEFVZ0NpQUhRUngyTmdKY0lBWkJBV29oQmlBSFFRUjBDeUlIUVI5Mk5nSWdJQW9nQjBFQVNBUi9JQWRCQVhRRklBb2dCMEVjZGpZQ1lDQUdRUUZxSVFZZ0IwRUVkQXNpQjBFZmRqWUNKQ0FLSUFkQkFFZ0VmeUFIUVFGMEJTQUtJQWRCSEhZMkFtUWdCa0VCYWlFR0lBZEJCSFFMSWdkQkgzWTJBaWdnQjBFQVRnUkFJQW9nQjBFY2RqWUNhQ0FHUVFGcUlRWUxJQ0FnSUNnQ0VDQUdRUU5zYWtFSWFpSUpOZ0lRSUNBZ0NVRUhjU0lITmdJSVFRRWhDQ0FnS0FJTVFRTjBJZ3dnQ1VrTkF5QWdJQ0FvQWdBaURTQUpRUU4yYWlJR05nSUVBbjhDUUFKQUlBd2dDV3NpQ1VFZ1RnUkFJQVlvQUFBaUNVRVlkQ0FKUVFoMFFZQ0EvQWR4Y2lBSlFRaDJRWUQrQTNFZ0NVRVlkbkp5SVJNZ0IwVU5BU0FUSUFkMElBWXRBQVJCQ0NBSGEzWnlJUk1NQVFzZ0NVRUFUQVJBUVFBaEV5QUtRUUEyQWl3TUFnc2dCaTBBQUNBSFFSaHlJZzUwSVJNZ0J5QUpha0VJYXlJSlFRRklEUUFEUUNBR0xRQUJJQTVCQ0dzaURuUWdFM0loRXlBSlFRaEtJUWNnQmtFQmFpRUdJQWxCQ0dzaENTQUhEUUFMQ3lBS0lCTkJIM1kyQWl3Z0UwRi9TZzBBSUJOQkFYUWhDVUVBREFFTElBb2dFMEVjZGpZQ2JDQVRRUVIwSVFsQkFRc2hCaUFLSUFsQkgzWTJBakFnQ2lBSlFRQklCSDhnQ1VFQmRBVWdDaUFKUVJ4Mk5nSndJQVpCQVdvaEJpQUpRUVIwQ3lJSFFSOTJOZ0kwSUFvZ0IwRUFTQVIvSUFkQkFYUUZJQW9nQjBFY2RqWUNkQ0FHUVFGcUlRWWdCMEVFZEFzaUIwRWZkallDT0NBS0lBZEJBRWdFZnlBSFFRRjBCU0FLSUFkQkhIWTJBbmdnQmtFQmFpRUdJQWRCQkhRTElnZEJIM1kyQWp3Z0NpQUhRUUJJQkg4Z0IwRUJkQVVnQ2lBSFFSeDJOZ0o4SUFaQkFXb2hCaUFIUVFSMEN5SUhRUjkyTmdKQUlBb2dCMEVBU0FSL0lBZEJBWFFGSUFvZ0IwRWNkallDZ0FFZ0JrRUJhaUVHSUFkQkJIUUxJZ2RCSDNZMkFrUWdDaUFIUVFCSUJIOGdCMEVCZEFVZ0NpQUhRUngyTmdLRUFTQUdRUUZxSVFZZ0IwRUVkQXNpQjBFZmRqWUNTQ0FIUVFCSUJIOGdCMEVCZEFVZ0NpQUhRUngyTmdLSUFTQUdRUUZxSVFZZ0IwRUVkQXNoQnlBZ0lDQW9BaEFnQmtFRGJHcEJDR29pQmpZQ0VDQWdJQVpCQjNFMkFnZ2dCaUFnS0FJTVFRTjBTdzBESUNBZ0RTQUdRUU4yYWpZQ0JDQWZJQWMyQXRRREMwRUJJUWdnSUNBZlFkUURhaEFDRFFJZ0h5Z0MxQU1pQmtFRFN3MENJQW9nQmpZQ2pBRkJBQ0VJREFJTElDQWdIMEhVQTJvZ0RVRUNTeUlHRUJFRVFFRUJJUWdNQWdzZ0RTQWZLQUxVQXlJSFRRUkFRUUVoQ0F3Q0N5QUtJQWMyQXNBQklDQWdIMEhVQTJvZ0JoQVJCRUJCQVNFSURBSUxJQTBnSHlnQzFBTWlCMDBFUUVFQklRZ01BZ3NnQ2lBSE5nTEVBU0FnSUI5QjFBTnFJQVlRRVFSQVFRRWhDQXdDQ3lBTklCOG9BdFFESWdkTkJFQkJBU0VJREFJTElBb2dCellDeUFFZ0lDQWZRZFFEYWlBR0VCRUVRRUVCSVFnTUFnc2dEU0FmS0FMVUF5SUdUUVJBUVFFaENBd0NDeUFLSUFZMkFzd0JDeUFmSUFvb0FyQUJJZ2xCQWswRWZ5QUpRUUowUWZBcWFpZ0NBQVZCQXdzMkF0UURRUUFoQmdKQUFrQURRQ0FmUVFBMkF0Z0RJQ0FnSDBIWUEyb1FBaUVIQW44Z0h5Z0MyQU1pQ0VGL1JnUkFRWUNBZ0lCNElBY05BUm9NQkFzZ0J3MERJQWhCQVdwQkFYWWlCMEVBSUFkcklBaEJBWEViQ3lFSElBb2dCa0VDZEdvaUNTQUhPd0hRQVNBZlFRQTJBdGdESUNBZ0gwSFlBMm9RQWlFSUlBa0NmeUFmS0FMWUF5SUpRWDlHQkVCQmdJQ0FnSGdnQ0EwQkdnd0RDeUFJRFFJZ0NVRUJha0VCZGlJSFFRQWdCMnNnQ1VFQmNSc0xJZ2s3QWRJQklCOGdIeWdDMUFNaUIwRUJhellDMUFNZ0JrRUJhaUVHSUFjTkFBc2dIeUFLS0FLMEFTSUdRUU5KQkg4Z0JrRUNkRUh3S21vb0FnQUZRUU1MTmdMVUEwRUFJUVlDUUFOQUlCOUJBRFlDMkFNZ0lDQWZRZGdEYWhBQ0lRY0NRQ0FmS0FMWUF5SUlRWDlHQkVCQmdJQ0FnSGdoQ0NBSFJRMEZEQUVMSUFjTkJDQUlRUUZxUVFGMklnZEJBQ0FIYXlBSVFRRnhHeUVJQ3lBS0lBWkJBblJxSWdrZ0NEc0I0QUVnSDBFQU5nTFlBeUFnSUI5QjJBTnFFQUloQnlBSkFuOGdIeWdDMkFNaUNVRi9SZ1JBUVlDQWdJQjRJQWNOQVJvTUF3c2dCdzBDSUFsQkFXcEJBWFlpQjBFQUlBZHJJQWxCQVhFYkN5SUpPd0hpQVNBZklCOG9BdFFESWdkQkFXczJBdFFESUFaQkFXb2hCaUFIRFFBTElCOGdDVFlDMEFNZ0h5QUtLQUs0QVNJR1FRSk5CSDhnQmtFQ2RFSHdLbW9vQWdBRlFRTUxOZ0xVQTBFQUlRWURRQ0FnSUI5QjBBTnFFQkFFUUVFQklRZ01CUXNnQ2lBR1FRSjBhaUlISUI4b0F0QURPd0h3QVNBZ0lCOUIwQU5xRUJBRVFFRUJJUWdNQlFzZ0J5QWZLQUxRQXpzQjhnRWdIeUFmS0FMVUF5SUhRUUZyTmdMVUF5QUdRUUZxSVFZZ0J3MEFDeUFmSUFvb0Fyd0JJZ1pCQWswRWZ5QUdRUUowUWZBcWFpZ0NBQVZCQXdzMkF0UURRUUFoQmdOQUlDQWdIMEhRQTJvUUVBUkFRUUVoQ0F3RkN5QUtJQVpCQW5ScUlnY2dIeWdDMEFNN0FZQUNJQ0FnSDBIUUEyb1FFQVJBUVFFaENBd0ZDeUFISUI4b0F0QURPd0dDQWlBZklCOG9BdFFESWdkQkFXczJBdFFESUFaQkFXb2hCa0VBSVFnZ0J3MEFDd3dEQ3lBZklBZzJBdEFEUVFFaENBd0NDeUFmSUFjMkF0QURRUUVoQ0F3QkN5QWZJQWsyQXRBRFFRRWhDQXRCQVNFR0lBZ05Bd0pBSUJKQkFVY0VRQ0FnSUI5QjJBTnFFQUlOQlNBZktBTFlBeUlIUVRCUERRVWdDa0hRUDBHZ1B5QVBHeUFIYWkwQUFDSUhOZ0lFSUFkRkRRSU1BUXNnQ2lBS0tBSUFJZ2RCQjJzaUNFRUNkRUZ3Y1NJSlFUQnJJQWtnQ0VFTFN4dEJEMEVBSUFkQkVrc2JjallDQkFzZ0gwRUFOZ0xZQXlBZ0lCOUIyQU5xRUFJaENDQWZLQUxZQXlJSFFYOUdEUU1nQ0EwRElBZEJBV3BCQVhZaUNFRUFJQWhySUFkQkFYRWJJZ2RCWmtnTkF5QUhRUmxLRFFNZ0VTQXhhaUVNSUFvZ0J6WUNDQ0FLS0FJRUlRZ0NRQUpBSUFvb0FnQkJCMGtFUUVFQUlRbEJBeUVHQTBBZ0JpRUhJQWhCQVhFRVFDQWpJQWxCQW5ScVFiZ05haUFnSUNNZ0NVRUdkR3BCT0dvZ0RDQUpJQ01RQ2tFUUVBWWlCa0VRZGpZQ0FDQUdRUTl4RFFRZ0l5QUpRUUYwYWlBR1FRUjJRZjhCY1RzQkFDQWpJQWxCQVhJaURrRUNkR3BCdUExcUlDQWdJeUFPUVFaMGFrRTRhaUFNSUE0Z0l4QUtRUkFRQmlJR1FSQjJOZ0lBSUFaQkQzRU5CQ0FqSUE1QkFYUnFJQVpCQkhaQi93RnhPd0VBSUNNZ0NVRUNjaUlPUVFKMGFrRzREV29nSUNBaklBNUJCblJxUVRocUlBd2dEaUFqRUFwQkVCQUdJZ1pCRUhZMkFnQWdCa0VQY1EwRUlDTWdEa0VCZEdvZ0JrRUVka0gvQVhFN0FRQWdJeUFKUVFOeUlnNUJBblJxUWJnTmFpQWdJQ01nRGtFR2RHcEJPR29nRENBT0lDTVFDa0VRRUFZaUJrRVFkallDQUNBR1FROXhEUVFnQ2lBT1FRRjBhaUFHUVFSMlFmOEJjVHNCa0FJTElBaEJBWFloQ0NBSFFRRnJJUVlnQ1VFRWFpRUpJQWNOQUFzTUFRc2dJQ0JOSUF4QkFDQWpFQXBCRUJBR0lnWkJEM0VOQVNBS0lBWkJCSFpCL3dGeE93SEFBa0VBSVFsQkF5RUdBMEFnQmlFSElBaEJBWEVFUUNBaklBbEJBblJxUWJnTmFpQWdJQ01nQ1VFR2RHcEJQR29nRENBSklDTVFDa0VQRUFZaUJrRVBkallDQUNBR1FROXhEUU1nSXlBSlFRRjBhaUFHUVFSMlFmOEJjVHNCQUNBaklBbEJBWElpRGtFQ2RHcEJ1QTFxSUNBZ0l5QU9RUVowYWtFOGFpQU1JQTRnSXhBS1FROFFCaUlHUVE5Mk5nSUFJQVpCRDNFTkF5QWpJQTVCQVhScUlBWkJCSFpCL3dGeE93RUFJQ01nQ1VFQ2NpSU9RUUowYWtHNERXb2dJQ0FqSUE1QkJuUnFRVHhxSUF3Z0RpQWpFQXBCRHhBR0lnWkJEM1kyQWdBZ0JrRVBjUTBESUNNZ0RrRUJkR29nQmtFRWRrSC9BWEU3QVFBZ0l5QUpRUU55SWc1QkFuUnFRYmdOYWlBZ0lDTWdEa0VHZEdwQlBHb2dEQ0FPSUNNUUNrRVBFQVlpQmtFUGRqWUNBQ0FHUVE5eERRTWdDaUFPUVFGMGFpQUdRUVIyUWY4QmNUc0JrQUlMSUFoQkFYWWhDQ0FIUVFGcklRWWdDVUVFYWlFSklBY05BQXNMSUFoQkEzRUVRQ0FnSUV4QmYwRUVFQVlpQmtFUGNRMEJJQW9nQmtFRWRrSC9BWEU3QWNJQ0lDQWdTMEYvUVFRUUJpSUdRUTl4RFFFZ0NpQUdRUVIyUWY4QmNUc0J4QUlMUVFBaEJpQUlRUUp4UlEwQUlDQWdUeUFNUVJBZ0l4QUtRUThRQmlJSFFROXhCRUFnQnlFR0RBRUxJQXBCaUJCcUlBZEJEM1kyQWdBZ0ZpQUhRUVIyUWY4QmNUc0JzQUlnSUNBN0lBeEJFU0FqRUFwQkR4QUdJZ2RCRDNFRVFDQUhJUVlNQVFzZ1VDQUhRUTkyTmdJQUlCWWdCMEVFZGtIL0FYRTdBYklDSUNBZ1VTQU1RUklnSXhBS1FROFFCaUlIUVE5eEJFQWdCeUVHREFFTElGSWdCMEVQZGpZQ0FDQVdJQWRCQkhaQi93RnhPd0cwQWlBZ0lHRWdERUVUSUNNUUNrRVBFQVlpQjBFUGNRUkFJQWNoQmd3QkN5QmlJQWRCRDNZMkFnQWdGaUFIUVFSMlFmOEJjVHNCdGdJZ0lDQmpJQXhCRkNBakVBcEJEeEFHSWdkQkQzRUVRQ0FISVFZTUFRc2daQ0FIUVE5Mk5nSUFJQllnQjBFRWRrSC9BWEU3QWJnQ0lDQWdaU0FNUVJVZ0l4QUtRUThRQmlJSFFROXhCRUFnQnlFR0RBRUxJR1lnQjBFUGRqWUNBQ0FXSUFkQkJIWkIvd0Z4T3dHNkFpQWdJR2NnREVFV0lDTVFDa0VQRUFZaUIwRVBjUVJBSUFjaEJnd0JDeUJvSUFkQkQzWTJBZ0FnRmlBSFFRUjJRZjhCY1RzQnZBSWdJQ0JwSUF4QkZ5QWpFQXBCRHhBR0lnZEJEM0VFUUNBSElRWU1BUXNnYWlBSFFROTJOZ0lBSUJZZ0IwRUVka0gvQVhFN0FiNENDeUFnSUNBb0FnZ2dJQ2dDQkNBZ0tBSUFhMEVEZEdvMkFoQWdCZzBEQzBFQUlUa0xJQUFvQWd3b0FrQWhKQ0FBS0FLOENTSXBJREZxSWc0Z0ZpZ0NBQ0lNTmdJQUlBNGdEaWdDeEFGQkFXb2lCellDeEFFZ0t5QXJLQUlBSWdnZ0tpQXJLQUlFSWdsd0lnWkJCSFJxSUNvZ0Jtc2lDa0VJZEdvMkFnd2dLeUFJSUFrZ0t5Z0NDR3dpQ1VFSWRHb2dDa0VHZEdvZ0JrRURkR29pQmpZQ0VDQXJJQVlnQ1VFR2RHbzJBaFFDUUFKQUFrQUNRQUpBQW44Q1FBSkFBbjhDUUFKQUFrQUNmd0pBQWtBQ1FBSkFBa0FDUUFKQUlBd0VRQ0FNUVI5R0JFQWdLU0F4YWlJR1FRQTJBaFFnQmtFY2FpRUlJQWRCQWs4TkFrRVhJUm9nSDBFUWFpRUdJQlFoQ1FOQUlBaEJFRHNCQUNBR0lBa29BZ0E2QUFBZ0JpQUpLQUlFT2dBQklBWWdDU2dDQ0RvQUFpQUdJQWtvQWd3NkFBTWdCaUFKS0FJUU9nQUVJQVlnQ1NnQ0ZEb0FCU0FHSUFrb0FoZzZBQVlnQmlBSktBSWNPZ0FISUFZZ0NTZ0NJRG9BQ0NBR0lBa29BaVE2QUFrZ0JpQUpLQUlvT2dBS0lBWWdDU2dDTERvQUN5QUdJQWtvQWpBNkFBd2dCaUFKS0FJME9nQU5JQVlnQ1NnQ09Eb0FEaUFHSUFrb0FqdzZBQThnR2lJSFFRRnJJUm9nQ0VFQ2FpRUlJQVpCRUdvaEJpQUpRVUJySVFrZ0J3MEFDeUFySUI5QkVHb1FEd3dWQ3lBcElERnFJaGNnSXlrQ0FEY0NIQ0FYSUNNcEFTNDNBVW9nRnlCcktRSW9Od0pFSUJjZ0l5a0NJRGNDUENBWElDTXBBaGczQWpRZ0Z5QWpLUUlRTndJc0lCY2dJeWtDQ0RjQ0pBSkFJQllvQWdnaUJrVU5BQUpBSUFZZ0xXb2lMVUVBU0FSQVFUUWhCZ3dCQzBGTUlRWWdMVUUwU0EwQkN5QUdJQzFxSVMwTElCZEJIR29oQnlBWElDMDJBaFFDUUFKQUlBeEJCazBFUUNBSEx3RUFSUTBCSUJRZ0xVRUFJQ2dvQWdBUUJVVU5Ba0VCSVFZTUdRdEJzQ29oR2tFUElRWWdGeThCVEFSQUlCWW9Bb0FQSWdnZ0ZpZ0M3QTRpQ1dvaUNpQVdLQUtFRHlJU0lCWW9BdkFPSWhGcUlnOXJJUTBnQ1NBSWF5SUlJQkVnRW1zaUNXc2hFaUFJSUFscUlSRWdDaUFQYWlFUElCWW9BdlFPSWdnZ0ZpZ0MxQTRpQ1dvaUNpQVdLQUw4RGlJY0lCWW9BdWdPSWhWcUloQnJJUk1nQ1NBSWF5SUlJQlVnSEdzaUNXc2hIQ0FJSUFscUlSVWdDaUFRYWlFUUlCWW9BdVFPSWdnZ0ZpZ0MwQTRpQ1dvaUNpQVdLQUw0RGlJZUlCWW9BdGdPSWlGcUlpSnJJUmtnQ1NBSWF5SUlJQ0VnSG1zaUNXc2hIaUFJSUFscUlTRWdDaUFpYWlFaUlCWW9BdHdPSWdnZ0ZpZ0N5QTRpQ1dvaUNpQVdLQUxnRGlJbElCWW9Bc3dPSWl4cUlpNXJJUjBnQ1NBSWF5SUlJQ3dnSldzaUNXc2hKU0FJSUFscUlTd2dDaUF1YWlFdUlDMUJnRHhxTFFBQUlRb2dMVUdRUFdvdEFBQkJER3hCd0R4cUtBSUFJUWdnRmdKL0lDMUJERThFUUNBV0lBZ2dDa0VDYTNRaUNDQVFJQzVxSWdrZ0R5QWlhaUlLYTJ3MkF2Z09JQllnTGlBUWF5SVFJQ0lnRDJzaUQyc2dDR3cyQXVnT0lCWWdEeUFRYWlBSWJEWUMyQTRnRmlBSklBcHFJQWhzTmdMSURpQVdJQlVnTEdvaUNTQVJJQ0ZxSWdwcklBaHNOZ0w4RGlBV0lDd2dGV3NpRHlBaElCRnJJaEZySUFoc05nTHNEaUFXSUE4Z0VXb2dDR3cyQXR3T0lCWWdDU0FLYWlBSWJEWUN6QTRnRmlBY0lDVnFJZ2tnRWlBZWFpSUtheUFJYkRZQ2dBOGdGaUFsSUJ4ckloRWdIaUFTYXlJU2F5QUliRFlDOEE0Z0ZpQVJJQkpxSUFoc05nTGdEaUFXSUFrZ0Ntb2dDR3cyQXRBT0lCWWdIU0FUYXlJSklCa2dEV3NpQ21zZ0NHdzJBdlFPSUJZZ0NTQUthaUFJYkRZQzVBNGdGaUFOSUJscUlna2dFeUFkYWlJS2FpQUliRFlDMUE0Z0NpQUpheUFJYkF3QkN5QVdRUUZCQWlBdFFRWnJRUVpKR3lJSklCQWdMbW9pSmlBUElDSnFJak5ySUFoc2FrRUNJQXBySWdwMU5nTDREaUFXSUM0Z0VHc2lFQ0FpSUE5cklnOXJJQWhzSUFscUlBcDFOZ0xvRGlBV0lBOGdFR29nQ0d3Z0NXb2dDblUyQXRnT0lCWWdKaUF6YWlBSWJDQUphaUFLZFRZQ3lBNGdGaUFWSUN4cUlnOGdFU0FoYWlJUWF5QUliQ0FKYWlBS2RUWUMvQTRnRmlBc0lCVnJJaFVnSVNBUmF5SVJheUFJYkNBSmFpQUtkVFlDN0E0Z0ZpQVJJQlZxSUFoc0lBbHFJQXAxTmdMY0RpQVdJQThnRUdvZ0NHd2dDV29nQ25VMkFzd09JQllnSENBbGFpSVJJQklnSG1vaUQyc2dDR3dnQ1dvZ0NuVTJBb0FQSUJZZ0pTQWNheUljSUI0Z0Vtc2lFbXNnQ0d3Z0NXb2dDblUyQXZBT0lCWWdFaUFjYWlBSWJDQUphaUFLZFRZQzRBNGdGaUFQSUJGcUlBaHNJQWxxSUFwMU5nTFFEaUFXSUIwZ0Uyc2lFaUFaSUExckloRnJJQWhzSUFscUlBcDFOZ0wwRGlBV0lCRWdFbW9nQ0d3Z0NXb2dDblUyQXVRT0lCWWdEU0FaYWlJTklCTWdIV29pRW1vZ0NHd2dDV29nQ25VMkF0UU9JQklnRFdzZ0NHd2dDV29nQ25VTE5nS0VEd3NnRkNFSklDZ2hDQU5BSUFZaENpQUpJQllnR2lnQ0FFRUNkR3BCeUE1cUtBSUFJZ1kyQWdBQ1FBSkFJQVpGQkVBZ0J5OEJBRVVOQVF0QkFTRUdJQWtnRnlnQ0ZFRUJJQWdvQWdBUUJVVU5BUXdiQ3lBSlFmLy8vd2MyQWdBTElCcEJCR29oR2lBS1FRRnJJUVlnQ0VFRWFpRUlJQWRCQW1vaEJ5QUpRVUJySVFrZ0NnMEFDd3dFQ3lBVVFmLy8vd2MyQWdBTEFrQWdGeThCSGdSQUlFb2dGeWdDRkVFQUlCWW9Bc3dQRUFWRkRRRkJBU0VHREJnTElFcEIvLy8vQnpZQ0FBc0NRQ0FYTHdFZ0JFQWdTU0FYS0FJVVFRQWdGaWdDMEE4UUJVVU5BVUVCSVFZTUdBc2dTVUgvLy84SE5nSUFDd0pBSUJjdkFTSUVRQ0JJSUJjb0FoUkJBQ0FXS0FMVUR4QUZSUTBCUVFFaEJnd1lDeUJJUWYvLy93YzJBZ0FMQWtBZ0Z5OEJKQVJBSUVjZ0Z5Z0NGRUVBSUJZb0F0Z1BFQVZGRFFGQkFTRUdEQmdMSUVkQi8vLy9CellDQUFzQ1FDQVhMd0VtQkVBZ1JpQVhLQUlVUVFBZ0ZpZ0MzQThRQlVVTkFVRUJJUVlNR0FzZ1JrSC8vLzhITmdJQUN3SkFJQmN2QVNnRVFDQkZJQmNvQWhSQkFDQVdLQUxnRHhBRlJRMEJRUUVoQmd3WUN5QkZRZi8vL3djMkFnQUxBa0FnRnk4QktnUkFJRVFnRnlnQ0ZFRUFJQllvQXVRUEVBVkZEUUZCQVNFR0RCZ0xJRVJCLy8vL0J6WUNBQXNDUUNBWEx3RXNCRUFnUXlBWEtBSVVRUUFnRmlnQzZBOFFCVVVOQVVFQklRWU1HQXNnUTBILy8vOEhOZ0lBQ3dKQUlCY3ZBUzRFUUNCQ0lCY29BaFJCQUNBV0tBTHNEeEFGUlEwQlFRRWhCZ3dZQ3lCQ1FmLy8vd2MyQWdBTEFrQWdGeThCTUFSQUlFRWdGeWdDRkVFQUlCWW9BdkFQRUFWRkRRRkJBU0VHREJnTElFRkIvLy8vQnpZQ0FBc0NRQ0FYTHdFeUJFQWdRQ0FYS0FJVVFRQWdGaWdDOUE4UUJVVU5BVUVCSVFZTUdBc2dRRUgvLy84SE5nSUFDd0pBSUJjdkFUUUVRQ0EvSUJjb0FoUkJBQ0FXS0FMNER4QUZSUTBCUVFFaEJnd1lDeUEvUWYvLy93YzJBZ0FMQWtBZ0Z5OEJOZ1JBSUQ0Z0Z5Z0NGRUVBSUJZb0F2d1BFQVZGRFFGQkFTRUdEQmdMSUQ1Qi8vLy9CellDQUFzQ1FDQVhMd0U0QkVBZ09pQVhLQUlVUVFBZ0ZpZ0NnQkFRQlVVTkFVRUJJUVlNR0FzZ09rSC8vLzhITmdJQUN5QVhMd0U2QkVBZ05pRUlJQnNoQ1NBM0lCY29BaFJCQUNBV0tBS0VFQkFGUlEwRFFRRWhCZ3dYQ3lBM1FmLy8vd2MyQWdBZ05pRUlJQnNoQ1F3Q0N5QXBJREZxSWdaQ0FEY0NIQ0FHSUMwMkFoUWdCa0lBTndGS0lBWkNBRGNDUkNBR1FnQTNBandnQmtJQU53STBJQVpDQURjQ0xDQUdRZ0EzQWlRZ0h5QXJLQUlFSWdZMkF0d0RJQjhnS3lnQ0NEWUM0QU1nS2lBR2JpSUhRUVIwSVJrZ0tpQUdJQWRzYTBFRWRDRWVRUUFoSEF3Q0N5QUlRUkE3QVFBZ0JrRVFPd0ZLSUFaQmtJREFBRFlCUmlBR1FwQ0F3SUNBZ29BSU53RStJQVpDa0lEQWdJQ0NnQWczQVRZZ0JrS1FnTUNBZ0lLQUNEY0JMaUFHUXBDQXdJQ0Fnb0FJTndFbUlBWkNrSURBZ0lDQ2dBZzNBUjRNRWdzZ0Z5Z0NHQ0FYS0FJVWFpSUdRVE1nQmtFelNCc2lCa0VBSUFaQkFFb2JJZ2RCQW5SQjBEMXFLQUlBSVFvQ1FBSkFJQmN2QVU0TkFDQVhMd0ZRRFFBZ1RDZ0NBQ0VIREFFTElBcEJrRDFxTFFBQVFReHNRY0E4YWlnQ0FDRUdRUUVoRXlBSFFRWnJRUzFOQkVCQkFDRVRJQVlnQ2tHQVBHb3RBQUJCQVd0MElRWUxJQllnRmlnQ2lBOGlCeUFXS0FLUUR5SU5heUlTSUJZb0Fvd1BJaEVnRmlnQ2xBOGlEMnNpR21zZ0Jtd2dFM1UyQXBRUElCWWdFaUFhYWlBR2JDQVRkVFlDa0E4Z0ZpQUhJQTFxSWdjZ0R5QVJhaUlOYXlBR2JDQVRkVFlDakE4Z0ZpQUhJQTFxSUFac0lCTjFJZ2MyQW9nUElCWWdGaWdDcEE4aURTQVdLQUtjRHlJU2FpSVJJQllvQXFBUElnOGdGaWdDbUE4aUdtb2lIR29nQm13Z0UzVTJBcGdQSUJZZ0VpQU5heUlOSUJvZ0Qyc2lFbW9nQm13Z0UzVTJBcUFQSUJZZ0hDQVJheUFHYkNBVGRUWUNuQThnRmlBU0lBMXJJQVpzSUJOMU5nS2tEd3NnQ1NBSE5nSUFBa0FDUUNBSFJRUkFJQmN2QVR4RkRRRUxRUUVoQmlBSklBcEJBU0FJS0FJQUVBVkZEUUVNRlFzZ0NVSC8vLzhITmdJQUN5QUpJQllvQW93UElnWTJBa0FnQ1VGQWF5RUhBa0FDUUNBR1JRUkFJQmN2QVQ1RkRRRUxRUUVoQmlBSElBcEJBU0FJS0FJRUVBVkZEUUVNRlFzZ0IwSC8vLzhITmdJQUN5QUpJQllvQXBBUElnWTJBb0FCSUFsQmdBRnFJUWNDUUFKQUlBWkZCRUFnRjBGQWF5OEJBRVVOQVF0QkFTRUdJQWNnQ2tFQklBZ29BZ2dRQlVVTkFRd1ZDeUFIUWYvLy93YzJBZ0FMSUFrZ0ZpZ0NsQThpQmpZQ3dBRWdDVUhBQVdvaEJ3SkFBa0FnQmtVRVFDQVhMd0ZDUlEwQkMwRUJJUVlnQnlBS1FRRWdDQ2dDREJBRlJRMEJEQlVMSUFkQi8vLy9CellDQUFzZ0NTQkxLQUlBSWdZMkFvQUNJQWxCZ0FKcUlRY0NRQUpBSUFaRkJFQWdGeThCUkVVTkFRdEJBU0VHSUFjZ0NrRUJJQWdvQWhBUUJVVU5BUXdWQ3lBSFFmLy8vd2MyQWdBTElBa2dGaWdDbkE4aUJqWUN3QUlnQ1VIQUFtb2hCd0pBQWtBZ0JrVUVRQ0FYTHdGR1JRMEJDMEVCSVFZZ0J5QUtRUUVnQ0NnQ0ZCQUZSUTBCREJVTElBZEIvLy8vQnpZQ0FBc2dDU0FXS0FLZ0R5SUdOZ0tBQXlBSlFZQURhaUVIQWtBQ1FDQUdSUVJBSUJjdkFVaEZEUUVMUVFFaEJpQUhJQXBCQVNBSUtBSVlFQVZGRFFFTUZRc2dCMEgvLy84SE5nSUFDeUFKSUJZb0FxUVBJZ1kyQXNBRElBbEJ3QU5xSVFjQ1FBSkFJQVpGQkVBZ0Z5OEJTa1VOQVF0QkFTRUdJQWNnQ2tFQklBZ29BaHdRQlVVTkFRd1ZDeUFIUWYvLy93YzJBZ0FMSUF4QkJrOEVRQ0FPSVFrZ0gwRVFhaUVaUVFBaEUwRUFJUThqQUVIUUFHc2lFQ1FBQWtBZ0trVU5BQ0FyS0FJQUlnMGdLaUFyS0FJRUlncHVJaEVnQ213aUJrRUlkR29nS2lBR2F5SU1RUVIwYWlFSUlBcEJCSFFoQnlBcktBSUlJUTRnRUVFZ2FpRVNJQW9nS2tzaUdrVUVRQ0FRSUFnZ0IwRi9jMm9pQmkwQUFEb0FJQ0FRSUFnZ0Iyc3RBQUE2QUNFZ0VDQUdMUUFDT2dBaUlCQWdCaTBBQXpvQUl5QVFJQVl0QUFRNkFDUWdFQ0FHTFFBRk9nQWxJQkFnQmkwQUJqb0FKaUFRSUFZdEFBYzZBQ2NnRUNBR0xRQUlPZ0FvSUJBZ0JpMEFDVG9BS1NBUUlBWXRBQW82QUNvZ0VDQUdMUUFMT2dBcklCQWdCaTBBRERvQUxDQVFJQVl0QUEwNkFDMGdFQ0FHTFFBT09nQXVJQkFnQmkwQUR6b0FMeUFRSUFZdEFCQTZBREFnRUNBR0xRQVJPZ0F4SUJBZ0JpMEFFam9BTWlBUUlBWXRBQk02QURNZ0VDQUdMUUFVT2dBMElCQkJOV29oRWdzZ0NpQU9iQ0VPSUF3RWZ5QVFJQWhCQVdzaUJpMEFBRG9BQUNBUUlBWWdCMm9pQmkwQUFEb0FBU0FRSUFZZ0Iyb2lCaTBBQURvQUFpQVFJQVlnQjJvaUJpMEFBRG9BQXlBUUlBWWdCMm9pQmkwQUFEb0FCQ0FRSUFZZ0Iyb2lCaTBBQURvQUJTQVFJQVlnQjJvaUJpMEFBRG9BQmlBUUlBWWdCMm9pQmkwQUFEb0FCeUFRSUFZZ0Iyb2lCaTBBQURvQUNDQVFJQVlnQjJvaUJpMEFBRG9BQ1NBUUlBWWdCMm9pQmkwQUFEb0FDaUFRSUFZZ0Iyb2lCaTBBQURvQUN5QVFJQVlnQjJvaUJpMEFBRG9BRENBUUlBWWdCMm9pQmkwQUFEb0FEU0FRSUFZZ0Iyb2lCaTBBQURvQURpQVFJQVlnQjJvdEFBQTZBQThnRUVFUWFnVWdFQXNoQmlBTklBNUJDSFJxSUJFZ0NrRURkQ0lIYkVFRGRHb2dERUVEZEdvaERTQUhRZmovLy84SGNTRUhJQnBGQkVBZ0VpQU5JQWRCZjNOcUlnZ3RBQUE2QUFBZ0VpQU5JQWRyTFFBQU9nQUJJQklnQ0MwQUFqb0FBaUFTSUFndEFBTTZBQU1nRWlBSUxRQUVPZ0FFSUJJZ0NDMEFCVG9BQlNBU0lBZ3RBQVk2QUFZZ0VpQUlMUUFIT2dBSElCSWdDRUVJYWlJSUxRQUFPZ0FJSUJJZ0RrRUdkQ0FJYWlJSVFRaHJMUUFBT2dBSklCSWdDRUVIYXkwQUFEb0FDaUFTSUFoQkJtc3RBQUE2QUFzZ0VpQUlRUVZyTFFBQU9nQU1JQklnQ0VFRWF5MEFBRG9BRFNBU0lBaEJBMnN0QUFBNkFBNGdFaUFJUVFKckxRQUFPZ0FQSUJJZ0NFRUJheTBBQURvQUVDQVNJQWd0QUFBNkFCRUxJQXhGRFFBZ0JpQU5RUUZySWdndEFBQTZBQUFnQmlBSElBaHFJZ2d0QUFBNkFBRWdCaUFISUFocUlnZ3RBQUE2QUFJZ0JpQUhJQWhxSWdndEFBQTZBQU1nQmlBSElBaHFJZ2d0QUFBNkFBUWdCaUFISUFocUlnZ3RBQUE2QUFVZ0JpQUhJQWhxSWdndEFBQTZBQVlnQmlBSElBaHFJZ2d0QUFBNkFBY2dCaUFISUFocUlBNGdDbXRCQm5ScUlnZ3RBQUE2QUFnZ0JpQUhJQWhxSWdndEFBQTZBQWtnQmlBSElBaHFJZ2d0QUFBNkFBb2dCaUFISUFocUlnZ3RBQUE2QUFzZ0JpQUhJQWhxSWdndEFBQTZBQXdnQmlBSElBaHFJZ2d0QUFBNkFBMGdCaUFISUFocUlnZ3RBQUE2QUE0Z0JpQUhJQWhxTFFBQU9nQVBDd0pBQWtBZ0NTZ0NBQ0lLUVFkUEJFQUNRQ0FKS0FMSUFTSUdSUVJBUVFBaENDQWtRUUJISVJJTUFRc2dKRUVBUnlFU0lBa29BZ1FpQnlBR0tBSUVJZ3hHSVFnZ0J5QU1SdzBBSUNSRkRRQkJBQ0FJSUFZb0FnQkJCa2tiSVFoQkFTRVNDMEVBSVJFQ1FDQUpLQUxNQVNJR1JRMEFJQWtvQWdRZ0JpZ0NCRVlpRVNBU2NVVU5BRUVBSUJFZ0JpZ0NBRUVHU1JzaEVRc0NRQ0FKS0FMVUFTSUdSUTBBSUFrb0FnUWdCaWdDQkVZaUR5QVNjVVVOQUNBR0tBSUFRUVZMSVE4TFFRRWhCd0pBQWtBQ1FBSkFBa0FnQ2tFQmFrRURjUTREQUFFQ0F3c2dFVVVOQmtFQUlSRWdFQzBBTUNFR0lCQXRBQzhoQnlBUUxRQXVJUWdnRUMwQUxTRUtJQkF0QUN3aERDQVFMUUFySVE0Z0VDMEFLaUVOSUJBdEFDa2hFaUFRTFFBb0lROGdFQzBBSnlFYUlCQXRBQ1loSENBUUxRQWxJUmNnRUMwQUpDRVZJQkF0QUNNaEhpQVFMUUFpSVNFZ0VDMEFJU0VpSUJraEV3TkFJQk1nQmpvQUR5QVRJQWM2QUE0Z0V5QUlPZ0FOSUJNZ0Nqb0FEQ0FUSUF3NkFBc2dFeUFPT2dBS0lCTWdEVG9BQ1NBVElCSTZBQWdnRXlBUE9nQUhJQk1nR2pvQUJpQVRJQnc2QUFVZ0V5QVhPZ0FFSUJNZ0ZUb0FBeUFUSUI0NkFBSWdFeUFoT2dBQklCTWdJam9BQUNBVFFSQnFJUk1nRVVFQmFpSVJRUkJIRFFBTERBTUxJQWhGRFFVZ0dTQVFNUUFBUW9HQ2hJaVFvTUNBQVg0aWJqY0FDQ0FaSUc0M0FBQWdHU0FRTVFBQlFvR0NoSWlRb01DQUFYNGliamNBR0NBWklHNDNBQkFnR1NBUU1RQUNRb0dDaElpUW9NQ0FBWDRpYmpjQUtDQVpJRzQzQUNBZ0dTQVFNUUFEUW9HQ2hJaVFvTUNBQVg0aWJqY0FPQ0FaSUc0M0FEQWdHU0FRTVFBRVFvR0NoSWlRb01DQUFYNGliamNBU0NBWklHNDNBRUFnR1NBUU1RQUZRb0dDaElpUW9NQ0FBWDRpYmpjQVdDQVpJRzQzQUZBZ0dTQVFNUUFHUW9HQ2hJaVFvTUNBQVg0aWJqY0FhQ0FaSUc0M0FHQWdHU0FRTVFBSFFvR0NoSWlRb01DQUFYNGliamNBZUNBWklHNDNBSEFnR1NBUU1RQUlRb0dDaElpUW9NQ0FBWDRpYmpjQWlBRWdHU0J1TndDQUFTQVpJQkF4QUFsQ2dZS0VpSkNnd0lBQmZpSnVOd0NZQVNBWklHNDNBSkFCSUJrZ0VERUFDa0tCZ29TSWtLREFnQUYrSW00M0FLZ0JJQmtnYmpjQW9BRWdHU0FRTVFBTFFvR0NoSWlRb01DQUFYNGliamNBdUFFZ0dTQnVOd0N3QVNBWklCQXhBQXhDZ1lLRWlKQ2d3SUFCZmlKdU53RElBU0FaSUc0M0FNQUJJQmtnRURFQURVS0Jnb1NJa0tEQWdBRitJbTQzQU5nQklCa2diamNBMEFFZ0dTQVFNUUFPUW9HQ2hJaVFvTUNBQVg0aWJqY0E2QUVnR1NCdU53RGdBU0FaSUJBeEFBOUNnWUtFaUpDZ3dJQUJmaUp1TndENEFTQVpJRzQzQVBBQkRBSUxJQmtDZndKQUlBaEZEUUFnRVVVTkFDQVFMUUFQSUJBdEFEQWdFQzBBRGlBUUxRQXZJQkF0QUEwZ0VDMEFMaUFRTFFBTUlCQXRBQzBnRUMwQUN5QVFMUUFzSUJBdEFBb2dFQzBBS3lBUUxRQUpJQkF0QUNvZ0VDMEFDQ0FRTFFBcElCQXRBQWNnRUMwQUtDQVFMUUFHSUJBdEFDY2dFQzBBQlNBUUxRQW1JQkF0QUFRZ0VDMEFKU0FRTFFBRElCQXRBQ1FnRUMwQUFpQVFMUUFqSUJBdEFBRWdFQzBBSWlBUUxRQWhJQkF0QUFCcWFtcHFhbXBxYW1wcWFtcHFhbXBxYW1wcWFtcHFhbXBxYW1wcWFtcHFRUkJxUVFWMkRBRUxJQWdFUUNBUUxRQVBJQkF0QUE0Z0VDMEFEU0FRTFFBTUlCQXRBQXNnRUMwQUNpQVFMUUFKSUJBdEFBZ2dFQzBBQnlBUUxRQUdJQkF0QUFVZ0VDMEFCQ0FRTFFBRElCQXRBQUlnRUMwQUFDQVFMUUFCYW1wcWFtcHFhbXBxYW1wcWFtcHFRUWhxUVFSMkRBRUxRWUFCSUJGRkRRQWFJQkF0QURBZ0VDMEFMeUFRTFFBdUlCQXRBQzBnRUMwQUxDQVFMUUFySUJBdEFDb2dFQzBBS1NBUUxRQW9JQkF0QUNjZ0VDMEFKaUFRTFFBbElCQXRBQ1FnRUMwQUl5QVFMUUFoSUJBdEFDSnFhbXBxYW1wcWFtcHFhbXBxYW1wQkNHcEJCSFlMUVlBQ0VBTWFEQUVMSUFoQkFFY2dFVUVBUjNFZ0QzRkZEUU1nRUMwQUNDQVFMUUFHYXlBUUxRQVBJZ1lnRUMwQUlDSUhhMEVEZEdvZ0VDMEFDU0FRTFFBRmEwRUJkR29nRUMwQUNpQVFMUUFFYTBFRGJHb2dFQzBBQ3lBUUxRQURhMEVDZEdvZ0VDMEFEQ0FRTFFBQ2EwRUZiR29nRUMwQURTQVFMUUFCYTBFR2JHb2dFQzBBRGlBUUxRQUFhMEVIYkdwQkJXeEJJR3BCQm5VaENpQVFMUUFwSUJBdEFDZHJJQkF0QUNvZ0VDMEFKbXRCQVhScUlCQXRBQ3NnRUMwQUpXdEJBMnhxSUJBdEFDd2dFQzBBSkd0QkFuUnFJQkF0QUMwZ0VDMEFJMnRCQld4cUlCQXRBQzRnRUMwQUltdEJCbXhxSUJBdEFDOGdFQzBBSVd0QkIyeHFJQkF0QURBaURDQUhhMEVEZEdwQkJXeEJJR3BCQm5VaUNFRURkQ0VPSUFoQkIyd2hEU0FJUVFac0lSRWdDRUVGYkNFUElBaEJBMndoR2lBSVFYMXNJUk1nQ0VGN2JDRWNJQWhCZW13aEZ5QUlRWGxzSVJWQkFDQUlRUUYwSWg1cklTRkJBQ0FJUVFKMElpSnJJU2tnQmlBTWFrRUVkRUVRYWlFTVFRQWhFZ05BSUJrZ0VrRUVkR29pQmlBTUlCSkJCMnNnQ214cUlnZEJCWFVpSFVIL0FTQWRRZjhCU0JzaUhVRUFJQjFCQUVvYk9nQUhJQVlnQnlBWGFrRUZkU0lkUWY4QklCMUIvd0ZJR3lJZFFRQWdIVUVBU2hzNkFBRWdCaUFISUJWcVFRVjFJaDFCL3dFZ0hVSC9BVWdiSWgxQkFDQWRRUUJLR3pvQUFDQUdJQWNnSEdwQkJYVWlIVUgvQVNBZFFmOEJTQnNpSFVFQUlCMUJBRW9iT2dBQ0lBWWdCeUFwYWtFRmRTSWRRZjhCSUIxQi93RklHeUlkUVFBZ0hVRUFTaHM2QUFNZ0JpQUhJQk5xUVFWMUloMUIvd0VnSFVIL0FVZ2JJaDFCQUNBZFFRQktHem9BQkNBR0lBY2dJV3BCQlhVaUhVSC9BU0FkUWY4QlNCc2lIVUVBSUIxQkFFb2JPZ0FGSUFZZ0J5QUlhMEVGZFNJZFFmOEJJQjFCL3dGSUd5SWRRUUFnSFVFQVNoczZBQVlnQmlBSElBaHFRUVYxSWgxQi93RWdIVUgvQVVnYkloMUJBQ0FkUVFCS0d6b0FDQ0FHSUFjZ0htcEJCWFVpSFVIL0FTQWRRZjhCU0JzaUhVRUFJQjFCQUVvYk9nQUpJQVlnQnlBYWFrRUZkU0lkUWY4QklCMUIvd0ZJR3lJZFFRQWdIVUVBU2hzNkFBb2dCaUFISUNKcVFRVjFJaDFCL3dFZ0hVSC9BVWdiSWgxQkFDQWRRUUJLR3pvQUN5QUdJQWNnRDJwQkJYVWlIVUgvQVNBZFFmOEJTQnNpSFVFQUlCMUJBRW9iT2dBTUlBWWdCeUFSYWtFRmRTSWRRZjhCSUIxQi93RklHeUlkUVFBZ0hVRUFTaHM2QUEwZ0JpQUhJQTFxUVFWMUloMUIvd0VnSFVIL0FVZ2JJaDFCQUNBZFFRQktHem9BRGlBR0lBY2dEbXBCQlhVaUJrSC9BU0FHUWY4QlNCc2lCa0VBSUFaQkFFb2JPZ0FQSUJKQkFXb2lFa0VRUncwQUN3c2dHU0FXUWNnQ2FrRUFFQXNnR1NBV1FZZ0Rha0VCRUFzZ0dTQVdRY2dEYWtFQ0VBc2dHU0FXUVlnRWFrRURFQXNnR1NBV1FjZ0Vha0VFRUFzZ0dTQVdRWWdGYWtFRkVBc2dHU0FXUWNnRmFrRUdFQXNnR1NBV1FZZ0dha0VIRUFzZ0dTQVdRY2dHYWtFSUVBc2dHU0FXUVlnSGFrRUpFQXNnR1NBV1FjZ0hha0VLRUFzZ0dTQVdRWWdJYWtFTEVBc2dHU0FXUWNnSWFrRU1FQXNnR1NBV1FZZ0pha0VORUFzZ0dTQVdRY2dKYWtFT0VBc2dHU0FXUVlnS2FrRVBFQXNNQVFzZ0NVSElBV29oQ2lBSlFjd0JhaUVNSUFsQjBBRnFJUTRnQ1VIVUFXb2hEUU5BSUFvaEJ5QUpJUWhCQUNFR1FRQWhFUUpBQWtBQ1FBSkFBa0FDUUNBVFFRTjBJaEpCb0N0cUtRTUFJbTZuRGdVREFBRUNCQVVMSUF3aEJ3d0NDeUFPSVFjTUFRc2dEU0VIQ3lBSEtBSUFJZ2dOQUF3QkN5QUpLQUlFSWdZZ0NDZ0NCQ0lIUmlFUkFrQWdCaUFIUncwQUlDUkZEUUJCQUNBUklBZ29BZ0JCQmtrYklSRUxJQWdoQmdzZ0NpRUhJQWtoQ0FKQUFrQUNRQUpBQWtBQ1FBSkFJQkpCNEN4cUtRTUFJbStuRGdVREFBRUNCUVFMSUF3aEJ3d0NDeUFPSVFjTUFRc2dEU0VIQ3lBSEtBSUFJZ2dOQVF0QkFDRWhJQkZCQUVjaEYwRUNJUWRCQUNFcERBRUxJQWtvQWdRaUJ5QUlLQUlFSWc5R0lSd0NRQ0FISUE5SERRQWdKRVVOQUVFQUlCd2dDQ2dDQUVFR1NSc2hIQXRCQUNFaElCeEJBRWNoS1NBUlFRQkhJUmRCQWlFSElCRkZEUUFnSEVVTkFFRUNJUkVDZnlBR0tBSUFRUVpHQkVBZ0JpQnVRaUNJcDBIL0FYRnFMUUJTSVFjTElBY0xBbjhnQ0NnQ0FFRUdSZ1JBSUFnZ2IwSWdpS2RCL3dGeGFpMEFVaUVSQ3lBUkN5QUhJQkZKR3lFSFFRRWhJVUVCSVNsQkFTRVhDeUFXSUJOQkFuUWlFV29pQmlnQ0RFVUVRQ0FHS0FKTUlnWWdCaUFIVDJvaEJ3c2dDU0FUYWlBSE9nQlNRUUFoRlNBS0lRWWdDU0VJUVFBaEhnSkFBa0FDUUFKQUFrQUNRQ0FTUWFBdWFpZ0NBQTRGQXdBQkFnUUZDeUFNSVFZTUFnc2dEaUVHREFFTElBMGhCZ3NnQmlnQ0FDSUlSUTBCQ3lBSktBSUVJZ1lnQ0NnQ0JDSVBSaUVlSUFZZ0QwY05BQ0FrUlEwQVFRQWdIaUFJS0FJQVFRWkpHeUVlQ3lBS0lRWWdDU0VJQWtBQ1FBSkFBa0FDUUFKQUlCSkI0QzlxS0FJQURnVURBQUVDQkFVTElBd2hCZ3dDQ3lBT0lRWU1BUXNnRFNFR0N5QUdLQUlBSWdoRkRRRUxJQWtvQWdRaUJpQUlLQUlFSWhKR0lSVWdCaUFTUncwQUlDUkZEUUJCQUNBVklBZ29BZ0JCQmtrYklSVUxJQkZCOENscUtBSUFJU1lnRVVHd0tXb29BZ0FoTXdKQVFZVUtJQk4yUVFGeElpNEVRQ0FRSUNacUloRkJBMm9oRWlBUlFRSnFJUWdnRVVFQmFpRUdEQUVMSUNaQkJIUWdNMm9nR1dvaUVVRXZhaUVTSUJGQkgyb2hDQ0FSUVE5cUlRWWdFVUVCYXlFUkN5QUlMUUFBSVIwZ0VpMEFBQ0VJSUFZdEFBQWhKU0FSTFFBQUlTd0NRRUV6SUJOMlFRRnhCRUFnRUVFZ2FpQXphaUlSTFFBSUlROGdFUzBBQnlFd0lCRXRBQVloSWlBUkxRQUZJVFVnRVMwQUJDRVNJQkV0QUFNaEhDQVJMUUFDSVJvZ0VTMEFBU0VHREFFTElCa2dKa0VCYXlKVFFRUjBJRE5xYWlJUkxRQUFJUVlnRVMwQUJ5RVBJQkV0QUFZaE1DQVJMUUFGSVNJZ0VTMEFCQ0UxSUJFdEFBTWhFaUFSTFFBQ0lSd2dFUzBBQVNFYUlDNEVRQ0FRSUZOcUlSRU1BUXNnRVVFQmF5RVJDeUFSTFFBQUlTNENRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FIRGdnQUFRSURCQVVHQndnTElDbEZCRUJCQVNFSERBd0xJQVpCL3dGeElCcEIvd0Z4UVFoMGNpQWNRZjhCY1VFUWRISWdFa0VZZEhJaEtTQUdJZ2NoSGlBYUloY2hJU0FjSWhFaENDQVNJaFVoRHd3SUN5QVhSUVJBUVFFaEJ3d0xDeUFJUVlHQ2hBaHNJU2tnSFVHQmdvUUliQ0llUVJoMklROGdIa0VRZGlFSUlCNUJDSFloSVNBbFFZR0NoQWhzSWdaQkdIWWhGU0FHUVJCMklSRWdCa0VJZGlFWElDeEJnWUtFQ0d3aUIwRVlkaUVTSUFkQkVIWWhIQ0FIUVFoMklSb01Cd3NDZnlBbElDeHFJQWhxSUIxcUlCSkIvd0Z4YWlBY1FmOEJjV29nR2tIL0FYRnFJQVpCL3dGeGFrRUVha0g0L3dOeFFRTjJJQ0VOQUJvZ0pTQXNhaUFJYWlBZGFrRUNha0VDZGlBWERRQWFRWUFCSUNsRkRRQWFJQkpCL3dGeElCeEIvd0Z4YWlBYVFmOEJjV29nQmtIL0FYRnFRUUpxUVFKMkN5SUhRZjhCY1VHQmdvUUliQ0VwSUFjaUdpSWNJaElpQmlFWElBWWlFU0lWSWg0aUlTSUlJUThNQmdzZ0tVVUVRRUVCSVFjTUNRc2dIa1VFUUNBU0lnOGlNQ0lpSVRVTElDSkIvd0Z4SWdjZ0QwSC9BWEVpRVdvZ01FSC9BWEVpRDBFQmRHcEJBbW9pRjBFT2RFR0FnUHdIY1NBU1FmOEJjU0llUVFKcUlpRWdCMm9nTlVIL0FYRWlDRUVCZEdwQkFuWWlFaUFQUVFKcUlnOGdDR29nQjBFQmRHcEJBbllpRlVFSWRISkIvLzhEY1hJZ0R5QVJRUU5zYWtFV2RFR0FnSUI0Y1hJaEtTQVhRUUoySVE4Z0hFSC9BWEVpRVVFQ2FpSWNJQVpCL3dGeGFpQWFRZjhCY1NJR1FRRjBha0VDZGlFSElBWWdJV29nRVVFQmRHcEJBbllpR2lFR0lCd2dIa0VCZEdvZ0NHcEJBbllpSENFWElCd2hIaUFTSWhFaElTQVZJUWdNQlF0QkFTRUhJQ0VnRlVFQVIzRkZEUWNnTENBbFFRRjBhaUFkYWtFQ2FpSVJRUVowUVlEK0EzRWdCa0gvQVhFaUQwRUNhaUlYSUN4cUlDNUJBWFJxUVFKMklnZEJHSFFnSlVFQ2FpSUdJQ3hCQVhScUlDNXFRUUoySWlGQkVIUnljaUFHSUFocUlCMUJBWFJxUVFKMmNpRXBJQnBCL3dGeElnaEJBbW9pR2lBU1FmOEJjV29nSEVIL0FYRWlIRUVCZEdwQkFuWWhFaUFSUVFKMklSNGdJU0VHSUJvZ0QwRUJkR29nTG1wQkFuWWlHaUVSSUFoQkFYUWdIR29nRjJwQkFuWWlIQ0VWSUFjaUZ5RUlJQm9oRHd3RUMwRUJJUWNnSVNBVlFRQkhjVVVOQmlBYVFmOEJjU0lQUVFKcUlnY2dCa0gvQVhFaUNFRUJkR29nTG1wQkFuWWlGMEVRZENBSVFRSnFJZ1lnTEdvZ0xrRUJkR29pR2tFR2RFR0EvZ054Y2lBR0lCeEIvd0Z4SWdZZ0QwRUJkR3BxUVFKMkloRkJHSFJ5SUN3Z0pVRUJkR29nSFdwQkFtcEJBblp5SVNrZ0JrRUJhaUljSUJKQi93RnhJaFZxUVFGMklSSWdKU0FzUVFGMGFpQXVha0VDYWtFQ2RpRWVJQWNnRldvZ0JrRUJkR3BCQW5ZaEZTQWFRUUoySVFZZ0NDQXVha0VCYWtFQmRpSUhJU0VnQ0NBUGFrRUJha0VCZGlJYUlRZ2dEeUFjYWtFQmRpSWNJUThNQXd0QkFTRUhJQ0VnRlVFQVIzRkZEUVVnSlVFQ2FpSVBJQWhxSUIxQkFYUnFRUVowUVlEK0EzRWdMRUVDYWlJSElDVkJBWFJxSUIxcVFRSjJJaUZCR0hRZ0hTQWxha0VCYWtFQmRpSWVRUkIwY25JZ0NDQWRha0VCYWtFQmRuSWhLU0FHUWY4QmNTSUdJQnhCL3dGeGFpQWFRZjhCY1NJSVFRRjBha0VDYWtFQ2RpRVNJQWdnQmtFQmRHb2dMbXBCQW1wQkFuWWhIQ0FHSUFkcUlDNUJBWFJxUVFKMkloVWhHaUFzUVFGcUlnWWdMbXBCQVhZaUJ5RVJJQVlnSldwQkFYWWlCaUVJSUE4Z0xFRUJkR29nTG1wQkFuWWlGeUVQREFJTElDbEZCRUJCQVNFSERBVUxJQkpCL3dGeElpRkJBbW9pRVNBaUlCSWdIaHRCL3dGeElnZHFJRFVnRWlBZUcwSC9BWEVpQ0VFQmRHb2lGVUVPZEVHQWdQd0hjU0FSSUJwQi93RnhJaHBxSUJ4Qi93RnhJaHhCQVhScVFRSjJJaGNnSEVFQ2FpSWlJQWhxSUNGQkFYUnFRUUoySWhGQkNIUnlRZi8vQTNGeUlBZ2dNQ0FTSUI0YlFmOEJjV29nQjBFQmRHcEJGblJCZ0lDQUJHcEJnSUNBZUhGeUlTa2dCeUFJYWtFQmFrRUJkaUVQSUJWQkFuWWhGU0FhSUFaQi93RnhJZ1pxUVFGcVFRRjJJUWNnQmlBaWFpQWFRUUYwYWtFQ2RpRUdJQm9nSEdwQkFXcEJBWFlpR2lFZUlDRkJBV29pRWlBY2FrRUJkaUljSVNFZ0NDQVNha0VCZGlJU0lRZ01BUXNnRjBVRVFFRUJJUWNNQkFzZ0NFRUlkQ0FJY2lBSVFSQjBjaUFJUVJoMGNpRXBJQjFCQW1vaUR5QXNhaUFsUVFGMGFrRUNkaUVhSUNWQkFXb2lCaUFzYWtFQmRpRUhJQVlnSFdwQkFYWWlIQ0VHSUFnZ0pXb2dIVUVCZEdwQkFtcEJBbllpRWlFWElBZ2dIV3BCQVdwQkFYWWlFU0VlSUE4Z0NFRURiR3BCQW5ZaUZTRWhJQWdoRHdzZ0dTQW1RUVIwSUROcWFpSWlJQ2syQWpBZ0lpQWVRZjhCY1NBUFFSaDBJQWhCL3dGeFFSQjBjaUFoUWY4QmNVRUlkSEp5TmdJZ0lDSWdCa0gvQVhFZ0ZVRVlkQ0FSUWY4QmNVRVFkSElnRjBIL0FYRkJDSFJ5Y2pZQ0VDQWlJQWRCL3dGeElCSkJHSFFnSEVIL0FYRkJFSFJ5SUJwQi93RnhRUWgwY25JMkFnQWdHU0FXSUJOQkJuUnFRY2dDYWlBVEVBc2dFMEVCYWlJVFFSQkhEUUFMQ3dKQUlBa29Bc2dCSWdaRkJFQkJBQ0VPSUNSQkFFY2hFUXdCQ3lBa1FRQkhJUkVnQ1NnQ0JDSUhJQVlvQWdRaUNFWWhEaUFISUFoSERRQWdKRVVOQUVFQUlBNGdCaWdDQUVFR1NSc2hEa0VCSVJFTFFRQWhFMEVBSVJjQ1FDQUpLQUxNQVNJR1JRMEFJQWtvQWdRZ0JpZ0NCRVlpRnlBUmNVVU5BRUVBSUJjZ0JpZ0NBRUVHU1JzaEZ3c2dGaWdDakFFaEdnSkFJQWtvQXRRQklnWkZEUUFnQ1NnQ0JDQUdLQUlFUmlJVElCRnhSUTBBSUFZb0FnQkJCVXNoRXdzZ0ZrSElDbW9oSENBWlFZQUNhaUVHSUJCQkVHb2hIaUFRUVRWcUlTSkJBQ0VLSUE1QkFFY2dGMEVBUjNFaUZTQVRjU0VoUVJBaEVnTkFBa0FDUUFKQUFrQUNRQ0FhRGdNQUFRSURDeUFHQW44Z0ZRUkFJQjR0QUFNZ0hpMEFBaUFlTFFBQklCNHRBQUFnSWkwQUJDQWlMUUFESUNJdEFBRWdJaTBBQW1wcWFtcHFhbXBCQkdwQkEzWWhFU0FpTFFBSUlDSXRBQWNnSWkwQUJTQWlMUUFHYW1wcVFRSnFRUUoyREFFTElCY0VRQ0FpTFFBRUlDSXRBQU1nSWkwQUFTQWlMUUFDYW1wcVFRSnFRUUoySVJFZ0lpMEFDQ0FpTFFBSElDSXRBQVVnSWkwQUJtcHFha0VDYWtFQ2Rnd0JDeUFPUlFSQVFZQUJJUkZCZ0FFTUFRc2dIaTBBQXlBZUxRQUNJQjR0QUFBZ0hpMEFBV3BxYWtFQ2FrRUNkaUlSQzBIL0FYRkJnWUtFQ0d3aUJ6WUFIQ0FHSUJGQi93RnhRWUdDaEFoc0lnZzJBQmdnQmlBSE5nQVVJQVlnQ0RZQUVDQUdJQWMyQUF3Z0JpQUlOZ0FJSUFZZ0J6WUFCQ0FHSUFnMkFBQWdCZ0ovSUE0RVFDQWVMUUFISUI0dEFBWWdIaTBBQlNBZUxRQUVhbXBxSWdkQkFtcEJBbllpRVNBWFJRMEJHaUFpTFFBSUlDSXRBQWNnSWkwQUJpQUhJQ0l0QUFWcWFtcHFRUVJxUVFOMkRBRUxJQmRGQkVCQmdBRWhFVUdBQVF3QkN5QWlMUUFFSUNJdEFBTWdJaTBBQVNBaUxRQUNhbXBxUVFKcVFRSjJJUkVnSWkwQUNDQWlMUUFISUNJdEFBVWdJaTBBQm1wcWFrRUNha0VDZGd0Qi93RnhRWUdDaEFoc0lnYzJBRHdnQmlBUlFmOEJjVUdCZ29RSWJDSUlOZ0E0SUFZZ0J6WUFOQ0FHSUFnMkFEQWdCaUFITmdBc0lBWWdDRFlBS0NBR0lBYzJBQ1FnQmlBSU5nQWdRUUFoQ0F3REN5QU9SUVJBUVFFaEJ3d0ZDeUFHSUI0eEFBQkNnWUtFaUpDZ3dJQUJmamNBQUNBR0lCNHhBQUZDZ1lLRWlKQ2d3SUFCZmpjQUNDQUdJQjR4QUFKQ2dZS0VpSkNnd0lBQmZqY0FFQ0FHSUI0eEFBTkNnWUtFaUpDZ3dJQUJmamNBR0NBR0lCNHhBQVJDZ1lLRWlKQ2d3SUFCZmpjQUlDQUdJQjR4QUFWQ2dZS0VpSkNnd0lBQmZqY0FLQ0FHSUI0eEFBWkNnWUtFaUpDZ3dJQUJmamNBTUNBR0lCNHhBQWRDZ1lLRWlKQ2d3SUFCZmpjQU9FRUFJUWdNQWdzZ0YwVUVRRUVCSVFjTUJBc2dCaUFpTFFBQklnYzZBRGdnQmlBSE9nQXdJQVlnQnpvQUtDQUdJQWM2QUNBZ0JpQUhPZ0FZSUFZZ0J6b0FFQ0FHSUFjNkFBZ2dCaUFIT2dBQUlBWWdJaTBBQWlJSE9nQTVJQVlnQnpvQU1TQUdJQWM2QUNrZ0JpQUhPZ0FoSUFZZ0J6b0FHU0FHSUFjNkFCRWdCaUFIT2dBSklBWWdCem9BQVNBR0lDSXRBQU1pQnpvQU9pQUdJQWM2QURJZ0JpQUhPZ0FxSUFZZ0J6b0FJaUFHSUFjNkFCb2dCaUFIT2dBU0lBWWdCem9BQ2lBR0lBYzZBQUlnQmlBaUxRQUVJZ2M2QURzZ0JpQUhPZ0F6SUFZZ0J6b0FLeUFHSUFjNkFDTWdCaUFIT2dBYklBWWdCem9BRXlBR0lBYzZBQXNnQmlBSE9nQURJQVlnSWkwQUJTSUhPZ0E4SUFZZ0J6b0FOQ0FHSUFjNkFDd2dCaUFIT2dBa0lBWWdCem9BSENBR0lBYzZBQlFnQmlBSE9nQU1JQVlnQnpvQUJDQUdJQ0l0QUFZaUJ6b0FQU0FHSUFjNkFEVWdCaUFIT2dBdElBWWdCem9BSlNBR0lBYzZBQjBnQmlBSE9nQVZJQVlnQnpvQURTQUdJQWM2QUFVZ0JpQWlMUUFISWdjNkFENGdCaUFIT2dBMklBWWdCem9BTGlBR0lBYzZBQ1lnQmlBSE9nQWVJQVlnQnpvQUZpQUdJQWM2QUE0Z0JpQUhPZ0FHSUFZZ0lpMEFDQ0lIT2dBL0lBWWdCem9BTnlBR0lBYzZBQzhnQmlBSE9nQW5JQVlnQnpvQUh5QUdJQWM2QUJjZ0JpQUhPZ0FQSUFZZ0J6b0FCMEVBSVFnTUFRc2dJVVVFUUVFQklRY01Bd3NnSWkwQUJTQWlMUUFEYXlBaUxRQUdJQ0l0QUFKclFRRjBhaUFpTFFBSElDSXRBQUZyUVFOc2FpQWlMUUFJSWdjZ0lpMEFBQ0lJYTBFQ2RHcEJFV3hCRUdwQkJYVWlERUY5YkNFTklBY2dIaTBBQnlJUmFrRUVkQ0FlTFFBRUlCNHRBQUpySUJFZ0NHdEJBblJxSUI0dEFBVWdIaTBBQVd0QkFYUnFJQjR0QUFZZ0hpMEFBR3RCQTJ4cVFSRnNRUkJxUVFWMUloRkJmV3hxUVJCcUlROUJDQ0VISUFZaEV3TkFJQk1nRFNBUGFpSUlRUVYxUWNBMWFpMEFBRG9BQUNBVElBZ2dER29pQ0VFRmRVSEFOV290QUFBNkFBRWdFeUFJSUF4cUlnaEJCWFZCd0RWcUxRQUFPZ0FDSUJNZ0NDQU1haUlJUVFWMVFjQTFhaTBBQURvQUF5QVRJQWdnREdvaUNFRUZkVUhBTldvdEFBQTZBQVFnRXlBSUlBeHFJZ2hCQlhWQndEVnFMUUFBT2dBRklCTWdDQ0FNYWlJSVFRVjFRY0ExYWkwQUFEb0FCaUFUSUFnZ0RHcEJCWFZCd0RWcUxRQUFPZ0FISUE4Z0VXb2hEeUFUUVFocUlSTkJBQ0VJSUFkQkFXc2lCdzBBQ3dzRFFDQWNJQWhCQm5ScUlnY29BZ0FpRVVILy8vOEhSd1JBSUFjb0FnUWhEeUFHSUJJZ0VrRURjU0FTUVJCSklnd2JRUUowSWhOQjhDbHFLQUlBUVJCQkNDQU1HeUlOYkdvZ0UwR3dLV29vQWdCcUlnd2dFU0FNTFFBQWFrSEFOV290QUFBNkFBQWdCeWdDQ0NFUklBd2dEeUFNTFFBQmFrSEFOV290QUFBNkFBRWdCeWdDRENFUElBd2dFU0FNTFFBQ2FrSEFOV290QUFBNkFBSWdEQ0FQSUF3dEFBTnFRY0ExYWkwQUFEb0FBeUFIS0FJVUlSRWdEQ0FOYWlJTUlBY29BaEFnREMwQUFHcEJ3RFZxTFFBQU9nQUFJQWNvQWhnaER5QU1JQkVnREMwQUFXcEJ3RFZxTFFBQU9nQUJJQWNvQWh3aEVTQU1JQThnREMwQUFtcEJ3RFZxTFFBQU9nQUNJQXdnRVNBTUxRQURha0hBTldvdEFBQTZBQU1nQnlnQ0pDRVJJQXdnRFdvaURDQUhLQUlnSUF3dEFBQnFRY0ExYWkwQUFEb0FBQ0FIS0FJb0lROGdEQ0FSSUF3dEFBRnFRY0ExYWkwQUFEb0FBU0FIS0FJc0lSRWdEQ0FQSUF3dEFBSnFRY0ExYWkwQUFEb0FBaUFNSUJFZ0RDMEFBMnBCd0RWcUxRQUFPZ0FESUFjb0FqUWhFU0FNSUExcUlnd2dCeWdDTUNBTUxRQUFha0hBTldvdEFBQTZBQUFnQnlnQ09DRU5JQXdnRVNBTUxRQUJha0hBTldvdEFBQTZBQUVnQnlnQ1BDRUhJQXdnRFNBTUxRQUNha0hBTldvdEFBQTZBQUlnRENBSElBd3RBQU5xUWNBMWFpMEFBRG9BQXdzZ0VrRUJhaUVTSUFoQkFXb2lDRUVFUncwQUN5QWNRWUFDYWlFY0lCNUJDR29oSGlBaVFRbHFJU0lnQmtGQWF5RUdJQW9oQjBFQklRb2dCMFVOQUF0QkFDRUhJQWtvQXNRQlFRRkxEUUFnS3lBWkVBOExJQkJCMEFCcUpBQWdCeUlHUlEwU0RCUUxJQTRvQWdBaEhDQWZJQ3NvQWdRaUJqWUMzQU1nSHlBcktBSUlOZ0xnQXlBcUlBWnVJZ2RCQkhRaEdTQXFJQVlnQjJ4clFRUjBJUjRnSEE0RUFBQUJBZ01MSUNrZ01Xb2lEU2dDQkNFR0lCWW9BcEFCSVJKQkFTRUtRWDhoRUVFQUlRbEJBQ0VhUVFBaENFRUJJUWNDZjBGL0lBMG9Bc2dCSWd4RkRRQWFRWDhnRENnQ0JDQUdSdzBBR2tFQUlRZEJmeUFNS0FJQVFRVkxEUUFhSUF3b0FwZ0JJZ2hCRUhZaEdpQU1LQUpvQ3lFUkFrQWdEU2dDekFFaURFVUVRRUVBSVJVTUFRc2dCaUFNS0FJRVJ3UkFRUUFoRlF3QkMwRUFJUW9nRENnQ0FFRUZTd1JBUVFBaEZRd0JDeUFNS0FLc0FTSVZRUkIySVFrZ0RDZ0NiQ0VRQ3lBY1JRUkFRUUFoSENBSElBcHlCRUJCQUNFTURBOExJQkVnQ0VILy93TnhJQnBCRUhSeWNrVUVRRUVBSVF3TUR3dEJBQ0VNSUJBZ0ZVSC8vd054SUFsQkVIUnlja1VORGdzZ0ZpOEJvZ0VoRHlBV0x3R2dBU0VUQW44Q1FBSkFJQTBvQXRBQklneEZEUUFnRENnQ0JDQUdSdzBBSUF3b0FnQkJCVTBOQVF3TkN3SkFJQTBvQXRRQklneEZEUUFnRENnQ0JDQUdSdzBBSUF3b0FnQkJCVXNORFNBTVFjQUJhaUVjSUF4QjhBQnFEQUlMSUFjZ0NrRUJjM0lOREF3T0N5QU1RYXdCYWlFY0lBeEI3QUJxQ3lnQ0FDRUhJQndvQWdBTUN3c2dGeWdDQkNFU0lCWW9BcEFCSVExQmZ5RUlBa0FDUUFKQUlCY29Bc3dCSWdaRkJFQkJBQ0VhREFFTFFRQWhHaUFHS0FJRUlCSkdEUUVMUVFBaERFRUFJUWtNQVF0QkFTRUpJQVlvQWdCQkJVc0VRRUVBSVF3TUFRc2dCaWdDckFFaURFRVFkaUVhSUFZb0Ftd2hDQXNnRmk4Qm9nRWhFU0FXTHdHZ0FTRVBJQWdnRFVZRVFDQWFJUVlnRENFSURBa0xRUUVoRUVGL0lSVkJBQ0VHQWtBZ0Z5Z0N5QUVpQjBVRVFFRUFJUWdNQVFzZ0VpQUhLQUlFUndSQVFRQWhDQXdCQzBFQUlSQWdCeWdDQUVFRlN3UkFRUUFoQ0F3QkN5QUhLQUtZQVNJSVFSQjJJUVlnQnlnQ2FDRVZDd0ovQWtBQ1FDQVhLQUxRQVNJSFJRMEFJQWNvQWdRZ0VrY05BQ0FIS0FJQVFRVk5EUUVNQ1FzQ1FDQVhLQUxVQVNJSFJRMEFJQWNvQWdRZ0VrY05BQ0FIS0FJQVFRVkxEUWtnQjBIQUFXb2hFQ0FIUWZBQWFnd0NDeUFKSUJCeURRZ01DZ3NnQjBHc0FXb2hFQ0FIUWV3QWFnc29BZ0FoQ2lBUUtBSUFEQWNMSUJjb0FnUWhEU0FXS0FLUUFTRUpRUUVoQ2tGL0lRaEJBQ0VUQWtBZ0Z5Z0N5QUVpQmtVRVFFRUFJUXdNQVFzZ0RTQUdLQUlFUndSQVFRQWhEQXdCQzBFQUlRb2dCaWdDQUVFRlN3UkFRUUFoREF3QkN5QUdLQUtZQVNJTVFSQjJJUk1nQmlnQ2FDRUlDeUFXTHdHaUFTRVNJQll2QWFBQklSRWdDQ0FKUmcwREFuOENRQUpBSUJjb0Fzd0JJZ2RGRFFBZ0J5Z0NCQ0FOUncwQUlBY29BZ0JCQlUwTkFRd0VDd0pBSUJjb0F0UUJJZ2RGRFFBZ0J5Z0NCQ0FOUncwQUlBY29BZ0JCQlVzTkJDQUhRY0FCYWlFUVFRQWhCa0YvSVJWQkFBd0NDeUFLUlEwRkRBTUxJQWRCdkFGcUlSQWdCeWdDYkNFVklBY29BcXdCSWdaQkVIWUxJUWdnQnlnQ2NDRUtJQkFvQWdBTUFnc2dGMEhJQVdvaERTQVhRY3dCYWlFU0lCZEIwQUZxSVJFZ0YwSFVBV29oRDBFQUlTRURRRUVFSVNJZ0ZpQWhRUUowSWlScUlpVWlNeWdDc0FFaUJrRUNUUVJBSUFaQkFuUkJqQ3RxS0FJQUlTSUxJQmNnSkdvaUJ5QWxLQUxBQVRZQ1pBSkFBa0FnSlNnQ3dBRWlIRUVRU3cwQUlBQW9Bc2dKSUJ4QkFuUnFLQUlBSWdaRkRRQWdCaWdDRkVFQlN3MEJDeUFwSUNwQjJBRnNhaUFoUVFKMGFrRUFOZ0owREEwTElBY2dCaWdDQUNJR05nSjBJQVpGRFF3Q1FDQWlSUTBBSUJjZ0lVRUVkQ0l3YWlJZElUVWdKRUVEY2lGVFFRQWhHZ05BSUJZZ01Hb2dHa0VDZEdvaExFRUJJUzVCZnlFbUlBMGhDaUFPSVFaQkFDRUlRUUFoQ1VGL0lSVUNRQUpBQWtBQ1FBSkFBa0FnSVVFSGRDQXpLQUt3QVNKc1FRVjBhaUFhUVFOMGFpSVRRYkFaYWlnQ0FBNEZBd0FCQWdRRkN5QVNJUW9NQWdzZ0VTRUtEQUVMSUE4aENnc2dDaWdDQUNFR0N3SkFJQVpGRFFBZ0JpZ0NCQ0FYS0FJRVJ3MEJRUUFoTGlBR0tBSUFRUVZMRFFBZ0JpQVRRYlFaYWkwQUFDSUhRUUowYWlnQ2hBRWlDVUVRZGlFSUlBWWdCMEg4QVhGcUtBSmtJUlVMQzBFQUlRd2dEU0VISUE0aEJrRUFJUXBCQUNFUUFrQUNRQUpBQWtBQ1FBSkFJQk5Cc0IxcUtBSUFEZ1VEQUFFQ0JBVUxJQkloQnd3Q0N5QVJJUWNNQVFzZ0R5RUhDeUFIS0FJQUlRWUxJQVpGRFFBZ0JpZ0NCQ0FYS0FJRVJ3MEFRUUVoRUNBR0tBSUFRUVZMRFFBZ0JpQVRRYlFkYWkwQUFDSUhRUUowYWlnQ2hBRWlDa0VRZGlFTUlBWWdCMEg4QVhGcUtBSmtJU1lMSUN3dkFkSUJJVzBnTEM4QjBBRWhMQ0FOSVFjZ0RpRUdBa0FDZndKQUFuOENRQUpBQWtBQ1FBSkFBa0FDUUNBVFFiQWhhaWdDQUE0RkF3QUJBZ1FGQ3lBU0lRY01BZ3NnRVNFSERBRUxJQThoQndzZ0J5Z0NBQ0VHQ3lBR1JRMEFJQVlvQWdRZ0Z5Z0NCRWNOQUNBR0tBSUFRUVZORFFFTUF3c2dEU0VISUE0aEJnSkFBa0FDUUFKQUFrQUNRQ0FUUWJBbGFpZ0NBQTRGQXdBQkFnUUZDeUFTSVFjTUFnc2dFU0VIREFFTElBOGhCd3NnQnlnQ0FDRUdDeUFHUlEwQUlBWW9BZ1FnRnlnQ0JFY05BQ0FHS0FJQVFRVkxEUU1nQmlBVFFiUWxhaTBBQUNJVFFRSjBha0dFQVdvTUFnc2dFQ0F1Y2cwQ0RBUUxJQVlnRTBHMElXb3RBQUFpRTBFQ2RHcEJoQUZxQ3lFSElBWWdFMEg4QVhGcUtBSmtJUkFnQnlnQ0FBd0JDMEYvSVJCQkFBc2hCaUFjSUNaR0loTWdGU0FjUmlJSGFpQVFJQnhHYWtFQlJ3UkFJQXdnQ0NBTVFSQjBRUkIxSWd3Z0NFRVFkRUVRZFNJSFNpSUlHeUlUSUFjZ0RDQUhJQWNnREVvYklBZ2JJZ2dnQmtFUWRTSUhJQWNnQ0VnYklCTkJFSFJCRUhVZ0IwZ2JJUWdnQ2lBSklBcEJFSFJCRUhVaUNpQUpRUkIwUVJCMUlnZEtJZ2tiSWd4Qi8vOERjU0FISUFvZ0J5QUhJQXBLR3lBSkd5SUhJQVpCRUhSQkVIVWlCaUFHSUFkSUd5QU1RUkIwUVJCMUlBWklHeUVKREFFTElBa2dDaUFIR3lFSklBZ2dEQ0FIR3lFSUlBY05BQ0FURFFBZ0JrRVFkaUVJSUFZaENRc2dDU0FzYWlJR1FSQjBRUkIxUVlCQWEwSC8vd0JMRFE0Z0NDQnRhaUlIUVJCMFFSQjFRWUFRYWtIL0gwc05EZ0pBSUJjQ2Z3SkFBa0FDUUFKQUlHd09CQUFCQWdNRkN5QWRJQVk3QVlRQklCMGdCenNCaGdFZ0hTQUdPd0dJQVNBZElBYzdBWW9CSUIwZ0Jqc0JqQUVnTlNBSE93R09BU0JUREFNTElCY2dHa0VCZENBa2FpSUlRUUowYWlJSklBYzdBWVlCSUFrZ0Jqc0JoQUVnQ0VFQmNnd0NDeUFYSUJvZ0pHb2lDRUVDZEdvaUNTQUhPd0dHQVNBSklBWTdBWVFCSUFoQkFtb01BUXNnR2lBa2FndEJBblJxSWdnZ0J6c0JoZ0VnQ0NBR093R0VBUXNnR2tFQmFpSWFJQ0pHRFFFZ0pTZ0N3QUVoSEF3QUN3QUxJQ0ZCQVdvaUlVRUVSdzBBQzBFQUlRWURRQ0FmSUJjZ0JrRUNkQ0lKYWlnQ2REWUMyQU1nQmtFQlMwRURkQ0VISUFaQkEzUkJDSEVoQ0FKQUFrQUNRQUpBQWtBZ0NTQVdhaWdDc0FFT0F3QUJBZ01MSUI5QkVHb2dGeUFHUVFSMGFrR0VBV29nSDBIWUEyb2dIaUFaSUFnZ0IwRUlRUWdRREF3REN5QWZRUkJxSWdrZ0Z5QUdRUVIwYWlJS1FZUUJhaUFmUWRnRGFpSU1JQjRnR1NBSUlBZEJDRUVFRUF3Z0NTQUtRWXdCYWlBTUlCNGdHU0FJSUFkQkJISkJDRUVFRUF3TUFnc2dIMEVRYWlJSklCY2dCa0VFZEdvaUNrR0VBV29nSDBIWUEyb2lEQ0FlSUJrZ0NDQUhRUVJCQ0JBTUlBa2dDa0dJQVdvZ0RDQWVJQmtnQ0VFRWNpQUhRUVJCQ0JBTURBRUxJQjlCRUdvaUNTQVhJQVpCQkhScUlncEJoQUZxSUI5QjJBTnFJZ3dnSGlBWklBZ2dCMEVFUVFRUURDQUpJQXBCaUFGcUlBd2dIaUFaSUFoQkJISWlEU0FIUVFSQkJCQU1JQWtnQ2tHTUFXb2dEQ0FlSUJrZ0NDQUhRUVJ5SWdkQkJFRUVFQXdnQ1NBS1FaQUJhaUFNSUI0Z0dTQU5JQWRCQkVFRUVBd0xJQVpCQVdvaUJrRUVSdzBBQ3d3TUMwRi9JUXBCZnlFVlFRQWhCa0VBSVFoQkFBc2hCeUFKSUJWR0lnOGdDU0FLUm1wQkFVY0VRQ0FJSUJNZ0NFRVFkRUVRZFNJS0lCTkJFSFJCRUhVaUNFb2lEeHNpR2lBSUlBb2dDQ0FJSUFwS0d5QVBHeUlLSUFkQkVIVWlDQ0FJSUFwSUd5QWFRUkIwUVJCMUlBaElHeUVJSUFZZ0RDQUdRUkIwUVJCMUlnb2dERUVRZEVFUWRTSUdTaUlNR3lJUFFmLy9BM0VnQmlBS0lBWWdCaUFLU2hzZ0RCc2lDaUFIUVJCMFFSQjFJZ1lnQmlBS1NCc2dEMEVRZEVFUWRTQUdTQnNoQmd3Q0N5QVBEUUVnQjBFUWRpRUlJQWNoQmd3QkN5QVRJUWdnRENFR0N5QUdJQkZxSWdkQkVIUkJFSFZCZ0VCclFmLy9BRXNOQnlBSUlCSnFJZ2hCRUhSQkVIVkJnQkJxUWY4ZlN3MEhJQWxCRUVzTkJ5QUFLQUxJQ1NBSlFRSjBhaWdDQUNJR1JRMEhJQVlvQWhSQkFra05CeUFHS0FJQUloSkZEUWNnRnlBSU93R3lBU0FYSUFjN0FiQUJJQmNnRWpZQ2RDQVhJQWsyQW1RZ0Z5QVNOZ0o4SUJjZ0NUWUNiQ0FYSUJjb0FyQUJJZ1kyQXF3QklCY2dCallDcUFFZ0Z5QUdOZ0trQVNBWElBWTJBcEFCSUJjZ0JqWUNqQUVnRnlBR05nS0lBU0FYSUFZMkFvUUJJQllvQXBRQklRZ0NRQUovQW44Q1FDQVhLQUxRQVNJSFJRMEFJQWNvQWdRZ0RVY05BQ0FIS0FJQVFRVkxCRUJCQUNFY1FYOE1Bd3NnQjBHc0FXb01BUXRCQVNFVlFYOGhERUVBSVJ3Z0Z5Z0N6QUVpQjBVTkFpQUhLQUlFSUExSERRSkJBQ0VWSUFjb0FnQkJCVXNOQWlBSFFiQUJhZ3NvQWdBaEhDQUhLQUpzQ3lFTVFRQWhGUXNnRmk4QnBnRWhFU0FXTHdHa0FTRVBBa0FDUUNBSUlBeEdEUUFnQmtFUWRpRUhBbjhDUUFKQUlCY29Bc3dCSWdwRkRRQWdDaWdDQkNBTlJ3MEFJQW9vQWdCQkJVc05BU0FLS0FLOEFTSVZRUkIySVJvZ0NpZ0NjQXdDQ3lBVkRRTUxRUUFoRlVFQUlScEJmd3NoQ2lBSUlBbEdJZ2tnQ0NBS1JtcEJBVWNFUUNBYUlBY2dHa0VRZEVFUWRTSUpJQWRCRUhSQkVIVktJZ29iSWd3Z0JrRVFkU0lISUFrZ0J5QUhJQWxLR3lBS0d5SUpJQnhCRUhVaUJ5QUhJQWxJR3lBTVFSQjBRUkIxSUFkSUd5RUhJQlVnQmlBVlFSQjBRUkIxSWdrZ0JrRVFkRUVRZFNJR1NpSUtHeUlNUWYvL0EzRWdCaUFKSUFZZ0JpQUpTaHNnQ2hzaUNTQWNRUkIwUVJCMUlnWWdCaUFKU0JzZ0RFRVFkRUVRZFNBR1NCc2hCZ3dDQ3lBSkRRRWdDQ0FLUncwQUlCVkIvLzhEY1NBYVFSQjBjaUVHSUJvaEJ3d0JDeUFjUVJCMklRY2dIQ0VHQ3lBR0lBOXFJZ2xCRUhSQkVIVkJnRUJyUWYvL0FFc05CeUFISUJGcUlnZEJFSFJCRUhWQmdCQnFRZjhmU3cwSElBaEJFRXNOQnlBQUtBTElDU0FJUVFKMGFpZ0NBQ0lHUlEwSElBWW9BaFJCQWtrTkJ5QUdLQUlBSWdaRkRRY2dGeUFIT3dIQ0FTQVhJQWs3QWNBQklCY2dCallDZ0FFZ0Z5QUdOZ0o0SUJjZ0NEWUNjQ0FYSUFnMkFtZ2dGeUFYS0FMQUFTSUdOZ0s4QVNBWElBWTJBcmdCSUJjZ0JqWUN0QUVnRnlBR05nS2dBU0FYSUFZMkFwd0JJQmNnQmpZQ21BRWdGMEdVQVdvaUJ5QUdOZ0lBSUI4Z0VqWUMyQU1nSDBFUWFpSUdJQmRCaEFGcUlCOUIyQU5xSWdnZ0hpQVpRUUJCQUVFSVFSQVFEQ0FmSUJjb0FuZzJBdGdESUFZZ0J5QUlJQjRnR1VFSVFRQkJDRUVRRUF3TUNBdEJmeUVLUVFBTElRY2dEU0FWUmlJSklBb2dEVVpxUVFGSEJFQWdHaUFHSUJwQkVIUkJFSFVpQ1NBR1FSQjBRUkIxSWdaS0lnb2JJaG9nQmlBSklBWWdCaUFKU2hzZ0Noc2lDU0FIUVJCMUlnWWdCaUFKU0JzZ0drRVFkRUVRZFNBR1NCc2hCaUFNSUFnZ0RFRVFkRUVRZFNJSklBaEJFSFJCRUhVaUNFb2lDaHNpREVILy93TnhJQWdnQ1NBSUlBZ2dDVW9iSUFvYklnZ2dCMEVRZEVFUWRTSUhJQWNnQ0VnYklBeEJFSFJCRUhVZ0IwZ2JJUWdNQVFzZ0NRMEFJQWRCRUhZaEJpQUhJUWdMSUFnZ0Qyb2lCMEVRZEVFUWRVR0FRR3RCLy84QVN3MEVJQVlnRVdvaUNFRVFkRUVRZFVHQUVHcEIveDlMRFFRZ0RVRVFTdzBFSUFBb0FzZ0pJQTFCQW5ScUtBSUFJZ1pGRFFRZ0JpZ0NGRUVDU1EwRUlBWW9BZ0FpQ1VVTkJDQVhJQWc3QWFJQklCY2dCenNCb0FFZ0Z5QUpOZ0owSUJjZ0RUWUNaQ0FYSUFrMkFuZ2dGeUFOTmdKb0lCY2dGeWdDb0FFaUJqWUNuQUVnRnlBR05nS1lBU0FYSUFZMkFwUUJJQmNnQmpZQ2tBRWdGeUFHTmdLTUFTQVhJQVkyQW9nQklCY2dCallDaEFFZ0ZpZ0NsQUVoQ0NBV0x3R21BU0VSSUJZdkFhUUJJUThDZndKQUFrQUNRQ0FYS0FMSUFTSUhCRUFnRWlBSEtBSUVSZ1JBSUFjb0FnQkJCVTBFUUNBSEtBSzRBU0lLUVJCMklSTWdCeWdDY0NBSVJ3MEVJQW9oREF3REMwRi9JUlZCQUNFTVFRQWhFMEVBSVFwQkFDRUhJQWhCZjBZTkFnd0VDMEYvSVJWQkFDRU1RUUFoRTBFQUlRcEJBQ0VISUFoQmYwWU5BUXdEQzBGL0lSVkJBQ0VNUVFBaEUwRUFJUXBCQUNFSElBaEJmMGNOQWdzZ0RFSC8vd054SUJOQkVIUnlEQUlMSUFjb0FtZ2hGU0FIS0FLZ0FTRUhJQk1oREFzZ0JrRVFkaUVTSUFnZ0RVWWlEU0FJSUJWR2FrRUJSd1JBSUJJZ0RDQU1RUkIwUVJCMUlnd2dFa0VRZEVFUWRVZ2lEUnNpRWlBTUlBWkJFSFVpR2lBTUlBd2dHa29iSUEwYklnMGdCMEVRZFNJTUlBd2dEVWdiSUJKQkVIUkJFSFVnREVnYklSTWdCaUFLSUFwQkVIUkJFSFVpQ2lBR1FSQjBRUkIxSWdaSUlnd2JJZzFCLy84RGNTQUtJQVlnQ2lBR0lBcElHeUFNR3lJS0lBZEJFSFJCRUhVaUJpQUdJQXBJR3lBTlFSQjBRUkIxSUFaSUd3d0JDeUFTSUFkQkVIWWdEUnNoRXlBR0lBY2dEUnNMSUE5cUlnZEJFSFJCRUhWQmdFQnJRZi8vQUVzTkJDQVJJQk5xSWdwQkVIUkJFSFZCZ0JCcVFmOGZTdzBFSUFoQkVFc05CQ0FBS0FMSUNTQUlRUUowYWlnQ0FDSUdSUTBFSUFZb0FoUkJBa2tOQkNBR0tBSUFJZ1pGRFFRZ0Z5QUtPd0hDQVNBWElBYzdBY0FCSUJjZ0JqWUNnQUVnRnlBR05nSjhJQmNnQ0RZQ2NDQVhJQWcyQW13Z0Z5QVhLQUxBQVNJR05nSzhBU0FYSUFZMkFyZ0JJQmNnQmpZQ3RBRWdGeUFHTmdLd0FTQVhJQVkyQXF3QklCY2dCallDcUFFZ0YwR2tBV29pQnlBR05nSUFJQjhnQ1RZQzJBTWdIMEVRYWlJR0lCZEJoQUZxSUI5QjJBTnFJZ2dnSGlBWlFRQkJBRUVRUVFnUURDQWZJQmNvQW53MkF0Z0RJQVlnQnlBSUlCNGdHVUVBUVFoQkVFRUlFQXdNQlF0QmZ5RUhRUUFMSVFZZ0VDQVNSaUlNSUJFZ0VrWWlDbW9nQnlBU1JtcEJBVWNFUUNBSklCb2dDVUVRZEVFUWRTSUpJQnBCRUhSQkVIVWlCMG9pQ2hzaURDQUhJQWtnQnlBSElBbEtHeUFLR3lJSklBWkJFSFVpQnlBSElBbElHeUFNUVJCMFFSQjFJQWRJR3lFYUlCVWdDQ0FWUVJCMFFSQjFJZ2tnQ0VFUWRFRVFkU0lIU2lJSUd5SUtRZi8vQTNFZ0J5QUpJQWNnQnlBSlNoc2dDQnNpQnlBR1FSQjBRUkIxSWdZZ0JpQUhTQnNnQ2tFUWRFRVFkU0FHU0JzaENBd0JDeUFJSUJVZ0Noc2hDQ0FhSUFrZ0Noc2hHaUFLRFFBZ0RBMEFJQVpCRUhZaEdpQUdJUWdMSUFnZ0Uyb2lIRUVRZEVFUWRVR0FRR3RCLy84QVN3MEJJQThnR21vaURFRVFkRUVRZFVHQUVHcEIveDlMRFFFTElCSkJFRXNOQUNBQUtBTElDU0FTUVFKMGFpZ0NBQ0lHUlEwQUlBWW9BaFJCQWtrTkFDQUdLQUlBSWdkRkRRQWdEU0FNT3dIQ0FTQU5JQnc3QWNBQklBMGdCellDZENBTklCSTJBbVFnRFNBSE5nS0FBU0FOSUFjMkFud2dEU0FITmdKNElBMGdFallDY0NBTklCSTJBbXdnRFNBU05nSm9JQTBnRFNnQ3dBRWlCallDdkFFZ0RTQUdOZ0s0QVNBTklBWTJBclFCSUEwZ0JqWUNzQUVnRFNBR05nS3NBU0FOSUFZMkFxZ0JJQTBnQmpZQ3BBRWdEU0FHTmdLZ0FTQU5JQVkyQXB3QklBMGdCallDbUFFZ0RTQUdOZ0tVQVNBTklBWTJBcEFCSUEwZ0JqWUNqQUVnRFNBR05nS0lBU0FOSUFZMkFvUUJJQjhnQnpZQzJBTWdIMEVRYWlBTlFZUUJhaUFmUWRnRGFpQWVJQmxCQUVFQVFSQkJFQkFNREFFTFFRRWhCZ3dEQ3lBT0tBTEVBVUVCU3cwQUlBNG9BZ0FFUUNBcktBSUFJZ3dnS2lBcUlDc29BZ1FpQ1hBaUJtc2lCMEVJZEdvZ0JrRUVkR29oRGlBSlFRUjBJUW9nQ1VFQ2RFSDgvLy8vQTNFaERTQUdRUU4wSVJJZ0t5Z0NDQ0FKYkNJUlFRaDBJUThnQjBFR2RDRVRRUUFoR2dOQUlBNGdHa0VDZENJR1FmQXBhaWdDQUNJSElBcHNhaUFHUWJBcGFpZ0NBQ0lHYWlFSUlCOUJFR29nQjBFRWRHb2dCbW9oQmdKQUlCWWdHa0VHZEdvaUJ5Z0N5QUlpSEVILy8vOEhSd1JBSUFjb0Fzd0NJUmNnQmkwQUFTRVZJQWdnSENBR0xRQUFha0hBTldvdEFBQTZBQUFnQnlnQzBBSWhIQ0FHTFFBQ0lSQWdDQ0FWSUJkcVFjQTFhaTBBQURvQUFTQUhLQUxVQWlFWElBWXRBQU1oRlNBSUlCQWdIR3BCd0RWcUxRQUFPZ0FDSUFnZ0ZTQVhha0hBTldvdEFBQTZBQU1nQnlnQzNBSWhIQ0FHTFFBUklSY2dDQ0FLYWlJSUlBY29BdGdDSUFZdEFCQnFRY0ExYWkwQUFEb0FBQ0FIS0FMZ0FpRVZJQVl0QUJJaEVDQUlJQmNnSEdwQndEVnFMUUFBT2dBQklBY29BdVFDSVJ3Z0JpMEFFeUVYSUFnZ0VDQVZha0hBTldvdEFBQTZBQUlnQ0NBWElCeHFRY0ExYWkwQUFEb0FBeUFIS0FMc0FpRWNJQVl0QUNFaEZ5QUlJQXBxSWdnZ0J5Z0M2QUlnQmkwQUlHcEJ3RFZxTFFBQU9nQUFJQWNvQXZBQ0lSVWdCaTBBSWlFUUlBZ2dGeUFjYWtIQU5Xb3RBQUE2QUFFZ0J5Z0M5QUloSENBR0xRQWpJUmNnQ0NBUUlCVnFRY0ExYWkwQUFEb0FBaUFJSUJjZ0hHcEJ3RFZxTFFBQU9nQURJQWNvQXZ3Q0lSd2dCaTBBTVNFWElBZ2dDbW9pQ0NBSEtBTDRBaUFHTFFBd2FrSEFOV290QUFBNkFBQWdCeWdDZ0FNaEZTQUdMUUF5SVJBZ0NDQVhJQnhxUWNBMWFpMEFBRG9BQVNBSEtBS0VBeUVISUFZdEFETWhCaUFJSUJBZ0ZXcEJ3RFZxTFFBQU9nQUNJQWdnQmlBSGFrSEFOV290QUFBNkFBTU1BUXNnQmlnQ0VDRWNJQWdnQmlnQ0FEWUNBQ0FJSUExQkFuUWlCMm9pQ0NBY05nSUFJQVlvQWpBaEhDQUhJQWhxSWdnZ0JpZ0NJRFlDQUNBSElBaHFJQncyQWdBTElCcEJBV29pR2tFUVJ3MEFDeUFSUVFaMElRNGdDVUVEZEVINC8vLy9CM0VpQ2tFQ2RpRU5JQXdnRDJvZ0Uyb2dFbW9oREVFUUlRZ0RRQ0FNSUE1QkFDQUlRUk5MSWdZYmFpQUlRUUowUVF4eElnZEI4Q2xxS0FJQUloSWdDbXdnQjBHd0tXb29BZ0FpQjJwcUlRa2dIMEVRYWtIQUFrR0FBaUFHRzJvZ0VrRURkQ0FIYW1vaEJnSkFJQllnQ0VFR2RHb2lCeWdDeUFJaUVrSC8vLzhIUndSQUlBY29Bc3dDSVJFZ0JpMEFBU0VQSUFrZ0VpQUdMUUFBYWtIQU5Xb3RBQUE2QUFBZ0J5Z0MwQUloRWlBR0xRQUNJUm9nQ1NBUElCRnFRY0ExYWkwQUFEb0FBU0FIS0FMVUFpRVJJQVl0QUFNaER5QUpJQklnR21wQndEVnFMUUFBT2dBQ0lBa2dEeUFSYWtIQU5Xb3RBQUE2QUFNZ0J5Z0MzQUloRWlBR0xRQUpJUkVnQ1NBS2FpSUpJQWNvQXRnQ0lBWXRBQWhxUWNBMWFpMEFBRG9BQUNBSEtBTGdBaUVQSUFZdEFBb2hHaUFKSUJFZ0VtcEJ3RFZxTFFBQU9nQUJJQWNvQXVRQ0lSSWdCaTBBQ3lFUklBa2dEeUFhYWtIQU5Xb3RBQUE2QUFJZ0NTQVJJQkpxUWNBMWFpMEFBRG9BQXlBSEtBTHNBaUVTSUFZdEFCRWhFU0FKSUFwcUlna2dCeWdDNkFJZ0JpMEFFR3BCd0RWcUxRQUFPZ0FBSUFjb0F2QUNJUThnQmkwQUVpRWFJQWtnRVNBU2FrSEFOV290QUFBNkFBRWdCeWdDOUFJaEVpQUdMUUFUSVJFZ0NTQVBJQnBxUWNBMWFpMEFBRG9BQWlBSklCRWdFbXBCd0RWcUxRQUFPZ0FESUFjb0F2d0NJUklnQmkwQUdTRVJJQWtnQ21vaUNTQUhLQUw0QWlBR0xRQVlha0hBTldvdEFBQTZBQUFnQnlnQ2dBTWhEeUFHTFFBYUlSb2dDU0FSSUJKcVFjQTFhaTBBQURvQUFTQUhLQUtFQXlFSElBWXRBQnNoQmlBSklBOGdHbXBCd0RWcUxRQUFPZ0FDSUFrZ0JpQUhha0hBTldvdEFBQTZBQU1NQVFzZ0JpZ0NDQ0VTSUFrZ0JpZ0NBRFlDQUNBSklBMUJBblFpQjJvaUNTQVNOZ0lBSUFZb0FoZ2hFaUFISUFscUlna2dCaWdDRURZQ0FDQUhJQWxxSUJJMkFnQUxJQWhCQVdvaUNFRVlSdzBBQ3d3QkN5QXJJQjlCRUdvUUR3c2dBQ2dDdkFraURpQXhhaWdDeEFGQkFVWWhDZ0ovUVFBZ0lDZ0NERUVEZENBZ0tBSVFheUlIUlEwQUdrRUJJQWRCQ0VzTkFCb2dJQ2dDQkNJR0xRQUFJQ0FvQWdnaUNVRVlhaUlhZENFSUlBY2dDV3BCQ0dzaUNVRUJUZ1JBQTBBZ0JpMEFBU0FhUVFocklocDBJQWh5SVFnZ0NVRUlTaUVNSUFaQkFXb2hCaUFKUVFocklRa2dEQTBBQ3d0QkFTQUhRUUZyZENBSVFTQWdCMnQyUndzZ0h5Z0NESEloQmdKQUFrQWdMeWdDQkVFQ2F3NEdBQUVCQVFFQUFRc2dBQ0FxTmdLd0NRc2dDaUEwYWlFMElBWkJBRWNoQ0NBQUtBS1lDU0lISUNwQkFXb2lCaUFHSUFkSkd5RUdJQUFvQXBRSklna2dLa0VDZEdvb0FnQWhDZ05BQWtBZ0J5QXFRUUZxSWlwTkJFQWdCaUVxREFFTElBa2dLa0VDZEdvb0FnQWdDa2NOQVFzTFFRRWhCa0VBSUFoQkFDQXFJQWNnS2tZYklpb2JEUUVnQ0EwQUN5QUhJQUJCckFscUtBSUFJRFJxSWdoSkRRQWdBQ0FJTmdLc0NVRUFJUVlMSUI5QjhBTnFKQUFnQmdzRVFDQUFLQUtvQ1NFSklBQW9BdGdLSVFZQ1FDQUFLQUt3Q1NJSFJRMEFJQVlnQjBFQmF5SUtUd1JBSUFvaEJnd0JDeUFBS0FLOENTRUhRUUFoRFFOQUFrQWdCeUFLUWRnQmJHb29BZ1FnQ1VjTkFDQU5RUUZxSWcwZ0FDZ0NFQ2dDTkNJSVFRb2dDRUVLU3h0SkRRQWdDaUVHREFJTElBcEJBV3NpQ2lBR1N3MEFDd3NnQUNnQ3ZBa2hEQU5BUVFBaENpQUpJQXdnQmtIWUFXeHFJZ2NvQWdSSEJFQkJBeUVNREJNTElBY29Bc1FCSWdoRkJFQkJBeUVNREJNTElBY2dDRUVCYXpZQ3hBRWdBQ2dDbUFraUNDQUdRUUZxSWdjZ0J5QUlTUnNoQnlBQUtBS1VDU0lPSUFaQkFuUnFLQUlBSVEwRFFBSkFJQWdnQmtFQmFpSUdUUVJBSUFjaEJnd0JDeUFPSUFaQkFuUnFLQUlBSUExSERRRUxDMEVBSUFZZ0JpQUlSaHNpQmcwQUMwRURJUXdNRVFzZ0FDZ0MvQW9FUUVFQUlRcEJBQ0VOQWtBZ0FDZ0NtQWtpR0VVTkFDQVlRUU54SVF3Z0FDZ0N2QWtoQjBFQUlRa2dHRUVCYTBFRFR3UkFRUUFoQmlBWVFYeHhJZ2toRWdOQUlBMGdCeUFHUWRnQmJHb29Bc1FCUVFCSGFpQUhJQVpCQVhKQjJBRnNhaWdDeEFGQkFFZHFJQWNnQmtFQ2NrSFlBV3hxS0FMRUFVRUFSMm9nQnlBR1FRTnlRZGdCYkdvb0FzUUJRUUJIYWlFTklBWkJCR29oQmlBU1FRUnJJaElOQUFzTElBeEZEUUFEUUNBTklBY2dDVUhZQVd4cUtBTEVBVUVBUjJvaERTQUpRUUZxSVFrZ0RFRUJheUlNRFFBTEMwRUJJUVlnRFNBWVJnMFBRUUFoREF3UkMwRUFJUXBCQVNFR0lBQW9BcXdKSUFBb0FwZ0pSZzBPUVFBaERBd1FDeUFIS0FJUUlRWUxJQVpCQVVjTkFDQUhLQUlZRFFBZ0MwRUFOZ0xzQVNBTFFkQUJhaUFMUWV3QmFoQUNJUVlDUUFKQUlBc29BdXdCUVg5R0JFQWdCa1VOQVF3Q0N5QUdSUTBCQzBFQklRWU1BZ3NnQ0NnQ0NFVU5BQ0FMUVFBMkF1d0JJQXRCMEFGcUlBdEI3QUZxRUFJaEJnSkFJQXNvQXV3QlFYOUdCRUFnQmcwQ0RBRUxJQVpGRFFFTFFRRWhCZ3dCQ3lBSUtBSkVCRUJCQVNFR0lBdEIwQUZxSUF0QnpBRnFFQUlOQVFzZ0N5Z0MxQUVoQmdKQUlBc29BdHdCUVFOMElnd2dDeWdDNEFFaURtc2lDRUVnVGdSQUlBWW9BQUFpQ0VFWWRDQUlRUWgwUVlDQS9BZHhjaUFJUVFoMlFZRCtBM0VnQ0VFWWRuSnlJUWtnQ3lnQzJBRWlDRVVOQVNBSklBaDBJQVl0QUFSQkNDQUlhM1p5SVFrTUFRc2dDRUVCU0FSQVFRQWhDUXdCQ3lBR0xRQUFJQXNvQXRnQklnMUJHR29pTW5RaENTQUlJQTFxUVFocklnMUJBVWdOQUFOQUlBWXRBQUVnTWtFSWF5SXlkQ0FKY2lFSklBMUJDRW9oQ0NBR1FRRnFJUVlnRFVFSWF5RU5JQWdOQUFzTElBc2dEa0VCYWlJSU5nTGdBVUYvSVFZZ0NDQU1UUVJBSUFzZ0N5Z0MwQUVnQ0VFRGRtbzJBdFFCSUFsQkgzWWhCZ3NnQmtGL1JpRU5DeUFHSUExeURRQWdBQ2dDL0FrTkFDQUtSUTBBSUFvb0FqUWdCeWdDTkVjTkFDQUtLQUk0SUFjb0FqaEhEUUFnQ2lnQ1dDQUhLQUpZUmcwQkN5QUFRUUEyQW9BS0RBRUxJQUFvQXNRSklnbEZEUUFnQUVFQk5nS0FDaUFBS0FMZ0NTRU1BMEJCQUNFR1FmLy8vLzhISVFkQkFDRUtBMEFnQ1NBS1FTaHNhaUlJS0FJWUJFQWdDQ0FHSUFnb0FoQWlDQ0FIU0NJT0d5RUdJQWdnQnlBT0d5RUhDeUFLUVFGcUlnb2dERTBOQUNBR1JRMENJQUFvQXRBSklBQW9BdFFKSWdoQkJIUnFJZ2NnQmlnQ0FEWUNBQ0FISUFZb0FpUTJBZ3dnQnlBR0tBSWNOZ0lFSUFjZ0JpZ0NJRFlDQ0NBQUlBaEJBV28yQXRRSlFRQWhDaUFHUVFBMkFoZ2dCaWdDRkNFSVFRQWhCa0gvLy8vL0J5RUhJQWdOQUFzZ0FDQUFLQUx3Q1VFQmF6WUM4QWtNQUFzQUN5QUFJQUFvQWdnMkFnQkJBaUVNUVFBaE1rRUFJUW9NQ1FzZ0FFS0Fnb0NBZ0FRM0FnUkJBQ0VLSUFCQkFEWUN0Qm9nQUVJQU53SU1EQWdMSUF0QkNHb2dDMEhzQVdvUUFnMEFJQXNvQXV3QklnWkJIMHNOQUNBTElBWkJBV28yQWxBZ0MwRUlhaUFMUWV3QmFoQUNEUUFnQ3lnQzdBRkJIMHNOQUNBTEtBSU1JUVlDUUNBTEtBSVVRUU4wSWd3Z0N5Z0NHQ0lPYXlJSVFTQk9CRUFnQmlnQUFDSUhRUmgwSUFkQkNIUkJnSUQ4QjNGeUlBZEJDSFpCZ1A0RGNTQUhRUmgyY25JaEJ5QUxLQUlRSWdoRkRRRWdCeUFJZENBR0xRQUVRUWdnQ0d0MmNpRUhEQUVMSUFoQkFVZ0VRRUVBSVFjTUFRc2dCaTBBQUNBTEtBSVFJZ2xCR0dvaURYUWhCeUFJSUFscVFRaHJJZ3BCQVVnTkFBTkFJQVl0QUFFZ0RVRUlheUlOZENBSGNpRUhJQXBCQ0VvaENDQUdRUUZxSVFZZ0NrRUlheUVLSUFnTkFBc0xJQXNnRGtFQmFpSUpOZ0lZSUFzZ0NVRUhjU0lJTmdJUUlBa2dERXNOQUNBTElBc29BZ2dpRWlBSlFRTjJhaUlHTmdJTUlBZEJBRWdOQUFKQUlBd2dDV3NpQ1VFZ1RnUkFJQVlvQUFBaUIwRVlkQ0FIUVFoMFFZQ0EvQWR4Y2lBSFFRaDJRWUQrQTNFZ0IwRVlkbkp5SVFjZ0NFVU5BU0FISUFoMElBWXRBQVJCQ0NBSWEzWnlJUWNNQVFzZ0NVRUJTQVJBUVFBaEJ3d0JDeUFHTFFBQUlBaEJHSElpRFhRaEJ5QUlJQWxxUVFocklncEJBVWdOQUFOQUlBWXRBQUVnRFVFSWF5SU5kQ0FIY2lFSElBcEJDRW9oQ0NBR1FRRnFJUVlnQ2tFSWF5RUtJQWdOQUFzTElBc2dEa0VEYWlJR05nSVlJQXNnQmtFSGNUWUNFQ0FHSUF4TERRQWdDeUFTSUFaQkEzWnFOZ0lNSUFkQi8vLy8vM3RMRFFBZ0MwRUFOZ0xRQVNBTFFRaHFJQXRCMEFGcUVBSWhCeUFMS0FMUUFTSUdRWDlHRFFBZ0J3MEFJQVpCQVdwQkFYWWlCMEVBSUFkcklBWkJBWEViUVJwcUlnWkJNMHNOQUNBTElBWTJBbFFnQzBFQU5nTFFBU0FMUVFocUlBdEIwQUZxRUFJaEJ5QUxLQUxRQVNJR1FYOUdEUUFnQncwQUlBWkJBV3BCQVhZaUIwRUFJQWRySUFaQkFYRWJRUnBxUVROTERRQWdDMEVBTmdMUUFTQUxRUWhxSUF0QjBBRnFFQUloQnlBTEtBTFFBU0lHUVg5R0RRQWdCdzBBSUFaQkFXcEJBWFlpQjBFQUlBZHJJQVpCQVhFYklnWkJER3BCR0VzTkFDQUxJQVkyQWxnZ0N5Z0NEQ0VHQWtBZ0N5Z0NGRUVEZENJSUlBc29BaGdpREdzaUNVRWdUZ1JBSUFZb0FBQWlCMEVZZENBSFFRaDBRWUNBL0FkeGNpQUhRUWgyUVlEK0EzRWdCMEVZZG5KeUlRY2dDeWdDRUNJSlJRMEJJQWNnQ1hRZ0JpMEFCRUVJSUFscmRuSWhCd3dCQ3lBSlFRRklCRUJCQUNFSERBRUxJQVl0QUFBZ0N5Z0NFQ0lLUVJocUlnMTBJUWNnQ1NBS2FrRUlheUlLUVFGSURRQURRQ0FHTFFBQklBMUJDR3NpRFhRZ0IzSWhCeUFLUVFoS0lRa2dCa0VCYWlFR0lBcEJDR3NoQ2lBSkRRQUxDeUFMSUF4QkFXb2lDallDR0NBTElBcEJCM0VpQ1RZQ0VDQUlJQXBKRFFBZ0N5QUhRUjkyTmdKY0lBc2dDeWdDQ0NJT0lBcEJBM1pxSWdZMkFnd0NRQ0FJSUFwcklncEJJRTRFUUNBR0tBQUFJZ2RCR0hRZ0IwRUlkRUdBZ1B3SGNYSWdCMEVJZGtHQS9nTnhJQWRCR0haeWNpRUhJQWxGRFFFZ0J5QUpkQ0FHTFFBRVFRZ2dDV3QyY2lFSERBRUxJQXBCQVVnRVFFRUFJUWNNQVFzZ0JpMEFBQ0FKUVJoeUlnMTBJUWNnQ1NBS2FrRUlheUlLUVFGSURRQURRQ0FHTFFBQklBMUJDR3NpRFhRZ0IzSWhCeUFLUVFoS0lRa2dCa0VCYWlFR0lBcEJDR3NoQ2lBSkRRQUxDeUFMSUF4QkFtb2lDallDR0NBTElBcEJCM0VpQ1RZQ0VDQUlJQXBKRFFBZ0N5QUhRUjkyTmdKZ0lBc2dEaUFLUVFOMmFpSUdOZ0lNQWtBZ0NDQUtheUlLUVNCT0JFQWdCaWdBQUNJSFFSaDBJQWRCQ0hSQmdJRDhCM0Z5SUFkQkNIWkJnUDREY1NBSFFSaDJjbkloQnlBSlJRMEJJQWNnQ1hRZ0JpMEFCRUVJSUFscmRuSWhCd3dCQ3lBS1FRRklCRUJCQUNFSERBRUxJQVl0QUFBZ0NVRVljaUlOZENFSElBa2dDbXBCQ0dzaUNrRUJTQTBBQTBBZ0JpMEFBU0FOUVFocklnMTBJQWR5SVFjZ0NrRUlTaUVKSUFaQkFXb2hCaUFLUVFocklRb2dDUTBBQ3dzZ0N5QU1RUU5xSWdZMkFoZ2dDeUFHUVFkeElnazJBaEFnQmlBSVN3MEFJQXNnQjBFZmRqWUNaQ0FMSUE0Z0JrRURkbW8yQWd3Q1FDQUlJQVpySWdaQkFXdEJIa3NOQUNBR0lBbHFRUWhySWdaQkFVZ05BQU5BSUFaQkNFb2hCeUFHUVFocklRWWdCdzBBQ3dzZ0N5QU1JQWxyUVF0cUlnWTJBaGdnQ3lBR1FRZHhOZ0lRSUFZZ0NFMEVRQ0FMSUE0Z0JrRURkbW8yQWd3TElBQWdDeWdDSUNJSFFRSjBhaUlHS0FLVUFTSUlEUUVnQmtISUFCQUlJZ28yQXBRQklBcEZEUU1NQWdzZ0N5Z0NOQkFFUVFBaENpQUxRUUEyQWpRZ0N5Z0NPQkFFSUF0QkFEWUNPQ0FMS0FJOEVBUWdDMEVBTmdJOElBc29Ba3dRQkVFRElRd01CZ3NDUUNBSElBQW9BZ1JIRFFBZ0N5Z0NKQ0FBS0FJSVJnMEFJQUJCZ1FJMkFnUUxJQWdvQWhRUUJDQUdLQUtVQVVFQU5nSVVJQVlvQXBRQktBSVlFQVFnQmlnQ2xBRkJBRFlDR0NBR0tBS1VBU2dDSEJBRUlBWW9BcFFCUVFBMkFod2dCaWdDbEFFb0Fpd1FCQ0FHS0FLVUFVRUFOZ0lzSUFZb0FwUUJJUW9MSUFvZ0MwRWdha0hJQUJBSEdndEJBQ0VLUVFBaERBd0RDeUFMS0FLUUFSQUVRUUFoQ2lBTFFRQTJBcEFCSUFzb0Fyd0JFQVJCQXlFTURBSUxJQUFnQmpZQ25Ba2dBQ2dDdkFraERrRUFJU0pCQUNFNUl3QkJzQUZySWcwa0FDQXJLQUlJSWhFRVFDQXJLQUlFSWg5QkJuUWhTeUFmUVRCc0lVd2dIMEVGZENFZ0lCOUJVR3doTENBUklCOXNJZ1pCQm5RaFRTQUdRUWgwSVU1QkFDQWZRUU4wSWhwckloZEJBWFFoS2tFQUlCOUJCSFFpTm1zaUkwRUNkQ0ZQSUNOQkFYUWhMZ05BQWtBZ0RpZ0NDQ0lHUVFGR0RRQUNRQUpBQWtBQ1FDQU9LQUxJQVNJVVJRUkFRUUVoQnd3QkMwRUZJUWNnQmtFQ1J3MEFRUVZCQVNBT0tBSUVJaElnRkNnQ0JFWWJJUWNnRGlnQ3pBRWlDQTBCUVFBaENBd0RDeUFPS0FMTUFTSUlSUVJBUVFBaENBd0RDeUFHUVFKSERRRWdEaWdDQkNFU0N5QVNJQWdvQWdSSERRRUxJQWRCQW5JaEJ3c0Nmd0pBQW44Z0IwRUNjU0kvQkVBQ1FDQU9LQUlBUVFWTkJFQWdDQ2dDQUVFR1NRMEJDeUFOUVFRMkFrQWdEVUVFTmdKSUlBMUJCRFlDT0NBTlFRUTJBakFNQXd0QkFpRU1RUUloRWdKQUlBNHZBUndOQUNBSUx3RXdEUUJCQVNFU0lBNG9BblFnQ0NnQ2ZFY05BQ0FPTGdHRUFTQUlMZ0dzQVdzaUJpQUdRUjkxSWdacUlBWnpRUU5MRFFBZ0RpNEJoZ0VnQ0M0QnJnRnJJZ1lnQmtFZmRTSUdhaUFHYzBFRFN5RVNDeUFOSUJJMkFqQUNRQ0FPTHdFZURRQWdDQzhCTWcwQVFRRWhEQ0FPS0FKMElBZ29BbnhIRFFBZ0RpNEJpQUVnQ0M0QnNBRnJJZ1lnQmtFZmRTSUdhaUFHYzBFRFN3MEFJQTR1QVlvQklBZ3VBYklCYXlJR0lBWkJIM1VpQm1vZ0JuTkJBMHNoREFzZ0RTQU1OZ0k0UVFJaEUwRUNJUndDUUNBT0x3RWtEUUFnQ0M4Qk9BMEFRUUVoSENBT0tBSjRJQWdvQW9BQlJ3MEFJQTR1QVpRQklBZ3VBYndCYXlJR0lBWkJIM1VpQm1vZ0JuTkJBMHNOQUNBT0xnR1dBU0FJTGdHK0FXc2lCaUFHUVI5MUlnWnFJQVp6UVFOTElSd0xJQTBnSERZQ1FBSkFJQTR2QVNZTkFDQUlMd0U2RFFCQkFTRVRJQTRvQW5nZ0NDZ0NnQUZIRFFBZ0RpNEJtQUVnQ0M0QndBRnJJZ1lnQmtFZmRTSUdhaUFHYzBFRFN3MEFJQTR1QVpvQklBZ3VBY0lCYXlJR0lBWkJIM1VpQm1vZ0JuTkJBMHNoRXdzZ0RTQVROZ0pJSUF3Z0VuSU5BaUFUSUJ4eURRSkJBQXdCQ3lBTlFRQTJBa0FnRFVFQU5nSklJQTFCQURZQ09DQU5RUUEyQWpCQkFBc2hFa0VCREFFTFFRRWhFa0VBQ3lFSkFrQUNRQUpBSUFkQkJIRWlRQVJBQWtBZ0RpZ0NBQ0lIUVFWTkJFQWdGQ2dDQUVFR1NRMEJDeUFOUVFRMkFuUWdEVUVFTmdLVUFTQU5RUVEyQWxRZ0RVRUVOZ0kwUVFFaEVnd0NDMEVDSVFaQkFpRWNBa0FnRGk4QkhBMEFJQlF2QVNZTkFFRUJJUndnRGlnQ2RDQVVLQUo0UncwQUlBNHVBWVFCSUJRdUFaZ0JheUlLSUFwQkgzVWlDbW9nQ25OQkEwc05BQ0FPTGdHR0FTQVVMZ0dhQVdzaUNpQUtRUjkxSWdwcUlBcHpRUU5MSVJ3TElBMGdIRFlDTkFKQUlBNHZBU0FOQUNBVUx3RXFEUUJCQVNFR0lBNG9BblFnRkNnQ2VFY05BQ0FPTGdHTUFTQVVMZ0dnQVdzaUNpQUtRUjkxSWdwcUlBcHpRUU5MRFFBZ0RpNEJqZ0VnRkM0Qm9nRnJJZ1lnQmtFZmRTSUdhaUFHYzBFRFN5RUdDeUFOSUFZMkFsUkJBaUVQUVFJaEV3SkFJQTR2QVN3TkFDQVVMd0UyRFFCQkFTRVRJQTRvQW53Z0ZDZ0NnQUZIRFFBZ0RpNEJwQUVnRkM0QnVBRnJJZ29nQ2tFZmRTSUthaUFLYzBFRFN3MEFJQTR1QWFZQklCUXVBYm9CYXlJS0lBcEJIM1VpQ21vZ0NuTkJBMHNoRXdzZ0RTQVROZ0owQWtBZ0RpOEJNQTBBSUJRdkFUb05BRUVCSVE4Z0RpZ0NmQ0FVS0FLQUFVY05BQ0FPTGdHc0FTQVVMZ0hBQVdzaUNpQUtRUjkxSWdwcUlBcHpRUU5MRFFBZ0RpNEJyZ0VnRkM0QndnRnJJZ29nQ2tFZmRTSUthaUFLYzBFRFN5RVBDeUFOSUE4MkFwUUJRUUVoRWlBSlJRMENJQVlnSEhJTkFpQVBJQk55RFFKQkFDRVNEQUlMSUExQkFEWUNkQ0FOUVFBMkFwUUJJQTFCQURZQ1ZDQU5RUUEyQWpRZ0RpZ0NBQ0VIQ3lBSFFRWkpEUUFnRFVFRE5nS2dBU0FOUW9PQWdJQXdOd0trQVNBTlFRTTJBcEFCSUExQkF6WUNjQ0FOUVFNMkFxd0JJQTFDZzRDQWdEQTNBNWdCSUExQ2c0Q0FnREEzQTRnQklBMUNnNENBZ0RBM0E0QUJJQTFDZzRDQWdEQTNBM2dnRFVLRGdJQ0FNRGNEYUNBTlFvT0FnSUF3TndOZ0lBMUNnNENBZ0RBM0ExZ2dEVUtEZ0lDQU1EY0NUQ0FOUVFNMkFrUWdEVUVETmdJOERBRUxBa0FnQjBFQlRRUkFJQTBDZndKQUlBNHZBU0FpTkEwQUlBNHZBUndOQUVFQURBRUxRUUlMSWdjMkFsQWdEUUovQWtBZ0RpOEJJaUlsRFFBZ0RpOEJIZzBBUVFBTUFRdEJBZ3NpRERZQ1dDQU5BbjhDUUNBT0x3RW9JZ2tOQUNBT0x3RWtEUUJCQUF3QkMwRUNDeUljTmdKZ0lBMENmd0pBSUE0dkFTb2lKZzBBSUE0dkFTWU5BRUVBREFFTFFRSUxJaE0yQW1oQkFpRVBJQTFCQWlBMFFRQkhRUUYwSUE0dkFTd2lNUnNpRmpZQ2NDQU5RUUlnSlVFQVIwRUJkQ0FPTHdFdUloMGJJaGsyQW5nZ0RVRUNJQWxCQUVkQkFYUWdEaThCTkNJVkd5SWVOZ0tBQVNBTlFRSWdKa0VBUjBFQmRDQU9Md0UySWk4YklpUTJBb2dCSUEwZ0RpOEJNQ0l6SURGeVFRQkhRUUYwSWdvMkFwQUJJQTBnRGk4Qk1pSWhJQjF5UVFCSFFRRjBJaTAyQXBnQklBMGdEaThCT0NJb0lCVnlRUUJIUVFGMEloczJBcUFCSUEwZ0RpOEJPaUlRSUM5eVFRQkhRUUYwSWlrMkFxZ0JRUUloQmlBT0x3RWVSUVJBUVFBaER5QU9Md0VjUVFCSFFRRjBJUVlMSUEwZ0JqWUNQQ0FOUVFJZ0R5QU9Md0VrSWpBYklnODJBa1FnRGk4QkppRTFJQTBnRUNBb2NrRUFSMEVCZENJUU5nS3NBU0FOSUNFZ0tISkJBRWRCQVhRaUtEWUNwQUVnRFNBaElETnlRUUJIUVFGMElpRTJBcHdCSUEwZ0ZTQXZja0VBUjBFQmRDSXZOZ0tNQVNBTklCVWdIWEpCQUVkQkFYUWlGVFlDaEFFZ0RTQWRJREZ5UVFCSFFRRjBJakUyQW53Z0RTQUpJQ1p5UVFCSFFRRjBJaDAyQW13Z0RTQUpJQ1Z5UVFCSFFRRjBJZ2syQW1RZ0RTQWxJRFJ5UVFCSFFRRjBJaVUyQWx3Z0RTQXdJRFZ5UVFCSFFRRjBJalEyQWt3TUFRc0Nmd0pBSUEwQ2Z3SkFBa0FDUUFKQUFrQWdCMEVDYXc0Q0FBRUNDeUFOQW44Q1FDQU9Md0VnSWlVTkFDQU9Md0VjRFFCQkFBd0JDMEVDQ3lJSE5nSlFJQTBDZndKQUlBNHZBU0lpRlEwQUlBNHZBUjROQUVFQURBRUxRUUlMSWd3MkFsZ2dEUUovQWtBZ0RpOEJLQ0lKRFFBZ0RpOEJKQTBBUVFBTUFRdEJBZ3NpSERZQ1lDQU5BbjhDUUNBT0x3RXFJaDBOQUNBT0x3RW1EUUJCQUF3QkMwRUNDeUlUTmdKb0lBMENmd0pBSUE0dkFUQWlMdzBBSUE0dkFTd05BRUVBREFFTFFRSUxJZ28yQXBBQklBMENmd0pBSUE0dkFUSWlJUTBBSUE0dkFTNE5BRUVBREFFTFFRSUxJaTAyQXBnQklBMENmd0pBSUE0dkFUZ2lLQTBBSUE0dkFUUU5BRUVBREFFTFFRSUxJaHMyQXFBQklBMENmd0pBSUE0dkFUb2lKZzBBSUE0dkFUWU5BRUVBREFFTFFRSUxJaWsyQXFnQlFRSWhHVUVDSVJZQ1FDQWxJQTR2QVN3aU0zSU5BRUVCSVJZZ0RpNEJwQUVnRGk0QmpBRnJJZ1lnQmtFZmRTSUdhaUFHYzBFRFN3MEFJQTR1QWFZQklBNHVBWTRCYXlJR0lBWkJIM1VpQm1vZ0JuTkJBMHNOQUNBT0tBSjhJQTRvQW5SSElSWUxJQTBnRmpZQ2NBSkFJQlVnRGk4QkxpSTBjZzBBUVFFaEdTQU9MZ0dvQVNBT0xnR1FBV3NpQmlBR1FSOTFJZ1pxSUFaelFRTkxEUUFnRGk0QnFnRWdEaTRCa2dGcklnWWdCa0VmZFNJR2FpQUdjMEVEU3cwQUlBNG9BbndnRGlnQ2RFY2hHUXNnRFNBWk5nSjRRUUloSkVFQ0lSNENRQ0FKSUE0dkFUUWlNWElOQUVFQklSNGdEaTRCdEFFZ0RpNEJuQUZySWdZZ0JrRWZkU0lHYWlBR2MwRURTdzBBSUE0dUFiWUJJQTR1QVo0QmF5SUdJQVpCSDNVaUJtb2dCbk5CQTBzTkFDQU9LQUtBQVNBT0tBSjRSeUVlQ3lBTklCNDJBb0FCQWtBZ0hTQU9Md0UySWpCeURRQkJBU0VrSUE0dUFiZ0JJQTR1QWFBQmF5SUdJQVpCSDNVaUJtb2dCbk5CQTBzTkFDQU9MZ0c2QVNBT0xnR2lBV3NpQmlBR1FSOTFJZ1pxSUFaelFRTkxEUUFnRGlnQ2dBRWdEaWdDZUVjaEpBc2dEU0FrTmdLSUFTQU9Md0VlRFFJZ0RpOEJIQVJBUVFJaEJpQU5RUUkyQWp3Z0RpOEJKQ0lRRFFaQkFDRVBRUUFNQnd0QkFDRUdJQTFCQURZQ1BFRUFJUTlCQUNBT0x3RWtJaEJGRFFZYURBVUxJQTBDZndKQUlBNHZBU0FpRHcwQUlBNHZBUndOQUVFQURBRUxRUUlMSWdjMkFsQWdEUUovQWtBZ0RpOEJJaUlWRFFBZ0RpOEJIZzBBUVFBTUFRdEJBZ3NpRERZQ1dDQU5BbjhDUUNBT0x3RW9JaWdOQUNBT0x3RWtEUUJCQUF3QkMwRUNDeUljTmdKZ0lBMENmd0pBSUE0dkFTb2lIUTBBSUE0dkFTWU5BRUVBREFFTFFRSUxJaE0yQW1nZ0RTQU9Md0VzSWdrZ0QzSkJBRWRCQVhRaUZqWUNjQ0FOSUE0dkFTNGlKaUFWY2tFQVIwRUJkQ0laTmdKNElBMGdEaThCTkNJeklDaHlRUUJIUVFGMEloNDJBb0FCSUEwZ0RpOEJOaUlsSUIxeVFRQkhRUUYwSWlRMkFvZ0JJQTFCQWlBSlFRQkhRUUYwSUE0dkFUQWlJUnNpQ2pZQ2tBRWdEVUVDSUNaQkFFZEJBWFFnRGk4Qk1pSTFHeUl0TmdLWUFTQU5RUUlnTTBFQVIwRUJkQ0FPTHdFNElqY2JJaHMyQXFBQklBMUJBaUFsUVFCSFFRRjBJQTR2QVRvaUVCc2lLVFlDcUFFZ0RRSi9Ba0FnRGk4QkhpSTZEUUFnRGk4QkhBMEFRUUFNQVF0QkFnc2lCallDUENBT0x3RW1CRUFnRGk4QkpDRXdEQU1MSUE0dkFTUWlNQTBDUVFBaE1FRUFEQU1MSUE0dUFZWUJJUVlnRGk0QmpnRWhDVUVDSVF3Z0RRSi9RUUlnRGk4QklDSkJJQTR2QVJ3aU8zSU5BQnBCQVNBT0xnR01BU0FPTGdHRUFXc2lCeUFIUVI5MUlnZHFJQWR6UVFOTERRQWFJQWtnQm1zaUJ5QUhRUjkxSWdkcUlBZHpRUU5MQ3lJSE5nSlFJQTR1QVlvQklSMGdEaTRCa2dFaEZRSkFJQTR2QVNJaUx5QU9Md0VlSWlWeURRQkJBU0VNSUE0dUFaQUJJQTR1QVlnQmF5SUtJQXBCSDNVaUNtb2dDbk5CQTBzTkFDQVZJQjFySWdvZ0NrRWZkU0lLYWlBS2MwRURTeUVNQ3lBTklBdzJBbGdnRGk0QmxnRWhOQ0FPTGdHZUFTRVFRUUloRXlBTkFuOUJBaUFPTHdFb0lqRWdEaThCSkNKQ2NnMEFHa0VCSUE0dUFad0JJQTR1QVpRQmF5SUtJQXBCSDNVaUNtb2dDbk5CQTBzTkFCb2dFQ0EwYXlJS0lBcEJIM1VpQ21vZ0NuTkJBMHNMSWh3MkFtQWdEaTRCbWdFaFF5QU9MZ0dpQVNFbUFrQWdEaThCS2lKRUlBNHZBU1lpVUhJTkFFRUJJUk1nRGk0Qm9BRWdEaTRCbUFGcklnb2dDa0VmZFNJS2FpQUtjMEVEU3cwQUlDWWdRMnNpQ2lBS1FSOTFJZ3BxSUFwelFRTkxJUk1MSUEwZ0V6WUNhQ0FPTGdHbUFTRXpRUUloR1VFQ0lSWUNRQ0JCSUE0dkFTd2lSWElOQUVFQklSWWdEaTRCcEFFZ0RpNEJqQUZySWdvZ0NrRWZkU0lLYWlBS2MwRURTdzBBSURNZ0NXc2lDaUFLUVI5MUlncHFJQXB6UVFOTERRQWdEaWdDZkNBT0tBSjBSeUVXQ3lBTklCWTJBbkFnRGk0QnFnRWhJUUpBSUM4Z0RpOEJMaUl3Y2cwQVFRRWhHU0FPTGdHb0FTQU9MZ0dRQVdzaUNpQUtRUjkxSWdwcUlBcHpRUU5MRFFBZ0lTQVZheUlLSUFwQkgzVWlDbW9nQ25OQkEwc05BQ0FPS0FKOElBNG9BblJISVJrTElBMGdHVFlDZUNBT0xnRzJBU0VvUVFJaEpFRUNJUjRDUUNBeElBNHZBVFFpTlhJTkFFRUJJUjRnRGk0QnRBRWdEaTRCbkFGcklnb2dDa0VmZFNJS2FpQUtjMEVEU3cwQUlDZ2dFR3NpQ2lBS1FSOTFJZ3BxSUFwelFRTkxEUUFnRGlnQ2dBRWdEaWdDZUVjaEhnc2dEU0FlTmdLQUFTQU9MZ0c2QVNFM0FrQWdSQ0FPTHdFMklrWnlEUUJCQVNFa0lBNHVBYmdCSUE0dUFhQUJheUlLSUFwQkgzVWlDbW9nQ25OQkEwc05BQ0EzSUNacklnb2dDa0VmZFNJS2FpQUtjMEVEU3cwQUlBNG9Bb0FCSUE0b0FuaEhJU1FMSUEwZ0pEWUNpQUVnRGk0QnJnRWhSMEVDSVMwZ0RRSi9RUUlnUlNBT0x3RXdJbEZ5RFFBYVFRRWdEaTRCckFFZ0RpNEJwQUZySWdvZ0NrRWZkU0lLYWlBS2MwRURTdzBBR2lCSElETnJJZ29nQ2tFZmRTSUthaUFLYzBFRFN3c2lDallDa0FFZ0RpNEJzZ0VoT2dKQUlEQWdEaThCTWlKSWNnMEFRUUVoTFNBT0xnR3dBU0FPTGdHb0FXc2lEeUFQUVI5MUlnOXFJQTl6UVFOTERRQWdPaUFoYXlJUElBOUJIM1VpRDJvZ0QzTkJBMHNoTFFzZ0RTQXROZ0tZQVNBT0xnRytBU0UrUVFJaEtTQU5BbjlCQWlBMUlBNHZBVGdpU1hJTkFCcEJBU0FPTGdHOEFTQU9MZ0cwQVdzaUR5QVBRUjkxSWc5cUlBOXpRUU5MRFFBYUlENGdLR3NpRHlBUFFSOTFJZzlxSUE5elFRTkxDeUliTmdLZ0FTQU9MZ0hDQVNGS0FrQWdSaUFPTHdFNklsSnlEUUJCQVNFcElBNHVBY0FCSUE0dUFiZ0JheUlQSUE5QkgzVWlEMm9nRDNOQkEwc05BQ0JLSURkcklnOGdEMEVmZFNJUGFpQVBjMEVEU3lFcEN5QU5JQ2syQXFnQlFRSWhEeUFOQW45QkFpQWxJRHR5RFFBYVFRRWdEaTRCaUFFZ0RpNEJoQUZySWpzZ08wRWZkU0k3YWlBN2MwRURTdzBBR2lBZElBWnJJZ1lnQmtFZmRTSUdhaUFHYzBFRFN3c2lCallDUEFKQUlDVWdRbklOQUVFQklROGdEaTRCbEFFZ0RpNEJpQUZySWlVZ0pVRWZkU0lsYWlBbGMwRURTdzBBSURRZ0hXc2lIU0FkUVI5MUloMXFJQjF6UVFOTERRQWdEaWdDZUNBT0tBSjBSeUVQQ3lBTklBODJBa1JCQWlFbElBMENmMEVDSUVJZ1VISU5BQnBCQVNBT0xnR1lBU0FPTGdHVUFXc2lIU0FkUVI5MUloMXFJQjF6UVFOTERRQWFJRU1nTkdzaUhTQWRRUjkxSWgxcUlCMXpRUU5MQ3lJME5nSk1Ba0FnTHlCQmNnMEFRUUVoSlNBT0xnR1FBU0FPTGdHTUFXc2lIU0FkUVI5MUloMXFJQjF6UVFOTERRQWdGU0FKYXlJSklBbEJIM1VpQ1dvZ0NYTkJBMHNoSlFzZ0RTQWxOZ0pjUVFJaEhVRUNJUWtDUUNBdklERnlEUUJCQVNFSklBNHVBWndCSUE0dUFaQUJheUl2SUM5QkgzVWlMMm9nTDNOQkEwc05BQ0FRSUJWckloVWdGVUVmZFNJVmFpQVZjMEVEU3cwQUlBNG9BbmdnRGlnQ2RFY2hDUXNnRFNBSk5nSmtBa0FnTVNCRWNnMEFRUUVoSFNBT0xnR2dBU0FPTGdHY0FXc2lGU0FWUVI5MUloVnFJQlZ6UVFOTERRQWdKaUFRYXlJVklCVkJIM1VpRldvZ0ZYTkJBMHNoSFFzZ0RTQWROZ0pzUVFJaEZTQU5BbjlCQWlBd0lFVnlEUUFhUVFFZ0RpNEJxQUVnRGk0QnBBRnJJaEFnRUVFZmRTSVFhaUFRYzBFRFN3MEFHaUFoSUROckloQWdFRUVmZFNJUWFpQVFjMEVEU3dzaU1UWUNmQUpBSURBZ05YSU5BRUVCSVJVZ0RpNEJ0QUVnRGk0QnFBRnJJaEFnRUVFZmRTSVFhaUFRYzBFRFN3MEFJQ2dnSVdzaUVDQVFRUjkxSWhCcUlCQnpRUU5MRFFBZ0RpZ0NnQUVnRGlnQ2ZFY2hGUXNnRFNBVk5nS0VBVUVDSVNFZ0RRSi9RUUlnTlNCR2NnMEFHa0VCSUE0dUFiZ0JJQTR1QWJRQmF5SVFJQkJCSDNVaUVHb2dFSE5CQTBzTkFCb2dOeUFvYXlJUUlCQkJIM1VpRUdvZ0VITkJBMHNMSWk4MkFvd0JBa0FnU0NCUmNnMEFRUUVoSVNBT0xnR3dBU0FPTGdHc0FXc2lFQ0FRUVI5MUloQnFJQkJ6UVFOTERRQWdPaUJIYXlJUUlCQkJIM1VpRUdvZ0VITkJBMHNoSVFzZ0RTQWhOZ0tjQVVFQ0lSQkJBaUVvQWtBZ1NDQkpjZzBBUVFFaEtDQU9MZ0c4QVNBT0xnR3dBV3NpSmlBbVFSOTFJaVpxSUNaelFRTkxEUUFnUGlBNmF5SW1JQ1pCSDNVaUptb2dKbk5CQTBzTkFDQU9LQUtBQVNBT0tBSjhSeUVvQ3lBTklDZzJBcVFCQWtBZ1NTQlNjZzBBUVFFaEVDQU9MZ0hBQVNBT0xnRzhBV3NpSmlBbVFSOTFJaVpxSUNaelFRTkxEUUFnU2lBK2F5SVFJQkJCSDNVaUVHb2dFSE5CQTBzaEVBc2dEU0FRTmdLc0FRd0ZDMEVDSVFZZ0RVRUNOZ0k4SUE0dkFTUWhFQXdDQzBFQ0N5STBOZ0pNSUEwZ0VDQTNja0VBUjBFQmRDSVFOZ0tzQVNBTklDRWdOWEpCQUVkQkFYUWlJVFlDbkFFZ0RTQWxJRE55UVFCSFFRRjBJaTgyQW93QklBMGdDU0FtY2tFQVIwRUJkQ0l4TmdKOFFRSWhDU0FOUVFJZ0tFRUFSMEVCZENBZEd5SWROZ0pzSUExQkFpQVBRUUJIUVFGMElCVWJJaVUyQWx4QkFpRVBBa0FnTUNBNmNnMEFRUUVoRHlBT0xnR1VBU0FPTGdHSUFXc2lNQ0F3UVI5MUlqQnFJREJ6UVFOTERRQWdEaTRCbGdFZ0RpNEJpZ0ZySWpBZ01FRWZkU0l3YWlBd2MwRURTdzBBSUE0b0FuZ2dEaWdDZEVjaER3c2dEU0FQTmdKRUFrQWdGU0FvY2cwQVFRRWhDU0FPTGdHY0FTQU9MZ0dRQVdzaUZTQVZRUjkxSWhWcUlCVnpRUU5MRFFBZ0RpNEJuZ0VnRGk0QmtnRnJJaFVnRlVFZmRTSVZhaUFWYzBFRFN3MEFJQTRvQW5nZ0RpZ0NkRWNoQ1FzZ0RTQUpOZ0prUVFJaEtFRUNJUlVDUUNBbUlETnlEUUJCQVNFVklBNHVBYlFCSUE0dUFhZ0JheUltSUNaQkgzVWlKbW9nSm5OQkEwc05BQ0FPTGdHMkFTQU9MZ0dxQVdzaUppQW1RUjkxSWlacUlDWnpRUU5MRFFBZ0RpZ0NnQUVnRGlnQ2ZFY2hGUXNnRFNBVk5nS0VBUUpBSURVZ04zSU5BRUVCSVNnZ0RpNEJ2QUVnRGk0QnNBRnJJaVlnSmtFZmRTSW1haUFtYzBFRFN3MEFJQTR1QWI0QklBNHVBYklCYXlJbUlDWkJIM1VpSm1vZ0puTkJBMHNOQUNBT0tBS0FBU0FPS0FKOFJ5RW9DeUFOSUNnMkFxUUJEQUlMUVFJaER5QVFDeUUxSUEwZ0R6WUNSQ0FPTHdFbUlUY2dEU0FtSUNoeVFRQkhRUUYwSWhBMkFxd0JJQTBnSVNBb2NrRUFSMEVCZENJb05nS2tBU0FOUVFJZ0wwRUFSMEVCZENBaEd5SWhOZ0tjQVNBTlFRSWdDVUVBUjBFQmRDQWRHeUlkTmdKc0lBMUJBaUFWUVFCSFFRRjBJQWtiSWdrMkFtUWdEVUVDSUNWQkFFZEJBWFFnRlJzaUpUWUNYQ0FOSURBZ01YSkJBRWRCQVhRaUx6WUNqQUVnRFNBeElEUnlRUUJIUVFGMEloVTJBb1FCSUEwZ015QTBja0VBUjBFQmRDSXhOZ0o4SUEwZ055QTFRZi8vQTNGeVFRQkhRUUYwSWpRMkFrd0xJQklOQUNBSERRQWdEQTBBSUJ3TkFDQVREUUFnRmcwQUlCa05BQ0FlRFFBZ0pBMEFJQW9OQUNBdERRQWdHdzBBSUNrTkFDQUdEUUFnRHcwQUlEUU5BQ0FsRFFBZ0NRMEFJQjBOQUNBeERRQWdGUTBBSUM4TkFDQWhEUUFnS0EwQUlCQkZEUUVMSUE0b0Fnd2hCeUFOSUE0b0FoQWlDU0FPS0FJVUlnWnFJZ3BCTXlBS1FUTklHeUlLUVFBZ0NrRUFTaHRCMEJkcUxRQUFJZ28yQWlBZ0RTQUdJQWRxSWd4Qk15QU1RVE5JR3lJTVFRQWdERUVBU2hzaUVrR1FGMm90QUFBaUREWUNIQ0FOSUJKQkEyeEJrQmhxSWhFMkFoZ2dQd1JBSUEwQ2Z5QUdJQWdvQWhRaUNFY0VRQ0FOSUFZZ0NHcEJBV3BCQVhZaUNDQUphaUlTUVRNZ0VrRXpTQnNpRWtFQUlCSkJBRW9iUWRBWGFpMEFBRFlDQ0NBTklBY2dDR29pQ0VFeklBaEJNMGdiSWdoQkFDQUlRUUJLR3lJSVFaQVhhaTBBQURZQ0JDQUlRUU5zUVpBWWFnd0JDeUFOSUFvMkFnZ2dEU0FNTmdJRUlCRUxOZ0lBQ3lCQUJFQUNRQ0FHSUJRb0FoUWlDRWNFUUNBTklBWWdDR3BCQVdwQkFYWWlCaUFKYWlJSVFUTWdDRUV6U0JzaUNFRUFJQWhCQUVvYlFkQVhhaTBBQURZQ0ZDQU5JQVlnQjJvaUJrRXpJQVpCTTBnYklnWkJBQ0FHUVFCS0d5SUdRWkFYYWkwQUFEWUNFQ0FHUVFOc1FaQVlhaUVSREFFTElBMGdDallDRkNBTklBdzJBaEFMSUEwZ0VUWUNEQXNnS3lnQ0FDQWZJRGxzSWg1QkNIUnFJQ0pCQkhScUlRbEJBQ0ViUVFNaEJ5QU5RVEJxSVE4RFFDQVBLQUlFSWdZRVFDQUpJQVlnRFNnQ0RDQU5LQUlRSUEwb0FoUWdOaEFUQ3lBUEtBSU1JZ1lFUUNBSlFRUnFJQVlnRFNnQ0dDQU5LQUljSUEwb0FpQWdOaEFUQ3lBUEtBSVVJZ1lFUUNBSlFRaHFJQVlnRFNnQ0dDQU5LQUljSUEwb0FpQWdOaEFUQ3lBUEtBSWNJZ1lFUUNBSlFReHFJQVlnRFNnQ0dDQU5LQUljSUEwb0FpQWdOaEFUQ3lBSElRd0NRQUpBQWtBZ0R5Z0NBQ0lHSUE4b0FnZ2lFVWNOQUNBR0lBOG9BaEJIRFFBZ0JpQVBLQUlZUncwQUlBWkZEUUlnRFNBYlFReHNhaUlIS0FJSUlSSWdCeWdDQkNFUUlBWkJCRWtOQVNBUVFRSjJRUUpxSVJsQkVDRVJJQWtoQndOQUFrQWdCeUFqYWlJR0xRQUFJaFFnQnkwQUFDSVRheUlJSUFoQkgzVWlDR29nQ0hNaUNDQVFUdzBBSUFjZ0xtb2lJUzBBQUNJY0lCUnJJZ29nQ2tFZmRTSUthaUFLY3lBU1R3MEFJQWNnTm1vaUpDMEFBQ0lWSUJOcklnb2dDa0VmZFNJS2FpQUtjeUFTVHcwQUFuOENRQ0FJSUJsSkJFQWdCeUFnYWlJSUxRQUFJUnNDZnlBU0lBY2dMR29pQ2kwQUFDSVdJQlJySWlnZ0tFRWZkU0lvYWlBb2Mwc0VRQ0FHSUJVZ0V5QVVhaUFjYWlJR1FRRjBhaUFXYWtFRWFrRURkam9BQUNBaElBWWdGbXBCQW1wQkFuWTZBQUFnQmlBV1FRTnNhaUFISUU5cUxRQUFRUUYwYWtFRWFrRURkZ3dCQ3lBR0lRb2dGQ0FWYWlBY1FRRjBha0VDYWtFQ2Rnc2hCaUFLSUFZNkFBQWdHeUFUYXlJR0lBWkJIM1VpQm1vZ0JuTWdFazhOQVNBSElCd2dGQ0FWYWlBVGFpSUdRUUYwYWlBYmFrRUVha0VEZGpvQUFDQWtJQVlnRzJwQkFtcEJBblk2QUFBZ0JpQWJRUU5zYWlBSElFeHFMUUFBUVFGMGFrRUVha0VEZGd3Q0N5QUdJQlFnRldvZ0hFRUJkR3BCQW1wQkFuWTZBQUFMSUFjaENDQVRJQnhxSUJWQkFYUnFRUUpxUVFKMkN5RUdJQWdnQmpvQUFBc2dCMEVCYWlFSElCRkJBV3NpRVEwQUN3d0NDd0ovSUFZRVFDQU5JQnRCREd4cUloWWhHVUVFSVJJZ0JpQVdLQUlBYWtFQmF5MEFBQ0lJUVFGcUlRcEJBQ0FJYXlFY0lBa2hCd05BQWtBZ0ZpZ0NCQ0FISUNOcUlpRXRBQUFpRkNBSExRQUFJaE5ySWdZZ0JrRWZkU0lHYWlBR2MwME5BQ0FaS0FJSUloRWdCeUF1YWlJa0xRQUFJaFVnRkdzaUJpQUdRUjkxSWdacUlBWnpUUTBBSUFjZ05tb2lLQzBBQUNJUUlCTnJJZ1lnQmtFZmRTSUdhaUFHY3lBUlR3MEFJQWdoQmlBUklBY2dMR290QUFBaUxTQVVheUlwSUNsQkgzVWlLV29nS1hOTEJFQWdKQ0FWSUJ3Z0NDQVRJQlJxUVFGcVFRRjJJQlZCQVhScklDMXFRUUYxSWdZZ0JpQUlTaHNnQmlBY1NCdHFPZ0FBSUJrb0FnZ2hFU0FLSVFZTElDRUNmeUFSSUFjZ0lHb3RBQUFpSVNBVGF5SWtJQ1JCSDNVaUpHb2dKSE5MQkVBZ0tDQVFJQndnQ0NBVElCUnFRUUZxUVFGMklCQkJBWFJySUNGcVFRRjFJaEVnQ0NBUlNCc2dFU0FjU0J0cU9nQUFJQVpCQVdvaEJndEJBQ0FHYXlJaEN5QUdJQlVnRUdzZ0V5QVVhMEVDZEdwQkJHcEJBM1VpRVNBR0lCRklHeUFSSUNGSUd5SUdJQlJxUWNBMWFpMEFBRG9BQUNBSElCTWdCbXRCd0RWcUxRQUFPZ0FBQ3lBSFFRRnFJUWNnRWtFQmF5SVNEUUFMSUE4b0FnZ2hFUXNnRVFzRVFFRUVJUklnQ1VFRWFpRUhJQTBnRzBFTWJHb2lGaUVaSUJFZ0ZpZ0NBR3BCQVdzdEFBQWlDRUVCYWlFS1FRQWdDR3NoSEFOQUFrQWdGaWdDQkNBSElDTnFJaUV0QUFBaUZDQUhMUUFBSWhOcklnWWdCa0VmZFNJR2FpQUdjMDBOQUNBWktBSUlJaEVnQnlBdWFpSWtMUUFBSWhVZ0ZHc2lCaUFHUVI5MUlnWnFJQVp6VFEwQUlBY2dObW9pS0MwQUFDSVFJQk5ySWdZZ0JrRWZkU0lHYWlBR2N5QVJUdzBBSUFnaEJpQVJJQWNnTEdvdEFBQWlMU0FVYXlJcElDbEJIM1VpS1dvZ0tYTkxCRUFnSkNBVklCd2dDQ0FUSUJScVFRRnFRUUYySUJWQkFYUnJJQzFxUVFGMUlnWWdCaUFJU2hzZ0JpQWNTQnRxT2dBQUlCa29BZ2doRVNBS0lRWUxJQ0VDZnlBUklBY2dJR290QUFBaUlTQVRheUlrSUNSQkgzVWlKR29nSkhOTEJFQWdLQ0FRSUJ3Z0NDQVRJQlJxUVFGcVFRRjJJQkJCQVhScklDRnFRUUYxSWhFZ0NDQVJTQnNnRVNBY1NCdHFPZ0FBSUFaQkFXb2hCZ3RCQUNBR2F5SWhDeUFHSUJVZ0VHc2dFeUFVYTBFQ2RHcEJCR3BCQTNVaUVTQUdJQkZJR3lBUklDRklHeUlHSUJScVFjQTFhaTBBQURvQUFDQUhJQk1nQm10QndEVnFMUUFBT2dBQUN5QUhRUUZxSVFjZ0VrRUJheUlTRFFBTEN5QVBLQUlRSWdZRVFDQUpRUWhxSVFjZ0RTQWJRUXhzYWlJV0lSbEJCQ0VTSUFZZ0ZpZ0NBR3BCQVdzdEFBQWlDRUVCYWlFS1FRQWdDR3NoSEFOQUFrQWdGaWdDQkNBSElDTnFJaUV0QUFBaUZDQUhMUUFBSWhOcklnWWdCa0VmZFNJR2FpQUdjMDBOQUNBWktBSUlJaEVnQnlBdWFpSWtMUUFBSWhVZ0ZHc2lCaUFHUVI5MUlnWnFJQVp6VFEwQUlBY2dObW9pS0MwQUFDSVFJQk5ySWdZZ0JrRWZkU0lHYWlBR2N5QVJUdzBBSUFnaEJpQVJJQWNnTEdvdEFBQWlMU0FVYXlJcElDbEJIM1VpS1dvZ0tYTkxCRUFnSkNBVklCd2dDQ0FUSUJScVFRRnFRUUYySUJWQkFYUnJJQzFxUVFGMUlnWWdCaUFJU2hzZ0JpQWNTQnRxT2dBQUlCa29BZ2doRVNBS0lRWUxJQ0VDZnlBUklBY2dJR290QUFBaUlTQVRheUlrSUNSQkgzVWlKR29nSkhOTEJFQWdLQ0FRSUJ3Z0NDQVRJQlJxUVFGcVFRRjJJQkJCQVhScklDRnFRUUYxSWhFZ0NDQVJTQnNnRVNBY1NCdHFPZ0FBSUFaQkFXb2hCZ3RCQUNBR2F5SWhDeUFHSUJVZ0VHc2dFeUFVYTBFQ2RHcEJCR3BCQTNVaUVTQUdJQkZJR3lBUklDRklHeUlHSUJScVFjQTFhaTBBQURvQUFDQUhJQk1nQm10QndEVnFMUUFBT2dBQUN5QUhRUUZxSVFjZ0VrRUJheUlTRFFBTEN5QVBLQUlZSWdaRkRRRWdDVUVNYWlFSElBMGdHMEVNYkdvaUVDRVdRUVFoRWlBR0lCQW9BZ0JxUVFGckxRQUFJZ2hCQVdvaENrRUFJQWhySVJ3RFFBSkFJQkFvQWdRZ0J5QWphaUlaTFFBQUloUWdCeTBBQUNJVGF5SUdJQVpCSDNVaUJtb2dCbk5ORFFBZ0ZpZ0NDQ0lSSUFjZ0xtb2lJUzBBQUNJVklCUnJJZ1lnQmtFZmRTSUdhaUFHYzAwTkFDQUhJRFpxSWlRdEFBQWlHeUFUYXlJR0lBWkJIM1VpQm1vZ0JuTWdFVThOQUNBSUlRWWdFU0FISUN4cUxRQUFJaWdnRkdzaUxTQXRRUjkxSWkxcUlDMXpTd1JBSUNFZ0ZTQWNJQWdnRXlBVWFrRUJha0VCZGlBVlFRRjBheUFvYWtFQmRTSUdJQVlnQ0VvYklBWWdIRWdiYWpvQUFDQVdLQUlJSVJFZ0NpRUdDeUFaQW44Z0VTQUhJQ0JxTFFBQUloa2dFMnNpSVNBaFFSOTFJaUZxSUNGelN3UkFJQ1FnR3lBY0lBZ2dFeUFVYWtFQmFrRUJkaUFiUVFGMGF5QVpha0VCZFNJUklBZ2dFVWdiSUJFZ0hFZ2Jham9BQUNBR1FRRnFJUVlMUVFBZ0Jtc2lHUXNnQmlBVklCdHJJQk1nRkd0QkFuUnFRUVJxUVFOMUloRWdCaUFSU0JzZ0VTQVpTQnNpQmlBVWFrSEFOV290QUFBNkFBQWdCeUFUSUFaclFjQTFhaTBBQURvQUFBc2dCMEVCYWlFSElCSkJBV3NpRWcwQUN3d0JDeUFHSUFjb0FnQnFRUUZyTFFBQUlnWkJBV29oQ2tFQUlBWnJJUnhCRUNFUklBa2hCd05BQWtBZ0J5QWphaUlXTFFBQUloUWdCeTBBQUNJVGF5SUlJQWhCSDNVaUNHb2dDSE1nRUU4TkFDQUhJQzVxSWhrdEFBQWlGU0FVYXlJSUlBaEJIM1VpQ0dvZ0NITWdFazhOQUNBSElEWnFJaUV0QUFBaUd5QVRheUlJSUFoQkgzVWlDR29nQ0hNZ0VrOE5BQ0FHSVFnZ0VpQUhJQ3hxTFFBQUlpUWdGR3NpS0NBb1FSOTFJaWhxSUNoelN3UkFJQmtnRlNBY0lBWWdFeUFVYWtFQmFrRUJkaUFWUVFGMGF5QWtha0VCZFNJSUlBWWdDRWdiSUFnZ0hFZ2Jham9BQUNBS0lRZ0xJQllnRkFKL0lCSWdCeUFnYWkwQUFDSVdJQk5ySWhrZ0dVRWZkU0laYWlBWmMwc0VRQ0FoSUJzZ0hDQUdJQk1nRkdwQkFXcEJBWFlnRzBFQmRHc2dGbXBCQVhVaUZpQUdJQlpJR3lBV0lCeElHMm82QUFBZ0NFRUJhaUVJQzBFQUlBaHJJaFlMSUFnZ0ZTQWJheUFUSUJSclFRSjBha0VFYWtFRGRTSVZJQWdnRlVnYklCVWdGa2diSWdocVFjQTFhaTBBQURvQUFDQUhJQk1nQ0d0QndEVnFMUUFBT2dBQUN5QUhRUUZxSVFjZ0VVRUJheUlSRFFBTEN5QU1RUUZySVFjZ0QwRWdhaUVQSUFrZ1Myb2hDVUVDSVJzZ0RBMEFDeUFPS0FJTUlRWWdEU0FPS0FJUUlna2dEaWdDRkNJS0lBNG9BaGdpREdvaUIwRXpJQWRCTTBnYklnZEJBQ0FIUVFCS0cwRUNkRUhRUFdvb0FnQWlCMm9pQ0VFeklBaEJNMGdiSWdoQkFDQUlRUUJLRzBIUUYyb3RBQUFpRWpZQ0lDQU5JQVlnQjJvaUNFRXpJQWhCTTBnYklnaEJBQ0FJUVFCS0d5SUlRWkFYYWkwQUFDSVJOZ0ljSUEwZ0NFRURiRUdRR0dvaUNEWUNHQ0EvQkVBZ0RRSi9JQW9nRGlnQ3pBRW9BaFFpRDBjRVFDQU5JQWNnRENBUGFpSVBRVE1nRDBFelNCc2lEMEVBSUE5QkFFb2JRUUowUWRBOWFpZ0NBR3BCQVdwQkFYWWlEeUFKYWlJVVFUTWdGRUV6U0JzaUZFRUFJQlJCQUVvYlFkQVhhaTBBQURZQ0NDQU5JQVlnRDJvaUQwRXpJQTlCTTBnYklnOUJBQ0FQUVFCS0d5SVBRWkFYYWkwQUFEWUNCQ0FQUVFOc1FaQVlhZ3dCQ3lBTklCSTJBZ2dnRFNBUk5nSUVJQWdMTmdJQUN5QkFCRUFDUUNBS0lBNG9Bc2dCS0FJVUlnOUhCRUFnRFNBSElBd2dEMm9pQ0VFeklBaEJNMGdiSWdoQkFDQUlRUUJLRzBFQ2RFSFFQV29vQWdCcVFRRnFRUUYySWdjZ0NXb2lDRUV6SUFoQk0wZ2JJZ2hCQUNBSVFRQktHMEhRRjJvdEFBQTJBaFFnRFNBR0lBZHFJZ1pCTXlBR1FUTklHeUlHUVFBZ0JrRUFTaHNpQmtHUUYyb3RBQUEyQWhBZ0JrRURiRUdRR0dvaENBd0JDeUFOSUJJMkFoUWdEU0FSTmdJUUN5QU5JQWcyQWd3TElDc29BZ0FnVG1vZ0hrRUdkR29nSWtFRGRHb2lCeUJOYWlFU1FRRWhIRUVBSVFZZ0RVRXdhaUVSQTBBQ1FDQVJLQUlFSWdsRkRRQUNRQ0FOS0FJUUlnZ2dCMEVCYXlJVExRQUFJZ29nQnkwQUFDSU1heUlQSUE5QkgzVWlEMm9nRDNOTkRRQWdEU2dDRkNJVklBZEJBbXN0QUFBaUR5QUtheUlVSUJSQkgzVWlGR29nRkhOTkRRQWdGU0FITFFBQkloUWdER3NpR3lBYlFSOTFJaHRxSUJ0elRRMEFJQWNDZnlBSlFRTk5CRUFnRXlBSklBMG9BZ3hxUVFGckxRQUFJZ2hCZjNNaUV5QUlRUUZxSWhVZ0RDQUthMEVDZENBVWF5QVBha0VFYWtFRGRTSUlJQWdnRlVvYklBZ2dFMGdiSWdnZ0NtcEJ3RFZxTFFBQU9nQUFJQXdnQ0d0QndEVnFMUUFBREFFTElCTWdDaUFVYWlBUFFRRjBha0VDYWtFQ2Rqb0FBQ0FNSUJSQkFYUnFJQTlxUVFKcVFRSjJDem9BQUNBTktBSVFJUWdMQWtBZ0J5QWFhaUlLUVFGckloVXRBQUFpRENBS0xRQUFJZzlySWhRZ0ZFRWZkU0lVYWlBVWN5QUlUdzBBSUEwb0FoUWlHeUFLUVFKckxRQUFJaFFnREdzaUV5QVRRUjkxSWhOcUlCTnpUUTBBSUJzZ0NpMEFBU0lUSUE5ckloQWdFRUVmZFNJUWFpQVFjMDBOQUNBS0FuOGdDVUVEVFFSQUlCVWdDU0FOS0FJTWFrRUJheTBBQUNJSVFYOXpJZ2tnQ0VFQmFpSUtJQThnREd0QkFuUWdFMnNnRkdwQkJHcEJBM1VpQ0NBSUlBcEtHeUFJSUFsSUd5SUlJQXhxUWNBMWFpMEFBRG9BQUNBUElBaHJRY0ExYWkwQUFBd0JDeUFWSUF3Z0Uyb2dGRUVCZEdwQkFtcEJBblk2QUFBZ0R5QVRRUUYwYWlBVWFrRUNha0VDZGdzNkFBQWdEU2dDRUNFSUN5QVJLQUlFSVFrQ1FDQVNRUUZySWhNdEFBQWlDaUFTTFFBQUlneHJJZzhnRDBFZmRTSVBhaUFQY3lBSVR3MEFJQTBvQWhRaUZTQVNRUUpyTFFBQUlnOGdDbXNpRkNBVVFSOTFJaFJxSUJSelRRMEFJQlVnRWkwQUFTSVVJQXhySWhzZ0cwRWZkU0liYWlBYmMwME5BQ0FTQW44Z0NVRURUUVJBSUJNZ0NTQU5LQUlNYWtFQmF5MEFBQ0lJUVg5ekloTWdDRUVCYWlJVklBd2dDbXRCQW5RZ0ZHc2dEMnBCQkdwQkEzVWlDQ0FJSUJWS0d5QUlJQk5JR3lJSUlBcHFRY0ExYWkwQUFEb0FBQ0FNSUFoclFjQTFhaTBBQUF3QkN5QVRJQW9nRkdvZ0QwRUJkR3BCQW1wQkFuWTZBQUFnRENBVVFRRjBhaUFQYWtFQ2FrRUNkZ3M2QUFBZ0RTZ0NFQ0VJQ3lBSUlCSWdHbW9pQ2tFQmF5SVRMUUFBSWd3Z0NpMEFBQ0lQYXlJVUlCUkJIM1VpRkdvZ0ZITk5EUUFnRFNnQ0ZDSVZJQXBCQW1zdEFBQWlDQ0FNYXlJVUlCUkJIM1VpRkdvZ0ZITk5EUUFnRlNBS0xRQUJJaFFnRDJzaUd5QWJRUjkxSWh0cUlCdHpUUTBBSUFvQ2Z5QUpRUU5OQkVBZ0V5QUpJQTBvQWd4cVFRRnJMUUFBSWdsQmYzTWlDaUFKUVFGcUlna2dEeUFNYTBFQ2RDQVVheUFJYWtFRWFrRURkU0lJSUFnZ0NVb2JJQWdnQ2tnYklnZ2dER3BCd0RWcUxRQUFPZ0FBSUE4Z0NHdEJ3RFZxTFFBQURBRUxJQk1nRENBVWFpQUlRUUYwYWtFQ2FrRUNkam9BQUNBUElCUkJBWFJxSUFocVFRSnFRUUoyQ3pvQUFBc0NRQ0FSS0FJa0lncEZEUUFDUUNBTktBSVFJZ2dnQnlBMmFpSUpRUUZySWhVdEFBQWlEQ0FKTFFBQUlnOXJJaFFnRkVFZmRTSVVhaUFVYzAwTkFDQU5LQUlVSWhzZ0NVRUNheTBBQUNJVUlBeHJJaE1nRTBFZmRTSVRhaUFUYzAwTkFDQWJJQWt0QUFFaUV5QVBheUlRSUJCQkgzVWlFR29nRUhOTkRRQWdDUUovSUFwQkEwMEVRQ0FWSUFvZ0RTZ0NER3BCQVdzdEFBQWlDRUYvY3lJVklBaEJBV29pR3lBUElBeHJRUUowSUJOcklCUnFRUVJxUVFOMUlnZ2dDQ0FiU2hzZ0NDQVZTQnNpQ0NBTWFrSEFOV290QUFBNkFBQWdEeUFJYTBIQU5Xb3RBQUFNQVFzZ0ZTQU1JQk5xSUJSQkFYUnFRUUpxUVFKMk9nQUFJQThnRTBFQmRHb2dGR3BCQW1wQkFuWUxPZ0FBSUEwb0FoQWhDQXNDUUNBSklCcHFJZ2xCQVdzaUZTMEFBQ0lNSUFrdEFBQWlEMnNpRkNBVVFSOTFJaFJxSUJSeklBaFBEUUFnRFNnQ0ZDSWJJQWxCQW1zdEFBQWlGQ0FNYXlJVElCTkJIM1VpRTJvZ0UzTk5EUUFnR3lBSkxRQUJJaE1nRDJzaUVDQVFRUjkxSWhCcUlCQnpUUTBBSUFrQ2Z5QUtRUU5OQkVBZ0ZTQUtJQTBvQWd4cVFRRnJMUUFBSWdoQmYzTWlDU0FJUVFGcUlnb2dEeUFNYTBFQ2RDQVRheUFVYWtFRWFrRURkU0lJSUFnZ0Nrb2JJQWdnQ1VnYklnZ2dER3BCd0RWcUxRQUFPZ0FBSUE4Z0NHdEJ3RFZxTFFBQURBRUxJQlVnRENBVGFpQVVRUUYwYWtFQ2FrRUNkam9BQUNBUElCTkJBWFJxSUJScVFRSnFRUUoyQ3pvQUFDQU5LQUlRSVFnTElCRW9BaVFoQ2dKQUlCSWdObW9pQ1VFQmF5SVZMUUFBSWd3Z0NTMEFBQ0lQYXlJVUlCUkJIM1VpRkdvZ0ZITWdDRThOQUNBTktBSVVJaHNnQ1VFQ2F5MEFBQ0lVSUF4ckloTWdFMEVmZFNJVGFpQVRjMDBOQUNBYklBa3RBQUVpRXlBUGF5SVFJQkJCSDNVaUVHb2dFSE5ORFFBZ0NRSi9JQXBCQTAwRVFDQVZJQW9nRFNnQ0RHcEJBV3N0QUFBaUNFRi9jeUlWSUFoQkFXb2lHeUFQSUF4clFRSjBJQk5ySUJScVFRUnFRUU4xSWdnZ0NDQWJTaHNnQ0NBVlNCc2lDQ0FNYWtIQU5Xb3RBQUE2QUFBZ0R5QUlhMEhBTldvdEFBQU1BUXNnRlNBTUlCTnFJQlJCQVhScVFRSnFRUUoyT2dBQUlBOGdFMEVCZEdvZ0ZHcEJBbXBCQW5ZTE9nQUFJQTBvQWhBaENBc2dDQ0FKSUJwcUlnbEJBV3NpRXkwQUFDSU1JQWt0QUFBaUQyc2lGQ0FVUVI5MUloUnFJQlJ6VFEwQUlBMG9BaFFpRlNBSlFRSnJMUUFBSWdnZ0RHc2lGQ0FVUVI5MUloUnFJQlJ6VFEwQUlCVWdDUzBBQVNJVUlBOXJJaHNnRzBFZmRTSWJhaUFiYzAwTkFDQUpBbjhnQ2tFRFRRUkFJQk1nQ2lBTktBSU1ha0VCYXkwQUFDSUpRWDl6SWdvZ0NVRUJhaUlKSUE4Z0RHdEJBblFnRkdzZ0NHcEJCR3BCQTNVaUNDQUlJQWxLR3lBSUlBcElHeUlJSUF4cVFjQTFhaTBBQURvQUFDQVBJQWhyUWNBMWFpMEFBQXdCQ3lBVElBd2dGR29nQ0VFQmRHcEJBbXBCQW5ZNkFBQWdEeUFVUVFGMGFpQUlha0VDYWtFQ2RnczZBQUFMQWtBZ0VTZ0NGQ0lKUlEwQUlBZEJCR29oRXdKQUlBMG9BaHdpQ0NBSExRQURJZ29nQnkwQUJDSU1heUlQSUE5QkgzVWlEMm9nRDNOTkRRQWdEU2dDSUNJVklBY3RBQUlpRHlBS2F5SVVJQlJCSDNVaUZHb2dGSE5ORFFBZ0ZTQUhMUUFGSWhRZ0RHc2lHeUFiUVI5MUlodHFJQnR6VFEwQUlCTUNmeUFKUVFOTkJFQWdCeUFKSUEwb0FoaHFRUUZyTFFBQUlnaEJmM01pRlNBSVFRRnFJaHNnRENBS2EwRUNkQ0FVYXlBUGFrRUVha0VEZFNJSUlBZ2dHMG9iSUFnZ0ZVZ2JJZ2dnQ21wQndEVnFMUUFBT2dBRElBd2dDR3RCd0RWcUxRQUFEQUVMSUFjZ0NpQVVhaUFQUVFGMGFrRUNha0VDZGpvQUF5QU1JQlJCQVhScUlBOXFRUUpxUVFKMkN6b0FBQ0FOS0FJY0lRZ0xBa0FnRXlBYWFpSUtRUUZySWhVdEFBQWlEQ0FLTFFBQUlnOXJJaFFnRkVFZmRTSVVhaUFVY3lBSVR3MEFJQTBvQWlBaUd5QUtRUUpyTFFBQUloUWdER3NpRXlBVFFSOTFJaE5xSUJOelRRMEFJQnNnQ2kwQUFTSVRJQTlySWhBZ0VFRWZkU0lRYWlBUWMwME5BQ0FLQW44Z0NVRURUUVJBSUJVZ0NTQU5LQUlZYWtFQmF5MEFBQ0lJUVg5eklna2dDRUVCYWlJS0lBOGdER3RCQW5RZ0Uyc2dGR3BCQkdwQkEzVWlDQ0FJSUFwS0d5QUlJQWxJR3lJSUlBeHFRY0ExYWkwQUFEb0FBQ0FQSUFoclFjQTFhaTBBQUF3QkN5QVZJQXdnRTJvZ0ZFRUJkR3BCQW1wQkFuWTZBQUFnRHlBVFFRRjBhaUFVYWtFQ2FrRUNkZ3M2QUFBZ0RTZ0NIQ0VJQ3lBU1FRUnFJUk1nRVNnQ0ZDRUpBa0FnRWkwQUF5SUtJQkl0QUFRaURHc2lEeUFQUVI5MUlnOXFJQTl6SUFoUERRQWdEU2dDSUNJVklCSXRBQUlpRHlBS2F5SVVJQlJCSDNVaUZHb2dGSE5ORFFBZ0ZTQVNMUUFGSWhRZ0RHc2lHeUFiUVI5MUlodHFJQnR6VFEwQUlCTUNmeUFKUVFOTkJFQWdFaUFKSUEwb0FoaHFRUUZyTFFBQUlnaEJmM01pRlNBSVFRRnFJaHNnRENBS2EwRUNkQ0FVYXlBUGFrRUVha0VEZFNJSUlBZ2dHMG9iSUFnZ0ZVZ2JJZ2dnQ21wQndEVnFMUUFBT2dBRElBd2dDR3RCd0RWcUxRQUFEQUVMSUJJZ0NpQVVhaUFQUVFGMGFrRUNha0VDZGpvQUF5QU1JQlJCQVhScUlBOXFRUUpxUVFKMkN6b0FBQ0FOS0FJY0lRZ0xJQWdnRXlBYWFpSUtRUUZySWhNdEFBQWlEQ0FLTFFBQUlnOXJJaFFnRkVFZmRTSVVhaUFVYzAwTkFDQU5LQUlnSWhVZ0NrRUNheTBBQUNJSUlBeHJJaFFnRkVFZmRTSVVhaUFVYzAwTkFDQVZJQW90QUFFaUZDQVBheUliSUJ0QkgzVWlHMm9nRzNOTkRRQWdDZ0ovSUFsQkEwMEVRQ0FUSUFrZ0RTZ0NHR3BCQVdzdEFBQWlDVUYvY3lJS0lBbEJBV29pQ1NBUElBeHJRUUowSUJScklBaHFRUVJxUVFOMUlnZ2dDQ0FKU2hzZ0NDQUtTQnNpQ0NBTWFrSEFOV290QUFBNkFBQWdEeUFJYTBIQU5Xb3RBQUFNQVFzZ0V5QU1JQlJxSUFoQkFYUnFRUUpxUVFKMk9nQUFJQThnRkVFQmRHb2dDR3BCQW1wQkFuWUxPZ0FBQ3dKQUlCRW9BalFpQ2tVTkFDQUhJRFpxSWdsQkJHb2hGQUpBSUEwb0Fod2lDQ0FKTFFBRElnd2dDUzBBQkNJUGF5SVRJQk5CSDNVaUUyb2dFM05ORFFBZ0RTZ0NJQ0liSUJSQkFtc3RBQUFpRXlBTWF5SVZJQlZCSDNVaUZXb2dGWE5ORFFBZ0d5QUpMUUFGSWhVZ0Qyc2lFQ0FRUVI5MUloQnFJQkJ6VFEwQUlCUUNmeUFLUVFOTkJFQWdDU0FLSUEwb0FoaHFRUUZyTFFBQUlnaEJmM01pQ1NBSVFRRnFJaHNnRHlBTWEwRUNkQ0FWYXlBVGFrRUVha0VEZFNJSUlBZ2dHMG9iSUFnZ0NVZ2JJZ2dnREdwQndEVnFMUUFBT2dBRElBOGdDR3RCd0RWcUxRQUFEQUVMSUFrZ0RDQVZhaUFUUVFGMGFrRUNha0VDZGpvQUF5QVBJQlZCQVhScUlCTnFRUUpxUVFKMkN6b0FBQ0FOS0FJY0lRZ0xBa0FnRkNBYWFpSUpRUUZySWhVdEFBQWlEQ0FKTFFBQUlnOXJJaFFnRkVFZmRTSVVhaUFVY3lBSVR3MEFJQTBvQWlBaUd5QUpRUUpyTFFBQUloUWdER3NpRXlBVFFSOTFJaE5xSUJOelRRMEFJQnNnQ1MwQUFTSVRJQTlySWhBZ0VFRWZkU0lRYWlBUWMwME5BQ0FKQW44Z0NrRURUUVJBSUJVZ0NpQU5LQUlZYWtFQmF5MEFBQ0lJUVg5eklna2dDRUVCYWlJS0lBOGdER3RCQW5RZ0Uyc2dGR3BCQkdwQkEzVWlDQ0FJSUFwS0d5QUlJQWxJR3lJSUlBeHFRY0ExYWkwQUFEb0FBQ0FQSUFoclFjQTFhaTBBQUF3QkN5QVZJQXdnRTJvZ0ZFRUJkR3BCQW1wQkFuWTZBQUFnRHlBVFFRRjBhaUFVYWtFQ2FrRUNkZ3M2QUFBZ0RTZ0NIQ0VJQ3lBU0lEWnFJZ2xCQkdvaEZDQVJLQUkwSVFvQ1FDQUpMUUFESWd3Z0NTMEFCQ0lQYXlJVElCTkJIM1VpRTJvZ0UzTWdDRThOQUNBTktBSWdJaHNnRkVFQ2F5MEFBQ0lUSUF4ckloVWdGVUVmZFNJVmFpQVZjMDBOQUNBYklBa3RBQVVpRlNBUGF5SVFJQkJCSDNVaUVHb2dFSE5ORFFBZ0ZBSi9JQXBCQTAwRVFDQUpJQW9nRFNnQ0dHcEJBV3N0QUFBaUNFRi9jeUlKSUFoQkFXb2lHeUFQSUF4clFRSjBJQlZySUJOcVFRUnFRUU4xSWdnZ0NDQWJTaHNnQ0NBSlNCc2lDQ0FNYWtIQU5Xb3RBQUE2QUFNZ0R5QUlhMEhBTldvdEFBQU1BUXNnQ1NBTUlCVnFJQk5CQVhScVFRSnFRUUoyT2dBRElBOGdGVUVCZEdvZ0UycEJBbXBCQW5ZTE9nQUFJQTBvQWh3aENBc2dDQ0FVSUJwcUlnbEJBV3NpRXkwQUFDSU1JQWt0QUFBaUQyc2lGQ0FVUVI5MUloUnFJQlJ6VFEwQUlBMG9BaUFpRlNBSlFRSnJMUUFBSWdnZ0RHc2lGQ0FVUVI5MUloUnFJQlJ6VFEwQUlCVWdDUzBBQVNJVUlBOXJJaHNnRzBFZmRTSWJhaUFiYzAwTkFDQUpBbjhnQ2tFRFRRUkFJQk1nQ2lBTktBSVlha0VCYXkwQUFDSUpRWDl6SWdvZ0NVRUJhaUlKSUE4Z0RHdEJBblFnRkdzZ0NHcEJCR3BCQTNVaUNDQUlJQWxLR3lBSUlBcElHeUlJSUF4cVFjQTFhaTBBQURvQUFDQVBJQWhyUWNBMWFpMEFBQXdCQ3lBVElBd2dGR29nQ0VFQmRHcEJBbXBCQW5ZNkFBQWdEeUFVUVFGMGFpQUlha0VDYWtFQ2RnczZBQUFMQWtBQ1FDQVJLQUlBSWdnZ0VTZ0NDQ0lNUncwQUlBZ2dFU2dDRUVjTkFDQUlJQkVvQWhoSERRQWdDRVVOQVNBSElBZ2dEU0FHUVF4c2FpSUdJQm9RSHlBU0lCRW9BZ0FnQmlBYUVCOE1BUXNnQ0FSQUlBMGdCa0VNYkdvaUNTRUtJQWdnQ1NnQ0FHcEJBV3N0QUFBaUNFRi9jeUVNSUFoQkFXb2hEd0pBSUFrb0FnUWlDQ0FISUJkcUloVXRBQUFpRkNBSExRQUFJaE5ySWhzZ0cwRWZkU0liYWlBYmMwME5BQ0FLS0FJSUloc2dCeUFxYWkwQUFDSVFJQlJySWhZZ0ZrRWZkU0lXYWlBV2MwME5BQ0FiSUFjZ0dtb3RBQUFpRmlBVGF5SVpJQmxCSDNVaUdXb2dHWE5ORFFBZ0ZTQU1JQThnRXlBVWEwRUNkQ0FXYXlBUWFrRUVha0VEZFNJSUlBZ2dEMG9iSUFnZ0RFZ2JJZ2dnRkdwQndEVnFMUUFBT2dBQUlBY2dFeUFJYTBIQU5Xb3RBQUE2QUFBZ0NTZ0NCQ0VJQ3dKQUlBZEJBV29pRkNBWGFpSWJMUUFBSWhNZ0J5MEFBU0lWYXlJUUlCQkJIM1VpRUdvZ0VITWdDRThOQUNBS0tBSUlJaEFnRkNBcWFpMEFBQ0lXSUJOckloa2dHVUVmZFNJWmFpQVpjMDBOQUNBUUlCUWdHbW90QUFBaUdTQVZheUllSUI1QkgzVWlIbW9nSG5OTkRRQWdHeUFNSUE4Z0ZTQVRhMEVDZENBWmF5QVdha0VFYWtFRGRTSUlJQWdnRDBvYklBZ2dERWdiSWdnZ0UycEJ3RFZxTFFBQU9nQUFJQlFnRlNBSWEwSEFOV290QUFBNkFBQWdDU2dDQkNFSUN5QVJLQUlBSUFrb0FnQnFRUUZyTFFBQUlnOUJmM01oRENBUFFRRnFJUThDUUNBU0lCZHFJaFV0QUFBaUZDQVNMUUFBSWhOckloc2dHMEVmZFNJYmFpQWJjeUFJVHcwQUlBb29BZ2dpR3lBU0lDcHFMUUFBSWhBZ0ZHc2lGaUFXUVI5MUloWnFJQlp6VFEwQUlCc2dFaUFhYWkwQUFDSVdJQk5ySWhrZ0dVRWZkU0laYWlBWmMwME5BQ0FWSUF3Z0R5QVRJQlJyUVFKMElCWnJJQkJxUVFScVFRTjFJZ2dnQ0NBUFNoc2dDQ0FNU0JzaUNDQVVha0hBTldvdEFBQTZBQUFnRWlBVElBaHJRY0ExYWkwQUFEb0FBQ0FKS0FJRUlRZ0xBa0FnQ0NBU1FRRnFJZ2tnRjJvaUZTMEFBQ0lVSUJJdEFBRWlFMnNpR3lBYlFSOTFJaHRxSUJ0elRRMEFJQW9vQWdnaUNDQUpJQ3BxTFFBQUlnb2dGR3NpR3lBYlFSOTFJaHRxSUJ0elRRMEFJQWdnQ1NBYWFpMEFBQ0liSUJOckloQWdFRUVmZFNJUWFpQVFjMDBOQUNBVklCUWdEQ0FQSUJNZ0ZHdEJBblFnRzJzZ0NtcEJCR3BCQTNVaUNDQUlJQTlLR3lBSUlBeElHeUlJYWtIQU5Xb3RBQUE2QUFBZ0NTQVRJQWhyUWNBMWFpMEFBRG9BQUFzZ0VTZ0NDQ0VNQ3dKQUlBeEZEUUFnRFNBR1FReHNhaUlJSVFrZ0RDQUlLQUlBYWtFQmF5MEFBQ0lNUVg5eklRb2dERUVCYWlFUEFrQWdDQ2dDQkNJTUlBZEJBbW9pRkNBWGFpSWJMUUFBSWhNZ0J5MEFBaUlWYXlJUUlCQkJIM1VpRUdvZ0VITk5EUUFnQ1NnQ0NDSVFJQlFnS21vdEFBQWlGaUFUYXlJWklCbEJIM1VpR1dvZ0dYTk5EUUFnRUNBVUlCcHFMUUFBSWhrZ0ZXc2lIaUFlUVI5MUloNXFJQjV6VFEwQUlCc2dDaUFQSUJVZ0UydEJBblFnR1dzZ0ZtcEJCR3BCQTNVaURDQU1JQTlLR3lBS0lBeEtHeUlNSUJOcVFjQTFhaTBBQURvQUFDQVVJQlVnREd0QndEVnFMUUFBT2dBQUlBZ29BZ1FoREFzQ1FDQUhRUU5xSWhRZ0Yyb2lHeTBBQUNJVElBY3RBQU1pRldzaUVDQVFRUjkxSWhCcUlCQnpJQXhQRFFBZ0NTZ0NDQ0lRSUJRZ0ttb3RBQUFpRmlBVGF5SVpJQmxCSDNVaUdXb2dHWE5ORFFBZ0VDQVVJQnBxTFFBQUloa2dGV3NpSGlBZVFSOTFJaDVxSUI1elRRMEFJQnNnQ2lBUElCVWdFMnRCQW5RZ0dXc2dGbXBCQkdwQkEzVWlEQ0FNSUE5S0d5QUtJQXhLR3lJS0lCTnFRY0ExYWkwQUFEb0FBQ0FVSUJVZ0NtdEJ3RFZxTFFBQU9nQUFJQWdvQWdRaERBc2dFU2dDQ0NBSUtBSUFha0VCYXkwQUFDSVBRWDl6SVFvZ0QwRUJhaUVQQWtBZ0VrRUNhaUlVSUJkcUloc3RBQUFpRXlBU0xRQUNJaFZySWhBZ0VFRWZkU0lRYWlBUWN5QU1UdzBBSUFrb0FnZ2lFQ0FVSUNwcUxRQUFJaFlnRTJzaUdTQVpRUjkxSWhscUlCbHpUUTBBSUJBZ0ZDQWFhaTBBQUNJWklCVnJJaDRnSGtFZmRTSWVhaUFlYzAwTkFDQWJJQW9nRHlBVklCTnJRUUowSUJscklCWnFRUVJxUVFOMUlnd2dEQ0FQU2hzZ0NpQU1TaHNpRENBVGFrSEFOV290QUFBNkFBQWdGQ0FWSUF4clFjQTFhaTBBQURvQUFDQUlLQUlFSVF3TElBd2dFa0VEYWlJSUlCZHFJaFV0QUFBaUZDQVNMUUFESWhOckloc2dHMEVmZFNJYmFpQWJjMDBOQUNBSktBSUlJZ2tnQ0NBcWFpMEFBQ0lNSUJSckloc2dHMEVmZFNJYmFpQWJjMDBOQUNBSklBZ2dHbW90QUFBaUd5QVRheUlRSUJCQkgzVWlFR29nRUhOTkRRQWdGU0FLSUE4Z0V5QVVhMEVDZENBYmF5QU1ha0VFYWtFRGRTSUpJQWtnRDBvYklBa2dDa2diSWdrZ0ZHcEJ3RFZxTFFBQU9nQUFJQWdnRXlBSmEwSEFOV290QUFBNkFBQUxBa0FnRVNnQ0VDSUtSUTBBSUEwZ0JrRU1iR29pQ0NFSklBb2dDQ2dDQUdwQkFXc3RBQUFpREVGL2N5RUtJQXhCQVdvaER3SkFJQWdvQWdRaURDQUhRUVJxSWhRZ0Yyb2lHeTBBQUNJVElBY3RBQVFpRldzaUVDQVFRUjkxSWhCcUlCQnpUUTBBSUFrb0FnZ2lFQ0FVSUNwcUxRQUFJaFlnRTJzaUdTQVpRUjkxSWhscUlCbHpUUTBBSUJBZ0ZDQWFhaTBBQUNJWklCVnJJaDRnSGtFZmRTSWVhaUFlYzAwTkFDQWJJQW9nRHlBVklCTnJRUUowSUJscklCWnFRUVJxUVFOMUlnd2dEQ0FQU2hzZ0NpQU1TaHNpRENBVGFrSEFOV290QUFBNkFBQWdGQ0FWSUF4clFjQTFhaTBBQURvQUFDQUlLQUlFSVF3TEFrQWdCMEVGYWlJVUlCZHFJaHN0QUFBaUV5QUhMUUFGSWhWckloQWdFRUVmZFNJUWFpQVFjeUFNVHcwQUlBa29BZ2dpRUNBVUlDcHFMUUFBSWhZZ0Uyc2lHU0FaUVI5MUlobHFJQmx6VFEwQUlCQWdGQ0FhYWkwQUFDSVpJQlZySWg0Z0hrRWZkU0llYWlBZWMwME5BQ0FiSUFvZ0R5QVZJQk5yUVFKMElCbHJJQlpxUVFScVFRTjFJZ3dnRENBUFNoc2dDaUFNU2hzaUNpQVRha0hBTldvdEFBQTZBQUFnRkNBVklBcHJRY0ExYWkwQUFEb0FBQ0FJS0FJRUlRd0xJQkVvQWhBZ0NDZ0NBR3BCQVdzdEFBQWlEMEYvY3lFS0lBOUJBV29oRHdKQUlCSkJCR29pRkNBWGFpSWJMUUFBSWhNZ0VpMEFCQ0lWYXlJUUlCQkJIM1VpRUdvZ0VITWdERThOQUNBSktBSUlJaEFnRkNBcWFpMEFBQ0lXSUJOckloa2dHVUVmZFNJWmFpQVpjMDBOQUNBUUlCUWdHbW90QUFBaUdTQVZheUllSUI1QkgzVWlIbW9nSG5OTkRRQWdHeUFLSUE4Z0ZTQVRhMEVDZENBWmF5QVdha0VFYWtFRGRTSU1JQXdnRDBvYklBb2dERW9iSWd3Z0UycEJ3RFZxTFFBQU9nQUFJQlFnRlNBTWEwSEFOV290QUFBNkFBQWdDQ2dDQkNFTUN5QU1JQkpCQldvaUNDQVhhaUlWTFFBQUloUWdFaTBBQlNJVGF5SWJJQnRCSDNVaUcyb2dHM05ORFFBZ0NTZ0NDQ0lKSUFnZ0ttb3RBQUFpRENBVWF5SWJJQnRCSDNVaUcyb2dHM05ORFFBZ0NTQUlJQnBxTFFBQUloc2dFMnNpRUNBUVFSOTFJaEJxSUJCelRRMEFJQlVnQ2lBUElCTWdGR3RCQW5RZ0cyc2dER3BCQkdwQkEzVWlDU0FKSUE5S0d5QUpJQXBJR3lJSklCUnFRY0ExYWkwQUFEb0FBQ0FJSUJNZ0NXdEJ3RFZxTFFBQU9nQUFDeUFSS0FJWUlncEZEUUFnRFNBR1FReHNhaUlJSVFrZ0NpQUlLQUlBYWtFQmF5MEFBQ0lHUVg5eklRb2dCa0VCYWlFTUFrQWdDQ2dDQkNJR0lBZEJCbW9pRHlBWGFpSVZMUUFBSWhRZ0J5MEFCaUlUYXlJYklCdEJIM1VpRzJvZ0czTk5EUUFnQ1NnQ0NDSWJJQThnS21vdEFBQWlFQ0FVYXlJV0lCWkJIM1VpRm1vZ0ZuTk5EUUFnR3lBUElCcHFMUUFBSWhZZ0Uyc2lHU0FaUVI5MUlobHFJQmx6VFEwQUlCVWdDaUFNSUJNZ0ZHdEJBblFnRm1zZ0VHcEJCR3BCQTNVaUJpQUdJQXhLR3lBR0lBcElHeUlHSUJScVFjQTFhaTBBQURvQUFDQVBJQk1nQm10QndEVnFMUUFBT2dBQUlBZ29BZ1FoQmdzQ1FDQUhRUWRxSWc4Z0Yyb2lGUzBBQUNJVUlBY3RBQWNpRTJzaUd5QWJRUjkxSWh0cUlCdHpJQVpQRFFBZ0NTZ0NDQ0liSUE4Z0ttb3RBQUFpRUNBVWF5SVdJQlpCSDNVaUZtb2dGbk5ORFFBZ0d5QVBJQnBxTFFBQUloWWdFMnNpR1NBWlFSOTFJaGxxSUJselRRMEFJQlVnQ2lBTUlCTWdGR3RCQW5RZ0Ztc2dFR3BCQkdwQkEzVWlCaUFHSUF4S0d5QUdJQXBJR3lJR0lCUnFRY0ExYWkwQUFEb0FBQ0FQSUJNZ0JtdEJ3RFZxTFFBQU9nQUFJQWdvQWdRaEJnc2dFU2dDR0NBSUtBSUFha0VCYXkwQUFDSU1RWDl6SVFvZ0RFRUJhaUVNQWtBZ0VrRUdhaUlQSUJkcUloVXRBQUFpRkNBU0xRQUdJaE5ySWhzZ0cwRWZkU0liYWlBYmN5QUdUdzBBSUFrb0FnZ2lHeUFQSUNwcUxRQUFJaEFnRkdzaUZpQVdRUjkxSWhacUlCWnpUUTBBSUJzZ0R5QWFhaTBBQUNJV0lCTnJJaGtnR1VFZmRTSVphaUFaYzAwTkFDQVZJQW9nRENBVElCUnJRUUowSUJacklCQnFRUVJxUVFOMUlnWWdCaUFNU2hzZ0JpQUtTQnNpQmlBVWFrSEFOV290QUFBNkFBQWdEeUFUSUFaclFjQTFhaTBBQURvQUFDQUlLQUlFSVFZTElBWWdFa0VIYWlJSUlCZHFJaE10QUFBaUR5QVNMUUFISWhSckloVWdGVUVmZFNJVmFpQVZjMDBOQUNBSktBSUlJZ1lnQ0NBcWFpMEFBQ0lKSUE5ckloVWdGVUVmZFNJVmFpQVZjMDBOQUNBR0lBZ2dHbW90QUFBaUZTQVVheUliSUJ0QkgzVWlHMm9nRzNOTkRRQWdFeUFQSUFvZ0RDQVVJQTlyUVFKMElCVnJJQWxxUVFScVFRTjFJZ1lnQmlBTVNoc2dCaUFLU0JzaUJtcEJ3RFZxTFFBQU9nQUFJQWdnRkNBR2EwSEFOV290QUFBNkFBQUxJQklnSUdvaEVpQUhJQ0JxSVFjZ0VVRkFheUVSSUJ4QkFYRWhDRUVBSVJ4QkFpRUdJQWdOQUFzZ0t5Z0NDQ0VSQzBFQUlDSkJBV29pQmlBR0lCOUdJZ1liSVNJZ0RrSFlBV29oRGlBR0lEbHFJamtnRVVrTkFBc0xJQTFCc0FGcUpBQWdBRUlBTndLb0NRSkFJQUFvQXBnSklnbEZEUUFnQ1VFRGNTRUhJQUFvQXJ3SklRaEJBQ0VHSUFsQkFXdEJBMDhFUUNBSlFYeHhJUTBEUUNBSUlBWkIyQUZzYWlJSlFRQTJBc1FCSUFsQkFEWUNCQ0FJSUFaQkFYSkIyQUZzYWlJSlFRQTJBc1FCSUFsQkFEWUNCQ0FJSUFaQkFuSkIyQUZzYWlJSlFRQTJBc1FCSUFsQkFEWUNCQ0FJSUFaQkEzSkIyQUZzYWlJSlFRQTJBc1FCSUFsQkFEWUNCQ0FHUVFScUlRWWdEVUVFYXlJTkRRQUxDeUFIUlEwQUEwQWdDQ0FHUWRnQmJHb2lDVUVBTmdMRUFTQUpRUUEyQWdRZ0JrRUJhaUVHSUFkQkFXc2lCdzBBQ3dzZ0FDZ0NFQ0VJUVFBaEJrRUJJUkVDUUNBQUtBTDBERVVOQUFOQUFrQUNRQ0FBSUFaQkZHeHFRZmdNYWlnQ0FBNEdBd0FBQUFBQkFBc2dCa0VCYWlFR0RBRUxDMEVBSVJFTEFrQUNmd0pBQWtBQ1FBSkFBa0FnQ0NnQ0VBNENBQUVDQ3lBQUtBTFFDaUlQUVFWR0JFQWdBRUlBTndLRUNpQUFLQUxzQ2lFR1FRQWhDZ3dFQ3lBQUtBS0VDaUlLSUFBb0F1d0tJZ1pORFFNZ0NpQUdheUFJS0FJVUlnZEJBWFpKRFFNZ0FDZ0NpQW9nQjJvTUJBdEJBQ0VHQW45QkFDQUFLQUxRQ2lJUFFRVkdEUUFhSUFBb0FwQUtJZ2NnQUNnQ2pBb2dBQ2dDNUFwTkRRQWFJQWdvQWd3Z0Iyb0xJUm9DZnlBSUtBSWtJZzRFUUNBQUtBTGtDaUFhYWlFR0N5QUdJQUFvQXRRS0loTkZJQVpCQUVkeGF5SVVDd1JBSUJSQkFXc2lCaUFHSUE1dUlpY2dEbXhySVJnTFFRQWhCMEVBSVFvQ1FDQU9SUTBBSUE1QkEzRWhFaUFJS0FJb0lRWkJBQ0VKSUE1QkFXdEJBMDhFUUVFQUlRd2dEa0Y4Y1NJSklRNERRQ0FHSUF4QkFuUWlEVUVNY21vb0FnQWdCaUFOUVFoeWFpZ0NBQ0FHSUExQkJISnFLQUlBSUFZZ0RXb29BZ0FnQ21wcWFtb2hDaUFNUVFScUlRd2dEa0VFYXlJT0RRQUxDeUFTUlEwQUEwQWdCaUFKUVFKMGFpZ0NBQ0FLYWlFS0lBbEJBV29oQ1NBU1FRRnJJaElOQUFzTElCUUVRQ0FLSUNkc0lRY2dDQ2dDS0NFSlFRQWhCZ05BSUFrZ0JrRUNkR29vQWdBZ0Iyb2hCeUFHUVFGcUlnWWdHRTBOQUFzTElCTkZCRUFnQ0NnQ0hDQUhhaUVIQ3lBUlJRMEJJQWdvQWlBaEJpQUFLQUw0Q2lFSUlBQWdHallDa0FvZ0FDQUFLQUxrQ2pZQ2pBb2dBQ2dDOUFvZ0JpQUlhaUlHUVI5MUlBWnhJQWRxYWlFR0RBUUxRUUFoQ2tFQUlRWWdBQ2dDMEFvaUQwRUZSd1JBSUFBb0FwQUtJUW9nQUNnQzVBb2lCaUFBS0FLTUNra0VRQ0FJS0FJTUlBcHFJUW9MSUFZZ0NtcEJBWFFnQUNnQzFBcEZheUVHQ3lBUlJRMEFJQUFnQ2pZQ2tBb2dBQ0FBS0FMa0NqWUNqQW9NQXdzZ0FFSUFOd0tNQ2tFQUlRWU1BZ3NDUUNBR0lBcE5EUUFnQmlBS2F5QUlLQUlVSWdkQkFYWk5EUUFnQUNnQ2lBb2dCMnNNQVFzZ0FDZ0NpQW9MSVFnZ0FDZ0MxQXBGQkVBZ0JpQUlhaUFBS0FMd0NpSUdRUjkxSUFaeGFpRUdEQUVMSUFBZ0NEWUNpQW9nQUNnQzhBb2hCeUFSUlFSQVFRQWhCaUFBUVFBMkFvZ0tJQUJCQUNBSGF5QUhRUjkxY1RZQ2hBb01BUXNnQUNBR05nS0VDaUFHSUFocUlBZEJIM1VnQjNGcUlRWUxBa0FnQUNnQ3BBbEZEUUFnRDBFRlJpRUhJQUFvQXJnS0lRZ2dBQ2dDdEFraENTQUFLQUs0Q1NFS0lBQW9BdVFLSVF3Z0FDZ0MxQW9FUUNBNElGUWdDQ0FNSUFZZ0J5QUtJQWtRSEF3QkN5QTRRUUFnQ0NBTUlBWWdCeUFLSUFrUUhBc2dBRUlBTndLZ0NVRUJJUXBCQVNFTURBRUxRUUFoQ2tFRElRd0xJQXhCQlhGRkRRQUxJQW9FUUNBRUlBQW9BaEFpQVNnQ05FRUVkRFlDQUNBRklBRW9BamhCQkhRMkFnQWdBQ0FBS0FMWUNTSUJRUUZxTmdMWUNTQURJQUFvQXRBSklBRkJCSFJxS0FJQU5nSUFDeUFMUWZBQmFpUUFJQXdMVEFFQ2YwRUJJUUlnQUVFQVFjUWFFQU1pQUVHMENtcEJBVFlDQUNBQVFvQ0NnSUNBQkRjQ0JDQUFRY0FRRUFnaUF6WUNzQm9nQXdSL0lBRUVRQ0FBUVFFMkFzQUpDMEVBQlVFQkN3c0x4aklhQUVHR0NBdktCV1lnSmhBR0NHVVlaUmhERUVNUVF4QkRFRU1RUXhCREVFTVFJZ2dpQ0NJSUlnZ2lDQ0lJSWdnaUNDSUlJZ2dpQ0NJSUlnZ2lDQ0lJSWdnQUFBQUFBQUFBQUdwQVNqQXFLQW9nYVRocE9Fa29TU2dwSUNrZ0NSZ0pHR2d3YURCb01HZ3dTQ0JJSUVnZ1NDQW9HQ2dZS0Jnb0dBZ1FDQkFJRUFnUVp5aG5LR2NvWnlobktHY29aeWhuS0VjWVJ4aEhHRWNZUnhoSEdFY1lSeGh1WUU1WUxsQU9VRzVZVGxBdVNBNUlEVUFOUUUxSVRVZ3RRQzFBRFRnTk9HMVFiVkJOUUUxQUxUZ3RPQTB3RFRCclNHdElhMGhyU0d0SWEwaHJTR3RJU3poTE9FczRTemhMT0VzNFN6aExPQ3N3S3pBck1Dc3dLekFyTUNzd0t6QUxLQXNvQ3lnTEtBc29DeWdMS0Fzb0FBQUFBQzlvTDJnUWdGQ0FNSUFRZUhDQVVIZ3dlQkJ3Y0hoUWNEQndFR2h2Y0c5d1QyaFBhQzlnTDJBUFlBOWdiMmh2YUU5Z1QyQXZXQzlZRDFnUFdBQUFBQUFBQUFBQVpqaEdJQ1lnQmhCbU1FWVlKaGdHQ0dVb1pTZ2xFQ1VRWkNCa0lHUWdaQ0JrR0dRWVpCaGtHRU1RUXhCREVFTVFReEJERUVNUVF4QUFBQUFBQUFBQUFHbElTVGdwT0Frd0NDZ0lLRWd3U0RBb01DZ3dDQ0FJSUdkQVowQm5RR2RBUnloSEtFY29SeWduS0Njb0p5Z25LQWNZQnhnSEdBY1lBQUFBQUcxNGJYaHVnRTZBTG9BT2dDNTREbmhPZUM1d1RYQk5jQTF3RFhCdGNHMXdUV2hOYUMxb0xXZ05hQTFvYldodGFFMWdUV0F0WUMxZ0RXQU5ZQXhZREZnTVdBeFlURmhNV0V4WVRGZ3NXQ3hZTEZnc1dBeFFERkFNVUF4UWJHQnNZR3hnYkdCTVVFeFFURkJNVUN4UUxGQXNVQ3hRREVnTVNBeElERWhyV0d0WWExaHJXR3RZYTFocldHdFlTMGhMU0V0SVMwaExTRXRJUzBoTFNDdElLMGdyU0N0SUswZ3JTQ3RJSzBnTFFBdEFDMEFMUUF0QUMwQUxRQXRBYTFCclVHdFFhMUJyVUd0UWExQnJVRXRBUzBCTFFFdEFTMEJMUUV0QVMwQXJRQ3RBSzBBclFDdEFLMEFyUUN0QUN6Z0xPQXM0Q3pnTE9BczRDemdMT0FCQjRBMExyZ2tHR0VZNEpqZ0dFR1pJUmpBbU1BWUlKU2dsS0VVb1JTZ2xJQ1VnUlNCRklDVVlKUmhsUUdWQVJSaEZHQ1VRSlJCa09HUTRaRGhrT0dRd1pEQmtNR1F3WkNoa0tHUW9aQ2hrSUdRZ1pDQmtJR1FZWkJoa0dHUVlSQkJFRUVRUVJCQWtDQ1FJSkFna0NBUUFCQUFFQUFRQUFBQUtnR3FBU29BcWdBcDRhbmhLZUNwNENuQnFjRXB3S25BS2FDbG9LV2dKWUFsZ1NXaEphQ2xnS1dBSldBbFlhV2hwYUVsZ1NXQXBXQ2xZQ1ZBSlVHaGdhR0JvWUdoZ1NGaElXRWhZU0Znb1VDaFFLRkFvVUFoSUNFZ0lTQWhJYUZob1dHaFlhRmhJVUVoUVNGQklVQ2hJS0Vnb1NDaElDRUFJUUFoQUNFQUhPQWM0QnpnSE9BYzRCemdIT0FjNEJ6QUhNQWN3QnpBSE1BY3dCekFITUVkSVIwaEhTRWRJUjBoSFNFZElSMGdIS0Fjb0J5Z0hLQWNvQnlnSEtBY29aMUJuVUdkUVoxQm5VR2RRWjFCblVFZEFSMEJIUUVkQVIwQkhRRWRBUjBBblFDZEFKMEFuUUNkQUowQW5RQ2RBQnlBSElBY2dCeUFISUFjZ0J5QUhJQVlJSmdnQUFBWUFCaEFtRUVZUUFBQUdHQ1lZUmhobUdBWWdKaUJHSUdZZ0JpZ21LRVlvWmlnR01DWXdSakJtTUFZNEpqaEdPR1k0QmtBbVFFWkFaa0FHU0NaSVJraG1TQVpRSmxCR1VHWlFCbGdtV0VaWVpsZ0dZQ1pnUm1CbVlBWm9KbWhHYUdab0JuQW1jRVp3Wm5BR2VDWjRSbmhtZUFhQUpvQkdnR2FBQUFCREVBSUFBZ0FoQ0NFSUlRZ2hDR2NnWnlCSUlDZ2dSeGhIR0NjWUp4Z0dJQVlnQmlBR0lBWVlCaGdHR0FZWUJoQUdFQVlRQmhCbUdHWVlaaGhtR0NZUUpoQW1FQ1lRQmdnR0NBWUlCZ2dBQUdWVlJFUTBOQ01qSXlNVEV4TVRBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRDU2ZG5JeUxpNHA2ZW5wNWVYbDVlR2hvYUdob2FHaG5aMmRuWjJkbloyNXRiR3RxV2xsWldFaElTRWRIUjBkR1JrWkdSVVZGUlVRME5EUTBORFEwTXpNek16TXpNek15TWpJeU1qSXlNakV4TVRFeE1URXhNREF3TURBd01EQTlhMnhjV2xwWldWaElTRWhGUlVWRlJFUkVSRUJBUUVCSE56YzNOemMzTnpZMk5qWTJOalkyTXpNek16TXpNek15TWpJeU1qSXlNakV4TVRFeE1URXhQRnRhVUZsSlIwZERRMEpDU0RnNE9EWTJOalkxTlRVMU5EUTBOREV4TVRFN1dWcEtTRWhDUWtGQlFFQkhOemMzTmpZMk5qVTFOVFUwTkRRME16TXpNenBnWVZGWVNFaElTVGs1T1RrNU9UazNOemMzTnpjM056WTJOalkyTmpZMk5UVTFOVFUxTlRVME5EUTBORFEwTkRNek16TXpNek16TWpJeU1qSXlNakk1WUdGUlYwZEhSMGc0T0RnNE9EZzROalkyTmpZMk5qWTBORFEwTkRRME5ETXpNek16TXpNek1qSXlNakl5TWpJMUpTVWxKU1VsSlNVbEpTVWxKU1VsS0dCaVVsRkJRVUZITnpjM056YzNOelkyTmpZMk5qWTJNek16TXpNek16TTFKU1VsSlNVbEpTVWxKU1VsSlNVbEpDUWtKQ1FrSkNRa0pDUWtKQ1FrSkNGZ1oxZFNRa0pDUlRVMU5UVTFOVFUySmlZbUppWW1KaVltSmlZbUppWW1KQ1FrSkNRa0pDUWtKQ1FrSkNRa0pDTWpJeU1qSXlNakl5TWpJeU1qSXlNaFVGWkdRakl5TWpVbEpTVWxKU1VsSkNRa0pDUWtKQ1FqSXlNakl5TWpJeUJCUWpJek16VTFOQlFVRkJRVUZCUVFRVVEwTWlJaUlpTVRFeE1URXhNVEVERXpJeUlTRWhJUUlTSVNFUkFTSVNBUUV5SWhJQ1F6TWlJaElTQWdKVFF6TWpFaElDQWhNalF6TmpVd0lDQUVHZ0Z3c2tCQVFGQmdjSUNRb01EUThSRkJZWkhDQWtLQzB5T0Q5SFVGcGxjWCtRb3JiTDR2Ly9BRUhnRndza0FnSUNBd01EQXdRRUJBWUdCd2NJQ0FrSkNnb0xDd3dNRFEwT0RnOFBFQkFSRVJJU0FFSEZHQXVFQVFFQUFBRUFBQUVBQUFFQUFRRUFBUUVCQVFFQkFRRUJBUUVCQVFFQkFRSUJBUUlCQVFJQkFRSUJBZ01CQWdNQ0FnTUNBZ1FDQXdRQ0F3UURBd1VEQkFZREJBWUVCUWNFQlFnRUJna0ZCd29HQ0FzR0NBMEhDZzRJQ3hBSkRCSUtEUlFMRHhjTkVSa0FBQUFBQUFBQUFBVUFBQUQvQUFBQUFBQUFBUDhBQUFBQUFBQUEvd0JCMUJrTEZRVUFBQUFBQUFBQUJ3QUFBUDhBQUFBQUFBQUEvd0JCOUJrTEZRVUFBQUFFQUFBQUFBQUFBUDhBQUFBQUFBQUEvd0JCbEJvTEJRVUFBQUFFQUVHa0dndWxBUWNBQUFBRUFBQUFBZ0FBQUFRQUFBQUJBQUFBL3dBQUFBQUFBQUQvQUFBQUFBQUFBUDhBQUFBQUFBQUFCQUFBQUFFQUFBQUVBQUFBQXdBQUFQOEFBQUFBQUFBQS93QUFBQUFBQUFBRUFBQUFBUUFBQUFRQUFBQUVBQUFBL3dBQUFBQUFBQUQvQUFBQUFBQUFBQVFBQUFBQkFBQUFCQUFBQUFRQUFBQUVBQUFBQXdBQUFBUUFBQUFHQUFBQUFBQUFBQTBBQUFEL0FBQUFBQUFBQVA4QUFBQUFBQUFBL3dCQjFCc0xGUTBBQUFBQUFBQUFEd0FBQVA4QUFBQUFBQUFBL3dCQjlCc0xGUTBBQUFBRUFBQUFDQUFBQVA4QUFBQUFBQUFBL3dCQmxCd0x0UXNOQUFBQUJBQUFBQWdBQUFBQUFBQUFEd0FBQUFRQUFBQUtBQUFBQkFBQUFBa0FBQUQvQUFBQUFBQUFBUDhBQUFBQUFBQUEvd0FBQUFBQUFBQUVBQUFBQ1FBQUFBUUFBQUFMQUFBQS93QUFBQUFBQUFEL0FBQUFBQUFBQUFRQUFBQUpBQUFBQkFBQUFBd0FBQUQvQUFBQUFBQUFBUDhBQUFBQUFBQUFCQUFBQUFrQUFBQUVBQUFBREFBQUFBUUFBQUFMQUFBQUJBQUFBQTRBQUFBQkFBQUFDZ0FBQVA4QUFBQUFBQUFBL3dBQUFBQUFBQUQvQUFBQUFBQUFBQUVBQUFBS0FBQUFCQUFBQUFBQUFBRC9BQUFBQUFBQUFQOEFBQUFBQUFBQUFRQUFBQW9BQUFBQkFBQUFDd0FBQVA4QUFBQUFBQUFBL3dBQUFBQUFBQUFCQUFBQUNnQUFBQUVBQUFBTEFBQUFCQUFBQUFBQUFBQUVBQUFBQVFBQUFBRUFBQUFPQUFBQS93QUFBQUFBQUFEL0FBQUFBQUFBQVA4QUFBQUFBQUFBQVFBQUFBNEFBQUFFQUFBQUJBQUFBUDhBQUFBQUFBQUEvd0FBQUFBQUFBQUJBQUFBRGdBQUFBRUFBQUFQQUFBQS93QUFBQUFBQUFEL0FBQUFBQUFBQUFFQUFBQU9BQUFBQVFBQUFBOEFBQUFFQUFBQUJBQUFBQVFBQUFBRkFBQUFCQUFBQUFJQUFBRC9BQUFBQUFBQUFQOEFBQUFBQUFBQS93QUFBQUFBQUFBRUFBQUFBZ0FBQUFRQUFBQUlBQUFBL3dBQUFBQUFBQUQvQUFBQUFBQUFBQVFBQUFBQ0FBQUFCQUFBQUFNQUFBRC9BQUFBQUFBQUFQOEFBQUFBQUFBQUJBQUFBQUlBQUFBRUFBQUFBd0FBQUFRQUFBQUlBQUFBQkFBQUFBa0FBQUFFQUFBQUJnQUFBUDhBQUFBQUFBQUEvd0FBQUFBQUFBRC9BQUFBQUFBQUFBUUFBQUFHQUFBQUJBQUFBQXdBQUFEL0FBQUFBQUFBQVA4QUFBQUFBQUFBQkFBQUFBWUFBQUFFQUFBQUJ3QUFBUDhBQUFBQUFBQUEvd0FBQUFBQUFBQUVBQUFBQmdBQUFBUUFBQUFIQUFBQUJBQUFBQXdBQUFBRUFBQUFEUUFBQUFFQUFBQU9BQUFBL3dBQUFBQUFBQUQvQUFBQUFBQUFBUDhBQUFBQUFBQUFBUUFBQUE0QUFBRC9BQUFBQkFBQUFQOEFBQUFBQUFBQS93QUFBQUFBQUFBQkFBQUFDd0FBQUFFQUFBQU9BQUFBL3dBQUFBQUFBQUQvQUFBQUFBQUFBQUVBQUFBTEFBQUFBUUFBQUE0QUFBQUVBQUFBQVFBQUFQOEFBQUFFQUFBQUFnQUFBQW9BQUFEL0FBQUFBQUFBQVA4QUFBQUFBQUFBL3dBQUFBQUFBQUFDQUFBQUNnQUFBUDhBQUFBQUFBQUEvd0FBQUFBQUFBRC9BQUFBQUFBQUFBRUFBQUFQQUFBQUFnQUFBQW9BQUFEL0FBQUFBQUFBQVA4QUFBQUFBQUFBQVFBQUFBOEFBQUFDQUFBQUNnQUFBQVFBQUFBRkFBQUEvd0FBQUFBQUFBQUVBQUFBQmdBQUFQOEFBQUFBQUFBQS93QUFBQUFBQUFEL0FBQUFBQUFBQUFRQUFBQUdBQUFBL3dBQUFBd0FBQUQvQUFBQUFBQUFBUDhBQUFBQUFBQUFCQUFBQUFNQUFBQUVBQUFBQmdBQUFQOEFBQUFBQUFBQS93QUFBQUFBQUFBRUFBQUFBd0FBQUFRQUFBQUdBQUFBQkFBQUFBa0FBQUQvQUFBQURBQUFBUDhBQUFBQ0FBQUEvd0FBQUFBQUFBRC9BQUFBQUFBQUFQOEFBQUFBQUFBQS93QUFBQUlBQUFEL0FBQUFDQUFBQVA4QUFBQUFBQUFBL3dBQUFBQUFBQUFFQUFBQUJ3QUFBUDhBQUFBQ0FBQUEvd0FBQUFBQUFBRC9BQUFBQUFBQUFBUUFBQUFIQUFBQS93QUFBQUlBQUFBRUFBQUFEUUFBQVA4QUFBQUlBQUFBQXdBQUFBOEFBQUQvQUFBQUFBQUFBUDhBQUFBQUFBQUEvd0FBQUFBQUFBQURBQUFBRHdBQUFBQUFBQUFGQUFBQS93QUFBQUFBQUFEL0FBQUFBQUFBQUFNQUFBQVBBQUFBQVFBQUFBb0FBQUQvQUFBQUFBQUFBUDhBQUFBQUFBQUFBd0FBQUE4QUFBQUJBQUFBQ2dBQUFBQUFBQUFGQUFBQUJBQUFBQUFBQUFBQkFBQUFDd0FBQVA4QUFBQUFBQUFBL3dBQUFBQUFBQUQvQUFBQUFBQUFBQUVBQUFBTEFBQUFCQUFBQUFFQUFBRC9BQUFBQUFBQUFQOEFBQUFBQUFBQUFRQUFBQXNBQUFBQkFBQUFEZ0FBQVA4QUFBQUFBQUFBL3dBQUFBQUFBQUFCQUFBQUN3QUFBQUVBQUFBT0FBQUFCQUFBQUFFQUFBQUVBQUFBQkFBQUFBQUFBQUFIQUFBQS93QUFBQUFBQUFEL0FBQUFBQUFBQVA4QVFkUW5DeFVIQUFBQUFBQUFBQTBBQUFEL0FBQUFBQUFBQVA4QVFmUW5DeFVIQUFBQUJBQUFBQUlBQUFEL0FBQUFBQUFBQVA4QVFaUW9DOWtCQndBQUFBUUFBQUFDQUFBQUFBQUFBQTBBQUFBRUFBQUFDQUFBQUFRQUFBQURBQUFBL3dBQUFBQUFBQUQvQUFBQUFBQUFBUDhBQUFBQUFBQUFCQUFBQUFNQUFBQUVBQUFBQ1FBQUFQOEFBQUFBQUFBQS93QUFBQUFBQUFBRUFBQUFBd0FBQUFRQUFBQUdBQUFBL3dBQUFBQUFBQUQvQUFBQUFBQUFBQVFBQUFBREFBQUFCQUFBQUFZQUFBQUVBQUFBQ1FBQUFBUUFBQUFNQUFBQUFBQUFBQVFBQUFBQUFBQUFCQUFBQUFnQUFBQU1BQUFBQ0FBQUFBd0FBQUFBQUFBQUJBQUFBQUFBQUFBRUFBQUFDQUFBQUF3QUFBQUlBQUFBREFCQitDa0xCUVFBQUFBRUFFR0lLZ3R4QkFBQUFBUUFBQUFJQUFBQUNBQUFBQXdBQUFBTUFBQUFDQUFBQUFnQUFBQU1BQUFBREFBQUFBQUFBQUFCQUFBQUJBQUFBQVVBQUFBQ0FBQUFBd0FBQUFZQUFBQUhBQUFBQ0FBQUFBa0FBQUFNQUFBQURRQUFBQW9BQUFBTEFBQUFEZ0FBQUE4QUFBQUFBQUFBQVFBQUFBRUFRWVFyQ3hFQkFBQUFBUUFBQUFFQUFBQUNBQUFBQWdCQnBDc0xCUVVBQUFBRUFFRzBLd3VKQmdjQUFBQUVBQUFBQWdBQUFBUUFBQUFCQUFBQUJBQUFBQVFBQUFBRUFBQUFBd0FBQUFRQUFBQUdBQUFBQUFBQUFBMEFBQUFFQUFBQUNBQUFBQUFBQUFBUEFBQUFCQUFBQUFvQUFBQUVBQUFBQ1FBQUFBUUFBQUFNQUFBQUJBQUFBQXNBQUFBRUFBQUFEZ0FBQUFBQUFBQVJBQUFBQkFBQUFCQUFBQUFBQUFBQUV3QUFBQVFBQUFBU0FBQUFBQUFBQUJVQUFBQUVBQUFBRkFBQUFBQUFBQUFYQUFBQUJBQUFBQllBQUFBQkFBQUFDZ0FBQUFFQUFBQUxBQUFBQkFBQUFBQUFBQUFFQUFBQUFRQUFBQUVBQUFBT0FBQUFBUUFBQUE4QUFBQUVBQUFBQkFBQUFBUUFBQUFGQUFBQUJBQUFBQUlBQUFBRUFBQUFBd0FBQUFRQUFBQUlBQUFBQkFBQUFBa0FBQUFFQUFBQUJnQUFBQVFBQUFBSEFBQUFCQUFBQUF3QUFBQUVBQUFBRFFBQUFBRUFBQUFTQUFBQUFRQUFBQk1BQUFBRUFBQUFFQUFBQUFRQUFBQVJBQUFBQVFBQUFCWUFBQUFCQUFBQUZ3QUFBQVFBQUFBVUFBQUFCQUFBQUJVQUFBQUJBQUFBQ3dBQUFBRUFBQUFPQUFBQUJBQUFBQUVBQUFEL0FBQUFCQUFBQUFFQUFBQVBBQUFBQWdBQUFBb0FBQUFFQUFBQUJRQUFBUDhBQUFBQUFBQUFCQUFBQUFNQUFBQUVBQUFBQmdBQUFBUUFBQUFKQUFBQS93QUFBQXdBQUFBRUFBQUFCd0FBQVA4QUFBQUNBQUFBQkFBQUFBMEFBQUQvQUFBQUNBQUFBQUVBQUFBVEFBQUFBZ0FBQUJJQUFBQUVBQUFBRVFBQUFQOEFBQUFRQUFBQUFRQUFBQmNBQUFBQ0FBQUFGZ0FBQUFRQUFBQVZBQUFBL3dBQUFCUUFBQUFEQUFBQUR3QUFBQUVBQUFBS0FBQUFBQUFBQUFVQUFBQUVBQUFBQUFBQUFBRUFBQUFMQUFBQUFRQUFBQTRBQUFBRUFBQUFBUUFBQUFRQUFBQUVBQUFBQUFBQUFBY0FBQUFFQUFBQUFnQUFBQUFBQUFBTkFBQUFCQUFBQUFnQUFBQUVBQUFBQXdBQUFBUUFBQUFHQUFBQUJBQUFBQWtBQUFBRUFBQUFEQUFBQUFNQUFBQVRBQUFBQVFBQUFCSUFBQUFBQUFBQUVRQUFBQVFBQUFBUUFBQUFBd0FBQUJjQUFBQUJBQUFBRmdBQUFBQUFBQUFWQUFBQUJBQUFBQlFBQUFBQkFBQUFBUUFBQUFJQUFBQUNBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QkJ3VFVMdkFZQkFnTUVCUVlIQ0FrS0N3d05EZzhRRVJJVEZCVVdGeGdaR2hzY0hSNGZJQ0VpSXlRbEppY29LU29yTEMwdUx6QXhNak0wTlRZM09EazZPenc5UGo5QVFVSkRSRVZHUjBoSlNrdE1UVTVQVUZGU1UxUlZWbGRZV1ZwYlhGMWVYMkJoWW1Oa1pXWm5hR2xxYTJ4dGJtOXdjWEp6ZEhWMmQzaDVlbnQ4Zlg1L2dJR0NnNFNGaG9lSWlZcUxqSTJPajVDUmtwT1VsWmFYbUptYW01eWRucCtnb2FLanBLV21wNmlwcXF1c3JhNnZzTEd5czdTMXRyZTR1YnE3dkwyK3Y4REJ3c1BFeGNiSHlNbkt5OHpOenMvUTBkTFQxTlhXMTlqWjJ0dmMzZDdmNE9IaTQrVGw1dWZvNmVycjdPM3U3L0R4OHZQMDlmYjMrUG42Ky96OS92Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy93QUFBQUFCQUFBQUFnQUFBQU1BQUFBRUFBQUFCUUFBQUFZQUFBQUhBQUFBQ0FBQUFBa0FBQUFLQUFBQUN3QUFBQXdBQUFBTkFBQUFEZ0FBQUE4QVFZWThDeTRCQVFFQkFRRUNBZ0lDQWdJREF3TURBd01FQkFRRUJBUUZCUVVGQlFVR0JnWUdCZ1lIQndjSEJ3Y0lDQWdJQUVIQVBBdEZDZ0FBQUEwQUFBQVFBQUFBQ3dBQUFBNEFBQUFTQUFBQURRQUFBQkFBQUFBVUFBQUFEZ0FBQUJJQUFBQVhBQUFBRUFBQUFCUUFBQUFaQUFBQUVnQUFBQmNBQUFBZEFFR1JQUXN6QVFJREJBVUFBUUlEQkFVQUFRSURCQVVBQVFJREJBVUFBUUlEQkFVQUFRSURCQVVBQVFJREJBVUFBUUlEQkFVQUFRSURBRUhVUFF1c0FnRUFBQUFDQUFBQUF3QUFBQVFBQUFBRkFBQUFCZ0FBQUFjQUFBQUlBQUFBQ1FBQUFBb0FBQUFMQUFBQURBQUFBQTBBQUFBT0FBQUFEd0FBQUJBQUFBQVJBQUFBRWdBQUFCTUFBQUFVQUFBQUZRQUFBQllBQUFBWEFBQUFHQUFBQUJrQUFBQWFBQUFBR3dBQUFCd0FBQUFkQUFBQUhRQUFBQjRBQUFBZkFBQUFJQUFBQUNBQUFBQWhBQUFBSWdBQUFDSUFBQUFqQUFBQUl3QUFBQ1FBQUFBa0FBQUFKUUFBQUNVQUFBQWxBQUFBSmdBQUFDWUFBQUFtQUFBQUp3QUFBQ2NBQUFBbkFBQUFKd0FBQUM4ZkR3QVhHeDBlQndzTkRpY3JMUzRRQXdVS0RCTVZHaHdqSlNvc0FRSUVDQkVTRkJnR0NSWVpJQ0VpSkNnbUtRQVFBUUlFQ0NBREJRb01EeThIQ3cwT0Jna2ZJeVVxTENFaUpDZ25LeTB1RVJJVUdCTVZHaHdYR3gwZUZoa21LUUJCZ2NBQUN3SWlVQT09IiwgVyhoKSB8fCAoaCA9IFUoaCkpOwogICAgZnVuY3Rpb24gdShJKSB7CiAgICAgIHRyeSB7CiAgICAgICAgaWYgKEkgPT0gaCAmJiBIKQogICAgICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KEgpOwogICAgICAgIHZhciBnID0geihJKTsKICAgICAgICBpZiAoZykKICAgICAgICAgIHJldHVybiBnOwogICAgICAgIGlmIChNKQogICAgICAgICAgcmV0dXJuIE0oSSk7CiAgICAgICAgdGhyb3cgImJvdGggYXN5bmMgYW5kIHN5bmMgZmV0Y2hpbmcgb2YgdGhlIHdhc20gZmFpbGVkIjsKICAgICAgfSBjYXRjaCAoUSkgewogICAgICAgIGMoUSk7CiAgICAgIH0KICAgIH0KICAgIGZ1bmN0aW9uIGlBKCkgewogICAgICByZXR1cm4gIUggJiYgcyAmJiB0eXBlb2YgZmV0Y2ggPT0gImZ1bmN0aW9uIiA/IGZldGNoKGgsIHsKICAgICAgICBjcmVkZW50aWFsczogInNhbWUtb3JpZ2luIgogICAgICB9KS50aGVuKGZ1bmN0aW9uKEkpIHsKICAgICAgICBpZiAoIUkub2spCiAgICAgICAgICB0aHJvdyAiZmFpbGVkIHRvIGxvYWQgd2FzbSBiaW5hcnkgZmlsZSBhdCAnIiArIGggKyAiJyI7CiAgICAgICAgcmV0dXJuIEkuYXJyYXlCdWZmZXIoKTsKICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIHUoaCk7CiAgICAgIH0pIDogUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gdShoKTsKICAgICAgfSk7CiAgICB9CiAgICBmdW5jdGlvbiBEQSgpIHsKICAgICAgdmFyIEkgPSB7CiAgICAgICAgYTogTkEKICAgICAgfTsKICAgICAgZnVuY3Rpb24gZyhpLCBvKSB7CiAgICAgICAgdmFyIE4gPSBpLmV4cG9ydHM7CiAgICAgICAgQS5hc20gPSBOLCBLID0gQS5hc20uYywgWChLLmJ1ZmZlciksIHAgPSBBLmFzbS5sLCBRQShBLmFzbS5kKSwgRUEoKTsKICAgICAgfQogICAgICBCQSgpOwogICAgICBmdW5jdGlvbiBRKGkpIHsKICAgICAgICBnKGkuaW5zdGFuY2UpOwogICAgICB9CiAgICAgIGZ1bmN0aW9uIEIoaSkgewogICAgICAgIHJldHVybiBpQSgpLnRoZW4oZnVuY3Rpb24obykgewogICAgICAgICAgcmV0dXJuIFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKG8sIEkpOwogICAgICAgIH0pLnRoZW4oZnVuY3Rpb24obykgewogICAgICAgICAgcmV0dXJuIG87CiAgICAgICAgfSkudGhlbihpLCBmdW5jdGlvbihvKSB7CiAgICAgICAgICBrKCJmYWlsZWQgdG8gYXN5bmNocm9ub3VzbHkgcHJlcGFyZSB3YXNtOiAiICsgbyksIGMobyk7CiAgICAgICAgfSk7CiAgICAgIH0KICAgICAgZnVuY3Rpb24geSgpIHsKICAgICAgICByZXR1cm4gIUggJiYgdHlwZW9mIFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlU3RyZWFtaW5nID09ICJmdW5jdGlvbiIgJiYgIVcoaCkgJiYgdHlwZW9mIGZldGNoID09ICJmdW5jdGlvbiIgPyBmZXRjaChoLCB7CiAgICAgICAgICBjcmVkZW50aWFsczogInNhbWUtb3JpZ2luIgogICAgICAgIH0pLnRoZW4oZnVuY3Rpb24oaSkgewogICAgICAgICAgdmFyIG8gPSBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZVN0cmVhbWluZyhpLCBJKTsKICAgICAgICAgIHJldHVybiBvLnRoZW4oUSwgZnVuY3Rpb24oTikgewogICAgICAgICAgICByZXR1cm4gaygid2FzbSBzdHJlYW1pbmcgY29tcGlsZSBmYWlsZWQ6ICIgKyBOKSwgaygiZmFsbGluZyBiYWNrIHRvIEFycmF5QnVmZmVyIGluc3RhbnRpYXRpb24iKSwgQihRKTsKICAgICAgICAgIH0pOwogICAgICAgIH0pIDogQihRKTsKICAgICAgfQogICAgICBpZiAoQS5pbnN0YW50aWF0ZVdhc20pCiAgICAgICAgdHJ5IHsKICAgICAgICAgIHZhciBSID0gQS5pbnN0YW50aWF0ZVdhc20oSSwgZyk7CiAgICAgICAgICByZXR1cm4gUjsKICAgICAgICB9IGNhdGNoIChpKSB7CiAgICAgICAgICByZXR1cm4gaygiTW9kdWxlLmluc3RhbnRpYXRlV2FzbSBjYWxsYmFjayBmYWlsZWQgd2l0aCBlcnJvcjogIiArIGkpLCAhMTsKICAgICAgICB9CiAgICAgIHJldHVybiB5KCkuY2F0Y2goUyksIHt9OwogICAgfQogICAgZnVuY3Rpb24gWihJKSB7CiAgICAgIGZvciAoOyBJLmxlbmd0aCA+IDA7ICkgewogICAgICAgIHZhciBnID0gSS5zaGlmdCgpOwogICAgICAgIGlmICh0eXBlb2YgZyA9PSAiZnVuY3Rpb24iKSB7CiAgICAgICAgICBnKEEpOwogICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICAgIHZhciBRID0gZy5mdW5jOwogICAgICAgIHR5cGVvZiBRID09ICJudW1iZXIiID8gZy5hcmcgPT09IHZvaWQgMCA/IHAuZ2V0KFEpKCkgOiBwLmdldChRKShnLmFyZykgOiBRKGcuYXJnID09PSB2b2lkIDAgPyBudWxsIDogZy5hcmcpOwogICAgICB9CiAgICB9CiAgICBmdW5jdGlvbiBHQShJLCBnLCBRKSB7CiAgICAgIHIuY29weVdpdGhpbihJLCBnLCBnICsgUSk7CiAgICB9CiAgICBmdW5jdGlvbiBvQShJKSB7CiAgICAgIHRyeSB7CiAgICAgICAgcmV0dXJuIEsuZ3JvdyhJIC0gbS5ieXRlTGVuZ3RoICsgNjU1MzUgPj4+IDE2KSwgWChLLmJ1ZmZlciksIDE7CiAgICAgIH0gY2F0Y2ggewogICAgICB9CiAgICB9CiAgICBmdW5jdGlvbiBoQShJKSB7CiAgICAgIHZhciBnID0gci5sZW5ndGg7CiAgICAgIEkgPSBJID4+PiAwOwogICAgICB2YXIgUSA9IDIxNDc0ODM2NDg7CiAgICAgIGlmIChJID4gUSkKICAgICAgICByZXR1cm4gITE7CiAgICAgIGZvciAodmFyIEIgPSAxOyBCIDw9IDQ7IEIgKj0gMikgewogICAgICAgIHZhciB5ID0gZyAqICgxICsgMC4yIC8gQik7CiAgICAgICAgeSA9IE1hdGgubWluKHksIEkgKyAxMDA2NjMyOTYpOwogICAgICAgIHZhciBSID0gTWF0aC5taW4oUSwgXyhNYXRoLm1heChJLCB5KSwgNjU1MzYpKSwgaSA9IG9BKFIpOwogICAgICAgIGlmIChpKQogICAgICAgICAgcmV0dXJuICEwOwogICAgICB9CiAgICAgIHJldHVybiAhMTsKICAgIH0KICAgIHZhciB5QSA9IHR5cGVvZiBhdG9iID09ICJmdW5jdGlvbiIgPyBhdG9iIDogZnVuY3Rpb24oSSkgewogICAgICB2YXIgZyA9ICJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPSIsIFEgPSAiIiwgQiwgeSwgUiwgaSwgbywgTiwgZiwgWSA9IDA7CiAgICAgIEkgPSBJLnJlcGxhY2UoL1teQS1aYS16MC05XCtcL1w9XS9nLCAiIik7CiAgICAgIGRvCiAgICAgICAgaSA9IGcuaW5kZXhPZihJLmNoYXJBdChZKyspKSwgbyA9IGcuaW5kZXhPZihJLmNoYXJBdChZKyspKSwgTiA9IGcuaW5kZXhPZihJLmNoYXJBdChZKyspKSwgZiA9IGcuaW5kZXhPZihJLmNoYXJBdChZKyspKSwgQiA9IGkgPDwgMiB8IG8gPj4gNCwgeSA9IChvICYgMTUpIDw8IDQgfCBOID4+IDIsIFIgPSAoTiAmIDMpIDw8IDYgfCBmLCBRID0gUSArIFN0cmluZy5mcm9tQ2hhckNvZGUoQiksIE4gIT09IDY0ICYmIChRID0gUSArIFN0cmluZy5mcm9tQ2hhckNvZGUoeSkpLCBmICE9PSA2NCAmJiAoUSA9IFEgKyBTdHJpbmcuZnJvbUNoYXJDb2RlKFIpKTsKICAgICAgd2hpbGUgKFkgPCBJLmxlbmd0aCk7CiAgICAgIHJldHVybiBROwogICAgfTsKICAgIGZ1bmN0aW9uIGFBKEkpIHsKICAgICAgdHJ5IHsKICAgICAgICBmb3IgKHZhciBnID0geUEoSSksIFEgPSBuZXcgVWludDhBcnJheShnLmxlbmd0aCksIEIgPSAwOyBCIDwgZy5sZW5ndGg7ICsrQikKICAgICAgICAgIFFbQl0gPSBnLmNoYXJDb2RlQXQoQik7CiAgICAgICAgcmV0dXJuIFE7CiAgICAgIH0gY2F0Y2ggewogICAgICAgIHRocm93IG5ldyBFcnJvcigiQ29udmVydGluZyBiYXNlNjQgc3RyaW5nIHRvIGJ5dGVzIGZhaWxlZC4iKTsKICAgICAgfQogICAgfQogICAgZnVuY3Rpb24geihJKSB7CiAgICAgIGlmIChXKEkpKQogICAgICAgIHJldHVybiBhQShJLnNsaWNlKFAubGVuZ3RoKSk7CiAgICB9CiAgICB2YXIgTkEgPSB7CiAgICAgIGI6IEdBLAogICAgICBhOiBoQQogICAgfTsKICAgIERBKCksIEEuX19fd2FzbV9jYWxsX2N0b3JzID0gZnVuY3Rpb24oKSB7CiAgICAgIHJldHVybiAoQS5fX193YXNtX2NhbGxfY3RvcnMgPSBBLmFzbS5kKS5hcHBseShudWxsLCBhcmd1bWVudHMpOwogICAgfSwgQS5faDI2NGJzZEluaXQgPSBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIChBLl9oMjY0YnNkSW5pdCA9IEEuYXNtLmUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7CiAgICB9LCBBLl9tYWxsb2MgPSBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIChBLl9tYWxsb2MgPSBBLmFzbS5mKS5hcHBseShudWxsLCBhcmd1bWVudHMpOwogICAgfSwgQS5fZnJlZSA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gKEEuX2ZyZWUgPSBBLmFzbS5nKS5hcHBseShudWxsLCBhcmd1bWVudHMpOwogICAgfSwgQS5faDI2NGJzZERlY29kZSA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gKEEuX2gyNjRic2REZWNvZGUgPSBBLmFzbS5oKS5hcHBseShudWxsLCBhcmd1bWVudHMpOwogICAgfSwgQS5faDI2NGJzZFNodXRkb3duID0gZnVuY3Rpb24oKSB7CiAgICAgIHJldHVybiAoQS5faDI2NGJzZFNodXRkb3duID0gQS5hc20uaSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKTsKICAgIH0sIEEuX2gyNjRic2RBbGxvYyA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gKEEuX2gyNjRic2RBbGxvYyA9IEEuYXNtLmopLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7CiAgICB9LCBBLl9oMjY0YnNkRnJlZSA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gKEEuX2gyNjRic2RGcmVlID0gQS5hc20uaykuYXBwbHkobnVsbCwgYXJndW1lbnRzKTsKICAgIH0sIEEuZ2V0VmFsdWUgPSB2OwogICAgdmFyIGQ7CiAgICBGID0gZnVuY3Rpb24gSSgpIHsKICAgICAgZCB8fCB4KCksIGQgfHwgKEYgPSBJKTsKICAgIH07CiAgICBmdW5jdGlvbiB4KEkpIHsKICAgICAgaWYgKHcgPiAwIHx8ICgkKCksIHcgPiAwKSkKICAgICAgICByZXR1cm47CiAgICAgIGZ1bmN0aW9uIGcoKSB7CiAgICAgICAgZCB8fCAoZCA9ICEwLCBBLmNhbGxlZFJ1biA9ICEwLCAhZSAmJiAoQUEoKSwgQyhBKSwgQS5vblJ1bnRpbWVJbml0aWFsaXplZCAmJiBBLm9uUnVudGltZUluaXRpYWxpemVkKCksIElBKCkpKTsKICAgICAgfQogICAgICBBLnNldFN0YXR1cyA/IChBLnNldFN0YXR1cygiUnVubmluZy4uLiIpLCBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICBBLnNldFN0YXR1cygiIik7CiAgICAgICAgfSwgMSksIGcoKTsKICAgICAgfSwgMSkpIDogZygpOwogICAgfQogICAgaWYgKEEucnVuID0geCwgQS5wcmVJbml0KQogICAgICBmb3IgKHR5cGVvZiBBLnByZUluaXQgPT0gImZ1bmN0aW9uIiAmJiAoQS5wcmVJbml0ID0gW0EucHJlSW5pdF0pOyBBLnByZUluaXQubGVuZ3RoID4gMDsgKQogICAgICAgIEEucHJlSW5pdC5wb3AoKSgpOwogICAgcmV0dXJuIHgoKSwgQS5yZWFkeTsKICB9Owp9KCksIHEgPSB7fTsKZnVuY3Rpb24gc0EoKSB7CiAgcmV0dXJuIFNBKCkudGhlbihmdW5jdGlvbihhKSB7CiAgICBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBmdW5jdGlvbihKKSB7CiAgICAgIHZhciBBID0gSi5kYXRhLCBDID0gQS5yZW5kZXJTdGF0ZUlkLCBTID0gQS50eXBlOwogICAgICBzd2l0Y2ggKFMpIHsKICAgICAgICBjYXNlICJkZWNvZGUiOiB7CiAgICAgICAgICB2YXIgRCA9IHFbQ107CiAgICAgICAgICBEIHx8IChEID0gbmV3IEwoYSwgZnVuY3Rpb24ocywgRywgVSkgewogICAgICAgICAgICBwb3N0TWVzc2FnZSh7CiAgICAgICAgICAgICAgdHlwZTogInBpY3R1cmVSZWFkeSIsCiAgICAgICAgICAgICAgd2lkdGg6IEcsCiAgICAgICAgICAgICAgaGVpZ2h0OiBVLAogICAgICAgICAgICAgIHJlbmRlclN0YXRlSWQ6IEMsCiAgICAgICAgICAgICAgZGF0YTogcy5idWZmZXIKICAgICAgICAgICAgfSwgW3MuYnVmZmVyXSk7CiAgICAgICAgICB9KSwgcVtDXSA9IEQpLCBELmRlY29kZShuZXcgVWludDhBcnJheShBLmRhdGEsIEEub2Zmc2V0LCBBLmxlbmd0aCkpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIGNhc2UgInJlbGVhc2UiOiB7CiAgICAgICAgICB2YXIgRSA9IHFbQ107CiAgICAgICAgICBFICYmIChFLnJlbGVhc2UoKSwgZGVsZXRlIHFbQ10pOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICB9CiAgICB9KSwgc2VsZi5wb3N0TWVzc2FnZSh7CiAgICAgIHR5cGU6ICJkZWNvZGVyUmVhZHkiCiAgICB9KTsKICB9KTsKfQpzQSgpOwo=",vn=typeof window<"u"&&window.Blob&&new Blob([atob(An)],{type:"text/javascript;charset=utf-8"});function Fl(){let i;try{if(i=vn&&(window.URL||window.webkitURL).createObjectURL(vn),!i)throw"";return new Worker(i)}catch{return new Worker("data:application/javascript;base64,"+An,{type:"module"})}finally{i&&(window.URL||window.webkitURL).revokeObjectURL(i)}}class rn{constructor(U={}){d(this,"worker");d(this,"_queueSize",0);d(this,"pendingTimestamps",[]);d(this,"pendingFrames",[]);d(this,"onFrameDecoded");d(this,"onError");d(this,"onQueueOverflow");d(this,"configured",!1);this.onFrameDecoded=U.onFrameDecoded,this.onError=U.onError,this.onQueueOverflow=U.onQueueOverflow}get queueSize(){return this._queueSize}get state(){return this.worker?this.configured?"configured":"configuring":"unconfigured"}async configure(U){return this.worker&&(this.worker.terminate(),this.worker=void 0),this.worker=new Fl,this.configured=!1,this._queueSize=0,this.pendingTimestamps=[],new Promise((e,t)=>{this.worker.addEventListener("message",F=>{var n;const Q=F.data;switch(Q.type){case"pictureReady":this.handlePictureReady(Q);break;case"decoderReady":console.log("[WasmDecoder] Worker ready"),this.configured=!0,e();break;case"error":const s=new Error(Q.error||"WASM decoder error");(n=this.onError)==null||n.call(this,s),t(s);break}}),this.worker.addEventListener("error",F=>{var n;const Q=new Error(`Worker error: ${F.message}`);(n=this.onError)==null||n.call(this,Q),t(Q)})})}decodeBinary(U){var n,s;if(!this.worker||!this.configured||!U.header||!U.payload)return;const e=new Uint8Array(U.payload),t=(n=U.codec_data)!=null&&n.timebase_den&&((s=U.codec_data)!=null&&s.timebase_num)?{num:U.codec_data.timebase_num,den:U.codec_data.timebase_den}:{num:1,den:1e6},F={num:1,den:1e6},Q=En(U.header.pts,t,F);this.pendingFrames.push(e),this.pendingTimestamps.push(Q),this.decodeNext()}decodeNext(){const U=this.pendingFrames.shift();U!=null&&this.decode(U)}decode(U){!this.worker||!this.configured||(this._queueSize++,this.worker.postMessage({type:"decode",data:U.buffer,offset:U.byteOffset,length:U.byteLength,renderStateId:1},[U.buffer]))}handlePictureReady(U){var W;this._queueSize--;const{width:e,height:t,data:F}=U,Q=new Uint8Array(F),n=e,s=n*t,l=s>>2,a=Q.subarray(0,s),B=Q.subarray(s,s+l),r=Q.subarray(s+l,s+2*l),h=t>>1,V=n>>1,S=this.pendingTimestamps.shift()??0,c={y:a,u:B,v:r,width:e,height:t,chromaStride:V,chromaHeight:h,timestamp:S,close:()=>{}};(W=this.onFrameDecoded)==null||W.call(this,c)}flush(){this._queueSize=0,this.pendingTimestamps=[],this.pendingFrames=[]}flushSync(){this.flush()}reset(){this.flush()}dispose(){this.worker&&(this.worker.terminate(),this.worker=void 0),this.configured=!1,this._queueSize=0,this.pendingTimestamps=[],this.pendingFrames=[]}}class jn{constructor(U={}){d(this,"buffer",[]);d(this,"bufferDelayMs");d(this,"maxBufferSize");d(this,"startRealTimeUs",null);d(this,"startStreamTimeUs",null);d(this,"frameDurationUs",2e4);d(this,"lastFrameTimestamp",null);d(this,"bufferSizeHistory",[]);d(this,"driftCheckInterval");d(this,"driftThresholdMs");d(this,"dequeueCount",0);d(this,"latencyHistory",[]);d(this,"latencyHistorySize",60);d(this,"packetTimingHistory",[]);d(this,"packetTimingHistorySize",300);d(this,"lastPacketArrivalTime",null);d(this,"stats",{dropped:0,enqueued:0,dequeued:0,driftCorrections:0});d(this,"logger");d(this,"onFrameDropped");this.bufferDelayMs=U.bufferDelayMs??100;const e=Math.ceil(this.bufferDelayMs/1e3*60*2);this.maxBufferSize=U.maxBufferSize??Math.max(30,e),this.driftCheckInterval=U.driftCheckInterval??150,this.driftThresholdMs=U.driftCorrectionThresholdMs??30,this.logger=U.logger??(()=>{}),this.onFrameDropped=U.onFrameDropped}get bufferDelayUs(){return this.bufferDelayMs*1e3}get effectiveDriftThresholdMs(){return Math.min(this.driftThresholdMs,this.bufferDelayMs*.5)}enqueue(U,e,t,F=!1){var s;this.stats.enqueued++;const Q=this.lastPacketArrivalTime!==null?t.arrivalTime-this.lastPacketArrivalTime:0;this.lastPacketArrivalTime=t.arrivalTime;const n=t.decodeTime-t.arrivalTime;for(this.packetTimingHistory.push({arrivalTime:t.arrivalTime,intervalMs:Q,streamTimestampUs:e,isKeyframe:F,decodeLatencyMs:n,wasDropped:!1});this.packetTimingHistory.length>this.packetTimingHistorySize;)this.packetTimingHistory.shift();if(this.lastFrameTimestamp!==null){const l=e-this.lastFrameTimestamp;l>0&&l<1e5&&(this.frameDurationUs=l)}for(this.lastFrameTimestamp=e;this.buffer.length>=this.maxBufferSize;){const l=this.buffer.shift();l&&(this.stats.dropped++,(s=this.onFrameDropped)==null||s.call(this,l.frame,"overflow"),this.startRealTimeUs=null,this.startStreamTimeUs=null)}this.buffer.push({frame:U,timestamp:e,timing:t})}dequeue(U){const e=U*1e3,t=performance.now();if(this.buffer.length===0)return null;if(this.bufferDelayMs===0)return this.trackBufferSize(),this.dequeueLatest(t);const F=this.buffer.length*this.frameDurationUs/1e3,Q=Math.min(this.bufferDelayMs*.5,this.frameDurationUs/1e3);if(F<Q)return null;this.startRealTimeUs===null&&(this.startRealTimeUs=e,this.startStreamTimeUs=this.buffer[0].timestamp+this.bufferDelayUs,this.logger(`Playback started: buffer=${Math.round(F)}ms, delay=${this.bufferDelayMs}ms`)),this.trackBufferSize();const n=e-this.startRealTimeUs,s=this.startStreamTimeUs+n-this.bufferDelayUs;let l=this.findBestFrameIndex(s);if(l===-1)return null;l>1&&(this.dropFrames(l-1,"skip"),l=0),this.dequeueCount++,this.dequeueCount%this.driftCheckInterval===0&&this.correctDrift();const a=this.buffer.shift();return this.stats.dequeued++,this.recordLatency(a.timing,t),a.frame}dequeueLatest(U){const e=this.buffer.pop();return this.stats.dequeued++,this.recordLatency(e.timing,U),this.dropFrames(this.buffer.length,"skip"),e.frame}recordLatency(U,e){const t=U.decodeTime-U.arrivalTime,F=e-U.decodeTime,Q=e-U.arrivalTime;this.latencyHistory.push({decode:t,buffer:F,total:Q}),this.latencyHistory.length>this.latencyHistorySize&&this.latencyHistory.shift()}getLatencyStats(){if(this.latencyHistory.length===0)return null;const U=this.latencyHistory[this.latencyHistory.length-1],e=this.latencyHistory.reduce((Q,n)=>Q+n.decode,0)/this.latencyHistory.length,t=this.latencyHistory.reduce((Q,n)=>Q+n.buffer,0)/this.latencyHistory.length,F=this.latencyHistory.reduce((Q,n)=>Q+n.total,0)/this.latencyHistory.length;return{decodeLatency:Math.round(U.decode*10)/10,bufferLatency:Math.round(U.buffer*10)/10,totalLatency:Math.round(U.total*10)/10,avgDecodeLatency:Math.round(e*10)/10,avgBufferLatency:Math.round(t*10)/10,avgTotalLatency:Math.round(F*10)/10}}findBestFrameIndex(U){let e=-1;for(let t=0;t<this.buffer.length&&this.buffer[t].timestamp<=U;t++)e=t;return e}dropFrames(U,e){var t;for(let F=0;F<U&&this.buffer.length>0;F++){const Q=this.buffer.shift();this.stats.dropped++,(t=this.onFrameDropped)==null||t.call(this,Q.frame,e);const n=this.packetTimingHistory.find(s=>s.streamTimestampUs===Q.timestamp);n&&(n.wasDropped=!0)}}trackBufferSize(){this.bufferSizeHistory.push(this.buffer.length),this.bufferSizeHistory.length>100&&this.bufferSizeHistory.shift()}correctDrift(){if(this.bufferSizeHistory.length<10||!this.startStreamTimeUs)return;const t=this.bufferSizeHistory.reduce((Q,n)=>Q+n,0)/this.bufferSizeHistory.length*this.frameDurationUs/1e3-this.bufferDelayMs,F=this.effectiveDriftThresholdMs;if(Math.abs(t)>F){const Q=t*1e3;this.startStreamTimeUs+=Q,this.stats.driftCorrections++,this.bufferSizeHistory=[],this.logger(`Drift correction: ${t.toFixed(1)}ms`)}}clear(){var U;for(const e of this.buffer)(U=this.onFrameDropped)==null||U.call(this,e.frame,"overflow");this.buffer=[],this.startRealTimeUs=null,this.startStreamTimeUs=null,this.bufferSizeHistory=[]}setBufferDelay(U){const e=this.bufferDelayMs>0;this.bufferDelayMs=U,(e&&U===0||!e&&U>0)&&(this.bufferSizeHistory=[],this.startRealTimeUs=null,this.startStreamTimeUs=null)}getBufferDelay(){return this.bufferDelayMs}getStatus(){const U=this.buffer.length*this.frameDurationUs/1e3;let e=U;return this.bufferSizeHistory.length>0&&(e=this.bufferSizeHistory.reduce((F,Q)=>F+Q,0)/this.bufferSizeHistory.length*this.frameDurationUs/1e3),{currentBufferSize:this.buffer.length,currentBufferMs:Math.round(U),avgBufferMs:Math.round(e),targetBufferMs:this.bufferDelayMs,streamFrameDurationUs:this.frameDurationUs,droppedFrames:this.stats.dropped,totalEnqueuedFrames:this.stats.enqueued,totalDequeuedFrames:this.stats.dequeued,driftCorrections:this.stats.driftCorrections,latency:this.getLatencyStats()}}logStatus(){const U=this.getStatus(),e=(1e6/this.frameDurationUs).toFixed(1);this.logger(`buffer=${U.currentBufferMs}ms/${U.targetBufferMs}ms (${U.currentBufferSize} frames), dropped=${U.droppedFrames}, fps=${e}`)}resetStats(){this.stats={dropped:0,enqueued:0,dequeued:0,driftCorrections:0},this.bufferSizeHistory=[]}getPacketTimingHistory(){return[...this.packetTimingHistory]}}const Ql=`
1
+ "use strict";var Fr=Object.create;var nr=Object.defineProperty;var Qr=Object.getOwnPropertyDescriptor;var pr=Object.getOwnPropertyNames;var fr=Object.getPrototypeOf,hr=Object.prototype.hasOwnProperty;var Br=(d,o,l)=>o in d?nr(d,o,{enumerable:!0,configurable:!0,writable:!0,value:l}):d[o]=l;var Rr=(d,o,l,i)=>{if(o&&typeof o=="object"||typeof o=="function")for(let r of pr(o))!hr.call(d,r)&&r!==l&&nr(d,r,{get:()=>o[r],enumerable:!(i=Qr(o,r))||i.enumerable});return d};var ar=(d,o,l)=>(l=d!=null?Fr(fr(d)):{},Rr(o||!d||!d.__esModule?nr(l,"default",{value:d,enumerable:!0}):l,d));var c=(d,o,l)=>(Br(d,typeof o!="symbol"?o+"":o,l),l),or=(d,o,l)=>{if(!o.has(d))throw TypeError("Cannot "+l)};var dr=(d,o,l)=>(or(d,o,"read from private field"),l?l.call(d):o.get(d)),rr=(d,o,l)=>{if(o.has(d))throw TypeError("Cannot add the same private member more than once");o instanceof WeakSet?o.add(d):o.set(d,l)},Ur=(d,o,l,i)=>(or(d,o,"write to private field"),i?i.call(d,l):o.set(d,l),l);var lr=(d,o,l)=>(or(d,o,"access private method"),l);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const stinkyMoqJs=require("stinky-moq-js"),consoleLogger={debug:d=>console.debug(`[VideoPlayer] ${d}`),info:d=>console.info(`[VideoPlayer] ${d}`),warn:d=>console.warn(`[VideoPlayer] ${d}`),error:d=>console.error(`[VideoPlayer] ${d}`)},silentLogger={debug:()=>{},info:()=>{},warn:()=>{},error:()=>{}};class BaseStreamSource{constructor(){c(this,"handlers",new Map);c(this,"_connected",!1)}get connected(){return this._connected}on(o,l){this.handlers.has(o)||this.handlers.set(o,new Set),this.handlers.get(o).add(l)}off(o,l){var i;(i=this.handlers.get(o))==null||i.delete(l)}emit(o,...l){var i;(i=this.handlers.get(o))==null||i.forEach(r=>r(...l))}dispose(){this.handlers.clear()}}function createLogger(d){return{debug:d?consoleLogger.debug:silentLogger.debug,info:consoleLogger.info,warn:consoleLogger.warn,error:consoleLogger.error}}class BasePlayer{constructor(o,l=!1){c(this,"eventHandlers",new Map);c(this,"logger");c(this,"_state");this._state=o,this.logger=createLogger(l)}get state(){return this._state}setState(o){if(this._state!==o){const l=this._state;this._state=o,this.logger.debug(`State: ${l} -> ${o}`),this.emit("statechange",o)}}setDebugLogging(o){this.logger=createLogger(o)}on(o,l){this.eventHandlers.has(o)||this.eventHandlers.set(o,new Set),this.eventHandlers.get(o).add(l)}off(o,l){var i;(i=this.eventHandlers.get(o))==null||i.delete(l)}emit(o,...l){var i;(i=this.eventHandlers.get(o))==null||i.forEach(r=>r(...l))}clearEventHandlers(){this.eventHandlers.clear()}}function toBigInt(d){return d==null?0n:typeof d=="bigint"?d:BigInt(typeof d=="number"?Math.floor(d):d.toString())}function rescaleTime(d,o,l){const r=toBigInt(d)*BigInt(o.num)*BigInt(l.den)/(BigInt(o.den)*BigInt(l.num));return Number(r)}function codecDataChanged(d,o){return!d&&!o?!1:!d||!o?!0:d.codecType!==o.codecType||d.width!==o.width||d.height!==o.height||d.codecProfile!==o.codecProfile||d.codecLevel!==o.codecLevel}function getCodecString(d){switch(d.codecType){case 3:const o=d.codecProfile&&d.codecProfile>0?d.codecProfile.toString(16).padStart(2,"0"):"42",l="00",i=d.codecLevel&&d.codecLevel>0?d.codecLevel.toString(16).padStart(2,"0"):"1f";return`avc1.${o}${l}${i}`;case 4:return"hev1.1.6.L93.B0";case 2:return"vp09.00.10.08";case 1:return"vp8";case 5:return"av01.0.00M.08";default:return null}}class WebCodecsDecoder{constructor(o={}){c(this,"decoder",null);c(this,"config");c(this,"flushing",!1);c(this,"logger");c(this,"maxQueueSize");c(this,"onFrameDecoded");c(this,"onError");c(this,"onQueueOverflow");c(this,"chunksSentToDecoder",0);c(this,"framesDecoded",0);this.logger=o.logger??consoleLogger,this.onFrameDecoded=o.onFrameDecoded??o.onFrame,this.onError=o.onError,this.onQueueOverflow=o.onQueueOverflow,this.maxQueueSize=o.maxQueueSize??10,this.createDecoder()}get decodeQueueSize(){var o;return((o=this.decoder)==null?void 0:o.decodeQueueSize)??0}get state(){var o;return((o=this.decoder)==null?void 0:o.state)??"closed"}createDecoder(){this.decoder=new VideoDecoder({output:o=>{this.framesDecoded++,this.onFrameDecoded?this.onFrameDecoded(o):o.close()},error:o=>{this.logger.error(`Decoder error: ${o.message}`),this.onError&&this.onError(o)}})}async configure(o,l=!0){return"codec"in o&&typeof o.codec=="string"?this.configureWithConfig(o):this.configureWithCodecData(o,l)}async configureWithConfig(o){var i;const l=[o,{...o,hardwareAcceleration:o.hardwareAcceleration==="prefer-hardware"?"prefer-software":"prefer-hardware"}];for(const r of l)if((await VideoDecoder.isConfigSupported(r)).supported){this.config=r,(i=this.decoder)==null||i.configure(r),this.logger.info(`Decoder configured: ${r.codec} ${r.codedWidth}x${r.codedHeight} (${r.hardwareAcceleration??"default"})`);return}throw new Error(`Codec configuration not supported: ${o.codec}`)}async configureWithCodecData(o,l=!0){var n;const i=getCodecString(o);if(!i)throw new Error(`Unsupported codec type: ${o.codecType}`);const r=o.width??0,t=o.height??0,e=[{codec:i,codedWidth:r,codedHeight:t,hardwareAcceleration:l?"prefer-hardware":"prefer-software",latencyMode:"realtime"},{codec:i,codedWidth:r,codedHeight:t,hardwareAcceleration:l?"prefer-software":"prefer-hardware",latencyMode:"realtime"}];for(const s of e)if((await VideoDecoder.isConfigSupported(s)).supported){this.config=s,(n=this.decoder)==null||n.configure(s),this.logger.info(`Decoder configured: ${i} ${r}x${t} (${s.hardwareAcceleration})`);return}throw new Error(`Codec configuration not supported: ${i}`)}decodeBinary(o){var e,n,s,a,U,u;if(this.flushing){this.logger.warn("Received packet while flushing");return}if(!o.header||!o.payload||!this.decoder||this.decoder.state!=="configured")return;if(this.decoder.decodeQueueSize>this.maxQueueSize){this.onQueueOverflow&&this.onQueueOverflow(this.decoder.decodeQueueSize);return}const l=(n=(e=o.header.media)==null?void 0:e.codecData)!=null&&n.timebaseDen&&((a=(s=o.header.media)==null?void 0:s.codecData)!=null&&a.timebaseNum)?{num:o.header.media.codecData.timebaseNum,den:o.header.media.codecData.timebaseDen}:{num:1,den:1e6},i={num:1,den:1e6},r=rescaleTime(((U=o.header.media)==null?void 0:U.pts)??0,l,i),t=new EncodedVideoChunk({timestamp:r,type:(u=o.header.media)!=null&&u.keyframe?"key":"delta",data:o.payload??new Uint8Array(0)});try{this.chunksSentToDecoder++,this.decoder.decode(t)}catch(F){this.logger.error(`Decode error: ${F}`)}}decode(o){if(this.flushing){this.logger.warn("Received sample while flushing");return}if(!this.decoder||this.decoder.state!=="configured")return;if(this.decoder.decodeQueueSize>this.maxQueueSize){this.onQueueOverflow&&this.onQueueOverflow(this.decoder.decodeQueueSize);return}const l=new EncodedVideoChunk({timestamp:o.timestamp,duration:o.duration,type:o.isKeyframe?"key":"delta",data:o.data});try{this.chunksSentToDecoder++,this.decoder.decode(l)}catch(i){this.logger.error(`Decode error: ${i}`)}}async flush(){if(!(!this.decoder||this.decoder.state==="closed")){this.flushing=!0;try{await this.decoder.flush()}catch{}this.flushing=!1}}flushSync(){this.flushing=!0,this.decoder&&this.decoder.state!=="closed"&&(this.decoder.reset(),this.config&&this.decoder.configure(this.config)),this.flushing=!1}reset(){this.decoder&&this.decoder.state!=="closed"&&(this.decoder.reset(),this.config&&this.decoder.configure(this.config))}dispose(){this.decoder&&(this.decoder.state!=="closed"&&this.decoder.close(),this.decoder=null),this.config=void 0}}const encodedJs="dmFyIEwgPSAvKiBAX19QVVJFX18gKi8gZnVuY3Rpb24oKSB7CiAgZnVuY3Rpb24gYShBLCBDKSB7CiAgICB0aGlzLnRpbnlIMjY0TW9kdWxlID0gQSwgdGhpcy5vblBpY3R1cmVSZWFkeSA9IEMsIHRoaXMucFN0b3JhZ2UgPSB0aGlzLnRpbnlIMjY0TW9kdWxlLl9oMjY0YnNkQWxsb2MoKSwgdGhpcy5wV2lkdGggPSB0aGlzLnRpbnlIMjY0TW9kdWxlLl9tYWxsb2MoNCksIHRoaXMucEhlaWdodCA9IHRoaXMudGlueUgyNjRNb2R1bGUuX21hbGxvYyg0KSwgdGhpcy5wUGljdHVyZSA9IHRoaXMudGlueUgyNjRNb2R1bGUuX21hbGxvYyg0KSwgdGhpcy5fZGVjQnVmZmVyID0gdGhpcy50aW55SDI2NE1vZHVsZS5fbWFsbG9jKDEwNDg1NzYpLCB0aGlzLnRpbnlIMjY0TW9kdWxlLl9oMjY0YnNkSW5pdCh0aGlzLnBTdG9yYWdlLCAwKTsKICB9CiAgdmFyIEogPSBhLnByb3RvdHlwZTsKICByZXR1cm4gSi5yZWxlYXNlID0gZnVuY3Rpb24oKSB7CiAgICB2YXIgQyA9IHRoaXMucFN0b3JhZ2U7CiAgICBDICE9PSAwICYmICh0aGlzLnRpbnlIMjY0TW9kdWxlLl9oMjY0YnNkU2h1dGRvd24oQyksIHRoaXMudGlueUgyNjRNb2R1bGUuX2gyNjRic2RGcmVlKEMpKSwgdGhpcy50aW55SDI2NE1vZHVsZS5fZnJlZSh0aGlzLnBXaWR0aCksIHRoaXMudGlueUgyNjRNb2R1bGUuX2ZyZWUodGhpcy5wSGVpZ2h0KSwgdGhpcy50aW55SDI2NE1vZHVsZS5fZnJlZSh0aGlzLnBQaWN0dXJlKSwgdGhpcy5wU3RvcmFnZSA9IDAsIHRoaXMucFdpZHRoID0gMCwgdGhpcy5wSGVpZ2h0ID0gMDsKICB9LCBKLmRlY29kZSA9IGZ1bmN0aW9uKEMpIHsKICAgIEMgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciAmJiAoQyA9IG5ldyBVaW50OEFycmF5KEMpKSwgdGhpcy50aW55SDI2NE1vZHVsZS5IRUFQVTguc2V0KEMsIHRoaXMuX2RlY0J1ZmZlcik7CiAgICB2YXIgUyA9IHRoaXMudGlueUgyNjRNb2R1bGUuX2gyNjRic2REZWNvZGUodGhpcy5wU3RvcmFnZSwgdGhpcy5fZGVjQnVmZmVyLCBDLmJ5dGVMZW5ndGgsIHRoaXMucFBpY3R1cmUsIHRoaXMucFdpZHRoLCB0aGlzLnBIZWlnaHQpOwogICAgaWYgKFMgPT09IGEuUElDX1JEWSkgewogICAgICB2YXIgRCA9IHRoaXMudGlueUgyNjRNb2R1bGUuZ2V0VmFsdWUodGhpcy5wV2lkdGgsICJpMzIiKSwgRSA9IHRoaXMudGlueUgyNjRNb2R1bGUuZ2V0VmFsdWUodGhpcy5wSGVpZ2h0LCAiaTMyIiksIHMgPSB0aGlzLnRpbnlIMjY0TW9kdWxlLmdldFZhbHVlKHRoaXMucFBpY3R1cmUsICJpOCoiKSwgRyA9IG5ldyBVaW50OEFycmF5KHRoaXMudGlueUgyNjRNb2R1bGUuSEVBUFU4LnN1YmFycmF5KHMsIHMgKyBEICogRSAqIDMgLyAyKSk7CiAgICAgIHRoaXMub25QaWN0dXJlUmVhZHkoRywgRCwgRSk7CiAgICB9CiAgfSwgYTsKfSgpOwpMLlJEWSA9IDA7CkwuUElDX1JEWSA9IDE7CkwuSERSU19SRFkgPSAyOwpMLkVSUk9SID0gMzsKTC5QQVJBTV9TRVRfRVJST1IgPSA0OwpMLk1FTUFMTE9DX0VSUk9SID0gNTsKdmFyIFNBID0gZnVuY3Rpb24oKSB7CiAgdmFyIGEgPSB0eXBlb2YgZG9jdW1lbnQgPCAidSIgJiYgZG9jdW1lbnQuY3VycmVudFNjcmlwdCA/IGRvY3VtZW50LmN1cnJlbnRTY3JpcHQuc3JjIDogdm9pZCAwOwogIHJldHVybiBmdW5jdGlvbihBKSB7CiAgICBBID0gQSB8fCB7fTsKICAgIHZhciBBID0gdHlwZW9mIEEgPCAidSIgPyBBIDoge30sIEMsIFM7CiAgICBBLnJlYWR5ID0gbmV3IFByb21pc2UoZnVuY3Rpb24oSSwgZykgewogICAgICBDID0gSSwgUyA9IGc7CiAgICB9KTsKICAgIHZhciBEID0ge30sIEU7CiAgICBmb3IgKEUgaW4gQSkKICAgICAgQS5oYXNPd25Qcm9wZXJ0eShFKSAmJiAoRFtFXSA9IEFbRV0pOwogICAgdmFyIHMgPSAhMCwgRyA9ICIiOwogICAgZnVuY3Rpb24gVShJKSB7CiAgICAgIHJldHVybiBBLmxvY2F0ZUZpbGUgPyBBLmxvY2F0ZUZpbGUoSSwgRykgOiBHICsgSTsKICAgIH0KICAgIHZhciBNOwogICAgRyA9IHNlbGYubG9jYXRpb24uaHJlZiwgYSAmJiAoRyA9IGEpLCBHLmluZGV4T2YoImJsb2I6IikgIT09IDAgPyBHID0gRy5zdWJzdHIoMCwgRy5sYXN0SW5kZXhPZigiLyIpICsgMSkgOiBHID0gIiIsIE0gPSBmdW5jdGlvbihnKSB7CiAgICAgIHRyeSB7CiAgICAgICAgdmFyIFEgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKICAgICAgICByZXR1cm4gUS5vcGVuKCJHRVQiLCBnLCAhMSksIFEucmVzcG9uc2VUeXBlID0gImFycmF5YnVmZmVyIiwgUS5zZW5kKG51bGwpLCBuZXcgVWludDhBcnJheShRLnJlc3BvbnNlKTsKICAgICAgfSBjYXRjaCAoeSkgewogICAgICAgIHZhciBCID0geihnKTsKICAgICAgICBpZiAoQikKICAgICAgICAgIHJldHVybiBCOwogICAgICAgIHRocm93IHk7CiAgICAgIH0KICAgIH0sIEEucHJpbnQgfHwgY29uc29sZS5sb2cuYmluZChjb25zb2xlKTsKICAgIHZhciBrID0gQS5wcmludEVyciB8fCBjb25zb2xlLndhcm4uYmluZChjb25zb2xlKTsKICAgIGZvciAoRSBpbiBEKQogICAgICBELmhhc093blByb3BlcnR5KEUpICYmIChBW0VdID0gRFtFXSk7CiAgICBEID0gbnVsbCwgQS5hcmd1bWVudHMgJiYgQS5hcmd1bWVudHMsIEEudGhpc1Byb2dyYW0gJiYgQS50aGlzUHJvZ3JhbSwgQS5xdWl0ICYmIEEucXVpdDsKICAgIHZhciBIOwogICAgQS53YXNtQmluYXJ5ICYmIChIID0gQS53YXNtQmluYXJ5KSwgQS5ub0V4aXRSdW50aW1lLCB0eXBlb2YgV2ViQXNzZW1ibHkgIT0gIm9iamVjdCIgJiYgYygibm8gbmF0aXZlIHdhc20gc3VwcG9ydCBkZXRlY3RlZCIpOwogICAgZnVuY3Rpb24gdihJLCBnLCBRKSB7CiAgICAgIHN3aXRjaCAoZyA9IGcgfHwgImk4IiwgZy5jaGFyQXQoZy5sZW5ndGggLSAxKSA9PT0gIioiICYmIChnID0gImkzMiIpLCBnKSB7CiAgICAgICAgY2FzZSAiaTEiOgogICAgICAgICAgcmV0dXJuIHRbSSA+PiAwXTsKICAgICAgICBjYXNlICJpOCI6CiAgICAgICAgICByZXR1cm4gdFtJID4+IDBdOwogICAgICAgIGNhc2UgImkxNiI6CiAgICAgICAgICByZXR1cm4gT1tJID4+IDFdOwogICAgICAgIGNhc2UgImkzMiI6CiAgICAgICAgICByZXR1cm4gbltJID4+IDJdOwogICAgICAgIGNhc2UgImk2NCI6CiAgICAgICAgICByZXR1cm4gbltJID4+IDJdOwogICAgICAgIGNhc2UgImZsb2F0IjoKICAgICAgICAgIHJldHVybiBsW0kgPj4gMl07CiAgICAgICAgY2FzZSAiZG91YmxlIjoKICAgICAgICAgIHJldHVybiBUW0kgPj4gM107CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgIGMoImludmFsaWQgdHlwZSBmb3IgZ2V0VmFsdWU6ICIgKyBnKTsKICAgICAgfQogICAgICByZXR1cm4gbnVsbDsKICAgIH0KICAgIHZhciBLLCBlID0gITE7CiAgICBmdW5jdGlvbiBfKEksIGcpIHsKICAgICAgcmV0dXJuIEkgJSBnID4gMCAmJiAoSSArPSBnIC0gSSAlIGcpLCBJOwogICAgfQogICAgdmFyIG0sIHQsIHIsIE8sIG4sIGwsIFQ7CiAgICBmdW5jdGlvbiBYKEkpIHsKICAgICAgbSA9IEksIEEuSEVBUDggPSB0ID0gbmV3IEludDhBcnJheShJKSwgQS5IRUFQMTYgPSBPID0gbmV3IEludDE2QXJyYXkoSSksIEEuSEVBUDMyID0gbiA9IG5ldyBJbnQzMkFycmF5KEkpLCBBLkhFQVBVOCA9IHIgPSBuZXcgVWludDhBcnJheShJKSwgQS5IRUFQVTE2ID0gbmV3IFVpbnQxNkFycmF5KEkpLCBBLkhFQVBVMzIgPSBuZXcgVWludDMyQXJyYXkoSSksIEEuSEVBUEYzMiA9IGwgPSBuZXcgRmxvYXQzMkFycmF5KEkpLCBBLkhFQVBGNjQgPSBUID0gbmV3IEZsb2F0NjRBcnJheShJKTsKICAgIH0KICAgIEEuSU5JVElBTF9NRU1PUlk7CiAgICB2YXIgcCwgYiA9IFtdLCBqID0gW10sIFYgPSBbXTsKICAgIGZ1bmN0aW9uICQoKSB7CiAgICAgIGlmIChBLnByZVJ1bikKICAgICAgICBmb3IgKHR5cGVvZiBBLnByZVJ1biA9PSAiZnVuY3Rpb24iICYmIChBLnByZVJ1biA9IFtBLnByZVJ1bl0pOyBBLnByZVJ1bi5sZW5ndGg7ICkKICAgICAgICAgIGdBKEEucHJlUnVuLnNoaWZ0KCkpOwogICAgICBaKGIpOwogICAgfQogICAgZnVuY3Rpb24gQUEoKSB7CiAgICAgIFooaik7CiAgICB9CiAgICBmdW5jdGlvbiBJQSgpIHsKICAgICAgaWYgKEEucG9zdFJ1bikKICAgICAgICBmb3IgKHR5cGVvZiBBLnBvc3RSdW4gPT0gImZ1bmN0aW9uIiAmJiAoQS5wb3N0UnVuID0gW0EucG9zdFJ1bl0pOyBBLnBvc3RSdW4ubGVuZ3RoOyApCiAgICAgICAgICBDQShBLnBvc3RSdW4uc2hpZnQoKSk7CiAgICAgIFooVik7CiAgICB9CiAgICBmdW5jdGlvbiBnQShJKSB7CiAgICAgIGIudW5zaGlmdChJKTsKICAgIH0KICAgIGZ1bmN0aW9uIFFBKEkpIHsKICAgICAgai51bnNoaWZ0KEkpOwogICAgfQogICAgZnVuY3Rpb24gQ0EoSSkgewogICAgICBWLnVuc2hpZnQoSSk7CiAgICB9CiAgICB2YXIgdyA9IDAsIEYgPSBudWxsOwogICAgZnVuY3Rpb24gQkEoSSkgewogICAgICB3KyssIEEubW9uaXRvclJ1bkRlcGVuZGVuY2llcyAmJiBBLm1vbml0b3JSdW5EZXBlbmRlbmNpZXModyk7CiAgICB9CiAgICBmdW5jdGlvbiBFQShJKSB7CiAgICAgIGlmICh3LS0sIEEubW9uaXRvclJ1bkRlcGVuZGVuY2llcyAmJiBBLm1vbml0b3JSdW5EZXBlbmRlbmNpZXModyksIHcgPT0gMCAmJiBGKSB7CiAgICAgICAgdmFyIGcgPSBGOwogICAgICAgIEYgPSBudWxsLCBnKCk7CiAgICAgIH0KICAgIH0KICAgIEEucHJlbG9hZGVkSW1hZ2VzID0ge30sIEEucHJlbG9hZGVkQXVkaW9zID0ge307CiAgICBmdW5jdGlvbiBjKEkpIHsKICAgICAgQS5vbkFib3J0ICYmIEEub25BYm9ydChJKSwgSSArPSAiIiwgayhJKSwgZSA9ICEwLCBJID0gImFib3J0KCIgKyBJICsgIikuIEJ1aWxkIHdpdGggLXMgQVNTRVJUSU9OUz0xIGZvciBtb3JlIGluZm8uIjsKICAgICAgdmFyIGcgPSBuZXcgV2ViQXNzZW1ibHkuUnVudGltZUVycm9yKEkpOwogICAgICB0aHJvdyBTKGcpLCBnOwogICAgfQogICAgdmFyIFAgPSAiZGF0YTphcHBsaWNhdGlvbi9vY3RldC1zdHJlYW07YmFzZTY0LCI7CiAgICBmdW5jdGlvbiBXKEkpIHsKICAgICAgcmV0dXJuIEkuc3RhcnRzV2l0aChQKTsKICAgIH0KICAgIHZhciBoOwogICAgaCA9ICJkYXRhOmFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbTtiYXNlNjQsQUdGemJRRUFBQUFCWWc1Z0NYOS9mMzkvZjM5L2Z3QmdBMzkvZndGL1lBSi9md0YvWUFGL0FYOWdBWDhBWUFSL2YzOS9BWDlnQm45L2YzOS9md0JnQW45L0FHQURmMzkvQUdBQUFHQUlmMzkvZjM5L2YzOEFZQVIvZjM5L0FHQUFBWDlnQm45L2YzOS9md0YvQWcwQ0FXRUJZUUFEQVdFQllnQUJBeVFqQWdFRUJRVUJBd0FCQ0FBR0F3Y0NBUUFHQWdrREFBQUFBQVFLQndJTEJBd0VEUUlFQlFGd0FRRUJCUWNCQVlBQ2dJQUNCZ2tCZndGQmdNVEFBZ3NIS1FvQll3SUFBV1FBRlFGbEFDUUJaZ0FJQVdjQUJBRm9BQ01CYVFBaUFXb0FJUUZyQUNBQmJBRUFDdktWQnlQM0NRRUpmeUFBS0FJRUlRVUNRQUpBQWtBQ1FBSkFJQUFvQWd4QkEzUWlDU0FBS0FJUUlnaHJJZ2RCSUU0RVFDQUZLQUFBSWdKQkdIUWdBa0VJZEVHQWdQd0hjWElnQWtFSWRrR0EvZ054SUFKQkdIWnljaUVESUFBb0FnZ2lBa1VOQVNBRElBSjBJQVV0QUFSQkNDQUNhM1p5SVFNTUFRc2dCMEVCU0FSQURBSUxJQVV0QUFBZ0FDZ0NDQ0lDUVJocUlnWjBJUU1nQWlBSGFrRUlheUlFUVFGSURRQWdCU0VDQTBBZ0FpMEFBU0FHUVFocklnWjBJQU55SVFNZ0JFRUlTaUVISUFKQkFXb2hBaUFFUVFocklRUWdCdzBBQ3dzZ0EwRi9UQVJBSUFBZ0NFRUJhaUlDTmdJUUlBQWdBa0VIY1RZQ0NFRUFJUVFnQWlBSlN3MENJQUFnQUNnQ0FDQUNRUU4yYWpZQ0JBd0NDeUFEUVlDQWdJQUVUd1JBSUFBZ0NFRURhaUlDTmdJUUlBQWdBa0VIY1RZQ0NFRUJJUVlnQWlBSlN3MEVJQUFnQUNnQ0FDQUNRUU4yYWpZQ0JDQURRUjEyUVFGeFFRRnFJUVFNQWdzZ0EwR0FnSUNBQWs4RVFDQUFJQWhCQldvaUFqWUNFQ0FBSUFKQkIzRTJBZ2hCQVNFR0lBSWdDVXNOQkNBQUlBQW9BZ0FnQWtFRGRtbzJBZ1FnQTBFYmRrRURjVUVEYWlFRURBSUxJQU5CZ0lDQWdBRkpEUUFnQUNBSVFRZHFJZ0kyQWhBZ0FDQUNRUWR4TmdJSVFRRWhCaUFDSUFsTERRTWdBQ0FBS0FJQUlBSkJBM1pxTmdJRUlBTkJHWFpCQjNGQkIyb2hCQXdCQzBHQWdJREFBQ0VFUVFRaENrRUFJUUlDUUNBRFFZQ0FnTUFBY1EwQUEwQUNRQ0FDSWdaQkFXb2hBaUFFUVFKSkRRQWdCRUVCZGlJRUlBTnhSUTBCQ3dzZ0JrRUZhaUlLUVNCSERRQWdBVUVBTmdJQUlBQWdBQ2dDRUNJS1FRZHhJZ00yQWdnZ0FDQUtRU0JxSWdJMkFoQWdBaUFBS0FJTVFRTjBJZ2ROQkVBZ0FDQUFLQUlBSUFKQkEzWnFJZ1UyQWdRTEFrQWdCeUFDYXlJR1FTQk9CRUFnQlNnQUFDSUNRUmgwSUFKQkNIUkJnSUQ4QjNGeUlBSkJDSFpCZ1A0RGNTQUNRUmgyY25JaEJDQURSUTBCSUFRZ0EzUWdCUzBBQkVFSUlBTnJkbkloQkF3QkN5QUdRUUZJQkVCQkFDRUVEQUVMSUFVdEFBQWdBMEVZY2lJQ2RDRUVJQU1nQm1wQkNHc2lBMEVCU0EwQUEwQWdCUzBBQVNBQ1FRaHJJZ0owSUFSeUlRUWdBMEVJU2lFR0lBVkJBV29oQlNBRFFRaHJJUU1nQmcwQUN3c2dBQ0FLUVNGcUlnTTJBaEFnQUNBRFFRZHhJZ1UyQWdoQkFTRUdJQU1nQjBzTkF5QUFJQUFvQWdBaUFpQURRUU4yYWpZQ0JDQUVRWDlLRFFNZ0FCQVdJUU1nQUNBRk5nSUlJQUFnQ2tIQkFHb2lCVFlDRUNBRklBZExEUU1nQUNBQ0lBVkJBM1pxTmdJRVFYOGhCQUpBSUFNT0FnTUFCQXRCQVNFRERBSUxJQUFnQWlBSWFrRUZhaUlJTmdJUUlBQWdDRUVIY1NJSE5nSUlJQWdnQ1UwRVFDQUFJQUFvQWdBZ0NFRURkbW9pQlRZQ0JBc0NRQ0FKSUFocklnTkJJRTRFUUNBRktBQUFJZ1pCR0hRZ0JrRUlkRUdBZ1B3SGNYSWdCa0VJZGtHQS9nTnhJQVpCR0haeWNpRUVJQWRGRFFFZ0JDQUhkQ0FGTFFBRVFRZ2dCMnQyY2lFRURBRUxJQU5CQVVnRVFFRUFJUVFNQVFzZ0JTMEFBQ0FIUVJoeUlnWjBJUVFnQXlBSGFrRUlheUlEUVFGSURRQURRQ0FGTFFBQklBWkJDR3NpQm5RZ0JISWhCQ0FEUVFoS0lRY2dCVUVCYWlFRklBTkJDR3NoQXlBSERRQUxDeUFBSUFnZ0Ntb2lCVFlDRUNBQUlBVkJCM0UyQWdoQkFTRUdJQVVnQ1VzTkFpQUFJQUFvQWdBZ0JVRURkbW8yQWdRZ0JFRWNJQUpyZGlJQVFYOUdEUUlnQUVGL0lBcDBRWDl6YWlFRUMwRUFJUU1MSUFFZ0JEWUNBQ0FESVFZTElBWUw4Z0lDQW44QmZnSkFJQUpGRFFBZ0FDQUNhaUlEUVFGcklBRTZBQUFnQUNBQk9nQUFJQUpCQTBrTkFDQURRUUpySUFFNkFBQWdBQ0FCT2dBQklBTkJBMnNnQVRvQUFDQUFJQUU2QUFJZ0FrRUhTUTBBSUFOQkJHc2dBVG9BQUNBQUlBRTZBQU1nQWtFSlNRMEFJQUJCQUNBQWEwRURjU0lFYWlJRElBRkIvd0Z4UVlHQ2hBaHNJZ0UyQWdBZ0F5QUNJQVJyUVh4eElnUnFJZ0pCQkdzZ0FUWUNBQ0FFUVFsSkRRQWdBeUFCTmdJSUlBTWdBVFlDQkNBQ1FRaHJJQUUyQWdBZ0FrRU1heUFCTmdJQUlBUkJHVWtOQUNBRElBRTJBaGdnQXlBQk5nSVVJQU1nQVRZQ0VDQURJQUUyQWd3Z0FrRVFheUFCTmdJQUlBSkJGR3NnQVRZQ0FDQUNRUmhySUFFMkFnQWdBa0VjYXlBQk5nSUFJQVFnQTBFRWNVRVljaUlFYXlJQ1FTQkpEUUFnQWExQ2dZQ0FnQkIrSVFVZ0F5QUVhaUVCQTBBZ0FTQUZOd01ZSUFFZ0JUY0RFQ0FCSUFVM0F3Z2dBU0FGTndNQUlBRkJJR29oQVNBQ1FTQnJJZ0pCSDBzTkFBc0xJQUFMekF3QkIzOENRQ0FBUlEwQUlBQkJDR3NpQXlBQVFRUnJLQUlBSWdGQmVIRWlBR29oQlFKQUlBRkJBWEVOQUNBQlFRTnhSUTBCSUFNZ0F5Z0NBQ0lCYXlJRFFaakFBQ2dDQUVrTkFTQUFJQUZxSVFBZ0EwR2N3QUFvQWdCSEJFQWdBVUgvQVUwRVFDQURLQUlJSWdJZ0FVRURkaUlFUVFOMFFiREFBR3BHR2lBQ0lBTW9BZ3dpQVVZRVFFR0l3QUJCaU1BQUtBSUFRWDRnQkhkeE5nSUFEQU1MSUFJZ0FUWUNEQ0FCSUFJMkFnZ01BZ3NnQXlnQ0dDRUdBa0FnQXlBREtBSU1JZ0ZIQkVBZ0F5Z0NDQ0lDSUFFMkFnd2dBU0FDTmdJSURBRUxBa0FnQTBFVWFpSUNLQUlBSWdRTkFDQURRUkJxSWdJb0FnQWlCQTBBUVFBaEFRd0JDd05BSUFJaEJ5QUVJZ0ZCRkdvaUFpZ0NBQ0lFRFFBZ0FVRVFhaUVDSUFFb0FoQWlCQTBBQ3lBSFFRQTJBZ0FMSUFaRkRRRUNRQ0FESUFNb0Fod2lBa0VDZEVHNHdnQnFJZ1FvQWdCR0JFQWdCQ0FCTmdJQUlBRU5BVUdNd0FCQmpNQUFLQUlBUVg0Z0FuZHhOZ0lBREFNTElBWkJFRUVVSUFZb0FoQWdBMFliYWlBQk5nSUFJQUZGRFFJTElBRWdCallDR0NBREtBSVFJZ0lFUUNBQklBSTJBaEFnQWlBQk5nSVlDeUFES0FJVUlnSkZEUUVnQVNBQ05nSVVJQUlnQVRZQ0dBd0JDeUFGS0FJRUlnRkJBM0ZCQTBjTkFFR1F3QUFnQURZQ0FDQUZJQUZCZm5FMkFnUWdBeUFBUVFGeU5nSUVJQUFnQTJvZ0FEWUNBQThMSUFNZ0JVOE5BQ0FGS0FJRUlnRkJBWEZGRFFBQ1FDQUJRUUp4UlFSQUlBVkJvTUFBS0FJQVJnUkFRYURBQUNBRE5nSUFRWlRBQUVHVXdBQW9BZ0FnQUdvaUFEWUNBQ0FESUFCQkFYSTJBZ1FnQTBHY3dBQW9BZ0JIRFFOQmtNQUFRUUEyQWdCQm5NQUFRUUEyQWdBUEN5QUZRWnpBQUNnQ0FFWUVRRUdjd0FBZ0F6WUNBRUdRd0FCQmtNQUFLQUlBSUFCcUlnQTJBZ0FnQXlBQVFRRnlOZ0lFSUFBZ0Eyb2dBRFlDQUE4TElBRkJlSEVnQUdvaEFBSkFJQUZCL3dGTkJFQWdCU2dDQ0NJQ0lBRkJBM1lpQkVFRGRFR3d3QUJxUmhvZ0FpQUZLQUlNSWdGR0JFQkJpTUFBUVlqQUFDZ0NBRUYrSUFSM2NUWUNBQXdDQ3lBQ0lBRTJBZ3dnQVNBQ05nSUlEQUVMSUFVb0FoZ2hCZ0pBSUFVZ0JTZ0NEQ0lCUndSQUlBVW9BZ2dpQWtHWXdBQW9BZ0JKR2lBQ0lBRTJBZ3dnQVNBQ05nSUlEQUVMQWtBZ0JVRVVhaUlDS0FJQUlnUU5BQ0FGUVJCcUlnSW9BZ0FpQkEwQVFRQWhBUXdCQ3dOQUlBSWhCeUFFSWdGQkZHb2lBaWdDQUNJRURRQWdBVUVRYWlFQ0lBRW9BaEFpQkEwQUN5QUhRUUEyQWdBTElBWkZEUUFDUUNBRklBVW9BaHdpQWtFQ2RFRzR3Z0JxSWdRb0FnQkdCRUFnQkNBQk5nSUFJQUVOQVVHTXdBQkJqTUFBS0FJQVFYNGdBbmR4TmdJQURBSUxJQVpCRUVFVUlBWW9BaEFnQlVZYmFpQUJOZ0lBSUFGRkRRRUxJQUVnQmpZQ0dDQUZLQUlRSWdJRVFDQUJJQUkyQWhBZ0FpQUJOZ0lZQ3lBRktBSVVJZ0pGRFFBZ0FTQUNOZ0lVSUFJZ0FUWUNHQXNnQXlBQVFRRnlOZ0lFSUFBZ0Eyb2dBRFlDQUNBRFFaekFBQ2dDQUVjTkFVR1F3QUFnQURZQ0FBOExJQVVnQVVGK2NUWUNCQ0FESUFCQkFYSTJBZ1FnQUNBRGFpQUFOZ0lBQ3lBQVFmOEJUUVJBSUFCQkEzWWlBVUVEZEVHd3dBQnFJUUFDZjBHSXdBQW9BZ0FpQWtFQklBRjBJZ0Z4UlFSQVFZakFBQ0FCSUFKeU5nSUFJQUFNQVFzZ0FDZ0NDQXNoQWlBQUlBTTJBZ2dnQWlBRE5nSU1JQU1nQURZQ0RDQURJQUkyQWdnUEMwRWZJUUlnQTBJQU53SVFJQUJCLy8vL0IwMEVRQ0FBUVFoMklnRWdBVUdBL2o5cVFSQjJRUWh4SWdGMElnSWdBa0dBNEI5cVFSQjJRUVJ4SWdKMElnUWdCRUdBZ0E5cVFSQjJRUUp4SWdSMFFROTJJQUVnQW5JZ0JISnJJZ0ZCQVhRZ0FDQUJRUlZxZGtFQmNYSkJIR29oQWdzZ0F5QUNOZ0ljSUFKQkFuUkJ1TUlBYWlFQkFrQUNRQUpBUVl6QUFDZ0NBQ0lFUVFFZ0FuUWlCM0ZGQkVCQmpNQUFJQVFnQjNJMkFnQWdBU0FETmdJQUlBTWdBVFlDR0F3QkN5QUFRUUJCR1NBQ1FRRjJheUFDUVI5R0czUWhBaUFCS0FJQUlRRURRQ0FCSWdRb0FnUkJlSEVnQUVZTkFpQUNRUjEySVFFZ0FrRUJkQ0VDSUFRZ0FVRUVjV29pQjBFUWFpZ0NBQ0lCRFFBTElBY2dBellDRUNBRElBUTJBaGdMSUFNZ0F6WUNEQ0FESUFNMkFnZ01BUXNnQkNnQ0NDSUFJQU0yQWd3Z0JDQUROZ0lJSUFOQkFEWUNHQ0FESUFRMkFnd2dBeUFBTmdJSUMwR293QUJCcU1BQUtBSUFRUUZySWdCQmZ5QUFHellDQUFzTDJBc0JGSDhnQVVHUVBXb3RBQUJCREd3aUIwSEVQR29vQWdBaEJTQUhRY0E4YWlnQ0FDQUJRWUE4YWkwQUFDSUdkQ0VFSUFKRkJFQWdBQ0FBS0FJQUlBUnNOZ0lBQ3lBRklBWjBJUUVDUUFKQUlBTkJuUDhEY1FSQVFRRWhBeUFBSUFBb0FqZ2dBV3dpQlNBQUtBSWtJQUZzSWcxcUlnd2dCMEhJUEdvb0FnQWdCblFpQWlBQUtBSThiQ0lHUVFGMUlBQW9BaWdnQW13aUNtb2lEMnNpQnpZQ1BDQUFJQTBnQldzaUJTQUtRUUYxSUFacklnMXJJZ1kyQWpnZ0FDZ0NOQ0VLSUFBZ0JTQU5haUlGTmdJMElBQWdBQ2dDTENBRWJDSUlJQUFvQWd3Z0JHd2lEbW9pRUNBQUtBSWdJQUZzSWdrZ0FTQUtiQ0lLUVFGMWFpSVNheUlOTmdJc0lBQWdEaUFJYXlJSUlBbEJBWFVnQ21zaURtc2lDallDS0NBQUlBZ2dEbW9pQ0RZQ0pDQUFJQUFvQWh3Z0FXd2lEaUFBS0FJSUlBRnNJZ2xxSWhRZ0FDZ0NFQ0FDYkNJTElBQW9BakFnQW13aUVVRUJkV29pRldzaUFqWUNIQ0FBS0FJWUlSTWdBQ0FKSUE1cklna2dDMEVCZFNBUmF5SUxheUlPTmdJWUlBQW9BaFFoRVNBQUlBa2dDMm9pQ1RZQ0ZDQUFJQVFnRVd3aUJDQUFLQUlBSWd0cUloRWdBQ2dDQkNBQmJDSVdJQUVnRTJ3aUUwRUJkV29pRjJzaUFUWUNEQ0FBSUFzZ0JHc2lDeUFXUVFGMUlCTnJJaE5ySWdRMkFnZ2dBQ0FMSUJOcUlnczJBZ1FnQUNBUUlCSnFJaEFnRVNBWGFpSVNha0VnYWlJUklCUWdGV29pRkNBTUlBOXFJZ3hCQVhWcUlnOXJRUVoxSWhVMkFqQWdBQ0FTSUJCclFTQnFJaEFnRkVFQmRTQU1heUlNYTBFR2RTSVNOZ0lnSUFBZ0RDQVFha0VHZFNJTU5nSVFJQUFnRHlBUmFrRUdkU0lQTmdJQUlBOUJnQVJxUWY4SFN3MENJQXhCZ0FScVFmOEhTdzBDSUJKQmdBUnFRZjhIU3cwQ0lCVkJnQVJxUWY4SFN3MENJQUFnQ0NBTGFrRWdhaUlNSUFWQkFYVWdDV29pRDJ0QkJuVWlFRFlDTkNBQUlBc2dDR3RCSUdvaUNDQUpRUUYxSUFWcklnVnJRUVoxSWdrMkFpUWdBQ0FGSUFocVFRWjFJZ1UyQWhRZ0FDQU1JQTlxUVFaMUlnZzJBZ1FnQ0VHQUJHcEIvd2RMRFFJZ0JVR0FCR3BCL3dkTERRSWdDVUdBQkdwQi93ZExEUUlnRUVHQUJHcEIvd2RMRFFJZ0FDQUVJQXBxUVNCcUlnVWdCa0VCZFNBT2FpSUlhMEVHZFNJSk5nSTRJQUFnQkNBS2EwRWdhaUlFSUE1QkFYVWdCbXNpQm10QkJuVWlDallDS0NBQUlBUWdCbXBCQm5VaUJEWUNHQ0FBSUFVZ0NHcEJCblVpQmpZQ0NDQUdRWUFFYWtIL0Iwc05BaUFFUVlBRWFrSC9CMHNOQWlBS1FZQUVha0gvQjBzTkFpQUpRWUFFYWtIL0Iwc05BaUFBSUFFZ0RXcEJJR29pQkNBSFFRRjFJQUpxSWdaclFRWjFJZ1UyQWp3Z0FDQUJJQTFyUVNCcUlnRWdBa0VCZFNBSGF5SUNhMEVHZFNJSE5nSXNJQUFnQVNBQ2FrRUdkU0lCTmdJY0lBQWdCQ0FHYWtFR2RTSUFOZ0lNSUFCQmdBUnFRZjhIU3cwQ0lBRkJnQVJxUWY4SFN3MENJQWRCZ0FScVFmOEhTdzBDSUFWQmdBUnFRZjhIVFEwQkRBSUxJQU5CNGdCeFJRUkFRUUVoQXlBQUtBSUFRU0JxUVFaMUlnRkJnQVJxUWY4SFN3MENJQUFnQVRZQ09DQUFJQUUyQWp3Z0FDQUJOZ0kwSUFBZ0FUWUNNQ0FBSUFFMkFpd2dBQ0FCTmdJb0lBQWdBVFlDSkNBQUlBRTJBaUFnQUNBQk5nSWNJQUFnQVRZQ0dDQUFJQUUyQWhRZ0FDQUJOZ0lRSUFBZ0FUWUNEQ0FBSUFFMkFnZ2dBQ0FCTmdJRUlBQWdBVFlDQUF3QkMwRUJJUU1nQUNBQUtBSUVJQUZzSWdVZ0FDZ0NHQ0FCYkNJTlFRRjFhaUlDSUFBb0FnQWlCeUFBS0FJVUlBUnNJZ1pxSWdScVFTQnFRUVoxSWdFMkFqQWdBQ0FFSUFKclFTQnFRUVoxSWdJMkFnd2dBQ0FGUVFGMUlBMXJJZ1VnQnlBR2EycEJJR3BCQm5VaUJEWUNCQ0FBSUFFMkFnQWdBQ0FCTmdJZ0lBQWdCRFlDTkNBQUlBRTJBaEFnQUNBRU5nSWtJQUFnQkRZQ0ZDQUFJQUkyQWp3Z0FDQUhJQVVnQm1wclFTQnFRUVoxSWdjMkFnZ2dBQ0FITmdJNElBQWdCellDS0NBQUlBYzJBaGdnQUNBQ05nSXNJQUFnQWpZQ0hDQUJRWUFFYWtIL0Iwc05BU0FFUVlBRWFrSC9CMHNOQVNBSFFZQUVha0gvQjBzTkFTQUNRWUFFYWtIL0Iwc05BUXRCQUNFREN5QURDL29hQVJGL0l3QkJnQUZySWcwa0FDQUFLQUlFSVFRQ2Z3SkFBbjhDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FBS0FJTUloSkJBM1FpRUNBQUtBSVFJZ2xySWdWQklFNEVRQ0FFS0FBQUlnVkJHSFFnQlVFSWRFR0FnUHdIY1hJZ0JVRUlka0dBL2dOeElBVkJHSFp5Y2lFR0lBQW9BZ2dpQlVVTkFTQUdJQVYwSUFRdEFBUkJDQ0FGYTNaeUlRWU1BUXNnQlVFQlNBMEJJQVF0QUFBZ0FDZ0NDQ0lLUVJocUlnZDBJUVlnQlNBS2FrRUlheUlGUVFGSURRQURRQ0FFTFFBQklBZEJDR3NpQjNRZ0JuSWhCaUFGUVFoS0lRb2dCRUVCYWlFRUlBVkJDR3NoQlNBS0RRQUxDeUFDUVFKUERRTWdCa0VBU0FSQVFRRWhDd3dPQ3lBR1FSbDJRZjRBY1VHQUNHb2dCa0dBZ0lEZ0FFOE5EQm9nQmtFVmRrSCtEM0ZCd0FocUlBWkJnSUNBQ0U4TkRCb2dCa0dBZ0lBQlNRUkFJQVpCRUhZaEJBd0NDeUFHUVJGMlFmNy9BWEZCa0FscURBd0xRUUFoQkNBQ1FRSlBEUUVMSUFSQkFYUkJrQXBxREFvTElBSkJCRThOQVF3SUN5QUNRUVJKRFFZZ0FrRUlUdzBDSUFaQi8vLy8vd0ZORFFFZ0JrRVpka0grQUhGQjBBMXFEQWdMSUFKQkNFOE5BZ3NnQmtFVmRrSCtEM0ZCMEE1cURBWUxJQUpCRVVrTkFTQUdRZi8vLy84QlRRMENJQVpCSEhaQkRuRkIwQkZxREFVTElBSkJFRXNOQVFzZ0JrRVpka0grQUhGQjBCQnFEQU1MSUFaQkYzWkIvZ054UWVBUmFnd0NDeUFHUVg5TUJFQkJBa0dpRUNBR1FZQ0FnSUFFY1JzaEN3d0RDeUFHUVJsMlFmNEFjVUhRQ21vZ0JrR0FnSUNBQVU4TkFSb2dCa0dBZ0lBUVNRMEFJQVpCRm5aQi9nZHhRWkFMYWd3QkN5QUdRUkYyUWY3L0FYRkIwQXRxQ3k4QkFDSUxEUUJCQVF3QkMwRUJJQU1nQzBFTGRpSU9TUTBBR2tFZ0lBdEJIM0VpQW1zaENFRUFJUVVDUUNBTFFZQVFTUTBBSUFZZ0MzUWhCQUpBSUF0QkJYWkJQM0VpRDBVRVFFRUFJUWNNQVFzQ1FDQUlJQTlQRFFBZ0FDQUNJQWxxSWdrMkFoQWdBQ0FKUVFkeElnSTJBZ2hCQVNBSklCQkxEUU1hSUFBZ0FDZ0NBQ0FKUVFOMmFpSUZOZ0lFUVNBaENDQVFJQWxySWdwQklFNEVRQ0FGS0FBQUlnUkJHSFFnQkVFSWRFR0FnUHdIY1hJZ0JFRUlka0dBL2dOeElBUkJHSFp5Y2lFRUlBSkZEUUVnQkNBQ2RDQUZMUUFFUVFnZ0FtdDJjaUVFREFFTElBcEJBVWdFUUVFQUlRUU1BUXNnQlMwQUFDQUNRUmh5SWdkMElRUWdBaUFLYWtFSWF5SUdRUUZJRFFBRFFDQUZMUUFCSUFkQkNHc2lCM1FnQkhJaEJDQUdRUWhLSVFJZ0JVRUJhaUVGSUFaQkNHc2hCaUFDRFFBTEMwRUJJQTlCQVd0MElRVWdCRUVnSUE5cmRpRUNRUUFoQndOQUlBMUJRR3NnQjBFQ2RHcEJmMEVCSUFJZ0JYRWJOZ0lBSUFkQkFXb2hCeUFGUVFGTElRb2dCVUVCZGlFRklBb05BQXNnQ0NBUGF5RUlJQVFnRDNRaEJBc2dCeUFPU1FSQUlBOUJBMGtpRkNBTFFmK3ZBVXR4SVFvRFFBSkFJQWhCRDBzTkFDQUFJQWtnQ0d0QklHb2lDVFlDRUNBQUlBbEJCM0VpQWpZQ0NFRUJJQkpCQTNRaUJDQUpTUTBFR2lBQUlBQW9BZ0FnQ1VFRGRtb2lCVFlDQkNBRUlBbHJJZ3hCSUU0RVFDQUZLQUFBSWdSQkdIUWdCRUVJZEVHQWdQd0hjWElnQkVFSWRrR0EvZ054SUFSQkdIWnljaUVFUVNBaENDQUNSUTBCSUFRZ0FuUWdCUzBBQkVFSUlBSnJkbkloQkF3QkMwRUJJQXhCQVVnTkJCb2dCUzBBQUNBQ1FSaHlJZ3QwSVFSQklDRUlJQUlnREdwQkNHc2lCa0VCU0EwQUEwQWdCUzBBQVNBTFFRaHJJZ3QwSUFSeUlRUWdCa0VJU2lFQ0lBVkJBV29oQlNBR1FRaHJJUVlnQWcwQUN3dEJBQ0VGQWtBQ1FBSi9Ba0FnQkVFQVNBMEFRUUVoQlNBRVFmLy8vLzhEU3cwQVFRSWhCU0FFUWYvLy8vOEJTdzBBUVFNaEJTQUVRZi8vLy84QVN3MEFRUVFoQlNBRVFmLy8vejlMRFFCQkJTRUZJQVJCLy8vL0gwc05BRUVHSVFVZ0JFSC8vLzhQU3cwQVFRY2hCU0FFUWYvLy93ZExEUUJCQ0NFRklBUkIvLy8vQTBzTkFFRUpJUVVnQkVILy8vOEJTdzBBUVFvaEJTQUVRZi8vL3dCTERRQkJDeUVGSUFSQi8vOC9TdzBBUVF3aEJTQUVRZi8vSDBzTkFFRU5JUVVnQkVILy93OUxEUUFDZndKQUlBUkIvLzhIVFFSQUlBUkJnSUI4Y1VHQWdBUkdEUUZCQVF3S0N5QUtRUVFnQ2hzaERDQUlRUTlySVFoQkRpRUZJQVJCRDNRTUFRc2dDa0VCSUFvYklRb2dDRUVRYXlFSVFRd2hERUVQSVFVZ0JFRVFkQXNoQkNBRklBcDBJUXNnQ2tVTUFRc2dCU0FLZENFTFFRRWhFeUFJSUFWQkFXb2lBbXNoQ0NBRUlBSjBJUVFnQ2tVTkFTQUtJUXhCQUFzaEV3SkFJQWdnREU4RVFDQUVJUVVNQVFzZ0FDQUpJQWhyUVNCcUlnazJBaEFnQUNBSlFRZHhJZ1kyQWdoQkFTQVNRUU4wSUFsSkRRWWFJQUFnQUNnQ0FDQUpRUU4yYWlJRU5nSUVJQkFnQ1dzaUVVRWdUZ1JBSUFRb0FBQWlBa0VZZENBQ1FRaDBRWUNBL0FkeGNpQUNRUWgyUVlEK0EzRWdBa0VZZG5KeUlRVkJJQ0VJSUFaRkRRRWdCU0FHZENBRUxRQUVRUWdnQm10MmNpRUZEQUVMUVNBaENDQVJRUUZJQkVCQkFDRUZEQUVMSUFRdEFBQWdCa0VZY2lJQ2RDRUZJQVlnRVdwQkNHc2lCa0VCU0EwQUEwQWdCQzBBQVNBQ1FRaHJJZ0owSUFWeUlRVWdCa0VJU2lFUklBUkJBV29oQkNBR1FRaHJJUVlnRVEwQUN3c2dDQ0FNYXlFSUlBVWdESFFoQkNBRlFTQWdER3QySUF0cUlRc01BUXRCQUNFS0N5QU5RVUJySUFkQkFuUnFRUUFnQzBFQ2FpQUxJQWNnRDBZYklBc2dGQnNpQlVFQ2FrRUJkaUlDYXlBQ0lBVkJBWEViTmdJQVFRRWdDaUFUR3lJRklBVkJCa2tnQWtFRElBVkJBV3QwU25GcUlRb2dCMEVCYWlJSElBNUhEUUFMQzBFQUlRY2dBeUFPU3dSQUlBaEJDRTBFUUNBSklBaHJJUUpCSUNFSUlBQWdBa0VnYWlJSk5nSVFJQUFnQ1VFSGNUWUNDRUVCSUFrZ0VFc05BeG9nQUNBQUtBSUFJQWxCQTNacU5nSUVJQUFRRmlFRUN3SkFBa0FDZndKQUlBTkJCRWNFUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUE1QkFXc09EZzRBQVFJREJBVUdCd2dKQ2dzTUVBc2dCRUVhZGtIZ0Vtb01EZ3NnQkVFYWRrR2dFMm9NRFFzZ0JFRWJka0hnRTJvTURBc2dCRUViZGtHQUZHb01Dd3NnQkVFYWRrR2dGR29NQ2dzZ0JFRWFka0hnRkdvTUNRc2dCRUVhZGtHZ0ZXb01DQXNnQkVFYWRrSGdGV29NQndzZ0JFRWJka0dnRm1vTUJnc2dCRUVjZGtIQUZtb01CUXNnQkVFY2RrSFFGbW9NQkFzZ0JFRWRka0hnRm1vTUF3c2dCRUVlZGtIb0Ztb01BZ3NnQkVFQVNBUkFRUUVoQlF3RUMwRVJJUVVnRGtFRFJnMERRUkloQlNBRVFmLy8vLzhEU3cwRFFTSWhCU0FPUVFKR0RRTkJNMEVqSUFSQmdJQ0FnQUpKR3lFRkRBTUxJQVJCRjNaQndCSnFJZ0lnQWlBRVFSdDJJZ0pCb0JKcUlBSkJBVVliSUFSQmdJQ0F3QUJKR3dzdEFBQWlCUTBCUVFFTUJBdEJBVUVSSUFSQmYwb2JJUVVMSUFWQkJIWWhCeUFJSUFWQkQzRWlBbXNoQ0NBRUlBSjBJUVFMSUE1QkFXc2lBd1JBSUJKQkEzUWhEMEVBSVFvRFFBSkFJQWNFUUFKQUlBaEJDa3NOQUNBQUlBa2dDR3RCSUdvaUNUWUNFQ0FBSUFsQkIzRWlBallDQ0VFQklBa2dEMHNOQmhvZ0FDQUFLQUlBSUFsQkEzWnFJZ1UyQWdRZ0VDQUpheUlNUVNCT0JFQWdCU2dBQUNJRVFSaDBJQVJCQ0hSQmdJRDhCM0Z5SUFSQkNIWkJnUDREY1NBRVFSaDJjbkloQkVFZ0lRZ2dBa1VOQVNBRUlBSjBJQVV0QUFSQkNDQUNhM1p5SVFRTUFRdEJJQ0VJSUF4QkFVZ0VRRUVBSVFRTUFRc2dCUzBBQUNBQ1FSaHlJZ3QwSVFRZ0FpQU1ha0VJYXlJR1FRRklEUUFEUUNBRkxRQUJJQXRCQ0dzaUMzUWdCSEloQkNBR1FRaEtJUUlnQlVFQmFpRUZJQVpCQ0dzaEJpQUNEUUFMQ3dKQUFuOENRQUpBQWtBQ1FBSkFBa0FDUUNBSFFRRnJEZ1lHQUFFQ0F3UUZDeUFFUVI1MlFlNFdhZ3dHQ3lBRVFSNTJRZklXYWd3RkN5QUVRUjEyUWZZV2Fnd0VDeUFFUVIxMlFmNFdhZ3dEQ3lBRVFSMTJRWVlYYWd3Q0N3Si9RZk1BSUFSQkdYWkI4QUJ4YXlBRVFZQ0FnSUFDVHcwQUdrSDBBQ0FFUWYvLy8vOEFTdzBBR2tHRkFTQUVRZi8vL3o5TERRQWFRWllCSUFSQi8vLy9IMHNOQUJwQnB3RWdCRUgvLy84UFN3MEFHa0c0QVNBRVFmLy8vd2RMRFFBYVFja0JJQVJCLy8vL0Ewc05BQnBCMmdFZ0JFSC8vLzhCU3cwQUdrRUFRZXNCSUFSQmdJQ0FBVWtiQ3lJRlFRUjJJQWRORFFKQkFRd0lDeUFFUVI5MlFld1dhZ3N0QUFBaEJRdEJBU0FGUlEwRkdpQU5JQXBCQW5ScUlBVkJCSFlpQWtFQmFqWUNBQ0FISUFKcklRY2dDQ0FGUVE5eElnSnJJUWdnQkNBQ2RDRUVEQUVMSUEwZ0NrRUNkR3BCQVRZQ0FFRUFJUWNMSUFwQkFXb2lDaUFEUncwQUN5QUJJQWRCQW5ScUlBMUJRR3NnQTBFQ2RHb29BZ0EyQWdBZ0RrRUNheUVDUVFFZ0IzUWhCU0FEUVFGeEJIOGdBU0FOSUFKQkFuUWlBMm9vQWdBZ0Iyb2lCMEVDZEdvZ0RVRkFheUFEYWlnQ0FEWUNBRUVCSUFkMElBVnlJUVVnRGtFRGF3VWdBZ3NoQkNBQ1JRMEJBMEFnQVNBTklBUkJBblFpQTJvb0FnQWdCMm9pQWtFQ2RHb2dEVUZBYXlJTUlBTnFLQUlBTmdJQUlBRWdEU0FFUVFGcklnTkJBblFpQ21vb0FnQWdBbW9pQjBFQ2RHb2dDaUFNYWlnQ0FEWUNBRUVCSUFKMElBVnlRUUVnQjNSeUlRVWdCRUVDYXlFRUlBTU5BQXNNQVFzZ0FTQUhRUUowYWlBTktBSkFOZ0lBUVFFZ0IzUWhCUXNnQUNBQUtBSVFJQWhyUVNCcUlnRTJBaEFnQUNBQlFRZHhOZ0lJUVFFZ0FTQUFLQUlNUVFOMFN3MEFHaUFBSUFBb0FnQWdBVUVEZG1vMkFnUWdCVUVRZENBT1FRUjBjZ3NoQkNBTlFZQUJhaVFBSUFRTGd3UUJBMzhnQWtHQUJFOEVRQ0FBSUFFZ0FoQUJHaUFBRHdzZ0FDQUNhaUVEQWtBZ0FDQUJjMEVEY1VVRVFBSkFJQUJCQTNGRkJFQWdBQ0VDREFFTElBSkJBVWdFUUNBQUlRSU1BUXNnQUNFQ0EwQWdBaUFCTFFBQU9nQUFJQUZCQVdvaEFTQUNRUUZxSWdKQkEzRkZEUUVnQWlBRFNRMEFDd3NDUUNBRFFYeHhJZ1JCd0FCSkRRQWdBaUFFUVVCcUlnVkxEUUFEUUNBQ0lBRW9BZ0EyQWdBZ0FpQUJLQUlFTmdJRUlBSWdBU2dDQ0RZQ0NDQUNJQUVvQWd3MkFnd2dBaUFCS0FJUU5nSVFJQUlnQVNnQ0ZEWUNGQ0FDSUFFb0FoZzJBaGdnQWlBQktBSWNOZ0ljSUFJZ0FTZ0NJRFlDSUNBQ0lBRW9BaVEyQWlRZ0FpQUJLQUlvTmdJb0lBSWdBU2dDTERZQ0xDQUNJQUVvQWpBMkFqQWdBaUFCS0FJME5nSTBJQUlnQVNnQ09EWUNPQ0FDSUFFb0FqdzJBandnQVVGQWF5RUJJQUpCUUdzaUFpQUZUUTBBQ3dzZ0FpQUVUdzBCQTBBZ0FpQUJLQUlBTmdJQUlBRkJCR29oQVNBQ1FRUnFJZ0lnQkVrTkFBc01BUXNnQTBFRVNRUkFJQUFoQWd3QkN5QUFJQU5CQkdzaUJFc0VRQ0FBSVFJTUFRc2dBQ0VDQTBBZ0FpQUJMUUFBT2dBQUlBSWdBUzBBQVRvQUFTQUNJQUV0QUFJNkFBSWdBaUFCTFFBRE9nQURJQUZCQkdvaEFTQUNRUVJxSWdJZ0JFME5BQXNMSUFJZ0Ewa0VRQU5BSUFJZ0FTMEFBRG9BQUNBQlFRRnFJUUVnQWtFQmFpSUNJQU5IRFFBTEN5QUFDNEF2QVF0L0l3QkJFR3NpQ3lRQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FBUWZRQlRRUkFRWWpBQUNnQ0FDSUhRUkFnQUVFTGFrRjRjU0FBUVF0Skd5SUdRUU4ySWdKMklnRkJBM0VFUUNBQlFYOXpRUUZ4SUFKcUlnUkJBM1FpQVVHNHdBQnFLQUlBSWdOQkNHb2hBQUpBSUFNb0FnZ2lBaUFCUWJEQUFHb2lBVVlFUUVHSXdBQWdCMEYrSUFSM2NUWUNBQXdCQ3lBQ0lBRTJBZ3dnQVNBQ05nSUlDeUFESUFSQkEzUWlBVUVEY2pZQ0JDQUJJQU5xSWdFZ0FTZ0NCRUVCY2pZQ0JBd01DeUFHUVpEQUFDZ0NBQ0lLVFEwQklBRUVRQUpBUVFJZ0FuUWlBRUVBSUFCcmNpQUJJQUowY1NJQVFRQWdBR3R4UVFGcklnQWdBRUVNZGtFUWNTSUNkaUlCUVFWMlFRaHhJZ0FnQW5JZ0FTQUFkaUlCUVFKMlFRUnhJZ0J5SUFFZ0FIWWlBVUVCZGtFQ2NTSUFjaUFCSUFCMklnRkJBWFpCQVhFaUFISWdBU0FBZG1vaUJFRURkQ0lBUWJqQUFHb29BZ0FpQXlnQ0NDSUJJQUJCc01BQWFpSUFSZ1JBUVlqQUFDQUhRWDRnQkhkeElnYzJBZ0FNQVFzZ0FTQUFOZ0lNSUFBZ0FUWUNDQXNnQTBFSWFpRUFJQU1nQmtFRGNqWUNCQ0FESUFacUlnSWdCRUVEZENJQklBWnJJZ1JCQVhJMkFnUWdBU0FEYWlBRU5nSUFJQW9FUUNBS1FRTjJJZ0ZCQTNSQnNNQUFhaUVGUVp6QUFDZ0NBQ0VEQW44Z0IwRUJJQUYwSWdGeFJRUkFRWWpBQUNBQklBZHlOZ0lBSUFVTUFRc2dCU2dDQ0FzaEFTQUZJQU0yQWdnZ0FTQUROZ0lNSUFNZ0JUWUNEQ0FESUFFMkFnZ0xRWnpBQUNBQ05nSUFRWkRBQUNBRU5nSUFEQXdMUVl6QUFDZ0NBQ0lKUlEwQklBbEJBQ0FKYTNGQkFXc2lBQ0FBUVF4MlFSQnhJZ0oySWdGQkJYWkJDSEVpQUNBQ2NpQUJJQUIySWdGQkFuWkJCSEVpQUhJZ0FTQUFkaUlCUVFGMlFRSnhJZ0J5SUFFZ0FIWWlBVUVCZGtFQmNTSUFjaUFCSUFCMmFrRUNkRUc0d2dCcUtBSUFJZ0VvQWdSQmVIRWdCbXNoQkNBQklRSURRQUpBSUFJb0FoQWlBRVVFUUNBQ0tBSVVJZ0JGRFFFTElBQW9BZ1JCZUhFZ0Jtc2lBaUFFSUFJZ0JFa2lBaHNoQkNBQUlBRWdBaHNoQVNBQUlRSU1BUXNMSUFFb0FoZ2hDQ0FCSUFFb0Fnd2lBMGNFUUNBQktBSUlJZ0JCbU1BQUtBSUFTUm9nQUNBRE5nSU1JQU1nQURZQ0NBd0xDeUFCUVJScUlnSW9BZ0FpQUVVRVFDQUJLQUlRSWdCRkRRTWdBVUVRYWlFQ0N3TkFJQUloQlNBQUlnTkJGR29pQWlnQ0FDSUFEUUFnQTBFUWFpRUNJQU1vQWhBaUFBMEFDeUFGUVFBMkFnQU1DZ3RCZnlFR0lBQkJ2MzlMRFFBZ0FFRUxhaUlBUVhoeElRWkJqTUFBS0FJQUlnbEZEUUJCQUNBR2F5RUVBa0FDUUFKQUFuOUJBQ0FHUVlBQ1NRMEFHa0VmSUFaQi8vLy9CMHNOQUJvZ0FFRUlkaUlBSUFCQmdQNC9ha0VRZGtFSWNTSUNkQ0lBSUFCQmdPQWZha0VRZGtFRWNTSUJkQ0lBSUFCQmdJQVBha0VRZGtFQ2NTSUFkRUVQZGlBQklBSnlJQUJ5YXlJQVFRRjBJQVlnQUVFVmFuWkJBWEZ5UVJ4cUN5SUhRUUowUWJqQ0FHb29BZ0FpQWtVRVFFRUFJUUFNQVF0QkFDRUFJQVpCQUVFWklBZEJBWFpySUFkQkgwWWJkQ0VCQTBBQ1FDQUNLQUlFUVhoeElBWnJJZ1VnQkU4TkFDQUNJUU1nQlNJRURRQkJBQ0VFSUFJaEFBd0RDeUFBSUFJb0FoUWlCU0FGSUFJZ0FVRWRka0VFY1dvb0FoQWlBa1liSUFBZ0JSc2hBQ0FCUVFGMElRRWdBZzBBQ3dzZ0FDQURja1VFUUVFQUlRTkJBaUFIZENJQVFRQWdBR3R5SUFseElnQkZEUU1nQUVFQUlBQnJjVUVCYXlJQUlBQkJESFpCRUhFaUFuWWlBVUVGZGtFSWNTSUFJQUp5SUFFZ0FIWWlBVUVDZGtFRWNTSUFjaUFCSUFCMklnRkJBWFpCQW5FaUFISWdBU0FBZGlJQlFRRjJRUUZ4SWdCeUlBRWdBSFpxUVFKMFFiakNBR29vQWdBaEFBc2dBRVVOQVFzRFFDQUFLQUlFUVhoeElBWnJJZ0VnQkVraEFpQUJJQVFnQWhzaEJDQUFJQU1nQWhzaEF5QUFLQUlRSWdFRWZ5QUJCU0FBS0FJVUN5SUFEUUFMQ3lBRFJRMEFJQVJCa01BQUtBSUFJQVpyVHcwQUlBTW9BaGdoQnlBRElBTW9BZ3dpQVVjRVFDQURLQUlJSWdCQm1NQUFLQUlBU1JvZ0FDQUJOZ0lNSUFFZ0FEWUNDQXdKQ3lBRFFSUnFJZ0lvQWdBaUFFVUVRQ0FES0FJUUlnQkZEUU1nQTBFUWFpRUNDd05BSUFJaEJTQUFJZ0ZCRkdvaUFpZ0NBQ0lBRFFBZ0FVRVFhaUVDSUFFb0FoQWlBQTBBQ3lBRlFRQTJBZ0FNQ0FzZ0JrR1F3QUFvQWdBaUFrMEVRRUdjd0FBb0FnQWhCQUpBSUFJZ0Jtc2lBVUVRVHdSQVFaREFBQ0FCTmdJQVFaekFBQ0FFSUFacUlnQTJBZ0FnQUNBQlFRRnlOZ0lFSUFJZ0JHb2dBVFlDQUNBRUlBWkJBM0kyQWdRTUFRdEJuTUFBUVFBMkFnQkJrTUFBUVFBMkFnQWdCQ0FDUVFOeU5nSUVJQUlnQkdvaUFDQUFLQUlFUVFGeU5nSUVDeUFFUVFocUlRQU1DZ3NnQmtHVXdBQW9BZ0FpQ0VrRVFFR1V3QUFnQ0NBR2F5SUJOZ0lBUWFEQUFFR2d3QUFvQWdBaUFpQUdhaUlBTmdJQUlBQWdBVUVCY2pZQ0JDQUNJQVpCQTNJMkFnUWdBa0VJYWlFQURBb0xRUUFoQUNBR1FTOXFJZ2tDZjBIZ3d3QW9BZ0FFUUVIb3d3QW9BZ0FNQVF0QjdNTUFRbjgzQWdCQjVNTUFRb0NnZ0lDQWdBUTNBZ0JCNE1NQUlBdEJER3BCY0hGQjJLclZxZ1Z6TmdJQVFmVERBRUVBTmdJQVFjVERBRUVBTmdJQVFZQWdDeUlCYWlJSFFRQWdBV3NpQlhFaUFpQUdUUTBKUWNEREFDZ0NBQ0lEQkVCQnVNTUFLQUlBSWdRZ0Ftb2lBU0FFVFEwS0lBRWdBMHNOQ2d0QnhNTUFMUUFBUVFSeERRUUNRQUpBUWFEQUFDZ0NBQ0lFQkVCQnlNTUFJUUFEUUNBRUlBQW9BZ0FpQVU4RVFDQUJJQUFvQWdScUlBUkxEUU1MSUFBb0FnZ2lBQTBBQ3d0QkFCQU9JZ0ZCZjBZTkJTQUNJUWRCNU1NQUtBSUFJZ1JCQVdzaUFDQUJjUVJBSUFJZ0FXc2dBQ0FCYWtFQUlBUnJjV29oQndzZ0JpQUhUdzBGSUFkQi92Ly8vd2RMRFFWQndNTUFLQUlBSWdNRVFFRzR3d0FvQWdBaUJDQUhhaUlBSUFSTkRRWWdBQ0FEU3cwR0N5QUhFQTRpQUNBQlJ3MEJEQWNMSUFjZ0NHc2dCWEVpQjBIKy8vLy9CMHNOQkNBSEVBNGlBU0FBS0FJQUlBQW9BZ1JxUmcwRElBRWhBQXNDUUNBQVFYOUdEUUFnQmtFd2FpQUhUUTBBUWVqREFDZ0NBQ0lCSUFrZ0IydHFRUUFnQVd0eElnRkIvdi8vL3dkTEJFQWdBQ0VCREFjTElBRVFEa0YvUndSQUlBRWdCMm9oQnlBQUlRRU1Cd3RCQUNBSGF4QU9HZ3dFQ3lBQUlnRkJmMGNOQlF3REMwRUFJUU1NQnd0QkFDRUJEQVVMSUFGQmYwY05BZ3RCeE1NQVFjVERBQ2dDQUVFRWNqWUNBQXNnQWtIKy8vLy9CMHNOQVVHQXdBQW9BZ0FpQVNBQ1FRTnFRWHh4SWdKcUlRQUNRQUpBQW44Q1FDQUNSUTBBSUFBZ0FVc05BQ0FCREFFTElBQS9BRUVRZEUwTkFTQUFFQUFOQVVHQXdBQW9BZ0FMSVFCQmhNQUFRVEEyQWdCQmZ5RUJEQUVMUVlEQUFDQUFOZ0lBQ3lBQVB3QkJFSFJMQkVBZ0FCQUFSUTBDQzBHQXdBQWdBRFlDQUNBQlFYOUdEUUVnQUVGL1JnMEJJQUFnQVUwTkFTQUFJQUZySWdjZ0JrRW9hazBOQVF0QnVNTUFRYmpEQUNnQ0FDQUhhaUlBTmdJQVFiekRBQ2dDQUNBQVNRUkFRYnpEQUNBQU5nSUFDd0pBQWtBQ1FFR2d3QUFvQWdBaUJRUkFRY2pEQUNFQUEwQWdBU0FBS0FJQUlnUWdBQ2dDQkNJQ2FrWU5BaUFBS0FJSUlnQU5BQXNNQWd0Qm1NQUFLQUlBSWdCQkFDQUFJQUZORzBVRVFFR1l3QUFnQVRZQ0FBdEJBQ0VBUWN6REFDQUhOZ0lBUWNqREFDQUJOZ0lBUWFqQUFFRi9OZ0lBUWF6QUFFSGd3d0FvQWdBMkFnQkIxTU1BUVFBMkFnQURRQ0FBUVFOMElnUkJ1TUFBYWlBRVFiREFBR29pQWpZQ0FDQUVRYnpBQUdvZ0FqWUNBQ0FBUVFGcUlnQkJJRWNOQUF0QmxNQUFJQWRCS0dzaUJFRjRJQUZyUVFkeFFRQWdBVUVJYWtFSGNSc2lBR3NpQWpZQ0FFR2d3QUFnQUNBQmFpSUFOZ0lBSUFBZ0FrRUJjallDQkNBQklBUnFRU2cyQWdSQnBNQUFRZkREQUNnQ0FEWUNBQXdDQ3lBQUxRQU1RUWh4RFFBZ0JDQUZTdzBBSUFFZ0JVME5BQ0FBSUFJZ0IybzJBZ1JCb01BQUlBVkJlQ0FGYTBFSGNVRUFJQVZCQ0dwQkIzRWJJZ0JxSWdJMkFnQkJsTUFBUVpUQUFDZ0NBQ0FIYWlJQklBQnJJZ0EyQWdBZ0FpQUFRUUZ5TmdJRUlBRWdCV3BCS0RZQ0JFR2t3QUJCOE1NQUtBSUFOZ0lBREFFTFFaakFBQ2dDQUNBQlN3UkFRWmpBQUNBQk5nSUFDeUFCSUFkcUlRUkJ5TU1BSVFJQ1FBTkFJQVFnQWlnQ0FFY0VRRUhJd3dBaEFDQUNLQUlJSWdJTkFRd0NDd3RCeU1NQUlRQWdBaTBBREVFSWNRMEFJQUlnQVRZQ0FDQUNJQUlvQWdRZ0IybzJBZ1FnQVVGNElBRnJRUWR4UVFBZ0FVRUlha0VIY1J0cUlna2dCa0VEY2pZQ0JDQUVRWGdnQkd0QkIzRkJBQ0FFUVFocVFRZHhHMm9pQXlBR0lBbHFJZ2hySVFJQ1FDQURJQVZHQkVCQm9NQUFJQWcyQWdCQmxNQUFRWlRBQUNnQ0FDQUNhaUlBTmdJQUlBZ2dBRUVCY2pZQ0JBd0JDeUFEUVp6QUFDZ0NBRVlFUUVHY3dBQWdDRFlDQUVHUXdBQkJrTUFBS0FJQUlBSnFJZ0EyQWdBZ0NDQUFRUUZ5TmdJRUlBQWdDR29nQURZQ0FBd0JDeUFES0FJRUlnQkJBM0ZCQVVZRVFDQUFRWGh4SVFjQ1FDQUFRZjhCVFFSQUlBTW9BZ2dpQkNBQVFRTjJJZ0JCQTNSQnNNQUFha1lhSUFRZ0F5Z0NEQ0lCUmdSQVFZakFBRUdJd0FBb0FnQkJmaUFBZDNFMkFnQU1BZ3NnQkNBQk5nSU1JQUVnQkRZQ0NBd0JDeUFES0FJWUlRWUNRQ0FESUFNb0Fnd2lBVWNFUUNBREtBSUlJZ0FnQVRZQ0RDQUJJQUEyQWdnTUFRc0NRQ0FEUVJScUlnQW9BZ0FpQkEwQUlBTkJFR29pQUNnQ0FDSUVEUUJCQUNFQkRBRUxBMEFnQUNFRklBUWlBVUVVYWlJQUtBSUFJZ1FOQUNBQlFSQnFJUUFnQVNnQ0VDSUVEUUFMSUFWQkFEWUNBQXNnQmtVTkFBSkFJQU1nQXlnQ0hDSUVRUUowUWJqQ0FHb2lBQ2dDQUVZRVFDQUFJQUUyQWdBZ0FRMEJRWXpBQUVHTXdBQW9BZ0JCZmlBRWQzRTJBZ0FNQWdzZ0JrRVFRUlFnQmlnQ0VDQURSaHRxSUFFMkFnQWdBVVVOQVFzZ0FTQUdOZ0lZSUFNb0FoQWlBQVJBSUFFZ0FEWUNFQ0FBSUFFMkFoZ0xJQU1vQWhRaUFFVU5BQ0FCSUFBMkFoUWdBQ0FCTmdJWUN5QURJQWRxSVFNZ0FpQUhhaUVDQ3lBRElBTW9BZ1JCZm5FMkFnUWdDQ0FDUVFGeU5nSUVJQUlnQ0dvZ0FqWUNBQ0FDUWY4QlRRUkFJQUpCQTNZaUFFRURkRUd3d0FCcUlRSUNmMEdJd0FBb0FnQWlBVUVCSUFCMElnQnhSUVJBUVlqQUFDQUFJQUZ5TmdJQUlBSU1BUXNnQWlnQ0NBc2hBQ0FDSUFnMkFnZ2dBQ0FJTmdJTUlBZ2dBallDRENBSUlBQTJBZ2dNQVF0Qkh5RUFJQUpCLy8vL0IwMEVRQ0FDUVFoMklnQWdBRUdBL2o5cVFSQjJRUWh4SWdSMElnQWdBRUdBNEI5cVFSQjJRUVJ4SWdGMElnQWdBRUdBZ0E5cVFSQjJRUUp4SWdCMFFROTJJQUVnQkhJZ0FISnJJZ0JCQVhRZ0FpQUFRUlZxZGtFQmNYSkJIR29oQUFzZ0NDQUFOZ0ljSUFoQ0FEY0NFQ0FBUVFKMFFiakNBR29oQXdKQUFrQkJqTUFBS0FJQUlnUkJBU0FBZENJQmNVVUVRRUdNd0FBZ0FTQUVjallDQUNBRElBZzJBZ0FnQ0NBRE5nSVlEQUVMSUFKQkFFRVpJQUJCQVhacklBQkJIMFliZENFQUlBTW9BZ0FoQVFOQUlBRWlCQ2dDQkVGNGNTQUNSZzBDSUFCQkhYWWhBU0FBUVFGMElRQWdCQ0FCUVFSeGFpSURLQUlRSWdFTkFBc2dBeUFJTmdJUUlBZ2dCRFlDR0FzZ0NDQUlOZ0lNSUFnZ0NEWUNDQXdCQ3lBRUtBSUlJZ0FnQ0RZQ0RDQUVJQWcyQWdnZ0NFRUFOZ0lZSUFnZ0JEWUNEQ0FJSUFBMkFnZ0xJQWxCQ0dvaEFBd0ZDd05BQWtBZ0JTQUFLQUlBSWdKUEJFQWdBaUFBS0FJRWFpSURJQVZMRFFFTElBQW9BZ2doQUF3QkN3dEJsTUFBSUFkQktHc2lCRUY0SUFGclFRZHhRUUFnQVVFSWFrRUhjUnNpQUdzaUFqWUNBRUdnd0FBZ0FDQUJhaUlBTmdJQUlBQWdBa0VCY2pZQ0JDQUJJQVJxUVNnMkFnUkJwTUFBUWZEREFDZ0NBRFlDQUNBRklBTkJKeUFEYTBFSGNVRUFJQU5CSjJ0QkIzRWJha0V2YXlJQUlBQWdCVUVRYWtrYklnSkJHellDQkNBQ1FkRERBQ2tDQURjQ0VDQUNRY2pEQUNrQ0FEY0NDRUhRd3dBZ0FrRUlhallDQUVITXd3QWdCellDQUVISXd3QWdBVFlDQUVIVXd3QkJBRFlDQUNBQ1FSaHFJUUFEUUNBQVFRYzJBZ1FnQUVFSWFpRUJJQUJCQkdvaEFDQUJJQU5KRFFBTElBSWdCVVlOQUNBQ0lBSW9BZ1JCZm5FMkFnUWdCU0FDSUFWcklnTkJBWEkyQWdRZ0FpQUROZ0lBSUFOQi93Rk5CRUFnQTBFRGRpSUFRUU4wUWJEQUFHb2hBZ0ovUVlqQUFDZ0NBQ0lCUVFFZ0FIUWlBSEZGQkVCQmlNQUFJQUFnQVhJMkFnQWdBZ3dCQ3lBQ0tBSUlDeUVBSUFJZ0JUWUNDQ0FBSUFVMkFnd2dCU0FDTmdJTUlBVWdBRFlDQ0F3QkMwRWZJUUFnQlVJQU53SVFJQU5CLy8vL0IwMEVRQ0FEUVFoMklnQWdBRUdBL2o5cVFSQjJRUWh4SWdKMElnQWdBRUdBNEI5cVFSQjJRUVJ4SWdGMElnQWdBRUdBZ0E5cVFSQjJRUUp4SWdCMFFROTJJQUVnQW5JZ0FISnJJZ0JCQVhRZ0F5QUFRUlZxZGtFQmNYSkJIR29oQUFzZ0JTQUFOZ0ljSUFCQkFuUkJ1TUlBYWlFRUFrQUNRRUdNd0FBb0FnQWlBa0VCSUFCMElnRnhSUVJBUVl6QUFDQUJJQUp5TmdJQUlBUWdCVFlDQUNBRklBUTJBaGdNQVFzZ0EwRUFRUmtnQUVFQmRtc2dBRUVmUmh0MElRQWdCQ2dDQUNFQkEwQWdBU0lDS0FJRVFYaHhJQU5HRFFJZ0FFRWRkaUVCSUFCQkFYUWhBQ0FDSUFGQkJIRnFJZ1FvQWhBaUFRMEFDeUFFSUFVMkFoQWdCU0FDTmdJWUN5QUZJQVUyQWd3Z0JTQUZOZ0lJREFFTElBSW9BZ2dpQUNBRk5nSU1JQUlnQlRZQ0NDQUZRUUEyQWhnZ0JTQUNOZ0lNSUFVZ0FEWUNDQXRCbE1BQUtBSUFJZ0FnQmswTkFFR1V3QUFnQUNBR2F5SUJOZ0lBUWFEQUFFR2d3QUFvQWdBaUFpQUdhaUlBTmdJQUlBQWdBVUVCY2pZQ0JDQUNJQVpCQTNJMkFnUWdBa0VJYWlFQURBTUxRUUFoQUVHRXdBQkJNRFlDQUF3Q0N3SkFJQWRGRFFBQ1FDQURLQUljSWdKQkFuUkJ1TUlBYWlJQUtBSUFJQU5HQkVBZ0FDQUJOZ0lBSUFFTkFVR013QUFnQ1VGK0lBSjNjU0lKTmdJQURBSUxJQWRCRUVFVUlBY29BaEFnQTBZYmFpQUJOZ0lBSUFGRkRRRUxJQUVnQnpZQ0dDQURLQUlRSWdBRVFDQUJJQUEyQWhBZ0FDQUJOZ0lZQ3lBREtBSVVJZ0JGRFFBZ0FTQUFOZ0lVSUFBZ0FUWUNHQXNDUUNBRVFROU5CRUFnQXlBRUlBWnFJZ0JCQTNJMkFnUWdBQ0FEYWlJQUlBQW9BZ1JCQVhJMkFnUU1BUXNnQXlBR1FRTnlOZ0lFSUFNZ0Jtb2lCU0FFUVFGeU5nSUVJQVFnQldvZ0JEWUNBQ0FFUWY4QlRRUkFJQVJCQTNZaUFFRURkRUd3d0FCcUlRSUNmMEdJd0FBb0FnQWlBVUVCSUFCMElnQnhSUVJBUVlqQUFDQUFJQUZ5TmdJQUlBSU1BUXNnQWlnQ0NBc2hBQ0FDSUFVMkFnZ2dBQ0FGTmdJTUlBVWdBallDRENBRklBQTJBZ2dNQVF0Qkh5RUFJQVJCLy8vL0IwMEVRQ0FFUVFoMklnQWdBRUdBL2o5cVFSQjJRUWh4SWdKMElnQWdBRUdBNEI5cVFSQjJRUVJ4SWdGMElnQWdBRUdBZ0E5cVFSQjJRUUp4SWdCMFFROTJJQUVnQW5JZ0FISnJJZ0JCQVhRZ0JDQUFRUlZxZGtFQmNYSkJIR29oQUFzZ0JTQUFOZ0ljSUFWQ0FEY0NFQ0FBUVFKMFFiakNBR29oQVFKQUFrQWdDVUVCSUFCMElnSnhSUVJBUVl6QUFDQUNJQWx5TmdJQUlBRWdCVFlDQUF3QkN5QUVRUUJCR1NBQVFRRjJheUFBUVI5R0czUWhBQ0FCS0FJQUlRWURRQ0FHSWdFb0FnUkJlSEVnQkVZTkFpQUFRUjEySVFJZ0FFRUJkQ0VBSUFFZ0FrRUVjV29pQWlnQ0VDSUdEUUFMSUFJZ0JUWUNFQXNnQlNBQk5nSVlJQVVnQlRZQ0RDQUZJQVUyQWdnTUFRc2dBU2dDQ0NJQUlBVTJBZ3dnQVNBRk5nSUlJQVZCQURZQ0dDQUZJQUUyQWd3Z0JTQUFOZ0lJQ3lBRFFRaHFJUUFNQVFzQ1FDQUlSUTBBQWtBZ0FTZ0NIQ0lDUVFKMFFiakNBR29pQUNnQ0FDQUJSZ1JBSUFBZ0F6WUNBQ0FERFFGQmpNQUFJQWxCZmlBQ2QzRTJBZ0FNQWdzZ0NFRVFRUlFnQ0NnQ0VDQUJSaHRxSUFNMkFnQWdBMFVOQVFzZ0F5QUlOZ0lZSUFFb0FoQWlBQVJBSUFNZ0FEWUNFQ0FBSUFNMkFoZ0xJQUVvQWhRaUFFVU5BQ0FESUFBMkFoUWdBQ0FETmdJWUN3SkFJQVJCRDAwRVFDQUJJQVFnQm1vaUFFRURjallDQkNBQUlBRnFJZ0FnQUNnQ0JFRUJjallDQkF3QkN5QUJJQVpCQTNJMkFnUWdBU0FHYWlJQ0lBUkJBWEkyQWdRZ0FpQUVhaUFFTmdJQUlBb0VRQ0FLUVFOMklnQkJBM1JCc01BQWFpRUZRWnpBQUNnQ0FDRURBbjlCQVNBQWRDSUFJQWR4UlFSQVFZakFBQ0FBSUFkeU5nSUFJQVVNQVFzZ0JTZ0NDQXNoQUNBRklBTTJBZ2dnQUNBRE5nSU1JQU1nQlRZQ0RDQURJQUEyQWdnTFFaekFBQ0FDTmdJQVFaREFBQ0FFTmdJQUN5QUJRUWhxSVFBTElBdEJFR29rQUNBQUMrNFdBUkIvSUFBZ0JFRUFJQVpySUFJZ0FpQUdha0VBU0JzaUFpQUNJQVJLR3lJT1FRQWdEa0VBU2hzaUZHb2dCVUVBSUFkcklBTWdBeUFIYWtFQVNCc2lBQ0FBSUFWS0d5SURJQVJzUVFBZ0EwRUFTaHRxSVFrZ0IwRUFJQU5ySUFOQkgzVnhJZ29nQXlBSGFpSVZJQVZySWhKQkFDQUZJQlZJR3lJWGFtc2hEeUFHUVFBZ0Rtc2dEa0VmZFhFaUN5QUdJQTVxSWhNZ0JHdEJBQ0FFSUJOSUlnQWJJZzFxYXlFTUFrQWdEa0VBU0NBQWNpSVlSUVJBQWtBZ0NrVU5BQ0FLUVFOeElnSUVRQU5BSUFwQkFXc2hDaUFCSUFrZ0RCQUhJQWhxSVFFZ0FrRUJheUlDRFFBTEN5QURRWDl6SUFOQkFDQURRUUJLRzJwQkEwa05BQU5BSUFFZ0NTQU1FQWNnQ0dvZ0NTQU1FQWNnQ0dvZ0NTQU1FQWNnQ0dvZ0NTQU1FQWNnQ0dvaEFTQUtRUVJySWdvTkFBc0xJQTlGRFFFZ0QwRURjU0lDQkVBRFFDQVBRUUZySVE4Z0FTQUpJQXdRQnlBSWFpRUJJQVFnQ1dvaENTQUNRUUZySWdJTkFBc0xJQVVnQjJvZ0Eyb2dCU0FWSUFVZ0ZVb2JRWDl6YWlBRFFRQWdBMEVBU2h0clFRTkpEUUVEUUNBQklBa2dEQkFISUFocUlBUWdDV29pQUNBTUVBY2dDR29nQUNBRWFpSUFJQXdRQnlBSWFpQUFJQVJxSWdBZ0RCQUhJQWhxSVFFZ0FDQUVhaUVKSUE5QkJHc2lEdzBBQ3d3QkN3SkFJQXBGRFFBQ1FDQU1SUVJBSUFsQkFXc2hBaUFMUlFSQUlBMUZEUUlnQTBGL2N5QURRUUFnQTBFQVNodHFJUUFnQ2tFRGNTSURCRUFEUUNBS1FRRnJJUW9nQVNBQ0xRQUFJQTBRQXlBSWFpRUJJQU5CQVdzaUF3MEFDd3NnQUVFRFNRMERJQXBCQkdzaUFFRUVjVVVFUUNBQUlRb2dBU0FDTFFBQUlBMFFBeUFJYWlBQ0xRQUFJQTBRQXlBSWFpQUNMUUFBSUEwUUF5QUlhaUFDTFFBQUlBMFFBeUFJYWlFQkN5QUFRUVJKRFFNRFFDQUJJQUl0QUFBZ0RSQURJQWhxSUFJdEFBQWdEUkFESUFocUlBSXRBQUFnRFJBRElBaHFJQUl0QUFBZ0RSQURJQWhxSUFJdEFBQWdEUkFESUFocUlBSXRBQUFnRFJBRElBaHFJQUl0QUFBZ0RSQURJQWhxSUFJdEFBQWdEUkFESUFocUlRRWdDa0VJYXlJS0RRQUxEQU1MSUFOQmYzTWdBMEVBSUFOQkFFb2JhaUVBSUFwQkEzRWhBeUFOQkVBZ0F3UkFBMEFnQVNBSkxRQUFJQXNRQXlJQklBdHFJQUl0QUFBZ0RSQURHaUFLUVFGcklRb2dBU0FJYWlFQklBTkJBV3NpQXcwQUN3c2dBRUVEU1EwREEwQWdBU0FKTFFBQUlBc1FBeUlBSUF0cUlBSXRBQUFnRFJBREdpQUFJQWhxSUFrdEFBQWdDeEFESWdBZ0Myb2dBaTBBQUNBTkVBTWFJQUFnQ0dvZ0NTMEFBQ0FMRUFNaUFDQUxhaUFDTFFBQUlBMFFBeG9nQUNBSWFpQUpMUUFBSUFzUUF5SUFJQXRxSUFJdEFBQWdEUkFER2lBQUlBaHFJUUVnQ2tFRWF5SUtEUUFMREFNTElBTUVRQU5BSUFwQkFXc2hDaUFCSUFrdEFBQWdDeEFESUFocUlRRWdBMEVCYXlJRERRQUxDeUFBUVFOSkRRSWdDa0VFYXlJQVFRUnhSUVJBSUFBaENpQUJJQWt0QUFBZ0N4QURJQWhxSUFrdEFBQWdDeEFESUFocUlBa3RBQUFnQ3hBRElBaHFJQWt0QUFBZ0N4QURJQWhxSVFFTElBQkJCRWtOQWdOQUlBRWdDUzBBQUNBTEVBTWdDR29nQ1MwQUFDQUxFQU1nQ0dvZ0NTMEFBQ0FMRUFNZ0NHb2dDUzBBQUNBTEVBTWdDR29nQ1MwQUFDQUxFQU1nQ0dvZ0NTMEFBQ0FMRUFNZ0NHb2dDUzBBQUNBTEVBTWdDR29nQ1MwQUFDQUxFQU1nQ0dvaEFTQUtRUWhySWdvTkFBc01BZ3NnQkNBR2FpQU9haUFFSUJNZ0JDQVRTaHRCZjNOcUlRQWdDMFVFUUNBTVFRZHhJUkFnQUNBVWF5RUFJQTFGQkVBZ0FFRUhTU0VSQTBBZ0RDRUhJQUVoQWlBSklRTWdFQ0lBQkVBRFFDQUNJQU10QUFBNkFBQWdCMEVCYXlFSElBSkJBV29oQWlBRFFRRnFJUU1nQUVFQmF5SUFEUUFMQ3lBUlJRUkFBMEFnQWlBRExRQUFPZ0FBSUFJZ0F5MEFBVG9BQVNBQ0lBTXRBQUk2QUFJZ0FpQURMUUFET2dBRElBSWdBeTBBQkRvQUJDQUNJQU10QUFVNkFBVWdBaUFETFFBR09nQUdJQUlnQXkwQUJ6b0FCeUFDUVFocUlRSWdBMEVJYWlFRElBZEJDR3NpQncwQUN3c2dBU0FJYWlFQklBcEJBV3NpQ2cwQUN3d0RDeUFBUVFkSklSWURRQ0FNSVFjZ0FTRUNJQWtoQUNBUUlSRWdFQVJBQTBBZ0FpQUFJZ010QUFBNkFBQWdCMEVCYXlFSElBSkJBV29oQWlBRFFRRnFJUUFnRVVFQmF5SVJEUUFMQ3lBV1JRUkFBMEFnQWlBQUlnTXRBQUE2QUFBZ0FpQURMUUFCT2dBQklBSWdBeTBBQWpvQUFpQUNJQU10QUFNNkFBTWdBaUFETFFBRU9nQUVJQUlnQXkwQUJUb0FCU0FDSUFNdEFBWTZBQVlnQWlBRExRQUhPZ0FISUFKQkNHb2hBaUFEUVFocUlRQWdCMEVJYXlJSERRQUxJQU5CQjJvaEF3c2dBaUFETFFBQUlBMFFBeG9nQVNBSWFpRUJJQXBCQVdzaUNnMEFDd3dDQ3lBTkJFQWdERUVIY1NFUUlBQWdEa0VBSUE1QkFFb2JhMEVIU1NFUkEwQWdBU0FKTFFBQUlBc1FBeUlXSUF0cUlRSWdEQ0VISUFraEFDQVFJZ0VFUUFOQUlBSWdBQ0lETFFBQU9nQUFJQWRCQVdzaEJ5QUNRUUZxSVFJZ0EwRUJhaUVBSUFGQkFXc2lBUTBBQ3dzZ0VVVUVRQU5BSUFJZ0FDSUJMUUFBT2dBQUlBSWdBUzBBQVRvQUFTQUNJQUV0QUFJNkFBSWdBaUFCTFFBRE9nQURJQUlnQVMwQUJEb0FCQ0FDSUFFdEFBVTZBQVVnQWlBQkxRQUdPZ0FHSUFJZ0FTMEFCem9BQnlBQ1FRaHFJUUlnQVVFSWFpRUFJQWRCQ0dzaUJ3MEFDeUFCUVFkcUlRTUxJQUlnQXkwQUFDQU5FQU1hSUFnZ0Ztb2hBU0FLUVFGcklnb05BQXNNQWdzZ0RFRUhjU0VRSUFBZ0ZHdEJCMGtoRVFOQUlBRWdDUzBBQUNBTEVBTWlBU0FMYWlFQ0lBd2hCeUFKSVFNZ0VDSUFCRUFEUUNBQ0lBTXRBQUE2QUFBZ0IwRUJheUVISUFKQkFXb2hBaUFEUVFGcUlRTWdBRUVCYXlJQURRQUxDeUFSUlFSQUEwQWdBaUFETFFBQU9nQUFJQUlnQXkwQUFUb0FBU0FDSUFNdEFBSTZBQUlnQWlBRExRQURPZ0FESUFJZ0F5MEFCRG9BQkNBQ0lBTXRBQVU2QUFVZ0FpQURMUUFHT2dBR0lBSWdBeTBBQnpvQUJ5QUNRUWhxSVFJZ0EwRUlhaUVESUFkQkNHc2lCdzBBQ3dzZ0FTQUlhaUVCSUFwQkFXc2lDZzBBQ3d3QkN5QUJJQWdnQ214cUlRRUxJQTlGRFFBZ0RFRUhjU0VLSUFRZ0Jtb2dEbW9nQkNBVElBUWdFMG9iUVg5emFpQVVhMEVIU1NFUUEwQWdBU0VDSUFzRVFDQUJJQWt0QUFBZ0N4QURJQXRxSVFJTEFrQWdERVVFUUNBSklRTU1BUXNnRENFSElBa2hBeUFLSWdBRVFBTkFJQUlnQXkwQUFEb0FBQ0FIUVFGcklRY2dBa0VCYWlFQ0lBTkJBV29oQXlBQVFRRnJJZ0FOQUFzTElCQU5BQU5BSUFJZ0F5MEFBRG9BQUNBQ0lBTXRBQUU2QUFFZ0FpQURMUUFDT2dBQ0lBSWdBeTBBQXpvQUF5QUNJQU10QUFRNkFBUWdBaUFETFFBRk9nQUZJQUlnQXkwQUJqb0FCaUFDSUFNdEFBYzZBQWNnQWtFSWFpRUNJQU5CQ0dvaEF5QUhRUWhySWdjTkFBc0xJQTBFUUNBQ0lBTkJBV3N0QUFBZ0RSQURHZ3NnQVNBSWFpRUJJQVFnQ1dvaENTQVBRUUZySWc4TkFBc0xBa0FnRjBVTkFDQUpJQVJySVFrZ0dFVUVRQ0FTUVFOeElnSUVRQU5BSUJKQkFXc2hFaUFCSUFrZ0RCQUhJQWhxSVFFZ0FrRUJheUlDRFFBTEN5QVZJQVZCZjNOcVFRTkpEUUVEUUNBQklBa2dEQkFISUFocUlBa2dEQkFISUFocUlBa2dEQkFISUFocUlBa2dEQkFISUFocUlRRWdFa0VFYXlJU0RRQUxEQUVMSUF4QkIzRWhCU0FFSUFacUlBNXFJQVFnRXlBRUlCTktHMEYvYzJvZ0ZHdEJCMGtoQkFOQUlBRWhBaUFMQkVBZ0FTQUpMUUFBSUFzUUF5QUxhaUVDQ3dKQUlBeEZCRUFnQ1NFRERBRUxJQXdoQnlBSklRTWdCU0lBQkVBRFFDQUNJQU10QUFBNkFBQWdCMEVCYXlFSElBSkJBV29oQWlBRFFRRnFJUU1nQUVFQmF5SUFEUUFMQ3lBRURRQURRQ0FDSUFNdEFBQTZBQUFnQWlBRExRQUJPZ0FCSUFJZ0F5MEFBam9BQWlBQ0lBTXRBQU02QUFNZ0FpQURMUUFFT2dBRUlBSWdBeTBBQlRvQUJTQUNJQU10QUFZNkFBWWdBaUFETFFBSE9nQUhJQUpCQ0dvaEFpQURRUWhxSVFNZ0IwRUlheUlIRFFBTEN5QU5CRUFnQWlBRFFRRnJMUUFBSUEwUUF4b0xJQUVnQ0dvaEFTQVNRUUZySWhJTkFBc0xDOEFDQVFOL1Fjei9zd1lnQVhaQkFYRWhCQ0FCUVFOMElnTkI1Q3hxTFFBQUlRVWdBMEdrSzJvdEFBQWhBd0pBUWZyMXF3VWdBWFpCQVhFRVFDQUNJQU5CQVhScUxnRUFJUUVnQkFSQUlBRWdBaUFGUVFGMGFpNEJBR3BCQVdwQkFYVVBDeUFBS0FMTUFTSUNSUTBCSUFBb0FnUWdBaWdDQkVjTkFTQUJJQUlnQlVFQmRHb3VBUnhxUVFGcVFRRjFEd3NnQkFSQUlBSWdCVUVCZEdvdUFRQWhBU0FBS0FMSUFTSUNSUTBCSUFBb0FnUWdBaWdDQkVjTkFTQUJJQUlnQTBFQmRHb3VBUnhxUVFGcVFRRjFEd3RCQUNFQlFRRWhBZ0pBSUFBb0FzZ0JJZ1JGRFFBZ0FDZ0NCQ0FFS0FJRVJ3MEFJQVFnQTBFQmRHb3VBUndoQVVFQUlRSUxJQUFvQXN3QklnTkZEUUFnQUNnQ0JDQURLQUlFUncwQUlBTWdCVUVCZEdvdUFSd2hBQ0FDQkVBZ0FBOExJQUFnQVdwQkFXcEJBWFVoQVFzZ0FRdnlBd0VEZnlBQktBSUFJZ05CLy8vL0IwY0VRQ0FCS0FJRUlRUWdBQ0FDSUFKQkEzRWdBa0VRU1NJQ0cwRUNkQ0lGUWZBcGFpZ0NBRUVRUVFnZ0Foc2lBbXhxSUFWQnNDbHFLQUlBYWlJQUlBTWdBQzBBQUdwQndEVnFMUUFBT2dBQUlBRW9BZ2doQXlBQUlBUWdBQzBBQVdwQndEVnFMUUFBT2dBQklBRW9BZ3doQkNBQUlBTWdBQzBBQW1wQndEVnFMUUFBT2dBQ0lBQWdCQ0FBTFFBRGFrSEFOV290QUFBNkFBTWdBU2dDRkNFRElBQWdBbW9pQUNBQktBSVFJQUF0QUFCcVFjQTFhaTBBQURvQUFDQUJLQUlZSVFRZ0FDQURJQUF0QUFGcVFjQTFhaTBBQURvQUFTQUJLQUljSVFNZ0FDQUVJQUF0QUFKcVFjQTFhaTBBQURvQUFpQUFJQU1nQUMwQUEycEJ3RFZxTFFBQU9nQURJQUVvQWlRaEF5QUFJQUpxSWdBZ0FTZ0NJQ0FBTFFBQWFrSEFOV290QUFBNkFBQWdBU2dDS0NFRUlBQWdBeUFBTFFBQmFrSEFOV290QUFBNkFBRWdBU2dDTENFRElBQWdCQ0FBTFFBQ2FrSEFOV290QUFBNkFBSWdBQ0FESUFBdEFBTnFRY0ExYWkwQUFEb0FBeUFCS0FJMElRTWdBQ0FDYWlJQUlBRW9BakFnQUMwQUFHcEJ3RFZxTFFBQU9nQUFJQUVvQWpnaEFpQUFJQU1nQUMwQUFXcEJ3RFZxTFFBQU9nQUJJQUVvQWp3aEFTQUFJQUlnQUMwQUFtcEJ3RFZxTFFBQU9nQUNJQUFnQVNBQUxRQURha0hBTldvdEFBQTZBQU1MQzVja0FSUi9Jd0JCZ0E1ckloVWtBQ0FESUFWcUloa2dBUzRCQUNJT1FRSjFhaUVESUFRZ0Jtb2lHeUFCTGdFQ0lndEJBblZxSVFrZ0FpZ0NDRUVFZENFTUlBSW9BZ1JCQkhRaERTQUFJQVpCQkhScUlBVnFJUVFDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQTVCQTNGQkJIUWdDMEVEY1VFQ2RISkJ3RHRxS0FJQURnOEFBUUlEQkFVR0J3Z0pDZ3NNRFE0UEN5QUNLQUlBSUFRZ0F5QUpJQTBnRENBSElBaEJFQkFKREE4TElBSW9BZ0FnQkNBRElBbEJBbXNnRFNBTUlBY2dDRUVBRUJvTURnc2dDVUVDYXlFS1FRQWhEaUFDS0FJQUlRc0NRQUpBSUFOQkFFZ05BQ0FESUFkcUlBMUxEUUFnQ1VFQ1NBMEFJQWdnQ21wQkJXb2dERXNOQUNBS0lRNE1BUXNnQ3lBVklBTWdDaUFOSUF3Z0J5QUlRUVZxSUFjUUNTQVZJUXNnQnlFTlFRQWhBd3NnQ3lBTklBNXNJQU5xYWlBTmFpSUpJQTFCQld4cUlRTWdDRUVDZGlFUlFjQUFJQWRySVJRZ0RVRUJkQ0VNSUExQkFuUWdCMnNoRDBFQUlBMXJJaEJCQVhRaEdBTkFJQWNoRXdOQUlBUWdDU0FNYWkwQUFDSU9JQU1nREdvdEFBQWdBeUFOYWkwQUFDSVdJQU1nR0dvdEFBQWlDMm9pQ21zZ0NrRUNkR3RxSUFNdEFBQWlFaUFESUJCcUxRQUFJZ3BxUVJSc2FrRVFha0VGZFVIQU5Xb3RBQUE2QURBZ0JDQUpJQTFxTFFBQUloY2dGaUFLSUF0cUlocEJCSFJxSUE0Z0Vtb2lGbXRxSUJvZ0ZtdEJBblJxUVJCcVFRVjFRY0ExYWkwQUFEb0FJQ0FFSUFrdEFBQWlGaUFTSUFzZ0Rtb2lHa0VFZEdvZ0NpQVhhaUlTYTJvZ0dpQVNhMEVDZEdwQkVHcEJCWFZCd0RWcUxRQUFPZ0FRSUFRZ0NTQVFhaTBBQUNBS0lBNGdGMm9pRGtFRWRHb2dDeUFXYWlJTGEyb2dEaUFMYTBFQ2RHcEJFR3BCQlhWQndEVnFMUUFBT2dBQUlBbEJBV29oQ1NBRVFRRnFJUVFnQTBFQmFpRURJQk5CQVdzaUV3MEFDeUFFSUJScUlRUWdBeUFQYWlFRElBa2dEMm9oQ1NBUlFRRnJJaEVOQUFzTURRc2dBaWdDQUNBRUlBTWdDVUVDYXlBTklBd2dCeUFJUVFFUUdnd01DeUFDS0FJQUlBUWdBMEVDYXlBSklBMGdEQ0FISUFoQkFCQVpEQXNMSUFJb0FnQWdCQ0FEUVFKcklBbEJBbXNnRFNBTUlBY2dDRUVBRUJJTUNnc2dBaWdDQUNBRUlBTkJBbXNnQ1VFQ2F5QU5JQXdnQnlBSVFRQVFGd3dKQ3lBQ0tBSUFJQVFnQTBFQ2F5QUpRUUpySUEwZ0RDQUhJQWhCQWhBU0RBZ0xJQWRCQldvaEN5QURRUUpySVFvZ0FpZ0NBQ0VPQWtBQ1FDQURRUUpJRFFBZ0NpQUxhaUFOU3cwQUlBbEJBRWdOQUNBSUlBbHFJQXhMRFFBZ0RTRUxEQUVMSUE0Z0ZTQUtJQWtnRFNBTUlBc2dDQ0FMRUFsQkFDRUpJQlVoRGtFQUlRb0xRUkFnQjJzaEZDQUxJQWRySVJnZ0IwRUNkaUVTSUE0Z0NTQUxiQ0FLYW1wQkJXb2hBeUFJSVFzRFFDQURRUUZyTFFBQUlRa2dBMEVDYXkwQUFDRU1JQU5CQTJzdEFBQWhDaUFEUVFSckxRQUFJUThnQTBFRmF5MEFBQ0VUSUJJaEVRTkFJQVFnQXkwQUFDSU9JQk1nQ2lBTWFpSU5RUVIwYWlBSklBOXFJaE5ySUEwZ0UydEJBblJxYWtFUWFrRUZkVUhBTldvdEFBQTZBQUFnQkNBRExRQUJJZzBnRHlBSklBeHFJaE5CQkhScUlBb2dEbW9pRDJ0cUlCTWdEMnRCQW5ScVFSQnFRUVYxUWNBMWFpMEFBRG9BQVNBRUlBTXRBQUlpRUNBS0lBa2dEbW9pRTBFRWRHb2dEQ0FOYWlJS2Eyb2dFeUFLYTBFQ2RHcEJFR3BCQlhWQndEVnFMUUFBT2dBQ0lBUWdBeTBBQXlJWElBd2dEU0FPYWlJS1FRUjBhaUFKSUJCcUlneHJhaUFLSUF4clFRSjBha0VRYWtFRmRVSEFOV290QUFBNkFBTWdCRUVFYWlFRUlBTkJCR29oQXlBSklSTWdEaUVQSUEwaENpQVFJUXdnRnlFSklCRkJBV3NpRVEwQUN5QUVJQlJxSVFRZ0F5QVlhaUVESUF0QkFXc2lDdzBBQ3d3SEN5QUNLQUlBSUFRZ0EwRUNheUFKUVFKcklBMGdEQ0FISUFoQkFCQVlEQVlMSUFkQkJXb2hDeUFKUVFKcklRNGdBMEVDYXlFS0lBSW9BZ0FoRHdKQUFrQWdBMEVDU0EwQUlBb2dDMm9nRFVzTkFDQUpRUUpJRFFBZ0NFRUZhaUlVSUE1cUlBeExEUUFnRFNFTERBRUxJQThnRlVIQUNtb2lEeUFLSUE0Z0RTQU1JQXNnQ0VFRmFpSVVJQXNRQ1VFQUlRNUJBQ0VLQ3lBVUJFQWdDeUFIYXlFWUlBZEJBblloRWlBUElBc2dEbXdnQ21wcVFRVnFJUU1nRlNFTUEwQWdBMEVCYXkwQUFDRUpJQU5CQW1zdEFBQWhDeUFEUVFOckxRQUFJUTRnQTBFRWF5MEFBQ0VOSUFOQkJXc3RBQUFoRVNBU0lROERRQ0FNSUFNdEFBQWlDaUFSSUFzZ0Rtb2lFMEVFZEdvZ0NTQU5haUlSYXlBVElCRnJRUUowYW1vMkFnQWdEQ0FETFFBQkloTWdEU0FKSUF0cUloRkJCSFJxSUFvZ0Rtb2lEV3RxSUJFZ0RXdEJBblJxTmdJRUlBd2dBeTBBQWlJUUlBNGdDU0FLYWlJT1FRUjBhaUFMSUJOcUlnMXJhaUFPSUExclFRSjBhallDQ0NBTUlBTXRBQU1pRnlBS0lCTnFJZzVCQkhRZ0Myb2dDU0FRYWlJTGEyb2dEaUFMYTBFQ2RHbzJBZ3dnREVFUWFpRU1JQU5CQkdvaEF5QUpJUkVnQ2lFTklCTWhEaUFRSVFzZ0Z5RUpJQTlCQVdzaUR3MEFDeUFESUJocUlRTWdGRUVCYXlJVURRQUxDeUFWSUFkQkFuUWlER29pQ1NBSFFSUnNhaUVESUFoQkFuWWhEMEhBQUNBSGF5RVhRUUFnQjJzaUZFRURkQ0VZSUFkQkEzUWhFU0FIUVFOc1FRSjBJUk1EUUNBSElRMERRQ0FFSUFrZ0VXb29BZ0FpRGlBRElCRnFLQUlBSUFNZ0RHb29BZ0FpRmlBRElCaHFLQUlBSWd0cUlncHJJQXBCQW5ScmFpQURLQUlBSWhBZ0F5QVVRUUowSWhwcUtBSUFJZ3BxUVJSc2FrR0FCR3BCQ25WQndEVnFMUUFBT2dBd0lBUWdDU0FNYWlnQ0FDSVNJQllnQ2lBTGFpSWNRUVIwYWlBT0lCQnFJaFpyYWlBY0lCWnJRUUowYWtHQUJHcEJDblZCd0RWcUxRQUFPZ0FnSUFRZ0NTZ0NBQ0lXSUJBZ0N5QU9haUljUVFSMGFpQUtJQkpxSWhCcmFpQWNJQkJyUVFKMGFrR0FCR3BCQ25WQndEVnFMUUFBT2dBUUlBUWdDU0FhYWlnQ0FDQUtJQTRnRW1vaURrRUVkR29nQ3lBV2FpSUxhMm9nRGlBTGEwRUNkR3BCZ0FScVFRcDFRY0ExYWkwQUFEb0FBQ0FKUVFScUlRa2dCRUVCYWlFRUlBTkJCR29oQXlBTlFRRnJJZzBOQUFzZ0JDQVhhaUVFSUFNZ0Uyb2hBeUFKSUJOcUlRa2dEMEVCYXlJUERRQUxEQVVMSUFJb0FnQWdCQ0FEUVFKcklBbEJBbXNnRFNBTUlBY2dDRUVCRUJnTUJBc2dBaWdDQUNBRUlBTkJBbXNnQ1NBTklBd2dCeUFJUVFFUUdRd0RDeUFDS0FJQUlBUWdBMEVDYXlBSlFRSnJJQTBnRENBSElBaEJBUkFTREFJTElBSW9BZ0FnQkNBRFFRSnJJQWxCQW1zZ0RTQU1JQWNnQ0VFQkVCY01BUXNnQWlnQ0FDQUVJQU5CQW1zZ0NVRUNheUFOSUF3Z0J5QUlRUU1RRWdzZ0FTNEJBQ0lPUVFOMUlCbEJBWFpxSVE4Z0FTNEJBaUlMUVFOMUlCdEJBWFpxSVFNZ0FpZ0NBQ0FDS0FJRUlnb2dBaWdDQ0NJQ2JFRUlkR29oQVNBQUlBWkJBblJCZUhGcUlBVkJBWFpxUVlBQ2FpRUVJQWhCQVhZaEVTQUhRUUYySVEwZ0MwRUhjU0VRSUFKQkEzUWhBQ0FLUVFOMElRb0NRQUpBSUE1QkIzRWlFa1VOQUNBUVJRMEFJQTFCQVdvaERrRUFJUVVDUUFKQUlBOUJBRWdOQUNBT0lBOXFJQXBMRFFBZ0EwRUFTQTBBSUFNZ0VXcEJBV29nQUVzTkFDQUFJUVlnQ2lFT0lBTWhCUXdCQ3lBQklCVWdEeUFESUFvZ0FDQU9JQkZCQVdvaUJpQU9FQWtnQVNBQUlBcHNhaUFWSUFZZ0RteHFJQThnQXlBS0lBQWdEaUFHSUE0UUNTQVZJUUZCQUNFUEMwRVFJQTFySVJjZ0IwRUNkaUVBUVFnZ0VHc2hBMEVJSUJKcklRa2dEa0VCZENJTUlBMXJJUlFnQVNBRklBNXNhaUFQYWlFTElBUWhDaUFJUVFKMklnY2hBZ05BSUJBZ0N5QU1haTBBQUd3Z0F5QUxJQTVxTFFBQUlnaHNhaUVOSUFnZ0VHd2dBeUFMTFFBQWJHb2hFeUFBSVJFRFFDQUxRUUZxSWdnZ0RHb3RBQUFoR1NBS0lBa2dFMndnRUNBSUlBNXFMUUFBSWdoc0lBTWdDeTBBQVd4cUloTWdFbXhxUVNCcVFRWjJPZ0FBSUFvZ0NTQU5iQ0FRSUJsc0lBTWdDR3hxSWdnZ0VteHFRU0JxUVFaMk9nQUlJQXN0QUFJaERTQUxRUUpxSWdzZ0RHb3RBQUFoR1NBS0lBa2dFMndnRUNBTElBNXFMUUFBSWh0c0lBTWdEV3hxSWhNZ0VteHFRU0JxUVFaMk9nQUJJQW9nQ0NBSmJDQVFJQmxzSUFNZ0cyeHFJZzBnRW14cVFTQnFRUVoyT2dBSklBcEJBbW9oQ2lBUlFRRnJJaEVOQUFzZ0N5QVVhaUVMSUFvZ0Yyb2hDaUFDUVFGcklnSU5BQXNnQkVGQWF5RUtJQUVnQlNBR2FpQU9iR29nRDJvaEN3TkFJQkFnQ3lBTWFpMEFBR3dnQXlBTElBNXFMUUFBSWdGc2FpRU5JQUVnRUd3Z0F5QUxMUUFBYkdvaEV5QUFJUkVEUUNBTFFRRnFJZ0VnREdvdEFBQWhBaUFLSUFrZ0Uyd2dFQ0FCSUE1cUxRQUFJZ0ZzSUFNZ0N5MEFBV3hxSWdRZ0VteHFRU0JxUVFaMk9nQUFJQW9nQ1NBTmJDQUNJQkJzSUFFZ0EyeHFJZ0VnRW14cVFTQnFRUVoyT2dBSUlBc3RBQUloQWlBTFFRSnFJZ3NnREdvdEFBQWhCU0FLSUFRZ0NXd2dFQ0FMSUE1cUxRQUFJZ1JzSUFJZ0EyeHFJaE1nRW14cVFTQnFRUVoyT2dBQklBb2dBU0FKYkNBRklCQnNJQU1nQkd4cUlnMGdFbXhxUVNCcVFRWjJPZ0FKSUFwQkFtb2hDaUFSUVFGckloRU5BQXNnQ3lBVWFpRUxJQW9nRjJvaENpQUhRUUZySWdjTkFBc01BUXNnRWdSQUlBMUJBV29oQzBFQUlRSUNRQUpBSUE5QkFFZ05BQ0FMSUE5cUlBcExEUUFnQTBFQVNBMEFJQU1nRVdvZ0FFc05BQ0FBSVJFZ0NpRUxJQU1oQWd3QkN5QUJJQlVnRHlBRElBb2dBQ0FMSUJFZ0N4QUpJQUVnQUNBS2JHb2dGU0FMSUJGc2FpQVBJQU1nQ2lBQUlBc2dFU0FMRUFrZ0ZTRUJRUUFoRHd0QkVDQU5heUVHSUFkQkFuWWhBRUVJSUJKcklRTWdDMEVCZENBTmF5RUhJQUVnQWlBTGJHb2dEMm9oQ1NBRUlRd2dDRUVDZGlJVUlRVURRQ0FBSVE0RFFDQUpRUUZxSUF0cUxRQUFJUWdnQ1NBTGFpMEFBQ0VLSUF3Z0VpQUpMUUFCSWcxc0lBTWdDUzBBQUd4cVFRTjBRU0JxUVFaMk9nQUFJQXdnQ0NBU2JDQURJQXBzYWtFRGRFRWdha0VHZGpvQUNDQUpMUUFDSVFvZ0NVRUNhaUlKSUF0cUxRQUFJUk1nRENBS0lCSnNJQU1nRFd4cVFRTjBRU0JxUVFaMk9nQUJJQXdnRWlBVGJDQURJQWhzYWtFRGRFRWdha0VHZGpvQUNTQU1RUUpxSVF3Z0RrRUJheUlPRFFBTElBY2dDV29oQ1NBR0lBeHFJUXdnQlVFQmF5SUZEUUFMSUFSQlFHc2hEQ0FCSUFJZ0VXb2dDMnhxSUE5cUlRa0RRQ0FBSVE0RFFDQUpRUUZxSUF0cUxRQUFJUUVnQ1NBTGFpMEFBQ0VDSUF3Z0VpQUpMUUFCSWdSc0lBTWdDUzBBQUd4cVFRTjBRU0JxUVFaMk9nQUFJQXdnQVNBU2JDQUNJQU5zYWtFRGRFRWdha0VHZGpvQUNDQUpMUUFDSVFJZ0NVRUNhaUlKSUF0cUxRQUFJUVVnRENBQ0lCSnNJQU1nQkd4cVFRTjBRU0JxUVFaMk9nQUJJQXdnQlNBU2JDQUJJQU5zYWtFRGRFRWdha0VHZGpvQUNTQU1RUUpxSVF3Z0RrRUJheUlPRFFBTElBY2dDV29oQ1NBR0lBeHFJUXdnRkVFQmF5SVVEUUFMREFFTElCQUVRRUVBSVFJQ1FBSkFJQTlCQUVnTkFDQU5JQTlxSUFwTERRQWdBMEVBU0EwQUlBTWdFV3BCQVdvZ0FFc05BQ0FBSVFVZ0F5RUNEQUVMSUFFZ0ZTQVBJQU1nQ2lBQUlBMGdFVUVCYWlJRklBMFFDU0FCSUFBZ0NteHFJQlVnQlNBTmJHb2dEeUFESUFvZ0FDQU5JQVVnRFJBSklCVWhBU0FOSVFwQkFDRVBDMEVRSUExcklSRWdCMEVDZGlFQVFRZ2dFR3NoQXlBS1FRRjBJZ1lnRFdzaEJ5QUJJQUlnQ214cUlBOXFJUWtnQkNFTUlBaEJBbllpQ3lFVUEwQWdBQ0VPQTBBZ0JpQUphaTBBQUNFSUlBd2dBeUFKTFFBQWJDQVFJQWtnQ21vdEFBQWlEV3hxUVFOMFFTQnFRUVoyT2dBQUlBd2dBeUFOYkNBSUlCQnNha0VEZEVFZ2FrRUdkam9BQ0NBSlFRRnFJZ2dnQm1vdEFBQWhEU0FNSUFNZ0NTMEFBV3dnRUNBSUlBcHFMUUFBSWdoc2FrRURkRUVnYWtFR2Rqb0FBU0FNSUFNZ0NHd2dEU0FRYkdwQkEzUkJJR3BCQm5ZNkFBa2dERUVDYWlFTUlBbEJBbW9oQ1NBT1FRRnJJZzROQUFzZ0J5QUphaUVKSUF3Z0VXb2hEQ0FVUVFGckloUU5BQXNnQkVGQWF5RU1JQUVnQWlBRmFpQUtiR29nRDJvaENRTkFJQUFoRGdOQUlBWWdDV290QUFBaEFTQU1JQU1nQ1MwQUFHd2dFQ0FKSUFwcUxRQUFJZ0pzYWtFRGRFRWdha0VHZGpvQUFDQU1JQUlnQTJ3Z0FTQVFiR3BCQTNSQklHcEJCblk2QUFnZ0NVRUJhaUlCSUFacUxRQUFJUUlnRENBRElBa3RBQUZzSUJBZ0FTQUthaTBBQUNJQmJHcEJBM1JCSUdwQkJuWTZBQUVnRENBQklBTnNJQUlnRUd4cVFRTjBRU0JxUVFaMk9nQUpJQXhCQW1vaERDQUpRUUpxSVFrZ0RrRUJheUlPRFFBTElBY2dDV29oQ1NBTUlCRnFJUXdnQzBFQmF5SUxEUUFMREFFTElBRWdCQ0FQSUFNZ0NpQUFJQTBnRVVFSUVBa2dBU0FBSUFwc2FpQUVRVUJySUE4Z0F5QUtJQUFnRFNBUlFRZ1FDUXNnRlVHQURtb2tBQXYxRndFZ2Z5TUFRZEFEYXlJR0pBQWdBU0FCS0FJQUlnb2dBU2dDQkNJSUlBSnNJaFFnQTJvaUJ5QUljQ0lMUVFSMGFpQUhJQXRySWdsQkNIUnFOZ0lNSUFFZ0NpQUlJQUVvQWdnaUIyd2lERUVJZEdvaUhDQUpRUVowYWlBTFFRTjBhaUlMTmdJUUlBRWdDeUFNUVFaMElpSnFOZ0lVSUFCQ0FEY0NEQ0FBUWlnM0FoUWdBRUVBTmdJSUlBQkJCallDQUNBRFFRUjBJUXNDUUFKQUFrQWdCRUVDYXc0R0FRQUFBQUFCQUFzZ0JrRUFOZ0lNSUFZZ0J6WUNHQ0FHSUFnMkFoUWdCaUFGTmdJUUlBVkZCRUFNQVFzZ0JrSFFBR29pQUNBR1FReHFJQVpCRUdvZ0N5QUNRUVIwUVFCQkFFRVFRUkFRRENBQklBQVFEd3dCQ3lBR1FkQUFha0VBUVlBREVBTWFJQW9nRkVFSWRHb2dDMm9oRENBR1FnQTNBMGdnQmtGQWEwSUFOd01BSUFaQ0FEY0RPQ0FHUWdBM0F6QWdCa0lBTndNb0lBWkNBRGNESUNBR1FnQTNBeGdnQmtJQU53TVFRUUFoQlVFQUlRa0Nmd0pBSUFJRVFDQUFJQWhCcUg1c2FpZ0N4QUVOQVF0QkFDRUxRUUFNQVFzZ0JpQU1JQWhCQkhScklnUXRBQVVnQkMwQUJHb2dCQzBBQm1vZ0JDMEFCMm9pRmlBRUxRQURJQVF0QUFJZ0JDMEFBU0FFTFFBQWFtcHFJaFZxSWdvZ0JDMEFEeUFFTFFBT0lBUXRBQTBnQkMwQURHcHFhaUlZSUFRdEFBc2dCQzBBQ2lBRUxRQUpJQVF0QUFocWFtb2lGMm9pQkdzaUNUWUNGQ0FHSUFRZ0Ntb2lDellDRUVFQklSbEJBUXNoQkFKQUlBZEJBV3NnQWtZTkFDQUFJQWhCMkFGc2FpZ0N4QUZGQkVBTUFRc2dCaUFNSUFoQkNIUnFJZ0l0QUFVZ0FpMEFCR29nQWkwQUJtb2dBaTBBQjJvaUhTQUNMUUFESUFJdEFBSWdBaTBBQVNBQ0xRQUFhbXBxSWg1cUlnVWdBaTBBRHlBQ0xRQU9JQUl0QUEwZ0FpMEFER3BxYWlJZklBSXRBQXNnQWkwQUNpQUNMUUFKSUFJdEFBaHFhbW9pSUdvaUFtc2dDV29pQ1RZQ0ZDQUdJQUlnQldvZ0Myb2lDellDRUVFQklRVWdCRUVCYWlFRUN3Si9Ba0FnQTBVTkFDQUFRUlJyS0FJQVJRMEFJQVlnREVFQmF5SUNJQWhCQm5RaUVHb2lDaUFJUVFSMElnZHFMUUFBSUFvdEFBQnFJQW9nQ0VFRmRDSU5haTBBQUdvZ0NpQUlRVEJzSWc5cUxRQUFhaUlhSUFJZ0Qyb3RBQUFnQWlBTmFpMEFBQ0FDSUFkcUxRQUFJQUl0QUFCcWFtb2lHMm9pRVNBS0lCQnFJZ0lnRUdvaUNpQUhhaTBBQUNBS0xRQUFhaUFLSUExcUxRQUFhaUFLSUE5cUxRQUFhaUlRSUFJZ0Qyb3RBQUFnQWlBTmFpMEFBQ0FDSUFkcUxRQUFJQUl0QUFCcWFtb2lEMm9pQW1zaUJ6WUNJQ0FHSUFJZ0VXb2dDMm9pQ3pZQ0VFRUJJUkVnQkVFQmFpRUtRUUVNQVF0QkFDRUhJQVFoQ2tFQUN5RUNBa0FDUUFKQUFrQUNRQ0FESUFoQkFXdEhCRUFnQUNnQ25BTU5BUXNnQkEwQkRBSUxJQWNnREVFUWFpSUhJQWhCQm5RaUUyb2lBQ0FJUVFSMElnMXFMUUFBSUFBdEFBQnFJQUFnQ0VFRmRDSVNhaTBBQUdvZ0FDQUlRVEJzSWc1cUxRQUFhaUFISUE1cUxRQUFJQWNnRW1vdEFBQWdCeUFOYWkwQUFDQU1MUUFRYW1wcWFpSU1JQUFnRTJvaUFDQVRhaUlISUExcUxRQUFJQWN0QUFCcUlBY2dFbW90QUFCcUlBY2dEbW90QUFCcUloTWdBQ0FPYWkwQUFDQUFJQkpxTFFBQUlBQWdEV290QUFBZ0FDMEFBR3BxYWlJQWFpSU5hMm9oQnlBTUlBMXFJQXRxSVF0QkFTRVNJQUpCQVdvaEFpQUtRUUZxSVFvZ0VVVWdCRUVBUjNKRkJFQWdHaUFiYWlBUGFpQVFhaUFBSUF4cUlCTnFhMEVGZFNFSkRBTUxJQVJGRFFJTElBa2dCRUVEYW5VaENRc2dHU0FDUlhFZ0JYRUVRQ0FWSUJacUlCZHFJQmhxSUI4Z0lHb2dIV29nSG1wclFRVjFJUWNNQWdzZ0FrVU5BUXNnQnlBQ1FRTnFkU0VIQ3lBR0FuOENRQUpBQWtBQ1FDQUtRUUZyRGdNQUFRSURDeUFMUVFSMkRBTUxJQXRCQlhZTUFnc2dDMEVWYkVFS2Rnd0JDeUFMUVFaMkN5SUFOZ0lRQW44Z0J5QUpja1VFUUNBR0lBQTJBa2dnQmlBQU5nSk1JQVlnQURZQ1JDQUdJQUEyQWtBZ0JpQUFOZ0k4SUFZZ0FEWUNPQ0FHSUFBMkFqUWdCaUFBTmdJd0lBWWdBRFlDTENBR0lBQTJBaWdnQmlBQU5nSWtJQVlnQURZQ0lDQUdJQUEyQWh3Z0JpQUFOZ0lZSUFZZ0FEWUNGQ0FHUWRBQWFpRUhJQVpCRUdvaENVRUFEQUVMSUFZZ0FDQUphaUlFSUFkck5nSkFJQVlnQkNBSFFRRjFJZ0pyTmdJd0lBWWdBaUFFYWpZQ0lDQUdJQVFnQjJvMkFoQWdCaUFBSUFscklnUWdCMnMyQWt3Z0JpQUVJQUpyTmdJOElBWWdBaUFFYWpZQ0xDQUdJQVFnQjJvMkFod2dCaUFBSUFsQkFYVWlDbW9pQkNBSGF6WUNSQ0FHSUFRZ0FtczJBalFnQmlBQ0lBUnFOZ0lrSUFZZ0JDQUhhallDRkNBR0lBQWdDbXNpQUNBSGF6WUNTQ0FHSUFBZ0FtczJBamdnQmlBQUlBSnFOZ0lvSUFZZ0FDQUhhallDR0NBR1FkQUFhaUVISUFaQkVHb2hDVUVBQ3lFQUEwQWdCeUFKSUFCQkRIRnFLQUlBSWdKQi93RWdBa0gvQVVnYklnSkJBQ0FDUVFCS0d5SUNPZ0FCSUFjZ0Fqb0FBQ0FIUVFKcUlRY2dDU0FBUVFKcUlnQkJQbkZGUVFSMGFpRUpJQUJCZ0FKSERRQUxJQndnRkVFR2RHb2dBMEVEZEdvaEF5QUlRUVIwSVEwZ0NFRUdkQ0VVUVFBZ0NFRURkQ0lNYXlFVElBWkIwQUpxSVJ3Z0JrRkFheUVqUVFBaEMwRUFJUW9EUUNBR1FnQTNBMGdnSTBJQU53TUFJQVpDQURjRE9DQUdRZ0EzQXpBZ0JrSUFOd01vSUFaQ0FEY0RJQ0FHUWdBM0F4Z2dCa0lBTndNUVFRQWhDVUVBSVFCQkFDRUNJQmtFUUNBR0lBTWdFMm9pQUMwQUF5QUFMUUFDYWlJV0lBQXRBQUVnQUMwQUFHb2lGV29pQWlBQUxRQUhJQUF0QUFacUloZ2dBQzBBQlNBQUxRQUVhaUlYYWlJQWF5SUpOZ0lVSUFZZ0FDQUNhaUlBTmdJUVFRRWhBZ3NnQlFSQUlBWWdBeUFVYWlJRUxRQURJQVF0QUFKcUloMGdCQzBBQVNBRUxRQUFhaUllYWlJSUlBUXRBQWNnQkMwQUJtb2lIeUFFTFFBRklBUXRBQVJxSWlCcUlnUnJJQWxxSWdrMkFoUWdCaUFFSUFocUlBQnFJZ0EyQWhBZ0FrRUJhaUVDQzBFQUlRY0NmeUFSUlFSQUlBSWhDRUVBREFFTElBWWdBMEVCYXlJRUlBMXFJZ2dnREdvdEFBQWdDQzBBQUdvaUdpQUVJQXhxTFFBQUlBUXRBQUJxSWh0cUlnNGdDQ0FOYWlJRUlBMXFJZ2dnREdvdEFBQWdDQzBBQUdvaUVDQUVJQXhxTFFBQUlBUXRBQUJxSWc5cUlnUnJJZ2MyQWlBZ0JpQUVJQTVxSUFCcUlnQTJBaEFnQWtFQmFpRUlRUUVMSVFRQ1FBSkFBa0FDUUNBU1JRUkFJQUlOQVF3Q0N5QUhJQU5CQ0dvaURpQU5haUlISUF4cUxRQUFJQWN0QUFCcUlBd2dEbW90QUFBZ0F5MEFDR3BxSWc0Z0J5QU5haUlISUExcUlpRWdER290QUFBZ0lTMEFBR29pSVNBSElBeHFMUUFBSUFjdEFBQnFJaVJxSWlWcmFpRUhJQTRnSldvZ0FHb2hBQ0FFUVFGcUlRUWdDRUVCYWlFSUlCRkZJQUpCQUVkeVJRUkFJQm9nRzJvZ0Qyb2dFR29nRGlBa2FpQWhhbXRCQkhVaENRd0RDeUFDUlEwQ0N5QUpJQUpCQW1wMUlRa0xJQmtnQkVWeElBVnhCRUFnRlNBV2FpQVhhaUFZYWlBZklDQnFJQjFxSUI1cWEwRUVkU0VIREFJTElBUkZEUUVMSUFjZ0JFRUNhblVoQndzZ0JnSi9Ba0FDUUFKQUFrQWdDRUVCYXc0REFBRUNBd3NnQUVFRGRnd0RDeUFBUVFSMkRBSUxJQUJCRld4QkNYWU1BUXNnQUVFRmRnc2lBRFlDRUFKQUlBY2dDWEpGQkVBZ0JpQUFOZ0pJSUFZZ0FEWUNUQ0FHSUFBMkFrUWdCaUFBTmdKQUlBWWdBRFlDUENBR0lBQTJBamdnQmlBQU5nSTBJQVlnQURZQ01DQUdJQUEyQWl3Z0JpQUFOZ0lvSUFZZ0FEWUNKQ0FHSUFBMkFpQWdCaUFBTmdJY0lBWWdBRFlDR0NBR0lBQTJBaFFNQVFzZ0JpQUFJQWxxSWdRZ0IyczJBa0FnQmlBRUlBZEJBWFVpQW1zMkFqQWdCaUFDSUFScU5nSWdJQVlnQkNBSGFqWUNFQ0FHSUFBZ0NXc2lCQ0FIYXpZQ1RDQUdJQVFnQW1zMkFqd2dCaUFDSUFScU5nSXNJQVlnQkNBSGFqWUNIQ0FHSUFBZ0NVRUJkU0lJYWlJRUlBZHJOZ0pFSUFZZ0JDQUNhellDTkNBR0lBSWdCR28yQWlRZ0JpQUVJQWRxTmdJVUlBWWdBQ0FJYXlJQUlBZHJOZ0pJSUFZZ0FDQUNhellDT0NBR0lBQWdBbW8yQWlnZ0JpQUFJQWRxTmdJWUN5QUtJQnhxSVFCQkFDRUhJQVpCRUdvaENRTkFJQUFnQ1NBSFFRRjBRUXh4YWlnQ0FDSUNRZjhCSUFKQi93RklHeUlDUVFBZ0FrRUFTaHNpQWpvQUFTQUFJQUk2QUFBZ0FFRUNhaUVBSUFrZ0IwRUNhaUlIUVE1eFJVRUVkR29oQ1NBSFFjQUFSdzBBQ3lBRElDSnFJUU1nQ3lFQVFjQUFJUXBCQVNFTElBQkZEUUFMSUFFZ0JrSFFBR29RRHdzZ0JrSFFBMm9rQUF0U0FRSi9RWURBQUNnQ0FDSUJJQUJCQTJwQmZIRWlBbW9oQUFKQUlBSkJBQ0FBSUFGTkd3MEFJQUEvQUVFUWRFc0VRQ0FBRUFCRkRRRUxRWURBQUNBQU5nSUFJQUVQQzBHRXdBQkJNRFlDQUVGL0M3VUZBUVIvSUFBb0FoUWhBeUFBS0FJUUlRUWdBQ2dDQkNFRklBQW9BZ3dpQWlBQktRSUFOd0lBSUFJZ0FTa0NDRGNDQ0NBQ0lBVkJCSFFpQUdvaUFpQUJLUUlRTndJQUlBSWdBU2tDR0RjQ0NDQUFJQUpxSWdJZ0FTa0NJRGNDQUNBQ0lBRXBBaWczQWdnZ0FDQUNhaUlDSUFFcEFqQTNBZ0FnQWlBQktRSTROd0lJSUFBZ0Ftb2lBaUFCS1FKQU53SUFJQUlnQVNrQ1NEY0NDQ0FBSUFKcUlnSWdBU2tDVURjQ0FDQUNJQUVwQWxnM0FnZ2dBQ0FDYWlJQ0lBRXBBbUEzQWdBZ0FpQUJLUUpvTndJSUlBQWdBbW9pQWlBQktRSndOd0lBSUFJZ0FTa0NlRGNDQ0NBQUlBSnFJZ0lnQVNrQ2dBRTNBZ0FnQWlBQktRS0lBVGNDQ0NBQUlBSnFJZ0lnQVNrQ2tBRTNBZ0FnQWlBQktRS1lBVGNDQ0NBQUlBSnFJZ0lnQVNrQ29BRTNBZ0FnQWlBQktRS29BVGNDQ0NBQUlBSnFJZ0lnQVNrQ3NBRTNBZ0FnQWlBQktRSzRBVGNDQ0NBQUlBSnFJZ0lnQVNrQ3dBRTNBZ0FnQWlBQktRTElBVGNDQ0NBQUlBSnFJZ0lnQVNrQzBBRTNBZ0FnQWlBQktRTFlBVGNDQ0NBQUlBSnFJZ0lnQVNrQzRBRTNBZ0FnQWlBQktRTG9BVGNDQ0NBQUlBSnFJZ0FnQVNrQzhBRTNBZ0FnQUNBQktRTDRBVGNDQ0NBRUlBRXBBb0FDTndJQUlBUWdCVUVEZENJQWFpSUVJQUVwQW9nQ053SUFJQUFnQkdvaUJDQUJLUUtRQWpjQ0FDQUFJQVJxSWdRZ0FTa0NtQUkzQWdBZ0FDQUVhaUlFSUFFcEFxQUNOd0lBSUFBZ0JHb2lCQ0FCS1FLb0FqY0NBQ0FBSUFScUlnUWdBU2tDc0FJM0FnQWdBQ0FFYWlBQktRSzRBamNDQUNBRElBRXBBc0FDTndJQUlBQWdBMm9pQXlBQktRTElBamNDQUNBQUlBTnFJZ01nQVNrQzBBSTNBZ0FnQUNBRGFpSURJQUVwQXRnQ053SUFJQUFnQTJvaUF5QUJLUUxnQWpjQ0FDQUFJQU5xSWdNZ0FTa0M2QUkzQWdBZ0FDQURhaUlESUFFcEF2QUNOd0lBSUFBZ0Eyb2dBU2tDK0FJM0FnQUxid0VCZnlNQVFSQnJJZ0lrQUNBQ1FRQTJBZ3dnQUNBQ1FReHFFQUloQUFKL0lBRUNmeUFDS0FJTUlnRkJmMFlFUUVHQWdJQ0FlQ0FBRFFFYVFRRU1BZ3RCQVNBQURRRWFJQUZCQVdwQkFYWWlBRUVBSUFCcklBRkJBWEViQ3pZQ0FFRUFDeUVBSUFKQkVHb2tBQ0FBQ3pZQUlBSUVRQ0FBSUFFUUFnOExRUUVoQWlBQklBQkJBUkFVSWdBMkFnQWdBRUYvUndSL0lBRWdBRUVCY3pZQ0FFRUFCVUVCQ3d2YUJ3RU5meU1BUWNBRGF5SVJKQUFnQmtFRmFpRUpBa0FDUUNBQ1FRQklEUUFnQWlBSmFpQUVTdzBBSUFOQkFFZ05BQ0FESUFkcVFRVnFJQVZMRFFBZ0JDRUpJQU1oQ2d3QkN5QUFJQkVnQWlBRElBUWdCU0FKSUFkQkJXb2dDUkFKSUJFaEFFRUFJUUlMSUFBZ0NTQUtiQ0FDYW1vaUFDQUpJQWhCQVhaQkFYRkJBbkpzYWtFRmFpRUNRUkFnQm1zaERDQUpJQVpySVE0Z0JrRUNkaUVTSUFoQkFYRWhGQ0FBSUFscUlSVWdCeUVQQTBBZ0FrRUJheTBBQUNFQUlBSkJBbXN0QUFBaENDQUNRUU5yTFFBQUlRUWdBa0VFYXkwQUFDRUtJQUpCQldzdEFBQWhDeUFTSVEwRFFDQUJJQUl0QUFBaUF5QUxJQVFnQ0dvaUJVRUVkR29nQUNBS2FpSUxheUFGSUF0clFRSjBhbXBCRUdwQkJYVkJ3RFZxTFFBQU9nQUFJQUVnQWkwQUFTSUZJQW9nQUNBSWFpSUxRUVIwYWlBRElBUnFJZ3ByYWlBTElBcHJRUUowYWtFUWFrRUZkVUhBTldvdEFBQTZBQUVnQVNBQ0xRQUNJaEFnQkNBQUlBTnFJZ3BCQkhScUlBVWdDR29pQkd0cUlBb2dCR3RCQW5ScVFSQnFRUVYxUWNBMWFpMEFBRG9BQWlBQklBSXRBQU1pRXlBSUlBTWdCV29pQkVFRWRHb2dBQ0FRYWlJSWEyb2dCQ0FJYTBFQ2RHcEJFR3BCQlhWQndEVnFMUUFBT2dBRElBRkJCR29oQVNBQ1FRUnFJUUlnQUNFTElBTWhDaUFGSVFRZ0VDRUlJQk1oQUNBTlFRRnJJZzBOQUFzZ0FTQU1haUVCSUFJZ0Rtb2hBaUFQUVFGcklnOE5BQXNnRkNBVmFrRUNhaUlJSUFsQkJXeHFJUUFnQjBFQ2RpRUtRY0FBSUFacklSSWdDVUVCZENFUElBRWdCMEVFZEdzaEFpQUpRUUowSUFacklRZEJBQ0FKYXlJTFFRRjBJUk1EUUNBR0lRRURRQ0FDSUFnZ0Qyb3RBQUFpQXlBQUlBOXFMUUFBSUFBZ0NXb3RBQUFpRENBQUlCTnFMUUFBSWdScUlnVnJJQVZCQW5ScmFpQUFMUUFBSWcwZ0FDQUxhaTBBQUNJRmFrRVViR3BCRUdwQkJYVkJ3RFZxTFFBQUlBSXRBREJxUVFGcVFRRjJPZ0F3SUFJZ0NDQUphaTBBQUNJUUlBd2dCQ0FGYWlJT1FRUjBhaUFESUExcUlneHJJQTRnREd0QkFuUnFha0VRYWtFRmRVSEFOV290QUFBZ0FpMEFJR3BCQVdwQkFYWTZBQ0FnQWlBSUxRQUFJZ3dnRFNBRElBUnFJZzVCQkhScUlBVWdFR29pRFdzZ0RpQU5hMEVDZEdwcVFSQnFRUVYxUWNBMWFpMEFBQ0FDTFFBUWFrRUJha0VCZGpvQUVDQUNJQWdnQzJvdEFBQWdCU0FESUJCcUlnTkJCSFJxSUFRZ0RHb2lCR3NnQXlBRWEwRUNkR3BxUVJCcVFRVjFRY0ExYWkwQUFDQUNMUUFBYWtFQmFrRUJkam9BQUNBSVFRRnFJUWdnQWtFQmFpRUNJQUJCQVdvaEFDQUJRUUZySWdFTkFBc2dBaUFTYWlFQ0lBQWdCMm9oQUNBSElBaHFJUWdnQ2tFQmF5SUtEUUFMSUJGQndBTnFKQUFMNXdZQkRIOENRQ0FCUVFSUEJFQWdBMEVDZGtFQ2FpRUxRUVFoQVFOQUFrQWdBRUVCYXlJR0xRQUFJZ2NnQUMwQUFDSUlheUlDSUFKQkgzVWlBbW9nQW5NaUFpQURUdzBBSUFCQkFtc2lEeTBBQUNJS0lBZHJJZ2tnQ1VFZmRTSUphaUFKY3lBRVR3MEFJQUF0QUFFaURDQUlheUlKSUFsQkgzVWlDV29nQ1hNZ0JFOE5BQUovQWtBZ0FpQUxTUVJBSUFBdEFBSWhEZ0ovSUFRZ0FFRURheUlKTFFBQUlnSWdCMnNpRFNBTlFSOTFJZzFxSUExelN3UkFJQVlnRENBSElBaHFJQXBxSWdaQkFYUnFJQUpxUVFScVFRTjJPZ0FBSUE4Z0FpQUdha0VDYWtFQ2Rqb0FBQ0FHSUFKQkEyeHFJQUJCQkdzdEFBQkJBWFJxUVFScVFRTjJEQUVMSUFZaENTQUhJQXhxSUFwQkFYUnFRUUpxUVFKMkN5RUNJQWtnQWpvQUFDQU9JQWhySWdJZ0FrRWZkU0lDYWlBQ2N5QUVUdzBCSUFBZ0J5QU1haUFJYWlJR0lBNXFRUUpxUVFKMk9nQUJJQUFnQ2lBR1FRRjBhaUFPYWtFRWFrRURkam9BQUNBR0lBNUJBMnhxSUFBdEFBTkJBWFJxUVFScVFRTjJJUVlnQUVFQ2Fnd0NDeUFHSUFjZ0RHb2dDa0VCZEdwQkFtcEJBblk2QUFBTElBZ2dDbW9nREVFQmRHcEJBbXBCQW5ZaEJpQUFDeUFHT2dBQUN5QUFJQVZxSVFBZ0FVRUJheUlCRFFBTERBRUxJQUVnQW1wQkFXc3RBQUFpQmtFQmFpRUpRUUFnQm1zaENrRUVJUUVEUUFKQUlBQkJBV3NpRHkwQUFDSUhJQUF0QUFBaUNHc2lBaUFDUVI5MUlnSnFJQUp6SUFOUERRQWdBRUVDYXlJTkxRQUFJZ3dnQjJzaUFpQUNRUjkxSWdKcUlBSnpJQVJQRFFBZ0FDMEFBU0lPSUFocklnSWdBa0VmZFNJQ2FpQUNjeUFFVHcwQUlBQXRBQUloQ3lBR0lRSWdCQ0FBUVFOckxRQUFJaEVnQjJzaUVDQVFRUjkxSWhCcUlCQnpTd1JBSUEwZ0RDQUtJQVlnQnlBSWFrRUJha0VCZGlBTVFRRjBheUFSYWtFQmRTSUNJQUlnQmtvYklBSWdDa2diYWpvQUFDQUpJUUlMSUE4Z0J3Si9JQVFnQ3lBSWF5SU5JQTFCSDNVaURXb2dEWE5MQkVBZ0FDQU9JQW9nQmlBSElBaHFRUUZxUVFGMklBNUJBWFJySUF0cVFRRjFJZ3NnQmlBTFNCc2dDaUFMU2h0cU9nQUJJQUpCQVdvaEFndEJBQ0FDYXlJTEN5QUNJQXdnRG1zZ0NDQUhhMEVDZEdwQkJHcEJBM1VpQnlBQ0lBZElHeUFISUF0SUd5SUNha0hBTldvdEFBQTZBQUFnQUNBSUlBSnJRY0ExYWkwQUFEb0FBQXNnQUNBRmFpRUFJQUZCQVdzaUFRMEFDd3NMaUFJQkIzOGdBQ2dDQkNFRUFrQWdBQ2dDREVFRGRDSUhJQUFvQWhBaUNHc2lBa0VnVGdSQUlBUW9BQUFpQTBFWWRDQURRUWgwUVlDQS9BZHhjaUFEUVFoMlFZRCtBM0VnQTBFWWRuSnlJUU1nQUNnQ0NDSUNSUTBCSUFNZ0FuUWdCQzBBQkVFSUlBSnJkbkloQXd3QkN5QUNRUUZJQkVBTUFRc2dCQzBBQUNBQUtBSUlJZ1ZCR0dvaUJuUWhBeUFDSUFWcVFRaHJJZ0pCQVVnTkFBTkFJQVF0QUFFZ0JrRUlheUlHZENBRGNpRURJQUpCQ0VvaEJTQUVRUUZxSVFRZ0FrRUlheUVDSUFVTkFBc0xJQUFnQVNBSWFpSUVOZ0lRSUFBZ0JFRUhjVFlDQ0VGL0lRSWdCQ0FIVFFSL0lBQWdBQ2dDQUNBRVFRTjJhallDQkNBRFFTQWdBV3QyQlVGL0N3c0RBQUVMeHdFQkJIOGdBQ2dDQkNFQ0FrQWdBQ2dDREVFRGRDQUFLQUlRYXlJRFFTQk9CRUFnQWlnQUFDSUJRUmgwSUFGQkNIUkJnSUQ4QjNGeUlBRkJDSFpCZ1A0RGNTQUJRUmgyY25JaEFTQUFLQUlJSWdCRkRRRWdBU0FBZENBQ0xRQUVRUWdnQUd0MmNnOExJQU5CQVVnRVFFRUFEd3NnQWkwQUFDQUFLQUlJSWdCQkdHb2lCSFFoQVNBQUlBTnFRUWhySWdCQkFVZ05BQU5BSUFJdEFBRWdCRUVJYXlJRWRDQUJjaUVCSUFCQkNFb2hBeUFDUVFGcUlRSWdBRUVJYXlFQUlBTU5BQXNMSUFFTDh3Y0JFbjhqQUVHQURtc2lEeVFBSUFaQkJXb2hDUUpBQWtBZ0FrRUFTQTBBSUFJZ0NXb2dCRXNOQUNBRFFRQklEUUFnQXlBSGFrRUZhaUFGU3cwQUlBTWhDZ3dCQ3lBQUlBOUJ3QXBxSWdBZ0FpQURJQVFnQlNBSklBZEJCV29nQ1JBSklBa2hCRUVBSVFJTElBQWdCQ0FLYkNBQ2Ftb2dCR29pQUNBRVFRVnNhaUVDSUFSQkFYUWhFQ0FIUVFKMklSSkJBQ0FFYXlJTFFRRjBJUllnQkVFQ2RDQUdhMEVGYXlFVElBOGdDVUVDZENJWGFpRURJQWxCQTNRaEdFRjdJQVpyUVFKMElSa2dDVUVEYkVFQ2RDRWFBMEFnQ1NFRkEwQWdBeUFZYWlBQUlCQnFMUUFBSWdvZ0FpQVFhaTBBQUNBQ0lBUnFMUUFBSWhFZ0FpQVdhaTBBQUNJTWFpSU5heUFOUVFKMGEyb2dBaTBBQUNJT0lBSWdDMm90QUFBaURXcEJGR3hxTmdJQUlBTWdGMm9nQUNBRWFpMEFBQ0lWSUJFZ0RDQU5haUlVUVFSMGFpQUtJQTVxSWhGcmFpQVVJQkZyUVFKMGFqWUNBQ0FESUFBdEFBQWlFU0FPSUFvZ0RHb2lGRUVFZEdvZ0RTQVZhaUlPYTJvZ0ZDQU9hMEVDZEdvMkFnQWdBeUFaYWlBQUlBdHFMUUFBSUEwZ0NpQVZhaUlLUVFSMGFpQU1JQkZxSWd4cmFpQUtJQXhyUVFKMGFqWUNBQ0FBUVFGcUlRQWdBMEVFYWlFRElBSkJBV29oQWlBRlFRRnJJZ1VOQUFzZ0FpQVRhaUVDSUFBZ0Uyb2hBQ0FESUJwcUlRTWdFa0VCYXlJU0RRQUxRUkFnQm1zaERpQUdRUUoySVJJZ0R5QUlRUUowYWtFSWFpRUlJQTlCRkdvaEJBTkFJQVJCQkdzb0FnQWhBaUFFUVFocktBSUFJUUFnQkVFTWF5Z0NBQ0VGSUFSQkVHc29BZ0FoQ1NBRVFSUnJLQUlBSVF3Z0VpRU5BMEFnQVNBRUlnc29BZ0FpQmlBTUlBQWdCV29pQTBFRWRHb2dBaUFKYWlJRWF5QURJQVJyUVFKMGFtcEJnQVJxUVFwMVFjQTFhaTBBQUNBSUlnTW9BZ0JCRUdwQkJYVkJ3RFZxTFFBQWFrRUJha0VCZGpvQUFDQUJJQXNvQWdRaUNpQUpJQUFnQW1vaUJFRUVkR29nQlNBR2FpSUlheUFFSUFoclFRSjBhbXBCZ0FScVFRcDFRY0ExYWkwQUFDQURLQUlFUVJCcVFRVjFRY0ExYWkwQUFHcEJBV3BCQVhZNkFBRWdBU0FMS0FJSUloQWdCU0FDSUFacUlnUkJCSFJxSUFBZ0Ntb2lCV3NnQkNBRmEwRUNkR3BxUVlBRWFrRUtkVUhBTldvdEFBQWdBeWdDQ0VFUWFrRUZkVUhBTldvdEFBQnFRUUZxUVFGMk9nQUNJQUVnQ3lnQ0RDSVRJQUFnQmlBS2FpSUVRUVIwYWlBQ0lCQnFJZ0JySUFRZ0FHdEJBblJxYWtHQUJHcEJDblZCd0RWcUxRQUFJQU1vQWd4QkVHcEJCWFZCd0RWcUxRQUFha0VCYWtFQmRqb0FBeUFCUVFScUlRRWdBMEVRYWlFSUlBdEJFR29oQkNBQ0lRd2dCaUVKSUFvaEJTQVFJUUFnRXlFQ0lBMUJBV3NpRFEwQUN5QUJJQTVxSVFFZ0EwRWthaUVJSUF0QkpHb2hCQ0FIUVFGcklnY05BQXNnRDBHQURtb2tBQXZnQndFTmZ5TUFRWUFPYXlJUkpBQWdCa0VGYWlFSkFrQUNRQ0FDUVFCSURRQWdBaUFKYWlBRVN3MEFJQU5CQUVnTkFDQUhRUVZxSWc0Z0Eyb2dCVXNOQUNBRUlRa2dBeUVLREFFTElBQWdFVUhBQ21vaUFDQUNJQU1nQkNBRklBa2dCMEVGYWlJT0lBa1FDVUVBSVFJTElBNEVRQ0FKSUFacklSTWdCa0VDZGlFU0lBQWdDU0FLYkNBQ2FtcEJCV29oQWlBUklRQURRQ0FDUVFGckxRQUFJUWtnQWtFQ2F5MEFBQ0VESUFKQkEyc3RBQUFoQlNBQ1FRUnJMUUFBSVFvZ0FrRUZheTBBQUNFTElCSWhEUU5BSUFBZ0FpMEFBQ0lFSUFzZ0F5QUZhaUlNUVFSMGFpQUpJQXBxSWd0cklBd2dDMnRCQW5ScWFqWUNBQ0FBSUFJdEFBRWlEQ0FLSUFNZ0NXb2lDMEVFZEdvZ0JDQUZhaUlLYTJvZ0N5QUthMEVDZEdvMkFnUWdBQ0FDTFFBQ0lnOGdCU0FFSUFscUlnVkJCSFJxSUFNZ0RHb2lDbXRxSUFVZ0NtdEJBblJxTmdJSUlBQWdBaTBBQXlJVUlBTWdCQ0FNYWlJRFFRUjBhaUFKSUE5cUlnVnJhaUFESUFWclFRSjBhallDRENBQVFSQnFJUUFnQWtFRWFpRUNJQWtoQ3lBRUlRb2dEQ0VGSUE4aEF5QVVJUWtnRFVFQmF5SU5EUUFMSUFJZ0Uyb2hBaUFPUVFGcklnNE5BQXNMSUJFZ0JrRUNkQ0lFYWlJSklBWkJGR3hxSVFJZ0NTQUlRUUpxSUFac1FRSjBhaUVBSUFkQkFuWWhDRUhBQUNBR2F5RVVRUUFnQm1zaURrRURkQ0VUSUFaQkEzUWhCU0FHUVFOc1FRSjBJUWNEUUNBR0lRTURRQ0FCSUFVZ0NXb29BZ0FpQ2lBQ0lBVnFLQUlBSUFJZ0JHb29BZ0FpRUNBQ0lCTnFLQUlBSWd4cUlndHJJQXRCQW5ScmFpQUNLQUlBSWcwZ0FpQU9RUUowSWc5cUtBSUFJZ3RxUVJSc2FrR0FCR3BCQ25WQndEVnFMUUFBSUFBZ0JXb29BZ0JCRUdwQkJYVkJ3RFZxTFFBQWFrRUJha0VCZGpvQU1DQUJJQVFnQ1dvb0FnQWlFaUFRSUFzZ0RHb2lGVUVFZEdvZ0NpQU5haUlRYXlBVklCQnJRUUowYW1wQmdBUnFRUXAxUWNBMWFpMEFBQ0FBSUFScUtBSUFRUkJxUVFWMVFjQTFhaTBBQUdwQkFXcEJBWFk2QUNBZ0FTQUpLQUlBSWhBZ0RTQUtJQXhxSWhWQkJIUnFJQXNnRW1vaURXc2dGU0FOYTBFQ2RHcHFRWUFFYWtFS2RVSEFOV290QUFBZ0FDZ0NBRUVRYWtFRmRVSEFOV290QUFCcVFRRnFRUUYyT2dBUUlBRWdDU0FQYWlnQ0FDQUxJQW9nRW1vaUNrRUVkR29nRENBUWFpSU1heUFLSUF4clFRSjBhbXBCZ0FScVFRcDFRY0ExYWkwQUFDQUFJQTlxS0FJQVFSQnFRUVYxUWNBMWFpMEFBR3BCQVdwQkFYWTZBQUFnQUVFRWFpRUFJQWxCQkdvaENTQUJRUUZxSVFFZ0FrRUVhaUVDSUFOQkFXc2lBdzBBQ3lBQklCUnFJUUVnQUNBSGFpRUFJQUlnQjJvaEFpQUhJQWxxSVFrZ0NFRUJheUlJRFFBTElCRkJnQTVxSkFBTHBnUUJDWDhqQUVIQUEyc2lDeVFBSUFaQkJXb2hDUUpBQWtBZ0FrRUFTQTBBSUFJZ0NXb2dCRXNOQUNBRFFRQklEUUFnQXlBSGFpQUZTdzBBSUFRaENTQURJUW9NQVFzZ0FDQUxJQUlnQXlBRUlBVWdDU0FISUFrUUNTQUxJUUJCQUNFQ0MwRVFJQVpySVE0Z0NTQUdheUVQSUFaQkFuWWhFQ0FBSUFrZ0Ntd2dBbXBxUVFWcUlRQURRQ0FBUVFGckxRQUFJUWtnQUVFQ2F5MEFBQ0VDSUFCQkEyc3RBQUFoQXlBQVFRUnJMUUFBSVFvZ0FFRUZheTBBQUNFR0lCQWhEQU5BSUFFZ0FDMEFBQ0lFSUFZZ0FpQURhaUlGUVFSMGFpQUpJQXBxSWdacklBVWdCbXRCQW5ScWFrRVFha0VGZFVIQU5Xb3RBQUFnQWlBRElBZ2Jha0VCYWtFQmRqb0FBQ0FCSUFBdEFBRWlCU0FLSUFJZ0NXb2lCa0VFZEdvZ0F5QUVhaUlLYTJvZ0JpQUthMEVDZEdwQkVHcEJCWFZCd0RWcUxRQUFJQWtnQWlBSUcycEJBV3BCQVhZNkFBRWdBU0FBTFFBQ0lnMGdBeUFFSUFscUlnWkJCSFJxSUFJZ0JXb2lBMnRxSUFZZ0EydEJBblJxUVJCcVFRVjFRY0ExYWkwQUFDQUVJQWtnQ0J0cVFRRnFRUUYyT2dBQ0lBRWdBQzBBQXlJUklBSWdCQ0FGYWlJRFFRUjBhaUFKSUExcUlnSnJhaUFESUFKclFRSjBha0VRYWtFRmRVSEFOV290QUFBZ0JTQUVJQWdiYWtFQmFrRUJkam9BQXlBQlFRUnFJUUVnQUVFRWFpRUFJQWtoQmlBRUlRb2dCU0VESUEwaEFpQVJJUWtnREVFQmF5SU1EUUFMSUFFZ0Rtb2hBU0FBSUE5cUlRQWdCMEVCYXlJSERRQUxJQXRCd0FOcUpBQUx6UVFCREg4akFFSEFBMnNpRHlRQUFrQUNRQ0FDUVFCSURRQWdBaUFHYWlBRVN3MEFJQU5CQUVnTkFDQURJQWRxUVFWcUlBVkxEUUFnQXlFSkRBRUxJQUFnRHlBQ0lBTWdCQ0FGSUFZZ0IwRUZhaUFHRUFrZ0R5RUFJQVloQkVFQUlRSUxJQUFnQkNBSmJDQUNhbW9nQkdvaUFDQUVRUVZzYWlFQ0lBQWdCQ0FJUVFKcWJHb2hBeUFIUVFKMklSRkJ3QUFnQm1zaEV5QUVRUUYwSVFjZ0JFRUNkQ0FHYXlFSVFRQWdCR3NpQ1VFQmRDRVVBMEFnQmlFRkEwQWdBU0FBSUFkcUxRQUFJZ29nQWlBSGFpMEFBQ0FDSUFScUxRQUFJZ3NnQWlBVWFpMEFBQ0lNYWlJTmF5QU5RUUowYTJvZ0FpMEFBQ0lPSUFJZ0NXb3RBQUFpRFdwQkZHeHFRUkJxUVFWMVFjQTFhaTBBQUNBRElBZHFMUUFBYWtFQmFrRUJkam9BTUNBQklBQWdCR290QUFBaUVpQUxJQXdnRFdvaUVFRUVkR29nQ2lBT2FpSUxheUFRSUF0clFRSjBhbXBCRUdwQkJYVkJ3RFZxTFFBQUlBTWdCR290QUFCcVFRRnFRUUYyT2dBZ0lBRWdBQzBBQUNJTElBNGdDaUFNYWlJUVFRUjBhaUFOSUJKcUlnNXJJQkFnRG10QkFuUnFha0VRYWtFRmRVSEFOV290QUFBZ0F5MEFBR3BCQVdwQkFYWTZBQkFnQVNBQUlBbHFMUUFBSUEwZ0NpQVNhaUlLUVFSMGFpQUxJQXhxSWd4cklBb2dER3RCQW5ScWFrRVFha0VGZFVIQU5Xb3RBQUFnQXlBSmFpMEFBR3BCQVdwQkFYWTZBQUFnQTBFQmFpRURJQUJCQVdvaEFDQUJRUUZxSVFFZ0FrRUJhaUVDSUFWQkFXc2lCUTBBQ3lBQklCTnFJUUVnQXlBSWFpRURJQUlnQ0dvaEFpQUFJQWhxSVFBZ0VVRUJheUlSRFFBTElBOUJ3QU5xSkFBTDZnWUJDSDhDUUNBQUtBSUFJZ0VvQWhSRkRRQWdBVUVBTmdJVUlBRW9BaGdOQUNBQUlBQW9BaXhCQVdzMkFpd0xBa0FnQVNnQ1BFVU5BQ0FCUVFBMkFqd2dBVUZBYXlnQ0FBMEFJQUFnQUNnQ0xFRUJhellDTEFzQ1FDQUJLQUprUlEwQUlBRkJBRFlDWkNBQktBSm9EUUFnQUNBQUtBSXNRUUZyTmdJc0N3SkFJQUVvQW93QlJRMEFJQUZCQURZQ2pBRWdBU2dDa0FFTkFDQUFJQUFvQWl4QkFXczJBaXdMQWtBZ0FTZ0N0QUZGRFFBZ0FVRUFOZ0swQVNBQktBSzRBUTBBSUFBZ0FDZ0NMRUVCYXpZQ0xBc0NRQ0FCS0FMY0FVVU5BQ0FCUVFBMkF0d0JJQUVvQXVBQkRRQWdBQ0FBS0FJc1FRRnJOZ0lzQ3dKQUlBRW9Bb1FDUlEwQUlBRkJBRFlDaEFJZ0FTZ0NpQUlOQUNBQUlBQW9BaXhCQVdzMkFpd0xBa0FnQVNnQ3JBSkZEUUFnQVVFQU5nS3NBaUFCS0FLd0FnMEFJQUFnQUNnQ0xFRUJhellDTEFzQ1FDQUJLQUxVQWtVTkFDQUJRUUEyQXRRQ0lBRW9BdGdDRFFBZ0FDQUFLQUlzUVFGck5nSXNDd0pBSUFFb0F2d0NSUTBBSUFGQkFEWUMvQUlnQVNnQ2dBTU5BQ0FBSUFBb0FpeEJBV3MyQWl3TEFrQWdBU2dDcEFORkRRQWdBVUVBTmdLa0F5QUJLQUtvQXcwQUlBQWdBQ2dDTEVFQmF6WUNMQXNDUUNBQktBTE1BMFVOQUNBQlFRQTJBc3dESUFFb0F0QUREUUFnQUNBQUtBSXNRUUZyTmdJc0N3SkFJQUVvQXZRRFJRMEFJQUZCQURZQzlBTWdBU2dDK0FNTkFDQUFJQUFvQWl4QkFXczJBaXdMQWtBZ0FTZ0NuQVJGRFFBZ0FVRUFOZ0tjQkNBQktBS2dCQTBBSUFBZ0FDZ0NMRUVCYXpZQ0xBc0NRQ0FCS0FMRUJFVU5BQ0FCUVFBMkFzUUVJQUVvQXNnRURRQWdBQ0FBS0FJc1FRRnJOZ0lzQ3dKQUlBRW9BdXdFUlEwQUlBRkJBRFlDN0FRZ0FTZ0M4QVFOQUNBQUlBQW9BaXhCQVdzMkFpd0xJQUFvQWpnaEJnTkFBa0FnQmcwQUlBQW9BaHdoQjBFQUlRSkIvLy8vL3djaEEwRUFJUVFEUUNBQklBUkJLR3hxSWdVb0FoZ0VRQ0FGSUFJZ0JTZ0NFQ0lGSUFOSUlnZ2JJUUlnQlNBRElBZ2JJUU1MSUFSQkFXb2lCQ0FIVFEwQUN5QUNSUTBBSUFBb0Fnd2dBQ2dDRUNJRVFRUjBhaUlESUFJb0FnQTJBZ0FnQXlBQ0tBSWtOZ0lNSUFNZ0FpZ0NIRFlDQkNBRElBSW9BaUEyQWdnZ0FDQUVRUUZxTmdJUUlBSkJBRFlDR0NBQ0tBSVVEUUVnQUNBQUtBSXNRUUZyTmdJc0RBRUxDeUFBUVFBMkFqQWdBRUwvL3dNM0FpUUwyUThCQ244Z0FpQUFLQUlJSWdrb0FnQkdCRUFnQUVFQU5nSTBJQUFvQWpnaUFrVWhFUUpBSUFGRkJFQWdDU0FETmdJTUlBbEJBRFlDRkNBSklCRTJBaGdnQ1NBRU5nSVFJQWtnQXpZQ0NDQUNEUUVnQUNBQUtBSXNRUUZxTmdJc0RBRUxJQVVFUUNBQVFnQTNBaEFnQUJBYkFrQWdBU2dDQUVVRVFDQUFLQUk0UlEwQkN5QUFRZ0EzQWhBTElBQW9BZ2dpQWtFRFFRSWdBU2dDQkNJQkd6WUNGQ0FBUVFCQi8vOERJQUViTmdJa0lBSWdFVFlDR0NBQ1FRQTJBaEFnQWtJQU53SUlJQUJDZ1lDQWdCQTNBaWdNQVFzQ1FBSkFJQUVvQWdnRVFFRUFJUWtEUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQUVnQ1VFVWJHb2lBaWdDREVFQmF3NEdBQUVDQXdRRkNRc2dBQ2dDR0NJS1JRMElJQU1nQWlnQ0VHc2hDeUFBS0FJQUlReEJBQ0VDQTBBQ1FDQU1JQUpCS0d4cUlnZ29BaFJCQVd0QkFVMEVRQ0FJS0FJSUlBdEdEUUVMSUFKQkFXb2lBaUFLUncwQkRBb0xDeUFDUVFCSURRZ2dDRUVBTmdJVUlBQWdBQ2dDS0VFQmF6WUNLQ0FJS0FJWURRVWdBQ0FBS0FJc1FRRnJOZ0lzSUFsQkFXb2hDUXdHQ3lBQUtBSVlJZ3BGRFFjZ0FpZ0NGQ0VMSUFBb0FnQWhERUVBSVFJRFFBSkFJQXdnQWtFb2JHb2lDQ2dDRkVFRFJnUkFJQWdvQWdnZ0MwWU5BUXNnQWtFQmFpSUNJQXBIRFFFTUNRc0xJQUpCQUVnTkJ5QUlRUUEyQWhRZ0FDQUFLQUlvUVFGck5nSW9JQWdvQWhnTkJDQUFJQUFvQWl4QkFXczJBaXdnQ1VFQmFpRUpEQVVMSUFBb0FpUWlDRUgvL3dOR0RRWWdDQ0FDS0FJWUlndEpEUVlnQUNnQ0dDSUlSUTBHSUFJb0FoQWhEeUFBS0FJQUlReEJBQ0VDQTBBQ1FBSkFJQXdnQWtFb2JHb2lDaWdDRkVFRFJ3MEFJQW9vQWdnZ0MwY05BQ0FLUVFBMkFoUWdBQ0FBS0FJb1FRRnJOZ0lvSUFvb0FoZ05BU0FBSUFBb0FpeEJBV3MyQWl3TUFRc2dBa0VCYWlJQ0lBaEhEUUVMQ3lBSVFRRWdDRUVCU3hzaENpQURJQTlySVE5QkFDRUNBMEFDUUNBTUlBSkJLR3hxSWdnb0FoUWlEVUVCYTBFQlRRUkFJQWdvQWdnZ0QwWU5BUXNnQWtFQmFpSUNJQXBIRFFFTUNBc0xJQUpCQUVnTkJpQU5RUUpKRFFZZ0NFRUROZ0lVSUFnZ0N6WUNDQ0FKUVFGcUlRa01CQXNnQUNBQ0tBSWNJZ28yQWlRZ0FDZ0NHQ0lMUlEwQ0lBQW9BZ0FoREVFQUlRSWdDa0gvL3dOR0JFQURRQUpBSUF3Z0FrRW9iR29pQ0NnQ0ZFRURSdzBBSUFoQkFEWUNGQ0FBSUFBb0FpaEJBV3MyQWlnZ0NDZ0NHQTBBSUFBZ0FDZ0NMRUVCYXpZQ0xBc2dBa0VCYWlJQ0lBdEhEUUFNQkFzQUN3TkFBa0FnRENBQ1FTaHNhaUlJS0FJVVFRTkhEUUFnQ0NnQ0NDQUtUUTBBSUFoQkFEWUNGQ0FBSUFBb0FpaEJBV3MyQWlnZ0NDZ0NHQTBBSUFBZ0FDZ0NMRUVCYXpZQ0xBc2dBa0VCYWlJQ0lBdEhEUUFMREFJTElBQVFHeUFBUVFFMkFqUkJBQ0VESUFsQkFXb2hDUXdDQ3lBQUtBSWtJZ2hCLy84RFJnMERJQWdnQWlnQ0dDSUtTUTBEQWtBZ0FDZ0NHQ0lMUlEwQUlBQW9BZ0FoREVFQUlRSURRQUpBSUF3Z0FrRW9iR29pQ0NnQ0ZFRURSdzBBSUFnb0FnZ2dDa2NOQUNBSVFRQTJBaFFnQUNBQUtBSW9RUUZyTmdJb0lBZ29BaGdOQWlBQUlBQW9BaXhCQVdzMkFpd01BZ3NnQWtFQmFpSUNJQXRIRFFBTEN5QUFLQUlvSWdnZ0MwOE5BeUFBS0FJSUlnSkJBellDRkNBQ0lBUTJBaEFnQWlBS05nSUlJQUlnQXpZQ0RDQUNJQUFvQWpoRk5nSVlRUUVoRGlBQUlBaEJBV28yQWlnZ0FDQUFLQUlzUVFGcU5nSXNDeUFKUVFGcUlRa01BQXNBQ3lBQUtBSW9JZ2dnQUNnQ0dDSUxTUTBCSUFoRkJFQkJBQ0VJREFJTElBQW9BZ0FoQ2tFQUlRbEJmeUVCQWtBZ0NFRUJSd1JBSUFoQkFYRWhEMEVBSVFJZ0NFRitjU0lPSVF3RFFDQUtJQUpCS0d4cUlnMG9BaFJCQVd0QkFVMEVRQ0FOS0FJSUlnMGdDU0FCUVg5R0lBa2dEVXB5SWcwYklRa2dBaUFCSUEwYklRRUxJQW9nQWtFQmNpSU5RU2hzYWlJUUtBSVVRUUZyUVFKSkJFQWdFQ2dDQ0NJUUlBa2dBVUYvUmlBSklCQktjaUlRR3lFSklBMGdBU0FRR3lFQkN5QUNRUUpxSVFJZ0RFRUNheUlNRFFBTElBOUZEUUVMSUFvZ0RrRW9iR29pQWlnQ0ZFRUJhMEVCU3cwQUlBNGdEaUFCSUFGQmYwWWJJQUlvQWdnZ0NVZ2JJUUVMSUFGQkFFZ05BU0FLSUFGQktHeHFJZ0ZCQURZQ0ZDQUFJQWhCQVdzaUNEWUNLQ0FCS0FJWURRRWdBQ0FBS0FJc1FRRnJOZ0lzREFFTElBNE5BU0FBS0FJWUlRc2dBQ2dDS0NFSUN5QUlJQXRQRFFBZ0FDZ0NDQ0lCSUJFMkFoZ2dBVUVDTmdJVUlBRWdCRFlDRUNBQklBTTJBZ2dnQVNBRE5nSU1JQUFnQ0VFQmFqWUNLQ0FBSUFBb0FpeEJBV28yQWl3TElBQW9BZ2dpQVNBSE5nSWdJQUVnQmpZQ0hDQUJJQVUyQWlRQ1FDQUFLQUk0UlFSQUlBQW9BaXdpQVNBQUtBSWNJZ05ORFFFZ0FDZ0NBQ0VHQTBCQi8vLy8vd2NoQlVFQUlRbEJBQ0VDQTBBZ0JpQUNRU2hzYWlJRUtBSVlCRUFnQkNBSklBUW9BaEFpQkNBRlNDSUhHeUVKSUFRZ0JTQUhHeUVGQ3lBQ1FRRnFJZ0lnQTAwTkFBc0NRQ0FKUlEwQUlBQW9BZ3dnQUNnQ0VDSUVRUVIwYWlJQ0lBa29BZ0EyQWdBZ0FpQUpLQUlrTmdJTUlBSWdDU2dDSERZQ0JDQUNJQWtvQWlBMkFnZ2dBQ0FFUVFGcU5nSVFJQWxCQURZQ0dDQUpLQUlVRFFBZ0FDQUJRUUZySWdFMkFpd0xJQUVnQTBzTkFBc01BUXNnQVNnQ0FDRUNJQUFvQWd3Z0FDZ0NFQ0lEUVFSMGFpSUJJQVUyQWd3Z0FTQUNOZ0lBSUFFZ0J6WUNDQ0FCSUFZMkFnUWdBQ0FEUVFGcU5nSVFJQUFvQWh3aEF3c2dBQ2dDQUNBRFFRRnFFQjBMQzhjRUFneC9BbjVCQnlFRkl3QkJFR3NpQ3lFTUEwQWdBU0FGU3dSQVFRQWdCV3NoQnlBRklRWURRQ0FBSUFaQktHeHFJZ0lvQWhnaERTQUNLUUlNSVE0Z0FpZ0NDQ0VJSUFJcEFnQWhEeUFDS0FJVUlRa2dEQ0FDS0FJa05nSUlJQXNnQWlrQ0hEY0RBQUpBSUFZaUFpQUZTUTBBSUFsRkJFQWdEVVVOQVFOQUlBQWdBa0VvYkdvaUJDQUhRU2hzYWlJREtBSVVEUUlnQXlnQ0dBMENJQVFnQUNBQ0lBVnJJZ0pCS0d4cUlnTXBBZ0EzQWdBZ0JDQURLUUlnTndJZ0lBUWdBeWtDR0RjQ0dDQUVJQU1wQWhBM0FoQWdCQ0FES1FJSU53SUlJQUlnQlU4TkFBc01BUXNnQ1VFQmEwRUJUUVJBQTBBQ1FDQUFJQUpCS0d4cUlnUWdCMEVvYkdvaUF5Z0NGQ0lLUlEwQUlBcEJBV3RCQVVzTkFDQURLQUlJSUFoT0RRTUxJQVFnQUNBQ0lBVnJJZ0pCS0d4cUlnTXBBZ0EzQWdBZ0JDQURLUUlnTndJZ0lBUWdBeWtDR0RjQ0dDQUVJQU1wQWhBM0FoQWdCQ0FES1FJSU53SUlJQUlnQlU4TkFBd0NDd0FMQTBBZ0FDQUNRU2hzYWlJRUlBZEJLR3hxSWdNb0FoUWlDZ1JBSUFwQkFXdEJBa2tOQWlBREtBSUlJQWhNRFFJTElBUWdBQ0FDSUFWcklnSkJLR3hxSWdNcEFnQTNBZ0FnQkNBREtRSWdOd0lnSUFRZ0F5a0NHRGNDR0NBRUlBTXBBaEEzQWhBZ0JDQURLUUlJTndJSUlBSWdCVThOQUFzTElBQWdBa0VvYkdvaUFpQU5OZ0lZSUFJZ0NUWUNGQ0FDSUE0M0Fnd2dBaUFJTmdJSUlBSWdEemNDQUNBQ0lBc3BBd0EzQWh3Z0FpQU1LQUlJTmdJa0lBWkJBV29pQmlBQlJ3MEFDd3NnQlVFQlN5RUdJQVZCQVhZaEJTQUdEUUFMQzlZTEFRcC9RUUVoQndKQUlBQWdBUkFDRFFBZ0FTQUJLQUlBUVFGcUlnbzJBZ0FnQ2tFZ1N3MEFJQUFvQWdRaEJBSkFJQUFvQWd4QkEzUWlDQ0FBS0FJUUlnWnJJZ05CSUU0RVFDQUVLQUFBSWdKQkdIUWdBa0VJZEVHQWdQd0hjWElnQWtFSWRrR0EvZ054SUFKQkdIWnljaUVDSUFBb0FnZ2lBMFVOQVNBQ0lBTjBJQVF0QUFSQkNDQURhM1p5SVFJTUFRc2dBMEVCU0FSQURBRUxJQVF0QUFBZ0FDZ0NDQ0lKUVJocUlnVjBJUUlnQXlBSmFrRUlheUlEUVFGSURRQURRQ0FFTFFBQklBVkJDR3NpQlhRZ0FuSWhBaUFEUVFoS0lRa2dCRUVCYWlFRUlBTkJDR3NoQXlBSkRRQUxDeUFBSUFaQkJHb2lCVFlDRUNBQUlBVkJCM0VpQXpZQ0NDQUZJQWhMRFFBZ0FDQUFLQUlBSWdrZ0JVRURkbW9pQkRZQ0JDQUJJQUpCSEhZMkFnUUNRQ0FJSUFWcklndEJJRTRFUUNBRUtBQUFJZ0pCR0hRZ0FrRUlkRUdBZ1B3SGNYSWdBa0VJZGtHQS9nTnhJQUpCR0haeWNpRUNJQU5GRFFFZ0FpQURkQ0FFTFFBRVFRZ2dBMnQyY2lFQ0RBRUxJQXRCQVVnRVFFRUFJUUlNQVFzZ0JDMEFBQ0FEUVJoeUlnVjBJUUlnQXlBTGFrRUlheUlEUVFGSURRQURRQ0FFTFFBQklBVkJDR3NpQlhRZ0FuSWhBaUFEUVFoS0lRc2dCRUVCYWlFRUlBTkJDR3NoQXlBTERRQUxDeUFBSUFaQkIzRTJBZ2dnQUNBR1FRaHFJZ1UyQWhBZ0JTQUlTdzBBSUFBZ0NTQUZRUU4yYWlJRU5nSUVJQUVnQWtFY2RqWUNDQ0FLQkVCQkFDRUlBMEFnQUNBQklBaEJBblJxSWdVaUFrRU1haEFDQkVCQkFROExJQUlvQWd3aUJFRi9SZ1JBUVFFUEN5QUNJQVJCQVdvaUJEWUNEQ0FDSUFRZ0FTZ0NCRUVHYW5RMkFnd2dBQ0FGUVl3QmFoQUNEUUlnQlNnQ2pBRWlBa0YvUmcwQ0lBVWdBa0VCYWlJQ05nS01BU0FGSUFJZ0FTZ0NDRUVFYW5RMkFvd0JJQUFvQWdRaEJBSkFJQUFvQWd4QkEzUWlDU0FBS0FJUUlnWnJJZ05CSUU0RVFDQUVLQUFBSWdKQkdIUWdBa0VJZEVHQWdQd0hjWElnQWtFSWRrR0EvZ054SUFKQkdIWnljaUVDSUFBb0FnZ2lBMFVOQVNBQ0lBTjBJQVF0QUFSQkNDQURhM1p5SVFJTUFRc2dBMEVCU0FSQVFRQWhBZ3dCQ3lBRUxRQUFJQUFvQWdnaUNrRVlhaUlIZENFQ0lBTWdDbXBCQ0dzaUEwRUJTQTBBQTBBZ0JDMEFBU0FIUVFocklnZDBJQUp5SVFJZ0EwRUlTaUVLSUFSQkFXb2hCQ0FEUVFocklRTWdDZzBBQ3d0QkFTRUhJQUFnQmtFQmFpSUVOZ0lRSUFBZ0JFRUhjVFlDQ0NBRUlBbExEUUlnQUNBQUtBSUFJZ2tnQkVFRGRtb2lCRFlDQkNBRklBSkJIM1kyQW93Q0lBaEJBV29pQ0NBQktBSUFTUTBBQ3lBQUtBSU1RUU4wSVFnZ0FDZ0NFQ0VGQ3dKQUlBZ2dCV3NpQTBFZ1RnUkFJQVFvQUFBaUFrRVlkQ0FDUVFoMFFZQ0EvQWR4Y2lBQ1FRaDJRWUQrQTNFZ0FrRVlkbkp5SVFJZ0FDZ0NDQ0lEUlEwQklBSWdBM1FnQkMwQUJFRUlJQU5yZG5JaEFnd0JDeUFEUVFGSUJFQkJBQ0VDREFFTElBUXRBQUFnQUNnQ0NDSUdRUmhxSWdkMElRSWdBeUFHYWtFSWF5SURRUUZJRFFBRFFDQUVMUUFCSUFkQkNHc2lCM1FnQW5JaEFpQURRUWhLSVFZZ0JFRUJhaUVFSUFOQkNHc2hBeUFHRFFBTEN5QUFJQVZCQldvaUJqWUNFQ0FBSUFaQkIzRWlBellDQ0VFQklRY2dCaUFJU3cwQUlBQWdDU0FHUVFOMmFpSUVOZ0lFSUFFZ0FrRWJka0VCYWpZQ2pBTUNRQ0FJSUFacklnWkJJRTRFUUNBRUtBQUFJZ0pCR0hRZ0FrRUlkRUdBZ1B3SGNYSWdBa0VJZGtHQS9nTnhJQUpCR0haeWNpRUNJQU5GRFFFZ0FpQURkQ0FFTFFBRVFRZ2dBMnQyY2lFQ0RBRUxJQVpCQVVnRVFFRUFJUUlNQVFzZ0JDMEFBQ0FEUVJoeUlnZDBJUUlnQXlBR2FrRUlheUlEUVFGSURRQURRQ0FFTFFBQklBZEJDR3NpQjNRZ0FuSWhBaUFEUVFoS0lRWWdCRUVCYWlFRUlBTkJDR3NoQXlBR0RRQUxDeUFBSUFWQkNtb2lCRFlDRUNBQUlBUkJCM0UyQWdoQkFTRUhJQVFnQ0VzTkFDQUFJQWtnQkVFRGRtbzJBZ1FnQVNBQ1FSdDJRUUZxTmdLUUF5QUFRUVVRRkNJQ1FYOUdEUUFnQVNBQ1FRRnFOZ0tVQXlBQVFRVVFGQ0lBUVg5R0RRQWdBU0FBTmdLWUEwRUFJUWNMSUFjTHFBd0JDbjhDUUNBQlFRUlBCRUJCQUNBRGF5SU1RUUYwSVFzQ1FDQUNLQUlFSWdFZ0FDQURheUlHTFFBQUlnY2dBQzBBQUNJSWF5SUtJQXBCSDNVaUNtb2dDbk5ORFFBZ0FpZ0NDQ0lGSUFBZ0Myb3RBQUFpQ2lBSGF5SUpJQWxCSDNVaUNXb2dDWE5ORFFBZ0JTQUFJQU5xTFFBQUlnVWdDR3NpQ1NBSlFSOTFJZ2xxSUFselRRMEFJQVlnQlNBSGFpQUtRUUYwYWtFQ2FrRUNkam9BQUNBQUlBZ2dCVUVCZEdvZ0NtcEJBbXBCQW5ZNkFBQWdBaWdDQkNFQkN3SkFJQUJCQVdvaUJ5QU1haUlKTFFBQUlnZ2dBQzBBQVNJS2F5SUZJQVZCSDNVaUJXb2dCWE1nQVU4TkFDQUNLQUlJSWdZZ0J5QUxhaTBBQUNJRklBaHJJZ1FnQkVFZmRTSUVhaUFFYzAwTkFDQUdJQU1nQjJvdEFBQWlCaUFLYXlJRUlBUkJIM1VpQkdvZ0JITk5EUUFnQ1NBR0lBaHFJQVZCQVhScVFRSnFRUUoyT2dBQUlBY2dDaUFHUVFGMGFpQUZha0VDYWtFQ2Rqb0FBQ0FDS0FJRUlRRUxBa0FnQUVFQ2FpSUhJQXhxSWdrdEFBQWlDQ0FBTFFBQ0lncHJJZ1VnQlVFZmRTSUZhaUFGY3lBQlR3MEFJQUlvQWdnaUJpQUhJQXRxTFFBQUlnVWdDR3NpQkNBRVFSOTFJZ1JxSUFSelRRMEFJQVlnQXlBSGFpMEFBQ0lHSUFwcklnUWdCRUVmZFNJRWFpQUVjMDBOQUNBSklBWWdDR29nQlVFQmRHcEJBbXBCQW5ZNkFBQWdCeUFLSUFaQkFYUnFJQVZxUVFKcVFRSjJPZ0FBSUFJb0FnUWhBUXNDUUNBQVFRTnFJZ2NnREdvaUNTMEFBQ0lJSUFBdEFBTWlDbXNpQlNBRlFSOTFJZ1ZxSUFWeklBRlBEUUFnQWlnQ0NDSUdJQWNnQzJvdEFBQWlCU0FJYXlJRUlBUkJIM1VpQkdvZ0JITk5EUUFnQmlBRElBZHFMUUFBSWdZZ0Ntc2lCQ0FFUVI5MUlnUnFJQVJ6VFEwQUlBa2dCaUFJYWlBRlFRRjBha0VDYWtFQ2Rqb0FBQ0FISUFvZ0JrRUJkR29nQldwQkFtcEJBblk2QUFBZ0FpZ0NCQ0VCQ3dKQUlBQkJCR29pQnlBTWFpSUpMUUFBSWdnZ0FDMEFCQ0lLYXlJRklBVkJIM1VpQldvZ0JYTWdBVThOQUNBQ0tBSUlJZ1lnQnlBTGFpMEFBQ0lGSUFocklnUWdCRUVmZFNJRWFpQUVjMDBOQUNBR0lBTWdCMm90QUFBaUJpQUtheUlFSUFSQkgzVWlCR29nQkhOTkRRQWdDU0FHSUFocUlBVkJBWFJxUVFKcVFRSjJPZ0FBSUFjZ0NpQUdRUUYwYWlBRmFrRUNha0VDZGpvQUFDQUNLQUlFSVFFTEFrQWdBRUVGYWlJSElBeHFJZ2t0QUFBaUNDQUFMUUFGSWdwcklnVWdCVUVmZFNJRmFpQUZjeUFCVHcwQUlBSW9BZ2dpQmlBSElBdHFMUUFBSWdVZ0NHc2lCQ0FFUVI5MUlnUnFJQVJ6VFEwQUlBWWdBeUFIYWkwQUFDSUdJQXBySWdRZ0JFRWZkU0lFYWlBRWMwME5BQ0FKSUFZZ0NHb2dCVUVCZEdwQkFtcEJBblk2QUFBZ0J5QUtJQVpCQVhScUlBVnFRUUpxUVFKMk9nQUFJQUlvQWdRaEFRc0NRQ0FBUVFacUlnY2dER29pQ1MwQUFDSUlJQUF0QUFZaUNtc2lCU0FGUVI5MUlnVnFJQVZ6SUFGUERRQWdBaWdDQ0NJR0lBY2dDMm90QUFBaUJTQUlheUlFSUFSQkgzVWlCR29nQkhOTkRRQWdCaUFESUFkcUxRQUFJZ1lnQ21zaUJDQUVRUjkxSWdScUlBUnpUUTBBSUFrZ0JpQUlhaUFGUVFGMGFrRUNha0VDZGpvQUFDQUhJQW9nQmtFQmRHb2dCV3BCQW1wQkFuWTZBQUFnQWlnQ0JDRUJDeUFCSUFCQkIyb2lBU0FNYWlJSExRQUFJZ3dnQUMwQUJ5SUFheUlJSUFoQkgzVWlDR29nQ0hOTkRRRWdBaWdDQ0NJSUlBRWdDMm90QUFBaUFpQU1heUlMSUF0QkgzVWlDMm9nQzNOTkRRRWdBU0FEYWkwQUFDSURJQUJySWdzZ0MwRWZkU0lMYWlBTGN5QUlUdzBCSUFjZ0F5QU1haUFDUVFGMGFrRUNha0VDZGpvQUFDQUJJQUFnQTBFQmRHb2dBbXBCQW1wQkFuWTZBQUFQQzBFQUlBTnJJZ3BCQVhRaEJTQUJJQUlvQWdCcVFRRnJMUUFBSWdGQmYzTWhCeUFCUVFGcUlRaEJDQ0VCQTBBQ1FDQUNLQUlFSUFBZ0Ntb2lCaTBBQUNJTElBQXRBQUFpREdzaUNTQUpRUjkxSWdscUlBbHpUUTBBSUFJb0FnZ2lDU0FBSUFWcUxRQUFJZ1FnQzJzaURTQU5RUjkxSWcxcUlBMXpUUTBBSUFrZ0FDQURhaTBBQUNJSklBeHJJZzBnRFVFZmRTSU5haUFOYzAwTkFDQUdJQXNnQnlBSUlBd2dDMnRCQW5RZ0NXc2dCR3BCQkdwQkEzVWlDeUFJSUF0SUd5QUhJQXRLR3lJTGFrSEFOV290QUFBNkFBQWdBQ0FNSUF0clFjQTFhaTBBQURvQUFBc2dBRUVCYWlFQUlBRkJBV3NpQVEwQUN3c0xCZ0FnQUJBRUN3Y0FRY1FhRUFnTHlBTUJBMzhEUUNBQUlBSkJBblJxSWdGQkZHb29BZ0FpQXdSQUlBTW9BaWdRQkNBQktBSVVRUUEyQWlnZ0FTZ0NGQ2dDVkJBRUlBRW9BaFJCQURZQ1ZDQUJLQUlVRUFRZ0FVRUFOZ0lVQ3lBQ1FRRnFJZ0pCSUVjTkFBdEJBQ0VDQTBBZ0FDQUNRUUowYWlJQlFaUUJhaWdDQUNJREJFQWdBeWdDRkJBRUlBRW9BcFFCUVFBMkFoUWdBU2dDbEFFb0FoZ1FCQ0FCS0FLVUFVRUFOZ0lZSUFFb0FwUUJLQUljRUFRZ0FTZ0NsQUZCQURZQ0hDQUJLQUtVQVNnQ0xCQUVJQUVvQXBRQlFRQTJBaXdnQVNnQ2xBRVFCQ0FCUVFBMkFwUUJDeUFDUVFGcUlnSkJnQUpIRFFBTElBQW9BckFhRUFSQkFDRUNJQUJCQURZQ3NCb2dBQ2dDdkFrUUJDQUFRUUEyQXJ3SklBQW9BcFFKRUFRZ0FFRUFOZ0tVQ1NBQUtBSzhHaUlEQkVBZ0F4QUVJQUJCQURZQ3ZCb0xBa0FnQUNnQ3hBa2lBMFVOQUNBQVFlQUphaWdDQUVGL1JnUkFJQU1oQWd3QkMwRUFJUUVnQXlFQ0EwQWdBaUFCUVNoc0lnTnFLQUlFRUFRZ0FDZ0N4QWtpQWlBRGFrRUFOZ0lFSUFGQkFXb2lBU0FBS0FMZ0NVRUJha2tOQUFzTElBSVFCQ0FBUVFBMkFzUUpJQUJCeUFscUlnTW9BZ0FRQkNBRFFRQTJBZ0FnQUVIUUNXb2lBQ2dDQUJBRUlBQkJBRFlDQUF2TjN3UUNhSDhDZmlNQVFmQUJheUlMSkFBZ0FFSHNER29oVkNBQVFiUVNhaUZWSUFCQjJBcHFJVllnQUVIRUNXb2hPQ0FBUWJnS2FpRXJJQUJCbkJwcUlUd2dDMEcwQVdvaFZ5QUxRYkFCYWlGWUlBdEJyQUZxSVZrZ0MwR29BV29oV2lBTFFaUUJhaUZiSUF0QmpBRnFJVndnQzBId0FHb2hYU0FMUVRCcUlWNGdDMEVnYWtFRWNpRmZBMEFnQVNBeWFpRUJJQUlnTW1zaEFnSkFBa0FDUUFKQUlBQW9BcEFhUlEwQUlBQW9BcFFhSUFGSERRQWdDeUE4S0FJUU5nSVlJQXNnUENrQ0NEY0RFQ0E4S1FJQUlXNUJBQ0VLSUF0QkFEWUNHQ0FMUVFBMkFoQWdDeUJ1TndNSUlBc2diajRDRENBQUtBS1lHaUV5SUFzb0FoUWhCZ3dCQ3dKQUFrQWdBa0VFU1EwQUlBRXRBQUFOQUNBQkxRQUJEUUFnQVMwQUFpSU5RUUZMRFFCQkF5RUhJQUZCQTJvaENVRUNJVElEUUNBSklRWUNRQ0FOUWY4QmNTSUlSUVJBSURKQkFXb2hNZ3dCQzBFQUlRa2dDRUVCUndSQVFRQWhNZ3dCQ3lBeVFRRkxJUWhCQUNFeUlBaEZEUUFnQnlFeVFRQWhHRUVBSVJJRFFFRUJJQmdnQ1NBR0xRQUFJZ3BGYWlJSVFRSkdHeUFZSUFwQkEwWWJJUmdDUUNBS1FRRkhEUUFnQ0VFQ1NRMEFJQXNnTWlBSElBaHFheUlHTmdJVVFRQWdDRUVEYXlJSklBZ2dDVWtiSVFrTUJRdEJBQ0FJSUFvYklRbEJBU0FTSUFoQkFrc2JJQklnQ2hzaEVpQUdRUUZxSVFZZ01rRUJhaUl5SUFKSERRQUxJQXNnQWlBSElBbHFheUlHTmdJVURBTUxJQVpCQVdvaENTQUdMUUFBSVExQkF5RU1RUUFoQ2lBSFFRRnFJZ2NnQWtjTkFBc2dBaUV5REFRTElBc2dBallDRkVFQklSaEJBQ0VISUFJaEJrRUFJUWxCQUNFU0MwRUFJUW9nQzBFQU5nSVlJQXRCQURZQ0VDQUxJQUVnQjJvaURUWUNEQ0FMSUEwMkFnZ2dCeUFKYWlBR2FpRXlRUU1oRENBU0RRSWdHQVJBSUEwaEJ5QUxJQVlFZndOQUlBWkJBV3NoQmlBSExRQUFJUWdDZnlBS1FRSkdCRUFnQ0VFRFJnUkFJQVpGQkVCQkFDRUtEQWtMUVFBaUNpQUhMUUFCUVFOTkRRSWFEQWdMSUFoQkEwa05CZ3NnRFNBSU9nQUFJQTFCQVdvaERVRUFJQXBCQVdvZ0NCc0xJUW9nQjBFQmFpRUhJQVlOQUFzZ0N5Z0NHQ0VLSUFzb0FoUUZRUUFMSUEwZ0IydHFJZ1kyQWhRTElEd2dDeWtEQ0RjQ0FDQThJQXNvQWhnMkFoQWdQQ0FMS1FNUU53SUlJQUFnQVRZQ2xCb2dBQ0F5TmdLWUdnc2dBRUVBTmdLUUdnSkFJQVpCQTNRaUdDQUtheUlHUVFGclFSNUxEUUFnQmlBTEtBSVFha0VJYXlJR1FRRklEUUFEUUNBR1FRaEtJUWNnQmtFSWF5RUdJQWNOQUFzTElBc2dDa0VCYWlJSE5nSVlJQXNnQjBFSGNTSUlOZ0lRSUFjZ0dFc0VRRUVESVF4QkFDRUtEQUlMSUFzZ0N5Z0NDQ0lPSUFkQkEzWnFJZ1kyQWd3Q1FDQVlJQWRySWcxQklFNEVRQ0FHS0FBQUlnZEJHSFFnQjBFSWRFR0FnUHdIY1hJZ0IwRUlka0dBL2dOeElBZEJHSFp5Y2lFSklBaEZEUUVnQ1NBSWRDQUdMUUFFUVFnZ0NHdDJjaUVKREFFTElBMUJBVWdFUUVFQUlRa01BUXNnQmkwQUFDQUlRUmh5SWd4MElRa2dCaUVISUFnZ0RXcEJDR3NpRFVFQlNBMEFBMEFnQnkwQUFTQU1RUWhySWd4MElBbHlJUWtnRFVFSVNpRUlJQWRCQVdvaEJ5QU5RUWhySVEwZ0NBMEFDd3NnQ3lBS1FRTnFJZ2cyQWhnZ0N5QUlRUWR4SWdjMkFoQkJmeUVTSUFnZ0dFMEVRQ0FMSUE0Z0NFRURkbW9pQmpZQ0RDQUpRUjUySVJJTEFrQWdHQ0FJYXlJSVFTQk9CRUFnQmlnQUFDSUlRUmgwSUFoQkNIUkJnSUQ4QjNGeUlBaEJDSFpCZ1A0RGNTQUlRUmgyY25JaERTQUhSUTBCSUEwZ0IzUWdCaTBBQkVFSUlBZHJkbkloRFF3QkN5QUlRUUZJQkVCQkFDRU5EQUVMSUFZdEFBQWdCMEVZY2lJSmRDRU5JQWNnQ0dwQkNHc2lCMEVCU0EwQUEwQWdCaTBBQVNBSlFRaHJJZ2wwSUExeUlRMGdCMEVJU2lFSUlBWkJBV29oQmlBSFFRaHJJUWNnQ0EwQUN3c2dDeUFLUVFkeE5nSVFJQXNnQ2tFSWFpSUdOZ0lZUVFBaENpQUdJQmhMQkVCQkFDRU1EQUlMSUFzZ0RpQUdRUU4yYWpZQ0RDQU5RUnQySWhwQkFtdEJBMGtFUUVFRElRd01BZ3NDUUNBYVFReExEUUJCQVNBYWRDSUdRY0E4Y1VVRVFDQUdRYUFEY1VVTkFTQVNSUVJBUVFNaERBd0VDeUFhUVFaSERRRkJBeUVNREFNTElCSkZEUUJCQXlFTURBSUxJQnBCQVdzaUUwRUxTd1JBUVFBaERBd0NDd0pBSUJwQkVrc05BQUpBQWtCQkFTQWFkQ0lHUWNEZkgzRkZCRUFnQmtFaWNVVU5BeUFBS0FLMENnUi9JQUJCQURZQ3RBcEJBUVZCQUFzaENpQUxJQXNvQWhnMkF1QUJJQXNnQ3lrRENEY0QwQUVnQ3lBTFFSQnFJaGdwQXdBM0E5Z0JJQXRCMEFGcUlBdEI3QUZxRUFJaUJnMEJJQXRCMEFGcUlBdEI3QUZxRUFJTkJDQUxRZEFCYWlBTFFld0JhaEFDRFFRZ0N5Z0M3QUVpQmtIL0FVc05CQ0FBSUFaQkFuUnFLQUtVQVNJTlJRMENJQUFnRFNnQ0JDSUdRUUowYWlnQ0ZDSUhSUTBDQWtBZ0FDZ0NDQ0lJUVNCR0RRQWdCaUFJUmcwQUlCcEJCVWNOQXdzZ0NpQUtRUUVnRWh0QkFTQUFLQUtZQ2lJR0d5QUdJQkpHR3lFS0FrQUNRQ0FBS0FLVUNrRUZSZ1JBSUJwQkJVY05BUXdDQ3lBYVFRVkhEUUVMUVFFaENnc2dCeWdDRENFR0lBc2dDeWdDR0RZQzRBRWdDeUFZS1FNQU53UFlBU0FMSUFzcEF3ZzNBOUFCSUF0QjBBRnFJQXRCN0FGcUVBSU5CQ0FMUWRBQmFpQUxRZXdCYWhBQ0RRUWdDMEhRQVdvZ0MwSHNBV29RQWcwRVFSOGdCbWNpQ1dzaEp5QUxLQUxVQVNFT0FrQWdDeWdDM0FGQkEzUWlEQ0FMS0FMZ0FTSVVheUlHUVNCT0JFQWdEaWdBQUNJR1FSaDBJQVpCQ0hSQmdJRDhCM0Z5SUFaQkNIWkJnUDREY1NBR1FSaDJjbkloRHlBTEtBTFlBU0lHUlEwQklBOGdCblFnRGkwQUJFRUlJQVpyZG5JaER3d0JDeUFHUVFGSUJFQkJBQ0VQREFFTElBNHRBQUFnQ3lnQzJBRWlFVUVZYWlJSWRDRVBJQVlnRVdwQkNHc2lFVUVCU0EwQUEwQWdEaTBBQVNBSVFRaHJJZ2gwSUE5eUlROGdFVUVJU2lFR0lBNUJBV29oRGlBUlFRaHJJUkVnQmcwQUN3c2dGQ0FuYWlBTVN3MEVJQThnQ1VFQmFuWWlCa0YvUmcwRUlBWWdBQ2dDbkFwSEJFQWdBQ0FHTmdLY0NrRUJJUW9MSUJwQkJVY2lGRVVFUUNBSEtBSU1JUVlnQ3lBTEtBSVlOZ0xnQVNBTElCZ3BBd0EzQTlnQklBc2dDeWtEQ0RjRDBBRWdDMEhRQVdvZ0MwSHNBV29RQWcwRklBdEIwQUZxSUF0QjdBRnFFQUlOQlNBTFFkQUJhaUFMUWV3QmFoQUNEUVZCSHlBR1p5SU1heUVPSUFzb0F0UUJJUkVDUUNBTEtBTGNBVUVEZENJY0lBc29BdUFCSWhkcklnbEJJRTRFUUNBUktBQUFJZ1pCR0hRZ0JrRUlkRUdBZ1B3SGNYSWdCa0VJZGtHQS9nTnhJQVpCR0haeWNpRUlJQXNvQXRnQklnWkZEUUVnQ0NBR2RDQVJMUUFFUVFnZ0JtdDJjaUVJREFFTElBbEJBVWdFUUVFQUlRZ01BUXNnRVMwQUFDQUxLQUxZQVNJblFSaHFJZ1owSVFnZ0NTQW5ha0VJYXlJUFFRRklEUUFEUUNBUkxRQUJJQVpCQ0dzaUJuUWdDSEloQ0NBUFFRaEtJU2NnRVVFQmFpRVJJQTlCQ0dzaER5QW5EUUFMQ3lBTElBNGdGMm9pQmpZQzRBRWdDeUFHUVFkeE5nTFlBU0FHSUJ4TERRVWdDeUFMS0FMUUFTQUdRUU4yYWpZQzFBRWdDQ0FNUVFGcWRrRi9SZzBGSUF0QjBBRnFJQXRCeUFGcUVBSU5CUUpBSUFBb0FwUUtRUVZIQkVBZ0N5Z0N5QUVoRVF3QkN5QUtRUUVnQ3lnQ3lBRWlFU0FBS0FLZ0NrWWJJUW9MSUFBZ0VUWUNvQW9MQWtBQ1FBSkFJQWNvQWhBT0FnQUJBZ3NnQ3lBTEtBSVlOZ0xnQVNBTElBc3BBd2czQTlBQklBc2dHQ2tEQURjRDJBRWdDMEhRQVdvZ0MwSHNBV29RQWcwR0lBdEIwQUZxSUF0QjdBRnFFQUlOQmlBTFFkQUJhaUFMUWV3QmFoQUNEUVpCSHlBSEtBSU1aeUlNYXlFY0lBc29BdFFCSVJFQ1FDQUxLQUxjQVVFRGRDSU9JQXNvQXVBQkloZHJJZ2xCSUU0RVFDQVJLQUFBSWdaQkdIUWdCa0VJZEVHQWdQd0hjWElnQmtFSWRrR0EvZ054SUFaQkdIWnljaUVJSUFzb0F0Z0JJZ1pGRFFFZ0NDQUdkQ0FSTFFBRVFRZ2dCbXQyY2lFSURBRUxJQWxCQVVnRVFFRUFJUWdNQVFzZ0VTMEFBQ0FMS0FMWUFTSW5RUmhxSWdaMElRZ2dDU0FuYWtFSWF5SVBRUUZJRFFBRFFDQVJMUUFCSUFaQkNHc2lCblFnQ0hJaENDQVBRUWhLSVNjZ0VVRUJhaUVSSUE5QkNHc2hEeUFuRFFBTEN5QUxJQmNnSEdvaUJqWUM0QUVnQ3lBR1FRZHhOZ0xZQVNBR0lBNUxEUVlnQ3lBTEtBTFFBU0FHUVFOMmFpSVJOZ0xVQVNBSUlBeEJBV3AyUVg5R0RRWWdGRVVFUUNBTFFkQUJhaUFMUWV3QmFoQUNEUWNnQ3lnQzFBRWhFU0FMS0FMY0FVRURkQ0VPSUFzb0F1QUJJUVlMUVI4Z0J5Z0NGR2NpREdzaEhBSkFJQTRnQm1zaUNVRWdUZ1JBSUJFb0FBQWlDRUVZZENBSVFRaDBRWUNBL0FkeGNpQUlRUWgyUVlEK0EzRWdDRUVZZG5KeUlRZ2dDeWdDMkFFaUNVVU5BU0FJSUFsMElCRXRBQVJCQ0NBSmEzWnlJUWdNQVFzZ0NVRUJTQVJBUVFBaENBd0JDeUFSTFFBQUlBc29BdGdCSWc5QkdHb2lKM1FoQ0NBSklBOXFRUWhySWc5QkFVZ05BQU5BSUJFdEFBRWdKMEVJYXlJbmRDQUljaUVJSUE5QkNFb2hDU0FSUVFGcUlSRWdEMEVJYXlFUElBa05BQXNMSUFZZ0hHb2dEa3NOQmlBSUlBeEJBV3AySWdaQmYwWU5CaUFHSUFBb0FxUUtSd1JBSUFBZ0JqWUNwQXBCQVNFS0N5QU5LQUlJUlEwQklBc2dDeWdDR0RZQzRBRWdDeUFMS1FNSU53UFFBU0FMSUJncEF3QTNBOWdCSUF0QjBBRnFJQXRCekFGcUVBSU5CaUFMUWRBQmFpQUxRY3dCYWhBQ0RRWWdDMEhRQVdvZ0MwSE1BV29RQWcwR1FSOGdCeWdDREdjaUoyc2hDQ0FMS0FMVUFTRU5Ba0FnQ3lnQzNBRkJBM1FpRHlBTEtBTGdBU0lPYXlJR1FTQk9CRUFnRFNnQUFDSUdRUmgwSUFaQkNIUkJnSUQ4QjNGeUlBWkJDSFpCZ1A0RGNTQUdRUmgyY25JaERDQUxLQUxZQVNJR1JRMEJJQXdnQm5RZ0RTMEFCRUVJSUFacmRuSWhEQXdCQ3lBR1FRRklCRUJCQUNFTURBRUxJQTB0QUFBZ0N5Z0MyQUVpQ1VFWWFpSVlkQ0VNSUFZZ0NXcEJDR3NpQ1VFQlNBMEFBMEFnRFMwQUFTQVlRUWhySWhoMElBeHlJUXdnQ1VFSVNpRUdJQTFCQVdvaERTQUpRUWhySVFrZ0JnMEFDd3NnQ3lBSUlBNXFJaGcyQXVBQklBc2dHRUVIY1RZQzJBRWdEeUFZU1EwR0lBc2dDeWdDMEFFZ0dFRURkbW9pRFRZQzFBRWdEQ0FuUVFGcWRrRi9SZzBHSUJSRkJFQWdDMEhRQVdvZ0MwSE1BV29RQWcwSElBc29BdHdCUVFOMElROGdDeWdDNEFFaEdDQUxLQUxVQVNFTkMwRWZJQWNvQWhSbklnZHJJUWdDUUNBUElCaHJJZ1pCSUU0RVFDQU5LQUFBSWdaQkdIUWdCa0VJZEVHQWdQd0hjWElnQmtFSWRrR0EvZ054SUFaQkdIWnljaUVNSUFzb0F0Z0JJZ1pGRFFFZ0RDQUdkQ0FOTFFBRVFRZ2dCbXQyY2lFTURBRUxJQVpCQVVnRVFFRUFJUXdNQVFzZ0RTMEFBQ0FMS0FMWUFTSUpRUmhxSWc1MElRd2dCaUFKYWtFSWF5SUpRUUZJRFFBRFFDQU5MUUFCSUE1QkNHc2lEblFnREhJaERDQUpRUWhLSVFZZ0RVRUJhaUVOSUFsQkNHc2hDU0FHRFFBTEN5QUxJQWdnR0dvaUJqWUM0QUVnQ3lBR1FRZHhOZ0xZQVNBR0lBOUxEUVlnQ3lBTEtBTFFBU0FHUVFOMmFqWUMxQUVnRENBSFFRRnFka0YvUmcwR0lBdEJBRFlDN0FFZ0MwSFFBV29nQzBIc0FXb1FBaUVHQWtBZ0N5Z0M3QUVpQjBGL1JnUkFRWUNBZ0lCNElRa2dCa1VOQ0F3QkN5QUdEUWNnQjBFQmFrRUJkaUlHUVFBZ0Jtc2dCMEVCY1JzaENRc2dBQ2dDcUFvZ0NVWU5BU0FBSUFrMkFxZ0tRUUVoQ2d3QkN5QUhLQUlZRFFBZ0RTZ0NDQ0VPSUFzZ0N5Z0NHRFlDNEFFZ0N5QVlLUU1BTndQWUFTQUxJQXNwQXdnM0E5QUJJQXRCMEFGcUlBdEJ6QUZxRUFJTkJTQUxRZEFCYWlBTFFjd0JhaEFDRFFVZ0MwSFFBV29nQzBITUFXb1FBZzBGUVI4Z0J5Z0NER2NpQjJzaEVTQUxLQUxVQVNFSkFrQWdDeWdDM0FGQkEzUWlEeUFMS0FMZ0FTSW5heUlHUVNCT0JFQWdDU2dBQUNJR1FSaDBJQVpCQ0hSQmdJRDhCM0Z5SUFaQkNIWkJnUDREY1NBR1FSaDJjbkloR0NBTEtBTFlBU0lHUlEwQklCZ2dCblFnQ1MwQUJFRUlJQVpyZG5JaEdBd0JDeUFHUVFGSUJFQkJBQ0VZREFFTElBa3RBQUFnQ3lnQzJBRWlERUVZYWlJSWRDRVlJQVlnREdwQkNHc2lERUVCU0EwQUEwQWdDUzBBQVNBSVFRaHJJZ2gwSUJoeUlSZ2dERUVJU2lFR0lBbEJBV29oQ1NBTVFRaHJJUXdnQmcwQUN3c2dDeUFSSUNkcUlnWTJBdUFCSUFzZ0JrRUhjVFlDMkFFZ0JpQVBTdzBGSUFzZ0N5Z0MwQUVnQmtFRGRtbzJBdFFCSUJnZ0IwRUJhblpCZjBZTkJTQVVSUVJBSUF0QjBBRnFJQXRCekFGcUVBSU5CZ3NnQzBFQU5nTHNBU0FMUWRBQmFpQUxRZXdCYWhBQ0lRWUNRQ0FMS0FMc0FTSUhRWDlHQkVCQmdJQ0FnSGdoRENBR1JRMEhEQUVMSUFZTkJpQUhRUUZxUVFGMklnWkJBQ0FHYXlBSFFRRnhHeUVNQ3dKQUlBNUZCRUFnWUNFSkRBRUxJQXRCQURZQzdBRWdDMEhRQVdvZ0MwSHNBV29RQWlFWUlBc29BdXdCSWdaQmYwWUVRRUdBZ0lDQWVDRUpJQmhGRFFjTUFRc2dHQTBHSUFaQkFXcEJBWFlpR0VFQUlCaHJJQVpCQVhFYklRa0xJQXdnQUNnQ3JBcEhCRUFnQUNBTU5nS3NDa0VCSVFvTEFrQWdEU2dDQ0VVTkFDQUFLQUt3Q2lBSlJnMEFJQUFnQ1RZQ3NBcEJBU0VLQ3lBSklXQUxJQUFnR3EwZ0VxMUNJSWFFTndLVUNnd0RDMEVCSVFvTUFnc2dCa1VOQVNBR1FmRC9BMGNOQWd0QkJDRU1RUUFoQ2d3Q0N3SkFJQW9FUUFKQUlBQW9BcUFKUlEwQUlBQW9BaEJGRFFCQkFDRUtJQUFvQXJRYUJFQkJBeUVNREFVTEFrQWdBQ2dDcEFsRkJFQWdBQ0FBS0FMRUNTSUhJQUFvQXVBSlFTaHNhaUlHTmdMTUNTQUFJQVlvQWdBMkFyZ0tJQUFvQXV3SklnaEZCRUJCQUNFSkRBSUxJQWhCQTNFaENrRUFJUWxCQUNFR0FrQWdDRUVCYTBFRFNRMEFJQWhCZkhFaERRTkFJQUFvQXNnSklBWkJBblJxSUFjZ0JrRW9iR28yQWdBZ0FDZ0N5QWtnQmtFQmNpSUhRUUowYWlBQUtBTEVDU0FIUVNoc2FqWUNBQ0FBS0FMSUNTQUdRUUp5SWdkQkFuUnFJQUFvQXNRSklBZEJLR3hxTmdJQUlBQW9Bc2dKSUFaQkEzSWlCMEVDZEdvZ0FDZ0N4QWtnQjBFb2JHbzJBZ0FnQmtFRWFpRUdJQTFCQkdzaURVVU5BU0E0S0FJQUlRY01BQXNBQ3lBS1JRMEJBMEFnQUNnQ3lBa2dCa0VDZEdvZ0FDZ0N4QWtnQmtFb2JHbzJBZ0FnQmtFQmFpRUdJQXBCQVdzaUNnMEFDd3dCQ3lBQUtBTGNDaUVKQzBFQUlRZEJBQ0VNUVFBaERRSkFBa0FDUUNBSkRnWUJBQUFBQUFFQUN5QUFLQUs0R2cwQURBRUxJQUJCeUFscUtBSUFJUWdEUUFKL1FRQWdDQ0FIUVFKMGFpZ0NBQ0lHUlEwQUdrRUFJQVlvQWhSQkFra05BQm9nQmlnQ0FBc2hEQ0FIUVE1TERRRWdCMEVCYWlFSElBeEZEUUFMQ3lBcktBSUlJUkVnS3lnQ0JDRU9Ba0FDUUFKQUlBQW9BcGdKSWdoRkJFQkJBQ0VHUVFBaEJ3d0JDeUFBS0FLOENTRUtRUUFoQjBFQUlRWURRQ0FLSUFkQjJBRnNhaWdDeEFFTkFVRUFJQVpCQVdvaUJpQUdJQTVHSWhJYklRWWdEU0FTYWlFTklBZEJBV29pQnlBSVJ3MEFDd3dCQ3lBSElBaEdEUUFnQUNnQ3ZBa2dEU0FPYkVIWUFXeHFJUWdnQmdSQUlBWWhCd05BSUFnZ0IwRUJheUlIUWRnQmJHb2lDaUFySUEwZ0J5QUpJQXdRRFNBS1FRRTJBc1FCSUFBZ0FDZ0N0QWxCQVdvMkFyUUpJQWNOQUFzTElBNGdCa0VCYWlJSFN3UkFBMEFnQ0NBSFFkZ0JiR29pQmlnQ3hBRkZCRUFnQmlBcklBMGdCeUFKSUF3UURTQUdRUUUyQXNRQklBQWdBQ2dDdEFsQkFXbzJBclFKQ3lBSFFRRnFJZ2NnRGtjTkFBc0xJQTBFUUNBT1JRMENJQTFCQW1zaENrRUFJUkpCQUNBT2F5RVVJQTFCQVdzaUR5QU9iRUhZQVd3aEV3TkFJQUFvQXJ3SklCTnFJQkpCMkFGc2FpSUdJQ3NnRHlBU0lBa2dEQkFOSUFaQkFUWUN4QUVnQUNBQUtBSzBDVUVCYWpZQ3RBa0NRQ0FQUlEwQUlBWWdGRUhZQVd3aUdtb2lDQ0FySUFvZ0VpQUpJQXdRRFNBS0lRY0RRQ0FHSUJwcVFRRTJBc1FCSUFBZ0FDZ0N0QWxCQVdvMkFyUUpJQWRGRFFFZ0NDSUdJQnBxSWdnZ0t5QUhRUUZySWdjZ0VpQUpJQXdRRFF3QUN3QUxJQkpCQVdvaUVpQU9SdzBBQ3dzZ0RVRUJhaUlHSUJGUERRRWdEa1VOQVFOQUlBQW9BcndKSUFZZ0RteEIyQUZzYWlFS1FRQWhCd05BSUFvZ0IwSFlBV3hxSWdnb0FzUUJSUVJBSUFnZ0t5QUdJQWNnQ1NBTUVBMGdDRUVCTmdMRUFTQUFJQUFvQXJRSlFRRnFOZ0swQ1FzZ0IwRUJhaUlISUE1SERRQUxJQVpCQVdvaUJpQVJSdzBBQ3d3QkN3SkFBa0FDUUFKQUFrQWdDVUVDYXc0R0FBRUJBUUVBQVFzZ0FDZ0N1QnBGRFFFTElBd05BUXNnS3lnQ0FFR0FBU0FPSUJGc1FZQURiQkFER2d3QkN5QXJLQUlBSUF3Z0RpQVJiRUdBQTJ3UUJ4b0xJQUFnQUNnQ21Ba2lDVFlDdEFrZ0NVVU5BQ0FKUVFkeElRWWdBQ2dDdkFraENFRUFJUWNnQ1VFQmEwRUhUd1JBSUFsQmVIRWhEQU5BSUFnZ0IwSFlBV3hxUVFFMkFnZ2dDQ0FIUVFGeVFkZ0JiR3BCQVRZQ0NDQUlJQWRCQW5KQjJBRnNha0VCTmdJSUlBZ2dCMEVEY2tIWUFXeHFRUUUyQWdnZ0NDQUhRUVJ5UWRnQmJHcEJBVFlDQ0NBSUlBZEJCWEpCMkFGc2FrRUJOZ0lJSUFnZ0IwRUdja0hZQVd4cVFRRTJBZ2dnQ0NBSFFRZHlRZGdCYkdwQkFUWUNDQ0FIUVFocUlRY2dERUVJYXlJTURRQUxDeUFHUlEwQUEwQWdDQ0FIUWRnQmJHcEJBVFlDQ0NBSFFRRnFJUWNnQmtFQmF5SUdEUUFMQ3lBQVFRRTJBcEFhUVFBaEJrRUFJVElNQWdzZ0FFRUFOZ0tjQ1NBQVFRQTJBcVFKQzBFQUlRcEJBQ0VNQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUJNT0NBSUxDd3NDQ3dBQkN3c2dDMEhvQUdwQkFFSGNBQkFER2lBTEtBSU1JUVlDUUNBTEtBSVVRUU4wSWdnZ0N5Z0NHQ0lKYXlJS1FTQk9CRUFnQmlnQUFDSUhRUmgwSUFkQkNIUkJnSUQ4QjNGeUlBZEJDSFpCZ1A0RGNTQUhRUmgyY25JaEJ5QUxLQUlRSWdwRkRRRWdCeUFLZENBR0xRQUVRUWdnQ210MmNpRUhEQUVMSUFwQkFVZ0VRRUVBSVFjTUFRc2dCaTBBQUNBTEtBSVFJZ3hCR0dvaURYUWhCeUFLSUF4cVFRaHJJZ3BCQVVnTkFBTkFJQVl0QUFFZ0RVRUlheUlOZENBSGNpRUhJQXBCQ0VvaERDQUdRUUZxSVFZZ0NrRUlheUVLSUF3TkFBc0xJQXNnQ1VFSGNTSU1OZ0lRSUFzZ0NVRUlhaUlHTmdJWUlBWWdDRXNOQnlBTElBZEJHSFkyQW1nZ0N5QUxLQUlJSWc0Z0JrRURkbW8yQWd3Z0NVRUphaUlHSUFoTkJFQWdDeUFPSUFaQkEzWnFOZ0lNQ3lBTElBbEJDbW9pQmpZQ0dDQUxJQVpCQjNFaUJ6WUNFQ0FHSUFoTkJFQWdDeUFPSUFaQkEzWnFOZ0lNQ3dKQUlBZ2dCbXNpQmtFQmEwRWVTdzBBSUFZZ0IycEJDR3NpQmtFQlNBMEFBMEFnQmtFSVNpRUhJQVpCQ0dzaEJpQUhEUUFMQ3lBTElBbEJDMm9pQmpZQ0dDQUxJQVpCQjNFaUJ6WUNFQ0FHSUFoTERRY2dDeUFPSUFaQkEzWnFOZ0lNQWtBZ0NDQUdheUlHUVFGclFSNUxEUUFnQmlBSGFrRUlheUlHUVFGSURRQURRQ0FHUVFoS0lRY2dCa0VJYXlFR0lBY05BQXNMSUFzZ0REWUNFQ0FMSUFsQkVHb2lCellDR0NBSElBaExEUWNnQ3lBT0lBZEJBM1pxSWdZMkFnd0NRQ0FJSUFkcklncEJJRTRFUUNBR0tBQUFJZ2RCR0hRZ0IwRUlkRUdBZ1B3SGNYSWdCMEVJZGtHQS9nTnhJQWRCR0haeWNpRUhJQXhGRFFFZ0J5QU1kQ0FHTFFBRVFRZ2dER3QyY2lFSERBRUxJQXBCQVVnRVFFRUFJUWNNQVFzZ0JpMEFBQ0FNUVJoeUlnMTBJUWNnQ2lBTWFrRUlheUlLUVFGSURRQURRQ0FHTFFBQklBMUJDR3NpRFhRZ0IzSWhCeUFLUVFoS0lSSWdCa0VCYWlFR0lBcEJDR3NoQ2lBU0RRQUxDeUFMSUF3MkFoQWdDeUFKUVJocUlnWTJBaGdnQmlBSVN3MEhJQXNnQjBFWWRqWUNiQ0FMSUE0Z0JrRURkbW8yQWd3Z0MwRUlhaUJkRUFJTkJ5QUxLQUp3UVI5TERRY2dDMEVJYWlBTFFld0JhaEFDRFFjZ0N5Z0M3QUVpQmtFTVN3MEhJQXRCQVNBR1FRUnFkRFlDZENBTFFRaHFJQXRCN0FGcUVBSU5CeUFMS0FMc0FTSUdRUUpMRFFjZ0N5QUdOZ0o0QWtBQ1FBSkFJQVlPQWdBQkFnc2dDMEVJYWlBTFFld0JhaEFDRFFrZ0N5Z0M3QUVpQmtFTVN3MEpJQXRCQVNBR1FRUnFkRFlDZkF3QkN5QUxLQUlNSVFZQ1FDQUxLQUlVUVFOMElna2dDeWdDR0NJTWF5SUlRU0JPQkVBZ0JpZ0FBQ0lIUVJoMElBZEJDSFJCZ0lEOEIzRnlJQWRCQ0haQmdQNERjU0FIUVJoMmNuSWhCeUFMS0FJUUlnaEZEUUVnQnlBSWRDQUdMUUFFUVFnZ0NHdDJjaUVIREFFTElBaEJBVWdFUUVFQUlRY01BUXNnQmkwQUFDQUxLQUlRSWdwQkdHb2lEWFFoQnlBSUlBcHFRUWhySWdwQkFVZ05BQU5BSUFZdEFBRWdEVUVJYXlJTmRDQUhjaUVISUFwQkNFb2hDQ0FHUVFGcUlRWWdDa0VJYXlFS0lBZ05BQXNMSUFzZ0RFRUJhaUlHTmdJWUlBc2dCa0VIY1RZQ0VDQUdJQWxMRFFnZ0N5QUhRUjkyTmdLQUFTQUxJQXNvQWdnZ0JrRURkbW8yQWd3Z0MwRUFOZ0xRQVNBTFFRaHFJQXRCMEFGcUVBSWhCaUFMQW44Z0N5Z0MwQUVpQjBGL1JnUkFRWUNBZ0lCNElBWU5BUm9NQ2dzZ0JnMEpJQWRCQVdwQkFYWWlCa0VBSUFacklBZEJBWEViQ3pZQ2hBRWdDMEVBTmdMUUFTQUxRUWhxSUF0QjBBRnFFQUloQmlBTEFuOGdDeWdDMEFFaUIwRi9SZ1JBUVlDQWdJQjRJQVlOQVJvTUNnc2dCZzBKSUFkQkFXcEJBWFlpQmtFQUlBWnJJQWRCQVhFYkN6WUNpQUVnQzBFSWFpQmNFQUlOQ0NBTEtBS01BU0lHUWY4QlN3MElJQVlFUUNBTElBWkJBblFRQ0NJSE5nS1FBU0FIUlEwSlFRQWhCZ05BSUF0QkFEWUMwQUVnQzBFSWFpQUxRZEFCYWhBQ0lRZ2dCeUFHUVFKMGFnSi9JQXNvQXRBQklnZEJmMFlFUUVHQWdJQ0FlQ0FJRFFFYURBd0xJQWdOQ3lBSFFRRnFRUUYySWdoQkFDQUlheUFIUVFGeEd3czJBZ0FnQmtFQmFpSUdJQXNvQW93QlR3MENJQXNvQXBBQklRY01BQXNBQ3lBTFFRQTJBcEFCQ3lBTFFRaHFJRnNRQWcwSElBc29BcFFCUVJCTERRY2dDeWdDRENFR0FrQWdDeWdDRkVFRGRDSUpJQXNvQWhnaURHc2lDRUVnVGdSQUlBWW9BQUFpQjBFWWRDQUhRUWgwUVlDQS9BZHhjaUFIUVFoMlFZRCtBM0VnQjBFWWRuSnlJUWNnQ3lnQ0VDSUlSUTBCSUFjZ0NIUWdCaTBBQkVFSUlBaHJkbkloQnd3QkN5QUlRUUZJQkVCQkFDRUhEQUVMSUFZdEFBQWdDeWdDRUNJS1FSaHFJZzEwSVFjZ0NDQUtha0VJYXlJS1FRRklEUUFEUUNBR0xRQUJJQTFCQ0dzaURYUWdCM0loQnlBS1FRaEtJUWdnQmtFQmFpRUdJQXBCQ0dzaENpQUlEUUFMQ3lBTElBeEJBV29pQmpZQ0dDQUxJQVpCQjNFMkFoQWdCaUFKU3cwSElBc2dCMEVmZGpZQ21BRWdDeUFMS0FJSUlBWkJBM1pxTmdJTUlBdEJDR29nQzBIc0FXb1FBZzBISUFzZ0N5Z0M3QUZCQVdvMkFwd0JJQXRCQ0dvZ0MwSHNBV29RQWcwSElBc2dDeWdDN0FGQkFXb2lHRFlDb0FFZ0N5Z0NEQ0VHQWtBZ0N5Z0NGRUVEZENJSUlBc29BaGdpREdzaUNVRWdUZ1JBSUFZb0FBQWlCMEVZZENBSFFRaDBRWUNBL0FkeGNpQUhRUWgyUVlEK0EzRWdCMEVZZG5KeUlRY2dDeWdDRUNJSlJRMEJJQWNnQ1hRZ0JpMEFCRUVJSUFscmRuSWhCd3dCQ3lBSlFRRklCRUJCQUNFSERBRUxJQVl0QUFBZ0N5Z0NFQ0lLUVJocUlnMTBJUWNnQ1NBS2FrRUlheUlLUVFGSURRQURRQ0FHTFFBQklBMUJDR3NpRFhRZ0IzSWhCeUFLUVFoS0lRa2dCa0VCYWlFR0lBcEJDR3NoQ2lBSkRRQUxDeUFMSUF4QkFXb2lCallDR0NBTElBWkJCM0VpQ1RZQ0VDQUdJQWhMRFFjZ0N5QUxLQUlJSWc0Z0JrRURkbW8yQWd3Z0IwRi9TZzBIQWtBZ0NDQUdheUlHUVFGclFSNUxEUUFnQmlBSmFrRUlheUlHUVFGSURRQURRQ0FHUVFoS0lRY2dCa0VJYXlFR0lBY05BQXNMSUFzZ0RFRUNhaUlITmdJWUlBc2dCMEVIY1NJSk5nSVFJQWNnQ0VzTkJ5QUxJQTRnQjBFRGRtb2lCallDREFKQUlBZ2dCMnNpQ2tFZ1RnUkFJQVlvQUFBaUIwRVlkQ0FIUVFoMFFZQ0EvQWR4Y2lBSFFRaDJRWUQrQTNFZ0IwRVlkbkp5SVFjZ0NVVU5BU0FISUFsMElBWXRBQVJCQ0NBSmEzWnlJUWNNQVFzZ0NrRUJTQVJBUVFBaEJ3d0JDeUFHTFFBQUlBbEJHSElpRFhRaEJ5QUpJQXBxUVFocklncEJBVWdOQUFOQUlBWXRBQUVnRFVFSWF5SU5kQ0FIY2lFSElBcEJDRW9oQ1NBR1FRRnFJUVlnQ2tFSWF5RUtJQWtOQUFzTElBc2dERUVEYWlJR05nSVlJQXNnQmtFSGNUWUNFQ0FHSUFoTERRY2dDeUFIUVI5Mk5nS2tBU0FMSUE0Z0JrRURkbW8yQWd3Q1FDQUhRUUJPQkVBZ0N5Z0NuQUVoRFF3QkN5QUxRUWhxSUZvUUFnMElJQXRCQ0dvZ1dSQUNEUWdnQzBFSWFpQllFQUlOQ0NBTFFRaHFJRmNRQWcwSUlBc29BcWdCSUFzb0Fxd0JRWDl6SUFzb0Fwd0JJZzFCQTNScVNnMElJQXNvQXJBQklBc29BclFCUVg5eklBc29BcUFCSWhoQkEzUnFTZzBJQzBIakFDRUtRWUNrQ1NFSFFmLy8vLzhISVFZQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQ3lnQ2JFRUthdzRxQ2dBQkFRc0xDd3NMQ3dFQ0F3c0xDd3NMQ3dzREJBVUxDd3NMQ3dzTEJnWUhDd3NMQ3dzTEN3Z0pDd3RCakFNaENrR0FqQlVoQnd3SkMwR01BeUVLUVlEWU55RUhEQWdMUVpnR0lRcEJnTER2QUNFSERBY0xRZFFNSVFwQmdPeTlBU0VIREFZTFFaQWNJUXBCZ1BDbEF5RUhEQVVMUVlBb0lRcEJnSURnQXlFSERBUUxRWURBQUNFS1FZQ0FnQVloQnd3REMwR0F4QUFoQ2tHQWdMQUdJUWNNQWd0QndLd0JJUXBCZ01DYkZDRUhEQUVMUVlDZ0FpRUtRWUNBNENFaEJ3c2dDaUFOSUJoc0lnaEpEUUFnQnlBSVFZQURiRzRpQmtFUUlBWkJFRWtiSVFZTElBc2dDeWdDbEFFaUJ5QUhJQVlnQmlBSFNSc2dCa0gvLy8vL0IwWWJJZ1kyQXV3QklBc2dCallDd0FFZ0N5Z0NEQ0VHQWtBZ0N5Z0NGRUVEZENJSklBc29BaGdpREdzaUNFRWdUZ1JBSUFZb0FBQWlCMEVZZENBSFFRaDBRWUNBL0FkeGNpQUhRUWgyUVlEK0EzRWdCMEVZZG5KeUlRY2dDeWdDRUNJSVJRMEJJQWNnQ0hRZ0JpMEFCRUVJSUFocmRuSWhCd3dCQ3lBSVFRRklCRUJCQUNFSERBRUxJQVl0QUFBZ0N5Z0NFQ0lLUVJocUlnMTBJUWNnQ0NBS2FrRUlheUlLUVFGSURRQURRQ0FHTFFBQklBMUJDR3NpRFhRZ0IzSWhCeUFLUVFoS0lRZ2dCa0VCYWlFR0lBcEJDR3NoQ2lBSURRQUxDeUFMSUF4QkFXb2lCallDR0NBTElBWkJCM0UyQWhBZ0JpQUpTdzBISUFzZ0IwRWZkallDdUFFZ0N5QUxLQUlJSUFaQkEzWnFOZ0lNQWtBZ0IwRi9TZzBBSUF0QnVBY1FDQ0lHTmdLOEFTQUdSUTBJSUFaQkFFRzRCeEFESVFnZ0N5Z0NEQ0VHQWtBZ0N5Z0NGRUVEZENJU0lBc29BaGdpRVdzaUNVRWdUZ1JBSUFZb0FBQWlCMEVZZENBSFFRaDBRWUNBL0FkeGNpQUhRUWgyUVlEK0EzRWdCMEVZZG5KeUlRY2dDeWdDRUNJSlJRMEJJQWNnQ1hRZ0JpMEFCRUVJSUFscmRuSWhCd3dCQ3lBSlFRRklCRUJCQUNFSERBRUxJQVl0QUFBZ0N5Z0NFQ0lLUVJocUlnMTBJUWNnQ1NBS2FrRUlheUlLUVFGSURRQURRQ0FHTFFBQklBMUJDR3NpRFhRZ0IzSWhCeUFLUVFoS0lRa2dCa0VCYWlFR0lBcEJDR3NoQ2lBSkRRQUxDeUFMSUJGQkFXb2lEVFlDR0NBTElBMUJCM0VpRERZQ0VDQU5JQkpMRFFnZ0N5QUxLQUlJSWc0Z0RVRURkbW9pQmpZQ0RDQUlJQWRCSDNZMkFnQUNRQ0FIUVg5S0RRQUNRQ0FTSUExcklnbEJJRTRFUUNBR0tBQUFJZ2RCR0hRZ0IwRUlkRUdBZ1B3SGNYSWdCMEVJZGtHQS9nTnhJQWRCR0haeWNpRUhJQXhGRFFFZ0J5QU1kQ0FHTFFBRVFRZ2dER3QyY2lFSERBRUxJQWxCQVVnRVFFRUFJUWNNQVFzZ0JpMEFBQ0FNUVJoeUlnMTBJUWNnQ1NBTWFrRUlheUlLUVFGSURRQURRQ0FHTFFBQklBMUJDR3NpRFhRZ0IzSWhCeUFLUVFoS0lRa2dCa0VCYWlFR0lBcEJDR3NoQ2lBSkRRQUxDeUFMSUF3MkFoQWdDeUFSUVFscUlnMDJBaGdnRFNBU1N3MEpJQXNnRGlBTlFRTjJhaUlHTmdJTUlBZ2dCMEVZZGlJSE5nSUVJQWRCL3dGSERRQUNRQ0FTSUExcklncEJJRTRFUUNBR0tBQUFJZ2RCR0hRZ0IwRUlkRUdBZ1B3SGNYSWdCMEVJZGtHQS9nTnhJQWRCR0haeWNpRUhJQXhGRFFFZ0J5QU1kQ0FHTFFBRVFRZ2dER3QyY2lFSERBRUxJQXBCQVVnRVFFRUFJUWNNQVFzZ0JpMEFBQ0FNUVJoeUlnbDBJUWNnQ2lBTWFrRUlheUlLUVFGSURRQURRQ0FHTFFBQklBbEJDR3NpQ1hRZ0IzSWhCeUFLUVFoS0lRd2dCa0VCYWlFR0lBcEJDR3NoQ2lBTURRQUxDeUFMSUExQkIzRWlDVFlDRUNBTElCRkJHV29pRERZQ0dDQU1JQkpMRFFrZ0N5QU9JQXhCQTNacUlnWTJBZ3dnQ0NBSFFSQjJOZ0lJQWtBZ0VpQU1heUlLUVNCT0JFQWdCaWdBQUNJSFFSaDBJQWRCQ0hSQmdJRDhCM0Z5SUFkQkNIWkJnUDREY1NBSFFSaDJjbkloQnlBSlJRMEJJQWNnQ1hRZ0JpMEFCRUVJSUFscmRuSWhCd3dCQ3lBS1FRRklCRUJCQUNFSERBRUxJQVl0QUFBZ0NVRVljaUlOZENFSElBa2dDbXBCQ0dzaUNrRUJTQTBBQTBBZ0JpMEFBU0FOUVFocklnMTBJQWR5SVFjZ0NrRUlTaUVKSUFaQkFXb2hCaUFLUVFocklRb2dDUTBBQ3dzZ0N5QU1RUWR4SWd3MkFoQWdDeUFSUVNscUlnMDJBaGdnRFNBU1N3MEpJQXNnRGlBTlFRTjJhaUlHTmdJTUlBZ2dCMEVRZGpZQ0RBc0NRQ0FTSUExcklncEJJRTRFUUNBR0tBQUFJZ2RCR0hRZ0IwRUlkRUdBZ1B3SGNYSWdCMEVJZGtHQS9nTnhJQWRCR0haeWNpRUhJQXhGRFFFZ0J5QU1kQ0FHTFFBRVFRZ2dER3QyY2lFSERBRUxJQXBCQVVnRVFFRUFJUWNNQVFzZ0JpMEFBQ0FNUVJoeUlnbDBJUWNnQ2lBTWFrRUlheUlLUVFGSURRQURRQ0FHTFFBQklBbEJDR3NpQ1hRZ0IzSWhCeUFLUVFoS0lRd2dCa0VCYWlFR0lBcEJDR3NoQ2lBTURRQUxDeUFMSUExQkFXb2lDVFlDR0NBTElBbEJCM0VpQ2pZQ0VDQUpJQkpMRFFnZ0N5QU9JQWxCQTNacUlnWTJBZ3dnQ0NBSFFSOTJOZ0lRSUFkQmYwd0VRQUpBSUJJZ0NXc2lERUVnVGdSQUlBWW9BQUFpQjBFWWRDQUhRUWgwUVlDQS9BZHhjaUFIUVFoMlFZRCtBM0VnQjBFWWRuSnlJUWNnQ2tVTkFTQUhJQXAwSUFZdEFBUkJDQ0FLYTNaeUlRY01BUXNnREVFQlNBUkFRUUFoQnd3QkN5QUdMUUFBSUFwQkdISWlDWFFoQnlBS0lBeHFRUWhySWdwQkFVZ05BQU5BSUFZdEFBRWdDVUVJYXlJSmRDQUhjaUVISUFwQkNFb2hEQ0FHUVFGcUlRWWdDa0VJYXlFS0lBd05BQXNMSUFzZ0RVRUNhaUlKTmdJWUlBc2dDVUVIY1NJS05nSVFJQWtnRWtzTkNTQUxJQTRnQ1VFRGRtb2lCallDRENBSUlBZEJIM1kyQWhRTEFrQWdFaUFKYXlJTVFTQk9CRUFnQmlnQUFDSUhRUmgwSUFkQkNIUkJnSUQ4QjNGeUlBZEJDSFpCZ1A0RGNTQUhRUmgyY25JaEJ5QUtSUTBCSUFjZ0NuUWdCaTBBQkVFSUlBcHJkbkloQnd3QkN5QU1RUUZJQkVCQkFDRUhEQUVMSUFZdEFBQWdDa0VZY2lJTmRDRUhJQW9nREdwQkNHc2lDa0VCU0EwQUEwQWdCaTBBQVNBTlFRaHJJZzEwSUFkeUlRY2dDa0VJU2lFTUlBWkJBV29oQmlBS1FRaHJJUW9nREEwQUN3c2dDeUFKUVFGcUlnMDJBaGdnQ3lBTlFRZHhJZ28yQWhBZ0RTQVNTdzBJSUFzZ0RpQU5RUU4yYWlJR05nSU1JQWdnQjBFZmRqWUNHQ0FJQW44Q1FDQUhRWDlNQkVBQ1FDQVNJQTFySWd4QklFNEVRQ0FHS0FBQUlnZEJHSFFnQjBFSWRFR0FnUHdIY1hJZ0IwRUlka0dBL2dOeElBZEJHSFp5Y2lFSElBcEZEUUVnQnlBS2RDQUdMUUFFUVFnZ0NtdDJjaUVIREFFTElBeEJBVWdFUUVFQUlRY01BUXNnQmkwQUFDQUtRUmh5SWcxMElRY2dDaUFNYWtFSWF5SUtRUUZJRFFBRFFDQUdMUUFCSUExQkNHc2lEWFFnQjNJaEJ5QUtRUWhLSVF3Z0JrRUJhaUVHSUFwQkNHc2hDaUFNRFFBTEN5QUxJQWxCQkdvaUREWUNHQ0FMSUF4QkIzRWlDallDRUNBTUlCSkxEUXNnQ3lBT0lBeEJBM1pxSWdZMkFnd2dDQ0FIUVIxMk5nSWNBa0FnRWlBTWF5SU1RU0JPQkVBZ0JpZ0FBQ0lIUVJoMElBZEJDSFJCZ0lEOEIzRnlJQWRCQ0haQmdQNERjU0FIUVJoMmNuSWhCeUFLUlEwQklBY2dDblFnQmkwQUJFRUlJQXByZG5JaEJ3d0JDeUFNUVFGSUJFQkJBQ0VIREFFTElBWXRBQUFnQ2tFWWNpSU5kQ0VISUFvZ0RHcEJDR3NpQ2tFQlNBMEFBMEFnQmkwQUFTQU5RUWhySWcxMElBZHlJUWNnQ2tFSVNpRU1JQVpCQVdvaEJpQUtRUWhySVFvZ0RBMEFDd3NnQ3lBSlFRVnFJZ3cyQWhnZ0N5QU1RUWR4SWdvMkFoQWdEQ0FTU3cwTElBc2dEaUFNUVFOMmFpSUdOZ0lNSUFnZ0IwRWZkallDSUFKQUlCSWdER3NpREVFZ1RnUkFJQVlvQUFBaUIwRVlkQ0FIUVFoMFFZQ0EvQWR4Y2lBSFFRaDJRWUQrQTNFZ0IwRVlkbkp5SVFjZ0NrVU5BU0FISUFwMElBWXRBQVJCQ0NBS2EzWnlJUWNNQVFzZ0RFRUJTQVJBUVFBaEJ3d0JDeUFHTFFBQUlBcEJHSElpRFhRaEJ5QUtJQXhxUVFocklncEJBVWdOQUFOQUlBWXRBQUVnRFVFSWF5SU5kQ0FIY2lFSElBcEJDRW9oRENBR1FRRnFJUVlnQ2tFSWF5RUtJQXdOQUFzTElBc2dDVUVHYWlJTk5nSVlJQXNnRFVFSGNTSUtOZ0lRSUEwZ0Vrc05DeUFMSUE0Z0RVRURkbW9pQmpZQ0RDQUlJQWRCSDNZMkFpUWdCMEYvU2cwQkFrQWdFaUFOYXlJSFFTQk9CRUFnQmlnQUFDSUhRUmgwSUFkQkNIUkJnSUQ4QjNGeUlBZEJDSFpCZ1A0RGNTQUhRUmgyY25JaERTQUtSUTBCSUEwZ0NuUWdCaTBBQkVFSUlBcHJkbkloRFF3QkN5QUhRUUZJQkVCQkFDRU5EQUVMSUFZdEFBQWdDa0VZY2lJTWRDRU5JQWNnQ21wQkNHc2lCMEVCU0EwQUEwQWdCaTBBQVNBTVFRaHJJZ3gwSUExeUlRMGdCMEVJU2lFUklBWkJBV29oQmlBSFFRaHJJUWNnRVEwQUN3c2dDeUFLTmdJUUlBc2dDVUVPYWlJTU5nSVlJQXdnRWtzTkN5QUxJQTRnREVFRGRtb2lCallDRENBSUlBMUJHSFkyQWlnQ1FDQVNJQXhySWhGQklFNEVRQ0FHS0FBQUlnZEJHSFFnQjBFSWRFR0FnUHdIY1hJZ0IwRUlka0dBL2dOeElBZEJHSFp5Y2lFSElBcEZEUUVnQnlBS2RDQUdMUUFFUVFnZ0NtdDJjaUVIREFFTElCRkJBVWdFUUVFQUlRY01BUXNnQmkwQUFDQUtRUmh5SWcxMElRY2dDaUFSYWtFSWF5SUtRUUZJRFFBRFFDQUdMUUFCSUExQkNHc2lEWFFnQjNJaEJ5QUtRUWhLSVJFZ0JrRUJhaUVHSUFwQkNHc2hDaUFSRFFBTEN5QUxJQXhCQjNFaUNqWUNFQ0FMSUFsQkZtb2lERFlDR0NBTUlCSkxEUXNnQ3lBT0lBeEJBM1pxSWdZMkFnd2dDQ0FIUVJoMk5nSXNBa0FnRWlBTWF5SVJRU0JPQkVBZ0JpZ0FBQ0lIUVJoMElBZEJDSFJCZ0lEOEIzRnlJQWRCQ0haQmdQNERjU0FIUVJoMmNuSWhCeUFLUlEwQklBY2dDblFnQmkwQUJFRUlJQXByZG5JaEJ3d0JDeUFSUVFGSUJFQkJBQ0VIREFFTElBWXRBQUFnQ2tFWWNpSU5kQ0VISUFvZ0VXcEJDR3NpQ2tFQlNBMEFBMEFnQmkwQUFTQU5RUWhySWcxMElBZHlJUWNnQ2tFSVNpRVJJQVpCQVdvaEJpQUtRUWhySVFvZ0VRMEFDd3NnQ3lBTVFRZHhJZ28yQWhBZ0N5QUpRUjVxSWcwMkFoZ2dEU0FTU3cwTElBc2dEaUFOUVFOMmFpSUdOZ0lNSUFkQkdIWU1BZ3NnQ0VFRk5nSWNDeUFJUW9LQWdJQWdOd01vUVFJTE5nSXdBa0FnRWlBTmF5SU1RU0JPQkVBZ0JpZ0FBQ0lIUVJoMElBZEJDSFJCZ0lEOEIzRnlJQWRCQ0haQmdQNERjU0FIUVJoMmNuSWhCeUFLUlEwQklBY2dDblFnQmkwQUJFRUlJQXByZG5JaEJ3d0JDeUFNUVFGSUJFQkJBQ0VIREFFTElBWXRBQUFnQ2tFWWNpSUpkQ0VISUFvZ0RHcEJDR3NpQ2tFQlNBMEFBMEFnQmkwQUFTQUpRUWhySWdsMElBZHlJUWNnQ2tFSVNpRU1JQVpCQVdvaEJpQUtRUWhySVFvZ0RBMEFDd3NnQ3lBTlFRRnFJZzAyQWhnZ0N5QU5RUWR4TmdJUUlBMGdFa3NOQ0NBTElBNGdEVUVEZG1vaUJqWUNEQ0FJSUFkQkgzWTJBalFnQjBGL1RBUkFJQXRCQ0dvZ0NFRTRhaEFDRFFrZ0NDZ0NPRUVGU3cwSklBdEJDR29nQ0VFOGFoQUNEUWtnQ0NnQ1BFRUZTdzBKSUFzb0FoUkJBM1FoRWlBTEtBSVlJUTBnQ3lnQ0RDRUdDd0pBSUJJZ0RXc2lDa0VnVGdSQUlBWW9BQUFpQjBFWWRDQUhRUWgwUVlDQS9BZHhjaUFIUVFoMlFZRCtBM0VnQjBFWWRuSnlJUWNnQ3lnQ0VDSUpSUTBCSUFjZ0NYUWdCaTBBQkVFSUlBbHJkbkloQnd3QkN5QUtRUUZJQkVCQkFDRUhEQUVMSUFZdEFBQWdDeWdDRUNJTVFSaHFJZ2wwSVFjZ0NpQU1ha0VJYXlJS1FRRklEUUFEUUNBR0xRQUJJQWxCQ0dzaUNYUWdCM0loQnlBS1FRaEtJUXdnQmtFQmFpRUdJQXBCQ0dzaENpQU1EUUFMQ3lBTElBMUJBV29pQ1RZQ0dDQUxJQWxCQjNFaUdEWUNFQ0FKSUJKTERRZ2dDeUFMS0FJSUlnNGdDVUVEZG1vaUJqWUNEQ0FJSUFkQkgzWTJBa0FnQjBGL1RBUkFBa0FnRWlBSmF5SUtRU0JPQkVBZ0JpZ0FBQ0lIUVJoMElBZEJDSFJCZ0lEOEIzRnlJQWRCQ0haQmdQNERjU0FIUVJoMmNuSWhCeUFZUlEwQklBY2dHSFFnQmkwQUJFRUlJQmhyZG5JaEJ3d0JDeUFLUVFGSUJFQkJBQ0VIREFFTElBWXRBQUFnR0VFWWNpSUpkQ0VISUFvZ0dHcEJDR3NpQ2tFQlNBMEFBMEFnQmkwQUFTQUpRUWhySWdsMElBZHlJUWNnQ2tFSVNpRU1JQVpCQVdvaEJpQUtRUWhySVFvZ0RBMEFDd3NnQ3lBWU5nSVFJQXNnRFVFaGFpSU1OZ0lZSUF3Z0Vrc05DU0FMSUE0Z0RFRURkbW9pQmpZQ0RDQUhSUTBKSUFnZ0J6WUNSQUpBSUJJZ0RHc2lDa0VnVGdSQUlBWW9BQUFpQjBFWWRDQUhRUWgwUVlDQS9BZHhjaUFIUVFoMlFZRCtBM0VnQjBFWWRuSnlJUWNnR0VVTkFTQUhJQmgwSUFZdEFBUkJDQ0FZYTNaeUlRY01BUXNnQ2tFQlNBUkFRUUFoQnd3QkN5QUdMUUFBSUJoQkdISWlDWFFoQnlBS0lCaHFRUWhySWdwQkFVZ05BQU5BSUFZdEFBRWdDVUVJYXlJSmRDQUhjaUVISUFwQkNFb2hFU0FHUVFGcUlRWWdDa0VJYXlFS0lCRU5BQXNMSUFzZ0RFRUhjU0lLTmdJUUlBc2dEVUhCQUdvaUNUWUNHQ0FKSUJKTERRa2dDeUFPSUFsQkEzWnFJZ1kyQWd3Z0IwVU5DU0FJSUFjMkFrZ0NRQ0FTSUFscklneEJJRTRFUUNBR0tBQUFJZ2RCR0hRZ0IwRUlkRUdBZ1B3SGNYSWdCMEVJZGtHQS9nTnhJQWRCR0haeWNpRUhJQXBGRFFFZ0J5QUtkQ0FHTFFBRVFRZ2dDbXQyY2lFSERBRUxJQXhCQVVnRVFFRUFJUWNNQVFzZ0JpMEFBQ0FLUVJoeUlnbDBJUWNnQ2lBTWFrRUlheUlLUVFGSURRQURRQ0FHTFFBQklBbEJDR3NpQ1hRZ0IzSWhCeUFLUVFoS0lRd2dCa0VCYWlFR0lBcEJDR3NoQ2lBTURRQUxDeUFMSUExQndnQnFJZ2syQWhnZ0N5QUpRUWR4SWhnMkFoQWdDU0FTU3cwSklBc2dEaUFKUVFOMmFpSUdOZ0lNSUFnZ0IwRWZkallDVEFzQ1FDQVNJQWxySWdwQklFNEVRQ0FHS0FBQUlnZEJHSFFnQjBFSWRFR0FnUHdIY1hJZ0IwRUlka0dBL2dOeElBZEJHSFp5Y2lFSElCaEZEUUVnQnlBWWRDQUdMUUFFUVFnZ0dHdDJjaUVIREFFTElBcEJBVWdFUUVFQUlRY01BUXNnQmkwQUFDQVlRUmh5SWcxMElRY2dDaUFZYWtFSWF5SUtRUUZJRFFBRFFDQUdMUUFCSUExQkNHc2lEWFFnQjNJaEJ5QUtRUWhLSVF3Z0JrRUJhaUVHSUFwQkNHc2hDaUFNRFFBTEN5QUxJQWxCQVdvaUREWUNHQ0FMSUF4QkIzRTJBaEFnRENBU1N3MElJQXNnRGlBTVFRTjJhaUlHTmdJTUlBZ2dCMEVmZGpZQ1VBSkFJQWRCZjB3RVFDQUxRUWhxSUFoQjFBQnFFQjROQ2lBTEtBSVVRUU4wSVJJZ0N5Z0NHQ0VNSUFzb0Fnd2hCZ3dCQ3lBSVFwaUFnSUNBQXpjRDZBTWdDRUtZZ0lDQWdBTTNBK0FESUFoQmdaQ3FpUUUyQXVBQklBaEJnWkNxaVFFMkFtQWdDRUVCTmdKVUN3SkFJQklnREdzaUNVRWdUZ1JBSUFZb0FBQWlCMEVZZENBSFFRaDBRWUNBL0FkeGNpQUhRUWgyUVlEK0EzRWdCMEVZZG5KeUlRY2dDeWdDRUNJSlJRMEJJQWNnQ1hRZ0JpMEFCRUVJSUFscmRuSWhCd3dCQ3lBSlFRRklCRUJCQUNFSERBRUxJQVl0QUFBZ0N5Z0NFQ0lLUVJocUlnMTBJUWNnQ1NBS2FrRUlheUlLUVFGSURRQURRQ0FHTFFBQklBMUJDR3NpRFhRZ0IzSWhCeUFLUVFoS0lRa2dCa0VCYWlFR0lBcEJDR3NoQ2lBSkRRQUxDeUFMSUF4QkFXb2lCallDR0NBTElBWkJCM0UyQWhBZ0JpQVNTdzBJSUFzZ0N5Z0NDQ0FHUVFOMmFqWUNEQ0FJSUFkQkgzWTJBdkFEQWtBZ0IwRi9UQVJBSUF0QkNHb2dDRUgwQTJvUUhrVU5BUXdLQ3lBSVFwaUFnSUNBQXpjRGlBY2dDRUtZZ0lDQWdBTTNBNEFISUFoQmdiaTQ4Z0EyQW9BRklBaEJnYmk0OGdBMkFvQUVJQWhCQVRZQzlBTUxBa0FDUUNBSUtBSlFEUUFnQ0NnQzhBTU5BQ0FMS0FJVVFRTjBJUklnQ3lnQ0dDRU1JQXNvQWd3aEJnd0JDeUFMS0FJTUlRWUNRQ0FMS0FJVVFRTjBJaElnQ3lnQ0dDSU1heUlKUVNCT0JFQWdCaWdBQUNJSFFSaDBJQWRCQ0hSQmdJRDhCM0Z5SUFkQkNIWkJnUDREY1NBSFFSaDJjbkloQnlBTEtBSVFJZ2xGRFFFZ0J5QUpkQ0FHTFFBRVFRZ2dDV3QyY2lFSERBRUxJQWxCQVVnRVFFRUFJUWNNQVFzZ0JpMEFBQ0FMS0FJUUlncEJHR29pRFhRaEJ5QUpJQXBxUVFocklncEJBVWdOQUFOQUlBWXRBQUVnRFVFSWF5SU5kQ0FIY2lFSElBcEJDRW9oQ1NBR1FRRnFJUVlnQ2tFSWF5RUtJQWtOQUFzTElBc2dERUVCYWlJTU5nSVlJQXNnREVFSGNUWUNFQ0FNSUJKTERRa2dDeUFMS0FJSUlBeEJBM1pxSWdZMkFnd2dDQ0FIUVI5Mk5nS1FCd3NDUUNBU0lBeHJJZ2xCSUU0RVFDQUdLQUFBSWdkQkdIUWdCMEVJZEVHQWdQd0hjWElnQjBFSWRrR0EvZ054SUFkQkdIWnljaUVISUFzb0FoQWlDVVVOQVNBSElBbDBJQVl0QUFSQkNDQUphM1p5SVFjTUFRc2dDVUVCU0FSQVFRQWhCd3dCQ3lBR0xRQUFJQXNvQWhBaUNrRVlhaUlOZENFSElBa2dDbXBCQ0dzaUNrRUJTQTBBQTBBZ0JpMEFBU0FOUVFocklnMTBJQWR5SVFjZ0NrRUlTaUVKSUFaQkFXb2hCaUFLUVFocklRb2dDUTBBQ3dzZ0N5QU1RUUZxSWdvMkFoZ2dDeUFLUVFkeElnazJBaEFnQ2lBU1N3MElJQXNnQ3lnQ0NDSU9JQXBCQTNacUlnWTJBZ3dnQ0NBSFFSOTJOZ0tVQndKQUlCSWdDbXNpQ2tFZ1RnUkFJQVlvQUFBaUIwRVlkQ0FIUVFoMFFZQ0EvQWR4Y2lBSFFRaDJRWUQrQTNFZ0IwRVlkbkp5SVFjZ0NVVU5BU0FISUFsMElBWXRBQVJCQ0NBSmEzWnlJUWNNQVFzZ0NrRUJTQVJBUVFBaEJ3d0JDeUFHTFFBQUlBbEJHSElpRFhRaEJ5QUpJQXBxUVFocklncEJBVWdOQUFOQUlBWXRBQUVnRFVFSWF5SU5kQ0FIY2lFSElBcEJDRW9oQ1NBR1FRRnFJUVlnQ2tFSWF5RUtJQWtOQUFzTElBc2dERUVDYWlJS05nSVlJQXNnQ2tFSGNTSUpOZ0lRSUFvZ0Vrc05DQ0FMSUE0Z0NrRURkbW9pQmpZQ0RDQUlJQWRCSDNZMkFwZ0hBa0FnQjBGL1RBUkFBa0FnRWlBS2F5SUtRU0JPQkVBZ0JpZ0FBQ0lIUVJoMElBZEJDSFJCZ0lEOEIzRnlJQWRCQ0haQmdQNERjU0FIUVJoMmNuSWhCeUFKUlEwQklBY2dDWFFnQmkwQUJFRUlJQWxyZG5JaEJ3d0JDeUFLUVFGSUJFQkJBQ0VIREFFTElBWXRBQUFnQ1VFWWNpSU5kQ0VISUFrZ0NtcEJDR3NpQ2tFQlNBMEFBMEFnQmkwQUFTQU5RUWhySWcxMElBZHlJUWNnQ2tFSVNpRUpJQVpCQVdvaEJpQUtRUWhySVFvZ0NRMEFDd3NnQ3lBTVFRTnFJZ1kyQWhnZ0N5QUdRUWR4TmdJUUlBWWdFa3NOQ2lBTElBNGdCa0VEZG1vMkFnd2dDQ0FIUVI5Mk5nS2NCeUFMUVFocUlBaEJvQWRxRUFJTkNpQUlLQUtnQjBFUVN3MEtJQXRCQ0dvZ0NFR2tCMm9RQWcwS0lBZ29BcVFIUVJCTERRb2dDMEVJYWlBSVFhZ0hhaEFDRFFvZ0NDZ0NxQWRCRUVzTkNpQUxRUWhxSUFoQnJBZHFFQUlOQ2lBSUtBS3NCMEVRU3cwS0lBdEJDR29nQ0VHd0Iyb1FBZzBLSUF0QkNHb2dDRUcwQjJvUUFnMEtEQUVMSUFoQkVEWUN0QWNnQ0VLUWdJQ0FnQUkzQXF3SElBaENnWUNBZ0lBQ053S2tCeUFJUW9HQWdJQWdOd0tjQndzZ0N5Z0N2QUVpQnlnQ21BZEZEUUFnQnlnQ3RBY2lCaUFIS0FLd0Iwa05DQ0FHSUFzb0FwUUJTUTBJSUFZZ0N5Z0N3QUZMRFFnZ0N5QUdRUUVnQmhzMkFzQUJDMEVJSUFzb0FoQWlCbXNoQndKQUlBc29BaFJCQTNRaUNDQUxLQUlZSWdscklncEJBV3RCSGtzTkFDQUdJQXBxUVFocklnWkJBVWdOQUFOQUlBWkJDRW9oQ2lBR1FRaHJJUVlnQ2cwQUN3c2dDeUFISUFscUlnWTJBaGdnQ3lBR1FRZHhOZ0lRSUFZZ0NFMEVRQ0FMSUFzb0FnZ2dCa0VEZG1vMkFnd0xBa0FnQUNBTEtBSndJZ1pCQW5ScUlnY29BaFFpQ0VVRVFDQUhRZHdBRUFnaUJqWUNGQ0FHRFFFTUNBc2dBQ2dDQ0NBR1JnUkFBa0FDUUNBTEtBSm9JQUFvQWhBaUJpZ0NBRWNOQUNBTEtBSnNJQVlvQWdSSERRQWdDeWdDZENBR0tBSU1SdzBBSUFzb0FuZ2lDU0FHS0FJUVJ3MEFJQXNvQXBRQklBWW9BaXhIRFFBZ0N5Z0NtQUVnQmlnQ01FY05BQ0FMS0FLY0FTQUdLQUkwUncwQUlBc29BcUFCSUFZb0FqaEhEUUFnQ3lnQ3BBRWlDaUFHS0FJOFJ3MEFJQXNvQXJnQklBWW9BbEJIRFFBQ1FBSkFBa0FnQ1E0Q0FRQUNDeUFMS0FLQUFTQUdLQUlZUncwQ0lBc29Bb1FCSUFZb0FoeEhEUUlnQ3lnQ2lBRWdCaWdDSUVjTkFpQUxLQUtNQVNJSklBWW9BaVJIRFFJZ0NVVU5BU0FHS0FJb0lReEJBQ0VOSUFzb0FwQUJJUTREUUNBT0lBMUJBblFpRW1vb0FnQWdEQ0FTYWlnQ0FFY05BeUFKSUExQkFXb2lEVWNOQUFzTUFRc2dDeWdDZkNBR0tBSVVSdzBCQ3lBS1JRMEJJQXNvQXFnQklBWW9Ba0JIRFFBZ0N5Z0NyQUVnQmlnQ1JFY05BQ0FMS0FLd0FTQUdLQUpJUncwQUlBc29BclFCSUFZb0FreEdEUUVMSUFnb0FpZ1FCQ0FIS0FJVVFRQTJBaWdnQnlnQ0ZDZ0NWQkFFSUFjb0FoUkJBRFlDVkNBQVFRQTJBaEFnQUVHQkFqWUNCQ0FBUWlFM0FnZ01BZ3NnQ3lnQ2tBRVFCRUVBSVFvZ0MwRUFOZ0tRQVNBTEtBSzhBUkFFSUF0QkFEWUN2QUZCQUNFTURBd0xJQWdvQWlnUUJDQUhLQUlVUVFBMkFpZ2dCeWdDRkNnQ1ZCQUVJQWNvQWhSQkFEWUNWQXNnQnlnQ0ZDQUxRZWdBYWtIY0FCQUhHZ3dHQ3lBTFFTQnFJZ1pCQUVISUFCQURHaUFMUVFocUlBWVFBZzBDSUFzb0FpQkIvd0ZMRFFJZ0MwRUlhaUJmRUFJTkFpQUxLQUlrUVI5TERRSWdDeWdDRENFR0FrQWdDeWdDRkVFRGRDSU1JQXNvQWhnaURtc2lDRUVnVGdSQUlBWW9BQUFpQjBFWWRDQUhRUWgwUVlDQS9BZHhjaUFIUVFoMlFZRCtBM0VnQjBFWWRuSnlJUWNnQ3lnQ0VDSUlSUTBCSUFjZ0NIUWdCaTBBQkVFSUlBaHJkbkloQnd3QkN5QUlRUUZJQkVCQkFDRUhEQUVMSUFZdEFBQWdDeWdDRUNJSlFSaHFJZzEwSVFjZ0NDQUpha0VJYXlJS1FRRklEUUFEUUNBR0xRQUJJQTFCQ0dzaURYUWdCM0loQnlBS1FRaEtJUWdnQmtFQmFpRUdJQXBCQ0dzaENpQUlEUUFMQ3lBTElBNUJBV29pQ1RZQ0dDQUxJQWxCQjNFaUNEWUNFQ0FKSUF4TERRSWdDeUFMS0FJSUloSWdDVUVEZG1vaUJqWUNEQ0FIUVFCSURRSUNRQ0FNSUFscklnbEJJRTRFUUNBR0tBQUFJZ2RCR0hRZ0IwRUlkRUdBZ1B3SGNYSWdCMEVJZGtHQS9nTnhJQWRCR0haeWNpRUhJQWhGRFFFZ0J5QUlkQ0FHTFFBRVFRZ2dDR3QyY2lFSERBRUxJQWxCQVVnRVFFRUFJUWNNQVFzZ0JpMEFBQ0FJUVJoeUlnMTBJUWNnQ0NBSmFrRUlheUlLUVFGSURRQURRQ0FHTFFBQklBMUJDR3NpRFhRZ0IzSWhCeUFLUVFoS0lRZ2dCa0VCYWlFR0lBcEJDR3NoQ2lBSURRQUxDeUFMSUE1QkFtb2lCallDR0NBTElBWkJCM0UyQWhBZ0JpQU1TdzBDSUFzZ0IwRWZkallDS0NBTElCSWdCa0VEZG1vMkFnd2dDMEVJYWlBTFFld0JhaEFDRFFJZ0N5QUxLQUxzQVVFQmFpSUdOZ0lzSUFaQkNFc05BaUFHUVFKSkRRRWdDMEVJYWlCZUVBSU5BaUFMS0FJd0lnWkJCa3NOQWdKQUFrQUNRQUpBSUFZT0J3QUZBUUlDQWdNRkN5QUxJQXNvQWl3aUIwRUNkQkFJSWdnMkFqUWdDRVVOQlVFQUlRWWdCMFVOQkFOQUlBdEJDR29nQzBIc0FXb1FBZzBHSUFnZ0JrRUNkR29nQ3lnQzdBRkJBV28yQWdBZ0JrRUJhaUlHSUFkSERRQUxEQVFMSUFzZ0N5Z0NMQ0lHUVFKMFFRUnJJZ2dRQ0NJSE5nSTRJQXNnQ0JBSUlnZzJBandnQjBVTkJDQUlSUTBFSUFaQkFVWU5BeUFHUVFGcklRbEJBQ0VHQTBBZ0MwRUlhaUFMUWV3QmFoQUNEUVVnQnlBR1FRSjBJZ3BxSUFzb0F1d0JOZ0lBSUF0QkNHb2dDMEhzQVdvUUFnMEZJQWdnQ21vZ0N5Z0M3QUUyQWdBZ0JrRUJhaUlHSUFsSERRQUxEQU1MSUFzb0Fnd2hCZ0pBSUFzb0FoUkJBM1FpQ1NBTEtBSVlJZ3hySWdoQklFNEVRQ0FHS0FBQUlnZEJHSFFnQjBFSWRFR0FnUHdIY1hJZ0IwRUlka0dBL2dOeElBZEJHSFp5Y2lFSElBc29BaEFpQ0VVTkFTQUhJQWgwSUFZdEFBUkJDQ0FJYTNaeUlRY01BUXNnQ0VFQlNBUkFRUUFoQnd3QkN5QUdMUUFBSUFzb0FoQWlDa0VZYWlJTmRDRUhJQWdnQ21wQkNHc2lDa0VCU0EwQUEwQWdCaTBBQVNBTlFRaHJJZzEwSUFkeUlRY2dDa0VJU2lFSUlBWkJBV29oQmlBS1FRaHJJUW9nQ0EwQUN3c2dDeUFNUVFGcUlnWTJBaGdnQ3lBR1FRZHhOZ0lRSUFZZ0NVc05BeUFMSUFkQkgzWTJBa0FnQ3lBTEtBSUlJQVpCQTNacU5nSU1JQXRCQ0dvZ0MwSHNBV29RQWcwRElBc2dDeWdDN0FGQkFXbzJBa1FNQWdzZ0MwRUlhaUFMUWV3QmFoQUNEUUlnQ3lBTEtBTHNBU0lPUVFGcUlnWTJBa2dnQ3lBR1FRSjBFQWdpQ0RZQ1RDQUlSUTBDSUFaRkRRRkJJQ0FMS0FJc0loSkJBblJCbkRGcUtBSUFJaEZySVE5QkFDRU1JQXNvQWd3aEJpQUxLQUlJSVJvRFFBSkFJQXNvQWhSQkEzUWlGQ0FMS0FJWUloaHJJZ2xCSUU0RVFDQUdLQUFBSWdkQkdIUWdCMEVJZEVHQWdQd0hjWElnQjBFSWRrR0EvZ054SUFkQkdIWnljaUVISUFzb0FoQWlDVVVOQVNBSElBbDBJQVl0QUFSQkNDQUphM1p5SVFjTUFRc2dDVUVCU0FSQVFRQWhCd3dCQ3lBR0xRQUFJQXNvQWhBaUNrRVlhaUlOZENFSElBa2dDbXBCQ0dzaUNrRUJTQTBBQTBBZ0JpMEFBU0FOUVFocklnMTBJQWR5SVFjZ0NrRUlTaUVKSUFaQkFXb2hCaUFLUVFocklRb2dDUTBBQ3dzZ0N5QVJJQmhxSWdZMkFoZ2dDeUFHUVFkeE5nSVFJQVlnRkVzRVFDQUlJQXhCQW5ScVFYODJBZ0FNQkFzZ0N5QWFJQVpCQTNacUlnWTJBZ3dnQ0NBTVFRSjBhaUFISUE5MklnYzJBZ0FnQnlBU1R3MERJQXdnRGtZaEJ5QU1RUUZxSVF3Z0IwVU5BQXNNQVFzZ0FDZ0NuQWtOQ0NBQVFRRTJBcUFKQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBZ0FDZ0NwQWtOQUNBQVFnQTNBclFKSUFzZ0N5Z0NHRFlDNEFFZ0N5QUxLUU1RTndQWUFTQUxJQXNwQXdnM0E5QUJBa0FnQzBIUUFXb2dDMEhzQVdvUUFnMEFJQXRCMEFGcUlBdEI3QUZxRUFJTkFDQUxRZEFCYWlBTFFld0JhaEFDRFFBZ1BTQUxLQUxzQVNJR0lBWkIvd0ZMR3lFOUMwRUVJUXdnQUNBOVFRSjBhaWdDbEFFaUJrVU5DU0FBSUFZb0FnUWlDRUVDZEdvaUNTZ0NGQ0lIUlEwSklBQW9BZ2doRHdKQUlBWW9BZ3dpRGtFQ1NRMEFJQWNvQWpRaURTQUhLQUk0YkNFSEFrQUNRQUpBQWtBZ0JpZ0NFQ0lSRGdNQkF3QURDeUFPUVFGcklSRWdCaWdDSENFVUlBWW9BaGdoSnd3QkN5QUdLQUlVSVEwRFFDQU5JQXBCQW5ScUtBSUFJQWRMRFEwZ0RpQUtRUUZxSWdwSERRQUxEQUlMQTBBZ0p5QUtRUUowSWc1cUtBSUFJaGdnRGlBVWFpZ0NBQ0lPU3cwTUlBY2dEazBORENBWUlBMXdJQTRnRFhCTERRd2dFU0FLUVFGcUlncEhEUUFMREFFTElCRkJBMnRCQWswRVFDQUdLQUlrSUFkTERRc01BUXNnRVVFR1J3MEFJQVlvQWlnZ0Iwa05DZ3NDUUFKQUlBQW9BZ1FpQjBHQUFrWUVRQ0FBSUFZMkFnd2dBQ0E5TmdJRUlBQWdDRFlDQ0NBQUlBa29BaFFpQmpZQ0VDQUdLQUkwSVFjZ0JpZ0NPQ0VHSUFCQkFUWUN0Qm9nQUNBR05nTEFDaUFBSUFjMkFyd0tJQUFnQmlBSGJEWUNtQWtNQVFzZ0FDZ0N0Qm9FUUNBQVFRQTJBclFhSUFBb0Fyd0pFQVFnQUVFQU5nSzhDU0FBS0FLVUNSQUVJQUFnQUNnQ21Ba2lEa0hZQVd3aUJ4QUlJZ1kyQXJ3SklBQWdEa0VDZEJBSUlnZzJBcFFKUVFVaERDQUdSUTBNSUFoRkRRd2dCa0VBSUFjUUF5RVJJQUFvQWhBaENpQU9CRUJCQVNBS0tBSTBJZ2hySVJRZ0NFRUJheUVZUVFBZ0NHc2hFeUFSUWRnQmF5RWNJQkVnQ0VGL2MwSFlBV3hxSVJkQkFDRUhRUUFoRFVFQUlRa0RRQ0FSSUFsQjJBRnNJZ3BxSWdZZ0NpQWNha0VBSUFjYk5nTElBU0FHQW44Z0RVVUVRQ0FHUWdBM0Fzd0JRUUFNQVFzZ0JpQUdJQk5CMkFGc2FqWUN6QUVnQmlBR0lCUkIyQUZzYWtFQUlBY2dHRWtiTmdMUUFTQUtJQmRxUVFBZ0J4c0xOZ0xVQVVFQUlBZEJBV29pQmlBR0lBaEdJZ1liSVFjZ0JpQU5haUVOSUFsQkFXb2lDU0FPUncwQUN5QUFLQUlRSVFvTFFRRWhHRUVBSVFjQ2YwRUFJQUFvQXNBSkRRQWFRUUFnQ2lnQ0VFRUNSZzBBR2dKQUlBb29BbEJGRFFBZ0NpZ0NWQ0lHS0FLWUIwVU5BRUVBSUFZb0FyQUhSUTBCR2d0QkFDRVlRUUVMSVFrZ0NpZ0NOQ0VuSUFvb0FqZ2hEaUFLS0FJTUlRMGdDaWdDTENFSUlBb29BbGdoRVFKQUlEZ29BZ0FpQmtVTkFFRUFJUW9nQmlFSElBQW9BdUFKUVg5R0RRQURRQ0FISUFwQktHd2lCbW9vQWdRUUJDQUFLQUxFQ1NJSElBWnFRUUEyQWdRZ0NrRUJhaUlLSUFBb0F1QUpRUUZxU1EwQUN3c2dCeEFFSUFCQkFEWUN4QWtnQUNnQ3lBa1FCQ0FBUVFBMkFzZ0pJQUFvQXRBSkVBUWdBRUgvL3dNMkF1Z0pJQUJCQURZQzBBa2dBQ0FZTmdMOENTQUFJQTAyQXVRSklBQWdFU0FJUVFFZ0NFRUJTeHNpQnlBSkd5SUdOZ0xnQ1NBQUlBYzJBdHdKSUFCQkFEWUM5QWtnQUVJQU53THNDU0FBUWFnRkVBZ2lCellDeEFrZ0IwVU5ERUVBSVFvZ0IwRUFRYWdGRUFNaENDQUdRWDlIQkVBZ0RpQW5iRUdBQTJ4QkwzSWhDUU5BSUFnZ0NrRW9iR29pRGlBSkVBZ2lCellDQkNBSFJRME9JQTRnQjBFQUlBZHJRUWh4YWpZQ0FDQUdJQXBISVFjZ0NrRUJhaUVLSUFjTkFBc0xJQUJCeEFBUUNDSUhOZ0xJQ1NBQUlBWkJCSFJCRUdvUUNDSUdOZ0xRQ1NBR1JRME1JQWRGRFF3Z0IwRUFRY1FBRUFNYUlBQkNBRGNDMUFrZ0FDZ0NDQ0VJREFFTElBY2dQVVlOQXlBSUlBOUdEUUVnR2tFRlJ3MExJQUFnQmpZQ0RDQUFJRDAyQWdRZ0FDQUlOZ0lJSUFBZ0NTZ0NGQ0lHTmdJUUlBWW9BalFoQnlBR0tBSTRJUVlnQUVFQk5nSzBHaUFBSUFZMkFzQUtJQUFnQnpZQ3ZBb2dBQ0FHSUFkc05nS1lDUXNnQ0NBUFJnMEJRUUFoQ2lBQUtBSUFJZ1pCSDAwRVFDQUFJQVpCQW5ScUtBSVVJUW9MSUFBb0FoQWhCeUFBUVFFMkFwQWFJQnBCQlVjTkJ5QUFLQUlNSVFnZ0N5QUxLQUlZTmdMZ0FTQUxJQXNwQXhBM0E5Z0JJQXNnQ3lrRENEY0QwQUZCQVNFR0lBdEIwQUZxSUF0QnpBRnFFQUlFUUVFQklRME1Cd3NnQzBIUUFXb2dDMEhNQVdvUUFnUkFRUUVoRFF3SEN5QUxRZEFCYWlBTFFjd0JhaEFDQkVCQkFTRU5EQWNMUVI4Z0J5Z0NER2NpRG1zaEVTQUxLQUxVQVNFTkFrQWdDeWdDM0FGQkEzUWlEeUFMS0FMZ0FTSWFheUlKUVNCT0JFQWdEU2dBQUNJSlFSaDBJQWxCQ0hSQmdJRDhCM0Z5SUFsQkNIWkJnUDREY1NBSlFSaDJjbkloRENBTEtBTFlBU0lKUlEwQklBd2dDWFFnRFMwQUJFRUlJQWxyZG5JaERBd0JDeUFKUVFGSUJFQkJBQ0VNREFFTElBMHRBQUFnQ3lnQzJBRWlGRUVZYWlJU2RDRU1JQWtnRkdwQkNHc2lDVUVCU0EwQUEwQWdEUzBBQVNBU1FRaHJJaEowSUF4eUlRd2dDVUVJU2lFVUlBMUJBV29oRFNBSlFRaHJJUWtnRkEwQUN3c2dDeUFSSUJwcUlnazJBdUFCSUFzZ0NVRUhjVFlDMkFGQkFTRU5JQWtnRDBzTkJpQUxJQXNvQXRBQklBbEJBM1pxTmdMVUFTQU1JQTVCQVdwMlFYOUdEUVlnQzBIUUFXb2dDMEhNQVdvUUFnMEdJQWNvQWhBaUJnMEVRUjhnQnlnQ0ZHY2lEbXNoRVNBTEtBTFVBU0VHQWtBZ0N5Z0MzQUZCQTNRaUR5QUxLQUxnQVNJYWF5SUpRU0JPQkVBZ0JpZ0FBQ0lKUVJoMElBbEJDSFJCZ0lEOEIzRnlJQWxCQ0haQmdQNERjU0FKUVJoMmNuSWhEQ0FMS0FMWUFTSUpSUTBCSUF3Z0NYUWdCaTBBQkVFSUlBbHJkbkloREF3QkN5QUpRUUZJQkVCQkFDRU1EQUVMSUFZdEFBQWdDeWdDMkFFaUZFRVlhaUlTZENFTUlBa2dGR3BCQ0dzaUNVRUJTQTBBQTBBZ0JpMEFBU0FTUVFockloSjBJQXh5SVF3Z0NVRUlTaUVVSUFaQkFXb2hCaUFKUVFocklRa2dGQTBBQ3dzZ0N5QVJJQnBxSWdZMkF1QUJJQXNnQmtFSGNUWUMyQUVnQmlBUFN3UkFRUUVoQmd3SEN5QUxJQXNvQXRBQklBWkJBM1pxTmdMVUFVRUJJUVlnRENBT1FRRnFka0YvUmcwR0lBZ29BZ2hGRFFVZ0MwRUFOZ0xzQVNBTFFkQUJhaUFMUWV3QmFoQUNJUWtDUUNBTEtBTHNBVUYvUmdSQUlBbEZEUUVNQlFzZ0NVVU5CQXNNQmdzZ0FDQUdOZ0lNSUFBZ1BUWUNCQXRCQUNFS0lBQW9BclFhUlEwQVFRTWhEQXdSQ3lBQUtBSU1JUWNnQUNnQ0VDRUdJRlZCQUVIY0J4QURJUk1nQmlnQ05DRUlJQVlvQWpnaENTQUxRUWhxSUF0QnpBRnFFQUlORHlBVElBc29Bc3dCSWdvMkFnQWdDaUFJSUFsc0lnMVBEUThnQzBFSWFpQUxRY3dCYWhBQ0RROGdBQ0FMS0FMTUFTSUlOZ0s0RWdKQUFrQWdDQTRJQUJFQkVSRUFFUUVSQ3lBYVFRVkdEUkFnQmlnQ0xFVU5FQXNnQzBFSWFpQUxRY3dCYWhBQ0RROGdBQ0FMS0FMTUFTSUlOZ0s4RWlBSUlBY29BZ0JIRFE5Qkh5QUdLQUlNWnlJbmF5RU1JQXNvQWd3aENRSkFJQXNvQWhSQkEzUWlFU0FMS0FJWUlnOXJJZ3BCSUU0RVFDQUpLQUFBSWdoQkdIUWdDRUVJZEVHQWdQd0hjWElnQ0VFSWRrR0EvZ054SUFoQkdIWnljaUVPSUFzb0FoQWlDRVVOQVNBT0lBaDBJQWt0QUFSQkNDQUlhM1p5SVE0TUFRc2dDa0VCU0FSQVFRQWhEZ3dCQ3lBSkxRQUFJQXNvQWhBaUZFRVlhaUlJZENFT0lBb2dGR3BCQ0dzaUdFRUJTQTBBQTBBZ0NTMEFBU0FJUVFocklnaDBJQTV5SVE0Z0dFRUlTaUVLSUFsQkFXb2hDU0FZUVFocklSZ2dDZzBBQ3dzZ0N5QU1JQTlxSWdnMkFoZ2dDeUFJUVFkeE5nSVFJQWdnRVVzTkR5QUxJQXNvQWdnZ0NFRURkbW8yQWd3Z0RpQW5RUUZxZGlJSVFYOUdEUThnR2tFRlJ5SUtRUUVnQ0J0RkRROGdBQ0FJTmdMQUVpQUtSUVJBSUF0QkNHb2dDMEhNQVdvUUFnMFFJQUFnQ3lnQ3pBRWlDRFlDeEJJZ0NFSC8vd05MRFJBTEFrQWdCaWdDRUNJSUJIOGdDQVZCSHlBR0tBSVVaeUlNYXlFUElBc29BZ3doQ1FKQUlBc29BaFJCQTNRaUZDQUxLQUlZSWlkcklnaEJJRTRFUUNBSktBQUFJZ2hCR0hRZ0NFRUlkRUdBZ1B3SGNYSWdDRUVJZGtHQS9nTnhJQWhCR0haeWNpRU9JQXNvQWhBaUNFVU5BU0FPSUFoMElBa3RBQVJCQ0NBSWEzWnlJUTRNQVFzZ0NFRUJTQVJBUVFBaERnd0JDeUFKTFFBQUlBc29BaEFpR0VFWWFpSVJkQ0VPSUFnZ0dHcEJDR3NpR0VFQlNBMEFBMEFnQ1MwQUFTQVJRUWhySWhGMElBNXlJUTRnR0VFSVNpRUlJQWxCQVdvaENTQVlRUWhySVJnZ0NBMEFDd3NnQ3lBUElDZHFJZ2cyQWhnZ0N5QUlRUWR4TmdJUUlBZ2dGRXNORVNBTElBc29BZ2dnQ0VFRGRtbzJBZ3dnRGlBTVFRRnFkaUlJUVg5R0RSRWdBQ0FJTmdMSUVpQUhLQUlJQkVBZ0MwRUFOZ0xRQVNBTFFRaHFJQXRCMEFGcUVBSWhDQUpBSUFzb0F0QUJJZ2xCZjBZRVFFR0FnSUNBZUNFWUlBaEZEUlFNQVFzZ0NBMFRJQWxCQVdwQkFYWWlDRUVBSUFocklBbEJBWEViSVJnTElBQWdHRFlDekJJTElBcEZCRUFnQUNnQ3lCSWlDQ0FHS0FJVVFRRjJTdzBTSUFoQkFDQUFLQUxNRWlJSlFSOTFJQWx4YTBjTkVnc2dCaWdDRUF0QkFVY05BQ0FHS0FJWURRQWdDMEVBTmdMUUFTQUxRUWhxSUF0QjBBRnFFQUloQ0FKQUlBc29BdEFCSWdsQmYwWUVRRUdBZ0lDQWVDRVlJQWhGRFJJTUFRc2dDQTBSSUFsQkFXcEJBWFlpQ0VFQUlBaHJJQWxCQVhFYklSZ0xJQUFnR0RZQzBCSWdCeWdDQ0FSQUlBdEJBRFlDMEFFZ0MwRUlhaUFMUWRBQmFoQUNJUWdDUUNBTEtBTFFBU0lKUVg5R0JFQkJnSUNBZ0hnaEdDQUlSUTBUREFFTElBZ05FaUFKUVFGcVFRRjJJZ2hCQUNBSWF5QUpRUUZ4R3lFWUN5QUFJQmcyQXRRU0N5QUtEUUFnQUNnQzBCSWlDQ0FBS0FMVUVpQUlJQVlvQWlCcWFpSUpJQWdnQ1VnYkRSQUxJQWNvQWtRRVFDQUxRUWhxSUF0QnpBRnFFQUlORUNBQUlBc29Bc3dCSWdnMkF0Z1NJQWhCL3dCTERSQUxBa0FDUUNBQUtBSzRFaUluRGdZQUFRRUJBUUFCQ3lBTEtBSU1JUWtDUUNBTEtBSVVRUU4wSWd3Z0N5Z0NHQ0lQYXlJSVFTQk9CRUFnQ1NnQUFDSUlRUmgwSUFoQkNIUkJnSUQ4QjNGeUlBaEJDSFpCZ1A0RGNTQUlRUmgyY25JaERpQUxLQUlRSWdoRkRRRWdEaUFJZENBSkxRQUVRUWdnQ0d0MmNpRU9EQUVMSUFoQkFVZ0VRRUVBSVE0TUFRc2dDUzBBQUNBTEtBSVFJaFJCR0dvaUVYUWhEaUFJSUJScVFRaHJJaGhCQVVnTkFBTkFJQWt0QUFFZ0VVRUlheUlSZENBT2NpRU9JQmhCQ0VvaENDQUpRUUZxSVFrZ0dFRUlheUVZSUFnTkFBc0xJQXNnRDBFQmFpSUlOZ0lZSUFzZ0NFRUhjVFlDRUNBSUlBeExEUkFnQ3lBTEtBSUlJQWhCQTNacU5nSU1JQUFnRGtFZmRqWUMzQklDUUNBT1FYOU1CRUFnQzBFSWFpQUxRY3dCYWhBQ0RSSWdDeWdDekFFaUNFRVBTdzBTSUFoQkFXb2hDU0FBS0FLNEVpRW5EQUVMSUFjb0FqQWlDVUVRU3cwUkN5QUFJQWsyQXVBU0N3SkFBa0FnSnc0R0FBRUJBUUVBQVFzZ0N5Z0NEQ0VKQWtBZ0N5Z0NGRUVEZENJTUlBc29BaGdpRDJzaUNFRWdUZ1JBSUFrb0FBQWlDRUVZZENBSVFRaDBRWUNBL0FkeGNpQUlRUWgyUVlEK0EzRWdDRUVZZG5KeUlRNGdDeWdDRUNJSVJRMEJJQTRnQ0hRZ0NTMEFCRUVJSUFocmRuSWhEZ3dCQ3lBSVFRRklCRUJCQUNFT0RBRUxJQWt0QUFBZ0N5Z0NFQ0lVUVJocUloRjBJUTRnQ0NBVWFrRUlheUlZUVFGSURRQURRQ0FKTFFBQklCRkJDR3NpRVhRZ0RuSWhEaUFZUVFoS0lRZ2dDVUVCYWlFSklCaEJDR3NoR0NBSURRQUxDeUFHS0FJTUlSRWdBQ2dDNEJJaEZDQUxJQTlCQVdvaUNEWUNHQ0FMSUFoQkIzRTJBaEFnQ0NBTVN3MFFJQXNnQ3lnQ0NDQUlRUU4yYWpZQ0RDQUFJQTVCSDNZMkF2Z1NJQTVCZjBvTkFFRUFJUWtEUUNBSklCUkxEUkVnQzBFSWFpQUxRZXdCYWhBQ0RSRWdDeWdDN0FFaUNFRURTdzBSSUFBZ0NVRU1iR29pREVIOEVtb2dDRFlDQUNBSVFRRk5CRUFnQzBFSWFpQUxRZEFCYWhBQ0RSSWdDeWdDMEFFaUNDQVJUdzBTSUF4QmdCTnFJQWhCQVdvMkFnQWdDVUVCYWlFSkRBRUxJQWhCQWtZRVFDQUxRUWhxSUF0QjBBRnFFQUlORWlBTVFZUVRhaUFMS0FMUUFUWUNBQ0FKUVFGcUlRa01BUXNMSUFsRkRSQUxBa0FnRWtVTkFDQUxLQUlNSVFnQ1FDQUxLQUlVUVFOMElnOGdDeWdDR0NJbmF5SU1RU0JPQkVBZ0NDZ0FBQ0lKUVJoMElBbEJDSFJCZ0lEOEIzRnlJQWxCQ0haQmdQNERjU0FKUVJoMmNuSWhEaUFMS0FJUUlnbEZEUUVnRGlBSmRDQUlMUUFFUVFnZ0NXdDJjaUVPREFFTElBeEJBVWdFUUVFQUlRNE1BUXNnQ0MwQUFDQUxLQUlRSWhSQkdHb2lFWFFoRGlBSUlRa2dEQ0FVYWtFSWF5SVlRUUZJRFFBRFFDQUpMUUFCSUJGQkNHc2lFWFFnRG5JaERpQVlRUWhLSVF3Z0NVRUJhaUVKSUJoQkNHc2hHQ0FNRFFBTEN5QUdLQUlzSVJRZ0N5QW5RUUZxSWd3MkFoZ2dDeUFNUVFkeElnWTJBaEJCZnlFSklBd2dEMDBFUUNBTElBc29BZ2dnREVFRGRtb2lDRFlDRENBT1FSOTJJUWtMSUFwRkJFQWdDVUYvUmcwUklBQWdDVFlDeUJRQ1FDQVBJQXhySWdwQklFNEVRQ0FJS0FBQUlnbEJHSFFnQ1VFSWRFR0FnUHdIY1hJZ0NVRUlka0dBL2dOeElBbEJHSFp5Y2lFSklBWkZEUUVnQ1NBR2RDQUlMUUFFUVFnZ0JtdDJjaUVKREFFTElBcEJBVWdFUUVFQUlRa01BUXNnQ0MwQUFDQUdRUmh5SWhoMElRa2dCaUFLYWtFSWF5SUtRUUZJRFFBRFFDQUlMUUFCSUJoQkNHc2lHSFFnQ1hJaENTQUtRUWhLSVFZZ0NFRUJhaUVJSUFwQkNHc2hDaUFHRFFBTEN5QUxJQ2RCQW1vaUJqWUNHQ0FMSUFaQkIzRTJBaEFnQmlBUFN3MFJJQXNnQ3lnQ0NDQUdRUU4yYWpZQ0RDQUFJQWxCSDNZMkFzd1VJQlFOQVNBSlFYOU1EUkVNQVFzZ0NVRi9SZzBRSUFBZ0NUWUMwQlFnQ1VVTkFDQVVRUUYwUVFOcUlROUJBQ0VKUVFBaEowRUFJUTVCQUNFSVFRQWhFUU5BSUFrZ0QwWU5FU0FMUVFocUlBdEI3QUZxRUFJTkVTQUxLQUxzQVNJR1FRWkxEUkVnQUNBSlFSUnNhaUlLUWRRVWFpQUdOZ0lBSUFaQmZYRkJBVVlFUUNBTFFRaHFJQXRCMEFGcUVBSU5FaUFLUWRnVWFpQUxLQUxRQVVFQmFqWUNBQXNDUUFKQUFrQUNRQ0FHUVFKckRnVUFBUUlEQVFNTElBdEJDR29nQzBIUUFXb1FBZzBVSUFwQjNCUnFJQXNvQXRBQk5nSUFEQUlMSUF0QkNHb2dDMEhRQVdvUUFnMFRJQXBCNEJScUlBc29BdEFCTmdJQUlBWkJCRWNOQVFzZ0MwRUlhaUFMUWRBQmFoQUNEUklnQ3lnQzBBRWlEQ0FVU3cwU0lBcEI1QlJxSUF4QkFXdEIvLzhESUF3Yk5nSUFJQ2RCQVdvaEp3c2dDVUVCYWlFSklBZ2dCa0VHUm1vaENDQU9JQVpCQlVacUlRNGdFU0FHUVFGclFRTkphaUVSSUFZTkFBc2dKMEVCU3cwUUlBNUJBVXNORUNBSVFRRkxEUkFnRVVVTkFDQU9EUkFMSUF0QkFEWUMwQUVnQzBFSWFpQUxRZEFCYWhBQ0lRWUNRQ0FMS0FMUUFTSUlRWDlHQkVCQmdJQ0FnSGdoQ1NBR1JRMFJEQUVMSUFZTkVDQUlRUUZxUVFGMklnWkJBQ0FHYXlBSVFRRnhHeUVKQ3lBQUlBazJBdVFTSUFjb0FqUWdDV3BCTTBzTkR3SkFJQWNvQWp4RkRRQWdDMEVJYWlBTFFjd0JhaEFDRFJBZ0FDQUxLQUxNQVNJR05nTG9FaUFHUVFKTERSQWdCa0VCUmcwQUlBdEJBRFlDMEFFZ0MwRUlhaUFMUWRBQmFoQUNJUWdnQ3lnQzBBRWlCa0YvUmcwUUlBZ05FQ0FHUVFGcVFRRjJJZ2hCQUNBSWF5QUdRUUZ4R3lJR1FRWnFRUXhMRFJBZ0FDQUdRUUYwTmdMc0VpQUxRUUEyQXRBQklBdEJDR29nQzBIUUFXb1FBaUVJSUFzb0F0QUJJZ1pCZjBZTkVDQUlEUkFnQmtFQmFrRUJkaUlJUVFBZ0NHc2dCa0VCY1JzaUJrRUdha0VNU3cwUUlBQWdCa0VCZERZQzhCSUxBa0FnQnlnQ0RFRUNTUTBBSUFjb0FoQkJBMnRCQWtzTkFFRUJRUUlnRFNBTklBY29BaVFpQjI0aUJpQUhiRVliSUFacUlRaEJBQ0VLQTBBZ0NDQUtJZ1pCQVdvaUNuWU5BQXNnQ2lBR0lBaEJmeUFHZEVGL2MzRWJJUWdnQ3lnQ0RDRUtBa0FnQ3lnQ0ZFRURkQ0lPSUFzb0FoZ2lFV3NpQmtFZ1RnUkFJQW9vQUFBaUJrRVlkQ0FHUVFoMFFZQ0EvQWR4Y2lBR1FRaDJRWUQrQTNFZ0JrRVlkbkp5SVF3Z0N5Z0NFQ0lHUlEwQklBd2dCblFnQ2kwQUJFRUlJQVpyZG5JaERBd0JDeUFHUVFGSUJFQkJBQ0VNREFFTElBb3RBQUFnQ3lnQ0VDSUpRUmhxSWhoMElRd2dCaUFKYWtFSWF5SUpRUUZJRFFBRFFDQUtMUUFCSUJoQkNHc2lHSFFnREhJaERDQUpRUWhLSVFZZ0NrRUJhaUVLSUFsQkNHc2hDU0FHRFFBTEN5QUxJQWdnRVdvaUJqWUNHQ0FMSUFaQkIzRTJBaEFnQmlBT1N3UkFJQXRCZnpZQ3pBRU1FUXNnQ3lBTEtBSUlJQVpCQTNacU5nSU1JQXhCSUNBSWEzWWlCa0YvUmcwUUlBQWdCallDOUJJZ0JpQUhJQTFxUVFGcklBZHVTdzBRQ3lBQUtBS2tDVVVFUUFKQUlCcEJCVVlOQUNBQUtBSVFLQUl3SVFZZ0FFSUFOd0xVQ1NBR1JRMEFBa0FDUUFKQUFrQWdBQ2dDOUFraUNpQUFLQUxBRWlJblJ3UkFJQ2NnQ2tFQmFpQUFLQUxrQ1NJT2NDSUdSd1JBSUFBb0FzUUpJQUFvQXVBSlFTaHNhaWdDQUNFUkEwQUNRQUpBQWtBQ1FDQUFLQUxzQ1NJS0JFQWdDa0VCY1NFSklBQW9Bc1FKSVFkQkFDRU5Ba0FnQ2tFQlJpSVBSUVJBSUFwQmZuRWhEQU5BSUFjZ0RVRW9iR29pQ0NnQ0ZFRUJhMEVCVFFSQUlBZ2dDQ2dDRENJSUlBNUJBQ0FHSUFoSkcyczJBZ2dMSUFjZ0RVRUJja0VvYkdvaUNDZ0NGRUVCYTBFQ1NRUkFJQWdnQ0NnQ0RDSUlJQTVCQUNBR0lBaEpHMnMyQWdnTElBMUJBbW9oRFNBTVFRSnJJZ3dOQUFzZ0NVVU5BUXNnQnlBTlFTaHNhaUlJS0FJVVFRRnJRUUZMRFFBZ0NDQUlLQUlNSWdnZ0RrRUFJQVlnQ0VrYmF6WUNDQXNnQ2lBQUtBTGNDVWtOQkNBUFJRMEJRUUFoR0VGL0lReEJBQ0VJREFJTFFRQWhDaUFBS0FMY0NRMERRUU1oREF3ZEMwRi9JUXhCQUNFTlFRQWhHQ0FLUVg1eElnZ2hEZ05BSUFjZ0RVRW9iR29pRHlnQ0ZFRUJhMEVCVFFSQUlBOG9BZ2dpRHlBWUlBeEJmMFlnRHlBWVNISWlEeHNoR0NBTklBd2dEeHNoREFzZ0J5QU5RUUZ5SWc5QktHeHFJaFFvQWhSQkFXdEJBa2tFUUNBVUtBSUlJaFFnR0NBTVFYOUdJQlFnR0VoeUloUWJJUmdnRHlBTUlCUWJJUXdMSUExQkFtb2hEU0FPUVFKcklnNE5BQXNnQ1VVTkFRc2dCeUFJUVNoc2FpSUpLQUlVUVFGclFRRkxEUUFnQ0NBSUlBd2dERUYvUmhzZ0NTZ0NDQ0FZU0JzaERBc2dERUVBU0EwWklBY2dERUVvYkdvaUIwRUFOZ0lVSUFBZ0NrRUJheUlLTmdMc0NTQUhLQUlZRFFBZ0FDQUFLQUx3Q1VFQmF6WUM4QWtMQWtBZ0FDZ0M4QWtpQ0NBQUtBTGdDU0lIU1FSQUlBQW9Bc1FKSVE4TUFRc2dBQ2dDL0FrTkJDQUFLQUxFQ1NFUEEwQkJBQ0VZUWYvLy8vOEhJUXhCQUNFTkEwQWdEeUFOUVNoc2FpSUpLQUlZQkVBZ0NTQVlJQWtvQWhBaUNTQU1TQ0lPR3lFWUlBa2dEQ0FPR3lFTUN5QU5RUUZxSWcwZ0IwME5BQXNnR0FSQUlBQW9BdEFKSUFBb0F0UUpJZ3hCQkhScUlna2dHQ2dDQURZQ0FDQUpJQmdvQWlRMkFnd2dDU0FZS0FJY05nSUVJQWtnR0NnQ0lEWUNDQ0FBSUF4QkFXbzJBdFFKSUJoQkFEWUNHQ0FJSUJnb0FoUkZheUVJQ3lBSElBaE5EUUFMQ3lBUElBZEJLR3hxSWdrZ0JqWUNEQ0FKUW9DQWdJQVFOd0lRSUFsQkFEWUNHQ0FKSUFZMkFnZ2dBQ0FLUVFGcU5nTHNDU0FBSUFoQkFXbzJBdkFKSUE4Z0IwRUJhaEFkSUFaQkFXb2dBQ2dDNUFraURuQWlCaUFuUncwQUN5QUFLQUxVQ1NJSVJRMERJQUFvQXNRSklna2dBQ2dDNEFraUJrRW9iR29pRENnQ0FDRUhJQUFvQXRBSklRMUJBQ0VLQTBBZ0J5QU5JQXBCQkhScUtBSUFSd1JBSUFnZ0NrRUJhaUlLUncwQkRBVUxDMEVBSVFvZ0JrVU5Bd05BSUJFZ0NTQUtRU2hzYWlJSUtBSUFSd1JBSUFZZ0NrRUJhaUlLUncwQkRBVUxDeUFJSUFjMkFnQWdEQ0FSTmdJQURBTUxJQklOQkF3REMwRUFJUW9nRWtVTkJFRURJUXdNRmdzRFFBd0FDd0FMSUJJTkFTQUFLQUwwQ1NFS0N5QUtJQ2RHRFFFZ0RpQW5ha0VCYXlBT2NDRW5DeUFBSUNjMkF2UUpDeUFBSUFBb0FzUUpJQUFvQXVBSlFTaHNhaUlHTmdMTUNTQUFJQVlvQWdBMkFyZ0tDeUJXSUJOQjNBY1FCeUV2SUFCQkFUWUNwQWtnQUNBYXJTQVNyVUlnaG9RM0F0QUtJQUFvQWhBaUJpZ0NPQ0lPSUFZb0FqUWlFbXdoR0NBQUtBS1VDU0VQQWtBZ0FDZ0NEQ0lHS0FJTUlncEJBVVlFUUNBUFFRQWdHRUVDZEJBREdnd0JDMEVBSVEwQ1FBSkFJQVlvQWhBaUIwRURhMEVDVFFSQUlBWW9BaVFnQUNnQ21BdHNJZ2dnR0NBSUlCaEpHeUVhSUFZb0FpQWhDQ0FIUVg1eFFRUkhEUUVnR0NBYWF5QWFJQWdiSVEwTEFrQUNRQUpBQWtBQ1FBSkFJQWNPQmdFQ0F3QUZCQUFMSUJoRkRRY2dHRUVEY1NFSklBWW9BaXdoQjBFQUlRWWdHRUVCYTBFRFR3UkFJQmhCZkhFaERBTkFJQThnQmtFQ2RDSUlhaUFISUFocUtBSUFOZ0lBSUE4Z0NFRUVjaUlLYWlBSElBcHFLQUlBTmdJQUlBOGdDRUVJY2lJS2FpQUhJQXBxS0FJQU5nSUFJQThnQ0VFTWNpSUlhaUFISUFocUtBSUFOZ0lBSUFaQkJHb2hCaUFNUVFScklnd05BQXNMSUFsRkRRY0RRQ0FQSUFaQkFuUWlDR29nQnlBSWFpZ0NBRFlDQUNBR1FRRnFJUVlnQ1VFQmF5SUpEUUFMREFjTElBcEZEUVVnQmlnQ0ZDRUlRUUFoQndOQVFRQWhEU0FISUJoUERRY0RRQUpBSUFnZ0RVRUNkR29pRENnQ0FDSUpSUVJBUVFBaENRd0JDMEVBSVFaQkFDQVlJQWRySWc0Z0RpQVlTeHNpRGtVTkFBTkFJQThnQmlBSGFrRUNkR29nRFRZQ0FDQUdRUUZxSWdZZ0RDZ0NBQ0lKVHcwQklBWWdEa2NOQUFzTElBb2dEVUVCYWlJTlMwRUFJQmdnQnlBSmFpSUhTeHNOQUFzZ0J5QVlTUTBBQ3d3R0N5QVlSUTBGUVFBaEJnTkFJQThnQmtFQ2RHb2dCaUFTYmlJSElBcHNRUUYySUFZZ0J5QVNiR3RxSUFwd05nSUFJQVpCQVdvaUJpQVlSdzBBQ3d3RkN5QUdLQUljSVE0Z0JpZ0NHQ0VSQWtBZ0dFVU5BQ0FLUVFGcklRWWdHRUVIY1NFSlFRQWhEU0FZUVFGclFRZFBCRUFnR0VGNGNTRU1BMEFnRHlBTlFRSjBJZ2RxSUFZMkFnQWdEeUFIUVFSeWFpQUdOZ0lBSUE4Z0IwRUljbW9nQmpZQ0FDQVBJQWRCREhKcUlBWTJBZ0FnRHlBSFFSQnlhaUFHTmdJQUlBOGdCMEVVY21vZ0JqWUNBQ0FQSUFkQkdISnFJQVkyQWdBZ0R5QUhRUnh5YWlBR05nSUFJQTFCQ0dvaERTQU1RUWhySWd3TkFBc0xJQWxGRFFBRFFDQVBJQTFCQW5ScUlBWTJBZ0FnRFVFQmFpRU5JQWxCQVdzaUNRMEFDd3NnQ2tFQ2F5RUdBMEFDUUNBUklBWWlCMEVDZENJR2FpZ0NBQ0lJSUJKdUlnd2dCaUFPYWlnQ0FDSUdJQkp1SWhoTERRQWdDQ0FNSUJKc2F5SUlJQVlnRWlBWWJHc2lDVXNOQUFOQUlBd2dFbXdoQ2lBSUlRWURRQ0FQSUFZZ0NtcEJBblJxSUFjMkFnQWdCa0VCYWlJR0lBbE5EUUFMSUF4QkFXb2lEQ0FZVFEwQUN3c2dCMEVCYXlFR0lBY05BQXNNQkFzZ0VrVU5BeUFPUlEwRFFRRWdCaWdDSUNJWWF5RVJJQTVCZm5FaENpQU9RUUZ4SVJwQkFDRUlRUUFoQ1FOQUlBZ2hCa0VBSVFjZ0NpRU1JQTVCQVVjRVFBTkFJQThnQnlBU2JDQUpha0VDZEdvZ0dDQVJJQVlnRFVrYk5nSUFJQThnQjBFQmNpQVNiQ0FKYWtFQ2RHb2dHQ0FSSUFaQkFXb2dEVWtiTmdJQUlBZEJBbW9oQnlBR1FRSnFJUVlnREVFQ2F5SU1EUUFMQ3lBYUJFQWdEeUFISUJKc0lBbHFRUUowYWlBWUlCRWdCaUFOU1JzMkFnQUxJQWdnRG1vaENDQUpRUUZxSWdrZ0VrY05BQXNNQXdzZ0dFVU5Ba0VCSUFZb0FpQWlCMnNoQ0NBWVFRTnhJUXhCQUNFR0lCaEJBV3RCQTA4RVFDQVlRWHh4SVJJRFFDQVBJQVpCQW5ScUlBY2dDQ0FHSUExSkd6WUNBQ0FQSUFaQkFYSWlDVUVDZEdvZ0J5QUlJQWtnRFVrYk5nSUFJQThnQmtFQ2NpSUpRUUowYWlBSElBZ2dDU0FOU1JzMkFnQWdEeUFHUVFOeUloaEJBblJxSUFjZ0NDQU5JQmhMR3pZQ0FDQUdRUVJxSVFZZ0VrRUVheUlTRFFBTEN5QU1SUTBDQTBBZ0R5QUdRUUowYWlBSElBZ2dCaUFOU1JzMkFnQWdCa0VCYWlFR0lBeEJBV3NpREEwQUN3d0NDd0pBSUJoRkRRQWdHRUVIY1NFTlFRQWhCeUFZUVFGclFRZFBCRUFnR0VGNGNTRUpBMEFnRHlBSFFRSjBJZ1pxUVFFMkFnQWdEeUFHUVFSeWFrRUJOZ0lBSUE4Z0JrRUljbXBCQVRZQ0FDQVBJQVpCREhKcVFRRTJBZ0FnRHlBR1FSQnlha0VCTmdJQUlBOGdCa0VVY21wQkFUWUNBQ0FQSUFaQkdISnFRUUUyQWdBZ0R5QUdRUnh5YWtFQk5nSUFJQWRCQ0dvaEJ5QUpRUWhySWdrTkFBc0xJQTFGRFFBRFFDQVBJQWRCQW5ScVFRRTJBZ0FnQjBFQmFpRUhJQTFCQVdzaURRMEFDd3NnR2tVTkFTQVNRUUZySVJRZ0RrRUJheUVUUVFFZ0NFRUJkQ0lHYXlFS0lBWkJBV3NoRENBSVFRRnJJUWRCQUNFSklBNGdDR3RCQVhZaURpRW5JQklnQ0d0QkFYWWlFU0VOSUE0aEdDQVJJUVlEUUNBUElCSWdHR3dnQm1wQkFuUnFJaHdvQWdBaUYwRUJSZ1JBSUJ4QkFEWUNBQXNnRjBFQlJpRWNBa0FDUUNBSFFYOUhEUUFnQmlBTlJ3MEFRUUFoQnlBTUlRZ2dEVUVCSUExQkFVb2JRUUZySWdZaERRd0JDd0pBSUFkQkFVY05BQ0FHSUJGSERRQkJBQ0VISUFvaENDQVJRUUZxSWdZZ0ZDQUdJQlJJR3lJR0lSRU1BUXNDUUNBSVFYOUhEUUFnR0NBblJ3MEFRUUFoQ0NBS0lRY2dKMEVCSUNkQkFVb2JRUUZySWhnaEp3d0JDd0pBSUFoQkFVY05BQ0FPSUJoSERRQkJBQ0VJSUF3aEJ5QU9RUUZxSWc0Z0V5QU9JQk5JR3lJWUlRNE1BUXNnQ0NBWWFpRVlJQVlnQjJvaEJnc2dDU0FjYWlJSklCcEpEUUFMREFFTElCaEZEUUFEUUF3QUN3QUxBa0FnQUNnQzdBa2lDRVVFUUNBQUtBS0VDeUVTSUFBb0F1UUtJUXdNQVFzZ0NFRURjU0VLUVFBaEJpQUlRUUZyUVFOUEJFQWdDRUY4Y1NFSEEwQWdBQ2dDeUFrZ0JrRUNkR29nQUNnQ3hBa2dCa0VvYkdvMkFnQWdBQ2dDeUFrZ0JrRUJjaUlKUVFKMGFpQUFLQUxFQ1NBSlFTaHNhallDQUNBQUtBTElDU0FHUVFKeUlnbEJBblJxSUFBb0FzUUpJQWxCS0d4cU5nSUFJQUFvQXNnSklBWkJBM0lpQ1VFQ2RHb2dBQ2dDeEFrZ0NVRW9iR28yQWdBZ0JrRUVhaUVHSUFkQkJHc2lCdzBBQ3dzZ0NnUkFBMEFnQUNnQ3lBa2dCa0VDZEdvZ0FDZ0N4QWtnQmtFb2JHbzJBZ0FnQmtFQmFpRUdJQXBCQVdzaUNnMEFDd3NnQUNnQ2hBc2hFaUFBS0FMa0NpRU1JQWhGRFFBZ09DZ0NBQ0VKUVFBaEJnTkFJQWtnQmtFb2JHb2lCeWdDRkVFQmEwRUJUUVJBSUFjZ0RDQUhLQUlNSWdkSkJIOGdCeUFBS0FMa0NXc0ZJQWNMTmdJSUN5QUdRUUZxSWdZZ0NFY05BQXNMQWtBZ0FDZ0NuQXRGRFFCQkFDRVlJQXdoQ0NBQUtBS2dDeUlHUVFKTERRQURRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBWU9Bd0FCQXdFTElBZ2dBQ0FZUVF4c2FrR2tDMm9vQWdCcklnaEJmMG9OQVNBQUtBTGtDU0FJYWlFSURBRUxJQUFnR0VFTWJHcEJwQXRxS0FJQUlBaHFJZ1pCQUNBQUtBTGtDU0lISUFZZ0IwZ2JheUVJQ3lBSUlnNGdERXNFUUNBSUlBQW9BdVFKYXlFT0N5QUFLQUxjQ1NJSlJRMFZJRGdvQWdBaEIwRUFJUVlEUUNBSElBWkJLR3hxSWdvb0FoUWlEVUVCYTBFQlRRUkFJQW9vQWdnZ0RrWU5Bd3RCQUNFS0lBWkJBV29pQmlBSlJ3MEFDMEVESVF3TUZnc2dBQ2dDM0FraUNVVU5GQ0FBSUJoQkRHeHFRYWdMYWlnQ0FDRU9JRGdvQWdBaEIwRUFJUVlEUUNBSElBWkJLR3hxSWdvb0FoUkJBMFlFUUNBS0tBSUlJQTVHRFFNTFFRQWhDaUFHUVFGcUlnWWdDVWNOQUF0QkF5RU1EQlVMUVFBaENpQUdRUUJJQkVCQkF5RU1EQlVMSUExQkFVc05BVUVESVF3TUZBdEJBQ0VLSUFaQkFFNE5BRUVESVF3TUV3c2dFaUFZU3dSQUlCSWlDaUFZYTBFRGNTSUhCRUFEUUNBQUtBTElDU0lKSUFwQkFuUnFJQWtnQ2tFQmF5SUtRUUowYWlnQ0FEWUNBQ0FIUVFGcklnY05BQXNMSUJJZ0dFRi9jMnBCQTA4RVFBTkFJQUFvQXNnSklna2dDa0VDZENJSGFpQUpJQWRCQkdzaURtb29BZ0EyQWdBZ0FDZ0N5QWtpQ1NBT2FpQUpJQWRCQ0dzaURtb29BZ0EyQWdBZ0FDZ0N5QWtpQ1NBT2FpQUpJQWRCREdzaUIyb29BZ0EyQWdBZ0J5QUFLQUxJQ1NJSmFpQUpJQXBCQkdzaUNrRUNkR29vQWdBMkFnQWdDaUFZU3cwQUN3c2dPQ2dDQUNFSEN5QUFLQUxJQ1NBWVFRSjBhaUFISUFaQktHd2lDV28yQWdBZ0dFRUJhaUlZSVFvZ0VpQVlJZ1pQQkVBRFFDQUFLQUxJQ1NJSElBWkJBblJxS0FJQUlnNGdBQ2dDeEFrZ0NXcEhCRUFnQnlBS1FRSjBhaUFPTmdJQUlBcEJBV29oQ2dzZ0JrRUJhaUlHSUJKTkRRQUxDeUFBSUJoQkRHeHFRYUFMYWlnQ0FDSUdRUU5KRFFBTEN3Si9JQXRCQ0dvaElFRUFJVGxCQUNFMEl3QkI4QU5ySWg4a0FDQXZLQUlBSVNvZ0FDZ0NzQm9oRmlBZlFRQTJBZ3dnQUVHd0NXcEJBRFlDQUNBQUlBQW9BcWdKUVFGcU5nS29DU0FXUVlnUWFpRTJJQlpCeUFwcUlSc2dGa0dJQ21vaE55QVdRY2dKYWlFNklCWkJpQWxxSVQ0Z0ZrSElDR29oUHlBV1FZZ0lhaUZBSUJaQnlBZHFJVUVnRmtHSUIyb2hRaUFXUWNnR2FpRkRJQlpCaUFacUlVUWdGa0hJQldvaFJTQVdRWWdGYWlGR0lCWkJ5QVJxSVVjZ0ZrR0lCR29oU0NBV1FjZ0RhaUZKSUJaQmlBTnFJVW9nRmtISUQyb2hLQ0FXUWNnQ2FpRVVJQlpCbUE5cUlVc2dGa0dJRDJvaFRDQVdRY2dPYWlGTklCWkJER29oVGlBdktBSXdJQUFvQWd3b0FqUnFJUzBnQUNnQ3ZBa2hEaUFXUWN3S2FpRlBJQlpCakF0cUlUc2dGa0dNRUdvaFVDQVdRY3dMYWlGUklCWkJrQkJxSVZJZ0ZrR01ER29oWVNBV1FaUVFhaUZpSUJaQnpBeHFJV01nRmtHWUVHb2haQ0FXUVl3TmFpRmxJQlpCbkJCcUlXWWdGa0hNRFdvaFp5QVdRYUFRYWlGb0lCWkJqQTVxSVdrZ0ZrR2tFR29oYWlBV1FaQUNhaUlqSVdzQ1FBTkFBa0FnTHlnQ0pBMEFJQTRnS2tIWUFXeHFLQUxFQVVVTkFFRUJJUVlNQWdzZ0x5a0NOQ0Z1SUM4b0Fqd2hCeUFBS0FLb0NTRUlJQTRnS2tIWUFXd2lNV29pQmlBQUtBSU1LQUk0TmdJWUlBWWdCellDRUNBR0lHNDNBZ2dnQmlBSU5nSUVBa0FnTHlnQ0JDSUdRUUpHRFFBZ0JrRUhSZzBBSURrTkFFRUJJUVlnSUNBZlFReHFFQUlOQWlBZktBSU1JZ2NnQUNnQ21Ba2dLbXRMRFFJZ0IwVUVRRUVBSVRrTUFRc2dUa0VBUWFRQkVBTWFJQlpCQURZQ0FFRUJJVGtMQWtBZ0h5Z0NEQ0lHQkVBZ0h5QUdRUUZyTmdJTURBRUxJQzhvQWl3aERTQUFLQUs4Q1NFUklDOG9BZ1FoQmlBV1FRQkJxQkFRQXlFS0lDQWdIMEhNQTJvUUFpRUhBa0FDUUFKQUlBWkJBbXNPQmdBQkFRRUJBQUVMUVFFaEJpQWZLQUxNQTBFR2FpSUpRUjlMRFFRZ0IwVU5BUXdFQzBFQklRWWdIeWdDekFOQkFXb2lDVUVmU3cwRElBY05Bd3NnQ2lBSk5nSUFBa0FnQ1VFZlJnUkFJQ0FvQWdnaEV3TkFJQ0FvQWdRaEJpQVRSUVJBUVFBaENpQVVJUWNEUUFKQUlDQW9BZ3hCQTNRaURpQWdLQUlRSWd4cklnbEJJRTRFUUNBR0tBQUFJZ2hCR0hRZ0NFRUlkRUdBZ1B3SGNYSWdDRUVJZGtHQS9nTnhJQWhCR0haeWNpRUlJQ0FvQWdnaUNVVU5BU0FJSUFsMElBWXRBQVJCQ0NBSmEzWnlJUWdNQVFzZ0NVRUJTQVJBUVFBaENBd0JDeUFHTFFBQUlDQW9BZ2dpRFVFWWFpSWFkQ0VJSUFrZ0RXcEJDR3NpQ1VFQlNBMEFBMEFnQmkwQUFTQWFRUWhySWhwMElBaHlJUWdnQ1VFSVNpRU5JQVpCQVdvaEJpQUpRUWhySVFrZ0RRMEFDd3NnSUNBTVFRZHhOZ0lJSUNBZ0RFRUlhaUlHTmdJUUlBWWdEa3NFUUVFQklRWU1DQXNnSUNBZ0tBSUFJQVpCQTNacUlnWTJBZ1FnQnlBSVFSaDJOZ0lBSUFkQkJHb2hCeUFLUVFGcUlncEJnQU5IRFFBTERBTUxBa0FnSUNnQ0RFRURkQ0lLSUNBb0FoQWlER3NpQjBFZ1RnUkFJQVlvQUFBaUIwRVlkQ0FIUVFoMFFZQ0EvQWR4Y2lBSFFRaDJRWUQrQTNFZ0IwRVlkbkp5SUJOMElBWXRBQVJCQ0NBVGEzWnlJUWdNQVFzZ0IwRUJTQVJBUVFBaENBd0JDeUFHTFFBQUlCTkJHR29pR25RaENDQUhJQk5xUVFocklnbEJBVWdOQUFOQUlBWXRBQUVnR2tFSWF5SWFkQ0FJY2lFSUlBbEJDRW9oQnlBR1FRRnFJUVlnQ1VFSWF5RUpJQWNOQUFzTFFRRWhCaUFnSUF4QkFXb2lCellDRUNBZ0lBZEJCM0VpRXpZQ0NDQUhJQXBMRFFVZ0lDQWdLQUlBSUFkQkEzWnFOZ0lFSUFoQmYwb05BQXNNQkF0QkFpQUpRUVpISWc4Z0NVRUdTUnNoRWdKQUFrQUNRQ0FKUVg1eFFRUkdCRUFnSUNBZlFkUURhaEFDQkVCQkFTRUlEQVFMSUI4b0F0UURJZ1pCQTBzRVFFRUJJUWdNQkFzZ0NpQUdOZ0t3QVNBZ0lCOUIxQU5xRUFJRVFFRUJJUWdNQkFzZ0h5Z0MxQU1pQmtFRFN3UkFRUUVoQ0F3RUN5QUtJQVkyQXJRQklDQWdIMEhVQTJvUUFnUkFRUUVoQ0F3RUN5QWZLQUxVQXlJR1FRTkxCRUJCQVNFSURBUUxJQW9nQmpZQ3VBRWdJQ0FmUWRRRGFoQUNCRUJCQVNFSURBUUxJQjhvQXRRRElnWkJBMHNFUUVFQklRZ01CQXNnQ2lBR05nSzhBU0FOUVFKSkRRSWdDVUVGUncwQkRBSUxBa0FDZndKQUFrQUNRQ0FTUVFGckRnSUVBUUFMSUNBb0FnUWhCZ0pBSUNBb0FneEJBM1FnSUNnQ0VHc2lCMEVnVGdSQUlBWW9BQUFpQjBFWWRDQUhRUWgwUVlDQS9BZHhjaUFIUVFoMlFZRCtBM0VnQjBFWWRuSnlJUWdnSUNnQ0NDSUhSUTBCSUFnZ0IzUWdCaTBBQkVFSUlBZHJkbkloQ0F3QkN5QUhRUUJNQkVCQkFDRUlJQXBCQURZQ0RBd0RDeUFHTFFBQUlDQW9BZ2dpQ1VFWWFpSVRkQ0VJSUFjZ0NXcEJDR3NpQ1VFQlNBMEFBMEFnQmkwQUFTQVRRUWhySWhOMElBaHlJUWdnQ1VFSVNpRUhJQVpCQVdvaEJpQUpRUWhySVFrZ0J3MEFDd3NnQ2lBSVFSOTJOZ0lNSUFoQmYwb05BU0FJUVFGMElRbEJBQXdDQ3lBTlFRSlBCRUJCQXlFR0lBbEJBMDBFUUNBSlFRSjBRZndxYWlnQ0FDRUdDMEVBSVF3RFFDQUdJUWNDUUNBTlFRSk5CRUFnSUNnQ0JDRUdBa0FnSUNnQ0RFRURkQ0lhSUNBb0FoQWlIR3NpQ0VFZ1RnUkFJQVlvQUFBaUNFRVlkQ0FJUVFoMFFZQ0EvQWR4Y2lBSVFRaDJRWUQrQTNFZ0NFRVlkbkp5SVJNZ0lDZ0NDQ0lJUlEwQklCTWdDSFFnQmkwQUJFRUlJQWhyZG5JaEV3d0JDeUFJUVFGSUJFQkJBQ0VUREFFTElBWXRBQUFnSUNnQ0NDSVhRUmhxSWc1MElSTWdDQ0FYYWtFSWF5SUlRUUZJRFFBRFFDQUdMUUFCSUE1QkNHc2lEblFnRTNJaEV5QUlRUWhLSVJjZ0JrRUJhaUVHSUFoQkNHc2hDQ0FYRFFBTEMwRUJJUWdnSUNBY1FRRnFJZ1kyQWhBZ0lDQUdRUWR4TmdJSUlBWWdHa3NOQ1NBZ0lDQW9BZ0FnQmtFRGRtbzJBZ1FnSHlBVFFYOXpRUjkySWdZMkF0UUREQUVMSUNBZ0gwSFVBMm9RQWdSQVFRRWhDQXdKQ3lBZktBTFVBeUVHQ3lBR0lBMVBCRUJCQVNFSURBZ0xJQW9nREVFQ2RHb2dCallDa0FFZ0IwRUJheUVHSUF4QkFXb2hEQ0FIRFFBTEMwRURJUWhCQUNFR0lBbEJBMDBFUUNBSlFRSjBRZndxYWlnQ0FDRUlDd0pBQWtBRFFDQUlJUWNnSDBFQU5nTFlBeUFnSUI5QjJBTnFFQUloQ0FKL0lCOG9BdGdESWdsQmYwWUVRRUdBZ0lDQWVDQUlEUUVhREFRTElBZ05BeUFKUVFGcVFRRjJJZ2hCQUNBSWF5QUpRUUZ4R3dzaENDQUtJQVpCQW5ScUlna2dDRHNCb0FFZ0gwRUFOZ0xZQXlBZ0lCOUIyQU5xRUFJaENDQUpBbjhnSHlnQzJBTWlDVUYvUmdSQVFZQ0FnSUI0SUFnTkFSb01Bd3NnQ0EwQ0lBbEJBV3BCQVhZaUNFRUFJQWhySUFsQkFYRWJDenNCb2dFZ0IwRUJheUVJSUFaQkFXb2hCaUFIRFFBTFFRQWhDQXdIQzBFQklRZ01CZ3RCQVNFSURBVUxJQW9nQ0VFY2RqWUNUQ0FJUVFSMElRbEJBUXNoQmlBS0lBbEJIM1kyQWhBZ0NpQUpRWDlNQkg4Z0NVRUJkQVVnQ2lBSlFSeDJOZ0pRSUFaQkFXb2hCaUFKUVFSMEN5SUhRUjkyTmdJVUlBb2dCMEVBU0FSL0lBZEJBWFFGSUFvZ0IwRWNkallDVkNBR1FRRnFJUVlnQjBFRWRBc2lCMEVmZGpZQ0dDQUtJQWRCQUVnRWZ5QUhRUUYwQlNBS0lBZEJISFkyQWxnZ0JrRUJhaUVHSUFkQkJIUUxJZ2RCSDNZMkFod2dDaUFIUVFCSUJIOGdCMEVCZEFVZ0NpQUhRUngyTmdKY0lBWkJBV29oQmlBSFFRUjBDeUlIUVI5Mk5nSWdJQW9nQjBFQVNBUi9JQWRCQVhRRklBb2dCMEVjZGpZQ1lDQUdRUUZxSVFZZ0IwRUVkQXNpQjBFZmRqWUNKQ0FLSUFkQkFFZ0VmeUFIUVFGMEJTQUtJQWRCSEhZMkFtUWdCa0VCYWlFR0lBZEJCSFFMSWdkQkgzWTJBaWdnQjBFQVRnUkFJQW9nQjBFY2RqWUNhQ0FHUVFGcUlRWUxJQ0FnSUNnQ0VDQUdRUU5zYWtFSWFpSUpOZ0lRSUNBZ0NVRUhjU0lITmdJSVFRRWhDQ0FnS0FJTVFRTjBJZ3dnQ1VrTkF5QWdJQ0FvQWdBaURTQUpRUU4yYWlJR05nSUVBbjhDUUFKQUlBd2dDV3NpQ1VFZ1RnUkFJQVlvQUFBaUNVRVlkQ0FKUVFoMFFZQ0EvQWR4Y2lBSlFRaDJRWUQrQTNFZ0NVRVlkbkp5SVJNZ0IwVU5BU0FUSUFkMElBWXRBQVJCQ0NBSGEzWnlJUk1NQVFzZ0NVRUFUQVJBUVFBaEV5QUtRUUEyQWl3TUFnc2dCaTBBQUNBSFFSaHlJZzUwSVJNZ0J5QUpha0VJYXlJSlFRRklEUUFEUUNBR0xRQUJJQTVCQ0dzaURuUWdFM0loRXlBSlFRaEtJUWNnQmtFQmFpRUdJQWxCQ0dzaENTQUhEUUFMQ3lBS0lCTkJIM1kyQWl3Z0UwRi9TZzBBSUJOQkFYUWhDVUVBREFFTElBb2dFMEVjZGpZQ2JDQVRRUVIwSVFsQkFRc2hCaUFLSUFsQkgzWTJBakFnQ2lBSlFRQklCSDhnQ1VFQmRBVWdDaUFKUVJ4Mk5nSndJQVpCQVdvaEJpQUpRUVIwQ3lJSFFSOTJOZ0kwSUFvZ0IwRUFTQVIvSUFkQkFYUUZJQW9nQjBFY2RqWUNkQ0FHUVFGcUlRWWdCMEVFZEFzaUIwRWZkallDT0NBS0lBZEJBRWdFZnlBSFFRRjBCU0FLSUFkQkhIWTJBbmdnQmtFQmFpRUdJQWRCQkhRTElnZEJIM1kyQWp3Z0NpQUhRUUJJQkg4Z0IwRUJkQVVnQ2lBSFFSeDJOZ0o4SUFaQkFXb2hCaUFIUVFSMEN5SUhRUjkyTmdKQUlBb2dCMEVBU0FSL0lBZEJBWFFGSUFvZ0IwRWNkallDZ0FFZ0JrRUJhaUVHSUFkQkJIUUxJZ2RCSDNZMkFrUWdDaUFIUVFCSUJIOGdCMEVCZEFVZ0NpQUhRUngyTmdLRUFTQUdRUUZxSVFZZ0IwRUVkQXNpQjBFZmRqWUNTQ0FIUVFCSUJIOGdCMEVCZEFVZ0NpQUhRUngyTmdLSUFTQUdRUUZxSVFZZ0IwRUVkQXNoQnlBZ0lDQW9BaEFnQmtFRGJHcEJDR29pQmpZQ0VDQWdJQVpCQjNFMkFnZ2dCaUFnS0FJTVFRTjBTdzBESUNBZ0RTQUdRUU4yYWpZQ0JDQWZJQWMyQXRRREMwRUJJUWdnSUNBZlFkUURhaEFDRFFJZ0h5Z0MxQU1pQmtFRFN3MENJQW9nQmpZQ2pBRkJBQ0VJREFJTElDQWdIMEhVQTJvZ0RVRUNTeUlHRUJFRVFFRUJJUWdNQWdzZ0RTQWZLQUxVQXlJSFRRUkFRUUVoQ0F3Q0N5QUtJQWMyQXNBQklDQWdIMEhVQTJvZ0JoQVJCRUJCQVNFSURBSUxJQTBnSHlnQzFBTWlCMDBFUUVFQklRZ01BZ3NnQ2lBSE5nTEVBU0FnSUI5QjFBTnFJQVlRRVFSQVFRRWhDQXdDQ3lBTklCOG9BdFFESWdkTkJFQkJBU0VJREFJTElBb2dCellDeUFFZ0lDQWZRZFFEYWlBR0VCRUVRRUVCSVFnTUFnc2dEU0FmS0FMVUF5SUdUUVJBUVFFaENBd0NDeUFLSUFZMkFzd0JDeUFmSUFvb0FyQUJJZ2xCQWswRWZ5QUpRUUowUWZBcWFpZ0NBQVZCQXdzMkF0UURRUUFoQmdKQUFrQURRQ0FmUVFBMkF0Z0RJQ0FnSDBIWUEyb1FBaUVIQW44Z0h5Z0MyQU1pQ0VGL1JnUkFRWUNBZ0lCNElBY05BUm9NQkFzZ0J3MERJQWhCQVdwQkFYWWlCMEVBSUFkcklBaEJBWEViQ3lFSElBb2dCa0VDZEdvaUNTQUhPd0hRQVNBZlFRQTJBdGdESUNBZ0gwSFlBMm9RQWlFSUlBa0NmeUFmS0FMWUF5SUpRWDlHQkVCQmdJQ0FnSGdnQ0EwQkdnd0RDeUFJRFFJZ0NVRUJha0VCZGlJSFFRQWdCMnNnQ1VFQmNSc0xJZ2s3QWRJQklCOGdIeWdDMUFNaUIwRUJhellDMUFNZ0JrRUJhaUVHSUFjTkFBc2dIeUFLS0FLMEFTSUdRUU5KQkg4Z0JrRUNkRUh3S21vb0FnQUZRUU1MTmdMVUEwRUFJUVlDUUFOQUlCOUJBRFlDMkFNZ0lDQWZRZGdEYWhBQ0lRY0NRQ0FmS0FMWUF5SUlRWDlHQkVCQmdJQ0FnSGdoQ0NBSFJRMEZEQUVMSUFjTkJDQUlRUUZxUVFGMklnZEJBQ0FIYXlBSVFRRnhHeUVJQ3lBS0lBWkJBblJxSWdrZ0NEc0I0QUVnSDBFQU5nTFlBeUFnSUI5QjJBTnFFQUloQnlBSkFuOGdIeWdDMkFNaUNVRi9SZ1JBUVlDQWdJQjRJQWNOQVJvTUF3c2dCdzBDSUFsQkFXcEJBWFlpQjBFQUlBZHJJQWxCQVhFYkN5SUpPd0hpQVNBZklCOG9BdFFESWdkQkFXczJBdFFESUFaQkFXb2hCaUFIRFFBTElCOGdDVFlDMEFNZ0h5QUtLQUs0QVNJR1FRSk5CSDhnQmtFQ2RFSHdLbW9vQWdBRlFRTUxOZ0xVQTBFQUlRWURRQ0FnSUI5QjBBTnFFQkFFUUVFQklRZ01CUXNnQ2lBR1FRSjBhaUlISUI4b0F0QURPd0h3QVNBZ0lCOUIwQU5xRUJBRVFFRUJJUWdNQlFzZ0J5QWZLQUxRQXpzQjhnRWdIeUFmS0FMVUF5SUhRUUZyTmdMVUF5QUdRUUZxSVFZZ0J3MEFDeUFmSUFvb0Fyd0JJZ1pCQWswRWZ5QUdRUUowUWZBcWFpZ0NBQVZCQXdzMkF0UURRUUFoQmdOQUlDQWdIMEhRQTJvUUVBUkFRUUVoQ0F3RkN5QUtJQVpCQW5ScUlnY2dIeWdDMEFNN0FZQUNJQ0FnSDBIUUEyb1FFQVJBUVFFaENBd0ZDeUFISUI4b0F0QURPd0dDQWlBZklCOG9BdFFESWdkQkFXczJBdFFESUFaQkFXb2hCa0VBSVFnZ0J3MEFDd3dEQ3lBZklBZzJBdEFEUVFFaENBd0NDeUFmSUFjMkF0QURRUUVoQ0F3QkN5QWZJQWsyQXRBRFFRRWhDQXRCQVNFR0lBZ05Bd0pBSUJKQkFVY0VRQ0FnSUI5QjJBTnFFQUlOQlNBZktBTFlBeUlIUVRCUERRVWdDa0hRUDBHZ1B5QVBHeUFIYWkwQUFDSUhOZ0lFSUFkRkRRSU1BUXNnQ2lBS0tBSUFJZ2RCQjJzaUNFRUNkRUZ3Y1NJSlFUQnJJQWtnQ0VFTFN4dEJEMEVBSUFkQkVrc2JjallDQkFzZ0gwRUFOZ0xZQXlBZ0lCOUIyQU5xRUFJaENDQWZLQUxZQXlJSFFYOUdEUU1nQ0EwRElBZEJBV3BCQVhZaUNFRUFJQWhySUFkQkFYRWJJZ2RCWmtnTkF5QUhRUmxLRFFNZ0VTQXhhaUVNSUFvZ0J6WUNDQ0FLS0FJRUlRZ0NRQUpBSUFvb0FnQkJCMGtFUUVFQUlRbEJBeUVHQTBBZ0JpRUhJQWhCQVhFRVFDQWpJQWxCQW5ScVFiZ05haUFnSUNNZ0NVRUdkR3BCT0dvZ0RDQUpJQ01RQ2tFUUVBWWlCa0VRZGpZQ0FDQUdRUTl4RFFRZ0l5QUpRUUYwYWlBR1FRUjJRZjhCY1RzQkFDQWpJQWxCQVhJaURrRUNkR3BCdUExcUlDQWdJeUFPUVFaMGFrRTRhaUFNSUE0Z0l4QUtRUkFRQmlJR1FSQjJOZ0lBSUFaQkQzRU5CQ0FqSUE1QkFYUnFJQVpCQkhaQi93RnhPd0VBSUNNZ0NVRUNjaUlPUVFKMGFrRzREV29nSUNBaklBNUJCblJxUVRocUlBd2dEaUFqRUFwQkVCQUdJZ1pCRUhZMkFnQWdCa0VQY1EwRUlDTWdEa0VCZEdvZ0JrRUVka0gvQVhFN0FRQWdJeUFKUVFOeUlnNUJBblJxUWJnTmFpQWdJQ01nRGtFR2RHcEJPR29nRENBT0lDTVFDa0VRRUFZaUJrRVFkallDQUNBR1FROXhEUVFnQ2lBT1FRRjBhaUFHUVFSMlFmOEJjVHNCa0FJTElBaEJBWFloQ0NBSFFRRnJJUVlnQ1VFRWFpRUpJQWNOQUFzTUFRc2dJQ0JOSUF4QkFDQWpFQXBCRUJBR0lnWkJEM0VOQVNBS0lBWkJCSFpCL3dGeE93SEFBa0VBSVFsQkF5RUdBMEFnQmlFSElBaEJBWEVFUUNBaklBbEJBblJxUWJnTmFpQWdJQ01nQ1VFR2RHcEJQR29nRENBSklDTVFDa0VQRUFZaUJrRVBkallDQUNBR1FROXhEUU1nSXlBSlFRRjBhaUFHUVFSMlFmOEJjVHNCQUNBaklBbEJBWElpRGtFQ2RHcEJ1QTFxSUNBZ0l5QU9RUVowYWtFOGFpQU1JQTRnSXhBS1FROFFCaUlHUVE5Mk5nSUFJQVpCRDNFTkF5QWpJQTVCQVhScUlBWkJCSFpCL3dGeE93RUFJQ01nQ1VFQ2NpSU9RUUowYWtHNERXb2dJQ0FqSUE1QkJuUnFRVHhxSUF3Z0RpQWpFQXBCRHhBR0lnWkJEM1kyQWdBZ0JrRVBjUTBESUNNZ0RrRUJkR29nQmtFRWRrSC9BWEU3QVFBZ0l5QUpRUU55SWc1QkFuUnFRYmdOYWlBZ0lDTWdEa0VHZEdwQlBHb2dEQ0FPSUNNUUNrRVBFQVlpQmtFUGRqWUNBQ0FHUVE5eERRTWdDaUFPUVFGMGFpQUdRUVIyUWY4QmNUc0JrQUlMSUFoQkFYWWhDQ0FIUVFGcklRWWdDVUVFYWlFSklBY05BQXNMSUFoQkEzRUVRQ0FnSUV4QmYwRUVFQVlpQmtFUGNRMEJJQW9nQmtFRWRrSC9BWEU3QWNJQ0lDQWdTMEYvUVFRUUJpSUdRUTl4RFFFZ0NpQUdRUVIyUWY4QmNUc0J4QUlMUVFBaEJpQUlRUUp4UlEwQUlDQWdUeUFNUVJBZ0l4QUtRUThRQmlJSFFROXhCRUFnQnlFR0RBRUxJQXBCaUJCcUlBZEJEM1kyQWdBZ0ZpQUhRUVIyUWY4QmNUc0JzQUlnSUNBN0lBeEJFU0FqRUFwQkR4QUdJZ2RCRDNFRVFDQUhJUVlNQVFzZ1VDQUhRUTkyTmdJQUlCWWdCMEVFZGtIL0FYRTdBYklDSUNBZ1VTQU1RUklnSXhBS1FROFFCaUlIUVE5eEJFQWdCeUVHREFFTElGSWdCMEVQZGpZQ0FDQVdJQWRCQkhaQi93RnhPd0cwQWlBZ0lHRWdERUVUSUNNUUNrRVBFQVlpQjBFUGNRUkFJQWNoQmd3QkN5QmlJQWRCRDNZMkFnQWdGaUFIUVFSMlFmOEJjVHNCdGdJZ0lDQmpJQXhCRkNBakVBcEJEeEFHSWdkQkQzRUVRQ0FISVFZTUFRc2daQ0FIUVE5Mk5nSUFJQllnQjBFRWRrSC9BWEU3QWJnQ0lDQWdaU0FNUVJVZ0l4QUtRUThRQmlJSFFROXhCRUFnQnlFR0RBRUxJR1lnQjBFUGRqWUNBQ0FXSUFkQkJIWkIvd0Z4T3dHNkFpQWdJR2NnREVFV0lDTVFDa0VQRUFZaUIwRVBjUVJBSUFjaEJnd0JDeUJvSUFkQkQzWTJBZ0FnRmlBSFFRUjJRZjhCY1RzQnZBSWdJQ0JwSUF4QkZ5QWpFQXBCRHhBR0lnZEJEM0VFUUNBSElRWU1BUXNnYWlBSFFROTJOZ0lBSUJZZ0IwRUVka0gvQVhFN0FiNENDeUFnSUNBb0FnZ2dJQ2dDQkNBZ0tBSUFhMEVEZEdvMkFoQWdCZzBEQzBFQUlUa0xJQUFvQWd3b0FrQWhKQ0FBS0FLOENTSXBJREZxSWc0Z0ZpZ0NBQ0lNTmdJQUlBNGdEaWdDeEFGQkFXb2lCellDeEFFZ0t5QXJLQUlBSWdnZ0tpQXJLQUlFSWdsd0lnWkJCSFJxSUNvZ0Jtc2lDa0VJZEdvMkFnd2dLeUFJSUFrZ0t5Z0NDR3dpQ1VFSWRHb2dDa0VHZEdvZ0JrRURkR29pQmpZQ0VDQXJJQVlnQ1VFR2RHbzJBaFFDUUFKQUFrQUNRQUpBQW44Q1FBSkFBbjhDUUFKQUFrQUNmd0pBQWtBQ1FBSkFBa0FDUUFKQUlBd0VRQ0FNUVI5R0JFQWdLU0F4YWlJR1FRQTJBaFFnQmtFY2FpRUlJQWRCQWs4TkFrRVhJUm9nSDBFUWFpRUdJQlFoQ1FOQUlBaEJFRHNCQUNBR0lBa29BZ0E2QUFBZ0JpQUpLQUlFT2dBQklBWWdDU2dDQ0RvQUFpQUdJQWtvQWd3NkFBTWdCaUFKS0FJUU9nQUVJQVlnQ1NnQ0ZEb0FCU0FHSUFrb0FoZzZBQVlnQmlBSktBSWNPZ0FISUFZZ0NTZ0NJRG9BQ0NBR0lBa29BaVE2QUFrZ0JpQUpLQUlvT2dBS0lBWWdDU2dDTERvQUN5QUdJQWtvQWpBNkFBd2dCaUFKS0FJME9nQU5JQVlnQ1NnQ09Eb0FEaUFHSUFrb0FqdzZBQThnR2lJSFFRRnJJUm9nQ0VFQ2FpRUlJQVpCRUdvaEJpQUpRVUJySVFrZ0J3MEFDeUFySUI5QkVHb1FEd3dWQ3lBcElERnFJaGNnSXlrQ0FEY0NIQ0FYSUNNcEFTNDNBVW9nRnlCcktRSW9Od0pFSUJjZ0l5a0NJRGNDUENBWElDTXBBaGczQWpRZ0Z5QWpLUUlRTndJc0lCY2dJeWtDQ0RjQ0pBSkFJQllvQWdnaUJrVU5BQUpBSUFZZ0xXb2lMVUVBU0FSQVFUUWhCZ3dCQzBGTUlRWWdMVUUwU0EwQkN5QUdJQzFxSVMwTElCZEJIR29oQnlBWElDMDJBaFFDUUFKQUlBeEJCazBFUUNBSEx3RUFSUTBCSUJRZ0xVRUFJQ2dvQWdBUUJVVU5Ba0VCSVFZTUdRdEJzQ29oR2tFUElRWWdGeThCVEFSQUlCWW9Bb0FQSWdnZ0ZpZ0M3QTRpQ1dvaUNpQVdLQUtFRHlJU0lCWW9BdkFPSWhGcUlnOXJJUTBnQ1NBSWF5SUlJQkVnRW1zaUNXc2hFaUFJSUFscUlSRWdDaUFQYWlFUElCWW9BdlFPSWdnZ0ZpZ0MxQTRpQ1dvaUNpQVdLQUw4RGlJY0lCWW9BdWdPSWhWcUloQnJJUk1nQ1NBSWF5SUlJQlVnSEdzaUNXc2hIQ0FJSUFscUlSVWdDaUFRYWlFUUlCWW9BdVFPSWdnZ0ZpZ0MwQTRpQ1dvaUNpQVdLQUw0RGlJZUlCWW9BdGdPSWlGcUlpSnJJUmtnQ1NBSWF5SUlJQ0VnSG1zaUNXc2hIaUFJSUFscUlTRWdDaUFpYWlFaUlCWW9BdHdPSWdnZ0ZpZ0N5QTRpQ1dvaUNpQVdLQUxnRGlJbElCWW9Bc3dPSWl4cUlpNXJJUjBnQ1NBSWF5SUlJQ3dnSldzaUNXc2hKU0FJSUFscUlTd2dDaUF1YWlFdUlDMUJnRHhxTFFBQUlRb2dMVUdRUFdvdEFBQkJER3hCd0R4cUtBSUFJUWdnRmdKL0lDMUJERThFUUNBV0lBZ2dDa0VDYTNRaUNDQVFJQzVxSWdrZ0R5QWlhaUlLYTJ3MkF2Z09JQllnTGlBUWF5SVFJQ0lnRDJzaUQyc2dDR3cyQXVnT0lCWWdEeUFRYWlBSWJEWUMyQTRnRmlBSklBcHFJQWhzTmdMSURpQVdJQlVnTEdvaUNTQVJJQ0ZxSWdwcklBaHNOZ0w4RGlBV0lDd2dGV3NpRHlBaElCRnJJaEZySUFoc05nTHNEaUFXSUE4Z0VXb2dDR3cyQXR3T0lCWWdDU0FLYWlBSWJEWUN6QTRnRmlBY0lDVnFJZ2tnRWlBZWFpSUtheUFJYkRZQ2dBOGdGaUFsSUJ4ckloRWdIaUFTYXlJU2F5QUliRFlDOEE0Z0ZpQVJJQkpxSUFoc05nTGdEaUFXSUFrZ0Ntb2dDR3cyQXRBT0lCWWdIU0FUYXlJSklCa2dEV3NpQ21zZ0NHdzJBdlFPSUJZZ0NTQUthaUFJYkRZQzVBNGdGaUFOSUJscUlna2dFeUFkYWlJS2FpQUliRFlDMUE0Z0NpQUpheUFJYkF3QkN5QVdRUUZCQWlBdFFRWnJRUVpKR3lJSklCQWdMbW9pSmlBUElDSnFJak5ySUFoc2FrRUNJQXBySWdwMU5nTDREaUFXSUM0Z0VHc2lFQ0FpSUE5cklnOXJJQWhzSUFscUlBcDFOZ0xvRGlBV0lBOGdFR29nQ0d3Z0NXb2dDblUyQXRnT0lCWWdKaUF6YWlBSWJDQUphaUFLZFRZQ3lBNGdGaUFWSUN4cUlnOGdFU0FoYWlJUWF5QUliQ0FKYWlBS2RUWUMvQTRnRmlBc0lCVnJJaFVnSVNBUmF5SVJheUFJYkNBSmFpQUtkVFlDN0E0Z0ZpQVJJQlZxSUFoc0lBbHFJQXAxTmdMY0RpQVdJQThnRUdvZ0NHd2dDV29nQ25VMkFzd09JQllnSENBbGFpSVJJQklnSG1vaUQyc2dDR3dnQ1dvZ0NuVTJBb0FQSUJZZ0pTQWNheUljSUI0Z0Vtc2lFbXNnQ0d3Z0NXb2dDblUyQXZBT0lCWWdFaUFjYWlBSWJDQUphaUFLZFRZQzRBNGdGaUFQSUJGcUlBaHNJQWxxSUFwMU5nTFFEaUFXSUIwZ0Uyc2lFaUFaSUExckloRnJJQWhzSUFscUlBcDFOZ0wwRGlBV0lCRWdFbW9nQ0d3Z0NXb2dDblUyQXVRT0lCWWdEU0FaYWlJTklCTWdIV29pRW1vZ0NHd2dDV29nQ25VMkF0UU9JQklnRFdzZ0NHd2dDV29nQ25VTE5nS0VEd3NnRkNFSklDZ2hDQU5BSUFZaENpQUpJQllnR2lnQ0FFRUNkR3BCeUE1cUtBSUFJZ1kyQWdBQ1FBSkFJQVpGQkVBZ0J5OEJBRVVOQVF0QkFTRUdJQWtnRnlnQ0ZFRUJJQWdvQWdBUUJVVU5BUXdiQ3lBSlFmLy8vd2MyQWdBTElCcEJCR29oR2lBS1FRRnJJUVlnQ0VFRWFpRUlJQWRCQW1vaEJ5QUpRVUJySVFrZ0NnMEFDd3dFQ3lBVVFmLy8vd2MyQWdBTEFrQWdGeThCSGdSQUlFb2dGeWdDRkVFQUlCWW9Bc3dQRUFWRkRRRkJBU0VHREJnTElFcEIvLy8vQnpZQ0FBc0NRQ0FYTHdFZ0JFQWdTU0FYS0FJVVFRQWdGaWdDMEE4UUJVVU5BVUVCSVFZTUdBc2dTVUgvLy84SE5nSUFDd0pBSUJjdkFTSUVRQ0JJSUJjb0FoUkJBQ0FXS0FMVUR4QUZSUTBCUVFFaEJnd1lDeUJJUWYvLy93YzJBZ0FMQWtBZ0Z5OEJKQVJBSUVjZ0Z5Z0NGRUVBSUJZb0F0Z1BFQVZGRFFGQkFTRUdEQmdMSUVkQi8vLy9CellDQUFzQ1FDQVhMd0VtQkVBZ1JpQVhLQUlVUVFBZ0ZpZ0MzQThRQlVVTkFVRUJJUVlNR0FzZ1JrSC8vLzhITmdJQUN3SkFJQmN2QVNnRVFDQkZJQmNvQWhSQkFDQVdLQUxnRHhBRlJRMEJRUUVoQmd3WUN5QkZRZi8vL3djMkFnQUxBa0FnRnk4QktnUkFJRVFnRnlnQ0ZFRUFJQllvQXVRUEVBVkZEUUZCQVNFR0RCZ0xJRVJCLy8vL0J6WUNBQXNDUUNBWEx3RXNCRUFnUXlBWEtBSVVRUUFnRmlnQzZBOFFCVVVOQVVFQklRWU1HQXNnUTBILy8vOEhOZ0lBQ3dKQUlCY3ZBUzRFUUNCQ0lCY29BaFJCQUNBV0tBTHNEeEFGUlEwQlFRRWhCZ3dZQ3lCQ1FmLy8vd2MyQWdBTEFrQWdGeThCTUFSQUlFRWdGeWdDRkVFQUlCWW9BdkFQRUFWRkRRRkJBU0VHREJnTElFRkIvLy8vQnpZQ0FBc0NRQ0FYTHdFeUJFQWdRQ0FYS0FJVVFRQWdGaWdDOUE4UUJVVU5BVUVCSVFZTUdBc2dRRUgvLy84SE5nSUFDd0pBSUJjdkFUUUVRQ0EvSUJjb0FoUkJBQ0FXS0FMNER4QUZSUTBCUVFFaEJnd1lDeUEvUWYvLy93YzJBZ0FMQWtBZ0Z5OEJOZ1JBSUQ0Z0Z5Z0NGRUVBSUJZb0F2d1BFQVZGRFFGQkFTRUdEQmdMSUQ1Qi8vLy9CellDQUFzQ1FDQVhMd0U0QkVBZ09pQVhLQUlVUVFBZ0ZpZ0NnQkFRQlVVTkFVRUJJUVlNR0FzZ09rSC8vLzhITmdJQUN5QVhMd0U2QkVBZ05pRUlJQnNoQ1NBM0lCY29BaFJCQUNBV0tBS0VFQkFGUlEwRFFRRWhCZ3dYQ3lBM1FmLy8vd2MyQWdBZ05pRUlJQnNoQ1F3Q0N5QXBJREZxSWdaQ0FEY0NIQ0FHSUMwMkFoUWdCa0lBTndGS0lBWkNBRGNDUkNBR1FnQTNBandnQmtJQU53STBJQVpDQURjQ0xDQUdRZ0EzQWlRZ0h5QXJLQUlFSWdZMkF0d0RJQjhnS3lnQ0NEWUM0QU1nS2lBR2JpSUhRUVIwSVJrZ0tpQUdJQWRzYTBFRWRDRWVRUUFoSEF3Q0N5QUlRUkE3QVFBZ0JrRVFPd0ZLSUFaQmtJREFBRFlCUmlBR1FwQ0F3SUNBZ29BSU53RStJQVpDa0lEQWdJQ0NnQWczQVRZZ0JrS1FnTUNBZ0lLQUNEY0JMaUFHUXBDQXdJQ0Fnb0FJTndFbUlBWkNrSURBZ0lDQ2dBZzNBUjRNRWdzZ0Z5Z0NHQ0FYS0FJVWFpSUdRVE1nQmtFelNCc2lCa0VBSUFaQkFFb2JJZ2RCQW5SQjBEMXFLQUlBSVFvQ1FBSkFJQmN2QVU0TkFDQVhMd0ZRRFFBZ1RDZ0NBQ0VIREFFTElBcEJrRDFxTFFBQVFReHNRY0E4YWlnQ0FDRUdRUUVoRXlBSFFRWnJRUzFOQkVCQkFDRVRJQVlnQ2tHQVBHb3RBQUJCQVd0MElRWUxJQllnRmlnQ2lBOGlCeUFXS0FLUUR5SU5heUlTSUJZb0Fvd1BJaEVnRmlnQ2xBOGlEMnNpR21zZ0Jtd2dFM1UyQXBRUElCWWdFaUFhYWlBR2JDQVRkVFlDa0E4Z0ZpQUhJQTFxSWdjZ0R5QVJhaUlOYXlBR2JDQVRkVFlDakE4Z0ZpQUhJQTFxSUFac0lCTjFJZ2MyQW9nUElCWWdGaWdDcEE4aURTQVdLQUtjRHlJU2FpSVJJQllvQXFBUElnOGdGaWdDbUE4aUdtb2lIR29nQm13Z0UzVTJBcGdQSUJZZ0VpQU5heUlOSUJvZ0Qyc2lFbW9nQm13Z0UzVTJBcUFQSUJZZ0hDQVJheUFHYkNBVGRUWUNuQThnRmlBU0lBMXJJQVpzSUJOMU5nS2tEd3NnQ1NBSE5nSUFBa0FDUUNBSFJRUkFJQmN2QVR4RkRRRUxRUUVoQmlBSklBcEJBU0FJS0FJQUVBVkZEUUVNRlFzZ0NVSC8vLzhITmdJQUN5QUpJQllvQW93UElnWTJBa0FnQ1VGQWF5RUhBa0FDUUNBR1JRUkFJQmN2QVQ1RkRRRUxRUUVoQmlBSElBcEJBU0FJS0FJRUVBVkZEUUVNRlFzZ0IwSC8vLzhITmdJQUN5QUpJQllvQXBBUElnWTJBb0FCSUFsQmdBRnFJUWNDUUFKQUlBWkZCRUFnRjBGQWF5OEJBRVVOQVF0QkFTRUdJQWNnQ2tFQklBZ29BZ2dRQlVVTkFRd1ZDeUFIUWYvLy93YzJBZ0FMSUFrZ0ZpZ0NsQThpQmpZQ3dBRWdDVUhBQVdvaEJ3SkFBa0FnQmtVRVFDQVhMd0ZDUlEwQkMwRUJJUVlnQnlBS1FRRWdDQ2dDREJBRlJRMEJEQlVMSUFkQi8vLy9CellDQUFzZ0NTQkxLQUlBSWdZMkFvQUNJQWxCZ0FKcUlRY0NRQUpBSUFaRkJFQWdGeThCUkVVTkFRdEJBU0VHSUFjZ0NrRUJJQWdvQWhBUUJVVU5BUXdWQ3lBSFFmLy8vd2MyQWdBTElBa2dGaWdDbkE4aUJqWUN3QUlnQ1VIQUFtb2hCd0pBQWtBZ0JrVUVRQ0FYTHdGR1JRMEJDMEVCSVFZZ0J5QUtRUUVnQ0NnQ0ZCQUZSUTBCREJVTElBZEIvLy8vQnpZQ0FBc2dDU0FXS0FLZ0R5SUdOZ0tBQXlBSlFZQURhaUVIQWtBQ1FDQUdSUVJBSUJjdkFVaEZEUUVMUVFFaEJpQUhJQXBCQVNBSUtBSVlFQVZGRFFFTUZRc2dCMEgvLy84SE5nSUFDeUFKSUJZb0FxUVBJZ1kyQXNBRElBbEJ3QU5xSVFjQ1FBSkFJQVpGQkVBZ0Z5OEJTa1VOQVF0QkFTRUdJQWNnQ2tFQklBZ29BaHdRQlVVTkFRd1ZDeUFIUWYvLy93YzJBZ0FMSUF4QkJrOEVRQ0FPSVFrZ0gwRVFhaUVaUVFBaEUwRUFJUThqQUVIUUFHc2lFQ1FBQWtBZ0trVU5BQ0FyS0FJQUlnMGdLaUFyS0FJRUlncHVJaEVnQ213aUJrRUlkR29nS2lBR2F5SU1RUVIwYWlFSUlBcEJCSFFoQnlBcktBSUlJUTRnRUVFZ2FpRVNJQW9nS2tzaUdrVUVRQ0FRSUFnZ0IwRi9jMm9pQmkwQUFEb0FJQ0FRSUFnZ0Iyc3RBQUE2QUNFZ0VDQUdMUUFDT2dBaUlCQWdCaTBBQXpvQUl5QVFJQVl0QUFRNkFDUWdFQ0FHTFFBRk9nQWxJQkFnQmkwQUJqb0FKaUFRSUFZdEFBYzZBQ2NnRUNBR0xRQUlPZ0FvSUJBZ0JpMEFDVG9BS1NBUUlBWXRBQW82QUNvZ0VDQUdMUUFMT2dBcklCQWdCaTBBRERvQUxDQVFJQVl0QUEwNkFDMGdFQ0FHTFFBT09nQXVJQkFnQmkwQUR6b0FMeUFRSUFZdEFCQTZBREFnRUNBR0xRQVJPZ0F4SUJBZ0JpMEFFam9BTWlBUUlBWXRBQk02QURNZ0VDQUdMUUFVT2dBMElCQkJOV29oRWdzZ0NpQU9iQ0VPSUF3RWZ5QVFJQWhCQVdzaUJpMEFBRG9BQUNBUUlBWWdCMm9pQmkwQUFEb0FBU0FRSUFZZ0Iyb2lCaTBBQURvQUFpQVFJQVlnQjJvaUJpMEFBRG9BQXlBUUlBWWdCMm9pQmkwQUFEb0FCQ0FRSUFZZ0Iyb2lCaTBBQURvQUJTQVFJQVlnQjJvaUJpMEFBRG9BQmlBUUlBWWdCMm9pQmkwQUFEb0FCeUFRSUFZZ0Iyb2lCaTBBQURvQUNDQVFJQVlnQjJvaUJpMEFBRG9BQ1NBUUlBWWdCMm9pQmkwQUFEb0FDaUFRSUFZZ0Iyb2lCaTBBQURvQUN5QVFJQVlnQjJvaUJpMEFBRG9BRENBUUlBWWdCMm9pQmkwQUFEb0FEU0FRSUFZZ0Iyb2lCaTBBQURvQURpQVFJQVlnQjJvdEFBQTZBQThnRUVFUWFnVWdFQXNoQmlBTklBNUJDSFJxSUJFZ0NrRURkQ0lIYkVFRGRHb2dERUVEZEdvaERTQUhRZmovLy84SGNTRUhJQnBGQkVBZ0VpQU5JQWRCZjNOcUlnZ3RBQUE2QUFBZ0VpQU5JQWRyTFFBQU9nQUJJQklnQ0MwQUFqb0FBaUFTSUFndEFBTTZBQU1nRWlBSUxRQUVPZ0FFSUJJZ0NDMEFCVG9BQlNBU0lBZ3RBQVk2QUFZZ0VpQUlMUUFIT2dBSElCSWdDRUVJYWlJSUxRQUFPZ0FJSUJJZ0RrRUdkQ0FJYWlJSVFRaHJMUUFBT2dBSklCSWdDRUVIYXkwQUFEb0FDaUFTSUFoQkJtc3RBQUE2QUFzZ0VpQUlRUVZyTFFBQU9nQU1JQklnQ0VFRWF5MEFBRG9BRFNBU0lBaEJBMnN0QUFBNkFBNGdFaUFJUVFKckxRQUFPZ0FQSUJJZ0NFRUJheTBBQURvQUVDQVNJQWd0QUFBNkFCRUxJQXhGRFFBZ0JpQU5RUUZySWdndEFBQTZBQUFnQmlBSElBaHFJZ2d0QUFBNkFBRWdCaUFISUFocUlnZ3RBQUE2QUFJZ0JpQUhJQWhxSWdndEFBQTZBQU1nQmlBSElBaHFJZ2d0QUFBNkFBUWdCaUFISUFocUlnZ3RBQUE2QUFVZ0JpQUhJQWhxSWdndEFBQTZBQVlnQmlBSElBaHFJZ2d0QUFBNkFBY2dCaUFISUFocUlBNGdDbXRCQm5ScUlnZ3RBQUE2QUFnZ0JpQUhJQWhxSWdndEFBQTZBQWtnQmlBSElBaHFJZ2d0QUFBNkFBb2dCaUFISUFocUlnZ3RBQUE2QUFzZ0JpQUhJQWhxSWdndEFBQTZBQXdnQmlBSElBaHFJZ2d0QUFBNkFBMGdCaUFISUFocUlnZ3RBQUE2QUE0Z0JpQUhJQWhxTFFBQU9nQVBDd0pBQWtBZ0NTZ0NBQ0lLUVFkUEJFQUNRQ0FKS0FMSUFTSUdSUVJBUVFBaENDQWtRUUJISVJJTUFRc2dKRUVBUnlFU0lBa29BZ1FpQnlBR0tBSUVJZ3hHSVFnZ0J5QU1SdzBBSUNSRkRRQkJBQ0FJSUFZb0FnQkJCa2tiSVFoQkFTRVNDMEVBSVJFQ1FDQUpLQUxNQVNJR1JRMEFJQWtvQWdRZ0JpZ0NCRVlpRVNBU2NVVU5BRUVBSUJFZ0JpZ0NBRUVHU1JzaEVRc0NRQ0FKS0FMVUFTSUdSUTBBSUFrb0FnUWdCaWdDQkVZaUR5QVNjVVVOQUNBR0tBSUFRUVZMSVE4TFFRRWhCd0pBQWtBQ1FBSkFBa0FnQ2tFQmFrRURjUTREQUFFQ0F3c2dFVVVOQmtFQUlSRWdFQzBBTUNFR0lCQXRBQzhoQnlBUUxRQXVJUWdnRUMwQUxTRUtJQkF0QUN3aERDQVFMUUFySVE0Z0VDMEFLaUVOSUJBdEFDa2hFaUFRTFFBb0lROGdFQzBBSnlFYUlCQXRBQ1loSENBUUxRQWxJUmNnRUMwQUpDRVZJQkF0QUNNaEhpQVFMUUFpSVNFZ0VDMEFJU0VpSUJraEV3TkFJQk1nQmpvQUR5QVRJQWM2QUE0Z0V5QUlPZ0FOSUJNZ0Nqb0FEQ0FUSUF3NkFBc2dFeUFPT2dBS0lCTWdEVG9BQ1NBVElCSTZBQWdnRXlBUE9nQUhJQk1nR2pvQUJpQVRJQnc2QUFVZ0V5QVhPZ0FFSUJNZ0ZUb0FBeUFUSUI0NkFBSWdFeUFoT2dBQklCTWdJam9BQUNBVFFSQnFJUk1nRVVFQmFpSVJRUkJIRFFBTERBTUxJQWhGRFFVZ0dTQVFNUUFBUW9HQ2hJaVFvTUNBQVg0aWJqY0FDQ0FaSUc0M0FBQWdHU0FRTVFBQlFvR0NoSWlRb01DQUFYNGliamNBR0NBWklHNDNBQkFnR1NBUU1RQUNRb0dDaElpUW9NQ0FBWDRpYmpjQUtDQVpJRzQzQUNBZ0dTQVFNUUFEUW9HQ2hJaVFvTUNBQVg0aWJqY0FPQ0FaSUc0M0FEQWdHU0FRTVFBRVFvR0NoSWlRb01DQUFYNGliamNBU0NBWklHNDNBRUFnR1NBUU1RQUZRb0dDaElpUW9NQ0FBWDRpYmpjQVdDQVpJRzQzQUZBZ0dTQVFNUUFHUW9HQ2hJaVFvTUNBQVg0aWJqY0FhQ0FaSUc0M0FHQWdHU0FRTVFBSFFvR0NoSWlRb01DQUFYNGliamNBZUNBWklHNDNBSEFnR1NBUU1RQUlRb0dDaElpUW9NQ0FBWDRpYmpjQWlBRWdHU0J1TndDQUFTQVpJQkF4QUFsQ2dZS0VpSkNnd0lBQmZpSnVOd0NZQVNBWklHNDNBSkFCSUJrZ0VERUFDa0tCZ29TSWtLREFnQUYrSW00M0FLZ0JJQmtnYmpjQW9BRWdHU0FRTVFBTFFvR0NoSWlRb01DQUFYNGliamNBdUFFZ0dTQnVOd0N3QVNBWklCQXhBQXhDZ1lLRWlKQ2d3SUFCZmlKdU53RElBU0FaSUc0M0FNQUJJQmtnRURFQURVS0Jnb1NJa0tEQWdBRitJbTQzQU5nQklCa2diamNBMEFFZ0dTQVFNUUFPUW9HQ2hJaVFvTUNBQVg0aWJqY0E2QUVnR1NCdU53RGdBU0FaSUJBeEFBOUNnWUtFaUpDZ3dJQUJmaUp1TndENEFTQVpJRzQzQVBBQkRBSUxJQmtDZndKQUlBaEZEUUFnRVVVTkFDQVFMUUFQSUJBdEFEQWdFQzBBRGlBUUxRQXZJQkF0QUEwZ0VDMEFMaUFRTFFBTUlCQXRBQzBnRUMwQUN5QVFMUUFzSUJBdEFBb2dFQzBBS3lBUUxRQUpJQkF0QUNvZ0VDMEFDQ0FRTFFBcElCQXRBQWNnRUMwQUtDQVFMUUFHSUJBdEFDY2dFQzBBQlNBUUxRQW1JQkF0QUFRZ0VDMEFKU0FRTFFBRElCQXRBQ1FnRUMwQUFpQVFMUUFqSUJBdEFBRWdFQzBBSWlBUUxRQWhJQkF0QUFCcWFtcHFhbXBxYW1wcWFtcHFhbXBxYW1wcWFtcHFhbXBxYW1wcWFtcHFRUkJxUVFWMkRBRUxJQWdFUUNBUUxRQVBJQkF0QUE0Z0VDMEFEU0FRTFFBTUlCQXRBQXNnRUMwQUNpQVFMUUFKSUJBdEFBZ2dFQzBBQnlBUUxRQUdJQkF0QUFVZ0VDMEFCQ0FRTFFBRElCQXRBQUlnRUMwQUFDQVFMUUFCYW1wcWFtcHFhbXBxYW1wcWFtcHFRUWhxUVFSMkRBRUxRWUFCSUJGRkRRQWFJQkF0QURBZ0VDMEFMeUFRTFFBdUlCQXRBQzBnRUMwQUxDQVFMUUFySUJBdEFDb2dFQzBBS1NBUUxRQW9JQkF0QUNjZ0VDMEFKaUFRTFFBbElCQXRBQ1FnRUMwQUl5QVFMUUFoSUJBdEFDSnFhbXBxYW1wcWFtcHFhbXBxYW1wQkNHcEJCSFlMUVlBQ0VBTWFEQUVMSUFoQkFFY2dFVUVBUjNFZ0QzRkZEUU1nRUMwQUNDQVFMUUFHYXlBUUxRQVBJZ1lnRUMwQUlDSUhhMEVEZEdvZ0VDMEFDU0FRTFFBRmEwRUJkR29nRUMwQUNpQVFMUUFFYTBFRGJHb2dFQzBBQ3lBUUxRQURhMEVDZEdvZ0VDMEFEQ0FRTFFBQ2EwRUZiR29nRUMwQURTQVFMUUFCYTBFR2JHb2dFQzBBRGlBUUxRQUFhMEVIYkdwQkJXeEJJR3BCQm5VaENpQVFMUUFwSUJBdEFDZHJJQkF0QUNvZ0VDMEFKbXRCQVhScUlCQXRBQ3NnRUMwQUpXdEJBMnhxSUJBdEFDd2dFQzBBSkd0QkFuUnFJQkF0QUMwZ0VDMEFJMnRCQld4cUlCQXRBQzRnRUMwQUltdEJCbXhxSUJBdEFDOGdFQzBBSVd0QkIyeHFJQkF0QURBaURDQUhhMEVEZEdwQkJXeEJJR3BCQm5VaUNFRURkQ0VPSUFoQkIyd2hEU0FJUVFac0lSRWdDRUVGYkNFUElBaEJBMndoR2lBSVFYMXNJUk1nQ0VGN2JDRWNJQWhCZW13aEZ5QUlRWGxzSVJWQkFDQUlRUUYwSWg1cklTRkJBQ0FJUVFKMElpSnJJU2tnQmlBTWFrRUVkRUVRYWlFTVFRQWhFZ05BSUJrZ0VrRUVkR29pQmlBTUlCSkJCMnNnQ214cUlnZEJCWFVpSFVIL0FTQWRRZjhCU0JzaUhVRUFJQjFCQUVvYk9nQUhJQVlnQnlBWGFrRUZkU0lkUWY4QklCMUIvd0ZJR3lJZFFRQWdIVUVBU2hzNkFBRWdCaUFISUJWcVFRVjFJaDFCL3dFZ0hVSC9BVWdiSWgxQkFDQWRRUUJLR3pvQUFDQUdJQWNnSEdwQkJYVWlIVUgvQVNBZFFmOEJTQnNpSFVFQUlCMUJBRW9iT2dBQ0lBWWdCeUFwYWtFRmRTSWRRZjhCSUIxQi93RklHeUlkUVFBZ0hVRUFTaHM2QUFNZ0JpQUhJQk5xUVFWMUloMUIvd0VnSFVIL0FVZ2JJaDFCQUNBZFFRQktHem9BQkNBR0lBY2dJV3BCQlhVaUhVSC9BU0FkUWY4QlNCc2lIVUVBSUIxQkFFb2JPZ0FGSUFZZ0J5QUlhMEVGZFNJZFFmOEJJQjFCL3dGSUd5SWRRUUFnSFVFQVNoczZBQVlnQmlBSElBaHFRUVYxSWgxQi93RWdIVUgvQVVnYkloMUJBQ0FkUVFCS0d6b0FDQ0FHSUFjZ0htcEJCWFVpSFVIL0FTQWRRZjhCU0JzaUhVRUFJQjFCQUVvYk9nQUpJQVlnQnlBYWFrRUZkU0lkUWY4QklCMUIvd0ZJR3lJZFFRQWdIVUVBU2hzNkFBb2dCaUFISUNKcVFRVjFJaDFCL3dFZ0hVSC9BVWdiSWgxQkFDQWRRUUJLR3pvQUN5QUdJQWNnRDJwQkJYVWlIVUgvQVNBZFFmOEJTQnNpSFVFQUlCMUJBRW9iT2dBTUlBWWdCeUFSYWtFRmRTSWRRZjhCSUIxQi93RklHeUlkUVFBZ0hVRUFTaHM2QUEwZ0JpQUhJQTFxUVFWMUloMUIvd0VnSFVIL0FVZ2JJaDFCQUNBZFFRQktHem9BRGlBR0lBY2dEbXBCQlhVaUJrSC9BU0FHUWY4QlNCc2lCa0VBSUFaQkFFb2JPZ0FQSUJKQkFXb2lFa0VRUncwQUN3c2dHU0FXUWNnQ2FrRUFFQXNnR1NBV1FZZ0Rha0VCRUFzZ0dTQVdRY2dEYWtFQ0VBc2dHU0FXUVlnRWFrRURFQXNnR1NBV1FjZ0Vha0VFRUFzZ0dTQVdRWWdGYWtFRkVBc2dHU0FXUWNnRmFrRUdFQXNnR1NBV1FZZ0dha0VIRUFzZ0dTQVdRY2dHYWtFSUVBc2dHU0FXUVlnSGFrRUpFQXNnR1NBV1FjZ0hha0VLRUFzZ0dTQVdRWWdJYWtFTEVBc2dHU0FXUWNnSWFrRU1FQXNnR1NBV1FZZ0pha0VORUFzZ0dTQVdRY2dKYWtFT0VBc2dHU0FXUVlnS2FrRVBFQXNNQVFzZ0NVSElBV29oQ2lBSlFjd0JhaUVNSUFsQjBBRnFJUTRnQ1VIVUFXb2hEUU5BSUFvaEJ5QUpJUWhCQUNFR1FRQWhFUUpBQWtBQ1FBSkFBa0FDUUNBVFFRTjBJaEpCb0N0cUtRTUFJbTZuRGdVREFBRUNCQVVMSUF3aEJ3d0NDeUFPSVFjTUFRc2dEU0VIQ3lBSEtBSUFJZ2dOQUF3QkN5QUpLQUlFSWdZZ0NDZ0NCQ0lIUmlFUkFrQWdCaUFIUncwQUlDUkZEUUJCQUNBUklBZ29BZ0JCQmtrYklSRUxJQWdoQmdzZ0NpRUhJQWtoQ0FKQUFrQUNRQUpBQWtBQ1FBSkFJQkpCNEN4cUtRTUFJbStuRGdVREFBRUNCUVFMSUF3aEJ3d0NDeUFPSVFjTUFRc2dEU0VIQ3lBSEtBSUFJZ2dOQVF0QkFDRWhJQkZCQUVjaEYwRUNJUWRCQUNFcERBRUxJQWtvQWdRaUJ5QUlLQUlFSWc5R0lSd0NRQ0FISUE5SERRQWdKRVVOQUVFQUlCd2dDQ2dDQUVFR1NSc2hIQXRCQUNFaElCeEJBRWNoS1NBUlFRQkhJUmRCQWlFSElCRkZEUUFnSEVVTkFFRUNJUkVDZnlBR0tBSUFRUVpHQkVBZ0JpQnVRaUNJcDBIL0FYRnFMUUJTSVFjTElBY0xBbjhnQ0NnQ0FFRUdSZ1JBSUFnZ2IwSWdpS2RCL3dGeGFpMEFVaUVSQ3lBUkN5QUhJQkZKR3lFSFFRRWhJVUVCSVNsQkFTRVhDeUFXSUJOQkFuUWlFV29pQmlnQ0RFVUVRQ0FHS0FKTUlnWWdCaUFIVDJvaEJ3c2dDU0FUYWlBSE9nQlNRUUFoRlNBS0lRWWdDU0VJUVFBaEhnSkFBa0FDUUFKQUFrQUNRQ0FTUWFBdWFpZ0NBQTRGQXdBQkFnUUZDeUFNSVFZTUFnc2dEaUVHREFFTElBMGhCZ3NnQmlnQ0FDSUlSUTBCQ3lBSktBSUVJZ1lnQ0NnQ0JDSVBSaUVlSUFZZ0QwY05BQ0FrUlEwQVFRQWdIaUFJS0FJQVFRWkpHeUVlQ3lBS0lRWWdDU0VJQWtBQ1FBSkFBa0FDUUFKQUlCSkI0QzlxS0FJQURnVURBQUVDQkFVTElBd2hCZ3dDQ3lBT0lRWU1BUXNnRFNFR0N5QUdLQUlBSWdoRkRRRUxJQWtvQWdRaUJpQUlLQUlFSWhKR0lSVWdCaUFTUncwQUlDUkZEUUJCQUNBVklBZ29BZ0JCQmtrYklSVUxJQkZCOENscUtBSUFJU1lnRVVHd0tXb29BZ0FoTXdKQVFZVUtJQk4yUVFGeElpNEVRQ0FRSUNacUloRkJBMm9oRWlBUlFRSnFJUWdnRVVFQmFpRUdEQUVMSUNaQkJIUWdNMm9nR1dvaUVVRXZhaUVTSUJGQkgyb2hDQ0FSUVE5cUlRWWdFVUVCYXlFUkN5QUlMUUFBSVIwZ0VpMEFBQ0VJSUFZdEFBQWhKU0FSTFFBQUlTd0NRRUV6SUJOMlFRRnhCRUFnRUVFZ2FpQXphaUlSTFFBSUlROGdFUzBBQnlFd0lCRXRBQVloSWlBUkxRQUZJVFVnRVMwQUJDRVNJQkV0QUFNaEhDQVJMUUFDSVJvZ0VTMEFBU0VHREFFTElCa2dKa0VCYXlKVFFRUjBJRE5xYWlJUkxRQUFJUVlnRVMwQUJ5RVBJQkV0QUFZaE1DQVJMUUFGSVNJZ0VTMEFCQ0UxSUJFdEFBTWhFaUFSTFFBQ0lSd2dFUzBBQVNFYUlDNEVRQ0FRSUZOcUlSRU1BUXNnRVVFQmF5RVJDeUFSTFFBQUlTNENRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FIRGdnQUFRSURCQVVHQndnTElDbEZCRUJCQVNFSERBd0xJQVpCL3dGeElCcEIvd0Z4UVFoMGNpQWNRZjhCY1VFUWRISWdFa0VZZEhJaEtTQUdJZ2NoSGlBYUloY2hJU0FjSWhFaENDQVNJaFVoRHd3SUN5QVhSUVJBUVFFaEJ3d0xDeUFJUVlHQ2hBaHNJU2tnSFVHQmdvUUliQ0llUVJoMklROGdIa0VRZGlFSUlCNUJDSFloSVNBbFFZR0NoQWhzSWdaQkdIWWhGU0FHUVJCMklSRWdCa0VJZGlFWElDeEJnWUtFQ0d3aUIwRVlkaUVTSUFkQkVIWWhIQ0FIUVFoMklSb01Cd3NDZnlBbElDeHFJQWhxSUIxcUlCSkIvd0Z4YWlBY1FmOEJjV29nR2tIL0FYRnFJQVpCL3dGeGFrRUVha0g0L3dOeFFRTjJJQ0VOQUJvZ0pTQXNhaUFJYWlBZGFrRUNha0VDZGlBWERRQWFRWUFCSUNsRkRRQWFJQkpCL3dGeElCeEIvd0Z4YWlBYVFmOEJjV29nQmtIL0FYRnFRUUpxUVFKMkN5SUhRZjhCY1VHQmdvUUliQ0VwSUFjaUdpSWNJaElpQmlFWElBWWlFU0lWSWg0aUlTSUlJUThNQmdzZ0tVVUVRRUVCSVFjTUNRc2dIa1VFUUNBU0lnOGlNQ0lpSVRVTElDSkIvd0Z4SWdjZ0QwSC9BWEVpRVdvZ01FSC9BWEVpRDBFQmRHcEJBbW9pRjBFT2RFR0FnUHdIY1NBU1FmOEJjU0llUVFKcUlpRWdCMm9nTlVIL0FYRWlDRUVCZEdwQkFuWWlFaUFQUVFKcUlnOGdDR29nQjBFQmRHcEJBbllpRlVFSWRISkIvLzhEY1hJZ0R5QVJRUU5zYWtFV2RFR0FnSUI0Y1hJaEtTQVhRUUoySVE4Z0hFSC9BWEVpRVVFQ2FpSWNJQVpCL3dGeGFpQWFRZjhCY1NJR1FRRjBha0VDZGlFSElBWWdJV29nRVVFQmRHcEJBbllpR2lFR0lCd2dIa0VCZEdvZ0NHcEJBbllpSENFWElCd2hIaUFTSWhFaElTQVZJUWdNQlF0QkFTRUhJQ0VnRlVFQVIzRkZEUWNnTENBbFFRRjBhaUFkYWtFQ2FpSVJRUVowUVlEK0EzRWdCa0gvQVhFaUQwRUNhaUlYSUN4cUlDNUJBWFJxUVFKMklnZEJHSFFnSlVFQ2FpSUdJQ3hCQVhScUlDNXFRUUoySWlGQkVIUnljaUFHSUFocUlCMUJBWFJxUVFKMmNpRXBJQnBCL3dGeElnaEJBbW9pR2lBU1FmOEJjV29nSEVIL0FYRWlIRUVCZEdwQkFuWWhFaUFSUVFKMklSNGdJU0VHSUJvZ0QwRUJkR29nTG1wQkFuWWlHaUVSSUFoQkFYUWdIR29nRjJwQkFuWWlIQ0VWSUFjaUZ5RUlJQm9oRHd3RUMwRUJJUWNnSVNBVlFRQkhjVVVOQmlBYVFmOEJjU0lQUVFKcUlnY2dCa0gvQVhFaUNFRUJkR29nTG1wQkFuWWlGMEVRZENBSVFRSnFJZ1lnTEdvZ0xrRUJkR29pR2tFR2RFR0EvZ054Y2lBR0lCeEIvd0Z4SWdZZ0QwRUJkR3BxUVFKMkloRkJHSFJ5SUN3Z0pVRUJkR29nSFdwQkFtcEJBblp5SVNrZ0JrRUJhaUljSUJKQi93RnhJaFZxUVFGMklSSWdKU0FzUVFGMGFpQXVha0VDYWtFQ2RpRWVJQWNnRldvZ0JrRUJkR3BCQW5ZaEZTQWFRUUoySVFZZ0NDQXVha0VCYWtFQmRpSUhJU0VnQ0NBUGFrRUJha0VCZGlJYUlRZ2dEeUFjYWtFQmRpSWNJUThNQXd0QkFTRUhJQ0VnRlVFQVIzRkZEUVVnSlVFQ2FpSVBJQWhxSUIxQkFYUnFRUVowUVlEK0EzRWdMRUVDYWlJSElDVkJBWFJxSUIxcVFRSjJJaUZCR0hRZ0hTQWxha0VCYWtFQmRpSWVRUkIwY25JZ0NDQWRha0VCYWtFQmRuSWhLU0FHUWY4QmNTSUdJQnhCL3dGeGFpQWFRZjhCY1NJSVFRRjBha0VDYWtFQ2RpRVNJQWdnQmtFQmRHb2dMbXBCQW1wQkFuWWhIQ0FHSUFkcUlDNUJBWFJxUVFKMkloVWhHaUFzUVFGcUlnWWdMbXBCQVhZaUJ5RVJJQVlnSldwQkFYWWlCaUVJSUE4Z0xFRUJkR29nTG1wQkFuWWlGeUVQREFJTElDbEZCRUJCQVNFSERBVUxJQkpCL3dGeElpRkJBbW9pRVNBaUlCSWdIaHRCL3dGeElnZHFJRFVnRWlBZUcwSC9BWEVpQ0VFQmRHb2lGVUVPZEVHQWdQd0hjU0FSSUJwQi93RnhJaHBxSUJ4Qi93RnhJaHhCQVhScVFRSjJJaGNnSEVFQ2FpSWlJQWhxSUNGQkFYUnFRUUoySWhGQkNIUnlRZi8vQTNGeUlBZ2dNQ0FTSUI0YlFmOEJjV29nQjBFQmRHcEJGblJCZ0lDQUJHcEJnSUNBZUhGeUlTa2dCeUFJYWtFQmFrRUJkaUVQSUJWQkFuWWhGU0FhSUFaQi93RnhJZ1pxUVFGcVFRRjJJUWNnQmlBaWFpQWFRUUYwYWtFQ2RpRUdJQm9nSEdwQkFXcEJBWFlpR2lFZUlDRkJBV29pRWlBY2FrRUJkaUljSVNFZ0NDQVNha0VCZGlJU0lRZ01BUXNnRjBVRVFFRUJJUWNNQkFzZ0NFRUlkQ0FJY2lBSVFSQjBjaUFJUVJoMGNpRXBJQjFCQW1vaUR5QXNhaUFsUVFGMGFrRUNkaUVhSUNWQkFXb2lCaUFzYWtFQmRpRUhJQVlnSFdwQkFYWWlIQ0VHSUFnZ0pXb2dIVUVCZEdwQkFtcEJBbllpRWlFWElBZ2dIV3BCQVdwQkFYWWlFU0VlSUE4Z0NFRURiR3BCQW5ZaUZTRWhJQWdoRHdzZ0dTQW1RUVIwSUROcWFpSWlJQ2syQWpBZ0lpQWVRZjhCY1NBUFFSaDBJQWhCL3dGeFFSQjBjaUFoUWY4QmNVRUlkSEp5TmdJZ0lDSWdCa0gvQVhFZ0ZVRVlkQ0FSUWY4QmNVRVFkSElnRjBIL0FYRkJDSFJ5Y2pZQ0VDQWlJQWRCL3dGeElCSkJHSFFnSEVIL0FYRkJFSFJ5SUJwQi93RnhRUWgwY25JMkFnQWdHU0FXSUJOQkJuUnFRY2dDYWlBVEVBc2dFMEVCYWlJVFFSQkhEUUFMQ3dKQUlBa29Bc2dCSWdaRkJFQkJBQ0VPSUNSQkFFY2hFUXdCQ3lBa1FRQkhJUkVnQ1NnQ0JDSUhJQVlvQWdRaUNFWWhEaUFISUFoSERRQWdKRVVOQUVFQUlBNGdCaWdDQUVFR1NSc2hEa0VCSVJFTFFRQWhFMEVBSVJjQ1FDQUpLQUxNQVNJR1JRMEFJQWtvQWdRZ0JpZ0NCRVlpRnlBUmNVVU5BRUVBSUJjZ0JpZ0NBRUVHU1JzaEZ3c2dGaWdDakFFaEdnSkFJQWtvQXRRQklnWkZEUUFnQ1NnQ0JDQUdLQUlFUmlJVElCRnhSUTBBSUFZb0FnQkJCVXNoRXdzZ0ZrSElDbW9oSENBWlFZQUNhaUVHSUJCQkVHb2hIaUFRUVRWcUlTSkJBQ0VLSUE1QkFFY2dGMEVBUjNFaUZTQVRjU0VoUVJBaEVnTkFBa0FDUUFKQUFrQUNRQ0FhRGdNQUFRSURDeUFHQW44Z0ZRUkFJQjR0QUFNZ0hpMEFBaUFlTFFBQklCNHRBQUFnSWkwQUJDQWlMUUFESUNJdEFBRWdJaTBBQW1wcWFtcHFhbXBCQkdwQkEzWWhFU0FpTFFBSUlDSXRBQWNnSWkwQUJTQWlMUUFHYW1wcVFRSnFRUUoyREFFTElCY0VRQ0FpTFFBRUlDSXRBQU1nSWkwQUFTQWlMUUFDYW1wcVFRSnFRUUoySVJFZ0lpMEFDQ0FpTFFBSElDSXRBQVVnSWkwQUJtcHFha0VDYWtFQ2Rnd0JDeUFPUlFSQVFZQUJJUkZCZ0FFTUFRc2dIaTBBQXlBZUxRQUNJQjR0QUFBZ0hpMEFBV3BxYWtFQ2FrRUNkaUlSQzBIL0FYRkJnWUtFQ0d3aUJ6WUFIQ0FHSUJGQi93RnhRWUdDaEFoc0lnZzJBQmdnQmlBSE5nQVVJQVlnQ0RZQUVDQUdJQWMyQUF3Z0JpQUlOZ0FJSUFZZ0J6WUFCQ0FHSUFnMkFBQWdCZ0ovSUE0RVFDQWVMUUFISUI0dEFBWWdIaTBBQlNBZUxRQUVhbXBxSWdkQkFtcEJBbllpRVNBWFJRMEJHaUFpTFFBSUlDSXRBQWNnSWkwQUJpQUhJQ0l0QUFWcWFtcHFRUVJxUVFOMkRBRUxJQmRGQkVCQmdBRWhFVUdBQVF3QkN5QWlMUUFFSUNJdEFBTWdJaTBBQVNBaUxRQUNhbXBxUVFKcVFRSjJJUkVnSWkwQUNDQWlMUUFISUNJdEFBVWdJaTBBQm1wcWFrRUNha0VDZGd0Qi93RnhRWUdDaEFoc0lnYzJBRHdnQmlBUlFmOEJjVUdCZ29RSWJDSUlOZ0E0SUFZZ0J6WUFOQ0FHSUFnMkFEQWdCaUFITmdBc0lBWWdDRFlBS0NBR0lBYzJBQ1FnQmlBSU5nQWdRUUFoQ0F3REN5QU9SUVJBUVFFaEJ3d0ZDeUFHSUI0eEFBQkNnWUtFaUpDZ3dJQUJmamNBQUNBR0lCNHhBQUZDZ1lLRWlKQ2d3SUFCZmpjQUNDQUdJQjR4QUFKQ2dZS0VpSkNnd0lBQmZqY0FFQ0FHSUI0eEFBTkNnWUtFaUpDZ3dJQUJmamNBR0NBR0lCNHhBQVJDZ1lLRWlKQ2d3SUFCZmpjQUlDQUdJQjR4QUFWQ2dZS0VpSkNnd0lBQmZqY0FLQ0FHSUI0eEFBWkNnWUtFaUpDZ3dJQUJmamNBTUNBR0lCNHhBQWRDZ1lLRWlKQ2d3SUFCZmpjQU9FRUFJUWdNQWdzZ0YwVUVRRUVCSVFjTUJBc2dCaUFpTFFBQklnYzZBRGdnQmlBSE9nQXdJQVlnQnpvQUtDQUdJQWM2QUNBZ0JpQUhPZ0FZSUFZZ0J6b0FFQ0FHSUFjNkFBZ2dCaUFIT2dBQUlBWWdJaTBBQWlJSE9nQTVJQVlnQnpvQU1TQUdJQWM2QUNrZ0JpQUhPZ0FoSUFZZ0J6b0FHU0FHSUFjNkFCRWdCaUFIT2dBSklBWWdCem9BQVNBR0lDSXRBQU1pQnpvQU9pQUdJQWM2QURJZ0JpQUhPZ0FxSUFZZ0J6b0FJaUFHSUFjNkFCb2dCaUFIT2dBU0lBWWdCem9BQ2lBR0lBYzZBQUlnQmlBaUxRQUVJZ2M2QURzZ0JpQUhPZ0F6SUFZZ0J6b0FLeUFHSUFjNkFDTWdCaUFIT2dBYklBWWdCem9BRXlBR0lBYzZBQXNnQmlBSE9nQURJQVlnSWkwQUJTSUhPZ0E4SUFZZ0J6b0FOQ0FHSUFjNkFDd2dCaUFIT2dBa0lBWWdCem9BSENBR0lBYzZBQlFnQmlBSE9nQU1JQVlnQnpvQUJDQUdJQ0l0QUFZaUJ6b0FQU0FHSUFjNkFEVWdCaUFIT2dBdElBWWdCem9BSlNBR0lBYzZBQjBnQmlBSE9nQVZJQVlnQnpvQURTQUdJQWM2QUFVZ0JpQWlMUUFISWdjNkFENGdCaUFIT2dBMklBWWdCem9BTGlBR0lBYzZBQ1lnQmlBSE9nQWVJQVlnQnpvQUZpQUdJQWM2QUE0Z0JpQUhPZ0FHSUFZZ0lpMEFDQ0lIT2dBL0lBWWdCem9BTnlBR0lBYzZBQzhnQmlBSE9nQW5JQVlnQnpvQUh5QUdJQWM2QUJjZ0JpQUhPZ0FQSUFZZ0J6b0FCMEVBSVFnTUFRc2dJVVVFUUVFQklRY01Bd3NnSWkwQUJTQWlMUUFEYXlBaUxRQUdJQ0l0QUFKclFRRjBhaUFpTFFBSElDSXRBQUZyUVFOc2FpQWlMUUFJSWdjZ0lpMEFBQ0lJYTBFQ2RHcEJFV3hCRUdwQkJYVWlERUY5YkNFTklBY2dIaTBBQnlJUmFrRUVkQ0FlTFFBRUlCNHRBQUpySUJFZ0NHdEJBblJxSUI0dEFBVWdIaTBBQVd0QkFYUnFJQjR0QUFZZ0hpMEFBR3RCQTJ4cVFSRnNRUkJxUVFWMUloRkJmV3hxUVJCcUlROUJDQ0VISUFZaEV3TkFJQk1nRFNBUGFpSUlRUVYxUWNBMWFpMEFBRG9BQUNBVElBZ2dER29pQ0VFRmRVSEFOV290QUFBNkFBRWdFeUFJSUF4cUlnaEJCWFZCd0RWcUxRQUFPZ0FDSUJNZ0NDQU1haUlJUVFWMVFjQTFhaTBBQURvQUF5QVRJQWdnREdvaUNFRUZkVUhBTldvdEFBQTZBQVFnRXlBSUlBeHFJZ2hCQlhWQndEVnFMUUFBT2dBRklCTWdDQ0FNYWlJSVFRVjFRY0ExYWkwQUFEb0FCaUFUSUFnZ0RHcEJCWFZCd0RWcUxRQUFPZ0FISUE4Z0VXb2hEeUFUUVFocUlSTkJBQ0VJSUFkQkFXc2lCdzBBQ3dzRFFDQWNJQWhCQm5ScUlnY29BZ0FpRVVILy8vOEhSd1JBSUFjb0FnUWhEeUFHSUJJZ0VrRURjU0FTUVJCSklnd2JRUUowSWhOQjhDbHFLQUlBUVJCQkNDQU1HeUlOYkdvZ0UwR3dLV29vQWdCcUlnd2dFU0FNTFFBQWFrSEFOV290QUFBNkFBQWdCeWdDQ0NFUklBd2dEeUFNTFFBQmFrSEFOV290QUFBNkFBRWdCeWdDRENFUElBd2dFU0FNTFFBQ2FrSEFOV290QUFBNkFBSWdEQ0FQSUF3dEFBTnFRY0ExYWkwQUFEb0FBeUFIS0FJVUlSRWdEQ0FOYWlJTUlBY29BaEFnREMwQUFHcEJ3RFZxTFFBQU9nQUFJQWNvQWhnaER5QU1JQkVnREMwQUFXcEJ3RFZxTFFBQU9nQUJJQWNvQWh3aEVTQU1JQThnREMwQUFtcEJ3RFZxTFFBQU9nQUNJQXdnRVNBTUxRQURha0hBTldvdEFBQTZBQU1nQnlnQ0pDRVJJQXdnRFdvaURDQUhLQUlnSUF3dEFBQnFRY0ExYWkwQUFEb0FBQ0FIS0FJb0lROGdEQ0FSSUF3dEFBRnFRY0ExYWkwQUFEb0FBU0FIS0FJc0lSRWdEQ0FQSUF3dEFBSnFRY0ExYWkwQUFEb0FBaUFNSUJFZ0RDMEFBMnBCd0RWcUxRQUFPZ0FESUFjb0FqUWhFU0FNSUExcUlnd2dCeWdDTUNBTUxRQUFha0hBTldvdEFBQTZBQUFnQnlnQ09DRU5JQXdnRVNBTUxRQUJha0hBTldvdEFBQTZBQUVnQnlnQ1BDRUhJQXdnRFNBTUxRQUNha0hBTldvdEFBQTZBQUlnRENBSElBd3RBQU5xUWNBMWFpMEFBRG9BQXdzZ0VrRUJhaUVTSUFoQkFXb2lDRUVFUncwQUN5QWNRWUFDYWlFY0lCNUJDR29oSGlBaVFRbHFJU0lnQmtGQWF5RUdJQW9oQjBFQklRb2dCMFVOQUF0QkFDRUhJQWtvQXNRQlFRRkxEUUFnS3lBWkVBOExJQkJCMEFCcUpBQWdCeUlHUlEwU0RCUUxJQTRvQWdBaEhDQWZJQ3NvQWdRaUJqWUMzQU1nSHlBcktBSUlOZ0xnQXlBcUlBWnVJZ2RCQkhRaEdTQXFJQVlnQjJ4clFRUjBJUjRnSEE0RUFBQUJBZ01MSUNrZ01Xb2lEU2dDQkNFR0lCWW9BcEFCSVJKQkFTRUtRWDhoRUVFQUlRbEJBQ0VhUVFBaENFRUJJUWNDZjBGL0lBMG9Bc2dCSWd4RkRRQWFRWDhnRENnQ0JDQUdSdzBBR2tFQUlRZEJmeUFNS0FJQVFRVkxEUUFhSUF3b0FwZ0JJZ2hCRUhZaEdpQU1LQUpvQ3lFUkFrQWdEU2dDekFFaURFVUVRRUVBSVJVTUFRc2dCaUFNS0FJRVJ3UkFRUUFoRlF3QkMwRUFJUW9nRENnQ0FFRUZTd1JBUVFBaEZRd0JDeUFNS0FLc0FTSVZRUkIySVFrZ0RDZ0NiQ0VRQ3lBY1JRUkFRUUFoSENBSElBcHlCRUJCQUNFTURBOExJQkVnQ0VILy93TnhJQnBCRUhSeWNrVUVRRUVBSVF3TUR3dEJBQ0VNSUJBZ0ZVSC8vd054SUFsQkVIUnlja1VORGdzZ0ZpOEJvZ0VoRHlBV0x3R2dBU0VUQW44Q1FBSkFJQTBvQXRBQklneEZEUUFnRENnQ0JDQUdSdzBBSUF3b0FnQkJCVTBOQVF3TkN3SkFJQTBvQXRRQklneEZEUUFnRENnQ0JDQUdSdzBBSUF3b0FnQkJCVXNORFNBTVFjQUJhaUVjSUF4QjhBQnFEQUlMSUFjZ0NrRUJjM0lOREF3T0N5QU1RYXdCYWlFY0lBeEI3QUJxQ3lnQ0FDRUhJQndvQWdBTUN3c2dGeWdDQkNFU0lCWW9BcEFCSVExQmZ5RUlBa0FDUUFKQUlCY29Bc3dCSWdaRkJFQkJBQ0VhREFFTFFRQWhHaUFHS0FJRUlCSkdEUUVMUVFBaERFRUFJUWtNQVF0QkFTRUpJQVlvQWdCQkJVc0VRRUVBSVF3TUFRc2dCaWdDckFFaURFRVFkaUVhSUFZb0Ftd2hDQXNnRmk4Qm9nRWhFU0FXTHdHZ0FTRVBJQWdnRFVZRVFDQWFJUVlnRENFSURBa0xRUUVoRUVGL0lSVkJBQ0VHQWtBZ0Z5Z0N5QUVpQjBVRVFFRUFJUWdNQVFzZ0VpQUhLQUlFUndSQVFRQWhDQXdCQzBFQUlSQWdCeWdDQUVFRlN3UkFRUUFoQ0F3QkN5QUhLQUtZQVNJSVFSQjJJUVlnQnlnQ2FDRVZDd0ovQWtBQ1FDQVhLQUxRQVNJSFJRMEFJQWNvQWdRZ0VrY05BQ0FIS0FJQVFRVk5EUUVNQ1FzQ1FDQVhLQUxVQVNJSFJRMEFJQWNvQWdRZ0VrY05BQ0FIS0FJQVFRVkxEUWtnQjBIQUFXb2hFQ0FIUWZBQWFnd0NDeUFKSUJCeURRZ01DZ3NnQjBHc0FXb2hFQ0FIUWV3QWFnc29BZ0FoQ2lBUUtBSUFEQWNMSUJjb0FnUWhEU0FXS0FLUUFTRUpRUUVoQ2tGL0lRaEJBQ0VUQWtBZ0Z5Z0N5QUVpQmtVRVFFRUFJUXdNQVFzZ0RTQUdLQUlFUndSQVFRQWhEQXdCQzBFQUlRb2dCaWdDQUVFRlN3UkFRUUFoREF3QkN5QUdLQUtZQVNJTVFSQjJJUk1nQmlnQ2FDRUlDeUFXTHdHaUFTRVNJQll2QWFBQklSRWdDQ0FKUmcwREFuOENRQUpBSUJjb0Fzd0JJZ2RGRFFBZ0J5Z0NCQ0FOUncwQUlBY29BZ0JCQlUwTkFRd0VDd0pBSUJjb0F0UUJJZ2RGRFFBZ0J5Z0NCQ0FOUncwQUlBY29BZ0JCQlVzTkJDQUhRY0FCYWlFUVFRQWhCa0YvSVJWQkFBd0NDeUFLUlEwRkRBTUxJQWRCdkFGcUlSQWdCeWdDYkNFVklBY29BcXdCSWdaQkVIWUxJUWdnQnlnQ2NDRUtJQkFvQWdBTUFnc2dGMEhJQVdvaERTQVhRY3dCYWlFU0lCZEIwQUZxSVJFZ0YwSFVBV29oRDBFQUlTRURRRUVFSVNJZ0ZpQWhRUUowSWlScUlpVWlNeWdDc0FFaUJrRUNUUVJBSUFaQkFuUkJqQ3RxS0FJQUlTSUxJQmNnSkdvaUJ5QWxLQUxBQVRZQ1pBSkFBa0FnSlNnQ3dBRWlIRUVRU3cwQUlBQW9Bc2dKSUJ4QkFuUnFLQUlBSWdaRkRRQWdCaWdDRkVFQlN3MEJDeUFwSUNwQjJBRnNhaUFoUVFKMGFrRUFOZ0owREEwTElBY2dCaWdDQUNJR05nSjBJQVpGRFF3Q1FDQWlSUTBBSUJjZ0lVRUVkQ0l3YWlJZElUVWdKRUVEY2lGVFFRQWhHZ05BSUJZZ01Hb2dHa0VDZEdvaExFRUJJUzVCZnlFbUlBMGhDaUFPSVFaQkFDRUlRUUFoQ1VGL0lSVUNRQUpBQWtBQ1FBSkFBa0FnSVVFSGRDQXpLQUt3QVNKc1FRVjBhaUFhUVFOMGFpSVRRYkFaYWlnQ0FBNEZBd0FCQWdRRkN5QVNJUW9NQWdzZ0VTRUtEQUVMSUE4aENnc2dDaWdDQUNFR0N3SkFJQVpGRFFBZ0JpZ0NCQ0FYS0FJRVJ3MEJRUUFoTGlBR0tBSUFRUVZMRFFBZ0JpQVRRYlFaYWkwQUFDSUhRUUowYWlnQ2hBRWlDVUVRZGlFSUlBWWdCMEg4QVhGcUtBSmtJUlVMQzBFQUlRd2dEU0VISUE0aEJrRUFJUXBCQUNFUUFrQUNRQUpBQWtBQ1FBSkFJQk5Cc0IxcUtBSUFEZ1VEQUFFQ0JBVUxJQkloQnd3Q0N5QVJJUWNNQVFzZ0R5RUhDeUFIS0FJQUlRWUxJQVpGRFFBZ0JpZ0NCQ0FYS0FJRVJ3MEFRUUVoRUNBR0tBSUFRUVZMRFFBZ0JpQVRRYlFkYWkwQUFDSUhRUUowYWlnQ2hBRWlDa0VRZGlFTUlBWWdCMEg4QVhGcUtBSmtJU1lMSUN3dkFkSUJJVzBnTEM4QjBBRWhMQ0FOSVFjZ0RpRUdBa0FDZndKQUFuOENRQUpBQWtBQ1FBSkFBa0FDUUNBVFFiQWhhaWdDQUE0RkF3QUJBZ1FGQ3lBU0lRY01BZ3NnRVNFSERBRUxJQThoQndzZ0J5Z0NBQ0VHQ3lBR1JRMEFJQVlvQWdRZ0Z5Z0NCRWNOQUNBR0tBSUFRUVZORFFFTUF3c2dEU0VISUE0aEJnSkFBa0FDUUFKQUFrQUNRQ0FUUWJBbGFpZ0NBQTRGQXdBQkFnUUZDeUFTSVFjTUFnc2dFU0VIREFFTElBOGhCd3NnQnlnQ0FDRUdDeUFHUlEwQUlBWW9BZ1FnRnlnQ0JFY05BQ0FHS0FJQVFRVkxEUU1nQmlBVFFiUWxhaTBBQUNJVFFRSjBha0dFQVdvTUFnc2dFQ0F1Y2cwQ0RBUUxJQVlnRTBHMElXb3RBQUFpRTBFQ2RHcEJoQUZxQ3lFSElBWWdFMEg4QVhGcUtBSmtJUkFnQnlnQ0FBd0JDMEYvSVJCQkFBc2hCaUFjSUNaR0loTWdGU0FjUmlJSGFpQVFJQnhHYWtFQlJ3UkFJQXdnQ0NBTVFSQjBRUkIxSWd3Z0NFRVFkRUVRZFNJSFNpSUlHeUlUSUFjZ0RDQUhJQWNnREVvYklBZ2JJZ2dnQmtFUWRTSUhJQWNnQ0VnYklCTkJFSFJCRUhVZ0IwZ2JJUWdnQ2lBSklBcEJFSFJCRUhVaUNpQUpRUkIwUVJCMUlnZEtJZ2tiSWd4Qi8vOERjU0FISUFvZ0J5QUhJQXBLR3lBSkd5SUhJQVpCRUhSQkVIVWlCaUFHSUFkSUd5QU1RUkIwUVJCMUlBWklHeUVKREFFTElBa2dDaUFIR3lFSklBZ2dEQ0FIR3lFSUlBY05BQ0FURFFBZ0JrRVFkaUVJSUFZaENRc2dDU0FzYWlJR1FSQjBRUkIxUVlCQWEwSC8vd0JMRFE0Z0NDQnRhaUlIUVJCMFFSQjFRWUFRYWtIL0gwc05EZ0pBSUJjQ2Z3SkFBa0FDUUFKQUlHd09CQUFCQWdNRkN5QWRJQVk3QVlRQklCMGdCenNCaGdFZ0hTQUdPd0dJQVNBZElBYzdBWW9CSUIwZ0Jqc0JqQUVnTlNBSE93R09BU0JUREFNTElCY2dHa0VCZENBa2FpSUlRUUowYWlJSklBYzdBWVlCSUFrZ0Jqc0JoQUVnQ0VFQmNnd0NDeUFYSUJvZ0pHb2lDRUVDZEdvaUNTQUhPd0dHQVNBSklBWTdBWVFCSUFoQkFtb01BUXNnR2lBa2FndEJBblJxSWdnZ0J6c0JoZ0VnQ0NBR093R0VBUXNnR2tFQmFpSWFJQ0pHRFFFZ0pTZ0N3QUVoSEF3QUN3QUxJQ0ZCQVdvaUlVRUVSdzBBQzBFQUlRWURRQ0FmSUJjZ0JrRUNkQ0lKYWlnQ2REWUMyQU1nQmtFQlMwRURkQ0VISUFaQkEzUkJDSEVoQ0FKQUFrQUNRQUpBQWtBZ0NTQVdhaWdDc0FFT0F3QUJBZ01MSUI5QkVHb2dGeUFHUVFSMGFrR0VBV29nSDBIWUEyb2dIaUFaSUFnZ0IwRUlRUWdRREF3REN5QWZRUkJxSWdrZ0Z5QUdRUVIwYWlJS1FZUUJhaUFmUWRnRGFpSU1JQjRnR1NBSUlBZEJDRUVFRUF3Z0NTQUtRWXdCYWlBTUlCNGdHU0FJSUFkQkJISkJDRUVFRUF3TUFnc2dIMEVRYWlJSklCY2dCa0VFZEdvaUNrR0VBV29nSDBIWUEyb2lEQ0FlSUJrZ0NDQUhRUVJCQ0JBTUlBa2dDa0dJQVdvZ0RDQWVJQmtnQ0VFRWNpQUhRUVJCQ0JBTURBRUxJQjlCRUdvaUNTQVhJQVpCQkhScUlncEJoQUZxSUI5QjJBTnFJZ3dnSGlBWklBZ2dCMEVFUVFRUURDQUpJQXBCaUFGcUlBd2dIaUFaSUFoQkJISWlEU0FIUVFSQkJCQU1JQWtnQ2tHTUFXb2dEQ0FlSUJrZ0NDQUhRUVJ5SWdkQkJFRUVFQXdnQ1NBS1FaQUJhaUFNSUI0Z0dTQU5JQWRCQkVFRUVBd0xJQVpCQVdvaUJrRUVSdzBBQ3d3TUMwRi9JUXBCZnlFVlFRQWhCa0VBSVFoQkFBc2hCeUFKSUJWR0lnOGdDU0FLUm1wQkFVY0VRQ0FJSUJNZ0NFRVFkRUVRZFNJS0lCTkJFSFJCRUhVaUNFb2lEeHNpR2lBSUlBb2dDQ0FJSUFwS0d5QVBHeUlLSUFkQkVIVWlDQ0FJSUFwSUd5QWFRUkIwUVJCMUlBaElHeUVJSUFZZ0RDQUdRUkIwUVJCMUlnb2dERUVRZEVFUWRTSUdTaUlNR3lJUFFmLy9BM0VnQmlBS0lBWWdCaUFLU2hzZ0RCc2lDaUFIUVJCMFFSQjFJZ1lnQmlBS1NCc2dEMEVRZEVFUWRTQUdTQnNoQmd3Q0N5QVBEUUVnQjBFUWRpRUlJQWNoQmd3QkN5QVRJUWdnRENFR0N5QUdJQkZxSWdkQkVIUkJFSFZCZ0VCclFmLy9BRXNOQnlBSUlCSnFJZ2hCRUhSQkVIVkJnQkJxUWY4ZlN3MEhJQWxCRUVzTkJ5QUFLQUxJQ1NBSlFRSjBhaWdDQUNJR1JRMEhJQVlvQWhSQkFra05CeUFHS0FJQUloSkZEUWNnRnlBSU93R3lBU0FYSUFjN0FiQUJJQmNnRWpZQ2RDQVhJQWsyQW1RZ0Z5QVNOZ0o4SUJjZ0NUWUNiQ0FYSUJjb0FyQUJJZ1kyQXF3QklCY2dCallDcUFFZ0Z5QUdOZ0trQVNBWElBWTJBcEFCSUJjZ0JqWUNqQUVnRnlBR05nS0lBU0FYSUFZMkFvUUJJQllvQXBRQklRZ0NRQUovQW44Q1FDQVhLQUxRQVNJSFJRMEFJQWNvQWdRZ0RVY05BQ0FIS0FJQVFRVkxCRUJCQUNFY1FYOE1Bd3NnQjBHc0FXb01BUXRCQVNFVlFYOGhERUVBSVJ3Z0Z5Z0N6QUVpQjBVTkFpQUhLQUlFSUExSERRSkJBQ0VWSUFjb0FnQkJCVXNOQWlBSFFiQUJhZ3NvQWdBaEhDQUhLQUpzQ3lFTVFRQWhGUXNnRmk4QnBnRWhFU0FXTHdHa0FTRVBBa0FDUUNBSUlBeEdEUUFnQmtFUWRpRUhBbjhDUUFKQUlCY29Bc3dCSWdwRkRRQWdDaWdDQkNBTlJ3MEFJQW9vQWdCQkJVc05BU0FLS0FLOEFTSVZRUkIySVJvZ0NpZ0NjQXdDQ3lBVkRRTUxRUUFoRlVFQUlScEJmd3NoQ2lBSUlBbEdJZ2tnQ0NBS1JtcEJBVWNFUUNBYUlBY2dHa0VRZEVFUWRTSUpJQWRCRUhSQkVIVktJZ29iSWd3Z0JrRVFkU0lISUFrZ0J5QUhJQWxLR3lBS0d5SUpJQnhCRUhVaUJ5QUhJQWxJR3lBTVFSQjBRUkIxSUFkSUd5RUhJQlVnQmlBVlFSQjBRUkIxSWdrZ0JrRVFkRUVRZFNJR1NpSUtHeUlNUWYvL0EzRWdCaUFKSUFZZ0JpQUpTaHNnQ2hzaUNTQWNRUkIwUVJCMUlnWWdCaUFKU0JzZ0RFRVFkRUVRZFNBR1NCc2hCZ3dDQ3lBSkRRRWdDQ0FLUncwQUlCVkIvLzhEY1NBYVFSQjBjaUVHSUJvaEJ3d0JDeUFjUVJCMklRY2dIQ0VHQ3lBR0lBOXFJZ2xCRUhSQkVIVkJnRUJyUWYvL0FFc05CeUFISUJGcUlnZEJFSFJCRUhWQmdCQnFRZjhmU3cwSElBaEJFRXNOQnlBQUtBTElDU0FJUVFKMGFpZ0NBQ0lHUlEwSElBWW9BaFJCQWtrTkJ5QUdLQUlBSWdaRkRRY2dGeUFIT3dIQ0FTQVhJQWs3QWNBQklCY2dCallDZ0FFZ0Z5QUdOZ0o0SUJjZ0NEWUNjQ0FYSUFnMkFtZ2dGeUFYS0FMQUFTSUdOZ0s4QVNBWElBWTJBcmdCSUJjZ0JqWUN0QUVnRnlBR05nS2dBU0FYSUFZMkFwd0JJQmNnQmpZQ21BRWdGMEdVQVdvaUJ5QUdOZ0lBSUI4Z0VqWUMyQU1nSDBFUWFpSUdJQmRCaEFGcUlCOUIyQU5xSWdnZ0hpQVpRUUJCQUVFSVFSQVFEQ0FmSUJjb0FuZzJBdGdESUFZZ0J5QUlJQjRnR1VFSVFRQkJDRUVRRUF3TUNBdEJmeUVLUVFBTElRY2dEU0FWUmlJSklBb2dEVVpxUVFGSEJFQWdHaUFHSUJwQkVIUkJFSFVpQ1NBR1FSQjBRUkIxSWdaS0lnb2JJaG9nQmlBSklBWWdCaUFKU2hzZ0Noc2lDU0FIUVJCMUlnWWdCaUFKU0JzZ0drRVFkRUVRZFNBR1NCc2hCaUFNSUFnZ0RFRVFkRUVRZFNJSklBaEJFSFJCRUhVaUNFb2lDaHNpREVILy93TnhJQWdnQ1NBSUlBZ2dDVW9iSUFvYklnZ2dCMEVRZEVFUWRTSUhJQWNnQ0VnYklBeEJFSFJCRUhVZ0IwZ2JJUWdNQVFzZ0NRMEFJQWRCRUhZaEJpQUhJUWdMSUFnZ0Qyb2lCMEVRZEVFUWRVR0FRR3RCLy84QVN3MEVJQVlnRVdvaUNFRVFkRUVRZFVHQUVHcEIveDlMRFFRZ0RVRVFTdzBFSUFBb0FzZ0pJQTFCQW5ScUtBSUFJZ1pGRFFRZ0JpZ0NGRUVDU1EwRUlBWW9BZ0FpQ1VVTkJDQVhJQWc3QWFJQklCY2dCenNCb0FFZ0Z5QUpOZ0owSUJjZ0RUWUNaQ0FYSUFrMkFuZ2dGeUFOTmdKb0lCY2dGeWdDb0FFaUJqWUNuQUVnRnlBR05nS1lBU0FYSUFZMkFwUUJJQmNnQmpZQ2tBRWdGeUFHTmdLTUFTQVhJQVkyQW9nQklCY2dCallDaEFFZ0ZpZ0NsQUVoQ0NBV0x3R21BU0VSSUJZdkFhUUJJUThDZndKQUFrQUNRQ0FYS0FMSUFTSUhCRUFnRWlBSEtBSUVSZ1JBSUFjb0FnQkJCVTBFUUNBSEtBSzRBU0lLUVJCMklSTWdCeWdDY0NBSVJ3MEVJQW9oREF3REMwRi9JUlZCQUNFTVFRQWhFMEVBSVFwQkFDRUhJQWhCZjBZTkFnd0VDMEYvSVJWQkFDRU1RUUFoRTBFQUlRcEJBQ0VISUFoQmYwWU5BUXdEQzBGL0lSVkJBQ0VNUVFBaEUwRUFJUXBCQUNFSElBaEJmMGNOQWdzZ0RFSC8vd054SUJOQkVIUnlEQUlMSUFjb0FtZ2hGU0FIS0FLZ0FTRUhJQk1oREFzZ0JrRVFkaUVTSUFnZ0RVWWlEU0FJSUJWR2FrRUJSd1JBSUJJZ0RDQU1RUkIwUVJCMUlnd2dFa0VRZEVFUWRVZ2lEUnNpRWlBTUlBWkJFSFVpR2lBTUlBd2dHa29iSUEwYklnMGdCMEVRZFNJTUlBd2dEVWdiSUJKQkVIUkJFSFVnREVnYklSTWdCaUFLSUFwQkVIUkJFSFVpQ2lBR1FSQjBRUkIxSWdaSUlnd2JJZzFCLy84RGNTQUtJQVlnQ2lBR0lBcElHeUFNR3lJS0lBZEJFSFJCRUhVaUJpQUdJQXBJR3lBTlFSQjBRUkIxSUFaSUd3d0JDeUFTSUFkQkVIWWdEUnNoRXlBR0lBY2dEUnNMSUE5cUlnZEJFSFJCRUhWQmdFQnJRZi8vQUVzTkJDQVJJQk5xSWdwQkVIUkJFSFZCZ0JCcVFmOGZTdzBFSUFoQkVFc05CQ0FBS0FMSUNTQUlRUUowYWlnQ0FDSUdSUTBFSUFZb0FoUkJBa2tOQkNBR0tBSUFJZ1pGRFFRZ0Z5QUtPd0hDQVNBWElBYzdBY0FCSUJjZ0JqWUNnQUVnRnlBR05nSjhJQmNnQ0RZQ2NDQVhJQWcyQW13Z0Z5QVhLQUxBQVNJR05nSzhBU0FYSUFZMkFyZ0JJQmNnQmpZQ3RBRWdGeUFHTmdLd0FTQVhJQVkyQXF3QklCY2dCallDcUFFZ0YwR2tBV29pQnlBR05nSUFJQjhnQ1RZQzJBTWdIMEVRYWlJR0lCZEJoQUZxSUI5QjJBTnFJZ2dnSGlBWlFRQkJBRUVRUVFnUURDQWZJQmNvQW53MkF0Z0RJQVlnQnlBSUlCNGdHVUVBUVFoQkVFRUlFQXdNQlF0QmZ5RUhRUUFMSVFZZ0VDQVNSaUlNSUJFZ0VrWWlDbW9nQnlBU1JtcEJBVWNFUUNBSklCb2dDVUVRZEVFUWRTSUpJQnBCRUhSQkVIVWlCMG9pQ2hzaURDQUhJQWtnQnlBSElBbEtHeUFLR3lJSklBWkJFSFVpQnlBSElBbElHeUFNUVJCMFFSQjFJQWRJR3lFYUlCVWdDQ0FWUVJCMFFSQjFJZ2tnQ0VFUWRFRVFkU0lIU2lJSUd5SUtRZi8vQTNFZ0J5QUpJQWNnQnlBSlNoc2dDQnNpQnlBR1FSQjBRUkIxSWdZZ0JpQUhTQnNnQ2tFUWRFRVFkU0FHU0JzaENBd0JDeUFJSUJVZ0Noc2hDQ0FhSUFrZ0Noc2hHaUFLRFFBZ0RBMEFJQVpCRUhZaEdpQUdJUWdMSUFnZ0Uyb2lIRUVRZEVFUWRVR0FRR3RCLy84QVN3MEJJQThnR21vaURFRVFkRUVRZFVHQUVHcEIveDlMRFFFTElCSkJFRXNOQUNBQUtBTElDU0FTUVFKMGFpZ0NBQ0lHUlEwQUlBWW9BaFJCQWtrTkFDQUdLQUlBSWdkRkRRQWdEU0FNT3dIQ0FTQU5JQnc3QWNBQklBMGdCellDZENBTklCSTJBbVFnRFNBSE5nS0FBU0FOSUFjMkFud2dEU0FITmdKNElBMGdFallDY0NBTklCSTJBbXdnRFNBU05nSm9JQTBnRFNnQ3dBRWlCallDdkFFZ0RTQUdOZ0s0QVNBTklBWTJBclFCSUEwZ0JqWUNzQUVnRFNBR05nS3NBU0FOSUFZMkFxZ0JJQTBnQmpZQ3BBRWdEU0FHTmdLZ0FTQU5JQVkyQXB3QklBMGdCallDbUFFZ0RTQUdOZ0tVQVNBTklBWTJBcEFCSUEwZ0JqWUNqQUVnRFNBR05nS0lBU0FOSUFZMkFvUUJJQjhnQnpZQzJBTWdIMEVRYWlBTlFZUUJhaUFmUWRnRGFpQWVJQmxCQUVFQVFSQkJFQkFNREFFTFFRRWhCZ3dEQ3lBT0tBTEVBVUVCU3cwQUlBNG9BZ0FFUUNBcktBSUFJZ3dnS2lBcUlDc29BZ1FpQ1hBaUJtc2lCMEVJZEdvZ0JrRUVkR29oRGlBSlFRUjBJUW9nQ1VFQ2RFSDgvLy8vQTNFaERTQUdRUU4wSVJJZ0t5Z0NDQ0FKYkNJUlFRaDBJUThnQjBFR2RDRVRRUUFoR2dOQUlBNGdHa0VDZENJR1FmQXBhaWdDQUNJSElBcHNhaUFHUWJBcGFpZ0NBQ0lHYWlFSUlCOUJFR29nQjBFRWRHb2dCbW9oQmdKQUlCWWdHa0VHZEdvaUJ5Z0N5QUlpSEVILy8vOEhSd1JBSUFjb0Fzd0NJUmNnQmkwQUFTRVZJQWdnSENBR0xRQUFha0hBTldvdEFBQTZBQUFnQnlnQzBBSWhIQ0FHTFFBQ0lSQWdDQ0FWSUJkcVFjQTFhaTBBQURvQUFTQUhLQUxVQWlFWElBWXRBQU1oRlNBSUlCQWdIR3BCd0RWcUxRQUFPZ0FDSUFnZ0ZTQVhha0hBTldvdEFBQTZBQU1nQnlnQzNBSWhIQ0FHTFFBUklSY2dDQ0FLYWlJSUlBY29BdGdDSUFZdEFCQnFRY0ExYWkwQUFEb0FBQ0FIS0FMZ0FpRVZJQVl0QUJJaEVDQUlJQmNnSEdwQndEVnFMUUFBT2dBQklBY29BdVFDSVJ3Z0JpMEFFeUVYSUFnZ0VDQVZha0hBTldvdEFBQTZBQUlnQ0NBWElCeHFRY0ExYWkwQUFEb0FBeUFIS0FMc0FpRWNJQVl0QUNFaEZ5QUlJQXBxSWdnZ0J5Z0M2QUlnQmkwQUlHcEJ3RFZxTFFBQU9nQUFJQWNvQXZBQ0lSVWdCaTBBSWlFUUlBZ2dGeUFjYWtIQU5Xb3RBQUE2QUFFZ0J5Z0M5QUloSENBR0xRQWpJUmNnQ0NBUUlCVnFRY0ExYWkwQUFEb0FBaUFJSUJjZ0hHcEJ3RFZxTFFBQU9nQURJQWNvQXZ3Q0lSd2dCaTBBTVNFWElBZ2dDbW9pQ0NBSEtBTDRBaUFHTFFBd2FrSEFOV290QUFBNkFBQWdCeWdDZ0FNaEZTQUdMUUF5SVJBZ0NDQVhJQnhxUWNBMWFpMEFBRG9BQVNBSEtBS0VBeUVISUFZdEFETWhCaUFJSUJBZ0ZXcEJ3RFZxTFFBQU9nQUNJQWdnQmlBSGFrSEFOV290QUFBNkFBTU1BUXNnQmlnQ0VDRWNJQWdnQmlnQ0FEWUNBQ0FJSUExQkFuUWlCMm9pQ0NBY05nSUFJQVlvQWpBaEhDQUhJQWhxSWdnZ0JpZ0NJRFlDQUNBSElBaHFJQncyQWdBTElCcEJBV29pR2tFUVJ3MEFDeUFSUVFaMElRNGdDVUVEZEVINC8vLy9CM0VpQ2tFQ2RpRU5JQXdnRDJvZ0Uyb2dFbW9oREVFUUlRZ0RRQ0FNSUE1QkFDQUlRUk5MSWdZYmFpQUlRUUowUVF4eElnZEI4Q2xxS0FJQUloSWdDbXdnQjBHd0tXb29BZ0FpQjJwcUlRa2dIMEVRYWtIQUFrR0FBaUFHRzJvZ0VrRURkQ0FIYW1vaEJnSkFJQllnQ0VFR2RHb2lCeWdDeUFJaUVrSC8vLzhIUndSQUlBY29Bc3dDSVJFZ0JpMEFBU0VQSUFrZ0VpQUdMUUFBYWtIQU5Xb3RBQUE2QUFBZ0J5Z0MwQUloRWlBR0xRQUNJUm9nQ1NBUElCRnFRY0ExYWkwQUFEb0FBU0FIS0FMVUFpRVJJQVl0QUFNaER5QUpJQklnR21wQndEVnFMUUFBT2dBQ0lBa2dEeUFSYWtIQU5Xb3RBQUE2QUFNZ0J5Z0MzQUloRWlBR0xRQUpJUkVnQ1NBS2FpSUpJQWNvQXRnQ0lBWXRBQWhxUWNBMWFpMEFBRG9BQUNBSEtBTGdBaUVQSUFZdEFBb2hHaUFKSUJFZ0VtcEJ3RFZxTFFBQU9nQUJJQWNvQXVRQ0lSSWdCaTBBQ3lFUklBa2dEeUFhYWtIQU5Xb3RBQUE2QUFJZ0NTQVJJQkpxUWNBMWFpMEFBRG9BQXlBSEtBTHNBaUVTSUFZdEFCRWhFU0FKSUFwcUlna2dCeWdDNkFJZ0JpMEFFR3BCd0RWcUxRQUFPZ0FBSUFjb0F2QUNJUThnQmkwQUVpRWFJQWtnRVNBU2FrSEFOV290QUFBNkFBRWdCeWdDOUFJaEVpQUdMUUFUSVJFZ0NTQVBJQnBxUWNBMWFpMEFBRG9BQWlBSklCRWdFbXBCd0RWcUxRQUFPZ0FESUFjb0F2d0NJUklnQmkwQUdTRVJJQWtnQ21vaUNTQUhLQUw0QWlBR0xRQVlha0hBTldvdEFBQTZBQUFnQnlnQ2dBTWhEeUFHTFFBYUlSb2dDU0FSSUJKcVFjQTFhaTBBQURvQUFTQUhLQUtFQXlFSElBWXRBQnNoQmlBSklBOGdHbXBCd0RWcUxRQUFPZ0FDSUFrZ0JpQUhha0hBTldvdEFBQTZBQU1NQVFzZ0JpZ0NDQ0VTSUFrZ0JpZ0NBRFlDQUNBSklBMUJBblFpQjJvaUNTQVNOZ0lBSUFZb0FoZ2hFaUFISUFscUlna2dCaWdDRURZQ0FDQUhJQWxxSUJJMkFnQUxJQWhCQVdvaUNFRVlSdzBBQ3d3QkN5QXJJQjlCRUdvUUR3c2dBQ2dDdkFraURpQXhhaWdDeEFGQkFVWWhDZ0ovUVFBZ0lDZ0NERUVEZENBZ0tBSVFheUlIUlEwQUdrRUJJQWRCQ0VzTkFCb2dJQ2dDQkNJR0xRQUFJQ0FvQWdnaUNVRVlhaUlhZENFSUlBY2dDV3BCQ0dzaUNVRUJUZ1JBQTBBZ0JpMEFBU0FhUVFocklocDBJQWh5SVFnZ0NVRUlTaUVNSUFaQkFXb2hCaUFKUVFocklRa2dEQTBBQ3d0QkFTQUhRUUZyZENBSVFTQWdCMnQyUndzZ0h5Z0NESEloQmdKQUFrQWdMeWdDQkVFQ2F3NEdBQUVCQVFFQUFRc2dBQ0FxTmdLd0NRc2dDaUEwYWlFMElBWkJBRWNoQ0NBQUtBS1lDU0lISUNwQkFXb2lCaUFHSUFkSkd5RUdJQUFvQXBRSklna2dLa0VDZEdvb0FnQWhDZ05BQWtBZ0J5QXFRUUZxSWlwTkJFQWdCaUVxREFFTElBa2dLa0VDZEdvb0FnQWdDa2NOQVFzTFFRRWhCa0VBSUFoQkFDQXFJQWNnS2tZYklpb2JEUUVnQ0EwQUN5QUhJQUJCckFscUtBSUFJRFJxSWdoSkRRQWdBQ0FJTmdLc0NVRUFJUVlMSUI5QjhBTnFKQUFnQmdzRVFDQUFLQUtvQ1NFSklBQW9BdGdLSVFZQ1FDQUFLQUt3Q1NJSFJRMEFJQVlnQjBFQmF5SUtUd1JBSUFvaEJnd0JDeUFBS0FLOENTRUhRUUFoRFFOQUFrQWdCeUFLUWRnQmJHb29BZ1FnQ1VjTkFDQU5RUUZxSWcwZ0FDZ0NFQ2dDTkNJSVFRb2dDRUVLU3h0SkRRQWdDaUVHREFJTElBcEJBV3NpQ2lBR1N3MEFDd3NnQUNnQ3ZBa2hEQU5BUVFBaENpQUpJQXdnQmtIWUFXeHFJZ2NvQWdSSEJFQkJBeUVNREJNTElBY29Bc1FCSWdoRkJFQkJBeUVNREJNTElBY2dDRUVCYXpZQ3hBRWdBQ2dDbUFraUNDQUdRUUZxSWdjZ0J5QUlTUnNoQnlBQUtBS1VDU0lPSUFaQkFuUnFLQUlBSVEwRFFBSkFJQWdnQmtFQmFpSUdUUVJBSUFjaEJnd0JDeUFPSUFaQkFuUnFLQUlBSUExSERRRUxDMEVBSUFZZ0JpQUlSaHNpQmcwQUMwRURJUXdNRVFzZ0FDZ0MvQW9FUUVFQUlRcEJBQ0VOQWtBZ0FDZ0NtQWtpR0VVTkFDQVlRUU54SVF3Z0FDZ0N2QWtoQjBFQUlRa2dHRUVCYTBFRFR3UkFRUUFoQmlBWVFYeHhJZ2toRWdOQUlBMGdCeUFHUWRnQmJHb29Bc1FCUVFCSGFpQUhJQVpCQVhKQjJBRnNhaWdDeEFGQkFFZHFJQWNnQmtFQ2NrSFlBV3hxS0FMRUFVRUFSMm9nQnlBR1FRTnlRZGdCYkdvb0FzUUJRUUJIYWlFTklBWkJCR29oQmlBU1FRUnJJaElOQUFzTElBeEZEUUFEUUNBTklBY2dDVUhZQVd4cUtBTEVBVUVBUjJvaERTQUpRUUZxSVFrZ0RFRUJheUlNRFFBTEMwRUJJUVlnRFNBWVJnMFBRUUFoREF3UkMwRUFJUXBCQVNFR0lBQW9BcXdKSUFBb0FwZ0pSZzBPUVFBaERBd1FDeUFIS0FJUUlRWUxJQVpCQVVjTkFDQUhLQUlZRFFBZ0MwRUFOZ0xzQVNBTFFkQUJhaUFMUWV3QmFoQUNJUVlDUUFKQUlBc29BdXdCUVg5R0JFQWdCa1VOQVF3Q0N5QUdSUTBCQzBFQklRWU1BZ3NnQ0NnQ0NFVU5BQ0FMUVFBMkF1d0JJQXRCMEFGcUlBdEI3QUZxRUFJaEJnSkFJQXNvQXV3QlFYOUdCRUFnQmcwQ0RBRUxJQVpGRFFFTFFRRWhCZ3dCQ3lBSUtBSkVCRUJCQVNFR0lBdEIwQUZxSUF0QnpBRnFFQUlOQVFzZ0N5Z0MxQUVoQmdKQUlBc29BdHdCUVFOMElnd2dDeWdDNEFFaURtc2lDRUVnVGdSQUlBWW9BQUFpQ0VFWWRDQUlRUWgwUVlDQS9BZHhjaUFJUVFoMlFZRCtBM0VnQ0VFWWRuSnlJUWtnQ3lnQzJBRWlDRVVOQVNBSklBaDBJQVl0QUFSQkNDQUlhM1p5SVFrTUFRc2dDRUVCU0FSQVFRQWhDUXdCQ3lBR0xRQUFJQXNvQXRnQklnMUJHR29pTW5RaENTQUlJQTFxUVFocklnMUJBVWdOQUFOQUlBWXRBQUVnTWtFSWF5SXlkQ0FKY2lFSklBMUJDRW9oQ0NBR1FRRnFJUVlnRFVFSWF5RU5JQWdOQUFzTElBc2dEa0VCYWlJSU5nTGdBVUYvSVFZZ0NDQU1UUVJBSUFzZ0N5Z0MwQUVnQ0VFRGRtbzJBdFFCSUFsQkgzWWhCZ3NnQmtGL1JpRU5DeUFHSUExeURRQWdBQ2dDL0FrTkFDQUtSUTBBSUFvb0FqUWdCeWdDTkVjTkFDQUtLQUk0SUFjb0FqaEhEUUFnQ2lnQ1dDQUhLQUpZUmcwQkN5QUFRUUEyQW9BS0RBRUxJQUFvQXNRSklnbEZEUUFnQUVFQk5nS0FDaUFBS0FMZ0NTRU1BMEJCQUNFR1FmLy8vLzhISVFkQkFDRUtBMEFnQ1NBS1FTaHNhaUlJS0FJWUJFQWdDQ0FHSUFnb0FoQWlDQ0FIU0NJT0d5RUdJQWdnQnlBT0d5RUhDeUFLUVFGcUlnb2dERTBOQUNBR1JRMENJQUFvQXRBSklBQW9BdFFKSWdoQkJIUnFJZ2NnQmlnQ0FEWUNBQ0FISUFZb0FpUTJBZ3dnQnlBR0tBSWNOZ0lFSUFjZ0JpZ0NJRFlDQ0NBQUlBaEJBV28yQXRRSlFRQWhDaUFHUVFBMkFoZ2dCaWdDRkNFSVFRQWhCa0gvLy8vL0J5RUhJQWdOQUFzZ0FDQUFLQUx3Q1VFQmF6WUM4QWtNQUFzQUN5QUFJQUFvQWdnMkFnQkJBaUVNUVFBaE1rRUFJUW9NQ1FzZ0FFS0Fnb0NBZ0FRM0FnUkJBQ0VLSUFCQkFEWUN0Qm9nQUVJQU53SU1EQWdMSUF0QkNHb2dDMEhzQVdvUUFnMEFJQXNvQXV3QklnWkJIMHNOQUNBTElBWkJBV28yQWxBZ0MwRUlhaUFMUWV3QmFoQUNEUUFnQ3lnQzdBRkJIMHNOQUNBTEtBSU1JUVlDUUNBTEtBSVVRUU4wSWd3Z0N5Z0NHQ0lPYXlJSVFTQk9CRUFnQmlnQUFDSUhRUmgwSUFkQkNIUkJnSUQ4QjNGeUlBZEJDSFpCZ1A0RGNTQUhRUmgyY25JaEJ5QUxLQUlRSWdoRkRRRWdCeUFJZENBR0xRQUVRUWdnQ0d0MmNpRUhEQUVMSUFoQkFVZ0VRRUVBSVFjTUFRc2dCaTBBQUNBTEtBSVFJZ2xCR0dvaURYUWhCeUFJSUFscVFRaHJJZ3BCQVVnTkFBTkFJQVl0QUFFZ0RVRUlheUlOZENBSGNpRUhJQXBCQ0VvaENDQUdRUUZxSVFZZ0NrRUlheUVLSUFnTkFBc0xJQXNnRGtFQmFpSUpOZ0lZSUFzZ0NVRUhjU0lJTmdJUUlBa2dERXNOQUNBTElBc29BZ2dpRWlBSlFRTjJhaUlHTmdJTUlBZEJBRWdOQUFKQUlBd2dDV3NpQ1VFZ1RnUkFJQVlvQUFBaUIwRVlkQ0FIUVFoMFFZQ0EvQWR4Y2lBSFFRaDJRWUQrQTNFZ0IwRVlkbkp5SVFjZ0NFVU5BU0FISUFoMElBWXRBQVJCQ0NBSWEzWnlJUWNNQVFzZ0NVRUJTQVJBUVFBaEJ3d0JDeUFHTFFBQUlBaEJHSElpRFhRaEJ5QUlJQWxxUVFocklncEJBVWdOQUFOQUlBWXRBQUVnRFVFSWF5SU5kQ0FIY2lFSElBcEJDRW9oQ0NBR1FRRnFJUVlnQ2tFSWF5RUtJQWdOQUFzTElBc2dEa0VEYWlJR05nSVlJQXNnQmtFSGNUWUNFQ0FHSUF4TERRQWdDeUFTSUFaQkEzWnFOZ0lNSUFkQi8vLy8vM3RMRFFBZ0MwRUFOZ0xRQVNBTFFRaHFJQXRCMEFGcUVBSWhCeUFMS0FMUUFTSUdRWDlHRFFBZ0J3MEFJQVpCQVdwQkFYWWlCMEVBSUFkcklBWkJBWEViUVJwcUlnWkJNMHNOQUNBTElBWTJBbFFnQzBFQU5nTFFBU0FMUVFocUlBdEIwQUZxRUFJaEJ5QUxLQUxRQVNJR1FYOUdEUUFnQncwQUlBWkJBV3BCQVhZaUIwRUFJQWRySUFaQkFYRWJRUnBxUVROTERRQWdDMEVBTmdMUUFTQUxRUWhxSUF0QjBBRnFFQUloQnlBTEtBTFFBU0lHUVg5R0RRQWdCdzBBSUFaQkFXcEJBWFlpQjBFQUlBZHJJQVpCQVhFYklnWkJER3BCR0VzTkFDQUxJQVkyQWxnZ0N5Z0NEQ0VHQWtBZ0N5Z0NGRUVEZENJSUlBc29BaGdpREdzaUNVRWdUZ1JBSUFZb0FBQWlCMEVZZENBSFFRaDBRWUNBL0FkeGNpQUhRUWgyUVlEK0EzRWdCMEVZZG5KeUlRY2dDeWdDRUNJSlJRMEJJQWNnQ1hRZ0JpMEFCRUVJSUFscmRuSWhCd3dCQ3lBSlFRRklCRUJCQUNFSERBRUxJQVl0QUFBZ0N5Z0NFQ0lLUVJocUlnMTBJUWNnQ1NBS2FrRUlheUlLUVFGSURRQURRQ0FHTFFBQklBMUJDR3NpRFhRZ0IzSWhCeUFLUVFoS0lRa2dCa0VCYWlFR0lBcEJDR3NoQ2lBSkRRQUxDeUFMSUF4QkFXb2lDallDR0NBTElBcEJCM0VpQ1RZQ0VDQUlJQXBKRFFBZ0N5QUhRUjkyTmdKY0lBc2dDeWdDQ0NJT0lBcEJBM1pxSWdZMkFnd0NRQ0FJSUFwcklncEJJRTRFUUNBR0tBQUFJZ2RCR0hRZ0IwRUlkRUdBZ1B3SGNYSWdCMEVJZGtHQS9nTnhJQWRCR0haeWNpRUhJQWxGRFFFZ0J5QUpkQ0FHTFFBRVFRZ2dDV3QyY2lFSERBRUxJQXBCQVVnRVFFRUFJUWNNQVFzZ0JpMEFBQ0FKUVJoeUlnMTBJUWNnQ1NBS2FrRUlheUlLUVFGSURRQURRQ0FHTFFBQklBMUJDR3NpRFhRZ0IzSWhCeUFLUVFoS0lRa2dCa0VCYWlFR0lBcEJDR3NoQ2lBSkRRQUxDeUFMSUF4QkFtb2lDallDR0NBTElBcEJCM0VpQ1RZQ0VDQUlJQXBKRFFBZ0N5QUhRUjkyTmdKZ0lBc2dEaUFLUVFOMmFpSUdOZ0lNQWtBZ0NDQUtheUlLUVNCT0JFQWdCaWdBQUNJSFFSaDBJQWRCQ0hSQmdJRDhCM0Z5SUFkQkNIWkJnUDREY1NBSFFSaDJjbkloQnlBSlJRMEJJQWNnQ1hRZ0JpMEFCRUVJSUFscmRuSWhCd3dCQ3lBS1FRRklCRUJCQUNFSERBRUxJQVl0QUFBZ0NVRVljaUlOZENFSElBa2dDbXBCQ0dzaUNrRUJTQTBBQTBBZ0JpMEFBU0FOUVFocklnMTBJQWR5SVFjZ0NrRUlTaUVKSUFaQkFXb2hCaUFLUVFocklRb2dDUTBBQ3dzZ0N5QU1RUU5xSWdZMkFoZ2dDeUFHUVFkeElnazJBaEFnQmlBSVN3MEFJQXNnQjBFZmRqWUNaQ0FMSUE0Z0JrRURkbW8yQWd3Q1FDQUlJQVpySWdaQkFXdEJIa3NOQUNBR0lBbHFRUWhySWdaQkFVZ05BQU5BSUFaQkNFb2hCeUFHUVFocklRWWdCdzBBQ3dzZ0N5QU1JQWxyUVF0cUlnWTJBaGdnQ3lBR1FRZHhOZ0lRSUFZZ0NFMEVRQ0FMSUE0Z0JrRURkbW8yQWd3TElBQWdDeWdDSUNJSFFRSjBhaUlHS0FLVUFTSUlEUUVnQmtISUFCQUlJZ28yQXBRQklBcEZEUU1NQWdzZ0N5Z0NOQkFFUVFBaENpQUxRUUEyQWpRZ0N5Z0NPQkFFSUF0QkFEWUNPQ0FMS0FJOEVBUWdDMEVBTmdJOElBc29Ba3dRQkVFRElRd01CZ3NDUUNBSElBQW9BZ1JIRFFBZ0N5Z0NKQ0FBS0FJSVJnMEFJQUJCZ1FJMkFnUUxJQWdvQWhRUUJDQUdLQUtVQVVFQU5nSVVJQVlvQXBRQktBSVlFQVFnQmlnQ2xBRkJBRFlDR0NBR0tBS1VBU2dDSEJBRUlBWW9BcFFCUVFBMkFod2dCaWdDbEFFb0Fpd1FCQ0FHS0FLVUFVRUFOZ0lzSUFZb0FwUUJJUW9MSUFvZ0MwRWdha0hJQUJBSEdndEJBQ0VLUVFBaERBd0RDeUFMS0FLUUFSQUVRUUFoQ2lBTFFRQTJBcEFCSUFzb0Fyd0JFQVJCQXlFTURBSUxJQUFnQmpZQ25Ba2dBQ2dDdkFraERrRUFJU0pCQUNFNUl3QkJzQUZySWcwa0FDQXJLQUlJSWhFRVFDQXJLQUlFSWg5QkJuUWhTeUFmUVRCc0lVd2dIMEVGZENFZ0lCOUJVR3doTENBUklCOXNJZ1pCQm5RaFRTQUdRUWgwSVU1QkFDQWZRUU4wSWhwckloZEJBWFFoS2tFQUlCOUJCSFFpTm1zaUkwRUNkQ0ZQSUNOQkFYUWhMZ05BQWtBZ0RpZ0NDQ0lHUVFGR0RRQUNRQUpBQWtBQ1FDQU9LQUxJQVNJVVJRUkFRUUVoQnd3QkMwRUZJUWNnQmtFQ1J3MEFRUVZCQVNBT0tBSUVJaElnRkNnQ0JFWWJJUWNnRGlnQ3pBRWlDQTBCUVFBaENBd0RDeUFPS0FMTUFTSUlSUVJBUVFBaENBd0RDeUFHUVFKSERRRWdEaWdDQkNFU0N5QVNJQWdvQWdSSERRRUxJQWRCQW5JaEJ3c0Nmd0pBQW44Z0IwRUNjU0kvQkVBQ1FDQU9LQUlBUVFWTkJFQWdDQ2dDQUVFR1NRMEJDeUFOUVFRMkFrQWdEVUVFTmdKSUlBMUJCRFlDT0NBTlFRUTJBakFNQXd0QkFpRU1RUUloRWdKQUlBNHZBUndOQUNBSUx3RXdEUUJCQVNFU0lBNG9BblFnQ0NnQ2ZFY05BQ0FPTGdHRUFTQUlMZ0dzQVdzaUJpQUdRUjkxSWdacUlBWnpRUU5MRFFBZ0RpNEJoZ0VnQ0M0QnJnRnJJZ1lnQmtFZmRTSUdhaUFHYzBFRFN5RVNDeUFOSUJJMkFqQUNRQ0FPTHdFZURRQWdDQzhCTWcwQVFRRWhEQ0FPS0FKMElBZ29BbnhIRFFBZ0RpNEJpQUVnQ0M0QnNBRnJJZ1lnQmtFZmRTSUdhaUFHYzBFRFN3MEFJQTR1QVlvQklBZ3VBYklCYXlJR0lBWkJIM1VpQm1vZ0JuTkJBMHNoREFzZ0RTQU1OZ0k0UVFJaEUwRUNJUndDUUNBT0x3RWtEUUFnQ0M4Qk9BMEFRUUVoSENBT0tBSjRJQWdvQW9BQlJ3MEFJQTR1QVpRQklBZ3VBYndCYXlJR0lBWkJIM1VpQm1vZ0JuTkJBMHNOQUNBT0xnR1dBU0FJTGdHK0FXc2lCaUFHUVI5MUlnWnFJQVp6UVFOTElSd0xJQTBnSERZQ1FBSkFJQTR2QVNZTkFDQUlMd0U2RFFCQkFTRVRJQTRvQW5nZ0NDZ0NnQUZIRFFBZ0RpNEJtQUVnQ0M0QndBRnJJZ1lnQmtFZmRTSUdhaUFHYzBFRFN3MEFJQTR1QVpvQklBZ3VBY0lCYXlJR0lBWkJIM1VpQm1vZ0JuTkJBMHNoRXdzZ0RTQVROZ0pJSUF3Z0VuSU5BaUFUSUJ4eURRSkJBQXdCQ3lBTlFRQTJBa0FnRFVFQU5nSklJQTFCQURZQ09DQU5RUUEyQWpCQkFBc2hFa0VCREFFTFFRRWhFa0VBQ3lFSkFrQUNRQUpBSUFkQkJIRWlRQVJBQWtBZ0RpZ0NBQ0lIUVFWTkJFQWdGQ2dDQUVFR1NRMEJDeUFOUVFRMkFuUWdEVUVFTmdLVUFTQU5RUVEyQWxRZ0RVRUVOZ0kwUVFFaEVnd0NDMEVDSVFaQkFpRWNBa0FnRGk4QkhBMEFJQlF2QVNZTkFFRUJJUndnRGlnQ2RDQVVLQUo0UncwQUlBNHVBWVFCSUJRdUFaZ0JheUlLSUFwQkgzVWlDbW9nQ25OQkEwc05BQ0FPTGdHR0FTQVVMZ0dhQVdzaUNpQUtRUjkxSWdwcUlBcHpRUU5MSVJ3TElBMGdIRFlDTkFKQUlBNHZBU0FOQUNBVUx3RXFEUUJCQVNFR0lBNG9BblFnRkNnQ2VFY05BQ0FPTGdHTUFTQVVMZ0dnQVdzaUNpQUtRUjkxSWdwcUlBcHpRUU5MRFFBZ0RpNEJqZ0VnRkM0Qm9nRnJJZ1lnQmtFZmRTSUdhaUFHYzBFRFN5RUdDeUFOSUFZMkFsUkJBaUVQUVFJaEV3SkFJQTR2QVN3TkFDQVVMd0UyRFFCQkFTRVRJQTRvQW53Z0ZDZ0NnQUZIRFFBZ0RpNEJwQUVnRkM0QnVBRnJJZ29nQ2tFZmRTSUthaUFLYzBFRFN3MEFJQTR1QWFZQklCUXVBYm9CYXlJS0lBcEJIM1VpQ21vZ0NuTkJBMHNoRXdzZ0RTQVROZ0owQWtBZ0RpOEJNQTBBSUJRdkFUb05BRUVCSVE4Z0RpZ0NmQ0FVS0FLQUFVY05BQ0FPTGdHc0FTQVVMZ0hBQVdzaUNpQUtRUjkxSWdwcUlBcHpRUU5MRFFBZ0RpNEJyZ0VnRkM0QndnRnJJZ29nQ2tFZmRTSUthaUFLYzBFRFN5RVBDeUFOSUE4MkFwUUJRUUVoRWlBSlJRMENJQVlnSEhJTkFpQVBJQk55RFFKQkFDRVNEQUlMSUExQkFEWUNkQ0FOUVFBMkFwUUJJQTFCQURZQ1ZDQU5RUUEyQWpRZ0RpZ0NBQ0VIQ3lBSFFRWkpEUUFnRFVFRE5nS2dBU0FOUW9PQWdJQXdOd0trQVNBTlFRTTJBcEFCSUExQkF6WUNjQ0FOUVFNMkFxd0JJQTFDZzRDQWdEQTNBNWdCSUExQ2c0Q0FnREEzQTRnQklBMUNnNENBZ0RBM0E0QUJJQTFDZzRDQWdEQTNBM2dnRFVLRGdJQ0FNRGNEYUNBTlFvT0FnSUF3TndOZ0lBMUNnNENBZ0RBM0ExZ2dEVUtEZ0lDQU1EY0NUQ0FOUVFNMkFrUWdEVUVETmdJOERBRUxBa0FnQjBFQlRRUkFJQTBDZndKQUlBNHZBU0FpTkEwQUlBNHZBUndOQUVFQURBRUxRUUlMSWdjMkFsQWdEUUovQWtBZ0RpOEJJaUlsRFFBZ0RpOEJIZzBBUVFBTUFRdEJBZ3NpRERZQ1dDQU5BbjhDUUNBT0x3RW9JZ2tOQUNBT0x3RWtEUUJCQUF3QkMwRUNDeUljTmdKZ0lBMENmd0pBSUE0dkFTb2lKZzBBSUE0dkFTWU5BRUVBREFFTFFRSUxJaE0yQW1oQkFpRVBJQTFCQWlBMFFRQkhRUUYwSUE0dkFTd2lNUnNpRmpZQ2NDQU5RUUlnSlVFQVIwRUJkQ0FPTHdFdUloMGJJaGsyQW5nZ0RVRUNJQWxCQUVkQkFYUWdEaThCTkNJVkd5SWVOZ0tBQVNBTlFRSWdKa0VBUjBFQmRDQU9Md0UySWk4YklpUTJBb2dCSUEwZ0RpOEJNQ0l6SURGeVFRQkhRUUYwSWdvMkFwQUJJQTBnRGk4Qk1pSWhJQjF5UVFCSFFRRjBJaTAyQXBnQklBMGdEaThCT0NJb0lCVnlRUUJIUVFGMEloczJBcUFCSUEwZ0RpOEJPaUlRSUM5eVFRQkhRUUYwSWlrMkFxZ0JRUUloQmlBT0x3RWVSUVJBUVFBaER5QU9Md0VjUVFCSFFRRjBJUVlMSUEwZ0JqWUNQQ0FOUVFJZ0R5QU9Md0VrSWpBYklnODJBa1FnRGk4QkppRTFJQTBnRUNBb2NrRUFSMEVCZENJUU5nS3NBU0FOSUNFZ0tISkJBRWRCQVhRaUtEWUNwQUVnRFNBaElETnlRUUJIUVFGMElpRTJBcHdCSUEwZ0ZTQXZja0VBUjBFQmRDSXZOZ0tNQVNBTklCVWdIWEpCQUVkQkFYUWlGVFlDaEFFZ0RTQWRJREZ5UVFCSFFRRjBJakUyQW53Z0RTQUpJQ1p5UVFCSFFRRjBJaDAyQW13Z0RTQUpJQ1Z5UVFCSFFRRjBJZ2syQW1RZ0RTQWxJRFJ5UVFCSFFRRjBJaVUyQWx3Z0RTQXdJRFZ5UVFCSFFRRjBJalEyQWt3TUFRc0Nmd0pBSUEwQ2Z3SkFBa0FDUUFKQUFrQWdCMEVDYXc0Q0FBRUNDeUFOQW44Q1FDQU9Md0VnSWlVTkFDQU9Md0VjRFFCQkFBd0JDMEVDQ3lJSE5nSlFJQTBDZndKQUlBNHZBU0lpRlEwQUlBNHZBUjROQUVFQURBRUxRUUlMSWd3MkFsZ2dEUUovQWtBZ0RpOEJLQ0lKRFFBZ0RpOEJKQTBBUVFBTUFRdEJBZ3NpSERZQ1lDQU5BbjhDUUNBT0x3RXFJaDBOQUNBT0x3RW1EUUJCQUF3QkMwRUNDeUlUTmdKb0lBMENmd0pBSUE0dkFUQWlMdzBBSUE0dkFTd05BRUVBREFFTFFRSUxJZ28yQXBBQklBMENmd0pBSUE0dkFUSWlJUTBBSUE0dkFTNE5BRUVBREFFTFFRSUxJaTAyQXBnQklBMENmd0pBSUE0dkFUZ2lLQTBBSUE0dkFUUU5BRUVBREFFTFFRSUxJaHMyQXFBQklBMENmd0pBSUE0dkFUb2lKZzBBSUE0dkFUWU5BRUVBREFFTFFRSUxJaWsyQXFnQlFRSWhHVUVDSVJZQ1FDQWxJQTR2QVN3aU0zSU5BRUVCSVJZZ0RpNEJwQUVnRGk0QmpBRnJJZ1lnQmtFZmRTSUdhaUFHYzBFRFN3MEFJQTR1QWFZQklBNHVBWTRCYXlJR0lBWkJIM1VpQm1vZ0JuTkJBMHNOQUNBT0tBSjhJQTRvQW5SSElSWUxJQTBnRmpZQ2NBSkFJQlVnRGk4QkxpSTBjZzBBUVFFaEdTQU9MZ0dvQVNBT0xnR1FBV3NpQmlBR1FSOTFJZ1pxSUFaelFRTkxEUUFnRGk0QnFnRWdEaTRCa2dGcklnWWdCa0VmZFNJR2FpQUdjMEVEU3cwQUlBNG9BbndnRGlnQ2RFY2hHUXNnRFNBWk5nSjRRUUloSkVFQ0lSNENRQ0FKSUE0dkFUUWlNWElOQUVFQklSNGdEaTRCdEFFZ0RpNEJuQUZySWdZZ0JrRWZkU0lHYWlBR2MwRURTdzBBSUE0dUFiWUJJQTR1QVo0QmF5SUdJQVpCSDNVaUJtb2dCbk5CQTBzTkFDQU9LQUtBQVNBT0tBSjRSeUVlQ3lBTklCNDJBb0FCQWtBZ0hTQU9Md0UySWpCeURRQkJBU0VrSUE0dUFiZ0JJQTR1QWFBQmF5SUdJQVpCSDNVaUJtb2dCbk5CQTBzTkFDQU9MZ0c2QVNBT0xnR2lBV3NpQmlBR1FSOTFJZ1pxSUFaelFRTkxEUUFnRGlnQ2dBRWdEaWdDZUVjaEpBc2dEU0FrTmdLSUFTQU9Md0VlRFFJZ0RpOEJIQVJBUVFJaEJpQU5RUUkyQWp3Z0RpOEJKQ0lRRFFaQkFDRVBRUUFNQnd0QkFDRUdJQTFCQURZQ1BFRUFJUTlCQUNBT0x3RWtJaEJGRFFZYURBVUxJQTBDZndKQUlBNHZBU0FpRHcwQUlBNHZBUndOQUVFQURBRUxRUUlMSWdjMkFsQWdEUUovQWtBZ0RpOEJJaUlWRFFBZ0RpOEJIZzBBUVFBTUFRdEJBZ3NpRERZQ1dDQU5BbjhDUUNBT0x3RW9JaWdOQUNBT0x3RWtEUUJCQUF3QkMwRUNDeUljTmdKZ0lBMENmd0pBSUE0dkFTb2lIUTBBSUE0dkFTWU5BRUVBREFFTFFRSUxJaE0yQW1nZ0RTQU9Md0VzSWdrZ0QzSkJBRWRCQVhRaUZqWUNjQ0FOSUE0dkFTNGlKaUFWY2tFQVIwRUJkQ0laTmdKNElBMGdEaThCTkNJeklDaHlRUUJIUVFGMEloNDJBb0FCSUEwZ0RpOEJOaUlsSUIxeVFRQkhRUUYwSWlRMkFvZ0JJQTFCQWlBSlFRQkhRUUYwSUE0dkFUQWlJUnNpQ2pZQ2tBRWdEVUVDSUNaQkFFZEJBWFFnRGk4Qk1pSTFHeUl0TmdLWUFTQU5RUUlnTTBFQVIwRUJkQ0FPTHdFNElqY2JJaHMyQXFBQklBMUJBaUFsUVFCSFFRRjBJQTR2QVRvaUVCc2lLVFlDcUFFZ0RRSi9Ba0FnRGk4QkhpSTZEUUFnRGk4QkhBMEFRUUFNQVF0QkFnc2lCallDUENBT0x3RW1CRUFnRGk4QkpDRXdEQU1MSUE0dkFTUWlNQTBDUVFBaE1FRUFEQU1MSUE0dUFZWUJJUVlnRGk0QmpnRWhDVUVDSVF3Z0RRSi9RUUlnRGk4QklDSkJJQTR2QVJ3aU8zSU5BQnBCQVNBT0xnR01BU0FPTGdHRUFXc2lCeUFIUVI5MUlnZHFJQWR6UVFOTERRQWFJQWtnQm1zaUJ5QUhRUjkxSWdkcUlBZHpRUU5MQ3lJSE5nSlFJQTR1QVlvQklSMGdEaTRCa2dFaEZRSkFJQTR2QVNJaUx5QU9Md0VlSWlWeURRQkJBU0VNSUE0dUFaQUJJQTR1QVlnQmF5SUtJQXBCSDNVaUNtb2dDbk5CQTBzTkFDQVZJQjFySWdvZ0NrRWZkU0lLYWlBS2MwRURTeUVNQ3lBTklBdzJBbGdnRGk0QmxnRWhOQ0FPTGdHZUFTRVFRUUloRXlBTkFuOUJBaUFPTHdFb0lqRWdEaThCSkNKQ2NnMEFHa0VCSUE0dUFad0JJQTR1QVpRQmF5SUtJQXBCSDNVaUNtb2dDbk5CQTBzTkFCb2dFQ0EwYXlJS0lBcEJIM1VpQ21vZ0NuTkJBMHNMSWh3MkFtQWdEaTRCbWdFaFF5QU9MZ0dpQVNFbUFrQWdEaThCS2lKRUlBNHZBU1lpVUhJTkFFRUJJUk1nRGk0Qm9BRWdEaTRCbUFGcklnb2dDa0VmZFNJS2FpQUtjMEVEU3cwQUlDWWdRMnNpQ2lBS1FSOTFJZ3BxSUFwelFRTkxJUk1MSUEwZ0V6WUNhQ0FPTGdHbUFTRXpRUUloR1VFQ0lSWUNRQ0JCSUE0dkFTd2lSWElOQUVFQklSWWdEaTRCcEFFZ0RpNEJqQUZySWdvZ0NrRWZkU0lLYWlBS2MwRURTdzBBSURNZ0NXc2lDaUFLUVI5MUlncHFJQXB6UVFOTERRQWdEaWdDZkNBT0tBSjBSeUVXQ3lBTklCWTJBbkFnRGk0QnFnRWhJUUpBSUM4Z0RpOEJMaUl3Y2cwQVFRRWhHU0FPTGdHb0FTQU9MZ0dRQVdzaUNpQUtRUjkxSWdwcUlBcHpRUU5MRFFBZ0lTQVZheUlLSUFwQkgzVWlDbW9nQ25OQkEwc05BQ0FPS0FKOElBNG9BblJISVJrTElBMGdHVFlDZUNBT0xnRzJBU0VvUVFJaEpFRUNJUjRDUUNBeElBNHZBVFFpTlhJTkFFRUJJUjRnRGk0QnRBRWdEaTRCbkFGcklnb2dDa0VmZFNJS2FpQUtjMEVEU3cwQUlDZ2dFR3NpQ2lBS1FSOTFJZ3BxSUFwelFRTkxEUUFnRGlnQ2dBRWdEaWdDZUVjaEhnc2dEU0FlTmdLQUFTQU9MZ0c2QVNFM0FrQWdSQ0FPTHdFMklrWnlEUUJCQVNFa0lBNHVBYmdCSUE0dUFhQUJheUlLSUFwQkgzVWlDbW9nQ25OQkEwc05BQ0EzSUNacklnb2dDa0VmZFNJS2FpQUtjMEVEU3cwQUlBNG9Bb0FCSUE0b0FuaEhJU1FMSUEwZ0pEWUNpQUVnRGk0QnJnRWhSMEVDSVMwZ0RRSi9RUUlnUlNBT0x3RXdJbEZ5RFFBYVFRRWdEaTRCckFFZ0RpNEJwQUZySWdvZ0NrRWZkU0lLYWlBS2MwRURTdzBBR2lCSElETnJJZ29nQ2tFZmRTSUthaUFLYzBFRFN3c2lDallDa0FFZ0RpNEJzZ0VoT2dKQUlEQWdEaThCTWlKSWNnMEFRUUVoTFNBT0xnR3dBU0FPTGdHb0FXc2lEeUFQUVI5MUlnOXFJQTl6UVFOTERRQWdPaUFoYXlJUElBOUJIM1VpRDJvZ0QzTkJBMHNoTFFzZ0RTQXROZ0tZQVNBT0xnRytBU0UrUVFJaEtTQU5BbjlCQWlBMUlBNHZBVGdpU1hJTkFCcEJBU0FPTGdHOEFTQU9MZ0cwQVdzaUR5QVBRUjkxSWc5cUlBOXpRUU5MRFFBYUlENGdLR3NpRHlBUFFSOTFJZzlxSUE5elFRTkxDeUliTmdLZ0FTQU9MZ0hDQVNGS0FrQWdSaUFPTHdFNklsSnlEUUJCQVNFcElBNHVBY0FCSUE0dUFiZ0JheUlQSUE5QkgzVWlEMm9nRDNOQkEwc05BQ0JLSURkcklnOGdEMEVmZFNJUGFpQVBjMEVEU3lFcEN5QU5JQ2syQXFnQlFRSWhEeUFOQW45QkFpQWxJRHR5RFFBYVFRRWdEaTRCaUFFZ0RpNEJoQUZySWpzZ08wRWZkU0k3YWlBN2MwRURTdzBBR2lBZElBWnJJZ1lnQmtFZmRTSUdhaUFHYzBFRFN3c2lCallDUEFKQUlDVWdRbklOQUVFQklROGdEaTRCbEFFZ0RpNEJpQUZySWlVZ0pVRWZkU0lsYWlBbGMwRURTdzBBSURRZ0hXc2lIU0FkUVI5MUloMXFJQjF6UVFOTERRQWdEaWdDZUNBT0tBSjBSeUVQQ3lBTklBODJBa1JCQWlFbElBMENmMEVDSUVJZ1VISU5BQnBCQVNBT0xnR1lBU0FPTGdHVUFXc2lIU0FkUVI5MUloMXFJQjF6UVFOTERRQWFJRU1nTkdzaUhTQWRRUjkxSWgxcUlCMXpRUU5MQ3lJME5nSk1Ba0FnTHlCQmNnMEFRUUVoSlNBT0xnR1FBU0FPTGdHTUFXc2lIU0FkUVI5MUloMXFJQjF6UVFOTERRQWdGU0FKYXlJSklBbEJIM1VpQ1dvZ0NYTkJBMHNoSlFzZ0RTQWxOZ0pjUVFJaEhVRUNJUWtDUUNBdklERnlEUUJCQVNFSklBNHVBWndCSUE0dUFaQUJheUl2SUM5QkgzVWlMMm9nTDNOQkEwc05BQ0FRSUJWckloVWdGVUVmZFNJVmFpQVZjMEVEU3cwQUlBNG9BbmdnRGlnQ2RFY2hDUXNnRFNBSk5nSmtBa0FnTVNCRWNnMEFRUUVoSFNBT0xnR2dBU0FPTGdHY0FXc2lGU0FWUVI5MUloVnFJQlZ6UVFOTERRQWdKaUFRYXlJVklCVkJIM1VpRldvZ0ZYTkJBMHNoSFFzZ0RTQWROZ0pzUVFJaEZTQU5BbjlCQWlBd0lFVnlEUUFhUVFFZ0RpNEJxQUVnRGk0QnBBRnJJaEFnRUVFZmRTSVFhaUFRYzBFRFN3MEFHaUFoSUROckloQWdFRUVmZFNJUWFpQVFjMEVEU3dzaU1UWUNmQUpBSURBZ05YSU5BRUVCSVJVZ0RpNEJ0QUVnRGk0QnFBRnJJaEFnRUVFZmRTSVFhaUFRYzBFRFN3MEFJQ2dnSVdzaUVDQVFRUjkxSWhCcUlCQnpRUU5MRFFBZ0RpZ0NnQUVnRGlnQ2ZFY2hGUXNnRFNBVk5nS0VBVUVDSVNFZ0RRSi9RUUlnTlNCR2NnMEFHa0VCSUE0dUFiZ0JJQTR1QWJRQmF5SVFJQkJCSDNVaUVHb2dFSE5CQTBzTkFCb2dOeUFvYXlJUUlCQkJIM1VpRUdvZ0VITkJBMHNMSWk4MkFvd0JBa0FnU0NCUmNnMEFRUUVoSVNBT0xnR3dBU0FPTGdHc0FXc2lFQ0FRUVI5MUloQnFJQkJ6UVFOTERRQWdPaUJIYXlJUUlCQkJIM1VpRUdvZ0VITkJBMHNoSVFzZ0RTQWhOZ0tjQVVFQ0lSQkJBaUVvQWtBZ1NDQkpjZzBBUVFFaEtDQU9MZ0c4QVNBT0xnR3dBV3NpSmlBbVFSOTFJaVpxSUNaelFRTkxEUUFnUGlBNmF5SW1JQ1pCSDNVaUptb2dKbk5CQTBzTkFDQU9LQUtBQVNBT0tBSjhSeUVvQ3lBTklDZzJBcVFCQWtBZ1NTQlNjZzBBUVFFaEVDQU9MZ0hBQVNBT0xnRzhBV3NpSmlBbVFSOTFJaVpxSUNaelFRTkxEUUFnU2lBK2F5SVFJQkJCSDNVaUVHb2dFSE5CQTBzaEVBc2dEU0FRTmdLc0FRd0ZDMEVDSVFZZ0RVRUNOZ0k4SUE0dkFTUWhFQXdDQzBFQ0N5STBOZ0pNSUEwZ0VDQTNja0VBUjBFQmRDSVFOZ0tzQVNBTklDRWdOWEpCQUVkQkFYUWlJVFlDbkFFZ0RTQWxJRE55UVFCSFFRRjBJaTgyQW93QklBMGdDU0FtY2tFQVIwRUJkQ0l4TmdKOFFRSWhDU0FOUVFJZ0tFRUFSMEVCZENBZEd5SWROZ0pzSUExQkFpQVBRUUJIUVFGMElCVWJJaVUyQWx4QkFpRVBBa0FnTUNBNmNnMEFRUUVoRHlBT0xnR1VBU0FPTGdHSUFXc2lNQ0F3UVI5MUlqQnFJREJ6UVFOTERRQWdEaTRCbGdFZ0RpNEJpZ0ZySWpBZ01FRWZkU0l3YWlBd2MwRURTdzBBSUE0b0FuZ2dEaWdDZEVjaER3c2dEU0FQTmdKRUFrQWdGU0FvY2cwQVFRRWhDU0FPTGdHY0FTQU9MZ0dRQVdzaUZTQVZRUjkxSWhWcUlCVnpRUU5MRFFBZ0RpNEJuZ0VnRGk0QmtnRnJJaFVnRlVFZmRTSVZhaUFWYzBFRFN3MEFJQTRvQW5nZ0RpZ0NkRWNoQ1FzZ0RTQUpOZ0prUVFJaEtFRUNJUlVDUUNBbUlETnlEUUJCQVNFVklBNHVBYlFCSUE0dUFhZ0JheUltSUNaQkgzVWlKbW9nSm5OQkEwc05BQ0FPTGdHMkFTQU9MZ0dxQVdzaUppQW1RUjkxSWlacUlDWnpRUU5MRFFBZ0RpZ0NnQUVnRGlnQ2ZFY2hGUXNnRFNBVk5nS0VBUUpBSURVZ04zSU5BRUVCSVNnZ0RpNEJ2QUVnRGk0QnNBRnJJaVlnSmtFZmRTSW1haUFtYzBFRFN3MEFJQTR1QWI0QklBNHVBYklCYXlJbUlDWkJIM1VpSm1vZ0puTkJBMHNOQUNBT0tBS0FBU0FPS0FKOFJ5RW9DeUFOSUNnMkFxUUJEQUlMUVFJaER5QVFDeUUxSUEwZ0R6WUNSQ0FPTHdFbUlUY2dEU0FtSUNoeVFRQkhRUUYwSWhBMkFxd0JJQTBnSVNBb2NrRUFSMEVCZENJb05nS2tBU0FOUVFJZ0wwRUFSMEVCZENBaEd5SWhOZ0tjQVNBTlFRSWdDVUVBUjBFQmRDQWRHeUlkTmdKc0lBMUJBaUFWUVFCSFFRRjBJQWtiSWdrMkFtUWdEVUVDSUNWQkFFZEJBWFFnRlJzaUpUWUNYQ0FOSURBZ01YSkJBRWRCQVhRaUx6WUNqQUVnRFNBeElEUnlRUUJIUVFGMEloVTJBb1FCSUEwZ015QTBja0VBUjBFQmRDSXhOZ0o4SUEwZ055QTFRZi8vQTNGeVFRQkhRUUYwSWpRMkFrd0xJQklOQUNBSERRQWdEQTBBSUJ3TkFDQVREUUFnRmcwQUlCa05BQ0FlRFFBZ0pBMEFJQW9OQUNBdERRQWdHdzBBSUNrTkFDQUdEUUFnRHcwQUlEUU5BQ0FsRFFBZ0NRMEFJQjBOQUNBeERRQWdGUTBBSUM4TkFDQWhEUUFnS0EwQUlCQkZEUUVMSUE0b0Fnd2hCeUFOSUE0b0FoQWlDU0FPS0FJVUlnWnFJZ3BCTXlBS1FUTklHeUlLUVFBZ0NrRUFTaHRCMEJkcUxRQUFJZ28yQWlBZ0RTQUdJQWRxSWd4Qk15QU1RVE5JR3lJTVFRQWdERUVBU2hzaUVrR1FGMm90QUFBaUREWUNIQ0FOSUJKQkEyeEJrQmhxSWhFMkFoZ2dQd1JBSUEwQ2Z5QUdJQWdvQWhRaUNFY0VRQ0FOSUFZZ0NHcEJBV3BCQVhZaUNDQUphaUlTUVRNZ0VrRXpTQnNpRWtFQUlCSkJBRW9iUWRBWGFpMEFBRFlDQ0NBTklBY2dDR29pQ0VFeklBaEJNMGdiSWdoQkFDQUlRUUJLR3lJSVFaQVhhaTBBQURZQ0JDQUlRUU5zUVpBWWFnd0JDeUFOSUFvMkFnZ2dEU0FNTmdJRUlCRUxOZ0lBQ3lCQUJFQUNRQ0FHSUJRb0FoUWlDRWNFUUNBTklBWWdDR3BCQVdwQkFYWWlCaUFKYWlJSVFUTWdDRUV6U0JzaUNFRUFJQWhCQUVvYlFkQVhhaTBBQURZQ0ZDQU5JQVlnQjJvaUJrRXpJQVpCTTBnYklnWkJBQ0FHUVFCS0d5SUdRWkFYYWkwQUFEWUNFQ0FHUVFOc1FaQVlhaUVSREFFTElBMGdDallDRkNBTklBdzJBaEFMSUEwZ0VUWUNEQXNnS3lnQ0FDQWZJRGxzSWg1QkNIUnFJQ0pCQkhScUlRbEJBQ0ViUVFNaEJ5QU5RVEJxSVE4RFFDQVBLQUlFSWdZRVFDQUpJQVlnRFNnQ0RDQU5LQUlRSUEwb0FoUWdOaEFUQ3lBUEtBSU1JZ1lFUUNBSlFRUnFJQVlnRFNnQ0dDQU5LQUljSUEwb0FpQWdOaEFUQ3lBUEtBSVVJZ1lFUUNBSlFRaHFJQVlnRFNnQ0dDQU5LQUljSUEwb0FpQWdOaEFUQ3lBUEtBSWNJZ1lFUUNBSlFReHFJQVlnRFNnQ0dDQU5LQUljSUEwb0FpQWdOaEFUQ3lBSElRd0NRQUpBQWtBZ0R5Z0NBQ0lHSUE4b0FnZ2lFVWNOQUNBR0lBOG9BaEJIRFFBZ0JpQVBLQUlZUncwQUlBWkZEUUlnRFNBYlFReHNhaUlIS0FJSUlSSWdCeWdDQkNFUUlBWkJCRWtOQVNBUVFRSjJRUUpxSVJsQkVDRVJJQWtoQndOQUFrQWdCeUFqYWlJR0xRQUFJaFFnQnkwQUFDSVRheUlJSUFoQkgzVWlDR29nQ0hNaUNDQVFUdzBBSUFjZ0xtb2lJUzBBQUNJY0lCUnJJZ29nQ2tFZmRTSUthaUFLY3lBU1R3MEFJQWNnTm1vaUpDMEFBQ0lWSUJOcklnb2dDa0VmZFNJS2FpQUtjeUFTVHcwQUFuOENRQ0FJSUJsSkJFQWdCeUFnYWlJSUxRQUFJUnNDZnlBU0lBY2dMR29pQ2kwQUFDSVdJQlJySWlnZ0tFRWZkU0lvYWlBb2Mwc0VRQ0FHSUJVZ0V5QVVhaUFjYWlJR1FRRjBhaUFXYWtFRWFrRURkam9BQUNBaElBWWdGbXBCQW1wQkFuWTZBQUFnQmlBV1FRTnNhaUFISUU5cUxRQUFRUUYwYWtFRWFrRURkZ3dCQ3lBR0lRb2dGQ0FWYWlBY1FRRjBha0VDYWtFQ2Rnc2hCaUFLSUFZNkFBQWdHeUFUYXlJR0lBWkJIM1VpQm1vZ0JuTWdFazhOQVNBSElCd2dGQ0FWYWlBVGFpSUdRUUYwYWlBYmFrRUVha0VEZGpvQUFDQWtJQVlnRzJwQkFtcEJBblk2QUFBZ0JpQWJRUU5zYWlBSElFeHFMUUFBUVFGMGFrRUVha0VEZGd3Q0N5QUdJQlFnRldvZ0hFRUJkR3BCQW1wQkFuWTZBQUFMSUFjaENDQVRJQnhxSUJWQkFYUnFRUUpxUVFKMkN5RUdJQWdnQmpvQUFBc2dCMEVCYWlFSElCRkJBV3NpRVEwQUN3d0NDd0ovSUFZRVFDQU5JQnRCREd4cUloWWhHVUVFSVJJZ0JpQVdLQUlBYWtFQmF5MEFBQ0lJUVFGcUlRcEJBQ0FJYXlFY0lBa2hCd05BQWtBZ0ZpZ0NCQ0FISUNOcUlpRXRBQUFpRkNBSExRQUFJaE5ySWdZZ0JrRWZkU0lHYWlBR2MwME5BQ0FaS0FJSUloRWdCeUF1YWlJa0xRQUFJaFVnRkdzaUJpQUdRUjkxSWdacUlBWnpUUTBBSUFjZ05tb2lLQzBBQUNJUUlCTnJJZ1lnQmtFZmRTSUdhaUFHY3lBUlR3MEFJQWdoQmlBUklBY2dMR290QUFBaUxTQVVheUlwSUNsQkgzVWlLV29nS1hOTEJFQWdKQ0FWSUJ3Z0NDQVRJQlJxUVFGcVFRRjJJQlZCQVhScklDMXFRUUYxSWdZZ0JpQUlTaHNnQmlBY1NCdHFPZ0FBSUJrb0FnZ2hFU0FLSVFZTElDRUNmeUFSSUFjZ0lHb3RBQUFpSVNBVGF5SWtJQ1JCSDNVaUpHb2dKSE5MQkVBZ0tDQVFJQndnQ0NBVElCUnFRUUZxUVFGMklCQkJBWFJySUNGcVFRRjFJaEVnQ0NBUlNCc2dFU0FjU0J0cU9nQUFJQVpCQVdvaEJndEJBQ0FHYXlJaEN5QUdJQlVnRUdzZ0V5QVVhMEVDZEdwQkJHcEJBM1VpRVNBR0lCRklHeUFSSUNGSUd5SUdJQlJxUWNBMWFpMEFBRG9BQUNBSElCTWdCbXRCd0RWcUxRQUFPZ0FBQ3lBSFFRRnFJUWNnRWtFQmF5SVNEUUFMSUE4b0FnZ2hFUXNnRVFzRVFFRUVJUklnQ1VFRWFpRUhJQTBnRzBFTWJHb2lGaUVaSUJFZ0ZpZ0NBR3BCQVdzdEFBQWlDRUVCYWlFS1FRQWdDR3NoSEFOQUFrQWdGaWdDQkNBSElDTnFJaUV0QUFBaUZDQUhMUUFBSWhOcklnWWdCa0VmZFNJR2FpQUdjMDBOQUNBWktBSUlJaEVnQnlBdWFpSWtMUUFBSWhVZ0ZHc2lCaUFHUVI5MUlnWnFJQVp6VFEwQUlBY2dObW9pS0MwQUFDSVFJQk5ySWdZZ0JrRWZkU0lHYWlBR2N5QVJUdzBBSUFnaEJpQVJJQWNnTEdvdEFBQWlMU0FVYXlJcElDbEJIM1VpS1dvZ0tYTkxCRUFnSkNBVklCd2dDQ0FUSUJScVFRRnFRUUYySUJWQkFYUnJJQzFxUVFGMUlnWWdCaUFJU2hzZ0JpQWNTQnRxT2dBQUlCa29BZ2doRVNBS0lRWUxJQ0VDZnlBUklBY2dJR290QUFBaUlTQVRheUlrSUNSQkgzVWlKR29nSkhOTEJFQWdLQ0FRSUJ3Z0NDQVRJQlJxUVFGcVFRRjJJQkJCQVhScklDRnFRUUYxSWhFZ0NDQVJTQnNnRVNBY1NCdHFPZ0FBSUFaQkFXb2hCZ3RCQUNBR2F5SWhDeUFHSUJVZ0VHc2dFeUFVYTBFQ2RHcEJCR3BCQTNVaUVTQUdJQkZJR3lBUklDRklHeUlHSUJScVFjQTFhaTBBQURvQUFDQUhJQk1nQm10QndEVnFMUUFBT2dBQUN5QUhRUUZxSVFjZ0VrRUJheUlTRFFBTEN5QVBLQUlRSWdZRVFDQUpRUWhxSVFjZ0RTQWJRUXhzYWlJV0lSbEJCQ0VTSUFZZ0ZpZ0NBR3BCQVdzdEFBQWlDRUVCYWlFS1FRQWdDR3NoSEFOQUFrQWdGaWdDQkNBSElDTnFJaUV0QUFBaUZDQUhMUUFBSWhOcklnWWdCa0VmZFNJR2FpQUdjMDBOQUNBWktBSUlJaEVnQnlBdWFpSWtMUUFBSWhVZ0ZHc2lCaUFHUVI5MUlnWnFJQVp6VFEwQUlBY2dObW9pS0MwQUFDSVFJQk5ySWdZZ0JrRWZkU0lHYWlBR2N5QVJUdzBBSUFnaEJpQVJJQWNnTEdvdEFBQWlMU0FVYXlJcElDbEJIM1VpS1dvZ0tYTkxCRUFnSkNBVklCd2dDQ0FUSUJScVFRRnFRUUYySUJWQkFYUnJJQzFxUVFGMUlnWWdCaUFJU2hzZ0JpQWNTQnRxT2dBQUlCa29BZ2doRVNBS0lRWUxJQ0VDZnlBUklBY2dJR290QUFBaUlTQVRheUlrSUNSQkgzVWlKR29nSkhOTEJFQWdLQ0FRSUJ3Z0NDQVRJQlJxUVFGcVFRRjJJQkJCQVhScklDRnFRUUYxSWhFZ0NDQVJTQnNnRVNBY1NCdHFPZ0FBSUFaQkFXb2hCZ3RCQUNBR2F5SWhDeUFHSUJVZ0VHc2dFeUFVYTBFQ2RHcEJCR3BCQTNVaUVTQUdJQkZJR3lBUklDRklHeUlHSUJScVFjQTFhaTBBQURvQUFDQUhJQk1nQm10QndEVnFMUUFBT2dBQUN5QUhRUUZxSVFjZ0VrRUJheUlTRFFBTEN5QVBLQUlZSWdaRkRRRWdDVUVNYWlFSElBMGdHMEVNYkdvaUVDRVdRUVFoRWlBR0lCQW9BZ0JxUVFGckxRQUFJZ2hCQVdvaENrRUFJQWhySVJ3RFFBSkFJQkFvQWdRZ0J5QWphaUlaTFFBQUloUWdCeTBBQUNJVGF5SUdJQVpCSDNVaUJtb2dCbk5ORFFBZ0ZpZ0NDQ0lSSUFjZ0xtb2lJUzBBQUNJVklCUnJJZ1lnQmtFZmRTSUdhaUFHYzAwTkFDQUhJRFpxSWlRdEFBQWlHeUFUYXlJR0lBWkJIM1VpQm1vZ0JuTWdFVThOQUNBSUlRWWdFU0FISUN4cUxRQUFJaWdnRkdzaUxTQXRRUjkxSWkxcUlDMXpTd1JBSUNFZ0ZTQWNJQWdnRXlBVWFrRUJha0VCZGlBVlFRRjBheUFvYWtFQmRTSUdJQVlnQ0VvYklBWWdIRWdiYWpvQUFDQVdLQUlJSVJFZ0NpRUdDeUFaQW44Z0VTQUhJQ0JxTFFBQUloa2dFMnNpSVNBaFFSOTFJaUZxSUNGelN3UkFJQ1FnR3lBY0lBZ2dFeUFVYWtFQmFrRUJkaUFiUVFGMGF5QVpha0VCZFNJUklBZ2dFVWdiSUJFZ0hFZ2Jham9BQUNBR1FRRnFJUVlMUVFBZ0Jtc2lHUXNnQmlBVklCdHJJQk1nRkd0QkFuUnFRUVJxUVFOMUloRWdCaUFSU0JzZ0VTQVpTQnNpQmlBVWFrSEFOV290QUFBNkFBQWdCeUFUSUFaclFjQTFhaTBBQURvQUFBc2dCMEVCYWlFSElCSkJBV3NpRWcwQUN3d0JDeUFHSUFjb0FnQnFRUUZyTFFBQUlnWkJBV29oQ2tFQUlBWnJJUnhCRUNFUklBa2hCd05BQWtBZ0J5QWphaUlXTFFBQUloUWdCeTBBQUNJVGF5SUlJQWhCSDNVaUNHb2dDSE1nRUU4TkFDQUhJQzVxSWhrdEFBQWlGU0FVYXlJSUlBaEJIM1VpQ0dvZ0NITWdFazhOQUNBSElEWnFJaUV0QUFBaUd5QVRheUlJSUFoQkgzVWlDR29nQ0hNZ0VrOE5BQ0FHSVFnZ0VpQUhJQ3hxTFFBQUlpUWdGR3NpS0NBb1FSOTFJaWhxSUNoelN3UkFJQmtnRlNBY0lBWWdFeUFVYWtFQmFrRUJkaUFWUVFGMGF5QWtha0VCZFNJSUlBWWdDRWdiSUFnZ0hFZ2Jham9BQUNBS0lRZ0xJQllnRkFKL0lCSWdCeUFnYWkwQUFDSVdJQk5ySWhrZ0dVRWZkU0laYWlBWmMwc0VRQ0FoSUJzZ0hDQUdJQk1nRkdwQkFXcEJBWFlnRzBFQmRHc2dGbXBCQVhVaUZpQUdJQlpJR3lBV0lCeElHMm82QUFBZ0NFRUJhaUVJQzBFQUlBaHJJaFlMSUFnZ0ZTQWJheUFUSUJSclFRSjBha0VFYWtFRGRTSVZJQWdnRlVnYklCVWdGa2diSWdocVFjQTFhaTBBQURvQUFDQUhJQk1nQ0d0QndEVnFMUUFBT2dBQUN5QUhRUUZxSVFjZ0VVRUJheUlSRFFBTEN5QU1RUUZySVFjZ0QwRWdhaUVQSUFrZ1Myb2hDVUVDSVJzZ0RBMEFDeUFPS0FJTUlRWWdEU0FPS0FJUUlna2dEaWdDRkNJS0lBNG9BaGdpREdvaUIwRXpJQWRCTTBnYklnZEJBQ0FIUVFCS0cwRUNkRUhRUFdvb0FnQWlCMm9pQ0VFeklBaEJNMGdiSWdoQkFDQUlRUUJLRzBIUUYyb3RBQUFpRWpZQ0lDQU5JQVlnQjJvaUNFRXpJQWhCTTBnYklnaEJBQ0FJUVFCS0d5SUlRWkFYYWkwQUFDSVJOZ0ljSUEwZ0NFRURiRUdRR0dvaUNEWUNHQ0EvQkVBZ0RRSi9JQW9nRGlnQ3pBRW9BaFFpRDBjRVFDQU5JQWNnRENBUGFpSVBRVE1nRDBFelNCc2lEMEVBSUE5QkFFb2JRUUowUWRBOWFpZ0NBR3BCQVdwQkFYWWlEeUFKYWlJVVFUTWdGRUV6U0JzaUZFRUFJQlJCQUVvYlFkQVhhaTBBQURZQ0NDQU5JQVlnRDJvaUQwRXpJQTlCTTBnYklnOUJBQ0FQUVFCS0d5SVBRWkFYYWkwQUFEWUNCQ0FQUVFOc1FaQVlhZ3dCQ3lBTklCSTJBZ2dnRFNBUk5nSUVJQWdMTmdJQUN5QkFCRUFDUUNBS0lBNG9Bc2dCS0FJVUlnOUhCRUFnRFNBSElBd2dEMm9pQ0VFeklBaEJNMGdiSWdoQkFDQUlRUUJLRzBFQ2RFSFFQV29vQWdCcVFRRnFRUUYySWdjZ0NXb2lDRUV6SUFoQk0wZ2JJZ2hCQUNBSVFRQktHMEhRRjJvdEFBQTJBaFFnRFNBR0lBZHFJZ1pCTXlBR1FUTklHeUlHUVFBZ0JrRUFTaHNpQmtHUUYyb3RBQUEyQWhBZ0JrRURiRUdRR0dvaENBd0JDeUFOSUJJMkFoUWdEU0FSTmdJUUN5QU5JQWcyQWd3TElDc29BZ0FnVG1vZ0hrRUdkR29nSWtFRGRHb2lCeUJOYWlFU1FRRWhIRUVBSVFZZ0RVRXdhaUVSQTBBQ1FDQVJLQUlFSWdsRkRRQUNRQ0FOS0FJUUlnZ2dCMEVCYXlJVExRQUFJZ29nQnkwQUFDSU1heUlQSUE5QkgzVWlEMm9nRDNOTkRRQWdEU2dDRkNJVklBZEJBbXN0QUFBaUR5QUtheUlVSUJSQkgzVWlGR29nRkhOTkRRQWdGU0FITFFBQkloUWdER3NpR3lBYlFSOTFJaHRxSUJ0elRRMEFJQWNDZnlBSlFRTk5CRUFnRXlBSklBMG9BZ3hxUVFGckxRQUFJZ2hCZjNNaUV5QUlRUUZxSWhVZ0RDQUthMEVDZENBVWF5QVBha0VFYWtFRGRTSUlJQWdnRlVvYklBZ2dFMGdiSWdnZ0NtcEJ3RFZxTFFBQU9nQUFJQXdnQ0d0QndEVnFMUUFBREFFTElCTWdDaUFVYWlBUFFRRjBha0VDYWtFQ2Rqb0FBQ0FNSUJSQkFYUnFJQTlxUVFKcVFRSjJDem9BQUNBTktBSVFJUWdMQWtBZ0J5QWFhaUlLUVFGckloVXRBQUFpRENBS0xRQUFJZzlySWhRZ0ZFRWZkU0lVYWlBVWN5QUlUdzBBSUEwb0FoUWlHeUFLUVFKckxRQUFJaFFnREdzaUV5QVRRUjkxSWhOcUlCTnpUUTBBSUJzZ0NpMEFBU0lUSUE5ckloQWdFRUVmZFNJUWFpQVFjMDBOQUNBS0FuOGdDVUVEVFFSQUlCVWdDU0FOS0FJTWFrRUJheTBBQUNJSVFYOXpJZ2tnQ0VFQmFpSUtJQThnREd0QkFuUWdFMnNnRkdwQkJHcEJBM1VpQ0NBSUlBcEtHeUFJSUFsSUd5SUlJQXhxUWNBMWFpMEFBRG9BQUNBUElBaHJRY0ExYWkwQUFBd0JDeUFWSUF3Z0Uyb2dGRUVCZEdwQkFtcEJBblk2QUFBZ0R5QVRRUUYwYWlBVWFrRUNha0VDZGdzNkFBQWdEU2dDRUNFSUN5QVJLQUlFSVFrQ1FDQVNRUUZySWhNdEFBQWlDaUFTTFFBQUlneHJJZzhnRDBFZmRTSVBhaUFQY3lBSVR3MEFJQTBvQWhRaUZTQVNRUUpyTFFBQUlnOGdDbXNpRkNBVVFSOTFJaFJxSUJSelRRMEFJQlVnRWkwQUFTSVVJQXhySWhzZ0cwRWZkU0liYWlBYmMwME5BQ0FTQW44Z0NVRURUUVJBSUJNZ0NTQU5LQUlNYWtFQmF5MEFBQ0lJUVg5ekloTWdDRUVCYWlJVklBd2dDbXRCQW5RZ0ZHc2dEMnBCQkdwQkEzVWlDQ0FJSUJWS0d5QUlJQk5JR3lJSUlBcHFRY0ExYWkwQUFEb0FBQ0FNSUFoclFjQTFhaTBBQUF3QkN5QVRJQW9nRkdvZ0QwRUJkR3BCQW1wQkFuWTZBQUFnRENBVVFRRjBhaUFQYWtFQ2FrRUNkZ3M2QUFBZ0RTZ0NFQ0VJQ3lBSUlCSWdHbW9pQ2tFQmF5SVRMUUFBSWd3Z0NpMEFBQ0lQYXlJVUlCUkJIM1VpRkdvZ0ZITk5EUUFnRFNnQ0ZDSVZJQXBCQW1zdEFBQWlDQ0FNYXlJVUlCUkJIM1VpRkdvZ0ZITk5EUUFnRlNBS0xRQUJJaFFnRDJzaUd5QWJRUjkxSWh0cUlCdHpUUTBBSUFvQ2Z5QUpRUU5OQkVBZ0V5QUpJQTBvQWd4cVFRRnJMUUFBSWdsQmYzTWlDaUFKUVFGcUlna2dEeUFNYTBFQ2RDQVVheUFJYWtFRWFrRURkU0lJSUFnZ0NVb2JJQWdnQ2tnYklnZ2dER3BCd0RWcUxRQUFPZ0FBSUE4Z0NHdEJ3RFZxTFFBQURBRUxJQk1nRENBVWFpQUlRUUYwYWtFQ2FrRUNkam9BQUNBUElCUkJBWFJxSUFocVFRSnFRUUoyQ3pvQUFBc0NRQ0FSS0FJa0lncEZEUUFDUUNBTktBSVFJZ2dnQnlBMmFpSUpRUUZySWhVdEFBQWlEQ0FKTFFBQUlnOXJJaFFnRkVFZmRTSVVhaUFVYzAwTkFDQU5LQUlVSWhzZ0NVRUNheTBBQUNJVUlBeHJJaE1nRTBFZmRTSVRhaUFUYzAwTkFDQWJJQWt0QUFFaUV5QVBheUlRSUJCQkgzVWlFR29nRUhOTkRRQWdDUUovSUFwQkEwMEVRQ0FWSUFvZ0RTZ0NER3BCQVdzdEFBQWlDRUYvY3lJVklBaEJBV29pR3lBUElBeHJRUUowSUJOcklCUnFRUVJxUVFOMUlnZ2dDQ0FiU2hzZ0NDQVZTQnNpQ0NBTWFrSEFOV290QUFBNkFBQWdEeUFJYTBIQU5Xb3RBQUFNQVFzZ0ZTQU1JQk5xSUJSQkFYUnFRUUpxUVFKMk9nQUFJQThnRTBFQmRHb2dGR3BCQW1wQkFuWUxPZ0FBSUEwb0FoQWhDQXNDUUNBSklCcHFJZ2xCQVdzaUZTMEFBQ0lNSUFrdEFBQWlEMnNpRkNBVVFSOTFJaFJxSUJSeklBaFBEUUFnRFNnQ0ZDSWJJQWxCQW1zdEFBQWlGQ0FNYXlJVElCTkJIM1VpRTJvZ0UzTk5EUUFnR3lBSkxRQUJJaE1nRDJzaUVDQVFRUjkxSWhCcUlCQnpUUTBBSUFrQ2Z5QUtRUU5OQkVBZ0ZTQUtJQTBvQWd4cVFRRnJMUUFBSWdoQmYzTWlDU0FJUVFGcUlnb2dEeUFNYTBFQ2RDQVRheUFVYWtFRWFrRURkU0lJSUFnZ0Nrb2JJQWdnQ1VnYklnZ2dER3BCd0RWcUxRQUFPZ0FBSUE4Z0NHdEJ3RFZxTFFBQURBRUxJQlVnRENBVGFpQVVRUUYwYWtFQ2FrRUNkam9BQUNBUElCTkJBWFJxSUJScVFRSnFRUUoyQ3pvQUFDQU5LQUlRSVFnTElCRW9BaVFoQ2dKQUlCSWdObW9pQ1VFQmF5SVZMUUFBSWd3Z0NTMEFBQ0lQYXlJVUlCUkJIM1VpRkdvZ0ZITWdDRThOQUNBTktBSVVJaHNnQ1VFQ2F5MEFBQ0lVSUF4ckloTWdFMEVmZFNJVGFpQVRjMDBOQUNBYklBa3RBQUVpRXlBUGF5SVFJQkJCSDNVaUVHb2dFSE5ORFFBZ0NRSi9JQXBCQTAwRVFDQVZJQW9nRFNnQ0RHcEJBV3N0QUFBaUNFRi9jeUlWSUFoQkFXb2lHeUFQSUF4clFRSjBJQk5ySUJScVFRUnFRUU4xSWdnZ0NDQWJTaHNnQ0NBVlNCc2lDQ0FNYWtIQU5Xb3RBQUE2QUFBZ0R5QUlhMEhBTldvdEFBQU1BUXNnRlNBTUlCTnFJQlJCQVhScVFRSnFRUUoyT2dBQUlBOGdFMEVCZEdvZ0ZHcEJBbXBCQW5ZTE9nQUFJQTBvQWhBaENBc2dDQ0FKSUJwcUlnbEJBV3NpRXkwQUFDSU1JQWt0QUFBaUQyc2lGQ0FVUVI5MUloUnFJQlJ6VFEwQUlBMG9BaFFpRlNBSlFRSnJMUUFBSWdnZ0RHc2lGQ0FVUVI5MUloUnFJQlJ6VFEwQUlCVWdDUzBBQVNJVUlBOXJJaHNnRzBFZmRTSWJhaUFiYzAwTkFDQUpBbjhnQ2tFRFRRUkFJQk1nQ2lBTktBSU1ha0VCYXkwQUFDSUpRWDl6SWdvZ0NVRUJhaUlKSUE4Z0RHdEJBblFnRkdzZ0NHcEJCR3BCQTNVaUNDQUlJQWxLR3lBSUlBcElHeUlJSUF4cVFjQTFhaTBBQURvQUFDQVBJQWhyUWNBMWFpMEFBQXdCQ3lBVElBd2dGR29nQ0VFQmRHcEJBbXBCQW5ZNkFBQWdEeUFVUVFGMGFpQUlha0VDYWtFQ2RnczZBQUFMQWtBZ0VTZ0NGQ0lKUlEwQUlBZEJCR29oRXdKQUlBMG9BaHdpQ0NBSExRQURJZ29nQnkwQUJDSU1heUlQSUE5QkgzVWlEMm9nRDNOTkRRQWdEU2dDSUNJVklBY3RBQUlpRHlBS2F5SVVJQlJCSDNVaUZHb2dGSE5ORFFBZ0ZTQUhMUUFGSWhRZ0RHc2lHeUFiUVI5MUlodHFJQnR6VFEwQUlCTUNmeUFKUVFOTkJFQWdCeUFKSUEwb0FoaHFRUUZyTFFBQUlnaEJmM01pRlNBSVFRRnFJaHNnRENBS2EwRUNkQ0FVYXlBUGFrRUVha0VEZFNJSUlBZ2dHMG9iSUFnZ0ZVZ2JJZ2dnQ21wQndEVnFMUUFBT2dBRElBd2dDR3RCd0RWcUxRQUFEQUVMSUFjZ0NpQVVhaUFQUVFGMGFrRUNha0VDZGpvQUF5QU1JQlJCQVhScUlBOXFRUUpxUVFKMkN6b0FBQ0FOS0FJY0lRZ0xBa0FnRXlBYWFpSUtRUUZySWhVdEFBQWlEQ0FLTFFBQUlnOXJJaFFnRkVFZmRTSVVhaUFVY3lBSVR3MEFJQTBvQWlBaUd5QUtRUUpyTFFBQUloUWdER3NpRXlBVFFSOTFJaE5xSUJOelRRMEFJQnNnQ2kwQUFTSVRJQTlySWhBZ0VFRWZkU0lRYWlBUWMwME5BQ0FLQW44Z0NVRURUUVJBSUJVZ0NTQU5LQUlZYWtFQmF5MEFBQ0lJUVg5eklna2dDRUVCYWlJS0lBOGdER3RCQW5RZ0Uyc2dGR3BCQkdwQkEzVWlDQ0FJSUFwS0d5QUlJQWxJR3lJSUlBeHFRY0ExYWkwQUFEb0FBQ0FQSUFoclFjQTFhaTBBQUF3QkN5QVZJQXdnRTJvZ0ZFRUJkR3BCQW1wQkFuWTZBQUFnRHlBVFFRRjBhaUFVYWtFQ2FrRUNkZ3M2QUFBZ0RTZ0NIQ0VJQ3lBU1FRUnFJUk1nRVNnQ0ZDRUpBa0FnRWkwQUF5SUtJQkl0QUFRaURHc2lEeUFQUVI5MUlnOXFJQTl6SUFoUERRQWdEU2dDSUNJVklCSXRBQUlpRHlBS2F5SVVJQlJCSDNVaUZHb2dGSE5ORFFBZ0ZTQVNMUUFGSWhRZ0RHc2lHeUFiUVI5MUlodHFJQnR6VFEwQUlCTUNmeUFKUVFOTkJFQWdFaUFKSUEwb0FoaHFRUUZyTFFBQUlnaEJmM01pRlNBSVFRRnFJaHNnRENBS2EwRUNkQ0FVYXlBUGFrRUVha0VEZFNJSUlBZ2dHMG9iSUFnZ0ZVZ2JJZ2dnQ21wQndEVnFMUUFBT2dBRElBd2dDR3RCd0RWcUxRQUFEQUVMSUJJZ0NpQVVhaUFQUVFGMGFrRUNha0VDZGpvQUF5QU1JQlJCQVhScUlBOXFRUUpxUVFKMkN6b0FBQ0FOS0FJY0lRZ0xJQWdnRXlBYWFpSUtRUUZySWhNdEFBQWlEQ0FLTFFBQUlnOXJJaFFnRkVFZmRTSVVhaUFVYzAwTkFDQU5LQUlnSWhVZ0NrRUNheTBBQUNJSUlBeHJJaFFnRkVFZmRTSVVhaUFVYzAwTkFDQVZJQW90QUFFaUZDQVBheUliSUJ0QkgzVWlHMm9nRzNOTkRRQWdDZ0ovSUFsQkEwMEVRQ0FUSUFrZ0RTZ0NHR3BCQVdzdEFBQWlDVUYvY3lJS0lBbEJBV29pQ1NBUElBeHJRUUowSUJScklBaHFRUVJxUVFOMUlnZ2dDQ0FKU2hzZ0NDQUtTQnNpQ0NBTWFrSEFOV290QUFBNkFBQWdEeUFJYTBIQU5Xb3RBQUFNQVFzZ0V5QU1JQlJxSUFoQkFYUnFRUUpxUVFKMk9nQUFJQThnRkVFQmRHb2dDR3BCQW1wQkFuWUxPZ0FBQ3dKQUlCRW9BalFpQ2tVTkFDQUhJRFpxSWdsQkJHb2hGQUpBSUEwb0Fod2lDQ0FKTFFBRElnd2dDUzBBQkNJUGF5SVRJQk5CSDNVaUUyb2dFM05ORFFBZ0RTZ0NJQ0liSUJSQkFtc3RBQUFpRXlBTWF5SVZJQlZCSDNVaUZXb2dGWE5ORFFBZ0d5QUpMUUFGSWhVZ0Qyc2lFQ0FRUVI5MUloQnFJQkJ6VFEwQUlCUUNmeUFLUVFOTkJFQWdDU0FLSUEwb0FoaHFRUUZyTFFBQUlnaEJmM01pQ1NBSVFRRnFJaHNnRHlBTWEwRUNkQ0FWYXlBVGFrRUVha0VEZFNJSUlBZ2dHMG9iSUFnZ0NVZ2JJZ2dnREdwQndEVnFMUUFBT2dBRElBOGdDR3RCd0RWcUxRQUFEQUVMSUFrZ0RDQVZhaUFUUVFGMGFrRUNha0VDZGpvQUF5QVBJQlZCQVhScUlCTnFRUUpxUVFKMkN6b0FBQ0FOS0FJY0lRZ0xBa0FnRkNBYWFpSUpRUUZySWhVdEFBQWlEQ0FKTFFBQUlnOXJJaFFnRkVFZmRTSVVhaUFVY3lBSVR3MEFJQTBvQWlBaUd5QUpRUUpyTFFBQUloUWdER3NpRXlBVFFSOTFJaE5xSUJOelRRMEFJQnNnQ1MwQUFTSVRJQTlySWhBZ0VFRWZkU0lRYWlBUWMwME5BQ0FKQW44Z0NrRURUUVJBSUJVZ0NpQU5LQUlZYWtFQmF5MEFBQ0lJUVg5eklna2dDRUVCYWlJS0lBOGdER3RCQW5RZ0Uyc2dGR3BCQkdwQkEzVWlDQ0FJSUFwS0d5QUlJQWxJR3lJSUlBeHFRY0ExYWkwQUFEb0FBQ0FQSUFoclFjQTFhaTBBQUF3QkN5QVZJQXdnRTJvZ0ZFRUJkR3BCQW1wQkFuWTZBQUFnRHlBVFFRRjBhaUFVYWtFQ2FrRUNkZ3M2QUFBZ0RTZ0NIQ0VJQ3lBU0lEWnFJZ2xCQkdvaEZDQVJLQUkwSVFvQ1FDQUpMUUFESWd3Z0NTMEFCQ0lQYXlJVElCTkJIM1VpRTJvZ0UzTWdDRThOQUNBTktBSWdJaHNnRkVFQ2F5MEFBQ0lUSUF4ckloVWdGVUVmZFNJVmFpQVZjMDBOQUNBYklBa3RBQVVpRlNBUGF5SVFJQkJCSDNVaUVHb2dFSE5ORFFBZ0ZBSi9JQXBCQTAwRVFDQUpJQW9nRFNnQ0dHcEJBV3N0QUFBaUNFRi9jeUlKSUFoQkFXb2lHeUFQSUF4clFRSjBJQlZySUJOcVFRUnFRUU4xSWdnZ0NDQWJTaHNnQ0NBSlNCc2lDQ0FNYWtIQU5Xb3RBQUE2QUFNZ0R5QUlhMEhBTldvdEFBQU1BUXNnQ1NBTUlCVnFJQk5CQVhScVFRSnFRUUoyT2dBRElBOGdGVUVCZEdvZ0UycEJBbXBCQW5ZTE9nQUFJQTBvQWh3aENBc2dDQ0FVSUJwcUlnbEJBV3NpRXkwQUFDSU1JQWt0QUFBaUQyc2lGQ0FVUVI5MUloUnFJQlJ6VFEwQUlBMG9BaUFpRlNBSlFRSnJMUUFBSWdnZ0RHc2lGQ0FVUVI5MUloUnFJQlJ6VFEwQUlCVWdDUzBBQVNJVUlBOXJJaHNnRzBFZmRTSWJhaUFiYzAwTkFDQUpBbjhnQ2tFRFRRUkFJQk1nQ2lBTktBSVlha0VCYXkwQUFDSUpRWDl6SWdvZ0NVRUJhaUlKSUE4Z0RHdEJBblFnRkdzZ0NHcEJCR3BCQTNVaUNDQUlJQWxLR3lBSUlBcElHeUlJSUF4cVFjQTFhaTBBQURvQUFDQVBJQWhyUWNBMWFpMEFBQXdCQ3lBVElBd2dGR29nQ0VFQmRHcEJBbXBCQW5ZNkFBQWdEeUFVUVFGMGFpQUlha0VDYWtFQ2RnczZBQUFMQWtBQ1FDQVJLQUlBSWdnZ0VTZ0NDQ0lNUncwQUlBZ2dFU2dDRUVjTkFDQUlJQkVvQWhoSERRQWdDRVVOQVNBSElBZ2dEU0FHUVF4c2FpSUdJQm9RSHlBU0lCRW9BZ0FnQmlBYUVCOE1BUXNnQ0FSQUlBMGdCa0VNYkdvaUNTRUtJQWdnQ1NnQ0FHcEJBV3N0QUFBaUNFRi9jeUVNSUFoQkFXb2hEd0pBSUFrb0FnUWlDQ0FISUJkcUloVXRBQUFpRkNBSExRQUFJaE5ySWhzZ0cwRWZkU0liYWlBYmMwME5BQ0FLS0FJSUloc2dCeUFxYWkwQUFDSVFJQlJySWhZZ0ZrRWZkU0lXYWlBV2MwME5BQ0FiSUFjZ0dtb3RBQUFpRmlBVGF5SVpJQmxCSDNVaUdXb2dHWE5ORFFBZ0ZTQU1JQThnRXlBVWEwRUNkQ0FXYXlBUWFrRUVha0VEZFNJSUlBZ2dEMG9iSUFnZ0RFZ2JJZ2dnRkdwQndEVnFMUUFBT2dBQUlBY2dFeUFJYTBIQU5Xb3RBQUE2QUFBZ0NTZ0NCQ0VJQ3dKQUlBZEJBV29pRkNBWGFpSWJMUUFBSWhNZ0J5MEFBU0lWYXlJUUlCQkJIM1VpRUdvZ0VITWdDRThOQUNBS0tBSUlJaEFnRkNBcWFpMEFBQ0lXSUJOckloa2dHVUVmZFNJWmFpQVpjMDBOQUNBUUlCUWdHbW90QUFBaUdTQVZheUllSUI1QkgzVWlIbW9nSG5OTkRRQWdHeUFNSUE4Z0ZTQVRhMEVDZENBWmF5QVdha0VFYWtFRGRTSUlJQWdnRDBvYklBZ2dERWdiSWdnZ0UycEJ3RFZxTFFBQU9nQUFJQlFnRlNBSWEwSEFOV290QUFBNkFBQWdDU2dDQkNFSUN5QVJLQUlBSUFrb0FnQnFRUUZyTFFBQUlnOUJmM01oRENBUFFRRnFJUThDUUNBU0lCZHFJaFV0QUFBaUZDQVNMUUFBSWhOckloc2dHMEVmZFNJYmFpQWJjeUFJVHcwQUlBb29BZ2dpR3lBU0lDcHFMUUFBSWhBZ0ZHc2lGaUFXUVI5MUloWnFJQlp6VFEwQUlCc2dFaUFhYWkwQUFDSVdJQk5ySWhrZ0dVRWZkU0laYWlBWmMwME5BQ0FWSUF3Z0R5QVRJQlJyUVFKMElCWnJJQkJxUVFScVFRTjFJZ2dnQ0NBUFNoc2dDQ0FNU0JzaUNDQVVha0hBTldvdEFBQTZBQUFnRWlBVElBaHJRY0ExYWkwQUFEb0FBQ0FKS0FJRUlRZ0xBa0FnQ0NBU1FRRnFJZ2tnRjJvaUZTMEFBQ0lVSUJJdEFBRWlFMnNpR3lBYlFSOTFJaHRxSUJ0elRRMEFJQW9vQWdnaUNDQUpJQ3BxTFFBQUlnb2dGR3NpR3lBYlFSOTFJaHRxSUJ0elRRMEFJQWdnQ1NBYWFpMEFBQ0liSUJOckloQWdFRUVmZFNJUWFpQVFjMDBOQUNBVklCUWdEQ0FQSUJNZ0ZHdEJBblFnRzJzZ0NtcEJCR3BCQTNVaUNDQUlJQTlLR3lBSUlBeElHeUlJYWtIQU5Xb3RBQUE2QUFBZ0NTQVRJQWhyUWNBMWFpMEFBRG9BQUFzZ0VTZ0NDQ0VNQ3dKQUlBeEZEUUFnRFNBR1FReHNhaUlJSVFrZ0RDQUlLQUlBYWtFQmF5MEFBQ0lNUVg5eklRb2dERUVCYWlFUEFrQWdDQ2dDQkNJTUlBZEJBbW9pRkNBWGFpSWJMUUFBSWhNZ0J5MEFBaUlWYXlJUUlCQkJIM1VpRUdvZ0VITk5EUUFnQ1NnQ0NDSVFJQlFnS21vdEFBQWlGaUFUYXlJWklCbEJIM1VpR1dvZ0dYTk5EUUFnRUNBVUlCcHFMUUFBSWhrZ0ZXc2lIaUFlUVI5MUloNXFJQjV6VFEwQUlCc2dDaUFQSUJVZ0UydEJBblFnR1dzZ0ZtcEJCR3BCQTNVaURDQU1JQTlLR3lBS0lBeEtHeUlNSUJOcVFjQTFhaTBBQURvQUFDQVVJQlVnREd0QndEVnFMUUFBT2dBQUlBZ29BZ1FoREFzQ1FDQUhRUU5xSWhRZ0Yyb2lHeTBBQUNJVElBY3RBQU1pRldzaUVDQVFRUjkxSWhCcUlCQnpJQXhQRFFBZ0NTZ0NDQ0lRSUJRZ0ttb3RBQUFpRmlBVGF5SVpJQmxCSDNVaUdXb2dHWE5ORFFBZ0VDQVVJQnBxTFFBQUloa2dGV3NpSGlBZVFSOTFJaDVxSUI1elRRMEFJQnNnQ2lBUElCVWdFMnRCQW5RZ0dXc2dGbXBCQkdwQkEzVWlEQ0FNSUE5S0d5QUtJQXhLR3lJS0lCTnFRY0ExYWkwQUFEb0FBQ0FVSUJVZ0NtdEJ3RFZxTFFBQU9nQUFJQWdvQWdRaERBc2dFU2dDQ0NBSUtBSUFha0VCYXkwQUFDSVBRWDl6SVFvZ0QwRUJhaUVQQWtBZ0VrRUNhaUlVSUJkcUloc3RBQUFpRXlBU0xRQUNJaFZySWhBZ0VFRWZkU0lRYWlBUWN5QU1UdzBBSUFrb0FnZ2lFQ0FVSUNwcUxRQUFJaFlnRTJzaUdTQVpRUjkxSWhscUlCbHpUUTBBSUJBZ0ZDQWFhaTBBQUNJWklCVnJJaDRnSGtFZmRTSWVhaUFlYzAwTkFDQWJJQW9nRHlBVklCTnJRUUowSUJscklCWnFRUVJxUVFOMUlnd2dEQ0FQU2hzZ0NpQU1TaHNpRENBVGFrSEFOV290QUFBNkFBQWdGQ0FWSUF4clFjQTFhaTBBQURvQUFDQUlLQUlFSVF3TElBd2dFa0VEYWlJSUlCZHFJaFV0QUFBaUZDQVNMUUFESWhOckloc2dHMEVmZFNJYmFpQWJjMDBOQUNBSktBSUlJZ2tnQ0NBcWFpMEFBQ0lNSUJSckloc2dHMEVmZFNJYmFpQWJjMDBOQUNBSklBZ2dHbW90QUFBaUd5QVRheUlRSUJCQkgzVWlFR29nRUhOTkRRQWdGU0FLSUE4Z0V5QVVhMEVDZENBYmF5QU1ha0VFYWtFRGRTSUpJQWtnRDBvYklBa2dDa2diSWdrZ0ZHcEJ3RFZxTFFBQU9nQUFJQWdnRXlBSmEwSEFOV290QUFBNkFBQUxBa0FnRVNnQ0VDSUtSUTBBSUEwZ0JrRU1iR29pQ0NFSklBb2dDQ2dDQUdwQkFXc3RBQUFpREVGL2N5RUtJQXhCQVdvaER3SkFJQWdvQWdRaURDQUhRUVJxSWhRZ0Yyb2lHeTBBQUNJVElBY3RBQVFpRldzaUVDQVFRUjkxSWhCcUlCQnpUUTBBSUFrb0FnZ2lFQ0FVSUNwcUxRQUFJaFlnRTJzaUdTQVpRUjkxSWhscUlCbHpUUTBBSUJBZ0ZDQWFhaTBBQUNJWklCVnJJaDRnSGtFZmRTSWVhaUFlYzAwTkFDQWJJQW9nRHlBVklCTnJRUUowSUJscklCWnFRUVJxUVFOMUlnd2dEQ0FQU2hzZ0NpQU1TaHNpRENBVGFrSEFOV290QUFBNkFBQWdGQ0FWSUF4clFjQTFhaTBBQURvQUFDQUlLQUlFSVF3TEFrQWdCMEVGYWlJVUlCZHFJaHN0QUFBaUV5QUhMUUFGSWhWckloQWdFRUVmZFNJUWFpQVFjeUFNVHcwQUlBa29BZ2dpRUNBVUlDcHFMUUFBSWhZZ0Uyc2lHU0FaUVI5MUlobHFJQmx6VFEwQUlCQWdGQ0FhYWkwQUFDSVpJQlZySWg0Z0hrRWZkU0llYWlBZWMwME5BQ0FiSUFvZ0R5QVZJQk5yUVFKMElCbHJJQlpxUVFScVFRTjFJZ3dnRENBUFNoc2dDaUFNU2hzaUNpQVRha0hBTldvdEFBQTZBQUFnRkNBVklBcHJRY0ExYWkwQUFEb0FBQ0FJS0FJRUlRd0xJQkVvQWhBZ0NDZ0NBR3BCQVdzdEFBQWlEMEYvY3lFS0lBOUJBV29oRHdKQUlCSkJCR29pRkNBWGFpSWJMUUFBSWhNZ0VpMEFCQ0lWYXlJUUlCQkJIM1VpRUdvZ0VITWdERThOQUNBSktBSUlJaEFnRkNBcWFpMEFBQ0lXSUJOckloa2dHVUVmZFNJWmFpQVpjMDBOQUNBUUlCUWdHbW90QUFBaUdTQVZheUllSUI1QkgzVWlIbW9nSG5OTkRRQWdHeUFLSUE4Z0ZTQVRhMEVDZENBWmF5QVdha0VFYWtFRGRTSU1JQXdnRDBvYklBb2dERW9iSWd3Z0UycEJ3RFZxTFFBQU9nQUFJQlFnRlNBTWEwSEFOV290QUFBNkFBQWdDQ2dDQkNFTUN5QU1JQkpCQldvaUNDQVhhaUlWTFFBQUloUWdFaTBBQlNJVGF5SWJJQnRCSDNVaUcyb2dHM05ORFFBZ0NTZ0NDQ0lKSUFnZ0ttb3RBQUFpRENBVWF5SWJJQnRCSDNVaUcyb2dHM05ORFFBZ0NTQUlJQnBxTFFBQUloc2dFMnNpRUNBUVFSOTFJaEJxSUJCelRRMEFJQlVnQ2lBUElCTWdGR3RCQW5RZ0cyc2dER3BCQkdwQkEzVWlDU0FKSUE5S0d5QUpJQXBJR3lJSklCUnFRY0ExYWkwQUFEb0FBQ0FJSUJNZ0NXdEJ3RFZxTFFBQU9nQUFDeUFSS0FJWUlncEZEUUFnRFNBR1FReHNhaUlJSVFrZ0NpQUlLQUlBYWtFQmF5MEFBQ0lHUVg5eklRb2dCa0VCYWlFTUFrQWdDQ2dDQkNJR0lBZEJCbW9pRHlBWGFpSVZMUUFBSWhRZ0J5MEFCaUlUYXlJYklCdEJIM1VpRzJvZ0czTk5EUUFnQ1NnQ0NDSWJJQThnS21vdEFBQWlFQ0FVYXlJV0lCWkJIM1VpRm1vZ0ZuTk5EUUFnR3lBUElCcHFMUUFBSWhZZ0Uyc2lHU0FaUVI5MUlobHFJQmx6VFEwQUlCVWdDaUFNSUJNZ0ZHdEJBblFnRm1zZ0VHcEJCR3BCQTNVaUJpQUdJQXhLR3lBR0lBcElHeUlHSUJScVFjQTFhaTBBQURvQUFDQVBJQk1nQm10QndEVnFMUUFBT2dBQUlBZ29BZ1FoQmdzQ1FDQUhRUWRxSWc4Z0Yyb2lGUzBBQUNJVUlBY3RBQWNpRTJzaUd5QWJRUjkxSWh0cUlCdHpJQVpQRFFBZ0NTZ0NDQ0liSUE4Z0ttb3RBQUFpRUNBVWF5SVdJQlpCSDNVaUZtb2dGbk5ORFFBZ0d5QVBJQnBxTFFBQUloWWdFMnNpR1NBWlFSOTFJaGxxSUJselRRMEFJQlVnQ2lBTUlCTWdGR3RCQW5RZ0Ztc2dFR3BCQkdwQkEzVWlCaUFHSUF4S0d5QUdJQXBJR3lJR0lCUnFRY0ExYWkwQUFEb0FBQ0FQSUJNZ0JtdEJ3RFZxTFFBQU9nQUFJQWdvQWdRaEJnc2dFU2dDR0NBSUtBSUFha0VCYXkwQUFDSU1RWDl6SVFvZ0RFRUJhaUVNQWtBZ0VrRUdhaUlQSUJkcUloVXRBQUFpRkNBU0xRQUdJaE5ySWhzZ0cwRWZkU0liYWlBYmN5QUdUdzBBSUFrb0FnZ2lHeUFQSUNwcUxRQUFJaEFnRkdzaUZpQVdRUjkxSWhacUlCWnpUUTBBSUJzZ0R5QWFhaTBBQUNJV0lCTnJJaGtnR1VFZmRTSVphaUFaYzAwTkFDQVZJQW9nRENBVElCUnJRUUowSUJacklCQnFRUVJxUVFOMUlnWWdCaUFNU2hzZ0JpQUtTQnNpQmlBVWFrSEFOV290QUFBNkFBQWdEeUFUSUFaclFjQTFhaTBBQURvQUFDQUlLQUlFSVFZTElBWWdFa0VIYWlJSUlCZHFJaE10QUFBaUR5QVNMUUFISWhSckloVWdGVUVmZFNJVmFpQVZjMDBOQUNBSktBSUlJZ1lnQ0NBcWFpMEFBQ0lKSUE5ckloVWdGVUVmZFNJVmFpQVZjMDBOQUNBR0lBZ2dHbW90QUFBaUZTQVVheUliSUJ0QkgzVWlHMm9nRzNOTkRRQWdFeUFQSUFvZ0RDQVVJQTlyUVFKMElCVnJJQWxxUVFScVFRTjFJZ1lnQmlBTVNoc2dCaUFLU0JzaUJtcEJ3RFZxTFFBQU9nQUFJQWdnRkNBR2EwSEFOV290QUFBNkFBQUxJQklnSUdvaEVpQUhJQ0JxSVFjZ0VVRkFheUVSSUJ4QkFYRWhDRUVBSVJ4QkFpRUdJQWdOQUFzZ0t5Z0NDQ0VSQzBFQUlDSkJBV29pQmlBR0lCOUdJZ1liSVNJZ0RrSFlBV29oRGlBR0lEbHFJamtnRVVrTkFBc0xJQTFCc0FGcUpBQWdBRUlBTndLb0NRSkFJQUFvQXBnSklnbEZEUUFnQ1VFRGNTRUhJQUFvQXJ3SklRaEJBQ0VHSUFsQkFXdEJBMDhFUUNBSlFYeHhJUTBEUUNBSUlBWkIyQUZzYWlJSlFRQTJBc1FCSUFsQkFEWUNCQ0FJSUFaQkFYSkIyQUZzYWlJSlFRQTJBc1FCSUFsQkFEWUNCQ0FJSUFaQkFuSkIyQUZzYWlJSlFRQTJBc1FCSUFsQkFEWUNCQ0FJSUFaQkEzSkIyQUZzYWlJSlFRQTJBc1FCSUFsQkFEWUNCQ0FHUVFScUlRWWdEVUVFYXlJTkRRQUxDeUFIUlEwQUEwQWdDQ0FHUWRnQmJHb2lDVUVBTmdMRUFTQUpRUUEyQWdRZ0JrRUJhaUVHSUFkQkFXc2lCdzBBQ3dzZ0FDZ0NFQ0VJUVFBaEJrRUJJUkVDUUNBQUtBTDBERVVOQUFOQUFrQUNRQ0FBSUFaQkZHeHFRZmdNYWlnQ0FBNEdBd0FBQUFBQkFBc2dCa0VCYWlFR0RBRUxDMEVBSVJFTEFrQUNmd0pBQWtBQ1FBSkFBa0FnQ0NnQ0VBNENBQUVDQ3lBQUtBTFFDaUlQUVFWR0JFQWdBRUlBTndLRUNpQUFLQUxzQ2lFR1FRQWhDZ3dFQ3lBQUtBS0VDaUlLSUFBb0F1d0tJZ1pORFFNZ0NpQUdheUFJS0FJVUlnZEJBWFpKRFFNZ0FDZ0NpQW9nQjJvTUJBdEJBQ0VHQW45QkFDQUFLQUxRQ2lJUFFRVkdEUUFhSUFBb0FwQUtJZ2NnQUNnQ2pBb2dBQ2dDNUFwTkRRQWFJQWdvQWd3Z0Iyb0xJUm9DZnlBSUtBSWtJZzRFUUNBQUtBTGtDaUFhYWlFR0N5QUdJQUFvQXRRS0loTkZJQVpCQUVkeGF5SVVDd1JBSUJSQkFXc2lCaUFHSUE1dUlpY2dEbXhySVJnTFFRQWhCMEVBSVFvQ1FDQU9SUTBBSUE1QkEzRWhFaUFJS0FJb0lRWkJBQ0VKSUE1QkFXdEJBMDhFUUVFQUlRd2dEa0Y4Y1NJSklRNERRQ0FHSUF4QkFuUWlEVUVNY21vb0FnQWdCaUFOUVFoeWFpZ0NBQ0FHSUExQkJISnFLQUlBSUFZZ0RXb29BZ0FnQ21wcWFtb2hDaUFNUVFScUlRd2dEa0VFYXlJT0RRQUxDeUFTUlEwQUEwQWdCaUFKUVFKMGFpZ0NBQ0FLYWlFS0lBbEJBV29oQ1NBU1FRRnJJaElOQUFzTElCUUVRQ0FLSUNkc0lRY2dDQ2dDS0NFSlFRQWhCZ05BSUFrZ0JrRUNkR29vQWdBZ0Iyb2hCeUFHUVFGcUlnWWdHRTBOQUFzTElCTkZCRUFnQ0NnQ0hDQUhhaUVIQ3lBUlJRMEJJQWdvQWlBaEJpQUFLQUw0Q2lFSUlBQWdHallDa0FvZ0FDQUFLQUxrQ2pZQ2pBb2dBQ2dDOUFvZ0JpQUlhaUlHUVI5MUlBWnhJQWRxYWlFR0RBUUxRUUFoQ2tFQUlRWWdBQ2dDMEFvaUQwRUZSd1JBSUFBb0FwQUtJUW9nQUNnQzVBb2lCaUFBS0FLTUNra0VRQ0FJS0FJTUlBcHFJUW9MSUFZZ0NtcEJBWFFnQUNnQzFBcEZheUVHQ3lBUlJRMEFJQUFnQ2pZQ2tBb2dBQ0FBS0FMa0NqWUNqQW9NQXdzZ0FFSUFOd0tNQ2tFQUlRWU1BZ3NDUUNBR0lBcE5EUUFnQmlBS2F5QUlLQUlVSWdkQkFYWk5EUUFnQUNnQ2lBb2dCMnNNQVFzZ0FDZ0NpQW9MSVFnZ0FDZ0MxQXBGQkVBZ0JpQUlhaUFBS0FMd0NpSUdRUjkxSUFaeGFpRUdEQUVMSUFBZ0NEWUNpQW9nQUNnQzhBb2hCeUFSUlFSQVFRQWhCaUFBUVFBMkFvZ0tJQUJCQUNBSGF5QUhRUjkxY1RZQ2hBb01BUXNnQUNBR05nS0VDaUFHSUFocUlBZEJIM1VnQjNGcUlRWUxBa0FnQUNnQ3BBbEZEUUFnRDBFRlJpRUhJQUFvQXJnS0lRZ2dBQ2dDdEFraENTQUFLQUs0Q1NFS0lBQW9BdVFLSVF3Z0FDZ0MxQW9FUUNBNElGUWdDQ0FNSUFZZ0J5QUtJQWtRSEF3QkN5QTRRUUFnQ0NBTUlBWWdCeUFLSUFrUUhBc2dBRUlBTndLZ0NVRUJJUXBCQVNFTURBRUxRUUFoQ2tFRElRd0xJQXhCQlhGRkRRQUxJQW9FUUNBRUlBQW9BaEFpQVNnQ05FRUVkRFlDQUNBRklBRW9BamhCQkhRMkFnQWdBQ0FBS0FMWUNTSUJRUUZxTmdMWUNTQURJQUFvQXRBSklBRkJCSFJxS0FJQU5nSUFDeUFMUWZBQmFpUUFJQXdMVEFFQ2YwRUJJUUlnQUVFQVFjUWFFQU1pQUVHMENtcEJBVFlDQUNBQVFvQ0NnSUNBQkRjQ0JDQUFRY0FRRUFnaUF6WUNzQm9nQXdSL0lBRUVRQ0FBUVFFMkFzQUpDMEVBQlVFQkN3c0x4aklhQUVHR0NBdktCV1lnSmhBR0NHVVlaUmhERUVNUVF4QkRFRU1RUXhCREVFTVFJZ2dpQ0NJSUlnZ2lDQ0lJSWdnaUNDSUlJZ2dpQ0NJSUlnZ2lDQ0lJSWdnQUFBQUFBQUFBQUdwQVNqQXFLQW9nYVRocE9Fa29TU2dwSUNrZ0NSZ0pHR2d3YURCb01HZ3dTQ0JJSUVnZ1NDQW9HQ2dZS0Jnb0dBZ1FDQkFJRUFnUVp5aG5LR2NvWnlobktHY29aeWhuS0VjWVJ4aEhHRWNZUnhoSEdFY1lSeGh1WUU1WUxsQU9VRzVZVGxBdVNBNUlEVUFOUUUxSVRVZ3RRQzFBRFRnTk9HMVFiVkJOUUUxQUxUZ3RPQTB3RFRCclNHdElhMGhyU0d0SWEwaHJTR3RJU3poTE9FczRTemhMT0VzNFN6aExPQ3N3S3pBck1Dc3dLekFyTUNzd0t6QUxLQXNvQ3lnTEtBc29DeWdMS0Fzb0FBQUFBQzlvTDJnUWdGQ0FNSUFRZUhDQVVIZ3dlQkJ3Y0hoUWNEQndFR2h2Y0c5d1QyaFBhQzlnTDJBUFlBOWdiMmh2YUU5Z1QyQXZXQzlZRDFnUFdBQUFBQUFBQUFBQVpqaEdJQ1lnQmhCbU1FWVlKaGdHQ0dVb1pTZ2xFQ1VRWkNCa0lHUWdaQ0JrR0dRWVpCaGtHRU1RUXhCREVFTVFReEJERUVNUVF4QUFBQUFBQUFBQUFHbElTVGdwT0Frd0NDZ0lLRWd3U0RBb01DZ3dDQ0FJSUdkQVowQm5RR2RBUnloSEtFY29SeWduS0Njb0p5Z25LQWNZQnhnSEdBY1lBQUFBQUcxNGJYaHVnRTZBTG9BT2dDNTREbmhPZUM1d1RYQk5jQTF3RFhCdGNHMXdUV2hOYUMxb0xXZ05hQTFvYldodGFFMWdUV0F0WUMxZ0RXQU5ZQXhZREZnTVdBeFlURmhNV0V4WVRGZ3NXQ3hZTEZnc1dBeFFERkFNVUF4UWJHQnNZR3hnYkdCTVVFeFFURkJNVUN4UUxGQXNVQ3hRREVnTVNBeElERWhyV0d0WWExaHJXR3RZYTFocldHdFlTMGhMU0V0SVMwaExTRXRJUzBoTFNDdElLMGdyU0N0SUswZ3JTQ3RJSzBnTFFBdEFDMEFMUUF0QUMwQUxRQXRBYTFCclVHdFFhMUJyVUd0UWExQnJVRXRBUzBCTFFFdEFTMEJMUUV0QVMwQXJRQ3RBSzBBclFDdEFLMEFyUUN0QUN6Z0xPQXM0Q3pnTE9BczRDemdMT0FCQjRBMExyZ2tHR0VZNEpqZ0dFR1pJUmpBbU1BWUlKU2dsS0VVb1JTZ2xJQ1VnUlNCRklDVVlKUmhsUUdWQVJSaEZHQ1VRSlJCa09HUTRaRGhrT0dRd1pEQmtNR1F3WkNoa0tHUW9aQ2hrSUdRZ1pDQmtJR1FZWkJoa0dHUVlSQkJFRUVRUVJCQWtDQ1FJSkFna0NBUUFCQUFFQUFRQUFBQUtnR3FBU29BcWdBcDRhbmhLZUNwNENuQnFjRXB3S25BS2FDbG9LV2dKWUFsZ1NXaEphQ2xnS1dBSldBbFlhV2hwYUVsZ1NXQXBXQ2xZQ1ZBSlVHaGdhR0JvWUdoZ1NGaElXRWhZU0Znb1VDaFFLRkFvVUFoSUNFZ0lTQWhJYUZob1dHaFlhRmhJVUVoUVNGQklVQ2hJS0Vnb1NDaElDRUFJUUFoQUNFQUhPQWM0QnpnSE9BYzRCemdIT0FjNEJ6QUhNQWN3QnpBSE1BY3dCekFITUVkSVIwaEhTRWRJUjBoSFNFZElSMGdIS0Fjb0J5Z0hLQWNvQnlnSEtBY29aMUJuVUdkUVoxQm5VR2RRWjFCblVFZEFSMEJIUUVkQVIwQkhRRWRBUjBBblFDZEFKMEFuUUNkQUowQW5RQ2RBQnlBSElBY2dCeUFISUFjZ0J5QUhJQVlJSmdnQUFBWUFCaEFtRUVZUUFBQUdHQ1lZUmhobUdBWWdKaUJHSUdZZ0JpZ21LRVlvWmlnR01DWXdSakJtTUFZNEpqaEdPR1k0QmtBbVFFWkFaa0FHU0NaSVJraG1TQVpRSmxCR1VHWlFCbGdtV0VaWVpsZ0dZQ1pnUm1CbVlBWm9KbWhHYUdab0JuQW1jRVp3Wm5BR2VDWjRSbmhtZUFhQUpvQkdnR2FBQUFCREVBSUFBZ0FoQ0NFSUlRZ2hDR2NnWnlCSUlDZ2dSeGhIR0NjWUp4Z0dJQVlnQmlBR0lBWVlCaGdHR0FZWUJoQUdFQVlRQmhCbUdHWVlaaGhtR0NZUUpoQW1FQ1lRQmdnR0NBWUlCZ2dBQUdWVlJFUTBOQ01qSXlNVEV4TVRBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRDU2ZG5JeUxpNHA2ZW5wNWVYbDVlR2hvYUdob2FHaG5aMmRuWjJkbloyNXRiR3RxV2xsWldFaElTRWRIUjBkR1JrWkdSVVZGUlVRME5EUTBORFEwTXpNek16TXpNek15TWpJeU1qSXlNakV4TVRFeE1URXhNREF3TURBd01EQTlhMnhjV2xwWldWaElTRWhGUlVWRlJFUkVSRUJBUUVCSE56YzNOemMzTnpZMk5qWTJOalkyTXpNek16TXpNek15TWpJeU1qSXlNakV4TVRFeE1URXhQRnRhVUZsSlIwZERRMEpDU0RnNE9EWTJOalkxTlRVMU5EUTBOREV4TVRFN1dWcEtTRWhDUWtGQlFFQkhOemMzTmpZMk5qVTFOVFUwTkRRME16TXpNenBnWVZGWVNFaElTVGs1T1RrNU9UazNOemMzTnpjM056WTJOalkyTmpZMk5UVTFOVFUxTlRVME5EUTBORFEwTkRNek16TXpNek16TWpJeU1qSXlNakk1WUdGUlYwZEhSMGc0T0RnNE9EZzROalkyTmpZMk5qWTBORFEwTkRRME5ETXpNek16TXpNek1qSXlNakl5TWpJMUpTVWxKU1VsSlNVbEpTVWxKU1VsS0dCaVVsRkJRVUZITnpjM056YzNOelkyTmpZMk5qWTJNek16TXpNek16TTFKU1VsSlNVbEpTVWxKU1VsSlNVbEpDUWtKQ1FrSkNRa0pDUWtKQ1FrSkNGZ1oxZFNRa0pDUlRVMU5UVTFOVFUySmlZbUppWW1KaVltSmlZbUppWW1KQ1FrSkNRa0pDUWtKQ1FrSkNRa0pDTWpJeU1qSXlNakl5TWpJeU1qSXlNaFVGWkdRakl5TWpVbEpTVWxKU1VsSkNRa0pDUWtKQ1FqSXlNakl5TWpJeUJCUWpJek16VTFOQlFVRkJRVUZCUVFRVVEwTWlJaUlpTVRFeE1URXhNVEVERXpJeUlTRWhJUUlTSVNFUkFTSVNBUUV5SWhJQ1F6TWlJaElTQWdKVFF6TWpFaElDQWhNalF6TmpVd0lDQUVHZ0Z3c2tCQVFGQmdjSUNRb01EUThSRkJZWkhDQWtLQzB5T0Q5SFVGcGxjWCtRb3JiTDR2Ly9BRUhnRndza0FnSUNBd01EQXdRRUJBWUdCd2NJQ0FrSkNnb0xDd3dNRFEwT0RnOFBFQkFSRVJJU0FFSEZHQXVFQVFFQUFBRUFBQUVBQUFFQUFRRUFBUUVCQVFFQkFRRUJBUUVCQVFFQkFRSUJBUUlCQVFJQkFRSUJBZ01CQWdNQ0FnTUNBZ1FDQXdRQ0F3UURBd1VEQkFZREJBWUVCUWNFQlFnRUJna0ZCd29HQ0FzR0NBMEhDZzRJQ3hBSkRCSUtEUlFMRHhjTkVSa0FBQUFBQUFBQUFBVUFBQUQvQUFBQUFBQUFBUDhBQUFBQUFBQUEvd0JCMUJrTEZRVUFBQUFBQUFBQUJ3QUFBUDhBQUFBQUFBQUEvd0JCOUJrTEZRVUFBQUFFQUFBQUFBQUFBUDhBQUFBQUFBQUEvd0JCbEJvTEJRVUFBQUFFQUVHa0dndWxBUWNBQUFBRUFBQUFBZ0FBQUFRQUFBQUJBQUFBL3dBQUFBQUFBQUQvQUFBQUFBQUFBUDhBQUFBQUFBQUFCQUFBQUFFQUFBQUVBQUFBQXdBQUFQOEFBQUFBQUFBQS93QUFBQUFBQUFBRUFBQUFBUUFBQUFRQUFBQUVBQUFBL3dBQUFBQUFBQUQvQUFBQUFBQUFBQVFBQUFBQkFBQUFCQUFBQUFRQUFBQUVBQUFBQXdBQUFBUUFBQUFHQUFBQUFBQUFBQTBBQUFEL0FBQUFBQUFBQVA4QUFBQUFBQUFBL3dCQjFCc0xGUTBBQUFBQUFBQUFEd0FBQVA4QUFBQUFBQUFBL3dCQjlCc0xGUTBBQUFBRUFBQUFDQUFBQVA4QUFBQUFBQUFBL3dCQmxCd0x0UXNOQUFBQUJBQUFBQWdBQUFBQUFBQUFEd0FBQUFRQUFBQUtBQUFBQkFBQUFBa0FBQUQvQUFBQUFBQUFBUDhBQUFBQUFBQUEvd0FBQUFBQUFBQUVBQUFBQ1FBQUFBUUFBQUFMQUFBQS93QUFBQUFBQUFEL0FBQUFBQUFBQUFRQUFBQUpBQUFBQkFBQUFBd0FBQUQvQUFBQUFBQUFBUDhBQUFBQUFBQUFCQUFBQUFrQUFBQUVBQUFBREFBQUFBUUFBQUFMQUFBQUJBQUFBQTRBQUFBQkFBQUFDZ0FBQVA4QUFBQUFBQUFBL3dBQUFBQUFBQUQvQUFBQUFBQUFBQUVBQUFBS0FBQUFCQUFBQUFBQUFBRC9BQUFBQUFBQUFQOEFBQUFBQUFBQUFRQUFBQW9BQUFBQkFBQUFDd0FBQVA4QUFBQUFBQUFBL3dBQUFBQUFBQUFCQUFBQUNnQUFBQUVBQUFBTEFBQUFCQUFBQUFBQUFBQUVBQUFBQVFBQUFBRUFBQUFPQUFBQS93QUFBQUFBQUFEL0FBQUFBQUFBQVA4QUFBQUFBQUFBQVFBQUFBNEFBQUFFQUFBQUJBQUFBUDhBQUFBQUFBQUEvd0FBQUFBQUFBQUJBQUFBRGdBQUFBRUFBQUFQQUFBQS93QUFBQUFBQUFEL0FBQUFBQUFBQUFFQUFBQU9BQUFBQVFBQUFBOEFBQUFFQUFBQUJBQUFBQVFBQUFBRkFBQUFCQUFBQUFJQUFBRC9BQUFBQUFBQUFQOEFBQUFBQUFBQS93QUFBQUFBQUFBRUFBQUFBZ0FBQUFRQUFBQUlBQUFBL3dBQUFBQUFBQUQvQUFBQUFBQUFBQVFBQUFBQ0FBQUFCQUFBQUFNQUFBRC9BQUFBQUFBQUFQOEFBQUFBQUFBQUJBQUFBQUlBQUFBRUFBQUFBd0FBQUFRQUFBQUlBQUFBQkFBQUFBa0FBQUFFQUFBQUJnQUFBUDhBQUFBQUFBQUEvd0FBQUFBQUFBRC9BQUFBQUFBQUFBUUFBQUFHQUFBQUJBQUFBQXdBQUFEL0FBQUFBQUFBQVA4QUFBQUFBQUFBQkFBQUFBWUFBQUFFQUFBQUJ3QUFBUDhBQUFBQUFBQUEvd0FBQUFBQUFBQUVBQUFBQmdBQUFBUUFBQUFIQUFBQUJBQUFBQXdBQUFBRUFBQUFEUUFBQUFFQUFBQU9BQUFBL3dBQUFBQUFBQUQvQUFBQUFBQUFBUDhBQUFBQUFBQUFBUUFBQUE0QUFBRC9BQUFBQkFBQUFQOEFBQUFBQUFBQS93QUFBQUFBQUFBQkFBQUFDd0FBQUFFQUFBQU9BQUFBL3dBQUFBQUFBQUQvQUFBQUFBQUFBQUVBQUFBTEFBQUFBUUFBQUE0QUFBQUVBQUFBQVFBQUFQOEFBQUFFQUFBQUFnQUFBQW9BQUFEL0FBQUFBQUFBQVA4QUFBQUFBQUFBL3dBQUFBQUFBQUFDQUFBQUNnQUFBUDhBQUFBQUFBQUEvd0FBQUFBQUFBRC9BQUFBQUFBQUFBRUFBQUFQQUFBQUFnQUFBQW9BQUFEL0FBQUFBQUFBQVA4QUFBQUFBQUFBQVFBQUFBOEFBQUFDQUFBQUNnQUFBQVFBQUFBRkFBQUEvd0FBQUFBQUFBQUVBQUFBQmdBQUFQOEFBQUFBQUFBQS93QUFBQUFBQUFEL0FBQUFBQUFBQUFRQUFBQUdBQUFBL3dBQUFBd0FBQUQvQUFBQUFBQUFBUDhBQUFBQUFBQUFCQUFBQUFNQUFBQUVBQUFBQmdBQUFQOEFBQUFBQUFBQS93QUFBQUFBQUFBRUFBQUFBd0FBQUFRQUFBQUdBQUFBQkFBQUFBa0FBQUQvQUFBQURBQUFBUDhBQUFBQ0FBQUEvd0FBQUFBQUFBRC9BQUFBQUFBQUFQOEFBQUFBQUFBQS93QUFBQUlBQUFEL0FBQUFDQUFBQVA4QUFBQUFBQUFBL3dBQUFBQUFBQUFFQUFBQUJ3QUFBUDhBQUFBQ0FBQUEvd0FBQUFBQUFBRC9BQUFBQUFBQUFBUUFBQUFIQUFBQS93QUFBQUlBQUFBRUFBQUFEUUFBQVA4QUFBQUlBQUFBQXdBQUFBOEFBQUQvQUFBQUFBQUFBUDhBQUFBQUFBQUEvd0FBQUFBQUFBQURBQUFBRHdBQUFBQUFBQUFGQUFBQS93QUFBQUFBQUFEL0FBQUFBQUFBQUFNQUFBQVBBQUFBQVFBQUFBb0FBQUQvQUFBQUFBQUFBUDhBQUFBQUFBQUFBd0FBQUE4QUFBQUJBQUFBQ2dBQUFBQUFBQUFGQUFBQUJBQUFBQUFBQUFBQkFBQUFDd0FBQVA4QUFBQUFBQUFBL3dBQUFBQUFBQUQvQUFBQUFBQUFBQUVBQUFBTEFBQUFCQUFBQUFFQUFBRC9BQUFBQUFBQUFQOEFBQUFBQUFBQUFRQUFBQXNBQUFBQkFBQUFEZ0FBQVA4QUFBQUFBQUFBL3dBQUFBQUFBQUFCQUFBQUN3QUFBQUVBQUFBT0FBQUFCQUFBQUFFQUFBQUVBQUFBQkFBQUFBQUFBQUFIQUFBQS93QUFBQUFBQUFEL0FBQUFBQUFBQVA4QVFkUW5DeFVIQUFBQUFBQUFBQTBBQUFEL0FBQUFBQUFBQVA4QVFmUW5DeFVIQUFBQUJBQUFBQUlBQUFEL0FBQUFBQUFBQVA4QVFaUW9DOWtCQndBQUFBUUFBQUFDQUFBQUFBQUFBQTBBQUFBRUFBQUFDQUFBQUFRQUFBQURBQUFBL3dBQUFBQUFBQUQvQUFBQUFBQUFBUDhBQUFBQUFBQUFCQUFBQUFNQUFBQUVBQUFBQ1FBQUFQOEFBQUFBQUFBQS93QUFBQUFBQUFBRUFBQUFBd0FBQUFRQUFBQUdBQUFBL3dBQUFBQUFBQUQvQUFBQUFBQUFBQVFBQUFBREFBQUFCQUFBQUFZQUFBQUVBQUFBQ1FBQUFBUUFBQUFNQUFBQUFBQUFBQVFBQUFBQUFBQUFCQUFBQUFnQUFBQU1BQUFBQ0FBQUFBd0FBQUFBQUFBQUJBQUFBQUFBQUFBRUFBQUFDQUFBQUF3QUFBQUlBQUFBREFCQitDa0xCUVFBQUFBRUFFR0lLZ3R4QkFBQUFBUUFBQUFJQUFBQUNBQUFBQXdBQUFBTUFBQUFDQUFBQUFnQUFBQU1BQUFBREFBQUFBQUFBQUFCQUFBQUJBQUFBQVVBQUFBQ0FBQUFBd0FBQUFZQUFBQUhBQUFBQ0FBQUFBa0FBQUFNQUFBQURRQUFBQW9BQUFBTEFBQUFEZ0FBQUE4QUFBQUFBQUFBQVFBQUFBRUFRWVFyQ3hFQkFBQUFBUUFBQUFFQUFBQUNBQUFBQWdCQnBDc0xCUVVBQUFBRUFFRzBLd3VKQmdjQUFBQUVBQUFBQWdBQUFBUUFBQUFCQUFBQUJBQUFBQVFBQUFBRUFBQUFBd0FBQUFRQUFBQUdBQUFBQUFBQUFBMEFBQUFFQUFBQUNBQUFBQUFBQUFBUEFBQUFCQUFBQUFvQUFBQUVBQUFBQ1FBQUFBUUFBQUFNQUFBQUJBQUFBQXNBQUFBRUFBQUFEZ0FBQUFBQUFBQVJBQUFBQkFBQUFCQUFBQUFBQUFBQUV3QUFBQVFBQUFBU0FBQUFBQUFBQUJVQUFBQUVBQUFBRkFBQUFBQUFBQUFYQUFBQUJBQUFBQllBQUFBQkFBQUFDZ0FBQUFFQUFBQUxBQUFBQkFBQUFBQUFBQUFFQUFBQUFRQUFBQUVBQUFBT0FBQUFBUUFBQUE4QUFBQUVBQUFBQkFBQUFBUUFBQUFGQUFBQUJBQUFBQUlBQUFBRUFBQUFBd0FBQUFRQUFBQUlBQUFBQkFBQUFBa0FBQUFFQUFBQUJnQUFBQVFBQUFBSEFBQUFCQUFBQUF3QUFBQUVBQUFBRFFBQUFBRUFBQUFTQUFBQUFRQUFBQk1BQUFBRUFBQUFFQUFBQUFRQUFBQVJBQUFBQVFBQUFCWUFBQUFCQUFBQUZ3QUFBQVFBQUFBVUFBQUFCQUFBQUJVQUFBQUJBQUFBQ3dBQUFBRUFBQUFPQUFBQUJBQUFBQUVBQUFEL0FBQUFCQUFBQUFFQUFBQVBBQUFBQWdBQUFBb0FBQUFFQUFBQUJRQUFBUDhBQUFBQUFBQUFCQUFBQUFNQUFBQUVBQUFBQmdBQUFBUUFBQUFKQUFBQS93QUFBQXdBQUFBRUFBQUFCd0FBQVA4QUFBQUNBQUFBQkFBQUFBMEFBQUQvQUFBQUNBQUFBQUVBQUFBVEFBQUFBZ0FBQUJJQUFBQUVBQUFBRVFBQUFQOEFBQUFRQUFBQUFRQUFBQmNBQUFBQ0FBQUFGZ0FBQUFRQUFBQVZBQUFBL3dBQUFCUUFBQUFEQUFBQUR3QUFBQUVBQUFBS0FBQUFBQUFBQUFVQUFBQUVBQUFBQUFBQUFBRUFBQUFMQUFBQUFRQUFBQTRBQUFBRUFBQUFBUUFBQUFRQUFBQUVBQUFBQUFBQUFBY0FBQUFFQUFBQUFnQUFBQUFBQUFBTkFBQUFCQUFBQUFnQUFBQUVBQUFBQXdBQUFBUUFBQUFHQUFBQUJBQUFBQWtBQUFBRUFBQUFEQUFBQUFNQUFBQVRBQUFBQVFBQUFCSUFBQUFBQUFBQUVRQUFBQVFBQUFBUUFBQUFBd0FBQUJjQUFBQUJBQUFBRmdBQUFBQUFBQUFWQUFBQUJBQUFBQlFBQUFBQkFBQUFBUUFBQUFJQUFBQUNBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QkJ3VFVMdkFZQkFnTUVCUVlIQ0FrS0N3d05EZzhRRVJJVEZCVVdGeGdaR2hzY0hSNGZJQ0VpSXlRbEppY29LU29yTEMwdUx6QXhNak0wTlRZM09EazZPenc5UGo5QVFVSkRSRVZHUjBoSlNrdE1UVTVQVUZGU1UxUlZWbGRZV1ZwYlhGMWVYMkJoWW1Oa1pXWm5hR2xxYTJ4dGJtOXdjWEp6ZEhWMmQzaDVlbnQ4Zlg1L2dJR0NnNFNGaG9lSWlZcUxqSTJPajVDUmtwT1VsWmFYbUptYW01eWRucCtnb2FLanBLV21wNmlwcXF1c3JhNnZzTEd5czdTMXRyZTR1YnE3dkwyK3Y4REJ3c1BFeGNiSHlNbkt5OHpOenMvUTBkTFQxTlhXMTlqWjJ0dmMzZDdmNE9IaTQrVGw1dWZvNmVycjdPM3U3L0R4OHZQMDlmYjMrUG42Ky96OS92Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy93QUFBQUFCQUFBQUFnQUFBQU1BQUFBRUFBQUFCUUFBQUFZQUFBQUhBQUFBQ0FBQUFBa0FBQUFLQUFBQUN3QUFBQXdBQUFBTkFBQUFEZ0FBQUE4QVFZWThDeTRCQVFFQkFRRUNBZ0lDQWdJREF3TURBd01FQkFRRUJBUUZCUVVGQlFVR0JnWUdCZ1lIQndjSEJ3Y0lDQWdJQUVIQVBBdEZDZ0FBQUEwQUFBQVFBQUFBQ3dBQUFBNEFBQUFTQUFBQURRQUFBQkFBQUFBVUFBQUFEZ0FBQUJJQUFBQVhBQUFBRUFBQUFCUUFBQUFaQUFBQUVnQUFBQmNBQUFBZEFFR1JQUXN6QVFJREJBVUFBUUlEQkFVQUFRSURCQVVBQVFJREJBVUFBUUlEQkFVQUFRSURCQVVBQVFJREJBVUFBUUlEQkFVQUFRSURBRUhVUFF1c0FnRUFBQUFDQUFBQUF3QUFBQVFBQUFBRkFBQUFCZ0FBQUFjQUFBQUlBQUFBQ1FBQUFBb0FBQUFMQUFBQURBQUFBQTBBQUFBT0FBQUFEd0FBQUJBQUFBQVJBQUFBRWdBQUFCTUFBQUFVQUFBQUZRQUFBQllBQUFBWEFBQUFHQUFBQUJrQUFBQWFBQUFBR3dBQUFCd0FBQUFkQUFBQUhRQUFBQjRBQUFBZkFBQUFJQUFBQUNBQUFBQWhBQUFBSWdBQUFDSUFBQUFqQUFBQUl3QUFBQ1FBQUFBa0FBQUFKUUFBQUNVQUFBQWxBQUFBSmdBQUFDWUFBQUFtQUFBQUp3QUFBQ2NBQUFBbkFBQUFKd0FBQUM4ZkR3QVhHeDBlQndzTkRpY3JMUzRRQXdVS0RCTVZHaHdqSlNvc0FRSUVDQkVTRkJnR0NSWVpJQ0VpSkNnbUtRQVFBUUlFQ0NBREJRb01EeThIQ3cwT0Jna2ZJeVVxTENFaUpDZ25LeTB1RVJJVUdCTVZHaHdYR3gwZUZoa21LUUJCZ2NBQUN3SWlVQT09IiwgVyhoKSB8fCAoaCA9IFUoaCkpOwogICAgZnVuY3Rpb24gdShJKSB7CiAgICAgIHRyeSB7CiAgICAgICAgaWYgKEkgPT0gaCAmJiBIKQogICAgICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KEgpOwogICAgICAgIHZhciBnID0geihJKTsKICAgICAgICBpZiAoZykKICAgICAgICAgIHJldHVybiBnOwogICAgICAgIGlmIChNKQogICAgICAgICAgcmV0dXJuIE0oSSk7CiAgICAgICAgdGhyb3cgImJvdGggYXN5bmMgYW5kIHN5bmMgZmV0Y2hpbmcgb2YgdGhlIHdhc20gZmFpbGVkIjsKICAgICAgfSBjYXRjaCAoUSkgewogICAgICAgIGMoUSk7CiAgICAgIH0KICAgIH0KICAgIGZ1bmN0aW9uIGlBKCkgewogICAgICByZXR1cm4gIUggJiYgcyAmJiB0eXBlb2YgZmV0Y2ggPT0gImZ1bmN0aW9uIiA/IGZldGNoKGgsIHsKICAgICAgICBjcmVkZW50aWFsczogInNhbWUtb3JpZ2luIgogICAgICB9KS50aGVuKGZ1bmN0aW9uKEkpIHsKICAgICAgICBpZiAoIUkub2spCiAgICAgICAgICB0aHJvdyAiZmFpbGVkIHRvIGxvYWQgd2FzbSBiaW5hcnkgZmlsZSBhdCAnIiArIGggKyAiJyI7CiAgICAgICAgcmV0dXJuIEkuYXJyYXlCdWZmZXIoKTsKICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIHUoaCk7CiAgICAgIH0pIDogUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gdShoKTsKICAgICAgfSk7CiAgICB9CiAgICBmdW5jdGlvbiBEQSgpIHsKICAgICAgdmFyIEkgPSB7CiAgICAgICAgYTogTkEKICAgICAgfTsKICAgICAgZnVuY3Rpb24gZyhpLCBvKSB7CiAgICAgICAgdmFyIE4gPSBpLmV4cG9ydHM7CiAgICAgICAgQS5hc20gPSBOLCBLID0gQS5hc20uYywgWChLLmJ1ZmZlciksIHAgPSBBLmFzbS5sLCBRQShBLmFzbS5kKSwgRUEoKTsKICAgICAgfQogICAgICBCQSgpOwogICAgICBmdW5jdGlvbiBRKGkpIHsKICAgICAgICBnKGkuaW5zdGFuY2UpOwogICAgICB9CiAgICAgIGZ1bmN0aW9uIEIoaSkgewogICAgICAgIHJldHVybiBpQSgpLnRoZW4oZnVuY3Rpb24obykgewogICAgICAgICAgcmV0dXJuIFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKG8sIEkpOwogICAgICAgIH0pLnRoZW4oZnVuY3Rpb24obykgewogICAgICAgICAgcmV0dXJuIG87CiAgICAgICAgfSkudGhlbihpLCBmdW5jdGlvbihvKSB7CiAgICAgICAgICBrKCJmYWlsZWQgdG8gYXN5bmNocm9ub3VzbHkgcHJlcGFyZSB3YXNtOiAiICsgbyksIGMobyk7CiAgICAgICAgfSk7CiAgICAgIH0KICAgICAgZnVuY3Rpb24geSgpIHsKICAgICAgICByZXR1cm4gIUggJiYgdHlwZW9mIFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlU3RyZWFtaW5nID09ICJmdW5jdGlvbiIgJiYgIVcoaCkgJiYgdHlwZW9mIGZldGNoID09ICJmdW5jdGlvbiIgPyBmZXRjaChoLCB7CiAgICAgICAgICBjcmVkZW50aWFsczogInNhbWUtb3JpZ2luIgogICAgICAgIH0pLnRoZW4oZnVuY3Rpb24oaSkgewogICAgICAgICAgdmFyIG8gPSBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZVN0cmVhbWluZyhpLCBJKTsKICAgICAgICAgIHJldHVybiBvLnRoZW4oUSwgZnVuY3Rpb24oTikgewogICAgICAgICAgICByZXR1cm4gaygid2FzbSBzdHJlYW1pbmcgY29tcGlsZSBmYWlsZWQ6ICIgKyBOKSwgaygiZmFsbGluZyBiYWNrIHRvIEFycmF5QnVmZmVyIGluc3RhbnRpYXRpb24iKSwgQihRKTsKICAgICAgICAgIH0pOwogICAgICAgIH0pIDogQihRKTsKICAgICAgfQogICAgICBpZiAoQS5pbnN0YW50aWF0ZVdhc20pCiAgICAgICAgdHJ5IHsKICAgICAgICAgIHZhciBSID0gQS5pbnN0YW50aWF0ZVdhc20oSSwgZyk7CiAgICAgICAgICByZXR1cm4gUjsKICAgICAgICB9IGNhdGNoIChpKSB7CiAgICAgICAgICByZXR1cm4gaygiTW9kdWxlLmluc3RhbnRpYXRlV2FzbSBjYWxsYmFjayBmYWlsZWQgd2l0aCBlcnJvcjogIiArIGkpLCAhMTsKICAgICAgICB9CiAgICAgIHJldHVybiB5KCkuY2F0Y2goUyksIHt9OwogICAgfQogICAgZnVuY3Rpb24gWihJKSB7CiAgICAgIGZvciAoOyBJLmxlbmd0aCA+IDA7ICkgewogICAgICAgIHZhciBnID0gSS5zaGlmdCgpOwogICAgICAgIGlmICh0eXBlb2YgZyA9PSAiZnVuY3Rpb24iKSB7CiAgICAgICAgICBnKEEpOwogICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICAgIHZhciBRID0gZy5mdW5jOwogICAgICAgIHR5cGVvZiBRID09ICJudW1iZXIiID8gZy5hcmcgPT09IHZvaWQgMCA/IHAuZ2V0KFEpKCkgOiBwLmdldChRKShnLmFyZykgOiBRKGcuYXJnID09PSB2b2lkIDAgPyBudWxsIDogZy5hcmcpOwogICAgICB9CiAgICB9CiAgICBmdW5jdGlvbiBHQShJLCBnLCBRKSB7CiAgICAgIHIuY29weVdpdGhpbihJLCBnLCBnICsgUSk7CiAgICB9CiAgICBmdW5jdGlvbiBvQShJKSB7CiAgICAgIHRyeSB7CiAgICAgICAgcmV0dXJuIEsuZ3JvdyhJIC0gbS5ieXRlTGVuZ3RoICsgNjU1MzUgPj4+IDE2KSwgWChLLmJ1ZmZlciksIDE7CiAgICAgIH0gY2F0Y2ggewogICAgICB9CiAgICB9CiAgICBmdW5jdGlvbiBoQShJKSB7CiAgICAgIHZhciBnID0gci5sZW5ndGg7CiAgICAgIEkgPSBJID4+PiAwOwogICAgICB2YXIgUSA9IDIxNDc0ODM2NDg7CiAgICAgIGlmIChJID4gUSkKICAgICAgICByZXR1cm4gITE7CiAgICAgIGZvciAodmFyIEIgPSAxOyBCIDw9IDQ7IEIgKj0gMikgewogICAgICAgIHZhciB5ID0gZyAqICgxICsgMC4yIC8gQik7CiAgICAgICAgeSA9IE1hdGgubWluKHksIEkgKyAxMDA2NjMyOTYpOwogICAgICAgIHZhciBSID0gTWF0aC5taW4oUSwgXyhNYXRoLm1heChJLCB5KSwgNjU1MzYpKSwgaSA9IG9BKFIpOwogICAgICAgIGlmIChpKQogICAgICAgICAgcmV0dXJuICEwOwogICAgICB9CiAgICAgIHJldHVybiAhMTsKICAgIH0KICAgIHZhciB5QSA9IHR5cGVvZiBhdG9iID09ICJmdW5jdGlvbiIgPyBhdG9iIDogZnVuY3Rpb24oSSkgewogICAgICB2YXIgZyA9ICJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPSIsIFEgPSAiIiwgQiwgeSwgUiwgaSwgbywgTiwgZiwgWSA9IDA7CiAgICAgIEkgPSBJLnJlcGxhY2UoL1teQS1aYS16MC05XCtcL1w9XS9nLCAiIik7CiAgICAgIGRvCiAgICAgICAgaSA9IGcuaW5kZXhPZihJLmNoYXJBdChZKyspKSwgbyA9IGcuaW5kZXhPZihJLmNoYXJBdChZKyspKSwgTiA9IGcuaW5kZXhPZihJLmNoYXJBdChZKyspKSwgZiA9IGcuaW5kZXhPZihJLmNoYXJBdChZKyspKSwgQiA9IGkgPDwgMiB8IG8gPj4gNCwgeSA9IChvICYgMTUpIDw8IDQgfCBOID4+IDIsIFIgPSAoTiAmIDMpIDw8IDYgfCBmLCBRID0gUSArIFN0cmluZy5mcm9tQ2hhckNvZGUoQiksIE4gIT09IDY0ICYmIChRID0gUSArIFN0cmluZy5mcm9tQ2hhckNvZGUoeSkpLCBmICE9PSA2NCAmJiAoUSA9IFEgKyBTdHJpbmcuZnJvbUNoYXJDb2RlKFIpKTsKICAgICAgd2hpbGUgKFkgPCBJLmxlbmd0aCk7CiAgICAgIHJldHVybiBROwogICAgfTsKICAgIGZ1bmN0aW9uIGFBKEkpIHsKICAgICAgdHJ5IHsKICAgICAgICBmb3IgKHZhciBnID0geUEoSSksIFEgPSBuZXcgVWludDhBcnJheShnLmxlbmd0aCksIEIgPSAwOyBCIDwgZy5sZW5ndGg7ICsrQikKICAgICAgICAgIFFbQl0gPSBnLmNoYXJDb2RlQXQoQik7CiAgICAgICAgcmV0dXJuIFE7CiAgICAgIH0gY2F0Y2ggewogICAgICAgIHRocm93IG5ldyBFcnJvcigiQ29udmVydGluZyBiYXNlNjQgc3RyaW5nIHRvIGJ5dGVzIGZhaWxlZC4iKTsKICAgICAgfQogICAgfQogICAgZnVuY3Rpb24geihJKSB7CiAgICAgIGlmIChXKEkpKQogICAgICAgIHJldHVybiBhQShJLnNsaWNlKFAubGVuZ3RoKSk7CiAgICB9CiAgICB2YXIgTkEgPSB7CiAgICAgIGI6IEdBLAogICAgICBhOiBoQQogICAgfTsKICAgIERBKCksIEEuX19fd2FzbV9jYWxsX2N0b3JzID0gZnVuY3Rpb24oKSB7CiAgICAgIHJldHVybiAoQS5fX193YXNtX2NhbGxfY3RvcnMgPSBBLmFzbS5kKS5hcHBseShudWxsLCBhcmd1bWVudHMpOwogICAgfSwgQS5faDI2NGJzZEluaXQgPSBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIChBLl9oMjY0YnNkSW5pdCA9IEEuYXNtLmUpLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7CiAgICB9LCBBLl9tYWxsb2MgPSBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIChBLl9tYWxsb2MgPSBBLmFzbS5mKS5hcHBseShudWxsLCBhcmd1bWVudHMpOwogICAgfSwgQS5fZnJlZSA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gKEEuX2ZyZWUgPSBBLmFzbS5nKS5hcHBseShudWxsLCBhcmd1bWVudHMpOwogICAgfSwgQS5faDI2NGJzZERlY29kZSA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gKEEuX2gyNjRic2REZWNvZGUgPSBBLmFzbS5oKS5hcHBseShudWxsLCBhcmd1bWVudHMpOwogICAgfSwgQS5faDI2NGJzZFNodXRkb3duID0gZnVuY3Rpb24oKSB7CiAgICAgIHJldHVybiAoQS5faDI2NGJzZFNodXRkb3duID0gQS5hc20uaSkuYXBwbHkobnVsbCwgYXJndW1lbnRzKTsKICAgIH0sIEEuX2gyNjRic2RBbGxvYyA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gKEEuX2gyNjRic2RBbGxvYyA9IEEuYXNtLmopLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7CiAgICB9LCBBLl9oMjY0YnNkRnJlZSA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gKEEuX2gyNjRic2RGcmVlID0gQS5hc20uaykuYXBwbHkobnVsbCwgYXJndW1lbnRzKTsKICAgIH0sIEEuZ2V0VmFsdWUgPSB2OwogICAgdmFyIGQ7CiAgICBGID0gZnVuY3Rpb24gSSgpIHsKICAgICAgZCB8fCB4KCksIGQgfHwgKEYgPSBJKTsKICAgIH07CiAgICBmdW5jdGlvbiB4KEkpIHsKICAgICAgaWYgKHcgPiAwIHx8ICgkKCksIHcgPiAwKSkKICAgICAgICByZXR1cm47CiAgICAgIGZ1bmN0aW9uIGcoKSB7CiAgICAgICAgZCB8fCAoZCA9ICEwLCBBLmNhbGxlZFJ1biA9ICEwLCAhZSAmJiAoQUEoKSwgQyhBKSwgQS5vblJ1bnRpbWVJbml0aWFsaXplZCAmJiBBLm9uUnVudGltZUluaXRpYWxpemVkKCksIElBKCkpKTsKICAgICAgfQogICAgICBBLnNldFN0YXR1cyA/IChBLnNldFN0YXR1cygiUnVubmluZy4uLiIpLCBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICBBLnNldFN0YXR1cygiIik7CiAgICAgICAgfSwgMSksIGcoKTsKICAgICAgfSwgMSkpIDogZygpOwogICAgfQogICAgaWYgKEEucnVuID0geCwgQS5wcmVJbml0KQogICAgICBmb3IgKHR5cGVvZiBBLnByZUluaXQgPT0gImZ1bmN0aW9uIiAmJiAoQS5wcmVJbml0ID0gW0EucHJlSW5pdF0pOyBBLnByZUluaXQubGVuZ3RoID4gMDsgKQogICAgICAgIEEucHJlSW5pdC5wb3AoKSgpOwogICAgcmV0dXJuIHgoKSwgQS5yZWFkeTsKICB9Owp9KCksIHEgPSB7fTsKZnVuY3Rpb24gc0EoKSB7CiAgcmV0dXJuIFNBKCkudGhlbihmdW5jdGlvbihhKSB7CiAgICBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBmdW5jdGlvbihKKSB7CiAgICAgIHZhciBBID0gSi5kYXRhLCBDID0gQS5yZW5kZXJTdGF0ZUlkLCBTID0gQS50eXBlOwogICAgICBzd2l0Y2ggKFMpIHsKICAgICAgICBjYXNlICJkZWNvZGUiOiB7CiAgICAgICAgICB2YXIgRCA9IHFbQ107CiAgICAgICAgICBEIHx8IChEID0gbmV3IEwoYSwgZnVuY3Rpb24ocywgRywgVSkgewogICAgICAgICAgICBwb3N0TWVzc2FnZSh7CiAgICAgICAgICAgICAgdHlwZTogInBpY3R1cmVSZWFkeSIsCiAgICAgICAgICAgICAgd2lkdGg6IEcsCiAgICAgICAgICAgICAgaGVpZ2h0OiBVLAogICAgICAgICAgICAgIHJlbmRlclN0YXRlSWQ6IEMsCiAgICAgICAgICAgICAgZGF0YTogcy5idWZmZXIKICAgICAgICAgICAgfSwgW3MuYnVmZmVyXSk7CiAgICAgICAgICB9KSwgcVtDXSA9IEQpLCBELmRlY29kZShuZXcgVWludDhBcnJheShBLmRhdGEsIEEub2Zmc2V0LCBBLmxlbmd0aCkpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIGNhc2UgInJlbGVhc2UiOiB7CiAgICAgICAgICB2YXIgRSA9IHFbQ107CiAgICAgICAgICBFICYmIChFLnJlbGVhc2UoKSwgZGVsZXRlIHFbQ10pOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICB9CiAgICB9KSwgc2VsZi5wb3N0TWVzc2FnZSh7CiAgICAgIHR5cGU6ICJkZWNvZGVyUmVhZHkiCiAgICB9KTsKICB9KTsKfQpzQSgpOwo=",blob=typeof window<"u"&&window.Blob&&new Blob([atob(encodedJs)],{type:"text/javascript;charset=utf-8"});function WorkerWrapper(){let d;try{if(d=blob&&(window.URL||window.webkitURL).createObjectURL(blob),!d)throw"";return new Worker(d)}catch{return new Worker("data:application/javascript;base64,"+encodedJs,{type:"module"})}finally{d&&(window.URL||window.webkitURL).revokeObjectURL(d)}}class WasmDecoder{constructor(o={}){c(this,"worker");c(this,"_queueSize",0);c(this,"pendingTimestamps",[]);c(this,"pendingFrames",[]);c(this,"onFrameDecoded");c(this,"onError");c(this,"onQueueOverflow");c(this,"configured",!1);this.onFrameDecoded=o.onFrameDecoded,this.onError=o.onError,this.onQueueOverflow=o.onQueueOverflow}get queueSize(){return this._queueSize}get state(){return this.worker?this.configured?"configured":"configuring":"unconfigured"}async configure(o){return this.worker&&(this.worker.terminate(),this.worker=void 0),this.worker=new WorkerWrapper,this.configured=!1,this._queueSize=0,this.pendingTimestamps=[],new Promise((l,i)=>{this.worker.addEventListener("message",r=>{var e;const t=r.data;switch(t.type){case"pictureReady":this.handlePictureReady(t);break;case"decoderReady":console.log("[WasmDecoder] Worker ready"),this.configured=!0,l();break;case"error":const n=new Error(t.error||"WASM decoder error");(e=this.onError)==null||e.call(this,n),i(n);break}}),this.worker.addEventListener("error",r=>{var e;const t=new Error(`Worker error: ${r.message}`);(e=this.onError)==null||e.call(this,t),i(t)})})}decodeBinary(o){var e,n,s,a,U;if(!this.worker||!this.configured||!o.header||!o.payload)return;const l=new Uint8Array(o.payload),i=(n=(e=o.header.media)==null?void 0:e.codecData)!=null&&n.timebaseDen&&((a=(s=o.header.media)==null?void 0:s.codecData)!=null&&a.timebaseNum)?{num:o.header.media.codecData.timebaseNum,den:o.header.media.codecData.timebaseDen}:{num:1,den:1e6},r={num:1,den:1e6},t=rescaleTime(((U=o.header.media)==null?void 0:U.pts)??0,i,r);this.pendingFrames.push(l),this.pendingTimestamps.push(t),this.decodeNext()}decodeNext(){const o=this.pendingFrames.shift();o!=null&&this.decode(o)}decode(o){!this.worker||!this.configured||(this._queueSize++,this.worker.postMessage({type:"decode",data:o.buffer,offset:o.byteOffset,length:o.byteLength,renderStateId:1},[o.buffer]))}handlePictureReady(o){var E;this._queueSize--;const{width:l,height:i,data:r}=o,t=new Uint8Array(r),e=l,n=e*i,s=n>>2,a=t.subarray(0,n),U=t.subarray(n,n+s),u=t.subarray(n+s,n+2*s),F=i>>1,R=e>>1,S=this.pendingTimestamps.shift()??0,y={y:a,u:U,v:u,width:l,height:i,chromaStride:R,chromaHeight:F,timestamp:S,close:()=>{}};(E=this.onFrameDecoded)==null||E.call(this,y)}flush(){this._queueSize=0,this.pendingTimestamps=[],this.pendingFrames=[]}flushSync(){this.flush()}reset(){this.flush()}dispose(){this.worker&&(this.worker.terminate(),this.worker=void 0),this.configured=!1,this._queueSize=0,this.pendingTimestamps=[],this.pendingFrames=[]}}class FrameScheduler{constructor(o={}){c(this,"buffer",[]);c(this,"bufferDelayMs");c(this,"maxBufferSize");c(this,"startRealTimeUs",null);c(this,"startStreamTimeUs",null);c(this,"frameDurationUs",2e4);c(this,"lastFrameTimestamp",null);c(this,"bufferSizeHistory",[]);c(this,"driftCheckInterval");c(this,"driftThresholdMs");c(this,"dequeueCount",0);c(this,"latencyHistory",[]);c(this,"latencyHistorySize",60);c(this,"packetTimingHistory",[]);c(this,"packetTimingHistorySize",300);c(this,"lastPacketArrivalTime",null);c(this,"stats",{dropped:0,enqueued:0,dequeued:0,driftCorrections:0});c(this,"logger");c(this,"onFrameDropped");this.bufferDelayMs=o.bufferDelayMs??100;const l=Math.ceil(this.bufferDelayMs/1e3*60*2);this.maxBufferSize=o.maxBufferSize??Math.max(30,l),this.driftCheckInterval=o.driftCheckInterval??150,this.driftThresholdMs=o.driftCorrectionThresholdMs??30,this.logger=o.logger??(()=>{}),this.onFrameDropped=o.onFrameDropped}get bufferDelayUs(){return this.bufferDelayMs*1e3}get effectiveDriftThresholdMs(){return Math.min(this.driftThresholdMs,this.bufferDelayMs*.5)}enqueue(o,l,i,r=!1){var n;this.stats.enqueued++;const t=this.lastPacketArrivalTime!==null?i.arrivalTime-this.lastPacketArrivalTime:0;this.lastPacketArrivalTime=i.arrivalTime;const e=i.decodeTime-i.arrivalTime;for(this.packetTimingHistory.push({arrivalTime:i.arrivalTime,intervalMs:t,streamTimestampUs:l,isKeyframe:r,decodeLatencyMs:e,wasDropped:!1});this.packetTimingHistory.length>this.packetTimingHistorySize;)this.packetTimingHistory.shift();if(this.lastFrameTimestamp!==null){const s=l-this.lastFrameTimestamp;s>0&&s<1e5&&(this.frameDurationUs=s)}for(this.lastFrameTimestamp=l;this.buffer.length>=this.maxBufferSize;){const s=this.buffer.shift();s&&(this.stats.dropped++,(n=this.onFrameDropped)==null||n.call(this,s.frame,"overflow"),this.startRealTimeUs=null,this.startStreamTimeUs=null)}this.buffer.push({frame:o,timestamp:l,timing:i})}dequeue(o){const l=o*1e3,i=performance.now();if(this.buffer.length===0)return null;if(this.bufferDelayMs===0)return this.trackBufferSize(),this.dequeueLatest(i);const r=this.buffer.length*this.frameDurationUs/1e3,t=Math.min(this.bufferDelayMs*.5,this.frameDurationUs/1e3);if(r<t)return null;this.startRealTimeUs===null&&(this.startRealTimeUs=l,this.startStreamTimeUs=this.buffer[0].timestamp+this.bufferDelayUs,this.logger(`Playback started: buffer=${Math.round(r)}ms, delay=${this.bufferDelayMs}ms`)),this.trackBufferSize();const e=l-this.startRealTimeUs,n=this.startStreamTimeUs+e-this.bufferDelayUs;let s=this.findBestFrameIndex(n);if(s===-1)return null;s>1&&(this.dropFrames(s-1,"skip"),s=0),this.dequeueCount++,this.dequeueCount%this.driftCheckInterval===0&&this.correctDrift();const a=this.buffer.shift();return this.stats.dequeued++,this.recordLatency(a.timing,i),a.frame}dequeueLatest(o){const l=this.buffer.pop();return this.stats.dequeued++,this.recordLatency(l.timing,o),this.dropFrames(this.buffer.length,"skip"),l.frame}recordLatency(o,l){const i=o.decodeTime-o.arrivalTime,r=l-o.decodeTime,t=l-o.arrivalTime;this.latencyHistory.push({decode:i,buffer:r,total:t}),this.latencyHistory.length>this.latencyHistorySize&&this.latencyHistory.shift()}getLatencyStats(){if(this.latencyHistory.length===0)return null;const o=this.latencyHistory[this.latencyHistory.length-1],l=this.latencyHistory.reduce((t,e)=>t+e.decode,0)/this.latencyHistory.length,i=this.latencyHistory.reduce((t,e)=>t+e.buffer,0)/this.latencyHistory.length,r=this.latencyHistory.reduce((t,e)=>t+e.total,0)/this.latencyHistory.length;return{decodeLatency:Math.round(o.decode*10)/10,bufferLatency:Math.round(o.buffer*10)/10,totalLatency:Math.round(o.total*10)/10,avgDecodeLatency:Math.round(l*10)/10,avgBufferLatency:Math.round(i*10)/10,avgTotalLatency:Math.round(r*10)/10}}findBestFrameIndex(o){let l=-1;for(let i=0;i<this.buffer.length&&this.buffer[i].timestamp<=o;i++)l=i;return l}dropFrames(o,l){var i;for(let r=0;r<o&&this.buffer.length>0;r++){const t=this.buffer.shift();this.stats.dropped++,(i=this.onFrameDropped)==null||i.call(this,t.frame,l);const e=this.packetTimingHistory.find(n=>n.streamTimestampUs===t.timestamp);e&&(e.wasDropped=!0)}}trackBufferSize(){this.bufferSizeHistory.push(this.buffer.length),this.bufferSizeHistory.length>100&&this.bufferSizeHistory.shift()}correctDrift(){if(this.bufferSizeHistory.length<10||!this.startStreamTimeUs)return;const i=this.bufferSizeHistory.reduce((t,e)=>t+e,0)/this.bufferSizeHistory.length*this.frameDurationUs/1e3-this.bufferDelayMs,r=this.effectiveDriftThresholdMs;if(Math.abs(i)>r){const t=i*1e3;this.startStreamTimeUs+=t,this.stats.driftCorrections++,this.bufferSizeHistory=[],this.logger(`Drift correction: ${i.toFixed(1)}ms`)}}clear(){var o;for(const l of this.buffer)(o=this.onFrameDropped)==null||o.call(this,l.frame,"overflow");this.buffer=[],this.startRealTimeUs=null,this.startStreamTimeUs=null,this.bufferSizeHistory=[]}setBufferDelay(o){const l=this.bufferDelayMs>0;this.bufferDelayMs=o,(l&&o===0||!l&&o>0)&&(this.bufferSizeHistory=[],this.startRealTimeUs=null,this.startStreamTimeUs=null)}getBufferDelay(){return this.bufferDelayMs}getStatus(){const o=this.buffer.length*this.frameDurationUs/1e3;let l=o;return this.bufferSizeHistory.length>0&&(l=this.bufferSizeHistory.reduce((r,t)=>r+t,0)/this.bufferSizeHistory.length*this.frameDurationUs/1e3),{currentBufferSize:this.buffer.length,currentBufferMs:Math.round(o),avgBufferMs:Math.round(l),targetBufferMs:this.bufferDelayMs,streamFrameDurationUs:this.frameDurationUs,droppedFrames:this.stats.dropped,totalEnqueuedFrames:this.stats.enqueued,totalDequeuedFrames:this.stats.dequeued,driftCorrections:this.stats.driftCorrections,latency:this.getLatencyStats()}}logStatus(){const o=this.getStatus(),l=(1e6/this.frameDurationUs).toFixed(1);this.logger(`buffer=${o.currentBufferMs}ms/${o.targetBufferMs}ms (${o.currentBufferSize} frames), dropped=${o.droppedFrames}, fps=${l}`)}resetStats(){this.stats={dropped:0,enqueued:0,dequeued:0,driftCorrections:0},this.bufferSizeHistory=[]}getPacketTimingHistory(){return[...this.packetTimingHistory]}}var commonjsGlobal=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function getDefaultExportFromCjs(d){return d&&d.__esModule&&Object.prototype.hasOwnProperty.call(d,"default")?d.default:d}var indexMinimal={},minimal$1={},aspromise=asPromise;function asPromise(d,o){for(var l=new Array(arguments.length-1),i=0,r=2,t=!0;r<arguments.length;)l[i++]=arguments[r++];return new Promise(function(n,s){l[i]=function(U){if(t)if(t=!1,U)s(U);else{for(var u=new Array(arguments.length-1),F=0;F<u.length;)u[F++]=arguments[F];n.apply(null,u)}};try{d.apply(o||null,l)}catch(a){t&&(t=!1,s(a))}})}var base64$1={};(function(d){var o=d;o.length=function(n){var s=n.length;if(!s)return 0;for(var a=0;--s%4>1&&n.charAt(s)==="=";)++a;return Math.ceil(n.length*3)/4-a};for(var l=new Array(64),i=new Array(123),r=0;r<64;)i[l[r]=r<26?r+65:r<52?r+71:r<62?r-4:r-59|43]=r++;o.encode=function(n,s,a){for(var U=null,u=[],F=0,R=0,S;s<a;){var y=n[s++];switch(R){case 0:u[F++]=l[y>>2],S=(y&3)<<4,R=1;break;case 1:u[F++]=l[S|y>>4],S=(y&15)<<2,R=2;break;case 2:u[F++]=l[S|y>>6],u[F++]=l[y&63],R=0;break}F>8191&&((U||(U=[])).push(String.fromCharCode.apply(String,u)),F=0)}return R&&(u[F++]=l[S],u[F++]=61,R===1&&(u[F++]=61)),U?(F&&U.push(String.fromCharCode.apply(String,u.slice(0,F))),U.join("")):String.fromCharCode.apply(String,u.slice(0,F))};var t="invalid encoding";o.decode=function(n,s,a){for(var U=a,u=0,F,R=0;R<n.length;){var S=n.charCodeAt(R++);if(S===61&&u>1)break;if((S=i[S])===void 0)throw Error(t);switch(u){case 0:F=S,u=1;break;case 1:s[a++]=F<<2|(S&48)>>4,F=S,u=2;break;case 2:s[a++]=(F&15)<<4|(S&60)>>2,F=S,u=3;break;case 3:s[a++]=(F&3)<<6|S,u=0;break}}if(u===1)throw Error(t);return a-U},o.test=function(n){return/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(n)}})(base64$1);var eventemitter=EventEmitter;function EventEmitter(){this._listeners={}}EventEmitter.prototype.on=function(o,l,i){return(this._listeners[o]||(this._listeners[o]=[])).push({fn:l,ctx:i||this}),this};EventEmitter.prototype.off=function(o,l){if(o===void 0)this._listeners={};else if(l===void 0)this._listeners[o]=[];else for(var i=this._listeners[o],r=0;r<i.length;)i[r].fn===l?i.splice(r,1):++r;return this};EventEmitter.prototype.emit=function(o){var l=this._listeners[o];if(l){for(var i=[],r=1;r<arguments.length;)i.push(arguments[r++]);for(r=0;r<l.length;)l[r].fn.apply(l[r++].ctx,i)}return this};var float=factory(factory);function factory(d){return typeof Float32Array<"u"?function(){var o=new Float32Array([-0]),l=new Uint8Array(o.buffer),i=l[3]===128;function r(s,a,U){o[0]=s,a[U]=l[0],a[U+1]=l[1],a[U+2]=l[2],a[U+3]=l[3]}function t(s,a,U){o[0]=s,a[U]=l[3],a[U+1]=l[2],a[U+2]=l[1],a[U+3]=l[0]}d.writeFloatLE=i?r:t,d.writeFloatBE=i?t:r;function e(s,a){return l[0]=s[a],l[1]=s[a+1],l[2]=s[a+2],l[3]=s[a+3],o[0]}function n(s,a){return l[3]=s[a],l[2]=s[a+1],l[1]=s[a+2],l[0]=s[a+3],o[0]}d.readFloatLE=i?e:n,d.readFloatBE=i?n:e}():function(){function o(i,r,t,e){var n=r<0?1:0;if(n&&(r=-r),r===0)i(1/r>0?0:2147483648,t,e);else if(isNaN(r))i(2143289344,t,e);else if(r>34028234663852886e22)i((n<<31|2139095040)>>>0,t,e);else if(r<11754943508222875e-54)i((n<<31|Math.round(r/1401298464324817e-60))>>>0,t,e);else{var s=Math.floor(Math.log(r)/Math.LN2),a=Math.round(r*Math.pow(2,-s)*8388608)&8388607;i((n<<31|s+127<<23|a)>>>0,t,e)}}d.writeFloatLE=o.bind(null,writeUintLE),d.writeFloatBE=o.bind(null,writeUintBE);function l(i,r,t){var e=i(r,t),n=(e>>31)*2+1,s=e>>>23&255,a=e&8388607;return s===255?a?NaN:n*(1/0):s===0?n*1401298464324817e-60*a:n*Math.pow(2,s-150)*(a+8388608)}d.readFloatLE=l.bind(null,readUintLE),d.readFloatBE=l.bind(null,readUintBE)}(),typeof Float64Array<"u"?function(){var o=new Float64Array([-0]),l=new Uint8Array(o.buffer),i=l[7]===128;function r(s,a,U){o[0]=s,a[U]=l[0],a[U+1]=l[1],a[U+2]=l[2],a[U+3]=l[3],a[U+4]=l[4],a[U+5]=l[5],a[U+6]=l[6],a[U+7]=l[7]}function t(s,a,U){o[0]=s,a[U]=l[7],a[U+1]=l[6],a[U+2]=l[5],a[U+3]=l[4],a[U+4]=l[3],a[U+5]=l[2],a[U+6]=l[1],a[U+7]=l[0]}d.writeDoubleLE=i?r:t,d.writeDoubleBE=i?t:r;function e(s,a){return l[0]=s[a],l[1]=s[a+1],l[2]=s[a+2],l[3]=s[a+3],l[4]=s[a+4],l[5]=s[a+5],l[6]=s[a+6],l[7]=s[a+7],o[0]}function n(s,a){return l[7]=s[a],l[6]=s[a+1],l[5]=s[a+2],l[4]=s[a+3],l[3]=s[a+4],l[2]=s[a+5],l[1]=s[a+6],l[0]=s[a+7],o[0]}d.readDoubleLE=i?e:n,d.readDoubleBE=i?n:e}():function(){function o(i,r,t,e,n,s){var a=e<0?1:0;if(a&&(e=-e),e===0)i(0,n,s+r),i(1/e>0?0:2147483648,n,s+t);else if(isNaN(e))i(0,n,s+r),i(2146959360,n,s+t);else if(e>17976931348623157e292)i(0,n,s+r),i((a<<31|2146435072)>>>0,n,s+t);else{var U;if(e<22250738585072014e-324)U=e/5e-324,i(U>>>0,n,s+r),i((a<<31|U/4294967296)>>>0,n,s+t);else{var u=Math.floor(Math.log(e)/Math.LN2);u===1024&&(u=1023),U=e*Math.pow(2,-u),i(U*4503599627370496>>>0,n,s+r),i((a<<31|u+1023<<20|U*1048576&1048575)>>>0,n,s+t)}}}d.writeDoubleLE=o.bind(null,writeUintLE,0,4),d.writeDoubleBE=o.bind(null,writeUintBE,4,0);function l(i,r,t,e,n){var s=i(e,n+r),a=i(e,n+t),U=(a>>31)*2+1,u=a>>>20&2047,F=4294967296*(a&1048575)+s;return u===2047?F?NaN:U*(1/0):u===0?U*5e-324*F:U*Math.pow(2,u-1075)*(F+4503599627370496)}d.readDoubleLE=l.bind(null,readUintLE,0,4),d.readDoubleBE=l.bind(null,readUintBE,4,0)}(),d}function writeUintLE(d,o,l){o[l]=d&255,o[l+1]=d>>>8&255,o[l+2]=d>>>16&255,o[l+3]=d>>>24}function writeUintBE(d,o,l){o[l]=d>>>24,o[l+1]=d>>>16&255,o[l+2]=d>>>8&255,o[l+3]=d&255}function readUintLE(d,o){return(d[o]|d[o+1]<<8|d[o+2]<<16|d[o+3]<<24)>>>0}function readUintBE(d,o){return(d[o]<<24|d[o+1]<<16|d[o+2]<<8|d[o+3])>>>0}var inquire_1=inquire;function inquire(moduleName){try{var mod=eval("quire".replace(/^/,"re"))(moduleName);if(mod&&(mod.length||Object.keys(mod).length))return mod}catch(d){}return null}var utf8$2={};(function(d){var o=d;o.length=function(i){for(var r=0,t=0,e=0;e<i.length;++e)t=i.charCodeAt(e),t<128?r+=1:t<2048?r+=2:(t&64512)===55296&&(i.charCodeAt(e+1)&64512)===56320?(++e,r+=4):r+=3;return r},o.read=function(i,r,t){var e=t-r;if(e<1)return"";for(var n=null,s=[],a=0,U;r<t;)U=i[r++],U<128?s[a++]=U:U>191&&U<224?s[a++]=(U&31)<<6|i[r++]&63:U>239&&U<365?(U=((U&7)<<18|(i[r++]&63)<<12|(i[r++]&63)<<6|i[r++]&63)-65536,s[a++]=55296+(U>>10),s[a++]=56320+(U&1023)):s[a++]=(U&15)<<12|(i[r++]&63)<<6|i[r++]&63,a>8191&&((n||(n=[])).push(String.fromCharCode.apply(String,s)),a=0);return n?(a&&n.push(String.fromCharCode.apply(String,s.slice(0,a))),n.join("")):String.fromCharCode.apply(String,s.slice(0,a))},o.write=function(i,r,t){for(var e=t,n,s,a=0;a<i.length;++a)n=i.charCodeAt(a),n<128?r[t++]=n:n<2048?(r[t++]=n>>6|192,r[t++]=n&63|128):(n&64512)===55296&&((s=i.charCodeAt(a+1))&64512)===56320?(n=65536+((n&1023)<<10)+(s&1023),++a,r[t++]=n>>18|240,r[t++]=n>>12&63|128,r[t++]=n>>6&63|128,r[t++]=n&63|128):(r[t++]=n>>12|224,r[t++]=n>>6&63|128,r[t++]=n&63|128);return t-e}})(utf8$2);var pool_1=pool;function pool(d,o,l){var i=l||8192,r=i>>>1,t=null,e=i;return function(s){if(s<1||s>r)return d(s);e+s>i&&(t=d(i),e=0);var a=o.call(t,e,e+=s);return e&7&&(e=(e|7)+1),a}}var longbits,hasRequiredLongbits;function requireLongbits(){if(hasRequiredLongbits)return longbits;hasRequiredLongbits=1,longbits=o;var d=requireMinimal();function o(t,e){this.lo=t>>>0,this.hi=e>>>0}var l=o.zero=new o(0,0);l.toNumber=function(){return 0},l.zzEncode=l.zzDecode=function(){return this},l.length=function(){return 1};var i=o.zeroHash="\0\0\0\0\0\0\0\0";o.fromNumber=function(e){if(e===0)return l;var n=e<0;n&&(e=-e);var s=e>>>0,a=(e-s)/4294967296>>>0;return n&&(a=~a>>>0,s=~s>>>0,++s>4294967295&&(s=0,++a>4294967295&&(a=0))),new o(s,a)},o.from=function(e){if(typeof e=="number")return o.fromNumber(e);if(d.isString(e))if(d.Long)e=d.Long.fromString(e);else return o.fromNumber(parseInt(e,10));return e.low||e.high?new o(e.low>>>0,e.high>>>0):l},o.prototype.toNumber=function(e){if(!e&&this.hi>>>31){var n=~this.lo+1>>>0,s=~this.hi>>>0;return n||(s=s+1>>>0),-(n+s*4294967296)}return this.lo+this.hi*4294967296},o.prototype.toLong=function(e){return d.Long?new d.Long(this.lo|0,this.hi|0,!!e):{low:this.lo|0,high:this.hi|0,unsigned:!!e}};var r=String.prototype.charCodeAt;return o.fromHash=function(e){return e===i?l:new o((r.call(e,0)|r.call(e,1)<<8|r.call(e,2)<<16|r.call(e,3)<<24)>>>0,(r.call(e,4)|r.call(e,5)<<8|r.call(e,6)<<16|r.call(e,7)<<24)>>>0)},o.prototype.toHash=function(){return String.fromCharCode(this.lo&255,this.lo>>>8&255,this.lo>>>16&255,this.lo>>>24,this.hi&255,this.hi>>>8&255,this.hi>>>16&255,this.hi>>>24)},o.prototype.zzEncode=function(){var e=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^e)>>>0,this.lo=(this.lo<<1^e)>>>0,this},o.prototype.zzDecode=function(){var e=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^e)>>>0,this.hi=(this.hi>>>1^e)>>>0,this},o.prototype.length=function(){var e=this.lo,n=(this.lo>>>28|this.hi<<4)>>>0,s=this.hi>>>24;return s===0?n===0?e<16384?e<128?1:2:e<2097152?3:4:n<16384?n<128?5:6:n<2097152?7:8:s<128?9:10},longbits}var hasRequiredMinimal;function requireMinimal(){return hasRequiredMinimal||(hasRequiredMinimal=1,function(d){var o=d;o.asPromise=aspromise,o.base64=base64$1,o.EventEmitter=eventemitter,o.float=float,o.inquire=inquire_1,o.utf8=utf8$2,o.pool=pool_1,o.LongBits=requireLongbits(),o.isNode=!!(typeof commonjsGlobal<"u"&&commonjsGlobal&&commonjsGlobal.process&&commonjsGlobal.process.versions&&commonjsGlobal.process.versions.node),o.global=o.isNode&&commonjsGlobal||typeof window<"u"&&window||typeof self<"u"&&self||commonjsGlobal,o.emptyArray=Object.freeze?Object.freeze([]):[],o.emptyObject=Object.freeze?Object.freeze({}):{},o.isInteger=Number.isInteger||function(t){return typeof t=="number"&&isFinite(t)&&Math.floor(t)===t},o.isString=function(t){return typeof t=="string"||t instanceof String},o.isObject=function(t){return t&&typeof t=="object"},o.isset=o.isSet=function(t,e){var n=t[e];return n!=null&&t.hasOwnProperty(e)?typeof n!="object"||(Array.isArray(n)?n.length:Object.keys(n).length)>0:!1},o.Buffer=function(){try{var r=o.inquire("buffer").Buffer;return r.prototype.utf8Write?r:null}catch{return null}}(),o._Buffer_from=null,o._Buffer_allocUnsafe=null,o.newBuffer=function(t){return typeof t=="number"?o.Buffer?o._Buffer_allocUnsafe(t):new o.Array(t):o.Buffer?o._Buffer_from(t):typeof Uint8Array>"u"?t:new Uint8Array(t)},o.Array=typeof Uint8Array<"u"?Uint8Array:Array,o.Long=o.global.dcodeIO&&o.global.dcodeIO.Long||o.global.Long||o.inquire("long"),o.key2Re=/^true|false|0|1$/,o.key32Re=/^-?(?:0|[1-9][0-9]*)$/,o.key64Re=/^(?:[\\x00-\\xff]{8}|-?(?:0|[1-9][0-9]*))$/,o.longToHash=function(t){return t?o.LongBits.from(t).toHash():o.LongBits.zeroHash},o.longFromHash=function(t,e){var n=o.LongBits.fromHash(t);return o.Long?o.Long.fromBits(n.lo,n.hi,e):n.toNumber(!!e)};function l(r,t,e){for(var n=Object.keys(t),s=0;s<n.length;++s)(r[n[s]]===void 0||!e)&&(r[n[s]]=t[n[s]]);return r}o.merge=l,o.lcFirst=function(t){return t.charAt(0).toLowerCase()+t.substring(1)};function i(r){function t(e,n){if(!(this instanceof t))return new t(e,n);Object.defineProperty(this,"message",{get:function(){return e}}),Error.captureStackTrace?Error.captureStackTrace(this,t):Object.defineProperty(this,"stack",{value:new Error().stack||""}),n&&l(this,n)}return t.prototype=Object.create(Error.prototype,{constructor:{value:t,writable:!0,enumerable:!1,configurable:!0},name:{get:function(){return r},set:void 0,enumerable:!1,configurable:!0},toString:{value:function(){return this.name+": "+this.message},writable:!0,enumerable:!1,configurable:!0}}),t}o.newError=i,o.ProtocolError=i("ProtocolError"),o.oneOfGetter=function(t){for(var e={},n=0;n<t.length;++n)e[t[n]]=1;return function(){for(var s=Object.keys(this),a=s.length-1;a>-1;--a)if(e[s[a]]===1&&this[s[a]]!==void 0&&this[s[a]]!==null)return s[a]}},o.oneOfSetter=function(t){return function(e){for(var n=0;n<t.length;++n)t[n]!==e&&delete this[t[n]]}},o.toJSONOptions={longs:String,enums:String,bytes:String,json:!0},o._configure=function(){var r=o.Buffer;if(!r){o._Buffer_from=o._Buffer_allocUnsafe=null;return}o._Buffer_from=r.from!==Uint8Array.from&&r.from||function(e,n){return new r(e,n)},o._Buffer_allocUnsafe=r.allocUnsafe||function(e){return new r(e)}}}(minimal$1)),minimal$1}var writer=Writer$1,util$4=requireMinimal(),BufferWriter$1,LongBits$1=util$4.LongBits,base64=util$4.base64,utf8$1=util$4.utf8;function Op(d,o,l){this.fn=d,this.len=o,this.next=void 0,this.val=l}function noop(){}function State(d){this.head=d.head,this.tail=d.tail,this.len=d.len,this.next=d.states}function Writer$1(){this.len=0,this.head=new Op(noop,0,0),this.tail=this.head,this.states=null}var create$1=function d(){return util$4.Buffer?function(){return(Writer$1.create=function(){return new BufferWriter$1})()}:function(){return new Writer$1}};Writer$1.create=create$1();Writer$1.alloc=function d(o){return new util$4.Array(o)};util$4.Array!==Array&&(Writer$1.alloc=util$4.pool(Writer$1.alloc,util$4.Array.prototype.subarray));Writer$1.prototype._push=function d(o,l,i){return this.tail=this.tail.next=new Op(o,l,i),this.len+=l,this};function writeByte(d,o,l){o[l]=d&255}function writeVarint32(d,o,l){for(;d>127;)o[l++]=d&127|128,d>>>=7;o[l]=d}function VarintOp(d,o){this.len=d,this.next=void 0,this.val=o}VarintOp.prototype=Object.create(Op.prototype);VarintOp.prototype.fn=writeVarint32;Writer$1.prototype.uint32=function d(o){return this.len+=(this.tail=this.tail.next=new VarintOp((o=o>>>0)<128?1:o<16384?2:o<2097152?3:o<268435456?4:5,o)).len,this};Writer$1.prototype.int32=function d(o){return o<0?this._push(writeVarint64,10,LongBits$1.fromNumber(o)):this.uint32(o)};Writer$1.prototype.sint32=function d(o){return this.uint32((o<<1^o>>31)>>>0)};function writeVarint64(d,o,l){for(;d.hi;)o[l++]=d.lo&127|128,d.lo=(d.lo>>>7|d.hi<<25)>>>0,d.hi>>>=7;for(;d.lo>127;)o[l++]=d.lo&127|128,d.lo=d.lo>>>7;o[l++]=d.lo}Writer$1.prototype.uint64=function d(o){var l=LongBits$1.from(o);return this._push(writeVarint64,l.length(),l)};Writer$1.prototype.int64=Writer$1.prototype.uint64;Writer$1.prototype.sint64=function d(o){var l=LongBits$1.from(o).zzEncode();return this._push(writeVarint64,l.length(),l)};Writer$1.prototype.bool=function d(o){return this._push(writeByte,1,o?1:0)};function writeFixed32(d,o,l){o[l]=d&255,o[l+1]=d>>>8&255,o[l+2]=d>>>16&255,o[l+3]=d>>>24}Writer$1.prototype.fixed32=function d(o){return this._push(writeFixed32,4,o>>>0)};Writer$1.prototype.sfixed32=Writer$1.prototype.fixed32;Writer$1.prototype.fixed64=function d(o){var l=LongBits$1.from(o);return this._push(writeFixed32,4,l.lo)._push(writeFixed32,4,l.hi)};Writer$1.prototype.sfixed64=Writer$1.prototype.fixed64;Writer$1.prototype.float=function d(o){return this._push(util$4.float.writeFloatLE,4,o)};Writer$1.prototype.double=function d(o){return this._push(util$4.float.writeDoubleLE,8,o)};var writeBytes=util$4.Array.prototype.set?function d(o,l,i){l.set(o,i)}:function d(o,l,i){for(var r=0;r<o.length;++r)l[i+r]=o[r]};Writer$1.prototype.bytes=function d(o){var l=o.length>>>0;if(!l)return this._push(writeByte,1,0);if(util$4.isString(o)){var i=Writer$1.alloc(l=base64.length(o));base64.decode(o,i,0),o=i}return this.uint32(l)._push(writeBytes,l,o)};Writer$1.prototype.string=function d(o){var l=utf8$1.length(o);return l?this.uint32(l)._push(utf8$1.write,l,o):this._push(writeByte,1,0)};Writer$1.prototype.fork=function d(){return this.states=new State(this),this.head=this.tail=new Op(noop,0,0),this.len=0,this};Writer$1.prototype.reset=function d(){return this.states?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new Op(noop,0,0),this.len=0),this};Writer$1.prototype.ldelim=function d(){var o=this.head,l=this.tail,i=this.len;return this.reset().uint32(i),i&&(this.tail.next=o.next,this.tail=l,this.len+=i),this};Writer$1.prototype.finish=function d(){for(var o=this.head.next,l=this.constructor.alloc(this.len),i=0;o;)o.fn(o.val,l,i),i+=o.len,o=o.next;return l};Writer$1._configure=function(d){BufferWriter$1=d,Writer$1.create=create$1(),BufferWriter$1._configure()};var writer_buffer=BufferWriter,Writer=writer;(BufferWriter.prototype=Object.create(Writer.prototype)).constructor=BufferWriter;var util$3=requireMinimal();function BufferWriter(){Writer.call(this)}BufferWriter._configure=function(){BufferWriter.alloc=util$3._Buffer_allocUnsafe,BufferWriter.writeBytesBuffer=util$3.Buffer&&util$3.Buffer.prototype instanceof Uint8Array&&util$3.Buffer.prototype.set.name==="set"?function(o,l,i){l.set(o,i)}:function(o,l,i){if(o.copy)o.copy(l,i,0,o.length);else for(var r=0;r<o.length;)l[i++]=o[r++]}};BufferWriter.prototype.bytes=function d(o){util$3.isString(o)&&(o=util$3._Buffer_from(o,"base64"));var l=o.length>>>0;return this.uint32(l),l&&this._push(BufferWriter.writeBytesBuffer,l,o),this};function writeStringBuffer(d,o,l){d.length<40?util$3.utf8.write(d,o,l):o.utf8Write?o.utf8Write(d,l):o.write(d,l)}BufferWriter.prototype.string=function d(o){var l=util$3.Buffer.byteLength(o);return this.uint32(l),l&&this._push(writeStringBuffer,l,o),this};BufferWriter._configure();var reader=Reader$1,util$2=requireMinimal(),BufferReader$1,LongBits=util$2.LongBits,utf8=util$2.utf8;function indexOutOfRange(d,o){return RangeError("index out of range: "+d.pos+" + "+(o||1)+" > "+d.len)}function Reader$1(d){this.buf=d,this.pos=0,this.len=d.length}var create_array=typeof Uint8Array<"u"?function d(o){if(o instanceof Uint8Array||Array.isArray(o))return new Reader$1(o);throw Error("illegal buffer")}:function d(o){if(Array.isArray(o))return new Reader$1(o);throw Error("illegal buffer")},create=function d(){return util$2.Buffer?function(l){return(Reader$1.create=function(r){return util$2.Buffer.isBuffer(r)?new BufferReader$1(r):create_array(r)})(l)}:create_array};Reader$1.create=create();Reader$1.prototype._slice=util$2.Array.prototype.subarray||util$2.Array.prototype.slice;Reader$1.prototype.uint32=function d(){var o=4294967295;return function(){if(o=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(o=(o|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(o=(o|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(o=(o|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(o=(o|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return o;if((this.pos+=5)>this.len)throw this.pos=this.len,indexOutOfRange(this,10);return o}}();Reader$1.prototype.int32=function d(){return this.uint32()|0};Reader$1.prototype.sint32=function d(){var o=this.uint32();return o>>>1^-(o&1)|0};function readLongVarint(){var d=new LongBits(0,0),o=0;if(this.len-this.pos>4){for(;o<4;++o)if(d.lo=(d.lo|(this.buf[this.pos]&127)<<o*7)>>>0,this.buf[this.pos++]<128)return d;if(d.lo=(d.lo|(this.buf[this.pos]&127)<<28)>>>0,d.hi=(d.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return d;o=0}else{for(;o<3;++o){if(this.pos>=this.len)throw indexOutOfRange(this);if(d.lo=(d.lo|(this.buf[this.pos]&127)<<o*7)>>>0,this.buf[this.pos++]<128)return d}return d.lo=(d.lo|(this.buf[this.pos++]&127)<<o*7)>>>0,d}if(this.len-this.pos>4){for(;o<5;++o)if(d.hi=(d.hi|(this.buf[this.pos]&127)<<o*7+3)>>>0,this.buf[this.pos++]<128)return d}else for(;o<5;++o){if(this.pos>=this.len)throw indexOutOfRange(this);if(d.hi=(d.hi|(this.buf[this.pos]&127)<<o*7+3)>>>0,this.buf[this.pos++]<128)return d}throw Error("invalid varint encoding")}Reader$1.prototype.bool=function d(){return this.uint32()!==0};function readFixed32_end(d,o){return(d[o-4]|d[o-3]<<8|d[o-2]<<16|d[o-1]<<24)>>>0}Reader$1.prototype.fixed32=function d(){if(this.pos+4>this.len)throw indexOutOfRange(this,4);return readFixed32_end(this.buf,this.pos+=4)};Reader$1.prototype.sfixed32=function d(){if(this.pos+4>this.len)throw indexOutOfRange(this,4);return readFixed32_end(this.buf,this.pos+=4)|0};function readFixed64(){if(this.pos+8>this.len)throw indexOutOfRange(this,8);return new LongBits(readFixed32_end(this.buf,this.pos+=4),readFixed32_end(this.buf,this.pos+=4))}Reader$1.prototype.float=function d(){if(this.pos+4>this.len)throw indexOutOfRange(this,4);var o=util$2.float.readFloatLE(this.buf,this.pos);return this.pos+=4,o};Reader$1.prototype.double=function d(){if(this.pos+8>this.len)throw indexOutOfRange(this,4);var o=util$2.float.readDoubleLE(this.buf,this.pos);return this.pos+=8,o};Reader$1.prototype.bytes=function d(){var o=this.uint32(),l=this.pos,i=this.pos+o;if(i>this.len)throw indexOutOfRange(this,o);if(this.pos+=o,Array.isArray(this.buf))return this.buf.slice(l,i);if(l===i){var r=util$2.Buffer;return r?r.alloc(0):new this.buf.constructor(0)}return this._slice.call(this.buf,l,i)};Reader$1.prototype.string=function d(){var o=this.bytes();return utf8.read(o,0,o.length)};Reader$1.prototype.skip=function d(o){if(typeof o=="number"){if(this.pos+o>this.len)throw indexOutOfRange(this,o);this.pos+=o}else do if(this.pos>=this.len)throw indexOutOfRange(this);while(this.buf[this.pos++]&128);return this};Reader$1.prototype.skipType=function(d){switch(d){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(d=this.uint32()&7)!==4;)this.skipType(d);break;case 5:this.skip(4);break;default:throw Error("invalid wire type "+d+" at offset "+this.pos)}return this};Reader$1._configure=function(d){BufferReader$1=d,Reader$1.create=create(),BufferReader$1._configure();var o=util$2.Long?"toLong":"toNumber";util$2.merge(Reader$1.prototype,{int64:function(){return readLongVarint.call(this)[o](!1)},uint64:function(){return readLongVarint.call(this)[o](!0)},sint64:function(){return readLongVarint.call(this).zzDecode()[o](!1)},fixed64:function(){return readFixed64.call(this)[o](!0)},sfixed64:function(){return readFixed64.call(this)[o](!1)}})};var reader_buffer=BufferReader,Reader=reader;(BufferReader.prototype=Object.create(Reader.prototype)).constructor=BufferReader;var util$1=requireMinimal();function BufferReader(d){Reader.call(this,d)}BufferReader._configure=function(){util$1.Buffer&&(BufferReader.prototype._slice=util$1.Buffer.prototype.slice)};BufferReader.prototype.string=function d(){var o=this.uint32();return this.buf.utf8Slice?this.buf.utf8Slice(this.pos,this.pos=Math.min(this.pos+o,this.len)):this.buf.toString("utf-8",this.pos,this.pos=Math.min(this.pos+o,this.len))};BufferReader._configure();var rpc={},service=Service,util=requireMinimal();(Service.prototype=Object.create(util.EventEmitter.prototype)).constructor=Service;function Service(d,o,l){if(typeof d!="function")throw TypeError("rpcImpl must be a function");util.EventEmitter.call(this),this.rpcImpl=d,this.requestDelimited=!!o,this.responseDelimited=!!l}Service.prototype.rpcCall=function d(o,l,i,r,t){if(!r)throw TypeError("request must be specified");var e=this;if(!t)return util.asPromise(d,e,o,l,i,r);if(!e.rpcImpl){setTimeout(function(){t(Error("already ended"))},0);return}try{return e.rpcImpl(o,l[e.requestDelimited?"encodeDelimited":"encode"](r).finish(),function(s,a){if(s)return e.emit("error",s,o),t(s);if(a===null){e.end(!0);return}if(!(a instanceof i))try{a=i[e.responseDelimited?"decodeDelimited":"decode"](a)}catch(U){return e.emit("error",U,o),t(U)}return e.emit("data",a,o),t(null,a)})}catch(n){e.emit("error",n,o),setTimeout(function(){t(n)},0);return}};Service.prototype.end=function d(o){return this.rpcImpl&&(o||this.rpcImpl(null,null,null),this.rpcImpl=null,this.emit("end").off()),this};(function(d){var o=d;o.Service=service})(rpc);var roots={};(function(d){var o=d;o.build="minimal",o.Writer=writer,o.BufferWriter=writer_buffer,o.Reader=reader,o.BufferReader=reader_buffer,o.util=requireMinimal(),o.rpc=rpc,o.roots=roots,o.configure=l;function l(){o.util._configure(),o.Writer._configure(o.BufferWriter),o.Reader._configure(o.BufferReader)}l()})(indexMinimal);var minimal=indexMinimal;const $protobuf=getDefaultExportFromCjs(minimal);var __create=Object.create,__defProp$1=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty,__commonJS=(d,o)=>function(){return o||(0,d[__getOwnPropNames(d)[0]])((o={exports:{}}).exports,o),o.exports},__copyProps=(d,o,l,i)=>{if(o&&typeof o=="object"||typeof o=="function")for(let r of __getOwnPropNames(o))!__hasOwnProp.call(d,r)&&r!==l&&__defProp$1(d,r,{get:()=>o[r],enumerable:!(i=__getOwnPropDesc(o,r))||i.enumerable});return d},__toESM=(d,o,l)=>(l=d!=null?__create(__getProtoOf(d)):{},__copyProps(o||!d||!d.__esModule?__defProp$1(l,"default",{value:d,enumerable:!0}):l,d)),require_events=__commonJS({"node_modules/events/events.js"(d,o){var l=typeof Reflect=="object"?Reflect:null,i=l&&typeof l.apply=="function"?l.apply:function(p,f,h){return Function.prototype.apply.call(p,f,h)},r;l&&typeof l.ownKeys=="function"?r=l.ownKeys:Object.getOwnPropertySymbols?r=function(p){return Object.getOwnPropertyNames(p).concat(Object.getOwnPropertySymbols(p))}:r=function(p){return Object.getOwnPropertyNames(p)};function t(Q){console&&console.warn&&console.warn(Q)}var e=Number.isNaN||function(p){return p!==p};function n(){n.init.call(this)}o.exports=n,o.exports.once=T,n.EventEmitter=n,n.prototype._events=void 0,n.prototype._eventsCount=0,n.prototype._maxListeners=void 0;var s=10;function a(Q){if(typeof Q!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof Q)}Object.defineProperty(n,"defaultMaxListeners",{enumerable:!0,get:function(){return s},set:function(Q){if(typeof Q!="number"||Q<0||e(Q))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+Q+".");s=Q}}),n.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},n.prototype.setMaxListeners=function(p){if(typeof p!="number"||p<0||e(p))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+p+".");return this._maxListeners=p,this};function U(Q){return Q._maxListeners===void 0?n.defaultMaxListeners:Q._maxListeners}n.prototype.getMaxListeners=function(){return U(this)},n.prototype.emit=function(p){for(var f=[],h=1;h<arguments.length;h++)f.push(arguments[h]);var B=p==="error",J=this._events;if(J!==void 0)B=B&&J.error===void 0;else if(!B)return!1;if(B){var V;if(f.length>0&&(V=f[0]),V instanceof Error)throw V;var v=new Error("Unhandled error."+(V?" ("+V.message+")":""));throw v.context=V,v}var b=J[p];if(b===void 0)return!1;if(typeof b=="function")i(b,this,f);else for(var g=b.length,Z=E(b,g),h=0;h<g;++h)i(Z[h],this,f);return!0};function u(Q,p,f,h){var B,J,V;if(a(f),J=Q._events,J===void 0?(J=Q._events=Object.create(null),Q._eventsCount=0):(J.newListener!==void 0&&(Q.emit("newListener",p,f.listener?f.listener:f),J=Q._events),V=J[p]),V===void 0)V=J[p]=f,++Q._eventsCount;else if(typeof V=="function"?V=J[p]=h?[f,V]:[V,f]:h?V.unshift(f):V.push(f),B=U(Q),B>0&&V.length>B&&!V.warned){V.warned=!0;var v=new Error("Possible EventEmitter memory leak detected. "+V.length+" "+String(p)+" listeners added. Use emitter.setMaxListeners() to increase limit");v.name="MaxListenersExceededWarning",v.emitter=Q,v.type=p,v.count=V.length,t(v)}return Q}n.prototype.addListener=function(p,f){return u(this,p,f,!1)},n.prototype.on=n.prototype.addListener,n.prototype.prependListener=function(p,f){return u(this,p,f,!0)};function F(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function R(Q,p,f){var h={fired:!1,wrapFn:void 0,target:Q,type:p,listener:f},B=F.bind(h);return B.listener=f,h.wrapFn=B,B}n.prototype.once=function(p,f){return a(f),this.on(p,R(this,p,f)),this},n.prototype.prependOnceListener=function(p,f){return a(f),this.prependListener(p,R(this,p,f)),this},n.prototype.removeListener=function(p,f){var h,B,J,V,v;if(a(f),B=this._events,B===void 0)return this;if(h=B[p],h===void 0)return this;if(h===f||h.listener===f)--this._eventsCount===0?this._events=Object.create(null):(delete B[p],B.removeListener&&this.emit("removeListener",p,h.listener||f));else if(typeof h!="function"){for(J=-1,V=h.length-1;V>=0;V--)if(h[V]===f||h[V].listener===f){v=h[V].listener,J=V;break}if(J<0)return this;J===0?h.shift():W(h,J),h.length===1&&(B[p]=h[0]),B.removeListener!==void 0&&this.emit("removeListener",p,v||f)}return this},n.prototype.off=n.prototype.removeListener,n.prototype.removeAllListeners=function(p){var f,h,B;if(h=this._events,h===void 0)return this;if(h.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):h[p]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete h[p]),this;if(arguments.length===0){var J=Object.keys(h),V;for(B=0;B<J.length;++B)V=J[B],V!=="removeListener"&&this.removeAllListeners(V);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if(f=h[p],typeof f=="function")this.removeListener(p,f);else if(f!==void 0)for(B=f.length-1;B>=0;B--)this.removeListener(p,f[B]);return this};function S(Q,p,f){var h=Q._events;if(h===void 0)return[];var B=h[p];return B===void 0?[]:typeof B=="function"?f?[B.listener||B]:[B]:f?N(B):E(B,B.length)}n.prototype.listeners=function(p){return S(this,p,!0)},n.prototype.rawListeners=function(p){return S(this,p,!1)},n.listenerCount=function(Q,p){return typeof Q.listenerCount=="function"?Q.listenerCount(p):y.call(Q,p)},n.prototype.listenerCount=y;function y(Q){var p=this._events;if(p!==void 0){var f=p[Q];if(typeof f=="function")return 1;if(f!==void 0)return f.length}return 0}n.prototype.eventNames=function(){return this._eventsCount>0?r(this._events):[]};function E(Q,p){for(var f=new Array(p),h=0;h<p;++h)f[h]=Q[h];return f}function W(Q,p){for(;p+1<Q.length;p++)Q[p]=Q[p+1];Q.pop()}function N(Q){for(var p=new Array(Q.length),f=0;f<p.length;++f)p[f]=Q[f].listener||Q[f];return p}function T(Q,p){return new Promise(function(f,h){function B(V){Q.removeListener(p,J),h(V)}function J(){typeof Q.removeListener=="function"&&Q.removeListener("error",B),f([].slice.call(arguments))}m(Q,p,J,{once:!0}),p!=="error"&&C(Q,B,{once:!0})})}function C(Q,p,f){typeof Q.on=="function"&&m(Q,"error",p,f)}function m(Q,p,f,h){if(typeof Q.on=="function")h.once?Q.once(p,f):Q.on(p,f);else if(typeof Q.addEventListener=="function")Q.addEventListener(p,function B(J){h.once&&Q.removeEventListener(p,B),f(J)});else throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof Q)}}}),$Reader=$protobuf.Reader,$Writer=$protobuf.Writer,$util=$protobuf.util,$root=$protobuf.roots.default||($protobuf.roots.default={}),sesame=$root.sesame=(()=>{const d={};return d.v1=function(){const o={};return o.audio=function(){const l={};return l.AudioMixerChannelType=function(){const i={},r=Object.create(i);return r[i[0]="AUDIO_MIXER_CHANNEL_TYPE_UNSPECIFIED"]=0,r[i[1]="AUDIO_MIXER_CHANNEL_TYPE_MONO"]=1,r[i[2]="AUDIO_MIXER_CHANNEL_TYPE_STEREO"]=2,r}(),l.AudioPluginParam=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.id=0,i.prototype.floatValue=0,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.id!=null&&Object.hasOwnProperty.call(t,"id")&&e.uint32(8).uint32(t.id),t.floatValue!=null&&Object.hasOwnProperty.call(t,"floatValue")&&e.uint32(21).float(t.floatValue),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.audio.AudioPluginParam;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.id=t.uint32();break}case 2:{a.floatValue=t.float();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.id!=null&&t.hasOwnProperty("id")&&!$util.isInteger(t.id)?"id: integer expected":t.floatValue!=null&&t.hasOwnProperty("floatValue")&&typeof t.floatValue!="number"?"floatValue: number expected":null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.audio.AudioPluginParam)return t;let e=new $root.sesame.v1.audio.AudioPluginParam;return t.id!=null&&(e.id=t.id>>>0),t.floatValue!=null&&(e.floatValue=Number(t.floatValue)),e},i.toObject=function(t,e){e||(e={});let n={};return e.defaults&&(n.id=0,n.floatValue=0),t.id!=null&&t.hasOwnProperty("id")&&(n.id=t.id),t.floatValue!=null&&t.hasOwnProperty("floatValue")&&(n.floatValue=e.json&&!isFinite(t.floatValue)?String(t.floatValue):t.floatValue),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.audio.AudioPluginParam"},i}(),l.AudioPluginParamStatus=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.id=0,i.prototype.floatValue=0,i.prototype.label="",i.prototype.displayValue="",i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.id!=null&&Object.hasOwnProperty.call(t,"id")&&e.uint32(8).uint32(t.id),t.floatValue!=null&&Object.hasOwnProperty.call(t,"floatValue")&&e.uint32(21).float(t.floatValue),t.label!=null&&Object.hasOwnProperty.call(t,"label")&&e.uint32(26).string(t.label),t.displayValue!=null&&Object.hasOwnProperty.call(t,"displayValue")&&e.uint32(34).string(t.displayValue),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.audio.AudioPluginParamStatus;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.id=t.uint32();break}case 2:{a.floatValue=t.float();break}case 3:{a.label=t.string();break}case 4:{a.displayValue=t.string();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.id!=null&&t.hasOwnProperty("id")&&!$util.isInteger(t.id)?"id: integer expected":t.floatValue!=null&&t.hasOwnProperty("floatValue")&&typeof t.floatValue!="number"?"floatValue: number expected":t.label!=null&&t.hasOwnProperty("label")&&!$util.isString(t.label)?"label: string expected":t.displayValue!=null&&t.hasOwnProperty("displayValue")&&!$util.isString(t.displayValue)?"displayValue: string expected":null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.audio.AudioPluginParamStatus)return t;let e=new $root.sesame.v1.audio.AudioPluginParamStatus;return t.id!=null&&(e.id=t.id>>>0),t.floatValue!=null&&(e.floatValue=Number(t.floatValue)),t.label!=null&&(e.label=String(t.label)),t.displayValue!=null&&(e.displayValue=String(t.displayValue)),e},i.toObject=function(t,e){e||(e={});let n={};return e.defaults&&(n.id=0,n.floatValue=0,n.label="",n.displayValue=""),t.id!=null&&t.hasOwnProperty("id")&&(n.id=t.id),t.floatValue!=null&&t.hasOwnProperty("floatValue")&&(n.floatValue=e.json&&!isFinite(t.floatValue)?String(t.floatValue):t.floatValue),t.label!=null&&t.hasOwnProperty("label")&&(n.label=t.label),t.displayValue!=null&&t.hasOwnProperty("displayValue")&&(n.displayValue=t.displayValue),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.audio.AudioPluginParamStatus"},i}(),l.AudioPlugin=function(){function i(r){if(this.params=[],this.auxInputMixIds=[],r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.id="",i.prototype.type="",i.prototype.params=$util.emptyArray,i.prototype.auxInputMixIds=$util.emptyArray,i.create=function(t){return new i(t)},i.encode=function(t,e){if(e||(e=$Writer.create()),t.id!=null&&Object.hasOwnProperty.call(t,"id")&&e.uint32(10).string(t.id),t.type!=null&&Object.hasOwnProperty.call(t,"type")&&e.uint32(18).string(t.type),t.params!=null&&t.params.length)for(let n=0;n<t.params.length;++n)$root.sesame.v1.audio.AudioPluginParam.encode(t.params[n],e.uint32(26).fork()).ldelim();if(t.auxInputMixIds!=null&&t.auxInputMixIds.length)for(let n=0;n<t.auxInputMixIds.length;++n)e.uint32(34).string(t.auxInputMixIds[n]);return e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.audio.AudioPlugin;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.id=t.string();break}case 2:{a.type=t.string();break}case 3:{a.params&&a.params.length||(a.params=[]),a.params.push($root.sesame.v1.audio.AudioPluginParam.decode(t,t.uint32()));break}case 4:{a.auxInputMixIds&&a.auxInputMixIds.length||(a.auxInputMixIds=[]),a.auxInputMixIds.push(t.string());break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.id!=null&&t.hasOwnProperty("id")&&!$util.isString(t.id))return"id: string expected";if(t.type!=null&&t.hasOwnProperty("type")&&!$util.isString(t.type))return"type: string expected";if(t.params!=null&&t.hasOwnProperty("params")){if(!Array.isArray(t.params))return"params: array expected";for(let e=0;e<t.params.length;++e){let n=$root.sesame.v1.audio.AudioPluginParam.verify(t.params[e]);if(n)return"params."+n}}if(t.auxInputMixIds!=null&&t.hasOwnProperty("auxInputMixIds")){if(!Array.isArray(t.auxInputMixIds))return"auxInputMixIds: array expected";for(let e=0;e<t.auxInputMixIds.length;++e)if(!$util.isString(t.auxInputMixIds[e]))return"auxInputMixIds: string[] expected"}return null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.audio.AudioPlugin)return t;let e=new $root.sesame.v1.audio.AudioPlugin;if(t.id!=null&&(e.id=String(t.id)),t.type!=null&&(e.type=String(t.type)),t.params){if(!Array.isArray(t.params))throw TypeError(".sesame.v1.audio.AudioPlugin.params: array expected");e.params=[];for(let n=0;n<t.params.length;++n){if(typeof t.params[n]!="object")throw TypeError(".sesame.v1.audio.AudioPlugin.params: object expected");e.params[n]=$root.sesame.v1.audio.AudioPluginParam.fromObject(t.params[n])}}if(t.auxInputMixIds){if(!Array.isArray(t.auxInputMixIds))throw TypeError(".sesame.v1.audio.AudioPlugin.auxInputMixIds: array expected");e.auxInputMixIds=[];for(let n=0;n<t.auxInputMixIds.length;++n)e.auxInputMixIds[n]=String(t.auxInputMixIds[n])}return e},i.toObject=function(t,e){e||(e={});let n={};if((e.arrays||e.defaults)&&(n.params=[],n.auxInputMixIds=[]),e.defaults&&(n.id="",n.type=""),t.id!=null&&t.hasOwnProperty("id")&&(n.id=t.id),t.type!=null&&t.hasOwnProperty("type")&&(n.type=t.type),t.params&&t.params.length){n.params=[];for(let s=0;s<t.params.length;++s)n.params[s]=$root.sesame.v1.audio.AudioPluginParam.toObject(t.params[s],e)}if(t.auxInputMixIds&&t.auxInputMixIds.length){n.auxInputMixIds=[];for(let s=0;s<t.auxInputMixIds.length;++s)n.auxInputMixIds[s]=t.auxInputMixIds[s]}return n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.audio.AudioPlugin"},i}(),l.AudioMixerChannel=function(){function i(r){if(this.sourceChannels=[],this.plugins=[],r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.id="",i.prototype.sourceId="",i.prototype.channelType=0,i.prototype.sourceChannels=$util.emptyArray,i.prototype.level=0,i.prototype.pan=0,i.prototype.plugins=$util.emptyArray,i.create=function(t){return new i(t)},i.encode=function(t,e){if(e||(e=$Writer.create()),t.id!=null&&Object.hasOwnProperty.call(t,"id")&&e.uint32(10).string(t.id),t.sourceId!=null&&Object.hasOwnProperty.call(t,"sourceId")&&e.uint32(18).string(t.sourceId),t.channelType!=null&&Object.hasOwnProperty.call(t,"channelType")&&e.uint32(24).int32(t.channelType),t.sourceChannels!=null&&t.sourceChannels.length){e.uint32(34).fork();for(let n=0;n<t.sourceChannels.length;++n)e.uint32(t.sourceChannels[n]);e.ldelim()}if(t.level!=null&&Object.hasOwnProperty.call(t,"level")&&e.uint32(45).float(t.level),t.pan!=null&&Object.hasOwnProperty.call(t,"pan")&&e.uint32(53).float(t.pan),t.plugins!=null&&t.plugins.length)for(let n=0;n<t.plugins.length;++n)$root.sesame.v1.audio.AudioPlugin.encode(t.plugins[n],e.uint32(58).fork()).ldelim();return e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.audio.AudioMixerChannel;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.id=t.string();break}case 2:{a.sourceId=t.string();break}case 3:{a.channelType=t.int32();break}case 4:{if(a.sourceChannels&&a.sourceChannels.length||(a.sourceChannels=[]),(U&7)===2){let u=t.uint32()+t.pos;for(;t.pos<u;)a.sourceChannels.push(t.uint32())}else a.sourceChannels.push(t.uint32());break}case 5:{a.level=t.float();break}case 6:{a.pan=t.float();break}case 7:{a.plugins&&a.plugins.length||(a.plugins=[]),a.plugins.push($root.sesame.v1.audio.AudioPlugin.decode(t,t.uint32()));break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.id!=null&&t.hasOwnProperty("id")&&!$util.isString(t.id))return"id: string expected";if(t.sourceId!=null&&t.hasOwnProperty("sourceId")&&!$util.isString(t.sourceId))return"sourceId: string expected";if(t.channelType!=null&&t.hasOwnProperty("channelType"))switch(t.channelType){default:return"channelType: enum value expected";case 0:case 1:case 2:break}if(t.sourceChannels!=null&&t.hasOwnProperty("sourceChannels")){if(!Array.isArray(t.sourceChannels))return"sourceChannels: array expected";for(let e=0;e<t.sourceChannels.length;++e)if(!$util.isInteger(t.sourceChannels[e]))return"sourceChannels: integer[] expected"}if(t.level!=null&&t.hasOwnProperty("level")&&typeof t.level!="number")return"level: number expected";if(t.pan!=null&&t.hasOwnProperty("pan")&&typeof t.pan!="number")return"pan: number expected";if(t.plugins!=null&&t.hasOwnProperty("plugins")){if(!Array.isArray(t.plugins))return"plugins: array expected";for(let e=0;e<t.plugins.length;++e){let n=$root.sesame.v1.audio.AudioPlugin.verify(t.plugins[e]);if(n)return"plugins."+n}}return null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.audio.AudioMixerChannel)return t;let e=new $root.sesame.v1.audio.AudioMixerChannel;switch(t.id!=null&&(e.id=String(t.id)),t.sourceId!=null&&(e.sourceId=String(t.sourceId)),t.channelType){default:if(typeof t.channelType=="number"){e.channelType=t.channelType;break}break;case"AUDIO_MIXER_CHANNEL_TYPE_UNSPECIFIED":case 0:e.channelType=0;break;case"AUDIO_MIXER_CHANNEL_TYPE_MONO":case 1:e.channelType=1;break;case"AUDIO_MIXER_CHANNEL_TYPE_STEREO":case 2:e.channelType=2;break}if(t.sourceChannels){if(!Array.isArray(t.sourceChannels))throw TypeError(".sesame.v1.audio.AudioMixerChannel.sourceChannels: array expected");e.sourceChannels=[];for(let n=0;n<t.sourceChannels.length;++n)e.sourceChannels[n]=t.sourceChannels[n]>>>0}if(t.level!=null&&(e.level=Number(t.level)),t.pan!=null&&(e.pan=Number(t.pan)),t.plugins){if(!Array.isArray(t.plugins))throw TypeError(".sesame.v1.audio.AudioMixerChannel.plugins: array expected");e.plugins=[];for(let n=0;n<t.plugins.length;++n){if(typeof t.plugins[n]!="object")throw TypeError(".sesame.v1.audio.AudioMixerChannel.plugins: object expected");e.plugins[n]=$root.sesame.v1.audio.AudioPlugin.fromObject(t.plugins[n])}}return e},i.toObject=function(t,e){e||(e={});let n={};if((e.arrays||e.defaults)&&(n.sourceChannels=[],n.plugins=[]),e.defaults&&(n.id="",n.sourceId="",n.channelType=e.enums===String?"AUDIO_MIXER_CHANNEL_TYPE_UNSPECIFIED":0,n.level=0,n.pan=0),t.id!=null&&t.hasOwnProperty("id")&&(n.id=t.id),t.sourceId!=null&&t.hasOwnProperty("sourceId")&&(n.sourceId=t.sourceId),t.channelType!=null&&t.hasOwnProperty("channelType")&&(n.channelType=e.enums===String?$root.sesame.v1.audio.AudioMixerChannelType[t.channelType]===void 0?t.channelType:$root.sesame.v1.audio.AudioMixerChannelType[t.channelType]:t.channelType),t.sourceChannels&&t.sourceChannels.length){n.sourceChannels=[];for(let s=0;s<t.sourceChannels.length;++s)n.sourceChannels[s]=t.sourceChannels[s]}if(t.level!=null&&t.hasOwnProperty("level")&&(n.level=e.json&&!isFinite(t.level)?String(t.level):t.level),t.pan!=null&&t.hasOwnProperty("pan")&&(n.pan=e.json&&!isFinite(t.pan)?String(t.pan):t.pan),t.plugins&&t.plugins.length){n.plugins=[];for(let s=0;s<t.plugins.length;++s)n.plugins[s]=$root.sesame.v1.audio.AudioPlugin.toObject(t.plugins[s],e)}return n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.audio.AudioMixerChannel"},i}(),l.AudioMixerConfig=function(){function i(r){if(this.channels=[],r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.channels=$util.emptyArray,i.prototype.outputType=0,i.prototype.order=0,i.create=function(t){return new i(t)},i.encode=function(t,e){if(e||(e=$Writer.create()),t.channels!=null&&t.channels.length)for(let n=0;n<t.channels.length;++n)$root.sesame.v1.audio.AudioMixerChannel.encode(t.channels[n],e.uint32(10).fork()).ldelim();return t.outputType!=null&&Object.hasOwnProperty.call(t,"outputType")&&e.uint32(16).int32(t.outputType),t.order!=null&&Object.hasOwnProperty.call(t,"order")&&e.uint32(24).uint32(t.order),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.audio.AudioMixerConfig;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.channels&&a.channels.length||(a.channels=[]),a.channels.push($root.sesame.v1.audio.AudioMixerChannel.decode(t,t.uint32()));break}case 2:{a.outputType=t.int32();break}case 3:{a.order=t.uint32();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.channels!=null&&t.hasOwnProperty("channels")){if(!Array.isArray(t.channels))return"channels: array expected";for(let e=0;e<t.channels.length;++e){let n=$root.sesame.v1.audio.AudioMixerChannel.verify(t.channels[e]);if(n)return"channels."+n}}if(t.outputType!=null&&t.hasOwnProperty("outputType"))switch(t.outputType){default:return"outputType: enum value expected";case 0:case 1:case 2:break}return t.order!=null&&t.hasOwnProperty("order")&&!$util.isInteger(t.order)?"order: integer expected":null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.audio.AudioMixerConfig)return t;let e=new $root.sesame.v1.audio.AudioMixerConfig;if(t.channels){if(!Array.isArray(t.channels))throw TypeError(".sesame.v1.audio.AudioMixerConfig.channels: array expected");e.channels=[];for(let n=0;n<t.channels.length;++n){if(typeof t.channels[n]!="object")throw TypeError(".sesame.v1.audio.AudioMixerConfig.channels: object expected");e.channels[n]=$root.sesame.v1.audio.AudioMixerChannel.fromObject(t.channels[n])}}switch(t.outputType){default:if(typeof t.outputType=="number"){e.outputType=t.outputType;break}break;case"AUDIO_MIXER_CHANNEL_TYPE_UNSPECIFIED":case 0:e.outputType=0;break;case"AUDIO_MIXER_CHANNEL_TYPE_MONO":case 1:e.outputType=1;break;case"AUDIO_MIXER_CHANNEL_TYPE_STEREO":case 2:e.outputType=2;break}return t.order!=null&&(e.order=t.order>>>0),e},i.toObject=function(t,e){e||(e={});let n={};if((e.arrays||e.defaults)&&(n.channels=[]),e.defaults&&(n.outputType=e.enums===String?"AUDIO_MIXER_CHANNEL_TYPE_UNSPECIFIED":0,n.order=0),t.channels&&t.channels.length){n.channels=[];for(let s=0;s<t.channels.length;++s)n.channels[s]=$root.sesame.v1.audio.AudioMixerChannel.toObject(t.channels[s],e)}return t.outputType!=null&&t.hasOwnProperty("outputType")&&(n.outputType=e.enums===String?$root.sesame.v1.audio.AudioMixerChannelType[t.outputType]===void 0?t.outputType:$root.sesame.v1.audio.AudioMixerChannelType[t.outputType]:t.outputType),t.order!=null&&t.hasOwnProperty("order")&&(n.order=t.order),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.audio.AudioMixerConfig"},i}(),l.AudioMixerAddRequest=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.id="",i.prototype.config=null,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.id!=null&&Object.hasOwnProperty.call(t,"id")&&e.uint32(10).string(t.id),t.config!=null&&Object.hasOwnProperty.call(t,"config")&&$root.sesame.v1.audio.AudioMixerConfig.encode(t.config,e.uint32(18).fork()).ldelim(),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.audio.AudioMixerAddRequest;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.id=t.string();break}case 2:{a.config=$root.sesame.v1.audio.AudioMixerConfig.decode(t,t.uint32());break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.id!=null&&t.hasOwnProperty("id")&&!$util.isString(t.id))return"id: string expected";if(t.config!=null&&t.hasOwnProperty("config")){let e=$root.sesame.v1.audio.AudioMixerConfig.verify(t.config);if(e)return"config."+e}return null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.audio.AudioMixerAddRequest)return t;let e=new $root.sesame.v1.audio.AudioMixerAddRequest;if(t.id!=null&&(e.id=String(t.id)),t.config!=null){if(typeof t.config!="object")throw TypeError(".sesame.v1.audio.AudioMixerAddRequest.config: object expected");e.config=$root.sesame.v1.audio.AudioMixerConfig.fromObject(t.config)}return e},i.toObject=function(t,e){e||(e={});let n={};return e.defaults&&(n.id="",n.config=null),t.id!=null&&t.hasOwnProperty("id")&&(n.id=t.id),t.config!=null&&t.hasOwnProperty("config")&&(n.config=$root.sesame.v1.audio.AudioMixerConfig.toObject(t.config,e)),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.audio.AudioMixerAddRequest"},i}(),l.AudioMixerUpdateRequest=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.id="",i.prototype.config=null,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.id!=null&&Object.hasOwnProperty.call(t,"id")&&e.uint32(10).string(t.id),t.config!=null&&Object.hasOwnProperty.call(t,"config")&&$root.sesame.v1.audio.AudioMixerConfig.encode(t.config,e.uint32(18).fork()).ldelim(),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.audio.AudioMixerUpdateRequest;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.id=t.string();break}case 2:{a.config=$root.sesame.v1.audio.AudioMixerConfig.decode(t,t.uint32());break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.id!=null&&t.hasOwnProperty("id")&&!$util.isString(t.id))return"id: string expected";if(t.config!=null&&t.hasOwnProperty("config")){let e=$root.sesame.v1.audio.AudioMixerConfig.verify(t.config);if(e)return"config."+e}return null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.audio.AudioMixerUpdateRequest)return t;let e=new $root.sesame.v1.audio.AudioMixerUpdateRequest;if(t.id!=null&&(e.id=String(t.id)),t.config!=null){if(typeof t.config!="object")throw TypeError(".sesame.v1.audio.AudioMixerUpdateRequest.config: object expected");e.config=$root.sesame.v1.audio.AudioMixerConfig.fromObject(t.config)}return e},i.toObject=function(t,e){e||(e={});let n={};return e.defaults&&(n.id="",n.config=null),t.id!=null&&t.hasOwnProperty("id")&&(n.id=t.id),t.config!=null&&t.hasOwnProperty("config")&&(n.config=$root.sesame.v1.audio.AudioMixerConfig.toObject(t.config,e)),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.audio.AudioMixerUpdateRequest"},i}(),l.AudioMixerRemoveRequest=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.id="",i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.id!=null&&Object.hasOwnProperty.call(t,"id")&&e.uint32(10).string(t.id),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.audio.AudioMixerRemoveRequest;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.id=t.string();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.id!=null&&t.hasOwnProperty("id")&&!$util.isString(t.id)?"id: string expected":null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.audio.AudioMixerRemoveRequest)return t;let e=new $root.sesame.v1.audio.AudioMixerRemoveRequest;return t.id!=null&&(e.id=String(t.id)),e},i.toObject=function(t,e){e||(e={});let n={};return e.defaults&&(n.id=""),t.id!=null&&t.hasOwnProperty("id")&&(n.id=t.id),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.audio.AudioMixerRemoveRequest"},i}(),l.AudioChannelAddRequest=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.mixerId="",i.prototype.channelConfig=null,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.mixerId!=null&&Object.hasOwnProperty.call(t,"mixerId")&&e.uint32(10).string(t.mixerId),t.channelConfig!=null&&Object.hasOwnProperty.call(t,"channelConfig")&&$root.sesame.v1.audio.AudioMixerChannel.encode(t.channelConfig,e.uint32(18).fork()).ldelim(),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.audio.AudioChannelAddRequest;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.mixerId=t.string();break}case 2:{a.channelConfig=$root.sesame.v1.audio.AudioMixerChannel.decode(t,t.uint32());break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.mixerId!=null&&t.hasOwnProperty("mixerId")&&!$util.isString(t.mixerId))return"mixerId: string expected";if(t.channelConfig!=null&&t.hasOwnProperty("channelConfig")){let e=$root.sesame.v1.audio.AudioMixerChannel.verify(t.channelConfig);if(e)return"channelConfig."+e}return null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.audio.AudioChannelAddRequest)return t;let e=new $root.sesame.v1.audio.AudioChannelAddRequest;if(t.mixerId!=null&&(e.mixerId=String(t.mixerId)),t.channelConfig!=null){if(typeof t.channelConfig!="object")throw TypeError(".sesame.v1.audio.AudioChannelAddRequest.channelConfig: object expected");e.channelConfig=$root.sesame.v1.audio.AudioMixerChannel.fromObject(t.channelConfig)}return e},i.toObject=function(t,e){e||(e={});let n={};return e.defaults&&(n.mixerId="",n.channelConfig=null),t.mixerId!=null&&t.hasOwnProperty("mixerId")&&(n.mixerId=t.mixerId),t.channelConfig!=null&&t.hasOwnProperty("channelConfig")&&(n.channelConfig=$root.sesame.v1.audio.AudioMixerChannel.toObject(t.channelConfig,e)),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.audio.AudioChannelAddRequest"},i}(),l.AudioChannelRemoveRequest=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.mixerId="",i.prototype.channelId="",i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.mixerId!=null&&Object.hasOwnProperty.call(t,"mixerId")&&e.uint32(10).string(t.mixerId),t.channelId!=null&&Object.hasOwnProperty.call(t,"channelId")&&e.uint32(18).string(t.channelId),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.audio.AudioChannelRemoveRequest;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.mixerId=t.string();break}case 2:{a.channelId=t.string();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.mixerId!=null&&t.hasOwnProperty("mixerId")&&!$util.isString(t.mixerId)?"mixerId: string expected":t.channelId!=null&&t.hasOwnProperty("channelId")&&!$util.isString(t.channelId)?"channelId: string expected":null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.audio.AudioChannelRemoveRequest)return t;let e=new $root.sesame.v1.audio.AudioChannelRemoveRequest;return t.mixerId!=null&&(e.mixerId=String(t.mixerId)),t.channelId!=null&&(e.channelId=String(t.channelId)),e},i.toObject=function(t,e){e||(e={});let n={};return e.defaults&&(n.mixerId="",n.channelId=""),t.mixerId!=null&&t.hasOwnProperty("mixerId")&&(n.mixerId=t.mixerId),t.channelId!=null&&t.hasOwnProperty("channelId")&&(n.channelId=t.channelId),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.audio.AudioChannelRemoveRequest"},i}(),l.AudioChannelPluginStatus=function(){function i(r){if(this.params=[],r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.id="",i.prototype.type="",i.prototype.params=$util.emptyArray,i.create=function(t){return new i(t)},i.encode=function(t,e){if(e||(e=$Writer.create()),t.id!=null&&Object.hasOwnProperty.call(t,"id")&&e.uint32(10).string(t.id),t.type!=null&&Object.hasOwnProperty.call(t,"type")&&e.uint32(18).string(t.type),t.params!=null&&t.params.length)for(let n=0;n<t.params.length;++n)$root.sesame.v1.audio.AudioPluginParamStatus.encode(t.params[n],e.uint32(26).fork()).ldelim();return e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.audio.AudioChannelPluginStatus;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.id=t.string();break}case 2:{a.type=t.string();break}case 3:{a.params&&a.params.length||(a.params=[]),a.params.push($root.sesame.v1.audio.AudioPluginParamStatus.decode(t,t.uint32()));break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.id!=null&&t.hasOwnProperty("id")&&!$util.isString(t.id))return"id: string expected";if(t.type!=null&&t.hasOwnProperty("type")&&!$util.isString(t.type))return"type: string expected";if(t.params!=null&&t.hasOwnProperty("params")){if(!Array.isArray(t.params))return"params: array expected";for(let e=0;e<t.params.length;++e){let n=$root.sesame.v1.audio.AudioPluginParamStatus.verify(t.params[e]);if(n)return"params."+n}}return null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.audio.AudioChannelPluginStatus)return t;let e=new $root.sesame.v1.audio.AudioChannelPluginStatus;if(t.id!=null&&(e.id=String(t.id)),t.type!=null&&(e.type=String(t.type)),t.params){if(!Array.isArray(t.params))throw TypeError(".sesame.v1.audio.AudioChannelPluginStatus.params: array expected");e.params=[];for(let n=0;n<t.params.length;++n){if(typeof t.params[n]!="object")throw TypeError(".sesame.v1.audio.AudioChannelPluginStatus.params: object expected");e.params[n]=$root.sesame.v1.audio.AudioPluginParamStatus.fromObject(t.params[n])}}return e},i.toObject=function(t,e){e||(e={});let n={};if((e.arrays||e.defaults)&&(n.params=[]),e.defaults&&(n.id="",n.type=""),t.id!=null&&t.hasOwnProperty("id")&&(n.id=t.id),t.type!=null&&t.hasOwnProperty("type")&&(n.type=t.type),t.params&&t.params.length){n.params=[];for(let s=0;s<t.params.length;++s)n.params[s]=$root.sesame.v1.audio.AudioPluginParamStatus.toObject(t.params[s],e)}return n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.audio.AudioChannelPluginStatus"},i}(),l.AudioChannelStatus=function(){function i(r){if(this.vu=[],this.plugins=[],r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.id="",i.prototype.outputType=0,i.prototype.level=0,i.prototype.pan=0,i.prototype.vu=$util.emptyArray,i.prototype.hasData=!1,i.prototype.readErrors=0,i.prototype.plugins=$util.emptyArray,i.create=function(t){return new i(t)},i.encode=function(t,e){if(e||(e=$Writer.create()),t.id!=null&&Object.hasOwnProperty.call(t,"id")&&e.uint32(10).string(t.id),t.outputType!=null&&Object.hasOwnProperty.call(t,"outputType")&&e.uint32(16).int32(t.outputType),t.level!=null&&Object.hasOwnProperty.call(t,"level")&&e.uint32(29).float(t.level),t.pan!=null&&Object.hasOwnProperty.call(t,"pan")&&e.uint32(37).float(t.pan),t.vu!=null&&t.vu.length){e.uint32(42).fork();for(let n=0;n<t.vu.length;++n)e.float(t.vu[n]);e.ldelim()}if(t.hasData!=null&&Object.hasOwnProperty.call(t,"hasData")&&e.uint32(48).bool(t.hasData),t.readErrors!=null&&Object.hasOwnProperty.call(t,"readErrors")&&e.uint32(56).uint32(t.readErrors),t.plugins!=null&&t.plugins.length)for(let n=0;n<t.plugins.length;++n)$root.sesame.v1.audio.AudioChannelPluginStatus.encode(t.plugins[n],e.uint32(66).fork()).ldelim();return e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.audio.AudioChannelStatus;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.id=t.string();break}case 2:{a.outputType=t.int32();break}case 3:{a.level=t.float();break}case 4:{a.pan=t.float();break}case 5:{if(a.vu&&a.vu.length||(a.vu=[]),(U&7)===2){let u=t.uint32()+t.pos;for(;t.pos<u;)a.vu.push(t.float())}else a.vu.push(t.float());break}case 6:{a.hasData=t.bool();break}case 7:{a.readErrors=t.uint32();break}case 8:{a.plugins&&a.plugins.length||(a.plugins=[]),a.plugins.push($root.sesame.v1.audio.AudioChannelPluginStatus.decode(t,t.uint32()));break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.id!=null&&t.hasOwnProperty("id")&&!$util.isString(t.id))return"id: string expected";if(t.outputType!=null&&t.hasOwnProperty("outputType"))switch(t.outputType){default:return"outputType: enum value expected";case 0:case 1:case 2:break}if(t.level!=null&&t.hasOwnProperty("level")&&typeof t.level!="number")return"level: number expected";if(t.pan!=null&&t.hasOwnProperty("pan")&&typeof t.pan!="number")return"pan: number expected";if(t.vu!=null&&t.hasOwnProperty("vu")){if(!Array.isArray(t.vu))return"vu: array expected";for(let e=0;e<t.vu.length;++e)if(typeof t.vu[e]!="number")return"vu: number[] expected"}if(t.hasData!=null&&t.hasOwnProperty("hasData")&&typeof t.hasData!="boolean")return"hasData: boolean expected";if(t.readErrors!=null&&t.hasOwnProperty("readErrors")&&!$util.isInteger(t.readErrors))return"readErrors: integer expected";if(t.plugins!=null&&t.hasOwnProperty("plugins")){if(!Array.isArray(t.plugins))return"plugins: array expected";for(let e=0;e<t.plugins.length;++e){let n=$root.sesame.v1.audio.AudioChannelPluginStatus.verify(t.plugins[e]);if(n)return"plugins."+n}}return null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.audio.AudioChannelStatus)return t;let e=new $root.sesame.v1.audio.AudioChannelStatus;switch(t.id!=null&&(e.id=String(t.id)),t.outputType){default:if(typeof t.outputType=="number"){e.outputType=t.outputType;break}break;case"AUDIO_MIXER_CHANNEL_TYPE_UNSPECIFIED":case 0:e.outputType=0;break;case"AUDIO_MIXER_CHANNEL_TYPE_MONO":case 1:e.outputType=1;break;case"AUDIO_MIXER_CHANNEL_TYPE_STEREO":case 2:e.outputType=2;break}if(t.level!=null&&(e.level=Number(t.level)),t.pan!=null&&(e.pan=Number(t.pan)),t.vu){if(!Array.isArray(t.vu))throw TypeError(".sesame.v1.audio.AudioChannelStatus.vu: array expected");e.vu=[];for(let n=0;n<t.vu.length;++n)e.vu[n]=Number(t.vu[n])}if(t.hasData!=null&&(e.hasData=!!t.hasData),t.readErrors!=null&&(e.readErrors=t.readErrors>>>0),t.plugins){if(!Array.isArray(t.plugins))throw TypeError(".sesame.v1.audio.AudioChannelStatus.plugins: array expected");e.plugins=[];for(let n=0;n<t.plugins.length;++n){if(typeof t.plugins[n]!="object")throw TypeError(".sesame.v1.audio.AudioChannelStatus.plugins: object expected");e.plugins[n]=$root.sesame.v1.audio.AudioChannelPluginStatus.fromObject(t.plugins[n])}}return e},i.toObject=function(t,e){e||(e={});let n={};if((e.arrays||e.defaults)&&(n.vu=[],n.plugins=[]),e.defaults&&(n.id="",n.outputType=e.enums===String?"AUDIO_MIXER_CHANNEL_TYPE_UNSPECIFIED":0,n.level=0,n.pan=0,n.hasData=!1,n.readErrors=0),t.id!=null&&t.hasOwnProperty("id")&&(n.id=t.id),t.outputType!=null&&t.hasOwnProperty("outputType")&&(n.outputType=e.enums===String?$root.sesame.v1.audio.AudioMixerChannelType[t.outputType]===void 0?t.outputType:$root.sesame.v1.audio.AudioMixerChannelType[t.outputType]:t.outputType),t.level!=null&&t.hasOwnProperty("level")&&(n.level=e.json&&!isFinite(t.level)?String(t.level):t.level),t.pan!=null&&t.hasOwnProperty("pan")&&(n.pan=e.json&&!isFinite(t.pan)?String(t.pan):t.pan),t.vu&&t.vu.length){n.vu=[];for(let s=0;s<t.vu.length;++s)n.vu[s]=e.json&&!isFinite(t.vu[s])?String(t.vu[s]):t.vu[s]}if(t.hasData!=null&&t.hasOwnProperty("hasData")&&(n.hasData=t.hasData),t.readErrors!=null&&t.hasOwnProperty("readErrors")&&(n.readErrors=t.readErrors),t.plugins&&t.plugins.length){n.plugins=[];for(let s=0;s<t.plugins.length;++s)n.plugins[s]=$root.sesame.v1.audio.AudioChannelPluginStatus.toObject(t.plugins[s],e)}return n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.audio.AudioChannelStatus"},i}(),l.AudioMixerStatus=function(){function i(r){if(this.vu=[],this.channels=[],r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.id="",i.prototype.outputType=0,i.prototype.vu=$util.emptyArray,i.prototype.channels=$util.emptyArray,i.create=function(t){return new i(t)},i.encode=function(t,e){if(e||(e=$Writer.create()),t.id!=null&&Object.hasOwnProperty.call(t,"id")&&e.uint32(10).string(t.id),t.outputType!=null&&Object.hasOwnProperty.call(t,"outputType")&&e.uint32(16).int32(t.outputType),t.vu!=null&&t.vu.length){e.uint32(26).fork();for(let n=0;n<t.vu.length;++n)e.float(t.vu[n]);e.ldelim()}if(t.channels!=null&&t.channels.length)for(let n=0;n<t.channels.length;++n)$root.sesame.v1.audio.AudioChannelStatus.encode(t.channels[n],e.uint32(34).fork()).ldelim();return e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.audio.AudioMixerStatus;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.id=t.string();break}case 2:{a.outputType=t.int32();break}case 3:{if(a.vu&&a.vu.length||(a.vu=[]),(U&7)===2){let u=t.uint32()+t.pos;for(;t.pos<u;)a.vu.push(t.float())}else a.vu.push(t.float());break}case 4:{a.channels&&a.channels.length||(a.channels=[]),a.channels.push($root.sesame.v1.audio.AudioChannelStatus.decode(t,t.uint32()));break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.id!=null&&t.hasOwnProperty("id")&&!$util.isString(t.id))return"id: string expected";if(t.outputType!=null&&t.hasOwnProperty("outputType"))switch(t.outputType){default:return"outputType: enum value expected";case 0:case 1:case 2:break}if(t.vu!=null&&t.hasOwnProperty("vu")){if(!Array.isArray(t.vu))return"vu: array expected";for(let e=0;e<t.vu.length;++e)if(typeof t.vu[e]!="number")return"vu: number[] expected"}if(t.channels!=null&&t.hasOwnProperty("channels")){if(!Array.isArray(t.channels))return"channels: array expected";for(let e=0;e<t.channels.length;++e){let n=$root.sesame.v1.audio.AudioChannelStatus.verify(t.channels[e]);if(n)return"channels."+n}}return null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.audio.AudioMixerStatus)return t;let e=new $root.sesame.v1.audio.AudioMixerStatus;switch(t.id!=null&&(e.id=String(t.id)),t.outputType){default:if(typeof t.outputType=="number"){e.outputType=t.outputType;break}break;case"AUDIO_MIXER_CHANNEL_TYPE_UNSPECIFIED":case 0:e.outputType=0;break;case"AUDIO_MIXER_CHANNEL_TYPE_MONO":case 1:e.outputType=1;break;case"AUDIO_MIXER_CHANNEL_TYPE_STEREO":case 2:e.outputType=2;break}if(t.vu){if(!Array.isArray(t.vu))throw TypeError(".sesame.v1.audio.AudioMixerStatus.vu: array expected");e.vu=[];for(let n=0;n<t.vu.length;++n)e.vu[n]=Number(t.vu[n])}if(t.channels){if(!Array.isArray(t.channels))throw TypeError(".sesame.v1.audio.AudioMixerStatus.channels: array expected");e.channels=[];for(let n=0;n<t.channels.length;++n){if(typeof t.channels[n]!="object")throw TypeError(".sesame.v1.audio.AudioMixerStatus.channels: object expected");e.channels[n]=$root.sesame.v1.audio.AudioChannelStatus.fromObject(t.channels[n])}}return e},i.toObject=function(t,e){e||(e={});let n={};if((e.arrays||e.defaults)&&(n.vu=[],n.channels=[]),e.defaults&&(n.id="",n.outputType=e.enums===String?"AUDIO_MIXER_CHANNEL_TYPE_UNSPECIFIED":0),t.id!=null&&t.hasOwnProperty("id")&&(n.id=t.id),t.outputType!=null&&t.hasOwnProperty("outputType")&&(n.outputType=e.enums===String?$root.sesame.v1.audio.AudioMixerChannelType[t.outputType]===void 0?t.outputType:$root.sesame.v1.audio.AudioMixerChannelType[t.outputType]:t.outputType),t.vu&&t.vu.length){n.vu=[];for(let s=0;s<t.vu.length;++s)n.vu[s]=e.json&&!isFinite(t.vu[s])?String(t.vu[s]):t.vu[s]}if(t.channels&&t.channels.length){n.channels=[];for(let s=0;s<t.channels.length;++s)n.channels[s]=$root.sesame.v1.audio.AudioChannelStatus.toObject(t.channels[s],e)}return n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.audio.AudioMixerStatus"},i}(),l}(),o.commands=function(){const l={};return l.CommandListItem=function(){function i(t){if(this.transactionDeps=[],t)for(let e=Object.keys(t),n=0;n<e.length;++n)t[e[n]]!=null&&(this[e[n]]=t[e[n]])}i.prototype.timeOffsetUs=$util.Long?$util.Long.fromBits(0,0,!1):0,i.prototype.addSource=null,i.prototype.updateSource=null,i.prototype.removeSource=null,i.prototype.addOutput=null,i.prototype.updateOutput=null,i.prototype.removeOutput=null,i.prototype.addCompositor=null,i.prototype.removeCompositor=null,i.prototype.clearCompositor=null,i.prototype.addNode=null,i.prototype.removeNode=null,i.prototype.setProperty=null,i.prototype.animateProperty=null,i.prototype.addAudioMixer=null,i.prototype.updateAudioMixer=null,i.prototype.removeAudioMixer=null,i.prototype.addAudioChannel=null,i.prototype.removeAudioChannel=null,i.prototype.updateSourceTransport=null,i.prototype.loadPlaylist=null,i.prototype.ejectPlaylist=null,i.prototype.callback=null,i.prototype.setSourceMetadata=null,i.prototype.transactionId=null,i.prototype.transactionDeps=$util.emptyArray;let r;return Object.defineProperty(i.prototype,"item",{get:$util.oneOfGetter(r=["addSource","updateSource","removeSource","addOutput","updateOutput","removeOutput","addCompositor","removeCompositor","clearCompositor","addNode","removeNode","setProperty","animateProperty","addAudioMixer","updateAudioMixer","removeAudioMixer","addAudioChannel","removeAudioChannel","updateSourceTransport","loadPlaylist","ejectPlaylist","callback","setSourceMetadata"]),set:$util.oneOfSetter(r)}),Object.defineProperty(i.prototype,"_transactionId",{get:$util.oneOfGetter(r=["transactionId"]),set:$util.oneOfSetter(r)}),i.create=function(e){return new i(e)},i.encode=function(e,n){if(n||(n=$Writer.create()),e.timeOffsetUs!=null&&Object.hasOwnProperty.call(e,"timeOffsetUs")&&n.uint32(8).int64(e.timeOffsetUs),e.addSource!=null&&Object.hasOwnProperty.call(e,"addSource")&&$root.sesame.v1.sources.SourceAddRequest.encode(e.addSource,n.uint32(18).fork()).ldelim(),e.updateSource!=null&&Object.hasOwnProperty.call(e,"updateSource")&&$root.sesame.v1.sources.SourceUpdateRequest.encode(e.updateSource,n.uint32(26).fork()).ldelim(),e.removeSource!=null&&Object.hasOwnProperty.call(e,"removeSource")&&$root.sesame.v1.sources.SourceRemoveRequest.encode(e.removeSource,n.uint32(34).fork()).ldelim(),e.addOutput!=null&&Object.hasOwnProperty.call(e,"addOutput")&&$root.sesame.v1.outputs.OutputAddRequest.encode(e.addOutput,n.uint32(42).fork()).ldelim(),e.updateOutput!=null&&Object.hasOwnProperty.call(e,"updateOutput")&&$root.sesame.v1.outputs.OutputUpdateRequest.encode(e.updateOutput,n.uint32(50).fork()).ldelim(),e.removeOutput!=null&&Object.hasOwnProperty.call(e,"removeOutput")&&$root.sesame.v1.outputs.OutputRemoveRequest.encode(e.removeOutput,n.uint32(58).fork()).ldelim(),e.addCompositor!=null&&Object.hasOwnProperty.call(e,"addCompositor")&&$root.sesame.v1.compositor.CompositorAddRequest.encode(e.addCompositor,n.uint32(66).fork()).ldelim(),e.removeCompositor!=null&&Object.hasOwnProperty.call(e,"removeCompositor")&&$root.sesame.v1.compositor.CompositorRemoveRequest.encode(e.removeCompositor,n.uint32(74).fork()).ldelim(),e.clearCompositor!=null&&Object.hasOwnProperty.call(e,"clearCompositor")&&$root.sesame.v1.compositor.CompositorClearRequest.encode(e.clearCompositor,n.uint32(82).fork()).ldelim(),e.addNode!=null&&Object.hasOwnProperty.call(e,"addNode")&&$root.sesame.v1.compositor.NodeAddRequest.encode(e.addNode,n.uint32(90).fork()).ldelim(),e.removeNode!=null&&Object.hasOwnProperty.call(e,"removeNode")&&$root.sesame.v1.compositor.NodeRemoveRequest.encode(e.removeNode,n.uint32(98).fork()).ldelim(),e.setProperty!=null&&Object.hasOwnProperty.call(e,"setProperty")&&$root.sesame.v1.compositor.PropertySetRequest.encode(e.setProperty,n.uint32(106).fork()).ldelim(),e.animateProperty!=null&&Object.hasOwnProperty.call(e,"animateProperty")&&$root.sesame.v1.compositor.PropertyAnimateRequest.encode(e.animateProperty,n.uint32(114).fork()).ldelim(),e.addAudioMixer!=null&&Object.hasOwnProperty.call(e,"addAudioMixer")&&$root.sesame.v1.audio.AudioMixerAddRequest.encode(e.addAudioMixer,n.uint32(122).fork()).ldelim(),e.updateAudioMixer!=null&&Object.hasOwnProperty.call(e,"updateAudioMixer")&&$root.sesame.v1.audio.AudioMixerUpdateRequest.encode(e.updateAudioMixer,n.uint32(130).fork()).ldelim(),e.removeAudioMixer!=null&&Object.hasOwnProperty.call(e,"removeAudioMixer")&&$root.sesame.v1.audio.AudioMixerRemoveRequest.encode(e.removeAudioMixer,n.uint32(138).fork()).ldelim(),e.addAudioChannel!=null&&Object.hasOwnProperty.call(e,"addAudioChannel")&&$root.sesame.v1.audio.AudioChannelAddRequest.encode(e.addAudioChannel,n.uint32(146).fork()).ldelim(),e.removeAudioChannel!=null&&Object.hasOwnProperty.call(e,"removeAudioChannel")&&$root.sesame.v1.audio.AudioChannelRemoveRequest.encode(e.removeAudioChannel,n.uint32(154).fork()).ldelim(),e.updateSourceTransport!=null&&Object.hasOwnProperty.call(e,"updateSourceTransport")&&$root.sesame.v1.sources.SourceTransportCommand.encode(e.updateSourceTransport,n.uint32(162).fork()).ldelim(),e.loadPlaylist!=null&&Object.hasOwnProperty.call(e,"loadPlaylist")&&$root.sesame.v1.sources.LoadPlaylistRequest.encode(e.loadPlaylist,n.uint32(170).fork()).ldelim(),e.ejectPlaylist!=null&&Object.hasOwnProperty.call(e,"ejectPlaylist")&&$root.sesame.v1.sources.EjectPlaylistRequest.encode(e.ejectPlaylist,n.uint32(178).fork()).ldelim(),e.callback!=null&&Object.hasOwnProperty.call(e,"callback")&&$root.sesame.v1.common.Callback.encode(e.callback,n.uint32(186).fork()).ldelim(),e.setSourceMetadata!=null&&Object.hasOwnProperty.call(e,"setSourceMetadata")&&$root.sesame.v1.sources.SourceMetadataSetRequest.encode(e.setSourceMetadata,n.uint32(194).fork()).ldelim(),e.transactionId!=null&&Object.hasOwnProperty.call(e,"transactionId")&&n.uint32(200).uint32(e.transactionId),e.transactionDeps!=null&&e.transactionDeps.length){n.uint32(210).fork();for(let s=0;s<e.transactionDeps.length;++s)n.uint32(e.transactionDeps[s]);n.ldelim()}return n},i.encodeDelimited=function(e,n){return this.encode(e,n).ldelim()},i.decode=function(e,n,s){e instanceof $Reader||(e=$Reader.create(e));let a=n===void 0?e.len:e.pos+n,U=new $root.sesame.v1.commands.CommandListItem;for(;e.pos<a;){let u=e.uint32();if(u===s)break;switch(u>>>3){case 1:{U.timeOffsetUs=e.int64();break}case 2:{U.addSource=$root.sesame.v1.sources.SourceAddRequest.decode(e,e.uint32());break}case 3:{U.updateSource=$root.sesame.v1.sources.SourceUpdateRequest.decode(e,e.uint32());break}case 4:{U.removeSource=$root.sesame.v1.sources.SourceRemoveRequest.decode(e,e.uint32());break}case 5:{U.addOutput=$root.sesame.v1.outputs.OutputAddRequest.decode(e,e.uint32());break}case 6:{U.updateOutput=$root.sesame.v1.outputs.OutputUpdateRequest.decode(e,e.uint32());break}case 7:{U.removeOutput=$root.sesame.v1.outputs.OutputRemoveRequest.decode(e,e.uint32());break}case 8:{U.addCompositor=$root.sesame.v1.compositor.CompositorAddRequest.decode(e,e.uint32());break}case 9:{U.removeCompositor=$root.sesame.v1.compositor.CompositorRemoveRequest.decode(e,e.uint32());break}case 10:{U.clearCompositor=$root.sesame.v1.compositor.CompositorClearRequest.decode(e,e.uint32());break}case 11:{U.addNode=$root.sesame.v1.compositor.NodeAddRequest.decode(e,e.uint32());break}case 12:{U.removeNode=$root.sesame.v1.compositor.NodeRemoveRequest.decode(e,e.uint32());break}case 13:{U.setProperty=$root.sesame.v1.compositor.PropertySetRequest.decode(e,e.uint32());break}case 14:{U.animateProperty=$root.sesame.v1.compositor.PropertyAnimateRequest.decode(e,e.uint32());break}case 15:{U.addAudioMixer=$root.sesame.v1.audio.AudioMixerAddRequest.decode(e,e.uint32());break}case 16:{U.updateAudioMixer=$root.sesame.v1.audio.AudioMixerUpdateRequest.decode(e,e.uint32());break}case 17:{U.removeAudioMixer=$root.sesame.v1.audio.AudioMixerRemoveRequest.decode(e,e.uint32());break}case 18:{U.addAudioChannel=$root.sesame.v1.audio.AudioChannelAddRequest.decode(e,e.uint32());break}case 19:{U.removeAudioChannel=$root.sesame.v1.audio.AudioChannelRemoveRequest.decode(e,e.uint32());break}case 20:{U.updateSourceTransport=$root.sesame.v1.sources.SourceTransportCommand.decode(e,e.uint32());break}case 21:{U.loadPlaylist=$root.sesame.v1.sources.LoadPlaylistRequest.decode(e,e.uint32());break}case 22:{U.ejectPlaylist=$root.sesame.v1.sources.EjectPlaylistRequest.decode(e,e.uint32());break}case 23:{U.callback=$root.sesame.v1.common.Callback.decode(e,e.uint32());break}case 24:{U.setSourceMetadata=$root.sesame.v1.sources.SourceMetadataSetRequest.decode(e,e.uint32());break}case 25:{U.transactionId=e.uint32();break}case 26:{if(U.transactionDeps&&U.transactionDeps.length||(U.transactionDeps=[]),(u&7)===2){let F=e.uint32()+e.pos;for(;e.pos<F;)U.transactionDeps.push(e.uint32())}else U.transactionDeps.push(e.uint32());break}default:e.skipType(u&7);break}}return U},i.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},i.verify=function(e){if(typeof e!="object"||e===null)return"object expected";let n={};if(e.timeOffsetUs!=null&&e.hasOwnProperty("timeOffsetUs")&&!$util.isInteger(e.timeOffsetUs)&&!(e.timeOffsetUs&&$util.isInteger(e.timeOffsetUs.low)&&$util.isInteger(e.timeOffsetUs.high)))return"timeOffsetUs: integer|Long expected";if(e.addSource!=null&&e.hasOwnProperty("addSource")){n.item=1;{let s=$root.sesame.v1.sources.SourceAddRequest.verify(e.addSource);if(s)return"addSource."+s}}if(e.updateSource!=null&&e.hasOwnProperty("updateSource")){if(n.item===1)return"item: multiple values";n.item=1;{let s=$root.sesame.v1.sources.SourceUpdateRequest.verify(e.updateSource);if(s)return"updateSource."+s}}if(e.removeSource!=null&&e.hasOwnProperty("removeSource")){if(n.item===1)return"item: multiple values";n.item=1;{let s=$root.sesame.v1.sources.SourceRemoveRequest.verify(e.removeSource);if(s)return"removeSource."+s}}if(e.addOutput!=null&&e.hasOwnProperty("addOutput")){if(n.item===1)return"item: multiple values";n.item=1;{let s=$root.sesame.v1.outputs.OutputAddRequest.verify(e.addOutput);if(s)return"addOutput."+s}}if(e.updateOutput!=null&&e.hasOwnProperty("updateOutput")){if(n.item===1)return"item: multiple values";n.item=1;{let s=$root.sesame.v1.outputs.OutputUpdateRequest.verify(e.updateOutput);if(s)return"updateOutput."+s}}if(e.removeOutput!=null&&e.hasOwnProperty("removeOutput")){if(n.item===1)return"item: multiple values";n.item=1;{let s=$root.sesame.v1.outputs.OutputRemoveRequest.verify(e.removeOutput);if(s)return"removeOutput."+s}}if(e.addCompositor!=null&&e.hasOwnProperty("addCompositor")){if(n.item===1)return"item: multiple values";n.item=1;{let s=$root.sesame.v1.compositor.CompositorAddRequest.verify(e.addCompositor);if(s)return"addCompositor."+s}}if(e.removeCompositor!=null&&e.hasOwnProperty("removeCompositor")){if(n.item===1)return"item: multiple values";n.item=1;{let s=$root.sesame.v1.compositor.CompositorRemoveRequest.verify(e.removeCompositor);if(s)return"removeCompositor."+s}}if(e.clearCompositor!=null&&e.hasOwnProperty("clearCompositor")){if(n.item===1)return"item: multiple values";n.item=1;{let s=$root.sesame.v1.compositor.CompositorClearRequest.verify(e.clearCompositor);if(s)return"clearCompositor."+s}}if(e.addNode!=null&&e.hasOwnProperty("addNode")){if(n.item===1)return"item: multiple values";n.item=1;{let s=$root.sesame.v1.compositor.NodeAddRequest.verify(e.addNode);if(s)return"addNode."+s}}if(e.removeNode!=null&&e.hasOwnProperty("removeNode")){if(n.item===1)return"item: multiple values";n.item=1;{let s=$root.sesame.v1.compositor.NodeRemoveRequest.verify(e.removeNode);if(s)return"removeNode."+s}}if(e.setProperty!=null&&e.hasOwnProperty("setProperty")){if(n.item===1)return"item: multiple values";n.item=1;{let s=$root.sesame.v1.compositor.PropertySetRequest.verify(e.setProperty);if(s)return"setProperty."+s}}if(e.animateProperty!=null&&e.hasOwnProperty("animateProperty")){if(n.item===1)return"item: multiple values";n.item=1;{let s=$root.sesame.v1.compositor.PropertyAnimateRequest.verify(e.animateProperty);if(s)return"animateProperty."+s}}if(e.addAudioMixer!=null&&e.hasOwnProperty("addAudioMixer")){if(n.item===1)return"item: multiple values";n.item=1;{let s=$root.sesame.v1.audio.AudioMixerAddRequest.verify(e.addAudioMixer);if(s)return"addAudioMixer."+s}}if(e.updateAudioMixer!=null&&e.hasOwnProperty("updateAudioMixer")){if(n.item===1)return"item: multiple values";n.item=1;{let s=$root.sesame.v1.audio.AudioMixerUpdateRequest.verify(e.updateAudioMixer);if(s)return"updateAudioMixer."+s}}if(e.removeAudioMixer!=null&&e.hasOwnProperty("removeAudioMixer")){if(n.item===1)return"item: multiple values";n.item=1;{let s=$root.sesame.v1.audio.AudioMixerRemoveRequest.verify(e.removeAudioMixer);if(s)return"removeAudioMixer."+s}}if(e.addAudioChannel!=null&&e.hasOwnProperty("addAudioChannel")){if(n.item===1)return"item: multiple values";n.item=1;{let s=$root.sesame.v1.audio.AudioChannelAddRequest.verify(e.addAudioChannel);if(s)return"addAudioChannel."+s}}if(e.removeAudioChannel!=null&&e.hasOwnProperty("removeAudioChannel")){if(n.item===1)return"item: multiple values";n.item=1;{let s=$root.sesame.v1.audio.AudioChannelRemoveRequest.verify(e.removeAudioChannel);if(s)return"removeAudioChannel."+s}}if(e.updateSourceTransport!=null&&e.hasOwnProperty("updateSourceTransport")){if(n.item===1)return"item: multiple values";n.item=1;{let s=$root.sesame.v1.sources.SourceTransportCommand.verify(e.updateSourceTransport);if(s)return"updateSourceTransport."+s}}if(e.loadPlaylist!=null&&e.hasOwnProperty("loadPlaylist")){if(n.item===1)return"item: multiple values";n.item=1;{let s=$root.sesame.v1.sources.LoadPlaylistRequest.verify(e.loadPlaylist);if(s)return"loadPlaylist."+s}}if(e.ejectPlaylist!=null&&e.hasOwnProperty("ejectPlaylist")){if(n.item===1)return"item: multiple values";n.item=1;{let s=$root.sesame.v1.sources.EjectPlaylistRequest.verify(e.ejectPlaylist);if(s)return"ejectPlaylist."+s}}if(e.callback!=null&&e.hasOwnProperty("callback")){if(n.item===1)return"item: multiple values";n.item=1;{let s=$root.sesame.v1.common.Callback.verify(e.callback);if(s)return"callback."+s}}if(e.setSourceMetadata!=null&&e.hasOwnProperty("setSourceMetadata")){if(n.item===1)return"item: multiple values";n.item=1;{let s=$root.sesame.v1.sources.SourceMetadataSetRequest.verify(e.setSourceMetadata);if(s)return"setSourceMetadata."+s}}if(e.transactionId!=null&&e.hasOwnProperty("transactionId")&&(n._transactionId=1,!$util.isInteger(e.transactionId)))return"transactionId: integer expected";if(e.transactionDeps!=null&&e.hasOwnProperty("transactionDeps")){if(!Array.isArray(e.transactionDeps))return"transactionDeps: array expected";for(let s=0;s<e.transactionDeps.length;++s)if(!$util.isInteger(e.transactionDeps[s]))return"transactionDeps: integer[] expected"}return null},i.fromObject=function(e){if(e instanceof $root.sesame.v1.commands.CommandListItem)return e;let n=new $root.sesame.v1.commands.CommandListItem;if(e.timeOffsetUs!=null&&($util.Long?(n.timeOffsetUs=$util.Long.fromValue(e.timeOffsetUs)).unsigned=!1:typeof e.timeOffsetUs=="string"?n.timeOffsetUs=parseInt(e.timeOffsetUs,10):typeof e.timeOffsetUs=="number"?n.timeOffsetUs=e.timeOffsetUs:typeof e.timeOffsetUs=="object"&&(n.timeOffsetUs=new $util.LongBits(e.timeOffsetUs.low>>>0,e.timeOffsetUs.high>>>0).toNumber())),e.addSource!=null){if(typeof e.addSource!="object")throw TypeError(".sesame.v1.commands.CommandListItem.addSource: object expected");n.addSource=$root.sesame.v1.sources.SourceAddRequest.fromObject(e.addSource)}if(e.updateSource!=null){if(typeof e.updateSource!="object")throw TypeError(".sesame.v1.commands.CommandListItem.updateSource: object expected");n.updateSource=$root.sesame.v1.sources.SourceUpdateRequest.fromObject(e.updateSource)}if(e.removeSource!=null){if(typeof e.removeSource!="object")throw TypeError(".sesame.v1.commands.CommandListItem.removeSource: object expected");n.removeSource=$root.sesame.v1.sources.SourceRemoveRequest.fromObject(e.removeSource)}if(e.addOutput!=null){if(typeof e.addOutput!="object")throw TypeError(".sesame.v1.commands.CommandListItem.addOutput: object expected");n.addOutput=$root.sesame.v1.outputs.OutputAddRequest.fromObject(e.addOutput)}if(e.updateOutput!=null){if(typeof e.updateOutput!="object")throw TypeError(".sesame.v1.commands.CommandListItem.updateOutput: object expected");n.updateOutput=$root.sesame.v1.outputs.OutputUpdateRequest.fromObject(e.updateOutput)}if(e.removeOutput!=null){if(typeof e.removeOutput!="object")throw TypeError(".sesame.v1.commands.CommandListItem.removeOutput: object expected");n.removeOutput=$root.sesame.v1.outputs.OutputRemoveRequest.fromObject(e.removeOutput)}if(e.addCompositor!=null){if(typeof e.addCompositor!="object")throw TypeError(".sesame.v1.commands.CommandListItem.addCompositor: object expected");n.addCompositor=$root.sesame.v1.compositor.CompositorAddRequest.fromObject(e.addCompositor)}if(e.removeCompositor!=null){if(typeof e.removeCompositor!="object")throw TypeError(".sesame.v1.commands.CommandListItem.removeCompositor: object expected");n.removeCompositor=$root.sesame.v1.compositor.CompositorRemoveRequest.fromObject(e.removeCompositor)}if(e.clearCompositor!=null){if(typeof e.clearCompositor!="object")throw TypeError(".sesame.v1.commands.CommandListItem.clearCompositor: object expected");n.clearCompositor=$root.sesame.v1.compositor.CompositorClearRequest.fromObject(e.clearCompositor)}if(e.addNode!=null){if(typeof e.addNode!="object")throw TypeError(".sesame.v1.commands.CommandListItem.addNode: object expected");n.addNode=$root.sesame.v1.compositor.NodeAddRequest.fromObject(e.addNode)}if(e.removeNode!=null){if(typeof e.removeNode!="object")throw TypeError(".sesame.v1.commands.CommandListItem.removeNode: object expected");n.removeNode=$root.sesame.v1.compositor.NodeRemoveRequest.fromObject(e.removeNode)}if(e.setProperty!=null){if(typeof e.setProperty!="object")throw TypeError(".sesame.v1.commands.CommandListItem.setProperty: object expected");n.setProperty=$root.sesame.v1.compositor.PropertySetRequest.fromObject(e.setProperty)}if(e.animateProperty!=null){if(typeof e.animateProperty!="object")throw TypeError(".sesame.v1.commands.CommandListItem.animateProperty: object expected");n.animateProperty=$root.sesame.v1.compositor.PropertyAnimateRequest.fromObject(e.animateProperty)}if(e.addAudioMixer!=null){if(typeof e.addAudioMixer!="object")throw TypeError(".sesame.v1.commands.CommandListItem.addAudioMixer: object expected");n.addAudioMixer=$root.sesame.v1.audio.AudioMixerAddRequest.fromObject(e.addAudioMixer)}if(e.updateAudioMixer!=null){if(typeof e.updateAudioMixer!="object")throw TypeError(".sesame.v1.commands.CommandListItem.updateAudioMixer: object expected");n.updateAudioMixer=$root.sesame.v1.audio.AudioMixerUpdateRequest.fromObject(e.updateAudioMixer)}if(e.removeAudioMixer!=null){if(typeof e.removeAudioMixer!="object")throw TypeError(".sesame.v1.commands.CommandListItem.removeAudioMixer: object expected");n.removeAudioMixer=$root.sesame.v1.audio.AudioMixerRemoveRequest.fromObject(e.removeAudioMixer)}if(e.addAudioChannel!=null){if(typeof e.addAudioChannel!="object")throw TypeError(".sesame.v1.commands.CommandListItem.addAudioChannel: object expected");n.addAudioChannel=$root.sesame.v1.audio.AudioChannelAddRequest.fromObject(e.addAudioChannel)}if(e.removeAudioChannel!=null){if(typeof e.removeAudioChannel!="object")throw TypeError(".sesame.v1.commands.CommandListItem.removeAudioChannel: object expected");n.removeAudioChannel=$root.sesame.v1.audio.AudioChannelRemoveRequest.fromObject(e.removeAudioChannel)}if(e.updateSourceTransport!=null){if(typeof e.updateSourceTransport!="object")throw TypeError(".sesame.v1.commands.CommandListItem.updateSourceTransport: object expected");n.updateSourceTransport=$root.sesame.v1.sources.SourceTransportCommand.fromObject(e.updateSourceTransport)}if(e.loadPlaylist!=null){if(typeof e.loadPlaylist!="object")throw TypeError(".sesame.v1.commands.CommandListItem.loadPlaylist: object expected");n.loadPlaylist=$root.sesame.v1.sources.LoadPlaylistRequest.fromObject(e.loadPlaylist)}if(e.ejectPlaylist!=null){if(typeof e.ejectPlaylist!="object")throw TypeError(".sesame.v1.commands.CommandListItem.ejectPlaylist: object expected");n.ejectPlaylist=$root.sesame.v1.sources.EjectPlaylistRequest.fromObject(e.ejectPlaylist)}if(e.callback!=null){if(typeof e.callback!="object")throw TypeError(".sesame.v1.commands.CommandListItem.callback: object expected");n.callback=$root.sesame.v1.common.Callback.fromObject(e.callback)}if(e.setSourceMetadata!=null){if(typeof e.setSourceMetadata!="object")throw TypeError(".sesame.v1.commands.CommandListItem.setSourceMetadata: object expected");n.setSourceMetadata=$root.sesame.v1.sources.SourceMetadataSetRequest.fromObject(e.setSourceMetadata)}if(e.transactionId!=null&&(n.transactionId=e.transactionId>>>0),e.transactionDeps){if(!Array.isArray(e.transactionDeps))throw TypeError(".sesame.v1.commands.CommandListItem.transactionDeps: array expected");n.transactionDeps=[];for(let s=0;s<e.transactionDeps.length;++s)n.transactionDeps[s]=e.transactionDeps[s]>>>0}return n},i.toObject=function(e,n){n||(n={});let s={};if((n.arrays||n.defaults)&&(s.transactionDeps=[]),n.defaults)if($util.Long){let a=new $util.Long(0,0,!1);s.timeOffsetUs=n.longs===String?a.toString():n.longs===Number?a.toNumber():a}else s.timeOffsetUs=n.longs===String?"0":0;if(e.timeOffsetUs!=null&&e.hasOwnProperty("timeOffsetUs")&&(typeof e.timeOffsetUs=="number"?s.timeOffsetUs=n.longs===String?String(e.timeOffsetUs):e.timeOffsetUs:s.timeOffsetUs=n.longs===String?$util.Long.prototype.toString.call(e.timeOffsetUs):n.longs===Number?new $util.LongBits(e.timeOffsetUs.low>>>0,e.timeOffsetUs.high>>>0).toNumber():e.timeOffsetUs),e.addSource!=null&&e.hasOwnProperty("addSource")&&(s.addSource=$root.sesame.v1.sources.SourceAddRequest.toObject(e.addSource,n),n.oneofs&&(s.item="addSource")),e.updateSource!=null&&e.hasOwnProperty("updateSource")&&(s.updateSource=$root.sesame.v1.sources.SourceUpdateRequest.toObject(e.updateSource,n),n.oneofs&&(s.item="updateSource")),e.removeSource!=null&&e.hasOwnProperty("removeSource")&&(s.removeSource=$root.sesame.v1.sources.SourceRemoveRequest.toObject(e.removeSource,n),n.oneofs&&(s.item="removeSource")),e.addOutput!=null&&e.hasOwnProperty("addOutput")&&(s.addOutput=$root.sesame.v1.outputs.OutputAddRequest.toObject(e.addOutput,n),n.oneofs&&(s.item="addOutput")),e.updateOutput!=null&&e.hasOwnProperty("updateOutput")&&(s.updateOutput=$root.sesame.v1.outputs.OutputUpdateRequest.toObject(e.updateOutput,n),n.oneofs&&(s.item="updateOutput")),e.removeOutput!=null&&e.hasOwnProperty("removeOutput")&&(s.removeOutput=$root.sesame.v1.outputs.OutputRemoveRequest.toObject(e.removeOutput,n),n.oneofs&&(s.item="removeOutput")),e.addCompositor!=null&&e.hasOwnProperty("addCompositor")&&(s.addCompositor=$root.sesame.v1.compositor.CompositorAddRequest.toObject(e.addCompositor,n),n.oneofs&&(s.item="addCompositor")),e.removeCompositor!=null&&e.hasOwnProperty("removeCompositor")&&(s.removeCompositor=$root.sesame.v1.compositor.CompositorRemoveRequest.toObject(e.removeCompositor,n),n.oneofs&&(s.item="removeCompositor")),e.clearCompositor!=null&&e.hasOwnProperty("clearCompositor")&&(s.clearCompositor=$root.sesame.v1.compositor.CompositorClearRequest.toObject(e.clearCompositor,n),n.oneofs&&(s.item="clearCompositor")),e.addNode!=null&&e.hasOwnProperty("addNode")&&(s.addNode=$root.sesame.v1.compositor.NodeAddRequest.toObject(e.addNode,n),n.oneofs&&(s.item="addNode")),e.removeNode!=null&&e.hasOwnProperty("removeNode")&&(s.removeNode=$root.sesame.v1.compositor.NodeRemoveRequest.toObject(e.removeNode,n),n.oneofs&&(s.item="removeNode")),e.setProperty!=null&&e.hasOwnProperty("setProperty")&&(s.setProperty=$root.sesame.v1.compositor.PropertySetRequest.toObject(e.setProperty,n),n.oneofs&&(s.item="setProperty")),e.animateProperty!=null&&e.hasOwnProperty("animateProperty")&&(s.animateProperty=$root.sesame.v1.compositor.PropertyAnimateRequest.toObject(e.animateProperty,n),n.oneofs&&(s.item="animateProperty")),e.addAudioMixer!=null&&e.hasOwnProperty("addAudioMixer")&&(s.addAudioMixer=$root.sesame.v1.audio.AudioMixerAddRequest.toObject(e.addAudioMixer,n),n.oneofs&&(s.item="addAudioMixer")),e.updateAudioMixer!=null&&e.hasOwnProperty("updateAudioMixer")&&(s.updateAudioMixer=$root.sesame.v1.audio.AudioMixerUpdateRequest.toObject(e.updateAudioMixer,n),n.oneofs&&(s.item="updateAudioMixer")),e.removeAudioMixer!=null&&e.hasOwnProperty("removeAudioMixer")&&(s.removeAudioMixer=$root.sesame.v1.audio.AudioMixerRemoveRequest.toObject(e.removeAudioMixer,n),n.oneofs&&(s.item="removeAudioMixer")),e.addAudioChannel!=null&&e.hasOwnProperty("addAudioChannel")&&(s.addAudioChannel=$root.sesame.v1.audio.AudioChannelAddRequest.toObject(e.addAudioChannel,n),n.oneofs&&(s.item="addAudioChannel")),e.removeAudioChannel!=null&&e.hasOwnProperty("removeAudioChannel")&&(s.removeAudioChannel=$root.sesame.v1.audio.AudioChannelRemoveRequest.toObject(e.removeAudioChannel,n),n.oneofs&&(s.item="removeAudioChannel")),e.updateSourceTransport!=null&&e.hasOwnProperty("updateSourceTransport")&&(s.updateSourceTransport=$root.sesame.v1.sources.SourceTransportCommand.toObject(e.updateSourceTransport,n),n.oneofs&&(s.item="updateSourceTransport")),e.loadPlaylist!=null&&e.hasOwnProperty("loadPlaylist")&&(s.loadPlaylist=$root.sesame.v1.sources.LoadPlaylistRequest.toObject(e.loadPlaylist,n),n.oneofs&&(s.item="loadPlaylist")),e.ejectPlaylist!=null&&e.hasOwnProperty("ejectPlaylist")&&(s.ejectPlaylist=$root.sesame.v1.sources.EjectPlaylistRequest.toObject(e.ejectPlaylist,n),n.oneofs&&(s.item="ejectPlaylist")),e.callback!=null&&e.hasOwnProperty("callback")&&(s.callback=$root.sesame.v1.common.Callback.toObject(e.callback,n),n.oneofs&&(s.item="callback")),e.setSourceMetadata!=null&&e.hasOwnProperty("setSourceMetadata")&&(s.setSourceMetadata=$root.sesame.v1.sources.SourceMetadataSetRequest.toObject(e.setSourceMetadata,n),n.oneofs&&(s.item="setSourceMetadata")),e.transactionId!=null&&e.hasOwnProperty("transactionId")&&(s.transactionId=e.transactionId,n.oneofs&&(s._transactionId="transactionId")),e.transactionDeps&&e.transactionDeps.length){s.transactionDeps=[];for(let a=0;a<e.transactionDeps.length;++a)s.transactionDeps[a]=e.transactionDeps[a]}return s},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(e){return e===void 0&&(e="type.googleapis.com"),e+"/sesame.v1.commands.CommandListItem"},i}(),l.CommandList=function(){function i(r){if(this.commandList=[],r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.commandList=$util.emptyArray,i.create=function(t){return new i(t)},i.encode=function(t,e){if(e||(e=$Writer.create()),t.commandList!=null&&t.commandList.length)for(let n=0;n<t.commandList.length;++n)$root.sesame.v1.commands.CommandListItem.encode(t.commandList[n],e.uint32(10).fork()).ldelim();return e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.commands.CommandList;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.commandList&&a.commandList.length||(a.commandList=[]),a.commandList.push($root.sesame.v1.commands.CommandListItem.decode(t,t.uint32()));break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.commandList!=null&&t.hasOwnProperty("commandList")){if(!Array.isArray(t.commandList))return"commandList: array expected";for(let e=0;e<t.commandList.length;++e){let n=$root.sesame.v1.commands.CommandListItem.verify(t.commandList[e]);if(n)return"commandList."+n}}return null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.commands.CommandList)return t;let e=new $root.sesame.v1.commands.CommandList;if(t.commandList){if(!Array.isArray(t.commandList))throw TypeError(".sesame.v1.commands.CommandList.commandList: array expected");e.commandList=[];for(let n=0;n<t.commandList.length;++n){if(typeof t.commandList[n]!="object")throw TypeError(".sesame.v1.commands.CommandList.commandList: object expected");e.commandList[n]=$root.sesame.v1.commands.CommandListItem.fromObject(t.commandList[n])}}return e},i.toObject=function(t,e){e||(e={});let n={};if((e.arrays||e.defaults)&&(n.commandList=[]),t.commandList&&t.commandList.length){n.commandList=[];for(let s=0;s<t.commandList.length;++s)n.commandList[s]=$root.sesame.v1.commands.CommandListItem.toObject(t.commandList[s],e)}return n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.commands.CommandList"},i}(),l.CommandExecutionResponse=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.commands.CommandExecutionResponse;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":null},i.fromObject=function(t){return t instanceof $root.sesame.v1.commands.CommandExecutionResponse?t:new $root.sesame.v1.commands.CommandExecutionResponse},i.toObject=function(){return{}},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.commands.CommandExecutionResponse"},i}(),l}(),o.common=function(){const l={};return l.ConnectionState=function(){const i={},r=Object.create(i);return r[i[0]="CONNECTION_STATE_UNSPECIFIED"]=0,r[i[1]="CONNECTION_STATE_INITIALIZING"]=1,r[i[2]="CONNECTION_STATE_CONNECTING"]=2,r[i[3]="CONNECTION_STATE_ONLINE"]=3,r[i[4]="CONNECTION_STATE_DEGRADED"]=4,r[i[5]="CONNECTION_STATE_OFFLINE"]=5,r[i[6]="CONNECTION_STATE_ERROR"]=6,r}(),l.VideoFormat=function(){const i={},r=Object.create(i);return r[i[0]="VIDEO_FORMAT_UNSPECIFIED"]=0,r[i[1]="VIDEO_FORMAT_1080_50I"]=1,r[i[2]="VIDEO_FORMAT_1080_50P"]=2,r[i[3]="VIDEO_FORMAT_1080_60I"]=3,r[i[4]="VIDEO_FORMAT_1080_60P"]=4,r}(),l.CodecType=function(){const i={},r=Object.create(i);return r[i[0]="CODEC_TYPE_UNSPECIFIED"]=0,r[i[1]="CODEC_TYPE_VIDEO_VP8"]=1,r[i[2]="CODEC_TYPE_VIDEO_VP9"]=2,r[i[3]="CODEC_TYPE_VIDEO_AVC"]=3,r[i[4]="CODEC_TYPE_VIDEO_HEVC"]=4,r[i[5]="CODEC_TYPE_VIDEO_AV1"]=5,r[i[6]="CODEC_TYPE_VIDEO_PRORES"]=6,r[i[7]="CODEC_TYPE_VIDEO_DNXHR"]=7,r[i[64]="CODEC_TYPE_AUDIO_OPUS"]=64,r[i[65]="CODEC_TYPE_AUDIO_AAC"]=65,r[i[66]="CODEC_TYPE_AUDIO_PCM"]=66,r[i[67]="CODEC_TYPE_AUDIO_PCM_S24LE"]=67,r}(),l.Empty=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.common.Empty;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":null},i.fromObject=function(t){return t instanceof $root.sesame.v1.common.Empty?t:new $root.sesame.v1.common.Empty},i.toObject=function(){return{}},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.common.Empty"},i}(),l.Vec4=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.x=0,i.prototype.y=0,i.prototype.z=0,i.prototype.w=0,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.x!=null&&Object.hasOwnProperty.call(t,"x")&&e.uint32(13).float(t.x),t.y!=null&&Object.hasOwnProperty.call(t,"y")&&e.uint32(21).float(t.y),t.z!=null&&Object.hasOwnProperty.call(t,"z")&&e.uint32(29).float(t.z),t.w!=null&&Object.hasOwnProperty.call(t,"w")&&e.uint32(37).float(t.w),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.common.Vec4;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.x=t.float();break}case 2:{a.y=t.float();break}case 3:{a.z=t.float();break}case 4:{a.w=t.float();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.x!=null&&t.hasOwnProperty("x")&&typeof t.x!="number"?"x: number expected":t.y!=null&&t.hasOwnProperty("y")&&typeof t.y!="number"?"y: number expected":t.z!=null&&t.hasOwnProperty("z")&&typeof t.z!="number"?"z: number expected":t.w!=null&&t.hasOwnProperty("w")&&typeof t.w!="number"?"w: number expected":null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.common.Vec4)return t;let e=new $root.sesame.v1.common.Vec4;return t.x!=null&&(e.x=Number(t.x)),t.y!=null&&(e.y=Number(t.y)),t.z!=null&&(e.z=Number(t.z)),t.w!=null&&(e.w=Number(t.w)),e},i.toObject=function(t,e){e||(e={});let n={};return e.defaults&&(n.x=0,n.y=0,n.z=0,n.w=0),t.x!=null&&t.hasOwnProperty("x")&&(n.x=e.json&&!isFinite(t.x)?String(t.x):t.x),t.y!=null&&t.hasOwnProperty("y")&&(n.y=e.json&&!isFinite(t.y)?String(t.y):t.y),t.z!=null&&t.hasOwnProperty("z")&&(n.z=e.json&&!isFinite(t.z)?String(t.z):t.z),t.w!=null&&t.hasOwnProperty("w")&&(n.w=e.json&&!isFinite(t.w)?String(t.w):t.w),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.common.Vec4"},i}(),l.PropValue=function(){function i(t){if(t)for(let e=Object.keys(t),n=0;n<e.length;++n)t[e[n]]!=null&&(this[e[n]]=t[e[n]])}i.prototype.floatValue=null,i.prototype.vec4Value=null,i.prototype.stringValue=null,i.prototype.boolValue=null,i.prototype.intValue=null;let r;return Object.defineProperty(i.prototype,"value",{get:$util.oneOfGetter(r=["floatValue","vec4Value","stringValue","boolValue","intValue"]),set:$util.oneOfSetter(r)}),i.create=function(e){return new i(e)},i.encode=function(e,n){return n||(n=$Writer.create()),e.floatValue!=null&&Object.hasOwnProperty.call(e,"floatValue")&&n.uint32(13).float(e.floatValue),e.vec4Value!=null&&Object.hasOwnProperty.call(e,"vec4Value")&&$root.sesame.v1.common.Vec4.encode(e.vec4Value,n.uint32(18).fork()).ldelim(),e.stringValue!=null&&Object.hasOwnProperty.call(e,"stringValue")&&n.uint32(26).string(e.stringValue),e.boolValue!=null&&Object.hasOwnProperty.call(e,"boolValue")&&n.uint32(32).bool(e.boolValue),e.intValue!=null&&Object.hasOwnProperty.call(e,"intValue")&&n.uint32(40).int32(e.intValue),n},i.encodeDelimited=function(e,n){return this.encode(e,n).ldelim()},i.decode=function(e,n,s){e instanceof $Reader||(e=$Reader.create(e));let a=n===void 0?e.len:e.pos+n,U=new $root.sesame.v1.common.PropValue;for(;e.pos<a;){let u=e.uint32();if(u===s)break;switch(u>>>3){case 1:{U.floatValue=e.float();break}case 2:{U.vec4Value=$root.sesame.v1.common.Vec4.decode(e,e.uint32());break}case 3:{U.stringValue=e.string();break}case 4:{U.boolValue=e.bool();break}case 5:{U.intValue=e.int32();break}default:e.skipType(u&7);break}}return U},i.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},i.verify=function(e){if(typeof e!="object"||e===null)return"object expected";let n={};if(e.floatValue!=null&&e.hasOwnProperty("floatValue")&&(n.value=1,typeof e.floatValue!="number"))return"floatValue: number expected";if(e.vec4Value!=null&&e.hasOwnProperty("vec4Value")){if(n.value===1)return"value: multiple values";n.value=1;{let s=$root.sesame.v1.common.Vec4.verify(e.vec4Value);if(s)return"vec4Value."+s}}if(e.stringValue!=null&&e.hasOwnProperty("stringValue")){if(n.value===1)return"value: multiple values";if(n.value=1,!$util.isString(e.stringValue))return"stringValue: string expected"}if(e.boolValue!=null&&e.hasOwnProperty("boolValue")){if(n.value===1)return"value: multiple values";if(n.value=1,typeof e.boolValue!="boolean")return"boolValue: boolean expected"}if(e.intValue!=null&&e.hasOwnProperty("intValue")){if(n.value===1)return"value: multiple values";if(n.value=1,!$util.isInteger(e.intValue))return"intValue: integer expected"}return null},i.fromObject=function(e){if(e instanceof $root.sesame.v1.common.PropValue)return e;let n=new $root.sesame.v1.common.PropValue;if(e.floatValue!=null&&(n.floatValue=Number(e.floatValue)),e.vec4Value!=null){if(typeof e.vec4Value!="object")throw TypeError(".sesame.v1.common.PropValue.vec4Value: object expected");n.vec4Value=$root.sesame.v1.common.Vec4.fromObject(e.vec4Value)}return e.stringValue!=null&&(n.stringValue=String(e.stringValue)),e.boolValue!=null&&(n.boolValue=!!e.boolValue),e.intValue!=null&&(n.intValue=e.intValue|0),n},i.toObject=function(e,n){n||(n={});let s={};return e.floatValue!=null&&e.hasOwnProperty("floatValue")&&(s.floatValue=n.json&&!isFinite(e.floatValue)?String(e.floatValue):e.floatValue,n.oneofs&&(s.value="floatValue")),e.vec4Value!=null&&e.hasOwnProperty("vec4Value")&&(s.vec4Value=$root.sesame.v1.common.Vec4.toObject(e.vec4Value,n),n.oneofs&&(s.value="vec4Value")),e.stringValue!=null&&e.hasOwnProperty("stringValue")&&(s.stringValue=e.stringValue,n.oneofs&&(s.value="stringValue")),e.boolValue!=null&&e.hasOwnProperty("boolValue")&&(s.boolValue=e.boolValue,n.oneofs&&(s.value="boolValue")),e.intValue!=null&&e.hasOwnProperty("intValue")&&(s.intValue=e.intValue,n.oneofs&&(s.value="intValue")),s},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(e){return e===void 0&&(e="type.googleapis.com"),e+"/sesame.v1.common.PropValue"},i}(),l.PropertyDomain=function(){function i(t){if(t)for(let e=Object.keys(t),n=0;n<e.length;++n)t[e[n]]!=null&&(this[e[n]]=t[e[n]])}i.prototype.compositorId=null,i.prototype.audioMixerId=null,i.prototype.replayId=null,i.prototype.sourceId=null;let r;return Object.defineProperty(i.prototype,"owner",{get:$util.oneOfGetter(r=["compositorId","audioMixerId","replayId","sourceId"]),set:$util.oneOfSetter(r)}),i.create=function(e){return new i(e)},i.encode=function(e,n){return n||(n=$Writer.create()),e.compositorId!=null&&Object.hasOwnProperty.call(e,"compositorId")&&n.uint32(10).string(e.compositorId),e.audioMixerId!=null&&Object.hasOwnProperty.call(e,"audioMixerId")&&n.uint32(18).string(e.audioMixerId),e.replayId!=null&&Object.hasOwnProperty.call(e,"replayId")&&n.uint32(26).string(e.replayId),e.sourceId!=null&&Object.hasOwnProperty.call(e,"sourceId")&&n.uint32(34).string(e.sourceId),n},i.encodeDelimited=function(e,n){return this.encode(e,n).ldelim()},i.decode=function(e,n,s){e instanceof $Reader||(e=$Reader.create(e));let a=n===void 0?e.len:e.pos+n,U=new $root.sesame.v1.common.PropertyDomain;for(;e.pos<a;){let u=e.uint32();if(u===s)break;switch(u>>>3){case 1:{U.compositorId=e.string();break}case 2:{U.audioMixerId=e.string();break}case 3:{U.replayId=e.string();break}case 4:{U.sourceId=e.string();break}default:e.skipType(u&7);break}}return U},i.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},i.verify=function(e){if(typeof e!="object"||e===null)return"object expected";let n={};if(e.compositorId!=null&&e.hasOwnProperty("compositorId")&&(n.owner=1,!$util.isString(e.compositorId)))return"compositorId: string expected";if(e.audioMixerId!=null&&e.hasOwnProperty("audioMixerId")){if(n.owner===1)return"owner: multiple values";if(n.owner=1,!$util.isString(e.audioMixerId))return"audioMixerId: string expected"}if(e.replayId!=null&&e.hasOwnProperty("replayId")){if(n.owner===1)return"owner: multiple values";if(n.owner=1,!$util.isString(e.replayId))return"replayId: string expected"}if(e.sourceId!=null&&e.hasOwnProperty("sourceId")){if(n.owner===1)return"owner: multiple values";if(n.owner=1,!$util.isString(e.sourceId))return"sourceId: string expected"}return null},i.fromObject=function(e){if(e instanceof $root.sesame.v1.common.PropertyDomain)return e;let n=new $root.sesame.v1.common.PropertyDomain;return e.compositorId!=null&&(n.compositorId=String(e.compositorId)),e.audioMixerId!=null&&(n.audioMixerId=String(e.audioMixerId)),e.replayId!=null&&(n.replayId=String(e.replayId)),e.sourceId!=null&&(n.sourceId=String(e.sourceId)),n},i.toObject=function(e,n){n||(n={});let s={};return e.compositorId!=null&&e.hasOwnProperty("compositorId")&&(s.compositorId=e.compositorId,n.oneofs&&(s.owner="compositorId")),e.audioMixerId!=null&&e.hasOwnProperty("audioMixerId")&&(s.audioMixerId=e.audioMixerId,n.oneofs&&(s.owner="audioMixerId")),e.replayId!=null&&e.hasOwnProperty("replayId")&&(s.replayId=e.replayId,n.oneofs&&(s.owner="replayId")),e.sourceId!=null&&e.hasOwnProperty("sourceId")&&(s.sourceId=e.sourceId,n.oneofs&&(s.owner="sourceId")),s},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(e){return e===void 0&&(e="type.googleapis.com"),e+"/sesame.v1.common.PropertyDomain"},i}(),l.NameValue=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.name="",i.prototype.value=null,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.name!=null&&Object.hasOwnProperty.call(t,"name")&&e.uint32(10).string(t.name),t.value!=null&&Object.hasOwnProperty.call(t,"value")&&$root.sesame.v1.common.PropValue.encode(t.value,e.uint32(18).fork()).ldelim(),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.common.NameValue;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.name=t.string();break}case 2:{a.value=$root.sesame.v1.common.PropValue.decode(t,t.uint32());break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.name!=null&&t.hasOwnProperty("name")&&!$util.isString(t.name))return"name: string expected";if(t.value!=null&&t.hasOwnProperty("value")){let e=$root.sesame.v1.common.PropValue.verify(t.value);if(e)return"value."+e}return null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.common.NameValue)return t;let e=new $root.sesame.v1.common.NameValue;if(t.name!=null&&(e.name=String(t.name)),t.value!=null){if(typeof t.value!="object")throw TypeError(".sesame.v1.common.NameValue.value: object expected");e.value=$root.sesame.v1.common.PropValue.fromObject(t.value)}return e},i.toObject=function(t,e){e||(e={});let n={};return e.defaults&&(n.name="",n.value=null),t.name!=null&&t.hasOwnProperty("name")&&(n.name=t.name),t.value!=null&&t.hasOwnProperty("value")&&(n.value=$root.sesame.v1.common.PropValue.toObject(t.value,e)),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.common.NameValue"},i}(),l.TransportMetadata=function(){function i(r){if(this.items=[],r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.items=$util.emptyArray,i.create=function(t){return new i(t)},i.encode=function(t,e){if(e||(e=$Writer.create()),t.items!=null&&t.items.length)for(let n=0;n<t.items.length;++n)$root.sesame.v1.common.NameValue.encode(t.items[n],e.uint32(10).fork()).ldelim();return e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.common.TransportMetadata;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.items&&a.items.length||(a.items=[]),a.items.push($root.sesame.v1.common.NameValue.decode(t,t.uint32()));break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.items!=null&&t.hasOwnProperty("items")){if(!Array.isArray(t.items))return"items: array expected";for(let e=0;e<t.items.length;++e){let n=$root.sesame.v1.common.NameValue.verify(t.items[e]);if(n)return"items."+n}}return null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.common.TransportMetadata)return t;let e=new $root.sesame.v1.common.TransportMetadata;if(t.items){if(!Array.isArray(t.items))throw TypeError(".sesame.v1.common.TransportMetadata.items: array expected");e.items=[];for(let n=0;n<t.items.length;++n){if(typeof t.items[n]!="object")throw TypeError(".sesame.v1.common.TransportMetadata.items: object expected");e.items[n]=$root.sesame.v1.common.NameValue.fromObject(t.items[n])}}return e},i.toObject=function(t,e){e||(e={});let n={};if((e.arrays||e.defaults)&&(n.items=[]),t.items&&t.items.length){n.items=[];for(let s=0;s<t.items.length;++s)n.items[s]=$root.sesame.v1.common.NameValue.toObject(t.items[s],e)}return n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.common.TransportMetadata"},i}(),l.Callback=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.event="",i.prototype.data="",i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.event!=null&&Object.hasOwnProperty.call(t,"event")&&e.uint32(10).string(t.event),t.data!=null&&Object.hasOwnProperty.call(t,"data")&&e.uint32(18).string(t.data),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.common.Callback;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.event=t.string();break}case 2:{a.data=t.string();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.event!=null&&t.hasOwnProperty("event")&&!$util.isString(t.event)?"event: string expected":t.data!=null&&t.hasOwnProperty("data")&&!$util.isString(t.data)?"data: string expected":null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.common.Callback)return t;let e=new $root.sesame.v1.common.Callback;return t.event!=null&&(e.event=String(t.event)),t.data!=null&&(e.data=String(t.data)),e},i.toObject=function(t,e){e||(e={});let n={};return e.defaults&&(n.event="",n.data=""),t.event!=null&&t.hasOwnProperty("event")&&(n.event=t.event),t.data!=null&&t.hasOwnProperty("data")&&(n.data=t.data),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.common.Callback"},i}(),l.EventTopic=function(){const i={},r=Object.create(i);return r[i[0]="EVENT_TOPIC_UNSPECIFIED"]=0,r[i[1]="EVENT_TOPIC_ERROR"]=1,r[i[2]="EVENT_TOPIC_TRANSPORT"]=2,r[i[3]="EVENT_TOPIC_CALLBACK"]=3,r[i[4]="EVENT_TOPIC_JOB"]=4,r[i[6]="EVENT_TOPIC_RECORDER"]=6,r}(),l}(),o.sources=function(){const l={};return l.SourceType=function(){const i={},r=Object.create(i);return r[i[0]="SOURCE_TYPE_UNSPECIFIED"]=0,r[i[1]="SOURCE_TYPE_FILE"]=1,r[i[2]="SOURCE_TYPE_RECORDER"]=2,r[i[3]="SOURCE_TYPE_BROWSER"]=3,r[i[4]="SOURCE_TYPE_RTT"]=4,r[i[5]="SOURCE_TYPE_DECKLINK"]=5,r[i[6]="SOURCE_TYPE_SIGNAL_GENERATOR"]=6,r[i[7]="SOURCE_TYPE_SYSTEM_AUDIO"]=7,r[i[8]="SOURCE_TYPE_SRT_STREAM"]=8,r[i[9]="SOURCE_TYPE_WEBSOCKET"]=9,r[i[10]="SOURCE_TYPE_MOQ"]=10,r}(),l.DeinterlaceType=function(){const i={},r=Object.create(i);return r[i[0]="DEINTERLACE_TYPE_PROGRESSIVE"]=0,r[i[1]="DEINTERLACE_TYPE_UPPER_FIELD_FIRST"]=1,r[i[2]="DEINTERLACE_TYPE_LOWER_FIELD_FIRST"]=2,r[i[3]="DEINTERLACE_TYPE_AUTO"]=3,r}(),l.SourceTransportState=function(){const i={},r=Object.create(i);return r[i[0]="SOURCE_TRANSPORT_STATE_STOPPED"]=0,r[i[1]="SOURCE_TRANSPORT_STATE_PLAYING"]=1,r[i[2]="SOURCE_TRANSPORT_STATE_CUEING"]=2,r[i[3]="SOURCE_TRANSPORT_STATE_ERROR"]=3,r[i[4]="SOURCE_TRANSPORT_STATE_PLAYING_LIVE"]=4,r}(),l.SourceTransportCommandType=function(){const i={},r=Object.create(i);return r[i[0]="SOURCE_TRANSPORT_CMD_UNSPECIFIED"]=0,r[i[1]="SOURCE_TRANSPORT_CMD_STOP"]=1,r[i[2]="SOURCE_TRANSPORT_CMD_PLAY"]=2,r[i[3]="SOURCE_TRANSPORT_CMD_SEEK"]=3,r[i[4]="SOURCE_TRANSPORT_CMD_LOOP"]=4,r[i[5]="SOURCE_TRANSPORT_CMD_LIVE"]=5,r[i[6]="SOURCE_TRANSPORT_CMD_JOG"]=6,r[i[7]="SOURCE_TRANSPORT_CMD_MONITOR"]=7,r[i[8]="SOURCE_TRANSPORT_CMD_SEEK_USER_TIME"]=8,r[i[9]="SOURCE_TRANSPORT_CMD_TAKE"]=9,r[i[10]="SOURCE_TRANSPORT_CMD_POST_ROLL"]=10,r[i[11]="SOURCE_TRANSPORT_CMD_PRE_ROLL"]=11,r[i[12]="SOURCE_TRANSPORT_CMD_NEXT"]=12,r[i[13]="SOURCE_TRANSPORT_CMD_SKIP_NEXT"]=13,r[i[14]="SOURCE_TRANSPORT_CMD_TRANSITIONS_DISABLED"]=14,r[i[15]="SOURCE_TRANSPORT_CMD_SET_SCRUBBING"]=15,r}(),l.SourceTextureSize=function(){const i={},r=Object.create(i);return r[i[0]="SOURCE_TEXTURE_SIZE_UNSPECIFIED"]=0,r[i[1]="SOURCE_TEXTURE_SIZE_HD"]=1,r[i[2]="SOURCE_TEXTURE_SIZE_4K"]=2,r}(),l.PreprocessStep=function(){const i={},r=Object.create(i);return r[i[0]="PREPROCESS_STEP_UNSPECIFIED"]=0,r[i[1]="PREPROCESS_STEP_VIDEO_SCOPES"]=1,r[i[2]="PREPROCESS_STEP_CHROMA_KEY"]=2,r[i[3]="PREPROCESS_STEP_BLUR"]=3,r}(),l.VideoProcessorParam=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.id=0,i.prototype.floatValue=0,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.id!=null&&Object.hasOwnProperty.call(t,"id")&&e.uint32(8).uint32(t.id),t.floatValue!=null&&Object.hasOwnProperty.call(t,"floatValue")&&e.uint32(21).float(t.floatValue),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.sources.VideoProcessorParam;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.id=t.uint32();break}case 2:{a.floatValue=t.float();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.id!=null&&t.hasOwnProperty("id")&&!$util.isInteger(t.id)?"id: integer expected":t.floatValue!=null&&t.hasOwnProperty("floatValue")&&typeof t.floatValue!="number"?"floatValue: number expected":null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.sources.VideoProcessorParam)return t;let e=new $root.sesame.v1.sources.VideoProcessorParam;return t.id!=null&&(e.id=t.id>>>0),t.floatValue!=null&&(e.floatValue=Number(t.floatValue)),e},i.toObject=function(t,e){e||(e={});let n={};return e.defaults&&(n.id=0,n.floatValue=0),t.id!=null&&t.hasOwnProperty("id")&&(n.id=t.id),t.floatValue!=null&&t.hasOwnProperty("floatValue")&&(n.floatValue=e.json&&!isFinite(t.floatValue)?String(t.floatValue):t.floatValue),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.sources.VideoProcessorParam"},i}(),l.VideoProcessor=function(){function i(r){if(this.params=[],r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.id="",i.prototype.type=0,i.prototype.params=$util.emptyArray,i.create=function(t){return new i(t)},i.encode=function(t,e){if(e||(e=$Writer.create()),t.id!=null&&Object.hasOwnProperty.call(t,"id")&&e.uint32(10).string(t.id),t.type!=null&&Object.hasOwnProperty.call(t,"type")&&e.uint32(16).int32(t.type),t.params!=null&&t.params.length)for(let n=0;n<t.params.length;++n)$root.sesame.v1.sources.VideoProcessorParam.encode(t.params[n],e.uint32(26).fork()).ldelim();return e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.sources.VideoProcessor;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.id=t.string();break}case 2:{a.type=t.int32();break}case 3:{a.params&&a.params.length||(a.params=[]),a.params.push($root.sesame.v1.sources.VideoProcessorParam.decode(t,t.uint32()));break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.id!=null&&t.hasOwnProperty("id")&&!$util.isString(t.id))return"id: string expected";if(t.type!=null&&t.hasOwnProperty("type"))switch(t.type){default:return"type: enum value expected";case 0:case 1:case 2:case 3:break}if(t.params!=null&&t.hasOwnProperty("params")){if(!Array.isArray(t.params))return"params: array expected";for(let e=0;e<t.params.length;++e){let n=$root.sesame.v1.sources.VideoProcessorParam.verify(t.params[e]);if(n)return"params."+n}}return null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.sources.VideoProcessor)return t;let e=new $root.sesame.v1.sources.VideoProcessor;switch(t.id!=null&&(e.id=String(t.id)),t.type){default:if(typeof t.type=="number"){e.type=t.type;break}break;case"PREPROCESS_STEP_UNSPECIFIED":case 0:e.type=0;break;case"PREPROCESS_STEP_VIDEO_SCOPES":case 1:e.type=1;break;case"PREPROCESS_STEP_CHROMA_KEY":case 2:e.type=2;break;case"PREPROCESS_STEP_BLUR":case 3:e.type=3;break}if(t.params){if(!Array.isArray(t.params))throw TypeError(".sesame.v1.sources.VideoProcessor.params: array expected");e.params=[];for(let n=0;n<t.params.length;++n){if(typeof t.params[n]!="object")throw TypeError(".sesame.v1.sources.VideoProcessor.params: object expected");e.params[n]=$root.sesame.v1.sources.VideoProcessorParam.fromObject(t.params[n])}}return e},i.toObject=function(t,e){e||(e={});let n={};if((e.arrays||e.defaults)&&(n.params=[]),e.defaults&&(n.id="",n.type=e.enums===String?"PREPROCESS_STEP_UNSPECIFIED":0),t.id!=null&&t.hasOwnProperty("id")&&(n.id=t.id),t.type!=null&&t.hasOwnProperty("type")&&(n.type=e.enums===String?$root.sesame.v1.sources.PreprocessStep[t.type]===void 0?t.type:$root.sesame.v1.sources.PreprocessStep[t.type]:t.type),t.params&&t.params.length){n.params=[];for(let s=0;s<t.params.length;++s)n.params[s]=$root.sesame.v1.sources.VideoProcessorParam.toObject(t.params[s],e)}return n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.sources.VideoProcessor"},i}(),l.SourceCommonConfig=function(){function i(r){if(this.videoProcessors=[],r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.userId="",i.prototype.useAsClock=!1,i.prototype.audioOnly=!1,i.prototype.audioChannels=0,i.prototype.loop=!1,i.prototype.playState=0,i.prototype.mipMap=!1,i.prototype.textureSize=0,i.prototype.deinterlace=0,i.prototype.videoProcessors=$util.emptyArray,i.create=function(t){return new i(t)},i.encode=function(t,e){if(e||(e=$Writer.create()),t.userId!=null&&Object.hasOwnProperty.call(t,"userId")&&e.uint32(10).string(t.userId),t.useAsClock!=null&&Object.hasOwnProperty.call(t,"useAsClock")&&e.uint32(16).bool(t.useAsClock),t.audioOnly!=null&&Object.hasOwnProperty.call(t,"audioOnly")&&e.uint32(24).bool(t.audioOnly),t.audioChannels!=null&&Object.hasOwnProperty.call(t,"audioChannels")&&e.uint32(32).uint32(t.audioChannels),t.loop!=null&&Object.hasOwnProperty.call(t,"loop")&&e.uint32(40).bool(t.loop),t.playState!=null&&Object.hasOwnProperty.call(t,"playState")&&e.uint32(48).int32(t.playState),t.mipMap!=null&&Object.hasOwnProperty.call(t,"mipMap")&&e.uint32(56).bool(t.mipMap),t.textureSize!=null&&Object.hasOwnProperty.call(t,"textureSize")&&e.uint32(64).int32(t.textureSize),t.deinterlace!=null&&Object.hasOwnProperty.call(t,"deinterlace")&&e.uint32(80).int32(t.deinterlace),t.videoProcessors!=null&&t.videoProcessors.length)for(let n=0;n<t.videoProcessors.length;++n)$root.sesame.v1.sources.VideoProcessor.encode(t.videoProcessors[n],e.uint32(90).fork()).ldelim();return e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.sources.SourceCommonConfig;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.userId=t.string();break}case 2:{a.useAsClock=t.bool();break}case 3:{a.audioOnly=t.bool();break}case 4:{a.audioChannels=t.uint32();break}case 5:{a.loop=t.bool();break}case 6:{a.playState=t.int32();break}case 7:{a.mipMap=t.bool();break}case 8:{a.textureSize=t.int32();break}case 10:{a.deinterlace=t.int32();break}case 11:{a.videoProcessors&&a.videoProcessors.length||(a.videoProcessors=[]),a.videoProcessors.push($root.sesame.v1.sources.VideoProcessor.decode(t,t.uint32()));break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.userId!=null&&t.hasOwnProperty("userId")&&!$util.isString(t.userId))return"userId: string expected";if(t.useAsClock!=null&&t.hasOwnProperty("useAsClock")&&typeof t.useAsClock!="boolean")return"useAsClock: boolean expected";if(t.audioOnly!=null&&t.hasOwnProperty("audioOnly")&&typeof t.audioOnly!="boolean")return"audioOnly: boolean expected";if(t.audioChannels!=null&&t.hasOwnProperty("audioChannels")&&!$util.isInteger(t.audioChannels))return"audioChannels: integer expected";if(t.loop!=null&&t.hasOwnProperty("loop")&&typeof t.loop!="boolean")return"loop: boolean expected";if(t.playState!=null&&t.hasOwnProperty("playState"))switch(t.playState){default:return"playState: enum value expected";case 0:case 1:case 2:case 3:case 4:break}if(t.mipMap!=null&&t.hasOwnProperty("mipMap")&&typeof t.mipMap!="boolean")return"mipMap: boolean expected";if(t.textureSize!=null&&t.hasOwnProperty("textureSize"))switch(t.textureSize){default:return"textureSize: enum value expected";case 0:case 1:case 2:break}if(t.deinterlace!=null&&t.hasOwnProperty("deinterlace"))switch(t.deinterlace){default:return"deinterlace: enum value expected";case 0:case 1:case 2:case 3:break}if(t.videoProcessors!=null&&t.hasOwnProperty("videoProcessors")){if(!Array.isArray(t.videoProcessors))return"videoProcessors: array expected";for(let e=0;e<t.videoProcessors.length;++e){let n=$root.sesame.v1.sources.VideoProcessor.verify(t.videoProcessors[e]);if(n)return"videoProcessors."+n}}return null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.sources.SourceCommonConfig)return t;let e=new $root.sesame.v1.sources.SourceCommonConfig;switch(t.userId!=null&&(e.userId=String(t.userId)),t.useAsClock!=null&&(e.useAsClock=!!t.useAsClock),t.audioOnly!=null&&(e.audioOnly=!!t.audioOnly),t.audioChannels!=null&&(e.audioChannels=t.audioChannels>>>0),t.loop!=null&&(e.loop=!!t.loop),t.playState){default:if(typeof t.playState=="number"){e.playState=t.playState;break}break;case"SOURCE_TRANSPORT_STATE_STOPPED":case 0:e.playState=0;break;case"SOURCE_TRANSPORT_STATE_PLAYING":case 1:e.playState=1;break;case"SOURCE_TRANSPORT_STATE_CUEING":case 2:e.playState=2;break;case"SOURCE_TRANSPORT_STATE_ERROR":case 3:e.playState=3;break;case"SOURCE_TRANSPORT_STATE_PLAYING_LIVE":case 4:e.playState=4;break}switch(t.mipMap!=null&&(e.mipMap=!!t.mipMap),t.textureSize){default:if(typeof t.textureSize=="number"){e.textureSize=t.textureSize;break}break;case"SOURCE_TEXTURE_SIZE_UNSPECIFIED":case 0:e.textureSize=0;break;case"SOURCE_TEXTURE_SIZE_HD":case 1:e.textureSize=1;break;case"SOURCE_TEXTURE_SIZE_4K":case 2:e.textureSize=2;break}switch(t.deinterlace){default:if(typeof t.deinterlace=="number"){e.deinterlace=t.deinterlace;break}break;case"DEINTERLACE_TYPE_PROGRESSIVE":case 0:e.deinterlace=0;break;case"DEINTERLACE_TYPE_UPPER_FIELD_FIRST":case 1:e.deinterlace=1;break;case"DEINTERLACE_TYPE_LOWER_FIELD_FIRST":case 2:e.deinterlace=2;break;case"DEINTERLACE_TYPE_AUTO":case 3:e.deinterlace=3;break}if(t.videoProcessors){if(!Array.isArray(t.videoProcessors))throw TypeError(".sesame.v1.sources.SourceCommonConfig.videoProcessors: array expected");e.videoProcessors=[];for(let n=0;n<t.videoProcessors.length;++n){if(typeof t.videoProcessors[n]!="object")throw TypeError(".sesame.v1.sources.SourceCommonConfig.videoProcessors: object expected");e.videoProcessors[n]=$root.sesame.v1.sources.VideoProcessor.fromObject(t.videoProcessors[n])}}return e},i.toObject=function(t,e){e||(e={});let n={};if((e.arrays||e.defaults)&&(n.videoProcessors=[]),e.defaults&&(n.userId="",n.useAsClock=!1,n.audioOnly=!1,n.audioChannels=0,n.loop=!1,n.playState=e.enums===String?"SOURCE_TRANSPORT_STATE_STOPPED":0,n.mipMap=!1,n.textureSize=e.enums===String?"SOURCE_TEXTURE_SIZE_UNSPECIFIED":0,n.deinterlace=e.enums===String?"DEINTERLACE_TYPE_PROGRESSIVE":0),t.userId!=null&&t.hasOwnProperty("userId")&&(n.userId=t.userId),t.useAsClock!=null&&t.hasOwnProperty("useAsClock")&&(n.useAsClock=t.useAsClock),t.audioOnly!=null&&t.hasOwnProperty("audioOnly")&&(n.audioOnly=t.audioOnly),t.audioChannels!=null&&t.hasOwnProperty("audioChannels")&&(n.audioChannels=t.audioChannels),t.loop!=null&&t.hasOwnProperty("loop")&&(n.loop=t.loop),t.playState!=null&&t.hasOwnProperty("playState")&&(n.playState=e.enums===String?$root.sesame.v1.sources.SourceTransportState[t.playState]===void 0?t.playState:$root.sesame.v1.sources.SourceTransportState[t.playState]:t.playState),t.mipMap!=null&&t.hasOwnProperty("mipMap")&&(n.mipMap=t.mipMap),t.textureSize!=null&&t.hasOwnProperty("textureSize")&&(n.textureSize=e.enums===String?$root.sesame.v1.sources.SourceTextureSize[t.textureSize]===void 0?t.textureSize:$root.sesame.v1.sources.SourceTextureSize[t.textureSize]:t.textureSize),t.deinterlace!=null&&t.hasOwnProperty("deinterlace")&&(n.deinterlace=e.enums===String?$root.sesame.v1.sources.DeinterlaceType[t.deinterlace]===void 0?t.deinterlace:$root.sesame.v1.sources.DeinterlaceType[t.deinterlace]:t.deinterlace),t.videoProcessors&&t.videoProcessors.length){n.videoProcessors=[];for(let s=0;s<t.videoProcessors.length;++s)n.videoProcessors[s]=$root.sesame.v1.sources.VideoProcessor.toObject(t.videoProcessors[s],e)}return n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.sources.SourceCommonConfig"},i}(),l.FileSourceConfig=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.url="",i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.url!=null&&Object.hasOwnProperty.call(t,"url")&&e.uint32(10).string(t.url),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.sources.FileSourceConfig;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.url=t.string();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.url!=null&&t.hasOwnProperty("url")&&!$util.isString(t.url)?"url: string expected":null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.sources.FileSourceConfig)return t;let e=new $root.sesame.v1.sources.FileSourceConfig;return t.url!=null&&(e.url=String(t.url)),e},i.toObject=function(t,e){e||(e={});let n={};return e.defaults&&(n.url=""),t.url!=null&&t.hasOwnProperty("url")&&(n.url=t.url),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.sources.FileSourceConfig"},i}(),l.RecorderSourceConfig=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.recorderId="",i.prototype.codec=0,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.recorderId!=null&&Object.hasOwnProperty.call(t,"recorderId")&&e.uint32(10).string(t.recorderId),t.codec!=null&&Object.hasOwnProperty.call(t,"codec")&&e.uint32(16).int32(t.codec),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.sources.RecorderSourceConfig;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.recorderId=t.string();break}case 2:{a.codec=t.int32();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.recorderId!=null&&t.hasOwnProperty("recorderId")&&!$util.isString(t.recorderId))return"recorderId: string expected";if(t.codec!=null&&t.hasOwnProperty("codec"))switch(t.codec){default:return"codec: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 64:case 65:case 66:case 67:break}return null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.sources.RecorderSourceConfig)return t;let e=new $root.sesame.v1.sources.RecorderSourceConfig;switch(t.recorderId!=null&&(e.recorderId=String(t.recorderId)),t.codec){default:if(typeof t.codec=="number"){e.codec=t.codec;break}break;case"CODEC_TYPE_UNSPECIFIED":case 0:e.codec=0;break;case"CODEC_TYPE_VIDEO_VP8":case 1:e.codec=1;break;case"CODEC_TYPE_VIDEO_VP9":case 2:e.codec=2;break;case"CODEC_TYPE_VIDEO_AVC":case 3:e.codec=3;break;case"CODEC_TYPE_VIDEO_HEVC":case 4:e.codec=4;break;case"CODEC_TYPE_VIDEO_AV1":case 5:e.codec=5;break;case"CODEC_TYPE_VIDEO_PRORES":case 6:e.codec=6;break;case"CODEC_TYPE_VIDEO_DNXHR":case 7:e.codec=7;break;case"CODEC_TYPE_AUDIO_OPUS":case 64:e.codec=64;break;case"CODEC_TYPE_AUDIO_AAC":case 65:e.codec=65;break;case"CODEC_TYPE_AUDIO_PCM":case 66:e.codec=66;break;case"CODEC_TYPE_AUDIO_PCM_S24LE":case 67:e.codec=67;break}return e},i.toObject=function(t,e){e||(e={});let n={};return e.defaults&&(n.recorderId="",n.codec=e.enums===String?"CODEC_TYPE_UNSPECIFIED":0),t.recorderId!=null&&t.hasOwnProperty("recorderId")&&(n.recorderId=t.recorderId),t.codec!=null&&t.hasOwnProperty("codec")&&(n.codec=e.enums===String?$root.sesame.v1.common.CodecType[t.codec]===void 0?t.codec:$root.sesame.v1.common.CodecType[t.codec]:t.codec),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.sources.RecorderSourceConfig"},i}(),l.BrowserSourceConfig=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.url="",i.prototype.width=0,i.prototype.height=0,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.url!=null&&Object.hasOwnProperty.call(t,"url")&&e.uint32(10).string(t.url),t.width!=null&&Object.hasOwnProperty.call(t,"width")&&e.uint32(16).uint32(t.width),t.height!=null&&Object.hasOwnProperty.call(t,"height")&&e.uint32(24).uint32(t.height),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.sources.BrowserSourceConfig;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.url=t.string();break}case 2:{a.width=t.uint32();break}case 3:{a.height=t.uint32();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.url!=null&&t.hasOwnProperty("url")&&!$util.isString(t.url)?"url: string expected":t.width!=null&&t.hasOwnProperty("width")&&!$util.isInteger(t.width)?"width: integer expected":t.height!=null&&t.hasOwnProperty("height")&&!$util.isInteger(t.height)?"height: integer expected":null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.sources.BrowserSourceConfig)return t;let e=new $root.sesame.v1.sources.BrowserSourceConfig;return t.url!=null&&(e.url=String(t.url)),t.width!=null&&(e.width=t.width>>>0),t.height!=null&&(e.height=t.height>>>0),e},i.toObject=function(t,e){e||(e={});let n={};return e.defaults&&(n.url="",n.width=0,n.height=0),t.url!=null&&t.hasOwnProperty("url")&&(n.url=t.url),t.width!=null&&t.hasOwnProperty("width")&&(n.width=t.width),t.height!=null&&t.hasOwnProperty("height")&&(n.height=t.height),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.sources.BrowserSourceConfig"},i}(),l.RTTSourceConfig=function(){function i(r){if(this.audioMixes=[],r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.rttId="",i.prototype.audioMixes=$util.emptyArray,i.prototype.delayFrames=0,i.create=function(t){return new i(t)},i.encode=function(t,e){if(e||(e=$Writer.create()),t.rttId!=null&&Object.hasOwnProperty.call(t,"rttId")&&e.uint32(10).string(t.rttId),t.audioMixes!=null&&t.audioMixes.length)for(let n=0;n<t.audioMixes.length;++n)e.uint32(18).string(t.audioMixes[n]);return t.delayFrames!=null&&Object.hasOwnProperty.call(t,"delayFrames")&&e.uint32(24).uint32(t.delayFrames),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.sources.RTTSourceConfig;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.rttId=t.string();break}case 2:{a.audioMixes&&a.audioMixes.length||(a.audioMixes=[]),a.audioMixes.push(t.string());break}case 3:{a.delayFrames=t.uint32();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.rttId!=null&&t.hasOwnProperty("rttId")&&!$util.isString(t.rttId))return"rttId: string expected";if(t.audioMixes!=null&&t.hasOwnProperty("audioMixes")){if(!Array.isArray(t.audioMixes))return"audioMixes: array expected";for(let e=0;e<t.audioMixes.length;++e)if(!$util.isString(t.audioMixes[e]))return"audioMixes: string[] expected"}return t.delayFrames!=null&&t.hasOwnProperty("delayFrames")&&!$util.isInteger(t.delayFrames)?"delayFrames: integer expected":null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.sources.RTTSourceConfig)return t;let e=new $root.sesame.v1.sources.RTTSourceConfig;if(t.rttId!=null&&(e.rttId=String(t.rttId)),t.audioMixes){if(!Array.isArray(t.audioMixes))throw TypeError(".sesame.v1.sources.RTTSourceConfig.audioMixes: array expected");e.audioMixes=[];for(let n=0;n<t.audioMixes.length;++n)e.audioMixes[n]=String(t.audioMixes[n])}return t.delayFrames!=null&&(e.delayFrames=t.delayFrames>>>0),e},i.toObject=function(t,e){e||(e={});let n={};if((e.arrays||e.defaults)&&(n.audioMixes=[]),e.defaults&&(n.rttId="",n.delayFrames=0),t.rttId!=null&&t.hasOwnProperty("rttId")&&(n.rttId=t.rttId),t.audioMixes&&t.audioMixes.length){n.audioMixes=[];for(let s=0;s<t.audioMixes.length;++s)n.audioMixes[s]=t.audioMixes[s]}return t.delayFrames!=null&&t.hasOwnProperty("delayFrames")&&(n.delayFrames=t.delayFrames),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.sources.RTTSourceConfig"},i}(),l.DecklinkSourceConfig=function(){function i(t){if(t)for(let e=Object.keys(t),n=0;n<e.length;++n)t[e[n]]!=null&&(this[e[n]]=t[e[n]])}i.prototype.deviceIndex=0,i.prototype.videoFormat=0,i.prototype.syncGroup=null;let r;return Object.defineProperty(i.prototype,"_syncGroup",{get:$util.oneOfGetter(r=["syncGroup"]),set:$util.oneOfSetter(r)}),i.create=function(e){return new i(e)},i.encode=function(e,n){return n||(n=$Writer.create()),e.deviceIndex!=null&&Object.hasOwnProperty.call(e,"deviceIndex")&&n.uint32(8).uint32(e.deviceIndex),e.videoFormat!=null&&Object.hasOwnProperty.call(e,"videoFormat")&&n.uint32(16).int32(e.videoFormat),e.syncGroup!=null&&Object.hasOwnProperty.call(e,"syncGroup")&&n.uint32(24).uint32(e.syncGroup),n},i.encodeDelimited=function(e,n){return this.encode(e,n).ldelim()},i.decode=function(e,n,s){e instanceof $Reader||(e=$Reader.create(e));let a=n===void 0?e.len:e.pos+n,U=new $root.sesame.v1.sources.DecklinkSourceConfig;for(;e.pos<a;){let u=e.uint32();if(u===s)break;switch(u>>>3){case 1:{U.deviceIndex=e.uint32();break}case 2:{U.videoFormat=e.int32();break}case 3:{U.syncGroup=e.uint32();break}default:e.skipType(u&7);break}}return U},i.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},i.verify=function(e){if(typeof e!="object"||e===null)return"object expected";if(e.deviceIndex!=null&&e.hasOwnProperty("deviceIndex")&&!$util.isInteger(e.deviceIndex))return"deviceIndex: integer expected";if(e.videoFormat!=null&&e.hasOwnProperty("videoFormat"))switch(e.videoFormat){default:return"videoFormat: enum value expected";case 0:case 1:case 2:case 3:case 4:break}return e.syncGroup!=null&&e.hasOwnProperty("syncGroup")&&!$util.isInteger(e.syncGroup)?"syncGroup: integer expected":null},i.fromObject=function(e){if(e instanceof $root.sesame.v1.sources.DecklinkSourceConfig)return e;let n=new $root.sesame.v1.sources.DecklinkSourceConfig;switch(e.deviceIndex!=null&&(n.deviceIndex=e.deviceIndex>>>0),e.videoFormat){default:if(typeof e.videoFormat=="number"){n.videoFormat=e.videoFormat;break}break;case"VIDEO_FORMAT_UNSPECIFIED":case 0:n.videoFormat=0;break;case"VIDEO_FORMAT_1080_50I":case 1:n.videoFormat=1;break;case"VIDEO_FORMAT_1080_50P":case 2:n.videoFormat=2;break;case"VIDEO_FORMAT_1080_60I":case 3:n.videoFormat=3;break;case"VIDEO_FORMAT_1080_60P":case 4:n.videoFormat=4;break}return e.syncGroup!=null&&(n.syncGroup=e.syncGroup>>>0),n},i.toObject=function(e,n){n||(n={});let s={};return n.defaults&&(s.deviceIndex=0,s.videoFormat=n.enums===String?"VIDEO_FORMAT_UNSPECIFIED":0),e.deviceIndex!=null&&e.hasOwnProperty("deviceIndex")&&(s.deviceIndex=e.deviceIndex),e.videoFormat!=null&&e.hasOwnProperty("videoFormat")&&(s.videoFormat=n.enums===String?$root.sesame.v1.common.VideoFormat[e.videoFormat]===void 0?e.videoFormat:$root.sesame.v1.common.VideoFormat[e.videoFormat]:e.videoFormat),e.syncGroup!=null&&e.hasOwnProperty("syncGroup")&&(s.syncGroup=e.syncGroup,n.oneofs&&(s._syncGroup="syncGroup")),s},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(e){return e===void 0&&(e="type.googleapis.com"),e+"/sesame.v1.sources.DecklinkSourceConfig"},i}(),l.SignalGeneratorSourceConfig=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.sources.SignalGeneratorSourceConfig;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":null},i.fromObject=function(t){return t instanceof $root.sesame.v1.sources.SignalGeneratorSourceConfig?t:new $root.sesame.v1.sources.SignalGeneratorSourceConfig},i.toObject=function(){return{}},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.sources.SignalGeneratorSourceConfig"},i}(),l.SystemAudioSourceConfig=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.deviceName="",i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.deviceName!=null&&Object.hasOwnProperty.call(t,"deviceName")&&e.uint32(10).string(t.deviceName),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.sources.SystemAudioSourceConfig;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.deviceName=t.string();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.deviceName!=null&&t.hasOwnProperty("deviceName")&&!$util.isString(t.deviceName)?"deviceName: string expected":null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.sources.SystemAudioSourceConfig)return t;let e=new $root.sesame.v1.sources.SystemAudioSourceConfig;return t.deviceName!=null&&(e.deviceName=String(t.deviceName)),e},i.toObject=function(t,e){e||(e={});let n={};return e.defaults&&(n.deviceName=""),t.deviceName!=null&&t.hasOwnProperty("deviceName")&&(n.deviceName=t.deviceName),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.sources.SystemAudioSourceConfig"},i}(),l.SrtSourceConfig=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.url="",i.prototype.decodeBufferFrames=0,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.url!=null&&Object.hasOwnProperty.call(t,"url")&&e.uint32(10).string(t.url),t.decodeBufferFrames!=null&&Object.hasOwnProperty.call(t,"decodeBufferFrames")&&e.uint32(16).uint32(t.decodeBufferFrames),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.sources.SrtSourceConfig;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.url=t.string();break}case 2:{a.decodeBufferFrames=t.uint32();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.url!=null&&t.hasOwnProperty("url")&&!$util.isString(t.url)?"url: string expected":t.decodeBufferFrames!=null&&t.hasOwnProperty("decodeBufferFrames")&&!$util.isInteger(t.decodeBufferFrames)?"decodeBufferFrames: integer expected":null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.sources.SrtSourceConfig)return t;let e=new $root.sesame.v1.sources.SrtSourceConfig;return t.url!=null&&(e.url=String(t.url)),t.decodeBufferFrames!=null&&(e.decodeBufferFrames=t.decodeBufferFrames>>>0),e},i.toObject=function(t,e){e||(e={});let n={};return e.defaults&&(n.url="",n.decodeBufferFrames=0),t.url!=null&&t.hasOwnProperty("url")&&(n.url=t.url),t.decodeBufferFrames!=null&&t.hasOwnProperty("decodeBufferFrames")&&(n.decodeBufferFrames=t.decodeBufferFrames),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.sources.SrtSourceConfig"},i}(),l.WebsocketSourceConfig=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.channel="",i.prototype.decodeBufferFrames=0,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.channel!=null&&Object.hasOwnProperty.call(t,"channel")&&e.uint32(10).string(t.channel),t.decodeBufferFrames!=null&&Object.hasOwnProperty.call(t,"decodeBufferFrames")&&e.uint32(16).uint32(t.decodeBufferFrames),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.sources.WebsocketSourceConfig;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.channel=t.string();break}case 2:{a.decodeBufferFrames=t.uint32();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.channel!=null&&t.hasOwnProperty("channel")&&!$util.isString(t.channel)?"channel: string expected":t.decodeBufferFrames!=null&&t.hasOwnProperty("decodeBufferFrames")&&!$util.isInteger(t.decodeBufferFrames)?"decodeBufferFrames: integer expected":null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.sources.WebsocketSourceConfig)return t;let e=new $root.sesame.v1.sources.WebsocketSourceConfig;return t.channel!=null&&(e.channel=String(t.channel)),t.decodeBufferFrames!=null&&(e.decodeBufferFrames=t.decodeBufferFrames>>>0),e},i.toObject=function(t,e){e||(e={});let n={};return e.defaults&&(n.channel="",n.decodeBufferFrames=0),t.channel!=null&&t.hasOwnProperty("channel")&&(n.channel=t.channel),t.decodeBufferFrames!=null&&t.hasOwnProperty("decodeBufferFrames")&&(n.decodeBufferFrames=t.decodeBufferFrames),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.sources.WebsocketSourceConfig"},i}(),l.MoqSourceConfig=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.url="",i.prototype.broadcast="",i.prototype.key="",i.prototype.decodeBufferFrames=0,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.url!=null&&Object.hasOwnProperty.call(t,"url")&&e.uint32(10).string(t.url),t.broadcast!=null&&Object.hasOwnProperty.call(t,"broadcast")&&e.uint32(18).string(t.broadcast),t.key!=null&&Object.hasOwnProperty.call(t,"key")&&e.uint32(26).string(t.key),t.decodeBufferFrames!=null&&Object.hasOwnProperty.call(t,"decodeBufferFrames")&&e.uint32(32).uint32(t.decodeBufferFrames),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.sources.MoqSourceConfig;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.url=t.string();break}case 2:{a.broadcast=t.string();break}case 3:{a.key=t.string();break}case 4:{a.decodeBufferFrames=t.uint32();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.url!=null&&t.hasOwnProperty("url")&&!$util.isString(t.url)?"url: string expected":t.broadcast!=null&&t.hasOwnProperty("broadcast")&&!$util.isString(t.broadcast)?"broadcast: string expected":t.key!=null&&t.hasOwnProperty("key")&&!$util.isString(t.key)?"key: string expected":t.decodeBufferFrames!=null&&t.hasOwnProperty("decodeBufferFrames")&&!$util.isInteger(t.decodeBufferFrames)?"decodeBufferFrames: integer expected":null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.sources.MoqSourceConfig)return t;let e=new $root.sesame.v1.sources.MoqSourceConfig;return t.url!=null&&(e.url=String(t.url)),t.broadcast!=null&&(e.broadcast=String(t.broadcast)),t.key!=null&&(e.key=String(t.key)),t.decodeBufferFrames!=null&&(e.decodeBufferFrames=t.decodeBufferFrames>>>0),e},i.toObject=function(t,e){e||(e={});let n={};return e.defaults&&(n.url="",n.broadcast="",n.key="",n.decodeBufferFrames=0),t.url!=null&&t.hasOwnProperty("url")&&(n.url=t.url),t.broadcast!=null&&t.hasOwnProperty("broadcast")&&(n.broadcast=t.broadcast),t.key!=null&&t.hasOwnProperty("key")&&(n.key=t.key),t.decodeBufferFrames!=null&&t.hasOwnProperty("decodeBufferFrames")&&(n.decodeBufferFrames=t.decodeBufferFrames),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.sources.MoqSourceConfig"},i}(),l.SourceConfig=function(){function i(t){if(t)for(let e=Object.keys(t),n=0;n<e.length;++n)t[e[n]]!=null&&(this[e[n]]=t[e[n]])}i.prototype.common=null,i.prototype.file=null,i.prototype.recorder=null,i.prototype.browser=null,i.prototype.rtt=null,i.prototype.decklink=null,i.prototype.signalGenerator=null,i.prototype.systemAudio=null,i.prototype.srtStream=null,i.prototype.websocket=null,i.prototype.moq=null;let r;return Object.defineProperty(i.prototype,"details",{get:$util.oneOfGetter(r=["file","recorder","browser","rtt","decklink","signalGenerator","systemAudio","srtStream","websocket","moq"]),set:$util.oneOfSetter(r)}),i.create=function(e){return new i(e)},i.encode=function(e,n){return n||(n=$Writer.create()),e.common!=null&&Object.hasOwnProperty.call(e,"common")&&$root.sesame.v1.sources.SourceCommonConfig.encode(e.common,n.uint32(10).fork()).ldelim(),e.file!=null&&Object.hasOwnProperty.call(e,"file")&&$root.sesame.v1.sources.FileSourceConfig.encode(e.file,n.uint32(82).fork()).ldelim(),e.recorder!=null&&Object.hasOwnProperty.call(e,"recorder")&&$root.sesame.v1.sources.RecorderSourceConfig.encode(e.recorder,n.uint32(90).fork()).ldelim(),e.browser!=null&&Object.hasOwnProperty.call(e,"browser")&&$root.sesame.v1.sources.BrowserSourceConfig.encode(e.browser,n.uint32(98).fork()).ldelim(),e.rtt!=null&&Object.hasOwnProperty.call(e,"rtt")&&$root.sesame.v1.sources.RTTSourceConfig.encode(e.rtt,n.uint32(106).fork()).ldelim(),e.decklink!=null&&Object.hasOwnProperty.call(e,"decklink")&&$root.sesame.v1.sources.DecklinkSourceConfig.encode(e.decklink,n.uint32(114).fork()).ldelim(),e.signalGenerator!=null&&Object.hasOwnProperty.call(e,"signalGenerator")&&$root.sesame.v1.sources.SignalGeneratorSourceConfig.encode(e.signalGenerator,n.uint32(122).fork()).ldelim(),e.systemAudio!=null&&Object.hasOwnProperty.call(e,"systemAudio")&&$root.sesame.v1.sources.SystemAudioSourceConfig.encode(e.systemAudio,n.uint32(130).fork()).ldelim(),e.srtStream!=null&&Object.hasOwnProperty.call(e,"srtStream")&&$root.sesame.v1.sources.SrtSourceConfig.encode(e.srtStream,n.uint32(138).fork()).ldelim(),e.websocket!=null&&Object.hasOwnProperty.call(e,"websocket")&&$root.sesame.v1.sources.WebsocketSourceConfig.encode(e.websocket,n.uint32(146).fork()).ldelim(),e.moq!=null&&Object.hasOwnProperty.call(e,"moq")&&$root.sesame.v1.sources.MoqSourceConfig.encode(e.moq,n.uint32(154).fork()).ldelim(),n},i.encodeDelimited=function(e,n){return this.encode(e,n).ldelim()},i.decode=function(e,n,s){e instanceof $Reader||(e=$Reader.create(e));let a=n===void 0?e.len:e.pos+n,U=new $root.sesame.v1.sources.SourceConfig;for(;e.pos<a;){let u=e.uint32();if(u===s)break;switch(u>>>3){case 1:{U.common=$root.sesame.v1.sources.SourceCommonConfig.decode(e,e.uint32());break}case 10:{U.file=$root.sesame.v1.sources.FileSourceConfig.decode(e,e.uint32());break}case 11:{U.recorder=$root.sesame.v1.sources.RecorderSourceConfig.decode(e,e.uint32());break}case 12:{U.browser=$root.sesame.v1.sources.BrowserSourceConfig.decode(e,e.uint32());break}case 13:{U.rtt=$root.sesame.v1.sources.RTTSourceConfig.decode(e,e.uint32());break}case 14:{U.decklink=$root.sesame.v1.sources.DecklinkSourceConfig.decode(e,e.uint32());break}case 15:{U.signalGenerator=$root.sesame.v1.sources.SignalGeneratorSourceConfig.decode(e,e.uint32());break}case 16:{U.systemAudio=$root.sesame.v1.sources.SystemAudioSourceConfig.decode(e,e.uint32());break}case 17:{U.srtStream=$root.sesame.v1.sources.SrtSourceConfig.decode(e,e.uint32());break}case 18:{U.websocket=$root.sesame.v1.sources.WebsocketSourceConfig.decode(e,e.uint32());break}case 19:{U.moq=$root.sesame.v1.sources.MoqSourceConfig.decode(e,e.uint32());break}default:e.skipType(u&7);break}}return U},i.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},i.verify=function(e){if(typeof e!="object"||e===null)return"object expected";let n={};if(e.common!=null&&e.hasOwnProperty("common")){let s=$root.sesame.v1.sources.SourceCommonConfig.verify(e.common);if(s)return"common."+s}if(e.file!=null&&e.hasOwnProperty("file")){n.details=1;{let s=$root.sesame.v1.sources.FileSourceConfig.verify(e.file);if(s)return"file."+s}}if(e.recorder!=null&&e.hasOwnProperty("recorder")){if(n.details===1)return"details: multiple values";n.details=1;{let s=$root.sesame.v1.sources.RecorderSourceConfig.verify(e.recorder);if(s)return"recorder."+s}}if(e.browser!=null&&e.hasOwnProperty("browser")){if(n.details===1)return"details: multiple values";n.details=1;{let s=$root.sesame.v1.sources.BrowserSourceConfig.verify(e.browser);if(s)return"browser."+s}}if(e.rtt!=null&&e.hasOwnProperty("rtt")){if(n.details===1)return"details: multiple values";n.details=1;{let s=$root.sesame.v1.sources.RTTSourceConfig.verify(e.rtt);if(s)return"rtt."+s}}if(e.decklink!=null&&e.hasOwnProperty("decklink")){if(n.details===1)return"details: multiple values";n.details=1;{let s=$root.sesame.v1.sources.DecklinkSourceConfig.verify(e.decklink);if(s)return"decklink."+s}}if(e.signalGenerator!=null&&e.hasOwnProperty("signalGenerator")){if(n.details===1)return"details: multiple values";n.details=1;{let s=$root.sesame.v1.sources.SignalGeneratorSourceConfig.verify(e.signalGenerator);if(s)return"signalGenerator."+s}}if(e.systemAudio!=null&&e.hasOwnProperty("systemAudio")){if(n.details===1)return"details: multiple values";n.details=1;{let s=$root.sesame.v1.sources.SystemAudioSourceConfig.verify(e.systemAudio);if(s)return"systemAudio."+s}}if(e.srtStream!=null&&e.hasOwnProperty("srtStream")){if(n.details===1)return"details: multiple values";n.details=1;{let s=$root.sesame.v1.sources.SrtSourceConfig.verify(e.srtStream);if(s)return"srtStream."+s}}if(e.websocket!=null&&e.hasOwnProperty("websocket")){if(n.details===1)return"details: multiple values";n.details=1;{let s=$root.sesame.v1.sources.WebsocketSourceConfig.verify(e.websocket);if(s)return"websocket."+s}}if(e.moq!=null&&e.hasOwnProperty("moq")){if(n.details===1)return"details: multiple values";n.details=1;{let s=$root.sesame.v1.sources.MoqSourceConfig.verify(e.moq);if(s)return"moq."+s}}return null},i.fromObject=function(e){if(e instanceof $root.sesame.v1.sources.SourceConfig)return e;let n=new $root.sesame.v1.sources.SourceConfig;if(e.common!=null){if(typeof e.common!="object")throw TypeError(".sesame.v1.sources.SourceConfig.common: object expected");n.common=$root.sesame.v1.sources.SourceCommonConfig.fromObject(e.common)}if(e.file!=null){if(typeof e.file!="object")throw TypeError(".sesame.v1.sources.SourceConfig.file: object expected");n.file=$root.sesame.v1.sources.FileSourceConfig.fromObject(e.file)}if(e.recorder!=null){if(typeof e.recorder!="object")throw TypeError(".sesame.v1.sources.SourceConfig.recorder: object expected");n.recorder=$root.sesame.v1.sources.RecorderSourceConfig.fromObject(e.recorder)}if(e.browser!=null){if(typeof e.browser!="object")throw TypeError(".sesame.v1.sources.SourceConfig.browser: object expected");n.browser=$root.sesame.v1.sources.BrowserSourceConfig.fromObject(e.browser)}if(e.rtt!=null){if(typeof e.rtt!="object")throw TypeError(".sesame.v1.sources.SourceConfig.rtt: object expected");n.rtt=$root.sesame.v1.sources.RTTSourceConfig.fromObject(e.rtt)}if(e.decklink!=null){if(typeof e.decklink!="object")throw TypeError(".sesame.v1.sources.SourceConfig.decklink: object expected");n.decklink=$root.sesame.v1.sources.DecklinkSourceConfig.fromObject(e.decklink)}if(e.signalGenerator!=null){if(typeof e.signalGenerator!="object")throw TypeError(".sesame.v1.sources.SourceConfig.signalGenerator: object expected");n.signalGenerator=$root.sesame.v1.sources.SignalGeneratorSourceConfig.fromObject(e.signalGenerator)}if(e.systemAudio!=null){if(typeof e.systemAudio!="object")throw TypeError(".sesame.v1.sources.SourceConfig.systemAudio: object expected");n.systemAudio=$root.sesame.v1.sources.SystemAudioSourceConfig.fromObject(e.systemAudio)}if(e.srtStream!=null){if(typeof e.srtStream!="object")throw TypeError(".sesame.v1.sources.SourceConfig.srtStream: object expected");n.srtStream=$root.sesame.v1.sources.SrtSourceConfig.fromObject(e.srtStream)}if(e.websocket!=null){if(typeof e.websocket!="object")throw TypeError(".sesame.v1.sources.SourceConfig.websocket: object expected");n.websocket=$root.sesame.v1.sources.WebsocketSourceConfig.fromObject(e.websocket)}if(e.moq!=null){if(typeof e.moq!="object")throw TypeError(".sesame.v1.sources.SourceConfig.moq: object expected");n.moq=$root.sesame.v1.sources.MoqSourceConfig.fromObject(e.moq)}return n},i.toObject=function(e,n){n||(n={});let s={};return n.defaults&&(s.common=null),e.common!=null&&e.hasOwnProperty("common")&&(s.common=$root.sesame.v1.sources.SourceCommonConfig.toObject(e.common,n)),e.file!=null&&e.hasOwnProperty("file")&&(s.file=$root.sesame.v1.sources.FileSourceConfig.toObject(e.file,n),n.oneofs&&(s.details="file")),e.recorder!=null&&e.hasOwnProperty("recorder")&&(s.recorder=$root.sesame.v1.sources.RecorderSourceConfig.toObject(e.recorder,n),n.oneofs&&(s.details="recorder")),e.browser!=null&&e.hasOwnProperty("browser")&&(s.browser=$root.sesame.v1.sources.BrowserSourceConfig.toObject(e.browser,n),n.oneofs&&(s.details="browser")),e.rtt!=null&&e.hasOwnProperty("rtt")&&(s.rtt=$root.sesame.v1.sources.RTTSourceConfig.toObject(e.rtt,n),n.oneofs&&(s.details="rtt")),e.decklink!=null&&e.hasOwnProperty("decklink")&&(s.decklink=$root.sesame.v1.sources.DecklinkSourceConfig.toObject(e.decklink,n),n.oneofs&&(s.details="decklink")),e.signalGenerator!=null&&e.hasOwnProperty("signalGenerator")&&(s.signalGenerator=$root.sesame.v1.sources.SignalGeneratorSourceConfig.toObject(e.signalGenerator,n),n.oneofs&&(s.details="signalGenerator")),e.systemAudio!=null&&e.hasOwnProperty("systemAudio")&&(s.systemAudio=$root.sesame.v1.sources.SystemAudioSourceConfig.toObject(e.systemAudio,n),n.oneofs&&(s.details="systemAudio")),e.srtStream!=null&&e.hasOwnProperty("srtStream")&&(s.srtStream=$root.sesame.v1.sources.SrtSourceConfig.toObject(e.srtStream,n),n.oneofs&&(s.details="srtStream")),e.websocket!=null&&e.hasOwnProperty("websocket")&&(s.websocket=$root.sesame.v1.sources.WebsocketSourceConfig.toObject(e.websocket,n),n.oneofs&&(s.details="websocket")),e.moq!=null&&e.hasOwnProperty("moq")&&(s.moq=$root.sesame.v1.sources.MoqSourceConfig.toObject(e.moq,n),n.oneofs&&(s.details="moq")),s},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(e){return e===void 0&&(e="type.googleapis.com"),e+"/sesame.v1.sources.SourceConfig"},i}(),l.SourceAddRequest=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.id="",i.prototype.config=null,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.id!=null&&Object.hasOwnProperty.call(t,"id")&&e.uint32(10).string(t.id),t.config!=null&&Object.hasOwnProperty.call(t,"config")&&$root.sesame.v1.sources.SourceConfig.encode(t.config,e.uint32(18).fork()).ldelim(),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.sources.SourceAddRequest;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.id=t.string();break}case 2:{a.config=$root.sesame.v1.sources.SourceConfig.decode(t,t.uint32());break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.id!=null&&t.hasOwnProperty("id")&&!$util.isString(t.id))return"id: string expected";if(t.config!=null&&t.hasOwnProperty("config")){let e=$root.sesame.v1.sources.SourceConfig.verify(t.config);if(e)return"config."+e}return null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.sources.SourceAddRequest)return t;let e=new $root.sesame.v1.sources.SourceAddRequest;if(t.id!=null&&(e.id=String(t.id)),t.config!=null){if(typeof t.config!="object")throw TypeError(".sesame.v1.sources.SourceAddRequest.config: object expected");e.config=$root.sesame.v1.sources.SourceConfig.fromObject(t.config)}return e},i.toObject=function(t,e){e||(e={});let n={};return e.defaults&&(n.id="",n.config=null),t.id!=null&&t.hasOwnProperty("id")&&(n.id=t.id),t.config!=null&&t.hasOwnProperty("config")&&(n.config=$root.sesame.v1.sources.SourceConfig.toObject(t.config,e)),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.sources.SourceAddRequest"},i}(),l.SourceUpdateRequest=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.id="",i.prototype.config=null,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.id!=null&&Object.hasOwnProperty.call(t,"id")&&e.uint32(10).string(t.id),t.config!=null&&Object.hasOwnProperty.call(t,"config")&&$root.sesame.v1.sources.SourceConfig.encode(t.config,e.uint32(18).fork()).ldelim(),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.sources.SourceUpdateRequest;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.id=t.string();break}case 2:{a.config=$root.sesame.v1.sources.SourceConfig.decode(t,t.uint32());break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.id!=null&&t.hasOwnProperty("id")&&!$util.isString(t.id))return"id: string expected";if(t.config!=null&&t.hasOwnProperty("config")){let e=$root.sesame.v1.sources.SourceConfig.verify(t.config);if(e)return"config."+e}return null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.sources.SourceUpdateRequest)return t;let e=new $root.sesame.v1.sources.SourceUpdateRequest;if(t.id!=null&&(e.id=String(t.id)),t.config!=null){if(typeof t.config!="object")throw TypeError(".sesame.v1.sources.SourceUpdateRequest.config: object expected");e.config=$root.sesame.v1.sources.SourceConfig.fromObject(t.config)}return e},i.toObject=function(t,e){e||(e={});let n={};return e.defaults&&(n.id="",n.config=null),t.id!=null&&t.hasOwnProperty("id")&&(n.id=t.id),t.config!=null&&t.hasOwnProperty("config")&&(n.config=$root.sesame.v1.sources.SourceConfig.toObject(t.config,e)),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.sources.SourceUpdateRequest"},i}(),l.SourceRemoveRequest=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.id="",i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.id!=null&&Object.hasOwnProperty.call(t,"id")&&e.uint32(10).string(t.id),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.sources.SourceRemoveRequest;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.id=t.string();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.id!=null&&t.hasOwnProperty("id")&&!$util.isString(t.id)?"id: string expected":null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.sources.SourceRemoveRequest)return t;let e=new $root.sesame.v1.sources.SourceRemoveRequest;return t.id!=null&&(e.id=String(t.id)),e},i.toObject=function(t,e){e||(e={});let n={};return e.defaults&&(n.id=""),t.id!=null&&t.hasOwnProperty("id")&&(n.id=t.id),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.sources.SourceRemoveRequest"},i}(),l.SourceStatus=function(){function i(t){if(t)for(let e=Object.keys(t),n=0;n<e.length;++n)t[e[n]]!=null&&(this[e[n]]=t[e[n]])}i.prototype.id="",i.prototype.type=0,i.prototype.userId="",i.prototype.state=0,i.prototype.transportState=0,i.prototype.msg=null,i.prototype.url="",i.prototype.width=0,i.prototype.height=0,i.prototype.fps=0,i.prototype.durationUs=$util.Long?$util.Long.fromBits(0,0,!1):0,i.prototype.playPositionUs=$util.Long?$util.Long.fromBits(0,0,!1):0,i.prototype.videoBuf=0,i.prototype.audioBuf=0,i.prototype.gpuBuf=0,i.prototype.audioChannels=0,i.prototype.audioLevel=0,i.prototype.lipSyncOffsetUs=$util.Long?$util.Long.fromBits(0,0,!1):0,i.prototype.decodeTiming=null,i.prototype.videoBufAvg=0,i.prototype.srtStats=null;let r;return Object.defineProperty(i.prototype,"_msg",{get:$util.oneOfGetter(r=["msg"]),set:$util.oneOfSetter(r)}),Object.defineProperty(i.prototype,"_srtStats",{get:$util.oneOfGetter(r=["srtStats"]),set:$util.oneOfSetter(r)}),i.create=function(e){return new i(e)},i.encode=function(e,n){return n||(n=$Writer.create()),e.id!=null&&Object.hasOwnProperty.call(e,"id")&&n.uint32(10).string(e.id),e.type!=null&&Object.hasOwnProperty.call(e,"type")&&n.uint32(16).int32(e.type),e.userId!=null&&Object.hasOwnProperty.call(e,"userId")&&n.uint32(26).string(e.userId),e.state!=null&&Object.hasOwnProperty.call(e,"state")&&n.uint32(32).int32(e.state),e.transportState!=null&&Object.hasOwnProperty.call(e,"transportState")&&n.uint32(40).int32(e.transportState),e.msg!=null&&Object.hasOwnProperty.call(e,"msg")&&n.uint32(50).string(e.msg),e.url!=null&&Object.hasOwnProperty.call(e,"url")&&n.uint32(58).string(e.url),e.width!=null&&Object.hasOwnProperty.call(e,"width")&&n.uint32(64).uint32(e.width),e.height!=null&&Object.hasOwnProperty.call(e,"height")&&n.uint32(72).uint32(e.height),e.fps!=null&&Object.hasOwnProperty.call(e,"fps")&&n.uint32(85).float(e.fps),e.durationUs!=null&&Object.hasOwnProperty.call(e,"durationUs")&&n.uint32(88).int64(e.durationUs),e.playPositionUs!=null&&Object.hasOwnProperty.call(e,"playPositionUs")&&n.uint32(96).int64(e.playPositionUs),e.videoBuf!=null&&Object.hasOwnProperty.call(e,"videoBuf")&&n.uint32(104).int32(e.videoBuf),e.audioBuf!=null&&Object.hasOwnProperty.call(e,"audioBuf")&&n.uint32(112).int32(e.audioBuf),e.gpuBuf!=null&&Object.hasOwnProperty.call(e,"gpuBuf")&&n.uint32(120).int32(e.gpuBuf),e.audioChannels!=null&&Object.hasOwnProperty.call(e,"audioChannels")&&n.uint32(128).uint32(e.audioChannels),e.audioLevel!=null&&Object.hasOwnProperty.call(e,"audioLevel")&&n.uint32(141).float(e.audioLevel),e.lipSyncOffsetUs!=null&&Object.hasOwnProperty.call(e,"lipSyncOffsetUs")&&n.uint32(144).int64(e.lipSyncOffsetUs),e.decodeTiming!=null&&Object.hasOwnProperty.call(e,"decodeTiming")&&$root.sesame.v1.status.FrameTiming.encode(e.decodeTiming,n.uint32(154).fork()).ldelim(),e.videoBufAvg!=null&&Object.hasOwnProperty.call(e,"videoBufAvg")&&n.uint32(161).double(e.videoBufAvg),e.srtStats!=null&&Object.hasOwnProperty.call(e,"srtStats")&&$root.sesame.v1.status.SRTReceiveStatistics.encode(e.srtStats,n.uint32(170).fork()).ldelim(),n},i.encodeDelimited=function(e,n){return this.encode(e,n).ldelim()},i.decode=function(e,n,s){e instanceof $Reader||(e=$Reader.create(e));let a=n===void 0?e.len:e.pos+n,U=new $root.sesame.v1.sources.SourceStatus;for(;e.pos<a;){let u=e.uint32();if(u===s)break;switch(u>>>3){case 1:{U.id=e.string();break}case 2:{U.type=e.int32();break}case 3:{U.userId=e.string();break}case 4:{U.state=e.int32();break}case 5:{U.transportState=e.int32();break}case 6:{U.msg=e.string();break}case 7:{U.url=e.string();break}case 8:{U.width=e.uint32();break}case 9:{U.height=e.uint32();break}case 10:{U.fps=e.float();break}case 11:{U.durationUs=e.int64();break}case 12:{U.playPositionUs=e.int64();break}case 13:{U.videoBuf=e.int32();break}case 14:{U.audioBuf=e.int32();break}case 15:{U.gpuBuf=e.int32();break}case 16:{U.audioChannels=e.uint32();break}case 17:{U.audioLevel=e.float();break}case 18:{U.lipSyncOffsetUs=e.int64();break}case 19:{U.decodeTiming=$root.sesame.v1.status.FrameTiming.decode(e,e.uint32());break}case 20:{U.videoBufAvg=e.double();break}case 21:{U.srtStats=$root.sesame.v1.status.SRTReceiveStatistics.decode(e,e.uint32());break}default:e.skipType(u&7);break}}return U},i.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},i.verify=function(e){if(typeof e!="object"||e===null)return"object expected";if(e.id!=null&&e.hasOwnProperty("id")&&!$util.isString(e.id))return"id: string expected";if(e.type!=null&&e.hasOwnProperty("type"))switch(e.type){default:return"type: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:break}if(e.userId!=null&&e.hasOwnProperty("userId")&&!$util.isString(e.userId))return"userId: string expected";if(e.state!=null&&e.hasOwnProperty("state"))switch(e.state){default:return"state: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 6:break}if(e.transportState!=null&&e.hasOwnProperty("transportState"))switch(e.transportState){default:return"transportState: enum value expected";case 0:case 1:case 2:case 3:case 4:break}if(e.msg!=null&&e.hasOwnProperty("msg")&&!$util.isString(e.msg))return"msg: string expected";if(e.url!=null&&e.hasOwnProperty("url")&&!$util.isString(e.url))return"url: string expected";if(e.width!=null&&e.hasOwnProperty("width")&&!$util.isInteger(e.width))return"width: integer expected";if(e.height!=null&&e.hasOwnProperty("height")&&!$util.isInteger(e.height))return"height: integer expected";if(e.fps!=null&&e.hasOwnProperty("fps")&&typeof e.fps!="number")return"fps: number expected";if(e.durationUs!=null&&e.hasOwnProperty("durationUs")&&!$util.isInteger(e.durationUs)&&!(e.durationUs&&$util.isInteger(e.durationUs.low)&&$util.isInteger(e.durationUs.high)))return"durationUs: integer|Long expected";if(e.playPositionUs!=null&&e.hasOwnProperty("playPositionUs")&&!$util.isInteger(e.playPositionUs)&&!(e.playPositionUs&&$util.isInteger(e.playPositionUs.low)&&$util.isInteger(e.playPositionUs.high)))return"playPositionUs: integer|Long expected";if(e.videoBuf!=null&&e.hasOwnProperty("videoBuf")&&!$util.isInteger(e.videoBuf))return"videoBuf: integer expected";if(e.audioBuf!=null&&e.hasOwnProperty("audioBuf")&&!$util.isInteger(e.audioBuf))return"audioBuf: integer expected";if(e.gpuBuf!=null&&e.hasOwnProperty("gpuBuf")&&!$util.isInteger(e.gpuBuf))return"gpuBuf: integer expected";if(e.audioChannels!=null&&e.hasOwnProperty("audioChannels")&&!$util.isInteger(e.audioChannels))return"audioChannels: integer expected";if(e.audioLevel!=null&&e.hasOwnProperty("audioLevel")&&typeof e.audioLevel!="number")return"audioLevel: number expected";if(e.lipSyncOffsetUs!=null&&e.hasOwnProperty("lipSyncOffsetUs")&&!$util.isInteger(e.lipSyncOffsetUs)&&!(e.lipSyncOffsetUs&&$util.isInteger(e.lipSyncOffsetUs.low)&&$util.isInteger(e.lipSyncOffsetUs.high)))return"lipSyncOffsetUs: integer|Long expected";if(e.decodeTiming!=null&&e.hasOwnProperty("decodeTiming")){let n=$root.sesame.v1.status.FrameTiming.verify(e.decodeTiming);if(n)return"decodeTiming."+n}if(e.videoBufAvg!=null&&e.hasOwnProperty("videoBufAvg")&&typeof e.videoBufAvg!="number")return"videoBufAvg: number expected";if(e.srtStats!=null&&e.hasOwnProperty("srtStats")){let n=$root.sesame.v1.status.SRTReceiveStatistics.verify(e.srtStats);if(n)return"srtStats."+n}return null},i.fromObject=function(e){if(e instanceof $root.sesame.v1.sources.SourceStatus)return e;let n=new $root.sesame.v1.sources.SourceStatus;switch(e.id!=null&&(n.id=String(e.id)),e.type){default:if(typeof e.type=="number"){n.type=e.type;break}break;case"SOURCE_TYPE_UNSPECIFIED":case 0:n.type=0;break;case"SOURCE_TYPE_FILE":case 1:n.type=1;break;case"SOURCE_TYPE_RECORDER":case 2:n.type=2;break;case"SOURCE_TYPE_BROWSER":case 3:n.type=3;break;case"SOURCE_TYPE_RTT":case 4:n.type=4;break;case"SOURCE_TYPE_DECKLINK":case 5:n.type=5;break;case"SOURCE_TYPE_SIGNAL_GENERATOR":case 6:n.type=6;break;case"SOURCE_TYPE_SYSTEM_AUDIO":case 7:n.type=7;break;case"SOURCE_TYPE_SRT_STREAM":case 8:n.type=8;break;case"SOURCE_TYPE_WEBSOCKET":case 9:n.type=9;break;case"SOURCE_TYPE_MOQ":case 10:n.type=10;break}switch(e.userId!=null&&(n.userId=String(e.userId)),e.state){default:if(typeof e.state=="number"){n.state=e.state;break}break;case"CONNECTION_STATE_UNSPECIFIED":case 0:n.state=0;break;case"CONNECTION_STATE_INITIALIZING":case 1:n.state=1;break;case"CONNECTION_STATE_CONNECTING":case 2:n.state=2;break;case"CONNECTION_STATE_ONLINE":case 3:n.state=3;break;case"CONNECTION_STATE_DEGRADED":case 4:n.state=4;break;case"CONNECTION_STATE_OFFLINE":case 5:n.state=5;break;case"CONNECTION_STATE_ERROR":case 6:n.state=6;break}switch(e.transportState){default:if(typeof e.transportState=="number"){n.transportState=e.transportState;break}break;case"SOURCE_TRANSPORT_STATE_STOPPED":case 0:n.transportState=0;break;case"SOURCE_TRANSPORT_STATE_PLAYING":case 1:n.transportState=1;break;case"SOURCE_TRANSPORT_STATE_CUEING":case 2:n.transportState=2;break;case"SOURCE_TRANSPORT_STATE_ERROR":case 3:n.transportState=3;break;case"SOURCE_TRANSPORT_STATE_PLAYING_LIVE":case 4:n.transportState=4;break}if(e.msg!=null&&(n.msg=String(e.msg)),e.url!=null&&(n.url=String(e.url)),e.width!=null&&(n.width=e.width>>>0),e.height!=null&&(n.height=e.height>>>0),e.fps!=null&&(n.fps=Number(e.fps)),e.durationUs!=null&&($util.Long?(n.durationUs=$util.Long.fromValue(e.durationUs)).unsigned=!1:typeof e.durationUs=="string"?n.durationUs=parseInt(e.durationUs,10):typeof e.durationUs=="number"?n.durationUs=e.durationUs:typeof e.durationUs=="object"&&(n.durationUs=new $util.LongBits(e.durationUs.low>>>0,e.durationUs.high>>>0).toNumber())),e.playPositionUs!=null&&($util.Long?(n.playPositionUs=$util.Long.fromValue(e.playPositionUs)).unsigned=!1:typeof e.playPositionUs=="string"?n.playPositionUs=parseInt(e.playPositionUs,10):typeof e.playPositionUs=="number"?n.playPositionUs=e.playPositionUs:typeof e.playPositionUs=="object"&&(n.playPositionUs=new $util.LongBits(e.playPositionUs.low>>>0,e.playPositionUs.high>>>0).toNumber())),e.videoBuf!=null&&(n.videoBuf=e.videoBuf|0),e.audioBuf!=null&&(n.audioBuf=e.audioBuf|0),e.gpuBuf!=null&&(n.gpuBuf=e.gpuBuf|0),e.audioChannels!=null&&(n.audioChannels=e.audioChannels>>>0),e.audioLevel!=null&&(n.audioLevel=Number(e.audioLevel)),e.lipSyncOffsetUs!=null&&($util.Long?(n.lipSyncOffsetUs=$util.Long.fromValue(e.lipSyncOffsetUs)).unsigned=!1:typeof e.lipSyncOffsetUs=="string"?n.lipSyncOffsetUs=parseInt(e.lipSyncOffsetUs,10):typeof e.lipSyncOffsetUs=="number"?n.lipSyncOffsetUs=e.lipSyncOffsetUs:typeof e.lipSyncOffsetUs=="object"&&(n.lipSyncOffsetUs=new $util.LongBits(e.lipSyncOffsetUs.low>>>0,e.lipSyncOffsetUs.high>>>0).toNumber())),e.decodeTiming!=null){if(typeof e.decodeTiming!="object")throw TypeError(".sesame.v1.sources.SourceStatus.decodeTiming: object expected");n.decodeTiming=$root.sesame.v1.status.FrameTiming.fromObject(e.decodeTiming)}if(e.videoBufAvg!=null&&(n.videoBufAvg=Number(e.videoBufAvg)),e.srtStats!=null){if(typeof e.srtStats!="object")throw TypeError(".sesame.v1.sources.SourceStatus.srtStats: object expected");n.srtStats=$root.sesame.v1.status.SRTReceiveStatistics.fromObject(e.srtStats)}return n},i.toObject=function(e,n){n||(n={});let s={};if(n.defaults){if(s.id="",s.type=n.enums===String?"SOURCE_TYPE_UNSPECIFIED":0,s.userId="",s.state=n.enums===String?"CONNECTION_STATE_UNSPECIFIED":0,s.transportState=n.enums===String?"SOURCE_TRANSPORT_STATE_STOPPED":0,s.url="",s.width=0,s.height=0,s.fps=0,$util.Long){let a=new $util.Long(0,0,!1);s.durationUs=n.longs===String?a.toString():n.longs===Number?a.toNumber():a}else s.durationUs=n.longs===String?"0":0;if($util.Long){let a=new $util.Long(0,0,!1);s.playPositionUs=n.longs===String?a.toString():n.longs===Number?a.toNumber():a}else s.playPositionUs=n.longs===String?"0":0;if(s.videoBuf=0,s.audioBuf=0,s.gpuBuf=0,s.audioChannels=0,s.audioLevel=0,$util.Long){let a=new $util.Long(0,0,!1);s.lipSyncOffsetUs=n.longs===String?a.toString():n.longs===Number?a.toNumber():a}else s.lipSyncOffsetUs=n.longs===String?"0":0;s.decodeTiming=null,s.videoBufAvg=0}return e.id!=null&&e.hasOwnProperty("id")&&(s.id=e.id),e.type!=null&&e.hasOwnProperty("type")&&(s.type=n.enums===String?$root.sesame.v1.sources.SourceType[e.type]===void 0?e.type:$root.sesame.v1.sources.SourceType[e.type]:e.type),e.userId!=null&&e.hasOwnProperty("userId")&&(s.userId=e.userId),e.state!=null&&e.hasOwnProperty("state")&&(s.state=n.enums===String?$root.sesame.v1.common.ConnectionState[e.state]===void 0?e.state:$root.sesame.v1.common.ConnectionState[e.state]:e.state),e.transportState!=null&&e.hasOwnProperty("transportState")&&(s.transportState=n.enums===String?$root.sesame.v1.sources.SourceTransportState[e.transportState]===void 0?e.transportState:$root.sesame.v1.sources.SourceTransportState[e.transportState]:e.transportState),e.msg!=null&&e.hasOwnProperty("msg")&&(s.msg=e.msg,n.oneofs&&(s._msg="msg")),e.url!=null&&e.hasOwnProperty("url")&&(s.url=e.url),e.width!=null&&e.hasOwnProperty("width")&&(s.width=e.width),e.height!=null&&e.hasOwnProperty("height")&&(s.height=e.height),e.fps!=null&&e.hasOwnProperty("fps")&&(s.fps=n.json&&!isFinite(e.fps)?String(e.fps):e.fps),e.durationUs!=null&&e.hasOwnProperty("durationUs")&&(typeof e.durationUs=="number"?s.durationUs=n.longs===String?String(e.durationUs):e.durationUs:s.durationUs=n.longs===String?$util.Long.prototype.toString.call(e.durationUs):n.longs===Number?new $util.LongBits(e.durationUs.low>>>0,e.durationUs.high>>>0).toNumber():e.durationUs),e.playPositionUs!=null&&e.hasOwnProperty("playPositionUs")&&(typeof e.playPositionUs=="number"?s.playPositionUs=n.longs===String?String(e.playPositionUs):e.playPositionUs:s.playPositionUs=n.longs===String?$util.Long.prototype.toString.call(e.playPositionUs):n.longs===Number?new $util.LongBits(e.playPositionUs.low>>>0,e.playPositionUs.high>>>0).toNumber():e.playPositionUs),e.videoBuf!=null&&e.hasOwnProperty("videoBuf")&&(s.videoBuf=e.videoBuf),e.audioBuf!=null&&e.hasOwnProperty("audioBuf")&&(s.audioBuf=e.audioBuf),e.gpuBuf!=null&&e.hasOwnProperty("gpuBuf")&&(s.gpuBuf=e.gpuBuf),e.audioChannels!=null&&e.hasOwnProperty("audioChannels")&&(s.audioChannels=e.audioChannels),e.audioLevel!=null&&e.hasOwnProperty("audioLevel")&&(s.audioLevel=n.json&&!isFinite(e.audioLevel)?String(e.audioLevel):e.audioLevel),e.lipSyncOffsetUs!=null&&e.hasOwnProperty("lipSyncOffsetUs")&&(typeof e.lipSyncOffsetUs=="number"?s.lipSyncOffsetUs=n.longs===String?String(e.lipSyncOffsetUs):e.lipSyncOffsetUs:s.lipSyncOffsetUs=n.longs===String?$util.Long.prototype.toString.call(e.lipSyncOffsetUs):n.longs===Number?new $util.LongBits(e.lipSyncOffsetUs.low>>>0,e.lipSyncOffsetUs.high>>>0).toNumber():e.lipSyncOffsetUs),e.decodeTiming!=null&&e.hasOwnProperty("decodeTiming")&&(s.decodeTiming=$root.sesame.v1.status.FrameTiming.toObject(e.decodeTiming,n)),e.videoBufAvg!=null&&e.hasOwnProperty("videoBufAvg")&&(s.videoBufAvg=n.json&&!isFinite(e.videoBufAvg)?String(e.videoBufAvg):e.videoBufAvg),e.srtStats!=null&&e.hasOwnProperty("srtStats")&&(s.srtStats=$root.sesame.v1.status.SRTReceiveStatistics.toObject(e.srtStats,n),n.oneofs&&(s._srtStats="srtStats")),s},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(e){return e===void 0&&(e="type.googleapis.com"),e+"/sesame.v1.sources.SourceStatus"},i}(),l.SourceMetadataSetRequest=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.sourceId="",i.prototype.metadata=null,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.sourceId!=null&&Object.hasOwnProperty.call(t,"sourceId")&&e.uint32(10).string(t.sourceId),t.metadata!=null&&Object.hasOwnProperty.call(t,"metadata")&&$root.sesame.v1.common.TransportMetadata.encode(t.metadata,e.uint32(18).fork()).ldelim(),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.sources.SourceMetadataSetRequest;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.sourceId=t.string();break}case 2:{a.metadata=$root.sesame.v1.common.TransportMetadata.decode(t,t.uint32());break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.sourceId!=null&&t.hasOwnProperty("sourceId")&&!$util.isString(t.sourceId))return"sourceId: string expected";if(t.metadata!=null&&t.hasOwnProperty("metadata")){let e=$root.sesame.v1.common.TransportMetadata.verify(t.metadata);if(e)return"metadata."+e}return null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.sources.SourceMetadataSetRequest)return t;let e=new $root.sesame.v1.sources.SourceMetadataSetRequest;if(t.sourceId!=null&&(e.sourceId=String(t.sourceId)),t.metadata!=null){if(typeof t.metadata!="object")throw TypeError(".sesame.v1.sources.SourceMetadataSetRequest.metadata: object expected");e.metadata=$root.sesame.v1.common.TransportMetadata.fromObject(t.metadata)}return e},i.toObject=function(t,e){e||(e={});let n={};return e.defaults&&(n.sourceId="",n.metadata=null),t.sourceId!=null&&t.hasOwnProperty("sourceId")&&(n.sourceId=t.sourceId),t.metadata!=null&&t.hasOwnProperty("metadata")&&(n.metadata=$root.sesame.v1.common.TransportMetadata.toObject(t.metadata,e)),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.sources.SourceMetadataSetRequest"},i}(),l.SourceMetadataEvent=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.sourceId="",i.prototype.metadata=null,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.sourceId!=null&&Object.hasOwnProperty.call(t,"sourceId")&&e.uint32(10).string(t.sourceId),t.metadata!=null&&Object.hasOwnProperty.call(t,"metadata")&&$root.sesame.v1.common.TransportMetadata.encode(t.metadata,e.uint32(18).fork()).ldelim(),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.sources.SourceMetadataEvent;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.sourceId=t.string();break}case 2:{a.metadata=$root.sesame.v1.common.TransportMetadata.decode(t,t.uint32());break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.sourceId!=null&&t.hasOwnProperty("sourceId")&&!$util.isString(t.sourceId))return"sourceId: string expected";if(t.metadata!=null&&t.hasOwnProperty("metadata")){let e=$root.sesame.v1.common.TransportMetadata.verify(t.metadata);if(e)return"metadata."+e}return null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.sources.SourceMetadataEvent)return t;let e=new $root.sesame.v1.sources.SourceMetadataEvent;if(t.sourceId!=null&&(e.sourceId=String(t.sourceId)),t.metadata!=null){if(typeof t.metadata!="object")throw TypeError(".sesame.v1.sources.SourceMetadataEvent.metadata: object expected");e.metadata=$root.sesame.v1.common.TransportMetadata.fromObject(t.metadata)}return e},i.toObject=function(t,e){e||(e={});let n={};return e.defaults&&(n.sourceId="",n.metadata=null),t.sourceId!=null&&t.hasOwnProperty("sourceId")&&(n.sourceId=t.sourceId),t.metadata!=null&&t.hasOwnProperty("metadata")&&(n.metadata=$root.sesame.v1.common.TransportMetadata.toObject(t.metadata,e)),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.sources.SourceMetadataEvent"},i}(),l.SourceTransportCommand=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.sourceId="",i.prototype.cmdType=0,i.prototype.value=null,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.sourceId!=null&&Object.hasOwnProperty.call(t,"sourceId")&&e.uint32(10).string(t.sourceId),t.cmdType!=null&&Object.hasOwnProperty.call(t,"cmdType")&&e.uint32(16).int32(t.cmdType),t.value!=null&&Object.hasOwnProperty.call(t,"value")&&$root.sesame.v1.common.PropValue.encode(t.value,e.uint32(26).fork()).ldelim(),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.sources.SourceTransportCommand;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.sourceId=t.string();break}case 2:{a.cmdType=t.int32();break}case 3:{a.value=$root.sesame.v1.common.PropValue.decode(t,t.uint32());break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.sourceId!=null&&t.hasOwnProperty("sourceId")&&!$util.isString(t.sourceId))return"sourceId: string expected";if(t.cmdType!=null&&t.hasOwnProperty("cmdType"))switch(t.cmdType){default:return"cmdType: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 11:case 12:case 13:case 14:case 15:break}if(t.value!=null&&t.hasOwnProperty("value")){let e=$root.sesame.v1.common.PropValue.verify(t.value);if(e)return"value."+e}return null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.sources.SourceTransportCommand)return t;let e=new $root.sesame.v1.sources.SourceTransportCommand;switch(t.sourceId!=null&&(e.sourceId=String(t.sourceId)),t.cmdType){default:if(typeof t.cmdType=="number"){e.cmdType=t.cmdType;break}break;case"SOURCE_TRANSPORT_CMD_UNSPECIFIED":case 0:e.cmdType=0;break;case"SOURCE_TRANSPORT_CMD_STOP":case 1:e.cmdType=1;break;case"SOURCE_TRANSPORT_CMD_PLAY":case 2:e.cmdType=2;break;case"SOURCE_TRANSPORT_CMD_SEEK":case 3:e.cmdType=3;break;case"SOURCE_TRANSPORT_CMD_LOOP":case 4:e.cmdType=4;break;case"SOURCE_TRANSPORT_CMD_LIVE":case 5:e.cmdType=5;break;case"SOURCE_TRANSPORT_CMD_JOG":case 6:e.cmdType=6;break;case"SOURCE_TRANSPORT_CMD_MONITOR":case 7:e.cmdType=7;break;case"SOURCE_TRANSPORT_CMD_SEEK_USER_TIME":case 8:e.cmdType=8;break;case"SOURCE_TRANSPORT_CMD_TAKE":case 9:e.cmdType=9;break;case"SOURCE_TRANSPORT_CMD_POST_ROLL":case 10:e.cmdType=10;break;case"SOURCE_TRANSPORT_CMD_PRE_ROLL":case 11:e.cmdType=11;break;case"SOURCE_TRANSPORT_CMD_NEXT":case 12:e.cmdType=12;break;case"SOURCE_TRANSPORT_CMD_SKIP_NEXT":case 13:e.cmdType=13;break;case"SOURCE_TRANSPORT_CMD_TRANSITIONS_DISABLED":case 14:e.cmdType=14;break;case"SOURCE_TRANSPORT_CMD_SET_SCRUBBING":case 15:e.cmdType=15;break}if(t.value!=null){if(typeof t.value!="object")throw TypeError(".sesame.v1.sources.SourceTransportCommand.value: object expected");e.value=$root.sesame.v1.common.PropValue.fromObject(t.value)}return e},i.toObject=function(t,e){e||(e={});let n={};return e.defaults&&(n.sourceId="",n.cmdType=e.enums===String?"SOURCE_TRANSPORT_CMD_UNSPECIFIED":0,n.value=null),t.sourceId!=null&&t.hasOwnProperty("sourceId")&&(n.sourceId=t.sourceId),t.cmdType!=null&&t.hasOwnProperty("cmdType")&&(n.cmdType=e.enums===String?$root.sesame.v1.sources.SourceTransportCommandType[t.cmdType]===void 0?t.cmdType:$root.sesame.v1.sources.SourceTransportCommandType[t.cmdType]:t.cmdType),t.value!=null&&t.hasOwnProperty("value")&&(n.value=$root.sesame.v1.common.PropValue.toObject(t.value,e)),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.sources.SourceTransportCommand"},i}(),l.LoadPlaylistRequest=function(){function i(t){if(this.items=[],t)for(let e=Object.keys(t),n=0;n<e.length;++n)t[e[n]]!=null&&(this[e[n]]=t[e[n]])}i.prototype.sourceId="",i.prototype.userPlaylistId="",i.prototype.items=$util.emptyArray,i.prototype.startTimeUs=null,i.prototype.startIndex=null,i.prototype.materialPosUs=null;let r;return Object.defineProperty(i.prototype,"_startTimeUs",{get:$util.oneOfGetter(r=["startTimeUs"]),set:$util.oneOfSetter(r)}),Object.defineProperty(i.prototype,"_startIndex",{get:$util.oneOfGetter(r=["startIndex"]),set:$util.oneOfSetter(r)}),Object.defineProperty(i.prototype,"_materialPosUs",{get:$util.oneOfGetter(r=["materialPosUs"]),set:$util.oneOfSetter(r)}),i.create=function(e){return new i(e)},i.encode=function(e,n){if(n||(n=$Writer.create()),e.sourceId!=null&&Object.hasOwnProperty.call(e,"sourceId")&&n.uint32(10).string(e.sourceId),e.userPlaylistId!=null&&Object.hasOwnProperty.call(e,"userPlaylistId")&&n.uint32(18).string(e.userPlaylistId),e.items!=null&&e.items.length)for(let s=0;s<e.items.length;++s)$root.sesame.v1.recorder.PlaylistItem.encode(e.items[s],n.uint32(26).fork()).ldelim();return e.startTimeUs!=null&&Object.hasOwnProperty.call(e,"startTimeUs")&&n.uint32(32).int64(e.startTimeUs),e.startIndex!=null&&Object.hasOwnProperty.call(e,"startIndex")&&n.uint32(40).int64(e.startIndex),e.materialPosUs!=null&&Object.hasOwnProperty.call(e,"materialPosUs")&&n.uint32(48).int64(e.materialPosUs),n},i.encodeDelimited=function(e,n){return this.encode(e,n).ldelim()},i.decode=function(e,n,s){e instanceof $Reader||(e=$Reader.create(e));let a=n===void 0?e.len:e.pos+n,U=new $root.sesame.v1.sources.LoadPlaylistRequest;for(;e.pos<a;){let u=e.uint32();if(u===s)break;switch(u>>>3){case 1:{U.sourceId=e.string();break}case 2:{U.userPlaylistId=e.string();break}case 3:{U.items&&U.items.length||(U.items=[]),U.items.push($root.sesame.v1.recorder.PlaylistItem.decode(e,e.uint32()));break}case 4:{U.startTimeUs=e.int64();break}case 5:{U.startIndex=e.int64();break}case 6:{U.materialPosUs=e.int64();break}default:e.skipType(u&7);break}}return U},i.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},i.verify=function(e){if(typeof e!="object"||e===null)return"object expected";if(e.sourceId!=null&&e.hasOwnProperty("sourceId")&&!$util.isString(e.sourceId))return"sourceId: string expected";if(e.userPlaylistId!=null&&e.hasOwnProperty("userPlaylistId")&&!$util.isString(e.userPlaylistId))return"userPlaylistId: string expected";if(e.items!=null&&e.hasOwnProperty("items")){if(!Array.isArray(e.items))return"items: array expected";for(let n=0;n<e.items.length;++n){let s=$root.sesame.v1.recorder.PlaylistItem.verify(e.items[n]);if(s)return"items."+s}}return e.startTimeUs!=null&&e.hasOwnProperty("startTimeUs")&&!$util.isInteger(e.startTimeUs)&&!(e.startTimeUs&&$util.isInteger(e.startTimeUs.low)&&$util.isInteger(e.startTimeUs.high))?"startTimeUs: integer|Long expected":e.startIndex!=null&&e.hasOwnProperty("startIndex")&&!$util.isInteger(e.startIndex)&&!(e.startIndex&&$util.isInteger(e.startIndex.low)&&$util.isInteger(e.startIndex.high))?"startIndex: integer|Long expected":e.materialPosUs!=null&&e.hasOwnProperty("materialPosUs")&&!$util.isInteger(e.materialPosUs)&&!(e.materialPosUs&&$util.isInteger(e.materialPosUs.low)&&$util.isInteger(e.materialPosUs.high))?"materialPosUs: integer|Long expected":null},i.fromObject=function(e){if(e instanceof $root.sesame.v1.sources.LoadPlaylistRequest)return e;let n=new $root.sesame.v1.sources.LoadPlaylistRequest;if(e.sourceId!=null&&(n.sourceId=String(e.sourceId)),e.userPlaylistId!=null&&(n.userPlaylistId=String(e.userPlaylistId)),e.items){if(!Array.isArray(e.items))throw TypeError(".sesame.v1.sources.LoadPlaylistRequest.items: array expected");n.items=[];for(let s=0;s<e.items.length;++s){if(typeof e.items[s]!="object")throw TypeError(".sesame.v1.sources.LoadPlaylistRequest.items: object expected");n.items[s]=$root.sesame.v1.recorder.PlaylistItem.fromObject(e.items[s])}}return e.startTimeUs!=null&&($util.Long?(n.startTimeUs=$util.Long.fromValue(e.startTimeUs)).unsigned=!1:typeof e.startTimeUs=="string"?n.startTimeUs=parseInt(e.startTimeUs,10):typeof e.startTimeUs=="number"?n.startTimeUs=e.startTimeUs:typeof e.startTimeUs=="object"&&(n.startTimeUs=new $util.LongBits(e.startTimeUs.low>>>0,e.startTimeUs.high>>>0).toNumber())),e.startIndex!=null&&($util.Long?(n.startIndex=$util.Long.fromValue(e.startIndex)).unsigned=!1:typeof e.startIndex=="string"?n.startIndex=parseInt(e.startIndex,10):typeof e.startIndex=="number"?n.startIndex=e.startIndex:typeof e.startIndex=="object"&&(n.startIndex=new $util.LongBits(e.startIndex.low>>>0,e.startIndex.high>>>0).toNumber())),e.materialPosUs!=null&&($util.Long?(n.materialPosUs=$util.Long.fromValue(e.materialPosUs)).unsigned=!1:typeof e.materialPosUs=="string"?n.materialPosUs=parseInt(e.materialPosUs,10):typeof e.materialPosUs=="number"?n.materialPosUs=e.materialPosUs:typeof e.materialPosUs=="object"&&(n.materialPosUs=new $util.LongBits(e.materialPosUs.low>>>0,e.materialPosUs.high>>>0).toNumber())),n},i.toObject=function(e,n){n||(n={});let s={};if((n.arrays||n.defaults)&&(s.items=[]),n.defaults&&(s.sourceId="",s.userPlaylistId=""),e.sourceId!=null&&e.hasOwnProperty("sourceId")&&(s.sourceId=e.sourceId),e.userPlaylistId!=null&&e.hasOwnProperty("userPlaylistId")&&(s.userPlaylistId=e.userPlaylistId),e.items&&e.items.length){s.items=[];for(let a=0;a<e.items.length;++a)s.items[a]=$root.sesame.v1.recorder.PlaylistItem.toObject(e.items[a],n)}return e.startTimeUs!=null&&e.hasOwnProperty("startTimeUs")&&(typeof e.startTimeUs=="number"?s.startTimeUs=n.longs===String?String(e.startTimeUs):e.startTimeUs:s.startTimeUs=n.longs===String?$util.Long.prototype.toString.call(e.startTimeUs):n.longs===Number?new $util.LongBits(e.startTimeUs.low>>>0,e.startTimeUs.high>>>0).toNumber():e.startTimeUs,n.oneofs&&(s._startTimeUs="startTimeUs")),e.startIndex!=null&&e.hasOwnProperty("startIndex")&&(typeof e.startIndex=="number"?s.startIndex=n.longs===String?String(e.startIndex):e.startIndex:s.startIndex=n.longs===String?$util.Long.prototype.toString.call(e.startIndex):n.longs===Number?new $util.LongBits(e.startIndex.low>>>0,e.startIndex.high>>>0).toNumber():e.startIndex,n.oneofs&&(s._startIndex="startIndex")),e.materialPosUs!=null&&e.hasOwnProperty("materialPosUs")&&(typeof e.materialPosUs=="number"?s.materialPosUs=n.longs===String?String(e.materialPosUs):e.materialPosUs:s.materialPosUs=n.longs===String?$util.Long.prototype.toString.call(e.materialPosUs):n.longs===Number?new $util.LongBits(e.materialPosUs.low>>>0,e.materialPosUs.high>>>0).toNumber():e.materialPosUs,n.oneofs&&(s._materialPosUs="materialPosUs")),s},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(e){return e===void 0&&(e="type.googleapis.com"),e+"/sesame.v1.sources.LoadPlaylistRequest"},i}(),l.EjectPlaylistRequest=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.sourceId="",i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.sourceId!=null&&Object.hasOwnProperty.call(t,"sourceId")&&e.uint32(10).string(t.sourceId),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.sources.EjectPlaylistRequest;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.sourceId=t.string();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.sourceId!=null&&t.hasOwnProperty("sourceId")&&!$util.isString(t.sourceId)?"sourceId: string expected":null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.sources.EjectPlaylistRequest)return t;let e=new $root.sesame.v1.sources.EjectPlaylistRequest;return t.sourceId!=null&&(e.sourceId=String(t.sourceId)),e},i.toObject=function(t,e){e||(e={});let n={};return e.defaults&&(n.sourceId=""),t.sourceId!=null&&t.hasOwnProperty("sourceId")&&(n.sourceId=t.sourceId),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.sources.EjectPlaylistRequest"},i}(),l}(),o.recorder=function(){const l={};return l.TransitionType=function(){const i={},r=Object.create(i);return r[i[0]="TRANSITION_TYPE_MIX"]=0,r[i[1]="TRANSITION_TYPE_FADE_TO_COLOR"]=1,r[i[2]="TRANSITION_TYPE_FADE_FROM_COLOR"]=2,r[i[3]="TRANSITION_TYPE_FADE_TO_FROM_COLOR"]=3,r}(),l.RecorderClip=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.id=$util.Long?$util.Long.fromBits(0,0,!0):0,i.prototype.name="",i.prototype.userData="",i.prototype.flags=$util.Long?$util.Long.fromBits(0,0,!0):0,i.prototype.startTimeUs=$util.Long?$util.Long.fromBits(0,0,!1):0,i.prototype.endTimeUs=$util.Long?$util.Long.fromBits(0,0,!1):0,i.prototype.lockedStartUs=$util.Long?$util.Long.fromBits(0,0,!1):0,i.prototype.lockedEndUs=$util.Long?$util.Long.fromBits(0,0,!1):0,i.prototype.userTimeUs=$util.Long?$util.Long.fromBits(0,0,!1):0,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.id!=null&&Object.hasOwnProperty.call(t,"id")&&e.uint32(8).uint64(t.id),t.name!=null&&Object.hasOwnProperty.call(t,"name")&&e.uint32(18).string(t.name),t.userData!=null&&Object.hasOwnProperty.call(t,"userData")&&e.uint32(26).string(t.userData),t.flags!=null&&Object.hasOwnProperty.call(t,"flags")&&e.uint32(32).uint64(t.flags),t.startTimeUs!=null&&Object.hasOwnProperty.call(t,"startTimeUs")&&e.uint32(40).int64(t.startTimeUs),t.endTimeUs!=null&&Object.hasOwnProperty.call(t,"endTimeUs")&&e.uint32(48).int64(t.endTimeUs),t.lockedStartUs!=null&&Object.hasOwnProperty.call(t,"lockedStartUs")&&e.uint32(56).int64(t.lockedStartUs),t.lockedEndUs!=null&&Object.hasOwnProperty.call(t,"lockedEndUs")&&e.uint32(64).int64(t.lockedEndUs),t.userTimeUs!=null&&Object.hasOwnProperty.call(t,"userTimeUs")&&e.uint32(72).int64(t.userTimeUs),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.recorder.RecorderClip;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.id=t.uint64();break}case 2:{a.name=t.string();break}case 3:{a.userData=t.string();break}case 4:{a.flags=t.uint64();break}case 5:{a.startTimeUs=t.int64();break}case 6:{a.endTimeUs=t.int64();break}case 7:{a.lockedStartUs=t.int64();break}case 8:{a.lockedEndUs=t.int64();break}case 9:{a.userTimeUs=t.int64();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.id!=null&&t.hasOwnProperty("id")&&!$util.isInteger(t.id)&&!(t.id&&$util.isInteger(t.id.low)&&$util.isInteger(t.id.high))?"id: integer|Long expected":t.name!=null&&t.hasOwnProperty("name")&&!$util.isString(t.name)?"name: string expected":t.userData!=null&&t.hasOwnProperty("userData")&&!$util.isString(t.userData)?"userData: string expected":t.flags!=null&&t.hasOwnProperty("flags")&&!$util.isInteger(t.flags)&&!(t.flags&&$util.isInteger(t.flags.low)&&$util.isInteger(t.flags.high))?"flags: integer|Long expected":t.startTimeUs!=null&&t.hasOwnProperty("startTimeUs")&&!$util.isInteger(t.startTimeUs)&&!(t.startTimeUs&&$util.isInteger(t.startTimeUs.low)&&$util.isInteger(t.startTimeUs.high))?"startTimeUs: integer|Long expected":t.endTimeUs!=null&&t.hasOwnProperty("endTimeUs")&&!$util.isInteger(t.endTimeUs)&&!(t.endTimeUs&&$util.isInteger(t.endTimeUs.low)&&$util.isInteger(t.endTimeUs.high))?"endTimeUs: integer|Long expected":t.lockedStartUs!=null&&t.hasOwnProperty("lockedStartUs")&&!$util.isInteger(t.lockedStartUs)&&!(t.lockedStartUs&&$util.isInteger(t.lockedStartUs.low)&&$util.isInteger(t.lockedStartUs.high))?"lockedStartUs: integer|Long expected":t.lockedEndUs!=null&&t.hasOwnProperty("lockedEndUs")&&!$util.isInteger(t.lockedEndUs)&&!(t.lockedEndUs&&$util.isInteger(t.lockedEndUs.low)&&$util.isInteger(t.lockedEndUs.high))?"lockedEndUs: integer|Long expected":t.userTimeUs!=null&&t.hasOwnProperty("userTimeUs")&&!$util.isInteger(t.userTimeUs)&&!(t.userTimeUs&&$util.isInteger(t.userTimeUs.low)&&$util.isInteger(t.userTimeUs.high))?"userTimeUs: integer|Long expected":null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.recorder.RecorderClip)return t;let e=new $root.sesame.v1.recorder.RecorderClip;return t.id!=null&&($util.Long?(e.id=$util.Long.fromValue(t.id)).unsigned=!0:typeof t.id=="string"?e.id=parseInt(t.id,10):typeof t.id=="number"?e.id=t.id:typeof t.id=="object"&&(e.id=new $util.LongBits(t.id.low>>>0,t.id.high>>>0).toNumber(!0))),t.name!=null&&(e.name=String(t.name)),t.userData!=null&&(e.userData=String(t.userData)),t.flags!=null&&($util.Long?(e.flags=$util.Long.fromValue(t.flags)).unsigned=!0:typeof t.flags=="string"?e.flags=parseInt(t.flags,10):typeof t.flags=="number"?e.flags=t.flags:typeof t.flags=="object"&&(e.flags=new $util.LongBits(t.flags.low>>>0,t.flags.high>>>0).toNumber(!0))),t.startTimeUs!=null&&($util.Long?(e.startTimeUs=$util.Long.fromValue(t.startTimeUs)).unsigned=!1:typeof t.startTimeUs=="string"?e.startTimeUs=parseInt(t.startTimeUs,10):typeof t.startTimeUs=="number"?e.startTimeUs=t.startTimeUs:typeof t.startTimeUs=="object"&&(e.startTimeUs=new $util.LongBits(t.startTimeUs.low>>>0,t.startTimeUs.high>>>0).toNumber())),t.endTimeUs!=null&&($util.Long?(e.endTimeUs=$util.Long.fromValue(t.endTimeUs)).unsigned=!1:typeof t.endTimeUs=="string"?e.endTimeUs=parseInt(t.endTimeUs,10):typeof t.endTimeUs=="number"?e.endTimeUs=t.endTimeUs:typeof t.endTimeUs=="object"&&(e.endTimeUs=new $util.LongBits(t.endTimeUs.low>>>0,t.endTimeUs.high>>>0).toNumber())),t.lockedStartUs!=null&&($util.Long?(e.lockedStartUs=$util.Long.fromValue(t.lockedStartUs)).unsigned=!1:typeof t.lockedStartUs=="string"?e.lockedStartUs=parseInt(t.lockedStartUs,10):typeof t.lockedStartUs=="number"?e.lockedStartUs=t.lockedStartUs:typeof t.lockedStartUs=="object"&&(e.lockedStartUs=new $util.LongBits(t.lockedStartUs.low>>>0,t.lockedStartUs.high>>>0).toNumber())),t.lockedEndUs!=null&&($util.Long?(e.lockedEndUs=$util.Long.fromValue(t.lockedEndUs)).unsigned=!1:typeof t.lockedEndUs=="string"?e.lockedEndUs=parseInt(t.lockedEndUs,10):typeof t.lockedEndUs=="number"?e.lockedEndUs=t.lockedEndUs:typeof t.lockedEndUs=="object"&&(e.lockedEndUs=new $util.LongBits(t.lockedEndUs.low>>>0,t.lockedEndUs.high>>>0).toNumber())),t.userTimeUs!=null&&($util.Long?(e.userTimeUs=$util.Long.fromValue(t.userTimeUs)).unsigned=!1:typeof t.userTimeUs=="string"?e.userTimeUs=parseInt(t.userTimeUs,10):typeof t.userTimeUs=="number"?e.userTimeUs=t.userTimeUs:typeof t.userTimeUs=="object"&&(e.userTimeUs=new $util.LongBits(t.userTimeUs.low>>>0,t.userTimeUs.high>>>0).toNumber())),e},i.toObject=function(t,e){e||(e={});let n={};if(e.defaults){if($util.Long){let s=new $util.Long(0,0,!0);n.id=e.longs===String?s.toString():e.longs===Number?s.toNumber():s}else n.id=e.longs===String?"0":0;if(n.name="",n.userData="",$util.Long){let s=new $util.Long(0,0,!0);n.flags=e.longs===String?s.toString():e.longs===Number?s.toNumber():s}else n.flags=e.longs===String?"0":0;if($util.Long){let s=new $util.Long(0,0,!1);n.startTimeUs=e.longs===String?s.toString():e.longs===Number?s.toNumber():s}else n.startTimeUs=e.longs===String?"0":0;if($util.Long){let s=new $util.Long(0,0,!1);n.endTimeUs=e.longs===String?s.toString():e.longs===Number?s.toNumber():s}else n.endTimeUs=e.longs===String?"0":0;if($util.Long){let s=new $util.Long(0,0,!1);n.lockedStartUs=e.longs===String?s.toString():e.longs===Number?s.toNumber():s}else n.lockedStartUs=e.longs===String?"0":0;if($util.Long){let s=new $util.Long(0,0,!1);n.lockedEndUs=e.longs===String?s.toString():e.longs===Number?s.toNumber():s}else n.lockedEndUs=e.longs===String?"0":0;if($util.Long){let s=new $util.Long(0,0,!1);n.userTimeUs=e.longs===String?s.toString():e.longs===Number?s.toNumber():s}else n.userTimeUs=e.longs===String?"0":0}return t.id!=null&&t.hasOwnProperty("id")&&(typeof t.id=="number"?n.id=e.longs===String?String(t.id):t.id:n.id=e.longs===String?$util.Long.prototype.toString.call(t.id):e.longs===Number?new $util.LongBits(t.id.low>>>0,t.id.high>>>0).toNumber(!0):t.id),t.name!=null&&t.hasOwnProperty("name")&&(n.name=t.name),t.userData!=null&&t.hasOwnProperty("userData")&&(n.userData=t.userData),t.flags!=null&&t.hasOwnProperty("flags")&&(typeof t.flags=="number"?n.flags=e.longs===String?String(t.flags):t.flags:n.flags=e.longs===String?$util.Long.prototype.toString.call(t.flags):e.longs===Number?new $util.LongBits(t.flags.low>>>0,t.flags.high>>>0).toNumber(!0):t.flags),t.startTimeUs!=null&&t.hasOwnProperty("startTimeUs")&&(typeof t.startTimeUs=="number"?n.startTimeUs=e.longs===String?String(t.startTimeUs):t.startTimeUs:n.startTimeUs=e.longs===String?$util.Long.prototype.toString.call(t.startTimeUs):e.longs===Number?new $util.LongBits(t.startTimeUs.low>>>0,t.startTimeUs.high>>>0).toNumber():t.startTimeUs),t.endTimeUs!=null&&t.hasOwnProperty("endTimeUs")&&(typeof t.endTimeUs=="number"?n.endTimeUs=e.longs===String?String(t.endTimeUs):t.endTimeUs:n.endTimeUs=e.longs===String?$util.Long.prototype.toString.call(t.endTimeUs):e.longs===Number?new $util.LongBits(t.endTimeUs.low>>>0,t.endTimeUs.high>>>0).toNumber():t.endTimeUs),t.lockedStartUs!=null&&t.hasOwnProperty("lockedStartUs")&&(typeof t.lockedStartUs=="number"?n.lockedStartUs=e.longs===String?String(t.lockedStartUs):t.lockedStartUs:n.lockedStartUs=e.longs===String?$util.Long.prototype.toString.call(t.lockedStartUs):e.longs===Number?new $util.LongBits(t.lockedStartUs.low>>>0,t.lockedStartUs.high>>>0).toNumber():t.lockedStartUs),t.lockedEndUs!=null&&t.hasOwnProperty("lockedEndUs")&&(typeof t.lockedEndUs=="number"?n.lockedEndUs=e.longs===String?String(t.lockedEndUs):t.lockedEndUs:n.lockedEndUs=e.longs===String?$util.Long.prototype.toString.call(t.lockedEndUs):e.longs===Number?new $util.LongBits(t.lockedEndUs.low>>>0,t.lockedEndUs.high>>>0).toNumber():t.lockedEndUs),t.userTimeUs!=null&&t.hasOwnProperty("userTimeUs")&&(typeof t.userTimeUs=="number"?n.userTimeUs=e.longs===String?String(t.userTimeUs):t.userTimeUs:n.userTimeUs=e.longs===String?$util.Long.prototype.toString.call(t.userTimeUs):e.longs===Number?new $util.LongBits(t.userTimeUs.low>>>0,t.userTimeUs.high>>>0).toNumber():t.userTimeUs),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.recorder.RecorderClip"},i}(),l.PlaylistItem=function(){function i(t){if(this.audioRouting=[],this.audioLevels=[],t)for(let e=Object.keys(t),n=0;n<e.length;++n)t[e[n]]!=null&&(this[e[n]]=t[e[n]])}i.prototype.recorderId="",i.prototype.id=$util.Long?$util.Long.fromBits(0,0,!0):0,i.prototype.transitionTimeUs=$util.Long?$util.Long.fromBits(0,0,!1):0,i.prototype.transitionType=0,i.prototype.transitionFadeColor=null,i.prototype.speed=0,i.prototype.audioRouting=$util.emptyArray,i.prototype.startTimeUs=null,i.prototype.endTimeUs=null,i.prototype.audioLevels=$util.emptyArray;let r;return Object.defineProperty(i.prototype,"_startTimeUs",{get:$util.oneOfGetter(r=["startTimeUs"]),set:$util.oneOfSetter(r)}),Object.defineProperty(i.prototype,"_endTimeUs",{get:$util.oneOfGetter(r=["endTimeUs"]),set:$util.oneOfSetter(r)}),i.create=function(e){return new i(e)},i.encode=function(e,n){if(n||(n=$Writer.create()),e.recorderId!=null&&Object.hasOwnProperty.call(e,"recorderId")&&n.uint32(10).string(e.recorderId),e.id!=null&&Object.hasOwnProperty.call(e,"id")&&n.uint32(16).uint64(e.id),e.transitionTimeUs!=null&&Object.hasOwnProperty.call(e,"transitionTimeUs")&&n.uint32(24).int64(e.transitionTimeUs),e.transitionType!=null&&Object.hasOwnProperty.call(e,"transitionType")&&n.uint32(32).int32(e.transitionType),e.transitionFadeColor!=null&&Object.hasOwnProperty.call(e,"transitionFadeColor")&&$root.sesame.v1.common.Vec4.encode(e.transitionFadeColor,n.uint32(42).fork()).ldelim(),e.speed!=null&&Object.hasOwnProperty.call(e,"speed")&&n.uint32(53).float(e.speed),e.audioRouting!=null&&e.audioRouting.length){n.uint32(58).fork();for(let s=0;s<e.audioRouting.length;++s)n.uint32(e.audioRouting[s]);n.ldelim()}if(e.startTimeUs!=null&&Object.hasOwnProperty.call(e,"startTimeUs")&&n.uint32(64).int64(e.startTimeUs),e.endTimeUs!=null&&Object.hasOwnProperty.call(e,"endTimeUs")&&n.uint32(72).int64(e.endTimeUs),e.audioLevels!=null&&e.audioLevels.length){n.uint32(82).fork();for(let s=0;s<e.audioLevels.length;++s)n.float(e.audioLevels[s]);n.ldelim()}return n},i.encodeDelimited=function(e,n){return this.encode(e,n).ldelim()},i.decode=function(e,n,s){e instanceof $Reader||(e=$Reader.create(e));let a=n===void 0?e.len:e.pos+n,U=new $root.sesame.v1.recorder.PlaylistItem;for(;e.pos<a;){let u=e.uint32();if(u===s)break;switch(u>>>3){case 1:{U.recorderId=e.string();break}case 2:{U.id=e.uint64();break}case 3:{U.transitionTimeUs=e.int64();break}case 4:{U.transitionType=e.int32();break}case 5:{U.transitionFadeColor=$root.sesame.v1.common.Vec4.decode(e,e.uint32());break}case 6:{U.speed=e.float();break}case 7:{if(U.audioRouting&&U.audioRouting.length||(U.audioRouting=[]),(u&7)===2){let F=e.uint32()+e.pos;for(;e.pos<F;)U.audioRouting.push(e.uint32())}else U.audioRouting.push(e.uint32());break}case 8:{U.startTimeUs=e.int64();break}case 9:{U.endTimeUs=e.int64();break}case 10:{if(U.audioLevels&&U.audioLevels.length||(U.audioLevels=[]),(u&7)===2){let F=e.uint32()+e.pos;for(;e.pos<F;)U.audioLevels.push(e.float())}else U.audioLevels.push(e.float());break}default:e.skipType(u&7);break}}return U},i.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},i.verify=function(e){if(typeof e!="object"||e===null)return"object expected";if(e.recorderId!=null&&e.hasOwnProperty("recorderId")&&!$util.isString(e.recorderId))return"recorderId: string expected";if(e.id!=null&&e.hasOwnProperty("id")&&!$util.isInteger(e.id)&&!(e.id&&$util.isInteger(e.id.low)&&$util.isInteger(e.id.high)))return"id: integer|Long expected";if(e.transitionTimeUs!=null&&e.hasOwnProperty("transitionTimeUs")&&!$util.isInteger(e.transitionTimeUs)&&!(e.transitionTimeUs&&$util.isInteger(e.transitionTimeUs.low)&&$util.isInteger(e.transitionTimeUs.high)))return"transitionTimeUs: integer|Long expected";if(e.transitionType!=null&&e.hasOwnProperty("transitionType"))switch(e.transitionType){default:return"transitionType: enum value expected";case 0:case 1:case 2:case 3:break}if(e.transitionFadeColor!=null&&e.hasOwnProperty("transitionFadeColor")){let n=$root.sesame.v1.common.Vec4.verify(e.transitionFadeColor);if(n)return"transitionFadeColor."+n}if(e.speed!=null&&e.hasOwnProperty("speed")&&typeof e.speed!="number")return"speed: number expected";if(e.audioRouting!=null&&e.hasOwnProperty("audioRouting")){if(!Array.isArray(e.audioRouting))return"audioRouting: array expected";for(let n=0;n<e.audioRouting.length;++n)if(!$util.isInteger(e.audioRouting[n]))return"audioRouting: integer[] expected"}if(e.startTimeUs!=null&&e.hasOwnProperty("startTimeUs")&&!$util.isInteger(e.startTimeUs)&&!(e.startTimeUs&&$util.isInteger(e.startTimeUs.low)&&$util.isInteger(e.startTimeUs.high)))return"startTimeUs: integer|Long expected";if(e.endTimeUs!=null&&e.hasOwnProperty("endTimeUs")&&!$util.isInteger(e.endTimeUs)&&!(e.endTimeUs&&$util.isInteger(e.endTimeUs.low)&&$util.isInteger(e.endTimeUs.high)))return"endTimeUs: integer|Long expected";if(e.audioLevels!=null&&e.hasOwnProperty("audioLevels")){if(!Array.isArray(e.audioLevels))return"audioLevels: array expected";for(let n=0;n<e.audioLevels.length;++n)if(typeof e.audioLevels[n]!="number")return"audioLevels: number[] expected"}return null},i.fromObject=function(e){if(e instanceof $root.sesame.v1.recorder.PlaylistItem)return e;let n=new $root.sesame.v1.recorder.PlaylistItem;switch(e.recorderId!=null&&(n.recorderId=String(e.recorderId)),e.id!=null&&($util.Long?(n.id=$util.Long.fromValue(e.id)).unsigned=!0:typeof e.id=="string"?n.id=parseInt(e.id,10):typeof e.id=="number"?n.id=e.id:typeof e.id=="object"&&(n.id=new $util.LongBits(e.id.low>>>0,e.id.high>>>0).toNumber(!0))),e.transitionTimeUs!=null&&($util.Long?(n.transitionTimeUs=$util.Long.fromValue(e.transitionTimeUs)).unsigned=!1:typeof e.transitionTimeUs=="string"?n.transitionTimeUs=parseInt(e.transitionTimeUs,10):typeof e.transitionTimeUs=="number"?n.transitionTimeUs=e.transitionTimeUs:typeof e.transitionTimeUs=="object"&&(n.transitionTimeUs=new $util.LongBits(e.transitionTimeUs.low>>>0,e.transitionTimeUs.high>>>0).toNumber())),e.transitionType){default:if(typeof e.transitionType=="number"){n.transitionType=e.transitionType;break}break;case"TRANSITION_TYPE_MIX":case 0:n.transitionType=0;break;case"TRANSITION_TYPE_FADE_TO_COLOR":case 1:n.transitionType=1;break;case"TRANSITION_TYPE_FADE_FROM_COLOR":case 2:n.transitionType=2;break;case"TRANSITION_TYPE_FADE_TO_FROM_COLOR":case 3:n.transitionType=3;break}if(e.transitionFadeColor!=null){if(typeof e.transitionFadeColor!="object")throw TypeError(".sesame.v1.recorder.PlaylistItem.transitionFadeColor: object expected");n.transitionFadeColor=$root.sesame.v1.common.Vec4.fromObject(e.transitionFadeColor)}if(e.speed!=null&&(n.speed=Number(e.speed)),e.audioRouting){if(!Array.isArray(e.audioRouting))throw TypeError(".sesame.v1.recorder.PlaylistItem.audioRouting: array expected");n.audioRouting=[];for(let s=0;s<e.audioRouting.length;++s)n.audioRouting[s]=e.audioRouting[s]>>>0}if(e.startTimeUs!=null&&($util.Long?(n.startTimeUs=$util.Long.fromValue(e.startTimeUs)).unsigned=!1:typeof e.startTimeUs=="string"?n.startTimeUs=parseInt(e.startTimeUs,10):typeof e.startTimeUs=="number"?n.startTimeUs=e.startTimeUs:typeof e.startTimeUs=="object"&&(n.startTimeUs=new $util.LongBits(e.startTimeUs.low>>>0,e.startTimeUs.high>>>0).toNumber())),e.endTimeUs!=null&&($util.Long?(n.endTimeUs=$util.Long.fromValue(e.endTimeUs)).unsigned=!1:typeof e.endTimeUs=="string"?n.endTimeUs=parseInt(e.endTimeUs,10):typeof e.endTimeUs=="number"?n.endTimeUs=e.endTimeUs:typeof e.endTimeUs=="object"&&(n.endTimeUs=new $util.LongBits(e.endTimeUs.low>>>0,e.endTimeUs.high>>>0).toNumber())),e.audioLevels){if(!Array.isArray(e.audioLevels))throw TypeError(".sesame.v1.recorder.PlaylistItem.audioLevels: array expected");n.audioLevels=[];for(let s=0;s<e.audioLevels.length;++s)n.audioLevels[s]=Number(e.audioLevels[s])}return n},i.toObject=function(e,n){n||(n={});let s={};if((n.arrays||n.defaults)&&(s.audioRouting=[],s.audioLevels=[]),n.defaults){if(s.recorderId="",$util.Long){let a=new $util.Long(0,0,!0);s.id=n.longs===String?a.toString():n.longs===Number?a.toNumber():a}else s.id=n.longs===String?"0":0;if($util.Long){let a=new $util.Long(0,0,!1);s.transitionTimeUs=n.longs===String?a.toString():n.longs===Number?a.toNumber():a}else s.transitionTimeUs=n.longs===String?"0":0;s.transitionType=n.enums===String?"TRANSITION_TYPE_MIX":0,s.transitionFadeColor=null,s.speed=0}if(e.recorderId!=null&&e.hasOwnProperty("recorderId")&&(s.recorderId=e.recorderId),e.id!=null&&e.hasOwnProperty("id")&&(typeof e.id=="number"?s.id=n.longs===String?String(e.id):e.id:s.id=n.longs===String?$util.Long.prototype.toString.call(e.id):n.longs===Number?new $util.LongBits(e.id.low>>>0,e.id.high>>>0).toNumber(!0):e.id),e.transitionTimeUs!=null&&e.hasOwnProperty("transitionTimeUs")&&(typeof e.transitionTimeUs=="number"?s.transitionTimeUs=n.longs===String?String(e.transitionTimeUs):e.transitionTimeUs:s.transitionTimeUs=n.longs===String?$util.Long.prototype.toString.call(e.transitionTimeUs):n.longs===Number?new $util.LongBits(e.transitionTimeUs.low>>>0,e.transitionTimeUs.high>>>0).toNumber():e.transitionTimeUs),e.transitionType!=null&&e.hasOwnProperty("transitionType")&&(s.transitionType=n.enums===String?$root.sesame.v1.recorder.TransitionType[e.transitionType]===void 0?e.transitionType:$root.sesame.v1.recorder.TransitionType[e.transitionType]:e.transitionType),e.transitionFadeColor!=null&&e.hasOwnProperty("transitionFadeColor")&&(s.transitionFadeColor=$root.sesame.v1.common.Vec4.toObject(e.transitionFadeColor,n)),e.speed!=null&&e.hasOwnProperty("speed")&&(s.speed=n.json&&!isFinite(e.speed)?String(e.speed):e.speed),e.audioRouting&&e.audioRouting.length){s.audioRouting=[];for(let a=0;a<e.audioRouting.length;++a)s.audioRouting[a]=e.audioRouting[a]}if(e.startTimeUs!=null&&e.hasOwnProperty("startTimeUs")&&(typeof e.startTimeUs=="number"?s.startTimeUs=n.longs===String?String(e.startTimeUs):e.startTimeUs:s.startTimeUs=n.longs===String?$util.Long.prototype.toString.call(e.startTimeUs):n.longs===Number?new $util.LongBits(e.startTimeUs.low>>>0,e.startTimeUs.high>>>0).toNumber():e.startTimeUs,n.oneofs&&(s._startTimeUs="startTimeUs")),e.endTimeUs!=null&&e.hasOwnProperty("endTimeUs")&&(typeof e.endTimeUs=="number"?s.endTimeUs=n.longs===String?String(e.endTimeUs):e.endTimeUs:s.endTimeUs=n.longs===String?$util.Long.prototype.toString.call(e.endTimeUs):n.longs===Number?new $util.LongBits(e.endTimeUs.low>>>0,e.endTimeUs.high>>>0).toNumber():e.endTimeUs,n.oneofs&&(s._endTimeUs="endTimeUs")),e.audioLevels&&e.audioLevels.length){s.audioLevels=[];for(let a=0;a<e.audioLevels.length;++a)s.audioLevels[a]=n.json&&!isFinite(e.audioLevels[a])?String(e.audioLevels[a]):e.audioLevels[a]}return s},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(e){return e===void 0&&(e="type.googleapis.com"),e+"/sesame.v1.recorder.PlaylistItem"},i}(),l.RecorderClipRange=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.low=$util.Long?$util.Long.fromBits(0,0,!0):0,i.prototype.high=$util.Long?$util.Long.fromBits(0,0,!0):0,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.low!=null&&Object.hasOwnProperty.call(t,"low")&&e.uint32(8).uint64(t.low),t.high!=null&&Object.hasOwnProperty.call(t,"high")&&e.uint32(16).uint64(t.high),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.recorder.RecorderClipRange;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.low=t.uint64();break}case 2:{a.high=t.uint64();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.low!=null&&t.hasOwnProperty("low")&&!$util.isInteger(t.low)&&!(t.low&&$util.isInteger(t.low.low)&&$util.isInteger(t.low.high))?"low: integer|Long expected":t.high!=null&&t.hasOwnProperty("high")&&!$util.isInteger(t.high)&&!(t.high&&$util.isInteger(t.high.low)&&$util.isInteger(t.high.high))?"high: integer|Long expected":null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.recorder.RecorderClipRange)return t;let e=new $root.sesame.v1.recorder.RecorderClipRange;return t.low!=null&&($util.Long?(e.low=$util.Long.fromValue(t.low)).unsigned=!0:typeof t.low=="string"?e.low=parseInt(t.low,10):typeof t.low=="number"?e.low=t.low:typeof t.low=="object"&&(e.low=new $util.LongBits(t.low.low>>>0,t.low.high>>>0).toNumber(!0))),t.high!=null&&($util.Long?(e.high=$util.Long.fromValue(t.high)).unsigned=!0:typeof t.high=="string"?e.high=parseInt(t.high,10):typeof t.high=="number"?e.high=t.high:typeof t.high=="object"&&(e.high=new $util.LongBits(t.high.low>>>0,t.high.high>>>0).toNumber(!0))),e},i.toObject=function(t,e){e||(e={});let n={};if(e.defaults){if($util.Long){let s=new $util.Long(0,0,!0);n.low=e.longs===String?s.toString():e.longs===Number?s.toNumber():s}else n.low=e.longs===String?"0":0;if($util.Long){let s=new $util.Long(0,0,!0);n.high=e.longs===String?s.toString():e.longs===Number?s.toNumber():s}else n.high=e.longs===String?"0":0}return t.low!=null&&t.hasOwnProperty("low")&&(typeof t.low=="number"?n.low=e.longs===String?String(t.low):t.low:n.low=e.longs===String?$util.Long.prototype.toString.call(t.low):e.longs===Number?new $util.LongBits(t.low.low>>>0,t.low.high>>>0).toNumber(!0):t.low),t.high!=null&&t.hasOwnProperty("high")&&(typeof t.high=="number"?n.high=e.longs===String?String(t.high):t.high:n.high=e.longs===String?$util.Long.prototype.toString.call(t.high):e.longs===Number?new $util.LongBits(t.high.low>>>0,t.high.high>>>0).toNumber(!0):t.high),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.recorder.RecorderClipRange"},i}(),l.RecorderClipsGetRequest=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.recorder.RecorderClipsGetRequest;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":null},i.fromObject=function(t){return t instanceof $root.sesame.v1.recorder.RecorderClipsGetRequest?t:new $root.sesame.v1.recorder.RecorderClipsGetRequest},i.toObject=function(){return{}},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.recorder.RecorderClipsGetRequest"},i}(),l.RecorderClipsGetResponse=function(){function i(r){if(this.clips=[],r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.clips=$util.emptyArray,i.create=function(t){return new i(t)},i.encode=function(t,e){if(e||(e=$Writer.create()),t.clips!=null&&t.clips.length)for(let n=0;n<t.clips.length;++n)$root.sesame.v1.recorder.RecorderClip.encode(t.clips[n],e.uint32(10).fork()).ldelim();return e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.recorder.RecorderClipsGetResponse;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.clips&&a.clips.length||(a.clips=[]),a.clips.push($root.sesame.v1.recorder.RecorderClip.decode(t,t.uint32()));break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.clips!=null&&t.hasOwnProperty("clips")){if(!Array.isArray(t.clips))return"clips: array expected";for(let e=0;e<t.clips.length;++e){let n=$root.sesame.v1.recorder.RecorderClip.verify(t.clips[e]);if(n)return"clips."+n}}return null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.recorder.RecorderClipsGetResponse)return t;let e=new $root.sesame.v1.recorder.RecorderClipsGetResponse;if(t.clips){if(!Array.isArray(t.clips))throw TypeError(".sesame.v1.recorder.RecorderClipsGetResponse.clips: array expected");e.clips=[];for(let n=0;n<t.clips.length;++n){if(typeof t.clips[n]!="object")throw TypeError(".sesame.v1.recorder.RecorderClipsGetResponse.clips: object expected");e.clips[n]=$root.sesame.v1.recorder.RecorderClip.fromObject(t.clips[n])}}return e},i.toObject=function(t,e){e||(e={});let n={};if((e.arrays||e.defaults)&&(n.clips=[]),t.clips&&t.clips.length){n.clips=[];for(let s=0;s<t.clips.length;++s)n.clips[s]=$root.sesame.v1.recorder.RecorderClip.toObject(t.clips[s],e)}return n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.recorder.RecorderClipsGetResponse"},i}(),l.RecorderClipAddRequest=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.clip=null,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.clip!=null&&Object.hasOwnProperty.call(t,"clip")&&$root.sesame.v1.recorder.RecorderClip.encode(t.clip,e.uint32(10).fork()).ldelim(),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.recorder.RecorderClipAddRequest;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.clip=$root.sesame.v1.recorder.RecorderClip.decode(t,t.uint32());break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.clip!=null&&t.hasOwnProperty("clip")){let e=$root.sesame.v1.recorder.RecorderClip.verify(t.clip);if(e)return"clip."+e}return null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.recorder.RecorderClipAddRequest)return t;let e=new $root.sesame.v1.recorder.RecorderClipAddRequest;if(t.clip!=null){if(typeof t.clip!="object")throw TypeError(".sesame.v1.recorder.RecorderClipAddRequest.clip: object expected");e.clip=$root.sesame.v1.recorder.RecorderClip.fromObject(t.clip)}return e},i.toObject=function(t,e){e||(e={});let n={};return e.defaults&&(n.clip=null),t.clip!=null&&t.hasOwnProperty("clip")&&(n.clip=$root.sesame.v1.recorder.RecorderClip.toObject(t.clip,e)),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.recorder.RecorderClipAddRequest"},i}(),l.RecorderClipCopyRequest=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.clipId=$util.Long?$util.Long.fromBits(0,0,!0):0,i.prototype.newClipId=$util.Long?$util.Long.fromBits(0,0,!0):0,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.clipId!=null&&Object.hasOwnProperty.call(t,"clipId")&&e.uint32(8).uint64(t.clipId),t.newClipId!=null&&Object.hasOwnProperty.call(t,"newClipId")&&e.uint32(16).uint64(t.newClipId),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.recorder.RecorderClipCopyRequest;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.clipId=t.uint64();break}case 2:{a.newClipId=t.uint64();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.clipId!=null&&t.hasOwnProperty("clipId")&&!$util.isInteger(t.clipId)&&!(t.clipId&&$util.isInteger(t.clipId.low)&&$util.isInteger(t.clipId.high))?"clipId: integer|Long expected":t.newClipId!=null&&t.hasOwnProperty("newClipId")&&!$util.isInteger(t.newClipId)&&!(t.newClipId&&$util.isInteger(t.newClipId.low)&&$util.isInteger(t.newClipId.high))?"newClipId: integer|Long expected":null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.recorder.RecorderClipCopyRequest)return t;let e=new $root.sesame.v1.recorder.RecorderClipCopyRequest;return t.clipId!=null&&($util.Long?(e.clipId=$util.Long.fromValue(t.clipId)).unsigned=!0:typeof t.clipId=="string"?e.clipId=parseInt(t.clipId,10):typeof t.clipId=="number"?e.clipId=t.clipId:typeof t.clipId=="object"&&(e.clipId=new $util.LongBits(t.clipId.low>>>0,t.clipId.high>>>0).toNumber(!0))),t.newClipId!=null&&($util.Long?(e.newClipId=$util.Long.fromValue(t.newClipId)).unsigned=!0:typeof t.newClipId=="string"?e.newClipId=parseInt(t.newClipId,10):typeof t.newClipId=="number"?e.newClipId=t.newClipId:typeof t.newClipId=="object"&&(e.newClipId=new $util.LongBits(t.newClipId.low>>>0,t.newClipId.high>>>0).toNumber(!0))),e},i.toObject=function(t,e){e||(e={});let n={};if(e.defaults){if($util.Long){let s=new $util.Long(0,0,!0);n.clipId=e.longs===String?s.toString():e.longs===Number?s.toNumber():s}else n.clipId=e.longs===String?"0":0;if($util.Long){let s=new $util.Long(0,0,!0);n.newClipId=e.longs===String?s.toString():e.longs===Number?s.toNumber():s}else n.newClipId=e.longs===String?"0":0}return t.clipId!=null&&t.hasOwnProperty("clipId")&&(typeof t.clipId=="number"?n.clipId=e.longs===String?String(t.clipId):t.clipId:n.clipId=e.longs===String?$util.Long.prototype.toString.call(t.clipId):e.longs===Number?new $util.LongBits(t.clipId.low>>>0,t.clipId.high>>>0).toNumber(!0):t.clipId),t.newClipId!=null&&t.hasOwnProperty("newClipId")&&(typeof t.newClipId=="number"?n.newClipId=e.longs===String?String(t.newClipId):t.newClipId:n.newClipId=e.longs===String?$util.Long.prototype.toString.call(t.newClipId):e.longs===Number?new $util.LongBits(t.newClipId.low>>>0,t.newClipId.high>>>0).toNumber(!0):t.newClipId),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.recorder.RecorderClipCopyRequest"},i}(),l.RecorderClipRemoveRequest=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.clipId=$util.Long?$util.Long.fromBits(0,0,!0):0,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.clipId!=null&&Object.hasOwnProperty.call(t,"clipId")&&e.uint32(8).uint64(t.clipId),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.recorder.RecorderClipRemoveRequest;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.clipId=t.uint64();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.clipId!=null&&t.hasOwnProperty("clipId")&&!$util.isInteger(t.clipId)&&!(t.clipId&&$util.isInteger(t.clipId.low)&&$util.isInteger(t.clipId.high))?"clipId: integer|Long expected":null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.recorder.RecorderClipRemoveRequest)return t;let e=new $root.sesame.v1.recorder.RecorderClipRemoveRequest;return t.clipId!=null&&($util.Long?(e.clipId=$util.Long.fromValue(t.clipId)).unsigned=!0:typeof t.clipId=="string"?e.clipId=parseInt(t.clipId,10):typeof t.clipId=="number"?e.clipId=t.clipId:typeof t.clipId=="object"&&(e.clipId=new $util.LongBits(t.clipId.low>>>0,t.clipId.high>>>0).toNumber(!0))),e},i.toObject=function(t,e){e||(e={});let n={};if(e.defaults)if($util.Long){let s=new $util.Long(0,0,!0);n.clipId=e.longs===String?s.toString():e.longs===Number?s.toNumber():s}else n.clipId=e.longs===String?"0":0;return t.clipId!=null&&t.hasOwnProperty("clipId")&&(typeof t.clipId=="number"?n.clipId=e.longs===String?String(t.clipId):t.clipId:n.clipId=e.longs===String?$util.Long.prototype.toString.call(t.clipId):e.longs===Number?new $util.LongBits(t.clipId.low>>>0,t.clipId.high>>>0).toNumber(!0):t.clipId),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.recorder.RecorderClipRemoveRequest"},i}(),l.RecorderClipsClearRequest=function(){function i(r){if(this.protectedRanges=[],r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.protectedRanges=$util.emptyArray,i.prototype.mustHaveFlags=$util.Long?$util.Long.fromBits(0,0,!0):0,i.prototype.mustNotHaveFlags=$util.Long?$util.Long.fromBits(0,0,!0):0,i.create=function(t){return new i(t)},i.encode=function(t,e){if(e||(e=$Writer.create()),t.protectedRanges!=null&&t.protectedRanges.length)for(let n=0;n<t.protectedRanges.length;++n)$root.sesame.v1.recorder.RecorderClipRange.encode(t.protectedRanges[n],e.uint32(10).fork()).ldelim();return t.mustHaveFlags!=null&&Object.hasOwnProperty.call(t,"mustHaveFlags")&&e.uint32(16).uint64(t.mustHaveFlags),t.mustNotHaveFlags!=null&&Object.hasOwnProperty.call(t,"mustNotHaveFlags")&&e.uint32(24).uint64(t.mustNotHaveFlags),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.recorder.RecorderClipsClearRequest;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.protectedRanges&&a.protectedRanges.length||(a.protectedRanges=[]),a.protectedRanges.push($root.sesame.v1.recorder.RecorderClipRange.decode(t,t.uint32()));break}case 2:{a.mustHaveFlags=t.uint64();break}case 3:{a.mustNotHaveFlags=t.uint64();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.protectedRanges!=null&&t.hasOwnProperty("protectedRanges")){if(!Array.isArray(t.protectedRanges))return"protectedRanges: array expected";for(let e=0;e<t.protectedRanges.length;++e){let n=$root.sesame.v1.recorder.RecorderClipRange.verify(t.protectedRanges[e]);if(n)return"protectedRanges."+n}}return t.mustHaveFlags!=null&&t.hasOwnProperty("mustHaveFlags")&&!$util.isInteger(t.mustHaveFlags)&&!(t.mustHaveFlags&&$util.isInteger(t.mustHaveFlags.low)&&$util.isInteger(t.mustHaveFlags.high))?"mustHaveFlags: integer|Long expected":t.mustNotHaveFlags!=null&&t.hasOwnProperty("mustNotHaveFlags")&&!$util.isInteger(t.mustNotHaveFlags)&&!(t.mustNotHaveFlags&&$util.isInteger(t.mustNotHaveFlags.low)&&$util.isInteger(t.mustNotHaveFlags.high))?"mustNotHaveFlags: integer|Long expected":null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.recorder.RecorderClipsClearRequest)return t;let e=new $root.sesame.v1.recorder.RecorderClipsClearRequest;if(t.protectedRanges){if(!Array.isArray(t.protectedRanges))throw TypeError(".sesame.v1.recorder.RecorderClipsClearRequest.protectedRanges: array expected");e.protectedRanges=[];for(let n=0;n<t.protectedRanges.length;++n){if(typeof t.protectedRanges[n]!="object")throw TypeError(".sesame.v1.recorder.RecorderClipsClearRequest.protectedRanges: object expected");e.protectedRanges[n]=$root.sesame.v1.recorder.RecorderClipRange.fromObject(t.protectedRanges[n])}}return t.mustHaveFlags!=null&&($util.Long?(e.mustHaveFlags=$util.Long.fromValue(t.mustHaveFlags)).unsigned=!0:typeof t.mustHaveFlags=="string"?e.mustHaveFlags=parseInt(t.mustHaveFlags,10):typeof t.mustHaveFlags=="number"?e.mustHaveFlags=t.mustHaveFlags:typeof t.mustHaveFlags=="object"&&(e.mustHaveFlags=new $util.LongBits(t.mustHaveFlags.low>>>0,t.mustHaveFlags.high>>>0).toNumber(!0))),t.mustNotHaveFlags!=null&&($util.Long?(e.mustNotHaveFlags=$util.Long.fromValue(t.mustNotHaveFlags)).unsigned=!0:typeof t.mustNotHaveFlags=="string"?e.mustNotHaveFlags=parseInt(t.mustNotHaveFlags,10):typeof t.mustNotHaveFlags=="number"?e.mustNotHaveFlags=t.mustNotHaveFlags:typeof t.mustNotHaveFlags=="object"&&(e.mustNotHaveFlags=new $util.LongBits(t.mustNotHaveFlags.low>>>0,t.mustNotHaveFlags.high>>>0).toNumber(!0))),e},i.toObject=function(t,e){e||(e={});let n={};if((e.arrays||e.defaults)&&(n.protectedRanges=[]),e.defaults){if($util.Long){let s=new $util.Long(0,0,!0);n.mustHaveFlags=e.longs===String?s.toString():e.longs===Number?s.toNumber():s}else n.mustHaveFlags=e.longs===String?"0":0;if($util.Long){let s=new $util.Long(0,0,!0);n.mustNotHaveFlags=e.longs===String?s.toString():e.longs===Number?s.toNumber():s}else n.mustNotHaveFlags=e.longs===String?"0":0}if(t.protectedRanges&&t.protectedRanges.length){n.protectedRanges=[];for(let s=0;s<t.protectedRanges.length;++s)n.protectedRanges[s]=$root.sesame.v1.recorder.RecorderClipRange.toObject(t.protectedRanges[s],e)}return t.mustHaveFlags!=null&&t.hasOwnProperty("mustHaveFlags")&&(typeof t.mustHaveFlags=="number"?n.mustHaveFlags=e.longs===String?String(t.mustHaveFlags):t.mustHaveFlags:n.mustHaveFlags=e.longs===String?$util.Long.prototype.toString.call(t.mustHaveFlags):e.longs===Number?new $util.LongBits(t.mustHaveFlags.low>>>0,t.mustHaveFlags.high>>>0).toNumber(!0):t.mustHaveFlags),t.mustNotHaveFlags!=null&&t.hasOwnProperty("mustNotHaveFlags")&&(typeof t.mustNotHaveFlags=="number"?n.mustNotHaveFlags=e.longs===String?String(t.mustNotHaveFlags):t.mustNotHaveFlags:n.mustNotHaveFlags=e.longs===String?$util.Long.prototype.toString.call(t.mustNotHaveFlags):e.longs===Number?new $util.LongBits(t.mustNotHaveFlags.low>>>0,t.mustNotHaveFlags.high>>>0).toNumber(!0):t.mustNotHaveFlags),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.recorder.RecorderClipsClearRequest"},i}(),l.RecorderMetadataSetRequest=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.metadata=null,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.metadata!=null&&Object.hasOwnProperty.call(t,"metadata")&&$root.sesame.v1.common.TransportMetadata.encode(t.metadata,e.uint32(10).fork()).ldelim(),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.recorder.RecorderMetadataSetRequest;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.metadata=$root.sesame.v1.common.TransportMetadata.decode(t,t.uint32());break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.metadata!=null&&t.hasOwnProperty("metadata")){let e=$root.sesame.v1.common.TransportMetadata.verify(t.metadata);if(e)return"metadata."+e}return null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.recorder.RecorderMetadataSetRequest)return t;let e=new $root.sesame.v1.recorder.RecorderMetadataSetRequest;if(t.metadata!=null){if(typeof t.metadata!="object")throw TypeError(".sesame.v1.recorder.RecorderMetadataSetRequest.metadata: object expected");e.metadata=$root.sesame.v1.common.TransportMetadata.fromObject(t.metadata)}return e},i.toObject=function(t,e){e||(e={});let n={};return e.defaults&&(n.metadata=null),t.metadata!=null&&t.hasOwnProperty("metadata")&&(n.metadata=$root.sesame.v1.common.TransportMetadata.toObject(t.metadata,e)),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.recorder.RecorderMetadataSetRequest"},i}(),l.RecorderClipFlagSetRequest=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.clipId=$util.Long?$util.Long.fromBits(0,0,!0):0,i.prototype.flag=$util.Long?$util.Long.fromBits(0,0,!0):0,i.prototype.value=!1,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.clipId!=null&&Object.hasOwnProperty.call(t,"clipId")&&e.uint32(8).uint64(t.clipId),t.flag!=null&&Object.hasOwnProperty.call(t,"flag")&&e.uint32(16).uint64(t.flag),t.value!=null&&Object.hasOwnProperty.call(t,"value")&&e.uint32(24).bool(t.value),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.recorder.RecorderClipFlagSetRequest;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.clipId=t.uint64();break}case 2:{a.flag=t.uint64();break}case 3:{a.value=t.bool();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.clipId!=null&&t.hasOwnProperty("clipId")&&!$util.isInteger(t.clipId)&&!(t.clipId&&$util.isInteger(t.clipId.low)&&$util.isInteger(t.clipId.high))?"clipId: integer|Long expected":t.flag!=null&&t.hasOwnProperty("flag")&&!$util.isInteger(t.flag)&&!(t.flag&&$util.isInteger(t.flag.low)&&$util.isInteger(t.flag.high))?"flag: integer|Long expected":t.value!=null&&t.hasOwnProperty("value")&&typeof t.value!="boolean"?"value: boolean expected":null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.recorder.RecorderClipFlagSetRequest)return t;let e=new $root.sesame.v1.recorder.RecorderClipFlagSetRequest;return t.clipId!=null&&($util.Long?(e.clipId=$util.Long.fromValue(t.clipId)).unsigned=!0:typeof t.clipId=="string"?e.clipId=parseInt(t.clipId,10):typeof t.clipId=="number"?e.clipId=t.clipId:typeof t.clipId=="object"&&(e.clipId=new $util.LongBits(t.clipId.low>>>0,t.clipId.high>>>0).toNumber(!0))),t.flag!=null&&($util.Long?(e.flag=$util.Long.fromValue(t.flag)).unsigned=!0:typeof t.flag=="string"?e.flag=parseInt(t.flag,10):typeof t.flag=="number"?e.flag=t.flag:typeof t.flag=="object"&&(e.flag=new $util.LongBits(t.flag.low>>>0,t.flag.high>>>0).toNumber(!0))),t.value!=null&&(e.value=!!t.value),e},i.toObject=function(t,e){e||(e={});let n={};if(e.defaults){if($util.Long){let s=new $util.Long(0,0,!0);n.clipId=e.longs===String?s.toString():e.longs===Number?s.toNumber():s}else n.clipId=e.longs===String?"0":0;if($util.Long){let s=new $util.Long(0,0,!0);n.flag=e.longs===String?s.toString():e.longs===Number?s.toNumber():s}else n.flag=e.longs===String?"0":0;n.value=!1}return t.clipId!=null&&t.hasOwnProperty("clipId")&&(typeof t.clipId=="number"?n.clipId=e.longs===String?String(t.clipId):t.clipId:n.clipId=e.longs===String?$util.Long.prototype.toString.call(t.clipId):e.longs===Number?new $util.LongBits(t.clipId.low>>>0,t.clipId.high>>>0).toNumber(!0):t.clipId),t.flag!=null&&t.hasOwnProperty("flag")&&(typeof t.flag=="number"?n.flag=e.longs===String?String(t.flag):t.flag:n.flag=e.longs===String?$util.Long.prototype.toString.call(t.flag):e.longs===Number?new $util.LongBits(t.flag.low>>>0,t.flag.high>>>0).toNumber(!0):t.flag),t.value!=null&&t.hasOwnProperty("value")&&(n.value=t.value),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.recorder.RecorderClipFlagSetRequest"},i}(),l.RecorderClipsVerifyRequest=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.recorder.RecorderClipsVerifyRequest;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":null},i.fromObject=function(t){return t instanceof $root.sesame.v1.recorder.RecorderClipsVerifyRequest?t:new $root.sesame.v1.recorder.RecorderClipsVerifyRequest},i.toObject=function(){return{}},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.recorder.RecorderClipsVerifyRequest"},i}(),l.RecorderClipsVerifyResponse=function(){function i(r){if(this.errors=[],r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.errors=$util.emptyArray,i.create=function(t){return new i(t)},i.encode=function(t,e){if(e||(e=$Writer.create()),t.errors!=null&&t.errors.length)for(let n=0;n<t.errors.length;++n)e.uint32(10).string(t.errors[n]);return e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.recorder.RecorderClipsVerifyResponse;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.errors&&a.errors.length||(a.errors=[]),a.errors.push(t.string());break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.errors!=null&&t.hasOwnProperty("errors")){if(!Array.isArray(t.errors))return"errors: array expected";for(let e=0;e<t.errors.length;++e)if(!$util.isString(t.errors[e]))return"errors: string[] expected"}return null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.recorder.RecorderClipsVerifyResponse)return t;let e=new $root.sesame.v1.recorder.RecorderClipsVerifyResponse;if(t.errors){if(!Array.isArray(t.errors))throw TypeError(".sesame.v1.recorder.RecorderClipsVerifyResponse.errors: array expected");e.errors=[];for(let n=0;n<t.errors.length;++n)e.errors[n]=String(t.errors[n])}return e},i.toObject=function(t,e){e||(e={});let n={};if((e.arrays||e.defaults)&&(n.errors=[]),t.errors&&t.errors.length){n.errors=[];for(let s=0;s<t.errors.length;++s)n.errors[s]=t.errors[s]}return n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.recorder.RecorderClipsVerifyResponse"},i}(),l.RecorderLockedDurationSetRequest=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.frames=0,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.frames!=null&&Object.hasOwnProperty.call(t,"frames")&&e.uint32(8).uint32(t.frames),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.recorder.RecorderLockedDurationSetRequest;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.frames=t.uint32();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.frames!=null&&t.hasOwnProperty("frames")&&!$util.isInteger(t.frames)?"frames: integer expected":null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.recorder.RecorderLockedDurationSetRequest)return t;let e=new $root.sesame.v1.recorder.RecorderLockedDurationSetRequest;return t.frames!=null&&(e.frames=t.frames>>>0),e},i.toObject=function(t,e){e||(e={});let n={};return e.defaults&&(n.frames=0),t.frames!=null&&t.hasOwnProperty("frames")&&(n.frames=t.frames),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.recorder.RecorderLockedDurationSetRequest"},i}(),l.RecorderOkResponse=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.recorder.RecorderOkResponse;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":null},i.fromObject=function(t){return t instanceof $root.sesame.v1.recorder.RecorderOkResponse?t:new $root.sesame.v1.recorder.RecorderOkResponse},i.toObject=function(){return{}},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.recorder.RecorderOkResponse"},i}(),l.RecorderRequest=function(){function i(t){if(t)for(let e=Object.keys(t),n=0;n<e.length;++n)t[e[n]]!=null&&(this[e[n]]=t[e[n]])}i.prototype.recorderId="",i.prototype.getClips=null,i.prototype.addClip=null,i.prototype.removeClip=null,i.prototype.clearClips=null,i.prototype.setMetadata=null,i.prototype.verifyClips=null,i.prototype.setClipFlag=null,i.prototype.copyClip=null,i.prototype.setLockedDuration=null;let r;return Object.defineProperty(i.prototype,"request",{get:$util.oneOfGetter(r=["getClips","addClip","removeClip","clearClips","setMetadata","verifyClips","setClipFlag","copyClip","setLockedDuration"]),set:$util.oneOfSetter(r)}),i.create=function(e){return new i(e)},i.encode=function(e,n){return n||(n=$Writer.create()),e.recorderId!=null&&Object.hasOwnProperty.call(e,"recorderId")&&n.uint32(10).string(e.recorderId),e.getClips!=null&&Object.hasOwnProperty.call(e,"getClips")&&$root.sesame.v1.recorder.RecorderClipsGetRequest.encode(e.getClips,n.uint32(18).fork()).ldelim(),e.addClip!=null&&Object.hasOwnProperty.call(e,"addClip")&&$root.sesame.v1.recorder.RecorderClipAddRequest.encode(e.addClip,n.uint32(26).fork()).ldelim(),e.removeClip!=null&&Object.hasOwnProperty.call(e,"removeClip")&&$root.sesame.v1.recorder.RecorderClipRemoveRequest.encode(e.removeClip,n.uint32(34).fork()).ldelim(),e.clearClips!=null&&Object.hasOwnProperty.call(e,"clearClips")&&$root.sesame.v1.recorder.RecorderClipsClearRequest.encode(e.clearClips,n.uint32(42).fork()).ldelim(),e.setMetadata!=null&&Object.hasOwnProperty.call(e,"setMetadata")&&$root.sesame.v1.recorder.RecorderMetadataSetRequest.encode(e.setMetadata,n.uint32(50).fork()).ldelim(),e.verifyClips!=null&&Object.hasOwnProperty.call(e,"verifyClips")&&$root.sesame.v1.recorder.RecorderClipsVerifyRequest.encode(e.verifyClips,n.uint32(58).fork()).ldelim(),e.setClipFlag!=null&&Object.hasOwnProperty.call(e,"setClipFlag")&&$root.sesame.v1.recorder.RecorderClipFlagSetRequest.encode(e.setClipFlag,n.uint32(66).fork()).ldelim(),e.copyClip!=null&&Object.hasOwnProperty.call(e,"copyClip")&&$root.sesame.v1.recorder.RecorderClipCopyRequest.encode(e.copyClip,n.uint32(74).fork()).ldelim(),e.setLockedDuration!=null&&Object.hasOwnProperty.call(e,"setLockedDuration")&&$root.sesame.v1.recorder.RecorderLockedDurationSetRequest.encode(e.setLockedDuration,n.uint32(82).fork()).ldelim(),n},i.encodeDelimited=function(e,n){return this.encode(e,n).ldelim()},i.decode=function(e,n,s){e instanceof $Reader||(e=$Reader.create(e));let a=n===void 0?e.len:e.pos+n,U=new $root.sesame.v1.recorder.RecorderRequest;for(;e.pos<a;){let u=e.uint32();if(u===s)break;switch(u>>>3){case 1:{U.recorderId=e.string();break}case 2:{U.getClips=$root.sesame.v1.recorder.RecorderClipsGetRequest.decode(e,e.uint32());break}case 3:{U.addClip=$root.sesame.v1.recorder.RecorderClipAddRequest.decode(e,e.uint32());break}case 4:{U.removeClip=$root.sesame.v1.recorder.RecorderClipRemoveRequest.decode(e,e.uint32());break}case 5:{U.clearClips=$root.sesame.v1.recorder.RecorderClipsClearRequest.decode(e,e.uint32());break}case 6:{U.setMetadata=$root.sesame.v1.recorder.RecorderMetadataSetRequest.decode(e,e.uint32());break}case 7:{U.verifyClips=$root.sesame.v1.recorder.RecorderClipsVerifyRequest.decode(e,e.uint32());break}case 8:{U.setClipFlag=$root.sesame.v1.recorder.RecorderClipFlagSetRequest.decode(e,e.uint32());break}case 9:{U.copyClip=$root.sesame.v1.recorder.RecorderClipCopyRequest.decode(e,e.uint32());break}case 10:{U.setLockedDuration=$root.sesame.v1.recorder.RecorderLockedDurationSetRequest.decode(e,e.uint32());break}default:e.skipType(u&7);break}}return U},i.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},i.verify=function(e){if(typeof e!="object"||e===null)return"object expected";let n={};if(e.recorderId!=null&&e.hasOwnProperty("recorderId")&&!$util.isString(e.recorderId))return"recorderId: string expected";if(e.getClips!=null&&e.hasOwnProperty("getClips")){n.request=1;{let s=$root.sesame.v1.recorder.RecorderClipsGetRequest.verify(e.getClips);if(s)return"getClips."+s}}if(e.addClip!=null&&e.hasOwnProperty("addClip")){if(n.request===1)return"request: multiple values";n.request=1;{let s=$root.sesame.v1.recorder.RecorderClipAddRequest.verify(e.addClip);if(s)return"addClip."+s}}if(e.removeClip!=null&&e.hasOwnProperty("removeClip")){if(n.request===1)return"request: multiple values";n.request=1;{let s=$root.sesame.v1.recorder.RecorderClipRemoveRequest.verify(e.removeClip);if(s)return"removeClip."+s}}if(e.clearClips!=null&&e.hasOwnProperty("clearClips")){if(n.request===1)return"request: multiple values";n.request=1;{let s=$root.sesame.v1.recorder.RecorderClipsClearRequest.verify(e.clearClips);if(s)return"clearClips."+s}}if(e.setMetadata!=null&&e.hasOwnProperty("setMetadata")){if(n.request===1)return"request: multiple values";n.request=1;{let s=$root.sesame.v1.recorder.RecorderMetadataSetRequest.verify(e.setMetadata);if(s)return"setMetadata."+s}}if(e.verifyClips!=null&&e.hasOwnProperty("verifyClips")){if(n.request===1)return"request: multiple values";n.request=1;{let s=$root.sesame.v1.recorder.RecorderClipsVerifyRequest.verify(e.verifyClips);if(s)return"verifyClips."+s}}if(e.setClipFlag!=null&&e.hasOwnProperty("setClipFlag")){if(n.request===1)return"request: multiple values";n.request=1;{let s=$root.sesame.v1.recorder.RecorderClipFlagSetRequest.verify(e.setClipFlag);if(s)return"setClipFlag."+s}}if(e.copyClip!=null&&e.hasOwnProperty("copyClip")){if(n.request===1)return"request: multiple values";n.request=1;{let s=$root.sesame.v1.recorder.RecorderClipCopyRequest.verify(e.copyClip);if(s)return"copyClip."+s}}if(e.setLockedDuration!=null&&e.hasOwnProperty("setLockedDuration")){if(n.request===1)return"request: multiple values";n.request=1;{let s=$root.sesame.v1.recorder.RecorderLockedDurationSetRequest.verify(e.setLockedDuration);if(s)return"setLockedDuration."+s}}return null},i.fromObject=function(e){if(e instanceof $root.sesame.v1.recorder.RecorderRequest)return e;let n=new $root.sesame.v1.recorder.RecorderRequest;if(e.recorderId!=null&&(n.recorderId=String(e.recorderId)),e.getClips!=null){if(typeof e.getClips!="object")throw TypeError(".sesame.v1.recorder.RecorderRequest.getClips: object expected");n.getClips=$root.sesame.v1.recorder.RecorderClipsGetRequest.fromObject(e.getClips)}if(e.addClip!=null){if(typeof e.addClip!="object")throw TypeError(".sesame.v1.recorder.RecorderRequest.addClip: object expected");n.addClip=$root.sesame.v1.recorder.RecorderClipAddRequest.fromObject(e.addClip)}if(e.removeClip!=null){if(typeof e.removeClip!="object")throw TypeError(".sesame.v1.recorder.RecorderRequest.removeClip: object expected");n.removeClip=$root.sesame.v1.recorder.RecorderClipRemoveRequest.fromObject(e.removeClip)}if(e.clearClips!=null){if(typeof e.clearClips!="object")throw TypeError(".sesame.v1.recorder.RecorderRequest.clearClips: object expected");n.clearClips=$root.sesame.v1.recorder.RecorderClipsClearRequest.fromObject(e.clearClips)}if(e.setMetadata!=null){if(typeof e.setMetadata!="object")throw TypeError(".sesame.v1.recorder.RecorderRequest.setMetadata: object expected");n.setMetadata=$root.sesame.v1.recorder.RecorderMetadataSetRequest.fromObject(e.setMetadata)}if(e.verifyClips!=null){if(typeof e.verifyClips!="object")throw TypeError(".sesame.v1.recorder.RecorderRequest.verifyClips: object expected");n.verifyClips=$root.sesame.v1.recorder.RecorderClipsVerifyRequest.fromObject(e.verifyClips)}if(e.setClipFlag!=null){if(typeof e.setClipFlag!="object")throw TypeError(".sesame.v1.recorder.RecorderRequest.setClipFlag: object expected");n.setClipFlag=$root.sesame.v1.recorder.RecorderClipFlagSetRequest.fromObject(e.setClipFlag)}if(e.copyClip!=null){if(typeof e.copyClip!="object")throw TypeError(".sesame.v1.recorder.RecorderRequest.copyClip: object expected");n.copyClip=$root.sesame.v1.recorder.RecorderClipCopyRequest.fromObject(e.copyClip)}if(e.setLockedDuration!=null){if(typeof e.setLockedDuration!="object")throw TypeError(".sesame.v1.recorder.RecorderRequest.setLockedDuration: object expected");n.setLockedDuration=$root.sesame.v1.recorder.RecorderLockedDurationSetRequest.fromObject(e.setLockedDuration)}return n},i.toObject=function(e,n){n||(n={});let s={};return n.defaults&&(s.recorderId=""),e.recorderId!=null&&e.hasOwnProperty("recorderId")&&(s.recorderId=e.recorderId),e.getClips!=null&&e.hasOwnProperty("getClips")&&(s.getClips=$root.sesame.v1.recorder.RecorderClipsGetRequest.toObject(e.getClips,n),n.oneofs&&(s.request="getClips")),e.addClip!=null&&e.hasOwnProperty("addClip")&&(s.addClip=$root.sesame.v1.recorder.RecorderClipAddRequest.toObject(e.addClip,n),n.oneofs&&(s.request="addClip")),e.removeClip!=null&&e.hasOwnProperty("removeClip")&&(s.removeClip=$root.sesame.v1.recorder.RecorderClipRemoveRequest.toObject(e.removeClip,n),n.oneofs&&(s.request="removeClip")),e.clearClips!=null&&e.hasOwnProperty("clearClips")&&(s.clearClips=$root.sesame.v1.recorder.RecorderClipsClearRequest.toObject(e.clearClips,n),n.oneofs&&(s.request="clearClips")),e.setMetadata!=null&&e.hasOwnProperty("setMetadata")&&(s.setMetadata=$root.sesame.v1.recorder.RecorderMetadataSetRequest.toObject(e.setMetadata,n),n.oneofs&&(s.request="setMetadata")),e.verifyClips!=null&&e.hasOwnProperty("verifyClips")&&(s.verifyClips=$root.sesame.v1.recorder.RecorderClipsVerifyRequest.toObject(e.verifyClips,n),n.oneofs&&(s.request="verifyClips")),e.setClipFlag!=null&&e.hasOwnProperty("setClipFlag")&&(s.setClipFlag=$root.sesame.v1.recorder.RecorderClipFlagSetRequest.toObject(e.setClipFlag,n),n.oneofs&&(s.request="setClipFlag")),e.copyClip!=null&&e.hasOwnProperty("copyClip")&&(s.copyClip=$root.sesame.v1.recorder.RecorderClipCopyRequest.toObject(e.copyClip,n),n.oneofs&&(s.request="copyClip")),e.setLockedDuration!=null&&e.hasOwnProperty("setLockedDuration")&&(s.setLockedDuration=$root.sesame.v1.recorder.RecorderLockedDurationSetRequest.toObject(e.setLockedDuration,n),n.oneofs&&(s.request="setLockedDuration")),s},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(e){return e===void 0&&(e="type.googleapis.com"),e+"/sesame.v1.recorder.RecorderRequest"},i}(),l.RecorderResponse=function(){function i(t){if(t)for(let e=Object.keys(t),n=0;n<e.length;++n)t[e[n]]!=null&&(this[e[n]]=t[e[n]])}i.prototype.getClipsResponse=null,i.prototype.okResponse=null,i.prototype.verifyClipsResponse=null;let r;return Object.defineProperty(i.prototype,"response",{get:$util.oneOfGetter(r=["getClipsResponse","okResponse","verifyClipsResponse"]),set:$util.oneOfSetter(r)}),i.create=function(e){return new i(e)},i.encode=function(e,n){return n||(n=$Writer.create()),e.getClipsResponse!=null&&Object.hasOwnProperty.call(e,"getClipsResponse")&&$root.sesame.v1.recorder.RecorderClipsGetResponse.encode(e.getClipsResponse,n.uint32(10).fork()).ldelim(),e.okResponse!=null&&Object.hasOwnProperty.call(e,"okResponse")&&$root.sesame.v1.recorder.RecorderOkResponse.encode(e.okResponse,n.uint32(18).fork()).ldelim(),e.verifyClipsResponse!=null&&Object.hasOwnProperty.call(e,"verifyClipsResponse")&&$root.sesame.v1.recorder.RecorderClipsVerifyResponse.encode(e.verifyClipsResponse,n.uint32(26).fork()).ldelim(),n},i.encodeDelimited=function(e,n){return this.encode(e,n).ldelim()},i.decode=function(e,n,s){e instanceof $Reader||(e=$Reader.create(e));let a=n===void 0?e.len:e.pos+n,U=new $root.sesame.v1.recorder.RecorderResponse;for(;e.pos<a;){let u=e.uint32();if(u===s)break;switch(u>>>3){case 1:{U.getClipsResponse=$root.sesame.v1.recorder.RecorderClipsGetResponse.decode(e,e.uint32());break}case 2:{U.okResponse=$root.sesame.v1.recorder.RecorderOkResponse.decode(e,e.uint32());break}case 3:{U.verifyClipsResponse=$root.sesame.v1.recorder.RecorderClipsVerifyResponse.decode(e,e.uint32());break}default:e.skipType(u&7);break}}return U},i.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},i.verify=function(e){if(typeof e!="object"||e===null)return"object expected";let n={};if(e.getClipsResponse!=null&&e.hasOwnProperty("getClipsResponse")){n.response=1;{let s=$root.sesame.v1.recorder.RecorderClipsGetResponse.verify(e.getClipsResponse);if(s)return"getClipsResponse."+s}}if(e.okResponse!=null&&e.hasOwnProperty("okResponse")){if(n.response===1)return"response: multiple values";n.response=1;{let s=$root.sesame.v1.recorder.RecorderOkResponse.verify(e.okResponse);if(s)return"okResponse."+s}}if(e.verifyClipsResponse!=null&&e.hasOwnProperty("verifyClipsResponse")){if(n.response===1)return"response: multiple values";n.response=1;{let s=$root.sesame.v1.recorder.RecorderClipsVerifyResponse.verify(e.verifyClipsResponse);if(s)return"verifyClipsResponse."+s}}return null},i.fromObject=function(e){if(e instanceof $root.sesame.v1.recorder.RecorderResponse)return e;let n=new $root.sesame.v1.recorder.RecorderResponse;if(e.getClipsResponse!=null){if(typeof e.getClipsResponse!="object")throw TypeError(".sesame.v1.recorder.RecorderResponse.getClipsResponse: object expected");n.getClipsResponse=$root.sesame.v1.recorder.RecorderClipsGetResponse.fromObject(e.getClipsResponse)}if(e.okResponse!=null){if(typeof e.okResponse!="object")throw TypeError(".sesame.v1.recorder.RecorderResponse.okResponse: object expected");n.okResponse=$root.sesame.v1.recorder.RecorderOkResponse.fromObject(e.okResponse)}if(e.verifyClipsResponse!=null){if(typeof e.verifyClipsResponse!="object")throw TypeError(".sesame.v1.recorder.RecorderResponse.verifyClipsResponse: object expected");n.verifyClipsResponse=$root.sesame.v1.recorder.RecorderClipsVerifyResponse.fromObject(e.verifyClipsResponse)}return n},i.toObject=function(e,n){n||(n={});let s={};return e.getClipsResponse!=null&&e.hasOwnProperty("getClipsResponse")&&(s.getClipsResponse=$root.sesame.v1.recorder.RecorderClipsGetResponse.toObject(e.getClipsResponse,n),n.oneofs&&(s.response="getClipsResponse")),e.okResponse!=null&&e.hasOwnProperty("okResponse")&&(s.okResponse=$root.sesame.v1.recorder.RecorderOkResponse.toObject(e.okResponse,n),n.oneofs&&(s.response="okResponse")),e.verifyClipsResponse!=null&&e.hasOwnProperty("verifyClipsResponse")&&(s.verifyClipsResponse=$root.sesame.v1.recorder.RecorderClipsVerifyResponse.toObject(e.verifyClipsResponse,n),n.oneofs&&(s.response="verifyClipsResponse")),s},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(e){return e===void 0&&(e="type.googleapis.com"),e+"/sesame.v1.recorder.RecorderResponse"},i}(),l.RecorderStatus=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.id="",i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.id!=null&&Object.hasOwnProperty.call(t,"id")&&e.uint32(10).string(t.id),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.recorder.RecorderStatus;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.id=t.string();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.id!=null&&t.hasOwnProperty("id")&&!$util.isString(t.id)?"id: string expected":null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.recorder.RecorderStatus)return t;let e=new $root.sesame.v1.recorder.RecorderStatus;return t.id!=null&&(e.id=String(t.id)),e},i.toObject=function(t,e){e||(e={});let n={};return e.defaults&&(n.id=""),t.id!=null&&t.hasOwnProperty("id")&&(n.id=t.id),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.recorder.RecorderStatus"},i}(),l.RecorderEvent=function(){function i(t){if(t)for(let e=Object.keys(t),n=0;n<e.length;++n)t[e[n]]!=null&&(this[e[n]]=t[e[n]])}i.prototype.id="",i.prototype.online=!1,i.prototype.message=null;let r;return Object.defineProperty(i.prototype,"_message",{get:$util.oneOfGetter(r=["message"]),set:$util.oneOfSetter(r)}),i.create=function(e){return new i(e)},i.encode=function(e,n){return n||(n=$Writer.create()),e.id!=null&&Object.hasOwnProperty.call(e,"id")&&n.uint32(10).string(e.id),e.online!=null&&Object.hasOwnProperty.call(e,"online")&&n.uint32(16).bool(e.online),e.message!=null&&Object.hasOwnProperty.call(e,"message")&&n.uint32(26).string(e.message),n},i.encodeDelimited=function(e,n){return this.encode(e,n).ldelim()},i.decode=function(e,n,s){e instanceof $Reader||(e=$Reader.create(e));let a=n===void 0?e.len:e.pos+n,U=new $root.sesame.v1.recorder.RecorderEvent;for(;e.pos<a;){let u=e.uint32();if(u===s)break;switch(u>>>3){case 1:{U.id=e.string();break}case 2:{U.online=e.bool();break}case 3:{U.message=e.string();break}default:e.skipType(u&7);break}}return U},i.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},i.verify=function(e){return typeof e!="object"||e===null?"object expected":e.id!=null&&e.hasOwnProperty("id")&&!$util.isString(e.id)?"id: string expected":e.online!=null&&e.hasOwnProperty("online")&&typeof e.online!="boolean"?"online: boolean expected":e.message!=null&&e.hasOwnProperty("message")&&!$util.isString(e.message)?"message: string expected":null},i.fromObject=function(e){if(e instanceof $root.sesame.v1.recorder.RecorderEvent)return e;let n=new $root.sesame.v1.recorder.RecorderEvent;return e.id!=null&&(n.id=String(e.id)),e.online!=null&&(n.online=!!e.online),e.message!=null&&(n.message=String(e.message)),n},i.toObject=function(e,n){n||(n={});let s={};return n.defaults&&(s.id="",s.online=!1),e.id!=null&&e.hasOwnProperty("id")&&(s.id=e.id),e.online!=null&&e.hasOwnProperty("online")&&(s.online=e.online),e.message!=null&&e.hasOwnProperty("message")&&(s.message=e.message,n.oneofs&&(s._message="message")),s},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(e){return e===void 0&&(e="type.googleapis.com"),e+"/sesame.v1.recorder.RecorderEvent"},i}(),l}(),o.status=function(){const l={};return l.FrameTiming=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.frameTime=0,i.prototype.frameTimeAvg=0,i.prototype.frameTimeMin=0,i.prototype.frameTimeMax=0,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.frameTime!=null&&Object.hasOwnProperty.call(t,"frameTime")&&e.uint32(8).int32(t.frameTime),t.frameTimeAvg!=null&&Object.hasOwnProperty.call(t,"frameTimeAvg")&&e.uint32(16).int32(t.frameTimeAvg),t.frameTimeMin!=null&&Object.hasOwnProperty.call(t,"frameTimeMin")&&e.uint32(24).int32(t.frameTimeMin),t.frameTimeMax!=null&&Object.hasOwnProperty.call(t,"frameTimeMax")&&e.uint32(32).int32(t.frameTimeMax),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.status.FrameTiming;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.frameTime=t.int32();break}case 2:{a.frameTimeAvg=t.int32();break}case 3:{a.frameTimeMin=t.int32();break}case 4:{a.frameTimeMax=t.int32();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.frameTime!=null&&t.hasOwnProperty("frameTime")&&!$util.isInteger(t.frameTime)?"frameTime: integer expected":t.frameTimeAvg!=null&&t.hasOwnProperty("frameTimeAvg")&&!$util.isInteger(t.frameTimeAvg)?"frameTimeAvg: integer expected":t.frameTimeMin!=null&&t.hasOwnProperty("frameTimeMin")&&!$util.isInteger(t.frameTimeMin)?"frameTimeMin: integer expected":t.frameTimeMax!=null&&t.hasOwnProperty("frameTimeMax")&&!$util.isInteger(t.frameTimeMax)?"frameTimeMax: integer expected":null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.status.FrameTiming)return t;let e=new $root.sesame.v1.status.FrameTiming;return t.frameTime!=null&&(e.frameTime=t.frameTime|0),t.frameTimeAvg!=null&&(e.frameTimeAvg=t.frameTimeAvg|0),t.frameTimeMin!=null&&(e.frameTimeMin=t.frameTimeMin|0),t.frameTimeMax!=null&&(e.frameTimeMax=t.frameTimeMax|0),e},i.toObject=function(t,e){e||(e={});let n={};return e.defaults&&(n.frameTime=0,n.frameTimeAvg=0,n.frameTimeMin=0,n.frameTimeMax=0),t.frameTime!=null&&t.hasOwnProperty("frameTime")&&(n.frameTime=t.frameTime),t.frameTimeAvg!=null&&t.hasOwnProperty("frameTimeAvg")&&(n.frameTimeAvg=t.frameTimeAvg),t.frameTimeMin!=null&&t.hasOwnProperty("frameTimeMin")&&(n.frameTimeMin=t.frameTimeMin),t.frameTimeMax!=null&&t.hasOwnProperty("frameTimeMax")&&(n.frameTimeMax=t.frameTimeMax),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.status.FrameTiming"},i}(),l.SRTReceiveStatistics=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.packetsReceived=$util.Long?$util.Long.fromBits(0,0,!1):0,i.prototype.packetsReceivedLost=0,i.prototype.packetAckSent=0,i.prototype.packetNackSent=0,i.prototype.bytesReceived=$util.Long?$util.Long.fromBits(0,0,!1):0,i.prototype.bytesReceivedLost=$util.Long?$util.Long.fromBits(0,0,!1):0,i.prototype.receiveRateMbps=0,i.prototype.tsbpdDelay=0,i.prototype.bandwidthMbps=0,i.prototype.rttMs=0,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.packetsReceived!=null&&Object.hasOwnProperty.call(t,"packetsReceived")&&e.uint32(8).int64(t.packetsReceived),t.packetsReceivedLost!=null&&Object.hasOwnProperty.call(t,"packetsReceivedLost")&&e.uint32(16).int32(t.packetsReceivedLost),t.packetAckSent!=null&&Object.hasOwnProperty.call(t,"packetAckSent")&&e.uint32(24).int32(t.packetAckSent),t.packetNackSent!=null&&Object.hasOwnProperty.call(t,"packetNackSent")&&e.uint32(32).int32(t.packetNackSent),t.bytesReceived!=null&&Object.hasOwnProperty.call(t,"bytesReceived")&&e.uint32(40).int64(t.bytesReceived),t.bytesReceivedLost!=null&&Object.hasOwnProperty.call(t,"bytesReceivedLost")&&e.uint32(48).int64(t.bytesReceivedLost),t.receiveRateMbps!=null&&Object.hasOwnProperty.call(t,"receiveRateMbps")&&e.uint32(57).double(t.receiveRateMbps),t.tsbpdDelay!=null&&Object.hasOwnProperty.call(t,"tsbpdDelay")&&e.uint32(64).int32(t.tsbpdDelay),t.bandwidthMbps!=null&&Object.hasOwnProperty.call(t,"bandwidthMbps")&&e.uint32(73).double(t.bandwidthMbps),t.rttMs!=null&&Object.hasOwnProperty.call(t,"rttMs")&&e.uint32(81).double(t.rttMs),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.status.SRTReceiveStatistics;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.packetsReceived=t.int64();break}case 2:{a.packetsReceivedLost=t.int32();break}case 3:{a.packetAckSent=t.int32();break}case 4:{a.packetNackSent=t.int32();break}case 5:{a.bytesReceived=t.int64();break}case 6:{a.bytesReceivedLost=t.int64();break}case 7:{a.receiveRateMbps=t.double();break}case 8:{a.tsbpdDelay=t.int32();break}case 9:{a.bandwidthMbps=t.double();break}case 10:{a.rttMs=t.double();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.packetsReceived!=null&&t.hasOwnProperty("packetsReceived")&&!$util.isInteger(t.packetsReceived)&&!(t.packetsReceived&&$util.isInteger(t.packetsReceived.low)&&$util.isInteger(t.packetsReceived.high))?"packetsReceived: integer|Long expected":t.packetsReceivedLost!=null&&t.hasOwnProperty("packetsReceivedLost")&&!$util.isInteger(t.packetsReceivedLost)?"packetsReceivedLost: integer expected":t.packetAckSent!=null&&t.hasOwnProperty("packetAckSent")&&!$util.isInteger(t.packetAckSent)?"packetAckSent: integer expected":t.packetNackSent!=null&&t.hasOwnProperty("packetNackSent")&&!$util.isInteger(t.packetNackSent)?"packetNackSent: integer expected":t.bytesReceived!=null&&t.hasOwnProperty("bytesReceived")&&!$util.isInteger(t.bytesReceived)&&!(t.bytesReceived&&$util.isInteger(t.bytesReceived.low)&&$util.isInteger(t.bytesReceived.high))?"bytesReceived: integer|Long expected":t.bytesReceivedLost!=null&&t.hasOwnProperty("bytesReceivedLost")&&!$util.isInteger(t.bytesReceivedLost)&&!(t.bytesReceivedLost&&$util.isInteger(t.bytesReceivedLost.low)&&$util.isInteger(t.bytesReceivedLost.high))?"bytesReceivedLost: integer|Long expected":t.receiveRateMbps!=null&&t.hasOwnProperty("receiveRateMbps")&&typeof t.receiveRateMbps!="number"?"receiveRateMbps: number expected":t.tsbpdDelay!=null&&t.hasOwnProperty("tsbpdDelay")&&!$util.isInteger(t.tsbpdDelay)?"tsbpdDelay: integer expected":t.bandwidthMbps!=null&&t.hasOwnProperty("bandwidthMbps")&&typeof t.bandwidthMbps!="number"?"bandwidthMbps: number expected":t.rttMs!=null&&t.hasOwnProperty("rttMs")&&typeof t.rttMs!="number"?"rttMs: number expected":null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.status.SRTReceiveStatistics)return t;let e=new $root.sesame.v1.status.SRTReceiveStatistics;return t.packetsReceived!=null&&($util.Long?(e.packetsReceived=$util.Long.fromValue(t.packetsReceived)).unsigned=!1:typeof t.packetsReceived=="string"?e.packetsReceived=parseInt(t.packetsReceived,10):typeof t.packetsReceived=="number"?e.packetsReceived=t.packetsReceived:typeof t.packetsReceived=="object"&&(e.packetsReceived=new $util.LongBits(t.packetsReceived.low>>>0,t.packetsReceived.high>>>0).toNumber())),t.packetsReceivedLost!=null&&(e.packetsReceivedLost=t.packetsReceivedLost|0),t.packetAckSent!=null&&(e.packetAckSent=t.packetAckSent|0),t.packetNackSent!=null&&(e.packetNackSent=t.packetNackSent|0),t.bytesReceived!=null&&($util.Long?(e.bytesReceived=$util.Long.fromValue(t.bytesReceived)).unsigned=!1:typeof t.bytesReceived=="string"?e.bytesReceived=parseInt(t.bytesReceived,10):typeof t.bytesReceived=="number"?e.bytesReceived=t.bytesReceived:typeof t.bytesReceived=="object"&&(e.bytesReceived=new $util.LongBits(t.bytesReceived.low>>>0,t.bytesReceived.high>>>0).toNumber())),t.bytesReceivedLost!=null&&($util.Long?(e.bytesReceivedLost=$util.Long.fromValue(t.bytesReceivedLost)).unsigned=!1:typeof t.bytesReceivedLost=="string"?e.bytesReceivedLost=parseInt(t.bytesReceivedLost,10):typeof t.bytesReceivedLost=="number"?e.bytesReceivedLost=t.bytesReceivedLost:typeof t.bytesReceivedLost=="object"&&(e.bytesReceivedLost=new $util.LongBits(t.bytesReceivedLost.low>>>0,t.bytesReceivedLost.high>>>0).toNumber())),t.receiveRateMbps!=null&&(e.receiveRateMbps=Number(t.receiveRateMbps)),t.tsbpdDelay!=null&&(e.tsbpdDelay=t.tsbpdDelay|0),t.bandwidthMbps!=null&&(e.bandwidthMbps=Number(t.bandwidthMbps)),t.rttMs!=null&&(e.rttMs=Number(t.rttMs)),e},i.toObject=function(t,e){e||(e={});let n={};if(e.defaults){if($util.Long){let s=new $util.Long(0,0,!1);n.packetsReceived=e.longs===String?s.toString():e.longs===Number?s.toNumber():s}else n.packetsReceived=e.longs===String?"0":0;if(n.packetsReceivedLost=0,n.packetAckSent=0,n.packetNackSent=0,$util.Long){let s=new $util.Long(0,0,!1);n.bytesReceived=e.longs===String?s.toString():e.longs===Number?s.toNumber():s}else n.bytesReceived=e.longs===String?"0":0;if($util.Long){let s=new $util.Long(0,0,!1);n.bytesReceivedLost=e.longs===String?s.toString():e.longs===Number?s.toNumber():s}else n.bytesReceivedLost=e.longs===String?"0":0;n.receiveRateMbps=0,n.tsbpdDelay=0,n.bandwidthMbps=0,n.rttMs=0}return t.packetsReceived!=null&&t.hasOwnProperty("packetsReceived")&&(typeof t.packetsReceived=="number"?n.packetsReceived=e.longs===String?String(t.packetsReceived):t.packetsReceived:n.packetsReceived=e.longs===String?$util.Long.prototype.toString.call(t.packetsReceived):e.longs===Number?new $util.LongBits(t.packetsReceived.low>>>0,t.packetsReceived.high>>>0).toNumber():t.packetsReceived),t.packetsReceivedLost!=null&&t.hasOwnProperty("packetsReceivedLost")&&(n.packetsReceivedLost=t.packetsReceivedLost),t.packetAckSent!=null&&t.hasOwnProperty("packetAckSent")&&(n.packetAckSent=t.packetAckSent),t.packetNackSent!=null&&t.hasOwnProperty("packetNackSent")&&(n.packetNackSent=t.packetNackSent),t.bytesReceived!=null&&t.hasOwnProperty("bytesReceived")&&(typeof t.bytesReceived=="number"?n.bytesReceived=e.longs===String?String(t.bytesReceived):t.bytesReceived:n.bytesReceived=e.longs===String?$util.Long.prototype.toString.call(t.bytesReceived):e.longs===Number?new $util.LongBits(t.bytesReceived.low>>>0,t.bytesReceived.high>>>0).toNumber():t.bytesReceived),t.bytesReceivedLost!=null&&t.hasOwnProperty("bytesReceivedLost")&&(typeof t.bytesReceivedLost=="number"?n.bytesReceivedLost=e.longs===String?String(t.bytesReceivedLost):t.bytesReceivedLost:n.bytesReceivedLost=e.longs===String?$util.Long.prototype.toString.call(t.bytesReceivedLost):e.longs===Number?new $util.LongBits(t.bytesReceivedLost.low>>>0,t.bytesReceivedLost.high>>>0).toNumber():t.bytesReceivedLost),t.receiveRateMbps!=null&&t.hasOwnProperty("receiveRateMbps")&&(n.receiveRateMbps=e.json&&!isFinite(t.receiveRateMbps)?String(t.receiveRateMbps):t.receiveRateMbps),t.tsbpdDelay!=null&&t.hasOwnProperty("tsbpdDelay")&&(n.tsbpdDelay=t.tsbpdDelay),t.bandwidthMbps!=null&&t.hasOwnProperty("bandwidthMbps")&&(n.bandwidthMbps=e.json&&!isFinite(t.bandwidthMbps)?String(t.bandwidthMbps):t.bandwidthMbps),t.rttMs!=null&&t.hasOwnProperty("rttMs")&&(n.rttMs=e.json&&!isFinite(t.rttMs)?String(t.rttMs):t.rttMs),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.status.SRTReceiveStatistics"},i}(),l.SRTSendStatistics=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.packetsSent=$util.Long?$util.Long.fromBits(0,0,!1):0,i.prototype.packetsSentLost=0,i.prototype.packetsSentDropped=0,i.prototype.packetsRetransmitted=0,i.prototype.packetAckReceived=0,i.prototype.packetNackReceived=0,i.prototype.bytesSent=$util.Long?$util.Long.fromBits(0,0,!1):0,i.prototype.bytesSentDropped=$util.Long?$util.Long.fromBits(0,0,!1):0,i.prototype.sendRateMbps=0,i.prototype.bandwidthMbps=0,i.prototype.rttMs=0,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.packetsSent!=null&&Object.hasOwnProperty.call(t,"packetsSent")&&e.uint32(8).int64(t.packetsSent),t.packetsSentLost!=null&&Object.hasOwnProperty.call(t,"packetsSentLost")&&e.uint32(16).int32(t.packetsSentLost),t.packetsSentDropped!=null&&Object.hasOwnProperty.call(t,"packetsSentDropped")&&e.uint32(24).int32(t.packetsSentDropped),t.packetsRetransmitted!=null&&Object.hasOwnProperty.call(t,"packetsRetransmitted")&&e.uint32(32).int32(t.packetsRetransmitted),t.packetAckReceived!=null&&Object.hasOwnProperty.call(t,"packetAckReceived")&&e.uint32(40).int32(t.packetAckReceived),t.packetNackReceived!=null&&Object.hasOwnProperty.call(t,"packetNackReceived")&&e.uint32(48).int32(t.packetNackReceived),t.bytesSent!=null&&Object.hasOwnProperty.call(t,"bytesSent")&&e.uint32(56).int64(t.bytesSent),t.bytesSentDropped!=null&&Object.hasOwnProperty.call(t,"bytesSentDropped")&&e.uint32(64).int64(t.bytesSentDropped),t.sendRateMbps!=null&&Object.hasOwnProperty.call(t,"sendRateMbps")&&e.uint32(73).double(t.sendRateMbps),t.bandwidthMbps!=null&&Object.hasOwnProperty.call(t,"bandwidthMbps")&&e.uint32(81).double(t.bandwidthMbps),t.rttMs!=null&&Object.hasOwnProperty.call(t,"rttMs")&&e.uint32(89).double(t.rttMs),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.status.SRTSendStatistics;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.packetsSent=t.int64();break}case 2:{a.packetsSentLost=t.int32();break}case 3:{a.packetsSentDropped=t.int32();break}case 4:{a.packetsRetransmitted=t.int32();break}case 5:{a.packetAckReceived=t.int32();break}case 6:{a.packetNackReceived=t.int32();break}case 7:{a.bytesSent=t.int64();break}case 8:{a.bytesSentDropped=t.int64();break}case 9:{a.sendRateMbps=t.double();break}case 10:{a.bandwidthMbps=t.double();break}case 11:{a.rttMs=t.double();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.packetsSent!=null&&t.hasOwnProperty("packetsSent")&&!$util.isInteger(t.packetsSent)&&!(t.packetsSent&&$util.isInteger(t.packetsSent.low)&&$util.isInteger(t.packetsSent.high))?"packetsSent: integer|Long expected":t.packetsSentLost!=null&&t.hasOwnProperty("packetsSentLost")&&!$util.isInteger(t.packetsSentLost)?"packetsSentLost: integer expected":t.packetsSentDropped!=null&&t.hasOwnProperty("packetsSentDropped")&&!$util.isInteger(t.packetsSentDropped)?"packetsSentDropped: integer expected":t.packetsRetransmitted!=null&&t.hasOwnProperty("packetsRetransmitted")&&!$util.isInteger(t.packetsRetransmitted)?"packetsRetransmitted: integer expected":t.packetAckReceived!=null&&t.hasOwnProperty("packetAckReceived")&&!$util.isInteger(t.packetAckReceived)?"packetAckReceived: integer expected":t.packetNackReceived!=null&&t.hasOwnProperty("packetNackReceived")&&!$util.isInteger(t.packetNackReceived)?"packetNackReceived: integer expected":t.bytesSent!=null&&t.hasOwnProperty("bytesSent")&&!$util.isInteger(t.bytesSent)&&!(t.bytesSent&&$util.isInteger(t.bytesSent.low)&&$util.isInteger(t.bytesSent.high))?"bytesSent: integer|Long expected":t.bytesSentDropped!=null&&t.hasOwnProperty("bytesSentDropped")&&!$util.isInteger(t.bytesSentDropped)&&!(t.bytesSentDropped&&$util.isInteger(t.bytesSentDropped.low)&&$util.isInteger(t.bytesSentDropped.high))?"bytesSentDropped: integer|Long expected":t.sendRateMbps!=null&&t.hasOwnProperty("sendRateMbps")&&typeof t.sendRateMbps!="number"?"sendRateMbps: number expected":t.bandwidthMbps!=null&&t.hasOwnProperty("bandwidthMbps")&&typeof t.bandwidthMbps!="number"?"bandwidthMbps: number expected":t.rttMs!=null&&t.hasOwnProperty("rttMs")&&typeof t.rttMs!="number"?"rttMs: number expected":null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.status.SRTSendStatistics)return t;let e=new $root.sesame.v1.status.SRTSendStatistics;return t.packetsSent!=null&&($util.Long?(e.packetsSent=$util.Long.fromValue(t.packetsSent)).unsigned=!1:typeof t.packetsSent=="string"?e.packetsSent=parseInt(t.packetsSent,10):typeof t.packetsSent=="number"?e.packetsSent=t.packetsSent:typeof t.packetsSent=="object"&&(e.packetsSent=new $util.LongBits(t.packetsSent.low>>>0,t.packetsSent.high>>>0).toNumber())),t.packetsSentLost!=null&&(e.packetsSentLost=t.packetsSentLost|0),t.packetsSentDropped!=null&&(e.packetsSentDropped=t.packetsSentDropped|0),t.packetsRetransmitted!=null&&(e.packetsRetransmitted=t.packetsRetransmitted|0),t.packetAckReceived!=null&&(e.packetAckReceived=t.packetAckReceived|0),t.packetNackReceived!=null&&(e.packetNackReceived=t.packetNackReceived|0),t.bytesSent!=null&&($util.Long?(e.bytesSent=$util.Long.fromValue(t.bytesSent)).unsigned=!1:typeof t.bytesSent=="string"?e.bytesSent=parseInt(t.bytesSent,10):typeof t.bytesSent=="number"?e.bytesSent=t.bytesSent:typeof t.bytesSent=="object"&&(e.bytesSent=new $util.LongBits(t.bytesSent.low>>>0,t.bytesSent.high>>>0).toNumber())),t.bytesSentDropped!=null&&($util.Long?(e.bytesSentDropped=$util.Long.fromValue(t.bytesSentDropped)).unsigned=!1:typeof t.bytesSentDropped=="string"?e.bytesSentDropped=parseInt(t.bytesSentDropped,10):typeof t.bytesSentDropped=="number"?e.bytesSentDropped=t.bytesSentDropped:typeof t.bytesSentDropped=="object"&&(e.bytesSentDropped=new $util.LongBits(t.bytesSentDropped.low>>>0,t.bytesSentDropped.high>>>0).toNumber())),t.sendRateMbps!=null&&(e.sendRateMbps=Number(t.sendRateMbps)),t.bandwidthMbps!=null&&(e.bandwidthMbps=Number(t.bandwidthMbps)),t.rttMs!=null&&(e.rttMs=Number(t.rttMs)),e},i.toObject=function(t,e){e||(e={});let n={};if(e.defaults){if($util.Long){let s=new $util.Long(0,0,!1);n.packetsSent=e.longs===String?s.toString():e.longs===Number?s.toNumber():s}else n.packetsSent=e.longs===String?"0":0;if(n.packetsSentLost=0,n.packetsSentDropped=0,n.packetsRetransmitted=0,n.packetAckReceived=0,n.packetNackReceived=0,$util.Long){let s=new $util.Long(0,0,!1);n.bytesSent=e.longs===String?s.toString():e.longs===Number?s.toNumber():s}else n.bytesSent=e.longs===String?"0":0;if($util.Long){let s=new $util.Long(0,0,!1);n.bytesSentDropped=e.longs===String?s.toString():e.longs===Number?s.toNumber():s}else n.bytesSentDropped=e.longs===String?"0":0;n.sendRateMbps=0,n.bandwidthMbps=0,n.rttMs=0}return t.packetsSent!=null&&t.hasOwnProperty("packetsSent")&&(typeof t.packetsSent=="number"?n.packetsSent=e.longs===String?String(t.packetsSent):t.packetsSent:n.packetsSent=e.longs===String?$util.Long.prototype.toString.call(t.packetsSent):e.longs===Number?new $util.LongBits(t.packetsSent.low>>>0,t.packetsSent.high>>>0).toNumber():t.packetsSent),t.packetsSentLost!=null&&t.hasOwnProperty("packetsSentLost")&&(n.packetsSentLost=t.packetsSentLost),t.packetsSentDropped!=null&&t.hasOwnProperty("packetsSentDropped")&&(n.packetsSentDropped=t.packetsSentDropped),t.packetsRetransmitted!=null&&t.hasOwnProperty("packetsRetransmitted")&&(n.packetsRetransmitted=t.packetsRetransmitted),t.packetAckReceived!=null&&t.hasOwnProperty("packetAckReceived")&&(n.packetAckReceived=t.packetAckReceived),t.packetNackReceived!=null&&t.hasOwnProperty("packetNackReceived")&&(n.packetNackReceived=t.packetNackReceived),t.bytesSent!=null&&t.hasOwnProperty("bytesSent")&&(typeof t.bytesSent=="number"?n.bytesSent=e.longs===String?String(t.bytesSent):t.bytesSent:n.bytesSent=e.longs===String?$util.Long.prototype.toString.call(t.bytesSent):e.longs===Number?new $util.LongBits(t.bytesSent.low>>>0,t.bytesSent.high>>>0).toNumber():t.bytesSent),t.bytesSentDropped!=null&&t.hasOwnProperty("bytesSentDropped")&&(typeof t.bytesSentDropped=="number"?n.bytesSentDropped=e.longs===String?String(t.bytesSentDropped):t.bytesSentDropped:n.bytesSentDropped=e.longs===String?$util.Long.prototype.toString.call(t.bytesSentDropped):e.longs===Number?new $util.LongBits(t.bytesSentDropped.low>>>0,t.bytesSentDropped.high>>>0).toNumber():t.bytesSentDropped),t.sendRateMbps!=null&&t.hasOwnProperty("sendRateMbps")&&(n.sendRateMbps=e.json&&!isFinite(t.sendRateMbps)?String(t.sendRateMbps):t.sendRateMbps),t.bandwidthMbps!=null&&t.hasOwnProperty("bandwidthMbps")&&(n.bandwidthMbps=e.json&&!isFinite(t.bandwidthMbps)?String(t.bandwidthMbps):t.bandwidthMbps),t.rttMs!=null&&t.hasOwnProperty("rttMs")&&(n.rttMs=e.json&&!isFinite(t.rttMs)?String(t.rttMs):t.rttMs),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.status.SRTSendStatistics"},i}(),l.MemoryDomainStats=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.currentBytes=$util.Long?$util.Long.fromBits(0,0,!0):0,i.prototype.peakBytes=$util.Long?$util.Long.fromBits(0,0,!0):0,i.prototype.budgetBytes=$util.Long?$util.Long.fromBits(0,0,!0):0,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.currentBytes!=null&&Object.hasOwnProperty.call(t,"currentBytes")&&e.uint32(8).uint64(t.currentBytes),t.peakBytes!=null&&Object.hasOwnProperty.call(t,"peakBytes")&&e.uint32(16).uint64(t.peakBytes),t.budgetBytes!=null&&Object.hasOwnProperty.call(t,"budgetBytes")&&e.uint32(24).uint64(t.budgetBytes),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.status.MemoryDomainStats;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.currentBytes=t.uint64();break}case 2:{a.peakBytes=t.uint64();break}case 3:{a.budgetBytes=t.uint64();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.currentBytes!=null&&t.hasOwnProperty("currentBytes")&&!$util.isInteger(t.currentBytes)&&!(t.currentBytes&&$util.isInteger(t.currentBytes.low)&&$util.isInteger(t.currentBytes.high))?"currentBytes: integer|Long expected":t.peakBytes!=null&&t.hasOwnProperty("peakBytes")&&!$util.isInteger(t.peakBytes)&&!(t.peakBytes&&$util.isInteger(t.peakBytes.low)&&$util.isInteger(t.peakBytes.high))?"peakBytes: integer|Long expected":t.budgetBytes!=null&&t.hasOwnProperty("budgetBytes")&&!$util.isInteger(t.budgetBytes)&&!(t.budgetBytes&&$util.isInteger(t.budgetBytes.low)&&$util.isInteger(t.budgetBytes.high))?"budgetBytes: integer|Long expected":null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.status.MemoryDomainStats)return t;let e=new $root.sesame.v1.status.MemoryDomainStats;return t.currentBytes!=null&&($util.Long?(e.currentBytes=$util.Long.fromValue(t.currentBytes)).unsigned=!0:typeof t.currentBytes=="string"?e.currentBytes=parseInt(t.currentBytes,10):typeof t.currentBytes=="number"?e.currentBytes=t.currentBytes:typeof t.currentBytes=="object"&&(e.currentBytes=new $util.LongBits(t.currentBytes.low>>>0,t.currentBytes.high>>>0).toNumber(!0))),t.peakBytes!=null&&($util.Long?(e.peakBytes=$util.Long.fromValue(t.peakBytes)).unsigned=!0:typeof t.peakBytes=="string"?e.peakBytes=parseInt(t.peakBytes,10):typeof t.peakBytes=="number"?e.peakBytes=t.peakBytes:typeof t.peakBytes=="object"&&(e.peakBytes=new $util.LongBits(t.peakBytes.low>>>0,t.peakBytes.high>>>0).toNumber(!0))),t.budgetBytes!=null&&($util.Long?(e.budgetBytes=$util.Long.fromValue(t.budgetBytes)).unsigned=!0:typeof t.budgetBytes=="string"?e.budgetBytes=parseInt(t.budgetBytes,10):typeof t.budgetBytes=="number"?e.budgetBytes=t.budgetBytes:typeof t.budgetBytes=="object"&&(e.budgetBytes=new $util.LongBits(t.budgetBytes.low>>>0,t.budgetBytes.high>>>0).toNumber(!0))),e},i.toObject=function(t,e){e||(e={});let n={};if(e.defaults){if($util.Long){let s=new $util.Long(0,0,!0);n.currentBytes=e.longs===String?s.toString():e.longs===Number?s.toNumber():s}else n.currentBytes=e.longs===String?"0":0;if($util.Long){let s=new $util.Long(0,0,!0);n.peakBytes=e.longs===String?s.toString():e.longs===Number?s.toNumber():s}else n.peakBytes=e.longs===String?"0":0;if($util.Long){let s=new $util.Long(0,0,!0);n.budgetBytes=e.longs===String?s.toString():e.longs===Number?s.toNumber():s}else n.budgetBytes=e.longs===String?"0":0}return t.currentBytes!=null&&t.hasOwnProperty("currentBytes")&&(typeof t.currentBytes=="number"?n.currentBytes=e.longs===String?String(t.currentBytes):t.currentBytes:n.currentBytes=e.longs===String?$util.Long.prototype.toString.call(t.currentBytes):e.longs===Number?new $util.LongBits(t.currentBytes.low>>>0,t.currentBytes.high>>>0).toNumber(!0):t.currentBytes),t.peakBytes!=null&&t.hasOwnProperty("peakBytes")&&(typeof t.peakBytes=="number"?n.peakBytes=e.longs===String?String(t.peakBytes):t.peakBytes:n.peakBytes=e.longs===String?$util.Long.prototype.toString.call(t.peakBytes):e.longs===Number?new $util.LongBits(t.peakBytes.low>>>0,t.peakBytes.high>>>0).toNumber(!0):t.peakBytes),t.budgetBytes!=null&&t.hasOwnProperty("budgetBytes")&&(typeof t.budgetBytes=="number"?n.budgetBytes=e.longs===String?String(t.budgetBytes):t.budgetBytes:n.budgetBytes=e.longs===String?$util.Long.prototype.toString.call(t.budgetBytes):e.longs===Number?new $util.LongBits(t.budgetBytes.low>>>0,t.budgetBytes.high>>>0).toNumber(!0):t.budgetBytes),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.status.MemoryDomainStats"},i}(),l.SystemStatus=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.uptime=$util.Long?$util.Long.fromBits(0,0,!0):0,i.prototype.framedrops=0,i.prototype.framerate=0,i.prototype.gpuMem=$util.Long?$util.Long.fromBits(0,0,!0):0,i.prototype.cpuMem=$util.Long?$util.Long.fromBits(0,0,!0):0,i.prototype.memGpuPool=null,i.prototype.memCpuPool=null,i.prototype.memGpuAdhoc=null,i.prototype.memGpuPinned=null,i.prototype.gpuMemTotal=$util.Long?$util.Long.fromBits(0,0,!0):0,i.prototype.gpuMemUsed=$util.Long?$util.Long.fromBits(0,0,!0):0,i.prototype.gpuUtilization=0,i.prototype.gpuMemUtilization=0,i.prototype.gpuEncoderUtilization=0,i.prototype.gpuDecoderUtilization=0,i.prototype.gpuName="",i.prototype.vmaBytes=$util.Long?$util.Long.fromBits(0,0,!0):0,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.uptime!=null&&Object.hasOwnProperty.call(t,"uptime")&&e.uint32(8).uint64(t.uptime),t.framedrops!=null&&Object.hasOwnProperty.call(t,"framedrops")&&e.uint32(16).uint32(t.framedrops),t.framerate!=null&&Object.hasOwnProperty.call(t,"framerate")&&e.uint32(29).float(t.framerate),t.gpuMem!=null&&Object.hasOwnProperty.call(t,"gpuMem")&&e.uint32(32).uint64(t.gpuMem),t.cpuMem!=null&&Object.hasOwnProperty.call(t,"cpuMem")&&e.uint32(40).uint64(t.cpuMem),t.memGpuPool!=null&&Object.hasOwnProperty.call(t,"memGpuPool")&&$root.sesame.v1.status.MemoryDomainStats.encode(t.memGpuPool,e.uint32(50).fork()).ldelim(),t.memCpuPool!=null&&Object.hasOwnProperty.call(t,"memCpuPool")&&$root.sesame.v1.status.MemoryDomainStats.encode(t.memCpuPool,e.uint32(58).fork()).ldelim(),t.memGpuAdhoc!=null&&Object.hasOwnProperty.call(t,"memGpuAdhoc")&&$root.sesame.v1.status.MemoryDomainStats.encode(t.memGpuAdhoc,e.uint32(66).fork()).ldelim(),t.memGpuPinned!=null&&Object.hasOwnProperty.call(t,"memGpuPinned")&&$root.sesame.v1.status.MemoryDomainStats.encode(t.memGpuPinned,e.uint32(74).fork()).ldelim(),t.gpuMemTotal!=null&&Object.hasOwnProperty.call(t,"gpuMemTotal")&&e.uint32(80).uint64(t.gpuMemTotal),t.gpuMemUsed!=null&&Object.hasOwnProperty.call(t,"gpuMemUsed")&&e.uint32(88).uint64(t.gpuMemUsed),t.gpuUtilization!=null&&Object.hasOwnProperty.call(t,"gpuUtilization")&&e.uint32(96).uint32(t.gpuUtilization),t.gpuMemUtilization!=null&&Object.hasOwnProperty.call(t,"gpuMemUtilization")&&e.uint32(104).uint32(t.gpuMemUtilization),t.gpuEncoderUtilization!=null&&Object.hasOwnProperty.call(t,"gpuEncoderUtilization")&&e.uint32(112).uint32(t.gpuEncoderUtilization),t.gpuDecoderUtilization!=null&&Object.hasOwnProperty.call(t,"gpuDecoderUtilization")&&e.uint32(120).uint32(t.gpuDecoderUtilization),t.gpuName!=null&&Object.hasOwnProperty.call(t,"gpuName")&&e.uint32(130).string(t.gpuName),t.vmaBytes!=null&&Object.hasOwnProperty.call(t,"vmaBytes")&&e.uint32(136).uint64(t.vmaBytes),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.status.SystemStatus;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.uptime=t.uint64();break}case 2:{a.framedrops=t.uint32();break}case 3:{a.framerate=t.float();break}case 4:{a.gpuMem=t.uint64();break}case 5:{a.cpuMem=t.uint64();break}case 6:{a.memGpuPool=$root.sesame.v1.status.MemoryDomainStats.decode(t,t.uint32());break}case 7:{a.memCpuPool=$root.sesame.v1.status.MemoryDomainStats.decode(t,t.uint32());break}case 8:{a.memGpuAdhoc=$root.sesame.v1.status.MemoryDomainStats.decode(t,t.uint32());break}case 9:{a.memGpuPinned=$root.sesame.v1.status.MemoryDomainStats.decode(t,t.uint32());break}case 10:{a.gpuMemTotal=t.uint64();break}case 11:{a.gpuMemUsed=t.uint64();break}case 12:{a.gpuUtilization=t.uint32();break}case 13:{a.gpuMemUtilization=t.uint32();break}case 14:{a.gpuEncoderUtilization=t.uint32();break}case 15:{a.gpuDecoderUtilization=t.uint32();break}case 16:{a.gpuName=t.string();break}case 17:{a.vmaBytes=t.uint64();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.uptime!=null&&t.hasOwnProperty("uptime")&&!$util.isInteger(t.uptime)&&!(t.uptime&&$util.isInteger(t.uptime.low)&&$util.isInteger(t.uptime.high)))return"uptime: integer|Long expected";if(t.framedrops!=null&&t.hasOwnProperty("framedrops")&&!$util.isInteger(t.framedrops))return"framedrops: integer expected";if(t.framerate!=null&&t.hasOwnProperty("framerate")&&typeof t.framerate!="number")return"framerate: number expected";if(t.gpuMem!=null&&t.hasOwnProperty("gpuMem")&&!$util.isInteger(t.gpuMem)&&!(t.gpuMem&&$util.isInteger(t.gpuMem.low)&&$util.isInteger(t.gpuMem.high)))return"gpuMem: integer|Long expected";if(t.cpuMem!=null&&t.hasOwnProperty("cpuMem")&&!$util.isInteger(t.cpuMem)&&!(t.cpuMem&&$util.isInteger(t.cpuMem.low)&&$util.isInteger(t.cpuMem.high)))return"cpuMem: integer|Long expected";if(t.memGpuPool!=null&&t.hasOwnProperty("memGpuPool")){let e=$root.sesame.v1.status.MemoryDomainStats.verify(t.memGpuPool);if(e)return"memGpuPool."+e}if(t.memCpuPool!=null&&t.hasOwnProperty("memCpuPool")){let e=$root.sesame.v1.status.MemoryDomainStats.verify(t.memCpuPool);if(e)return"memCpuPool."+e}if(t.memGpuAdhoc!=null&&t.hasOwnProperty("memGpuAdhoc")){let e=$root.sesame.v1.status.MemoryDomainStats.verify(t.memGpuAdhoc);if(e)return"memGpuAdhoc."+e}if(t.memGpuPinned!=null&&t.hasOwnProperty("memGpuPinned")){let e=$root.sesame.v1.status.MemoryDomainStats.verify(t.memGpuPinned);if(e)return"memGpuPinned."+e}return t.gpuMemTotal!=null&&t.hasOwnProperty("gpuMemTotal")&&!$util.isInteger(t.gpuMemTotal)&&!(t.gpuMemTotal&&$util.isInteger(t.gpuMemTotal.low)&&$util.isInteger(t.gpuMemTotal.high))?"gpuMemTotal: integer|Long expected":t.gpuMemUsed!=null&&t.hasOwnProperty("gpuMemUsed")&&!$util.isInteger(t.gpuMemUsed)&&!(t.gpuMemUsed&&$util.isInteger(t.gpuMemUsed.low)&&$util.isInteger(t.gpuMemUsed.high))?"gpuMemUsed: integer|Long expected":t.gpuUtilization!=null&&t.hasOwnProperty("gpuUtilization")&&!$util.isInteger(t.gpuUtilization)?"gpuUtilization: integer expected":t.gpuMemUtilization!=null&&t.hasOwnProperty("gpuMemUtilization")&&!$util.isInteger(t.gpuMemUtilization)?"gpuMemUtilization: integer expected":t.gpuEncoderUtilization!=null&&t.hasOwnProperty("gpuEncoderUtilization")&&!$util.isInteger(t.gpuEncoderUtilization)?"gpuEncoderUtilization: integer expected":t.gpuDecoderUtilization!=null&&t.hasOwnProperty("gpuDecoderUtilization")&&!$util.isInteger(t.gpuDecoderUtilization)?"gpuDecoderUtilization: integer expected":t.gpuName!=null&&t.hasOwnProperty("gpuName")&&!$util.isString(t.gpuName)?"gpuName: string expected":t.vmaBytes!=null&&t.hasOwnProperty("vmaBytes")&&!$util.isInteger(t.vmaBytes)&&!(t.vmaBytes&&$util.isInteger(t.vmaBytes.low)&&$util.isInteger(t.vmaBytes.high))?"vmaBytes: integer|Long expected":null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.status.SystemStatus)return t;let e=new $root.sesame.v1.status.SystemStatus;if(t.uptime!=null&&($util.Long?(e.uptime=$util.Long.fromValue(t.uptime)).unsigned=!0:typeof t.uptime=="string"?e.uptime=parseInt(t.uptime,10):typeof t.uptime=="number"?e.uptime=t.uptime:typeof t.uptime=="object"&&(e.uptime=new $util.LongBits(t.uptime.low>>>0,t.uptime.high>>>0).toNumber(!0))),t.framedrops!=null&&(e.framedrops=t.framedrops>>>0),t.framerate!=null&&(e.framerate=Number(t.framerate)),t.gpuMem!=null&&($util.Long?(e.gpuMem=$util.Long.fromValue(t.gpuMem)).unsigned=!0:typeof t.gpuMem=="string"?e.gpuMem=parseInt(t.gpuMem,10):typeof t.gpuMem=="number"?e.gpuMem=t.gpuMem:typeof t.gpuMem=="object"&&(e.gpuMem=new $util.LongBits(t.gpuMem.low>>>0,t.gpuMem.high>>>0).toNumber(!0))),t.cpuMem!=null&&($util.Long?(e.cpuMem=$util.Long.fromValue(t.cpuMem)).unsigned=!0:typeof t.cpuMem=="string"?e.cpuMem=parseInt(t.cpuMem,10):typeof t.cpuMem=="number"?e.cpuMem=t.cpuMem:typeof t.cpuMem=="object"&&(e.cpuMem=new $util.LongBits(t.cpuMem.low>>>0,t.cpuMem.high>>>0).toNumber(!0))),t.memGpuPool!=null){if(typeof t.memGpuPool!="object")throw TypeError(".sesame.v1.status.SystemStatus.memGpuPool: object expected");e.memGpuPool=$root.sesame.v1.status.MemoryDomainStats.fromObject(t.memGpuPool)}if(t.memCpuPool!=null){if(typeof t.memCpuPool!="object")throw TypeError(".sesame.v1.status.SystemStatus.memCpuPool: object expected");e.memCpuPool=$root.sesame.v1.status.MemoryDomainStats.fromObject(t.memCpuPool)}if(t.memGpuAdhoc!=null){if(typeof t.memGpuAdhoc!="object")throw TypeError(".sesame.v1.status.SystemStatus.memGpuAdhoc: object expected");e.memGpuAdhoc=$root.sesame.v1.status.MemoryDomainStats.fromObject(t.memGpuAdhoc)}if(t.memGpuPinned!=null){if(typeof t.memGpuPinned!="object")throw TypeError(".sesame.v1.status.SystemStatus.memGpuPinned: object expected");e.memGpuPinned=$root.sesame.v1.status.MemoryDomainStats.fromObject(t.memGpuPinned)}return t.gpuMemTotal!=null&&($util.Long?(e.gpuMemTotal=$util.Long.fromValue(t.gpuMemTotal)).unsigned=!0:typeof t.gpuMemTotal=="string"?e.gpuMemTotal=parseInt(t.gpuMemTotal,10):typeof t.gpuMemTotal=="number"?e.gpuMemTotal=t.gpuMemTotal:typeof t.gpuMemTotal=="object"&&(e.gpuMemTotal=new $util.LongBits(t.gpuMemTotal.low>>>0,t.gpuMemTotal.high>>>0).toNumber(!0))),t.gpuMemUsed!=null&&($util.Long?(e.gpuMemUsed=$util.Long.fromValue(t.gpuMemUsed)).unsigned=!0:typeof t.gpuMemUsed=="string"?e.gpuMemUsed=parseInt(t.gpuMemUsed,10):typeof t.gpuMemUsed=="number"?e.gpuMemUsed=t.gpuMemUsed:typeof t.gpuMemUsed=="object"&&(e.gpuMemUsed=new $util.LongBits(t.gpuMemUsed.low>>>0,t.gpuMemUsed.high>>>0).toNumber(!0))),t.gpuUtilization!=null&&(e.gpuUtilization=t.gpuUtilization>>>0),t.gpuMemUtilization!=null&&(e.gpuMemUtilization=t.gpuMemUtilization>>>0),t.gpuEncoderUtilization!=null&&(e.gpuEncoderUtilization=t.gpuEncoderUtilization>>>0),t.gpuDecoderUtilization!=null&&(e.gpuDecoderUtilization=t.gpuDecoderUtilization>>>0),t.gpuName!=null&&(e.gpuName=String(t.gpuName)),t.vmaBytes!=null&&($util.Long?(e.vmaBytes=$util.Long.fromValue(t.vmaBytes)).unsigned=!0:typeof t.vmaBytes=="string"?e.vmaBytes=parseInt(t.vmaBytes,10):typeof t.vmaBytes=="number"?e.vmaBytes=t.vmaBytes:typeof t.vmaBytes=="object"&&(e.vmaBytes=new $util.LongBits(t.vmaBytes.low>>>0,t.vmaBytes.high>>>0).toNumber(!0))),e},i.toObject=function(t,e){e||(e={});let n={};if(e.defaults){if($util.Long){let s=new $util.Long(0,0,!0);n.uptime=e.longs===String?s.toString():e.longs===Number?s.toNumber():s}else n.uptime=e.longs===String?"0":0;if(n.framedrops=0,n.framerate=0,$util.Long){let s=new $util.Long(0,0,!0);n.gpuMem=e.longs===String?s.toString():e.longs===Number?s.toNumber():s}else n.gpuMem=e.longs===String?"0":0;if($util.Long){let s=new $util.Long(0,0,!0);n.cpuMem=e.longs===String?s.toString():e.longs===Number?s.toNumber():s}else n.cpuMem=e.longs===String?"0":0;if(n.memGpuPool=null,n.memCpuPool=null,n.memGpuAdhoc=null,n.memGpuPinned=null,$util.Long){let s=new $util.Long(0,0,!0);n.gpuMemTotal=e.longs===String?s.toString():e.longs===Number?s.toNumber():s}else n.gpuMemTotal=e.longs===String?"0":0;if($util.Long){let s=new $util.Long(0,0,!0);n.gpuMemUsed=e.longs===String?s.toString():e.longs===Number?s.toNumber():s}else n.gpuMemUsed=e.longs===String?"0":0;if(n.gpuUtilization=0,n.gpuMemUtilization=0,n.gpuEncoderUtilization=0,n.gpuDecoderUtilization=0,n.gpuName="",$util.Long){let s=new $util.Long(0,0,!0);n.vmaBytes=e.longs===String?s.toString():e.longs===Number?s.toNumber():s}else n.vmaBytes=e.longs===String?"0":0}return t.uptime!=null&&t.hasOwnProperty("uptime")&&(typeof t.uptime=="number"?n.uptime=e.longs===String?String(t.uptime):t.uptime:n.uptime=e.longs===String?$util.Long.prototype.toString.call(t.uptime):e.longs===Number?new $util.LongBits(t.uptime.low>>>0,t.uptime.high>>>0).toNumber(!0):t.uptime),t.framedrops!=null&&t.hasOwnProperty("framedrops")&&(n.framedrops=t.framedrops),t.framerate!=null&&t.hasOwnProperty("framerate")&&(n.framerate=e.json&&!isFinite(t.framerate)?String(t.framerate):t.framerate),t.gpuMem!=null&&t.hasOwnProperty("gpuMem")&&(typeof t.gpuMem=="number"?n.gpuMem=e.longs===String?String(t.gpuMem):t.gpuMem:n.gpuMem=e.longs===String?$util.Long.prototype.toString.call(t.gpuMem):e.longs===Number?new $util.LongBits(t.gpuMem.low>>>0,t.gpuMem.high>>>0).toNumber(!0):t.gpuMem),t.cpuMem!=null&&t.hasOwnProperty("cpuMem")&&(typeof t.cpuMem=="number"?n.cpuMem=e.longs===String?String(t.cpuMem):t.cpuMem:n.cpuMem=e.longs===String?$util.Long.prototype.toString.call(t.cpuMem):e.longs===Number?new $util.LongBits(t.cpuMem.low>>>0,t.cpuMem.high>>>0).toNumber(!0):t.cpuMem),t.memGpuPool!=null&&t.hasOwnProperty("memGpuPool")&&(n.memGpuPool=$root.sesame.v1.status.MemoryDomainStats.toObject(t.memGpuPool,e)),t.memCpuPool!=null&&t.hasOwnProperty("memCpuPool")&&(n.memCpuPool=$root.sesame.v1.status.MemoryDomainStats.toObject(t.memCpuPool,e)),t.memGpuAdhoc!=null&&t.hasOwnProperty("memGpuAdhoc")&&(n.memGpuAdhoc=$root.sesame.v1.status.MemoryDomainStats.toObject(t.memGpuAdhoc,e)),t.memGpuPinned!=null&&t.hasOwnProperty("memGpuPinned")&&(n.memGpuPinned=$root.sesame.v1.status.MemoryDomainStats.toObject(t.memGpuPinned,e)),t.gpuMemTotal!=null&&t.hasOwnProperty("gpuMemTotal")&&(typeof t.gpuMemTotal=="number"?n.gpuMemTotal=e.longs===String?String(t.gpuMemTotal):t.gpuMemTotal:n.gpuMemTotal=e.longs===String?$util.Long.prototype.toString.call(t.gpuMemTotal):e.longs===Number?new $util.LongBits(t.gpuMemTotal.low>>>0,t.gpuMemTotal.high>>>0).toNumber(!0):t.gpuMemTotal),t.gpuMemUsed!=null&&t.hasOwnProperty("gpuMemUsed")&&(typeof t.gpuMemUsed=="number"?n.gpuMemUsed=e.longs===String?String(t.gpuMemUsed):t.gpuMemUsed:n.gpuMemUsed=e.longs===String?$util.Long.prototype.toString.call(t.gpuMemUsed):e.longs===Number?new $util.LongBits(t.gpuMemUsed.low>>>0,t.gpuMemUsed.high>>>0).toNumber(!0):t.gpuMemUsed),t.gpuUtilization!=null&&t.hasOwnProperty("gpuUtilization")&&(n.gpuUtilization=t.gpuUtilization),t.gpuMemUtilization!=null&&t.hasOwnProperty("gpuMemUtilization")&&(n.gpuMemUtilization=t.gpuMemUtilization),t.gpuEncoderUtilization!=null&&t.hasOwnProperty("gpuEncoderUtilization")&&(n.gpuEncoderUtilization=t.gpuEncoderUtilization),t.gpuDecoderUtilization!=null&&t.hasOwnProperty("gpuDecoderUtilization")&&(n.gpuDecoderUtilization=t.gpuDecoderUtilization),t.gpuName!=null&&t.hasOwnProperty("gpuName")&&(n.gpuName=t.gpuName),t.vmaBytes!=null&&t.hasOwnProperty("vmaBytes")&&(typeof t.vmaBytes=="number"?n.vmaBytes=e.longs===String?String(t.vmaBytes):t.vmaBytes:n.vmaBytes=e.longs===String?$util.Long.prototype.toString.call(t.vmaBytes):e.longs===Number?new $util.LongBits(t.vmaBytes.low>>>0,t.vmaBytes.high>>>0).toNumber(!0):t.vmaBytes),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.status.SystemStatus"},i}(),l.CompositorStatus=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.id="",i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.id!=null&&Object.hasOwnProperty.call(t,"id")&&e.uint32(10).string(t.id),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.status.CompositorStatus;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.id=t.string();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.id!=null&&t.hasOwnProperty("id")&&!$util.isString(t.id)?"id: string expected":null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.status.CompositorStatus)return t;let e=new $root.sesame.v1.status.CompositorStatus;return t.id!=null&&(e.id=String(t.id)),e},i.toObject=function(t,e){e||(e={});let n={};return e.defaults&&(n.id=""),t.id!=null&&t.hasOwnProperty("id")&&(n.id=t.id),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.status.CompositorStatus"},i}(),l.IODeviceType=function(){const i={},r=Object.create(i);return r[i[0]="IO_DEVICE_TYPE_UNSPECIFIED"]=0,r[i[1]="IO_DEVICE_TYPE_VIDEO_INPUT"]=1,r[i[2]="IO_DEVICE_TYPE_VIDEO_OUTPUT"]=2,r[i[3]="IO_DEVICE_TYPE_AUDIO_INPUT"]=3,r[i[4]="IO_DEVICE_TYPE_AUDIO_OUTPUT"]=4,r}(),l.IODeviceItem=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.id="",i.prototype.name="",i.prototype.type=0,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.id!=null&&Object.hasOwnProperty.call(t,"id")&&e.uint32(10).string(t.id),t.name!=null&&Object.hasOwnProperty.call(t,"name")&&e.uint32(18).string(t.name),t.type!=null&&Object.hasOwnProperty.call(t,"type")&&e.uint32(24).int32(t.type),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.status.IODeviceItem;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.id=t.string();break}case 2:{a.name=t.string();break}case 3:{a.type=t.int32();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.id!=null&&t.hasOwnProperty("id")&&!$util.isString(t.id))return"id: string expected";if(t.name!=null&&t.hasOwnProperty("name")&&!$util.isString(t.name))return"name: string expected";if(t.type!=null&&t.hasOwnProperty("type"))switch(t.type){default:return"type: enum value expected";case 0:case 1:case 2:case 3:case 4:break}return null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.status.IODeviceItem)return t;let e=new $root.sesame.v1.status.IODeviceItem;switch(t.id!=null&&(e.id=String(t.id)),t.name!=null&&(e.name=String(t.name)),t.type){default:if(typeof t.type=="number"){e.type=t.type;break}break;case"IO_DEVICE_TYPE_UNSPECIFIED":case 0:e.type=0;break;case"IO_DEVICE_TYPE_VIDEO_INPUT":case 1:e.type=1;break;case"IO_DEVICE_TYPE_VIDEO_OUTPUT":case 2:e.type=2;break;case"IO_DEVICE_TYPE_AUDIO_INPUT":case 3:e.type=3;break;case"IO_DEVICE_TYPE_AUDIO_OUTPUT":case 4:e.type=4;break}return e},i.toObject=function(t,e){e||(e={});let n={};return e.defaults&&(n.id="",n.name="",n.type=e.enums===String?"IO_DEVICE_TYPE_UNSPECIFIED":0),t.id!=null&&t.hasOwnProperty("id")&&(n.id=t.id),t.name!=null&&t.hasOwnProperty("name")&&(n.name=t.name),t.type!=null&&t.hasOwnProperty("type")&&(n.type=e.enums===String?$root.sesame.v1.status.IODeviceType[t.type]===void 0?t.type:$root.sesame.v1.status.IODeviceType[t.type]:t.type),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.status.IODeviceItem"},i}(),l.IODeviceListResponse=function(){function i(r){if(this.devices=[],r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.devices=$util.emptyArray,i.create=function(t){return new i(t)},i.encode=function(t,e){if(e||(e=$Writer.create()),t.devices!=null&&t.devices.length)for(let n=0;n<t.devices.length;++n)$root.sesame.v1.status.IODeviceItem.encode(t.devices[n],e.uint32(10).fork()).ldelim();return e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.status.IODeviceListResponse;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.devices&&a.devices.length||(a.devices=[]),a.devices.push($root.sesame.v1.status.IODeviceItem.decode(t,t.uint32()));break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.devices!=null&&t.hasOwnProperty("devices")){if(!Array.isArray(t.devices))return"devices: array expected";for(let e=0;e<t.devices.length;++e){let n=$root.sesame.v1.status.IODeviceItem.verify(t.devices[e]);if(n)return"devices."+n}}return null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.status.IODeviceListResponse)return t;let e=new $root.sesame.v1.status.IODeviceListResponse;if(t.devices){if(!Array.isArray(t.devices))throw TypeError(".sesame.v1.status.IODeviceListResponse.devices: array expected");e.devices=[];for(let n=0;n<t.devices.length;++n){if(typeof t.devices[n]!="object")throw TypeError(".sesame.v1.status.IODeviceListResponse.devices: object expected");e.devices[n]=$root.sesame.v1.status.IODeviceItem.fromObject(t.devices[n])}}return e},i.toObject=function(t,e){e||(e={});let n={};if((e.arrays||e.defaults)&&(n.devices=[]),t.devices&&t.devices.length){n.devices=[];for(let s=0;s<t.devices.length;++s)n.devices[s]=$root.sesame.v1.status.IODeviceItem.toObject(t.devices[s],e)}return n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.status.IODeviceListResponse"},i}(),l.Status=function(){function i(r){if(this.sources=[],this.compositions=[],this.audioMixes=[],this.outputs=[],this.recorders=[],r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.systemStatus=null,i.prototype.renderStatusGpu=null,i.prototype.renderStatusCpu=null,i.prototype.sources=$util.emptyArray,i.prototype.compositions=$util.emptyArray,i.prototype.audioMixes=$util.emptyArray,i.prototype.outputs=$util.emptyArray,i.prototype.recorders=$util.emptyArray,i.create=function(t){return new i(t)},i.encode=function(t,e){if(e||(e=$Writer.create()),t.systemStatus!=null&&Object.hasOwnProperty.call(t,"systemStatus")&&$root.sesame.v1.status.SystemStatus.encode(t.systemStatus,e.uint32(10).fork()).ldelim(),t.renderStatusGpu!=null&&Object.hasOwnProperty.call(t,"renderStatusGpu")&&$root.sesame.v1.status.FrameTiming.encode(t.renderStatusGpu,e.uint32(18).fork()).ldelim(),t.renderStatusCpu!=null&&Object.hasOwnProperty.call(t,"renderStatusCpu")&&$root.sesame.v1.status.FrameTiming.encode(t.renderStatusCpu,e.uint32(26).fork()).ldelim(),t.sources!=null&&t.sources.length)for(let n=0;n<t.sources.length;++n)$root.sesame.v1.sources.SourceStatus.encode(t.sources[n],e.uint32(34).fork()).ldelim();if(t.compositions!=null&&t.compositions.length)for(let n=0;n<t.compositions.length;++n)$root.sesame.v1.status.CompositorStatus.encode(t.compositions[n],e.uint32(42).fork()).ldelim();if(t.audioMixes!=null&&t.audioMixes.length)for(let n=0;n<t.audioMixes.length;++n)$root.sesame.v1.audio.AudioMixerStatus.encode(t.audioMixes[n],e.uint32(50).fork()).ldelim();if(t.outputs!=null&&t.outputs.length)for(let n=0;n<t.outputs.length;++n)$root.sesame.v1.outputs.OutputStatus.encode(t.outputs[n],e.uint32(58).fork()).ldelim();if(t.recorders!=null&&t.recorders.length)for(let n=0;n<t.recorders.length;++n)$root.sesame.v1.recorder.RecorderStatus.encode(t.recorders[n],e.uint32(66).fork()).ldelim();return e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.status.Status;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.systemStatus=$root.sesame.v1.status.SystemStatus.decode(t,t.uint32());break}case 2:{a.renderStatusGpu=$root.sesame.v1.status.FrameTiming.decode(t,t.uint32());break}case 3:{a.renderStatusCpu=$root.sesame.v1.status.FrameTiming.decode(t,t.uint32());break}case 4:{a.sources&&a.sources.length||(a.sources=[]),a.sources.push($root.sesame.v1.sources.SourceStatus.decode(t,t.uint32()));break}case 5:{a.compositions&&a.compositions.length||(a.compositions=[]),a.compositions.push($root.sesame.v1.status.CompositorStatus.decode(t,t.uint32()));break}case 6:{a.audioMixes&&a.audioMixes.length||(a.audioMixes=[]),a.audioMixes.push($root.sesame.v1.audio.AudioMixerStatus.decode(t,t.uint32()));break}case 7:{a.outputs&&a.outputs.length||(a.outputs=[]),a.outputs.push($root.sesame.v1.outputs.OutputStatus.decode(t,t.uint32()));break}case 8:{a.recorders&&a.recorders.length||(a.recorders=[]),a.recorders.push($root.sesame.v1.recorder.RecorderStatus.decode(t,t.uint32()));break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.systemStatus!=null&&t.hasOwnProperty("systemStatus")){let e=$root.sesame.v1.status.SystemStatus.verify(t.systemStatus);if(e)return"systemStatus."+e}if(t.renderStatusGpu!=null&&t.hasOwnProperty("renderStatusGpu")){let e=$root.sesame.v1.status.FrameTiming.verify(t.renderStatusGpu);if(e)return"renderStatusGpu."+e}if(t.renderStatusCpu!=null&&t.hasOwnProperty("renderStatusCpu")){let e=$root.sesame.v1.status.FrameTiming.verify(t.renderStatusCpu);if(e)return"renderStatusCpu."+e}if(t.sources!=null&&t.hasOwnProperty("sources")){if(!Array.isArray(t.sources))return"sources: array expected";for(let e=0;e<t.sources.length;++e){let n=$root.sesame.v1.sources.SourceStatus.verify(t.sources[e]);if(n)return"sources."+n}}if(t.compositions!=null&&t.hasOwnProperty("compositions")){if(!Array.isArray(t.compositions))return"compositions: array expected";for(let e=0;e<t.compositions.length;++e){let n=$root.sesame.v1.status.CompositorStatus.verify(t.compositions[e]);if(n)return"compositions."+n}}if(t.audioMixes!=null&&t.hasOwnProperty("audioMixes")){if(!Array.isArray(t.audioMixes))return"audioMixes: array expected";for(let e=0;e<t.audioMixes.length;++e){let n=$root.sesame.v1.audio.AudioMixerStatus.verify(t.audioMixes[e]);if(n)return"audioMixes."+n}}if(t.outputs!=null&&t.hasOwnProperty("outputs")){if(!Array.isArray(t.outputs))return"outputs: array expected";for(let e=0;e<t.outputs.length;++e){let n=$root.sesame.v1.outputs.OutputStatus.verify(t.outputs[e]);if(n)return"outputs."+n}}if(t.recorders!=null&&t.hasOwnProperty("recorders")){if(!Array.isArray(t.recorders))return"recorders: array expected";for(let e=0;e<t.recorders.length;++e){let n=$root.sesame.v1.recorder.RecorderStatus.verify(t.recorders[e]);if(n)return"recorders."+n}}return null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.status.Status)return t;let e=new $root.sesame.v1.status.Status;if(t.systemStatus!=null){if(typeof t.systemStatus!="object")throw TypeError(".sesame.v1.status.Status.systemStatus: object expected");e.systemStatus=$root.sesame.v1.status.SystemStatus.fromObject(t.systemStatus)}if(t.renderStatusGpu!=null){if(typeof t.renderStatusGpu!="object")throw TypeError(".sesame.v1.status.Status.renderStatusGpu: object expected");e.renderStatusGpu=$root.sesame.v1.status.FrameTiming.fromObject(t.renderStatusGpu)}if(t.renderStatusCpu!=null){if(typeof t.renderStatusCpu!="object")throw TypeError(".sesame.v1.status.Status.renderStatusCpu: object expected");e.renderStatusCpu=$root.sesame.v1.status.FrameTiming.fromObject(t.renderStatusCpu)}if(t.sources){if(!Array.isArray(t.sources))throw TypeError(".sesame.v1.status.Status.sources: array expected");e.sources=[];for(let n=0;n<t.sources.length;++n){if(typeof t.sources[n]!="object")throw TypeError(".sesame.v1.status.Status.sources: object expected");e.sources[n]=$root.sesame.v1.sources.SourceStatus.fromObject(t.sources[n])}}if(t.compositions){if(!Array.isArray(t.compositions))throw TypeError(".sesame.v1.status.Status.compositions: array expected");e.compositions=[];for(let n=0;n<t.compositions.length;++n){if(typeof t.compositions[n]!="object")throw TypeError(".sesame.v1.status.Status.compositions: object expected");e.compositions[n]=$root.sesame.v1.status.CompositorStatus.fromObject(t.compositions[n])}}if(t.audioMixes){if(!Array.isArray(t.audioMixes))throw TypeError(".sesame.v1.status.Status.audioMixes: array expected");e.audioMixes=[];for(let n=0;n<t.audioMixes.length;++n){if(typeof t.audioMixes[n]!="object")throw TypeError(".sesame.v1.status.Status.audioMixes: object expected");e.audioMixes[n]=$root.sesame.v1.audio.AudioMixerStatus.fromObject(t.audioMixes[n])}}if(t.outputs){if(!Array.isArray(t.outputs))throw TypeError(".sesame.v1.status.Status.outputs: array expected");e.outputs=[];for(let n=0;n<t.outputs.length;++n){if(typeof t.outputs[n]!="object")throw TypeError(".sesame.v1.status.Status.outputs: object expected");e.outputs[n]=$root.sesame.v1.outputs.OutputStatus.fromObject(t.outputs[n])}}if(t.recorders){if(!Array.isArray(t.recorders))throw TypeError(".sesame.v1.status.Status.recorders: array expected");e.recorders=[];for(let n=0;n<t.recorders.length;++n){if(typeof t.recorders[n]!="object")throw TypeError(".sesame.v1.status.Status.recorders: object expected");e.recorders[n]=$root.sesame.v1.recorder.RecorderStatus.fromObject(t.recorders[n])}}return e},i.toObject=function(t,e){e||(e={});let n={};if((e.arrays||e.defaults)&&(n.sources=[],n.compositions=[],n.audioMixes=[],n.outputs=[],n.recorders=[]),e.defaults&&(n.systemStatus=null,n.renderStatusGpu=null,n.renderStatusCpu=null),t.systemStatus!=null&&t.hasOwnProperty("systemStatus")&&(n.systemStatus=$root.sesame.v1.status.SystemStatus.toObject(t.systemStatus,e)),t.renderStatusGpu!=null&&t.hasOwnProperty("renderStatusGpu")&&(n.renderStatusGpu=$root.sesame.v1.status.FrameTiming.toObject(t.renderStatusGpu,e)),t.renderStatusCpu!=null&&t.hasOwnProperty("renderStatusCpu")&&(n.renderStatusCpu=$root.sesame.v1.status.FrameTiming.toObject(t.renderStatusCpu,e)),t.sources&&t.sources.length){n.sources=[];for(let s=0;s<t.sources.length;++s)n.sources[s]=$root.sesame.v1.sources.SourceStatus.toObject(t.sources[s],e)}if(t.compositions&&t.compositions.length){n.compositions=[];for(let s=0;s<t.compositions.length;++s)n.compositions[s]=$root.sesame.v1.status.CompositorStatus.toObject(t.compositions[s],e)}if(t.audioMixes&&t.audioMixes.length){n.audioMixes=[];for(let s=0;s<t.audioMixes.length;++s)n.audioMixes[s]=$root.sesame.v1.audio.AudioMixerStatus.toObject(t.audioMixes[s],e)}if(t.outputs&&t.outputs.length){n.outputs=[];for(let s=0;s<t.outputs.length;++s)n.outputs[s]=$root.sesame.v1.outputs.OutputStatus.toObject(t.outputs[s],e)}if(t.recorders&&t.recorders.length){n.recorders=[];for(let s=0;s<t.recorders.length;++s)n.recorders[s]=$root.sesame.v1.recorder.RecorderStatus.toObject(t.recorders[s],e)}return n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.status.Status"},i}(),l.ErrorEvent=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.msg="",i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.msg!=null&&Object.hasOwnProperty.call(t,"msg")&&e.uint32(10).string(t.msg),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.status.ErrorEvent;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.msg=t.string();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.msg!=null&&t.hasOwnProperty("msg")&&!$util.isString(t.msg)?"msg: string expected":null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.status.ErrorEvent)return t;let e=new $root.sesame.v1.status.ErrorEvent;return t.msg!=null&&(e.msg=String(t.msg)),e},i.toObject=function(t,e){e||(e={});let n={};return e.defaults&&(n.msg=""),t.msg!=null&&t.hasOwnProperty("msg")&&(n.msg=t.msg),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.status.ErrorEvent"},i}(),l.TransportEvent=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.sourceId="",i.prototype.userId="",i.prototype.uri="",i.prototype.state=0,i.prototype.durationUs=$util.Long?$util.Long.fromBits(0,0,!1):0,i.prototype.positionUs=$util.Long?$util.Long.fromBits(0,0,!1):0,i.prototype.materialPositionUs=$util.Long?$util.Long.fromBits(0,0,!1):0,i.prototype.userTimeUs=$util.Long?$util.Long.fromBits(0,0,!1):0,i.prototype.speed=0,i.prototype.userPlaylistId="",i.prototype.playlistIndex=0,i.prototype.playlistLength=0,i.prototype.clipId=$util.Long?$util.Long.fromBits(0,0,!0):0,i.prototype.clipPositionUs=$util.Long?$util.Long.fromBits(0,0,!1):0,i.prototype.clipDurationUs=$util.Long?$util.Long.fromBits(0,0,!1):0,i.prototype.preroll=0,i.prototype.postroll=0,i.prototype.metadata=null,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.sourceId!=null&&Object.hasOwnProperty.call(t,"sourceId")&&e.uint32(10).string(t.sourceId),t.userId!=null&&Object.hasOwnProperty.call(t,"userId")&&e.uint32(18).string(t.userId),t.uri!=null&&Object.hasOwnProperty.call(t,"uri")&&e.uint32(26).string(t.uri),t.state!=null&&Object.hasOwnProperty.call(t,"state")&&e.uint32(32).int32(t.state),t.durationUs!=null&&Object.hasOwnProperty.call(t,"durationUs")&&e.uint32(40).int64(t.durationUs),t.positionUs!=null&&Object.hasOwnProperty.call(t,"positionUs")&&e.uint32(48).int64(t.positionUs),t.materialPositionUs!=null&&Object.hasOwnProperty.call(t,"materialPositionUs")&&e.uint32(56).int64(t.materialPositionUs),t.userTimeUs!=null&&Object.hasOwnProperty.call(t,"userTimeUs")&&e.uint32(64).int64(t.userTimeUs),t.speed!=null&&Object.hasOwnProperty.call(t,"speed")&&e.uint32(77).float(t.speed),t.userPlaylistId!=null&&Object.hasOwnProperty.call(t,"userPlaylistId")&&e.uint32(82).string(t.userPlaylistId),t.playlistIndex!=null&&Object.hasOwnProperty.call(t,"playlistIndex")&&e.uint32(88).uint32(t.playlistIndex),t.playlistLength!=null&&Object.hasOwnProperty.call(t,"playlistLength")&&e.uint32(96).uint32(t.playlistLength),t.clipId!=null&&Object.hasOwnProperty.call(t,"clipId")&&e.uint32(104).uint64(t.clipId),t.clipPositionUs!=null&&Object.hasOwnProperty.call(t,"clipPositionUs")&&e.uint32(112).int64(t.clipPositionUs),t.clipDurationUs!=null&&Object.hasOwnProperty.call(t,"clipDurationUs")&&e.uint32(120).int64(t.clipDurationUs),t.preroll!=null&&Object.hasOwnProperty.call(t,"preroll")&&e.uint32(128).uint32(t.preroll),t.postroll!=null&&Object.hasOwnProperty.call(t,"postroll")&&e.uint32(136).uint32(t.postroll),t.metadata!=null&&Object.hasOwnProperty.call(t,"metadata")&&$root.sesame.v1.common.TransportMetadata.encode(t.metadata,e.uint32(146).fork()).ldelim(),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.status.TransportEvent;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.sourceId=t.string();break}case 2:{a.userId=t.string();break}case 3:{a.uri=t.string();break}case 4:{a.state=t.int32();break}case 5:{a.durationUs=t.int64();break}case 6:{a.positionUs=t.int64();break}case 7:{a.materialPositionUs=t.int64();break}case 8:{a.userTimeUs=t.int64();break}case 9:{a.speed=t.float();break}case 10:{a.userPlaylistId=t.string();break}case 11:{a.playlistIndex=t.uint32();break}case 12:{a.playlistLength=t.uint32();break}case 13:{a.clipId=t.uint64();break}case 14:{a.clipPositionUs=t.int64();break}case 15:{a.clipDurationUs=t.int64();break}case 16:{a.preroll=t.uint32();break}case 17:{a.postroll=t.uint32();break}case 18:{a.metadata=$root.sesame.v1.common.TransportMetadata.decode(t,t.uint32());break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.sourceId!=null&&t.hasOwnProperty("sourceId")&&!$util.isString(t.sourceId))return"sourceId: string expected";if(t.userId!=null&&t.hasOwnProperty("userId")&&!$util.isString(t.userId))return"userId: string expected";if(t.uri!=null&&t.hasOwnProperty("uri")&&!$util.isString(t.uri))return"uri: string expected";if(t.state!=null&&t.hasOwnProperty("state"))switch(t.state){default:return"state: enum value expected";case 0:case 1:case 2:case 3:case 4:break}if(t.durationUs!=null&&t.hasOwnProperty("durationUs")&&!$util.isInteger(t.durationUs)&&!(t.durationUs&&$util.isInteger(t.durationUs.low)&&$util.isInteger(t.durationUs.high)))return"durationUs: integer|Long expected";if(t.positionUs!=null&&t.hasOwnProperty("positionUs")&&!$util.isInteger(t.positionUs)&&!(t.positionUs&&$util.isInteger(t.positionUs.low)&&$util.isInteger(t.positionUs.high)))return"positionUs: integer|Long expected";if(t.materialPositionUs!=null&&t.hasOwnProperty("materialPositionUs")&&!$util.isInteger(t.materialPositionUs)&&!(t.materialPositionUs&&$util.isInteger(t.materialPositionUs.low)&&$util.isInteger(t.materialPositionUs.high)))return"materialPositionUs: integer|Long expected";if(t.userTimeUs!=null&&t.hasOwnProperty("userTimeUs")&&!$util.isInteger(t.userTimeUs)&&!(t.userTimeUs&&$util.isInteger(t.userTimeUs.low)&&$util.isInteger(t.userTimeUs.high)))return"userTimeUs: integer|Long expected";if(t.speed!=null&&t.hasOwnProperty("speed")&&typeof t.speed!="number")return"speed: number expected";if(t.userPlaylistId!=null&&t.hasOwnProperty("userPlaylistId")&&!$util.isString(t.userPlaylistId))return"userPlaylistId: string expected";if(t.playlistIndex!=null&&t.hasOwnProperty("playlistIndex")&&!$util.isInteger(t.playlistIndex))return"playlistIndex: integer expected";if(t.playlistLength!=null&&t.hasOwnProperty("playlistLength")&&!$util.isInteger(t.playlistLength))return"playlistLength: integer expected";if(t.clipId!=null&&t.hasOwnProperty("clipId")&&!$util.isInteger(t.clipId)&&!(t.clipId&&$util.isInteger(t.clipId.low)&&$util.isInteger(t.clipId.high)))return"clipId: integer|Long expected";if(t.clipPositionUs!=null&&t.hasOwnProperty("clipPositionUs")&&!$util.isInteger(t.clipPositionUs)&&!(t.clipPositionUs&&$util.isInteger(t.clipPositionUs.low)&&$util.isInteger(t.clipPositionUs.high)))return"clipPositionUs: integer|Long expected";if(t.clipDurationUs!=null&&t.hasOwnProperty("clipDurationUs")&&!$util.isInteger(t.clipDurationUs)&&!(t.clipDurationUs&&$util.isInteger(t.clipDurationUs.low)&&$util.isInteger(t.clipDurationUs.high)))return"clipDurationUs: integer|Long expected";if(t.preroll!=null&&t.hasOwnProperty("preroll")&&!$util.isInteger(t.preroll))return"preroll: integer expected";if(t.postroll!=null&&t.hasOwnProperty("postroll")&&!$util.isInteger(t.postroll))return"postroll: integer expected";if(t.metadata!=null&&t.hasOwnProperty("metadata")){let e=$root.sesame.v1.common.TransportMetadata.verify(t.metadata);if(e)return"metadata."+e}return null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.status.TransportEvent)return t;let e=new $root.sesame.v1.status.TransportEvent;switch(t.sourceId!=null&&(e.sourceId=String(t.sourceId)),t.userId!=null&&(e.userId=String(t.userId)),t.uri!=null&&(e.uri=String(t.uri)),t.state){default:if(typeof t.state=="number"){e.state=t.state;break}break;case"SOURCE_TRANSPORT_STATE_STOPPED":case 0:e.state=0;break;case"SOURCE_TRANSPORT_STATE_PLAYING":case 1:e.state=1;break;case"SOURCE_TRANSPORT_STATE_CUEING":case 2:e.state=2;break;case"SOURCE_TRANSPORT_STATE_ERROR":case 3:e.state=3;break;case"SOURCE_TRANSPORT_STATE_PLAYING_LIVE":case 4:e.state=4;break}if(t.durationUs!=null&&($util.Long?(e.durationUs=$util.Long.fromValue(t.durationUs)).unsigned=!1:typeof t.durationUs=="string"?e.durationUs=parseInt(t.durationUs,10):typeof t.durationUs=="number"?e.durationUs=t.durationUs:typeof t.durationUs=="object"&&(e.durationUs=new $util.LongBits(t.durationUs.low>>>0,t.durationUs.high>>>0).toNumber())),t.positionUs!=null&&($util.Long?(e.positionUs=$util.Long.fromValue(t.positionUs)).unsigned=!1:typeof t.positionUs=="string"?e.positionUs=parseInt(t.positionUs,10):typeof t.positionUs=="number"?e.positionUs=t.positionUs:typeof t.positionUs=="object"&&(e.positionUs=new $util.LongBits(t.positionUs.low>>>0,t.positionUs.high>>>0).toNumber())),t.materialPositionUs!=null&&($util.Long?(e.materialPositionUs=$util.Long.fromValue(t.materialPositionUs)).unsigned=!1:typeof t.materialPositionUs=="string"?e.materialPositionUs=parseInt(t.materialPositionUs,10):typeof t.materialPositionUs=="number"?e.materialPositionUs=t.materialPositionUs:typeof t.materialPositionUs=="object"&&(e.materialPositionUs=new $util.LongBits(t.materialPositionUs.low>>>0,t.materialPositionUs.high>>>0).toNumber())),t.userTimeUs!=null&&($util.Long?(e.userTimeUs=$util.Long.fromValue(t.userTimeUs)).unsigned=!1:typeof t.userTimeUs=="string"?e.userTimeUs=parseInt(t.userTimeUs,10):typeof t.userTimeUs=="number"?e.userTimeUs=t.userTimeUs:typeof t.userTimeUs=="object"&&(e.userTimeUs=new $util.LongBits(t.userTimeUs.low>>>0,t.userTimeUs.high>>>0).toNumber())),t.speed!=null&&(e.speed=Number(t.speed)),t.userPlaylistId!=null&&(e.userPlaylistId=String(t.userPlaylistId)),t.playlistIndex!=null&&(e.playlistIndex=t.playlistIndex>>>0),t.playlistLength!=null&&(e.playlistLength=t.playlistLength>>>0),t.clipId!=null&&($util.Long?(e.clipId=$util.Long.fromValue(t.clipId)).unsigned=!0:typeof t.clipId=="string"?e.clipId=parseInt(t.clipId,10):typeof t.clipId=="number"?e.clipId=t.clipId:typeof t.clipId=="object"&&(e.clipId=new $util.LongBits(t.clipId.low>>>0,t.clipId.high>>>0).toNumber(!0))),t.clipPositionUs!=null&&($util.Long?(e.clipPositionUs=$util.Long.fromValue(t.clipPositionUs)).unsigned=!1:typeof t.clipPositionUs=="string"?e.clipPositionUs=parseInt(t.clipPositionUs,10):typeof t.clipPositionUs=="number"?e.clipPositionUs=t.clipPositionUs:typeof t.clipPositionUs=="object"&&(e.clipPositionUs=new $util.LongBits(t.clipPositionUs.low>>>0,t.clipPositionUs.high>>>0).toNumber())),t.clipDurationUs!=null&&($util.Long?(e.clipDurationUs=$util.Long.fromValue(t.clipDurationUs)).unsigned=!1:typeof t.clipDurationUs=="string"?e.clipDurationUs=parseInt(t.clipDurationUs,10):typeof t.clipDurationUs=="number"?e.clipDurationUs=t.clipDurationUs:typeof t.clipDurationUs=="object"&&(e.clipDurationUs=new $util.LongBits(t.clipDurationUs.low>>>0,t.clipDurationUs.high>>>0).toNumber())),t.preroll!=null&&(e.preroll=t.preroll>>>0),t.postroll!=null&&(e.postroll=t.postroll>>>0),t.metadata!=null){if(typeof t.metadata!="object")throw TypeError(".sesame.v1.status.TransportEvent.metadata: object expected");e.metadata=$root.sesame.v1.common.TransportMetadata.fromObject(t.metadata)}return e},i.toObject=function(t,e){e||(e={});let n={};if(e.defaults){if(n.sourceId="",n.userId="",n.uri="",n.state=e.enums===String?"SOURCE_TRANSPORT_STATE_STOPPED":0,$util.Long){let s=new $util.Long(0,0,!1);n.durationUs=e.longs===String?s.toString():e.longs===Number?s.toNumber():s}else n.durationUs=e.longs===String?"0":0;if($util.Long){let s=new $util.Long(0,0,!1);n.positionUs=e.longs===String?s.toString():e.longs===Number?s.toNumber():s}else n.positionUs=e.longs===String?"0":0;if($util.Long){let s=new $util.Long(0,0,!1);n.materialPositionUs=e.longs===String?s.toString():e.longs===Number?s.toNumber():s}else n.materialPositionUs=e.longs===String?"0":0;if($util.Long){let s=new $util.Long(0,0,!1);n.userTimeUs=e.longs===String?s.toString():e.longs===Number?s.toNumber():s}else n.userTimeUs=e.longs===String?"0":0;if(n.speed=0,n.userPlaylistId="",n.playlistIndex=0,n.playlistLength=0,$util.Long){let s=new $util.Long(0,0,!0);n.clipId=e.longs===String?s.toString():e.longs===Number?s.toNumber():s}else n.clipId=e.longs===String?"0":0;if($util.Long){let s=new $util.Long(0,0,!1);n.clipPositionUs=e.longs===String?s.toString():e.longs===Number?s.toNumber():s}else n.clipPositionUs=e.longs===String?"0":0;if($util.Long){let s=new $util.Long(0,0,!1);n.clipDurationUs=e.longs===String?s.toString():e.longs===Number?s.toNumber():s}else n.clipDurationUs=e.longs===String?"0":0;n.preroll=0,n.postroll=0,n.metadata=null}return t.sourceId!=null&&t.hasOwnProperty("sourceId")&&(n.sourceId=t.sourceId),t.userId!=null&&t.hasOwnProperty("userId")&&(n.userId=t.userId),t.uri!=null&&t.hasOwnProperty("uri")&&(n.uri=t.uri),t.state!=null&&t.hasOwnProperty("state")&&(n.state=e.enums===String?$root.sesame.v1.sources.SourceTransportState[t.state]===void 0?t.state:$root.sesame.v1.sources.SourceTransportState[t.state]:t.state),t.durationUs!=null&&t.hasOwnProperty("durationUs")&&(typeof t.durationUs=="number"?n.durationUs=e.longs===String?String(t.durationUs):t.durationUs:n.durationUs=e.longs===String?$util.Long.prototype.toString.call(t.durationUs):e.longs===Number?new $util.LongBits(t.durationUs.low>>>0,t.durationUs.high>>>0).toNumber():t.durationUs),t.positionUs!=null&&t.hasOwnProperty("positionUs")&&(typeof t.positionUs=="number"?n.positionUs=e.longs===String?String(t.positionUs):t.positionUs:n.positionUs=e.longs===String?$util.Long.prototype.toString.call(t.positionUs):e.longs===Number?new $util.LongBits(t.positionUs.low>>>0,t.positionUs.high>>>0).toNumber():t.positionUs),t.materialPositionUs!=null&&t.hasOwnProperty("materialPositionUs")&&(typeof t.materialPositionUs=="number"?n.materialPositionUs=e.longs===String?String(t.materialPositionUs):t.materialPositionUs:n.materialPositionUs=e.longs===String?$util.Long.prototype.toString.call(t.materialPositionUs):e.longs===Number?new $util.LongBits(t.materialPositionUs.low>>>0,t.materialPositionUs.high>>>0).toNumber():t.materialPositionUs),t.userTimeUs!=null&&t.hasOwnProperty("userTimeUs")&&(typeof t.userTimeUs=="number"?n.userTimeUs=e.longs===String?String(t.userTimeUs):t.userTimeUs:n.userTimeUs=e.longs===String?$util.Long.prototype.toString.call(t.userTimeUs):e.longs===Number?new $util.LongBits(t.userTimeUs.low>>>0,t.userTimeUs.high>>>0).toNumber():t.userTimeUs),t.speed!=null&&t.hasOwnProperty("speed")&&(n.speed=e.json&&!isFinite(t.speed)?String(t.speed):t.speed),t.userPlaylistId!=null&&t.hasOwnProperty("userPlaylistId")&&(n.userPlaylistId=t.userPlaylistId),t.playlistIndex!=null&&t.hasOwnProperty("playlistIndex")&&(n.playlistIndex=t.playlistIndex),t.playlistLength!=null&&t.hasOwnProperty("playlistLength")&&(n.playlistLength=t.playlistLength),t.clipId!=null&&t.hasOwnProperty("clipId")&&(typeof t.clipId=="number"?n.clipId=e.longs===String?String(t.clipId):t.clipId:n.clipId=e.longs===String?$util.Long.prototype.toString.call(t.clipId):e.longs===Number?new $util.LongBits(t.clipId.low>>>0,t.clipId.high>>>0).toNumber(!0):t.clipId),t.clipPositionUs!=null&&t.hasOwnProperty("clipPositionUs")&&(typeof t.clipPositionUs=="number"?n.clipPositionUs=e.longs===String?String(t.clipPositionUs):t.clipPositionUs:n.clipPositionUs=e.longs===String?$util.Long.prototype.toString.call(t.clipPositionUs):e.longs===Number?new $util.LongBits(t.clipPositionUs.low>>>0,t.clipPositionUs.high>>>0).toNumber():t.clipPositionUs),t.clipDurationUs!=null&&t.hasOwnProperty("clipDurationUs")&&(typeof t.clipDurationUs=="number"?n.clipDurationUs=e.longs===String?String(t.clipDurationUs):t.clipDurationUs:n.clipDurationUs=e.longs===String?$util.Long.prototype.toString.call(t.clipDurationUs):e.longs===Number?new $util.LongBits(t.clipDurationUs.low>>>0,t.clipDurationUs.high>>>0).toNumber():t.clipDurationUs),t.preroll!=null&&t.hasOwnProperty("preroll")&&(n.preroll=t.preroll),t.postroll!=null&&t.hasOwnProperty("postroll")&&(n.postroll=t.postroll),t.metadata!=null&&t.hasOwnProperty("metadata")&&(n.metadata=$root.sesame.v1.common.TransportMetadata.toObject(t.metadata,e)),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.status.TransportEvent"},i}(),l.Event=function(){function i(t){if(t)for(let e=Object.keys(t),n=0;n<e.length;++n)t[e[n]]!=null&&(this[e[n]]=t[e[n]])}i.prototype.errorEvent=null,i.prototype.transportEvent=null,i.prototype.callbackEvent=null,i.prototype.jobEvent=null,i.prototype.recorderEvent=null;let r;return Object.defineProperty(i.prototype,"event",{get:$util.oneOfGetter(r=["errorEvent","transportEvent","callbackEvent","jobEvent","recorderEvent"]),set:$util.oneOfSetter(r)}),i.create=function(e){return new i(e)},i.encode=function(e,n){return n||(n=$Writer.create()),e.errorEvent!=null&&Object.hasOwnProperty.call(e,"errorEvent")&&$root.sesame.v1.status.ErrorEvent.encode(e.errorEvent,n.uint32(10).fork()).ldelim(),e.transportEvent!=null&&Object.hasOwnProperty.call(e,"transportEvent")&&$root.sesame.v1.status.TransportEvent.encode(e.transportEvent,n.uint32(18).fork()).ldelim(),e.callbackEvent!=null&&Object.hasOwnProperty.call(e,"callbackEvent")&&$root.sesame.v1.common.Callback.encode(e.callbackEvent,n.uint32(26).fork()).ldelim(),e.jobEvent!=null&&Object.hasOwnProperty.call(e,"jobEvent")&&$root.sesame.v1.jobs.Job.encode(e.jobEvent,n.uint32(34).fork()).ldelim(),e.recorderEvent!=null&&Object.hasOwnProperty.call(e,"recorderEvent")&&$root.sesame.v1.recorder.RecorderEvent.encode(e.recorderEvent,n.uint32(50).fork()).ldelim(),n},i.encodeDelimited=function(e,n){return this.encode(e,n).ldelim()},i.decode=function(e,n,s){e instanceof $Reader||(e=$Reader.create(e));let a=n===void 0?e.len:e.pos+n,U=new $root.sesame.v1.status.Event;for(;e.pos<a;){let u=e.uint32();if(u===s)break;switch(u>>>3){case 1:{U.errorEvent=$root.sesame.v1.status.ErrorEvent.decode(e,e.uint32());break}case 2:{U.transportEvent=$root.sesame.v1.status.TransportEvent.decode(e,e.uint32());break}case 3:{U.callbackEvent=$root.sesame.v1.common.Callback.decode(e,e.uint32());break}case 4:{U.jobEvent=$root.sesame.v1.jobs.Job.decode(e,e.uint32());break}case 6:{U.recorderEvent=$root.sesame.v1.recorder.RecorderEvent.decode(e,e.uint32());break}default:e.skipType(u&7);break}}return U},i.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},i.verify=function(e){if(typeof e!="object"||e===null)return"object expected";let n={};if(e.errorEvent!=null&&e.hasOwnProperty("errorEvent")){n.event=1;{let s=$root.sesame.v1.status.ErrorEvent.verify(e.errorEvent);if(s)return"errorEvent."+s}}if(e.transportEvent!=null&&e.hasOwnProperty("transportEvent")){if(n.event===1)return"event: multiple values";n.event=1;{let s=$root.sesame.v1.status.TransportEvent.verify(e.transportEvent);if(s)return"transportEvent."+s}}if(e.callbackEvent!=null&&e.hasOwnProperty("callbackEvent")){if(n.event===1)return"event: multiple values";n.event=1;{let s=$root.sesame.v1.common.Callback.verify(e.callbackEvent);if(s)return"callbackEvent."+s}}if(e.jobEvent!=null&&e.hasOwnProperty("jobEvent")){if(n.event===1)return"event: multiple values";n.event=1;{let s=$root.sesame.v1.jobs.Job.verify(e.jobEvent);if(s)return"jobEvent."+s}}if(e.recorderEvent!=null&&e.hasOwnProperty("recorderEvent")){if(n.event===1)return"event: multiple values";n.event=1;{let s=$root.sesame.v1.recorder.RecorderEvent.verify(e.recorderEvent);if(s)return"recorderEvent."+s}}return null},i.fromObject=function(e){if(e instanceof $root.sesame.v1.status.Event)return e;let n=new $root.sesame.v1.status.Event;if(e.errorEvent!=null){if(typeof e.errorEvent!="object")throw TypeError(".sesame.v1.status.Event.errorEvent: object expected");n.errorEvent=$root.sesame.v1.status.ErrorEvent.fromObject(e.errorEvent)}if(e.transportEvent!=null){if(typeof e.transportEvent!="object")throw TypeError(".sesame.v1.status.Event.transportEvent: object expected");n.transportEvent=$root.sesame.v1.status.TransportEvent.fromObject(e.transportEvent)}if(e.callbackEvent!=null){if(typeof e.callbackEvent!="object")throw TypeError(".sesame.v1.status.Event.callbackEvent: object expected");n.callbackEvent=$root.sesame.v1.common.Callback.fromObject(e.callbackEvent)}if(e.jobEvent!=null){if(typeof e.jobEvent!="object")throw TypeError(".sesame.v1.status.Event.jobEvent: object expected");n.jobEvent=$root.sesame.v1.jobs.Job.fromObject(e.jobEvent)}if(e.recorderEvent!=null){if(typeof e.recorderEvent!="object")throw TypeError(".sesame.v1.status.Event.recorderEvent: object expected");n.recorderEvent=$root.sesame.v1.recorder.RecorderEvent.fromObject(e.recorderEvent)}return n},i.toObject=function(e,n){n||(n={});let s={};return e.errorEvent!=null&&e.hasOwnProperty("errorEvent")&&(s.errorEvent=$root.sesame.v1.status.ErrorEvent.toObject(e.errorEvent,n),n.oneofs&&(s.event="errorEvent")),e.transportEvent!=null&&e.hasOwnProperty("transportEvent")&&(s.transportEvent=$root.sesame.v1.status.TransportEvent.toObject(e.transportEvent,n),n.oneofs&&(s.event="transportEvent")),e.callbackEvent!=null&&e.hasOwnProperty("callbackEvent")&&(s.callbackEvent=$root.sesame.v1.common.Callback.toObject(e.callbackEvent,n),n.oneofs&&(s.event="callbackEvent")),e.jobEvent!=null&&e.hasOwnProperty("jobEvent")&&(s.jobEvent=$root.sesame.v1.jobs.Job.toObject(e.jobEvent,n),n.oneofs&&(s.event="jobEvent")),e.recorderEvent!=null&&e.hasOwnProperty("recorderEvent")&&(s.recorderEvent=$root.sesame.v1.recorder.RecorderEvent.toObject(e.recorderEvent,n),n.oneofs&&(s.event="recorderEvent")),s},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(e){return e===void 0&&(e="type.googleapis.com"),e+"/sesame.v1.status.Event"},i}(),l.SubscriptionRequest=function(){function i(r){if(this.eventTopics=[],this.channels=[],r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.eventTopics=$util.emptyArray,i.prototype.channels=$util.emptyArray,i.create=function(t){return new i(t)},i.encode=function(t,e){if(e||(e=$Writer.create()),t.eventTopics!=null&&t.eventTopics.length){e.uint32(10).fork();for(let n=0;n<t.eventTopics.length;++n)e.int32(t.eventTopics[n]);e.ldelim()}if(t.channels!=null&&t.channels.length)for(let n=0;n<t.channels.length;++n)e.uint32(18).string(t.channels[n]);return e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.status.SubscriptionRequest;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{if(a.eventTopics&&a.eventTopics.length||(a.eventTopics=[]),(U&7)===2){let u=t.uint32()+t.pos;for(;t.pos<u;)a.eventTopics.push(t.int32())}else a.eventTopics.push(t.int32());break}case 2:{a.channels&&a.channels.length||(a.channels=[]),a.channels.push(t.string());break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.eventTopics!=null&&t.hasOwnProperty("eventTopics")){if(!Array.isArray(t.eventTopics))return"eventTopics: array expected";for(let e=0;e<t.eventTopics.length;++e)switch(t.eventTopics[e]){default:return"eventTopics: enum value[] expected";case 0:case 1:case 2:case 3:case 4:case 6:break}}if(t.channels!=null&&t.hasOwnProperty("channels")){if(!Array.isArray(t.channels))return"channels: array expected";for(let e=0;e<t.channels.length;++e)if(!$util.isString(t.channels[e]))return"channels: string[] expected"}return null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.status.SubscriptionRequest)return t;let e=new $root.sesame.v1.status.SubscriptionRequest;if(t.eventTopics){if(!Array.isArray(t.eventTopics))throw TypeError(".sesame.v1.status.SubscriptionRequest.eventTopics: array expected");e.eventTopics=[];for(let n=0;n<t.eventTopics.length;++n)switch(t.eventTopics[n]){default:if(typeof t.eventTopics[n]=="number"){e.eventTopics[n]=t.eventTopics[n];break}case"EVENT_TOPIC_UNSPECIFIED":case 0:e.eventTopics[n]=0;break;case"EVENT_TOPIC_ERROR":case 1:e.eventTopics[n]=1;break;case"EVENT_TOPIC_TRANSPORT":case 2:e.eventTopics[n]=2;break;case"EVENT_TOPIC_CALLBACK":case 3:e.eventTopics[n]=3;break;case"EVENT_TOPIC_JOB":case 4:e.eventTopics[n]=4;break;case"EVENT_TOPIC_RECORDER":case 6:e.eventTopics[n]=6;break}}if(t.channels){if(!Array.isArray(t.channels))throw TypeError(".sesame.v1.status.SubscriptionRequest.channels: array expected");e.channels=[];for(let n=0;n<t.channels.length;++n)e.channels[n]=String(t.channels[n])}return e},i.toObject=function(t,e){e||(e={});let n={};if((e.arrays||e.defaults)&&(n.eventTopics=[],n.channels=[]),t.eventTopics&&t.eventTopics.length){n.eventTopics=[];for(let s=0;s<t.eventTopics.length;++s)n.eventTopics[s]=e.enums===String?$root.sesame.v1.common.EventTopic[t.eventTopics[s]]===void 0?t.eventTopics[s]:$root.sesame.v1.common.EventTopic[t.eventTopics[s]]:t.eventTopics[s]}if(t.channels&&t.channels.length){n.channels=[];for(let s=0;s<t.channels.length;++s)n.channels[s]=t.channels[s]}return n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.status.SubscriptionRequest"},i}(),l}(),o.outputs=function(){const l={};return l.OutputType=function(){const i={},r=Object.create(i);return r[i[0]="OUTPUT_TYPE_UNSPECIFIED"]=0,r[i[1]="OUTPUT_TYPE_ENCODED_WEBSOCKET"]=1,r[i[2]="OUTPUT_TYPE_ENCODED_RECORDER"]=2,r[i[3]="OUTPUT_TYPE_DECKLINK"]=3,r[i[4]="OUTPUT_TYPE_SYSTEM_AUDIO"]=4,r[i[5]="OUTPUT_TYPE_ENCODED_SRT"]=5,r[i[6]="OUTPUT_TYPE_ENCODED_MOQ"]=6,r[i[7]="OUTPUT_TYPE_ENCODED_SUPER_SLOWMO_RECORDER"]=7,r}(),l.EncoderPreset=function(){const i={},r=Object.create(i);return r[i[0]="ENCODER_PRESET_UNSPECIFIED"]=0,r[i[1]="ENCODER_PRESET_LOW_LATENCY"]=1,r[i[2]="ENCODER_PRESET_LOW_LATENCY_IDR_ONLY"]=2,r[i[3]="ENCODER_PRESET_HIGH_QUALITY"]=3,r}(),l.RecorderType=function(){const i={},r=Object.create(i);return r[i[0]="RECORDER_TYPE_UNSPECIFIED"]=0,r[i[1]="RECORDER_TYPE_LIVE"]=1,r[i[2]="RECORDER_TYPE_CLIPS"]=2,r}(),l.EncoderConfig=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.codec=0,i.prototype.preset=0,i.prototype.bitrateKbps=0,i.prototype.keyframeInterval=0,i.prototype.width=0,i.prototype.height=0,i.prototype.fps=0,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.codec!=null&&Object.hasOwnProperty.call(t,"codec")&&e.uint32(8).int32(t.codec),t.preset!=null&&Object.hasOwnProperty.call(t,"preset")&&e.uint32(16).int32(t.preset),t.bitrateKbps!=null&&Object.hasOwnProperty.call(t,"bitrateKbps")&&e.uint32(24).uint32(t.bitrateKbps),t.keyframeInterval!=null&&Object.hasOwnProperty.call(t,"keyframeInterval")&&e.uint32(32).uint32(t.keyframeInterval),t.width!=null&&Object.hasOwnProperty.call(t,"width")&&e.uint32(40).uint32(t.width),t.height!=null&&Object.hasOwnProperty.call(t,"height")&&e.uint32(48).uint32(t.height),t.fps!=null&&Object.hasOwnProperty.call(t,"fps")&&e.uint32(61).float(t.fps),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.outputs.EncoderConfig;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.codec=t.int32();break}case 2:{a.preset=t.int32();break}case 3:{a.bitrateKbps=t.uint32();break}case 4:{a.keyframeInterval=t.uint32();break}case 5:{a.width=t.uint32();break}case 6:{a.height=t.uint32();break}case 7:{a.fps=t.float();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.codec!=null&&t.hasOwnProperty("codec"))switch(t.codec){default:return"codec: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 64:case 65:case 66:case 67:break}if(t.preset!=null&&t.hasOwnProperty("preset"))switch(t.preset){default:return"preset: enum value expected";case 0:case 1:case 2:case 3:break}return t.bitrateKbps!=null&&t.hasOwnProperty("bitrateKbps")&&!$util.isInteger(t.bitrateKbps)?"bitrateKbps: integer expected":t.keyframeInterval!=null&&t.hasOwnProperty("keyframeInterval")&&!$util.isInteger(t.keyframeInterval)?"keyframeInterval: integer expected":t.width!=null&&t.hasOwnProperty("width")&&!$util.isInteger(t.width)?"width: integer expected":t.height!=null&&t.hasOwnProperty("height")&&!$util.isInteger(t.height)?"height: integer expected":t.fps!=null&&t.hasOwnProperty("fps")&&typeof t.fps!="number"?"fps: number expected":null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.outputs.EncoderConfig)return t;let e=new $root.sesame.v1.outputs.EncoderConfig;switch(t.codec){default:if(typeof t.codec=="number"){e.codec=t.codec;break}break;case"CODEC_TYPE_UNSPECIFIED":case 0:e.codec=0;break;case"CODEC_TYPE_VIDEO_VP8":case 1:e.codec=1;break;case"CODEC_TYPE_VIDEO_VP9":case 2:e.codec=2;break;case"CODEC_TYPE_VIDEO_AVC":case 3:e.codec=3;break;case"CODEC_TYPE_VIDEO_HEVC":case 4:e.codec=4;break;case"CODEC_TYPE_VIDEO_AV1":case 5:e.codec=5;break;case"CODEC_TYPE_VIDEO_PRORES":case 6:e.codec=6;break;case"CODEC_TYPE_VIDEO_DNXHR":case 7:e.codec=7;break;case"CODEC_TYPE_AUDIO_OPUS":case 64:e.codec=64;break;case"CODEC_TYPE_AUDIO_AAC":case 65:e.codec=65;break;case"CODEC_TYPE_AUDIO_PCM":case 66:e.codec=66;break;case"CODEC_TYPE_AUDIO_PCM_S24LE":case 67:e.codec=67;break}switch(t.preset){default:if(typeof t.preset=="number"){e.preset=t.preset;break}break;case"ENCODER_PRESET_UNSPECIFIED":case 0:e.preset=0;break;case"ENCODER_PRESET_LOW_LATENCY":case 1:e.preset=1;break;case"ENCODER_PRESET_LOW_LATENCY_IDR_ONLY":case 2:e.preset=2;break;case"ENCODER_PRESET_HIGH_QUALITY":case 3:e.preset=3;break}return t.bitrateKbps!=null&&(e.bitrateKbps=t.bitrateKbps>>>0),t.keyframeInterval!=null&&(e.keyframeInterval=t.keyframeInterval>>>0),t.width!=null&&(e.width=t.width>>>0),t.height!=null&&(e.height=t.height>>>0),t.fps!=null&&(e.fps=Number(t.fps)),e},i.toObject=function(t,e){e||(e={});let n={};return e.defaults&&(n.codec=e.enums===String?"CODEC_TYPE_UNSPECIFIED":0,n.preset=e.enums===String?"ENCODER_PRESET_UNSPECIFIED":0,n.bitrateKbps=0,n.keyframeInterval=0,n.width=0,n.height=0,n.fps=0),t.codec!=null&&t.hasOwnProperty("codec")&&(n.codec=e.enums===String?$root.sesame.v1.common.CodecType[t.codec]===void 0?t.codec:$root.sesame.v1.common.CodecType[t.codec]:t.codec),t.preset!=null&&t.hasOwnProperty("preset")&&(n.preset=e.enums===String?$root.sesame.v1.outputs.EncoderPreset[t.preset]===void 0?t.preset:$root.sesame.v1.outputs.EncoderPreset[t.preset]:t.preset),t.bitrateKbps!=null&&t.hasOwnProperty("bitrateKbps")&&(n.bitrateKbps=t.bitrateKbps),t.keyframeInterval!=null&&t.hasOwnProperty("keyframeInterval")&&(n.keyframeInterval=t.keyframeInterval),t.width!=null&&t.hasOwnProperty("width")&&(n.width=t.width),t.height!=null&&t.hasOwnProperty("height")&&(n.height=t.height),t.fps!=null&&t.hasOwnProperty("fps")&&(n.fps=e.json&&!isFinite(t.fps)?String(t.fps):t.fps),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.outputs.EncoderConfig"},i}(),l.DecklinkOutputConfig=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.deviceIndex=0,i.prototype.videoFormat=0,i.prototype.keyAndFill=!1,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.deviceIndex!=null&&Object.hasOwnProperty.call(t,"deviceIndex")&&e.uint32(8).uint32(t.deviceIndex),t.videoFormat!=null&&Object.hasOwnProperty.call(t,"videoFormat")&&e.uint32(16).int32(t.videoFormat),t.keyAndFill!=null&&Object.hasOwnProperty.call(t,"keyAndFill")&&e.uint32(24).bool(t.keyAndFill),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.outputs.DecklinkOutputConfig;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.deviceIndex=t.uint32();break}case 2:{a.videoFormat=t.int32();break}case 3:{a.keyAndFill=t.bool();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.deviceIndex!=null&&t.hasOwnProperty("deviceIndex")&&!$util.isInteger(t.deviceIndex))return"deviceIndex: integer expected";if(t.videoFormat!=null&&t.hasOwnProperty("videoFormat"))switch(t.videoFormat){default:return"videoFormat: enum value expected";case 0:case 1:case 2:case 3:case 4:break}return t.keyAndFill!=null&&t.hasOwnProperty("keyAndFill")&&typeof t.keyAndFill!="boolean"?"keyAndFill: boolean expected":null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.outputs.DecklinkOutputConfig)return t;let e=new $root.sesame.v1.outputs.DecklinkOutputConfig;switch(t.deviceIndex!=null&&(e.deviceIndex=t.deviceIndex>>>0),t.videoFormat){default:if(typeof t.videoFormat=="number"){e.videoFormat=t.videoFormat;break}break;case"VIDEO_FORMAT_UNSPECIFIED":case 0:e.videoFormat=0;break;case"VIDEO_FORMAT_1080_50I":case 1:e.videoFormat=1;break;case"VIDEO_FORMAT_1080_50P":case 2:e.videoFormat=2;break;case"VIDEO_FORMAT_1080_60I":case 3:e.videoFormat=3;break;case"VIDEO_FORMAT_1080_60P":case 4:e.videoFormat=4;break}return t.keyAndFill!=null&&(e.keyAndFill=!!t.keyAndFill),e},i.toObject=function(t,e){e||(e={});let n={};return e.defaults&&(n.deviceIndex=0,n.videoFormat=e.enums===String?"VIDEO_FORMAT_UNSPECIFIED":0,n.keyAndFill=!1),t.deviceIndex!=null&&t.hasOwnProperty("deviceIndex")&&(n.deviceIndex=t.deviceIndex),t.videoFormat!=null&&t.hasOwnProperty("videoFormat")&&(n.videoFormat=e.enums===String?$root.sesame.v1.common.VideoFormat[t.videoFormat]===void 0?t.videoFormat:$root.sesame.v1.common.VideoFormat[t.videoFormat]:t.videoFormat),t.keyAndFill!=null&&t.hasOwnProperty("keyAndFill")&&(n.keyAndFill=t.keyAndFill),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.outputs.DecklinkOutputConfig"},i}(),l.EncodedWebSocketOutputConfig=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.channel="",i.prototype.encoder=null,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.channel!=null&&Object.hasOwnProperty.call(t,"channel")&&e.uint32(10).string(t.channel),t.encoder!=null&&Object.hasOwnProperty.call(t,"encoder")&&$root.sesame.v1.outputs.EncoderConfig.encode(t.encoder,e.uint32(18).fork()).ldelim(),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.outputs.EncodedWebSocketOutputConfig;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.channel=t.string();break}case 2:{a.encoder=$root.sesame.v1.outputs.EncoderConfig.decode(t,t.uint32());break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.channel!=null&&t.hasOwnProperty("channel")&&!$util.isString(t.channel))return"channel: string expected";if(t.encoder!=null&&t.hasOwnProperty("encoder")){let e=$root.sesame.v1.outputs.EncoderConfig.verify(t.encoder);if(e)return"encoder."+e}return null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.outputs.EncodedWebSocketOutputConfig)return t;let e=new $root.sesame.v1.outputs.EncodedWebSocketOutputConfig;if(t.channel!=null&&(e.channel=String(t.channel)),t.encoder!=null){if(typeof t.encoder!="object")throw TypeError(".sesame.v1.outputs.EncodedWebSocketOutputConfig.encoder: object expected");e.encoder=$root.sesame.v1.outputs.EncoderConfig.fromObject(t.encoder)}return e},i.toObject=function(t,e){e||(e={});let n={};return e.defaults&&(n.channel="",n.encoder=null),t.channel!=null&&t.hasOwnProperty("channel")&&(n.channel=t.channel),t.encoder!=null&&t.hasOwnProperty("encoder")&&(n.encoder=$root.sesame.v1.outputs.EncoderConfig.toObject(t.encoder,e)),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.outputs.EncodedWebSocketOutputConfig"},i}(),l.EncodedRecorderOutputConfig=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.encoder=null,i.prototype.filename="",i.prototype.sizeGb=0,i.prototype.groupId="",i.prototype.recorderType=0,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.encoder!=null&&Object.hasOwnProperty.call(t,"encoder")&&$root.sesame.v1.outputs.EncoderConfig.encode(t.encoder,e.uint32(10).fork()).ldelim(),t.filename!=null&&Object.hasOwnProperty.call(t,"filename")&&e.uint32(18).string(t.filename),t.sizeGb!=null&&Object.hasOwnProperty.call(t,"sizeGb")&&e.uint32(24).uint32(t.sizeGb),t.groupId!=null&&Object.hasOwnProperty.call(t,"groupId")&&e.uint32(34).string(t.groupId),t.recorderType!=null&&Object.hasOwnProperty.call(t,"recorderType")&&e.uint32(40).int32(t.recorderType),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.outputs.EncodedRecorderOutputConfig;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.encoder=$root.sesame.v1.outputs.EncoderConfig.decode(t,t.uint32());break}case 2:{a.filename=t.string();break}case 3:{a.sizeGb=t.uint32();break}case 4:{a.groupId=t.string();break}case 5:{a.recorderType=t.int32();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.encoder!=null&&t.hasOwnProperty("encoder")){let e=$root.sesame.v1.outputs.EncoderConfig.verify(t.encoder);if(e)return"encoder."+e}if(t.filename!=null&&t.hasOwnProperty("filename")&&!$util.isString(t.filename))return"filename: string expected";if(t.sizeGb!=null&&t.hasOwnProperty("sizeGb")&&!$util.isInteger(t.sizeGb))return"sizeGb: integer expected";if(t.groupId!=null&&t.hasOwnProperty("groupId")&&!$util.isString(t.groupId))return"groupId: string expected";if(t.recorderType!=null&&t.hasOwnProperty("recorderType"))switch(t.recorderType){default:return"recorderType: enum value expected";case 0:case 1:case 2:break}return null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.outputs.EncodedRecorderOutputConfig)return t;let e=new $root.sesame.v1.outputs.EncodedRecorderOutputConfig;if(t.encoder!=null){if(typeof t.encoder!="object")throw TypeError(".sesame.v1.outputs.EncodedRecorderOutputConfig.encoder: object expected");e.encoder=$root.sesame.v1.outputs.EncoderConfig.fromObject(t.encoder)}switch(t.filename!=null&&(e.filename=String(t.filename)),t.sizeGb!=null&&(e.sizeGb=t.sizeGb>>>0),t.groupId!=null&&(e.groupId=String(t.groupId)),t.recorderType){default:if(typeof t.recorderType=="number"){e.recorderType=t.recorderType;break}break;case"RECORDER_TYPE_UNSPECIFIED":case 0:e.recorderType=0;break;case"RECORDER_TYPE_LIVE":case 1:e.recorderType=1;break;case"RECORDER_TYPE_CLIPS":case 2:e.recorderType=2;break}return e},i.toObject=function(t,e){e||(e={});let n={};return e.defaults&&(n.encoder=null,n.filename="",n.sizeGb=0,n.groupId="",n.recorderType=e.enums===String?"RECORDER_TYPE_UNSPECIFIED":0),t.encoder!=null&&t.hasOwnProperty("encoder")&&(n.encoder=$root.sesame.v1.outputs.EncoderConfig.toObject(t.encoder,e)),t.filename!=null&&t.hasOwnProperty("filename")&&(n.filename=t.filename),t.sizeGb!=null&&t.hasOwnProperty("sizeGb")&&(n.sizeGb=t.sizeGb),t.groupId!=null&&t.hasOwnProperty("groupId")&&(n.groupId=t.groupId),t.recorderType!=null&&t.hasOwnProperty("recorderType")&&(n.recorderType=e.enums===String?$root.sesame.v1.outputs.RecorderType[t.recorderType]===void 0?t.recorderType:$root.sesame.v1.outputs.RecorderType[t.recorderType]:t.recorderType),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.outputs.EncodedRecorderOutputConfig"},i}(),l.EncodedSuperSlowMoRecorderOutputConfig=function(){function i(r){if(this.compositionIds=[],this.sourceIds=[],r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.encoder=null,i.prototype.filename="",i.prototype.sizeGb=0,i.prototype.groupId="",i.prototype.recorderType=0,i.prototype.compositionIds=$util.emptyArray,i.prototype.sourceIds=$util.emptyArray,i.create=function(t){return new i(t)},i.encode=function(t,e){if(e||(e=$Writer.create()),t.encoder!=null&&Object.hasOwnProperty.call(t,"encoder")&&$root.sesame.v1.outputs.EncoderConfig.encode(t.encoder,e.uint32(10).fork()).ldelim(),t.filename!=null&&Object.hasOwnProperty.call(t,"filename")&&e.uint32(18).string(t.filename),t.sizeGb!=null&&Object.hasOwnProperty.call(t,"sizeGb")&&e.uint32(24).uint32(t.sizeGb),t.groupId!=null&&Object.hasOwnProperty.call(t,"groupId")&&e.uint32(34).string(t.groupId),t.recorderType!=null&&Object.hasOwnProperty.call(t,"recorderType")&&e.uint32(40).int32(t.recorderType),t.compositionIds!=null&&t.compositionIds.length)for(let n=0;n<t.compositionIds.length;++n)e.uint32(50).string(t.compositionIds[n]);if(t.sourceIds!=null&&t.sourceIds.length)for(let n=0;n<t.sourceIds.length;++n)e.uint32(58).string(t.sourceIds[n]);return e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.outputs.EncodedSuperSlowMoRecorderOutputConfig;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.encoder=$root.sesame.v1.outputs.EncoderConfig.decode(t,t.uint32());break}case 2:{a.filename=t.string();break}case 3:{a.sizeGb=t.uint32();break}case 4:{a.groupId=t.string();break}case 5:{a.recorderType=t.int32();break}case 6:{a.compositionIds&&a.compositionIds.length||(a.compositionIds=[]),a.compositionIds.push(t.string());break}case 7:{a.sourceIds&&a.sourceIds.length||(a.sourceIds=[]),a.sourceIds.push(t.string());break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.encoder!=null&&t.hasOwnProperty("encoder")){let e=$root.sesame.v1.outputs.EncoderConfig.verify(t.encoder);if(e)return"encoder."+e}if(t.filename!=null&&t.hasOwnProperty("filename")&&!$util.isString(t.filename))return"filename: string expected";if(t.sizeGb!=null&&t.hasOwnProperty("sizeGb")&&!$util.isInteger(t.sizeGb))return"sizeGb: integer expected";if(t.groupId!=null&&t.hasOwnProperty("groupId")&&!$util.isString(t.groupId))return"groupId: string expected";if(t.recorderType!=null&&t.hasOwnProperty("recorderType"))switch(t.recorderType){default:return"recorderType: enum value expected";case 0:case 1:case 2:break}if(t.compositionIds!=null&&t.hasOwnProperty("compositionIds")){if(!Array.isArray(t.compositionIds))return"compositionIds: array expected";for(let e=0;e<t.compositionIds.length;++e)if(!$util.isString(t.compositionIds[e]))return"compositionIds: string[] expected"}if(t.sourceIds!=null&&t.hasOwnProperty("sourceIds")){if(!Array.isArray(t.sourceIds))return"sourceIds: array expected";for(let e=0;e<t.sourceIds.length;++e)if(!$util.isString(t.sourceIds[e]))return"sourceIds: string[] expected"}return null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.outputs.EncodedSuperSlowMoRecorderOutputConfig)return t;let e=new $root.sesame.v1.outputs.EncodedSuperSlowMoRecorderOutputConfig;if(t.encoder!=null){if(typeof t.encoder!="object")throw TypeError(".sesame.v1.outputs.EncodedSuperSlowMoRecorderOutputConfig.encoder: object expected");e.encoder=$root.sesame.v1.outputs.EncoderConfig.fromObject(t.encoder)}switch(t.filename!=null&&(e.filename=String(t.filename)),t.sizeGb!=null&&(e.sizeGb=t.sizeGb>>>0),t.groupId!=null&&(e.groupId=String(t.groupId)),t.recorderType){default:if(typeof t.recorderType=="number"){e.recorderType=t.recorderType;break}break;case"RECORDER_TYPE_UNSPECIFIED":case 0:e.recorderType=0;break;case"RECORDER_TYPE_LIVE":case 1:e.recorderType=1;break;case"RECORDER_TYPE_CLIPS":case 2:e.recorderType=2;break}if(t.compositionIds){if(!Array.isArray(t.compositionIds))throw TypeError(".sesame.v1.outputs.EncodedSuperSlowMoRecorderOutputConfig.compositionIds: array expected");e.compositionIds=[];for(let n=0;n<t.compositionIds.length;++n)e.compositionIds[n]=String(t.compositionIds[n])}if(t.sourceIds){if(!Array.isArray(t.sourceIds))throw TypeError(".sesame.v1.outputs.EncodedSuperSlowMoRecorderOutputConfig.sourceIds: array expected");e.sourceIds=[];for(let n=0;n<t.sourceIds.length;++n)e.sourceIds[n]=String(t.sourceIds[n])}return e},i.toObject=function(t,e){e||(e={});let n={};if((e.arrays||e.defaults)&&(n.compositionIds=[],n.sourceIds=[]),e.defaults&&(n.encoder=null,n.filename="",n.sizeGb=0,n.groupId="",n.recorderType=e.enums===String?"RECORDER_TYPE_UNSPECIFIED":0),t.encoder!=null&&t.hasOwnProperty("encoder")&&(n.encoder=$root.sesame.v1.outputs.EncoderConfig.toObject(t.encoder,e)),t.filename!=null&&t.hasOwnProperty("filename")&&(n.filename=t.filename),t.sizeGb!=null&&t.hasOwnProperty("sizeGb")&&(n.sizeGb=t.sizeGb),t.groupId!=null&&t.hasOwnProperty("groupId")&&(n.groupId=t.groupId),t.recorderType!=null&&t.hasOwnProperty("recorderType")&&(n.recorderType=e.enums===String?$root.sesame.v1.outputs.RecorderType[t.recorderType]===void 0?t.recorderType:$root.sesame.v1.outputs.RecorderType[t.recorderType]:t.recorderType),t.compositionIds&&t.compositionIds.length){n.compositionIds=[];for(let s=0;s<t.compositionIds.length;++s)n.compositionIds[s]=t.compositionIds[s]}if(t.sourceIds&&t.sourceIds.length){n.sourceIds=[];for(let s=0;s<t.sourceIds.length;++s)n.sourceIds[s]=t.sourceIds[s]}return n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.outputs.EncodedSuperSlowMoRecorderOutputConfig"},i}(),l.EncodedSrtOutputConfig=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.url="",i.prototype.encoder=null,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.url!=null&&Object.hasOwnProperty.call(t,"url")&&e.uint32(10).string(t.url),t.encoder!=null&&Object.hasOwnProperty.call(t,"encoder")&&$root.sesame.v1.outputs.EncoderConfig.encode(t.encoder,e.uint32(18).fork()).ldelim(),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.outputs.EncodedSrtOutputConfig;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.url=t.string();break}case 2:{a.encoder=$root.sesame.v1.outputs.EncoderConfig.decode(t,t.uint32());break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.url!=null&&t.hasOwnProperty("url")&&!$util.isString(t.url))return"url: string expected";if(t.encoder!=null&&t.hasOwnProperty("encoder")){let e=$root.sesame.v1.outputs.EncoderConfig.verify(t.encoder);if(e)return"encoder."+e}return null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.outputs.EncodedSrtOutputConfig)return t;let e=new $root.sesame.v1.outputs.EncodedSrtOutputConfig;if(t.url!=null&&(e.url=String(t.url)),t.encoder!=null){if(typeof t.encoder!="object")throw TypeError(".sesame.v1.outputs.EncodedSrtOutputConfig.encoder: object expected");e.encoder=$root.sesame.v1.outputs.EncoderConfig.fromObject(t.encoder)}return e},i.toObject=function(t,e){e||(e={});let n={};return e.defaults&&(n.url="",n.encoder=null),t.url!=null&&t.hasOwnProperty("url")&&(n.url=t.url),t.encoder!=null&&t.hasOwnProperty("encoder")&&(n.encoder=$root.sesame.v1.outputs.EncoderConfig.toObject(t.encoder,e)),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.outputs.EncodedSrtOutputConfig"},i}(),l.EncodedMoqOutputConfig=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.encoder=null,i.prototype.url="",i.prototype.broadcast="",i.prototype.key="",i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.encoder!=null&&Object.hasOwnProperty.call(t,"encoder")&&$root.sesame.v1.outputs.EncoderConfig.encode(t.encoder,e.uint32(10).fork()).ldelim(),t.url!=null&&Object.hasOwnProperty.call(t,"url")&&e.uint32(18).string(t.url),t.broadcast!=null&&Object.hasOwnProperty.call(t,"broadcast")&&e.uint32(26).string(t.broadcast),t.key!=null&&Object.hasOwnProperty.call(t,"key")&&e.uint32(34).string(t.key),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.outputs.EncodedMoqOutputConfig;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.encoder=$root.sesame.v1.outputs.EncoderConfig.decode(t,t.uint32());break}case 2:{a.url=t.string();break}case 3:{a.broadcast=t.string();break}case 4:{a.key=t.string();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.encoder!=null&&t.hasOwnProperty("encoder")){let e=$root.sesame.v1.outputs.EncoderConfig.verify(t.encoder);if(e)return"encoder."+e}return t.url!=null&&t.hasOwnProperty("url")&&!$util.isString(t.url)?"url: string expected":t.broadcast!=null&&t.hasOwnProperty("broadcast")&&!$util.isString(t.broadcast)?"broadcast: string expected":t.key!=null&&t.hasOwnProperty("key")&&!$util.isString(t.key)?"key: string expected":null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.outputs.EncodedMoqOutputConfig)return t;let e=new $root.sesame.v1.outputs.EncodedMoqOutputConfig;if(t.encoder!=null){if(typeof t.encoder!="object")throw TypeError(".sesame.v1.outputs.EncodedMoqOutputConfig.encoder: object expected");e.encoder=$root.sesame.v1.outputs.EncoderConfig.fromObject(t.encoder)}return t.url!=null&&(e.url=String(t.url)),t.broadcast!=null&&(e.broadcast=String(t.broadcast)),t.key!=null&&(e.key=String(t.key)),e},i.toObject=function(t,e){e||(e={});let n={};return e.defaults&&(n.encoder=null,n.url="",n.broadcast="",n.key=""),t.encoder!=null&&t.hasOwnProperty("encoder")&&(n.encoder=$root.sesame.v1.outputs.EncoderConfig.toObject(t.encoder,e)),t.url!=null&&t.hasOwnProperty("url")&&(n.url=t.url),t.broadcast!=null&&t.hasOwnProperty("broadcast")&&(n.broadcast=t.broadcast),t.key!=null&&t.hasOwnProperty("key")&&(n.key=t.key),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.outputs.EncodedMoqOutputConfig"},i}(),l.SystemAudioOutputConfig=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.deviceName="",i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.deviceName!=null&&Object.hasOwnProperty.call(t,"deviceName")&&e.uint32(10).string(t.deviceName),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.outputs.SystemAudioOutputConfig;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.deviceName=t.string();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.deviceName!=null&&t.hasOwnProperty("deviceName")&&!$util.isString(t.deviceName)?"deviceName: string expected":null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.outputs.SystemAudioOutputConfig)return t;let e=new $root.sesame.v1.outputs.SystemAudioOutputConfig;return t.deviceName!=null&&(e.deviceName=String(t.deviceName)),e},i.toObject=function(t,e){e||(e={});let n={};return e.defaults&&(n.deviceName=""),t.deviceName!=null&&t.hasOwnProperty("deviceName")&&(n.deviceName=t.deviceName),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.outputs.SystemAudioOutputConfig"},i}(),l.OutputAddRequest=function(){function i(t){if(this.audioMixIds=[],t)for(let e=Object.keys(t),n=0;n<e.length;++n)t[e[n]]!=null&&(this[e[n]]=t[e[n]])}i.prototype.id="",i.prototype.compositionId="",i.prototype.audioMixIds=$util.emptyArray,i.prototype.useAsClock=!1,i.prototype.websocket=null,i.prototype.recorder=null,i.prototype.superSlowmoRecorder=null,i.prototype.srt=null,i.prototype.moq=null,i.prototype.decklink=null,i.prototype.systemAudio=null;let r;return Object.defineProperty(i.prototype,"output",{get:$util.oneOfGetter(r=["websocket","recorder","superSlowmoRecorder","srt","moq","decklink","systemAudio"]),set:$util.oneOfSetter(r)}),i.create=function(e){return new i(e)},i.encode=function(e,n){if(n||(n=$Writer.create()),e.id!=null&&Object.hasOwnProperty.call(e,"id")&&n.uint32(10).string(e.id),e.compositionId!=null&&Object.hasOwnProperty.call(e,"compositionId")&&n.uint32(18).string(e.compositionId),e.audioMixIds!=null&&e.audioMixIds.length)for(let s=0;s<e.audioMixIds.length;++s)n.uint32(26).string(e.audioMixIds[s]);return e.useAsClock!=null&&Object.hasOwnProperty.call(e,"useAsClock")&&n.uint32(32).bool(e.useAsClock),e.websocket!=null&&Object.hasOwnProperty.call(e,"websocket")&&$root.sesame.v1.outputs.EncodedWebSocketOutputConfig.encode(e.websocket,n.uint32(82).fork()).ldelim(),e.recorder!=null&&Object.hasOwnProperty.call(e,"recorder")&&$root.sesame.v1.outputs.EncodedRecorderOutputConfig.encode(e.recorder,n.uint32(90).fork()).ldelim(),e.superSlowmoRecorder!=null&&Object.hasOwnProperty.call(e,"superSlowmoRecorder")&&$root.sesame.v1.outputs.EncodedSuperSlowMoRecorderOutputConfig.encode(e.superSlowmoRecorder,n.uint32(98).fork()).ldelim(),e.srt!=null&&Object.hasOwnProperty.call(e,"srt")&&$root.sesame.v1.outputs.EncodedSrtOutputConfig.encode(e.srt,n.uint32(106).fork()).ldelim(),e.moq!=null&&Object.hasOwnProperty.call(e,"moq")&&$root.sesame.v1.outputs.EncodedMoqOutputConfig.encode(e.moq,n.uint32(114).fork()).ldelim(),e.decklink!=null&&Object.hasOwnProperty.call(e,"decklink")&&$root.sesame.v1.outputs.DecklinkOutputConfig.encode(e.decklink,n.uint32(122).fork()).ldelim(),e.systemAudio!=null&&Object.hasOwnProperty.call(e,"systemAudio")&&$root.sesame.v1.outputs.SystemAudioOutputConfig.encode(e.systemAudio,n.uint32(130).fork()).ldelim(),n},i.encodeDelimited=function(e,n){return this.encode(e,n).ldelim()},i.decode=function(e,n,s){e instanceof $Reader||(e=$Reader.create(e));let a=n===void 0?e.len:e.pos+n,U=new $root.sesame.v1.outputs.OutputAddRequest;for(;e.pos<a;){let u=e.uint32();if(u===s)break;switch(u>>>3){case 1:{U.id=e.string();break}case 2:{U.compositionId=e.string();break}case 3:{U.audioMixIds&&U.audioMixIds.length||(U.audioMixIds=[]),U.audioMixIds.push(e.string());break}case 4:{U.useAsClock=e.bool();break}case 10:{U.websocket=$root.sesame.v1.outputs.EncodedWebSocketOutputConfig.decode(e,e.uint32());break}case 11:{U.recorder=$root.sesame.v1.outputs.EncodedRecorderOutputConfig.decode(e,e.uint32());break}case 12:{U.superSlowmoRecorder=$root.sesame.v1.outputs.EncodedSuperSlowMoRecorderOutputConfig.decode(e,e.uint32());break}case 13:{U.srt=$root.sesame.v1.outputs.EncodedSrtOutputConfig.decode(e,e.uint32());break}case 14:{U.moq=$root.sesame.v1.outputs.EncodedMoqOutputConfig.decode(e,e.uint32());break}case 15:{U.decklink=$root.sesame.v1.outputs.DecklinkOutputConfig.decode(e,e.uint32());break}case 16:{U.systemAudio=$root.sesame.v1.outputs.SystemAudioOutputConfig.decode(e,e.uint32());break}default:e.skipType(u&7);break}}return U},i.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},i.verify=function(e){if(typeof e!="object"||e===null)return"object expected";let n={};if(e.id!=null&&e.hasOwnProperty("id")&&!$util.isString(e.id))return"id: string expected";if(e.compositionId!=null&&e.hasOwnProperty("compositionId")&&!$util.isString(e.compositionId))return"compositionId: string expected";if(e.audioMixIds!=null&&e.hasOwnProperty("audioMixIds")){if(!Array.isArray(e.audioMixIds))return"audioMixIds: array expected";for(let s=0;s<e.audioMixIds.length;++s)if(!$util.isString(e.audioMixIds[s]))return"audioMixIds: string[] expected"}if(e.useAsClock!=null&&e.hasOwnProperty("useAsClock")&&typeof e.useAsClock!="boolean")return"useAsClock: boolean expected";if(e.websocket!=null&&e.hasOwnProperty("websocket")){n.output=1;{let s=$root.sesame.v1.outputs.EncodedWebSocketOutputConfig.verify(e.websocket);if(s)return"websocket."+s}}if(e.recorder!=null&&e.hasOwnProperty("recorder")){if(n.output===1)return"output: multiple values";n.output=1;{let s=$root.sesame.v1.outputs.EncodedRecorderOutputConfig.verify(e.recorder);if(s)return"recorder."+s}}if(e.superSlowmoRecorder!=null&&e.hasOwnProperty("superSlowmoRecorder")){if(n.output===1)return"output: multiple values";n.output=1;{let s=$root.sesame.v1.outputs.EncodedSuperSlowMoRecorderOutputConfig.verify(e.superSlowmoRecorder);if(s)return"superSlowmoRecorder."+s}}if(e.srt!=null&&e.hasOwnProperty("srt")){if(n.output===1)return"output: multiple values";n.output=1;{let s=$root.sesame.v1.outputs.EncodedSrtOutputConfig.verify(e.srt);if(s)return"srt."+s}}if(e.moq!=null&&e.hasOwnProperty("moq")){if(n.output===1)return"output: multiple values";n.output=1;{let s=$root.sesame.v1.outputs.EncodedMoqOutputConfig.verify(e.moq);if(s)return"moq."+s}}if(e.decklink!=null&&e.hasOwnProperty("decklink")){if(n.output===1)return"output: multiple values";n.output=1;{let s=$root.sesame.v1.outputs.DecklinkOutputConfig.verify(e.decklink);if(s)return"decklink."+s}}if(e.systemAudio!=null&&e.hasOwnProperty("systemAudio")){if(n.output===1)return"output: multiple values";n.output=1;{let s=$root.sesame.v1.outputs.SystemAudioOutputConfig.verify(e.systemAudio);if(s)return"systemAudio."+s}}return null},i.fromObject=function(e){if(e instanceof $root.sesame.v1.outputs.OutputAddRequest)return e;let n=new $root.sesame.v1.outputs.OutputAddRequest;if(e.id!=null&&(n.id=String(e.id)),e.compositionId!=null&&(n.compositionId=String(e.compositionId)),e.audioMixIds){if(!Array.isArray(e.audioMixIds))throw TypeError(".sesame.v1.outputs.OutputAddRequest.audioMixIds: array expected");n.audioMixIds=[];for(let s=0;s<e.audioMixIds.length;++s)n.audioMixIds[s]=String(e.audioMixIds[s])}if(e.useAsClock!=null&&(n.useAsClock=!!e.useAsClock),e.websocket!=null){if(typeof e.websocket!="object")throw TypeError(".sesame.v1.outputs.OutputAddRequest.websocket: object expected");n.websocket=$root.sesame.v1.outputs.EncodedWebSocketOutputConfig.fromObject(e.websocket)}if(e.recorder!=null){if(typeof e.recorder!="object")throw TypeError(".sesame.v1.outputs.OutputAddRequest.recorder: object expected");n.recorder=$root.sesame.v1.outputs.EncodedRecorderOutputConfig.fromObject(e.recorder)}if(e.superSlowmoRecorder!=null){if(typeof e.superSlowmoRecorder!="object")throw TypeError(".sesame.v1.outputs.OutputAddRequest.superSlowmoRecorder: object expected");n.superSlowmoRecorder=$root.sesame.v1.outputs.EncodedSuperSlowMoRecorderOutputConfig.fromObject(e.superSlowmoRecorder)}if(e.srt!=null){if(typeof e.srt!="object")throw TypeError(".sesame.v1.outputs.OutputAddRequest.srt: object expected");n.srt=$root.sesame.v1.outputs.EncodedSrtOutputConfig.fromObject(e.srt)}if(e.moq!=null){if(typeof e.moq!="object")throw TypeError(".sesame.v1.outputs.OutputAddRequest.moq: object expected");n.moq=$root.sesame.v1.outputs.EncodedMoqOutputConfig.fromObject(e.moq)}if(e.decklink!=null){if(typeof e.decklink!="object")throw TypeError(".sesame.v1.outputs.OutputAddRequest.decklink: object expected");n.decklink=$root.sesame.v1.outputs.DecklinkOutputConfig.fromObject(e.decklink)}if(e.systemAudio!=null){if(typeof e.systemAudio!="object")throw TypeError(".sesame.v1.outputs.OutputAddRequest.systemAudio: object expected");n.systemAudio=$root.sesame.v1.outputs.SystemAudioOutputConfig.fromObject(e.systemAudio)}return n},i.toObject=function(e,n){n||(n={});let s={};if((n.arrays||n.defaults)&&(s.audioMixIds=[]),n.defaults&&(s.id="",s.compositionId="",s.useAsClock=!1),e.id!=null&&e.hasOwnProperty("id")&&(s.id=e.id),e.compositionId!=null&&e.hasOwnProperty("compositionId")&&(s.compositionId=e.compositionId),e.audioMixIds&&e.audioMixIds.length){s.audioMixIds=[];for(let a=0;a<e.audioMixIds.length;++a)s.audioMixIds[a]=e.audioMixIds[a]}return e.useAsClock!=null&&e.hasOwnProperty("useAsClock")&&(s.useAsClock=e.useAsClock),e.websocket!=null&&e.hasOwnProperty("websocket")&&(s.websocket=$root.sesame.v1.outputs.EncodedWebSocketOutputConfig.toObject(e.websocket,n),n.oneofs&&(s.output="websocket")),e.recorder!=null&&e.hasOwnProperty("recorder")&&(s.recorder=$root.sesame.v1.outputs.EncodedRecorderOutputConfig.toObject(e.recorder,n),n.oneofs&&(s.output="recorder")),e.superSlowmoRecorder!=null&&e.hasOwnProperty("superSlowmoRecorder")&&(s.superSlowmoRecorder=$root.sesame.v1.outputs.EncodedSuperSlowMoRecorderOutputConfig.toObject(e.superSlowmoRecorder,n),n.oneofs&&(s.output="superSlowmoRecorder")),e.srt!=null&&e.hasOwnProperty("srt")&&(s.srt=$root.sesame.v1.outputs.EncodedSrtOutputConfig.toObject(e.srt,n),n.oneofs&&(s.output="srt")),e.moq!=null&&e.hasOwnProperty("moq")&&(s.moq=$root.sesame.v1.outputs.EncodedMoqOutputConfig.toObject(e.moq,n),n.oneofs&&(s.output="moq")),e.decklink!=null&&e.hasOwnProperty("decklink")&&(s.decklink=$root.sesame.v1.outputs.DecklinkOutputConfig.toObject(e.decklink,n),n.oneofs&&(s.output="decklink")),e.systemAudio!=null&&e.hasOwnProperty("systemAudio")&&(s.systemAudio=$root.sesame.v1.outputs.SystemAudioOutputConfig.toObject(e.systemAudio,n),n.oneofs&&(s.output="systemAudio")),s},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(e){return e===void 0&&(e="type.googleapis.com"),e+"/sesame.v1.outputs.OutputAddRequest"},i}(),l.OutputUpdateRequest=function(){function i(t){if(this.audioMixIds=[],t)for(let e=Object.keys(t),n=0;n<e.length;++n)t[e[n]]!=null&&(this[e[n]]=t[e[n]])}i.prototype.id="",i.prototype.compositionId="",i.prototype.audioMixIds=$util.emptyArray,i.prototype.useAsClock=!1,i.prototype.websocket=null,i.prototype.recorder=null,i.prototype.superSlowmoRecorder=null,i.prototype.srt=null,i.prototype.moq=null,i.prototype.decklink=null,i.prototype.systemAudio=null;let r;return Object.defineProperty(i.prototype,"output",{get:$util.oneOfGetter(r=["websocket","recorder","superSlowmoRecorder","srt","moq","decklink","systemAudio"]),set:$util.oneOfSetter(r)}),i.create=function(e){return new i(e)},i.encode=function(e,n){if(n||(n=$Writer.create()),e.id!=null&&Object.hasOwnProperty.call(e,"id")&&n.uint32(10).string(e.id),e.compositionId!=null&&Object.hasOwnProperty.call(e,"compositionId")&&n.uint32(18).string(e.compositionId),e.audioMixIds!=null&&e.audioMixIds.length)for(let s=0;s<e.audioMixIds.length;++s)n.uint32(26).string(e.audioMixIds[s]);return e.useAsClock!=null&&Object.hasOwnProperty.call(e,"useAsClock")&&n.uint32(32).bool(e.useAsClock),e.websocket!=null&&Object.hasOwnProperty.call(e,"websocket")&&$root.sesame.v1.outputs.EncodedWebSocketOutputConfig.encode(e.websocket,n.uint32(82).fork()).ldelim(),e.recorder!=null&&Object.hasOwnProperty.call(e,"recorder")&&$root.sesame.v1.outputs.EncodedRecorderOutputConfig.encode(e.recorder,n.uint32(90).fork()).ldelim(),e.superSlowmoRecorder!=null&&Object.hasOwnProperty.call(e,"superSlowmoRecorder")&&$root.sesame.v1.outputs.EncodedSuperSlowMoRecorderOutputConfig.encode(e.superSlowmoRecorder,n.uint32(98).fork()).ldelim(),e.srt!=null&&Object.hasOwnProperty.call(e,"srt")&&$root.sesame.v1.outputs.EncodedSrtOutputConfig.encode(e.srt,n.uint32(106).fork()).ldelim(),e.moq!=null&&Object.hasOwnProperty.call(e,"moq")&&$root.sesame.v1.outputs.EncodedMoqOutputConfig.encode(e.moq,n.uint32(114).fork()).ldelim(),e.decklink!=null&&Object.hasOwnProperty.call(e,"decklink")&&$root.sesame.v1.outputs.DecklinkOutputConfig.encode(e.decklink,n.uint32(122).fork()).ldelim(),e.systemAudio!=null&&Object.hasOwnProperty.call(e,"systemAudio")&&$root.sesame.v1.outputs.SystemAudioOutputConfig.encode(e.systemAudio,n.uint32(130).fork()).ldelim(),n},i.encodeDelimited=function(e,n){return this.encode(e,n).ldelim()},i.decode=function(e,n,s){e instanceof $Reader||(e=$Reader.create(e));let a=n===void 0?e.len:e.pos+n,U=new $root.sesame.v1.outputs.OutputUpdateRequest;for(;e.pos<a;){let u=e.uint32();if(u===s)break;switch(u>>>3){case 1:{U.id=e.string();break}case 2:{U.compositionId=e.string();break}case 3:{U.audioMixIds&&U.audioMixIds.length||(U.audioMixIds=[]),U.audioMixIds.push(e.string());break}case 4:{U.useAsClock=e.bool();break}case 10:{U.websocket=$root.sesame.v1.outputs.EncodedWebSocketOutputConfig.decode(e,e.uint32());break}case 11:{U.recorder=$root.sesame.v1.outputs.EncodedRecorderOutputConfig.decode(e,e.uint32());break}case 12:{U.superSlowmoRecorder=$root.sesame.v1.outputs.EncodedSuperSlowMoRecorderOutputConfig.decode(e,e.uint32());break}case 13:{U.srt=$root.sesame.v1.outputs.EncodedSrtOutputConfig.decode(e,e.uint32());break}case 14:{U.moq=$root.sesame.v1.outputs.EncodedMoqOutputConfig.decode(e,e.uint32());break}case 15:{U.decklink=$root.sesame.v1.outputs.DecklinkOutputConfig.decode(e,e.uint32());break}case 16:{U.systemAudio=$root.sesame.v1.outputs.SystemAudioOutputConfig.decode(e,e.uint32());break}default:e.skipType(u&7);break}}return U},i.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},i.verify=function(e){if(typeof e!="object"||e===null)return"object expected";let n={};if(e.id!=null&&e.hasOwnProperty("id")&&!$util.isString(e.id))return"id: string expected";if(e.compositionId!=null&&e.hasOwnProperty("compositionId")&&!$util.isString(e.compositionId))return"compositionId: string expected";if(e.audioMixIds!=null&&e.hasOwnProperty("audioMixIds")){if(!Array.isArray(e.audioMixIds))return"audioMixIds: array expected";for(let s=0;s<e.audioMixIds.length;++s)if(!$util.isString(e.audioMixIds[s]))return"audioMixIds: string[] expected"}if(e.useAsClock!=null&&e.hasOwnProperty("useAsClock")&&typeof e.useAsClock!="boolean")return"useAsClock: boolean expected";if(e.websocket!=null&&e.hasOwnProperty("websocket")){n.output=1;{let s=$root.sesame.v1.outputs.EncodedWebSocketOutputConfig.verify(e.websocket);if(s)return"websocket."+s}}if(e.recorder!=null&&e.hasOwnProperty("recorder")){if(n.output===1)return"output: multiple values";n.output=1;{let s=$root.sesame.v1.outputs.EncodedRecorderOutputConfig.verify(e.recorder);if(s)return"recorder."+s}}if(e.superSlowmoRecorder!=null&&e.hasOwnProperty("superSlowmoRecorder")){if(n.output===1)return"output: multiple values";n.output=1;{let s=$root.sesame.v1.outputs.EncodedSuperSlowMoRecorderOutputConfig.verify(e.superSlowmoRecorder);if(s)return"superSlowmoRecorder."+s}}if(e.srt!=null&&e.hasOwnProperty("srt")){if(n.output===1)return"output: multiple values";n.output=1;{let s=$root.sesame.v1.outputs.EncodedSrtOutputConfig.verify(e.srt);if(s)return"srt."+s}}if(e.moq!=null&&e.hasOwnProperty("moq")){if(n.output===1)return"output: multiple values";n.output=1;{let s=$root.sesame.v1.outputs.EncodedMoqOutputConfig.verify(e.moq);if(s)return"moq."+s}}if(e.decklink!=null&&e.hasOwnProperty("decklink")){if(n.output===1)return"output: multiple values";n.output=1;{let s=$root.sesame.v1.outputs.DecklinkOutputConfig.verify(e.decklink);if(s)return"decklink."+s}}if(e.systemAudio!=null&&e.hasOwnProperty("systemAudio")){if(n.output===1)return"output: multiple values";n.output=1;{let s=$root.sesame.v1.outputs.SystemAudioOutputConfig.verify(e.systemAudio);if(s)return"systemAudio."+s}}return null},i.fromObject=function(e){if(e instanceof $root.sesame.v1.outputs.OutputUpdateRequest)return e;let n=new $root.sesame.v1.outputs.OutputUpdateRequest;if(e.id!=null&&(n.id=String(e.id)),e.compositionId!=null&&(n.compositionId=String(e.compositionId)),e.audioMixIds){if(!Array.isArray(e.audioMixIds))throw TypeError(".sesame.v1.outputs.OutputUpdateRequest.audioMixIds: array expected");n.audioMixIds=[];for(let s=0;s<e.audioMixIds.length;++s)n.audioMixIds[s]=String(e.audioMixIds[s])}if(e.useAsClock!=null&&(n.useAsClock=!!e.useAsClock),e.websocket!=null){if(typeof e.websocket!="object")throw TypeError(".sesame.v1.outputs.OutputUpdateRequest.websocket: object expected");n.websocket=$root.sesame.v1.outputs.EncodedWebSocketOutputConfig.fromObject(e.websocket)}if(e.recorder!=null){if(typeof e.recorder!="object")throw TypeError(".sesame.v1.outputs.OutputUpdateRequest.recorder: object expected");n.recorder=$root.sesame.v1.outputs.EncodedRecorderOutputConfig.fromObject(e.recorder)}if(e.superSlowmoRecorder!=null){if(typeof e.superSlowmoRecorder!="object")throw TypeError(".sesame.v1.outputs.OutputUpdateRequest.superSlowmoRecorder: object expected");n.superSlowmoRecorder=$root.sesame.v1.outputs.EncodedSuperSlowMoRecorderOutputConfig.fromObject(e.superSlowmoRecorder)}if(e.srt!=null){if(typeof e.srt!="object")throw TypeError(".sesame.v1.outputs.OutputUpdateRequest.srt: object expected");n.srt=$root.sesame.v1.outputs.EncodedSrtOutputConfig.fromObject(e.srt)}if(e.moq!=null){if(typeof e.moq!="object")throw TypeError(".sesame.v1.outputs.OutputUpdateRequest.moq: object expected");n.moq=$root.sesame.v1.outputs.EncodedMoqOutputConfig.fromObject(e.moq)}if(e.decklink!=null){if(typeof e.decklink!="object")throw TypeError(".sesame.v1.outputs.OutputUpdateRequest.decklink: object expected");n.decklink=$root.sesame.v1.outputs.DecklinkOutputConfig.fromObject(e.decklink)}if(e.systemAudio!=null){if(typeof e.systemAudio!="object")throw TypeError(".sesame.v1.outputs.OutputUpdateRequest.systemAudio: object expected");n.systemAudio=$root.sesame.v1.outputs.SystemAudioOutputConfig.fromObject(e.systemAudio)}return n},i.toObject=function(e,n){n||(n={});let s={};if((n.arrays||n.defaults)&&(s.audioMixIds=[]),n.defaults&&(s.id="",s.compositionId="",s.useAsClock=!1),e.id!=null&&e.hasOwnProperty("id")&&(s.id=e.id),e.compositionId!=null&&e.hasOwnProperty("compositionId")&&(s.compositionId=e.compositionId),e.audioMixIds&&e.audioMixIds.length){s.audioMixIds=[];for(let a=0;a<e.audioMixIds.length;++a)s.audioMixIds[a]=e.audioMixIds[a]}return e.useAsClock!=null&&e.hasOwnProperty("useAsClock")&&(s.useAsClock=e.useAsClock),e.websocket!=null&&e.hasOwnProperty("websocket")&&(s.websocket=$root.sesame.v1.outputs.EncodedWebSocketOutputConfig.toObject(e.websocket,n),n.oneofs&&(s.output="websocket")),e.recorder!=null&&e.hasOwnProperty("recorder")&&(s.recorder=$root.sesame.v1.outputs.EncodedRecorderOutputConfig.toObject(e.recorder,n),n.oneofs&&(s.output="recorder")),e.superSlowmoRecorder!=null&&e.hasOwnProperty("superSlowmoRecorder")&&(s.superSlowmoRecorder=$root.sesame.v1.outputs.EncodedSuperSlowMoRecorderOutputConfig.toObject(e.superSlowmoRecorder,n),n.oneofs&&(s.output="superSlowmoRecorder")),e.srt!=null&&e.hasOwnProperty("srt")&&(s.srt=$root.sesame.v1.outputs.EncodedSrtOutputConfig.toObject(e.srt,n),n.oneofs&&(s.output="srt")),e.moq!=null&&e.hasOwnProperty("moq")&&(s.moq=$root.sesame.v1.outputs.EncodedMoqOutputConfig.toObject(e.moq,n),n.oneofs&&(s.output="moq")),e.decklink!=null&&e.hasOwnProperty("decklink")&&(s.decklink=$root.sesame.v1.outputs.DecklinkOutputConfig.toObject(e.decklink,n),n.oneofs&&(s.output="decklink")),e.systemAudio!=null&&e.hasOwnProperty("systemAudio")&&(s.systemAudio=$root.sesame.v1.outputs.SystemAudioOutputConfig.toObject(e.systemAudio,n),n.oneofs&&(s.output="systemAudio")),s},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(e){return e===void 0&&(e="type.googleapis.com"),e+"/sesame.v1.outputs.OutputUpdateRequest"},i}(),l.OutputRemoveRequest=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.id="",i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.id!=null&&Object.hasOwnProperty.call(t,"id")&&e.uint32(10).string(t.id),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.outputs.OutputRemoveRequest;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.id=t.string();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.id!=null&&t.hasOwnProperty("id")&&!$util.isString(t.id)?"id: string expected":null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.outputs.OutputRemoveRequest)return t;let e=new $root.sesame.v1.outputs.OutputRemoveRequest;return t.id!=null&&(e.id=String(t.id)),e},i.toObject=function(t,e){e||(e={});let n={};return e.defaults&&(n.id=""),t.id!=null&&t.hasOwnProperty("id")&&(n.id=t.id),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.outputs.OutputRemoveRequest"},i}(),l.KeyframeRequest=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.id="",i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.id!=null&&Object.hasOwnProperty.call(t,"id")&&e.uint32(10).string(t.id),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.outputs.KeyframeRequest;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.id=t.string();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.id!=null&&t.hasOwnProperty("id")&&!$util.isString(t.id)?"id: string expected":null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.outputs.KeyframeRequest)return t;let e=new $root.sesame.v1.outputs.KeyframeRequest;return t.id!=null&&(e.id=String(t.id)),e},i.toObject=function(t,e){e||(e={});let n={};return e.defaults&&(n.id=""),t.id!=null&&t.hasOwnProperty("id")&&(n.id=t.id),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.outputs.KeyframeRequest"},i}(),l.OutputStatus=function(){function i(t){if(t)for(let e=Object.keys(t),n=0;n<e.length;++n)t[e[n]]!=null&&(this[e[n]]=t[e[n]])}i.prototype.id="",i.prototype.type=0,i.prototype.state=0,i.prototype.msg=null,i.prototype.url="",i.prototype.bufferSize=0,i.prototype.srtStats=null;let r;return Object.defineProperty(i.prototype,"_msg",{get:$util.oneOfGetter(r=["msg"]),set:$util.oneOfSetter(r)}),Object.defineProperty(i.prototype,"_srtStats",{get:$util.oneOfGetter(r=["srtStats"]),set:$util.oneOfSetter(r)}),i.create=function(e){return new i(e)},i.encode=function(e,n){return n||(n=$Writer.create()),e.id!=null&&Object.hasOwnProperty.call(e,"id")&&n.uint32(10).string(e.id),e.type!=null&&Object.hasOwnProperty.call(e,"type")&&n.uint32(16).int32(e.type),e.state!=null&&Object.hasOwnProperty.call(e,"state")&&n.uint32(24).int32(e.state),e.msg!=null&&Object.hasOwnProperty.call(e,"msg")&&n.uint32(34).string(e.msg),e.url!=null&&Object.hasOwnProperty.call(e,"url")&&n.uint32(42).string(e.url),e.bufferSize!=null&&Object.hasOwnProperty.call(e,"bufferSize")&&n.uint32(48).uint32(e.bufferSize),e.srtStats!=null&&Object.hasOwnProperty.call(e,"srtStats")&&$root.sesame.v1.status.SRTSendStatistics.encode(e.srtStats,n.uint32(58).fork()).ldelim(),n},i.encodeDelimited=function(e,n){return this.encode(e,n).ldelim()},i.decode=function(e,n,s){e instanceof $Reader||(e=$Reader.create(e));let a=n===void 0?e.len:e.pos+n,U=new $root.sesame.v1.outputs.OutputStatus;for(;e.pos<a;){let u=e.uint32();if(u===s)break;switch(u>>>3){case 1:{U.id=e.string();break}case 2:{U.type=e.int32();break}case 3:{U.state=e.int32();break}case 4:{U.msg=e.string();break}case 5:{U.url=e.string();break}case 6:{U.bufferSize=e.uint32();break}case 7:{U.srtStats=$root.sesame.v1.status.SRTSendStatistics.decode(e,e.uint32());break}default:e.skipType(u&7);break}}return U},i.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},i.verify=function(e){if(typeof e!="object"||e===null)return"object expected";if(e.id!=null&&e.hasOwnProperty("id")&&!$util.isString(e.id))return"id: string expected";if(e.type!=null&&e.hasOwnProperty("type"))switch(e.type){default:return"type: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break}if(e.state!=null&&e.hasOwnProperty("state"))switch(e.state){default:return"state: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 6:break}if(e.msg!=null&&e.hasOwnProperty("msg")&&!$util.isString(e.msg))return"msg: string expected";if(e.url!=null&&e.hasOwnProperty("url")&&!$util.isString(e.url))return"url: string expected";if(e.bufferSize!=null&&e.hasOwnProperty("bufferSize")&&!$util.isInteger(e.bufferSize))return"bufferSize: integer expected";if(e.srtStats!=null&&e.hasOwnProperty("srtStats")){let n=$root.sesame.v1.status.SRTSendStatistics.verify(e.srtStats);if(n)return"srtStats."+n}return null},i.fromObject=function(e){if(e instanceof $root.sesame.v1.outputs.OutputStatus)return e;let n=new $root.sesame.v1.outputs.OutputStatus;switch(e.id!=null&&(n.id=String(e.id)),e.type){default:if(typeof e.type=="number"){n.type=e.type;break}break;case"OUTPUT_TYPE_UNSPECIFIED":case 0:n.type=0;break;case"OUTPUT_TYPE_ENCODED_WEBSOCKET":case 1:n.type=1;break;case"OUTPUT_TYPE_ENCODED_RECORDER":case 2:n.type=2;break;case"OUTPUT_TYPE_DECKLINK":case 3:n.type=3;break;case"OUTPUT_TYPE_SYSTEM_AUDIO":case 4:n.type=4;break;case"OUTPUT_TYPE_ENCODED_SRT":case 5:n.type=5;break;case"OUTPUT_TYPE_ENCODED_MOQ":case 6:n.type=6;break;case"OUTPUT_TYPE_ENCODED_SUPER_SLOWMO_RECORDER":case 7:n.type=7;break}switch(e.state){default:if(typeof e.state=="number"){n.state=e.state;break}break;case"CONNECTION_STATE_UNSPECIFIED":case 0:n.state=0;break;case"CONNECTION_STATE_INITIALIZING":case 1:n.state=1;break;case"CONNECTION_STATE_CONNECTING":case 2:n.state=2;break;case"CONNECTION_STATE_ONLINE":case 3:n.state=3;break;case"CONNECTION_STATE_DEGRADED":case 4:n.state=4;break;case"CONNECTION_STATE_OFFLINE":case 5:n.state=5;break;case"CONNECTION_STATE_ERROR":case 6:n.state=6;break}if(e.msg!=null&&(n.msg=String(e.msg)),e.url!=null&&(n.url=String(e.url)),e.bufferSize!=null&&(n.bufferSize=e.bufferSize>>>0),e.srtStats!=null){if(typeof e.srtStats!="object")throw TypeError(".sesame.v1.outputs.OutputStatus.srtStats: object expected");n.srtStats=$root.sesame.v1.status.SRTSendStatistics.fromObject(e.srtStats)}return n},i.toObject=function(e,n){n||(n={});let s={};return n.defaults&&(s.id="",s.type=n.enums===String?"OUTPUT_TYPE_UNSPECIFIED":0,s.state=n.enums===String?"CONNECTION_STATE_UNSPECIFIED":0,s.url="",s.bufferSize=0),e.id!=null&&e.hasOwnProperty("id")&&(s.id=e.id),e.type!=null&&e.hasOwnProperty("type")&&(s.type=n.enums===String?$root.sesame.v1.outputs.OutputType[e.type]===void 0?e.type:$root.sesame.v1.outputs.OutputType[e.type]:e.type),e.state!=null&&e.hasOwnProperty("state")&&(s.state=n.enums===String?$root.sesame.v1.common.ConnectionState[e.state]===void 0?e.state:$root.sesame.v1.common.ConnectionState[e.state]:e.state),e.msg!=null&&e.hasOwnProperty("msg")&&(s.msg=e.msg,n.oneofs&&(s._msg="msg")),e.url!=null&&e.hasOwnProperty("url")&&(s.url=e.url),e.bufferSize!=null&&e.hasOwnProperty("bufferSize")&&(s.bufferSize=e.bufferSize),e.srtStats!=null&&e.hasOwnProperty("srtStats")&&(s.srtStats=$root.sesame.v1.status.SRTSendStatistics.toObject(e.srtStats,n),n.oneofs&&(s._srtStats="srtStats")),s},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(e){return e===void 0&&(e="type.googleapis.com"),e+"/sesame.v1.outputs.OutputStatus"},i}(),l}(),o.compositor=function(){const l={};return l.NodeType=function(){const i={},r=Object.create(i);return r[i[0]="NODE_TYPE_UNSPECIFIED"]=0,r[i[1]="NODE_TYPE_GROUP"]=1,r[i[2]="NODE_TYPE_TEXT"]=2,r[i[3]="NODE_TYPE_VIDEO_BOX"]=3,r[i[4]="NODE_TYPE_IMAGE"]=4,r[i[5]="NODE_TYPE_EFFECT_RTT"]=5,r[i[6]="NODE_TYPE_EFFECT_TIMECODE"]=6,r[i[7]="NODE_TYPE_EFFECT_CLIP_PLANE"]=7,r}(),l.AnimationChannelEvaluationMode=function(){const i={},r=Object.create(i);return r[i[0]="ANIM_MODE_CONSTANT"]=0,r[i[1]="ANIM_MODE_STATE_FROM"]=1,r[i[2]="ANIM_MODE_LOOP"]=2,r[i[3]="ANIM_MODE_BOUNCE"]=3,r}(),l.KeyFrame=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.timeUs=$util.Long?$util.Long.fromBits(0,0,!1):0,i.prototype.value=null,i.prototype.easingIn="",i.prototype.easingOut="",i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.timeUs!=null&&Object.hasOwnProperty.call(t,"timeUs")&&e.uint32(8).int64(t.timeUs),t.value!=null&&Object.hasOwnProperty.call(t,"value")&&$root.sesame.v1.common.PropValue.encode(t.value,e.uint32(18).fork()).ldelim(),t.easingIn!=null&&Object.hasOwnProperty.call(t,"easingIn")&&e.uint32(26).string(t.easingIn),t.easingOut!=null&&Object.hasOwnProperty.call(t,"easingOut")&&e.uint32(34).string(t.easingOut),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.compositor.KeyFrame;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.timeUs=t.int64();break}case 2:{a.value=$root.sesame.v1.common.PropValue.decode(t,t.uint32());break}case 3:{a.easingIn=t.string();break}case 4:{a.easingOut=t.string();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.timeUs!=null&&t.hasOwnProperty("timeUs")&&!$util.isInteger(t.timeUs)&&!(t.timeUs&&$util.isInteger(t.timeUs.low)&&$util.isInteger(t.timeUs.high)))return"timeUs: integer|Long expected";if(t.value!=null&&t.hasOwnProperty("value")){let e=$root.sesame.v1.common.PropValue.verify(t.value);if(e)return"value."+e}return t.easingIn!=null&&t.hasOwnProperty("easingIn")&&!$util.isString(t.easingIn)?"easingIn: string expected":t.easingOut!=null&&t.hasOwnProperty("easingOut")&&!$util.isString(t.easingOut)?"easingOut: string expected":null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.compositor.KeyFrame)return t;let e=new $root.sesame.v1.compositor.KeyFrame;if(t.timeUs!=null&&($util.Long?(e.timeUs=$util.Long.fromValue(t.timeUs)).unsigned=!1:typeof t.timeUs=="string"?e.timeUs=parseInt(t.timeUs,10):typeof t.timeUs=="number"?e.timeUs=t.timeUs:typeof t.timeUs=="object"&&(e.timeUs=new $util.LongBits(t.timeUs.low>>>0,t.timeUs.high>>>0).toNumber())),t.value!=null){if(typeof t.value!="object")throw TypeError(".sesame.v1.compositor.KeyFrame.value: object expected");e.value=$root.sesame.v1.common.PropValue.fromObject(t.value)}return t.easingIn!=null&&(e.easingIn=String(t.easingIn)),t.easingOut!=null&&(e.easingOut=String(t.easingOut)),e},i.toObject=function(t,e){e||(e={});let n={};if(e.defaults){if($util.Long){let s=new $util.Long(0,0,!1);n.timeUs=e.longs===String?s.toString():e.longs===Number?s.toNumber():s}else n.timeUs=e.longs===String?"0":0;n.value=null,n.easingIn="",n.easingOut=""}return t.timeUs!=null&&t.hasOwnProperty("timeUs")&&(typeof t.timeUs=="number"?n.timeUs=e.longs===String?String(t.timeUs):t.timeUs:n.timeUs=e.longs===String?$util.Long.prototype.toString.call(t.timeUs):e.longs===Number?new $util.LongBits(t.timeUs.low>>>0,t.timeUs.high>>>0).toNumber():t.timeUs),t.value!=null&&t.hasOwnProperty("value")&&(n.value=$root.sesame.v1.common.PropValue.toObject(t.value,e)),t.easingIn!=null&&t.hasOwnProperty("easingIn")&&(n.easingIn=t.easingIn),t.easingOut!=null&&t.hasOwnProperty("easingOut")&&(n.easingOut=t.easingOut),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.compositor.KeyFrame"},i}(),l.CompositorAddRequest=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.id="",i.prototype.multisample=!1,i.prototype.width=0,i.prototype.height=0,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.id!=null&&Object.hasOwnProperty.call(t,"id")&&e.uint32(10).string(t.id),t.multisample!=null&&Object.hasOwnProperty.call(t,"multisample")&&e.uint32(16).bool(t.multisample),t.width!=null&&Object.hasOwnProperty.call(t,"width")&&e.uint32(24).uint32(t.width),t.height!=null&&Object.hasOwnProperty.call(t,"height")&&e.uint32(32).uint32(t.height),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.compositor.CompositorAddRequest;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.id=t.string();break}case 2:{a.multisample=t.bool();break}case 3:{a.width=t.uint32();break}case 4:{a.height=t.uint32();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.id!=null&&t.hasOwnProperty("id")&&!$util.isString(t.id)?"id: string expected":t.multisample!=null&&t.hasOwnProperty("multisample")&&typeof t.multisample!="boolean"?"multisample: boolean expected":t.width!=null&&t.hasOwnProperty("width")&&!$util.isInteger(t.width)?"width: integer expected":t.height!=null&&t.hasOwnProperty("height")&&!$util.isInteger(t.height)?"height: integer expected":null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.compositor.CompositorAddRequest)return t;let e=new $root.sesame.v1.compositor.CompositorAddRequest;return t.id!=null&&(e.id=String(t.id)),t.multisample!=null&&(e.multisample=!!t.multisample),t.width!=null&&(e.width=t.width>>>0),t.height!=null&&(e.height=t.height>>>0),e},i.toObject=function(t,e){e||(e={});let n={};return e.defaults&&(n.id="",n.multisample=!1,n.width=0,n.height=0),t.id!=null&&t.hasOwnProperty("id")&&(n.id=t.id),t.multisample!=null&&t.hasOwnProperty("multisample")&&(n.multisample=t.multisample),t.width!=null&&t.hasOwnProperty("width")&&(n.width=t.width),t.height!=null&&t.hasOwnProperty("height")&&(n.height=t.height),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.compositor.CompositorAddRequest"},i}(),l.CompositorRemoveRequest=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.id="",i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.id!=null&&Object.hasOwnProperty.call(t,"id")&&e.uint32(10).string(t.id),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.compositor.CompositorRemoveRequest;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.id=t.string();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.id!=null&&t.hasOwnProperty("id")&&!$util.isString(t.id)?"id: string expected":null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.compositor.CompositorRemoveRequest)return t;let e=new $root.sesame.v1.compositor.CompositorRemoveRequest;return t.id!=null&&(e.id=String(t.id)),e},i.toObject=function(t,e){e||(e={});let n={};return e.defaults&&(n.id=""),t.id!=null&&t.hasOwnProperty("id")&&(n.id=t.id),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.compositor.CompositorRemoveRequest"},i}(),l.CompositorClearRequest=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.id="",i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.id!=null&&Object.hasOwnProperty.call(t,"id")&&e.uint32(10).string(t.id),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.compositor.CompositorClearRequest;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.id=t.string();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.id!=null&&t.hasOwnProperty("id")&&!$util.isString(t.id)?"id: string expected":null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.compositor.CompositorClearRequest)return t;let e=new $root.sesame.v1.compositor.CompositorClearRequest;return t.id!=null&&(e.id=String(t.id)),e},i.toObject=function(t,e){e||(e={});let n={};return e.defaults&&(n.id=""),t.id!=null&&t.hasOwnProperty("id")&&(n.id=t.id),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.compositor.CompositorClearRequest"},i}(),l.NodeAddRequest=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.compositorId="",i.prototype.parentAddress="",i.prototype.nodeId="",i.prototype.nodeType=0,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.compositorId!=null&&Object.hasOwnProperty.call(t,"compositorId")&&e.uint32(10).string(t.compositorId),t.parentAddress!=null&&Object.hasOwnProperty.call(t,"parentAddress")&&e.uint32(18).string(t.parentAddress),t.nodeId!=null&&Object.hasOwnProperty.call(t,"nodeId")&&e.uint32(26).string(t.nodeId),t.nodeType!=null&&Object.hasOwnProperty.call(t,"nodeType")&&e.uint32(32).int32(t.nodeType),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.compositor.NodeAddRequest;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.compositorId=t.string();break}case 2:{a.parentAddress=t.string();break}case 3:{a.nodeId=t.string();break}case 4:{a.nodeType=t.int32();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.compositorId!=null&&t.hasOwnProperty("compositorId")&&!$util.isString(t.compositorId))return"compositorId: string expected";if(t.parentAddress!=null&&t.hasOwnProperty("parentAddress")&&!$util.isString(t.parentAddress))return"parentAddress: string expected";if(t.nodeId!=null&&t.hasOwnProperty("nodeId")&&!$util.isString(t.nodeId))return"nodeId: string expected";if(t.nodeType!=null&&t.hasOwnProperty("nodeType"))switch(t.nodeType){default:return"nodeType: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break}return null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.compositor.NodeAddRequest)return t;let e=new $root.sesame.v1.compositor.NodeAddRequest;switch(t.compositorId!=null&&(e.compositorId=String(t.compositorId)),t.parentAddress!=null&&(e.parentAddress=String(t.parentAddress)),t.nodeId!=null&&(e.nodeId=String(t.nodeId)),t.nodeType){default:if(typeof t.nodeType=="number"){e.nodeType=t.nodeType;break}break;case"NODE_TYPE_UNSPECIFIED":case 0:e.nodeType=0;break;case"NODE_TYPE_GROUP":case 1:e.nodeType=1;break;case"NODE_TYPE_TEXT":case 2:e.nodeType=2;break;case"NODE_TYPE_VIDEO_BOX":case 3:e.nodeType=3;break;case"NODE_TYPE_IMAGE":case 4:e.nodeType=4;break;case"NODE_TYPE_EFFECT_RTT":case 5:e.nodeType=5;break;case"NODE_TYPE_EFFECT_TIMECODE":case 6:e.nodeType=6;break;case"NODE_TYPE_EFFECT_CLIP_PLANE":case 7:e.nodeType=7;break}return e},i.toObject=function(t,e){e||(e={});let n={};return e.defaults&&(n.compositorId="",n.parentAddress="",n.nodeId="",n.nodeType=e.enums===String?"NODE_TYPE_UNSPECIFIED":0),t.compositorId!=null&&t.hasOwnProperty("compositorId")&&(n.compositorId=t.compositorId),t.parentAddress!=null&&t.hasOwnProperty("parentAddress")&&(n.parentAddress=t.parentAddress),t.nodeId!=null&&t.hasOwnProperty("nodeId")&&(n.nodeId=t.nodeId),t.nodeType!=null&&t.hasOwnProperty("nodeType")&&(n.nodeType=e.enums===String?$root.sesame.v1.compositor.NodeType[t.nodeType]===void 0?t.nodeType:$root.sesame.v1.compositor.NodeType[t.nodeType]:t.nodeType),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.compositor.NodeAddRequest"},i}(),l.NodeRemoveRequest=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.compositorId="",i.prototype.address="",i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.compositorId!=null&&Object.hasOwnProperty.call(t,"compositorId")&&e.uint32(10).string(t.compositorId),t.address!=null&&Object.hasOwnProperty.call(t,"address")&&e.uint32(18).string(t.address),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.compositor.NodeRemoveRequest;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.compositorId=t.string();break}case 2:{a.address=t.string();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.compositorId!=null&&t.hasOwnProperty("compositorId")&&!$util.isString(t.compositorId)?"compositorId: string expected":t.address!=null&&t.hasOwnProperty("address")&&!$util.isString(t.address)?"address: string expected":null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.compositor.NodeRemoveRequest)return t;let e=new $root.sesame.v1.compositor.NodeRemoveRequest;return t.compositorId!=null&&(e.compositorId=String(t.compositorId)),t.address!=null&&(e.address=String(t.address)),e},i.toObject=function(t,e){e||(e={});let n={};return e.defaults&&(n.compositorId="",n.address=""),t.compositorId!=null&&t.hasOwnProperty("compositorId")&&(n.compositorId=t.compositorId),t.address!=null&&t.hasOwnProperty("address")&&(n.address=t.address),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.compositor.NodeRemoveRequest"},i}(),l.PropertySetRequest=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.domain=null,i.prototype.address="",i.prototype.property="",i.prototype.value=null,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.domain!=null&&Object.hasOwnProperty.call(t,"domain")&&$root.sesame.v1.common.PropertyDomain.encode(t.domain,e.uint32(10).fork()).ldelim(),t.address!=null&&Object.hasOwnProperty.call(t,"address")&&e.uint32(18).string(t.address),t.property!=null&&Object.hasOwnProperty.call(t,"property")&&e.uint32(26).string(t.property),t.value!=null&&Object.hasOwnProperty.call(t,"value")&&$root.sesame.v1.common.PropValue.encode(t.value,e.uint32(34).fork()).ldelim(),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.compositor.PropertySetRequest;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.domain=$root.sesame.v1.common.PropertyDomain.decode(t,t.uint32());break}case 2:{a.address=t.string();break}case 3:{a.property=t.string();break}case 4:{a.value=$root.sesame.v1.common.PropValue.decode(t,t.uint32());break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.domain!=null&&t.hasOwnProperty("domain")){let e=$root.sesame.v1.common.PropertyDomain.verify(t.domain);if(e)return"domain."+e}if(t.address!=null&&t.hasOwnProperty("address")&&!$util.isString(t.address))return"address: string expected";if(t.property!=null&&t.hasOwnProperty("property")&&!$util.isString(t.property))return"property: string expected";if(t.value!=null&&t.hasOwnProperty("value")){let e=$root.sesame.v1.common.PropValue.verify(t.value);if(e)return"value."+e}return null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.compositor.PropertySetRequest)return t;let e=new $root.sesame.v1.compositor.PropertySetRequest;if(t.domain!=null){if(typeof t.domain!="object")throw TypeError(".sesame.v1.compositor.PropertySetRequest.domain: object expected");e.domain=$root.sesame.v1.common.PropertyDomain.fromObject(t.domain)}if(t.address!=null&&(e.address=String(t.address)),t.property!=null&&(e.property=String(t.property)),t.value!=null){if(typeof t.value!="object")throw TypeError(".sesame.v1.compositor.PropertySetRequest.value: object expected");e.value=$root.sesame.v1.common.PropValue.fromObject(t.value)}return e},i.toObject=function(t,e){e||(e={});let n={};return e.defaults&&(n.domain=null,n.address="",n.property="",n.value=null),t.domain!=null&&t.hasOwnProperty("domain")&&(n.domain=$root.sesame.v1.common.PropertyDomain.toObject(t.domain,e)),t.address!=null&&t.hasOwnProperty("address")&&(n.address=t.address),t.property!=null&&t.hasOwnProperty("property")&&(n.property=t.property),t.value!=null&&t.hasOwnProperty("value")&&(n.value=$root.sesame.v1.common.PropValue.toObject(t.value,e)),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.compositor.PropertySetRequest"},i}(),l.PropertyAnimateRequest=function(){function i(r){if(this.keyframes=[],r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.domain=null,i.prototype.address="",i.prototype.property="",i.prototype.keyframes=$util.emptyArray,i.prototype.before=0,i.prototype.after=0,i.create=function(t){return new i(t)},i.encode=function(t,e){if(e||(e=$Writer.create()),t.domain!=null&&Object.hasOwnProperty.call(t,"domain")&&$root.sesame.v1.common.PropertyDomain.encode(t.domain,e.uint32(10).fork()).ldelim(),t.address!=null&&Object.hasOwnProperty.call(t,"address")&&e.uint32(18).string(t.address),t.property!=null&&Object.hasOwnProperty.call(t,"property")&&e.uint32(26).string(t.property),t.keyframes!=null&&t.keyframes.length)for(let n=0;n<t.keyframes.length;++n)$root.sesame.v1.compositor.KeyFrame.encode(t.keyframes[n],e.uint32(34).fork()).ldelim();return t.before!=null&&Object.hasOwnProperty.call(t,"before")&&e.uint32(40).int32(t.before),t.after!=null&&Object.hasOwnProperty.call(t,"after")&&e.uint32(48).int32(t.after),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.compositor.PropertyAnimateRequest;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.domain=$root.sesame.v1.common.PropertyDomain.decode(t,t.uint32());break}case 2:{a.address=t.string();break}case 3:{a.property=t.string();break}case 4:{a.keyframes&&a.keyframes.length||(a.keyframes=[]),a.keyframes.push($root.sesame.v1.compositor.KeyFrame.decode(t,t.uint32()));break}case 5:{a.before=t.int32();break}case 6:{a.after=t.int32();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.domain!=null&&t.hasOwnProperty("domain")){let e=$root.sesame.v1.common.PropertyDomain.verify(t.domain);if(e)return"domain."+e}if(t.address!=null&&t.hasOwnProperty("address")&&!$util.isString(t.address))return"address: string expected";if(t.property!=null&&t.hasOwnProperty("property")&&!$util.isString(t.property))return"property: string expected";if(t.keyframes!=null&&t.hasOwnProperty("keyframes")){if(!Array.isArray(t.keyframes))return"keyframes: array expected";for(let e=0;e<t.keyframes.length;++e){let n=$root.sesame.v1.compositor.KeyFrame.verify(t.keyframes[e]);if(n)return"keyframes."+n}}if(t.before!=null&&t.hasOwnProperty("before"))switch(t.before){default:return"before: enum value expected";case 0:case 1:case 2:case 3:break}if(t.after!=null&&t.hasOwnProperty("after"))switch(t.after){default:return"after: enum value expected";case 0:case 1:case 2:case 3:break}return null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.compositor.PropertyAnimateRequest)return t;let e=new $root.sesame.v1.compositor.PropertyAnimateRequest;if(t.domain!=null){if(typeof t.domain!="object")throw TypeError(".sesame.v1.compositor.PropertyAnimateRequest.domain: object expected");e.domain=$root.sesame.v1.common.PropertyDomain.fromObject(t.domain)}if(t.address!=null&&(e.address=String(t.address)),t.property!=null&&(e.property=String(t.property)),t.keyframes){if(!Array.isArray(t.keyframes))throw TypeError(".sesame.v1.compositor.PropertyAnimateRequest.keyframes: array expected");e.keyframes=[];for(let n=0;n<t.keyframes.length;++n){if(typeof t.keyframes[n]!="object")throw TypeError(".sesame.v1.compositor.PropertyAnimateRequest.keyframes: object expected");e.keyframes[n]=$root.sesame.v1.compositor.KeyFrame.fromObject(t.keyframes[n])}}switch(t.before){default:if(typeof t.before=="number"){e.before=t.before;break}break;case"ANIM_MODE_CONSTANT":case 0:e.before=0;break;case"ANIM_MODE_STATE_FROM":case 1:e.before=1;break;case"ANIM_MODE_LOOP":case 2:e.before=2;break;case"ANIM_MODE_BOUNCE":case 3:e.before=3;break}switch(t.after){default:if(typeof t.after=="number"){e.after=t.after;break}break;case"ANIM_MODE_CONSTANT":case 0:e.after=0;break;case"ANIM_MODE_STATE_FROM":case 1:e.after=1;break;case"ANIM_MODE_LOOP":case 2:e.after=2;break;case"ANIM_MODE_BOUNCE":case 3:e.after=3;break}return e},i.toObject=function(t,e){e||(e={});let n={};if((e.arrays||e.defaults)&&(n.keyframes=[]),e.defaults&&(n.domain=null,n.address="",n.property="",n.before=e.enums===String?"ANIM_MODE_CONSTANT":0,n.after=e.enums===String?"ANIM_MODE_CONSTANT":0),t.domain!=null&&t.hasOwnProperty("domain")&&(n.domain=$root.sesame.v1.common.PropertyDomain.toObject(t.domain,e)),t.address!=null&&t.hasOwnProperty("address")&&(n.address=t.address),t.property!=null&&t.hasOwnProperty("property")&&(n.property=t.property),t.keyframes&&t.keyframes.length){n.keyframes=[];for(let s=0;s<t.keyframes.length;++s)n.keyframes[s]=$root.sesame.v1.compositor.KeyFrame.toObject(t.keyframes[s],e)}return t.before!=null&&t.hasOwnProperty("before")&&(n.before=e.enums===String?$root.sesame.v1.compositor.AnimationChannelEvaluationMode[t.before]===void 0?t.before:$root.sesame.v1.compositor.AnimationChannelEvaluationMode[t.before]:t.before),t.after!=null&&t.hasOwnProperty("after")&&(n.after=e.enums===String?$root.sesame.v1.compositor.AnimationChannelEvaluationMode[t.after]===void 0?t.after:$root.sesame.v1.compositor.AnimationChannelEvaluationMode[t.after]:t.after),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.compositor.PropertyAnimateRequest"},i}(),l}(),o.jobs=function(){const l={};return l.JobType=function(){const i={},r=Object.create(i);return r[i[0]="JOB_TYPE_UNSPECIFIED"]=0,r[i[1]="JOB_TYPE_EXPORT"]=1,r[i[2]="JOB_TYPE_IMPORT"]=2,r}(),l.JobStatus=function(){const i={},r=Object.create(i);return r[i[0]="JOB_STATUS_UNSPECIFIED"]=0,r[i[1]="JOB_STATUS_PENDING"]=1,r[i[2]="JOB_STATUS_IN_PROGRESS"]=2,r[i[3]="JOB_STATUS_COMPLETE"]=3,r[i[4]="JOB_STATUS_ABORTED"]=4,r[i[5]="JOB_STATUS_ERROR"]=5,r}(),l.ContainerFormat=function(){const i={},r=Object.create(i);return r[i[0]="CONTAINER_FORMAT_UNSPECIFIED"]=0,r[i[1]="CONTAINER_FORMAT_MP4"]=1,r[i[2]="CONTAINER_FORMAT_MOV"]=2,r[i[3]="CONTAINER_FORMAT_MKV"]=3,r[i[4]="CONTAINER_FORMAT_MXF"]=4,r}(),l.RateControlMode=function(){const i={},r=Object.create(i);return r[i[0]="RATE_CONTROL_MODE_UNSPECIFIED"]=0,r[i[1]="RATE_CONTROL_MODE_CBR"]=1,r[i[2]="RATE_CONTROL_MODE_VBR"]=2,r[i[3]="RATE_CONTROL_MODE_CQ"]=3,r}(),l.TimingInfo=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.tcIn=$util.Long?$util.Long.fromBits(0,0,!1):0,i.prototype.tcOut=$util.Long?$util.Long.fromBits(0,0,!1):0,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.tcIn!=null&&Object.hasOwnProperty.call(t,"tcIn")&&e.uint32(8).int64(t.tcIn),t.tcOut!=null&&Object.hasOwnProperty.call(t,"tcOut")&&e.uint32(16).int64(t.tcOut),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.jobs.TimingInfo;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.tcIn=t.int64();break}case 2:{a.tcOut=t.int64();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.tcIn!=null&&t.hasOwnProperty("tcIn")&&!$util.isInteger(t.tcIn)&&!(t.tcIn&&$util.isInteger(t.tcIn.low)&&$util.isInteger(t.tcIn.high))?"tcIn: integer|Long expected":t.tcOut!=null&&t.hasOwnProperty("tcOut")&&!$util.isInteger(t.tcOut)&&!(t.tcOut&&$util.isInteger(t.tcOut.low)&&$util.isInteger(t.tcOut.high))?"tcOut: integer|Long expected":null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.jobs.TimingInfo)return t;let e=new $root.sesame.v1.jobs.TimingInfo;return t.tcIn!=null&&($util.Long?(e.tcIn=$util.Long.fromValue(t.tcIn)).unsigned=!1:typeof t.tcIn=="string"?e.tcIn=parseInt(t.tcIn,10):typeof t.tcIn=="number"?e.tcIn=t.tcIn:typeof t.tcIn=="object"&&(e.tcIn=new $util.LongBits(t.tcIn.low>>>0,t.tcIn.high>>>0).toNumber())),t.tcOut!=null&&($util.Long?(e.tcOut=$util.Long.fromValue(t.tcOut)).unsigned=!1:typeof t.tcOut=="string"?e.tcOut=parseInt(t.tcOut,10):typeof t.tcOut=="number"?e.tcOut=t.tcOut:typeof t.tcOut=="object"&&(e.tcOut=new $util.LongBits(t.tcOut.low>>>0,t.tcOut.high>>>0).toNumber())),e},i.toObject=function(t,e){e||(e={});let n={};if(e.defaults){if($util.Long){let s=new $util.Long(0,0,!1);n.tcIn=e.longs===String?s.toString():e.longs===Number?s.toNumber():s}else n.tcIn=e.longs===String?"0":0;if($util.Long){let s=new $util.Long(0,0,!1);n.tcOut=e.longs===String?s.toString():e.longs===Number?s.toNumber():s}else n.tcOut=e.longs===String?"0":0}return t.tcIn!=null&&t.hasOwnProperty("tcIn")&&(typeof t.tcIn=="number"?n.tcIn=e.longs===String?String(t.tcIn):t.tcIn:n.tcIn=e.longs===String?$util.Long.prototype.toString.call(t.tcIn):e.longs===Number?new $util.LongBits(t.tcIn.low>>>0,t.tcIn.high>>>0).toNumber():t.tcIn),t.tcOut!=null&&t.hasOwnProperty("tcOut")&&(typeof t.tcOut=="number"?n.tcOut=e.longs===String?String(t.tcOut):t.tcOut:n.tcOut=e.longs===String?$util.Long.prototype.toString.call(t.tcOut):e.longs===Number?new $util.LongBits(t.tcOut.low>>>0,t.tcOut.high>>>0).toNumber():t.tcOut),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.jobs.TimingInfo"},i}(),l.Job=function(){function i(t){if(t)for(let e=Object.keys(t),n=0;n<e.length;++n)t[e[n]]!=null&&(this[e[n]]=t[e[n]])}i.prototype.id=0,i.prototype.type=0,i.prototype.status=0,i.prototype.name="",i.prototype.description="",i.prototype.error=null,i.prototype.progress=$util.Long?$util.Long.fromBits(0,0,!1):0,i.prototype.total=$util.Long?$util.Long.fromBits(0,0,!1):0,i.prototype.timingInfo=null;let r;return Object.defineProperty(i.prototype,"_error",{get:$util.oneOfGetter(r=["error"]),set:$util.oneOfSetter(r)}),Object.defineProperty(i.prototype,"_timingInfo",{get:$util.oneOfGetter(r=["timingInfo"]),set:$util.oneOfSetter(r)}),i.create=function(e){return new i(e)},i.encode=function(e,n){return n||(n=$Writer.create()),e.id!=null&&Object.hasOwnProperty.call(e,"id")&&n.uint32(8).uint32(e.id),e.type!=null&&Object.hasOwnProperty.call(e,"type")&&n.uint32(16).int32(e.type),e.status!=null&&Object.hasOwnProperty.call(e,"status")&&n.uint32(24).int32(e.status),e.name!=null&&Object.hasOwnProperty.call(e,"name")&&n.uint32(34).string(e.name),e.description!=null&&Object.hasOwnProperty.call(e,"description")&&n.uint32(42).string(e.description),e.error!=null&&Object.hasOwnProperty.call(e,"error")&&n.uint32(50).string(e.error),e.progress!=null&&Object.hasOwnProperty.call(e,"progress")&&n.uint32(56).int64(e.progress),e.total!=null&&Object.hasOwnProperty.call(e,"total")&&n.uint32(64).int64(e.total),e.timingInfo!=null&&Object.hasOwnProperty.call(e,"timingInfo")&&$root.sesame.v1.jobs.TimingInfo.encode(e.timingInfo,n.uint32(74).fork()).ldelim(),n},i.encodeDelimited=function(e,n){return this.encode(e,n).ldelim()},i.decode=function(e,n,s){e instanceof $Reader||(e=$Reader.create(e));let a=n===void 0?e.len:e.pos+n,U=new $root.sesame.v1.jobs.Job;for(;e.pos<a;){let u=e.uint32();if(u===s)break;switch(u>>>3){case 1:{U.id=e.uint32();break}case 2:{U.type=e.int32();break}case 3:{U.status=e.int32();break}case 4:{U.name=e.string();break}case 5:{U.description=e.string();break}case 6:{U.error=e.string();break}case 7:{U.progress=e.int64();break}case 8:{U.total=e.int64();break}case 9:{U.timingInfo=$root.sesame.v1.jobs.TimingInfo.decode(e,e.uint32());break}default:e.skipType(u&7);break}}return U},i.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},i.verify=function(e){if(typeof e!="object"||e===null)return"object expected";if(e.id!=null&&e.hasOwnProperty("id")&&!$util.isInteger(e.id))return"id: integer expected";if(e.type!=null&&e.hasOwnProperty("type"))switch(e.type){default:return"type: enum value expected";case 0:case 1:case 2:break}if(e.status!=null&&e.hasOwnProperty("status"))switch(e.status){default:return"status: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:break}if(e.name!=null&&e.hasOwnProperty("name")&&!$util.isString(e.name))return"name: string expected";if(e.description!=null&&e.hasOwnProperty("description")&&!$util.isString(e.description))return"description: string expected";if(e.error!=null&&e.hasOwnProperty("error")&&!$util.isString(e.error))return"error: string expected";if(e.progress!=null&&e.hasOwnProperty("progress")&&!$util.isInteger(e.progress)&&!(e.progress&&$util.isInteger(e.progress.low)&&$util.isInteger(e.progress.high)))return"progress: integer|Long expected";if(e.total!=null&&e.hasOwnProperty("total")&&!$util.isInteger(e.total)&&!(e.total&&$util.isInteger(e.total.low)&&$util.isInteger(e.total.high)))return"total: integer|Long expected";if(e.timingInfo!=null&&e.hasOwnProperty("timingInfo")){let n=$root.sesame.v1.jobs.TimingInfo.verify(e.timingInfo);if(n)return"timingInfo."+n}return null},i.fromObject=function(e){if(e instanceof $root.sesame.v1.jobs.Job)return e;let n=new $root.sesame.v1.jobs.Job;switch(e.id!=null&&(n.id=e.id>>>0),e.type){default:if(typeof e.type=="number"){n.type=e.type;break}break;case"JOB_TYPE_UNSPECIFIED":case 0:n.type=0;break;case"JOB_TYPE_EXPORT":case 1:n.type=1;break;case"JOB_TYPE_IMPORT":case 2:n.type=2;break}switch(e.status){default:if(typeof e.status=="number"){n.status=e.status;break}break;case"JOB_STATUS_UNSPECIFIED":case 0:n.status=0;break;case"JOB_STATUS_PENDING":case 1:n.status=1;break;case"JOB_STATUS_IN_PROGRESS":case 2:n.status=2;break;case"JOB_STATUS_COMPLETE":case 3:n.status=3;break;case"JOB_STATUS_ABORTED":case 4:n.status=4;break;case"JOB_STATUS_ERROR":case 5:n.status=5;break}if(e.name!=null&&(n.name=String(e.name)),e.description!=null&&(n.description=String(e.description)),e.error!=null&&(n.error=String(e.error)),e.progress!=null&&($util.Long?(n.progress=$util.Long.fromValue(e.progress)).unsigned=!1:typeof e.progress=="string"?n.progress=parseInt(e.progress,10):typeof e.progress=="number"?n.progress=e.progress:typeof e.progress=="object"&&(n.progress=new $util.LongBits(e.progress.low>>>0,e.progress.high>>>0).toNumber())),e.total!=null&&($util.Long?(n.total=$util.Long.fromValue(e.total)).unsigned=!1:typeof e.total=="string"?n.total=parseInt(e.total,10):typeof e.total=="number"?n.total=e.total:typeof e.total=="object"&&(n.total=new $util.LongBits(e.total.low>>>0,e.total.high>>>0).toNumber())),e.timingInfo!=null){if(typeof e.timingInfo!="object")throw TypeError(".sesame.v1.jobs.Job.timingInfo: object expected");n.timingInfo=$root.sesame.v1.jobs.TimingInfo.fromObject(e.timingInfo)}return n},i.toObject=function(e,n){n||(n={});let s={};if(n.defaults){if(s.id=0,s.type=n.enums===String?"JOB_TYPE_UNSPECIFIED":0,s.status=n.enums===String?"JOB_STATUS_UNSPECIFIED":0,s.name="",s.description="",$util.Long){let a=new $util.Long(0,0,!1);s.progress=n.longs===String?a.toString():n.longs===Number?a.toNumber():a}else s.progress=n.longs===String?"0":0;if($util.Long){let a=new $util.Long(0,0,!1);s.total=n.longs===String?a.toString():n.longs===Number?a.toNumber():a}else s.total=n.longs===String?"0":0}return e.id!=null&&e.hasOwnProperty("id")&&(s.id=e.id),e.type!=null&&e.hasOwnProperty("type")&&(s.type=n.enums===String?$root.sesame.v1.jobs.JobType[e.type]===void 0?e.type:$root.sesame.v1.jobs.JobType[e.type]:e.type),e.status!=null&&e.hasOwnProperty("status")&&(s.status=n.enums===String?$root.sesame.v1.jobs.JobStatus[e.status]===void 0?e.status:$root.sesame.v1.jobs.JobStatus[e.status]:e.status),e.name!=null&&e.hasOwnProperty("name")&&(s.name=e.name),e.description!=null&&e.hasOwnProperty("description")&&(s.description=e.description),e.error!=null&&e.hasOwnProperty("error")&&(s.error=e.error,n.oneofs&&(s._error="error")),e.progress!=null&&e.hasOwnProperty("progress")&&(typeof e.progress=="number"?s.progress=n.longs===String?String(e.progress):e.progress:s.progress=n.longs===String?$util.Long.prototype.toString.call(e.progress):n.longs===Number?new $util.LongBits(e.progress.low>>>0,e.progress.high>>>0).toNumber():e.progress),e.total!=null&&e.hasOwnProperty("total")&&(typeof e.total=="number"?s.total=n.longs===String?String(e.total):e.total:s.total=n.longs===String?$util.Long.prototype.toString.call(e.total):n.longs===Number?new $util.LongBits(e.total.low>>>0,e.total.high>>>0).toNumber():e.total),e.timingInfo!=null&&e.hasOwnProperty("timingInfo")&&(s.timingInfo=$root.sesame.v1.jobs.TimingInfo.toObject(e.timingInfo,n),n.oneofs&&(s._timingInfo="timingInfo")),s},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(e){return e===void 0&&(e="type.googleapis.com"),e+"/sesame.v1.jobs.Job"},i}(),l.JobList=function(){function i(r){if(this.jobs=[],r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.jobs=$util.emptyArray,i.create=function(t){return new i(t)},i.encode=function(t,e){if(e||(e=$Writer.create()),t.jobs!=null&&t.jobs.length)for(let n=0;n<t.jobs.length;++n)$root.sesame.v1.jobs.Job.encode(t.jobs[n],e.uint32(10).fork()).ldelim();return e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.jobs.JobList;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.jobs&&a.jobs.length||(a.jobs=[]),a.jobs.push($root.sesame.v1.jobs.Job.decode(t,t.uint32()));break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.jobs!=null&&t.hasOwnProperty("jobs")){if(!Array.isArray(t.jobs))return"jobs: array expected";for(let e=0;e<t.jobs.length;++e){let n=$root.sesame.v1.jobs.Job.verify(t.jobs[e]);if(n)return"jobs."+n}}return null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.jobs.JobList)return t;let e=new $root.sesame.v1.jobs.JobList;if(t.jobs){if(!Array.isArray(t.jobs))throw TypeError(".sesame.v1.jobs.JobList.jobs: array expected");e.jobs=[];for(let n=0;n<t.jobs.length;++n){if(typeof t.jobs[n]!="object")throw TypeError(".sesame.v1.jobs.JobList.jobs: object expected");e.jobs[n]=$root.sesame.v1.jobs.Job.fromObject(t.jobs[n])}}return e},i.toObject=function(t,e){e||(e={});let n={};if((e.arrays||e.defaults)&&(n.jobs=[]),t.jobs&&t.jobs.length){n.jobs=[];for(let s=0;s<t.jobs.length;++s)n.jobs[s]=$root.sesame.v1.jobs.Job.toObject(t.jobs[s],e)}return n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.jobs.JobList"},i}(),l.JobStartRequest=function(){function i(t){if(t)for(let e=Object.keys(t),n=0;n<e.length;++n)t[e[n]]!=null&&(this[e[n]]=t[e[n]])}i.prototype.exportRequest=null,i.prototype.importRequest=null;let r;return Object.defineProperty(i.prototype,"config",{get:$util.oneOfGetter(r=["exportRequest","importRequest"]),set:$util.oneOfSetter(r)}),i.create=function(e){return new i(e)},i.encode=function(e,n){return n||(n=$Writer.create()),e.exportRequest!=null&&Object.hasOwnProperty.call(e,"exportRequest")&&$root.sesame.v1.jobs.ExportStartRequest.encode(e.exportRequest,n.uint32(10).fork()).ldelim(),e.importRequest!=null&&Object.hasOwnProperty.call(e,"importRequest")&&$root.sesame.v1.jobs.ImportStartRequest.encode(e.importRequest,n.uint32(18).fork()).ldelim(),n},i.encodeDelimited=function(e,n){return this.encode(e,n).ldelim()},i.decode=function(e,n,s){e instanceof $Reader||(e=$Reader.create(e));let a=n===void 0?e.len:e.pos+n,U=new $root.sesame.v1.jobs.JobStartRequest;for(;e.pos<a;){let u=e.uint32();if(u===s)break;switch(u>>>3){case 1:{U.exportRequest=$root.sesame.v1.jobs.ExportStartRequest.decode(e,e.uint32());break}case 2:{U.importRequest=$root.sesame.v1.jobs.ImportStartRequest.decode(e,e.uint32());break}default:e.skipType(u&7);break}}return U},i.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},i.verify=function(e){if(typeof e!="object"||e===null)return"object expected";let n={};if(e.exportRequest!=null&&e.hasOwnProperty("exportRequest")){n.config=1;{let s=$root.sesame.v1.jobs.ExportStartRequest.verify(e.exportRequest);if(s)return"exportRequest."+s}}if(e.importRequest!=null&&e.hasOwnProperty("importRequest")){if(n.config===1)return"config: multiple values";n.config=1;{let s=$root.sesame.v1.jobs.ImportStartRequest.verify(e.importRequest);if(s)return"importRequest."+s}}return null},i.fromObject=function(e){if(e instanceof $root.sesame.v1.jobs.JobStartRequest)return e;let n=new $root.sesame.v1.jobs.JobStartRequest;if(e.exportRequest!=null){if(typeof e.exportRequest!="object")throw TypeError(".sesame.v1.jobs.JobStartRequest.exportRequest: object expected");n.exportRequest=$root.sesame.v1.jobs.ExportStartRequest.fromObject(e.exportRequest)}if(e.importRequest!=null){if(typeof e.importRequest!="object")throw TypeError(".sesame.v1.jobs.JobStartRequest.importRequest: object expected");n.importRequest=$root.sesame.v1.jobs.ImportStartRequest.fromObject(e.importRequest)}return n},i.toObject=function(e,n){n||(n={});let s={};return e.exportRequest!=null&&e.hasOwnProperty("exportRequest")&&(s.exportRequest=$root.sesame.v1.jobs.ExportStartRequest.toObject(e.exportRequest,n),n.oneofs&&(s.config="exportRequest")),e.importRequest!=null&&e.hasOwnProperty("importRequest")&&(s.importRequest=$root.sesame.v1.jobs.ImportStartRequest.toObject(e.importRequest,n),n.oneofs&&(s.config="importRequest")),s},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(e){return e===void 0&&(e="type.googleapis.com"),e+"/sesame.v1.jobs.JobStartRequest"},i}(),l.JobAbortRequest=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.jobId=0,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.jobId!=null&&Object.hasOwnProperty.call(t,"jobId")&&e.uint32(8).uint32(t.jobId),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.jobs.JobAbortRequest;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.jobId=t.uint32();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.jobId!=null&&t.hasOwnProperty("jobId")&&!$util.isInteger(t.jobId)?"jobId: integer expected":null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.jobs.JobAbortRequest)return t;let e=new $root.sesame.v1.jobs.JobAbortRequest;return t.jobId!=null&&(e.jobId=t.jobId>>>0),e},i.toObject=function(t,e){e||(e={});let n={};return e.defaults&&(n.jobId=0),t.jobId!=null&&t.hasOwnProperty("jobId")&&(n.jobId=t.jobId),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.jobs.JobAbortRequest"},i}(),l.JobStatusRequest=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.jobId=0,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.jobId!=null&&Object.hasOwnProperty.call(t,"jobId")&&e.uint32(8).uint32(t.jobId),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.jobs.JobStatusRequest;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.jobId=t.uint32();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.jobId!=null&&t.hasOwnProperty("jobId")&&!$util.isInteger(t.jobId)?"jobId: integer expected":null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.jobs.JobStatusRequest)return t;let e=new $root.sesame.v1.jobs.JobStatusRequest;return t.jobId!=null&&(e.jobId=t.jobId>>>0),e},i.toObject=function(t,e){e||(e={});let n={};return e.defaults&&(n.jobId=0),t.jobId!=null&&t.hasOwnProperty("jobId")&&(n.jobId=t.jobId),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.jobs.JobStatusRequest"},i}(),l.JobListRequest=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.jobs.JobListRequest;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":null},i.fromObject=function(t){return t instanceof $root.sesame.v1.jobs.JobListRequest?t:new $root.sesame.v1.jobs.JobListRequest},i.toObject=function(){return{}},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.jobs.JobListRequest"},i}(),l.ExportConfiguration=function(){function i(r){if(this.audioRouting=[],r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.filename="",i.prototype.container=0,i.prototype.videoCodec=0,i.prototype.width=0,i.prototype.height=0,i.prototype.fpsNum=0,i.prototype.fpsDen=0,i.prototype.rateControl=0,i.prototype.videoBitrateKbps=0,i.prototype.maxVideoBitrateKbps=0,i.prototype.gopSize=0,i.prototype.maxBFrames=0,i.prototype.profile="",i.prototype.level="",i.prototype.pixelFormat="",i.prototype.colorPrimaries="",i.prototype.colorTransfer="",i.prototype.colorMatrix="",i.prototype.fullRange=!1,i.prototype.audioCodec=0,i.prototype.audioBitrateKbps=0,i.prototype.audioSampleRateHz=0,i.prototype.audioChannels=0,i.prototype.audioRouting=$util.emptyArray,i.create=function(t){return new i(t)},i.encode=function(t,e){if(e||(e=$Writer.create()),t.filename!=null&&Object.hasOwnProperty.call(t,"filename")&&e.uint32(10).string(t.filename),t.container!=null&&Object.hasOwnProperty.call(t,"container")&&e.uint32(16).int32(t.container),t.videoCodec!=null&&Object.hasOwnProperty.call(t,"videoCodec")&&e.uint32(24).int32(t.videoCodec),t.width!=null&&Object.hasOwnProperty.call(t,"width")&&e.uint32(32).uint32(t.width),t.height!=null&&Object.hasOwnProperty.call(t,"height")&&e.uint32(40).uint32(t.height),t.fpsNum!=null&&Object.hasOwnProperty.call(t,"fpsNum")&&e.uint32(48).uint32(t.fpsNum),t.fpsDen!=null&&Object.hasOwnProperty.call(t,"fpsDen")&&e.uint32(56).uint32(t.fpsDen),t.rateControl!=null&&Object.hasOwnProperty.call(t,"rateControl")&&e.uint32(64).int32(t.rateControl),t.videoBitrateKbps!=null&&Object.hasOwnProperty.call(t,"videoBitrateKbps")&&e.uint32(72).uint32(t.videoBitrateKbps),t.maxVideoBitrateKbps!=null&&Object.hasOwnProperty.call(t,"maxVideoBitrateKbps")&&e.uint32(80).uint32(t.maxVideoBitrateKbps),t.gopSize!=null&&Object.hasOwnProperty.call(t,"gopSize")&&e.uint32(88).uint32(t.gopSize),t.maxBFrames!=null&&Object.hasOwnProperty.call(t,"maxBFrames")&&e.uint32(96).uint32(t.maxBFrames),t.profile!=null&&Object.hasOwnProperty.call(t,"profile")&&e.uint32(106).string(t.profile),t.level!=null&&Object.hasOwnProperty.call(t,"level")&&e.uint32(114).string(t.level),t.pixelFormat!=null&&Object.hasOwnProperty.call(t,"pixelFormat")&&e.uint32(122).string(t.pixelFormat),t.colorPrimaries!=null&&Object.hasOwnProperty.call(t,"colorPrimaries")&&e.uint32(130).string(t.colorPrimaries),t.colorTransfer!=null&&Object.hasOwnProperty.call(t,"colorTransfer")&&e.uint32(138).string(t.colorTransfer),t.colorMatrix!=null&&Object.hasOwnProperty.call(t,"colorMatrix")&&e.uint32(146).string(t.colorMatrix),t.fullRange!=null&&Object.hasOwnProperty.call(t,"fullRange")&&e.uint32(152).bool(t.fullRange),t.audioCodec!=null&&Object.hasOwnProperty.call(t,"audioCodec")&&e.uint32(160).int32(t.audioCodec),t.audioBitrateKbps!=null&&Object.hasOwnProperty.call(t,"audioBitrateKbps")&&e.uint32(168).uint32(t.audioBitrateKbps),t.audioSampleRateHz!=null&&Object.hasOwnProperty.call(t,"audioSampleRateHz")&&e.uint32(176).uint32(t.audioSampleRateHz),t.audioChannels!=null&&Object.hasOwnProperty.call(t,"audioChannels")&&e.uint32(184).uint32(t.audioChannels),t.audioRouting!=null&&t.audioRouting.length){e.uint32(194).fork();for(let n=0;n<t.audioRouting.length;++n)e.uint32(t.audioRouting[n]);e.ldelim()}return e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.jobs.ExportConfiguration;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.filename=t.string();break}case 2:{a.container=t.int32();break}case 3:{a.videoCodec=t.int32();break}case 4:{a.width=t.uint32();break}case 5:{a.height=t.uint32();break}case 6:{a.fpsNum=t.uint32();break}case 7:{a.fpsDen=t.uint32();break}case 8:{a.rateControl=t.int32();break}case 9:{a.videoBitrateKbps=t.uint32();break}case 10:{a.maxVideoBitrateKbps=t.uint32();break}case 11:{a.gopSize=t.uint32();break}case 12:{a.maxBFrames=t.uint32();break}case 13:{a.profile=t.string();break}case 14:{a.level=t.string();break}case 15:{a.pixelFormat=t.string();break}case 16:{a.colorPrimaries=t.string();break}case 17:{a.colorTransfer=t.string();break}case 18:{a.colorMatrix=t.string();break}case 19:{a.fullRange=t.bool();break}case 20:{a.audioCodec=t.int32();break}case 21:{a.audioBitrateKbps=t.uint32();break}case 22:{a.audioSampleRateHz=t.uint32();break}case 23:{a.audioChannels=t.uint32();break}case 24:{if(a.audioRouting&&a.audioRouting.length||(a.audioRouting=[]),(U&7)===2){let u=t.uint32()+t.pos;for(;t.pos<u;)a.audioRouting.push(t.uint32())}else a.audioRouting.push(t.uint32());break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.filename!=null&&t.hasOwnProperty("filename")&&!$util.isString(t.filename))return"filename: string expected";if(t.container!=null&&t.hasOwnProperty("container"))switch(t.container){default:return"container: enum value expected";case 0:case 1:case 2:case 3:case 4:break}if(t.videoCodec!=null&&t.hasOwnProperty("videoCodec"))switch(t.videoCodec){default:return"videoCodec: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 64:case 65:case 66:case 67:break}if(t.width!=null&&t.hasOwnProperty("width")&&!$util.isInteger(t.width))return"width: integer expected";if(t.height!=null&&t.hasOwnProperty("height")&&!$util.isInteger(t.height))return"height: integer expected";if(t.fpsNum!=null&&t.hasOwnProperty("fpsNum")&&!$util.isInteger(t.fpsNum))return"fpsNum: integer expected";if(t.fpsDen!=null&&t.hasOwnProperty("fpsDen")&&!$util.isInteger(t.fpsDen))return"fpsDen: integer expected";if(t.rateControl!=null&&t.hasOwnProperty("rateControl"))switch(t.rateControl){default:return"rateControl: enum value expected";case 0:case 1:case 2:case 3:break}if(t.videoBitrateKbps!=null&&t.hasOwnProperty("videoBitrateKbps")&&!$util.isInteger(t.videoBitrateKbps))return"videoBitrateKbps: integer expected";if(t.maxVideoBitrateKbps!=null&&t.hasOwnProperty("maxVideoBitrateKbps")&&!$util.isInteger(t.maxVideoBitrateKbps))return"maxVideoBitrateKbps: integer expected";if(t.gopSize!=null&&t.hasOwnProperty("gopSize")&&!$util.isInteger(t.gopSize))return"gopSize: integer expected";if(t.maxBFrames!=null&&t.hasOwnProperty("maxBFrames")&&!$util.isInteger(t.maxBFrames))return"maxBFrames: integer expected";if(t.profile!=null&&t.hasOwnProperty("profile")&&!$util.isString(t.profile))return"profile: string expected";if(t.level!=null&&t.hasOwnProperty("level")&&!$util.isString(t.level))return"level: string expected";if(t.pixelFormat!=null&&t.hasOwnProperty("pixelFormat")&&!$util.isString(t.pixelFormat))return"pixelFormat: string expected";if(t.colorPrimaries!=null&&t.hasOwnProperty("colorPrimaries")&&!$util.isString(t.colorPrimaries))return"colorPrimaries: string expected";if(t.colorTransfer!=null&&t.hasOwnProperty("colorTransfer")&&!$util.isString(t.colorTransfer))return"colorTransfer: string expected";if(t.colorMatrix!=null&&t.hasOwnProperty("colorMatrix")&&!$util.isString(t.colorMatrix))return"colorMatrix: string expected";if(t.fullRange!=null&&t.hasOwnProperty("fullRange")&&typeof t.fullRange!="boolean")return"fullRange: boolean expected";if(t.audioCodec!=null&&t.hasOwnProperty("audioCodec"))switch(t.audioCodec){default:return"audioCodec: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 64:case 65:case 66:case 67:break}if(t.audioBitrateKbps!=null&&t.hasOwnProperty("audioBitrateKbps")&&!$util.isInteger(t.audioBitrateKbps))return"audioBitrateKbps: integer expected";if(t.audioSampleRateHz!=null&&t.hasOwnProperty("audioSampleRateHz")&&!$util.isInteger(t.audioSampleRateHz))return"audioSampleRateHz: integer expected";if(t.audioChannels!=null&&t.hasOwnProperty("audioChannels")&&!$util.isInteger(t.audioChannels))return"audioChannels: integer expected";if(t.audioRouting!=null&&t.hasOwnProperty("audioRouting")){if(!Array.isArray(t.audioRouting))return"audioRouting: array expected";for(let e=0;e<t.audioRouting.length;++e)if(!$util.isInteger(t.audioRouting[e]))return"audioRouting: integer[] expected"}return null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.jobs.ExportConfiguration)return t;let e=new $root.sesame.v1.jobs.ExportConfiguration;switch(t.filename!=null&&(e.filename=String(t.filename)),t.container){default:if(typeof t.container=="number"){e.container=t.container;break}break;case"CONTAINER_FORMAT_UNSPECIFIED":case 0:e.container=0;break;case"CONTAINER_FORMAT_MP4":case 1:e.container=1;break;case"CONTAINER_FORMAT_MOV":case 2:e.container=2;break;case"CONTAINER_FORMAT_MKV":case 3:e.container=3;break;case"CONTAINER_FORMAT_MXF":case 4:e.container=4;break}switch(t.videoCodec){default:if(typeof t.videoCodec=="number"){e.videoCodec=t.videoCodec;break}break;case"CODEC_TYPE_UNSPECIFIED":case 0:e.videoCodec=0;break;case"CODEC_TYPE_VIDEO_VP8":case 1:e.videoCodec=1;break;case"CODEC_TYPE_VIDEO_VP9":case 2:e.videoCodec=2;break;case"CODEC_TYPE_VIDEO_AVC":case 3:e.videoCodec=3;break;case"CODEC_TYPE_VIDEO_HEVC":case 4:e.videoCodec=4;break;case"CODEC_TYPE_VIDEO_AV1":case 5:e.videoCodec=5;break;case"CODEC_TYPE_VIDEO_PRORES":case 6:e.videoCodec=6;break;case"CODEC_TYPE_VIDEO_DNXHR":case 7:e.videoCodec=7;break;case"CODEC_TYPE_AUDIO_OPUS":case 64:e.videoCodec=64;break;case"CODEC_TYPE_AUDIO_AAC":case 65:e.videoCodec=65;break;case"CODEC_TYPE_AUDIO_PCM":case 66:e.videoCodec=66;break;case"CODEC_TYPE_AUDIO_PCM_S24LE":case 67:e.videoCodec=67;break}switch(t.width!=null&&(e.width=t.width>>>0),t.height!=null&&(e.height=t.height>>>0),t.fpsNum!=null&&(e.fpsNum=t.fpsNum>>>0),t.fpsDen!=null&&(e.fpsDen=t.fpsDen>>>0),t.rateControl){default:if(typeof t.rateControl=="number"){e.rateControl=t.rateControl;break}break;case"RATE_CONTROL_MODE_UNSPECIFIED":case 0:e.rateControl=0;break;case"RATE_CONTROL_MODE_CBR":case 1:e.rateControl=1;break;case"RATE_CONTROL_MODE_VBR":case 2:e.rateControl=2;break;case"RATE_CONTROL_MODE_CQ":case 3:e.rateControl=3;break}switch(t.videoBitrateKbps!=null&&(e.videoBitrateKbps=t.videoBitrateKbps>>>0),t.maxVideoBitrateKbps!=null&&(e.maxVideoBitrateKbps=t.maxVideoBitrateKbps>>>0),t.gopSize!=null&&(e.gopSize=t.gopSize>>>0),t.maxBFrames!=null&&(e.maxBFrames=t.maxBFrames>>>0),t.profile!=null&&(e.profile=String(t.profile)),t.level!=null&&(e.level=String(t.level)),t.pixelFormat!=null&&(e.pixelFormat=String(t.pixelFormat)),t.colorPrimaries!=null&&(e.colorPrimaries=String(t.colorPrimaries)),t.colorTransfer!=null&&(e.colorTransfer=String(t.colorTransfer)),t.colorMatrix!=null&&(e.colorMatrix=String(t.colorMatrix)),t.fullRange!=null&&(e.fullRange=!!t.fullRange),t.audioCodec){default:if(typeof t.audioCodec=="number"){e.audioCodec=t.audioCodec;break}break;case"CODEC_TYPE_UNSPECIFIED":case 0:e.audioCodec=0;break;case"CODEC_TYPE_VIDEO_VP8":case 1:e.audioCodec=1;break;case"CODEC_TYPE_VIDEO_VP9":case 2:e.audioCodec=2;break;case"CODEC_TYPE_VIDEO_AVC":case 3:e.audioCodec=3;break;case"CODEC_TYPE_VIDEO_HEVC":case 4:e.audioCodec=4;break;case"CODEC_TYPE_VIDEO_AV1":case 5:e.audioCodec=5;break;case"CODEC_TYPE_VIDEO_PRORES":case 6:e.audioCodec=6;break;case"CODEC_TYPE_VIDEO_DNXHR":case 7:e.audioCodec=7;break;case"CODEC_TYPE_AUDIO_OPUS":case 64:e.audioCodec=64;break;case"CODEC_TYPE_AUDIO_AAC":case 65:e.audioCodec=65;break;case"CODEC_TYPE_AUDIO_PCM":case 66:e.audioCodec=66;break;case"CODEC_TYPE_AUDIO_PCM_S24LE":case 67:e.audioCodec=67;break}if(t.audioBitrateKbps!=null&&(e.audioBitrateKbps=t.audioBitrateKbps>>>0),t.audioSampleRateHz!=null&&(e.audioSampleRateHz=t.audioSampleRateHz>>>0),t.audioChannels!=null&&(e.audioChannels=t.audioChannels>>>0),t.audioRouting){if(!Array.isArray(t.audioRouting))throw TypeError(".sesame.v1.jobs.ExportConfiguration.audioRouting: array expected");e.audioRouting=[];for(let n=0;n<t.audioRouting.length;++n)e.audioRouting[n]=t.audioRouting[n]>>>0}return e},i.toObject=function(t,e){e||(e={});let n={};if((e.arrays||e.defaults)&&(n.audioRouting=[]),e.defaults&&(n.filename="",n.container=e.enums===String?"CONTAINER_FORMAT_UNSPECIFIED":0,n.videoCodec=e.enums===String?"CODEC_TYPE_UNSPECIFIED":0,n.width=0,n.height=0,n.fpsNum=0,n.fpsDen=0,n.rateControl=e.enums===String?"RATE_CONTROL_MODE_UNSPECIFIED":0,n.videoBitrateKbps=0,n.maxVideoBitrateKbps=0,n.gopSize=0,n.maxBFrames=0,n.profile="",n.level="",n.pixelFormat="",n.colorPrimaries="",n.colorTransfer="",n.colorMatrix="",n.fullRange=!1,n.audioCodec=e.enums===String?"CODEC_TYPE_UNSPECIFIED":0,n.audioBitrateKbps=0,n.audioSampleRateHz=0,n.audioChannels=0),t.filename!=null&&t.hasOwnProperty("filename")&&(n.filename=t.filename),t.container!=null&&t.hasOwnProperty("container")&&(n.container=e.enums===String?$root.sesame.v1.jobs.ContainerFormat[t.container]===void 0?t.container:$root.sesame.v1.jobs.ContainerFormat[t.container]:t.container),t.videoCodec!=null&&t.hasOwnProperty("videoCodec")&&(n.videoCodec=e.enums===String?$root.sesame.v1.common.CodecType[t.videoCodec]===void 0?t.videoCodec:$root.sesame.v1.common.CodecType[t.videoCodec]:t.videoCodec),t.width!=null&&t.hasOwnProperty("width")&&(n.width=t.width),t.height!=null&&t.hasOwnProperty("height")&&(n.height=t.height),t.fpsNum!=null&&t.hasOwnProperty("fpsNum")&&(n.fpsNum=t.fpsNum),t.fpsDen!=null&&t.hasOwnProperty("fpsDen")&&(n.fpsDen=t.fpsDen),t.rateControl!=null&&t.hasOwnProperty("rateControl")&&(n.rateControl=e.enums===String?$root.sesame.v1.jobs.RateControlMode[t.rateControl]===void 0?t.rateControl:$root.sesame.v1.jobs.RateControlMode[t.rateControl]:t.rateControl),t.videoBitrateKbps!=null&&t.hasOwnProperty("videoBitrateKbps")&&(n.videoBitrateKbps=t.videoBitrateKbps),t.maxVideoBitrateKbps!=null&&t.hasOwnProperty("maxVideoBitrateKbps")&&(n.maxVideoBitrateKbps=t.maxVideoBitrateKbps),t.gopSize!=null&&t.hasOwnProperty("gopSize")&&(n.gopSize=t.gopSize),t.maxBFrames!=null&&t.hasOwnProperty("maxBFrames")&&(n.maxBFrames=t.maxBFrames),t.profile!=null&&t.hasOwnProperty("profile")&&(n.profile=t.profile),t.level!=null&&t.hasOwnProperty("level")&&(n.level=t.level),t.pixelFormat!=null&&t.hasOwnProperty("pixelFormat")&&(n.pixelFormat=t.pixelFormat),t.colorPrimaries!=null&&t.hasOwnProperty("colorPrimaries")&&(n.colorPrimaries=t.colorPrimaries),t.colorTransfer!=null&&t.hasOwnProperty("colorTransfer")&&(n.colorTransfer=t.colorTransfer),t.colorMatrix!=null&&t.hasOwnProperty("colorMatrix")&&(n.colorMatrix=t.colorMatrix),t.fullRange!=null&&t.hasOwnProperty("fullRange")&&(n.fullRange=t.fullRange),t.audioCodec!=null&&t.hasOwnProperty("audioCodec")&&(n.audioCodec=e.enums===String?$root.sesame.v1.common.CodecType[t.audioCodec]===void 0?t.audioCodec:$root.sesame.v1.common.CodecType[t.audioCodec]:t.audioCodec),t.audioBitrateKbps!=null&&t.hasOwnProperty("audioBitrateKbps")&&(n.audioBitrateKbps=t.audioBitrateKbps),t.audioSampleRateHz!=null&&t.hasOwnProperty("audioSampleRateHz")&&(n.audioSampleRateHz=t.audioSampleRateHz),t.audioChannels!=null&&t.hasOwnProperty("audioChannels")&&(n.audioChannels=t.audioChannels),t.audioRouting&&t.audioRouting.length){n.audioRouting=[];for(let s=0;s<t.audioRouting.length;++s)n.audioRouting[s]=t.audioRouting[s]}return n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.jobs.ExportConfiguration"},i}(),l.ExportStartRequest=function(){function i(r){if(this.items=[],r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.config=null,i.prototype.items=$util.emptyArray,i.create=function(t){return new i(t)},i.encode=function(t,e){if(e||(e=$Writer.create()),t.config!=null&&Object.hasOwnProperty.call(t,"config")&&$root.sesame.v1.jobs.ExportConfiguration.encode(t.config,e.uint32(10).fork()).ldelim(),t.items!=null&&t.items.length)for(let n=0;n<t.items.length;++n)$root.sesame.v1.recorder.PlaylistItem.encode(t.items[n],e.uint32(18).fork()).ldelim();return e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.jobs.ExportStartRequest;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.config=$root.sesame.v1.jobs.ExportConfiguration.decode(t,t.uint32());break}case 2:{a.items&&a.items.length||(a.items=[]),a.items.push($root.sesame.v1.recorder.PlaylistItem.decode(t,t.uint32()));break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.config!=null&&t.hasOwnProperty("config")){let e=$root.sesame.v1.jobs.ExportConfiguration.verify(t.config);if(e)return"config."+e}if(t.items!=null&&t.hasOwnProperty("items")){if(!Array.isArray(t.items))return"items: array expected";for(let e=0;e<t.items.length;++e){let n=$root.sesame.v1.recorder.PlaylistItem.verify(t.items[e]);if(n)return"items."+n}}return null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.jobs.ExportStartRequest)return t;let e=new $root.sesame.v1.jobs.ExportStartRequest;if(t.config!=null){if(typeof t.config!="object")throw TypeError(".sesame.v1.jobs.ExportStartRequest.config: object expected");e.config=$root.sesame.v1.jobs.ExportConfiguration.fromObject(t.config)}if(t.items){if(!Array.isArray(t.items))throw TypeError(".sesame.v1.jobs.ExportStartRequest.items: array expected");e.items=[];for(let n=0;n<t.items.length;++n){if(typeof t.items[n]!="object")throw TypeError(".sesame.v1.jobs.ExportStartRequest.items: object expected");e.items[n]=$root.sesame.v1.recorder.PlaylistItem.fromObject(t.items[n])}}return e},i.toObject=function(t,e){e||(e={});let n={};if((e.arrays||e.defaults)&&(n.items=[]),e.defaults&&(n.config=null),t.config!=null&&t.hasOwnProperty("config")&&(n.config=$root.sesame.v1.jobs.ExportConfiguration.toObject(t.config,e)),t.items&&t.items.length){n.items=[];for(let s=0;s<t.items.length;++s)n.items[s]=$root.sesame.v1.recorder.PlaylistItem.toObject(t.items[s],e)}return n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.jobs.ExportStartRequest"},i}(),l.ImportConfiguration=function(){function i(r){if(this.audioRouting=[],r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.srcFilename="",i.prototype.audioRouting=$util.emptyArray,i.prototype.dstRecorderId="",i.prototype.dstClipId=$util.Long?$util.Long.fromBits(0,0,!0):0,i.prototype.dstClipName="",i.prototype.dstClipUserData="",i.create=function(t){return new i(t)},i.encode=function(t,e){if(e||(e=$Writer.create()),t.srcFilename!=null&&Object.hasOwnProperty.call(t,"srcFilename")&&e.uint32(10).string(t.srcFilename),t.audioRouting!=null&&t.audioRouting.length){e.uint32(18).fork();for(let n=0;n<t.audioRouting.length;++n)e.uint32(t.audioRouting[n]);e.ldelim()}return t.dstRecorderId!=null&&Object.hasOwnProperty.call(t,"dstRecorderId")&&e.uint32(26).string(t.dstRecorderId),t.dstClipId!=null&&Object.hasOwnProperty.call(t,"dstClipId")&&e.uint32(32).uint64(t.dstClipId),t.dstClipName!=null&&Object.hasOwnProperty.call(t,"dstClipName")&&e.uint32(42).string(t.dstClipName),t.dstClipUserData!=null&&Object.hasOwnProperty.call(t,"dstClipUserData")&&e.uint32(50).string(t.dstClipUserData),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.jobs.ImportConfiguration;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.srcFilename=t.string();break}case 2:{if(a.audioRouting&&a.audioRouting.length||(a.audioRouting=[]),(U&7)===2){let u=t.uint32()+t.pos;for(;t.pos<u;)a.audioRouting.push(t.uint32())}else a.audioRouting.push(t.uint32());break}case 3:{a.dstRecorderId=t.string();break}case 4:{a.dstClipId=t.uint64();break}case 5:{a.dstClipName=t.string();break}case 6:{a.dstClipUserData=t.string();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.srcFilename!=null&&t.hasOwnProperty("srcFilename")&&!$util.isString(t.srcFilename))return"srcFilename: string expected";if(t.audioRouting!=null&&t.hasOwnProperty("audioRouting")){if(!Array.isArray(t.audioRouting))return"audioRouting: array expected";for(let e=0;e<t.audioRouting.length;++e)if(!$util.isInteger(t.audioRouting[e]))return"audioRouting: integer[] expected"}return t.dstRecorderId!=null&&t.hasOwnProperty("dstRecorderId")&&!$util.isString(t.dstRecorderId)?"dstRecorderId: string expected":t.dstClipId!=null&&t.hasOwnProperty("dstClipId")&&!$util.isInteger(t.dstClipId)&&!(t.dstClipId&&$util.isInteger(t.dstClipId.low)&&$util.isInteger(t.dstClipId.high))?"dstClipId: integer|Long expected":t.dstClipName!=null&&t.hasOwnProperty("dstClipName")&&!$util.isString(t.dstClipName)?"dstClipName: string expected":t.dstClipUserData!=null&&t.hasOwnProperty("dstClipUserData")&&!$util.isString(t.dstClipUserData)?"dstClipUserData: string expected":null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.jobs.ImportConfiguration)return t;let e=new $root.sesame.v1.jobs.ImportConfiguration;if(t.srcFilename!=null&&(e.srcFilename=String(t.srcFilename)),t.audioRouting){if(!Array.isArray(t.audioRouting))throw TypeError(".sesame.v1.jobs.ImportConfiguration.audioRouting: array expected");e.audioRouting=[];for(let n=0;n<t.audioRouting.length;++n)e.audioRouting[n]=t.audioRouting[n]>>>0}return t.dstRecorderId!=null&&(e.dstRecorderId=String(t.dstRecorderId)),t.dstClipId!=null&&($util.Long?(e.dstClipId=$util.Long.fromValue(t.dstClipId)).unsigned=!0:typeof t.dstClipId=="string"?e.dstClipId=parseInt(t.dstClipId,10):typeof t.dstClipId=="number"?e.dstClipId=t.dstClipId:typeof t.dstClipId=="object"&&(e.dstClipId=new $util.LongBits(t.dstClipId.low>>>0,t.dstClipId.high>>>0).toNumber(!0))),t.dstClipName!=null&&(e.dstClipName=String(t.dstClipName)),t.dstClipUserData!=null&&(e.dstClipUserData=String(t.dstClipUserData)),e},i.toObject=function(t,e){e||(e={});let n={};if((e.arrays||e.defaults)&&(n.audioRouting=[]),e.defaults){if(n.srcFilename="",n.dstRecorderId="",$util.Long){let s=new $util.Long(0,0,!0);n.dstClipId=e.longs===String?s.toString():e.longs===Number?s.toNumber():s}else n.dstClipId=e.longs===String?"0":0;n.dstClipName="",n.dstClipUserData=""}if(t.srcFilename!=null&&t.hasOwnProperty("srcFilename")&&(n.srcFilename=t.srcFilename),t.audioRouting&&t.audioRouting.length){n.audioRouting=[];for(let s=0;s<t.audioRouting.length;++s)n.audioRouting[s]=t.audioRouting[s]}return t.dstRecorderId!=null&&t.hasOwnProperty("dstRecorderId")&&(n.dstRecorderId=t.dstRecorderId),t.dstClipId!=null&&t.hasOwnProperty("dstClipId")&&(typeof t.dstClipId=="number"?n.dstClipId=e.longs===String?String(t.dstClipId):t.dstClipId:n.dstClipId=e.longs===String?$util.Long.prototype.toString.call(t.dstClipId):e.longs===Number?new $util.LongBits(t.dstClipId.low>>>0,t.dstClipId.high>>>0).toNumber(!0):t.dstClipId),t.dstClipName!=null&&t.hasOwnProperty("dstClipName")&&(n.dstClipName=t.dstClipName),t.dstClipUserData!=null&&t.hasOwnProperty("dstClipUserData")&&(n.dstClipUserData=t.dstClipUserData),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.jobs.ImportConfiguration"},i}(),l.ImportStartRequest=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.config=null,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.config!=null&&Object.hasOwnProperty.call(t,"config")&&$root.sesame.v1.jobs.ImportConfiguration.encode(t.config,e.uint32(10).fork()).ldelim(),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.jobs.ImportStartRequest;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.config=$root.sesame.v1.jobs.ImportConfiguration.decode(t,t.uint32());break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.config!=null&&t.hasOwnProperty("config")){let e=$root.sesame.v1.jobs.ImportConfiguration.verify(t.config);if(e)return"config."+e}return null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.jobs.ImportStartRequest)return t;let e=new $root.sesame.v1.jobs.ImportStartRequest;if(t.config!=null){if(typeof t.config!="object")throw TypeError(".sesame.v1.jobs.ImportStartRequest.config: object expected");e.config=$root.sesame.v1.jobs.ImportConfiguration.fromObject(t.config)}return e},i.toObject=function(t,e){e||(e={});let n={};return e.defaults&&(n.config=null),t.config!=null&&t.hasOwnProperty("config")&&(n.config=$root.sesame.v1.jobs.ImportConfiguration.toObject(t.config,e)),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.jobs.ImportStartRequest"},i}(),l}(),o.rpc=function(){const l={};return l.Message=function(){function i(t){if(t)for(let e=Object.keys(t),n=0;n<e.length;++n)t[e[n]]!=null&&(this[e[n]]=t[e[n]])}i.prototype.request=null,i.prototype.response=null,i.prototype.event=null;let r;return Object.defineProperty(i.prototype,"payload",{get:$util.oneOfGetter(r=["request","response","event"]),set:$util.oneOfSetter(r)}),i.create=function(e){return new i(e)},i.encode=function(e,n){return n||(n=$Writer.create()),e.request!=null&&Object.hasOwnProperty.call(e,"request")&&$root.sesame.v1.rpc.Request.encode(e.request,n.uint32(10).fork()).ldelim(),e.response!=null&&Object.hasOwnProperty.call(e,"response")&&$root.sesame.v1.rpc.Response.encode(e.response,n.uint32(18).fork()).ldelim(),e.event!=null&&Object.hasOwnProperty.call(e,"event")&&$root.sesame.v1.rpc.Event.encode(e.event,n.uint32(26).fork()).ldelim(),n},i.encodeDelimited=function(e,n){return this.encode(e,n).ldelim()},i.decode=function(e,n,s){e instanceof $Reader||(e=$Reader.create(e));let a=n===void 0?e.len:e.pos+n,U=new $root.sesame.v1.rpc.Message;for(;e.pos<a;){let u=e.uint32();if(u===s)break;switch(u>>>3){case 1:{U.request=$root.sesame.v1.rpc.Request.decode(e,e.uint32());break}case 2:{U.response=$root.sesame.v1.rpc.Response.decode(e,e.uint32());break}case 3:{U.event=$root.sesame.v1.rpc.Event.decode(e,e.uint32());break}default:e.skipType(u&7);break}}return U},i.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},i.verify=function(e){if(typeof e!="object"||e===null)return"object expected";let n={};if(e.request!=null&&e.hasOwnProperty("request")){n.payload=1;{let s=$root.sesame.v1.rpc.Request.verify(e.request);if(s)return"request."+s}}if(e.response!=null&&e.hasOwnProperty("response")){if(n.payload===1)return"payload: multiple values";n.payload=1;{let s=$root.sesame.v1.rpc.Response.verify(e.response);if(s)return"response."+s}}if(e.event!=null&&e.hasOwnProperty("event")){if(n.payload===1)return"payload: multiple values";n.payload=1;{let s=$root.sesame.v1.rpc.Event.verify(e.event);if(s)return"event."+s}}return null},i.fromObject=function(e){if(e instanceof $root.sesame.v1.rpc.Message)return e;let n=new $root.sesame.v1.rpc.Message;if(e.request!=null){if(typeof e.request!="object")throw TypeError(".sesame.v1.rpc.Message.request: object expected");n.request=$root.sesame.v1.rpc.Request.fromObject(e.request)}if(e.response!=null){if(typeof e.response!="object")throw TypeError(".sesame.v1.rpc.Message.response: object expected");n.response=$root.sesame.v1.rpc.Response.fromObject(e.response)}if(e.event!=null){if(typeof e.event!="object")throw TypeError(".sesame.v1.rpc.Message.event: object expected");n.event=$root.sesame.v1.rpc.Event.fromObject(e.event)}return n},i.toObject=function(e,n){n||(n={});let s={};return e.request!=null&&e.hasOwnProperty("request")&&(s.request=$root.sesame.v1.rpc.Request.toObject(e.request,n),n.oneofs&&(s.payload="request")),e.response!=null&&e.hasOwnProperty("response")&&(s.response=$root.sesame.v1.rpc.Response.toObject(e.response,n),n.oneofs&&(s.payload="response")),e.event!=null&&e.hasOwnProperty("event")&&(s.event=$root.sesame.v1.rpc.Event.toObject(e.event,n),n.oneofs&&(s.payload="event")),s},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(e){return e===void 0&&(e="type.googleapis.com"),e+"/sesame.v1.rpc.Message"},i}(),l.Request=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.method="",i.prototype.seq=0,i.prototype.payload=$util.newBuffer([]),i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.method!=null&&Object.hasOwnProperty.call(t,"method")&&e.uint32(10).string(t.method),t.seq!=null&&Object.hasOwnProperty.call(t,"seq")&&e.uint32(16).uint32(t.seq),t.payload!=null&&Object.hasOwnProperty.call(t,"payload")&&e.uint32(26).bytes(t.payload),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.rpc.Request;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.method=t.string();break}case 2:{a.seq=t.uint32();break}case 3:{a.payload=t.bytes();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.method!=null&&t.hasOwnProperty("method")&&!$util.isString(t.method)?"method: string expected":t.seq!=null&&t.hasOwnProperty("seq")&&!$util.isInteger(t.seq)?"seq: integer expected":t.payload!=null&&t.hasOwnProperty("payload")&&!(t.payload&&typeof t.payload.length=="number"||$util.isString(t.payload))?"payload: buffer expected":null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.rpc.Request)return t;let e=new $root.sesame.v1.rpc.Request;return t.method!=null&&(e.method=String(t.method)),t.seq!=null&&(e.seq=t.seq>>>0),t.payload!=null&&(typeof t.payload=="string"?$util.base64.decode(t.payload,e.payload=$util.newBuffer($util.base64.length(t.payload)),0):t.payload.length>=0&&(e.payload=t.payload)),e},i.toObject=function(t,e){e||(e={});let n={};return e.defaults&&(n.method="",n.seq=0,e.bytes===String?n.payload="":(n.payload=[],e.bytes!==Array&&(n.payload=$util.newBuffer(n.payload)))),t.method!=null&&t.hasOwnProperty("method")&&(n.method=t.method),t.seq!=null&&t.hasOwnProperty("seq")&&(n.seq=t.seq),t.payload!=null&&t.hasOwnProperty("payload")&&(n.payload=e.bytes===String?$util.base64.encode(t.payload,0,t.payload.length):e.bytes===Array?Array.prototype.slice.call(t.payload):t.payload),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.rpc.Request"},i}(),l.Response=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.seq=0,i.prototype.ok=!1,i.prototype.payload=$util.newBuffer([]),i.prototype.error="",i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.seq!=null&&Object.hasOwnProperty.call(t,"seq")&&e.uint32(8).uint32(t.seq),t.ok!=null&&Object.hasOwnProperty.call(t,"ok")&&e.uint32(16).bool(t.ok),t.payload!=null&&Object.hasOwnProperty.call(t,"payload")&&e.uint32(26).bytes(t.payload),t.error!=null&&Object.hasOwnProperty.call(t,"error")&&e.uint32(34).string(t.error),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.rpc.Response;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.seq=t.uint32();break}case 2:{a.ok=t.bool();break}case 3:{a.payload=t.bytes();break}case 4:{a.error=t.string();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.seq!=null&&t.hasOwnProperty("seq")&&!$util.isInteger(t.seq)?"seq: integer expected":t.ok!=null&&t.hasOwnProperty("ok")&&typeof t.ok!="boolean"?"ok: boolean expected":t.payload!=null&&t.hasOwnProperty("payload")&&!(t.payload&&typeof t.payload.length=="number"||$util.isString(t.payload))?"payload: buffer expected":t.error!=null&&t.hasOwnProperty("error")&&!$util.isString(t.error)?"error: string expected":null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.rpc.Response)return t;let e=new $root.sesame.v1.rpc.Response;return t.seq!=null&&(e.seq=t.seq>>>0),t.ok!=null&&(e.ok=!!t.ok),t.payload!=null&&(typeof t.payload=="string"?$util.base64.decode(t.payload,e.payload=$util.newBuffer($util.base64.length(t.payload)),0):t.payload.length>=0&&(e.payload=t.payload)),t.error!=null&&(e.error=String(t.error)),e},i.toObject=function(t,e){e||(e={});let n={};return e.defaults&&(n.seq=0,n.ok=!1,e.bytes===String?n.payload="":(n.payload=[],e.bytes!==Array&&(n.payload=$util.newBuffer(n.payload))),n.error=""),t.seq!=null&&t.hasOwnProperty("seq")&&(n.seq=t.seq),t.ok!=null&&t.hasOwnProperty("ok")&&(n.ok=t.ok),t.payload!=null&&t.hasOwnProperty("payload")&&(n.payload=e.bytes===String?$util.base64.encode(t.payload,0,t.payload.length):e.bytes===Array?Array.prototype.slice.call(t.payload):t.payload),t.error!=null&&t.hasOwnProperty("error")&&(n.error=t.error),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.rpc.Response"},i}(),l.Event=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.topic=0,i.prototype.payload=$util.newBuffer([]),i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.topic!=null&&Object.hasOwnProperty.call(t,"topic")&&e.uint32(8).int32(t.topic),t.payload!=null&&Object.hasOwnProperty.call(t,"payload")&&e.uint32(18).bytes(t.payload),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.rpc.Event;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.topic=t.int32();break}case 2:{a.payload=t.bytes();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.topic!=null&&t.hasOwnProperty("topic"))switch(t.topic){default:return"topic: enum value expected";case 0:case 1:case 2:case 3:case 4:case 6:break}return t.payload!=null&&t.hasOwnProperty("payload")&&!(t.payload&&typeof t.payload.length=="number"||$util.isString(t.payload))?"payload: buffer expected":null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.rpc.Event)return t;let e=new $root.sesame.v1.rpc.Event;switch(t.topic){default:if(typeof t.topic=="number"){e.topic=t.topic;break}break;case"EVENT_TOPIC_UNSPECIFIED":case 0:e.topic=0;break;case"EVENT_TOPIC_ERROR":case 1:e.topic=1;break;case"EVENT_TOPIC_TRANSPORT":case 2:e.topic=2;break;case"EVENT_TOPIC_CALLBACK":case 3:e.topic=3;break;case"EVENT_TOPIC_JOB":case 4:e.topic=4;break;case"EVENT_TOPIC_RECORDER":case 6:e.topic=6;break}return t.payload!=null&&(typeof t.payload=="string"?$util.base64.decode(t.payload,e.payload=$util.newBuffer($util.base64.length(t.payload)),0):t.payload.length>=0&&(e.payload=t.payload)),e},i.toObject=function(t,e){e||(e={});let n={};return e.defaults&&(n.topic=e.enums===String?"EVENT_TOPIC_UNSPECIFIED":0,e.bytes===String?n.payload="":(n.payload=[],e.bytes!==Array&&(n.payload=$util.newBuffer(n.payload)))),t.topic!=null&&t.hasOwnProperty("topic")&&(n.topic=e.enums===String?$root.sesame.v1.common.EventTopic[t.topic]===void 0?t.topic:$root.sesame.v1.common.EventTopic[t.topic]:t.topic),t.payload!=null&&t.hasOwnProperty("payload")&&(n.payload=e.bytes===String?$util.base64.encode(t.payload,0,t.payload.length):e.bytes===Array?Array.prototype.slice.call(t.payload):t.payload),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.rpc.Event"},i}(),l.SesameAPIService=function(){function i(r,t,e){$protobuf.rpc.Service.call(this,r,t,e)}return(i.prototype=Object.create($protobuf.rpc.Service.prototype)).constructor=i,i.create=function(t,e,n){return new this(t,e,n)},Object.defineProperty(i.prototype.executeCommandList=function r(t,e){return this.rpcCall(r,$root.sesame.v1.commands.CommandList,$root.sesame.v1.commands.CommandExecutionResponse,t,e)},"name",{value:"ExecuteCommandList"}),Object.defineProperty(i.prototype.updateSubscriptions=function r(t,e){return this.rpcCall(r,$root.sesame.v1.status.SubscriptionRequest,$root.sesame.v1.common.Empty,t,e)},"name",{value:"UpdateSubscriptions"}),Object.defineProperty(i.prototype.notImplemented=function r(t,e){return this.rpcCall(r,$root.sesame.v1.common.Empty,$root.sesame.v1.common.Empty,t,e)},"name",{value:"NotImplemented"}),Object.defineProperty(i.prototype.requestEvents=function r(t,e){return this.rpcCall(r,$root.sesame.v1.common.Empty,$root.sesame.v1.status.Event,t,e)},"name",{value:"RequestEvents"}),Object.defineProperty(i.prototype.requestStatus=function r(t,e){return this.rpcCall(r,$root.sesame.v1.common.Empty,$root.sesame.v1.status.Status,t,e)},"name",{value:"RequestStatus"}),Object.defineProperty(i.prototype.requestRecorderOperation=function r(t,e){return this.rpcCall(r,$root.sesame.v1.recorder.RecorderRequest,$root.sesame.v1.recorder.RecorderResponse,t,e)},"name",{value:"RequestRecorderOperation"}),Object.defineProperty(i.prototype.startJob=function r(t,e){return this.rpcCall(r,$root.sesame.v1.jobs.JobStartRequest,$root.sesame.v1.jobs.Job,t,e)},"name",{value:"StartJob"}),Object.defineProperty(i.prototype.abortJob=function r(t,e){return this.rpcCall(r,$root.sesame.v1.jobs.JobAbortRequest,$root.sesame.v1.jobs.Job,t,e)},"name",{value:"AbortJob"}),Object.defineProperty(i.prototype.getJobStatus=function r(t,e){return this.rpcCall(r,$root.sesame.v1.jobs.JobStatusRequest,$root.sesame.v1.jobs.Job,t,e)},"name",{value:"GetJobStatus"}),Object.defineProperty(i.prototype.listJobs=function r(t,e){return this.rpcCall(r,$root.sesame.v1.jobs.JobListRequest,$root.sesame.v1.jobs.JobList,t,e)},"name",{value:"ListJobs"}),Object.defineProperty(i.prototype.requestKeyframe=function r(t,e){return this.rpcCall(r,$root.sesame.v1.outputs.KeyframeRequest,$root.sesame.v1.common.Empty,t,e)},"name",{value:"RequestKeyframe"}),Object.defineProperty(i.prototype.requestIODeviceList=function r(t,e){return this.rpcCall(r,$root.sesame.v1.common.Empty,$root.sesame.v1.status.IODeviceListResponse,t,e)},"name",{value:"RequestIODeviceList"}),i}(),l}(),o.wire=function(){const l={};return l.FrameType=function(){const i={},r=Object.create(i);return r[i[0]="FRAME_TYPE_UNSPECIFIED"]=0,r[i[1]="FRAME_TYPE_RPC"]=1,r[i[2]="FRAME_TYPE_VIDEO"]=2,r[i[3]="FRAME_TYPE_AUDIO"]=3,r[i[4]="FRAME_TYPE_MUXED"]=4,r[i[5]="FRAME_TYPE_DECODER_DATA"]=5,r[i[6]="FRAME_TYPE_DATA"]=6,r}(),l.MediaCodecData=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.codecType=0,i.prototype.sampleRate=0,i.prototype.timebaseNum=0,i.prototype.timebaseDen=0,i.prototype.codecProfile=0,i.prototype.codecLevel=0,i.prototype.width=0,i.prototype.height=0,i.prototype.channels=0,i.prototype.bitDepth=0,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.codecType!=null&&Object.hasOwnProperty.call(t,"codecType")&&e.uint32(8).int32(t.codecType),t.sampleRate!=null&&Object.hasOwnProperty.call(t,"sampleRate")&&e.uint32(16).uint32(t.sampleRate),t.timebaseNum!=null&&Object.hasOwnProperty.call(t,"timebaseNum")&&e.uint32(24).uint32(t.timebaseNum),t.timebaseDen!=null&&Object.hasOwnProperty.call(t,"timebaseDen")&&e.uint32(32).uint32(t.timebaseDen),t.codecProfile!=null&&Object.hasOwnProperty.call(t,"codecProfile")&&e.uint32(40).uint32(t.codecProfile),t.codecLevel!=null&&Object.hasOwnProperty.call(t,"codecLevel")&&e.uint32(48).uint32(t.codecLevel),t.width!=null&&Object.hasOwnProperty.call(t,"width")&&e.uint32(56).uint32(t.width),t.height!=null&&Object.hasOwnProperty.call(t,"height")&&e.uint32(64).uint32(t.height),t.channels!=null&&Object.hasOwnProperty.call(t,"channels")&&e.uint32(72).uint32(t.channels),t.bitDepth!=null&&Object.hasOwnProperty.call(t,"bitDepth")&&e.uint32(80).uint32(t.bitDepth),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.wire.MediaCodecData;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.codecType=t.int32();break}case 2:{a.sampleRate=t.uint32();break}case 3:{a.timebaseNum=t.uint32();break}case 4:{a.timebaseDen=t.uint32();break}case 5:{a.codecProfile=t.uint32();break}case 6:{a.codecLevel=t.uint32();break}case 7:{a.width=t.uint32();break}case 8:{a.height=t.uint32();break}case 9:{a.channels=t.uint32();break}case 10:{a.bitDepth=t.uint32();break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.codecType!=null&&t.hasOwnProperty("codecType"))switch(t.codecType){default:return"codecType: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 64:case 65:case 66:case 67:break}return t.sampleRate!=null&&t.hasOwnProperty("sampleRate")&&!$util.isInteger(t.sampleRate)?"sampleRate: integer expected":t.timebaseNum!=null&&t.hasOwnProperty("timebaseNum")&&!$util.isInteger(t.timebaseNum)?"timebaseNum: integer expected":t.timebaseDen!=null&&t.hasOwnProperty("timebaseDen")&&!$util.isInteger(t.timebaseDen)?"timebaseDen: integer expected":t.codecProfile!=null&&t.hasOwnProperty("codecProfile")&&!$util.isInteger(t.codecProfile)?"codecProfile: integer expected":t.codecLevel!=null&&t.hasOwnProperty("codecLevel")&&!$util.isInteger(t.codecLevel)?"codecLevel: integer expected":t.width!=null&&t.hasOwnProperty("width")&&!$util.isInteger(t.width)?"width: integer expected":t.height!=null&&t.hasOwnProperty("height")&&!$util.isInteger(t.height)?"height: integer expected":t.channels!=null&&t.hasOwnProperty("channels")&&!$util.isInteger(t.channels)?"channels: integer expected":t.bitDepth!=null&&t.hasOwnProperty("bitDepth")&&!$util.isInteger(t.bitDepth)?"bitDepth: integer expected":null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.wire.MediaCodecData)return t;let e=new $root.sesame.v1.wire.MediaCodecData;switch(t.codecType){default:if(typeof t.codecType=="number"){e.codecType=t.codecType;break}break;case"CODEC_TYPE_UNSPECIFIED":case 0:e.codecType=0;break;case"CODEC_TYPE_VIDEO_VP8":case 1:e.codecType=1;break;case"CODEC_TYPE_VIDEO_VP9":case 2:e.codecType=2;break;case"CODEC_TYPE_VIDEO_AVC":case 3:e.codecType=3;break;case"CODEC_TYPE_VIDEO_HEVC":case 4:e.codecType=4;break;case"CODEC_TYPE_VIDEO_AV1":case 5:e.codecType=5;break;case"CODEC_TYPE_VIDEO_PRORES":case 6:e.codecType=6;break;case"CODEC_TYPE_VIDEO_DNXHR":case 7:e.codecType=7;break;case"CODEC_TYPE_AUDIO_OPUS":case 64:e.codecType=64;break;case"CODEC_TYPE_AUDIO_AAC":case 65:e.codecType=65;break;case"CODEC_TYPE_AUDIO_PCM":case 66:e.codecType=66;break;case"CODEC_TYPE_AUDIO_PCM_S24LE":case 67:e.codecType=67;break}return t.sampleRate!=null&&(e.sampleRate=t.sampleRate>>>0),t.timebaseNum!=null&&(e.timebaseNum=t.timebaseNum>>>0),t.timebaseDen!=null&&(e.timebaseDen=t.timebaseDen>>>0),t.codecProfile!=null&&(e.codecProfile=t.codecProfile>>>0),t.codecLevel!=null&&(e.codecLevel=t.codecLevel>>>0),t.width!=null&&(e.width=t.width>>>0),t.height!=null&&(e.height=t.height>>>0),t.channels!=null&&(e.channels=t.channels>>>0),t.bitDepth!=null&&(e.bitDepth=t.bitDepth>>>0),e},i.toObject=function(t,e){e||(e={});let n={};return e.defaults&&(n.codecType=e.enums===String?"CODEC_TYPE_UNSPECIFIED":0,n.sampleRate=0,n.timebaseNum=0,n.timebaseDen=0,n.codecProfile=0,n.codecLevel=0,n.width=0,n.height=0,n.channels=0,n.bitDepth=0),t.codecType!=null&&t.hasOwnProperty("codecType")&&(n.codecType=e.enums===String?$root.sesame.v1.common.CodecType[t.codecType]===void 0?t.codecType:$root.sesame.v1.common.CodecType[t.codecType]:t.codecType),t.sampleRate!=null&&t.hasOwnProperty("sampleRate")&&(n.sampleRate=t.sampleRate),t.timebaseNum!=null&&t.hasOwnProperty("timebaseNum")&&(n.timebaseNum=t.timebaseNum),t.timebaseDen!=null&&t.hasOwnProperty("timebaseDen")&&(n.timebaseDen=t.timebaseDen),t.codecProfile!=null&&t.hasOwnProperty("codecProfile")&&(n.codecProfile=t.codecProfile),t.codecLevel!=null&&t.hasOwnProperty("codecLevel")&&(n.codecLevel=t.codecLevel),t.width!=null&&t.hasOwnProperty("width")&&(n.width=t.width),t.height!=null&&t.hasOwnProperty("height")&&(n.height=t.height),t.channels!=null&&t.hasOwnProperty("channels")&&(n.channels=t.channels),t.bitDepth!=null&&t.hasOwnProperty("bitDepth")&&(n.bitDepth=t.bitDepth),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.wire.MediaCodecData"},i}(),l.MediaFrameData=function(){function i(r){if(r)for(let t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return i.prototype.pts=$util.Long?$util.Long.fromBits(0,0,!0):0,i.prototype.keyframe=!1,i.prototype.codecData=null,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.pts!=null&&Object.hasOwnProperty.call(t,"pts")&&e.uint32(8).uint64(t.pts),t.keyframe!=null&&Object.hasOwnProperty.call(t,"keyframe")&&e.uint32(16).bool(t.keyframe),t.codecData!=null&&Object.hasOwnProperty.call(t,"codecData")&&$root.sesame.v1.wire.MediaCodecData.encode(t.codecData,e.uint32(26).fork()).ldelim(),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,n){t instanceof $Reader||(t=$Reader.create(t));let s=e===void 0?t.len:t.pos+e,a=new $root.sesame.v1.wire.MediaFrameData;for(;t.pos<s;){let U=t.uint32();if(U===n)break;switch(U>>>3){case 1:{a.pts=t.uint64();break}case 2:{a.keyframe=t.bool();break}case 3:{a.codecData=$root.sesame.v1.wire.MediaCodecData.decode(t,t.uint32());break}default:t.skipType(U&7);break}}return a},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.pts!=null&&t.hasOwnProperty("pts")&&!$util.isInteger(t.pts)&&!(t.pts&&$util.isInteger(t.pts.low)&&$util.isInteger(t.pts.high)))return"pts: integer|Long expected";if(t.keyframe!=null&&t.hasOwnProperty("keyframe")&&typeof t.keyframe!="boolean")return"keyframe: boolean expected";if(t.codecData!=null&&t.hasOwnProperty("codecData")){let e=$root.sesame.v1.wire.MediaCodecData.verify(t.codecData);if(e)return"codecData."+e}return null},i.fromObject=function(t){if(t instanceof $root.sesame.v1.wire.MediaFrameData)return t;let e=new $root.sesame.v1.wire.MediaFrameData;if(t.pts!=null&&($util.Long?(e.pts=$util.Long.fromValue(t.pts)).unsigned=!0:typeof t.pts=="string"?e.pts=parseInt(t.pts,10):typeof t.pts=="number"?e.pts=t.pts:typeof t.pts=="object"&&(e.pts=new $util.LongBits(t.pts.low>>>0,t.pts.high>>>0).toNumber(!0))),t.keyframe!=null&&(e.keyframe=!!t.keyframe),t.codecData!=null){if(typeof t.codecData!="object")throw TypeError(".sesame.v1.wire.MediaFrameData.codecData: object expected");e.codecData=$root.sesame.v1.wire.MediaCodecData.fromObject(t.codecData)}return e},i.toObject=function(t,e){e||(e={});let n={};if(e.defaults){if($util.Long){let s=new $util.Long(0,0,!0);n.pts=e.longs===String?s.toString():e.longs===Number?s.toNumber():s}else n.pts=e.longs===String?"0":0;n.keyframe=!1,n.codecData=null}return t.pts!=null&&t.hasOwnProperty("pts")&&(typeof t.pts=="number"?n.pts=e.longs===String?String(t.pts):t.pts:n.pts=e.longs===String?$util.Long.prototype.toString.call(t.pts):e.longs===Number?new $util.LongBits(t.pts.low>>>0,t.pts.high>>>0).toNumber(!0):t.pts),t.keyframe!=null&&t.hasOwnProperty("keyframe")&&(n.keyframe=t.keyframe),t.codecData!=null&&t.hasOwnProperty("codecData")&&(n.codecData=$root.sesame.v1.wire.MediaCodecData.toObject(t.codecData,e)),n},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/sesame.v1.wire.MediaFrameData"},i}(),l.FrameHeader=function(){function i(t){if(t)for(let e=Object.keys(t),n=0;n<e.length;++n)t[e[n]]!=null&&(this[e[n]]=t[e[n]])}i.prototype.type=0,i.prototype.routingMetadata="",i.prototype.media=null;let r;return Object.defineProperty(i.prototype,"typeData",{get:$util.oneOfGetter(r=["media"]),set:$util.oneOfSetter(r)}),i.create=function(e){return new i(e)},i.encode=function(e,n){return n||(n=$Writer.create()),e.type!=null&&Object.hasOwnProperty.call(e,"type")&&n.uint32(8).int32(e.type),e.routingMetadata!=null&&Object.hasOwnProperty.call(e,"routingMetadata")&&n.uint32(50).string(e.routingMetadata),e.media!=null&&Object.hasOwnProperty.call(e,"media")&&$root.sesame.v1.wire.MediaFrameData.encode(e.media,n.uint32(58).fork()).ldelim(),n},i.encodeDelimited=function(e,n){return this.encode(e,n).ldelim()},i.decode=function(e,n,s){e instanceof $Reader||(e=$Reader.create(e));let a=n===void 0?e.len:e.pos+n,U=new $root.sesame.v1.wire.FrameHeader;for(;e.pos<a;){let u=e.uint32();if(u===s)break;switch(u>>>3){case 1:{U.type=e.int32();break}case 6:{U.routingMetadata=e.string();break}case 7:{U.media=$root.sesame.v1.wire.MediaFrameData.decode(e,e.uint32());break}default:e.skipType(u&7);break}}return U},i.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},i.verify=function(e){if(typeof e!="object"||e===null)return"object expected";if(e.type!=null&&e.hasOwnProperty("type"))switch(e.type){default:return"type: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 6:break}if(e.routingMetadata!=null&&e.hasOwnProperty("routingMetadata")&&!$util.isString(e.routingMetadata))return"routingMetadata: string expected";if(e.media!=null&&e.hasOwnProperty("media")){let n=$root.sesame.v1.wire.MediaFrameData.verify(e.media);if(n)return"media."+n}return null},i.fromObject=function(e){if(e instanceof $root.sesame.v1.wire.FrameHeader)return e;let n=new $root.sesame.v1.wire.FrameHeader;switch(e.type){default:if(typeof e.type=="number"){n.type=e.type;break}break;case"FRAME_TYPE_UNSPECIFIED":case 0:n.type=0;break;case"FRAME_TYPE_RPC":case 1:n.type=1;break;case"FRAME_TYPE_VIDEO":case 2:n.type=2;break;case"FRAME_TYPE_AUDIO":case 3:n.type=3;break;case"FRAME_TYPE_MUXED":case 4:n.type=4;break;case"FRAME_TYPE_DECODER_DATA":case 5:n.type=5;break;case"FRAME_TYPE_DATA":case 6:n.type=6;break}if(e.routingMetadata!=null&&(n.routingMetadata=String(e.routingMetadata)),e.media!=null){if(typeof e.media!="object")throw TypeError(".sesame.v1.wire.FrameHeader.media: object expected");n.media=$root.sesame.v1.wire.MediaFrameData.fromObject(e.media)}return n},i.toObject=function(e,n){n||(n={});let s={};return n.defaults&&(s.type=n.enums===String?"FRAME_TYPE_UNSPECIFIED":0,s.routingMetadata=""),e.type!=null&&e.hasOwnProperty("type")&&(s.type=n.enums===String?$root.sesame.v1.wire.FrameType[e.type]===void 0?e.type:$root.sesame.v1.wire.FrameType[e.type]:e.type),e.routingMetadata!=null&&e.hasOwnProperty("routingMetadata")&&(s.routingMetadata=e.routingMetadata),e.media!=null&&e.hasOwnProperty("media")&&(s.media=$root.sesame.v1.wire.MediaFrameData.toObject(e.media,n),n.oneofs&&(s.typeData="media")),s},i.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},i.getTypeUrl=function(e){return e===void 0&&(e="type.googleapis.com"),e+"/sesame.v1.wire.FrameHeader"},i}(),l}(),o}(),d})(),import_events=__toESM(require_events()),ConsoleLogger=class{debug(d,...o){console.debug(`[DEBUG] ${d}`,...o)}info(d,...o){console.info(`[INFO] ${d}`,...o)}warn(d,...o){console.warn(`[WARN] ${d}`,...o)}error(d,...o){console.error(`[ERROR] ${d}`,...o)}},logger=new ConsoleLogger,log={debug:(d,...o)=>logger.debug(d,...o),info:(d,...o)=>logger.info(d,...o),warn:(d,...o)=>logger.warn(d,...o),error:(d,...o)=>logger.error(d,...o)},RPCClient=class extends import_events.EventEmitter{constructor(d,o,l={}){super(),this.messageBuffer={},this.nextSeq=0,this.openHandler=()=>{this.emit("open"),this.flushMessageBuffer().catch(i=>{log.error("RPC openhandler",i)})},this.rpcImpl=(i,r,t)=>{const e=this.nextSeq;this.nextSeq=this.nextSeq+1&65535;let n=new sesame.v1.rpc.Request({seq:e,method:i.name,payload:r});const s=new sesame.v1.rpc.Message({request:n});let a;this.sendTimeout>0&&(a=setTimeout(()=>{try{const U=new Error(`Timed out after ${this.sendTimeout}ms`);this.rpcCallback(e,U)}catch(U){this.errorHandler(U)}},this.sendTimeout)),this.messageBuffer[e]={seq:e,callback:t,timer:a},this.connection.isConnected()?this.writeMessage(s).catch(U=>{this.rpcCallback(e,U)}):this.messageBuffer[e].message=s},this.rpcCallback=(i,r,t)=>{if(!this.messageBuffer[i]){this.errorHandler(new Error(`Got response for unknown seqNo: ${i}`));return}const{callback:e,timer:n}=this.messageBuffer[i];n&&clearTimeout(n),delete this.messageBuffer[i];try{e(r,t)}catch(s){this.errorHandler(s)}},this.writeMessage=async i=>{if(!this.connection)throw new Error("No socket");const r=sesame.v1.rpc.Message.encode(i).finish();await this.connection.send(r)},this.errorHandler=i=>{this.listenerCount("error")>0&&this.emit("error",i)},this.messageHandler=i=>{try{const r=sesame.v1.rpc.Message.decode(i);if(r.response)this.responseHandler(r.response);else if(r.event)this.eventHandler(r.event);else throw new Error("Unsupported RPC message payload")}catch(r){const t=new Error(`Got invalid message: ${r instanceof Error?r.message:String(r)}`);this.errorHandler(t)}},this.connection=d,this.connection.on("open",this.openHandler),this.connection.on("rpc",i=>this.messageHandler(i)),this.connection.on("error",this.errorHandler),this.options=l,this.service=this.wrapServicePromises(o.create(this.rpcImpl)),this.eventTypes=l.eventTypes||{},this.sendTimeout=l.sendTimeout||5*1e3}wrapServicePromises(d){return new Proxy(d,{get(o,l){const i=o[l];return typeof i!="function"?i:function(...r){const t=i.apply(o,r);return t!=null&&typeof t.catch=="function"&&t.catch(()=>{}),t}}})}async flushMessageBuffer(){const d=[];for(const o in this.messageBuffer)this.messageBuffer[o].message&&d.push(this.messageBuffer[o]);for(d.sort((o,l)=>o.seq-l.seq);d.length>0;){const o=d.shift();try{await this.writeMessage(o.message),o.message=void 0}catch(l){this.rpcCallback(o.seq,l)}}}async responseHandler(d){d.ok?this.rpcCallback(d.seq,null,d.payload):this.rpcCallback(d.seq,new Error(d.error||"Unknown error"))}eventHandler(d){const o=d.topic??0;if(o===sesame.v1.common.EventTopic.EVENT_TOPIC_UNSPECIFIED){log.warn(`Ignoring event with unspecified topic: ${d.topic}`);return}const l=this.eventTypes[o];let i,r;if(d.payload&&d.payload.length>0)if(l)try{i=l.decode(d.payload),r=l.toObject(i,{longs:Number})}catch(t){const e=new Error(`Could not decode event payload: ${t instanceof Error?t.message:String(t)}`);this.errorHandler(e);return}else i=d.payload;this.emit("event",o,r||i)}},import_events2=__toESM(require_events()),FrameType=sesame.v1.wire.FrameType;sesame.v1.wire.FrameHeader;sesame.v1.wire.MediaCodecData;var CodecType=sesame.v1.common.CodecType,PREFIX_SIZE=4,WireProtocol=class{static serialize(d,o){const l=sesame.v1.wire.FrameHeader.encode(d).finish(),i=l.length,r=o?o.length:0,t=PREFIX_SIZE+i+r,e=new Uint8Array(t);return new DataView(e.buffer).setUint32(0,i,!0),e.set(l,PREFIX_SIZE),o&&r>0&&e.set(o,PREFIX_SIZE+i),e}static parse(d){const o={valid:!1,header:null,payload:null};if(!d||d.length<PREFIX_SIZE)return o;const i=new DataView(d.buffer,d.byteOffset,d.byteLength).getUint32(0,!0);if(d.length<PREFIX_SIZE+i)return o;try{const r=d.subarray(PREFIX_SIZE,PREFIX_SIZE+i);o.header=sesame.v1.wire.FrameHeader.decode(r),o.payload=d.subarray(PREFIX_SIZE+i),o.valid=!0}catch{}return o}};function waitForEvent(d,o){return new Promise(l=>{d.once(o,l)})}var SesameConnection=class extends import_events2.EventEmitter{constructor(d){super(),this.active=!1,this.numRetries=0,this.url="",this.autoReconnect=!0,this._state="disconnected",this.boundMessageHandler=o=>this.messageHandler(o),this.boundOpenHandler=()=>this.openHandler(),this.boundCloseHandler=()=>this.closeHandler(),this.boundErrorHandler=o=>this.errorHandler(o),this.openHandler=()=>{this.numRetries=0,this.setState("connected"),this.emit("open")},this.messageHandler=o=>{var l;if(o.data instanceof ArrayBuffer){const i=WireProtocol.parse(new Uint8Array(o.data));if(!i.valid){this.emit("error",new Error("Invalid packet received"));return}((l=i.header)==null?void 0:l.type)===FrameType.FRAME_TYPE_RPC?this.emit("rpc",i.payload):this.emit("media-packet",i)}},this.url=d.url,this.autoReconnect=d.autoReconnect,d.autoConnect&&this.connect().catch(()=>{})}get state(){return this._state}setState(d){if(this._state===d)return;const o=this._state;switch(this._state=d,d){case"connected":log.info("Connected to Sesame");break;case"reconnecting":o==="connected"?log.warn("Lost connection to Sesame, will try reconnect.."):log.warn("Failed to connect to Sesame, will try reconnect..");break;case"disconnected":log.info("Disconnected from Sesame");break}this.emit("state",d,o)}isConnected(){return this.socket!==void 0&&this.socket.readyState===WebSocket.OPEN}async send(d){if(!this.isConnected())throw new Error("Not connected");const o={type:sesame.v1.wire.FrameType.FRAME_TYPE_RPC},l=WireProtocol.serialize(o,d);return this.socket.send(l),Promise.resolve()}async connect(){this.active=!0,this._state==="disconnected"&&this.setState("connecting"),this.socket=new WebSocket(this.url),this.socket.addEventListener("message",this.boundMessageHandler),this.socket.addEventListener("open",this.boundOpenHandler),this.socket.addEventListener("close",this.boundCloseHandler),this.socket.addEventListener("error",this.boundErrorHandler),this.socket.binaryType="arraybuffer",await new Promise((d,o)=>{const l=()=>{this.removeListener("open",i),this.removeListener("close",t),this.removeListener("error",r)},i=()=>{l(),d()},r=e=>{l(),o(e instanceof Error?e:new Error("WebSocket connection error"))},t=()=>{this.isConnected()||(l(),o(new Error("WebSocket connection closed before opening")))};this.on("open",i),this.on("close",t),this.on("error",r)})}async disconnect(){if(this.active=!1,!this.socket){this.setState("disconnected");return}const d=this.socket;d.readyState!==WebSocket.CLOSED&&(d.close(),await waitForEvent(this,"close")),this.removeSocketListeners(d)}removeSocketListeners(d){d.removeEventListener("message",this.boundMessageHandler),d.removeEventListener("open",this.boundOpenHandler),d.removeEventListener("close",this.boundCloseHandler),d.removeEventListener("error",this.boundErrorHandler)}retryHandler(){this.active&&this.autoReconnect&&this.connect().catch(()=>{})}closeHandler(){this.emit("close"),this.socket&&this.removeSocketListeners(this.socket),this.socket=void 0,this.active?this.autoReconnect?(this.setState("reconnecting"),setTimeout(()=>{this.retryHandler()},defaultBackoff(++this.numRetries))):(this.active=!1,this.setState("disconnected")):this.setState("disconnected")}errorHandler(d){this.emit("error",d)}},defaultBackoff=d=>3e3,import_events3=__toESM(require_events()),StatusApi=class{constructor(d){this.rpc=d}async getStatus(){return this.rpc.service.requestStatus(new sesame.v1.common.Empty)}async getIODevices(){return this.rpc.service.requestIODeviceList(new sesame.v1.common.Empty)}},RecorderApi=class{constructor(d){this.rpc=d}async addClip(d,o){const l=sesame.v1.recorder.RecorderClipAddRequest.create({clip:o});await this.rpc.service.requestRecorderOperation({recorderId:d,addClip:l})}async copyClip(d,o,l){const i=sesame.v1.recorder.RecorderClipCopyRequest.create({clipId:o,newClipId:l});await this.rpc.service.requestRecorderOperation({recorderId:d,copyClip:i})}async removeClip(d,o){const l=sesame.v1.recorder.RecorderClipRemoveRequest.create({clipId:o});await this.rpc.service.requestRecorderOperation({recorderId:d,removeClip:l})}async removeAllClips(d,o){const l=sesame.v1.recorder.RecorderClipsClearRequest.create();o&&(l.protectedRanges=o),await this.rpc.service.requestRecorderOperation({recorderId:d,clearClips:l})}async verifyClips(d){var i;const o=sesame.v1.recorder.RecorderClipsVerifyRequest.create();return((i=(await this.rpc.service.requestRecorderOperation({recorderId:d,verifyClips:o})).verifyClipsResponse)==null?void 0:i.errors)||[]}async getClips(d){var i;const o=sesame.v1.recorder.RecorderClipsGetRequest.create(),l=await this.rpc.service.requestRecorderOperation({recorderId:d,getClips:o});if((i=l.getClipsResponse)!=null&&i.clips)return l.getClipsResponse.clips;throw new Error(`No clips returned: ${JSON.stringify(l)}`)}async setLockedDuration(d){const o=sesame.v1.recorder.RecorderLockedDurationSetRequest.create({frames:d});await this.rpc.service.requestRecorderOperation({recorderId:"",setLockedDuration:o})}async setMetadata(d,o){const l=sesame.v1.recorder.RecorderMetadataSetRequest.create({metadata:o});await this.rpc.service.requestRecorderOperation({recorderId:d,setMetadata:l})}},JobsApi=class{constructor(d){this.rpc=d}async importClip(d){const o=sesame.v1.jobs.ImportStartRequest.create();o.config=d;const l=sesame.v1.jobs.JobStartRequest.create({importRequest:o}),i=await this.rpc.service.startJob(l);if(i.error)throw new Error(i.error);return i}async exportPlaylist(d,o){const l=sesame.v1.jobs.ExportStartRequest.create();if(!o.filename)throw new Error("Filename is required");l.config={...o,videoCodec:o.videoCodec??sesame.v1.common.CodecType.CODEC_TYPE_VIDEO_AVC,videoBitrateKbps:o.videoBitrateKbps??1024,audioCodec:o.audioCodec??sesame.v1.common.CodecType.CODEC_TYPE_AUDIO_AAC,audioBitrateKbps:o.audioBitrateKbps??128,audioChannels:o.audioChannels??4,audioRouting:o.audioRouting??[0,1,2,3]},l.items=d.clips.map(t=>({...t,transitionTimeUs:t.transitionTimeUs??0,transitionType:t.transitionType??sesame.v1.recorder.TransitionType.TRANSITION_TYPE_MIX,transitionFadeColor:t.transitionFadeColor??{x:0,y:0,z:0,w:0},speed:t.speed??1}));const i=sesame.v1.jobs.JobStartRequest.create({exportRequest:l}),r=await this.rpc.service.startJob(i);if(r.error)throw new Error(r.error);return r}async abortJob(d){const o={jobId:d};return this.rpc.service.abortJob(o)}async getJobStatus(d){const o={jobId:d};return this.rpc.service.getJobStatus(o)}async listJobs(){const d={};return this.rpc.service.listJobs(d)}};(class extends import_events3.EventEmitter{constructor(d){super(),this.subscriptions=[],this.onMediaPacket=()=>{},this.onCallbackMessage=()=>{};const o=typeof d=="number"?`ws://127.0.0.1:${d}/api`:d;this.conn=new SesameConnection({url:o,autoConnect:!0,autoReconnect:!0}),this.conn.on("error",()=>{});let i={eventTypes:{[sesame.v1.common.EventTopic.EVENT_TOPIC_ERROR]:sesame.v1.status.Event,[sesame.v1.common.EventTopic.EVENT_TOPIC_TRANSPORT]:sesame.v1.status.Event,[sesame.v1.common.EventTopic.EVENT_TOPIC_CALLBACK]:sesame.v1.status.Event,[sesame.v1.common.EventTopic.EVENT_TOPIC_JOB]:sesame.v1.status.Event,[sesame.v1.common.EventTopic.EVENT_TOPIC_RECORDER]:sesame.v1.status.Event}};this.rpc=new RPCClient(this.conn,sesame.v1.rpc.SesameAPIService,i),this.status=new StatusApi(this.rpc),this.recorder=new RecorderApi(this.rpc),this.jobs=new JobsApi(this.rpc),this.rpc.on("event",(r,t)=>{for(const e of this.subscriptions)e.topic===r&&e.callback(e.topic,t)}),this.rpc.on("error",r=>{this.isConnected()&&log.error(`RPC error: ${r.message}`)}),this.conn.on("open",async()=>{this.sendSubscriptions(),this.emit("connected")}),this.conn.on("close",()=>{this.emit("disconnected")}),this.conn.on("media-packet",r=>this.onMediaPacket(this.mediaSubscriptionId,r)),this.subscriptions=[]}isConnected(){return this.conn.isConnected()}sendSubscriptions(){if(!this.isConnected())return;const d=this.subscriptions.map(i=>i.topic),o=[];this.mediaSubscriptionId&&o.push(`media-stream/${this.mediaSubscriptionId}`);let l={eventTopics:d,channels:o};this.rpc.service.updateSubscriptions(l).catch(i=>{log.error(`Failed to update subscriptions: ${i.message}`)})}addMediaSubscription(d){this.mediaSubscriptionId=d,this.sendSubscriptions()}addSubscription(d,o){for(let l=0;l<this.subscriptions.length;l++)if(this.subscriptions[l].callback===o&&this.subscriptions[l].topic===d)return;this.subscriptions.push({topic:d,callback:o}),this.sendSubscriptions()}removeSubscription(d,o){this.subscriptions=this.subscriptions.filter(l=>!(l.topic===d&&l.callback===o)),this.sendSubscriptions()}getService(){return this.rpc}async requestKeyframe(d){await this.rpc.service.requestKeyframe({id:d})}async execute(d){d.filterCreatedAndDestroyedSources(),d.getCommandListMsg().commandList.length>0&&await this.rpc.service.executeCommandList(d.getCommandListMsg())}disconnect(){this.conn.disconnect()}});sesame.v1.rpc.Message;sesame.v1.rpc.Request;sesame.v1.rpc.Response;sesame.v1.rpc.Event;function isLong(d){return d!==null&&typeof d=="object"&&"low"in d&&"high"in d&&typeof d.toNumber=="function"}const LIVE_WORKLET_CODE=`
2
2
  class LiveAudioProcessor extends AudioWorkletProcessor {
3
3
  constructor(options) {
4
4
  super();
@@ -148,7 +148,7 @@ class LiveAudioProcessor extends AudioWorkletProcessor {
148
148
  }
149
149
 
150
150
  registerProcessor('live-audio-processor', LiveAudioProcessor);
151
- `;class Kn{constructor(U,e={}){d(this,"ctx");d(this,"decoder",null);d(this,"workletNode",null);d(this,"gainNode");d(this,"initialized",!1);d(this,"targetSampleRate");d(this,"startTime",0);d(this,"bufferDelayMs");this.ctx=U,this.targetSampleRate=U.sampleRate,this.bufferDelayMs=e.bufferDelayMs??100,this.gainNode=this.ctx.createGain(),this.startTime=performance.now()*1e3}async init(U){if(this.ctx.audioWorklet===void 0)throw new Error("AudioWorklet not supported - need localhost or HTTPS");const e=this.buildDecoderConfig(U);if(!(await AudioDecoder.isConfigSupported(e)).supported)throw new Error(`Audio codec not supported: ${e.codec}`);this.decoder=new AudioDecoder({output:n=>this.handleDecodedFrame(n),error:n=>{console.error("LiveAudioPlayer decoder error:",n)}}),this.decoder.configure(e);const F=new Blob([Ql],{type:"application/javascript"}),Q=URL.createObjectURL(F);try{await this.ctx.audioWorklet.addModule(Q)}finally{URL.revokeObjectURL(Q)}this.workletNode=new AudioWorkletNode(this.ctx,"live-audio-processor",{numberOfInputs:0,numberOfOutputs:1,outputChannelCount:[2],processorOptions:{sampleRate:this.ctx.sampleRate}}),this.workletNode.connect(this.gainNode).connect(this.ctx.destination),this.workletNode.port.postMessage({type:"setBufferTarget",targetMs:this.bufferDelayMs}),this.workletNode.port.postMessage({type:"setSampleRate",sampleRate:this.ctx.sampleRate}),this.initialized=!0}buildDecoderConfig(U){const e=(U==null?void 0:U.codec_type)??g.AUDIO_OPUS,t=(U==null?void 0:U.sample_rate)||48e3,F=(U==null?void 0:U.channels)||2;switch(e){case g.AUDIO_OPUS:return{codec:"opus",sampleRate:48e3,numberOfChannels:F};case g.AUDIO_AAC:return{codec:"mp4a.40.2",sampleRate:t,numberOfChannels:F};case g.AUDIO_PCM:throw new Error("PCM audio not yet supported");default:return{codec:"opus",sampleRate:48e3,numberOfChannels:2}}}handleDecodedFrame(U){if(!this.workletNode){U.close();return}try{const e=U.numberOfFrames;let t=1;try{U.numberOfChannels>1&&(U.allocationSize({planeIndex:1,frameOffset:0,frameCount:1}),t=U.numberOfChannels)}catch{t=1}const F=new Float32Array(e),Q=new Float32Array(e);if(t===1){const a=U.allocationSize({planeIndex:0,frameOffset:0,frameCount:U.numberOfFrames}),B=new ArrayBuffer(a);U.copyTo(B,{planeIndex:0,frameOffset:0,frameCount:U.numberOfFrames});const r=new Float32Array(B);if(U.numberOfChannels===1)F.set(r),Q.set(r);else for(let h=0;h<e;h++)F[h]=r[h*2],Q[h]=r[h*2+1]}else{const a=new ArrayBuffer(U.allocationSize({planeIndex:0,frameOffset:0,frameCount:U.numberOfFrames}));if(U.copyTo(a,{planeIndex:0,frameOffset:0,frameCount:U.numberOfFrames}),F.set(new Float32Array(a)),U.numberOfChannels>1){const B=new ArrayBuffer(U.allocationSize({planeIndex:1,frameOffset:0,frameCount:U.numberOfFrames}));U.copyTo(B,{planeIndex:1,frameOffset:0,frameCount:U.numberOfFrames}),Q.set(new Float32Array(B))}else Q.set(F)}const n=this.resampleAudio(F,U.sampleRate,this.targetSampleRate),s=this.resampleAudio(Q,U.sampleRate,this.targetSampleRate),l=U.timestamp??performance.now()*1e3-this.startTime;this.workletNode.port.postMessage({type:"audioData",data:{left:n.buffer,right:s.buffer},timestamp:l},[n.buffer,s.buffer]),U.close()}catch(e){console.error("Error processing live audio frame:",e),U.close()}}resampleAudio(U,e,t){if(e===t)return U;const F=e/t,Q=Math.floor(U.length/F),n=new Float32Array(Q);for(let s=0;s<Q;s++){const l=s*F,a=Math.floor(l),B=Math.min(a+1,U.length-1),r=l-a;n[s]=U[a]*(1-r)+U[B]*r}return n}decode(U,e){if(!(!this.initialized||!this.decoder||this.decoder.state!=="configured")&&!(U.length<1))try{const t=e!==void 0?Number(e):performance.now()*1e3-this.startTime,F=new EncodedAudioChunk({type:"key",timestamp:Math.max(0,t),data:U});this.decoder.decode(F)}catch(t){console.error("Error decoding live audio:",t)}}setBufferDelay(U){var e;this.bufferDelayMs=U,(e=this.workletNode)==null||e.port.postMessage({type:"setBufferTarget",targetMs:U})}start(){var U;(U=this.workletNode)==null||U.port.postMessage({type:"start"}),this.ctx.resume()}stop(){var U;(U=this.workletNode)==null||U.port.postMessage({type:"stop"})}clear(){var U;(U=this.workletNode)==null||U.port.postMessage({type:"clear"}),this.resetTiming()}resetTiming(){this.startTime=performance.now()*1e3}setVolume(U){this.gainNode.gain.value=Math.max(0,Math.min(1,U))}dispose(){if(this.initialized=!1,this.decoder){try{this.decoder.state==="configured"&&this.decoder.reset(),this.decoder.state!=="closed"&&this.decoder.close()}catch{}this.decoder=null}if(this.workletNode){try{this.workletNode.disconnect()}catch{}this.workletNode=null}if(this.gainNode)try{this.gainNode.disconnect()}catch{}}}function il(i={}){return new Oi(i)}const Pi=class Pi extends pn{constructor(e={}){super("idle",e.debugLogging??!1);d(this,"config");d(this,"streamSource",null);d(this,"trackFilter",null);d(this,"boundDataHandler",null);d(this,"decoder",null);d(this,"currentCodecData");d(this,"useWasmDecoder",!1);d(this,"waitingForKeyframe",!0);d(this,"lastWaitingForKeyframeLog",0);d(this,"lastKeyframeRequest",0);d(this,"statusLogCounter",0);d(this,"isConfiguring",!1);d(this,"pendingDuringConfig",[]);d(this,"frameScheduler");d(this,"lastVideoFrame",null);d(this,"consecutiveDrops",0);d(this,"totalDrops",0);d(this,"lastDropLogTime",0);d(this,"streamWidth",0);d(this,"streamHeight",0);d(this,"estimatedFrameRate",30);d(this,"lastVideoTimestampUs",-1);d(this,"fpsEstimateSamples",[]);d(this,"audioContext",null);d(this,"audioPlayer",null);d(this,"ownsAudioContext",!1);d(this,"audioCodecData",null);d(this,"arrivalTimes",new Map);d(this,"keyframeStatus",new Map);d(this,"videoBytesReceived",0);d(this,"audioBytesReceived",0);d(this,"lastBandwidthUpdateTime",0);d(this,"lastVideoBytesReceived",0);d(this,"lastAudioBytesReceived",0);d(this,"currentBandwidth",{videoBytesPerSecond:0,audioBytesPerSecond:0,totalBytesPerSecond:0});this.config={preferredDecoder:e.preferredDecoder??"webcodecs-sw",bufferDelayMs:e.bufferDelayMs??100,enableAudio:e.enableAudio??!0,videoTrackName:e.videoTrackName===void 0?"video":e.videoTrackName,audioTrackName:e.audioTrackName===void 0?"audio":e.audioTrackName,debugLogging:e.debugLogging??!1},this.config.enableAudio&&(this.audioContext=new AudioContext,this.ownsAudioContext=!0),this.frameScheduler=new jn({bufferDelayMs:this.config.bufferDelayMs,logger:t=>{this.config.debugLogging&&this.logger.info(t)},onFrameDropped:(t,F)=>{if(this.totalDrops++,this.consecutiveDrops++,this.config.debugLogging){const Q=Date.now();(Q-this.lastDropLogTime>500||this.consecutiveDrops===1)&&(this.consecutiveDrops>1?this.logger.warn(`Dropped ${this.consecutiveDrops} frames (${F}), total=${this.totalDrops}`):this.logger.warn(`Frame dropped (${F}), total=${this.totalDrops}`),this.lastDropLogTime=Q,this.consecutiveDrops=0)}t.close()}})}setDebugLogging(e){this.config.debugLogging=e,super.setDebugLogging(e)}setVolume(e){this.audioPlayer&&this.audioPlayer.setVolume(e)}getVolume(){return 1}setStreamSource(e){this.streamSource&&this.boundDataHandler&&this.streamSource.off("data",this.boundDataHandler),this.streamSource=e,this.boundDataHandler=this.handleStreamData.bind(this),this.streamSource.on("data",this.boundDataHandler),this.logger.info("Stream source connected")}setTrackFilter(e){this.trackFilter=e,this.logger.info(`Track filter set: ${e}`)}connectToMoQSession(e,t){this.setStreamSource(e),t&&this.setTrackFilter(t)}async connectToMoQRelay(e,t,F){const{createMoQSource:Q}=await Promise.resolve().then(()=>sR),n=(F==null?void 0:F.videoTrack)??this.config.videoTrackName??"video",s=(F==null?void 0:F.audioTrack)===!1?null:(F==null?void 0:F.audioTrack)??this.config.audioTrackName??"audio",l=[{trackName:n,streamType:"video",priority:0}];s&&this.config.enableAudio&&l.push({trackName:s,streamType:"audio",priority:0}),this.logger.info(`MoQ subscriptions: ${JSON.stringify(l)}`);const a=Q({relayUrl:e,namespace:t,subscriptions:l});this.setStreamSource(a),await a.connect()}play(){this._state!=="error"&&(this.setState("playing"),this.logger.info("Playback started"))}pause(){this._state==="playing"&&(this.setState("paused"),this.logger.info("Playback paused"))}getVideoFrame(e){if(this._state!=="playing")return this.config.debugLogging&&this.logger.debug(`getVideoFrame: state=${this._state}, returning lastFrame=${!!this.lastVideoFrame}`),this.lastVideoFrame;this.config.debugLogging&&(this.statusLogCounter++,this.statusLogCounter>=300&&(this.frameScheduler.logStatus(),this.statusLogCounter=0));const t=this.frameScheduler.dequeue(e);return t&&(this.consecutiveDrops=0,this.lastVideoFrame&&this.lastVideoFrame!==t&&this.lastVideoFrame.close(),this.lastVideoFrame=t),this.lastVideoFrame}setBufferDelay(e){var t;this.config.bufferDelayMs=e,this.frameScheduler.setBufferDelay(e),(t=this.audioPlayer)==null||t.setBufferDelay(e)}getBufferDelay(){return this.frameScheduler.getBufferDelay()}setPreferredDecoder(e){var n,s,l,a;const t=this.config.preferredDecoder;this.config.preferredDecoder=e,t==="wasm"!==(e==="wasm")&&this.decoder?(this.logger.info(`Decoder type changed from ${t} to ${e}, switching decoder...`),this.decoder.dispose(),this.decoder=null,this.frameScheduler.clear(),this.lastVideoFrame&&(this.lastVideoFrame.close(),this.lastVideoFrame=null),this.waitingForKeyframe=!0,this.currentCodecData=void 0,(s=(n=this.streamSource)==null?void 0:n.requestKeyframe)==null||s.call(n),this.logger.info("Keyframe requested for decoder switch")):t!==e&&this.decoder&&(this.logger.info(`Decoder preference changed from ${t} to ${e}`),this.waitingForKeyframe=!0,this.currentCodecData=void 0,this.decoder.dispose(),this.decoder=null,this.frameScheduler.clear(),(a=(l=this.streamSource)==null?void 0:l.requestKeyframe)==null||a.call(l))}flush(){var e,t,F;this.logger.info("Flushing player pipeline"),this.waitingForKeyframe=!0,(e=this.decoder)==null||e.flushSync(),this.frameScheduler.clear(),this.lastVideoFrame&&(this.lastVideoFrame.close(),this.lastVideoFrame=null),(F=(t=this.streamSource)==null?void 0:t.requestKeyframe)==null||F.call(t)}getStats(){var t;const e=this.frameScheduler.getStatus();return this.updateBandwidthStats(),{bufferSize:e.currentBufferSize,bufferMs:e.currentBufferMs,avgBufferMs:e.avgBufferMs,targetBufferMs:e.targetBufferMs,droppedFrames:e.droppedFrames,totalFrames:e.totalEnqueuedFrames,decoderState:((t=this.decoder)==null?void 0:t.state)??"none",streamWidth:this.streamWidth,streamHeight:this.streamHeight,frameRate:this.estimatedFrameRate,latency:e.latency,bandwidth:this.currentBandwidth}}updateBandwidthStats(){const e=performance.now(),t=e-this.lastBandwidthUpdateTime;if(t<500)return;const F=t/1e3,Q=this.videoBytesReceived-this.lastVideoBytesReceived,n=this.audioBytesReceived-this.lastAudioBytesReceived;this.currentBandwidth={videoBytesPerSecond:Q/F,audioBytesPerSecond:n/F,totalBytesPerSecond:(Q+n)/F},this.lastBandwidthUpdateTime=e,this.lastVideoBytesReceived=this.videoBytesReceived,this.lastAudioBytesReceived=this.audioBytesReceived}getPacketTimingHistory(){return this.frameScheduler.getPacketTimingHistory()}on(e,t){super.on(e,t)}off(e,t){super.off(e,t)}async handleStreamData(e){var l,a,B,r,h;const t=e.data;if(!t.valid||!t.header)return;const F=t.payload_size||0;if(t.header.type===$.AUDIO_FRAME||e.streamType==="audio"){this.audioBytesReceived+=F;const V=this.config.audioTrackName;if(V!=null&&e.trackName!==V&&e.streamType!=="audio")return;await this.handleAudioData(t);return}this.videoBytesReceived+=F;const n=this.trackFilter??this.config.videoTrackName;if(n!=null&&e.trackName!==n||e.streamType!=="video"||!t.codec_data)return;const s=!!(t.header.flags&$i);if(In(this.currentCodecData,t.codec_data)){if(!s){this.logger.debug("Waiting for keyframe (codec change)");return}this.currentCodecData=t.codec_data,this.isConfiguring=!0,this.pendingDuringConfig=[t],await this.configureDecoder(t.codec_data),this.isConfiguring=!1,this.waitingForKeyframe=!0;const V=this.pendingDuringConfig;this.pendingDuringConfig=[],this.logger.info(`Processing ${V.length} frames queued during configuration`);for(const S of V)await this.handleStreamData({trackName:e.trackName,streamType:e.streamType,data:S});return}if(this.isConfiguring){this.logger.debug(`Queueing frame pts=${t.header.pts} during configuration`),this.pendingDuringConfig.push(t);return}if(!this.decoder||this.decoder.state!=="configured"){this.logger.warn(`Dropping frame pts=${t.header.pts}: decoder not ready (state=${((l=this.decoder)==null?void 0:l.state)??"null"})`);return}if(this.waitingForKeyframe){if(!s){this.logger.debug(`Dropping frame pts=${t.header.pts}: waiting for keyframe`);const V=Date.now();(!this.lastWaitingForKeyframeLog||V-this.lastWaitingForKeyframeLog>1e3)&&(this.logger.info("Waiting for keyframe to resume playback..."),this.lastWaitingForKeyframeLog=V,(!this.lastKeyframeRequest||V-this.lastKeyframeRequest>1e3)&&(this.logger.info("Requesting keyframe..."),(B=(a=this.streamSource)==null?void 0:a.requestKeyframe)==null||B.call(a),this.lastKeyframeRequest=V));return}this.logger.debug("Keyframe received, resuming decode"),this.waitingForKeyframe=!1,this.lastWaitingForKeyframeLog=0}try{const V=performance.now(),S=(r=t.codec_data)!=null&&r.timebase_den&&((h=t.codec_data)!=null&&h.timebase_num)?{num:t.codec_data.timebase_num,den:t.codec_data.timebase_den}:{num:1,den:1e6},c={num:1,den:1e6},W=En(t.header.pts,S,c);if(this.arrivalTimes.set(W,V),this.keyframeStatus.set(W,s),this.lastVideoTimestampUs>=0&&W>this.lastVideoTimestampUs){const N=W-this.lastVideoTimestampUs;if(N>5e3&&N<1e6&&(this.fpsEstimateSamples.push(N),this.fpsEstimateSamples.length>Pi.FPS_SAMPLE_COUNT&&this.fpsEstimateSamples.shift(),this.fpsEstimateSamples.length>=3)){const k=this.fpsEstimateSamples.reduce((f,x)=>f+x,0)/this.fpsEstimateSamples.length;this.estimatedFrameRate=Math.round(1e6/k)}}if(this.lastVideoTimestampUs=W,this.arrivalTimes.size>100){const N=[...this.arrivalTimes.entries()];for(let k=0;k<N.length-100;k++)this.arrivalTimes.delete(N[k][0]),this.keyframeStatus.delete(N[k][0])}this.decoder.decodeBinary(t)}catch(V){this.logger.error(`Decode error: ${V}`)}}async handleAudioData(e){if(!this.config.enableAudio)return;const t=this.audioCodecData??void 0;e.codec_data&&In(t,e.codec_data)&&(this.audioCodecData=e.codec_data,this.audioPlayer&&(this.audioPlayer.dispose(),this.audioPlayer=null),this.audioContext||(this.audioContext=new AudioContext,this.ownsAudioContext=!0),this.audioPlayer=new Kn(this.audioContext,{bufferDelayMs:this.config.bufferDelayMs??100}),await this.audioPlayer.init(e.codec_data),this.audioPlayer.start(),this.logger.info(`Audio player started: ${e.codec_data.codec_type}, ${e.codec_data.sample_rate}Hz, ${e.codec_data.channels}ch`)),this.audioPlayer&&e.payload&&e.header&&this.audioPlayer.decode(e.payload,e.header.pts)}async configureDecoder(e){this.useWasmDecoder=this.config.preferredDecoder==="wasm",(!this.decoder||this.useWasmDecoder&&this.decoder instanceof Li||!this.useWasmDecoder&&this.decoder instanceof rn)&&(this.decoder&&this.decoder.dispose(),this.useWasmDecoder?(this.logger.info("Using WASM decoder"),this.decoder=new rn({onFrameDecoded:F=>this.handleDecodedYUVFrame(F),onError:F=>this.handleDecoderError(F),onQueueOverflow:F=>this.handleQueueOverflow(F),maxQueueSize:10})):(this.logger.info(`Using WebCodecs decoder (${this.config.preferredDecoder})`),this.decoder=new Li({logger:this.logger,onFrameDecoded:F=>this.handleDecodedFrame(F),onError:F=>this.handleDecoderError(F),onQueueOverflow:F=>this.handleQueueOverflow(F),maxQueueSize:10})));const t=this.config.preferredDecoder==="webcodecs-hw";try{this.useWasmDecoder?await this.decoder.configure(e):await this.decoder.configure(e,t),this.streamWidth=e.width,this.streamHeight=e.height,this.lastVideoTimestampUs=-1,this.fpsEstimateSamples=[],this.estimatedFrameRate=30,this.emit("metadata",{width:e.width,height:e.height,codec:this.getCodecName(e.codec_type)})}catch(F){this.logger.error(`Failed to configure decoder: ${F}`),this.setState("error"),this.emit("error",F instanceof Error?F:new Error(String(F)))}}getCodecName(e){switch(e){case 3:return"H.264";case 4:return"HEVC";case 5:return"AV1";default:return"Unknown"}}handleDecodedFrame(e){const t=performance.now(),F=this.arrivalTimes.get(e.timestamp)??t,Q=this.keyframeStatus.get(e.timestamp)??!1,n={arrivalTime:F,decodeTime:t};this.frameScheduler.enqueue(e,e.timestamp,n,Q),this.emit("frame",e)}handleDecodedYUVFrame(e){const t=performance.now(),F=this.arrivalTimes.get(e.timestamp)??t,Q=this.keyframeStatus.get(e.timestamp)??!1,n=this.convertYUVToVideoFrame(e,this.streamWidth,this.streamHeight);if(n){const s={arrivalTime:F,decodeTime:t};this.frameScheduler.enqueue(n,e.timestamp,s,Q),this.emit("frame",n)}}convertYUVToVideoFrame(e,t,F){try{const{y:Q,u:n,v:s,width:l,height:a,chromaStride:B,chromaHeight:r}=e,h=t>0?t:l,V=F>0?F:a,c=l*a,W=B*r,N=c+W*2,k=new Uint8Array(N);k.set(Q.subarray(0,c),0);const f=l/2,x=c;if(B===f)k.set(n.subarray(0,W),x);else for(let p=0;p<r;p++)k.set(n.subarray(p*B,p*B+f),x+p*f);const m=x+f*r;if(B===f)k.set(s.subarray(0,W),m);else for(let p=0;p<r;p++)k.set(s.subarray(p*B,p*B+f),m+p*f);return new VideoFrame(k,{format:"I420",codedWidth:l,codedHeight:a,visibleRect:{x:0,y:0,width:h,height:V},timestamp:e.timestamp,duration:this.estimatedFrameRate>0?1e6/this.estimatedFrameRate:33333})}catch(Q){return this.logger.error(`YUV conversion error: ${Q}`),null}}handleDecoderError(e){this.logger.error(`Decoder error: ${e.message}`),this.emit("error",e)}handleQueueOverflow(e){this.logger.warn(`Decoder queue overflow: ${e} frames, flushing...`),this.flush()}dispose(){this.streamSource&&this.boundDataHandler&&this.streamSource.off("data",this.boundDataHandler),this.streamSource=null,this.boundDataHandler=null,this.decoder&&(this.decoder.dispose(),this.decoder=null),this.audioPlayer&&(this.audioPlayer.dispose(),this.audioPlayer=null),this.ownsAudioContext&&this.audioContext&&this.audioContext.close(),this.audioContext=null,this.audioCodecData=null,this.frameScheduler.clear(),this.lastVideoFrame&&(this.lastVideoFrame.close(),this.lastVideoFrame=null),this.arrivalTimes.clear(),this.currentCodecData=void 0,this.waitingForKeyframe=!0,this.totalDrops=0,this.consecutiveDrops=0,this.clearEventHandlers(),this.setState("idle"),this.logger.info("Player disposed")}};d(Pi,"FPS_SAMPLE_COUNT",10);let Oi=Pi;var nl=Object.defineProperty,Pn=(i,U)=>{for(var e in U)nl(i,e,{get:U[e],enumerable:!0})},Bn=Math.pow(2,32),M=Math.pow(2,32)-1,sl=1,ll=2,al=4,Mi=1,yi=2,wi=8,Ii=16,vi=32,_n=131072,hU=1,_i=4,VU=256,JU=512,cU=1024,SU=2048,qn=-1,A=0,H=1,K=class $n extends ArrayBuffer{constructor(U){super(U),this.fileStart=0,this.usedBytes=0}static fromArrayBuffer(U,e){const t=new $n(U.byteLength);return new Uint8Array(t).set(new Uint8Array(U)),t.fileStart=e,t}},EU,Rn,Z,_=(Z=class{constructor(U,e,t){sn(this,EU);this._byteLength=0,this.failurePosition=0,this._dynamicSize=1,this._byteOffset=e||0,U instanceof ArrayBuffer?this.buffer=K.fromArrayBuffer(U,0):U instanceof DataView?(this.dataView=U,e&&(this._byteOffset+=e)):this.buffer=new K(U||0),this.position=0,this.endianness=t||1}getPosition(){return this.position}_realloc(U){if(!this._dynamicSize)return;const e=this._byteOffset+this.position+U;let t=this._buffer.byteLength;if(e<=t){e>this._byteLength&&(this._byteLength=e);return}for(t<1&&(t=1);e>t;)t*=2;const F=new K(t),Q=new Uint8Array(this._buffer);new Uint8Array(F,0,Q.length).set(Q),this.buffer=F,this._byteLength=e}_trimAlloc(){if(this._byteLength===this._buffer.byteLength)return;const U=new K(this._byteLength),e=new Uint8Array(U),t=new Uint8Array(this._buffer,0,e.length);e.set(t),this.buffer=U}get byteLength(){return this._byteLength-this._byteOffset}get buffer(){return this._trimAlloc(),this._buffer}set buffer(U){this._buffer=U,this._dataView=new DataView(U,this._byteOffset),this._byteLength=U.byteLength}get byteOffset(){return this._byteOffset}set byteOffset(U){this._byteOffset=U,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}get dataView(){return this._dataView}set dataView(U){this._byteOffset=U.byteOffset,this._buffer=K.fromArrayBuffer(U.buffer,0),this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._byteOffset+U.byteLength}seek(U){const e=Math.max(0,Math.min(this.byteLength,U));this.position=isNaN(e)||!isFinite(e)?0:e}isEof(){return this.position>=this._byteLength}mapUint8Array(U){this._realloc(U*1);const e=new Uint8Array(this._buffer,this.byteOffset+this.position,U);return this.position+=U*1,e}readInt32Array(U,e){U=U===void 0?this.byteLength-this.position/4:U;const t=new Int32Array(U);return Z.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,U*t.BYTES_PER_ELEMENT),Z.arrayToNative(t,e??this.endianness),this.position+=t.byteLength,t}readInt16Array(U,e){U=U===void 0?this.byteLength-this.position/2:U;const t=new Int16Array(U);return Z.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,U*t.BYTES_PER_ELEMENT),Z.arrayToNative(t,e??this.endianness),this.position+=t.byteLength,t}readInt8Array(U){U=U===void 0?this.byteLength-this.position:U;const e=new Int8Array(U);return Z.memcpy(e.buffer,0,this.buffer,this.byteOffset+this.position,U*e.BYTES_PER_ELEMENT),this.position+=e.byteLength,e}readUint32Array(U,e){U=U===void 0?this.byteLength-this.position/4:U;const t=new Uint32Array(U);return Z.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,U*t.BYTES_PER_ELEMENT),Z.arrayToNative(t,e??this.endianness),this.position+=t.byteLength,t}readUint16Array(U,e){U=U===void 0?this.byteLength-this.position/2:U;const t=new Uint16Array(U);return Z.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,U*t.BYTES_PER_ELEMENT),Z.arrayToNative(t,e??this.endianness),this.position+=t.byteLength,t}readUint8Array(U){U=U===void 0?this.byteLength-this.position:U;const e=new Uint8Array(U);return Z.memcpy(e.buffer,0,this.buffer,this.byteOffset+this.position,U*e.BYTES_PER_ELEMENT),this.position+=e.byteLength,e}readFloat64Array(U,e){U=U===void 0?this.byteLength-this.position/8:U;const t=new Float64Array(U);return Z.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,U*t.BYTES_PER_ELEMENT),Z.arrayToNative(t,e??this.endianness),this.position+=t.byteLength,t}readFloat32Array(U,e){U=U===void 0?this.byteLength-this.position/4:U;const t=new Float32Array(U);return Z.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,U*t.BYTES_PER_ELEMENT),Z.arrayToNative(t,e??this.endianness),this.position+=t.byteLength,t}readInt32(U){const e=this._dataView.getInt32(this.position,(U??this.endianness)===2);return this.position+=4,e}readInt16(U){const e=this._dataView.getInt16(this.position,(U??this.endianness)===2);return this.position+=2,e}readInt8(){const U=this._dataView.getInt8(this.position);return this.position+=1,U}readUint32(U){const e=this._dataView.getUint32(this.position,(U??this.endianness)===2);return this.position+=4,e}readUint16(U){const e=this._dataView.getUint16(this.position,(U??this.endianness)===2);return this.position+=2,e}readUint8(){const U=this._dataView.getUint8(this.position);return this.position+=1,U}readFloat32(U){const e=this._dataView.getFloat32(this.position,(U??this.endianness)===2);return this.position+=4,e}readFloat64(U){const e=this._dataView.getFloat64(this.position,(U??this.endianness)===2);return this.position+=8,e}static memcpy(U,e,t,F,Q){const n=new Uint8Array(U,e,Q),s=new Uint8Array(t,F,Q);n.set(s)}static arrayToNative(U,e){return e===Z.ENDIANNESS?U:this.flipArrayEndianness(U)}static nativeToEndian(U,e){return e&&Z.ENDIANNESS===2?U:this.flipArrayEndianness(U)}static flipArrayEndianness(U){const e=new Uint8Array(U.buffer,U.byteOffset,U.byteLength);for(let t=0;t<U.byteLength;t+=U.BYTES_PER_ELEMENT)for(let F=t+U.BYTES_PER_ELEMENT-1,Q=t;F>Q;F--,Q++){const n=e[Q];e[Q]=e[F],e[F]=n}return U}readString(U,e){return e===void 0||e==="ASCII"?Hn(this.mapUint8Array(U===void 0?this.byteLength-this.position:U)):new TextDecoder(e).decode(this.mapUint8Array(U))}readCString(U){let e=0;const t=this.byteLength-this.position,F=new Uint8Array(this._buffer,this._byteOffset+this.position),Q=U!==void 0?Math.min(U,t):t;for(;e<Q&&F[e]!==0;e++);const n=Hn(this.mapUint8Array(e));return U!==void 0?this.position+=Q-e:e!==t&&(this.position+=1),n}readInt64(){return this.readInt32()*Bn+this.readUint32()}readUint64(){return this.readUint32()*Bn+this.readUint32()}readUint24(){return(this.readUint8()<<16)+(this.readUint8()<<8)+this.readUint8()}save(U){const e=new Blob([this.buffer]);if(typeof window<"u"&&typeof document<"u")if(window.URL&&URL.createObjectURL){const t=window.URL.createObjectURL(e),F=document.createElement("a");document.body.appendChild(F),F.setAttribute("href",t),F.setAttribute("download",U),F.setAttribute("target","_self"),F.click(),window.URL.revokeObjectURL(t),document.body.removeChild(F)}else throw new Error("DataStream.save: Can't create object URL.");return e}get dynamicSize(){return this._dynamicSize}set dynamicSize(U){U||this._trimAlloc(),this._dynamicSize=U}shift(U){const e=new K(this._byteLength-U),t=new Uint8Array(e),F=new Uint8Array(this._buffer,U,t.length);t.set(F),this.buffer=e,this.position-=U}writeInt32Array(U,e){if(this._realloc(U.length*4),U instanceof Int32Array&&this.byteOffset+this.position%U.BYTES_PER_ELEMENT===0)Z.memcpy(this._buffer,this.byteOffset+this.position,U.buffer,0,U.byteLength),this.mapInt32Array(U.length,e);else for(let t=0;t<U.length;t++)this.writeInt32(U[t],e)}writeInt16Array(U,e){if(this._realloc(U.length*2),U instanceof Int16Array&&this.byteOffset+this.position%U.BYTES_PER_ELEMENT===0)Z.memcpy(this._buffer,this.byteOffset+this.position,U.buffer,0,U.byteLength),this.mapInt16Array(U.length,e);else for(let t=0;t<U.length;t++)this.writeInt16(U[t],e)}writeInt8Array(U){if(this._realloc(U.length*1),U instanceof Int8Array&&this.byteOffset+this.position%U.BYTES_PER_ELEMENT===0)Z.memcpy(this._buffer,this.byteOffset+this.position,U.buffer,0,U.byteLength),this.mapInt8Array(U.length);else for(let e=0;e<U.length;e++)this.writeInt8(U[e])}writeUint32Array(U,e){if(this._realloc(U.length*4),U instanceof Uint32Array&&this.byteOffset+this.position%U.BYTES_PER_ELEMENT===0)Z.memcpy(this._buffer,this.byteOffset+this.position,U.buffer,0,U.byteLength),this.mapUint32Array(U.length,e);else for(let t=0;t<U.length;t++)this.writeUint32(U[t],e)}writeUint16Array(U,e){if(this._realloc(U.length*2),U instanceof Uint16Array&&this.byteOffset+this.position%U.BYTES_PER_ELEMENT===0)Z.memcpy(this._buffer,this.byteOffset+this.position,U.buffer,0,U.byteLength),this.mapUint16Array(U.length,e);else for(let t=0;t<U.length;t++)this.writeUint16(U[t],e)}writeUint8Array(U){if(this._realloc(U.length*1),U instanceof Uint8Array&&this.byteOffset+this.position%U.BYTES_PER_ELEMENT===0)Z.memcpy(this._buffer,this.byteOffset+this.position,U.buffer,0,U.byteLength),this.mapUint8Array(U.length);else for(let e=0;e<U.length;e++)this.writeUint8(U[e])}writeFloat64Array(U,e){if(this._realloc(U.length*8),U instanceof Float64Array&&this.byteOffset+this.position%U.BYTES_PER_ELEMENT===0)Z.memcpy(this._buffer,this.byteOffset+this.position,U.buffer,0,U.byteLength),this.mapFloat64Array(U.length,e);else for(let t=0;t<U.length;t++)this.writeFloat64(U[t],e)}writeFloat32Array(U,e){if(this._realloc(U.length*4),U instanceof Float32Array&&this.byteOffset+this.position%U.BYTES_PER_ELEMENT===0)Z.memcpy(this._buffer,this.byteOffset+this.position,U.buffer,0,U.byteLength),this.mapFloat32Array(U.length,e);else for(let t=0;t<U.length;t++)this.writeFloat32(U[t],e)}writeInt64(U,e){this._realloc(8),this._dataView.setBigInt64(this.position,BigInt(U),(e??this.endianness)===2),this.position+=8}writeInt32(U,e){this._realloc(4),this._dataView.setInt32(this.position,U,(e??this.endianness)===2),this.position+=4}writeInt16(U,e){this._realloc(2),this._dataView.setInt16(this.position,U,(e??this.endianness)===2),this.position+=2}writeInt8(U){this._realloc(1),this._dataView.setInt8(this.position,U),this.position+=1}writeUint32(U,e){this._realloc(4),this._dataView.setUint32(this.position,U,(e??this.endianness)===2),this.position+=4}writeUint16(U,e){this._realloc(2),this._dataView.setUint16(this.position,U,(e??this.endianness)===2),this.position+=2}writeUint8(U){this._realloc(1),this._dataView.setUint8(this.position,U),this.position+=1}writeFloat32(U,e){this._realloc(4),this._dataView.setFloat32(this.position,U,(e??this.endianness)===2),this.position+=4}writeFloat64(U,e){this._realloc(8),this._dataView.setFloat64(this.position,U,(e??this.endianness)===2),this.position+=8}writeUCS2String(U,e,t){t===void 0&&(t=U.length);let F;for(F=0;F<U.length&&F<t;F++)this.writeUint16(U.charCodeAt(F),e);for(;F<t;F++)this.writeUint16(0)}writeString(U,e,t){let F=0;if(e===void 0||e==="ASCII")if(t!==void 0){const Q=Math.min(U.length,t);for(F=0;F<Q;F++)this.writeUint8(U.charCodeAt(F));for(;F<t;F++)this.writeUint8(0)}else for(F=0;F<U.length;F++)this.writeUint8(U.charCodeAt(F));else this.writeUint8Array(new TextEncoder(e).encode(U.substring(0,t)))}writeCString(U,e){let t=0;if(e!==void 0){const F=Math.min(U.length,e);for(t=0;t<F;t++)this.writeUint8(U.charCodeAt(t));for(;t<e;t++)this.writeUint8(0)}else{for(t=0;t<U.length;t++)this.writeUint8(U.charCodeAt(t));this.writeUint8(0)}}writeStruct(U,e){for(let t=0;t<U.length;t++){const[F,Q]=U[t],n=e[F];this.writeType(Q,n,e)}}writeType(U,e,t){if(typeof U=="function")return U(this,e);if(typeof U=="object"&&!(U instanceof Array))return U.set(this,e,t);let F,Q="ASCII";const n=this.position;let s=U;if(typeof U=="string"&&/:/.test(U)){const l=U.split(":");s=l[0],F=parseInt(l[1])}if(typeof s=="string"&&/,/.test(s)){const l=s.split(",");s=l[0],Q=l[1]}switch(s){case"uint8":this.writeUint8(e);break;case"int8":this.writeInt8(e);break;case"uint16":this.writeUint16(e,this.endianness);break;case"int16":this.writeInt16(e,this.endianness);break;case"uint32":this.writeUint32(e,this.endianness);break;case"int32":this.writeInt32(e,this.endianness);break;case"float32":this.writeFloat32(e,this.endianness);break;case"float64":this.writeFloat64(e,this.endianness);break;case"uint16be":this.writeUint16(e,1);break;case"int16be":this.writeInt16(e,1);break;case"uint32be":this.writeUint32(e,1);break;case"int32be":this.writeInt32(e,1);break;case"float32be":this.writeFloat32(e,1);break;case"float64be":this.writeFloat64(e,1);break;case"uint16le":this.writeUint16(e,2);break;case"int16le":this.writeInt16(e,2);break;case"uint32le":this.writeUint32(e,2);break;case"int32le":this.writeInt32(e,2);break;case"float32le":this.writeFloat32(e,2);break;case"float64le":this.writeFloat64(e,2);break;case"cstring":this.writeCString(e,F);break;case"string":this.writeString(e,Q,F);break;case"u16string":this.writeUCS2String(e,this.endianness,F);break;case"u16stringle":this.writeUCS2String(e,2,F);break;case"u16stringbe":this.writeUCS2String(e,1,F);break;default:if(ln(this,EU,Rn).call(this,s)){const[,l]=s;for(let a=0;a<e.length;a++)this.writeType(l,e[a]);break}else{this.writeStruct(s,e);break}}F&&(this.position=n,this._realloc(F),this.position=n+F)}writeUint64(U){const e=Math.floor(U/Bn);this.writeUint32(e),this.writeUint32(U&4294967295)}writeUint24(U){this.writeUint8((U&16711680)>>16),this.writeUint8((U&65280)>>8),this.writeUint8(U&255)}adjustUint32(U,e){const t=this.position;this.seek(U),this.writeUint32(e),this.seek(t)}readStruct(U){const e={},t=this.position;for(let F=0;F<U.length;F+=1){const Q=U[F][1],n=this.readType(Q,e);if(!n){this.failurePosition===0&&(this.failurePosition=this.position),this.position=t;return}e[U[F][0]]=n}return e}readUCS2String(U,e){return String.fromCharCode.apply(void 0,this.readUint16Array(U,e))}readType(U,e){if(typeof U=="function")return U(this,e);if(typeof U=="object"&&!(U instanceof Array))return U.get(this,e);if(U instanceof Array&&U.length!==3)return this.readStruct(U);let t,F,Q="ASCII";const n=this.position;let s=U;if(typeof s=="string"&&/:/.test(s)){const l=s.split(":");s=l[0],F=parseInt(l[1])}if(typeof s=="string"&&/,/.test(s)){const l=s.split(",");s=l[0],Q=l[1]}switch(s){case"uint8":t=this.readUint8();break;case"int8":t=this.readInt8();break;case"uint16":t=this.readUint16(this.endianness);break;case"int16":t=this.readInt16(this.endianness);break;case"uint32":t=this.readUint32(this.endianness);break;case"int32":t=this.readInt32(this.endianness);break;case"float32":t=this.readFloat32(this.endianness);break;case"float64":t=this.readFloat64(this.endianness);break;case"uint16be":t=this.readUint16(1);break;case"int16be":t=this.readInt16(1);break;case"uint32be":t=this.readUint32(1);break;case"int32be":t=this.readInt32(1);break;case"float32be":t=this.readFloat32(1);break;case"float64be":t=this.readFloat64(1);break;case"uint16le":t=this.readUint16(2);break;case"int16le":t=this.readInt16(2);break;case"uint32le":t=this.readUint32(2);break;case"int32le":t=this.readInt32(2);break;case"float32le":t=this.readFloat32(2);break;case"float64le":t=this.readFloat64(2);break;case"cstring":t=this.readCString(F);break;case"string":t=this.readString(F,Q);break;case"u16string":t=this.readUCS2String(F,this.endianness);break;case"u16stringle":t=this.readUCS2String(F,2);break;case"u16stringbe":t=this.readUCS2String(F,1);break;default:if(ln(this,EU,Rn).call(this,s)){const[,l,a]=s,B=typeof a=="function"?a(e,this,s):typeof a=="string"&&e[a]!==void 0?parseInt(e[a]):typeof a=="number"?a:a==="*"?void 0:parseInt(a);if(typeof l=="string"){const r=l.replace(/(le|be)$/,"");let h;switch(/le$/.test(l)?h=2:/be$/.test(l)&&(h=1),r){case"uint8":t=this.readUint8Array(B);break;case"uint16":t=this.readUint16Array(B,h);break;case"uint32":t=this.readUint32Array(B,h);break;case"int8":t=this.readInt8Array(B);break;case"int16":t=this.readInt16Array(B,h);break;case"int32":t=this.readInt32Array(B,h);break;case"float32":t=this.readFloat32Array(B,h);break;case"float64":t=this.readFloat64Array(B,h);break;case"cstring":case"utf16string":case"string":if(B){t=new Array(B);for(let V=0;V<B;V++)t[V]=this.readType(l,e)}else for(t=[];!this.isEof();){const V=this.readType(l,e);if(!V)break;t.push(V)}break}}else if(B){t=new Array(B);for(let r=0;r<B;r++){const h=this.readType(l,e);if(!h)return;t[r]=h}}else for(t=[];;){const r=this.position;try{const h=this.readType(l,e);if(!h){this.position=r;break}t.push(h)}catch{this.position=r;break}}break}}return F&&(this.position=n+F),t}mapInt32Array(U,e){this._realloc(U*4);const t=new Int32Array(this._buffer,this.byteOffset+this.position,U);return Z.arrayToNative(t,e??this.endianness),this.position+=U*4,t}mapInt16Array(U,e){this._realloc(U*2);const t=new Int16Array(this._buffer,this.byteOffset+this.position,U);return Z.arrayToNative(t,e??this.endianness),this.position+=U*2,t}mapInt8Array(U,e){this._realloc(U*1);const t=new Int8Array(this._buffer,this.byteOffset+this.position,U);return this.position+=U*1,t}mapUint32Array(U,e){this._realloc(U*4);const t=new Uint32Array(this._buffer,this.byteOffset+this.position,U);return Z.arrayToNative(t,e??this.endianness),this.position+=U*4,t}mapUint16Array(U,e){this._realloc(U*2);const t=new Uint16Array(this._buffer,this.byteOffset+this.position,U);return Z.arrayToNative(t,e??this.endianness),this.position+=U*2,t}mapFloat64Array(U,e){this._realloc(U*8);const t=new Float64Array(this._buffer,this.byteOffset+this.position,U);return Z.arrayToNative(t,e??this.endianness),this.position+=U*8,t}mapFloat32Array(U,e){this._realloc(U*4);const t=new Float32Array(this._buffer,this.byteOffset+this.position,U);return Z.arrayToNative(t,e??this.endianness),this.position+=U*4,t}},EU=new WeakSet,Rn=function(U){return Array.isArray(U)&&U.length===3&&U[0]==="[]"},Z.ENDIANNESS=new Int8Array(new Int16Array([1]).buffer)[0]>0?2:1,Z);function Hn(i){const U=[];for(let e=0;e<i.length;e++)U[e]=i[e];return String.fromCharCode.apply(void 0,U)}var Di=new Date,Hi=4,zn=3,Yn=2,Gn=1,L=Hi,R={setLogLevel(i){i===this.debug?L=Gn:i===this.info?L=Yn:i===this.warn?L=zn:(this.error,L=Hi)},debug(i,U){console.debug===void 0&&(console.debug=console.log),Gn>=L&&console.debug("["+R.getDurationString(new Date().getTime()-Di.getTime(),1e3)+"]","["+i+"]",U)},log(i,U){this.debug(i.msg)},info(i,U){Yn>=L&&console.info("["+R.getDurationString(new Date().getTime()-Di.getTime(),1e3)+"]","["+i+"]",U)},warn(i,U){zn>=L&&console.warn("["+R.getDurationString(new Date().getTime()-Di.getTime(),1e3)+"]","["+i+"]",U)},error(i,U,e){e!=null&&e.onError?e.onError(i,U):Hi>=L&&console.error("["+R.getDurationString(new Date().getTime()-Di.getTime(),1e3)+"]","["+i+"]",U)},getDurationString(i,U){let e;function t(a,B){const h=(""+a).split(".");for(;h[0].length<B;)h[0]="0"+h[0];return h.join(".")}i<0?(e=!0,i=-i):e=!1;let Q=i/(U||1);const n=Math.floor(Q/3600);Q-=n*3600;const s=Math.floor(Q/60);Q-=s*60;let l=Q*1e3;return Q=Math.floor(Q),l-=Q*1e3,l=Math.floor(l),(e?"-":"")+n+":"+t(s,2)+":"+t(Q,2)+"."+t(l,3)},printRanges(i){const U=i.length;if(U>0){let e="";for(let t=0;t<U;t++)t>0&&(e+=","),e+="["+R.getDurationString(i.start(t))+","+R.getDurationString(i.end(t))+"]";return e}else return"(empty)"}};function Bl(i,U){R.debug("ArrayBuffer","Trying to create a new buffer of size: "+(i.byteLength+U.byteLength));const e=new Uint8Array(i.byteLength+U.byteLength);return e.set(new Uint8Array(i),0),e.set(new Uint8Array(U),i.byteLength),e.buffer}var zi=class extends _{constructor(i){super(new ArrayBuffer,0),this.buffers=[],this.bufferIndex=-1,i&&(this.insertBuffer(i),this.bufferIndex=0)}initialized(){if(this.bufferIndex>-1)return!0;if(this.buffers.length>0){const i=this.buffers[0];return i.fileStart===0?(this.buffer=i,this.bufferIndex=0,R.debug("MultiBufferStream","Stream ready for parsing"),!0):(R.warn("MultiBufferStream","The first buffer should have a fileStart of 0"),this.logBufferLevel(),!1)}else return R.warn("MultiBufferStream","No buffer to start parsing from"),this.logBufferLevel(),!1}reduceBuffer(i,U,e){const t=new Uint8Array(e);return t.set(new Uint8Array(i,U,e)),t.buffer.fileStart=i.fileStart+U,t.buffer.usedBytes=0,t.buffer}insertBuffer(i){let U=!0,e=0;for(;e<this.buffers.length;e++){const t=this.buffers[e];if(i.fileStart<=t.fileStart){if(i.fileStart===t.fileStart)if(i.byteLength>t.byteLength){this.buffers.splice(e,1),e--;continue}else R.warn("MultiBufferStream","Buffer (fileStart: "+i.fileStart+" - Length: "+i.byteLength+") already appended, ignoring");else i.fileStart+i.byteLength<=t.fileStart||(i=this.reduceBuffer(i,0,t.fileStart-i.fileStart)),R.debug("MultiBufferStream","Appending new buffer (fileStart: "+i.fileStart+" - Length: "+i.byteLength+")"),this.buffers.splice(e,0,i),e===0&&(this.buffer=i);U=!1;break}else if(i.fileStart<t.fileStart+t.byteLength){const F=t.fileStart+t.byteLength-i.fileStart,Q=i.byteLength-F;if(Q>0)i=this.reduceBuffer(i,F,Q);else{U=!1;break}}}U&&(R.debug("MultiBufferStream","Appending new buffer (fileStart: "+i.fileStart+" - Length: "+i.byteLength+")"),this.buffers.push(i),e===0&&(this.buffer=i))}logBufferLevel(i){const U=[];let e="",t,F=0,Q=0;for(let s=0;s<this.buffers.length;s++){const l=this.buffers[s];s===0?(t={start:l.fileStart,end:l.fileStart+l.byteLength},U.push(t),e+="["+t.start+"-"):t.end===l.fileStart?t.end=l.fileStart+l.byteLength:(t={start:l.fileStart,end:l.fileStart+l.byteLength},e+=U[U.length-1].end-1+"], ["+t.start+"-",U.push(t)),F+=l.usedBytes,Q+=l.byteLength}U.length>0&&(e+=t.end-1+"]");const n=i?R.info:R.debug;this.buffers.length===0?n("MultiBufferStream","No more buffer in memory"):n("MultiBufferStream",""+this.buffers.length+" stored buffer(s) ("+F+"/"+Q+" bytes), continuous ranges: "+e)}cleanBuffers(){for(let i=0;i<this.buffers.length;i++){const U=this.buffers[i];U.usedBytes===U.byteLength&&(R.debug("MultiBufferStream","Removing buffer #"+i),this.buffers.splice(i,1),i--)}}mergeNextBuffer(){if(this.bufferIndex+1<this.buffers.length){const i=this.buffers[this.bufferIndex+1];if(i.fileStart===this.buffer.fileStart+this.buffer.byteLength){const U=this.buffer.byteLength,e=this.buffer.usedBytes,t=this.buffer.fileStart;return this.buffers[this.bufferIndex]=Bl(this.buffer,i),this.buffer=this.buffers[this.bufferIndex],this.buffers.splice(this.bufferIndex+1,1),this.buffer.usedBytes=e,this.buffer.fileStart=t,R.debug("ISOFile","Concatenating buffer for box parsing (length: "+U+"->"+this.buffer.byteLength+")"),!0}else return!1}else return!1}findPosition(i,U,e){let t=-1,F=i===!0?0:this.bufferIndex;for(;F<this.buffers.length;){const n=this.buffers[F];if(n&&n.fileStart<=U)t=F,e&&(n.fileStart+n.byteLength<=U?n.usedBytes=n.byteLength:n.usedBytes=U-n.fileStart,this.logBufferLevel());else break;F++}if(t===-1)return-1;const Q=this.buffers[t];return Q.fileStart+Q.byteLength>=U?(R.debug("MultiBufferStream","Found position in existing buffer #"+t),t):-1}findEndContiguousBuf(i){const U=i!==void 0?i:this.bufferIndex;let e=this.buffers[U];if(this.buffers.length>U+1)for(let t=U+1;t<this.buffers.length;t++){const F=this.buffers[t];if(F.fileStart===e.fileStart+e.byteLength)e=F;else break}return e.fileStart+e.byteLength}getEndFilePositionAfter(i){const U=this.findPosition(!0,i,!1);return U!==-1?this.findEndContiguousBuf(U):i}addUsedBytes(i){this.buffer.usedBytes+=i,this.logBufferLevel()}setAllUsedBytes(){this.buffer.usedBytes=this.buffer.byteLength,this.logBufferLevel()}seek(i,U,e){const t=this.findPosition(U,i,e);return t!==-1?(this.buffer=this.buffers[t],this.bufferIndex=t,this.position=i-this.buffer.fileStart,R.debug("MultiBufferStream","Repositioning parser at buffer position: "+this.position),!0):(R.debug("MultiBufferStream","Position "+i+" not found in buffered data"),!1)}getPosition(){return this.bufferIndex===-1||this.buffers[this.bufferIndex]===void 0?0:this.buffers[this.bufferIndex].fileStart+this.position}getLength(){return this.byteLength}getEndPosition(){return this.bufferIndex===-1||this.buffers[this.bufferIndex]===void 0?0:this.buffers[this.bufferIndex].fileStart+this.byteLength}getAbsoluteEndPosition(){if(this.buffers.length===0)return 0;const i=this.buffers[this.buffers.length-1];return i.fileStart+i.byteLength}},NU,ZU,J=(ZU=class{constructor(U=0){sn(this,NU,void 0);this.size=U}get type(){return this.constructor.fourcc??xn(this,NU)}set type(U){bn(this,NU,U)}addBox(U){return this.boxes||(this.boxes=[]),this.boxes.push(U),this[U.type+"s"]?this[U.type+"s"].push(U):this[U.type]=U,U}set(U,e){return this[U]=e,this}addEntry(U,e){const t=e||"entries";return this[t]||(this[t]=[]),this[t].push(U),this}writeHeader(U,e){if(this.size+=8,(this.size>M||this.original_size===1)&&(this.size+=8),this.type==="uuid"&&(this.size+=16),R.debug("BoxWriter","Writing box "+this.type+" of size: "+this.size+" at position "+U.getPosition()+(e||"")),this.original_size===0?U.writeUint32(0):this.size>M||this.original_size===1?U.writeUint32(1):(this.sizePosition=U.getPosition(),U.writeUint32(this.size)),U.writeString(this.type,void 0,4),this.type==="uuid"){const t=new Uint8Array(16);for(let F=0;F<16;F++)t[F]=parseInt(this.uuid.substring(F*2,F*2+2),16);U.writeUint8Array(t)}(this.size>M||this.original_size===1)&&(this.sizePosition=U.getPosition(),U.writeUint64(this.size))}write(U){if(this.type==="mdat"){const e=this;if(e.stream){this.size=e.stream.getAbsoluteEndPosition(),this.writeHeader(U);for(const t of e.stream.buffers){const F=new Uint8Array(t);U.writeUint8Array(F)}}else e.data&&(this.size=e.data.length,this.writeHeader(U),U.writeUint8Array(e.data))}else this.size=this.data?this.data.length:0,this.writeHeader(U),this.data&&U.writeUint8Array(this.data)}printHeader(U){this.size+=8,this.size>M&&(this.size+=8),this.type==="uuid"&&(this.size+=16),U.log(U.indent+"size:"+this.size),U.log(U.indent+"type:"+this.type)}print(U){this.printHeader(U)}parse(U){this.type!=="mdat"?this.data=U.readUint8Array(this.size-this.hdr_size):this.size===0?U.seek(U.getEndPosition()):U.seek(this.start+this.size)}parseDataAndRewind(U){this.data=U.readUint8Array(this.size-this.hdr_size),U.seek(this.start+this.hdr_size)}parseLanguage(U){this.language=U.readUint16();const e=[];e[0]=this.language>>10&31,e[1]=this.language>>5&31,e[2]=this.language&31,this.languageString=String.fromCharCode(e[0]+96,e[1]+96,e[2]+96)}computeSize(U){const e=U||new zi;this.write(e)}isEndOfBox(U){const e=U.getPosition(),t=this.start+this.size;return e===t}},NU=new WeakMap,ZU.registryId=Symbol.for("BoxIdentifier"),ZU),o=class extends J{constructor(){super(...arguments),this.flags=0,this.version=0}writeHeader(i){this.size+=4,super.writeHeader(i," v="+this.version+" f="+this.flags),i.writeUint8(this.version),i.writeUint24(this.flags)}printHeader(i){this.size+=4,super.printHeader(i),i.log(i.indent+"version:"+this.version),i.log(i.indent+"flags:"+this.flags)}parseDataAndRewind(i){this.parseFullHeader(i),this.data=i.readUint8Array(this.size-this.hdr_size),this.hdr_size-=4,i.seek(this.start+this.hdr_size)}parseFullHeader(i){this.version=i.readUint8(),this.flags=i.readUint24(),this.hdr_size+=4}parse(i){this.parseFullHeader(i),this.data=i.readUint8Array(this.size-this.hdr_size)}},kU,b=(kU=class{constructor(U){this.grouping_type=U}write(U){U.writeUint8Array(this.data)}parse(U){R.warn("BoxParser",`Unknown sample group type: '${this.grouping_type}'`),this.data=U.readUint8Array(this.description_length)}},kU.registryId=Symbol.for("SampleGroupEntryIdentifier"),kU),dl=class extends o{parse(i){this.parseFullHeader(i),this.track_group_id=i.readUint32()}},rl=class extends J{constructor(i,U,e,t,F){super(U),this.box_name=e,this.hdr_size=t,this.start=F,this.type=i}parse(i){this.from_item_ID=i.readUint16();const U=i.readUint16();this.references=[];for(let e=0;e<U;e++)this.references[e]={to_item_ID:i.readUint16()}}},Rl=class extends J{constructor(i,U,e,t,F){super(U),this.box_name=e,this.hdr_size=t,this.start=F,this.type=i}parse(i){this.from_item_ID=i.readUint32();const U=i.readUint16();this.references=[];for(let e=0;e<U;e++)this.references[e]={to_item_ID:i.readUint32()}}},ol=class extends J{constructor(i,U,e,t){super(U),this.hdr_size=e,this.start=t,this.type=i}parse(i){this.track_ids=i.readUint32Array((this.size-this.hdr_size)/4)}write(i){this.size=this.track_ids.length*4,this.writeHeader(i),i.writeUint32Array(this.track_ids)}},on=["boxes","entries","references","subsamples","items","item_infos","extents","associations","subsegments","ranges","seekLists","seekPoints","esd","levels"],hl=["compatible_brands","matrix","opcolor","sample_counts","sample_deltas","first_chunk","samples_per_chunk","sample_sizes","chunk_offsets","sample_offsets","sample_description_index","sample_duration"];function Vl(i,U){if(i&&!U)return!1;let e;for(e in i)if(!on.find(t=>t===e)){if(i[e]instanceof J||U[e]instanceof J)continue;if(typeof i[e]>"u"||typeof U[e]>"u")continue;if(typeof i[e]=="function"||typeof U[e]=="function")continue;if("subBoxNames"in i&&i.subBoxNames.indexOf(e.slice(0,4))>-1||"subBoxNames"in U&&U.subBoxNames.indexOf(e.slice(0,4))>-1)continue;if(e==="data"||e==="start"||e==="size"||e==="creation_time"||e==="modification_time")continue;if(hl.find(t=>t===e))continue;if(i[e]!==U[e])return!1}return!0}function Us(i,U){if(!Vl(i,U))return!1;for(let e=0;e<on.length;e++){const t=on[e];if(i[t]&&U[t]&&!Us(i[t],U[t]))return!1}return!0}function Nn(i){let U=i;for(;U;){if("registryId"in U)return U.registryId;U=Object.getPrototypeOf(U)}}var Jl=i=>{const U=Symbol.for("SampleGroupEntryIdentifier");return Nn(i)===U},cl=i=>{const U=Symbol.for("SampleEntryIdentifier");return Nn(i)===U},Sl=i=>{const U=Symbol.for("BoxIdentifier");return Nn(i)===U},I={uuid:{},sampleEntry:{},sampleGroupEntry:{},box:{}};function Wl(i){const U={uuid:{},sampleEntry:{},sampleGroupEntry:{},box:{}};for(const[e,t]of Object.entries(i)){if(Jl(t)){const F="grouping_type"in t?t.grouping_type:void 0;if(!F)throw new Error(`SampleGroupEntry class ${e} does not have a valid static grouping_type. Please ensure it is defined correctly.`);if(F in U.sampleGroupEntry)throw new Error(`SampleGroupEntry class ${e} has a grouping_type that is already registered. Please ensure it is unique.`);U.sampleGroupEntry[F]=t;continue}if(cl(t)){const F="fourcc"in t?t.fourcc:void 0;if(!F)throw new Error(`SampleEntry class ${e} does not have a valid static fourcc. Please ensure it is defined correctly.`);if(F in U.sampleEntry)throw new Error(`SampleEntry class ${e} has a fourcc that is already registered. Please ensure it is unique.`);U.sampleEntry[F]=t;continue}if(Sl(t)){const F="fourcc"in t?t.fourcc:void 0,Q="uuid"in t?t.uuid:void 0;if(F==="uuid"){if(!Q)throw new Error(`Box class ${e} has a fourcc of 'uuid' but does not have a valid uuid. Please ensure it is defined correctly.`);if(Q in U.uuid)throw new Error(`Box class ${e} has a uuid that is already registered. Please ensure it is unique.`);U.uuid[Q]=t;continue}U.box[F]=t;continue}throw new Error(`Box class ${e} does not have a valid static fourcc, uuid, or grouping_type. Please ensure it is defined correctly.`)}return I.uuid={...U.uuid},I.sampleEntry={...U.sampleEntry},I.sampleGroupEntry={...U.sampleGroupEntry},I.box={...U.box},I}var Ai={};function pl(i){return Object.entries(i).forEach(([U,e])=>Ai[U]=e),Ai}function El(i){return UU(i)}function UU(i){let U="";for(let e=0;e<16;e++){const t=i.readUint8().toString(16);U+=t.length===1?"0"+t:t}return U}function Y(i,U,e){let t,F;const Q=i.getPosition();let n=0,s;if(i.getEndPosition()-Q<8)return R.debug("BoxParser","Not enough data in stream to parse the type and size of the box"),{code:A};if(e&&e<8)return R.debug("BoxParser","Not enough bytes left in the parent box to parse a new box"),{code:A};let l=i.readUint32();const a=i.readString(4);if(a.length!==4||!/^[\x20-\x7E]{4}$/.test(a))return R.error("BoxParser",`Invalid box type: '${a}'`),{code:qn,start:Q,type:a};let B=a;if(R.debug("BoxParser","Found box of type '"+a+"' and size "+l+" at position "+Q),n=8,a==="uuid"){if(i.getEndPosition()-i.getPosition()<16||e-n<16)return i.seek(Q),R.debug("BoxParser","Not enough bytes left in the parent box to parse a UUID box"),{code:A};s=El(i),n+=16,B=s}if(l===1){if(i.getEndPosition()-i.getPosition()<8||e&&e-n<8)return i.seek(Q),R.warn("BoxParser",'Not enough data in stream to parse the extended size of the "'+a+'" box'),{code:A};F=l,l=i.readUint64(),n+=8}else if(l===0){if(e)l=e;else if(a!=="mdat")return R.error("BoxParser","Unlimited box size not supported for type: '"+a+"'"),t=new J(l),t.type=a,{code:H,box:t,size:t.size}}if(l!==0&&l<n)return R.error("BoxParser","Box of type "+a+" has an invalid size "+l+" (too small to be a box)"),{code:A,type:a,size:l,hdr_size:n,start:Q};if(l!==0&&e&&l>e)return R.error("BoxParser","Box of type '"+a+"' has a size "+l+" greater than its container size "+e),{code:A,type:a,size:l,hdr_size:n,start:Q};if(l!==0&&Q+l>i.getEndPosition())return i.seek(Q),R.info("BoxParser","Not enough data in stream to parse the entire '"+a+"' box"),{code:A,type:a,size:l,hdr_size:n,start:Q,original_size:F};if(U)return{code:H,type:a,size:l,hdr_size:n,start:Q};a in I.box?t=new I.box[a](l):a!=="uuid"?(R.warn("BoxParser",`Unknown box type: '${a}'`),t=new J(l),t.type=a,t.has_unparsed_data=!0):s in I.uuid?t=new I.uuid[s](l):(R.warn("BoxParser",`Unknown UUID box type: '${s}'`),t=new J(l),t.type=a,t.uuid=s,t.has_unparsed_data=!0),t.original_size=F,t.hdr_size=n,t.start=Q,t.write===J.prototype.write&&t.type!=="mdat"&&(R.info("BoxParser","'"+B+"' box writing not yet implemented, keeping unparsed data in memory for later write"),t.parseDataAndRewind(i)),t.parse(i);const r=i.getPosition()-(t.start+t.size);return r<0?(R.warn("BoxParser","Parsing of box '"+B+"' did not read the entire indicated box data size (missing "+-r+" bytes), seeking forward"),i.seek(t.start+t.size)):r>0&&t.size!==0&&(R.error("BoxParser","Parsing of box '"+B+"' read "+r+" more bytes than the indicated box data size, seeking backwards"),i.seek(t.start+t.size)),{code:H,box:t,size:t.size}}var u=class extends J{write(i){if(this.size=0,this.writeHeader(i),this.boxes)for(let U=0;U<this.boxes.length;U++)this.boxes[U]&&(this.boxes[U].write(i),this.size+=this.boxes[U].size);R.debug("BoxWriter","Adjusting box "+this.type+" with new size "+this.size),i.adjustUint32(this.sizePosition,this.size)}print(i){this.printHeader(i);for(let U=0;U<this.boxes.length;U++)if(this.boxes[U]){const e=i.indent;i.indent+=" ",this.boxes[U].print(i),i.indent=e}}parse(i){let U;for(;i.getPosition()<this.start+this.size;)if(U=Y(i,!1,this.size-(i.getPosition()-this.start)),U.code===H){const e=U.box;if(this.boxes||(this.boxes=[]),this.boxes.push(e),this.subBoxNames&&this.subBoxNames.indexOf(e.type)!==-1){const t=this.subBoxNames[this.subBoxNames.indexOf(e.type)]+"s";this[t]||(this[t]=[]),this[t].push(e)}else{const t=e.type!=="uuid"?e.type:e.uuid;this[t]?R.warn("ContainerBox",`Box of type ${t} already exists in container box ${this.type}.`):this[t]=e}}else return}},uU,O=(uU=class extends u{constructor(U,e,t){super(U),this.hdr_size=e,this.start=t}isVideo(){return!1}isAudio(){return!1}isSubtitle(){return!1}isMetadata(){return!1}isHint(){return!1}getCodec(){return this.type.replace(".","")}getWidth(){return""}getHeight(){return""}getChannelCount(){return""}getSampleRate(){return""}getSampleSize(){return""}parseHeader(U){U.readUint8Array(6),this.data_reference_index=U.readUint16(),this.hdr_size+=8}parse(U){this.parseHeader(U),this.data=U.readUint8Array(this.size-this.hdr_size)}parseDataAndRewind(U){this.parseHeader(U),this.data=U.readUint8Array(this.size-this.hdr_size),this.hdr_size-=8,U.seek(this.start+this.hdr_size)}parseFooter(U){super.parse(U)}writeHeader(U){this.size=8,super.writeHeader(U),U.writeUint8(0),U.writeUint8(0),U.writeUint8(0),U.writeUint8(0),U.writeUint8(0),U.writeUint8(0),U.writeUint16(this.data_reference_index)}writeFooter(U){if(this.boxes)for(let e=0;e<this.boxes.length;e++)this.boxes[e].write(U),this.size+=this.boxes[e].size;R.debug("BoxWriter","Adjusting box "+this.type+" with new size "+this.size),U.adjustUint32(this.sizePosition,this.size)}write(U){this.writeHeader(U),U.writeUint8Array(this.data),this.size+=this.data.length,R.debug("BoxWriter","Adjusting box "+this.type+" with new size "+this.size),U.adjustUint32(this.sizePosition,this.size)}},uU.registryId=Symbol.for("SampleEntryIdentifier"),uU),Xn=class extends O{},sU=class extends O{isMetadata(){return!0}},eU=class extends O{isSubtitle(){return!0}},Nl=class extends O{},D=class extends O{parse(i){this.parseHeader(i),i.readUint16(),i.readUint16(),i.readUint32Array(3),this.width=i.readUint16(),this.height=i.readUint16(),this.horizresolution=i.readUint32(),this.vertresolution=i.readUint32(),i.readUint32(),this.frame_count=i.readUint16();const U=Math.min(31,i.readUint8());this.compressorname=i.readString(U),U<31&&i.readString(31-U),this.depth=i.readUint16(),i.readUint16(),this.parseFooter(i)}isVideo(){return!0}getWidth(){return this.width}getHeight(){return this.height}write(i){this.writeHeader(i),this.size+=2*7+6*4+32,i.writeUint16(0),i.writeUint16(0),i.writeUint32(0),i.writeUint32(0),i.writeUint32(0),i.writeUint16(this.width),i.writeUint16(this.height),i.writeUint32(this.horizresolution),i.writeUint32(this.vertresolution),i.writeUint32(0),i.writeUint16(this.frame_count),i.writeUint8(Math.min(31,this.compressorname.length)),i.writeString(this.compressorname,void 0,31),i.writeUint16(this.depth),i.writeInt16(-1),this.writeFooter(i)}},v=class extends O{parse(i){var e,t;this.parseHeader(i),this.version=i.readUint16(),i.readUint16(),i.readUint32(),this.channel_count=i.readUint16(),this.samplesize=i.readUint16(),i.readUint16(),i.readUint16(),this.samplerate=i.readUint32()/65536,((t=(e=i.isofile)==null?void 0:e.ftyp)==null?void 0:t.major_brand.includes("qt"))&&(this.version===1?this.extensions=i.readUint8Array(16):this.version===2&&(this.extensions=i.readUint8Array(36))),this.parseFooter(i)}isAudio(){return!0}getChannelCount(){return this.channel_count}getSampleRate(){return this.samplerate}getSampleSize(){return this.samplesize}write(i){this.writeHeader(i),this.size+=2*4+3*4,i.writeUint32(0),i.writeUint32(0),i.writeUint16(this.channel_count),i.writeUint16(this.samplesize),i.writeUint16(0),i.writeUint16(0),i.writeUint32(this.samplerate<<16),this.writeFooter(i)}},Zn=class extends O{parse(i){this.parseHeader(i),this.parseFooter(i)}write(i){this.writeHeader(i),this.writeFooter(i)}},Ln=class extends Array{toString(){let i="<table class='inner-table'>";i+="<thead><tr><th>length</th><th>nalu_data</th></tr></thead>",i+="<tbody>";for(let U=0;U<this.length;U++){const e=this[U];i+="<tr>",i+="<td>"+e.length+"</td>",i+="<td>",i+=e.data.reduce(function(t,F){return t+F.toString(16).padStart(2,"0")},"0x"),i+="</td></tr>"}return i+="</tbody></table>",i}},fU,es=(fU=class extends J{constructor(){super(...arguments),this.box_name="AVCConfigurationBox"}parse(U){this.configurationVersion=U.readUint8(),this.AVCProfileIndication=U.readUint8(),this.profile_compatibility=U.readUint8(),this.AVCLevelIndication=U.readUint8(),this.lengthSizeMinusOne=U.readUint8()&3,this.nb_SPS_nalus=U.readUint8()&31;let e=this.size-this.hdr_size-6;this.SPS=new Ln;for(let t=0;t<this.nb_SPS_nalus;t++){const F=U.readUint16();this.SPS.push({length:F,data:U.readUint8Array(F)}),e-=2+F}this.nb_PPS_nalus=U.readUint8(),e--,this.PPS=new Ln;for(let t=0;t<this.nb_PPS_nalus;t++){const F=U.readUint16();this.PPS.push({length:F,data:U.readUint8Array(F)}),e-=2+F}e>0&&(this.ext=U.readUint8Array(e))}write(U){this.size=7;for(let e=0;e<this.SPS.length;e++)this.size+=2+this.SPS[e].length;for(let e=0;e<this.PPS.length;e++)this.size+=2+this.PPS[e].length;this.ext&&(this.size+=this.ext.length),this.writeHeader(U),U.writeUint8(this.configurationVersion),U.writeUint8(this.AVCProfileIndication),U.writeUint8(this.profile_compatibility),U.writeUint8(this.AVCLevelIndication),U.writeUint8(this.lengthSizeMinusOne+252),U.writeUint8(this.SPS.length+224);for(let e=0;e<this.SPS.length;e++)U.writeUint16(this.SPS[e].length),U.writeUint8Array(this.SPS[e].data);U.writeUint8(this.PPS.length);for(let e=0;e<this.PPS.length;e++)U.writeUint16(this.PPS[e].length),U.writeUint8Array(this.PPS[e].data);this.ext&&U.writeUint8Array(this.ext)}},fU.fourcc="avcC",fU),mU,Yi=(mU=class extends J{constructor(){super(...arguments),this.box_name="MediaDataBox"}},mU.fourcc="mdat",mU),CU,Zl=(CU=class extends J{constructor(){super(...arguments),this.box_name="ItemDataBox"}},CU.fourcc="idat",CU),TU,kl=(TU=class extends J{constructor(){super(...arguments),this.box_name="FreeSpaceBox"}},TU.fourcc="free",TU),gU,ul=(gU=class extends J{constructor(){super(...arguments),this.box_name="FreeSpaceBox"}},gU.fourcc="skip",gU),DU,ts=(DU=class extends o{constructor(){super(...arguments),this.box_name="HintMediaHeaderBox"}},DU.fourcc="hmhd",DU),xU,Gi=(xU=class extends o{constructor(){super(...arguments),this.box_name="NullMediaHeaderBox"}},xU.fourcc="nmhd",xU),bU,fl=(bU=class extends o{constructor(){super(...arguments),this.box_name="ObjectDescriptorBox"}},bU.fourcc="iods",bU),MU,ml=(MU=class extends o{constructor(){super(...arguments),this.box_name="XMLBox"}},MU.fourcc="xml ",MU),yU,Cl=(yU=class extends o{constructor(){super(...arguments),this.box_name="BinaryXMLBox"}},yU.fourcc="bxml",yU),wU,Tl=(wU=class extends o{constructor(){super(...arguments),this.box_name="ItemProtectionBox",this.sinfs=[]}get protections(){return this.sinfs}},wU.fourcc="ipro",wU),IU,hn=(IU=class extends u{constructor(){super(...arguments),this.box_name="MovieBox",this.traks=[],this.psshs=[],this.subBoxNames=["trak","pssh"]}},IU.fourcc="moov",IU),vU,Fs=(vU=class extends u{constructor(){super(...arguments),this.box_name="TrackBox",this.samples=[]}},vU.fourcc="trak",vU),_U,gl=(_U=class extends u{constructor(){super(...arguments),this.box_name="EditBox"}},_U.fourcc="edts",_U),HU,Qs=(HU=class extends u{constructor(){super(...arguments),this.box_name="MediaBox"}},HU.fourcc="mdia",HU),zU,is=(zU=class extends u{constructor(){super(...arguments),this.box_name="MediaInformationBox"}},zU.fourcc="minf",zU),YU,ns=(YU=class extends u{constructor(){super(...arguments),this.box_name="DataInformationBox"}},YU.fourcc="dinf",YU),GU,ss=(GU=class extends u{constructor(){super(...arguments),this.box_name="SampleTableBox",this.sgpds=[],this.sbgps=[],this.subBoxNames=["sgpd","sbgp"]}},GU.fourcc="stbl",GU),XU,Vn=(XU=class extends u{constructor(){super(...arguments),this.box_name="MovieExtendsBox",this.trexs=[],this.subBoxNames=["trex"]}},XU.fourcc="mvex",XU),LU,ls=(LU=class extends u{constructor(){super(...arguments),this.box_name="MovieFragmentBox",this.trafs=[],this.subBoxNames=["traf"]}},LU.fourcc="moof",LU),OU,as=(OU=class extends u{constructor(){super(...arguments),this.box_name="TrackFragmentBox",this.truns=[],this.sgpds=[],this.sbgps=[],this.subBoxNames=["trun","sgpd","sbgp"]}},OU.fourcc="traf",OU),AU,Dl=(AU=class extends u{constructor(){super(...arguments),this.box_name="VTTCueBox"}},AU.fourcc="vttc",AU),jU,xl=(jU=class extends u{constructor(){super(...arguments),this.box_name="MovieFragmentRandomAccessBox",this.tfras=[],this.subBoxNames=["tfra"]}},jU.fourcc="mfra",jU),KU,bl=(KU=class extends u{constructor(){super(...arguments),this.box_name="AdditionalMetadataContainerBox"}},KU.fourcc="meco",KU),PU,Ml=(PU=class extends u{constructor(){super(...arguments),this.box_name="trackhintinformation",this.subBoxNames=["sdp ","rtp "]}},PU.fourcc="hnti",PU),qU,yl=(qU=class extends u{constructor(){super(...arguments),this.box_name="hintstatisticsbox",this.maxrs=[],this.subBoxNames=["maxr"]}},qU.fourcc="hinf",qU),$U,wl=($U=class extends u{constructor(){super(...arguments),this.box_name="SubTrackBox"}},$U.fourcc="strk",$U),Ue,Il=(Ue=class extends u{constructor(){super(...arguments),this.box_name="SubTrackDefinitionBox"}},Ue.fourcc="strd",Ue),ee,vl=(ee=class extends u{constructor(){super(...arguments),this.box_name="ProtectionSchemeInfoBox"}},ee.fourcc="sinf",ee),te,_l=(te=class extends u{constructor(){super(...arguments),this.box_name="RestrictedSchemeInfoBox"}},te.fourcc="rinf",te),Fe,Hl=(Fe=class extends u{constructor(){super(...arguments),this.box_name="SchemeInformationBox"}},Fe.fourcc="schi",Fe),Qe,zl=(Qe=class extends u{constructor(){super(...arguments),this.box_name="TrackGroupBox"}},Qe.fourcc="trgr",Qe),ie,Yl=(ie=class extends u{constructor(){super(...arguments),this.box_name="UserDataBox",this.kinds=[],this.strks=[],this.subBoxNames=["kind","strk"]}},ie.fourcc="udta",ie),ne,Gl=(ne=class extends u{constructor(){super(...arguments),this.box_name="ItemPropertiesBox",this.ipmas=[],this.subBoxNames=["ipma"]}},ne.fourcc="iprp",ne),se,Xl=(se=class extends u{constructor(){super(...arguments),this.box_name="ItemPropertyContainerBox",this.hvcCs=[],this.ispes=[],this.claps=[],this.irots=[],this.subBoxNames=["hvcC","ispe","clap","irot"]}},se.fourcc="ipco",se),le,Ll=(le=class extends u{constructor(){super(...arguments),this.box_name="GroupsListBox"}},le.fourcc="grpl",le),ae,Ol=(ae=class extends u{constructor(){super(...arguments),this.box_name="J2KHeaderInfoBox"}},ae.fourcc="j2kH",ae),Be,Al=(Be=class extends u{constructor(){super(...arguments),this.box_name="ExtendedTypeBox",this.tycos=[],this.subBoxNames=["tyco"]}},Be.fourcc="etyp",Be),de,jl=(de=class extends u{constructor(){super(...arguments),this.box_name="ProjectedOmniVideoBox",this.subBoxNames=["prfr"]}},de.fourcc="povd",de),re,Bs=(re=class extends o{constructor(){super(...arguments),this.box_name="DataReferenceBox"}parse(U){this.parseFullHeader(U),this.entries=[];const e=U.readUint32();for(let t=0;t<e;t++){const F=Y(U,!1,this.size-(U.getPosition()-this.start));if(F.code===H){const Q=F.box;this.entries.push(Q)}else return}}write(U){this.version=0,this.flags=0,this.size=4,this.writeHeader(U),U.writeUint32(this.entries.length);for(let e=0;e<this.entries.length;e++)this.entries[e].write(U),this.size+=this.entries[e].size;R.debug("BoxWriter","Adjusting box "+this.type+" with new size "+this.size),U.adjustUint32(this.sizePosition,this.size)}},re.fourcc="dref",re),Re,ds=(Re=class extends o{constructor(){super(...arguments),this.box_name="ExtendedLanguageBox"}parse(U){this.parseFullHeader(U),this.extended_language=U.readString(this.size-this.hdr_size)}write(U){this.version=0,this.flags=0,this.size=this.extended_language.length,this.writeHeader(U),U.writeString(this.extended_language)}},Re.fourcc="elng",Re),oe,rs=(oe=class extends J{constructor(){super(...arguments),this.box_name="FileTypeBox"}parse(U){let e=this.size-this.hdr_size;this.major_brand=U.readString(4),this.minor_version=U.readUint32(),e-=8,this.compatible_brands=[];let t=0;for(;e>=4;)this.compatible_brands[t]=U.readString(4),e-=4,t++}write(U){this.size=8+4*this.compatible_brands.length,this.writeHeader(U),U.writeString(this.major_brand,void 0,4),U.writeUint32(this.minor_version);for(let e=0;e<this.compatible_brands.length;e++)U.writeString(this.compatible_brands[e],void 0,4)}},oe.fourcc="ftyp",oe),he,Rs=(he=class extends o{constructor(){super(...arguments),this.box_name="HandlerBox"}parse(U){if(this.parseFullHeader(U),this.version===0&&(U.readUint32(),this.handler=U.readString(4),U.readUint32Array(3),!this.isEndOfBox(U))){const e=this.start+this.size-U.getPosition();this.name=U.readCString();const t=this.start+this.size-1;U.seek(t),U.readUint8()!==0&&e>1&&(R.info("BoxParser","Warning: hdlr name is not null-terminated, possibly length-prefixed string. Trimming first byte."),this.name=this.name.slice(1))}}write(U){this.size=5*4+this.name.length+1,this.version=0,this.flags=0,this.writeHeader(U),U.writeUint32(0),U.writeString(this.handler,void 0,4),U.writeUint32Array([0,0,0]),U.writeCString(this.name)}},he.fourcc="hdlr",he),Ve,os=(Ve=class extends J{constructor(){super(...arguments),this.box_name="HEVCConfigurationBox"}parse(U){this.configurationVersion=U.readUint8();let e=U.readUint8();this.general_profile_space=e>>6,this.general_tier_flag=(e&32)>>5,this.general_profile_idc=e&31,this.general_profile_compatibility=U.readUint32(),this.general_constraint_indicator=U.readUint8Array(6),this.general_level_idc=U.readUint8(),this.min_spatial_segmentation_idc=U.readUint16()&4095,this.parallelismType=U.readUint8()&3,this.chroma_format_idc=U.readUint8()&3,this.bit_depth_luma_minus8=U.readUint8()&7,this.bit_depth_chroma_minus8=U.readUint8()&7,this.avgFrameRate=U.readUint16(),e=U.readUint8(),this.constantFrameRate=e>>6,this.numTemporalLayers=(e&13)>>3,this.temporalIdNested=(e&4)>>2,this.lengthSizeMinusOne=e&3,this.nalu_arrays=[];const t=U.readUint8();for(let F=0;F<t;F++){const Q=[];this.nalu_arrays.push(Q),e=U.readUint8(),Q.completeness=(e&128)>>7,Q.nalu_type=e&63;const n=U.readUint16();for(let s=0;s<n;s++){const l=U.readUint16();Q.push({data:U.readUint8Array(l)})}}}write(U){this.size=23;for(let e=0;e<this.nalu_arrays.length;e++){this.size+=3;for(let t=0;t<this.nalu_arrays[e].length;t++)this.size+=2+this.nalu_arrays[e][t].data.length}this.writeHeader(U),U.writeUint8(this.configurationVersion),U.writeUint8((this.general_profile_space<<6)+(this.general_tier_flag<<5)+this.general_profile_idc),U.writeUint32(this.general_profile_compatibility),U.writeUint8Array(this.general_constraint_indicator),U.writeUint8(this.general_level_idc),U.writeUint16(this.min_spatial_segmentation_idc+(15<<24)),U.writeUint8(this.parallelismType+252),U.writeUint8(this.chroma_format_idc+252),U.writeUint8(this.bit_depth_luma_minus8+248),U.writeUint8(this.bit_depth_chroma_minus8+248),U.writeUint16(this.avgFrameRate),U.writeUint8((this.constantFrameRate<<6)+(this.numTemporalLayers<<3)+(this.temporalIdNested<<2)+this.lengthSizeMinusOne),U.writeUint8(this.nalu_arrays.length);for(let e=0;e<this.nalu_arrays.length;e++){U.writeUint8((this.nalu_arrays[e].completeness<<7)+this.nalu_arrays[e].nalu_type),U.writeUint16(this.nalu_arrays[e].length);for(let t=0;t<this.nalu_arrays[e].length;t++)U.writeUint16(this.nalu_arrays[e][t].data.length),U.writeUint8Array(this.nalu_arrays[e][t].data)}}},Ve.fourcc="hvcC",Ve),Je,hs=(Je=class extends o{constructor(){super(...arguments),this.box_name="MediaHeaderBox"}parse(U){this.parseFullHeader(U),this.version===1?(this.creation_time=U.readUint64(),this.modification_time=U.readUint64(),this.timescale=U.readUint32(),this.duration=U.readUint64()):(this.creation_time=U.readUint32(),this.modification_time=U.readUint32(),this.timescale=U.readUint32(),this.duration=U.readUint32()),this.parseLanguage(U),U.readUint16()}write(U){const e=this.modification_time>M||this.creation_time>M||this.duration>M||this.version===1;this.version=e?1:0,this.size=4*4+2*2,this.size+=e?3*4:0,this.flags=0,this.writeHeader(U),e?(U.writeUint64(this.creation_time),U.writeUint64(this.modification_time),U.writeUint32(this.timescale),U.writeUint64(this.duration)):(U.writeUint32(this.creation_time),U.writeUint32(this.modification_time),U.writeUint32(this.timescale),U.writeUint32(this.duration)),U.writeUint16(this.language),U.writeUint16(0)}},Je.fourcc="mdhd",Je),ce,Vs=(ce=class extends o{constructor(){super(...arguments),this.box_name="MovieExtendsHeaderBox"}parse(U){this.parseFullHeader(U),this.flags&1&&(R.warn("BoxParser","mehd box incorrectly uses flags set to 1, converting version to 1"),this.version=1),this.version===1?this.fragment_duration=U.readUint64():this.fragment_duration=U.readUint32()}write(U){const e=this.fragment_duration>M||this.version===1;this.version=e?1:0,this.size=4,this.size+=e?4:0,this.flags=0,this.writeHeader(U),e?U.writeUint64(this.fragment_duration):U.writeUint32(this.fragment_duration)}},ce.fourcc="mehd",ce),Se,Kl=(Se=class extends o{constructor(){super(...arguments),this.box_name="ItemInfoEntry"}parse(U){if(this.parseFullHeader(U),(this.version===0||this.version===1)&&(this.item_ID=U.readUint16(),this.item_protection_index=U.readUint16(),this.item_name=U.readCString(),this.content_type=U.readCString(),this.isEndOfBox(U)||(this.content_encoding=U.readCString())),this.version===1){this.extension_type=U.readString(4),R.warn("BoxParser","Cannot parse extension type"),U.seek(this.start+this.size);return}this.version>=2&&(this.version===2?this.item_ID=U.readUint16():this.version===3&&(this.item_ID=U.readUint32()),this.item_protection_index=U.readUint16(),this.item_type=U.readString(4),this.item_name=U.readCString(),this.item_type==="mime"?(this.content_type=U.readCString(),this.content_encoding=U.readCString()):this.item_type==="uri "&&(this.item_uri_type=U.readCString()))}},Se.fourcc="infe",Se),We,Pl=(We=class extends o{constructor(){super(...arguments),this.box_name="ItemInfoBox"}parse(U){this.parseFullHeader(U),this.version===0?this.entry_count=U.readUint16():this.entry_count=U.readUint32(),this.item_infos=[];for(let e=0;e<this.entry_count;e++){const t=Y(U,!1,this.size-(U.getPosition()-this.start));if(t.code===H){const F=t.box;F.type==="infe"?this.item_infos[e]=F:R.error("BoxParser","Expected 'infe' box, got "+t.box.type,U.isofile)}else return}}},We.fourcc="iinf",We),pe,ql=(pe=class extends o{constructor(){super(...arguments),this.box_name="ItemLocationBox"}parse(U){this.parseFullHeader(U);let e;e=U.readUint8(),this.offset_size=e>>4&15,this.length_size=e&15,e=U.readUint8(),this.base_offset_size=e>>4&15,this.version===1||this.version===2?this.index_size=e&15:this.index_size=0,this.items=[];let t=0;if(this.version<2)t=U.readUint16();else if(this.version===2)t=U.readUint32();else throw new Error("version of iloc box not supported");for(let F=0;F<t;F++){let Q=0,n=0,s=0;if(this.version<2)Q=U.readUint16();else if(this.version===2)Q=U.readUint32();else throw new Error("version of iloc box not supported");this.version===1||this.version===2?n=U.readUint16()&15:n=0;const l=U.readUint16();switch(this.base_offset_size){case 0:s=0;break;case 4:s=U.readUint32();break;case 8:s=U.readUint64();break;default:throw new Error("Error reading base offset size")}const a=[],B=U.readUint16();for(let r=0;r<B;r++){let h=0,V=0,S=0;if(this.version===1||this.version===2)switch(this.index_size){case 0:h=0;break;case 4:h=U.readUint32();break;case 8:h=U.readUint64();break;default:throw new Error("Error reading extent index")}switch(this.offset_size){case 0:V=0;break;case 4:V=U.readUint32();break;case 8:V=U.readUint64();break;default:throw new Error("Error reading extent index")}switch(this.length_size){case 0:S=0;break;case 4:S=U.readUint32();break;case 8:S=U.readUint64();break;default:throw new Error("Error reading extent index")}a.push({extent_index:h,extent_length:S,extent_offset:V})}this.items.push({base_offset:s,construction_method:n,item_ID:Q,data_reference_index:l,extents:a})}}},pe.fourcc="iloc",pe),$l={auxl:"Auxiliary image item",base:"Pre-derived image item base",cdsc:"Item describes referenced item",dimg:"Derived image item",dpnd:"Item coding dependency",eroi:"Region",evir:"EVC slice",exbl:"Scalable image item","fdl ":"File delivery",font:"Font item",iloc:"Item data location",mask:"Region mask",mint:"Data integrity",pred:"Predictively coded item",prem:"Pre-multiplied item",tbas:"HEVC tile track base item",text:"Text item",thmb:"Thumbnail image item"},P,Ua=(P=class extends o{constructor(){super(...arguments),this.box_name="ItemReferenceBox",this.references=[]}parse(U){for(this.parseFullHeader(U),this.references=[];U.getPosition()<this.start+this.size;){const e=Y(U,!0,this.size-(U.getPosition()-this.start));if(e.code===H){let t="Unknown item reference";P.allowed_types.includes(e.type)?t=$l[e.type]:R.warn("BoxParser",`Unknown item reference type: '${e.type}'`);const F=this.version===0?new rl(e.type,e.size,t,e.hdr_size,e.start):new Rl(e.type,e.size,t,e.hdr_size,e.start);F.write===J.prototype.write&&F.type!=="mdat"&&(R.warn("BoxParser",F.type+" box writing not yet implemented, keeping unparsed data in memory for later write"),F.parseDataAndRewind(U)),F.parse(U),this.references.push(F)}else return}}},P.fourcc="iref",P.allowed_types=["auxl","base","cdsc","dimg","dpnd","eroi","evir","exbl","fdl ","font","iloc","mask","mint","pred","prem","tbas","text","thmb"],P),Ee,ea=(Ee=class extends o{constructor(){super(...arguments),this.box_name="PrimaryItemBox"}parse(U){this.parseFullHeader(U),this.version===0?this.item_id=U.readUint16():this.item_id=U.readUint32()}},Ee.fourcc="pitm",Ee),Ne,ta=(Ne=class extends o{constructor(){super(...arguments),this.box_name="MetaBox",this.isQT=!1}parse(U){const e=U.getPosition();if(this.size>8){switch(U.readUint32(),U.readString(4)){case"hdlr":case"mhdr":case"keys":case"ilst":case"ctry":case"lang":this.isQT=!0;break}U.seek(e)}this.isQT||this.parseFullHeader(U),u.prototype.parse.call(this,U)}},Ne.fourcc="meta",Ne),Ze,Js=(Ze=class extends o{constructor(){super(...arguments),this.box_name="MovieFragmentHeaderBox"}parse(U){this.parseFullHeader(U),this.sequence_number=U.readUint32()}write(U){this.version=0,this.flags=0,this.size=4,this.writeHeader(U),U.writeUint32(this.sequence_number)}},Ze.fourcc="mfhd",Ze),ke,cs=(ke=class extends o{constructor(){super(...arguments),this.box_name="MovieHeaderBox"}parse(U){this.parseFullHeader(U),this.version===1?(this.creation_time=U.readUint64(),this.modification_time=U.readUint64(),this.timescale=U.readUint32(),this.duration=U.readUint64()):(this.creation_time=U.readUint32(),this.modification_time=U.readUint32(),this.timescale=U.readUint32(),this.duration=U.readUint32()),this.rate=U.readUint32(),this.volume=U.readUint16()>>8,U.readUint16(),U.readUint32Array(2),this.matrix=U.readInt32Array(9),U.readUint32Array(6),this.next_track_id=U.readUint32()}write(U){const e=this.modification_time>M||this.creation_time>M||this.duration>M||this.version===1;this.version=e?1:0,this.size=4*4+20*4,this.size+=e?3*4:0,this.flags=0,this.writeHeader(U),e?(U.writeUint64(this.creation_time),U.writeUint64(this.modification_time),U.writeUint32(this.timescale),U.writeUint64(this.duration)):(U.writeUint32(this.creation_time),U.writeUint32(this.modification_time),U.writeUint32(this.timescale),U.writeUint32(this.duration)),U.writeUint32(this.rate),U.writeUint16(this.volume<<8),U.writeUint16(0),U.writeUint32(0),U.writeUint32(0),U.writeInt32Array(this.matrix),U.writeUint32(0),U.writeUint32(0),U.writeUint32(0),U.writeUint32(0),U.writeUint32(0),U.writeUint32(0),U.writeUint32(this.next_track_id)}print(U){super.printHeader(U),U.log(U.indent+"creation_time: "+this.creation_time),U.log(U.indent+"modification_time: "+this.modification_time),U.log(U.indent+"timescale: "+this.timescale),U.log(U.indent+"duration: "+this.duration),U.log(U.indent+"rate: "+this.rate),U.log(U.indent+"volume: "+(this.volume>>8)),U.log(U.indent+"matrix: "+this.matrix.join(", ")),U.log(U.indent+"next_track_id: "+this.next_track_id)}},ke.fourcc="mvhd",ke),ue,Fa=(ue=class extends sU{parse(U){this.parseHeader(U),this.content_encoding=U.readCString(),this.mime_format=U.readCString(),this.parseFooter(U)}},ue.fourcc="mett",ue),fe,Qa=(fe=class extends sU{parse(U){this.parseHeader(U),this.content_encoding=U.readCString(),this.namespace=U.readCString(),this.schema_location=U.readCString(),this.parseFooter(U)}},fe.fourcc="metx",fe),me,ia=(me=class extends J{constructor(){super(...arguments),this.box_name="AV1CodecConfigurationBox"}parse(U){let e=U.readUint8();if((e>>7&1)!==1){R.error("BoxParser","av1C marker problem",U.isofile);return}if(this.version=e&127,this.version!==1){R.error("BoxParser","av1C version "+this.version+" not supported",U.isofile);return}if(e=U.readUint8(),this.seq_profile=e>>5&7,this.seq_level_idx_0=e&31,e=U.readUint8(),this.seq_tier_0=e>>7&1,this.high_bitdepth=e>>6&1,this.twelve_bit=e>>5&1,this.monochrome=e>>4&1,this.chroma_subsampling_x=e>>3&1,this.chroma_subsampling_y=e>>2&1,this.chroma_sample_position=e&3,e=U.readUint8(),this.reserved_1=e>>5&7,this.reserved_1!==0){R.error("BoxParser","av1C reserved_1 parsing problem",U.isofile);return}if(this.initial_presentation_delay_present=e>>4&1,this.initial_presentation_delay_present===1)this.initial_presentation_delay_minus_one=e&15;else if(this.reserved_2=e&15,this.reserved_2!==0){R.error("BoxParser","av1C reserved_2 parsing problem",U.isofile);return}const t=this.size-this.hdr_size-4;this.configOBUs=U.readUint8Array(t)}},me.fourcc="av1C",me),Ce,na=(Ce=class extends o{constructor(){super(...arguments),this.box_name="ElementaryStreamDescriptorBox"}parse(U){this.parseFullHeader(U);const e=U.readUint8Array(this.size-this.hdr_size);if("MPEG4DescriptorParser"in Ai){const t=new Ai.MPEG4DescriptorParser;this.esd=t.parseOneDescriptor(new _(e.buffer,0))}}},Ce.fourcc="esds",Ce),Te,sa=(Te=class extends o{constructor(){super(...arguments),this.box_name="VPCodecConfigurationRecord"}parse(U){if(this.parseFullHeader(U),this.version===1){this.profile=U.readUint8(),this.level=U.readUint8();const e=U.readUint8();this.bitDepth=e>>4,this.chromaSubsampling=e>>1&7,this.videoFullRangeFlag=e&1,this.colourPrimaries=U.readUint8(),this.transferCharacteristics=U.readUint8(),this.matrixCoefficients=U.readUint8(),this.codecIntializationDataSize=U.readUint16(),this.codecIntializationData=U.readUint8Array(this.codecIntializationDataSize)}else{this.profile=U.readUint8(),this.level=U.readUint8();let e=U.readUint8();this.bitDepth=e>>4&15,this.colorSpace=e&15,e=U.readUint8(),this.chromaSubsampling=e>>4&15,this.transferFunction=e>>1&7,this.videoFullRangeFlag=e&1,this.codecIntializationDataSize=U.readUint16(),this.codecIntializationData=U.readUint8Array(this.codecIntializationDataSize)}}},Te.fourcc="vpcC",Te),ge,la=(ge=class extends o{constructor(){super(...arguments),this.box_name="VvcConfigurationBox"}parse(U){this.parseFullHeader(U);const e={held_bits:void 0,num_held_bits:0,stream_read_1_bytes:function(n){this.held_bits=n.readUint8(),this.num_held_bits=1*8},stream_read_2_bytes:function(n){this.held_bits=n.readUint16(),this.num_held_bits=2*8},extract_bits:function(n){const s=this.held_bits>>this.num_held_bits-n&(1<<n)-1;return this.num_held_bits-=n,s}};if(e.stream_read_1_bytes(U),e.extract_bits(5),this.lengthSizeMinusOne=e.extract_bits(2),this.ptl_present_flag=e.extract_bits(1),this.ptl_present_flag){e.stream_read_2_bytes(U),this.ols_idx=e.extract_bits(9),this.num_sublayers=e.extract_bits(3),this.constant_frame_rate=e.extract_bits(2),this.chroma_format_idc=e.extract_bits(2),e.stream_read_1_bytes(U),this.bit_depth_minus8=e.extract_bits(3),e.extract_bits(5);{if(e.stream_read_2_bytes(U),e.extract_bits(2),this.num_bytes_constraint_info=e.extract_bits(6),this.general_profile_idc=e.extract_bits(7),this.general_tier_flag=e.extract_bits(1),this.general_level_idc=U.readUint8(),e.stream_read_1_bytes(U),this.ptl_frame_only_constraint_flag=e.extract_bits(1),this.ptl_multilayer_enabled_flag=e.extract_bits(1),this.general_constraint_info=new Uint8Array(this.num_bytes_constraint_info),this.num_bytes_constraint_info){for(let n=0;n<this.num_bytes_constraint_info-1;n++){const s=e.extract_bits(6);e.stream_read_1_bytes(U);const l=e.extract_bits(2);this.general_constraint_info[n]=s<<2|l}this.general_constraint_info[this.num_bytes_constraint_info-1]=e.extract_bits(6)}else e.extract_bits(6);if(this.num_sublayers>1){e.stream_read_1_bytes(U),this.ptl_sublayer_present_mask=0;for(let n=this.num_sublayers-2;n>=0;--n){const s=e.extract_bits(1);this.ptl_sublayer_present_mask|=s<<n}for(let n=this.num_sublayers;n<=8&&this.num_sublayers>1;++n)e.extract_bits(1);this.sublayer_level_idc=[];for(let n=this.num_sublayers-2;n>=0;--n)this.ptl_sublayer_present_mask&1<<n&&(this.sublayer_level_idc[n]=U.readUint8())}if(this.ptl_num_sub_profiles=U.readUint8(),this.general_sub_profile_idc=[],this.ptl_num_sub_profiles)for(let n=0;n<this.ptl_num_sub_profiles;n++)this.general_sub_profile_idc.push(U.readUint32())}this.max_picture_width=U.readUint16(),this.max_picture_height=U.readUint16(),this.avg_frame_rate=U.readUint16()}const t=12,F=13;this.nalu_arrays=[];const Q=U.readUint8();for(let n=0;n<Q;n++){const s=[];this.nalu_arrays.push(s),e.stream_read_1_bytes(U),s.completeness=e.extract_bits(1),e.extract_bits(2),s.nalu_type=e.extract_bits(5);let l=1;s.nalu_type!==F&&s.nalu_type!==t&&(l=U.readUint16());for(let a=0;a<l;a++){const B=U.readUint16();s.push({data:U.readUint8Array(B),length:B})}}}},ge.fourcc="vvcC",ge),De,aa=(De=class extends J{constructor(){super(...arguments),this.box_name="ColourInformationBox"}parse(U){if(this.colour_type=U.readString(4),this.colour_type==="nclx"){this.colour_primaries=U.readUint16(),this.transfer_characteristics=U.readUint16(),this.matrix_coefficients=U.readUint16();const e=U.readUint8();this.full_range_flag=e>>7}else this.colour_type==="rICC"?this.ICC_profile=U.readUint8Array(this.size-4):this.colour_type==="prof"&&(this.ICC_profile=U.readUint8Array(this.size-4))}},De.fourcc="colr",De);function nU(i,U){let e=Number(i).toString(16);for(U=typeof U>"u"?2:U;e.length<U;)e="0"+e;return e}var Un=class extends D{getCodec(){const i=super.getCodec();return this.avcC?`${i}.${nU(this.avcC.AVCProfileIndication)}${nU(this.avcC.profile_compatibility)}${nU(this.avcC.AVCLevelIndication)}`:i}},xe,Ba=(xe=class extends Un{constructor(){super(...arguments),this.box_name="AVCSampleEntry"}},xe.fourcc="avc1",xe),be,da=(be=class extends Un{constructor(){super(...arguments),this.box_name="AVC2SampleEntry"}},be.fourcc="avc2",be),Me,ra=(Me=class extends Un{constructor(){super(...arguments),this.box_name="AVCSampleEntry"}},Me.fourcc="avc3",Me),ye,Ra=(ye=class extends Un{constructor(){super(...arguments),this.box_name="AVC2SampleEntry"}},ye.fourcc="avc4",ye),we,oa=(we=class extends D{constructor(){super(...arguments),this.box_name="AV1SampleEntry"}getCodec(){const U=super.getCodec(),e=this.av1C.seq_level_idx_0,t=e<10?"0"+e:e;let F;return this.av1C.seq_profile===2&&this.av1C.high_bitdepth===1?F=this.av1C.twelve_bit===1?"12":"10":this.av1C.seq_profile<=2&&(F=this.av1C.high_bitdepth===1?"10":"08"),U+"."+this.av1C.seq_profile+"."+t+(this.av1C.seq_tier_0?"H":"M")+"."+F}},we.fourcc="av01",we),Ie,ha=(Ie=class extends D{},Ie.fourcc="dav1",Ie),en=class extends D{getCodec(){let i=super.getCodec();if(this.hvcC){switch(i+=".",this.hvcC.general_profile_space){case 0:i+="";break;case 1:i+="A";break;case 2:i+="B";break;case 3:i+="C";break}i+=this.hvcC.general_profile_idc,i+=".";let U=this.hvcC.general_profile_compatibility,e=0;for(let Q=0;Q<32&&(e|=U&1,Q!==31);Q++)e<<=1,U>>=1;i+=nU(e,0),i+=".",this.hvcC.general_tier_flag===0?i+="L":i+="H",i+=this.hvcC.general_level_idc;let t=!1,F="";for(let Q=5;Q>=0;Q--)(this.hvcC.general_constraint_indicator[Q]||t)&&(F="."+nU(this.hvcC.general_constraint_indicator[Q],0)+F,t=!0);i+=F}return i}},ve,Va=(ve=class extends en{constructor(){super(...arguments),this.box_name="HEVCSampleEntry"}},ve.fourcc="hvc1",ve),_e,Ja=(_e=class extends en{},_e.fourcc="hvc2",_e),He,ca=(He=class extends en{constructor(){super(...arguments),this.box_name="HEVCSampleEntry",this.colrs=[],this.subBoxNames=["colr"]}},He.fourcc="hev1",He),ze,Sa=(ze=class extends en{},ze.fourcc="hev2",ze),Ye,Wa=(Ye=class extends D{constructor(){super(...arguments),this.box_name="HEVCTileSampleSampleEntry"}},Ye.fourcc="hvt1",Ye),Ge,pa=(Ge=class extends D{constructor(){super(...arguments),this.box_name="LHEVCSampleEntry"}},Ge.fourcc="lhe1",Ge),Xe,Ea=(Xe=class extends D{constructor(){super(...arguments),this.box_name="LHEVCSampleEntry"}},Xe.fourcc="lhv1",Xe),Le,Na=(Le=class extends D{},Le.fourcc="dvh1",Le),Oe,Za=(Oe=class extends D{},Oe.fourcc="dvhe",Oe),Ss=class extends D{getCodec(){let i=super.getCodec();if(this.vvcC){i+="."+this.vvcC.general_profile_idc,this.vvcC.general_tier_flag?i+=".H":i+=".L",i+=this.vvcC.general_level_idc;let U="";if(this.vvcC.general_constraint_info){const e=[];let t=0;t|=this.vvcC.ptl_frame_only_constraint_flag<<7,t|=this.vvcC.ptl_multilayer_enabled_flag<<6;let F;for(let Q=0;Q<this.vvcC.general_constraint_info.length;++Q)t|=this.vvcC.general_constraint_info[Q]>>2&63,e.push(t),t&&(F=Q),t=this.vvcC.general_constraint_info[Q]>>2&3;if(F===void 0)U=".CA";else{U=".C";const Q="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567";let n=0,s=0;for(let l=0;l<=F;++l)for(n=n<<8|e[l],s+=8;s>=5;){const a=n>>s-5&31;U+=Q[a],s-=5,n&=(1<<s)-1}s&&(n<<=5-s,U+=Q[n&31])}}i+=U}return i}},Ae,ka=(Ae=class extends Ss{constructor(){super(...arguments),this.box_name="VvcSampleEntry"}},Ae.fourcc="vvc1",Ae),je,ua=(je=class extends Ss{constructor(){super(...arguments),this.box_name="VvcSampleEntry"}},je.fourcc="vvi1",je),Ke,fa=(Ke=class extends D{constructor(){super(...arguments),this.box_name="VvcSampleEntry"}},Ke.fourcc="vvs1",Ke),Pe,ma=(Pe=class extends D{constructor(){super(...arguments),this.box_name="VvcNonVCLSampleEntry"}},Pe.fourcc="vvcN",Pe),Ws=class extends D{getCodec(){const i=super.getCodec();let U=this.vpcC.level;U===0&&(U="00");let e=this.vpcC.bitDepth;return e===8&&(e="08"),`${i}.0${this.vpcC.profile}.${U}.${e}`}},qe,Ca=(qe=class extends Ws{},qe.fourcc="vp08",qe),$e,Ta=($e=class extends Ws{},$e.fourcc="vp09",$e),Ut,ga=(Ut=class extends D{},Ut.fourcc="avs3",Ut),et,Da=(et=class extends D{constructor(){super(...arguments),this.box_name="J2KSampleEntry"}},et.fourcc="j2ki",et),tt,xa=(tt=class extends D{},tt.fourcc="mjp2",tt),Ft,ba=(Ft=class extends D{},Ft.fourcc="mjpg",Ft),Qt,Ma=(Qt=class extends D{constructor(){super(...arguments),this.box_name="UncompressedVideoSampleEntry"}},Qt.fourcc="uncv",Qt),it,ya=(it=class extends D{constructor(){super(...arguments),this.box_name="MP4VisualSampleEntry"}},it.fourcc="mp4v",it),nt,wa=(nt=class extends v{constructor(){super(...arguments),this.box_name="MP4AudioSampleEntry"}getCodec(){const U=super.getCodec();if(this.esds&&this.esds.esd){const e=this.esds.esd.getOTI(),t=this.esds.esd.getAudioConfig();return U+"."+nU(e)+(t?"."+t:"")}else return U}},nt.fourcc="mp4a",nt),st,Ia=(st=class extends v{},st.fourcc="m4ae",st),lt,va=(lt=class extends v{},lt.fourcc="ac-3",lt),at,_a=(at=class extends v{},at.fourcc="ac-4",at),Bt,Ha=(Bt=class extends v{},Bt.fourcc="ec-3",Bt),dt,za=(dt=class extends v{},dt.fourcc="Opus",dt),rt,Ya=(rt=class extends v{},rt.fourcc="mha1",rt),Rt,Ga=(Rt=class extends v{},Rt.fourcc="mha2",Rt),ot,Xa=(ot=class extends v{},ot.fourcc="mhm1",ot),ht,La=(ht=class extends v{},ht.fourcc="mhm2",ht),Vt,Oa=(Vt=class extends v{},Vt.fourcc="fLaC",Vt),Jt,Aa=(Jt=class extends D{},Jt.fourcc="encv",Jt),ct,ja=(ct=class extends v{},ct.fourcc="enca",ct),St,Ka=(St=class extends eU{constructor(){super(...arguments),this.subBoxNames=["sinf"],this.sinfs=[]}},St.fourcc="encu",St),Wt,Pa=(Wt=class extends Zn{constructor(){super(...arguments),this.subBoxNames=["sinf"],this.sinfs=[]}},Wt.fourcc="encs",Wt),pt,qa=(pt=class extends Zn{},pt.fourcc="mp4s",pt),Et,$a=(Et=class extends Nl{constructor(){super(...arguments),this.subBoxNames=["sinf"],this.sinfs=[]}},Et.fourcc="enct",Et),Nt,UB=(Nt=class extends sU{constructor(){super(...arguments),this.subBoxNames=["sinf"],this.sinfs=[]}},Nt.fourcc="encm",Nt),Zt,eB=(Zt=class extends D{constructor(){super(...arguments),this.box_name="RestrictedVideoSampleEntry"}},Zt.fourcc="resv",Zt),kt,tB=(kt=class extends eU{parse(U){this.parseHeader(U),this.content_encoding=U.readCString(),this.mime_format=U.readCString(),this.parseFooter(U)}},kt.fourcc="sbtt",kt),ut,ps=(ut=class extends eU{parse(U){this.parseHeader(U),this.namespace=U.readCString(),this.schema_location=U.readCString(),this.auxiliary_mime_types=U.readCString(),this.parseFooter(U)}write(U){this.writeHeader(U),this.size+=this.namespace.length+1+this.schema_location.length+1+this.auxiliary_mime_types.length+1,U.writeCString(this.namespace),U.writeCString(this.schema_location),U.writeCString(this.auxiliary_mime_types),this.writeFooter(U)}},ut.fourcc="stpp",ut),ft,FB=(ft=class extends eU{parse(U){this.parseHeader(U),this.content_encoding=U.readCString(),this.mime_format=U.readCString(),this.parseFooter(U)}getCodec(){const U=super.getCodec();return this.mime_format?U+"."+this.mime_format:U}},ft.fourcc="stxt",ft),mt,QB=(mt=class extends eU{parse(U){this.parseHeader(U),this.displayFlags=U.readUint32(),this.horizontal_justification=U.readInt8(),this.vertical_justification=U.readInt8(),this.bg_color_rgba=U.readUint8Array(4),this.box_record=U.readInt16Array(4),this.style_record=U.readUint8Array(12),this.parseFooter(U)}},mt.fourcc="tx3g",mt),Ct,iB=(Ct=class extends sU{parse(U){this.parseHeader(U),this.parseFooter(U)}},Ct.fourcc="wvtt",Ct),Tt,nB=(Tt=class extends o{constructor(){super(...arguments),this.box_name="SampleToGroupBox"}parse(U){this.parseFullHeader(U),this.grouping_type=U.readString(4),this.version===1?this.grouping_type_parameter=U.readUint32():this.grouping_type_parameter=0,this.entries=[];const e=U.readUint32();for(let t=0;t<e;t++)this.entries.push({sample_count:U.readInt32(),group_description_index:U.readInt32()})}write(U){this.grouping_type_parameter?this.version=1:this.version=0,this.flags=0,this.size=8+8*this.entries.length+(this.version===1?4:0),this.writeHeader(U),U.writeString(this.grouping_type,void 0,4),this.version===1&&U.writeUint32(this.grouping_type_parameter),U.writeUint32(this.entries.length);for(let e=0;e<this.entries.length;e++){const t=this.entries[e];U.writeInt32(t.sample_count),U.writeInt32(t.group_description_index)}}},Tt.fourcc="sbgp",Tt),gt,sB=(gt=class extends o{constructor(){super(...arguments),this.box_name="SampleDependencyTypeBox"}parse(U){this.parseFullHeader(U);const e=this.size-this.hdr_size;this.is_leading=[],this.sample_depends_on=[],this.sample_is_depended_on=[],this.sample_has_redundancy=[];for(let t=0;t<e;t++){const F=U.readUint8();this.is_leading[t]=F>>6,this.sample_depends_on[t]=F>>4&3,this.sample_is_depended_on[t]=F>>2&3,this.sample_has_redundancy[t]=F&3}}},gt.fourcc="sdtp",gt),Dt,lB=(Dt=class extends o{constructor(){super(...arguments),this.box_name="SampleGroupDescriptionBox"}parse(U){this.parseFullHeader(U),this.grouping_type=U.readString(4),R.debug("BoxParser","Found Sample Groups of type "+this.grouping_type),this.version===1?this.default_length=U.readUint32():this.default_length=0,this.version>=2&&(this.default_group_description_index=U.readUint32()),this.entries=[];const e=U.readUint32();for(let t=0;t<e;t++){let F;this.grouping_type in I.sampleGroupEntry?F=new I.sampleGroupEntry[this.grouping_type](this.grouping_type):F=new b(this.grouping_type),this.entries.push(F),this.version===1?this.default_length===0?F.description_length=U.readUint32():F.description_length=this.default_length:F.description_length=this.default_length,F.write===b.prototype.write&&(R.info("BoxParser","SampleGroup for type "+this.grouping_type+" writing not yet implemented, keeping unparsed data in memory for later write"),F.data=U.readUint8Array(F.description_length),U.seek(U.getPosition()-F.description_length)),F.parse(U)}}write(U){this.flags=0,this.size=12;for(let e=0;e<this.entries.length;e++){const t=this.entries[e];this.version===1&&(this.default_length===0&&(this.size+=4),this.size+=t.data.length)}this.writeHeader(U),U.writeString(this.grouping_type,void 0,4),this.version===1&&U.writeUint32(this.default_length),this.version>=2&&U.writeUint32(this.default_sample_description_index),U.writeUint32(this.entries.length);for(let e=0;e<this.entries.length;e++){const t=this.entries[e];this.version===1&&this.default_length===0&&U.writeUint32(t.description_length),t.write(U)}}},Dt.fourcc="sgpd",Dt),xt,aB=(xt=class extends o{constructor(){super(...arguments),this.box_name="CompressedSegmentIndexBox"}parse(U){this.parseFullHeader(U),this.reference_ID=U.readUint32(),this.timescale=U.readUint32(),this.version===0?(this.earliest_presentation_time=U.readUint32(),this.first_offset=U.readUint32()):(this.earliest_presentation_time=U.readUint64(),this.first_offset=U.readUint64()),U.readUint16(),this.references=[];const e=U.readUint16();for(let t=0;t<e;t++){const F=U.readUint32(),Q=U.readUint32(),n=U.readUint32();this.references.push({reference_type:F>>31&1,referenced_size:F&2147483647,subsegment_duration:Q,starts_with_SAP:n>>31&1,SAP_type:n>>28&7,SAP_delta_time:n&268435455})}}write(U){const e=this.earliest_presentation_time>M||this.first_offset>M||this.version===1;this.version=e?1:0,this.size=4*2+2+2+12*this.references.length,this.size+=e?16:8,this.flags=0,this.writeHeader(U),U.writeUint32(this.reference_ID),U.writeUint32(this.timescale),e?(U.writeUint64(this.earliest_presentation_time),U.writeUint64(this.first_offset)):(U.writeUint32(this.earliest_presentation_time),U.writeUint32(this.first_offset)),U.writeUint16(0),U.writeUint16(this.references.length);for(let t=0;t<this.references.length;t++){const F=this.references[t];U.writeUint32(F.reference_type<<31|F.referenced_size),U.writeUint32(F.subsegment_duration),U.writeUint32(F.starts_with_SAP<<31|F.SAP_type<<28|F.SAP_delta_time)}}},xt.fourcc="sidx",xt),bt,Es=(bt=class extends o{constructor(){super(...arguments),this.box_name="SoundMediaHeaderBox"}parse(U){this.parseFullHeader(U),this.balance=U.readUint16(),U.readUint16()}write(U){this.version=0,this.size=4,this.writeHeader(U),U.writeUint16(this.balance),U.writeUint16(0)}},bt.fourcc="smhd",bt),Mt,Ns=(Mt=class extends o{constructor(){super(...arguments),this.box_name="ChunkOffsetBox"}parse(U){this.parseFullHeader(U);const e=U.readUint32();if(this.chunk_offsets=[],this.version===0)for(let t=0;t<e;t++)this.chunk_offsets.push(U.readUint32())}write(U){this.version=0,this.flags=0,this.size=4+4*this.chunk_offsets.length,this.writeHeader(U),U.writeUint32(this.chunk_offsets.length),U.writeUint32Array(this.chunk_offsets)}unpack(U){for(let e=0;e<this.chunk_offsets.length;e++)U[e].offset=this.chunk_offsets[e]}},Mt.fourcc="stco",Mt),yt,Zs=(yt=class extends o{constructor(){super(...arguments),this.box_name="SubtitleMediaHeaderBox"}},yt.fourcc="sthd",yt),wt,ks=(wt=class extends o{constructor(){super(...arguments),this.box_name="SampleToChunkBox"}parse(U){this.parseFullHeader(U);const e=U.readUint32();if(this.first_chunk=[],this.samples_per_chunk=[],this.sample_description_index=[],this.version===0)for(let t=0;t<e;t++)this.first_chunk.push(U.readUint32()),this.samples_per_chunk.push(U.readUint32()),this.sample_description_index.push(U.readUint32())}write(U){this.version=0,this.flags=0,this.size=4+12*this.first_chunk.length,this.writeHeader(U),U.writeUint32(this.first_chunk.length);for(let e=0;e<this.first_chunk.length;e++)U.writeUint32(this.first_chunk[e]),U.writeUint32(this.samples_per_chunk[e]),U.writeUint32(this.sample_description_index[e])}unpack(U){let e=0,t=0;for(let F=0;F<this.first_chunk.length;F++)for(let Q=0;Q<(F+1<this.first_chunk.length?this.first_chunk[F+1]:1/0);Q++){t++;for(let n=0;n<this.samples_per_chunk[F];n++){if(U[e])U[e].description_index=this.sample_description_index[F],U[e].chunk_index=t;else return;e++}}}},wt.fourcc="stsc",wt),It,us=(It=class extends o{constructor(){super(...arguments),this.box_name="SampleDescriptionBox"}parse(U){this.parseFullHeader(U),this.entries=[];const e=U.readUint32();for(let t=1;t<=e;t++){const F=Y(U,!0,this.size-(U.getPosition()-this.start));if(F.code===H){let Q;F.type in I.sampleEntry?(Q=new I.sampleEntry[F.type](F.size),Q.hdr_size=F.hdr_size,Q.start=F.start):(R.warn("BoxParser",`Unknown sample entry type: '${F.type}'`),Q=new O(F.size,F.hdr_size,F.start),Q.type=F.type),Q.write===O.prototype.write&&(R.info("BoxParser","SampleEntry "+Q.type+" box writing not yet implemented, keeping unparsed data in memory for later write"),Q.parseDataAndRewind(U)),Q.parse(U),this.entries.push(Q)}else return}}write(U){this.version=0,this.flags=0,this.size=0,this.writeHeader(U),U.writeUint32(this.entries.length),this.size+=4;for(let e=0;e<this.entries.length;e++)this.entries[e].write(U),this.size+=this.entries[e].size;R.debug("BoxWriter","Adjusting box "+this.type+" with new size "+this.size),U.adjustUint32(this.sizePosition,this.size)}},It.fourcc="stsd",It),vt,fs=(vt=class extends o{constructor(){super(...arguments),this.box_name="SampleSizeBox"}parse(U){if(this.parseFullHeader(U),this.sample_sizes=[],this.version===0){this.sample_size=U.readUint32(),this.sample_count=U.readUint32();for(let e=0;e<this.sample_count;e++)this.sample_size===0?this.sample_sizes.push(U.readUint32()):this.sample_sizes[e]=this.sample_size}}write(U){let e=!0;if(this.version=0,this.flags=0,this.sample_sizes.length>0){let t=0;for(;t+1<this.sample_sizes.length;)if(this.sample_sizes[t+1]!==this.sample_sizes[0]){e=!1;break}else t++}else e=!1;this.size=8,e||(this.size+=4*this.sample_sizes.length),this.writeHeader(U),e?U.writeUint32(this.sample_sizes[0]):U.writeUint32(0),U.writeUint32(this.sample_sizes.length),e||U.writeUint32Array(this.sample_sizes)}unpack(U){for(let e=0;e<this.sample_sizes.length;e++)U[e].size=this.sample_sizes[e]}},vt.fourcc="stsz",vt),_t,ms=(_t=class extends o{constructor(){super(...arguments),this.box_name="TimeToSampleBox",this.sample_counts=[],this.sample_deltas=[]}parse(U){this.parseFullHeader(U);const e=U.readUint32();if(this.sample_counts.length=0,this.sample_deltas.length=0,this.version===0)for(let t=0;t<e;t++){this.sample_counts.push(U.readUint32());let F=U.readInt32();F<0&&(R.warn("BoxParser","File uses negative stts sample delta, using value 1 instead, sync may be lost!"),F=1),this.sample_deltas.push(F)}}write(U){this.version=0,this.flags=0,this.size=4+8*this.sample_counts.length,this.writeHeader(U),U.writeUint32(this.sample_counts.length);for(let e=0;e<this.sample_counts.length;e++)U.writeUint32(this.sample_counts[e]),U.writeUint32(this.sample_deltas[e])}unpack(U){let e=0;for(let t=0;t<this.sample_counts.length;t++)for(let F=0;F<this.sample_counts[t];F++)e===0?U[e].dts=0:U[e].dts=U[e-1].dts+this.sample_deltas[t],e++}},_t.fourcc="stts",_t),Ht,Cs=(Ht=class extends o{constructor(){super(...arguments),this.box_name="TrackFragmentBaseMediaDecodeTimeBox"}parse(U){this.parseFullHeader(U),this.version===1?this.baseMediaDecodeTime=U.readUint64():this.baseMediaDecodeTime=U.readUint32()}write(U){const e=this.baseMediaDecodeTime>M||this.version===1;this.version=e?1:0,this.size=4,this.size+=e?4:0,this.flags=0,this.writeHeader(U),e?U.writeUint64(this.baseMediaDecodeTime):U.writeUint32(this.baseMediaDecodeTime)}},Ht.fourcc="tfdt",Ht),zt,Ts=(zt=class extends o{constructor(){super(...arguments),this.box_name="TrackFragmentHeaderBox"}parse(U){this.parseFullHeader(U);let e=0;this.track_id=U.readUint32(),this.size-this.hdr_size>e&&this.flags&Mi?(this.base_data_offset=U.readUint64(),e+=8):this.base_data_offset=0,this.size-this.hdr_size>e&&this.flags&yi?(this.default_sample_description_index=U.readUint32(),e+=4):this.default_sample_description_index=0,this.size-this.hdr_size>e&&this.flags&wi?(this.default_sample_duration=U.readUint32(),e+=4):this.default_sample_duration=0,this.size-this.hdr_size>e&&this.flags&Ii?(this.default_sample_size=U.readUint32(),e+=4):this.default_sample_size=0,this.size-this.hdr_size>e&&this.flags&vi?(this.default_sample_flags=U.readUint32(),e+=4):this.default_sample_flags=0}write(U){this.version=0,this.size=4,this.flags&Mi&&(this.size+=8),this.flags&yi&&(this.size+=4),this.flags&wi&&(this.size+=4),this.flags&Ii&&(this.size+=4),this.flags&vi&&(this.size+=4),this.writeHeader(U),U.writeUint32(this.track_id),this.flags&Mi&&U.writeUint64(this.base_data_offset),this.flags&yi&&U.writeUint32(this.default_sample_description_index),this.flags&wi&&U.writeUint32(this.default_sample_duration),this.flags&Ii&&U.writeUint32(this.default_sample_size),this.flags&vi&&U.writeUint32(this.default_sample_flags)}},zt.fourcc="tfhd",zt),Yt,gs=(Yt=class extends o{constructor(){super(...arguments),this.box_name="TrackHeaderBox",this.layer=0,this.alternate_group=0}parse(U){this.parseFullHeader(U),this.version===1?(this.creation_time=U.readUint64(),this.modification_time=U.readUint64(),this.track_id=U.readUint32(),U.readUint32(),this.duration=U.readUint64()):(this.creation_time=U.readUint32(),this.modification_time=U.readUint32(),this.track_id=U.readUint32(),U.readUint32(),this.duration=U.readUint32()),U.readUint32Array(2),this.layer=U.readInt16(),this.alternate_group=U.readInt16(),this.volume=U.readInt16()>>8,U.readUint16(),this.matrix=U.readInt32Array(9),this.width=U.readUint32(),this.height=U.readUint32()}write(U){const e=this.modification_time>M||this.creation_time>M||this.duration>M||this.version===1;this.version=e?1:0,this.size=5*4+15*4,this.size+=e?3*4:0,this.flags=this.flags??3,this.writeHeader(U),e?(U.writeUint64(this.creation_time),U.writeUint64(this.modification_time),U.writeUint32(this.track_id),U.writeUint32(0),U.writeUint64(this.duration)):(U.writeUint32(this.creation_time),U.writeUint32(this.modification_time),U.writeUint32(this.track_id),U.writeUint32(0),U.writeUint32(this.duration)),U.writeUint32Array([0,0]),U.writeInt16(this.layer),U.writeInt16(this.alternate_group),U.writeInt16(this.volume<<8),U.writeInt16(0),U.writeInt32Array(this.matrix),U.writeUint32(this.width),U.writeUint32(this.height)}print(U){super.printHeader(U),U.log(U.indent+"creation_time: "+this.creation_time),U.log(U.indent+"modification_time: "+this.modification_time),U.log(U.indent+"track_id: "+this.track_id),U.log(U.indent+"duration: "+this.duration),U.log(U.indent+"volume: "+(this.volume>>8)),U.log(U.indent+"matrix: "+this.matrix.join(", ")),U.log(U.indent+"layer: "+this.layer),U.log(U.indent+"alternate_group: "+this.alternate_group),U.log(U.indent+"width: "+this.width),U.log(U.indent+"height: "+this.height)}},Yt.fourcc="tkhd",Yt),Gt,Jn=(Gt=class extends o{constructor(){super(...arguments),this.box_name="TrackExtendsBox"}parse(U){this.parseFullHeader(U),this.track_id=U.readUint32(),this.default_sample_description_index=U.readUint32(),this.default_sample_duration=U.readUint32(),this.default_sample_size=U.readUint32(),this.default_sample_flags=U.readUint32()}write(U){this.version=0,this.flags=0,this.size=4*5,this.writeHeader(U),U.writeUint32(this.track_id),U.writeUint32(this.default_sample_description_index),U.writeUint32(this.default_sample_duration),U.writeUint32(this.default_sample_size),U.writeUint32(this.default_sample_flags)}},Gt.fourcc="trex",Gt),Xt,Ds=(Xt=class extends o{constructor(){super(...arguments),this.box_name="TrackRunBox",this.sample_duration=[],this.sample_size=[],this.sample_flags=[],this.sample_composition_time_offset=[]}parse(U){this.parseFullHeader(U);let e=0;if(this.sample_count=U.readUint32(),e+=4,this.size-this.hdr_size>e&&this.flags&hU?(this.data_offset=U.readInt32(),e+=4):this.data_offset=0,this.size-this.hdr_size>e&&this.flags&_i?(this.first_sample_flags=U.readUint32(),e+=4):this.first_sample_flags=0,this.sample_duration=[],this.sample_size=[],this.sample_flags=[],this.sample_composition_time_offset=[],this.size-this.hdr_size>e)for(let t=0;t<this.sample_count;t++)this.flags&VU&&(this.sample_duration[t]=U.readUint32()),this.flags&JU&&(this.sample_size[t]=U.readUint32()),this.flags&cU&&(this.sample_flags[t]=U.readUint32()),this.flags&SU&&(this.version===0?this.sample_composition_time_offset[t]=U.readUint32():this.sample_composition_time_offset[t]=U.readInt32())}write(U){this.size=4,this.flags&hU&&(this.size+=4),this.flags&_i&&(this.size+=4),this.flags&VU&&(this.size+=4*this.sample_duration.length),this.flags&JU&&(this.size+=4*this.sample_size.length),this.flags&cU&&(this.size+=4*this.sample_flags.length),this.flags&SU&&(this.size+=4*this.sample_composition_time_offset.length),this.writeHeader(U),U.writeUint32(this.sample_count),this.flags&hU&&(this.data_offset_position=U.getPosition(),U.writeInt32(this.data_offset)),this.flags&_i&&U.writeUint32(this.first_sample_flags);for(let e=0;e<this.sample_count;e++)this.flags&VU&&U.writeUint32(this.sample_duration[e]),this.flags&JU&&U.writeUint32(this.sample_size[e]),this.flags&cU&&U.writeUint32(this.sample_flags[e]),this.flags&SU&&(this.version===0?U.writeUint32(this.sample_composition_time_offset[e]):U.writeInt32(this.sample_composition_time_offset[e]))}},Xt.fourcc="trun",Xt),Lt,xs=(Lt=class extends o{constructor(){super(...arguments),this.box_name="DataEntryUrlBox"}parse(U){this.parseFullHeader(U),this.flags!==1&&(this.location=U.readCString())}write(U){this.version=0,this.location?(this.flags=0,this.size=this.location.length+1):(this.flags=1,this.size=0),this.writeHeader(U),this.location&&U.writeCString(this.location)}},Lt.fourcc="url ",Lt),Ot,bs=(Ot=class extends o{constructor(){super(...arguments),this.box_name="VideoMediaHeaderBox"}parse(U){this.parseFullHeader(U),this.graphicsmode=U.readUint16(),this.opcolor=U.readUint16Array(3)}write(U){this.version=0,this.size=8,this.writeHeader(U),U.writeUint16(this.graphicsmode),U.writeUint16Array(this.opcolor)}},Ot.fourcc="vmhd",Ot),dn=class{constructor(i,U,e){this.grouping_type=i,this.grouping_type_parameter=U,this.sbgp=e,this.last_sample_in_run=-1,this.entry_index=-1}},BB=class j{constructor(U,e=!0){this.boxes=[],this.mdats=[],this.moofs=[],this.isProgressive=!1,this.moovStartFound=!1,this.moovStartSent=!1,this.readySent=!1,this.sampleListBuilt=!1,this.fragmentedTracks=[],this.extractedTracks=[],this.isFragmentationInitialized=!1,this.sampleProcessingStarted=!1,this.nextMoofNumber=0,this.itemListBuilt=!1,this.sidxSent=!1,this.items=[],this.entity_groups=[],this.itemsDataSize=0,this.lastMoofIndex=0,this.samplesDataSize=0,this.lastBoxStartPosition=0,this.nextParsePosition=0,this.discardMdatData=!0,this.discardMdatData=e,U?(this.stream=U,this.parse()):this.stream=new zi,this.stream.isofile=this}setSegmentOptions(U,e,t){const{sizePerSegment:F=Number.MAX_SAFE_INTEGER,rapAlignement:Q=!0}=t;let n=t.nbSamples??t.nbSamplesPerFragment??1e3;const s=t.nbSamplesPerFragment??n;if(n<=0||s<=0||F<=0){R.error("ISOFile",`Invalid segment options: nbSamples=${n}, nbSamplesPerFragment=${s}, sizePerSegment=${F}`);return}if(n<s&&(R.warn("ISOFile",`nbSamples (${n}) is less than nbSamplesPerFragment (${s}), setting nbSamples to nbSamplesPerFragment`),n=s),this.fragmentedTracks.some(a=>a.nb_samples!==n)){R.error("ISOFile",`Cannot set segment options for track ${U}: nbSamples (${n}) does not match existing tracks`);return}const l=this.getTrackById(U);if(l){const a={id:U,user:e,trak:l,segmentStream:void 0,nb_samples:n,nb_samples_per_fragment:s,size_per_segment:F,rapAlignement:Q,state:{lastFragmentSampleNumber:0,lastSegmentSampleNumber:0,accumulatedSize:0}};this.fragmentedTracks.push(a),l.nextSample=0}this.discardMdatData&&R.warn("ISOFile","Segmentation options set but discardMdatData is true, samples will not be segmented")}unsetSegmentOptions(U){let e=-1;for(let t=0;t<this.fragmentedTracks.length;t++)this.fragmentedTracks[t].id===U&&(e=t);e>-1&&this.fragmentedTracks.splice(e,1)}setExtractionOptions(U,e,{nbSamples:t=1e3}={}){const F=this.getTrackById(U);F&&(this.extractedTracks.push({id:U,user:e,trak:F,nb_samples:t,samples:[]}),F.nextSample=0),this.discardMdatData&&R.warn("ISOFile","Extraction options set but discardMdatData is true, samples will not be extracted")}unsetExtractionOptions(U){let e=-1;for(let t=0;t<this.extractedTracks.length;t++)this.extractedTracks[t].id===U&&(e=t);e>-1&&this.extractedTracks.splice(e,1)}parse(){if(!(this.restoreParsePosition&&!this.restoreParsePosition()))for(;;)if(this.hasIncompleteMdat&&this.hasIncompleteMdat()){if(this.processIncompleteMdat())continue;return}else{this.saveParsePosition&&this.saveParsePosition();const e=Y(this.stream,!1);if(e.code===A)if(this.processIncompleteBox){if(this.processIncompleteBox(e))continue;return}else return;else if(e.code===H){const t=e.box;if(this.boxes.push(t),t.type==="uuid")this[t.uuid]!==void 0&&R.warn("ISOFile","Duplicate Box of uuid: "+t.uuid+", overriding previous occurrence"),this[t.uuid]=t;else switch(t.type){case"mdat":this.mdats.push(t),this.transferMdatData(t);break;case"moof":this.moofs.push(t);break;case"free":case"skip":break;case"moov":this.moovStartFound=!0,this.mdats.length===0&&(this.isProgressive=!0);default:this[t.type]!==void 0?Array.isArray(this[t.type+"s"])?(R.info("ISOFile",`Found multiple boxes of type ${t.type} in ISOFile, adding to array`),this[t.type+"s"].push(t)):(R.warn("ISOFile",`Found multiple boxes of type ${t.type} but no array exists. Creating array dynamically.`),this[t.type+"s"]=[this[t.type],t]):(this[t.type]=t,Array.isArray(this[t.type+"s"])&&this[t.type+"s"].push(t));break}this.updateUsedBytes&&this.updateUsedBytes(t,e)}else if(e.code===qn){R.error("ISOFile",`Invalid data found while parsing box of type '${e.type}' at position ${e.start}. Aborting parsing.`,this);break}}}checkBuffer(U){if(!U)throw new Error("Buffer must be defined and non empty");return U.byteLength===0?(R.warn("ISOFile","Ignoring empty buffer (fileStart: "+U.fileStart+")"),this.stream.logBufferLevel(),!1):(R.info("ISOFile","Processing buffer (fileStart: "+U.fileStart+")"),U.usedBytes=0,this.stream.insertBuffer(U),this.stream.logBufferLevel(),this.stream.initialized()?!0:(R.warn("ISOFile","Not ready to start parsing"),!1))}appendBuffer(U,e){let t;if(this.checkBuffer(U))return this.parse(),this.moovStartFound&&!this.moovStartSent&&(this.moovStartSent=!0,this.onMoovStart&&this.onMoovStart()),this.moov?(this.sampleListBuilt||(this.buildSampleLists(),this.sampleListBuilt=!0),this.updateSampleLists(),this.onReady&&!this.readySent&&(this.readySent=!0,this.onReady(this.getInfo())),this.processSamples(e),this.nextSeekPosition?(t=this.nextSeekPosition,this.nextSeekPosition=void 0):t=this.nextParsePosition,this.stream.getEndFilePositionAfter&&(t=this.stream.getEndFilePositionAfter(t))):this.nextParsePosition?t=this.nextParsePosition:t=0,this.sidx&&this.onSidx&&!this.sidxSent&&(this.onSidx(this.sidx),this.sidxSent=!0),this.meta&&(this.flattenItemInfo&&!this.itemListBuilt&&(this.flattenItemInfo(),this.itemListBuilt=!0),this.processItems&&this.processItems(this.onItem)),this.stream.cleanBuffers&&(R.info("ISOFile","Done processing buffer (fileStart: "+U.fileStart+") - next buffer to fetch should have a fileStart position of "+t),this.stream.logBufferLevel(),this.stream.cleanBuffers(),this.stream.logBufferLevel(!0),R.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize())),t}getFragmentDuration(){const U=this.getBox("mvex");if(!U)return;if(U.mehd)return{num:U.mehd.fragment_duration,den:this.moov.mvhd.timescale};const e=this.getBoxes("trak",!1);let t={num:0,den:1};for(const F of e){const Q=F.samples_duration,n=F.mdia.mdhd.timescale;Q&&n&&Q/n>t.num/t.den&&(t={num:Q,den:n})}return t}getInfo(){if(!this.moov)return{hasMoov:!1,mime:""};const U=new Date("1904-01-01T00:00:00Z").getTime(),e=this.getBox("mvex")!==void 0,t={hasMoov:!0,duration:this.moov.mvhd.duration,timescale:this.moov.mvhd.timescale,isFragmented:e,fragment_duration:this.getFragmentDuration(),isProgressive:this.isProgressive,hasIOD:this.moov.iods!==void 0,brands:[this.ftyp.major_brand].concat(this.ftyp.compatible_brands),created:new Date(U+this.moov.mvhd.creation_time*1e3),modified:new Date(U+this.moov.mvhd.modification_time*1e3),tracks:[],audioTracks:[],videoTracks:[],subtitleTracks:[],metadataTracks:[],hintTracks:[],otherTracks:[],mime:""};for(let F=0;F<this.moov.traks.length;F++){const Q=this.moov.traks[F],n=Q.mdia.minf.stbl.stsd.entries[0],s=Q.samples_size,l=Q.mdia.mdhd.timescale,a=Q.samples_duration,B=s*8*l/a,r={samples_duration:a,bitrate:B,size:s,timescale:l,alternate_group:Q.tkhd.alternate_group,codec:n.getCodec(),created:new Date(U+Q.tkhd.creation_time*1e3),cts_shift:Q.mdia.minf.stbl.cslg,duration:Q.mdia.mdhd.duration,id:Q.tkhd.track_id,kind:Q.udta&&Q.udta.kinds.length?Q.udta.kinds[0]:{schemeURI:"",value:""},language:Q.mdia.elng?Q.mdia.elng.extended_language:Q.mdia.mdhd.languageString,layer:Q.tkhd.layer,matrix:Q.tkhd.matrix,modified:new Date(U+Q.tkhd.modification_time*1e3),movie_duration:Q.tkhd.duration,movie_timescale:t.timescale,name:Q.mdia.hdlr.name,nb_samples:Q.samples.length,references:[],track_height:Q.tkhd.height/65536,track_width:Q.tkhd.width/65536,volume:Q.tkhd.volume};if(t.tracks.push(r),Q.tref)for(let h=0;h<Q.tref.references.length;h++)r.references.push({type:Q.tref.references[h].type,track_ids:Q.tref.references[h].track_ids});Q.edts!==void 0&&Q.edts.elst!==void 0&&(r.edits=Q.edts.elst.entries),n instanceof v?(r.type="audio",t.audioTracks.push(r),r.audio={sample_rate:n.getSampleRate(),channel_count:n.getChannelCount(),sample_size:n.getSampleSize()}):n instanceof D?(r.type="video",t.videoTracks.push(r),r.video={width:n.getWidth(),height:n.getHeight()}):n instanceof eU?(r.type="subtitles",t.subtitleTracks.push(r)):n instanceof Xn?(r.type="metadata",t.hintTracks.push(r)):n instanceof sU?(r.type="metadata",t.metadataTracks.push(r)):(r.type="metadata",t.otherTracks.push(r))}t.videoTracks&&t.videoTracks.length>0?t.mime+='video/mp4; codecs="':t.audioTracks&&t.audioTracks.length>0?t.mime+='audio/mp4; codecs="':t.mime+='application/mp4; codecs="';for(let F=0;F<t.tracks.length;F++)F!==0&&(t.mime+=","),t.mime+=t.tracks[F].codec;return t.mime+='"; profiles="',t.mime+=this.ftyp.compatible_brands.join(),t.mime+='"',t}setNextSeekPositionFromSample(U){U&&(this.nextSeekPosition?this.nextSeekPosition=Math.min(U.offset+U.alreadyRead,this.nextSeekPosition):this.nextSeekPosition=U.offset+U.alreadyRead)}processSamples(U){if(this.sampleProcessingStarted){if(this.isFragmentationInitialized&&this.onSegment!==void 0){const e=new Set;for(;e.size<this.fragmentedTracks.length&&this.fragmentedTracks.some(t=>t.trak.nextSample<t.trak.samples.length)&&this.sampleProcessingStarted;)for(const t of this.fragmentedTracks){const F=t.trak;if(!e.has(t.id)){const Q=F.nextSample<F.samples.length?this.getSample(F,F.nextSample):void 0;if(!Q){this.setNextSeekPositionFromSample(F.samples[F.nextSample]),e.add(t.id);continue}t.state.accumulatedSize+=Q.size;const n=F.nextSample+1,s=n-t.state.lastFragmentSampleNumber>t.nb_samples_per_fragment,l=n-t.state.lastSegmentSampleNumber>t.nb_samples;let a=s||n%t.nb_samples_per_fragment===0,B=l||n%t.nb_samples===0,r=t.state.accumulatedSize>=t.size_per_segment;const h=!t.rapAlignement||Q.is_sync,V=U||F.nextSample+1>=F.samples.length;if(V&&!h&&R.warn("ISOFile","Flushing track #"+t.id+" at sample #"+F.nextSample+" which is not a RAP, this may lead to playback issues"),a=a&&h,B=B&&h,r=r&&h,a||r||V){s?R.warn("ISOFile","Fragment on track #"+t.id+" is overdue, creating it with samples ["+t.state.lastFragmentSampleNumber+", "+F.nextSample+"]"):R.debug("ISOFile","Creating media fragment on track #"+t.id+" for samples ["+t.state.lastFragmentSampleNumber+", "+F.nextSample+"]");const S=this.createFragment(t.id,t.state.lastFragmentSampleNumber,F.nextSample,t.segmentStream);if(S)t.segmentStream=S,t.state.lastFragmentSampleNumber=F.nextSample+1;else{e.add(t.id);continue}}(B||r||V)&&(l?R.warn("ISOFile","Segment on track #"+t.id+" is overdue, sending it with samples ["+Math.max(0,F.nextSample-t.nb_samples)+", "+(F.nextSample-1)+"]"):R.info("ISOFile","Sending fragmented data on track #"+t.id+" for samples ["+Math.max(0,F.nextSample-t.nb_samples)+", "+(F.nextSample-1)+"]"),R.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize()),this.onSegment&&this.onSegment(t.id,t.user,t.segmentStream.buffer,F.nextSample+1,U||F.nextSample+1>=F.samples.length),t.segmentStream=void 0,t.state.accumulatedSize=0,t.state.lastSegmentSampleNumber=F.nextSample+1),F.nextSample++}}}if(this.onSamples!==void 0)for(let e=0;e<this.extractedTracks.length;e++){const t=this.extractedTracks[e],F=t.trak;for(;F.nextSample<F.samples.length&&this.sampleProcessingStarted;){R.debug("ISOFile","Exporting on track #"+t.id+" sample #"+F.nextSample);const Q=this.getSample(F,F.nextSample);if(Q)F.nextSample++,t.samples.push(Q);else{this.setNextSeekPositionFromSample(F.samples[F.nextSample]);break}if((F.nextSample%t.nb_samples===0||F.nextSample>=F.samples.length)&&(R.debug("ISOFile","Sending samples on track #"+t.id+" for sample "+F.nextSample),this.onSamples&&this.onSamples(t.id,t.user,t.samples),t.samples=[],t!==this.extractedTracks[e]))break}}}}getBox(U){const e=this.getBoxes(U,!0);return e.length?e[0]:void 0}getBoxes(U,e){const t=[],F=Q=>{Q instanceof J&&Q.type&&Q.type===U&&t.push(Q);const n=[];Q.boxes&&n.push(...Q.boxes),Q.entries&&n.push(...Q.entries),Q.item_infos&&n.push(...Q.item_infos),Q.references&&n.push(...Q.references);for(const s of n){if(t.length&&e)return;F(s)}};return F(this),t}getTrackSamplesInfo(U){const e=this.getTrackById(U);if(e)return e.samples}getTrackSample(U,e){const t=this.getTrackById(U);return this.getSample(t,e)}releaseUsedSamples(U,e){let t=0;const F=this.getTrackById(U);F.lastValidSample||(F.lastValidSample=0);for(let Q=F.lastValidSample;Q<e;Q++)t+=this.releaseSample(F,Q);R.info("ISOFile","Track #"+U+" released samples up to "+e+" (released size: "+t+", remaining: "+this.samplesDataSize+")"),F.lastValidSample=e}start(){this.sampleProcessingStarted=!0,this.processSamples(!1)}stop(){this.sampleProcessingStarted=!1}flush(){R.info("ISOFile","Flushing remaining samples"),this.updateSampleLists(),this.processSamples(!0),this.stream.cleanBuffers(),this.stream.logBufferLevel(!0)}seekTrack(U,e,t){let F=0,Q=0,n;if(t.samples.length===0)return R.info("ISOFile","No sample in track, cannot seek! Using time "+R.getDurationString(0,1)+" and offset: 0"),{offset:0,time:0};for(let l=0;l<t.samples.length;l++){const a=t.samples[l];if(l===0)Q=0,n=a.timescale;else if(a.cts>U*a.timescale){Q=l-1;break}e&&a.is_sync&&(F=l)}for(e&&(Q=F),U=t.samples[Q].cts,t.nextSample=Q;t.samples[Q].alreadyRead===t.samples[Q].size&&t.samples[Q+1];)Q++;const s=t.samples[Q].offset+t.samples[Q].alreadyRead;return R.info("ISOFile","Seeking to "+(e?"RAP":"")+" sample #"+t.nextSample+" on track "+t.tkhd.track_id+", time "+R.getDurationString(U,n)+" and offset: "+s),{offset:s,time:U/n}}getTrackDuration(U){if(!U.samples)return 1/0;const e=U.samples[U.samples.length-1];return(e.cts+e.duration)/e.timescale}seek(U,e){const t=this.moov;let F={offset:1/0,time:1/0};if(this.moov){for(let Q=0;Q<t.traks.length;Q++){const n=t.traks[Q];if(U>this.getTrackDuration(n))continue;const s=this.seekTrack(U,e,n);s.offset<F.offset&&(F.offset=s.offset),s.time<F.time&&(F.time=s.time)}return R.info("ISOFile","Seeking at time "+R.getDurationString(F.time,1)+" needs a buffer with a fileStart position of "+F.offset),F.offset===1/0?F={offset:this.nextParsePosition,time:0}:F.offset=this.stream.getEndFilePositionAfter(F.offset),R.info("ISOFile","Adjusted seek position (after checking data already in buffer): "+F.offset),F}else throw new Error("Cannot seek: moov not received!")}equal(U){let e=0;for(;e<this.boxes.length&&e<U.boxes.length;){const t=this.boxes[e],F=U.boxes[e];if(!Us(t,F))return!1;e++}return!0}write(U){for(let e=0;e<this.boxes.length;e++)this.boxes[e].write(U)}createFragment(U,e,t,F){const Q=[];for(let B=e;B<=t;B++){const r=this.getTrackById(U),h=this.getSample(r,B);if(!h){this.setNextSeekPositionFromSample(r.samples[B]);return}Q.push(h)}const n=F||new _,s=this.createMoof(Q);s.write(n),s.trafs[0].truns[0].data_offset=s.size+8,R.debug("MP4Box","Adjusting data_offset with new value "+s.trafs[0].truns[0].data_offset),n.adjustUint32(s.trafs[0].truns[0].data_offset_position,s.trafs[0].truns[0].data_offset);const l=new Yi;l.stream=new zi;let a=0;for(const B of Q)if(B.data){const r=K.fromArrayBuffer(B.data.buffer,a);l.stream.insertBuffer(r),a+=B.data.byteLength}return l.write(n),n}static writeInitializationSegment(U,e,t){var n;R.debug("ISOFile","Generating initialization segment");const F=new _;U.write(F);const Q=e.addBox(new Vn);if(t){const s=Q.addBox(new Vs);s.fragment_duration=t}for(let s=0;s<e.traks.length;s++){const l=Q.addBox(new Jn);l.track_id=e.traks[s].tkhd.track_id,l.default_sample_description_index=1,l.default_sample_duration=((n=e.traks[s].samples[0])==null?void 0:n.duration)??0,l.default_sample_size=0,l.default_sample_flags=65536}return e.write(F),F.buffer}save(U){const e=new _;return e.isofile=this,this.write(e),e.save(U)}getBuffer(){const U=new _;return U.isofile=this,this.write(U),U}initializeSegmentation(){var e,t;this.onSegment||R.warn("MP4Box","No segmentation callback set!"),this.isFragmentationInitialized||(this.isFragmentationInitialized=!0,this.resetTables());const U=new hn;U.addBox(this.moov.mvhd);for(let F=0;F<this.fragmentedTracks.length;F++){const Q=this.getTrackById(this.fragmentedTracks[F].id);if(!Q){R.warn("ISOFile",`Track with id ${this.fragmentedTracks[F].id} not found, skipping fragmentation initialization`);continue}U.addBox(Q)}return{tracks:U.traks.map((F,Q)=>({id:F.tkhd.track_id,user:this.fragmentedTracks[Q].user})),buffer:j.writeInitializationSegment(this.ftyp,U,(t=(e=this.moov)==null?void 0:e.mvex)==null?void 0:t.mehd.fragment_duration)}}resetTables(){this.initial_duration=this.moov.mvhd.duration,this.moov.mvhd.duration=0;for(let U=0;U<this.moov.traks.length;U++){const e=this.moov.traks[U];e.tkhd.duration=0,e.mdia.mdhd.duration=0;const t=e.mdia.minf.stbl.stco||e.mdia.minf.stbl.co64;t.chunk_offsets=[];const F=e.mdia.minf.stbl.stsc;F.first_chunk=[],F.samples_per_chunk=[],F.sample_description_index=[];const Q=e.mdia.minf.stbl.stsz||e.mdia.minf.stbl.stz2;Q.sample_sizes=[];const n=e.mdia.minf.stbl.stts;n.sample_counts=[],n.sample_deltas=[];const s=e.mdia.minf.stbl.ctts;s&&(s.sample_counts=[],s.sample_offsets=[]);const l=e.mdia.minf.stbl.stss,a=e.mdia.minf.stbl.boxes.indexOf(l);a!==-1&&(e.mdia.minf.stbl.boxes[a]=void 0)}}static initSampleGroups(U,e,t,F,Q){e&&(e.sample_groups_info=[]),U.sample_groups_info||(U.sample_groups_info=[]);for(let n=0;n<t.length;n++){const s=t[n].grouping_type+"/"+t[n].grouping_type_parameter,l=new dn(t[n].grouping_type,t[n].grouping_type_parameter,t[n]);e&&(e.sample_groups_info[s]=l),U.sample_groups_info[s]||(U.sample_groups_info[s]=l);for(let a=0;a<F.length;a++)F[a].grouping_type===t[n].grouping_type&&(l.description=F[a],l.description.used=!0);if(Q)for(let a=0;a<Q.length;a++)Q[a].grouping_type===t[n].grouping_type&&(l.fragment_description=Q[a],l.fragment_description.used=!0,l.is_fragment=!0)}if(e){if(Q){for(let n=0;n<Q.length;n++)if(!Q[n].used&&Q[n].version>=2){const s=Q[n].grouping_type+"/0",l=new dn(Q[n].grouping_type,0);l.is_fragment=!0,e.sample_groups_info[s]||(e.sample_groups_info[s]=l)}}}else for(let n=0;n<F.length;n++)if(!F[n].used&&F[n].version>=2){const s=F[n].grouping_type+"/0",l=new dn(F[n].grouping_type,0);U.sample_groups_info[s]||(U.sample_groups_info[s]=l)}}static setSampleGroupProperties(U,e,t,F){e.sample_groups=[];for(const Q in F)if(e.sample_groups[Q]={grouping_type:F[Q].grouping_type,grouping_type_parameter:F[Q].grouping_type_parameter},t>=F[Q].last_sample_in_run&&(F[Q].last_sample_in_run<0&&(F[Q].last_sample_in_run=0),F[Q].entry_index++,F[Q].entry_index<=F[Q].sbgp.entries.length-1&&(F[Q].last_sample_in_run+=F[Q].sbgp.entries[F[Q].entry_index].sample_count)),F[Q].entry_index<=F[Q].sbgp.entries.length-1?e.sample_groups[Q].group_description_index=F[Q].sbgp.entries[F[Q].entry_index].group_description_index:e.sample_groups[Q].group_description_index=-1,e.sample_groups[Q].group_description_index!==0){let n;if(F[Q].fragment_description?n=F[Q].fragment_description:n=F[Q].description,e.sample_groups[Q].group_description_index>0){let s;e.sample_groups[Q].group_description_index>65535?s=(e.sample_groups[Q].group_description_index>>16)-1:s=e.sample_groups[Q].group_description_index-1,n&&s>=0&&(e.sample_groups[Q].description=n.entries[s])}else n&&n.version>=2&&n.default_group_description_index>0&&(e.sample_groups[Q].description=n.entries[n.default_group_description_index-1])}}static process_sdtp(U,e,t){e&&(U?(e.is_leading=U.is_leading[t],e.depends_on=U.sample_depends_on[t],e.is_depended_on=U.sample_is_depended_on[t],e.has_redundancy=U.sample_has_redundancy[t]):(e.is_leading=0,e.depends_on=0,e.is_depended_on=0,e.has_redundancy=0))}buildSampleLists(){for(let U=0;U<this.moov.traks.length;U++)this.buildTrakSampleLists(this.moov.traks[U])}buildTrakSampleLists(U){let e,t,F,Q,n,s;U.samples=[],U.samples_duration=0,U.samples_size=0;const l=U.mdia.minf.stbl.stco||U.mdia.minf.stbl.co64,a=U.mdia.minf.stbl.stsc,B=U.mdia.minf.stbl.stsz||U.mdia.minf.stbl.stz2,r=U.mdia.minf.stbl.stts,h=U.mdia.minf.stbl.ctts,V=U.mdia.minf.stbl.stss,S=U.mdia.minf.stbl.stsd,c=U.mdia.minf.stbl.subs,W=U.mdia.minf.stbl.stdp,N=U.mdia.minf.stbl.sbgps,k=U.mdia.minf.stbl.sgpds;let f=-1,x=-1,m=-1,p=-1,w=0,C=0,T=0;if(j.initSampleGroups(U,void 0,N,k),!(typeof B>"u")){for(e=0;e<B.sample_sizes.length;e++){const E={number:e,track_id:U.tkhd.track_id,timescale:U.mdia.mdhd.timescale,alreadyRead:0,size:B.sample_sizes[e]};U.samples[e]=E,U.samples_size+=E.size,e===0?(F=1,t=0,E.chunk_index=F,E.chunk_run_index=t,s=a.samples_per_chunk[t],n=0,t+1<a.first_chunk.length?Q=a.first_chunk[t+1]-1:Q=1/0):e<s?(E.chunk_index=F,E.chunk_run_index=t):(F++,E.chunk_index=F,n=0,F<=Q||(t++,t+1<a.first_chunk.length?Q=a.first_chunk[t+1]-1:Q=1/0),E.chunk_run_index=t,s+=a.samples_per_chunk[t]),E.description_index=a.sample_description_index[E.chunk_run_index]-1,E.description=S.entries[E.description_index],E.offset=l.chunk_offsets[E.chunk_index-1]+n,n+=E.size,e>f&&(x++,f<0&&(f=0),f+=r.sample_counts[x]),e>0?(U.samples[e-1].duration=r.sample_deltas[x],U.samples_duration+=U.samples[e-1].duration,E.dts=U.samples[e-1].dts+U.samples[e-1].duration):E.dts=0,h?(e>=m&&(p++,m<0&&(m=0),m+=h.sample_counts[p]),E.cts=U.samples[e].dts+h.sample_offsets[p]):E.cts=E.dts,V?(e===V.sample_numbers[w]-1?(E.is_sync=!0,w++):(E.is_sync=!1,E.degradation_priority=0),c&&c.entries[C].sample_delta+T===e+1&&(E.subsamples=c.entries[C].subsamples,T+=c.entries[C].sample_delta,C++)):E.is_sync=!0,j.process_sdtp(U.mdia.minf.stbl.sdtp,E,E.number),W?E.degradation_priority=W.priority[e]:E.degradation_priority=0,c&&c.entries[C].sample_delta+T===e&&(E.subsamples=c.entries[C].subsamples,T+=c.entries[C].sample_delta),(N.length>0||k.length>0)&&j.setSampleGroupProperties(U,E,e,U.sample_groups_info)}e>0&&(U.samples[e-1].duration=Math.max(U.mdia.mdhd.duration-U.samples[e-1].dts,0),U.samples_duration+=U.samples[e-1].duration)}}updateSampleLists(){let U,e,t,F,Q;if(this.moov!==void 0)for(;this.lastMoofIndex<this.moofs.length;){const n=this.moofs[this.lastMoofIndex];if(this.lastMoofIndex++,n.type==="moof"){const s=n;for(let l=0;l<s.trafs.length;l++){const a=s.trafs[l],B=this.getTrackById(a.tfhd.track_id),r=this.getTrexById(a.tfhd.track_id);a.tfhd.flags&yi?U=a.tfhd.default_sample_description_index:U=r?r.default_sample_description_index:1,a.tfhd.flags&wi?e=a.tfhd.default_sample_duration:e=r?r.default_sample_duration:0,a.tfhd.flags&Ii?t=a.tfhd.default_sample_size:t=r?r.default_sample_size:0,a.tfhd.flags&vi?F=a.tfhd.default_sample_flags:F=r?r.default_sample_flags:0,a.sample_number=0,a.sbgps.length>0&&j.initSampleGroups(B,a,a.sbgps,B.mdia.minf.stbl.sgpds,a.sgpds);for(let h=0;h<a.truns.length;h++){const V=a.truns[h];for(let S=0;S<V.sample_count;S++){const c=U-1;let W=F;V.flags&cU?W=V.sample_flags[S]:S===0&&V.flags&_i&&(W=V.first_sample_flags);let N=t;V.flags&JU&&(N=V.sample_size[S]),B.samples_size+=N;let k=e;V.flags&VU&&(k=V.sample_duration[S]),B.samples_duration+=k;let f;B.first_traf_merged||S>0?f=B.samples[B.samples.length-1].dts+B.samples[B.samples.length-1].duration:(a.tfdt?f=a.tfdt.baseMediaDecodeTime:f=0,B.first_traf_merged=!0);let x=f;V.flags&SU&&(x=f+V.sample_composition_time_offset[S]);const m=!!(a.tfhd.flags&Mi),p=!!(a.tfhd.flags&_n),w=!!(V.flags&hU);let C=0;m?C=a.tfhd.base_data_offset:p||h===0?C=s.start:C=Q;let T;h===0&&S===0?w?T=C+V.data_offset:T=C:T=Q,Q=T+N;const E=a.sample_number;a.sample_number++;const G={cts:x,description_index:c,description:B.mdia.minf.stbl.stsd.entries[c],dts:f,duration:k,moof_number:this.lastMoofIndex,number_in_traf:E,number:B.samples.length,offset:T,size:N,timescale:B.mdia.mdhd.timescale,track_id:B.tkhd.track_id,is_sync:!(W>>16&1),is_leading:W>>26&3,depends_on:W>>24&3,is_depended_on:W>>22&3,has_redundancy:W>>20&3,degradation_priority:W&65535};a.first_sample_index=B.samples.length,B.samples.push(G),(a.sbgps.length>0||a.sgpds.length>0||B.mdia.minf.stbl.sbgps.length>0||B.mdia.minf.stbl.sgpds.length>0)&&j.setSampleGroupProperties(B,G,G.number_in_traf,a.sample_groups_info)}}if(a.subs){B.has_fragment_subsamples=!0;let h=a.first_sample_index;for(let V=0;V<a.subs.entries.length;V++){h+=a.subs.entries[V].sample_delta;const S=B.samples[h-1];S.subsamples=a.subs.entries[V].subsamples}}}}}}getSample(U,e){const t=U.samples[e];if(this.moov){if(!t.data)t.data=new Uint8Array(t.size),t.alreadyRead=0,this.samplesDataSize+=t.size,R.debug("ISOFile","Allocating sample #"+e+" on track #"+U.tkhd.track_id+" of size "+t.size+" (total: "+this.samplesDataSize+")");else if(t.alreadyRead===t.size)return t;for(;;){let F=this.stream,Q=F.findPosition(!0,t.offset+t.alreadyRead,!1),n,s;if(Q>-1)n=F.buffers[Q],s=n.fileStart;else for(const l of this.mdats){if(!l.stream){R.debug("ISOFile","mdat stream not yet fully read for #"+this.mdats.indexOf(l)+" mdat");continue}if(Q=l.stream.findPosition(!0,t.offset+t.alreadyRead-l.start-l.hdr_size,!1),Q>-1){F=l.stream,n=l.stream.buffers[Q],s=l.start+l.hdr_size+n.fileStart;break}}if(n){const l=n.byteLength-(t.offset+t.alreadyRead-s);if(t.size-t.alreadyRead<=l)return R.debug("ISOFile","Getting sample #"+e+" data (alreadyRead: "+t.alreadyRead+" offset: "+(t.offset+t.alreadyRead-s)+" read size: "+(t.size-t.alreadyRead)+" full size: "+t.size+")"),_.memcpy(t.data.buffer,t.alreadyRead,n,t.offset+t.alreadyRead-s,t.size-t.alreadyRead),n.usedBytes+=t.size-t.alreadyRead,F.logBufferLevel(),t.alreadyRead=t.size,t;if(l===0)return;R.debug("ISOFile","Getting sample #"+e+" partial data (alreadyRead: "+t.alreadyRead+" offset: "+(t.offset+t.alreadyRead-s)+" read size: "+l+" full size: "+t.size+")"),_.memcpy(t.data.buffer,t.alreadyRead,n,t.offset+t.alreadyRead-s,l),t.alreadyRead+=l,n.usedBytes+=l,F.logBufferLevel()}else return}}}releaseSample(U,e){const t=U.samples[e];return t.data?(this.samplesDataSize-=t.size,t.data=void 0,t.alreadyRead=0,t.size):0}getAllocatedSampleDataSize(){return this.samplesDataSize}getCodecs(){let U="";for(let e=0;e<this.moov.traks.length;e++){const t=this.moov.traks[e];e>0&&(U+=","),U+=t.mdia.minf.stbl.stsd.entries[0].getCodec()}return U}getTrexById(U){if(!(!this.moov||!this.moov.mvex))for(let e=0;e<this.moov.mvex.trexs.length;e++){const t=this.moov.mvex.trexs[e];if(t.track_id===U)return t}}getTrackById(U){if(this.moov)for(let e=0;e<this.moov.traks.length;e++){const t=this.moov.traks[e];if(t.tkhd.track_id===U)return t}}flattenItemInfo(){const U=this.items,e=this.entity_groups,t=this.meta;if(!(!t||!t.hdlr||!t.iinf)){for(let F=0;F<t.iinf.item_infos.length;F++){const Q=t.iinf.item_infos[F].item_ID;U[Q]={id:Q,name:t.iinf.item_infos[F].item_name,ref_to:[],content_type:t.iinf.item_infos[F].content_type,content_encoding:t.iinf.item_infos[F].content_encoding,item_uri_type:t.iinf.item_infos[F].item_uri_type,type:t.iinf.item_infos[F].item_type?t.iinf.item_infos[F].item_type:"mime",protection:t.iinf.item_infos[F].item_protection_index>0?t.ipro.protections[t.iinf.item_infos[F].item_protection_index-1]:void 0}}if(t.grpl)for(let F=0;F<t.grpl.boxes.length;F++){const Q=t.grpl.boxes[F];e[Q.group_id]={id:Q.group_id,entity_ids:Q.entity_ids,type:Q.type}}if(t.iloc)for(let F=0;F<t.iloc.items.length;F++){const Q=t.iloc.items[F],n=U[Q.item_ID];Q.data_reference_index!==0&&(R.warn("Item storage with reference to other files: not supported"),n.source=t.dinf.boxes[Q.data_reference_index-1]),n.extents=[],n.size=0;for(let s=0;s<Q.extents.length;s++)n.extents[s]={offset:Q.extents[s].extent_offset+Q.base_offset,length:Q.extents[s].extent_length,alreadyRead:0},Q.construction_method===1&&(n.extents[s].offset+=t.idat.start+t.idat.hdr_size),n.size+=n.extents[s].length}if(t.pitm&&(U[t.pitm.item_id].primary=!0),t.iref)for(let F=0;F<t.iref.references.length;F++){const Q=t.iref.references[F];for(let n=0;n<Q.references.length;n++)U[Q.from_item_ID].ref_to.push({type:Q.type,id:Q.references[n]})}if(t.iprp)for(let F=0;F<t.iprp.ipmas.length;F++){const Q=t.iprp.ipmas[F];for(let n=0;n<Q.associations.length;n++){const s=Q.associations[n],l=U[s.id]??e[s.id];if(l){l.properties===void 0&&(l.properties={boxes:[]});for(let a=0;a<s.props.length;a++){const B=s.props[a];if(B.property_index>0&&B.property_index-1<t.iprp.ipco.boxes.length){const r=t.iprp.ipco.boxes[B.property_index-1];l.properties[r.type]=r,l.properties.boxes.push(r)}}}}}}}getItem(U){if(!this.meta)return;const e=this.items[U];if(!e.data&&e.size)e.data=new Uint8Array(e.size),e.alreadyRead=0,this.itemsDataSize+=e.size,R.debug("ISOFile","Allocating item #"+U+" of size "+e.size+" (total: "+this.itemsDataSize+")");else if(e.alreadyRead===e.size)return e;for(let t=0;t<e.extents.length;t++){const F=e.extents[t];if(F.alreadyRead!==F.length){const Q=this.stream.findPosition(!0,F.offset+F.alreadyRead,!1);if(Q>-1){const n=this.stream.buffers[Q],s=n.byteLength-(F.offset+F.alreadyRead-n.fileStart);if(F.length-F.alreadyRead<=s)R.debug("ISOFile","Getting item #"+U+" extent #"+t+" data (alreadyRead: "+F.alreadyRead+" offset: "+(F.offset+F.alreadyRead-n.fileStart)+" read size: "+(F.length-F.alreadyRead)+" full extent size: "+F.length+" full item size: "+e.size+")"),_.memcpy(e.data.buffer,e.alreadyRead,n,F.offset+F.alreadyRead-n.fileStart,F.length-F.alreadyRead),(!this.parsingMdat||this.discardMdatData)&&(n.usedBytes+=F.length-F.alreadyRead),this.stream.logBufferLevel(),e.alreadyRead+=F.length-F.alreadyRead,F.alreadyRead=F.length;else{R.debug("ISOFile","Getting item #"+U+" extent #"+t+" partial data (alreadyRead: "+F.alreadyRead+" offset: "+(F.offset+F.alreadyRead-n.fileStart)+" read size: "+s+" full extent size: "+F.length+" full item size: "+e.size+")"),_.memcpy(e.data.buffer,e.alreadyRead,n,F.offset+F.alreadyRead-n.fileStart,s),F.alreadyRead+=s,e.alreadyRead+=s,(!this.parsingMdat||this.discardMdatData)&&(n.usedBytes+=s),this.stream.logBufferLevel();return}}else return}}if(e.alreadyRead===e.size)return e}releaseItem(U){const e=this.items[U];if(e.data){this.itemsDataSize-=e.size,e.data=void 0,e.alreadyRead=0;for(let t=0;t<e.extents.length;t++){const F=e.extents[t];F.alreadyRead=0}return e.size}else return 0}processItems(U){for(const e in this.items){const t=this.items[e];this.getItem(t.id),U&&!t.sent&&(U(t),t.sent=!0,t.data=void 0)}}hasItem(U){for(const e in this.items){const t=this.items[e];if(t.name===U)return t.id}return-1}getMetaHandler(){if(this.meta)return this.meta.hdlr.handler}getPrimaryItem(){if(this.meta&&this.meta.pitm)return this.getItem(this.meta.pitm.item_id)}itemToFragmentedTrackFile({itemId:U}={}){let e;if(U?e=this.getItem(U):e=this.getPrimaryItem(),!e)return;const t=new j;t.discardMdatData=!1;const F={type:e.type,description_boxes:e.properties.boxes};e.properties.ispe&&(F.width=e.properties.ispe.image_width,F.height=e.properties.ispe.image_height);const Q=t.addTrack(F);if(Q)return t.addSample(Q,e.data),t}processIncompleteBox(U){if(U.type==="mdat"){const e=new Yi(U.size);return this.parsingMdat=e,this.boxes.push(e),this.mdats.push(e),e.start=U.start,e.hdr_size=U.hdr_size,e.original_size=U.original_size,this.stream.addUsedBytes(e.hdr_size),this.lastBoxStartPosition=e.start+e.size,this.stream.seek(e.start+e.size,!1,this.discardMdatData)?(this.transferMdatData(),this.parsingMdat=void 0,!0):(this.moovStartFound?this.nextParsePosition=this.stream.findEndContiguousBuf():this.nextParsePosition=e.start+e.size,!1)}else return U.type==="moov"&&(this.moovStartFound=!0,this.mdats.length===0&&(this.isProgressive=!0)),(this.stream.mergeNextBuffer?this.stream.mergeNextBuffer():!1)?(this.nextParsePosition=this.stream.getEndPosition(),!0):(U.type?this.moovStartFound?this.nextParsePosition=this.stream.getEndPosition():this.nextParsePosition=this.stream.getPosition()+U.size:this.nextParsePosition=this.stream.getEndPosition(),!1)}hasIncompleteMdat(){return this.parsingMdat!==void 0}transferMdatData(U){const e=U??this.parsingMdat;if(this.discardMdatData){R.debug("ISOFile","Discarding 'mdat' data, not transferring it to the mdat box stream");return}if(!e){R.warn("ISOFile","Cannot transfer 'mdat' data, no mdat box is being parsed");return}const t=this.stream.findPosition(!0,e.start+e.hdr_size,!1),F=this.stream.findPosition(!0,e.start+e.size,!1);if(t===-1||F===-1){R.warn("ISOFile","Cannot transfer 'mdat' data, start or end buffer not found");return}e.stream=new zi;for(let Q=t;Q<=F;Q++){const n=this.stream.buffers[Q],s=Q===t?e.start+e.hdr_size-n.fileStart:0,l=Q===F?e.start+e.size-n.fileStart:n.byteLength;if(l>s){R.debug("ISOFile","Transferring 'mdat' data from buffer #"+Q+" ("+s+" to "+l+")");const a=l-s,B=new K(a),r=e.stream.getAbsoluteEndPosition();_.memcpy(B,0,n,s,a),B.fileStart=r,e.stream.insertBuffer(B),n.usedBytes+=a}}}processIncompleteMdat(){const U=this.parsingMdat;return this.stream.seek(U.start+U.size,!1,this.discardMdatData)?(R.debug("ISOFile","Found 'mdat' end in buffered data"),this.transferMdatData(),this.parsingMdat=void 0,!0):(this.nextParsePosition=this.stream.findEndContiguousBuf(),!1)}restoreParsePosition(){return this.stream.seek(this.lastBoxStartPosition,!0,this.discardMdatData)}saveParsePosition(){this.lastBoxStartPosition=this.stream.getPosition()}updateUsedBytes(U,e){this.stream.addUsedBytes&&(U.type==="mdat"?(this.stream.addUsedBytes(U.hdr_size),this.discardMdatData&&this.stream.addUsedBytes(U.size-U.hdr_size)):this.stream.addUsedBytes(U.size))}addBox(U){return J.prototype.addBox.call(this,U)}init(U={}){const e=this.addBox(new rs);e.major_brand=U.brands&&U.brands[0]||"iso4",e.minor_version=0,e.compatible_brands=U.brands||["iso4"];const t=this.addBox(new hn);t.addBox(new Vn);const F=t.addBox(new cs);return F.timescale=U.timescale||600,F.rate=U.rate||65536,F.creation_time=0,F.modification_time=0,F.duration=U.duration||0,F.volume=U.width?0:256,F.matrix=[65536,0,0,0,65536,0,0,0,1073741824],F.next_track_id=1,this}addTrack(U={}){this.moov||this.init(U);const e=U||{};e.width=e.width||320,e.height=e.height||320,e.id=e.id||this.moov.mvhd.next_track_id,e.type=e.type||"avc1";const t=this.moov.addBox(new Fs);this.moov.mvhd.next_track_id=e.id+1;const F=t.addBox(new gs);F.flags=sl|ll|al,F.creation_time=0,F.modification_time=0,F.track_id=e.id,F.duration=e.duration||0,F.layer=e.layer||0,F.alternate_group=0,F.volume=1,F.matrix=[65536,0,0,0,65536,0,0,0,1073741824],F.width=e.width<<16,F.height=e.height<<16;const Q=t.addBox(new Qs),n=Q.addBox(new hs);n.creation_time=0,n.modification_time=0,n.timescale=e.timescale||1,n.duration=e.media_duration||0,n.language=e.language||"und";const s=Q.addBox(new Rs);s.handler=e.hdlr||"vide",s.name=e.name||"Track created with MP4Box.js";const l=Q.addBox(new ds);l.extended_language=e.language||"fr-FR";const a=Q.addBox(new is),B=I.sampleEntry[e.type];if(!B)return;const r=new B;if(r.data_reference_index=1,r instanceof D){const p=r,w=a.addBox(new bs);w.graphicsmode=0,w.opcolor=[0,0,0],p.width=e.width,p.height=e.height,p.horizresolution=72<<16,p.vertresolution=72<<16,p.frame_count=1,p.compressorname=e.type+" Compressor",p.depth=24,e.avcDecoderConfigRecord?p.addBox(new es(e.avcDecoderConfigRecord.byteLength)).parse(new _(e.avcDecoderConfigRecord)):e.hevcDecoderConfigRecord&&p.addBox(new os(e.hevcDecoderConfigRecord.byteLength)).parse(new _(e.hevcDecoderConfigRecord))}else if(r instanceof v){const p=r,w=a.addBox(new Es);w.balance=e.balance||0,p.channel_count=e.channel_count||2,p.samplesize=e.samplesize||16,p.samplerate=e.samplerate||65536}else r instanceof Xn?a.addBox(new ts):r instanceof eU?(a.addBox(new Zs),r instanceof ps&&(r.namespace=e.namespace||"nonamespace",r.schema_location=e.schema_location||"",r.auxiliary_mime_types=e.auxiliary_mime_types||"")):r instanceof sU?a.addBox(new Gi):r instanceof Zn?a.addBox(new Gi):a.addBox(new Gi);e.description&&r.addBox.call(r,e.description),e.description_boxes&&e.description_boxes.forEach(function(p){r.addBox.call(r,p)});const V=a.addBox(new ns).addBox(new Bs),S=new xs;S.flags=1,V.addEntry(S);const c=a.addBox(new ss);c.addBox(new us).addEntry(r);const N=c.addBox(new ms);N.sample_counts=[],N.sample_deltas=[];const k=c.addBox(new ks);k.first_chunk=[],k.samples_per_chunk=[],k.sample_description_index=[];const f=c.addBox(new Ns);f.chunk_offsets=[];const x=c.addBox(new fs);x.sample_sizes=[];const m=this.moov.mvex.addBox(new Jn);return m.track_id=e.id,m.default_sample_description_index=e.default_sample_description_index||1,m.default_sample_duration=e.default_sample_duration||0,m.default_sample_size=e.default_sample_size||0,m.default_sample_flags=e.default_sample_flags||0,this.buildTrakSampleLists(t),e.id}addSample(U,e,{sample_description_index:t,duration:F=1,cts:Q=0,dts:n=0,is_sync:s=!1,is_leading:l=0,depends_on:a=0,is_depended_on:B=0,has_redundancy:r=0,degradation_priority:h=0,subsamples:V,offset:S=0}={}){const c=this.getTrackById(U);if(c===void 0)return;const W=t?t-1:0,N={number:c.samples.length,track_id:c.tkhd.track_id,timescale:c.mdia.mdhd.timescale,description_index:W,description:c.mdia.minf.stbl.stsd.entries[W],data:e,size:e.byteLength,alreadyRead:e.byteLength,duration:F,cts:Q,dts:n,is_sync:s,is_leading:l,depends_on:a,is_depended_on:B,has_redundancy:r,degradation_priority:h,offset:S,subsamples:V};c.samples.push(N),c.samples_size+=N.size,c.samples_duration+=N.duration,c.first_dts===void 0&&(c.first_dts=n),this.processSamples();const k=this.addBox(this.createMoof([N]));k.computeSize(),k.trafs[0].truns[0].data_offset=k.size+8;const f=this.addBox(new Yi);return f.data=new Uint8Array(e),N}createMoof(U){if(U.length===0)return;if(U.some(B=>B.track_id!==U[0].track_id))throw new Error("Cannot create moof for samples from different tracks: "+U.map(B=>B.track_id).join(", "));const e=U[0].track_id,t=this.getTrackById(e);if(!t)throw new Error("Cannot create moof for non-existing track: "+e);const F=new ls,Q=F.addBox(new Js);Q.sequence_number=++this.nextMoofNumber;const n=F.addBox(new as),s=n.addBox(new Ts);s.track_id=e,s.flags=_n;const l=n.addBox(new Cs);l.baseMediaDecodeTime=U[0].dts-(t.first_dts||0);const a=n.addBox(new Ds);a.flags=hU|VU|JU|cU|SU,a.data_offset=0,a.first_sample_flags=0,a.sample_count=U.length;for(const B of U){let r=0;B.is_sync?r=1<<25:r=65536,a.sample_duration.push(B.duration),a.sample_size.push(B.size),a.sample_flags.push(r),a.sample_composition_time_offset.push(B.cts-B.dts)}return F}print(U){U.indent="";for(let e=0;e<this.boxes.length;e++)this.boxes[e]&&this.boxes[e].print(U)}};function dB(i=!1,U){return new BB(U,!i)}var Ms={};Pn(Ms,{Descriptor:()=>tU,ES_Descriptor:()=>vs,MPEG4DescriptorParser:()=>VB});var ys=3,ji=4,kn=5,ws=6,tU=class Is{constructor(U,e){this.tag=U,this.size=e,this.descs=[]}parse(U){this.data=U.readUint8Array(this.size)}findDescriptor(U){for(let e=0;e<this.descs.length;e++)if(this.descs[e].tag===U)return this.descs[e]}parseOneDescriptor(U){let e=0;const t=U.readUint8();let F=U.readUint8();for(;F&128;)e=(e<<7)+(F&127),F=U.readUint8();e=(e<<7)+(F&127),R.debug("Descriptor","Found "+(Xi[t]||"Descriptor "+t)+", size "+e+" at position "+U.getPosition());const Q=Xi[t]?new hB[Xi[t]](e):new Is(e);return Q.parse(U),Q}parseRemainingDescriptors(U){var t;const e=U.getPosition();for(;U.getPosition()<e+this.size;){const F=(t=this.parseOneDescriptor)==null?void 0:t.call(this,U);this.descs.push(F)}}},vs=class extends tU{constructor(i){super(ys,i)}parse(i){if(this.ES_ID=i.readUint16(),this.flags=i.readUint8(),this.size-=3,this.flags&128?(this.dependsOn_ES_ID=i.readUint16(),this.size-=2):this.dependsOn_ES_ID=0,this.flags&64){const U=i.readUint8();this.URL=i.readString(U),this.size-=U+1}else this.URL="";this.flags&32?(this.OCR_ES_ID=i.readUint16(),this.size-=2):this.OCR_ES_ID=0,this.parseRemainingDescriptors(i)}getOTI(){const i=this.findDescriptor(ji);return i?i.oti:0}getAudioConfig(){const i=this.findDescriptor(ji);if(!i)return;const U=i.findDescriptor(kn);if(U&&U.data){let e=(U.data[0]&248)>>3;return e===31&&U.data.length>=2&&(e=32+((U.data[0]&7)<<3)+((U.data[1]&224)>>5)),e}}},rB=class extends tU{constructor(i){super(ji,i)}parse(i){this.oti=i.readUint8(),this.streamType=i.readUint8(),this.upStream=(this.streamType>>1&1)!==0,this.streamType=this.streamType>>>2,this.bufferSize=i.readUint24(),this.maxBitrate=i.readUint32(),this.avgBitrate=i.readUint32(),this.size-=13,this.parseRemainingDescriptors(i)}},RB=class extends tU{constructor(i){super(kn,i)}},oB=class extends tU{constructor(i){super(ws,i)}},hB={Descriptor:tU,ES_Descriptor:vs,DecoderConfigDescriptor:rB,DecoderSpecificInfo:RB,SLConfigDescriptor:oB},Xi={[ys]:"ES_Descriptor",[ji]:"DecoderConfigDescriptor",[kn]:"DecoderSpecificInfo",[ws]:"SLConfigDescriptor"},VB=class{constructor(){this.parseOneDescriptor=tU.prototype.parseOneDescriptor}getDescriptorName(i){return Xi[i]}},_s={};Pn(_s,{CoLLBox:()=>CB,ItemContentIDPropertyBox:()=>QR,OpusSampleEntry:()=>za,SmDmBox:()=>er,a1lxBox:()=>JB,a1opBox:()=>cB,ac_3SampleEntry:()=>va,ac_4SampleEntry:()=>_a,aebrBox:()=>OB,afbrBox:()=>AB,albcBox:()=>jB,alstSampleGroupEntry:()=>xr,altrBox:()=>KB,auxCBox:()=>SB,av01SampleEntry:()=>oa,av1CBox:()=>ia,avc1SampleEntry:()=>Ba,avc2SampleEntry:()=>da,avc3SampleEntry:()=>ra,avc4SampleEntry:()=>Ra,avcCBox:()=>es,avllSampleGroupEntry:()=>br,avs3SampleEntry:()=>ga,avssSampleGroupEntry:()=>Mr,brstBox:()=>PB,btrtBox:()=>WB,bxmlBox:()=>Cl,ccstBox:()=>pB,cdefBox:()=>EB,clapBox:()=>NB,clefBox:()=>vd,clliBox:()=>ZB,cmexBox:()=>kB,cminBox:()=>uB,cmpdBox:()=>fB,co64Box:()=>mB,colrBox:()=>aa,coviBox:()=>DB,cprtBox:()=>xB,cschBox:()=>bB,cslgBox:()=>MB,cttsBox:()=>yB,dOpsBox:()=>YB,dac3Box:()=>wB,dataBox:()=>RU,dav1SampleEntry:()=>ha,dec3Box:()=>IB,dfLaBox:()=>vB,dimmBox:()=>_B,dinfBox:()=>ns,dmax:()=>HB,dmedBox:()=>zB,dobrBox:()=>qB,drefBox:()=>Bs,drepBox:()=>GB,dtrtSampleGroupEntry:()=>yr,dvh1SampleEntry:()=>Na,dvheSampleEntry:()=>Za,ec_3SampleEntry:()=>Ha,edtsBox:()=>gl,elngBox:()=>ds,elstBox:()=>XB,emsgBox:()=>LB,encaSampleEntry:()=>ja,encmSampleEntry:()=>UB,encsSampleEntry:()=>Pa,enctSampleEntry:()=>$a,encuSampleEntry:()=>Ka,encvSampleEntry:()=>Aa,enofBox:()=>Hd,eqivBox:()=>$B,esdsBox:()=>na,etypBox:()=>Al,fLaCSampleEntry:()=>Oa,favcBox:()=>Ud,fielBox:()=>Bd,fobrBox:()=>ed,freeBox:()=>kl,frmaBox:()=>dd,ftypBox:()=>rs,grplBox:()=>Ll,hdlrBox:()=>Rs,hev1SampleEntry:()=>ca,hev2SampleEntry:()=>Sa,hinfBox:()=>yl,hmhdBox:()=>ts,hntiBox:()=>Ml,hvc1SampleEntry:()=>Va,hvc2SampleEntry:()=>Ja,hvcCBox:()=>os,hvt1SampleEntry:()=>Wa,iaugBox:()=>td,idatBox:()=>Zl,iinfBox:()=>Pl,ilocBox:()=>ql,ilstBox:()=>zd,imirBox:()=>rd,infeBox:()=>Kl,iodsBox:()=>fl,ipcoBox:()=>Xl,ipmaBox:()=>Rd,iproBox:()=>Tl,iprpBox:()=>Gl,irefBox:()=>Ua,irotBox:()=>od,ispeBox:()=>hd,itaiBox:()=>Vd,j2kHBox:()=>Ol,j2kiSampleEntry:()=>Da,keysBox:()=>Yd,kindBox:()=>Jd,levaBox:()=>cd,lhe1SampleEntry:()=>pa,lhv1SampleEntry:()=>Ea,lhvCBox:()=>Sd,lselBox:()=>Wd,m4aeSampleEntry:()=>Ia,maxrBox:()=>pd,mdatBox:()=>Yi,mdcvBox:()=>Ed,mdhdBox:()=>hs,mdiaBox:()=>Qs,mecoBox:()=>bl,mehdBox:()=>Vs,metaBox:()=>ta,mettSampleEntry:()=>Fa,metxSampleEntry:()=>Qa,mfhdBox:()=>Js,mfraBox:()=>xl,mfroBox:()=>Nd,mha1SampleEntry:()=>Ya,mha2SampleEntry:()=>Ga,mhm1SampleEntry:()=>Xa,mhm2SampleEntry:()=>La,minfBox:()=>is,mjp2SampleEntry:()=>xa,mjpgSampleEntry:()=>ba,moofBox:()=>ls,moovBox:()=>hn,mp4aSampleEntry:()=>wa,mp4sSampleEntry:()=>qa,mp4vSampleEntry:()=>ya,mskCBox:()=>Zd,msrcTrackGroupTypeBox:()=>pr,mvexBox:()=>Vn,mvhdBox:()=>cs,mvifSampleGroupEntry:()=>wr,nmhdBox:()=>Gi,npckBox:()=>kd,numpBox:()=>ud,padbBox:()=>md,panoBox:()=>Fd,paspBox:()=>Cd,paylBox:()=>Td,paytBox:()=>gd,pdinBox:()=>Dd,piffLsmBox:()=>qr,piffPsshBox:()=>$r,piffSencBox:()=>UR,piffTencBox:()=>eR,piffTfrfBox:()=>tR,piffTfxdBox:()=>FR,pitmBox:()=>ea,pixiBox:()=>xd,pmaxBox:()=>bd,povdBox:()=>jl,prdiBox:()=>Md,prfrBox:()=>yd,prftBox:()=>wd,prgrBox:()=>ld,profBox:()=>Gd,prolSampleGroupEntry:()=>Ir,psshBox:()=>Id,pymdBox:()=>ad,rapSampleGroupEntry:()=>vr,rashSampleGroupEntry:()=>_r,resvSampleEntry:()=>eB,rinfBox:()=>_l,rollSampleGroupEntry:()=>Hr,rtp_Box:()=>Od,saioBox:()=>Ad,saizBox:()=>jd,sbgpBox:()=>nB,sbpmBox:()=>Pd,sbttSampleEntry:()=>tB,schiBox:()=>Hl,schmBox:()=>qd,scifSampleGroupEntry:()=>zr,scnmSampleGroupEntry:()=>Yr,sdp_Box:()=>$d,sdtpBox:()=>sB,seigSampleGroupEntry:()=>Gr,sencBox:()=>Ur,sgpdBox:()=>lB,sidxBox:()=>aB,sinfBox:()=>vl,skipBox:()=>ul,slidBox:()=>Qd,smhdBox:()=>Es,sratBox:()=>tr,ssixBox:()=>Fr,stblBox:()=>ss,stcoBox:()=>Ns,stdpBox:()=>Qr,sterBox:()=>id,sthdBox:()=>Zs,stppSampleEntry:()=>ps,strdBox:()=>Il,striBox:()=>ir,strkBox:()=>wl,stsaSampleGroupEntry:()=>Xr,stscBox:()=>ks,stsdBox:()=>us,stsgBox:()=>nr,stshBox:()=>sr,stssBox:()=>lr,stszBox:()=>fs,sttsBox:()=>ms,stviBox:()=>ar,stxtSampleEntry:()=>FB,stypBox:()=>Br,stz2Box:()=>dr,subsBox:()=>rr,syncSampleGroupEntry:()=>Lr,taicBox:()=>Rr,taptBox:()=>Xd,teleSampleGroupEntry:()=>Or,tencBox:()=>or,tfdtBox:()=>Cs,tfhdBox:()=>Ts,tfraBox:()=>hr,tkhdBox:()=>gs,tmaxBox:()=>Vr,tminBox:()=>Jr,totlBox:()=>cr,tpayBox:()=>Sr,tpylBox:()=>Wr,trafBox:()=>as,trakBox:()=>Fs,trefBox:()=>Er,trepBox:()=>Nr,trexBox:()=>Jn,trgrBox:()=>zl,trpyBox:()=>Zr,trunBox:()=>Ds,tsasSampleGroupEntry:()=>Ar,tsclSampleGroupEntry:()=>jr,tselBox:()=>kr,tsynBox:()=>nd,tx3gSampleEntry:()=>QB,txtcBox:()=>ur,tycoBox:()=>fr,udesBox:()=>mr,udtaBox:()=>Yl,uncCBox:()=>Cr,uncvSampleEntry:()=>Ma,urlBox:()=>xs,urnBox:()=>Tr,viprSampleGroupEntry:()=>Kr,vmhdBox:()=>bs,vp08SampleEntry:()=>Ca,vp09SampleEntry:()=>Ta,vpcCBox:()=>sa,vttCBox:()=>gr,vttcBox:()=>Dl,vvc1SampleEntry:()=>ka,vvcCBox:()=>la,vvcNSampleEntry:()=>ma,vvi1SampleEntry:()=>ua,vvnCBox:()=>Dr,vvs1SampleEntry:()=>fa,waveBox:()=>Ld,wbbrBox:()=>sd,wvttSampleEntry:()=>iB,xmlBox:()=>ml});var At,JB=(At=class extends J{constructor(){super(...arguments),this.box_name="AV1LayeredImageIndexingProperty"}parse(U){const t=((U.readUint8()&1&1)+1)*16;this.layer_size=[];for(let F=0;F<3;F++)t===16?this.layer_size[F]=U.readUint16():this.layer_size[F]=U.readUint32()}},At.fourcc="a1lx",At),jt,cB=(jt=class extends J{constructor(){super(...arguments),this.box_name="OperatingPointSelectorProperty"}parse(U){this.op_index=U.readUint8()}},jt.fourcc="a1op",jt),Kt,SB=(Kt=class extends o{constructor(){super(...arguments),this.box_name="AuxiliaryTypeProperty"}parse(U){this.parseFullHeader(U),this.aux_type=U.readCString();const e=this.size-this.hdr_size-(this.aux_type.length+1);this.aux_subtype=U.readUint8Array(e)}},Kt.fourcc="auxC",Kt),Pt,WB=(Pt=class extends J{constructor(){super(...arguments),this.box_name="BitRateBox"}parse(U){this.bufferSizeDB=U.readUint32(),this.maxBitrate=U.readUint32(),this.avgBitrate=U.readUint32()}},Pt.fourcc="btrt",Pt),qt,pB=(qt=class extends o{constructor(){super(...arguments),this.box_name="CodingConstraintsBox"}parse(U){this.parseFullHeader(U);const e=U.readUint8();this.all_ref_pics_intra=(e&128)===128,this.intra_pred_used=(e&64)===64,this.max_ref_per_pic=(e&63)>>2,U.readUint24()}},qt.fourcc="ccst",qt),$t,EB=($t=class extends J{constructor(){super(...arguments),this.box_name="ComponentDefinitionBox"}parse(U){this.channel_count=U.readUint16(),this.channel_indexes=[],this.channel_types=[],this.channel_associations=[];for(let e=0;e<this.channel_count;e++)this.channel_indexes.push(U.readUint16()),this.channel_types.push(U.readUint16()),this.channel_associations.push(U.readUint16())}},$t.fourcc="cdef",$t),UF,NB=(UF=class extends J{constructor(){super(...arguments),this.box_name="CleanApertureBox"}parse(U){this.cleanApertureWidthN=U.readUint32(),this.cleanApertureWidthD=U.readUint32(),this.cleanApertureHeightN=U.readUint32(),this.cleanApertureHeightD=U.readUint32(),this.horizOffN=U.readUint32(),this.horizOffD=U.readUint32(),this.vertOffN=U.readUint32(),this.vertOffD=U.readUint32()}},UF.fourcc="clap",UF),eF,ZB=(eF=class extends J{constructor(){super(...arguments),this.box_name="ContentLightLevelBox"}parse(U){this.max_content_light_level=U.readUint16(),this.max_pic_average_light_level=U.readUint16()}},eF.fourcc="clli",eF),tF,kB=(tF=class extends J{constructor(){super(...arguments),this.box_name="CameraExtrinsicMatrixProperty"}parse(U){this.flags&1&&(this.pos_x=U.readInt32()),this.flags&2&&(this.pos_y=U.readInt32()),this.flags&4&&(this.pos_z=U.readInt32()),this.flags&8&&(this.version===0?this.flags&16?(this.quat_x=U.readInt32(),this.quat_y=U.readInt32(),this.quat_z=U.readInt32()):(this.quat_x=U.readInt16(),this.quat_y=U.readInt16(),this.quat_z=U.readInt16()):this.version),this.flags&32&&(this.id=U.readUint32())}},tF.fourcc="cmex",tF),FF,uB=(FF=class extends J{constructor(){super(...arguments),this.box_name="CameraIntrinsicMatrixProperty"}parse(U){this.focal_length_x=U.readInt32(),this.principal_point_x=U.readInt32(),this.principal_point_y=U.readInt32(),this.flags&1&&(this.focal_length_y=U.readInt32(),this.skew_factor=U.readInt32())}},FF.fourcc="cmin",FF),QF,fB=(QF=class extends J{constructor(){super(...arguments),this.box_name="ComponentDefinitionBox"}parse(U){this.component_count=U.readUint32(),this.component_types=[],this.component_type_urls=[];for(let e=0;e<this.component_count;e++){const t=U.readUint16();this.component_types.push(t),t>=32768&&this.component_type_urls.push(U.readCString())}}},QF.fourcc="cmpd",QF),iF,mB=(iF=class extends o{constructor(){super(...arguments),this.box_name="ChunkLargeOffsetBox"}parse(U){this.parseFullHeader(U);const e=U.readUint32();if(this.chunk_offsets=[],this.version===0)for(let t=0;t<e;t++)this.chunk_offsets.push(U.readUint64())}write(U){this.version=0,this.flags=0,this.size=4+8*this.chunk_offsets.length,this.writeHeader(U),U.writeUint32(this.chunk_offsets.length);for(let e=0;e<this.chunk_offsets.length;e++)U.writeUint64(this.chunk_offsets[e])}},iF.fourcc="co64",iF),nF,CB=(nF=class extends o{constructor(){super(...arguments),this.box_name="ContentLightLevelBox"}parse(U){this.parseFullHeader(U),this.maxCLL=U.readUint16(),this.maxFALL=U.readUint16()}},nF.fourcc="CoLL",nF),TB=class{toString(){let i="centre_azimuth: ";return i+=this.centre_azimuth,i+=" (",i+=this.centre_azimuth*2**-16,i+="°), centre_elevation: ",i+=this.centre_elevation,i+=" (",i+=this.centre_elevation*2**-16,i+="°), centre_tilt: ",i+=this.centre_tilt,i+=" (",i+=this.centre_tilt*2**-16,i+="°)",this.range_included_flag&&(i+=", azimuth_range: ",i+=this.azimuth_range,i+=" (",i+=this.azimuth_range*2**-16,i+="°), elevation_range: ",i+=this.elevation_range,i+=" (",i+=this.elevation_range*2**-16,i+="°)"),this.interpolate_included_flag&&(i+=", interpolate: ",i+=this.interpolate),i}},gB=class{toString(){let i="";return this.view_idc&&(i+="view_idc: ",i+=this.view_idc,i+=", "),i+="sphere_region: {",i+=this.sphere_region,i+="}",i}},sF,DB=(sF=class extends o{constructor(){super(...arguments),this.box_name="CoverageInformationBox"}parse(U){this.parseFullHeader(U),this.coverage_shape_type=U.readUint8();const e=U.readUint8(),t=U.readInt8(),F=t&128;F&&(this.default_view_idc=(t&96)>>5),this.coverage_regions=new Array;for(let Q=0;Q<e;Q++){const n=new gB;F&&(n.view_idc=U.readUint8()>>6),n.sphere_region=this.parseSphereRegion(U,!0,!0),this.coverage_regions.push(n)}}parseSphereRegion(U,e,t){const F=new TB;return F.centre_azimuth=U.readInt32(),F.centre_elevation=U.readInt32(),F.centre_tilt=U.readInt32(),F.range_included_flag=e,e&&(F.azimuth_range=U.readUint32(),F.elevation_range=U.readUint32()),F.interpolate_included_flag=t,t&&(F.interpolate=(U.readUint8()&128)===128),F}},sF.fourcc="covi",sF),lF,xB=(lF=class extends o{constructor(){super(...arguments),this.box_name="CopyrightBox"}parse(U){this.parseFullHeader(U),this.parseLanguage(U),this.notice=U.readCString()}},lF.fourcc="cprt",lF),aF,bB=(aF=class extends o{constructor(){super(...arguments),this.box_name="CompatibleSchemeTypeBox"}parse(U){this.parseFullHeader(U),this.scheme_type=U.readString(4),this.scheme_version=U.readUint32(),this.flags&1&&(this.scheme_uri=U.readCString())}},aF.fourcc="csch",aF),rU=2147483647,BF,MB=(BF=class extends o{constructor(){super(...arguments),this.box_name="CompositionToDecodeBox"}parse(U){this.parseFullHeader(U),this.version===0?(this.compositionToDTSShift=U.readInt32(),this.leastDecodeToDisplayDelta=U.readInt32(),this.greatestDecodeToDisplayDelta=U.readInt32(),this.compositionStartTime=U.readInt32(),this.compositionEndTime=U.readInt32()):this.version===1&&(this.compositionToDTSShift=U.readInt64(),this.leastDecodeToDisplayDelta=U.readInt64(),this.greatestDecodeToDisplayDelta=U.readInt64(),this.compositionStartTime=U.readInt64(),this.compositionEndTime=U.readInt64())}write(U){this.version=0,(this.compositionToDTSShift>rU||this.leastDecodeToDisplayDelta>rU||this.greatestDecodeToDisplayDelta>rU||this.compositionStartTime>rU||this.compositionEndTime>rU)&&(this.version=1),this.flags=0,this.version===0?(this.size=4*5,this.writeHeader(U),U.writeInt32(this.compositionToDTSShift),U.writeInt32(this.leastDecodeToDisplayDelta),U.writeInt32(this.greatestDecodeToDisplayDelta),U.writeInt32(this.compositionStartTime),U.writeInt32(this.compositionEndTime)):this.version===1&&(this.size=8*5,this.writeHeader(U),U.writeInt64(this.compositionToDTSShift),U.writeInt64(this.leastDecodeToDisplayDelta),U.writeInt64(this.greatestDecodeToDisplayDelta),U.writeInt64(this.compositionStartTime),U.writeInt64(this.compositionEndTime))}},BF.fourcc="cslg",BF),dF,yB=(dF=class extends o{constructor(){super(...arguments),this.box_name="CompositionOffsetBox"}parse(U){this.parseFullHeader(U);const e=U.readUint32();if(this.sample_counts=[],this.sample_offsets=[],this.version===0)for(let t=0;t<e;t++){this.sample_counts.push(U.readUint32());const F=U.readInt32();F<0&&R.warn("BoxParser","ctts box uses negative values without using version 1"),this.sample_offsets.push(F)}else if(this.version===1)for(let t=0;t<e;t++)this.sample_counts.push(U.readUint32()),this.sample_offsets.push(U.readInt32())}write(U){this.version=this.sample_offsets.some(e=>e<0)?1:0,this.flags=0,this.size=4+8*this.sample_counts.length,this.writeHeader(U),U.writeUint32(this.sample_counts.length);for(let e=0;e<this.sample_counts.length;e++)U.writeUint32(this.sample_counts[e]),this.version===1?U.writeInt32(this.sample_offsets[e]):U.writeUint32(this.sample_offsets[e])}unpack(U){let e=0;for(let t=0;t<this.sample_counts.length;t++)for(let F=0;F<this.sample_counts[t];F++)U[e].pts=U[e].dts+this.sample_offsets[t],e++}},dF.fourcc="ctts",dF),rF,wB=(rF=class extends J{constructor(){super(...arguments),this.box_name="AC3SpecificBox"}parse(U){const e=U.readUint8(),t=U.readUint8(),F=U.readUint8();this.fscod=e>>6,this.bsid=e>>1&31,this.bsmod=(e&1)<<2|t>>6&3,this.acmod=t>>3&7,this.lfeon=t>>2&1,this.bit_rate_code=t&3|F>>5&7}},rF.fourcc="dac3",rF),RF,IB=(RF=class extends J{constructor(){super(...arguments),this.box_name="EC3SpecificBox"}parse(U){const e=U.readUint16();this.data_rate=e>>3,this.num_ind_sub=e&7,this.ind_subs=[];for(let t=0;t<this.num_ind_sub+1;t++){const F=U.readUint8(),Q=U.readUint8(),n=U.readUint8(),s={fscod:F>>6,bsid:F>>1&31,bsmod:(F&1)<<4|Q>>4&15,acmod:Q>>1&7,lfeon:Q&1,num_dep_sub:n>>1&15};this.ind_subs.push(s),s.num_dep_sub>0&&(s.chan_loc=(n&1)<<8|U.readUint8())}}},RF.fourcc="dec3",RF),oF,vB=(oF=class extends o{constructor(){super(...arguments),this.box_name="FLACSpecificBox"}parse(U){this.parseFullHeader(U);const e=127,t=128,F=[],Q=["STREAMINFO","PADDING","APPLICATION","SEEKTABLE","VORBIS_COMMENT","CUESHEET","PICTURE","RESERVED"];let n;do{n=U.readUint8();const s=Math.min(n&e,Q.length-1);s?U.readUint8Array(U.readUint24()):(U.readUint8Array(13),this.samplerate=U.readUint32()>>12,U.readUint8Array(20)),F.push(Q[s])}while(n&t);this.numMetadataBlocks=F.length+" ("+F.join(", ")+")"}},oF.fourcc="dfLa",oF),hF,_B=(hF=class extends J{constructor(){super(...arguments),this.box_name="hintimmediateBytesSent"}parse(U){this.bytessent=U.readUint64()}},hF.fourcc="dimm",hF),VF,HB=(VF=class extends J{constructor(){super(...arguments),this.box_name="hintlongestpacket"}parse(U){this.time=U.readUint32()}},VF.fourcc="dmax",VF),JF,zB=(JF=class extends J{constructor(){super(...arguments),this.box_name="hintmediaBytesSent"}parse(U){this.bytessent=U.readUint64()}},JF.fourcc="dmed",JF),cF,YB=(cF=class extends J{constructor(){super(...arguments),this.box_name="OpusSpecificBox"}parse(U){if(this.Version=U.readUint8(),this.OutputChannelCount=U.readUint8(),this.PreSkip=U.readUint16(),this.InputSampleRate=U.readUint32(),this.OutputGain=U.readInt16(),this.ChannelMappingFamily=U.readUint8(),this.ChannelMappingFamily!==0){this.StreamCount=U.readUint8(),this.CoupledCount=U.readUint8(),this.ChannelMapping=[];for(let e=0;e<this.OutputChannelCount;e++)this.ChannelMapping[e]=U.readUint8()}}write(U){if(this.size=11,this.ChannelMappingFamily!==0&&(this.size+=2+this.OutputChannelCount),this.writeHeader(U),U.writeUint8(this.Version),U.writeUint8(this.OutputChannelCount),U.writeUint16(this.PreSkip),U.writeUint32(this.InputSampleRate),U.writeInt16(this.OutputGain),U.writeUint8(this.ChannelMappingFamily),this.ChannelMappingFamily!==0){U.writeUint8(this.StreamCount),U.writeUint8(this.CoupledCount);for(let e=0;e<this.OutputChannelCount;e++)U.writeUint8(this.ChannelMapping[e])}}},cF.fourcc="dOps",cF),SF,GB=(SF=class extends J{constructor(){super(...arguments),this.box_name="hintrepeatedBytesSent"}parse(U){this.bytessent=U.readUint64()}},SF.fourcc="drep",SF),WF,XB=(WF=class extends o{constructor(){super(...arguments),this.box_name="EditListBox"}parse(U){this.parseFullHeader(U),this.entries=[];const e=U.readUint32();for(let t=0;t<e;t++){const F={segment_duration:this.version===1?U.readUint64():U.readUint32(),media_time:this.version===1?U.readInt64():U.readInt32(),media_rate_integer:U.readInt16(),media_rate_fraction:U.readInt16()};this.entries.push(F)}}write(U){const e=this.entries.some(t=>t.segment_duration>M||t.media_time>M)||this.version===1;this.version=e?1:0,this.size=4+12*this.entries.length,this.size+=e?2*4*this.entries.length:0,this.writeHeader(U),U.writeUint32(this.entries.length);for(let t=0;t<this.entries.length;t++){const F=this.entries[t];e?(U.writeUint64(F.segment_duration),U.writeInt64(F.media_time)):(U.writeUint32(F.segment_duration),U.writeInt32(F.media_time)),U.writeInt16(F.media_rate_integer),U.writeInt16(F.media_rate_fraction)}}},WF.fourcc="elst",WF),pF,LB=(pF=class extends o{constructor(){super(...arguments),this.box_name="EventMessageBox"}parse(U){this.parseFullHeader(U),this.version===1?(this.timescale=U.readUint32(),this.presentation_time=U.readUint64(),this.event_duration=U.readUint32(),this.id=U.readUint32(),this.scheme_id_uri=U.readCString(),this.value=U.readCString()):(this.scheme_id_uri=U.readCString(),this.value=U.readCString(),this.timescale=U.readUint32(),this.presentation_time_delta=U.readUint32(),this.event_duration=U.readUint32(),this.id=U.readUint32());let e=this.size-this.hdr_size-(4*4+(this.scheme_id_uri.length+1)+(this.value.length+1));this.version===1&&(e-=4),this.message_data=U.readUint8Array(e)}write(U){this.version=0,this.flags=0,this.size=4*4+this.message_data.length+(this.scheme_id_uri.length+1)+(this.value.length+1),this.writeHeader(U),U.writeCString(this.scheme_id_uri),U.writeCString(this.value),U.writeUint32(this.timescale),U.writeUint32(this.presentation_time_delta),U.writeUint32(this.event_duration),U.writeUint32(this.id),U.writeUint8Array(this.message_data)}},pF.fourcc="emsg",pF),y=class extends o{parse(i){this.parseFullHeader(i),this.group_id=i.readUint32(),this.num_entities_in_group=i.readUint32(),this.entity_ids=[];for(let U=0;U<this.num_entities_in_group;U++){const e=i.readUint32();this.entity_ids.push(e)}}},EF,OB=(EF=class extends y{constructor(){super(...arguments),this.box_name="Auto exposure bracketing"}},EF.fourcc="aebr",EF),NF,AB=(NF=class extends y{constructor(){super(...arguments),this.box_name="Flash exposure information"}},NF.fourcc="afbr",NF),ZF,jB=(ZF=class extends y{constructor(){super(...arguments),this.box_name="Album collection"}},ZF.fourcc="albc",ZF),kF,KB=(kF=class extends y{constructor(){super(...arguments),this.box_name="Alternative entity"}},kF.fourcc="altr",kF),uF,PB=(uF=class extends y{constructor(){super(...arguments),this.box_name="Burst image"}},uF.fourcc="brst",uF),fF,qB=(fF=class extends y{constructor(){super(...arguments),this.box_name="Depth of field bracketing"}},fF.fourcc="dobr",fF),mF,$B=(mF=class extends y{constructor(){super(...arguments),this.box_name="Equivalent entity"}},mF.fourcc="eqiv",mF),CF,Ud=(CF=class extends y{constructor(){super(...arguments),this.box_name="Favorites collection"}},CF.fourcc="favc",CF),TF,ed=(TF=class extends y{constructor(){super(...arguments),this.box_name="Focus bracketing"}},TF.fourcc="fobr",TF),gF,td=(gF=class extends y{constructor(){super(...arguments),this.box_name="Image item with an audio track"}},gF.fourcc="iaug",gF),DF,Fd=(DF=class extends y{constructor(){super(...arguments),this.box_name="Panorama"}},DF.fourcc="pano",DF),xF,Qd=(xF=class extends y{constructor(){super(...arguments),this.box_name="Slideshow"}},xF.fourcc="slid",xF),bF,id=(bF=class extends y{constructor(){super(...arguments),this.box_name="Stereo"}},bF.fourcc="ster",bF),MF,nd=(MF=class extends y{constructor(){super(...arguments),this.box_name="Time-synchronized capture"}},MF.fourcc="tsyn",MF),yF,sd=(yF=class extends y{constructor(){super(...arguments),this.box_name="White balance bracketing"}},yF.fourcc="wbbr",yF),wF,ld=(wF=class extends y{constructor(){super(...arguments),this.box_name="Progressive rendering"}},wF.fourcc="prgr",wF),IF,ad=(IF=class extends y{constructor(){super(...arguments),this.box_name="Image pyramid"}parse(U){this.parseFullHeader(U),this.group_id=U.readUint32(),this.num_entities_in_group=U.readUint32(),this.entity_ids=[];for(let e=0;e<this.num_entities_in_group;e++){const t=U.readUint32();this.entity_ids.push(t)}this.tile_size_x=U.readUint16(),this.tile_size_y=U.readUint16(),this.layer_binning=[],this.tiles_in_layer_column_minus1=[],this.tiles_in_layer_row_minus1=[];for(let e=0;e<this.num_entities_in_group;e++)this.layer_binning[e]=U.readUint16(),this.tiles_in_layer_row_minus1[e]=U.readUint16(),this.tiles_in_layer_column_minus1[e]=U.readUint16()}},IF.fourcc="pymd",IF),vF,Bd=(vF=class extends J{constructor(){super(...arguments),this.box_name="FieldHandlingBox"}parse(U){this.fieldCount=U.readUint8(),this.fieldOrdering=U.readUint8()}},vF.fourcc="fiel",vF),_F,dd=(_F=class extends J{constructor(){super(...arguments),this.box_name="OriginalFormatBox"}parse(U){this.data_format=U.readString(4)}},_F.fourcc="frma",_F),HF,rd=(HF=class extends J{constructor(){super(...arguments),this.box_name="ImageMirror"}parse(U){const e=U.readUint8();this.reserved=e>>7,this.axis=e&1}},HF.fourcc="imir",HF),zF,Rd=(zF=class extends o{constructor(){super(...arguments),this.box_name="ItemPropertyAssociationBox"}parse(U){this.parseFullHeader(U);const e=U.readUint32();this.associations=[];for(let t=0;t<e;t++){const F=this.version<1?U.readUint16():U.readUint32(),Q=[],n=U.readUint8();for(let s=0;s<n;s++){const l=U.readUint8();Q.push({essential:(l&128)>>7===1,property_index:this.flags&1?(l&127)<<8|U.readUint8():l&127})}this.associations.push({id:F,props:Q})}}},zF.fourcc="ipma",zF),YF,od=(YF=class extends J{constructor(){super(...arguments),this.box_name="ImageRotation"}parse(U){this.angle=U.readUint8()&3}},YF.fourcc="irot",YF),GF,hd=(GF=class extends o{constructor(){super(...arguments),this.box_name="ImageSpatialExtentsProperty"}parse(U){this.parseFullHeader(U),this.image_width=U.readUint32(),this.image_height=U.readUint32()}},GF.fourcc="ispe",GF),XF,Vd=(XF=class extends o{constructor(){super(...arguments),this.box_name="TAITimestampBox"}parse(U){this.TAI_timestamp=U.readUint64();const e=U.readUint8();this.sychronization_state=e>>7&1,this.timestamp_generation_failure=e>>6&1,this.timestamp_is_modified=e>>5&1}},XF.fourcc="itai",XF),LF,Jd=(LF=class extends o{constructor(){super(...arguments),this.box_name="KindBox"}parse(U){this.parseFullHeader(U),this.schemeURI=U.readCString(),this.isEndOfBox(U)||(this.value=U.readCString())}write(U){this.version=0,this.flags=0,this.size=this.schemeURI.length+1+(this.value?this.value.length+1:0),this.writeHeader(U),U.writeCString(this.schemeURI),this.value&&U.writeCString(this.value)}},LF.fourcc="kind",LF),OF,cd=(OF=class extends o{constructor(){super(...arguments),this.box_name="LevelAssignmentBox"}parse(U){this.parseFullHeader(U);const e=U.readUint8();this.levels=[];for(let t=0;t<e;t++){const F={};this.levels[t]=F,F.track_ID=U.readUint32();const Q=U.readUint8();switch(F.padding_flag=Q>>7,F.assignment_type=Q&127,F.assignment_type){case 0:F.grouping_type=U.readString(4);break;case 1:F.grouping_type=U.readString(4),F.grouping_type_parameter=U.readUint32();break;case 2:break;case 3:break;case 4:F.sub_track_id=U.readUint32();break;default:R.warn("BoxParser",`Unknown level assignment type: ${F.assignment_type}`)}}}},OF.fourcc="leva",OF),AF,Sd=(AF=class extends J{constructor(){super(...arguments),this.box_name="LHEVCConfigurationBox"}parse(U){this.configurationVersion=U.readUint8(),this.min_spatial_segmentation_idc=U.readUint16()&4095,this.parallelismType=U.readUint8()&3;let e=U.readUint8();this.numTemporalLayers=(e&13)>>3,this.temporalIdNested=(e&4)>>2,this.lengthSizeMinusOne=e&3,this.nalu_arrays=[];const t=U.readUint8();for(let F=0;F<t;F++){const Q=[];this.nalu_arrays.push(Q),e=U.readUint8(),Q.completeness=(e&128)>>7,Q.nalu_type=e&63;const n=U.readUint16();for(let s=0;s<n;s++){const l=U.readUint16();Q.push({data:U.readUint8Array(l)})}}}},AF.fourcc="lhvC",AF),jF,Wd=(jF=class extends J{constructor(){super(...arguments),this.box_name="LayerSelectorProperty"}parse(U){this.layer_id=U.readUint16()}},jF.fourcc="lsel",jF),KF,pd=(KF=class extends J{constructor(){super(...arguments),this.box_name="hintmaxrate"}parse(U){this.period=U.readUint32(),this.bytes=U.readUint32()}},KF.fourcc="maxr",KF),xi=class{constructor(i,U){this.x=i,this.y=U}toString(){return"("+this.x+","+this.y+")"}},PF,Ed=(PF=class extends J{constructor(){super(...arguments),this.box_name="MasteringDisplayColourVolumeBox"}parse(U){this.display_primaries=[],this.display_primaries[0]=new xi(U.readUint16(),U.readUint16()),this.display_primaries[1]=new xi(U.readUint16(),U.readUint16()),this.display_primaries[2]=new xi(U.readUint16(),U.readUint16()),this.white_point=new xi(U.readUint16(),U.readUint16()),this.max_display_mastering_luminance=U.readUint32(),this.min_display_mastering_luminance=U.readUint32()}},PF.fourcc="mdcv",PF),qF,Nd=(qF=class extends o{constructor(){super(...arguments),this.box_name="MovieFragmentRandomAccessOffsetBox"}parse(U){this.parseFullHeader(U),this._size=U.readUint32()}},qF.fourcc="mfro",qF),$F,Zd=($F=class extends o{constructor(){super(...arguments),this.box_name="MaskConfigurationProperty"}parse(U){this.parseFullHeader(U),this.bits_per_pixel=U.readUint8()}},$F.fourcc="mskC",$F),UQ,kd=(UQ=class extends J{constructor(){super(...arguments),this.box_name="hintPacketsSent"}parse(U){this.packetssent=U.readUint32()}},UQ.fourcc="npck",UQ),eQ,ud=(eQ=class extends J{constructor(){super(...arguments),this.box_name="hintPacketsSent"}parse(U){this.packetssent=U.readUint64()}},eQ.fourcc="nump",eQ),fd=class{constructor(i,U){this.pad1=i,this.pad2=U}},tQ,md=(tQ=class extends o{constructor(){super(...arguments),this.box_name="PaddingBitsBox"}parse(U){this.parseFullHeader(U);const e=U.readUint32();this.padbits=[];for(let t=0;t<Math.floor((e+1)/2);t++){const F=U.readUint8(),Q=(F&112)>>4,n=F&7;this.padbits.push(new fd(Q,n))}}},tQ.fourcc="padb",tQ),FQ,Cd=(FQ=class extends J{constructor(){super(...arguments),this.box_name="PixelAspectRatioBox"}parse(U){this.hSpacing=U.readUint32(),this.vSpacing=U.readUint32()}},FQ.fourcc="pasp",FQ),QQ,Td=(QQ=class extends J{constructor(){super(...arguments),this.box_name="CuePayloadBox"}parse(U){this.text=U.readString(this.size-this.hdr_size)}},QQ.fourcc="payl",QQ),iQ,gd=(iQ=class extends J{constructor(){super(...arguments),this.box_name="hintpayloadID"}parse(U){this.payloadID=U.readUint32();const e=U.readUint8();this.rtpmap_string=U.readString(e)}},iQ.fourcc="payt",iQ),nQ,Dd=(nQ=class extends o{constructor(){super(...arguments),this.box_name="ProgressiveDownloadInfoBox",this.rate=[],this.initial_delay=[]}parse(U){this.parseFullHeader(U);const e=(this.size-this.hdr_size)/8;for(let t=0;t<e;t++)this.rate[t]=U.readUint32(),this.initial_delay[t]=U.readUint32()}},nQ.fourcc="pdin",nQ),sQ,xd=(sQ=class extends o{constructor(){super(...arguments),this.box_name="PixelInformationProperty"}parse(U){this.parseFullHeader(U),this.num_channels=U.readUint8(),this.bits_per_channels=[];for(let e=0;e<this.num_channels;e++)this.bits_per_channels[e]=U.readUint8()}},sQ.fourcc="pixi",sQ),lQ,bd=(lQ=class extends J{constructor(){super(...arguments),this.box_name="hintlargestpacket"}parse(U){this.bytes=U.readUint32()}},lQ.fourcc="pmax",lQ),aQ,Md=(aQ=class extends o{constructor(){super(...arguments),this.box_name="ProgressiveDerivedImageItemInformationProperty"}parse(U){if(this.parseFullHeader(U),this.step_count=U.readUint16(),this.item_count=[],this.flags&2)for(let e=0;e<this.step_count;e++)this.item_count[e]=U.readUint16()}},aQ.fourcc="prdi",aQ),BQ,yd=(BQ=class extends o{constructor(){super(...arguments),this.box_name="ProjectionFormatBox"}parse(U){this.parseFullHeader(U),this.projection_type=U.readUint8()&31}},BQ.fourcc="prfr",BQ),dQ,wd=(dQ=class extends o{constructor(){super(...arguments),this.box_name="ProducerReferenceTimeBox"}parse(U){this.parseFullHeader(U),this.ref_track_id=U.readUint32(),this.ntp_timestamp=U.readUint64(),this.version===0?this.media_time=U.readUint32():this.media_time=U.readUint64()}},dQ.fourcc="prft",dQ),rQ,Id=(rQ=class extends o{constructor(){super(...arguments),this.box_name="ProtectionSystemSpecificHeaderBox"}parse(U){if(this.parseFullHeader(U),this.system_id=UU(U),this.kid=[],this.version>0){const t=U.readUint32();for(let F=0;F<t;F++)this.kid[F]=UU(U)}const e=U.readUint32();e>0&&(this.protection_data=U.readUint8Array(e))}},rQ.fourcc="pssh",rQ),RQ,vd=(RQ=class extends o{constructor(){super(...arguments),this.box_name="TrackCleanApertureDimensionsBox"}parse(U){this.parseFullHeader(U),this.width=U.readUint32(),this.height=U.readUint32()}},RQ.fourcc="clef",RQ);function _d(i,U){if(i===RU.Types.UTF8)return new TextDecoder("utf-8").decode(U);const e=new DataView(U.buffer);if(i===RU.Types.BE_UNSIGNED_INT){if(U.length===1)return e.getUint8(0);if(U.length===2)return e.getUint16(0,!1);if(U.length===4)return e.getUint32(0,!1);if(U.length===8)return e.getBigUint64(0,!1);throw new Error("Unsupported ITIF_TYPE_BE_UNSIGNED_INT length "+U.length)}else if(i===RU.Types.BE_SIGNED_INT){if(U.length===1)return e.getInt8(0);if(U.length===2)return e.getInt16(0,!1);if(U.length===4)return e.getInt32(0,!1);if(U.length===8)return e.getBigInt64(0,!1);throw new Error("Unsupported ITIF_TYPE_BE_SIGNED_INT length "+U.length)}else if(i===RU.Types.BE_FLOAT32)return e.getFloat32(0,!1);R.warn("DataBox","Unsupported or unimplemented itif data type: "+i)}var lU,RU=(lU=class extends J{constructor(){super(...arguments),this.box_name="DataBox"}parse(U){this.valueType=U.readUint32(),this.country=U.readUint16(),this.country>255&&(U.seek(U.getPosition()-2),this.countryString=U.readString(2)),this.language=U.readUint16(),this.language>255&&(U.seek(U.getPosition()-2),this.parseLanguage(U)),this.raw=U.readUint8Array(this.size-this.hdr_size-8),this.value=_d(this.valueType,this.raw)}},lU.fourcc="data",lU.Types={RESERVED:0,UTF8:1,UTF16:2,SJIS:3,UTF8_SORT:4,UTF16_SORT:5,JPEG:13,PNG:14,BE_SIGNED_INT:21,BE_UNSIGNED_INT:22,BE_FLOAT32:23,BE_FLOAT64:24,BMP:27,QT_ATOM:28,BE_SIGNED_INT8:65,BE_SIGNED_INT16:66,BE_SIGNED_INT32:67,BE_FLOAT32_POINT:70,BE_FLOAT32_DIMENSIONS:71,BE_FLOAT32_RECT:72,BE_SIGNED_INT64:74,BE_UNSIGNED_INT8:75,BE_UNSIGNED_INT16:76,BE_UNSIGNED_INT32:77,BE_UNSIGNED_INT64:78,BE_FLOAT64_AFFINE_TRANSFORM:79},lU),oQ,Hd=(oQ=class extends o{constructor(){super(...arguments),this.box_name="TrackEncodedPixelsDimensionsBox"}parse(U){this.parseFullHeader(U),this.width=U.readUint32(),this.height=U.readUint32()}},oQ.fourcc="enof",oQ),hQ,zd=(hQ=class extends J{constructor(){super(...arguments),this.box_name="IlstBox"}parse(U){this.list={};let e=this.size-this.hdr_size;for(;e>0;){const t=U.readUint32(),F=U.readUint32(),Q=Y(U,!1,t-8);Q.code===H&&(this.list[F]=Q.box),e-=t}}},hQ.fourcc="ilst",hQ),VQ,Yd=(VQ=class extends o{constructor(){super(...arguments),this.box_name="KeysBox"}parse(U){this.parseFullHeader(U),this.count=U.readUint32(),this.keys={};for(let e=0;e<this.count;e++){const t=U.readUint32();this.keys[e+1]=U.readString(t-4)}}},VQ.fourcc="keys",VQ),JQ,Gd=(JQ=class extends o{constructor(){super(...arguments),this.box_name="TrackProductionApertureDimensionsBox"}parse(U){this.parseFullHeader(U),this.width=U.readUint32(),this.height=U.readUint32()}},JQ.fourcc="prof",JQ),cQ,Xd=(cQ=class extends u{constructor(){super(...arguments),this.box_name="TrackApertureModeDimensionsBox",this.clefs=[],this.profs=[],this.enofs=[],this.subBoxNames=["clef","prof","enof"]}},cQ.fourcc="tapt",cQ),SQ,Ld=(SQ=class extends u{constructor(){super(...arguments),this.box_name="siDecompressionParamBox"}},SQ.fourcc="wave",SQ),WQ,Od=(WQ=class extends J{constructor(){super(...arguments),this.box_name="rtpmoviehintinformation"}parse(U){this.descriptionformat=U.readString(4),this.sdptext=U.readString(this.size-this.hdr_size-4)}},WQ.fourcc="rtp ",WQ),pQ,Ad=(pQ=class extends o{constructor(){super(...arguments),this.box_name="SampleAuxiliaryInformationOffsetsBox"}parse(U){this.parseFullHeader(U),this.flags&1&&(this.aux_info_type=U.readString(4),this.aux_info_type_parameter=U.readUint32());const e=U.readUint32();this.offset=[];for(let t=0;t<e;t++)this.version===0?this.offset[t]=U.readUint32():this.offset[t]=U.readUint64()}},pQ.fourcc="saio",pQ),EQ,jd=(EQ=class extends o{constructor(){super(...arguments),this.box_name="SampleAuxiliaryInformationSizesBox"}parse(U){if(this.parseFullHeader(U),this.flags&1&&(this.aux_info_type=U.readString(4),this.aux_info_type_parameter=U.readUint32()),this.default_sample_info_size=U.readUint8(),this.sample_count=U.readUint32(),this.sample_info_size=[],this.default_sample_info_size===0)for(let e=0;e<this.sample_count;e++)this.sample_info_size[e]=U.readUint8()}},EQ.fourcc="saiz",EQ),Kd=class{constructor(i,U){this.bad_pixel_row=i,this.bad_pixel_column=U}toString(){return"[row: "+this.bad_pixel_row+", column: "+this.bad_pixel_column+"]"}},NQ,Pd=(NQ=class extends o{constructor(){super(...arguments),this.box_name="SensorBadPixelsMapBox"}parse(U){this.parseFullHeader(U),this.component_count=U.readUint16(),this.component_index=[];for(let t=0;t<this.component_count;t++)this.component_index.push(U.readUint16());const e=U.readUint8();this.correction_applied=(e&128)===128,this.num_bad_rows=U.readUint32(),this.num_bad_cols=U.readUint32(),this.num_bad_pixels=U.readUint32(),this.bad_rows=[],this.bad_columns=[],this.bad_pixels=[];for(let t=0;t<this.num_bad_rows;t++)this.bad_rows.push(U.readUint32());for(let t=0;t<this.num_bad_cols;t++)this.bad_columns.push(U.readUint32());for(let t=0;t<this.num_bad_pixels;t++){const F=U.readUint32(),Q=U.readUint32();this.bad_pixels.push(new Kd(F,Q))}}},NQ.fourcc="sbpm",NQ),ZQ,qd=(ZQ=class extends o{constructor(){super(...arguments),this.box_name="SchemeTypeBox"}parse(U){this.parseFullHeader(U),this.scheme_type=U.readString(4),this.scheme_version=U.readUint32(),this.flags&1&&(this.scheme_uri=U.readString(this.size-this.hdr_size-8))}},ZQ.fourcc="schm",ZQ),kQ,$d=(kQ=class extends J{constructor(){super(...arguments),this.box_name="rtptracksdphintinformation"}parse(U){this.sdptext=U.readString(this.size-this.hdr_size)}},kQ.fourcc="sdp ",kQ),uQ,Ur=(uQ=class extends o{constructor(){super(...arguments),this.box_name="SampleEncryptionBox"}},uQ.fourcc="senc",uQ),fQ,er=(fQ=class extends o{constructor(){super(...arguments),this.box_name="SMPTE2086MasteringDisplayMetadataBox"}parse(U){this.parseFullHeader(U),this.primaryRChromaticity_x=U.readUint16(),this.primaryRChromaticity_y=U.readUint16(),this.primaryGChromaticity_x=U.readUint16(),this.primaryGChromaticity_y=U.readUint16(),this.primaryBChromaticity_x=U.readUint16(),this.primaryBChromaticity_y=U.readUint16(),this.whitePointChromaticity_x=U.readUint16(),this.whitePointChromaticity_y=U.readUint16(),this.luminanceMax=U.readUint32(),this.luminanceMin=U.readUint32()}},fQ.fourcc="SmDm",fQ),mQ,tr=(mQ=class extends o{constructor(){super(...arguments),this.box_name="SamplingRateBox"}parse(U){this.parseFullHeader(U),this.sampling_rate=U.readUint32()}},mQ.fourcc="srat",mQ),CQ,Fr=(CQ=class extends o{constructor(){super(...arguments),this.box_name="CompressedSubsegmentIndexBox"}parse(U){this.parseFullHeader(U),this.subsegments=[];const e=U.readUint32();for(let t=0;t<e;t++){const F={};this.subsegments.push(F),F.ranges=[];const Q=U.readUint32();for(let n=0;n<Q;n++){const s={};F.ranges.push(s),s.level=U.readUint8(),s.range_size=U.readUint24()}}}},CQ.fourcc="ssix",CQ),TQ,Qr=(TQ=class extends o{constructor(){super(...arguments),this.box_name="DegradationPriorityBox"}parse(U){this.parseFullHeader(U);const e=(this.size-this.hdr_size)/2;this.priority=[];for(let t=0;t<e;t++)this.priority[t]=U.readUint16()}},TQ.fourcc="stpd",TQ),gQ,ir=(gQ=class extends o{constructor(){super(...arguments),this.box_name="SubTrackInformationBox"}parse(U){this.parseFullHeader(U),this.switch_group=U.readUint16(),this.alternate_group=U.readUint16(),this.sub_track_id=U.readUint32();const e=(this.size-this.hdr_size-8)/4;this.attribute_list=[];for(let t=0;t<e;t++)this.attribute_list[t]=U.readUint32()}},gQ.fourcc="stri",gQ),DQ,nr=(DQ=class extends o{constructor(){super(...arguments),this.box_name="SubTrackSampleGroupBox"}parse(U){this.parseFullHeader(U),this.grouping_type=U.readUint32();const e=U.readUint16();this.group_description_index=[];for(let t=0;t<e;t++)this.group_description_index[t]=U.readUint32()}},DQ.fourcc="stsg",DQ),xQ,sr=(xQ=class extends o{constructor(){super(...arguments),this.box_name="ShadowSyncSampleBox"}parse(U){this.parseFullHeader(U);const e=U.readUint32();if(this.shadowed_sample_numbers=[],this.sync_sample_numbers=[],this.version===0)for(let t=0;t<e;t++)this.shadowed_sample_numbers.push(U.readUint32()),this.sync_sample_numbers.push(U.readUint32())}write(U){this.version=0,this.flags=0,this.size=4+8*this.shadowed_sample_numbers.length,this.writeHeader(U),U.writeUint32(this.shadowed_sample_numbers.length);for(let e=0;e<this.shadowed_sample_numbers.length;e++)U.writeUint32(this.shadowed_sample_numbers[e]),U.writeUint32(this.sync_sample_numbers[e])}},xQ.fourcc="stsh",xQ),bQ,lr=(bQ=class extends o{constructor(){super(...arguments),this.box_name="SyncSampleBox"}parse(U){this.parseFullHeader(U);const e=U.readUint32();if(this.version===0){this.sample_numbers=[];for(let t=0;t<e;t++)this.sample_numbers.push(U.readUint32())}}write(U){this.version=0,this.flags=0,this.size=4+4*this.sample_numbers.length,this.writeHeader(U),U.writeUint32(this.sample_numbers.length),U.writeUint32Array(this.sample_numbers)}},bQ.fourcc="stss",bQ),MQ,ar=(MQ=class extends o{constructor(){super(...arguments),this.box_name="StereoVideoBox"}parse(U){this.parseFullHeader(U);const e=U.readUint32();this.single_view_allowed=e&3,this.stereo_scheme=U.readUint32();const t=U.readUint32();for(this.stereo_indication_type=U.readString(t),this.boxes=[];U.getPosition()<this.start+this.size;){const F=Y(U,!1,this.size-(U.getPosition()-this.start));if(F.code===H){const Q=F.box;this.boxes.push(Q),this[Q.type]=Q}else return}}},MQ.fourcc="stvi",MQ),yQ,Br=(yQ=class extends J{constructor(){super(...arguments),this.box_name="SegmentTypeBox"}parse(U){let e=this.size-this.hdr_size;this.major_brand=U.readString(4),this.minor_version=U.readUint32(),e-=8,this.compatible_brands=[];let t=0;for(;e>=4;)this.compatible_brands[t]=U.readString(4),e-=4,t++}write(U){this.size=8+4*this.compatible_brands.length,this.writeHeader(U),U.writeString(this.major_brand,void 0,4),U.writeUint32(this.minor_version);for(let e=0;e<this.compatible_brands.length;e++)U.writeString(this.compatible_brands[e],void 0,4)}},yQ.fourcc="styp",yQ),wQ,dr=(wQ=class extends o{constructor(){super(...arguments),this.box_name="CompactSampleSizeBox"}parse(U){if(this.parseFullHeader(U),this.sample_sizes=[],this.version===0){this.reserved=U.readUint24(),this.field_size=U.readUint8();const e=U.readUint32();if(this.field_size===4)for(let t=0;t<e;t+=2){const F=U.readUint8();this.sample_sizes[t]=F>>4&15,this.sample_sizes[t+1]=F&15}else if(this.field_size===8)for(let t=0;t<e;t++)this.sample_sizes[t]=U.readUint8();else if(this.field_size===16)for(let t=0;t<e;t++)this.sample_sizes[t]=U.readUint16();else R.error("BoxParser","Error in length field in stz2 box",U.isofile)}}},wQ.fourcc="stz2",wQ),IQ,rr=(IQ=class extends o{constructor(){super(...arguments),this.box_name="SubSampleInformationBox"}parse(U){this.parseFullHeader(U);const e=U.readUint32();this.entries=[];let t;for(let F=0;F<e;F++){const Q={};if(this.entries[F]=Q,Q.sample_delta=U.readUint32(),Q.subsamples=[],t=U.readUint16(),t>0)for(let n=0;n<t;n++){const s={};Q.subsamples.push(s),this.version===1?s.size=U.readUint32():s.size=U.readUint16(),s.priority=U.readUint8(),s.discardable=U.readUint8(),s.codec_specific_parameters=U.readUint32()}}}},IQ.fourcc="subs",IQ),vQ,Rr=(vQ=class extends o{constructor(){super(...arguments),this.box_name="TAIClockInfoBox"}parse(U){this.time_uncertainty=U.readUint64(),this.clock_resolution=U.readUint32(),this.clock_drift_rate=U.readInt32();const e=U.readUint8();this.clock_type=(e&192)>>6}},vQ.fourcc="taic",vQ),_Q,or=(_Q=class extends o{constructor(){super(...arguments),this.box_name="TrackEncryptionBox"}parse(U){if(this.parseFullHeader(U),U.readUint8(),this.version===0)U.readUint8();else{const e=U.readUint8();this.default_crypt_byte_block=e>>4&15,this.default_skip_byte_block=e&15}this.default_isProtected=U.readUint8(),this.default_Per_Sample_IV_Size=U.readUint8(),this.default_KID=UU(U),this.default_isProtected===1&&this.default_Per_Sample_IV_Size===0&&(this.default_constant_IV_size=U.readUint8(),this.default_constant_IV=U.readUint8Array(this.default_constant_IV_size))}},_Q.fourcc="tenc",_Q),HQ,hr=(HQ=class extends o{constructor(){super(...arguments),this.box_name="TrackFragmentRandomAccessBox"}parse(U){this.parseFullHeader(U),this.track_ID=U.readUint32(),U.readUint24();const e=U.readUint8();this.length_size_of_traf_num=e>>4&3,this.length_size_of_trun_num=e>>2&3,this.length_size_of_sample_num=e&3,this.entries=[];const t=U.readUint32();for(let F=0;F<t;F++)this.version===1?(this.time=U.readUint64(),this.moof_offset=U.readUint64()):(this.time=U.readUint32(),this.moof_offset=U.readUint32()),this.traf_number=U["readUint"+8*(this.length_size_of_traf_num+1)](),this.trun_number=U["readUint"+8*(this.length_size_of_trun_num+1)](),this.sample_number=U["readUint"+8*(this.length_size_of_sample_num+1)]()}},HQ.fourcc="tfra",HQ),zQ,Vr=(zQ=class extends J{constructor(){super(...arguments),this.box_name="hintmaxrelativetime"}parse(U){this.time=U.readUint32()}},zQ.fourcc="tmax",zQ),YQ,Jr=(YQ=class extends J{constructor(){super(...arguments),this.box_name="hintminrelativetime"}parse(U){this.time=U.readUint32()}},YQ.fourcc="tmin",YQ),GQ,cr=(GQ=class extends J{constructor(){super(...arguments),this.box_name="hintBytesSent"}parse(U){this.bytessent=U.readUint32()}},GQ.fourcc="totl",GQ),XQ,Sr=(XQ=class extends J{constructor(){super(...arguments),this.box_name="hintBytesSent"}parse(U){this.bytessent=U.readUint32()}},XQ.fourcc="tpay",XQ),LQ,Wr=(LQ=class extends J{constructor(){super(...arguments),this.box_name="hintBytesSent"}parse(U){this.bytessent=U.readUint64()}},LQ.fourcc="tpyl",LQ),OQ,pr=(OQ=class extends dl{},OQ.fourcc="msrc",OQ),q,Er=(q=class extends J{constructor(){super(...arguments),this.box_name="TrackReferenceBox",this.references=[]}parse(U){for(;U.getPosition()<this.start+this.size;){const e=Y(U,!0,this.size-(U.getPosition()-this.start));if(e.code===H){q.allowed_types.includes(e.type)||R.warn("BoxParser",`Unknown track reference type: '${e.type}'`);const t=new ol(e.type,e.size,e.hdr_size,e.start);t.write===J.prototype.write&&t.type!=="mdat"&&(R.info("BoxParser","TrackReference "+t.type+" box writing not yet implemented, keeping unparsed data in memory for later write"),t.parseDataAndRewind(U)),t.parse(U),this.references.push(t)}else return}}},q.fourcc="tref",q.allowed_types=["hint","cdsc","font","hind","vdep","vplx","subt","thmb","auxl","cdtg","shsc","aest"],q),AQ,Nr=(AQ=class extends o{constructor(){super(...arguments),this.box_name="TrackExtensionPropertiesBox"}parse(U){for(this.parseFullHeader(U),this.track_ID=U.readUint32(),this.boxes=[];U.getPosition()<this.start+this.size;){const e=Y(U,!1,this.size-(U.getPosition()-this.start));if(e.code===H){const t=e.box;this.boxes.push(t)}else return}}},AQ.fourcc="trep",AQ),jQ,Zr=(jQ=class extends J{constructor(){super(...arguments),this.box_name="hintBytesSent"}parse(U){this.bytessent=U.readUint64()}},jQ.fourcc="trpy",jQ),KQ,kr=(KQ=class extends o{constructor(){super(...arguments),this.box_name="TrackSelectionBox"}parse(U){this.parseFullHeader(U),this.switch_group=U.readUint32();const e=(this.size-this.hdr_size-4)/4;this.attribute_list=[];for(let t=0;t<e;t++)this.attribute_list[t]=U.readUint32()}},KQ.fourcc="tsel",KQ),PQ,ur=(PQ=class extends o{constructor(){super(...arguments),this.box_name="TextConfigBox"}parse(U){this.parseFullHeader(U),this.config=U.readCString()}},PQ.fourcc="txtc",PQ),qQ,fr=(qQ=class extends J{constructor(){super(...arguments),this.box_name="TypeCombinationBox"}parse(U){const e=(this.size-this.hdr_size)/4;this.compatible_brands=[];for(let t=0;t<e;t++)this.compatible_brands[t]=U.readString(4)}},qQ.fourcc="tyco",qQ),$Q,mr=($Q=class extends o{constructor(){super(...arguments),this.box_name="UserDescriptionProperty"}parse(U){this.parseFullHeader(U),this.lang=U.readCString(),this.name=U.readCString(),this.description=U.readCString(),this.tags=U.readCString()}},$Q.fourcc="udes",$Q),Ui,Cr=(Ui=class extends o{constructor(){super(...arguments),this.box_name="UncompressedFrameConfigBox"}parse(U){if(this.parseFullHeader(U),this.profile=U.readString(4),this.version!==1){if(this.version===0){this.component_count=U.readUint32(),this.component_index=[],this.component_bit_depth_minus_one=[],this.component_format=[],this.component_align_size=[];for(let t=0;t<this.component_count;t++)this.component_index.push(U.readUint16()),this.component_bit_depth_minus_one.push(U.readUint8()),this.component_format.push(U.readUint8()),this.component_align_size.push(U.readUint8());this.sampling_type=U.readUint8(),this.interleave_type=U.readUint8(),this.block_size=U.readUint8();const e=U.readUint8();this.component_little_endian=e>>7&1,this.block_pad_lsb=e>>6&1,this.block_little_endian=e>>5&1,this.block_reversed=e>>4&1,this.pad_unknown=e>>3&1,this.pixel_size=U.readUint32(),this.row_align_size=U.readUint32(),this.tile_align_size=U.readUint32(),this.num_tile_cols_minus_one=U.readUint32(),this.num_tile_rows_minus_one=U.readUint32()}}}},Ui.fourcc="uncC",Ui),ei,Tr=(ei=class extends o{constructor(){super(...arguments),this.box_name="DataEntryUrnBox"}parse(U){this.parseFullHeader(U),this.name=U.readCString(),this.size-this.hdr_size-this.name.length-1>0&&(this.location=U.readCString())}write(U){this.version=0,this.flags=0,this.size=this.name.length+1+(this.location?this.location.length+1:0),this.writeHeader(U),U.writeCString(this.name),this.location&&U.writeCString(this.location)}},ei.fourcc="urn ",ei),ti,gr=(ti=class extends J{constructor(){super(...arguments),this.box_name="WebVTTConfigurationBox"}parse(U){this.text=U.readString(this.size-this.hdr_size)}},ti.fourcc="vttC",ti),Fi,Dr=(Fi=class extends o{constructor(){super(...arguments),this.box_name="VvcNALUConfigBox"}parse(U){this.parseFullHeader(U);const e=U.readUint8();this.lengthSizeMinusOne=e&3}},Fi.fourcc="vvnC",Fi),Qi,xr=(Qi=class extends b{parse(U){const e=U.readUint16();this.first_output_sample=U.readUint16(),this.sample_offset=[];for(let F=0;F<e;F++)this.sample_offset[F]=U.readUint32();const t=this.description_length-4-4*e;this.num_output_samples=[],this.num_total_samples=[];for(let F=0;F<t/4;F++)this.num_output_samples[F]=U.readUint16(),this.num_total_samples[F]=U.readUint16()}},Qi.grouping_type="alst",Qi),ii,br=(ii=class extends b{parse(U){this.layerNumber=U.readUint8(),this.accurateStatisticsFlag=U.readUint8(),this.avgBitRate=U.readUint16(),this.avgFrameRate=U.readUint16()}},ii.grouping_type="avll",ii),ni,Mr=(ni=class extends b{parse(U){this.subSequenceIdentifier=U.readUint16(),this.layerNumber=U.readUint8();const e=U.readUint8();this.durationFlag=e>>7,this.avgRateFlag=e>>6&1,this.durationFlag&&(this.duration=U.readUint32()),this.avgRateFlag&&(this.accurateStatisticsFlag=U.readUint8(),this.avgBitRate=U.readUint16(),this.avgFrameRate=U.readUint16()),this.dependency=[];const t=U.readUint8();for(let F=0;F<t;F++)this.dependency.push({subSeqDirectionFlag:U.readUint8(),layerNumber:U.readUint8(),subSequenceIdentifier:U.readUint16()})}},ni.grouping_type="avss",ni),si,yr=(si=class extends b{parse(U){R.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},si.grouping_type="dtrt",si),li,wr=(li=class extends b{parse(U){R.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},li.grouping_type="mvif",li),ai,Ir=(ai=class extends b{parse(U){this.roll_distance=U.readInt16()}},ai.grouping_type="prol",ai),Bi,vr=(Bi=class extends b{parse(U){const e=U.readUint8();this.num_leading_samples_known=e>>7,this.num_leading_samples=e&127}},Bi.grouping_type="rap ",Bi),di,_r=(di=class extends b{parse(U){if(this.operation_point_count=U.readUint16(),this.description_length!==2+(this.operation_point_count===1?2:this.operation_point_count*6)+9)R.warn("BoxParser","Mismatch in "+this.grouping_type+" sample group length"),this.data=U.readUint8Array(this.description_length-2);else{if(this.operation_point_count===1)this.target_rate_share=U.readUint16();else{this.target_rate_share=[],this.available_bitrate=[];for(let e=0;e<this.operation_point_count;e++)this.available_bitrate[e]=U.readUint32(),this.target_rate_share[e]=U.readUint16()}this.maximum_bitrate=U.readUint32(),this.minimum_bitrate=U.readUint32(),this.discard_priority=U.readUint8()}}},di.grouping_type="rash",di),ri,Hr=(ri=class extends b{parse(U){this.roll_distance=U.readInt16()}},ri.grouping_type="roll",ri),Ri,zr=(Ri=class extends b{parse(U){R.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},Ri.grouping_type="scif",Ri),oi,Yr=(oi=class extends b{parse(U){R.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},oi.grouping_type="scnm",oi),hi,Gr=(hi=class extends b{parse(U){this.reserved=U.readUint8();const e=U.readUint8();this.crypt_byte_block=e>>4,this.skip_byte_block=e&15,this.isProtected=U.readUint8(),this.Per_Sample_IV_Size=U.readUint8(),this.KID=UU(U),this.constant_IV_size=0,this.constant_IV=0,this.isProtected===1&&this.Per_Sample_IV_Size===0&&(this.constant_IV_size=U.readUint8(),this.constant_IV=U.readUint8Array(this.constant_IV_size))}},hi.grouping_type="seig",hi),Vi,Xr=(Vi=class extends b{parse(U){R.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},Vi.grouping_type="stsa",Vi),Ji,Lr=(Ji=class extends b{parse(U){const e=U.readUint8();this.NAL_unit_type=e&63}},Ji.grouping_type="sync",Ji),ci,Or=(ci=class extends b{parse(U){const e=U.readUint8();this.level_independently_decodable=e>>7}},ci.grouping_type="tele",ci),Si,Ar=(Si=class extends b{parse(U){R.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},Si.grouping_type="tsas",Si),Wi,jr=(Wi=class extends b{parse(U){R.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},Wi.grouping_type="tscl",Wi),pi,Kr=(pi=class extends b{parse(U){R.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},pi.grouping_type="vipr",pi),Ei,Pr=(Ei=class extends J{},Ei.fourcc="uuid",Ei),Ni,aU=(Ni=class extends o{},Ni.fourcc="uuid",Ni),Zi,qr=(Zi=class extends aU{constructor(){super(...arguments),this.box_name="LiveServerManifestBox"}parse(U){this.parseFullHeader(U),this.LiveServerManifest=U.readString(this.size-this.hdr_size).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;")}},Zi.uuid="a5d40b30e81411ddba2f0800200c9a66",Zi),ki,$r=(ki=class extends aU{constructor(){super(...arguments),this.box_name="PiffProtectionSystemSpecificHeaderBox"}parse(U){this.parseFullHeader(U),this.system_id=UU(U);const e=U.readUint32();e>0&&(this.data=U.readUint8Array(e))}},ki.uuid="d08a4f1810f34a82b6c832d8aba183d3",ki),ui,UR=(ui=class extends aU{constructor(){super(...arguments),this.box_name="PiffSampleEncryptionBox"}},ui.uuid="a2394f525a9b4f14a2446c427c648df4",ui),fi,eR=(fi=class extends aU{constructor(){super(...arguments),this.box_name="PiffTrackEncryptionBox"}parse(U){this.parseFullHeader(U),this.default_AlgorithmID=U.readUint24(),this.default_IV_size=U.readUint8(),this.default_KID=UU(U)}},fi.uuid="8974dbce7be74c5184f97148f9882554",fi),mi,tR=(mi=class extends aU{constructor(){super(...arguments),this.box_name="TfrfBox"}parse(U){this.parseFullHeader(U),this.fragment_count=U.readUint8(),this.entries=[];for(let e=0;e<this.fragment_count;e++){let t=0,F=0;this.version===1?(t=U.readUint64(),F=U.readUint64()):(t=U.readUint32(),F=U.readUint32()),this.entries.push({absolute_time:t,absolute_duration:F})}}},mi.uuid="d4807ef2ca3946958e5426cb9e46a79f",mi),Ci,FR=(Ci=class extends aU{constructor(){super(...arguments),this.box_name="TfxdBox"}parse(U){this.parseFullHeader(U),this.version===1?(this.absolute_time=U.readUint64(),this.duration=U.readUint64()):(this.absolute_time=U.readUint32(),this.duration=U.readUint32())}},Ci.uuid="6d1d9b0542d544e680e2141daff757b2",Ci),Ti,QR=(Ti=class extends Pr{constructor(){super(...arguments),this.box_name="ItemContentIDProperty"}parse(U){this.content_id=U.readCString()}},Ti.uuid="261ef3741d975bbaacbd9d2c8ea73522",Ti);Wl(_s);pl(Ms);class cn{constructor(U={}){d(this,"mp4File",null);d(this,"fileInfo",null);d(this,"videoTrackId",null);d(this,"audioTrackId",null);d(this,"videoTrack",null);d(this,"audioTrack",null);d(this,"nextVideoSampleIndex",0);d(this,"nextAudioSampleIndex",0);d(this,"totalVideoSamples",0);d(this,"totalAudioSamples",0);d(this,"samplesRequested",!1);d(this,"isProgressiveLoading",!1);d(this,"fileSize",0);d(this,"loadedBytes",0);d(this,"videoDescription",null);d(this,"audioDescription",null);d(this,"events",{});this.events=U}getFileInfo(){return this.fileInfo}getVideoDescription(){return this.videoDescription}getAudioDescription(){return this.audioDescription}async loadFromUrl(U){this.initMP4File();const e=4*1024*1024;let t=0,F=!1;try{const Q=await fetch(U,{method:"HEAD"});if(Q.ok){const n=Q.headers.get("Content-Length");n&&(this.fileSize=parseInt(n,10))}}catch{}return new Promise((Q,n)=>{let s=!1;const l=this.mp4File.onSamples;this.mp4File.onSamples=(r,h,V)=>{!s&&r===this.videoTrackId&&V.length>0&&(s=!0),l==null||l.call(this.mp4File,r,h,V)};const a=this.mp4File.onReady;this.mp4File.onReady=r=>{a==null||a.call(this.mp4File,r),this.fileInfo&&!F&&(F=!0)},(async()=>{var r,h,V,S,c,W,N,k,f,x;try{const m=await fetch(U,{headers:{Range:`bytes=0-${e-1}`}});if(!m.ok&&m.status!==206)throw new Error(`Failed to fetch: ${m.status} ${m.statusText}`);if(m.status===200){this.isProgressiveLoading=!1;const C=await m.arrayBuffer();this.fileSize=C.byteLength,this.loadedBytes=C.byteLength;const T=C;T.fileStart=0,(r=this.mp4File)==null||r.appendBuffer(T),(h=this.mp4File)==null||h.flush(),this.fileInfo?Q(this.fileInfo):n(new Error("File loaded but no video track found"));return}if(this.isProgressiveLoading=!0,!this.fileSize){const C=m.headers.get("Content-Range");if(C){const T=C.match(/bytes \d+-\d+\/(\d+)/);T&&(this.fileSize=parseInt(T[1],10))}}const p=await m.arrayBuffer(),w=p;if(w.fileStart=0,t=p.byteLength,this.loadedBytes=t,(S=(V=this.events).onProgress)==null||S.call(V,this.loadedBytes,this.fileSize),(c=this.mp4File)==null||c.appendBuffer(w),F&&s){t<this.fileSize?this.continueLoadingInBackground(U,t,e):(W=this.mp4File)==null||W.flush(),Q(this.fileInfo);return}for(;t<this.fileSize&&(!F||!s);){const C=Math.min(t+e-1,this.fileSize-1),T=await fetch(U,{headers:{Range:`bytes=${t}-${C}`}});if(!T.ok&&T.status!==206)throw new Error(`Failed to fetch chunk: ${T.status} ${T.statusText}`);const E=await T.arrayBuffer(),G=E;if(G.fileStart=t,t+=E.byteLength,this.loadedBytes=t,(k=(N=this.events).onProgress)==null||k.call(N,this.loadedBytes,this.fileSize),(f=this.mp4File)==null||f.appendBuffer(G),F&&s){this.continueLoadingInBackground(U,t,e),Q(this.fileInfo);return}}t>=this.fileSize&&((x=this.mp4File)==null||x.flush(),this.fileInfo?Q(this.fileInfo):n(new Error("File loaded but no video track found")))}catch(m){n(m)}})()})}continueLoadingInBackground(U,e,t){(async()=>{var Q,n,s,l,a,B,r,h;let F=e;try{for(;F<this.fileSize;){const V=Math.min(F+t-1,this.fileSize-1),S=await fetch(U,{headers:{Range:`bytes=${F}-${V}`}});if(!S.ok&&S.status!==206){(n=(Q=this.events).onError)==null||n.call(Q,new Error(`Failed to fetch chunk: ${S.status}`));break}const c=await S.arrayBuffer(),W=c;W.fileStart=F,F+=c.byteLength,this.loadedBytes=F,(l=(s=this.events).onProgress)==null||l.call(s,this.loadedBytes,this.fileSize),(a=this.mp4File)==null||a.appendBuffer(W)}(B=this.mp4File)==null||B.flush()}catch(V){(h=(r=this.events).onError)==null||h.call(r,V)}})()}async loadFromFile(U){this.fileSize=U.size;const e=await U.arrayBuffer();return this.isProgressiveLoading=!1,this.loadFromArrayBuffer(e)}async loadFromStream(U){this.initMP4File(),this.isProgressiveLoading=!0;let e=0;return new Promise((t,F)=>{const Q=s=>{var a,B,r;const l=new ArrayBuffer(s.byteLength);new Uint8Array(l).set(s),l.fileStart=e,e+=l.byteLength,this.loadedBytes=e,(B=(a=this.events).onProgress)==null||B.call(a,this.loadedBytes,this.fileSize),(r=this.mp4File)==null||r.appendBuffer(l)},n=async()=>{var s;try{const{done:l,value:a}=await U.read();if(l){(s=this.mp4File)==null||s.flush(),this.fileInfo?t(this.fileInfo):F(new Error("File loaded but no video track found"));return}a&&Q(a),n()}catch(l){F(l)}};n()})}async loadFromArrayBuffer(U){return this.initMP4File(),new Promise((e,t)=>{var n,s;const F=this.mp4File.onReady;this.mp4File.onReady=l=>{F==null||F.call(this.mp4File,l),this.fileInfo?(this.requestSamples(),e(this.fileInfo)):t(new Error("No video track found in file"))};const Q=U;Q.fileStart=0,this.loadedBytes=U.byteLength,(n=this.mp4File)==null||n.appendBuffer(Q),(s=this.mp4File)==null||s.flush()})}initMP4File(){this.mp4File=dB(),this.mp4File.onReady=U=>{this.handleFileReady(U)},this.mp4File.onSamples=(U,e,t)=>{this.handleSamples(U,t)},this.mp4File.onError=(U,e)=>{var F,Q;if(e.includes("Invalid box type")||e.includes("Unknown box")){console.warn(`[MP4FileSource] Ignoring unknown box: ${e}`);return}const t=new Error(`MP4Box error in ${U}: ${e}`);(Q=(F=this.events).onError)==null||Q.call(F,t)}}handleFileReady(U){var e,t,F,Q,n,s,l,a,B,r,h,V,S,c,W,N,k,f,x,m,p,w,C,T,E,G,mn,Cn,Tn,gn;if(U.videoTracks.length>0){this.videoTrack=U.videoTracks[0],this.videoTrackId=this.videoTrack.id,this.totalVideoSamples=this.videoTrack.nb_samples;const BU=(e=this.mp4File)==null?void 0:e.getTrackById(this.videoTrackId);if(BU){const FU=(s=(n=(Q=(F=(t=BU.mdia)==null?void 0:t.minf)==null?void 0:F.stbl)==null?void 0:Q.stsd)==null?void 0:n.entries)==null?void 0:s[0];if(FU){const z=FU.avcC,X=FU.hvcC;z?this.videoDescription=this.serializeAvcC(z):X&&(this.videoDescription=this.serializeHvcC(X))}}}if(U.audioTracks.length>0){this.audioTrack=U.audioTracks[0],this.audioTrackId=this.audioTrack.id,this.totalAudioSamples=this.audioTrack.nb_samples;const BU=(l=this.mp4File)==null?void 0:l.getTrackById(this.audioTrackId);if(BU){const FU=(V=(h=(r=(B=(a=BU.mdia)==null?void 0:a.minf)==null?void 0:B.stbl)==null?void 0:r.stsd)==null?void 0:h.entries)==null?void 0:V[0];if(FU){const z=FU.esds;if(z){let X=null;if((k=(N=(W=(c=(S=z.esd)==null?void 0:S.descs)==null?void 0:c[0])==null?void 0:W.descs)==null?void 0:N[0])!=null&&k.data)X=z.esd.descs[0].descs[0].data;else if((m=(x=(f=z.esd)==null?void 0:f.descs)==null?void 0:x[0])!=null&&m.data)X=z.esd.descs[0].data;else if((p=z.esd)!=null&&p.descs)for(const tn of z.esd.descs){if(tn.tag===4&&tn.descs){for(const Fn of tn.descs)if(Fn.tag===5&&Fn.data){X=Fn.data;break}}if(X)break}X&&(this.audioDescription=X)}}}}if(!this.videoTrack){(C=(w=this.events).onError)==null||C.call(w,new Error("No video track found in file"));return}this.fileInfo={duration:this.videoTrack.duration/this.videoTrack.timescale,timescale:this.videoTrack.timescale,width:((T=this.videoTrack.video)==null?void 0:T.width)??0,height:((E=this.videoTrack.video)==null?void 0:E.height)??0,videoCodec:this.videoTrack.codec,frameRate:this.videoTrack.nb_samples/(this.videoTrack.duration/this.videoTrack.timescale),bitrate:this.videoTrack.bitrate,isMoovAtStart:((G=this.mp4File)==null?void 0:G.isProgressive)??void 0},this.audioTrack&&(this.fileInfo.audioCodec=this.audioTrack.codec,this.fileInfo.audioChannels=(mn=this.audioTrack.audio)==null?void 0:mn.channel_count,this.fileInfo.audioSampleRate=(Cn=this.audioTrack.audio)==null?void 0:Cn.sample_rate),this.requestSamples(),(gn=(Tn=this.events).onReady)==null||gn.call(Tn,this.fileInfo)}requestSamples(){var U,e,t,F,Q;this.samplesRequested||(this.samplesRequested=!0,this.videoTrackId!==null&&(this.isProgressiveLoading?(U=this.mp4File)==null||U.setExtractionOptions(this.videoTrackId,null,{nbSamples:100}):(e=this.mp4File)==null||e.setExtractionOptions(this.videoTrackId,null,{nbSamples:this.totalVideoSamples})),this.audioTrackId!==null&&(this.isProgressiveLoading?(t=this.mp4File)==null||t.setExtractionOptions(this.audioTrackId,null,{nbSamples:100}):(F=this.mp4File)==null||F.setExtractionOptions(this.audioTrackId,null,{nbSamples:this.totalAudioSamples})),(Q=this.mp4File)==null||Q.start())}handleSamples(U,e){var n,s,l,a;const t=U===this.videoTrackId;if(!(t?this.videoTrack:this.audioTrack))return;const Q=e.filter(B=>B.data!=null).map(B=>{const r=B.cts/B.timescale*1e6,h=B.duration/B.timescale*1e6;return{data:B.data,timestamp:r,duration:h,isKeyframe:B.is_sync,type:t?"video":"audio"}});if(t?(this.nextVideoSampleIndex+=e.length,this.nextVideoSampleIndex>=this.totalVideoSamples&&((s=(n=this.events).onEnded)==null||s.call(n))):this.nextAudioSampleIndex+=e.length,this.mp4File){const B=e[e.length-1];this.mp4File.releaseUsedSamples(U,B.number)}(a=(l=this.events).onSamples)==null||a.call(l,Q)}seek(U){if(!this.mp4File||!this.videoTrackId)return 0;const e=this.mp4File.seek(U,!0);return this.nextVideoSampleIndex=0,this.nextAudioSampleIndex=0,this.samplesRequested=!1,this.mp4File.stop(),this.requestSamples(),e.time}getPosition(){return{currentSample:this.nextVideoSampleIndex,totalSamples:this.totalVideoSamples,progress:this.totalVideoSamples>0?this.nextVideoSampleIndex/this.totalVideoSamples:0}}stop(){var U;(U=this.mp4File)==null||U.stop()}start(){var U;(U=this.mp4File)==null||U.start()}dispose(){var U;(U=this.mp4File)==null||U.stop(),this.mp4File=null,this.fileInfo=null,this.videoTrack=null,this.audioTrack=null,this.videoDescription=null,this.audioDescription=null,this.isProgressiveLoading=!1}serializeAvcC(U){let e=6;const t=U.SPS||[];for(const s of t)e+=2+s.data.length;e+=1;const F=U.PPS||[];for(const s of F)e+=2+s.data.length;const Q=new Uint8Array(e);let n=0;Q[n++]=U.configurationVersion||1,Q[n++]=U.AVCProfileIndication,Q[n++]=U.profile_compatibility,Q[n++]=U.AVCLevelIndication,Q[n++]=255,Q[n++]=224|t.length;for(const s of t){const l=s.data.length;Q[n++]=l>>8&255,Q[n++]=l&255,Q.set(new Uint8Array(s.data),n),n+=l}Q[n++]=F.length;for(const s of F){const l=s.data.length;Q[n++]=l>>8&255,Q[n++]=l&255,Q.set(new Uint8Array(s.data),n),n+=l}return Q}serializeHvcC(U){return U.data&&U.data instanceof Uint8Array?U.data:(console.warn("HEVC serialization not fully implemented"),new Uint8Array(0))}}const iR=`
151
+ `;class LiveAudioPlayer{constructor(o,l={}){c(this,"ctx");c(this,"decoder",null);c(this,"workletNode",null);c(this,"gainNode");c(this,"initialized",!1);c(this,"targetSampleRate");c(this,"startTime",0);c(this,"bufferDelayMs");this.ctx=o,this.targetSampleRate=o.sampleRate,this.bufferDelayMs=l.bufferDelayMs??100,this.gainNode=this.ctx.createGain(),this.startTime=performance.now()*1e3}async init(o){if(this.ctx.audioWorklet===void 0)throw new Error("AudioWorklet not supported - need localhost or HTTPS");const l=this.buildDecoderConfig(o);if(!(await AudioDecoder.isConfigSupported(l)).supported)throw new Error(`Audio codec not supported: ${l.codec}`);this.decoder=new AudioDecoder({output:e=>this.handleDecodedFrame(e),error:e=>{console.error("LiveAudioPlayer decoder error:",e)}}),this.decoder.configure(l);const r=new Blob([LIVE_WORKLET_CODE],{type:"application/javascript"}),t=URL.createObjectURL(r);try{await this.ctx.audioWorklet.addModule(t)}finally{URL.revokeObjectURL(t)}this.workletNode=new AudioWorkletNode(this.ctx,"live-audio-processor",{numberOfInputs:0,numberOfOutputs:1,outputChannelCount:[2],processorOptions:{sampleRate:this.ctx.sampleRate}}),this.workletNode.connect(this.gainNode).connect(this.ctx.destination),this.workletNode.port.postMessage({type:"setBufferTarget",targetMs:this.bufferDelayMs}),this.workletNode.port.postMessage({type:"setSampleRate",sampleRate:this.ctx.sampleRate}),this.initialized=!0}buildDecoderConfig(o){const l=(o==null?void 0:o.codecType)??CodecType.CODEC_TYPE_AUDIO_OPUS,i=(o==null?void 0:o.sampleRate)||48e3,r=(o==null?void 0:o.channels)||2;switch(l){case CodecType.CODEC_TYPE_AUDIO_OPUS:return{codec:"opus",sampleRate:48e3,numberOfChannels:r};case CodecType.CODEC_TYPE_AUDIO_AAC:return{codec:"mp4a.40.2",sampleRate:i,numberOfChannels:r};case CodecType.CODEC_TYPE_AUDIO_PCM:throw new Error("PCM audio not yet supported");default:return{codec:"opus",sampleRate:48e3,numberOfChannels:2}}}handleDecodedFrame(o){if(!this.workletNode){o.close();return}try{const l=o.numberOfFrames;let i=1;try{o.numberOfChannels>1&&(o.allocationSize({planeIndex:1,frameOffset:0,frameCount:1}),i=o.numberOfChannels)}catch{i=1}const r=new Float32Array(l),t=new Float32Array(l);if(i===1){const a=o.allocationSize({planeIndex:0,frameOffset:0,frameCount:o.numberOfFrames}),U=new ArrayBuffer(a);o.copyTo(U,{planeIndex:0,frameOffset:0,frameCount:o.numberOfFrames});const u=new Float32Array(U);if(o.numberOfChannels===1)r.set(u),t.set(u);else for(let F=0;F<l;F++)r[F]=u[F*2],t[F]=u[F*2+1]}else{const a=new ArrayBuffer(o.allocationSize({planeIndex:0,frameOffset:0,frameCount:o.numberOfFrames}));if(o.copyTo(a,{planeIndex:0,frameOffset:0,frameCount:o.numberOfFrames}),r.set(new Float32Array(a)),o.numberOfChannels>1){const U=new ArrayBuffer(o.allocationSize({planeIndex:1,frameOffset:0,frameCount:o.numberOfFrames}));o.copyTo(U,{planeIndex:1,frameOffset:0,frameCount:o.numberOfFrames}),t.set(new Float32Array(U))}else t.set(r)}const e=this.resampleAudio(r,o.sampleRate,this.targetSampleRate),n=this.resampleAudio(t,o.sampleRate,this.targetSampleRate),s=o.timestamp??performance.now()*1e3-this.startTime;this.workletNode.port.postMessage({type:"audioData",data:{left:e.buffer,right:n.buffer},timestamp:s},[e.buffer,n.buffer]),o.close()}catch(l){console.error("Error processing live audio frame:",l),o.close()}}resampleAudio(o,l,i){if(l===i)return o;const r=l/i,t=Math.floor(o.length/r),e=new Float32Array(t);for(let n=0;n<t;n++){const s=n*r,a=Math.floor(s),U=Math.min(a+1,o.length-1),u=s-a;e[n]=o[a]*(1-u)+o[U]*u}return e}decode(o,l){if(!(!this.initialized||!this.decoder||this.decoder.state!=="configured")&&!(o.length<1))try{let i;l!=null?isLong(l)?i=l.toNumber():i=Number(l):i=performance.now()*1e3-this.startTime;const r=new EncodedAudioChunk({type:"key",timestamp:Math.max(0,i),data:o});this.decoder.decode(r)}catch(i){console.error("Error decoding live audio:",i)}}setBufferDelay(o){var l;this.bufferDelayMs=o,(l=this.workletNode)==null||l.port.postMessage({type:"setBufferTarget",targetMs:o})}start(){var o;(o=this.workletNode)==null||o.port.postMessage({type:"start"}),this.ctx.resume()}stop(){var o;(o=this.workletNode)==null||o.port.postMessage({type:"stop"})}clear(){var o;(o=this.workletNode)==null||o.port.postMessage({type:"clear"}),this.resetTiming()}resetTiming(){this.startTime=performance.now()*1e3}setVolume(o){this.gainNode.gain.value=Math.max(0,Math.min(1,o))}dispose(){if(this.initialized=!1,this.decoder){try{this.decoder.state==="configured"&&this.decoder.reset(),this.decoder.state!=="closed"&&this.decoder.close()}catch{}this.decoder=null}if(this.workletNode){try{this.workletNode.disconnect()}catch{}this.workletNode=null}if(this.gainNode)try{this.gainNode.disconnect()}catch{}}}function createPlayer(d={}){return new LiveVideoPlayer(d)}const qo=class qo extends BasePlayer{constructor(l={}){super("idle",l.debugLogging??!1);c(this,"config");c(this,"streamSource",null);c(this,"trackFilter",null);c(this,"boundDataHandler",null);c(this,"decoder",null);c(this,"currentCodecData");c(this,"useWasmDecoder",!1);c(this,"waitingForKeyframe",!0);c(this,"lastWaitingForKeyframeLog",0);c(this,"lastKeyframeRequest",0);c(this,"statusLogCounter",0);c(this,"isConfiguring",!1);c(this,"pendingDuringConfig",[]);c(this,"frameScheduler");c(this,"lastVideoFrame",null);c(this,"consecutiveDrops",0);c(this,"totalDrops",0);c(this,"lastDropLogTime",0);c(this,"streamWidth",0);c(this,"streamHeight",0);c(this,"estimatedFrameRate",30);c(this,"lastVideoTimestampUs",-1);c(this,"fpsEstimateSamples",[]);c(this,"audioContext",null);c(this,"audioPlayer",null);c(this,"ownsAudioContext",!1);c(this,"audioCodecData",null);c(this,"arrivalTimes",new Map);c(this,"keyframeStatus",new Map);c(this,"videoBytesReceived",0);c(this,"audioBytesReceived",0);c(this,"lastBandwidthUpdateTime",0);c(this,"lastVideoBytesReceived",0);c(this,"lastAudioBytesReceived",0);c(this,"currentBandwidth",{videoBytesPerSecond:0,audioBytesPerSecond:0,totalBytesPerSecond:0});this.config={preferredDecoder:l.preferredDecoder??"webcodecs-sw",bufferDelayMs:l.bufferDelayMs??100,enableAudio:l.enableAudio??!0,videoTrackName:l.videoTrackName===void 0?"video":l.videoTrackName,audioTrackName:l.audioTrackName===void 0?"audio":l.audioTrackName,debugLogging:l.debugLogging??!1},this.config.enableAudio&&(this.audioContext=new AudioContext,this.ownsAudioContext=!0),this.frameScheduler=new FrameScheduler({bufferDelayMs:this.config.bufferDelayMs,logger:i=>{this.config.debugLogging&&this.logger.info(i)},onFrameDropped:(i,r)=>{if(this.totalDrops++,this.consecutiveDrops++,this.config.debugLogging){const t=Date.now();(t-this.lastDropLogTime>500||this.consecutiveDrops===1)&&(this.consecutiveDrops>1?this.logger.warn(`Dropped ${this.consecutiveDrops} frames (${r}), total=${this.totalDrops}`):this.logger.warn(`Frame dropped (${r}), total=${this.totalDrops}`),this.lastDropLogTime=t,this.consecutiveDrops=0)}i.close()}})}setDebugLogging(l){this.config.debugLogging=l,super.setDebugLogging(l)}setVolume(l){this.audioPlayer&&this.audioPlayer.setVolume(l)}getVolume(){return 1}setStreamSource(l){this.streamSource&&this.boundDataHandler&&this.streamSource.off("data",this.boundDataHandler),this.streamSource=l,this.boundDataHandler=this.handleStreamData.bind(this),this.streamSource.on("data",this.boundDataHandler),this.logger.info("Stream source connected")}setTrackFilter(l){this.trackFilter=l,this.logger.info(`Track filter set: ${l}`)}connectToMoQSession(l,i){this.setStreamSource(l),i&&this.setTrackFilter(i)}async connectToMoQRelay(l,i,r){const{createMoQSource:t}=await Promise.resolve().then(()=>moqSource),e=(r==null?void 0:r.videoTrack)??this.config.videoTrackName??"video",n=(r==null?void 0:r.audioTrack)===!1?null:(r==null?void 0:r.audioTrack)??this.config.audioTrackName??"audio",s=[{trackName:e,streamType:"video",priority:0}];n&&this.config.enableAudio&&s.push({trackName:n,streamType:"audio",priority:0}),this.logger.info(`MoQ subscriptions: ${JSON.stringify(s)}`);const a=t({relayUrl:l,namespace:i,subscriptions:s});this.setStreamSource(a),await a.connect()}play(){this._state!=="error"&&(this.setState("playing"),this.logger.info("Playback started"))}pause(){this._state==="playing"&&(this.setState("paused"),this.logger.info("Playback paused"))}getVideoFrame(l){if(this._state!=="playing")return this.config.debugLogging&&this.logger.debug(`getVideoFrame: state=${this._state}, returning lastFrame=${!!this.lastVideoFrame}`),this.lastVideoFrame;this.config.debugLogging&&(this.statusLogCounter++,this.statusLogCounter>=300&&(this.frameScheduler.logStatus(),this.statusLogCounter=0));const i=this.frameScheduler.dequeue(l);return i&&(this.consecutiveDrops=0,this.lastVideoFrame&&this.lastVideoFrame!==i&&this.lastVideoFrame.close(),this.lastVideoFrame=i),this.lastVideoFrame}setBufferDelay(l){var i;this.config.bufferDelayMs=l,this.frameScheduler.setBufferDelay(l),(i=this.audioPlayer)==null||i.setBufferDelay(l)}getBufferDelay(){return this.frameScheduler.getBufferDelay()}setPreferredDecoder(l){var e,n,s,a;const i=this.config.preferredDecoder;this.config.preferredDecoder=l,i==="wasm"!==(l==="wasm")&&this.decoder?(this.logger.info(`Decoder type changed from ${i} to ${l}, switching decoder...`),this.decoder.dispose(),this.decoder=null,this.frameScheduler.clear(),this.lastVideoFrame&&(this.lastVideoFrame.close(),this.lastVideoFrame=null),this.waitingForKeyframe=!0,this.currentCodecData=void 0,(n=(e=this.streamSource)==null?void 0:e.requestKeyframe)==null||n.call(e),this.logger.info("Keyframe requested for decoder switch")):i!==l&&this.decoder&&(this.logger.info(`Decoder preference changed from ${i} to ${l}`),this.waitingForKeyframe=!0,this.currentCodecData=void 0,this.decoder.dispose(),this.decoder=null,this.frameScheduler.clear(),(a=(s=this.streamSource)==null?void 0:s.requestKeyframe)==null||a.call(s))}flush(){var l,i,r;this.logger.info("Flushing player pipeline"),this.waitingForKeyframe=!0,(l=this.decoder)==null||l.flushSync(),this.frameScheduler.clear(),this.lastVideoFrame&&(this.lastVideoFrame.close(),this.lastVideoFrame=null),(r=(i=this.streamSource)==null?void 0:i.requestKeyframe)==null||r.call(i)}getStats(){var i;const l=this.frameScheduler.getStatus();return this.updateBandwidthStats(),{bufferSize:l.currentBufferSize,bufferMs:l.currentBufferMs,avgBufferMs:l.avgBufferMs,targetBufferMs:l.targetBufferMs,droppedFrames:l.droppedFrames,totalFrames:l.totalEnqueuedFrames,decoderState:((i=this.decoder)==null?void 0:i.state)??"none",streamWidth:this.streamWidth,streamHeight:this.streamHeight,frameRate:this.estimatedFrameRate,latency:l.latency,bandwidth:this.currentBandwidth}}updateBandwidthStats(){const l=performance.now(),i=l-this.lastBandwidthUpdateTime;if(i<500)return;const r=i/1e3,t=this.videoBytesReceived-this.lastVideoBytesReceived,e=this.audioBytesReceived-this.lastAudioBytesReceived;this.currentBandwidth={videoBytesPerSecond:t/r,audioBytesPerSecond:e/r,totalBytesPerSecond:(t+e)/r},this.lastBandwidthUpdateTime=l,this.lastVideoBytesReceived=this.videoBytesReceived,this.lastAudioBytesReceived=this.audioBytesReceived}getPacketTimingHistory(){return this.frameScheduler.getPacketTimingHistory()}on(l,i){super.on(l,i)}off(l,i){super.off(l,i)}async handleStreamData(l){var s,a,U,u,F,R,S,y,E,W,N,T,C,m,Q,p,f;const i=l.data;if(!i.valid||!i.header)return;const r=((s=i.payload)==null?void 0:s.byteLength)||0;if(i.header.type===FrameType.FRAME_TYPE_AUDIO||l.streamType==="audio"){this.audioBytesReceived+=r;const h=this.config.audioTrackName;if(h!=null&&l.trackName!==h&&l.streamType!=="audio")return;await this.handleAudioData(i);return}this.videoBytesReceived+=r;const e=this.trackFilter??this.config.videoTrackName;if(e!=null&&l.trackName!==e||l.streamType!=="video"||!((a=i.header.media)!=null&&a.codecData))return;const n=!!((U=i.header.media)!=null&&U.keyframe);if(codecDataChanged(this.currentCodecData,(u=i.header.media)==null?void 0:u.codecData)){if(!n){this.logger.debug("Waiting for keyframe (codec change)");return}this.currentCodecData=(F=i.header.media)==null?void 0:F.codecData,this.isConfiguring=!0,this.pendingDuringConfig=[i],await this.configureDecoder((R=i.header.media)==null?void 0:R.codecData),this.isConfiguring=!1,this.waitingForKeyframe=!0;const h=this.pendingDuringConfig;this.pendingDuringConfig=[],this.logger.info(`Processing ${h.length} frames queued during configuration`);for(const B of h)await this.handleStreamData({trackName:l.trackName,streamType:l.streamType,data:B});return}if(this.isConfiguring){this.logger.debug(`Queueing frame pts=${(S=i.header.media)==null?void 0:S.pts} during configuration`),this.pendingDuringConfig.push(i);return}if(!this.decoder||this.decoder.state!=="configured"){this.logger.warn(`Dropping frame pts=${(y=i.header.media)==null?void 0:y.pts}: decoder not ready (state=${((E=this.decoder)==null?void 0:E.state)??"null"})`);return}if(this.waitingForKeyframe){if(!n){this.logger.debug(`Dropping frame pts=${(W=i.header.media)==null?void 0:W.pts}: waiting for keyframe`);const h=Date.now();(!this.lastWaitingForKeyframeLog||h-this.lastWaitingForKeyframeLog>1e3)&&(this.logger.info("Waiting for keyframe to resume playback..."),this.lastWaitingForKeyframeLog=h,(!this.lastKeyframeRequest||h-this.lastKeyframeRequest>1e3)&&(this.logger.info("Requesting keyframe..."),(T=(N=this.streamSource)==null?void 0:N.requestKeyframe)==null||T.call(N),this.lastKeyframeRequest=h));return}this.logger.debug("Keyframe received, resuming decode"),this.waitingForKeyframe=!1,this.lastWaitingForKeyframeLog=0}try{const h=performance.now(),B=(m=(C=i.header.media)==null?void 0:C.codecData)!=null&&m.timebaseDen&&((p=(Q=i.header.media)==null?void 0:Q.codecData)!=null&&p.timebaseNum)?{num:i.header.media.codecData.timebaseNum,den:i.header.media.codecData.timebaseDen}:{num:1,den:1e6},J={num:1,den:1e6},V=rescaleTime(((f=i.header.media)==null?void 0:f.pts)??0,B,J);if(this.arrivalTimes.set(V,h),this.keyframeStatus.set(V,n),this.lastVideoTimestampUs>=0&&V>this.lastVideoTimestampUs){const v=V-this.lastVideoTimestampUs;if(v>5e3&&v<1e6&&(this.fpsEstimateSamples.push(v),this.fpsEstimateSamples.length>qo.FPS_SAMPLE_COUNT&&this.fpsEstimateSamples.shift(),this.fpsEstimateSamples.length>=3)){const b=this.fpsEstimateSamples.reduce((g,Z)=>g+Z,0)/this.fpsEstimateSamples.length;this.estimatedFrameRate=Math.round(1e6/b)}}if(this.lastVideoTimestampUs=V,this.arrivalTimes.size>100){const v=[...this.arrivalTimes.entries()];for(let b=0;b<v.length-100;b++)this.arrivalTimes.delete(v[b][0]),this.keyframeStatus.delete(v[b][0])}this.decoder.decodeBinary(i)}catch(h){this.logger.error(`Decode error: ${h}`)}}async handleAudioData(l){var r,t,e,n,s,a,U,u,F,R;if(!this.config.enableAudio)return;const i=this.audioCodecData??void 0;(t=(r=l.header)==null?void 0:r.media)!=null&&t.codecData&&codecDataChanged(i,l.header.media.codecData)&&(this.audioCodecData=l.header.media.codecData,this.audioPlayer&&(this.audioPlayer.dispose(),this.audioPlayer=null),this.audioContext||(this.audioContext=new AudioContext,this.ownsAudioContext=!0),this.audioPlayer=new LiveAudioPlayer(this.audioContext,{bufferDelayMs:this.config.bufferDelayMs??100}),await this.audioPlayer.init((e=l.header.media)==null?void 0:e.codecData),this.audioPlayer.start(),this.logger.info(`Audio player started: ${(s=(n=l.header.media)==null?void 0:n.codecData)==null?void 0:s.codecType}, ${(U=(a=l.header.media)==null?void 0:a.codecData)==null?void 0:U.sampleRate}Hz, ${(F=(u=l.header.media)==null?void 0:u.codecData)==null?void 0:F.channels}ch`)),this.audioPlayer&&l.payload&&l.header&&this.audioPlayer.decode(l.payload,(R=l.header.media)==null?void 0:R.pts)}async configureDecoder(l){this.useWasmDecoder=this.config.preferredDecoder==="wasm",(!this.decoder||this.useWasmDecoder&&this.decoder instanceof WebCodecsDecoder||!this.useWasmDecoder&&this.decoder instanceof WasmDecoder)&&(this.decoder&&this.decoder.dispose(),this.useWasmDecoder?(this.logger.info("Using WASM decoder"),this.decoder=new WasmDecoder({onFrameDecoded:r=>this.handleDecodedYUVFrame(r),onError:r=>this.handleDecoderError(r),onQueueOverflow:r=>this.handleQueueOverflow(r),maxQueueSize:10})):(this.logger.info(`Using WebCodecs decoder (${this.config.preferredDecoder})`),this.decoder=new WebCodecsDecoder({logger:this.logger,onFrameDecoded:r=>this.handleDecodedFrame(r),onError:r=>this.handleDecoderError(r),onQueueOverflow:r=>this.handleQueueOverflow(r),maxQueueSize:10})));const i=this.config.preferredDecoder==="webcodecs-hw";try{this.useWasmDecoder?await this.decoder.configure(l):await this.decoder.configure(l,i),this.streamWidth=l.width||0,this.streamHeight=l.height||0,this.lastVideoTimestampUs=-1,this.fpsEstimateSamples=[],this.estimatedFrameRate=30,this.emit("metadata",{width:l.width,height:l.height,codec:this.getCodecName(l.codecType||sesame.v1.common.CodecType.CODEC_TYPE_VIDEO_AVC)})}catch(r){this.logger.error(`Failed to configure decoder: ${r}`),this.setState("error"),this.emit("error",r instanceof Error?r:new Error(String(r)))}}getCodecName(l){switch(l){case sesame.v1.common.CodecType.CODEC_TYPE_VIDEO_AVC:return"H.264";case sesame.v1.common.CodecType.CODEC_TYPE_VIDEO_HEVC:return"HEVC";case sesame.v1.common.CodecType.CODEC_TYPE_VIDEO_AV1:return"AV1";default:return"Unknown"}}handleDecodedFrame(l){const i=performance.now(),r=this.arrivalTimes.get(l.timestamp)??i,t=this.keyframeStatus.get(l.timestamp)??!1,e={arrivalTime:r,decodeTime:i};this.frameScheduler.enqueue(l,l.timestamp,e,t),this.emit("frame",l)}handleDecodedYUVFrame(l){const i=performance.now(),r=this.arrivalTimes.get(l.timestamp)??i,t=this.keyframeStatus.get(l.timestamp)??!1,e=this.convertYUVToVideoFrame(l,this.streamWidth,this.streamHeight);if(e){const n={arrivalTime:r,decodeTime:i};this.frameScheduler.enqueue(e,l.timestamp,n,t),this.emit("frame",e)}}convertYUVToVideoFrame(l,i,r){try{const{y:t,u:e,v:n,width:s,height:a,chromaStride:U,chromaHeight:u}=l,F=i>0?i:s,R=r>0?r:a,y=s*a,E=U*u,W=y+E*2,N=new Uint8Array(W);N.set(t.subarray(0,y),0);const T=s/2,C=y;if(U===T)N.set(e.subarray(0,E),C);else for(let Q=0;Q<u;Q++)N.set(e.subarray(Q*U,Q*U+T),C+Q*T);const m=C+T*u;if(U===T)N.set(n.subarray(0,E),m);else for(let Q=0;Q<u;Q++)N.set(n.subarray(Q*U,Q*U+T),m+Q*T);return new VideoFrame(N,{format:"I420",codedWidth:s,codedHeight:a,visibleRect:{x:0,y:0,width:F,height:R},timestamp:l.timestamp,duration:this.estimatedFrameRate>0?1e6/this.estimatedFrameRate:33333})}catch(t){return this.logger.error(`YUV conversion error: ${t}`),null}}handleDecoderError(l){this.logger.error(`Decoder error: ${l.message}`),this.emit("error",l)}handleQueueOverflow(l){this.logger.warn(`Decoder queue overflow: ${l} frames, flushing...`),this.flush()}dispose(){this.streamSource&&this.boundDataHandler&&this.streamSource.off("data",this.boundDataHandler),this.streamSource=null,this.boundDataHandler=null,this.decoder&&(this.decoder.dispose(),this.decoder=null),this.audioPlayer&&(this.audioPlayer.dispose(),this.audioPlayer=null),this.ownsAudioContext&&this.audioContext&&this.audioContext.close(),this.audioContext=null,this.audioCodecData=null,this.frameScheduler.clear(),this.lastVideoFrame&&(this.lastVideoFrame.close(),this.lastVideoFrame=null),this.arrivalTimes.clear(),this.currentCodecData=void 0,this.waitingForKeyframe=!0,this.totalDrops=0,this.consecutiveDrops=0,this.clearEventHandlers(),this.setState("idle"),this.logger.info("Player disposed")}};c(qo,"FPS_SAMPLE_COUNT",10);let LiveVideoPlayer=qo;var __defProp=Object.defineProperty,__export=(d,o)=>{for(var l in o)__defProp(d,l,{get:o[l],enumerable:!0})},MAX_SIZE=Math.pow(2,32),MAX_UINT32=Math.pow(2,32)-1,TKHD_FLAG_ENABLED=1,TKHD_FLAG_IN_MOVIE=2,TKHD_FLAG_IN_PREVIEW=4,TFHD_FLAG_BASE_DATA_OFFSET=1,TFHD_FLAG_SAMPLE_DESC=2,TFHD_FLAG_SAMPLE_DUR=8,TFHD_FLAG_SAMPLE_SIZE=16,TFHD_FLAG_SAMPLE_FLAGS=32,TFHD_FLAG_DEFAULT_BASE_IS_MOOF=131072,TRUN_FLAGS_DATA_OFFSET=1,TRUN_FLAGS_FIRST_FLAG=4,TRUN_FLAGS_DURATION=256,TRUN_FLAGS_SIZE=512,TRUN_FLAGS_FLAGS=1024,TRUN_FLAGS_CTS_OFFSET=2048,ERR_INVALID_DATA=-1,ERR_NOT_ENOUGH_DATA=0,OK=1,MP4BoxBuffer=class ur extends ArrayBuffer{constructor(o){super(o),this.fileStart=0,this.usedBytes=0}static fromArrayBuffer(o,l){const i=new ur(o.byteLength);return new Uint8Array(i).set(new Uint8Array(o)),i.fileStart=l,i}},P,sr,k,DataStream=(k=class{constructor(o,l,i){rr(this,P);this._byteLength=0,this.failurePosition=0,this._dynamicSize=1,this._byteOffset=l||0,o instanceof ArrayBuffer?this.buffer=MP4BoxBuffer.fromArrayBuffer(o,0):o instanceof DataView?(this.dataView=o,l&&(this._byteOffset+=l)):this.buffer=new MP4BoxBuffer(o||0),this.position=0,this.endianness=i||1}getPosition(){return this.position}_realloc(o){if(!this._dynamicSize)return;const l=this._byteOffset+this.position+o;let i=this._buffer.byteLength;if(l<=i){l>this._byteLength&&(this._byteLength=l);return}for(i<1&&(i=1);l>i;)i*=2;const r=new MP4BoxBuffer(i),t=new Uint8Array(this._buffer);new Uint8Array(r,0,t.length).set(t),this.buffer=r,this._byteLength=l}_trimAlloc(){if(this._byteLength===this._buffer.byteLength)return;const o=new MP4BoxBuffer(this._byteLength),l=new Uint8Array(o),i=new Uint8Array(this._buffer,0,l.length);l.set(i),this.buffer=o}get byteLength(){return this._byteLength-this._byteOffset}get buffer(){return this._trimAlloc(),this._buffer}set buffer(o){this._buffer=o,this._dataView=new DataView(o,this._byteOffset),this._byteLength=o.byteLength}get byteOffset(){return this._byteOffset}set byteOffset(o){this._byteOffset=o,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}get dataView(){return this._dataView}set dataView(o){this._byteOffset=o.byteOffset,this._buffer=MP4BoxBuffer.fromArrayBuffer(o.buffer,0),this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._byteOffset+o.byteLength}seek(o){const l=Math.max(0,Math.min(this.byteLength,o));this.position=isNaN(l)||!isFinite(l)?0:l}isEof(){return this.position>=this._byteLength}mapUint8Array(o){this._realloc(o*1);const l=new Uint8Array(this._buffer,this.byteOffset+this.position,o);return this.position+=o*1,l}readInt32Array(o,l){o=o===void 0?this.byteLength-this.position/4:o;const i=new Int32Array(o);return k.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,o*i.BYTES_PER_ELEMENT),k.arrayToNative(i,l??this.endianness),this.position+=i.byteLength,i}readInt16Array(o,l){o=o===void 0?this.byteLength-this.position/2:o;const i=new Int16Array(o);return k.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,o*i.BYTES_PER_ELEMENT),k.arrayToNative(i,l??this.endianness),this.position+=i.byteLength,i}readInt8Array(o){o=o===void 0?this.byteLength-this.position:o;const l=new Int8Array(o);return k.memcpy(l.buffer,0,this.buffer,this.byteOffset+this.position,o*l.BYTES_PER_ELEMENT),this.position+=l.byteLength,l}readUint32Array(o,l){o=o===void 0?this.byteLength-this.position/4:o;const i=new Uint32Array(o);return k.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,o*i.BYTES_PER_ELEMENT),k.arrayToNative(i,l??this.endianness),this.position+=i.byteLength,i}readUint16Array(o,l){o=o===void 0?this.byteLength-this.position/2:o;const i=new Uint16Array(o);return k.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,o*i.BYTES_PER_ELEMENT),k.arrayToNative(i,l??this.endianness),this.position+=i.byteLength,i}readUint8Array(o){o=o===void 0?this.byteLength-this.position:o;const l=new Uint8Array(o);return k.memcpy(l.buffer,0,this.buffer,this.byteOffset+this.position,o*l.BYTES_PER_ELEMENT),this.position+=l.byteLength,l}readFloat64Array(o,l){o=o===void 0?this.byteLength-this.position/8:o;const i=new Float64Array(o);return k.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,o*i.BYTES_PER_ELEMENT),k.arrayToNative(i,l??this.endianness),this.position+=i.byteLength,i}readFloat32Array(o,l){o=o===void 0?this.byteLength-this.position/4:o;const i=new Float32Array(o);return k.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,o*i.BYTES_PER_ELEMENT),k.arrayToNative(i,l??this.endianness),this.position+=i.byteLength,i}readInt32(o){const l=this._dataView.getInt32(this.position,(o??this.endianness)===2);return this.position+=4,l}readInt16(o){const l=this._dataView.getInt16(this.position,(o??this.endianness)===2);return this.position+=2,l}readInt8(){const o=this._dataView.getInt8(this.position);return this.position+=1,o}readUint32(o){const l=this._dataView.getUint32(this.position,(o??this.endianness)===2);return this.position+=4,l}readUint16(o){const l=this._dataView.getUint16(this.position,(o??this.endianness)===2);return this.position+=2,l}readUint8(){const o=this._dataView.getUint8(this.position);return this.position+=1,o}readFloat32(o){const l=this._dataView.getFloat32(this.position,(o??this.endianness)===2);return this.position+=4,l}readFloat64(o){const l=this._dataView.getFloat64(this.position,(o??this.endianness)===2);return this.position+=8,l}static memcpy(o,l,i,r,t){const e=new Uint8Array(o,l,t),n=new Uint8Array(i,r,t);e.set(n)}static arrayToNative(o,l){return l===k.ENDIANNESS?o:this.flipArrayEndianness(o)}static nativeToEndian(o,l){return l&&k.ENDIANNESS===2?o:this.flipArrayEndianness(o)}static flipArrayEndianness(o){const l=new Uint8Array(o.buffer,o.byteOffset,o.byteLength);for(let i=0;i<o.byteLength;i+=o.BYTES_PER_ELEMENT)for(let r=i+o.BYTES_PER_ELEMENT-1,t=i;r>t;r--,t++){const e=l[t];l[t]=l[r],l[r]=e}return o}readString(o,l){return l===void 0||l==="ASCII"?fromCharCodeUint8(this.mapUint8Array(o===void 0?this.byteLength-this.position:o)):new TextDecoder(l).decode(this.mapUint8Array(o))}readCString(o){let l=0;const i=this.byteLength-this.position,r=new Uint8Array(this._buffer,this._byteOffset+this.position),t=o!==void 0?Math.min(o,i):i;for(;l<t&&r[l]!==0;l++);const e=fromCharCodeUint8(this.mapUint8Array(l));return o!==void 0?this.position+=t-l:l!==i&&(this.position+=1),e}readInt64(){return this.readInt32()*MAX_SIZE+this.readUint32()}readUint64(){return this.readUint32()*MAX_SIZE+this.readUint32()}readUint24(){return(this.readUint8()<<16)+(this.readUint8()<<8)+this.readUint8()}save(o){const l=new Blob([this.buffer]);if(typeof window<"u"&&typeof document<"u")if(window.URL&&URL.createObjectURL){const i=window.URL.createObjectURL(l),r=document.createElement("a");document.body.appendChild(r),r.setAttribute("href",i),r.setAttribute("download",o),r.setAttribute("target","_self"),r.click(),window.URL.revokeObjectURL(i),document.body.removeChild(r)}else throw new Error("DataStream.save: Can't create object URL.");return l}get dynamicSize(){return this._dynamicSize}set dynamicSize(o){o||this._trimAlloc(),this._dynamicSize=o}shift(o){const l=new MP4BoxBuffer(this._byteLength-o),i=new Uint8Array(l),r=new Uint8Array(this._buffer,o,i.length);i.set(r),this.buffer=l,this.position-=o}writeInt32Array(o,l){if(this._realloc(o.length*4),o instanceof Int32Array&&this.byteOffset+this.position%o.BYTES_PER_ELEMENT===0)k.memcpy(this._buffer,this.byteOffset+this.position,o.buffer,0,o.byteLength),this.mapInt32Array(o.length,l);else for(let i=0;i<o.length;i++)this.writeInt32(o[i],l)}writeInt16Array(o,l){if(this._realloc(o.length*2),o instanceof Int16Array&&this.byteOffset+this.position%o.BYTES_PER_ELEMENT===0)k.memcpy(this._buffer,this.byteOffset+this.position,o.buffer,0,o.byteLength),this.mapInt16Array(o.length,l);else for(let i=0;i<o.length;i++)this.writeInt16(o[i],l)}writeInt8Array(o){if(this._realloc(o.length*1),o instanceof Int8Array&&this.byteOffset+this.position%o.BYTES_PER_ELEMENT===0)k.memcpy(this._buffer,this.byteOffset+this.position,o.buffer,0,o.byteLength),this.mapInt8Array(o.length);else for(let l=0;l<o.length;l++)this.writeInt8(o[l])}writeUint32Array(o,l){if(this._realloc(o.length*4),o instanceof Uint32Array&&this.byteOffset+this.position%o.BYTES_PER_ELEMENT===0)k.memcpy(this._buffer,this.byteOffset+this.position,o.buffer,0,o.byteLength),this.mapUint32Array(o.length,l);else for(let i=0;i<o.length;i++)this.writeUint32(o[i],l)}writeUint16Array(o,l){if(this._realloc(o.length*2),o instanceof Uint16Array&&this.byteOffset+this.position%o.BYTES_PER_ELEMENT===0)k.memcpy(this._buffer,this.byteOffset+this.position,o.buffer,0,o.byteLength),this.mapUint16Array(o.length,l);else for(let i=0;i<o.length;i++)this.writeUint16(o[i],l)}writeUint8Array(o){if(this._realloc(o.length*1),o instanceof Uint8Array&&this.byteOffset+this.position%o.BYTES_PER_ELEMENT===0)k.memcpy(this._buffer,this.byteOffset+this.position,o.buffer,0,o.byteLength),this.mapUint8Array(o.length);else for(let l=0;l<o.length;l++)this.writeUint8(o[l])}writeFloat64Array(o,l){if(this._realloc(o.length*8),o instanceof Float64Array&&this.byteOffset+this.position%o.BYTES_PER_ELEMENT===0)k.memcpy(this._buffer,this.byteOffset+this.position,o.buffer,0,o.byteLength),this.mapFloat64Array(o.length,l);else for(let i=0;i<o.length;i++)this.writeFloat64(o[i],l)}writeFloat32Array(o,l){if(this._realloc(o.length*4),o instanceof Float32Array&&this.byteOffset+this.position%o.BYTES_PER_ELEMENT===0)k.memcpy(this._buffer,this.byteOffset+this.position,o.buffer,0,o.byteLength),this.mapFloat32Array(o.length,l);else for(let i=0;i<o.length;i++)this.writeFloat32(o[i],l)}writeInt64(o,l){this._realloc(8),this._dataView.setBigInt64(this.position,BigInt(o),(l??this.endianness)===2),this.position+=8}writeInt32(o,l){this._realloc(4),this._dataView.setInt32(this.position,o,(l??this.endianness)===2),this.position+=4}writeInt16(o,l){this._realloc(2),this._dataView.setInt16(this.position,o,(l??this.endianness)===2),this.position+=2}writeInt8(o){this._realloc(1),this._dataView.setInt8(this.position,o),this.position+=1}writeUint32(o,l){this._realloc(4),this._dataView.setUint32(this.position,o,(l??this.endianness)===2),this.position+=4}writeUint16(o,l){this._realloc(2),this._dataView.setUint16(this.position,o,(l??this.endianness)===2),this.position+=2}writeUint8(o){this._realloc(1),this._dataView.setUint8(this.position,o),this.position+=1}writeFloat32(o,l){this._realloc(4),this._dataView.setFloat32(this.position,o,(l??this.endianness)===2),this.position+=4}writeFloat64(o,l){this._realloc(8),this._dataView.setFloat64(this.position,o,(l??this.endianness)===2),this.position+=8}writeUCS2String(o,l,i){i===void 0&&(i=o.length);let r;for(r=0;r<o.length&&r<i;r++)this.writeUint16(o.charCodeAt(r),l);for(;r<i;r++)this.writeUint16(0)}writeString(o,l,i){let r=0;if(l===void 0||l==="ASCII")if(i!==void 0){const t=Math.min(o.length,i);for(r=0;r<t;r++)this.writeUint8(o.charCodeAt(r));for(;r<i;r++)this.writeUint8(0)}else for(r=0;r<o.length;r++)this.writeUint8(o.charCodeAt(r));else this.writeUint8Array(new TextEncoder(l).encode(o.substring(0,i)))}writeCString(o,l){let i=0;if(l!==void 0){const r=Math.min(o.length,l);for(i=0;i<r;i++)this.writeUint8(o.charCodeAt(i));for(;i<l;i++)this.writeUint8(0)}else{for(i=0;i<o.length;i++)this.writeUint8(o.charCodeAt(i));this.writeUint8(0)}}writeStruct(o,l){for(let i=0;i<o.length;i++){const[r,t]=o[i],e=l[r];this.writeType(t,e,l)}}writeType(o,l,i){if(typeof o=="function")return o(this,l);if(typeof o=="object"&&!(o instanceof Array))return o.set(this,l,i);let r,t="ASCII";const e=this.position;let n=o;if(typeof o=="string"&&/:/.test(o)){const s=o.split(":");n=s[0],r=parseInt(s[1])}if(typeof n=="string"&&/,/.test(n)){const s=n.split(",");n=s[0],t=s[1]}switch(n){case"uint8":this.writeUint8(l);break;case"int8":this.writeInt8(l);break;case"uint16":this.writeUint16(l,this.endianness);break;case"int16":this.writeInt16(l,this.endianness);break;case"uint32":this.writeUint32(l,this.endianness);break;case"int32":this.writeInt32(l,this.endianness);break;case"float32":this.writeFloat32(l,this.endianness);break;case"float64":this.writeFloat64(l,this.endianness);break;case"uint16be":this.writeUint16(l,1);break;case"int16be":this.writeInt16(l,1);break;case"uint32be":this.writeUint32(l,1);break;case"int32be":this.writeInt32(l,1);break;case"float32be":this.writeFloat32(l,1);break;case"float64be":this.writeFloat64(l,1);break;case"uint16le":this.writeUint16(l,2);break;case"int16le":this.writeInt16(l,2);break;case"uint32le":this.writeUint32(l,2);break;case"int32le":this.writeInt32(l,2);break;case"float32le":this.writeFloat32(l,2);break;case"float64le":this.writeFloat64(l,2);break;case"cstring":this.writeCString(l,r);break;case"string":this.writeString(l,t,r);break;case"u16string":this.writeUCS2String(l,this.endianness,r);break;case"u16stringle":this.writeUCS2String(l,2,r);break;case"u16stringbe":this.writeUCS2String(l,1,r);break;default:if(lr(this,P,sr).call(this,n)){const[,s]=n;for(let a=0;a<l.length;a++)this.writeType(s,l[a]);break}else{this.writeStruct(n,l);break}}r&&(this.position=e,this._realloc(r),this.position=e+r)}writeUint64(o){const l=Math.floor(o/MAX_SIZE);this.writeUint32(l),this.writeUint32(o&4294967295)}writeUint24(o){this.writeUint8((o&16711680)>>16),this.writeUint8((o&65280)>>8),this.writeUint8(o&255)}adjustUint32(o,l){const i=this.position;this.seek(o),this.writeUint32(l),this.seek(i)}readStruct(o){const l={},i=this.position;for(let r=0;r<o.length;r+=1){const t=o[r][1],e=this.readType(t,l);if(!e){this.failurePosition===0&&(this.failurePosition=this.position),this.position=i;return}l[o[r][0]]=e}return l}readUCS2String(o,l){return String.fromCharCode.apply(void 0,this.readUint16Array(o,l))}readType(o,l){if(typeof o=="function")return o(this,l);if(typeof o=="object"&&!(o instanceof Array))return o.get(this,l);if(o instanceof Array&&o.length!==3)return this.readStruct(o);let i,r,t="ASCII";const e=this.position;let n=o;if(typeof n=="string"&&/:/.test(n)){const s=n.split(":");n=s[0],r=parseInt(s[1])}if(typeof n=="string"&&/,/.test(n)){const s=n.split(",");n=s[0],t=s[1]}switch(n){case"uint8":i=this.readUint8();break;case"int8":i=this.readInt8();break;case"uint16":i=this.readUint16(this.endianness);break;case"int16":i=this.readInt16(this.endianness);break;case"uint32":i=this.readUint32(this.endianness);break;case"int32":i=this.readInt32(this.endianness);break;case"float32":i=this.readFloat32(this.endianness);break;case"float64":i=this.readFloat64(this.endianness);break;case"uint16be":i=this.readUint16(1);break;case"int16be":i=this.readInt16(1);break;case"uint32be":i=this.readUint32(1);break;case"int32be":i=this.readInt32(1);break;case"float32be":i=this.readFloat32(1);break;case"float64be":i=this.readFloat64(1);break;case"uint16le":i=this.readUint16(2);break;case"int16le":i=this.readInt16(2);break;case"uint32le":i=this.readUint32(2);break;case"int32le":i=this.readInt32(2);break;case"float32le":i=this.readFloat32(2);break;case"float64le":i=this.readFloat64(2);break;case"cstring":i=this.readCString(r);break;case"string":i=this.readString(r,t);break;case"u16string":i=this.readUCS2String(r,this.endianness);break;case"u16stringle":i=this.readUCS2String(r,2);break;case"u16stringbe":i=this.readUCS2String(r,1);break;default:if(lr(this,P,sr).call(this,n)){const[,s,a]=n,U=typeof a=="function"?a(l,this,n):typeof a=="string"&&l[a]!==void 0?parseInt(l[a]):typeof a=="number"?a:a==="*"?void 0:parseInt(a);if(typeof s=="string"){const u=s.replace(/(le|be)$/,"");let F;switch(/le$/.test(s)?F=2:/be$/.test(s)&&(F=1),u){case"uint8":i=this.readUint8Array(U);break;case"uint16":i=this.readUint16Array(U,F);break;case"uint32":i=this.readUint32Array(U,F);break;case"int8":i=this.readInt8Array(U);break;case"int16":i=this.readInt16Array(U,F);break;case"int32":i=this.readInt32Array(U,F);break;case"float32":i=this.readFloat32Array(U,F);break;case"float64":i=this.readFloat64Array(U,F);break;case"cstring":case"utf16string":case"string":if(U){i=new Array(U);for(let R=0;R<U;R++)i[R]=this.readType(s,l)}else for(i=[];!this.isEof();){const R=this.readType(s,l);if(!R)break;i.push(R)}break}}else if(U){i=new Array(U);for(let u=0;u<U;u++){const F=this.readType(s,l);if(!F)return;i[u]=F}}else for(i=[];;){const u=this.position;try{const F=this.readType(s,l);if(!F){this.position=u;break}i.push(F)}catch{this.position=u;break}}break}}return r&&(this.position=e+r),i}mapInt32Array(o,l){this._realloc(o*4);const i=new Int32Array(this._buffer,this.byteOffset+this.position,o);return k.arrayToNative(i,l??this.endianness),this.position+=o*4,i}mapInt16Array(o,l){this._realloc(o*2);const i=new Int16Array(this._buffer,this.byteOffset+this.position,o);return k.arrayToNative(i,l??this.endianness),this.position+=o*2,i}mapInt8Array(o,l){this._realloc(o*1);const i=new Int8Array(this._buffer,this.byteOffset+this.position,o);return this.position+=o*1,i}mapUint32Array(o,l){this._realloc(o*4);const i=new Uint32Array(this._buffer,this.byteOffset+this.position,o);return k.arrayToNative(i,l??this.endianness),this.position+=o*4,i}mapUint16Array(o,l){this._realloc(o*2);const i=new Uint16Array(this._buffer,this.byteOffset+this.position,o);return k.arrayToNative(i,l??this.endianness),this.position+=o*2,i}mapFloat64Array(o,l){this._realloc(o*8);const i=new Float64Array(this._buffer,this.byteOffset+this.position,o);return k.arrayToNative(i,l??this.endianness),this.position+=o*8,i}mapFloat32Array(o,l){this._realloc(o*4);const i=new Float32Array(this._buffer,this.byteOffset+this.position,o);return k.arrayToNative(i,l??this.endianness),this.position+=o*4,i}},P=new WeakSet,sr=function(o){return Array.isArray(o)&&o.length===3&&o[0]==="[]"},k.ENDIANNESS=new Int8Array(new Int16Array([1]).buffer)[0]>0?2:1,k);function fromCharCodeUint8(d){const o=[];for(let l=0;l<d.length;l++)o[l]=d[l];return String.fromCharCode.apply(void 0,o)}var start=new Date,LOG_LEVEL_ERROR=4,LOG_LEVEL_WARNING=3,LOG_LEVEL_INFO=2,LOG_LEVEL_DEBUG=1,log_level=LOG_LEVEL_ERROR,Log={setLogLevel(d){d===this.debug?log_level=LOG_LEVEL_DEBUG:d===this.info?log_level=LOG_LEVEL_INFO:d===this.warn?log_level=LOG_LEVEL_WARNING:(this.error,log_level=LOG_LEVEL_ERROR)},debug(d,o){console.debug===void 0&&(console.debug=console.log),LOG_LEVEL_DEBUG>=log_level&&console.debug("["+Log.getDurationString(new Date().getTime()-start.getTime(),1e3)+"]","["+d+"]",o)},log(d,o){this.debug(d.msg)},info(d,o){LOG_LEVEL_INFO>=log_level&&console.info("["+Log.getDurationString(new Date().getTime()-start.getTime(),1e3)+"]","["+d+"]",o)},warn(d,o){LOG_LEVEL_WARNING>=log_level&&console.warn("["+Log.getDurationString(new Date().getTime()-start.getTime(),1e3)+"]","["+d+"]",o)},error(d,o,l){l!=null&&l.onError?l.onError(d,o):LOG_LEVEL_ERROR>=log_level&&console.error("["+Log.getDurationString(new Date().getTime()-start.getTime(),1e3)+"]","["+d+"]",o)},getDurationString(d,o){let l;function i(a,U){const F=(""+a).split(".");for(;F[0].length<U;)F[0]="0"+F[0];return F.join(".")}d<0?(l=!0,d=-d):l=!1;let t=d/(o||1);const e=Math.floor(t/3600);t-=e*3600;const n=Math.floor(t/60);t-=n*60;let s=t*1e3;return t=Math.floor(t),s-=t*1e3,s=Math.floor(s),(l?"-":"")+e+":"+i(n,2)+":"+i(t,2)+"."+i(s,3)},printRanges(d){const o=d.length;if(o>0){let l="";for(let i=0;i<o;i++)i>0&&(l+=","),l+="["+Log.getDurationString(d.start(i))+","+Log.getDurationString(d.end(i))+"]";return l}else return"(empty)"}};function concatBuffers(d,o){Log.debug("ArrayBuffer","Trying to create a new buffer of size: "+(d.byteLength+o.byteLength));const l=new Uint8Array(d.byteLength+o.byteLength);return l.set(new Uint8Array(d),0),l.set(new Uint8Array(o),d.byteLength),l.buffer}var MultiBufferStream=class extends DataStream{constructor(d){super(new ArrayBuffer,0),this.buffers=[],this.bufferIndex=-1,d&&(this.insertBuffer(d),this.bufferIndex=0)}initialized(){if(this.bufferIndex>-1)return!0;if(this.buffers.length>0){const d=this.buffers[0];return d.fileStart===0?(this.buffer=d,this.bufferIndex=0,Log.debug("MultiBufferStream","Stream ready for parsing"),!0):(Log.warn("MultiBufferStream","The first buffer should have a fileStart of 0"),this.logBufferLevel(),!1)}else return Log.warn("MultiBufferStream","No buffer to start parsing from"),this.logBufferLevel(),!1}reduceBuffer(d,o,l){const i=new Uint8Array(l);return i.set(new Uint8Array(d,o,l)),i.buffer.fileStart=d.fileStart+o,i.buffer.usedBytes=0,i.buffer}insertBuffer(d){let o=!0,l=0;for(;l<this.buffers.length;l++){const i=this.buffers[l];if(d.fileStart<=i.fileStart){if(d.fileStart===i.fileStart)if(d.byteLength>i.byteLength){this.buffers.splice(l,1),l--;continue}else Log.warn("MultiBufferStream","Buffer (fileStart: "+d.fileStart+" - Length: "+d.byteLength+") already appended, ignoring");else d.fileStart+d.byteLength<=i.fileStart||(d=this.reduceBuffer(d,0,i.fileStart-d.fileStart)),Log.debug("MultiBufferStream","Appending new buffer (fileStart: "+d.fileStart+" - Length: "+d.byteLength+")"),this.buffers.splice(l,0,d),l===0&&(this.buffer=d);o=!1;break}else if(d.fileStart<i.fileStart+i.byteLength){const r=i.fileStart+i.byteLength-d.fileStart,t=d.byteLength-r;if(t>0)d=this.reduceBuffer(d,r,t);else{o=!1;break}}}o&&(Log.debug("MultiBufferStream","Appending new buffer (fileStart: "+d.fileStart+" - Length: "+d.byteLength+")"),this.buffers.push(d),l===0&&(this.buffer=d))}logBufferLevel(d){const o=[];let l="",i,r=0,t=0;for(let n=0;n<this.buffers.length;n++){const s=this.buffers[n];n===0?(i={start:s.fileStart,end:s.fileStart+s.byteLength},o.push(i),l+="["+i.start+"-"):i.end===s.fileStart?i.end=s.fileStart+s.byteLength:(i={start:s.fileStart,end:s.fileStart+s.byteLength},l+=o[o.length-1].end-1+"], ["+i.start+"-",o.push(i)),r+=s.usedBytes,t+=s.byteLength}o.length>0&&(l+=i.end-1+"]");const e=d?Log.info:Log.debug;this.buffers.length===0?e("MultiBufferStream","No more buffer in memory"):e("MultiBufferStream",""+this.buffers.length+" stored buffer(s) ("+r+"/"+t+" bytes), continuous ranges: "+l)}cleanBuffers(){for(let d=0;d<this.buffers.length;d++){const o=this.buffers[d];o.usedBytes===o.byteLength&&(Log.debug("MultiBufferStream","Removing buffer #"+d),this.buffers.splice(d,1),d--)}}mergeNextBuffer(){if(this.bufferIndex+1<this.buffers.length){const d=this.buffers[this.bufferIndex+1];if(d.fileStart===this.buffer.fileStart+this.buffer.byteLength){const o=this.buffer.byteLength,l=this.buffer.usedBytes,i=this.buffer.fileStart;return this.buffers[this.bufferIndex]=concatBuffers(this.buffer,d),this.buffer=this.buffers[this.bufferIndex],this.buffers.splice(this.bufferIndex+1,1),this.buffer.usedBytes=l,this.buffer.fileStart=i,Log.debug("ISOFile","Concatenating buffer for box parsing (length: "+o+"->"+this.buffer.byteLength+")"),!0}else return!1}else return!1}findPosition(d,o,l){let i=-1,r=d===!0?0:this.bufferIndex;for(;r<this.buffers.length;){const e=this.buffers[r];if(e&&e.fileStart<=o)i=r,l&&(e.fileStart+e.byteLength<=o?e.usedBytes=e.byteLength:e.usedBytes=o-e.fileStart,this.logBufferLevel());else break;r++}if(i===-1)return-1;const t=this.buffers[i];return t.fileStart+t.byteLength>=o?(Log.debug("MultiBufferStream","Found position in existing buffer #"+i),i):-1}findEndContiguousBuf(d){const o=d!==void 0?d:this.bufferIndex;let l=this.buffers[o];if(this.buffers.length>o+1)for(let i=o+1;i<this.buffers.length;i++){const r=this.buffers[i];if(r.fileStart===l.fileStart+l.byteLength)l=r;else break}return l.fileStart+l.byteLength}getEndFilePositionAfter(d){const o=this.findPosition(!0,d,!1);return o!==-1?this.findEndContiguousBuf(o):d}addUsedBytes(d){this.buffer.usedBytes+=d,this.logBufferLevel()}setAllUsedBytes(){this.buffer.usedBytes=this.buffer.byteLength,this.logBufferLevel()}seek(d,o,l){const i=this.findPosition(o,d,l);return i!==-1?(this.buffer=this.buffers[i],this.bufferIndex=i,this.position=d-this.buffer.fileStart,Log.debug("MultiBufferStream","Repositioning parser at buffer position: "+this.position),!0):(Log.debug("MultiBufferStream","Position "+d+" not found in buffered data"),!1)}getPosition(){return this.bufferIndex===-1||this.buffers[this.bufferIndex]===void 0?0:this.buffers[this.bufferIndex].fileStart+this.position}getLength(){return this.byteLength}getEndPosition(){return this.bufferIndex===-1||this.buffers[this.bufferIndex]===void 0?0:this.buffers[this.bufferIndex].fileStart+this.byteLength}getAbsoluteEndPosition(){if(this.buffers.length===0)return 0;const d=this.buffers[this.buffers.length-1];return d.fileStart+d.byteLength}},$,L,Box=(L=class{constructor(o=0){rr(this,$,void 0);this.size=o}get type(){return this.constructor.fourcc??dr(this,$)}set type(o){Ur(this,$,o)}addBox(o){return this.boxes||(this.boxes=[]),this.boxes.push(o),this[o.type+"s"]?this[o.type+"s"].push(o):this[o.type]=o,o}set(o,l){return this[o]=l,this}addEntry(o,l){const i=l||"entries";return this[i]||(this[i]=[]),this[i].push(o),this}writeHeader(o,l){if(this.size+=8,(this.size>MAX_UINT32||this.original_size===1)&&(this.size+=8),this.type==="uuid"&&(this.size+=16),Log.debug("BoxWriter","Writing box "+this.type+" of size: "+this.size+" at position "+o.getPosition()+(l||"")),this.original_size===0?o.writeUint32(0):this.size>MAX_UINT32||this.original_size===1?o.writeUint32(1):(this.sizePosition=o.getPosition(),o.writeUint32(this.size)),o.writeString(this.type,void 0,4),this.type==="uuid"){const i=new Uint8Array(16);for(let r=0;r<16;r++)i[r]=parseInt(this.uuid.substring(r*2,r*2+2),16);o.writeUint8Array(i)}(this.size>MAX_UINT32||this.original_size===1)&&(this.sizePosition=o.getPosition(),o.writeUint64(this.size))}write(o){if(this.type==="mdat"){const l=this;if(l.stream){this.size=l.stream.getAbsoluteEndPosition(),this.writeHeader(o);for(const i of l.stream.buffers){const r=new Uint8Array(i);o.writeUint8Array(r)}}else l.data&&(this.size=l.data.length,this.writeHeader(o),o.writeUint8Array(l.data))}else this.size=this.data?this.data.length:0,this.writeHeader(o),this.data&&o.writeUint8Array(this.data)}printHeader(o){this.size+=8,this.size>MAX_UINT32&&(this.size+=8),this.type==="uuid"&&(this.size+=16),o.log(o.indent+"size:"+this.size),o.log(o.indent+"type:"+this.type)}print(o){this.printHeader(o)}parse(o){this.type!=="mdat"?this.data=o.readUint8Array(this.size-this.hdr_size):this.size===0?o.seek(o.getEndPosition()):o.seek(this.start+this.size)}parseDataAndRewind(o){this.data=o.readUint8Array(this.size-this.hdr_size),o.seek(this.start+this.hdr_size)}parseLanguage(o){this.language=o.readUint16();const l=[];l[0]=this.language>>10&31,l[1]=this.language>>5&31,l[2]=this.language&31,this.languageString=String.fromCharCode(l[0]+96,l[1]+96,l[2]+96)}computeSize(o){const l=o||new MultiBufferStream;this.write(l)}isEndOfBox(o){const l=o.getPosition(),i=this.start+this.size;return l===i}},$=new WeakMap,L.registryId=Symbol.for("BoxIdentifier"),L),FullBox=class extends Box{constructor(){super(...arguments),this.flags=0,this.version=0}writeHeader(d){this.size+=4,super.writeHeader(d," v="+this.version+" f="+this.flags),d.writeUint8(this.version),d.writeUint24(this.flags)}printHeader(d){this.size+=4,super.printHeader(d),d.log(d.indent+"version:"+this.version),d.log(d.indent+"flags:"+this.flags)}parseDataAndRewind(d){this.parseFullHeader(d),this.data=d.readUint8Array(this.size-this.hdr_size),this.hdr_size-=4,d.seek(this.start+this.hdr_size)}parseFullHeader(d){this.version=d.readUint8(),this.flags=d.readUint24(),this.hdr_size+=4}parse(d){this.parseFullHeader(d),this.data=d.readUint8Array(this.size-this.hdr_size)}},A,SampleGroupEntry=(A=class{constructor(o){this.grouping_type=o}write(o){o.writeUint8Array(this.data)}parse(o){Log.warn("BoxParser",`Unknown sample group type: '${this.grouping_type}'`),this.data=o.readUint8Array(this.description_length)}},A.registryId=Symbol.for("SampleGroupEntryIdentifier"),A),TrackGroupTypeBox=class extends FullBox{parse(d){this.parseFullHeader(d),this.track_group_id=d.readUint32()}},SingleItemTypeReferenceBox=class extends Box{constructor(d,o,l,i,r){super(o),this.box_name=l,this.hdr_size=i,this.start=r,this.type=d}parse(d){this.from_item_ID=d.readUint16();const o=d.readUint16();this.references=[];for(let l=0;l<o;l++)this.references[l]={to_item_ID:d.readUint16()}}},SingleItemTypeReferenceBoxLarge=class extends Box{constructor(d,o,l,i,r){super(o),this.box_name=l,this.hdr_size=i,this.start=r,this.type=d}parse(d){this.from_item_ID=d.readUint32();const o=d.readUint16();this.references=[];for(let l=0;l<o;l++)this.references[l]={to_item_ID:d.readUint32()}}},TrackReferenceTypeBox=class extends Box{constructor(d,o,l,i){super(o),this.hdr_size=l,this.start=i,this.type=d}parse(d){this.track_ids=d.readUint32Array((this.size-this.hdr_size)/4)}write(d){this.size=this.track_ids.length*4,this.writeHeader(d),d.writeUint32Array(this.track_ids)}},DIFF_BOXES_PROP_NAMES=["boxes","entries","references","subsamples","items","item_infos","extents","associations","subsegments","ranges","seekLists","seekPoints","esd","levels"],DIFF_PRIMITIVE_ARRAY_PROP_NAMES=["compatible_brands","matrix","opcolor","sample_counts","sample_deltas","first_chunk","samples_per_chunk","sample_sizes","chunk_offsets","sample_offsets","sample_description_index","sample_duration"];function boxEqualFields(d,o){if(d&&!o)return!1;let l;for(l in d)if(!DIFF_BOXES_PROP_NAMES.find(i=>i===l)){if(d[l]instanceof Box||o[l]instanceof Box)continue;if(typeof d[l]>"u"||typeof o[l]>"u")continue;if(typeof d[l]=="function"||typeof o[l]=="function")continue;if("subBoxNames"in d&&d.subBoxNames.indexOf(l.slice(0,4))>-1||"subBoxNames"in o&&o.subBoxNames.indexOf(l.slice(0,4))>-1)continue;if(l==="data"||l==="start"||l==="size"||l==="creation_time"||l==="modification_time")continue;if(DIFF_PRIMITIVE_ARRAY_PROP_NAMES.find(i=>i===l))continue;if(d[l]!==o[l])return!1}return!0}function boxEqual(d,o){if(!boxEqualFields(d,o))return!1;for(let l=0;l<DIFF_BOXES_PROP_NAMES.length;l++){const i=DIFF_BOXES_PROP_NAMES[l];if(d[i]&&o[i]&&!boxEqual(d[i],o[i]))return!1}return!0}function getRegistryId(d){let o=d;for(;o;){if("registryId"in o)return o.registryId;o=Object.getPrototypeOf(o)}}var isSampleGroupEntry=d=>{const o=Symbol.for("SampleGroupEntryIdentifier");return getRegistryId(d)===o},isSampleEntry=d=>{const o=Symbol.for("SampleEntryIdentifier");return getRegistryId(d)===o},isBox=d=>{const o=Symbol.for("BoxIdentifier");return getRegistryId(d)===o},BoxRegistry={uuid:{},sampleEntry:{},sampleGroupEntry:{},box:{}};function registerBoxes(d){const o={uuid:{},sampleEntry:{},sampleGroupEntry:{},box:{}};for(const[l,i]of Object.entries(d)){if(isSampleGroupEntry(i)){const r="grouping_type"in i?i.grouping_type:void 0;if(!r)throw new Error(`SampleGroupEntry class ${l} does not have a valid static grouping_type. Please ensure it is defined correctly.`);if(r in o.sampleGroupEntry)throw new Error(`SampleGroupEntry class ${l} has a grouping_type that is already registered. Please ensure it is unique.`);o.sampleGroupEntry[r]=i;continue}if(isSampleEntry(i)){const r="fourcc"in i?i.fourcc:void 0;if(!r)throw new Error(`SampleEntry class ${l} does not have a valid static fourcc. Please ensure it is defined correctly.`);if(r in o.sampleEntry)throw new Error(`SampleEntry class ${l} has a fourcc that is already registered. Please ensure it is unique.`);o.sampleEntry[r]=i;continue}if(isBox(i)){const r="fourcc"in i?i.fourcc:void 0,t="uuid"in i?i.uuid:void 0;if(r==="uuid"){if(!t)throw new Error(`Box class ${l} has a fourcc of 'uuid' but does not have a valid uuid. Please ensure it is defined correctly.`);if(t in o.uuid)throw new Error(`Box class ${l} has a uuid that is already registered. Please ensure it is unique.`);o.uuid[t]=i;continue}o.box[r]=i;continue}throw new Error(`Box class ${l} does not have a valid static fourcc, uuid, or grouping_type. Please ensure it is defined correctly.`)}return BoxRegistry.uuid={...o.uuid},BoxRegistry.sampleEntry={...o.sampleEntry},BoxRegistry.sampleGroupEntry={...o.sampleGroupEntry},BoxRegistry.box={...o.box},BoxRegistry}var DescriptorRegistry={};function registerDescriptors(d){return Object.entries(d).forEach(([o,l])=>DescriptorRegistry[o]=l),DescriptorRegistry}function parseUUID(d){return parseHex16(d)}function parseHex16(d){let o="";for(let l=0;l<16;l++){const i=d.readUint8().toString(16);o+=i.length===1?"0"+i:i}return o}function parseOneBox(d,o,l){let i,r;const t=d.getPosition();let e=0,n;if(d.getEndPosition()-t<8)return Log.debug("BoxParser","Not enough data in stream to parse the type and size of the box"),{code:ERR_NOT_ENOUGH_DATA};if(l&&l<8)return Log.debug("BoxParser","Not enough bytes left in the parent box to parse a new box"),{code:ERR_NOT_ENOUGH_DATA};let s=d.readUint32();const a=d.readString(4);if(a.length!==4||!/^[\x20-\x7E]{4}$/.test(a))return Log.error("BoxParser",`Invalid box type: '${a}'`),{code:ERR_INVALID_DATA,start:t,type:a};let U=a;if(Log.debug("BoxParser","Found box of type '"+a+"' and size "+s+" at position "+t),e=8,a==="uuid"){if(d.getEndPosition()-d.getPosition()<16||l-e<16)return d.seek(t),Log.debug("BoxParser","Not enough bytes left in the parent box to parse a UUID box"),{code:ERR_NOT_ENOUGH_DATA};n=parseUUID(d),e+=16,U=n}if(s===1){if(d.getEndPosition()-d.getPosition()<8||l&&l-e<8)return d.seek(t),Log.warn("BoxParser",'Not enough data in stream to parse the extended size of the "'+a+'" box'),{code:ERR_NOT_ENOUGH_DATA};r=s,s=d.readUint64(),e+=8}else if(s===0){if(l)s=l;else if(a!=="mdat")return Log.error("BoxParser","Unlimited box size not supported for type: '"+a+"'"),i=new Box(s),i.type=a,{code:OK,box:i,size:i.size}}if(s!==0&&s<e)return Log.error("BoxParser","Box of type "+a+" has an invalid size "+s+" (too small to be a box)"),{code:ERR_NOT_ENOUGH_DATA,type:a,size:s,hdr_size:e,start:t};if(s!==0&&l&&s>l)return Log.error("BoxParser","Box of type '"+a+"' has a size "+s+" greater than its container size "+l),{code:ERR_NOT_ENOUGH_DATA,type:a,size:s,hdr_size:e,start:t};if(s!==0&&t+s>d.getEndPosition())return d.seek(t),Log.info("BoxParser","Not enough data in stream to parse the entire '"+a+"' box"),{code:ERR_NOT_ENOUGH_DATA,type:a,size:s,hdr_size:e,start:t,original_size:r};if(o)return{code:OK,type:a,size:s,hdr_size:e,start:t};a in BoxRegistry.box?i=new BoxRegistry.box[a](s):a!=="uuid"?(Log.warn("BoxParser",`Unknown box type: '${a}'`),i=new Box(s),i.type=a,i.has_unparsed_data=!0):n in BoxRegistry.uuid?i=new BoxRegistry.uuid[n](s):(Log.warn("BoxParser",`Unknown UUID box type: '${n}'`),i=new Box(s),i.type=a,i.uuid=n,i.has_unparsed_data=!0),i.original_size=r,i.hdr_size=e,i.start=t,i.write===Box.prototype.write&&i.type!=="mdat"&&(Log.info("BoxParser","'"+U+"' box writing not yet implemented, keeping unparsed data in memory for later write"),i.parseDataAndRewind(d)),i.parse(d);const u=d.getPosition()-(i.start+i.size);return u<0?(Log.warn("BoxParser","Parsing of box '"+U+"' did not read the entire indicated box data size (missing "+-u+" bytes), seeking forward"),d.seek(i.start+i.size)):u>0&&i.size!==0&&(Log.error("BoxParser","Parsing of box '"+U+"' read "+u+" more bytes than the indicated box data size, seeking backwards"),d.seek(i.start+i.size)),{code:OK,box:i,size:i.size}}var ContainerBox=class extends Box{write(d){if(this.size=0,this.writeHeader(d),this.boxes)for(let o=0;o<this.boxes.length;o++)this.boxes[o]&&(this.boxes[o].write(d),this.size+=this.boxes[o].size);Log.debug("BoxWriter","Adjusting box "+this.type+" with new size "+this.size),d.adjustUint32(this.sizePosition,this.size)}print(d){this.printHeader(d);for(let o=0;o<this.boxes.length;o++)if(this.boxes[o]){const l=d.indent;d.indent+=" ",this.boxes[o].print(d),d.indent=l}}parse(d){let o;for(;d.getPosition()<this.start+this.size;)if(o=parseOneBox(d,!1,this.size-(d.getPosition()-this.start)),o.code===OK){const l=o.box;if(this.boxes||(this.boxes=[]),this.boxes.push(l),this.subBoxNames&&this.subBoxNames.indexOf(l.type)!==-1){const i=this.subBoxNames[this.subBoxNames.indexOf(l.type)]+"s";this[i]||(this[i]=[]),this[i].push(l)}else{const i=l.type!=="uuid"?l.type:l.uuid;this[i]?Log.warn("ContainerBox",`Box of type ${i} already exists in container box ${this.type}.`):this[i]=l}}else return}},G,SampleEntry=(G=class extends ContainerBox{constructor(o,l,i){super(o),this.hdr_size=l,this.start=i}isVideo(){return!1}isAudio(){return!1}isSubtitle(){return!1}isMetadata(){return!1}isHint(){return!1}getCodec(){return this.type.replace(".","")}getWidth(){return""}getHeight(){return""}getChannelCount(){return""}getSampleRate(){return""}getSampleSize(){return""}parseHeader(o){o.readUint8Array(6),this.data_reference_index=o.readUint16(),this.hdr_size+=8}parse(o){this.parseHeader(o),this.data=o.readUint8Array(this.size-this.hdr_size)}parseDataAndRewind(o){this.parseHeader(o),this.data=o.readUint8Array(this.size-this.hdr_size),this.hdr_size-=8,o.seek(this.start+this.hdr_size)}parseFooter(o){super.parse(o)}writeHeader(o){this.size=8,super.writeHeader(o),o.writeUint8(0),o.writeUint8(0),o.writeUint8(0),o.writeUint8(0),o.writeUint8(0),o.writeUint8(0),o.writeUint16(this.data_reference_index)}writeFooter(o){if(this.boxes)for(let l=0;l<this.boxes.length;l++)this.boxes[l].write(o),this.size+=this.boxes[l].size;Log.debug("BoxWriter","Adjusting box "+this.type+" with new size "+this.size),o.adjustUint32(this.sizePosition,this.size)}write(o){this.writeHeader(o),o.writeUint8Array(this.data),this.size+=this.data.length,Log.debug("BoxWriter","Adjusting box "+this.type+" with new size "+this.size),o.adjustUint32(this.sizePosition,this.size)}},G.registryId=Symbol.for("SampleEntryIdentifier"),G),HintSampleEntry=class extends SampleEntry{},MetadataSampleEntry=class extends SampleEntry{isMetadata(){return!0}},SubtitleSampleEntry=class extends SampleEntry{isSubtitle(){return!0}},TextSampleEntry=class extends SampleEntry{},VisualSampleEntry=class extends SampleEntry{parse(d){this.parseHeader(d),d.readUint16(),d.readUint16(),d.readUint32Array(3),this.width=d.readUint16(),this.height=d.readUint16(),this.horizresolution=d.readUint32(),this.vertresolution=d.readUint32(),d.readUint32(),this.frame_count=d.readUint16();const o=Math.min(31,d.readUint8());this.compressorname=d.readString(o),o<31&&d.readString(31-o),this.depth=d.readUint16(),d.readUint16(),this.parseFooter(d)}isVideo(){return!0}getWidth(){return this.width}getHeight(){return this.height}write(d){this.writeHeader(d),this.size+=2*7+6*4+32,d.writeUint16(0),d.writeUint16(0),d.writeUint32(0),d.writeUint32(0),d.writeUint32(0),d.writeUint16(this.width),d.writeUint16(this.height),d.writeUint32(this.horizresolution),d.writeUint32(this.vertresolution),d.writeUint32(0),d.writeUint16(this.frame_count),d.writeUint8(Math.min(31,this.compressorname.length)),d.writeString(this.compressorname,void 0,31),d.writeUint16(this.depth),d.writeInt16(-1),this.writeFooter(d)}},AudioSampleEntry=class extends SampleEntry{parse(d){var l,i;this.parseHeader(d),this.version=d.readUint16(),d.readUint16(),d.readUint32(),this.channel_count=d.readUint16(),this.samplesize=d.readUint16(),d.readUint16(),d.readUint16(),this.samplerate=d.readUint32()/65536,((i=(l=d.isofile)==null?void 0:l.ftyp)==null?void 0:i.major_brand.includes("qt"))&&(this.version===1?this.extensions=d.readUint8Array(16):this.version===2&&(this.extensions=d.readUint8Array(36))),this.parseFooter(d)}isAudio(){return!0}getChannelCount(){return this.channel_count}getSampleRate(){return this.samplerate}getSampleSize(){return this.samplesize}write(d){this.writeHeader(d),this.size+=2*4+3*4,d.writeUint32(0),d.writeUint32(0),d.writeUint16(this.channel_count),d.writeUint16(this.samplesize),d.writeUint16(0),d.writeUint16(0),d.writeUint32(this.samplerate<<16),this.writeFooter(d)}},SystemSampleEntry=class extends SampleEntry{parse(d){this.parseHeader(d),this.parseFooter(d)}write(d){this.writeHeader(d),this.writeFooter(d)}},ParameterSetArray=class extends Array{toString(){let d="<table class='inner-table'>";d+="<thead><tr><th>length</th><th>nalu_data</th></tr></thead>",d+="<tbody>";for(let o=0;o<this.length;o++){const l=this[o];d+="<tr>",d+="<td>"+l.length+"</td>",d+="<td>",d+=l.data.reduce(function(i,r){return i+r.toString(16).padStart(2,"0")},"0x"),d+="</td></tr>"}return d+="</tbody></table>",d}},H,avcCBox=(H=class extends Box{constructor(){super(...arguments),this.box_name="AVCConfigurationBox"}parse(o){this.configurationVersion=o.readUint8(),this.AVCProfileIndication=o.readUint8(),this.profile_compatibility=o.readUint8(),this.AVCLevelIndication=o.readUint8(),this.lengthSizeMinusOne=o.readUint8()&3,this.nb_SPS_nalus=o.readUint8()&31;let l=this.size-this.hdr_size-6;this.SPS=new ParameterSetArray;for(let i=0;i<this.nb_SPS_nalus;i++){const r=o.readUint16();this.SPS.push({length:r,data:o.readUint8Array(r)}),l-=2+r}this.nb_PPS_nalus=o.readUint8(),l--,this.PPS=new ParameterSetArray;for(let i=0;i<this.nb_PPS_nalus;i++){const r=o.readUint16();this.PPS.push({length:r,data:o.readUint8Array(r)}),l-=2+r}l>0&&(this.ext=o.readUint8Array(l))}write(o){this.size=7;for(let l=0;l<this.SPS.length;l++)this.size+=2+this.SPS[l].length;for(let l=0;l<this.PPS.length;l++)this.size+=2+this.PPS[l].length;this.ext&&(this.size+=this.ext.length),this.writeHeader(o),o.writeUint8(this.configurationVersion),o.writeUint8(this.AVCProfileIndication),o.writeUint8(this.profile_compatibility),o.writeUint8(this.AVCLevelIndication),o.writeUint8(this.lengthSizeMinusOne+252),o.writeUint8(this.SPS.length+224);for(let l=0;l<this.SPS.length;l++)o.writeUint16(this.SPS[l].length),o.writeUint8Array(this.SPS[l].data);o.writeUint8(this.PPS.length);for(let l=0;l<this.PPS.length;l++)o.writeUint16(this.PPS[l].length),o.writeUint8Array(this.PPS[l].data);this.ext&&o.writeUint8Array(this.ext)}},H.fourcc="avcC",H),z,mdatBox=(z=class extends Box{constructor(){super(...arguments),this.box_name="MediaDataBox"}},z.fourcc="mdat",z),Y,idatBox=(Y=class extends Box{constructor(){super(...arguments),this.box_name="ItemDataBox"}},Y.fourcc="idat",Y),j,freeBox=(j=class extends Box{constructor(){super(...arguments),this.box_name="FreeSpaceBox"}},j.fourcc="free",j),X,skipBox=(X=class extends Box{constructor(){super(...arguments),this.box_name="FreeSpaceBox"}},X.fourcc="skip",X),K,hmhdBox=(K=class extends FullBox{constructor(){super(...arguments),this.box_name="HintMediaHeaderBox"}},K.fourcc="hmhd",K),q,nmhdBox=(q=class extends FullBox{constructor(){super(...arguments),this.box_name="NullMediaHeaderBox"}},q.fourcc="nmhd",q),tt,iodsBox=(tt=class extends FullBox{constructor(){super(...arguments),this.box_name="ObjectDescriptorBox"}},tt.fourcc="iods",tt),et,xmlBox=(et=class extends FullBox{constructor(){super(...arguments),this.box_name="XMLBox"}},et.fourcc="xml ",et),it,bxmlBox=(it=class extends FullBox{constructor(){super(...arguments),this.box_name="BinaryXMLBox"}},it.fourcc="bxml",it),nt,iproBox=(nt=class extends FullBox{constructor(){super(...arguments),this.box_name="ItemProtectionBox",this.sinfs=[]}get protections(){return this.sinfs}},nt.fourcc="ipro",nt),ot,moovBox=(ot=class extends ContainerBox{constructor(){super(...arguments),this.box_name="MovieBox",this.traks=[],this.psshs=[],this.subBoxNames=["trak","pssh"]}},ot.fourcc="moov",ot),rt,trakBox=(rt=class extends ContainerBox{constructor(){super(...arguments),this.box_name="TrackBox",this.samples=[]}},rt.fourcc="trak",rt),lt,edtsBox=(lt=class extends ContainerBox{constructor(){super(...arguments),this.box_name="EditBox"}},lt.fourcc="edts",lt),st,mdiaBox=(st=class extends ContainerBox{constructor(){super(...arguments),this.box_name="MediaBox"}},st.fourcc="mdia",st),at,minfBox=(at=class extends ContainerBox{constructor(){super(...arguments),this.box_name="MediaInformationBox"}},at.fourcc="minf",at),dt,dinfBox=(dt=class extends ContainerBox{constructor(){super(...arguments),this.box_name="DataInformationBox"}},dt.fourcc="dinf",dt),Ut,stblBox=(Ut=class extends ContainerBox{constructor(){super(...arguments),this.box_name="SampleTableBox",this.sgpds=[],this.sbgps=[],this.subBoxNames=["sgpd","sbgp"]}},Ut.fourcc="stbl",Ut),ut,mvexBox=(ut=class extends ContainerBox{constructor(){super(...arguments),this.box_name="MovieExtendsBox",this.trexs=[],this.subBoxNames=["trex"]}},ut.fourcc="mvex",ut),ct,moofBox=(ct=class extends ContainerBox{constructor(){super(...arguments),this.box_name="MovieFragmentBox",this.trafs=[],this.subBoxNames=["traf"]}},ct.fourcc="moof",ct),Ft,trafBox=(Ft=class extends ContainerBox{constructor(){super(...arguments),this.box_name="TrackFragmentBox",this.truns=[],this.sgpds=[],this.sbgps=[],this.subBoxNames=["trun","sgpd","sbgp"]}},Ft.fourcc="traf",Ft),Qt,vttcBox=(Qt=class extends ContainerBox{constructor(){super(...arguments),this.box_name="VTTCueBox"}},Qt.fourcc="vttc",Qt),pt,mfraBox=(pt=class extends ContainerBox{constructor(){super(...arguments),this.box_name="MovieFragmentRandomAccessBox",this.tfras=[],this.subBoxNames=["tfra"]}},pt.fourcc="mfra",pt),ft,mecoBox=(ft=class extends ContainerBox{constructor(){super(...arguments),this.box_name="AdditionalMetadataContainerBox"}},ft.fourcc="meco",ft),ht,hntiBox=(ht=class extends ContainerBox{constructor(){super(...arguments),this.box_name="trackhintinformation",this.subBoxNames=["sdp ","rtp "]}},ht.fourcc="hnti",ht),Bt,hinfBox=(Bt=class extends ContainerBox{constructor(){super(...arguments),this.box_name="hintstatisticsbox",this.maxrs=[],this.subBoxNames=["maxr"]}},Bt.fourcc="hinf",Bt),Rt,strkBox=(Rt=class extends ContainerBox{constructor(){super(...arguments),this.box_name="SubTrackBox"}},Rt.fourcc="strk",Rt),St,strdBox=(St=class extends ContainerBox{constructor(){super(...arguments),this.box_name="SubTrackDefinitionBox"}},St.fourcc="strd",St),yt,sinfBox=(yt=class extends ContainerBox{constructor(){super(...arguments),this.box_name="ProtectionSchemeInfoBox"}},yt.fourcc="sinf",yt),Vt,rinfBox=(Vt=class extends ContainerBox{constructor(){super(...arguments),this.box_name="RestrictedSchemeInfoBox"}},Vt.fourcc="rinf",Vt),Jt,schiBox=(Jt=class extends ContainerBox{constructor(){super(...arguments),this.box_name="SchemeInformationBox"}},Jt.fourcc="schi",Jt),Et,trgrBox=(Et=class extends ContainerBox{constructor(){super(...arguments),this.box_name="TrackGroupBox"}},Et.fourcc="trgr",Et),mt,udtaBox=(mt=class extends ContainerBox{constructor(){super(...arguments),this.box_name="UserDataBox",this.kinds=[],this.strks=[],this.subBoxNames=["kind","strk"]}},mt.fourcc="udta",mt),kt,iprpBox=(kt=class extends ContainerBox{constructor(){super(...arguments),this.box_name="ItemPropertiesBox",this.ipmas=[],this.subBoxNames=["ipma"]}},kt.fourcc="iprp",kt),Nt,ipcoBox=(Nt=class extends ContainerBox{constructor(){super(...arguments),this.box_name="ItemPropertyContainerBox",this.hvcCs=[],this.ispes=[],this.claps=[],this.irots=[],this.subBoxNames=["hvcC","ispe","clap","irot"]}},Nt.fourcc="ipco",Nt),Tt,grplBox=(Tt=class extends ContainerBox{constructor(){super(...arguments),this.box_name="GroupsListBox"}},Tt.fourcc="grpl",Tt),Wt,j2kHBox=(Wt=class extends ContainerBox{constructor(){super(...arguments),this.box_name="J2KHeaderInfoBox"}},Wt.fourcc="j2kH",Wt),Ct,etypBox=(Ct=class extends ContainerBox{constructor(){super(...arguments),this.box_name="ExtendedTypeBox",this.tycos=[],this.subBoxNames=["tyco"]}},Ct.fourcc="etyp",Ct),vt,povdBox=(vt=class extends ContainerBox{constructor(){super(...arguments),this.box_name="ProjectedOmniVideoBox",this.subBoxNames=["prfr"]}},vt.fourcc="povd",vt),bt,drefBox=(bt=class extends FullBox{constructor(){super(...arguments),this.box_name="DataReferenceBox"}parse(o){this.parseFullHeader(o),this.entries=[];const l=o.readUint32();for(let i=0;i<l;i++){const r=parseOneBox(o,!1,this.size-(o.getPosition()-this.start));if(r.code===OK){const t=r.box;this.entries.push(t)}else return}}write(o){this.version=0,this.flags=0,this.size=4,this.writeHeader(o),o.writeUint32(this.entries.length);for(let l=0;l<this.entries.length;l++)this.entries[l].write(o),this.size+=this.entries[l].size;Log.debug("BoxWriter","Adjusting box "+this.type+" with new size "+this.size),o.adjustUint32(this.sizePosition,this.size)}},bt.fourcc="dref",bt),Ot,elngBox=(Ot=class extends FullBox{constructor(){super(...arguments),this.box_name="ExtendedLanguageBox"}parse(o){this.parseFullHeader(o),this.extended_language=o.readString(this.size-this.hdr_size)}write(o){this.version=0,this.flags=0,this.size=this.extended_language.length,this.writeHeader(o),o.writeString(this.extended_language)}},Ot.fourcc="elng",Ot),Zt,ftypBox=(Zt=class extends Box{constructor(){super(...arguments),this.box_name="FileTypeBox"}parse(o){let l=this.size-this.hdr_size;this.major_brand=o.readString(4),this.minor_version=o.readUint32(),l-=8,this.compatible_brands=[];let i=0;for(;l>=4;)this.compatible_brands[i]=o.readString(4),l-=4,i++}write(o){this.size=8+4*this.compatible_brands.length,this.writeHeader(o),o.writeString(this.major_brand,void 0,4),o.writeUint32(this.minor_version);for(let l=0;l<this.compatible_brands.length;l++)o.writeString(this.compatible_brands[l],void 0,4)}},Zt.fourcc="ftyp",Zt),Dt,hdlrBox=(Dt=class extends FullBox{constructor(){super(...arguments),this.box_name="HandlerBox"}parse(o){if(this.parseFullHeader(o),this.version===0&&(o.readUint32(),this.handler=o.readString(4),o.readUint32Array(3),!this.isEndOfBox(o))){const l=this.start+this.size-o.getPosition();this.name=o.readCString();const i=this.start+this.size-1;o.seek(i),o.readUint8()!==0&&l>1&&(Log.info("BoxParser","Warning: hdlr name is not null-terminated, possibly length-prefixed string. Trimming first byte."),this.name=this.name.slice(1))}}write(o){this.size=5*4+this.name.length+1,this.version=0,this.flags=0,this.writeHeader(o),o.writeUint32(0),o.writeString(this.handler,void 0,4),o.writeUint32Array([0,0,0]),o.writeCString(this.name)}},Dt.fourcc="hdlr",Dt),wt,hvcCBox=(wt=class extends Box{constructor(){super(...arguments),this.box_name="HEVCConfigurationBox"}parse(o){this.configurationVersion=o.readUint8();let l=o.readUint8();this.general_profile_space=l>>6,this.general_tier_flag=(l&32)>>5,this.general_profile_idc=l&31,this.general_profile_compatibility=o.readUint32(),this.general_constraint_indicator=o.readUint8Array(6),this.general_level_idc=o.readUint8(),this.min_spatial_segmentation_idc=o.readUint16()&4095,this.parallelismType=o.readUint8()&3,this.chroma_format_idc=o.readUint8()&3,this.bit_depth_luma_minus8=o.readUint8()&7,this.bit_depth_chroma_minus8=o.readUint8()&7,this.avgFrameRate=o.readUint16(),l=o.readUint8(),this.constantFrameRate=l>>6,this.numTemporalLayers=(l&13)>>3,this.temporalIdNested=(l&4)>>2,this.lengthSizeMinusOne=l&3,this.nalu_arrays=[];const i=o.readUint8();for(let r=0;r<i;r++){const t=[];this.nalu_arrays.push(t),l=o.readUint8(),t.completeness=(l&128)>>7,t.nalu_type=l&63;const e=o.readUint16();for(let n=0;n<e;n++){const s=o.readUint16();t.push({data:o.readUint8Array(s)})}}}write(o){this.size=23;for(let l=0;l<this.nalu_arrays.length;l++){this.size+=3;for(let i=0;i<this.nalu_arrays[l].length;i++)this.size+=2+this.nalu_arrays[l][i].data.length}this.writeHeader(o),o.writeUint8(this.configurationVersion),o.writeUint8((this.general_profile_space<<6)+(this.general_tier_flag<<5)+this.general_profile_idc),o.writeUint32(this.general_profile_compatibility),o.writeUint8Array(this.general_constraint_indicator),o.writeUint8(this.general_level_idc),o.writeUint16(this.min_spatial_segmentation_idc+(15<<24)),o.writeUint8(this.parallelismType+252),o.writeUint8(this.chroma_format_idc+252),o.writeUint8(this.bit_depth_luma_minus8+248),o.writeUint8(this.bit_depth_chroma_minus8+248),o.writeUint16(this.avgFrameRate),o.writeUint8((this.constantFrameRate<<6)+(this.numTemporalLayers<<3)+(this.temporalIdNested<<2)+this.lengthSizeMinusOne),o.writeUint8(this.nalu_arrays.length);for(let l=0;l<this.nalu_arrays.length;l++){o.writeUint8((this.nalu_arrays[l].completeness<<7)+this.nalu_arrays[l].nalu_type),o.writeUint16(this.nalu_arrays[l].length);for(let i=0;i<this.nalu_arrays[l].length;i++)o.writeUint16(this.nalu_arrays[l][i].data.length),o.writeUint8Array(this.nalu_arrays[l][i].data)}}},wt.fourcc="hvcC",wt),gt,mdhdBox=(gt=class extends FullBox{constructor(){super(...arguments),this.box_name="MediaHeaderBox"}parse(o){this.parseFullHeader(o),this.version===1?(this.creation_time=o.readUint64(),this.modification_time=o.readUint64(),this.timescale=o.readUint32(),this.duration=o.readUint64()):(this.creation_time=o.readUint32(),this.modification_time=o.readUint32(),this.timescale=o.readUint32(),this.duration=o.readUint32()),this.parseLanguage(o),o.readUint16()}write(o){const l=this.modification_time>MAX_UINT32||this.creation_time>MAX_UINT32||this.duration>MAX_UINT32||this.version===1;this.version=l?1:0,this.size=4*4+2*2,this.size+=l?3*4:0,this.flags=0,this.writeHeader(o),l?(o.writeUint64(this.creation_time),o.writeUint64(this.modification_time),o.writeUint32(this.timescale),o.writeUint64(this.duration)):(o.writeUint32(this.creation_time),o.writeUint32(this.modification_time),o.writeUint32(this.timescale),o.writeUint32(this.duration)),o.writeUint16(this.language),o.writeUint16(0)}},gt.fourcc="mdhd",gt),xt,mehdBox=(xt=class extends FullBox{constructor(){super(...arguments),this.box_name="MovieExtendsHeaderBox"}parse(o){this.parseFullHeader(o),this.flags&1&&(Log.warn("BoxParser","mehd box incorrectly uses flags set to 1, converting version to 1"),this.version=1),this.version===1?this.fragment_duration=o.readUint64():this.fragment_duration=o.readUint32()}write(o){const l=this.fragment_duration>MAX_UINT32||this.version===1;this.version=l?1:0,this.size=4,this.size+=l?4:0,this.flags=0,this.writeHeader(o),l?o.writeUint64(this.fragment_duration):o.writeUint32(this.fragment_duration)}},xt.fourcc="mehd",xt),It,infeBox=(It=class extends FullBox{constructor(){super(...arguments),this.box_name="ItemInfoEntry"}parse(o){if(this.parseFullHeader(o),(this.version===0||this.version===1)&&(this.item_ID=o.readUint16(),this.item_protection_index=o.readUint16(),this.item_name=o.readCString(),this.content_type=o.readCString(),this.isEndOfBox(o)||(this.content_encoding=o.readCString())),this.version===1){this.extension_type=o.readString(4),Log.warn("BoxParser","Cannot parse extension type"),o.seek(this.start+this.size);return}this.version>=2&&(this.version===2?this.item_ID=o.readUint16():this.version===3&&(this.item_ID=o.readUint32()),this.item_protection_index=o.readUint16(),this.item_type=o.readString(4),this.item_name=o.readCString(),this.item_type==="mime"?(this.content_type=o.readCString(),this.content_encoding=o.readCString()):this.item_type==="uri "&&(this.item_uri_type=o.readCString()))}},It.fourcc="infe",It),Mt,iinfBox=(Mt=class extends FullBox{constructor(){super(...arguments),this.box_name="ItemInfoBox"}parse(o){this.parseFullHeader(o),this.version===0?this.entry_count=o.readUint16():this.entry_count=o.readUint32(),this.item_infos=[];for(let l=0;l<this.entry_count;l++){const i=parseOneBox(o,!1,this.size-(o.getPosition()-this.start));if(i.code===OK){const r=i.box;r.type==="infe"?this.item_infos[l]=r:Log.error("BoxParser","Expected 'infe' box, got "+i.box.type,o.isofile)}else return}}},Mt.fourcc="iinf",Mt),_t,ilocBox=(_t=class extends FullBox{constructor(){super(...arguments),this.box_name="ItemLocationBox"}parse(o){this.parseFullHeader(o);let l;l=o.readUint8(),this.offset_size=l>>4&15,this.length_size=l&15,l=o.readUint8(),this.base_offset_size=l>>4&15,this.version===1||this.version===2?this.index_size=l&15:this.index_size=0,this.items=[];let i=0;if(this.version<2)i=o.readUint16();else if(this.version===2)i=o.readUint32();else throw new Error("version of iloc box not supported");for(let r=0;r<i;r++){let t=0,e=0,n=0;if(this.version<2)t=o.readUint16();else if(this.version===2)t=o.readUint32();else throw new Error("version of iloc box not supported");this.version===1||this.version===2?e=o.readUint16()&15:e=0;const s=o.readUint16();switch(this.base_offset_size){case 0:n=0;break;case 4:n=o.readUint32();break;case 8:n=o.readUint64();break;default:throw new Error("Error reading base offset size")}const a=[],U=o.readUint16();for(let u=0;u<U;u++){let F=0,R=0,S=0;if(this.version===1||this.version===2)switch(this.index_size){case 0:F=0;break;case 4:F=o.readUint32();break;case 8:F=o.readUint64();break;default:throw new Error("Error reading extent index")}switch(this.offset_size){case 0:R=0;break;case 4:R=o.readUint32();break;case 8:R=o.readUint64();break;default:throw new Error("Error reading extent index")}switch(this.length_size){case 0:S=0;break;case 4:S=o.readUint32();break;case 8:S=o.readUint64();break;default:throw new Error("Error reading extent index")}a.push({extent_index:F,extent_length:S,extent_offset:R})}this.items.push({base_offset:n,construction_method:e,item_ID:t,data_reference_index:s,extents:a})}}},_t.fourcc="iloc",_t),REFERENCE_TYPE_NAMES={auxl:"Auxiliary image item",base:"Pre-derived image item base",cdsc:"Item describes referenced item",dimg:"Derived image item",dpnd:"Item coding dependency",eroi:"Region",evir:"EVC slice",exbl:"Scalable image item","fdl ":"File delivery",font:"Font item",iloc:"Item data location",mask:"Region mask",mint:"Data integrity",pred:"Predictively coded item",prem:"Pre-multiplied item",tbas:"HEVC tile track base item",text:"Text item",thmb:"Thumbnail image item"},x,irefBox=(x=class extends FullBox{constructor(){super(...arguments),this.box_name="ItemReferenceBox",this.references=[]}parse(o){for(this.parseFullHeader(o),this.references=[];o.getPosition()<this.start+this.size;){const l=parseOneBox(o,!0,this.size-(o.getPosition()-this.start));if(l.code===OK){let i="Unknown item reference";x.allowed_types.includes(l.type)?i=REFERENCE_TYPE_NAMES[l.type]:Log.warn("BoxParser",`Unknown item reference type: '${l.type}'`);const r=this.version===0?new SingleItemTypeReferenceBox(l.type,l.size,i,l.hdr_size,l.start):new SingleItemTypeReferenceBoxLarge(l.type,l.size,i,l.hdr_size,l.start);r.write===Box.prototype.write&&r.type!=="mdat"&&(Log.warn("BoxParser",r.type+" box writing not yet implemented, keeping unparsed data in memory for later write"),r.parseDataAndRewind(o)),r.parse(o),this.references.push(r)}else return}}},x.fourcc="iref",x.allowed_types=["auxl","base","cdsc","dimg","dpnd","eroi","evir","exbl","fdl ","font","iloc","mask","mint","pred","prem","tbas","text","thmb"],x),Pt,pitmBox=(Pt=class extends FullBox{constructor(){super(...arguments),this.box_name="PrimaryItemBox"}parse(o){this.parseFullHeader(o),this.version===0?this.item_id=o.readUint16():this.item_id=o.readUint32()}},Pt.fourcc="pitm",Pt),$t,metaBox=($t=class extends FullBox{constructor(){super(...arguments),this.box_name="MetaBox",this.isQT=!1}parse(o){const l=o.getPosition();if(this.size>8){switch(o.readUint32(),o.readString(4)){case"hdlr":case"mhdr":case"keys":case"ilst":case"ctry":case"lang":this.isQT=!0;break}o.seek(l)}this.isQT||this.parseFullHeader(o),ContainerBox.prototype.parse.call(this,o)}},$t.fourcc="meta",$t),Lt,mfhdBox=(Lt=class extends FullBox{constructor(){super(...arguments),this.box_name="MovieFragmentHeaderBox"}parse(o){this.parseFullHeader(o),this.sequence_number=o.readUint32()}write(o){this.version=0,this.flags=0,this.size=4,this.writeHeader(o),o.writeUint32(this.sequence_number)}},Lt.fourcc="mfhd",Lt),At,mvhdBox=(At=class extends FullBox{constructor(){super(...arguments),this.box_name="MovieHeaderBox"}parse(o){this.parseFullHeader(o),this.version===1?(this.creation_time=o.readUint64(),this.modification_time=o.readUint64(),this.timescale=o.readUint32(),this.duration=o.readUint64()):(this.creation_time=o.readUint32(),this.modification_time=o.readUint32(),this.timescale=o.readUint32(),this.duration=o.readUint32()),this.rate=o.readUint32(),this.volume=o.readUint16()>>8,o.readUint16(),o.readUint32Array(2),this.matrix=o.readInt32Array(9),o.readUint32Array(6),this.next_track_id=o.readUint32()}write(o){const l=this.modification_time>MAX_UINT32||this.creation_time>MAX_UINT32||this.duration>MAX_UINT32||this.version===1;this.version=l?1:0,this.size=4*4+20*4,this.size+=l?3*4:0,this.flags=0,this.writeHeader(o),l?(o.writeUint64(this.creation_time),o.writeUint64(this.modification_time),o.writeUint32(this.timescale),o.writeUint64(this.duration)):(o.writeUint32(this.creation_time),o.writeUint32(this.modification_time),o.writeUint32(this.timescale),o.writeUint32(this.duration)),o.writeUint32(this.rate),o.writeUint16(this.volume<<8),o.writeUint16(0),o.writeUint32(0),o.writeUint32(0),o.writeInt32Array(this.matrix),o.writeUint32(0),o.writeUint32(0),o.writeUint32(0),o.writeUint32(0),o.writeUint32(0),o.writeUint32(0),o.writeUint32(this.next_track_id)}print(o){super.printHeader(o),o.log(o.indent+"creation_time: "+this.creation_time),o.log(o.indent+"modification_time: "+this.modification_time),o.log(o.indent+"timescale: "+this.timescale),o.log(o.indent+"duration: "+this.duration),o.log(o.indent+"rate: "+this.rate),o.log(o.indent+"volume: "+(this.volume>>8)),o.log(o.indent+"matrix: "+this.matrix.join(", ")),o.log(o.indent+"next_track_id: "+this.next_track_id)}},At.fourcc="mvhd",At),Gt,mettSampleEntry=(Gt=class extends MetadataSampleEntry{parse(o){this.parseHeader(o),this.content_encoding=o.readCString(),this.mime_format=o.readCString(),this.parseFooter(o)}},Gt.fourcc="mett",Gt),Ht,metxSampleEntry=(Ht=class extends MetadataSampleEntry{parse(o){this.parseHeader(o),this.content_encoding=o.readCString(),this.namespace=o.readCString(),this.schema_location=o.readCString(),this.parseFooter(o)}},Ht.fourcc="metx",Ht),zt,av1CBox=(zt=class extends Box{constructor(){super(...arguments),this.box_name="AV1CodecConfigurationBox"}parse(o){let l=o.readUint8();if((l>>7&1)!==1){Log.error("BoxParser","av1C marker problem",o.isofile);return}if(this.version=l&127,this.version!==1){Log.error("BoxParser","av1C version "+this.version+" not supported",o.isofile);return}if(l=o.readUint8(),this.seq_profile=l>>5&7,this.seq_level_idx_0=l&31,l=o.readUint8(),this.seq_tier_0=l>>7&1,this.high_bitdepth=l>>6&1,this.twelve_bit=l>>5&1,this.monochrome=l>>4&1,this.chroma_subsampling_x=l>>3&1,this.chroma_subsampling_y=l>>2&1,this.chroma_sample_position=l&3,l=o.readUint8(),this.reserved_1=l>>5&7,this.reserved_1!==0){Log.error("BoxParser","av1C reserved_1 parsing problem",o.isofile);return}if(this.initial_presentation_delay_present=l>>4&1,this.initial_presentation_delay_present===1)this.initial_presentation_delay_minus_one=l&15;else if(this.reserved_2=l&15,this.reserved_2!==0){Log.error("BoxParser","av1C reserved_2 parsing problem",o.isofile);return}const i=this.size-this.hdr_size-4;this.configOBUs=o.readUint8Array(i)}},zt.fourcc="av1C",zt),Yt,esdsBox=(Yt=class extends FullBox{constructor(){super(...arguments),this.box_name="ElementaryStreamDescriptorBox"}parse(o){this.parseFullHeader(o);const l=o.readUint8Array(this.size-this.hdr_size);if("MPEG4DescriptorParser"in DescriptorRegistry){const i=new DescriptorRegistry.MPEG4DescriptorParser;this.esd=i.parseOneDescriptor(new DataStream(l.buffer,0))}}},Yt.fourcc="esds",Yt),jt,vpcCBox=(jt=class extends FullBox{constructor(){super(...arguments),this.box_name="VPCodecConfigurationRecord"}parse(o){if(this.parseFullHeader(o),this.version===1){this.profile=o.readUint8(),this.level=o.readUint8();const l=o.readUint8();this.bitDepth=l>>4,this.chromaSubsampling=l>>1&7,this.videoFullRangeFlag=l&1,this.colourPrimaries=o.readUint8(),this.transferCharacteristics=o.readUint8(),this.matrixCoefficients=o.readUint8(),this.codecIntializationDataSize=o.readUint16(),this.codecIntializationData=o.readUint8Array(this.codecIntializationDataSize)}else{this.profile=o.readUint8(),this.level=o.readUint8();let l=o.readUint8();this.bitDepth=l>>4&15,this.colorSpace=l&15,l=o.readUint8(),this.chromaSubsampling=l>>4&15,this.transferFunction=l>>1&7,this.videoFullRangeFlag=l&1,this.codecIntializationDataSize=o.readUint16(),this.codecIntializationData=o.readUint8Array(this.codecIntializationDataSize)}}},jt.fourcc="vpcC",jt),Xt,vvcCBox=(Xt=class extends FullBox{constructor(){super(...arguments),this.box_name="VvcConfigurationBox"}parse(o){this.parseFullHeader(o);const l={held_bits:void 0,num_held_bits:0,stream_read_1_bytes:function(e){this.held_bits=e.readUint8(),this.num_held_bits=1*8},stream_read_2_bytes:function(e){this.held_bits=e.readUint16(),this.num_held_bits=2*8},extract_bits:function(e){const n=this.held_bits>>this.num_held_bits-e&(1<<e)-1;return this.num_held_bits-=e,n}};if(l.stream_read_1_bytes(o),l.extract_bits(5),this.lengthSizeMinusOne=l.extract_bits(2),this.ptl_present_flag=l.extract_bits(1),this.ptl_present_flag){l.stream_read_2_bytes(o),this.ols_idx=l.extract_bits(9),this.num_sublayers=l.extract_bits(3),this.constant_frame_rate=l.extract_bits(2),this.chroma_format_idc=l.extract_bits(2),l.stream_read_1_bytes(o),this.bit_depth_minus8=l.extract_bits(3),l.extract_bits(5);{if(l.stream_read_2_bytes(o),l.extract_bits(2),this.num_bytes_constraint_info=l.extract_bits(6),this.general_profile_idc=l.extract_bits(7),this.general_tier_flag=l.extract_bits(1),this.general_level_idc=o.readUint8(),l.stream_read_1_bytes(o),this.ptl_frame_only_constraint_flag=l.extract_bits(1),this.ptl_multilayer_enabled_flag=l.extract_bits(1),this.general_constraint_info=new Uint8Array(this.num_bytes_constraint_info),this.num_bytes_constraint_info){for(let e=0;e<this.num_bytes_constraint_info-1;e++){const n=l.extract_bits(6);l.stream_read_1_bytes(o);const s=l.extract_bits(2);this.general_constraint_info[e]=n<<2|s}this.general_constraint_info[this.num_bytes_constraint_info-1]=l.extract_bits(6)}else l.extract_bits(6);if(this.num_sublayers>1){l.stream_read_1_bytes(o),this.ptl_sublayer_present_mask=0;for(let e=this.num_sublayers-2;e>=0;--e){const n=l.extract_bits(1);this.ptl_sublayer_present_mask|=n<<e}for(let e=this.num_sublayers;e<=8&&this.num_sublayers>1;++e)l.extract_bits(1);this.sublayer_level_idc=[];for(let e=this.num_sublayers-2;e>=0;--e)this.ptl_sublayer_present_mask&1<<e&&(this.sublayer_level_idc[e]=o.readUint8())}if(this.ptl_num_sub_profiles=o.readUint8(),this.general_sub_profile_idc=[],this.ptl_num_sub_profiles)for(let e=0;e<this.ptl_num_sub_profiles;e++)this.general_sub_profile_idc.push(o.readUint32())}this.max_picture_width=o.readUint16(),this.max_picture_height=o.readUint16(),this.avg_frame_rate=o.readUint16()}const i=12,r=13;this.nalu_arrays=[];const t=o.readUint8();for(let e=0;e<t;e++){const n=[];this.nalu_arrays.push(n),l.stream_read_1_bytes(o),n.completeness=l.extract_bits(1),l.extract_bits(2),n.nalu_type=l.extract_bits(5);let s=1;n.nalu_type!==r&&n.nalu_type!==i&&(s=o.readUint16());for(let a=0;a<s;a++){const U=o.readUint16();n.push({data:o.readUint8Array(U),length:U})}}}},Xt.fourcc="vvcC",Xt),Kt,colrBox=(Kt=class extends Box{constructor(){super(...arguments),this.box_name="ColourInformationBox"}parse(o){if(this.colour_type=o.readString(4),this.colour_type==="nclx"){this.colour_primaries=o.readUint16(),this.transfer_characteristics=o.readUint16(),this.matrix_coefficients=o.readUint16();const l=o.readUint8();this.full_range_flag=l>>7}else this.colour_type==="rICC"?this.ICC_profile=o.readUint8Array(this.size-4):this.colour_type==="prof"&&(this.ICC_profile=o.readUint8Array(this.size-4))}},Kt.fourcc="colr",Kt);function decimalToHex(d,o){let l=Number(d).toString(16);for(o=typeof o>"u"?2:o;l.length<o;)l="0"+l;return l}var avcCSampleEntryBase=class extends VisualSampleEntry{getCodec(){const d=super.getCodec();return this.avcC?`${d}.${decimalToHex(this.avcC.AVCProfileIndication)}${decimalToHex(this.avcC.profile_compatibility)}${decimalToHex(this.avcC.AVCLevelIndication)}`:d}},qt,avc1SampleEntry=(qt=class extends avcCSampleEntryBase{constructor(){super(...arguments),this.box_name="AVCSampleEntry"}},qt.fourcc="avc1",qt),te,avc2SampleEntry=(te=class extends avcCSampleEntryBase{constructor(){super(...arguments),this.box_name="AVC2SampleEntry"}},te.fourcc="avc2",te),ee,avc3SampleEntry=(ee=class extends avcCSampleEntryBase{constructor(){super(...arguments),this.box_name="AVCSampleEntry"}},ee.fourcc="avc3",ee),ie,avc4SampleEntry=(ie=class extends avcCSampleEntryBase{constructor(){super(...arguments),this.box_name="AVC2SampleEntry"}},ie.fourcc="avc4",ie),ne,av01SampleEntry=(ne=class extends VisualSampleEntry{constructor(){super(...arguments),this.box_name="AV1SampleEntry"}getCodec(){const o=super.getCodec(),l=this.av1C.seq_level_idx_0,i=l<10?"0"+l:l;let r;return this.av1C.seq_profile===2&&this.av1C.high_bitdepth===1?r=this.av1C.twelve_bit===1?"12":"10":this.av1C.seq_profile<=2&&(r=this.av1C.high_bitdepth===1?"10":"08"),o+"."+this.av1C.seq_profile+"."+i+(this.av1C.seq_tier_0?"H":"M")+"."+r}},ne.fourcc="av01",ne),oe,dav1SampleEntry=(oe=class extends VisualSampleEntry{},oe.fourcc="dav1",oe),hvcCSampleEntryBase=class extends VisualSampleEntry{getCodec(){let d=super.getCodec();if(this.hvcC){switch(d+=".",this.hvcC.general_profile_space){case 0:d+="";break;case 1:d+="A";break;case 2:d+="B";break;case 3:d+="C";break}d+=this.hvcC.general_profile_idc,d+=".";let o=this.hvcC.general_profile_compatibility,l=0;for(let t=0;t<32&&(l|=o&1,t!==31);t++)l<<=1,o>>=1;d+=decimalToHex(l,0),d+=".",this.hvcC.general_tier_flag===0?d+="L":d+="H",d+=this.hvcC.general_level_idc;let i=!1,r="";for(let t=5;t>=0;t--)(this.hvcC.general_constraint_indicator[t]||i)&&(r="."+decimalToHex(this.hvcC.general_constraint_indicator[t],0)+r,i=!0);d+=r}return d}},re,hvc1SampleEntry=(re=class extends hvcCSampleEntryBase{constructor(){super(...arguments),this.box_name="HEVCSampleEntry"}},re.fourcc="hvc1",re),le,hvc2SampleEntry=(le=class extends hvcCSampleEntryBase{},le.fourcc="hvc2",le),se,hev1SampleEntry=(se=class extends hvcCSampleEntryBase{constructor(){super(...arguments),this.box_name="HEVCSampleEntry",this.colrs=[],this.subBoxNames=["colr"]}},se.fourcc="hev1",se),ae,hev2SampleEntry=(ae=class extends hvcCSampleEntryBase{},ae.fourcc="hev2",ae),de,hvt1SampleEntry=(de=class extends VisualSampleEntry{constructor(){super(...arguments),this.box_name="HEVCTileSampleSampleEntry"}},de.fourcc="hvt1",de),Ue,lhe1SampleEntry=(Ue=class extends VisualSampleEntry{constructor(){super(...arguments),this.box_name="LHEVCSampleEntry"}},Ue.fourcc="lhe1",Ue),ue,lhv1SampleEntry=(ue=class extends VisualSampleEntry{constructor(){super(...arguments),this.box_name="LHEVCSampleEntry"}},ue.fourcc="lhv1",ue),ce,dvh1SampleEntry=(ce=class extends VisualSampleEntry{},ce.fourcc="dvh1",ce),Fe,dvheSampleEntry=(Fe=class extends VisualSampleEntry{},Fe.fourcc="dvhe",Fe),vvcCSampleEntryBase=class extends VisualSampleEntry{getCodec(){let d=super.getCodec();if(this.vvcC){d+="."+this.vvcC.general_profile_idc,this.vvcC.general_tier_flag?d+=".H":d+=".L",d+=this.vvcC.general_level_idc;let o="";if(this.vvcC.general_constraint_info){const l=[];let i=0;i|=this.vvcC.ptl_frame_only_constraint_flag<<7,i|=this.vvcC.ptl_multilayer_enabled_flag<<6;let r;for(let t=0;t<this.vvcC.general_constraint_info.length;++t)i|=this.vvcC.general_constraint_info[t]>>2&63,l.push(i),i&&(r=t),i=this.vvcC.general_constraint_info[t]>>2&3;if(r===void 0)o=".CA";else{o=".C";const t="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567";let e=0,n=0;for(let s=0;s<=r;++s)for(e=e<<8|l[s],n+=8;n>=5;){const a=e>>n-5&31;o+=t[a],n-=5,e&=(1<<n)-1}n&&(e<<=5-n,o+=t[e&31])}}d+=o}return d}},Qe,vvc1SampleEntry=(Qe=class extends vvcCSampleEntryBase{constructor(){super(...arguments),this.box_name="VvcSampleEntry"}},Qe.fourcc="vvc1",Qe),pe,vvi1SampleEntry=(pe=class extends vvcCSampleEntryBase{constructor(){super(...arguments),this.box_name="VvcSampleEntry"}},pe.fourcc="vvi1",pe),fe,vvs1SampleEntry=(fe=class extends VisualSampleEntry{constructor(){super(...arguments),this.box_name="VvcSampleEntry"}},fe.fourcc="vvs1",fe),he,vvcNSampleEntry=(he=class extends VisualSampleEntry{constructor(){super(...arguments),this.box_name="VvcNonVCLSampleEntry"}},he.fourcc="vvcN",he),vpcCSampleEntryBase=class extends VisualSampleEntry{getCodec(){const d=super.getCodec();let o=this.vpcC.level;o===0&&(o="00");let l=this.vpcC.bitDepth;return l===8&&(l="08"),`${d}.0${this.vpcC.profile}.${o}.${l}`}},Be,vp08SampleEntry=(Be=class extends vpcCSampleEntryBase{},Be.fourcc="vp08",Be),Re,vp09SampleEntry=(Re=class extends vpcCSampleEntryBase{},Re.fourcc="vp09",Re),Se,avs3SampleEntry=(Se=class extends VisualSampleEntry{},Se.fourcc="avs3",Se),ye,j2kiSampleEntry=(ye=class extends VisualSampleEntry{constructor(){super(...arguments),this.box_name="J2KSampleEntry"}},ye.fourcc="j2ki",ye),Ve,mjp2SampleEntry=(Ve=class extends VisualSampleEntry{},Ve.fourcc="mjp2",Ve),Je,mjpgSampleEntry=(Je=class extends VisualSampleEntry{},Je.fourcc="mjpg",Je),Ee,uncvSampleEntry=(Ee=class extends VisualSampleEntry{constructor(){super(...arguments),this.box_name="UncompressedVideoSampleEntry"}},Ee.fourcc="uncv",Ee),me,mp4vSampleEntry=(me=class extends VisualSampleEntry{constructor(){super(...arguments),this.box_name="MP4VisualSampleEntry"}},me.fourcc="mp4v",me),ke,mp4aSampleEntry=(ke=class extends AudioSampleEntry{constructor(){super(...arguments),this.box_name="MP4AudioSampleEntry"}getCodec(){const o=super.getCodec();if(this.esds&&this.esds.esd){const l=this.esds.esd.getOTI(),i=this.esds.esd.getAudioConfig();return o+"."+decimalToHex(l)+(i?"."+i:"")}else return o}},ke.fourcc="mp4a",ke),Ne,m4aeSampleEntry=(Ne=class extends AudioSampleEntry{},Ne.fourcc="m4ae",Ne),Te,ac_3SampleEntry=(Te=class extends AudioSampleEntry{},Te.fourcc="ac-3",Te),We,ac_4SampleEntry=(We=class extends AudioSampleEntry{},We.fourcc="ac-4",We),Ce,ec_3SampleEntry=(Ce=class extends AudioSampleEntry{},Ce.fourcc="ec-3",Ce),ve,OpusSampleEntry=(ve=class extends AudioSampleEntry{},ve.fourcc="Opus",ve),be,mha1SampleEntry=(be=class extends AudioSampleEntry{},be.fourcc="mha1",be),Oe,mha2SampleEntry=(Oe=class extends AudioSampleEntry{},Oe.fourcc="mha2",Oe),Ze,mhm1SampleEntry=(Ze=class extends AudioSampleEntry{},Ze.fourcc="mhm1",Ze),De,mhm2SampleEntry=(De=class extends AudioSampleEntry{},De.fourcc="mhm2",De),we,fLaCSampleEntry=(we=class extends AudioSampleEntry{},we.fourcc="fLaC",we),ge,encvSampleEntry=(ge=class extends VisualSampleEntry{},ge.fourcc="encv",ge),xe,encaSampleEntry=(xe=class extends AudioSampleEntry{},xe.fourcc="enca",xe),Ie,encuSampleEntry=(Ie=class extends SubtitleSampleEntry{constructor(){super(...arguments),this.subBoxNames=["sinf"],this.sinfs=[]}},Ie.fourcc="encu",Ie),Me,encsSampleEntry=(Me=class extends SystemSampleEntry{constructor(){super(...arguments),this.subBoxNames=["sinf"],this.sinfs=[]}},Me.fourcc="encs",Me),_e,mp4sSampleEntry=(_e=class extends SystemSampleEntry{},_e.fourcc="mp4s",_e),Pe,enctSampleEntry=(Pe=class extends TextSampleEntry{constructor(){super(...arguments),this.subBoxNames=["sinf"],this.sinfs=[]}},Pe.fourcc="enct",Pe),$e,encmSampleEntry=($e=class extends MetadataSampleEntry{constructor(){super(...arguments),this.subBoxNames=["sinf"],this.sinfs=[]}},$e.fourcc="encm",$e),Le,resvSampleEntry=(Le=class extends VisualSampleEntry{constructor(){super(...arguments),this.box_name="RestrictedVideoSampleEntry"}},Le.fourcc="resv",Le),Ae,sbttSampleEntry=(Ae=class extends SubtitleSampleEntry{parse(o){this.parseHeader(o),this.content_encoding=o.readCString(),this.mime_format=o.readCString(),this.parseFooter(o)}},Ae.fourcc="sbtt",Ae),Ge,stppSampleEntry=(Ge=class extends SubtitleSampleEntry{parse(o){this.parseHeader(o),this.namespace=o.readCString(),this.schema_location=o.readCString(),this.auxiliary_mime_types=o.readCString(),this.parseFooter(o)}write(o){this.writeHeader(o),this.size+=this.namespace.length+1+this.schema_location.length+1+this.auxiliary_mime_types.length+1,o.writeCString(this.namespace),o.writeCString(this.schema_location),o.writeCString(this.auxiliary_mime_types),this.writeFooter(o)}},Ge.fourcc="stpp",Ge),He,stxtSampleEntry=(He=class extends SubtitleSampleEntry{parse(o){this.parseHeader(o),this.content_encoding=o.readCString(),this.mime_format=o.readCString(),this.parseFooter(o)}getCodec(){const o=super.getCodec();return this.mime_format?o+"."+this.mime_format:o}},He.fourcc="stxt",He),ze,tx3gSampleEntry=(ze=class extends SubtitleSampleEntry{parse(o){this.parseHeader(o),this.displayFlags=o.readUint32(),this.horizontal_justification=o.readInt8(),this.vertical_justification=o.readInt8(),this.bg_color_rgba=o.readUint8Array(4),this.box_record=o.readInt16Array(4),this.style_record=o.readUint8Array(12),this.parseFooter(o)}},ze.fourcc="tx3g",ze),Ye,wvttSampleEntry=(Ye=class extends MetadataSampleEntry{parse(o){this.parseHeader(o),this.parseFooter(o)}},Ye.fourcc="wvtt",Ye),je,sbgpBox=(je=class extends FullBox{constructor(){super(...arguments),this.box_name="SampleToGroupBox"}parse(o){this.parseFullHeader(o),this.grouping_type=o.readString(4),this.version===1?this.grouping_type_parameter=o.readUint32():this.grouping_type_parameter=0,this.entries=[];const l=o.readUint32();for(let i=0;i<l;i++)this.entries.push({sample_count:o.readInt32(),group_description_index:o.readInt32()})}write(o){this.grouping_type_parameter?this.version=1:this.version=0,this.flags=0,this.size=8+8*this.entries.length+(this.version===1?4:0),this.writeHeader(o),o.writeString(this.grouping_type,void 0,4),this.version===1&&o.writeUint32(this.grouping_type_parameter),o.writeUint32(this.entries.length);for(let l=0;l<this.entries.length;l++){const i=this.entries[l];o.writeInt32(i.sample_count),o.writeInt32(i.group_description_index)}}},je.fourcc="sbgp",je),Xe,sdtpBox=(Xe=class extends FullBox{constructor(){super(...arguments),this.box_name="SampleDependencyTypeBox"}parse(o){this.parseFullHeader(o);const l=this.size-this.hdr_size;this.is_leading=[],this.sample_depends_on=[],this.sample_is_depended_on=[],this.sample_has_redundancy=[];for(let i=0;i<l;i++){const r=o.readUint8();this.is_leading[i]=r>>6,this.sample_depends_on[i]=r>>4&3,this.sample_is_depended_on[i]=r>>2&3,this.sample_has_redundancy[i]=r&3}}},Xe.fourcc="sdtp",Xe),Ke,sgpdBox=(Ke=class extends FullBox{constructor(){super(...arguments),this.box_name="SampleGroupDescriptionBox"}parse(o){this.parseFullHeader(o),this.grouping_type=o.readString(4),Log.debug("BoxParser","Found Sample Groups of type "+this.grouping_type),this.version===1?this.default_length=o.readUint32():this.default_length=0,this.version>=2&&(this.default_group_description_index=o.readUint32()),this.entries=[];const l=o.readUint32();for(let i=0;i<l;i++){let r;this.grouping_type in BoxRegistry.sampleGroupEntry?r=new BoxRegistry.sampleGroupEntry[this.grouping_type](this.grouping_type):r=new SampleGroupEntry(this.grouping_type),this.entries.push(r),this.version===1?this.default_length===0?r.description_length=o.readUint32():r.description_length=this.default_length:r.description_length=this.default_length,r.write===SampleGroupEntry.prototype.write&&(Log.info("BoxParser","SampleGroup for type "+this.grouping_type+" writing not yet implemented, keeping unparsed data in memory for later write"),r.data=o.readUint8Array(r.description_length),o.seek(o.getPosition()-r.description_length)),r.parse(o)}}write(o){this.flags=0,this.size=12;for(let l=0;l<this.entries.length;l++){const i=this.entries[l];this.version===1&&(this.default_length===0&&(this.size+=4),this.size+=i.data.length)}this.writeHeader(o),o.writeString(this.grouping_type,void 0,4),this.version===1&&o.writeUint32(this.default_length),this.version>=2&&o.writeUint32(this.default_sample_description_index),o.writeUint32(this.entries.length);for(let l=0;l<this.entries.length;l++){const i=this.entries[l];this.version===1&&this.default_length===0&&o.writeUint32(i.description_length),i.write(o)}}},Ke.fourcc="sgpd",Ke),qe,sidxBox=(qe=class extends FullBox{constructor(){super(...arguments),this.box_name="CompressedSegmentIndexBox"}parse(o){this.parseFullHeader(o),this.reference_ID=o.readUint32(),this.timescale=o.readUint32(),this.version===0?(this.earliest_presentation_time=o.readUint32(),this.first_offset=o.readUint32()):(this.earliest_presentation_time=o.readUint64(),this.first_offset=o.readUint64()),o.readUint16(),this.references=[];const l=o.readUint16();for(let i=0;i<l;i++){const r=o.readUint32(),t=o.readUint32(),e=o.readUint32();this.references.push({reference_type:r>>31&1,referenced_size:r&2147483647,subsegment_duration:t,starts_with_SAP:e>>31&1,SAP_type:e>>28&7,SAP_delta_time:e&268435455})}}write(o){const l=this.earliest_presentation_time>MAX_UINT32||this.first_offset>MAX_UINT32||this.version===1;this.version=l?1:0,this.size=4*2+2+2+12*this.references.length,this.size+=l?16:8,this.flags=0,this.writeHeader(o),o.writeUint32(this.reference_ID),o.writeUint32(this.timescale),l?(o.writeUint64(this.earliest_presentation_time),o.writeUint64(this.first_offset)):(o.writeUint32(this.earliest_presentation_time),o.writeUint32(this.first_offset)),o.writeUint16(0),o.writeUint16(this.references.length);for(let i=0;i<this.references.length;i++){const r=this.references[i];o.writeUint32(r.reference_type<<31|r.referenced_size),o.writeUint32(r.subsegment_duration),o.writeUint32(r.starts_with_SAP<<31|r.SAP_type<<28|r.SAP_delta_time)}}},qe.fourcc="sidx",qe),ti,smhdBox=(ti=class extends FullBox{constructor(){super(...arguments),this.box_name="SoundMediaHeaderBox"}parse(o){this.parseFullHeader(o),this.balance=o.readUint16(),o.readUint16()}write(o){this.version=0,this.size=4,this.writeHeader(o),o.writeUint16(this.balance),o.writeUint16(0)}},ti.fourcc="smhd",ti),ei,stcoBox=(ei=class extends FullBox{constructor(){super(...arguments),this.box_name="ChunkOffsetBox"}parse(o){this.parseFullHeader(o);const l=o.readUint32();if(this.chunk_offsets=[],this.version===0)for(let i=0;i<l;i++)this.chunk_offsets.push(o.readUint32())}write(o){this.version=0,this.flags=0,this.size=4+4*this.chunk_offsets.length,this.writeHeader(o),o.writeUint32(this.chunk_offsets.length),o.writeUint32Array(this.chunk_offsets)}unpack(o){for(let l=0;l<this.chunk_offsets.length;l++)o[l].offset=this.chunk_offsets[l]}},ei.fourcc="stco",ei),ii,sthdBox=(ii=class extends FullBox{constructor(){super(...arguments),this.box_name="SubtitleMediaHeaderBox"}},ii.fourcc="sthd",ii),ni,stscBox=(ni=class extends FullBox{constructor(){super(...arguments),this.box_name="SampleToChunkBox"}parse(o){this.parseFullHeader(o);const l=o.readUint32();if(this.first_chunk=[],this.samples_per_chunk=[],this.sample_description_index=[],this.version===0)for(let i=0;i<l;i++)this.first_chunk.push(o.readUint32()),this.samples_per_chunk.push(o.readUint32()),this.sample_description_index.push(o.readUint32())}write(o){this.version=0,this.flags=0,this.size=4+12*this.first_chunk.length,this.writeHeader(o),o.writeUint32(this.first_chunk.length);for(let l=0;l<this.first_chunk.length;l++)o.writeUint32(this.first_chunk[l]),o.writeUint32(this.samples_per_chunk[l]),o.writeUint32(this.sample_description_index[l])}unpack(o){let l=0,i=0;for(let r=0;r<this.first_chunk.length;r++)for(let t=0;t<(r+1<this.first_chunk.length?this.first_chunk[r+1]:1/0);t++){i++;for(let e=0;e<this.samples_per_chunk[r];e++){if(o[l])o[l].description_index=this.sample_description_index[r],o[l].chunk_index=i;else return;l++}}}},ni.fourcc="stsc",ni),oi,stsdBox=(oi=class extends FullBox{constructor(){super(...arguments),this.box_name="SampleDescriptionBox"}parse(o){this.parseFullHeader(o),this.entries=[];const l=o.readUint32();for(let i=1;i<=l;i++){const r=parseOneBox(o,!0,this.size-(o.getPosition()-this.start));if(r.code===OK){let t;r.type in BoxRegistry.sampleEntry?(t=new BoxRegistry.sampleEntry[r.type](r.size),t.hdr_size=r.hdr_size,t.start=r.start):(Log.warn("BoxParser",`Unknown sample entry type: '${r.type}'`),t=new SampleEntry(r.size,r.hdr_size,r.start),t.type=r.type),t.write===SampleEntry.prototype.write&&(Log.info("BoxParser","SampleEntry "+t.type+" box writing not yet implemented, keeping unparsed data in memory for later write"),t.parseDataAndRewind(o)),t.parse(o),this.entries.push(t)}else return}}write(o){this.version=0,this.flags=0,this.size=0,this.writeHeader(o),o.writeUint32(this.entries.length),this.size+=4;for(let l=0;l<this.entries.length;l++)this.entries[l].write(o),this.size+=this.entries[l].size;Log.debug("BoxWriter","Adjusting box "+this.type+" with new size "+this.size),o.adjustUint32(this.sizePosition,this.size)}},oi.fourcc="stsd",oi),ri,stszBox=(ri=class extends FullBox{constructor(){super(...arguments),this.box_name="SampleSizeBox"}parse(o){if(this.parseFullHeader(o),this.sample_sizes=[],this.version===0){this.sample_size=o.readUint32(),this.sample_count=o.readUint32();for(let l=0;l<this.sample_count;l++)this.sample_size===0?this.sample_sizes.push(o.readUint32()):this.sample_sizes[l]=this.sample_size}}write(o){let l=!0;if(this.version=0,this.flags=0,this.sample_sizes.length>0){let i=0;for(;i+1<this.sample_sizes.length;)if(this.sample_sizes[i+1]!==this.sample_sizes[0]){l=!1;break}else i++}else l=!1;this.size=8,l||(this.size+=4*this.sample_sizes.length),this.writeHeader(o),l?o.writeUint32(this.sample_sizes[0]):o.writeUint32(0),o.writeUint32(this.sample_sizes.length),l||o.writeUint32Array(this.sample_sizes)}unpack(o){for(let l=0;l<this.sample_sizes.length;l++)o[l].size=this.sample_sizes[l]}},ri.fourcc="stsz",ri),li,sttsBox=(li=class extends FullBox{constructor(){super(...arguments),this.box_name="TimeToSampleBox",this.sample_counts=[],this.sample_deltas=[]}parse(o){this.parseFullHeader(o);const l=o.readUint32();if(this.sample_counts.length=0,this.sample_deltas.length=0,this.version===0)for(let i=0;i<l;i++){this.sample_counts.push(o.readUint32());let r=o.readInt32();r<0&&(Log.warn("BoxParser","File uses negative stts sample delta, using value 1 instead, sync may be lost!"),r=1),this.sample_deltas.push(r)}}write(o){this.version=0,this.flags=0,this.size=4+8*this.sample_counts.length,this.writeHeader(o),o.writeUint32(this.sample_counts.length);for(let l=0;l<this.sample_counts.length;l++)o.writeUint32(this.sample_counts[l]),o.writeUint32(this.sample_deltas[l])}unpack(o){let l=0;for(let i=0;i<this.sample_counts.length;i++)for(let r=0;r<this.sample_counts[i];r++)l===0?o[l].dts=0:o[l].dts=o[l-1].dts+this.sample_deltas[i],l++}},li.fourcc="stts",li),si,tfdtBox=(si=class extends FullBox{constructor(){super(...arguments),this.box_name="TrackFragmentBaseMediaDecodeTimeBox"}parse(o){this.parseFullHeader(o),this.version===1?this.baseMediaDecodeTime=o.readUint64():this.baseMediaDecodeTime=o.readUint32()}write(o){const l=this.baseMediaDecodeTime>MAX_UINT32||this.version===1;this.version=l?1:0,this.size=4,this.size+=l?4:0,this.flags=0,this.writeHeader(o),l?o.writeUint64(this.baseMediaDecodeTime):o.writeUint32(this.baseMediaDecodeTime)}},si.fourcc="tfdt",si),ai,tfhdBox=(ai=class extends FullBox{constructor(){super(...arguments),this.box_name="TrackFragmentHeaderBox"}parse(o){this.parseFullHeader(o);let l=0;this.track_id=o.readUint32(),this.size-this.hdr_size>l&&this.flags&TFHD_FLAG_BASE_DATA_OFFSET?(this.base_data_offset=o.readUint64(),l+=8):this.base_data_offset=0,this.size-this.hdr_size>l&&this.flags&TFHD_FLAG_SAMPLE_DESC?(this.default_sample_description_index=o.readUint32(),l+=4):this.default_sample_description_index=0,this.size-this.hdr_size>l&&this.flags&TFHD_FLAG_SAMPLE_DUR?(this.default_sample_duration=o.readUint32(),l+=4):this.default_sample_duration=0,this.size-this.hdr_size>l&&this.flags&TFHD_FLAG_SAMPLE_SIZE?(this.default_sample_size=o.readUint32(),l+=4):this.default_sample_size=0,this.size-this.hdr_size>l&&this.flags&TFHD_FLAG_SAMPLE_FLAGS?(this.default_sample_flags=o.readUint32(),l+=4):this.default_sample_flags=0}write(o){this.version=0,this.size=4,this.flags&TFHD_FLAG_BASE_DATA_OFFSET&&(this.size+=8),this.flags&TFHD_FLAG_SAMPLE_DESC&&(this.size+=4),this.flags&TFHD_FLAG_SAMPLE_DUR&&(this.size+=4),this.flags&TFHD_FLAG_SAMPLE_SIZE&&(this.size+=4),this.flags&TFHD_FLAG_SAMPLE_FLAGS&&(this.size+=4),this.writeHeader(o),o.writeUint32(this.track_id),this.flags&TFHD_FLAG_BASE_DATA_OFFSET&&o.writeUint64(this.base_data_offset),this.flags&TFHD_FLAG_SAMPLE_DESC&&o.writeUint32(this.default_sample_description_index),this.flags&TFHD_FLAG_SAMPLE_DUR&&o.writeUint32(this.default_sample_duration),this.flags&TFHD_FLAG_SAMPLE_SIZE&&o.writeUint32(this.default_sample_size),this.flags&TFHD_FLAG_SAMPLE_FLAGS&&o.writeUint32(this.default_sample_flags)}},ai.fourcc="tfhd",ai),di,tkhdBox=(di=class extends FullBox{constructor(){super(...arguments),this.box_name="TrackHeaderBox",this.layer=0,this.alternate_group=0}parse(o){this.parseFullHeader(o),this.version===1?(this.creation_time=o.readUint64(),this.modification_time=o.readUint64(),this.track_id=o.readUint32(),o.readUint32(),this.duration=o.readUint64()):(this.creation_time=o.readUint32(),this.modification_time=o.readUint32(),this.track_id=o.readUint32(),o.readUint32(),this.duration=o.readUint32()),o.readUint32Array(2),this.layer=o.readInt16(),this.alternate_group=o.readInt16(),this.volume=o.readInt16()>>8,o.readUint16(),this.matrix=o.readInt32Array(9),this.width=o.readUint32(),this.height=o.readUint32()}write(o){const l=this.modification_time>MAX_UINT32||this.creation_time>MAX_UINT32||this.duration>MAX_UINT32||this.version===1;this.version=l?1:0,this.size=5*4+15*4,this.size+=l?3*4:0,this.flags=this.flags??3,this.writeHeader(o),l?(o.writeUint64(this.creation_time),o.writeUint64(this.modification_time),o.writeUint32(this.track_id),o.writeUint32(0),o.writeUint64(this.duration)):(o.writeUint32(this.creation_time),o.writeUint32(this.modification_time),o.writeUint32(this.track_id),o.writeUint32(0),o.writeUint32(this.duration)),o.writeUint32Array([0,0]),o.writeInt16(this.layer),o.writeInt16(this.alternate_group),o.writeInt16(this.volume<<8),o.writeInt16(0),o.writeInt32Array(this.matrix),o.writeUint32(this.width),o.writeUint32(this.height)}print(o){super.printHeader(o),o.log(o.indent+"creation_time: "+this.creation_time),o.log(o.indent+"modification_time: "+this.modification_time),o.log(o.indent+"track_id: "+this.track_id),o.log(o.indent+"duration: "+this.duration),o.log(o.indent+"volume: "+(this.volume>>8)),o.log(o.indent+"matrix: "+this.matrix.join(", ")),o.log(o.indent+"layer: "+this.layer),o.log(o.indent+"alternate_group: "+this.alternate_group),o.log(o.indent+"width: "+this.width),o.log(o.indent+"height: "+this.height)}},di.fourcc="tkhd",di),Ui,trexBox=(Ui=class extends FullBox{constructor(){super(...arguments),this.box_name="TrackExtendsBox"}parse(o){this.parseFullHeader(o),this.track_id=o.readUint32(),this.default_sample_description_index=o.readUint32(),this.default_sample_duration=o.readUint32(),this.default_sample_size=o.readUint32(),this.default_sample_flags=o.readUint32()}write(o){this.version=0,this.flags=0,this.size=4*5,this.writeHeader(o),o.writeUint32(this.track_id),o.writeUint32(this.default_sample_description_index),o.writeUint32(this.default_sample_duration),o.writeUint32(this.default_sample_size),o.writeUint32(this.default_sample_flags)}},Ui.fourcc="trex",Ui),ui,trunBox=(ui=class extends FullBox{constructor(){super(...arguments),this.box_name="TrackRunBox",this.sample_duration=[],this.sample_size=[],this.sample_flags=[],this.sample_composition_time_offset=[]}parse(o){this.parseFullHeader(o);let l=0;if(this.sample_count=o.readUint32(),l+=4,this.size-this.hdr_size>l&&this.flags&TRUN_FLAGS_DATA_OFFSET?(this.data_offset=o.readInt32(),l+=4):this.data_offset=0,this.size-this.hdr_size>l&&this.flags&TRUN_FLAGS_FIRST_FLAG?(this.first_sample_flags=o.readUint32(),l+=4):this.first_sample_flags=0,this.sample_duration=[],this.sample_size=[],this.sample_flags=[],this.sample_composition_time_offset=[],this.size-this.hdr_size>l)for(let i=0;i<this.sample_count;i++)this.flags&TRUN_FLAGS_DURATION&&(this.sample_duration[i]=o.readUint32()),this.flags&TRUN_FLAGS_SIZE&&(this.sample_size[i]=o.readUint32()),this.flags&TRUN_FLAGS_FLAGS&&(this.sample_flags[i]=o.readUint32()),this.flags&TRUN_FLAGS_CTS_OFFSET&&(this.version===0?this.sample_composition_time_offset[i]=o.readUint32():this.sample_composition_time_offset[i]=o.readInt32())}write(o){this.size=4,this.flags&TRUN_FLAGS_DATA_OFFSET&&(this.size+=4),this.flags&TRUN_FLAGS_FIRST_FLAG&&(this.size+=4),this.flags&TRUN_FLAGS_DURATION&&(this.size+=4*this.sample_duration.length),this.flags&TRUN_FLAGS_SIZE&&(this.size+=4*this.sample_size.length),this.flags&TRUN_FLAGS_FLAGS&&(this.size+=4*this.sample_flags.length),this.flags&TRUN_FLAGS_CTS_OFFSET&&(this.size+=4*this.sample_composition_time_offset.length),this.writeHeader(o),o.writeUint32(this.sample_count),this.flags&TRUN_FLAGS_DATA_OFFSET&&(this.data_offset_position=o.getPosition(),o.writeInt32(this.data_offset)),this.flags&TRUN_FLAGS_FIRST_FLAG&&o.writeUint32(this.first_sample_flags);for(let l=0;l<this.sample_count;l++)this.flags&TRUN_FLAGS_DURATION&&o.writeUint32(this.sample_duration[l]),this.flags&TRUN_FLAGS_SIZE&&o.writeUint32(this.sample_size[l]),this.flags&TRUN_FLAGS_FLAGS&&o.writeUint32(this.sample_flags[l]),this.flags&TRUN_FLAGS_CTS_OFFSET&&(this.version===0?o.writeUint32(this.sample_composition_time_offset[l]):o.writeInt32(this.sample_composition_time_offset[l]))}},ui.fourcc="trun",ui),ci,urlBox=(ci=class extends FullBox{constructor(){super(...arguments),this.box_name="DataEntryUrlBox"}parse(o){this.parseFullHeader(o),this.flags!==1&&(this.location=o.readCString())}write(o){this.version=0,this.location?(this.flags=0,this.size=this.location.length+1):(this.flags=1,this.size=0),this.writeHeader(o),this.location&&o.writeCString(this.location)}},ci.fourcc="url ",ci),Fi,vmhdBox=(Fi=class extends FullBox{constructor(){super(...arguments),this.box_name="VideoMediaHeaderBox"}parse(o){this.parseFullHeader(o),this.graphicsmode=o.readUint16(),this.opcolor=o.readUint16Array(3)}write(o){this.version=0,this.size=8,this.writeHeader(o),o.writeUint16(this.graphicsmode),o.writeUint16Array(this.opcolor)}},Fi.fourcc="vmhd",Fi),SampleGroupInfo=class{constructor(d,o,l){this.grouping_type=d,this.grouping_type_parameter=o,this.sbgp=l,this.last_sample_in_run=-1,this.entry_index=-1}},ISOFile=class w{constructor(o,l=!0){this.boxes=[],this.mdats=[],this.moofs=[],this.isProgressive=!1,this.moovStartFound=!1,this.moovStartSent=!1,this.readySent=!1,this.sampleListBuilt=!1,this.fragmentedTracks=[],this.extractedTracks=[],this.isFragmentationInitialized=!1,this.sampleProcessingStarted=!1,this.nextMoofNumber=0,this.itemListBuilt=!1,this.sidxSent=!1,this.items=[],this.entity_groups=[],this.itemsDataSize=0,this.lastMoofIndex=0,this.samplesDataSize=0,this.lastBoxStartPosition=0,this.nextParsePosition=0,this.discardMdatData=!0,this.discardMdatData=l,o?(this.stream=o,this.parse()):this.stream=new MultiBufferStream,this.stream.isofile=this}setSegmentOptions(o,l,i){const{sizePerSegment:r=Number.MAX_SAFE_INTEGER,rapAlignement:t=!0}=i;let e=i.nbSamples??i.nbSamplesPerFragment??1e3;const n=i.nbSamplesPerFragment??e;if(e<=0||n<=0||r<=0){Log.error("ISOFile",`Invalid segment options: nbSamples=${e}, nbSamplesPerFragment=${n}, sizePerSegment=${r}`);return}if(e<n&&(Log.warn("ISOFile",`nbSamples (${e}) is less than nbSamplesPerFragment (${n}), setting nbSamples to nbSamplesPerFragment`),e=n),this.fragmentedTracks.some(a=>a.nb_samples!==e)){Log.error("ISOFile",`Cannot set segment options for track ${o}: nbSamples (${e}) does not match existing tracks`);return}const s=this.getTrackById(o);if(s){const a={id:o,user:l,trak:s,segmentStream:void 0,nb_samples:e,nb_samples_per_fragment:n,size_per_segment:r,rapAlignement:t,state:{lastFragmentSampleNumber:0,lastSegmentSampleNumber:0,accumulatedSize:0}};this.fragmentedTracks.push(a),s.nextSample=0}this.discardMdatData&&Log.warn("ISOFile","Segmentation options set but discardMdatData is true, samples will not be segmented")}unsetSegmentOptions(o){let l=-1;for(let i=0;i<this.fragmentedTracks.length;i++)this.fragmentedTracks[i].id===o&&(l=i);l>-1&&this.fragmentedTracks.splice(l,1)}setExtractionOptions(o,l,{nbSamples:i=1e3}={}){const r=this.getTrackById(o);r&&(this.extractedTracks.push({id:o,user:l,trak:r,nb_samples:i,samples:[]}),r.nextSample=0),this.discardMdatData&&Log.warn("ISOFile","Extraction options set but discardMdatData is true, samples will not be extracted")}unsetExtractionOptions(o){let l=-1;for(let i=0;i<this.extractedTracks.length;i++)this.extractedTracks[i].id===o&&(l=i);l>-1&&this.extractedTracks.splice(l,1)}parse(){if(!(this.restoreParsePosition&&!this.restoreParsePosition()))for(;;)if(this.hasIncompleteMdat&&this.hasIncompleteMdat()){if(this.processIncompleteMdat())continue;return}else{this.saveParsePosition&&this.saveParsePosition();const l=parseOneBox(this.stream,!1);if(l.code===ERR_NOT_ENOUGH_DATA)if(this.processIncompleteBox){if(this.processIncompleteBox(l))continue;return}else return;else if(l.code===OK){const i=l.box;if(this.boxes.push(i),i.type==="uuid")this[i.uuid]!==void 0&&Log.warn("ISOFile","Duplicate Box of uuid: "+i.uuid+", overriding previous occurrence"),this[i.uuid]=i;else switch(i.type){case"mdat":this.mdats.push(i),this.transferMdatData(i);break;case"moof":this.moofs.push(i);break;case"free":case"skip":break;case"moov":this.moovStartFound=!0,this.mdats.length===0&&(this.isProgressive=!0);default:this[i.type]!==void 0?Array.isArray(this[i.type+"s"])?(Log.info("ISOFile",`Found multiple boxes of type ${i.type} in ISOFile, adding to array`),this[i.type+"s"].push(i)):(Log.warn("ISOFile",`Found multiple boxes of type ${i.type} but no array exists. Creating array dynamically.`),this[i.type+"s"]=[this[i.type],i]):(this[i.type]=i,Array.isArray(this[i.type+"s"])&&this[i.type+"s"].push(i));break}this.updateUsedBytes&&this.updateUsedBytes(i,l)}else if(l.code===ERR_INVALID_DATA){Log.error("ISOFile",`Invalid data found while parsing box of type '${l.type}' at position ${l.start}. Aborting parsing.`,this);break}}}checkBuffer(o){if(!o)throw new Error("Buffer must be defined and non empty");return o.byteLength===0?(Log.warn("ISOFile","Ignoring empty buffer (fileStart: "+o.fileStart+")"),this.stream.logBufferLevel(),!1):(Log.info("ISOFile","Processing buffer (fileStart: "+o.fileStart+")"),o.usedBytes=0,this.stream.insertBuffer(o),this.stream.logBufferLevel(),this.stream.initialized()?!0:(Log.warn("ISOFile","Not ready to start parsing"),!1))}appendBuffer(o,l){let i;if(this.checkBuffer(o))return this.parse(),this.moovStartFound&&!this.moovStartSent&&(this.moovStartSent=!0,this.onMoovStart&&this.onMoovStart()),this.moov?(this.sampleListBuilt||(this.buildSampleLists(),this.sampleListBuilt=!0),this.updateSampleLists(),this.onReady&&!this.readySent&&(this.readySent=!0,this.onReady(this.getInfo())),this.processSamples(l),this.nextSeekPosition?(i=this.nextSeekPosition,this.nextSeekPosition=void 0):i=this.nextParsePosition,this.stream.getEndFilePositionAfter&&(i=this.stream.getEndFilePositionAfter(i))):this.nextParsePosition?i=this.nextParsePosition:i=0,this.sidx&&this.onSidx&&!this.sidxSent&&(this.onSidx(this.sidx),this.sidxSent=!0),this.meta&&(this.flattenItemInfo&&!this.itemListBuilt&&(this.flattenItemInfo(),this.itemListBuilt=!0),this.processItems&&this.processItems(this.onItem)),this.stream.cleanBuffers&&(Log.info("ISOFile","Done processing buffer (fileStart: "+o.fileStart+") - next buffer to fetch should have a fileStart position of "+i),this.stream.logBufferLevel(),this.stream.cleanBuffers(),this.stream.logBufferLevel(!0),Log.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize())),i}getFragmentDuration(){const o=this.getBox("mvex");if(!o)return;if(o.mehd)return{num:o.mehd.fragment_duration,den:this.moov.mvhd.timescale};const l=this.getBoxes("trak",!1);let i={num:0,den:1};for(const r of l){const t=r.samples_duration,e=r.mdia.mdhd.timescale;t&&e&&t/e>i.num/i.den&&(i={num:t,den:e})}return i}getInfo(){if(!this.moov)return{hasMoov:!1,mime:""};const o=new Date("1904-01-01T00:00:00Z").getTime(),l=this.getBox("mvex")!==void 0,i={hasMoov:!0,duration:this.moov.mvhd.duration,timescale:this.moov.mvhd.timescale,isFragmented:l,fragment_duration:this.getFragmentDuration(),isProgressive:this.isProgressive,hasIOD:this.moov.iods!==void 0,brands:[this.ftyp.major_brand].concat(this.ftyp.compatible_brands),created:new Date(o+this.moov.mvhd.creation_time*1e3),modified:new Date(o+this.moov.mvhd.modification_time*1e3),tracks:[],audioTracks:[],videoTracks:[],subtitleTracks:[],metadataTracks:[],hintTracks:[],otherTracks:[],mime:""};for(let r=0;r<this.moov.traks.length;r++){const t=this.moov.traks[r],e=t.mdia.minf.stbl.stsd.entries[0],n=t.samples_size,s=t.mdia.mdhd.timescale,a=t.samples_duration,U=n*8*s/a,u={samples_duration:a,bitrate:U,size:n,timescale:s,alternate_group:t.tkhd.alternate_group,codec:e.getCodec(),created:new Date(o+t.tkhd.creation_time*1e3),cts_shift:t.mdia.minf.stbl.cslg,duration:t.mdia.mdhd.duration,id:t.tkhd.track_id,kind:t.udta&&t.udta.kinds.length?t.udta.kinds[0]:{schemeURI:"",value:""},language:t.mdia.elng?t.mdia.elng.extended_language:t.mdia.mdhd.languageString,layer:t.tkhd.layer,matrix:t.tkhd.matrix,modified:new Date(o+t.tkhd.modification_time*1e3),movie_duration:t.tkhd.duration,movie_timescale:i.timescale,name:t.mdia.hdlr.name,nb_samples:t.samples.length,references:[],track_height:t.tkhd.height/65536,track_width:t.tkhd.width/65536,volume:t.tkhd.volume};if(i.tracks.push(u),t.tref)for(let F=0;F<t.tref.references.length;F++)u.references.push({type:t.tref.references[F].type,track_ids:t.tref.references[F].track_ids});t.edts!==void 0&&t.edts.elst!==void 0&&(u.edits=t.edts.elst.entries),e instanceof AudioSampleEntry?(u.type="audio",i.audioTracks.push(u),u.audio={sample_rate:e.getSampleRate(),channel_count:e.getChannelCount(),sample_size:e.getSampleSize()}):e instanceof VisualSampleEntry?(u.type="video",i.videoTracks.push(u),u.video={width:e.getWidth(),height:e.getHeight()}):e instanceof SubtitleSampleEntry?(u.type="subtitles",i.subtitleTracks.push(u)):e instanceof HintSampleEntry?(u.type="metadata",i.hintTracks.push(u)):e instanceof MetadataSampleEntry?(u.type="metadata",i.metadataTracks.push(u)):(u.type="metadata",i.otherTracks.push(u))}i.videoTracks&&i.videoTracks.length>0?i.mime+='video/mp4; codecs="':i.audioTracks&&i.audioTracks.length>0?i.mime+='audio/mp4; codecs="':i.mime+='application/mp4; codecs="';for(let r=0;r<i.tracks.length;r++)r!==0&&(i.mime+=","),i.mime+=i.tracks[r].codec;return i.mime+='"; profiles="',i.mime+=this.ftyp.compatible_brands.join(),i.mime+='"',i}setNextSeekPositionFromSample(o){o&&(this.nextSeekPosition?this.nextSeekPosition=Math.min(o.offset+o.alreadyRead,this.nextSeekPosition):this.nextSeekPosition=o.offset+o.alreadyRead)}processSamples(o){if(this.sampleProcessingStarted){if(this.isFragmentationInitialized&&this.onSegment!==void 0){const l=new Set;for(;l.size<this.fragmentedTracks.length&&this.fragmentedTracks.some(i=>i.trak.nextSample<i.trak.samples.length)&&this.sampleProcessingStarted;)for(const i of this.fragmentedTracks){const r=i.trak;if(!l.has(i.id)){const t=r.nextSample<r.samples.length?this.getSample(r,r.nextSample):void 0;if(!t){this.setNextSeekPositionFromSample(r.samples[r.nextSample]),l.add(i.id);continue}i.state.accumulatedSize+=t.size;const e=r.nextSample+1,n=e-i.state.lastFragmentSampleNumber>i.nb_samples_per_fragment,s=e-i.state.lastSegmentSampleNumber>i.nb_samples;let a=n||e%i.nb_samples_per_fragment===0,U=s||e%i.nb_samples===0,u=i.state.accumulatedSize>=i.size_per_segment;const F=!i.rapAlignement||t.is_sync,R=o||r.nextSample+1>=r.samples.length;if(R&&!F&&Log.warn("ISOFile","Flushing track #"+i.id+" at sample #"+r.nextSample+" which is not a RAP, this may lead to playback issues"),a=a&&F,U=U&&F,u=u&&F,a||u||R){n?Log.warn("ISOFile","Fragment on track #"+i.id+" is overdue, creating it with samples ["+i.state.lastFragmentSampleNumber+", "+r.nextSample+"]"):Log.debug("ISOFile","Creating media fragment on track #"+i.id+" for samples ["+i.state.lastFragmentSampleNumber+", "+r.nextSample+"]");const S=this.createFragment(i.id,i.state.lastFragmentSampleNumber,r.nextSample,i.segmentStream);if(S)i.segmentStream=S,i.state.lastFragmentSampleNumber=r.nextSample+1;else{l.add(i.id);continue}}(U||u||R)&&(s?Log.warn("ISOFile","Segment on track #"+i.id+" is overdue, sending it with samples ["+Math.max(0,r.nextSample-i.nb_samples)+", "+(r.nextSample-1)+"]"):Log.info("ISOFile","Sending fragmented data on track #"+i.id+" for samples ["+Math.max(0,r.nextSample-i.nb_samples)+", "+(r.nextSample-1)+"]"),Log.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize()),this.onSegment&&this.onSegment(i.id,i.user,i.segmentStream.buffer,r.nextSample+1,o||r.nextSample+1>=r.samples.length),i.segmentStream=void 0,i.state.accumulatedSize=0,i.state.lastSegmentSampleNumber=r.nextSample+1),r.nextSample++}}}if(this.onSamples!==void 0)for(let l=0;l<this.extractedTracks.length;l++){const i=this.extractedTracks[l],r=i.trak;for(;r.nextSample<r.samples.length&&this.sampleProcessingStarted;){Log.debug("ISOFile","Exporting on track #"+i.id+" sample #"+r.nextSample);const t=this.getSample(r,r.nextSample);if(t)r.nextSample++,i.samples.push(t);else{this.setNextSeekPositionFromSample(r.samples[r.nextSample]);break}if((r.nextSample%i.nb_samples===0||r.nextSample>=r.samples.length)&&(Log.debug("ISOFile","Sending samples on track #"+i.id+" for sample "+r.nextSample),this.onSamples&&this.onSamples(i.id,i.user,i.samples),i.samples=[],i!==this.extractedTracks[l]))break}}}}getBox(o){const l=this.getBoxes(o,!0);return l.length?l[0]:void 0}getBoxes(o,l){const i=[],r=t=>{t instanceof Box&&t.type&&t.type===o&&i.push(t);const e=[];t.boxes&&e.push(...t.boxes),t.entries&&e.push(...t.entries),t.item_infos&&e.push(...t.item_infos),t.references&&e.push(...t.references);for(const n of e){if(i.length&&l)return;r(n)}};return r(this),i}getTrackSamplesInfo(o){const l=this.getTrackById(o);if(l)return l.samples}getTrackSample(o,l){const i=this.getTrackById(o);return this.getSample(i,l)}releaseUsedSamples(o,l){let i=0;const r=this.getTrackById(o);r.lastValidSample||(r.lastValidSample=0);for(let t=r.lastValidSample;t<l;t++)i+=this.releaseSample(r,t);Log.info("ISOFile","Track #"+o+" released samples up to "+l+" (released size: "+i+", remaining: "+this.samplesDataSize+")"),r.lastValidSample=l}start(){this.sampleProcessingStarted=!0,this.processSamples(!1)}stop(){this.sampleProcessingStarted=!1}flush(){Log.info("ISOFile","Flushing remaining samples"),this.updateSampleLists(),this.processSamples(!0),this.stream.cleanBuffers(),this.stream.logBufferLevel(!0)}seekTrack(o,l,i){let r=0,t=0,e;if(i.samples.length===0)return Log.info("ISOFile","No sample in track, cannot seek! Using time "+Log.getDurationString(0,1)+" and offset: 0"),{offset:0,time:0};for(let s=0;s<i.samples.length;s++){const a=i.samples[s];if(s===0)t=0,e=a.timescale;else if(a.cts>o*a.timescale){t=s-1;break}l&&a.is_sync&&(r=s)}for(l&&(t=r),o=i.samples[t].cts,i.nextSample=t;i.samples[t].alreadyRead===i.samples[t].size&&i.samples[t+1];)t++;const n=i.samples[t].offset+i.samples[t].alreadyRead;return Log.info("ISOFile","Seeking to "+(l?"RAP":"")+" sample #"+i.nextSample+" on track "+i.tkhd.track_id+", time "+Log.getDurationString(o,e)+" and offset: "+n),{offset:n,time:o/e}}getTrackDuration(o){if(!o.samples)return 1/0;const l=o.samples[o.samples.length-1];return(l.cts+l.duration)/l.timescale}seek(o,l){const i=this.moov;let r={offset:1/0,time:1/0};if(this.moov){for(let t=0;t<i.traks.length;t++){const e=i.traks[t];if(o>this.getTrackDuration(e))continue;const n=this.seekTrack(o,l,e);n.offset<r.offset&&(r.offset=n.offset),n.time<r.time&&(r.time=n.time)}return Log.info("ISOFile","Seeking at time "+Log.getDurationString(r.time,1)+" needs a buffer with a fileStart position of "+r.offset),r.offset===1/0?r={offset:this.nextParsePosition,time:0}:r.offset=this.stream.getEndFilePositionAfter(r.offset),Log.info("ISOFile","Adjusted seek position (after checking data already in buffer): "+r.offset),r}else throw new Error("Cannot seek: moov not received!")}equal(o){let l=0;for(;l<this.boxes.length&&l<o.boxes.length;){const i=this.boxes[l],r=o.boxes[l];if(!boxEqual(i,r))return!1;l++}return!0}write(o){for(let l=0;l<this.boxes.length;l++)this.boxes[l].write(o)}createFragment(o,l,i,r){const t=[];for(let U=l;U<=i;U++){const u=this.getTrackById(o),F=this.getSample(u,U);if(!F){this.setNextSeekPositionFromSample(u.samples[U]);return}t.push(F)}const e=r||new DataStream,n=this.createMoof(t);n.write(e),n.trafs[0].truns[0].data_offset=n.size+8,Log.debug("MP4Box","Adjusting data_offset with new value "+n.trafs[0].truns[0].data_offset),e.adjustUint32(n.trafs[0].truns[0].data_offset_position,n.trafs[0].truns[0].data_offset);const s=new mdatBox;s.stream=new MultiBufferStream;let a=0;for(const U of t)if(U.data){const u=MP4BoxBuffer.fromArrayBuffer(U.data.buffer,a);s.stream.insertBuffer(u),a+=U.data.byteLength}return s.write(e),e}static writeInitializationSegment(o,l,i){var e;Log.debug("ISOFile","Generating initialization segment");const r=new DataStream;o.write(r);const t=l.addBox(new mvexBox);if(i){const n=t.addBox(new mehdBox);n.fragment_duration=i}for(let n=0;n<l.traks.length;n++){const s=t.addBox(new trexBox);s.track_id=l.traks[n].tkhd.track_id,s.default_sample_description_index=1,s.default_sample_duration=((e=l.traks[n].samples[0])==null?void 0:e.duration)??0,s.default_sample_size=0,s.default_sample_flags=65536}return l.write(r),r.buffer}save(o){const l=new DataStream;return l.isofile=this,this.write(l),l.save(o)}getBuffer(){const o=new DataStream;return o.isofile=this,this.write(o),o}initializeSegmentation(){var l,i;this.onSegment||Log.warn("MP4Box","No segmentation callback set!"),this.isFragmentationInitialized||(this.isFragmentationInitialized=!0,this.resetTables());const o=new moovBox;o.addBox(this.moov.mvhd);for(let r=0;r<this.fragmentedTracks.length;r++){const t=this.getTrackById(this.fragmentedTracks[r].id);if(!t){Log.warn("ISOFile",`Track with id ${this.fragmentedTracks[r].id} not found, skipping fragmentation initialization`);continue}o.addBox(t)}return{tracks:o.traks.map((r,t)=>({id:r.tkhd.track_id,user:this.fragmentedTracks[t].user})),buffer:w.writeInitializationSegment(this.ftyp,o,(i=(l=this.moov)==null?void 0:l.mvex)==null?void 0:i.mehd.fragment_duration)}}resetTables(){this.initial_duration=this.moov.mvhd.duration,this.moov.mvhd.duration=0;for(let o=0;o<this.moov.traks.length;o++){const l=this.moov.traks[o];l.tkhd.duration=0,l.mdia.mdhd.duration=0;const i=l.mdia.minf.stbl.stco||l.mdia.minf.stbl.co64;i.chunk_offsets=[];const r=l.mdia.minf.stbl.stsc;r.first_chunk=[],r.samples_per_chunk=[],r.sample_description_index=[];const t=l.mdia.minf.stbl.stsz||l.mdia.minf.stbl.stz2;t.sample_sizes=[];const e=l.mdia.minf.stbl.stts;e.sample_counts=[],e.sample_deltas=[];const n=l.mdia.minf.stbl.ctts;n&&(n.sample_counts=[],n.sample_offsets=[]);const s=l.mdia.minf.stbl.stss,a=l.mdia.minf.stbl.boxes.indexOf(s);a!==-1&&(l.mdia.minf.stbl.boxes[a]=void 0)}}static initSampleGroups(o,l,i,r,t){l&&(l.sample_groups_info=[]),o.sample_groups_info||(o.sample_groups_info=[]);for(let e=0;e<i.length;e++){const n=i[e].grouping_type+"/"+i[e].grouping_type_parameter,s=new SampleGroupInfo(i[e].grouping_type,i[e].grouping_type_parameter,i[e]);l&&(l.sample_groups_info[n]=s),o.sample_groups_info[n]||(o.sample_groups_info[n]=s);for(let a=0;a<r.length;a++)r[a].grouping_type===i[e].grouping_type&&(s.description=r[a],s.description.used=!0);if(t)for(let a=0;a<t.length;a++)t[a].grouping_type===i[e].grouping_type&&(s.fragment_description=t[a],s.fragment_description.used=!0,s.is_fragment=!0)}if(l){if(t){for(let e=0;e<t.length;e++)if(!t[e].used&&t[e].version>=2){const n=t[e].grouping_type+"/0",s=new SampleGroupInfo(t[e].grouping_type,0);s.is_fragment=!0,l.sample_groups_info[n]||(l.sample_groups_info[n]=s)}}}else for(let e=0;e<r.length;e++)if(!r[e].used&&r[e].version>=2){const n=r[e].grouping_type+"/0",s=new SampleGroupInfo(r[e].grouping_type,0);o.sample_groups_info[n]||(o.sample_groups_info[n]=s)}}static setSampleGroupProperties(o,l,i,r){l.sample_groups=[];for(const t in r)if(l.sample_groups[t]={grouping_type:r[t].grouping_type,grouping_type_parameter:r[t].grouping_type_parameter},i>=r[t].last_sample_in_run&&(r[t].last_sample_in_run<0&&(r[t].last_sample_in_run=0),r[t].entry_index++,r[t].entry_index<=r[t].sbgp.entries.length-1&&(r[t].last_sample_in_run+=r[t].sbgp.entries[r[t].entry_index].sample_count)),r[t].entry_index<=r[t].sbgp.entries.length-1?l.sample_groups[t].group_description_index=r[t].sbgp.entries[r[t].entry_index].group_description_index:l.sample_groups[t].group_description_index=-1,l.sample_groups[t].group_description_index!==0){let e;if(r[t].fragment_description?e=r[t].fragment_description:e=r[t].description,l.sample_groups[t].group_description_index>0){let n;l.sample_groups[t].group_description_index>65535?n=(l.sample_groups[t].group_description_index>>16)-1:n=l.sample_groups[t].group_description_index-1,e&&n>=0&&(l.sample_groups[t].description=e.entries[n])}else e&&e.version>=2&&e.default_group_description_index>0&&(l.sample_groups[t].description=e.entries[e.default_group_description_index-1])}}static process_sdtp(o,l,i){l&&(o?(l.is_leading=o.is_leading[i],l.depends_on=o.sample_depends_on[i],l.is_depended_on=o.sample_is_depended_on[i],l.has_redundancy=o.sample_has_redundancy[i]):(l.is_leading=0,l.depends_on=0,l.is_depended_on=0,l.has_redundancy=0))}buildSampleLists(){for(let o=0;o<this.moov.traks.length;o++)this.buildTrakSampleLists(this.moov.traks[o])}buildTrakSampleLists(o){let l,i,r,t,e,n;o.samples=[],o.samples_duration=0,o.samples_size=0;const s=o.mdia.minf.stbl.stco||o.mdia.minf.stbl.co64,a=o.mdia.minf.stbl.stsc,U=o.mdia.minf.stbl.stsz||o.mdia.minf.stbl.stz2,u=o.mdia.minf.stbl.stts,F=o.mdia.minf.stbl.ctts,R=o.mdia.minf.stbl.stss,S=o.mdia.minf.stbl.stsd,y=o.mdia.minf.stbl.subs,E=o.mdia.minf.stbl.stdp,W=o.mdia.minf.stbl.sbgps,N=o.mdia.minf.stbl.sgpds;let T=-1,C=-1,m=-1,Q=-1,p=0,f=0,h=0;if(w.initSampleGroups(o,void 0,W,N),!(typeof U>"u")){for(l=0;l<U.sample_sizes.length;l++){const B={number:l,track_id:o.tkhd.track_id,timescale:o.mdia.mdhd.timescale,alreadyRead:0,size:U.sample_sizes[l]};o.samples[l]=B,o.samples_size+=B.size,l===0?(r=1,i=0,B.chunk_index=r,B.chunk_run_index=i,n=a.samples_per_chunk[i],e=0,i+1<a.first_chunk.length?t=a.first_chunk[i+1]-1:t=1/0):l<n?(B.chunk_index=r,B.chunk_run_index=i):(r++,B.chunk_index=r,e=0,r<=t||(i++,i+1<a.first_chunk.length?t=a.first_chunk[i+1]-1:t=1/0),B.chunk_run_index=i,n+=a.samples_per_chunk[i]),B.description_index=a.sample_description_index[B.chunk_run_index]-1,B.description=S.entries[B.description_index],B.offset=s.chunk_offsets[B.chunk_index-1]+e,e+=B.size,l>T&&(C++,T<0&&(T=0),T+=u.sample_counts[C]),l>0?(o.samples[l-1].duration=u.sample_deltas[C],o.samples_duration+=o.samples[l-1].duration,B.dts=o.samples[l-1].dts+o.samples[l-1].duration):B.dts=0,F?(l>=m&&(Q++,m<0&&(m=0),m+=F.sample_counts[Q]),B.cts=o.samples[l].dts+F.sample_offsets[Q]):B.cts=B.dts,R?(l===R.sample_numbers[p]-1?(B.is_sync=!0,p++):(B.is_sync=!1,B.degradation_priority=0),y&&y.entries[f].sample_delta+h===l+1&&(B.subsamples=y.entries[f].subsamples,h+=y.entries[f].sample_delta,f++)):B.is_sync=!0,w.process_sdtp(o.mdia.minf.stbl.sdtp,B,B.number),E?B.degradation_priority=E.priority[l]:B.degradation_priority=0,y&&y.entries[f].sample_delta+h===l&&(B.subsamples=y.entries[f].subsamples,h+=y.entries[f].sample_delta),(W.length>0||N.length>0)&&w.setSampleGroupProperties(o,B,l,o.sample_groups_info)}l>0&&(o.samples[l-1].duration=Math.max(o.mdia.mdhd.duration-o.samples[l-1].dts,0),o.samples_duration+=o.samples[l-1].duration)}}updateSampleLists(){let o,l,i,r,t;if(this.moov!==void 0)for(;this.lastMoofIndex<this.moofs.length;){const e=this.moofs[this.lastMoofIndex];if(this.lastMoofIndex++,e.type==="moof"){const n=e;for(let s=0;s<n.trafs.length;s++){const a=n.trafs[s],U=this.getTrackById(a.tfhd.track_id),u=this.getTrexById(a.tfhd.track_id);a.tfhd.flags&TFHD_FLAG_SAMPLE_DESC?o=a.tfhd.default_sample_description_index:o=u?u.default_sample_description_index:1,a.tfhd.flags&TFHD_FLAG_SAMPLE_DUR?l=a.tfhd.default_sample_duration:l=u?u.default_sample_duration:0,a.tfhd.flags&TFHD_FLAG_SAMPLE_SIZE?i=a.tfhd.default_sample_size:i=u?u.default_sample_size:0,a.tfhd.flags&TFHD_FLAG_SAMPLE_FLAGS?r=a.tfhd.default_sample_flags:r=u?u.default_sample_flags:0,a.sample_number=0,a.sbgps.length>0&&w.initSampleGroups(U,a,a.sbgps,U.mdia.minf.stbl.sgpds,a.sgpds);for(let F=0;F<a.truns.length;F++){const R=a.truns[F];for(let S=0;S<R.sample_count;S++){const y=o-1;let E=r;R.flags&TRUN_FLAGS_FLAGS?E=R.sample_flags[S]:S===0&&R.flags&TRUN_FLAGS_FIRST_FLAG&&(E=R.first_sample_flags);let W=i;R.flags&TRUN_FLAGS_SIZE&&(W=R.sample_size[S]),U.samples_size+=W;let N=l;R.flags&TRUN_FLAGS_DURATION&&(N=R.sample_duration[S]),U.samples_duration+=N;let T;U.first_traf_merged||S>0?T=U.samples[U.samples.length-1].dts+U.samples[U.samples.length-1].duration:(a.tfdt?T=a.tfdt.baseMediaDecodeTime:T=0,U.first_traf_merged=!0);let C=T;R.flags&TRUN_FLAGS_CTS_OFFSET&&(C=T+R.sample_composition_time_offset[S]);const m=!!(a.tfhd.flags&TFHD_FLAG_BASE_DATA_OFFSET),Q=!!(a.tfhd.flags&TFHD_FLAG_DEFAULT_BASE_IS_MOOF),p=!!(R.flags&TRUN_FLAGS_DATA_OFFSET);let f=0;m?f=a.tfhd.base_data_offset:Q||F===0?f=n.start:f=t;let h;F===0&&S===0?p?h=f+R.data_offset:h=f:h=t,t=h+W;const B=a.sample_number;a.sample_number++;const J={cts:C,description_index:y,description:U.mdia.minf.stbl.stsd.entries[y],dts:T,duration:N,moof_number:this.lastMoofIndex,number_in_traf:B,number:U.samples.length,offset:h,size:W,timescale:U.mdia.mdhd.timescale,track_id:U.tkhd.track_id,is_sync:!(E>>16&1),is_leading:E>>26&3,depends_on:E>>24&3,is_depended_on:E>>22&3,has_redundancy:E>>20&3,degradation_priority:E&65535};a.first_sample_index=U.samples.length,U.samples.push(J),(a.sbgps.length>0||a.sgpds.length>0||U.mdia.minf.stbl.sbgps.length>0||U.mdia.minf.stbl.sgpds.length>0)&&w.setSampleGroupProperties(U,J,J.number_in_traf,a.sample_groups_info)}}if(a.subs){U.has_fragment_subsamples=!0;let F=a.first_sample_index;for(let R=0;R<a.subs.entries.length;R++){F+=a.subs.entries[R].sample_delta;const S=U.samples[F-1];S.subsamples=a.subs.entries[R].subsamples}}}}}}getSample(o,l){const i=o.samples[l];if(this.moov){if(!i.data)i.data=new Uint8Array(i.size),i.alreadyRead=0,this.samplesDataSize+=i.size,Log.debug("ISOFile","Allocating sample #"+l+" on track #"+o.tkhd.track_id+" of size "+i.size+" (total: "+this.samplesDataSize+")");else if(i.alreadyRead===i.size)return i;for(;;){let r=this.stream,t=r.findPosition(!0,i.offset+i.alreadyRead,!1),e,n;if(t>-1)e=r.buffers[t],n=e.fileStart;else for(const s of this.mdats){if(!s.stream){Log.debug("ISOFile","mdat stream not yet fully read for #"+this.mdats.indexOf(s)+" mdat");continue}if(t=s.stream.findPosition(!0,i.offset+i.alreadyRead-s.start-s.hdr_size,!1),t>-1){r=s.stream,e=s.stream.buffers[t],n=s.start+s.hdr_size+e.fileStart;break}}if(e){const s=e.byteLength-(i.offset+i.alreadyRead-n);if(i.size-i.alreadyRead<=s)return Log.debug("ISOFile","Getting sample #"+l+" data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-n)+" read size: "+(i.size-i.alreadyRead)+" full size: "+i.size+")"),DataStream.memcpy(i.data.buffer,i.alreadyRead,e,i.offset+i.alreadyRead-n,i.size-i.alreadyRead),e.usedBytes+=i.size-i.alreadyRead,r.logBufferLevel(),i.alreadyRead=i.size,i;if(s===0)return;Log.debug("ISOFile","Getting sample #"+l+" partial data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-n)+" read size: "+s+" full size: "+i.size+")"),DataStream.memcpy(i.data.buffer,i.alreadyRead,e,i.offset+i.alreadyRead-n,s),i.alreadyRead+=s,e.usedBytes+=s,r.logBufferLevel()}else return}}}releaseSample(o,l){const i=o.samples[l];return i.data?(this.samplesDataSize-=i.size,i.data=void 0,i.alreadyRead=0,i.size):0}getAllocatedSampleDataSize(){return this.samplesDataSize}getCodecs(){let o="";for(let l=0;l<this.moov.traks.length;l++){const i=this.moov.traks[l];l>0&&(o+=","),o+=i.mdia.minf.stbl.stsd.entries[0].getCodec()}return o}getTrexById(o){if(!(!this.moov||!this.moov.mvex))for(let l=0;l<this.moov.mvex.trexs.length;l++){const i=this.moov.mvex.trexs[l];if(i.track_id===o)return i}}getTrackById(o){if(this.moov)for(let l=0;l<this.moov.traks.length;l++){const i=this.moov.traks[l];if(i.tkhd.track_id===o)return i}}flattenItemInfo(){const o=this.items,l=this.entity_groups,i=this.meta;if(!(!i||!i.hdlr||!i.iinf)){for(let r=0;r<i.iinf.item_infos.length;r++){const t=i.iinf.item_infos[r].item_ID;o[t]={id:t,name:i.iinf.item_infos[r].item_name,ref_to:[],content_type:i.iinf.item_infos[r].content_type,content_encoding:i.iinf.item_infos[r].content_encoding,item_uri_type:i.iinf.item_infos[r].item_uri_type,type:i.iinf.item_infos[r].item_type?i.iinf.item_infos[r].item_type:"mime",protection:i.iinf.item_infos[r].item_protection_index>0?i.ipro.protections[i.iinf.item_infos[r].item_protection_index-1]:void 0}}if(i.grpl)for(let r=0;r<i.grpl.boxes.length;r++){const t=i.grpl.boxes[r];l[t.group_id]={id:t.group_id,entity_ids:t.entity_ids,type:t.type}}if(i.iloc)for(let r=0;r<i.iloc.items.length;r++){const t=i.iloc.items[r],e=o[t.item_ID];t.data_reference_index!==0&&(Log.warn("Item storage with reference to other files: not supported"),e.source=i.dinf.boxes[t.data_reference_index-1]),e.extents=[],e.size=0;for(let n=0;n<t.extents.length;n++)e.extents[n]={offset:t.extents[n].extent_offset+t.base_offset,length:t.extents[n].extent_length,alreadyRead:0},t.construction_method===1&&(e.extents[n].offset+=i.idat.start+i.idat.hdr_size),e.size+=e.extents[n].length}if(i.pitm&&(o[i.pitm.item_id].primary=!0),i.iref)for(let r=0;r<i.iref.references.length;r++){const t=i.iref.references[r];for(let e=0;e<t.references.length;e++)o[t.from_item_ID].ref_to.push({type:t.type,id:t.references[e]})}if(i.iprp)for(let r=0;r<i.iprp.ipmas.length;r++){const t=i.iprp.ipmas[r];for(let e=0;e<t.associations.length;e++){const n=t.associations[e],s=o[n.id]??l[n.id];if(s){s.properties===void 0&&(s.properties={boxes:[]});for(let a=0;a<n.props.length;a++){const U=n.props[a];if(U.property_index>0&&U.property_index-1<i.iprp.ipco.boxes.length){const u=i.iprp.ipco.boxes[U.property_index-1];s.properties[u.type]=u,s.properties.boxes.push(u)}}}}}}}getItem(o){if(!this.meta)return;const l=this.items[o];if(!l.data&&l.size)l.data=new Uint8Array(l.size),l.alreadyRead=0,this.itemsDataSize+=l.size,Log.debug("ISOFile","Allocating item #"+o+" of size "+l.size+" (total: "+this.itemsDataSize+")");else if(l.alreadyRead===l.size)return l;for(let i=0;i<l.extents.length;i++){const r=l.extents[i];if(r.alreadyRead!==r.length){const t=this.stream.findPosition(!0,r.offset+r.alreadyRead,!1);if(t>-1){const e=this.stream.buffers[t],n=e.byteLength-(r.offset+r.alreadyRead-e.fileStart);if(r.length-r.alreadyRead<=n)Log.debug("ISOFile","Getting item #"+o+" extent #"+i+" data (alreadyRead: "+r.alreadyRead+" offset: "+(r.offset+r.alreadyRead-e.fileStart)+" read size: "+(r.length-r.alreadyRead)+" full extent size: "+r.length+" full item size: "+l.size+")"),DataStream.memcpy(l.data.buffer,l.alreadyRead,e,r.offset+r.alreadyRead-e.fileStart,r.length-r.alreadyRead),(!this.parsingMdat||this.discardMdatData)&&(e.usedBytes+=r.length-r.alreadyRead),this.stream.logBufferLevel(),l.alreadyRead+=r.length-r.alreadyRead,r.alreadyRead=r.length;else{Log.debug("ISOFile","Getting item #"+o+" extent #"+i+" partial data (alreadyRead: "+r.alreadyRead+" offset: "+(r.offset+r.alreadyRead-e.fileStart)+" read size: "+n+" full extent size: "+r.length+" full item size: "+l.size+")"),DataStream.memcpy(l.data.buffer,l.alreadyRead,e,r.offset+r.alreadyRead-e.fileStart,n),r.alreadyRead+=n,l.alreadyRead+=n,(!this.parsingMdat||this.discardMdatData)&&(e.usedBytes+=n),this.stream.logBufferLevel();return}}else return}}if(l.alreadyRead===l.size)return l}releaseItem(o){const l=this.items[o];if(l.data){this.itemsDataSize-=l.size,l.data=void 0,l.alreadyRead=0;for(let i=0;i<l.extents.length;i++){const r=l.extents[i];r.alreadyRead=0}return l.size}else return 0}processItems(o){for(const l in this.items){const i=this.items[l];this.getItem(i.id),o&&!i.sent&&(o(i),i.sent=!0,i.data=void 0)}}hasItem(o){for(const l in this.items){const i=this.items[l];if(i.name===o)return i.id}return-1}getMetaHandler(){if(this.meta)return this.meta.hdlr.handler}getPrimaryItem(){if(this.meta&&this.meta.pitm)return this.getItem(this.meta.pitm.item_id)}itemToFragmentedTrackFile({itemId:o}={}){let l;if(o?l=this.getItem(o):l=this.getPrimaryItem(),!l)return;const i=new w;i.discardMdatData=!1;const r={type:l.type,description_boxes:l.properties.boxes};l.properties.ispe&&(r.width=l.properties.ispe.image_width,r.height=l.properties.ispe.image_height);const t=i.addTrack(r);if(t)return i.addSample(t,l.data),i}processIncompleteBox(o){if(o.type==="mdat"){const l=new mdatBox(o.size);return this.parsingMdat=l,this.boxes.push(l),this.mdats.push(l),l.start=o.start,l.hdr_size=o.hdr_size,l.original_size=o.original_size,this.stream.addUsedBytes(l.hdr_size),this.lastBoxStartPosition=l.start+l.size,this.stream.seek(l.start+l.size,!1,this.discardMdatData)?(this.transferMdatData(),this.parsingMdat=void 0,!0):(this.moovStartFound?this.nextParsePosition=this.stream.findEndContiguousBuf():this.nextParsePosition=l.start+l.size,!1)}else return o.type==="moov"&&(this.moovStartFound=!0,this.mdats.length===0&&(this.isProgressive=!0)),(this.stream.mergeNextBuffer?this.stream.mergeNextBuffer():!1)?(this.nextParsePosition=this.stream.getEndPosition(),!0):(o.type?this.moovStartFound?this.nextParsePosition=this.stream.getEndPosition():this.nextParsePosition=this.stream.getPosition()+o.size:this.nextParsePosition=this.stream.getEndPosition(),!1)}hasIncompleteMdat(){return this.parsingMdat!==void 0}transferMdatData(o){const l=o??this.parsingMdat;if(this.discardMdatData){Log.debug("ISOFile","Discarding 'mdat' data, not transferring it to the mdat box stream");return}if(!l){Log.warn("ISOFile","Cannot transfer 'mdat' data, no mdat box is being parsed");return}const i=this.stream.findPosition(!0,l.start+l.hdr_size,!1),r=this.stream.findPosition(!0,l.start+l.size,!1);if(i===-1||r===-1){Log.warn("ISOFile","Cannot transfer 'mdat' data, start or end buffer not found");return}l.stream=new MultiBufferStream;for(let t=i;t<=r;t++){const e=this.stream.buffers[t],n=t===i?l.start+l.hdr_size-e.fileStart:0,s=t===r?l.start+l.size-e.fileStart:e.byteLength;if(s>n){Log.debug("ISOFile","Transferring 'mdat' data from buffer #"+t+" ("+n+" to "+s+")");const a=s-n,U=new MP4BoxBuffer(a),u=l.stream.getAbsoluteEndPosition();DataStream.memcpy(U,0,e,n,a),U.fileStart=u,l.stream.insertBuffer(U),e.usedBytes+=a}}}processIncompleteMdat(){const o=this.parsingMdat;return this.stream.seek(o.start+o.size,!1,this.discardMdatData)?(Log.debug("ISOFile","Found 'mdat' end in buffered data"),this.transferMdatData(),this.parsingMdat=void 0,!0):(this.nextParsePosition=this.stream.findEndContiguousBuf(),!1)}restoreParsePosition(){return this.stream.seek(this.lastBoxStartPosition,!0,this.discardMdatData)}saveParsePosition(){this.lastBoxStartPosition=this.stream.getPosition()}updateUsedBytes(o,l){this.stream.addUsedBytes&&(o.type==="mdat"?(this.stream.addUsedBytes(o.hdr_size),this.discardMdatData&&this.stream.addUsedBytes(o.size-o.hdr_size)):this.stream.addUsedBytes(o.size))}addBox(o){return Box.prototype.addBox.call(this,o)}init(o={}){const l=this.addBox(new ftypBox);l.major_brand=o.brands&&o.brands[0]||"iso4",l.minor_version=0,l.compatible_brands=o.brands||["iso4"];const i=this.addBox(new moovBox);i.addBox(new mvexBox);const r=i.addBox(new mvhdBox);return r.timescale=o.timescale||600,r.rate=o.rate||65536,r.creation_time=0,r.modification_time=0,r.duration=o.duration||0,r.volume=o.width?0:256,r.matrix=[65536,0,0,0,65536,0,0,0,1073741824],r.next_track_id=1,this}addTrack(o={}){this.moov||this.init(o);const l=o||{};l.width=l.width||320,l.height=l.height||320,l.id=l.id||this.moov.mvhd.next_track_id,l.type=l.type||"avc1";const i=this.moov.addBox(new trakBox);this.moov.mvhd.next_track_id=l.id+1;const r=i.addBox(new tkhdBox);r.flags=TKHD_FLAG_ENABLED|TKHD_FLAG_IN_MOVIE|TKHD_FLAG_IN_PREVIEW,r.creation_time=0,r.modification_time=0,r.track_id=l.id,r.duration=l.duration||0,r.layer=l.layer||0,r.alternate_group=0,r.volume=1,r.matrix=[65536,0,0,0,65536,0,0,0,1073741824],r.width=l.width<<16,r.height=l.height<<16;const t=i.addBox(new mdiaBox),e=t.addBox(new mdhdBox);e.creation_time=0,e.modification_time=0,e.timescale=l.timescale||1,e.duration=l.media_duration||0,e.language=l.language||"und";const n=t.addBox(new hdlrBox);n.handler=l.hdlr||"vide",n.name=l.name||"Track created with MP4Box.js";const s=t.addBox(new elngBox);s.extended_language=l.language||"fr-FR";const a=t.addBox(new minfBox),U=BoxRegistry.sampleEntry[l.type];if(!U)return;const u=new U;if(u.data_reference_index=1,u instanceof VisualSampleEntry){const Q=u,p=a.addBox(new vmhdBox);p.graphicsmode=0,p.opcolor=[0,0,0],Q.width=l.width,Q.height=l.height,Q.horizresolution=72<<16,Q.vertresolution=72<<16,Q.frame_count=1,Q.compressorname=l.type+" Compressor",Q.depth=24,l.avcDecoderConfigRecord?Q.addBox(new avcCBox(l.avcDecoderConfigRecord.byteLength)).parse(new DataStream(l.avcDecoderConfigRecord)):l.hevcDecoderConfigRecord&&Q.addBox(new hvcCBox(l.hevcDecoderConfigRecord.byteLength)).parse(new DataStream(l.hevcDecoderConfigRecord))}else if(u instanceof AudioSampleEntry){const Q=u,p=a.addBox(new smhdBox);p.balance=l.balance||0,Q.channel_count=l.channel_count||2,Q.samplesize=l.samplesize||16,Q.samplerate=l.samplerate||65536}else u instanceof HintSampleEntry?a.addBox(new hmhdBox):u instanceof SubtitleSampleEntry?(a.addBox(new sthdBox),u instanceof stppSampleEntry&&(u.namespace=l.namespace||"nonamespace",u.schema_location=l.schema_location||"",u.auxiliary_mime_types=l.auxiliary_mime_types||"")):u instanceof MetadataSampleEntry?a.addBox(new nmhdBox):u instanceof SystemSampleEntry?a.addBox(new nmhdBox):a.addBox(new nmhdBox);l.description&&u.addBox.call(u,l.description),l.description_boxes&&l.description_boxes.forEach(function(Q){u.addBox.call(u,Q)});const R=a.addBox(new dinfBox).addBox(new drefBox),S=new urlBox;S.flags=1,R.addEntry(S);const y=a.addBox(new stblBox);y.addBox(new stsdBox).addEntry(u);const W=y.addBox(new sttsBox);W.sample_counts=[],W.sample_deltas=[];const N=y.addBox(new stscBox);N.first_chunk=[],N.samples_per_chunk=[],N.sample_description_index=[];const T=y.addBox(new stcoBox);T.chunk_offsets=[];const C=y.addBox(new stszBox);C.sample_sizes=[];const m=this.moov.mvex.addBox(new trexBox);return m.track_id=l.id,m.default_sample_description_index=l.default_sample_description_index||1,m.default_sample_duration=l.default_sample_duration||0,m.default_sample_size=l.default_sample_size||0,m.default_sample_flags=l.default_sample_flags||0,this.buildTrakSampleLists(i),l.id}addSample(o,l,{sample_description_index:i,duration:r=1,cts:t=0,dts:e=0,is_sync:n=!1,is_leading:s=0,depends_on:a=0,is_depended_on:U=0,has_redundancy:u=0,degradation_priority:F=0,subsamples:R,offset:S=0}={}){const y=this.getTrackById(o);if(y===void 0)return;const E=i?i-1:0,W={number:y.samples.length,track_id:y.tkhd.track_id,timescale:y.mdia.mdhd.timescale,description_index:E,description:y.mdia.minf.stbl.stsd.entries[E],data:l,size:l.byteLength,alreadyRead:l.byteLength,duration:r,cts:t,dts:e,is_sync:n,is_leading:s,depends_on:a,is_depended_on:U,has_redundancy:u,degradation_priority:F,offset:S,subsamples:R};y.samples.push(W),y.samples_size+=W.size,y.samples_duration+=W.duration,y.first_dts===void 0&&(y.first_dts=e),this.processSamples();const N=this.addBox(this.createMoof([W]));N.computeSize(),N.trafs[0].truns[0].data_offset=N.size+8;const T=this.addBox(new mdatBox);return T.data=new Uint8Array(l),W}createMoof(o){if(o.length===0)return;if(o.some(U=>U.track_id!==o[0].track_id))throw new Error("Cannot create moof for samples from different tracks: "+o.map(U=>U.track_id).join(", "));const l=o[0].track_id,i=this.getTrackById(l);if(!i)throw new Error("Cannot create moof for non-existing track: "+l);const r=new moofBox,t=r.addBox(new mfhdBox);t.sequence_number=++this.nextMoofNumber;const e=r.addBox(new trafBox),n=e.addBox(new tfhdBox);n.track_id=l,n.flags=TFHD_FLAG_DEFAULT_BASE_IS_MOOF;const s=e.addBox(new tfdtBox);s.baseMediaDecodeTime=o[0].dts-(i.first_dts||0);const a=e.addBox(new trunBox);a.flags=TRUN_FLAGS_DATA_OFFSET|TRUN_FLAGS_DURATION|TRUN_FLAGS_SIZE|TRUN_FLAGS_FLAGS|TRUN_FLAGS_CTS_OFFSET,a.data_offset=0,a.first_sample_flags=0,a.sample_count=o.length;for(const U of o){let u=0;U.is_sync?u=1<<25:u=65536,a.sample_duration.push(U.duration),a.sample_size.push(U.size),a.sample_flags.push(u),a.sample_composition_time_offset.push(U.cts-U.dts)}return r}print(o){o.indent="";for(let l=0;l<this.boxes.length;l++)this.boxes[l]&&this.boxes[l].print(o)}};function createFile(d=!1,o){return new ISOFile(o,!d)}var descriptor_exports={};__export(descriptor_exports,{Descriptor:()=>Descriptor,ES_Descriptor:()=>ES_Descriptor,MPEG4DescriptorParser:()=>MPEG4DescriptorParser});var ES_DescrTag=3,DecoderConfigDescrTag=4,DecSpecificInfoTag=5,SLConfigDescrTag=6,Descriptor=class cr{constructor(o,l){this.tag=o,this.size=l,this.descs=[]}parse(o){this.data=o.readUint8Array(this.size)}findDescriptor(o){for(let l=0;l<this.descs.length;l++)if(this.descs[l].tag===o)return this.descs[l]}parseOneDescriptor(o){let l=0;const i=o.readUint8();let r=o.readUint8();for(;r&128;)l=(l<<7)+(r&127),r=o.readUint8();l=(l<<7)+(r&127),Log.debug("Descriptor","Found "+(descTagToName[i]||"Descriptor "+i)+", size "+l+" at position "+o.getPosition());const t=descTagToName[i]?new DESCRIPTOR_CLASSES[descTagToName[i]](l):new cr(l);return t.parse(o),t}parseRemainingDescriptors(o){var i;const l=o.getPosition();for(;o.getPosition()<l+this.size;){const r=(i=this.parseOneDescriptor)==null?void 0:i.call(this,o);this.descs.push(r)}}},ES_Descriptor=class extends Descriptor{constructor(d){super(ES_DescrTag,d)}parse(d){if(this.ES_ID=d.readUint16(),this.flags=d.readUint8(),this.size-=3,this.flags&128?(this.dependsOn_ES_ID=d.readUint16(),this.size-=2):this.dependsOn_ES_ID=0,this.flags&64){const o=d.readUint8();this.URL=d.readString(o),this.size-=o+1}else this.URL="";this.flags&32?(this.OCR_ES_ID=d.readUint16(),this.size-=2):this.OCR_ES_ID=0,this.parseRemainingDescriptors(d)}getOTI(){const d=this.findDescriptor(DecoderConfigDescrTag);return d?d.oti:0}getAudioConfig(){const d=this.findDescriptor(DecoderConfigDescrTag);if(!d)return;const o=d.findDescriptor(DecSpecificInfoTag);if(o&&o.data){let l=(o.data[0]&248)>>3;return l===31&&o.data.length>=2&&(l=32+((o.data[0]&7)<<3)+((o.data[1]&224)>>5)),l}}},DecoderConfigDescriptor=class extends Descriptor{constructor(d){super(DecoderConfigDescrTag,d)}parse(d){this.oti=d.readUint8(),this.streamType=d.readUint8(),this.upStream=(this.streamType>>1&1)!==0,this.streamType=this.streamType>>>2,this.bufferSize=d.readUint24(),this.maxBitrate=d.readUint32(),this.avgBitrate=d.readUint32(),this.size-=13,this.parseRemainingDescriptors(d)}},DecoderSpecificInfo=class extends Descriptor{constructor(d){super(DecSpecificInfoTag,d)}},SLConfigDescriptor=class extends Descriptor{constructor(d){super(SLConfigDescrTag,d)}},DESCRIPTOR_CLASSES={Descriptor,ES_Descriptor,DecoderConfigDescriptor,DecoderSpecificInfo,SLConfigDescriptor},descTagToName={[ES_DescrTag]:"ES_Descriptor",[DecoderConfigDescrTag]:"DecoderConfigDescriptor",[DecSpecificInfoTag]:"DecoderSpecificInfo",[SLConfigDescrTag]:"SLConfigDescriptor"},MPEG4DescriptorParser=class{constructor(){this.parseOneDescriptor=Descriptor.prototype.parseOneDescriptor}getDescriptorName(d){return descTagToName[d]}},all_boxes_exports={};__export(all_boxes_exports,{CoLLBox:()=>CoLLBox,ItemContentIDPropertyBox:()=>ItemContentIDPropertyBox,OpusSampleEntry:()=>OpusSampleEntry,SmDmBox:()=>SmDmBox,a1lxBox:()=>a1lxBox,a1opBox:()=>a1opBox,ac_3SampleEntry:()=>ac_3SampleEntry,ac_4SampleEntry:()=>ac_4SampleEntry,aebrBox:()=>aebrBox,afbrBox:()=>afbrBox,albcBox:()=>albcBox,alstSampleGroupEntry:()=>alstSampleGroupEntry,altrBox:()=>altrBox,auxCBox:()=>auxCBox,av01SampleEntry:()=>av01SampleEntry,av1CBox:()=>av1CBox,avc1SampleEntry:()=>avc1SampleEntry,avc2SampleEntry:()=>avc2SampleEntry,avc3SampleEntry:()=>avc3SampleEntry,avc4SampleEntry:()=>avc4SampleEntry,avcCBox:()=>avcCBox,avllSampleGroupEntry:()=>avllSampleGroupEntry,avs3SampleEntry:()=>avs3SampleEntry,avssSampleGroupEntry:()=>avssSampleGroupEntry,brstBox:()=>brstBox,btrtBox:()=>btrtBox,bxmlBox:()=>bxmlBox,ccstBox:()=>ccstBox,cdefBox:()=>cdefBox,clapBox:()=>clapBox,clefBox:()=>clefBox,clliBox:()=>clliBox,cmexBox:()=>cmexBox,cminBox:()=>cminBox,cmpdBox:()=>cmpdBox,co64Box:()=>co64Box,colrBox:()=>colrBox,coviBox:()=>coviBox,cprtBox:()=>cprtBox,cschBox:()=>cschBox,cslgBox:()=>cslgBox,cttsBox:()=>cttsBox,dOpsBox:()=>dOpsBox,dac3Box:()=>dac3Box,dataBox:()=>dataBox,dav1SampleEntry:()=>dav1SampleEntry,dec3Box:()=>dec3Box,dfLaBox:()=>dfLaBox,dimmBox:()=>dimmBox,dinfBox:()=>dinfBox,dmax:()=>dmax,dmedBox:()=>dmedBox,dobrBox:()=>dobrBox,drefBox:()=>drefBox,drepBox:()=>drepBox,dtrtSampleGroupEntry:()=>dtrtSampleGroupEntry,dvh1SampleEntry:()=>dvh1SampleEntry,dvheSampleEntry:()=>dvheSampleEntry,ec_3SampleEntry:()=>ec_3SampleEntry,edtsBox:()=>edtsBox,elngBox:()=>elngBox,elstBox:()=>elstBox,emsgBox:()=>emsgBox,encaSampleEntry:()=>encaSampleEntry,encmSampleEntry:()=>encmSampleEntry,encsSampleEntry:()=>encsSampleEntry,enctSampleEntry:()=>enctSampleEntry,encuSampleEntry:()=>encuSampleEntry,encvSampleEntry:()=>encvSampleEntry,enofBox:()=>enofBox,eqivBox:()=>eqivBox,esdsBox:()=>esdsBox,etypBox:()=>etypBox,fLaCSampleEntry:()=>fLaCSampleEntry,favcBox:()=>favcBox,fielBox:()=>fielBox,fobrBox:()=>fobrBox,freeBox:()=>freeBox,frmaBox:()=>frmaBox,ftypBox:()=>ftypBox,grplBox:()=>grplBox,hdlrBox:()=>hdlrBox,hev1SampleEntry:()=>hev1SampleEntry,hev2SampleEntry:()=>hev2SampleEntry,hinfBox:()=>hinfBox,hmhdBox:()=>hmhdBox,hntiBox:()=>hntiBox,hvc1SampleEntry:()=>hvc1SampleEntry,hvc2SampleEntry:()=>hvc2SampleEntry,hvcCBox:()=>hvcCBox,hvt1SampleEntry:()=>hvt1SampleEntry,iaugBox:()=>iaugBox,idatBox:()=>idatBox,iinfBox:()=>iinfBox,ilocBox:()=>ilocBox,ilstBox:()=>ilstBox,imirBox:()=>imirBox,infeBox:()=>infeBox,iodsBox:()=>iodsBox,ipcoBox:()=>ipcoBox,ipmaBox:()=>ipmaBox,iproBox:()=>iproBox,iprpBox:()=>iprpBox,irefBox:()=>irefBox,irotBox:()=>irotBox,ispeBox:()=>ispeBox,itaiBox:()=>itaiBox,j2kHBox:()=>j2kHBox,j2kiSampleEntry:()=>j2kiSampleEntry,keysBox:()=>keysBox,kindBox:()=>kindBox,levaBox:()=>levaBox,lhe1SampleEntry:()=>lhe1SampleEntry,lhv1SampleEntry:()=>lhv1SampleEntry,lhvCBox:()=>lhvCBox,lselBox:()=>lselBox,m4aeSampleEntry:()=>m4aeSampleEntry,maxrBox:()=>maxrBox,mdatBox:()=>mdatBox,mdcvBox:()=>mdcvBox,mdhdBox:()=>mdhdBox,mdiaBox:()=>mdiaBox,mecoBox:()=>mecoBox,mehdBox:()=>mehdBox,metaBox:()=>metaBox,mettSampleEntry:()=>mettSampleEntry,metxSampleEntry:()=>metxSampleEntry,mfhdBox:()=>mfhdBox,mfraBox:()=>mfraBox,mfroBox:()=>mfroBox,mha1SampleEntry:()=>mha1SampleEntry,mha2SampleEntry:()=>mha2SampleEntry,mhm1SampleEntry:()=>mhm1SampleEntry,mhm2SampleEntry:()=>mhm2SampleEntry,minfBox:()=>minfBox,mjp2SampleEntry:()=>mjp2SampleEntry,mjpgSampleEntry:()=>mjpgSampleEntry,moofBox:()=>moofBox,moovBox:()=>moovBox,mp4aSampleEntry:()=>mp4aSampleEntry,mp4sSampleEntry:()=>mp4sSampleEntry,mp4vSampleEntry:()=>mp4vSampleEntry,mskCBox:()=>mskCBox,msrcTrackGroupTypeBox:()=>msrcTrackGroupTypeBox,mvexBox:()=>mvexBox,mvhdBox:()=>mvhdBox,mvifSampleGroupEntry:()=>mvifSampleGroupEntry,nmhdBox:()=>nmhdBox,npckBox:()=>npckBox,numpBox:()=>numpBox,padbBox:()=>padbBox,panoBox:()=>panoBox,paspBox:()=>paspBox,paylBox:()=>paylBox,paytBox:()=>paytBox,pdinBox:()=>pdinBox,piffLsmBox:()=>piffLsmBox,piffPsshBox:()=>piffPsshBox,piffSencBox:()=>piffSencBox,piffTencBox:()=>piffTencBox,piffTfrfBox:()=>piffTfrfBox,piffTfxdBox:()=>piffTfxdBox,pitmBox:()=>pitmBox,pixiBox:()=>pixiBox,pmaxBox:()=>pmaxBox,povdBox:()=>povdBox,prdiBox:()=>prdiBox,prfrBox:()=>prfrBox,prftBox:()=>prftBox,prgrBox:()=>prgrBox,profBox:()=>profBox,prolSampleGroupEntry:()=>prolSampleGroupEntry,psshBox:()=>psshBox,pymdBox:()=>pymdBox,rapSampleGroupEntry:()=>rapSampleGroupEntry,rashSampleGroupEntry:()=>rashSampleGroupEntry,resvSampleEntry:()=>resvSampleEntry,rinfBox:()=>rinfBox,rollSampleGroupEntry:()=>rollSampleGroupEntry,rtp_Box:()=>rtp_Box,saioBox:()=>saioBox,saizBox:()=>saizBox,sbgpBox:()=>sbgpBox,sbpmBox:()=>sbpmBox,sbttSampleEntry:()=>sbttSampleEntry,schiBox:()=>schiBox,schmBox:()=>schmBox,scifSampleGroupEntry:()=>scifSampleGroupEntry,scnmSampleGroupEntry:()=>scnmSampleGroupEntry,sdp_Box:()=>sdp_Box,sdtpBox:()=>sdtpBox,seigSampleGroupEntry:()=>seigSampleGroupEntry,sencBox:()=>sencBox,sgpdBox:()=>sgpdBox,sidxBox:()=>sidxBox,sinfBox:()=>sinfBox,skipBox:()=>skipBox,slidBox:()=>slidBox,smhdBox:()=>smhdBox,sratBox:()=>sratBox,ssixBox:()=>ssixBox,stblBox:()=>stblBox,stcoBox:()=>stcoBox,stdpBox:()=>stdpBox,sterBox:()=>sterBox,sthdBox:()=>sthdBox,stppSampleEntry:()=>stppSampleEntry,strdBox:()=>strdBox,striBox:()=>striBox,strkBox:()=>strkBox,stsaSampleGroupEntry:()=>stsaSampleGroupEntry,stscBox:()=>stscBox,stsdBox:()=>stsdBox,stsgBox:()=>stsgBox,stshBox:()=>stshBox,stssBox:()=>stssBox,stszBox:()=>stszBox,sttsBox:()=>sttsBox,stviBox:()=>stviBox,stxtSampleEntry:()=>stxtSampleEntry,stypBox:()=>stypBox,stz2Box:()=>stz2Box,subsBox:()=>subsBox,syncSampleGroupEntry:()=>syncSampleGroupEntry,taicBox:()=>taicBox,taptBox:()=>taptBox,teleSampleGroupEntry:()=>teleSampleGroupEntry,tencBox:()=>tencBox,tfdtBox:()=>tfdtBox,tfhdBox:()=>tfhdBox,tfraBox:()=>tfraBox,tkhdBox:()=>tkhdBox,tmaxBox:()=>tmaxBox,tminBox:()=>tminBox,totlBox:()=>totlBox,tpayBox:()=>tpayBox,tpylBox:()=>tpylBox,trafBox:()=>trafBox,trakBox:()=>trakBox,trefBox:()=>trefBox,trepBox:()=>trepBox,trexBox:()=>trexBox,trgrBox:()=>trgrBox,trpyBox:()=>trpyBox,trunBox:()=>trunBox,tsasSampleGroupEntry:()=>tsasSampleGroupEntry,tsclSampleGroupEntry:()=>tsclSampleGroupEntry,tselBox:()=>tselBox,tsynBox:()=>tsynBox,tx3gSampleEntry:()=>tx3gSampleEntry,txtcBox:()=>txtcBox,tycoBox:()=>tycoBox,udesBox:()=>udesBox,udtaBox:()=>udtaBox,uncCBox:()=>uncCBox,uncvSampleEntry:()=>uncvSampleEntry,urlBox:()=>urlBox,urnBox:()=>urnBox,viprSampleGroupEntry:()=>viprSampleGroupEntry,vmhdBox:()=>vmhdBox,vp08SampleEntry:()=>vp08SampleEntry,vp09SampleEntry:()=>vp09SampleEntry,vpcCBox:()=>vpcCBox,vttCBox:()=>vttCBox,vttcBox:()=>vttcBox,vvc1SampleEntry:()=>vvc1SampleEntry,vvcCBox:()=>vvcCBox,vvcNSampleEntry:()=>vvcNSampleEntry,vvi1SampleEntry:()=>vvi1SampleEntry,vvnCBox:()=>vvnCBox,vvs1SampleEntry:()=>vvs1SampleEntry,waveBox:()=>waveBox,wbbrBox:()=>wbbrBox,wvttSampleEntry:()=>wvttSampleEntry,xmlBox:()=>xmlBox});var Qi,a1lxBox=(Qi=class extends Box{constructor(){super(...arguments),this.box_name="AV1LayeredImageIndexingProperty"}parse(o){const i=((o.readUint8()&1&1)+1)*16;this.layer_size=[];for(let r=0;r<3;r++)i===16?this.layer_size[r]=o.readUint16():this.layer_size[r]=o.readUint32()}},Qi.fourcc="a1lx",Qi),pi,a1opBox=(pi=class extends Box{constructor(){super(...arguments),this.box_name="OperatingPointSelectorProperty"}parse(o){this.op_index=o.readUint8()}},pi.fourcc="a1op",pi),fi,auxCBox=(fi=class extends FullBox{constructor(){super(...arguments),this.box_name="AuxiliaryTypeProperty"}parse(o){this.parseFullHeader(o),this.aux_type=o.readCString();const l=this.size-this.hdr_size-(this.aux_type.length+1);this.aux_subtype=o.readUint8Array(l)}},fi.fourcc="auxC",fi),hi,btrtBox=(hi=class extends Box{constructor(){super(...arguments),this.box_name="BitRateBox"}parse(o){this.bufferSizeDB=o.readUint32(),this.maxBitrate=o.readUint32(),this.avgBitrate=o.readUint32()}},hi.fourcc="btrt",hi),Bi,ccstBox=(Bi=class extends FullBox{constructor(){super(...arguments),this.box_name="CodingConstraintsBox"}parse(o){this.parseFullHeader(o);const l=o.readUint8();this.all_ref_pics_intra=(l&128)===128,this.intra_pred_used=(l&64)===64,this.max_ref_per_pic=(l&63)>>2,o.readUint24()}},Bi.fourcc="ccst",Bi),Ri,cdefBox=(Ri=class extends Box{constructor(){super(...arguments),this.box_name="ComponentDefinitionBox"}parse(o){this.channel_count=o.readUint16(),this.channel_indexes=[],this.channel_types=[],this.channel_associations=[];for(let l=0;l<this.channel_count;l++)this.channel_indexes.push(o.readUint16()),this.channel_types.push(o.readUint16()),this.channel_associations.push(o.readUint16())}},Ri.fourcc="cdef",Ri),Si,clapBox=(Si=class extends Box{constructor(){super(...arguments),this.box_name="CleanApertureBox"}parse(o){this.cleanApertureWidthN=o.readUint32(),this.cleanApertureWidthD=o.readUint32(),this.cleanApertureHeightN=o.readUint32(),this.cleanApertureHeightD=o.readUint32(),this.horizOffN=o.readUint32(),this.horizOffD=o.readUint32(),this.vertOffN=o.readUint32(),this.vertOffD=o.readUint32()}},Si.fourcc="clap",Si),yi,clliBox=(yi=class extends Box{constructor(){super(...arguments),this.box_name="ContentLightLevelBox"}parse(o){this.max_content_light_level=o.readUint16(),this.max_pic_average_light_level=o.readUint16()}},yi.fourcc="clli",yi),Vi,cmexBox=(Vi=class extends Box{constructor(){super(...arguments),this.box_name="CameraExtrinsicMatrixProperty"}parse(o){this.flags&1&&(this.pos_x=o.readInt32()),this.flags&2&&(this.pos_y=o.readInt32()),this.flags&4&&(this.pos_z=o.readInt32()),this.flags&8&&(this.version===0?this.flags&16?(this.quat_x=o.readInt32(),this.quat_y=o.readInt32(),this.quat_z=o.readInt32()):(this.quat_x=o.readInt16(),this.quat_y=o.readInt16(),this.quat_z=o.readInt16()):this.version),this.flags&32&&(this.id=o.readUint32())}},Vi.fourcc="cmex",Vi),Ji,cminBox=(Ji=class extends Box{constructor(){super(...arguments),this.box_name="CameraIntrinsicMatrixProperty"}parse(o){this.focal_length_x=o.readInt32(),this.principal_point_x=o.readInt32(),this.principal_point_y=o.readInt32(),this.flags&1&&(this.focal_length_y=o.readInt32(),this.skew_factor=o.readInt32())}},Ji.fourcc="cmin",Ji),Ei,cmpdBox=(Ei=class extends Box{constructor(){super(...arguments),this.box_name="ComponentDefinitionBox"}parse(o){this.component_count=o.readUint32(),this.component_types=[],this.component_type_urls=[];for(let l=0;l<this.component_count;l++){const i=o.readUint16();this.component_types.push(i),i>=32768&&this.component_type_urls.push(o.readCString())}}},Ei.fourcc="cmpd",Ei),mi,co64Box=(mi=class extends FullBox{constructor(){super(...arguments),this.box_name="ChunkLargeOffsetBox"}parse(o){this.parseFullHeader(o);const l=o.readUint32();if(this.chunk_offsets=[],this.version===0)for(let i=0;i<l;i++)this.chunk_offsets.push(o.readUint64())}write(o){this.version=0,this.flags=0,this.size=4+8*this.chunk_offsets.length,this.writeHeader(o),o.writeUint32(this.chunk_offsets.length);for(let l=0;l<this.chunk_offsets.length;l++)o.writeUint64(this.chunk_offsets[l])}},mi.fourcc="co64",mi),ki,CoLLBox=(ki=class extends FullBox{constructor(){super(...arguments),this.box_name="ContentLightLevelBox"}parse(o){this.parseFullHeader(o),this.maxCLL=o.readUint16(),this.maxFALL=o.readUint16()}},ki.fourcc="CoLL",ki),SphereRegion=class{toString(){let d="centre_azimuth: ";return d+=this.centre_azimuth,d+=" (",d+=this.centre_azimuth*2**-16,d+="°), centre_elevation: ",d+=this.centre_elevation,d+=" (",d+=this.centre_elevation*2**-16,d+="°), centre_tilt: ",d+=this.centre_tilt,d+=" (",d+=this.centre_tilt*2**-16,d+="°)",this.range_included_flag&&(d+=", azimuth_range: ",d+=this.azimuth_range,d+=" (",d+=this.azimuth_range*2**-16,d+="°), elevation_range: ",d+=this.elevation_range,d+=" (",d+=this.elevation_range*2**-16,d+="°)"),this.interpolate_included_flag&&(d+=", interpolate: ",d+=this.interpolate),d}},CoverageSphereRegion=class{toString(){let d="";return this.view_idc&&(d+="view_idc: ",d+=this.view_idc,d+=", "),d+="sphere_region: {",d+=this.sphere_region,d+="}",d}},Ni,coviBox=(Ni=class extends FullBox{constructor(){super(...arguments),this.box_name="CoverageInformationBox"}parse(o){this.parseFullHeader(o),this.coverage_shape_type=o.readUint8();const l=o.readUint8(),i=o.readInt8(),r=i&128;r&&(this.default_view_idc=(i&96)>>5),this.coverage_regions=new Array;for(let t=0;t<l;t++){const e=new CoverageSphereRegion;r&&(e.view_idc=o.readUint8()>>6),e.sphere_region=this.parseSphereRegion(o,!0,!0),this.coverage_regions.push(e)}}parseSphereRegion(o,l,i){const r=new SphereRegion;return r.centre_azimuth=o.readInt32(),r.centre_elevation=o.readInt32(),r.centre_tilt=o.readInt32(),r.range_included_flag=l,l&&(r.azimuth_range=o.readUint32(),r.elevation_range=o.readUint32()),r.interpolate_included_flag=i,i&&(r.interpolate=(o.readUint8()&128)===128),r}},Ni.fourcc="covi",Ni),Ti,cprtBox=(Ti=class extends FullBox{constructor(){super(...arguments),this.box_name="CopyrightBox"}parse(o){this.parseFullHeader(o),this.parseLanguage(o),this.notice=o.readCString()}},Ti.fourcc="cprt",Ti),Wi,cschBox=(Wi=class extends FullBox{constructor(){super(...arguments),this.box_name="CompatibleSchemeTypeBox"}parse(o){this.parseFullHeader(o),this.scheme_type=o.readString(4),this.scheme_version=o.readUint32(),this.flags&1&&(this.scheme_uri=o.readCString())}},Wi.fourcc="csch",Wi),INT32_MAX=2147483647,Ci,cslgBox=(Ci=class extends FullBox{constructor(){super(...arguments),this.box_name="CompositionToDecodeBox"}parse(o){this.parseFullHeader(o),this.version===0?(this.compositionToDTSShift=o.readInt32(),this.leastDecodeToDisplayDelta=o.readInt32(),this.greatestDecodeToDisplayDelta=o.readInt32(),this.compositionStartTime=o.readInt32(),this.compositionEndTime=o.readInt32()):this.version===1&&(this.compositionToDTSShift=o.readInt64(),this.leastDecodeToDisplayDelta=o.readInt64(),this.greatestDecodeToDisplayDelta=o.readInt64(),this.compositionStartTime=o.readInt64(),this.compositionEndTime=o.readInt64())}write(o){this.version=0,(this.compositionToDTSShift>INT32_MAX||this.leastDecodeToDisplayDelta>INT32_MAX||this.greatestDecodeToDisplayDelta>INT32_MAX||this.compositionStartTime>INT32_MAX||this.compositionEndTime>INT32_MAX)&&(this.version=1),this.flags=0,this.version===0?(this.size=4*5,this.writeHeader(o),o.writeInt32(this.compositionToDTSShift),o.writeInt32(this.leastDecodeToDisplayDelta),o.writeInt32(this.greatestDecodeToDisplayDelta),o.writeInt32(this.compositionStartTime),o.writeInt32(this.compositionEndTime)):this.version===1&&(this.size=8*5,this.writeHeader(o),o.writeInt64(this.compositionToDTSShift),o.writeInt64(this.leastDecodeToDisplayDelta),o.writeInt64(this.greatestDecodeToDisplayDelta),o.writeInt64(this.compositionStartTime),o.writeInt64(this.compositionEndTime))}},Ci.fourcc="cslg",Ci),vi,cttsBox=(vi=class extends FullBox{constructor(){super(...arguments),this.box_name="CompositionOffsetBox"}parse(o){this.parseFullHeader(o);const l=o.readUint32();if(this.sample_counts=[],this.sample_offsets=[],this.version===0)for(let i=0;i<l;i++){this.sample_counts.push(o.readUint32());const r=o.readInt32();r<0&&Log.warn("BoxParser","ctts box uses negative values without using version 1"),this.sample_offsets.push(r)}else if(this.version===1)for(let i=0;i<l;i++)this.sample_counts.push(o.readUint32()),this.sample_offsets.push(o.readInt32())}write(o){this.version=this.sample_offsets.some(l=>l<0)?1:0,this.flags=0,this.size=4+8*this.sample_counts.length,this.writeHeader(o),o.writeUint32(this.sample_counts.length);for(let l=0;l<this.sample_counts.length;l++)o.writeUint32(this.sample_counts[l]),this.version===1?o.writeInt32(this.sample_offsets[l]):o.writeUint32(this.sample_offsets[l])}unpack(o){let l=0;for(let i=0;i<this.sample_counts.length;i++)for(let r=0;r<this.sample_counts[i];r++)o[l].pts=o[l].dts+this.sample_offsets[i],l++}},vi.fourcc="ctts",vi),bi,dac3Box=(bi=class extends Box{constructor(){super(...arguments),this.box_name="AC3SpecificBox"}parse(o){const l=o.readUint8(),i=o.readUint8(),r=o.readUint8();this.fscod=l>>6,this.bsid=l>>1&31,this.bsmod=(l&1)<<2|i>>6&3,this.acmod=i>>3&7,this.lfeon=i>>2&1,this.bit_rate_code=i&3|r>>5&7}},bi.fourcc="dac3",bi),Oi,dec3Box=(Oi=class extends Box{constructor(){super(...arguments),this.box_name="EC3SpecificBox"}parse(o){const l=o.readUint16();this.data_rate=l>>3,this.num_ind_sub=l&7,this.ind_subs=[];for(let i=0;i<this.num_ind_sub+1;i++){const r=o.readUint8(),t=o.readUint8(),e=o.readUint8(),n={fscod:r>>6,bsid:r>>1&31,bsmod:(r&1)<<4|t>>4&15,acmod:t>>1&7,lfeon:t&1,num_dep_sub:e>>1&15};this.ind_subs.push(n),n.num_dep_sub>0&&(n.chan_loc=(e&1)<<8|o.readUint8())}}},Oi.fourcc="dec3",Oi),Zi,dfLaBox=(Zi=class extends FullBox{constructor(){super(...arguments),this.box_name="FLACSpecificBox"}parse(o){this.parseFullHeader(o);const l=127,i=128,r=[],t=["STREAMINFO","PADDING","APPLICATION","SEEKTABLE","VORBIS_COMMENT","CUESHEET","PICTURE","RESERVED"];let e;do{e=o.readUint8();const n=Math.min(e&l,t.length-1);n?o.readUint8Array(o.readUint24()):(o.readUint8Array(13),this.samplerate=o.readUint32()>>12,o.readUint8Array(20)),r.push(t[n])}while(e&i);this.numMetadataBlocks=r.length+" ("+r.join(", ")+")"}},Zi.fourcc="dfLa",Zi),Di,dimmBox=(Di=class extends Box{constructor(){super(...arguments),this.box_name="hintimmediateBytesSent"}parse(o){this.bytessent=o.readUint64()}},Di.fourcc="dimm",Di),wi,dmax=(wi=class extends Box{constructor(){super(...arguments),this.box_name="hintlongestpacket"}parse(o){this.time=o.readUint32()}},wi.fourcc="dmax",wi),gi,dmedBox=(gi=class extends Box{constructor(){super(...arguments),this.box_name="hintmediaBytesSent"}parse(o){this.bytessent=o.readUint64()}},gi.fourcc="dmed",gi),xi,dOpsBox=(xi=class extends Box{constructor(){super(...arguments),this.box_name="OpusSpecificBox"}parse(o){if(this.Version=o.readUint8(),this.OutputChannelCount=o.readUint8(),this.PreSkip=o.readUint16(),this.InputSampleRate=o.readUint32(),this.OutputGain=o.readInt16(),this.ChannelMappingFamily=o.readUint8(),this.ChannelMappingFamily!==0){this.StreamCount=o.readUint8(),this.CoupledCount=o.readUint8(),this.ChannelMapping=[];for(let l=0;l<this.OutputChannelCount;l++)this.ChannelMapping[l]=o.readUint8()}}write(o){if(this.size=11,this.ChannelMappingFamily!==0&&(this.size+=2+this.OutputChannelCount),this.writeHeader(o),o.writeUint8(this.Version),o.writeUint8(this.OutputChannelCount),o.writeUint16(this.PreSkip),o.writeUint32(this.InputSampleRate),o.writeInt16(this.OutputGain),o.writeUint8(this.ChannelMappingFamily),this.ChannelMappingFamily!==0){o.writeUint8(this.StreamCount),o.writeUint8(this.CoupledCount);for(let l=0;l<this.OutputChannelCount;l++)o.writeUint8(this.ChannelMapping[l])}}},xi.fourcc="dOps",xi),Ii,drepBox=(Ii=class extends Box{constructor(){super(...arguments),this.box_name="hintrepeatedBytesSent"}parse(o){this.bytessent=o.readUint64()}},Ii.fourcc="drep",Ii),Mi,elstBox=(Mi=class extends FullBox{constructor(){super(...arguments),this.box_name="EditListBox"}parse(o){this.parseFullHeader(o),this.entries=[];const l=o.readUint32();for(let i=0;i<l;i++){const r={segment_duration:this.version===1?o.readUint64():o.readUint32(),media_time:this.version===1?o.readInt64():o.readInt32(),media_rate_integer:o.readInt16(),media_rate_fraction:o.readInt16()};this.entries.push(r)}}write(o){const l=this.entries.some(i=>i.segment_duration>MAX_UINT32||i.media_time>MAX_UINT32)||this.version===1;this.version=l?1:0,this.size=4+12*this.entries.length,this.size+=l?2*4*this.entries.length:0,this.writeHeader(o),o.writeUint32(this.entries.length);for(let i=0;i<this.entries.length;i++){const r=this.entries[i];l?(o.writeUint64(r.segment_duration),o.writeInt64(r.media_time)):(o.writeUint32(r.segment_duration),o.writeInt32(r.media_time)),o.writeInt16(r.media_rate_integer),o.writeInt16(r.media_rate_fraction)}}},Mi.fourcc="elst",Mi),_i,emsgBox=(_i=class extends FullBox{constructor(){super(...arguments),this.box_name="EventMessageBox"}parse(o){this.parseFullHeader(o),this.version===1?(this.timescale=o.readUint32(),this.presentation_time=o.readUint64(),this.event_duration=o.readUint32(),this.id=o.readUint32(),this.scheme_id_uri=o.readCString(),this.value=o.readCString()):(this.scheme_id_uri=o.readCString(),this.value=o.readCString(),this.timescale=o.readUint32(),this.presentation_time_delta=o.readUint32(),this.event_duration=o.readUint32(),this.id=o.readUint32());let l=this.size-this.hdr_size-(4*4+(this.scheme_id_uri.length+1)+(this.value.length+1));this.version===1&&(l-=4),this.message_data=o.readUint8Array(l)}write(o){this.version=0,this.flags=0,this.size=4*4+this.message_data.length+(this.scheme_id_uri.length+1)+(this.value.length+1),this.writeHeader(o),o.writeCString(this.scheme_id_uri),o.writeCString(this.value),o.writeUint32(this.timescale),o.writeUint32(this.presentation_time_delta),o.writeUint32(this.event_duration),o.writeUint32(this.id),o.writeUint8Array(this.message_data)}},_i.fourcc="emsg",_i),EntityToGroup=class extends FullBox{parse(d){this.parseFullHeader(d),this.group_id=d.readUint32(),this.num_entities_in_group=d.readUint32(),this.entity_ids=[];for(let o=0;o<this.num_entities_in_group;o++){const l=d.readUint32();this.entity_ids.push(l)}}},Pi,aebrBox=(Pi=class extends EntityToGroup{constructor(){super(...arguments),this.box_name="Auto exposure bracketing"}},Pi.fourcc="aebr",Pi),$i,afbrBox=($i=class extends EntityToGroup{constructor(){super(...arguments),this.box_name="Flash exposure information"}},$i.fourcc="afbr",$i),Li,albcBox=(Li=class extends EntityToGroup{constructor(){super(...arguments),this.box_name="Album collection"}},Li.fourcc="albc",Li),Ai,altrBox=(Ai=class extends EntityToGroup{constructor(){super(...arguments),this.box_name="Alternative entity"}},Ai.fourcc="altr",Ai),Gi,brstBox=(Gi=class extends EntityToGroup{constructor(){super(...arguments),this.box_name="Burst image"}},Gi.fourcc="brst",Gi),Hi,dobrBox=(Hi=class extends EntityToGroup{constructor(){super(...arguments),this.box_name="Depth of field bracketing"}},Hi.fourcc="dobr",Hi),zi,eqivBox=(zi=class extends EntityToGroup{constructor(){super(...arguments),this.box_name="Equivalent entity"}},zi.fourcc="eqiv",zi),Yi,favcBox=(Yi=class extends EntityToGroup{constructor(){super(...arguments),this.box_name="Favorites collection"}},Yi.fourcc="favc",Yi),ji,fobrBox=(ji=class extends EntityToGroup{constructor(){super(...arguments),this.box_name="Focus bracketing"}},ji.fourcc="fobr",ji),Xi,iaugBox=(Xi=class extends EntityToGroup{constructor(){super(...arguments),this.box_name="Image item with an audio track"}},Xi.fourcc="iaug",Xi),Ki,panoBox=(Ki=class extends EntityToGroup{constructor(){super(...arguments),this.box_name="Panorama"}},Ki.fourcc="pano",Ki),qi,slidBox=(qi=class extends EntityToGroup{constructor(){super(...arguments),this.box_name="Slideshow"}},qi.fourcc="slid",qi),tn,sterBox=(tn=class extends EntityToGroup{constructor(){super(...arguments),this.box_name="Stereo"}},tn.fourcc="ster",tn),en,tsynBox=(en=class extends EntityToGroup{constructor(){super(...arguments),this.box_name="Time-synchronized capture"}},en.fourcc="tsyn",en),nn,wbbrBox=(nn=class extends EntityToGroup{constructor(){super(...arguments),this.box_name="White balance bracketing"}},nn.fourcc="wbbr",nn),on,prgrBox=(on=class extends EntityToGroup{constructor(){super(...arguments),this.box_name="Progressive rendering"}},on.fourcc="prgr",on),rn,pymdBox=(rn=class extends EntityToGroup{constructor(){super(...arguments),this.box_name="Image pyramid"}parse(o){this.parseFullHeader(o),this.group_id=o.readUint32(),this.num_entities_in_group=o.readUint32(),this.entity_ids=[];for(let l=0;l<this.num_entities_in_group;l++){const i=o.readUint32();this.entity_ids.push(i)}this.tile_size_x=o.readUint16(),this.tile_size_y=o.readUint16(),this.layer_binning=[],this.tiles_in_layer_column_minus1=[],this.tiles_in_layer_row_minus1=[];for(let l=0;l<this.num_entities_in_group;l++)this.layer_binning[l]=o.readUint16(),this.tiles_in_layer_row_minus1[l]=o.readUint16(),this.tiles_in_layer_column_minus1[l]=o.readUint16()}},rn.fourcc="pymd",rn),ln,fielBox=(ln=class extends Box{constructor(){super(...arguments),this.box_name="FieldHandlingBox"}parse(o){this.fieldCount=o.readUint8(),this.fieldOrdering=o.readUint8()}},ln.fourcc="fiel",ln),sn,frmaBox=(sn=class extends Box{constructor(){super(...arguments),this.box_name="OriginalFormatBox"}parse(o){this.data_format=o.readString(4)}},sn.fourcc="frma",sn),an,imirBox=(an=class extends Box{constructor(){super(...arguments),this.box_name="ImageMirror"}parse(o){const l=o.readUint8();this.reserved=l>>7,this.axis=l&1}},an.fourcc="imir",an),dn,ipmaBox=(dn=class extends FullBox{constructor(){super(...arguments),this.box_name="ItemPropertyAssociationBox"}parse(o){this.parseFullHeader(o);const l=o.readUint32();this.associations=[];for(let i=0;i<l;i++){const r=this.version<1?o.readUint16():o.readUint32(),t=[],e=o.readUint8();for(let n=0;n<e;n++){const s=o.readUint8();t.push({essential:(s&128)>>7===1,property_index:this.flags&1?(s&127)<<8|o.readUint8():s&127})}this.associations.push({id:r,props:t})}}},dn.fourcc="ipma",dn),Un,irotBox=(Un=class extends Box{constructor(){super(...arguments),this.box_name="ImageRotation"}parse(o){this.angle=o.readUint8()&3}},Un.fourcc="irot",Un),un,ispeBox=(un=class extends FullBox{constructor(){super(...arguments),this.box_name="ImageSpatialExtentsProperty"}parse(o){this.parseFullHeader(o),this.image_width=o.readUint32(),this.image_height=o.readUint32()}},un.fourcc="ispe",un),cn,itaiBox=(cn=class extends FullBox{constructor(){super(...arguments),this.box_name="TAITimestampBox"}parse(o){this.TAI_timestamp=o.readUint64();const l=o.readUint8();this.sychronization_state=l>>7&1,this.timestamp_generation_failure=l>>6&1,this.timestamp_is_modified=l>>5&1}},cn.fourcc="itai",cn),Fn,kindBox=(Fn=class extends FullBox{constructor(){super(...arguments),this.box_name="KindBox"}parse(o){this.parseFullHeader(o),this.schemeURI=o.readCString(),this.isEndOfBox(o)||(this.value=o.readCString())}write(o){this.version=0,this.flags=0,this.size=this.schemeURI.length+1+(this.value?this.value.length+1:0),this.writeHeader(o),o.writeCString(this.schemeURI),this.value&&o.writeCString(this.value)}},Fn.fourcc="kind",Fn),Qn,levaBox=(Qn=class extends FullBox{constructor(){super(...arguments),this.box_name="LevelAssignmentBox"}parse(o){this.parseFullHeader(o);const l=o.readUint8();this.levels=[];for(let i=0;i<l;i++){const r={};this.levels[i]=r,r.track_ID=o.readUint32();const t=o.readUint8();switch(r.padding_flag=t>>7,r.assignment_type=t&127,r.assignment_type){case 0:r.grouping_type=o.readString(4);break;case 1:r.grouping_type=o.readString(4),r.grouping_type_parameter=o.readUint32();break;case 2:break;case 3:break;case 4:r.sub_track_id=o.readUint32();break;default:Log.warn("BoxParser",`Unknown level assignment type: ${r.assignment_type}`)}}}},Qn.fourcc="leva",Qn),pn,lhvCBox=(pn=class extends Box{constructor(){super(...arguments),this.box_name="LHEVCConfigurationBox"}parse(o){this.configurationVersion=o.readUint8(),this.min_spatial_segmentation_idc=o.readUint16()&4095,this.parallelismType=o.readUint8()&3;let l=o.readUint8();this.numTemporalLayers=(l&13)>>3,this.temporalIdNested=(l&4)>>2,this.lengthSizeMinusOne=l&3,this.nalu_arrays=[];const i=o.readUint8();for(let r=0;r<i;r++){const t=[];this.nalu_arrays.push(t),l=o.readUint8(),t.completeness=(l&128)>>7,t.nalu_type=l&63;const e=o.readUint16();for(let n=0;n<e;n++){const s=o.readUint16();t.push({data:o.readUint8Array(s)})}}}},pn.fourcc="lhvC",pn),fn,lselBox=(fn=class extends Box{constructor(){super(...arguments),this.box_name="LayerSelectorProperty"}parse(o){this.layer_id=o.readUint16()}},fn.fourcc="lsel",fn),hn,maxrBox=(hn=class extends Box{constructor(){super(...arguments),this.box_name="hintmaxrate"}parse(o){this.period=o.readUint32(),this.bytes=o.readUint32()}},hn.fourcc="maxr",hn),ColorPoint=class{constructor(d,o){this.x=d,this.y=o}toString(){return"("+this.x+","+this.y+")"}},Bn,mdcvBox=(Bn=class extends Box{constructor(){super(...arguments),this.box_name="MasteringDisplayColourVolumeBox"}parse(o){this.display_primaries=[],this.display_primaries[0]=new ColorPoint(o.readUint16(),o.readUint16()),this.display_primaries[1]=new ColorPoint(o.readUint16(),o.readUint16()),this.display_primaries[2]=new ColorPoint(o.readUint16(),o.readUint16()),this.white_point=new ColorPoint(o.readUint16(),o.readUint16()),this.max_display_mastering_luminance=o.readUint32(),this.min_display_mastering_luminance=o.readUint32()}},Bn.fourcc="mdcv",Bn),Rn,mfroBox=(Rn=class extends FullBox{constructor(){super(...arguments),this.box_name="MovieFragmentRandomAccessOffsetBox"}parse(o){this.parseFullHeader(o),this._size=o.readUint32()}},Rn.fourcc="mfro",Rn),Sn,mskCBox=(Sn=class extends FullBox{constructor(){super(...arguments),this.box_name="MaskConfigurationProperty"}parse(o){this.parseFullHeader(o),this.bits_per_pixel=o.readUint8()}},Sn.fourcc="mskC",Sn),yn,npckBox=(yn=class extends Box{constructor(){super(...arguments),this.box_name="hintPacketsSent"}parse(o){this.packetssent=o.readUint32()}},yn.fourcc="npck",yn),Vn,numpBox=(Vn=class extends Box{constructor(){super(...arguments),this.box_name="hintPacketsSent"}parse(o){this.packetssent=o.readUint64()}},Vn.fourcc="nump",Vn),PaddingBit=class{constructor(d,o){this.pad1=d,this.pad2=o}},Jn,padbBox=(Jn=class extends FullBox{constructor(){super(...arguments),this.box_name="PaddingBitsBox"}parse(o){this.parseFullHeader(o);const l=o.readUint32();this.padbits=[];for(let i=0;i<Math.floor((l+1)/2);i++){const r=o.readUint8(),t=(r&112)>>4,e=r&7;this.padbits.push(new PaddingBit(t,e))}}},Jn.fourcc="padb",Jn),En,paspBox=(En=class extends Box{constructor(){super(...arguments),this.box_name="PixelAspectRatioBox"}parse(o){this.hSpacing=o.readUint32(),this.vSpacing=o.readUint32()}},En.fourcc="pasp",En),mn,paylBox=(mn=class extends Box{constructor(){super(...arguments),this.box_name="CuePayloadBox"}parse(o){this.text=o.readString(this.size-this.hdr_size)}},mn.fourcc="payl",mn),kn,paytBox=(kn=class extends Box{constructor(){super(...arguments),this.box_name="hintpayloadID"}parse(o){this.payloadID=o.readUint32();const l=o.readUint8();this.rtpmap_string=o.readString(l)}},kn.fourcc="payt",kn),Nn,pdinBox=(Nn=class extends FullBox{constructor(){super(...arguments),this.box_name="ProgressiveDownloadInfoBox",this.rate=[],this.initial_delay=[]}parse(o){this.parseFullHeader(o);const l=(this.size-this.hdr_size)/8;for(let i=0;i<l;i++)this.rate[i]=o.readUint32(),this.initial_delay[i]=o.readUint32()}},Nn.fourcc="pdin",Nn),Tn,pixiBox=(Tn=class extends FullBox{constructor(){super(...arguments),this.box_name="PixelInformationProperty"}parse(o){this.parseFullHeader(o),this.num_channels=o.readUint8(),this.bits_per_channels=[];for(let l=0;l<this.num_channels;l++)this.bits_per_channels[l]=o.readUint8()}},Tn.fourcc="pixi",Tn),Wn,pmaxBox=(Wn=class extends Box{constructor(){super(...arguments),this.box_name="hintlargestpacket"}parse(o){this.bytes=o.readUint32()}},Wn.fourcc="pmax",Wn),Cn,prdiBox=(Cn=class extends FullBox{constructor(){super(...arguments),this.box_name="ProgressiveDerivedImageItemInformationProperty"}parse(o){if(this.parseFullHeader(o),this.step_count=o.readUint16(),this.item_count=[],this.flags&2)for(let l=0;l<this.step_count;l++)this.item_count[l]=o.readUint16()}},Cn.fourcc="prdi",Cn),vn,prfrBox=(vn=class extends FullBox{constructor(){super(...arguments),this.box_name="ProjectionFormatBox"}parse(o){this.parseFullHeader(o),this.projection_type=o.readUint8()&31}},vn.fourcc="prfr",vn),bn,prftBox=(bn=class extends FullBox{constructor(){super(...arguments),this.box_name="ProducerReferenceTimeBox"}parse(o){this.parseFullHeader(o),this.ref_track_id=o.readUint32(),this.ntp_timestamp=o.readUint64(),this.version===0?this.media_time=o.readUint32():this.media_time=o.readUint64()}},bn.fourcc="prft",bn),On,psshBox=(On=class extends FullBox{constructor(){super(...arguments),this.box_name="ProtectionSystemSpecificHeaderBox"}parse(o){if(this.parseFullHeader(o),this.system_id=parseHex16(o),this.kid=[],this.version>0){const i=o.readUint32();for(let r=0;r<i;r++)this.kid[r]=parseHex16(o)}const l=o.readUint32();l>0&&(this.protection_data=o.readUint8Array(l))}},On.fourcc="pssh",On),Zn,clefBox=(Zn=class extends FullBox{constructor(){super(...arguments),this.box_name="TrackCleanApertureDimensionsBox"}parse(o){this.parseFullHeader(o),this.width=o.readUint32(),this.height=o.readUint32()}},Zn.fourcc="clef",Zn);function parseItifData(d,o){if(d===dataBox.Types.UTF8)return new TextDecoder("utf-8").decode(o);const l=new DataView(o.buffer);if(d===dataBox.Types.BE_UNSIGNED_INT){if(o.length===1)return l.getUint8(0);if(o.length===2)return l.getUint16(0,!1);if(o.length===4)return l.getUint32(0,!1);if(o.length===8)return l.getBigUint64(0,!1);throw new Error("Unsupported ITIF_TYPE_BE_UNSIGNED_INT length "+o.length)}else if(d===dataBox.Types.BE_SIGNED_INT){if(o.length===1)return l.getInt8(0);if(o.length===2)return l.getInt16(0,!1);if(o.length===4)return l.getInt32(0,!1);if(o.length===8)return l.getBigInt64(0,!1);throw new Error("Unsupported ITIF_TYPE_BE_SIGNED_INT length "+o.length)}else if(d===dataBox.Types.BE_FLOAT32)return l.getFloat32(0,!1);Log.warn("DataBox","Unsupported or unimplemented itif data type: "+d)}var _,dataBox=(_=class extends Box{constructor(){super(...arguments),this.box_name="DataBox"}parse(o){this.valueType=o.readUint32(),this.country=o.readUint16(),this.country>255&&(o.seek(o.getPosition()-2),this.countryString=o.readString(2)),this.language=o.readUint16(),this.language>255&&(o.seek(o.getPosition()-2),this.parseLanguage(o)),this.raw=o.readUint8Array(this.size-this.hdr_size-8),this.value=parseItifData(this.valueType,this.raw)}},_.fourcc="data",_.Types={RESERVED:0,UTF8:1,UTF16:2,SJIS:3,UTF8_SORT:4,UTF16_SORT:5,JPEG:13,PNG:14,BE_SIGNED_INT:21,BE_UNSIGNED_INT:22,BE_FLOAT32:23,BE_FLOAT64:24,BMP:27,QT_ATOM:28,BE_SIGNED_INT8:65,BE_SIGNED_INT16:66,BE_SIGNED_INT32:67,BE_FLOAT32_POINT:70,BE_FLOAT32_DIMENSIONS:71,BE_FLOAT32_RECT:72,BE_SIGNED_INT64:74,BE_UNSIGNED_INT8:75,BE_UNSIGNED_INT16:76,BE_UNSIGNED_INT32:77,BE_UNSIGNED_INT64:78,BE_FLOAT64_AFFINE_TRANSFORM:79},_),Dn,enofBox=(Dn=class extends FullBox{constructor(){super(...arguments),this.box_name="TrackEncodedPixelsDimensionsBox"}parse(o){this.parseFullHeader(o),this.width=o.readUint32(),this.height=o.readUint32()}},Dn.fourcc="enof",Dn),wn,ilstBox=(wn=class extends Box{constructor(){super(...arguments),this.box_name="IlstBox"}parse(o){this.list={};let l=this.size-this.hdr_size;for(;l>0;){const i=o.readUint32(),r=o.readUint32(),t=parseOneBox(o,!1,i-8);t.code===OK&&(this.list[r]=t.box),l-=i}}},wn.fourcc="ilst",wn),gn,keysBox=(gn=class extends FullBox{constructor(){super(...arguments),this.box_name="KeysBox"}parse(o){this.parseFullHeader(o),this.count=o.readUint32(),this.keys={};for(let l=0;l<this.count;l++){const i=o.readUint32();this.keys[l+1]=o.readString(i-4)}}},gn.fourcc="keys",gn),xn,profBox=(xn=class extends FullBox{constructor(){super(...arguments),this.box_name="TrackProductionApertureDimensionsBox"}parse(o){this.parseFullHeader(o),this.width=o.readUint32(),this.height=o.readUint32()}},xn.fourcc="prof",xn),In,taptBox=(In=class extends ContainerBox{constructor(){super(...arguments),this.box_name="TrackApertureModeDimensionsBox",this.clefs=[],this.profs=[],this.enofs=[],this.subBoxNames=["clef","prof","enof"]}},In.fourcc="tapt",In),Mn,waveBox=(Mn=class extends ContainerBox{constructor(){super(...arguments),this.box_name="siDecompressionParamBox"}},Mn.fourcc="wave",Mn),_n,rtp_Box=(_n=class extends Box{constructor(){super(...arguments),this.box_name="rtpmoviehintinformation"}parse(o){this.descriptionformat=o.readString(4),this.sdptext=o.readString(this.size-this.hdr_size-4)}},_n.fourcc="rtp ",_n),Pn,saioBox=(Pn=class extends FullBox{constructor(){super(...arguments),this.box_name="SampleAuxiliaryInformationOffsetsBox"}parse(o){this.parseFullHeader(o),this.flags&1&&(this.aux_info_type=o.readString(4),this.aux_info_type_parameter=o.readUint32());const l=o.readUint32();this.offset=[];for(let i=0;i<l;i++)this.version===0?this.offset[i]=o.readUint32():this.offset[i]=o.readUint64()}},Pn.fourcc="saio",Pn),$n,saizBox=($n=class extends FullBox{constructor(){super(...arguments),this.box_name="SampleAuxiliaryInformationSizesBox"}parse(o){if(this.parseFullHeader(o),this.flags&1&&(this.aux_info_type=o.readString(4),this.aux_info_type_parameter=o.readUint32()),this.default_sample_info_size=o.readUint8(),this.sample_count=o.readUint32(),this.sample_info_size=[],this.default_sample_info_size===0)for(let l=0;l<this.sample_count;l++)this.sample_info_size[l]=o.readUint8()}},$n.fourcc="saiz",$n),Pixel=class{constructor(d,o){this.bad_pixel_row=d,this.bad_pixel_column=o}toString(){return"[row: "+this.bad_pixel_row+", column: "+this.bad_pixel_column+"]"}},Ln,sbpmBox=(Ln=class extends FullBox{constructor(){super(...arguments),this.box_name="SensorBadPixelsMapBox"}parse(o){this.parseFullHeader(o),this.component_count=o.readUint16(),this.component_index=[];for(let i=0;i<this.component_count;i++)this.component_index.push(o.readUint16());const l=o.readUint8();this.correction_applied=(l&128)===128,this.num_bad_rows=o.readUint32(),this.num_bad_cols=o.readUint32(),this.num_bad_pixels=o.readUint32(),this.bad_rows=[],this.bad_columns=[],this.bad_pixels=[];for(let i=0;i<this.num_bad_rows;i++)this.bad_rows.push(o.readUint32());for(let i=0;i<this.num_bad_cols;i++)this.bad_columns.push(o.readUint32());for(let i=0;i<this.num_bad_pixels;i++){const r=o.readUint32(),t=o.readUint32();this.bad_pixels.push(new Pixel(r,t))}}},Ln.fourcc="sbpm",Ln),An,schmBox=(An=class extends FullBox{constructor(){super(...arguments),this.box_name="SchemeTypeBox"}parse(o){this.parseFullHeader(o),this.scheme_type=o.readString(4),this.scheme_version=o.readUint32(),this.flags&1&&(this.scheme_uri=o.readString(this.size-this.hdr_size-8))}},An.fourcc="schm",An),Gn,sdp_Box=(Gn=class extends Box{constructor(){super(...arguments),this.box_name="rtptracksdphintinformation"}parse(o){this.sdptext=o.readString(this.size-this.hdr_size)}},Gn.fourcc="sdp ",Gn),Hn,sencBox=(Hn=class extends FullBox{constructor(){super(...arguments),this.box_name="SampleEncryptionBox"}},Hn.fourcc="senc",Hn),zn,SmDmBox=(zn=class extends FullBox{constructor(){super(...arguments),this.box_name="SMPTE2086MasteringDisplayMetadataBox"}parse(o){this.parseFullHeader(o),this.primaryRChromaticity_x=o.readUint16(),this.primaryRChromaticity_y=o.readUint16(),this.primaryGChromaticity_x=o.readUint16(),this.primaryGChromaticity_y=o.readUint16(),this.primaryBChromaticity_x=o.readUint16(),this.primaryBChromaticity_y=o.readUint16(),this.whitePointChromaticity_x=o.readUint16(),this.whitePointChromaticity_y=o.readUint16(),this.luminanceMax=o.readUint32(),this.luminanceMin=o.readUint32()}},zn.fourcc="SmDm",zn),Yn,sratBox=(Yn=class extends FullBox{constructor(){super(...arguments),this.box_name="SamplingRateBox"}parse(o){this.parseFullHeader(o),this.sampling_rate=o.readUint32()}},Yn.fourcc="srat",Yn),jn,ssixBox=(jn=class extends FullBox{constructor(){super(...arguments),this.box_name="CompressedSubsegmentIndexBox"}parse(o){this.parseFullHeader(o),this.subsegments=[];const l=o.readUint32();for(let i=0;i<l;i++){const r={};this.subsegments.push(r),r.ranges=[];const t=o.readUint32();for(let e=0;e<t;e++){const n={};r.ranges.push(n),n.level=o.readUint8(),n.range_size=o.readUint24()}}}},jn.fourcc="ssix",jn),Xn,stdpBox=(Xn=class extends FullBox{constructor(){super(...arguments),this.box_name="DegradationPriorityBox"}parse(o){this.parseFullHeader(o);const l=(this.size-this.hdr_size)/2;this.priority=[];for(let i=0;i<l;i++)this.priority[i]=o.readUint16()}},Xn.fourcc="stpd",Xn),Kn,striBox=(Kn=class extends FullBox{constructor(){super(...arguments),this.box_name="SubTrackInformationBox"}parse(o){this.parseFullHeader(o),this.switch_group=o.readUint16(),this.alternate_group=o.readUint16(),this.sub_track_id=o.readUint32();const l=(this.size-this.hdr_size-8)/4;this.attribute_list=[];for(let i=0;i<l;i++)this.attribute_list[i]=o.readUint32()}},Kn.fourcc="stri",Kn),qn,stsgBox=(qn=class extends FullBox{constructor(){super(...arguments),this.box_name="SubTrackSampleGroupBox"}parse(o){this.parseFullHeader(o),this.grouping_type=o.readUint32();const l=o.readUint16();this.group_description_index=[];for(let i=0;i<l;i++)this.group_description_index[i]=o.readUint32()}},qn.fourcc="stsg",qn),to,stshBox=(to=class extends FullBox{constructor(){super(...arguments),this.box_name="ShadowSyncSampleBox"}parse(o){this.parseFullHeader(o);const l=o.readUint32();if(this.shadowed_sample_numbers=[],this.sync_sample_numbers=[],this.version===0)for(let i=0;i<l;i++)this.shadowed_sample_numbers.push(o.readUint32()),this.sync_sample_numbers.push(o.readUint32())}write(o){this.version=0,this.flags=0,this.size=4+8*this.shadowed_sample_numbers.length,this.writeHeader(o),o.writeUint32(this.shadowed_sample_numbers.length);for(let l=0;l<this.shadowed_sample_numbers.length;l++)o.writeUint32(this.shadowed_sample_numbers[l]),o.writeUint32(this.sync_sample_numbers[l])}},to.fourcc="stsh",to),eo,stssBox=(eo=class extends FullBox{constructor(){super(...arguments),this.box_name="SyncSampleBox"}parse(o){this.parseFullHeader(o);const l=o.readUint32();if(this.version===0){this.sample_numbers=[];for(let i=0;i<l;i++)this.sample_numbers.push(o.readUint32())}}write(o){this.version=0,this.flags=0,this.size=4+4*this.sample_numbers.length,this.writeHeader(o),o.writeUint32(this.sample_numbers.length),o.writeUint32Array(this.sample_numbers)}},eo.fourcc="stss",eo),io,stviBox=(io=class extends FullBox{constructor(){super(...arguments),this.box_name="StereoVideoBox"}parse(o){this.parseFullHeader(o);const l=o.readUint32();this.single_view_allowed=l&3,this.stereo_scheme=o.readUint32();const i=o.readUint32();for(this.stereo_indication_type=o.readString(i),this.boxes=[];o.getPosition()<this.start+this.size;){const r=parseOneBox(o,!1,this.size-(o.getPosition()-this.start));if(r.code===OK){const t=r.box;this.boxes.push(t),this[t.type]=t}else return}}},io.fourcc="stvi",io),no,stypBox=(no=class extends Box{constructor(){super(...arguments),this.box_name="SegmentTypeBox"}parse(o){let l=this.size-this.hdr_size;this.major_brand=o.readString(4),this.minor_version=o.readUint32(),l-=8,this.compatible_brands=[];let i=0;for(;l>=4;)this.compatible_brands[i]=o.readString(4),l-=4,i++}write(o){this.size=8+4*this.compatible_brands.length,this.writeHeader(o),o.writeString(this.major_brand,void 0,4),o.writeUint32(this.minor_version);for(let l=0;l<this.compatible_brands.length;l++)o.writeString(this.compatible_brands[l],void 0,4)}},no.fourcc="styp",no),oo,stz2Box=(oo=class extends FullBox{constructor(){super(...arguments),this.box_name="CompactSampleSizeBox"}parse(o){if(this.parseFullHeader(o),this.sample_sizes=[],this.version===0){this.reserved=o.readUint24(),this.field_size=o.readUint8();const l=o.readUint32();if(this.field_size===4)for(let i=0;i<l;i+=2){const r=o.readUint8();this.sample_sizes[i]=r>>4&15,this.sample_sizes[i+1]=r&15}else if(this.field_size===8)for(let i=0;i<l;i++)this.sample_sizes[i]=o.readUint8();else if(this.field_size===16)for(let i=0;i<l;i++)this.sample_sizes[i]=o.readUint16();else Log.error("BoxParser","Error in length field in stz2 box",o.isofile)}}},oo.fourcc="stz2",oo),ro,subsBox=(ro=class extends FullBox{constructor(){super(...arguments),this.box_name="SubSampleInformationBox"}parse(o){this.parseFullHeader(o);const l=o.readUint32();this.entries=[];let i;for(let r=0;r<l;r++){const t={};if(this.entries[r]=t,t.sample_delta=o.readUint32(),t.subsamples=[],i=o.readUint16(),i>0)for(let e=0;e<i;e++){const n={};t.subsamples.push(n),this.version===1?n.size=o.readUint32():n.size=o.readUint16(),n.priority=o.readUint8(),n.discardable=o.readUint8(),n.codec_specific_parameters=o.readUint32()}}}},ro.fourcc="subs",ro),lo,taicBox=(lo=class extends FullBox{constructor(){super(...arguments),this.box_name="TAIClockInfoBox"}parse(o){this.time_uncertainty=o.readUint64(),this.clock_resolution=o.readUint32(),this.clock_drift_rate=o.readInt32();const l=o.readUint8();this.clock_type=(l&192)>>6}},lo.fourcc="taic",lo),so,tencBox=(so=class extends FullBox{constructor(){super(...arguments),this.box_name="TrackEncryptionBox"}parse(o){if(this.parseFullHeader(o),o.readUint8(),this.version===0)o.readUint8();else{const l=o.readUint8();this.default_crypt_byte_block=l>>4&15,this.default_skip_byte_block=l&15}this.default_isProtected=o.readUint8(),this.default_Per_Sample_IV_Size=o.readUint8(),this.default_KID=parseHex16(o),this.default_isProtected===1&&this.default_Per_Sample_IV_Size===0&&(this.default_constant_IV_size=o.readUint8(),this.default_constant_IV=o.readUint8Array(this.default_constant_IV_size))}},so.fourcc="tenc",so),ao,tfraBox=(ao=class extends FullBox{constructor(){super(...arguments),this.box_name="TrackFragmentRandomAccessBox"}parse(o){this.parseFullHeader(o),this.track_ID=o.readUint32(),o.readUint24();const l=o.readUint8();this.length_size_of_traf_num=l>>4&3,this.length_size_of_trun_num=l>>2&3,this.length_size_of_sample_num=l&3,this.entries=[];const i=o.readUint32();for(let r=0;r<i;r++)this.version===1?(this.time=o.readUint64(),this.moof_offset=o.readUint64()):(this.time=o.readUint32(),this.moof_offset=o.readUint32()),this.traf_number=o["readUint"+8*(this.length_size_of_traf_num+1)](),this.trun_number=o["readUint"+8*(this.length_size_of_trun_num+1)](),this.sample_number=o["readUint"+8*(this.length_size_of_sample_num+1)]()}},ao.fourcc="tfra",ao),Uo,tmaxBox=(Uo=class extends Box{constructor(){super(...arguments),this.box_name="hintmaxrelativetime"}parse(o){this.time=o.readUint32()}},Uo.fourcc="tmax",Uo),uo,tminBox=(uo=class extends Box{constructor(){super(...arguments),this.box_name="hintminrelativetime"}parse(o){this.time=o.readUint32()}},uo.fourcc="tmin",uo),co,totlBox=(co=class extends Box{constructor(){super(...arguments),this.box_name="hintBytesSent"}parse(o){this.bytessent=o.readUint32()}},co.fourcc="totl",co),Fo,tpayBox=(Fo=class extends Box{constructor(){super(...arguments),this.box_name="hintBytesSent"}parse(o){this.bytessent=o.readUint32()}},Fo.fourcc="tpay",Fo),Qo,tpylBox=(Qo=class extends Box{constructor(){super(...arguments),this.box_name="hintBytesSent"}parse(o){this.bytessent=o.readUint64()}},Qo.fourcc="tpyl",Qo),po,msrcTrackGroupTypeBox=(po=class extends TrackGroupTypeBox{},po.fourcc="msrc",po),I,trefBox=(I=class extends Box{constructor(){super(...arguments),this.box_name="TrackReferenceBox",this.references=[]}parse(o){for(;o.getPosition()<this.start+this.size;){const l=parseOneBox(o,!0,this.size-(o.getPosition()-this.start));if(l.code===OK){I.allowed_types.includes(l.type)||Log.warn("BoxParser",`Unknown track reference type: '${l.type}'`);const i=new TrackReferenceTypeBox(l.type,l.size,l.hdr_size,l.start);i.write===Box.prototype.write&&i.type!=="mdat"&&(Log.info("BoxParser","TrackReference "+i.type+" box writing not yet implemented, keeping unparsed data in memory for later write"),i.parseDataAndRewind(o)),i.parse(o),this.references.push(i)}else return}}},I.fourcc="tref",I.allowed_types=["hint","cdsc","font","hind","vdep","vplx","subt","thmb","auxl","cdtg","shsc","aest"],I),fo,trepBox=(fo=class extends FullBox{constructor(){super(...arguments),this.box_name="TrackExtensionPropertiesBox"}parse(o){for(this.parseFullHeader(o),this.track_ID=o.readUint32(),this.boxes=[];o.getPosition()<this.start+this.size;){const l=parseOneBox(o,!1,this.size-(o.getPosition()-this.start));if(l.code===OK){const i=l.box;this.boxes.push(i)}else return}}},fo.fourcc="trep",fo),ho,trpyBox=(ho=class extends Box{constructor(){super(...arguments),this.box_name="hintBytesSent"}parse(o){this.bytessent=o.readUint64()}},ho.fourcc="trpy",ho),Bo,tselBox=(Bo=class extends FullBox{constructor(){super(...arguments),this.box_name="TrackSelectionBox"}parse(o){this.parseFullHeader(o),this.switch_group=o.readUint32();const l=(this.size-this.hdr_size-4)/4;this.attribute_list=[];for(let i=0;i<l;i++)this.attribute_list[i]=o.readUint32()}},Bo.fourcc="tsel",Bo),Ro,txtcBox=(Ro=class extends FullBox{constructor(){super(...arguments),this.box_name="TextConfigBox"}parse(o){this.parseFullHeader(o),this.config=o.readCString()}},Ro.fourcc="txtc",Ro),So,tycoBox=(So=class extends Box{constructor(){super(...arguments),this.box_name="TypeCombinationBox"}parse(o){const l=(this.size-this.hdr_size)/4;this.compatible_brands=[];for(let i=0;i<l;i++)this.compatible_brands[i]=o.readString(4)}},So.fourcc="tyco",So),yo,udesBox=(yo=class extends FullBox{constructor(){super(...arguments),this.box_name="UserDescriptionProperty"}parse(o){this.parseFullHeader(o),this.lang=o.readCString(),this.name=o.readCString(),this.description=o.readCString(),this.tags=o.readCString()}},yo.fourcc="udes",yo),Vo,uncCBox=(Vo=class extends FullBox{constructor(){super(...arguments),this.box_name="UncompressedFrameConfigBox"}parse(o){if(this.parseFullHeader(o),this.profile=o.readString(4),this.version!==1){if(this.version===0){this.component_count=o.readUint32(),this.component_index=[],this.component_bit_depth_minus_one=[],this.component_format=[],this.component_align_size=[];for(let i=0;i<this.component_count;i++)this.component_index.push(o.readUint16()),this.component_bit_depth_minus_one.push(o.readUint8()),this.component_format.push(o.readUint8()),this.component_align_size.push(o.readUint8());this.sampling_type=o.readUint8(),this.interleave_type=o.readUint8(),this.block_size=o.readUint8();const l=o.readUint8();this.component_little_endian=l>>7&1,this.block_pad_lsb=l>>6&1,this.block_little_endian=l>>5&1,this.block_reversed=l>>4&1,this.pad_unknown=l>>3&1,this.pixel_size=o.readUint32(),this.row_align_size=o.readUint32(),this.tile_align_size=o.readUint32(),this.num_tile_cols_minus_one=o.readUint32(),this.num_tile_rows_minus_one=o.readUint32()}}}},Vo.fourcc="uncC",Vo),Jo,urnBox=(Jo=class extends FullBox{constructor(){super(...arguments),this.box_name="DataEntryUrnBox"}parse(o){this.parseFullHeader(o),this.name=o.readCString(),this.size-this.hdr_size-this.name.length-1>0&&(this.location=o.readCString())}write(o){this.version=0,this.flags=0,this.size=this.name.length+1+(this.location?this.location.length+1:0),this.writeHeader(o),o.writeCString(this.name),this.location&&o.writeCString(this.location)}},Jo.fourcc="urn ",Jo),Eo,vttCBox=(Eo=class extends Box{constructor(){super(...arguments),this.box_name="WebVTTConfigurationBox"}parse(o){this.text=o.readString(this.size-this.hdr_size)}},Eo.fourcc="vttC",Eo),mo,vvnCBox=(mo=class extends FullBox{constructor(){super(...arguments),this.box_name="VvcNALUConfigBox"}parse(o){this.parseFullHeader(o);const l=o.readUint8();this.lengthSizeMinusOne=l&3}},mo.fourcc="vvnC",mo),ko,alstSampleGroupEntry=(ko=class extends SampleGroupEntry{parse(o){const l=o.readUint16();this.first_output_sample=o.readUint16(),this.sample_offset=[];for(let r=0;r<l;r++)this.sample_offset[r]=o.readUint32();const i=this.description_length-4-4*l;this.num_output_samples=[],this.num_total_samples=[];for(let r=0;r<i/4;r++)this.num_output_samples[r]=o.readUint16(),this.num_total_samples[r]=o.readUint16()}},ko.grouping_type="alst",ko),No,avllSampleGroupEntry=(No=class extends SampleGroupEntry{parse(o){this.layerNumber=o.readUint8(),this.accurateStatisticsFlag=o.readUint8(),this.avgBitRate=o.readUint16(),this.avgFrameRate=o.readUint16()}},No.grouping_type="avll",No),To,avssSampleGroupEntry=(To=class extends SampleGroupEntry{parse(o){this.subSequenceIdentifier=o.readUint16(),this.layerNumber=o.readUint8();const l=o.readUint8();this.durationFlag=l>>7,this.avgRateFlag=l>>6&1,this.durationFlag&&(this.duration=o.readUint32()),this.avgRateFlag&&(this.accurateStatisticsFlag=o.readUint8(),this.avgBitRate=o.readUint16(),this.avgFrameRate=o.readUint16()),this.dependency=[];const i=o.readUint8();for(let r=0;r<i;r++)this.dependency.push({subSeqDirectionFlag:o.readUint8(),layerNumber:o.readUint8(),subSequenceIdentifier:o.readUint16()})}},To.grouping_type="avss",To),Wo,dtrtSampleGroupEntry=(Wo=class extends SampleGroupEntry{parse(o){Log.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},Wo.grouping_type="dtrt",Wo),Co,mvifSampleGroupEntry=(Co=class extends SampleGroupEntry{parse(o){Log.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},Co.grouping_type="mvif",Co),vo,prolSampleGroupEntry=(vo=class extends SampleGroupEntry{parse(o){this.roll_distance=o.readInt16()}},vo.grouping_type="prol",vo),bo,rapSampleGroupEntry=(bo=class extends SampleGroupEntry{parse(o){const l=o.readUint8();this.num_leading_samples_known=l>>7,this.num_leading_samples=l&127}},bo.grouping_type="rap ",bo),Oo,rashSampleGroupEntry=(Oo=class extends SampleGroupEntry{parse(o){if(this.operation_point_count=o.readUint16(),this.description_length!==2+(this.operation_point_count===1?2:this.operation_point_count*6)+9)Log.warn("BoxParser","Mismatch in "+this.grouping_type+" sample group length"),this.data=o.readUint8Array(this.description_length-2);else{if(this.operation_point_count===1)this.target_rate_share=o.readUint16();else{this.target_rate_share=[],this.available_bitrate=[];for(let l=0;l<this.operation_point_count;l++)this.available_bitrate[l]=o.readUint32(),this.target_rate_share[l]=o.readUint16()}this.maximum_bitrate=o.readUint32(),this.minimum_bitrate=o.readUint32(),this.discard_priority=o.readUint8()}}},Oo.grouping_type="rash",Oo),Zo,rollSampleGroupEntry=(Zo=class extends SampleGroupEntry{parse(o){this.roll_distance=o.readInt16()}},Zo.grouping_type="roll",Zo),Do,scifSampleGroupEntry=(Do=class extends SampleGroupEntry{parse(o){Log.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},Do.grouping_type="scif",Do),wo,scnmSampleGroupEntry=(wo=class extends SampleGroupEntry{parse(o){Log.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},wo.grouping_type="scnm",wo),go,seigSampleGroupEntry=(go=class extends SampleGroupEntry{parse(o){this.reserved=o.readUint8();const l=o.readUint8();this.crypt_byte_block=l>>4,this.skip_byte_block=l&15,this.isProtected=o.readUint8(),this.Per_Sample_IV_Size=o.readUint8(),this.KID=parseHex16(o),this.constant_IV_size=0,this.constant_IV=0,this.isProtected===1&&this.Per_Sample_IV_Size===0&&(this.constant_IV_size=o.readUint8(),this.constant_IV=o.readUint8Array(this.constant_IV_size))}},go.grouping_type="seig",go),xo,stsaSampleGroupEntry=(xo=class extends SampleGroupEntry{parse(o){Log.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},xo.grouping_type="stsa",xo),Io,syncSampleGroupEntry=(Io=class extends SampleGroupEntry{parse(o){const l=o.readUint8();this.NAL_unit_type=l&63}},Io.grouping_type="sync",Io),Mo,teleSampleGroupEntry=(Mo=class extends SampleGroupEntry{parse(o){const l=o.readUint8();this.level_independently_decodable=l>>7}},Mo.grouping_type="tele",Mo),_o,tsasSampleGroupEntry=(_o=class extends SampleGroupEntry{parse(o){Log.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},_o.grouping_type="tsas",_o),Po,tsclSampleGroupEntry=(Po=class extends SampleGroupEntry{parse(o){Log.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},Po.grouping_type="tscl",Po),$o,viprSampleGroupEntry=($o=class extends SampleGroupEntry{parse(o){Log.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},$o.grouping_type="vipr",$o),Lo,UUIDBox=(Lo=class extends Box{},Lo.fourcc="uuid",Lo),Ao,UUIDFullBox=(Ao=class extends FullBox{},Ao.fourcc="uuid",Ao),Go,piffLsmBox=(Go=class extends UUIDFullBox{constructor(){super(...arguments),this.box_name="LiveServerManifestBox"}parse(o){this.parseFullHeader(o),this.LiveServerManifest=o.readString(this.size-this.hdr_size).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;")}},Go.uuid="a5d40b30e81411ddba2f0800200c9a66",Go),Ho,piffPsshBox=(Ho=class extends UUIDFullBox{constructor(){super(...arguments),this.box_name="PiffProtectionSystemSpecificHeaderBox"}parse(o){this.parseFullHeader(o),this.system_id=parseHex16(o);const l=o.readUint32();l>0&&(this.data=o.readUint8Array(l))}},Ho.uuid="d08a4f1810f34a82b6c832d8aba183d3",Ho),zo,piffSencBox=(zo=class extends UUIDFullBox{constructor(){super(...arguments),this.box_name="PiffSampleEncryptionBox"}},zo.uuid="a2394f525a9b4f14a2446c427c648df4",zo),Yo,piffTencBox=(Yo=class extends UUIDFullBox{constructor(){super(...arguments),this.box_name="PiffTrackEncryptionBox"}parse(o){this.parseFullHeader(o),this.default_AlgorithmID=o.readUint24(),this.default_IV_size=o.readUint8(),this.default_KID=parseHex16(o)}},Yo.uuid="8974dbce7be74c5184f97148f9882554",Yo),jo,piffTfrfBox=(jo=class extends UUIDFullBox{constructor(){super(...arguments),this.box_name="TfrfBox"}parse(o){this.parseFullHeader(o),this.fragment_count=o.readUint8(),this.entries=[];for(let l=0;l<this.fragment_count;l++){let i=0,r=0;this.version===1?(i=o.readUint64(),r=o.readUint64()):(i=o.readUint32(),r=o.readUint32()),this.entries.push({absolute_time:i,absolute_duration:r})}}},jo.uuid="d4807ef2ca3946958e5426cb9e46a79f",jo),Xo,piffTfxdBox=(Xo=class extends UUIDFullBox{constructor(){super(...arguments),this.box_name="TfxdBox"}parse(o){this.parseFullHeader(o),this.version===1?(this.absolute_time=o.readUint64(),this.duration=o.readUint64()):(this.absolute_time=o.readUint32(),this.duration=o.readUint32())}},Xo.uuid="6d1d9b0542d544e680e2141daff757b2",Xo),Ko,ItemContentIDPropertyBox=(Ko=class extends UUIDBox{constructor(){super(...arguments),this.box_name="ItemContentIDProperty"}parse(o){this.content_id=o.readCString()}},Ko.uuid="261ef3741d975bbaacbd9d2c8ea73522",Ko);registerBoxes(all_boxes_exports);registerDescriptors(descriptor_exports);class MP4FileSource{constructor(o={}){c(this,"mp4File",null);c(this,"fileInfo",null);c(this,"videoTrackId",null);c(this,"audioTrackId",null);c(this,"videoTrack",null);c(this,"audioTrack",null);c(this,"nextVideoSampleIndex",0);c(this,"nextAudioSampleIndex",0);c(this,"totalVideoSamples",0);c(this,"totalAudioSamples",0);c(this,"samplesRequested",!1);c(this,"isProgressiveLoading",!1);c(this,"fileSize",0);c(this,"loadedBytes",0);c(this,"videoDescription",null);c(this,"audioDescription",null);c(this,"events",{});this.events=o}getFileInfo(){return this.fileInfo}getVideoDescription(){return this.videoDescription}getAudioDescription(){return this.audioDescription}async loadFromUrl(o){this.initMP4File();const l=4*1024*1024;let i=0,r=!1;try{const t=await fetch(o,{method:"HEAD"});if(t.ok){const e=t.headers.get("Content-Length");e&&(this.fileSize=parseInt(e,10))}}catch{}return new Promise((t,e)=>{let n=!1;const s=this.mp4File.onSamples;this.mp4File.onSamples=(u,F,R)=>{!n&&u===this.videoTrackId&&R.length>0&&(n=!0),s==null||s.call(this.mp4File,u,F,R)};const a=this.mp4File.onReady;this.mp4File.onReady=u=>{a==null||a.call(this.mp4File,u),this.fileInfo&&!r&&(r=!0)},(async()=>{var u,F,R,S,y,E,W,N,T,C;try{const m=await fetch(o,{headers:{Range:`bytes=0-${l-1}`}});if(!m.ok&&m.status!==206)throw new Error(`Failed to fetch: ${m.status} ${m.statusText}`);if(m.status===200){this.isProgressiveLoading=!1;const f=await m.arrayBuffer();this.fileSize=f.byteLength,this.loadedBytes=f.byteLength;const h=f;h.fileStart=0,(u=this.mp4File)==null||u.appendBuffer(h),(F=this.mp4File)==null||F.flush(),this.fileInfo?t(this.fileInfo):e(new Error("File loaded but no video track found"));return}if(this.isProgressiveLoading=!0,!this.fileSize){const f=m.headers.get("Content-Range");if(f){const h=f.match(/bytes \d+-\d+\/(\d+)/);h&&(this.fileSize=parseInt(h[1],10))}}const Q=await m.arrayBuffer(),p=Q;if(p.fileStart=0,i=Q.byteLength,this.loadedBytes=i,(S=(R=this.events).onProgress)==null||S.call(R,this.loadedBytes,this.fileSize),(y=this.mp4File)==null||y.appendBuffer(p),r&&n){i<this.fileSize?this.continueLoadingInBackground(o,i,l):(E=this.mp4File)==null||E.flush(),t(this.fileInfo);return}for(;i<this.fileSize&&(!r||!n);){const f=Math.min(i+l-1,this.fileSize-1),h=await fetch(o,{headers:{Range:`bytes=${i}-${f}`}});if(!h.ok&&h.status!==206)throw new Error(`Failed to fetch chunk: ${h.status} ${h.statusText}`);const B=await h.arrayBuffer(),J=B;if(J.fileStart=i,i+=B.byteLength,this.loadedBytes=i,(N=(W=this.events).onProgress)==null||N.call(W,this.loadedBytes,this.fileSize),(T=this.mp4File)==null||T.appendBuffer(J),r&&n){this.continueLoadingInBackground(o,i,l),t(this.fileInfo);return}}i>=this.fileSize&&((C=this.mp4File)==null||C.flush(),this.fileInfo?t(this.fileInfo):e(new Error("File loaded but no video track found")))}catch(m){e(m)}})()})}continueLoadingInBackground(o,l,i){(async()=>{var t,e,n,s,a,U,u,F;let r=l;try{for(;r<this.fileSize;){const R=Math.min(r+i-1,this.fileSize-1),S=await fetch(o,{headers:{Range:`bytes=${r}-${R}`}});if(!S.ok&&S.status!==206){(e=(t=this.events).onError)==null||e.call(t,new Error(`Failed to fetch chunk: ${S.status}`));break}const y=await S.arrayBuffer(),E=y;E.fileStart=r,r+=y.byteLength,this.loadedBytes=r,(s=(n=this.events).onProgress)==null||s.call(n,this.loadedBytes,this.fileSize),(a=this.mp4File)==null||a.appendBuffer(E)}(U=this.mp4File)==null||U.flush()}catch(R){(F=(u=this.events).onError)==null||F.call(u,R)}})()}async loadFromFile(o){this.fileSize=o.size;const l=await o.arrayBuffer();return this.isProgressiveLoading=!1,this.loadFromArrayBuffer(l)}async loadFromStream(o){this.initMP4File(),this.isProgressiveLoading=!0;let l=0;return new Promise((i,r)=>{const t=n=>{var a,U,u;const s=new ArrayBuffer(n.byteLength);new Uint8Array(s).set(n),s.fileStart=l,l+=s.byteLength,this.loadedBytes=l,(U=(a=this.events).onProgress)==null||U.call(a,this.loadedBytes,this.fileSize),(u=this.mp4File)==null||u.appendBuffer(s)},e=async()=>{var n;try{const{done:s,value:a}=await o.read();if(s){(n=this.mp4File)==null||n.flush(),this.fileInfo?i(this.fileInfo):r(new Error("File loaded but no video track found"));return}a&&t(a),e()}catch(s){r(s)}};e()})}async loadFromArrayBuffer(o){return this.initMP4File(),new Promise((l,i)=>{var e,n;const r=this.mp4File.onReady;this.mp4File.onReady=s=>{r==null||r.call(this.mp4File,s),this.fileInfo?(this.requestSamples(),l(this.fileInfo)):i(new Error("No video track found in file"))};const t=o;t.fileStart=0,this.loadedBytes=o.byteLength,(e=this.mp4File)==null||e.appendBuffer(t),(n=this.mp4File)==null||n.flush()})}initMP4File(){this.mp4File=createFile(),this.mp4File.onReady=o=>{this.handleFileReady(o)},this.mp4File.onSamples=(o,l,i)=>{this.handleSamples(o,i)},this.mp4File.onError=(o,l)=>{var r,t;if(l.includes("Invalid box type")||l.includes("Unknown box")){console.warn(`[MP4FileSource] Ignoring unknown box: ${l}`);return}const i=new Error(`MP4Box error in ${o}: ${l}`);(t=(r=this.events).onError)==null||t.call(r,i)}}handleFileReady(o){var l,i,r,t,e,n,s,a,U,u,F,R,S,y,E,W,N,T,C,m,Q,p,f,h,B,J,V,v,b,g;if(o.videoTracks.length>0){this.videoTrack=o.videoTracks[0],this.videoTrackId=this.videoTrack.id,this.totalVideoSamples=this.videoTrack.nb_samples;const Z=(l=this.mp4File)==null?void 0:l.getTrackById(this.videoTrackId);if(Z){const M=(n=(e=(t=(r=(i=Z.mdia)==null?void 0:i.minf)==null?void 0:r.stbl)==null?void 0:t.stsd)==null?void 0:e.entries)==null?void 0:n[0];if(M){const O=M.avcC,D=M.hvcC;O?this.videoDescription=this.serializeAvcC(O):D&&(this.videoDescription=this.serializeHvcC(D))}}}if(o.audioTracks.length>0){this.audioTrack=o.audioTracks[0],this.audioTrackId=this.audioTrack.id,this.totalAudioSamples=this.audioTrack.nb_samples;const Z=(s=this.mp4File)==null?void 0:s.getTrackById(this.audioTrackId);if(Z){const M=(R=(F=(u=(U=(a=Z.mdia)==null?void 0:a.minf)==null?void 0:U.stbl)==null?void 0:u.stsd)==null?void 0:F.entries)==null?void 0:R[0];if(M){const O=M.esds;if(O){let D=null;if((N=(W=(E=(y=(S=O.esd)==null?void 0:S.descs)==null?void 0:y[0])==null?void 0:E.descs)==null?void 0:W[0])!=null&&N.data)D=O.esd.descs[0].descs[0].data;else if((m=(C=(T=O.esd)==null?void 0:T.descs)==null?void 0:C[0])!=null&&m.data)D=O.esd.descs[0].data;else if((Q=O.esd)!=null&&Q.descs)for(const er of O.esd.descs){if(er.tag===4&&er.descs){for(const ir of er.descs)if(ir.tag===5&&ir.data){D=ir.data;break}}if(D)break}D&&(this.audioDescription=D)}}}}if(!this.videoTrack){(f=(p=this.events).onError)==null||f.call(p,new Error("No video track found in file"));return}this.fileInfo={duration:this.videoTrack.duration/this.videoTrack.timescale,timescale:this.videoTrack.timescale,width:((h=this.videoTrack.video)==null?void 0:h.width)??0,height:((B=this.videoTrack.video)==null?void 0:B.height)??0,videoCodec:this.videoTrack.codec,frameRate:this.videoTrack.nb_samples/(this.videoTrack.duration/this.videoTrack.timescale),bitrate:this.videoTrack.bitrate,isMoovAtStart:((J=this.mp4File)==null?void 0:J.isProgressive)??void 0},this.audioTrack&&(this.fileInfo.audioCodec=this.audioTrack.codec,this.fileInfo.audioChannels=(V=this.audioTrack.audio)==null?void 0:V.channel_count,this.fileInfo.audioSampleRate=(v=this.audioTrack.audio)==null?void 0:v.sample_rate),this.requestSamples(),(g=(b=this.events).onReady)==null||g.call(b,this.fileInfo)}requestSamples(){var o,l,i,r,t;this.samplesRequested||(this.samplesRequested=!0,this.videoTrackId!==null&&(this.isProgressiveLoading?(o=this.mp4File)==null||o.setExtractionOptions(this.videoTrackId,null,{nbSamples:100}):(l=this.mp4File)==null||l.setExtractionOptions(this.videoTrackId,null,{nbSamples:this.totalVideoSamples})),this.audioTrackId!==null&&(this.isProgressiveLoading?(i=this.mp4File)==null||i.setExtractionOptions(this.audioTrackId,null,{nbSamples:100}):(r=this.mp4File)==null||r.setExtractionOptions(this.audioTrackId,null,{nbSamples:this.totalAudioSamples})),(t=this.mp4File)==null||t.start())}handleSamples(o,l){var e,n,s,a;const i=o===this.videoTrackId;if(!(i?this.videoTrack:this.audioTrack))return;const t=l.filter(U=>U.data!=null).map(U=>{const u=U.cts/U.timescale*1e6,F=U.duration/U.timescale*1e6;return{data:U.data,timestamp:u,duration:F,isKeyframe:U.is_sync,type:i?"video":"audio"}});if(i?(this.nextVideoSampleIndex+=l.length,this.nextVideoSampleIndex>=this.totalVideoSamples&&((n=(e=this.events).onEnded)==null||n.call(e))):this.nextAudioSampleIndex+=l.length,this.mp4File){const U=l[l.length-1];this.mp4File.releaseUsedSamples(o,U.number)}(a=(s=this.events).onSamples)==null||a.call(s,t)}seek(o){if(!this.mp4File||!this.videoTrackId)return 0;const l=this.mp4File.seek(o,!0);return this.nextVideoSampleIndex=0,this.nextAudioSampleIndex=0,this.samplesRequested=!1,this.mp4File.stop(),this.requestSamples(),l.time}getPosition(){return{currentSample:this.nextVideoSampleIndex,totalSamples:this.totalVideoSamples,progress:this.totalVideoSamples>0?this.nextVideoSampleIndex/this.totalVideoSamples:0}}stop(){var o;(o=this.mp4File)==null||o.stop()}start(){var o;(o=this.mp4File)==null||o.start()}dispose(){var o;(o=this.mp4File)==null||o.stop(),this.mp4File=null,this.fileInfo=null,this.videoTrack=null,this.audioTrack=null,this.videoDescription=null,this.audioDescription=null,this.isProgressiveLoading=!1}serializeAvcC(o){let l=6;const i=o.SPS||[];for(const n of i)l+=2+n.data.length;l+=1;const r=o.PPS||[];for(const n of r)l+=2+n.data.length;const t=new Uint8Array(l);let e=0;t[e++]=o.configurationVersion||1,t[e++]=o.AVCProfileIndication,t[e++]=o.profile_compatibility,t[e++]=o.AVCLevelIndication,t[e++]=255,t[e++]=224|i.length;for(const n of i){const s=n.data.length;t[e++]=s>>8&255,t[e++]=s&255,t.set(new Uint8Array(n.data),e),e+=s}t[e++]=r.length;for(const n of r){const s=n.data.length;t[e++]=s>>8&255,t[e++]=s&255,t.set(new Uint8Array(n.data),e),e+=s}return t}serializeHvcC(o){return o.data&&o.data instanceof Uint8Array?o.data:(console.warn("HEVC serialization not fully implemented"),new Uint8Array(0))}}const WORKLET_CODE=`
152
152
  class AudioPlayProcessor extends AudioWorkletProcessor {
153
153
  constructor(options) {
154
154
  super();
@@ -231,4 +231,4 @@ class AudioPlayProcessor extends AudioWorkletProcessor {
231
231
  }
232
232
 
233
233
  registerProcessor('audio-play-processor', AudioPlayProcessor);
234
- `;class Hs{constructor(U,e={}){d(this,"ctx");d(this,"decoder",null);d(this,"workletNode",null);d(this,"gainNode");d(this,"initialized",!1);d(this,"targetSampleRate");d(this,"codecConfig",null);this.ctx=U,this.targetSampleRate=e.sampleRate??U.sampleRate,this.gainNode=this.ctx.createGain()}async init(U,e,t,F){if(this.ctx.audioWorklet===void 0)throw new Error("AudioWorklet not supported - need localhost or HTTPS");if(this.codecConfig={codec:U,sampleRate:e,numberOfChannels:t},F&&(this.codecConfig.description=F),!(await AudioDecoder.isConfigSupported(this.codecConfig)).supported)throw new Error(`Audio codec not supported: ${U}`);this.decoder=new AudioDecoder({output:l=>this.handleDecodedFrame(l),error:l=>{console.error("AudioDecoder error:",l)}}),this.decoder.configure(this.codecConfig);const n=new Blob([iR],{type:"application/javascript"}),s=URL.createObjectURL(n);try{await this.ctx.audioWorklet.addModule(s)}finally{URL.revokeObjectURL(s)}this.workletNode=new AudioWorkletNode(this.ctx,"audio-play-processor",{numberOfInputs:0,numberOfOutputs:1,outputChannelCount:[2],processorOptions:{sampleRate:this.ctx.sampleRate}}),this.workletNode.connect(this.gainNode).connect(this.ctx.destination),this.workletNode.port.postMessage({type:"setSampleRate",sampleRate:this.ctx.sampleRate}),this.initialized=!0}handleDecodedFrame(U){if(!this.workletNode){U.close();return}try{const e=U.numberOfFrames;let t=1;try{U.numberOfChannels>1&&(U.allocationSize({planeIndex:1,frameOffset:0,frameCount:1}),t=U.numberOfChannels)}catch{t=1}const F=new Float32Array(e),Q=new Float32Array(e);if(t===1){const l=U.allocationSize({planeIndex:0,frameOffset:0,frameCount:U.numberOfFrames}),a=new ArrayBuffer(l);U.copyTo(a,{planeIndex:0,frameOffset:0,frameCount:U.numberOfFrames});const B=new Float32Array(a);if(U.numberOfChannels===1)F.set(B),Q.set(B);else for(let r=0;r<e;r++)F[r]=B[r*2],Q[r]=B[r*2+1]}else{const l=U.allocationSize({planeIndex:0,frameOffset:0,frameCount:U.numberOfFrames}),a=new ArrayBuffer(l);if(U.copyTo(a,{planeIndex:0,frameOffset:0,frameCount:U.numberOfFrames}),F.set(new Float32Array(a)),U.numberOfChannels>1){const B=U.allocationSize({planeIndex:1,frameOffset:0,frameCount:U.numberOfFrames}),r=new ArrayBuffer(B);U.copyTo(r,{planeIndex:1,frameOffset:0,frameCount:U.numberOfFrames}),Q.set(new Float32Array(r))}else Q.set(F)}const n=this.resampleAudio(F,U.sampleRate,this.targetSampleRate),s=this.resampleAudio(Q,U.sampleRate,this.targetSampleRate);this.workletNode.port.postMessage({type:"audioData",data:{left:n.buffer,right:s.buffer}},[n.buffer,s.buffer]),U.close()}catch(e){console.error("Error processing audio frame:",e),U.close()}}resampleAudio(U,e,t){if(e===t)return U;const F=e/t,Q=Math.floor(U.length/F),n=new Float32Array(Q);for(let s=0;s<Q;s++){const l=s*F,a=Math.floor(l),B=Math.min(a+1,U.length-1),r=l-a;n[s]=U[a]*(1-r)+U[B]*r}return n}decode(U,e,t){if(!(!this.initialized||!this.decoder||this.decoder.state!=="configured"))try{const F=new EncodedAudioChunk({type:"key",timestamp:e,duration:t,data:U});this.decoder.decode(F)}catch(F){console.error("Error decoding audio:",F)}}start(){var U;(U=this.workletNode)==null||U.port.postMessage({type:"start"}),this.ctx.resume()}stop(){var U;(U=this.workletNode)==null||U.port.postMessage({type:"stop"})}clear(){var U;(U=this.workletNode)==null||U.port.postMessage({type:"clear"})}resetTiming(){var U;(U=this.workletNode)==null||U.port.postMessage({type:"clear"})}setVolume(U){this.gainNode.gain.value=Math.max(0,Math.min(1,U))}dispose(){if(this.initialized=!1,this.decoder){try{this.decoder.state==="configured"&&this.decoder.reset(),this.decoder.state!=="closed"&&this.decoder.close()}catch{}this.decoder=null}if(this.workletNode){try{this.workletNode.disconnect()}catch{}this.workletNode=null}}}class zs extends pn{constructor(e={}){super("idle",e.debugLogging??!1);d(this,"config");d(this,"fileSource",null);d(this,"decoder",null);d(this,"audioContext",null);d(this,"audioPlayer",null);d(this,"ownsAudioContext",!1);d(this,"audioInitialized",!1);d(this,"fileInfo",null);d(this,"frameBuffer",[]);d(this,"minBufferSize",3);d(this,"sampleQueue",[]);d(this,"audioSampleQueue",[]);d(this,"nextSampleIndex",0);d(this,"nextAudioSampleIndex",0);d(this,"maxDecoderQueue",10);d(this,"bufferReadyResolve",null);d(this,"playStartTime",0);d(this,"playStartPosition",0);d(this,"currentPosition",0);d(this,"lastVideoFrame",null);d(this,"isSeeking",!1);d(this,"maxAudioBufferMs",2e3);const t=e.playMode??(e.loop?"loop":"once");this.config={preferredDecoder:e.preferredDecoder??"webcodecs-sw",enableAudio:e.enableAudio??!0,debugLogging:e.debugLogging??!1,playMode:t},e.audioContext?(this.audioContext=e.audioContext,this.ownsAudioContext=!1):this.config.enableAudio&&(this.audioContext=new AudioContext,this.ownsAudioContext=!0)}getFileInfo(){return this.fileInfo}getPosition(){return this.currentPosition/1e3}getDuration(){var e;return((e=this.fileInfo)==null?void 0:e.duration)??0}getStats(){var e,t,F,Q;return{duration:this.getDuration(),position:this.getPosition(),bufferSize:this.frameBuffer.length,width:((e=this.fileInfo)==null?void 0:e.width)??0,height:((t=this.fileInfo)==null?void 0:t.height)??0,frameRate:((F=this.fileInfo)==null?void 0:F.frameRate)??0,codec:((Q=this.fileInfo)==null?void 0:Q.videoCodec)??"",state:this._state}}setPlayMode(e){this.config.playMode=e,this.logger.debug(`Play mode set to: ${e}`)}getPlayMode(){return this.config.playMode??"once"}setLoop(e){this.config.playMode=e?"loop":"once"}setDebugLogging(e){this.config.debugLogging=e,super.setDebugLogging(e)}setVolume(e){this.audioPlayer&&this.audioPlayer.setVolume(e)}getVolume(){return 1}async loadFromUrl(e){this.setState("loading");try{return this.dispose(),this.fileSource=new cn({onReady:t=>{var F;this.logger.info(`File loaded: ${t.width}x${t.height} @ ${(F=t.frameRate)==null?void 0:F.toFixed(1)}fps, codec: ${t.videoCodec}`)},onSamples:t=>{this.handleSamples(t)},onError:t=>{this.logger.error(`File source error: ${t.message}`),this.setState("error"),this.emit("error",t)},onProgress:(t,F)=>{this.emit("progress",t,F)},onEnded:()=>{this.handleSourceEnded()}}),this.fileInfo=await this.fileSource.loadFromUrl(e),await this.initDecoder(),await this.waitForBuffer(),this.setState("ready"),this.emit("ready",this.fileInfo),this.fileInfo}catch(t){throw this.setState("error"),this.emit("error",t),t}}async loadFromFile(e){this.setState("loading");try{return this.dispose(),this.fileSource=new cn({onReady:t=>{var F;this.logger.info(`File loaded: ${t.width}x${t.height} @ ${(F=t.frameRate)==null?void 0:F.toFixed(1)}fps, codec: ${t.videoCodec}`)},onSamples:t=>{this.handleSamples(t)},onError:t=>{this.logger.error(`File source error: ${t.message}`),this.setState("error"),this.emit("error",t)},onEnded:()=>{this.handleSourceEnded()}}),this.fileInfo=await this.fileSource.loadFromFile(e),this.logger.debug(`File info loaded: ${this.fileInfo.width}x${this.fileInfo.height}, ${this.fileInfo.videoCodec}`),await this.initDecoder(),this.logger.debug(`Decoder initialized, sample queue: ${this.sampleQueue.length}`),await this.waitForBuffer(),this.setState("ready"),this.emit("ready",this.fileInfo),this.fileInfo}catch(t){throw this.setState("error"),this.emit("error",t),t}}async initDecoder(){if(!this.fileInfo||!this.fileSource)throw new Error("File not loaded");this.decoder=new Li({preferHardware:this.config.preferredDecoder==="webcodecs-hw",onFrame:t=>{this.handleDecodedFrame(t)},onError:t=>{this.logger.error(`Decoder error: ${t.message}`),this.emit("error",t)}});const e=this.fileSource.getVideoDescription();this.logger.debug(`Video description: ${(e==null?void 0:e.length)??0} bytes`),await this.decoder.configure({codec:this.fileInfo.videoCodec,codedWidth:this.fileInfo.width,codedHeight:this.fileInfo.height,description:e??void 0}),this.logger.info(`Decoder configured: ${this.fileInfo.videoCodec}`),this.config.enableAudio&&this.audioContext&&this.fileInfo.audioCodec&&await this.initAudioDecoder(),this.feedDecoder(),this.feedAudioDecoder()}async initAudioDecoder(){if(!(!this.fileInfo||!this.fileSource||!this.audioContext))try{this.audioPlayer=new Hs(this.audioContext);const e=this.fileSource.getAudioDescription();await this.audioPlayer.init(this.fileInfo.audioCodec,this.fileInfo.audioSampleRate??48e3,this.fileInfo.audioChannels??2,e??void 0),this.audioInitialized=!0,this.logger.info(`Audio decoder configured: ${this.fileInfo.audioCodec}`),this.feedAudioDecoder()}catch(e){this.logger.warn(`Failed to initialize audio: ${e}`),this.audioPlayer=null}}waitForBuffer(){return this.frameBuffer.length>=this.minBufferSize?Promise.resolve():(this.logger.debug(`Waiting for buffer (need ${this.minBufferSize} frames, have ${this.frameBuffer.length})`),new Promise((e,t)=>{this.bufferReadyResolve=e;const F=setTimeout(()=>{var n;if(this.bufferReadyResolve)if(this.logger.warn(`Buffer timeout - have ${this.frameBuffer.length}/${this.minBufferSize} frames, ${this.sampleQueue.length} samples queued`),this.frameBuffer.length>0)this.bufferReadyResolve=null,e();else{this.bufferReadyResolve=null;const s=((n=this.fileInfo)==null?void 0:n.isMoovAtStart)===!1?' The moov atom is not at the start of the file - please re-encode with "faststart" option (e.g., ffmpeg -movflags +faststart).':"";t(new Error(`Timeout waiting for frames to decode.${s}`))}},5e3),Q=this.bufferReadyResolve;this.bufferReadyResolve=()=>{clearTimeout(F),Q()}}))}handleSamples(e){const t=e.filter(Q=>Q.type==="video").length,F=e.filter(Q=>Q.type==="audio").length;this.logger.debug(`Received ${t} video + ${F} audio samples`);for(const Q of e)Q.type==="video"?this.sampleQueue.push(Q):Q.type==="audio"&&this.audioSampleQueue.push(Q);this.feedDecoder(),this.feedAudioDecoder()}feedDecoder(){if(this.decoder)for(;this.nextSampleIndex<this.sampleQueue.length&&this.decoder.decodeQueueSize<this.maxDecoderQueue;){const e=this.sampleQueue[this.nextSampleIndex];this.decoder.decode({data:e.data,timestamp:e.timestamp,duration:e.duration,isKeyframe:e.isKeyframe}),this.nextSampleIndex++}}feedAudioDecoder(){if(!this.audioPlayer||!this.audioInitialized)return;const e=(this.currentPosition+this.maxAudioBufferMs)*1e3;for(;this.nextAudioSampleIndex<this.audioSampleQueue.length;){const t=this.audioSampleQueue[this.nextAudioSampleIndex];if(t.timestamp>e)break;this.audioPlayer.decode(t.data,t.timestamp,t.duration),this.nextAudioSampleIndex++}}handleDecodedFrame(e){const t=(e.timestamp??0)/1e3,F=(e.duration??0)/1e3,Q={frame:e,timestampMs:t,durationMs:F};let n=!1;for(let s=0;s<this.frameBuffer.length;s++)if(this.frameBuffer[s].timestampMs>t){this.frameBuffer.splice(s,0,Q),n=!0;break}n||this.frameBuffer.push(Q),this.bufferReadyResolve&&this.frameBuffer.length>=this.minBufferSize&&(this.bufferReadyResolve(),this.bufferReadyResolve=null),this.feedDecoder(),this.feedAudioDecoder()}handleSourceEnded(){this.logger.debug("Source ended - all samples extracted")}async performSeamlessLoop(){this.logger.debug("Performing seamless loop"),this.currentPosition=0,this.playStartTime=performance.now(),this.playStartPosition=0;for(const e of this.frameBuffer)e.frame.close();this.frameBuffer=[],this.nextSampleIndex=0,this.nextAudioSampleIndex=0,this.audioPlayer&&(this.audioPlayer.clear(),this.audioPlayer.resetTiming()),this.feedDecoder(),this.feedAudioDecoder(),this.emit("loop")}play(){var e,t;this._state==="error"||this._state==="loading"||this._state==="idle"||((e=this.fileSource)==null||e.start(),(t=this.audioPlayer)==null||t.start(),this.playStartTime=performance.now(),this.playStartPosition=this.currentPosition,this.setState("playing"),this.logger.info(`Play from position ${this.currentPosition.toFixed(1)}ms`))}pause(){var e;this._state==="playing"&&((e=this.audioPlayer)==null||e.stop(),this.setState("paused"),this.logger.info(`Paused at position ${this.currentPosition.toFixed(1)}ms`))}async seek(e){var n;if(!this.fileInfo)return;e=Math.max(0,Math.min(e,this.fileInfo.duration));const t=e*1e6;this.logger.info(`Seeking to ${e.toFixed(2)}s`),this.isSeeking=!0,this.clearFrameBuffer(),(n=this.decoder)==null||n.reset(),this.audioPlayer&&(this.audioPlayer.clear(),this.audioPlayer.resetTiming());let F=0,Q=0;for(let s=0;s<this.sampleQueue.length;s++){const l=this.sampleQueue[s];if(l.timestamp<=t&&l.isKeyframe&&(F=s,Q=l.timestamp),l.timestamp>t)break}this.nextSampleIndex=F,this.currentPosition=Q/1e3,this.nextAudioSampleIndex=0;for(let s=0;s<this.audioSampleQueue.length;s++)if(this.audioSampleQueue[s].timestamp>=Q){this.nextAudioSampleIndex=s;break}this._state==="playing"&&(this.playStartTime=performance.now(),this.playStartPosition=this.currentPosition),this.isSeeking=!1,this.feedDecoder(),this.feedAudioDecoder(),this.emit("seeked",this.currentPosition/1e3)}clearFrameBuffer(){for(const{frame:e}of this.frameBuffer)e.close();this.frameBuffer=[]}getVideoFrame(){var t;if(this._state==="idle"||this._state==="loading"||this._state==="error")return null;if(this.isSeeking)return this.lastVideoFrame;if(this._state==="playing"){const F=performance.now()-this.playStartTime;if(this.currentPosition=this.playStartPosition+F,this.feedAudioDecoder(),this.fileInfo&&this.currentPosition>=this.fileInfo.duration*1e3)return this.config.playMode==="loop"?(this.performSeamlessLoop(),this.lastVideoFrame):(this.setState("ended"),this.emit("ended"),this.lastVideoFrame)}this.frameBuffer.length<this.minBufferSize&&((t=this.fileSource)==null||t.start());let e=-1;for(let F=0;F<this.frameBuffer.length&&this.frameBuffer[F].timestampMs<=this.currentPosition;F++)e=F;if(e>=0){const F=this.frameBuffer.splice(0,e);for(const{frame:n}of F)n.close();const Q=this.frameBuffer.shift();Q&&(this.lastVideoFrame&&this.lastVideoFrame!==Q.frame&&this.lastVideoFrame.close(),this.lastVideoFrame=Q.frame)}return this.lastVideoFrame}on(e,t){super.on(e,t)}off(e,t){super.off(e,t)}dispose(e=!1){var t,F,Q,n;(t=this.fileSource)==null||t.stop(),this.clearFrameBuffer(),this.sampleQueue=[],this.audioSampleQueue=[],this.nextSampleIndex=0,this.nextAudioSampleIndex=0,this.audioInitialized=!1,this.lastVideoFrame&&(this.lastVideoFrame.close(),this.lastVideoFrame=null),(F=this.decoder)==null||F.dispose(),this.decoder=null,(Q=this.audioPlayer)==null||Q.dispose(),this.audioPlayer=null,e&&this.ownsAudioContext&&this.audioContext&&(this.audioContext.close(),this.audioContext=null),(n=this.fileSource)==null||n.dispose(),this.fileSource=null,this.fileInfo=null,this.currentPosition=0,this.playStartTime=0,this.playStartPosition=0,this.setState("idle")}}function nR(i={}){return new zs(i)}function Ys(i){return new un(i)}class un extends Wn{constructor(e){super();d(this,"config");d(this,"session",null);d(this,"trackTypeMap",new Map);d(this,"connecting",!1);this.config=e;for(const t of e.subscriptions)this.trackTypeMap.set(t.trackName,t.streamType)}async connect(){if(!(this.session||this.connecting)){this.connecting=!0;try{const{MoqSessionSubscriber:e}=await import("stinky-moq-js"),t={relayUrl:this.config.relayUrl,namespace:this.config.namespace,reconnection:{delay:this.config.reconnectionDelay??3e3}},F=this.config.subscriptions.map(Q=>({trackName:Q.trackName,priority:Q.priority??0,retry:{delay:2e3}}));this.session=new e(t,F),this.setupEventListeners(),await this.session.connect(),this._connected=!0,this.emit("connected")}catch(e){this._connected=!1,this.emit("error",e instanceof Error?e:new Error(String(e)))}finally{this.connecting=!1}}}async disconnect(){this.session&&(this.session.dispose(),this.session=null,this._connected=!1,this.emit("disconnected"))}setupEventListeners(){this.session&&(this.session.on("data",(e,t)=>{this.handleIncomingData(e,t)}),this.session.on("error",e=>{this.emit("error",e instanceof Error?e:new Error(String(e)))}),this.session.on("stateChange",e=>{e.state==="disconnected"&&(this._connected=!1,this.emit("disconnected"))}))}handleIncomingData(e,t){const F=this.trackTypeMap.get(e)||"data";if(F==="video"||F==="audio")try{const Q=WU.parseData(t);if(!Q.valid){console.warn(`Invalid ${F} packet format for track ${e}`);return}const n={trackName:e,streamType:F,data:Q};this.emit("data",n)}catch(Q){console.error(`Failed to parse ${F} packet:`,Q)}else{const Q={trackName:e,streamType:"data",data:{valid:!0,header:null,metadata:null,codec_data:null,payload:t,payload_size:t.length}};this.emit("data",Q)}}dispose(){this.disconnect(),super.dispose()}}const sR=Object.freeze(Object.defineProperty({__proto__:null,MoQSource:un,createMoQSource:Ys},Symbol.toStringTag,{value:"Module"})),lR=5e3,aR=1e3;class Gs extends Wn{constructor(e={}){super();d(this,"webSocket",null);d(this,"messageWaiters",[]);d(this,"requestId",0);d(this,"timeoutCheckInterval",null);d(this,"ignoreCmdsBelow",0);d(this,"isLiveStream",!1);d(this,"config");d(this,"lastKeyframeRequest",0);d(this,"currentTrackName","default");d(this,"reconnectTimeout",null);d(this,"disposed",!1);this.config={url:e.url||"",useCurrentHost:e.useCurrentHost??!0,apiPath:e.apiPath||"/api/video",clientId:e.clientId||"video-player",timeout:e.timeout||lR,autoReconnect:e.autoReconnect??!1,reconnectDelay:e.reconnectDelay||3e3}}getWebSocketUrl(){if(this.config.url)return this.config.url;if(this.config.useCurrentHost&&typeof window<"u")return`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}${this.config.apiPath}?id=${this.config.clientId}`;throw new Error("WebSocket URL not configured. Provide url or enable useCurrentHost.")}async connect(){if(!this._connected)return new Promise((e,t)=>{const F=this.getWebSocketUrl();let Q=!1;try{this.webSocket=new WebSocket(F),this.webSocket.binaryType="arraybuffer",this.startTimeoutChecker(),this.webSocket.onopen=()=>{Q||(Q=!0,this._connected=!0,this.emit("connected"),e())},this.webSocket.onmessage=n=>{this.handleMessage(n)},this.webSocket.onclose=()=>{const n=this._connected;this._connected=!1,Q||(Q=!0,t(new Error("WebSocket connection closed"))),n&&(this.emit("disconnected"),this.handleDisconnect())},this.webSocket.onerror=n=>{Q||(Q=!0,t(new Error("WebSocket connection error"))),this.emit("error",new Error("WebSocket error"))},setTimeout(()=>{var n;Q||(Q=!0,(n=this.webSocket)==null||n.close(),t(new Error("Connection timeout")))},this.config.timeout)}catch(n){t(n)}})}disconnect(){this.stopReconnect(),this.webSocket&&(this.webSocket.close(),this.webSocket=null),this._connected=!1,this.stopTimeoutChecker(),this.clearWaiters()}async loadLive(e){return this.isLiveStream=!0,this.currentTrackName=e,this.ignoreCmdsBelow=this.requestId,this.request({type:"live",filename:e})}async loadFile(e,t){return this.isLiveStream=!1,this.currentTrackName=t,this.ignoreCmdsBelow=this.requestId,this.request({type:"load",filename:t,project:e})}async seek(e){if(this.isLiveStream)throw new Error("Cannot seek in live stream");return this.request({type:"seek",paramNum:e})}async read(e){return this.request({type:"read",paramNum:e})}async unload(){return this.isLiveStream=!1,this.request({type:"unload"})}requestKeyframe(){if(!this.isLiveStream){console.warn("Keyframe request ignored: not a live stream");return}const e=Date.now();e-this.lastKeyframeRequest<aR||(this.lastKeyframeRequest=e,this.request({type:"keyframe"}).catch(()=>{}))}flush(){this.ignoreCmdsBelow=this.requestId}dispose(){this.disposed=!0,this.disconnect(),super.dispose()}async request(e){if(!this._connected||!this.webSocket)throw new Error("Not connected to WebSocket server");return e.id=this.requestId++,this.webSocket.send(JSON.stringify(e)),this.waitForResponse(e.id)}waitForResponse(e){return new Promise((t,F)=>{this.messageWaiters.push({resolve:t,reject:F,id:e,timeout:Date.now()+this.config.timeout})})}handleMessage(e){if(typeof e.data=="string")try{const t=JSON.parse(e.data);this.handleResponse(t)}catch(t){console.error("Failed to parse WebSocket message:",t)}else e.data instanceof ArrayBuffer&&this.handleBinaryData(e.data)}handleResponse(e){if(e.id===-1){e.error&&this.emit("error",new Error(e.error));return}const t=this.messageWaiters.findIndex(F=>F.id===e.id);if(t!==-1){const F=this.messageWaiters[t];this.messageWaiters.splice(t,1),e.error?F.reject(new Error(e.error)):F.resolve(e.data)}}handleBinaryData(e){const t=new Uint8Array(e),F=WU.parseData(t);if(!F.valid||!F.header){console.warn("Invalid binary packet received");return}if(!this.isLiveStream&&F.header.id!==void 0&&Number(F.header.id)<this.ignoreCmdsBelow)return;let Q="data";F.header.type===$.VIDEO_FRAME?Q="video":F.header.type===$.AUDIO_FRAME&&(Q="audio");const n={trackName:this.currentTrackName,streamType:Q,data:F};this.emit("data",n)}handleDisconnect(){this.clearWaiters(),this.config.autoReconnect&&!this.disposed&&this.scheduleReconnect()}scheduleReconnect(){this.stopReconnect(),this.reconnectTimeout=window.setTimeout(async()=>{try{await this.connect(),this.isLiveStream&&this.currentTrackName&&await this.loadLive(this.currentTrackName)}catch{this.scheduleReconnect()}},this.config.reconnectDelay)}stopReconnect(){this.reconnectTimeout!==null&&(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=null)}startTimeoutChecker(){this.stopTimeoutChecker(),this.timeoutCheckInterval=window.setInterval(()=>{const e=Date.now();this.messageWaiters.filter(F=>F.timeout<=e).forEach(F=>{F.reject(new Error("Request timeout"));const Q=this.messageWaiters.indexOf(F);Q!==-1&&this.messageWaiters.splice(Q,1)})},1e3)}stopTimeoutChecker(){this.timeoutCheckInterval!==null&&(clearInterval(this.timeoutCheckInterval),this.timeoutCheckInterval=null)}clearWaiters(){this.messageWaiters.forEach(e=>{e.reject(new Error("Connection closed"))}),this.messageWaiters=[]}}function BR(i){return new Gs(i)}function Xs(i){return i instanceof VideoFrame}function dR(i){return!Xs(i)&&"y"in i&&"u"in i&&"v"in i}const QU={video:{width:{ideal:1920},height:{ideal:1080},frameRate:{ideal:30}},audio:{sampleRate:{ideal:48e3},channelCount:{ideal:2}},videoEncoder:{codec:g.VIDEO_VP9,bitrate:2e6,frameRate:30,keyFrameInterval:60,latencyMode:"realtime"},audioEncoder:{codec:g.AUDIO_OPUS,sampleRate:48e3,channels:2,bitrate:128e3,latencyMode:"realtime"},audioLevelMonitoring:!1,audioLevelInterval:50};function Sn(i){switch(i){case g.VIDEO_VP8:return"vp8";case g.VIDEO_VP9:return"vp09.00.10.08";case g.VIDEO_AVC:return"avc1.64001f";case g.VIDEO_HEVC:return"hvc1.1.L0.0";case g.VIDEO_AV1:return"av01.0.05M.08";case g.AUDIO_OPUS:return"opus";case g.AUDIO_AAC:return"mp4a.40.2";case g.AUDIO_PCM:return"pcm";default:throw new Error(`Unsupported codec type: ${i}`)}}function rR(i){return i>=g.VIDEO_VP8&&i<=g.VIDEO_AV1}function RR(i){return i>=g.AUDIO_OPUS&&i<=g.AUDIO_PCM}class Ls{constructor(U,e,t,F){d(this,"audioWorker");d(this,"videoWorker");d(this,"audioProcessor");d(this,"videoProcessor");d(this,"disposed",!1);d(this,"handlers",{chunk:new Set,"audio-levels":new Set,error:new Set,ready:new Set});d(this,"audioReady",!1);d(this,"videoReady",!1);d(this,"hasAudio",!1);d(this,"hasVideo",!1);d(this,"audioMetadata");d(this,"videoMetadata");const Q=U.getAudioTracks(),n=U.getVideoTracks();this.hasAudio=Q.length>0&&!!t,this.hasVideo=n.length>0&&!!e,this.hasAudio&&t&&this.createAudioEncoder(Q[0],t,F),this.hasVideo&&e&&this.createVideoEncoder(n[0],e)}on(U,e){const t=this.handlers[U];return t&&t.add(e),this}off(U,e){const t=this.handlers[U];return t&&t.delete(e),this}emit(U,e){const t=this.handlers[U];t&&t.forEach(F=>F(e))}checkReady(){const U=!this.hasAudio||this.audioReady,e=!this.hasVideo||this.videoReady;U&&e&&this.emit("ready")}createAudioEncoder(U,e,t){const F=U.getSettings(),Q=F.channelCount||e.channels||2,n=F.sampleRate||e.sampleRate||48e3;this.audioMetadata={channels:Q,sampleRate:n};const l={codec:Sn(e.codec),sampleRate:n,numberOfChannels:Q,bitrate:e.bitrate||128e3};e.codec===g.AUDIO_OPUS&&(l.opus={frameDuration:2e4,complexity:5,format:"opus"}),this.audioWorker=new Worker(new URL("/assets/audio-encoder.worker-c5c829bb.js",self.location),{type:"module"}),this.audioWorker.onmessage=a=>{const{type:B,data:r,metadata:h}=a.data;switch(B){case"chunk":this.emit("chunk",{type:"audio",chunk:r,keyframe:!1,timestamp:r.timestamp,metadata:{...this.audioMetadata,decoderConfig:h==null?void 0:h.decoderConfig}});break;case"error":this.emit("error",new Error(`Audio encoding error: ${r}`));break;case"ready":this.audioReady=!0,this.startProcessingAudio(U),this.checkReady();break;case"audio-levels":this.emit("audio-levels",r);break}},this.audioWorker.onerror=a=>{this.emit("error",new Error(`Audio worker error: ${a.message}`))},this.audioWorker.postMessage({type:"init",data:{config:l,audioLevels:t!=null&&t.enabled?{interval:t.interval||50}:void 0}})}createVideoEncoder(U,e){const t=U.getSettings(),F=t.width||e.width||1280,Q=t.height||e.height||720,n=t.frameRate||e.frameRate||30;this.videoMetadata={width:F,height:Q};const s=Sn(e.codec),l={codec:s,width:F,height:Q,bitrate:e.bitrate||2e6,framerate:n,latencyMode:e.latencyMode||"realtime"};s.startsWith("avc1")&&(l.avc={format:"annexb"}),(s.startsWith("hvc1")||s.startsWith("hev1"))&&(l.hevc={format:"annexb"}),this.videoWorker=new Worker(new URL("/assets/video-encoder.worker-a613b1f0.js",self.location),{type:"module"}),this.videoWorker.onmessage=a=>{const{type:B,data:r,metadata:h}=a.data;switch(B){case"chunk":this.emit("chunk",{type:"video",chunk:r,keyframe:r.type==="key",timestamp:r.timestamp,metadata:{...this.videoMetadata,decoderConfig:h==null?void 0:h.decoderConfig}});break;case"error":this.emit("error",new Error(`Video encoding error: ${r}`));break;case"ready":this.videoReady=!0,this.startProcessingVideo(U),this.checkReady();break}},this.videoWorker.onerror=a=>{this.emit("error",new Error(`Video worker error: ${a.message}`))},this.videoWorker.postMessage({type:"init",data:{config:l,gopSize:e.keyFrameInterval||60}})}startProcessingAudio(U){try{this.audioProcessor=new MediaStreamTrackProcessor({track:U});const e=this.audioProcessor.readable;this.audioWorker&&this.audioWorker.postMessage({type:"stream",data:{readable:e}},[e])}catch(e){this.emit("error",new Error(`Failed to set up audio processing: ${e}`))}}startProcessingVideo(U){try{this.videoProcessor=new MediaStreamTrackProcessor({track:U});const e=this.videoProcessor.readable;this.videoWorker&&this.videoWorker.postMessage({type:"stream",data:{readable:e}},[e])}catch(e){this.emit("error",new Error(`Failed to set up video processing: ${e}`))}}requestKeyframe(){this.videoWorker&&this.videoWorker.postMessage({type:"request-keyframe"})}dispose(){this.disposed||(this.disposed=!0,Object.values(this.handlers).forEach(U=>U.clear()),this.audioWorker&&(this.audioWorker.postMessage({type:"close"}),this.audioWorker.terminate(),this.audioWorker=void 0),this.videoWorker&&(this.videoWorker.postMessage({type:"close"}),this.videoWorker.terminate(),this.videoWorker=void 0),this.audioProcessor=void 0,this.videoProcessor=void 0)}}class fn{constructor(U){d(this,"config");d(this,"keyframeCallback");d(this,"_connected",!1);this.config=U}get connected(){return this._connected}async reconnect(){await this.disconnect(),await this.connect()}onKeyframeRequest(U){this.keyframeCallback=U}requestKeyframe(){this.keyframeCallback&&this.keyframeCallback()}dispose(){this.disconnect(),this.keyframeCallback=void 0}}class Os extends fn{constructor(e){super(e);d(this,"websocket");d(this,"wsConfig");d(this,"reconnectTimer");d(this,"disposed",!1);this.wsConfig=e}async connect(){if(this.disposed)throw new Error("Sink has been disposed");return new Promise((e,t)=>{const F=this.wsConfig.connectionTimeout||5e3;let Q=!1;const n=setTimeout(()=>{var s;Q||(Q=!0,(s=this.websocket)==null||s.close(),t(new Error("Connection timeout")))},F);try{this.websocket=new WebSocket(this.wsConfig.url),this.websocket.binaryType="arraybuffer",this.websocket.onopen=()=>{Q||(Q=!0,clearTimeout(n),this._connected=!0,e())},this.websocket.onclose=()=>{this._connected=!1,Q?!this.disposed&&this.wsConfig.autoReconnect&&this.scheduleReconnect():(Q=!0,clearTimeout(n),t(new Error("WebSocket closed")))},this.websocket.onerror=()=>{Q||(Q=!0,clearTimeout(n),t(new Error("WebSocket connection error")))},this.websocket.onmessage=s=>{if(typeof s.data=="string"){const l=s.data;(l==="keyframe"||l.includes("keyframe"))&&this.requestKeyframe()}}}catch(s){Q=!0,clearTimeout(n),t(s)}})}async disconnect(){this.clearReconnectTimer(),this.websocket&&(this.websocket.onclose=null,this.websocket.onerror=null,this.websocket.onmessage=null,this.websocket.close(),this.websocket=void 0),this._connected=!1}send(e){if(!(!this.connected||!this.websocket))try{this.websocket.send(e.data)}catch(t){console.error("Failed to send packet:",t)}}scheduleReconnect(){if(this.disposed||this.reconnectTimer)return;const e=this.wsConfig.reconnectDelay||3e3;this.reconnectTimer=setTimeout(async()=>{if(this.reconnectTimer=void 0,!this.disposed)try{await this.connect()}catch(t){console.error("Reconnection failed:",t),this.scheduleReconnect()}},e)}clearReconnectTimer(){this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=void 0)}dispose(){this.disposed=!0,this.clearReconnectTimer(),super.dispose()}}function oR(i){return new Os(i)}const qi=class qi extends fn{constructor(e){super(e);d(this,"moqConfig");d(this,"session",null);d(this,"connecting",!1);d(this,"disposed",!1);d(this,"currentVideoGroup",!0);d(this,"audioFrameCount",0);this.moqConfig=e}async connect(){if(this.disposed)throw new Error("Sink has been disposed");if(!(this.session||this.connecting)){this.connecting=!0;try{const{MoqSessionBroadcaster:e}=await import("stinky-moq-js"),t={relayUrl:this.moqConfig.relayUrl,namespace:this.moqConfig.namespace,reconnection:{delay:this.moqConfig.reconnectionDelay??3e3}},F=[];if(this.moqConfig.videoTrack&&F.push({trackName:this.moqConfig.videoTrack.trackName,priority:this.moqConfig.videoTrack.priority??1,type:"video"}),this.moqConfig.audioTrack&&F.push({trackName:this.moqConfig.audioTrack.trackName,priority:this.moqConfig.audioTrack.priority??2,type:"audio"}),this.moqConfig.dataTracks)for(const Q of this.moqConfig.dataTracks)F.push({trackName:Q.trackName,priority:Q.priority??3,type:"data"});this.session=new e(t,F),this.setupEventListeners(),await this.session.connect(),this._connected=!0}catch(e){throw this._connected=!1,e}finally{this.connecting=!1}}}async disconnect(){this.session&&(this.session.dispose(),this.session=null,this._connected=!1),this.currentVideoGroup=!0,this.audioFrameCount=0}send(e){if(!this.session||!this._connected)return;const t=e.type==="video"?this.moqConfig.videoTrack:this.moqConfig.audioTrack;if(!t)return;let F;e.type==="video"?e.isKeyframe?(F=!0,this.currentVideoGroup=!1):(F=this.currentVideoGroup,F&&(this.currentVideoGroup=!1)):(this.audioFrameCount%qi.AUDIO_FRAMES_PER_GROUP===0?F=!0:F=!1,this.audioFrameCount++);try{this.session.send(t.trackName,new Uint8Array(e.data),F)}catch{}}setupEventListeners(){this.session&&(this.session.on("trackRequested",e=>{var t;e===((t=this.moqConfig.videoTrack)==null?void 0:t.trackName)&&(this.currentVideoGroup=!0,this.requestKeyframe())}),this.session.on("error",e=>{var t,F;console.error("MoQ session error:",e),((t=e.message)!=null&&t.includes("reset")||(F=e.message)!=null&&F.includes("stream"))&&(this.currentVideoGroup=!0)}),this.session.on("stateChange",e=>{const t=this._connected;this._connected=e.state===el.SessionState.CONNECTED,t&&!this._connected&&(this.currentVideoGroup=!0)}))}dispose(){this.disposed=!0,super.dispose()}sendData(e,t){if(!(!this.session||!this._connected))try{this.session.send(e,t,!0)}catch{}}};d(qi,"AUDIO_FRAMES_PER_GROUP",50);let Ki=qi;function hR(i){return new Ki(i)}class pU{constructor(U){d(this,"config");d(this,"sink");d(this,"encoder");d(this,"mediaStream");d(this,"state","idle");d(this,"disposed",!1);d(this,"stats",{videoFramesEncoded:0,audioFramesEncoded:0,bytesSent:0,packetsSent:0,videoBitrate:0,audioBitrate:0,startTime:0,duration:0});d(this,"videoMetadata");d(this,"audioMetadata");d(this,"handlers",{"state-change":new Set,"audio-levels":new Set,stats:new Set,error:new Set});this.config={...QU,...U},this.sink=U.sink,this.sink.onKeyframeRequest(()=>{this.requestKeyframe()})}on(U,e){const t=this.handlers[U];return t&&t.add(e),this}off(U,e){const t=this.handlers[U];return t&&t.delete(e),this}emit(U,e){const t=this.handlers[U];t&&t.forEach(F=>F(e))}setState(U){this.state!==U&&(this.state=U,this.emit("state-change",U))}getState(){return this.state}getStats(){return this.stats.startTime>0&&(this.stats.duration=Date.now()-this.stats.startTime),{...this.stats}}static hasMediaDevices(){return!!(navigator.mediaDevices&&navigator.mediaDevices.getUserMedia)}static async getDevices(){return pU.hasMediaDevices()?navigator.mediaDevices.enumerateDevices():[]}async start(){var U,e,t,F;if(this.disposed)throw new Error("MediaCapture has been disposed");if(this.state!=="capturing"){if(!pU.hasMediaDevices())throw new Error("Media devices not available. Make sure you are using HTTPS.");this.setState("initializing");try{const Q={};if(this.config.video&&(Q.video=typeof this.config.video=="boolean"?QU.video:this.config.video),this.config.audio&&(Q.audio=typeof this.config.audio=="boolean"?QU.audio:this.config.audio),!Q.video&&!Q.audio)throw new Error("Must enable at least video or audio capture");this.mediaStream=await navigator.mediaDevices.getUserMedia(Q);const n=this.mediaStream.getVideoTracks(),s=this.mediaStream.getAudioTracks();if(n.length>0){const B=n[0].getSettings();this.videoMetadata={width:B.width||1280,height:B.height||720}}if(s.length>0){const B=s[0].getSettings();this.audioMetadata={channels:B.channelCount||2,sampleRate:B.sampleRate||48e3}}this.sink.connected||await this.sink.connect();const l=this.config.video?{...QU.videoEncoder,...this.config.videoEncoder,width:(U=this.videoMetadata)==null?void 0:U.width,height:(e=this.videoMetadata)==null?void 0:e.height}:void 0,a=this.config.audio?{...QU.audioEncoder,...this.config.audioEncoder,channels:(t=this.audioMetadata)==null?void 0:t.channels,sampleRate:(F=this.audioMetadata)==null?void 0:F.sampleRate}:void 0;this.encoder=new Ls(this.mediaStream,l,a,{enabled:this.config.audioLevelMonitoring??!1,interval:this.config.audioLevelInterval}),this.encoder.on("chunk",B=>this.handleEncodedChunk(B)),this.encoder.on("audio-levels",B=>this.emit("audio-levels",B)),this.encoder.on("error",B=>{this.emit("error",B),this.setState("error")}),await new Promise(B=>{this.encoder.on("ready",()=>B()),setTimeout(B,100)}),this.stats.startTime=Date.now(),this.setState("capturing")}catch(Q){throw this.setState("error"),Q}}}async stop(){this.state==="idle"||this.state==="stopped"||(this.encoder&&(this.encoder.dispose(),this.encoder=void 0),this.mediaStream&&(this.mediaStream.getTracks().forEach(U=>U.stop()),this.mediaStream=void 0),this.setState("stopped"))}requestKeyframe(){this.encoder&&this.encoder.requestKeyframe()}getMediaStream(){return this.mediaStream}handleEncodedChunk(U){if(this.sink.connected)try{const e=new Uint8Array(U.chunk.byteLength);U.chunk.copyTo(e.buffer);const F={data:this.createPacket(U,e),isKeyframe:U.keyframe,timestamp:U.timestamp,type:U.type};this.sink.send(F),U.type==="video"?this.stats.videoFramesEncoded++:this.stats.audioFramesEncoded++,this.stats.bytesSent+=e.byteLength,this.stats.packetsSent++}catch(e){console.error("Error handling encoded chunk:",e)}}createPacket(U,e){var h,V,S,c,W,N;const t=U.type==="video",F=t?$.VIDEO_FRAME:$.AUDIO_FRAME,Q=t?((h=this.config.videoEncoder)==null?void 0:h.codec)??g.VIDEO_VP9:((V=this.config.audioEncoder)==null?void 0:V.codec)??g.AUDIO_OPUS;let n=U.timestamp;!t&&this.config.audioTimestampOffset&&(n+=this.config.audioTimestampOffset);const s={sample_rate:((S=this.audioMetadata)==null?void 0:S.sampleRate)||0,codec_profile:0,codec_level:0,width:((c=this.videoMetadata)==null?void 0:c.width)||0,height:((W=this.videoMetadata)==null?void 0:W.height)||0,codec_type:Q,channels:((N=this.audioMetadata)==null?void 0:N.channels)||0,bit_depth:8,timebase_num:1,timebase_den:1e6,reserved:0};let l=oU;this.config.topic&&(l|=bi),U.keyframe&&(l|=$i);const a=WU.initHeader(F,l,BigInt(n),BigInt(0)),B=this.config.topic?{metadata:this.config.topic}:null,r=WU.serialize(a,B,s,e);if(!r)throw new Error("Failed to serialize packet");return r.buffer.slice(r.byteOffset,r.byteOffset+r.byteLength)}dispose(){this.disposed||(this.disposed=!0,this.stop(),this.sink.dispose(),Object.values(this.handlers).forEach(U=>U.clear()))}}function VR(i){return new pU(i)}exports.BaseCaptureSink=fn;exports.BasePlayer=pn;exports.BaseStreamSource=Wn;exports.CodecType=g;exports.DEFAULT_CAPTURE_CONFIG=QU;exports.FLAG_HAS_CODEC_DATA=oU;exports.FLAG_IS_KEYFRAME=$i;exports.FileAudioPlayer=Hs;exports.FileVideoPlayer=zs;exports.FrameScheduler=jn;exports.LiveAudioPlayer=Kn;exports.LiveVideoPlayer=Oi;exports.MP4FileSource=cn;exports.MediaCapture=pU;exports.MediaStreamEncoder=Ls;exports.MoQCaptureSink=Ki;exports.MoQSource=un;exports.PacketType=$;exports.SesameBinaryProtocol=WU;exports.WasmDecoder=rn;exports.WebCodecsDecoder=Li;exports.WebSocketCaptureSink=Os;exports.WebSocketSource=Gs;exports.codecTypeToString=Sn;exports.consoleLogger=iU;exports.createFilePlayer=nR;exports.createMediaCapture=VR;exports.createMoQSink=hR;exports.createMoQSource=Ys;exports.createPlayer=il;exports.createWebSocketSink=oR;exports.createWebSocketSource=BR;exports.isAudioCodec=RR;exports.isVideoCodec=rR;exports.isVideoFrame=Xs;exports.isYUVFrame=dR;exports.silentLogger=On;
234
+ `;class FileAudioPlayer{constructor(o,l={}){c(this,"ctx");c(this,"decoder",null);c(this,"workletNode",null);c(this,"gainNode");c(this,"initialized",!1);c(this,"targetSampleRate");c(this,"codecConfig",null);this.ctx=o,this.targetSampleRate=l.sampleRate??o.sampleRate,this.gainNode=this.ctx.createGain()}async init(o,l,i,r){if(this.ctx.audioWorklet===void 0)throw new Error("AudioWorklet not supported - need localhost or HTTPS");if(this.codecConfig={codec:o,sampleRate:l,numberOfChannels:i},r&&(this.codecConfig.description=r),!(await AudioDecoder.isConfigSupported(this.codecConfig)).supported)throw new Error(`Audio codec not supported: ${o}`);this.decoder=new AudioDecoder({output:s=>this.handleDecodedFrame(s),error:s=>{console.error("AudioDecoder error:",s)}}),this.decoder.configure(this.codecConfig);const e=new Blob([WORKLET_CODE],{type:"application/javascript"}),n=URL.createObjectURL(e);try{await this.ctx.audioWorklet.addModule(n)}finally{URL.revokeObjectURL(n)}this.workletNode=new AudioWorkletNode(this.ctx,"audio-play-processor",{numberOfInputs:0,numberOfOutputs:1,outputChannelCount:[2],processorOptions:{sampleRate:this.ctx.sampleRate}}),this.workletNode.connect(this.gainNode).connect(this.ctx.destination),this.workletNode.port.postMessage({type:"setSampleRate",sampleRate:this.ctx.sampleRate}),this.initialized=!0}handleDecodedFrame(o){if(!this.workletNode){o.close();return}try{const l=o.numberOfFrames;let i=1;try{o.numberOfChannels>1&&(o.allocationSize({planeIndex:1,frameOffset:0,frameCount:1}),i=o.numberOfChannels)}catch{i=1}const r=new Float32Array(l),t=new Float32Array(l);if(i===1){const s=o.allocationSize({planeIndex:0,frameOffset:0,frameCount:o.numberOfFrames}),a=new ArrayBuffer(s);o.copyTo(a,{planeIndex:0,frameOffset:0,frameCount:o.numberOfFrames});const U=new Float32Array(a);if(o.numberOfChannels===1)r.set(U),t.set(U);else for(let u=0;u<l;u++)r[u]=U[u*2],t[u]=U[u*2+1]}else{const s=o.allocationSize({planeIndex:0,frameOffset:0,frameCount:o.numberOfFrames}),a=new ArrayBuffer(s);if(o.copyTo(a,{planeIndex:0,frameOffset:0,frameCount:o.numberOfFrames}),r.set(new Float32Array(a)),o.numberOfChannels>1){const U=o.allocationSize({planeIndex:1,frameOffset:0,frameCount:o.numberOfFrames}),u=new ArrayBuffer(U);o.copyTo(u,{planeIndex:1,frameOffset:0,frameCount:o.numberOfFrames}),t.set(new Float32Array(u))}else t.set(r)}const e=this.resampleAudio(r,o.sampleRate,this.targetSampleRate),n=this.resampleAudio(t,o.sampleRate,this.targetSampleRate);this.workletNode.port.postMessage({type:"audioData",data:{left:e.buffer,right:n.buffer}},[e.buffer,n.buffer]),o.close()}catch(l){console.error("Error processing audio frame:",l),o.close()}}resampleAudio(o,l,i){if(l===i)return o;const r=l/i,t=Math.floor(o.length/r),e=new Float32Array(t);for(let n=0;n<t;n++){const s=n*r,a=Math.floor(s),U=Math.min(a+1,o.length-1),u=s-a;e[n]=o[a]*(1-u)+o[U]*u}return e}decode(o,l,i){if(!(!this.initialized||!this.decoder||this.decoder.state!=="configured"))try{const r=new EncodedAudioChunk({type:"key",timestamp:l,duration:i,data:o});this.decoder.decode(r)}catch(r){console.error("Error decoding audio:",r)}}start(){var o;(o=this.workletNode)==null||o.port.postMessage({type:"start"}),this.ctx.resume()}stop(){var o;(o=this.workletNode)==null||o.port.postMessage({type:"stop"})}clear(){var o;(o=this.workletNode)==null||o.port.postMessage({type:"clear"})}resetTiming(){var o;(o=this.workletNode)==null||o.port.postMessage({type:"clear"})}setVolume(o){this.gainNode.gain.value=Math.max(0,Math.min(1,o))}dispose(){if(this.initialized=!1,this.decoder){try{this.decoder.state==="configured"&&this.decoder.reset(),this.decoder.state!=="closed"&&this.decoder.close()}catch{}this.decoder=null}if(this.workletNode){try{this.workletNode.disconnect()}catch{}this.workletNode=null}}}class FileVideoPlayer extends BasePlayer{constructor(l={}){super("idle",l.debugLogging??!1);c(this,"config");c(this,"fileSource",null);c(this,"decoder",null);c(this,"audioContext",null);c(this,"audioPlayer",null);c(this,"ownsAudioContext",!1);c(this,"audioInitialized",!1);c(this,"fileInfo",null);c(this,"frameBuffer",[]);c(this,"minBufferSize",3);c(this,"sampleQueue",[]);c(this,"audioSampleQueue",[]);c(this,"nextSampleIndex",0);c(this,"nextAudioSampleIndex",0);c(this,"maxDecoderQueue",10);c(this,"bufferReadyResolve",null);c(this,"playStartTime",0);c(this,"playStartPosition",0);c(this,"currentPosition",0);c(this,"lastVideoFrame",null);c(this,"isSeeking",!1);c(this,"maxAudioBufferMs",2e3);const i=l.playMode??(l.loop?"loop":"once");this.config={preferredDecoder:l.preferredDecoder??"webcodecs-sw",enableAudio:l.enableAudio??!0,debugLogging:l.debugLogging??!1,playMode:i},l.audioContext?(this.audioContext=l.audioContext,this.ownsAudioContext=!1):this.config.enableAudio&&(this.audioContext=new AudioContext,this.ownsAudioContext=!0)}getFileInfo(){return this.fileInfo}getPosition(){return this.currentPosition/1e3}getDuration(){var l;return((l=this.fileInfo)==null?void 0:l.duration)??0}getStats(){var l,i,r,t;return{duration:this.getDuration(),position:this.getPosition(),bufferSize:this.frameBuffer.length,width:((l=this.fileInfo)==null?void 0:l.width)??0,height:((i=this.fileInfo)==null?void 0:i.height)??0,frameRate:((r=this.fileInfo)==null?void 0:r.frameRate)??0,codec:((t=this.fileInfo)==null?void 0:t.videoCodec)??"",state:this._state}}setPlayMode(l){this.config.playMode=l,this.logger.debug(`Play mode set to: ${l}`)}getPlayMode(){return this.config.playMode??"once"}setLoop(l){this.config.playMode=l?"loop":"once"}setDebugLogging(l){this.config.debugLogging=l,super.setDebugLogging(l)}setVolume(l){this.audioPlayer&&this.audioPlayer.setVolume(l)}getVolume(){return 1}async loadFromUrl(l){this.setState("loading");try{return this.dispose(),this.fileSource=new MP4FileSource({onReady:i=>{var r;this.logger.info(`File loaded: ${i.width}x${i.height} @ ${(r=i.frameRate)==null?void 0:r.toFixed(1)}fps, codec: ${i.videoCodec}`)},onSamples:i=>{this.handleSamples(i)},onError:i=>{this.logger.error(`File source error: ${i.message}`),this.setState("error"),this.emit("error",i)},onProgress:(i,r)=>{this.emit("progress",i,r)},onEnded:()=>{this.handleSourceEnded()}}),this.fileInfo=await this.fileSource.loadFromUrl(l),await this.initDecoder(),await this.waitForBuffer(),this.setState("ready"),this.emit("ready",this.fileInfo),this.fileInfo}catch(i){throw this.setState("error"),this.emit("error",i),i}}async loadFromFile(l){this.setState("loading");try{return this.dispose(),this.fileSource=new MP4FileSource({onReady:i=>{var r;this.logger.info(`File loaded: ${i.width}x${i.height} @ ${(r=i.frameRate)==null?void 0:r.toFixed(1)}fps, codec: ${i.videoCodec}`)},onSamples:i=>{this.handleSamples(i)},onError:i=>{this.logger.error(`File source error: ${i.message}`),this.setState("error"),this.emit("error",i)},onEnded:()=>{this.handleSourceEnded()}}),this.fileInfo=await this.fileSource.loadFromFile(l),this.logger.debug(`File info loaded: ${this.fileInfo.width}x${this.fileInfo.height}, ${this.fileInfo.videoCodec}`),await this.initDecoder(),this.logger.debug(`Decoder initialized, sample queue: ${this.sampleQueue.length}`),await this.waitForBuffer(),this.setState("ready"),this.emit("ready",this.fileInfo),this.fileInfo}catch(i){throw this.setState("error"),this.emit("error",i),i}}async initDecoder(){if(!this.fileInfo||!this.fileSource)throw new Error("File not loaded");this.decoder=new WebCodecsDecoder({preferHardware:this.config.preferredDecoder==="webcodecs-hw",onFrame:i=>{this.handleDecodedFrame(i)},onError:i=>{this.logger.error(`Decoder error: ${i.message}`),this.emit("error",i)}});const l=this.fileSource.getVideoDescription();this.logger.debug(`Video description: ${(l==null?void 0:l.length)??0} bytes`),await this.decoder.configure({codec:this.fileInfo.videoCodec,codedWidth:this.fileInfo.width,codedHeight:this.fileInfo.height,description:l??void 0}),this.logger.info(`Decoder configured: ${this.fileInfo.videoCodec}`),this.config.enableAudio&&this.audioContext&&this.fileInfo.audioCodec&&await this.initAudioDecoder(),this.feedDecoder(),this.feedAudioDecoder()}async initAudioDecoder(){if(!(!this.fileInfo||!this.fileSource||!this.audioContext))try{this.audioPlayer=new FileAudioPlayer(this.audioContext);const l=this.fileSource.getAudioDescription();await this.audioPlayer.init(this.fileInfo.audioCodec,this.fileInfo.audioSampleRate??48e3,this.fileInfo.audioChannels??2,l??void 0),this.audioInitialized=!0,this.logger.info(`Audio decoder configured: ${this.fileInfo.audioCodec}`),this.feedAudioDecoder()}catch(l){this.logger.warn(`Failed to initialize audio: ${l}`),this.audioPlayer=null}}waitForBuffer(){return this.frameBuffer.length>=this.minBufferSize?Promise.resolve():(this.logger.debug(`Waiting for buffer (need ${this.minBufferSize} frames, have ${this.frameBuffer.length})`),new Promise((l,i)=>{this.bufferReadyResolve=l;const r=setTimeout(()=>{var e;if(this.bufferReadyResolve)if(this.logger.warn(`Buffer timeout - have ${this.frameBuffer.length}/${this.minBufferSize} frames, ${this.sampleQueue.length} samples queued`),this.frameBuffer.length>0)this.bufferReadyResolve=null,l();else{this.bufferReadyResolve=null;const n=((e=this.fileInfo)==null?void 0:e.isMoovAtStart)===!1?' The moov atom is not at the start of the file - please re-encode with "faststart" option (e.g., ffmpeg -movflags +faststart).':"";i(new Error(`Timeout waiting for frames to decode.${n}`))}},5e3),t=this.bufferReadyResolve;this.bufferReadyResolve=()=>{clearTimeout(r),t()}}))}handleSamples(l){const i=l.filter(t=>t.type==="video").length,r=l.filter(t=>t.type==="audio").length;this.logger.debug(`Received ${i} video + ${r} audio samples`);for(const t of l)t.type==="video"?this.sampleQueue.push(t):t.type==="audio"&&this.audioSampleQueue.push(t);this.feedDecoder(),this.feedAudioDecoder()}feedDecoder(){if(this.decoder)for(;this.nextSampleIndex<this.sampleQueue.length&&this.decoder.decodeQueueSize<this.maxDecoderQueue;){const l=this.sampleQueue[this.nextSampleIndex];this.decoder.decode({data:l.data,timestamp:l.timestamp,duration:l.duration,isKeyframe:l.isKeyframe}),this.nextSampleIndex++}}feedAudioDecoder(){if(!this.audioPlayer||!this.audioInitialized)return;const l=(this.currentPosition+this.maxAudioBufferMs)*1e3;for(;this.nextAudioSampleIndex<this.audioSampleQueue.length;){const i=this.audioSampleQueue[this.nextAudioSampleIndex];if(i.timestamp>l)break;this.audioPlayer.decode(i.data,i.timestamp,i.duration),this.nextAudioSampleIndex++}}handleDecodedFrame(l){const i=(l.timestamp??0)/1e3,r=(l.duration??0)/1e3,t={frame:l,timestampMs:i,durationMs:r};let e=!1;for(let n=0;n<this.frameBuffer.length;n++)if(this.frameBuffer[n].timestampMs>i){this.frameBuffer.splice(n,0,t),e=!0;break}e||this.frameBuffer.push(t),this.bufferReadyResolve&&this.frameBuffer.length>=this.minBufferSize&&(this.bufferReadyResolve(),this.bufferReadyResolve=null),this.feedDecoder(),this.feedAudioDecoder()}handleSourceEnded(){this.logger.debug("Source ended - all samples extracted")}async performSeamlessLoop(){this.logger.debug("Performing seamless loop"),this.currentPosition=0,this.playStartTime=performance.now(),this.playStartPosition=0;for(const l of this.frameBuffer)l.frame.close();this.frameBuffer=[],this.nextSampleIndex=0,this.nextAudioSampleIndex=0,this.audioPlayer&&(this.audioPlayer.clear(),this.audioPlayer.resetTiming()),this.feedDecoder(),this.feedAudioDecoder(),this.emit("loop")}play(){var l,i;this._state==="error"||this._state==="loading"||this._state==="idle"||((l=this.fileSource)==null||l.start(),(i=this.audioPlayer)==null||i.start(),this.playStartTime=performance.now(),this.playStartPosition=this.currentPosition,this.setState("playing"),this.logger.info(`Play from position ${this.currentPosition.toFixed(1)}ms`))}pause(){var l;this._state==="playing"&&((l=this.audioPlayer)==null||l.stop(),this.setState("paused"),this.logger.info(`Paused at position ${this.currentPosition.toFixed(1)}ms`))}async seek(l){var e;if(!this.fileInfo)return;l=Math.max(0,Math.min(l,this.fileInfo.duration));const i=l*1e6;this.logger.info(`Seeking to ${l.toFixed(2)}s`),this.isSeeking=!0,this.clearFrameBuffer(),(e=this.decoder)==null||e.reset(),this.audioPlayer&&(this.audioPlayer.clear(),this.audioPlayer.resetTiming());let r=0,t=0;for(let n=0;n<this.sampleQueue.length;n++){const s=this.sampleQueue[n];if(s.timestamp<=i&&s.isKeyframe&&(r=n,t=s.timestamp),s.timestamp>i)break}this.nextSampleIndex=r,this.currentPosition=t/1e3,this.nextAudioSampleIndex=0;for(let n=0;n<this.audioSampleQueue.length;n++)if(this.audioSampleQueue[n].timestamp>=t){this.nextAudioSampleIndex=n;break}this._state==="playing"&&(this.playStartTime=performance.now(),this.playStartPosition=this.currentPosition),this.isSeeking=!1,this.feedDecoder(),this.feedAudioDecoder(),this.emit("seeked",this.currentPosition/1e3)}clearFrameBuffer(){for(const{frame:l}of this.frameBuffer)l.close();this.frameBuffer=[]}getVideoFrame(){var i;if(this._state==="idle"||this._state==="loading"||this._state==="error")return null;if(this.isSeeking)return this.lastVideoFrame;if(this._state==="playing"){const r=performance.now()-this.playStartTime;if(this.currentPosition=this.playStartPosition+r,this.feedAudioDecoder(),this.fileInfo&&this.currentPosition>=this.fileInfo.duration*1e3)return this.config.playMode==="loop"?(this.performSeamlessLoop(),this.lastVideoFrame):(this.setState("ended"),this.emit("ended"),this.lastVideoFrame)}this.frameBuffer.length<this.minBufferSize&&((i=this.fileSource)==null||i.start());let l=-1;for(let r=0;r<this.frameBuffer.length&&this.frameBuffer[r].timestampMs<=this.currentPosition;r++)l=r;if(l>=0){const r=this.frameBuffer.splice(0,l);for(const{frame:e}of r)e.close();const t=this.frameBuffer.shift();t&&(this.lastVideoFrame&&this.lastVideoFrame!==t.frame&&this.lastVideoFrame.close(),this.lastVideoFrame=t.frame)}return this.lastVideoFrame}on(l,i){super.on(l,i)}off(l,i){super.off(l,i)}dispose(l=!1){var i,r,t,e;(i=this.fileSource)==null||i.stop(),this.clearFrameBuffer(),this.sampleQueue=[],this.audioSampleQueue=[],this.nextSampleIndex=0,this.nextAudioSampleIndex=0,this.audioInitialized=!1,this.lastVideoFrame&&(this.lastVideoFrame.close(),this.lastVideoFrame=null),(r=this.decoder)==null||r.dispose(),this.decoder=null,(t=this.audioPlayer)==null||t.dispose(),this.audioPlayer=null,l&&this.ownsAudioContext&&this.audioContext&&(this.audioContext.close(),this.audioContext=null),(e=this.fileSource)==null||e.dispose(),this.fileSource=null,this.fileInfo=null,this.currentPosition=0,this.playStartTime=0,this.playStartPosition=0,this.setState("idle")}}function createFilePlayer(d={}){return new FileVideoPlayer(d)}function createMoQSource(d){return new MoQSource(d)}class MoQSource extends BaseStreamSource{constructor(l){super();c(this,"config");c(this,"session",null);c(this,"trackTypeMap",new Map);c(this,"connecting",!1);this.config=l;for(const i of l.subscriptions)this.trackTypeMap.set(i.trackName,i.streamType)}async connect(){if(!(this.session||this.connecting)){this.connecting=!0;try{const{MoqSessionSubscriber:l}=await import("stinky-moq-js"),i={relayUrl:this.config.relayUrl,namespace:this.config.namespace,reconnection:{delay:this.config.reconnectionDelay??3e3}},r=this.config.subscriptions.map(t=>({trackName:t.trackName,priority:t.priority??0,retry:{delay:2e3}}));this.session=new l(i,r),this.setupEventListeners(),await this.session.connect(),this._connected=!0,this.emit("connected")}catch(l){this._connected=!1,this.emit("error",l instanceof Error?l:new Error(String(l)))}finally{this.connecting=!1}}}async disconnect(){this.session&&(this.session.dispose(),this.session=null,this._connected=!1,this.emit("disconnected"))}setupEventListeners(){this.session&&(this.session.on("data",(l,i)=>{this.handleIncomingData(l,i)}),this.session.on("error",l=>{this.emit("error",l instanceof Error?l:new Error(String(l)))}),this.session.on("stateChange",l=>{l.state==="disconnected"&&(this._connected=!1,this.emit("disconnected"))}))}handleIncomingData(l,i){const r=this.trackTypeMap.get(l)||"data";if(r==="video"||r==="audio")try{const t=WireProtocol.parse(i);if(!t.valid){console.warn(`Invalid ${r} packet format for track ${l}`);return}const e={trackName:l,streamType:r,data:t};this.emit("data",e)}catch(t){console.error(`Failed to parse ${r} packet:`,t)}else{const t={trackName:l,streamType:"data",data:{valid:!0,header:null,payload:i}};this.emit("data",t)}}dispose(){this.disconnect(),super.dispose()}}const moqSource=Object.freeze(Object.defineProperty({__proto__:null,MoQSource,createMoQSource},Symbol.toStringTag,{value:"Module"})),REQUEST_TIMEOUT_MS=5e3,MIN_KEYFRAME_REQUEST_INTERVAL_MS=1e3;class WebSocketSource extends BaseStreamSource{constructor(l={}){super();c(this,"webSocket",null);c(this,"messageWaiters",[]);c(this,"requestId",0);c(this,"timeoutCheckInterval",null);c(this,"config");c(this,"lastKeyframeRequest",0);c(this,"currentTrackName","default");c(this,"reconnectTimeout",null);c(this,"disposed",!1);this.config={url:l.url||"",useCurrentHost:l.useCurrentHost??!0,apiPath:l.apiPath||"/api/video",clientId:l.clientId||"video-player",timeout:l.timeout||REQUEST_TIMEOUT_MS,autoReconnect:l.autoReconnect??!1,reconnectDelay:l.reconnectDelay||3e3}}getWebSocketUrl(){if(this.config.url)return this.config.url;if(this.config.useCurrentHost&&typeof window<"u")return`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}${this.config.apiPath}?id=${this.config.clientId}`;throw new Error("WebSocket URL not configured. Provide url or enable useCurrentHost.")}async connect(){if(!this._connected)return new Promise((l,i)=>{const r=this.getWebSocketUrl();let t=!1;try{this.webSocket=new WebSocket(r),this.webSocket.binaryType="arraybuffer",this.startTimeoutChecker(),this.webSocket.onopen=()=>{t||(t=!0,this._connected=!0,this.emit("connected"),l())},this.webSocket.onmessage=e=>{this.handleMessage(e)},this.webSocket.onclose=()=>{const e=this._connected;this._connected=!1,t||(t=!0,i(new Error("WebSocket connection closed"))),e&&(this.emit("disconnected"),this.handleDisconnect())},this.webSocket.onerror=e=>{t||(t=!0,i(new Error("WebSocket connection error"))),this.emit("error",new Error("WebSocket error"))},setTimeout(()=>{var e;t||(t=!0,(e=this.webSocket)==null||e.close(),i(new Error("Connection timeout")))},this.config.timeout)}catch(e){i(e)}})}disconnect(){this.stopReconnect(),this.webSocket&&(this.webSocket.close(),this.webSocket=null),this._connected=!1,this.stopTimeoutChecker(),this.clearWaiters()}async loadLive(l){this.currentTrackName=l,await this.request({type:"live",filename:l})}requestKeyframe(){const l=Date.now();l-this.lastKeyframeRequest<MIN_KEYFRAME_REQUEST_INTERVAL_MS||(this.lastKeyframeRequest=l,this.request({type:"keyframe"}).catch(()=>{}))}dispose(){this.disposed=!0,this.disconnect(),super.dispose()}async request(l){if(!this._connected||!this.webSocket)throw new Error("Not connected to WebSocket server");return l.id=this.requestId++,this.webSocket.send(JSON.stringify(l)),this.waitForResponse(l.id)}waitForResponse(l){return new Promise((i,r)=>{this.messageWaiters.push({resolve:i,reject:r,id:l,timeout:Date.now()+this.config.timeout})})}handleMessage(l){if(typeof l.data=="string")try{const i=JSON.parse(l.data);this.handleResponse(i)}catch(i){console.error("Failed to parse WebSocket message:",i)}else l.data instanceof ArrayBuffer&&this.handleBinaryData(l.data)}handleResponse(l){if(l.id===-1){l.error&&this.emit("error",new Error(l.error));return}const i=this.messageWaiters.findIndex(r=>r.id===l.id);if(i!==-1){const r=this.messageWaiters[i];this.messageWaiters.splice(i,1),l.error?r.reject(new Error(l.error)):r.resolve(l.data)}}handleBinaryData(l){const i=new Uint8Array(l),r=WireProtocol.parse(i);if(!r.valid||!r.header){console.warn("Invalid binary packet received");return}let t="data";r.header.type===FrameType.FRAME_TYPE_VIDEO?t="video":r.header.type===FrameType.FRAME_TYPE_AUDIO&&(t="audio");const e={trackName:this.currentTrackName,streamType:t,data:r};this.emit("data",e)}handleDisconnect(){this.clearWaiters(),this.config.autoReconnect&&!this.disposed&&this.scheduleReconnect()}scheduleReconnect(){this.stopReconnect(),this.reconnectTimeout=window.setTimeout(async()=>{try{await this.connect(),this.currentTrackName&&this.currentTrackName!=="default"&&await this.loadLive(this.currentTrackName)}catch{this.scheduleReconnect()}},this.config.reconnectDelay)}stopReconnect(){this.reconnectTimeout!==null&&(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=null)}startTimeoutChecker(){this.stopTimeoutChecker(),this.timeoutCheckInterval=window.setInterval(()=>{const l=Date.now();this.messageWaiters.filter(r=>r.timeout<=l).forEach(r=>{r.reject(new Error("Request timeout"));const t=this.messageWaiters.indexOf(r);t!==-1&&this.messageWaiters.splice(t,1)})},1e3)}stopTimeoutChecker(){this.timeoutCheckInterval!==null&&(clearInterval(this.timeoutCheckInterval),this.timeoutCheckInterval=null)}clearWaiters(){this.messageWaiters.forEach(l=>{l.reject(new Error("Connection closed"))}),this.messageWaiters=[]}}function createWebSocketSource(d){return new WebSocketSource(d)}function isVideoFrame(d){return d instanceof VideoFrame}function isYUVFrame(d){return!isVideoFrame(d)&&"y"in d&&"u"in d&&"v"in d}const DEFAULT_CAPTURE_CONFIG={video:{width:{ideal:1920},height:{ideal:1080},frameRate:{ideal:30}},audio:{sampleRate:{ideal:48e3},channelCount:{ideal:2}},videoEncoder:{codec:CodecType.CODEC_TYPE_VIDEO_VP9,bitrate:2e6,frameRate:30,keyFrameInterval:60,latencyMode:"realtime"},audioEncoder:{codec:CodecType.CODEC_TYPE_AUDIO_OPUS,sampleRate:48e3,channels:2,bitrate:128e3,latencyMode:"realtime"},audioLevelMonitoring:!1,audioLevelInterval:50};function codecTypeToString(d){switch(d){case CodecType.CODEC_TYPE_VIDEO_VP8:return"vp8";case CodecType.CODEC_TYPE_VIDEO_VP9:return"vp09.00.10.08";case CodecType.CODEC_TYPE_VIDEO_AVC:return"avc1.64001f";case CodecType.CODEC_TYPE_VIDEO_HEVC:return"hvc1.1.L0.0";case CodecType.CODEC_TYPE_VIDEO_AV1:return"av01.0.05M.08";case CodecType.CODEC_TYPE_AUDIO_OPUS:return"opus";case CodecType.CODEC_TYPE_AUDIO_AAC:return"mp4a.40.2";case CodecType.CODEC_TYPE_AUDIO_PCM:return"pcm";default:throw new Error(`Unsupported codec type: ${d}`)}}function isVideoCodec(d){return d>=CodecType.CODEC_TYPE_VIDEO_VP8&&d<=CodecType.CODEC_TYPE_VIDEO_AV1}function isAudioCodec(d){return d>=CodecType.CODEC_TYPE_AUDIO_OPUS&&d<=CodecType.CODEC_TYPE_AUDIO_PCM}class MediaStreamEncoder{constructor(o,l,i,r){c(this,"audioWorker");c(this,"videoWorker");c(this,"audioProcessor");c(this,"videoProcessor");c(this,"disposed",!1);c(this,"handlers",{chunk:new Set,"audio-levels":new Set,error:new Set,ready:new Set});c(this,"audioReady",!1);c(this,"videoReady",!1);c(this,"hasAudio",!1);c(this,"hasVideo",!1);c(this,"audioMetadata");c(this,"videoMetadata");const t=o.getAudioTracks(),e=o.getVideoTracks();this.hasAudio=t.length>0&&!!i,this.hasVideo=e.length>0&&!!l,this.hasAudio&&i&&this.createAudioEncoder(t[0],i,r),this.hasVideo&&l&&this.createVideoEncoder(e[0],l)}on(o,l){const i=this.handlers[o];return i&&i.add(l),this}off(o,l){const i=this.handlers[o];return i&&i.delete(l),this}emit(o,l){const i=this.handlers[o];i&&i.forEach(r=>r(l))}checkReady(){const o=!this.hasAudio||this.audioReady,l=!this.hasVideo||this.videoReady;o&&l&&this.emit("ready")}createAudioEncoder(o,l,i){const r=o.getSettings(),t=r.channelCount||l.channels||2,e=r.sampleRate||l.sampleRate||48e3;this.audioMetadata={channels:t,sampleRate:e};const s={codec:codecTypeToString(l.codec),sampleRate:e,numberOfChannels:t,bitrate:l.bitrate||128e3};l.codec===CodecType.CODEC_TYPE_AUDIO_OPUS&&(s.opus={frameDuration:2e4,complexity:5,format:"opus"}),this.audioWorker=new Worker(new URL("/assets/audio-encoder.worker-c5c829bb.js",self.location),{type:"module"}),this.audioWorker.onmessage=a=>{const{type:U,data:u,metadata:F}=a.data;switch(U){case"chunk":this.emit("chunk",{type:"audio",chunk:u,keyframe:!1,timestamp:u.timestamp,metadata:{...this.audioMetadata,decoderConfig:F==null?void 0:F.decoderConfig}});break;case"error":this.emit("error",new Error(`Audio encoding error: ${u}`));break;case"ready":this.audioReady=!0,this.startProcessingAudio(o),this.checkReady();break;case"audio-levels":this.emit("audio-levels",u);break}},this.audioWorker.onerror=a=>{this.emit("error",new Error(`Audio worker error: ${a.message}`))},this.audioWorker.postMessage({type:"init",data:{config:s,audioLevels:i!=null&&i.enabled?{interval:i.interval||50}:void 0}})}createVideoEncoder(o,l){const i=o.getSettings(),r=i.width||l.width||1280,t=i.height||l.height||720,e=i.frameRate||l.frameRate||30;this.videoMetadata={width:r,height:t};const n=codecTypeToString(l.codec),s={codec:n,width:r,height:t,bitrate:l.bitrate||2e6,framerate:e,latencyMode:l.latencyMode||"realtime"};n.startsWith("avc1")&&(s.avc={format:"annexb"}),(n.startsWith("hvc1")||n.startsWith("hev1"))&&(s.hevc={format:"annexb"}),this.videoWorker=new Worker(new URL("/assets/video-encoder.worker-a613b1f0.js",self.location),{type:"module"}),this.videoWorker.onmessage=a=>{const{type:U,data:u,metadata:F}=a.data;switch(U){case"chunk":this.emit("chunk",{type:"video",chunk:u,keyframe:u.type==="key",timestamp:u.timestamp,metadata:{...this.videoMetadata,decoderConfig:F==null?void 0:F.decoderConfig}});break;case"error":this.emit("error",new Error(`Video encoding error: ${u}`));break;case"ready":this.videoReady=!0,this.startProcessingVideo(o),this.checkReady();break}},this.videoWorker.onerror=a=>{this.emit("error",new Error(`Video worker error: ${a.message}`))},this.videoWorker.postMessage({type:"init",data:{config:s,gopSize:l.keyFrameInterval||60}})}startProcessingAudio(o){try{this.audioProcessor=new MediaStreamTrackProcessor({track:o});const l=this.audioProcessor.readable;this.audioWorker&&this.audioWorker.postMessage({type:"stream",data:{readable:l}},[l])}catch(l){this.emit("error",new Error(`Failed to set up audio processing: ${l}`))}}startProcessingVideo(o){try{this.videoProcessor=new MediaStreamTrackProcessor({track:o});const l=this.videoProcessor.readable;this.videoWorker&&this.videoWorker.postMessage({type:"stream",data:{readable:l}},[l])}catch(l){this.emit("error",new Error(`Failed to set up video processing: ${l}`))}}requestKeyframe(){this.videoWorker&&this.videoWorker.postMessage({type:"request-keyframe"})}dispose(){this.disposed||(this.disposed=!0,Object.values(this.handlers).forEach(o=>o.clear()),this.audioWorker&&(this.audioWorker.postMessage({type:"close"}),this.audioWorker.terminate(),this.audioWorker=void 0),this.videoWorker&&(this.videoWorker.postMessage({type:"close"}),this.videoWorker.terminate(),this.videoWorker=void 0),this.audioProcessor=void 0,this.videoProcessor=void 0)}}class BaseCaptureSink{constructor(o){c(this,"config");c(this,"keyframeCallback");c(this,"_connected",!1);this.config=o}get connected(){return this._connected}async reconnect(){await this.disconnect(),await this.connect()}onKeyframeRequest(o){this.keyframeCallback=o}requestKeyframe(){this.keyframeCallback&&this.keyframeCallback()}dispose(){this.disconnect(),this.keyframeCallback=void 0}}class WebSocketCaptureSink extends BaseCaptureSink{constructor(l){super(l);c(this,"websocket");c(this,"wsConfig");c(this,"reconnectTimer");c(this,"disposed",!1);this.wsConfig=l}async connect(){if(this.disposed)throw new Error("Sink has been disposed");return new Promise((l,i)=>{const r=this.wsConfig.connectionTimeout||5e3;let t=!1;const e=setTimeout(()=>{var n;t||(t=!0,(n=this.websocket)==null||n.close(),i(new Error("Connection timeout")))},r);try{this.websocket=new WebSocket(this.wsConfig.url),this.websocket.binaryType="arraybuffer",this.websocket.onopen=()=>{t||(t=!0,clearTimeout(e),this._connected=!0,l())},this.websocket.onclose=()=>{this._connected=!1,t?!this.disposed&&this.wsConfig.autoReconnect&&this.scheduleReconnect():(t=!0,clearTimeout(e),i(new Error("WebSocket closed")))},this.websocket.onerror=()=>{t||(t=!0,clearTimeout(e),i(new Error("WebSocket connection error")))},this.websocket.onmessage=n=>{if(typeof n.data=="string"){const s=n.data;(s==="keyframe"||s.includes("keyframe"))&&this.requestKeyframe()}}}catch(n){t=!0,clearTimeout(e),i(n)}})}async disconnect(){this.clearReconnectTimer(),this.websocket&&(this.websocket.onclose=null,this.websocket.onerror=null,this.websocket.onmessage=null,this.websocket.close(),this.websocket=void 0),this._connected=!1}send(l){if(!(!this.connected||!this.websocket))try{this.websocket.send(l.data)}catch(i){console.error("Failed to send packet:",i)}}scheduleReconnect(){if(this.disposed||this.reconnectTimer)return;const l=this.wsConfig.reconnectDelay||3e3;this.reconnectTimer=setTimeout(async()=>{if(this.reconnectTimer=void 0,!this.disposed)try{await this.connect()}catch(i){console.error("Reconnection failed:",i),this.scheduleReconnect()}},l)}clearReconnectTimer(){this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=void 0)}dispose(){this.disposed=!0,this.clearReconnectTimer(),super.dispose()}}function createWebSocketSink(d){return new WebSocketCaptureSink(d)}const tr=class tr extends BaseCaptureSink{constructor(l){super(l);c(this,"moqConfig");c(this,"session",null);c(this,"connecting",!1);c(this,"disposed",!1);c(this,"sessionOwned",!1);c(this,"currentVideoGroup",!0);c(this,"audioFrameCount",0);this.moqConfig=l,l.session&&(this.session=l.session,this.sessionOwned=!1,this._connected=!0)}async connect(){if(this.disposed)throw new Error("Sink has been disposed");if(this.session&&!this.sessionOwned){this.setupEventListeners(),this._connected=!0;return}if(!(this.session||this.connecting)){if(!this.moqConfig.relayUrl||!this.moqConfig.namespace)throw new Error("relayUrl and namespace are required when not using an injected session");this.connecting=!0;try{const{MoqSessionBroadcaster:l}=await import("stinky-moq-js"),i={relayUrl:this.moqConfig.relayUrl,namespace:this.moqConfig.namespace,reconnection:{delay:this.moqConfig.reconnectionDelay??3e3}},r=[];if(this.moqConfig.videoTrack&&r.push({trackName:this.moqConfig.videoTrack.trackName,priority:this.moqConfig.videoTrack.priority??1,type:"video"}),this.moqConfig.audioTrack&&r.push({trackName:this.moqConfig.audioTrack.trackName,priority:this.moqConfig.audioTrack.priority??2,type:"audio"}),this.moqConfig.dataTracks)for(const t of this.moqConfig.dataTracks)r.push({trackName:t.trackName,priority:t.priority??3,type:"data"});this.session=new l(i,r),this.sessionOwned=!0,this.setupEventListeners(),await this.session.connect(),this._connected=!0}catch(l){throw this._connected=!1,l}finally{this.connecting=!1}}}async disconnect(){this.session&&(this.sessionOwned&&(this.session.dispose(),this.session=null),this._connected=!1),this.currentVideoGroup=!0,this.audioFrameCount=0}send(l){if(!this.session||!this._connected)return;const i=l.type==="video"?this.moqConfig.videoTrack:this.moqConfig.audioTrack;if(!i)return;let r;l.type==="video"?l.isKeyframe?(r=!0,this.currentVideoGroup=!1):(r=this.currentVideoGroup,r&&(this.currentVideoGroup=!1)):(this.audioFrameCount%tr.AUDIO_FRAMES_PER_GROUP===0?r=!0:r=!1,this.audioFrameCount++);try{this.session.send(i.trackName,new Uint8Array(l.data),r)}catch{}}setupEventListeners(){this.session&&(this.session.on("trackRequested",l=>{var i;l===((i=this.moqConfig.videoTrack)==null?void 0:i.trackName)&&(this.currentVideoGroup=!0,this.requestKeyframe())}),this.session.on("error",l=>{var i,r;console.error("MoQ session error:",l),((i=l.message)!=null&&i.includes("reset")||(r=l.message)!=null&&r.includes("stream"))&&(this.currentVideoGroup=!0)}),this.session.on("stateChange",l=>{const i=this._connected;this._connected=l.state===stinkyMoqJs.SessionState.CONNECTED,i&&!this._connected&&(this.currentVideoGroup=!0)}))}dispose(){this.disposed=!0,this.session&&this.sessionOwned&&this.session.dispose(),super.dispose()}setMoQSession(l){this.session&&this.sessionOwned&&this.session.dispose(),this.session=l,this.sessionOwned=!1,this._connected=!0,this.setupEventListeners()}sendData(l,i){if(!(!this.session||!this._connected))try{this.session.send(l,i,!0)}catch{}}};c(tr,"AUDIO_FRAMES_PER_GROUP",50);let MoQCaptureSink=tr;function createMoQSink(d){return new MoQCaptureSink(d)}class MediaCapture{constructor(o){c(this,"config");c(this,"sink");c(this,"encoder");c(this,"mediaStream");c(this,"state","idle");c(this,"disposed",!1);c(this,"stats",{videoFramesEncoded:0,audioFramesEncoded:0,bytesSent:0,packetsSent:0,videoBitrate:0,audioBitrate:0,startTime:0,duration:0});c(this,"videoMetadata");c(this,"audioMetadata");c(this,"handlers",{"state-change":new Set,"audio-levels":new Set,stats:new Set,error:new Set});this.config={...DEFAULT_CAPTURE_CONFIG,...o},this.sink=o.sink,this.sink.onKeyframeRequest(()=>{this.requestKeyframe()})}on(o,l){const i=this.handlers[o];return i&&i.add(l),this}off(o,l){const i=this.handlers[o];return i&&i.delete(l),this}emit(o,l){const i=this.handlers[o];i&&i.forEach(r=>r(l))}setState(o){this.state!==o&&(this.state=o,this.emit("state-change",o))}getState(){return this.state}getStats(){return this.stats.startTime>0&&(this.stats.duration=Date.now()-this.stats.startTime),{...this.stats}}static hasMediaDevices(){return!!(navigator.mediaDevices&&navigator.mediaDevices.getUserMedia)}static async getDevices(){return MediaCapture.hasMediaDevices()?navigator.mediaDevices.enumerateDevices():[]}async start(){var o,l,i,r;if(this.disposed)throw new Error("MediaCapture has been disposed");if(this.state!=="capturing"){if(!MediaCapture.hasMediaDevices())throw new Error("Media devices not available. Make sure you are using HTTPS.");this.setState("initializing");try{const t={};if(this.config.video&&(t.video=typeof this.config.video=="boolean"?DEFAULT_CAPTURE_CONFIG.video:this.config.video),this.config.audio&&(t.audio=typeof this.config.audio=="boolean"?DEFAULT_CAPTURE_CONFIG.audio:this.config.audio),!t.video&&!t.audio)throw new Error("Must enable at least video or audio capture");this.mediaStream=await navigator.mediaDevices.getUserMedia(t);const e=this.mediaStream.getVideoTracks(),n=this.mediaStream.getAudioTracks();if(e.length>0){const U=e[0].getSettings();this.videoMetadata={width:U.width||1280,height:U.height||720}}if(n.length>0){const U=n[0].getSettings();this.audioMetadata={channels:U.channelCount||2,sampleRate:U.sampleRate||48e3}}this.sink.connected||await this.sink.connect();const s=this.config.video?{...DEFAULT_CAPTURE_CONFIG.videoEncoder,...this.config.videoEncoder,width:(o=this.videoMetadata)==null?void 0:o.width,height:(l=this.videoMetadata)==null?void 0:l.height}:void 0,a=this.config.audio?{...DEFAULT_CAPTURE_CONFIG.audioEncoder,...this.config.audioEncoder,channels:(i=this.audioMetadata)==null?void 0:i.channels,sampleRate:(r=this.audioMetadata)==null?void 0:r.sampleRate}:void 0;this.encoder=new MediaStreamEncoder(this.mediaStream,s,a,{enabled:this.config.audioLevelMonitoring??!1,interval:this.config.audioLevelInterval}),this.encoder.on("chunk",U=>this.handleEncodedChunk(U)),this.encoder.on("audio-levels",U=>this.emit("audio-levels",U)),this.encoder.on("error",U=>{this.emit("error",U),this.setState("error")}),await new Promise(U=>{this.encoder.on("ready",()=>U()),setTimeout(U,100)}),this.stats.startTime=Date.now(),this.setState("capturing")}catch(t){throw this.setState("error"),t}}}async stop(){this.state==="idle"||this.state==="stopped"||(this.encoder&&(this.encoder.dispose(),this.encoder=void 0),this.mediaStream&&(this.mediaStream.getTracks().forEach(o=>o.stop()),this.mediaStream=void 0),this.setState("stopped"))}requestKeyframe(){this.encoder&&this.encoder.requestKeyframe()}getMediaStream(){return this.mediaStream}setMoQSession(o){if("setMoQSession"in this.sink&&typeof this.sink.setMoQSession=="function")this.sink.setMoQSession(o);else throw new Error("Sink does not support MoQ session injection")}handleEncodedChunk(o){if(this.sink.connected)try{const l=new Uint8Array(o.chunk.byteLength);o.chunk.copyTo(l.buffer);const r={data:this.createPacket(o,l),isKeyframe:o.keyframe,timestamp:o.timestamp,type:o.type};this.sink.send(r),o.type==="video"?this.stats.videoFramesEncoded++:this.stats.audioFramesEncoded++,this.stats.bytesSent+=l.byteLength,this.stats.packetsSent++}catch(l){console.error("Error handling encoded chunk:",l)}}createPacket(o,l){var e,n,s,a;const i=o.type==="video",r={type:i?sesame.v1.wire.FrameType.FRAME_TYPE_VIDEO:sesame.v1.wire.FrameType.FRAME_TYPE_AUDIO,media:{pts:BigInt(o.timestamp),keyframe:o.keyframe,codecData:{codecType:i?CodecType.CODEC_TYPE_VIDEO_VP9:CodecType.CODEC_TYPE_AUDIO_OPUS,codecProfile:0,codecLevel:0,width:((e=this.videoMetadata)==null?void 0:e.width)||0,height:((n=this.videoMetadata)==null?void 0:n.height)||0,channels:((s=this.audioMetadata)==null?void 0:s.channels)||0,sampleRate:((a=this.audioMetadata)==null?void 0:a.sampleRate)||0,bitDepth:8,timebaseNum:1,timebaseDen:1e6}},routingMetadata:this.config.topic?JSON.stringify({metadata:this.config.topic}):""};!i&&this.config.audioTimestampOffset&&(r.media.pts+=BigInt(this.config.audioTimestampOffset)),this.config.topic&&(r.routingMetadata=JSON.stringify({metadata:this.config.topic}));const t=WireProtocol.serialize(r,l);if(!t)throw new Error("Failed to serialize packet");return t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength)}dispose(){this.disposed||(this.disposed=!0,this.stop(),this.sink.dispose(),Object.values(this.handlers).forEach(o=>o.clear()))}}function createMediaCapture(d){return new MediaCapture(d)}exports.BaseCaptureSink=BaseCaptureSink;exports.BasePlayer=BasePlayer;exports.BaseStreamSource=BaseStreamSource;exports.CodecType=CodecType;exports.DEFAULT_CAPTURE_CONFIG=DEFAULT_CAPTURE_CONFIG;exports.FileAudioPlayer=FileAudioPlayer;exports.FileVideoPlayer=FileVideoPlayer;exports.FrameScheduler=FrameScheduler;exports.LiveAudioPlayer=LiveAudioPlayer;exports.LiveVideoPlayer=LiveVideoPlayer;exports.MP4FileSource=MP4FileSource;exports.MediaCapture=MediaCapture;exports.MediaStreamEncoder=MediaStreamEncoder;exports.MoQCaptureSink=MoQCaptureSink;exports.MoQSource=MoQSource;exports.WasmDecoder=WasmDecoder;exports.WebCodecsDecoder=WebCodecsDecoder;exports.WebSocketCaptureSink=WebSocketCaptureSink;exports.WebSocketSource=WebSocketSource;exports.codecTypeToString=codecTypeToString;exports.consoleLogger=consoleLogger;exports.createFilePlayer=createFilePlayer;exports.createMediaCapture=createMediaCapture;exports.createMoQSink=createMoQSink;exports.createMoQSource=createMoQSource;exports.createPlayer=createPlayer;exports.createWebSocketSink=createWebSocketSink;exports.createWebSocketSource=createWebSocketSource;exports.isAudioCodec=isAudioCodec;exports.isVideoCodec=isVideoCodec;exports.isVideoFrame=isVideoFrame;exports.isYUVFrame=isYUVFrame;exports.silentLogger=silentLogger;