UNPKG

live2d-motionsync

Version:

Live2D Motionsync, a lip-sync library for Live2D models.

423 lines (419 loc) 706 kB
var S9 = Object.defineProperty; var N9 = (r, v, P) => v in r ? S9(r, v, { enumerable: !0, configurable: !0, writable: !0, value: P }) : r[v] = P; var t = (r, v, P) => N9(r, typeof v != "symbol" ? v + "" : v, P); const C9 = `/** * Copyright(c) Live2D Inc. All rights reserved. * * Use of this source code is governed by the Live2D Proprietary Software license * that can be found at https://www.live2d.com/eula/live2d-proprietary-software-license-agreement_en.html. */ var Live2DCubismMotionSyncCore; (function (Live2DCubismMotionSyncCore) { /** C calls. */ var _csmmotionsync = /** @class */ (function () { function _csmmotionsync() { } _csmmotionsync.getLogFunction = function () { return _em.ccall("csmMotionSync_GetLogFunction", "number", [], []); }; _csmmotionsync.getEngineVersion = function () { return _em.ccall("csmMotionSync_GetEngineVersion", "number", [], []); }; _csmmotionsync.getEngineName = function () { return _em.ccall("csmMotionSync_GetEngineName", "string", [], []); }; _csmmotionsync.initializeEngine = function (engineConfiguration) { return _em.ccall("csmMotionSync_InitializeEngine", "number", ["number"], [engineConfiguration]); }; _csmmotionsync.createContext = function (contextConfiguration, mappingInformations, mappingInformationCount) { return _em.ccall("csmMotionSync_CreateContext", "number", ["number", "number", "number"], [contextConfiguration, mappingInformations, mappingInformationCount]); }; _csmmotionsync.getRequireSampleCount = function (context) { return _em.ccall("csmMotionSync_GetRequireSampleCount", "number", ["number"], [context]); }; _csmmotionsync.analyze = function (context, samples, sampleCount, analysisResult, analysisConfiguration) { return _em.ccall("csmMotionSync_Analyze", "number", ["number", "number", "number", "number", "number"], [context, samples, sampleCount, analysisResult, analysisConfiguration]); }; _csmmotionsync.malloc = function (size) { return _em.ccall("csmMotionSync_Malloc", "number", ["number"], [size]); }; _csmmotionsync.setLogFunction = function (handler) { _em.ccall("csmMotionSync_SetLogFunction", null, ["number"], [handler]); }; _csmmotionsync.disposeEngine = function () { _em.ccall("csmMotionSync_DisposeEngine", null, [], []); }; _csmmotionsync.clearContext = function (context) { _em.ccall("csmMotionSync_ClearContext", null, ["number"], [context]); }; _csmmotionsync.deleteContext = function (context) { _em.ccall("csmMotionSync_DeleteContext", null, ["number"], [context]); }; _csmmotionsync.free = function (memory) { _em.ccall("csmMotionSync_Free", null, ["number"], [memory]); }; return _csmmotionsync; }()); /** Booleans false. */ Live2DCubismMotionSyncCore.csmMotionSyncFalse = 0; /** True. */ Live2DCubismMotionSyncCore.csmMotionSyncTrue = 1; var ToPointer = /** @class */ (function () { function ToPointer() { } /** * Allocates memory of a specified size. * * @param size Memory size. * @returns Address. */ ToPointer.Malloc = function (size) { return _csmmotionsync.malloc(size); }; /** * Free memory at specified location. * * @param memory Address. */ ToPointer.Free = function (memory) { _csmmotionsync.free(memory); }; /** * Places an integer entity in memory. * * @param ptr Address. * @param offset Offset. * @param value Value. */ ToPointer.AddValuePtrInt32 = function (ptr, offset, value) { _em.setValue(ptr + offset, value, 'i32'); }; /** * Places floating-point entities in memory. * * @param ptr Address. * @param offset Offset. * @param value Value. */ ToPointer.AddValuePtrFloat = function (ptr, offset, value) { _em.setValue(ptr + offset, value, 'float'); }; /** * Convert number array to native float array. * * @param numbers Array to convert. * @returns Top address of converted array. */ ToPointer.ConvertNumberArrayToFloatArrayPtr = function (numbers) { // 値の配列の先頭アドレス var numbersPtr = ToPointer.Malloc(numbers.length * 4); for (var index = 0; index < numbers.length; index++) { _em.setValue(numbersPtr + (index * 4), numbers[index], 'float'); } return numbersPtr; }; /** * Convert number array to native pointer array. * * @param buffer Array to put values in. * @param ptr Buffer's top address. * @param numbers Array to convert. * @returns buffer. */ ToPointer.NumberArrayToPtrArray = function (buffer, ptr, numbers) { var bufferDataHeap = new Uint8Array(_em.HEAPU8.buffer, ptr, buffer.byteLength); bufferDataHeap.set(new Uint8Array(buffer.buffer)); buffer = new Int32Array(bufferDataHeap.buffer, bufferDataHeap.byteOffset, bufferDataHeap.length); for (var index = 0; index < numbers.length; index++) { buffer[index] = numbers[index]; } return buffer; }; /** * Convert engine configuration to native array. * * @param buffer Array to put values in. * @param ptr Buffer's top address. * @param allocator Allocator function. * @param deallocator Deallocator function. * @returns buffer. */ ToPointer.ConvertEngineConfigCriToInt32Array = function (buffer, ptr, allocator, deallocator) { // Wrap function to pointer. var allocPtr = this.AllocatorToPtr(allocator); var deallocPtr = this.DeallocatorToPtr(deallocator); var bufferDataHeap = new Uint8Array(_em.HEAPU8.buffer, ptr, buffer.byteLength); bufferDataHeap.set(new Uint8Array(buffer.buffer)); buffer = new Int32Array(bufferDataHeap.buffer, bufferDataHeap.byteOffset, bufferDataHeap.length); buffer[0] = allocPtr; buffer[1] = deallocPtr; return buffer; }; /** * Convert context configuration to native array. * * @param buffer Array to put values in. * @param ptr Buffer's top address. * @param sampleRate Audio sampling frequency. * @param bitDepth Audio bitDepth. * @returns buffer. */ ToPointer.ConvertContextConfigCriToInt32Array = function (buffer, ptr, sampleRate, bitDepth) { var bufferDataHeap = new Uint8Array(_em.HEAPU8.buffer, ptr, buffer.byteLength); bufferDataHeap.set(new Uint8Array(buffer.buffer)); buffer = new Int32Array(bufferDataHeap.buffer, bufferDataHeap.byteOffset, bufferDataHeap.length); buffer[0] = sampleRate; buffer[1] = bitDepth; return buffer; }; /** * Convert MappingInfo to native array. * * @param buffer Array to put values in. * @param bufferPtr Buffer's top address. * @param audioParameterId AudioParameter's id. * @param modelParameterIds Array of cubism paramter id. * @param modelParameterValues Array of cubism paramter value. * @param modelParameterCount Number of cubism paramter. * @param scale Scale. * @param enabled Enable flag. * @returns buffer. */ ToPointer.ConvertMappingInfoCriToFloat32Array = function (buffer, bufferPtr, audioParameterId, modelParameterIds, modelParameterValues, modelParameterCount, scale, enabled) { // First address of the string. var audioParameterIdPtr = ToPointer.Malloc(audioParameterId.length * 4 + 1); _em.stringToUTF8(audioParameterId, audioParameterIdPtr, audioParameterId.length * 4 + 1); // First address of the id array. var totalLength = 0; for (var index = 0; index < modelParameterIds.length; index++) { totalLength += modelParameterIds[index].length; } var modelParameterIdsPtr = ToPointer.Malloc(totalLength * 4 + modelParameterIds.length); var firstModelParameterIdsPtr = modelParameterIdsPtr; for (var index = 0; index < modelParameterIds.length; index++) { // See also the stringToUTF8 documentation. // https://emscripten.org/docs/api_reference/preamble.js.html#stringToUTF8 _em.stringToUTF8(modelParameterIds[index], modelParameterIdsPtr, modelParameterIds[index].length * 4 + 1); // Without this +1, the letters will be connected and recognized when brought to the C side. modelParameterIdsPtr += modelParameterIds[index].length + 1; } // First address of the value array. var modelParameterValuesPtr = ToPointer.ConvertNumberArrayToFloatArrayPtr(modelParameterValues); var bufferDataHeap = new Uint8Array(_em.HEAPU8.buffer, bufferPtr, buffer.byteLength); bufferDataHeap.set(new Uint8Array(buffer.buffer)); buffer = new Float32Array(bufferDataHeap.buffer, bufferDataHeap.byteOffset, bufferDataHeap.length); // Call by reference. buffer[0] = audioParameterIdPtr; buffer[1] = firstModelParameterIdsPtr; buffer[2] = modelParameterValuesPtr; // Call by value. buffer[3] = modelParameterCount; buffer[4] = scale; buffer[5] = enabled; return buffer; }; /** * Convert analysis result to native array. * * @param buffer Array to put values in. * @param bufferPtr Buffer's top address. * @param valuesCount Cubism parameter count. * @returns buffer. */ ToPointer.ConvertAnalysisResultToInt32Array = function (buffer, bufferPtr, valuesCount) { var valuesPtr = ToPointer.Malloc(valuesCount * Float32Array.BYTES_PER_ELEMENT); var bufferDataHeap = new Uint8Array(_em.HEAPU8.buffer, bufferPtr, buffer.byteLength); bufferDataHeap.set(new Uint8Array(buffer.buffer)); buffer = new Int32Array(bufferDataHeap.buffer, bufferDataHeap.byteOffset, bufferDataHeap.length); buffer[0] = valuesPtr; buffer[1] = valuesCount; buffer[2] = 0; return buffer; }; /** * Convert analysis configuration to native array. * * @param buffer Array to put values in. * @param bufferPtr Buffer's top address. * @param blendRatio blendRatio. * @param smoothing smoothing. * @param audioLevelEffectRatio Sound level influence. * @returns buffer. */ ToPointer.ConvertAnalysisConfigToFloat32Array = function (buffer, bufferPtr, blendRatio, smoothing, audioLevelEffectRatio) { var bufferDataHeap = new Uint8Array(_em.HEAPU8.buffer, bufferPtr, buffer.byteLength); bufferDataHeap.set(new Uint8Array(buffer.buffer)); buffer = new Float32Array(bufferDataHeap.buffer, bufferDataHeap.byteOffset, bufferDataHeap.length); buffer[0] = blendRatio; buffer[1] = smoothing; buffer[2] = audioLevelEffectRatio; return buffer; }; /** * Retrieve to calculation results from memory. * * @param valuesPtr Top address of the array containing the calculation results. * @param valuesCount Cubism parameter count. * @returns The array of the calculation results. */ ToPointer.GetValuesFromAnalysisResult = function (valuesPtr, valuesCount) { var values = new Array(valuesCount); for (var index = 0; index < valuesCount; index++) { values[index] = _em.getValue(valuesPtr + (index * 4), 'float'); } return values; }; /** * Retrieve to processing sample count from memory. * * @param ptr Processed sample count pointer. * @returns Processed sample count. */ ToPointer.GetProcessedSampleCountFromAnalysisResult = function (ptr) { var processedSampleCount = _em.getValue(ptr, 'i32'); return processedSampleCount; }; /** * Writes allocator functions to memory. * * @param allocator Allocator function. * @returns pointer. */ ToPointer.AllocatorToPtr = function (allocator) { // Wrap function to pointer. var pointer = _em.addFunction(allocator, 'ii'); return pointer; }; /** * Writes allocator functions to memory. * * @param deallocator Deallocator function. * @returns pointer. */ ToPointer.DeallocatorToPtr = function (deallocator) { // Wrap function to pointer. var pointer = _em.addFunction(deallocator, 'vi'); return pointer; }; return ToPointer; }()); Live2DCubismMotionSyncCore.ToPointer = ToPointer; /** Cubism version. */ var CubismMotionSyncEngine = /** @class */ (function () { function CubismMotionSyncEngine() { } /** * Queries the version of Engine. * * @return Engine version. */ CubismMotionSyncEngine.csmMotionSyncGetEngineVersion = function () { return _csmmotionsync.getEngineVersion(); }; /** * Queries the name of Engine. * * @return Engine name. */ CubismMotionSyncEngine.csmMotionSyncGetEngineName = function () { return _csmmotionsync.getEngineName(); }; /** * Initializes the Engine. * * @return \`1\` if Engine is available. */ CubismMotionSyncEngine.csmMotionSyncInitializeEngine = function (engineConfiguration) { return _csmmotionsync.initializeEngine(engineConfiguration); }; /** * Disposes the Engine. */ CubismMotionSyncEngine.csmMotionSyncDisposeEngine = function () { _csmmotionsync.disposeEngine(); }; return CubismMotionSyncEngine; }()); Live2DCubismMotionSyncCore.CubismMotionSyncEngine = CubismMotionSyncEngine; /** Cubism logging. */ var Logging = /** @class */ (function () { function Logging() { } /** * Sets log handler. * * @param handler Handler to use. */ Logging.csmMotionSyncSetLogFunction = function (handler) { // Cache log handler. Logging.logFunction = handler; // Wrap function to pointer. var pointer = _em.addFunction(Logging.wrapLogFunction, 'vi'); // Sets log handler. _csmmotionsync.setLogFunction(pointer); }; /** * Queries log handler. * * @return Log handler. */ Logging.csmMotionSyncGetLogFunction = function () { return Logging.logFunction; }; /** * Wrap log function. * * @param messagePtr number * * @return string */ Logging.wrapLogFunction = function (messagePtr) { // Pointer to string. var messageStr = _em.UTF8ToString(messagePtr); // Run log function. Logging.logFunction(messageStr); }; return Logging; }()); Live2DCubismMotionSyncCore.Logging = Logging; /** Cubism MotionSync Context */ var Context = /** @class */ (function () { /** * Initializes instance. */ function Context() { } /** Makes the context of Analysis. */ Context.prototype.csmMotionSyncCreate = function (contextConfiguration, mappingInformations, mappingInformationCount) { this._contextHandler = _csmmotionsync.createContext(contextConfiguration, mappingInformations, mappingInformationCount); }; /** Resets the context of Analysis for reusing. */ Context.prototype.csmMotionSyncClear = function () { _csmmotionsync.clearContext(this._contextHandler); }; /** Resets the context of Analysis for reusing. */ Context.prototype.csmMotionSyncDelete = function () { _csmmotionsync.deleteContext(this._contextHandler); this._contextHandler = 0; }; /** Gets the number of samples to analyze at a time. */ Context.prototype.csmMotionSyncGetRequireSampleCount = function () { return _csmmotionsync.getRequireSampleCount(this._contextHandler); }; /** Analyzes the samples for conversion to the CubismParameter. */ Context.prototype.csmMotionSyncAnalyze = function (samples, sampleCount, analysisResult, analysisConfiguration) { return _csmmotionsync.analyze(this._contextHandler, samples, sampleCount, analysisResult, analysisConfiguration); }; return Context; }()); Live2DCubismMotionSyncCore.Context = Context; /** Emscripten Cubism MotionSync Core module. */ var _em_module = (() => { var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined; return ( function(_em_module) { _em_module = _em_module || {}; var d;d||(d=typeof _em_module !== 'undefined' ? _em_module : {});var n,t;d.ready=new Promise(function(a,c){n=a;t=c});var u=Object.assign({},d),v="";"undefined"!=typeof document&&document.currentScript&&(v=document.currentScript.src);_scriptDir&&(v=_scriptDir);0!==v.indexOf("blob:")?v=v.substr(0,v.replace(/[?#].*/,"").lastIndexOf("/")+1):v="";var aa=d.print||console.log.bind(console),w=d.printErr||console.warn.bind(console);Object.assign(d,u);u=null;var x=[],y,z;d.wasmBinary&&(z=d.wasmBinary); var noExitRuntime=d.noExitRuntime||!0;function ba(){this.buffer=new ArrayBuffer(A/65536*65536)}function ca(){}function da(){this.exports=( // EMSCRIPTEN_START_ASM function instantiate(la){function e(f){f.grow=function(b){var a=this.length;this.length=this.length+b;return a};f.set=function(c,d){this[c]=d};f.get=function(c){return this[c]};return f}var g;var h=new Uint8Array(123);for(var c=25;c>=0;--c){h[48+c]=52+c;h[65+c]=c;h[97+c]=26+c}h[43]=62;h[47]=63;function n(o,p,q){var i,j,c=0,k=p,l=q.length,m=p+(l*3>>2)-(q[l-2]=="=")-(q[l-1]=="=");for(;c<l;c+=4){i=h[q.charCodeAt(c+1)];j=h[q.charCodeAt(c+2)];o[k++]=h[q.charCodeAt(c)]<<2|i>>4;if(k<m)o[k++]=i<<4|j>>2;if(k<m)o[k++]=j<<6|h[q.charCodeAt(c+3)]}}function r(s){n(g,1024,"TGl2ZTJEQ3ViaXNtTW90aW9uU3luY0VuZ2luZV9DUkkAMS40LjEAJXMKADxDYW4gbm90IGZpbmQgZXJyb3IgbWVzc2FnZT4AICAAW0NTTSBNT1RJT05TWU5DXSBbV11jc21Nb3Rpb25TeW5jX0luaXRpYWxpemVFbmdpbmU6IEVuZ2luZSBpcyBhbHJlYWR5IGluaXRpYWxpemVkLgoARTA1MDYyMTAxRQAlMDJYIABbQ1NNIE1PVElPTlNZTkNdIFtFXWNzbU1vdGlvblN5bmNfRGlzcG9zZUVuZ2luZTogRW5naW5lIGlzIG5vdCBpbml0aWFsaXplZC4KAEUwNTA2MjEwMkUAW0NTTSBNT1RJT05TWU5DXSBbRV1jc21Nb3Rpb25TeW5jX0NyZWF0ZUNvbnRleHQ6IEVuZ2luZSBpcyBub3QgaW5pdGlhbGl6ZWQuCgBUaGlzIGlzIGEgZXJyb3IgbWVzc2FnZS4KVGhlIGRldGFpbCBvZiBlcnJvciBtZXNzZ2Ugc2hvdWxkIGJlIHdpdHRlbiBoZWFyZS4KRXJyb3IgUGFyYW1ldGVyIDAgaXMgLi4uClRyb3VibGUgc2hvb3RpbmcgbXVzdCBiZSBoZXJlCgBbQ1NNIE1PVElPTlNZTkNdIFtFXWNzbU1vdGlvblN5bmNfQ3JlYXRlQ29udGV4dDogSW52YWxpZCBgbWFwcGluZ0luZm9ybWF0aW9uc2AgYWRkcmVzcyBvciBgbWFwcGluZ0luZm9ybWF0aW9uQ291bnRgIGluZGljYXRlcyAwLgoARTA1MDYyMTIwRQBbQ1NNIE1PVElPTlNZTkNdIFtFXWNzbU1vdGlvblN5bmNfQ3JlYXRlQ29udGV4dDogYG1hcHBpbmdJbmZvcm1hdGlvbnNbJWRdLkF1ZGlvUGFyYW1ldGVySWRgIG9yIGAuTW9kZWxQYXJhbWV0ZXJWYWx1ZXNgIGlzIGludmFsaWQuCgBbQ1NNIE1PVElPTlNZTkNdIFtFXWNzbU1vdGlvblN5bmNfQ3JlYXRlQ29udGV4dDogSW52YWxpZCBgY29udGV4dENvbmZpZ3VyYXRpb25gIGFkZHJlc3MuCgBDYW4ndCBvcGVuICclcycKAEUwNTA2MjEyMUUAW0NTTSBNT1RJT05TWU5DXSBbRV1jc21Nb3Rpb25TeW5jX0NyZWF0ZUNvbnRleHQ6IE1lbW9yeSBhbGxvY2F0aW9uIHdhcyBmYWlsZWQ6IENvbnRleHQK");n(g,1984,"Mg4AAIUOAAD1DgAAYg8AAM8PAAA8EAAAW0NTTSBNT1RJT05TWU5DXSBbRV1jc21Nb3Rpb25TeW5jX0NyZWF0ZUNvbnRleHQ6IE1pc3NpbmcgdmlzZW1lIHNldHRpbmc6ICVzLgoAJWQgaXMgZXhlZWRlZCAuCgBFMDUwNjMwMDFCAFtDU00gTU9USU9OU1lOQ10gW0VdY3NtTW90aW9uU3luY19DcmVhdGVDb250ZXh0OiBJbnZhbGlkIGF1ZGlvIHNvdXJjZSBmb3JtYXQuCgBbQ1NNIE1PVElPTlNZTkNdIFtFXWNzbU1vdGlvblN5bmNfQ3JlYXRlQ29udGV4dDogTWVtb3J5IGFsbG9jYXRpb24gd2FzIGZhaWxlZDogUHJldmlvdXMgRnJhbWUgRGF0YQoAQ2FuJ3QgY3JlYXRlIFN0cmVhbSBKb2ludC4KQmVjYXVzZSBvZiB0aGUgc2l6ZSBvZiBoZWFwIGFyZWEgaXMgc2hvcnQuClBsZWFzZSBpbmNyZWFzZSBoZWFwIGFyZWEgc2l6ZSAoaGVhcD0lMDh4KQoARTA1MDYzMDAyQgBbQ1NNIE1PVElPTlNZTkNdIFtFXWNzbU1vdGlvblN5bmNfQ2xlYXJDb250ZXh0OiBFbmdpbmUgaXMgbm90IGluaXRpYWxpemVkIG9yIEludmFsaWQgY29udGV4dC4KAEUwNTA2MzAwMUgAW0NTTSBNT1RJT05TWU5DXSBbRV1jc21Nb3Rpb25TeW5jX0RlbGV0ZUNvbnRleHQ6IEVuZ2luZSBpcyBub3QgaW5pdGlhbGl6ZWQgb3IgSW52YWxpZCBjb250ZXh0LgoAW0NTTSBNT1RJT05TWU5DXSBbRV1jc21Nb3Rpb25TeW5jX0FuYWx5emU6IEVuZ2luZSBpcyBub3QgaW5pdGlhbGl6ZWQuCgBTaXplIG9mIENyaUhlYXBPYmogc3RydWN0dXJlIGlzIG5vdCBhIG11bHRpcGxlIG9mIDE2LiAoJWRieXRlKQoARTA1MDYzMDAySABbQ1NNIE1PVElPTlNZTkNdIFtFXWNzbU1vdGlvblN5bmNfQW5hbHl6ZTogSW52YWxpZCBhcmd1bWVudC4gTWFrZSBzdXJlIGBjb250ZXh0YCwgYGFuYWx5c2lzQ29uZmlndXJhdGlvbmAsIGBhbmFseXNpc1Jlc3VsdGAsIGBzYW1wbGVzYCwgYHNhbXBsZUNvdW50YC4KAFtDU00gTU9USU9OU1lOQ10gW0VdY3NtTW90aW9uU3luY19BbmFseXplOiBgc2FtcGxlQ291bnRgIGxlc3MgdGhhbiBgY3NtTW90aW9uU3luY19HZXRSZXF1aXJlU2FtcGxlQ291bnQoKWAuCgBGdW5jdGlvbiBwb2ludGVyIG9mIEFsbG9jRml4IGlzIE5VTEwuCgBFMDUwNjMwMDNIAFtDU00gTU9USU9OU1lOQ10gW0VdY3NtTW90aW9uU3luY19BbmFseXplOiBJbnZhbGlkIGBTbW9vdGhpbmdgLgoAW0NTTSBNT1RJT05TWU5DXSBbRV1jc21Nb3Rpb25TeW5jX0FuYWx5emU6IEludmFsaWQgYEJsZW5kUmF0aW9gLgoARnVuY3Rpb24gcG9pbnRlciBvZiBBbGxvY1RlbXBvcmFyeSBpcyBOVUxMLgoARTA1MDYzMDA0SABbQ1NNIE1PVElPTlNZTkNdIFtFXWNzbU1vdGlvblN5bmNfQW5hbHl6ZTogSW52YWxpZCBgQXVkaW9MZXZlbEVmZmVjdFJhdGlvYC4KAFtDU00gTU9USU9OU1lOQ10gW0VdY3NtTW90aW9uU3luY19BbmFseXplOiBJbnZhbGlkIGludGVybmFsIG9wZXJhdGlvbi4KAEZ1bmN0aW9uIHBvaW50ZXIgb2YgQWxsb2NEeW5hbWljIGlzIE5VTEwuCgBFMDUwNjMwMDVIAFtDU00gTU9USU9OU1lOQ10gW0VdY3NtTW90aW9uU3luY19BbmFseXplOiBDYW5ub3Qgc3RvcmUgcGFyYW1ldGVyIHZhbHVlcy4KAExpdmUyRCBDdWJpc20gU0RLIE1vdGlvblN5bmMgQ29yZSBbQ1JJXSBWZXJzaW9uICVkLiVkLiVkAEZ1bmN0aW9uIHBvaW50ZXIgb2YgRnJlZSBpcyBOVUxMLgoAU2lsZW5jZQBUaGUgbnVtYmVyIG9mIGF1ZGlvIGNoYW5uZWwoJWQpIGlzIGRpZmZlcmVudCB0byBBRFggZGVjb2RlciBjaGFubmVscyglZCkuCgBBAFcyMDE2MDUwOTk4OkVycm9yIGNhbGxiYWNrIGZ1bmN0aW9uIHdhcyBvdmVyd3JpdHRlbi4gVGhpcyBmdW5jdGlvbiBkb2Vzbid0IHJlY2VpdmUgZXJyb3IgaW5mb3JtYXRpb24gYW55bW9yZS4ASQBFMjAyMzA1MTAyODpDcmlMaXBzTW91dGhNb3JwaFRhcmdldEJsZW5kQW1vdW50SmFwYW5lc2UudSBpcyBhIG5lZ2F0aXZlIHZhbHVlLiBTZXQgYSB2YWx1ZSBvZiAwLjBmIG9yIG1vcmUuAFUARTIwMjMwNTEwMjk6Q3JpTGlwc01vdXRoTW9ycGhUYXJnZXRCbGVuZEFtb3VudEphcGFuZXNlLmUgaXMgYSBuZWdhdGl2ZSB2YWx1ZS4gU2V0IGEgdmFsdWUgb2YgMC4wZiBvciBtb3JlLgBFAEUyMDIzMDUxMDMwOkNyaUxpcHNNb3V0aE1vcnBoVGFyZ2V0QmxlbmRBbW91bnRKYXBhbmVzZS5vIGlzIGEgbmVnYXRpdmUgdmFsdWUuIFNldCBhIHZhbHVlIG9mIDAuMGYgb3IgbW9yZS4ATwBFMjAxOTA4MzAwMAAAAAAAAAAKQ1JJIEJhc2UvRW1zY3JpcHRlbiBWZXIuMi41My41IEJ1aWxkOlNlcCAgNiAyMDIzIDA4OjQ3OjUyCgBBcHBlbmQ6IENsYW5nMTUuMC4wIGVtc2RrLTMuMDEuMDgKAFcyMDE2MDUwOTk5Ok92ZXJ3cml0ZXMgZXhpc3RpbmcgZXJyb3IgY2FsbGJhY2sgZnVuY3Rpb24uADo=");n(g,4340,"PxEAAP////9KEQAA/v///14RAAD9////cREAAPz///+MEQAA+////8IRAAD6////3BE=");n(g,4400,"VW5rbm93biBFcnJvci4APE5vIEVycm9yPgBTb21lIGtpbmQgb2YgZXJyb3IuAEludmFsaWQgcGFyYW1ldGVyLgBGYWlsZWQgdG8gYWxsb2NhdGUgbWVtb3J5LgBUaHJlYWQtdW5zYWZlIGZ1bmN0aW9uIGhhcyBiZWVuIGV4ZWN1dGVkIGluIHBhcmFsbGVsLgBGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQuAEluaXRpYWxpemUgdGhlIGxpYnJhcnkgYmVmb3JlIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi4ARTIwMDkwNzI0MDI6Q2FuIG5vdCBjaGFuZ2UgYWxsb2NhdG9yLiBBbGxvY2F0ZWQgbWVtb3J5IGlzIHN0aWxsIGFjdGl2ZS4ARTIwMDkwNzI0MDQ6Q2FuIG5vdCBjaGFuZ2UgYWxsb2NhdG9yLiBBbGxvY2F0ZWQgbWVtb3J5IGlzIHN0aWxsIGFjdGl2ZS4ARTIwMTAwNTI2NjA6SW52YWxpZCBhbGxvY2F0aW9uIHNpemUuAEUyMDA5MDgxOTAxOk1lbW9yeSBhbGxvY2F0b3IgaXMgbm90IHJlZ2lzdGVyZWQuAEUyMDA5MDgxOTAyOk1lbW9yeSBhbGxvY2F0b3IgaXMgbm90IHJlZ2lzdGVyZWQuAEUyMDE4MDcxMjAwAEUyMDE4MDQxMDAxAEUyMDE4MDcxMjAxAEUyMDIwMDcyNzIzAEUyMDE4MDQxMTAxAEUyMDE4MDQxMDAyAEUyMDE5MDgyNjU1AEUyMDE5MTAzMDMxAEUyMDE5MDgyNjU2AEUyMDE5MDgyNjU3AEUyMDE5MDgyNjU4AEUyMDE5MDgyNzI2AEUyMDE5MDgyNjU5AEUyMDE5MDgyNjAwAEUyMDE5MTAzMDM3AEUyMDE5MTAzMDE2AEUyMDE5MTExMTIyOlNlY29uZGFyeSBibGVuZCB0YXJnZXQgc3VwcHJlc3Npb24gcmF0ZSBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMS4ARTIwMTkxMTExMjM6U21vb3RoaW5nIHdpbmRvdyBsZW5ndGggbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIG1heGltdW0gc21vb3RoaW5nIHdpbmRvdyBsZW5ndGguAEUyMDE5MTExMTI0OlJlbGVhc2UgdGltZSBtdXN0IGJlIGJldHdlZW4gMCBhbmQgbWF4aW11bSBzbW9vdGhpbmcgd2luZG93IGxlbmd0aC4ARTIwMTkxMTExMjY6SG9sZCB0aW1lIG11c3QgYmUgZXF1YWwgdG8gb3IgZ3JlYXRlciB0aGFuIDAu");n(g,5408,"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");n(g,17088,"BgSLPhAF5b5XQpK+dCkBP4Bg9D7y+q8+cGAMv0r1NT+YElI+8k4hvkfXAr7teJi+L/qKPjxNJD6tc6C9iX4QvrDscT8h3Ck+D+tUvs00gb7c9vW9bH+JPmI8qz6/RBG/ncktv77UbT5AtfU+oxU7v00XUb3iSlA+QOCtPYroZT6W0Km8SyDtPjH0o77aBaW+ku4rP49Tkb2Qk00/A0klPrHgjT8r5II/2FGUPxAu1z+Re8s/d/5oPy2Tnj9M120/gX45P8BjsD+mWYM/W/58P2zpiz+YXgBAejVaP0oZgz+fcnc/m6RnP11QgD8IIYE/rU7NP5ImkD+yxX4/yUW+Pwxsmz9m/Jo/bV2dPzHjoz/ZLYs/qzmTP9tKVj80l5s/yPM2Pwieqj97RMg/xjHfP6jRhT/VoJ8/zkyMPxDRjD/eXBPBHAmSwHSRzUAt9gHBgpaewL+NEcFlUkU+zv7yQDMZ7EC2BeVAQwHSQFXHJcGIU8bA67DkwBlBEUCP5Q2/iwqjQI5Tzr9KJ6PAJGauwP2sr8AFFX7Al+wDQdD6FUEEwAvBD0qjQKv0O8B7WkvAvNumwJZ7KEDat2G/M4ymQEeU1T4YS5tAEXWKvypWAD8wz7jAyV+Uv7mjmcALyX1ANxehQmFRJ0Id32dCPS+YQq14JEOAYlZCPGrTQtV+LkKO4CBCbA2mQnGGr0JV+lZCHcRcQp/02kKwO/JBiokQQrffIUIstA5CNJ9fQuvCiULGnL5C7I8mQmkqLELTusFCtcgZQswVyULiSYpCXYsuQptiEUKVcoVC6DIBQvljnEKlsgNCZIikQt4zxkLG3BNDtdSaQrhtpEJq7UhCm9FfQlOybr/fHaq+R0C6PwVYC75grr8+RkgFv/3Scj1PUl6+hrsXv7QJwr4ZqBg+4iCDPwnbRj+4cTM/mxGhvhfeIj9Zxyq+7nlzPcJxgL73yNi+CrjQO4PflL5iuSw/2NNPu5OaKD9diek+g+iivpHJwz4cEKc/3w2ZvtDPZr/Appi+5MI4Pxf8/T7EGxG/9MC9vsf8Or/qxgW/m8DqvrpDR766Gaa9UA7nvRpciD+MOzy/UYFUPjKFXL+Hydo+N3kjv29vhj43LyI/JXzsvmVXTz7NBhE+lsrmPqpJnL9/YJc+78tuPwhspLwHkGu9tcEDPyeLHL/DEIG+YO5CPn4i2r6dN0e9vwFfvjRpGT51isi9oiATvxdQpz8LO4i+RtLQvot1xb7mO2Y/rJ+qvzgRRT/nayY/+qxKPlBiBT8BDA4/883bvug6bD/76xw/emqoPurGn7/O3zQ+D67UPvmGQL40l1Q/3H7hvS+NWL71las+KwpKvm2h876f5U8/GJdGPoTVdb+cOrI9Fi8cv+B0WL8Su3K9qDrYPoeORb5t5tS9aUB3P0LMlr9qRmw/7srzPV8Xtb20gtm+3EgyvpBYJb94ijs/KeOjvpAS2L1cmWM/1+0Wv5HmwDyPAm+/qt/8PtMdGL50ex0/x1JLP5hmk76z1cW+x8g9vwAcgr4rp6a+HdWRvlDnmr6gSE4/olrPPiB0OTyLBSq/Ib/rvueHnrymUw4+u6rDvx+6yD66o7S/vIe5v4YJTz/n+Zi+pExEPqVKFz4cNKW+Y5Aev0bnT7/kCti+x8WtvHcvfD/ZL60+zX4MvtZhb7+lcBA//hYiP8zOhT7uoim/4a0LvnrSCL3T79C9j0uFPTfbJL4XKY4/6RSpPslEJb92ZhQ/i7FCPxykFD/BHSm+OWFgPnXwIT+evA0/UTtIP08eAb90kLw+WbaAvHzVqT4EBta+gW7yvmlxkT7ukD+/DwJ0v8uPeL48DQq/hqcSvrkRST1KIZU+s/NHPHzVS78ZJS+/44Ivv0nX0T5jKiA+ugoFPyJuLb/NCua+jZqQPxo1ZT5+8T6/SI6MPuS+jr5IJTo/p5dIO1+vuL7+FKI+brKXPvjbEz+NSWk/yn2HPw6O5T5x5LE+fwSBvsa9J77y4ow+ZK1nvdmc9D6WUGC+UDqnP1U4i77w/3E+Tk5wP++YDT5r88g++XkHv5LGQj+hRy6+oq4LPShEc74Wr/s+AJqsPrOkmD72KUy//7XIPu4Xkz8jiB2+T4CnvamfFL+aMri+05mPvnwgjr777Yw/oRjNPjf2W7/ZiP6+r7MYv+tPib+qdwI+plylPVw+I76BydG+igvSPghQF7+exNg+TNMRPcB2Gj9/+5i+NhDSPk/2FT1BRjQ/yKRTP8buxz2NRjC/GUN7PteBnz+gXDw/T3jdPVVqSL5vHna/Bi0kP7nbTD8gLrQ+dRp0Pyjd0b6LLH6+Yl/TPoulXD7yTe4+AJwjv0oyFD/TRji/ug57PyExaT6EvYq+HFQkvtlIIb/3UUY/AOU/vsx4Fb7nsBo/nT+HPqQrlz6zD5M+WbQ8vzqQdT4g3EM/1R9TPpXdwj6iaWM/UWgQP70gJr6Mpmq/xOaKvpFTpj0Pmxw/d9Sav7kBfr8B6QY/gjwMPhPNjL6lEP49UnRoPuvmST9Gmg8/kAwuPmpaML8X6si+i1NFPwV+aj87Sus8xSaKPbqeMz4+o4Q+7wGpvwGfVT5EJPc9Z7dJv9JHb75EymC+184kP3+QiT5NrPa+oGgovt+RuL+akUG/4nesPT0KRz80wu2+4NIBvf8Pvj7GQtS+0n0RP+oJ8j6Rv22+KfHfPo8zhr6t4hk/dzLAPO6uL7/gavo+eC0MP+1/7r6UqaG+ezX0veCAQr/vtCQ+Bi5BvrNdp7+k1vI+kSVCvwVHCL9FruK+AlvfvQ3DNz7UHIw/VcTHvYzED7+tCmg+vqeYvrfBgT4b3H0+DjsLP2ZqLr6OrXS+amYkPxVnu7+t+Rs/245aP3j9Fz8rGmE/++hZv1RvXT4758e97xRZvwigEz+pqV+/CWSCPuWYEb73EtG+sFlxvu/Yar/fgI0+4S1ZP6YQ/r6nGfa+InsMvWh2tr42uT48wLMhPjcHgD+yRxY/TGA3v2Nin76fU/0+EB4CvaDVhzxRFSm/aMGzvpCtIj91v0C/gFrLPYqlXD+mONU+FWQgvUOVPT/qndK/1nxYviDlzr0uQZw+qyl0vy7aCL5CPV89LqatvoPOu72VyI2+1BGHPjZYiz4ISdA+Mk86PxWgK79ILJ2+2+/av942cb5kLE4+DzORPJjxfD7BGKM+rgONv9HI4T4VuHi/xLAFv6T+Ez8rehu/tJwsvpJ75T4sUh4+442avz91Vb+XujK/BiwGP5/05DwyUZc/9QjIvkXuKj7hUaQ+6vp0Putlmr6/VRY+wYc4v71hYT+cxA8/O6PRvhpFLz7ZFxy+e58QP1OVDz4jyPI+eviMP+abhz6PvaQ91BOmv3tM9r1m+IY/Gt4nP28XqD7W7bU9vpg/v96Dmj4NGxu/VUwYvlb5pL7O45K/E6ckPz/vcD590W0/6riOvwC+lT6crCc/0yJIPmAHt7637f6+jw61PcnrGT9NYoY/PpqTv0GTvb7iUEG+0CmVPhEjIr5sR+E7xecWPiwxOz9lyQQ/OBifvnnlBz7v0ea+FXHTvXFQjz5Ps/m+bYIKv0N9Br+Tkku/i+AMP1w8hL4Sbam+Ab9VvvFIW79BKxy/vHvPv1Hg6z1C++a+vEMRP4iswT1VoIM/aO8mvULseD/1kqW/Dq+8PLkwKj9oOjG+U1EYPnZe0j6KvPS9yURuv7zSYz8QEum+FEl3PXKGUL7Po4o+dyoBvoUvMr9vqwQ/rsHFP9BNDz9qv9g+LxPLvn6Mob2xJL29pvewPsQD874/XIQ/LhqpvTniQL9G2Jk+Q7L5PnnfgT7fQ48/28cLP6Z9Ar2OFSc/aIYDP67NQz5dIFC+neVnP4/GGb9u/ik/anVrPr3QWj9ZAqu9dAWlvUFpjT9wnOe+nJ0sOyUgqT52y60+AJxGvY65iD/NFnQ//Sk2v2pAQz3Y5Xg9e3xMP20laz7HrD8/WDymvrRUI7zeXja/zgiAPrwApj7Uv7i+0sglP4iYkL4sZkk/aviXv2zrAj4ba44/Ol+wPp1OFr8RNDG+orl3v/ZnHb8YxMK+ZfYiv/grPr+ITJC+/i9iP8Tmk79iO/O8LgV6vzJtab2Zvw2+rgEyPwCF+D1BNvc+WTXJvQJxH7/xsgA/S3mjvjlOc7+23Vo+sH2EP5ewB77xN/0+BnmFPj19jL4Nx4e/orCVP/lSUz/KUBQ/5F+ZvGTO9T45eJW+3y3vPnj7sr03LIa+anSzvIOm4b7/Xfc8FfMVP0Lrjb/pBQo/ZCS9vFJKgb+gCgW+7NJhPaAkDz8N31S9dkY4v9YYkD5boiK/+6MOvnsupj4U1F4/ouofvzGm+D7cbO++KHOoPuaHNz51QrA+hDslvlw2Sz+7MgC/1a+TvjaAhD/86i0+9l3/PUghvT69zpY/ZvX9vpcpgL8RIw6/EpGIviK0RT5PmY++GjzIPtPwCL71LgO/wWcyv9ppkD74p6G+dXOFPrffez+kMq6+bY3evdyNJ7/mYGk+9PkqvnIRmr9BDH4+k2xsP5Lwoj7Aqhi/rk9Iv7phJ79hO1M9Tv5Pv6aIMj++CJM+nGu/PRjFzz5wZ4K/2PaWPZmR6D6IV6q/6geav9Wlhj9OM7+8aAfTvxMWd74OuIS+3Vyhvh5TNz5WeQi/bHSLvVtnkL4LCmC+eZt1vhyN4b4pbTQ/zLviPuxyBTx7oKm+3OOMvwE/Rr+5dW6+0HztvunHOr5qFMm+yzY2vbH6g797JcS+yyO1PqjTND9Pkvy+Gf3lvsuJVT850569CokeP4INOT/Fbh0/c+bCP87djD6Fske96ehlvoacTj9gQ3+8UNruum7NCD9bO/89NRhEPUiGr786co6+g2WrPuyPO70bGxM+6g7XvkvqLb/nd+O9KkiUPk9sN76TKZa+XNnCvVO4mb5Jhak+LUOovhWvg70fOSu/zsoiP2izfz+JDAu+Oh9BPtYjFr/GVwY/lLs6viDSbj6KmQK/SiHDP8PAKr5MF4o/p3s1vhwpV7/aGwa++w/PPuiKMT+y3Ay+YsHWvpxlmz2v1Co6agkUPo4S8T6+Uz49I/Eiv+DKcr+IdRG9uflEv18zKj4xjTa+khfAvy1oEb9Pm7y+");n(g,21008,"nnbDvVtdTz/fBBA/18SCPq6AI78OTNE+Kbu9u26Fej85UZs/BKNyP+K9nz9f0wU/QjgTP9kSPz+0doM/58GPPodwjT9bnjO++V0qPoNRATzKNts/X1zyPwlLCEDen+g/fGUfQG8mBkABkAFAz7oLQKPqCEC3stY/63HcP4rRvT92J90/tPEcQHm83j9ITwBAyUESQJEwFkBukf8/CYTsPz9tCsBjKDtA8OoyP2mDEb97rO89SrDBv+u3LMA7UVs+MEDOPgJUCL/YfoA+Ei/MvrQRPECNhlTAyUhBv65rhj8PNI8/0dYGwGbuMj+UjYO/gfjbP12GzD+sCqtAjMcTQLs0a0DD2ChANnhkQDZyAEA0MgJA5F6+P4iK0j/xQOI/QPsCQFoVmkAV1QdA+eQrQAs7okDyb3lAD+dCQHVVA0CsRwE+FVJ+P1FSuL0IHJe+ILqtvw+nIb8+b/u9gHYJPlYkj79fM4E/4lHHP/m5cb/yOJS/nTwPPl+hoj5b3ee+8ZmYP65R0r/3muO9T3RCvr3bfb9XgeE/r1e4Pn7lAb9E0Ly/RqWfPW4omr/ZmAk/+HWov2AJJD90dJw+bqfsvgSiEL+8FIS/LmuwP0/HT70/Y9u/RR+GP0VCTL5+GWk/JSYcvxlZvr9B3Qc/kiy7Pl/ByT4xMXs/fEKbv8L4a789Um4/l532vnSlPD99pry/4QJOP1+hqL21PTq/QMiWv0UgHb6f7p4/b8ZaPKsipz4HRYY+KyMkP9i6bz4iECu/7CnTv9Gj3D9rMl2/a9uPvxu+A77HG8++fQ+WPsopmL1788S/t3u1P5Q0Pr+xOse/f5MyP4VN375Wf9I+XxeRviRvAcD3y8Q/Yjybve/Voj7yiZK/KAbjvxRnpz6Rp1w/NdEDvxJXZz+QKOc9nB9LvsA+2j7+Bb+/c+5sP3zvvD//tc++XRkxv1exvL6YEby9");n(g,21760,"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