]> git.djapps.eu Git - pkg/ggml/sources/whisper.cpp/commitdiff
ggml : sync (ggml-alloc, GPU, eps, etc.) (#1220)
authorGeorgi Gerganov <redacted>
Tue, 5 Sep 2023 10:54:40 +0000 (13:54 +0300)
committerGitHub <redacted>
Tue, 5 Sep 2023 10:54:40 +0000 (13:54 +0300)
* ggml : sync (ggml-alloc, GPU, eps, etc.)

* ggml : fix build

* wasm : fix build

17 files changed:
bindings/javascript/libwhisper.worker.js
bindings/javascript/whisper.js
examples/common.cpp
examples/common.h
examples/talk.wasm/gpt-2.cpp
examples/talk/gpt-2.cpp
ggml-alloc.c [new file with mode: 0644]
ggml-alloc.h [new file with mode: 0644]
ggml-cuda.cu
ggml-cuda.h
ggml-metal.h
ggml-metal.m
ggml-metal.metal
ggml-opencl.cpp
ggml.c
ggml.h
whisper.cpp

index ec4811ee7f879d3393681a9e201f62b6b852ffdb..db2083ad9edad527b81a79a633322a45e4e61dd2 100644 (file)
@@ -1 +1 @@
-"use strict";var Module={};var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";if(ENVIRONMENT_IS_NODE){var nodeWorkerThreads=require("worker_threads");var parentPort=nodeWorkerThreads.parentPort;parentPort.on("message",data=>onmessage({data:data}));var fs=require("fs");Object.assign(global,{self:global,require:require,Module:Module,location:{href:__filename},Worker:nodeWorkerThreads.Worker,importScripts:function(f){(0,eval)(fs.readFileSync(f,"utf8")+"//# sourceURL="+f)},postMessage:function(msg){parentPort.postMessage(msg)},performance:global.performance||{now:function(){return Date.now()}}})}var initializedJS=false;var pendingNotifiedProxyingQueues=[];function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(" ");if(ENVIRONMENT_IS_NODE){fs.writeSync(2,text+"\n");return}console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:text,threadId:Module["_pthread_self"]()})}var err=threadPrintErr;self.alert=threadAlert;Module["instantiateWasm"]=(info,receiveInstance)=>{var instance=new WebAssembly.Instance(Module["wasmModule"],info);receiveInstance(instance);Module["wasmModule"]=null;return instance.exports};self.onunhandledrejection=e=>{throw e.reason??e};self.onmessage=e=>{try{if(e.data.cmd==="load"){Module["wasmModule"]=e.data.wasmModule;for(const handler of e.data.handlers){Module[handler]=function(){postMessage({cmd:"callHandler",handler:handler,args:[...arguments]})}}Module["wasmMemory"]=e.data.wasmMemory;Module["buffer"]=Module["wasmMemory"].buffer;Module["ENVIRONMENT_IS_PTHREAD"]=true;if(typeof e.data.urlOrBlob=="string"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}whisper_factory(Module).then(function(instance){Module=instance})}else if(e.data.cmd==="run"){Module["__performance_now_clock_drift"]=performance.now()-e.data.time;Module["__emscripten_thread_init"](e.data.pthread_ptr,0,0,1);Module["establishStackSpace"]();Module["PThread"].receiveObjectTransfer(e.data);Module["PThread"].threadInitTLS();if(!initializedJS){Module["__embind_initialize_bindings"]();pendingNotifiedProxyingQueues.forEach(queue=>{Module["executeNotifiedProxyingQueue"](queue)});pendingNotifiedProxyingQueues=[];initializedJS=true}try{Module["invokeEntryPoint"](e.data.start_routine,e.data.arg)}catch(ex){if(ex!="unwind"){if(ex instanceof Module["ExitStatus"]){if(Module["keepRuntimeAlive"]()){}else{Module["__emscripten_thread_exit"](ex.status)}}else{throw ex}}}}else if(e.data.cmd==="cancel"){if(Module["_pthread_self"]()){Module["__emscripten_thread_exit"](-1)}}else if(e.data.target==="setimmediate"){}else if(e.data.cmd==="processProxyingQueue"){if(initializedJS){Module["executeNotifiedProxyingQueue"](e.data.queue)}else{pendingNotifiedProxyingQueues.push(e.data.queue)}}else if(e.data.cmd){err("worker.js received unknown command "+e.data.cmd);err(e.data)}}catch(ex){if(Module["__emscripten_thread_crashed"]){Module["__emscripten_thread_crashed"]()}throw ex}};
+"use strict";var Module={};var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";if(ENVIRONMENT_IS_NODE){var nodeWorkerThreads=require("worker_threads");var parentPort=nodeWorkerThreads.parentPort;parentPort.on("message",data=>onmessage({data:data}));var fs=require("fs");Object.assign(global,{self:global,require:require,Module:Module,location:{href:__filename},Worker:nodeWorkerThreads.Worker,importScripts:f=>(0,eval)(fs.readFileSync(f,"utf8")+"//# sourceURL="+f),postMessage:msg=>parentPort.postMessage(msg),performance:global.performance||{now:Date.now}})}var initializedJS=false;function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(" ");if(ENVIRONMENT_IS_NODE){fs.writeSync(2,text+"\n");return}console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:text,threadId:Module["_pthread_self"]()})}var err=threadPrintErr;self.alert=threadAlert;Module["instantiateWasm"]=(info,receiveInstance)=>{var module=Module["wasmModule"];Module["wasmModule"]=null;var instance=new WebAssembly.Instance(module,info);return receiveInstance(instance)};self.onunhandledrejection=e=>{throw e.reason||e};function handleMessage(e){try{if(e.data.cmd==="load"){let messageQueue=[];self.onmessage=e=>messageQueue.push(e);self.startWorker=instance=>{Module=instance;postMessage({"cmd":"loaded"});for(let msg of messageQueue){handleMessage(msg)}self.onmessage=handleMessage};Module["wasmModule"]=e.data.wasmModule;for(const handler of e.data.handlers){Module[handler]=(...args)=>{postMessage({cmd:"callHandler",handler:handler,args:args})}}Module["wasmMemory"]=e.data.wasmMemory;Module["buffer"]=Module["wasmMemory"].buffer;Module["ENVIRONMENT_IS_PTHREAD"]=true;if(typeof e.data.urlOrBlob=="string"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}whisper_factory(Module)}else if(e.data.cmd==="run"){Module["__emscripten_thread_init"](e.data.pthread_ptr,0,0,1);Module["__emscripten_thread_mailbox_await"](e.data.pthread_ptr);Module["establishStackSpace"]();Module["PThread"].receiveObjectTransfer(e.data);Module["PThread"].threadInitTLS();if(!initializedJS){Module["__embind_initialize_bindings"]();initializedJS=true}try{Module["invokeEntryPoint"](e.data.start_routine,e.data.arg)}catch(ex){if(ex!="unwind"){throw ex}}}else if(e.data.cmd==="cancel"){if(Module["_pthread_self"]()){Module["__emscripten_thread_exit"](-1)}}else if(e.data.target==="setimmediate"){}else if(e.data.cmd==="checkMailbox"){if(initializedJS){Module["checkMailbox"]()}}else if(e.data.cmd){err(`worker.js received unknown command ${e.data.cmd}`);err(e.data)}}catch(ex){if(Module["__emscripten_thread_crashed"]){Module["__emscripten_thread_crashed"]()}throw ex}}self.onmessage=handleMessage;
index 0a9bb7207e3bd49bbd573dc0c90484379dea7d8e..60ca4db91816500819fc1c277cfc3edacb4062fe 100644 (file)
@@ -3,19 +3,17 @@ var whisper_factory = (() => {
   var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;
   if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;
   return (
-function(whisper_factory) {
-  whisper_factory = whisper_factory || {};
+function(moduleArg = {}) {
 
-function GROWABLE_HEAP_I8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP8}function GROWABLE_HEAP_U8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU8}function GROWABLE_HEAP_I16(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP16}function GROWABLE_HEAP_U16(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU16}function GROWABLE_HEAP_I32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP32}function GROWABLE_HEAP_U32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU32}function GROWABLE_HEAP_F32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPF32}function GROWABLE_HEAP_F64(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPF64}var Module=typeof whisper_factory!="undefined"?whisper_factory:{};var readyPromiseResolve,readyPromiseReject;Module["ready"]=new Promise(function(resolve,reject){readyPromiseResolve=resolve;readyPromiseReject=reject});var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var ENVIRONMENT_IS_PTHREAD=Module["ENVIRONMENT_IS_PTHREAD"]||false;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err("exiting due to exception: "+toLog)}if(ENVIRONMENT_IS_NODE){var fs=require("fs");var nodePath=require("path");if(ENVIRONMENT_IS_WORKER){scriptDirectory=nodePath.dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=(filename,binary)=>{var ret=tryParseAsDataURI(filename);if(ret){return binary?ret:ret.toString()}filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror)=>{var ret=tryParseAsDataURI(filename);if(ret){onload(ret)}filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",function(reason){throw reason});quit_=(status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}logExceptionOnExit(toThrow);process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"};let nodeWorkerThreads;try{nodeWorkerThreads=require("worker_threads")}catch(e){console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?');throw e}global.Worker=nodeWorkerThreads.Worker}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}if(!ENVIRONMENT_IS_NODE){read_=url=>{try{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText}catch(err){var data=tryParseAsDataURI(url);if(data){return intArrayToString(data)}throw err}};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{try{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}catch(err){var data=tryParseAsDataURI(url);if(data){return data}throw err}}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}var data=tryParseAsDataURI(url);if(data){onload(data.buffer);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=title=>document.title=title}else{}if(ENVIRONMENT_IS_NODE){if(typeof performance=="undefined"){global.performance=require("perf_hooks").performance}}var defaultPrint=console.log.bind(console);var defaultPrintErr=console.warn.bind(console);if(ENVIRONMENT_IS_NODE){defaultPrint=str=>fs.writeSync(1,str+"\n");defaultPrintErr=str=>fs.writeSync(2,str+"\n")}var out=Module["print"]||defaultPrint;var err=Module["printErr"]||defaultPrintErr;Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var POINTER_SIZE=4;var Atomics_load=Atomics.load;var Atomics_store=Atomics.store;var Atomics_compareExchange=Atomics.compareExchange;var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var wasmModule;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(text)}}var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heapOrArray,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.buffer instanceof SharedArrayBuffer?heapOrArray.slice(idx,endPtr):heapOrArray.subarray(idx,endPtr))}var str="";while(idx<endPtr){var u0=heapOrArray[idx++];if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heapOrArray[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heapOrArray[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heapOrArray[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i<str.length;++i){var c=str.charCodeAt(i);if(c<=127){len++}else if(c<=2047){len+=2}else if(c>=55296&&c<=57343){len+=4;++i}else{len+=3}}return len}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;if(ENVIRONMENT_IS_PTHREAD){buffer=Module["buffer"]}function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;if(ENVIRONMENT_IS_PTHREAD){wasmMemory=Module["wasmMemory"];buffer=Module["buffer"]}else{if(Module["wasmMemory"]){wasmMemory=Module["wasmMemory"]}else{wasmMemory=new WebAssembly.Memory({"initial":INITIAL_MEMORY/65536,"maximum":2147483648/65536,"shared":true});if(!(wasmMemory.buffer instanceof SharedArrayBuffer)){err("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag");if(ENVIRONMENT_IS_NODE){err("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and/or recent version)")}throw Error("bad memory")}}}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function keepRuntimeAlive(){return noExitRuntime}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(ENVIRONMENT_IS_PTHREAD)return;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith("file://")}var wasmBinaryFile;wasmBinaryFile="data:application/octet-stream;base64,AGFzbQEAAAABhwVTYAF/AGABfwF/YAJ/fwBgA39/fwF/YAJ/fwF/YAN/f38AYAR/f39/AX9gBH9/f38AYAZ/f39/f38Bf2AAAGAFf39/f38Bf2AFf39/f38AYAZ/f39/f38AYAh/f39/f39/fwF/YAABf2AHf39/f39/fwF/YAd/f39/f39/AGABfQF9YAV/fn5+fgBgA39+fwF+YAp/f39/f39/f39/AGAFf39/f34Bf2AEf39/fwF+YAN/f38BfGAEf35+fwBgCn9/f39/f39/f38Bf2AIf39/f39/f38AYAJ8fAF8YAd/f39/f35+AX9gBn9/f39+fgF/YAV/f35/fwBgBH9/fn4Bf2ACf34AYAF8AX1gAnx/AXxgBX9/fn5+AX9gAXwBfGAMf39/f39/f39/f39/AX9gA39+fwF/YA9/f39/f39/f39/f39/f38AYAt/f39/f39/f39/fwF/YAZ/fH9/f38Bf2AJf39/f39/f39/AGAJf39/f39/f39/AX9gBX9/f398AX9gAAF8YAN/f34Bf2AAAX5gAn98AGACfX0BfWAEfn5+fgF/YAJ+fwF/YAN/f3wBf2ACf30Bf2AGf39+fn9/AX9gBH9/fn8Bf2ACfn4BfGAEf39+fgBgBn9/f39/fQBgA39/fwF9YAR/f39+AX5gA39/fgBgAn5+AX1gAn9/AX5gA35+fgF/YAh/f35+fn9/fwF/YAF/AX5gAX4Bf2AFf319fX0AYAt/f39/f39/f39/fwBgAX0AYAJ/fQBgAn19AGADf399AGADf319AGADfX19AGAEf399fwBgBH99fX0AYAR9fX19AGACfX8Bf2AFf39/fX0AYAV/f39/fQBgBH9/f38BfAKyAjIBYQFiAAkBYQFjAAUBYQFkAAEBYQFlAAUBYQFmAAABYQFnAAsBYQFoAC0BYQFpAAwBYQFqAAQBYQFrAAEBYQFsAAUBYQFtAAABYQFuAAABYQFvAAkBYQFwAAEBYQFxAAYBYQFyAAMBYQFzAAIBYQF0AAUBYQF1AAEBYQF2AAABYQF3ABcBYQF4AAoBYQF5ABABYQF6AA4BYQFBAA4BYQFCAAoBYQFDAAQBYQFEAAQBYQFFAAEBYQFGAAABYQFHAAYBYQFIAA4BYQFJAAYBYQFKAAABYQFLABcBYQFMAAMBYQFNAAUBYQFOAAYBYQFPAAMBYQFQAAYBYQFRAAkBYQFSAA4BYQFTAAIBYQFUAAsBYQFVAAIBYQFWAAcBYQFXAAQBYQFYAAYBYQFhAgOAAoCAAgOpBqcGAAUBAREEAgIEBwQKAQICBAQOAAkBAxIJLgEFCQEDAwMCAAEfAgIDAQEACRIFAQEKBwIYCwEBARECAwMDBQQSAS8DAQIFEREEAQIDAwUABCARASEhAgoKBgEwBgAAAA0NCAgBAAICAgEHAQUEAjEFAgQCMgICGCIEAQMCIwUIBQIFGQEZAQICBQEzBAUDGgUKBQQFBAMABgU0ACQ1BgIBAgICCwUFBQEBAgEBAhADEA8PAgYFAQI2NwIGAAADDgQAAAkRCQkJAgUJAgMDAiAJBAQBAgEADAcFDg4JBAQEAgIFBQsCARYFAQMBBAQDJQsDJQsFBwECEgECBwUEAQQBAAEmOAQjChEGCQEJCQMbAwEbCgYABQYHBwIJCQQCCAsMAwgDAwICBQcFAxAUAAcKOQABBwQJCQAEBAEBAQEBCQsaBQIFBAIEAAIAABYAAQIFAQELBQIEADoBAQoNDQoNDQEKDQEEAAQFAQACAQMDJxQDJxQBAQIoAgEBBQIoAgIMCwwMCwwMAQMQAxAFCAUDBQcXOxYFBggGFgYFBTwBBgEABAQDPT4/BxISGBJAAQEEBAIDAAMBAQUCAQIBAABBBANCAyYDCQQFBQcBHw8iBAQBAwQAAUMAJAAAAQJPGwoJBAQKAgAACAgDAgkKBgEGBQkJBwECCQgDAwMAAAZQUQEHKgAJAwEAAAAAAAAZKw8QCgsBAA4AAwEBAQEMDAAMCwsLBwcABwMDAAAAAgEAAAABBgABAAEAAQABAAEAAQABAAEAAQABBQABAAEAAQICBwICAgIBAQAABQEKBwEKDQ0ACgUKAwYDBAMEAAUKAwYDBAMEBgcGBgMAAAAFCQwMBQkIHAgcBw8PBQ8PBQ8PDQUICAgICAcNCAgICAgFCh0sFQUKFQoKCh0FLBUKFQUKCggICAAICAgICAgICAgICAgICAgDBwoDBwoBAwAAAQECAQceAwQEAQABAQABAwEBAwceAwABAgMCKRMOBAAAAA5SBAkBAwMTCQ4JAQ4CBQIBAgUCAgkCAQIAAgIAAQIAAQICAAECAAECAAECAAECAgQABQIAAAEJBAcBcAHJA8kDBjoLfwFBgNovC38BQQALfwFBAAt/AUEAC38BQQALfwFBAAt/AUEAC38BQQALfwFBAAt/AUEEC38BQQALB5ABGQFZALQEAVoBAAFfADEBJABFAmFhAKwGAmJhAJsGAmNhAKsGAmRhAKoGAmVhAKkGAmZhAMIEAmdhAKgGAmhhAKEGAmlhAJ8GAmphAJ4GAmthAJ0GAmxhAJYGAm1hAMUEAm5hAMQEAm9hAMMEAnBhAMsEAnFhAMEEAnJhAMAEAnNhAL8EAnRhAL4EAnVhAL0ECALXBgnVBgEAQQELyAOcBv4F5AWxBeIExwTiApMBtQb6BdkF0gXFA80FxgXABbwFwAO5BbYFsAWsBb4DpQWcBZMFvAOMBYkF3gWABfcE3gS3BLYEtQTcAtYG3QTVBtsE1QTOBMYEvAS7BLoEuQS4BNQGkwFD0wbSBpMBQ9EG0AZDtwaOAaUEjgH6AY4BzwaOAc4GzQbMBssGygbJBsgGjgHcBMcGxgbFBsQGwwbCBo4BwQbABr8Gvga9BrwGuwaOAboGngS5BrgGjgG2Bo4BtAawBsQCswayBsQCQ7EGxAKvBq4GQ6UEjgGtBpAEpwamBqUGpAaJBGeaBpkGmAaXBosElQaUBvoBkwaSBpEGZ2eQBo8GjgbwA40G8AOvAu4DjAaLBuUBiAaABoQGgwaCBoEGhwaGBoUGrQLkA/8F/QWoAvwF+wUx8QGqBZYD/AT6BPgE9QTzBPEE7wTtBOsE6QTnBOUE4wTgBJkDqwWpBZQDmwWaBZkFmAWXBZUDlgWVBZQFnAORBZAFjwWOBY0FZ4sFigWKA4gFhgWFBYQFggX/BIkDhwWKBokGgwWBBf4EkwFDQ6gFpwWmBaQFowWiBaEFoAWVA58FngWdBUOTA5MDwAGaApoCkgWaAkOQA48DwAFnZ44D1wFDkAOPA8ABZ2eOA9cBQ40DjAPAAWdniwPXAUONA4wDwAFnZ4sD1wGTAUP5BfgF9wWTAUP2BfUF9AVD8wXyBfEF8AXHA8cD7wXuBe0F7AXrBUPqBekF6AXnBb0DvQPmBeUF4wXiBeEFQ+AF3wXdBdwF2wXaBdgF1wVD1gXVBdQF0wXRBdAFzwXOBZMBQ7cDzAXLBcoFyQXIBccF/QT5BPQE6ATkBPAE7ASTAUO3A8UFxAXDBcIFwQW/BfsE9gTyBOYE4QTuBOoEmAKHA74FmAKHA70FQ9sB2wF6enqvA2eXAZcBQ9sB2wF6enqvA2eXAZcBQ9oB2gF6enquA2eXAZcBQ9oB2gF6enquA2eXAZcBQ7sFugVDuAW3BUO1BbQFQ7MFsgVDnQOvBfoBQ50DrgX6Ad8E5gL4Av4C8QHaBOYCkwFD8QHxAdgEQ9cEzATQBNYEQ80E0QTUBEPPBNIE0wRDyQRDyARDygSFAv4ChAL4AoUChQIMARgKg4gdpwa+DAEHfwJAIABFDQBB1L8rLQAAQQJxBEBB2L8rEF8NAQsgAEEIayIDIABBBGsoAgAiAUF4cSIAaiEFAkACQCABQQFxDQAgAUEDcUUNASADIAMoAgAiAWsiA0GovCsoAgBJDQEgACABaiEAAkACQEGsvCsoAgAgA0cEQCABQf8BTQRAIAMoAggiAiABQQN2IgRBA3RBwLwrakYaIAIgAygCDCIBRgRAQZi8K0GYvCsoAgBBfiAEd3E2AgAMBQsgAiABNgIMIAEgAjYCCAwECyADKAIYIQYgAyADKAIMIgFHBEAgAygCCCICIAE2AgwgASACNgIIDAMLIANBFGoiBCgCACICRQRAIAMoAhAiAkUNAiADQRBqIQQLA0AgBCEHIAIiAUEUaiIEKAIAIgINACABQRBqIQQgASgCECICDQALIAdBADYCAAwCCyAFKAIEIgFBA3FBA0cNAkGgvCsgADYCACAFIAFBfnE2AgQgAyAAQQFyNgIEIAUgADYCAAwDC0EAIQELIAZFDQACQCADKAIcIgJBAnRByL4raiIEKAIAIANGBEAgBCABNgIAIAENAUGcvCtBnLwrKAIAQX4gAndxNgIADAILIAZBEEEUIAYoAhAgA0YbaiABNgIAIAFFDQELIAEgBjYCGCADKAIQIgIEQCABIAI2AhAgAiABNgIYCyADKAIUIgJFDQAgASACNgIUIAIgATYCGAsgAyAFTw0AIAUoAgQiAUEBcUUNAAJAAkACQAJAIAFBAnFFBEBBsLwrKAIAIAVGBEBBsLwrIAM2AgBBpLwrQaS8KygCACAAaiIANgIAIAMgAEEBcjYCBCADQay8KygCAEcNBkGgvCtBADYCAEGsvCtBADYCAAwGC0GsvCsoAgAgBUYEQEGsvCsgAzYCAEGgvCtBoLwrKAIAIABqIgA2AgAgAyAAQQFyNgIEIAAgA2ogADYCAAwGCyABQXhxIABqIQAgAUH/AU0EQCAFKAIIIgIgAUEDdiIEQQN0QcC8K2pGGiACIAUoAgwiAUYEQEGYvCtBmLwrKAIAQX4gBHdxNgIADAULIAIgATYCDCABIAI2AggMBAsgBSgCGCEGIAUgBSgCDCIBRwRAIAUoAggiAkGovCsoAgBJGiACIAE2AgwgASACNgIIDAMLIAVBFGoiBCgCACICRQRAIAUoAhAiAkUNAiAFQRBqIQQLA0AgBCEHIAIiAUEUaiIEKAIAIgINACABQRBqIQQgASgCECICDQALIAdBADYCAAwCCyAFIAFBfnE2AgQgAyAAQQFyNgIEIAAgA2ogADYCAAwDC0EAIQELIAZFDQACQCAFKAIcIgJBAnRByL4raiIEKAIAIAVGBEAgBCABNgIAIAENAUGcvCtBnLwrKAIAQX4gAndxNgIADAILIAZBEEEUIAYoAhAgBUYbaiABNgIAIAFFDQELIAEgBjYCGCAFKAIQIgIEQCABIAI2AhAgAiABNgIYCyAFKAIUIgJFDQAgASACNgIUIAIgATYCGAsgAyAAQQFyNgIEIAAgA2ogADYCACADQay8KygCAEcNAEGgvCsgADYCAAwBCyAAQf8BTQRAIABBeHFBwLwraiEBAn9BmLwrKAIAIgJBASAAQQN2dCIAcUUEQEGYvCsgACACcjYCACABDAELIAEoAggLIQAgASADNgIIIAAgAzYCDCADIAE2AgwgAyAANgIIDAELQR8hAiAAQf///wdNBEAgAEEmIABBCHZnIgFrdkEBcSABQQF0a0E+aiECCyADIAI2AhwgA0IANwIQIAJBAnRByL4raiEBAkACQAJAQZy8KygCACIEQQEgAnQiB3FFBEBBnLwrIAQgB3I2AgAgASADNgIAIAMgATYCGAwBCyAAQRkgAkEBdmtBACACQR9HG3QhAiABKAIAIQEDQCABIgQoAgRBeHEgAEYNAiACQR12IQEgAkEBdCECIAQgAUEEcWoiBygCECIBDQALIAcgAzYCECADIAQ2AhgLIAMgAzYCDCADIAM2AggMAQsgBCgCCCIAIAM2AgwgBCADNgIIIANBADYCGCADIAQ2AgwgAyAANgIIC0G4vCtBuLwrKAIAQQFrIgBBfyAAGzYCAAtB1L8rLQAAQQJxRQ0AQdi/KxBeGgsLJAEBfyMAQRBrIgMkACADIAI2AgwgACABIAIQ+QMgA0EQaiQACzQBAX8gAEEBIAAbIQACQANAIAAQRSIBDQFB9Nkr/hACACIBBEAgAREJAAwBCwsQAAALIAELJQAgAC0AC0EHdgRAIAAgACgCACAAKAIIQf////8HcRDkAQsgAAuNAQIBfQJ/IAC8IgJBF3ZB/wFxIgNBlQFNBH0gA0H9AE0EQCAAQwAAAACUDwsCfSAAIACMIAJBAE4bIgBDAAAAS5JDAAAAy5IgAJMiAUMAAAA/XgRAIAAgAZJDAACAv5IMAQsgACABkiIAIAFDAAAAv19FDQAaIABDAACAP5ILIgAgAIwgAkEAThsFIAALCwwAIAAgASABEGUQawuEAgEEfwJAIAECfyAALQALQQd2BEAgACgCBAwBCyAALQALQf8AcQsiAksEQCMAQRBrIgQkACABIAJrIgIEQCAALQALQQd2BH8gACgCCEH/////B3FBAWsFQQoLIQMCfyAALQALQQd2BEAgACgCBAwBCyAALQALQf8AcQsiASACaiEFIAIgAyABa0sEQCAAIAMgBSADayABIAEQkwILIAECfyAALQALQQd2BEAgACgCAAwBCyAACyIDaiACQQAQkgIgACAFEJYBIARBADoADyADIAVqIAQtAA86AAALIARBEGokAAwBCyAAAn8gAC0AC0EHdgRAIAAoAgAMAQsgAAsgARCXAgsL5gMBCH8jAEEgayIEJAAgBEEIaiEFAkAgBEEVaiIHIgIgBEEgaiIGRg0AIAFBAE4NACACQS06AAAgAkEBaiECQQAgAWshAQsgBQJ/IAYiAyACayIIQQlMBEBBPSAIQSAgAUEBcmdrQdEJbEEMdSIJIAlBAnRB4IUDaigCACABTWpIDQEaCwJ/IAFBv4Q9TQRAIAFBj84ATQRAIAFB4wBNBEAgAUEJTQRAIAIgAUEwajoAACACQQFqDAQLIAIgARChAQwDCyABQecHTQRAIAIgAUHkAG4iA0EwajoAACACQQFqIAEgA0HkAGxrEKEBDAMLIAIgARCOAgwCCyABQZ+NBk0EQCACIAFBkM4AbiIDQTBqOgAAIAJBAWogASADQZDOAGxrEI4CDAILIAIgARCNAgwBCyABQf/B1y9NBEAgAUH/rOIETQRAIAIgAUHAhD1uIgNBMGo6AAAgAkEBaiABIANBwIQ9bGsQjQIMAgsgAiABEIwCDAELIAFB/5Pr3ANNBEAgAiABQYDC1y9uIgNBMGo6AAAgAkEBaiABIANBgMLXL2xrEIwCDAELIAIgAUGAwtcvbiIDEKEBIAEgA0GAwtcvbGsQjAILIQNBAAs2AgQgBSADNgIAIAAgByAEKAIIEMwDIAYkAAuCAgEEfwJ/IAEQZSECIwBBEGsiBSQAAn8gAC0AC0EHdgRAIAAoAgQMAQsgAC0AC0H/AHELIgRBAE8EQAJAIAIgAC0AC0EHdgR/IAAoAghB/////wdxQQFrBUEKCyIDIARrTQRAIAJFDQECfyAALQALQQd2BEAgACgCAAwBCyAACyIDIAQEfyACIANqIAMgBPwKAAAgASACQQAgAyAEaiABSxtBACABIANPG2oFIAELIAL8CgAAIAAgAiAEaiIBEJYBIAVBADoADyABIANqIAUtAA86AAAMAQsgACADIAIgBGogA2sgBEEAQQAgAiABEL4BCyAFQRBqJAAgAAwBCxD/AQALC/8CAQd/IAACfwJAAkAgASgCBCIERQRAIAFBBGoiBSECDAELIAIoAgAgAiACLQALIgXAQQBIIgYbIQggAigCBCAFIAYbIQYDQAJAAkACQAJAAkAgBCICKAIUIAItABsiBCAEwEEASCIHGyIEIAYgBCAGSSIJGyIFBEAgCCACKAIQIAJBEGogBxsiByAFEEYiCkUEQCAEIAZLDQIMAwsgCkEATg0CDAELIAQgBk0NAgsgAiEFIAIoAgAiBA0EDAULIAcgCCAFEEYiBA0BCyAJDQEMBAsgBEEATg0DCyACKAIEIgQNAAsgAkEEaiEFC0EgEDMiBCADKAIAIgMpAgA3AhAgBCADKAIINgIYIANCADcCACADQQA2AgggBCACNgIIIARCADcCACAEQQA2AhwgBSAENgIAIAQhAiABKAIAKAIAIgMEQCABIAM2AgAgBSgCACECCyABKAIEIAIQlQEgASABKAIIQQFqNgIIQQEMAQsgAiEEQQALOgAEIAAgBDYCAAszAQF/IABBGGohAiAAKAIgBH8gAigCAAVBAAshACACIAEpAgA3AgAgAiABKAIINgIIIAALhA4CCX8BeyMAQaABayIHJAAgACgCFCIMBH8gDCgCBCAMKAIAagVBAAshCAJAAkACQAJAAkAgBARAIAAoAgQiCSAIaiEFDAELIAAtAAlFBEAgAUECdCIFQfDmAGooAgAgAykDACAFQbDnAGo0AgB/p2whBgJAIAJBAkgNACACQQJGBH9BAQX9DAAAAAABAAAAAAAAAAAAAAAgBv0cACEOIAJBA2siBUEBdkEBaiIGQQNxIQoCQCAFQQZJBEBBACEFDAELIAZBfHEhDUEAIQUDQCAOIAMgBUEDdCIGQQhyav0AAwAgDv0NAAECAwgJCgsAAQIDAAECA/21ASADIAZBGHJq/QADACAO/Q0AAQIDCAkKCwABAgMAAQID/bUBIAMgBkEocmr9AAMAIA79DQABAgMICQoLAAECAwABAgP9tQEgAyAGQThyav0AAwAgDv0NAAECAwgJCgsAAQIDAAECA/21ASEOIAVBCGohBSALQQRqIgsgDUcNAAsLIAoEQANAIA4gAyAFQQN0QQhyav0AAwAgDv0NAAECAwgJCgsAAQIDAAECA/21ASEOIAVBAmohBSAJQQFqIgkgCkcNAAsLIA4gDiAO/Q0EBQYHAAECAwABAgMAAQID/bUB/RsAIQYgAkEBayIFIAVBfnFGDQEgBUEBcgshBQNAIAYgAyAFQQN0aigCAGwhBiAFQQFqIgUgAkcNAAsLIAZBA2pBfHEhBgsgACgCBCIJIAhqIQUgACgCICIKDQELIAhBFGoiCCAGQbgBaiIGaiIKIAAoAgAiC0sEQCAHIAs2AgggByAKNgIEIAdB6Bg2AgBBs90AIAcQnQFBACEFDAMLIAVCADcCDCAFQQA2AgggBSAGNgIEIAUgCDYCAAwBCyAAKAIcIAAoAhgiBCAGakkEQCAHQegYNgIgQd/PACAHQSBqEJ0BQQAhBQwCCyAIQcwBaiILIAAoAgAiDUsEQCAHIA02AjggByALNgI0IAdB6Bg2AjBBs90AIAdBMGoQnQFBACEFDAILIAVCADcCDCAFQrgBNwIEIAUgCEEUaiIINgIAIAAgACgCGCAGajYCGCAEIApqIQQLIAxBCGogAEEQaiAMGyAFNgIAIAAgBTYCFCAIIAlqIgVBA3ENASAHQYDoAP0ABAD9CwKQASAHQQA2AnggB0IANwNwIAdB8OcA/QAEAP0LAoABIARFBEBBACAFQbgBaiAALQAJGyEECyAH/QwAAAAAAAAAAAAAAAAAAAAA/QsDYCAH/QwAAAAAAAAAAAAAAAAAAAAA/QsDUCAHQgA3A0AgB0IANwBHIAUgAjYCCCAFQQA2AgQgBSABNgIAIAUgB/0AAnz9CwIMIAUgB/0AAowB/QsCHCAFIAcoApwBNgIsIAX9DAAAAAAAAAAAAAAAAAAAAAD9CwMwIAVCADcAPSAF/QwAAAAAAAAAAAAAAAAAAAAA/QsDSCAFIAcpA3A3A1ggBSAHKAJ4NgJgIAVCADcCZCAF/QwAAAAAAAAAAAAAAAAAAAAA/QsDcCAFIAQ2AoABIAUgB/0AA2D9CwKUASAFIAf9AANQ/QsChAEgBUEAOgCkASAFIAcpAEc3AKwBIAUgBykDQDcApQECQCACQQBMDQBBACEMQQAhBgJAIAJBCEkNACAIIAlqIANrQRBqQRBJDQAgAkECayIGQQF2QQFqIglBA3EhCkEAIQhBACEEIAZBBk8EQCAJQXxxIQtBACEJA0AgBSAEQQN0IgZqIAMgBmr9AAMA/QsDECAFIAZBEHIiDWogAyANav0AAwD9CwMQIAUgBkEgciINaiADIA1q/QADAP0LAxAgBSAGQTByIgZqIAMgBmr9AAMA/QsDECAEQQhqIQQgCUEEaiIJIAtHDQALCyACQX5xIQYgCgRAA0AgBSAEQQN0IglqIAMgCWr9AAMA/QsDECAEQQJqIQQgCEEBaiIIIApHDQALCyACIAZGDQELIAZBf3MgAmohBCACIAZrQQNxIggEQANAIAUgBkEDdCIJaiADIAlqKQMANwMQIAZBAWohBiAMQQFqIgwgCEcNAAsLIARBAk0NAANAIAUgBkEDdCIEaiADIARqKQMANwMQIAUgBEEIaiIIaiADIAhqKQMANwMQIAUgBEEQaiIIaiADIAhqKQMANwMQIAUgBEEYaiIEaiADIARqKQMANwMQIAZBBGoiBiACRw0ACwsgBSABQQJ0IgFB8OYAaigCACICNgIwIAUgAiAFKQMQIAFBsOcAajQCAH+nbCIBNgI0IAUgASAFKAIYbCIBNgI4IAUgASAFKAIgbDYCPCAAIAAoAgxBAWo2AgwLIAdBoAFqJAAgBQ8LIAdB1zU2AhggB0GWIDYCFCAHQZEkNgIQQbifAigCAEGI0gAgB0EQahAyEAAAC4wCAgN/An4CQCAAKQNwIgRCAFIgBCAAKQN4IAAoAgQiASAAKAIsIgJrrHwiBVdxRQRAIwBBEGsiAiQAQX8hAQJAIAAQsQINACAAIAJBD2pBASAAKAIgEQMAQQFHDQAgAi0ADyEBCyACQRBqJAAgASIDQQBODQEgACgCBCEBIAAoAiwhAgsgAEJ/NwNwIAAgATYCaCAAIAUgAiABa6x8NwN4QX8PCyAFQgF8IQUgACgCBCEBIAAoAgghAgJAIAApA3AiBFANACAEIAV9IgQgAiABa6xZDQAgASAEp2ohAgsgACACNgJoIAAgBSAAKAIsIgAgAWusfDcDeCAAIAFPBEAgAUEBayADOgAACyADC7oBAQN/AkAgARDQAyECIAIgAC0AC0EHdgR/IAAoAghB/////wdxQQFrBUEBCyIDTQRAAn8gAC0AC0EHdgRAIAAoAgAMAQsgAAsiAyABIAJBAnQiBPwKAAAjAEEQayIBJAAgACACEJYBIAFBADYCDCADIARqIAEoAgw2AgAgAUEQaiQADAELIAAgAyACIANrAn8gAC0AC0EHdgRAIAAoAgQMAQsgAC0AC0H/AHELIgBBACAAIAIgARDxAgsLCQAgACABEPMCCxAAIAAQ3gMgARDeA3NBAXMLEAAgABDfAyABEN8Dc0EBcwvmAgEDfwJAQYzCK/4SAABBAXENAEGMwisQU0UNAEGowCsQhwQjAEEgayIBJAACQAJAA0AgAUEIaiAAQQJ0aiAAQYoqQfXiAEEBIAB0Qf////8HcRsQ0wMiAjYCACACQX9GDQEgAEEBaiIAQQZHDQALQfisAiEAIAFBCGpB+KwCQRgQRkUNAUGQrQIhACABQQhqQZCtAkEYEEZFDQFBACEAQeDAKy0AAEUEQANAIABBAnRBsMAraiAAQfXiABDTAzYCACAAQQFqIgBBBkcNAAtB4MArQQE6AABByMArQbDAKygCADYCAAtBsMArIQAgAUEIakGwwCtBGBBGRQ0BQcjAKyEAIAFBCGpByMArQRgQRkUNAUEYEEUiAEUNACAAIAEpAwg3AgAgACABKQMYNwIQIAAgASkDEDcCCAwBC0EAIQALIAFBIGokAEGowCsQxgFBiMIrIAA2AgBBjMIrEFILQYjCKygCAAsGACAAEDELCQBBhRMQswQAC4AqAQl/QYC8KygCAEUEQBD2AwsCQEHUvystAABBAnEEQEHYvysQXw0BCwJAAkAgAEH0AU0EQEGYvCsoAgAiAUEQIABBC2pBeHEgAEELSRsiBkEDdiIDdiICQQNxBEACQCACQX9zQQFxIANqIgNBA3QiAEHAvCtqIgIgAEHIvCtqKAIAIgUoAggiAEYEQEGYvCsgAUF+IAN3cTYCAAwBCyAAIAI2AgwgAiAANgIICyAFQQhqIQQgBSADQQN0IgBBA3I2AgQgACAFaiIAIAAoAgRBAXI2AgQMAwsgBkGgvCsoAgAiBE0NASACBEACQEECIAN0IgBBACAAa3IgAiADdHEiAEEAIABrcWgiA0EDdCIAQcC8K2oiAiAAQci8K2ooAgAiCSgCCCIARgRAQZi8KyABQX4gA3dxIgE2AgAMAQsgACACNgIMIAIgADYCCAsgCSAGQQNyNgIEIAYgCWoiAiADQQN0IgAgBmsiA0EBcjYCBCAAIAlqIAM2AgAgBARAIARBeHFBwLwraiEGQay8KygCACEFAn8gAUEBIARBA3Z0IgBxRQRAQZi8KyAAIAFyNgIAIAYMAQsgBigCCAshACAGIAU2AgggACAFNgIMIAUgBjYCDCAFIAA2AggLIAlBCGohBEGsvCsgAjYCAEGgvCsgAzYCAAwDC0GcvCsoAgBFDQECf0GcvCsoAgAiBUEAIAVrcWhBAnRByL4raigCACIEKAIEQXhxIAZrIQcgBCEAA0ACQCAAKAIQIgJFBEAgACgCFCICRQ0BCyACKAIEQXhxIAZrIgAgByAAIAdJIgAbIQcgAiAEIAAbIQQgAiEADAELC0EAIAZBAEwNABogBCgCGCEJAkAgBCAEKAIMIgNHBEAgBCgCCCIAQai8KygCAEkaIAAgAzYCDCADIAA2AggMAQsCQCAEQRRqIgAoAgAiAkUEQCAEKAIQIgJFDQEgBEEQaiEACwNAIAAhASACIgNBFGoiACgCACICDQAgA0EQaiEAIAMoAhAiAg0ACyABQQA2AgAMAQtBACEDCwJAIAlFDQACQCAEKAIcIgJBAnRByL4raiIAKAIAIARGBEAgACADNgIAIAMNAUGcvCsgBUF+IAJ3cTYCAAwCCyAJQRBBFCAJKAIQIARGG2ogAzYCACADRQ0BCyADIAk2AhggBCgCECIABEAgAyAANgIQIAAgAzYCGAsgBCgCFCIARQ0AIAMgADYCFCAAIAM2AhgLAkAgB0EPTQRAIAQgBiAHaiIAQQNyNgIEIAAgBGoiACAAKAIEQQFyNgIEDAELIAQgBkEDcjYCBCAEIAZqIgEgB0EBcjYCBCABIAdqIAc2AgBBoLwrKAIAIgAEQCAAQXhxQcC8K2ohBUGsvCsoAgAhAwJ/QZi8KygCACICQQEgAEEDdnQiAHFFBEBBmLwrIAAgAnI2AgAgBQwBCyAFKAIICyEAIAUgAzYCCCAAIAM2AgwgAyAFNgIMIAMgADYCCAtBrLwrIAE2AgBBoLwrIAc2AgALIARBCGoLIgQNAgwBC0F/IQYgAEG/f0sNACAAQQtqIgBBeHEhBkGcvCsoAgAiB0UNAEEAIAZrIQQCQAJAAkACf0EAIAZBgAJJDQAaQR8gBkH///8HSw0AGiAGQSYgAEEIdmciAGt2QQFxIABBAXRrQT5qCyIJQQJ0Qci+K2ooAgAiAkUEQEEAIQAMAQtBACEAIAZBGSAJQQF2a0EAIAlBH0cbdCEBA0ACQCACKAIEQXhxIAZrIgUgBE8NACACIQMgBSIEDQBBACEEIAIhAAwDCyAAIAIoAhQiBSAFIAIgAUEddkEEcWooAhAiAkYbIAAgBRshACABQQF0IQEgAg0ACwsgACADckUEQEEAIQNBAiAJdCIAQQAgAGtyIAdxIgBFDQMgAEEAIABrcWhBAnRByL4raigCACEACyAARQ0BCwNAIAAoAgRBeHEgBmsiAiAESSEBIAIgBCABGyEEIAAgAyABGyEDIAAoAhAiAgR/IAIFIAAoAhQLIgANAAsLIANFDQAgBEGgvCsoAgAgBmtPDQAgAygCGCEJAkAgAyADKAIMIgFHBEAgAygCCCIAQai8KygCAEkaIAAgATYCDCABIAA2AggMAQsCQCADQRRqIgIoAgAiAEUEQCADKAIQIgBFDQEgA0EQaiECCwNAIAIhBSAAIgFBFGoiAigCACIADQAgAUEQaiECIAEoAhAiAA0ACyAFQQA2AgAMAQtBACEBCwJAIAlFDQACQCADKAIcIgJBAnRByL4raiIAKAIAIANGBEAgACABNgIAIAENAUGcvCsgB0F+IAJ3cSIHNgIADAILIAlBEEEUIAkoAhAgA0YbaiABNgIAIAFFDQELIAEgCTYCGCADKAIQIgAEQCABIAA2AhAgACABNgIYCyADKAIUIgBFDQAgASAANgIUIAAgATYCGAsCQCAEQQ9NBEAgAyAEIAZqIgBBA3I2AgQgACADaiIAIAAoAgRBAXI2AgQMAQsgAyAGQQNyNgIEIAMgBmoiBSAEQQFyNgIEIAQgBWogBDYCACAEQf8BTQRAIARBeHFBwLwraiEBAn9BmLwrKAIAIgJBASAEQQN2dCIAcUUEQEGYvCsgACACcjYCACABDAELIAEoAggLIQAgASAFNgIIIAAgBTYCDCAFIAE2AgwgBSAANgIIDAELQR8hACAEQf///wdNBEAgBEEmIARBCHZnIgBrdkEBcSAAQQF0a0E+aiEACyAFIAA2AhwgBUIANwIQIABBAnRByL4raiECAkACQCAHQQEgAHQiAXFFBEBBnLwrIAEgB3I2AgAgAiAFNgIADAELIARBGSAAQQF2a0EAIABBH0cbdCEAIAIoAgAhBgNAIAYiAigCBEF4cSAERg0CIABBHXYhASAAQQF0IQAgAiABQQRxaiIBKAIQIgYNAAsgASAFNgIQCyAFIAI2AhggBSAFNgIMIAUgBTYCCAwBCyACKAIIIgAgBTYCDCACIAU2AgggBUEANgIYIAUgAjYCDCAFIAA2AggLIANBCGohBAwBCyAGQaC8KygCACIBTQRAQay8KygCACEDAkAgASAGayICQRBPBEBBoLwrIAI2AgBBrLwrIAMgBmoiADYCACAAIAJBAXI2AgQgASADaiACNgIAIAMgBkEDcjYCBAwBC0GsvCtBADYCAEGgvCtBADYCACADIAFBA3I2AgQgASADaiIAIAAoAgRBAXI2AgQLIANBCGohBAwBCyAGQaS8KygCACIASQRAQaS8KyAAIAZrIgI2AgBBsLwrQbC8KygCACIBIAZqIgA2AgAgACACQQFyNgIEIAEgBkEDcjYCBCABQQhqIQQMAQtBACEEQYC8KygCAEUEQBD2AwtBiLwrKAIAIgAgBkEvaiIJakEAIABrcSICIAZNDQBB0L8rKAIAIgMEQEHIvysoAgAiASACaiIAIAFNDQEgACADSw0BCwJAAkACQAJAAkACQAJAAkBB1L8rLQAAQQRxRQRAAkACQAJAAkBBsLwrKAIAIgMEQEHwvyshAANAIAMgACgCACIBTwRAIAEgACgCBGogA0sNAwsgACgCCCIADQALC0GIwCsQXxpBABC5ASIBQX9GDQMgAiEFQYS8KygCACIDQQFrIgAgAXEEQCACIAFrIAAgAWpBACADa3FqIQULIAUgBk0NA0HQvysoAgAiBARAQci/KygCACIDIAVqIgAgA00NBCAAIARLDQQLIAUQuQEiACABRw0BDAULQYjAKxBfGkGIvCsoAgAiASAJQaS8KygCAGtqQQAgAWtxIgUQuQEiASAAKAIAIAAoAgRqRg0BIAEhAAsgAEF/Rg0BIAUgBkEwakkEQEGIvCsoAgAiASAJIAVrakEAIAFrcSIBELkBQX9GDQIgASAFaiEFCyAAIQEMAwsgAUF/Rw0CC0HUvytB1L8rKAIAQQRyNgIAQYjAKxBeGgtBiMArEF8aIAIQuQEhAUEAELkBIQBBiMArEF4aIAFBf0YNAiAAQX9GDQIgACABTQ0CIAAgAWsiBSAGQShqTQ0CDAELQYjAKxBeGgtByL8rQci/KygCACAFaiIANgIAQcy/KygCACAASQRAQcy/KyAANgIACwJAAkACQEGwvCsoAgAiBwRAQfC/KyEAA0AgASAAKAIAIgMgACgCBCICakYNAiAAKAIIIgANAAsMAgtBqLwrKAIAIgBBACAAIAFNG0UEQEGovCsgATYCAAtBACEAQfS/KyAFNgIAQfC/KyABNgIAQbi8K0F/NgIAQby8K0GAvCsoAgA2AgBB/L8rQQA2AgADQCAAQQN0IgNByLwraiADQcC8K2oiAjYCACADQcy8K2ogAjYCACAAQQFqIgBBIEcNAAtBpLwrIAVBKGsiA0F4IAFrQQdxQQAgAUEIakEHcRsiAGsiAjYCAEGwvCsgACABaiIANgIAIAAgAkEBcjYCBCABIANqQSg2AgRBtLwrQZC8KygCADYCAAwCCyAALQAMQQhxDQAgAyAHSw0AIAEgB00NACAAIAIgBWo2AgRBsLwrIAdBeCAHa0EHcUEAIAdBCGpBB3EbIgBqIgE2AgBBpLwrQaS8KygCACAFaiICIABrIgA2AgAgASAAQQFyNgIEIAIgB2pBKDYCBEG0vCtBkLwrKAIANgIADAELQai8KygCACABSwRAQai8KyABNgIACyABIAVqIQJB8L8rIQACQAJAAkADQCACIAAoAgBHBEAgACgCCCIADQEMAgsLIAAtAAxBCHFFDQELQfC/KyEAA0AgByAAKAIAIgJPBEAgAiAAKAIEaiIEIAdLDQMLIAAoAgghAAwACwALIAAgATYCACAAIAAoAgQgBWo2AgQgAUF4IAFrQQdxQQAgAUEIakEHcRtqIgkgBkEDcjYCBCACQXggAmtBB3FBACACQQhqQQdxG2oiBSAGIAlqIghrIQAgBSAHRgRAQbC8KyAINgIAQaS8K0GkvCsoAgAgAGoiADYCACAIIABBAXI2AgQMCAtBrLwrKAIAIAVGBEBBrLwrIAg2AgBBoLwrQaC8KygCACAAaiIANgIAIAggAEEBcjYCBCAAIAhqIAA2AgAMCAsgBSgCBCIEQQNxQQFHDQYgBEF4cSEGIARB/wFNBEAgBSgCCCIDIARBA3YiAkEDdEHAvCtqRhogAyAFKAIMIgFGBEBBmLwrQZi8KygCAEF+IAJ3cTYCAAwHCyADIAE2AgwgASADNgIIDAYLIAUoAhghByAFIAUoAgwiAUcEQCAFKAIIIgIgATYCDCABIAI2AggMBQsgBUEUaiICKAIAIgRFBEAgBSgCECIERQ0EIAVBEGohAgsDQCACIQMgBCIBQRRqIgIoAgAiBA0AIAFBEGohAiABKAIQIgQNAAsgA0EANgIADAQLQaS8KyAFQShrIgNBeCABa0EHcUEAIAFBCGpBB3EbIgBrIgI2AgBBsLwrIAAgAWoiADYCACAAIAJBAXI2AgQgASADakEoNgIEQbS8K0GQvCsoAgA2AgAgByAEQScgBGtBB3FBACAEQSdrQQdxG2pBL2siACAAIAdBEGpJGyIDQRs2AgQgA0H4vyspAgA3AhAgA0HwvyspAgA3AghB+L8rIANBCGo2AgBB9L8rIAU2AgBB8L8rIAE2AgBB/L8rQQA2AgAgA0EYaiEAA0AgAEEHNgIEIABBCGohAiAAQQRqIQAgAiAESQ0ACyADIAdGDQAgAyADKAIEQX5xNgIEIAcgAyAHayIEQQFyNgIEIAMgBDYCACAEQf8BTQRAIARBeHFBwLwraiEBAn9BmLwrKAIAIgJBASAEQQN2dCIAcUUEQEGYvCsgACACcjYCACABDAELIAEoAggLIQAgASAHNgIIIAAgBzYCDCAHIAE2AgwgByAANgIIDAELQR8hACAEQf///wdNBEAgBEEmIARBCHZnIgBrdkEBcSAAQQF0a0E+aiEACyAHIAA2AhwgB0IANwIQIABBAnRByL4raiECAkACQEGcvCsoAgAiA0EBIAB0IgFxRQRAQZy8KyABIANyNgIAIAIgBzYCAAwBCyAEQRkgAEEBdmtBACAAQR9HG3QhACACKAIAIQMDQCADIgIoAgRBeHEgBEYNAiAAQR12IQEgAEEBdCEAIAIgAUEEcWoiASgCECIDDQALIAEgBzYCEAsgByACNgIYIAcgBzYCDCAHIAc2AggMAQsgAigCCCIAIAc2AgwgAiAHNgIIIAdBADYCGCAHIAI2AgwgByAANgIIC0GkvCsoAgAiACAGTQ0AQaS8KyAAIAZrIgI2AgBBsLwrQbC8KygCACIBIAZqIgA2AgAgACACQQFyNgIEIAEgBkEDcjYCBCABQQhqIQQMBgsjA0EcakEwNgIAQQAhBAwFC0EAIQELIAdFDQACQCAFKAIcIgNBAnRByL4raiICKAIAIAVGBEAgAiABNgIAIAENAUGcvCtBnLwrKAIAQX4gA3dxNgIADAILIAdBEEEUIAcoAhAgBUYbaiABNgIAIAFFDQELIAEgBzYCGCAFKAIQIgIEQCABIAI2AhAgAiABNgIYCyAFKAIUIgJFDQAgASACNgIUIAIgATYCGAsgACAGaiEAIAUgBmoiBSgCBCEECyAFIARBfnE2AgQgCCAAQQFyNgIEIAAgCGogADYCACAAQf8BTQRAIABBeHFBwLwraiEBAn9BmLwrKAIAIgJBASAAQQN2dCIAcUUEQEGYvCsgACACcjYCACABDAELIAEoAggLIQAgASAINgIIIAAgCDYCDCAIIAE2AgwgCCAANgIIDAELQR8hBCAAQf///wdNBEAgAEEmIABBCHZnIgJrdkEBcSACQQF0a0E+aiEECyAIIAQ2AhwgCEIANwIQIARBAnRByL4raiECAkACQEGcvCsoAgAiA0EBIAR0IgFxRQRAQZy8KyABIANyNgIAIAIgCDYCAAwBCyAAQRkgBEEBdmtBACAEQR9HG3QhBCACKAIAIQEDQCABIgIoAgRBeHEgAEYNAiAEQR12IQEgBEEBdCEEIAIgAUEEcWoiAygCECIBDQALIAMgCDYCEAsgCCACNgIYIAggCDYCDCAIIAg2AggMAQsgAigCCCIAIAg2AgwgAiAINgIIIAhBADYCGCAIIAI2AgwgCCAANgIICyAJQQhqIQQLQdS/Ky0AAEECcUUNAEHYvysQXhoLIAQLgQEBAn8CQAJAIAJBBE8EQCAAIAFyQQNxDQEDQCAAKAIAIAEoAgBHDQIgAUEEaiEBIABBBGohACACQQRrIgJBA0sNAAsLIAJFDQELA0AgAC0AACIDIAEtAAAiBEYEQCABQQFqIQEgAEEBaiEAIAJBAWsiAg0BDAILCyADIARrDwtBAAvHCgIFfw9+IwBB4ABrIgUkACAEQv///////z+DIQwgAiAEhUKAgICAgICAgIB/gyEKIAJC////////P4MiDUIgiCEOIARCMIinQf//AXEhBwJAAkAgAkIwiKdB//8BcSIJQf//AWtBgoB+TwRAIAdB//8Ba0GBgH5LDQELIAFQIAJC////////////AIMiC0KAgICAgIDA//8AVCALQoCAgICAgMD//wBRG0UEQCACQoCAgICAgCCEIQoMAgsgA1AgBEL///////////8AgyICQoCAgICAgMD//wBUIAJCgICAgICAwP//AFEbRQRAIARCgICAgICAIIQhCiADIQEMAgsgASALQoCAgICAgMD//wCFhFAEQCACIAOEUARAQoCAgICAgOD//wAhCkIAIQEMAwsgCkKAgICAgIDA//8AhCEKQgAhAQwCCyADIAJCgICAgICAwP//AIWEUARAIAEgC4QhAkIAIQEgAlAEQEKAgICAgIDg//8AIQoMAwsgCkKAgICAgIDA//8AhCEKDAILIAEgC4RQBEBCACEBDAILIAIgA4RQBEBCACEBDAILIAtC////////P1gEQCAFQdAAaiABIA0gASANIA1QIgYbeSAGQQZ0rXynIgZBD2sQY0EQIAZrIQYgBSkDWCINQiCIIQ4gBSkDUCEBCyACQv///////z9WDQAgBUFAayADIAwgAyAMIAxQIggbeSAIQQZ0rXynIghBD2sQYyAGIAhrQRBqIQYgBSkDSCEMIAUpA0AhAwsgA0IPhiILQoCA/v8PgyICIAFCIIgiBH4iECALQiCIIhMgAUL/////D4MiAX58Ig9CIIYiESABIAJ+fCILIBFUrSACIA1C/////w+DIg1+IhUgBCATfnwiESAMQg+GIhIgA0IxiIRC/////w+DIgMgAX58IhQgDyAQVK1CIIYgD0IgiIR8Ig8gAiAOQoCABIQiDH4iFiANIBN+fCIOIBJCIIhCgICAgAiEIgIgAX58IhAgAyAEfnwiEkIghnwiF3whASAHIAlqIAZqQf//AGshBgJAIAIgBH4iGCAMIBN+fCIEIBhUrSAEIAQgAyANfnwiBFatfCACIAx+fCAEIAQgESAVVK0gESAUVq18fCIEVq18IAMgDH4iAyACIA1+fCICIANUrUIghiACQiCIhHwgBCACQiCGfCICIARUrXwgAiACIBAgElatIA4gFlStIA4gEFat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AygCEBogAyADKAIIQQRrNgIIDAELCyADKAIABEAgAygCECADKAIAIgEgAygCDCABa0ECdRCYAwsLIAtBIGokAAwBCyABIANJBEAgACgCBCAAKAIAIgNrGiAAIAFBAnQgA2oQ/wIgACgCACIBIAAoAgggAWtBfHFqGiAAKAIEGgsLCyAAKAIAIAJBAnRqKAIABEAgACgCACACQQJ0aigCACIBQQRqQX/+HgIARQRAIAEgASgCACgCCBEAAAsLIAooAgghASAKQQA2AgggACgCACACQQJ0aiABNgIAIAooAgghACAKQQA2AgggAARAIABBBGpBf/4eAgBFBEAgACAAKAIAKAIIEQAACwsgCkEQaiQACwkAQZwcELMEAAslACAALQALQQd2BEAgACAAKAIAIAAoAghB/////wdxENYBCyAACzQBAX8jAEEQayIDJAAgAyABNgIMIAAgAygCDDYCACAAQQRqIAIoAgA2AgAgA0EQaiQAIAALlwICBH8IfiMAQRBrIgQkAAJAIAIpAxAiByABKQMQIgiBQgBSDQAgAikDGCIJIAEpAxgiCoFCAFINACACKQMgIgsgASkDICIMgUIAUg0AIAIpAygiDSABKQMoIg6BQgBSDQAgASgCSCEGAkACQCAHIAhSDQAgCSAKUg0AIAsgDFINACANIA5SDQAgBg0AIAEhAwwBCyAAIAEoAgAgAigCCCACQRBqQQAQPCIDQQ42AkAgBgRAIAAgAygCACADKAIIIANBEGpBABA8IQULIAMgAjYCUCADIAE2AkwgAyAFNgJICyAEQRBqJAAgAw8LIARBxcoANgIIIARBiyc2AgQgBEGRJDYCAEG4nwIoAgBBiNIAIAQQMhAAAAvwAQEDfwJ/IwBBEGsiBCQAAkAgASkDECACKQMQUg0AIAEpAxggAikDGFINACABKQMgIAIpAyBSDQAgASkDKCACKQMoUg0AIAFBEGohAwJ/An8CQCABKAJIDQAgAigCSA0AQQAMAQtBAQshBSAAIAEoAgAgASgCCCADQQAQPCIDQQI2AkBBACAFRQ0AGiAAIAMoAgAgAygCCCADQRBqQQAQPAshACADIAI2AlAgAyABNgJMIAMgADYCSCAEQRBqJAAgAwwBCyAEQdvKADYCCCAEQcsjNgIEIARBkSQ2AgBBuJ8CKAIAQYjSACAEEDIQAAALCx0A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AgAMAQsgAAsiBCADaiABIAIQdSAAIAIgA2oiARCWASAFQQA6AA8gASAEaiAFLQAPOgAADAELIAAgBCACIANqIARrIAMgA0EAIAIgARC+AQsgBUEQaiQAIAAL4QICBX8BfiAAQgA3AgQgACAAQQRqIgU2AgAgASgCBCICBEAgASgCACIGIAJBA3RqIQcDQCAAKAIEIQQCQAJAAkAgBSIBIAAoAgBGDQAgBSECAkAgBCIDBEADQCADIgEoAgQiAw0ADAILAAsDQCACKAIIIgEoAgAgAkYhAyABIQIgAw0ACwsgBigCACIDIAEoAhBKDQAgBSICIQEgBEUNAQNAIAQiASgCECICIANKBEAgASECIAEoAgAiBA0BDAMLIAIgA04NAyABKAIEIgQNAAsgAUEEaiECDAELIAFBBGogBSAEGyICKAIADQEgASAFIAQbIQELQRgQMyEDIAYpAgAhCCADIAE2AgggA0IANwIAIAMgCDcCECACIAM2AgAgACgCACgCACIBBEAgACABNgIAIAIoAgAhAwsgACgCBCADEJUBIAAgACgCCEEBajYCCAsgBkEIaiIGIAdHDQALCyAAC9YBAQJ/IwBBEGsiBCQAAkACQCACQQtJBEAgACIDIAAtAAtBgAFxIAJyOgALIAAgAC0AC0H/AHE6AAsMAQsgAkHv////B0sNASAEQQhqIAAgAkELTwR/IAJBEGpBcHEiAyADQQFrIgMgA0ELRhsFQQoLQQFqELgBIAQoAgwaIAAgBCgCCCIDNgIAIAAgACgCCEGAgICAeHEgBCgCDEH/////B3FyNgIIIAAgACgCCEGAgICAeHI2AgggACACNgIECyADIAEgAkEBahB1IARBEGokAA8LEEwAC1IBAX8gAUEBayICQRBNBH8gAkECdEGchQNqKAIABUGwIAshAiAAQaSRAzYCACAAQaiSAzYCACAAQQRqIAIQ9gIgACABNgIIIABB6PwCNgIAIAALxwkCBH8FfiMAQfAAayIGJAAgBEL///////////8AgyEJAkACQCABUCIFIAJC////////////AIMiCkKAgICAgIDA//8AfUKAgICAgIDAgIB/VCAKUBtFBEAgA0IAUiAJQoCAgICAgMD//wB9IgtCgICAgICAwICAf1YgC0KAgICAgIDAgIB/URsNAQsgBSAKQoCAgICAgMD//wBUIApCgICAgICAwP//AFEbRQRAIAJCgICAgICAIIQhBCABIQMMAgsgA1AgCUKAgICAgIDA//8AVCAJQoCAgICAgMD//wBRG0UEQCAEQoCAgICAgCCEIQQMAgsgASAKQoCAgICAgMD//wCFhFAEQEKAgICAgIDg//8AIAIgASADhSACIASFQoCAgICAgICAgH+FhFAiBRshBEIAIAEgBRshAwwCCyADIAlCgICAgICAwP//AIWEUA0BIAEgCoRQBEAgAyAJhEIAUg0CIAEgA4MhAyACIASDIQQMAgsgAyAJhEIAUg0AIAEhAyACIQQMAQsgAyABIAEgA1QgCSAKViAJIApRGyIIGyEKIAQgAiAIGyILQv///////z+DIQkgAiAEIAgbIgJCMIinQf//AXEhByALQjCIp0H//wFxIgVFBEAgBkHgAGogCiAJIAogCSAJUCIFG3kgBUEGdK18pyIFQQ9rEGMgBikDaCEJIAYpA2AhCkEQIAVrIQULIAEgAyAIGyEDIAJC////////P4MhBCAHRQRAIAZB0ABqIAMgBCADIAQgBFAiBxt5IAdBBnStfKciB0EPaxBjQRAgB2shByAGKQNYIQQgBikDUCEDCyAEQgOGIANCPYiEQoCAgICAgIAEhCEBIAlCA4YgCkI9iIQhBCACIAuFIQ0CfiADQgOGIgIgBSAHRg0AGiAFIAdrIgdB/wBLBEBCACEBQgEMAQsgBkFAayACIAFBgAEgB2sQYyAGQTBqIAIgASAHEKYBIAYpAzghASAGKQMwIAYpA0AgBikDSIRCAFKthAshCSAEQoCAgICAgIAEhCEMIApCA4YhCgJAIA1CAFMEQEIAIQNCACEEIAkgCoUgASAMhYRQDQIgCiAJfSECIAwgAX0gCSAKVq19IgRC/////////wNWDQEgBkEgaiACIAQgAiAEIARQIgcbeSAHQQZ0rXynQQxrIgcQYyAFIAdrIQUgBikDKCEEIAYpAyAhAgwBCyAJIAp8IgIgCVStIAEgDHx8IgRCgICAgICAgAiDUA0AIAlCAYMgBEI/hiACQgGIhIQhAiAFQQFqIQUgBEIBiCEECyALQoCAgICAgICAgH+DIQEgBUH//wFOBEAgAUKAgICAgIDA//8AhCEEQgAhAwwBC0EAIQcCQCAFQQBKBEAgBSEHDAELIAZBEGogAiAEIAVB/wBqEGMgBiACIARBASAFaxCmASAGKQMAIAYpAxAgBikDGIRCAFKthCECIAYpAwghBAsgAqdBB3EiBUEES60gBEI9hiACQgOIhCICfCIDIAJUrSAEQgOIQv///////z+DIAetQjCGhCABhHwhBAJAIAVBBEYEQCAEIANCAYMiASADfCIDIAFUrXwhBAwBCyAFRQ0BCwsgACADNwMAIAAgBDcDCCAGQfAAaiQACwoAIABBtMIrEHgLOAICfwF+IwBBEGsiACQAIAAQygEgACkDACECIAAoAgghASAAQRBqJAAgAUHoB22sIAJCwIQ9fnwLZAAgAigCBEGwAXEiAkEgRgRAIAEPCwJAIAJBEEcNAAJAAkAgAC0AACICQStrDgMAAQABCyAAQQFqDwsgASAAa0ECSA0AIAJBMEcNACAALQABQSByQfgARw0AIABBAmohAAsgAAs5AQF/IwBBEGsiASQAIAECfyAALQALQQd2BEAgACgCAAwBCyAACzYCCCABKAIIIQAgAUEQaiQAIAALfgICfwF+IwBBEGsiAyQAIAACfiABRQRAQgAMAQsgAyABIAFBH3UiAnMgAmsiAq1CACACZyICQdEAahBjIAMpAwhCgICAgICAwACFQZ6AASACa61CMIZ8IAFBgICAgHhxrUIghoQhBCADKQMACzcDACAAIAQ3AwggA0EQaiQACwwAIAEgAiAAEPEDGguKAwIDfwF8IwBBEGsiASQAAkAgALwiA0H/////B3EiAkHan6T6A00EQCACQYCAgMwDSQ0BIAC7EIMBIQAMAQsgAkHRp+2DBE0EQCAAuyEEIAJB45fbgARNBEAgA0EASARAIAREGC1EVPsh+T+gEIQBjCEADAMLIAREGC1EVPsh+b+gEIQBIQAMAgtEGC1EVPshCcBEGC1EVPshCUAgA0EAThsgBKCaEIMBIQAMAQsgAkHV44iHBE0EQCACQd/bv4UETQRAIAC7IQQgA0EASARAIARE0iEzf3zZEkCgEIQBIQAMAwsgBETSITN/fNkSwKAQhAGMIQAMAgtEGC1EVPshGUBEGC1EVPshGcAgA0EASBsgALugEIMBIQAMAQsgAkGAgID8B08EQCAAIACTIQAMAQsCQAJAAkACQCAAIAFBCGoQjQRBA3EOAwABAgMLIAErAwgQgwEhAAwDCyABKwMIEIQBIQAMAgsgASsD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IgMEfyADEDMFQQALIgJqIgYgBDoAACACIAEgBfwKAAAgACACIANqNgIcIAAgBkEBajYCGCAAIAI2AhQgAUUNASABEDEPCyAAKAIcIQQgACgCGCECIAAtAFoEQCACIARJDQQgAiAAKAIUIgJrIgVBAWoiA0EASA0DIAVB/////wcgBCACayIEQQF0IgYgAyADIAZJGyAEQf////8DTxsiAwR/IAMQMwVBAAsiBGoiBiABOgAAIAQgAiAF/AoAACAAIAMgBGo2AhwgACAGQQFqNgIYIAAgBDYCFCACRQ0BIAIQMQ8LIAIgBEcNAyACIAAoAhQiBGsiAkEBaiIFQQBIDQIgAkH/////ByACQQF0IgMgBSADIAVLGyACQf////8DTxsiAwR/IAMQMwVBAAsiBWoiBiABOgAAIAUgBCAC/AoAACAAIAMgBWo2AhwgACAGQQFqNgIYIAAgBTYCFCAERQ0AIAQQMQsPCxBEAAsQRAALIAIgAToAACAAIAJBAWo2AhgLEwAgAUEBdEGQhgNqQQIgABDxAwt2AQF/IwBBEGsiAiQAIAIgADYCDAJAIAAgAUYNAANAIAIgAUEBayIBNgIIIAAgAU8NASACKAIMIgAtAAAhASAAIAIoAggiAC0AADoAACAAIAE6AAAgAiACKAIMQQFqIgA2AgwgAigCCCEBDAALAAsgAkEQaiQAC9sBAgF/An5BASEEAkAgAEIAUiABQv///////////wCDIgVCgICAgICAwP//AFYgBUKAgICAgIDA//8AURsNACACQgBSIANC////////////AIMiBkKAgICAgIDA//8AViAGQoCAgICAgMD//wBRGw0AIAAgAoQgBSAGhIRQBEBBAA8LIAEgA4NCAFkEQEF/IQQgACACVCABIANTIAEgA1EbDQEgACAChSABIAOFhEIAUg8LQX8hBCAAIAJWIAEgA1UgASADURsNACAAIAKFIAEgA4WEQgBSIQQLIAQLrwMBA38jAEEgayIDJAACQAJAAkAgACgCACIEQQBKBEADQCAAIAJBAnRqKAIUIAFGDQIgAkEBaiICIARHDQALC0EAIQIgACgCBCIEQQBKBEADQCAAIAJBAnRqQZSAAmooAgAgAUYNAiACQQFqIgIgBEcNAAsLIAEoAkwiAgRAIAAgAhCkAQsgASgCUCICBEAgACACEKQBCyAB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Af5IApyWAyAARw0ACyAADwsjA0EcakEwNgIAQX8LgwECA38BfgJAIABCgICAgBBUBEAgACEFDAELA0AgAUEBayIBIAAgAEIKgCIFQgp+fadBMHI6AAAgAEL/////nwFWIQIgBSEAIAINAAsLIAWnIgIEQANAIAFBAWsiASACIAJBCm4iA0EKbGtBMHI6AAAgAkEJSyEEIAMhAiAEDQALCyABCxoAIAAgARCABCIAQQAgAC0AACABQf8BcUYbC/ACAgJ/AX4CQCACRQ0AIAAgAToAACAAIAJqIgNBAWsgAToAACACQQNJDQAgACABOgACIAAgAToAASADQQNrIAE6AAAgA0ECayABOgAAIAJBB0kNACAAIAE6AAMgA0EEayABOgAAIAJBCUkNACAAQQAgAGtBA3EiBGoiAyABQf8BcUGBgoQIbCIANgIAIAMgAiAEa0F8cSICaiIBQQRrIAA2AgAgAkEJSQ0AIAMgADYCCCADIAA2AgQgAUEIayAANgIAIAFBDGsgADYCACACQRlJDQAgAyAANgIYIAMgADYCFCADIAA2AhAgAyAANgIMIAFBEGsgADYCACABQRRrIAA2AgAgAUEYayAANgIAIAFBHGsgADYCACACIANBBHFBGHIiAWsiAkEgSQ0AIACtQoGAgIAQfiEFIAEgA2ohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkEgayICQR9LDQALCwv9DAIFfwJ8IwBBQGoiAyQAIAIrAyAhCAJ/AkAgASsDICIJIAArAyBkRQRAQQAgCCAJZEUNAhogAyABLQAIOgA4IAMgASkDADcDMCABKAIUIQUgASgCECEGIAFCADcDECABKAIYIQcgAUEANgIYIAMgASgCRDYCKCADIAEpAjw3AyAgAyAB/QACLP0LAxAgAyAB/QACHP0LAwAgASACKQMANwMAIAEgAi0ACDoACCABIAIoAhA2AhAgASACKAIUNgIUIAEgAigCGDYCGCACQQA2AhggAkEANgIQIAEgAigCRDYCRCABIAIpAjw3AjwgASAC/QACLP0LAiwgASAC/QACHP0LAhwgAiADKQMwNwMAIAIgAy0AODoACCACKAIQIgQEQCACIAQ2AhQgBBAxCyACIAc2AhggAiAFNgIUIAIgBjYCECACIAMoAig2AkQgAiADKQMgNwI8IAIgA/0AAxD9CwIsIAIgA/0AAwD9CwIcQQEgASsDICAAKwMgZEUNAhogAyAALQAIOgA4IAMgACkDADcDMCAAKAIUIQIgACgCECEEIABCADcDECAAKAIYIQUgAEEANgIYIAMgACgCRDYCKCADIAApAjw3AyAgAyAA/QACLP0LAxAgAyAA/QACHP0LAwAgACABKQMANwMAIAAgAS0ACDoACCAAIAEoAhA2AhAgACABKAIUNgIUIAAgASgCGDYCGCABQQA2AhggAUEANgIQIAAgASgCRDYCRCAAIAEpAjw3AjwgACAB/QACLP0LAiwgACAB/QACHP0LAhwgASADLQA4OgAIIAEgAykDMDcDACABKAIQIgAEQCABIAA2AhQgABAxCyABIAU2AhggASACNgIUIAEgBDYCECABIAMoAig2AkQgASADKQMgNwI8IAEgA/0AAxD9CwIsIAEgA/0AAwD9CwIcDAELIAggCWQEQCADIAAtAAg6ADggAyAAKQMANwMwIAAoAhQhASAAKAIQIQQgAEIANwMQIAAoAhghBSAAQQA2AhggAyAAKAJENgIoIAMgACkCPDcDICADIAD9AAIs/QsDECADIAD9AAIc/QsDACAAIAIpAwA3AwAgACACLQAIOgAIIAAgAigCEDYCECAAIAIoAhQ2AhQgACACKAIYNgIYIAJBADYCGCACQQA2AhAgACACKAJENgJEIAAgAikCPDcCPCAAIAL9AAIs/QsCLCAAIAL9AAIc/QsCHCACIAMpAzA3AwAgAiADLQA4OgAIIAIoAhAiAARAIAIgADYCFCAAEDELIAIgBTYCGCACIAE2AhQgAiAENgIQIAIgAygCKDYCRCACIAMpAyA3AjwgAiAD/QADEP0LAiwgAiAD/QADAP0LAhxBAQwCCyADIAAtAAg6ADggAyAAKQMANwMwIAAoAhQhBCAAKAIQIQUgAEIANwMQIAAoAhghBiAAQQA2AhggAyAAKAJENgIoIAMgACkCPDcDICADIAD9AAIs/QsDECADIAD9AAIc/QsDACAAIAEpAwA3AwAgACABLQAIOgAIIAAgASgCEDYCECAAIAEoAhQ2AhQgACABKAIYNgIYIAFBADYCGCABQQA2AhAgACABKAJENgJEIAAgASkCPDcCPCAAIAH9AAIs/QsCLCAAIAH9AAIc/QsCHCABIAMpAzA3AwAgASADLQA4OgAIIAEoAhAiAARAIAEgADYCFCAAEDELIAEgBjYCGCABIAQ2AhQgASAFNgIQIAEgAygCKDYCRCABIAMpAyA3AjwgASAD/QADEP0LAiwgASAD/QADAP0LAhxBASACKwMgIAErAyBkRQ0BGiADIAEtAAg6ADggAyABKQMANwMwIAFBADYCGCABQgA3AxAgAyABKAJENgIoIAMgASkCPDcDICADIAH9AAIs/QsDECADIAH9AAIc/QsDACABIAItAAg6AAggASACKQMANwMAIAEgAigCEDYCECABIAIoAhQ2AhQgASACKAIYNgIYIAJBADYCECACQQA2AhggASACKAJENgJEIAEgAikCPDcCPCABIAL9AAIs/QsCLCABIAL9AAIc/QsCHCACIAMpAzA3AwAgAiADLQA4OgAIIAIoAhAiAARAIAIgADYCFCAAEDELIAIgBjYCGCACIAQ2AhQgAiAFNgIQIAIgAygCKDYCRCACIAMpAyA3AjwgAiAD/QADEP0LAiwgAiAD/QADAP0LAhwLQQILIQAgA0FAayQAIAALgwMBBH8jAEEQayIIJAAgAiABQX9zQe////8Hak0EQAJ/IAAtAAtBB3YEQCAAKAIADAELIAALIQkgCCAAIAFB5////wNJBH8gCCABQQF0NgIMIAggASACajYCACMAQRBrIgIkACAIKAIAIAhBDGoiCigCAEkhCyACQRBqJAAgCiAIIAsbKAIAIgJBC08EfyACQRBqQXBxIgIgAkEBayICIAJBC0YbBUEKC0EBagVB7////wcLELgBIAgoAgAhAiAIKAIEGiAEBEAgAiAJIAQQdQsgBgRAIAIgBGogByAGEHULIAMgBCAFaiIKayEHIAMgCkcEQCACIARqIAZqIAQgCWogBWogBxB1CyABQQFqIgFBC0cEQCAAIAkgARDkAQsgACACNgIAIAAgACgCCEGAgICAeHEgCCgCBEH/////B3FyNgIIIAAgACgCCEGAgICAeHI2AgggACAEIAZqIAdqIgA2AgQgCEEAOgAMIAAgAmogCC0ADDoAACAIQRBqJAAPCxBMAAv6AwIGfwh+IwBBMGsiAyQAAkACQCACKQMoIAIpAyAiCSACKQMYIgogAikDECILfn5+IgwgASkDKCABKQMgIg0gASkDGCIOIAEpAxAiD35+flEEQCACKAIw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QX9zIARqIQpBACEGIAgEQANAIAMgAEECdCILaiACIAtqKgIAkTgCACAAQQFqIQAgBkEBaiIGIAhHDQALCyAKQQNJDQADQCADIABBAnQiBmogAiAGaioCAJE4AgAgAyAGQQRqIgpqIAIgCmoqAgCROAIAIAMgBkEIaiIKaiACIApqKgIAkTgCACADIAZBDGoiBmogAiAGaioCAJE4AgAgAEEEaiIAIARHDQALCyAHQQFqIgcgDUcNAAsLIAVBEGokAAwBCyAFQfgeNgIIIAVBtMEANgIEDC8LDCcLIAEoAkwhAyMAQdAAayICJAACQAJAAkACQAJAIAMoAgBFBEAgACgCBA0BIAMpAxAiPiABKQMQUg0CIAMpAxgiQiABKQMYUg0CIAMpAyAiQCABKQMgUg0CIAMpAygiPyABKQMoUg0CAkACQCAAKAIADgMBAAEACyABKAIwQQRHDQQgAygCMEEERw0FIEAgQn4gP36nIglBAEwNACA+pyIFQQBMDQAgAygCNCEKIAEoAjQhCyADKAKAASENIAEoAoABIQ4gBUEDcSEIIAVBfHEhASAFQQRJIQwDQCANIAcgCmxqIQMgDiAHIAtsaiEEQQAhAAJAAkAgDA0AIAQgA2tBEEkNAANAIAQgAEECdCIGaiADIAZq/QACACJZ/R8AEIEB/RMgWf0fARCBAf0gASBZ/R8CEIEB/SACIFn9HwMQgQH9IAP9CwIAIABBBGoiACABRw0ACyABIgAgBUYNAQsgAEF/cyAFaiERQQAhBiAIBEADQCAEIABBAnQiD2ogAyAPaioCABCBATgCACAAQQFqIQAgBkEBaiIGIAhHDQALCyARQQNJDQADQCAEIABBAnQiBmogAyAGaioCABCBATgCACAEIAZBBGoiEWogAyARaioCABCBATgCACAEIAZBCGoiEWogAyARaioCABCBATgCACAEIAZBDGoiBmogAyAGaioCABCBATgCACAAQQRqIgAgBUcNAAsLIAdBAWoiByAJRw0ACwsgAkHQAGokAAwFCyACQfgeNgJIIAJB38EANgJEIAJBkSQ2AkBBuJ8CKAIAQYjSACACQUBrEDIMOgsgAkG+NTYCOCACQcDBADYCNAwwCyACQZrDADYCKCACQcHBADYCJAwsCyACQbnDADYCGCACQcrBADYCFAwsCyACQfTDADYCCCACQcvB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ADgCACAEIAZBBGoiEmogASASaioCADgCACAEIAZBCGoiEmogASASaioCADgCACAEIAZBDGoiBmogASAGaioCADgCACAAQQRqIgAgBUcNAAsLIAdBAWoiByAWRw0ACyBAQgF8IkAgP1INAAsgRkIBfCFGIApBAWoiCiAVRw0ACyBCQgF8IkIgQVINAAsgRUIBfCFFIAlBAWoiCSAURw0ACyA+QgF8Ij4gQ1INAAsgREIBfCFEIAhBAWoiCCATRw0ACwsgA0HQAGokAAwFCyADQfgeNgJIIANB8cMANgJEIANBkSQ2AkBBuJ8CKAIAQYjSACADQUBrEDIMNgsgA0G+NTYCOCADQa3DADYCNAwwCyADQZnCADYCKCADQa7DADYCJAwwCyADQdPEADYCGCADQc/DADYCFAwwCyADQazFADYCCCADQdDDADYCBAwrCwwiCyABKAJMIQIjAEEQayIFJAACQCACKAIARQRAAkACQCAAKAIADgMBAAEACyACKQMoIAIpAyAgAikDGH5+pyINQQBMDQAgAigCECIEQQBMDQAgAigCNCEOIAEoAjQhDCACKAKAASERIAEoAoABIQ8gBEEDcSEIIARBfHEhASAEQQRrIhJBAnZBAWoiAEH8////B3EhECAAQQNxIQkgBEEESSETA0AgESAHIA5saiECIA8gByAMbGohA0EAIQACQAJAIBMNACADIAJrQRBJDQBBACEKQQAhCyASQQxPBEADQCADIABBAnQiBmogAiAGav0AAgD94AH9CwIAIAMgBkEQciIUaiACIBRq/QACAP3gAf0LAgAgAyAGQSByIhRqIAIgFGr9AAIA/eAB/QsCACADIAZBMHIiBmogAiAGav0AAgD94AH9CwIAIABBEGohACALQQRqIgsgEEcNAAsLIAkEQANAIAMgAEECdCIGaiACIAZq/QACAP3gAf0LAgAgAEEEaiEAIApBAWoiCiAJRw0ACwsgASIAIARGDQELIABBf3MgBGohCkEAIQYgCARAA0AgAyAAQQJ0IgtqIAIgC2oqAgCLOAIAIABBAWohACAGQQFqIgYgCEcNAAsLIApBA0kNAANAIAMgAEECdCIGaiACIAZqKgIAizgCACADIAZBBGoiCmogAiAKaioCAIs4AgAgAyAGQQhqIgpqIAIgCmoqAgCLOAIAIAMgBkEMaiIGaiACIAZqKgIAizgCACAAQQRqIgAgBEcNAAsLIAdBAWoiByANRw0ACwsgBUEQaiQADAELIAVB+B42AgggBUGbxAA2AgQMKQsMIQsgASgCTCECIwBBEGsiBSQAAkAgAigCAEUEQAJAAkAgACgCAA4DAQABAAsgAikDKCACKQMgIAIpAxh+fqciCUEATA0AIAIoAhAiA0EATA0AIAIoAjQhCiABKAI0IQsgAigCgAEhDSABKAKAASEOQQAgA2shDCADQQFxIREgA0F8cSEBIANBBGsiD0ECdkEBaiIAQf7///8HcSESIABBAXEhECADQQRJIRMDQCANIAcgCmxqIQIgDiAHIAtsaiEEQQAhAAJAAkAgEw0AIAQgAmtBEEkNAEEAIQYgD0EETwRAA0AgBCAAQQJ0Ighq/QwAAIA/AACAPwAAgD8AAIA//QwAAIC/AACAvwAAgL8AAIC//QwAAAAAAAAAAAAAAAAAAAAAIAIgCGr9AAIAIln9DAAAAAAAAAAAAAAAAAAAAAD9Q/1SIFn9DAAAAAAAAAAAAAAAAAAAAAD9RP1S/QsCACAEIAhBEHIiCGr9DAAAgD8AAIA/AACAPwAAgD/9DAAAgL8AAIC/AACAvwAAgL/9DAAAAAAAAAAAAAAAAAAAAAAgAiAIav0AAgAiWf0MAAAAAAAAAAAAAAAAAAAAAP1D/VIgWf0MAAAAAAAAAAAAAAAAAAAAAP1E/VL9CwIAIABBCGohACAGQQJqIgYgEkcNAAsLIBAEQCAEIABBAnQiAGr9DAAAgD8AAIA/AACAPwAAgD/9DAAAgL8AAIC/AACAvwAAgL/9DAAAAAAAAAAAAAAAAAAAAAAgACACav0AAgAiWf0MAAAAAAAAAAAAAAAAAAAAAP1D/VIgWf0MAAAAAAAAAAAAAAAAAAAAAP1E/VL9CwIACyABIgAgA0YNAQsgAEF/cyEGIBEEQCAEIABBAnQiCGpDAACAP0MAAIC/QwAAAAAgAiAIaioCACJiQwAAAABdGyBiQwAAAABeGzgCACAAQQFyIQALIAYgDEYNAANAIAQgAEECdCIGakMAAIA/QwAAgL9DAAAAACACIAZqKgIAImJDAAAAAF0bIGJDAAAAAF4bOAIAIAQgBkEEaiIGakMAAIA/QwAAgL9DAAAAACACIAZqKgIAImJDAAAAAF0bIGJDAAAAAF4bOAIAIABBAmoiACADRw0ACwsgB0EBaiIHIAlHDQALCyAFQRBqJAAMAQsgBUH4HjYCCCAFQcXEADYCBAwoCwwgCyABKAJMIQIjAEEQayIFJAACQCACKAIARQRAAkACQCAAKAIADgMBAAEACyACKQMoIAIpAyAgAikDGH5+pyINQQBMDQAgAigCECIEQQBMDQAgAigCNCEOIAEoAjQhDCACKAKAASERIAEoAoABIQ8gBEEDcSEIIARBfHEhASAEQQRrIhJBAnZBAWoiAEH8////B3EhECAAQQNxIQkgBEEESSETA0AgESAHIA5saiECIA8gByAMbGohA0EAIQACQAJAIBMNACADIAJrQRBJDQBBACEKQQAhCyASQQxPBEADQCADIABBAnQiBmogAiAGav0AAgD94QH9CwIAIAMgBkEQciIUaiACIBRq/QACAP3hAf0LAgAgAyAGQSByIhRqIAIgFGr9AAIA/eEB/QsCACADIAZBMHIiBmogAiAGav0AAgD94QH9CwIAIABBEGohACALQQRqIgsgEEcNAAsLIAkEQANAIAMgAEECdCIGaiACIAZq/QACAP3hAf0LAgAgAEEEaiEAIApBAWoiCiAJRw0ACwsgASIAIARGDQELIABBf3MgBGohCkEAIQYgCARAA0AgAyAAQQJ0IgtqIAIgC2oqAgCMOAIAIABBAWohACAGQQFqIgYgCEcNAAsLIApBA0kNAANAIAMgAEECdCIGaiACIAZqKgIAjDgCACADIAZBBGoiCmogAiAKaioCAIw4AgAgAyAGQQhqIgpqIAIgCmoqAgCMOAIAIAMgBkEMaiIGaiACIAZqKgIAjDgCACAAQQRqIgAgBEcNAAsLIAdBAWoiByANRw0ACwsgBUEQaiQADAELIAVB+B42AgggBUHvxAA2AgQMJwsMHwsgASgCTCECIwBBEGsiBSQAAkAgAigCAEUEQAJAAkAgACgCAA4DAQABAAsgAikDKCACKQMgIAIpAxh+fqciDUEATA0AIAIoAhAiBEEATA0AIAIoAjQhDiABKAI0IQwgAigCgAEhESABKAKAASEPIARBA3EhCCAEQXxxIQEgBEEEayISQQJ2QQFqIgBB/P///wdxIRAgAEEDcSEJIARBBEkhEwNAIBEgByAObGohAiAPIAcgDGxqIQNBACEAAkACQCATDQAgAyACa0EQSQ0AQQAhCkEAIQsgEkEMTwRAA0AgAyAAQQJ0IgZq/QwAAIA/AACAPwAAgD8AAIA//QwAAAAAAAAAAAAAAAAAAAAAIAIgBmr9AAIA/QwAAAAAAAAAAAAAAAAAAAAA/UT9Uv0LAgAgAyAGQRByIhRq/QwAAIA/AACAPwAAgD8AAIA//QwAAAAAAAAAAAAAAAAAAAAAIAIgFGr9AAIA/QwAAAAAAAAAAAAAAAAAAAAA/UT9Uv0LAgAgAyAGQSByIhRq/QwAAIA/AACAPwAAgD8AAIA//QwAAAAAAAAAAAAAAAAAAAAAIAIgFGr9AAIA/QwAAAAAAAAAAAAAAAAAAAAA/UT9Uv0LAgAgAyAGQTByIgZq/QwAAIA/AACAPwAAgD8AAIA//QwAAAAAAAAAAAAAAAAAAAAAIAIgBmr9AAIA/QwAAAAAAAAAAAAAAAAAAAAA/UT9Uv0LAgAgAEEQaiEAIAtBBGoiCyAQRw0ACwsgCQRAA0AgAyAAQQJ0IgZq/QwAAIA/AACAPwAAgD8AAIA//QwAAAAAAAAAAAAAAAAAAAAAIAIgBmr9AAIA/QwAAAAAAAAAAAAAAAAAAAAA/UT9Uv0LAgAgAEEEaiEAIApBAWoiCiAJRw0ACwsgASIAIARGDQELIABBf3MgBGohCkEAIQYgCARAA0AgAyAAQQJ0IgtqQwAAgD9DAAAAACACIAtqKgIAQwAAAABeGzgCACAAQQFqIQAgBkEBaiIGIAhHDQALCyAKQQNJDQADQCADIABBAnQiBmpDAACAP0MAAAAAIAIgBmoqAgBDAAAAAF4bOAIAIAMgBkEEaiIKakMAAIA/QwAAAAAgAiAKaioCAEMAAAAAXhs4AgAgAyAGQQhqIgpqQwAAgD9DAAAAACACIApqKgIAQwAAAABeGzgCACADIAZBDGoiBmpDAACAP0MAAAAAIAIgBmoqAgBDAAAAAF4bOAIAIABBBGoiACAERw0ACwsgB0EBaiIHIA1HDQALCyAFQRBqJAAMAQsgBUH4HjYCCCAFQZnFADYCBAwmCwweCyABKAJMIQIjAEEQayIFJAACQCACKAIARQRAAkACQCAAKAIADgMBAAEACyACKQMoIAIpAyAgAikDGH5+pyINQQBMDQAgAigCECIEQQBMDQAgAigCNCEOIAEoAjQhDCACKAKAASERIAEoAoABIQ8gBEEDcSEIIARBfHEhASAEQQRrIhJBAnZBAWoiAEH8////B3EhECAAQQNxIQkgBEEESSETA0AgESAHIA5saiECIA8gByAMbGohA0EAIQACQAJAIBMNACADIAJrQRBJDQBBACEKQQAhCyASQQxPBEADQCADIABBAnQiBmogAiAGav0AAgAiWf0MAAAAAAAAAAAAAAAAAAAAACBZ/QwAAAAAAAAAAAAAAAAAAAAA/UT9Uv0LAgAgAyAGQRByIhRqIAIgFGr9AAIAIln9DAAAAAAAAAAAAAAAAAAAAAAgWf0MAAAAAAAAAAAAAAAAAAAAAP1E/VL9CwIAIAMgBkEgciIUaiACIBRq/QACACJZ/QwAAAAAAAAAAAAAAAAAAAAAIFn9DAAAAAAAAAAAAAAAAAAAAAD9RP1S/QsCACADIAZBMHIiBmogAiAGav0AAgAiWf0MAAAAAAAAAAAAAAAAAAAAACBZ/QwAAAAAAAAAAAAAAAAAAAAA/UT9Uv0LAgAgAEEQaiEAIAtBBGoiCyAQRw0ACwsgCQRAA0AgAyAAQQJ0IgZqIAIgBmr9AAIAIln9DAAAAAAAAAAAAAAAAAAAAAAgWf0MAAAAAAAAAAAAAAAAAAAAAP1E/VL9CwIAIABBBGohACAKQQFqIgogCUcNAAsLIAEiACAERg0BCyAAQX9zIARqIQpBACEGIAgEQANAIAMgAEECdCILaiACIAtqKgIAImJDAAAAACBiQwAAAABeGzgCACAAQQFqIQAgBkEBaiIGIAhHDQALCyAKQQNJDQADQCADIABBAnQiBmogAiAGaioCACJiQwAAAAAgYkMAAAAAXhs4AgAgAyAGQQRqIgpqIAIgCmoqAgAiYkMAAAAAIGJDAAAAAF4bOAIAIAMgBkEIaiIKaiACIApqKgIAImJDAAAAACBiQwAAAABeGzgCACADIAZBDGoiBmogAiAGaioCACJiQwAAAAAgYkMAAAAAXhs4AgAgAEEEaiIAIARHDQALCyAHQQFqIgcgDUcNAAsLIAVBEGokAAwBCyAFQfgeNgIIIAVBw8UANgIEDCULDB0LIAEoAkwhBCMAQUBqIgMkAAJAAkACQAJAIAQoAgBFBEAgBCgCMEEERw0BIAQoAjQiBq0iQCAEKQMQIj5CAoZSDQEgBDUCOCI/IEAgBCkDGCJCflINASAENQI8ID8gBCkDICJAflINASABKAIwIgIgASgCAEECdCIFQfDmAGooAgBHDQIgASgCNCIIrSI/IAEpAxAiQSACrX4gBUGw5wBqNAIAf1INAiABNQI4IkMgPyABKQMYIkR+Ug0CIAE1AjwgQyABKQMgIj9+Ug0CID4gQVINAyBCIERSDQMgPyBAUg0DIAQpAygiPyABKQMoUg0DAkACQCAAKAIADgMBAAEACyBAIEJ+ID9+pyICIAAoAggiBWpBAWsgBW0iCSAAKAIEIgBsIgUgBSAJaiIHIAIgAiAHShsiCk4NACA+pyIHQQBMDQAgB0F8cSECIAQoAoABIgsgACAGbCAJbGohDSABKAKAASIOIAAgCGwgCWxqIQxBACEBIAdBBEkhEQNAIAsgBSAGbGohBCAOIAUgCGxqIQlBACEAAkACQCARDQAgDCABIAhsaiANIAEgBmxqa0EQSQ0AA0AgCSAAQQJ0Ig9q/QwAfgAAAH4AAAB+AAAAfgAAIAQgD2r9AAIAIln94AH9DAAAgHcAAIB3AACAdwAAgHf95gH9DAAAgAgAAIAIAACACAAAgAj95gEgWUEB/asBIlr9DAAAAP8AAAD/AAAA/wAAAP/9Tv0MAAAAcQAAAHEAAABxAAAAcf25AUEB/a0B/QwAAIAHAACABwAAgAcAAIAH/a4B/eQBIltBDf2tAf0MAHwAAAB8AAAAfAAAAHwAAP1OIFv9DP8PAAD/DwAA/w8AAP8PAAD9Tv2uASBa/QwAAAD/AAAA/wAAAP8AAAD//Tz9UiBZQRD9rQH9DACAAAAAgAAAAIAAAACAAAD9Tv1QIln9GwBBAXRBwJYTav0MAAAAAAAAAAAAAAAAAAAAAP1VAQAAIlr9GwBBAnRBwJYDav0JAgAgWf0bAUEBdEHAlhNqIFr9VQEAAiJa/RsBQQJ0QcCWA2oqAgD9IAEgWf0bAkEBdEHAlhNqIFr9VQEABCJa/RsCQQJ0QcCWA2oqAgD9IAIgWf0bA0EBdEHAlhNqIFr9VQEABv0bA0ECdEHAlgNqKgIA/SAD/QsCACAAQQRqIgAgAkcNAAsgAiIAIAdGDQELA0AgCSAAQQJ0Ig9qQYD8ASAEIA9qKgIAImKLQwAAgHeUQwAAgAiUQYCAgIgHIGK8Ig9BAXQiEkGAgIB4cSIQIBBBgICAiAdNG0EBdkGAgIA8ar6SvCIQQQ12QYD4AXEgEEH/H3FqIBJBgICAeEsbIA9BEHZBgIACcXJBAXRBwJYTai8BAEECdEHAlgNqKgIAOAIAIABBAWoiACAHRw0ACwsgAUEBaiEBIAVBAWoiBSAKRw0ACwsgA0FAayQADAQLIANB+B42AjggA0H+xQA2AjQMKgsgA0HdzAA2AiggA0HOxQA2AiQMKgsgA0GKwAA2AhggA0HPxQA2AhQMKgsgA0GawwA2AgggA0HQxQA2AgQMJQsMHAsgASgCTCEEIwBBQGoiAyQAAkACQAJAAkAgBCgCAEUEQCAEKAIwQQRHDQEgBCgCNCIGrSJAIAQpAxAiPkIChlINASAENQI4Ij8gQCAEKQMYIkJ+Ug0BIAQ1AjwgPyAEKQMgIkB+Ug0BIAEoAjAiAiABKAIAQQJ0IgVB8OYAaigCAEcNAiABKAI0IgitIj8gASkDECJBIAKtfiAFQbDnAGo0AgB/Ug0CIAE1AjgiQyA/IAEpAxgiRH5SDQIgATUCPCBDIAEpAyAiP35SDQIgPiBBUg0DIEIgRFINAyA/IEBSDQMgBCkDKCI/IAEpAyhSDQMCQAJAIAAoAgAOAwEAAQALIEAgQn4gP36nIgIgACgCCCIFakEBayAFbSIJIAAoAgQiAGwiBSAFIAlqIgcgAiACIAdKGyIKTg0AID6nIgdBAEwNACAHQXxxIQIgBCgCgAEiCyAAIAZsIAlsaiENIAEoAoABIg4gACAIbCAJbGohDEEAIQEgB0EESSERA0AgCyAFIAZsaiEEIA4gBSAIbGohCUEAIQACQAJAIBENACAMIAEgCGxqIA0gASAGbGprQRBJDQADQCAJIABBAnQiD2r9DAB+AAAAfgAAAH4AAAB+AAAgBCAPav0AAgAiWf3gAf0MAACAdwAAgHcAAIB3AACAd/3mAf0MAACACAAAgAgAAIAIAACACP3mASBZQQH9qwEiWv0MAAAA/wAAAP8AAAD/AAAA//1O/QwAAABxAAAAcQAAAHEAAABx/bkBQQH9rQH9DAAAgAcAAIAHAACABwAAgAf9rgH95AEiW0EN/a0B/QwAfAAAAHwAAAB8AAAAfAAA/U4gW/0M/w8AAP8PAAD/DwAA/w8AAP1O/a4BIFr9DAAAAP8AAAD/AAAA/wAAAP/9PP1SIFlBEP2tAf0MAIAAAACAAAAAgAAAAIAAAP1O/VAiWf0bAEEBdEHAlhtq/QwAAAAAAAAAAAAAAAAAAAAA/VUBAAAiWv0bAEECdEHAlgNq/QkCACBZ/RsBQQF0QcCWG2ogWv1VAQACIlr9GwFBAnRBwJYDaioCAP0gASBZ/RsCQQF0QcCWG2ogWv1VAQAEIlr9GwJBAnRBwJYDaioCAP0gAiBZ/RsDQQF0QcCWG2ogWv1VAQAG/RsDQQJ0QcCWA2oqAgD9IAP9CwIAIABBBGoiACACRw0ACyACIgAgB0YNAQsDQCAJIABBAnQiD2pBgPwBIAQgD2oqAgAiYotDAACAd5RDAACACJRBgICAiAcgYrwiD0EBdCISQYCAgHhxIhAgEEGAgICIB00bQQF2QYCAgDxqvpK8IhBBDXZBgPgBcSAQQf8fcWogEkGAgIB4SxsgD0EQdkGAgAJxckEBdEHAlhtqLwEAQQJ0QcCWA2oqAgA4AgAgAEEBaiIAIAdHDQALCyABQQFqIQEgBUEBaiIFIApHDQALCyADQUBrJAAMBAsgA0H4HjYCOCADQbvGADYCNAwpCyADQd3MADYCKCADQYvGADYCJAwpCyADQYrAADYCGCADQYzGADYCFAwpCyADQZrDADYCCCADQY3GADYCBAwkCwwbCyABKAJMIQQgASgCUCEFIwBB4ABrIgMkAAJAAkACQAJAAkACQCAEKAIARQRAIAUoAjAiAiAFKAIAQQJ0IgdB8OYAaigCAEcNASAFKAI0IgmtIkAgBSkDECI+IAKtfiAHQbDnAGo0AgB/Ug0BIAU1AjgiPyBAIAUpAxgiQn5SDQEgBTUCPCA/IAUpAyAiQH5SDQEgBCgCMEEERw0CIAQoAjQiCq0iQyAEKQMQIj9CAoZSDQIgBDUCOCJEIEMgBCkDGCJBflINAiAENQI8IEQgBCkDICJDflINAiABKAIwIgIgASgCAEECdCIHQfDmAGooAgBHDQMgASgCNCILrSJEIAEpAxAiRSACrX4gB0Gw5wBqNAIAf1INAyABNQI4IkYgRCABKQMYIkd+Ug0DIAE1AjwgRiABKQMgIkR+Ug0DID8gRVINBCBBIEdSDQQgQyBEUg0EIAQpAygiRCABKQMoUg0EID4gP1INBSBBIEJSDQUgQCBDUg0FIEQgBSkDKFINBQJAAkAgACgCAA4DAQABAAsgQCBCfiBEfqciAiAAKAIIIgdqQQFrIAdtIgYgACgCBCIAbCIHIAYgB2oiCCACIAIgCEobIg5ODQAgPqciCEEATA0AIAhBfHEhAiAFKAKAASIMIAAgCWwgBmxqIREgBCgCgAEiDyAAIApsIAZsaiESIAEoAoABIhAgACALbCAGbGohE0EAIQEgCEEESSEUA0AgDCAHIAlsaiEEIA8gByAKbGohBSAQIAcgC2xqIQZBACEAAkACQCAUDQAgEyABIAtsaiINIBIgASAKbGprQRBJDQAgDSARIAEgCWxqa0EQSQ0AA0D9DAB+AAAAfgAAAH4AAAB+AAAgBSAAQQJ0Ig1q/QACACJZ/eAB/QwAAIB3AACAdwAAgHcAAIB3/eYB/QwAAIAIAACACAAAgAgAAIAI/eYBIFlBAf2rASJa/QwAAAD/AAAA/wAAAP8AAAD//U79DAAAAHEAAABxAAAAcQAAAHH9uQFBAf2tAf0MAACABwAAgAcAAIAHAACAB/2uAf3kASJbQQ39rQH9DAB8AAAAfAAAAHwAAAB8AAD9TiBb/Qz/DwAA/w8AAP8PAAD/DwAA/U79rgEgWv0MAAAA/wAAAP8AAAD/AAAA//08/VIgWUEQ/a0B/QwAgAAAAIAAAACAAAAAgAAA/U79UCJZ/RsAQQJ0QcCWA2r9CQIAIFn9GwFBAnRBwJYDaioCAP0gASBZ/RsCQQJ0QcCWA2oqAgD9IAIgWf0bA0ECdEHAlgNqKgIA/SADIlr94QEiWf0fABBoIWIgWf0fARBoIWMgWf0fAhBoIWQgWf0fAxBoIWUgBiANaiAEIA1q/QACAP0MAACAPwAAgD8AAIA/AACAP/0MAACAPwAAgD8AAIA/AACAPyBi/RMgY/0gASBk/SACIGX9IAP95AH95wEiWf3mASBa/QwAAIA/AACAPwAAgD8AAIA/IFn95QH95gH9DAAAgD8AAIA/AACAPwAAgD/95AH95gH9CwIAIABBBGoiACACRw0ACyACIgAgCEYNAQsDQEGA/AEgBSAAQQJ0Ig1qKgIAImKLQwAAgHeUQwAAgAiUQYCAgIgHIGK8IhVBAXQiFkGAgIB4cSIXIBdBgICAiAdNG0EBdkGAgIA8ar6SvCIXQQ12QYD4AXEgF0H/H3FqIBZBgICAeEsbIBVBEHZBgIACcXJBAnRBwJYDaioCACJijBBoIWMgBiANaiAEIA1qKgIAQwAAgD8gY0MAAIA/kpUiY5QgYkMAAIA/IGOTlEMAAIA/kpQ4AgAgAEEBaiIAIAhHDQALCyABQQFqIQEgB0EBaiIHIA5HDQALCyADQeAAaiQADAYLIANB+B42AlggA0H8xgA2AlQgA0GRJDYCUEG4nwIoAgBBiNIAIANB0ABqEDIMLwsgA0GqyQA2AkggA0HIxgA2AkQgA0GRJDYCQEG4nwIoAgBBiNIAIANBQGsQMgwuCyADQd3MADYCOCADQcnGADYCNCADQZEkNgIwQbifAigCAEGI0gAgA0EwahAyDC0LIANBisAANgIoIANBysYANgIkIANBkSQ2AiBBuJ8CKAIAQYjSACADQSBqEDIMLAsgA0GawwA2AhggA0HLxgA2AhQgA0GRJDYCEEG4nwIoAgBBiNIAIANBEGoQMgwrCyADQcPJADYCCCADQczGADYCBCADQZEkNgIAQbifAigCAEGI0gAgAxAyDCoLDBoLIAEoAkwhBSMAQTBrIgQkAAJAIAUoAgBFBEACQCAFKQMQIj8gASkDEFINACAFKQMYIkUgASkDGFINACAFKQMgIkYgASkDIFINACAFKQMoIkcgASkDKFINAAJAAkACQCAAKAIADgMBAAEACyAFKAIwQQRHDQEgR0IAVw0AIEZCAFcNACBFIAA0AgQiQlcNACABKAI8IQogASgCOCELIAEoAjQhDSAFKAI8IQ4gBSgCOCEMIAUoAjQhESAANAIIIUogP7khbCA/pyIGQXBxIgIgBkEPcSIPIAZBA3EiEmsiEGohAyA/Qn6DIUsgP0IBgyFNID9CfIMhTiA/QgODIUggAkEBayITQQR2QQFqIgBB/v///wFxIRQgAEEBcSEVA0AgCiBDpyIAbCEWIAAgDmwhF0IAIUQDQCALIESnIgBsIRggACAMbCEZIEIhPgNAIAUoAoABIBlqIBdqIBEgPqciCGxqIQBEAAAAAAAAAAAhakQAAAAAAAAAACFrAkAgP0IAVyIJDQBCACFBQgAhQEIAIUkgP0IDVgRAA0AgayAAIECnQQJ0IgdqKgIAu6AgACAHQQRyaioCALugIAAgB0EIcmoqAgC7oCAAIAdBDHJqKgIAu6AhayBAQgR8IUAgSUIEfCJJIE5SDQALCyBIUA0AA0AgayAAIECnQQJ0aioCALugIWsgQEIBfCFAIEFCAXwiQSBIUg0ACwsgASgCgAEgGGogFmogCCANbGohBwJAIAkNACBrIGyjtiFiQgAhQEIAIUEgP0IBUgRAA0AgByBAp0ECdCIIaiAAIAhqKgIAIGKTImM4AgAgByAIQQRyIghqIAAgCGoqAgAgYpMiZDgCACBqIGMgY5S7oCBkIGSUu6AhaiBAQgJ8IUAgQUICfCJBIEtSDQALCyBNUA0AIAcgQKdBAnQiCGogACAIaioCACBikyJiOAIAIGogYiBilLugIWoLQwAAgD8gaiBso7ZDrMUnN5KRlSFiAkAgAkEATA0AIGL9EyFZQQAhCEEAIQkgE0EPRwRAA0AgByAIQQJ0IhpqIgAgWSAA/QAAAP3mAf0LAAAgACBZIAD9AAAQ/eYB/QsAECAAIFkgAP0AACD95gH9CwAgIAAgWSAA/QAAMP3mAf0LADAgByAaQcAAcmoiACBZIAD9AAAA/eYB/QsAACAAIFkgAP0AABD95gH9CwAQIAAgWSAA/QAAIP3mAf0LACAgACBZIAD9AAAw/eYB/QsAMCAIQSBqIQggCUECaiIJIBRHDQALCyAVRQ0AIAcgCEECdGoiACBZIAD9AAAA/eYB/QsAACAAIFkgAP0AABD95gH9CwAQIAAgWSAA/QAAIP3mAf0LACAgACBZIAD9AAAw/eYB/QsAMAsCQCACIAZODQAgAiEAIA9BBE8EQCBi/RMhWUEAIQADQCAHIAAgAmpBAnRqIgggWSAI/QACAP3mAf0LAgAgAEEEaiIAIBBHDQALIAMhACASRQ0BCwNAIAcgAEECdGoiCCBiIAgqAgCUOAIAIABBAWoiACAGRw0ACwsgPiBKfCI+IEVTDQALIERCAXwiRCBGUg0ACyBDQgF8IkMgR1INAAsLIARBMGokAAwDCyAEQfTDADYCCCAEQY3HADYCBAwlCyAEQZrDADYCGCAEQYfHADYCFAwoCyAEQfgeNgIoIARBy8cANgIkDCgLDBkLIAEoAkwhBSMAQTBrIgQkAAJAIAUoAgBFBEACQCAFKQMQIkAgASkDEFINACAFKQMYIkQgASkDGFINACAFKQMgIkUgASkDIFINACAFKQMoIkYgASkDKFINAAJAAkACQCAAKAIADgMBAAEACyAFKAIwQQRHDQEgRkIAVw0AIEVCAFcNACBEIAA0AgQiQlcNACABKAI8IQogASgCOCELIAEoAjQhDSAFKAI8IQ4gBSgCOCEMIAUoAjQhESBApyIHQQJ0IQ8gADQCCCFKIEC5IWsgB0FwcSICIAdBD3EiEiAHQQNxIhBrIhNqIQMgQEJ8gyFLIEBCA4MhRyACQQFrIhRBBHZBAWoiAEH+////AXEhFSAAQQFxIRYDQCAKIEGnIgBsIRcgACAObCEYQgAhQwNAIAsgQ6ciAGwhGSAAIAxsIRogQiE+A0AgBSgCgAEgGmogGGogESA+pyIIbGohAAJAIEBCAFcEQEQAAAAAAAAAACFqDAELRAAAAAAAAAAAIWpCACFIQgAhP0IAIUkgQEIDVgRAA0AgaiAAID+nQQJ0IgZqKgIAImIgYpS7oCAAIAZBBHJqKgIAImIgYpS7oCAAIAZBCHJqKgIAImIgYpS7oCAAIAZBDHJqKgIAImIgYpS7oCFqID9CBHwhPyBJQgR8IkkgS1INAAsLIEdQDQADQCBqIAAgP6dBAnRqKgIAImIgYpS7oCFqID9CAXwhPyBIQgF8IkggR1INAAsLIAEoAoABIBlqIBdqIAggDWxqIgYgACAP/AoAAEMAAIA/IGoga6O2Q703hjWSkZUhYgJAIAJBAEwNACBi/RMhWUEAIQhBACEJIBRBD0cEQANAIAYgCEECdCIbaiIAIFkgAP0AAAD95gH9CwAAIAAgWSAA/QAAEP3mAf0LABAgACBZIAD9AAAg/eYB/QsAICAAIFkgAP0AADD95gH9CwAwIAYgG0HAAHJqIgAgWSAA/QAAAP3mAf0LAAAgACBZIAD9AAAQ/eYB/QsAECAAIFkgAP0AACD95gH9CwAgIAAgWSAA/QAAMP3mAf0LADAgCEEgaiEIIAlBAmoiCSAVRw0ACwsgFkUNACAGIAhBAnRqIgAgWSAA/QAAAP3mAf0LAAAgACBZIAD9AAAQ/eYB/QsAECAAIFkgAP0AACD95gH9CwAgIAAgWSAA/QAAMP3mAf0LADALAkAgAiAHTg0AIAIhACASQQRPBEAgYv0TIVlBACEAA0AgBiAAIAJqQQJ0aiIIIFkgCP0AAgD95gH9CwIAIABBBGoiACATRw0ACyADIQAgEEUNAQsDQCAGIABBAnRqIgggYiAIKgIAlDgCACAAQQFqIgAgB0cNAAsLID4gSnwiPiBEUw0ACyBDQgF8IkMgRVINAAsgQUIBfCJBIEZSDQALCyAEQTBqJAAMAwsgBEH0wwA2AgggBEHaxwA2AgQMJAsgBEGawwA2AhggBEHUxwA2AhQMJwsgBEH4HjYCKCAEQZXIADYCJAwnCwwYCyABKAJMIQogASgCUCELIAEhBSMAQTBrIgkkAAJAIAooAgBFBEACQCAKKQMQIkAgBSkDEFINACAKKQMYIkQgBSkDGFINACAKKQMgIkUgBSkDIFINACAKKQMoIkYgBSkDKFINACBAIAspAxBSDQAgRCALKQMYUg0AIEUgCykDIFINACBGIAspAyhSDQACQAJAAkAgACgCAA4DAQABAAsgCigCMEEERw0BIEZCAFcNACBFQgBXDQAgRCAAKAIEIgSsIkJXDQAgQLQhYyAAKAIIIgCsIUggQKciBkFwcSIBIAZBD3EiByAGQQNxIg1rIhBqIQIgBkECdCIDIAsoAjQiEyAEbGqtIUkgBSgCNCIUIARsIgggA2qtIUogBkF8cSEDIEBCfoMhSyBAQgGDIU0gCigCNCIVIABsISQgACAUbCEhIAAgE2whJyABQQFrIhZBBHZBAWoiAEH+////AXEhFyAAQQFxIRggBkEEayIZQQJ2QQFqIgBB/P///wdxIRogAEEDcSEPIAQgFWytIU4gCK0hTyAKKAI4IiWtIVAgCigCPCIprSFRIAUoAjgiKq0hUiAFKAI8IiutIVMgCygCOCIsrSFUIAsoAjwiLa0hTCAGQQhJIRsgB0EESSEdA0AgKyA/pyIAbCEuIAAgLWwhLyAAIClsITAgPyBMfiBJfCFVID8gU34iPiBKfCFWID8gUX4gTnwhVyA+IE98IVhCACFBA0AgKiBBpyIAbCEoIAAgLGwhNCAAICVsITUgVSBBIFR+fKchNiBWIEEgUn4iPnynITcgVyBBIFB+fKchOCA+IFh8pyE5QQAhDiBCIT4DQCALKAKAASI6IDRqIC9qIBMgPqciBGxqIQggCigCgAEiESA1aiAwaiAEIBVsaiEAAkAgQEIAVwRARAAAAAAAAAAAIWpEAAAAAAAAAAAhawwBC0QAAAAAAAAAACFrQgAhQ0QAAAAAAAAAACFqQgAhRyBAQgFSBEADQCBrIAAgQ6dBAnQiB2oqAgAiYiAHIAhqKgIAlLugIAAgB0EEciIHaioCACJkIAcgCGoqAgCUu6AhayBqIGIgYpS7oCBkIGSUu6AhaiBDQgJ8IUMgR0ICfCJHIEtSDQALCyBNUA0AIGsgACBDp0ECdCIHaioCACJiIAcgCGoqAgCUu6AhayBqIGIgYpS7oCFqCyAOICFsIRwgBSgCgAEiHiAoaiAuaiAEIBRsaiEHIGNDvTeGNZQgarYiYpIhZAJAIAZBAEwiMQ0AQQAhDEEAIQQCQCAbDQAgHCA5aiAeaiAOICRsIDhqIBFqa0EQSQ0AQQAhEUEAISMgGUEMTwRAA0AgByAEQQJ0IhJqIAAgEmr9AAIA/QsCACAHIBJBEHIiIGogACAgav0AAgD9CwIAIAcgEkEgciIgaiAAICBq/QACAP0LAgAgByASQTByIhJqIAAgEmr9AAIA/QsCACAEQRBqIQQgI0EEaiIjIBpHDQALCyAPBEADQCAHIARBAnQiEmogACASav0AAgD9CwIAIARBBGohBCARQQFqIhEgD0cNAAsLIAMiBCAGRg0BCyAEQX9zIAZqIREgDQRAA0AgByAEQQJ0IhJqIAAgEmoqAgA4AgAgBEEBaiEEIAxBAWoiDCANRw0ACwsgEUEDSQ0AA0AgByAEQQJ0IgxqIAAgDGoqAgA4AgAgByAMQQRqIhFqIAAgEWoqAgA4AgAgByAMQQhqIhFqIAAgEWoqAgA4AgAgByAMQQxqIgxqIAAgDGoqAgA4AgAgBEEEaiIEIAZHDQALCyBiIGOVIWUga7aMIGSVIWICQCABQQBMIiMNACBi/RMhWUEAIQRBACEMIBZBD0cEQANAIAcgBEECdCIRaiIAIFkgAP0AAAD95gH9CwAAIAAgWSAA/QAAEP3mAf0LABAgACBZIAD9AAAg/eYB/QsAICAAIFkgAP0AADD95gH9CwAwIAcgEUHAAHJqIgAgWSAA/QAAAP3mAf0LAAAgACBZIAD9AAAQ/eYB/QsAECAAIFkgAP0AACD95gH9CwAgIAAgWSAA/QAAMP3mAf0LADAgBEEgaiEEIAxBAmoiDCAXRw0ACwsgGEUNACAHIARBAnRqIgAgWSAA/QAAAP3mAf0LAAAgACBZIAD9AAAQ/eYB/QsAECAAIFkgAP0AACD95gH9CwAgIAAgWSAA/QAAMP3mAf0LADALIGVDvTeGNZIhZAJAIAEgBk4iIA0AIAEhACAdRQRAIGL9EyFZQQAhAANAIAcgACABakECdGoiBCBZIAT9AAIA/eYB/QsCACAAQQRqIgAgEEcNAAsgAiEAIA1FDQELA0AgByAAQQJ0aiIEIGIgBCoCAJQ4AgAgAEEBaiIAIAZHDQALCyBkkSFiAkAgMQ0AQQAhBEEAIQACQCAbDQAgCCAeIBwgN2pqSSA6IA4gJ2wgNmpqIAdLcQ0AQQAhEkEAIREgGUEMTwRAA0AgByAAQQJ0IgxqIhwgCCAMav0AAgAgHP0AAgD95AH9CwIAIAcgDEEQciIcaiIeIAggHGr9AAIAIB79AAIA/eQB/QsCACAHIAxBIHIiHGoiHiAIIBxq/QACACAe/QACAP3kAf0LAgAgByAMQTByIgxqIhwgCCAMav0AAgAgHP0AAgD95AH9CwIAIABBEGohACARQQRqIhEgGkcNAAsLIA8EQANAIAcgAEECdCIMaiIRIAggDGr9AAIAIBH9AAIA/eQB/QsCACAAQQRqIQAgEkEBaiISIA9HDQALCyADIgAgBkYNAQsgAEF/cyAGaiEMIA0EQANAIAcgAEECdCIRaiISIAggEWoqAgAgEioCAJI4AgAgAEEBaiEAIARBAWoiBCANRw0ACwsgDEEDSQ0AA0AgByAAQQJ0IgRqIgwgBCAIaioCACAMKgIAkjgCACAHIARBBGoiDGoiESAIIAxqKgIAIBEqAgCSOAIAIAcgBEEIaiIMaiIRIAggDGoqAgAgESoCAJI4AgAgByAEQQxqIgRqIgwgBCAIaioCACAMKgIAkjgCACAAQQRqIgAgBkcNAAsLQwAAgD8gYpUhYgJAICMNACBi/RMhWUEAIQBBACEEIBZBD0cEQANAIAcgAEECdCIMaiIIIFkgCP0AAAD95gH9CwAAIAggWSAI/QAAEP3mAf0LABAgCCBZIAj9AAAg/eYB/QsAICAIIFkgCP0AADD95gH9CwAwIAcgDEHAAHJqIgggWSAI/QAAAP3mAf0LAAAgCCBZIAj9AAAQ/eYB/QsAECAIIFkgCP0AACD95gH9CwAgIAggWSAI/QAAMP3mAf0LADAgAEEgaiEAIARBAmoiBCAXRw0ACwsgGEUNACAHIABBAnRqIgAgWSAA/QAAAP3mAf0LAAAgACBZIAD9AAAQ/eYB/QsAECAAIFkgAP0AACD95gH9CwAgIAAgWSAA/QAAMP3mAf0LADALAkAgIA0AIAEhACAdRQRAIGL9EyFZQQAhAANAIAcgACABakECdGoiBCBZIAT9AAIA/eYB/QsCACAAQQRqIgAgEEcNAAsgAiEAIA1FDQELA0AgByAAQQJ0aiIEIGIgBCoCAJQ4AgAgAEEBaiIAIAZHDQALCyAOQQFqIQ4gPiBIfCI+IERTDQALIEFCAXwiQSBFUg0ACyA/QgF8Ij8gRlINAAsLIAlBMGokAAwDCyAJQfTDADYCCCAJQabIADYCBCAJQZEkNgIAQbifAigCAEGI0gAgCRAyDCkLIAlB58sANgIYIAlBoMgANgIUIAlBkSQ2AhBBuJ8CKAIAQYjSACAJQRBqEDIMKAsgCUH4HjYCKCAJQdLJADYCJCAJQZEkNgIgQbifAigCAEGI0gAgCUEgahAyDCcLDBcLIAAhAiABKAJMIQAgASgCUCEDIwBBkANrIgQkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAiBUEJTQRAQQEgBXRBzAdxDQEgBUUNAiAFQQFGDQMLIARB+B42AgggBEHxzgA2AgQgBEGRJDYCAEG4nwIoAgBBiNIAIAQQMgw1CyAAKQMgIkQgAykDIFEEQCAAKQMoIj8gAykDKFEEQCBEIAEpAyBRBEAgPyABKQMoUQRAIAAoAjAgBUECdEHw5gBqKAIARgRAIAMoAjBBBEYEQCABKAIwQQRGBEAgASgCNCIHQQNKBEAgASgCOCIIIAdOBEAgASgCPCIJIAhOBEAgACkDGCJAIAEpAxBRBEAgAykDGCJCIAEpAxhRBEAgBUEYbCIFQcTkAGooAgAhBwJAAkAgAigCAA4DAAEQAQsgAykDECI+IAdBAnQiAEHw5gBqNQIAfiAAQbDnAGo0AgB/IUAgP0IAVw0PIERCAFcNDyBCQgBXDQ8gAygCPCEJIAMoAjghCiADKAI0IQEgBUG85ABqKAIAIQUgQKchByA+pyEGIEJCfoMhRSBCQgGDIUYgAigCECEAA0AgCSBDp2whAkIAIUADQCAKIECnbCEIQgAhPkIAIUEgQkIBUgRAA0AgAygCgAEgAmogCGogASA+pyILbGogACAGIAURBQAgAygCgAEgAmogCGogASALQQFybGogACAHaiIAIAYgBREFACA+QgJ8IT4gACAHaiEAIEFCAnwiQSBFUg0ACwsgRqcEQCADKAKAASACaiAIaiABID6nbGogACAGIAURBQAgACAHaiEACyBAQgF8IkAgRFINAAsgQ0IBfCJDID9SDQALDA8LIAApAxAiPiAHQQJ0IgNB8OYAajUCAH4gA0Gw5wBqNAIAfyFDIEAgRH4iRSA/fqciAyACKAIIIgdqQQFrIAdtIgYgAigCBGwiByAGIAdqIgYgAyADIAZKGyIKTg0OIAAoAjwhCyAAKAI4IQ0gACgCNCEOIAVBwOQAaigCACEDIAIoAhAhDCBCQn6DIUYgQkIBgyFHIEIgQ34hSCAHrCE/ID6nIQIDQCA/ID8gRX8iQcQgRX59IkkgQH8hPgJAIEJCAFcNACABKAKAASAIID6nIgdsIAkgQaciBmxqIEkgPiBAfn2nIhFBAnRqaiEFIAAoAoABIAcgDWwgBiALbGogDiARbGpqIQcgDCBIID4gQSBEfnx+p2ohBkIAIT5CACFBIEJCAVIEQANAIAIgBSA+IEB+p0ECdGogByAGID4gQ36naiADEQcAIAIgBSA+QgGEIkkgQH6nQQJ0aiAHIAYgQyBJfqdqIAMRBwAgPkICfCE+IEFCAnwiQSBGUg0ACwsgR1ANACACIAUgPiBAfqdBAnRqIAcgBiA+IEN+p2ogAxEHAAsgCiA/QgF8Ij+nRw0ACwwOCyAEQdIzNgI4IARBwM0ANgI0IARBkSQ2AjBBuJ8CKAIAQYjSACAEQTBqEDIMPwsgBEHqMzYCSCAEQb/NADYCRCAEQZEkNgJAQbifAigCAEGI0gAgBEFAaxAyDD4LIARBgDA2AiggBEG9zQA2AiQgBEGRJDYCIEG4nwIoAgBBiNIAIARBIGoQMgw9CyAEQZUxNgIYIARBvM0ANgIUIARBkSQ2AhBBuJ8CKAIAQYjSACAEQRBqEDIMPAsgBEG7MzYCWCAEQbvNADYCVCAEQZEkNgJQQbifAigCAEGI0gAgBEHQAGoQMgw7CyAEQdPEADYCaCAEQbrNADYCZCAEQZEkNgJgQbifAigCAEGI0gAgBEHgAGoQMgw6CyAEQf/EADYCeCAEQbfNADYCdCAEQZEkNgJwQbifAigCAEGI0gAgBEHwAGoQMgw5CyAEQfYlNgKIASAEQbbNADYChAEgBEGRJDYCgAFBuJ8CKAIAQYjSACAEQYABahAyDDgLIARBizA2ApgBIARBrs0ANgKUASAEQZEkNgKQAUG4nwIoAgBBiNIAIARBkAFqEDIMNwsgBEHeMjYCqAEgBEGtzQA2AqQBIARBkSQ2AqABQbifAigCAEGI0gAgBEGgAWoQMgw2CyAEQZcwNgK4ASAEQazNADYCtAEgBEGRJDYCsAFBuJ8CKAIAQYjSACAEQbABahAyDDULIARB6jI2AsgBIARBq80ANgLEASAEQZEkNgLAAUG4nwIoAgBBiNIAIARBwAFqEDIMNAsCQCACKAIADgMCAAIACyACKAIIIgcgACkDGCJDIAApAyB+IkQgACkDKH6nIgVqQQFrIAdtIgcgAigCBGwiAiACIAdqIgcgBSAFIAdKGyIHTg0BIAMpAxgiP0IAVw0BIAEoAjwhCSABKAI4IQogASgCNCEFIAMoAjwhESADKAI4IQ8gAygCNCELIAAoAjwhEiAAKAI4IRAgACgCNCETIAEoAjAhDSAHrCFFIAKsIUAgAygCgAEhDiAAKAKAASEUIAEoAoABIQMgACkDEKciB0FwcSICQQBKBEAgB0EDcSEVIAJBf3MgB2pBA0khGANAIAogQCBAIER/Ij7EIER+fSJCIEN/IkGnIgBsIAkgPqciAWxqIA0gQiBBIEN+faciBmxqIRYgFCAAIBBsIAEgEmxqIAYgE2xqaiEGIAAgD2wgASARbGohF0IAIT4CQCACIAdIBEADQCAFID6nIgBsIRkgDiAAIAtsIBdqaiEIQQAhAP0MAAAAAAAAAAAAAAAAAAAAACJaIVn9DAAAAAAAAAAAAAAAAAAAAAAhW/0MAAAAAAAAAAAAAAAAAAAAACFcA0AgWiAGIABBAnQiDGoiAf0AADAgCCAMaiIM/QAAMP3mAf3kASFaIFkgAf0AACAgDP0AACD95gH95AEhWSBbIAH9AAAQIAz9AAAQ/eYB/eQBIVsgXCAB/QAAACAM/QAAAP3mAf3kASFcIABBEGoiACACSA0ACyBcIFv95AEgWSBa/eQB/eQBIln9HwMgWf0fAiBZ/R8AIFn9HwGSkpIhYkEAIQEgAiEAIBUEQANAIAYgAEECdCIMaioCACAIIAxqKgIAlCBikiFiIABBAWohACABQQFqIgEgFUcNAAsLIBhFBEADQCAGIABBAnQiAUEMaiIMaioCACAIIAxqKgIAlCAGIAFBCGoiDGoqAgAgCCAMaioCAJQgBiABQQRqIgxqKgIAIAggDGoqAgCUIAEgBmoqAgAgASAIaioCAJQgYpKSkpIhYiAAQQRqIgAgB0cNAAsLIAMgFiAZamogYjgCACA+QgF8Ij4gP1INAAwCCwALA0AgBSA+pyIAbCEMIA4gACALbCAXamohGUEAIQH9DAAAAAAAAAAAAAAAAAAAAAAiWiFZ/QwAAAAAAAAAAAAAAAAAAAAAIVv9DAAAAAAAAAAAAAAAAAAAAAAhXANAIFogBiABQQJ0IghqIgD9AAAwIAggGWoiCP0AADD95gH95AEhWiBZIAD9AAAgIAj9AAAg/eYB/eQBIVkgWyAA/QAAECAI/QAAEP3mAf3kASFbIFwgAP0AAAAgCP0AAAD95gH95AEhXCABQRBqIgEgAkgNAAsgAyAMIBZqaiBcIFv95AEgWSBa/eQB/eQBIln9HwMgWf0fAiBZ/R8AIFn9HwGSkpI4AgAgPkIBfCI+ID9SDQALCyBAQgF8IkAgRVINAAsMAgsgAiAHTgRAIAVBAUYgP0IDVnEhAiA/QgODIUYgP0J8gyFCIAX9ESFbA0AgCiBAIEAgRH8iPsQgRH59IkEgQ38iR6dsIAkgPqdsaiANIEEgQyBHfn2nbGohAEIAIUFCACE+AkAgAgRAIAD9ESFc/QwAAAAAAQAAAAIAAAADAAAAIVkDQCADIFwgWyBZ/bUB/a4BIlr9GwBqQQA2AgAgAyBa/RsBakEANgIAIAMgWv0bAmpBADYCACADIFr9GwNqQQA2AgAgWf0MBAAAAAQAAAAEAAAABAAAAP2uASFZID5CBHwiPiBCUg0ACyBCIj4gP1ENAQsgPyA+Qn+FfCFHIEZCAFIEQANAIAMgACAFID6nbGpqQQA2AgAgPkIBfCE+IEFCAXwiQSBGUg0ACwsgR0IDVA0AA0AgAyAAIAUgPqciAWxqakEANgIAIAMgACAFIAFBAWpsampBADYCACADIAAgBSABQQJqbGpqQQA2AgAgAyAAIAUgAUEDamxqakEANgIAID5CBHwiPiA/Ug0ACwsgQEIBfCJAIEVSDQALDAILIAdBA3EhDCACQX9zIAdqQQNJIRUDQCAKIEAgQCBEfyI+xCBEfn0iQiBDfyJBpyIAbCAJID6nIgFsaiANIEIgQSBDfn2nIgZsaiEWIBQgACAQbCABIBJsaiAGIBNsamohBiAAIA9sIAEgEWxqIRdCACE+A0AgDiAXIAsgPqciGGxqaiEIQQAhAUMAAAAAIWIgAiEAIAwEQANAIAYgAEECdCIZaioCACAIIBlqKgIAlCBikiFiIABBAWohACABQQFqIgEgDEcNAAsLIBVFBEADQCAGIABBAnQiAUEMaiIZaioCACAIIBlqKgIAlCAGIAFBCGoiGWoqAgAgCCAZaioCAJQgBiABQQRqIhlqKgIAIAggGWoqAgCUIAEgBmoqAgAgASAIaioCAJQgYpKSkpIhYiAAQQRqIgAgB0cNAAsLIAMgBSAYbCAWamogYjgCACA+QgF8Ij4gP1INAAsgQEIBfCJAIEVSDQALDAELIAApAyAiRCADKQMgUg0LIAApAygiRSADKQMoUg0KIAEpAyAgRFINCSABKQMoIEVSDQggACgCMEECRw0HIAEoAjBBBEcNBiABKAI0IgVBA0wNBSAFIAEoAjgiCkoNBCAKIAEoAjwiDEoNAyAAKQMYIkAgASkDEFINAiADKQMYIkEgASkDGFINAQJAAkAgAigCAA4DAAECAQsgRUIAVw0BIERCAFcNASBBQgBXDQEgAykDECJGQgBXDQEgAygCPCEGIAMoAjghCCADKAI0IQkgAigCECEFIAMoAjAiB0EBRiBGQgNWcSEKIEZCfIMiQqchCyAH/REhWyADKAKAASENQQAhAANAIA0gBiBDp2xqIQ5CACE/A0AgDiAIID+nbGohDEIAIUADQCAMIAkgQKdsaiEDAkACQCAKRQRAIAAhAUIAIT4MAQsgACALaiEB/QwAAAAAAQAAAAIAAAADAAAAIVlCACE+A0AgBSAAID6nakEBdGr9DAB+AAAAfgAAAH4AAAB+AAAgAyBbIFn9tQEiWv0bAGr9CQIAIAMgWv0bAWoqAgD9IAEgAyBa/RsCaioCAP0gAiADIFr9GwNqKgIA/SADIlr94AH9DAAAgHcAAIB3AACAdwAAgHf95gH9DAAAgAgAAIAIAACACAAAgAj95gEgWkEB/asBIlz9DAAAAP8AAAD/AAAA/wAAAP/9Tv0MAAAAcQAAAHEAAABxAAAAcf25AUEB/a0B/QwAAIAHAACABwAAgAcAAIAH/a4B/eQBIl1BDf2tAf0MAHwAAAB8AAAAfAAAAHwAAP1OIF39DP8PAAD/DwAA/w8AAP8PAAD9Tv2uASBc/QwAAAD/AAAA/wAAAP8AAAD//Tz9UiBaQRD9rQH9DACAAAAAgAAAAIAAAACAAAD9Tv1QIFr9DQABBAUICQwNAAEAAQABAAH9WwEAACBZ/QwEAAAABAAAAAQAAAAEAAAA/a4BIVkgPkIEfCI+IEJSDQALIAEhACBCIj4gRlENAQsgASEAA0AgBSAAQQF0akGA/AEgAyAHID6nbGoqAgAiYotDAACAd5RDAACACJRBgICAiAcgYrwiAUEBdCIRQYCAgHhxIg8gD0GAgICIB00bQQF2QYCAgDxqvpK8Ig9BDXZBgPgBcSAPQf8fcWogEUGAgIB4SxsgAUEQdkGAgAJxcjsBACAAQQFqIQAgPkIBfCI+IEZSDQALCyBAQgF8IkAgQVINAAsgP0IBfCI/IERSDQALIENCAXwiQyBFUg0ACyACKAIMIABBAXRPDQEgBEGbHTYC+AEgBEHDzAA2AvQBIARBkSQ2AvABQbifAigCAEGI0gAgBEHwAWoQMgwzCyBFIEAgRH4iRn6nIgMgAigCCCIFakEBayAFbSIHIAIoAgRsIgUgBSAHaiIHIAMgAyAHShsiB04NACAAKAI8IREgACgCOCEPIAAoAjQhEiACKAIQIRAgQUJ8gyFCIEEgACkDECJDfiFHIEOnIghBAXEhCyAIQXBxIgJBAXIhAyACQX9zIAhqIQ0gQP0SIV0gB6whSCAFrCE/IAEoAoABIRMgACgCgAEhFANAID8gPyBGfyJFxCBGfn0iSSBAfyE+AkAgQUIAVw0AIBMgCiA+pyIAbCAMIEWnIgFsaiBJID4gQH59pyIFQQJ0amohByAUIAAgD2wgASARbGogBSASbGpqIQYgECBHID4gRCBFfnx+p0EBdGohDiACQQBKBEAgBiACQQF0IhVqIRZCACE+A0AgDiA+IEN+p0EBdGohCUEAIQH9DAAAAAAAAAAAAAAAAAAAAAAiWiFZ/QwAAAAAAAAAAAAAAAAAAAAAIVv9DAAAAAAAAAAAAAAAAAAAAAAhXANAIFogBiABQQF0IgVqIgAvAR5BAnRBwJYDaiAALwEcQQJ0QcCWA2ogAC8BGkECdEHAlgNqIAAvARhBAnRBwJYDav0JAgD9VgIAAf1WAgAC/VYCAAMgBSAJaiIFLwEeQQJ0QcCWA2ogBS8BHEECdEHAlgNqIAUvARpBAnRBwJYDaiAFLwEYQQJ0QcCWA2r9CQIA/VYCAAH9VgIAAv1WAgAD/eYB/eQBIVogWSAALwEWQQJ0QcCWA2ogAC8BFEECdEHAlgNqIAAvARJBAnRBwJYDaiAALwEQQQJ0QcCWA2r9CQIA/VYCAAH9VgIAAv1WAgADIAUvARZBAnRBwJYDaiAFLwEUQQJ0QcCWA2ogBS8BEkECdEHAlgNqIAUvARBBAnRBwJYDav0JAgD9VgIAAf1WAgAC/VYCAAP95gH95AEhWSBbIAAvAQ5BAnRBwJYDaiAALwEMQQJ0QcCWA2ogAC8BCkECdEHAlgNqIAAvAQhBAnRBwJYDav0JAgD9VgIAAf1WAgAC/VYCAAMgBS8BDkECdEHAlgNqIAUvAQxBAnRBwJYDaiAFLwEKQQJ0QcCWA2ogBS8BCEECdEHAlgNq/QkCAP1WAgAB/VYCAAL9VgIAA/3mAf3kASFbIFwgAC8BBkECdEHAlgNqIAAvAQRBAnRBwJYDaiAALwECQQJ0QcCWA2ogAC8BAEECdEHAlgNq/QkCAP1WAgAB/VYCAAL9VgIAAyAFLwEGQQJ0QcCWA2ogBS8BBEECdEHAlgNqIAUvAQJBAnRBwJYDaiAFLwEAQQJ0QcCWA2r9CQIA/VYCAAH9VgIAAv1WAgAD/eYB/eQBIVwgAUEQaiIBIAJIDQALIFwgW/3kASBZIFr95AH95AEiWf0fAyBZ/R8CIFn9HwAgWf0fAZKSkiFiIAcgPiBAfqdBAnRqIAIgCEgEfSBiuyFqIAsEfyBqIBYvAQBBAnRBwJYDaioCACAJIBVqLwEAQQJ0QcCWA2oqAgCUu6AhaiADBSACCyEAIA0EQANAIGogBiAAQQF0IgFqLwEAQQJ0QcCWA2oqAgAgASAJai8BAEECdEHAlgNqKgIAlLugIAYgAUECaiIBai8BAEECdEHAlgNqKgIAIAEgCWovAQBBAnRBwJYDaioCAJS7oCFqIABBAmoiACAIRw0ACwsgarYFIGILOAIAID5CAXwiPiBBUg0ACwwBCyACIAhIBEAgBiACQQF0IglqIRVCACE+A0AgDiA+IEN+p0EBdGohAUQAAAAAAAAAACFqIAIhACALBEAgFS8BAEECdEHAlgNqKgIAIAEgCWovAQBBAnRBwJYDaioCAJS7RAAAAAAAAAAAoCFqIAMhAAsgDQRAA0AgaiAGIABBAXQiBWovAQBBAnRBwJYDaioCACABIAVqLwEAQQJ0QcCWA2oqAgCUu6AgBiAFQQJqIgVqLwEAQQJ0QcCWA2oqAgAgASAFai8BAEECdEHAlgNqKgIAlLugIWogAEECaiIAIAhHDQALCyAHID4gQH6nQQJ0aiBqtjgCACA+QgF8Ij4gQVINAAsMAQtCACE+IEFCBFoEQP0MAgAAAAAAAAADAAAAAAAAACFa/QwAAAAAAAAAAAEAAAAAAAAAIVkDQCAHIFkgXf3VASJb/RsAQQJ0akEANgIAIAcgW/0bAkECdGpBADYCACAHIFogXf3VASJb/RsAQQJ0akEANgIAIAcgW/0bAkECdGpBADYCACBZ/QwEAAAAAAAAAAQAAAAAAAAA/c4BIVkgWv0MBAAAAAAAAAAEAAAAAAAAAP3OASFaID5CBHwiPiBCUg0ACyBCIj4gQVENAQsDQCAHID4gQH6nQQJ0akEANgIAID5CAXwiPiBBUg0ACwsgP0IBfCI/IEhSDQALCyAEQZADaiQADAsLIARB0jM2AogCIARB5MsANgKEAiAEQZEkNgKAAkG4nwIoAgBBiNIAIARBgAJqEDIMMAsgBEHqMzYCmAIgBEHjywA2ApQCIARBkSQ2ApACQbifAigCAEGI0gAgBEGQAmoQMgwvCyAEQYAwNgLoASAEQeHLADYC5AEgBEGRJDYC4AFBuJ8CKAIAQYjSACAEQeABahAyDC4LIARBlTE2AtgBIARB4MsANgLUASAEQZEkNgLQAUG4nwIoAgBBiNIAIARB0AFqEDIMLQsgBEG7MzYCqAIgBEHfywA2AqQCIARBkSQ2AqACQbifAigCAEGI0gAgBEGgAmoQMgwsCyAEQdPEADYCuAIgBEHeywA2ArQCIARBkSQ2ArACQbifAigCAEGI0gAgBEGwAmoQMgwrCyAEQfPHADYCyAIgBEHbywA2AsQCIARBkSQ2AsACQbifAigCAEGI0gAgBEHAAmoQMgwqCyAEQYswNgLYAiAEQdjLADYC1AIgBEGRJDYC0AJBuJ8CKAIAQYjSACAEQdACahAyDCkLIARB3jI2AugCIARB18sANgLkAiAEQZEkNgLgAkG4nwIoAgBBiNIAIARB4AJqEDIMKAsgBEGXMDYC+AIgBEHWywA2AvQCIARBkSQ2AvACQbifAigCAEGI0gAgBEHwAmoQMgwnCyAEQeoyNgKIAyAEQdXLADYChAMgBEGRJDYCgANBuJ8CKAIAQYjSACAEQYADahAyDCYLDBYLIAEoAkwhByABKAJQIQMgASECIwBB0ABrIgUkAAJAAkAgBygCAEUEQAJAIAcoAjBBBEcNACAHKAI0Ig2tIkAgBykDECI+QgKGUg0AIAc1AjgiPyBAIAcpAxgiQn5SDQAgBzUCPCA/IAcpAyAiQH5SDQACQCACKAIwIgEgAigCAEECdCIEQfDmAGooAgBHDQAgAigCNCIKrSI/IAIpAxAiQSABrX4gBEGw5wBqNAIAf1INACACNQI4IkMgPyACKQMYIkR+Ug0AIAI1AjwgQyACKQMgIj9+Ug0AAkAgPiBBUg0AIEIgRFINACA/IEBSDQAgBykDKCI/IAIpAyhSDQACQCADKQMQQgFSDQAgAykDGEIBUg0AIAMpAyBCAVINACADKQMoQgFSDQACQCAAKAIADgMHAAcACyBAIEJ+ID9+pyIBIAAoAggiBGpBAWsgBG0iBiAAKAIEbCIEIAZqIgAgASAAIAFIGyILIARMDQYgPqciBkECdCEOIAMoAoABKgIAImL9EyFZIAZBcHEiAUEATA0FIAEgBkEPcSIRIAZBA3EiD2siEmohAyABQQFrIhBBBHZBAWoiAEH+////AXEhEyAAQQFxIRQDQCAEIApsIQAgAigCgAEiCCAHKAKAASIJRwR/IAAgCGogCSAEIA1saiAO/AoAACACKAKAAQUgCAsgAGohCUEAIQhBACEMIBBBD0cEQANAIAkgCEECdCIVaiIAIFkgAP0AAAD95gH9CwAAIAAgWSAA/QAAEP3mAf0LABAgACBZIAD9AAAg/eYB/QsAICAAIFkgAP0AADD95gH9CwAwIAkgFUHAAHJqIgAgWSAA/QAAAP3mAf0LAAAgACBZIAD9AAAQ/eYB/QsAECAAIFkgAP0AACD95gH9CwAgIAAgWSAA/QAAMP3mAf0LADAgCEEgaiEIIAxBAmoiDCATRw0ACwsgFARAIAkgCEECdGoiACBZIAD9AAAA/eYB/QsAACAAIFkgAP0AABD95gH9CwAQIAAgWSAA/QAAIP3mAf0LACAgACBZIAD9AAAw/eYB/QsAMAsCQCABIAZODQBBACEIIAEhACARQQRPBEADQCAJIAEgCGpBAnRqIgAgWSAA/QACAP3mAf0LAgAgCEEEaiIIIBJHDQALIAMhACAPRQ0BCwNAIAkgAEECdGoiCCBiIAgqAgCUOAIAIABBAWoiACAGRw0ACwsgBEEBaiIEIAtHDQALDAYLIAVB0ssANgIIIAVBgM8ANgIEDCILIAVBmsMANgIYIAVB/84ANgIUIAVBkSQ2AhBBuJ8CKAIAQYjSACAFQRBqEDIMKQsgBUGKwAA2AiggBUH+zgA2AiQgBUGRJDYCIEG4nwIoAgBBiNIAIAVBIGoQMgwoCyAFQd3MADYCOCAFQf3OADYCNCAFQZEkNgIwQbifAigCAEGI0gAgBUEwahAyDCcLIAVB+B42AkggBUGwzwA2AkQgBUGRJDYCQEG4nwIoAgBBiNIAIAVBQGsQMgwmCyAHKAKAASEDIAIoAoABIQggASAGSARAIAZBD3EhACADIAhHBEAgASAAIAZBA3EiEWsiD2ohAyAAQQRJIRIDQCAEIApsIQAgBygCgAEiCSAIRwRAIAAgCGogCSAEIA1saiAO/AoAACACKAKAASEICyAAIAhqIQxBACEJIAEhAAJAIBJFBEADQCAMIAEgCWpBAnRqIgAgWSAA/QACAP3mAf0LAgAgCUEEaiIJIA9HDQALIAMhACARRQ0BCwNAIAwgAEECdGoiCSBiIAkqAgCUOAIAIABBAWoiACAGRw0ACwsgBEEBaiIEIAtHDQALDAILIAEgACAGQQNxIgdrIg1qIQIgAEEESSEOA0AgCCAEIApsaiEDQQAhCSABIQACQCAORQRAA0AgAyABIAlqQQJ0aiIAIFkgAP0AAgD95gH9CwIAIAlBBGoiCSANRw0ACyACIQAgB0UNAQsDQCADIABBAnRqIgkgYiAJKgIAlDgCACAAQQFqIgAgBkcNAAsLIARBAWoiBCALRw0ACwwBCyADIAhGDQAgBEEBaiEAIAsgBGtBAXEEQCACKAKAASIBIAcoAoABIgNHBEAgASAEIApsaiADIAQgDWxqIA78CgAACyAEQQFqIQQLIAAgC0YNAANAIAIoAoABIgAgBygCgAEiAUcEQCAAIAQgCmxqIAEgBCANbGogDvwKAAALIAIoAoABIgAgBygCgAEiAUcEQCAAIARBAWoiAyAKbGogASADIA1saiAO/AoAAAsgBEECaiIEIAtHDQALCyAFQdAAaiQADBULIAEoAkwhAyABKAJQIQQgASgCVCEFIwBB8ABrIgIkAAJAAkACQAJAAkACQAJAIAMoAgBFBEAgAykDECJAIAEpAxBSDQEgAykDGCI+IAEpAxhSDQEgAykDICJCIAEpAyBSDQEgAykDKCI/IAEpAyhSDQEgASgCMCIHIAEoAgBBAnQiBkHw5gBqKAIARw0CIAE1AjQiQSBAIAetfiJDIAZBsOcAajQCACJEf1INAiABNQI4IkUgPiBBflINAiABNQI8IEIgRX5SDQIgAygCMEEERw0CIAM1AjQiQSBAQgKGUg0CIAM1AjgiQCA+IEF+Ug0CIAM1AjwgQCBCflINAiAFKAIAQQxHDQMgBSkDKCAFKQMgIAUpAxggBSkDEH5+fkIFUg0EIAUoAoABIgUoAgwhByAFKAIIIQYgBSgCBCEIIAUoAgAhCQJAIAUoAhBFBEAgACgCACIFDQEgASgCgAEgAygCgAEgPiBCfiA/fiBDfiBEf6f8CgAACyAAKAIAIQULAkACQCAFDgMBAAEACyABKAIAQQJ0IgVB8OYAajUCACABKQMoIAEpAyAgASkDGCABKQMQfn5+fiAFQbDnAGo0AgB/p0EAIAQpAxgiPqdBAWsgPlAbIAlsIAdqQQAgBCkDICJCp0EBayBCUBsgCGxqQQAgBCkDKCJAp0EBayBAUBsgBmxqIAMoAgBBAnRB8OYAaigCAEEAIAQpAxAiP6ciBUEBayA/UBtsak0NBiAEKAIwQQRHDQcgACgCCCIKIEAgPiBCfiI/fqciA2pBAWsgCm0iCiAAKAIEbCIAIAAgCmoiCiADIAMgCkobIgNODQAgBUEATA0AIAQoAjwhEiAEKAI4IRAgBCgCNCETIAEoAoABIAdqIQogBCgCgAEhCyAFQQNxIQ0gBUF8cSEBIAVBBGsiFEECdkEBaiIEQfz///8HcSEVIARBA3EhDiADrCFAIACsIUIgBUEQSSEWA0AgCyASIEIgP38iQaciAGwiB2ogECBCIEHEID9+fSJBID5/IkOnIgRsIhFqIBMgQSA+IEN+faciDGwiD2ohAyAJIAxsIhcgBCAIbCIYIAogACAGbCIZampqIQRBACEMQQAhAAJAAkAgFg0AIAogF2ogGWogGGogCyAPaiAHaiARamtBEEkNAEEAIRFBACEPIBRBDE8EQANAIAQgAEECdCIHaiADIAdq/QACAP0LAgAgBCAHQRByIhdqIAMgF2r9AAIA/QsCACAEIAdBIHIiF2ogAyAXav0AAgD9CwIAIAQgB0EwciIHaiADIAdq/QACAP0LAgAgAEEQaiEAIA9BBGoiDyAVRw0ACwsgDgRAA0AgBCAAQQJ0IgdqIAMgB2r9AAIA/QsCACAAQQRqIQAgEUEBaiIRIA5HDQALCyAFIAEiAEYNAQsgAEF/cyAFaiEHIA0EQANAIAQgAEECdCIRaiADIBFqKgIAOAIAIABBAWohACAMQQFqIgwgDUcNAAsLIAdBA0kNAANAIAQgAEECdCIHaiADIAdqKgIAOAIAIAQgB0EEaiIMaiADIAxqKgIAOAIAIAQgB0EIaiIMaiADIAxqKgIAOAIAIAQgB0EMaiIHaiADIAdqKgIAOAIAIABBBGoiACAFRw0ACwsgQkIBfCJCIEBSDQALCyACQfAAaiQADAcLIAJB+B42AmggAkGd0AA2AmQgAkGRJDYCYEG4nwIoAgBBiNIAIAJB4ABqEDIMKgsgAkGawwA2AlggAkG9zwA2AlQgAkGRJDYCUEG4nwIoAgBBiNIAIAJB0ABqEDIMKQsgAkHCzAA2AkggAkG+zwA2AkQgAkGRJDYCQEG4nwIoAgBBiNIAIAJBQGsQMgwoCyACQYsyNgI4IAJBwM8ANgI0IAJBkSQ2AjBBuJ8CKAIAQYjSACACQTBqEDIMJwsgAkGtLzYCKCACQcHPADYCJCACQZEkNgIgQbifAigCAEGI0gAgAkEgahAyDCYLIAJBosAANgIYIAJB8M8ANgIUIAJBkSQ2AhBBuJ8CKAIAQYjSACACQRBqEDIMJQsgAkH/xAA2AgggAkHyzwA2AgQgAkGRJDYCAEG4nwIoAgBBiNIAIAIQMgwkCwwUCyAAIAEoAkwgARCjAgwTCyAAIAEoAkwgARCjAgwSCyABKAJMIQMgASgCUCECIwBBEGsiByQAAkACQCADKAIAIgRBCUsNAAJAAkACQEEBIAR0QcwHcUUEQCAERQ0CIARBAUcNBCAAKAIADgMDAQMBCwJAIAAoAgAOAwMAAwALIAIpAyggAikDICACKQMYIAIpAxB+fn6nIgVBAEwNAiAEQRhsQbDkAGooAgAhBCADKAIQIQZBACEAA0AgAygCgAEgAygCNCACKAKAASAAQQJ0aigCAGxqIAEoAoABIAEoAjQgAGxqIAYgBBEFACAAQQFqIgAgBUcNAAsMAgsgAikDKCACKQMgIAIpAxggAikDEH5+fqciBkEATA0BIAMoAhAiBUEATA0BIAIoAoABIQggBUF8cSECIAEoAjQhCSADKAI0IQogASgCgAEhCyADKAKAASENQQAhBCAFQQRJIQ4DQCALIAQgCWxqIQEgDSAIIARBAnRqKAIAIApsaiEDQQAhAAJAIA5FBEADQCABIABBAnRqIAMgAEEBdGr9BAEAIln9GwBBAnRBwJYDav0JAgAgWf0bAUECdEHAlgNqKgIA/SABIFn9GwJBAnRBwJYDaioCAP0gAiBZ/RsDQQJ0QcCWA2oqAgD9IAP9CwIAIABBBGoiACACRw0ACyACIgAgBUYNAQsDQCABIABBAnRqIAMgAEEBdGovAQBBAnRBwJYDaioCADgCACAAQQFqIgAgBUcNAAsLIARBAWoiBCAGRw0ACwwBCwJAIAAoAgAOAwEAAQALIAIpAyggAikDICACKQMYIAIpAxB+fn6nIg1BAEwNACADKAIQIgVBAEwNACADKAI0IQ4gASgCNCEMIAMoAoABIREgASgCgAEhDyACKAKAASESIAVBA3EhCCAFQXxxIQEgBUEEayIQQQJ2QQFqIgBB/P///wdxIRMgAEEDcSEJIAVBCEkhFANAIA8gBiAMbGohAiARIBIgBkECdGooAgAgDmxqIQNBACEAAkACQCAUDQAgAiADa0EQSQ0AQQAhCkEAIQsgEEEMTwRAA0AgAiAAQQJ0IgRqIAMgBGr9AAIA/QsCACACIARBEHIiFWogAyAVav0AAgD9CwIAIAIgBEEgciIVaiADIBVq/QACAP0LAgAgAiAEQTByIgRqIAMgBGr9AAIA/QsCACAAQRBqIQAgC0EEaiILIBNHDQALCyAJBEADQCACIABBAnQiBGogAyAEav0AAgD9CwIAIABBBGohACAKQQFqIgogCUcNAAsLIAUgASIARg0BCyAAQX9zIAVqIQpBACEEIAgEQANAIAIgAEECdCILaiADIAtqKgIAOAIAIABBAWohACAEQQFqIgQgCEcNAAsLIApBA0kNAANAIAIgAEECdCIEaiADIARqKgIAOAIAIAIgBEEEaiIKaiADIApqKgIAOAIAIAIgBEEIaiIKaiADIApqKgIAOAIAIAIgBEEMaiIEaiADIARqKgIAOAIAIABBBGoiACAFRw0ACwsgBkEBaiIGIA1HDQALCyAHQRBqJAAMAQsgB0H4HjYCCCAHQc3RADYCBCAHQZEkNgIAQbifAigCAEGI0gAgBxAyDCELDBELIAEoAkwhBSABKAJQIQQgASgCVCECIwBB0AFrIgMkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAUoAgAOAgEABAsgACgCBA0EIAIpAxAiPiABKQMQUg0FIAIpAxgiQiABKQMYUg0FIAIpAyAiQCABKQMgUg0FIAIpAyggASkDKFINBSACKAIwIgcgAigCAEECdCIGQfDmAGooAgBHDQYgAjUCNCI/ID4gB61+IAZBsOcAajQCAH9SDQYgAjUCOCJBID8gQn5SDQYgAjUCPCBAIEF+Ug0GIAEoAjAiByABKAIAQQJ0IgZB8OYAaigCAEcNByABNQI0Ij8gPiAHrX4gBkGw5wBqNAIAf1INByABNQI4Ij4gPyBCflINByABNQI8ID4gQH5SDQcgACACIAEQvwECQCAAKAIADgMCAAIACyABKQMQIAUpAxAiPsRSDQggBSgCMEECRgRAIAQpAyggBCkDICAEKQMYIAQpAxB+fn6nIgZBAEwNAiA+pyIHQQBMDQIgBCgCgAEhCCAHQXxxIQIgBSgCNCEJIAEoAjQhCiABKAKAASELIAUoAoABIQ1BACEFIAdBBEkhDgNAIA0gBSAJbGohASALIAggBUECdGooAgAgCmxqIQRBACEAAkAgDkUEQANAIAQgAEECdGoiDCABIABBAXRq/QQBACJZ/RsAQQJ0QcCWA2r9CQIAIFn9GwFBAnRBwJYDaioCAP0gASBZ/RsCQQJ0QcCWA2oqAgD9IAIgWf0bA0ECdEHAlgNqKgIA/SADIAz9AAIA/eQB/QsCACAAQQRqIgAgAkcNAAsgAiIAIAdGDQELA0AgBCAAQQJ0aiIMIAEgAEEBdGovAQBBAnRBwJYDaioCACAMKgIAkjgCACAAQQFqIgAgB0cNAAsLIAVBAWoiBSAGRw0ACwwCCyADQajGADYCGCADQfvRADYCFCADQZEkNgIQQbifAigCAEGI0gAgA0EQahAyDC4LIAAoAgQNCCACKQMQIj4gASkDEFINCSACKQMYIkIgASkDGFINCSACKQMgIkAgASkDIFINCSACKQMoIAEpAyhSDQkgAigCMCIHIAIoAgBBAnQiCEHw5gBqKAIARw0KIAI1AjQiPyA+IAetfiAIQbDnAGo0AgB/Ug0KIAI1AjgiQSA/IEJ+Ug0KIAI1AjwgQCBBflINCiABKAIwIgcgASgCAEECdCIIQfDmAGooAgBHDQsgATUCNCI/ID4gB61+IAhBsOcAajQCAH9SDQsgATUCOCI+ID8gQn5SDQsgATUCPCA+IEB+Ug0LIAAgAiABEL8BAkAgACgCAA4DAQABAAsgASkDECAFKQMQIj7EUg0MIAUoAjBBBEcNASAEKQMoIAQpAyAgBCkDGCAEKQMQfn5+pyIOQQBMDQAgPqciB0EATA0AIAUoAjQhDCAFKAKAASEIIAEoAjQhESAEKAKAASEPIAdBA3EhCSAHQXxxIQIgASgCgAEiEiAHQQJ0IhBqIRMgB0EEayIUQQJ2QQFqIgBB/P///wdxIRUgAEEDcSEKIAdBCEkhFgNAIAggBiAMbCIFaiEBIBIgDyAGQQJ0aigCACARbCILaiEEQQAhAAJAAkAgFg0AIAEgCyATakkgCCAFIBBqaiAES3ENAEEAIQtBACENIBRBDE8EQANAIAQgAEECdCIFaiIXIBf9AAIAIAEgBWr9AAIA/eQB/QsCACAEIAVBEHIiF2oiGCAY/QACACABIBdq/QACAP3kAf0LAgAgBCAFQSByIhdqIhggGP0AAgAgASAXav0AAgD95AH9CwIAIAQgBUEwciIFaiIXIBf9AAIAIAEgBWr9AAIA/eQB/QsCACAAQRBqIQAgDUEEaiINIBVHDQALCyAKBEADQCAEIABBAnQiBWoiDSAN/QACACABIAVq/QACAP3kAf0LAgAgAEEEaiEAIAtBAWoiCyAKRw0ACwsgByACIgBGDQELIABBf3MgB2ohC0EAIQUgCQRAA0AgBCAAQQJ0Ig1qIhcgFyoCACABIA1qKgIAkjgCACAAQQFqIQAgBUEBaiIFIAlHDQALCyALQQNJDQADQCAEIABBAnQiBWoiCyALKgIAIAEgBWoqAgCSOAIAIAQgBUEEaiILaiINIA0qAgAgASALaioCAJI4AgAgBCAFQQhqIgtqIg0gDSoCACABIAtqKgIAkjgCACAEIAVBDGoiBWoiCyALKgIAIAEgBWoqAgCSOAIAIABBBGoiACAHRw0ACwsgBkEBaiIGIA5HDQALCyADQdABaiQADAwLIANB9MMANgJ4IANBnNIANgJ0IANBkSQ2AnBBuJ8CKAIAQYjSACADQfAAahAyDCsLIANB+B42AgggA0G60gA2AgQgA0GRJDYCAEG4nwIoAgBBiNIAIAMQMgwqCyADQb41NgJoIANB7NEANgJkIANBkSQ2AmBBuJ8CKAIAQYjSACADQeAAahAyDCkLIANB+sEANgJYIANB7dEANgJUIANBkSQ2AlBBuJ8CKAIAQYjSACADQdAAahAyDCgLIANBqcwANgJIIANB7tEANgJEIANBkSQ2AkBBuJ8CKAIAQYjSACADQUBrEDIMJwsgA0GKwAA2AjggA0Hv0QA2AjQgA0GRJDYCMEG4nwIoAgBBiNIAIANBMGoQMgwmCyADQeMjNgIoIANB+tEANgIkIANBkSQ2AiBBuJ8CKAIAQYjSACADQSBqEDIMJQsgA0G+NTYCyAEgA0GN0gA2AsQBIANBkSQ2AsABQbifAigCAEGI0gAgA0HAAWoQMgwkCyADQfrBADYCuAEgA0GO0gA2ArQBIANBkSQ2ArABQbifAigCAEGI0gAgA0GwAWoQMgwjCyADQanMADYCqAEgA0GP0gA2AqQBIANBkSQ2AqABQbifAigCAEGI0gAgA0GgAWoQMgwiCyADQYrAADYCmAEgA0GQ0gA2ApQBIANBkSQ2ApABQbifAigCAEGI0gAgA0GQAWoQMgwhCyADQeMjNgKIASADQZvSADYChAEgA0GRJDYCgAFBuJ8CKAIAQYjSACADQYABahAyDCALDBALIAEoAkwhAyMAQZABayICJAACQAJAAkACQAJAAkACQAJAAkAgAygCAEUEQCAAKAIEDQECQAJAIAAoAgAOAwEAAQALIAMoAhAiBSABKAIQRw0DIAUgASgCGEcNBCADNQIYQgFSDQUgAygCICIIIAEoAiBHDQYgAygCKCIKIAEoAihHDQcgAygCMEEERw0IIAEoAjBBBEcNCSAKQQBMDQAgCEEATA0AIAVBAEwNACABKAI8IQ0gASgCOCEHIAMoAjwhDiADKAI4IQYgAygCgAEhDCABKAKAASEDIAVBAUsEQCABKAI0Ig9BBGohEiAFQQJ0QQRrIREDQCAMIAkgDmxqIRAgAyAJIA1sIhNqIRRBACEEA0AgFCAEIAdsIgBqIhUgECAEIAZsaiIWKgIAOAIAIAMgACATaiIXQQRqIhhqQQAgEfwLAEEBIQADQCADIBcgACAPbCIBampBACAAQQJ0Igv8CwAgASAVaiALaiALIBZqKgIAOAIAIAUgAEEBaiIBSgRAIAMgACASbCAYampBACARIAtr/AsACyABIgAgBUcNAAsgBEEBaiIEIAhHDQALIAlBAWoiCSAKRw0ACwwBCyAIQXxxIQsgCEEDcSEJIAhBBEkhEQNAIAwgBCAObGohASADIAQgDWxqIQVBACEAQQAhCCARRQRAA0AgBSAAIAdsaiABIAAgBmxqKgIAOAIAIAUgAEEBciIPIAdsaiABIAYgD2xqKgIAOAIAIAUgAEECciIPIAdsaiABIAYgD2xqKgIAOAIAIAUgAEEDciIPIAdsaiABIAYgD2xqKgIAOAIAIABBBGohACAIQQRqIgggC0cNAAsLQQAhCCAJBEADQCAFIAAgB2xqIAEgACAGbGoqAgA4AgAgAEEBaiEAIAhBAWoiCCAJRw0ACwsgBEEBaiIEIApHDQALCyACQZABaiQADAkLIAJB+B42AogBIAJBldMANgKEASACQZEkNgKAAUG4nwIoAgBBiNIAIAJBgAFqEDIMJwsgAkG+NTYCeCACQdfSADYCdCACQZEkNgJwQbifAigCAEGI0gAgAkHwAGoQMgwmCyACQZE1NgJoIAJB59IANgJkIAJBkSQ2AmBBuJ8CKAIAQYjSACACQeAAahAyDCULIAJBrzM2AlggAkHo0gA2AlQgAkGRJDYCUEG4nwIoAgBBiNIAIAJB0ABqEDIMJAsgAkH+NDYCSCACQenSADYCRCACQZEkNgJAQbifAigCAEGI0gAgAkFAaxAyDCMLIAJBiTE2AjggAkHq0gA2AjQgAkGRJDYCMEG4nwIoAgBBiNIAIAJBMGoQMgwiCyACQfQvNgIoIAJB69IANgIkIAJBkSQ2AiBBuJ8CKAIAQYjSACACQSBqEDIMIQsgAkGsxQA2AhggAkH20gA2AhQgAkGRJDYCEEG4nwIoAgBBiNIAIAJBEGoQMgwgCyACQdPEADYCCCACQffSADYCBCACQZEkNgIAQbifAigCAEGI0gAgAhAyDB8LDA8LIAEoAkwhAyABKAJQIQQjAEEQayICJAACQCADKAIARQRAIAAgAyAEKAKAASIAKAIAIAAoAgQgAUMAAID/EIgDIAJBEGokAAwBCyACQfgeNgIIIAJB3dMANgIEDBQLDA4LIAEoAkwhAyABKAJQIQQjAEEQayICJAACQCADKAIARQRAIAAgAyAEKAKAASIAKAIAIAAoAgQgAUMAAAAAEIgDIAJBEGokAAwBCyACQfgeNgIIIAJB7tMANgIEDBMLDA0LIAEoAkwhBSMAQUBqIgQkAAJAIAUoAgBFBEACQCAFKAIwQQRHDQAgBTUCNCJAIAUpAxAiPkIChlINACAFNQI4Ij8gQCAFKQMYIkJ+Ug0AIAU1AjwgPyAFKQMgIkB+Ug0AAkAgASgCMCICIAEoAgBBAnQiA0Hw5gBqKAIARw0AIAE1AjQiPyABKQMQIkEgAq1+IANBsOcAajQCAH9SDQAgATUCOCJDID8gASkDGCJEflINACABNQI8IEMgASkDICI/flINAAJAID4gQVINACBCIERSDQAgPyBAUg0AIAUpAygiPyABKQMoUg0AAkACQCAAKAIADgMBAAEACyBAIEJ+ID9+pyICIAAoAggiA2pBAWsgA20iAyAAKAIEbCIJIAMgCWoiACACIAAgAkgbIgxODQAgPqciB0FwcSICIAdBD3EiESAHQQNxIgprIg9qIQMgB0F8cSESIAJBAWsiEEEEdkEBaiIAQf7///8BcSETIABBAXEhFANAIAEoAoABIAEoAjQgCWxqIQgCQCAHQQBMBEBEAAAAAAAAAAAhagwBCyAFKAKAASAFKAI0IAlsaiEGQwAAgP8hYkEAIQ1BACEAQQAhDiAHQQRPBEADQCBiIAYgAEECdCILaioCACJjIGIgY14bImIgBiALQQRyaioCACJjIGIgY14bImIgBiALQQhyaioCACJjIGIgY14bImIgBiALQQxyaioCACJjIGIgY14bIWIgAEEEaiEAIA5BBGoiDiASRw0ACwsgCgRAA0AgYiAGIABBAnRqKgIAImMgYiBjXhshYiAAQQFqIQAgDUEBaiINIApHDQALC0QAAAAAAAAAACFqQQAhAANAQwAAAAAhYyAGIABBAnQiC2oqAgAiZEMAAID/XARAIGpBgPwBIGQgYpMiY4tDAACAd5RDAACACJRBgICAiAcgY7wiDUEBdCIOQYCAgHhxIhUgFUGAgICIB00bQQF2QYCAgDxqvpK8IhVBDXZBgPgBcSAVQf8fcWogDkGAgIB4SxsgDUEQdkGAgAJxckEBdEHAliNqLwEAQQJ0QcCWA2oqAgAiY7ugIWoLIAggC2ogYzgCACAAQQFqIgAgB0cNAAsLRAAAAAAAAPA/IGqjtiFiAkAgAkEATA0AIGL9EyFZQQAhAEEAIQsgEEEPRwRAA0AgCCAAQQJ0Ig1qIgYgWSAG/QAAAP3mAf0LAAAgBiBZIAb9AAAQ/eYB/QsAECAGIFkgBv0AACD95gH9CwAgIAYgWSAG/QAAMP3mAf0LADAgCCANQcAAcmoiBiBZIAb9AAAA/eYB/QsAACAGIFkgBv0AABD95gH9CwAQIAYgWSAG/QAAIP3mAf0LACAgBiBZIAb9AAAw/eYB/QsAMCAAQSBqIQAgC0ECaiILIBNHDQALCyAURQ0AIAggAEECdGoiACBZIAD9AAAA/eYB/QsAACAAIFkgAP0AABD95gH9CwAQIAAgWSAA/QAAIP3mAf0LACAgACBZIAD9AAAw/eYB/QsAMAsCQCACIAdODQAgAiEAIBFBBE8EQCBi/RMhWUEAIQADQCAIIAAgAmpBAnRqIgYgBv0AAgAgWf3mAf0LAgAgAEEEaiIAIA9HDQALIAMhACAKRQ0BCwNAIAggAEECdGoiBiAGKgIAIGKUOAIAIABBAWoiACAHRw0ACwsgCUEBaiIJIAxHDQALCyAEQUBrJAAMBAsgBEGawwA2AgggBEH70wA2AgQMGQsgBEGKwAA2AhggBEH60wA2AhQMHAsgBEHdzAA2AiggBEH50wA2AiQMHAsgBEH4HjYCOCAEQcfUADYCNCAEQZEkNgIwQbifAigCAEGI0gAgBEEwahAyDBwLDAwLIAEoAkwhBSABKAJQIQIjAEGwAWsiBCQAAkACQAJAAkACQAJAIAUoAgAOAgIAAQsgAigCAEEMRgRAIAIpAyggAikDICACKQMYIAIpAxB+fn5CA1EEQAJAIAAoAgAOAwYABgALIAEoAjBBAkYEQCABKQMQIkUgAigCgAEiAygCBCICrCJGWQRAIAJBAXFFBEAgASgCPCEHIAEoAjghBiABKAI0IQggBSgCPCEJIAUoAjghCiAFKAI0IQsgBSgCMCENIAMoAgAhDiADKAIIIQMgACgCBCERIAEpAygiRyABKQMgIkggASkDGCJEfn6nIgwgACgCCCIAakEBayAAbSEAQwBAHEZDAAAAwCACspUQngEhZCBHQgBXDQggAkECbSEPIEhBACADQQFxIhJrIA5xrCJCVw0IIERCAFcNCCAAIBFsIhEgAGoiACAMIAAgDEgbIQxBACAOIBIbrCFJIANBAnENByBFQgBXDQggRKchA0EAIQADQCAHID+nIgJsIQ4gAiAJbCEPIEIhPgNAIAAgA2ohEiAGID6nIgJsIRAgAiAKbCETID4gSXy0IWNCACFBAn8DQCAAQQFqIQIgACARTgRAIAIgACAMTg0CGiABKAKAASAOaiAQaiAIIEGnIgBsaiEUIAUoAoABIA9qIBNqIAAgC2xqIQBCACFAIGMhYgNAIAAgDSBApyIVbGoiFi8BAkECdEHAlgNqKgIAIWUgYhB3IWYgFCAVQQF0aiIVQYD8ASAWLwEAQQJ0QcCWA2oqAgAiZyBiEHYiaJQgZiBllJIiaYtDAACAd5RDAACACJRBgICAiAcgabwiFkEBdCIXQYCAgHhxIhggGEGAgICIB00bQQF2QYCAgDxqvpK8IhhBDXZBgPgBcSAYQf8fcWogF0GAgIB4SxsgFkEQdkGAgAJxcjsBAiAVQYD8ASBnIGaUIGggZZSTImWLQwAAgHeUQwAAgAiUQYCAgIgHIGW8IhVBAXQiFkGAgIB4cSIXIBdBgICAiAdNG0EBdkGAgIA8ar6SvCIXQQ12QYD4AXEgF0H/H3FqIBZBgICAeEsbIBVBEHZBgIACcXI7AQAgZCBilCFiIEBCAnwiQCBFUw0ACwsgAiEAIEFCAXwiQSBEUg0ACyASCyEAID5CAXwiPiBIUg0ACyA/QgF8Ij8gR1INAAsMCAsgBEG2NjYCKCAEQdLXADYCJCAEQZEkNgIgQbifAigCAEGI0gAgBEEgahAyDCMLIARBnTU2AhggBEHR1wA2AhQgBEGRJDYCEEG4nwIoAgBBiNIAIARBEGoQMgwiCyAEQZ/HADYCOCAEQcrXADYCNCAEQZEkNgIwQbifAigCAEGI0gAgBEEwahAyDCELIARBsDA2AkggBEGs1wA2AkQgBEGRJDYCQEG4nwIoAgBBiNIAIARBQGsQMgwgCyAEQe8xNgJYIARBq9cANgJUIARBkSQ2AlBBuJ8CKAIAQYjSACAEQdAAahAyDB8LIARB+B42AgggBEGn2AA2AgQgBEGRJDYCAEG4nwIoAgBBiNIAIAQQMgweCwJAIAIoAgBBDEYEQCACKQMoIAIpAyAgAikDGCACKQMQfn5+QgNRBEACQCAAKAIADgMFAAUACyAFKAIwQQRGBEAgASkDECJFIAIoAoABIgMoAgQiAqwiRlkEQCACQQFxRQRAIAEoAjwhByABKAI4IQYgASgCNCEIIAUoAjwhCSAFKAI4IQogBSgCNCELIAEoAjAhDSADKAIAIQ4gAygCCCEDIAAoAgQhESABKQMoIkcgASkDICJIIAEpAxgiRH5+pyIMIAAoAggiAGpBAWsgAG0hAEMAQBxGQwAAAMAgArKVEJ4BIWQgR0IAVw0HIAJBAm0hDyBIQQAgA0EBcSISayAOcawiQlcNByBEQgBXDQcgACARbCIRIABqIgAgDCAAIAxIGyEMQQAgDiASG6whSSADQQJxDQUgRUIAVw0HIESnIQNBACEAA0AgByA/pyICbCEOIAIgCWwhDyBCIT4DQCAAIANqIRIgBiA+pyICbCEQIAIgCmwhEyA+IEl8tCFjQgAhQQJ/A0AgAEEBaiECIAAgEU4EQCACIAAgDE4NAhogASgCgAEgDmogEGogCCBBpyIAbGohFCAFKAKAASAPaiATaiAAIAtsaiEAQgAhQCBjIWIDQCAAIECnIhVBAnRqIhYqAgQhZSBiEHchZiAUIA0gFWxqIhUgFioCACJnIGIQdiJolCBmIGWUkjgCBCAVIGcgZpQgaCBllJM4AgAgZCBilCFiIEBCAnwiQCBFUw0ACwsgAiEAIEFCAXwiQSBEUg0ACyASCyEAID5CAXwiPiBIUg0ACyA/QgF8Ij8gR1INAAsMBwsgBEG2NjYCeCAEQeHWADYCdCAEQZEkNgJwQbifAigCAEGI0gAgBEHwAGoQMgwiCyAEQZ01NgJoIARB4NYANgJkIARBkSQ2AmBBuJ8CKAIAQYjSACAEQeAAahAyDCELIARBrMUANgKIASAEQdnWADYChAEgBEGRJDYCgAFBuJ8CKAIAQYjSACAEQYABahAyDCALIARBsDA2ApgBIARBu9YANgKUASAEQZEkNgKQAUG4nwIoAgBBiNIAIARBkAFqEDIMHwsgBEHvMTYCqAEgBEG61gA2AqQBIARBkSQ2AqABQbifAigCAEGI0gAgBEGgAWoQMgweCyACQQBMDQEgRKchEkEAIQAgD0ECdCEOA0AgByBBpyICbCEPIAIgCWwhECBCIT4DQCAAIBJqIQMgBiA+pyICbCETIAIgCmwhFCA+IEl8tCFjQgAhQwJAA0AgACICQQFqIQACQCACIBFIDQAgAiAMTg0CIEUgRn8iSkIAVw0AIAEoAoABIA9qIBNqIAggQ6ciAmxqIRUgBSgCgAEgEGogFGogAiALbGohAkIAIT8gYyFiA0AgPyBGfiFLQgAhQANAIAIgQEIBiCBLfKciFkECdGoiFyAOaioCACFlIGIQdiFmIBUgDSAWbGoiFiAXKgIAImcgYhB3ImiUIGYgZZSTOAIAIA4gFmogZyBmlCBoIGWUkjgCACBkIGKUIWIgQEICfCJAIEZTDQALID9CAXwiPyBKUg0ACwsgQ0IBfCJDIERSDQALIAMhAAsgPkIBfCI+IEhSDQALIEFCAXwiQSBHUg0ACwwBCyACQQBMDQAgRKchEkEAIQAgD0EBdCEOA0AgByBBpyICbCEPIAIgCWwhECBCIT4DQCAAIBJqIQMgBiA+pyICbCETIAIgCmwhFCA+IEl8tCFjQgAhQwJAA0AgACICQQFqIQACQCACIBFIDQAgAiAMTg0CIEUgRn8iSkIAVw0AIAEoAoABIA9qIBNqIAggQ6ciAmxqIRUgBSgCgAEgEGogFGogAiALbGohAkIAIT8gYyFiA0AgPyBGfiFLQgAhQANAIAIgDSBAQgGIIEt8pyIWbGoiFyAOai8BAEECdEHAlgNqKgIAIWUgYhB2IWYgFSAWQQF0aiIWQYD8ASAXLwEAQQJ0QcCWA2oqAgAiZyBiEHciaJQgZiBllJMiaYtDAACAd5RDAACACJRBgICAiAcgabwiF0EBdCIYQYCAgHhxIhkgGUGAgICIB00bQQF2QYCAgDxqvpK8IhlBDXZBgPgBcSAZQf8fcWogGEGAgIB4SxsgF0EQdkGAgAJxcjsBACAOIBZqQYD8ASBnIGaUIGggZZSSImWLQwAAgHeUQwAAgAiUQYCAgIgHIGW8IhZBAXQiF0GAgIB4cSIYIBhBgICAiAdNG0EBdkGAgIA8ar6SvCIYQQ12QYD4AXEgGEH/H3FqIBdBgICAeEsbIBZBEHZBgIACcXI7AQAgZCBilCFiIEBCAnwiQCBGUw0ACyA/QgF8Ij8gSlINAAsLIENCAXwiQyBEUg0ACyADIQALID5CAXwiPiBIUg0ACyBBQgF8IkEgR1INAAsLIARBsAFqJAAMAAsMCwsgASgCTCEEIAEoAlAhAiMAQRBrIgUkAAJAAkACQAJAAkAgBCgCAA4CAgABCwJAIAAoAgAOAwQABAALIAEpAygiRSABKQMgIkYgASkDGCJEfn6nIgMgACgCCCIHakEBayAHbSEHIAAoAgQhESABKAI8IQYgASgCOCEIIAEoAjQhCSAEKAI8IQogBCgCOCELIAQoAjQhDSABKAIwIQ4gBCgCMCEMIAEpAxAhR0MAQBxGQwAAAMAgAigCgAEiAigCBCIAspUQngEhZCBFQgBXDQMgAEECbSEPIEYgAigCACISQQAgAigCCCICQQFxIhBrcawiQlcNAyBEQgBXDQMgByAHIBFsIhFqIgcgAyADIAdKGyEHQQAgEiAQG6whSSACQQJxDQIgR0IAVw0DIESnIQNBACEAA0AgBiA/pyICbCEPIAIgCmwhEiBCIT4DQCAAIANqIRAgCCA+pyICbCETIAIgC2whFCA+IEl8tCFjQgAhQQJ/A0AgAEEBaiECIAAgEU4EQCACIAAgB04NAhogASgCgAEgD2ogE2ogCSBBpyIAbGohFSAEKAKAASASaiAUaiAAIA1saiEAQgAhQCBjIWIDQCAAIAwgQKciFmxqIhcvAQBBAnRBwJYDaioCACFlIGIQdiFmIBUgDiAWbGoiFkGA/AEgFy8BAkECdEHAlgNqKgIAImcgYhB3ImiUIGUgZpSTImmLQwAAgHeUQwAAgAiUQYCAgIgHIGm8IhdBAXQiGEGAgIB4cSIZIBlBgICAiAdNG0EBdkGAgIA8ar6SvCIZQQ12QYD4AXEgGUH/H3FqIBhBgICAeEsbIBdBEHZBgIACcXI7AQIgFkGA/AEgZSBolCBmIGeUkiJli0MAAIB3lEMAAIAIlEGAgICIByBlvCIWQQF0IhdBgICAeHEiGCAYQYCAgIgHTRtBAXZBgICAPGq+krwiGEENdkGA+AFxIBhB/x9xaiAXQYCAgHhLGyAWQRB2QYCAAnFyOwEAIGQgYpQhYiBAQgJ8IkAgR1MNAAsLIAIhACBBQgF8IkEgRFINAAsgEAshACA+QgF8Ij4gRlINAAsgP0IBfCI/IEVSDQALDAMLIAVB+B42AgggBUGg2gA2AgQMFAsCQCAAKAIADgMCAAIACyABKQMoIkUgASkDICJGIAEpAxgiRH5+pyIDIAAoAggiB2pBAWsgB20hByAAKAIEIREgASgCPCEGIAEoAjghCCABKAI0IQkgBCgCPCEKIAQoAjghCyAEKAI0IQ0gASgCMCEOIAQoAjAhDCABKQMQIUdDAEAcRkMAAADAIAIoAoABIgAoAgQiArKVEJ4BIWQgRUIAVw0BIEYgACgCACIPQQAgACgCCCIAQQFxIhJrcawiQlcNASBEQgBXDQEgByAHIBFsIhFqIgcgAyADIAdKGyEHQQAgDyASG6whSSAAQQJxRQRAIEdCAFcNAiBEpyEDQQAhAANAIAYgP6ciAmwhDyACIApsIRIgQiE+A0AgACADaiEQIAggPqciAmwhEyACIAtsIRQgPiBJfLQhY0IAIUECfwNAIABBAWohAiAAIBFOBEAgAiAAIAdODQIaIAEoAoABIA9qIBNqIAkgQaciAGxqIRUgBCgCgAEgEmogFGogACANbGohAEIAIUAgYyFiA0AgACAMIECnIhZsaiIXKgIAIWUgYhB2IWYgFSAOIBZsaiIWIBcqAgQiZyBiEHciaJQgZSBmlJM4AgQgFiBlIGiUIGYgZ5SSOAIAIGQgYpQhYiBAQgJ8IkAgR1MNAAsLIAIhACBBQgF8IkEgRFINAAsgEAshACA+QgF8Ij4gRlINAAsgP0IBfCI/IEVSDQALDAILIAJBAEwNASACrCFIIESnIRJBACEAIAJBAm1BAnQhDwNAIAYgQaciAmwhECACIApsIRMgQiE+A0AgACASaiEDIAggPqciAmwhFCACIAtsIRUgPiBJfLQhY0IAIUMCQANAIAAiAkEBaiEAAkAgAiARSA0AIAIgB04NAiBHIEh/IkpCAFcNACABKAKAASAQaiAUaiAJIEOnIgJsaiEWIAQoAoABIBNqIBVqIAIgDWxqIQJCACE/IGMhYgNAID8gSH4hS0IAIUADQCACIAwgQEIBiCBLfKciF2xqIhggD2oqAgAhZSBiEHYhZiAWIA4gF2xqIhcgGCoCACJnIGIQdyJolCBmIGWUkjgCACAPIBdqIGggZZQgZyBmlJM4AgAgZCBilCFiIEBCAnwiQCBIUw0ACyA/QgF8Ij8gSlINAAsLIENCAXwiQyBEUg0ACyADIQALID5CAXwiPiBGUg0ACyBBQgF8IkEgRVINAAsMAQsgAEEATA0AIACsIUggRKchEkEAIQAgD0EBdCEPA0AgBiBBpyICbCEQIAIgCmwhEyBCIT4DQCAAIBJqIQMgCCA+pyICbCEUIAIgC2whFSA+IEl8tCFjQgAhQwJAA0AgACICQQFqIQACQCACIBFIDQAgAiAHTg0CIEcgSH8iSkIAVw0AIAEoAoABIBBqIBRqIAkgQ6ciAmxqIRYgBCgCgAEgE2ogFWogAiANbGohAkIAIT8gYyFiA0AgPyBIfiFLQgAhQANAIAIgDCBAQgGIIEt8pyIXbGoiGCAPai8BAEECdEHAlgNqKgIAIWUgYhB2IWYgFiAOIBdsaiIXQYD8ASAYLwEAQQJ0QcCWA2oqAgAiZyBiEHciaJQgZiBllJIiaYtDAACAd5RDAACACJRBgICAiAcgabwiGEEBdCIZQYCAgHhxIhogGkGAgICIB00bQQF2QYCAgDxqvpK8IhpBDXZBgPgBcSAaQf8fcWogGUGAgIB4SxsgGEEQdkGAgAJxcjsBACAPIBdqQYD8ASBoIGWUIGcgZpSTImWLQwAAgHeUQwAAgAiUQYCAgIgHIGW8IhdBAXQiGEGAgIB4cSIZIBlBgICAiAdNG0EBdkGAgIA8ar6SvCIZQQ12QYD4AXEgGUH/H3FqIBhBgICAeEsbIBdBEHZBgIACcXI7AQAgZCBilCFiIEBCAnwiQCBIUw0ACyA/QgF8Ij8gSlINAAsLIENCAXwiQyBEUg0ACyADIQALID5CAXwiPiBGUg0ACyBBQgF8IkEgRVINAAsLIAVBEGokAAwKCyABKAJMIQIgASgCUCEFIwBBEGsiAyQAAkAgAigCACIEQQ1LDQAgBARAIARBAUcEQEEBIAR0Qcz/AHFFDQIgA0H4HjYCCCADQefVADYCBAwUCwJAIAAoAgAOAwIAAgALIAIpAyggAikDGCI+IAIpAyB+fqcgPqciB20hBiAFKAKAASIAKgIIImJDAAAAv5QhYwJ/IAAoAgS3EIgEnCJqmUQAAAAAAADgQWMEQCBqqgwBC0GAgICAeAshACACKAIQIQQgAigCOCEIIAIoAjQhCSACKAIwIQogY0EBIAB0IgWyImOVEPMBIWQgYowgY5UQ8wEhYyAEQQBMDQEgB0EATA0BIAZBAEwNAUEBIARrIQsgASgCgAEhDSACKAKAASEOQQAhAQNAIA0gASAKbCIAaiEMIAAgDmohESABIAtqsiFlQQAhAgNAIAwgAiAJbCIAaiEPIAAgEWohEkEAIQADQCAPIAAgCGwiEGohEyAQIBJqIRACQCAAIAVOBEAgZCAAIAVrQQF0QQFyshCeASFiIABBAWohAAwBCyBjIABBAWoiALIQngEhYgsgEyBlIGKUIBAvAQBBAnRBwJYDaioCAJI4AgAgACAGRw0ACyACQQFqIgIgB0cNAAsgAUEBaiIBIARHDQALDAELAkAgACgCAA4DAQABAAsgAikDKCACKQMYIj4gAikDIH5+pyA+pyIHbSEGIAUoAoABIgAqAggiYkMAAAC/lCFjAn8gACgCBLcQiAScImqZRAAAAAAAAOBBYwRAIGqqDAELQYCAgIB4CyEAIAIoAhAhBCACKAI4IQggAigCNCEJIAIoAjAhCiBjQQEgAHQiBbIiY5UQ8wEhZCBijCBjlRDzASFjIARBAEwNACAHQQBMDQAgBkEATA0AQQEgBGshCyABKAKAASENIAIoAoABIQ5BACEBA0AgDSABIApsIgBqIQwgACAOaiERIAEgC2qyIWVBACECA0AgDCACIAlsIgBqIQ8gACARaiESQQAhAANAIA8gACAIbCIQaiETIBAgEmohEAJAIAAgBU4EQCBkIAAgBWtBAXRBAXKyEJ4BIWIgAEEBaiEADAELIGMgAEEBaiIAshCeASFiCyATIGUgYpQgECoCAJI4AgAgACAGRw0ACyACQQFqIgIgB0cNAAsgAUEBaiIBIARHDQALCyADQRBqJAAMCQsgASgCTCEEIAEoAlAhByMAQTBrIgMkAAJAAkACQAJAIAQoAgAiAkENSw0AIAIEQEEBIAJ0Qc7/AHFFDQEgA0H4HjYCKCADQa7WADYCJAwYCwJAIAAoAgAOAwEAAQALIAQpAxghPiAEKQMgIUIgBCkDKCFAIAEoAjAhAiABKAI0IQggBCgCNCEJIAQoAhAhBSAAKAIIIQoCfyAHKAKAASIHKgIEImKLQwAAAE9dBEAgYqgMAQtBgICAgHgLIQsgAkEERiECAn8gByoCACJii0MAAABPXQRAIGKoDAELQYCAgIB4CyENIAJFDQIgBCgCMEEERw0BIAAoAgQiByA+IEJ+IEB+pyIOTg0AIAVBAEwNAEEAIAVrIQwgBUEBcSERIAVBfHEhAiAJIApsIQ8gCCAKbCESIAQoAoABIhAgByAJbGohEyABKAKAASIUIAcgCGxqIRUgBUEEayIWQQJ2QQFqIgBB/v///wdxIRcgAEEBcSEYIA2yImL9EyFZIAuyImP9EyFaIAVBBEkhGQNAIBAgByAJbGohASAUIAcgCGxqIQRBACEAAkACQCAZDQAgFSAGIBJsaiATIAYgD2xqa0EQSQ0AQQAhCyAWQQRPBEADQCAEIABBAnQiDWogWiABIA1q/QACAP3qASJbIFkgWyBZ/UT9Uv0LAgAgBCANQRByIg1qIFogASANav0AAgD96gEiWyBZIFsgWf1E/VL9CwIAIABBCGohACALQQJqIgsgF0cNAAsLIBgEQCAEIABBAnQiAGogWiAAIAFq/QACAP3qASJbIFkgWyBZ/UT9Uv0LAgALIAIiACAFRg0BCyAAQX9zIQsgEQRAIAQgAEECdCINaiABIA1qKgIAImQgYyBjIGReGyJkIGIgYiBkXRs4AgAgAEEBciEACyALIAxGDQADQCAEIABBAnQiC2ogASALaioCACJkIGMgYyBkXhsiZCBiIGIgZF0bOAIAIAQgC0EEaiILaiABIAtqKgIAImQgYyBjIGReGyJkIGIgYiBkXRs4AgAgAEECaiIAIAVHDQALCyAGQQFqIQYgByAKaiIHIA5IDQALCyADQTBqJAAMAgsgA0GsxQA2AgggA0GM1gA2AgQMEgsgA0HTxAA2AhggA0GL1gA2AhQMFQsMCAsgASgCTCECIAEoAlAhBCMAQbABayIDJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAigCAA4CAQACCyAEKAIADQIgASgCAA0DIAIpAxAiQ6ciDUECbSEKIENCgYCAgICAgICAf4NCAVINBCACKAIwQQJHDQUgBCgCMEEERw0GIAIpAxgiR6dBH2oiB0FgcSEGIAIpAyAhRSAEKQMQIUQCQAJAIAAoAgAOAwABDgELIAQoAjQhDiACKAI4IQkgAigCNCELIAQpAxghSCAAKAIQQQAgACgCDPwLACAAKAIQIQUCQCBFQgBXBEAgBq0hQQwBCyAGrSFBIEdCAFcNACBBIEN+IUogB0EFdiIAIA1BAWtsQQZ0rSFLIENCA4MhSSBDQniDIUIgQ0IBhiFNIEMgAK1+QgaGQsD///8PgyFOIEH9EiFaIAutIU8gCa0hUCACKAKAASECA0AgTSBAIFB+IlF8IVIgQCBOfiJTIEt8IVQgAiAJIECnbGohDSAFIEAgSn6nQQF0aiEAQgAhPwNAIA0gCyA/p2xqIQFCACFGQgAhPgJAAkAgQ0IIVA0AIAIgUiA/IE9+Ikx8p2ogBSBTID9CAYYiPnynaiIHIAUgPiBUfKdqIgggByAISRtLBEBCACE+IAIgTCBRfKdqIAcgCCAHIAhLG0ECakkNAQsgP/0SIVz9DAYAAAAAAAAABwAAAAAAAAAhW/0MBAAAAAAAAAAFAAAAAAAAACFd/QwCAAAAAAAAAAMAAAAAAAAAIV79DAAAAAAAAAAAAQAAAAAAAAAhX0IAIT4DQCAAIF8gWv3VASBc/c4BImD9GwBBAXRqIAEgPqdBAXRq/QABACJZ/VkBAAAgACBg/RsCQQF0aiBZ/VkBAAEgACBeIFr91QEgXP3OASJg/RsAQQF0aiBZ/VkBAAIgACBg/RsCQQF0aiBZ/VkBAAMgACBdIFr91QEgXP3OASJg/RsAQQF0aiBZ/VkBAAQgACBg/RsCQQF0aiBZ/VkBAAUgACBbIFr91QEgXP3OASJg/RsAQQF0aiBZ/VkBAAYgACBg/RsCQQF0aiBZ/VkBAAcgX/0MCAAAAAAAAAAIAAAAAAAAAP3OASFfIF79DAgAAAAAAAAACAAAAAAAAAD9zgEhXiBd/QwIAAAAAAAAAAgAAAAAAAAA/c4BIV0gW/0MCAAAAAAAAAAIAAAAAAAAAP3OASFbID5CCHwiPiBCUg0ACyBCIj4gQ1ENAQsgQyA+Qn+FfCFMIElCAFIEQANAIAAgPiBBfiA/fKdBAXRqIAEgPqdBAXRqLwEAOwEAID5CAXwhPiBGQgF8IkYgSVINAAsLIExCA1QNAANAIAAgPiBBfiA/fKdBAXRqIAEgPqdBAXRqLwEAOwEAIAAgPkIBfCJGIEF+ID98p0EBdGogASBGp0EBdGovAQA7AQAgACA+QgJ8IkYgQX4gP3ynQQF0aiABIEanQQF0ai8BADsBACAAID5CA3wiRiBBfiA/fKdBAXRqIAEgRqdBAXRqLwEAOwEAID5CBHwiPiBDUg0ACwsgP0IBfCI/IEdSDQALIEBCAXwiQCBFUg0ACwsgSEIAVw0NIERCAFcNDSAFIAYgQyBFfqdsQQF0aiEAIAQoAoABIQIgREJ8gyFCIEH9EiFcIAqtIkD9EiFdQgAhPwNAIAIgDiA/p2xqIQFCACE+AkAgREIEWgRAID/9EiFe/QwCAAAAAAAAAAMAAAAAAAAAIVn9DAAAAAAAAAAAAQAAAAAAAAAhWgNAIAAgWiBd/c4BIFz91QEgXv3OASJf/RsAQQF0av0MAH4AAAB+AAAAfgAAAH4AACABID6nQQJ0av0AAgAiW/3gAf0MAACAdwAAgHcAAIB3AACAd/3mAf0MAACACAAAgAgAAIAIAACACP3mASBbQQH9qwEiYP0MAAAA/wAAAP8AAAD/AAAA//1O/QwAAABxAAAAcQAAAHEAAABx/bkBQQH9rQH9DAAAgAcAAIAHAACABwAAgAf9rgH95AEiYUEN/a0B/QwAfAAAAHwAAAB8AAAAfAAA/U4gYf0M/w8AAP8PAAD/DwAA/w8AAP1O/a4BIGD9DAAAAP8AAAD/AAAA/wAAAP/9PP1SIFtBEP2tAf0MAIAAAACAAAAAgAAAAIAAAP1O/VAiW/0bADsBACAAIF/9GwJBAXRqIFv9GwE7AQAgACBZIF39zgEgXP3VASBe/c4BIl/9GwBBAXRqIFv9GwI7AQAgACBf/RsCQQF0aiBb/RsDOwEAIFr9DAQAAAAAAAAABAAAAAAAAAD9zgEhWiBZ/QwEAAAAAAAAAAQAAAAAAAAA/c4BIVkgPkIEfCI+IEJSDQALIEIiPiBEUQ0BCwNAIAAgPiBAfCBBfiA/fKdBAXRqQYD8ASABID6nQQJ0aioCACJii0MAAIB3lEMAAIAIlEGAgICIByBivCIEQQF0IgVBgICAeHEiByAHQYCAgIgHTRtBAXZBgICAPGq+krwiB0ENdkGA+AFxIAdB/x9xaiAFQYCAgHhLGyAEQRB2QYCAAnFyOwEAID5CAXwiPiBEUg0ACwsgP0IBfCI/IEhSDQALDA0LIEWnIgIgACgCCCIEakEBayAEbSIEIAAoAgQiBWwiByAEaiIIIAIgAiAIShsiCyAHTA0MIERCAFcNDCABKAI0IQggASgCgAEhCSANQX5MBEAgCyAHayICQQNxIQUgRKdBAnQhAUEAIQRBACEAIAsgB0F/c2pBA08EQCACQXxxIQZBACECA0AgCSAAIAdqIAhsakEAIAH8CwAgCSAAQQFyIAdqIAhsakEAIAH8CwAgCSAAQQJyIAdqIAhsakEAIAH8CwAgCSAAQQNyIAdqIAhsakEAIAH8CwAgAEEEaiEAIAJBBGoiAiAGRw0ACwsgBUUNDQNAIAkgACAHaiAIbGpBACAB/AsAIABBAWohACAEQQFqIgQgBUcNAAsMDQtBACAKayECIAogCkEfdSIBcyABayEOIAZBAEoEQCAGIA1sIQwgACgCECIRIAYgQyBFfqdsQQF0aiEPA0AgCSAHIAhsaiESIBEgByAMbEEBdGohEEIAIT4DQCA+pyENQwAAAAAhYiACIQEDQCAQIAEgCmoiACAGbEEBdGohEyAPIAAgDWogBmxBAXRqIRRBACEE/QwAAAAAAAAAAAAAAAAAAAAAIlwhWf0MAAAAAAAAAAAAAAAAAAAAACFa/QwAAAAAAAAAAAAAAAAAAAAAIVsDQCBcIBMgBEEBdCIFaiIALwEeQQJ0QcCWA2ogAC8BHEECdEHAlgNqIAAvARpBAnRBwJYDaiAALwEYQQJ0QcCWA2r9CQIA/VYCAAH9VgIAAv1WAgADIAUgFGoiBS8BHkECdEHAlgNqIAUvARxBAnRBwJYDaiAFLwEaQQJ0QcCWA2ogBS8BGEECdEHAlgNq/QkCAP1WAgAB/VYCAAL9VgIAA/3mAf3kASFcIFkgAC8BFkECdEHAlgNqIAAvARRBAnRBwJYDaiAALwESQQJ0QcCWA2ogAC8BEEECdEHAlgNq/QkCAP1WAgAB/VYCAAL9VgIAAyAFLwEWQQJ0QcCWA2ogBS8BFEECdEHAlgNqIAUvARJBAnRBwJYDaiAFLwEQQQJ0QcCWA2r9CQIA/VYCAAH9VgIAAv1WAgAD/eYB/eQBIVkgWiAALwEOQQJ0QcCWA2ogAC8BDEECdEHAlgNqIAAvAQpBAnRBwJYDaiAALwEIQQJ0QcCWA2r9CQIA/VYCAAH9VgIAAv1WAgADIAUvAQ5BAnRBwJYDaiAFLwEMQQJ0QcCWA2ogBS8BCkECdEHAlgNqIAUvAQhBAnRBwJYDav0JAgD9VgIAAf1WAgAC/VYCAAP95gH95AEhWiBbIAAvAQZBAnRBwJYDaiAALwEEQQJ0QcCWA2ogAC8BAkECdEHAlgNqIAAvAQBBAnRBwJYDav0JAgD9VgIAAf1WAgAC/VYCAAMgBS8BBkECdEHAlgNqIAUvAQRBAnRBwJYDaiAFLwECQQJ0QcCWA2ogBS8BAEECdEHAlgNq/QkCAP1WAgAB/VYCAAL9VgIAA/3mAf3kASFbIARBEGoiBCAGSA0ACyBiIFsgWv3kASBZIFz95AH95AEiWf0fAyBZ/R8CIFn9HwAgWf0fAZKSkpIhYiABIA5HIQAgAUEBaiEBIAANAAsgEiANQQJ0aiBiOAIAID5CAXwiPiBEUg0ACyAHQQFqIgcgC0cNAAsMDQsgRKdBAnQhBiAFIAhsIARsIQ0gCiAOaiIKQQFqQQdxIQVBACEEA0AgCSANIAQgCGxqakEAIAb8CwBCACE+A0BBACEBIAIhACAFBEADQCAAQQFqIQAgAUEBaiIBIAVHDQALCyAKQQdPBEADQCAAQQdqIQEgAEEIaiEAIAEgDkcNAAsLID5CAXwiPiBEUg0ACyAEQQFqIQQgB0EBaiIHIAtHDQALDAwLIAQoAgANBiABKAIADQcgAikDECJEpyILQQJtIQYgREKBgICAgICAgIB/g0IBUg0IIAIoAjBBBEcNCSAEKAIwQQRHDQogAikDGCJHp0EfaiIKQWBxIQcgAikDICFFIAQpAxAhQwJAAkAgACgCAA4DAAENAQsgBCgCNCENIAIoAjghDiACKAI0IQwgBCkDGCFIIAAoAhBBACAAKAIM/AsAIAAoAhAhAQJAIEVCAFcEQCAHrSFBDAELIAetIUEgR0IAVw0AIEEgRH4hSiAKQQV2IgAgC0EBa2xBB3StIUsgREIDgyFJIERCfIMhQiBEQgKGIU0gRCAArX5CB4ZCgP///w+DIU4gQf0SIVwgDK0hTyAOrSFQIAIoAoABIQUDQCBNIEAgUH4iUXwhUiBAIE5+IlMgS3whVCAFIA4gQKdsaiELIAEgQCBKfqdBAnRqIQBCACE/A0AgCyAMID+nbGohAkIAIUZCACE+AkACQCBEQgRUDQAgBSBSID8gT34iTHynaiABIFMgP0IChiI+fKdqIgggASA+IFR8p2oiCSAIIAlJG0sEQEIAIT4gBSBMIFF8p2ogCCAJIAggCUsbQQRqSQ0BCyA//RIhXf0MAgAAAAAAAAADAAAAAAAAACFZ/QwAAAAAAAAAAAEAAAAAAAAAIVpCACE+A0AgACBaIFz91QEgXf3OASJe/RsAQQJ0aiACID6nQQJ0av0AAgAiW/0fADgCACAAIF79GwJBAnRqIFv9HwE4AgAgACBZIFz91QEgXf3OASJe/RsAQQJ0aiBb/R8COAIAIAAgXv0bAkECdGogW/0fAzgCACBa/QwEAAAAAAAAAAQAAAAAAAAA/c4BIVogWf0MBAAAAAAAAAAEAAAAAAAAAP3OASFZID5CBHwiPiBCUg0ACyBCIj4gRFENAQsgRCA+Qn+FfCFMIElCAFIEQANAIAAgPiBBfiA/fKdBAnRqIAIgPqdBAnRqKgIAOAIAID5CAXwhPiBGQgF8IkYgSVINAAsLIExCA1QNAANAIAAgPiBBfiA/fKdBAnRqIAIgPqdBAnRqKgIAOAIAIAAgPkIBfCJGIEF+ID98p0ECdGogAiBGp0ECdGoqAgA4AgAgACA+QgJ8IkYgQX4gP3ynQQJ0aiACIEanQQJ0aioCADgCACAAID5CA3wiRiBBfiA/fKdBAnRqIAIgRqdBAnRqKgIAOAIAID5CBHwiPiBEUg0ACwsgP0IBfCI/IEdSDQALIEBCAXwiQCBFUg0ACwsgSEIAVw0MIENCAFcNDCABIAcgRCBFfqciAmxBAnRqIQAgBCgCgAEhBCAKQQV2IAJsQQd0IgIgBiBBpyIFbEECdGohCCACIAYgQ6dqQQJ0QQRrIAVsaiEJIENCAYMhRSBDQnyDIUIgQ0IChiFGIEH9EiFcIAatIkT9EiFdIA2tIUdCACE/A0AgBCANID+nIgVsaiECQgAhPgJAAkAgQ0IEVA0AIAQgRiA/IEd+IkB8p2ogASAIIAVBAnQiB2pqIgUgASAHIAlqaiIHIAUgB0kbSwR/IAQgQKdqIAUgByAFIAdLG0EEakkFQQALDQAgP/0SIV79DAIAAAAAAAAAAwAAAAAAAAAhWf0MAAAAAAAAAAABAAAAAAAAACFaA0AgACBaIF39zgEgXP3VASBe/c4BIl/9GwBBAnRqIAIgPqdBAnRq/QACACJb/R8AOAIAIAAgX/0bAkECdGogW/0fATgCACAAIFkgXf3OASBc/dUBIF79zgEiX/0bAEECdGogW/0fAjgCACAAIF/9GwJBAnRqIFv9HwM4AgAgWv0MBAAAAAAAAAAEAAAAAAAAAP3OASFaIFn9DAQAAAAAAAAABAAAAAAAAAD9zgEhWSA+QgR8Ij4gQlINAAsgQiI+IENRDQELID5CAYQhQCBFpwRAIAAgPiBEfCBBfiA/fKdBAnRqIAIgPqdBAnRqKgIAOAIAIEAhPgsgQCBDUQ0AA0AgACA+IER8IEF+ID98p0ECdGogAiA+p0ECdGoqAgA4AgAgACA+QgF8IkAgRHwgQX4gP3ynQQJ0aiACIECnQQJ0aioCADgCACA+QgJ8Ij4gQ1INAAsLID9CAXwiPyBIUg0ACwwMCyBFpyICIAAoAggiBGpBAWsgBG0iBCAAKAIEIg5sIgUgBGoiCCACIAIgCEobIgogBUwNCyBDQgBXDQsgASgCNCEIIAEoAoABIQkgC0F+TARAIAogBWsiAkEDcSEHIEOnQQJ0IQFBACEEQQAhACAKIAVBf3NqQQNPBEAgAkF8cSEGQQAhAgNAIAkgACAFaiAIbGpBACAB/AsAIAkgAEEBciAFaiAIbGpBACAB/AsAIAkgAEECciAFaiAIbGpBACAB/AsAIAkgAEEDciAFaiAIbGpBACAB/AsAIABBBGohACACQQRqIgIgBkcNAAsLIAdFDQwDQCAJIAAgBWogCGxqQQAgAfwLACAAQQFqIQAgBEEBaiIEIAdHDQALDAwLQQAgBmshAiAGIAZBH3UiAXMgAWshDSAHQQBKBEAgByALbCEOIAAoAhAiDCAHIEQgRX6nbEECdGohEQNAIAkgBSAIbGohDyAMIAUgDmxBAnRqIRJCACE+A0AgDyA+pyIQQQJ0aiITQQA2AgBDAAAAACFiIAIhAQNAIBIgASAGaiIAIAdsQQJ0aiEUIBEgACAQaiAHbEECdGohFUEAIQT9DAAAAAAAAAAAAAAAAAAAAAAiXCFZ/QwAAAAAAAAAAAAAAAAAAAAAIVr9DAAAAAAAAAAAAAAAAAAAAAAhWwNAIFwgFCAEQQJ0IgtqIgD9AAAwIAsgFWoiC/0AADD95gH95AEhXCBZIAD9AAAgIAv9AAAg/eYB/eQBIVkgWiAA/QAAECAL/QAAEP3mAf3kASFaIFsgAP0AAAAgC/0AAAD95gH95AEhWyAEQRBqIgQgB0gNAAsgEyBiIFsgWv3kASBZIFz95AH95AEiWf0fAyBZ/R8CIFn9HwAgWf0fAZKSkpIiYjgCACABIA1HIQAgAUEBaiEBIAANAAsgPkIBfCI+IENSDQALIAogBUEBaiIFRw0ACwwMCyBDp0ECdCELIAggDmwgBGwhDiAGIA1qIgZBAWpBB3EhB0EAIQQDQCAJIA4gBCAIbGpqQQAgC/wLAEIAIT4DQEEAIQEgAiEAIAcEQANAIABBAWohACABQQFqIgEgB0cNAAsLIAZBB08EQANAIABBB2ohASAAQQhqIQAgASANRw0ACwsgPkIBfCI+IENSDQALIARBAWohBCAKIAVBAWoiBUcNAAsMCwsgA0H4HjYCCCADQafcADYCBCADQZEkNgIAQbifAigCAEGI0gAgAxAyDCILIANBwjI2AlggA0Gt2gA2AlQgA0GRJDYCUEG4nwIoAgBBiNIAIANB0ABqEDIMIQsgA0GnMjYCSCADQa7aADYCRCADQZEkNgJAQbifAigCAEGI0gAgA0FAaxAyDCALIANB2jQ2AjggA0Ha2gA2AjQgA0GRJDYCMEG4nwIoAgBBiNIAIANBMGoQMgwfCyADQfPHADYCKCADQdvaADYCJCADQZEkNgIgQbifAigCAEGI0gAgA0EgahAyDB4LIANB/8QANgIYIANB3NoANgIUIANBkSQ2AhBBuJ8CKAIAQYjSACADQRBqEDIMHQsgA0HCMjYCqAEgA0Gl2wA2AqQBIANBkSQ2AqABQbifAigCAEGI0gAgA0GgAWoQMgwcCyADQacyNgKYASADQabbADYClAEgA0GRJDYCkAFBuJ8CKAIAQYjSACADQZABahAyDBsLIANB2jQ2AogBIANB0tsANgKEASADQZEkNgKAAUG4nwIoAgBBiNIAIANBgAFqEDIMGgsgA0GsxQA2AnggA0HT2wA2AnQgA0GRJDYCcEG4nwIoAgBBiNIAIANB8ABqEDIMGQsgA0H/xAA2AmggA0HU2wA2AmQgA0GRJDYCYEG4nwIoAgBBiNIAIANB4ABqEDIMGAsgA0GwAWokAAwACwwHCyABKAJMIQIgASgCUCEEIwBBsAFrIgMkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCACKAIADgIBAAILIAQoAgANAiABKAIADQMgAikDECJDpyIHQQJtIQogQ0KBgICAgICAgIB/g0IBUg0EIAIoAjBBAkcNBSAEKAIwQQRHDQYgAikDGCJHp0EfaiIIQWBxIQYgAikDICFFIAQpAxAhRAJAAkAgACgCAA4DAAEOAQsgBCgCNCENIAIoAjghCSACKAI0IQsgBCkDGCFIIAAoAhBBACAAKAIM/AsAIAAoAhAhBQJAIEVCAFcEQCAGrSFBDAELIAatIUEgR0IAVw0AIEEgQ34hSiAIQQV2IgAgB0EBa2xBBnStIUsgQ0IDgyFJIENCeIMhQiBDQgGGIU0gQyAArX5CBoZCwP///w+DIU4gQf0SIVogC60hTyAJrSFQIAIoAoABIQIDQCBNIEAgUH4iUXwhUiBAIE5+IlMgS3whVCACIAkgQKdsaiEOIAUgQCBKfqdBAXRqIQBCACE/A0AgDiALID+nbGohAUIAIUZCACE+AkACQCBDQghUDQAgAiBSID8gT34iTHynaiAFIFMgP0IBhiI+fKdqIgcgBSA+IFR8p2oiCCAHIAhJG0sEQEIAIT4gAiBMIFF8p2ogByAIIAcgCEsbQQJqSQ0BCyA//RIhXP0MBgAAAAAAAAAHAAAAAAAAACFb/QwEAAAAAAAAAAUAAAAAAAAAIV39DAIAAAAAAAAAAwAAAAAAAAAhXv0MAAAAAAAAAAABAAAAAAAAACFfQgAhPgNAIAAgXyBa/dUBIFz9zgEiYP0bAEEBdGogASA+p0EBdGr9AAEAIln9WQEAACAAIGD9GwJBAXRqIFn9WQEAASAAIF4gWv3VASBc/c4BImD9GwBBAXRqIFn9WQEAAiAAIGD9GwJBAXRqIFn9WQEAAyAAIF0gWv3VASBc/c4BImD9GwBBAXRqIFn9WQEABCAAIGD9GwJBAXRqIFn9WQEABSAAIFsgWv3VASBc/c4BImD9GwBBAXRqIFn9WQEABiAAIGD9GwJBAXRqIFn9WQEAByBf/QwIAAAAAAAAAAgAAAAAAAAA/c4BIV8gXv0MCAAAAAAAAAAIAAAAAAAAAP3OASFeIF39DAgAAAAAAAAACAAAAAAAAAD9zgEhXSBb/QwIAAAAAAAAAAgAAAAAAAAA/c4BIVsgPkIIfCI+IEJSDQALIEIiPiBDUQ0BCyBDID5Cf4V8IUwgSUIAUgRAA0AgACA+IEF+ID98p0EBdGogASA+p0EBdGovAQA7AQAgPkIBfCE+IEZCAXwiRiBJUg0ACwsgTEIDVA0AA0AgACA+IEF+ID98p0EBdGogASA+p0EBdGovAQA7AQAgACA+QgF8IkYgQX4gP3ynQQF0aiABIEanQQF0ai8BADsBACAAID5CAnwiRiBBfiA/fKdBAXRqIAEgRqdBAXRqLwEAOwEAIAAgPkIDfCJGIEF+ID98p0EBdGogASBGp0EBdGovAQA7AQAgPkIEfCI+IENSDQALCyA/QgF8Ij8gR1INAAsgQEIBfCJAIEVSDQALCyBIQgBXDQ0gREIAVw0NIAUgBiBDIEV+p2xBAXRqIQAgBCgCgAEhAiBEQnyDIUIgQf0SIVwgCq0iQP0SIV1CACE/A0AgAiANID+nbGohAUIAIT4CQCBEQgRaBEAgP/0SIV79DAIAAAAAAAAAAwAAAAAAAAAhWf0MAAAAAAAAAAABAAAAAAAAACFaA0AgACBaIF39zgEgXP3VASBe/c4BIl/9GwBBAXRq/QwAfgAAAH4AAAB+AAAAfgAAIAEgPqdBAnRq/QACACJb/eAB/QwAAIB3AACAdwAAgHcAAIB3/eYB/QwAAIAIAACACAAAgAgAAIAI/eYBIFtBAf2rASJg/QwAAAD/AAAA/wAAAP8AAAD//U79DAAAAHEAAABxAAAAcQAAAHH9uQFBAf2tAf0MAACABwAAgAcAAIAHAACAB/2uAf3kASJhQQ39rQH9DAB8AAAAfAAAAHwAAAB8AAD9TiBh/Qz/DwAA/w8AAP8PAAD/DwAA/U79rgEgYP0MAAAA/wAAAP8AAAD/AAAA//08/VIgW0EQ/a0B/QwAgAAAAIAAAACAAAAAgAAA/U79UCJb/RsAOwEAIAAgX/0bAkEBdGogW/0bATsBACAAIFkgXf3OASBc/dUBIF79zgEiX/0bAEEBdGogW/0bAjsBACAAIF/9GwJBAXRqIFv9GwM7AQAgWv0MBAAAAAAAAAAEAAAAAAAAAP3OASFaIFn9DAQAAAAAAAAABAAAAAAAAAD9zgEhWSA+QgR8Ij4gQlINAAsgQiI+IERRDQELA0AgACA+IEB8IEF+ID98p0EBdGpBgPwBIAEgPqdBAnRqKgIAImKLQwAAgHeUQwAAgAiUQYCAgIgHIGK8IgRBAXQiBUGAgIB4cSIHIAdBgICAiAdNG0EBdkGAgIA8ar6SvCIHQQ12QYD4AXEgB0H/H3FqIAVBgICAeEsbIARBEHZBgIACcXI7AQAgPkIBfCI+IERSDQALCyA/QgF8Ij8gSFINAAsMDQsgRaciAiAAKAIIIgRqQQFrIARtIgUgACgCBCIObCIEIAVqIgggAiACIAhKGyILIARMDQwgREIAVw0MIAEoAjQhCCABKAKAASEJIAdBfkwEQCALIARrIgJBA3EhByBEp0EBdEECa0F8cUEEaiEBQQAhBUEAIQAgCyAEQX9zakEDTwRAIAJBfHEhBkEAIQIDQCAJIAAgBGogCGxqQQAgAfwLACAJIABBAXIgBGogCGxqQQAgAfwLACAJIABBAnIgBGogCGxqQQAgAfwLACAJIABBA3IgBGogCGxqQQAgAfwLACAAQQRqIQAgAkEEaiICIAZHDQALCyAHRQ0NA0AgCSAAIARqIAhsakEAIAH8CwAgAEEBaiEAIAVBAWoiBSAHRw0ACwwNC0EAIAprIQIgCiAKQR91IgFzIAFrIQ0gBkEASgRAIAYgB2whDiAAKAIQIgwgBiBDIEV+p2xBAXRqIREDQCAJIAQgCGxqIQ8gDCAEIA5sQQF0aiESQgAhPgNAID5CAYinIRAgPqchE0MAAAAAIWIgAiEBA0AgEiABIApqIgAgBmxBAXRqIRQgESAAIBNqIAZsQQF0aiEVQQAhBf0MAAAAAAAAAAAAAAAAAAAAACJcIVn9DAAAAAAAAAAAAAAAAAAAAAAhWv0MAAAAAAAAAAAAAAAAAAAAACFbA0AgXCAUIAVBAXQiB2oiAC8BHkECdEHAlgNqIAAvARxBAnRBwJYDaiAALwEaQQJ0QcCWA2ogAC8BGEECdEHAlgNq/QkCAP1WAgAB/VYCAAL9VgIAAyAHIBVqIgcvAR5BAnRBwJYDaiAHLwEcQQJ0QcCWA2ogBy8BGkECdEHAlgNqIAcvARhBAnRBwJYDav0JAgD9VgIAAf1WAgAC/VYCAAP95gH95AEhXCBZIAAvARZBAnRBwJYDaiAALwEUQQJ0QcCWA2ogAC8BEkECdEHAlgNqIAAvARBBAnRBwJYDav0JAgD9VgIAAf1WAgAC/VYCAAMgBy8BFkECdEHAlgNqIAcvARRBAnRBwJYDaiAHLwESQQJ0QcCWA2ogBy8BEEECdEHAlgNq/QkCAP1WAgAB/VYCAAL9VgIAA/3mAf3kASFZIFogAC8BDkECdEHAlgNqIAAvAQxBAnRBwJYDaiAALwEKQQJ0QcCWA2ogAC8BCEECdEHAlgNq/QkCAP1WAgAB/VYCAAL9VgIAAyAHLwEOQQJ0QcCWA2ogBy8BDEECdEHAlgNqIAcvAQpBAnRBwJYDaiAHLwEIQQJ0QcCWA2r9CQIA/VYCAAH9VgIAAv1WAgAD/eYB/eQBIVogWyAALwEGQQJ0QcCWA2ogAC8BBEECdEHAlgNqIAAvAQJBAnRBwJYDaiAALwEAQQJ0QcCWA2r9CQIA/VYCAAH9VgIAAv1WAgADIAcvAQZBAnRBwJYDaiAHLwEEQQJ0QcCWA2ogBy8BAkECdEHAlgNqIAcvAQBBAnRBwJYDav0JAgD9VgIAAf1WAgAC/VYCAAP95gH95AEhWyAFQRBqIgUgBkgNAAsgYiBbIFr95AEgWSBc/eQB/eQBIln9HwMgWf0fAiBZ/R8AIFn9HwGSkpKSIWIgASANRyEAIAFBAWohASAADQALIA8gEEECdGogYjgCACA+QgJ8Ij4gRFMNAAsgBEEBaiIEIAtHDQALDA0LIAggDmwgBWwhBiAKIA1qIgpBAWpBB3EhByBEp0EBdEECa0F8cUEEaiEOQQAhBQNAIAkgBiAFIAhsampBACAO/AsAQgAhPgNAQQAhASACIQAgBwRAA0AgAEEBaiEAIAFBAWoiASAHRw0ACwsgCkEHTwRAA0AgAEEHaiEBIABBCGohACABIA1HDQALCyA+QgJ8Ij4gRFMNAAsgBUEBaiEFIARBAWoiBCALRw0ACwwMCyAEKAIADQYgASgCAA0HIAIpAxAiRKciBUECbSEGIERCgYCAgICAgICAf4NCAVINCCACKAIwQQRHDQkgBCgCMEEERw0KIAIpAxgiR6dBH2oiCkFgcSEHIAIpAyAhRSAEKQMQIUMCQAJAIAAoAgAOAwABDQELIAQoAjQhCyACKAI4IQ0gAigCNCEOIAQpAxghSCAAKAIQQQAgACgCDPwLACAAKAIQIQECQCBFQgBXBEAgB60hQQwBCyAHrSFBIEdCAFcNACBBIER+IUogCkEFdiIAIAVBAWtsQQd0rSFLIERCA4MhSSBEQnyDIUIgREIChiFNIEQgAK1+QgeGQoD///8PgyFOIEH9EiFcIA6tIU8gDa0hUCACKAKAASEFA0AgTSBAIFB+IlF8IVIgQCBOfiJTIEt8IVQgBSANIECnbGohDCABIEAgSn6nQQJ0aiEAQgAhPwNAIAwgDiA/p2xqIQJCACFGQgAhPgJAAkAgREIEVA0AIAUgUiA/IE9+Ikx8p2ogASBTID9CAoYiPnynaiIIIAEgPiBUfKdqIgkgCCAJSRtLBEBCACE+IAUgTCBRfKdqIAggCSAIIAlLG0EEakkNAQsgP/0SIV39DAIAAAAAAAAAAwAAAAAAAAAhWf0MAAAAAAAAAAABAAAAAAAAACFaQgAhPgNAIAAgWiBc/dUBIF39zgEiXv0bAEECdGogAiA+p0ECdGr9AAIAIlv9HwA4AgAgACBe/RsCQQJ0aiBb/R8BOAIAIAAgWSBc/dUBIF39zgEiXv0bAEECdGogW/0fAjgCACAAIF79GwJBAnRqIFv9HwM4AgAgWv0MBAAAAAAAAAAEAAAAAAAAAP3OASFaIFn9DAQAAAAAAAAABAAAAAAAAAD9zgEhWSA+QgR8Ij4gQlINAAsgQiI+IERRDQELIEQgPkJ/hXwhTCBJQgBSBEADQCAAID4gQX4gP3ynQQJ0aiACID6nQQJ0aioCADgCACA+QgF8IT4gRkIBfCJGIElSDQALCyBMQgNUDQADQCAAID4gQX4gP3ynQQJ0aiACID6nQQJ0aioCADgCACAAID5CAXwiRiBBfiA/fKdBAnRqIAIgRqdBAnRqKgIAOAIAIAAgPkICfCJGIEF+ID98p0ECdGogAiBGp0ECdGoqAgA4AgAgACA+QgN8IkYgQX4gP3ynQQJ0aiACIEanQQJ0aioCADgCACA+QgR8Ij4gRFINAAsLID9CAXwiPyBHUg0ACyBAQgF8IkAgRVINAAsLIEhCAFcNDCBDQgBXDQwgASAHIEQgRX6nIgJsQQJ0aiEAIAQoAoABIQQgCkEFdiACbEEHdCICIAYgQaciBWxBAnRqIQggAiAGIEOnakECdEEEayAFbGohCSBDQgGDIUUgQ0J8gyFCIENCAoYhRiBB/RIhXCAGrSJE/RIhXSALrSFHQgAhPwNAIAQgCyA/pyIFbGohAkIAIT4CQAJAIENCBFQNACAEIEYgPyBHfiJAfKdqIAEgCCAFQQJ0IgdqaiIFIAEgByAJamoiByAFIAdJG0sEfyAEIECnaiAFIAcgBSAHSxtBBGpJBUEACw0AID/9EiFe/QwCAAAAAAAAAAMAAAAAAAAAIVn9DAAAAAAAAAAAAQAAAAAAAAAhWgNAIAAgWiBd/c4BIFz91QEgXv3OASJf/RsAQQJ0aiACID6nQQJ0av0AAgAiW/0fADgCACAAIF/9GwJBAnRqIFv9HwE4AgAgACBZIF39zgEgXP3VASBe/c4BIl/9GwBBAnRqIFv9HwI4AgAgACBf/RsCQQJ0aiBb/R8DOAIAIFr9DAQAAAAAAAAABAAAAAAAAAD9zgEhWiBZ/QwEAAAAAAAAAAQAAAAAAAAA/c4BIVkgPkIEfCI+IEJSDQALIEIiPiBDUQ0BCyA+QgGEIUAgRacEQCAAID4gRHwgQX4gP3ynQQJ0aiACID6nQQJ0aioCADgCACBAIT4LIEAgQ1ENAANAIAAgPiBEfCBBfiA/fKdBAnRqIAIgPqdBAnRqKgIAOAIAIAAgPkIBfCJAIER8IEF+ID98p0ECdGogAiBAp0ECdGoqAgA4AgAgPkICfCI+IENSDQALCyA/QgF8Ij8gSFINAAsMDAsgRaciAiAAKAIIIgRqQQFrIARtIg0gACgCBCIObCIEIA1qIgggAiACIAhKGyIKIARMDQsgQ0IAVw0LIAEoAjQhCCABKAKAASEJIAVBfkwEQCAKIARrIgJBA3EhByBDp0EBdEECa0F8cUEEaiEBQQAhBUEAIQAgCiAEQX9zakEDTwRAIAJBfHEhBkEAIQIDQCAJIAAgBGogCGxqQQAgAfwLACAJIABBAXIgBGogCGxqQQAgAfwLACAJIABBAnIgBGogCGxqQQAgAfwLACAJIABBA3IgBGogCGxqQQAgAfwLACAAQQRqIQAgAkEEaiICIAZHDQALCyAHRQ0MA0AgCSAAIARqIAhsakEAIAH8CwAgAEEBaiEAIAVBAWoiBSAHRw0ACwwMC0EAIAZrIQIgBiAGQR91IgFzIAFrIQsgB0EASgRAIAUgB2whDiAAKAIQIgwgByBEIEV+p2xBAnRqIREDQCAJIAQgCGxqIQ8gDCAEIA5sQQJ0aiESQgAhPgNAIA8gPqciEEEBdEF8cWoiE0EANgIAQwAAAAAhYiACIQEDQCASIAEgBmoiACAHbEECdGohFCARIAAgEGogB2xBAnRqIRVBACEF/QwAAAAAAAAAAAAAAAAAAAAAIlwhWf0MAAAAAAAAAAAAAAAAAAAAACFa/QwAAAAAAAAAAAAAAAAAAAAAIVsDQCBcIBQgBUECdCINaiIA/QAAMCANIBVqIg39AAAw/eYB/eQBIVwgWSAA/QAAICAN/QAAIP3mAf3kASFZIFogAP0AABAgDf0AABD95gH95AEhWiBbIAD9AAAAIA39AAAA/eYB/eQBIVsgBUEQaiIFIAdIDQALIBMgYiBbIFr95AEgWSBc/eQB/eQBIln9HwMgWf0fAiBZ/R8AIFn9HwGSkpKSImI4AgAgASALRyEAIAFBAWohASAADQALID5CAnwiPiBDUw0ACyAKIARBAWoiBEcNAAsMDAsgCCAObCANbCENIAYgC2oiBkEBakEHcSEHIEOnQQF0QQJrQXxxQQRqIQ5BACEFA0AgCSANIAUgCGxqakEAIA78CwBCACE+A0BBACEBIAIhACAHBEADQCAAQQFqIQAgAUEBaiIBIAdHDQALCyAGQQdPBEADQCAAQQdqIQEgAEEIaiEAIAEgC0cNAAsLID5CAnwiPiBDUw0ACyAFQQFqIQUgCiAEQQFqIgRHDQALDAsLIANB+B42AgggA0Gu3gA2AgQgA0GRJDYCAEG4nwIoAgBBiNIAIAMQMgwhCyADQcIyNgJYIANBtNwANgJUIANBkSQ2AlBBuJ8CKAIAQYjSACADQdAAahAyDCALIANBpzI2AkggA0G13AA2AkQgA0GRJDYCQEG4nwIoAgBBiNIAIANBQGsQMgwfCyADQdo0NgI4IANB4dwANgI0IANBkSQ2AjBBuJ8CKAIAQYjSACADQTBqEDIMHgsgA0HzxwA2AiggA0Hi3AA2AiQgA0GRJDYCIEG4nwIoAgBBiNIAIANBIGoQMgwdCyADQf/EADYCGCADQePcADYCFCADQZEkNgIQQbifAigCAEGI0gAgA0EQahAyDBwLIANBwjI2AqgBIANBrN0ANgKkASADQZEkNgKgAUG4nwIoAgBBiNIAIANBoAFqEDIMGwsgA0GnMjYCmAEgA0Gt3QA2ApQBIANBkSQ2ApABQbifAigCAEGI0gAgA0GQAWoQMgwaCyADQdo0NgKIASADQdndADYChAEgA0GRJDYCgAFBuJ8CKAIAQYjSACADQYABahAyDBkLIANBrMUANgJ4IANB2t0ANgJ0IANBkSQ2AnBBuJ8CKAIAQYjSACADQfAAahAyDBgLIANB/8QANgJoIANB290ANgJkIANBkSQ2AmBBuJ8CKAIAQYjSACADQeAAahAyDBcLIANBsAFqJAAMAAsMBgsCfyABKAJYIQMjAEHgAGsiAiQAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQCADKAIADg0EAwUFBQUFBQUFAAECBQsgAygCMEEBRw0HIAMoAoABLAAADAYLIAMoAjBBAkcNByADKAKAAS4BAAwFCyADKAIwQQRHDQcgAygCgAEoAgAMBAsgAygCMEECRw0HIAMoAoABLwEAQQJ0QcCWA2oqAgAiYotDAAAAT11FDQIgYqgMAwsgAygCMEEERw0HIAMoAoABKgIAImKLQwAAAE9dRQ0BIGKoDAILIAJB+B42AgggAkGSIjYCBCACQZEkNgIAQbifAigCAEGI0gAgAhAyDAcLQYCAgIB4CyEDIAJB4ABqJAAgAwwGCyACQcLFADYCGCACQfkhNgIUIAJBkSQ2AhBBuJ8CKAIAQYjSACACQRBqEDIMBAsgAkHixQA2AiggAkH+ITYCJCACQZEkNgIgQbifAigCAEGI0gAgAkEgahAyDAMLIAJBrMgANgI4IAJBgyI2AjQgAkGRJDYCMEG4nwIoAgBBiNIAIAJBMGoQMgwCCyACQYPGADYCSCACQYgiNgJEIAJBkSQ2AkBBuJ8CKAIAQYjSACACQUBrEDIMAQsgAkHVwwA2AlggAkGNIjYCVCACQZEkNgJQQbifAigCAEGI0gAgAkHQAGoQMgsMFQsiAkECTw0HIAAhBSABKAJMIQsgASgCUCEOIAEoAlQhESACQQBHIQAgASEEIwBBkANrIggkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgCygCAA4CDgABCyALKQMQIkMgBCkDEFINDCALKQMYIkQgBCkDGFINCyAOKQMYIkEgRH0iQkIAUw0KIAsoAjBBAkcNCSAOKAIwQQJHDQggESgCMEECRw0HIA4pAxAgQ1INBiARKQMYIENSDQUgBCgCMEEERw0EIAQoAjQiFkEDTA0DIBYgBCgCOCIXSg0CIBcgBCgCPCIdSg0BAkAgBSgCAA4DDwAPAAsgCykDICBEfiJGIAspAyh+pyIBIAUoAggiAmpBAWsgAm0iAiAFKAIEIgpsIgkgAiAJaiICIAEgASACShsiL04NDiARKAI8IRwgESgCOCEeIBEoAjQhGCALKAI8ISMgCygCOCEkIAsoAjQhISAOKAI8IScgDigCOCElIA4oAjQhGSAARSBEQgBXciEwIEGnIgNBcHEiASADQQ9xIikgA0EDcSIUayIqaiECIEIgRCBBIEJCAXwiPiA+IEFTG3wgQX0iR0J8gyJIfCE/IANBAXEhKCBBQnyDIUAgA0F8cSE0IENCAYMhSiBBQgGDIUsgQv0SIln9DAIAAAAAAAAAAwAAAAAAAAD9zgEhWyBZ/QwAAAAAAAAAAAEAAAAAAAAA/c4BIVwgAUEBciE1IEOnIhNBAXEhNiATQXBxIgdBAXIhNyADQQNqQXxxIhAgA2siGkF8cSI4IANqIQYgCiAQQQF0QRBqbCE5IAFBAWsiK0EEdkEBaiIAQf7///8BcSEsIABBAXEhLSAaQQRrIgBBAnZBAWoiCkH8////B3EhOiAKQQNxIS5DAACAPyBDtJGVImX9EyFfIAmsIUUgAEEMSSExIANBAWsgAUchIEEAIBNrIAdBf3NHISIDQCBFIEUgRn8iPsQgRn59IkkgSSBEfyJNIER+fSFJIDlBAnQiOyAFKAIQaiEKAkAgAyAQTg0AIAMhACAaQQRPBEBBACEJQQAhAEEAIQ0gMUUEQANAIAogACADakECdGr9DAAAgP8AAID/AACA/wAAgP/9CwIAIAogAEEEciADakECdGr9DAAAgP8AAID/AACA/wAAgP/9CwIAIAogAEEIciADakECdGr9DAAAgP8AAID/AACA/wAAgP/9CwIAIAogAEEMciADakECdGr9DAAAgP8AAID/AACA/wAAgP/9CwIAIABBEGohACANQQRqIg0gOkcNAAsLIC4EQANAIAogACADakECdGr9DAAAgP8AAID/AACA/wAAgP/9CwIAIABBBGohACAJQQFqIgkgLkcNAAsLIAYhACAaIDhGDQELA0AgCiAAQQJ0akGAgIB8NgIAIABBAWoiACAQRw0ACwsgSachFSA+pyEPIE2nIRICQCBLpwRAIEFCAFcNASASICVsIA8gJ2xqITIgCygCgAEgEiAkbCAPICNsaiAVICFsamoiGyAHQQF0Ih9qITMgDigCgAEhPEIAIT4DQCA+pyIAQQJ0IT0gPCAyIAAgGWxqaiEMQQAhDf0MAAAAAAAAAAAAAAAAAAAAACJZIVr9DAAAAAAAAAAAAAAAAAAAAAAhXf0MAAAAAAAAAAAAAAAAAAAAACFeIAdBAEoEQANAIFkgDCANQQF0IglqIgAvAR5BAnRBwJYDaiAALwEcQQJ0QcCWA2ogAC8BGkECdEHAlgNqIAAvARhBAnRBwJYDav0JAgD9VgIAAf1WAgAC/VYCAAMgCSAbaiIJLwEeQQJ0QcCWA2ogCS8BHEECdEHAlgNqIAkvARpBAnRBwJYDaiAJLwEYQQJ0QcCWA2r9CQIA/VYCAAH9VgIAAv1WAgAD/eYB/eQBIVkgWiAALwEWQQJ0QcCWA2ogAC8BFEECdEHAlgNqIAAvARJBAnRBwJYDaiAALwEQQQJ0QcCWA2r9CQIA/VYCAAH9VgIAAv1WAgADIAkvARZBAnRBwJYDaiAJLwEUQQJ0QcCWA2ogCS8BEkECdEHAlgNqIAkvARBBAnRBwJYDav0JAgD9VgIAAf1WAgAC/VYCAAP95gH95AEhWiBdIAAvAQ5BAnRBwJYDaiAALwEMQQJ0QcCWA2ogAC8BCkECdEHAlgNqIAAvAQhBAnRBwJYDav0JAgD9VgIAAf1WAgAC/VYCAAMgCS8BDkECdEHAlgNqIAkvAQxBAnRBwJYDaiAJLwEKQQJ0QcCWA2ogCS8BCEECdEHAlgNq/QkCAP1WAgAB/VYCAAL9VgIAA/3mAf3kASFdIF4gAC8BBkECdEHAlgNqIAAvAQRBAnRBwJYDaiAALwECQQJ0QcCWA2ogAC8BAEECdEHAlgNq/QkCAP1WAgAB/VYCAAL9VgIAAyAJLwEGQQJ0QcCWA2ogCS8BBEECdEHAlgNqIAkvAQJBAnRBwJYDaiAJLwEAQQJ0QcCWA2r9CQIA/VYCAAH9VgIAAv1WAgAD/eYB/eQBIV4gDUEQaiINIAdIDQALIF4gXf3kASBaIFn95AH95AEhWQsgWf0fAyBZ/R8CIFn9HwAgWf0fAZKSkiFiIAogPWogByATSAR9IGK7IWogNgR/IGogDCAfai8BAEECdEHAlgNqKgIAIDMvAQBBAnRBwJYDaioCAJS7oCFqIDcFIAcLIQAgIgRAA0AgaiAMIABBAXQiCWovAQBBAnRBwJYDaioCACAJIBtqLwEAQQJ0QcCWA2oqAgCUu6AgDCAJQQJqIglqLwEAQQJ0QcCWA2oqAgAgCSAbai8BAEECdEHAlgNqKgIAlLugIWogAEECaiIAIBNHDQALCyBqtgUgYgs4AgAgPkIBfCI+IEFSDQALDAELIEFCAFcNACASICVsIA8gJ2xqIQAgEiAkbCAPICNsaiAVICFsaiEJQgAhPgNAIBMgGSAKID6nIg1BAnRqIA4oAoABIAAgDSAZbGpqIAsoAoABIAlqEIMDID5CAnwiPiBBUw0ACwsCQCABQQBMIjINAEEAIQlBACENICtBD0cEQANAIAogCUECdCIMaiIAIF8gAP0AAAD95gH9CwAAIAAgXyAA/QAAEP3mAf0LABAgACBfIAD9AAAg/eYB/QsAICAAIF8gAP0AADD95gH9CwAwIAogDEHAAHJqIgAgXyAA/QAAAP3mAf0LAAAgACBfIAD9AAAQ/eYB/QsAECAAIF8gAP0AACD95gH9CwAgIAAgXyAA/QAAMP3mAf0LADAgCUEgaiEJIA1BAmoiDSAsRw0ACwsgLUUNACAKIAlBAnRqIgAgXyAA/QAAAP3mAf0LAAAgACBfIAD9AAAQ/eYB/QsAECAAIF8gAP0AACD95gH9CwAgIAAgXyAA/QAAMP3mAf0LADALAkAgASADTiIbDQBBACEJIAEhACApQQRPBEADQCAKIAEgCWpBAnRqIgAgXyAA/QACAP3mAf0LAgAgCUEEaiIJICpHDQALIAIhACAURQ0BCwNAIAogAEECdGoiCSBlIAkqAgCUOAIAIABBAWoiACADRw0ACwsCQCAwDQAgScQgQnwhSSBCIT4gR0IEWgRAIEn9EiFdQgAhPiBcIVkgWyFaA0AgPiBCfKchACBZIF392QEiXv0bAEEBcQRAIAogAEECdGpBgICAfDYCAAsgXv0bAkEBcQRAIABBAnQgCmpBgICAfDYCBAsgWiBd/dkBIl79GwBBAXEEQCAAQQJ0IApqQYCAgHw2AggLIF79GwJBAXEEQCAAQQJ0IApqQYCAgHw2AgwLIFn9DAQAAAAAAAAABAAAAAAAAAD9zgEhWSBa/QwEAAAAAAAAAAQAAAAAAAAA/c4BIVogPkIEfCI+IEhSDQALID8hPiBHIEhRDQELA0AgPiBJVQRAIAogPqdBAnRqQYCAgHw2AgALID5CAXwiPiBBUw0ACwsCQCADQQBMBEBDAACA/yFiDAELQwAAgP8hYkEAIQ1BACEAQQAhDCADQQRPBEADQCBiIAogAEECdCIJaioCACJjIGIgY14bImIgCiAJQQRyaioCACJjIGIgY14bImIgCiAJQQhyaioCACJjIGIgY14bImIgCiAJQQxyaioCACJjIGIgY14bIWIgAEEEaiEAIAxBBGoiDCA0Rw0ACwsgFEUNAANAIGIgCiAAQQJ0aioCACJjIGIgY14bIWIgAEEBaiEAIA1BAWoiDSAURw0ACwtBACEJRAAAAAAAAAAAIWpEAAAAAAAAAAAha0QAAAAAAAAAACFsRAAAAAAAAAAAIW0gEEEASgRAA0BDAAAAACFjAkAgCiAJQQJ0aiIAKgIAImRDAACA/1sEQEMAAAAAIWQMAQsgakGA/AEgZCBikyJki0MAAIB3lEMAAIAIlEGAgICIByBkvCINQQF0IgxBgICAeHEiHyAfQYCAgIgHTRtBAXZBgICAPGq+krwiH0ENdkGA+AFxIB9B/x9xaiAMQYCAgHhLGyANQRB2QYCAAnFyQQF0QcCWI2ovAQBBAnRBwJYDaioCACJku6AhagsgACBkOAIAIAAqAgQiZEMAAID/XARAIGtBgPwBIGQgYpMiY4tDAACAd5RDAACACJRBgICAiAcgY7wiDUEBdCIMQYCAgHhxIh8gH0GAgICIB00bQQF2QYCAgDxqvpK8Ih9BDXZBgPgBcSAfQf8fcWogDEGAgIB4SxsgDUEQdkGAgAJxckEBdEHAliNqLwEAQQJ0QcCWA2oqAgAiY7ugIWsLIAAgYzgCBEMAAAAAIWMCQCAAKgIIImRDAACA/1sEQEMAAAAAIWQMAQsgbEGA/AEgZCBikyJki0MAAIB3lEMAAIAIlEGAgICIByBkvCINQQF0IgxBgICAeHEiHyAfQYCAgIgHTRtBAXZBgICAPGq+krwiH0ENdkGA+AFxIB9B/x9xaiAMQYCAgHhLGyANQRB2QYCAAnFyQQF0QcCWI2ovAQBBAnRBwJYDaioCACJku6AhbAsgACBkOAIIIAAqAgwiZEMAAID/XARAIG1BgPwBIGQgYpMiY4tDAACAd5RDAACACJRBgICAiAcgY7wiDUEBdCIMQYCAgHhxIh8gH0GAgICIB00bQQF2QYCAgDxqvpK8Ih9BDXZBgPgBcSAfQf8fcWogDEGAgIB4SxsgDUEQdkGAgAJxckEBdEHAliNqLwEAQQJ0QcCWA2oqAgAiY7ugIW0LIAAgYzgCDCAJQQRqIgkgEEgNAAsLRAAAAAAAAPA/IGpEAAAAAAAAAACgIGugIGygIG2go7YhYgJAIAFBAEwNACBi/RMhWUEAIQlBACENICtBD0cEQANAIAogCUECdCIMaiIAIFkgAP0AAAD95gH9CwAAIAAgWSAA/QAAEP3mAf0LABAgACBZIAD9AAAg/eYB/QsAICAAIFkgAP0AADD95gH9CwAwIAogDEHAAHJqIgAgWSAA/QAAAP3mAf0LAAAgACBZIAD9AAAQ/eYB/QsAECAAIFkgAP0AACD95gH9CwAgIAAgWSAA/QAAMP3mAf0LADAgCUEgaiEJIA1BAmoiDSAsRw0ACwsgLUUNACAKIAlBAnRqIgAgWSAA/QAAAP3mAf0LAAAgACBZIAD9AAAQ/eYB/QsAECAAIFkgAP0AACD95gH9CwAgIAAgWSAA/QAAMP3mAf0LADALAkAgGw0AIAEhACApQQRPBEAgYv0TIVlBACEAA0AgCiAAIAFqQQJ0aiIJIAn9AAIAIFn95gH9CwIAIABBBGoiACAqRw0ACyACIQAgFEUNAQsDQCAKIABBAnRqIgkgCSoCACBilDgCACAAQQFqIgAgA0cNAAsLIAUoAhAgEEECdGogO2ohDAJAIEFCAFcNAEIAIT4gQUIEWgRAA0AgDCA+pyIAQQF0av0MAH4AAAB+AAAAfgAAAH4AACAKIABBAnRq/QACACJZ/eAB/QwAAIB3AACAdwAAgHcAAIB3/eYB/QwAAIAIAACACAAAgAgAAIAI/eYBIFlBAf2rASJa/QwAAAD/AAAA/wAAAP8AAAD//U79DAAAAHEAAABxAAAAcQAAAHH9uQFBAf2tAf0MAACABwAAgAcAAIAHAACAB/2uAf3kASJdQQ39rQH9DAB8AAAAfAAAAHwAAAB8AAD9TiBd/Qz/DwAA/w8AAP8PAAD/DwAA/U79rgEgWv0MAAAA/wAAAP8AAAD/AAAA//08/VIgWUEQ/a0B/QwAgAAAAIAAAACAAAAAgAAA/U79UCBZ/Q0AAQQFCAkMDQABAAEAAQAB/VsBAAAgPkIEfCI+IEBSDQALIEAiPiBBUQ0BCwNAIAwgPqciAEEBdGpBgPwBIAogAEECdGoqAgAiYotDAACAd5RDAACACJRBgICAiAcgYrwiAEEBdCIJQYCAgHhxIg0gDUGAgICIB00bQQF2QYCAgDxqvpK8Ig1BDXZBgPgBcSANQf8fcWogCUGAgIB4SxsgAEEQdkGAgAJxcjsBACA+QgF8Ij4gQVINAAsLAkAgSqcEQCBDQgBXDQEgEiAebCAPIBxsaiE7IBIgF2wgDyAdbGogFSAWbGohDyAMIAFBAXQiEmohFSARKAKAASEfIAQoAoABITNCACE+A0AgHyA7IBggPqciPGxqaiEKQQAhDf0MAAAAAAAAAAAAAAAAAAAAACJZIVr9DAAAAAAAAAAAAAAAAAAAAAAhXf0MAAAAAAAAAAAAAAAAAAAAACFeIDJFBEADQCBZIAogDUEBdCIJaiIALwEeQQJ0QcCWA2ogAC8BHEECdEHAlgNqIAAvARpBAnRBwJYDaiAALwEYQQJ0QcCWA2r9CQIA/VYCAAH9VgIAAv1WAgADIAkgDGoiCS8BHkECdEHAlgNqIAkvARxBAnRBwJYDaiAJLwEaQQJ0QcCWA2ogCS8BGEECdEHAlgNq/QkCAP1WAgAB/VYCAAL9VgIAA/3mAf3kASFZIFogAC8BFkECdEHAlgNqIAAvARRBAnRBwJYDaiAALwESQQJ0QcCWA2ogAC8BEEECdEHAlgNq/QkCAP1WAgAB/VYCAAL9VgIAAyAJLwEWQQJ0QcCWA2ogCS8BFEECdEHAlgNqIAkvARJBAnRBwJYDaiAJLwEQQQJ0QcCWA2r9CQIA/VYCAAH9VgIAAv1WAgAD/eYB/eQBIVogXSAALwEOQQJ0QcCWA2ogAC8BDEECdEHAlgNqIAAvAQpBAnRBwJYDaiAALwEIQQJ0QcCWA2r9CQIA/VYCAAH9VgIAAv1WAgADIAkvAQ5BAnRBwJYDaiAJLwEMQQJ0QcCWA2ogCS8BCkECdEHAlgNqIAkvAQhBAnRBwJYDav0JAgD9VgIAAf1WAgAC/VYCAAP95gH95AEhXSBeIAAvAQZBAnRBwJYDaiAALwEEQQJ0QcCWA2ogAC8BAkECdEHAlgNqIAAvAQBBAnRBwJYDav0JAgD9VgIAAf1WAgAC/VYCAAMgCS8BBkECdEHAlgNqIAkvAQRBAnRBwJYDaiAJLwECQQJ0QcCWA2ogCS8BAEECdEHAlgNq/QkCAP1WAgAB/VYCAAL9VgIAA/3mAf3kASFeIA1BEGoiDSABSA0ACyBeIF395AEgWiBZ/eQB/eQBIVkLIFn9HwMgWf0fAiBZ/R8AIFn9HwGSkpIhYiAPIDxBAnRqIDNqIBsEfSBiBSBiuyFqICgEfyBqIAogEmovAQBBAnRBwJYDaioCACAVLwEAQQJ0QcCWA2oqAgCUu6AhaiA1BSABCyEAICAEQANAIGogCiAAQQF0IglqLwEAQQJ0QcCWA2oqAgAgCSAMai8BAEECdEHAlgNqKgIAlLugIAogCUECaiIJai8BAEECdEHAlgNqKgIAIAkgDGovAQBBAnRBwJYDaioCAJS7oCFqIABBAmoiACADRw0ACwsgarYLOAIAID5CAXwiPiBDUg0ACwwBCyBDQgBXDQAgEiAebCAPIBxsaiEAIBIgF2wgDyAdbGogFSAWbGohCUIAIT4DQCADIBggBCgCgAEgCSA+pyIKQQJ0amogESgCgAEgACAKIBhsamogDBCDAyA+QgJ8Ij4gQ1MNAAsLIC8gRUIBfCJFp0cNAAsMDgsgCEH4HjYCCCAIQY7iADYCBCAIQZEkNgIAQbifAigCAEGI0gAgCBAyDC8LIAhBgDA2AiggCEHW4AA2AiQgCEGRJDYCIEG4nwIoAgBBiNIAIAhBIGoQMgwuCyAIQZUxNgIYIAhB1eAANgIUIAhBkSQ2AhBBuJ8CKAIAQYjSACAIQRBqEDIMLQsgCEG7MzYCOCAIQdTgADYCNCAIQZEkNgIwQbifAigCAEGI0gAgCEEwahAyDCwLIAhB08QANgJIIAhB0+AANgJEIAhBkSQ2AkBBuJ8CKAIAQYjSACAIQUBrEDIMKwsgCEHMKTYCWCAIQczgADYCVCAIQZEkNgJQQbifAigCAEGI0gAgCEHQAGoQMgwqCyAIQeEpNgJoIAhBy+AANgJkIAhBkSQ2AmBBuJ8CKAIAQYjSACAIQeAAahAyDCkLIAhBy8YANgJ4IAhByOAANgJ0IAhBkSQ2AnBBuJ8CKAIAQYjSACAIQfAAahAyDCgLIAhBg8cANgKIASAIQcfgADYChAEgCEGRJDYCgAFBuJ8CKAIAQYjSACAIQYABahAyDCcLIAhB58YANgKYASAIQcbgADYClAEgCEGRJDYCkAFBuJ8CKAIAQYjSACAIQZABahAyDCYLIAhBtzU2AqgBIAhBxOAANgKkASAIQZEkNgKgAUG4nwIoAgBBiNIAIAhBoAFqEDIMJQsgCEHxKDYCuAEgCEHD4AA2ArQBIAhBkSQ2ArABQbifAigCAEGI0gAgCEGwAWoQMgwkCyAIQespNgLIASAIQcLgADYCxAEgCEGRJDYCwAFBuJ8CKAIAQYjSACAIQcABahAyDCMLIAspAxAiQSAEKQMQUg0MIAspAxgiQyAEKQMYUg0LIA4pAxgiPyBDfSJCQgBTDQogCygCMEEERw0JIA4oAjBBBEcNCCARKAIwQQRHDQcgDikDECBBUg0GIBEpAxggQVINBSAEKAIwQQRHDQQgBCgCNCIXQQNMDQMgFyAEKAI4IhhKDQIgGCAEKAI8IiFKDQECQCAFKAIADgMBAAEACyALKQMgIEN+IkUgCykDKH6nIgEgBSgCCCICakEBayACbSICIAUoAgQiCWwiByACIAdqIgIgASABIAJKGyIKTg0AIBEoAjwhJyARKAI4ISUgESgCNCEpIAsoAjwhKiALKAI4ISsgCygCNCEsIA4oAjwhLSAOKAI4IS4gDigCNCEvIABFIENCAFdyITAgP6ciA0FwcSIBIANBD3EiGSADQQNxIg1rIhpqIQIgQiBDID8gQkIBfCI+ID4gP1MbfCA/fSJGQnyDIkd8IUAgA0F8cSEoIEL9EiJZ/QwCAAAAAAAAAAMAAAAAAAAA/c4BIVsgWf0MAAAAAAAAAAABAAAAAAAAAP3OASFcIEGnIhBBA3EhGyADQQNqQXxxIhIgA2siFUF8cSI0IANqIQYgAUEBayIdQQR2QQFqIgBB/v///wFxIRwgAEEBcSEeIBVBBGsiAEECdkEBaiIMQfz///8HcSE1IAxBA3EhI0MAAIA/IEG0kZUiZf0TIV8gCqwhSSAHrCFEIAkgEkEQamxBAnQhNiAAQQxJITcgEEFwcSIHQX9zIBBqQQNJITggAUEASiE5IAFBf3MgA2pBA0khOgNAIEQgRCBFfyI+xCBFfn0iSCBIIEN/IkogQ359IUggBSgCECA2aiEKAkAgAyASTg0AIAMhACAVQQRPBEBBACEJQQAhAEEAIQwgN0UEQANAIAogACADakECdGr9DAAAgP8AAID/AACA/wAAgP/9CwIAIAogAEEEciADakECdGr9DAAAgP8AAID/AACA/wAAgP/9CwIAIAogAEEIciADakECdGr9DAAAgP8AAID/AACA/wAAgP/9CwIAIAogAEEMciADakECdGr9DAAAgP8AAID/AACA/wAAgP/9CwIAIABBEGohACAMQQRqIgwgNUcNAAsLICMEQANAIAogACADakECdGr9DAAAgP8AAID/AACA/wAAgP/9CwIAIABBBGohACAJQQFqIgkgI0cNAAsLIAYhACAVIDRGDQELA0AgCiAAQQJ0akGAgIB8NgIAIABBAWoiACASRw0ACwsgSKchJCA+pyETIEqnIRQgP0IAVQRAIBQgLmwgEyAtbGohMSALKAKAASAUICtsIBMgKmxqICQgLGxqaiEMIA4oAoABISBCACE+A0AgPqciAEECdCEiICAgMSAAIC9samohD0EAIQD9DAAAAAAAAAAAAAAAAAAAAAAiWSFa/QwAAAAAAAAAAAAAAAAAAAAAIV39DAAAAAAAAAAAAAAAAAAAAAAhXiAHQQBKBEADQCBZIA8gAEECdCIWaiIJ/QAAMCAMIBZqIhb9AAAw/eYB/eQBIVkgWiAJ/QAAICAW/QAAIP3mAf3kASFaIF0gCf0AABAgFv0AABD95gH95AEhXSBeIAn9AAAAIBb9AAAA/eYB/eQBIV4gAEEQaiIAIAdIDQALIF4gXf3kASBaIFn95AH95AEhWQsgCiAiaiEWIFn9HwMgWf0fAiBZ/R8AIFn9HwGSkpIhYgJAIAcgEE4NAEEAIQkgByEAIBsEQANAIA8gAEECdCIiaioCACAMICJqKgIAlCBikiFiIABBAWohACAJQQFqIgkgG0cNAAsLIDgNAANAIA8gAEECdCIJQQxqIiJqKgIAIAwgImoqAgCUIA8gCUEIaiIiaioCACAMICJqKgIAlCAPIAlBBGoiImoqAgAgDCAiaioCAJQgCSAPaioCACAJIAxqKgIAlCBikpKSkiFiIABBBGoiACAQRw0ACwsgFiBiOAIAID5CAXwiPiA/Ug0ACwsCQCABQQBMIjENAEEAIQlBACEMIB1BD0cEQANAIAogCUECdCIPaiIAIF8gAP0AAAD95gH9CwAAIAAgXyAA/QAAEP3mAf0LABAgACBfIAD9AAAg/eYB/QsAICAAIF8gAP0AADD95gH9CwAwIAogD0HAAHJqIgAgXyAA/QAAAP3mAf0LAAAgACBfIAD9AAAQ/eYB/QsAECAAIF8gAP0AACD95gH9CwAgIAAgXyAA/QAAMP3mAf0LADAgCUEgaiEJIAxBAmoiDCAcRw0ACwsgHkUNACAKIAlBAnRqIgAgXyAA/QAAAP3mAf0LAAAgACBfIAD9AAAQ/eYB/QsAECAAIF8gAP0AACD95gH9CwAgIAAgXyAA/QAAMP3mAf0LADALAkAgASADTiIWDQBBACEJIAEhACAZQQRPBEADQCAKIAEgCWpBAnRqIgAgXyAA/QACAP3mAf0LAgAgCUEEaiIJIBpHDQALIAIhACANRQ0BCwNAIAogAEECdGoiCSBlIAkqAgCUOAIAIABBAWoiACADRw0ACwsCQCAwDQAgSMQgQnwhSCBCIT4gRkIEWgRAIEj9EiFdQgAhPiBcIVkgWyFaA0AgPiBCfKchACBZIF392QEiXv0bAEEBcQRAIAogAEECdGpBgICAfDYCAAsgXv0bAkEBcQRAIABBAnQgCmpBgICAfDYCBAsgWiBd/dkBIl79GwBBAXEEQCAAQQJ0IApqQYCAgHw2AggLIF79GwJBAXEEQCAAQQJ0IApqQYCAgHw2AgwLIFn9DAQAAAAAAAAABAAAAAAAAAD9zgEhWSBa/QwEAAAAAAAAAAQAAAAAAAAA/c4BIVogPkIEfCI+IEdSDQALIEAhPiBGIEdRDQELA0AgPiBIVQRAIAogPqdBAnRqQYCAgHw2AgALID5CAXwiPiA/Uw0ACwsCQCADQQBMBEBDAACA/yFiDAELQwAAgP8hYkEAIQxBACEAQQAhCSADQQRPBEADQCBiIAogAEECdCIPaioCACJjIGIgY14bImIgCiAPQQRyaioCACJjIGIgY14bImIgCiAPQQhyaioCACJjIGIgY14bImIgCiAPQQxyaioCACJjIGIgY14bIWIgAEEEaiEAIAlBBGoiCSAoRw0ACwsgDUUNAANAIGIgCiAAQQJ0aioCACJjIGIgY14bIWIgAEEBaiEAIAxBAWoiDCANRw0ACwtBACEJRAAAAAAAAAAAIWpEAAAAAAAAAAAha0QAAAAAAAAAACFsRAAAAAAAAAAAIW0gEkEASgRAA0BDAAAAACFjAkAgCiAJQQJ0aiIAKgIAImRDAACA/1sEQEMAAAAAIWQMAQsgakGA/AEgZCBikyJki0MAAIB3lEMAAIAIlEGAgICIByBkvCIMQQF0Ig9BgICAeHEiICAgQYCAgIgHTRtBAXZBgICAPGq+krwiIEENdkGA+AFxICBB/x9xaiAPQYCAgHhLGyAMQRB2QYCAAnFyQQF0QcCWI2ovAQBBAnRBwJYDaioCACJku6AhagsgACBkOAIAIAAqAgQiZEMAAID/XARAIGtBgPwBIGQgYpMiY4tDAACAd5RDAACACJRBgICAiAcgY7wiDEEBdCIPQYCAgHhxIiAgIEGAgICIB00bQQF2QYCAgDxqvpK8IiBBDXZBgPgBcSAgQf8fcWogD0GAgIB4SxsgDEEQdkGAgAJxckEBdEHAliNqLwEAQQJ0QcCWA2oqAgAiY7ugIWsLIAAgYzgCBEMAAAAAIWMCQCAAKgIIImRDAACA/1sEQEMAAAAAIWQMAQsgbEGA/AEgZCBikyJki0MAAIB3lEMAAIAIlEGAgICIByBkvCIMQQF0Ig9BgICAeHEiICAgQYCAgIgHTRtBAXZBgICAPGq+krwiIEENdkGA+AFxICBB/x9xaiAPQYCAgHhLGyAMQRB2QYCAAnFyQQF0QcCWI2ovAQBBAnRBwJYDaioCACJku6AhbAsgACBkOAIIIAAqAgwiZEMAAID/XARAIG1BgPwBIGQgYpMiY4tDAACAd5RDAACACJRBgICAiAcgY7wiDEEBdCIPQYCAgHhxIiAgIEGAgICIB00bQQF2QYCAgDxqvpK8IiBBDXZBgPgBcSAgQf8fcWogD0GAgIB4SxsgDEEQdkGAgAJxckEBdEHAliNqLwEAQQJ0QcCWA2oqAgAiY7ugIW0LIAAgYzgCDCAJQQRqIgkgEkgNAAsLRAAAAAAAAPA/IGpEAAAAAAAAAACgIGugIGygIG2go7YhYgJAIDlFDQAgYv0TIVlBACEJQQAhDCAdQQ9HBEADQCAKIAlBAnQiD2oiACBZIAD9AAAA/eYB/QsAACAAIFkgAP0AABD95gH9CwAQIAAgWSAA/QAAIP3mAf0LACAgACBZIAD9AAAw/eYB/QsAMCAKIA9BwAByaiIAIFkgAP0AAAD95gH9CwAAIAAgWSAA/QAAEP3mAf0LABAgACBZIAD9AAAg/eYB/QsAICAAIFkgAP0AADD95gH9CwAwIAlBIGohCSAMQQJqIgwgHEcNAAsLIB5FDQAgCiAJQQJ0aiIAIFkgAP0AAAD95gH9CwAAIAAgWSAA/QAAEP3mAf0LABAgACBZIAD9AAAg/eYB/QsAICAAIFkgAP0AADD95gH9CwAwCwJAIBYNACABIQAgGUEETwRAIGL9EyFZQQAhAANAIAogACABakECdGoiCSAJ/QACACBZ/eYB/QsCACAAQQRqIgAgGkcNAAsgAiEAIA1FDQELA0AgCiAAQQJ0aiIJIAkqAgAgYpQ4AgAgAEEBaiIAIANHDQALCyBBQgBVBEAgFCAlbCATICdsaiEgIBQgGGwgEyAhbGogFyAkbGohEyARKAKAASEUIAQoAoABISRCACE+A0AgFCAgICkgPqciImxqaiEMQQAhCf0MAAAAAAAAAAAAAAAAAAAAACJZIVr9DAAAAAAAAAAAAAAAAAAAAAAhXf0MAAAAAAAAAAAAAAAAAAAAACFeIDFFBEADQCBZIAwgCUECdCIPaiIA/QAAMCAKIA9qIg/9AAAw/eYB/eQBIVkgWiAA/QAAICAP/QAAIP3mAf3kASFaIF0gAP0AABAgD/0AABD95gH95AEhXSBeIAD9AAAAIA/9AAAA/eYB/eQBIV4gCUEQaiIJIAFIDQALIF4gXf3kASBaIFn95AH95AEhWQsgEyAiQQJ0aiAkaiEPIFn9HwMgWf0fAiBZ/R8AIFn9HwGSkpIhYgJAIBYNAEEAIQkgASEAIA0EQANAIAwgAEECdCIiaioCACAKICJqKgIAlCBikiFiIABBAWohACAJQQFqIgkgDUcNAAsLIDoNAANAIAwgAEECdCIJQQxqIiJqKgIAIAogImoqAgCUIAwgCUEIaiIiaioCACAKICJqKgIAlCAMIAlBBGoiImoqAgAgCiAiaioCAJQgCSAMaioCACAJIApqKgIAlCBikpKSkiFiIABBBGoiACADRw0ACwsgDyBiOAIAID5CAXwiPiBBUg0ACwsgREIBfCJEIElSDQALCyAIQZADaiQADAwLIAhBgDA2AugBIAhBhd8ANgLkASAIQZEkNgLgAUG4nwIoAgBBiNIAIAhB4AFqEDIMIAsgCEGVMTYC2AEgCEGE3wA2AtQBIAhBkSQ2AtABQbifAigCAEGI0gAgCEHQAWoQMgwfCyAIQbszNgL4ASAIQYPfADYC9AEgCEGRJDYC8AFBuJ8CKAIAQYjSACAIQfABahAyDB4LIAhB08QANgKIAiAIQYLfADYChAIgCEGRJDYCgAJBuJ8CKAIAQYjSACAIQYACahAyDB0LIAhBzCk2ApgCIAhB+94ANgKUAiAIQZEkNgKQAkG4nwIoAgBBiNIAIAhBkAJqEDIMHAsgCEHhKTYCqAIgCEH63gA2AqQCIAhBkSQ2AqACQbifAigCAEGI0gAgCEGgAmoQMgwbCyAIQZHEADYCuAIgCEH33gA2ArQCIAhBkSQ2ArACQbifAigCAEGI0gAgCEGwAmoQMgwaCyAIQb3EADYCyAIgCEH23gA2AsQCIAhBkSQ2AsACQbifAigCAEGI0gAgCEHAAmoQMgwZCyAIQafEADYC2AIgCEH13gA2AtQCIAhBkSQ2AtACQbifAigCAEGI0gAgCEHQAmoQMgwYCyAIQbc1NgLoAiAIQfPeADYC5AIgCEGRJDYC4AJBuJ8CKAIAQYjSACAIQeACahAyDBcLIAhB8Sg2AvgCIAhB8t4ANgL0AiAIQZEkNgLwAkG4nwIoAgBBiNIAIAhB8AJqEDIMFgsgCEHrKTYCiAMgCEHx3gA2AoQDIAhBkSQ2AoADQbifAigCAEGI0gAgCEGAA2oQMgwVCwwFCyABKAJMIQwgASgCUCERIAEoAlQhCyABKAJYIRIgASgCXCENIwBB0AJrIgYkAAJAAkAgESgCACICQQFHBEAgAg0BIAZB+B42AsgCIAZB2OMANgLEAiAGQZEkNgLAAkG4nwIoAgBBiNIAIAZBwAJqEDIMFgsgDCkDECI/IAEpAxBRBEAgDCkDGCJDIAEpAxhRBEAgDCkDICI+IAEpAyBRBEAgDCgCMEECRgRAIBEoAjBBAkYEQCALKAIwQQRGBEAgEigCMEECRgRAIA0oAjBBBEYEQCA/IBEpAxBRBEAgESkDGCJAIAspAxBRBEAgCykDGEIBUQRAIEAgEikDEFEEQCA/IBIpAxhRBEAgPyANKQMQUQRAIA0pAxhCAVEEQCABKAIwQQRGBEAgASgCNCIWQQNKBEAgASgCOCIXIBZOBEAgASgCPCIjIBdOBEACQAJAIAAoAgAOAwEAAQALID4gQ34iRCAMKQMofqciAiAAKAIIIgNqQQFrIANtIgMgACgCBCIEbCIOIAMgDmoiAyACIAIgA0obIhBODQAgEigCPCEkIBIoAjghISASKAI0IScgESgCPCElIBEoAjghKSARKAI0ISogDCgCPCErIAwoAjghLCAMKAI0IS0gACgCECAEIECnIghBAXRBEGpsQQJ0aiIJIAhBAnQiAGoiDyAIQXBxIgJBAXQiLmohLyBAQnyDIUIgP6ciCkEDcSEYIApBfHEhBSAIQQFxITAgCEF4cSEEIAhBA3EhGSAIQXxxIQcgCkEBcSEoIAhBAWshGiACQQFyITQgCkFwcSIDQQFyITUgDSgCgAEiDSAKQQJ0IhNqITYgASgCgAEiGyATaiE3IApBBGsiOEECdkEBaiIBQfz///8HcSE5IAFBA3EhHSAIQQRrIjpBAnZBAWoiAUH8////B3EhMSABQQNxIRwgEKwhRSAOrCFBQQAgCmsgA0F/c0chICAJIAsoAoABIg4gAGpJIA4gD0lxIAhBBElyISIDQCBBIEEgRH8iPsQgRH59IkYgRiBDfyJGIEN+fachHiA+pyETIEanIRQgQEIAVyI7RQRAIBQgKWwgEyAlbGohMiAMKAKAASAUICxsIBMgK2xqIB4gLWxqaiIVIANBAXQiH2ohMyARKAKAASE8QgAhPgNAID6nIgBBAnQhPSA8IDIgACAqbGpqIRBBACEL/QwAAAAAAAAAAAAAAAAAAAAAIlkhWv0MAAAAAAAAAAAAAAAAAAAAACFb/QwAAAAAAAAAAAAAAAAAAAAAIVwgA0EASgRAA0AgWSAQIAtBAXQiAWoiAC8BHkECdEHAlgNqIAAvARxBAnRBwJYDaiAALwEaQQJ0QcCWA2ogAC8BGEECdEHAlgNq/QkCAP1WAgAB/VYCAAL9VgIAAyABIBVqIgEvAR5BAnRBwJYDaiABLwEcQQJ0QcCWA2ogAS8BGkECdEHAlgNqIAEvARhBAnRBwJYDav0JAgD9VgIAAf1WAgAC/VYCAAP95gH95AEhWSBaIAAvARZBAnRBwJYDaiAALwEUQQJ0QcCWA2ogAC8BEkECdEHAlgNqIAAvARBBAnRBwJYDav0JAgD9VgIAAf1WAgAC/VYCAAMgAS8BFkECdEHAlgNqIAEvARRBAnRBwJYDaiABLwESQQJ0QcCWA2ogAS8BEEECdEHAlgNq/QkCAP1WAgAB/VYCAAL9VgIAA/3mAf3kASFaIFsgAC8BDkECdEHAlgNqIAAvAQxBAnRBwJYDaiAALwEKQQJ0QcCWA2ogAC8BCEECdEHAlgNq/QkCAP1WAgAB/VYCAAL9VgIAAyABLwEOQQJ0QcCWA2ogAS8BDEECdEHAlgNqIAEvAQpBAnRBwJYDaiABLwEIQQJ0QcCWA2r9CQIA/VYCAAH9VgIAAv1WAgAD/eYB/eQBIVsgXCAALwEGQQJ0QcCWA2ogAC8BBEECdEHAlgNqIAAvAQJBAnRBwJYDaiAALwEAQQJ0QcCWA2r9CQIA/VYCAAH9VgIAAv1WAgADIAEvAQZBAnRBwJYDaiABLwEEQQJ0QcCWA2ogAS8BAkECdEHAlgNqIAEvAQBBAnRBwJYDav0JAgD9VgIAAf1WAgAC/VYCAAP95gH95AEhXCALQRBqIgsgA0gNAAsgXCBb/eQBIFogWf3kAf3kASFZCyBZ/R8DIFn9HwIgWf0fACBZ/R8BkpKSIWIgCSA9aiADIApIBH0gYrshaiAoBH8gaiAQIB9qLwEAQQJ0QcCWA2oqAgAgMy8BAEECdEHAlgNqKgIAlLugIWogNQUgAwshACAgBEADQCBqIBAgAEEBdCIBai8BAEECdEHAlgNqKgIAIAEgFWovAQBBAnRBwJYDaioCAJS7oCAQIAFBAmoiAWovAQBBAnRBwJYDaioCACABIBVqLwEAQQJ0QcCWA2oqAgCUu6AhaiAAQQJqIgAgCkcNAAsLIGq2BSBiCzgCACA+QgF8Ij4gQFINAAsLAkAgCEEATCIyDQBBACELQQAhACAiRQRAQQAhFUEAIRAgOkEMTwRAA0AgCSAAQQJ0IgFqIh8gH/0AAgAgASAOav0AAgD95AH9CwIAIAkgAUEQciIfaiIzIDP9AAIAIA4gH2r9AAIA/eQB/QsCACAJIAFBIHIiH2oiMyAz/QACACAOIB9q/QACAP3kAf0LAgAgCSABQTByIgFqIh8gH/0AAgAgASAOav0AAgD95AH9CwIAIABBEGohACAQQQRqIhAgMUcNAAsLIBwEQANAIAkgAEECdCIBaiIQIBD9AAIAIAEgDmr9AAIA/eQB/QsCACAAQQRqIQAgFUEBaiIVIBxHDQALCyAHIgAgCEYNAQsgGiAAayEBIBkEQANAIAkgAEECdCIQaiIVIBUqAgAgDiAQaioCAJI4AgAgAEEBaiEAIAtBAWoiCyAZRw0ACwsgAUEDSQ0AA0AgCSAAQQJ0IgFqIgsgCyoCACABIA5qKgIAkjgCACAJIAFBBGoiC2oiECAQKgIAIAsgDmoqAgCSOAIAIAkgAUEIaiILaiIQIBAqAgAgCyAOaioCAJI4AgAgCSABQQxqIgFqIgsgCyoCACABIA5qKgIAkjgCACAAQQRqIgAgCEcNAAsLAkAgOw0AQgAhPiBAQgRaBEADQCAPID6nIgBBAXRq/QwAfgAAAH4AAAB+AAAAfgAAIAkgAEECdGr9AAIAIln94AH9DAAAgHcAAIB3AACAdwAAgHf95gH9DAAAgAgAAIAIAACACAAAgAj95gEgWUEB/asBIlr9DAAAAP8AAAD/AAAA/wAAAP/9Tv0MAAAAcQAAAHEAAABxAAAAcf25AUEB/a0B/QwAAIAHAACABwAAgAcAAIAH/a4B/eQBIltBDf2tAf0MAHwAAAB8AAAAfAAAAHwAAP1OIFv9DP8PAAD/DwAA/w8AAP8PAAD9Tv2uASBa/QwAAAD/AAAA/wAAAP8AAAD//Tz9UiBZQRD9rQH9DACAAAAAgAAAAIAAAACAAAD9Tv1QIFn9DQABBAUICQwNAAEAAQABAAH9WwEAACA+QgR8Ij4gQlINAAsgQiI+IEBRDQELA0AgDyA+pyIAQQF0akGA/AEgCSAAQQJ0aioCACJii0MAAIB3lEMAAIAIlEGAgICIByBivCIAQQF0IgFBgICAeHEiCyALQYCAgIgHTRtBAXZBgICAPGq+krwiC0ENdkGA+AFxIAtB/x9xaiABQYCAgHhLGyAAQRB2QYCAAnFyOwEAID5CAXwiPiBAUg0ACwsCQCAyDQBBACEAIAhBCE8EQANAIA8gAEEBdGoiASAB/QABACJa/QwAAAAAAAAAAAAAAAAAAAAA/Q0ICRITCgsWFwwNGhsODx4fIln9GwNBAXRBwJYTaiBZ/RsCQQF0QcCWE2ogWf0bAUEBdEHAlhNqIFn9GwBBAXRBwJYTav0MAAAAAAAAAAAAAAAAAAAAACBa/Q0QEQIDEhMGBxQVCgsWFw4PIln9GwNBAXRBwJYTaiBZ/RsCQQF0QcCWE2ogWf0bAUEBdEHAlhNqIFn9GwBBAXRBwJYTav0IAQD9VQEAAf1VAQAC/VUBAAP9VQEABP1VAQAF/VUBAAb9VQEAB/0LAQAgAEEIaiIAIARHDQALIAQiACAIRg0BCwNAIA8gAEEBdGoiASABLwEAQQF0QcCWE2ovAQA7AQAgAEEBaiIAIAhHDQALCyAWIB5sIh4gFCAXbCI7IBMgI2wiMmpqIRUgP0IAVQRAIBQgIWwgEyAkbGohEyASKAKAASEUQgAhPgNAIBQgEyAnID6nIh9samohEEEAIQv9DAAAAAAAAAAAAAAAAAAAAAAiWSFa/QwAAAAAAAAAAAAAAAAAAAAAIVv9DAAAAAAAAAAAAAAAAAAAAAAhXCACQQBKBEADQCBZIBAgC0EBdCIBaiIALwEeQQJ0QcCWA2ogAC8BHEECdEHAlgNqIAAvARpBAnRBwJYDaiAALwEYQQJ0QcCWA2r9CQIA/VYCAAH9VgIAAv1WAgADIAEgD2oiAS8BHkECdEHAlgNqIAEvARxBAnRBwJYDaiABLwEaQQJ0QcCWA2ogAS8BGEECdEHAlgNq/QkCAP1WAgAB/VYCAAL9VgIAA/3mAf3kASFZIFogAC8BFkECdEHAlgNqIAAvARRBAnRBwJYDaiAALwESQQJ0QcCWA2ogAC8BEEECdEHAlgNq/QkCAP1WAgAB/VYCAAL9VgIAAyABLwEWQQJ0QcCWA2ogAS8BFEECdEHAlgNqIAEvARJBAnRBwJYDaiABLwEQQQJ0QcCWA2r9CQIA/VYCAAH9VgIAAv1WAgAD/eYB/eQBIVogWyAALwEOQQJ0QcCWA2ogAC8BDEECdEHAlgNqIAAvAQpBAnRBwJYDaiAALwEIQQJ0QcCWA2r9CQIA/VYCAAH9VgIAAv1WAgADIAEvAQ5BAnRBwJYDaiABLwEMQQJ0QcCWA2ogAS8BCkECdEHAlgNqIAEvAQhBAnRBwJYDav0JAgD9VgIAAf1WAgAC/VYCAAP95gH95AEhWyBcIAAvAQZBAnRBwJYDaiAALwEEQQJ0QcCWA2ogAC8BAkECdEHAlgNqIAAvAQBBAnRBwJYDav0JAgD9VgIAAf1WAgAC/VYCAAMgAS8BBkECdEHAlgNqIAEvAQRBAnRBwJYDaiABLwECQQJ0QcCWA2ogAS8BAEECdEHAlgNq/QkCAP1WAgAB/VYCAAL9VgIAA/3mAf3kASFcIAtBEGoiCyACSA0ACyBcIFv95AEgWiBZ/eQB/eQBIVkLIFn9HwMgWf0fAiBZ/R8AIFn9HwGSkpIhYiAfQQJ0IBVqIBtqIAIgCEgEfSBiuyFqIDAEfyBqIBAgLmovAQBBAnRBwJYDaioCACAvLwEAQQJ0QcCWA2oqAgCUu6AhaiA0BSACCyEAIAIgGkcEQANAIGogECAAQQF0IgFqLwEAQQJ0QcCWA2oqAgAgASAPai8BAEECdEHAlgNqKgIAlLugIBAgAUECaiIBai8BAEECdEHAlgNqKgIAIAEgD2ovAQBBAnRBwJYDaioCAJS7oCFqIABBAmoiACAIRw0ACwsgarYFIGILOAIAID5CAXwiPiA/Ug0ACwsCQCAKQQBMDQAgFSAbaiEBQQAhC0EAIQACQCAKQQhJDQAgASA2SSANIDcgHiAyaiA7ampJcQ0AQQAhEEEAIRQgOEEMTwRAA0AgASAAQQJ0IhNqIhUgFf0AAgAgDSATav0AAgD95AH9CwIAIAEgE0EQciIVaiIeIB79AAIAIA0gFWr9AAIA/eQB/QsCACABIBNBIHIiFWoiHiAe/QACACANIBVq/QACAP3kAf0LAgAgASATQTByIhNqIhUgFf0AAgAgDSATav0AAgD95AH9CwIAIABBEGohACAUQQRqIhQgOUcNAAsLIB0EQANAIAEgAEECdCITaiIUIBT9AAIAIA0gE2r9AAIA/eQB/QsCACAAQQRqIQAgEEEBaiIQIB1HDQALCyAFIgAgCkYNAQsgAEF/cyAKaiEQIBgEQANAIAEgAEECdCITaiIUIBQqAgAgDSATaioCAJI4AgAgAEEBaiEAIAtBAWoiCyAYRw0ACwsgEEEDSQ0AA0AgASAAQQJ0IgtqIhAgECoCACALIA1qKgIAkjgCACABIAtBBGoiEGoiEyATKgIAIA0gEGoqAgCSOAIAIAEgC0EIaiIQaiITIBMqAgAgDSAQaioCAJI4AgAgASALQQxqIgtqIhAgECoCACALIA1qKgIAkjgCACAAQQRqIgAgCkcNAAsLIEFCAXwiQSBFUg0ACwsgBkHQAmokAAwUCyAGQYAwNgIoIAZB++IANgIkIAZBkSQ2AiBBuJ8CKAIAQYjSACAGQSBqEDIMJwsgBkGVMTYCGCAGQfriADYCFCAGQZEkNgIQQbifAigCAEGI0gAgBkEQahAyDCYLIAZBuzM2AjggBkH54gA2AjQgBkGRJDYCMEG4nwIoAgBBiNIAIAZBMGoQMgwlCyAGQdPEADYCSCAGQfjiADYCRCAGQZEkNgJAQbifAigCAEGI0gAgBkFAaxAyDCQLIAZB6DQ2AlggBkH14gA2AlQgBkGRJDYCUEG4nwIoAgBBiNIAIAZB0ABqEDIMIwsgBkH0KTYCaCAGQfTiADYCZCAGQZEkNgJgQbifAigCAEGI0gAgBkHgAGoQMgwiCyAGQdYpNgJ4IAZB8+IANgJ0IAZBkSQ2AnBBuJ8CKAIAQYjSACAGQfAAahAyDCELIAZBiyk2AogBIAZB8uIANgKEASAGQZEkNgKAAUG4nwIoAgBBiNIAIAZBgAFqEDIMIAsgBkHzNDYCmAEgBkHw4gA2ApQBIAZBkSQ2ApABQbifAigCAEGI0gAgBkGQAWoQMgwfCyAGQYApNgKoASAGQe/iADYCpAEgBkGRJDYCoAFBuJ8CKAIAQYjSACAGQaABahAyDB4LIAZB/yk2ArgBIAZB7eIANgK0ASAGQZEkNgKwAUG4nwIoAgBBiNIAIAZBsAFqEDIMHQsgBkHoxAA2AsgBIAZB6+IANgLEASAGQZEkNgLAAUG4nwIoAgBBiNIAIAZBwAFqEDIMHAsgBkHWxwA2AtgBIAZB6uIANgLUASAGQZEkNgLQAUG4nwIoAgBBiNIAIAZB0AFqEDIMGwsgBkGVxQA2AugBIAZB6eIANgLkASAGQZEkNgLgAUG4nwIoAgBBiNIAIAZB4AFqEDIMGgsgBkGPyAA2AvgBIAZB6OIANgL0ASAGQZEkNgLwAUG4nwIoAgBBiNIAIAZB8AFqEDIMGQsgBkG6xwA2AogCIAZB5+IANgKEAiAGQZEkNgKAAkG4nwIoAgBBiNIAIAZBgAJqEDIMGAsgBkGgMTYCmAIgBkHl4gA2ApQCIAZBkSQ2ApACQbifAigCAEGI0gAgBkGQAmoQMgwXCyAGQcYzNgKoAiAGQeTiADYCpAIgBkGRJDYCoAJBuJ8CKAIAQYjSACAGQaACahAyDBYLIAZBqzU2ArgCIAZB4+IANgK0AiAGQZEkNgKwAkG4nwIoAgBBiNIAIAZBsAJqEDIMFQsgBkH4HjYCCCAGQdzjADYCBCAGQZEkNgIAQbifAigCAEGI0gAgBhAyDBQLDAQLIAEoAkwhAiABKAJUKAKAASgCACEEIwBBIGsiAyQAAkACQCACKAIARQRAIAIpAxAiPiABKQMQUg0BIAIpAxgiQiABKQMYUg0BIAIpAyAiQCABKQMgUg0BIAIpAygiPyABKQMoUg0BAkACQCAAKAIADgMBAAEACyBAIEJ+ID9+pyIFQQBMDQAgPqchB0EAIQAgBUEBRwRAIAVBfnEhCANAIAcgASgCgAEgASgCNCAAbGogAigCgAEgAigCNCAAbGogBBEFACAHIAEoAoABIABBAXIiCSABKAI0bGogAigCgAEgAigCNCAJbGogBBEFACAAQQJqIQAgBkECaiIGIAhHDQALCyAFQQFxRQ0AIAcgASgCgAEgASgCNCAAbGogAigCgAEgAigCNCAAbGogBBEFAAsgA0EgaiQADAILIANB+B42AhggA0GI5AA2AhQMEQsgA0GawwA2AgggA0Ho4wA2AgQMDAsMAwsgASgCTCECIAEoAlAhBCABKAJUKAKAASgCACEFIwBBEGsiAyQAAkAgAigCAEUEQAJAAkAgACgCAA4DAQABAAsgAikDKCACKQMgIAIpAxh+fqciB0EATA0AIAIoAhAhBkEAIQADQCAGIAEoAoABIAEoAjQgAGxqIAIoAoABIAIoAjQgAGxqIAQoAoABIAQoAjQgAGxqIAURBwAgAEEBaiIAIAdHDQALCyADQRBqJAAMAQsgA0H4HjYCCCADQbnkADYCBAwLCwwCCyAmQfgeNgIYICZBmeYANgIUICZBkSQ2AhBBuJ8CKAIAQYjSACAmQRBqEDIMEAsgACABKAJMIAEQowILICZBMGokAA8LICZBlhA2AgggJkHB5AA2AgQgJkGRJDYCAEG4nwIoAgBBiNIAICYQMgwNCyAmQfYzNgIoICZB/+UANgIkICZBkSQ2AiBBuJ8CKAIAQYjSACAmQSBqEDIMDAsgAkGRJDYCIEG4nwIoAgBBiNIAIAJBIGoQMgwLCyACQZEkNgIQQbifAigCAEGI0gAgAkEQahAyDAoLIAJBkSQ2AgBBuJ8CKAIAQYjSACACEDIMCQsgAkGRJDYCMEG4nwIoAgBBiNIAIAJBMGoQMgwICyAFQZEkNgIAQbifAigCAEGI0gAgBRAyDAcLIANBkSQ2AgBBuJ8CKAIAQYjSACADEDIMBgsgBEGRJDYCAEG4nwIoAgBBiNIAIAQQMgwFCyADQZEkNgIwQbifAigCAEGI0gAgA0EwahAyDAQLIANBkSQ2AiBBuJ8CKAIAQYjSACADQSBqEDIMAwsgA0GRJDYCEEG4nwIoAgBBiNIAIANBEGoQMgwCCyAEQZEkNgIQQbifAigCAEGI0gAgBEEQahAyDAELIARBkSQ2AiBBuJ8CKAIAQYjSACAEQSBqEDILEAAAC9QCAQZ/IwBBEGsiByQAIANBoMArIAMbIgUoAgAhAwJAAkACQCABRQRAIAMNAQwDC0F+IQQgAkUNAiAAIAdBDGogABshBgJAIAMEQCACIQAMAQsgAS0AACIAwCIDQQBOBEAgBiAANgIAIANBAEchBAwECyMDKAJgKAIARQRAIAYgA0H/vwNxNgIAQQEhBAwECyAAQcIBayIAQTJLDQEgAEECdEHwqgJqKAIAIQMgAkEBayIARQ0CIAFBAWohAQsgAS0AACIIQQN2IglBEGsgA0EadSAJanJBB0sNAANAIABBAWshACAIQYABayADQQZ0ciIDQQBOBEAgBUEANgIAIAYgAzYCACACIABrIQQMBAsgAEUNAiABQQFqIgEtAAAiCEHAAXFBgAFGDQALCyAFQQA2AgAjA0EcakEZNgIAQX8hBAwBCyAFIAM2AgALIAdBEGokACAECwkAIAFBARDiAwtxAQF/IABBmKQCNgIAIAAQ5gMaAkAgAC0AYEUNACAAKAIgIgFFDQAgARAxCwJAIAAtAGFFDQAgACgCOCIBRQ0AIAEQMQsgAEGoowI2AgAgACgCBCIBQQRqQX/+HgIARQRAIAEgASgCACgCCBEAAAsgAAsPACAAIAAoAhAgAXIQqQILuAEBBH8jAEEgayIHJAAgASgCSCEIIAf9DAEAAAAAAAAAAQAAAAAAAAD9CwQQIAcgAjcDACAHIAM3AwggACABKAIAQQIgByABKAKAASAFahA8IgZBIDYCQCAGIAOnIARsIgk2AjwgBiAJNgI4IAYgBDYCNEEAIQQgCARAIAAgBigCACAGKAIIIAZBEGpBABA8IQQgBiAFNgKkAQsgBkEANgJQIAYgATYCTCAGIAQ2AkggB0EgaiQAIAYLfQEEfyMAQRBrIgUkACAFIAI3AwggASgCSCEHIAAgASgCAEEBIAVBCGogASgCgAEgA2oQPCIEQSA2AkAgBwRAIAAgBCgCACAEKAIIIARBEGpBABA8IQYgBCADNgKkAQsgBEEANgJQIAQgATYCTCAEIAY2AkggBUEQaiQAIAQL0QsBBn8gACABaiEFAkACQCAAKAIEIgJBAXENACACQQNxRQ0BIAAoAgAiAiABaiEBAkACQAJAIAAgAmsiAEGsvCsoAgBHBEAgAkH/AU0EQCAAKAIIIgMgAkEDdiIEQQN0QcC8K2pGGiAAKAIMIgIgA0cNAkGYvCtBmLwrKAIAQX4gBHdxNgIADAULIAAoAhghBiAAIAAoAgwiAkcEQCAAKAIIIgNBqLwrKAIASRogAyACNgIMIAIgAzYCCAwECyAAQRRqIgQoAgAiA0UEQCAAKAIQIgNFDQMgAEEQaiEECwNAIAQhByADIgJBFGoiBCgCACIDDQAgAkEQaiEEIAIoAhAiAw0ACyAHQQA2AgAMAwsgBSgCBCICQQNxQQNHDQNBoLwrIAE2AgAgBSACQX5xNgIEIAAgAUEBcjYCBCAFIAE2AgAPCyADIAI2AgwgAiADNgIIDAILQQAhAgsgBkUNAAJAIAAoAhwiA0ECdEHIvitqIgQoAgAgAEYEQCAEIAI2AgAgAg0BQZy8K0GcvCsoAgBBfiADd3E2AgAMAgsgBkEQQRQgBigCECAARhtqIAI2AgAgAkUNAQsgAiAGNgIYIAAoAhAiAwRAIAIgAzYCECADIAI2AhgLIAAoAhQiA0UNACACIAM2AhQgAyACNgIYCwJAAkACQAJAIAUoAgQiAkECcUUEQEGwvCsoAgAgBUYEQEGwvCsgADYCAEGkvCtBpLwrKAIAIAFqIgE2AgAgACABQQFyNgIEIABBrLwrKAIARw0GQaC8K0EANgIAQay8K0EANgIADwtBrLwrKAIAIAVGBEBBrLwrIAA2AgBBoLwrQaC8KygCACABaiIBNgIAIAAgAUEBcjYCBCAAIAFqIAE2AgAPCyACQXhxIAFqIQEgAkH/AU0EQCAFKAIIIgMgAkEDdiIEQQN0QcC8K2pGGiADIAUoAgwiAkYEQEGYvCtBmLwrKAIAQX4gBHdxNgIADAULIAMgAjYCDCACIAM2AggMBAsgBSgCGCEGIAUgBSgCDCICRwRAIAUoAggiA0GovCsoAgBJGiADIAI2AgwgAiADNgIIDAMLIAVBFGoiBCgCACIDRQRAIAUoAhAiA0UNAiAFQRBqIQQLA0AgBCEHIAMiAkEUaiIEKAIAIgMNACACQRBqIQQgAigCECIDDQALIAdBADYCAAwCCyAFIAJBfnE2AgQgACABQQFyNgIEIAAgAWogATYCAAwDC0EAIQILIAZFDQACQCAFKAIcIgNBAnRByL4raiIEKAIAIAVGBEAgBCACNgIAIAINAUGcvCtBnLwrKAIAQX4gA3dxNgIADAILIAZBEEEUIAYoAhAgBUYbaiACNgIAIAJFDQELIAIgBjYCGCAFKAIQIgMEQCACIAM2AhAgAyACNgIYCyAFKAIUIgNFDQAgAiADNgIUIAMgAjYCGAsgACABQQFyNgIEIAAgAWogATYCACAAQay8KygCAEcNAEGgvCsgATYCAA8LIAFB/wFNBEAgAUF4cUHAvCtqIQICf0GYvCsoAgAiA0EBIAFBA3Z0IgFxRQRAQZi8KyABIANyNgIAIAIMAQsgAigCCAshASACIAA2AgggASAANgIMIAAgAjYCDCAAIAE2AggPC0EfIQMgAUH///8HTQRAIAFBJiABQQh2ZyICa3ZBAXEgAkEBdGtBPmohAwsgACADNgIcIABCADcCECADQQJ0Qci+K2ohAgJAAkBBnLwrKAIAIgRBASADdCIHcUUEQEGcvCsgBCAHcjYCACACIAA2AgAgACACNgIYDAELIAFBGSADQQF2a0EAIANBH0cbdCEDIAIoAgAhAgNAIAIiBCgCBEF4cSABRg0CIANBHXYhAiADQQF0IQMgBCACQQRxaiIHKAIQIgINAAsgByAANgIQIAAgBDYCGAsgACAANgIMIAAgADYCCA8LIAQoAggiASAANgIMIAQgADYCCCAAQQA2AhggACAENgIMIAAgATYCCAsLpAEBAn8jAEGgAWsiBCQAQX8hBSAEIAFBAWtBACABGzYClAEgBCAAIARBngFqIAEbIgA2ApABIARBAEGQAfwLACAEQX82AkwgBEH8ADYCJCAEQX82AlAgBCAEQZ8BajYCLCAEIARBkAFqNgJUAkAgAUEASARAIwNBHGpBPTYCAAwBCyAAQQA6AAAgBCACIANB+gBB+wAQtgIhBQsgBEGgAWokACAFCxUAIABBAP5BAgBBAkYEQCAAEIwBCwsyACAAQQBBAf5IAgAEQCAAQQFBAv5IAgAaA0AgAEEAQQIQyAEgAEEAQQL+SAIADQALCwvjAQICfwN8IwBBEGsiAiQAAkACfwJAAkAjBCIDDQAjAyIELQAoQQFHDQAgBC0AKUEBRw0BC0EBQeQAIAMbtyEFEAZEAAAAAAAA8H+gIQcjAyEDA0AgAygCJARAQQshAAwEC0HJACAHEAahIgZEAAAAAAAAAABlDQIaIAAgASAFIAYgBSAGYxsQyQEiBEG3f0YNAAtBACAEawwBC0EAIAAgAUQAAAAAAADwfxDJAWsLIgBBACAAQW9xQQtGGyAAIABByQBHGyIAQRtHDQBBG0EAQdSzKygCABshAAsgAkEQaiQAIAALDQBBoLMrEIcEQaSzKwtaAQN/IAEoAkghBCAAIAEoAgAgASgCCCABQRBqQQAQPCICQRQ2AkAgBARAIAAgAigCACACKAIIIAJBEGpBABA8IQMLIAJBADYCUCACIAE2AkwgAiADNgJIIAILfQECfyMAQRBrIgEkACABQQo6AA8CQAJAIAAoAhAiAgR/IAIFIAAQwAINAiAAKAIQCyAAKAIUIgJGDQAgACgCUEEKRg0AIAAgAkEBajYCFCACQQo6AAAMAQsgACABQQ9qQQEgACgCJBEDAEEBRw0AIAEtAA8aCyABQRBqJAALAwABCx4AAkAjBARAQeSxK/4SAABBAXENARCjBgsPCxApAAvtAQMCfAF/AX4CfQJAIAC8QRR2Qf8PcSIDQbAISQ0AQwAAAAAgALxBgICAfEYNARogA0H4D08EQCAAIACSDwsgAEMAAAAAXgRAIwBBEGsiA0MAAABwOAIMIAMqAgxDAAAAcJQPCyAAQwAAFsNfRQ0AIwBBEGsiA0MAAAAQOAIMIAMqAgxDAAAAEJQPC0HYtgErAwAgALsiASABQdC2ASsDACIBoCICIAGhoSIBokHgtgErAwCgIAEgAaKiQei2ASsDACABokQAAAAAAADwP6CgIAK9IgRCL4YgBKdBH3FBA3RB0LQBaikDAHy/orYLCxMAQQwQAkEFEG5BkIUDQScQAQALEwBBDBACQQQQbkGQhQNBJxABAAsTAEEMEAJBAxBuQZCFA0EnEAEAC5cEAQR/AkACQAJAIAAoAgQgACgCACICa0E0bSIFQQFqIgNBxZ2xJ0kEQEHEnbEnIAAoAgggAmtBNG0iAkEBdCIEIAMgAyAESRsgAkHiztgTTxsiAwR/IANBxZ2xJ08NAiADQTRsEDMFQQALIgQgBUE0bGoiAiAB/QACAP0LAgAgAiAB/QACEP0LAhAgAiABKAIgNgIgIAIgASgCJDYCJCABQgA3AiAgAf0MAAAAAAAAAAAAAAAAAAAAAP0LAhAgAiABLQAwOgAwIAIgASkCKDcCKCAEIANBNGxqIQMgAkE0aiEFIAAoAgQiASAAKAIAIgRGDQIDQCACQTRrIgIgAUE0ayIB/QACAP0LAgAgAiABKAIQNgIQIAIgASgCFDYCFCACIAEoAhg2AhggAUEANgIYIAFCADcCECACIAEoAhw2AhwgAiABKAIgNgIgIAIgASgCJDYCJCABQQA2AiQgAUIANwIcIAIgASkCKDcCKCACIAEtADA6ADAgASAERw0ACyAAIAM2AgggACgCBCEDIAAgBTYCBCAAKAIAIQEgACACNgIAIAEgA0YNAwNAIANBNGsiACgCHCICBEAgA0EUayACNgIAIAIQMQsgA0EkaygCACICBEAgA0EgayACNgIAIAIQMQsgACIDIAFHDQALDAMLEEQACxBbAAsgACADNgIIIAAgBTYCBCAAIAI2AgALIAEEQCABEDELC6kFAQh/IAEgACgCCCIDIAAoAgAiBGtBDG1NBEACQCAAKAIEIgUgBGtBDG0iCCABIAEgCEsbIgdFDQAgBCEDIAchBiAHQQNxIgkEQANAIAMgAigCADYCACADIAIoAgQ2AgQgAyACLQAIOgAIIAZBAWshBiADQQxqIQMgCkEBaiIKIAlHDQALCyAHQQRJDQADQCADIAIoAgA2AgAgAyACKAIENgIEIAMgAi0ACDoACCADIAIoAgA2AgwgAyACKAIENgIQIAMgAi0ACDoAFCADIAIoAgA2AhggAyACKAIENgIcIAMgAi0ACDoAICADIAIoAgA2AiQgAyACKAIENgIoIAMgAi0ACDoALCADQTBqIQMgBkEEayIGDQALCyABIAhLBEAgBSABIAhrQQxsaiEBA0AgBSACKQIANwIAIAUgAigCCDYCCCAFQQxqIgUgAUcNAAsgACABNgIEDwsgACAEIAFBDGxqNgIEDwsgBARAIAAgBDYCBCAEEDEgAEEANgIIIABCADcCAEEAIQMLAkAgAUHWqtWqAU8NAEHVqtWqASADQQxtIgNBAXQiBCABIAEgBEkbIANBqtWq1QBPGyIDQdaq1aoBTw0AIAAgA0EMbCIDEDMiBDYCBCAAIAQ2AgAgACADIARqNgIIIAQhAyABQQxsIgFBDGsiBkEMbkEBakEDcSIHBEADQCADIAIpAgA3AgAgAyACKAIINgIIIANBDGohAyAFQQFqIgUgB0cNAAsLIAEgBGohASAGQSRPBEADQCADIAIpAgA3AgAgAyACKAIINgIIIAMgAigCCDYCFCADIAIpAgA3AgwgAyACKAIINgIgIAMgAikCADcCGCADIAIpAgA3AiQgAyACKAIINgIsIANBMGoiAyABRw0ACwsgACABNgIEDwsQRAALEwBBDBACQQYQbkGQhQNBJxABAAsDAAEL/QcBB38gACgCECEHIAAoAiQhCAJAIAIgASIDRg0AAkACQCADLAAAIgRBJGsOWQIBAQECAAICAQECAQEBAQEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAQsgACgCGA0BCyAAIAQQVSADQQFqIQMLAkACQAJAAkACQCABIANHDQACfwJAIAIgASIDRg0AIANBAWoiBSACRg0AIAMtAABB3ABHDQACQAJAIAUsAAAiBEEkaw5aAAEBAQAAAAABAQABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQsgACAEEFUgA0ECagwCCyAAKAIMQfAHcUHAAEYEQCAAIAUgAkEAEMYCDAILIANBAkEAAn9BACEFAkACQCAEQXhxQTBHIARB/gFxQThHcQ0AIARB/wFxIgRBMWtBCEsNACAEQTBrIgQgACgCEEsNASAAIAQQyQJBASEFCyAFDAELEPUBAAsbaiEDCyADCyIDIAFHDQACQCABIAJGDQAgAS0AAEEuRw0AQQgQMyEDIAAoAiQiBCgCBCEFIANBlJgBNgIAIAMgBTYCBCAEIAM2AgQMAgsgACABIAIQ0QIhAwsCQAJAIAEgA0cNACACIANGDQACQAJAIAEsAAAiA0Ekaw4FAwYGBgEACyADQd4ARw0FQQwQMyEDIAAoAgwhBCAAKAIkIgUoAgQhBiADQeSMATYCACADIAY2AgQgAyAEQfAPcUGADEY6AAggBSADNgIEDAMLAkAgAC0ADEECcQRAIAAoAhAhBAwBC0EMEDMhAyAAIAAoAhBBAWoiBDYCECAAKAIkIgUoAgQhBiADIAQ2AgggA0GwlAE2AgAgAyAGNgIEIAUgAzYCBCAAIAAoAiQoAgQ2AiQLIAAgACgCGEEBajYCGCAAIAFBAWogAhD8ASIFIAJGDQUgBS0AAEEpRw0FIAAtAAxBAnFFBEBBDBAzIQMgACgCJCIGKAIEIQkgAyAENgIIIANBgJUBNgIAIAMgCTYCBCAGIAM2AgQgACAAKAIkKAIENgIkCyAAIAAoAhhBAWs2AhggBUEBaiEDCyABIANHDQIMAwtBDBAzIQMgACgCDCEEIAAoAiQiBSgCBCEGIANBrI0BNgIAIAMgBjYCBCADIARB8A9xQYAMRjoACCAFIAM2AgQLIAAgACgCJCgCBDYCJCABQQFqIQMLIAAgAyACIAggB0EBaiAAKAIQQQFqENICIQELIAEPCxD5AQALsQIBBH8gACgCJCEGAkAgACABIAIQ+wEiAyABRg0AA0AgACADIgQgAhD7ASIDIARHDQALIAEgBEYNACACIARHBEADQCAELQAAQfwARwRAIAQPCyAAKAIkIQUgACAEQQFqIgEgAhD7ASIDIAFGDQIDQCAAIAMiBCACEPsBIgMgBEcNAAsgASAERg0CQQwQMyEDIAYoAgQhASADIAUoAgQ2AgggAyABNgIEIANBjJcBNgIAIAYgAzYCBCAFQQA2AgRBCBAzIQMgACgCJCgCBCEBIANBuIsBNgIAIAMgATYCBCAFIAM2AgQgACgCJEEANgIEQQgQMyEDIAUoAgQhASADQcyXATYCACADIAE2AgQgACgCJCADNgIEIAAgBSgCBDYCJCACIARHDQALCyACDwsQpgQAC8YWBBR/CnsOfQJ8IwBBQGoiAiQAAkAgACgCBCAAKAIAIglrQQF1IgogASgCBCABKAIAIgtrQQJ1IgNLBEAgASAKIANrEGkgACgCACEJDAELIAMgCk0NACABIAsgCkECdGo2AgQLAkAgACgCBCAJayIOQQRGBEAgCSoCACEgIAEoAgAiAEEANgIEIAAgIDgCAAwBCyAOQQJ1IghBgYCAgHhxQQFGBEACQCAOQQF1IgogASgCBCABKAIAIgtrQQJ1IgNLBEAgASAKIANrEGkMAQsgAyAKTQ0AIAEgCyAKQQJ0ajYCBAsgDkEATA0BIAEoAgAhAyAAKAIAIQsgCLchL0EAIQADQCAAt0QYLURU+yEZQKIhLkMAAAAAISFBACEJQwAAAAAhIgNAICEgCyAJQQJ0aioCACIjIC4gCbeiIC+jtiIgEHaUkyEhICMgIBB3lCAikiEiIAlBAWoiCSAIRw0ACyADIABBA3RqIgEgIjgCACABICE4AgQgAEEBaiIAIAhHDQALDAELQQAhCiACQQA2AjggAkIANwMwIAJCADcDICAIQQJtIRQCQAJAAkACQAJAAkACfyAIQQFqQQNJBEBBACELQQAMAQsgFEGAgICABE8NASACIBRBAnQiAxAzIgs2AjQgAiALNgIwIAMgC2ohEEEAIAhBAWpBA0kNABogAiADEDMiCjYCJCACIAo2AiAgAyAKagshEiAOQQBMDQVBASAIIAhBAUwbIRVBACEJIAIoAjAhAyACKAIgIQwgCyEHIAohBgNAIAAoAgAgCUECdGohEQJAIAlBAXFFBEAgByAQRwRAIAcgESoCADgCACACIAdBBGoiBzYCNAwCCyAHIAtrIg9BAnUiE0EBaiIFQYCAgIAETw0EQf////8DIA9BAXUiByAFIAUgB0kbIA9B/P///wdPGyIFBH8gBUGAgICABE8NBiAFQQJ0EDMFQQALIgMgE0ECdGoiByARKgIAOAIAIAMgCyAP/AoAACACIAdBBGoiBzYCNCADIAVBAnRqIRAgC0UEQCADIQsMAgsgCxAxIAMhCwwBCyAGIBJHBEAgBiARKgIAOAIAIAIgBkEEaiIGNgIkDAELIAYgCmsiD0ECdSITQQFqIgVBgICAgARPDQVB/////wMgD0EBdSIGIAUgBSAGSRsgD0H8////B08bIgUEfyAFQYCAgIAETw0FIAVBAnQQMwVBAAsiDCATQQJ0aiIGIBEqAgA4AgAgDCAKIA/8CgAAIAIgBkEEaiIGNgIkIAwgBUECdGohEiAKBEAgChAxCyAMIQoLIBUgCUEBaiIJRw0ACwwECxBEAAsgAiAHNgI4IAIgAzYCMCACIAw2AiAQRAALIAIgAzYCMCACIAw2AiAQWwALIAIgAzYCMCACIAw2AiAgAiAGNgIoIAIgEDYCOBBEAAsgAiADNgIwIAIgDDYCIAsgAiAQNgI4IAIgEjYCKEEAIQwgAkEANgIYIAJCADcDECACQQA2AgggAkIANwMAIAJBMGogAkEQahD9ASACQSBqIAIQ/QECQAJAIA5BBU4EQCABKAIAIQQgCLchLiACKAIQIQ0gAigCACEAAkBBASAUIBRBAUwbIglBEEkNACAEIBRBA3RqIgdBBGoiBiAJQQFrIgNBA3QiAWogBkkNACABIAdqIAdJDQAgA0H/////AUsNACAEIAQgCUEDdCIFaiIQSSAEQQRqIhEgBCAFQQRrIgNqIhJJcQ0AIAQgBCAUQQN0IgEgBWpqIghJIAEgBGoiDkEEaiIPIBJJcQ0AIAAgEkkgBCAAIANqIhVJcQ0AIAQgACAFaiITSSAAQQRqIgcgEklxDQAgDSASSSAEIAMgDWoiBklxDQAgBCAFIA1qIgNJIA1BBGoiASASSXENACAEIAhBBGsiBUkgDiASSXENACAPIBBJIAggEUtxDQAgACAQSSARIBVJcQ0AIBEgE0kgByAQSXENACANIBBJIAYgEUtxDQAgASAQSSADIBFLcQ0AIA4gEEkgBSARS3ENACAAIAhJIA8gFUlxDQAgDyATSSAHIAhJcQ0AIAYgD0sgCCANS3ENACABIAhJIAMgD0txDQAgBSAPSyAIIA5LcQ0AIAAgBUkgDiAVSXENACAOIBNJIAUgB0txDQAgBSANSyAGIA5LcQ0AIAEgBUkgAyAOS3ENACAJQfz///8HcSEMIC79FCEcIBT9ESEd/QwAAAAAAQAAAAIAAAADAAAAIRlBACEHA0AgACAZQQH9qwEiF/0MAQAAAAEAAAABAAAAAQAAAP1QIhb9GwFBAnQiCGoqAgAhJiAAIBb9GwBBAnQiDmr9CQIAIRogACAW/RsCQQJ0IhBqKgIAIScgACAW/RsDQQJ0IhFqKgIAISggGf3+Af0MGC1EVPshGUAYLURU+yEZQP3yASAc/fMBIhb9IQC2IikQdiEqIBb9IQG2IisQdiEsIBkgGf0NCAkKCwwNDg8AAQIDAAECA/3+Af0MGC1EVPshGUAYLURU+yEZQP3yASAc/fMBIhb9IQC2Ii0QdiEkIBb9IQG2IiUQdiEhIAAgF/0bAUECdCITaioCACEiIAAgF/0bAEECdCIGav0JAgAhFiAAIBf9GwJBAnQiA2oqAgAhIyAAIBf9GwNBAnQiAWoqAgAhICAEIAZqICr9EyAs/SABICT9IAIgIf0gAyIeIBogJv0gASAn/SACICj9IAMiGP3mASIfICkQd/0TICsQd/0gASAtEHf9IAIgJRB3/SADIhogFiAi/SABICP9IAIgIP0gAyIW/eYBIhcgBiANaiIS/QkCACANIBNqIg8qAgD9IAEgAyANaiIFKgIA/SACIAEgDWoiFSoCAP0gA/3kAf3kASIb/R8AOAIAIAQgE2ogG/0fATgCACADIARqIBv9HwI4AgAgASAEaiAb/R8DOAIAIAQgDmogGiAY/eYBIhogDSAOaiIT/QkCACAIIA1qIgYqAgD9IAEgDSAQaiIDKgIA/SACIA0gEWoiASoCAP0gA/3kASAeIBb95gEiFv3lASIY/R8AOAIAIAQgCGogGP0fATgCACAEIBBqIBj9HwI4AgAgBCARaiAY/R8DOAIAIAQgGSAd/a4BQQH9qwEiGP0bAEECdGogEv0JAgAgDyoCAP0gASAFKgIA/SACIBUqAgD9IAMgF/3lASAf/eUBIhf9HwA4AgAgBCAY/RsBQQJ0aiAX/R8BOAIAIAQgGP0bAkECdGogF/0fAjgCACAEIBj9GwNBAnRqIBf9HwM4AgAgBCAY/QwBAAAAAQAAAAEAAAABAAAA/VAiF/0bAEECdGogFiAT/QkCACAGKgIA/SABIAMqAgD9IAIgASoCAP0gAyAa/eUB/eQBIhb9HwA4AgAgBCAX/RsBQQJ0aiAW/R8BOAIAIAQgF/0bAkECdGogFv0fAjgCACAEIBf9GwNBAnRqIBb9HwM4AgAgGf0MBAAAAAQAAAAEAAAABAAAAP2uASEZIAdBBGoiByAMRw0ACyAJIAxGDQILA0AgBCAMQQN0IgNqIAAgA0EEciIBaioCACIjIAy3RBgtRFT7IRlAoiAuo7YiIBB2IiSUIiUgACADaioCACIhICAQdyIglCIiIAMgDWoiBioCAJKSOAIAIAEgBGogICAjlCIjIAEgDWoiAyoCAJIgJCAhlCIgkzgCACAEIAwgFGpBA3RqIgEgBioCACAikyAlkzgCACABICAgAyoCACAjk5I4AgQgDEEBaiIMIAlHDQALDAELIAIoAgAiAEUNAQsgAiAANgIEIAAQMQsgAigCECIABEAgAiAANgIUIAAQMQsgCgRAIAoQMQsgC0UNACACIAs2AjQgCxAxCyACQUBrJAALggICBH8BfiMAQUBqIgIkACACIAFCwPwVfyIGPgIAIAIgBkKAo6R+fiABQgp+fCIBQuDUA38iBj4CBCACIAZCoKt8fiABfCIBQugHfyIGPgIIIAIgBkKY+P//D34gAXw+AhAgAkH2PjYCDCACQSBqIgRBIEG/IyACELgCGiAEEGUiA0Hw////B0kEQAJAAkAgA0ELTwRAIANBD3JBAWoiBRAzIQQgACAFQYCAgIB4cjYCCCAAIAQ2AgAgACADNgIEIAMgBGohBSAEIQAMAQsgACADOgALIAAgA2ohBSADRQ0BCyAAIAJBIGogA/wKAAALIAVBADoAACACQUBrJAAPCxBMAAsJAEGcHBCUAQAL3AEBBn8CQAJAIAAoAgQiAEUNACABKAIAIAEgAS0ACyICwEEASCIDGyEFIAEoAgQgAiADGyEBA0ACQAJAAkACQAJAIAAoAhQgAC0AGyICIALAQQBIIgQbIgIgASABIAJLIgYbIgMEQCAFIAAoAhAgAEEQaiAEGyIEIAMQRiIHRQRAIAEgAkkNAgwDCyAHQQBODQIMAQsgASACTw0CCyAAKAIAIgANBAwFCyAEIAUgAxBGIgINAQsgBg0BDAQLIAJBAE4NAwsgACgCBCIADQALC0HVIRCUAQALIABBHGoLiwIBB38gAEEEaiEGAkACQCAAKAIEIgBFDQAgASgCACABIAEtAAsiA8BBAEgiAhshBSABKAIEIAMgAhshAyAGIQEDQAJAIAMgACgCFCAALQAbIgIgAsBBAEgiBBsiAiACIANLIgcbIggEQCAAKAIQIABBEGogBBsgBSAIEEYiBA0BC0F/IAcgAiADSRshBAsgASAAIARBAEgiAhshASAAQQRqIAAgAhsoAgAiAA0ACyABIAZGDQACQCABKAIUIAEtABsiACAAwEEASCICGyIAIAMgACADSRsiBARAIAUgASgCECABQRBqIAIbIAQQRiIFDQELIAAgA0sNAQwCCyAFQQBODQELIAYhAQsgAQvPBwEEfyAAKAKUKSIBBEAgAEGYKWogATYCACABEDELIAAsAPsoQQBIBEAgACgC8CgQMQsgACgCnBUiAQRAIABBoBVqIAE2AgAgARAxCyAAKAKQFSIBBEAgAEGUFWogATYCACABEDELIAAoAoQVIgMEQCAAQYgVaigCACIBIAMiAkcEQANAIAFBKGsiAigCHCIEBEAgAUEIayAENgIAIAQQMQsgAUENaywAAEEASARAIAFBGGsoAgAQMQsgAiIBIANHDQALIAAoAoQVIQILIAAgAzYCiBUgAhAxCyAAKAL4FCIBBEAgAEH8FGogATYCACABEDELIABBqBRqKAIAIgEEQCAAQawUaiABNgIAIAEQMQsgAEGcFGooAgAiAQRAIABBoBRqIAE2AgAgARAxCyAAQZAUaigCACIBBEAgAEGUFGogATYCACABEDELIABBhBRqKAIAIgEEQCAAQYgUaiABNgIAIAEQMQsgAEH4E2ooAgAiAQRAIABB/BNqIAE2AgAgARAxCyAAQewTaigCACIBBEAgAEHwE2ogATYCACABEDELIABB4BNqKAIAIgEEQCAAQeQTaiABNgIAIAEQMQsgAEHUE2ooAgAiAQRAIABB2BNqIAE2AgAgARAxCyAAQcgTaigCACIBBEAgAEHME2ogATYCACABEDELIABBvBNqKAIAIgEEQCAAQcATaiABNgIAIAEQMQsgAEGwE2ooAgAiAQRAIABBtBNqIAE2AgAgARAxCyAAQaQTaigCACIBBEAgAEGoE2ogATYCACABEDELIABBmBNqKAIAIgEEQCAAQZwTaiABNgIAIAEQMQsgAEGME2ooAgAiAQRAIABBkBNqIAE2AgAgARAxCyAAQYATaigCACIBBEAgAEGEE2ogATYCACABEDELIAAoAvQSIgEEQCAAQfgSaiABNgIAIAEQMQsgACgC6BIiAQRAIABB7BJqIAE2AgAgARAxCyAAQegSaiEBIABB6ABqIQQDQCABQZABayIDKAKEASICBEAgAUEIayACNgIAIAIQMQsgAUEYaygCACICBEAgAUEUayACNgIAIAIQMQsgAUEkaygCACICBEAgAUEgayACNgIAIAIQMQsgAUEwaygCACICBEAgAUEsayACNgIAIAIQMQsgAUHwAGsoAgAiAgRAIAFB7ABrIAI2AgAgAhAxCyABQYQBaygCACICBEAgAUGAAWsgAjYCACACEDELIAMiASAERw0ACyAAKAJcIgEEQCAAIAE2AmAgARAxCyAAQUBrKAIAIgEEQCAAIAE2AkQgARAxCyAACysAIAEEQCAAIAEoAgAQgwIgACABKAIEEIMCIAFBFGogASgCGBBRIAEQMQsLFQAgAEGokgM2AgAgAEEEahDhAiAACwwAIAAQ4gIaIAAQMQtLAQJ/IAAoAgQiBkEIdSEHIAAoAgAiACABIAIgBkEBcQR/IAcgAygCAGooAgAFIAcLIANqIARBAiAGQQJxGyAFIAAoAgAoAhQRDAALmgEAIABBAToANQJAIAAoAgQgAkcNACAAQQE6ADQCQCAAKAIQIgJFBEAgAEEBNgIkIAAgAzYCGCAAIAE2AhAgA0EBRw0CIAAoAjBBAUYNAQwCCyABIAJGBEAgACgCGCICQQJGBEAgACADNgIYIAMhAgsgACgCMEEBRw0CIAJBAUYNAQwCCyAAIAAoAiRBAWo2AiQLIABBAToANgsLXQEBfyAAKAIQIgNFBEAgAEEBNgIkIAAgAjYCGCAAIAE2AhAPCwJAIAEgA0YEQCAAKAIYQQJHDQEgACACNgIYDwsgAEEBOgA2IABBAjYCGCAAIAAoAiRBAWo2AiQLC5oBAQJ/An9BiIkDLgEAIgFFBEAjA0EcakEcNgIAQX8MAQsCQAJAIAFBfkoNAEHpoAwhAAJAAkACQAJAAkACQAJAIAFB/wFxQQFrDgsIAAECAwQEBQUGAwcLQYCACAwIC0GAgAIMBwtBgIAEDAYLQf////8HDAULEBkMBAsQGEEQdgwDC0EADAILIAEhAAsgAAsiAEEAIABBAEobC1IBA38CQAJAA0BBBiEBQQohAgJAQfDUKygCACIAQf////8HcUH+////B2sOAgMCAAsgAEHw1CsgACAAQQFq/kgCAEcNAAtBACECCyACIQELIAELfgEEf0H81CsoAgAjAygCGEYEQEH81CtBADYCAAsDQEH01CsoAgAhAkHw1CtB8NQrKAIAIgAgAEEBa0EAIABB/////wdxIgFBAUcbQQAgAUH/////B0cbIgP+SAIAIABHDQALAkAgAw0AIAJFIABBAE5xDQBB8NQrIAEQqwELCx0AIAAgAUHAhD1uIgAQoQEgASAAQcCEPWxrEI0CCx0AIAAgAUGQzgBuIgAQoQEgASAAQZDOAGxrEI4CCxsAIAAgAUHkAG4iABChASABIABB5ABsaxChAQv8AQEDfyMAQRBrIgIkACACIAE2AgwCQAJAAn8gAC0AC0EHdiIERQRAQQEhASAALQALQf8AcQwBCyAAKAIIQf////8HcUEBayEBIAAoAgQLIgMgAUYEQCAAIAFBASABIAEQ8AICfyAALQALQQd2BEAgACgCAAwBC0EACxoMAQsCfyAALQALQQd2BEAgACgCAAwBC0EACxogBA0AIAAiASADQQFqIAAtAAtBgAFxcjoACyAAIAAtAAtB/wBxOgALDAELIAAoAgAhASAAIANBAWo2AgQLIAEgA0ECdGoiACACKAIMNgIAIAJBADYCCCAAIAIoAgg2AgQgAkEQaiQAC/kBAQN/IwBBEGsiAiQAIAIgAToADwJAAkACfyAALQALQQd2IgRFBEBBCiEBIAAtAAtB/wBxDAELIAAoAghB/////wdxQQFrIQEgACgCBAsiAyABRgRAIAAgAUEBIAEgARCTAgJ/IAAtAAtBB3YEQCAAKAIADAELQQALGgwBCwJ/IAAtAAtBB3YEQCAAKAIADAELQQALGiAEDQAgACIBIANBAWogAC0AC0GAAXFyOgALIAAgAC0AC0H/AHE6AAsMAQsgACgCACEBIAAgA0EBajYCBAsgASADaiIAIAItAA86AAAgAkEAOgAOIAAgAi0ADjoAASACQRBqJAALiAEBAX8gAiAALQALQQd2BH8gACgCCEH/////B3FBAWsFQQoLIgNNBEACfyAALQALQQd2BEAgACgCAAwBCyAACyIDIAEgAvwKAAAgACADIAIQlwIPCyAAIAMgAiADawJ/IAAtAAtBB3YEQCAAKAIEDAELIAAtAAtB/wBxCyIAQQAgACACIAEQvgELPQEBfyMAQRBrIgMkACADIAI6AA8DQCABBEAgACADLQAPOgAAIAFBAWshASAAQQFqIQAMAQsLIANBEGokAAu+AgEEfyMAQRBrIgUkACACQe////8HIAFrTQRAAn8gAC0AC0EHdgRAIAAoAgAMAQsgAAshBiAFIAAgAUHn////A0kEfyAFIAFBAXQ2AgwgBSABIAJqNgIAIwBBEGsiAiQAIAUoAgAgBUEMaiIHKAIASSEIIAJBEGokACAHIAUgCBsoAgAiAkELTwR/IAJBEGpBcHEiAiACQQFrIgIgAkELRhsFQQoLQQFqBUHv////BwsQuAEgBSgCACECIAUoAgQaIAQEQCACIAYgBBB1CyADIARHBEAgAiAEaiAEIAZqIAMgBGsQdQsgAUEBaiIBQQtHBEAgACAGIAEQ5AELIAAgAjYCACAAIAAoAghBgICAgHhxIAUoAgRB/////wdxcjYCCCAAIAAoAghBgICAgHhyNgIIIAVBEGokAA8LEEwAC0MAIAEEQCAAIAEoAgAQlAIgACABKAIEEJQCIAEsACtBAEgEQCABKAIgEDELIAEsABtBAEgEQCABKAIQEDELIAEQMQsLqwIBBn8gACgCAEUEQEF/IQMjAEEQayICJAAgAkEANgIMIABBIGoiBhDsASAAKAIUIgFBAEchBQJAIAFFDQADQAJAIAFBCGpBAEEB/kgCAARAIAIgAigCDEEBajYCDCABIAJBDGo2AhAMAQsgBCABIAQbIQQgA0EBayEDCyABKAIAIgFBAEchBSADRQ0BIAENAAsLAkAgBQRAIAFBBGohAyABKAIEIgVFDQEgBUEANgIADAELIABBBGohAwsgA0EANgIAIAAgATYCFCAGEOsBIAIoAgwiAQRAA0AgAkEMakEAIAEQyAEgAigCDCIBDQALCyAEBEAgBEEMahDrAQsgAkEQaiQAQQAPCyAAKAIMBEAgAEEIaiIAQQH+HgIAGiAAQf////8HEKsBC0EACw0AIAAgASACQn8QzQMLLwEBfyMAQRBrIgMkACAAIAIQlgEgA0EAOgAPIAEgAmogAy0ADzoAACADQRBqJAALFwAgACgCCBBCRwRAIAAoAggQ0QMLIAALOAEBfyMAQRBrIgMkACADIAI2AgwgA0EIaiADQQxqEH8hAiAAIAEQtAIhACACEH4gA0EQaiQAIAALBABBAQs3AQF/IwBBEGsiAiQAIAIgACgCADYCCCACIAIoAgggAUECdGo2AgggAigCCCEAIAJBEGokACAACzQBAX8jAEEQayICJAAgAiAAKAIANgIIIAIgAigCCCABajYCCCACKAIIIQAgAkEQaiQAIAALMQAgAigCACECA0ACQCAAIAFHBH8gACgCACACRw0BIAAFIAELDwsgAEEEaiEADAALAAvHBAEBfyMAQRBrIgwkACAMIAA2AgwCQAJAIAAgBUYEQCABLQAARQ0BQQAhACABQQA6AAAgBCAEKAIAIgFBAWo2AgAgAUEuOgAAAn8gBy0AC0EHdgRAIAcoAgQMAQsgBy0AC0H/AHELRQ0CIAkoAgAiASAIa0GfAUoNAiAKKAIAIQIgCSABQQRqNgIAIAEgAjYCAAwCCwJAIAAgBkcNAAJ/IActAAtBB3YEQCAHKAIEDAELIActAAtB/wBxC0UNACABLQAARQ0BQQAhACAJKAIAIgEgCGtBnwFKDQIgCigCACEAIAkgAUEEajYCACABIAA2AgBBACEAIApBADYCAAwCC0F/IQAgCyALQYABaiAMQQxqEJ0CIAtrIgVB/ABKDQEgBUECdUGQxgJqLQAAIQYCQAJAIAVBe3EiAEHYAEcEQCAAQeAARw0BIAMgBCgCACIBRwRAQX8hACABQQFrLQAAQd8AcSACLQAAQf8AcUcNBQsgBCABQQFqNgIAIAEgBjoAAEEAIQAMBAsgAkHQADoAAAwBCyAGQd8AcSIAIAItAABHDQAgAiAAQYABcjoAACABLQAARQ0AIAFBADoAAAJ/IActAAtBB3YEQCAHKAIEDAELIActAAtB/wBxC0UNACAJKAIAIgAgCGtBnwFKDQAgCigCACEBIAkgAEEEajYCACAAIAE2AgALIAQgBCgCACIAQQFqNgIAIAAgBjoAAEEAIQAgBUHUAEoNASAKIAooAgBBAWo2AgAMAQtBfyEACyAMQRBqJAAgAAumAQECfyMAQRBrIgYkACAGQQhqIgUgASgCHCIBNgIAIAFBBGpBAf4eAgAaIAUQZiIBQZDGAkGwxgIgAiABKAIAKAIwEQYAGiADIAUQswEiASABKAIAKAIMEQEANgIAIAQgASABKAIAKAIQEQEANgIAIAAgASABKAIAKAIUEQIAIAUoAgAiAEEEakF//h4CAEUEQCAAIAAoAgAoAggRAAALIAZBEGokAAsxACACLQAAIQIDQAJAIAAgAUcEfyAALQAAIAJHDQEgAAUgAQsPCyAAQQFqIQAMAAsAC7sEAQF/IwBBEGsiDCQAIAwgADoADwJAAkAgACAFRgRAIAEtAABFDQFBACEAIAFBADoAACAEIAQoAgAiAUEBajYCACABQS46AAACfyAHLQALQQd2BEAgBygCBAwBCyAHLQALQf8AcQtFDQIgCSgCACIBIAhrQZ8BSg0CIAooAgAhAiAJIAFBBGo2AgAgASACNgIADAILAkAgACAGRw0AAn8gBy0AC0EHdgRAIAcoAgQMAQsgBy0AC0H/AHELRQ0AIAEtAABFDQFBACEAIAkoAgAiASAIa0GfAUoNAiAKKAIAIQAgCSABQQRqNgIAIAEgADYCAEEAIQAgCkEANgIADAILQX8hACALIAtBIGogDEEPahCgAiALayIFQR9KDQEgBUGQxgJqLQAAIQYCQAJAAkACQCAFQX5xQRZrDgMBAgACCyADIAQoAgAiAUcEQCABQQFrLQAAQd8AcSACLQAAQf8AcUcNBQsgBCABQQFqNgIAIAEgBjoAAEEAIQAMBAsgAkHQADoAAAwBCyAGQd8AcSIAIAItAABHDQAgAiAAQYABcjoAACABLQAARQ0AIAFBADoAAAJ/IActAAtBB3YEQCAHKAIEDAELIActAAtB/wBxC0UNACAJKAIAIgAgCGtBnwFKDQAgCigCACEBIAkgAEEEajYCACAAIAE2AgALIAQgBCgCACIAQQFqNgIAIAAgBjoAAEEAIQAgBUEVSg0BIAogCigCAEEBajYCAAwBC0F/IQALIAxBEGokACAAC6YBAQJ/IwBBEGsiBiQAIAZBCGoiBSABKAIcIgE2AgAgAUEEakEB/h4CABogBRBwIgFBkMYCQbDGAiACIAEoAgAoAiARBgAaIAMgBRC1ASIBIAEoAgAoAgwRAQA6AAAgBCABIAEoAgAoAhARAQA6AAAgACABIAEoAgAoAhQRAgAgBSgCACIAQQRqQX/+HgIARQRAIAAgACgCACgCCBEAAAsgBkEQaiQAC8tMBBR+F38FewF9IwBBkAFrIiAkAAJAAkACQCABKAIwIhggASgCACIXQQJ0IhlB8OYAaigCACIlRyIiDQAgATUCNCIDIAEpAxAgGK1+IBlBsOcAajQCAH9SDQAgATUCOCIFIAEpAxggA35SDQAgATUCPCABKQMgIAV+Ug0AIAIoAjAiGSACKAIAIhpBAnQiI0Hw5gBqKAIARw0AIAI1AjQiAyACKQMQIBmtfiAjQbDnAGo0AgB/Ug0AIAI1AjgiBSACKQMYIAN+Ug0AIAI1AjwgAikDICAFflINACAXIBpHDQAgACABIAIQvwEMAQsCQAJAAkACQAJAAkACQCAXDgICAAELIAIpAygiEiACKQMgIg8gAikDGCIQIAIpAxAiC35+fiABKQMoIg0gASkDICIJIAEpAxgiDiABKQMQIgR+fn5RBEACQCAAKAIADgMIAAgACyACKAI8IR4gAigCOCEfIAIoAjQhISABKAI8IScgASgCOCEdIAEoAjQhIyAAKAIIIRkgACgCBCEkIAIoAjAhGwJAICINACAjrSIDIAQgGK1+Ug0AIB2tIgUgAyAOflINACAnrSAFIAl+Ug0AIBsgAigCACIXQQJ0IhpB8OYAaigCAEcNACAhrSIDIAsgG61+IBpBsOcAajQCAH9SDQAgH60iBSADIBB+Ug0AIB6tIAUgD35SDQAgF0EBRw0AIAAgASACEL8BDAgLIA6nIhcgGWpBAWsgGW0iJiAkbCIZICZqIhogFyAXIBpKGyEaAkAgAigCACIcQQFHDQAgBCALUg0AICINACAbICVHDQAgDUIAVw0IIAlCAFcNCCAZIBpODQggGCALp2whACAarCEMIBmsIQUDQCAnIAanIhdsIRggFyAebCEXQgAhCANAIB0gCKciGWwhGiAZIB9sIRkgBSEDA0AgAigCgAEgGWogF2ogISADpyIbbGogASgCgAEgGmogGGogGyAjbGogAPwKAAAgA0IBfCIDIAxSDQALIAhCAXwiCCAJUg0ACyAGQgF8IgYgDVINAAsMCAsgGyAcQQJ0IiJB8OYAaigCAEcNAyAhrSIDIAsgG61+ICJBsOcAajQCACIFf1INAyAfrSIMIAMgEH5SDQMgHq0gDCAPflINAyAYQQJHDQQCQCAcDgIHAAYLIA1CAFcNByAJQgBXDQcgAigCgAEhGyAZIASnIgBBAXQiGGwhHyAXIBprIBhsISEgCacgFyAZaiAaa2wgAGxBAXQhIiAZICNsISQgGiAZa0EBcSElQQAhAkIAIQsgGiAZQQFqIgBGISYDQAJAIBkgGkgEQCAnIAunbCEcQgAhAwNAIAIgH2ohFyAdIAOnbCEeICUEfyAXIBtqIAEoAoABIBxqIB5qICRqIBj8CgAAIBcgGGohFyAABSAZCyECICZFBEADQCAXIBtqIAEoAoABIB5qIBxqIAIgI2xqIBj8CgAAIBsgFyAYaiIXaiABKAKAASAeaiAcaiACQQFqICNsaiAY/AoAACAXIBhqIRcgAkECaiICIBpHDQALCyAXICFqIQIgA0IBfCIDIAlSDQALDAELIAIgImohAgsgC0IBfCILIA1SDQALDAcLICBB9swANgJIICBB0DM2AkQgIEGRJDYCQEG4nwIoAgBBiNIAICBBQGsQMgwHCyAgQfgeNgIIICBBnTg2AgQgIEGRJDYCAEG4nwIoAgBBiNIAICAQMgwGCwJAAkACQAJAIAIpAygiEiACKQMgIg8gAikDGCIQIAIpAxAiDX5+fiABKQMoIg4gASkDICIJIAEpAxgiAyABKQMQIgR+fn5RBEACQCAAKAIADgMKAAoACyACKAI8IRwgAigCOCEeIAIoAjQhHyABKAI8IRsgASgCOCEnIAEoAjQhIyAAKAIIIRkgACgCBCEhIAIoAjAhFwJAICINACAjrSIFIAQgGK1+Ug0AICetIgwgAyAFflINACAbrSAJIAx+Ug0AIBcgAigCACIaQQJ0Ih1B8OYAaigCAEcNACAfrSIFIA0gF61+IB1BsOcAajQCAH9SDQAgHq0iDCAFIBB+Ug0AIBytIAwgD35SDQAgGg0AIAAgASACEL8BDAoLIAOnIgAgGWpBAWsgGW0iJCAhbCIZICRqIhogACAAIBpKGyEaAkAgAigCACIdDQAgBCANUg0AICINACAXICVHDQAgDkIAVw0KIAlCAFcNCiAZIBpODQogGCANp2whACAarCEMIBmsIQUDQCAbIAanIhdsIRggFyAcbCEXQgAhCANAICcgCKciGWwhGiAZIB5sIRkgBSEDA0AgAigCgAEgGWogF2ogHyADpyIdbGogASgCgAEgGmogGGogHSAjbGogAPwKAAAgA0IBfCIDIAxSDQALIAhCAXwiCCAJUg0ACyAGQgF8IgYgDlINAAsMCgsgFyAdQQJ0IiJB8OYAaigCAEcNASAfrSIFIA0gF61+ICJBsOcAajQCACIMf1INASAerSIHIAUgEH5SDQEgHK0gByAPflINASAYQQRHDQICQCAdDgIABQQLIA5CAFcNCSAJQgBXDQkgAigCgAEhHSAZIASnIgJBAnQiGGwhHyAAIBprIBhsISEgCacgACAZaiAaa2wgAmxBAnQhIiAZICNsISQgGiAZa0EBcSElQQAhAiAaIBlBAWoiAEYhJgNAAkAgGSAaSARAIBsgC6dsIRxCACEDA0AgAiAfaiEXICcgA6dsIR4gJQR/IBcgHWogASgCgAEgHGogHmogJGogGPwKAAAgFyAYaiEXIAAFIBkLIQIgJkUEQANAIBcgHWogASgCgAEgHmogHGogAiAjbGogGPwKAAAgHSAXIBhqIhdqIAEoAoABIB5qIBxqIAJBAWogI2xqIBj8CgAAIBcgGGohFyACQQJqIgIgGkcNAAsLIBcgIWohAiADQgF8IgMgCVINAAsMAQsgAiAiaiECCyALQgF8IgsgDlINAAsMCQsgIEH2zAA2AogBICBB8TU2AoQBICBBkSQ2AoABQbifAigCAEGI0gAgIEGAAWoQMgwJCwJAAkACQCAdDgICAAELIA5CAFcNCSAJQgBXDQkgGSAaTg0JIARCAFcNCSAEIBmsIgd+IRMgAyAarCIUfSAEfiEVIAIoAoABIQAgASgCgAEhAUIAIQMDQCABIBsgEadsaiECQgAhDANAIA0gAyATfCIDVwRAA0AgAyANfSEDAkAgCEIBfCIIIBBSDQBCACEIIApCAXwiCiAPUg0AIAZCAXwiBUIAIAUgElIbIQZCACEKCyADIA1ZDQALCyACICcgDKdsaiEZIAchBQNAIBkgIyAFp2xqIRpCACELA0AgACAXIAOnbGogHyAIp2xqIB4gCqdsaiAcIAanbGpBgPwBIBogGCALp2xqKgIAIjOLQwAAgHeUQwAAgAiUQYCAgIgHIDO8Ih1BAXQiIUGAgIB4cSIiICJBgICAiAdNG0EBdkGAgIA8ar6SvCIiQQ12QYD4AXEgIkH/H3FqICFBgICAeEsbIB1BEHZBgIACcXI7AQACQCADQgF8IgMgDVINAEIAIQMgCEIBfCIIIBBSDQAgDyAKQgF8IgpSBEBCACEIDAELIAZCAXwiCEIAIAggElIbIQZCACEIQgAhCgsgC0IBfCILIARSDQALIAVCAXwiBSAUUg0ACyANIAMgFXwiA1cEQANAIAMgDX0hAwJAIAhCAXwiCCAQUg0AQgAhCCAKQgF8IgogD1INACAGQgF8IgVCACAFIBJSGyEGQgAhCgsgAyANWQ0ACwsgDEIBfCIMIAlSDQALIBFCAXwiESAOUg0ACwwJCyAgQfgeNgJ4ICBBhjg2AnQgIEGRJDYCcEG4nwIoAgBBiNIAICBB8ABqEDIMCQsgDkIAVw0HIAlCAFcNByAZIBpODQcgBEIAVw0HIAQgGawiB34hEyADIBqsIhR9IAR+IRVCACEDA0AgGyARp2whAEIAIQwDQCANIAMgE3wiA1cEQANAIAMgDX0hAwJAIAhCAXwiCCAQUg0AQgAhCCAKQgF8IgogD1INACAGQgF8IgVCACAFIBJSGyEGQgAhCgsgAyANWQ0ACwsgJyAMp2whGSAHIQUDQCAjIAWnbCEaQgAhCwNAIAIoAoABIBcgA6dsaiAfIAinbGogHiAKp2xqIBwgBqdsaiABKAKAASAaaiAZaiAAaiAYIAunbGooAAA2AAACQCADQgF8IgMgDVINAEIAIQMgCEIBfCIIIBBSDQAgDyAKQgF8IgpSBEBCACEIDAELIAZCAXwiCEIAIAggElIbIQZCACEIQgAhCgsgC0IBfCILIARSDQALIAVCAXwiBSAUUg0ACyANIAMgFXwiA1cEQANAIAMgDX0hAwJAIAhCAXwiCCAQUg0AQgAhCCAKQgF8IgogD1INACAGQgF8IgVCACAFIBJSGyEGQgAhCgsgAyANWQ0ACwsgDEIBfCIMIAlSDQALIA4gEUIBfCIRUg0ACwwHCwJAAkACQCAdDgIAAQILIA5CAFcNCCAJQgBXDQggGSAaTg0IIARCAFcNCCAZIASnIgBsISIgAyAarX0gBH6nISUgGEEBRiAEQgtWcSEmIARCA4MhByACKAKAASIcIABBAnRqISggBEJ8gyIMpyEpICEgI2wgJGwiAq0hCCAAIAJqQQNqrSEKIBj9ESEwICetIQ0gG60hESABKAKAASEeQQAhAUIAIQUDQCAFIBF+IgMgCnwhDyADIAh8IRAgHiAbIAWnbGohIUIAIQYDQCABICJqIQIgISAnIAanbGohJCAPIAYgDX4iA3ynISogAyAQfKchK0EAIQAgGSEXA0AgJCAXICNsaiEdQgAhCwJAAkAgJkUEQEIAIQMMAQsCQCAcIAJBAnQiAWogHiAAICNsIh8gKmpqTw0AIB4gHyAramogASAoak8NAEIAIQMMAQsgAiApaiEB/QwAAAAAAQAAAAIAAAADAAAAIS5CACEDA0AgHCACIAOnakECdGogHSAwIC79tQEiL/0bAGr9CQIAIB0gL/0bAWoqAgD9IAEgHSAv/RsCaioCAP0gAiAdIC/9GwNqKgIA/SAD/QsCACAu/QwEAAAABAAAAAQAAAAEAAAA/a4BIS4gA0IEfCIDIAxSDQALIAEhAiAMIgMgBFENAQsgBCADQn+FfCESIAdCAFIEQANAIBwgAkECdGogHSAYIAOnbGoqAgA4AgAgA0IBfCEDIAJBAWohAiALQgF8IgsgB1INAAsLIBJCA1QNAANAIBwgAkECdGoiASAdIBggA6ciH2xqKgIAOAIAIAEgHSAYIB9BAWpsaioCADgCBCABIB0gGCAfQQJqbGoqAgA4AgggASAdIBggH0EDamxqKgIAOAIMIAJBBGohAiADQgR8IgMgBFINAAsLIABBAWohACAXQQFqIhcgGkcNAAsgAiAlaiEBIAZCAXwiBiAJUg0ACyAFQgF8IgUgDlINAAsMCAsgDkIAVw0HIAlCAFcNByAZIBpODQcgBEIAVw0HIAIoAoABIR0gGSAEp2whHCADIBqtfSAEfqchHiAYQQFGIARCA1ZxIR8gBEJ8gyIFpyEhIBj9ESEwIAEoAoABISJBACEBQgAhBwNAICIgGyAHp2xqISRCACEIA0AgASAcaiEBICQgJyAIp2xqISUgGSEAA0AgJSAAICNsaiECQgAhAwJAAkAgH0UEQCABIRcMAQsgASAhaiEX/QwAAAAAAQAAAAIAAAADAAAAIS4DQCAdIAEgA6dqQQF0av0MAH4AAAB+AAAAfgAAAH4AACACIDAgLv21ASIv/RsAav0JAgAgAiAv/RsBaioCAP0gASACIC/9GwJqKgIA/SACIAIgL/0bA2oqAgD9IAMiL/3gAf0MAACAdwAAgHcAAIB3AACAd/3mAf0MAACACAAAgAgAAIAIAACACP3mASAvQQH9qwEiMf0MAAAA/wAAAP8AAAD/AAAA//1O/QwAAABxAAAAcQAAAHEAAABx/bkBQQH9rQH9DAAAgAcAAIAHAACABwAAgAf9rgH95AEiMkEN/a0B/QwAfAAAAHwAAAB8AAAAfAAA/U4gMv0M/w8AAP8PAAD/DwAA/w8AAP1O/a4BIDH9DAAAAP8AAAD/AAAA/wAAAP/9PP1SIC9BEP2tAf0MAIAAAACAAAAAgAAAAIAAAP1O/VAgL/0NAAEEBQgJDA0AAQABAAEAAf1bAQAAIC79DAQAAAAEAAAABAAAAAQAAAD9rgEhLiADQgR8IgMgBVINAAsgFyEBIAUiAyAEUQ0BCyAXIQEDQCAdIAFBAXRqQYD8ASACIBggA6dsaioCACIzi0MAAIB3lEMAAIAIlEGAgICIByAzvCIXQQF0IiZBgICAeHEiKCAoQYCAgIgHTRtBAXZBgICAPGq+krwiKEENdkGA+AFxIChB/x9xaiAmQYCAgHhLGyAXQRB2QYCAAnFyOwEAIAFBAWohASADQgF8IgMgBFINAAsLIABBAWoiACAaRw0ACyABIB5qIQEgCEIBfCIIIAlSDQALIAdCAXwiByAOUg0ACwwHCyAgQfgeNgJoICBBjzc2AmQgIEGRJDYCYEG4nwIoAgBBiNIAICBB4ABqEDIMBwtBzAcgHXZBAXEEQCAEIAx/IQMgDkIAVw0GIAlCAFcNBiAdQRhsQbTkAGooAgAhHSACKAKAASEcIAAgGWogGmsgFyADp2wiFyAJp2xsISIgFyAZbCEkIBcgACAaa2whJSAEpyEeIBlBAWohACAZICNsISYgGiAZayIoQQFxISlBACEYA0ACQCAZIBpIBEAgGyALp2whH0IAIQMDQCAYICRqIQIgJyADp2whISApBH8gASgCgAEgH2ogIWogJmogAiAcaiAeIB0RBQAgAiAXaiECIAAFIBkLIRggKEEBRwRAA0AgASgCgAEgIWogH2ogGCAjbGogAiAcaiAeIB0RBQAgASgCgAEgIWogH2ogGEEBaiAjbGogHCACIBdqIgJqIB4gHREFACACIBdqIQIgGEECaiIYIBpHDQALCyACICVqIRggA0IBfCIDIAlSDQALDAELIBggImohGAsgC0IBfCILIA5SDQALDAYLICBB+B42AlggIEHlNjYCVCAgQZEkNgJQQbifAigCAEGI0gAgIEHQAGoQMgwGCyAOQgBXDQQgCUIAVw0EIBkgGk4NBCACKAKAASECIBkgBKciF2whHCADIBqtfSAEfqchHiAJpyAAIBlqIBprbCAXbCEfIARCfIMiBachIUEAIRhCACEHA0ACQCAEQgBXBEAgGCAfaiEYDAELIAEoAoABIBsgB6dsaiEiQgAhCANAIBggHGohGCAiICcgCKdsaiEkIBkhAANAICQgACAjbGohHUIAIQMCQAJAIARCBFQEQCAYIRcMAQsgGCAhaiEXA0AgAiAYIAOnIiVqQQF0av0MAH4AAAB+AAAAfgAAAH4AACAdICVBAnRq/QACACIu/eAB/QwAAIB3AACAdwAAgHcAAIB3/eYB/QwAAIAIAACACAAAgAgAAIAI/eYBIC5BAf2rASIv/QwAAAD/AAAA/wAAAP8AAAD//U79DAAAAHEAAABxAAAAcQAAAHH9uQFBAf2tAf0MAACABwAAgAcAAIAHAACAB/2uAf3kASIwQQ39rQH9DAB8AAAAfAAAAHwAAAB8AAD9TiAw/Qz/DwAA/w8AAP8PAAD/DwAA/U79rgEgL/0MAAAA/wAAAP8AAAD/AAAA//08/VIgLkEQ/a0B/QwAgAAAAIAAAACAAAAAgAAA/U79UCAu/Q0AAQQFCAkMDQABAAEAAQAB/VsBAAAgA0IEfCIDIAVSDQALIBchGCAFIgMgBFENAQsgFyEYA0AgAiAYQQF0akGA/AEgHSADp0ECdGoqAgAiM4tDAACAd5RDAACACJRBgICAiAcgM7wiF0EBdCIlQYCAgHhxIiYgJkGAgICIB00bQQF2QYCAgDxqvpK8IiZBDXZBgPgBcSAmQf8fcWogJUGAgIB4SxsgF0EQdkGAgAJxcjsBACAYQQFqIRggA0IBfCIDIARSDQALCyAAQQFqIgAgGkcNAAsgGCAeaiEYIAhCAXwiCCAJUg0ACwsgB0IBfCIHIA5SDQALDAQLAkACQAJAIBwOAgACAQsgDUIAVw0FIAlCAFcNBSAZIBpODQUgBEIAVw0FIAQgGawiDH4hEyAOIBqsIhR9IAR+IRUgAigCgAEhACABKAKAASEBQgAhAwNAIAEgJyARp2xqIQJCACEOA0AgCyADIBN8IgNXBEADQCADIAt9IQMCQCAHQgF8IgcgEFINAEIAIQcgBkIBfCIGIA9SDQAgCkIBfCIFQgAgBSASUhshCkIAIQYLIAMgC1kNAAsLIAIgHSAOp2xqIRcgDCEFA0AgFyAjIAWnbGohGUIAIQgDQCAAIBsgA6dsaiAhIAenbGogHyAGp2xqIB4gCqdsaiAZIBggCKdsai8BAEECdEHAlgNqKgIAOAIAAkAgA0IBfCIDIAtSDQBCACEDIAdCAXwiByAQUg0AIA8gBkIBfCIGUgRAQgAhBwwBCyAKQgF8IgdCACAHIBJSGyEKQgAhB0IAIQYLIAhCAXwiCCAEUg0ACyAFQgF8IgUgFFINAAsgCyADIBV8IgNXBEADQCADIAt9IQMCQCAHQgF8IgcgEFINAEIAIQcgBkIBfCIGIA9SDQAgCkIBfCIFQgAgBSASUhshCkIAIQYLIAMgC1kNAAsLIA5CAXwiDiAJUg0ACyARQgF8IhEgDVINAAsMBQsgIEH4HjYCOCAgQek1NgI0ICBBkSQ2AjBBuJ8CKAIAQYjSACAgQTBqEDIMBQsgDUIAVw0DIAlCAFcNAyAZIBpODQMgBEIAVw0DIAQgGawiBX4hFCAOIBqsIhV9IAR+IRZCACEDA0AgJyARp2whAEIAIRMDQCALIAMgFHwiA1cEQANAIAMgC30hAwJAIAdCAXwiByAQUg0AQgAhByAGQgF8IgYgD1INACAKQgF8IgxCACAMIBJSGyEKQgAhBgsgAyALWQ0ACwsgHSATp2whFyAFIQwDQCAjIAynbCEZQgAhCANAIAIoAoABIBsgA6dsaiAhIAenbGogHyAGp2xqIB4gCqdsaiABKAKAASAZaiAXaiAAaiAYIAinbGovAAA7AAACQCADQgF8IgMgBFINAEIAIQMgB0IBfCIHIA5SDQAgCSAGQgF8IgZSBEBCACEHDAELIApCAXwiB0IAIAcgDVIbIQpCACEHQgAhBgsgCEIBfCIIIARSDQALIAxCAXwiDCAVUg0ACyALIAMgFnwiA1cEQANAIAMgC30hAwJAIAdCAXwiByAQUg0AQgAhByAGQgF8IgYgD1INACAKQgF8IgxCACAMIBJSGyEKQgAhBgsgAyALWQ0ACwsgE0IBfCITIAlSDQALIBFCAXwiESANUg0ACwwDCwJAAkACQCAcDgIAAgELIA1CAFcNBCAJQgBXDQQgAigCgAEhHCAZIASnIgBsIR4gDiAarX0gBH6nIR8gGEEBRiAEQgNWcSEhIARCAYMhByAJpyAXIBlqIBprbCAAbCEiIARCfIMiBachJCAY/REhMEEAIQIDQAJAAkAgGSAaTg0AIARCAFcNACABKAKAASAnIAanbGohJUIAIQoDQCACIB5qIRcgJSAdIAqnbGohJiAZIQADQCAmIAAgI2xqIRtCACEDAkACQCAhRQRAIBchAgwBCyAXICRqIQL9DAAAAAABAAAAAgAAAAMAAAAhLgNAIBwgFyADp2pBAnRqIBsgMCAu/bUBIi/9GwBq/QwAAAAAAAAAAAAAAAAAAAAA/VUBAAAiMf0bAEECdEHAlgNq/QkCACAbIC/9GwFqIDH9VQEAAiIx/RsBQQJ0QcCWA2oqAgD9IAEgGyAv/RsCaiAx/VUBAAQiMf0bAkECdEHAlgNqKgIA/SACIBsgL/0bA2ogMf1VAQAG/RsDQQJ0QcCWA2oqAgD9IAP9CwIAIC79DAQAAAAEAAAABAAAAAQAAAD9rgEhLiADQgR8IgMgBVINAAsgAiEXIAUiAyAEUQ0BCyADQgGEIQwgB1AEfyACBSAcIAJBAnRqIBsgGCADp2xqLwEAQQJ0QcCWA2oqAgA4AgAgDCEDIAJBAWoLIRcgBCAMUQ0AA0AgHCAXQQJ0aiICIBsgGCADpyIobGovAQBBAnRBwJYDaioCADgCACACIBsgGCAoQQFqbGovAQBBAnRBwJYDaioCADgCBCAXQQJqIRcgA0ICfCIDIARSDQALCyAAQQFqIgAgGkcNAAsgFyAfaiECIAkgCkIBfCIKUg0ACwwBCyACICJqIQILIAZCAXwiBiANUg0ACwwECyAgQfgeNgIoICBB9DQ2AiQgIEGRJDYCIEG4nwIoAgBBiNIAICBBIGoQMgwECyANQgBXDQIgCUIAVw0CIBkgGk4NAiAZIASnIgBsISIgDiAarX0gBH6nISUgGEEBRiAEQg9WcSEoIARCA4MhByACKAKAASIcIABBAXRqISkgCacgFyAZaiAaa2wgAGwhKiAEQniDIgWnISsgIyAkbCAmbCICrSEKIAAgAmpBAWqtIQsgGP0RITEgHa0hDiAnrSERQQAhAkIAIQwDQAJAIARCAFcEQCACICpqIQIMAQsgDCARfiIDIAt8IQ8gAyAKfCEQIAEoAoABIiEgJyAMp2xqISRCACEGA0AgAiAiaiEXICQgHSAGp2xqISYgDyAGIA5+IgN8pyEsIAMgEHynIS1BACEeIBkhAANAICYgACAjbGohG0IAIQgCQAJAIChFBEBCACEDDAELAkAgHCAXQQF0IgJqICEgHiAjbCIfICxqak8NACAhIB8gLWpqIAIgKWpPDQBCACEDDAELIBcgK2ohAv0MBAAAAAUAAAAGAAAABwAAACEu/QwAAAAAAQAAAAIAAAADAAAAIS9CACEDA0AgHCAXIAOnakEBdGogGyAxIC79tQEiMP0bA2ogGyAw/RsCaiAbIDD9GwFqIBsgMP0bAGogGyAxIC/9tQEiMP0bA2ogGyAw/RsCaiAbIDD9GwFqIBsgMP0bAGr9CAEA/VUBAAH9VQEAAv1VAQAD/VUBAAT9VQEABf1VAQAG/VUBAAf9CwEAIC/9DAgAAAAIAAAACAAAAAgAAAD9rgEhLyAu/QwIAAAACAAAAAgAAAAIAAAA/a4BIS4gA0IIfCIDIAVSDQALIAIhFyAFIgMgBFENAQsgBCADQn+FfCESIAdCAFIEQANAIBwgF0EBdGogGyAYIAOnbGovAQA7AQAgA0IBfCEDIBdBAWohFyAIQgF8IgggB1INAAsLIBJCA1QNAANAIBwgF0EBdGoiAiAbIBggA6ciH2xqLwEAOwEAIAIgGyAYIB9BAWpsai8BADsBAiACIBsgGCAfQQJqbGovAQA7AQQgAiAbIBggH0EDamxqLwEAOwEGIBdBBGohFyADQgR8IgMgBFINAAsLIB5BAWohHiAAQQFqIgAgGkcNAAsgFyAlaiECIAZCAXwiBiAJUg0ACwsgDEIBfCIMIA1SDQALDAILQcwHIBx2QQFxBEAgBCAFfyEDIA1CAFcNAiAJQgBXDQIgACgCECAkIASnIh5BEGpsQQJ0aiEAIBxBGGxBtOQAaigCACEcIAIoAoABIR8gFyAZaiAaayAbIAOnbCIbIAmnbGwhJSAZIBtsISEgGyAXIBprbCEiIARCfIMhBSAaIBlrIgJBA3EhJEEAIRggAkEBa0EDSSEmA0ACQCAZIBpOBEAgGCAlaiEYDAELQgAhByAEQgBVBEAgJyAGp2whKANAIBggIWohFyAdIAenbCEpIBkhAgNAIAEoAoABIClqIChqIAIgI2xqIRhCACEDAkAgBEIEWgRAA0AgACADpyIqQQJ0aiAYICpBAXRq/QQBACIu/RsAQQJ0QcCWA2r9CQIAIC79GwFBAnRBwJYDaioCAP0gASAu/RsCQQJ0QcCWA2oqAgD9IAIgLv0bA0ECdEHAlgNqKgIA/SAD/QsCACADQgR8IgMgBVINAAsgBSIDIARRDQELA0AgACADpyIqQQJ0aiAYICpBAXRqLwEAQQJ0QcCWA2oqAgA4AgAgA0IBfCIDIARSDQALCyAAIBcgH2ogHiAcEQUAIBcgG2ohFyACQQFqIgIgGkcNAAsgFyAiaiEYIAdCAXwiByAJUg0ACwwBCwNAIBggIWohGEEAIRcgGSECICQEQANAIAAgGCAfaiAeIBwRBQAgAkEBaiECIBggG2ohGCAXQQFqIhcgJEcNAAsLICZFBEADQCAAIBggH2ogHiAcEQUAIAAgHyAYIBtqIhdqIB4gHBEFACAAIB8gFyAbaiIXaiAeIBwRBQAgACAfIBcgG2oiF2ogHiAcEQUAIBcgG2ohGCACQQRqIgIgGkcNAAsLIBggImohGCAHQgF8IgcgCVINAAsLIAZCAXwiBiANUg0ACwwCCyAgQfgeNgIYICBByjQ2AhQgIEGRJDYCEEG4nwIoAgBBiNIAICBBEGoQMgwCCyANQgBXDQAgCUIAVw0AIAIoAoABIQAgGSAEpyICbCEcIA4gGq19IAR+pyEeIAmnIBcgGWogGmtsIAJsIR8gBEJ8gyIFpyEhQQAhGANAAkACQCAZIBpODQAgBEIAVw0AIAEoAoABICcgBqdsaiEiQgAhBwNAIBggHGohGCAiIB0gB6dsaiEkIBkhAgNAICQgAiAjbGohG0IAIQMCQAJAIARCBFQEQCAYIRcMAQsgGCAhaiEXA0AgACAYIAOnIiVqQQJ0aiAbICVBAXRq/QQBACIu/RsAQQJ0QcCWA2r9CQIAIC79GwFBAnRBwJYDaioCAP0gASAu/RsCQQJ0QcCWA2oqAgD9IAIgLv0bA0ECdEHAlgNqKgIA/SAD/QsCACADQgR8IgMgBVINAAsgFyEYIAUiAyAEUQ0BCyAXIRgDQCAAIBhBAnRqIBsgA6dBAXRqLwEAQQJ0QcCWA2oqAgA4AgAgGEEBaiEYIANCAXwiAyAEUg0ACwsgAkEBaiICIBpHDQALIBggHmohGCAJIAdCAXwiB1INAAsMAQsgGCAfaiEYCyAGQgF8IgYgDVINAAsLICBBkAFqJAAPCxAAAAt/AgJ/An4jAEGgAWsiBCQAIAQgATYCPCAEIAE2AhQgBEF/NgIYIARBEGoiBUIAEIABIAQgBSADQQEQ2AMgBCkDCCEGIAQpAwAhByACBEAgAiABIAQoAhQgBCgCiAFqIAQoAjxrajYCAAsgACAGNwMIIAAgBzcDACAEQaABaiQAC+UBAQl/IAAgAEE9EIAEIgFGBEBBAA8LAkAgACABIABrIgVqLQAADQBBpMArKAIAIgNFDQAgAygCACICRQ0AA0ACQAJ/IAAhAUEAIQZBACAFIgdFDQAaAkAgAS0AACIERQ0AA0ACQCACLQAAIghFDQAgB0EBayIHRQ0AIAQgCEcNACACQQFqIQIgAS0AASEEIAFBAWohASAEDQEMAgsLIAQhBgsgBkH/AXEgAi0AAGsLRQRAIAMoAgAgBWoiAS0AAEE9Rg0BCyADKAIEIQIgA0EEaiEDIAINAQwCCwsgAUEBaiEJCyAJC60UAgt/An4jAEHAAWsiAiQAIAEoAgghCCACQQA7AbwBIAJBADYCuAEgAiAINgK0ASACQQA2ArABAkACQCAIQQJIDQAgAiAIQQV0a0EgaiIMJAAgAkEB/hkAvAEgCEEBayEHA0AgAyAHRg0BIANBAWohBiAMIANBBXRqIQUCfyABKAIQIgNFBEBBACEEQQAMAQsgAygCAEECdCIEQfDmAGo1AgAgAykDKCADKQMgIAMpAxggAykDEH5+fn4gBEGw5wBqNAIAf6chBCADKAKAAQshAyAFQQA2AhggBSADNgIUIAUgBDYCECAFIAg2AgwgBSAGNgIIIAVCgICAgBA3AwAgBSACQbABajYCHCAGIQMgBUEKIAUQggRFDQALIAJBzzU2AogBIAJB9u0ANgKEASACQZEkNgKAAUG4nwIoAgBBiNIAIAJBgAFqEDIMAQsCQAJAAkACQAJAAkAgASgCACIJQQBMDQAgCEECdCEKIAhBA3QhC0EAIQRBACEGA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgASAGQQJ0aigCFCIDKAJADjQKAAEBAgoDCgoKCgoKCgoKCgoKCgMDAwMDAwQFCgAKCgoKCgoKCgUKBQUFCgoGBgcICgoJCwsgAyAINgJkQQAhBUHMByADKAIAdkEBcQRAIAogAygCEGwhBQsgBCAFIAQgBUsbIQQMCgsgAyAINgJkQQAhBUHMByADKAJMIgMoAgB2QQFxBEAgCiADKAIQbCEFCyAEIAUgBCAFSxshBAwJCyADIAg2AmRBACEFQcwHIAMoAkwoAgB2QQFxBEAgCiADKAJQKAIQbCEFCyAEIAUgBCAFSxshBAwICyADIAg2AmQMBwsgAyAINgJkIAQCfwJAAkACQCADKAJMKAIAIgcOAgEAAgsgAygCUCIFKAIADQEgBSkDKCAFKQMgIAUpAxggBSkDEH5+fqdBAXQMAgsgAygCUCgCAA0AQQAMAQtBzAcgB3ZBAXFFDQogAygCUCIDKAIADQogAykDKCADKQMgIAMpAxggAykDECAHQRhsQcTkAGooAgBBAnQiA0Hw5gBqNQIAfn5+fiADQbDnAGo0AgB/pwsiAyADIARJGyEEDAYLIAMgCDYCZAwFCyADIAg2AmQgAygCTCIHKQMoQgFSDQggAygCUCIDKQMgQgFSDQkgAykDKEIBUg0KIAcpAxAhDQJ/AkACQCAHKAIADgIBAA4LIAMoAgANDULg////ByEOQQEMAQsgAygCAA0MQuD///8DIQ5BAgshBSAEIAcpAyAgDX4gBykDGEIffCAOg34gAykDGCADKQMQIA2nQQJtQQF0rXx+fKcgBXQiAyADIARJGyEEDAQLIAMgCDYCZCADKAJQIgUoAhhBA2pBfHEhB0EAIQMCQAJAIAUoAgAOAgAAAQsgByALbCEDCyAEIAMgAyAESRshBAwDCyADIAg2AmRBACEFIAMoAlAiAygCAEEBTQRAIAsgAygCGGwhBQsgBCAFIAQgBUsbIQQMAgsgAkH4HjYCeCACQe3vADYCdCACQZEkNgJwQbifAigCAEGI0gAgAkHwAGoQMgwJCyADQQE2AmQLIAZBAWoiBiAJRw0ACwJAIAEoAhAEQCAEIAEoAgxNDQEgAkH4HjYCGCACQfPvADYCFCACQZEkNgIQQbifAigCAEGI0gAgAkEQahAyDAgLIARFDQAgASAIQQZ0IARqQUBqIgY2AgwgAiAGrTcDmAEgASAAQQpBASACQZgBakEAEDw2AhAgASgCACEJCyAJQQBMDQAgCEEBayEJQQAhCgNAIAEgCkECdGooAhQhBCACQgA3A5gBIAIgBCgCZDYCoAEgAgJ/IAEoAhAiAEUEQCACQQA2AqQBQQAMAQsgAiAAKAIAQQJ0IgZB8OYAajUCACAAKQMoIAApAyAgACkDGCAAKQMQfn5+fiAGQbDnAGo0AgB/PgKkASAAKAKAAQs2AqgBIAJBmAFqIAQQ4gEgBCgCZEECTgRAIAkgAkEB/h4CuAFGBEAgAkEA/hkAvAELA0AgAv4SALwBQQFxDQALIAhBAk4EQCABKAIQIQdBACEGA0AgBkEBaiEDIAQoAmQhCyAMIAZBBXRqIgYCfyAHRQRAQQAhBUEADAELIAcoAgBBAnQiAEHw5gBqNQIAIAcpAyggBykDICAHKQMYIAcpAxB+fn5+IABBsOcAajQCAH+nIQUgBygCgAELNgIUIAYgBTYCECAGIAs2AgwgBiADNgIIIAZBATYCBCAGIAQ2AhggAyIGIAlHDQALCyACQQH+JQK4ARoDQCAC/hACuAFBAEoNAAsgAkEB/hkAvAELIAJBATYCmAEgAkGYAWogBBDiAQJAIAQoAmRBAkgNACAJIAJBAf4eArgBRgRAIAJBAP4ZALwBCwNAIAL+EgC8AUEBcQ0ACyACQQH+JQK4ARoDQCAC/hACuAENAAsgBCgCZEECSA0AIAkgAkEB/h4CuAFGBEAgAkEA/hkAvAELA0AgAv4SALwBQQFxDQALIAhBAk4EQCABKAIQIQdBACEGA0AgBkEBaiEDIAQoAmQhCyAMIAZBBXRqIgYCfyAHRQRAQQAhBUEADAELIAcoAgBBAnQiAEHw5gBqNQIAIAcpAyggBykDICAHKQMYIAcpAxB+fn5+IABBsOcAajQCAH+nIQUgBygCgAELNgIUIAYgBTYCECAGIAs2AgwgBiADNgIIIAZBAjYCBCAGIAQ2AhggAyIGIAlHDQALCyACQQH+JQK4ARoDQCAC/hACuAFBAEoNAAsgAkEB/hkAvAELIAJBAjYCmAEgAkGYAWogBBDiASAEKAJkQQJOBEAgCSACQQH+HgK4AUYEQCACQQD+GQC8AQsDQCAC/hIAvAFBAXENAAsgAkEB/iUCuAEaA0AgAv4QArgBDQALCyAEIAQoAmhBAWo2AmggCkEBaiIKIAEoAgBIDQALCwJAIAhBAUwNACACQQH+GQC9ASACQQH+GQC8ASAIQQJrIQBBACEGA0AgDCAGQQV0aigCABCBBEUEQCAAIAZGIQMgBkEBaiEGIANFDQEMAgsLIAJBzzU2AgggAkGZ8QA2AgQgAkGRJDYCAEG4nwIoAgBBiNIAIAIQMgwGCyABIAEoApSAA0EBajYClIADIAJBwAFqJAAPCyACQfgeNgIoIAJB+e4ANgIkIAJBkSQ2AiBBuJ8CKAIAQYjSACACQSBqEDIMBAsgAkGsNDYCaCACQaPvADYCZCACQZEkNgJgQbifAigCAEGI0gAgAkHgAGoQMgwDCyACQcM0NgJYIAJBpO8ANgJUIAJBkSQ2AlBBuJ8CKAIAQYjSACACQdAAahAyDAILIAJBlTQ2AkggAkGl7wA2AkQgAkGRJDYCQEG4nwIoAgBBiNIAIAJBQGsQMgwBCyACQfgeNgI4IAJBt+8ANgI0IAJBkSQ2AjBBuJ8CKAIAQYjSACACQTBqEDILEAAAC0QBAX8jAEEQayIFJAAgBSABIAIgAyAEQoCAgICAgICAgH+FEG8gBSkDACEBIAAgBSkDCDcDCCAAIAE3AwAgBUEQaiQAC4QBAQJ/IABB7KcCNgIAIAAoAighAQNAIAEEQEEAIAAgAUEBayIBQQJ0IgIgACgCJGooAgAgACgCICACaigCABEFAAwBCwsgACgCHCIBQQRqQX/+HgIARQRAIAEgASgCACgCCBEAAAsgACgCIBAxIAAoAiQQMSAAKAIwEDEgACgCPBAxIAALIAAgACAAKAIYRSABciIBNgIQIAAoAhQgAXEEQBBIAAsLVQECfyMAQRBrIgQkACACIAFrIQUgASACRwRAIAMgASAF/AoAAAsgBCABIAVqNgIMIAQgAyAFajYCCCAAIAQoAgw2AgAgACAEKAIINgIEIARBEGokAAs2AQF/IwBBEGsiAyQAIAMgATYCDCADIAI2AgggACADKAIMNgIAIAAgAygCCDYCBCADQRBqJAALjgEBA38gASgCSCEEIAAgASgCACABKAIIIAFBEGogASgCgAEQPCICIAEoAjA2AjAgAiABKAI0NgI0IAIgASgCODYCOCABKAI8IQMgAkEoNgJAIAIgAzYCPEEAIQMgBARAIAAgAigCACACKAIIIAJBEGpBABA8IQMLIAJBADYCUCACIAE2AkwgAiADNgJIIAILOwEBfyAAQbSmAigCACIBNgIAIAAgAUEMaygCAGpBwKYCKAIANgIAIABBCGoQ5QEaIABB7ABqELACIAALtgEBA38gASgCSCEEIAAgASgCACABKAIIIAFBEGogASgCgAEQPCICIAEoAjA2AjAgAiABKAI0NgI0IAIgASgCODYCOCACIAEoAjw2AjwgAiABKQMYNwMQIAIgASkDEDcDGCACIAEoAjQ2AjAgASgCMCEDIAJBIjYCQCACIAM2AjRBACEDIAQEQCAAIAIoAgAgAigCCCACQRBqQQAQPCEDCyACQQA2AlAgAiABNgJMIAIgAzYCSCACCwwAIABBCGoQsAIgAAsIACAAEKgCGgt8AQJ/IAAgACgCSCIBQQFrIAFyNgJIIAAoAhQgACgCHEcEQCAAQQBBACAAKAIkEQMAGgsgAEEANgIcIABCADcDECAAKAIAIgFBBHEEQCAAIAFBIHI2AgBBfw8LIAAgACgCLCAAKAIwaiICNgIIIAAgAjYCBCABQRt0QR91CzcBAX8gACgCTEEASARAIAAgASACEPQDDwsgABCCASEDIAAgASACEPQDIQIgAwRAIAAQjQELIAIL0gMCAn4CfyMAQSBrIgQkAAJAIAFC////////////AIMiA0KAgICAgIDAgDx9IANCgICAgICAwP/DAH1UBEAgAUIEhiAAQjyIhCEDIABC//////////8PgyIAQoGAgICAgICACFoEQCADQoGAgICAgICAwAB8IQIMAgsgA0KAgICAgICAgEB9IQIgAEKAgICAgICAgAhSDQEgAiADQgGDfCECDAELIABQIANCgICAgICAwP//AFQgA0KAgICAgIDA//8AURtFBEAgAUIEhiAAQjyIhEL/////////A4NCgICAgICAgPz/AIQhAgwBC0KAgICAgICA+P8AIQIgA0L///////+//8MAVg0AQgAhAiADQjCIpyIFQZH3AEkNACAEQRBqIAAgAUL///////8/g0KAgICAgIDAAIQiAiAFQYH3AGsQYyAEIAAgAkGB+AAgBWsQpgEgBCkDCEIEhiAEKQMAIgBCPIiEIQIgBCkDECAEKQMYhEIAUq0gAEL//////////w+DhCIAQoGAgICAgICACFoEQCACQgF8IQIMAQsgAEKAgICAgICAgAhSDQAgAkIBgyACfCECCyAEQSBqJAAgAiABQoCAgICAgICAgH+DhL8LiAIAAkAgAAR/IAFB/wBNDQECQCMDKAJgKAIARQRAIAFBgH9xQYC/A0YNAwwBCyABQf8PTQRAIAAgAUE/cUGAAXI6AAEgACABQQZ2QcABcjoAAEECDwsgAUGAQHFBgMADRyABQYCwA09xRQRAIAAgAUE/cUGAAXI6AAIgACABQQx2QeABcjoAACAAIAFBBnZBP3FBgAFyOgABQQMPCyABQYCABGtB//8/TQRAIAAgAUE/cUGAAXI6AAMgACABQRJ2QfABcjoAACAAIAFBBnZBP3FBgAFyOgACIAAgAUEMdkE/cUGAAXI6AAFBBA8LCyMDQRxqQRk2AgBBfwVBAQsPCyAAIAE6AABBAQvfAgIEfwN+IwBBQGoiBSQAAkACQCABKAIwIgYgASgCACIHQQJ0IghB8OYAaigCAEcNACABNQI0IgkgASkDECILIAatfiAIQbDnAGo0AgB/Ug0AIAE1AjgiCiAJIAEpAxgiCX5SDQAgATUCPCAKIAEpAyAiCn5SDQAgASkDKCAJIAt+IAp+fiACIAN+IAR+Ug0BIAEoAkghCCAFIAQ3AzAgBSADNwMoIAUgAjcDICAAIAdBAyAFQSBqIAEoAoABEDwiBkEfNgJAQQAhByAIBEAgACAGKAIAIAYoAgggBkEQakEAEDwhBwsgBkEANgJQIAYgATYCTCAGIAc2AkggBUFAayQAIAYPCyAFQfXKADYCGCAFQcYsNgIUIAVBkSQ2AhBBuJ8CKAIAQYjSACAFQRBqEDIQAAALIAVB6DA2AgggBUHHLDYCBCAFQZEkNgIAQbifAigCAEGI0gAgBRAyEAAAC+ECAQR/IwBB0AFrIgUkACAFIAI2AswBIAVBoAFqIgJBAEEo/AsAIAUgBSgCzAE2AsgBAkBBACABIAVByAFqIAVB0ABqIAIgAyAEEP0DQQBIBEBBfyEEDAELIAAoAkxBAE4EQCAAEIIBIQYLIAAoAgAhCCAAKAJIQQBMBEAgACAIQV9xNgIACwJ/AkACQCAAKAIwRQRAIABB0AA2AjAgAEEANgIcIABCADcDECAAKAIsIQcgACAFNgIsDAELIAAoAhANAQtBfyAAEMACDQEaCyAAIAEgBUHIAWogBUHQAGogBUGgAWogAyAEEP0DCyECIAcEQCAAQQBBACAAKAIkEQMAGiAAQQA2AjAgACAHNgIsIABBADYCHCAAKAIUIQEgAEIANwMQIAJBfyABGyECCyAAIAAoAgAiASAIQSBxcjYCAEF/IAIgAUEgcRshBCAGRQ0AIAAQjQELIAVB0AFqJAAgBAu6BAIEfQJ/AkACQAJAAn0CQCAAvCIGQf////8HcSIFQcTw1owETwRAIAVBgICA/AdLDQUgBkEASARAQwAAgL8PCyAAQ4BxsUJeRQ0BIABDAAAAf5QPCyAFQZnkxfUDSQ0CIAVBkauU/ANLDQAgBkEATgRAQQEhBUPR9xc3IQEgAEOAcTG/kgwCC0F/IQVD0fcXtyEBIABDgHExP5IMAQsCfyAAQzuquD+UQwAAAD8gAJiSIgGLQwAAAE9dBEAgAagMAQtBgICAgHgLIgWyIgJD0fcXN5QhASAAIAJDgHExv5SSCyIAIAAgAZMiAJMgAZMhAQwBCyAFQYCAgJgDSQ0BQQAhBQsgACAAQwAAAD+UIgOUIgIgAiACQxAwzzqUQ2iICL2SlEMAAIA/kiIEQwAAQEAgBCADlJMiA5NDAADAQCAAIAOUk5WUIQMgBUUEQCAAIAAgA5QgApOTDwsgACADIAGTlCABkyACkyEBAkACQAJAIAVBAWoOAwACAQILIAAgAZNDAAAAP5RDAAAAv5IPCyAAQwAAgL5dBEAgASAAQwAAAD+Sk0MAAADAlA8LIAAgAZMiACAAkkMAAIA/kg8LIAVBF3QiBkGAgID8A2q+IQIgBUE5TwRAIAAgAZNDAACAP5IiACAAkkMAAAB/lCAAIAKUIAVBgAFGG0MAAIC/kg8LQYCAgPwDIAZrviEDIAVBFk0EfUMAAIA/IAOTIAAgAZOSBSAAIAEgA5KTQwAAgD+SCyAClCEACyAACyoBAX8jAEEQayIEJAAgBCADNgIMIAAgASACIAMQ6gEhACAEQRBqJAAgAAvjAQEBfwJAQdSVAygCACIAQQBOBEAgAEUNASMDKAIYIABB/////3txRw0BCwJAQdiVAygCAEEKRg0AQZyVAygCACIAQZiVAygCAEYNAEGclQMgAEEBajYCACAAQQo6AAAPC0GIlQMQ8AEPC0EAQQBB/////wP+SALUlQMEQEGIlQMQggEaCwJAAkBB2JUDKAIAQQpGDQBBnJUDKAIAIgBBmJUDKAIARg0AQZyVAyAAQQFqNgIAIABBCjoAAAwBC0GIlQMQ8AELQQBBAP5BAtSVA0GAgICABHEEQEHUlQNBARCrAQsLkAMBBn8gAC0AAEEPcUUEQCAAQQRqQQBBCv5IAgBBCnEPCwJ/IAAoAgAhAgJAAkACQCMDIgEoAhgiBCAAKAIEIgNB/////wNxIgZHDQACQCACQQhxRQ0AIAAoAhRBAE4NACAAQQA2AhQgA0GAgICABHEhAwwCCyACQQNxQQFHDQBBBiEFIAAoAhQiAUH+////B0sNAiAAIAFBAWo2AhRBAAwDC0E4IQUgBkH/////A0YNAQJAIAYNAEEAIAMgAkEEcRsNACADIABBBGogAyACQYABcQR/IAEoAlBFBEAgAUF0NgJQCyAAKAIIIQYgASAAQRBqNgJUIARBgICAgHhyIAQgBhsFIAQLIANBgICAgARxcv5IAgBGDQEgAUEANgJUIAJBDHFBDEcNACAAKAIIDQILQQoMAgsgASgCTCECIAAgAUHMAGoiBTYCDCAAIAI2AhAgAEEQaiEEIAIgBUcEQCACQQRrIAQ2AgALIAEgBDYCTEEAIQUgAUEANgJUIANFDQAgAEEANgIUQT4MAQsgBQsLOAEBf0HcsysoAgAiAARAQdyzKyAAQQFrNgIADwtB2LMrQQD+FwIAQeCzKygCAARAQdizKxCMAQsLWQECfyMDKAIYIgBB2LMrKAIARwRAQdizK0EAIAD+SAIAIgEEQANAQdizK0HgsysgARDIAUHYsytBACAA/kgCACIBDQALCw8LQdyzK0HcsysoAgBBAWo2AgALWgECfyMAQRBrIgIkACMDIQMgAkEMaiIEBEAgBCADLQAoNgIACyADQQE6ACggACABIAIQ7QEhACACKAIMIgFBAk0EfyMDIAE6AChBAAVBHAsaIAJBEGokACAAC6IMAwZ8A34HfyMAQRBrIg4kAAJAAkAgAb0iCUI0iKciDEH/D3EiD0G+CGsiEEH/fksgAL0iCEI0iKciC0H/D2tBgnBPcQ0AIAlCAYZCgICAgICAgBB8QoGAgICAgIAQVARARAAAAAAAAPA/IQIgCEKAgICAgICA+D9RDQIgCUIBhiIKUA0CIApCgYCAgICAgHBUIAhCAYYiCEKAgICAgICAcFhxRQRAIAAgAaAhAgwDCyAIQoCAgICAgIDw/wBRDQJEAAAAAAAAAAAgASABoiAIQv/////////v/wBWIAlCAFlzGyECDAILIAhCAYZCgICAgICAgBB8QoGAgICAgIAQVARAIAAgAKIhAiAIQgBTBEAgApogAiAJEIYEQQFGGyECCyAJQgBZDQIjAEEQayILRAAAAAAAAPA/IAKjOQMIIAsrAwghAgwCCyAIQgBTBEAgCRCGBCINRQRAIAAgAKEiACAAoyECDAMLIAtB/w9xIQsgDUEBRkESdCENIAhC////////////AIMhCAsgEEH/fk0EQEQAAAAAAADwPyECIAhCgICAgICAgPg/UQ0CIA9BvQdNBEAgASABmiAIQoCAgICAgID4P1YbRAAAAAAAAPA/oCECDAMLIAxBgBBJIAhCgYCAgICAgPg/VEcEQCMAQRBrIgtEAAAAAAAAAHA5AwggCysDCEQAAAAAAAAAcKIhAgwDCyMAQRBrIgtEAAAAAAAAABA5AwggCysDCEQAAAAAAAAAEKIhAgwCCyALDQAgAEQAAAAAAAAwQ6K9Qv///////////wCDQoCAgICAgICgA30hCAsCfCAJQoCAgECDvyIFIQcgDiAIQoCAgIDQqqXzP30iCUI0h6e3IgNB0PwBKwMAoiAJQi2Ip0H/AHFBBXQiC0Go/QFqKwMAoCAIIAlCgICAgICAgHiDfSIIQoCAgIAIfEKAgICAcIO/IgAgC0GQ/QFqKwMAIgSiRAAAAAAAAPC/oCICIAi/IAChIASiIgSgIgAgA0HI/AErAwCiIAtBoP0BaisDAKAiAyAAIAOgIgOhoKAgBCAAQdj8ASsDACIEoiIGIAIgBKIiBKCioCACIASiIgIgAyADIAKgIgKhoKAgACAAIAaiIgOiIAMgAyAAQYj9ASsDAKJBgP0BKwMAoKIgAEH4/AErAwCiQfD8ASsDAKCgoiAAQej8ASsDAKJB4PwBKwMAoKCioCIAIAIgAiAAoCICoaA5AwggByACvUKAgIBAg78iA6IhACABIAWhIAOiIA4rAwggAiADoaAgAaKgIQECQCAAvUI0iKdB/w9xIgtByQdrIgxBP0kNACAMQQBIBEAgAEQAAAAAAADwP6AiAJogACANGwwCCyALQYkISSEMQQAhCyAMDQAgAL1CAFMEQCMAQRBrIgtEAAAAAAAAAJBEAAAAAAAAABAgDRs5AwggCysDCEQAAAAAAAAAEKIMAgsjAEEQayILRAAAAAAAAADwRAAAAAAAAABwIA0bOQMIIAsrAwhEAAAAAAAAAHCiDAELQZi3ASsDACAAokGgtwErAwAiAqAiAyACoSICQbC3ASsDAKIgAkGotwErAwCiIACgoCABoCIAIACiIgEgAaIgAEHQtwErAwCiQci3ASsDAKCiIAEgAEHAtwErAwCiQbi3ASsDAKCiIAO9IgmnQQR0QfAPcSIMQYi4AWorAwAgAKCgoCEAIAxBkLgBaikDACAJIA2tfEIthnwhCCALRQRAAnwgCUKAgICACINQBEAgCEKAgICAgICAiD99vyIBIACiIAGgRAAAAAAAAAB/ogwBCyAIQoCAgICAgIDwP3wiCL8iASAAoiIDIAGgIgCZRAAAAAAAAPA/YwR8IwBBEGsiCyERIAtEAAAAAAAAEAA5AwggESALKwMIRAAAAAAAABAAojkDCCAIQoCAgICAgICAgH+DvyAARAAAAAAAAPC/RAAAAAAAAPA/IABEAAAAAAAAAABjGyICoCIFIAMgASAAoaAgACACIAWhoKCgIAKhIgAgAEQAAAAAAAAAAGEbBSAAC0QAAAAAAAAQAKILDAELIAi/IgEgAKIgAaALIQILIA5BEGokACACC8EBAQN/AkAgASACKAIQIgMEfyADBSACEMACDQEgAigCEAsgAigCFCIFa0sEQCACIAAgASACKAIkEQMADwsCQCACKAJQQQBIBEBBACEDDAELIAEhBANAIAQiA0UEQEEAIQMMAgsgACADQQFrIgRqLQAAQQpHDQALIAIgACADIAIoAiQRAwAiBCADSQ0BIAAgA2ohACABIANrIQEgAigCFCEFCyAFIAAgARB8GiACIAIoAhQgAWo2AhQgASADaiEECyAEC1kBAX8gACAAKAJIIgFBAWsgAXI2AkggACgCACIBQQhxBEAgACABQSByNgIAQX8PCyAAQgA3AgQgACAAKAIsIgE2AhwgACABNgIUIAAgASAAKAIwajYCEEEAC5IBAQN8RAAAAAAAAPA/IAAgAKIiAkQAAAAAAADgP6IiA6EiBEQAAAAAAADwPyAEoSADoSACIAIgAiACRJAVyxmgAfo+okR3UcEWbMFWv6CiRExVVVVVVaU/oKIgAiACoiIDIAOiIAIgAkTUOIi+6fqovaJExLG0vZ7uIT6gokStUpyAT36SvqCioKIgACABoqGgoAvnCgEGfyMAQUBqIgUkACAAIAEgAiADEMMCIQYCQCAEKwMgIAMrAyBkRQ0AIAUgAy0ACDoAOCAFIAMpAwA3AzAgAygCFCEIIAMoAhAhCSADQgA3AxAgAygCGCEKIANBADYCGCAFIAMoAkQ2AiggBSADKQI8NwMgIAUgA/0AAiz9CwMQIAUgA/0AAhz9CwMAIAMgBCkDADcDACADIAQtAAg6AAggAyAEKAIQNgIQIAMgBCgCFDYCFCADIAQoAhg2AhggBEEANgIYIARBADYCECADIAQoAkQ2AkQgAyAEKQI8NwI8IAMgBP0AAiz9CwIsIAMgBP0AAhz9CwIcIAQgBSkDMDcDACAEIAUtADg6AAggBCgCECIHBEAgBCAHNgIUIAcQMQsgBCAKNgIYIAQgCDYCFCAEIAk2AhAgBCAFKAIoNgJEIAQgBSkDIDcCPCAEIAX9AAMQ/QsCLCAEIAX9AAMA/QsCHCADKwMgIAIrAyBkRQRAIAZBAWohBgwBCyAFIAItAAg6ADggBSACKQMANwMwIAIoAhQhByACKAIQIQggAkIANwMQIAIoAhghCSACQQA2AhggBSACKAJENgIoIAUgAikCPDcDICAFIAL9AAIs/QsDECAFIAL9AAIc/QsDACACIAMpAwA3AwAgAiADLQAIOgAIIAIgAygCEDYCECACIAMoAhQ2AhQgAiADKAIYNgIYIANBADYCGCADQQA2AhAgAiADKAJENgJEIAIgAykCPDcCPCACIAP9AAIs/QsCLCACIAP9AAIc/QsCHCADIAUtADg6AAggAyAFKQMwNwMAIAMoAhAiBARAIAMgBDYCFCAEEDELIAMgCTYCGCADIAc2AhQgAyAINgIQIAMgBSgCKDYCRCADIAUpAyA3AjwgAyAF/QADEP0LAiwgAyAF/QADAP0LAhwgAisDICABKwMgZEUEQCAGQQJqIQYMAQsgBSABLQAIOgA4IAUgASkDADcDMCABKAIUIQQgASgCECEHIAFCADcDECABKAIYIQggAUEANgIYIAUgASgCRDYCKCAFIAEpAjw3AyAgBSAB/QACLP0LAxAgBSAB/QACHP0LAwAgASACKQMANwMAIAEgAi0ACDoACCABIAIoAhA2AhAgASACKAIUNgIUIAEgAigCGDYCGCACQQA2AhggAkEANgIQIAEgAigCRDYCRCABIAIpAjw3AjwgASAC/QACLP0LAiwgASAC/QACHP0LAhwgAiAFLQA4OgAIIAIgBSkDMDcDACACKAIQIgMEQCACIAM2AhQgAxAxCyACIAg2AhggAiAENgIUIAIgBzYCECACIAUoAig2AkQgAiAFKQMgNwI8IAIgBf0AAxD9CwIsIAIgBf0AAwD9CwIcIAErAyAgACsDIGRFBEAgBkEDaiEGDAELIAUgAC0ACDoAOCAFIAApAwA3AzAgACgCFCECIAAoAhAhAyAAQgA3AxAgACgCGCEEIABBADYCGCAFIAAoAkQ2AiggBSAAKQI8NwMgIAUgAP0AAiz9CwMQIAUgAP0AAhz9CwMAIAAgASkDADcDACAAIAEtAAg6AAggACABKAIQNgIQIAAgASgCFDYCFCAAIAEoAhg2AhggAUEANgIYIAFBADYCECAAIAEoAkQ2AkQgACABKQI8NwI8IAAgAf0AAiz9CwIsIAAgAf0AAhz9CwIcIAEgBS0AODoACCABIAUpAzA3AwAgASgCECIABEAgASAANgIUIAAQMQsgASAENgIYIAEgAjYCFCABIAM2AhAgASAFKAIoNgJEIAEgBSkDIDcCPCABIAX9AAMQ/QsCLCABIAX9AAMA/QsCHCAGQQRqIQYLIAVBQGskACAGC5QIAQZ/IwBBQGoiBCQAIAAgASACEL0BIQUCQCADKwMgIAIrAyBkRQ0AIAQgAi0ACDoAOCAEIAIpAwA3AzAgAigCFCEHIAIoAhAhCCACQgA3AxAgAigCGCEJIAJBADYCGCAEIAIoAkQ2AiggBCACKQI8NwMgIAQgAv0AAiz9CwMQIAQgAv0AAhz9CwMAIAIgAykDADcDACACIAMtAAg6AAggAiADKAIQNgIQIAIgAygCFDYCFCACIAMoAhg2AhggA0EANgIYIANBADYCECACIAMoAkQ2AkQgAiADKQI8NwI8IAIgA/0AAiz9CwIsIAIgA/0AAhz9CwIcIAMgBCkDMDcDACADIAQtADg6AAggAygCECIGBEAgAyAGNgIUIAYQMQsgAyAJNgIYIAMgBzYCFCADIAg2AhAgAyAEKAIoNgJEIAMgBCkDIDcCPCADIAT9AAMQ/QsCLCADIAT9AAMA/QsCHCACKwMgIAErAyBkRQRAIAVBAWohBQwBCyAEIAEtAAg6ADggBCABKQMANwMwIAEoAhQhBiABKAIQIQcgAUIANwMQIAEoAhghCCABQQA2AhggBCABKAJENgIoIAQgASkCPDcDICAEIAH9AAIs/QsDECAEIAH9AAIc/QsDACABIAIpAwA3AwAgASACLQAIOgAIIAEgAigCEDYCECABIAIoAhQ2AhQgASACKAIYNgIYIAJBADYCGCACQQA2AhAgASACKAJENgJEIAEgAikCPDcCPCABIAL9AAIs/QsCLCABIAL9AAIc/QsCHCACIAQtADg6AAggAiAEKQMwNwMAIAIoAhAiAwRAIAIgAzYCFCADEDELIAIgCDYCGCACIAY2AhQgAiAHNgIQIAIgBCgCKDYCRCACIAQpAyA3AjwgAiAE/QADEP0LAiwgAiAE/QADAP0LAhwgASsDICAAKwMgZEUEQCAFQQJqIQUMAQsgBCAALQAIOgA4IAQgACkDADcDMCAAKAIUIQIgACgCECEDIABCADcDECAAKAIYIQYgAEEANgIYIAQgACgCRDYCKCAEIAApAjw3AyAgBCAA/QACLP0LAxAgBCAA/QACHP0LAwAgACABKQMANwMAIAAgAS0ACDoACCAAIAEoAhA2AhAgACABKAIUNgIUIAAgASgCGDYCGCABQQA2AhggAUEANgIQIAAgASgCRDYCRCAAIAEpAjw3AjwgACAB/QACLP0LAiwgACAB/QACHP0LAhwgASAELQA4OgAIIAEgBCkDMDcDACABKAIQIgAEQCABIAA2AhQgABAxCyABIAY2AhggASACNgIUIAEgAzYCECABIAQoAig2AkQgASAEKQMgNwI8IAEgBP0AAxD9CwIsIAEgBP0AAwD9CwIcIAVBA2ohBQsgBEFAayQAIAULSAEBfyAAQbCWATYCACAAKAIIIgEEQCABIAEoAgAoAgQRAAALIABBzIwBNgIAIAAoAgQiAQRAIAEgASgCACgCBBEAAAsgABAxC+ELAQt/AkACQAJAAkACQAJAIAAtAFkEQCAAKAIMIgMgASADKAIAKAIUEQQAIQggACgCDCIBIAIgASgCACgCFBEEACECIAAoAjwiAyAAQUBrKAIAIgRJBEAgAyAIQf8BcSACQQh0cjsAAAwHCyADIAAoAjgiCWsiAUF9TA0CQf////8HIAQgCWsiBCABQQF1IgVBAWoiBiAEIAZLGyAEQf7///8HTxsiBgR/IAZBAEgNBCAGQQF0EDMFQQALIQcgByAFQQF0aiIEIAhB/wFxIAJBCHRyOwAAIARBAmohCiADIAlHBEACQAJAIAFBAmsiAkEeSQ0AIAMgAUF+cSAHamtBEEkNACACQQF2IgFBAWoiC0F4cSEIIAFBB2siAkEDdkEBaiIFQQFxIQxBACEBIAJBCE8EQCAFQf7///8DcSENQQAhAgNAIAQgAkEBdCIFa0EQayADIAVrQRBr/QAAAP0LAAAgBCAFQRByIgVrQRBrIAMgBWtBEGv9AAAA/QsAACACQRBqIQIgAUECaiIBIA1HDQALQQAgAkEBdGshAQsgDARAIAEgBGpBEGsgASADakEQa/0AAAD9CwAACyAEIAhBAXQiAWshBCAIIAtGDQEgAyABayEDCwNAIARBAmsiBCADQQJrIgMvAAA7AAAgAyAJRw0ACwsgACgCOCEDCyAAIAcgBkEBdGo2AkAgACAKNgI8IAAgBDYCOCADRQ0BIAMQMQ8LIABBQGsoAgAhBCAAKAI8IQMCQCAALQBaBEAgAyAESQ0GIAMgACgCOCIJayIGQX1MDQVB/////wcgBCAJayIEIAZBAXUiBUEBaiIHIAQgB0sbIARB/v///wdPGyIHBH8gB0EASA0FIAdBAXQQMwVBAAshCCAIIAVBAXRqIgQgAUH/AXEgAkEIdHI7AAAgBEECaiEKIAMgCUcEQAJAAkAgBkECayIBQR5JDQAgAyAGQX5xIAhqa0EQSQ0AIAFBAXYiAUEBaiILQXhxIQYgAUEHayICQQN2QQFqIgVBAXEhDEEAIQEgAkEITwRAIAVB/v///wNxIQ1BACECA0AgBCACQQF0IgVrQRBrIAMgBWtBEGv9AAAA/QsAACAEIAVBEHIiBWtBEGsgAyAFa0EQa/0AAAD9CwAAIAJBEGohAiABQQJqIgEgDUcNAAtBACACQQF0ayEBCyAMBEAgASAEakEQayABIANqQRBr/QAAAP0LAAALIAQgBkEBdCIBayEEIAYgC0YNASADIAFrIQMLA0AgBEECayIEIANBAmsiAy8AADsAACADIAlHDQALCyAAKAI4IQMLIAAgCCAHQQF0ajYCQCAAIAo2AjwgACAENgI4IAMNAQwCCyADIARJDQUgAyAAKAI4IglrIgZBfUwNBEH/////ByAEIAlrIgQgBkEBdSIFQQFqIgcgBCAHSxsgBEH+////B08bIgcEfyAHQQBIDQQgB0EBdBAzBUEACyEIIAggBUEBdGoiBCABQf8BcSACQQh0cjsAACAEQQJqIQogAyAJRwRAAkACQCAGQQJrIgFBHkkNACADIAZBfnEgCGprQRBJDQAgAUEBdiIBQQFqIgtBeHEhBiABQQdrIgJBA3ZBAWoiBUEBcSEMQQAhASACQQhPBEAgBUH+////A3EhDUEAIQIDQCAEIAJBAXQiBWtBEGsgAyAFa0EQa/0AAAD9CwAAIAQgBUEQciIFa0EQayADIAVrQRBr/QAAAP0LAAAgAkEQaiECIAFBAmoiASANRw0AC0EAIAJBAXRrIQELIAwEQCABIARqQRBrIAEgA2pBEGv9AAAA/QsAAAsgBCAGQQF0IgFrIQQgBiALRg0BIAMgAWshAwsDQCAEQQJrIgQgA0ECayIDLwAAOwAAIAMgCUcNAAsLIAAoAjghAwsgACAIIAdBAXRqNgJAIAAgCjYCPCAAIAQ2AjggA0UNAQsgAxAxCw8LEEQACxBbAAsQRAALIAMgAUH/AXEgAkEIdHI7AAALIAAgA0ECajYCPAvrAwEDfwJAAkAgASACRg0AAkACQAJAAkACQAJAAkACQAJAIAEsAAAiBEEiaw5VAAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgIAQIICAgDCAgICAgICAQICAgFCAYIBwgLAkAgAwRAIAMgBBBWDAELIAAgBBBVCwwJCwJAIAMEQCADQQcQVgwBCyAAQQcQVQsMCAsCQCADBEAgA0EIEFYMAQsgAEEIEFULDAcLAkAgAwRAIANBDBBWDAELIABBDBBVCwwGCwJAIAMEQCADQQoQVgwBCyAAQQoQVQsMBQsCQCADBEAgA0ENEFYMAQsgAEENEFULDAQLAkAgAwRAIANBCRBWDAELIABBCRBVCwwDCwJAIAMEQCADQQsQVgwBCyAAQQsQVQsMAgsgBEF4cUEwRw0AIARBMGshBQJAIAFBAWoiBCACRg0AIAQtAAAiBkH4AXFBMEcEQCAEIQIMAQsgBUEDdCAGakEwayEFIAFBAmoiBCACRg0AIAQtAAAiBkH4AXFBMEcEQCAEIQIMAQsgAUEDaiECIAVBA3QgBmpBMGshBQsgAwRAIAMgBcAQViACDwsgACAFwBBVIAIPCxD2AQALIAFBAWoLxQIBBH8jAEEQayIEJAAgAyACayIGQfD///8HSQRAAkAgBkEKTQRAIAQgBjoACyAEIQUMAQsgBkEPckEBaiIHEDMhBSAEIAdBgICAgHhyNgIIIAQgBTYCACAEIAY2AgQLIAIgA0cEfyAFIAIgBvwKAAAgBSAGagUgBQtBADoAACAAIAEoAggiBSAEKAIAIAQgBC0ACyIDwEEASCICGyIBIAEgBCgCBCADIAIbaiAFKAIAKAIQEQcAAkACQAJAIAAoAgQgAC0ACyIBIAHAIgJBAEgiARtBAWsODAIBAQEBAQEBAQEBAAELIAAoAgAgACABGyIAIAAtAAM6AAsMAQsgAkEASARAIAAoAgBBADoAACAAQQA2AgQMAQsgAEEAOgALIABBADoAAAsgBCwAC0EASARAIAQoAgAQMQsgBEEQaiQADwsQTAAL+AUBB38jAEEgayIEJAAgAyACayIFQfD///8HSQRAAkAgBUEKTQRAIAQgBToAGyAEQRBqIQYMAQsgBUEPckEBaiIHEDMhBiAEIAdBgICAgHhyNgIYIAQgBjYCECAEIAU2AhQLIAIgA0cEfyAGIAIgBfwKAAAgBSAGagUgBgtBADoAACAAQQA2AgggAEIANwIAAkACQCAEKAIUIAQtABsiAiACwEEASCICG0UNACAEKAIQIARBEGogAhshByMAQRBrIgYkACAGIAc2AgwgBkEMaiEKIwBBEGsiAyQAQYD9AiECQe8AIQUDQCAFBEAgAyACNgIMIAMgAygCDCAFQQF2IglBA3RqNgIMIAMoAgwiCEEIaiACIAggChD3AiIIGyECIAUgCUF/c2ogCSAIGyEFDAELCyADQRBqJAAjAEEQayIDJAAgBEIANwIAIARBADYCCCADQRBqJAAgBCEDAkAgAkH4gwNGDQAgByACKAIAEJwBDQAgAyACLAAEEFYLIAZBEGokACAAIAQoAgg2AgggACAEKQMANwIAIAAoAgQgAC0ACyICIALAIgJBAEgbDQAgBCgCFCAELQAbIgMgA8BBAEgiAxsiBUECSw0AIAQgASgCCCIBIAQoAhAgBEEQaiADGyIDIAMgBWogASgCACgCEBEHACACQQBIBEAgACgCABAxCyAAIAQpAwA3AgAgACAEKAIINgIIAkACQCAAKAIEIAAtAAsiASABwCIBQQBIG0EBaw4MAAEBAQEBAQEBAQEAAQsgBEEQaiAARg0BIAQtABsiA8AhAiABQQBOBEAgAkEATgRAIAAgBCkDEDcCACAAIAQoAhg2AggMBAsgACAEKAIQIAQoAhQQ1AEMAgsgACAEKAIQIARBEGogAkEASCIAGyAEKAIUIAMgABsQ1QEMAQsgAUEASARAIAAoAgBBADoAACAAQQA2AgQMAQsgAEEAOgALIABBADoAAAsgBCwAG0EATg0AIAQoAhAQMQsgBEEgaiQADwsQTAALkwICA38BfgJAIAAoAgwiAkEBcQRAQRgQMyECIAAoAiQoAgQhAyACQeSRATYCACACIAM2AgQgAkEIaiAAKAIAIgM2AgAgA0EEakEB/h4CABogACkCBCEFIAIgATYCFCACIAU3AgwgACgCJCACNgIEDAELIAJBCHEEQEEYEDMhAiAAKAIkKAIEIQMgAkG8kgE2AgAgAiADNgIEIAJBCGogACgCACIDNgIAIANBBGpBAf4eAgAaIAApAgQhBSACIAE2AhQgAiAFNwIMIAAoAiQgAjYCBAwBC0EMEDMhAiAAKAIkIgMoAgQhBCACIAE2AgggAkGYkwE2AgAgAiAENgIEIAMgAjYCBAsgACAAKAIkKAIENgIkCxMAQQwQAkEQEG5BkIUDQScQAQALEwBBDBACQQwQbkGQhQNBJxABAAvsBAEMfyAAIAH9AAIA/QsCACAAQQA2AhggAEIANwIQIAEoAhQiAiABKAIQIgRrIgVBDG0hAwJAAkAgAiAERwRAIANB1qrVqgFPDQEgACAFEDMiAjYCFCAAIAI2AhAgACACIANBDGxqNgIYIAEoAhAiAyABKAIUIgRHBEADQCACIAMpAgA3AgAgAiADKAIINgIIIAJBDGohAiADQQxqIgMgBEcNAAsLIAAgAjYCFAsgAEIANwIcIABBADYCJCABKAIgIgIgASgCHCIDRwRAIAIgA2siA0EASA0CIAAgAxAzIgI2AiAgACACNgIcIAAgAiADQXhxajYCJAJAIAEoAhwiAyABKAIgIghGDQACQCAIIANrQQhrIgRBGEkNACACIANrQRBJDQAgBEEDdiIEQQFqIgxB/v///wNxIQkgBEEBayIFQQF2QQFqIgZBA3EhCkEAIQQgBUEGTwRAIAZBfHEhDUEAIQYDQCACIARBA3QiBWogAyAFav0AAgD9CwIAIAIgBUEQciIHaiADIAdq/QACAP0LAgAgAiAFQSByIgdqIAMgB2r9AAIA/QsCACACIAVBMHIiBWogAyAFav0AAgD9CwIAIARBCGohBCAGQQRqIgYgDUcNAAsLIAoEQANAIAIgBEEDdCIFaiADIAVq/QACAP0LAgAgBEECaiEEIAtBAWoiCyAKRw0ACwsgCUEDdCIEIAJqIQIgCSAMRg0BIAMgBGohAwsDQCACIAMpAgA3AgAgAkEIaiECIANBCGoiAyAIRw0ACwsgACACNgIgCyAAIAEpAig3AiggACABLQAwOgAwIAAPCxBEAAsQRAALkAIBB38gASAAKAIIIgMgACgCBCICa0EDdU0EQCAAIAEEfyACQQAgAUEDdCIA/AsAIAAgAmoFIAILNgIEDwsCQCACIAAoAgAiBWtBA3UiByABaiIEQYCAgIACSQRAQf////8BIAMgBWsiA0ECdSIIIAQgBCAISRsgA0H4////B08bIgMEQCADQYCAgIACTw0CIANBA3QQMyEGCyAHQQN0IAZqIgRBACABQQN0IgH8CwAgASAEaiEBIAIgBUcEQANAIARBCGsiBCACQQhrIgIpAgA3AgAgAiAFRw0ACyAAKAIAIQILIAAgBiADQQN0ajYCCCAAIAE2AgQgACAENgIAIAIEQCACEDELDwsQRAALEFsAC+8LAQh/IwBB4ABrIgYkACAGQQA2AlggBkIANwNQAn8CQCAAKAIcIgxFDQAgBkEAOgBIIAYgAjYCRCAGIAI2AkAgBv0MAAAAAAAAAAAAAAAAAAAAAP0LAyggBv0MAAAAAAAAAAAAAAAAAAAAAP0LAxggBv0MAAAAAAAAAAAAAAAAAAAAAP0LAwggBkHQAGogBkEIahD3ASAGKAIkIgcEQCAGIAc2AiggBxAxCyAGKAIYIgcEQCAGIAc2AhwgBxAxCyAGKAJUIghBNGsiB0EANgIAIAcgAjYCDCAHIAE2AgggByABNgIEAkAgACgCECIJIAcoAhQgB0EQaiILKAIAIg1rQQxtIgpLBEAgCyAJIAprIAZBQGsQoAQgBigCVCEIDAELIAkgCk8NACAHIA0gCUEMbGo2AhQLAkAgACgCFCIAIAhBNGsiByIJKAIgIAdBHGoiCigCACILa0EDdSIHSwRAIAogACAHaxDNAiAGKAJUIQgMAQsgACAHTw0AIAkgCyAAQQN0ajYCIAsgCEE0ayIAIAU6ADAgACAENgIsIAAgDDYCKCAEQYAgcSEJIARBIHEhCiACIAFrIQtBACEAAkACQANAIABBAWoiAEH/H3FFIABBDHYgC05xDQEgCEE0ayIEKAIoIgUEQCAFIAQgBSgCACgCCBECAAsCQAJAAkACQCAEKAIAQegHag4KAAYGBgYDAwIBAwYLIAhBLGsoAgAhBAJAIApFDQAgASAERw0AIAYoAlQiBEEYaygCACIFBEAgBEEUayAFNgIAIAUQMQsgBEEkaygCACIFBEAgBEEgayAFNgIAIAUQMQsgBiAEQTRrNgJUDAMLAkAgCUUNACACIARGDQAgBigCVCIEQRhrKAIAIgUEQCAEQRRrIAU2AgAgBRAxCyAEQSRrKAIAIgUEQCAEQSBrIAU2AgAgBRAxCyAGIARBNGs2AlQMAwsgAygCACIAQQE6AAggACAENgIEIAAgATYCAAJAIAhBNGsiASgCFCIDIAEoAhAiAkYNAEEBIAMgAmtBDG0iAyADQQFNGyIEQQFxIQdBACEBIANBAk8EQCAEQX5xIQhBACEFA0AgACABQQFyQQxsIglqIgMgAiABQQxsIgpqIgQoAgA2AgAgAyAEKAIENgIEIAMgBC0ACDoACCAAIApqIgMgAiAJaiIEKAIANgIYIAMgBCgCBDYCHCADIAQtAAg6ACAgAUECaiEBIAVBAmoiBSAIRw0ACwsgB0UNACABQQxsIgEgAGoiACABIAJqIgEoAgA2AgwgACABKAIENgIQIAAgAS0ACDoAFAsgBigCUCEHDAYLIAZBCGogBBDMAiEFIAQoAigiB0EBIAQgBygCACgCDBEFACAGKAIwIgRBACAFIAQoAgAoAgwRBQACQCAGKAJUIgQgBigCWEkEQCAEIAX9AAIA/QsCACAE/QwAAAAAAAAAAAAAAAAAAAAA/QsCECAEIAYoAhg2AhAgBCAGKAIcNgIUIAYoAiAhBSAEQgA3AiAgBCAFNgIYIAQgBigCJDYCHCAEIAYoAig2AiAgBCAGKAIsNgIkIAZCADcDKCAG/QwAAAAAAAAAAAAAAAAAAAAA/QsDGCAEIAYtADg6ADAgBCAGKQIwNwIoIAYgBEE0ajYCVAwBCyAGQdAAaiAFEPcBIAYoAiQiBEUNACAGIAQ2AiggBBAxCyAGKAIYIgRFDQEgBiAENgIcIAQQMQwBCyAGKAJUIgRBGGsoAgAiBQRAIARBFGsgBTYCACAFEDELIARBJGsoAgAiBQRAIARBIGsgBTYCACAFEDELIAYgBEE0azYCVAsgBigCUCIHIAYoAlQiCEcNAAtBAAwDCxDLAgALEMoCAAsgDEEARwshAyAHBEAgBigCVCIBIAciAEcEQANAIAFBNGsiACgCHCICBEAgAUEUayACNgIAIAIQMQsgAUEkaygCACICBEAgAUEgayACNgIAIAIQMQsgACIBIAdHDQALIAYoAlAhAAsgBiAHNgJUIAAQMQsgBkHgAGokACADC8IBAQR/QQgQMyEHIAAoAiQiBSgCBCEGIAdBuIsBNgIAIAcgBjYCBCAFQQA2AgRBJBAzIQUgACgCFCEGIAIoAgQhCCAFIAc2AgggBSAINgIEIAVBADoAICAFIAQ2AhwgBSADNgIYIAUgBjYCFCAFQX82AhAgBSABNgIMIAVBzJUBNgIAIAJBADYCBEEIEDMiAUHIlgE2AgAgASAFNgIEIAAoAiQgATYCBCAAIAUoAgg2AiQgAiAFNgIEIAAgBkEBajYCFAvCAQEEf0EIEDMhCCAAKAIkIgYoAgQhByAIQbiLATYCACAIIAc2AgQgBkEANgIEQSQQMyEGIAAoAhQhByADKAIEIQkgBiAINgIIIAYgCTYCBCAGQQA6ACAgBiAFNgIcIAYgBDYCGCAGIAc2AhQgBiACNgIQIAYgATYCDCAGQcyVATYCACADQQA2AgRBCBAzIgFByJYBNgIAIAEgBjYCBCAAKAIkIAE2AgQgACAGKAIINgIkIAMgBjYCBCAAIAdBAWo2AhQLpx8CEH8BfgJAAkAgASACRg0AIAEtAABB2wBHDQAgAUEBaiIEIAJGDQEgAS0AASEJQdwAEDMgACAAKAIkKAIEIAlB3gBGIgMgACgCDCIJQQFxIAlBCHFBA3YQrgEhCiAAKAIkIAo2AgQgACAKNgIkIAFBAmogBCADGyIDIAJGDQECQCAAKAIMQfAHcUGABEYNACADLQAAQd0ARw0AIApB3QAQoAEgA0EBaiEDCyACIANGDQEDQEEAIQ8jAEFAaiIGJAACQAJAIAMiASACIglGDQAgAy0AACIEQd0ARg0AIAZBADYCOCAGQgA3AzACQAJAAkACQAJAIANBAWogCUYNACAEQdsARw0AAkACQCADLQABQS5rDhADAgICAgICAgICAgIBAgIAAgsCfyMAQSBrIg0kAAJAAkAgCSILIANBAmoiDGsiCUECSA0AIAkgDGpBAWsiByAMRg0AIAwhCQNAIAlBAWohBCAJLQAAQT1GBEAgBC0AAEHdAEcEQCAEIgkgB0cNAgwDCyAJIAtGDQIgDUEQaiAAIAwgCRDIAiANKAIUIA0tABsiBCAEwEEASCIEGyILRQ0DIA0gACANKAIQIA1BEGogBBsiBCAEIAtqEMcCAkACQCANKAIEIgsgDS0ACyIEIATAIgRBAEgbBEAgCigCSCIMIAooAkxGDQECQCAEQQBOBEAgDCANKQMANwIAIAwgDSgCCDYCCAwBCyAMIA0oAgAgCxBtCyAKIAxBDGo2AkgMAgsCQAJAIA0oAhQgDS0AGyIEIATAQQBIIgQbQQFrDgIAAQcLIAogDSgCECANQRBqIAQbLAAAEKABDAILIAogDSgCECANQRBqIAQbIgQsAAAgBCwAARDFAgwBC0EAIQUCQAJAAkAgCigCSCIEIAooAkQiB2tBDG0iCEEBaiIOQdaq1aoBSQRAQdWq1aoBIAooAkwgB2tBDG0iDEEBdCILIA4gCyAOSxsgDEGq1arVAE8bIgsEQCALQdaq1aoBTw0CIAtBDGwQMyEFCyALQQxsIQsgBSAIQQxsaiEIAkAgDSwAC0EATgRAIAggDSkCADcCACAIIA0oAgg2AggMAQsgCCANKAIAIA0oAgQQbSAKKAJEIQcgCigCSCEECyAFIAtqIQwgCEEMaiELIAQgB0YNAgNAIAhBDGsiCCAEQQxrIgQpAgA3AgAgCCAEKAIINgIIIARCADcCACAEQQA2AgggBCAHRw0ACyAKIAw2AkwgCigCSCEEIAogCzYCSCAKKAJEIQcgCiAINgJEIAQgB0YNAwNAIARBDGshCyAEQQFrLAAAQQBIBEAgCygCABAxCyALIgQgB0cNAAsMAwsQRAALEFsACyAKIAw2AkwgCiALNgJIIAogCDYCRAsgBwRAIAcQMQsLIA0sAAtBAEgEQCANKAIAEDELIA0sABtBAEgEQCANKAIQEDELIA1BIGokACAJQQJqDAQLIAQiCSAHRw0ACwsQ9AEACxCbBAALIQkMBQsCfwJAAkAgCSILIANBAmoiDGsiCUECSA0AIAkgDGpBAWsiByAMRg0AIAwhCQNAIAlBAWohBCAJLQAAQTpGBEAgBC0AAEHdAEcEQCAEIgkgB0cNAgwDCyAJIAtGDQICfyAAKAIMQQFxIQ4jAEEQayIEJAAgCSAMayIIQfD///8HSQRAAkAgCEEKTQRAIAQgCDoACyAEIQcMAQsgCEEPckEBaiILEDMhByAEIAtBgICAgHhyNgIIIAQgBzYCACAEIAg2AgQLIAkgDEcEfyAHIAwgCPwKAAAgByAIagUgBwtBADoAACAAKAIEIgggBCgCACAEIAQtAAsiB8BBAEgiDBsiCyALIAQoAgQgByAMG2ogCCgCACgCGBEDABogBCgCACAEIAQsAAtBAEgbIQhBACENIwBBEGsiBSQAIAUgCDYCDCAFQQxqIQwjAEEQayIRJABBgIQDIRBBDyESA0AgEgRAIBEgEDYCDCARIBEoAgwgEkEBdiIHQQN0ajYCDCARKAIMIgtBCGogECALIAwQ9wIiCxshECASIAdBf3NqIAcgCxshEgwBCwsgEUEQaiQAAkAgEEH4hANGDQAgCCAQKAIAEJwBDQBB+AggECgCBCIMIAxBgAhGIgsbIQ0gCw0AIA5FDQAgDEEgciAMIAxBGHEbIQ0LIAVBEGokACAELAALQQBIBEAgBCgCABAxCyAEQRBqJAAgDQwBCxBMAAsiBEUNAyAKIAooAlAgBHI2AlAgCUECagwECyAEIgkgB0cNAAsLEPQBAAtBDBACQQIQbkGQhQNBJxABAAshCQwECyAAKAIMQfAHcSEIDAELIAAgA0ECaiAJIAZBMGoQnQQhAyAAKAIMQfAHcSEIIAYoAjQgBi0AOyIEIATAQQBIGw0BCwJAAkAgCEHAAEYNACAIQYAERg0AIAMtAAAhDwwBCyADLQAAIg9B3ABHDQAgA0EBaiEDIAhBgARGBEAgACADIAkgBkEwaiAKEJwEIQNBgAQhCAwCCyAAIAMgCSAGQTBqEMYCIQMMAQsgBkEwaiAPwBBWIANBAWohAwsCQAJAAkACQCADIAlGDQAgAy0AACIEQd0ARg0AQQEhDwJAIANBAWogCUYNACAEQS1HDQAgAy0AAUHdAEYNACAGQQA2AiggBkIANwMgAkAgA0ECaiIEIAlGDQAgAy0AAUHbAEcNACAELQAAQS5HDQAgACADQQNqIAkgBkEgahCdBCEEDAQLAkAgCEHAAEYNACAIQYAERg0AIAMtAAEhAwwDCyADLQABIgNB3ABHDQIgCEGABEYEQCAAIAQgCSAGQSBqIAoQnAQhBAwECyAAIAQgCSAGQSBqEMYCIQQMAwsCQAJAIAYoAjQgBi0AOyIEIATAQQBIIgQbDgIGAAELIAogBigCMCAGQTBqIAQbLAAAEKABDAQLIAogBigCMCAGQTBqIAQbIgksAAAgCSwAARDFAgwDC0EBIQ8CQAJAIAYoAjQgBi0AOyIEIATAQQBIIgQbDgIFAAELIAogBigCMCAGQTBqIAQbLAAAEKABDAMLIAogBigCMCAGQTBqIAQbIgksAAAgCSwAARDFAgwCCyAGQSBqIAPAEFYLIAYgBigCODYCGCAGQQA2AjggBigCKCEJIAZBADYCKCAGIAk2AgggBiAGKQMwNwMQIAZCADcDMCAGKQMgIRMgBkIANwMgIAYgEzcDACAGQRBqIQ4jAEHQAGsiBSQAAkACQAJAAkACQCAKLQBaBEACQCAKLQBZRQ0AIA4oAgQgDi0ACyIDIAPAQQBIIggbBEBBACEHA0AgCigCDCIDIA4oAgAgDiAIQQFxGyAHaiwAACADKAIAKAIUEQQAIQMgDigCACAOIA4sAAtBAEgbIAdqIAM6AAAgB0EBaiIHIA4oAgQgDi0ACyIDIAPAQQBIIggbSQ0ACwsgBigCBCAGLQALIgMgA8BBAEgiCBtFDQBBACEHA0AgCigCDCIDIAYoAgAgBiAIQQFxGyAHaiwAACADKAIAKAIUEQQAIQMgBigCACAGIAYsAAtBAEgbIAdqIAM6AAAgB0EBaiIHIAYoAgQgBi0ACyIDIAPAQQBIIggbSQ0ACwsgDigCBCAOLQALIgMgA8BBAEgiDBsiB0Hw////B08NAiAOKAIAIQsCfwJAIAdBC08EQCAHQQ9yQQFqIgMQMyEIIAUgA0GAgICAeHI2AjAgBSAINgIoIAUgBzYCLAwBCyAFIAc6ADMgBUEoaiIIIAdFDQEaCyAIIAsgDiAMGyAH/AoAACAHIAhqC0EAOgAAIAVBGGogCigCECIHIAUoAiggBUEoaiAFLQAzIgzAQQBIIgsbIgMgAyAFKAIsIAwgCxtqIAcoAgAoAhARBwAgBSwAM0EASARAIAUoAigQMQsgBigCBCAGLQALIgMgA8BBAEgiDBsiCEHw////B08NAyAGKAIAIQsCfwJAIAhBC08EQCAIQQ9yQQFqIgMQMyEHIAUgA0GAgICAeHI2AkggBSAHNgJAIAUgCDYCRAwBCyAFIAg6AEsgBUFAayIHIAhFDQEaCyAHIAsgBiAMGyAI/AoAACAHIAhqC0EAOgAAIAVBCGogCigCECIHIAUoAkAgBUFAayAFLQBLIgzAQQBIIgsbIgMgAyAFKAJEIAwgCxtqIAcoAgAoAhARBwAgBSwAS0EASARAIAUoAkAQMQsgBSgCICEDIAVBADYCICAFIAM2AjAgBSgCECEDIAVBADYCECAFIAM2AjwgBSkDGCETIAVCADcDGCAFIBM3AyggBSkDCCETIAVCADcDCCAFIBM3AjQCQCAKKAIwIgMgCigCNEkEQCADIAUpAyg3AgAgAyAFKAIwNgIIIAVBADYCMCAFQgA3AyggAyAFKAI8NgIUIAMgBSkCNDcCDCAFQgA3AjQgBUEANgI8IAogA0EYajYCMAwBCyAKQSxqIAVBKGoQmgQgBSwAP0EATg0AIAUoAjQQMQsgBSwAM0EASARAIAUoAigQMQsgBSwAE0EASARAIAUoAggQMQsgBSwAI0EATg0BIAUoAhgQMQwBCyAOKAIEIA4tAAsiAyADwCILQQBIG0EBRw0DIAYoAgQgBi0ACyIDIAPAQQBIG0EBRw0DIAotAFkEQCAKKAIMIgMgDigCACAOIAtBAEgbLAAAIAMoAgAoAhQRBAAhAyAOKAIAIA4gDiwAC0EASBsgAzoAACAKKAIMIgMgBigCACAGIAYsAAtBAEgbLAAAIAMoAgAoAhQRBAAhAyAGKAIAIAYgBiwAC0EASBsgAzoAAAsgBSAOKAIINgIwIAUgDikCADcDKCAOQgA3AgAgDkEANgIIIAUgBigCCDYCPCAFIAYpAgA3AjQgBkIANwIAIAZBADYCCAJAIAooAjAiAyAKKAI0SQRAIAMgBSkDKDcCACADIAUoAjA2AgggBUEANgIwIAVCADcDKCADIAUoAjw2AhQgAyAFKQI0NwIMIAVCADcCNCAFQQA2AjwgCiADQRhqNgIwDAELIApBLGogBUEoahCaBCAFLAA/QQBODQAgBSgCNBAxCyAFLAAzQQBODQAgBSgCKBAxCyAFQdAAaiQADAMLEEwACxBMAAtBDBACQQkQbkGQhQNBJxABAAsgBiwAC0EASARAIAYoAgAQMQsgBiwAG0EASARAIAYoAhAQMQsgBiwAK0EASARAIAYoAiAQMQsgBCEDCwsgBiwAO0EASARAIAYoAjAQMQsgD0UNAQsgAyEJCyAGQUBrJAAgASAJIgNHDQALIAEgAkYNASABLQAAQS1GBEAgCkEtEKABIAFBAWohAQsgASACRg0BIAEtAABB3QBHDQEgAUEBaiEBCyABDwsQ9AEAC9wNAQV/AkACQAJAAkACQCABIAJGDQAgACgCDEHwB3EhBgJAAkACQAJAIAEsAAAiB0Eqaw4WAwIEBAQEBAQEBAQEBAQEBAQEBAQEAQALIAdB+wBHDQMgAUEBaiIIIAJGDQQgCC0AACIHQfgBcUEwRyAHQf4BcUE4R3ENBCAHQTBrIQcCQCACIAFBAmoiAUcEQANAIAEtAAAiCUH4AXFBMEcgCUH+AXFBOEdxDQIgB0HMmbPmAE4NByAHQQpsIAlqQTBrIQcgAUEBaiIBIAJHDQALCyACIQELIAEgCEYNBAJAIAEgAkYNACABLAAAIghBLEcEQCAIQf0ARw0GIAFBAWohCAJAIAZBgARHDQAgAiAIRg0AIAgtAABBP0cNACAAIAcgByADIAQgBRDQAgwIC0EIEDMhAiAAKAIkIgEoAgQhBiACQbiLATYCACACIAY2AgQgAUEANgIEQSQQMyEBIAAoAhQhBiADKAIEIQkgASACNgIIIAEgCTYCBCABQQE6ACAgASAFNgIcIAEgBDYCGCABIAY2AhQgASAHNgIQDAgLIAFBAWoiCSACRg0FIAktAAAiCEH9AEYEQCABQQJqIQgCQCAGQYAERw0AIAIgCEYNACAILQAAQT9HDQAgACAHIAMgBCAFEM8CIAFBA2oPC0EIEDMhAiAAKAIkIgEoAgQhBiACQbiLATYCACACIAY2AgQgAUEANgIEQSQQMyEBIAAoAhQhBiADKAIEIQkgASACNgIIIAEgCTYCBCABQQE6ACAgASAFNgIcIAEgBDYCGCABIAY2AhQgAUF/NgIQDAgLIAhB+AFxQTBHIAhB/gFxQThHcQ0AIAhBMGshCAJAIAIgAUECaiIBRwRAA0AgAS0AACIKQfgBcUEwRyAKQf4BcUE4R3ENAiAIQcyZs+YATg0IIAhBCmwgCmpBMGshCCABQQFqIgEgAkcNAAsLIAIhAQsgASAJRg0AIAEgAkYNACABLQAAQf0ARw0AIAcgCEoNBSABQQFqIQkCQCAGQYAERw0AIAIgCUYNACAJLQAAQT9HDQAgACAHIAggAyAEIAUQ0AIMBwtBCBAzIQIgACgCJCIBKAIEIQYgAkG4iwE2AgAgAiAGNgIEIAFBADYCBEEkEDMhASAAKAIUIQYgAygCBCEKIAEgAjYCCCABIAo2AgQgAUEBOgAgIAEgBTYCHCABIAQ2AhggASAGNgIUIAEgCDYCECABIAc2AgwgAUHMlQE2AgAgA0EANgIEQQgQMyICQciWATYCACACIAE2AgQgACgCJCACNgIEIAAgASgCCDYCJCADIAE2AgQgACAGQQFqNgIUIAkPCxCiBAALIAFBAWohBwJAIAZBgARHDQAgAiAHRg0AIActAABBP0cNACAAQQBBASADIAQgBRDQAgwFC0EIEDMhAiAAKAIkIgEoAgQhBiACQbiLATYCACACIAY2AgQgAUEANgIEQSQQMyEBIAAoAhQhBiADKAIEIQggASACNgIIIAEgCDYCBCABQQE6ACAgASAFNgIcIAEgBDYCGCABIAY2AhQgAUKAgICAEDcCDAwGCyABQQFqIQcCQCAGQYAERw0AIAIgB0YNACAHLQAAQT9HDQAgAEEBIAMgBCAFEM8CDAQLQQgQMyECIAAoAiQiASgCBCEGIAJBuIsBNgIAIAIgBjYCBCABQQA2AgRBJBAzIQEgACgCFCEGIAMoAgQhCCABIAI2AgggASAINgIEIAFBAToAICABIAU2AhwgASAENgIYIAEgBjYCFCABQoGAgIBwNwIMDAULIAFBAWohBwJAIAZBgARHDQAgAiAHRg0AIActAABBP0cNACAAQQAgAyAEIAUQzwIMAwtBCBAzIQIgACgCJCIBKAIEIQYgAkG4iwE2AgAgAiAGNgIEIAFBADYCBEEkEDMhASAAKAIUIQYgAygCBCEIIAEgAjYCCCABIAg2AgQgAUEBOgAgIAEgBTYCHCABIAQ2AhggASAGNgIUIAFCgICAgHA3AgwgAUHMlQE2AgAgA0EANgIEQQgQMyICQciWATYCACACIAE2AgQgACgCJCACNgIEIAAgASgCCDYCJCADIAE2AgQgACAGQQFqNgIUIAchAQsgAQ8LEKEEAAsgAUECag8LIAEgBzYCDCABQcyVATYCACADQQA2AgRBCBAzIgJByJYBNgIAIAIgATYCBCAAKAIkIAI2AgQgACABKAIINgIkIAMgATYCBCAAIAZBAWo2AhQgCA8LIAFBzJUBNgIAIANBADYCBEEIEDMiAkHIlgE2AgAgAiABNgIEIAAoAiQgAjYCBCAAIAEoAgg2AiQgAyABNgIEIAAgBkEBajYCFCAHC7MCAQR/IAEgAkYEQCABDwsgAS0AAEHeAEYEQEEMEDMhAyAAKAIMIQQgACgCJCIFKAIEIQYgA0HkjAE2AgAgAyAGNgIEIAMgBEHwD3FBgAxGOgAIIAUgAzYCBCAAIAAoAiQoAgQ2AiQgAUEBaiEBCwJAIAEgAkYNAANAIAEiAyACRiIEDQEgACgCECEBIAAoAiQhBSADIAAgAyACEKgEIgZHBEAgACAGIAIgBSABQQFqIAAoAhBBAWoQpwQiASADRw0BCwsCQCADQQFqIAJHDQAgAy0AAEEkRw0AQQwQMyEBIAAoAgwhAyAAKAIkIgQoAgQhBSABQayNATYCACABIAU2AgQgASADQfAPcUGADEY6AAggBCABNgIEIAAgACgCJCgCBDYCJAwBCyAEDQAQpgQACyACC4UEAQZ/IAAoAiQhByABIQMDQAJAIAMiBCAAIAMgAhCqBCIDRgRAIAAoAhAhAyAAKAIkIQUgACAEIAIQqQQiBiAERg0BIAAgBiACIAUgA0EBaiAAKAIQQQFqENICIQMLIAMgBEcNAQsLIAEgBEYEQEEIEDMhASAAKAIkIgMoAgQhBSABQbiLATYCACABIAU2AgQgAyABNgIEIAAgACgCJCgCBDYCJAsgAiAERwRAA0AgBC0AAEH8AEcEQCAEDwsgACgCJCEBIARBAWoiBSEDA0ACQCADIgQgACADIAIQqgQiA0YEQCAAKAIQIQMgACgCJCEGIAAgBCACEKkEIgggBEYNASAAIAggAiAGIANBAWogACgCEEEBahDSAiEDCyADIARHDQELCyAEIAVGBEBBCBAzIQMgACgCJCIFKAIEIQYgA0G4iwE2AgAgAyAGNgIEIAUgAzYCBCAAIAAoAiQoAgQ2AiQLQQwQMyEDIAcoAgQhBSADIAEoAgQ2AgggAyAFNgIEIANBjJcBNgIAIAcgAzYCBCABQQA2AgRBCBAzIQMgACgCJCgCBCEFIANBuIsBNgIAIAMgBTYCBCABIAM2AgQgACgCJEEANgIEQQgQMyEDIAEoAgQhBSADQcyXATYCACADIAU2AgQgACgCJCADNgIEIAAgASgCBDYCJCACIARHDQALCyACC+gDAQR/AkACQAJAIAAoAgQgACgCACICa0EobSIFQQFqIgNB58yZM0kEQEHmzJkzIAAoAgggAmtBKG0iAkEBdCIEIAMgAyAESRsgAkGz5swZTxsiA0HnzJkzTw0BIANBKGwiAxAzIgQgBUEobGoiAiAB/QADAP0LAwAgAiABKAIYNgIYIAIgASkDEDcDECABQgA3AxAgAUEANgIYIAIgASgCHDYCHCACIAEoAiA2AiAgAiABKAIkNgIkIAFBADYCJCABQgA3AhwgAyAEaiEDIAJBKGohBSAAKAIEIgEgACgCACIERg0CA0AgAkEoayICIAFBKGsiAf0AAwD9CwMAIAIgASgCGDYCGCACIAEpAxA3AxAgAUIANwMQIAFBADYCGCACIAEoAhw2AhwgAiABKAIgNgIgIAIgASgCJDYCJCABQQA2AiQgAUIANwIcIAEgBEcNAAsgACADNgIIIAAoAgQhAyAAIAU2AgQgACgCACEBIAAgAjYCACABIANGDQMDQCADQShrIgAoAhwiAgRAIANBCGsgAjYCACACEDELIANBDWssAABBAEgEQCADQRhrKAIAEDELIAAiAyABRw0ACwwDCxBEAAsQWwALIAAgAzYCCCAAIAU2AgQgACACNgIACyABBEAgARAxCwsfACABBEAgACABKAIAENYCIAAgASgCBBDWAiABEDELC/MlAhB/AnwjAEHwAGsiBCQAA0AgAUEsayELIAFBMGshDiABQTRrIQ8gAUE4ayENIAFBKGshESABQcgAayEKA0AgACEFA0ACQAJAAkACQAJAAkACQAJAIAEgBWsiDEHIAG0iCQ4GBwcABAECAwsgAUEoaysDACAFKwMg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AP0LAgAgBCAFQRByIg1qIAEgDWr9AAIA/QsCACAEIAVBIHIiDWogASANav0AAgD9CwIAIAQgBUEwciIFaiABIAVq/QACAP0LAgAgA0EQaiEDIAxBBGoiDCARRw0ACwsgCQRAA0AgBCADQQJ0IgVqIAEgBWr9AAIA/QsCACADQQRqIQMgC0EBaiILIAlHDQALCyAIQQJ0IgUgBGohAyAIIBBGDQEgASAFaiEBCwNAIAMgASgCADYCACADQQRqIQMgAUEEaiIBIAdJDQALCyAAIAM2AgQgBCAPRwRAIAQgCkF8cWsgDiAK/AoAAAsgAiAGRg0BIA4gAiAGIAJr/AoAAA8LIAcgBWtBAnUgCmoiAUGAgICABE8NAUH/////AyAEIAVrIgRBAXUiBiABIAEgBkkbIARB/P///wdPGyIBBH8gAUGAgICABE8NAyABQQJ0EDMFQQALIgQgCEF8cWohBiACIANHBEAgBiACIAlBfHH8CgAAIAYgCkECdGohBgsgBCAFIAj8CgAAIAYgDiAHIA5rIgL8CgAAIAAgBCABQQJ0ajYCCCAAIAIgBmo2AgQgACAENgIAIAUEQCAFEDELCw8LEEQACxBbAAvxFwIJfwN8AkADQCABQQhrIQogAUEQayEHA0AgACEDA0ACQAJAAkACQAJAAkACQAJAIAEgA2siCEEEdSIJDgYHBwABBAIDCyABQRBrIgArAwAiDCADKwMAIg1kRQ0GIAMgDDkDACAAIA05AwAMCgsgAUEQayIAKwMAIQwgAysDECINIAMrAwAiDmRFBEAgDCANZEUNBiADIAw5AxAgACANOQMAIANBGGooAgAhACADIAFBCGsiASgCADYCGCABIAA2AgAgAysDECIMIAMrAwAiDWRFDQYgAyANOQMQIAMgDDkDACADKAIIIQAgAyADKAIYNgIIIAMgADYCGA8LIAwgDWQEQCADIAw5AwAgACAOOQMADAoLIAMgDjkDECADIA05AwAgAygCCCECIAMgA0EYaigCADYCCCADIAI2AhggACsDACIMIA5kRQ0FIAMgDDkDECAAIA45AwAgAyABQQhrIgAoAgA2AhggACACNgIADwsgAyADQRBqIANBIGogA0EwahDNARogAUEQayIAKwMAIgwgAysDMCINZEUNBCADIAw5AzAgACANOQMAIANBOGooAgAhACADIAFBCGsiASgCADYCOCABIAA2AgAgAysDMCIMIAMrAyAiDWRFDQQgAyANOQMwIAMgDDkDICADQShqKAIAIQEgAyADKAI4IgA2AiggAyABNgI4IAwgAysDECINZEUNBCADIA05AyAgAyAMOQMQIANBGGooAgAhASADIAA2AhggAyABNgIoIAwgAysDACINZEUNBCADIA05AxAgAyAMOQMAIAMoAgghASADIAA2AgggAyABNgIYDwsgCEHvAEwEQCADKwMgIQwCQCADKwMQIg4gAysDACINZEUEQCAMIA5kRQ0BIAMgDjkDICADIAw5AxAgA0EYaigCACEAIAMgA0EoaigCACICNgIYIAMgADYCKCAMIA1kRQ0BIAMgDTkDECADIAw5AwAgAygCCCEAIAMgAjYCCCADIAA2AhgMAQsgDCAOZARAIAMgDTkDICADIAw5AwAgAygCCCEAIAMgA0EoaigCADYCCCADIAA2AigMAQsgAyANOQMQIAMgDjkDACADKAIIIQAgAyADQRhqKAIANgIIIAMgADYCGCAMIA1kRQ0AIAMgDTkDICADIAw5AxAgA0EoaigCACECIAMgADYCKCADIAI2AhgLIANBMGoiAiABRg0EIANBIGohBQNAIAIrAwAiDSAFKwMAIgxkBEAgAigCCCEHIAIhBANAAkAgBCAMOQMAIAQgBSIAKAIINgIIIAAgA0YEQCADIQAMAQsgACEEIA0gAEEQayIFKwMAIgxkDQELCyAAIAc2AgggACANOQMACyACIgVBEGoiACECIAAgAUcNAAsMBAsgAkUEQCABIANGDQQgCUECa0EBdiIGIQADQAJAIAYgACIHSA0AIAMgB0EEdGohAiADIAdBAXQiBEEBciIFQQR0aiEAAkAgCSAEQQJqIgRMBEAgBSEEDAELIAArAwAgACsDEGRFBEAgBSEEDAELIABBEGohAAsgACsDACIMIAIrAwAiDWQNACACKAIIIQoDQAJAIAIgDDkDACACIAAiAigCCDYCCCAEIAZKDQAgAyAEQQF0IgRBAXIiBUEEdGohAAJAIAkgBEECaiIETARAIAUhBAwBCyAAKwMAIAArAxBkRQRAIAUhBAwBCyAAQRBqIQALIAArAwAiDCANZEUNAQsLIAIgCjYCCCACIA05AwALIAdBAWshACAHQQBKDQALIAhBBHYhAANAIAEhBSAAIgJBAmtBAXYhBiADKAIIIQkgAysDACEMQQAhBCADIQADQCAEQQF0IghBAXIhASAAIgcgBEEEdGpBEGohAAJAIAIgCEECaiIETARAIAEhBAwBCyAAKwMAIAArAxBkRQRAIAEhBAwBCyAAQRBqIQALIAcgACsDADkDACAHIABBCGooAgA2AgggBCAGTA0ACwJAIAVBEGsiASAARgRAIAAgDDkDACAAIAk2AggMAQsgACABKwMAOQMAIAAgBUEIayIEKAIANgIIIAEgDDkDACAEIAk2AgAgACADa0EQaiIEQRFIDQAgAyAEQQR2QQJrQQF2IgRBBHRqIgUrAwAiDCAAKwMAIg1kRQ0AIAAoAgghBwNAAkAgACAMOQMAIAAgBSIAKAIINgIIIARFDQAgAyAEQQFrQQF2IgRBBHRqIgUrAwAiDCANZA0BCwsgACAHNgIIIAAgDTkDAAsgAkEBayEAIAJBAkoNAAsMBAsgAyAJQQF2QQR0IgVqIQYCQCAIQfH8AE8EQCADIAMgCUECdkEEdCIEaiIAIAYgBCAGaiIEEM0BIQggBysDACIMIAQrAwAiDWRFDQEgBCAMOQMAIAcgDTkDACAEKAIIIQUgBCAKKAIANgIIIAogBTYCACAEKwMAIgwgBisDACINZEUEQCAIQQFqIQgMAgsgBiAMOQMAIAQgDTkDACAGKAIIIQUgBiAEKAIINgIIIAQgBTYCCCAGKwMAIgwgACsDACINZEUEQCAIQQJqIQgMAgsgACAMOQMAIAYgDTkDACAAKAIIIQQgACAGQQhqKAIANgIIIAYgBDYCCCAAKwMAIgwgAysDACINZEUEQCAIQQNqIQgMAgsgAyAMOQMAIAAgDTkDACADKAIIIQQgAyAAKAIINgIIIAAgBDYCCCAIQQRqIQgMAQsgBysDACEMAkAgBisDACINIAMrAwAiDmRFBEBBACEIIAwgDWRFDQIgBiAMOQMAIAcgDTkDACAGKAIIIQAgBiAKKAIANgIIIAogADYCAEEBIQggBisDACIMIAMrAwAiDWRFDQIgAyAMOQMAIAYgDTkDACADKAIIIQAgAyAGQQhqKAIANgIIIAYgADYCCAwBCyAMIA1kBEAgAyAMOQMAIAcgDjkDACADKAIIIQAgAyAKKAIANgIIIAogADYCAEEBIQgMAgsgAyANOQMAIAYgDjkDACADQQhqIgAoAgAhBCAAIAAgBWoiACgCADYCACAAIAQ2AgBBASEIIAcrAwAiDCAOZEUNASAGIAw5AwAgByAOOQMAIAAgCigCADYCACAKIAQ2AgALQQIhCAsgAkEBayECIAchAAJAIAMrAwAiDCAGKwMAIg1kBEAMAQsDQCAAIgRBEGsiACADRgRAIANBEGohBSAMIAcrAwAiDWQNBSAFIAdGDQYDQCAFKwMAIg4gDGMEQCAFIA05AwAgByAOOQMAIAUoAgghACAFIAooAgA2AgggCiAANgIAIAVBEGohBQwHCyAFQRBqIgUgB0cNAAsMBgsgACsDACIOIA1kRQ0ACyADIA45AwAgACAMOQMAIAMoAgghBSADIARBCGsiBCgCADYCCCAEIAU2AgAgCEEBaiEICyADQRBqIgUgAE8NAQNAIAYrAwAhDANAIAUiBEEQaiEFIAQrAwAiDSAMZA0ACwNAIAAiCUEQayIAKwMAIg4gDGRFDQALIAAgBEkEQCAEIQUMAwUgBCAOOQMAIAAgDTkDACAEKAIIIQsgBCAJQQhrIgkoAgA2AgggCSALNgIAIAAgBiAEIAZGGyEGIAhBAWohCAwBCwALAAsgAyADQRBqIANBIGogAUEQaxDNARoMAgsCQCAFIAZGDQAgBisDACIMIAUrAwAiDWRFDQAgBSAMOQMAIAYgDTkDACAFKAIIIQAgBSAGKAIINgIIIAYgADYCCCAIQQFqIQgLIAhFBEAgAyAFEJIEIQQgBUEQaiIAIAEQkgQEQCADIQAgBSEBIARFDQYMAwsgBA0ECyAFIANrIAEgBWtIBEAgAyAFIAIQ2QIgBUEQaiEADAQLIAVBEGogASACENkCIAMhACAFIQEMBAsgByIEIAVGDQADQCADKwMAIQwDQCAFIgBBEGohBSAMIAArAwAiDWRFDQALA0AgDCAEIglBEGsiBCsDACIOZA0ACyAAIARPBEAgACEDDAMFIAAgDjkDACAEIA05AwAgACgCCCEGIAAgCUEIayIAKAIANgIIIAAgBjYCAAwBCwALAAsLCwsPCyADKAIIIQAgAyABQQhrIgEoAgA2AgggASAANgIAC5EJAQR/QQQQMyIEQdyIATYCAEEIEDMiA0G4iwE2AgAgAyAENgIEQRAQMyIEIAM2AgwgBEG0iQE2AgAgBEIANwIEIAAgAzYCHCAAKAIgIQMgACAENgIgAkAgA0UNACADQX/+HgIEDQAgAyADKAIAKAIIEQAAAkAgA0EIaiIE/hACAARAIARBf/4eAgANAQsgAyADKAIAKAIQEQAACwsgACAAKAIcNgIkAkACQAJAAkAgACgCDEHwB3EiA0H/AE0EQCADQRBrDhEDAgICAgICAgICAgICAgICBAELAkAgA0GAAUcEQCADQYACRg0BIANBgARHDQMgACABIAIQ1AIPCyAAIgMoAiQhBgJAAkAgASACRg0AIAEhAAJAA0AgAC0AAEEKRg0BIABBAWoiACACRw0ACyACIQALIAAgAUYNACADIAEgABDTAhogACEBDAELQQgQMyEAIAYoAgQhBCAAQbiLATYCACAAIAQ2AgQgBiAANgIEIAMgAygCJCgCBDYCJAsgAiABIAEgAkdqIgFHBEADQCABIQACQANAIAAtAABBCkYNASAAQQFqIgAgAkcNAAsgAiEACyADKAIkIQQCQCAAIAFHBEAgAyABIAAQ0wIaDAELQQgQMyEBIAQoAgQhBSABQbiLATYCACABIAU2AgQgBCABNgIEIAMgAygCJCgCBDYCJAtBDBAzIQEgBigCBCEFIAEgBCgCBDYCCCABIAU2AgQgAUGMlwE2AgAgBiABNgIEIARBADYCBEEIEDMhASADKAIkKAIEIQUgAUG4iwE2AgAgASAFNgIEIAQgATYCBCADKAIkQQA2AgRBCBAzIQEgBCgCBCEFIAFBzJcBNgIAIAEgBTYCBCADKAIkIAE2AgQgAyAEKAIENgIkIAAgACACR2oiASACRw0ACwsgAg8LIAAiAygCJCEGAkACQCABIAJGDQAgASEAAkADQCAALQAAQQpGDQEgAEEBaiIAIAJHDQALIAIhAAsgACABRg0AIAMgASAAEPwBGiAAIQEMAQtBCBAzIQAgBigCBCEEIABBuIsBNgIAIAAgBDYCBCAGIAA2AgQgAyADKAIkKAIENgIkCyACIAEgASACR2oiAUcEQANAIAEhAAJAA0AgAC0AAEEKRg0BIABBAWoiACACRw0ACyACIQALIAMoAiQhBAJAIAAgAUcEQCADIAEgABD8ARoMAQtBCBAzIQEgBCgCBCEFIAFBuIsBNgIAIAEgBTYCBCAEIAE2AgQgAyADKAIkKAIENgIkC0EMEDMhASAGKAIEIQUgASAEKAIENgIIIAEgBTYCBCABQYyXATYCACAGIAE2AgQgBEEANgIEQQgQMyEBIAMoAiQoAgQhBSABQbiLATYCACABIAU2AgQgBCABNgIEIAMoAiRBADYCBEEIEDMhASAEKAIEIQUgAUHMlwE2AgAgASAFNgIEIAMoAiQgATYCBCADIAQoAgQ2AiQgACAAIAJHaiIBIAJHDQALCyACDwsgA0HAAEYNAgtBDBACQQ4QbkGQhQNBJxABAAsgACABIAIQ0wIPCyAAIAEgAhD8AQv4KQQbfwp+A3sBfSMAQeCDA2siByQAEHEhKCACKAIIBEAgACgCPCEaIAAoAjghFCAAKAI0IQ8gACgCMCEYIAAoAhwhFSAAKAIgIRIgAUHsEmooAgAhCyABKAKgKSEOIAEoAugSIQggB0HIgwNqIgxBADoAACAHIAwoAgA2ApADIAcgCDYCxIMDIAcgCyAIazYCwIMDIAcgBykDwIMDNwOIAyAHQYgDahDPASEIIAdBmANqQQBBqIAD/AsAIAcgBjYCoAMgCEEMIASsIiIQSSIMKAKAASADIAQgDCgCAEECdEHw5gBqKAIAbPwKAAAgCEEMICIQSSEQAkAgBEEATA0AIBAoAoABIQtBACEGIARBBE8EQCAEQQRrIgNBAnZBAWoiBkEDcSERIAX9ESEuAkAgA0EMSQRA/QwAAAAAAQAAAAIAAAADAAAAISxBACEDDAELIAZB/P///wdxIQr9DAAAAAABAAAAAgAAAAMAAAAhLEEAIQMDQCALIANBAnQiBmogLCAu/a4BIi39CwIAIAsgBkEQcmogLf0MBAAAAAQAAAAEAAAABAAAAP2uAf0LAgAgCyAGQSByaiAt/QwIAAAACAAAAAgAAAAIAAAA/a4B/QsCACALIAZBMHJqIC39DAwAAAAMAAAADAAAAAwAAAD9rgH9CwIAICz9DBAAAAAQAAAAEAAAABAAAAD9rgEhLCADQRBqIQMgFkEEaiIWIApHDQALCyAEQXxxIQYgEQRAA0AgCyADQQJ0aiAsIC79rgH9CwIAICz9DAQAAAAEAAAABAAAAAQAAAD9rgEhLCADQQRqIQMgCUEBaiIJIBFHDQALCyAEIAZGDQELA0AgCyAGQQJ0aiAFIAZqNgIAIAZBAWoiBiAERw0ACwsgB0EANgLQgwMgAUGcE2ooAgAhBiAHQdiDA2ogAUGYE2ooAgAiAzYCACAHIAM2AoADIAcgBiADazYC1IMDIAcgBykD0IMDNwP4AiAIIAdB+AJqEDshAyABKAK0FCIGQQBOBEAgASAGQQJ0akG4FGoiBiAGKAIAIgYgAyADIAZJGzYCAAsgAUEDNgK0FCAIIAggACgCfCAMEOUDIAggACgCeCAQEOUDEFAhCiAaQQBKBEAgDyAYbCEdIA4gEiAOQQBKGyIWIA9sIh6sISkgBCAFaiIDrCEmIAQgD2ysISogAyAPbKwhKyAPsiAUspW7RAAAAAAAANC/EL4CtiEvIBasIScgFKwhIyAPrCElIAFB+BJqIQ4gAUH0EmohDCABQYQTaiEQIAFBgBNqIREgAUGQE2ohGyABQYwTaiEcIAFBnBNqIR8gAUGYE2ohIEEAIRIDQCAAKAKUASELIAdBADYC0IMDIA4oAgAhBiAHQdiDA2oiBCAMKAIAIgM2AgAgByADNgLwAiAHIAYgA2s2AtSDAyAHIAcpA9CDAzcD6AIgCCAHQegCahA7IQMgASgCtBQiBkEATgRAIAEgBkECdGpBuBRqIgYgBigCACIGIAMgAyAGSRs2AgALIAFBADYCtBQgCCAKEKgBIQYgCCAIIAggCyASQeAAbGoiAygCACAGEE8gBhCqASAIIAMoAgQgBhBPEFAhBiAIIAMoAhAgBhBXIQsgCCAIIAggAygCFCALEE8gCxBQIAggLxDMARDFASELIAggCCADKAIYIAYQVyAIIC8QzAEQxQEhCSAIIAMoAhwgBhBXIQYgCCAIIAggCCADKAIgIAYQTyAGEFAgJSAiEPwDEK4CIQ0gCCACKAIAIgYgKiAGKAIAQQJ0QfDmAGooAgAgEiAYbCITIAVqIA9sbBDoASEZIAIoAgQiBigCAEECdEHw5gBqKAIAIRcgCCAGICIgJSAXIBhsIAUgBigCAEECdEHw5gBqKAIAIgZsIAYgDyATbCITbGoQ5wEhBiAHQZgDaiIXIAggCSAZEHsQtwEgFyAIIA0gBhB7ELcBIAdBADYC0IMDIA4oAgAhCSAEIAwoAgAiBjYCACAHIAY2AuACIAcgCSAGazYC1IMDIAcgBykD0IMDNwPYAiAIIAdB2AJqEDshBiABKAK0FCIJQQBOBEAgASAJQQJ0akG4FGoiCSAJKAIAIgkgBiAGIAlJGzYCAAsgAUEANgK0FCAIIAggCyAIQQAgDyAUbawiJCAjICIQrAEQe0EAQQEQiwEhCyAIIAggCCACKAIAIgYgKyATIAYoAgBBAnRB8OYAaigCAGwQ6AEgJCAjICYQtQJBAEEBEIsBIQkgB0EANgLQgwMgECgCACENIAQgESgCACIGNgIAIAcgBjYC0AIgByANIAZrNgLUgwMgByAHKQPQgwM3A8gCIAggB0HIAmoQOyEGIAEoArQUIg1BAE4EQCABIA1BAnRqQbgUaiINIA0oAgAiDSAGIAYgDUkbNgIACyABQQE2ArQUIAggCSALEFchC0EAIQ0jAEEQayIJJAAgCygCSCEZIAggCygCACALKAIIIAtBEGogCygCgAEQPCIGIAsoAjA2AjAgBiALKAI0NgI0IAYgCygCODYCOCAGIAsoAjw2AjwgCCAIKQIYNwIkIAggCCgCIDYCLCAIQQA2AiAgCUICNwMIIAhBDEEBIAlBCGpBABA8IhcoAoABIiFBATYCBCAhIAU2AgAgCCAIKAIsNgIgIAggCCkCJDcCGCAGQSY2AkAgGQRAIAggBigCACAGKAIIIAZBEGpBABA8IQ0LIAYgFzYCUCAGIAs2AkwgBiANNgJIIAlBEGokACAIIAYQrAIhCyAIIAggCCAIIAIoAgQiBiAmICQgIyAYIAYoAgBBAnRB8OYAaigCACIGbCAGIB1sIBRuIAYgE2wQ7wMgCxBXQQBBARCLASAIQQAgJSAiEFQQeyELIAdBADYC0IMDIA4oAgAhCSAEIAwoAgAiBjYCACAHIAY2AsACIAcgCSAGazYC1IMDIAcgBykD0IMDNwO4AiAIIAdBuAJqEDshBiABKAK0FCIJQQBOBEAgASAJQQJ0akG4FGoiCSAJKAIAIgkgBiAGIAlJGzYCAAsgAUEANgK0FCAIIAMoAgggCxBXIQYgB0EANgLQgwMgECgCACEJIAQgESgCACILNgIAIAcgCzYCsAIgByAJIAtrNgLUgwMgByAHKQPQgwM3A6gCIAggB0GoAmoQOyELIAEoArQUIglBAE4EQCABIAlBAnRqQbgUaiIJIAkoAgAiCSALIAkgC0sbNgIACyABQQE2ArQUIAggCCADKAIMIAYQTyAGEFAhCyAHQQA2AtCDAyAbKAIAIQkgBCAcKAIAIgY2AgAgByAGNgKgAiAHIAkgBms2AtSDAyAHIAcpA9CDAzcDmAIgCCAHQZgCahA7IQYgASgCtBQiCUEATgRAIAEgCUECdGpBuBRqIgkgCSgCACIJIAYgBiAJSRs2AgALIAFBAjYCtBQgCCALIAoQUCELIAdBADYC0IMDIA4oAgAhCiAEIAwoAgAiBjYCACAHIAY2ApACIAcgCiAGazYC1IMDIAcgBykD0IMDNwOIAiAIIAdBiAJqEDshBiABKAK0FCIKQQBOBEAgASAKQQJ0akG4FGoiCiAKKAIAIgogBiAGIApJGzYCAAsgAUEANgK0FCAIIAsQqAEhBiAIIAggCCADKAIkIAYQTyAGEKoBIAggAygCKCAGEE8QUCEGIAggAygCNCAGEFchBiAIIAggCCADKAI4IAYQTyAGEFAgCCAvEMwBEMUBIQogCCAIIAEoAjQiBiApIBIgFmwgD2wiCSAGKAIAQQJ0QfDmAGooAgBsEOgBICQgIyAnELUCIRMgCCABKAI4IgYgJyAkICMgFiAGKAIAQQJ0QfDmAGooAgBsIB4gBigCAEECdEHw5gBqKAIAIgZsIBRuIAYgCWwQ7wMhBiAIIAggCiAIQQAgJCAjICIQrAEQe0EAQQEQiwEhCiAIIAggCCAGIAggCCAIIBNBAEEBEIsBIAoQVxCsAhBXQQBBARCLASAIQQAgJSAiEFQQeyEKIAdBADYC0IMDIA4oAgAhCSAEIAwoAgAiBjYCACAHIAY2AoACIAcgCSAGazYC1IMDIAcgBykD0IMDNwP4ASAIIAdB+AFqEDshBiABKAK0FCIJQQBOBEAgASAJQQJ0akG4FGoiCSAJKAIAIgkgBiAGIAlJGzYCAAsgAUEANgK0FCAIIAMoAiwgChBXIQYgB0EANgLQgwMgECgCACEJIAQgESgCACIKNgIAIAcgCjYC8AEgByAJIAprNgLUgwMgByAHKQPQgwM3A+gBIAggB0HoAWoQOyEKIAEoArQUIglBAE4EQCABIAlBAnRqQbgUaiIJIAkoAgAiCSAKIAkgCksbNgIACyABQQE2ArQUIAggCCADKAIwIAYQTyAGEFAhCiAHQQA2AtCDAyAbKAIAIQkgBCAcKAIAIgY2AgAgByAGNgLgASAHIAkgBms2AtSDAyAHIAcpA9CDAzcD2AEgCCAHQdgBahA7IQYgASgCtBQiCUEATgRAIAEgCUECdGpBuBRqIgkgCSgCACIJIAYgBiAJSRs2AgALIAFBAjYCtBQgCCAKIAsQUCELIAdBADYC0IMDIA4oAgAhCiAEIAwoAgAiBjYCACAHIAY2AtABIAcgCiAGazYC1IMDIAcgBykD0IMDNwPIASAIIAdByAFqEDshBiABKAK0FCIKQQBOBEAgASAKQQJ0akG4FGoiCiAKKAIAIgogBiAGIApJGzYCAAsgAUEANgK0FCAIIAsQqAEhBiAHQQA2AtCDAyAQKAIAIQkgBCARKAIAIgo2AgAgByAKNgLAASAHIAkgCms2AtSDAyAHIAcpA9CDAzcDuAEgCCAHQbgBahA7IQogASgCtBQiCUEATgRAIAEgCUECdGpBuBRqIgkgCSgCACIJIAogCSAKSxs2AgALIAFBATYCtBQgCCAIIAggAygCSCAGEE8gBhCqASAIIAMoAkwgBhBPEFAhCiAHQQA2AtCDAyAOKAIAIQkgBCAMKAIAIgY2AgAgByAGNgKwASAHIAkgBms2AtSDAyAHIAcpA9CDAzcDqAEgCCAHQagBahA7IQYgASgCtBQiCUEATgRAIAEgCUECdGpBuBRqIgkgCSgCACIJIAYgBiAJSRs2AgALIAFBADYCtBQgCCADKAJQIAoQVyEGIAdBADYC0IMDIBAoAgAhCSAEIBEoAgAiCjYCACAHIAo2AqABIAcgCSAKazYC1IMDIAcgBykD0IMDNwOYASAIIAdBmAFqEDshCiABKAK0FCIJQQBOBEAgASAJQQJ0akG4FGoiCSAJKAIAIgkgCiAJIApLGzYCAAsgAUEBNgK0FCAIIAggAygCVCAGEE8gBhBQIQogB0EANgLQgwMgDigCACEJIAQgDCgCACIGNgIAIAcgBjYCkAEgByAJIAZrNgLUgwMgByAHKQPQgwM3A4gBIAggB0GIAWoQOyEGIAEoArQUIglBAE4EQCABIAlBAnRqQbgUaiIJIAkoAgAiCSAGIAYgCUkbNgIACyABQQA2ArQUIAggChDvASEKIAdBADYC0IMDIBAoAgAhCSAEIBEoAgAiBjYCACAHIAY2AoABIAcgCSAGazYC1IMDIAcgBykD0IMDNwN4IAggB0H4AGoQOyEGIAEoArQUIglBAE4EQCABIAlBAnRqQbgUaiIJIAkoAgAiCSAGIAYgCUkbNgIACyABQQE2ArQUIAggAygCWCAKEFchBiAHQQA2AtCDAyAOKAIAIQkgBCAMKAIAIgo2AgAgByAKNgJwIAcgCSAKazYC1IMDIAcgBykD0IMDNwNoIAggB0HoAGoQOyEKIAEoArQUIglBAE4EQCABIAlBAnRqQbgUaiIJIAkoAgAiCSAKIAkgCksbNgIACyABQQA2ArQUIAggCCADKAJcIAYQTyAGEFAhBiAHQQA2AtCDAyAfKAIAIQogBCAgKAIAIgM2AgAgByADNgJgIAcgCiADazYC1IMDIAcgBykD0IMDNwNYIAggB0HYAGoQOyEDIAEoArQUIgRBAE4EQCABIARBAnRqQbgUaiIEIAQoAgAiBCADIAMgBEkbNgIACyABQQM2ArQUIAggBiALEFAhCiASQQFqIhIgGkcNAAsLIAdBADYC0IMDIAFB+BJqKAIAIQMgB0HYgwNqIgQgAUH0EmooAgAiAjYCACAHIAI2AlAgByADIAJrNgLUgwMgByAHKQPQgwM3A0ggCCAHQcgAahA7IQIgASgCtBQiA0EATgRAIAEgA0ECdGpBuBRqIgMgAygCACIDIAIgAiADSRs2AgALIAFBADYCtBQgCCAKEKgBIQIgB0EANgLQgwMgAUGEE2ooAgAhBSAEIAFBgBNqKAIAIgM2AgAgB0FAayADNgIAIAcgBSADazYC1IMDIAcgBykD0IMDNwM4IAggB0E4ahA7IQMgASgCtBQiBEEATgRAIAEgBEECdGpBuBRqIgQgBCgCACIEIAMgAyAESRs2AgALIAFBATYCtBQgCCAIIAggACgCgAEgAhBPIAIQqgEgCCAAKAKEASACEE8QUCECIAdBADYC0IMDIAFB+BJqKAIAIQQgB0HYgwNqIgUgAUH0EmooAgAiAzYCACAHIAM2AjAgByAEIANrNgLUgwMgByAHKQPQgwM3AyggCCAHQShqEDshAyABKAK0FCIEQQBOBEAgASAEQQJ0akG4FGoiBCAEKAIAIgQgAyADIARJGzYCAAsgAUEANgK0FCAIIAIgAikDEEIBIAIoAjQiAyADIAIoAhhBAWtsEOcBIQIgCCAAKAJ8IAIQVyEAIAdBADYCICAFQQA2AgAgB0IANwMYIAdCADcD0IMDIAggB0EYahA7IQIgASgCtBQiA0EATgRAIAEgA0ECdGpBuBRqIgMgAygCACIDIAIgAiADSRs2AgALIAFBfzYCtBQgB0GYA2oiAiAAELcBIAggAhCmAgJAIAFB/BRqKAIAIAEoAvgUIgNrQQJ1IgIgFUkEQCABQfgUaiIDIBUgAmsQaSADKAIAIQMMAQsgAiAVTQ0AIAEgAyAVQQJ0ajYC/BQLIAMgACgCgAEgFUECdPwKAAAgCBBaIAEQcSAofSABKQMQfDcDECABIAEoAihBAWo2AiggB0HggwNqJAAPCyAHQa8JNgIIIAdB2Q42AgQgB0GwFDYCAEG4nwIoAgBB7dEAIAcQMhAAAAvvDwQXfwd8AX0BfiMAQSBrIg0kACANQQA2AhggDUIANwMQAkACQAJAAkACQCAERQRAIA1BADYCCCANQgA3AwAMAQsgBEGAgICABE8NAiANIARBAnQiCxAzIgo2AhAgDSAKIAtqIhM2AhggCkEAIAv8CwAgDSATNgIUIA1BADYCCCANQgA3AwAgBEGAgICAAk8NASANIARBA3QiCxAzIgo2AgAgDSAKIAtqIhM2AgggCkEAIAv8CwAgDSATNgIECyAJKAIAIABMDQNBAiAEQQF2IgsgC0ECTRtBAWsiC0F+cSEYIAtBAXEhGSAEQQJBASAIG3YiEkEBaiIUQX5xIRogFEEBcSEbIARBfnEhFSAEQQFxIRYgBEEBayEXIBJBAmshHCASQQNrQXxxQQRqIRMgBEEGSSEdA0ACQCAERQRAIA1BEGogDRD9AQwBCyAAIAVsIQsgASgCACEMQQAhCiANKAIQIQ5BACEQIBcEQANAQwAAAAAhKCAOIApBAnRqIAMgCiALaiIRSgR9IAwgCkECdGoqAgAgAiARQQJ0aioCAJQFQwAAAAALOAIAIAMgCkEBciIRIAtqIg9KBEAgDCARQQJ0aioCACACIA9BAnRqKgIAlCEoCyAOIBFBAnRqICg4AgAgCkECaiEKIBBBAmoiECAVRw0ACwsgFgRAIA4gCkECdGogAyAKIAtqIgtKBH0gDCAKQQJ0aioCACACIAtBAnRqKgIAlAVDAAAAAAs4AgALIA1BEGogDRD9ASAERQ0AQQAhCiANKAIAIQxBACELIBcEQANAIAwgCkECdGogDCAKQQN0aiIOKgIAIiggKJQgDioCBCIoICiUkjgCACAMIApBAXIiDkECdGogDCAOQQN0aiIOKgIAIiggKJQgDioCBCIoICiUkjgCACAKQQJqIQogC0ECaiILIBVHDQALCyAWBEAgDCAKQQJ0aiAMIApBA3RqIgsqAgAiKCAolCALKgIEIiggKJSSOAIACyAEQQRJDQBBACELQQEhCiANKAIAIQwgHUUEQANAIAwgCkECdGoiDiAMIAQgCmtBAnRqKgIAIA4qAgCSOAIAIAwgCkEBaiIOQQJ0aiIQIAwgBCAOa0ECdGoqAgAgECoCAJI4AgAgCkECaiEKIAtBAmoiCyAYRw0ACwsgGUUNACAMIApBAnRqIgsgDCAEIAprQQJ0aioCACALKgIAkjgCAAsCQCAIRQ0AQQAhCiANKAIAIQxBACELIBIEQANAIAwgCkECdGogDCAKQQN0aiIOKgIAIA4qAgSSQwAAAD+UOAIAIAwgCkEBciIOQQJ0aiAMIA5BA3RqIg4qAgAgDioCBJJDAAAAP5Q4AgAgCkECaiEKIAtBAmoiCyAaRw0ACwsgG0UNACAMIApBAnRqIAwgCkEDdGoiCyoCACALKgIEkkMAAAA/lDgCAAsCQCAJKAIIIh5BAEwEQCAJKAIAIREMAQsgCSgCDCEfIAkoAgAhESAHKAIIIRBBACEOIA0oAgAhDANARAAAAAAAAAAAISFBACELIBJBA08EQCAOIBRsISBBACEKA0AgISAMIApBAnQiC0EMcmoqAgAgECAKICBqQQJ0aiIPKgIMlCAMIAtBCHJqKgIAIA8qAgiUIAsgDGoqAgAgDyoCAJQgDCALQQRyaioCACAPKgIElJKSkrugISEgCkEEaiIKIBxIDQALIBMhCwsCQCALIBJKDQAgDiAUbCEPIBQgC2tBAXEEfyAhIAwgC0ECdGoqAgAgECALIA9qQQJ0aioCAJS7oCEhIAtBAWoFIAsLIQogCyASRg0AA0AgISAMIApBAnRqKgIAIBAgCiAPakECdGoqAgCUu6AgDCAKQQFqIgtBAnRqKgIAIBAgCyAPakECdGoqAgCUu6AhISAKQQJqIQogCyASRw0ACwsgHyAOIBFsIABqQQJ0agJ8AkACQAJAAkAgIUS7vdfZ33zbPaUiIb0iKUIAWQRAIClCIIinIgtB//8/Sw0BC0QAAAAAAADwvyAhICGioyApQv///////////wCDUA0EGiApQgBZDQEgISAhoUQAAAAAAAAAAKMMBAsgC0H//7//B0sNAkGAgMD/AyEKQYF4IQ8gC0GAgMD/A0cEQCALIQoMAgsgKacNAUQAAAAAAAAAAAwDCyAhRAAAAAAAAFBDor0iKUIgiKchCkHLdyEPCyAPIApB4r4laiILQRR2arciJkQAYJ9QE0TTP6IiIiApQv////8PgyALQf//P3FBnsGa/wNqrUIghoS/RAAAAAAAAPC/oCIhICEgIUQAAAAAAADgP6KiIiShvUKAgICAcIO/IiVEAAAgFXvL2z+iIiOgIicgIyAiICehoCAhICFEAAAAAAAAAECgoyIiICQgIiAioiIjICOiIiIgIiAiRJ/GeNAJmsM/okSveI4dxXHMP6CiRAT6l5mZmdk/oKIgIyAiICIgIkREUj7fEvHCP6JE3gPLlmRGxz+gokRZkyKUJEnSP6CiRJNVVVVVVeU/oKKgoKIgISAloSAkoaAiIUQAACAVe8vbP6IgJkQ2K/ER8/5ZPaIgISAloETVrZrKOJS7PaKgoKCgISELICELtjgCACAOQQFqIg4gHkcNAAsLIBEgACAGaiIASg0ACwwCCxBEAAsQRAALIA0oAgAhCgsgCgRAIA0gCjYCBCAKEDELIA0oAhAiAARAIAAQMQsgDUEgaiQAC/0EAQN/IAAEQCAAKAKgASIBBEAgARBaCyAAKAKkASIBBEAgASgCACICBEAgASACNgIEIAIQMQsgARAxCyAAKALsASIBBEAgASgCPCICBEAgAhBaIAFBADYCPAsgASgCcCICBEAgAhBaIAFBADYCcAsgASgCgAIiAgRAIAIQWiABQQA2AoACCyABKAKQAyICBEAgAhBaIAFBADYCkAMLIAEoAqAEIgIEQCACEFogAUEANgKgBAsgASgCsAUiAgRAIAIQWiABQQA2ArAFCyABKALABiICBEAgAhBaIAFBADYCwAYLIAEoAtAHIgIEQCACEFogAUEANgLQBwsgAUHgCGoiAigCACIDBEAgAxBaIAJBADYCAAsgAUHwCWoiAigCACIDBEAgAxBaIAJBADYCAAsgAUGAC2oiAigCACIDBEAgAxBaIAJBADYCAAsgAUGQDGoiAigCACIDBEAgAxBaIAJBADYCAAsgAUGgDWoiAigCACIDBEAgAxBaIAJBADYCAAsgAUGwDmoiAigCACIDBEAgAxBaIAJBADYCAAsgAUHAD2oiAigCACIDBEAgAxBaIAJBADYCAAsgAUHQEGoiAigCACIDBEAgAxBaIAJBADYCAAsgAUHgEWoiAigCACIDBEAgAxBaIAJBADYCAAsgARCCAhAxCyAALAD7AUEASARAIAAoAvABEDELIABByAFqIAAoAswBENIBIABBvAFqIAAoAsABENEBIABBrAFqIAAoArABENABIAAoApQBIgEEQCAAIAE2ApgBIAEQMQsgACgCiAEiAQRAIAAgATYCjAEgARAxCyAAKAJQIgEEQCAAIAE2AlQgARAxCyAAEDELC5YDAQd/IAACfwJAAkAgASgCBCIERQRAIAFBBGoiBiECDAELIAIoAgAgAiACLQALIgbAQQBIIgUbIQggAigCBCAGIAUbIQUDQAJAAkACQAJAAkAgBCICKAIUIAItABsiBCAEwEEASCIHGyIEIAUgBCAFSSIJGyIGBEAgCCACKAIQIAJBEGogBxsiByAGEEYiCkUEQCAEIAVLDQIMAwsgCkEATg0CDAELIAQgBU0NAgsgAiEGIAIoAgAiBA0EDAULIAcgCCAGEEYiBA0BCyAJDQEMBAsgBEEATg0DCyACKAIEIgQNAAsgAkEEaiEGC0EgEDMiBEEQaiEFAkAgAygCACIDLAALQQBOBEAgBSADKQIANwIAIAUgAygCCDYCCAwBCyAFIAMoAgAgAygCBBBtCyAEIAI2AgggBEIANwIAIARBADYCHCAGIAQ2AgAgBCECIAEoAgAoAgAiAwRAIAEgAzYCACAGKAIAIQILIAEoAgQgAhCVASABIAEoAghBAWo2AghBAQwBCyACIQRBAAs6AAQgACAENgIAC/sCAgZ/AX4jAEEwayIFJAACQAJAIAICfyABIAIoAhAiBiACKAIMIghrIglLBEAgASAJayIKIAIoAhQiByAGa00EQCAGQQAgCvwLACAGIApqDAILIAFBAEgNA0H/////ByAHIAhrIgZBAXQiByABIAEgB0kbIAZB/////wNPGyIGEDMiByAJakEAIAr8CwAgByAIIAn8CgAAIAIgBiAHajYCFCACIAEgB2oiBjYCECACIAc2AgwgCEUNAiAIEDEgAigCECEGDAILIAEgCU8NASABIAhqCyIGNgIQCyACKAIMIQEgBUEAOgAoIAUgBSgCKDYCGCAFIAE2AiQgBSAGIAFrNgIgIAUgBSkDIDcDECACIAVBEGoQzwEiATYCCAJAIAFFBEAgBUHFCzYCAEG4nwIoAgBBq9UAIAUQMgwBCyACIAEgAyAAKAIgIAAoAhggBGxsrCILEEk2AgAgAiACKAIIIAMgCxBJNgIECyAFQTBqJAAgAUEARw8LEEQACxwAIAAgAUEIIAKnIAJCIIinIAOnIANCIIinEBcLJAACQCAAKAIAQQxrIgBBCGpBf/4eAgBBAWtBAE4NACAAEDELCxUAIABBlJIDNgIAIABBBGoQ4QIgAAtSAQF/IAAoAgQhBCAAKAIAIgAgAQJ/QQAgAkUNABogBEEIdSIBIARBAXFFDQAaIAEgAigCAGooAgALIAJqIANBAiAEQQJxGyAAKAIAKAIcEQcAC7oCAQN/IwBBQGoiAiQAIAAoAgAiA0EEaygCACEEIANBCGsoAgAhAyACQgA3AyAgAkIANwMoIAJCADcDMCACQgA3ADcgAkIANwMYIAJBADYCFCACQfSLAzYCECACIAA2AgwgAiABNgIIIAAgA2ohAEEAIQMCQCAEIAFBABBqBEAgAkEBNgI4IAQgAkEIaiAAIABBAUEAIAQoAgAoAhQRDAAgAEEAIAIoAiBBAUYbIQMMAQsgBCACQQhqIABBAUEAIAQoAgAoAhgRCwACQAJAIAIoAiwOAgABAgsgAigCHEEAIAIoAihBAUYbQQAgAigCJEEBRhtBACACKAIwQQFGGyEDDAELIAIoAiBBAUcEQCACKAIwDQEgAigCJEEBRw0BIAIoAihBAUcNAQsgAigCGCEDCyACQUBrJAAgAwsQAEGklgP+EAIAEQkAEEgACwUAEEgACyoBAX8jAEEQayIBJABBrNkrEF4EQCABIAAoAgA2AgAQSAALIAFBEGokAAszAQF/IwBBEGsiAiQAIAAgATYCAEGs2SsQXwRAIAIgACgCADYCABBIAAsgAkEQaiQAIAALLQAgACABNgIAIABBBGpBADoACCAAQQA2AgggACABQQFqNgIEIABBADoAFCAACxkBAX8gACgCACIBBEAgARDZBAsgARAxIAALLgEBfyMAQRBrIgEkACAAQgA3AgAgAUEANgIMIABBCGpBADYCACABQRBqJAAgAAssAQJ/IwBBEGsiASQAIAFBCGoiAiAAKAIENgIAIAIoAgAhACABQRBqJAAgAAssAQJ/IwBBEGsiASQAIAFBCGoiAiAAKAIANgIAIAIoAgAhACABQRBqJAAgAAsQACAAKAIABEAQ5QIACyAAC7cBAQF/AkAQigJBCkcNAEHkACEAA0ACQCAARQ0AQfDUKygCAEUNACAAQQFrIQBB9NQrKAIARQ0BCwsQigJBCkcNAANAAkBB8NQrKAIAIgBB/////wdxQf////8HRw0AQfTUK0EB/h4CABpB8NQrIAAgAEGAgICAeHIiAP5IAgAaQfDUKyAAQfjUKygCAEGAAXMQvQIhAEH01CtBAf4lAgAaIABFDQAgAEEbRw0CCxCKAkEKRg0ACwsLxQIBBH8jAEEQayIFJAAgAkHv////AyABa00EQAJ/IAAtAAtBB3YEQCAAKAIADAELIAALIQYgBSAAIAFB5////wFJBH8gBSABQQF0NgIMIAUgASACajYCACMAQRBrIgIkACAFKAIAIAVBDGoiBygCAEkhCCACQRBqJAAgByAFIAgbKAIAIgJBAk8EfyACQQRqQXxxIgIgAkEBayICIAJBAkYbBUEBC0EBagVB7////wMLEK8BIAUoAgAhAiAFKAIEGiAEBEAgAiAGIAQQmwELIAMgBEcEQCAEQQJ0IgcgAmogBiAHaiADIARrEJsBCyABQQFqIgFBAkcEQCAAIAYgARDWAQsgACACNgIAIAAgACgCCEGAgICAeHEgBSgCBEH/////B3FyNgIIIAAgACgCCEGAgICAeHI2AgggBUEQaiQADwsQTAALlwMBBH8jAEEQayIIJAAgAiABQX9zQe////8Dak0EQAJ/IAAtAAtBB3YEQCAAKAIADAELIAALIQkgCCAAIAFB5////wFJBH8gCCABQQF0NgIMIAggASACajYCACMAQRBrIgIkACAIKAIAIAhBDGoiCigCAEkhCyACQRBqJAAgCiAIIAsbKAIAIgJBAk8EfyACQQRqQXxxIgIgAkEBayICIAJBAkYbBUEBC0EBagVB7////wMLEK8BIAgoAgAhAiAIKAIEGiAEBEAgAiAJIAQQmwELIAYEQCAEQQJ0IAJqIAcgBhCbAQsgAyAEIAVqIgprIQcgAyAKRwRAIARBAnQiAyACaiAGQQJ0aiADIAlqIAVBAnRqIAcQmwELIAFBAWoiAUECRwRAIAAgCSABENYBCyAAIAI2AgAgACAAKAIIQYCAgIB4cSAIKAIEQf////8HcXI2AgggACAAKAIIQYCAgIB4cjYCCCAAIAQgBmogB2oiADYCBCAIQQA2AgwgAiAAQQJ0aiAIKAIMNgIAIAhBEGokAA8LEEwAC8wBAQd/IwBBEGsiAyQAIAMgAjYCDCACBEACfyAALQALQQd2BEAgACgCBAwBCyAALQALQf8AcQshBQJ/IAAtAAtBB3YEQCAAKAIADAELIAALIQYgAyAFIAFrIgI2AggjAEEQayIEJAAgA0EIaiIHKAIAIANBDGoiCCgCAEkhCSAEQRBqJAAgAyAHIAggCRsoAgAiBDYCDCAAIAYgBSACIARHBH8gASAGaiIAIAAgBGogAiAEa/wKAAAgAygCDAUgAgtrEJcCCyADQRBqJAALDQAgACABIAEQZRCRAgvnAQECfyMAQRBrIgMkACACQe////8HTQRAAkAgAkELSQRAIAAgAC0AC0GAAXEgAnI6AAsgACAALQALQf8AcToACyAAIQQMAQsgA0EIaiAAIAJBC08EfyACQRBqQXBxIgQgBEEBayIEIARBC0YbBUEKC0EBahC4ASADKAIMGiAAIAMoAggiBDYCACAAIAAoAghBgICAgHhxIAMoAgxB/////wdxcjYCCCAAIAAoAghBgICAgHhyNgIIIAAgAjYCBAsgBCABIAIQdSADQQA6AAcgAiAEaiADLQAHOgAAIANBEGokAA8LEEwACyAAIABBpJEDNgIAIABBlJIDNgIAIABBBGogARD2AiAACz0BAn8gARBlIgNBDWoQMyICQQA2AgggAiADNgIEIAIgAzYCACACQQxqIgIgASADQQFq/AoAACAAIAI2AgALEgAgACgCACABKAIAEJwBQR92CwwAIAAQhAIaIAAQMQuNBgEGfyMAQSBrIgIkACACQQA2AhggAkIANwMQIAJCADcDCCAAKAIQGiMDQaiyK0YEQBANCwJAIAEtAABBD3EEQCMDKAIYIAEoAgRB/////wdxRw0BCwJ/IAAoAgAiBwRAIAAoAgghBCAAQQxqQQH+HgIAGiAAQQhqDAELIABBIGoiAxDsAUECIQQgAkECNgIUIAJBADYCECACIAAoAgQiBTYCDCAAIAJBCGoiBjYCBCAFIABBFGogACgCFBsgBjYCACADEOsBIAJBFGoLIQUgARBeGiMDIQMgAkEEagRAIAIgAy0AKDYCBAsgA0ECOgAoIAIoAgRBAUYEQCMDQQE6ACgLIAUgBCAHRSIGEO0BIQMCQCAFKAIAIARHDQADQCADQRtHQQAgAxsNASAFIAQgBhDtASEDIAUoAgAgBEYNAAsLIANBACADQRtHGyEDAn8CQCAHBEAgA0ELRgRAQQtBACAAKAIIIARGGyEDCyAAQQxqIgBBf/4eAgBBgYCAgHhHDQEgABCMAQwBCyACQRBqQQBBAv5IAgBFBEAgAEEgaiIEEOwBAkAgACgCBCACQQhqRgRAIAAgAigCDDYCBAwBCyACKAIIIgVFDQAgBSACKAIMNgIECwJAIAAoAhQgAkEIakYEQCAAIAIoAgg2AhQMAQsgAigCDCIARQ0AIAAgAigCCDYCAAsgBBDrASACKAIYIgBFDQEgAEF//h4CAEEBRw0BIAIoAhgQjAEMAQsgAkEUahDsASABEF8aAkAgAigCDA0AIAEtAABBCHENACABQQhqQQH+HgIAGgsCQCACKAIIIgMEQCABKAIEIgBBAEoEQCABQQRqIAAgAEGAgICAeHL+SAIAGgsgA0EMaiIAQQD+FwIAIABB/////wcQqwEMAQsgAS0AAEEIcQ0AIAFBCGpBAf4lAgAaCyACKAIEDAELIAEQXyEAIAIoAgQiAUECTQR/IwMgAToAKEEABUEcCxogACADIAAbQQtHDQFBAQsiAEECTQR/IwMgADoAKEEABUEcCxoLIAJBIGokAAsHACAAEF4aCwgAIAAQlQIaCxYAIAAgASACQoCAgICAgICAgH8QzQMLCQAgABBCNgIACwcAIAAoAgQLJgEBfyAAKAIEIQIDQCABIAJHBEAgAkEEayECDAELCyAAIAE2AgQLSwEBfyMAQRBrIgMkAAJAAkAgAkEeSw0AIAEtAHgNACABQQE6AHgMAQsgA0EIaiACEIYDIQELIANBEGokACAAIAI2AgQgACABNgIAC18BBH8jAEEQayIAJAAgAEH/////AzYCDCAAQf////8HNgIIIwBBEGsiASQAIABBCGoiAigCACAAQQxqIgMoAgBJIQQgAUEQaiQAIAIgAyAEGygCACEBIABBEGokACABC0IBAn8jAEEQayIBJAAgASAANgIIIAEoAgghAiMAQRBrIgAkACAAIAI2AgggACgCCCECIABBEGokACABQRBqJAAgAgvaCQQFfwl7An0CfCABIANqIQkCQCAAQXBxIgdBAEwEQAwBCwNAIAsgBCAIQQF0IgVqIgEvAR5BAnRBwJYDaiABLwEcQQJ0QcCWA2ogAS8BGkECdEHAlgNqIAEvARhBAnRBwJYDav0JAgD9VgIAAf1WAgAC/VYCAAMiDCAFIAlqIgYvAR5BAnRBwJYDaiAGLwEcQQJ0QcCWA2ogBi8BGkECdEHAlgNqIAYvARhBAnRBwJYDav0JAgD9VgIAAf1WAgAC/VYCAAP95gH95AEhCyAPIAwgAyAFaiIFLwEeQQJ0QcCWA2ogBS8BHEECdEHAlgNqIAUvARpBAnRBwJYDaiAFLwEYQQJ0QcCWA2r9CQIA/VYCAAH9VgIAAv1WAgAD/eYB/eQBIQ8gCiABLwEWQQJ0QcCWA2ogAS8BFEECdEHAlgNqIAEvARJBAnRBwJYDaiABLwEQQQJ0QcCWA2r9CQIA/VYCAAH9VgIAAv1WAgADIgwgBi8BFkECdEHAlgNqIAYvARRBAnRBwJYDaiAGLwESQQJ0QcCWA2ogBi8BEEECdEHAlgNq/QkCAP1WAgAB/VYCAAL9VgIAA/3mAf3kASEKIBAgDCAFLwEWQQJ0QcCWA2ogBS8BFEECdEHAlgNqIAUvARJBAnRBwJYDaiAFLwEQQQJ0QcCWA2r9CQIA/VYCAAH9VgIAAv1WAgAD/eYB/eQBIRAgDSABLwEOQQJ0QcCWA2ogAS8BDEECdEHAlgNqIAEvAQpBAnRBwJYDaiABLwEIQQJ0QcCWA2r9CQIA/VYCAAH9VgIAAv1WAgADIgwgBi8BDkECdEHAlgNqIAYvAQxBAnRBwJYDaiAGLwEKQQJ0QcCWA2ogBi8BCEECdEHAlgNq/QkCAP1WAgAB/VYCAAL9VgIAA/3mAf3kASENIBEgDCAFLwEOQQJ0QcCWA2ogBS8BDEECdEHAlgNqIAUvAQpBAnRBwJYDaiAFLwEIQQJ0QcCWA2r9CQIA/VYCAAH9VgIAAv1WAgAD/eYB/eQBIREgDiABLwEGQQJ0QcCWA2ogAS8BBEECdEHAlgNqIAEvAQJBAnRBwJYDaiABLwEAQQJ0QcCWA2r9CQIA/VYCAAH9VgIAAv1WAgADIgwgBi8BBkECdEHAlgNqIAYvAQRBAnRBwJYDaiAGLwECQQJ0QcCWA2ogBi8BAEECdEHAlgNq/QkCAP1WAgAB/VYCAAL9VgIAA/3mAf3kASEOIBIgDCAFLwEGQQJ0QcCWA2ogBS8BBEECdEHAlgNqIAUvAQJBAnRBwJYDaiAFLwEAQQJ0QcCWA2r9CQIA/VYCAAH9VgIAAv1WAgAD/eYB/eQBIRIgCEEQaiIIIAdIDQALIA4gDf3kASAKIAv95AH95AEhCiASIBH95AEgECAP/eQB/eQBIQsLIAr9HwMgCv0fAiAK/R8AIAr9HwGSkpIhEyAL/R8DIAv9HwIgC/0fACAL/R8BkpKSIRQgAiAAIAdKBH0gFLshFSATuyEWA0AgFiAJIAdBAXQiAWovAQBBAnRBwJYDaioCACABIARqLwEAQQJ0QcCWA2oqAgAiE5S7oCEWIBUgASADai8BAEECdEHAlgNqKgIAIBOUu6AhFSAHQQFqIgcgAEcNAAsgFbYhFCAWtgUgEws4AgQgAiAUOAIACzwBAX8jAEEQayIDJAAgAyABEIIDNgIMIAMgAhCCAzYCCCAAIAMoAgw2AgAgACADKAIINgIEIANBEGokAAsJACABQQQQ4gMLGwAgAUH/////A0sEQBBbAAsgAUECdEEEEOADCwkAIAAQmAIQMQvRBAIHfwp+IwBBIGsiBiQAIAAoAgghCSAAKAIEIQgCQAJAAkAgA0UEQCAAKAIAIgMNASAEKQMoIAQpAyAiDSAEKQMYIg4gBCkDECIPfn5+IhAgASkDKCABKQMgIhEgASkDGCISIAEpAxAiE35+flINAiAEKAIwIgMgBCgCAEECdCIHQfDmAGooAgBHDQMgBDUCNCIUIA8gA60iFX4gB0Gw5wBqNAIAIg9/Ug0DIAQ1AjgiFiAOIBR+Ug0DIAQ1AjwgDSAWflINAyABKAIwIgMgASgCAEECdCIHQfDmAGooAgBHDQMgATUCNCINIBMgA61+IAdBsOcAajQCAH9SDQMgATUCOCIOIA0gEn5SDQMgATUCPCAOIBF+Ug0DIAQoAoABIAEoAoABIBAgFX4gD3+n/AoAAAsgACgCACEDCwJAAkAgAw4DAQABAAsgASkDKCABKQMYIg0gASkDIH5+pyANpyIHbSIKQQBMDQAgByAITA0AIAEoAhAiCyACTA0AQQAhAwNAIAghAQNAIAEgAmohDCACIQADQCAAIAxKBEAgBCgCgAEgBCgCOCADbGogBCgCNCABbGogBCgCMCAAbGogBTgCAAsgAEEBaiIAIAtHDQALIAEgCWoiASAHSA0ACyADQQFqIgMgCkcNAAsLIAZBIGokAA8LIAZB9swANgIYIAZBsNMANgIUIAZBkSQ2AhBBuJ8CKAIAQYjSACAGQRBqEDIQAAALIAZBwswANgIIIAZBsdMANgIEIAZBkSQ2AgBBuJ8CKAIAQYjSACAGEDIQAAALFQAgAEGw0QI2AgAgAEEQahA0GiAACxUAIABBiNECNgIAIABBDGoQNBogAAusAwEFfwJAIAMgAiIAa0EDSA0ACwNAAkAgACADTw0AIAQgB00NACAALAAAIgFB/wFxIQYCQCABQQBOBEBBASEBDAELIAFBQkkNASABQV9NBEAgAyAAa0ECSA0CIAAtAAFBwAFxQYABRw0CQQIhAQwBCwJAAkAgAUFvTQRAIAMgAGtBA0gNBCAALQACIQUgAC0AASEBIAZB7QFGDQEgBkHgAUYEQCABQeABcUGgAUYNAwwFCyABQcABcUGAAUcNBAwCCyABQXRLDQMgAyAAa0EESA0DIAAtAAMhCCAALQACIQkgAC0AASEFAkACQAJAAkAgBkHwAWsOBQACAgIBAgsgBUHwAGpB/wFxQTBJDQIMBgsgBUHwAXFBgAFGDQEMBQsgBUHAAXFBgAFHDQQLIAlBwAFxQYABRw0DIAhBwAFxQYABRw0DQQQhASAIQT9xIAlBBnRBwB9xIAZBEnRBgIDwAHEgBUE/cUEMdHJyckH//8MASw0DDAILIAFB4AFxQYABRw0CCyAFQcABcUGAAUcNAUEDIQELIAdBAWohByAAIAFqIQAMAQsLIAAgAmsLzwQBBX8jAEEQayIAJAAgACACNgIMIAAgBTYCCAJ/IAAgAjYCDCAAIAU2AggCQAJAA0ACQCAAKAIMIgEgA08NACAAKAIIIgwgBk8NACABLAAAIgVB/wFxIQICQCAFQQBOBEAgAkH//8MATQRAQQEhBQwCC0ECDAYLQQIhCiAFQUJJDQMgBUFfTQRAIAMgAWtBAkgNBSABLQABIghBwAFxQYABRw0EQQIhBSAIQT9xIAJBBnRBwA9xciECDAELIAVBb00EQCADIAFrQQNIDQUgAS0AAiEJIAEtAAEhCAJAAkAgAkHtAUcEQCACQeABRw0BIAhB4AFxQaABRg0CDAcLIAhB4AFxQYABRg0BDAYLIAhBwAFxQYABRw0FCyAJQcABcUGAAUcNBEEDIQUgCUE/cSACQQx0QYDgA3EgCEE/cUEGdHJyIQIMAQsgBUF0Sw0DIAMgAWtBBEgNBCABLQADIQkgAS0AAiELIAEtAAEhCAJAAkACQAJAIAJB8AFrDgUAAgICAQILIAhB8ABqQf8BcUEwSQ0CDAYLIAhB8AFxQYABRg0BDAULIAhBwAFxQYABRw0ECyALQcABcUGAAUcNAyAJQcABcUGAAUcNA0EEIQUgCUE/cSALQQZ0QcAfcSACQRJ0QYCA8ABxIAhBP3FBDHRycnIiAkH//8MASw0DCyAMIAI2AgAgACABIAVqNgIMIAAgACgCCEEEajYCCAwBCwsgASADSSEKCyAKDAELQQELIQEgBCAAKAIMNgIAIAcgACgCCDYCACAAQRBqJAAgAQuPBAAjAEEQayIAJAAgACACNgIMIAAgBTYCCAJ/IAAgAjYCDCAAIAU2AgggACgCDCEBAkADQCABIANPBEBBACECDAILQQIhAiABKAIAIgFB///DAEsNASABQYBwcUGAsANGDQECQAJAIAFB/wBNBEBBASECIAYgACgCCCIFa0EATA0EIAAgBUEBajYCCCAFIAE6AAAMAQsgAUH/D00EQCAGIAAoAggiAmtBAkgNAiAAIAJBAWo2AgggAiABQQZ2QcABcjoAACAAIAAoAggiAkEBajYCCCACIAFBP3FBgAFyOgAADAELIAYgACgCCCICayEFIAFB//8DTQRAIAVBA0gNAiAAIAJBAWo2AgggAiABQQx2QeABcjoAACAAIAAoAggiAkEBajYCCCACIAFBBnZBP3FBgAFyOgAAIAAgACgCCCICQQFqNgIIIAIgAUE/cUGAAXI6AAAMAQsgBUEESA0BIAAgAkEBajYCCCACIAFBEnZB8AFyOgAAIAAgACgCCCICQQFqNgIIIAIgAUEMdkE/cUGAAXI6AAAgACAAKAIIIgJBAWo2AgggAiABQQZ2QT9xQYABcjoAACAAIAAoAggiAkEBajYCCCACIAFBP3FBgAFyOgAACyAAIAAoAgxBBGoiATYCDAwBCwtBAQwBCyACCyEBIAQgACgCDDYCACAHIAAoAgg2AgAgAEEQaiQAIAELtwMBBH8CQCADIAIiAGtBA0gNAAsDQAJAIAAgA08NACAEIAZNDQACfyAAQQFqIAAtAAAiAcBBAE4NABogAUHCAUkNASABQd8BTQRAIAMgAGtBAkgNAiAALQABQcABcUGAAUcNAiAAQQJqDAELAkACQCABQe8BTQRAIAMgAGtBA0gNBCAALQACIQcgAC0AASEFIAFB7QFGDQEgAUHgAUYEQCAFQeABcUGgAUYNAwwFCyAFQcABcUGAAUcNBAwCCyABQfQBSw0DIAMgAGtBBEgNAyAEIAZrQQJJDQMgAC0AAyEHIAAtAAIhCCAALQABIQUCQAJAAkACQCABQfABaw4FAAICAgECCyAFQfAAakH/AXFBMEkNAgwGCyAFQfABcUGAAUYNAQwFCyAFQcABcUGAAUcNBAsgCEHAAXFBgAFHDQMgB0HAAXFBgAFHDQMgB0E/cSAIQQZ0QcAfcSABQRJ0QYCA8ABxIAVBP3FBDHRycnJB///DAEsNAyAGQQFqIQYgAEEEagwCCyAFQeABcUGAAUcNAgsgB0HAAXFBgAFHDQEgAEEDagshACAGQQFqIQYMAQsLIAAgAmsLqAUBBH8jAEEQayIAJAAgACACNgIMIAAgBTYCCAJ/IAAgAjYCDCAAIAU2AggCQAJAAkADQAJAIAAoAgwiASADTw0AIAAoAggiBSAGTw0AQQIhCiAAAn8gAS0AACICwEEATgRAIAUgAjsBACABQQFqDAELIAJBwgFJDQUgAkHfAU0EQCADIAFrQQJIDQUgAS0AASIIQcABcUGAAUcNBCAFIAhBP3EgAkEGdEHAD3FyOwEAIAFBAmoMAQsgAkHvAU0EQCADIAFrQQNIDQUgAS0AAiEJIAEtAAEhCAJAAkAgAkHtAUcEQCACQeABRw0BIAhB4AFxQaABRg0CDAcLIAhB4AFxQYABRg0BDAYLIAhBwAFxQYABRw0FCyAJQcABcUGAAUcNBCAFIAlBP3EgCEE/cUEGdCACQQx0cnI7AQAgAUEDagwBCyACQfQBSw0FQQEhCiADIAFrQQRIDQMgAS0AAyEJIAEtAAIhCCABLQABIQECQAJAAkACQCACQfABaw4FAAICAgECCyABQfAAakH/AXFBME8NCAwCCyABQfABcUGAAUcNBwwBCyABQcABcUGAAUcNBgsgCEHAAXFBgAFHDQUgCUHAAXFBgAFHDQUgBiAFa0EESA0DQQIhCiAJQT9xIgkgCEEGdCILQcAfcSABQQx0QYDgD3EgAkEHcSICQRJ0cnJyQf//wwBLDQMgBSAIQQR2QQNxIAFBAnQiAUHAAXEgAkEIdHIgAUE8cXJyQcD/AGpBgLADcjsBACAAIAVBAmo2AgggBSALQcAHcSAJckGAuANyOwECIAAoAgxBBGoLNgIMIAAgACgCCEECajYCCAwBCwsgASADSSEKCyAKDAILQQEMAQtBAgshASAEIAAoAgw2AgAgByAAKAIINgIAIABBEGokACABC+oFAQF/IwBBEGsiACQAIAAgAjYCDCAAIAU2AggCfyAAIAI2AgwgACAFNgIIIAAoAgwhAgJAAkADQCACIANPBEBBACEFDAMLQQIhBQJAAkAgAi8BACIBQf8ATQRAQQEhBSAGIAAoAggiAmtBAEwNBSAAIAJBAWo2AgggAiABOgAADAELIAFB/w9NBEAgBiAAKAIIIgJrQQJIDQQgACACQQFqNgIIIAIgAUEGdkHAAXI6AAAgACAAKAIIIgJBAWo2AgggAiABQT9xQYABcjoAAAwBCyABQf+vA00EQCAGIAAoAggiAmtBA0gNBCAAIAJBAWo2AgggAiABQQx2QeABcjoAACAAIAAoAggiAkEBajYCCCACIAFBBnZBP3FBgAFyOgAAIAAgACgCCCICQQFqNgIIIAIgAUE/cUGAAXI6AAAMAQsgAUH/twNNBEBBASEFIAMgAmtBBEgNBSACLwECIghBgPgDcUGAuANHDQIgBiAAKAIIa0EESA0FIAhB/wdxIAFBCnRBgPgDcSABQcAHcSIFQQp0cnJB//8/Sw0CIAAgAkECajYCDCAAIAAoAggiAkEBajYCCCACIAVBBnZBAWoiAkECdkHwAXI6AAAgACAAKAIIIgVBAWo2AgggBSACQQR0QTBxIAFBAnZBD3FyQYABcjoAACAAIAAoAggiAkEBajYCCCACIAhBBnZBD3EgAUEEdEEwcXJBgAFyOgAAIAAgACgCCCIBQQFqNgIIIAEgCEE/cUGAAXI6AAAMAQsgAUGAwANJDQQgBiAAKAIIIgJrQQNIDQMgACACQQFqNgIIIAIgAUEMdkHgAXI6AAAgACAAKAIIIgJBAWo2AgggAiABQQZ2QT9xQYABcjoAACAAIAAoAggiAkEBajYCCCACIAFBP3FBgAFyOgAACyAAIAAoAgxBAmoiAjYCDAwBCwtBAgwCC0EBDAELIAULIQEgBCAAKAIMNgIAIAcgACgCCDYCACAAQRBqJAAgAQs+AQJ/IwBBEGsiASQAIAEgADYCDCABQQhqIAFBDGoQfyEAQQRBASMDKAJgKAIAGyECIAAQfiABQRBqJAAgAgs8AQF/IwBBEGsiBSQAIAUgBDYCDCAFQQhqIAVBDGoQfyEEIAAgASACIAMQ4wEhACAEEH4gBUEQaiQAIAALEgAgBCACNgIAIAcgBTYCAEEDCygBAX8gAEGcyAI2AgACQCAAKAIIIgFFDQAgAC0ADEUNACABEDELIAALBAAgAQtAAQJ/IAAoAgAoAgAiACgCACAAKAIIIgJBAXVqIQEgACgCBCEAIAEgAkEBcQR/IAEoAgAgAGooAgAFIAALEQAACy8AIAEgAEEIaiIAKAIEIAAoAgBrQQJ1SQR/IAAoAgAgAUECdGooAgBBAEcFQQALCzAAIwBBEGsiAiQAAkAgACABRgRAIAFBADoAeAwBCyACQQhqIAEQhQMLIAJBEGokAAu4AQEDfyAAQYjIAjYCACAAQQhqIQEDQCACIAEoAgQgASgCAGtBAnVJBEAgASgCACACQQJ0aigCAARAIAEoAgAgAkECdGooAgAiA0EEakF//h4CAEUEQCADIAMoAgAoAggRAAALCyACQQFqIQIMAQsLIABBmAFqEDQaIAEoAgAiAiABKAIIIAJrQXxxahogASgCBBogAgRAIAEQmgMgAUEQaiABKAIAIgIgASgCCCACa0ECdRCYAwsgAAsMACAAIAAoAgAQ/wILcAEBfyMAQRBrIgIkACACIAA2AgAgAiAAKAIEIgA2AgQgAiAAIAFBAnRqNgIIIAIoAgQhASACKAIIIQADQCAAIAFGBEAgAigCACACKAIENgIEIAJBEGokAAUgAUEANgIAIAIgAUEEaiIBNgIEDAELCwsgACAAQdjQAjYCACAAKAIIEEJHBEAgACgCCBDRAwsgAAsEAEF/C9cBAQV/IwBBEGsiBSQAIwBBIGsiAyQAIANBGGogACABEIQDIANBEGogAygCGCADKAIcIAIQqgIgAygCECEEIwBBEGsiASQAIAEgADYCCCABQQhqIgAhByAEIQYgACgCACEEIwBBEGsiACQAIAAgBDYCCCAAKAIIIQQgAEEQaiQAIAcgBiAEa0ECdRCbAiEAIAFBEGokACADIAA2AgggAyACIAMoAhQgAmtqNgIEIAUgAygCCDYCCCAFIAMoAgQ2AgwgA0EgaiQAIAUoAgwhACAFQRBqJAAgAAvyBwEKfyMAQRBrIhMkACACIAA2AgAgA0GABHEhFSAHQQJ0IRYDQCAUQQRGBEACfyANLQALQQd2BEAgDSgCBAwBCyANLQALQf8AcQtBAUsEQCATIA0QczYCCCACIBNBCGpBARCbAiANEJgBIAIoAgAQngM2AgALIANBsAFxIgNBEEcEQCABIANBIEYEfyACKAIABSAACzYCAAsgE0EQaiQABQJAAkACQAJAAkACQCAIIBRqLAAADgUAAQMCBAULIAEgAigCADYCAAwECyABIAIoAgA2AgAgBkEgIAYoAgAoAiwRBAAhByACIAIoAgAiD0EEajYCACAPIAc2AgAMAwsCfyANLQALQQd2BEAgDSgCBAwBCyANLQALQf8AcQtFDQICfyANLQALQQd2BEAgDSgCAAwBCyANCygCACEHIAIgAigCACIPQQRqNgIAIA8gBzYCAAwCCwJ/IAwtAAtBB3YEQCAMKAIEDAELIAwtAAtB/wBxC0UhByAVRQ0BIAcNASACIAwQcyAMEJgBIAIoAgAQngM2AgAMAQsgAigCACEXIAQgFmoiBCEHA0ACQCAFIAdNDQAgBkHAACAHKAIAIAYoAgAoAgwRAwBFDQAgB0EEaiEHDAELCyAOQQBKBEAgAigCACEPIA4hEANAAkAgBCAHTw0AIBBFDQAgB0EEayIHKAIAIREgAiAPQQRqIhI2AgAgDyARNgIAIBBBAWshECASIQ8MAQsLAkAgEEUEQEEAIREMAQsgBkEwIAYoAgAoAiwRBAAhESACKAIAIQ8LA0AgD0EEaiESIBBBAEoEQCAPIBE2AgAgEEEBayEQIBIhDwwBCwsgAiASNgIAIA8gCTYCAAsCQCAEIAdGBEAgBkEwIAYoAgAoAiwRBAAhDyACIAIoAgAiEEEEaiIHNgIAIBAgDzYCAAwBCwJ/IAstAAtBB3YEQCALKAIEDAELIAstAAtB/wBxCwR/An8gCy0AC0EHdgRAIAsoAgAMAQsgCwssAAAFQX8LIRFBACEPQQAhEANAIAQgB0cEQAJAIA8gEUcEQCAPIRIMAQsgAiACKAIAIhJBBGo2AgAgEiAKNgIAQQAhEgJ/IAstAAtBB3YEQCALKAIEDAELIAstAAtB/wBxCyAQQQFqIhBNBEAgDyERDAELAn8gCy0AC0EHdgRAIAsoAgAMAQsgCwsgEGotAABB/wBGBEBBfyERDAELAn8gCy0AC0EHdgRAIAsoAgAMAQsgCwsgEGosAAAhEQsgB0EEayIHKAIAIQ8gAiACKAIAIhhBBGo2AgAgGCAPNgIAIBJBAWohDwwBCwsgAigCACEHCyAXIAcQ3AELIBRBAWohFAwBCwsLyQMBAX8jAEEQayIKJAAgCQJ/IAAEQCACEKUDIQACQCABBEAgCiAAIAAoAgAoAiwRAgAgAyAKKAIANgAAIAogACAAKAIAKAIgEQIADAELIAogACAAKAIAKAIoEQIAIAMgCigCADYAACAKIAAgACgCACgCHBECAAsgCCAKEIUBIAoQTRogBCAAIAAoAgAoAgwRAQA2AgAgBSAAIAAoAgAoAhARAQA2AgAgCiAAIAAoAgAoAhQRAgAgBiAKEGIgChA0GiAKIAAgACgCACgCGBECACAHIAoQhQEgChBNGiAAIAAoAgAoAiQRAQAMAQsgAhCkAyEAAkAgAQRAIAogACAAKAIAKAIsEQIAIAMgCigCADYAACAKIAAgACgCACgCIBECAAwBCyAKIAAgACgCACgCKBECACADIAooAgA2AAAgCiAAIAAoAgAoAhwRAgALIAggChCFASAKEE0aIAQgACAAKAIAKAIMEQEANgIAIAUgACAAKAIAKAIQEQEANgIAIAogACAAKAIAKAIUEQIAIAYgChBiIAoQNBogCiAAIAAoAgAoAhgRAgAgByAKEIUBIAoQTRogACAAKAIAKAIkEQEACzYCACAKQRBqJAAL1AEBBX8jAEEQayIFJAAjAEEgayIDJAAgA0EYaiAAIAEQhAMgA0EQaiADKAIYIAMoAhwgAhCqAiADKAIQIQQjAEEQayIBJAAgASAANgIIIAFBCGoiACEHIAQhBiAAKAIAIQQjAEEQayIAJAAgACAENgIIIAAoAgghBCAAQRBqJAAgByAGIARrEJwCIQAgAUEQaiQAIAMgADYCCCADIAIgAygCFCACa2o2AgQgBSADKAIINgIIIAUgAygCBDYCDCADQSBqJAAgBSgCDCEAIAVBEGokACAAC94HAQp/IwBBEGsiEyQAIAIgADYCACADQYAEcSEWA0AgFEEERgRAAn8gDS0AC0EHdgRAIA0oAgQMAQsgDS0AC0H/AHELQQFLBEAgEyANEHM2AgggAiATQQhqQQEQnAIgDRCaASACKAIAEKEDNgIACyADQbABcSIDQRBHBEAgASADQSBGBH8gAigCAAUgAAs2AgALIBNBEGokAAUCQAJAAkACQAJAAkAgCCAUaiwAAA4FAAEDAgQFCyABIAIoAgA2AgAMBAsgASACKAIANgIAIAZBICAGKAIAKAIcEQQAIQ8gAiACKAIAIhBBAWo2AgAgECAPOgAADAMLAn8gDS0AC0EHdgRAIA0oAgQMAQsgDS0AC0H/AHELRQ0CAn8gDS0AC0EHdgRAIA0oAgAMAQsgDQstAAAhDyACIAIoAgAiEEEBajYCACAQIA86AAAMAgsCfyAMLQALQQd2BEAgDCgCBAwBCyAMLQALQf8AcQtFIQ8gFkUNASAPDQEgAiAMEHMgDBCaASACKAIAEKEDNgIADAELIAIoAgAhFyAEIAdqIgQhEQNAAkAgBSARTQ0AIBEsAAAiD0EATgR/IAYoAgggD0H/AXFBAnRqKAIAQcAAcUEARwVBAAtFDQAgEUEBaiERDAELCyAOIg9BAEoEQANAAkAgBCARTw0AIA9FDQAgEUEBayIRLQAAIRAgAiACKAIAIhJBAWo2AgAgEiAQOgAAIA9BAWshDwwBCwsgDwR/IAZBMCAGKAIAKAIcEQQABUEACyESA0AgAiACKAIAIhBBAWo2AgAgD0EASgRAIBAgEjoAACAPQQFrIQ8MAQsLIBAgCToAAAsCQCAEIBFGBEAgBkEwIAYoAgAoAhwRBAAhDyACIAIoAgAiEEEBajYCACAQIA86AAAMAQsCfyALLQALQQd2BEAgCygCBAwBCyALLQALQf8AcQsEfwJ/IAstAAtBB3YEQCALKAIADAELIAsLLAAABUF/CyESQQAhD0EAIRADQCAEIBFGDQECQCAPIBJHBEAgDyEVDAELIAIgAigCACISQQFqNgIAIBIgCjoAAEEAIRUCfyALLQALQQd2BEAgCygCBAwBCyALLQALQf8AcQsgEEEBaiIQTQRAIA8hEgwBCwJ/IAstAAtBB3YEQCALKAIADAELIAsLIBBqLQAAQf8ARgRAQX8hEgwBCwJ/IAstAAtBB3YEQCALKAIADAELIAsLIBBqLAAAIRILIBFBAWsiES0AACEPIAIgAigCACIYQQFqNgIAIBggDzoAACAVQQFqIQ8MAAsACyAXIAIoAgAQogELIBRBAWohFAwBCwsLxQMBAX8jAEEQayIKJAAgCQJ/IAAEQCACEKoDIQACQCABBEAgCiAAIAAoAgAoAiwRAgAgAyAKKAIANgAAIAogACAAKAIAKAIgEQIADAELIAogACAAKAIAKAIoEQIAIAMgCigCADYAACAKIAAgACgCACgCHBECAAsgCCAKEGIgChA0GiAEIAAgACgCACgCDBEBADoAACAFIAAgACgCACgCEBEBADoAACAKIAAgACgCACgCFBECACAGIAoQYiAKEDQaIAogACAAKAIAKAIYEQIAIAcgChBiIAoQNBogACAAKAIAKAIkEQEADAELIAIQqQMhAAJAIAEEQCAKIAAgACgCACgCLBECACADIAooAgA2AAAgCiAAIAAoAgAoAiARAgAMAQsgCiAAIAAoAgAoAigRAgAgAyAKKAIANgAAIAogACAAKAIAKAIcEQIACyAIIAoQYiAKEDQaIAQgACAAKAIAKAIMEQEAOgAAIAUgACAAKAIAKAIQEQEAOgAAIAogACAAKAIAKAIUEQIAIAYgChBiIAoQNBogCiAAIAAoAgAoAhgRAgAgByAKEGIgChA0GiAAIAAoAgAoAiQRAQALNgIAIApBEGokAAsKACAAQcjBKxB4CwoAIABB0MErEHgLHwEBfyABKAIAEOoDIQIgACABKAIANgIEIAAgAjYCAAvKGAEKfyMAQbAEayILJAAgCyAKNgKkBCALIAE2AqgEAkAgACALQagEahBABEAgBSAFKAIAQQRyNgIAQQAhAAwBCyALQaIBNgJgIAsgC0GIAWogC0GQAWogC0HgAGoiDxBOIhEoAgAiATYChAEgCyABQZADajYCgAEjAEEQayIBJAAgD0IANwIAIA9BADYCCCABQRBqJAAjAEEQayIBJAAgC0HQAGoiDkIANwIAIA5BADYCCCABQRBqJAAjAEEQayIBJAAgC0FAayINQgA3AgAgDUEANgIIIAFBEGokACMAQRBrIgEkACALQTBqIgxCADcCACAMQQA2AgggAUEQaiQAIwBBEGsiASQAIAtBIGoiEEIANwIAIBBBADYCCCABQRBqJAAjAEEQayIBJAAgCwJ/IAIEQCABIAMQpQMiAiACKAIAKAIsEQIAIAsgASgCADYAeCABIAIgAigCACgCIBECACAMIAEQhQEgARBNGiABIAIgAigCACgCHBECACANIAEQhQEgARBNGiALIAIgAigCACgCDBEBADYCdCALIAIgAigCACgCEBEBADYCcCABIAIgAigCACgCFBECACAPIAEQYiABEDQaIAEgAiACKAIAKAIYEQIAIA4gARCFASABEE0aIAIgAigCACgCJBEBAAwBCyABIAMQpAMiAiACKAIA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uMErEHgLCgAgAEHAwSsQeAvhAQEGfyMAQRBrIgUkACAAKAIEIQMCfyACKAIAIAAoAgBrIgRB/////wdJBEAgBEEBdAwBC0F/CyIEQQEgBBshBCABKAIAIQcgACgCACEIIANBogFGBH9BAAUgACgCAAsgBBDEASIGBEAgA0GiAUcEQCAAKAIAGiAAQQA2AgALIAVBoQE2AgQgACAFQQhqIAYgBUEEahBOIgMQqAMgAygCACEGIANBADYCACAGBEAgBiADKAIEEQAACyABIAAoAgAgByAIa2o2AgAgAiAEIAAoAgBqNgIAIAVBEGokAA8LEEgACyABAX8gASgCABDsA8AhAiAAIAEoAgA2AgQgACACOgAAC7QZAQp/IwBBsARrIgskACALIAo2AqQEIAsgATYCqAQCQCAAIAtBqARqEEEEQCAFIAUoAgBBBHI2AgBBACEADAELIAtBogE2AmggCyALQYgBaiALQZABaiALQegAaiIPEE4iESgCACIBNgKEASALIAFBkANqNgKAASMAQRBrIgEkACAPQgA3AgAgD0EANgIIIAFBEGokACMAQRBrIgEkACALQdgAaiIOQgA3AgAgDkEANgIIIAFBEGokACMAQRBrIgEkACALQcgAaiINQgA3AgAgDUEANgIIIAFBEGokACMAQRBrIgEkACALQThqIgxCADcCACAMQQA2AgggAUEQaiQAIwBBEGsiASQAIAtBKGoiEEIANwIAIBBBADYCCCABQRBqJAAjAEEQayIBJAAgCwJ/IAIEQCABIAMQqgMiAiACKAIAKAIsEQIAIAsgASgCADYAeCABIAIgAigCACgCIBECACAMIAEQYiABEDQaIAEgAiACKAIAKAIcEQIAIA0gARBiIAEQNBogCyACIAIoAgAoAgwRAQA6AHcgCyACIAIoAgAoAhARAQA6AHYgASACIAIoAgAoAhQRAgAgDyABEGIgARA0GiABIAIgAigCACgCGBECACAOIAEQYiABEDQaIAIgAigCACgCJBEBAAwBCyABIAMQqQMiAiACKAIAKAIsEQIAIAsgASgCADYAeCABIAIgAigCACgCIBECACAMIAEQYiABEDQaIAEgAiACKAIAKAIcEQIAIA0gARBiIAEQNBogCyACIAIoAgAoAgwRAQA6AHcgCyACIAIoAgAoAhARAQA6AHYgASACIAIoAgAo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CQ0AIAUEQCAFIARBAnRqQQA2AgALIApFBEBBACEKDAELIAQgCmpBADoAAAsgBSEACyADKAIEIAMoAixrrCADKQN4IBV8fCEVIA4gCEEAR2ohDgsgAUEBaiEEIAEtAAEiAQ0BDAgLCyAFIQAMAQtBASEHQQAhCkEAIQAMAgsgDCEHDAMLIAwhBwsgDg0BC0F/IQ4LIAdFDQAgChAxIAAQMQsgEQRAIAMQjQELIAZBsAJqJAAgA0GQAWokACAOC0MAAkAgAEUNAAJAAkACQAJAIAFBAmoOBgABAgIEAwQLIAAgAjwAAA8LIAAgAj0BAA8LIAAgAj4CAA8LIAAgAjcDAAsLtQMCA38BfiMAQSBrIgMkAAJAIAFC////////////AIMiBUKAgICAgIDAwD99IAVCgICAgICAwL/AAH1UBEAgAUIZiKchBCAAUCABQv///w+DIgVCgICACFQgBUKAgIAIURtFBEAgBEGBgICABGohAgwCCyAEQYCAgIAEaiECIAAgBUKAgIAIhYRCAFINASACIARBAXFqIQIMAQsgAFAgBUKAgICAgIDA//8AVCAFQoCAgICAgMD//wBRG0UEQCABQhmIp0H///8BcUGAgID+B3IhAgwBC0GAgID8ByECIAVC////////v7/AAFYNAEEAIQIgBUIwiKciBEGR/gBJDQAgA0EQaiAAIAFC////////P4NCgICAgICAwACEIgUgBEGB/gBrEGMgAyAAIAVBgf8AIARrEKYBIAMpAwgiAEIZiKchAiADKQMAIAMpAxAgAykDGIRCAFKthCIFUCAAQv///w+DIgBCgICACFQgAEKAgIAIURtFBEAgAkEBaiECDAELIAUgAEKAgIAIhYRCAFINACACQQFxIAJqIQILIANBIGokACACIAFCIIinQYCAgIB4cXK+C4wEAgR/AX4CQAJAAkACQAJAAn8gACgCBCICIAAoAmhHBEAgACACQQFqNgIEIAItAAAMAQsgABA9CyICQStrDgMAAQABCyACQS1GIQUCfyAAKAIEIgMgACgCaEcEQCAAIANBAWo2AgQgAy0AAAwBCyAAED0LIgNBOmshBCABRQ0BIARBdUsNASAAKQNwQgBTDQIgACAAKAIEQQFrNgIEDAILIAJBOmshBCACIQMLIARBdkkNACADQTBrIgRBCkkEQEEAIQIDQCADIAJB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gICAgMC7wAAQRyAFKQNYIglCMIinQfgAayEGIAUpA1AhAwsgCUL///////8/g0KAgICAgIDAAIQhCyAKQv///////z+DQoCAgICAgMAAhCEKIAYgB0gEQANAAn4gCiALfSADIARWrX0iCUIAWQRAIAkgBCADfSIEhFAEQCAFQSBqIAEgAkIAQgAQRyAFKQMoIQIgBSkDICEEDAULIAlCAYYgBEI/iIQMAQsgCkIBhiAEQj+IhAshCiAEQgGGIQQgB0EBayIHIAZKDQALIAYhBwsCQCAKIAt9IAMgBFatfSIJQgBTBEAgCiEJDAELIAkgBCADfSIEhEIAUg0AIAVBMGogASACQgBCABBHIAUpAzghAiAFKQMwIQQMAQsgCUL///////8/WARAA0AgBEI/iCEBIAdBAWshByAEQgGGIQQgASAJQgGGhCIJQoCAgICAgMAAVA0ACwsgCEGAgAJxIQYgB0EATARAIAVBQGsgBCAJQv///////z+DIAdB+ABqIAZyrUIwhoRCAEKAgICAgIDAwz8QRyAFKQNIIQIgBSkDQCEEDAELIAlC////////P4MgBiAHcq1CMIaEIQILIAAgBDcDACAAIAI3AwggBUGAAWokAAuqDwIFfw9+IwBB0AJrIgUkACAEQv///////z+DIQsgAkL///////8/gyEKIAIgBIVCgICAgICAgICAf4MhDSAEQjCIp0H//wFxIQgCQAJAIAJCMIinQf//AXEiCUH//wFrQYKAfk8EQCAIQf//AWtBgYB+Sw0BCyABUCACQv///////////wCDIgxCgICAgICAwP//AFQgDEKAgICAgIDA//8AURtFBEAgAkKAgICAgIAghCENDAILIANQIARC////////////AIMiAkKAgICAgIDA//8AVCACQoCAgICAgMD//wBRG0UEQCAEQoCAgICAgCCEIQ0gAyEBDAILIAEgDEKAgICAgIDA//8AhYRQBEAgAyACQoCAgICAgMD//wCFhFAEQEIAIQFCgICAgICA4P//ACENDAMLIA1CgICAgICAwP//AIQhDUIAIQEMAgsgAyACQoCAgICAgMD//wCFhFAEQEIAIQEMAgsgASAMhFAEQEKAgICAgIDg//8AIA0gAiADhFAbIQ1CACEBDAILIAIgA4RQBEAgDUKAgICAgIDA//8AhCENQgAhAQwC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AzAhAQsgBCABIAJCACADQf//AGqtQjCGEEcgACAEKQMINwMIIAAgBCkDADcDACAEQdAAaiQACzUAIAAgATcDACAAIAJC////////P4MgBEIwiKdBgIACcSACQjCIp0H//wFxcq1CMIaENwMIC8ABAgF/An5BfyEDAkAgAEIAUiABQv///////////wCDIgRCgICAgICAwP//AFYgBEKAgICAgIDA//8AURsNACACQv///////////wCDIgVCgICAgICAwP//AFYgBUKAgICAgIDA//8AUnENACAAIAQgBYSEUARAQQAPCyABIAKDQgBZBEAgASACUiABIAJTcQ0BIAAgASAChYRCAFIPCyAAQgBSIAEgAlUgASACURsNACAAIAEgAoWEQgBSIQMLIAMLSwECfyAAKAIAIgEEQAJ/IAEoAgwiAiABKAIQRgRAIAEgASgCACgCJBEBAAwBCyACKAIAC0F/RwRAIAAoAgBFDwsgAEEANgIAC0EBC0sBAn8gACgCACIBBEACfyABKAIMIgIgASgCEEYEQCABIAEoAgAoAiQRAQAMAQsgAi0AAAtBf0cEQCAAKAIARQ8LIABBADYCAAtBAQtxAQJ/IAFBCEsEQEEEIAEgAUEETRshAiAAQQEgABshAwNAAkAjAEEQayIAJAAgAEEANgIMIABBDGogAiADEPUDGiAAKAIMIQEgAEEQaiQAIAENAEH02Sv+EAIAIgBFDQAgABEJAAwBCwsgAQ8LIAAQMwsJACABQQEQ4AMLEwAgAUEISwRAIAAQMQ8LIAAQMQuBAQECfyMAQRBrIgQkACMAQSBrIgMkACADQRhqIAAgARCrAiADQRBqIAMoAhggAygCHCACEKoCIAMgACADKAIQIABrajYCDCADIAIgAygCFCACa2o2AgggBCADKAIMNgIIIAQgAygCCDYCDCADQSBqJAAgBCgCDCEAIARBEGokACAACwkAIAAQrQIQMQv9AQIEfwF+IwBBIGsiAyQAAkAgASkDIEIBUg0AIAEpAyhCAVINACACKQMYQgFSDQAgAikDIEIBUg0AIAIpAyhCAVINACACKAIAQQxHDQACfwJAIAEoAkgNACACKAJIDQBBAAwBC0EBCyEGIAEpAxAhByADIAIpAxA3AxggAyAHNwMQIABBAEECIANBEGpBABA8IgRBIzYCQCAGBEAgACAE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IAAoAjggAEFAaygCACAAKAIEERAADBgLIAFBgICAgAFGDRAgAUGAgICQAUcNFyAAKAIQIAAoAhggACgCICAAKAIoIAAoAjAgACgCOCAAQUBrKAIAIAAoAkggACgCUCAAKAIEESoADBcLIAFB/////wFMBEAgAUGAgICgAUYNESABQYCAgLABRw0XIAAoAhAgACgCGCAAKAIgIAAoAiggACgCMCAAKAI4IABBQGsoAgAgACgCSCAAKAJQIAAoAlggACgCYCAAKAIEEUUADBcLIAFBgICAgAJGDREgAUGAgICQAkcNFiAAIAAoAhAgACgCBBEBADYCsAEMFgsCQCABQf///88CTARAIAFB////twJMBEAgAUGAgICgAkYNFCABQYCAgLACRw0YIAAgACgCECAAKAIYIAAoAiAgACgCBBEDADYCsAEMGAsgAUGAgIC4AkYNASABQYCAgMACRw0XIAAgACgCECAAKAIYIAAoAiAgACgCKCAAKAIEEQYANgKwAQwXCyABQf///+8CTARAIAFBgICA0AJGDRQgAUGAgIDgAkcNFyAAIAAoAhAgACgCGCAAKAIgIAAoAiggACgCMCAAKAI4IAAoAgQRCAA2ArABDBcLIAFBgICA8AJGDRQgAUGAgICAA0YNFSABQYCAgJADRw0WIAAgACgCECAAKAIYIAAoAiAgACgCKCAAKAIwIAAoAjggAEFAaygCACAAKAJIIAAoAlAgACgCBBErADYCsAEMFgsgACAAKAIQIAAoAhggACgCIBAkNgKwAQwVCyAAIAAoAgQgACgCECAAQRhqECM5A7ABDBQLIAAoAhAgACgCBBEAAAwTCyAAKgIQIAAoAgQRRgAMEgsgACgCECAAKAIYIAAoAgQRAgAMEQsgACgCECAAKgIYIAAoAgQRRwAMEAsgACoCECAAKgIYIAAoAgQRSAAMDwsgACgCECAAKAIYIAAqAiAgACgCBBFJAAwOCyAAKAIQIAAqAhggACoCICAAKAIEEUoADA0LIAAqAhAgACoCGCAAKgIgIAAoAgQRSwAMDAsgAUGggIDAAEcNCyAAKAIQIAAoAhggACoCICAAKAIoIAAoAgQRTAAMCwsgACgCECAAKgIYIAAqAiAgACoCKCAAKAIEEU0ADAoLIAAqAhAgACoCGCAAKgIgIAAqAiggACgCBBFOAAwJCyAAKAIQ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BwsgBw0AC0EAIBNFDQAaIAMoAgAiAEEBOgAIIAAgASAFajYCBCAAIAE2AgBBAQshASAGQThqEJUEAkAgBigCPCIHIAYoAkAiAEYNAANAIAcoAgAQMSAHQQRqIgcgAEcNAAsgBigCQCIAIAYoAjwiAkYNACAGIAAgAiAAa0EDakF8cWo2AkALIAYoAjgiAARAIAAQMQsgBkHQAGokACABDwsQywIACxDKAgALewACQCABIAJGDQAgAUEBaiACRg0AIAEtAABB3ABHDQACQCABLAABIgJBJGsOOwABAQEBAQABAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAEAAQsgACACEFUgAUECaiEBCyABC8YDAQV/AkACQAJAIAAoAgQgACgCACIEa0EYbSIFQQFqIgJBq9Wq1QBJBEBBqtWq1QAgACgCCCAEa0EYbSIEQQF0IgYgAiACIAZJGyAEQdWq1SpPGyIEBEAgBEGr1arVAE8NAiAEQRhsEDMhAwsgBUEYbCADaiICIAEpAgA3AgAgAiABKAIINgIIIAFCADcCACABQQA2AgggAiABKAIUNgIUIAIgASkCDDcCDCABQgA3AgwgAUEANgIUIAMgBEEYbGohAyACQRhqIQQgACgCBCIBIAAoAgAiBUYNAgNAIAJBGGsiAiABQRhrIgEpAgA3AgAgAiABKAIINgIIIAFCADcCACABQQA2AgggAiABKAIUNgIUIAIgASkCDDcCDCABQgA3AgwgAUEANgIUIAEgBUcNAAsgACADNgIIIAAoAgQhAyAAIAQ2AgQgACgCACEBIAAgAjYCACABIANGDQMDQCADQQFrLAAAQQBIBEAgA0EMaygCABAxCyADQRhrIQAgA0ENaywAAEEASARAIAAoAgAQMQsgACIDIAFHDQALDAMLEEQACxBbAAsgACADNgIIIAAgBDYCBCAAIAI2AgALIAEEQCABEDELCxMAQQwQAkEBEG5BkIUDQScQAQALigYBA38CQCABIAJHBEACQAJAAkACQAJAAkACQAJAAkAgASwAACIFQcQAaw40AwgICAgICAgICAgICAgIBQgICAcICAgICAgICAgIAQgCCAgICAgICAgICAgICAgECAgIBgALIAUNByADIAUQVgwJCyADQQgQVgwICyAEIAQoAlBB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ADcCACAAQQA6AOIRIABB5MIBOwHgESAAQQI6AOsRIABB2BFqQYEbLwAAOwAAIABBBjoA3xEgAEEaNgLQESAAQQA6ANoRIABB/RooAAA2AtQRIABBkB5qIABB6BFqKAIANgIAIAAgACkD4BE3A4geIABBlB5qQRo2AgAgAEGgHmogAEHcEWooAgA2AgAgAEGYHmogACkC1BE3AwAgAEEAOgDCESAAQejqATsBwBEgAEECOgDLESAAQbwRaiICQeEXLQAAOgAAIABBCToAvxEgAEEbNgKwESAAQQA6AL0RIABB2RcpAAAiEzcCtBEgAEGsHmogAEHIEWooAgA2AgAgACAAKQPAETcCpB4gAEGwHmpBGzYCACAAQbweaiACKAIANgIAIABBtB5qIBM3AgAgAEEAOgCiESAAQfTCATsBoBEgAEECOgCrESAAQZgRakGPGS0AADoAACAAQQU6AJ8RIABBHDYCkBEgAEEAOgCZESAAQYsZKAAANgKUESAAQcgeaiAAQagRaigCADYCACAAIAApA6ARNwPAHiAAQcweakEcNgIAIABB2B5qIABBnBFqKAIANgIAIABB0B5qIAApApQRNwMAIABBADoAghEgAEHu3gE7AYARIABBAjoAixEgAEH8EGoiAkG5GC0AADoAACAAQQk6AP8QIABBHTYC8BAgAEEAOgD9ECAAQbEYKQAAIhM3AvQQIABB5B5qIABBiBFqKAIANgIAIAAgACkDgBE3AtweIABB6B5qQR02AgAgAEH0HmogAigCADYCACAAQeweaiATNwIAIABBADoA4hAgAEH00AE7AeAQIABBAjoA6xAgAEHYEGpBADoAACAAQQQ6AN8QIABBHjYC0BAgAEH00IXLBjYC1BAgAEGAH2ogAEHoEGooAgA2AgAgACAAKQPgEDcD+B4gAEGEH2pBHjYCACAAQZAfaiAAQdwQaigCADYCACAAQYgfaiAAKQLUEDcDACAAQQA6AMIQIABB9eQBOwHAECAAQQI6AMsQIABBuBBqQQA6AAAgAEEEOgC/ECAAQR82ArAQIABB9eSRqwc2ArQQIABBnB9qIABByBBqKAIANgIAIAAgACkDwBA3ApQfIABBoB9qQR82AgAgAEGsH2ogAEG8EGooAgA2AgAgAEGkH2ogACkCtBA3AgAgAEEAOgCiECAAQejkATsBoBAgAEECOgCrECAAQZwQaiICQQA6AAAgAEEIOgCfECAAQSA2ApAQIABC4+S9i8au2rDuADcClBAgAEG4H2ogAEGoEGooAgA2AgAgACAAKQOgEDcDsB8gAEG8H2pBIDYCACAAQcgfaiACKAIANgIAIABBwB9qQuPkvYvGrtqw7gA3AwAgAEEAOgCCECAAQeLOATsBgBAgAEECOgCLECAAQfwPaiICQesXLQAAOgAAIABBCToA/w8gAEEhNgLwDyAAQQA6AP0PIABB4xcpAAAiEzcC9A8gAEHUH2ogAEGIEGooAgA2AgAgACAAKQOAEDcCzB8gAEHYH2pBITYCACAAQeQfaiACKAIANgIAIABB3B9qIBM3AgAgAEEAOgDiDyAAQezoATsB4A8gAEECOgDrDyAAQdwPaiICQZwYLwAAOwEAIABBCjoA3w8gAEEiNgLQDyAAQQA6AN4PIABBlBgpAAAiEzcC1A8gAEHwH2ogAEHoD2ooAgA2AgAgACAAKQPgDzcD6B8gAEH0H2pBIjYCACAAQYAgaiACKAIANgIAIABB+B9qIBM3AwAgAEEAOgDCDyAAQezCATsBwA8gAEECOgDLDyAAQbgPakGVFi0AADoAACAAQQU6AL8PIABBIzYCsA8gAEEAOgC5DyAAQZEWKAAANgK0DyAAQYwgaiAAQcgPaigCADYCACAAIAApA8APNwKEICAAQZAgakEjNgIAIABBnCBqIABBvA9qKAIANgIAIABBlCBqIAApArQPNwIAIABBADoAog8gAEHt0gE7AaAPIABBAjoAqw8gAEGYD2pBhRotAAA6AAAgAEEFOgCfDyAAQSQ2ApAPIABBADoAmQ8gAEGBGigAADYClA8gAEGoIGogAEGoD2ooAgA2AgAgACAAKQOgDzcDoCAgAEGsIGpBJDYCACAAQbggaiAAQZwPaigCADYCACAAQbAgaiAAKQKUDzcDACAAQQA6AIIPIABB7dgBOwGADyAAQQI6AIsPIABB/A5qIgJB3BgtAAA6AAAgAEEJOgD/DiAAQSU2AvAOIABBADoA/Q4gAEHUGCkAACITNwL0DiAAQcQgaiAAQYgPaigCADYCACAAIAApA4APNwK8ICAAQcggakElNgIAIABB1CBqIAIoAgA2AgAgAEHMIGogEzcCACAAQQA6AOIOIABB4/IBOwHgDiAAQQI6AOsOIABB2A5qQesaLQAAOgAAIABBBToA3w4gAEEmNgLQDiAAQQA6ANkOIABB5xooAAA2AtQOIABB4CBqIABB6A5qKAIANgIAIAAgACkD4A43A9ggIABB5CBqQSY2AgAgAEHwIGogAEHcDmooAgA2AgAgAEHoIGogACkC1A43AwAgAEEAOgDCDiAAQfPWATsBwA4gAEECOgDLDiAAQbgOakH8GS8AADsAACAAQQY6AL8OIABBJzYCsA4gAEEAOgC6DiAAQfgZKAAANgK0DiAAQfwgaiAAQcgOaigCADYCACAAIAApA8AONwL0ICAAQYAhakEnNgIAIABBjCFqIABBvA5qKAIANgIAIABBhCFqIAApArQONwIAIABBADoAog4gAEH0ygE7AaAOIABBAjoAqw4gAEGYDmpBwAovAAA7AAAgAEEGOgCfDiAAQSg2ApAOIABBADoAmg4gAEG8CigAADYClA4gAEGYIWogAEGoDmooAgA2AgAgACAAKQOgDjcDkCEgAEGcIWpBKDYCACAAQaghaiAAQZwOaigCADYCACAAQaAhaiAAKQKUDjcDACAAQQA6AIIOIABB5sIBOwGADiAAQQI6AIsOIABBBzoA/w0gAEEpNgLwDSAAQQA6APsNIABByRcoAAA2APcNIABBxhcoAAA2AvQNIABBtCFqIABBiA5qKAIANgIAIAAgACkDgA43AqwhIABBuCFqQSk2AgAgAEHEIWogAEH8DWooAgA2AgAgAEG8IWogACkC9A03AgAgAEEAOgDiDSAAQezsATsB4A0gAEECOgDrDSAAQQc6AN8NIABBKjYC0A0gAEEAOgDbDSAAQa4XKAAANgDXDSAAQasXKAAANgLUDSAAQdAhaiAAQegNaigCADYCACAAIAApA+ANNwPIISAAQdQhakEqNgIAIABB4CFqIABB3A1qKAIANgIAIABB2CFqIAApAtQNNwMAIABBADoAwg0gAEHi3AE7AcANIABBAjoAyw0gAEEHOgC/DSAAQSs2ArANIABBADoAuw0gAEGwGigAADYAtw0gAEGtGigAADYCtA0gAEHsIWogAEHIDWooAgA2AgAgACAAKQPADTcC5CEgAEHwIWpBKzYCACAAQfwhaiAAQbwNaigCADYCACAAQfQhaiAAKQK0DTcCACAAQQA6AKINIABB8+QBOwGgDSAAQQI6AKsNIABBBzoAnw0g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IAAgACkDsAo3A9AkIABB3CRqQTg2AgAgAEHoJGogAEGsCmooAgA2AgAgAEHgJGogACkCpAo3AwAgAEEAOgCSCiAAQevWATsBkAogAEECOgCbCiAAQYgKakHNGy8AADsAACAAQQY6AI8KIABBOTYCgAogAEEAOgCKCiAAQckbKAAANgKECiAAQfQkaiAAQZgKaigCADYCACAAIAApA5AKNwLsJCAAQfgkakE5NgIAIABBhCVqIABBjApqKAIANgIAIABB/CRqIAApAoQKNwIAIABBADoA8gkgAEHz4gE7AfAJIABBAjoA+wkgAEHsCWoiAkEAOgAAIABBCDoA7wkgAEE6NgLgCSAAQuHYiYvmrdqw7gA3AuQJIABBkCVqIABB+AlqKAIANgIAIAAgACkD8Ak3A4glIABBlCVqQTo2AgAgAEGgJWogAigCADYCACAAQZglakLh2ImL5q3asO4ANwMAIABBADoA0gkgAEHz7gE7AdAJIABBAjoA2wkgAEEHOgDPCSAAQTs2AsAJIABBADoAywkgAEGaGigAADYAxwkgAEGXGigAADYCxAkgAEGsJWogAEHYCWooAgA2AgAgACAAKQPQCTcCpCUgAEGwJWpBOzYCACAAQbwlaiAAQcwJaigCADYCACAAQbQlaiAAKQLECTcCACAAQQA6ALIJIABB59gBOwGwCSAAQQI6ALsJIABBrAlqIgJBADoAACAAQQg6AK8JIABBPDYCoAkgAELnwrHLtqzasO4ANwKkCSAAQcglaiAAQbgJaigCADYCACAAIAApA7AJNwPAJSAAQcwlakE8NgIAIABB2CVqIAIoAgA2AgAgAEHQJWpC58Kxy7as2rDuADcDACAAQQA6AJIJIABB7eQBOwGQCSAAQQI6AJsJIABBBzoAjwkgAEE9NgKACSAAQQA6AIsJIABBuBooAAA2AIcJIABBtRooAAA2AoQJIABB5CVqIABBmAlqKAIANgIAIAAgACkDkAk3AtwlIABB6CVqQT02AgAgAEH0JWogAEGMCWooAgA2AgAgAEHsJWogACkChAk3AgAgAEEAOgDyCCAAQfDCATsB8AggAEECOgD7CCAAQQc6AO8IIABBPjYC4AggAEEAOgDrCCAAQc0aKAAANgDnCCAAQcoaKAAANgLkCCAAQYAmaiAAQfgIaigCADYCACAAIAApA/AINwP4JSAAQYQmakE+NgIAIABBkCZqIABB7AhqKAIANgIAIABBiCZqIAApAuQINwMAIABBADoA0gggAEHz0gE7AdAIIABBAjoA2wggAEEHOgDPCCAAQT82AsAIIABBADoAywggAEGiJSgAADYAxwggAEGfJSgAADYCxAggAEGcJmogAEHYCGooAgA2AgAgACAAKQPQCDcClCYgAEGgJmpBPzYCACAAQawmaiAAQcwIaigCADYCACAAQaQmaiAAKQLECDcCACAAQQA6ALIIIABB69oBOwGwCCAAQQI6ALsIIABBqAhqQdETLQAAOgAAIABBBToArwggAEHAADYCoAggAEEAOgCpCCAAQc0TKAAANgKkCCAAQbgmaiAAQbgIaigCADYCACAAIAApA7AINwOwJiAAQbwmakHAADYCACAAQcgmaiAAQawIaigCADYCACAAQcAmaiAAKQKkCDcDACAAQQA6AJIIIABB89wBOwGQCCAAQQI6AJsIIABBiAhqQZclLQAAOgAAIABBBToAjwggAEHBADYCgAggAEEAOgCJCCAAQZMlKAAANgKECCAAQdQmaiAAQZgIaigCADYCACAAIAApA5AINwLMJiAAQdgmakHBADYCACAAQeQmaiAAQYwIaigCADYCACAAQdwmaiAAKQKECDcCACAAQQA6APIHIABB+d4BOwHwByAAQQI6APsHIABBwSUvAAA7AOgHIABBBjoA7wcgAEHCADYC4AcgAEEAOgDqByAAQb0lKAAANgLkByAAQfAmaiAAKAL4BzYCACAAIAApA/AHNwPoJiAAQfQmakHCADYCACAAQYAnaiAAKALsBzYCACAAQfgmaiAAKQLkBzcDACAAQQA6ANIHIABB894BOwHQByAAQQI6ANsHIABBqhovAAA7AMgHIABBBjoAzwcgAEHDADYCwAcgAEEAOgDKByAAQaYaKAAANgLEByAAQYwnaiAAKALYBzYCACAAIAApA9AHNwKEJyAAQZAnakHDADYCACAAQZwnaiAAKALMBzYCACAAQZQnaiAAKQLEBzcCACAAQQA6ALIHIABB4cwBOwGwByAAQQI6ALsHIABBlBAtAAA6AKwHIABBCToArwcgAEHEADYCoAcgAEEAOgCtByAAQYwQKQAAIhM3AqQHIABBqCdqIAAoArgHNgIAIAAgACkDsAc3A6AnIABBrCdqQcQA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4t4BOwHQAiAAQQI6ANsCIABBBzoAzwIgAEHYADYCwAIgAEEAOgDLAiAAQZMXKAAANgDHAiAAQZAXKAAANgLEAiAAQdgraiAAKALYAjYCACAAIAApA9ACNwPQKyAAQdwrakHYADYCACAAQegraiAAKALMAjYCACAAQeAraiAAKQLEAjcDACAAQQA6ALICIABB9NgBOwGwAiAAQQI6ALsCIABBBzoArwIgAEHZADYCoAIgAEEAOgCrAiAAQfAbKAAANgCnAiAAQe0bKAAANgKkAiAAQfQraiAAKAK4AjYCACAAIAApA7ACNwLsKyAAQfgrakHZADYCACAAQYQsaiAAKAKsAjYCACAAQfwraiAAKQKkAjcCACAAQQA6AJICIABB7c4BOwGQAiAAQQI6AJsCIABBADoAjAIgAEEIOgCPAiAAQdoANgKAAiAAQu3CsYv2rNi5+QA3AoQCIABBkCxqIAAoApgCNgIAIAAgACkDkAI3A4gsIABBlCxqQdoANgIAIABBoCxqIAAoAowCNgIAIABBmCxqQu3CsYv2rNi5+QA3AwAgAEEAOgDyASAAQeHmATsB8AEgAEECOgD7ASAAQQA6AOwBIABBCDoA7wEgAEHbADYC4AEgAELh5s2L1q3ZueUANwLkASAAQawsaiAAKAL4ATYCACAAIAApA/ABNwKkLCAAQbAsakHbADYCACAAQbwsaiAAKALsATYCACAAQbQsakLh5s2L1q3ZueUANwIAIABBADoA0gEgAEH06AE7AdABIABBAjoA2wEgAEGCFC0AADoAyAEgAEEFOgDPASAAQdwANgLAASAAQQA6AMkBIABB/hMoAAA2AsQBIABByCxqIAAoAtgBNgIAIAAgACkD0AE3A8AsIABBzCxqQdwANgIAIABB2CxqIAAoAswBNgIAIABB0CxqIAApAsQBNwMAIABBAzoAuwEgAEEAOgCzASAAQbIKLQAAOgCyASAAQbAKLwAAOwGwASAAQQA6AKwBIABBCDoArwEgAEHdADYCoAEgAELowt2Llq3asO4ANwKkASAAQeQsaiAAKAK4ATYCACAAIAApA7ABNwLcLCAAQegsakHdADYCACAAQfQsaiAAKAKsATYCACAAQewsakLowt2Llq3asO4ANwIAIABBADoAkgEgAEHs3AE7AZABIABBAjoAmwEgAEEHOgCPASAAQd4ANgKAASAAQQA6AIsBIABBqiUoAAA2AIcBIABBpyUoAAA2AoQBIABBgC1qIAAoApgBNgIAIAAgACkDkAE3A/gsIABBhC1qQd4ANgIAIABBkC1qIAAoAowBNgIAIABBiC1qIAApAoQBNwMAIABBADoAciAAQejCATsBcCAAQQI6AHsgAEGRJS0AADoAaCAAQQU6AG8gAEHfADYCYCAAQQA6AGkgAEGNJSgAADYCZCAAQZwtaiAAKAJ4NgIAIAAgACkDcDcClC0gAEGgLWpB3wA2AgAgAEGsLWogACgCbDYCACAAQaQtaiAAKQJkNwIAIABBADoAUiAAQeLCATsBUCAAQQI6AFsgAEEHOgBPIABB4AA2AkAgAEEAOgBLIABBvBMoAAA2AEcgAEG5EygAADYCRCAAQbgtaiAAKAJYNgIAIAAgACkDUDcDsC0gAEG8LWpB4AA2AgAgAEHILWogACgCTDYCACAAQcAtaiAAKQJENwMAIABBADoAMiAAQeruATsBMCAAQQI6ADsgAEEAOgAsIABBCDoALyAAQeEANgIgIABC6sLZi+at2bnlADcCJCAAQdQtaiAAKAI4NgIAIAAgACkDMDcCzC0gAEHYLWpB4QA2AgAgAEHkLWogACgCLDYCACAAQdwtakLqwtmL5q3ZueUANwIAIABBADoAEiAAQfPqATsBECAAQQI6ABsgAEGpHy0AADoADCAAQQk6AA8gAEHiADYCACAAQQA6AA0gAEGhHykAACITNwIEIABB8C1qIAAoAhg2AgAgACAAKQMQNwPoLSAAQfQtakHiADYCACAAQYAuaiAAKAIMNgIAIABB+C1qIBM3AwBByLArQgA3AgBBxLArQciwKzYCAANAIwBBEGsiCCQAIABBiC5qIhECfyAAQbAYaiAEQRxsaiEFAkACQAJAQcSwKygCAEHIsCtGBEBByLArKAIAIQZByLArIQMMAQsCQEHIsCsoAgAiBkUEQEHIsCshAgNAIAIoAggiAygCACACRiEHIAMhAiAHDQALDAELIAYhAgNAIAIiAygCBCICDQALCwJAIAUoAgQgBS0ACyICIALAIg9BAEgiCxsiByADKAIUIAMtABsiAiACwEEASCINGyICIAIgB0sbIhAEQCADKAIQIANBEGogDRsgBSgCACAFIAsbIBAQRiILDQELIAIgB0kNAQwCCyALQQBODQELIAZFDQEgCCADNgIMIANBBGoMAgtByLArKAIAIgJFDQAgBSgCACAFIA9BAEgbIQ9ByLArIQYDQAJAAkACQAJAAkACQCACIgMoAhQgAi0AGyICIALAQQBIIg0bIgIgByACIAdJIhAbIgsEQCAPIAMoAhAgA0EQaiANGyINIAsQRiISRQRAIAIgB0sNAgwDCyASQQBODQIMAQsgAiAHTQ0CCyADIQYgAygCACICDQUMBAsgDSAPIAsQRiICDQELIBANAQwCCyACQQBODQELIANBBGohBiADKAIEIgINAQsLIAggAzYCDCAGDAELIAhByLArNgIMQciwKwsiBigCACICBH9BAAVBLBAzIgJBEGohAwJAIAUsAAtBAE4EQCADIAUpAgA3AgAgAyAFKAIINgIIDAELIAMgBSgCACAFKAIEEG0LIAIgBSgCDDYCHCACQSBqIQMCQCAFLAAbQQBOBEAgAyAFKQIQNwIAIAMgBSgCGDYCCAwBCyADIAUoAhAgBSgCFBBtCyACIAgoAgw2AgggAkIANwIAIAYgAjYCACACIQNBxLArKAIAKAIAIgUEQEHEsCsgBTYCACAGKAIAIQMLQciwKygCACADEJUBQcywK0HMsCsoAgBBAWo2AgBBAQs6AAQgESACNgIAIAhBEGokACAEQQFqIgRB4wBHDQALIABBhC5qIQQDQCAEQQFrLAAAQQBIBEAgBEEMaygCABAxCyAEQRxrIQIgBEERaywAAEEASARAIAIoAgAQMQsgAiIEIABBsBhqRw0ACyAALAAPQQBIBEAgACgCBBAxCyAALAAbQQBIBEAgACgCEBAxCyAALAAvQQBIBEAgACgCJBAxCyAALAA7QQBIBEAgACgCMBAxCyAALABPQQBIBEAgACgCRBAxCyAALABbQQBIBEAgACgCUBAxCyAALABvQQBIBEAgACgCZBAxCyAALAB7QQBIBEAgACgCcBAxCyAALACPAUEASARAIAAoAoQBEDELIAAsAJsBQQBIBEAgACgCkAEQMQsgACwArwFBAEgEQCAAKAKkARAxCyAALAC7AUEASARAIAAoArABEDELIAAsAM8BQQBIBEAgACgCxAEQMQsgACwA2wFBAEgEQCAAKALQARAxCyAALADvAUEASARAIAAoAuQBEDELIAAsAPsBQQBIBEAgACgC8AEQMQsgACwAjwJBAEgEQCAAKAKEAhAxCyAALACbAkEASARAIAAoApACEDELIAAsAK8CQQBIBEAgACgCpAIQMQsgACwAuwJBAEgEQCAAKAKwAhAxCyAALADPAkEASARAIAAoAsQCEDELIAAsANsCQQBIBEAgACgC0AIQMQsgACwA7wJBAEgEQCAAKALkAhAxCyAALAD7AkEASARAIAAoAvACEDELIA4QMSAALACLA0EASARAIAAoAoADEDELIAAsAJ8DQQBIBEAgACgClAMQMQsgACwAqwNBAEgEQCAAKAKgAxAxCyAALAC/A0EASARAIAAoArQDEDELIAAsAMsDQQBIBEAgACgCwAMQMQsgACwA3wNBAEgEQCAAKALUAxAxCyAALADrA0EASARAIAAoAuADEDELIAAsAP8DQQBIBEAgACgC9AMQMQsgACwAiwRBAEgEQCAAKAKABBAxCyAALACfBEEASARAIAAoApQEEDELIAAsAKsEQQBIBEAgACgCoAQQMQsgChAxIAAsALsEQQBIBEAgACgCsAQQMQsgACwAzwRBAEgEQCAAKALEBBAxCyAALADbBEEASARAIAAoAtAEEDELIAAsAO8EQQBIBEAgACgC5AQQMQsgACwA+wRBAEgEQCAAKALwBBAxCyAALACPBUEASARAIAAoAoQFEDELIAAsAJsFQQBIBEAgACgCkAUQMQsgACwArwVBAEgEQCAAKAKkBRAxCyAALAC7BUEASARAIAAoArAFEDELIAAsAM8FQQBIBEAgACgCxAUQMQsgACwA2wVBAEgEQCAAKALQBRAxCyAALADvBUEASARAIAAoAuQFEDELIAAsAPsFQQBIBEAgACgC8AUQMQsgACwAjwZBAEgEQCAAKAKEBhAxCyAALACbBkEASARAIAAoApAGEDELIAAsAK8GQQBIBEAgACgCpAYQMQsgACwAuwZBAEgEQCAAKAKwBhAxCyAALADPBkEASARAIAAoAsQGEDELIAAsANsGQQBIBEAgACgC0AYQMQsgACwA7wZBAEgEQCAAKALkBhAxCyAALAD7BkEASARAIAAoAvAGEDELIAAsAI8HQQBIBEAgACgChAcQMQsgACwAmwdBAEgEQCAAKAKQBxAxCyAALACvB0EASARAIAAoAqQHEDELIAAsALsHQQBIBEAgACgCsAcQMQsgACwAzwdBAEgEQCAAKALEBxAxCyAALADbB0EASARAIAAoAtAHEDELIAAsAO8HQQBIBEAgACgC5AcQMQsgACwA+wdBAEgEQCAAKALwBxAxCyAALACPCEEASARAIAAoAoQIEDELIAAsAJsIQQBIBEAgACgCkAgQMQsgACwArwhBAEgEQCAAKAKkCBAxCyAALAC7CEEASARAIAAoArAIEDELIAAsAM8IQQBIBEAgACgCxAgQMQsgACwA2whBAEgEQCAAKALQCBAxCyAALADvCEEASARAIAAoAuQIEDELIAAsAPsIQQBIBEAgACgC8AgQMQsgACwAjwlBAEgEQCAAKAKECRAxCyAALACbCUEASARAIAAoApAJEDELIAAsAK8JQQBIBEAgACgCpAkQMQsgACwAuwlBAEgEQCAAKAKwCRAxCyAALADPCUEASARAIAAoAsQJEDELIAAsANsJQQBIBEAgACgC0AkQMQsgACwA7wlBAEgEQCAAKALkCRAxCyAALAD7CUEASARAIAAoAvAJEDELIAAsAI8KQQBIBEAgACgChAoQMQsgACwAmwpBAEgEQCAAKAKQChAxCyAALACvCkEASARAIAAoAqQKEDELIAAsALsKQQBIBEAgACgCsAoQMQsgACwAzwpBAEgEQCAAKALEChAxCyAALADbCkEASARAIAAoAtAKEDELIAAsAO8KQQBIBEAgACgC5AoQMQsgACwA+wpBAEgEQCAAKALwChAxCyAALACPC0EASARAIAAoAoQLEDELIAAsAJsLQQBIBEAgACgCkAsQMQsgACwArwtBAEgEQCAAKAKkCxAxCyAALAC7C0EASARAIAAoArALEDELIAAsAM8LQQBIBEAgACgCxAsQMQsgACwA2wtBAEgEQCAAKALQCxAxCyAALADvC0EASARAIAAoAuQLEDELIAAsAPsLQQBIBEAgACgC8AsQMQsgACwAjwxBAEgEQCAAKAKEDBAxCyAALACbDEEASARAIAAoApAMEDELIAAsAK8MQQBIBEAgACgCpAwQMQsgACwAuwxBAEgEQCAAKAKwDBAxCyAALADPDEEASARAIAAoAsQMEDELIAAsANsMQQBIBEAgACgC0AwQMQsgACwA7wxBAEgEQCAAKALkDBAxCyAALAD7DEEASARAIAAoAvAMEDELIAkQMSAALACLDUEASARAIAAoAoANEDELIAAsAJ8NQQBIBEAgACgClA0QMQsgACwAqw1BAEgEQCAAKAKgDRAxCyAALAC/DUEASARAIAAoArQNEDELIAAsAMsNQQBIBEAgACgCwA0QMQsgACwA3w1BAEgEQCAAKALUDRAxCyAALADrDUEASARAIAAoAuANEDELIAAsAP8NQQBIBEAgACgC9A0QMQsgACwAiw5BAEgEQCAAKAKADhAxCyAALACfDkEASARAIAAoApQOEDELIAAsAKsOQQBIBEAgACgCoA4QMQsgACwAvw5BAEgEQCAAKAK0DhAxCyAALADLDkEASARAIAAoAsAOEDELIAAsAN8OQQBIBEAgACgC1A4QMQsgACwA6w5BAEgEQCAAKALgDhAxCyAALAD/DkEASARAIAAoAvQOEDELIAAsAIsPQQBIBEAgACgCgA8QMQsgACwAnw9BAEgEQCAAKAKUDxAxCyAALACrD0EASARAIAAoAqAPEDELIAAsAL8PQQBIBEAgACgCtA8QMQsgACwAyw9BAEgEQCAAKALADxAxCyAALADfD0EASARAIAAoAtQPEDELIAAsAOsPQQBIBEAgACgC4A8QMQsgACwA/w9BAEgEQCAAKAL0DxAxCyAALACLEEEASARAIAAoAoAQEDELIAAsAJ8QQQBIBEAgACgClBAQMQsgACwAqxBBAEgEQCAAKAKgEBAxCyAALAC/EEEASARAIAAoArQQEDELIAAsAMsQQQBIBEAgACgCwBAQMQsgACwA3xBBAEgEQCAAKALUEBAxCyAALADrEEEASARAIAAoAuAQEDELIAAsAP8QQQBIBEAgACgC9BAQMQsgACwAixFBAEgEQCAAKAKAERAxCyAALACfEUEASARAIAAoApQREDELIAAsAKsRQQBIBEAgACgCoBEQMQsgACwAvxFBAEgEQCAAKAK0ERAxCyAALADLEUEASARAIAAoAsAREDELIAAsAN8RQQBIBEAgACgC1BEQMQsgACwA6xFBAEgEQCAAKALgERAxCyAALAD/EUEASARAIAAoAvQREDELIAAsAIsSQQBIBEAgACgCgBIQMQsgACwAnxJBAEgEQCAAKAKUEhAxCyAALACrEkEASARAIAAoAqASEDELIAAsAL8SQQBIBEAgACgCtBIQMQsgACwAyxJBAEgEQCAAKALAEhAxCyAALADfEkEASARAIAAoAtQSEDELIAAsAOsSQQBIBEAgACgC4BIQMQsgACwA/xJBAEgEQCAAKAL0EhAxCyAALACLE0EASARAIAAoAoATEDELIAAsAJ8TQQBIBEAgACgClBMQMQsgACwAqxNBAEgEQCAAKAKgExAxCyAALAC/E0EASARAIAAoArQTEDELIAAsAMsTQQBIBEAgACgCwBMQMQsgACwA3xNBAEgEQCAAKALUExAxCyAALADrE0EASARAIAAoAuATEDELIAAsAP8TQQBIBEAgACgC9BMQMQsgACwAixRBAEgEQCAAKAKAFBAxCyAALACfFEEASARAIAAoApQUEDELIAAsAKsUQQBIBEAgACgCoBQQMQsgACwAvxRBAEgEQCAAKAK0FBAxCyAALADLFEEASARAIAAoAsAUEDELIAAsAN8UQQBIBEAgACgC1BQQMQsgACwA6xRBAEgEQCAAKALgFBAxCyAALAD/FEEASARAIAAoAvQUEDELIAAsAIsVQQBIBEAgACgCgBUQMQsgACwAnxVBAEgEQCAAKAKUFRAxCyAALACrFUEASARAIAAoAqAVEDELIAAsAL8VQQBIBEAgACgCtBUQMQsgACwAyxVBAEgEQCAAKALAFRAxCyAALADfFUEASARAIAAoAtQVEDELIAAsAOsVQQBIBEAgACgC4BUQMQsgACwA/xVBAEgEQCAAKAL0FRAxCyAALACLFkEASARAIAAoAoAWEDELIAAsAJ8WQQBIBEAgACgClBYQMQsgACwAqxZBAEgEQCAAKAKgFhAxCyAALAC/FkEASARAIAAoArQWEDELIAAsAMsWQQBIBEAgACgCwBYQMQsgACwA3xZBAEgEQCAAKALUFhAxCyAALADrFkEASARAIAAoAuAWEDELIAAsAP8WQQBIBEAgACgC9BYQMQsgACwAixdBAEgEQCAAKAKAFxAxCyAALACfF0EASARAIAAoApQXEDELIAAsAKsXQQBIBEAgACgCoBcQMQsgACwAvxdBAEgEQCAAKAK0FxAxCyAALADLF0EASARAIAAoAsAXEDELIAAsAN8XQQBIBEAgACgC1BcQMQsgACwA6xdBAEgEQCAAKALgFxAxCyAALAD/F0EASARAIAAoAvQXEDELIAAsAIsYQQBIBEAgACgCgBgQMQsgACwAnxhBAEgEQCAAKAKUGBAxCyAALACrGEEASARAIAAoAqAYEDELIABBkC5qJAAgAUEFNgLk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ayIAJAACQEHIsSv+EgAAQQFxDQBByLErEFNFDQBBvLErQgA3AgBBxLErQQA2AgBByLErEFILAn9Bx7ErLAAAQQBIBEBBwLErQQA2AgBBvLErKAIADAELQcexK0EAOgAAQbyxKwtBADoAACAAQQAQOCAAIABB8s4AEDkiASgCCDYCGCAAIAEpAgA3AxAgAUIANwIAIAFBADYCCCAAIABBEGpB7s4AEDYiASgCCDYCKCAAIAEpAgA3AyAgAUIANwIAIAFBADYCCEG8sSsgACgCICAAQSBqIAAtACsiAcBBAEgiBBsgACgCJCABIAQbEGsaIAAsACtBAEgEQCAAKAIgEDELIAAsABtBAEgEQCAAKAIQEDELIAAsAAtBAEgEQCAAKAIAEDELIABBABA4IAAgAEHNzwAQOSIBKAIINgIYIAAgASkCADcDECABQgA3AgAgAUEANgIIIAAgAEEQakHuzgAQNiIBKAIINgIoIAAgASkCADcDICABQgA3AgAgAUEANgIIQbyxKyAAKAIgIABBIGogAC0AKyIBwEEASCIEGyAAKAIkIAEgBBsQaxogACwAK0EASARAIAAoAiAQMQsgACwAG0EASARAIAAoAhAQMQsgACwAC0EASARAIAAoAgAQMQsgAEEAEDggACAAQdXPABA5IgEoAgg2AhggACABKQIANwMQIAFCADcCACABQQA2AgggACAAQRBqQe7OABA2IgEoAgg2AiggACABKQIANwMgIAFCADcCACABQQA2AghBvLErIAAoAiAgAEEgaiAALQArIgHAQQBIIgQbIAAoAiQgASAEGxBrGiAALAArQQBIBEAgACgCIBAxCyAALAAbQQBIBEAgACgCEBAxCyAALAALQQBIBEAgACgCABAxCyAAQQAQOCAAIABBvs8AEDkiASgCCDYCGCAAIAEpAgA3AxAgAUIANwIAIAFBADYCCCAAIABBEGpB7s4AEDYiASgCCDYCKCAAIAEpAgA3AyAgAUIANwIAIAFBADYCCEG8sSsgACgCICAAQSBqIAAtACsiAcBBAEgiBBsgACgCJCABIAQbEGsaIAAsACtBAEgEQCAAKAIgEDELIAAsABtBAEgEQCAAKAIQEDELIAAsAAtBAEgEQCAAKAIAEDELIABBABA4IAAgAEGIzwAQOSIBKAIINgIYIAAgASkCADcDECABQgA3AgAgAUEANgIIIAAgAEEQakHuzgAQNiIBKAIINgIoIAAgASkCADcDICABQgA3AgAgAUEANgIIQbyxKyAAKAIgIABBIGogAC0AKyIBwEEASCIEGyAAKAIkIAEgBBsQaxogACwAK0EASARAIAAoAiAQMQsgACwAG0EASARAIAAoAhAQMQsgACwAC0EASARAIAAoAgAQMQsgAEEAEDggACAAQbrPABA5IgEoAgg2AhggACABKQIANwMQIAFCADcCACABQQA2AgggACAAQRBqQe7OABA2IgEoAgg2AiggACABKQIANwMgIAFCADcCACABQQA2AghBvLErIAAoAiAgAEEgaiAALQArIgHAQQBIIgQbIAAoAiQgASAEGxBrGiAALAArQQBIBEAgACgCIBAxCyAALAAbQQBIBEAgACgCEBAxCyAALAALQQBIBEAgACgCABAxCyAAQQAQOCAAIABBp88AEDkiASgCCDYCGCAAIAEpAgA3AxAgAUIANwIAIAFBADYCCCAAIABBEGpB7s4AEDYiASgCCDYCKCAAIAEpAgA3AyAgAUIANwIAIAFBADYCCEG8sSsgACgCICAAQSBqIAAtACsiAcBBAEgiBBsgACgCJCABIAQbEGsaIAAsACtBAEgEQCAAKAIgEDELIAAsABtBAEgEQCAAKAIQEDELIAAsAAtBAEgEQCAAKAIAEDELIABBABA4IAAgAEGvzwAQOSIBKAIINgIYIAAgASkCADcDECABQgA3AgAgAUEANgIIIAAgAEEQakHuzgAQNiIBKAIINgIoIAAgASkCADcDICABQgA3AgAgAUEANgIIQbyxKyAAKAIgIABBIGogAC0AKyIBwEEASCIEGyAAKAIkIAEgBBsQaxogACwAK0EASARAIAAoAiAQMQsgACwAG0EASARAIAAoAhAQMQsgACwAC0EASARAIAAoAgAQMQsgAEEBEDggACAAQZrPABA5IgEoAgg2AhggACABKQIANwMQIAFCADcCACABQQA2AgggACAAQRBqQe7OABA2IgEoAgg2AiggACABKQIANwMgIAFCADcCACABQQA2AghBvLErIAAoAiAgAEEgaiAALQArIgHAQQBIIgQbIAAoAiQgASAEGxBrGiAALAArQQBIBEAgACgCIBAxCyAALAAbQQBIBEAgACgCEBAxCyAALAALQQBIBEAgACgCABAxCyAAQQAQOCAAIABBgM8AEDkiASgCCDYCGCAAIAEpAgA3AxAgAUIANwIAIAFBADYCCCAAIABBEGpB7s4AEDYiASgCCDYCKCAAIAEpAgA3AyAgAUIANwIAIAFBADYCCEG8sSsgACgCICAAQSBqIAAtACsiAcBBAEgiBBsgACgCJCABIAQbEGsaIAAsACtBAEgEQCAAKAIgEDELIAAsABtBAEgEQCAAKAIQEDELIAAsAAtBAEgEQCAAKAIAEDELIABBABA4IAAgAEHFzwAQOSIBKAIINgIYIAAgASkCADcDECABQgA3AgAgAUEANgIIIAAgAEEQakHuzgAQNiIBKAIINgIoIAAgASkCADcDICABQgA3AgAgAUEANgIIQbyxKyAAKAIgIABBIGogAC0AKyIBwEEASCIEGyAAKAIkIAEgBBsQaxogACwAK0EASARAIAAoAiAQMQsgACwAG0EASARAIAAoAhAQMQsgACwAC0EASARAIAAoAgAQMQsgAEEAEDggACAAQfnOABA5IgEoAgg2AhggACABKQIANwMQIAFCADcCACABQQA2AgggACAAQRBqQe7OABA2IgEoAgg2AiggACABKQIANwMgIAFCADcCACABQQA2AghBvLErIAAoAiAgAEEgaiAALQArIgHAQQBIIgQbIAAoAiQgASAEGxBrGiAALAArQQBIBEAgACgCIBAxCyAALAAbQQBIBEAgACgCEBAxCyAALAALQQBIBEAgACgCABAxCyAAQQAQOCAAIABBkM8AEDkiASgCCDYCGCAAIAEpAgA3AxAgAUIANwIAIAFBADYCCCAAIABBEGpB7s4AEDYiASgCCDYCKCAAIAEpAgA3AyAgAUIANwIAIAFBADYCCEG8sSsgACgCICAAQSBqIAAtACsiAcBBAEgiBBsgACgCJCABIAQbEGsaIAAsACtBAEgEQCAAKAIgEDELIAAsABtBAEgEQCAAKAIQEDELIAAsAAtBAEgEQCAAKAIAEDELQcexKywAACEBQbyxKygCACEEIABBMGokACAOQbyxKyAEIAFBAE4bNgLIASAOIAM2AsQBIA4gAjYCwAFBxtEAIA5BwAFqEJ0BELkCIA5BATYCtAEgDiAOKALkATYCsAEgDiAOKAKkAjYCuAEgDkHuHkHDISAOLQD0ARs2ArwBIA5Bwc4ANgKgASAOIA4oAtQBIA4oAtAB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EAAAABAAAAD9Tv0MAAAAAAAAAAAAAAAAAAAAACAEQQpq/VwAAP0NEAECAxEFBgcSCQoLEw0ODyIIQQT9rQH9UP0M8P////D////w////8P////2uAf36Af3mAf0LAlAgAyAHIAJBBHb9ESACQQV2/RwBIAJBBnb9HAIgAkEHdv0cAyIKQQT9qwH9DBAAAAAQAAAAEAAAABAAAAD9TiAI/QwPAAAADwAAAA8AAAAPAAAA/U79UP0M8P////D////w////8P////2uAf36Af3mAf0LAhAgAyAHIAJBFHb9ESACQRV2/RwBIAJBFnb9HAIgAkEXdv0cA/0MEAAAABAAAAAQAAAAEAAAAP1O/QwAAAAAAAAAAAAAAAAAAAAAIARBDmr9XAAA/Q0QAQIDEQUGBxIJCgsTDQ4PIghBBP2tAf1Q/Qzw////8P////D////w/////a4B/foB/eYB/QsCYCADIAcgCv0MEAAAABAAAAAQAAAAEAAAAP1OIAj9DA8AAAAPAAAADwAAAA8AAAD9Tv1Q/Qzw////8P////D////w/////a4B/foB/eYB/QsCICADIAcgAkEYdv0RIAJBGXb9HAEgAkEadv0cAiACQRt2/RwD/QwQAAAAEAAAABAAAAAQAAAA/U79DAAAAAAAAAAAAAAAAAAAAAAgBEESav1cAAD9DRABAgMRBQYHEgkKCxMNDg8iCEEE/a0B/VD9DPD////w////8P////D////9rgH9+gH95gH9CwJwIAMgByAJQQT9qwH9DBAAAAAQAAAAEAAAABAAAAD9TiAI/QwPAAAADwAAAA8AAAAPAAAA/U79UP0M8P////D////w////8P////2uAf36Af3mAf0LAjAgBUEBaiIFIAZHDQALCwseAQF/QbCWAygCACIABEAgABDdAkGwlgNBADYCAAsL3wYBDn8jAEHwA2siACQAIABB6ANqIgYgAygCHCIHNgIAIAdBBGpBAf4eAgAaIAYQZiEKAn8gBS0AC0EHdgRAIAUoAgQMAQsgBS0AC0H/AHELBEACfyAFLQALQQd2BEAgBSgCAAwBCyAFCygCACAKQS0gCigCACgCLBEEAEYhCwsgAiALIABB6ANqIABB4ANqIABB3ANqIRMgAEHYA2ohECMAQRBrIgYkACAAQcgDaiICQgA3AgAgAkEANgIIIAZBEGok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AAAAACAGQQZq/VwAAP0NEAECAxEFBgcSCQoLEw0ODyIEQQT9rQH9DPj////4////+P////j////9rgH9+gH95gH9CwJQIAIgAyAE/QwPAAAADwAAAA8AAAAPAAAA/U79DPj////4////+P////j////9rgH9+gH95gH9CwIQIAIgA/0MAAAAAAAAAAAAAAAAAAAAACAGQQpq/VwAAP0NEAECAxEFBgcSCQoLEw0ODyIEQQT9rQH9DPj////4////+P////j////9rgH9+gH95gH9CwJgIAIgAyAE/QwPAAAADwAAAA8AAAAPAAAA/U79DPj////4////+P////j////9rgH9+gH95gH9CwIgIAIgA/0MAAAAAAAAAAAAAAAAAAAAACAGQQ5q/VwAAP0NEAECAxEFBgcSCQoLEw0ODyIEQQT9rQH9DPj////4////+P////j////9rgH9+gH95gH9CwJwIAIgAyAE/QwPAAAADwAAAA8AAAAPAAAA/U79DPj////4////+P////j////9rgH9+gH95gH9CwIwIAVBAWoiBSAHRw0ACwsL9QQBCH8CfyMAQdABayIAJAAgAEIlNwPIASAAQcgBakEBckH14gAgAigCBBDeASEGIAAgAEGgAWo2ApwBEEIhCAJ/IAYEQCACKAIIIQUgACAEOQMoIAAgBTYCICAAQaABakEeIAggAEHIAWogAEEgahBgDAELIAAgBDkDMCAAQaABakEeIAggAEHIAWogAEEwahBgCyEHIABBoQE2AlAgAEGQAWpBACAAQdAAahBOIQggAEGgAWoiCSEFAkAgB0EeTgRAEEIhBQJ/IAYEQCACKAIIIQcgACAEOQMIIAAgBzYCACAAQZwBaiAFIABByAFqIAAQiAEMAQsgACAEOQMQIABBnAFqIAUgAEHIAWogAEEQahCIAQsiB0F/Rg0BIAgoAgAhBSAIIAAoApwBNgIAIAUEQCAFIAgoAgQRAAALIAAoApwBIQULIAUgBSAHaiIKIAIQciELIABBoQE2AlAgAEHIAGpBACAAQdAAahBOIQUCQCAAKAKcASAAQaABakYEQCAAQdAAaiEHDAELIAdBAXQQRSIHRQ0BIAUoAgAhBiAFIAc2AgAgBgRAIAYgBSgCBBEAAAsgACgCnAEhCQsgAEE4aiIGIAIoAhwiDDYCACAMQQRqQQH+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AAtBB3YEQCABKAIADAELIAELIgI2ArwBIAAgAEEQajYCDCAAQQA2AggDQAJAIABB2AJqIABB0AJqEEANACAAKAK8AQJ/IAEtAAtBB3YEQCABKAIEDAELIAEtAAtB/wBxCyACakYEQAJ/IAEtAAtBB3YEQCABKAIEDAELIAEtAAtB/wBxCyEDIAECfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQtBAXQQNyABIAEtAAtBB3YEfyABKAIIQf////8HcUEBawVBCgsQNyAAIAMCfyABLQALQQd2BEAgASgCAAwBCyABCyICajYCvAELAn8gACgC2AIiAygCDCIIIAMoAhBGBEAgAyADKAIAKAIkEQEADAELIAgoAgALIAYgAiAAQbwBaiAAQQhqIAAoAswCIABB0AFqIABBEGogAEEMaiAHELIBDQAgAEHYAmoQWBoMAQsLAkACfyAALQDbAUEHdgRAIAAoAtQBDAELIAAtANsBQf8AcQtFDQAgACgCDCIDIABBEGprQZ8BSg0AIAAgA0EEajYCDCADIAAoAgg2AgALIAUgAiAAKAK8ASAEIAYQxAM3AwAgAEHQAWogAEEQaiAAKAIMIAQQYSAAQdgCaiAAQdACahBABEAgBCAEKAIAQQJyNgIACyAAKALYAiECIAEQNBogAEHQAWoQNBogAEHgAmokACACC5kFAQN/IwBB4AJrIgAkACAAIAI2AtACIAAgATYC2AIgAxCJASEGIAMgAEHgAWoQwgEhByAAQdABaiADIABBzAJqEMEBIwBBEGsiAiQAIABBwAFqIgFCADcCACABQQA2AgggAkEQaiQAIAEgAS0AC0EHdgR/IAEoAghB/////wdxQQFrBUEKCxA3IAACfyABLQALQQd2BEAgASgCAAwBCyABCyICNgK8ASAAIABBEGo2AgwgAEEANgIIA0ACQCAAQdgCaiAAQdACahBADQAgACgCvAECfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQsgAmpGBEACfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQshAyABAn8gAS0AC0EHdgRAIAEoAgQMAQsgAS0AC0H/AHELQQF0EDcgASABLQALQQd2BH8gASgCCEH/////B3FBAWsFQQoLEDcgACADAn8gAS0AC0EHdgRAIAEoAgAMAQsgAQsi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AiAAIAE2ApgCIABB4AFqIAMgAEHwAWogAEHvAWogAEHuAWoQogIjAEEQayICJAAgAEHQAWoiAUIANwIAIAFBADYCCCACQRBqJAAgASABLQALQQd2BH8gASgCCEH/////B3FBAWsFQQoLEDcgAAJ/IAEtAAtBB3YEQCABKAIADAELIAELIgI2AswBIAAgAEEgajYCHCAAQQA2AhggAEEBOgAXIABBxQA6ABYDQAJAIABBmAJqIABBkAJqEEENACAAKALMAQJ/IAEtAAtBB3YEQCABKAIEDAELIAEtAAtB/wBxCyACakYEQAJ/IAEtAAtBB3YEQCABKAIEDAELIAEtAAtB/wBxCyEDIAECfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQtBAXQQNyABIAEtAAtBB3YEfyABKAIIQf////8HcUEBawVBCgsQNyAAIAMCfyABLQALQQd2BEAgASgCAAwBCyABCyICajYCzAELAn8gACgCmAIiAygCDCIGIAMoAhBGBEAgAyADKAIAKAIkEQEADAELIAYtAAALwCAAQRdqIABBFmogAiAAQcwBaiAALADvASAALADuASAAQeABaiAAQSBqIABBHGogAEEYaiAAQfABahChAg0AIABBmAJqEFkaDAELCwJAAn8gAC0A6wFBB3YEQCAAKALkAQwBCyAALQDrAUH/AHELRQ0AIAAtABdFDQAgACgCHCIDIABBIGprQZ8BSg0AIAAgA0EEajYCHCADIAAoAhg2AgALIAAgAiAAKALMASAEEMEDIAApAwAhByAFIAApAwg3AwggBSAHNwMAIABB4AFqIABBIGogACgCHCAEEGEgAEGYAmogAEGQAmoQQQRAIAQgBCgCAEECcjYCAAsgACgCmAIhAiABEDQaIABB4AFqEDQaIABBoAJqJAAgAgu5BQEBfyMAQZACayIAJAAgACACNgKAAiAAIAE2AogCIABB0AFqIAMgAEHgAWogAEHfAWogAEHeAWoQogIjAEEQayICJAAgAEHAAWoiAUIANwIAIAFBADYCCCACQRBqJAAgASABLQALQQd2BH8gASgCCEH/////B3FBAWsFQQoLEDcgAAJ/IAEtAAtBB3YEQCABKAIADAELIAELIgI2ArwBIAAgAEEQajYCDCAAQQA2AgggAEEBOgAHIABBxQA6AAYDQAJAIABBiAJqIABBgAJqEEENACAAKAK8AQJ/IAEtAAtBB3YEQCABKAIEDAELIAEtAAtB/wBxCyACakYEQAJ/IAEtAAtBB3YEQCABKAIEDAELIAEtAAtB/wBxCyEDIAECfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQtBAXQQNyABIAEtAAtBB3YEfyABKAIIQf////8HcUEBawVBCgsQNyAAIAMCfyABLQALQQd2BEAgASgCAAwBCyABCyICajYCvAELAn8gACgCiAIiAygCDCIGIAMoAhBGBEAgAyADKAIAKAIkEQEADAELIAYtAAALwCAAQQdqIABBBmogAiAAQbwBaiAALADfASAALADeASAAQdABaiAAQRBqIABBDGogAEEIaiAAQeABahChAg0AIABBiAJqEFkaDAELCwJAAn8gAC0A2wFBB3YEQCAAKALUAQwBCyAALQDbAUH/AHELRQ0AIAAtAAdFDQAgACgCDCIDIABBEGprQZ8BSg0AIAAgA0EEajYCDCADIAAoAgg2AgALIAUgAiAAKAK8ASAEEMIDOQMAIABB0AFqIABBEGogACgCDCAEEGEgAEGIAmogAEGAAmoQQQRAIAQgBCgCAEECcjYCAAsgACgCiAIhAiABEDQaIABB0AFqEDQaIABBkAJqJAAgAgu5BQEBfyMAQZACayIAJAAgACACNgKAAiAAIAE2AogCIABB0AFqIAMgAEHgAWogAEHfAWogAEHeAWoQogIjAEEQayICJAAgAEHAAWoiAUIANwIAIAFBADYCCCACQRBqJAAgASABLQALQQd2BH8gASgCCEH/////B3FBAWsFQQoLEDcgAAJ/IAEtAAtBB3YEQCABKAIADAELIAELIgI2ArwBIAAgAEEQajYCDCAAQQA2AgggAEEBOgAHIABBxQA6AAYDQAJAIABBiAJqIABBgAJqEEENACAAKAK8AQJ/IAEtAAtBB3YEQCABKAIEDAELIAEtAAtB/wBxCyACakYEQAJ/IAEtAAtBB3YEQCABKAIEDAELIAEtAAtB/wBxCyEDIAECfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQtBAXQQNyABIAEtAAtBB3YEfyABKAIIQf////8HcUEBawVBCgsQNyAAIAMCfyABLQALQQd2BEAgASgCAAwBCyABCyICajYCvAELAn8gACgCiAIiAygCDCIGIAMoAhBGBEAgAyADKAIAKAIkEQEADAELIAYtAAALwCAAQQdqIABBBmogAiAAQbwBaiAALADfASAALADeASAAQdABaiAAQRBqIABBDGogAEEIaiAAQeABahChAg0AIABBiAJqEFkaDAELCwJAAn8gAC0A2wFBB3YEQCAAKALUAQwBCyAALQDbAUH/AHELRQ0AIAAtAAdFDQAgACgCDCIDIABBEGprQZ8BSg0AIAAgA0EEajYCDCADIAAoAgg2AgALIAUgAiAAKAK8ASAEEMMDOAIAIABB0AFqIABBEGogACgCDCAEEGEgAEGIAmogAEGAAmoQQQRAIAQgBCgCAEECcjYCAAsgACgCiAIhAiABEDQaIABB0AFqEDQaIABBkAJqJAAgAguPBQECfyMAQZACayIAJAAgACACNgKAAiAAIAE2AogCIAMQiQEhBiAAQdABaiADIABB/wFqEMMBIwBBEGsiAiQAIABBwAFqIgFCADcCACABQQA2AgggAkEQaiQAIAEgAS0AC0EHdgR/IAEoAghB/////wdxQQFrBUEKCxA3IAACfyABLQALQQd2BEAgASgCAAwBCyABCyICNgK8ASAAIABBEGo2AgwgAEEANgIIA0ACQCAAQYgCaiAAQYACahBBDQAgACgCvAECfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQsgAmpGBEACfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQshAyABAn8gAS0AC0EHdgRAIAEoAgQMAQsgAS0AC0H/AHELQQF0EDcgASABLQALQQd2BH8gASgCCEH/////B3FBAWsFQQoLEDcgACADAn8gAS0AC0EHdgRAIAEoAgAMAQsgAQsiAmo2ArwBCwJ/IAAoAogCIgMoAgwiByADKAIQRgRAIAMgAygCACgCJBEBAAwBCyAHLQAAC8AgBiACIABBvAFqIABBCGogACwA/wEgAEHQAWogAEEQaiAAQQxqQZDGAhC0AQ0AIABBiAJqEFkaDAELCwJAAn8gAC0A2wFBB3YEQCAAKALUAQwBCyAALQDbAUH/AHELRQ0AIAAoAgwiAyAAQRBqa0GfAUoNACAAIANBBGo2AgwgAyAAKAIINgIACyAFIAIgACgCvAEgBCAGEMQDNwMAIABB0AFqIABBEGogACgCDCAEEGEgAEGIAmogAEGAAmoQQQRAIAQgBCgCAEECcjYCAAsgACgCiAIhAiABEDQaIABB0AFqEDQaIABBkAJqJAAgAguPBQECfyMAQZACayIAJAAgACACNgKAAiAAIAE2AogCIAMQiQEhBiAAQdABaiADIABB/wFqEMMBIwBBEGsiAiQAIABBwAFqIgFCADcCACABQQA2AgggAkEQaiQAIAEgAS0AC0EHdgR/IAEoAghB/////wdxQQFrBUEKCxA3IAACfyABLQALQQd2BEAgASgCAAwBCyABCyICNgK8ASAAIABBEGo2AgwgAEEANgIIA0ACQCAAQYgCaiAAQYACahBBDQAgACgCvAECfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQsgAmpGBEACfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQshAyABAn8gAS0AC0EHdgRAIAEoAgQMAQsgAS0AC0H/AHELQQF0EDcgASABLQALQQd2BH8gASgCCEH/////B3FBAWsFQQoLEDcgACADAn8gAS0AC0EHdgRAIAEoAgAMAQsgAQsiAmo2ArwBCwJ/IAAoAogCIgMoAgwiByADKAIQRgRAIAMgAygCACgCJBEBAAwBCyAHLQAAC8AgBiACIABBvAFqIABBCGogACwA/wEgAEHQAWogAEEQaiAAQQxqQZDGAhC0AQ0AIABBiAJqEFkaDAELCwJAAn8gAC0A2wFBB3YEQCAAKALUAQwBCyAALQDbAUH/AHELRQ0AIAAoAgwiAyAAQRBqa0GfAUoNACAAIANBBGo2AgwgAyAAKAIINgIACyAFIAIgACgCvAEgBCAGEMgDOwEAIABB0AFqIABBEGogACgCDCAEEGEgAEGIAmogAEGAAmoQQQRAIAQgBCgCAEECcjYCAAsgACgCiAIhAiABEDQaIABB0AFqEDQaIABBkAJqJAAgAguPBQECfyMAQZACayIAJAAgACACNgKAAiAAIAE2AogCIAMQiQEhBiAAQdABaiADIABB/wFqEMMBIwBBEGsiAiQAIABBwAFqIgFCADcCACABQQA2AgggAkEQaiQAIAEgAS0AC0EHdgR/IAEoAghB/////wdxQQFrBUEKCxA3IAACfyABLQALQQd2BEAgASgCAAwBCyABCyICNgK8ASAAIABBEGo2AgwgAEEANgIIA0ACQCAAQYgCaiAAQYACahBBDQAgACgCvAECfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQsgAmpGBEACfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQshAyABAn8gAS0AC0EHdgRAIAEoAgQMAQsgAS0AC0H/AHELQQF0EDcgASABLQALQQd2BH8gASgCCEH/////B3FBAWsFQQoLEDcgACADAn8gAS0AC0EHdgRAIAEoAgAMAQsgAQsiAmo2ArwBCwJ/IAAoAogCIgMoAgwiByADKAIQRgRAIAMgAygCACgCJBEBAAwBCyAHLQAAC8AgBiACIABBvAFqIABBCGogACwA/wEgAEHQAWogAEEQaiAAQQxqQZDGAhC0AQ0AIABBiAJqEFkaDAELCwJAAn8gAC0A2wFBB3YEQCAAKALUAQwBCyAALQDbAUH/AHELRQ0AIAAoAgwiAyAAQRBqa0GfAUoNACAAIANBBGo2AgwgAyAAKAIINgIACyAFIAIgACgCvAEgBCAGEMkDNwMAIABB0AFqIABBEGogACgCDCAEEGEgAEGIAmogAEGAAmoQQQRAIAQgBCgCAEECcjYCAAsgACgCiAIhAiABEDQaIABB0AFqEDQaIABBkAJqJAAgAguPBQECfyMAQZACayIAJAAgACACNgKAAiAAIAE2AogCIAMQiQEhBiAAQdABaiADIABB/wFqEMMBIwBBEGsiAiQAIABBwAFqIgFCADcCACABQQA2AgggAkEQaiQAIAEgAS0AC0EHdgR/IAEoAghB/////wdxQQFrBUEKCxA3IAACfyABLQALQQd2BEAgASgCAAwBCyABCyICNgK8ASAAIABBEGo2AgwgAEEANgIIA0ACQCAAQYgCaiAAQYACahBBDQAgACgCvAECfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQsgAmpGBEACfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQshAyABAn8gAS0AC0EHdgRAIAEoAgQMAQsgAS0AC0H/AHELQQF0EDcgASABLQALQQd2BH8gASgCCEH/////B3FBAWsFQQoLEDcgACADAn8gAS0AC0EHdgRAIAEoAgAMAQsgAQsiAmo2ArwBCwJ/IAAoAogCIgMoAgwiByADKAIQRgRAIAMgAygCACgCJBEBAAwBCyAHLQAAC8AgBiACIABBvAFqIABBCGog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ADYCgAQgAUKUgICAgISAgIB/NwKEBCAAQbIOKAAANgAQIABBog79AAAA/QsAACAAQQA6ABQgASABQYAEaiIANgLIBCABQdgEaiAEIAAgAUHIBGoQOiABKALYBCAHNgIcIAEsAIsEQQBIBEAgASgCgAQQMQsgBSgCZCEHIAFBIBAzIgA2AoAEIAFCkoCAgICEgICAfzcChAQgAEHNEi8AADsAECAAQb0S/QAAAP0LAAAgAEEAOgASIAEgAUGABGoiADYCyAQgAUHYBGogBCAAIAFByARqEDogASgC2AQgBzYCHCABLACLBEEASARAIAEoAoAEEDELIAUoAmghByABQSAQMyIANgKABCABQpSAgICAhICAgH83AoQEIABBjw4oAAA2ABAgAEH/Df0AAAD9CwAAIABBADoAFCABIAFBgARqIgA2AsgEIAFB2ARqIAQgACABQcgEahA6IAEoAtgEIAc2AhwgASwAiwRBAEgEQCABKAKABBAxCyAFKAJsIQcgAUEgEDMiADYCgAQgAUKSgICAgISAgIB/NwKEBCAAQa4SLwAAOwAQIABBnhL9AAAA/QsAACAAQQA6ABIgASABQYAEaiIANgLIBCABQdgEaiAEIAAgAUHIBGoQOiABKALYBCAHNgIcIAEsAIsEQQBIBEAgASgCgAQQMQsgBSgCcCEHIAFBIBAzIgA2AoAEIAFCloCAgICEgICAfzcChAQgAEHkDCkAADcADiAAQdYM/QAAAP0LAAAgAEEAOgAWIAEgAUGABGoiADYCyAQgAUHYBGogBCAAIAFByARqEDogASgC2AQgBzYCHCABLACLBEEASARAIAEoAoAEEDELIAUoAnQhByABQSAQMyIANgKABCABQpSAgICAhICAgH83AoQEIABBshEoAAA2ABAgAEGiEf0AAAD9CwAAIABBADoAFCABIAFBgARqIgA2AsgEIAFB2ARqIAQgACABQcgEahA6IAEoAtgEIAc2AhwgASwAiwRBAEgEQCABKAKABBAxCyADQQBKBEAgEEECdKwhIkEAIQcDQCAFKAKIASAHQTxsaiIAIAUoAqABQQAgIRBJNgIkIAAgBSgCoAFBACAhEEk2AiggACAFKAKgASACICEgIhBUNgIsIAAgBSgCoAFBACAiEEk2AjAgACAFKAKgASACICIgIRBUNgI0IAAgBSgCoAFBACAhEEk2AjggACAFKAKgAUEAICEQSTYCACAAIAUoAqABQQAgIRBJNgIEIAAgBSgCoAEgAiAhICEQVDYCECAAIAUoAqABQQAgIRBJNgIUIAAgBSgCoAEgAiAhICEQVDYCGCAAIAUoAqABIAIgISAhEFQ2AhwgACAFKAKgAUEAICEQSTYCICAAIAUoAqABIAIgISAhEFQ2AgggACAFKAKgAUEAICEQSTYCDCAAKAIkIQsgAUHIBGoiBiAHEDggASAGQfM2EDkiBigCCDYC4AQgASAGKQIANwPYBCAGQgA3AgAgBkEANgIIIAEgAUHYBGpB7QwQNiIGKAIINgKIBCABIAYpAgA3A4AEIAZCADcCACAGQQA2AgggASABQYAEaiIGNgL4BCABQbgEaiAEIAYgAUH4BGoQOiABKAK4BCALNgIcIAEsAIsEQQBIBEAgASgCgAQQMQsgASwA4wRBAEgEQCABKALYBBAxCyABLADTBEEASARAIAEoAsgEEDELIAAoAighCyABQcgEaiIGIAcQOCABIAZB8zYQOSIGKAIINgLgBCABIAYpAgA3A9gEIAZCADcCACAGQQA2AgggASABQdgEakG3ERA2IgYoAgg2AogEIAEgBikCADcDgAQgBkIANwIAIAZBADYCCCABIAFBgARqIgY2AvgEIAFBuARqIAQgBiABQfgEahA6IAEoArgEIAs2AhwgASwAiwRBAEgEQCABKAKABBAxCyABLADjBEEASARAIAEoAtgEEDELIAEsANMEQQBIBEAgASgCyAQQMQsgACgCLCELIAFByARqIgYgBxA4IAEgBkHzNhA5IgYoAgg2AuAEIAEgBikCADcD2AQgBkIANwIAIAZBADYCCCABIAFB2ARqQbcOEDYiBigCCDYCiAQgASAGKQIANwOABCAGQgA3AgAgBkEANgIIIAEgAUGABGoiBjYC+AQgAUG4BGogBCAGIAFB+ARqEDogASgCuAQgCzYCHCABLACLBEEASARAIAEoAoAEEDELIAEsAOMEQQBIBEAgASgC2AQQMQsgASwA0wRBAEgEQCABKALIBBAxCyAAKAIwIQsgAUHIBGoiBiAHEDggASAGQfM2EDkiBigCCDYC4AQgASAGKQIANwPYBCAGQgA3AgAgBkEANgIIIAEgAUHYBGpB0BIQNiIGKAIINgKIBCABIAYpAgA3A4AEIAZCADcCACAGQQA2AgggASABQYAEaiIGNgL4BCABQbgEaiAEIAYgAUH4BGoQOiABKAK4BCALNgIcIAEsAIsEQQBIBEAgASgCgAQQMQsgASwA4wRBAEgEQCABKALYBBAxCyABLADTBEEASARAIAEoAsgEEDELIAAoAjQhCyABQcgEaiIGIAcQOCABIAZB8zYQOSIGKAIINgLgBCABIAYpAgA3A9gEIAZCADcCACAGQQA2AgggASABQdgEakGUDhA2IgYoAgg2AogEIAEgBikCADcDgAQgBkIANwIAIAZBADYCCCABIAFBgARqIgY2AvgEIAFBuARqIAQgBiABQfgEahA6IAEoArgEIAs2AhwgASwAiwRBAEgEQCABKAKABBAxCyABLADjBEEASARAIAEoAtgEEDELIAEsANMEQQBIBEAgASgCyAQQMQsgACgCOCELIAFByARqIgYgBxA4IAEgBkHzNhA5IgYoAgg2AuAEIAEgBikCADcD2AQgBkIANwIAIAZBADYCCCABIAFB2ARqQbESEDYiBigCCDYCiAQgASAGKQIANwOABCAGQgA3AgAgBkEANgIIIAEgAUGABGoiBjYC+AQgAUG4BGogBCAGIAFB+ARqEDogASgCuAQgCzYCHCABLACLBEEASARAIAEoAoAEEDELIAEsAOMEQQBIBEAgASgC2AQQMQsgASwA0wRBAEgEQCABKALIBBAxCyAAKAIAIQsgAUHIBGoiBiAHEDggASAGQfM2EDkiBigCCDYC4AQgASAGKQIANwPYBCAGQgA3AgAgBkEANgIIIAEgAUHYBGpBkg0QNiIGKAIINgKIBCABIAYpAgA3A4AEIAZCADcCACAGQQA2AgggASABQYAEaiIGNgL4BCABQbgEaiAEIAYgAUH4BGoQOiABKAK4BCALNgIcIAEsAIsEQQBIBEAgASgCgAQQMQsgASwA4wRBAEgEQCABKALYBBAxCyABLADTBEEASARAIAEoAsgEEDELIAAoAgQhCyABQcgEaiIGIAcQOCABIAZB8zYQOSIGKAIINgLgBCABIAYpAgA3A9gEIAZCADcCACAGQQA2AgggASABQdgEakHYERA2IgYoAgg2AogEIAEgBikCADcDgAQgBkIANwIAIAZBADYCCCABIAFBgARqIgY2AvgEIAFBuARqIAQgBiABQfgEahA6IAEoArgEIAs2AhwgASwAiwRBAEgEQCABKAKABBAxCyABLADjBEEASARAIAEoAtgEEDELIAEsANMEQQBIBEAgASgCyAQQMQsgACgCECELIAFByARqIgYgBxA4IAEgBkHzNhA5IgYoAgg2AuAEIAEgBikCADcD2AQgBkIANwIAIAZBADYCCCABIAFB2ARqQfMLEDYiBigCCDYCiAQgASAGKQIANwOABCAGQgA3AgAgBkEANgIIIAEgAUGABGoiBjYC+AQgAUG4BGogBCAGIAFB+ARqEDogASgCuAQgCzYCHCABLACLBEEASARAIAEoAoAEEDELIAEsAOMEQQBIBEAgASgC2AQQMQsgASwA0wRBAEgEQCABKALIBBAxCyAAKAIUIQsgAUHIBGoiBiAHEDggASAGQfM2EDkiBigCCDYC4AQgASAGKQIANwPYBCAGQgA3AgAgBkEANgIIIAEgAUHYBGpB7RAQNiIGKAIINgKIBCABIAYpAgA3A4AEIAZCADcCACAGQQA2AgggASABQYAEaiIGNgL4BCABQbgEaiAEIAYgAUH4BGoQOiABKAK4BCALNgIcIAEsAIsEQQBIBEAgASgCgAQQMQsgASwA4wRBAEgEQCABKALYBBAxCyABLADTBEEASARAIAEoAsgEEDELIAAoAhghCyABQcgEaiIGIAcQOCABIAZB8zYQOSIGKAIINgLgBCABIAYpAgA3A9gEIAZCADcCACAGQQA2AgggASABQdgEakGdDBA2IgYoAgg2AogEIAEgBikCADcDgAQgBkIANwIAIAZBADYCCCABIAFBgARqIgY2AvgEIAFBuARqIAQgBiABQfgEahA6IAEoArgEIAs2AhwgASwAiwRBAEgEQCABKAKABBAxCyABLADjBEEASARAIAEoAtgEEDELIAEsANMEQQBIBEAgASgCyAQQMQsgACgCHCELIAFByARqIgYgBxA4IAEgBkHzNhA5IgYoAgg2AuAEIAEgBikCADcD2AQgBkIANwIAIAZBADYCCCABIAFB2ARqQewNEDYiBigCCDYCiAQgASAGKQIANwOABCAGQgA3AgAgBkEANgIIIAEgAUGABGoiBjYC+AQgAUG4BGogBCAGIAFB+ARqEDogASgCuAQgCzYCHCABLACLBEEASARAIAEoAoAEEDELIAEsAOMEQQBIBEAgASgC2AQQMQsgASwA0wRBAEgE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NgIIIAEgAUHYBGpB7QwQNiIDKAIINgKIBCABIAMpAgA3A4AEIANCADcCACADQQA2AgggASABQYAEaiIDNgL4BCABQbgEaiAEIAMgAUH4BGoQOiABKAK4BCAGNgIcIAEsAIsEQQBIBEAgASgCgAQQMQsgASwA4wRBAEgEQCABKALYBBAxCyABLADTBEEASARAIAEoAsgEEDELIAAoAkwhBiABQcgEaiIDIAcQOCABIANBgzcQOSIDKAIINgLgBCABIAMpAgA3A9gEIANCADcCACADQQA2AgggASABQdgEakG3ERA2IgMoAgg2AogEIAEgAykCADcDgAQgA0IANwIAIANBADYCCCABIAFBgARqIgM2AvgEIAFBuARqIAQgAyABQfgEahA6IAEoArgEIAY2AhwgASwAiwRBAEgEQCABKAKABBAxCyABLADjBEEASARAIAEoAtgEEDELIAEsANMEQQBIBEAgASgCyAQQMQsgACgCUCEGIAFByARqIgMgBxA4IAEgA0GDNxA5IgMoAgg2AuAEIAEgAykCADcD2AQgA0IANwIAIANBADYCCCABIAFB2ARqQbcOEDYiAygCCDYCiAQgASADKQIANwOABCADQgA3AgAgA0EANgIIIAEgAUGABGoiAzYC+AQgAUG4BGogBCADIAFB+ARqEDogASgCuAQgBjYCHCABLACLBEEASARAIAEoAoAEEDELIAEsAOMEQQBIBEAgASgC2AQQMQsgASwA0wRBAEgEQCABKALIBBAxCyAAKAJUIQYgAUHIBGoiAyAHEDggASADQYM3EDkiAygCCDYC4AQgASADKQIANwPYBCADQgA3AgAgA0EANgIIIAEgAUHYBGpB0BIQNiIDKAIINgKIBCABIAMpAgA3A4AEIANCADcCACADQQA2AgggASABQYAEaiIDNgL4BCABQbgEaiAEIAMgAUH4BGoQOiABKAK4BCAGNgIcIAEsAIsEQQBIBEAgASgCgAQQMQsgASwA4wRBAEgEQCABKALYBBAxCyABLADTBEEASARAIAEoAsgEEDELIAAoAlghBiABQcgEaiIDIAcQOCABIANBgzcQOSIDKAIINgLgBCABIAMpAgA3A9gEIANCADcCACADQQA2AgggASABQdgEakGUDhA2IgMoAgg2AogEIAEgAykCADcDgAQgA0IANwIAIANBADYCCCABIAFBgARqIgM2AvgEIAFBuARqIAQgAyABQfgEahA6IAEoArgEIAY2AhwgASwAiwRBAEgEQCABKAKABBAxCyABLADjBEEASARAIAEoAtgEEDELIAEsANMEQQBIBEAgASgCyAQQMQsgACgCXCEGIAFByARqIgMgBxA4IAEgA0GDNxA5IgMoAgg2AuAEIAEgAykCADcD2AQgA0IANwIAIANBADYCCCABIAFB2ARqQbESEDYiAygCCDYCiAQgASADKQIANwOABCADQgA3AgAgA0EANgIIIAEgAUGABGoiAzYC+AQgAUG4BGogBCADIAFB+ARqEDogASgCuAQgBjYCHCABLACLBEEASARAIAEoAoAEEDELIAEsAOMEQQBIBEAgASgC2AQQMQsgASwA0wRBAEgEQCABKALIBBAxCyAAKAIAIQYgAUHIBGoiAyAHEDggASADQYM3EDkiAygCCDYC4AQgASADKQIANwPYBCADQgA3AgAgA0EANgIIIAEgAUHYBGpBkg0QNiIDKAIINgKIBCABIAMpAgA3A4AEIANCADcCACADQQA2AgggASABQYAEaiIDNgL4BCABQbgEaiAEIAMgAUH4BGoQOiABKAK4BCAGNgIcIAEsAIsEQQBIBEAgASgCgAQQMQsgASwA4wRBAEgEQCABKALYBBAxCyABLADTBEEASARAIAEoAsgEEDELIAAoAgQhBiABQcgEaiIDIAcQOCABIANBgzcQOSIDKAIINgLgBCABIAMpAgA3A9gEIANCADcCACADQQA2AgggASABQdgEakHYERA2IgMoAgg2AogEIAEgAykCADcDgAQgA0IANwIAIANBADYCCCABIAFBgARqIgM2AvgEIAFBuARqIAQgAyABQfgEahA6IAEoArgEIAY2AhwgASwAiwRBAEgEQCABKAKABBAxCyABLADjBEEASARAIAEoAtgEEDELIAEsANMEQQBIBEAgASgCyAQQMQsgACgCECEGIAFByARqIgMgBxA4IAEgA0GDNxA5IgMoAgg2AuAEIAEgAykCADcD2AQgA0IANwIAIANBADYCCCABIAFB2ARqQfMLEDYiAygCCDYCiAQgASADKQIANwOABCADQgA3AgAgA0EANgIIIAEgAUGABGoiAzYC+AQgAUG4BGogBCADIAFB+ARqEDogASgCuAQgBjYCHCABLACLBEEASARAIAEoAoAEEDELIAEsAOMEQQBIBEAgASgC2AQQMQsgASwA0wRBAEgEQCABKALIBBAxCyAAKAIUIQYgAUHIBGoiAyAHEDggASADQYM3EDkiAygCCDYC4AQgASADKQIANwPYBCADQgA3AgAgA0EANgIIIAEgAUHYBGpB7RAQNiIDKAIINgKIBCABIAMpAgA3A4AEIANCADcCACADQQA2AgggASABQYAEaiIDNgL4BCABQbgEaiAEIAMgAUH4BGoQOiABKAK4BCAGNgIcIAEsAIsEQQBIBEAgASgCgAQQMQsgASwA4wRBAEgEQCABKALYBBAxCyABLADTBEEASARAIAEoAsgEEDELIAAoAhghBiABQcgEaiIDIAcQOCABIANBgzcQOSIDKAIINgLgBCABIAMpAgA3A9gEIANCADcCACADQQA2AgggASABQdgEakGdDBA2IgMoAgg2AogEIAEgAykCADcDgAQgA0IANwIAIANBADYCCCABIAFBgARqIgM2AvgEIAFBuARqIAQgAyABQfgEahA6IAEoArgEIAY2AhwgASwAiwRBAEgEQCABKAKABBAxCyABLADjBEEASARAIAEoAtgEEDELIAEsANMEQQBIBEAgASgCyAQQMQsgACgCHCEGIAFByARqIgMgBxA4IAEgA0GDNxA5IgMoAgg2AuAEIAEgAykCADcD2AQgA0IANwIAIANBADYCCCABIAFB2ARqQewNEDYiAygCCDYCiAQgASADKQIANwOABCADQgA3AgAgA0EANgIIIAEgAUGABGoiAzYC+AQgAUG4BGogBCADIAFB+ARqEDogASgCuAQgBjYCHCABLACLBEEASARAIAEoAoAEEDELIAEsAOMEQQBIBEAgASgC2AQQMQsgASwA0wRBAEgEQCABKALIBBAxCyAAKAIgIQYgAUHIBGoiAyAHEDggASADQYM3EDkiAygCCDYC4AQgASADKQIANwPYBCADQgA3AgAgA0EANgIIIAEgAUHYBGpBjRIQNiIDKAIINgKIBCABIAMpAgA3A4AEIANCADcCACADQQA2AgggASABQYAEaiIDNgL4BCABQbgEaiAEIAMgAUH4BGoQOiABKAK4BCAGNgIcIAEsAIsEQQBIBEAgASgCgAQQMQsgASwA4wRBAEgEQCABKALYBBAxCyABLADTBEEASARAIAEoAsgEEDELIAAoAgghBiABQcgEaiIDIAcQOCABIANBgzcQOSIDKAIINgLgBCABIAMpAgA3A9gEIANCADcCACADQQA2AgggASABQdgEakHFDBA2IgMoAgg2AogEIAEgAykCADcDgAQgA0IANwIAIANBADYCCCABIAFBgARqIgM2AvgEIAFBuARqIAQgAyABQfgEahA6IAEoArgEIAY2AhwgASwAiwRBAEgEQCABKAKABBAxCyABLADjBEEASARAIAEoAtgEEDELIAEsANMEQQBIBEAgASgCyAQQMQsgACgCDCEGIAFByARqIgMgBxA4IAEgA0GDNxA5IgMoAgg2AuAEIAEgAykCADcD2AQgA0IANwIAIANBADYCCCABIAFB2ARqQZMREDYiAygCCDYCiAQgASADKQIANwOABCADQgA3AgAgA0EANgIIIAEgAUGABGoiAzYC+AQgAUG4BGogBCADIAFB+ARqEDogASgCuAQgBjYCHCABLACLBEEASARAIAEoAoAEEDELIAEsAOMEQQBIBEAgASgC2AQQMQsgASwA0wRBAEgEQCABKALIBBAxCyAAKAIkIQYgAUHIBGoiAyAHEDggASADQYM3EDkiAygCCDYC4AQgASADKQIANwPYBCADQgA3AgAgA0EANgIIIAEgAUHYBGpB/AwQNiIDKAIINgKIBCABIAMpAgA3A4AEIANCADcCACADQQA2AgggASABQYAEaiIDNgL4BCABQbgEaiAEIAMgAUH4BGoQOiABKAK4BCAGNgIcIAEsAIsEQQBIBEAgASgCgAQQMQsgASwA4wRBAEgEQCABKALYBBAxCyABLADTBEEASARAIAEoAsgEEDELIAAoAighBiABQcgEaiIDIAcQOCABIANBgzcQOSIDKAIINgLgBCABIAMpAgA3A9gEIANCADcCACADQQA2AgggASABQdgEakHEERA2IgMoAgg2AogEIAEgAykCADcDgAQgA0IANwIAIANBADYCCCABIAFBgARqIgM2AvgEIAFBuARqIAQgAyABQfgEahA6IAEoArgEIAY2AhwgASwAiwRBAEgEQCABKAKABBAxCyABLADjBEEASARAIAEoAtgEEDELIAEsANMEQQBIBEAgASgCyAQQMQsgACgCNCEGIAFByARqIgMgBxA4IAEgA0GDNxA5IgMoAgg2AuAEIAEgAykCADcD2AQgA0IANwIAIANBADYCCCABIAFB2ARqQdoLEDYiAygCCDYCiAQgASADKQIANwOABCADQgA3AgAgA0EANgIIIAEgAUGABGoiAzYC+AQgAUG4BGogBCADIAFB+ARqEDogASgCuAQgBjYCHCABLACLBEEASARAIAEoAoAEEDELIAEsAOMEQQBIBEAgASgC2AQQMQsgASwA0wRBAEgEQCABKALIBBAxCyAAKAI4IQYgAUHIBGoiAyAHEDggASADQYM3EDkiAygCCDYC4AQgASADKQIANwPYBCADQgA3AgAgA0EANgIIIAEgAUHYBGpB1hAQNiIDKAIINgKIBCABIAMpAgA3A4AEIANCADcCACADQQA2AgggASABQYAEaiIDNgL4BCABQbgEaiAEIAMgAUH4BGoQOiABKAK4BCAGNgIcIAEsAIsEQQBIBEAgASgCgAQQMQsgASwA4wRBAEgEQCABKALYBBAxCyABLADTBEEASARAIAEoAsgEEDELIAAoAjwhBiABQcgEaiIDIAcQOCABIANBgzcQOSIDKAIINgLgBCABIAMpAgA3A9gEIANCADcCACADQQA2AgggASABQdgEakGGDBA2IgMoAgg2AogEIAEgAykCADcDgAQgA0IANwIAIANBADYCCCABIAFBgARqIgM2AvgEIAFBuARqIAQgAyABQfgEahA6IAEoArgEIAY2AhwgASwAiwRBAEgEQCABKAKABBAxCyABLADjBEEASARAIAEoAtgEEDELIAEsANMEQQBIBEAgASgCyAQQMQsgAEFAaygCACEGIAFByARqIgMgBxA4IAEgA0GDNxA5IgMoAgg2AuAEIAEgAykCADcD2AQgA0IANwIAIANBADYCCCABIAFB2ARqQdMNEDYiAygCCDYCiAQgASADKQIANwOABCADQgA3AgAgA0EANgIIIAEgAUGABGoiAzYC+AQgAUG4BGogBCADIAFB+ARqEDogASgCuAQgBjYCHCABLACLBEEASARAIAEoAoAEEDELIAEsAOMEQQBIBEAgASgC2AQQMQsgASwA0wRBAEgEQCABKALIBBAxCyAAKAJEIQYgAUHIBGoiAyAHEDggASADQYM3EDkiAygCCDYC4AQgASADKQIANwPYBCADQgA3AgAgA0EANgIIIAEgAUHYBGpB9hEQNiIDKAIINgKIBCABIAMpAgA3A4AEIANCADcCACADQQA2AgggASABQYAEaiIDNgL4BCABQbgEaiAEIAMgAUH4BGoQOiABKAK4BCAGNgIcIAEsAIsEQQBIBEAgASgCgAQQMQsgASwA4wRBAEgEQCABKALYBBAxCyABLADTBEEASARAIAEoAsgEEDELIAAoAiwhBiABQcgEaiIDIAcQOCABIANBgzcQOSIDKAIINgLgBCABIAMpAgA3A9gEIANCADcCACADQQA2AgggASABQdgEakGuDBA2IgMoAgg2AogEIAEgAykCADcDgAQgA0IANwIAIANBADYCCCABIAFBgARqIgM2AvgEIAFBuARqIAQgAyABQfgEahA6IAEoArgEIAY2AhwgASwAiwRBAEgEQCABKAKABBAxCyABLADjBEEASARAIAEoAtgEEDELIAEsANMEQQBIBEAgASgCyAQQMQsgACgCMCEDIAFByARqIgAgBxA4IAEgAEGDNxA5IgAoAgg2AuAEIAEgACkCADcD2AQgAEIANwIAIABBADYCCCABIAFB2ARqQf4QEDYiACgCCDYCiAQgASAAKQIANwOABCAAQgA3AgAgAEEANgIIIAEgAUGABGoiADYC+AQgAUG4BGogBCAAIAFB+ARqEDogASgCuAQgAzYCHCABLACLBEEASARAIAEoAoAEEDELIAEsAOMEQQBIBEAgASgC2AQQMQsgASwA0wRBAEgEQCABKALIBBAxCyAHQQFqIgcgCkcNAAsLIAVBADYCqAEgBUGwAWohBkEAIQMDQCAIKAIgIAFBoARqQQQgCCgCJBEDABogCCgCICABQZwEakEEIAgoAiQRAwAaIAgoAiAgAUGYBGpBBCAIKAIkEQMAGgJAAkACQCAIKAIgIAgoAigRAQAEQCABQawjNgJAIAEgA7hEAAAAAAAAUD+iRAAAAAAAAFA/ojkDSCAJQZ3cACABQUBrEH0gBSgCqAEiAA0BIAFBrCM2AiAgCUGz0wAgAUEgahAyDAcLQQAhACABQcCIAf0ABAD9CwSABEEBIQIgASgCoARBAEoNAQwCCyAAIAUoArQBIgJGDQUgASAANgI4IAEgAjYCNCABQawjNgIwIAlB/tYAIAFBMGoQMgwDCwNAIAgoAiAgAUGABGogAEECdGoiCkEEIAgoAiQRAwAaIAooAgAgAmwhAiAAQQFqIgAgASgCoARIDQALC0EAIQogAUEANgLgBCABQgA3A9gEIAFBADYC0AQgAUIANwPIBEEAIQAgASgCnAQiBwRAIAdBAEgNCyABIAcQMyIANgLIBCABIAAgB2oiCjYC0AQgAEEAIAf8CwAgASAKNgLMBAsgCCgCICAAIAogAGsiCiAIKAIkEQMAGiABQdgEaiIHIAAgChCRAgJ/IAQgBxCBAiAGRgRAIAFBrCM2AlAgASABKALYBCABQdgEaiABLADjBEEASBs2AlQgCUHm1AAgAUHQAGoQMkEADAELIAEoAtgEIAFB2ARqIAEsAOMEQQBIGyILEGUiAEHw////B08NAwJAAkAgAEELTwRAIABBD3JBAWoiChAzIQcgASAKQYCAgIB4cjYCwAQgASAHNgK4BCABIAA2ArwEIAAgB2ohCgwBCyABIAA6AMMEIAFBuARqIgcgAGohCiAARQ0BCyAHIAsgAPwKAAALIApBADoAACABIAFBuARqIgA2AvAEIAFB+ARqIAQgACABQfAEahA6IAEoAvgEKAIcIQAgASwAwwRBAEgEQCABKAK4BBAxCyACrCAAKQMoIAApAyAgACkDGCAAKQMQfn5+UgRAIAFBrCM2ArABIAEgASgC2AQgAUHYBGogASwA4wRBAEgbNgK0ASAJQbjUACABQbABahAyIAApAyAhISAAKQMYISIgASAAKQMQPgKgASABICI+AqQBIAEgIT4CqAEgAUGsIzYCkAEgASABKAKABDYClAEgASABKQKEBDcDmAEgCUGw2wAgAUGQAWoQMkEADAELIAApAxghISABKAKEBCEKAkACQCAAKQMQIiIgASgCgAQiB6xSDQAgISAKrFINACAAKQMgIAE0AogEUQ0BCyABIAApAyA+AoABIAEgBzYChAEgASAKNgKIASABIAEoAogENgKMASABQawjNgJwIAEgASgC2AQgAUHYBGogASwA4wRBAEgbNgJ0IAEgIj4CeCABICE+AnwgCUHY2gAgAUHwAGoQMkEADAELIAIgASgCmARBAnRB8OYAaigCAGwiAiAAKAIAQQJ0QbDnAGooAgBuIAAQeUcEQCABKALYBCEKIAEsAOMEIQcgABB5IQAgASACNgJsIAEgADYCaCABQawjNgJgIAEgCiABQdgEaiAHQQBIGzYCZCAJQYvQACABQeAAahAyQQAMAQsgCCgCJCECIAgoAiAgACgCgAEgABB5IAIRAwAaIAAQeSEAIAUgBSgCqAFBAWo2AqgBIAAgA2ohA0EBCyEAIAEoAsgEIgIEQCACEDELIAEsAOMEQQBIBEAgASgC2AQQMQsgAA0ACwtBACECDAILEEwACyAFEHEgI303AwBBASECCyABQYAFaiQAIAIMAQtB1SEQlAEACyEAIAgoAiAgCCgCLBEAACAARQRAIBNB/B02AgBBuJ8CKAIAQfbSACATEDIgBSwA+wFBAEgEQCAFKALwARAxCyAYIAUoAswBENIBIBcgBSgCwAEQ0QEgFiAFKAKwARDQASAFKAKUASIABEAgBSAANgKYASAAEDELIAUoAogBIgAEQCAFIAA2AowBIAAQMQsgBSgCUCIABEAgBSAANgJUIAAQMQsgBRAxQQAhBQsgE0EQaiQAIAVFDQAgBUHwAWogEhDzAgsgCEG0pgIoAgAiADYCMCAAQQxrKAIAIAhBMGpqQcCmAigCADYCACAMEOUBGiAVELACIAhB8AFqJAAgBQRAIAUCfyMAQYAUayIMJABBqCkQMyIA/QwAAAAAAAAAAAAAAAAAAAAA/QsDACAAQQA2AkggAEFAa0IANwMAIAD9DAAAAAAAAAAAAAAAAAAAAAD9CwMQIAD9DAAAAAAAAAAAAAAAAAAAAAD9CwMgIABBADYCMCAAQgA3A4gBIAD9DAAAAAAAAAAAAAAAAAAAAAD9CwOQASAA/QwAAAAAAAAAAAAAAAAAAAAA/QsDoAEgAP0MAAAAAAAAAAAAAAAAAAAAAP0LA7ABIABCADcAvwEgAEIANwPIAiAAQgA3AM8CIAD9DAAAAAAAAAAAAAAAAAAAAAD9CwOYAiAA/QwAAAAAAAAAAAAAAAAAAAAA/QsDqAIgAP0MAAAAAAAAAAAAAAAAAAAAAP0LA7gCIABCADcD2AMgAEIANwDfAyAA/QwAAAAAAAAAAAAAAAAAAAAA/QsDqAMgAP0MAAAAAAAAAAAAAAAAAAAAAP0LA7gDIAD9DAAAAAAAAAAAAAAAAAAAAAD9CwPIAyAAQgA3AO8EIABCADcD6AQgAP0MAAAAAAAAAAAAAAAAAAAAAP0LA9gEIAD9DAAAAAAAAAAAAAAAAAAAAAD9CwPIBCAA/QwAAAAAAAAAAAAAAAAAAAAA/QsDuAQgAEIANwP4BSAAQgA3AP8FIAD9DAAAAAAAAAAAAAAAAAAAAAD9CwPIBSAA/QwAAAAAAAAAAAAAAAAAAAAA/QsD2AUgAP0MAAAAAAAAAAAAAAAAAAAAAP0LA+gFIABCADcDiAcgAEIANwCPByAA/QwAAAAAAAAAAAAAAAAAAAAA/QsD2AYgAP0MAAAAAAAAAAAAAAAAAAAAAP0LA+gGIAD9DAAAAAAAAAAAAAAAAAAAAAD9CwP4BiAAQZgIakIANwMAIABBnwhqQgA3AAAgAP0MAAAAAAAAAAAAAAAAAAAAAP0LA+gHIAD9DAAAAAAAAAAAAAAAAAAAAAD9CwP4ByAAQYgIav0MAAAAAAAAAAAAAAAAAAAAAP0LAwAgAEGvCWpCADcAACAAQagJakIANwMAIABBmAlq/QwAAAAAAAAAAAAAAAAAAAAA/QsDACAAQYgJav0MAAAAAAAAAAAAAAAAAAAAAP0LAwAgAEH4CGr9DAAAAAAAAAAAAAAAAAAAAAD9CwMAIABBvwpqQgA3AAAgAEG4CmpCADcDACAAQagKav0MAAAAAAAAAAAAAAAAAAAAAP0LAwAgAEGYCmr9DAAAAAAAAAAAAAAAAAAAAAD9CwMAIABBiApq/QwAAAAAAAAAAAAAAAAAAAAA/QsDACAAQc8LakIANwAAIABByAtqQgA3AwAgAEG4C2r9DAAAAAAAAAAAAAAAAAAAAAD9CwMAIABBqAtq/QwAAAAAAAAAAAAAAAAAAAAA/QsDACAAQZgLav0MAAAAAAAAAAAAAAAAAAAAAP0LAwAgAEHfDGpCADcAACAAQdgMakIANwMAIABByAxq/QwAAAAAAAAAAAAAAAAAAAAA/QsDACAAQbgMav0MAAAAAAAAAAAAAAAAAAAAAP0LAwAgAEGoDGr9DAAAAAAAAAAAAAAAAAAAAAD9CwMAIABB7w1qQgA3AAAgAEHoDWpCADcDACAAQdgNav0MAAAAAAAAAAAAAAAAAAAAAP0LAwAgAEHIDWr9DAAAAAAAAAAAAAAAAAAAAAD9CwMAIABBuA1q/QwAAAAAAAAAAAAAAAAAAAAA/QsDACAAQf8OakIANwAAIABB+A5qQgA3AwAgAEHoDmr9DAAAAAAAAAAAAAAAAAAAAAD9CwMAIABB2A5q/QwAAAAAAAAAAAAAAAAAAAAA/QsDACAAQcgOav0MAAAAAAAAAAAAAAAAAAAAAP0LAwAgAEGPEGpCADcAACAAQYgQakIANwMAIABB+A9q/QwAAAAAAAAAAAAAAAAAAAAA/QsDACAAQegPav0MAAAAAAAAAAAAAAAAAAAAAP0LAwAgAEHYD2r9DAAAAAAAAAAAAAAAAAAAAAD9CwMAIABBnxFqQgA3AAAgAEGYEWpCADcDACAAQYgRav0MAAAAAAAAAAAAAAAAAAAAAP0LAwAgAEH4EGr9DAAAAAAAAAAAAAAAAAAAAAD9CwMAIABB6BBq/QwAAAAAAAAAAAAAAAAAAAAA/QsDACAAQa8SakIANwAAIABBqBJqQgA3AwAgAEGYEmr9DAAAAAAAAAAAAAAAAAAAAAD9CwMAIABBiBJq/QwAAAAAAAAAAAAAAAAAAAAA/QsDACAAQfgRav0MAAAAAAAAAAAAAAAAAAAAAP0LAwAgAEIANwJ8IAD9DAAAAAAAAAAAAAAAAAAAAAD9CwJsIAD9DAAAAAAAAAAAAAAAAAAAAAD9CwJcIABByAFqQQBBzAD8CwAgAEHYAmpBAEHMAPwLACAAQegDakEAQcwA/AsAIABB+ARqQQBBzAD8CwAgAEGIBmpBAEHMAPwLACAAQZgHakEAQcwA/AsAIABBqAhqQQBBzAD8CwAgAEG4CWpBAEHMAPwLACAAQcgKakEAQcwA/AsAIABB2AtqQQBBzAD8CwAgAEHoDGpBAEHMAPwLACAAQfgNakEAQcwA/AsAIABBiA9qQQBBzAD8CwAgAEGYEGpBAEHMAPwLACAAQagRakEAQcwA/AsAIABBuBJqQQBB8AL8CwBB8SohBCAAQfEqNgKoFSAAQagVaiEKIABB6ABqIQhBASECA0AgCiACQQJ0aiAEQR52IARzQeWSnuAGbCACaiIENgIAIAogAkEBaiIBQQJ0aiAEQR52IARzQeWSnuAGbCABaiIENgIAIAogAkECaiIBQQJ0aiAEQR52IARzQeWSnuAGbCABaiIENgIAIAJBA2oiAUHwBEcEQCAKIAFBAnRqIARBHnYgBHNB5ZKe4AZsIAFqIgQ2AgAgAkEEaiECDAELCyAA/QwAAAAAAAAAAAAAAAAAAAAA/QsDgCkgAP0MAAAAAAAAAAAAAAAAAAAAAP0LApQpIABB+ChqQQA2AgAgAEHoKGr9DAAAAAAAAAAAAAAAAAAAAAD9CwMAAkACQEGQsSsoAgAiAkUNAEEBQQIgBSgCRBshByAFQRxqIQQgBSgCGCEBAkADQCACKAIQIgkgAUoEQCACKAIAIgINAQwDCyABIAlMDQEgAigCBCICDQALDAELAkACfyAEIAIoAhQgB2wgCCAFKAIUIAUoAjAQ3wJFBEAgDEHpHTYCMEG4nwIoAgBBjdYAIAxBMGoQMiAAEIICEDFBAAwBCyAAKAJoEHkhAiAAKAJsEHkhASAMQekdNgIgIAwgASACarhEAAAAAAAAUD+iRAAAAAAAAFA/ojkDKEG4nwIoAgAiAUH/2wAgDEEgahB9QZyxKygCACICRQ0CIAUoAhghCAJAA0AgAigCECIJIAhKBEAgAigCACICDQEMBQsgCCAJTA0BIAIoAgQiAg0ACwwDCyAEIAIoAhQgB2wgAEE0aiAFKAIUIAUoAiAQ3wJFBEAgDEHpHTYCECABQdfVACAMQRBqEDIgABCCAhAxQQAMAQsgACgCNBB5IQIgACgCOBB5IQggDEHpHTYCACAMIAIgCGq4RAAAAAAAAFA/okQAAAAAAABQP6I5AwggAUHh2wAgDBB9AkAgBSgCMCAFKAK4AWwiASAAQYAVaigCACAAKAL4FCICa0ECdU0NACABQYCAgIAETw0JIABB/BRqIggoAgAhCSABQQJ0IgMQMyIBIAIgCSACayIJ/AoAACAAIAEgA2o2AoAVIAggASAJajYCACAAIAE2AvgUIAJFDQAgAhAxCwJAIAQoAgAiBCAAQaQVaigCACAAKAKcFSIBa0EEdU0NACAEQYCAgIABTw0JIABBoBVqKAIAIQIgBEEEdCIEEDMiCCAEaiEJIAggAiABa0FwcWoiCCEEIAEgAkcEQANAIARBEGsiBCACQRBrIgL9AAMA/QsDACABIAJHDQALCyAAIAk2AqQVIAAgCDYCoBUgACAENgKcFSABRQ0AIAEQMQsCQCAFKAIwIgQgACgCkAEgACgCiAEiAmtBMG1NDQAgBEHWqtUqTw0JIAAoAowBIQEgBEEwbCIIEDMiCSABIAJrIgRBMG1BMGxqIgEgBEFQbUEwbGoiAyACIAT8CgAAIAAgCCAJajYCkAEgACABNgKMASAAIAM2AogBIAJFDQAgAhAxCwJAIAUoArgBIgIgACgC0AEgACgCyAEiBGtBAnVNDQAgAkGAgICABE8NCSAAKALMASEIIAJBAnQiCRAzIgEgBCAIIARrIgj8CgAAIAAgASAJajYC0AEgACABIAhqNgLMASAAIAE2AsgBIARFDQAgBBAxIAUoArgBIQILAkAgACgC3AEgACgC1AEiBGtBAnUgAk8NACACQYCAgIAETw0JIAAoAtgBIQggAkECdCIJEDMiASAEIAggBGsiCPwKAAAgACABIAlqNgLcASAAIAEgCGo2AtgBIAAgATYC1AEgBEUNACAEEDEgBSgCuAEhAgsCQCAAKALoASAAKALgASIEa0ECdSACTw0AIAJBgICAgARPDQkgACgC5AEhASACQQJ0IggQMyICIAQgASAEayIB/AoAACAAIAIgCGo2AugBIAAgASACajYC5AEgACACNgLgASAERQ0AIAQQMQtBqLErKAIAIgRFDQIgBSgCGCEBAkADQCAEKAIQIgIgAUoEQCAEKAIAIgQNAQwFCyABIAJMDQEgBCgCBCIEDQALDAMLQbSxKygCACICRQ0CAkADQCACKAIQIgggAUoEQCACKAIAIgINAQwFCyABIAhMDQEgAigCBCICDQALDAMLAkAgBCgCFCIEIAIoAhQiAiACIARJGyAHbCICIABB7BJqKAIAIgcgACgC6BIiBGsiAUsEQCACIAFrIgggAEHwEmooAgAiCSAHa00EQCAHQQAgCPwLACAAIAcgCGo2AuwSDAILIAJBAEgNBUH/////ByAJIARrIgdBAXQiCSACIAIgCUkbIAdB/////wNPGyIJEDMiByABakEAIAj8CwAgByAEIAH8CgAAIAAgByAJajYC8BIgACACIAdqNgLsEiAAIAc2AugSIARFDQEgBBAxDAELIAEgAk0NACAAIAIgBGo2AuwSC0HUsCsoAgAiAkUNAiAFKAIYIQQCQANAIAIoAhAiASAESgRAIAIoAgAiAg0BDAULIAEgBE4NASACKAIEIgINAAsMAwsCQCACKAIUIgIgAEH4EmooAgAiByAAKAL0EiIEayIBSwRAIAIgAWsiCCAAQfwSaigCACIJIAdrTQRAIAdBACAI/AsAIAAgByAIajYC+BIMAgsgAkEASA0FQf////8HIAkgBGsiB0EBdCIJIAIgAiAJSRsgB0H/////A08bIgkQMyIHIAFqQQAgCPwLACAHIAQgAfwKAAAgACAHIAlqNgL8EiAAIAIgB2o2AvgSIAAgBzYC9BIgBEUNASAEEDEMAQsgASACTQ0AIAAgAiAEajYC+BILQeCwKygCACICRQ0C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/AsAQdqJA0EAQfgA/AgTAEHSigNBAEHkAPwLAEG2iwNBAEG6CPwIFABB8JMDQQBB1AD8CBUAQcSUA0EAQTz8CwBBgJUDQQBB2QD8CBYAQdmVA0EAQT/8CwBBmJYDQQBBEPwIFwBBsJYDQQBByMMo/AsAQfjZK0EC/hcCAEH42StBf/4AAgAaDAELQfjZK0EBQn/+AQIAGgv8CQD8CQH8CQL8CQP8CQT8CQX8CQb8CQf8CQj8CQn8CQr8CQv8CQz8CQ38CQ78CQ/8CRD8CRH8CRL8CRP8CRT8CRX8CRb8CRcLC8b0AhgBllzima8A4pmuAOKZrQDimawA4pmrAOKZquKZquKZqgDimakA44CPAOOAjgDjgI0A44CMAHoAaW5maW5pdHkARmVicnVhcnkASmFudWFyeQBKdWx5AG1hbGF5AFRodXJzZGF5AFR1ZXNkYXkAV2VkbmVzZGF5AFNhdHVyZGF5AFN1bmRheQBNb25kYXkARnJpZGF5AE1heQAlbS8lZC8leQAhIWt2X3NlbGYuY3R4AGNhY2hlLmN0eABzaXgAJXMgZmFpbGVkIHRvIHJlbGVhc2UgbXV0ZXgAJXMgZmFpbGVkIHRvIGFjcXVpcmUgbXV0ZXgAY2lyY3VtZmxleAAtKyAgIDBYMHgALTBYKzBYIDBYLTB4KzB4IDB4AGhlYnJldwBoYXcATm92AFRodQB0ZWx1Z3UAQXVndXN0ACVzIGZhaWxlZCB0byBicm9hZGNhc3QAdW5zaWduZWQgc2hvcnQAYWxlcnQAcHJpbnQAdW5zaWduZWQgaW50AGNpcmN1bWZsZXgtYWNjZW50AGdyYXZlLWFjY2VudABmdWxsX2RlZmF1bHQAa3ZfY2FjaGVfcmVpbml0AGt2X2NhY2hlX2luaXQAeGRpZ2l0AC5jcm9zc19hdHRuLnF1ZXJ5LndlaWdodAAuYXR0bi5xdWVyeS53ZWlnaHQALmNyb3NzX2F0dG4ua2V5LndlaWdodAAuYXR0bi5rZXkud2VpZ2h0AC5jcm9zc19hdHRuLm91dC53ZWlnaHQALmF0dG4ub3V0LndlaWdodABlbmNvZGVyLmxuX3Bvc3Qud2VpZ2h0AC5tbHBfbG4ud2VpZ2h0AC5jcm9zc19hdHRuX2xuLndlaWdodAAuYXR0bl9sbi53ZWlnaHQAZGVjb2Rlci5sbi53ZWlnaHQAZGVjb2Rlci50b2tlbl9lbWJlZGRpbmcud2VpZ2h0AC5jcm9zc19hdHRuLnZhbHVlLndlaWdodAAuYXR0bi52YWx1ZS53ZWlnaHQAZW5jb2Rlci5jb252Mi53ZWlnaHQALm1scC4yLndlaWdodABlbmNvZGVyLmNvbnYxLndlaWdodAAubWxwLjAud2VpZ2h0AHNldAByaWdodC1jdXJseS1icmFja2V0AGxlZnQtY3VybHktYnJhY2tldAByaWdodC1zcXVhcmUtYnJhY2tldABsZWZ0LXNxdWFyZS1icmFja2V0AHB1bmN0AE9jdABmbG9hdABTYXQAY29tbWVyY2lhbC1hdAB1aW50NjRfdABoeXBoZW4tbWludXMAcmV2ZXJzZS1zb2xpZHVzAHdoaXNwZXJfZXhwX2NvbXB1dGVfdG9rZW5fbGV2ZWxfdGltZXN0YW1wcwBhZnJpa2FhbnMAcGFyYW1zAHJpZ2h0LXBhcmVudGhlc2lzAGxlZnQtcGFyZW50aGVzaXMAd2hpc3Blcl9wcmludF90aW1pbmdzAC5jcm9zc19hdHRuLnF1ZXJ5LmJpYXMALmF0dG4ucXVlcnkuYmlhcwAuY3Jvc3NfYXR0bi5vdXQuYmlhcwAuYXR0bi5vdXQuYmlhcwBlbmNvZGVyLmxuX3Bvc3QuYmlhcwAubWxwX2xuLmJpYXMALmNyb3NzX2F0dG5fbG4uYmlhcwAuYXR0bl9sbi5iaWFzAGRlY29kZXIubG4uYmlhcwAuY3Jvc3NfYXR0bi52YWx1ZS5iaWFzAC5hdHRuLnZhbHVlLmJpYXMAZW5jb2Rlci5jb252Mi5iaWFzAC5tbHAuMi5iaWFzAGVuY29kZXIuY29udjEuYmlhcwAubWxwLjAuYmlhcwAlcwBmb3VyAHdoaXNwZXJfbGFuZ19zdHIAQXByAGNvbnN0cnVjdG9yAHZlY3RvcgBjZ3JhcGgtPm5vZGVzW2NncmFwaC0+bl9ub2RlcyAtIDFdID09IHRlbnNvcgBiYXNoa2lyAGxvd2VyAHVwcGVyAGtobWVyAGJ1ZmZlcgBPY3RvYmVyAE5vdmVtYmVyAFNlcHRlbWJlcgBEZWNlbWJlcgB0YXRhcgBteWFubWFyAHVuc2lnbmVkIGNoYXIAaW9zX2Jhc2U6OmNsZWFyAE1hcgBxAC9Vc2Vycy9nZ2VyZ2Fub3YvZGV2ZWxvcG1lbnQvZ2l0aHViL3doaXNwZXIuY3BwL3doaXNwZXIuY3BwAGZ1bGwtc3RvcABTZXAAJUk6JU06JVMgJXAAdHdvAGF1dG8AcGFzaHRvAHplcm8AbGFvAFN1bgBKdW4AY2FycmlhZ2UtcmV0dXJuAGJyZXRvbgBzZW1pY29sb24Ac3RkOjpleGNlcHRpb24AX19jeGFfZ3VhcmRfYWNxdWlyZSBkZXRlY3RlZCByZWN1cnNpdmUgaW5pdGlhbGl6YXRpb24ATW9uAGxhdGluAHBlcmNlbnQtc2lnbgBwbHVzLXNpZ24AZXF1YWxzLXNpZ24AbnVtYmVyLXNpZ24AZG9sbGFyLXNpZ24AbGVzcy10aGFuLXNpZ24AZ3JlYXRlci10aGFuLXNpZ24Ac2V2ZW4AdHVya21lbgBoeXBoZW4Ab2NjaXRhbgB0aWJldGFuAG5hbgBnZXJtYW4AY2F0YWxhbgBsYXR2aWFuAGJlbGFydXNpYW4AcnVzc2lhbgBwZXJzaWFuAGluZG9uZXNpYW4AaHVuZ2FyaWFuAGJ1bGdhcmlhbgBib3NuaWFuAG1hY2Vkb25pYW4AdWtyYWluaWFuAHNsb3ZlbmlhbgBsaXRodWFuaWFuAG1vbmdvbGlhbgBpdGFsaWFuAG5vcndlZ2lhbgBzZXJiaWFuAGtvcmVhbgBKYW4AYWxudW0AbWFsYXlhbGFtAEp1bABjbnRybABnZ21sX25ld190ZW5zb3JfaW1wbABib29sAGxsAEFwcmlsAHRhbWlsAGVtc2NyaXB0ZW46OnZhbABueW5vcnNrAGFzdGVyaXNrAHF1ZXN0aW9uLW1hcmsAcXVvdGF0aW9uLW1hcmsAZXhjbGFtYXRpb24tbWFyawBibGFuawB0YWppawBncmVlawB1emJlawBzbG92YWsAagBtYW9yaQBGcmkAYXplcmJhaWphbmkAc3dhaGlsaQBuZXBhbGkAc29tYWxpAGJlbmdhbGkAbWFyYXRoaQBzaW5kaGkAaGluZGkAcHVuamFiaQBiYWRfYXJyYXlfbmV3X2xlbmd0aAB3ZWxzaABmaW5uaXNoAHNwYW5pc2gAZGFuaXNoAHBvbGlzaABlbmdsaXNoAHR1cmtpc2gAbHV4ZW1ib3VyZ2lzaABzd2VkaXNoAHlpZGRpc2gAYmFja3NsYXNoAGdyYXBoAGthemFraABkdXRjaABNYXJjaABmcmVuY2gAY3plY2gAQXVnAHRhZ2Fsb2cAdW5zaWduZWQgbG9uZwB0ZXJtaW5hdGluZwBzdGQ6OndzdHJpbmcAYmFzaWNfc3RyaW5nAHN0ZDo6c3RyaW5nAHN0ZDo6dTE2c3RyaW5nAHN0ZDo6dTMyc3RyaW5nAGVuY29kZXIucG9zaXRpb25hbF9lbWJlZGRpbmcAZGVjb2Rlci5wb3NpdGlvbmFsX2VtYmVkZGluZwBpbmYAJS4wTGYAJUxmAGlkKnNpemVvZihnZ21sX2ZwMTZfdCkgPD0gcGFyYW1zLT53c2l6ZQB3aGlzcGVyX3Rva2VuaXplAGZpdmUAdHJ1ZQBiYXNxdWUAVHVlAHdoaXNwZXJfaW5pdF9zdGF0ZQB3aGlzcGVyX2luaXRfbm9fc3RhdGUAd2hpc3Blcl9pbml0X2Zyb21fZmlsZV9ub19zdGF0ZQB3aGlzcGVyX2xhbmdfYXV0b19kZXRlY3Rfd2l0aF9zdGF0ZQB3aGlzcGVyX2Z1bGxfd2l0aF9zdGF0ZQB0cmFuc2xhdGUAZmFsc2UAcG9ydHVndWVzZQBtYWx0ZXNlAGZhcm9lc2UAY2hpbmVzZQBzdW5kYW5lc2UAdmlldG5hbWVzZQBfX2N4YV9ndWFyZF9yZWxlYXNlAHVuZGVyc2NvcmUAX19jeGFfZ3VhcmRfYWNxdWlyZQB3dHlwZSA9PSBjYWNoZS52LT50eXBlAHNyYzAtPnR5cGUgPT0gZHN0LT50eXBlAGRzdC0+dHlwZSA9PSBzcmMwLT50eXBlAFVua25vd24gZXJyb3IgdHlwZQBKdW5lAG9uZQBuaW5lAG5ld2xpbmUAbG93LWxpbmUAdmVydGljYWwtbGluZQBoYWl0aWFuIGNyZW9sZQBkb3VibGUAYXBvc3Ryb3BoZQB0aHJlZQBmcmVlAHRpbGRlAHJpZ2h0LWJyYWNlAGxlZnQtYnJhY2UAYmFja3NwYWNlAHRyYW5zY3JpYmUAcGVyaW9kAG1hcDo6YXQ6ICBrZXkgbm90IGZvdW5kAGFtcGVyc2FuZAB2b2lkAHdoaXNwZXJfbGFuZ19pZAB0ZXJtaW5hdGVfaGFuZGxlciB1bmV4cGVjdGVkbHkgcmV0dXJuZWQAdGhyZWFkIGNvbnN0cnVjdG9yIGZhaWxlZABfX3RocmVhZF9zcGVjaWZpY19wdHIgY29uc3RydWN0aW9uIGZhaWxlZAB0aHJlYWQ6OmpvaW4gZmFpbGVkAG11dGV4IGxvY2sgZmFpbGVkAGZvcm0tZmVlZABXZWQAd2hpc3Blcl9tb2RlbF9sb2FkACUwMmQ6JTAyZDolMDJkJXMlMDNkAHN0ZDo6YmFkX2FsbG9jAGRzdC0+bmVbMF0gPT0gbmMAYW1oYXJpYwBpY2VsYW5kaWMAYXJhYmljAERlYwAvVXNlcnMvZ2dlcmdhbm92L2RldmVsb3BtZW50L2dpdGh1Yi93aGlzcGVyLmNwcC9nZ21sLmMAd2IAcmIARmViAHZlcnRpY2FsLXRhYgBuX2xvZ2l0cyA9PSBjdHgudm9jYWIubl92b2NhYgB3K2IAcitiAGErYgByd2EAaGF1c2EAc2hvbmEAY29tbWEAc2luaGFsYQBsaW5nYWxhAGFscGhhAGthbm5hZGEAeW9ydWJhAFtfZXh0cmFfdG9rZW5fAFtfVFRfAG5iMDAgPT0gR0dNTF9UWVBFX1NJWkVbdHlwZV0AbmIwMCA9PSAoaW50KSBHR01MX1RZUEVfU0laRVt0eXBlXQBbX1NPVF9dAFtfTk9UX10AW19FT1RfXQBbX0JFR19dAGEtPm5lWzFdID09IGItPm5lWzFdAFoAJWEgJWIgJWQgJUg6JU06JVMgJVkAUE9TSVgAVwBWAFUAd3R5cGUgIT0gR0dNTF9UWVBFX0NPVU5UAGF4aXMzID49IDAgJiYgYXhpczMgPCBHR01MX01BWF9ESU1TAGF4aXMyID49IDAgJiYgYXhpczIgPCBHR01MX01BWF9ESU1TAGF4aXMxID49IDAgJiYgYXhpczEgPCBHR01MX01BWF9ESU1TAGF4aXMwID49IDAgJiYgYXhpczAgPCBHR01MX01BWF9ESU1TAGNncmFwaC0+bl9sZWFmcyA8IEdHTUxfTUFYX05PREVTAGNncmFwaC0+bl9ub2RlcyA8IEdHTUxfTUFYX05PREVTACVIOiVNOiVTAFIAUQBQAE8ATkFOAG5lMSA9PSBOAFBNAEFNAG5lYjEwID09IE0AbmVjMDAgPT0gTQBOVUwAY3R4LT5tZW1fYnVmZmVyICE9IE5VTEwATENfQUxMAEsASgBJAEgATEFORwBJTkYARQBuZXYxID09IEQAbmVjMDEgPT0gRABuZWswID09IEQAbmUwID09IEQAbmVjMTAgPT0gRABuZWIwMCA9PSBEAEMAQgBBAGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHNob3J0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBzaG9ydD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBpbnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGZsb2F0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8Y2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgY2hhcj4Ac3RkOjpiYXNpY19zdHJpbmc8dW5zaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8c2lnbmVkIGNoYXI+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGxvbmc+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIGxvbmc+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGRvdWJsZT4APj4+ADw8PAAwMTIzNDU2Nzg5AEhFQVBVOABDLlVURi04AGRzdC0+dHlwZSA9PSBHR01MX1RZUEVfRjE2AGdnbWxfbmVsZW1lbnRzKG9wdDApID09IDUAYXhpczIgIT0gYXhpczMAYXhpczEgIT0gYXhpczMAYXhpczAgIT0gYXhpczMAbmUwMyA9PSBuZTMAbmIyIDw9IG5iMwBuZTMgPT0gbmUxMwBuZTAzID09IG5lMTMAbmUzID09IG5lMDMAZ2dtbF9uZWxlbWVudHMoc3JjMSkgPT0gMwBheGlzMSAhPSBheGlzMgBheGlzMCAhPSBheGlzMgBnZ21sX25lbGVtZW50cyhhKSA9PSBuZTAqbmUxKm5lMgBuZTAyID09IG5lMgBuYjEgPD0gbmIyAG5lMiA9PSBuZWEyAGdnbWxfaXNfbWF0cml4KGEpICYmIGdnbWxfaXNfdmVjdG9yKGIpICYmIGItPnR5cGUgPT0gR0dNTF9UWVBFX0kzMgBzcmMxLT50eXBlID09IEdHTUxfVFlQRV9JMzIAb3B0MC0+dHlwZSA9PSBHR01MX1RZUEVfSTMyAGRzdC0+dHlwZSA9PSBHR01MX1RZUEVfRjMyAHNyYzEtPnR5cGUgPT0gR0dNTF9UWVBFX0YzMgBuZTIgPT0gbmUxMgBuZTAyID09IG5lMTIAbmUyID09IG5lMDIAYXhpczAgIT0gYXhpczEAZ2dtbF9uZWxlbWVudHMoYSkgPT0gbmUwKm5lMQBuZTAwID09IG5lMQBuYjAgPD0gbmIxAG5lMSA9PSBuZWExAG5lMSA9PSBuZTExAG5lMSA9PSBuZTAxAG5lMCA9PSBuZTAxAHQgPT0gMCB8fCB0ID09IDEAYS0+bmVbM10gPT0gMQBub2RlLT5zcmMxLT5uZVszXSA9PSAxAG5vZGUtPnNyYzAtPm5lWzNdID09IDEAbm9kZS0+c3JjMS0+bmVbMl0gPT0gMQBuZTAwICUgMiA9PSAxAG5lYzExID09IDEAbmViMTEgPT0gMQBuZTAxID09IDEAbmUwID09IDEAbmUwMCA9PSBuZTAAbl9kaW1zIDw9IG5lMABuZTAgPT0gbmVhMABQID49IDAAcGFyYW1zLT5pdGggPT0gMAByYyA9PSAwACgodWludHB0cl90KSAocmVzdWx0KSklR0dNTF9NRU1fQUxJR04gPT0gMAAoKHVpbnRwdHJfdCkgKGN0eC0+bWVtX2J1ZmZlcikpJUdHTUxfTUVNX0FMSUdOID09IDAAbl9kaW1zICUgMiA9PSAwAFRoZSBleHByZXNzaW9uIGNvbnRhaW5lZCBtaXNtYXRjaGVkIHsgYW5kIH0uAGVuY29kZXIuYmxvY2tzLgBkZWNvZGVyLmJsb2Nrcy4AVGhlIGV4cHJlc3Npb24gY29udGFpbmVkIGFuIGludmFsaWQgY2hhcmFjdGVyIHJhbmdlLCBzdWNoIGFzIFtiLWFdIGluIG1vc3QgZW5jb2RpbmdzLgBBbiBlbXB0eSByZWdleCBpcyBub3QgYWxsb3dlZCBpbiB0aGUgUE9TSVggZ3JhbW1hci4AVGhlIGV4cHJlc3Npb24gY29udGFpbmVkIGFuIGludmFsaWQgcmFuZ2UgaW4gYSB7fSBleHByZXNzaW9uLgBUaGUgcGFyc2VyIGRpZCBub3QgY29uc3VtZSB0aGUgZW50aXJlIHJlZ3VsYXIgZXhwcmVzc2lvbi4AT25lIG9mICo/K3sgd2FzIG5vdCBwcmVjZWRlZCBieSBhIHZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbi4AVGhlIGNvbXBsZXhpdHkgb2YgYW4gYXR0ZW1wdGVkIG1hdGNoIGFnYWluc3QgYSByZWd1bGFyIGV4cHJlc3Npb24gZXhjZWVkZWQgYSBwcmUtc2V0IGxldmVsLgBUaGUgZXhwcmVzc2lvbiBjb250YWluZWQgYW4gaW52YWxpZCBlc2NhcGVkIGNoYXJhY3Rlciwgb3IgYSB0cmFpbGluZyBlc2NhcGUuAFRoZXJlIHdhcyBpbnN1ZmZpY2llbnQgbWVtb3J5IHRvIGNvbnZlcnQgdGhlIGV4cHJlc3Npb24gaW50byBhIGZpbml0ZSBzdGF0ZSBtYWNoaW5lLgBUaGUgZXhwcmVzc2lvbiBjb250YWluZWQgYW4gaW52YWxpZCBjb2xsYXRpbmcgZWxlbWVudCBuYW1lLgBUaGUgZXhwcmVzc2lvbiBjb250YWluZWQgYW4gaW52YWxpZCBjaGFyYWN0ZXIgY2xhc3MgbmFtZS4AVGhlcmUgd2FzIGluc3VmZmljaWVudCBtZW1vcnkgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBjb3VsZCBtYXRjaCB0aGUgc3BlY2lmaWVkIGNoYXJhY3RlciBzZXF1ZW5jZS4AVGhlIGV4cHJlc3Npb24gY29udGFpbmVkIGFuIGludmFsaWQgYmFjayByZWZlcmVuY2UuAEFuIGludmFsaWQgcmVnZXggZ3JhbW1hciBoYXMgYmVlbiByZXF1ZXN0ZWQuAFRoZSBleHByZXNzaW9uIGNvbnRhaW5lZCBtaXNtYXRjaGVkIFsgYW5kIF0uAFRoZSBleHByZXNzaW9uIGNvbnRhaW5lZCBtaXNtYXRjaGVkICggYW5kICkuAC0tLQB3KwAnc3wndHwncmV8J3ZlfCdtfCdsbHwnZHwgP1tbOmFscGhhOl1dK3wgP1tbOmRpZ2l0Ol1dK3wgP1teXHNbOmFscGhhOl1bOmRpZ2l0Ol1dK3xccysoPyFcUyl8XHMrAHIrAGErAG5fZWxlbWVudHMgPT0gZ2dtbF9uZWxlbWVudHMoY2FjaGUudikAZ2dtbF9pc19jb250aWd1b3VzKGRzdCkAb2Zmc2V0ICsgaW0wKm5iMCArIGltMSpuYjEgKyBpbTIqbmIyICsgaW0zKm5iMyA8IGdnbWxfbmJ5dGVzKGRzdCkAb2Zmc2V0ICsgKG5lMTAgPT0gMCA/IDAgOiBuZTEwLTEpKm5iMCArIChuZTExID09IDAgPyAwIDogbmUxMS0xKSpuYjEgKyAobmUxMiA9PSAwID8gMCA6IG5lMTItMSkqbmIyICsgKG5lMTMgPT0gMCA/IDAgOiBuZTEzLTEpKm5iMyA8IGdnbWxfbmJ5dGVzKGRzdCkAZ2dtbF9hcmVfc2FtZV9zaGFwZShvcHQwLCBkc3QpAGdnbWxfY2FuX3JlcGVhdChzcmMwLCBkc3QpAGdnbWxfYXJlX3NhbWVfc2hhcGUoc3JjMCwgc3JjMSkgJiYgZ2dtbF9hcmVfc2FtZV9zaGFwZShzcmMwLCBkc3QpAGdnbWxfY2FuX3JlcGVhdF9yb3dzKHNyYzEsIHNyYzApICYmIGdnbWxfYXJlX3NhbWVfc2hhcGUoc3JjMCwgZHN0KQBkc3QtPm5iWzBdID09IHNpemVvZihmbG9hdCkAdGVuc29yLT5uYlswXSA9PSBzaXplb2YoZmxvYXQpAHNyYzAtPm5iWzBdID09IHNpemVvZihmbG9hdCkAbmJ2MCA9PSBzaXplb2YoZmxvYXQpAG5icTAgPT0gc2l6ZW9mKGZsb2F0KQBuYmswID09IHNpemVvZihmbG9hdCkAbmIwID09IHNpemVvZihmbG9hdCkAbmJjMTAgPT0gc2l6ZW9mKGZsb2F0KQBuYjEwID09IHNpemVvZihmbG9hdCkAbmJiMTAgPT0gc2l6ZW9mKGZsb2F0KQBuYjAwID09IHNpemVvZihmbG9hdCkAdGVuc29yLT5uYlswXSA9PSBzaXplb2YoaW50OF90KQB0ZW5zb3ItPm5iWzBdID09IHNpemVvZihpbnQxNl90KQB0ZW5zb3ItPm5iWzBdID09IHNpemVvZihnZ21sX2ZwMTZfdCkAc3JjMC0+bmJbMF0gPT0gc2l6ZW9mKGdnbWxfZnAxNl90KQBuYnYwID09IHNpemVvZihnZ21sX2ZwMTZfdCkAbmJxMCA9PSBzaXplb2YoZ2dtbF9mcDE2X3QpAG5iazAgPT0gc2l6ZW9mKGdnbWxfZnAxNl90KQBuYjAgPT0gc2l6ZW9mKGdnbWxfZnAxNl90KQBuYmEwID09IHNpemVvZihnZ21sX2ZwMTZfdCkAbmJjMDAgPT0gc2l6ZW9mKGdnbWxfZnAxNl90KQBuYjAwID09IHNpemVvZihnZ21sX2ZwMTZfdCkAbmJiMDAgPT0gc2l6ZW9mKGdnbWxfZnAxNl90KQB0ZW5zb3ItPm5iWzBdID09IHNpemVvZihpbnQzMl90KQAobnVsbCkAY2FjaGUuYnVmLnNpemUoKSA+PSAyKm5fZWxlbWVudHMqZ2dtbF90eXBlX3NpemVmKHd0eXBlKQBnZ21sX2lzX3F1YW50aXplZChzcmMwLT50eXBlKQBnZ21sX2lzX2NvbnRpZ3VvdXMoZ3JhZCkAZ2dtbF9hcmVfc2FtZV9zaGFwZShzcmMwLCBncmFkKQBnZ21sX2lzX21hdHJpeChiKQBnZ21sX25lbGVtZW50cyhhKSA9PSBnZ21sX25lbGVtZW50cyhiKQBnZ21sX2lzX3NjYWxhcihiKQBnZ21sX2Nhbl9tdWxfbWF0KGEsIGIpAGdnbWxfY2FuX3JlcGVhdChhLCBiKQBnZ21sX2FyZV9zYW1lX3NoYXBlKGEsIGIpAGdnbWxfaXNfY29udGlndW91cyhhKQAhZ2dtbF9pc190cmFuc3Bvc2VkKGEpAGdnbWxfaXNfcGFkZGVkXzFkKGEpAGdnbWxfY2FuX3JlcGVhdF9yb3dzKGIsIGEpAGdnbWxfaXNfc2NhbGFyKHNyYzEpAGdnbWxfYXJlX3NhbWVfc2hhcGUoc3JjMCwgZHN0KSAmJiBnZ21sX2FyZV9zYW1lX3NoYXBlKHNyYzAsIHNyYzEpAGdnbWxfaXNfY29udGlndW91cyhvcHQwKQBnZ21sX2lzX2NvbnRpZ3VvdXMoZHN0KSAmJiBnZ21sX2lzX2NvbnRpZ3VvdXMoc3JjMCkAZ2dtbF9uZWxlbWVudHMoZHN0KSA9PSBnZ21sX25lbGVtZW50cyhzcmMwKQBvZmZzZXQgKyAobmUxMCA9PSAwID8gMCA6IG5lMTAtMSkqbmIwMCArIChuZTExID09IDAgPyAwIDogbmUxMS0xKSpuYjAxICsgKG5lMTIgPT0gMCA/IDAgOiBuZTEyLTEpKm5iMDIgKyAobmUxMyA9PSAwID8gMCA6IG5lMTMtMSkqbmIwMyA8IGdnbWxfbmJ5dGVzKHNyYzApACkpKQBvcGVyYXRvcigpACgoKABQdXJlIHZpcnR1YWwgZnVuY3Rpb24gY2FsbGVkIQAgfCAAQVZYID0gAFZTWCA9IABCTEFTID0gAE5FT04gPSAAQ09SRU1MID0gAFdBU01fU0lNRCA9IABGMTZDID0gAEZQMTZfVkEgPSAAQVJNX0ZNQSA9IABTU0UzID0gAEFWWDIgPSAAQVZYNTEyID0gACVzOiBub3QgZW5vdWdoIHNwYWNlIGluIHRoZSBzY3JhdGNoIG1lbW9yeQoAJXM6IHRlbnNvciAnJXMnIGhhcyB3cm9uZyBzaXplIGluIG1vZGVsIGZpbGU6IGdvdCAlenUsIGV4cGVjdGVkICV6dQoAJXM6IGFkZGluZyAlZCBleHRyYSB0b2tlbnMKACVzOiAgICAgIG1lbCB0aW1lID0gJTguMmYgbXMKACVzOiAgICB0b3RhbCB0aW1lID0gJTguMmYgbXMKACVzOiAgICAgbG9hZCB0aW1lID0gJTguMmYgbXMKAHN5c3RlbV9pbmZvOiBuX3RocmVhZHMgPSAlZCAvICVkIHwgJXMKAFdISVNQRVJfQVNTRVJUOiAlczolZDogJXMKAEdHTUxfQVNTRVJUOiAlczolZDogJXMKAFslcyAtLT4gJXNdICAlcwoAJXM6IG9mZnNldCAlZG1zIGlzIGJlZm9yZSB0aGUgc3RhcnQgb2YgdGhlIGF1ZGlvCgAlczogbG9hZGluZyBtb2RlbAoAJXM6IGZhaWxlZCB0byBsb2FkIG1vZGVsCgAlczogICAgIGZhbGxiYWNrcyA9ICUzZCBwIC8gJTNkIGgKACVzOiBXQVJOIG5vIHRlbnNvcnMgbG9hZGVkIGZyb20gbW9kZWwgZmlsZSAtIGFzc3VtaW5nIGVtcHR5IG1vZGVsIGZvciB0ZXN0aW5nCgAlczogZW5jb2Rlcl9iZWdpbl9jYWxsYmFjayByZXR1cm5lZCBmYWxzZSAtIGFib3J0aW5nCgAlczogdGVuc29yICclcycgaGFzIHdyb25nIHNpemUgaW4gbW9kZWwgZmlsZQoAJXM6IHVua25vd24gdGVuc29yICclcycgaW4gbW9kZWwgZmlsZQoAJXM6IG5vIHNpZ25hbCBkYXRhIGF2YWlsYWJsZQoAJXM6IGZhaWxlZCB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIGt2IGNhY2hlCgAlczoga3ZfY2FjaGVfaW5pdCgpIGZhaWxlZCBmb3IgY3Jvc3MtYXR0ZW50aW9uIGNhY2hlCgAlczoga3ZfY2FjaGVfaW5pdCgpIGZhaWxlZCBmb3Igc2VsZi1hdHRlbnRpb24gY2FjaGUKACVzOiBmYWlsZWQgdG8gYXV0by1kZXRlY3QgbGFuZ3VhZ2UKACVzOiBnZ21sX2luaXQoKSBmYWlsZWQKACVzOiBFUlJPUiBub3QgYWxsIHRlbnNvcnMgbG9hZGVkIGZyb20gbW9kZWwgZmlsZSAtIGV4cGVjdGVkICV6dSwgZ290ICVkCgAlczoga3ZfY2FjaGVfcmVpbml0KCkgZmFpbGVkIGZvciBzZWxmLWF0dGVudGlvbiwgZGVjb2RlciAlZAoAJXM6IHVua25vd24gbGFuZ3VhZ2UgaWQgJWQKACVzOiBuX2F1ZGlvX2xheWVyID0gJWQKACVzOiBuX2F1ZGlvX3N0YXRlID0gJWQKACVzOiBuX3RleHRfbGF5ZXIgID0gJWQKACVzOiBuX3RleHRfc3RhdGUgID0gJWQKACVzOiBuX2F1ZGlvX2hlYWQgID0gJWQKACVzOiBuX2F1ZGlvX2N0eCAgID0gJWQKACVzOiBuX3RleHRfaGVhZCAgID0gJWQKACVzOiBuX3RleHRfY3R4ICAgID0gJWQKACVzOiBuX3ZvY2FiICAgICAgID0gJWQKACVzOiBuX21lbHMgICAgICAgID0gJWQKACVzOiBxbnR2ciAgICAgICAgID0gJWQKACVzOiBmdHlwZSAgICAgICAgID0gJWQKACVzOiB0eXBlICAgICAgICAgID0gJWQK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EAAQEBAQABAQEAAQEBAAEBAAABAQEAAQEBAQABAQABAQABAAEBAAEBAQAAAQEAAQEAAAABAQABAQEBAQABAAEBAAEBAAEAAQEBAAEAAQABAQAAAQABAAEBAQEAAAEAAQEAAQAAAQABAQEAAAABAAEBAAAAAAEAAQEBAQEBAAABAQABAQEAAAEBAQABAQAAAQEAAAEBAAABAQEBAAEAAAEBAAEAAQAAAQEBAAABAAABAQAAAAEAAAEBAQEBAAAAAQEAAQEAAAABAQEAAQAAAAEBAAABAAAAAQEBAQAAAAABAQABAAAAAAEBAQAAAAAAAQEAAAAAAAABAQEBAQEBAQABAAEBAQEBAAEBAAEBAQEAAQAAAQEBAQABAQEAAQEBAAEAAQABAQEAAQEAAAEBAQABAAAAAQEBAAEBAQEAAQEAAQABAQABAQABAQABAAEBAAEAAAEAAQEAAQEBAAABAQABAAEAAAEBAAEBAAAAAQEAAQAAAAABAQABAQEBAQABAAEAAQEBAAEAAQEAAQEAAQABAAABAQABAAEBAQABAAEAAQABAAEAAQABAQAAAQABAAEAAAABAAEAAQEBAQAAAQABAAEBAAABAAEBAAEAAAEAAQAAAQAAAQABAQEAAAABAAEAAQAAAAEAAQEAAAAAAQABAAAAAAABAAEBAQEBAQAAAQABAQEBAAABAQABAQEAAAEAAAEBAQAAAQEBAAEBAAABAAEAAQEAAAEBAAABAQAAAQAAAAEBAAABAQEBAAEAAAEAAQEAAQAAAQEAAQABAAABAAABAAEAAAEBAQAAAQAAAQABAAABAAABAQAAAAEAAAEAAAAAAQAAAQEBAQEAAAABAAEBAQAAAAEBAAEBAAAAAQAAAQEAAAABAQEAAQAAAAEAAQABAAAAAQEAAAEAAAABAAAAAQAAAAEBAQEAAAAAAQABAQAAAAABAQABAAAAAAEAAAEAAAAAAQEBAAAAAAABAAEAAAAAAAEBAAAAAAAAAQAAAAAAAAABAQEBAQEBAQAAAQEBAQEBAAEAAQEBAQEAAAABAQEBAQABAQABAQEBAAABAAEBAQEAAQAAAQEBAQAAAAABAQEBAAEBAQABAQEAAAEBAAEBAQABAAEAAQEBAAAAAQABAQEAAQEAAAEBAQAAAQAAAQEBAAEAAAABAQEAAAAAAAEBAQABAQEBAAEBAAABAQEAAQEAAQABAQABAQAAAAEBAAEBAAEBAAEAAQEAAAEAAQABAQABAAABAAEBAAAAAAEAAQEAAQEBAAABAQAAAQEAAAEBAAEAAQAAAQEAAAABAAABAQABAQAAAAEBAAABAAAAAQEAAQAAAAABAQAAAAAAAAEBAAEBAQEBAAEAAAEBAQEAAQABAAEBAQABAAAAAQEBAAEAAQEAAQEAAQAAAQABAQABAAEAAAEBAAEAAAAAAQEAAQABAQEAAQABAAABAQABAAEAAQABAAEAAQAAAAEAAQABAAEBAAABAAEAAAEAAAEAAQABAAAAAQABAAAAAAABAAEAAQEBAQAAAQAAAQEBAAABAAEAAQEAAAEAAAABAQAAAQABAQABAAABAAABAAEAAAEAAQAAAQAAAQAAAAABAAABAAEBAQAAAAEAAAEBAAAAAQABAAEAAAABAAAAAQAAAAEAAQEAAAAAAQAAAQAAAAABAAEAAAAAAAEAAAAAAAAAAQABAQEBAQEAAAABAQEBAQAAAQABAQEBAAAAAAEBAQEAAAEBAAEBAQAAAAEAAQEBAAABAAABAQEAAAAAAAEBAQAAAQEBAAEBAAAAAQEAAQEAAAEAAQABAQAAAAABAAEBAAABAQAAAQEAAAABAAABAQAAAQAAAAEBAAAAAAAAAQEAAAEBAQEAAQAAAAEBAQABAAABAAEBAAEAAAAAAQEAAQAAAQEAAQABAAAAAQABAAEAAAEAAAEAAQAAAAAAAQABAAABAQEAAAEAAAABAQAAAQAAAQABAAABAAAAAAEAAAEAAAEBAAAAAQAAAAEAAAABAAABAAAAAAEAAAAAAAAAAQAAAQEBAQEAAAAAAQEBAQAAAAEAAQEBAAAAAAABAQEAAAABAQABAQAAAAABAAEBAAAAAQAAAQEAAAAAAAABAQAAAAEBAQABAAAAAAEBAAEAAAABAAEAAQAAAAAAAQABAAAAAQEAAAEAAAAAAQAAAQAAAAEAAAABAAAAAAAAAAEAAAABAQEBAAAAAAABAQEAAAAAAQABAQAAAAAAAAEBAAAAAAEBAAEAAAAAAAEAAQAAAAABAAABAAAAAAAAAAEAAAAAAQEBAAAAAAAAAQEAAAAAAAEAAQAAAAAAAAABAAAAAAABAQAAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAQAAAAAAAAEBAAAAAAAAAAABAAAAAAABAAEAAAAAAAABAQAAAAAAAQEBAAAAAAAAAAABAAAAAAEAAAEAAAAAAAEAAQAAAAABAQABAAAAAAAAAQEAAAAAAQABAQAAAAAAAQEBAAAAAAEBAQEAAAAAAAAAAAEAAAABAAAAAQAAAAABAAABAAAAAQEAAAEAAAAAAAEAAQAAAAEAAQABAAAAAAEBAAEAAAABAQEAAQAAAAAAAAEBAAAAAQAAAQEAAAAAAQABAQAAAAEBAAEBAAAAAAABAQEAAAABAAEBAQAAAAABAQEBAAAAAQEBAQEAAAAAAAAAAAEAAAEAAAAAAQAAAAEAAAABAAABAQAAAAEAAAAAAQAAAQAAAQABAAABAAAAAQEAAAEAAAEBAQAAAQAAAAAAAQABAAABAAABAAEAAAABAAEAAQAAAQEAAQABAAAAAAEBAAEAAAEAAQEAAQAAAAEBAQABAAABAQEBAAEAAAAAAAABAQAAAQAAAAEBAAAAAQAAAQEAAAEBAAABAQAAAAABAAEBAAABAAEAAQEAAAABAQABAQAAAQEBAAEBAAAAAAABAQEAAAEAAAEBAQAAAAEAAQEBAAABAQABAQEAAAAAAQEBAQAAAQABAQEBAAAAAQEBAQEAAAEBAQEBAQAAAAAAAAAAAQABAAAAAAABAAABAAAAAAEAAQEAAAAAAQAAAAEAAAABAAEAAQAAAAEAAAEBAAAAAQABAQEAAAABAAAAAAEAAAEAAQAAAQAAAQAAAQABAAABAAEBAAEAAAEAAAABAQAAAQABAAEBAAABAAABAQEAAAEAAQEBAQAAAQAAAAAAAQABAAEAAAABAAEAAAEAAAEAAQABAQAAAQABAAAAAQABAAEAAQABAAEAAQAAAQEAAQABAAEBAQABAAEAAAAAAQEAAQABAAABAQABAAABAAEBAAEAAQEAAQEAAQAAAAEBAQABAAEAAQEBAAEAAAEBAQEAAQABAQEBAQABAAAAAAAAAQEAAQAAAAABAQAAAQAAAAEBAAEBAAAAAQEAAAABAAABAQABAAEAAAEBAAABAQAAAQEAAQEBAAABAQAAAAABAAEBAAEAAAEAAQEAAAEAAQABAQABAQABAAEBAAAAAQEAAQEAAQABAQABAQAAAQEBAAEBAAEBAQEAAQEAAAAAAAEBAQABAAAAAQEBAAABAAABAQEAAQEAAAEBAQAAAAEAAQEBAAEAAQABAQEAAAEBAAEBAQABAQEAAQEBAAAAAAEBAQEAAQAAAQEBAQAAAQABAQEBAAEBAAEBAQEAAAABAQEBAQABAAEBAQEBAAABAQEBAQEAAQEBAQEBAQAAAAAAAAAAAQEAAAAAAAABAAEAAAAAAAEBAQAAAAAAAQAAAQAAAAABAQABAAAAAAEAAQEAAAAAAQEBAQAAAAABAAAAAQAAAAEBAAABAAAAAQABAAEAAAABAQEAAQAAAAEAAAEBAAAAAQEAAQEAAAABAAEBAQAAAAEBAQEBAAAAAQAAAAABAAABAQAAAAEAAAEAAQAAAQAAAQEBAAABAAABAAABAAEAAAEBAAEAAQAAAQABAQABAAABAQEBAAEAAAEAAAABAQAAAQEAAAEBAAABAAEAAQEAAAEBAQABAQAAAQAAAQEBAAABAQABAQEAAAEAAQEBAQAAAQEBAQEBAAABAAAAAAABAAEBAAAAAAEAAQABAAAAAQABAQEAAAABAAEAAAEAAAEAAQEAAQAAAQABAAEBAAABAAEBAQEAAAEAAQAAAAEAAQABAQAAAQABAAEAAQABAAEAAQEBAAEAAQABAAABAQABAAEBAAEBAAEAAQABAQEAAQABAQEBAQABAAEAAAAAAQEAAQEAAAABAQABAAEAAAEBAAEBAQAAAQEAAQAAAQABAQABAQABAAEBAAEAAQEAAQEAAQEBAQABAQABAAAAAQEBAAEBAAABAQEAAQABAAEBAQABAQEAAQEBAAEAAAEBAQEAAQEAAQEBAQABAAEBAQEBAAEBAQEBAQEAAQAAAAAAAAEBAQAAAAAAAQEAAQAAAAABAQEBAAAAAAEBAAABAAAAAQEBAAEAAAABAQABAQAAAAEBAQEBAAAAAQEAAAABAAABAQEAAAEAAAEBAAEAAQAAAQEBAQABAAABAQAAAQEAAAEBAQABAQAAAQEAAQEBAAABAQEBAQEAAAEBAAAAAAEAAQEBAAAAAQABAQABAAABAAEBAQEAAAEAAQEAAAEAAQABAQEAAQABAAEBAAEBAAEAAQEBAQEAAQABAQAAAAEBAAEBAQAAAQEAAQEAAQABAQABAQEBAAEBAAEBAAABAQEAAQEBAAEBAQABAQABAQEBAAEBAQEBAQEAAQEAAAAAAAEBAQEAAAAAAQEBAAEAAAABAQEBAQAAAAEBAQAAAQAAAQEBAQABAAABAQEAAQEAAAEBAQEBAQAAAQEBAAAAAQABAQEBAAABAAEBAQABAAEAAQEBAQEAAQABAQEAAAEBAAEBAQEAAQEAAQEBAAEBAQABAQEBAQEBAAEBAQAAAAABAQEBAQAAAAEBAQEAAQAAAQEBAQEBAAABAQEBAAABAAEBAQEBAAEAAQEBAQABAQABAQEBAQEBAAEBAQEAAAABAQEBAQEAAAEBAQEBAAEAAQEBAQEBAQABAQEBAQAAAQEBAQEBAQABAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAAAAAAQAAAAIAAAADAAAAAAAAAAAAAAAAAAAACAAAAAYAAAAHAAAAAAAAAAAAAAABAAAAAQAAAAEAAAABAAAAAAAAAAAAAACgRAAAMwAAADQAAAA1AAAANgAAAE5TdDNfXzIxMV9fZW5kX3N0YXRlSWNFRQBOU3QzX18yNl9fbm9kZUljRUUAnMcAAIVEAADExwAAbEQAAJhEAAAAAAAAUEUAADcAAAA4AAAAOQAAADoAAAA7AAAATlN0M19fMjIwX19zaGFyZWRfcHRyX3BvaW50ZXJJUE5TXzEzX19lbXB0eV9zdGF0ZUljRUVOU18xMHNoYXJlZF9wdHJJUzJfRTI3X19zaGFyZWRfcHRyX2RlZmF1bHRfZGVsZXRlSVMyX1MyX0VFTlNfOWFsbG9jYXRvcklTMl9FRUVFAAAAAMTHAADIRAAASL4AAE5TdDNfXzIxMHNoYXJlZF9wdHJJTlNfMTNfX2VtcHR5X3N0YXRlSWNFRUUyN19fc2hhcmVkX3B0cl9kZWZhdWx0X2RlbGV0ZUlTMl9TMl9FRQAAAAAAAAA4RgAAPAAAAD0AAAA+AAAANgAAAE5TdDNfXzIxM19fZW1wdHlfc3RhdGVJY0VFAE5TdDNfXzIxNl9fb3duc19vbmVfc3RhdGVJY0VFAE5TdDNfXzIxNV9faGFzX29uZV9zdGF0ZUljRUUAAADExwAAAUYAAJhEAADExwAA40UAACBGAADExwAAyEUAACxGAAAAAAAALEYAADwAAAA/AAAAQAAAADYAAAAAAAAAmEYAADwAAABBAAAAQgAAADYAAABOU3QzX18yMjBfX2xfYW5jaG9yX211bHRpbGluZUljRUUAAADExwAAdEYAACxGAAAAAAAA4EYAADwAAABDAAAARAAAADYAAABOU3QzX18yMjBfX3JfYW5jaG9yX211bHRpbGluZUljRUUAAADExwAAvEYAACxGAAAAAAAAOEcAAEUAAABGAAAARwAAADYAAABOU3QzX18yMTVfX3dvcmRfYm91bmRhcnlJY05TXzEycmVnZXhfdHJhaXRzSWNFRUVFAAAAxMcAAARHAAAsRgAAAAAAAIxHAABIAAAASQAAAEoAAAA2AAAATlN0M19fMjExX19sb29rYWhlYWRJY05TXzEycmVnZXhfdHJhaXRzSWNFRUVFAAAAxMcAAFxHAAAsRgAAAAAAANhHAAA8AAAASwAAAEwAAAA2AAAATlN0M19fMjIzX19tYXRjaF9hbnlfYnV0X25ld2xpbmVJY0VFAAAAAMTHAACwRwAALEYAAAAAAAA0SAAATQAAAE4AAABPAAAANgAAAE5TdDNfXzIxOF9fbWF0Y2hfY2hhcl9pY2FzZUljTlNfMTJyZWdleF90cmFpdHNJY0VFRUUAAAAAxMcAAPxHAAAsRgAAAAAAAJBIAABQAAAAUQAAAFIAAAA2AAAATlN0M19fMjIwX19tYXRjaF9jaGFyX2NvbGxhdGVJY05TXzEycmVnZXhfdHJhaXRzSWNFRUVFAADExwAAWEgAACxGAAAAAAAA0EgAADwAAABTAAAAVAAAADYAAABOU3QzX18yMTJfX21hdGNoX2NoYXJJY0VFAAAAxMcAALRIAAAsRgAAAAAAAChJAABVAAAAVgAAAFcAAAA2AAAATlN0M19fMjE2X19iYWNrX3JlZl9pY2FzZUljTlNfMTJyZWdleF90cmFpdHNJY0VFRUUAAMTHAAD0SAAALEYAAAAAAACESQAAWAAAAFkAAABaAAAANgAAAE5TdDNfXzIxOF9fYmFja19yZWZfY29sbGF0ZUljTlNfMTJyZWdleF90cmFpdHNJY0VFRUUAAAAAxMcAAExJAAAsRgAAAAAAAMBJAAA8AAAAWwAAAFwAAAA2AAAATlN0M19fMjEwX19iYWNrX3JlZkljRUUAxMcAAKhJAAAsRgAAAAAAABxKAABdAAAAXgAAAF8AAAA2AAAATlN0M19fMjIwX19icmFja2V0X2V4cHJlc3Npb25JY05TXzEycmVnZXhfdHJhaXRzSWNFRUVFAADExwAA5EkAACxGAAAAAAAAbEoAADwAAABgAAAAYQAAADYAAABOU3QzX18yMjhfX2JlZ2luX21hcmtlZF9zdWJleHByZXNzaW9uSWNFRQAAAMTHAABASgAALEYAAAAAAAC4SgAAPAAAAGIAAABjAAAANgAAAE5TdDNfXzIyNl9fZW5kX21hcmtlZF9zdWJleHByZXNzaW9uSWNFRQDExwAAkEoAACxGAAAAAAAAHEsAAGQAAABlAAAAZgAAAGcAAABOU3QzX18yNl9fbG9vcEljRUUATlN0M19fMjE3X19vd25zX3R3b19zdGF0ZXNJY0VFAAAAxMcAAO9KAAAsRgAAxMcAANxKAAAQSwAAAAAAABBLAABkAAAAaAAAAEAAAAA2AAAAAAAAAHhLAAAzAAAAaQAAAGoAAAA2AAAATlN0M19fMjE3X19yZXBlYXRfb25lX2xvb3BJY0VFAADExwAAWEsAACBGAAAAAAAAuEsAAGQAAABrAAAAbAAAAG0AAABOU3QzX18yMTFfX2FsdGVybmF0ZUljRUUAAAAAxMcAAJxLAAAQSwAAAAAAAABMAAAzAAAAbgAAAG8AAAA2AAAATlN0M19fMjIxX19lbXB0eV9ub25fb3duX3N0YXRlSWNFRQAAxMcAANxLAAAgRgAAAAAAAEBMAAA8AAAAcAAAAHEAAAA2AAAATlN0M19fMjExX19tYXRjaF9hbnlJY0VFAAAAAMTHAAAkTAAALEYAAE5TdDNfXzIxMmJhc2ljX3N0cmluZ0loTlNfMTFjaGFyX3RyYWl0c0loRUVOU185YWxsb2NhdG9ySWhFRUVFAACcxwAATEwAAE5TdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUVFAACcxwAAlEwAAE5TdDNfXzIxMmJhc2ljX3N0cmluZ0lEc05TXzExY2hhcl90cmFpdHNJRHNFRU5TXzlhbGxvY2F0b3JJRHNFRUVFAAAAnMcAANxMAABOU3QzX18yMTJiYXNpY19zdHJpbmdJRGlOU18xMWNoYXJfdHJhaXRzSURpRUVOU185YWxsb2NhdG9ySURpRUVFRQAAAJzHAAAoTQAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJY0VFAACcxwAAdE0AAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92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IRQAAAAAAAAAAAAAABcAAAAAFwAAAAAJFAAAAAAAFAAAFAH2CRYAAAAAAAAAAAAAABUAAAAAFQAAAAAJFgAAAAAAFgAAFgAAMDEyMzQ1Njc4OUFCQ0RFRgAAAAC8kgAAfgAAAH8AAACAAAAAgQAAAIIAAACDAAAAhAAAAIUAAACGAAAAhwAAAIgAAACJAAAAigAAAIsAAAAIAAAAAAAAAPSSAACMAAAAjQAAAPj////4////9JIAAI4AAACPAAAA7JEAAACSAAAAAAAA2JMAAJAAAACRAAAAkgAAAJMAAACUAAAAlQAAAJYAAACFAAAAhgAAAJcAAACIAAAAmAAAAIoAAACZAAAATlN0M19fMjliYXNpY19pb3NJY05TXzExY2hhcl90cmFpdHNJY0VFRUUAAADExwAAUJIAAAiUAABOU3QzX18yMTViYXNpY19zdHJlYW1idWZJY05TXzExY2hhcl90cmFpdHNJY0VFRUUAAAAAnMcAAIiSAABOU3QzX18yMTNiYXNpY19pc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFAAAgyAAAxJIAAAAAAAABAAAAfJIAAAP0//9sAAAAAAAAAJyTAACaAAAAmwAAAJT///+U////nJMAAJwAAACdAAAAGJMAAFCTAABkkwAALJMAAGwAAAAAAAAA9JIAAIwAAACNAAAAlP///5T////0kgAAjgAAAI8AAABOU3QzX18yMTRiYXNpY19pZnN0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRQDExwAAbJMAAPSSAABOU3QzX18yMTNiYXNpY19maWxlYnVmSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFAADExwAAqJMAALySAAAAAAAACJQAAJ4AAACfAAAATlN0M19fMjhpb3NfYmFzZUUAAACcxwAA9JMAANF0ngBXnb0qgHBSD///PicKAAAAZAAAAOgDAAAQJwAAoIYBAEBCDwCAlpgAAOH1BRgAAAA1AAAAcQAAAGv////O+///kr///wAAAAAAAAAA/////////////////////////////////////////////////////////////////wABAgMEBQYHCAn/////////CgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiP///////8KCwwNDg8QERITFBUWFxgZGhscHR4fICEiI/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAQIEBwMGBQAAAAAAAAACAADAAwAAwAQAAMAFAADABgAAwAcAAMAIAADACQAAwAoAAMALAADADAAAwA0AAMAOAADADwAAwBAAAMARAADAEgAAwBMAAMAUAADAFQAAwBYAAMAXAADAGAAAwBkAAMAaAADAGwAAwBwAAMAdAADAHgAAwB8AAMAAAACzAQAAwwIAAMMDAADDBAAAwwUAAMMGAADDBwAAwwgAAMMJAADDCgAAwwsAAMMMAADDDQAA0w4AAMMPAADDAAAMuwEADMMCAAzDAwAMwwQADNsAAAAA3hIElQAAAAD///////////////9AlgAAFAAAAEMuVVRGLTgBAlSWAUpMQ19DVFlQRQAAAABMQ19OVU1FUklDAABMQ19USU1FAAAAAABMQ19DT0xMQVRFAABMQ19NT05FVEFSWQBMQ19NRVNTQUdFUwAAmQH5AwEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAJAAAACUAAAAmAAAAJwAAACgAAAApAAAAKgAAACsAAAAsAAAALQAAAC4AAAAvAAAAMAAAADEAAAAyAAAAMwAAADQAAAA1AAAANgAAADcAAAA4AAAAOQAAADoAAAA7AAAAPAAAAD0AAAA+AAAAPwAAAEAAAABBAAAAQgAAAEMAAABEAAAARQAAAEYAAABHAAAASAAAAEkAAABKAAAASwAAAEwAAABNAAAATgAAAE8AAABQAAAAUQAAAFIAAABTAAAAVAAAAFUAAABWAAAAVwAAAFgAAABZAAAAWgAAAFsAAABcAAAAXQAAAF4AAABfAAAAYAAAAEEAAABCAAAAQwAAAEQAAABFAAAARgAAAEcA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AAC9EAAAAQAAAMcJAAAIAAAAMgUAAAAEAADTBQAAAAEAAE5TdDNfXzIxMXJlZ2V4X2Vycm9yRQAAAMTHAAB4wgAAzMkAAM8dAAALHgAALR0AAL0eAAAeHwAASx8AAEYbAAAdHAAAkxsAAHodAACVHAAA0RwAAEUeAADxHgAA6RsAADAQAABbHAAAAAAAAAoAAABkAAAA6AMAABAnAACghgEAQEIPAICWmAAA4fUFAMqaOwAAAAAAAAAAMDAwMTAyMDMwNDA1MDYwNzA4MDkxMDExMTIxMzE0MTUxNjE3MTgxOTIwMjEyMjIzMjQyNTI2MjcyODI5MzAzMTMyMzMzNDM1MzYzNzM4Mzk0MDQxNDI0MzQ0NDU0NjQ3NDg0OTUwNTE1MjUzNTQ1NTU2NTc1ODU5NjA2MTYyNjM2NDY1NjY2NzY4Njk3MDcxNzI3Mzc0NzU3Njc3Nzg3OTgwODE4MjgzODQ4NTg2ODc4ODg5OTA5MTkyOTM5NDk1OTY5Nzk4OTkAAAAAAAAAAAL/AARkACAAAAT//wYAAQABAAEA//8B/wH//////wH/Af8B/wH/Af8B/wH/Af//////Cv8gAP//A/8B/wT/HgAAAQX//////2MAAAhjAOgDAgAAAP//////AAAAAf8B//////////////8AAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAf8B//////8AASAABACAAAAI//8B/wH/////////Af8G/wf/CP8J//////+8ArwCAQD//wEAAQD//wAA//////////8AAAAAAAAAAAAAAAAAAAAAFAF4//8BAAr///////////8B/wH/AAAAAAAAAf8B/wH/AAAAAAAAAAAAAAAAAAAAAAAAAf8AAAAAAAAB/wH/AQAAAAEAAAAB//////8AAAAAAf///wAAAAD/////////////KAAK//////8BAAr/////AP//////////AboIAf8B////AQD//////////////////wr//////04xMF9fY3h4YWJpdjExNl9fc2hpbV90eXBlX2luZm9FAADExwAA0sUAAOjJAABOMTBfX2N4eGFiaXYxMTdfX2NsYXNzX3R5cGVfaW5mb0UAAADExwAAAMYAAPTFAABOMTBfX2N4eGFiaXYxMTdfX3BiYXNlX3R5cGVfaW5mb0UAAADExwAAMMYAAPTFAABOMTBfX2N4eGFiaXYxMTlfX3BvaW50ZXJfdHlwZV9pbmZvRQDExwAAYMYAAFTGAAAAAAAA1MYAAKsBAACsAQAArQEAAK4BAACvAQAATjEwX19jeHhhYml2MTIzX19mdW5kYW1lbnRhbF90eXBlX2luZm9FAMTHAACsxgAA9MUAAHYAAACYxgAA4MYAAGIAAACYxgAA7MYAAGMAAACYxgAA+MYAAGgAAACYxgAABMcAAGEAAACYxgAAEMcAAHMAAACYxgAAHMcAAHQAAACYxgAAKMcAAGkAAACYxgAANMcAAGoAAACYxgAAQMcAAGwAAACYxgAATMcAAG0AAACYxgAAWMcAAHgAAACYxgAAZMcAAHkAAACYxgAAcMcAAGYAAACYxgAAfMcAAGQAAACYxgAAiMcAAAAAAAAkxgAAqwEAALABAACtAQAArgEAALEBAACyAQAAswEAALQBAAAAAAAADMgAAKsBAAC1AQAArQEAAK4BAACxAQAAtgEAALcBAAC4AQAATjEwX19jeHhhYml2MTIwX19zaV9jbGFzc190eXBlX2luZm9FAAAAAMTHAADkxwAAJMYAAAAAAABoyAAAqwEAALkBAACtAQAArgEAALEBAAC6AQAAuwEAALwBAABOMTBfX2N4eGFiaXYxMjFfX3ZtaV9jbGFzc190eXBlX2luZm9FAAAAxMcAAEDIAAAkxgAAAAAAANjIAAAIAAAAvQEAAL4BAAAAAAAAAMkAAAgAAAC/AQAAwAEAAAAAAADAyAAACAAAAMEBAADCAQAAU3Q5ZXhjZXB0aW9uAAAAAJzHAACwyAAAU3Q5YmFkX2FsbG9jAAAAAMTHAADIyAAAwMgAAFN0MjBiYWRfYXJyYXlfbmV3X2xlbmd0aAAAAADExwAA5MgAANjIAAAAAAAARMkAAAcAAADDAQAAxAEAAAAAAADMyQAAxQEAAMYBAACnAQAAU3QxMWxvZ2ljX2Vycm9yAMTHAAA0yQAAwMgAAAAAAAB4yQAABwAAAMcBAADEAQAAU3QxMmxlbmd0aF9lcnJvcgAAAADExwAAZMkAAETJAAAAAAAArMkAAAcAAADIAQAAxAEAAFN0MTJvdXRfb2ZfcmFuZ2UAAAAAxMcAAJjJAABEyQAAU3QxM3J1bnRpbWVfZXJyb3IAAADExwAAuMkAAMDIAABTdDl0eXBlX2luZm8AAAAAnMcAANjJAAABVAUAAAAAAAAAAAAAAHYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHQAAABzAAAA8NkKAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAD//////////wFZ8MkAAAAAAAAFAAAAAAAAAAAAAAB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0AAAAeQAAAPjZCgAABAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA/////woBEIjKAAAA7QsAAAIAAKoBAAA=";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}var binary=tryParseAsDataURI(file);if(binary){return binary}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;registerTLSInit(Module["asm"]["aa"]);wasmTable=Module["asm"]["Z"];addOnInit(Module["asm"]["Y"]);wasmModule=module;if(!ENVIRONMENT_IS_PTHREAD){var numWorkersToLoad=PThread.unusedWorkers.length;PThread.unusedWorkers.forEach(function(w){PThread.loadWasmModuleToWorker(w,function(){if(!--numWorkersToLoad)removeRunDependency("wasm-instantiate")})})}}if(!ENVIRONMENT_IS_PTHREAD){addRunDependency("wasm-instantiate")}function receiveInstantiationResult(result){receiveInstance(result["instance"],result["module"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);readyPromiseReject(e)}}instantiateAsync().catch(readyPromiseReject);return{}}var tempDouble;var tempI64;var ASM_CONSTS={};function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}function killThread(pthread_ptr){var worker=PThread.pthreads[pthread_ptr];delete PThread.pthreads[pthread_ptr];worker.terminate();__emscripten_thread_free_data(pthread_ptr);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);worker.pthread_ptr=0}function cancelThread(pthread_ptr){var worker=PThread.pthreads[pthread_ptr];worker.postMessage({"cmd":"cancel"})}function cleanupThread(pthread_ptr){var worker=PThread.pthreads[pthread_ptr];assert(worker);PThread.returnWorkerToPool(worker)}function spawnThread(threadParams){var worker=PThread.getNewWorker();if(!worker){return 6}PThread.runningWorkers.push(worker);PThread.pthreads[threadParams.pthread_ptr]=worker;worker.pthread_ptr=threadParams.pthread_ptr;var msg={"cmd":"run","start_routine":threadParams.startRoutine,"arg":threadParams.arg,"pthread_ptr":threadParams.pthread_ptr};worker.runPthread=()=>{if(ENVIRONMENT_IS_NODE){worker.ref()}msg.time=performance.now();worker.postMessage(msg,threadParams.transferList);delete worker.runPthread};if(worker.loaded){worker.runPthread()}return 0}var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:function(){var paths=Array.prototype.slice.call(arguments);return PATH.normalize(paths.join("/"))},join2:(l,r)=>{return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){var randomBuffer=new Uint8Array(1);return()=>{crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return()=>crypto_module["randomBytes"](1)[0]}catch(e){}}return()=>abort("randomDevice")}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start<arr.length;start++){if(arr[start]!=="")break}var end=arr.length-1;for(;end>=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i<length;i++){if(fromParts[i]!==toParts[i]){samePartsLength=i;break}}var outputParts=[];for(var i=samePartsLength;i<fromParts.length;i++){outputParts.push("..")}outputParts=outputParts.concat(toParts.slice(samePartsLength));return outputParts.join("/")}};function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var TTY={ttys:[],init:function(){},shutdown:function(){},register:function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open:function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close:function(stream){stream.tty.ops.fsync(stream.tty)},fsync:function(stream){stream.tty.ops.fsync(stream.tty)},read:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=stream.tty.ops.get_char(stream.tty)}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.put_char){throw new FS.ErrnoError(60)}try{for(var i=0;i<length;i++){stream.tty.ops.put_char(stream.tty,buffer[offset+i])}}catch(e){throw new FS.ErrnoError(29)}if(length){stream.node.timestamp=Date.now()}return i}},default_tty_ops:{get_char:function(tty){if(!tty.input.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc(BUFSIZE);var bytesRead=0;try{bytesRead=fs.readSync(process.stdin.fd,buf,0,BUFSIZE,-1)}catch(e){if(e.toString().includes("EOF"))bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function mmapAlloc(size){abort()}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity<CAPACITY_DOUBLING_MAX?2:1.125)>>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i<size;i++)buffer[offset+i]=contents[position+i]}return size},write:function(stream,buffer,offset,length,position,canOwn){if(buffer.buffer===GROWABLE_HEAP_I8().buffer){canOwn=false}if(!length)return 0;var node=stream.node;node.timestamp=Date.now();if(buffer.subarray&&(!node.contents||node.contents.subarray)){if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length;return length}else if(node.usedBytes===0&&position===0){node.contents=buffer.slice(offset,offset+length);node.usedBytes=length;return length}else if(position+length<=node.usedBytes){node.contents.set(buffer.subarray(offset,offset+length),position);return length}}MEMFS.expandFileStorage(node,position+length);if(node.contents.subarray&&buffer.subarray){node.contents.set(buffer.subarray(offset,offset+length),position)}else{for(var i=0;i<length;i++){node.contents[position+i]=buffer[offset+i]}}node.usedBytes=Math.max(node.usedBytes,position+length);return length},llseek:function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.usedBytes}}if(position<0){throw new FS.ErrnoError(28)}return position},allocate:function(stream,offset,length){MEMFS.expandFileStorage(stream.node,offset+length);stream.node.usedBytes=Math.max(stream.node.usedBytes,offset+length)},mmap:function(stream,length,position,prot,flags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}var ptr;var allocated;var contents=stream.node.contents;if(!(flags&2)&&contents.buffer===buffer){allocated=false;ptr=contents.byteOffset}else{if(position>0||position+length<contents.length){if(contents.subarray){contents=contents.subarray(position,position+length)}else{contents=Array.prototype.slice.call(contents,position,position+length)}}allocated=true;ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}GROWABLE_HEAP_I8().set(contents,ptr)}return{ptr:ptr,allocated:allocated}},msync:function(stream,buffer,offset,length,mmapFlags){MEMFS.stream_ops.write(stream,buffer,0,length,offset,false);return 0}}};function asyncLoad(url,onload,onerror,noRunDep){var dep=!noRunDep?getUniqueRunDependency("al "+url):"";readAsync(url,arrayBuffer=>{assert(arrayBuffer,'Loading data file "'+url+'" failed (no arrayBuffer).');onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},event=>{if(onerror){onerror()}else{throw'Loading data file "'+url+'" failed.'}});if(dep)addRunDependency(dep)}var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:(path,opts={})=>{path=PATH_FS.resolve(path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i<parts.length;i++){var islast=i===parts.length-1;if(islast&&opts.parent){break}current=FS.lookupNode(current,parts[i]);current_path=PATH.join2(current_path,parts[i]);if(FS.isMountpoint(current)){if(!islast||islast&&opts.follow_mount){current=current.mounted.root}}if(!islast||opts.follow){var count=0;while(FS.isLink(current.mode)){var link=FS.readlink(current_path);current_path=PATH_FS.resolve(PATH.dirname(current_path),link);var lookup=FS.lookupPath(current_path,{recurse_count:opts.recurse_count+1});current=lookup.node;if(count++>40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:node=>{var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}},hashName:(parentid,name)=>{var hash=0;for(var i=0;i<name.length;i++){hash=(hash<<5)-hash+name.charCodeAt(i)|0}return(parentid+hash>>>0)%FS.nameTable.length},hashAddNode:node=>{var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:node=>{var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:(parent,name)=>{var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:(parent,name,mode,rdev)=>{var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:node=>{FS.hashRemoveNode(node)},isRoot:node=>{return node===node.parent},isMountpoint:node=>{return!!node.mounted},isFile:mode=>{return(mode&61440)===32768},isDir:mode=>{return(mode&61440)===16384},isLink:mode=>{return(mode&61440)===40960},isChrdev:mode=>{return(mode&61440)===8192},isBlkdev:mode=>{return(mode&61440)===24576},isFIFO:mode=>{return(mode&61440)===4096},isSocket:mode=>{return(mode&49152)===49152},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags=="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:flag=>{var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:(node,perms)=>{if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup:dir=>{var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:(dir,name)=>{try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:(dir,name,isdir)=>{var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:(node,flags)=>{if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){this.shared={}};FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}},flags:{get:function(){return this.shared.flags},set:function(val){this.shared.flags=val}},position:{get:function(){return this.shared.position},set:function(val){this.shared.position=val}}})}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:fd=>{FS.streams[fd]=null},chrdev_stream_ops:{open:stream=>{var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:()=>{throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice:(dev,ops)=>{FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts:mount=>{var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:(populate,callback)=>{if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:(type,opts,mountpoint)=>{var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:mountpoint=>{var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:(parent,name)=>{return parent.node_ops.lookup(parent,name)},mknod:(path,mode,dev)=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:(path,mode)=>{mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:(path,mode)=>{mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:(path,mode)=>{var dirs=path.split("/");var d="";for(var i=0;i<dirs.length;++i){if(!dirs[i])continue;d+="/"+dirs[i];try{FS.mkdir(d,mode)}catch(e){if(e.errno!=20)throw e}}},mkdev:(path,mode,dev)=>{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:(path,data,opts={})=>{opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data=="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:()=>FS.currentPath,chdir:path=>{var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:()=>{FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:()=>{FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:()=>{var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:(parent,name)=>{var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:()=>{if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError:()=>{if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack="<generic error, no stack>"})},staticInit:()=>{FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init:(input,output,error)=>{FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:()=>{FS.init.initialized=false;for(var i=0;i<FS.streams.length;i++){var stream=FS.streams[i];if(!stream){continue}FS.close(stream)}},getMode:(canRead,canWrite)=>{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(!ret.exists){return null}return ret.object},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i<len;++i)arr[i]=data.charCodeAt(i);data=arr}FS.chmod(node,mode|146);var stream=FS.open(node,577);FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode)}return node},createDevice:(parent,name,input,output)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=input()}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write:(stream,buffer,offset,length,pos)=>{for(var i=0;i<length;i++){try{output(buffer[offset+i])}catch(e){throw new FS.ErrnoError(29)}}if(length){stream.node.timestamp=Date.now()}return i}});return FS.mkdev(path,mode,dev)},forceLoadFile:obj=>{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i<size;i++){buffer[offset+i]=contents[position+i]}}else{for(var i=0;i<size;i++){buffer[offset+i]=contents.get(position+i)}}return size}stream_ops.read=(stream,buffer,offset,length,position)=>{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,GROWABLE_HEAP_I8(),ptr,length,position);return{ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node},createPreloadedFile:(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency("cp "+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}if(Browser.handledByPreloadPlugin(byteArray,fullname,finish,()=>{if(onerror)onerror();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,byteArray=>processData(byteArray),onerror)}else{processData(url)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=()=>{out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)};openRequest.onsuccess=()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=()=>{ok++;if(ok+fail==total)finish()};putRequest.onerror=()=>{fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()};getRequest.onerror=()=>{fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}GROWABLE_HEAP_I32()[buf>>2]=stat.dev;GROWABLE_HEAP_I32()[buf+8>>2]=stat.ino;GROWABLE_HEAP_I32()[buf+12>>2]=stat.mode;GROWABLE_HEAP_U32()[buf+16>>2]=stat.nlink;GROWABLE_HEAP_I32()[buf+20>>2]=stat.uid;GROWABLE_HEAP_I32()[buf+24>>2]=stat.gid;GROWABLE_HEAP_I32()[buf+28>>2]=stat.rdev;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],GROWABLE_HEAP_I32()[buf+40>>2]=tempI64[0],GROWABLE_HEAP_I32()[buf+44>>2]=tempI64[1];GROWABLE_HEAP_I32()[buf+48>>2]=4096;GROWABLE_HEAP_I32()[buf+52>>2]=stat.blocks;tempI64=[Math.floor(stat.atime.getTime()/1e3)>>>0,(tempDouble=Math.floor(stat.atime.getTime()/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],GROWABLE_HEAP_I32()[buf+56>>2]=tempI64[0],GROWABLE_HEAP_I32()[buf+60>>2]=tempI64[1];GROWABLE_HEAP_U32()[buf+64>>2]=0;tempI64=[Math.floor(stat.mtime.getTime()/1e3)>>>0,(tempDouble=Math.floor(stat.mtime.getTime()/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],GROWABLE_HEAP_I32()[buf+72>>2]=tempI64[0],GROWABLE_HEAP_I32()[buf+76>>2]=tempI64[1];GROWABLE_HEAP_U32()[buf+80>>2]=0;tempI64=[Math.floor(stat.ctime.getTime()/1e3)>>>0,(tempDouble=Math.floor(stat.ctime.getTime()/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],GROWABLE_HEAP_I32()[buf+88>>2]=tempI64[0],GROWABLE_HEAP_I32()[buf+92>>2]=tempI64[1];GROWABLE_HEAP_U32()[buf+96>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],GROWABLE_HEAP_I32()[buf+104>>2]=tempI64[0],GROWABLE_HEAP_I32()[buf+108>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=GROWABLE_HEAP_U8().slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=GROWABLE_HEAP_I32()[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream}};function _proc_exit(code){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,1,code);EXITSTATUS=code;if(!keepRuntimeAlive()){PThread.terminateAllThreads();if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}function exitJS(status,implicit){EXITSTATUS=status;if(!implicit){if(ENVIRONMENT_IS_PTHREAD){exitOnMainThread(status);throw"unwind"}else{}}_proc_exit(status)}var _exit=exitJS;function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}var PThread={unusedWorkers:[],runningWorkers:[],tlsInitFunctions:[],pthreads:{},init:function(){if(ENVIRONMENT_IS_PTHREAD){PThread.initWorker()}else{PThread.initMainThread()}},initMainThread:function(){var pthreadPoolSize=8;while(pthreadPoolSize--){PThread.allocateUnusedWorker()}},initWorker:function(){noExitRuntime=false},setExitStatus:function(status){EXITSTATUS=status},terminateAllThreads:function(){for(var worker of Object.values(PThread.pthreads)){PThread.returnWorkerToPool(worker)}for(var worker of PThread.unusedWorkers){worker.terminate()}PThread.unusedWorkers=[]},returnWorkerToPool:function(worker){var pthread_ptr=worker.pthread_ptr;delete PThread.pthreads[pthread_ptr];PThread.unusedWorkers.push(worker);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);worker.pthread_ptr=0;if(ENVIRONMENT_IS_NODE){worker.unref()}__emscripten_thread_free_data(pthread_ptr)},receiveObjectTransfer:function(data){},threadInitTLS:function(){PThread.tlsInitFunctions.forEach(f=>f())},loadWasmModuleToWorker:function(worker,onFinishedLoading){worker.onmessage=e=>{var d=e["data"];var cmd=d["cmd"];if(worker.pthread_ptr)PThread.currentProxiedOperationCallerThread=worker.pthread_ptr;if(d["targetThread"]&&d["targetThread"]!=_pthread_self()){var targetWorker=PThread.pthreads[d.targetThread];if(targetWorker){targetWorker.postMessage(d,d["transferList"])}else{err('Internal error! Worker sent a message "'+cmd+'" to target pthread '+d["targetThread"]+", but that thread no longer exists!")}PThread.currentProxiedOperationCallerThread=undefined;return}if(cmd==="processProxyingQueue"){executeNotifiedProxyingQueue(d["queue"])}else if(cmd==="spawnThread"){spawnThread(d)}else if(cmd==="cleanupThread"){cleanupThread(d["thread"])}else if(cmd==="killThread"){killThread(d["thread"])}else if(cmd==="cancelThread"){cancelThread(d["thread"])}else if(cmd==="loaded"){worker.loaded=true;if(ENVIRONMENT_IS_NODE){worker.unref()}if(onFinishedLoading)onFinishedLoading(worker);if(worker.runPthread){worker.runPthread()}}else if(cmd==="print"){out("Thread "+d["threadId"]+": "+d["text"])}else if(cmd==="printErr"){err("Thread "+d["threadId"]+": "+d["text"])}else if(cmd==="alert"){alert("Thread "+d["threadId"]+": "+d["text"])}else if(d.target==="setimmediate"){worker.postMessage(d)}else if(cmd==="callHandler"){Module[d["handler"]](...d["args"])}else if(cmd){err("worker sent an unknown command "+cmd)}PThread.currentProxiedOperationCallerThread=undefined};worker.onerror=e=>{var message="worker sent an error!";err(message+" "+e.filename+":"+e.lineno+": "+e.message);throw e};if(ENVIRONMENT_IS_NODE){worker.on("message",function(data){worker.onmessage({data:data})});worker.on("error",function(e){worker.onerror(e)});worker.on("detachedExit",function(){})}var handlers=[];var knownHandlers=["onExit","onAbort","print","printErr"];for(var handler of knownHandlers){if(Module.hasOwnProperty(handler)){handlers.push(handler)}}worker.postMessage({"cmd":"load","handlers":handlers,"urlOrBlob":Module["mainScriptUrlOrBlob"]||_scriptDir,"wasmMemory":wasmMemory,"wasmModule":wasmModule})},allocateUnusedWorker:function(){var pthreadMainJs=locateFile("libwhisper.worker.js");PThread.unusedWorkers.push(new Worker(pthreadMainJs))},getNewWorker:function(){if(PThread.unusedWorkers.length==0){PThread.allocateUnusedWorker();PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])}return PThread.unusedWorkers.pop()}};Module["PThread"]=PThread;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){callbacks.shift()(Module)}}function establishStackSpace(){var pthread_ptr=_pthread_self();var stackTop=GROWABLE_HEAP_I32()[pthread_ptr+52>>2];var stackSize=GROWABLE_HEAP_I32()[pthread_ptr+56>>2];var stackMax=stackTop-stackSize;_emscripten_stack_set_limits(stackTop,stackMax);stackRestore(stackTop)}Module["establishStackSpace"]=establishStackSpace;function exitOnMainThread(returnCode){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(2,0,returnCode);try{_exit(returnCode)}catch(e){handleException(e)}}function intArrayToString(array){var ret=[];for(var i=0;i<array.length;i++){var chr=array[i];if(chr>255){if(ASSERTIONS){assert(false,"Character code "+chr+" ("+String.fromCharCode(chr)+")  at offset "+i+" not in 0x00-0xFF.")}chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")}var wasmTableMirror=[];function getWasmTableEntry(funcPtr){var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func}function invokeEntryPoint(ptr,arg){var result=getWasmTableEntry(ptr)(arg);if(keepRuntimeAlive()){PThread.setExitStatus(result)}else{__emscripten_thread_exit(result)}}Module["invokeEntryPoint"]=invokeEntryPoint;function registerTLSInit(tlsInitFunc){PThread.tlsInitFunctions.push(tlsInitFunc)}function ___cxa_allocate_exception(size){return _malloc(size+24)+24}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24;this.set_type=function(type){GROWABLE_HEAP_U32()[this.ptr+4>>2]=type};this.get_type=function(){return GROWABLE_HEAP_U32()[this.ptr+4>>2]};this.set_destructor=function(destructor){GROWABLE_HEAP_U32()[this.ptr+8>>2]=destructor};this.get_destructor=function(){return GROWABLE_HEAP_U32()[this.ptr+8>>2]};this.set_refcount=function(refcount){GROWABLE_HEAP_I32()[this.ptr>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;GROWABLE_HEAP_I8()[this.ptr+12>>0]=caught};this.get_caught=function(){return GROWABLE_HEAP_I8()[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;GROWABLE_HEAP_I8()[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return GROWABLE_HEAP_I8()[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){Atomics.add(GROWABLE_HEAP_I32(),this.ptr+0>>2,1)};this.release_ref=function(){var prev=Atomics.sub(GROWABLE_HEAP_I32(),this.ptr+0>>2,1);return prev===1};this.set_adjusted_ptr=function(adjustedPtr){GROWABLE_HEAP_U32()[this.ptr+16>>2]=adjustedPtr};this.get_adjusted_ptr=function(){return GROWABLE_HEAP_U32()[this.ptr+16>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return GROWABLE_HEAP_U32()[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}var exceptionLast=0;var uncaughtExceptionCount=0;function ___cxa_throw(ptr,type,destructor){var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw ptr}function ___emscripten_init_main_thread_js(tb){__emscripten_thread_init(tb,!ENVIRONMENT_IS_WORKER,1,!ENVIRONMENT_IS_WEB);PThread.threadInitTLS()}function ___emscripten_thread_cleanup(thread){if(!ENVIRONMENT_IS_PTHREAD)cleanupThread(thread);else postMessage({"cmd":"cleanupThread","thread":thread})}function pthreadCreateProxied(pthread_ptr,attr,startRoutine,arg){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(3,1,pthread_ptr,attr,startRoutine,arg);return ___pthread_create_js(pthread_ptr,attr,startRoutine,arg)}function ___pthread_create_js(pthread_ptr,attr,startRoutine,arg){if(typeof SharedArrayBuffer=="undefined"){err("Current environment does not support SharedArrayBuffer, pthreads are not available!");return 6}var transferList=[];var error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error)){return pthreadCreateProxied(pthread_ptr,attr,startRoutine,arg)}if(error)return error;var threadParams={startRoutine:startRoutine,pthread_ptr:pthread_ptr,arg:arg,transferList:transferList};if(ENVIRONMENT_IS_PTHREAD){threadParams.cmd="spawnThread";postMessage(threadParams,transferList);return 0}return spawnThread(threadParams)}function setErrNo(value){GROWABLE_HEAP_I32()[___errno_location()>>2]=value;return value}function ___syscall_fcntl64(fd,cmd,varargs){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,fd,cmd,varargs);SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.createStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 5:{var arg=SYSCALLS.get();var offset=0;GROWABLE_HEAP_I16()[arg+offset>>1]=2;return 0}case 6:case 7:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_ioctl(fd,op,varargs){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,fd,op,varargs);SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();GROWABLE_HEAP_I32()[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(6,1,dirfd,path,flags,varargs);SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?SYSCALLS.get():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function __embind_register_bigint(primitiveType,name,size,minRange,maxRange){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(GROWABLE_HEAP_U8()[c]){ret+=embind_charCodes[GROWABLE_HEAP_U8()[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}return name}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+'    "use strict";'+"    return body.apply(this, arguments);\n"+"};\n")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i<myTypes.length;++i){registerType(myTypes[i],myTypeConverters[i])}}var typeConverters=new Array(dependentTypes.length);var unregisteredTypes=[];var registered=0;dependentTypes.forEach((dt,i)=>{if(registeredTypes.hasOwnProperty(dt)){typeConverters[i]=registeredTypes[dt]}else{unregisteredTypes.push(dt);if(!awaitingDependencies.hasOwnProperty(dt)){awaitingDependencies[dt]=[]}awaitingDependencies[dt].push(()=>{typeConverters[i]=registeredTypes[dt];++registered;if(registered===unregisteredTypes.length){onComplete(typeConverters)}})}});if(0===unregisteredTypes.length){onComplete(typeConverters)}}function registerType(rawType,registeredInstance,options={}){if(!("argPackAdvance"in registeredInstance)){throw new TypeError("registerType registeredInstance requires argPackAdvance")}var name=registeredInstance.name;if(!rawType){throwBindingError('type "'+name+'" must have a positive integer typeid pointer')}if(registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations){return}else{throwBindingError("Cannot register type '"+name+"' twice")}}registeredTypes[rawType]=registeredInstance;delete typeDependencies[rawType];if(awaitingDependencies.hasOwnProperty(rawType)){var callbacks=awaitingDependencies[rawType];delete awaitingDependencies[rawType];callbacks.forEach(cb=>cb())}}function __embind_register_bool(rawType,name,size,trueValue,falseValue){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(wt){return!!wt},"toWireType":function(destructors,o){return o?trueValue:falseValue},"argPackAdvance":8,"readValueFromPointer":function(pointer){var heap;if(size===1){heap=GROWABLE_HEAP_I8()}else if(size===2){heap=GROWABLE_HEAP_I16()}else if(size===4){heap=GROWABLE_HEAP_I32()}else{throw new TypeError("Unknown boolean type size: "+name)}return this["fromWireType"](heap[pointer>>shift])},destructorFunction:null})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i<emval_handle_array.length;++i){if(emval_handle_array[i]!==undefined){++count}}return count}function get_first_emval(){for(var i=5;i<emval_handle_array.length;++i){if(emval_handle_array[i]!==undefined){return emval_handle_array[i]}}return null}function init_emval(){Module["count_emval_handles"]=count_emval_handles;Module["get_first_emval"]=get_first_emval}var Emval={toValue:handle=>{if(!handle){throwBindingError("Cannot use deleted val. handle = "+handle)}return emval_handle_array[handle].value},toHandle:value=>{switch(value){case undefined:return 1;case null:return 2;case true:return 3;case false:return 4;default:{var handle=emval_free_list.length?emval_free_list.pop():emval_handle_array.length;emval_handle_array[handle]={refcount:1,value:value};return handle}}}};function simpleReadValueFromPointer(pointer){return this["fromWireType"](GROWABLE_HEAP_I32()[pointer>>2])}function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(handle){var rv=Emval.toValue(handle);__emval_decref(handle);return rv},"toWireType":function(destructors,value){return Emval.toHandle(value)},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](GROWABLE_HEAP_F32()[pointer>>2])};case 3:return function(pointer){return this["fromWireType"](GROWABLE_HEAP_F64()[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+typeof constructor+" which is not a function")}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i<argTypes.length;++i){if(argTypes[i]!==null&&argTypes[i].destructorFunction===undefined){needsDestructorStack=true;break}}var returns=argTypes[0].name!=="void";var argsList="";var argsListWired="";for(var i=0;i<argCount-2;++i){argsList+=(i!==0?", ":"")+"arg"+i;argsListWired+=(i!==0?", ":"")+"arg"+i+"Wired"}var invokerFnBody="return function "+makeLegalFunctionName(humanName)+"("+argsList+") {\n"+"if (arguments.length !== "+(argCount-2)+") {\n"+"throwBindingError('function "+humanName+" called with ' + arguments.length + ' arguments, expected "+(argCount-2)+" args!');\n"+"}\n";if(needsDestructorStack){invokerFnBody+="var destructors = [];\n"}var dtorStack=needsDestructorStack?"destructors":"null";var args1=["throwBindingError","invoker","fn","runDestructors","retType","classParam"];var args2=[throwBindingError,cppInvokerFunc,cppTargetFunc,runDestructors,argTypes[0],argTypes[1]];if(isClassMethodFunc){invokerFnBody+="var thisWired = classParam.toWireType("+dtorStack+", this);\n"}for(var i=0;i<argCount-2;++i){invokerFnBody+="var arg"+i+"Wired = argType"+i+".toWireType("+dtorStack+", arg"+i+"); // "+argTypes[i+2].name+"\n";args1.push("argType"+i);args2.push(argTypes[i+2])}if(isClassMethodFunc){argsListWired="thisWired"+(argsListWired.length>0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i<argTypes.length;++i){var paramName=i===1?"thisWired":"arg"+(i-2)+"Wired";if(argTypes[i].destructorFunction!==null){invokerFnBody+=paramName+"_dtor("+paramName+"); // "+argTypes[i].name+"\n";args1.push(paramName+"_dtor");args2.push(argTypes[i].destructorFunction)}}}if(returns){invokerFnBody+="var ret = retType.fromWireType(rv);\n"+"return ret;\n"}else{}invokerFnBody+="}\n";args1.push(invokerFnBody);var invokerFunction=new_(Function,args1).apply(null,args2);return invokerFunction}function ensureOverloadTable(proto,methodName,humanName){if(undefined===proto[methodName].overloadTable){var prevFunc=proto[methodName];proto[methodName]=function(){if(!proto[methodName].overloadTable.hasOwnProperty(arguments.length)){throwBindingError("Function '"+humanName+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+proto[methodName].overloadTable+")!")}return proto[methodName].overloadTable[arguments.length].apply(this,arguments)};proto[methodName].overloadTable=[];proto[methodName].overloadTable[prevFunc.argCount]=prevFunc}}function exposePublicSymbol(name,value,numArguments){if(Module.hasOwnProperty(name)){if(undefined===numArguments||undefined!==Module[name].overloadTable&&undefined!==Module[name].overloadTable[numArguments]){throwBindingError("Cannot register public name '"+name+"' twice")}ensureOverloadTable(Module,name,name);if(Module.hasOwnProperty(numArguments)){throwBindingError("Cannot register multiple overloads of a function with the same number of arguments ("+numArguments+")!")}Module[name].overloadTable[numArguments]=value}else{Module[name]=value;if(undefined!==numArguments){Module[name].numArguments=numArguments}}}function heap32VectorToArray(count,firstElement){var array=[];for(var i=0;i<count;i++){array.push(GROWABLE_HEAP_U32()[firstElement+i*4>>2])}return array}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function dynCallLegacy(sig,ptr,args){var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}function dynCall(sig,ptr,args){if(sig.includes("j")){return dynCallLegacy(sig,ptr,args)}var rtn=getWasmTableEntry(ptr).apply(null,args);return rtn}function getDynCaller(sig,ptr){var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(){if(signature.includes("j")){return getDynCaller(signature,rawFunction)}return getWasmTableEntry(rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError("unknown function pointer with signature "+signature+": "+rawFunction)}return fp}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv}function throwUnboundTypeError(message,types){var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(message+": "+unboundTypes.map(getTypeName).join([", "]))}function __embind_register_function(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn){var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError("Cannot call "+name+" due to unbound types",argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn),argCount-1);return[]})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return GROWABLE_HEAP_I8()[pointer]}:function readU8FromPointer(pointer){return GROWABLE_HEAP_U8()[pointer]};case 1:return signed?function readS16FromPointer(pointer){return GROWABLE_HEAP_I16()[pointer>>1]}:function readU16FromPointer(pointer){return GROWABLE_HEAP_U16()[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return GROWABLE_HEAP_I32()[pointer>>2]}:function readU32FromPointer(pointer){return GROWABLE_HEAP_U32()[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=value=>value<<bitshift>>>bitshift}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":toWireType,"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=GROWABLE_HEAP_U32();var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=GROWABLE_HEAP_U32()[value>>2];var payload=value+4;var str;if(stdStringIsUTF8){var decodeStartPtr=payload;for(var i=0;i<=length;++i){var currentBytePtr=payload+i;if(i==length||GROWABLE_HEAP_U8()[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;i<length;++i){a[i]=String.fromCharCode(GROWABLE_HEAP_U8()[payload+i])}str=a.join("")}_free(value);return str},"toWireType":function(destructors,value){if(value instanceof ArrayBuffer){value=new Uint8Array(value)}var length;var valueIsOfTypeString=typeof value=="string";if(!(valueIsOfTypeString||value instanceof Uint8Array||value instanceof Uint8ClampedArray||value instanceof Int8Array)){throwBindingError("Cannot pass non-string to std::string")}if(stdStringIsUTF8&&valueIsOfTypeString){length=lengthBytesUTF8(value)}else{length=value.length}var base=_malloc(4+length+1);var ptr=base+4;GROWABLE_HEAP_U32()[base>>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr,length+1)}else{if(valueIsOfTypeString){for(var i=0;i<length;++i){var charCode=value.charCodeAt(i);if(charCode>255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}GROWABLE_HEAP_U8()[ptr+i]=charCode}}else{for(var i=0;i<length;++i){GROWABLE_HEAP_U8()[ptr+i]=value[i]}}}if(destructors!==null){destructors.push(_free,base)}return base},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}var UTF16Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):undefined;function UTF16ToString(ptr,maxBytesToRead){var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&GROWABLE_HEAP_U16()[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder)return UTF16Decoder.decode(GROWABLE_HEAP_U8().slice(ptr,endPtr));var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=GROWABLE_HEAP_I16()[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite<str.length*2?maxBytesToWrite/2:str.length;for(var i=0;i<numCharsToWrite;++i){var codeUnit=str.charCodeAt(i);GROWABLE_HEAP_I16()[outPtr>>1]=codeUnit;outPtr+=2}GROWABLE_HEAP_I16()[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=GROWABLE_HEAP_I32()[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i<str.length;++i){var codeUnit=str.charCodeAt(i);if(codeUnit>=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}GROWABLE_HEAP_I32()[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}GROWABLE_HEAP_I32()[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i<str.length;++i){var codeUnit=str.charCodeAt(i);if(codeUnit>=55296&&codeUnit<=57343)++i;len+=4}return len}function __embind_register_std_wstring(rawType,charSize,name){name=readLatin1String(name);var decodeString,encodeString,getHeap,lengthBytesUTF,shift;if(charSize===2){decodeString=UTF16ToString;encodeString=stringToUTF16;lengthBytesUTF=lengthBytesUTF16;getHeap=()=>GROWABLE_HEAP_U16();shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=()=>GROWABLE_HEAP_U32();shift=2}registerType(rawType,{name:name,"fromWireType":function(value){var length=GROWABLE_HEAP_U32()[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":function(destructors,value){if(!(typeof value=="string")){throwBindingError("Cannot pass non-string to C++ string type "+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);GROWABLE_HEAP_U32()[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":function(){return undefined},"toWireType":function(destructors,o){return undefined}})}function __emscripten_default_pthread_stack_size(){return 65536}var nowIsMonotonic=true;function __emscripten_get_now_is_monotonic(){return nowIsMonotonic}function executeNotifiedProxyingQueue(queue){Atomics.store(GROWABLE_HEAP_I32(),queue>>2,1);if(_pthread_self()){__emscripten_proxy_execute_task_queue(queue)}Atomics.compareExchange(GROWABLE_HEAP_I32(),queue>>2,1,0)}Module["executeNotifiedProxyingQueue"]=executeNotifiedProxyingQueue;function __emscripten_notify_task_queue(targetThreadId,currThreadId,mainThreadId,queue){if(targetThreadId==currThreadId){setTimeout(()=>executeNotifiedProxyingQueue(queue))}else if(ENVIRONMENT_IS_PTHREAD){postMessage({"targetThread":targetThreadId,"cmd":"processProxyingQueue","queue":queue})}else{var worker=PThread.pthreads[targetThreadId];if(!worker){return}worker.postMessage({"cmd":"processProxyingQueue","queue":queue})}return 1}function __emscripten_set_offscreencanvas_size(target,width,height){return-1}function requireRegisteredType(rawType,humanName){var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(humanName+" has unknown type "+getTypeName(rawType))}return impl}function __emval_as(handle,returnType,destructorsRef){handle=Emval.toValue(handle);returnType=requireRegisteredType(returnType,"emval::as");var destructors=[];var rd=Emval.toHandle(destructors);GROWABLE_HEAP_U32()[destructorsRef>>2]=rd;return returnType["toWireType"](destructors,handle)}var emval_symbols={};function getStringOrSymbol(address){var symbol=emval_symbols[address];if(symbol===undefined){return readLatin1String(address)}return symbol}var emval_methodCallers=[];function __emval_call_void_method(caller,handle,methodName,args){caller=emval_methodCallers[caller];handle=Emval.toValue(handle);methodName=getStringOrSymbol(methodName);caller(handle,methodName,null,args)}function emval_addMethodCaller(caller){var id=emval_methodCallers.length;emval_methodCallers.push(caller);return id}function emval_lookupTypes(argCount,argTypes){var a=new Array(argCount);for(var i=0;i<argCount;++i){a[i]=requireRegisteredType(GROWABLE_HEAP_U32()[argTypes+i*POINTER_SIZE>>2],"parameter "+i)}return a}var emval_registeredMethods=[];function __emval_get_method_caller(argCount,argTypes){var types=emval_lookupTypes(argCount,argTypes);var retType=types[0];var signatureName=retType.name+"_$"+types.slice(1).map(function(t){return t.name}).join("_")+"$";var returnId=emval_registeredMethods[signatureName];if(returnId!==undefined){return returnId}var params=["retType"];var args=[retType];var argsList="";for(var i=0;i<argCount-1;++i){argsList+=(i!==0?", ":"")+"arg"+i;params.push("argType"+i);args.push(types[1+i])}var functionName=makeLegalFunctionName("methodCaller_"+signatureName);var functionBody="return function "+functionName+"(handle, name, destructors, args) {\n";var offset=0;for(var i=0;i<argCount-1;++i){functionBody+="    var arg"+i+" = argType"+i+".readValueFromPointer(args"+(offset?"+"+offset:"")+");\n";offset+=types[i+1]["argPackAdvance"]}functionBody+="    var rv = handle[name]("+argsList+");\n";for(var i=0;i<argCount-1;++i){if(types[i+1]["deleteObject"]){functionBody+="    argType"+i+".deleteObject(arg"+i+");\n"}}if(!retType.isVoid){functionBody+="    return retType.toWireType(destructors, rv);\n"}functionBody+="};\n";params.push(functionBody);var invokerFunction=new_(Function,params).apply(null,args);returnId=emval_addMethodCaller(invokerFunction);emval_registeredMethods[signatureName]=returnId;return returnId}function __emval_get_module_property(name){name=getStringOrSymbol(name);return Emval.toHandle(Module[name])}function __emval_get_property(handle,key){handle=Emval.toValue(handle);key=Emval.toValue(key);return Emval.toHandle(handle[key])}function __emval_incref(handle){if(handle>4){emval_handle_array[handle].refcount+=1}}function craftEmvalAllocator(argCount){var argsList="";for(var i=0;i<argCount;++i){argsList+=(i!==0?", ":"")+"arg"+i}var getMemory=()=>GROWABLE_HEAP_U32();var functionBody="return function emval_allocator_"+argCount+"(constructor, argTypes, args) {\n"+"  var HEAPU32 = getMemory();\n";for(var i=0;i<argCount;++i){functionBody+="var argType"+i+" = requireRegisteredType(HEAPU32[((argTypes)>>2)], 'parameter "+i+"');\n"+"var arg"+i+" = argType"+i+".readValueFromPointer(args);\n"+"args += argType"+i+"['argPackAdvance'];\n"+"argTypes += 4;\n"}functionBody+="var obj = new constructor("+argsList+");\n"+"return valueToHandle(obj);\n"+"}\n";return new Function("requireRegisteredType","Module","valueToHandle","getMemory",functionBody)(requireRegisteredType,Module,Emval.toHandle,getMemory)}var emval_newers={};function __emval_new(handle,argCount,argTypes,args){handle=Emval.toValue(handle);var newer=emval_newers[argCount];if(!newer){newer=craftEmvalAllocator(argCount);emval_newers[argCount]=newer}return newer(handle,argTypes,args)}function __emval_new_cstring(v){return Emval.toHandle(getStringOrSymbol(v))}function __emval_run_destructors(handle){var destructors=Emval.toValue(handle);runDestructors(destructors);__emval_decref(handle)}function _abort(){abort("")}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;if(ENVIRONMENT_IS_NODE)text="warning: "+text;err(text)}}function _emscripten_check_blocking_allowed(){if(ENVIRONMENT_IS_NODE)return;if(ENVIRONMENT_IS_WORKER)return;warnOnce("Blocking on the main thread is very dangerous, see https://emscripten.org/docs/porting/pthreads.html#blocking-on-the-main-browser-thread")}function getHeapMax(){return 2147483648}function _emscripten_get_heap_max(){return getHeapMax()}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){_emscripten_get_now=()=>{var t=process["hrtime"]();return t[0]*1e3+t[1]/1e6}}else if(ENVIRONMENT_IS_PTHREAD){_emscripten_get_now=()=>performance.now()-Module["__performance_now_clock_drift"]}else _emscripten_get_now=()=>performance.now();function _emscripten_memcpy_big(dest,src,num){GROWABLE_HEAP_U8().copyWithin(dest,src,src+num)}function _emscripten_num_logical_cores(){if(ENVIRONMENT_IS_NODE)return require("os").cpus().length;return navigator["hardwareConcurrency"]}function withStackSave(f){var stack=stackSave();var ret=f();stackRestore(stack);return ret}function _emscripten_proxy_to_main_thread_js(index,sync){var numCallArgs=arguments.length-2;var outerArgs=arguments;return withStackSave(()=>{var serializedNumCallArgs=numCallArgs;var args=stackAlloc(serializedNumCallArgs*8);var b=args>>3;for(var i=0;i<numCallArgs;i++){var arg=outerArgs[2+i];GROWABLE_HEAP_F64()[b+i]=arg}return _emscripten_run_in_main_runtime_thread_js(index,serializedNumCallArgs,args,sync)})}var _emscripten_receive_on_main_thread_js_callArgs=[];function _emscripten_receive_on_main_thread_js(index,numCallArgs,args){_emscripten_receive_on_main_thread_js_callArgs.length=numCallArgs;var b=args>>3;for(var i=0;i<numCallArgs;i++){_emscripten_receive_on_main_thread_js_callArgs[i]=GROWABLE_HEAP_F64()[b+i]}var isEmAsmConst=index<0;var func=!isEmAsmConst?proxiedFunctionTable[index]:ASM_CONSTS[-index-1];return func.apply(null,_emscripten_receive_on_main_thread_js_callArgs)}function emscripten_realloc_buffer(size){try{wasmMemory.grow(size-buffer.byteLength+65535>>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=GROWABLE_HEAP_U8().length;requestedSize=requestedSize>>>0;if(requestedSize<=oldSize){return false}var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}let alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}function _emscripten_unwind_to_js_event_loop(){throw"unwind"}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i<str.length;++i){GROWABLE_HEAP_I8()[buffer++>>0]=str.charCodeAt(i)}if(!dontAddNull)GROWABLE_HEAP_I8()[buffer>>0]=0}function _environ_get(__environ,environ_buf){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(7,1,__environ,environ_buf);var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;GROWABLE_HEAP_U32()[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(8,1,penviron_count,penviron_buf_size);var strings=getEnvStrings();GROWABLE_HEAP_U32()[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});GROWABLE_HEAP_U32()[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(9,1,fd);try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function doReadv(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=GROWABLE_HEAP_U32()[iov>>2];var len=GROWABLE_HEAP_U32()[iov+4>>2];iov+=8;var curr=FS.read(stream,GROWABLE_HEAP_I8(),ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr<len)break}return ret}function _fd_read(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(10,1,fd,iov,iovcnt,pnum);try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doReadv(stream,iov,iovcnt);GROWABLE_HEAP_U32()[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function convertI32PairToI53Checked(lo,hi){return hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(11,1,fd,offset_low,offset_high,whence,newOffset);try{var offset=convertI32PairToI53Checked(offset_low,offset_high);if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],GROWABLE_HEAP_I32()[newOffset>>2]=tempI64[0],GROWABLE_HEAP_I32()[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function doWritev(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=GROWABLE_HEAP_U32()[iov>>2];var len=GROWABLE_HEAP_U32()[iov+4>>2];iov+=8;var curr=FS.write(stream,GROWABLE_HEAP_I8(),ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(12,1,fd,iov,iovcnt,pnum);try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);GROWABLE_HEAP_U32()[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function writeArrayToMemory(array,buffer){GROWABLE_HEAP_I8().set(array,buffer)}function _strftime(s,maxsize,format,tm){var tm_zone=GROWABLE_HEAP_I32()[tm+40>>2];var date={tm_sec:GROWABLE_HEAP_I32()[tm>>2],tm_min:GROWABLE_HEAP_I32()[tm+4>>2],tm_hour:GROWABLE_HEAP_I32()[tm+8>>2],tm_mday:GROWABLE_HEAP_I32()[tm+12>>2],tm_mon:GROWABLE_HEAP_I32()[tm+16>>2],tm_year:GROWABLE_HEAP_I32()[tm+20>>2],tm_wday:GROWABLE_HEAP_I32()[tm+24>>2],tm_yday:GROWABLE_HEAP_I32()[tm+28>>2],tm_isdst:GROWABLE_HEAP_I32()[tm+32>>2],tm_gmtoff:GROWABLE_HEAP_I32()[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length<digits){str=character[0]+str}return str}function leadingNulls(value,digits){return leadingSomething(value,digits,"0")}function compareByDay(date1,date2){function sgn(value){return value<0?-1:value>0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}return thisDate.getFullYear()}return thisDate.getFullYear()-1}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}return"PM"},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var days=date.tm_yday+7-date.tm_wday;return leadingNulls(Math.floor(days/7),2)},"%V":function(date){var val=Math.floor((date.tm_yday+7-(date.tm_wday+6)%7)/7);if((date.tm_wday+371-date.tm_yday-2)%7<=2){val++}if(!val){val=52;var dec31=(date.tm_wday+7-date.tm_yday-1)%7;if(dec31==4||dec31==5&&__isLeapYear(date.tm_year%400-1)){val++}}else if(val==53){var jan1=(date.tm_wday+371-date.tm_yday)%7;if(jan1!=4&&(jan1!=3||!__isLeapYear(date.tm_year)))val=1}return leadingNulls(val,2)},"%w":function(date){return date.tm_wday},"%W":function(date){var days=date.tm_yday+7-(date.tm_wday+6)%7;return leadingNulls(Math.floor(days/7),2)},"%y":function(date){return(date.tm_year+1900).toString().substring(2)},"%Y":function(date){return date.tm_year+1900},"%z":function(date){var off=date.tm_gmtoff;var ahead=off>=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm,loc){return _strftime(s,maxsize,format,tm)}PThread.init();var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_unlink"]=FS.unlink;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_emval();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");var proxiedFunctionTable=[null,_proc_exit,exitOnMainThread,pthreadCreateProxied,___syscall_fcntl64,___syscall_ioctl,___syscall_openat,_environ_get,_environ_sizes_get,_fd_close,_fd_read,_fd_seek,_fd_write];var ASSERTIONS=false;var decodeBase64=typeof atob=="function"?atob:function(input){var keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{enc1=keyStr.indexOf(input.charAt(i++));enc2=keyStr.indexOf(input.charAt(i++));enc3=keyStr.indexOf(input.charAt(i++));enc4=keyStr.indexOf(input.charAt(i++));chr1=enc1<<2|enc2>>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!==64){output=output+String.fromCharCode(chr2)}if(enc4!==64){output=output+String.fromCharCode(chr3)}}while(i<input.length);return output};function intArrayFromBase64(s){if(typeof ENVIRONMENT_IS_NODE=="boolean"&&ENVIRONMENT_IS_NODE){var buf=Buffer.from(s,"base64");return new Uint8Array(buf["buffer"],buf["byteOffset"],buf["byteLength"])}try{var decoded=decodeBase64(s);var bytes=new Uint8Array(decoded.length);for(var i=0;i<decoded.length;++i){bytes[i]=decoded.charCodeAt(i)}return bytes}catch(_){throw new Error("Converting base64 string to bytes failed.")}}function tryParseAsDataURI(filename){if(!isDataURI(filename)){return}return intArrayFromBase64(filename.slice(dataURIPrefix.length))}var asmLibraryArg={"d":___cxa_allocate_exception,"c":___cxa_throw,"J":___emscripten_init_main_thread_js,"n":___emscripten_thread_cleanup,"G":___pthread_create_js,"r":___syscall_fcntl64,"O":___syscall_ioctl,"P":___syscall_openat,"y":__embind_register_bigint,"T":__embind_register_bool,"S":__embind_register_emval,"t":__embind_register_float,"i":__embind_register_function,"g":__embind_register_integer,"e":__embind_register_memory_view,"s":__embind_register_std_string,"l":__embind_register_std_wstring,"U":__embind_register_void,"H":__emscripten_default_pthread_stack_size,"R":__emscripten_get_now_is_monotonic,"I":__emscripten_notify_task_queue,"L":__emscripten_set_offscreencanvas_size,"w":__emval_as,"V":__emval_call_void_method,"f":__emval_decref,"W":__emval_get_method_caller,"u":__emval_get_module_property,"j":__emval_get_property,"m":__emval_incref,"X":__emval_new,"k":__emval_new_cstring,"v":__emval_run_destructors,"b":_abort,"o":_emscripten_check_blocking_allowed,"z":_emscripten_get_heap_max,"h":_emscripten_get_now,"M":_emscripten_memcpy_big,"A":_emscripten_num_logical_cores,"K":_emscripten_receive_on_main_thread_js,"E":_emscripten_resize_heap,"Q":_emscripten_unwind_to_js_event_loop,"C":_environ_get,"D":_environ_sizes_get,"F":_exit,"p":_fd_close,"N":_fd_read,"x":_fd_seek,"q":_fd_write,"a":wasmMemory||Module["wasmMemory"],"B":_strftime_l};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["Y"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["_"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["$"]).apply(null,arguments)};var __emscripten_tls_init=Module["__emscripten_tls_init"]=function(){return(__emscripten_tls_init=Module["__emscripten_tls_init"]=Module["asm"]["aa"]).apply(null,arguments)};var _pthread_self=Module["_pthread_self"]=function(){return(_pthread_self=Module["_pthread_self"]=Module["asm"]["ba"]).apply(null,arguments)};var ___getTypeName=Module["___getTypeName"]=function(){return(___getTypeName=Module["___getTypeName"]=Module["asm"]["ca"]).apply(null,arguments)};var __embind_initialize_bindings=Module["__embind_initialize_bindings"]=function(){return(__embind_initialize_bindings=Module["__embind_initialize_bindings"]=Module["asm"]["da"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["ea"]).apply(null,arguments)};var __emscripten_thread_init=Module["__emscripten_thread_init"]=function(){return(__emscripten_thread_init=Module["__emscripten_thread_init"]=Module["asm"]["fa"]).apply(null,arguments)};var __emscripten_thread_crashed=Module["__emscripten_thread_crashed"]=function(){return(__emscripten_thread_crashed=Module["__emscripten_thread_crashed"]=Module["asm"]["ga"]).apply(null,arguments)};var _emscripten_run_in_main_runtime_thread_js=Module["_emscripten_run_in_main_runtime_thread_js"]=function(){return(_emscripten_run_in_main_runtime_thread_js=Module["_emscripten_run_in_main_runtime_thread_js"]=Module["asm"]["ha"]).apply(null,arguments)};var __emscripten_proxy_execute_task_queue=Module["__emscripten_proxy_execute_task_queue"]=function(){return(__emscripten_proxy_execute_task_queue=Module["__emscripten_proxy_execute_task_queue"]=Module["asm"]["ia"]).apply(null,arguments)};var __emscripten_thread_free_data=Module["__emscripten_thread_free_data"]=function(){return(__emscripten_thread_free_data=Module["__emscripten_thread_free_data"]=Module["asm"]["ja"]).apply(null,arguments)};var __emscripten_thread_exit=Module["__emscripten_thread_exit"]=function(){return(__emscripten_thread_exit=Module["__emscripten_thread_exit"]=Module["asm"]["ka"]).apply(null,arguments)};var _emscripten_stack_set_limits=Module["_emscripten_stack_set_limits"]=function(){return(_emscripten_stack_set_limits=Module["_emscripten_stack_set_limits"]=Module["asm"]["la"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["ma"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["na"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["oa"]).apply(null,arguments)};var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=function(){return(___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=Module["asm"]["pa"]).apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){return(dynCall_jiji=Module["dynCall_jiji"]=Module["asm"]["qa"]).apply(null,arguments)};var dynCall_viijii=Module["dynCall_viijii"]=function(){return(dynCall_viijii=Module["dynCall_viijii"]=Module["asm"]["ra"]).apply(null,arguments)};var dynCall_iiiiij=Module["dynCall_iiiiij"]=function(){return(dynCall_iiiiij=Module["dynCall_iiiiij"]=Module["asm"]["sa"]).apply(null,arguments)};var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=function(){return(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=Module["asm"]["ta"]).apply(null,arguments)};var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=function(){return(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=Module["asm"]["ua"]).apply(null,arguments)};Module["addRunDependency"]=addRunDependency;Module["removeRunDependency"]=removeRunDependency;Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["FS_unlink"]=FS.unlink;Module["keepRuntimeAlive"]=keepRuntimeAlive;Module["wasmMemory"]=wasmMemory;Module["ExitStatus"]=ExitStatus;Module["PThread"]=PThread;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}if(ENVIRONMENT_IS_PTHREAD){readyPromiseResolve(Module);initRuntime();postMessage({"cmd":"loaded"});return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run();
+function GROWABLE_HEAP_I8(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAP8}function GROWABLE_HEAP_U8(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAPU8}function GROWABLE_HEAP_I16(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAP16}function GROWABLE_HEAP_U16(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAPU16}function GROWABLE_HEAP_I32(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAP32}function GROWABLE_HEAP_U32(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAPU32}function GROWABLE_HEAP_F32(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAPF32}function GROWABLE_HEAP_F64(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAPF64}var Module=moduleArg;var readyPromiseResolve,readyPromiseReject;Module["ready"]=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var ENVIRONMENT_IS_PTHREAD=Module["ENVIRONMENT_IS_PTHREAD"]||false;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;if(ENVIRONMENT_IS_NODE){var fs=require("fs");var nodePath=require("path");if(ENVIRONMENT_IS_WORKER){scriptDirectory=nodePath.dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=(filename,binary)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror,binary=true)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);fs.readFile(filename,binary?undefined:"utf8",(err,data)=>{if(err)onerror(err);else onload(binary?data.buffer:data)})};if(!Module["thisProgram"]&&process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow};Module["inspect"]=()=>"[Emscripten Module object]";let nodeWorkerThreads;try{nodeWorkerThreads=require("worker_threads")}catch(e){console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?');throw e}global.Worker=nodeWorkerThreads.Worker}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}if(!ENVIRONMENT_IS_NODE){read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=title=>document.title=title}else{}if(ENVIRONMENT_IS_NODE){if(typeof performance=="undefined"){global.performance=require("perf_hooks").performance}}var defaultPrint=console.log.bind(console);var defaultPrintErr=console.error.bind(console);if(ENVIRONMENT_IS_NODE){defaultPrint=(...args)=>fs.writeSync(1,args.join(" ")+"\n");defaultPrintErr=(...args)=>fs.writeSync(2,args.join(" ")+"\n")}var out=Module["print"]||defaultPrint;var err=Module["printErr"]||defaultPrintErr;Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var wasmModule;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(text)}}var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;assert(INITIAL_MEMORY>=65536,"INITIAL_MEMORY should be larger than STACK_SIZE, was "+INITIAL_MEMORY+"! (STACK_SIZE="+65536+")");if(ENVIRONMENT_IS_PTHREAD){wasmMemory=Module["wasmMemory"]}else{if(Module["wasmMemory"]){wasmMemory=Module["wasmMemory"]}else{wasmMemory=new WebAssembly.Memory({"initial":INITIAL_MEMORY/65536,"maximum":2147483648/65536,"shared":true});if(!(wasmMemory.buffer instanceof SharedArrayBuffer)){err("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag");if(ENVIRONMENT_IS_NODE){err("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and/or recent version)")}throw Error("bad memory")}}}updateMemoryViews();INITIAL_MEMORY=wasmMemory.buffer.byteLength;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeKeepaliveCounter=0;function keepRuntimeAlive(){return noExitRuntime||runtimeKeepaliveCounter>0}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(ENVIRONMENT_IS_PTHREAD)return;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith("file://")}var wasmBinaryFile;wasmBinaryFile="data:application/octet-stream;base64,AGFzbQEAAAABxQRKYAF/AGABfwF/YAJ/fwBgA39/fwF/YAJ/fwF/YAN/f38AYAR/f39/AGAEf39/fwF/YAZ/f39/f38Bf2AAAGAFf39/f38Bf2AFf39/f38AYAZ/f39/f38AYAh/f39/f39/fwF/YAABf2AHf39/f39/fwF/YAd/f39/f39/AGABfQF9YAV/fn5+fgBgA39+fwF+YAV/f39/fgF/YAR/f39/AX5gBH9+fn8AYAp/f39/f39/f39/AX9gB39/f39/fn4Bf2AGf39/f35+AX9gBX9/fn9/AGADf39/AXxgBH9/f38BfGAEf39+fgF/YAJ/fgBgAXwBfWACfH8BfGAFf39+fn4Bf2AIf39/f39/f38AYAx/f39/f39/f39/f38Bf2ADf35/AX9gD39/f39/f39/f39/f39/fwBgCn9/f39/f39/f38AYAt/f39/f39/f39/fwF/YAZ/fH9/f38Bf2AJf39/f39/f39/AGAFf39/f3wBf2AAAXxgA39/fgF/YAABfmACf3wAYAJ9fQF9YAR+fn5+AX9gA39/fQF/YAJ+fwF/YAN/f3wBf2ACf30Bf2ABfABgBn9/fn5/fwF/YAR/f35/AX9gAn5+AXxgAnx8AXxgBH9/fn4AYAR/f399AGADf39/AX1gBH9/f34BfmADf39+AGACfn4BfWACf38BfmADfn5+AX9gCH9/fn5+f39/AX9gAX4Bf2ABfAF8YAF/AX5gAn1/AX9gBX9/f319AGAFf39/f30AYAl/f39/f39/f38BfwKmAjABYQFiAAkBYQFjAAUBYQFkAAUBYQFlACsBYQFmAAABYQFnAAsBYQFoABABYQFpAAQBYQFqAAEBYQFrAAUBYQFsAAABYQFtAAABYQFuAAkBYQFvAAEBYQFwAAcBYQFxAAMBYQFyAAIBYQFzAAUBYQF0AAcBYQF1AAEBYQF2AAABYQF3ABsBYQF4AAoBYQF5ABABYQF6AA4BYQFBAA4BYQFCAAoBYQFDAAQBYQFEAAQBYQFFAAEBYQFGAAUBYQFHAAABYQFIAAcBYQFJABwBYQFKAAABYQFLAAABYQFMAAcBYQFNAAMBYQFOAAcBYQFPAAkBYQFQAAABYQFRAA4BYQFSAAIBYQFTAAYBYQFUAAIBYQFVAAYBYQFWAAQBYQFhAgOAAoCAAgPEBsIGAAIBAREC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QQRrIgJBA0sNAAsLIAJFDQELA0AgAC0AACIDIAEtAAAiBEYEQCABQQFqIQEgAEEBaiEAIAJBAWsiAg0BDAILCyADIARrDwtBAAvFCgIFfxF+IwBB4ABrIgUkACAEQv///////z+DIQwgAiAEhUKAgICAgICAgIB/gyEKIAJC////////P4MiDUIgiCEOIARCMIinQf//AXEhBwJAAkAgAkIwiKdB//8BcSIJQf//AWtBgoB+TwRAIAdB//8Ba0GBgH5LDQELIAFQIAJC////////////AIMiC0KAgICAgIDA//8AVCALQoCAgICAgMD//wBRG0UEQCACQoCAgICAgCCEIQoMAgsgA1AgBEL///////////8AgyICQoCAgICAgMD//wBUIAJCgICAgICAwP//AFEbRQRAIARCgICAgICAIIQhCiADIQEMAgsgASALQoCAgICAgMD//wCFhFAEQCACIAOEUARAQoCAgICAgOD//wAhCkIAIQEMAwsgCkKAgICAgIDA//8AhCEKQgAhAQwCCyADIAJCgICAgICAwP//AIWEUARAIAEgC4QhGUIAIQEgGVAEQEKAgICAgIDg//8AIQoMAwsgCkKAgICAgIDA//8AhCEKDAILIAEgC4RQBEBCACEBDAILIAIgA4RQBEBCACEBDAILIAtC////////P1gEQCAFQdAAaiABIA0gASANIA1QIgYbeSAGQQZ0rXynIgZBD2sQZUEQIAZrIQYgBSkDWCINQiCIIQ4gBSkDUCEBCyACQv///////z9WDQAgBUFAayADIAwgAyAMIAxQIggbeSAIQQZ0rXynIghBD2sQZSAGIAhrQRBqIQYgBSkDSCEMIAUpA0AhAwsgA0IPhiILQoCA/v8PgyICIAFCIIgiBH4iECALQiCIIhMgAUL/////D4MiAX58Ig9CIIYiESABIAJ+fCILIBFUrSACIA1C/////w+DIg1+IhUgBCATfnwiESAMQg+GIhIgA0IxiIRC/////w+DIgMgAX58IhQgDyAQVK1CIIYgD0IgiIR8Ig8gAiAOQoCABIQiDH4iFiANIBN+fCIOIBJCIIhCgICAgAiEIgIgAX58IhAgAyAEfnwiEkIghnwiF3whASAHIAlqIAZqQf//AGshBgJAIAIgBH4iGCAMIBN+fCIEIBhUrSAEIAQgAyANfnwiBFatfCACIAx+fCAEIAQgESAVVK0gESAUVq18fCIEVq18IAMgDH4iAyACIA1+fCICIANUrUIghiACQiCIhHwgBCACQiCGfCICIARUrXwgAiACIBAgElatIA4gFlStIA4gEFatfHxCIIYgEkIgiIR8IgJWrXwgAiACIA8gFFStIA8gF1atfHwiAlatfCIEQoCAgICAgMAAg0IAUgRAIAZBAWohBgwBCyALQj+IIRogBEIBhiACQj+IhCEEIAJCAYYgAUI/iIQhAiALQgGGIQsgGiABQgGGhCEBCyAGQf//AU4EQCAKQoCAgICAgMD//wCEIQpCACEBDAELAn4gBkEATARAQQEgBmsiB0H/AE0EQCAFQTBqIAsgASAGQf8AaiIGEGUgBUEgaiACIAQgBhBlIAVBEGogCyABIAcQqAEgBSACIAQgBxCoASAFKQMwIAUpAziEQgBSrSAFKQMgIAUpAxCEhCELIAUpAyggBSkDGIQhASAFKQMAIQIgBSkDCAwCC0IAIQEMAgsgBEL///////8/gyAGrUIwhoQLIAqEIQogC1AgAUIAWSABQoCAgICAgICAgH9RG0UEQCAKIAJCAXwiAVCtfCEKDAELIAsgAUKAgICAgICAgIB/hYRCAFIEQCACIQEMAQsgCiACIAJCAYN8IgEgAlStfCEKCyAAIAE3AwAgACAKNwMIIAVB4ABqJAALBQAQAAALLgECfyMAQRBrIgMkACADIAI3AwggACABQQEgA0EIakEAEEAhBCADQRBqJAAgBAvsAQEGfyMAQSBrIgEkACABQQA2AhAgAUG0ATYCDCABIAEpAgw3AwAgAUEUaiIDIAEpAgA3AgQgAyAANgIAIwBBEGsiAiQAIAD+EAIAQX9HBEACQCACQQxqIgUgAzYCACACQQhqIgQgBTYCAEHA/DQQVRoDQCAAKAIAQQFGBEBB2Pw0QcD8NBD2AgwBCwsgACgCAEUEQCAAQQH+FwIAQcD8NBBQGiAEEJUDQcD8NBBVGiAAQX/+FwIAQcD8NBBQGkHY/DQQkwIaDAELQcD8NBBQGgsLIAJBEGokACAAKAIEIQYgAUEgaiQAIAZBAWsLowoBCX8jAEEQayIJJAAgAUEEakEB/h4CABojAEEQayIDJAAgAyABNgIMIAkgAygCDDYCDCADQRBqJAAgAiAAQQhqIgAoAgQgACgCACIDa0ECdU8EQAJAIAJBAWoiASAAKAIEIgQgA2tBAnUiA0sEQCMAQSBrIgskAAJAIAEgA2siBiAAKAIIIARrQQJ1TQRAIAAgBhCZAwwBCyAAQRBqIQcgC0EMaiEBAn8gBiAAKAIEIAAoAgBrQQJ1aiEFIwBBEGsiBCQAIAQgBTYCDCAFIAAQgQMiA00EQCAAKAIIIAAoAgBrQQJ1IgUgA0EBdkkEQCAEIAVBAXQ2AggjAEEQayIDJAAgBEEIaiIFKAIAIARBDGoiCCgCAEkhCiADQRBqJAAgCCAFIAobKAIAIQMLIARBEGokACADDAELEEEACyEFIAAoAgQgACgCAGtBAnUhCEEAIQMjAEEQayIEJAAgBEEANgIMIAFBADYCDCABIAc2AhAgBQR/IARBBGogASgCECAFEIADIAQoAgQhAyAEKAIIBUEACyEFIAEgAzYCACABIAMgCEECdGoiBzYCCCABIAc2AgQgASADIAVBAnRqNgIMIARBEGokACMAQRBrIgQkACAEIAEoAgg2AgQgASgCCCEDIAQgAUEIajYCDCAEIAMgBkECdGo2AgggBCgCBCEDA0AgBCgCCCADRwRAIAEoAhAaIAQoAgRBADYCACAEIAQoAgRBBGoiAzYCBAwBCwsgBCgCDCAEKAIENgIAIARBEGokACMAQRBrIgYkACAAKAIIGiAAKAIAGiAGIAAoAgQ2AgggBiAAKAIANgIEIAYgASgCBDYCACAGKAIIIQcgBigCBCEIIAYoAgAhCiMAQRBrIgUkACMAQSBrIgMkACMAQRBrIgQkACAEIAc2AgwgBCAINgIIIAMgBCgCDDYCGCADIAQoAgg2AhwgBEEQaiQAIAMoAhghByADKAIcIQgjAEEQayIEJAAgBCAINgIIIAQgBzYCDCAEIAo2AgQDQCAEKAIMIgcgBCgCCEcEQCAEKAIEQQRrIAdBBGsoAgA2AgAgBCAEKAIMQQRrNgIMIAQgBCgCBEEEazYCBAwBCwsgAyAEKAIMNgIQIAMgBCgCBDYCFCAEQRBqJAAgAyADKAIQNgIMIAMgAygCFDYCCCAFIAMoAgw2AgggBSADKAIINgIMIANBIGokACAFKAIMIQMgBUEQaiQAIAYgAzYCDCABIAYoAgw2AgQgACgCACEDIAAgASgCBDYCACABIAM2AgQgACgCBCEDIAAgASgCCDYCBCABIAM2AgggACgCCCEDIAAgASgCDDYCCCABIAM2AgwgASABKAIENgIAIAAoAgQaIAAoAgAaIAAoAggaIAAoAgAaIAZBEGokACABKAIEIQMDQCADIAEoAggiBEcEQCABKAIQGiABIARBBGs2AggMAQsLIAEoAgAiAwRAIAEoAhAgAyABKAIMIANrQQJ1EP4CCwsgC0EgaiQADAELIAEgA0kEQCAAKAIEGiAAKAIAIQMgACABQQJ0IANqEP8CIAAoAggaIAAoAgQaIAAoAgAaCwsLIAAoAgAgAkECdGooAgAiAQRAIAFBBGpBf/4eAgBFBEAgASABKAIAKAIIEQAACwsgCSgCDCEBIAlBADYCDCAAKAIAIAJBAnRqIAE2AgAgCSgCDCEAIAlBADYCDCAABEAgAEEEakF//h4CAEUEQCAAIAAoAgAoAggRAAALCyAJQRBqJAALCQBB3xwQwQQACyUAIAAtAAtBB3YEQCAAIAAoAgAgACgCCEH/////B3EQ1wELIAALNAEBfyMAQRBrIgMkACADIAE2AgwgACADKAIMNgIAIABBBGogAigCADYCACADQRBqJAAgAAvVAQEFfyMAQRBrIgQkAAJAIAIpAxAgASkDEIFCAFINACACKQMYIAEpAxiBQgBSDQAgAikDICABKQMggUIAUg0AIAIpAyggASkDKIFCAFINACABKAJoIQcgACABKAIAIAIoAgggAkEQakEAEEAiA0EPNgJAIAcEQCAAIAMoAgAgAygCCCADQRBqQQAQQCEFCyADIAE2AmwgAyAFNgJoIAMgAjYCcCAEQRBqJAAgAw8LIARBqc4ANgIIIARBrSs2AgQgBEHoJDYCAEHopwIoAgAgBBAwEAAAC8ECAgN/Bn4jAEEwayIDJAACfwJAAkAgAikDECABKQMQUg0AIAEpAxgiBiACKQMYIgeBQgBSDQAgASkDICIIIAIpAyAiCYFCAFINACABKQMoIgogAikDKCILgUIAUg0AIAFBEGohBAJAIAEoAmgNACACKAJoDQAMAgsCQCAGIAdSDQAgCCAJUg0AQQEhBSAKIAtRDQILIANBv84ANgIYIANB6ic2AhQgA0HoJDYCEEHopwIoAgAgA0EQahAwEAAACyADQZvPADYCKCADQeQnNgIkIANB6CQ2AiBB6KcCKAIAIANBIGoQMBAAAAsgACABKAIAIAEoAgggBEEAEEAiBEECNgJAQQAgBUUNABogACAEKAIAIAQoAgggBEEQakEAEEALIQAgBCABNgJsIAQgADYCaCAEIAI2AnAgA0EwaiQAIAQLpgIBB38gACgCCCEFAkACQCAAKAIAIgNBD3FFBEAgAEEEaiIBQQD+QQIAIQAMAQtBPyECIwMiBCgCGCAAKAIEIgZB/////wNxRw0BAkAgA0EDcUEBRw0AIAAoAhQiAUUNACAAIAFBAWs2AhRBAA8LIANBgAFxIgIEQCAEIABBEGo2AlRBAEEB/h4CgOA0GgsgAEEEaiEBIAAoAgwiByAAKAIQIgA2AgAgBEHMAGogAEcEQCAAQQRrIAc2AgALIAEgBkEBdCADQR10cUEfdUH/////B3H+QQIAIQAgAkUNACAEQQA2AlQCQEEAQX/+HgKA4DRBAUcNAEGE4DQoAgBFDQBBgOA0Qf////8HEK0BCwtBACECIAVFIABBAE5xDQAgARCMAQsgAgsuAQF/QQQQYSIAQdiZAzYCACAAQbCZAzYCACAAQcSZAzYCACAAQbSaA0EIEAIACx0AIAEEQCAAIAEoAgAQUiAAIAEoAgQQUiABEC8LC34BBX8jAEEgayICJAAgAkEIaiAAEOgCIgEoAgBBAf4ZAAAjAEEQayIAJAAgAEEMakHpHxDnAiEFIAEoAgQiAS0AACEEIAFBAToAACAFEOYCAkAgBEEEcUUNAEGs/TQQkwJFDQAgAEHpHzYCABBHAAsgAEEQaiQAIAJBIGokAAvfAQEGfyMAQSBrIgIkACACQQhqIAAQ6AIiACgCAP4SAAAEf0EABQJ/IwBBEGsiAyQAIANBDGpBiCAQ5wIhBQJAAkAgAC0ADEUNACAAKAIELQAAQQJxRQ0AIAAoAggoAgAgACgCEEYNAQsDQCAAKAIEIgQtAAAiAUECcQRAIAQgAUEEcjoAAEGs/TRBlP00EPYCDAELCyABQQFGIgFFBEAgAC0ADARAIAAoAgggACgCEDYCAAsgBEECOgAACyAFEOYCIANBEGokACABDAELEEcAC0EBcwshBiACQSBqJAAgBgu5AgEHfwJAIAAtAABBD3ENACAAQQRqQQBBCv5IAgANAEEADwsCfwJAIAAoAgAiAkEPcUUEQCAAQQRqQQBBCv5IAgBFDQEgACgCACECCyAAEOoBIgFBCkcNACAAQQhqIQQgAEEEaiEDQeQAIQEDQAJAIAFFDQAgAygCAEUNACABQQFrIQEgBCgCAEUNAQsLIAAQ6gEiAUEKRw0AIAJBf3NBgAFxIQUgAkEEcUUhBiACQQNxQQJHIQIDQAJAIAMoAgAiAUH/////A3EiByABQQBHIAZxckUNAAJAIAINACAHIwMoAhhHDQBBEAwECyAEQQH+HgIAGiADIAEgAUGAgICAeHIiAf5IAgAaIAMgASAFELoCIQEgBEEB/iUCABogAUEbRg0AIAENAgsgABDqASIBQQpGDQALCyABCwsyAQJ/IwBBEGsiBCQAIAQgAzcDCCAEIAI3AwAgACABQQIgBEEAEEAhBSAEQRBqJAAgBQv2AQMCfAJ/AX4CfQJAIAC8IgNBFHZB/w9xIgRBqwhJDQBDAAAAACADQYCAgHxGDQEaIARB+A9PBEAgACAAkg8LIABDF3KxQl4EQCMAQRBrIgNDAAAAcDgCDCADKgIMQwAAAHCUDwsgAEO08c/CXUUNACMAQRBrIgNDAAAAEDgCDCADKgIMQwAAABCUDwtBsL8BKwMAQai/ASsDACAAu6IiASABQaC/ASsDACIBoCICIAGhoSIBokG4vwErAwCgIAEgAaKiQcC/ASsDACABokQAAAAAAADwP6CgIAK9IgVCL4YgBadBH3FBA3RBgL0BaikDAHy/orYLC6ECAgN/AX4CQCAAKAIMIgJBAXEEQEEYEDEhAiAAKAIkKAIEIQMgAkHMlwE2AgAgAiADNgIEIAJBCGogACgCACIDNgIAIANBBGpBAf4eAgAaIAIgACkCBCIFNwIMIAIgBaciAyABIAMoAgAoAhQRBAA6ABQgACgCJCACNgIEDAELIAJBCHEEQEEYEDEhAiAAKAIkKAIEIQMgAkGomAE2AgAgAiADNgIEIAJBCGogACgCACIDNgIAIANBBGpBAf4eAgAaIAApAgQhBSACIAE6ABQgAiAFNwIMIAAoAiQgAjYCBAwBC0EMEDEhAiAAKAIkIgMoAgQhBCACIAE6AAggAkGEmQE2AgAgAiAENgIEIAMgAjYCBAsgACAAKAIkKAIENgIkC3UBAX8jAEEQayICJAAgAiABOgAPAkAgAC0AC0EHdgRAIAAoAgAhASAAQQE2AgQMAQsgACIBIAEtAAtBgAFxQQFyOgALIAEgAS0AC0H/AHE6AAsLIAEgAi0ADzoAACACQQA6AA4gASACLQAOOgABIAJBEGokAAvJAgIGfwN+IwBBQGoiAyQAAkACQCABKQMQIAIpAxBSDQAgAikDICIJIAEpAyCBQgBSDQAgAikDKCIKIAEpAyiBQgBSDQAgASgCMCABKAI0Sw0BAn8CQCABKAJoDQAgAigCaA0AQQAMAQtBAQshCCADIAEpAxg3AyAgAikDGCELIAMgCjcDOCADIAk3AzAgAyALNwMoIABBACABKAIIIgQgAigCCCIHIAQgB0obIANBIGpBABBAIgRBFzYCQCAIBEAgACAEKAIAIAQoAgggBEEQakEAEEAhBQsgBCABNgJsIAQgBTYCaCAEIAI2AnAgA0FAayQAIAQPCyADQZLOADYCGCADQacuNgIUIANB6CQ2AhBB6KcCKAIAIANBEGoQMBAAAAsgA0HvzgA2AgggA0GoLjYCBCADQegkNgIAQeinAigCACADEDAQAAAL9gIDA38BfAF9IwBBEGsiASQAAn0gALwiA0H/////B3EiAkHan6T6A00EQEMAAIA/IAJBgICAzANJDQEaIAC7EIMBDAELIAJB0aftgwRNBEAgAkHkl9uABE8EQEQYLURU+yEJQEQYLURU+yEJwCADQQBIGyAAu6AQgwGMDAILIAC7IQQgA0EASARAIAREGC1EVPsh+T+gEIIBDAILRBgtRFT7Ifk/IAShEIIBDAELIAJB1eOIhwRNBEAgAkHg27+FBE8EQEQYLURU+yEZQEQYLURU+yEZwCADQQBIGyAAu6AQgwEMAgsgA0EASARARNIhM3982RLAIAC7oRCCAQwCCyAAu0TSITN/fNkSwKAQggEMAQsgACAAkyACQYCAgPwHTw0AGgJAAkACQAJAIAAgAUEIahCaBEEDcQ4DAAECAwsgASsDCBCDAQwDCyABKwMImhCCAQwCCyABKwMIEIMBjAwBCyABKwMIEIIBCyEFIAFBEGokACAFCw0AIAAoAgAQ6AMaIAALDQAgACgCABDqAxogAAvbCAEBf0EAQQH+HgLwuTRBAEoEQANAQQBBAf4lAvC5NBoQAxDPAUEAQQH+HgLwuTRBAEoNAAsLAkACQCAAQcCfA0YNACAAQfSfA0YEQEEBIQEMAQsgAEGooANGBEBBAiEBDAELIABB3KADRgRAQQMhAQwBCyAAQZChA0YEQEEEIQEMAQsgAEHEoQNGBEBBBSEBDAELIABB+KEDRgRAQQYhAQwBCyAAQayiA0YEQEEHIQEMAQsgAEHgogNGBEBBCCEBDAELIABBlKMDRgRAQQkhAQwBCyAAQcijA0YEQEEKIQEMAQsgAEH8owNGBEBBCyEBDAELIABBsKQDRgRAQQwhAQwBCyAAQeSkA0YEQEENIQEMAQsgAEGYpQNGBEBBDiEBDAELIABBzKUDRgRAQQ8hAQwBCyAAQYCmA0YEQEEQIQEMAQsgAEG0pgNGBEBBESEBDAELIABB6KYDRgRAQRIhAQwBCyAAQZynA0YEQEETIQEMAQsgAEHQpwNGBEBBFCEBDAELIABBhKgDRgRAQRUhAQwBCyAAQbioA0YEQEEWIQEMAQsgAEHsqANGBEBBFyEBDAELIABBoKkDRgRAQRghAQwBCyAAQdSpA0YEQEEZIQEMAQsgAEGIqgNGBEBBGiEBDAELIABBvKoDRgRAQRshAQwBCyAAQfCqA0YEQEEcIQEMAQsgAEGkqwNGBEBBHSEBDAELIABB2KsDRgRAQR4hAQwBCyAAQYysA0YEQEEfIQEMAQsgAEHArANGBEBBICEBDAELIABB9KwDRgRAQSEhAQwBCyAAQaitA0YEQEEiIQEMAQsgAEHcrQNGBEBBIyEBDAELIABBkK4DRgRAQSQhAQwBCyAAQcSuA0YEQEElIQEMAQsgAEH4rgNGBEBBJiEBDAELIABBrK8DRgRAQSchAQwBCyAAQeCvA0YEQEEoIQEMAQsgAEGUsANGBEBBKSEBDAELIABByLADRgRAQSohAQwBCyAAQfywA0YEQEErIQEMAQsgAEGwsQNGBEBBLCEBDAELIABB5LEDRgRAQS0hAQwBCyAAQZiyA0YEQEEuIQEMAQsgAEHMsgNGBEBBLyEBDAELIABBgLMDRgRAQTAhAQwBCyAAQbSzA0YEQEExIQEMAQsgAEHoswNGBEBBMiEBDAELIABBnLQDRgRAQTMhAQwBCyAAQdC0A0YEQEE0IQEMAQsgAEGEtQNGBEBBNSEBDAELIABBuLUDRgRAQTYhAQwBCyAAQey1A0YEQEE3IQEMAQsgAEGgtgNGBEBBOCEBDAELIABB1LYDRgRAQTkhAQwBCyAAQYi3A0YEQEE6IQEMAQsgAEG8twNGBEBBOyEBDAELIABB8LcDRgRAQTwhAQwBCyAAQaS4A0YEQEE9IQEMAQsgAEHYuANGBEBBPiEBDAELIABBjLkDRw0BQT8hAQsgAUE0bEG8nwNqQQA6AAAgAC0ACEUNACAAKAIEEC8LQQBBAf4lAvC5NBoLdQEBfiAAIAEgBH4gAiADfnwgA0IgiCICIAFCIIgiBH58IANC/////w+DIgMgAUL/////D4MiAX4iBUIgiCADIAR+fCIDQiCIfCABIAJ+IANC/////w+DfCIBQiCIfDcDCCAAIAVC/////w+DIAFCIIaENwMACxgAIAAtAABBIHFFBEAgASACIAAQvQIaCwsOACAAQdAAahBDQdAAagtHAQJ/IwBBEGsiBSQAIAUgAjYCDCAFIAQ2AgggBUEEaiAFQQxqEIABIQYgACABIAMgBSgCCBC8ASEAIAYQfyAFQRBqJAAgAAvtAQECfwJ/IAAtAAtBB3YEQCAAKAIEDAELIAAtAAtB/wBxCyEEAkAgAiABa0EFSA0AIARFDQAgASACEN0BIAJBBGshBAJ/IAAtAAtBB3YEQCAAKAIEDAELIAAtAAtB/wBxCwJ/IAAtAAtBB3YEQCAAKAIADAELIAALIgJqIQUCQANAAkAgAiwAACEAIAEgBE8NAAJAIABBAEwNACAAQf8ATg0AIAAgASgCAEcNAwsgAUEEaiEBIAIgBSACa0EBSmohAgwBCwsgAEEATA0BIABB/wBODQEgAiwAACAEKAIAQQFrSw0BCyADQQQ2AgALC3YBAX8jAEEQayICJAAgAC0AC0EHdgRAIAAgACgCACAAKAIIQf////8HcRDkAQsgACABKAIINgIIIAAgASkCADcCACABIAEtAAtBgAFxOgALIAEgAS0AC0H/AHE6AAsgAkEAOgAPIAEgAi0ADzoAACACQRBqJAALUAEBfgJAIANBwABxBEAgASADQUBqrYYhAkIAIQEMAQsgA0UNACACIAOtIgSGIAFBwAAgA2utiIQhAiABIASGIQELIAAgATcDACAAIAI3AwgLbwEBfyMAQYACayIFJAACQCACIANMDQAgBEGAwARxDQAgBSABQf8BcSACIANrIgNBgAIgA0GAAkkiARsQvwEgAUUEQANAIAAgBUGAAhBgIANBgAJrIgNB/wFLDQALCyAAIAUgAxBgCyAFQYACaiQAC3oBA38CQAJAIAAiAUEDcUUNACABLQAARQRAQQAPCwNAIAFBAWoiAUEDcUUNASABLQAADQALDAELA0AgASICQQRqIQEgAigCACIDQX9zIANBgYKECGtxQYCBgoR4cUUNAAsDQCACIgFBAWohAiABLQAADQALCyABIABrC4oDAgN/AXwjAEEQayIBJAACQCAAvCIDQf////8HcSICQdqfpPoDTQRAIAJBgICAzANJDQEgALsQggEhAAwBCyACQdGn7YMETQRAIAC7IQQgAkHjl9uABE0EQCADQQBIBEAgBEQYLURU+yH5P6AQgwGMIQAMAwsgBEQYLURU+yH5v6AQgwEhAAwCC0QYLURU+yEJwEQYLURU+yEJQCADQQBOGyAEoJoQggEhAAwBCyACQdXjiIcETQRAIAJB39u/hQRNBEAgALshBCADQQBIBEAgBETSITN/fNkSQKAQgwEhAAwDCyAERNIhM3982RLAoBCDAYwhAAwCC0QYLURU+yEZQEQYLURU+yEZwCADQQBIGyAAu6AQggEhAAwBCyACQYCAgPwHTwRAIAAgAJMhAAwBCwJAAkACQAJAIAAgAUEIahCaBEEDcQ4DAAECAwsgASsDCBCCASEADAMLIAErAwgQgwEhAAwCCyABKwMImhCCASEADAELIAErAwgQgwGMIQALIAFBEGokACAAC8EBAQN/IwBBEGsiBSQAAkAgAiAALQALQQd2BH8gACgCCEH/////B3FBAWsFQQoLIgQCfyAALQALQQd2BEAgACgCBAwBCyAALQALQf8AcQsiA2tNBEAgAkUNAQJ/IAAtAAtBB3YEQCAAKAIADAELIAALIgQgA2ogASACEHggACACIANqIgEQmAEgBUEAOgAPIAEgBGogBS0ADzoAAAwBCyAAIAQgAiAEayADaiADIANBACACIAEQwQELIAVBEGokACAACy4BAX8jAEEQayIDJAAgAyACNgIMIABBnAFqQcAAIAEgAhC8ARogA0EQaiQAIAALCgAgAEHE7jQQegsEAEEAC4wCAgJ/AnwgALwiAUGAgID8A0YEQEMAAAAADwsCQCABQYCAgPwHa0H///+HeE0EQCABQQF0IgJFBEAjAEEQayIBQwAAgL84AgwgASoCDEMAAAAAlQ8LIAFBgICA/AdGDQEgAkGAgIB4SSABQQBOcUUEQCAAIACTIgAgAJUPCyAAQwAAAEuUvEGAgIDcAGshAQtB4IQCKwMAIAEgAUGAgMz5A2siAUGAgIB8cWu+uyABQQ92QfABcSICQdiCAmorAwCiRAAAAAAAAPC/oCIDIAOiIgSiQeiEAisDACADokHwhAIrAwCgoCAEoiABQRd1t0HYhAIrAwCiIAJB4IICaisDAKAgA6CgtiEACyAACy0AIAJFBEAgACgCBCABKAIERg8LIAAgAUYEQEEBDwsgACgCBCABKAIEEJ4BRQvhAgIGfwF+IABCADcCBCAAIABBBGoiBTYCACABKAIEIgIEQCABKAIAIgYgAkEDdGohBwNAIAAoAgQhBAJAAkACQCAFIgEgACgCAEYNACABIQICQCAEIgMEQANAIAMiASgCBCIDDQAMAgsACwNAIAIoAggiASgCACACRiEIIAEhAiAIDQALCyAGKAIAIgMgASgCEEoNACAFIgIhASAERQ0BA0AgBCIBKAIQIgIgA0oEQCABIQIgASgCACIEDQEMAwsgAiADTg0DIAEoAgQiBA0ACyABQQRqIQIMAQsgAUEEaiAFIAQbIgIoAgANASABIAUgBBshAQtBGBAxIQMgBikCACEJIAMgATYCCCADQgA3AgAgAyAJNwIQIAIgAzYCACAAKAIAKAIAIgEEQCAAIAE2AgAgAigCACEDCyAAKAIEIAMQlwEgACAAKAIIQQFqNgIICyAGQQhqIgYgB0cNAAsLIAAL1gEBAn8jAEEQayIEJAACQAJAIAJBC0kEQCAAIgMgAC0AC0GAAXEgAnI6AAsgACAALQALQf8AcToACwwBCyACQe////8HSw0BIARBCGogACACQQtPBH8gAkEQakFwcSIDIANBAWsiAyADQQtGGwVBCgtBAWoQugEgBCgCDBogACAEKAIIIgM2AgAgACAAKAIIQYCAgIB4cSAEKAIMQf////8HcXI2AgggACAAKAIIQYCAgIB4cjYCCCAAIAI2AgQLIAMgASACQQFqEHggBEEQaiQADwsQSwALUgEBfyABQQFrIgJBEE0EfyACQQJ0QcyNA2ooAgAFQeMgCyECIABB2JkDNgIAIABB3JoDNgIAIABBBGogAhDyAiAAIAE2AgggAEGYhQM2AgAgAAvHCQIEfwZ+IwBB8ABrIgYkACAEQv///////////wCDIQkCQAJAIAFQIgUgAkL///////////8AgyIKQoCAgICAgMD//wB9QoCAgICAgMCAgH9UIApQG0UEQCADQgBSIAlCgICAgICAwP//AH0iC0KAgICAgIDAgIB/ViALQoCAgICAgMCAgH9RGw0BCyAFIApCgICAgICAwP//AFQgCkKAgICAgIDA//8AURtFBEAgAkKAgICAgIAghCEEIAEhAwwCCyADUCAJQoCAgICAgMD//wBUIAlCgICAgICAwP//AFEbRQRAIARCgICAgICAIIQhBAwCCyABIApCgICAgICAwP//AIWEUARAQoCAgICAgOD//wAgAiABIAOFIAIgBIVCgICAgICAgICAf4WEUCIFGyEEQgAgASAFGyEDDAILIAMgCUKAgICAgIDA//8AhYRQDQEgASAKhFAEQCADIAmEQgBSDQIgASADgyEDIAIgBIMhBAwCCyADIAmEQgBSDQAgASEDIAIhBAwBCyADIAEgASADVCAJIApWIAkgClEbIggbIQogBCACIAgbIgtC////////P4MhCSACIAQgCBsiAkIwiKdB//8BcSEHIAtCMIinQf//AXEiBUUEQCAGQeAAaiAKIAkgCiAJIAlQIgUbeSAFQQZ0rXynIgVBD2sQZSAGKQNoIQkgBikDYCEKQRAgBWshBQsgASADIAgbIQMgAkL///////8/gyEEIAdFBEAgBkHQAGogAyAEIAMgBCAEUCIHG3kgB0EGdK18pyIHQQ9rEGVBECAHayEHIAYpA1ghBCAGKQNQIQMLIARCA4YgA0I9iIRCgICAgICAgASEIQEgCUIDhiAKQj2IhCEOIAIgC4UhDQJ+IANCA4YiAiAFIAdGDQAaIAUgB2siB0H/AEsEQEIAIQFCAQwBCyAGQUBrIAIgAUGAASAHaxBlIAZBMGogAiABIAcQqAEgBikDOCEBIAYpAzAgBikDQCAGKQNIhEIAUq2ECyEJIA5CgICAgICAgASEIQwgCkIDhiEKAkAgDUIAUwRAQgAhA0IAIQQgCSAKhSABIAyFhFANAiAKIAl9IQIgDCABfSAJIApWrX0iBEL/////////A1YNASAGQSBqIAIgBCACIAQgBFAiBxt5IAdBBnStfKdBDGsiBxBlIAUgB2shBSAGKQMoIQQgBikDICECDAELIAkgCnwiAiAJVK0gASAMfHwiBEKAgICAgICACINQDQAgCUIBgyAEQj+GIAJCAYiEhCECIAVBAWohBSAEQgGIIQQLIAtCgICAgICAgICAf4MhASAFQf//AU4EQCABQoCAgICAgMD//wCEIQRCACEDDAELQQAhBwJAIAVBAEoEQCAFIQcMAQsgBkEQaiACIAQgBUH/AGoQZSAGIAIgBEEBIAVrEKgBIAYpAwAgBikDECAGKQMYhEIAUq2EIQIgBikDCCEECyACp0EHcSIFQQRLrSAEQj2GIAJCA4iEIgJ8IgMgAlStIARCA4hC////////P4MgB61CMIaEIAGEfCEEAkAgBUEERgRAIAQgA0IBgyIBIAN8IgMgAVStfCEEDAELIAVFDQELCyAAIAM3AwAgACAENwMIIAZB8ABqJAALCgAgAEHM7jQQegs4AgN/AX4jAEEQayIAJAAgABDQASAAKQMAIQMgACgCCCECIABBEGokACACQegHbawgA0LAhD1+fAtkACACKAIEQbABcSICQSBGBEAgAQ8LAkAgAkEQRw0AAkACQCAALQAAIgJBK2sOAwABAAELIABBAWoPCyABIABrQQJIDQAgAkEwRw0AIAAtAAFBIHJB+ABHDQAgAEECaiEACyAACz0BAn8CfyAALQALQQd2BEAgACgCAAwBCyAACyEBIwBBEGsiACQAIAAgATYCDCAAKAIMIQIgAEEQaiQAIAILfgICfwF+IwBBEGsiAyQAIAACfiABRQRAQgAMAQsgAyABIAFBH3UiAnMgAmsiAq1CACACZyICQdEAahBlIAMpAwhCgICAgICAwACFQZ6AASACa61CMIZ8IAFBgICAgHhxrUIghoQhBCADKQMACzcDACAAIAQ3AwggA0EQaiQACwwAIAEgAiAAEO8DGguJAgEHfyABIAAoAggiAyAAKAIEIgJrQQJ1TQRAIAAgAQR/IAJBACABQQJ0IgD8CwAgACACagUgAgs2AgQPCwJAIAIgACgCACIFa0ECdSIHIAFqIgRBgICAgARJBEBB/////wMgAyAFayIDQQF1IgggBCAEIAhJGyADQfz///8HTxsiAwRAIANBgICAgARPDQIgA0ECdBAxIQYLIAdBAnQgBmoiBEEAIAFBAnQiAfwLACABIARqIQEgAiAFRwRAA0AgBEEEayIEIAJBBGsiAioCADgCACACIAVHDQALCyAAIAYgA0ECdGo2AgggACABNgIEIAAgBDYCACAFBEAgBRAvCw8LEEEACxBRAAsnACAAKAIAIgAgARBJIgEQlgNFBEAQRwALIAAoAgggAUECdGooAgALjwQBA38gAkGABE8EQCAAIAEgAvwKAAAgAA8LIAAgAmohBAJAIAAgAXNBA3FFBEACfyAAIABBA3FFDQAaIAAgAkUNABogACABIABBf3MiAiAEIABBAWoiAyADIARJG2oiAyACQQNxIgIgAiADSxtBAWoiAvwKAAAgASACaiEBIAAgAmoLIQICQCAEQXxxIgNBwABJDQAgAiADQUBqIgVLDQADQCACIAEoAgA2AgAgAiABKAIENgIEIAIgASgCCDYCCCACIAEoAgw2AgwgAiABKAIQNgIQIAIgASgCFDYCFCACIAEoAhg2AhggAiABKAIcNgIcIAIgASgCIDYCICACIAEoAiQ2AiQgAiABKAIoNgIoIAIgASgCLDYCLCACIAEoAjA2AjAgAiABKAI0NgI0IAIgASgCODYCOCACIAEoAjw2AjwgAUFAayEBIAJBQGsiAiAFTQ0ACwsgAiADTw0BIAIgASACQX9zIAMgAkEEaiIFIAMgBUsbakF8cUEEaiID/AoAACABIANqIQEgAiADaiECDAELIARBBEkEQCAAIQIMAQsgACAEQQRrIgNLBEAgACECDAELIAAhAgNAIAIgAS0AADoAACACIAEtAAE6AAEgAiABLQACOgACIAIgAS0AAzoAAyABQQRqIQEgAkEEaiICIANNDQALCyACIARJBEAgAiABIAQgAmv8CgAACyAAC1ACAn4BfyAAKQMoIgEgADUCPH4iAiAAKAIAQSRsIgNBmOoAajUCACAAKQMgIAApAxggACkDECABfn5+fiADQZTqAGo0AgB/IgEgASACUxunCyAAIwBBEGsiASQAIABCADcCACAAQQA2AgggAUEQaiQAC/ACAQZ/An8jAEFAaiIEJAAgASkDKCABKQMgIAEpAxggASkDEH5+fiACKQMoIAIpAyAgAikDGCACKQMQfn5+UQRAIAJBEGohAwJAIAEoAmhFBEAgAigCaEUNAQtBASEGCyAAIAIoAgAgAigCCCADIAIoApgBEEAhCCAEIAJBnAFqIgc2AiAgCEGlwwAgBEEgahBqIgMgAigCMDYCMCADIAIoAjQ2AjQgAyACKAI4NgI4IAMgAigCPDYCPCABQZwBaiEFAkAgAi0AnAEEQCAEIAU2AhQgBCAHNgIQIANBy8sAIARBEGoQahoMAQsgBCAFNgIAIANBm8MAIAQQahoLIANBGzYCQEEAIQUgBgRAIAAgAygCACADKAIIIANBEGpBABBAIQULIAMgATYCbCADIAU2AmggAyACNgJwIARBQGskACADDAELIARB2c0ANgI4IARB3i82AjQgBEHoJDYCMEHopwIoAgAgBEEwahAwEAAACwsSACAAKAIAIgAEQCAAEMwDGgsLEQAgACABKAIAEMwDNgIAIAALRwECfyAAIAE3A3AgACAAKAIsIAAoAgQiA2usNwN4IAAoAgghAgJAIAFQDQAgAiADa6wgAVcNACADIAGnaiECCyAAIAI2AmgLSwECfCAAIACiIgEgAKIiAiABIAGioiABRKdGO4yHzcY+okR058ri+QAqv6CiIAIgAUSy+26JEBGBP6JEd6zLVFVVxb+goiAAoKC2C08BAXwgACAAoiIAIAAgAKIiAaIgAERpUO7gQpP5PqJEJx4P6IfAVr+goiABREI6BeFTVaU/oiAARIFeDP3//9+/okQAAAAAAADwP6CgoLYLdgEBfyMAQRBrIgIkACAALQALQQd2BEAgACAAKAIAIAAoAghB/////wdxENcBCyAAIAEoAgg2AgggACABKQIANwIAIAEgAS0AC0GAAXE6AAsgASABLQALQf8AcToACyACQQA2AgwgASACKAIMNgIAIAJBEGokAAuyAgEEfyMAQRBrIgckACAHIAE2AgxBACEBQQYhBQJAAkAgACAHQQxqED4NAEEEIQUgA0HAAAJ/IAAoAgAiBigCDCIIIAYoAhBGBEAgBiAGKAIAKAIkEQEADAELIAgoAgALIgYgAygCACgCDBEDAEUNACADIAZBACADKAIAKAI0EQMAIQEDQAJAIAAQXBogAUEwayEBIAAgB0EMahA+DQAgBEECSA0AIANBwAACfyAAKAIAIgUoAgwiBiAFKAIQRgRAIAUgBSgCACgCJBEBAAwBCyAGKAIACyIFIAMoAgAoAgwRAwBFDQMgBEEBayEEIAMgBUEAIAMoAgAoAjQRAwAgAUEKbGohAQwBCwtBAiEFIAAgB0EMahA+RQ0BCyACIAIoAgAgBXI2AgALIAdBEGokACABC9gCAQR/IwBBEGsiByQAIAcgATYCDEEAIQFBBiEFAkACQCAAIAdBDGoQPw0AQQQhBQJ/IAAoAgAiBigCDCIIIAYoAhBGBEAgBiAGKAIAKAIkEQEADAELIAgtAAAL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IAVBf3MgAmohDCACIAVrQQNxIgQEQEEAIQEDQCADQQFrIgMgAkEBayICLQAAOgAAIAFBAWoiASAERw0ACwsgDEEDSQ0AA0AgA0EBayACQQFrLQAAOgAAIANBAmsgAkECay0AADoAACADQQNrIAJBA2stAAA6AAAgA0EEayIDIAJBBGsiAi0AADoAACACIAVHDQALCyAAKAIAIQILIAAgCDYCCCAAIAk2AgQgACAHNgIAIAIEQCACEC8LDwsQQQALHwBBCBBhIAAQ8QIiAEHAmwM2AgAgAEHgmwNBBxACAAuUBAEEfyABIAAgAUYiAjoADAJAIAINAANAIAEoAggiAi0ADA0BAkAgAiACKAIIIgMoAgAiBEYEQAJAIAMoAgQiBEUNACAELQAMDQAMAgsCQCABIAIoAgBGBEAgAiEBDAELIAIgAigCBCIBKAIAIgA2AgQgASAABH8gACACNgIIIAIoAggFIAMLNgIIIAIoAggiACAAKAIAIAJHQQJ0aiABNgIAIAEgAjYCACACIAE2AgggASgCCCIDKAIAIQILIAFBAToADCADQQA6AAwgAyACKAIEIgA2AgAgAARAIAAgAzYCCAsgAiADKAIINgIIIAMoAggiACAAKAIAIANHQQJ0aiACNgIAIAIgAzYCBCADIAI2AggPCwJAIARFDQAgBC0ADA0ADAELAkAgASACKAIARwRAIAIhAQwBCyACIAEoAgQiADYCACABIAAEfyAAIAI2AgggAigCCAUgAws2AgggAigCCCIAIAAoAgAgAkdBAnRqIAE2AgAgASACNgIEIAIgATYCCCABKAIIIQMLIAFBAToADCADQQA6AAwgAyADKAIEIgAoAgAiATYCBCABBEAgASADNgIICyAAIAMoAgg2AgggAygCCCIBIAEoAgAgA0dBAnRqIAA2AgAgACADNgIAIAMgADYCCAwCCyAEQQxqIQUgAkEBOgAMIAMgACADRjoADCAFQQE6AAAgAyIBIABHDQALCws0ACAALQALQQd2BEAgACABNgIEDwsgACAALQALQYABcSABcjoACyAAIAAtAAtB/wBxOgALCwwAIABBgoaAIDYAAAtfAQJ/An8gAC0AC0EHdgRAIAAoAgAMAQsgAAsCfyAALQALQQd2BEAgACgCBAwBCyAALQALQf8AcQtBAnRqIQEjAEEQayIAJAAgACAB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IAZB/////wNPGyIEBH8gBBAxBUEACyIFaiIDIAE6AAAgBCAFaiEIIANBAWohCQJAIAIgB0YEQCADIQUMAQsCQAJAIAZBEEkNACAHIAIgBWprIAJqQRBJDQAgA0EQayEKIAJBEGshCyACIAZBcHEiBGshAiADIARrIQNBACEBA0AgCiABayALIAFr/QAAAP0LAAAgAUEQaiIBIARHDQALIAQgBkYNAQsgB0F/cyACaiEOIAIgB2tBA3EiBARAQQAhAQNAIANBAWsiAyACQQFrIgItAAA6AAAgAUEBaiIBIARHDQALCyAOQQNJDQADQCADQQFrIAJBAWstAAA6AAAgA0ECayACQQJrLQAAOgAAIANBA2sgAkEDay0AADoAACADQQRrIgMgAkEEayICLQAAOgAAIAIgB0cNAAsLIAAoAhQhAgsgACAINgIcIAAgCTYCGCAAIAU2AhQgAkUNAQsgAhAvCw8LEEEACxBBAAsgAiABOgAAIAAgAkEBajYCGAsTACABQQF0QcCOA2pBAiAAEO8DC3YBAX8jAEEQayICJAAgAiAANgIMAkAgACABRg0AA0AgAiABQQFrIgE2AgggACABTw0BIAIoAgwiAC0AACEBIAAgAigCCCIALQAAOgAAIAAgAToAACACIAIoAgxBAWoiADYCDCACKAIIIQEMAAsACyACQRBqJAALlgQBBn8jAEHQAGsiAyQAIABBiIADaiEFIAFB0cAAcCIGIQICQANAIAUgAkECdGoiBygCACIERQ0BIAEgBEYNASACQQFqIgJBACACQdHAAEcbIgIgBkcNAAsgA0GrHzYCSCADQeGCATYCRCADQegkNgJAQeinAigCACADQUBrEDAQAAALAkACQAJAIAEgBEYNACAHIAE2AgAgASgCbCICBEAgACACEKUBCyABKAJwIgIEQCAAIAIQpQELIAEoAnQiAgRAIAAgAhClAQsgASgCeCICBEAgACACEKUBCyABKAJ8IgIEQCAAIAIQpQELIAEoAoABIgIEQCAAIAIQpQELAkAgASgCQA0AIAEoAmgNACAAKAIEIgJBgCBODQIgAS0AnAFFBEAgAyACNgIAIAFBhyQgAxBqGiAAKAIEIQILIAAgAkECdGpBiIACaiABNgIAIAAgAkEBajYCBAwBCyAAKAIAIgJBgCBODQIgAS0AnAFFBEAgAyACNgIgIAFBjyQgA0EgahBqGiAAKAIAIQILIAAgAkECdGoiBCABNgIIIARBiIABaiABKAJoNgIAIAAgAkEBajYCAAsgA0HQAGokAA8LIANBzyk2AhggA0GEgwE2AhQgA0HoJDYCEEHopwIoAgAgA0EQahAwEAAACyADQfApNgI4IANBjYMBNgI0IANB6CQ2AjBB6KcCKAIAIANBMGoQMBAAAAvbAQIBfwJ+QQEhBAJAIABCAFIgAUL///////////8AgyIFQoCAgICAgMD//wBWIAVCgICAgICAwP//AFEbDQAgAkIAUiADQv///////////wCDIgZCgICAgICAwP//AFYgBkKAgICAgIDA//8AURsNACAAIAKEIAUgBoSEUARAQQAPCyABIAODQgBZBEBBfyEEIAAgAlQgASADUyABIANRGw0BIAAgAoUgASADhYRCAFIPC0F/IQQgACACViABIANVIAEgA1EbDQAgACAChSABIAOFhEIAUiEECyAECx8BAX8jAEEQayICJAAgACABIAEQZxDwAiACQRBqJAALUAEBfgJAIANBwABxBEAgAiADQUBqrYghAUIAIQIMAQsgA0UNACACQcAAIANrrYYgASADrSIEiIQhASACIASIIQILIAAgATcDACAAIAI3AwgLqAEAAkAgAUGACE4EQCAARAAAAAAAAOB/oiEAIAFB/w9JBEAgAUH/B2shAQwCCyAARAAAAAAAAOB/oiEAQf0XIAEgAUH9F04bQf4PayEBDAELIAFBgXhKDQAgAEQAAAAAAABgA6IhACABQbhwSwRAIAFByQdqIQEMAQsgAEQAAAAAAABgA6IhAEHwaCABIAFB8GhMG0GSD2ohAQsgACABQf8Haq1CNIa/oguoAQEBfyMAQSBrIgMkAAJAIAEoAmhFBEAgACABKAIAIAEoAgggAUEQakEAEEAiAEUNASAAIAE2AmwgAEEANgJoIABBEzYCQCAAIAI4AkQgA0EgaiQAIAAPCyADQasfNgIYIANBoC02AhQgA0HoJDYCEEHopwIoAgAgA0EQahAwEAAACyADQdkqNgIIIANBpiQ2AgQgA0HoJDYCAEHopwIoAgAgAxAwEAAAC8ECAgN/Bn4jAEEwayIDJAACfwJAAkAgAikDECABKQMQUg0AIAEpAxgiBiACKQMYIgeBQgBSDQAgASkDICIIIAIpAyAi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An8CQCABKwMgIgogACsDIGRFBEBBACAJIApkRQ0CGiADIAEtAAg6ADggAyABKQMANwMwIAEoAhQhBSABKAIQIQYgAUIANwMQIAEoAhghByABQQA2AhggAyABKAJENgIoIAMgASkCPDcDICADIAH9AAIs/QsDECADIAH9AAIc/QsDACABIAIpAwA3AwAgASACLQAIOgAIIAEgAigCEDYCECABIAIoAhQ2AhQgASACKAIYNgIYIAJBADYCECACQQA2AhggASACKAJENgJEIAEgAikCPDcCPCABIAL9AAIs/QsCLCABIAL9AAIc/QsCHCACIAMpAzA3AwAgAiADLQA4OgAIIAIoAhAiBARAIAIgBDYCFCAEEC8LIAIgBzYCGCACIAU2AhQgAiAGNgIQIAIgAygCKDYCRCACIAMpAyA3AjwgAiAD/QADEP0LAiwgAiAD/QADAP0LAhxBASABKwMgIAArAyBkRQ0CGiADIAAtAAg6ADggAyAAKQMANwMwIAAoAhQhAiAAKAIQIQQgAEIANwMQIAAoAhghBSAAQQA2AhggAyAAKAJENgIoIAMgACkCPDcDICADIAD9AAIs/QsDECADIAD9AAIc/QsDACAAIAEpAwA3AwAgACABLQAIOgAIIAAgASgCEDYCECAAIAEoAhQ2AhQgACABKAIYNgIYIAFBADYCECABQQA2AhggACABKAJENgJEIAAgASkCPDcCPCAAIAH9AAIs/QsCLCAAIAH9AAIc/QsCHCABIAMtADg6AAggASADKQMwNwMAIAEoAhAiAARAIAEgADYCFCAAEC8LIAEgBTYCGCABIAI2AhQgASAENgIQIAEgAygCKDYCRCABIAMpAyA3AjwgASAD/QADEP0LAiwgASAD/QADAP0LAhwMAQsgCSAKZARAIAMgAC0ACDoAOCADIAApAwA3AzAgACgCECEBIAAoAhQhBCAAQgA3AxAgACgCGCEFIABBADYCGCADIAAoAkQ2AiggAyAAKQI8NwMgIAMgAP0AAiz9CwMQIAMgAP0AAhz9CwMAIAAgAi0ACDoACCAAIAIpAwA3AwAgACACKAIQNgIQIAAgAigCFDYCFCAAIAIoAhg2AhggAkEANgIQIAJBADYCGCAAIAIoAkQ2AkQgACACKQI8NwI8IAAgAv0AAiz9CwIsIAAgAv0AAhz9CwIcIAIgAykDMDcD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BCADUg0ACyADIgIgB1ENAQsDQCA/IAKnQQJ0aiC5ATgCACACQgF8IgIgB1INAAsLIAlCAXwiCSAGUg0ACwwBCwNAIAAgCacgTmxBAnRqIT9CACEEQgAhAgJAIAdCBFoEQANAID8gBKdBAnRq/Qz//3////9/////f////3///QsCACAEQgR8IgQgA1INAAsgAyICIAdRDQELA0AgPyACp0ECdGpB////ezYCACACQgF8IgIgB1INAAsLIAlCAXwiCSAGUg0ACwsgACABaiEAIDwgPmoiPCBKSQ0ACwwCCyA+KAI4IT4CQAJAIEAOAgEAAwsgB0J8gyEDQwAAAAAgugGVIrkB/RMhyQEDQEIAIQkDQCAAIAmnIE5sQQJ0aiEBQgAhBEIAIQICQCAHQgRaBEADQCABIASnQQJ0aiDJAf0LAgAgBEIEfCIEIANSDQALIAMiAiAHUQ0BCwNAIAEgAqdBAnRqILkBOAIAIAJCAXwiAiAHUg0ACwsgCUIBfCIJIAZSDQALIAAgS0ECdGohACA8ID5qIjwgSkkNAAsMAgsgB0J8gyEDA0BCACEJA0AgACAJpyBObEECdGohAUIAIQRCACECAkAgB0IEWgRAA0AgASAEp0ECdGr9DP//f////3////9/////f//9CwIAIARCBHwiBCADUg0ACyADIgIgB1ENAQsDQCABIAKnQQJ0akH///97NgIAIAJCAXwiAiAHUg0ACwsgCUIBfCIJIAZSDQALIAAgS0ECdGohACA8ID5qIjwgSkkNAAsMAQsgPigCOCE+AkACQCBADgIBAAILIAdCfIMhA0MAAAAAILoBlSK5Af0TIckBA0BCACEJA0AgACAJpyBObEECdGohAUIAIQRCACECAkAgB0IEWgRAA0AgASAEp0ECdGogyQH9CwIAIARCBHwiBCADUg0ACyADIgIgB1ENAQsDQCABIAKnQQJ0aiC5ATgCACACQgF8IgIgB1INAAsLIAlCAXwiCSAGUg0ACyAAIEtBAnRqIQAgPCA+aiI8IEpJDQALDAELIAdCfIMhAwNAQgAhCQNAIAAgCacgTmxBAnRqIQFCACEEQgAhAgJAIAdCBFoEQANAIAEgBKdBAnRq/Qz//3////9/////f////3///QsCACAEQgR8IgQgA1INAAsgAyICIAdRDQELA0AgASACp0ECdGpB////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AAAAAAAAAAAA/QsACyAB/QwAAAAAAAAAAAAAAAAAAAAA/QsAGyABQgA3ACggAkUNASACQQNxDQILQQBBAf4lAvC5NBogA0FAayQAIAEPCyADQegqNgIIIANBuiI2AgQgA0HoJDYCAEHopwIoAgAgAxAwEAAACyADQak5NgIYIANBvCI2AhQgA0HoJDYCEEHopwIoAgAgA0EQahAwEAAAC0kBAn8gACgCBCIFQQh1IQYgACgCACIAIAEgBUEBcQR/IAYgAigCAGooAgAFIAYLIAJqIANBAiAFQQJxGyAEIAAoAgAoAhgRCwALewEBfyMAQRBrIgMkAAJAIAJBCk0EQCAAIAAtAAtBgAFxIAJyOgALIAAgAC0AC0H/AHE6AAsgACABIAIQeCADQQA6AA8gACACaiADLQAPOgAADAELIABBCiACQQprIAAtAAtB/wBxIgBBACAAIAIgARDBAQsgA0EQaiQAC3gBAn8jAEEQayIEJAACQCACIAAoAghB/////wdxIgNJBEAgACgCACEDIAAgAjYCBCADIAEgAhB4IARBADoADyACIANqIAQtAA86AAAMAQsgACADQQFrIAIgA2tBAWogACgCBCIAQQAgACACIAEQwQELIARBEGokAAsJACAAIAEQhAMLBABBBAukAQEBfwJAQbzuNP4SAABBAXENAEG87jQQVEUNAAJAQbDuNP4SAABBAXENAEGw7jQQVEUNABC8BUGo7jRBmPs0NgIAQazuNEGo7jQ2AgBBsO40EFMLQbTuNEGs7jQoAgAoAgAiATYCACABQQRqQQH+HgIAGkG47jRBtO40NgIAQbzuNBBTCyAAQbjuNCgCACgCACIBNgIAIAFBBGpBAf4eAgAaIAALRwEBfyMAQRBrIgIkAAJAIAEtAAtBB3ZFBEAgACABKAIINgIIIAAgASkCADcCAAwBCyAAIAEoAgAgASgCBBBwCyACQRBqJAALCABB/////wcLBQBB/wALdgEBfyMAQRBrIgIkACACIAA2AgwCQCAAIAFGDQADQCACIAFBBGsiATYCCCAAIAFPDQEgAigCDCIAKAIAIQEgACACKAIIIgAoAgA2AgAgACABNgIAIAIgAigCDEEEaiIANgIMIAIoAgghAQwACwALIAJBEGokAAv2BAEIfyMAQRBrIgskACAGEGshCSALQQRqIgcgBhC1ASII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ADAgAiABKQIoNwIoIAQgA0E0bGohAyACQTRqIQUgACgCBCIBIAAoAgAiBEYNAgNAIAJBNGsiAiABQTRrIgH9AAIA/QsCACACQQA2AhggAiABKAIQNgIQIAIgASgCFDYCFCACIAEoAhg2AhggAUEANgIYIAFCADcCECACQQA2AiQgAiABKAIcNgIcIAIgASgCIDYCICACIAEoAiQ2AiQgAUEANgIkIAFCADcCHCACIAEtADA6ADAgAiABKQIoNwIoIAEgBEcNAAsgACADNgIIIAAoAgQhAyAAIAU2AgQgACgCACEBIAAgAjYCACABIANGDQMDQCADQTRrIgAoAhwiAgRAIANBFGsgAjYCACACEC8LIANBJGsoAgAiAgRAIANBIGsgAjYCACACEC8LIAAiAyABRw0ACwwDCxBBAAsQUQALIAAgAzYCCCAAIAU2AgQgACACNgIACyABBEAgARAvCwupBQEIfyABIAAoAggiAyAAKAIAIgRrQQxtTQRAAkAgACgCBCIFIARrQQxtIgggASABIAhLGyIHRQ0AIAQhAyAHIQYgB0EDcSIJBEADQCADIAIoAgA2AgAgAyACKAIENgIEIAMgAi0ACDoACCAGQQFrIQYgA0EMaiEDIApBAWoiCiAJRw0ACwsgB0EESQ0AA0AgAyACKAIANgIAIAMgAigCBDYCBCADIAItAAg6AAggAyACKAIANgIMIAMgAigCBDYCECADIAItAAg6ABQgAyACKAIANgIYIAMgAigCBDYCHCADIAItAAg6ACAgAyACKAIANgIkIAMgAigCBDYCKCADIAItAAg6ACwgA0EwaiEDIAZBBGsiBg0ACwsgASAISwRAIAUgASAIa0EMbGohAQNAIAUgAikCADcCACAFIAIoAgg2AgggBUEMaiIFIAFHDQALIAAgATYCBA8LIAAgBCABQQxsajYCBA8LIAQEQCAAIAQ2AgQgBBAvIABBADYCCCAAQgA3AgBBACEDCwJAIAFB1qrVqgFPDQBB1arVqgEgA0EMbSIDQQF0IgQgASABIARJGyADQarVqtUATxsiA0HWqtWqAU8NACAAIANBDGwiAxAxIgQ2AgQgACAENgIAIAAgAyAEajYCCCAEIQMgAUEMbCIBQQxrIgZBDG5BAWpBA3EiBwRAA0AgAyACKQIANwIAIAMgAigCCDYCCCADQQxqIQMg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AgwgACgCBCEEIAMgATYCFCADIAQ2AhAgAyAFKAIANgIYIAMgBSgCBDYCHCABIARKBEAgA0EMaiAIEMYBCyACIQEMAQsLIANBIGokACABC9sBAQh/IAAgAEE9EPwDIgFGBEBBAA8LAkAgACABIABrIgVqLQAADQBBvOw0KAIAIgJFDQAgAigCACIBRQ0AA0ACQAJ/IAAhBEEAIAUiBkUNABogAC0AACIDBH8CQANAIAMgAS0AACIHRw0BIAdFDQEgBkEBayIGRQ0BIAFBAWohASAELQABIQMgBEEBaiEEIAMNAAtBACEDCyADBUEACyABLQAAawtFBEAgAigCACAFaiIBLQAAQT1GDQELIAIoAgQhASACQQRqIQIgAQ0BDAILCyABQQFqIQgLIAgLRAEBfyMAQRBrIgUkACAFIAEgAiADIARCgICAgICAgICAf4UQciAFKQMAIQEgACAFKQMINwMIIAAgATcDACAFQRBqJAALhAEBAn8gAEGcsAI2AgAgACgCKCEBA0AgAQRAQQAgACABQQFrIgFBAnQiAiAAKAIkaigCACAAKAIgIAJqKAIAEQUADAELCyAAKAIcIgFBBGpBf/4eAgBFBEAgASABKAIAKAIIEQAACyAAKAIgEC8gACgCJBAvIAAoAjAQLyAAKAI8EC8gAAsgACAAIAAoAhhFIAFyIgE2AhAgACgCFCABcQRAEEcACwtGACMAQRBrIgEkACABIAM2AgwgBCACIAMgAmsiAvwKAAAgASACIARqNgIIIAAgASgCDDYCACAAIAEoAgg2AgQgAUEQaiQACzYBAX8jAEEQayIDJAAgAyABNgIMIAMgAjYCCCAAIAMoAgw2AgAgACADKAIINgIEIANBEGokAAutAQEGfyMAQRBrIgMkACABKAJoIQcgACABKAIAIAEoAgggAUEQaiABKAKYARBAIQYgAyABQZwBajYCACAGQaXDACADEGoiAiABKAIwNgIwIAIgASgCNDYCNCACIAEoAjg2AjggASgCPCEFIAJBJjYCQCACIAU2AjwgBwR/IAAgAigCACACKAIIIAJBEGpBABBABUEACyEAIAIgATYCbCACIAA2AmggA0EQaiQAIAILOwEBfyAAQeSuAigCACIBNgIAIAAgAUEMaygCAGpB8K4CKAIANgIAIABBCGoQ5QEaIABB7ABqEK4CIAAL5wEBBn8jAEEgayIEJAAgASgCaCEHIAAgASgCACABKAIIIAFBEGogASgCmAEQQCEGIAQgAUGcAWoiAjYCECAGQaXDACAEQRBqEGoiAyABKAIwNgIwIAMgASgCNDYCNCADIAEoAjg2AjggAyABKAI8NgI8IAQgAjYCACADQePMACAEEGoiAiABKQMYNwMQIAIgASkDEDcDGCADIAEoAjQ2AjAgAyABKAIwNgI0IAJBIDYCQCAHBH8gACACKAIAIAIoAgggAkEQakEAEEAFQQALIQAgAiABNgJsIAIgADYCaCAEQSBqJAAgAgsMACAAQQhqEK4CIAALCAAgABCmAhoL0gMCAn4CfyMAQSBrIgQkAAJAIAFC////////////AIMiA0KAgICAgIDAgDx9IANCgICAgICAwP/DAH1UBEAgAUIEhiAAQjyIhCEDIABC//////////8PgyIAQoGAgICAgICACFoEQCADQoGAgICAgICAwAB8IQIMAgsgA0KAgICAgICAgEB9IQIgAEKAgICAgICAgAhSDQEgAiADQgGDfCECDAELIABQIANCgICAgICAwP//AFQgA0KAgICAgIDA//8AURtFBEAgAUIEhiAAQjyIhEL/////////A4NCgICAgICAgPz/AIQhAgwBC0KAgICAgICA+P8AIQIgA0L///////+//8MAVg0AQgAhAiADQjCIpyIFQZH3AEkNACAEQRBqIAAgAUL///////8/g0KAgICAgIDAAIQiAiAFQYH3AGsQZSAEIAAgAkGB+AAgBWsQqAEgBCkDCEIEhiAEKQMAIgBCPIiEIQIgBCkDECAEKQMYhEIAUq0gAEL//////////w+DhCIAQoGAgICAgICACFoEQCACQgF8IQIMAQsgAEKAgICAgICAgAhSDQAgAkIBgyACfCECCyAEQSBqJAAgAiABQoCAgICAgICAgH+DhL8LiAIAAkAgAAR/IAFB/wBNDQECQCMDKAJgKAIARQRAIAFBgH9xQYC/A0YNAwwBCyABQf8PTQRAIAAgAUE/cUGAAXI6AAEgACABQQZ2QcABcjoAAEECDwsgAUGAQHFBgMADRyABQYCwA09xRQRAIAAgAUE/cUGAAXI6AAIgACABQQx2QeABcjoAACAAIAFBBnZBP3FBgAFyOgABQQMPCyABQYCABGtB//8/TQRAIAAgAUE/cUGA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ASgCEDYCECAAIAEoAhQ2AhQgACABKAIYNgIYIAFBADYCECABQQA2AhggACABKAJENgJEIAAgASkCPDcCPCAAIAH9AAIs/QsCLCAAIAH9AAIc/QsCHCABIAUtADg6AAggASAFKQMwNwMAIAEoAhAiAARAIAEgADYCFCAAEC8LIAEgBDYCGCABIAI2AhQgASADNgIQIAEgBSgCKDYCRCABIAUpAyA3AjwgASAF/QADEP0LAiwgASAF/QADAP0LAhwgBkEEaiEGCyAFQUBrJAAgBguUCAEGfyMAQUBqIgQkACAAIAEgAhDAASEFAkAgAysDICACKwMgZEUNACAEIAItAAg6ADggBCACKQMANwMwIAIoAhQhByACKAIQIQggAkIANwMQIAIoAhghCSACQQA2AhggBCACKAJENgIoIAQgAikCPDcDICAEIAL9AAIs/QsDECAEIAL9AAIc/QsDACACIAMpAwA3AwAgAiADLQAIOgAIIAIgAygCEDYCECACIAMoAhQ2AhQgAiADKAIYNgIYIANBADYCECADQQA2AhggAiADKAJENgJEIAIgAykCPDcCPCACIAP9AAIs/QsCLCACIAP9AAIc/QsCHCADIAQpAzA3AwAgAyAELQA4OgAIIAMoAhAiBgRAIAMgBjYCFCAGEC8LIAMgCTYCGCADIAc2AhQgAyAINgIQIAMgBCgCKDYCRCADIAQpAyA3AjwgAyAE/QADEP0LAiwgAyAE/QADAP0LAhwgAisDICABKwMgZEUEQCAFQQFqIQUMAQsgBCABLQAIOgA4IAQgASkDADcDMCABKAIUIQYgASgCECEHIAFCADcDECABKAIYIQggAUEANgIYIAQgASgCRDYCKCAEIAEpAjw3AyAgBCAB/QACLP0LAxAgBCAB/QACHP0LAwAgASACKQMANwMAIAEgAi0ACDoACCABIAIoAhA2AhAgASACKAIUNgIUIAEgAigCGDYCGCACQQA2AhAgAkEANgIYIAEgAigCRDYCRCABIAIpAjw3AjwgASAC/QACLP0LAiwgASAC/QACHP0LAhwgAiAELQA4OgAIIAIgBCkDMDcDACACKAIQIgMEQCACIAM2AhQgAxAvCyACIAg2AhggAiAGNgIUIAIgBzYCECACIAQoAig2AkQgAiAEKQMgNwI8IAIgBP0AAxD9CwIsIAIgBP0AAwD9CwIcIAErAyAgACsDIGRFBEAgBUECaiEFDAELIAQgAC0ACDoAOCAEIAApAwA3AzAgACgCFCECIAAoAhAhAyAAQgA3AxAgACgCGCEGIABBADYCGCAEIAAoAkQ2AiggBCAAKQI8NwMgIAQgAP0AAiz9CwMQIAQgAP0AAhz9CwMAIAAgASkDADcDACAAIAEtAAg6AAggACABKAIQNgIQIAAgASgCFDYCFCAAIAEoAhg2AhggAUEANgIQIAFBADYCGCAAIAEoAkQ2AkQgACABKQI8NwI8IAAgAf0AAiz9CwIsIAAgAf0AAhz9CwIcIAEgBC0AODoACCABIAQpAzA3AwAgASgCECIABEAgASAANgIUIAAQLwsgASAGNgIYIAEgAjYCFCABIAM2AhAgASAEKAIoNgJEIAEgBCkDIDcCPCABIAT9AAMQ/QsCLCABIAT9AAMA/QsCHCAFQQNqIQULIARBQGskACAFC0gBAX8gAEGQngE2AgAgACgCCCIBBEAgASABKAIAKAIEEQAACyAAQayUATYCACAAKAIEIgEEQCABIAEoAgAoAgQRAAALIAAQLwuLCQEKfwJAAkACQAJAAkACQCAALQBZBEAgACgCDCIDIAEgAygCACgCFBEEACEFIAAoAgwiASACIAEoAgAoAhQRBAAhCCAAKAI8IgMgAEFAaygCACIESQRAIAMgBUH/AXEgCEEIdHI7AAAMBwsgAyAAKAI4IgFrIgJBfUwNAkH/////ByAEIAFrIgQgAkEBdSIJQQFqIgcgBCAHSxsgBEH+////B08bIgcEfyAHQQBIDQQgB0EBdBAxBUEACyEGIAYgCUEBdGoiBCAFQf8BcSAIQQh0cjsAACAEQQJqIQggASADRwRAAkACQCACQQJrIgVBHkkNACADIAJBfnEgBmprQRBJDQAgBEEQayEJIANBEGshCiAEIAVBAXZBAWoiC0F4cSIFQQF0IgJrIQQgAyACayEDQQAhAgNAIAkgAkEBdCIMayAKIAxr/QAAAP0LAAAgAkEIaiICIAVHDQALIAUgC0YNAQsDQCAEQQJrIgQgA0ECayIDLwAAOwAAIAEgA0cNAAsLIAAoAjghAwsgACAGIAdBAXRqNgJAIAAgCDYCPCAAIAQ2AjggA0UNASADEC8PCyAAQUBrKAIAIQQgACgCPCEDAkAgAC0AWgRAIAMgBEkNBiADIAAoAjgiB2siBkF9TA0FQf////8HIAQgB2siBCAGQQF1IglBAWoiBSAEIAVLGyAEQf7///8HTxsiBQR/IAVBAEgNBSAFQQF0EDEFQQALIQggCCAJQQF0aiIEIAFB/wFxIAJBCHRyOwAAIARBAmohCSADIAdHBEACQAJAIAZBAmsiAUEeSQ0AIAMgBkF+cSAIamtBEEkNACAEQRBrIQYgA0EQayEKIAQgAUEBdkEBaiILQXhxIgFBAXQiAmshBCADIAJrIQNBACECA0AgBiACQQF0IgxrIAogDGv9AAAA/QsAACACQQhqIgIgAUcNAAsgASALRg0BCwNAIARBAmsiBCADQQJrIgMvAAA7AAAgAyAHRw0ACwsgACgCOCEDCyAAIAggBUEBdGo2AkAgACAJNgI8IAAgBDYCOCADDQEMAgsgAyAESQ0FIAMgACgCOCIHayIGQX1MDQRB/////wcgBCAHayIEIAZBAXUiCUEBaiIFIAQgBUsbIARB/v///wdPGyIFBH8gBUEASA0EIAVBAXQQMQVBAAshCCAIIAlBAXRqIgQgAUH/AXEgAkEIdHI7AAAgBEECaiEJIAMgB0cEQAJAAkAgBkECayIBQR5JDQAgAyAGQX5xIAhqa0EQSQ0AIARBEGshBiADQRBrIQogBCABQQF2QQFqIgtBeHEiAUEBdCICayEEIAMgAmshA0EAIQIDQCAGIAJBAXQiDGsgCiAMa/0AAAD9CwAAIAJBCGoiAiABRw0ACyABIAtGDQELA0AgBEECayIEIANBAmsiAy8AADsAACADIAdHDQALCyAAKAI4IQMLIAAgCCAFQQF0ajYCQCAAIAk2AjwgACAENgI4IANFDQELIAMQLwsPCxBBAAsQUQALEEEACyADIAFB/wFxIAJBCHRyOwAACyAAIANBAmo2AjwL6wMBA38CQAJAIAEgAkYNAAJAAkACQAJAAkACQAJAAkACQCABLAAAIgRBImsOVQAICAgICAgICAgICAgACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAgICAECCAgIAwgICAgICAgECAgIBQgGCAcICwJAIAMEQCADIAQQWQwBCyAAIAQQWAsMCQsCQCADBEAgA0EHEFkMAQsgAEEHEFgLDAgLAkAgAwRAIANBCBBZDAELIABBCBBYCwwH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AgAgAysDECIMIAMrAwAiDWRFDQYgAyANOQMQIAMgDDkDACADKAIIIQAgAyADKAIYNgIIIAMgADYCGA8LIAwgDWQEQCADIAw5AwAgACAOOQMADAoLIAMgDjkDECADIA05AwAgAygCCCECIAMgA0EYaigCADYCCCADIAI2AhggACsDACIMIA5kRQ0FIAMgDDkDECAAIA45AwAgAyABQQhrIgAoAgA2AhggACACNgIADwsgAyADQRBqIANBIGogA0EwahDRARogAUEQayIAKwMAIgwgAysDMCINZEUNBCADIAw5AzAgACANOQMAIANBOGooAgAhACADIAFBCGsiASgCADYCOCABIAA2AgAgAysDMCIMIAMrAyAiDWRFDQQgAyANOQMwIAMgDDkDICADQShqKAIAIQEgAyADKAI4IgA2AiggAyABNgI4IAwgAysDECINZEUNBCADIA05AyAgAyAMOQMQIANBGGooAgAhASADIAA2AhggAyABNgIoIAwgAysDACINZEUNBCADIA05AxAgAyAMOQMAIAMoAgghASADIAA2AgggAyABNgIYDwsgB0HvAEwEQCADKwMgIQwCQCADKwMQIg4gAysDACINZEUEQCAMIA5kRQ0BIAMgDjkDICADIAw5AxAgA0EYaigCACEAIAMgA0EoaigCACICNgIYIAMgADYCKCAMIA1kRQ0BIAMgDTkDECADIAw5AwAgAygCCCEAIAMgAjYCCCADIAA2AhgMAQsgDCAOZARAIAMgDTkDICADIAw5AwAgAygCCCEAIAMgA0EoaigCADYCCCADIAA2AigMAQsgAyANOQMQIAMgDjkDACADKAIIIQAgAyADQRhqKAIANgIIIAMgADYCGCAMIA1kRQ0AIAMgDTkDICADIAw5AxAgA0EoaigCACECIAMgADYCKCADIAI2AhgLIANBMGoiAiABRg0EIANBIGohBQNAIAIrAwAiDSAFKwMAIgxkBEAgAigCCCEIIAIhBANAAkAgBCAMOQMAIAQgBSIAKAIINgIIIAAgA0YEQCADIQAMAQsgACEEIA0gAEEQayIFKwMAIgxkDQELCyAAIAg2AgggACANOQMACyACIgVBEGoiACECIAAgAUcNAAsMBAsgAkUEQCABIANGDQQgCUECa0EBdiIGIQADQAJAIAYgACIISA0AIAMgAEEEdGohAiADIABB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CywAAAVBfwshEUEAIQ9BACEQA0AgBCAHRwRAAkAgDyARRwRAIA8hEgwBCyACIAIoAgAiEkEEajYCACASIAo2AgBBACESAn8gCy0AC0EHdgRAIAsoAgQMAQsgCy0AC0H/AHELIBBBAWoiEE0EQCAPIREMAQsCfyALLQALQQd2BEAgCygCAAwBCyALCyAQai0AAEH/AEYEQEF/IREMAQsCfyALLQALQQd2BEAgCygCAAwBCyALCyAQaiwAACERCyAHQQRrIgcoAgAhDyACIAIoAgAiGEEEajYCACAYIA82AgAgEkEBaiEPDAELCyACKAIAIQcLIBogBxDdAQsgFEEBaiEUDAELCwvnAwEBfyMAQRBrIgokACAJAn8gAARAIAIQowMhAAJAIAEEQCAKQQRqIgEgACAAKAIAKAIsEQIAIAMgCigCBDYAACABIAAgACgCACgCIBECAAwBCyAKQQRqIgEgACAAKAIAKAIoEQIAIAMgCigCBDYAACABIAAgACgCACgCHBECAAsgCCABEIQBIAEQTBogBCAAIAAoAgAoAgwRAQA2AgAgBSAAIAAoAgAoAhARAQA2AgAgCkEEaiIBIAAgACgCACgCFBECACAGIAEQZCABEDIaIAEgACAAKAIAKAIYEQIAIAcgARCEASABEEwaIAAgACgCACgCJBEBAAwBCyACEKIDIQACQCABBEAgCkEEaiIBIAAgACgCACgCLBECACADIAooAgQ2AAAgASAAIAAoAgAoAiARAgAMAQsgCkEEaiIBIAAgACgCACgCKBECACADIAooAgQ2AAAgASAAIAAoAgAoAhwRAgALIAggARCEASABEEwaIAQgACAAKAIAKAIMEQEANgIAIAUgACAAKAIAKAIQEQEANgIAIApBBGoiASAAIAAoAgAoAhQRAgAgBiABEGQgARAyGiABIAAgACgCACgCGBECACAHIAEQhAEgARBMGiAAIAAoAgAoAiQRAQALNgIAIApBEGokAAvdAQEIfyMAQRBrIgUkACMAQSBrIgMkACADQRhqIAAgARCDAyADQRBqIANBDGogAygCGCADKAIcIAIQqAIgAygCECEEIwBBEGsiASQAIAEgADYCDCABQQxqIgAhCiAEIQcgACgCACEEIwBBEGsiACQAIAAgBDYCDCAKIAchCSAAKAIMIQYgAEEQaiQAIAkgBmsQmgIh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QTBqIg1CADcCACANQQA2AgggAUEQaiQAIwBBEGsiASQAIAtBJGoiDEIANwIAIAxBADYCCCABQRBqJAAjAEEQayIBJAAgC0EYaiIQQgA3AgAgEEEANgIIIAFBEGokACMAQRBrIgokACALAn8gAgRAIApBBGoiAiADEKMDIgEgASgCACgCLBECACALIAooAgQ2AFwgAiABIAEoAgAoAiARAgAgDCACEIQBIAIQTBogAiABIAEoAgAoAhwRAgAgDSACEIQBIAIQTBogCyABIAEoAgAoAgwRAQA2AlggCyABIAEoAgAoAhARAQA2AlQgAiABIAEoAgAoAhQRAgAgDyACEGQgAhAyGiACIAEgASgCACgCGBECACAOIAIQhAEgAhBMGiABIAEoAgAoAiQRAQAMAQsgCkEEaiICIAMQogMiASABKAIAKAIsEQIAIAsgCigCBDYAXCACIAEgASgCACgCIBECACAMIAIQhAEgAhBMGiACIAEgASgCACgCHBECACANIAIQhAEgAhBMGiALIAEgASgCACgCDBEBADYCWCALIAEgASgCACgCEBEBADYCVCACIAEgASgCACgCFBECACAPIAIQZCACEDIaIAIgASABKAIAKAIYEQIAIA4gAhCEASACEEwaIAEgASgCACgCJBEBAAs2AhQgCkEQaiQAIAkgCCgCADYCACAEQYAEcSESQQAhA0EAIQEDQCABIQICQAJAAkACQCADQQRGDQAgACALQYwEahA+DQBBACEKAkACQAJAAkACQAJAIAtB3ABqIANqLAAADgUBAAQDBQkLIANBA0YNByAHQQECfyAAKAIAIgEoAgwiBCABKAIQRgRAIAEgASgCACgCJBEBAAwBCyAEKAIACyAHKAIAKAIMEQMABEAgC0EMaiAAEKQDIBAgCygCDBCOAgwCCyAFIAUoAgBBBHI2AgBBACEADAYLIANBA0YNBgsDQCAAIAtBjARqED4NBiAHQQECfyAAKAIAIgEoAgwiBCABKAIQRgRAIAEgASgCACgCJBEBAAwBCyAEKAIACyAHKAIAKAIMEQMARQ0GIAtBDGogABCkAyAQIAsoAgwQjgIMAAsACwJAAn8gDS0AC0EHdgRAIA0oAgQMAQsgDS0AC0H/AHELRQ0AAn8gACgCACIBKAIMIgQgASgCEEYEQCABIAEoAgAoAiQRAQAMAQsgBCgC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AxCoAyIBIAEoAgAoAiwRAgAgCyAKKAIENgBcIAIgASABKAIAKAIgEQIAIAwgAhBkIAIQMhogAiABIAEoAgAoAhwRAgAgDSACEGQgAhAyGiALIAEgASgCACgCDBEBADoAWyALIAEgASgCACgCEBEBADoAWiACIAEgASgCACgCFBECACAPIAIQZCACEDIaIAIgASABKAIAKAIYEQIAIA4gAhBkIAIQMhogASABKAIAKAIkEQEADAELIApBBGoiAiADEKcDIgEgASgCACgCLBECACALIAooAgQ2AFwgAiABIAEoAgAoAiARAgAgDCACEGQgAhAyGiACIAEgASgCACgCHBECACANIAIQZCACEDIaIAsgASABKAIAKAIMEQEAOgBbIAsgASABKAIAKAIQEQEAOgBaIAIgASABKAIAKAIUEQIAIA8gAhBkIAIQMhogAiABIAEoAgAoAhgRAgAgDiACEGQgAhAyGiABIAEoAgAoAiQRAQALNgIYIApBEGokACAJIAgoAgA2AgAgBEGABHEhEkEAIQNBACEBA0AgASECAkACQAJAAkAgA0EERg0AIAAgC0GMBGoQPw0AQQAhCgJAAkACQAJAAkACQCALQdwAaiADaiwAAA4FAQAEAwUJCyADQQNGDQcCfyAAKAIAIgEoAgwiBCABKAIQRgRAIAEgASgCACgCJBEBAAwBCyAELQAAC8AiAUEATgR/IAcoAgggAUH/AXFBAnRqKAIAQQFxBUEACwRAIAtBEGogABCqAyAQIAssABAQjwIMAgsgBSAFKAIAQQRyNgIAQQAhAAwGCyADQQNGDQYLA0AgACALQYwEahA/DQYCfyAAKAIAIgEoAgwiBCABKAIQRgRAIAEgASgCACgCJBEBAAwBCyAELQAAC8AiAUEATgR/IAcoAgggAUH/AXFBAnRqKAIAQQFxBUEAC0UNBiALQRBqIAAQqgMgECALLAAQEI8CDAALAAsCQAJ/IA0tAAtBB3YEQCANKAIEDAELIA0tAAtB/wBxC0UNAAJ/IAAoAgAiASgCDCIEIAEoAhBGBEAgASABKAIAKAIkEQEADAELIAQtAAALwEH/AXECfyANLQALQQd2BEAgDSgCAAwBCyANCy0AAEcNACAAEF0aIAZBADoAACANIAICfyANLQALQQd2BEAgDSgCBAwBCyANLQALQf8AcQtBAUsbIQEM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An8gAi0AC0EHdgRAIAIoAgAMAQsgAgsgCmotAABGDQELIAUgBSgCAEEEcjYCAEEAIQAMAwsgABBdGiAKQQFqIQoMAAsAC0EBIQAgESgCACALKAJkRg0AQQAhACALQQA2AhAgDyARKAIAIAsoAmQgC0EQahBjIAsoAhAEQCAFIAUoAgBBBHI2AgAMAQtBASEACyAQEDIaIAwQMhogDRAyGiAOEDIaIA8QMhogESgCACEBIBFBADYCACABBEAgASARKAIEEQAACwwDCyACIQELIANBAWohAwwACwALIAtBkARqJAAgAAsMACAAQQFBLRC2AxoLDAAgAEEBQS0QuAMaC20BAX8jAEEQayIGJAAgBkEAOgAPIAYgBToADiAGIAQ6AA0gBkElOgAMIAUEQCAGLQANIQQgBiAGLQAOOgANIAYgBDoADgsgAiABIAIoAgAgAWsgBkEMaiADIAAoAgAQGiABajYCACAGQRBqJAALQgAgASACIAMgBEEEEIUBIQEgAy0AAEEEcUUEQCAAIAFB0A9qIAFB7A5qIAEgAUHkAEgbIAFBxQBIG0HsDms2AgALC0AAIAIgAyAAQQhqIAAoAggoAgQRAQAiACAAQaACaiAFIARBABDhASAAayIAQZ8CTARAIAEgAEEMbUEMbzYCAAsLQAAgAiADIABBCGogACgCCCgCABEBACIAIABBqAFqIAUgBEEAEOEBIABrIgBBpwFMBEAgASAAQQxtQQdvNgIACwtCACABIAIgAyAEQQQQhgEhASADLQAAQQRxRQRAIAAgAUHQD2ogAUHsDmogASABQeQASBsgAUHFAEgbQewOazYCAAsLQAAgAiADIABBCGogACgCCCgCBBEBACIAIABBoAJqIAUgBEEAEOIBIABrIgBBnwJMBEAgASAAQQxtQQxvNgIACwtAACACIAMgAEEIaiAAKAIIKAIAEQEAIgAgAEGoAWogBSAEQQAQ4gEgAGsiAEGnAUwEQCABIABBDG1BB282AgALCwQAQQILuQIBBX8jAEEQayIHJAAjAEEQayIDJAACQCABQe////8DTQRAAkAgAUECSQRAIAAgAC0AC0GAAXEgAXI6AAsgACAALQALQf8AcToACyAAIQQMAQsgA0EIaiAAIAFBAk8EfyABQQRqQXxxIgQgBEEBayIEIARBAkYbBUEBC0EBahCxASADKAIMGiAAIAMoAggiBDYCACAAIAAoAghBgICAgHhxIAMoAgxB/////wdxcjYCCCAAIAAoAghBgICAgHhyNgIIIAAgATYCBAsjAEEQayIFJAAgBSACNgIMIAQhAiABIQYDQCAGBEAgAiAFKAIMNgIAIAZBAWshBiACQQRqIQIMAQsLIAVBEGokACADQQA2AgQgBCABQQJ0aiADKAIENgIAIANBEGokAAwBCxBLAAsgB0EQaiQAIAALhQcBC38jAEEQayIMJAAgBhBrIQkgDEEEaiAGELUBIg0iBiAGKAIAKAIUEQIAIAUgAzYCAAJAAkAgACIILQAAIgZBK2sOAwABAAELIAkgBsAgCSgCACgCLBEEACEGIAUgBSgCACIHQQRqNgIAIAcgBjYCACAAQQFqIQgLAkACQCACIAgiBmtBAUwNACAGLQAAQTBHDQAgBi0AAUEgckH4AEcNACAJQTAgCSgCACgCLBEEACEHIAUgBSgCACIIQQRqNgIAIAggBzYCACAJIAYsAAEgCSgCACgCLBEEACEHIAUgBSgCACIIQQRqNgIAIAggBzYCACAGQQJqIgghBgNAIAIgBk0NAiAGLAAAIQcQQhogB0Ewa0EKSSAHQSByQeEAa0EGSXJFDQIgBkEBaiEGDAALAAsDQCACIAZNDQEgBiwAACEREEIaIBFBMGtBCk8NASAGQQFqIQYMAAsACwJAAn8gDC0AD0EHdgRAIAwoAggMAQsgDC0AD0H/AHELRQRAIAkgCCAGIAUoAgAgCSgCACgCMBEHABogBSAFKAIAIAYgCGtBAnRqNgIADAELIAggBhCkASANIA0oAgAoAhARAQAhDyAIIQcDQCAGIAdNBEAgAyAIIABrQQJ0aiAFKAIAEN0BBQJAAn8gDEEEaiIKLQALQQd2BEAgCigCAAwBCyAKCyAOaiwAAEEATA0AIAsCfyAKLQALQQd2BEAgCigCAAwBCyAKCyAOaiwAAEcNACAFIAUoAgAiC0EEajYCACALIA82AgAgDiAOAn8gCi0AC0EHdgRAIAooAgQMAQsgCi0AC0H/AHELQQFrSWohDkEAIQsLIAkgBywAACAJKAIAKAIsEQQAIQogBSAFKAIAIhBBBGo2AgAgECAKNgIAIAdBAWohByALQQFqIQsMAQsLCwJAAkADQCACIAZNDQEgBkEBaiEHIAYtAAAiBkEuRwRAIAkgBsAgCSgCACgCLBEEACEGIAUgBSgCACIIQQRqNgIAIAggBjYCACAHIQYMAQsLIA0gDSgCACgCDBEBACEGIAUgBSgCACIIQQRqIgs2AgAgCCAGNgIADAELIAUoAgAhCyAGIQcLIAkgByACIAsgCSgCACgCMBEHABogBSAFKAIAIAIgB2tBAnRqIgU2AgAgBCAFIAMgASAAa0ECdGogASACRhs2AgAgDEEEahAyGiAMQRBqJAAL/gEBA38jAEEQayIFJAAjAEEQayIDJAACQCABQe////8HTQRAAkAgAUELSQRAIAAgAC0AC0GAAXEgAXI6AAsgACAALQALQf8AcToACyAAIQQMAQsgA0EIaiAAIAFBC08EfyABQRBqQXBxIgQgBEEBayIEIARBC0YbBUEKC0EBahC6ASADKAIMGiAAIAMoAggiBDYCACAAIAAoAghBgICAgHhxIAMoAgxB/////wdxcjYCCCAAIAAoAghBgICAgHhyNgIIIAAgATYCBAsgBCABIAIQkQIgA0EAOgAHIAEgBGogAy0ABzoAACADQRBqJAAMAQsQSwALIAVBEGokACAAC/UGAQt/IwBBEGsiCyQAIAYQcyEJIAtBBGogBhC3ASINIgYgBigCACgCFBECACAFIAM2AgACQAJAIAAiCC0AACIGQStrDgMAAQABCyAJIAbAIAkoAgAoAhwRBAAhBiAFIAUoAgAiB0EBajYCACAHIAY6AAAgAEEBaiEICwJAAkAgAiAIIgZrQQFMDQAgBi0AAEEwRw0AIAYtAAFBIHJB+ABHDQAgCUEwIAkoAgAoAhwRBAAhByAFIAUoAgAiCEEBajYCACAIIAc6AAAgCSAGLAABIAkoAgAoAhwRBAAhByAFIAUoAgAiCEEBajYCACAIIAc6AAAgBkECaiIIIQYDQCACIAZNDQIgBiwAACEHEEIaIAdBMGtBCkkgB0EgckHhAGtBBklyRQ0CIAZBAWohBgwACwALA0AgAiAGTQ0BIAYsAAAhERBCGiARQTBrQQpPDQEgBkEBaiEGDAALAAsCQAJ/IAstAA9BB3YEQCALKAIIDAELIAstAA9B/wBxC0UEQCAJIAggBiAFKAIAIAkoAgAoAiARBwAaIAUgBSgCACAGIAhrajYCAAwBCyAIIAYQpAEgDSANKAIAKAIQEQEAIQ8gCCEHA0AgBiAHTQRAIAMgCCAAa2ogBSgCABCkAQUCQAJ/IAtBBGoiCi0AC0EHdgRAIAooAgAMAQsgCgsgDmosAABBAEwNACAMAn8gCi0AC0EHdgRAIAooAgAMAQsgCgsgDmosAABHDQAgBSAFKAIAIgxBAWo2AgAgDCAPOgAAIA4gDgJ/IAotAAtBB3YEQCAKKAIEDAELIAotAAtB/wBxC0EBa0lqIQ5BACEMCyAJIAcsAAAgCSgCACgCHBEEACEKIAUgBSgCACIQQQFqNgIAIBAgCjoAACAHQQFqIQcgDEEBaiEMDAELCwsDQAJAAkAgAiAGTQRAIAYhBwwBCyAGQQFqIQcgBi0AACIGQS5HDQEgDSANKAIAKAIMEQEAIQYgBSAFKAIAIghBAWo2AgAgCCAGOgAACyAJIAcgAiAFKAIAIAkoAgAoAiARBwAaIAUgBSgCACACIAdraiIFNgIAIAQgBSADIAEgAGtqIAEgAkYbNgIAIAtBBGoQMhogC0EQaiQADwsgCSAGwCAJKAIAKAIcEQQAIQYgBSAFKAIAIghBAWo2AgAgCCAGOgAAIAchBgwACwAL+BsDIX0Sewt/IAJBIE4EQCACQSBtITsDQCABIDpBGGxqIjlBgPwBIAAgOkEHdGoiNioCfCIDIDYqAngiBSA2KgJ0IgYgNioCcCIHIDYqAmwiCCA2KgJoIgkgNioCZCIKIDYqAmAiCyA2KgJcIgwgNioCWCINIDYqAlQiDiA2KgJQIg8gNioCTCIQIDYqAkgiESA2KgJEIhIgNkFAayI8KgIAIhMgNioCPCIUIDYqAjgiFSA2KgI0IhYgNioCMCIXIDYqAiwiGCA2KgIoIhkgNioCJCIaIDYqAiAiGyA2KgIcIhwgNioCGCIdIDYqAhQiHiA2KgIQIh8gNioCDCIgIDYqAggiISA2KgIEIiIgNioCACIjQ///f38gI0P//39/XRsiBCAEICJeGyIEIAQgIV4bIgQgBCAgXhsiBCAEIB9eGyIEIAQgHl4bIgQgBCAdXhsiBCAEIBxeGyIEIAQgG14bIgQgBCAaXhsiBCAEIBleGyIEIAQgGF4bIgQgBCAXXhsiBCAEIBZeGyIEIAQgFV4bIgQgBCAUXhsiBCAEIBNeGyIEIAQgEl4bIgQgBCARXhsiBCAEIBBeGyIEIAQgD14bIgQgBCAOXhsiBCAEIA1eGyIEIAQgDF4bIgQgBCALXhsiBCAEIApeGyIEIAQgCV4bIgQgBCAIXhsiBCAEIAdeGyIEIAQgBl4bIgQgBCAFXhsiBCADIARdGyIEi0MAAIB3lEMAAIAIlEGAgICIByAEvCICQQF0IjhBgICAeHEiNyA3QYCAgIgHTRtBAXZBgICAPGq+krwiN0ENdkGA+AFxIDdB/x9xaiA4QYCAgHhLGyACQRB2QYCAAnFyOwECIDlBgPwBIAMgBSAGIAcgCCAJIAogCyAMIA0gDiAPIBAgESASIBMgFCAVIBYgFyAYIBkgGiAbIBwgHSAeIB8gICAhICIgI0P//3//ICND//9//14bIiMgIiAjXhsiIiAhICJeGyIhICAgIV4bIiAgHyAgXhsiHyAeIB9eGyIeIB0gHl4bIh0gHCAdXhsiHCAbIBxeGyIbIBogG14bIhogGSAaXhsiGSAYIBleGyIYIBcgGF4bIhcgFiAXXhsiFiAVIBZeGyIVIBQgFV4bIhQgEyAUXhsiEyASIBNeGyISIBEgEl4bIhEgECARXhsiECAPIBBeGyIPIA4gD14bIg4gDSAOXhsiDSAMIA1eGyIMIAsgDF4bIgsgCiALXhsiCiAJIApeGyIJIAggCV4bIgggByAIXhsiByAGIAdeGyIGIAUgBl4bIgUgAyAFXhsgBJNDAAD4QZUiA4tDAACAd5RDAACACJRBgICAiAcgA7wiAkEBdCI4QYCAgHhxIjcgN0GAgICIB00bQQF2QYCAgDxqvpK8IjdBDXZBgPgBcSA3Qf8fcWogOEGAgIB4SxsgAkEQdkGAgAJxcjsBAAJ/QwAAgD8gA5VDAAAAACADQwAAAABcG/0TIiQgNv0AAgAgBP0TIib95QH95gH9DAAAAD8AAAA/AAAAPwAAAD/95AEiJf0fASIDQwAAgE9dIANDAAAAAGBxBEAgA6kMAQtBAAshAgJ/ICX9HwAiA0MAAIBPXSADQwAAAABgcQRAIAOpDAELQQALIT0CfyAl/R8CIgNDAACAT10gA0MAAAAAYHEEQCADqQwBC0EACyE4ID39DyEuAn8gJf0fAyIDQwAAgE9dIANDAAAAAGBxBEAgA6kMAQtBAAshNyAuIAL9FwEhLwJ/ICQgPP0AAgAgJv3lAf3mAf0MAAAAPwAAAD8AAAA/AAAAP/3kASIl/R8BIgNDAACAT10gA0MAAAAAYHEEQCADqQwBC0EACyECIC8gOP0XAiA3/RcDIij9DA8PDw8PDw8PDw8PDw8PDw/9TiEnIDkCfyAl/R8AIgNDAACAT10gA0MAAAAAYHEEQCADqQwBC0EAC/0PIAL9FwECfyAl/R8CIgNDAACAT10gA0MAAAAAYHEEQCADqQwBC0EAC/0XAgJ/ICX9HwMiA0MAAIBPXSADQwAAAABgcQRAIAOpDAELQQAL/RcDIixBBP1rICf9UP1aAAgAAn8gJCA2/QACECAm/eUB/eYB/QwAAAA/AAAAPwAAAD8AAAA//eQBIiX9HwEiA0MAAIBPXSADQwAAAABgcQRAIAOpDAELQQALIQICfyAl/R8AIgNDAACAT10gA0MAAAAAYHEEQCADqQwBC0EACyE+An8gJf0fAiIDQwAAgE9dIANDAAAAAGBxBEAgA6kMAQtBAAshNyA+/Q8hMAJ/ICX9HwMiA0MAAIBPXSADQwAAAABgcQRAIAOpDAELQQALITggMCAC/RcBITECfyAkIDb9AAJQICb95QH95gH9DAAAAD8AAAA/AAAAPwAAAD/95AEiJf0fASIDQwAAgE9dIANDAAAAAGBxBEAgA6kMAQtBAAshAiAxIDf9FwIgOP0XAyIp/QwPDw8PDw8PDw8PDw8PDw8P/U4hKyA5QQxqAn8gJf0fACIDQwAAgE9dIANDAAAAAGBxBEAgA6kMAQtBAAv9DyAC/RcBAn8gJf0fAiIDQwAAgE9dIANDAAAAAGBxBEAgA6kMAQtBAAv9FwICfyAl/R8DIgNDAACAT10gA0MAAAAAYHEEQCADqQwBC0EAC/0XAyItQQT9ayAr/VD9WgAAAAJ/ICQgNv0AAiAgJv3lAf3mAf0MAAAAPwAAAD8AAAA/AAAAP/3kASIl/R8BIgNDAACAT10gA0MAAAAAYHEEQCADqQwBC0EACyECAn8gJf0fACIDQwAAgE9dIANDAAAAAGBxBEAgA6kMAQtBAAshPwJ/ICX9HwIiA0MAAIBPXSADQwAAAABgcQRAIAOpDAELQQALITggP/0PITICfyAl/R8DIgNDAACAT10gA0MAAAAAYHEEQCADqQwBC0EACyE3IDIgAv0XASEzAn8gJCA2/QACYCAm/eUB/eYB/QwAAAA/AAAAPwAAAD8AAAA//eQBIiX9HwEiA0MAAIBPXSADQwAAAABgcQRAIAOpDAELQQALIQIgMyA4/RcCIDf9FwMiJ/0MDw8PDw8PDw8PDw8PDw8PD/1OISogOUEQagJ/ICX9HwAiA0MAAIBPXSADQwAAAABgcQRAIAOpDAELQQAL/Q8gAv0XAQJ/ICX9HwIiA0MAAIBPXSADQwAAAABgcQRAIAOpDAELQQAL/RcCAn8gJf0fAyIDQwAAgE9dIANDAAAAAGBxBEAgA6kMAQtBAAv9FwMiK0EE/WsgKv1Q/VoAAAACfyAkIDb9AAIwICb95QH95gH9DAAAAD8AAAA/AAAAPwAAAD/95AEiJf0fASIDQwAAgE9dIANDAAAAAGBxBEAgA6kMAQtBAAshAgJ/ICX9HwAiA0MAAIBPXSADQwAAAABgcQRAIAOpDAELQQALIUACfyAl/R8CIgNDAACAT10gA0MAAAAAYHEEQCADqQwBC0EACyE3IED9DyE0An8gJf0fAyIDQwAAgE9dIANDAAAAAGBxBEAgA6kMAQtBAAshOCA0IAL9FwEhNQJ/ICQgNv0AAnAgJv3lAf3mAf0MAAAAPwAAAD8AAAA/AAAAP/3kASIk/R8BIgNDAACAT10gA0MAAAAAYHEEQCADqQwBC0EACyECIDUgN/0XAiA4/RcDIib9DA8PDw8PDw8PDw8PDw8PDw/9TiEqIDlBFGoCfyAk/R8AIgNDAACAT10gA0MAAAAAYHEEQCADqQwBC0EAC/0PIAL9FwECfyAk/R8CIgNDAACAT10gA0MAAAAAYHEEQCADqQwBC0EAC/0XAgJ/ICT9HwMiA0MAAIBPXSADQwAAAABgcQRAIAOpDAELQQAL/RcDIiVBBP1rICr9UP1aAAAAIDkgJkEE/W39DAEBAQEBAQEBAQEBAQEBAQH9Tv2JAf2pASIk/RsAQQx0/REgJP0bAUENdP0cASAk/RsCQQ50/RwCICT9GwNBD3T9HAMgJ0EE/W39DAEBAQEBAQEBAQEBAQEBAQH9Tv2JAf2pASIk/RsAQQh0/REgJP0bAUEJdP0cASAk/RsCQQp0/RwCICT9GwNBC3T9HAMgKUEE/W39DAEBAQEBAQEBAQEBAQEBAQH9Tv2JAf2pASIk/RsAQQR0/REgJP0bAUEFdP0cASAk/RsCQQZ0/RwCICT9GwNBB3T9HAMgKEEE/W39DAEBAQEBAQEBAQEBAQEBAQH9Tv2JAf2pASIkICT9GwFBAXT9HAEgJP0bAkECdP0cAiAk/RsDQQN0/RwDICxBBP1t/QwBAQEBAQEBAQEBAQEBAQEB/U79iQH9qQEiJP0bAEEQdP0RICT9GwFBEXT9HAEgJP0bAkESdP0cAiAk/RsDQRN0/RwD/VD9UCAtQQT9bf0MAQEBAQEBAQEBAQEBAQEBAf1O/YkB/akBIiT9GwBBFHT9ESAk/RsBQRV0/RwBICT9GwJBFnT9HAIgJP0bA0EXdP0cA/1Q/VAgK0EE/W39DAEBAQEBAQEBAQEBAQEBAQH9Tv2JAf2pASIk/RsAQRh0/REgJP0bAUEZdP0cASAk/RsCQRp0/RwCICT9GwNBG3T9HAP9UP1QICVBBP1t/QwBAQEBAQEBAQEBAQEBAQEB/U79iQH9qQEiJP0bAEEcdP0RICT9GwFBHXT9HAEgJP0bAkEedP0cAiAk/RsDQR90/RwD/VAiJCAkICT9DQgJCgsMDQ4PAAECAwABAgP9UCIkICQgJP0NBAUGBwABAgMAAQIDAAECA/1Q/VoBBAAgOkEBaiI6IDtHDQALCwuaBQEFfyMAQdACayIAJAAgACACNgLIAiAAIAE2AswCIAMQiAEhBiADIABB0AFqEMQBIQcgAEHEAWogAyAAQcQCahDDASMAQRBrIgIkACAAQbgBaiIBQgA3AgAgAUEANgIIIAJBEGokACABIAEtAAtBB3YEfyABKAIIQf////8HcUEBawVBCgsQOCAAAn8gAS0AC0EHdgRAIAEoAgAMAQsgAQsiAjYCtAEgACAAQRBqNgIMIABBADYCCANAAkAgAEHMAmogAEHIAmoQPg0AIAAoArQBAn8gAS0AC0EHdgRAIAEoAgQMAQsgAS0AC0H/AHELIAJqRgRAAn8gAS0AC0EHdgRAIAEoAgQMAQsgAS0AC0H/AHELIQMgAQJ/IAEtAAtBB3YEQCABKAIEDAELIAEtAAtB/wBxC0EBdBA4IAEgAS0AC0EHdgR/IAEoAghB/////wdxQQFrBUEKCxA4IAAgAwJ/IAEtAAtBB3YEQCABKAIADAELIAELIgJqNgK0AQsCfyAAQcwCaiIIKAIAIgMoAgwiCSADKAIQRgRAIAMgAygCACgCJBEBAAwBCyAJKAIACyAGIAIgAEG0AWogAEEIaiAAKALEAiAAQcQBaiAAQRBqIABBDGogBxC0AQ0AIAgQXBoMAQsLAkACfyAALQDPAUEHdgRAIAAoAsgBDAELIAAtAM8BQf8AcQtFDQAgACgCDCIDIABBEGprQZ8BSg0AIAAgA0EEajYCDCADIAAoAgg2AgALIAUgAiAAKAK0ASAEIAYQxAM2AgAgAEHEAWogAEEQaiAAKAIMIAQQYyAAQcwCaiAAQcgCahA+BEAgBCAEKAIAQQJyNgIACyAAKALMAiEKIAEQMhogAEHEAWoQMhogAEHQAmokACAKC/caAyB9FnsHfyACQSBOBEAgAkEgbSE+A0AgASA8QRZsaiI7QYD8ASAAIDxBB3RqIjkqAnwiIiA5KgJ4IgQgOSoCdCIFIDkqAnAiBiA5KgJsIgcgOSoCaCIIIDkqAmQiCSA5KgJgIgogOSoCXCILIDkqAlgiDCA5KgJUIg0gOSoCUCIOIDkqAkwiDyA5KgJIIhAgOSoCRCIRIDlBQGsiPyoCACISIDkqAjwiEyA5KgI4IhQgOSoCNCIVIDkqAjAiFiA5KgIsIhcgOSoCKCIYIDkqAiQiGSA5KgIgIhogOSoCHCIbIDkqAhgiHCA5KgIUIh0gOSoCECIeIDkqAgwiHyA5KgIIIiAgOSoCBCIhIDkqAgAiA0MAAAAAIANDAAAAAF0gA0MAAAAAXnIiAhsgA4tDAAAAACACGyIDICGLIiFdIgIbICEgAyACGyIDICCLIiBdIgIbICAgAyACGyIDIB+LIh9dIgIbIB8gAyACGyIDIB6LIh5dIgIbIB4gAyACGyIDIB2LIh1dIgIbIB0gAyACGyIDIByLIhxdIgIbIBwgAyACGyIDIBuLIhtdIgIbIBsgAyACGyIDIBqLIhpdIgIbIBogAyACGyIDIBmLIhldIgIbIBkgAyACGyIDIBiLIhhdIgIbIBggAyACGyIDIBeLIhddIgIbIBcgAyACGyIDIBaLIhZdIgIbIBYgAyACGyIDIBWLIhVdIgIbIBUgAyACGyIDIBSLIhRdIgIbIBQgAyACGyIDIBOLIhNdIgIbIBMgAyACGyIDIBKLIhJdIgIbIBIgAyACGyIDIBGLIhFdIgIbIBEgAyACGyIDIBCLIhBdIgIbIBAgAyACGyIDIA+LIg9dIgIbIA8gAyACGyIDIA6LIg5dIgIbIA4gAyACGyIDIA2LIg1dIgIbIA0gAyACGyIDIAyLIgxdIgIbIAwgAyACGyIDIAuLIgtdIgIbIAsgAyACGyIDIAqLIgpdIgIbIAogAyACGyIDIAmLIgldIgIbIAkgAyACGyIDIAiLIghdIgIbIAggAyACGyIDIAeLIgddIgIbIAcgAyACGyIDIAaLIgZdIgIbIAYgAyACGyIDIAWLIgVdIgIbIAUgAyACGyIDIASLIgRdIgIbICKLIAQgAyACG14bQwAAgL2UIgOLQwAAgHeUQwAAgAiUQYCAgIgHIAO8IgJBAXQiOkGAgIB4cSI9ID1BgICAiAdNG0EBdkGAgIA8ar6SvCI9QQ12QYD4AXEgPUH/H3FqIDpBgICAeEsbIAJBEHZBgIACcXI7AQACf0MAAIA/IAOVQwAAAAAgA0MAAAAAXBv9EyIjIDn9AAIA/eYB/QwAAIRBAACEQQAAhEEAAIRB/eQBIiT9HwEiA4tDAAAAT10EQCADqAwBC0GAgICAeAshAgJ/ICT9HwAiA4tDAAAAT10EQCADqAwBC0GAgICAeAv9DyEtAn8gJP0fAiIDi0MAAABPXQRAIAOoDAELQYCAgIB4CyE6IC0gAv0XASEuAn8gJP0fAyIDi0MAAABPXQRAIAOoDAELQYCAgIB4CyECIC4gOv0XAiEvAn8gIyA//QACAP3mAf0MAACEQQAAhEEAAIRBAACEQf3kASIk/R8BIgOLQwAAAE9dBEAgA6gMAQtBgICAgHgLITogLyAC/RcD/QwfHx8fHx8fHx8fHx8fHx8f/XYiJv0MDw8PDw8PDw8PDw8PDw8PD/1OISUgOwJ/ICT9HwAiA4tDAAAAT10EQCADqAwBC0GAgICAeAv9DyA6/RcBAn8gJP0fAiIDi0MAAABPXQRAIAOoDAELQYCAgIB4C/0XAgJ/ICT9HwMiA4tDAAAAT10EQCADqAwBC0GAgICAeAv9FwP9DB8fHx8fHx8fHx8fHx8fHx/9diIqQQT9ayAl/VD9WgAGAAJ/ICMgOf0AAhD95gH9DAAAhEEAAIRBAACEQQAAhEH95AEiJP0fASIDi0MAAABPXQRAIAOoDAELQYCAgIB4CyECAn8gJP0fACIDi0MAAABPXQRAIAOoDAELQYCAgIB4C/0PITACfyAk/R8CIgOLQwAAAE9dBEAgA6gMAQtBgICAgHgLITogMCAC/RcBITECfyAk/R8DIgOLQwAAAE9dBEAgA6gMAQtBgICAgHgLIQIgMSA6/RcCITICfyAjIDn9AAJQ/eYB/QwAAIRBAACEQQAAhEEAAIRB/eQBIiT9HwEiA4tDAAAAT10EQCADqAwBC0GAgICAeAshOiAyIAL9FwP9DB8fHx8fHx8fHx8fHx8fHx/9diIn/QwPDw8PDw8PDw8PDw8PDw8P/U4hKSA7QQpqAn8gJP0fACIDi0MAAABPXQRAIAOoDAELQYCAgIB4C/0PIDr9FwECfyAk/R8CIgOLQwAAAE9dBEAgA6gMAQtBgICAgHgL/RcCAn8gJP0fAyIDi0MAAABPXQRAIAOoDAELQYCAgIB4C/0XA/0MHx8fHx8fHx8fHx8fHx8fH/12IitBBP1rICn9UP1aAAAAAn8gIyA5/QACIP3mAf0MAACEQQAAhEEAAIRBAACEQf3kASIk/R8BIgOLQwAAAE9dBEAgA6gMAQtBgICAgHgLIQICfyAk/R8AIgOLQwAAAE9dBEAgA6gMAQtBgICAgHgL/Q8hMwJ/ICT9HwIiA4tDAAAAT10EQCADqAwBC0GAgICAeAshOiAzIAL9FwEhNAJ/ICT9HwMiA4tDAAAAT10EQCADqAwBC0GAgICAeAshAiA0IDr9FwIhNQJ/ICMgOf0AAmD95gH9DAAAhEEAAIRBAACEQQAAhEH95AEiJP0fASIDi0MAAABPXQRAIAOoDAELQYCAgIB4CyE6IDUgAv0XA/0MHx8fHx8fHx8fHx8fHx8fH/12IiX9DA8PDw8PDw8PDw8PDw8PDw/9TiEoIDtBDmoCfyAk/R8AIgOLQwAAAE9dBEAgA6gMAQtBgICAgHgL/Q8gOv0XAQJ/ICT9HwIiA4tDAAAAT10EQCADqAwBC0GAgICAeAv9FwICfyAk/R8DIgOLQwAAAE9dBEAgA6gMAQtBgICAgHgL/RcD/QwfHx8fHx8fHx8fHx8fHx8f/XYiKUEE/WsgKP1Q/VoAAAACfyAjIDn9AAIw/eYB/QwAAIRBAACEQQAAhEEAAIRB/eQBIiT9HwEiA4tDAAAAT10EQCADqAwBC0GAgICAeAshAgJ/ICT9HwAiA4tDAAAAT10EQCADqAwBC0GAgICAeAv9DyE2An8gJP0fAiIDi0MAAABPXQRAIAOoDAELQYCAgIB4CyE6IDYgAv0XASE3An8gJP0fAyIDi0MAAABPXQRAIAOoDAELQYCAgIB4CyECIDcgOv0XAiE4An8gIyA5/QACcP3mAf0MAACEQQAAhEEAAIRBAACEQf3kASIj/R8BIgOLQwAAAE9dBEAgA6gMAQtBgICAgHgLITkgOCAC/RcD/QwfHx8fHx8fHx8fHx8fHx8f/XYiJP0MDw8PDw8PDw8PDw8PDw8PD/1OISwgO0ESagJ/ICP9HwAiA4tDAAAAT10EQCADqAwBC0GAgICAeAv9DyA5/RcBAn8gI/0fAiIDi0MAAABPXQRAIAOoDAELQYCAgIB4C/0XAgJ/ICP9HwMiA4tDAAAAT10EQCADqAwBC0GAgICAeAv9FwP9DB8fHx8fHx8fHx8fHx8fHx/9diIoQQT9ayAs/VD9WgAAACA7ICRBBP1t/QwBAQEBAQEBAQEBAQEBAQEB/U79iQH9qQEiI/0bAEEMdP0RICP9GwFBDXT9HAEgI/0bAkEOdP0cAiAj/RsDQQ90/RwDICVBBP1t/QwBAQEBAQEBAQEBAQEBAQEB/U79iQH9qQEiI/0bAEEIdP0RICP9GwFBCXT9HAEgI/0bAkEKdP0cAiAj/RsDQQt0/RwDICdBBP1t/QwBAQEBAQEBAQEBAQEBAQEB/U79iQH9qQEiI/0bAEEEdP0RICP9GwFBBXT9HAEgI/0bAkEGdP0cAiAj/RsDQQd0/RwDICZBBP1t/QwBAQEBAQEBAQEBAQEBAQEB/U79iQH9qQEiIyAj/RsBQQF0/RwBICP9GwJBAnT9HAIgI/0bA0EDdP0cAyAqQQT9bf0MAQEBAQEBAQEBAQEBAQEBAf1O/YkB/akBIiP9GwBBEHT9ESAj/RsBQRF0/RwBICP9GwJBEnT9HAIgI/0bA0ETdP0cA/1Q/VAgK0EE/W39DAEBAQEBAQEBAQEBAQEBAQH9Tv2JAf2pASIj/RsAQRR0/REgI/0bAUEVdP0cASAj/RsCQRZ0/RwCICP9GwNBF3T9HAP9UP1QIClBBP1t/QwBAQEBAQEBAQEBAQEBAQEB/U79iQH9qQEiI/0bAEEYdP0RICP9GwFBGXT9HAEgI/0bAkEadP0cAiAj/RsDQRt0/RwD/VD9UCAoQQT9bf0MAQEBAQEBAQEBAQEBAQEBAf1O/YkB/akBIiP9GwBBHHT9ESAj/RsBQR10/RwBICP9GwJBHnT9HAIgI/0bA0EfdP0cA/1QIiMgIyAj/Q0ICQoLDA0ODwABAgMAAQID/VAiIyAjICP9DQQFBgcAAQIDAAECAwABAgP9UP1aAQIAIDxBAWoiPCA+Rw0ACwsLRgECfyMAQRBrIgMkACADIAE2AgwgAyACNgIIIANBBGogA0EMahCAASEEIABBwBUgAygCCBDRAyEAIAQQfyADQRBqJAAgAAufFgMhfQt/DHsgAkEgTgRAIAJBIG0hKQNAIAEgKEEUbGoiJ0GA/AEgACAoQQd0aiIkKgJ8IgMgJCoCeCIFICQqAnQiBiAkKgJwIgcgJCoCbCIIICQqAmgiCSAkKgJkIgogJCoCYCILICQqAlwiDCAkKgJYIg0gJCoCVCIOICQqAlAiDyAkKgJMIhAgJCoCSCIRICQqAkQiEiAkQUBrIioqAgAiEyAkKgI8IhQgJCoCOCIVICQqAjQiFiAkKgIwIhcgJCoCLCIYICQqAigiGSAkKgIkIhogJCoCICIbICQqAhwiHCAkKgIYIh0gJCoCFCIeICQqAhAiHyAkKgIMIiAgJCoCCCIhICQqAgQiIiAkKgIAIiND//9/fyAjQ///f39dGyIEIAQgIl4bIgQgBCAhXhsiBCAEICBeGyIEIAQgH14bIgQgBCAeXhsiBCAEIB1eGyIEIAQgHF4bIgQgBCAbXhsiBCAEIBpeGyIEIAQgGV4bIgQgBCAYXhsiBCAEIBdeGyIEIAQgFl4bIgQgBCAVXhsiBCAEIBReGyIEIAQgE14bIgQgBCASXhsiBCAEIBFeGyIEIAQgEF4bIgQgBCAPXhsiBCAEIA5eGyIEIAQgDV4bIgQgBCAMXhsiBCAEIAteGyIEIAQgCl4bIgQgBCAJXhsiBCAEIAheGyIEIAQgB14bIgQgBCAGXhsiBCAEIAVeGyIEIAMgBF0bIgSLQwAAgHeUQwAAgAiUQYCAgIgHIAS8IgJBAXQiJkGAgIB4cSIlICVBgICAiAdNG0EBdkGAgIA8ar6SvCIlQQ12QYD4AXEgJUH/H3FqICZBgICAeEsbIAJBEHZBgIACcXI7AQIgJ0GA/AEgAyAFIAYgByAIIAkgCiALIAwgDSAOIA8gECARIBIgEyAUIBUgFiAXIBggGSAaIBsgHCAdIB4gHyAgICEgIiAjQ///f/8gI0P//3//XhsiIyAiICNeGyIiICEgIl4bIiEgICAhXhsiICAfICBeGyIfIB4gH14bIh4gHSAeXhsiHSAcIB1eGyIcIBsgHF4bIhsgGiAbXhsiGiAZIBpeGyIZIBggGV4bIhggFyAYXhsiFyAWIBdeGyIWIBUgFl4bIhUgFCAVXhsiFCATIBReGyITIBIgE14bIhIgESASXhsiESAQIBFeGyIQIA8gEF4bIg8gDiAPXhsiDiANIA5eGyINIAwgDV4bIgwgCyAMXhsiCyAKIAteGyIKIAkgCl4bIgkgCCAJXhsiCCAHIAheGyIHIAYgB14bIgYgBSAGXhsiBSADIAVeGyAEk0MAAHBBlSIDi0MAAIB3lEMAAIAIlEGAgICIByADvCICQQF0IiZBgICAeHEiJSAlQYCAgIgHTRtBAXZBgICAPGq+krwiJUENdkGA+AFxICVB/x9xaiAmQYCAgHhLGyACQRB2QYCAAnFyOwEAAn9DAACAPyADlUMAAAAAIANDAAAAAFwb/RMiMSAk/QACACAE/RMiMv3lAf3mAf0MAAAAPwAAAD8AAAA/AAAAP/3kASIv/R8BIgOLQwAAAE9dBEAgA6gMAQtBgICAgHgLIQICfyAv/R8AIgOLQwAAAE9dBEAgA6gMAQtBgICAgHgLISsCfyAv/R8CIgOLQwAAAE9dBEAgA6gMAQtBgICAgHgLISYgK/0PITMCfyAv/R8DIgOLQwAAAE9dBEAgA6gMAQtBgICAgHgLISUgMyAC/RcBITQCfyAxICr9AAIAIDL95QH95gH9DAAAAD8AAAA/AAAAPwAAAD/95AEiL/0fASIDi0MAAABPXQRAIAOoDAELQYCAgIB4CyECIDQgJv0XAiAl/RcD/QwPDw8PDw8PDw8PDw8PDw8P/XYhMCAnAn8gL/0fACIDi0MAAABPXQRAIAOoDAELQYCAgIB4C/0PIAL9FwECfyAv/R8CIgOLQwAAAE9dBEAgA6gMAQtBgICAgHgL/RcCAn8gL/0fAyIDi0MAAABPXQRAIAOoDAELQYCAgIB4C/0XA/0MDw8PDw8PDw8PDw8PDw8PD/12QQT9ayAw/VD9WgAEAAJ/IDEgJP0AAhAgMv3lAf3mAf0MAAAAPwAAAD8AAAA/AAAAP/3kASIv/R8BIgOLQwAAAE9dBEAgA6gMAQtBgICAgHgLIQICfyAv/R8AIgOLQwAAAE9dBEAgA6gMAQtBgICAgHgLISwCfyAv/R8CIgOLQwAAAE9dBEAgA6gMAQtBgICAgHgLISUgLP0PITUCfyAv/R8DIgOLQwAAAE9dBEAgA6gMAQtBgICAgHgLISYgNSAC/RcBITYCfyAxICT9AAJQIDL95QH95gH9DAAAAD8AAAA/AAAAPwAAAD/95AEiL/0fASIDi0MAAABPXQRAIAOoDAELQYCAgIB4CyECIDYgJf0XAiAm/RcD/QwPDw8PDw8PDw8PDw8PDw8P/XYhMCAnQQhqAn8gL/0fACIDi0MAAABPXQRAIAOoDAELQYCAgIB4C/0PIAL9FwECfyAv/R8CIgOLQwAAAE9dBEAgA6gMAQtBgICAgHgL/RcCAn8gL/0fAyIDi0MAAABPXQRAIAOoDAELQYCAgIB4C/0XA/0MDw8PDw8PDw8PDw8PDw8PD/12QQT9ayAw/VD9WgAAAAJ/IDEgJP0AAiAgMv3lAf3mAf0MAAAAPwAAAD8AAAA/AAAAP/3kASIv/R8BIgOLQwAAAE9dBEAgA6gMAQtBgICAgHgLIQICfyAv/R8AIgOLQwAAAE9dBEAgA6gMAQtBgICAgHgLIS0CfyAv/R8CIgOLQwAAAE9dBEAgA6gMAQtBgICAgHgLISYgLf0PITcCfyAv/R8DIgOLQwAAAE9dBEAgA6gMAQtBgICAgHgLISUgNyAC/RcBITgCfyAxICT9AAJgIDL95QH95gH9DAAAAD8AAAA/AAAAPwAAAD/95AEiL/0fASIDi0MAAABPXQRAIAOoDAELQYCAgIB4CyECIDggJv0XAiAl/RcD/QwPDw8PDw8PDw8PDw8PDw8P/XYhMCAnQQxqAn8gL/0fACIDi0MAAABPXQRAIAOoDAELQYCAgIB4C/0PIAL9FwECfyAv/R8CIgOLQwAAAE9dBEAgA6gMAQtBgICAgHgL/RcCAn8gL/0fAyIDi0MAAABPXQRAIAOoDAELQYCAgIB4C/0XA/0MDw8PDw8PDw8PDw8PDw8PD/12QQT9ayAw/VD9WgAAAAJ/IDEgJP0AAjAgMv3lAf3mAf0MAAAAPwAAAD8AAAA/AAAAP/3kASIv/R8BIgOLQwAAAE9dBEAgA6gMAQtBgICAgHgLIQICfyAv/R8AIgOLQwAAAE9dBEAgA6gMAQtBgICAgHgLIS4CfyAv/R8CIgOLQwAAAE9dBEAgA6gMAQtBgICAgHgLISUgLv0PITkCfyAv/R8DIgOLQwAAAE9dBEAgA6gMAQtBgICAgHgLISYgOSAC/RcBIToCfyAxICT9AAJwIDL95QH95gH9DAAAAD8AAAA/AAAAPwAAAD/95AEiMf0fASIDi0MAAABPXQRAIAOoDAELQYCAgIB4CyECIDogJf0XAiAm/RcD/QwPDw8PDw8PDw8PDw8PDw8P/XYhMiAnQRBqAn8gMf0fACIDi0MAAABPXQRAIAOoDAELQYCAgIB4C/0PIAL9FwECfyAx/R8CIgOLQwAAAE9dBEAgA6gMAQtBgICAgHgL/RcCAn8gMf0fAyIDi0MAAABPXQRAIAOoDAELQYCAgIB4C/0XA/0MDw8PDw8PDw8PDw8PDw8PD/12QQT9ayAy/VD9WgAAACAoQQFqIiggKUcNAAsLC64CAgR+Bn8jAEEgayIIJAACQAJAAkAgASACRwRAIwNBHGoiDCgCACENIAxBADYCACMAQRBrIgkkABBCGiMAQRBrIgokACMAQRBrIgskACALIAEgCEEcakECEKICIAspAwAhBCAKIAspAwg3AwggCiAENwMAIAtBEGokACAKKQMAIQQgCSAKKQMINwMIIAkgBDcDACAKQRBqJAAgCSkDACEEIAggCSkDCDcDECAIIAQ3AwggCUEQaiQAIAgpAxAhBCAIKQMIIQUgDCgCACIBRQ0BIAgoAhwgAkcNAiAFIQYgBCEHIAFBxABHDQMMAgsgA0EENgIADAILIAwgDTYCACAIKAIcIAJGDQELIANBBDYCACAGIQUgByEECyAAIAU3AwAgACAENwMIIAhBIGokAAuzAQIEfwJ8IwBBEGsiAyQAAkACQAJAIAAgAUcEQCMDQRxqIgUoAgAhBiAFQQA2AgAQQhojAEEQayIEJAAgBCAAIANBDGpBARCiAiAEKQMAIAQpAwgQrwIhByAEQRBqJAAgBSgCACIARQ0BIAMoAgwgAUcNAiAHIQggAEHEAEcNAwwCCyACQQQ2AgAMAgsgBSAGNgIAIAMoAgwgAUYNAQsgAkEENgIAIAghBwsgA0EQaiQAIAcLswECBH8CfSMAQRBrIgMkAAJAAkACQCAAIAFHBEAjA0EcaiIFKAIAIQYgBUEANgIAEEIaIwBBEGsiBCQAIAQgACADQQxqQQAQogIgBCkDACAEKQMIENMDIQcgBEEQaiQAIAUoAgAiAEUNASADKAIMIAFHDQIgByEIIABBxABHDQMMAgsgAkEENgIADAILIAUgBjYCACADKAIMIAFGDQELIAJBBDYCACAIIQcLIANBEGokACAHC8MBAgR/An4jAEEQayIEJAACfgJAAkAgACABRwRAAkACQCAALQAAIgZBLUcNACAAQQFqIgAgAUcNAAwBCyMDQRxqIgUoAgAhByAFQQA2AgAgACAEQQxqIAMQQhCUAiEIAkAgBSgCACIABEAgBCgCDCABRw0BIABBxABGDQQMBQsgBSAHNgIAIAQoAgwgAUYNBAsLCyACQQQ2AgBCAAwCCyACQQQ2AgBCfwwBC0IAIAh9IAggBkEtRhsLIQkgBEEQaiQAIAkL/hQDIH0Lfwt7IAJBIE4EQCACQSBtISgDQCABICZBEmxqIidBgPwBIAAgJkEHdGoiIyoCfCIiICMqAngiBCAjKgJ0IgUgIyoCcCIGICMqAmwiByAjKgJoIgggIyoCZCIJICMqAmAiCiAjKgJcIgsgIyoCWCIMICMqAlQiDSAjKgJQIg4gIyoCTCIPICMqAkgiECAjKgJEIhEgI0FAayIpKgIAIhIgIyoCPCITICMqAjgiFCAjKgI0IhUgIyoCMCIWICMqAiwiFyAjKgIoIhggIyoCJCIZICMqAiAiGiAjKgIcIhsgIyoCGCIcICMqAhQiHSAjKgIQIh4gIyoCDCIfICMqAggiICAjKgIEIiEgIyoCACIDQwAAAAAgA0MAAAAAXSADQwAAAABeciICGyADi0MAAAAAIAIbIgMgIYsiIV0iAhsgISADIAIbIgMgIIsiIF0iAhsgICADIAIbIgMgH4siH10iAhsgHyADIAIbIgMgHosiHl0iAhsgHiADIAIbIgMgHYsiHV0iAhsgHSADIAIbIgMgHIsiHF0iAhsgHCADIAIbIgMgG4siG10iAhsgGyADIAIbIgMgGosiGl0iAhsgGiADIAIbIgMgGYsiGV0iAhsgGSADIAIbIgMgGIsiGF0iAhsgGCADIAIbIgMgF4siF10iAhsgFyADIAIbIgMgFosiFl0iAhsgFiADIAIbIgMgFYsiFV0iAhsgFSADIAIbIgMgFIsiFF0iAhsgFCADIAIbIgMgE4siE10iAhsgEyADIAIbIgMgEosiEl0iAhsgEiADIAIbIgMgEYsiEV0iAhsgESADIAIbIgMgEIsiEF0iAhsgECADIAIbIgMgD4siD10iAhsgDyADIAIbIgMgDosiDl0iAhsgDiADIAIbIgMgDYsiDV0iAhsgDSADIAIbIgMgDIsiDF0iAhsgDCADIAIbIgMgC4siC10iAhsgCyADIAIbIgMgCosiCl0iAhsgCiADIAIbIgMgCYsiCV0iAhsgCSADIAIbIgMgCIsiCF0iAhsgCCADIAIbIgMgB4siB10iAhsgByADIAIbIgMgBosiBl0iAhsgBiADIAIbIgMgBYsiBV0iAhsgBSADIAIbIgMgBIsiBF0iAhsgIosgBCADIAIbXhtDAAAAvpQiA4tDAACAd5RDAACACJRBgICAiAcgA7wiAkEBdCIlQYCAgHhxIiQgJEGAgICIB00bQQF2QYCAgDxqvpK8IiRBDXZBgPgBcSAkQf8fcWogJUGAgIB4SxsgAkEQdkGAgAJxcjsBAAJ/QwAAgD8gA5VDAAAAACADQwAAAABcG/0TIjAgI/0AAgD95gH9DAAACEEAAAhBAAAIQQAACEH95AEiLv0fASIDi0MAAABPXQRAIAOoDAELQYCAgIB4CyECAn8gLv0fACIDi0MAAABPXQRAIAOoDAELQYCAgIB4CyEqAn8gLv0fAiIDi0MAAABPXQRAIAOoDAELQYCAgIB4CyElICr9DyExAn8gLv0fAyIDi0MAAABPXQRAIAOoDAELQYCAgIB4CyEkIDEgAv0XASEyAn8gMCAp/QACAP3mAf0MAAAIQQAACEEAAAhBAAAIQf3kASIu/R8BIgOLQwAAAE9dBEAgA6gMAQtBgICAgHgLIQIgMiAl/RcCICT9FwP9DA8PDw8PDw8PDw8PDw8PDw/9diEvICcCfyAu/R8AIgOLQwAAAE9dBEAgA6gMAQtBgICAgHgL/Q8gAv0XAQJ/IC79HwIiA4tDAAAAT10EQCADqAwBC0GAgICAeAv9FwICfyAu/R8DIgOLQwAAAE9dBEAgA6gMAQtBgICAgHgL/RcD/QwPDw8PDw8PDw8PDw8PDw8P/XZBBP1rIC/9UP1aAAIAAn8gMCAj/QACEP3mAf0MAAAIQQAACEEAAAhBAAAIQf3kASIu/R8BIgOLQwAAAE9dBEAgA6gMAQtBgICAgHgLIQICfyAu/R8AIgOLQwAAAE9dBEAgA6gMAQtBgICAgHgLISsCfyAu/R8CIgOLQwAAAE9dBEAgA6gMAQtBgICAgHgLISQgK/0PITMCfyAu/R8DIgOLQwAAAE9dBEAgA6gMAQtBgICAgHgLISUgMyAC/RcBITQCfyAwICP9AAJQ/eYB/QwAAAhBAAAIQQAACEEAAAhB/eQBIi79HwEiA4tDAAAAT10EQCADqAwBC0GAgICAeAshAiA0ICT9FwIgJf0XA/0MDw8PDw8PDw8PDw8PDw8PD/12IS8gJ0EGagJ/IC79HwAiA4tDAAAAT10EQCADqAwBC0GAgICAeAv9DyAC/RcBAn8gLv0fAiIDi0MAAABPXQRAIAOoDAELQYCAgIB4C/0XAgJ/IC79HwMiA4tDAAAAT10EQCADqAwBC0GAgICAeAv9FwP9DA8PDw8PDw8PDw8PDw8PDw/9dkEE/WsgL/1Q/VoAAAACfyAwICP9AAIg/eYB/QwAAAhBAAAIQQAACEEAAAhB/eQBIi79HwEiA4tDAAAAT10EQCADqAwBC0GAgICAeAshAgJ/IC79HwAiA4tDAAAAT10EQCADqAwBC0GAgICAeAshLAJ/IC79HwIiA4tDAAAAT10EQCADqAwBC0GAgICAeAshJSAs/Q8hNQJ/IC79HwMiA4tDAAAAT10EQCADqAwBC0GAgICAeAshJCA1IAL9FwEhNgJ/IDAgI/0AAmD95gH9DAAACEEAAAhBAAAIQQAACEH95AEiLv0fASIDi0MAAABPXQRAIAOoDAELQYCAgIB4CyECIDYgJf0XAiAk/RcD/QwPDw8PDw8PDw8PDw8PDw8P/XYhLyAnQQpqAn8gLv0fACIDi0MAAABPXQRAIAOoDAELQYCAgIB4C/0PIAL9FwECfyAu/R8CIgOLQwAAAE9dBEAgA6gMAQtBgICAgHgL/RcCAn8gLv0fAyIDi0MAAABPXQRAIAOoDAELQYCAgIB4C/0XA/0MDw8PDw8PDw8PDw8PDw8PD/12QQT9ayAv/VD9WgAAAAJ/IDAgI/0AAjD95gH9DAAACEEAAAhBAAAIQQAACEH95AEiLv0fASIDi0MAAABPXQRAIAOoDAELQYCAgIB4CyECAn8gLv0fACIDi0MAAABPXQRAIAOoDAELQYCAgIB4CyEtAn8gLv0fAiIDi0MAAABPXQRAIAOoDAELQYCAgIB4CyEkIC39DyE3An8gLv0fAyIDi0MAAABPXQRAIAOoDAELQYCAgIB4CyElIDcgAv0XASE4An8gMCAj/QACcP3mAf0MAAAIQQAACEEAAAhBAAAIQf3kASIw/R8BIgOLQwAAAE9dBEAgA6gMAQtBgICAgHgLIQIgOCAk/RcCICX9FwP9DA8PDw8PDw8PDw8PDw8PDw/9diEuICdBDmoCfyAw/R8AIgOLQwAAAE9dBEAgA6gMAQtBgICAgHgL/Q8gAv0XAQJ/IDD9HwIiA4tDAAAAT10EQCADqAwBC0GAgICAeAv9FwICfyAw/R8DIgOLQwAAAE9dBEAgA6gMAQtBgICAgHgL/RcD/QwPDw8PDw8PDw8PDw8PDw8P/XZBBP1rIC79UP1aAAAAICZBAWoiJiAoRw0ACwsL1AECBX8BfiMAQRBrIgQkAAJ/AkACQAJAIAAgAUcEQAJAAkAgAC0AACIGQS1HDQAgAEEBaiIAIAFHDQAMAQsjA0EcaiIFKAIAIQcgBUEANgIAIAAgBEEMaiADEEIQlAIhCQJAIAUoAgAiAARAIAQoAgwgAUcNASAAQcQARg0FDAQLIAUgBzYCACAEKAIMIAFGDQMLCwsgAkEENgIAQQAMAwsgCUL/////D1gNAQsgAkEENgIAQX8MAQtBACAJpyIAayAAIAZBLUYbCyEIIARBEGokACAIC5AFAQR/IwBBgAJrIgAkACAAIAI2AvgBIAAgATYC/AEgAxCIASEGIABBxAFqIAMgAEH3AWoQxQEjAEEQayICJAAgAEG4AWoiAUIANwIAIAFBADYCCCACQRBqJAAgASABLQALQQd2BH8gASgCCEH/////B3FBAWsFQQoLEDggAAJ/IAEtAAtBB3YEQCABKAIADAELIAELIgI2ArQBIAAgAEEQajYCDCAAQQA2AggDQAJAIABB/AFqIABB+AFqED8NACAAKAK0AQJ/IAEtAAtBB3YEQCABKAIEDAELIAEtAAtB/wBxCyACakYEQAJ/IAEtAAtBB3YEQCABKAIEDAELIAEtAAtB/wBxCyEDIAECfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQtBAXQQOCABIAEtAAtBB3YEfyABKAIIQf////8HcUEBawVBCgsQOCAAIAMCfyABLQALQQd2BEAgASgCAAwBCyABCyICajYCtAELAn8gAEH8AWoiBygCACIDKAIMIgggAygCEEYEQCADIAMoAgAoAiQRAQAMAQsgCC0AAAvAIAYgAiAAQbQBaiAAQQhqIAAsAPcBIABBxAFqIABBEGogAEEMakHAzgIQtgENACAHEF0aDAELCwJAAn8gAC0AzwFBB3YEQCAAKALIAQwBCyAALQDPAUH/AHELRQ0AIAAoAgwiAyAAQRBqa0GfAUoNACAAIANBBGo2AgwgAyAAKAIINgIACyAFIAIgACgCtAEgBCAGEMQDNgIAIABBxAFqIABBEGogACgCDCAEEGMgAEH8AWogAEH4AWoQPwRAIAQgBCgCAEECcjYCAAsgACgC/AEhCSABEDIaIABBxAFqEDIaIABBgAJqJAAgCQvZAQIFfwF+IwBBEGsiBCQAAn8CQAJAAkAgACABRwRAAkACQCAALQAAIgZBLUcNACAAQQFqIgAgAUcNAAwBCyMDQRxqIgUoAgAhByAFQQA2AgAgACAEQQxqIAMQQhCUAiEJAkAgBSgCACIABEAgBCgCDCABRw0BIABBxABGDQUMBAsgBSAHNgIAIAQoAgwgAUYNAwsLCyACQQQ2AgBBAAwDCyAJQv//A1gNAQsgAkEENgIAQf//AwwBC0EAIAmnIgBrIAAgBkEtRhsLIQggBEEQaiQAIAhB//8DcQuzAQIBfgN/IwBBEGsiBSQAAkACQCAAIAFHBEAjA0EcaiIGKAIAIQcgBkEANgIAIAAgBUEMaiADEEIQ+gIhBAJAIAYoAgAiAARAIAUoAgwgAUcNASAAQcQARg0DDAQLIAYgBzYCACAFKAIMIAFGDQMLCyACQQQ2AgBCACEEDAELIAJBBDYCACAEQgBVBEBC////////////ACEEDAELQoCAgICAgICAgH8hBAsgBUEQaiQAIAQLwQECBH8BfiMAQRBrIgQkAAJ/AkACQCAAIAFHBEAjA0EcaiIFKAIAIQYgBUEANgIAIAAgBEEMaiADEEIQ+gIhCAJAIAUoAgAiAARAIAQoAgwgAUcNASAAQcQARg0EDAMLIAUgBjYCACAEKAIMIAFGDQILCyACQQQ2AgBBAAwCCyAIQoCAgIB4Uw0AIAhC/////wdVDQAgCKcMAQsgAkEENgIAQf////8HIAhCAFUNABpBgICAgHgLIQcgBEEQaiQAIAcLiQIBA38jAEEQayIEJAAgAiABa0ECdSIFQe////8DTQRAAkAgBUECSQRAIAAgAC0AC0GAAXEgBXI6AAsgACAALQALQf8AcToACyAAIQMMAQsgBEEIaiAAIAVBAk8EfyAFQQRqQXxxIgMgA0EBayIDIANBAkYbBUEBC0EBahCxASAEKAIMGiAAIAQoAggiAzYCACAAIAAoAghBgICAgHhxIAQoAgxB/////wdxcjYCCCAAIAAoAghBgICAgHhyNgIIIAAgBTYCBAsDQCABIAJHBEAgAyABKAIANgIAIANBBGohAyABQQRqIQEMAQsLIARBADYCBCADIAQoAgQ2AgAgBEEQaiQADwsQSwALHQEBfyMAQRBrIgMkACAAIAEgAhDmAyADQRBqJAALogQCB38EfiMAQRBrIggkAAJAAkACQCACQSRMBEAgAC0AACIFDQEgACEEDAILIwNBHGpBHDYCAEIAIQMMAgsgACEEAkADQCAFwCIFQSBGIAVBCWtBBUlyRQ0BIAQtAAEhBSAEQQFqIQQgBQ0ACwwBCwJAIAQtAAAiBUEraw4DAAEAAQtBf0EAIAVBLUYbIQcgBEEBaiEECwJ/AkAgAkEQckEQRw0AIAQtAABBMEcNAEEBIQkgBC0AAUHfAXFB2ABGBEAgBEECaiEEQRAMAgsgBEEBaiEEIAJBCCACGwwBCyACQQogAhsLIgqtIQxBACECA0ACQEFQIQUCQCAELAAAIgZBMGtB/wFxQQpJDQBBqX8hBSAGQeEAa0H/AXFBGkkNAEFJIQUgBkHBAGtB/wFxQRlLDQELIAUgBmoiBiAKTg0AIAggDEIAIAtCABBfQQEhBQJAIAgpAwhCAFINACALIAx+Ig0gBq0iDkJ/hVYNACANIA58IQtBASEJIAIhBQsgBEEBaiEEIAUhAgwBCwsgAQRAIAEgBCAAIAkbNgIACwJAAkAgAgRAIwNBHGpBxAA2AgAgB0EAIANCAYMiDFAbIQcgAyELDAELIAMgC1YNASADQgGDIQwLAkAgDKcNACAHDQAjA0EcakHEADYCACADQgF9IQMMAgsgAyALWg0AIwNBHGpBxAA2AgAMAQsgCyAHrCIDhSADfSEDCyAIQRBqJAAgAwsvAQJ/IwMiAigCYCEBIAAEQCACQejVNCAAIABBf0YbNgJgC0F/IAEgAUHo1TRGGwuqCAEEfyABKAIAIQQCQAJAAkACQAJAAkACQAJ/AkACQAJAAkAgA0UNACADKAIAIgVFDQAgAEUEQCACIQMMAwsgA0EANgIAIAIhAwwBCwJAIwMoAmAoAgBFBEAgAEUNASACRQ0MIAIhBQNAIAQsAAAiAwRAIAAgA0H/vwNxNgIAIABBBGohACAEQQFqIQQgBUEBayIFDQEMDgsLIABBADYCACABQQA2AgAgAiAFaw8LIAIhAyAARQ0DDAULIAQQZw8LQQEhBgwDC0EADAELQQELIQYDQCAGRQRAIAQtAABBA3YiBkEQayAFQRp1IAZqckEHSw0DAn8gBEEBaiAFQYCAgBBxRQ0AGiAELQABQcABcUGAAUcEQCAEQQFrIQQMBwsgBEECaiAFQYCAIHFFDQAaIAQtAAJBwAFxQYABRwRAIARBAWshBAwHCyAEQQNqCyEEIANBAWshA0EBIQYMAQsDQCAELQAAIQUCQCAEQQNxDQAgBUEBa0H+AEsNACAEKAIAIgVBgYKECGsgBXJBgIGChHhxDQADQCADQQRrIQMgBCgCBCEFIARBBGohBCAFIAVBgYKECGtyQYCBgoR4cUUNAAsLIAVB/wFxIgZBAWtB/gBNBEAgA0EBayEDIARBAWohBAwBCwsgBkHCAWsiBkEySw0DIARBAWohBCAGQQJ0QaCzAmooAgAhBUEAIQYMAAsACwNAIAZFBEAgA0UNBwNAAkACQAJAIAQtAAAiBkEBayIHQf4ASwRAIAYhBQwBCyADQQVJDQEgBEEDcQ0BAkADQCAEKAIAIgVBgYKECGsgBXJBgIGChHhxDQEgACAFQf8BcTYCACAAIAQtAAE2AgQgACAELQACNgIIIAAgBC0AAzYCDCAAQRBqIQAgBEEEaiEEIANBBGsiA0EESw0ACyAELQAAIQULIAVB/wFxIgZBAWshBwsgB0H+AEsNAQsgACAGNgIAIABBBGohACAEQQFqIQQgA0EBayIDDQEMCQsLIAZBwgFrIgZBMksNAyAEQQFqIQQgBkECdEGgswJqKAIAIQVBASEGDAELIAQtAAAiBkEDdiIHQRBrIAcgBUEadWpyQQdLDQECQAJAAn8gBEEBaiAGQYABayAFQQZ0ciIGQQBODQAaIAQtAAFBgAFrIgdBP0sNASAEQQJqIAcgBkEGdHIiBkEATg0AGiAELQACQYABayIHQT9LDQEgByAGQQZ0ciEGIARBA2oLIQQgACAGNgIAIANBAWshAyAAQQRqIQAMAQsjA0EcakEZNgIAIARBAWshBAwFC0EAIQYMAAsACyAEQQFrIQQgBQ0BIAQtAAAhBQsgBUH/AXENACAABEAgAEEANgIAIAFBADYCAAsgAiADaw8LIwNBHGpBGTYCACAARQ0BCyABIAQ2AgALQX8PCyABIAQ2AgAgAgsuACAAQQBHIABBqLUCR3EgAEHAtQJHcSAAQcjsNEdxIABB4Ow0R3EEQCAAEC8LCykBAn8jAEEQayICJAAgAiABNgIMIABB2h0gARDRAyEDIAJBEGokACADC+YCAQN/AkAgAS0AAA0AQYArEKQCIgEEQCABLQAADQELIABBDGxB4LUCahCkAiIBBEAgAS0AAA0BC0GPKxCkAiIBBEAgAS0AAA0BC0GoMSEBCwJAA0ACQCABIAJqLQAAIgRFDQAgBEEvRg0AQRchBCACQQFqIgJBF0cNAQwCCwsgAiEEC0GoMSEDAkACQAJAAkACQCABLQAAIgJBLkYNACABIARqLQAADQAgASEDIAJBwwBHDQELIAMtAAFFDQELIANBqDEQngFFDQAgA0GaKBCeAQ0BCyAARQRAQYS1AiECIAMtAAFBLkYNAgtBAA8LQcTsNCgCACICBEADQCADIAJBCGoQngFFDQIgAigCICICDQALC0EkEEMiAgRAIAJBhLUCKQIANwIAIAJBCGoiASADIAQQexogASAEakEAOgAAIAJBxOw0KAIANgIgQcTsNCACNgIACyACQYS1AiAAIAJyGyECCyACC6sfAhF/BX4jAEGQAWsiAyQAIANBAEGQAfwLACADQX82AkwgAyAANgIsIANBsQE2AiAgAyAANgJUIAEhBCACIQ1BACEAIwBBsAJrIgYkACADKAJMQQBOBEAgAxCOASERCwJAAkACQAJAIAMoAgQNACADEL8CGiADKAIEDQAMAQsgBC0AACIBRQ0CAkACQAJAAkADQAJAAkAgAUH/AXEiAUEgRiABQQlrQQVJcgRAA0AgBCIBQQFqIQQgAS0AASICQSBGIAJBCWtBBUlyDQALIANCABCBAQNAAn8gAygCBCICIAMoAmhHBEAgAyACQQFqNgIEIAItAAAMAQsgAxA7CyICQSBGIAJBCWtBBUlyDQALIAMoAgQhBCADKQNwQgBZBEAgAyAEQQFrIgQ2AgQLIAQgAygCLGusIAMpA3ggFnx8IRYMAQsCfwJAAkAgBC0AAEElRgRAIAQtAAEiAUEqRg0BIAFBJUcNAgsgA0IAEIEBAkAgBC0AAEElRgRAA0ACfyADKAIEIgEgAygCaEcEQCADIAFBAWo2AgQgAS0AAAwBCyADEDsLIgFBIEYgAUEJa0EFSXINAAsgBEEBaiEEDAELIAMoAgQiASADKAJoRwRAIAMgAUEBajYCBCABLQAAIQEMAQsgAxA7IQELIAQtAAAgAUcEQCADKQNwQgBZBEAgAyADKAIEQQFrNgIECyABQQBODQ1BACEHIA4NDQwLCyADKAIEIAMoAixrrCADKQN4IBZ8fCEWIAQhAQwDC0EAIQggBEECagwBCwJAIAFBMGtBCk8NACAELQACQSRHDQAgBC0AAUEwayEBIwBBEGsiAiANNgIMIAIgDSABQQJ0QQRrQQAgAUEBSxtqIgFBBGo2AgggASgCACEIIARBA2oMAQsgDSgCACEIIA1BBGohDSAEQQFqCyEBQQAhDEEAIQQgAS0AAEEwa0EKSQRAA0AgAS0AACAEQQpsakEwayEEIAEtAAEhEyABQQFqIQEgE0Ewa0EKSQ0ACwsgAS0AACIJQe0ARwR/IAEFQQAhCiAIQQBHIQwgAS0AASEJQQAhACABQQFqCyICQQFqIQFBAyEFIAwhBwJAAkACQAJAAkACQCAJQcEAaw46BAwEDAQEBAwMDAwDDAwMDAwMBAwMDAwEDAwEDAwMDAwEDAQEBAQEAAQFDAEMBAQEDAwEAgQMDAQMAgwLIAJBAmogASACLQABQegARiICGyEBQX5BfyACGyEFDAQLIAJBAmogASACLQABQewARiICGyEBQQNBASACGyEFDAMLQQEhBQwCC0ECIQUMAQtBACEFIAIhAQtBASAFIAEtAAAiAkEvcUEDRiIFGyEPAkAgAkEgciACIAUbIgtB2wBGDQACQCALQe4ARwRAIAtB4wBHDQFBASAEIARBAUwbIQQMAgsgCCAPIBYQ0gMMAgsgA0IAEIEBA0ACfyADKAIEIgIgAygCaEcEQCADIAJBAWo2AgQgAi0AAAwBCyADEDsLIgJBIEYgAkEJa0EFSXINAAsgAygCBCECIAMpA3BCAFkEQCADIAJBAWsiAjYCBAsgAiADKAIsa6wgAykDeCAWfHwhFgsgAyAErCIUEIEBAkAgAygCBCICIAMoAmhHBEAgAyACQQFqNgIEDAELIAMQO0EASA0GCyADKQNwQgBZBEAgAyADKAIEQQFrNgIEC0EQIQICQAJAAkACQAJAAkACQAJAAkACQCALQdgAaw4hBgkJAgkJCQkJAQkCBAEBAQkFCQkJCQkDBgkJAgkECQkGAAsgC0HBAGsiAkEGSw0IQQEgAnRB8QBxRQ0ICyAGQQhqIAMgD0EAENUDIAMpA3hCACADKAIEIAMoAixrrH1SDQUMDAsgC0EQckHzAEYEQCAGQSBqQX9BgQIQvwEgBkEAOgAgIAtB8wBHDQYgBkEAOgBBIAZBADoALiAGQQA2ASoMBgsgBkEgaiABLQABIgJB3gBGIgVBgQIQvwEgBkEAOgAgIAFBAmogAUEBaiAFGyEHAn8CQAJAIAFBAkEBIAUbai0AACIBQS1HBEAgAUHdAEYNASACQd4ARyEFIAcMAwsgBiACQd4ARyIFOgBODAELIAYgAkHeAEciBToAfgsgB0EBagshAQNAAkAgAS0AACICQS1HBEAgAkUNDyACQd0ARg0IDAELQS0hAiABLQABIgdFDQAgB0HdAEYNACABQQFqIQkCQCAHIAFBAWstAAAiAU0EQCAHIQIMAQsDQCABQQFqIgEgBkEgamogBToAACABIAktAAAiAkkNAAsLIAkhAQsgAiAGaiAFOgAhIAFBAWohAQwACwALQQghAgwCC0EKIQIMAQtBACECC0IAIRRBACEFQQAhB0EAIQkjAEEQayIQJAACQCACQQFHIAJBJE1xRQRAIwNBHDYCHAwBCwNAAn8gAygCBCIEIAMoAmhHBEAgAyAEQQFqNgIEIAQtAAAMAQsgAxA7CyIEQSBGIARBCWtBBUlyDQALAkACQCAEQStrDgMAAQABC0F/QQAgBEEtRhshCSADKAIEIgQgAygCaEcEQCADIARBAWo2AgQgBC0AACEEDAELIAMQOyEECwJAAkACQAJAAkAgAkEARyACQRBHcQ0AIARBMEcNAAJ/IAMoAgQiBCADKAJoRwRAIAMgBEEBajYCBCAELQAADAELIAMQOwsiBEFfcUHYAEYEQEEQIQICfyADKAIEIgQgAygCaEcEQCADIARBAWo2AgQgBC0AAAwBCyADEDsLIgRBkbECai0AAEEQSQ0DIAMpA3BCAFkEQCADIAMoAgRBAWs2AgQLIANCABCBAQwGCyACDQFBCCECDAILIAJBCiACGyICIARBkbECai0AAEsNACADKQNwQgBZBEAgAyADKAIEQQFrNgIECyADQgAQgQEjA0EcNgIcDAQLIAJBCkcNACAEQTBrIgVBCU0EQEEAIQQDQCAEQQpsIAVqIgRBmbPmzAFJAn8gAygCBCICIAMoAmhHBEAgAyACQQFqNgIEIAItAAAMAQsgAxA7C0EwayIFQQlNcQ0ACyAErSEUCyAFQQlLDQIgFEIKfiEVIAWtIRcDQAJ/IAMoAgQiAiADKAJoRwRAIAMgAkEBajYCBCACLQAADAELIAMQOwsiBEEwayIFQQlNIBUgF3wiFEKas+bMmbPmzBlUcUUEQEEKIQIgBUEJTQ0DDAQLIBRCCn4iFSAFrSIXQn+FWA0AC0EKIQIMAQsgAiACQQFrcQRAIARBkbECai0AACIHIAJJBEADQCAHIAIgBWxqIgVBx+PxOEkCfyADKAIEIgQgAygCaEcEQCADIARBAWo2AgQgBC0AAAwBCyADEDsLIgRBkbECai0AACIHIAJJcQ0ACyAFrSEUCyACIAdNDQEgAq0hFQNAIBQgFX4iFyAHrUL/AYMiGEJ/hVYNAiAXIBh8IRQgAgJ/IAMoAgQiBCADKAJoRwRAIAMgBEEBajYCBCAELQAADAELIAMQOwsiBEGRsQJqLQAAIgdNDQIgECAVQgAgFEIAEF8gECkDCFANAAsMAQsgAkEXbEEFdkEHcUGRswJqLAAAIRIgBEGRsQJqLQAAIgUgAkkEQANAIAUgByASdHIiB0GAgIDAAEkCfyADKAIEIgQgAygCaEcEQCADIARBAWo2AgQgBC0AAAwBCyADEDsLIgRBkbECai0AACIFIAJJcQ0ACyAHrSEUCyACIAVNDQBCfyASrSIViCIXIBRUDQADQCAFrUL/AYMgFCAVhoQhFCACAn8gAygCBCIEIAMoAmhHBEAgAyAEQQFqNgIEIAQtAAAMAQsgAxA7CyIEQZGxAmotAAAiBU0NASAUIBdYDQALCyACIARBkbECai0AAE0NAANAIAICfyADKAIEIgQgAygCaEcEQCADIARBAWo2AgQgBC0AAAwBCyADEDsLQZGxAmotAABLDQALIwNBxAA2AhxBACEJQn8hFAsgAykDcEIAWQRAIAMgAygCBEEBazYCBAsCQCAUQn9SDQALIBQgCawiFYUgFX0hFAsgEEEQaiQAIBQhFSADKQN4QgAgAygCBCADKAIsa6x9UQ0HAkAgC0HwAEcNACAIRQ0AIAggFD4CAAwDCyAIIA8gFRDSAwwCCyAIRQ0BIAYpAxAhFCAGKQMIIRUCQAJAAkAgDw4DAAECBAsgCCAVIBQQ0wM4AgAMAwsgCCAVIBQQrwI5AwAMAgsgCCAVNwMAIAggFDcDCAwBC0EfIARBAWogC0HjAEciCRshBQJAIA9BAUYEQCAIIQIgDARAIAVBAnQQQyICRQ0HCyAGQgA3AqgCQQAhBANAIAIhAAJAA0ACfyADKAIEIgIgAygCaEcEQCADIAJBAWo2AgQgAi0AAAwBCyADEDsLIgIgBmotACFFDQEgBiACOgAbIAZBHGogBkEbakEBIAZBqAJqEOMBIgJBfkYNAEEAIQogAkF/Rg0LIAAEQCAAIARBAnRqIAYoAhw2AgAgBEEBaiEECyAMRQ0AIAQgBUcNAAtBASEHIAAgBUEBdEEBciIFQQJ0EMcBIgINAQwLCwtBACEKIAAhBSAGQagCagR/IAYoAqgCBUEACw0IDAELIAwEQEEAIQQgBRBDIgJFDQYDQCACIQADQAJ/IAMoAgQiAiADKAJoRwRAIAMgAkEBajYCBCACLQAADAELIAMQOwsiAiAGai0AIUUEQEEAIQUgACEKDAQLIAAgBGogAjoAACAEQQFqIgQgBUcNAAtBASEHIAAgBUEBdEEBciIFEMcBIgINAAsgACEKQQAhAAwJC0EAIQQgCARAA0ACfyADKAIEIgAgAygCaEcEQCADIABBAWo2AgQgAC0AAAwBCyADEDsLIgAgBmotACEEQCAEIAhqIAA6AAAgBEEBaiEEDAEFQQAhBSAIIgAhCgwDCwALAAsDQAJ/IAMoAgQiACADKAJoRwRAIAMgAEEBajYCBCAALQAADAELIAMQOwsgBmotACENAAtBACEAQQAhCkEAIQULIAMoAgQhAiADKQNwQgBZBEAgAyACQQFrIgI2AgQLIAMpA3ggAiADKAIsa6x8IhVQDQIgCSAUIBVRckUNAiAMBEAgCCAANgIACwJAIAtB4wBGDQAgBQRAIAUgBEECdGpBADYCAAsgCkUEQEEAIQoMAQsgBCAKakEAOgAACyAFIQALIAMoAgQgAygCLGusIAMpA3ggFnx8IRYgDiAIQQBHaiEOCyABQQFqIQQgAS0AASIBDQEMCAsLIAUhAAwBC0EBIQdBACEKQQAhAAwCCyAMIQcMAwsgDCEHCyAODQELQX8hDgsgB0UNACAKEC8gABAvCyARBEAgAxCNAQsgBkGwAmokACADQZABaiQAIA4LQwACQCAARQ0AAkACQAJAAkAgAUECag4GAAECAgQDBAsgACACPAAADwsgACACPQEADwsgACACPgIADwsgACACNwMACwu1AwIDfwF+IwBBIGsiAyQAAkAgAUL///////////8AgyIFQoCAgICAgMDAP30gBUKAgICAgIDAv8AAfVQEQCABQhmIpyEEIABQIAFC////D4MiBUKAgIAIVCAFQoCAgAhRG0UEQCAEQYGAgIAEaiECDAILIARBgICAgARqIQIgACAFQoCAgAiFhEIAUg0BIAIgBEEBcWohAgwBCyAAUCAFQoCAgICAgMD//wBUIAVCgICAgICAwP//AFEbRQRAIAFCGYinQf///wFxQYCAgP4HciECDAELQYCAgPwHIQIgBUL///////+/v8AAVg0AQQAhAiAFQjCIpyIEQZH+AEkNACADQRBqIAAgAUL///////8/g0KAgICAgIDAAIQiBSAEQYH+AGsQZSADIAAgBUGB/wAgBGsQqAEgAykDCCIAQhmIpyECIAMpAwAgAykDECADKQMYhEIAUq2EIgVQIABC////D4MiAEKAgIAIVCAAQoCAgAhRG0UEQCACQQFqIQIMAQsgBSAAQoCAgAiFhEIAUg0AIAJBAXEgAmohAgsgA0EgaiQAIAIgAUIgiKdBgICAgHhxcr4LjQQCBX8BfgJAAkACQAJAAkACfyAAKAIEIgIgACgCaEcEQCAAIAJBAWo2AgQgAi0AAAwBCyAAEDsLIgJBK2sOAwABAAELIAJBLUYhBQJ/IAAoAgQiAyAAKAJoRwRAIAAgA0EBajYCBCADLQAADAELIAAQOwsiA0E6ayEEIAFFDQEgBEF1Sw0BIAApA3BCAFMNAiAAIAAoAgRBAWs2AgQMAgsgAkE6ayEEIAIhAwsgBEF2SQ0AAkAgA0Ewa0EKTw0AQQAhAgNAIAMgAkEKbGohBgJ/IAAoAgQiAiAAKAJoRwRAIAAgAkEBajYCBCACLQAADAELIAAQOwshAyAGQTBrIQIgAkHMmbPmAEggA0EwayIBQQlNcQ0ACyACrCEHIAFBCk8NAANAIAOtIAdCCn58IQcCfyAAKAIEIgEgACgCaEcEQCAAIAFBAWo2AgQgAS0AAAwBCyAAEDsLIgNBMGsiAUEJTSAHQjB9IgdCro+F18fC66MBU3ENAAsgAUEKTw0AA0ACfyAAKAIEIgEgACgCaEcEQCAAIAFBAWo2AgQgAS0AAAwBCyAAEDsLQTBrQQpJDQALCyAAKQNwQgBZBEAgACAAKAIEQQFrNgIEC0IAIAd9IAcgBRshBwwBC0KAgICAgICAgIB/IQcgACkDcEIAUw0AIAAgACgCBEEBazYCBEKAgICAgICAgIB/DwsgBwvbMgMRfwd+AXwjAEEwayIOJAACQCACQQJNBEAgAkECdCICQfywAmooAgAhEiACQfCwAmooAgAhEQNAAn8gASgCBCICIAEoAmhHBEAgASACQQFqNgIEIAItAAAMAQsgARA7CyICQSBGIAJBCWtBBUlyDQALQQEhCQJAAkAgAkEraw4DAAEAAQtBf0EBIAJBLUYbIQkgASgCBCICIAEoAmhHBEAgASACQQFqNgIEIAItAAAhAgwBCyABEDshAgsCQAJAA0AgBkHECGosAAAgAkEgckYEQAJAIAZBBksNACABKAIEIgIgASgCaEcEQCABIAJBAWo2AgQgAi0AACECDAELIAEQOyECCyAGQQFqIgZBCEcNAQwCCwsgBkEDRwRAIAZBCEYiDA0BIANFDQIgBkEESQ0CIAwNAQsgASkDcCIVQgBZBEAgASABKAIEQQFrNgIECyADRQ0AIAZBBEkNACAVQgBTIQIDQCACRQRAIAEgASgCBEEBazYCBAsgBkEBayIGQQNLDQALC0IAIRUjAEEQayIDJAACfiAJskMAAIB/lLwiAkH/////B3EiAUGAgIAEa0H////3B00EQCABrUIZhkKAgICAgICAwD98DAELIAKtQhmGQoCAgICAgMD//wCEIAFBgICA/AdPDQAaQgAgAUUNABogAyABrUIAIAFnIgFB0QBqEGUgAykDACEVIAMpAwhCgICAgICAwACFQYn/ACABa61CMIaECyEWIA4gFTcDACAOIBYgAkGAgICAeHGtQiCGhDcDCCADQRBqJAAgDikDCCEVIA4pAwAhFgwCCwJAAkACQCAGDQBBACEGA0AgBkHVF2osAAAgAkEgckcNAQJAIAZBAUsNACABKAIEIgIgASgCaEcEQCABIAJBAWo2AgQgAi0AACECDAELIAEQOyECCyAGQQFqIgZBA0cNAAsMAQsCQAJAIAYOBAABAQIBCwJAIAJBMEcNAAJ/IAEoAgQiDCABKAJoRwRAIAEgDEEBajYCBCAMLQAADAELIAEQOwtBX3FB2ABGBEAjAEGwA2siBSQAAn8gASgCBCICIAEoAmhHBEAgASACQQFqNgIEIAItAAAMAQsgARA7CyEGAkACfwNAAkAgBkEwRwRAIAZBLkcNBCABKAIEIgIgASgCaEYNASABIAJBAWo2AgQgAi0AAAwDCyABKAIEIgIgASgCaEcEQCABIAJBAWo2AgQgAi0AACEGBSABEDshBgtBASEQDAELCyABEDsLIQZBASELIAZBMEcNAANAIBhCAX0hGAJ/IAEoAgQiAiABKAJoRwRAIAEgAkEBajYCBCACLQAADAELIAEQOwsiBkEwRg0AC0EBIRALQoCAgICAgMD/PyEWA0ACQCAGQSByIQ0CQAJAIAZBMGsiDEEKSQ0AIAZBLkciAiANQeEAa0EFS3ENAiACDQAgCw0CQQEhCyAVIRgMAQsgDUHXAGsgDCAGQTlKGyECAkAgFUIHVwRAIAIgB0EEdGohBwwBCyAVQhxYBEAgBUEwaiACEHcgBUEgaiAaIBZCAEKAgICAgIDA/T8QRiAFQRBqIAUpAzAgBSkDOCAFKQMgIhogBSkDKCIWEEYgBSAFKQMQIAUpAxggFyAZEHIgBSkDCCEZIAUpAwAhFwwBCyACRQ0AIAgNACAFQdAAaiAaIBZCAEKAgICAgICA/z8QRiAFQUBrIAUpA1AgBSkDWCAXIBkQciAFKQNIIRlBASEIIAUpA0AhFwsgFUIBfCEVQQEhEAsgASgCBCICIAEoAmhHBH8gASACQQFqNgIEIAItAAAFIAEQOwshBgwBCwsCfiAQRQRAAkACQCABKQNwQgBZBEAgASABKAIEIgJBAWs2AgQgA0UNASABIAJBAms2AgQgC0UNAiABIAJBA2s2AgQMAgsgAw0BCyABQgAQgQELIAVB4ABqIAm3RAAAAAAAAAAAohCJASAFKQNgIRcgBSkDaAwBCyAVQgdXBEAgFSEWA0AgB0EEdCEHIBZCAXwiFkIIUg0ACwsCQAJAAkAgBkFfcUHQAEYEQCABIAMQ1AMiFkKAgICAgICAgIB/Ug0DIAMEQCABKQNwQgBZDQIMAwtCACEXIAFCABCBAUIADAQLQgAhFiABKQNwQgBTDQILIAEgASgCBEEBazYCBAtCACEWCyAHRQRAIAVB8ABqIAm3RAAAAAAAAAAAohCJASAFKQNwIRcgBSkDeAwBCyAYIBUgCxtCAoYgFnxCIH0iFUEAIBJrrVUEQCMDQRxqQcQANgIAIAVBoAFqIAkQdyAFQZABaiAFKQOgASAFKQOoAUJ/Qv///////7///wAQRiAFQYABaiAFKQOQASAFKQOYAUJ/Qv///////7///wAQRiAFKQOAASEXIAUpA4gBDAELIBJB4gFrrCAVVwRAIAdBAE4EQANAIAVBoANqIBcgGUIAQoCAgICAgMD/v38QciAXIBlCgICAgICAgP8/ENoDIQEgBUGQA2ogFyAZIAUpA6ADIBcgAUEATiIBGyAFKQOoAyAZIAEbEHIgFUIBfSEVIAUpA5gDIRkgBSkDkAMhFyAHQQF0IAFyIgdBAE4NAAsLAn4gFSASrH1CIHwiFqciAUEAIAFBAEobIBEgFiARrVMbIgFB8QBOBEAgBUGAA2ogCRB3IAUpA4gDIRggBSkDgAMhGkIADAELIAVB4AJqRAAAAAAAAPA/QZABIAFrEKkBEIkBIAVB0AJqIAkQdyAFQfACaiAFKQPgAiAFKQPoAiAFKQPQAiIaIAUpA9gCIhgQ2QMgBSkD+AIhGyAFKQPwAgshFiAFQcACaiAHIAdBAXFFIBcgGUIAQgAQpgFBAEcgAUEgSHFxIgFqELgBIAVBsAJqIBogGCAFKQPAAiAFKQPIAhBGIAVBkAJqIAUpA7ACIAUpA7gCIBYgGxByIAVBoAJqIBogGEIAIBcgARtCACAZIAEbEEYgBUGAAmogBSkDoAIgBSkDqAIgBSkDkAIgBSkDmAIQciAFQfABaiAFKQOAAiAFKQOIAiAWIBsQpQIgBSkD8AEiGCAFKQP4ASIWQgBCABCmAUUEQCMDQRxqQcQANgIACyAFQeABaiAYIBYgFacQ2AMgBSkD4AEhFyAFKQPoAQwBCyMDQRxqQcQANgIAIAVB0AFqIAkQdyAFQcABaiAFKQPQASAFKQPYAUIAQoCAgICAgMAAEEYgBUGwAWogBSkDwAEgBSkDyAFCAEKAgICAgIDAABBGIAUpA7ABIRcgBSkDuAELIRUgDiAXNwMQIA4gFTcDGCAFQbADaiQAIA4pAxghFSAOKQMQIRYMBgsgASkDcEIAUw0AIAEgASgCBEEBazYCBAsgASEIIAIhByAJIQwgAyEJQQAhAyMAQZDGAGsiBCQAQQAgEmsiDSARayEUAkACfwNAAkAgB0EwRwRAIAdBLkcNBCAIKAIEIgEgCCgCaEYNASAIIAFBAWo2AgQgAS0AAAwDCyAIKAIEIgEgCCgCaEcEQCAIIAFBAWo2AgQgAS0AACEHBSAIEDshBwtBASEDDAELCyAIEDsLIQdBASEQIAdBMEcNAANAIBVCAX0hFQJ/IAgoAgQiASAIKAJoRwRAIAggAUEBajYCBCABLQAADAELIAgQOwsiB0EwRg0AC0EBIQMLIARBADYCkAYgB0EwayECAn4CQAJAAkACQAJAAkAgB0EuRiIBDQAgAkEJTQ0ADAELA0ACQCABQQFxBEAgEEUEQCAWIRVBASEQDAILIANFIQEMBAsgFkIBfCEWIAtB/A9MBEAgDyAWpyAHQTBGGyEPIARBkAZqIAtBAnRqIgEgCgR/IAcgASgCAEEKbGpBMGsFIAILNgIAQQEhA0EAIApBAWoiASABQQlGIgEbIQogASALaiELDAELIAdBMEYNACAEIAQoAoBGQQFyNgKARkHcjwEhDwsCfyAIKAIEIgEgCCgCaEcEQCAIIAFBAWo2AgQgAS0AAAwBCyAIEDsLIgdBMGshAiAHQS5GIgENACACQQpJDQALCyAVIBYgEBshFQJAIANFDQAgB0FfcUHFAEcNAAJAIAggCRDUAyIXQoCAgICAgICAgH9SDQAgCUUNBEIAIRcgCCkDcEIAUw0AIAggCCgCBEEBazYCBAsgFSAXfCEVDAQLIANFIQEgB0EASA0BCyAIKQNwQgBTDQAgCCAIKAIEQQFrNgIECyABRQ0BIwNBHGpBHDYCAAsgCEIAEIEBQgAhFUIADAELIAQoApAGIgFFBEAgBCAMt0QAAAAAAAAAAKIQiQEgBCkDCCEVIAQpAwAMAQsCQCAWQglVDQAgFSAWUg0AIBFBHkxBACABIBF2Gw0AIARBMGogDBB3IARBIGogARC4ASAEQRBqIAQpAzAgBCkDOCAEKQMgIAQpAygQRiAEKQMYIRUgBCkDEAwBCyANQQF2rSAVUwRAIwNBHGpBxAA2AgAgBEHgAGogDBB3IARB0ABqIAQpA2AgBCkDaEJ/Qv///////7///wAQRiAEQUBrIAQpA1AgBCkDWEJ/Qv///////7///wAQRiAEKQNIIRUgBCkDQAwBCyASQeIBa6wgFVUEQCMDQRxqQcQANgIAIARBkAFqIAwQdyAEQYABaiAEKQOQASAEKQOYAUIAQoCAgICAgMAAEEYgBEHwAGogBCkDgAEgBCkDiAFCAEKAgICAgIDAABBGIAQpA3ghFSAEKQNwDAELIAoEQCAKQQhMBEAgBEGQBmogC0ECdGoiASgCACEGA0AgBkEKbCEGIApBAWoiCkEJRw0ACyABIAY2AgALIAtBAWohCwsgFachCgJAIA9BCU4NACAKIA9IDQAgCkERSg0AIApBCUYEQCAEQcABaiAMEHcgBEGwAWogBCgCkAYQuAEgBEGgAWogBCkDwAEgBCkDyAEgBCkDsAEgBCkDuAEQRiAEKQOoASEVIAQpA6ABDAILIApBCEwEQCAEQZACaiAMEHcgBEGAAmogBCgCkAYQuAEgBEHwAWogBCkDkAIgBCkDmAIgBCkDgAIgBCkDiAIQRiAEQeABakEAIAprQQJ0QfCwAmooAgAQdyAEQdABaiAEKQPwASAEKQP4ASAEKQPgASAEKQPoARDXAyAEKQPYASEVIAQpA9ABDAILIBEgCkF9bGpBG2oiAkEeTEEAIAQoApAGIgEgAnYbDQAgBEHgAmogDBB3IARB0AJqIAEQuAEgBEHAAmogBCkD4AIgBCkD6AIgBCkD0AIgBCkD2AIQRiAEQbACaiAKQQJ0QaiwAmooAgAQdyAEQaACaiAEKQPAAiAEKQPIAiAEKQOwAiAEKQO4AhBGIAQpA6gCIRUgBCkDoAIMAQsDQCAEQZAGaiALIgFBAWsiC0ECdGooAgBFDQALQQAhDwJAIApBCW8iA0UEQEEAIQIMAQtBACECIANBCWogAyAKQQBIGyEFAkAgAUUEQEEAIQEMAQtBgJTr3ANBACAFa0ECdEHwsAJqKAIAIhBtIQ1BACEHQQAhBgNAIARBkAZqIgsgBkECdGoiAyAHIAMoAgAiCCAQbiIJaiIDNgIAIAJBAWpB/w9xIAIgA0UgAiAGRnEiAxshAiAKQQlrIAogAxshCiANIAggCSAQbGtsIQcgBkEBaiIGIAFHDQALIAdFDQAgAUECdCALaiAHNgIAIAFBAWohAQsgCiAFa0EJaiEKCwNAIARBkAZqIAJBAnRqIQcCQANAIApBJE4EQCAKQSRHDQIgBygCAEHR6fkETw0CCyABQf8PaiELQQAhAwNAIAEhCSADrSAEQZAGaiALQf8PcSINQQJ0aiIBNQIAQh2GfCIVQoGU69wDVAR/QQAFIBUgFUKAlOvcA4AiFkKAlOvcA359IRUgFqcLIQMgASAVpyIBNgIAIAkgCSAJIA0gARsgAiANRhsgDSAJQQFrQf8PcSIIRxshASANQQFrIQsgAiANRw0ACyAPQR1rIQ8gCSEBIANFDQALIAJBAWtB/w9xIgIgAUYEQCAEQZAGaiIJIAFB/g9qQf8PcUECdGoiASABKAIAIAhBAnQgCWooAgByNgIAIAghAQsgCkEJaiEKIARBkAZqIAJBAnRqIAM2AgAMAQsLAkADQCABQQFqQf8PcSEJIARBkAZqIAFBAWtB/w9xQQJ0aiEFA0BBCUEBIApBLUobIRMCQANAIAIhA0EAIQYCQANAAkAgAyAGakH/D3EiAiABRg0AIARBkAZqIAJBAnRqKAIAIgggBkECdEHAsAJqKAIAIgJJDQAgAiAISQ0CIAZBAWoiBkEERw0BCwsgCkEkRw0AQgAhFUEAIQZCACEWA0AgASADIAZqQf8PcSICRgRAIAFBAWpB/w9xIgFBAnQgBGpBADYCjAYLIARBgAZqIARBkAZqIAJBAnRqKAIAELgBIARB8AVqIBUgFkIAQoCAgIDlmreOwAAQRiAEQeAFaiAEKQPwBSAEKQP4BSAEKQOABiAEKQOIBhByIAQpA+gFIRYgBCkD4AUhFSAGQQFqIgZBBEcNAAsgBEHQBWogDBB3IARBwAVqIBUgFiAEKQPQBSAEKQPYBRBGIAQpA8gFIRZCACEVIAQpA8AFIRcgD0HxAGoiCCASayILQQAgC0EAShsgESALIBFIIgkbIgdB8ABMDQIMBQsgDyATaiEPIAEhAiABIANGDQALQYCU69wDIBN2IRBBfyATdEF/cyENQQAhBiADIQIDQCAEQZAGaiIHIANBAnRqIgggBiAIKAIAIgsgE3ZqIgg2AgAgAkEBakH/D3EgAiAIRSACIANGcSIIGyECIApBCWsgCiAIGyEKIAsgDXEgEGwhBiADQQFqQf8PcSIDIAFHDQALIAZFDQEgAiAJRwRAIAFBAnQgB2ogBjYCACAJIQEMAwsgBSAFKAIAQQFyNgIADAELCwsgBEGQBWpEAAAAAAAA8D9B4QEgB2sQqQEQiQEgBEGwBWogBCkDkAUgBCkDmAUgFyAWENkDIAQpA7gFIRogBCkDsAUhGSAEQYAFakQAAAAAAADwP0HxACAHaxCpARCJASAEQaAFaiAXIBYgBCkDgAUgBCkDiAUQ1gMgBEHwBGogFyAWIAQpA6AFIhUgBCkDqAUiGBClAiAEQeAEaiAZIBogBCkD8AQgBCkD+AQQciAEKQPoBCEWIAQpA+AEIRcLAkAgA0EEakH/D3EiAiABRg0AAkAgBEGQBmogAkECdGooAgAiAkH/ybXuAU0EQCACRSADQQVqQf8PcSABRnENASAEQfADaiAMt0QAAAAAAADQP6IQiQEgBEHgA2ogFSAYIAQpA/ADIAQpA/gDEHIgBCkD6AMhGCAEKQPgAyEVDAELIAJBgMq17gFHBEAgBEHQBGogDLdEAAAAAAAA6D+iEIkBIARBwARqIBUgGCAEKQPQBCAEKQPYBBByIAQpA8gEIRggBCkDwAQhFQwBCyAMtyEcIAEgA0EFakH/D3FGBEAgBEGQBGogHEQAAAAAAADgP6IQiQEgBEGABGogFSAYIAQpA5AEIAQpA5gEEHIgBCkDiAQhGCAEKQOABCEVDAELIARBsARqIBxEAAAAAAAA6D+iEIkBIARBoARqIBUgGCAEKQOwBCAEKQO4BBByIAQpA6gEIRggBCkDoAQhFQsgB0HvAEoNACAEQdADaiAVIBhCAEKAgICAgIDA/z8Q1gMgBCkD0AMgBCkD2ANCAEIAEKYBDQAgBEHAA2ogFSAYQgBCgICAgICAwP8/EHIgBCkDyAMhGCAEKQPAAyEVCyAEQbADaiAXIBYgFSAYEHIgBEGgA2ogBCkDsAMgBCkDuAMgGSAaEKUCIAQpA6gDIRYgBCkDoAMhFwJAIBRBAmsgCEH/////B3FODQAgBCAWQv///////////wCDNwOYAyAEIBc3A5ADIARBgANqIBcgFkIAQoCAgICAgID/PxBGIAQpA5ADIAQpA5gDQoCAgICAgIC4wAAQ2gMhAyAEKQOIAyAWIANBAE4iAhshFiAEKQOAAyAXIAIbIRcgFSAYQgBCABCmASEBIBQgAiAPaiIPQe4Aak4EQCAJIAcgC0cgA0EASHJxIAFBAEdxRQ0BCyMDQRxqQcQANgIACyAEQfACaiAXIBYgDxDYAyAEKQP4AiEVIAQpA/ACCyEWIA4gFTcDKCAOIBY3AyAgBEGQxgBqJAAgDikDKCEVIA4pAyAhFgwECyABKQNwQgBZBEAgASABKAIEQQFrNgIECwwBCwJAAn8gASgCBCICIAEoAmhHBEAgASACQQFqNgIEIAItAAAMAQsgARA7C0EoRgRAQQEhBgwBC0KAgICAgIDg//8AIRUgASkDcEIAUw0DIAEgASgCBEEBazYCBAwDCwNAAn8gASgCBCICIAEoAmhHBEAgASACQQFqNgIEIAItAAAMAQsgARA7CyIJQcEAayECAkACQCAJQTBrQQpJDQAgAkEaSQ0AIAlB3wBGDQAgCUHhAGtBGk8NAQsgBkEBaiEGDAELC0KAgICAgIDg//8AIRUgCUEpRg0CIAEpA3AiGEIAWQRAIAEgASgCBEEBazYCBAsCQCADBEAgBg0BDAQLDAELA0AgGEIAWQRAIAEgASgCBEEBazYCBAsgBkEBayIGDQALDAILIwNBHGpBHDYCACABQgAQgQELQgAhFQsgACAWNwMAIAAgFTcDCCAOQTBqJAALygYCBX8EfiMAQYABayIFJAACQAJAAkAgAyAEQgBCABCmAUUNAAJ/IARC////////P4MhCwJ/IARCMIinQf//AXEiBkH//wFHBEBBBCAGDQEaQQJBAyADIAuEUBsMAgsgAyALhFALCyEJIAJCMIinIghB//8BcSIHQf//AUYNACAJDQELIAVBEGogASACIAMgBBBGIAUgBSkDECICIAUpAxgiASACIAEQ1wMgBSkDCCECIAUpAwAhBAwBCyABIAJC////////////AIMiCyADIARC////////////AIMiChCmAUEATARAIAEgCyADIAoQpgEEQCABIQQMAgsgBUHwAGogASACQgBCABBGIAUpA3ghAiAFKQNwIQQMAQsgBEIwiKdB//8BcSEGIAcEfiABBSAFQeAAaiABIAtCAEKAgICAgIDAu8AAEEYgBSkDaCILQjCIp0H4AGshByAFKQNgCyEEIAZFBEAgBUHQAGogAyAKQgBCgICAgICAwLvAABBGIAUpA1giCkIwiKdB+ABrIQYgBSkDUCEDCyAKQv///////z+DQoCAgICAgMAAhCEMIAtC////////P4NCgICAgICAwACEIQsgBiAHSARAA0ACfiALIAx9IAMgBFatfSIKQgBZBEAgCiAEIAN9IgSEUARAIAVBIGogASACQgBCABBGIAUpAyghAiAFKQMgIQQMBQsgCkIBhiAEQj+IhAwBCyALQgGGIARCP4iECyELIARCAYYhBCAHQQFrIgcgBkoNAAsgBiEHCwJAIAsgDH0gAyAEVq19IgpCAFMEQCALIQoMAQsgCiAEIAN9IgSEQgBSDQAgBUEwaiABIAJCAEIAEEYgBSkDOCECIAUpAzAhBAwBCyAKQv///////z9YBEADQCAEQj+IIQ0gB0EBayEHIARCAYYhBCANIApCAYaEIgpCgICAgICAwABUDQALCyAIQYCAAnEhBiAHQQBMBEAgBUFAayAEIApC////////P4MgB0H4AGogBnKtQjCGhEIAQoCAgICAgMDDPxBGIAUpA0ghAiAFKQNAIQQMAQsgCkL///////8/gyAGIAdyrUIwhoQhAgsgACAENwMAIAAgAjcDCCAFQYABaiQAC6oPAgV/D34jAEHQAmsiBSQAIARC////////P4MhCyACQv///////z+DIQogAiAEhUKAgICAgICAgIB/gyENIARCMIinQf//AXEhCAJAAkAgAkIwiKdB//8BcSIJQf//AWtBgoB+TwRAIAhB//8Ba0GBgH5LDQELIAFQIAJC////////////AIMiDEKAgICAgIDA//8AVCAMQoCAgICAgMD//wBRG0UEQCACQoCAgICAgCCEIQ0MAgsgA1AgBEL///////////8AgyICQoCAgICAgMD//wBUIAJCgICAgICAwP//AFEbRQRAIARCgICAgICAIIQhDSADIQEMAgsgASAMQoCAgICAgMD//wCFhFAEQCADIAJCgICAgICAwP//AIWEUARAQgAhAUKAgICAgIDg//8AIQ0MAwsgDUKAgICAgIDA//8AhCENQgAhAQwCCyADIAJCgICAgICAwP//AIWEUARAQgAhAQwCCyABIAyEUARAQoCAgICAgOD//wAgDSACIAOEUBshDUIAIQEMAgsgAiADhFAEQCANQoCAgICAgMD//wCEIQ1CACEBDAILIAxC////////P1gEQCAFQcACaiABIAogASAKIApQIgYbeSAGQQZ0rXynIgZBD2sQZUEQIAZrIQYgBSkDyAIhCiAFKQPAAiEBCyACQv///////z9WDQAgBUGwAmogAyALIAMgCyALUCIHG3kgB0EGdK18pyIHQQ9rEGUgBiAHakEQayEGIAUpA7gCIQsgBSkDsAIhAwsgBUGgAmogC0KAgICAgIDAAIQiEkIPhiADQjGIhCICQgBCgICAgLDmvIL1ACACfSIEQgAQXyAFQZACakIAIAUpA6gCfUIAIARCABBfIAVBgAJqIAUpA5gCQgGGIAUpA5ACQj+IhCIEQgAgAkIAEF8gBUHwAWogBEIAQgAgBSkDiAJ9QgAQXyAFQeABaiAFKQP4AUIBhiAFKQPwAUI/iIQiBEIAIAJCABBfIAVB0AFqIARCAEIAIAUpA+gBfUIAEF8gBUHAAWogBSkD2AFCAYYgBSkD0AFCP4iEIgRCACACQgAQXyAFQbABaiAEQgBCACAFKQPIAX1CABBfIAVBoAFqIAJCACAFKQO4AUIBhiAFKQOwAUI/iIRCAX0iAkIAEF8gBUGQAWogA0IPhkIAIAJCABBfIAVB8ABqIAJCAEIAIAUpA6gBIAUpA6ABIgwgBSkDmAF8IgQgDFStfCAEQgFWrXx9QgAQXyAFQYABakIBIAR9QgAgAkIAEF8gBiAJIAhraiEGAn8gBSkDcCITQgGGIg4gBSkDiAEiD0IBhiAFKQOAAUI/iIR8IhBC5+wAfSIUQiCIIgIgCkKAgICAgIDAAIQiFUIBhiIWQiCIIgR+IhEgAUIBhiIMQiCIIgsgECAUVq0gDiAQVq0gBSkDeEIBhiATQj+IhCAPQj+IfHx8QgF9IhNCIIgiEH58Ig4gEVStIA4gDiATQv////8PgyITIAFCP4giFyAKQgGGhEL/////D4MiCn58Ig5WrXwgBCAQfnwgBCATfiIRIAogEH58Ig8gEVStQiCGIA9CIIiEfCAOIA4gD0IghnwiDlatfCAOIA4gFEL/////D4MiFCAKfiIRIAIgC358Ig8gEVStIA8gDyATIAxC/v///w+DIhF+fCIPVq18fCIOVq18IA4gBCAUfiIYIBAgEX58IgQgAiAKfnwiCiALIBN+fCIQQiCIIAogEFatIAQgGFStIAQgClatfHxCIIaEfCIEIA5UrXwgBCAPIAIgEX4iAiALIBR+fCILQiCIIAIgC1atQiCGhHwiAiAPVK0gAiAQQiCGfCACVK18fCICIARUrXwiBEL/////////AFgEQCAWIBeEIRUgBUHQAGogAiAEIAMgEhBfIAFCMYYgBSkDWH0gBSkDUCIBQgBSrX0hCkIAIAF9IQsgBkH+/wBqDAELIAVB4ABqIARCP4YgAkIBiIQiAiAEQgGIIgQgAyASEF8gAUIwhiAFKQNofSAFKQNgIgxCAFKtfSEKQgAgDH0hCyABIQwgBkH//wBqCyIGQf//AU4EQCANQoCAgICAgMD//wCEIQ1CACEBDAELAn4gBkEASgRAIApCAYYgC0I/iIQhCiAEQv///////z+DIAatQjCGhCEMIAtCAYYMAQsgBkGPf0wEQEIAIQEMAgsgBUFAayACIARBASAGaxCoASAFQTBqIAwgFSAGQfAAahBlIAVBIGogAyASIAUpA0AiAiAFKQNIIgwQXyAFKQM4IAUpAyhCAYYgBSkDICIBQj+IhH0gBSkDMCIEIAFCAYYiAVStfSEKIAQgAX0LIQQgBUEQaiADIBJCA0IAEF8gBSADIBJCBUIAEF8gDCACIAIgAyACQgGDIgEgBHwiA1QgCiABIANWrXwiASASViABIBJRG618IgJWrXwiBCACIAIgBEKAgICAgIDA//8AVCADIAUpAxBWIAEgBSkDGCIEViABIARRG3GtfCICVq18IgQgAiAEQoCAgICAgMD//wBUIAMgBSkDAFYgASAFKQMIIgNWIAEgA1Ebca18IgEgAlStfCANhCENCyAAIAE3AwAgACANNwMIIAVB0AJqJAALvwIBAX8jAEHQAGsiBCQAAkAgA0GAgAFOBEAgBEEgaiABIAJCAEKAgICAgICA//8AEEYgBCkDKCECIAQpAyAhASADQf//AUkEQCADQf//AGshAwwCCyAEQRBqIAEgAkIAQoCAgICAgID//wAQRkH9/wIgAyADQf3/Ak4bQf7/AWshAyAEKQMYIQIgBCkDECEBDAELIANBgYB/Sg0AIARBQGsgASACQgBCgICAgICAgDkQRiAEKQNIIQIgBCkDQCEBIANB9IB+SwRAIANBjf8AaiEDDAELIARBMGogASACQgBCgICAgICAgDkQRkHogX0gAyADQeiBfUwbQZr+AWohAyAEKQM4IQIgBCkDMCEBCyAEIAEgAkIAIANB//8Aaq1CMIYQRiAAIAQpAwg3AwggACAEKQMANwMAIARB0ABqJAALNQAgACABNwMAIAAgAkL///////8/gyAEQjCIp0GAgAJxIAJCMIinQf//AXFyrUIwhoQ3AwgLwAECAX8CfkF/IQMCQCAAQgBSIAFC////////////AIMiBEKAgICAgIDA//8AViAEQoCAgICAgMD//wBRGw0AIAJC////////////AIMiBUKAgICAgIDA//8AViAFQoCAgICAgMD//wBScQ0AIAAgBCAFhIRQBEBBAA8LIAEgAoNCAFkEQCABIAJSIAEgAlNxDQEgACABIAKFhEIAUg8LIABCAFIgASACVSABIAJRGw0AIAAgASAChYRCAFIhAwsgAwtLAQJ/IAAoAgAiAQRAAn8gASgCDCICIAEoAhBGBEAgASABKAIAKAIkEQEADAELIAIoAgALQX9HBEAgACgCAEUPCyAAQQA2AgALQQELSwECfyAAKAIAIgEEQAJ/IAEoAgwiAiABKAIQRgRAIAEgASgCACgCJBEBAAwBCyACLQAAC0F/RwRAIAAoAgBFDwsgAEEANgIAC0EBC5UDAgJ/AX4CfyABKQMQIgZCAn+nIQUjAEHgAGsiBCQAAkACQAJAAkAgAikDIEIBUg0AIAIpAyhCAVINACABKQMYIAIpAxhSDQEgASgCaA0CIAIoAmgNAiAEIAIpAxAgBUEBdKx8IAZCAX1Cf4V8IAOsf0IBfDcDQCABKQMgIQYgBP0MAQAAAAAAAAABAAAAAAAAAP0LBFAgBCAGNwNIIABBAEECIARBQGtBABBAIgBFDQMgACADNgJEIAAgATYCbCAAQQA2AmggAEEsNgJAIABBATYCTCAAIAU2AkggACACNgJwIARB4ABqJAAgAAwECyAEQcfNADYCOCAEQcE2NgI0IARB6CQ2AjBB6KcCKAIAIARBMGoQMBAAAAsgBEHSJzYCKCAEQcI2NgIkIARB6CQ2AiBB6KcCKAIAIARBIGoQMBAAAAsgBEGrHzYCGCAEQcY2NgIUIARB6CQ2AhBB6KcCKAIAIARBEGoQMBAAAAsgBEHZKjYCCCAEQaYkNgIEIARB6CQ2AgBB6KcCKAIAIAQQMBAAAAsLpAEBA38gAUEISwRAQQQgASABQQRNGyEBQQEgACAAQQFNGyEAA0ACQCAAIAFqQQFrQQAgAWtxIgIgACAAIAJJGyEDQQAhBCMAQRBrIgIkAAJAIAFBA3ENACADIAFwDQAgAkEMaiABIAMQ8AMhA0EAIAIoAgwgAxshBAsgAkEQaiQAIAQiAg0AQdz9NP4QAgAiA0UNACADEQkADAELCyACDwsgABAxCwkAIAFBARDeAwsTACABQQhLBEAgABAvDwsgABAvC4YBAQN/IwBBEGsiBCQAIwBBIGsiAyQAIANBGGogACABEKkCIANBEGogA0EMaiADKAIYIAMoAhwgAhCoAiADIAAgAygCECAAa2o2AgwgAyACIAMoAhQgAmtqNgIIIAQgAygCDDYCCCAEIAMoAgg2AgwgA0EgaiQAIAQoAgwhBSAEQRBqJAAgBQsJACAAEKsCEC8L+QECBX8BfiMAQSBrIgMkAAJAIAEpAyBCAVINACABKQMoQgFSDQAgAikDGEIBUg0AIAIpAyBCAVINACACKQMoQgFSDQAgAigCAEESRw0AAn8CQCABKAJoDQAgAigCaA0AQQAMAQtBAQshByABKQMQIQggAyACKQMQNwMYIAMgCDcDECAAQQBBAiADQRBqQQAQQCIEQSE2AkAgBwRAIAAgBCgCACAEKAIIIARBEGpBABBAIQULIAQgATYCbCAEIAU2AmggBCACNgJwIANBIGokACAEDwsgA0HQMzYCCCADQZszNgIEIANB6CQ2AgBB6KcCKAIAIAMQMBAAAAulAQEHfyMAQRBrIgIkACAAKAJAIgEEfyACQY4BNgIEIAJBCGogASACQQRqEE0hASAAIAAoAgAoAhgRAQAhBCABKAIAIQYgAUEANgIAIAYQmAQhBSAAQQA2AkAgAEEAQQAgACgCACgCDBEDABogASgCACEDIAFBADYCACADBEAgAyABQQRqKAIAEQEAGgtBACAAIAQgBXIbBUEACyEHIAJBEGokACAHCwoAIABB1O40EHoLhgIBA38jAEEQayIEJAAgAiABayIFQe////8HTQRAAkAgBUELSQRAIAAgAC0AC0GAAXEgBXI6AAsgACAALQALQf8AcToACyAAIQMMAQsgBEEIaiAAIAVBC08EfyAFQRBqQXBxIgMgA0EBayIDIANBC0YbBUEKC0EBahC6ASAEKAIMGiAAIAQoAggiAzYCACAAIAAoAghBgICAgHhxIAQoAgxB/////wdxcjYCCCAAIAAoAghBgICAgHhyNgIIIAAgBTYCBAsDQCABIAJHBEAgAyABLQAAOgAAIANBAWohAyABQQFqIQEMAQsLIARBADoAByADIAQtAAc6AAAgBEEQaiQADwsQSwALVAECfwJAIAAoAgAiAkUNAAJ/IAIoAhgiAyACKAIcRgRAIAIgASACKAIAKAI0EQQADAELIAIgA0EEajYCGCADIAE2AgAgAQtBf0cNACAAQQA2AgALCzEBAX8gACgCDCIBIAAoAhBGBEAgACAAKAIAKAIoEQEADwsg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Q6IgARD3AyEAIAEoAgBBQGoLNgIAIAAPCyABIAJB/gdrNgIAIANC/////////4eAf4NCgICAgICAgPA/hL8FIAALC7gBAQF/IAFBAEchAgJAAkACQCAAQQNxRQ0AIAFFDQADQCAALQAARQ0CIAFBAWsiAUEARyECIABBAWoiAEEDcUUNASABDQALCyACRQ0BAkAgAC0AAEUNACABQQRJDQADQCAAKAIAIgJBf3MgAkGBgoQIa3FBgIGChHhxDQIgAEEEaiEAIAFBBGsiAUEDSw0ACwsgAUUNAQsDQCAALQAARQRAIAAPCyAAQQFqIQAgAUEBayIBDQALC0EACx0AIAAgABCOBDYCeCAAQQH+FwJ8IABBAP4XAoABC98CAgZ/A34jAEFAaiIEJAACQAJAIAEoAjAiBSABKAIAIgdBJGwiBkGY6gBqKAIARw0AIAE1AjQiCiABKQMQIgwgBa1+IAZBlOoAajQCAH9SDQAgATUCOCILIAogASkDGCIKflINACABNQI8IAsgASkDICILflINACABKQMoIAogDH4gC35+IAIgA35SDQEgASgCaCEJIAQgAzcDOCAEIAI3AzAgACAHQQIgBEEwaiABKAKYARBAIQggBCABQZwBajYCACAIQfPMACAEEGoiBUEdNgJAIAkEfyAAIAUoAgAgBSgCCCAFQRBqQQAQQAVBAAshACAFIAE2AmwgBSAANgJoIARBQGskACAFDwsgBEHZzgA2AiggBEHiMDYCJCAEQegkNgIgQeinAigCACAEQSBqEDAQAAALIARBmzU2AhggBEHjMDYCFCAEQegkNgIQQeinAigCACAEQRBqEDAQAAALswECAX0CfyAAiyEBAkAgALwiA0H/////B3EiAkHVvrL4A08EQCACQYGAgIkETwRAQwAAAAAgAZVDAACAP5IhAQwCC0MAAIA/QwAAAEAgASABkhCzAkMAAABAkpWTIQEMAQsgAkH5iov0A08EQCABIAGSELMCIgAgAEMAAABAkpUhAQwBCyACQYCAgARJDQAgAUMAAADAlBCzAiIAjCAAQwAAAECSlSEBCyABjCABIANBAEgbC9oBAQJ/AkAgAUH/AXEiAwRAIABBA3EEQANAIAAtAAAiAkUNAyACIAFB/wFxRg0DIABBAWoiAEEDcQ0ACwsCQCAAKAIAIgJBf3MgAkGBgoQIa3FBgIGChHhxDQAgA0GBgoQIbCEDA0AgAiADcyICQX9zIAJBgYKECGtxQYCBgoR4cQ0BIAAoAgQhAiAAQQRqIQAgAkGBgoQIayACQX9zcUGAgYKEeHFFDQALCwNAIAAiAi0AACIDBEAgAEEBaiEAIAMgAUH/AXFHDQELCyACDwsgABBnIABqDwsgAAu3AQEBfwJAELcCQQpHDQBB5AAhAANAAkAgAEUNAEHQ2zQoAgBFDQAgAEEBayEAQdTbNCgCAEUNAQsLELcCQQpHDQADQAJAQdDbNCgCACIAQf////8HcUH/////B0cNAEHU2zRBAf4eAgAaQdDbNCAAIABBgICAgHhyIgD+SAIAGkHQ2zQgAEHY2zQoAgBBgAFzELoCIQBB1Ns0QQH+JQIAGiAARQ0AIABBG0cNAgsQtwJBCkYNAAsLCzUAIAAoAgBBgQFOBEBBgOA0KAIAIgAEQANAQYDgNEGE4DQgABCgAUGA4DQoAgAiAA0ACwsLC58DAQR/IwMiAigCSEUEQCACQdDXNDYCSAsCQEHc2zQoAgAjAygCGEYNAEHQ2zRBAEH/////B/5IAgAEf0EKBUHc2zQjAygCGDYCAEEAC0EKRw0AQeQAIQIDQAJAIAJFDQBB0Ns0KAIARQ0AIAJBAWshAkHU2zQoAgBFDQELC0HQ2zRBAEH/////B/5IAgAEf0EKBUHc2zQjAygCGDYCAEEAC0EKRgRAA0ACQEHQ2zQoAgAiAkUNAEHU2zRBAf4eAgAaQdDbNCACIAJBgICAgHhyIgL+SAIAGkHQ2zQgAkHY2zQoAgBBgAFzELoCIQJB1Ns0QQH+JQIAGiACRQ0AIAJBG0cNAwtB0Ns0QQBB/////wf+SAIABH9BCgVB3Ns0IwMoAhg2AgBBAAtBCkYNAAsLQdzbNCMDKAIYNgIACyABQYcBIAEbIQJB8Ns0KAIAIgMhAQJ/A0AgAUECdEGA3DRqIgQoAgBFBEAgACABNgIAQfDbNCABNgIAIAQgAjYCAEEADAILIAFBAWpB/wBxIgEgA0cNAAtBBgshBRC2AiAFC+QCAQR/EAwjAEEQayICJAACQCAAIAAoAgBHBEBBxwAhAQwBCwJAIAAoAiBBA0YNACAAIwNHDQBBECEBDAELIwMhASACQQxqBEAgAiABLQAoNgIMCyABQQE6ACggAigCDEUEQCMDQQA6ACgLAkAgAEEgaiIEKAIAIgMEQANAIANBA04EQCACKAIMIgBBAk0EfyMDIAA6AChBAAVBHAsaQRwhAQwECyAEIANBARDtASEBAkAgBCgCACIDRQ0AIAFByQBGDQAgAUEcRw0BCwsgAigCDCIEQQJNBH8jAyAEOgAoQQAFQRwLGiABQRxGDQIgAUHJAEYNAgwBC0EAIQMgAigCDCIBQQJNBH8jAyABOgAoQQAFQRwLGgsjAEEQa0EANgIMAkBBvNc0KAIAIgFFDQBBvNc0QcTXNCABEKABQcTXNCgCAEUNAEG81zQQjAELQQAhASADDQAgABALCyACQRBqJAAgAQubBQEFfyMAQTBrIgUkAAJAIABFBEBBHCEEDAELQcjXNCgCAEUEQEHI1zRBKzYCAAtBydU0LQAARQRAEPEBKAIAIgMEQANAAkAgA0UNACADKAJMQQBODQAgA0EANgJMCyADKAI4IgMNAAsLQYTXNBDLAQJAQcTVNCgCACIDRQ0AIAMoAkxBAE4NACADQQA2AkwLAkBBmJ8DKAIAIgNFDQAgAygCTEEATg0AIANBADYCTAsCQEGAngMoAgAiA0UNACADKAJMQQBODQAgA0EANgJMC0HJ1TRBAToAAAsgBUEIakEAQSj8CwAgBUHonAMoAgAiAzYCBEHsnAMoAgBBmgFqIgRBACADQQ9qIAUoAgwbaiIGEEMiA0EAIAQQvwEgAyAGNgIwIAMgAzYCLCADIAM2AgBByNc0QcjXNCgCACIEQQFqNgIAIAMgA0HMAGo2AkwgAyAENgIYIANB6NU0NgJgIANBA0ECIAUoAhAbNgIgIAMgBSgCBCIGNgI4IAMgA0GHAWpBfHEiBDYCdCAEQRBqIQRB7JwDKAIABEAgAyAEQQNqQXxxIgQ2AkhB7JwDKAIAIARqIQQLIAMgBSgCDCIHIAQgBmpBD2pBcHEgBxs2AjQgAxD5AyMDIQQQuQIgBCgCDCEGIAMgBDYCCCADIAY2AgwgBiADNgIIIAMoAgggAzYCDBC4AkHM1TRBzNU0KAIAIgRBAWo2AgAgBEUEQEHL1TRBAToAAAsgAyAFQQRqIAEgAhAgIgQEQEHM1TRBzNU0KAIAQQFrIgA2AgAgAEUEQEHL1TRBADoAAAsQuQIgAygCDCIAIAMoAgg2AgggAygCCCAANgIMIAMgAzYCDCADIAM2AggQuAIMAQsgACADNgIACyAFQTBqJAAgBAuIBgEGfyMAQSBrIgIkACACQQA2AhggAkIANwMQIAJCADcDCCAAKAIQGiMEBEAQDAsCQCABLQAAQQ9xBEAjAygCGCABKAIEQf////8HcUcNAQsCfyAAKAIAIgcEQCAAKAIIIQQgAEEMakEB/h4CABogAEEIagwBCyAAQSBqIgMQ7AFBAiEEIAJBAjYCFCACQQA2AhAgAiAAKAIEIgU2AgwgACACQQhqIgY2AgQgBSAAQRRqIAAoAhQbIAY2AgAgAxDrASACQRRqCyEFIAEQUBojAyEDIAJBBGoEQCACIAMtACg2AgQLIANBAjoAKCACKAIEQQFGBEAjA0EBOgAoCyAFIAQgB0UiBhDtASEDAkAgBSgCACAERw0AA0AgA0EbR0EAIAMbDQEgBSAEIAYQ7QEhAyAFKAIAIARGDQALCyADQQAgA0EbRxshAwJ/AkAgBwRAIANBC0YEQEELQQAgACgCCCAERhshAwsgAEEMaiIAQX/+HgIAQYGAgIB4Rw0BIAAQjAEMAQsgAkEQakEAQQL+SAIARQRAIABBIGoiBBDsAQJAIAAoAgQgAkEIakYEQCAAIAIoAgw2AgQMAQsgAigCCCIFRQ0AIAUgAigCDDYCBAsCQCAAKAIUIAJBCGpGBEAgACACKAIINgIUDAELIAIoAgwiAEUNACAAIAIoAgg2AgALIAQQ6wEgAigCGCIARQ0BIABBf/4eAgBBAUcNASACKAIYEIwBDAELIAJBFGoQ7AEgARBVGgJAIAIoAgwNACABLQAAQQhxDQAgAUEIakEB/h4CABoLAkAgAigCCCIDBEAgASgCBCIAQQBKBEAgAUEEaiAAIABBgICAgHhy/kgCABoLIANBDGoiAEEA/hcCACAAQf////8HEK0BDAELIAEtAABBCHENACABQQhqQQH+JQIAGgsgAigCBAwBCyABEFUhACACKAIEIgFBAk0EfyMDIAE6AChBAAVBHAsaIAAgAyAAG0ELRw0BQQELIgBBAk0EfyMDIAA6AChBAAVBHAsaCyACQSBqJAAL/wEBBX8jAEEQayIDJAAgA0EANgIMIABBIGoiBhDsASAAKAIUIgJBAEchBAJAIAFFDQAgAkUNAANAAkAgAkEIakEAQQH+SAIABEAgAyADKAIMQQFqNgIMIAIgA0EMajYCEAwBCyAFIAIgBRshBSABQQFrIQELIAIoAgAiAkEARyEEIAFFDQEgAg0ACwsCQCAEBEAgAkEEaiEBIAIoAgQiBEUNASAEQQA2AgAMAQsgAEEEaiEBCyABQQA2AgAgACACNgIUIAYQ6wEgAygCDCICBEADQCADQQxqQQAgAhCgASADKAIMIgINAAsLIAUEQCAFQQxqEOsBCyADQRBqJABBAAsvACAAKAIARQRAIABBARCDBBoPCyAAKAIMBEAgAEEIaiIAQQH+HgIAGiAAEIwBCwsNAEGw1zRBhAEQ/wMaC5EBAQR/IwBBIGsiASQAAkAgACgCCEUEQCAAQRBqIgIQVRogAEECNgIMIAIQUBogAEEoahCEBAwBCyAAKAIYBEAgACgCECECIAAoAgwhBCABIAA2AhwgASAANgIQIAFB/gA2AhggAUGDATYCFCABIAEpAhQ3AwggBCACIAFBCGoQ8AENAQsgABDKAQsgAUEgaiQAC38BAn8gACgCCEUEQCAAQRBqEP4DAkAgAEEoaiIAKAIARQ0AIAAoAgxFDQAgAEEMaiIBQYCAgIB4/jMCABogAEEIaiICQQH+HgIAGiACEO4BIAAoAgwiAEH/////B3FFDQADQCABQQAgABCgASABKAIAIgBB/////wdxDQALCwsLaAEBfyAAIAAoAlhGBEAgAEIANwJYQbDXNCgCAEEAEMgBDwsgACMDKAJIQbDXNCgCACIBQQJ0aigCAEYEQCABIAAoAlgQyAELIAAoAlwiASAAKAJYNgJYIAAoAlggATYCXCAAQgA3AlgLSgEDfwJAIAAoAhwiAkEATA0AIAAoAhghA0EAIQADQCABIAMgAEECdGooAgAiBCgCHEcEQCACIABBAWoiAEcNAQwCCwsgBA8LQQAL/wEBBX8CQCAAKAIsIAAoAjBBAWogACgCKCICb0cNACACQRhsEEMiAwR/IAJBAXQhBQJAIAAoAjAiBCAAKAIsIgJOBEAgAyAAKAIkIAJBDGxqIAQgAmsiAkEMbBB7GgwBCyADIAAoAiQgAkEMbGogACgCKCACayICQQxsIgYQexogAyAGaiAAKAIkIARBDGwQexogAiAEaiECCyAAKAIkEC8gACACNgIwIABBADYCLCAAIAU2AiggACADNgIkQQEFQQALDQBBAA8LIAAoAiQgACgCMEEMbGoiAyABKQIANwIAIAMgASgCCDYCCCAAIAAoAjBBAWogACgCKG82AjBBAQtnAQN/IwBBEGsiASQAIABBBGoiAhBVGiAAKAIsIAAoAjBHBEADQCABQQRqIAAQjAQgASgCCCIDBEAgASgCDCADEQAACyAAKAIsIAAoAjBHDQALCyACEFAaIABBAP4XAgAgAUEQaiQACzgBAn8gACABKAIkIAEoAiwiAkEMbGoiAykCADcCACAAIAMoAgg2AgggASACQQFqIAEoAihvNgIsCxUAIABBBGoQ/gMgACgCJBAvIAAQLwvkAgEGfyMAQUBqIgEkAEGwnAMQ6gFFBEBB5JwDKAIAIgJBrJwDRwRAA0AgAigCOCEGIAL+EAIARQRAIAIoAjQiBCACKAI4NgI4IAIoAjggBDYCNCACEI0ECyAGIgJBrJwDRw0ACwtBsJwDEFAaCwJAQTwQQyICRQ0AQYAMEEMiA0UEQCACEC8MAQsgAUIANwMoIAFCADcDMCABQQA2AjwgAUIANwMgIAEgADYCHCABQQA2AhggASADNgIUIAFBgAE2AhAgAUEANgIMIAFBADYCCCABQQA2AgQgAUEANgIAIAIgASgCPDYCACACIAEpAzA3AhQgAiABKQMoNwIMIAIgASkDIDcCBCACIAEoAhw2AhwgAiABKAIYNgIgIAIgASgCFDYCJCACIAEoAhA2AiggAiABKAIMNgIsIAIgASgCCDYCMCACIAEoAgQ2AjQgAiABKAIANgI4IAIhBQsgAUFAayQAIAULLAEBfyMAQRBrIgIkACACIAE2AgxBiJ4DIAAgAUGLAUEAELICGiACQRBqJAALRgEBfwJ/QQAgAEEXdkH/AXEiAUH/AEkNABpBAiABQZYBSw0AGkEAQQFBlgEgAWt0IgFBAWsgAHENABpBAUECIAAgAXEbCwtOAgF/AX4Cf0EAIABCNIinQf8PcSIBQf8HSQ0AGkECIAFBswhLDQAaQQBCAUGzCCABa62GIgJCAX0gAINCAFINABpBAkEBIAAgAoNQGwsLswEBA38CQEHL1TQsAAAiAkUNACAAQQBBgYCAgHj+SAIAIQEgAkEASARAQcvVNEEAOgAACyABRQ0AA0AgACABQf////8HaiABIAFBAEgbIgIgAkH/////B2v+SAIAIgEgAkYNASADQQFqIgNBCkcNAAsgAEEB/h4CAEEBaiEBA0AgAUEASARAIAAgARCZBCABQf////8HaiEBCyABIAAgASABQYCAgIB4cv5IAgAiAUcNAAsLC/8EAwF/B3wCfiAAvSIJQjCIpyEBIAlCgICAgPCVqfc/fUL/////n5WEAVgEQCAJQoCAgICAgID4P1EEQEQAAAAAAAAAAA8LQbjQASsDACIDIABEAAAAAAAA8L+gIgC9QoCAgIBwg78iBKIiBSAAIACiIgIgAEGA0QErAwCiQfjQASsDAKCiIgagIgcgAiACoiIIIAggAiAAQcDRASsDAKJBuNEBKwMAoKIgAEGw0QErAwCiQajRASsDAKCgoiACIABBoNEBKwMAokGY0QErAwCgoiAAQZDRASsDAKJBiNEBKwMAoKCgoiAAIAShIAOiIABBwNABKwMAoqAgBiAFIAehoKCgoA8LAkAgAUHw/wFrQZ+Afk0EQCAJQv///////////wCDUARAIwBBEGsiAUQAAAAAAADwvzkDCCABKwMIRAAAAAAAAAAAow8LIAlCgICAgICAgPj/AFENASABQfD/AXFB8P8BRyABQf//AU1xRQRAIAAgAKEiACAAow8LIABEAAAAAAAAMEOivUKAgICAgICAoAN9IQkLIAlCgICAgICAgPM/fSIKQi6Ip0E/cUEEdCIBQdDRAWorAwAgCkI0h6e3oCIDQbjQASsDACIEIAFByNEBaisDACAJIApCgICAgICAgHiDfb8gAUHI2QFqKwMAoSABQdDZAWorAwChoiIAvUKAgICAcIO/IgWiIgagIgcgACAAoiICIAIgAqIgAEHw0AErAwCiQejQASsDAKCiIAIgAEHg0AErAwCiQdjQASsDAKCiIABB0NABKwMAokHI0AErAwCgoKCiIAAgBaEgBKJBwNABKwMAIACioCAGIAMgB6GgoKCgIQALIAALcAICfwF+IAAoAighAkEBIQECQCAAQgAgAC0AAEGAAXEEf0EBQQIgACgCFCAAKAIcRhsFQQELIAIREwAiA0IAUw0AIAMgACgCCCIBBH8gAEEEagUgACgCHCIBRQ0BIABBFGoLKAIAIAFrrHwhAwsgAwucAQEBfwJAIAJBA08EQCMDQRxqQRw2AgAMAQsCQCACQQFHDQAgACgCCCIDRQ0AIAEgAyAAKAIEa6x9IQELIAAoAhQgACgCHEcEQCAAQQBBACAAKAIkEQMAGiAAKAIURQ0BCyAAQQA2AhwgAEIANwMQIAAgASACIAAoAigREwBCAFMNACAAQgA3AgQgACAAKAIAQW9xNgIAQQAPC0F/C8ABAQN/IAIoAkxBAE4EQCACEI4BIQULIAIgAigCSCIDQQFrIANyNgJIIAIoAgQiAyACKAIIIgRGBH8gAQUgACADIAQgA2siAyABIAEgA0sbIgMQexogAiACKAIEIANqNgIEIAAgA2ohACABIANrCyIDBEADQAJAIAIQvwJFBEAgAiAAIAMgAigCIBEDACIEDQELIAUEQCACEI0BCyABIANrDwsgACAEaiEAIAMgBGsiAw0ACwsgBQRAIAIQjQELIAELjQEBAn8jAEEQayIAJAAgAEEKOgAPAkACQEGYngMoAgAiAQR/IAEFQYieAxDAAg0CQZieAygCAAtBnJ4DKAIAIgFGDQBB2J4DKAIAQQpGDQBBnJ4DIAFBAWo2AgAgAUEKOgAADAELQYieAyAAQQ9qQQFBrJ4DKAIAEQMAQQFHDQAgAC0ADxoLIABBEGokAAuXAQEGfyAAKAJMQQBIBH9BAAUgABCOAQtFIQYgABCsASEEIAAgACgCDBEBACEFIAZFBEAgABCNAQsgAC0AAEEBcUUEQBDxASEBIAAoAjQiAgRAIAIgACgCODYCOAsgACgCOCIDBEAgAyACNgI0CyAAIAEoAgBGBEAgASADNgIAC0GE1zQQywEgACgCYBAvIAAQLwsgBCAFcgsLACAAQQAgARCgAQuAEAIYfwN8IwBBEGsiCyQAAkAgALwiEUH/////B3EiA0Han6TuBE0EQCABIAC7IhsgG0SDyMltMF/kP6JEAAAAAAAAOEOgRAAAAAAAADjDoCIaRAAAAFD7Ifm/oqAgGkRjYhphtBBRvqKgIhw5AwAgHEQAAABg+yHpv2MhFgJ/IBqZRAAAAAAAAOBBYwRAIBqqDAELQYCAgIB4CyEDIBYEQCABIBsgGkQAAAAAAADwv6AiGkQAAABQ+yH5v6KgIBpEY2IaYbQQUb6ioDkDACADQQFrIQMMAgsgHEQAAABg+yHpP2RFDQEgASAbIBpEAAAAAAAA8D+gIhpEAAAAUPsh+b+ioCAaRGNiGmG0EFG+oqA5AwAgA0EBaiEDDAELIANBgICA/AdPBEAgASAAIACTuzkDAEEAIQMMAQsgCyADIANBF3ZBlgFrIgNBF3Rrvrs5AwggC0EIaiEOIwBBsARrIgUkACADIANBA2tBGG0iAkEAIAJBAEobIg1BaGxqIQZB4KYBKAIAIgdBAE4EQCAHQQFqIQMgDSECA0AgBUHAAmogBEEDdGogAkEASAR8RAAAAAAAAAAABSACQQJ0QfCmAWooAgC3CzkDACACQQFqIQIgBEEBaiIEIANHDQALCyAGQRhrIQhBACEDIAdBACAHQQBKGyEEA0BBACECRAAAAAAAAAAAIRoDQCAOIAJBA3RqKwMAIAVBwAJqIAMgAmtBA3RqKwMAoiAaoCEaIAJBAWoiAkEBRw0ACyAFIANBA3RqIBo5AwAgAyAERiEXIANBAWohAyAXRQ0AC0EvIAZrIRJBMCAGayEPIAZBGWshEyAHIQMCQANAIAUgA0EDdGorAwAhGkEAIQIgAyEEIANBAEwiCUUEQANAIAVB4ANqIAJBAnRqAn8CfyAaRAAAAAAAAHA+oiIbmUQAAAAAAADgQWMEQCAbqgwBC0GAgICAeAu3IhtEAAAAAAAAcMGiIBqgIhqZRAAAAAAAAOBBYwRAIBqqDAELQYCAgIB4CzYCACAFIARBAWsiBEEDdGorAwAgG6AhGiACQQFqIgIgA0cNAAsLAn8gGiAIEKkBIhogGkQAAAAAAADAP6KcRAAAAAAAACDAoqAiGplEAAAAAAAA4EFjBEAgGqoMAQtBgICAgHgLIQogGiAKt6EhGgJAAkACQAJ/IAhBAEwiFEUEQCADQQJ0IAVqIgIgAigC3AMiAiACIA91IgIgD3RrIgQ2AtwDIAIgCmohCiAEIBJ1DAELIAgNASADQQJ0IAVqKALcA0EXdQsiDEEATA0CDAELQQIhDCAaRAAAAAAAAOA/Zg0AQQAhDAwBC0EAIQJBACEEIAlFBEADQCAFQeADaiACQQJ0aiIVKAIAIQlB////ByEQAn8CQCAEDQBBgICACCEQIAkNAEEADAELIBUgECAJazYCAEEBCyEEIAJBAWoiAiADRw0ACwsCQCAUDQBB////AyECAkACQCATDgIBAAILQf///wEhAgsgA0ECdCAFaiIJIAkoAtwDIAJxNgLcAwsgCkEBaiEKIAxBAkcNAEQAAAAAAADwPyAaoSEaQQIhDCAERQ0AIBpEAAAAAAAA8D8gCBCpAaEhGgsgGkQAAAAAAAAAAGEEQEEAIQQCQCAHIAMiAk4NAANAIAVB4ANqIAJBAWsiAkECdGooAgAgBHIhBCACIAdKDQALIARFDQAgCCEGA0AgBkEYayEGIAVB4ANqIANBAWsiA0ECdGooAgBFDQALDAMLQQEhAgNAIAIiBEEBaiECIAVB4ANqIAcgBGtBAnRqKAIARQ0ACyADIARqIQQDQCAFQcACaiADQQFqIgNBA3RqIAMgDWpBAnRB8KYBaigCALc5AwBBACECRAAAAAAAAAAAIRoDQCAOIAJBA3RqKwMAIAVBwAJqIAMgAmtBA3RqKwMAoiAaoCEaIAJBAWoiAkEBRw0ACyAFIANBA3RqIBo5AwAgAyAESA0ACyAEIQMMAQsLAkAgGkEYIAZrEKkBIhpEAAAAAAAAcEFmBEAgBUHgA2ogA0ECdGoCfwJ/IBpEAAAAAAAAcD6iIhuZRAAAAAAAAOBBYwRAIBuqDAELQYCAgIB4CyICt0QAAAAAAABwwaIgGqAiGplEAAAAAAAA4EFjBEAgGqoMAQtBgICAgHgLNgIAIANBAWohAwwBCwJ/IBqZRAAAAAAAAOBBYwRAIBqqDAELQYCAgIB4CyECIAghBgsgBUHgA2ogA0ECdGogAjYCAAtEAAAAAAAA8D8gBhCpASEaAkAgA0EASA0AIAMhAgNAIAUgAiIEQQN0aiAaIAVB4ANqIAJBAnRqKAIAt6I5AwAgAkEBayECIBpEAAAAAAAAcD6iIRogBA0ACyADQQBIDQAgAyEEA0BEAAAAAAAAAAAhGkEAIQIgByADIARrIgYgBiAHShsiCEEATgRAA0AgAkEDdEHAvAFqKwMAIAUgAiAEakEDdGorAwCiIBqgIRogAiAIRyEYIAJBAWohAiAYDQALCyAFQaABaiAGQQN0aiAaOQMAIARBAEohGSAEQQFrIQQgGQ0ACwtEAAAAAAAAAAAhGiADQQBOBEADQCADIgJBAWshAyAaIAVBoAFqIAJBA3RqKwMAoCEaIAINAAsLIAsgGpogGiAMGzkDACAFQbAEaiQAIApBB3EhAyALKwMAIRogEUEASARAIAEgGpo5AwBBACADayEDDAELIAEgGjkDAAsgC0EQaiQAIAMLiwQAQZiWA0GqIhAsQaSWA0HAGUEBQQAQK0GwlgNB0hRBAUGAf0H/ABAFQciWA0HLFEEBQYB/Qf8AEAVBvJYDQckUQQFBAEH/ARAFQdSWA0H+CkECQYCAfkH//wEQBUHglgNB9QpBAkEAQf//AxAFQeyWA0GZC0EEQYCAgIB4Qf////8HEAVB+JYDQZALQQRBAEF/EAVBhJcDQcEcQQRBgICAgHhB/////wcQBUGQlwNBuBxBBEEAQX8QBUGclwNB4A9CgICAgICAgICAf0L///////////8AEN8CQaiXA0HfD0IAQn8Q3wJBtJcDQccPQQQQEUHAlwNBsiFBCBARQajpAEHsHBAQQeygAUHgLxAQQbShAUEEQdIcEAlBgKIBQQJB+BwQCUHMogFBBEGHHRAJQeTpAEHUGRAqQfSiAUEAQZsvEAFBnKMBQQBBgTAQAUHEowFBAUG5LxABQeyjAUECQegrEAFBlKQBQQNBhywQAUG8pAFBBEGvLBABQeSkAUEFQcwsEAFBjKUBQQRBpjAQAUG0pQFBBUHEMBABQZyjAUEAQbItEAFBxKMBQQFBkS0QAUHsowFBAkH0LRABQZSkAUEDQdItEAFBvKQBQQRB+i4QAUHkpAFBBUHYLhABQdylAUEIQbcuEAFBhKYBQQlBlS4QAUGspgFBBkHyLBABQdSmAUEHQeswEAELtQcCCn8BfCMAQUBqIgMkAEEBIQICQAJAAkACQAJAAkAgASAAa0HIAG0OBgUFAAECAwQLIAFBKGsrAwAgACsDIGRFDQQgAyAALQAIOgA4IAMgACkDADcDMCAAKAIUIQQgACgCECEFIABCADcDECAAKAIYIQYgAEEANgIYIAMgACgCRDYCKCADIAApAjw3AyAgAyAA/QACLP0LAxAgAyAA/QACHP0LAwAgACABQcgAayIBKQMANwMAIAAgAS0ACDoACCAAIAEoAhA2AhAgACABKAIUNgIUIAAgASgCGDYCGCABQQA2AhAgAUEANgIYIAAgASgCRDYCRCAAIAEpAjw3AjwgACAB/QACLP0LAiwgACAB/QACHP0LAhwgASADKQMwNwMAIAEgAy0AODoACCABKAIQIgAEQCABIAA2AhQgABAvCyABIAU2AhAgASAENgIUIAEgBjYCGCABIAMoAig2AkQgASADKQMgNwI8IAEgA/0AAxD9CwIsIAEgA/0AAwD9CwIcDAQLIAAgAEHIAGogAUHIAGsQwAEaDAMLIAAgAEHIAGogAEGQAWogAUHIAGsQwgIaDAILIAAgAEHIAGogAEGQAWogAEHYAWogAUHIAGsQwQIaDAELIAAgAEHIAGogAEGQAWoiBhDAARogAEHYAWoiBCABRg0AA0ACQCAEKwMgIgwgBisDIGRFDQAgAyAELQAIOgA4IAMgBCkDADcDMCAEKAIUIQcgBCgCECEIIARCADcDECAEKAIYIQkgBEEANgIYIAQoAhwhCiADIAT9AAI4/QsDECADIAT9AAIo/QsDACAEIQUDQCAFIAYiAikDADcDACAFIAItAAg6AAggBSgCECIGBEAgBSAGNgIUIAYQLyAFQQA2AhgLIAUgAigCEDYCECAFIAIoAhQ2AhQgBSACKAIYNgIYIAJBADYCGCACQgA3AxAgBSACKAJENgJEIAUgAikCPDcCPCAFIAL9AAIs/QsCLCAFIAIiBf0AAhz9CwIcAkAgACACRgRAIAAhAgwBCyAMIAJByABrIgYrAyBkDQELCyACIAMpAzA3AwAgAiADLQA4OgAIIAIoAhAiBgRAIAIgBjYCFCAGEC8LIAIgCTYCGCACIAc2AhQgAiAINgIQIAUgCjYCHCACIAw5AiAgAiAD/QADAP0LAiggAiAD/QADEP0LAjggC0EBaiILQQhHDQAgBEHIAGogAUYhAgwCCyAEIgZByABqIgIhBCABIAJHDQALQQEhAgsgA0FAayQAIAILnggCBX8DfAJAAkACQAJAAkACQAJAIAEgAGtBBHUOBgUFAAECAwQLIAFBEGsiAisDACIHIAArAwAiCGRFDQQgACAHOQMAIAIgCDkDAAwFCyABQRBrIgIrAwAhByAAKwMQIgggACsDACIJZEUEQCAHIAhkRQ0EIAAgBzkDECACIAg5AwAgACgCGCECIAAgAUEIayIBKAIANgIYIAEgAjYCACAAKwMQIgcgACsDACIIZEUNBCAAIAg5AxAgACAHOQMAIAAoAgghASAAIAAoAhg2AgggACABNgIYQQEPCyAHIAhkBEAgACAHOQMAIAIgCTkDAAwFCyAAIAk5AxAgACAIOQMAIAAoAgghAyAAIAAoAhg2AgggACADNgIYIAIrAwAiByAJZEUNAyAAIAc5AxAgAiAJOQMAIAAgAUEIayIAKAIANgIYIAAgAzYCAEEBDwsgACAAQRBqIABBIGogAUEQaxDRARpBAQ8LIAAgAEEQaiAAQSBqIABBMGoQ0QEaIAFBEGsiAisDACIHIAArAzAiCGRFDQEgACAHOQMwIAIgCDkDACAAKAI4IQIgACABQQhrIgEoAgA2AjggASACNgIAIAArAzAiByAAKwMgIghkRQ0BIAAgCDkDMCAAIAc5AyAgACgCKCECIAAgACgCOCIBNgIoIAAgAjYCOCAHIAArAxAiCGRFDQEgACAIOQMgIAAgBzkDECAAKAIYIQIgACABNgIYIAAgAjYCKCAHIAArAwAiCGRFDQEgACAIOQMQIAAgBzkDACAAKAIIIQIgACABNgIIIAAgAjYCGEEBDwsgACsDICEHAkAgACsDECIJIAArAwAiCGRFBEAgByAJZEUNASAAIAk5AyAgACAHOQMQIAAoAhghAiAAIAAoAigiAzYCGCAAIAI2AiggByAIZEUNASAAIAg5AxAgACAHOQMAIAAoAgghAiAAIAM2AgggACACNgIYDAELIAcgCWQEQCAAIAg5AyAgACAHOQMAIAAoAgghAiAAIAAoAig2AgggACACNgIoDAELIAAgCDkDECAAIAk5AwAgACgCCCECIAAgACgCGDYCCCAAIAI2AhggByAIZEUNACAAIAg5AyAgACAHOQMQIAAoAighAyAAIAI2AiggACADNgIYCyAAQTBqIgMgAUYNACAAQSBqIQQDQAJAIAMrAwAiByAEKwMAIghkRQ0AIAMoAgghBiADIQIDQAJAIAIgCDkDACACIAQiAigCCDYCCCAAIAJGBEAgACECDAELIAcgAkEQayIEKwMAIghkDQELCyACIAY2AgggAiAHOQMAIAVBAWoiBUEIRw0AIANBEGogAUYPCyADIgRBEGoiAiEDIAEgAkcNAAsLQQEPCyAAKAIIIQIgACABQQhrIgAoAgA2AgggACACNgIAQQEL4wMBBX8CQCABIABBBGoiBUcEQCAEKAIAIgYgASgCECIHTg0BCyABKAIAIQYgASEDAkAgASAAKAIARwRAAkAgBkUEQCABIQADQCAAKAIIIgMoAgAgAEYhCCADIQAgCA0ACwwBCyAGIQADQCAAIgMoAgQiAA0ACwsgBCgCACIEIAMoAhBMDQELIAZFBEAgAiABNgIAIAEPCyACIAM2AgAgA0EEag8LIAUoAgAiAEUEQCACIAU2AgAgBQ8LIAUhAQNAAkAgACIDKAIQIgAgBEoEQCADIgEoAgAiAA0CDAELIAAgBE4NACADQQRqIQEgAygCBCIADQELCyACIAM2AgAgAQ8LIAYgB0oEQAJAIAEoAgQiBEUEQCABIQADQCAAKAIIIgMoAgAgAEchCSADIQAgCQ0ACwwBCyAEIQADQCAAIgMoAgAiAA0ACwsCQCADIAVHBEAgBiADKAIQTg0BCyAERQRAIAIgATYCACABQQRqDwsgAiADNgIAIAMPCyAFKAIAIgBFBEAgAiAFNgIAIAUPCwNAAkAgACIBKAIQIgAgBkoEQCABIgUoAgAiAA0CDAELIAAgBk4NACABQQRqIQUgASgCBCIADQELCyACIAE2AgAgBQ8LIAIgATYCACADIAE2AgAgAwuiAwEMfwJAIAAoAggiAiAAKAIMRwRAIAIhAwwBCyAAKAIEIgQgACgCACIHSwRAIAQgBCAHa0ECdUEBakF+bUECdCIFaiIDIAQgAiAEayIE/AoAACAAIAMgBGoiAzYCCCAAIAAoAgQgBWo2AgQMAQsCQAJAAkBBASACIAdrQQF1IAIgB0YbIgNBgICAgARJBEAgA0ECdCIFEDEiCCAFaiELIAggA0F8cSIGaiIFIQMgAiAERg0DIAUgAiAEayICQXxxaiEDIAJBBGsiAkEcSQ0BIAYgCGogBGtBEEkNASAEIAJBAnZBAWoiDEH8////B3EiCUECdCIGaiECIAUgBmohBgNAIAUgCkECdCINaiAEIA1q/QACAP0LAgAgCkEEaiIKIAlHDQALIAkgDEYNAwwCCxBRAAsgBSEGIAQhAgsDQCAGIAIoAgA2AgAgAkEEaiECIAZBBGoiBiADRw0ACwsgACALNgIMIAAgAzYCCCAAIAU2AgQgACAINgIAIAdFDQAgBxAvIAAoAgghAwsgAyABKAIANgIAIAAgACgCCEEEajYCCAv8CgIOfwF7IwBBIGsiBSQAAkACQAJAAkACQAJAAkACQAJAAnsCQAJAIAAoAhAiAUHOAE8EQCAAIAFBzgBrNgIQIAAoAgQiASgCACELIAAgAUEEaiIENgIEIAAoAggiASAAKAIMRwRAIAEhAgwMCyAAKAIAIgcgBEkEQCAEIAQgB2tBAnVBAWpBfm1BAnQiA2oiAiAEIAEgBGsiAfwKAAAgACABIAJqIgI2AgggACAAKAIEIANqNgIEDAwLQQEgASAHa0EBdSABIAdGGyIDQYCAgIAETw0BIANBAnQiAhAxIgkgAmohDCAJIANBfHEiA2oiCCECIAEgBEYNCiAIIAEgBGsiAUF8cWohAiABQQRrIgFBHEkNCCADIAlqIARrQRBJDQggBCABQQJ2QQFqIg1B/P///wdxIgpBAnQiAWohAyABIAhqIQEDQCAIIAZBAnQiDmogBCAOav0AAgD9CwIAIAZBBGoiBiAKRw0ACyAKIA1GDQoMCQsgACgCCCIBIAAoAgQiA2siCEECdSICIAAoAgwiBiAAKAIAIgRrIgdBAnVJBEAgASAGRwRAIAVB2B8QMTYCACAAIAUQnwQMDQsgBUHYHxAxNgIAIAAgBRDSASAAKAIEIgEoAgAhCyAAIAFBBGoiBDYCBCAAKAIIIgEgACgCDEcEQCABIQIMCAsgACgCACIHIARJBEAgBCAEIAdrQQJ1QQFqQX5tQQJ0IgNqIgIgBCABIARrIgH8CgAAIAAgASACaiICNgIIIAAgACgCBCADajYCBAwIC0EBIAEgB2tBAXUgASAHRhsiA0GAgICABE8NASADQQJ0IgIQMSIJIAJqIQwgCSADQXxxIgNqIgghAiABIARGDQYgCCABIARrIgFBfHFqIQIgAUEEayIBQRxJDQQgAyAJaiAEa0EQSQ0EIAQgAUECdkEBaiINQfz///8HcSIKQQJ0IgFqIQMgASAIaiEBQQAhBgNAIAggBkECdCIOaiAEIA5q/QACAP0LAgAgBkEEaiIGIApHDQALIAogDUYNBgwFCyAFIABBDGo2AhBBASAHQQF1IAQgBkYbIgdBgICAgARPDQAgBSAHQQJ0IgQQMSIGNgIAIAUgBCAGaiIJNgIMIAUgBiACQQJ0aiIENgIEQdgfEDEhCgJAIAIgB0cNACAIQQBKBEAgBSAEIAJBAWpBfm1BAnRqIgQ2AgQMAQtBASAIQQF1IAEgA0YbIgFBgICAgARPDQEgBSABQQJ0IgMQMSICNgIAIAUgAiADaiIJNgIMIAUgAiABQXxxaiIENgIEIAYQLyAAKAIEIQMgACgCCCEBIAIhBgsgBCAKNgIAIAUgBEEEaiICNgIIIAEgA0YEQCADIQEgBv0RIAT9HAEgAv0cAiAJ/RwDDAMLA0AgBSABQQRrIgEQ0gEgASAAKAIERw0ACwwBCxBRAAsgACgCCCEDIAX9AAQACyEPIAUgACgCACICNgIAIAUgAzYCCCAFIAE2AgQgACgCDCEGIAAgD/0LAgAgBSAGNgIMIAEgA0cEQCAFIAMgASADa0EDakF8cWo2AggLIAJFDQggAhAvDAgLIAghASAEIQMLA0AgASADKAIANgIAIANBBGohAyABQQRqIgEgAkcNAAsLIAAgDDYCDCAAIAI2AgggACAINgIEIAAgCTYCACAHRQ0AIAcQLyAAKAIIIQILIAIgCzYCACAAIAAoAghBBGo2AggMBAsgCCEBIAQhAwsDQCABIAMoAgA2AgAgA0EEaiEDIAFBBGoiASACRw0ACwsgACAMNgIMIAAgAjYCCCAAIAg2AgQgACAJNgIAIAdFDQAgBxAvIAAoAgghAgsgAiALNgIAIAAgACgCCEEEajYCCAsgBUEgaiQAC+cVARB/IwBBgAFrIgYkACAGQQA2AnwgBkIANwJ0IAb9DAAAAAAAAAAAAAAAAAAAAAD9CwNgIAb9DAAAAAAAAAAAAAAAAAAAAAD9CwNQIAb9DAAAAAAAAAAAAAAAAAAAAAD9CwNAAkACQAJ/QQAgACgCHCIQRQ0AGiAGQQA6ADwgBiACNgI4IAYgAjYCNCAG/QwAAAAAAAAAAAAAAAAAAAAA/QsDICAG/QwAAAAAAAAAAAAAAAAAAAAA/QsDECAG/QwAAAAAAAAAAAAAAAAAAAAA/QsDACAGQfQAaiAGEPcBIAYoAhwiBwRAIAYgBzYCICAHEC8LIAYoAhAiBwRAIAYgBzYCFCAHEC8LIAYoAngiB0E0ayIIQQA2AgAgCCACNgIMIAggATYCCCAIIAE2AgQCQCAAKAIQIgkgCCgCFCAIQRBqIgooAgAiC2tBDG0iDUsEQCAKIAkgDWsgBkE0ahCqBCAGKAJ4IQcMAQsgCSANTw0AIAggCyAJQQxsajYCFAsCQCAAKAIUIgAgB0E0ayIIIgkoAiAgCEEcaiINKAIAIgprQQN1IghLBEAgDSAAIAhrEMwCIAYoAnghBwwBCyAAIAhPDQAgCSAKIABBA3RqNgIgCyACIAFrIQ0gB0E0ayIAIAU6ADAgACAENgIsIAAgEDYCKCAEQYAgcSERIARBIHEhEkEAIQhBACEAQQAhBQNAIABBAWoiAEH/H3FFIABBDHYgDU5xDQIgB0E0ayIKKAIoIgQEQCAEIAogBCgCACgCCBECAAsCQAJAAkACQCAKKAIAQegHag4KAAcHBwcDAwIBAwcLIAdBLGsoAgAhBAJAIBJFDQAgASAERw0AIAYoAngiBEEYaygCACIHBEAgBEEUayAHNgIAIAcQLwsgBEEkaygCACIHBEAgBEEgayAHNgIAIAcQLwsgBiAEQTRrNgJ4DAMLAkAgEUUNACACIARGDQAgBigCeCIEQRhrKAIAIgcEQCAEQRRrIAc2AgAgBxAvCyAEQSRrKAIAIgcEQCAEQSBrIAc2AgAgBxAvCyAGIARBNGs2AngMAwsgCCAFIAQgB0EwaygCAGsiEE5xRQRAIAYgCv0AAgD9CwNAIAogBkFAa0cEQAJAIAooAhQiDCAKKAIQIgdrIglBDG0iCCAGKAJYIgQgBigCUCIFa0EMbU0EQCAHIAcgBigCVCIJIAUiBGtBDG0iDkEMbGoiCyAMIAggDksbIg9HBEADQCAEIAcoAgA2AgAgBCAHKAIENgIEIAQgBy0ACDoACCAEQQxqIQQgB0EMaiIHIA9HDQALCyAIIA5LBEAgCyAMRwRAA0AgCSALKQIANwIAIAkgCygCCDYCCCAJQQxqIQkgC0EMaiILIAxHDQALCyAGIAk2AlQMAgsgBiAFIAQgBWtBDG1BDGxqNgJUDAELIAUEQCAGIAU2AlQgBRAvIAZBADYCWCAGQgA3AlBBACEECwJAIAhB1qrVqgFPDQBB1arVqgEgBEEMbSIEQQF0IgUgCCAFIAhLGyAEQarVqtUATxsiBEHWqtWqAU8NACAGIARBDGwiBRAxIgQ2AlQgBiAENgJQIAYgBCAFajYCWCAGIAcgDEcEfyAEIAcgCUEMayIFIAVBDHBrQQxqIgX8CgAAIAQgBWoFIAQLNgJUDAELEEEACwJAAkACQAJAIAooAiAiCyAKKAIcIgdrIghBA3UiDCAGKAJkIgQgBigCXCIFa0EDdU0EQCAHIAcgBigCYCIIIAVrIg5qIgkgCyAMIA5BA3UiD0sbIhNHBEAgByEEA0AgBSAEKAIANgIAIAUgBCgCBDYCBCAFQQhqIQUgBEEIaiIEIBNHDQALCyAMIA9LBEAgCSALRgRAIAYgCDYCYAwGCyALIAcgDmoiBGtBCGsiBUE4SQ0CIAggBGtBEEkNAiAIIAVBA3ZBAWoiDkH+////A3EiDEEDdCIEaiEFIAQgCWohBEEAIQcDQCAIIAdBA3QiD2ogCSAPav0AAgD9CwIAIAdBAmoiByAMRw0ACyAMIA5GDQQMAwsgBiAFNgJgDAQLIAUEQCAGIAU2AmAgBRAvIAZBADYCZCAGQgA3AlxBACEECwJAIAhBAEgNAEH/////ASAEQQJ1IgUgDCAFIAxLGyAEQfj///8HTxsiBEGAgICAAk8NACAGIARBA3QiBRAxIgQ2AmAgBiAENgJcIAYgBCAFajYCZCAGIAcgC0cEfyAEIAcgCEEIa0F4cUEIaiIF/AoAACAEIAVqBSAECzYCYAwECxBBAAsgCSEEIAghBQsDQCAFIAQpAgA3AgAgBUEIaiEFIARBCGoiBCALRw0ACwsgBiAFNgJgCwsgBiAKKQIoNwJoIAYgCi0AMDoAcCAQIQULIAYoAnghBCAFIA1GBEAgBigCdCIHIARHBEADQCAEQTRrIgUoAhwiCARAIARBFGsgCDYCACAIEC8LIARBJGsoAgAiCARAIARBIGsgCDYCACAIEC8LIAUiBCAHRw0ACwsgBiAHNgJ4QQEhCCANIQUMAwsgBEEYaygCACIHBEAgBEEUayAHNgIAIAcQLwsgBEEkaygCACIHBEAgBEEgayAHNgIAIAcQLwsgBiAEQTRrNgJ4QQEhCAwCCyAGIAoQywIhByAKKAIoIgRBASAKIAQoAgAoAgwRBQAgBigCKCIEQQAgByAEKAIAKAIMEQUAAkAgBigCeCIEIAYoAnxJBEAgBCAH/QACAP0LAgAgBP0MAAAAAAAAAAAAAAAAAAAAAP0LAhAgBCAGKAIQNgIQIAQgBigCFDYCFCAEIAYoAhg2AhggBkEANgIQIARCADcCICAEIAYoAhw2AhwgBCAGKAIgNgIgIAQgBigCJDYCJCAG/QwAAAAAAAAAAAAAAAAAAAAA/QsCGCAEIAYtADA6ADAgBCAGKQIoNwIoIAYgBEE0ajYCeAwBCyAGQfQAaiAHEPcBIAYoAhwiBEUNACAGIAQ2AiAgBBAvCyAGKAIQIgRFDQEgBiAENgIUIAQQLwwBCyAGKAJ4IgRBGGsoAgAiBwRAIARBFGsgBzYCACAHEC8LIARBJGsoAgAiBwRAIARBIGsgBzYCACAHEC8LIAYgBEE0azYCeAsgBigCeCIHIAYoAnRHDQALIAgEQCADKAIAIgBBAToACCAAIAEgBWo2AgQgACABNgIAAkAgBigCVCICIAYoAlAiAUYNAEEBIAIgAWtBDG0iAiACQQFNGyIDQQFxIRRBACEEIAJBAk8EQCADQX5xIQhBACECA0AgACAEQQFyQQxsIglqIgMgASAEQQxsIg1qIgUoAgA2AgAgAyAFKAIENgIEIAMgBS0ACDoACCAAIA1qIgMgASAJaiIFKAIANgIYIAMgBSgCBDYCHCADIAUtAAg6ACAgBEECaiEEIAJBAmoiAiAIRw0ACwsgFEUNACAEQQxsIgIgAGoiACABIAJqIgEoAgA2AgwgACABKAIENgIQIAAgAS0ACDoAFAtBAQwBC0EACyEVIAYoAlwiAARAIAYgADYCYCAAEC8LIAYoAlAiAARAIAYgADYCVCAAEC8LIAYoAnQiAQRAIAYoAngiBCABIgBHBEADQCAEQTRrIgAoAhwiAgRAIARBFGsgAjYCACACEC8LIARBJGsoAgAiAgRAIARBIGsgAjYCACACEC8LIAAiBCABRw0ACyAGKAJ0IQALIAYgATYCeCAAEC8LIAZBgAFqJAAgFQ8LEMoCAAsQyQIAC7IcARZ/IwBB0ABrIgYkACAGQgA3A0ggBv0MAAAAAAAAAAAAAAAAAAAAAP0LAzgCf0EAIAAoAhwiEkUNABogBkE4ahCgBCAGKAI8IAYoAkwgBigCSGoiCEHOAG4iB0ECdGooAgAgCCAHQc4AbGtBNGxqIgf9DAAAAAAAAAAAAAAAAAAAAAD9CwIAIAf9DAAAAAAAAAAAAAAAAAAAAAD9CwIgIAf9DAAAAAAAAAAAAAAAAAAAAAD9CwIQIAYgBigCTCIJQQFqIgg2AkwgBigCPCIHIAkgBigCSCIPaiIKQc4AbiIJQQJ0aiINKAIAIAogCUHOAGxrQTRsIgpqIgkgATYCBCAJQQA2AgAgDSgCACAKaiABNgIIIA0oAgAgCmogAjYCDAJAIAAoAhQiECANKAIAIApqIgooAiAgCigCHCIAa0EDdSIJSwRAIApBHGogECAJaxDMAiAGKAI8IQcgBigCSCEPIAYoAkwhCAwBCyAJIBBNDQAgCiAAIBBBA3RqNgIgCyACIAFrIRAgByAIIA9qQQFrIglBzgBuIgBBAnRqIgcoAgAgCSAAQc4AbGtBNGwiAGogEjYCKCAHKAIAIABqIgAgBToAMCAAIAQ2AiwgBEGAIHEhFSAEQSBxIRZBACEPQQAhBEEAIQUDQAJAAkACQAJAAkAgBEEBaiIEQf8fcUUgBEEMdiAQTnFFBEAgBigCPCAIIAYoAkhqQQFrIgdBzgBuIgBBAnRqKAIAIAcgAEHOAGxrQTRsaiIMKAIoIgAEQCAAIAwgACgCACgCCBECAAsCQAJAAkACQCAMKAIAQegHag4KAAgFBQUBCAMCCAULIAwoAgghAAJAIBZFDQAgACABRw0AIAYoAjwgBigCTCAGKAJIakEBayIHQc4AbiIAQQJ0aigCACAHIABBzgBsa0E0bGoiBygCHCIABEAgByAANgIgIAAQLwsgBygCECIABEAgByAANgIUIAAQLwsgBiAGKAJMIgdBAWs2AkwgBigCQCIIIAYoAjwiAGtBAnVBzgBsQQFrQQAgACAIRxsgByAGKAJIamtBAWpBnAFJDQggCEEEaygCABAvIAYgBigCQEEEazYCQAwICwJAIBVFDQAgACACRg0AIAYoAjwgBigCTCAGKAJIakEBayIHQc4AbiIAQQJ0aigCACAHIABBzgBsa0E0bGoiBygCHCIABEAgByAANgIgIAAQLwsgBygCECIABEAgByAANgIUIAAQLwsgBiAGKAJMIgdBAWs2AkwgBigCQCIIIAYoAjwiAGtBAnVBzgBsQQFrQQAgACAIRxsgByAGKAJIamtBAWpBnAFJDQggCEEEaygCABAvIAYgBigCQEEEazYCQAwICyAQIAUgACAMKAIEayIAIAAgBUwbIAAgDxsiBUYEQCAGKAJAIgcgBigCPCIARgRAIAAhBwwICyAAIAYoAkgiCUHOAG4iBUECdGoiCigCACAJIAVBzgBsa0E0bGoiCCAAIAYoAkwgCWoiCUHOAG4iBUECdGooAgAgCSAFQc4AbGtBNGxqIgVGDQcDQCAIKAIcIgAEQCAIIAA2AiAgABAvCyAIKAIQIgAEQCAIIAA2AhQgABAvCyAIQTRqIgggCigCAGtB2B9GBEAgCigCBCEIIApBBGohCgsgBSAIRw0ACwwGCyAGKAI8IAYoAkwgBigCSGpBAWsiB0HOAG4iAEECdGooAgAgByAAQc4AbGtBNGxqIgcoAhwiAARAIAcgADYCICAAEC8LIAcoAhAiAARAIAcgADYCFCAAEC8LIAYgBigCTCIHQQFrNgJMQQEhDyAGKAJAIgggBigCPCIAa0ECdUHOAGxBAWtBACAAIAhHGyAHIAYoAkhqa0EBakGcAUkNByAIQQRrKAIAEC8gBiAGKAJAQQRrNgJADAcLIAYoAkgiCkUEQCMAQRBrIg4kAAJAIAZBOGoiCygCCCINIAsoAgQiEWtBAnUiCEHOAGxBAWtBACANIBFHGyALKAIQIgAgCygCFGprQc4ATwRAIAsgAEHOAGo2AhAgDiANQQRrIgAoAgA2AgwgCyAANgIIIAsgDkEMahDSAQwBCyAIIAsoAgwiByALKAIAIglrIgBBAnVJBEACQCAJIBFHBEAgDkHYHxAxNgIMIAsgDkEMahDSAQwBCyAOQdgfEDE2AgwgCyAOQQxqIgcQnwQgDiALKAIIQQRrIgAoAgA2AgwgCyAANgIIIAsgBxDSAQsgC0EnIAsoAhBBzgBqIAsoAgggCygCBGtBBEYbNgIQDAELAkACQEEBIABBAXUgByAJRhsiCUGAgICABE8NACAJQQJ0IgcQMSEAQdgfEDEhCCAJBH8gACAHagVBBBAxIRogABAvIAsoAgghDSALKAIEIREgGiIAQQRqCyEKIAAgCDYCACAAQQRqIQcgDSARRgRAIAAhCAwCCyAAIQgDQAJAIAcgCkcEQCAHIQ0MAQsgACAISwRAIAAgACAIa0ECdUEBakF+bUECdGoiCSAAIAcgAGsiAPwKAAAgACAJaiENIAkhACAHIQoMAQtBASAHIAhrQQF1IAcgCEYbIglBgICAgARPDQIgCUECdCIXEDEiEiAJQXxxIgpqIgkhDQJAIAAgB0YNACAJIAcgAGsiB0F8cWohDQJAAkAgB0EEayIHQRxJDQAgCiASaiAAa0EQSQ0AIAAgB0ECdkEBaiIYQfz///8HcSIUQQJ0IgpqIQcgCSAKaiEKQQAhEwNAIAkgE0ECdCIZaiAAIBlq/QACAP0LAgAgE0EEaiITIBRHDQALIBQgGEYNAgwBCyAJIQogACEHCwNAIAogBygCADYCACAHQQRqIQcgCkEEaiIKIA1HDQALCyASIBdqIQogCARAIAgQLwsgEiEIIAkhAAsgDSARKAIANgIAIA1BBGohByARQQRqIhEgCygCCEcNAAsMAQsQUQALIAsgCjYCDCALIAc2AgggCyAANgIEIAsoAgAhCSALIAg2AgAgC0EnIAsoAhBBzgBqIAcgAGtBBEYbNgIQIAlFDQAgCRAvCyAOQRBqJAAgBigCSCEKCyAGKAI8IgkgCkHOAG4iAEECdGoiCCgCACIHIAogAEHOAGxrQTRsakEAIAYoAkAgCUcbIgAgB0YEfyAIQQRrKAIAQdgfagUgAAtBNGsiACAM/QACAP0LAgAgAEEANgIYIABCADcCECAAIAwoAhA2AhAgACAMKAIUNgIUIAAgDCgCGDYCGCAMQQA2AhggDEIANwIQIABBADYCJCAAQgA3AhwgACAMKAIcNgIcIAAgDCgCIDYCICAAIAwoAiQ2AiQgDEEANgIkIAxCADcCHCAAIAwtADA6ADAgACAMKQIoNwIoIAYgBigCTCIHQQFqNgJMIAYgBigCSEEBayIANgJIIAYoAjwgACAHaiIHQc4AbiIAQQJ0aigCACAHIABBzgBsa0E0bGoiBygCHCIABEAgByAANgIgIAAQLwsgBygCECIABEAgByAANgIUIAAQLwsgBiAGKAJMIgdBAWs2AkwgBigCQCIIIAYoAjwiAGtBAnVBzgBsQQFrQQAgACAIRxsgByAGKAJIamtBAWpBnAFJDQYgCEEEaygCABAvIAYgBigCQEEEazYCQAwGCyAGQQRqIAwQywIhCSAMKAIoIgBBASAMIAAoAgAoAgwRBQAgBigCLCIAQQAgCSAAKAIAKAIMEQUAIAYoAkwgBigCSGogBigCQCIAIAYoAjwiCGtBAnVBzgBsQQFrQQAgACAIRxtGBH8gBkE4ahCgBCAGKAI8IQggBigCQAUgAAsgCEYEf0EABSAIIAYoAkwgBigCSGoiB0HOAG4iAEECdGooAgAgByAAQc4AbGtBNGxqCyIHIAn9AAIA/QsCACAH/QwAAAAAAAAAAAAAAAAAAAAA/QsCECAHIAYoAhQ2AhAgByAGKAIYNgIUIAYoAhwhACAHQgA3AiAgByAANgIYIAcgBigCIDYCHCAHIAYoAiQ2AiAgByAGKAIoNgIkIAZCADcCJCAG/QwAAAAAAAAAAAAAAAAAAAAA/QsCFCAHIAYtADQ6ADAgByAGKQIsNwIoIAYgBigCTEEBaiIINgJMDAYLIAYoAjwgBigCTCAGKAJIakEBayIHQc4AbiIAQQJ0aigCACAHIABBzgBsa0E0bGoiBygCHCIABEAgByAANgIgIAAQLwsgBygCECIABEAgByAANgIUIAAQLwsgBiAGKAJMIgdBAWs2AkwgBigCQCIIIAYoAjwiAGtBAnVBzgBsQQFrQQAgACAIRxsgByAGKAJIamtBAWpBnAFJDQQgCEEEaygCABAvIAYgBigCQEEEazYCQAwECxDKAgALEMkCAAsgBigCPCEAIAYoAkAhBwsgBkEANgJMIAcgAGsiCEEISwRAA0AgACgCABAvIAYgBigCPEEEaiIANgI8IAYoAkAgAGsiCEEISw0ACwtBASEPQSchACAQIQUCQAJAIAhBAnZBAWsOAgEAAgtBzgAhAAsgBiAANgJICyAGKAJMIQgLIAgNAAtBACAPRQ0AGiADKAIAIgBBAToACCAAIAEgBWo2AgQgACABNgIAQQELIRsgBkEANgJMIAYoAkAiBCAGKAI8IghrIgBBCU8EQANAIAgoAgAQLyAGIAYoAjxBBGoiCDYCPCAGKAJAIgQgCGsiAEEISw0ACwtBJyEBAkACQAJAIABBAnZBAWsOAgEAAgtBzgAhAQsgBiABNgJICwJAIAQgCEYNAANAIAgoAgAQLyAIQQRqIgggBEcNAAsgBigCQCIBIAYoAjwiAEYNACAGIAEgACABa0EDakF8cWo2AkALIAYoAjgiAARAIAAQLwsgBkHQAGokACAbC3sAAkAgASACRg0AIAFBAWogAkYNACABLQAAQdwARw0AAkAgASwAASICQSRrDjsAAQEBAQEAAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAABAAELIAAgAhBYIAFBAmohAQsgAQvGAwEFfwJAAkACQCAAKAIEIAAoAgAiBGtBGG0iBUEBaiICQavVqtUASQRAQarVqtUAIAAoAgggBGtBGG0iBEEBdCIGIAIgAiAGSRsgBEHVqtUqTxsiBARAIARBq9Wq1QBPDQIgBEEYbBAxIQMLIAVBGGwgA2oiAiABKQIANwIAIAIgASgCCDYCCCABQgA3AgAgAUEANgIIIAIgASgCFDYCFCACIAEpAgw3AgwgAUIANwIMIAFBADYCFCADIARBGGxqIQMgAkEYaiEEIAAoAgQiASAAKAIAIgVGDQIDQCACQRhrIgIgAUEYayIBKQIANwIAIAIgASgCCDYCCCABQgA3AgAgAUEANgIIIAIgASgCFDYCFCACIAEpAgw3AgwgAUIANwIMIAFBADYCFCABIAVHDQALIAAgAzYCCCAAKAIEIQMgACAENgIEIAAoAgAhASAAIAI2AgAgASADRg0DA0AgA0EBaywAAEEASARAIANBDGsoAgAQLwsgA0EYayEAIANBDWssAABBAEgEQCAAKAIAEC8LIAAiAyABRw0ACwwDCxBBAAsQUQALIAAgAzYCCCAAIAQ2AgQgACACNgIACyABBEAgARAvCwsTAEEMEGFBARBxQcCNA0ErEAIAC7EMAQt/AkAgASACRwRAAkACQAJAAkACQAJAAkACQAJAIAEsAAAiBUHEAGsONAMICAgICAgICAgICAgICAUICAgHCAgICAgICAgICAEIAggICAgICAgICAgICAgIBAgICAYACyAFDQcgAyAFEFkMCQsgA0EIEFkMCAsgBCAEKAJQQcAAcjYCUAwHCyAEIAQoAlRBwAByNgJUDAYLIAQgBCgCUEEBcjYCUAwFCyAEIAQoAlRBAXI2AlQMBAsgBCAEKAJQQeAAcjYCUCAEQd8AEKIBDAMLIAQgBCgCVEHgAHI2AlRB3wAhBQJAAkACQAJAIAQtAFkEQCAEKAIMIgBB3wAgACgCACgCFBEEACEFIAQoAiQiAyAEKAIoIgJJDQMgAyAEKAIgIgZrIghBAWoiAEEASA0BIAhB/////wcgAiAGayICQQF0IgcgACAAIAdJGyACQf////8DTxsiBwR/IAcQMQVBAAsiAmoiACAFOgAAIAIgB2ohCSAAQQFqIQoCQCADIAZGBEAgACECDAELAkACQCAIQRBJDQAgBiACIANqayADakEQSQ0AIABBEGshCyADQRBrIQwgAyAIQXBxIgdrIQMgACAHayEAQQAhBQNAIAsgBWsgDCAFa/0AAAD9CwAAIAVBEGoiBSAHRw0ACyAHIAhGDQELIAZBf3MgA2ohDSADIAZrQQNxIgcEQEEAIQUDQCAAQQFrIgAgA0EBayIDLQAAOgAAIAVBAWoiBSAHRw0ACwsgDUEDSQ0AA0AgAEEBayADQQFrLQAAOgAAIABBAmsgA0ECay0AADoAACAAQQNrIANBA2stAAA6AAAgAEEEayIAIANBBGsiAy0AADoAACADIAZHDQALCyAEKAIgIQMLIAQgCTYCKCAEIAo2AiQgBCACNgIgIANFDQQgAxAvDAQLIAQoAighACAEKAIkIQMCQCAELQBaBEAgACADSw0EIAMgBCgCICIGayIIQQFqIgJBAEgNAyAIQf////8HIAAgBmsiAEEBdCIFIAIgAiAFSRsgAEH/////A08bIgUEfyAFEDEFQQALIgJqIgBB3wA6AAAgAiAFaiEJIABBAWohCgJAIAMgBkYEQCAAIQIMAQsCQAJAIAhBEEkNACAGIAIgA2prIANqQRBJDQAgAEEQayELIANBEGshDCADIAhBcHEiB2shAyAAIAdrIQBBACEFA0AgCyAFayAMIAVr/QAAAP0LAAAgBUEQaiIFIAdHDQALIAcgCEYNAQsgBkF/cyADaiEOIAMgBmtBA3EiBwRAQQAhBQNAIABBAWsiACADQQFrIgMtAAA6AAAgBUEBaiIFIAdHDQALCyAOQQNJDQADQCAAQQFrIANBAWstAAA6AAAgAEECayADQQJrLQAAOgAAIABBA2sgA0EDay0AADoAACAAQQRrIgAgA0EEayIDLQAAOgAAIAMgBkcNAAsLIAQoAiAhAwsgBCAJNgIoIAQgCjYCJCAEIAI2AiAgAw0BDAULIAAgA0cNAyADIAQoAiAiCGsiBkEBaiIAQQBIDQIgBkH/////ByAGQQF0IgIgACAAIAJJGyAGQf////8DTxsiBQR/IAUQMQVBAAsiAmoiAEHfADoAACACIAVqIQkgAEEBaiEKAkAgAyAIRgRAIAAhAgwBCwJAAkAgBkEQSQ0AIAggAiADamsgA2pBEEkNACAAQRBrIQsgA0EQayEMIAMgBkFwcSIHayEDIAAgB2shAEEAIQUDQCALIAVrIAwgBWv9AAAA/QsAACAFQRBqIgUgB0cNAAsgBiAHRg0BCyAIQX9zIANqIQ8gAyAIa0EDcSIHBEBBACEFA0AgAEEBayIAIANBAWsiAy0AADoAACAFQQFqIgUgB0cNAAsLIA9BA0kNAANAIABBAWsgA0EBay0AADoAACAAQQJrIANBAmstAAA6AAAgAEEDayADQQNrLQAAOgAAIABBBGsiACADQQRrIgMtAAA6AAAgAyAIRw0ACwsgBCgCICEDCyAEIAk2AiggBCAKNgIkIAQgAjYCICADRQ0ECyADEC8MAwsQQQALEEEACyADIAU6AAAgBCADQQFqNgIkCwwCCyAAIAEgAiADEKkEDwsQ9gEACyABQQFqC80BAQR/IwBBEGsiBSQAAkACQCACIAFrIgRBAkgNACABIARqQQFrIQcgASEEA0AgBEEBaiEGIAQtAABBLkYEQCAGLQAAQd0ARwRAIAYiBCAHRw0CDAMLIAIgBEYNAiAFQQRqIAAgASAEEMcCIAMsAAtBAEgEQCADKAIAEC8LIAMgBSkCBDcCACADIAUoAgw2AgggAygCBCADLQALIgAgAMBBAEgbQQFrQQJPDQMgBUEQaiQAIARBAmoPCyAGIgQgB0cNAAsLEPQBAAsQpQQAC80CAQN/IABBtJsBNgIAIAAoAkQiAwRAIAAoAkgiAiADIgFHBEADQCACQQxrIQEgAkEBaywAAEEASARAIAEoAgAQLwsgASICIANHDQALIAAoAkQhAQsgACADNgJIIAEQLwsgACgCOCIBBEAgACABNgI8IAEQLwsgACgCLCIDBEAgACgCMCIBIAMiAkcEQANAIAFBAWssAABBAEgEQCABQQxrKAIAEC8LIAFBGGshAiABQQ1rLAAAQQBIBEAgAigCABAvCyACIgEgA0cNAAsgACgCLCECCyAAIAM2AjAgAhAvCyAAKAIgIgEEQCAAIAE2AiQgARAvCyAAKAIUIgEEQCAAIAE2AhggARAvCyAAKAIIIgFBBGpBf/4eAgBFBEAgASABKAIAKAIIEQAACyAAQayUATYCACAAKAIEIgEEQCABIAEoAgAoAgQRAAALIAALngYBBH8CQAJAIAEgAkcEfwJAAkACQAJAAkACQAJAAkACQAJAIAEtAAAiBsAiBEEwaw5JCAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJBQkJAAkJCQkJCQkBCQkJAgkDBgQJBwkLAkAgAwRAIANBDBBZDAELIABBDBBYCwwLCwJAIAMEQCADQQoQWQwBCyAAQQoQWAsMCgsCQCADBEAgA0ENEFkMAQsgAEENEFgLDAkLAkAgAwRAIANBCRBZDAELIABBCRBYCwwICwJAIAMEQCADQQsQWQwBCyAAQQsQWAsMBwsgAUEBaiACRg0FIAEsAAEiAkHBAEgNBSACQeEAa0H/AXFBGUsgAkHbAE9xDQUgAkEfcSECAkAgAwRAIAMgAhBZDAELIAAgAhBYCyABQQJqDwsgAUEBaiACRg0EQdD/AyEGAkAgAS0AASIFQfgBcUEwRg0AIAVB/gFxQThGDQBBqf8DIQYgBUEgciIFQeEAa0H/AXFBBk8NBQsgAUECaiIBIAJGDQRB0P8DIQcCQCABLQAAIgRB+AFxQTBGDQAgBEH+AXFBOEYNAEGp/wMhByAEQSByIgRB4QBrQf8BcUEGTw0FCyAEIAdqQQR0IAUgBmpBCHRqIQULIAFBAWogAkYNA0HQ/wMhBgJAIAEtAAEiBEH4AXFBMEYNACAEQf4BcUE4Rg0AQan/AyEGIARBIHIiBEHhAGtB/wFxQQZPDQQLIAFBAmogAkYNA0HQ/wMhBwJAIAEtAAIiAkH4AXFBMEYNACACQf4BcUE4Rg0AQan/AyEHIAJBIHIiAkHhAGtB/wFxQQZPDQQLIAIgB2ogBCAGaiAFakEEdGohAgJAIAMEQCADIALAEFkMAQsgACACwBBYCyABQQNqDwsCQCADBEAgA0EAEFkMAQsgAEEAEFgLDAMLIARB3wBGDQEgBEEATgRAIAAoAgQoAgggBkECdGotAABB4ABxDQILAkAgAwRAIAMgBBBZDAELIAAgBBBYCyABQQFqBSABCw8LEPYBAAsgAUEBagvoBAEIfyABIAAoAggiBiAAKAIEIgRrQQxtTQRAAkAgAUUNACAEIQMgAUEMbEEMayIFQQxuQQFqQQNxIgYEQANAIAMgAikCADcCACADIAIoAgg2AgggA0EMaiEDIAlBAWoiCSAGRw0ACwsgAUEMbCAEaiEEIAVBJEkNAANAIAMgAikCADcCACADIAIoAgg2AgggAyACKAIINgIUIAMgAikCADcCDCADIAIoAgg2AiAgAyACKQIANwIYIAMgAikCADcCJCADIAIoAgg2AiwgA0EwaiIDIARHDQALCyAAIAQ2AgQPCwJAIAQgACgCACIDa0EMbSIFIAFqIgdB1qrVqgFJBEBB1arVqgEgBiADa0EMbSIGQQF0IgMgByADIAdLGyAGQarVqtUATxsiBwRAIAdB1qrVqgFPDQIgB0EMbBAxIQoLIAogBUEMbGoiCCEDIAFBDGwiBUEMayIGQQxuQQFqQQNxIgEEQANAIAMgAikCADcCACADIAIoAgg2AgggA0EMaiEDIAlBAWoiCSABRw0ACwsgBSAIaiEFIAZBJE8EQANAIAMgAikCADcCACADIAIoAgg2AgggAyACKAIINgIUIAMgAikCADcCDCADIAIoAgg2AiAgAyACKQIANwIYIAMgAikCADcCJCADIAIoAgg2AiwgA0EwaiIDIAVHDQALCyAAKAIAIgEgBEcEQANAIAhBDGsiCCAEQQxrIgQpAgA3AgAgCCAEKAIINgIIIAEgBEcNAAsgACgCACEECyAAIAogB0EMbGo2AgggACAFNgIEIAAgCDYCACAEBEAgBBAvCw8LEEEACxBRAAsTAEEMEGFBCBBxQcCNA0ErEAIACxMAQQwQYUEHEHFBwI0DQSsQAgALtAEBAn9BOBAxIQQgACgCJCgCBCEFIARBrJYBNgIAIAQgBTYCBCAEQQhqIAEoAgAiBTYCACAFQQRqQQH+HgIAGiAEIAEpAgQ3AgwgBCABKQIMNwIUIAQgASkCFDcCHCAEIAEoAhw2AiQgBCABKAIgIgU2AiggBQRAIAVBAf4eAgQaCyABKAIkIQEgBCACOgA0IAQgAzYCMCAEIAE2AiwgACgCJCAENgIEIAAgACgCJCgCBDYCJAtQAQF/IAAQ2QEiACAAQczuNBB6NgIEIABBgO00EHohASAAQgA3AhAgAEGABDYCDCAAIAE2AgggAP0MAAAAAAAAAAAAAAAAAAAAAP0LAhggAAsUACABQZ54NgIAIAEgACgCBDYCKAsTAEEMEGFBDxBxQcCNA0ErEAIAC9cJAQV/AkACQAJAIAEgAkYNACABLQAAIgZBKkYEQEEIEDEhBiAAKAIkIgIoAgQhCCAGQZiTATYCACAGIAg2AgQgAkEANgIEQSQQMSECIAAoAhQhCCADKAIEIQcgAiAGNgIIIAIgBzYCBCACQQE6ACAgAiAFNgIcIAIgBDYCGCACIAg2AhQgAkKAgICAcDcCDCACQaydATYCACADQQA2AgRBCBAxIgRBqJ4BNgIAIAQgAjYCBCAAKAIkIAQ2AgQgACACKAIINgIkIAMgAjYCBCAAIAhBAWo2AhQgAUEBag8LIAFBAWogAkYNACAGQdwARw0AIAEtAAEiBkH7AEcNACABIAZB+wBGQQF0aiIGIAJGDQEgBi0AACIBQfgBcUEwRyABQf4BcUE4R3ENASABQTBrIQgCQCACIAZBAWoiAUcEQANAIAEtAAAiB0H4AXFBMEcgB0H+AXFBOEdxDQIgCEHMmbPmAE4NBCAIQQpsIAdqQTBrIQggAUEBaiIBIAJHDQALCyACIQELIAEgBkYNASABIAJGDQIgAUEBaiEGIAEtAAAiB0EsRwRAIAIgBkYNAyAHQdwARw0DIAYtAABB/QBHDQNBCBAxIQYgACgCJCICKAIEIQcgBkGYkwE2AgAgBiAHNgIEIAJBADYCBEEkEDEhAiAAKAIUIQcgAygCBCEJIAIgBjYCCCACIAk2AgQgAkEBOgAgIAIgBTYCHCACIAQ2AhggAiAHNgIUIAIgCDYCECACIAg2AgwgAkGsnQE2AgAgA0EANgIEQQgQMSIEQaieATYCACAEIAI2AgQgACgCJCAENgIEIAAgAigCCDYCJCADIAI2AgQgACAHQQFqNgIUIAFBAmoPCyACIAZGDQICQCAGLQAAIglB+AFxQTBHBEBBfyEHIAlB/gFxQThHDQELIAFBAmoiBiACRg0DIAlBMGshBwNAIAYtAAAiAUH4AXFBMEcgAUH+AXFBOEdxDQEgB0HMmbPmAE4NAyAHQQpsIAFqQTBrIQcgBkEBaiIGIAJHDQALDAMLIAIgBkYNAiAGQQFqIAJGDQIgBi0AAEHcAEcNAiAGLQABQf0ARiIBRQ0CIAYgAUEBdGohASAHQX9GBEBBCBAxIQYgACgCJCICKAIEIQcgBkGYkwE2AgAgBiAHNgIEIAJBADYCBEEkEDEhAiAAKAIUIQcgAygCBCEJIAIgBjYCCCACIAk2AgQgAkEBOgAgIAIgBTYCHCACIAQ2AhggAiAHNgIUIAJBfzYCECACIAg2AgwgAkGsnQE2AgAgA0EANgIEQQgQMSIEQaieATYCACAEIAI2AgQgACgCJCAENgIEIAAgAigCCDYCJCADIAI2AgQgACAHQQFqNgIUIAEPCyAHIAhIDQFBCBAxIQYgACgCJCICKAIEIQkgBkGYkwE2AgAgBiAJNgIEIAJBADYCBEEkEDEhAiAAKAIUIQkgAygCBCEKIAIgBjYCCCACIAo2AgQgAkEBOgAgIAIgBTYCHCACIAQ2AhggAiAJNgIUIAIgBzYCECACIAg2AgwgAkGsnQE2AgAgA0EANgIEQQgQMSIEQaieATYCACAEIAI2AgQgACgCJCAENgIEIAAgAigCCDYCJCADIAI2AgQgACAJQQFqNgIUCyABDwsQqwQACxCsBAALjgUBBX8CQAJAAkACfwJAAkAgASACRiIERQRAAkAgAiABQQFqIgNGIAEtAAAiBUEkRnENACAFQdsAa0ECSQ0AIAVBLkYNACAAIAXAEFggAwwECyAAIAEgAhCjBCIDIAFHDQIgBA0BIAEtAABBLkcNAUEIEDEhBSAAKAIkIgQoAgQhAyAFQfSfATYCACAFIAM2AgQgBCAFNgIEIAAgACgCJCgCBDYCJCABQQFqDAMLIAAgASACEKMEIgMgAUcNAQsgACABIAIQ0AIhAwsgAwsiAyABRw0AIAIgA0YNACACIAFBAWpGBEAgAQ8LIAEtAABB3ABHBEAgAQ8LIAEtAAEiA0EoRgRAIANBKEZBAXQhBQJAIAAtAAxBAnEEQCAAKAIQIQcMAQtBDBAxIQYgACAAKAIQQQFqIgc2AhAgACgCJCIEKAIEIQMgBiAHNgIIIAZBkJwBNgIAIAYgAzYCBCAEIAY2AgQgACAAKAIkKAIENgIkCyABIAVqIQMDQCADIgEgAkYNAyAAKAIQIQUgACgCJCEEIAEgACABIAIQsgQiA0cEQCAAIAMgAiAEIAVBAWogACgCEEEBahCxBCIDIAFHDQELCyABQQFqIAJGDQIgAS0AAEHcAEcNAiABLQABQSlGIgJFDQIgASACQQF0aiEDIAAtAAxBAnENAUEMEDEhBCAAKAIkIgIoAgQhASAEIAc2AgggBEHgnAE2AgAgBCABNgIEIAIgBDYCBCAAIAAoAiQoAgQ2AiQgAw8LAkAgA0H4AXFBMEYNACADQf4BcUE4Rg0AIAEPCyADQTFrQQhLBEAgAQ8LIANBMGsiAiAAKAIQSw0CIAAgAhDIAiABQQJqIQMLIAMPCxD5AQALEPUBAAupCwEFfwJAAkAgASACRwRAAkACQAJAAkACQAJAIAEsAAAiBEEoaw41AwUICAUFAAUFBQUFBQUFBQUFBQUFBQUIBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFAgEEC0EIEDEhAiAAKAIkIgQoAgQhBSACQYCXATYCACACIAU2AgQgBCACNgIEIAAgACgCJCgCBDYCJCABQQFqDwsCfyABIAEgAkYNABogASABLQAAQdwARw0AGgJAIAIgAUEBaiIFRwRAIAUtAAAiBkEwRgRAIABBABBYIAFBAmoMAwsCQCAGQTFrQf8BcUEITQRAIAZBMGshAwJAAkAgAUECaiIEIAJGDQAgBC0AACIHQTBrQf8BcUEKTw0BA0AgA0GZs+bMAU8NBiADQQpsIAdqIgZBMGshAyAEQQFqIgQgAkYNASAELQAAIgdBMGtB/wFxQQlNDQALDAELIAIhBAsgACgCECAGQTFrTQ0DIAAgAxDIAiAEIAVHDQELAn8CQAJAAkACQCACIAUiBEYNAAJAAkACQAJAAkACQCAELAAAQcQAaw40AQYGBgYGBgYGBgYGBgYGAwYGBgUGBgYGBgYGBgYGBgYABgYGBgYGBgYGBgYGBgYCBgYGBAYLQdwAEDEgACAAKAIkKAIEQQAgACgCDCIDQQFxIANBCHFBA3YQsAEhAwwGC0HcABAxIAAgACgCJCgCBEEBIAAoAgwiA0EBcSADQQhxQQN2ELABIQMMBQtB3AAQMSAAIAAoAiQoAgRBACAAKAIMIgNBAXEgA0EIcUEDdhCwASEDDAULQdwAEDEgACAAKAIkKAIEQQEgACgCDCIDQQFxIANBCHFBA3YQsAEhAwwEC0HcABAxIAAgACgCJCgCBEEAIAAoAgwiA0EBcSADQQhxQQN2ELABIQMgACgCJCADNgIEIAAgAzYCJCADIAMoAlBB4AByNgJQIANB3wAQogEMBAtB3AAQMSAAIAAoAiQoAgRBASAAKAIMIgNBAXEgA0EIcUEDdhCwASEDIAAoAiQgAzYCBCAAIAM2AiQgAyADKAJQQeAAcjYCUCADQd8AEKIBIARBAWohBAsgBAwDCyAAKAIkIAM2AgQgACADNgIkIAMgAygCUEHAAHI2AlAMAQsgACgCJCADNgIEIAAgAzYCJCADIAMoAlBBAXI2AlALIARBAWoLIgQgBUcNACABIAAgBSACQQAQqQQiACAAIAVGGyEECyAEDAILEPYBAAsQ9QEACw8LIAAgASACENACDwsgAUEBaiIEIAJGDQMCQCABQQJqIAJGDQAgBC0AAEE/Rw0AIAEtAAJBOkcNACAAIAAoAhhBAWo2AhggACABQQNqIAIQ0wIiASACRg0EIAEtAABBKUcNBCAAIAAoAhhBAWs2AhggAUEBag8LAkAgAC0ADEECcQRAIAAoAhAhAwwBC0EMEDEhASAAIAAoAhBBAWoiAzYCECAAKAIkIgUoAgQhBiABIAM2AgggAUGQnAE2AgAgASAGNgIEIAUgATYCBCAAIAAoAiQoAgQ2AiQLIAAgACgCGEEBajYCGCACIAAgBCACENMCIgRGDQMgBC0AAEEpRw0DIAAtAAxBAnFFBEBBDBAxIQEgACgCJCICKAIEIQUgASADNgIIIAFB4JwBNgIAIAEgBTYCBCACIAE2AgQgACAAKAIkKAIENgIkCyAAIAAoAhhBAWs2AhggBEEBag8LIARB+wBGDQMLAkAgASACRg0AAkAgASwAACICQSRrDloBAAAAAQEBAQAAAQAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEACyAAIAIQWCABQQFqIQELCyABDwsQ+QEAC0EMEGFBCxBxQcCNA0ErEAIAC/MFAgR/AX4jAEEwayIFJAACQAJAIAEgAkYNAAJAAkACQAJAIAEsAAAiA0Ekaw4FAQQEBAMACwJAIANB3ABrDgMCBAAEC0EMEDEhAiAAKAIMIQMgACgCJCIEKAIEIQYgAkHElAE2AgAgAiAGNgIEIAIgA0HwD3FBgAxGOgAIIAQgAjYCBCAAIAAoAiQoAgQ2AiQgAUEBaiEBDAMLQQwQMSECIAAoAgwhAyAAKAIkIgQoAgQhBiACQYyVATYCACACIAY2AgQgAiADQfAPcUGADEY6AAggBCACNgIEIAAgACgCJCgCBDYCJCABQQFqIQEMAgsgAUEBaiACRg0BIAEtAAEiAkHCAEcEQCACQeIARw0CQRgQMSECIAAoAiQoAgQhAyACQdSVATYCACACIAM2AgQgAkEIaiAAKAIAIgM2AgAgA0EEakEB/h4CABogACkCBCEHIAJBADoAFCACIAc3AgwgACgCJCACNgIEIAAgACgCJCgCBDYCJCABQQJqIQEMAgtBGBAxIQIgACgCJCgCBCEDIAJB1JUBNgIAIAIgAzYCBCACQQhqIAAoAgAiAzYCACADQQRqQQH+HgIAGiAAKQIEIQcgAkEBOgAUIAIgBzcCDCAAKAIkIAI2AgQgACAAKAIkKAIENgIkIAFBAmohAQwBCyABQQFqIAJGDQAgAS0AAUE/Rw0AIAFBAmogAkYNACABLAACIgNBIUcEQCADQT1HDQEgBUEIahCuBCIDIAAoAgw2AgwgAyABQQNqIAIQ2wIhASADKAIQIQQgACADQQAgACgCEBCtBCAAIAQgACgCEGo2AhAgASACRg0CIAEtAABBKUcNAiADELUEIAFBAWohAQwBCyAFQQhqEK4EIgMgACgCDDYCDCADIAFBA2ogAhDbAiEBIAMoAhAhBCAAIANBASAAKAIQEK0EIAAgBCAAKAIQajYCECABIAJGDQEgAS0AAEEpRw0BIAMQtQQgAUEBaiEBCyAFQTBqJAAgAQ8LEPkBAAtxAQJ/AkAgACgCICIBRQ0AIAFBf/4eAgQNACABIAEoAgAoAggRAAACQCABQQhqIgL+EAIABEAgAkF//h4CAA0BCyABIAEoAgAoAhARAAALCyAAKAIAIgBBBGpBf/4eAgBFBEAgACAAKAIAKAIIEQAACwvgFAERfyMAQfAAayIFJAAgBSABQYgVaigCACIKQTBr/QADAP0LA0AgCkEgayEEIAVB0ABqIQ8CQCAKQRVrLAAAQQBOBEAgDyAEKQMANwMAIA8gBCgCCDYCCAwBCyAPIAQoAgAgCkEcaygCABBwCyAFQQA2AmQgBUIANwJcIApBMGsiCygCICIIIAsoAhwiBmsiBEEwbSEJAkACQAJAIAYgCEYEQEEAIQRBACEGDAELIAlB1qrVKk8NASAFIAQQMSIENgJgIAUgBDYCXCAFIAQgCUEwbGo2AmQgBCEGIAsoAhwiCSALKAIgIghHBEADQCAGIAn9AAMA/QsDACAGIAn9AAMg/QsDICAGIAn9AAMQ/QsDECAGQTBqIQYgCUEwaiIJIAhHDQALCyAFIAY2AmALIAUgCkEIay0AADoAaCAFQQA2AjggBUIANwMwQQEhESAGIARrQQBMDQEgAUGEFWohE0EAIQkDQAJAIAQgDEEwbCIKaiILKAIAIgggACgC2AFODQACQAJAIAAoAtABIgZFDQADQCAIIAYoAhAiBEgEQCAGKAIAIgYNAQwCCyAEIAhODQIgBigCBCIGDQALC0GIIhCWAQALIAZBFGoiBCgCACAEIAYsAB9BAEgbIgQQZyAJaiEJAkAgDEEATA0AIAIgCU4NACADBEAgBC0AAEEgRw0BCyABKAKIFSIEQSBrIQYgBEEVaywAAEEASARAIAYoAgAQLwsgBiAFKQMwNwIAIAYgBSgCODYCCCAFQQA6ADsgBUEAOgAwIAEoAogVIgZBMGsiByALKQMYNwMIAkAgBygCICAHQRxqIggoAgAiBGtBMG0iCSAMSQRAIAggDCAJaxC4BCABKAKIFSEGDAELIAkgDE0NACAHIAQgCmo2AiALIAZBCGtBADoAACAFQQA6ACggBUIANwMgIAX9DAAAAAAAAAAAAAAAAAAAAAD9CwMQIAX9DAAAAAAAAAAAAAAAAAAAAAD9CwMAAkAgASgCjBUgBksEQCAG/QwAAAAAAAAAAAAAAAAAAAAA/QsDACAGIAUoAhg2AhggBiAFKQMQNwMQIAVCADcDECAFQQA2AhggBkEANgIkIAZCADcCHCAGIAUoAhw2AhwgBiAFKAIgNgIgIAYgBSgCJDYCJCAFQQA2AiQgBUIANwIcIAYgBS0AKDoAKCABIAZBMGo2AogVDAELIBMgBRDVAiAFKAIcIgRFDQAgBSAENgIgIAQQLwsgBSwAG0EASARAIAUoAhAQLwsgASgCiBUiBkEwayIIIAspAxg3AwAgCCAFKQNINwMIIAUoAmAiCyAFKAJcIApqIgdrIgRBMG0hECAGQRRrIg4oAgAiDSAIKAIgIA1rQTBtIghBMGxqIQoCQCAEQQBMDQAgDigCCCIEIA4oAgQiCWtBMG0gEE4EQAJAIAkgCmsiDEEwbSIEIBBOBEAgCSEIIAshBgwBCyAJIQggCyAHIARBMGxqIgZHBEAgBiEEA0AgCCAE/QADAP0LAwAgCCAE/QADIP0LAyAgCCAE/QADEP0LAxAgCEEwaiEIIARBMGoiBCALRw0ACwsgDiAINgIEIAxBAEwNAgsgCSAKIAgiBCAKIBBBMGxqayILQTBtQTBsaiINSwRAA0AgBCAN/QADAP0LAwAgBCAN/QADIP0LAyAgBCAN/QADEP0LAxAgBEEwaiEEIA1BMGoiDSAJSQ0ACwsgDiAENgIEIAggC0FQbUEwbGogCiAL/AoAACAKIAcgBiAHa/wKAAAMAQsCQCAJIA1rQTBtIBBqIgxB1qrVKkkEQEHVqtUqIAQgDWtBMG0iBkEBdCIEIAwgBCAMSxsgBkGq1aoVTxsiEgR/IBJB1qrVKk8NAiASQTBsEDEFQQALIhQgCEEwbGoiBiEIIAcgC0cEQAJAIBBBMGwiDEEwayILQTBuQQFqQQNxIghFBEAgBiEEDAELQQAhDSAGIQQDQCAEIAf9AAMA/QsDACAEIAf9AAMg/QsDICAEIAf9AAMQ/QsDECAHQTBqIQcgBEEwaiEEIA1BAWoiDSAIRw0ACwsgBiAMaiEIIAtBkAFPBEADQCAEIAf9AAMA/QsDACAEIAf9AAMg/QsDICAEIAf9AAMQ/QsDECAEQUBrIAdBQGv9AAMA/QsDACAEIAf9AANQ/QsDUCAEIAf9AAMw/QsDMCAEIAf9AANg/QsDYCAEIAf9AANw/QsDcCAEIAf9AAOAAf0LA4ABIAQgB/0AA5AB/QsDkAEgBCAH/QADoAH9CwOgASAEIAf9AAOwAf0LA7ABIAdBwAFqIQcgBEHAAWoiBCAIRw0ACwsgDigCACENCyAGIQQgCCAKIAoiByANRwR/A0AgBEEwayIEIAdBMGsiB/0AAwD9CwMAIAQgB/0AAyD9CwMgIAQgB/0AAxD9CwMQIAcgDUcNAAsgDigCACEHIA4oAgQFIAkLIAprIgb8CgAAIA4gEkEwbCAUajYCCCAOIAQ2AgAgDiAIIAZBMG1BMGxqNgIEIAcEQCAHEC8LDAILEEEACxBRAAsgASgCiBVBCGsgBS0AaDoAAAJ/IAUsADtBAEgEQCAFQQA2AjQgBSgCMAwBCyAFQQA6ADsgBUEwagtBADoAACAFIAEoAogVIgdBMGsiCP0AAwD9CwNAIAggBUFAa0cEQCAHQSBrIQkgB0EVay0AACIGwCEEAkAgBSwAW0EATgRAIARBAE4EQCAPIAkpAwA3AwAgDyAJKAIINgIIDAILIA8gCSgCACAHQRxrKAIAENUBDAELIA8gCSgCACAJIARBAEgiBBsgB0EcaygCACAGIAQbENYBCwJAIAgoAiAiCSAIKAIcIgprIghBMG0iCyAFKAJkIgQgBSgCXCIMa0EwbU0EQCAFKAJgIAxrIgZBMG0iBCALSQRAIAwgCiAG/AoAACAFKAJgIQYgCSAKIARBMGxqIgRHBEADQCAGIAT9AAMA/QsDACAGIAT9AAMg/QsDICAGIAT9AAMQ/QsDECAGQTBqIQYgBEEwaiIEIAlHDQALCyAFIAY2AmAMAgsgDCAKIAj8CgAAIAUgDCALQTBsajYCYAwBCyAMBEAgBSAMNgJgIAwQLyAFQQA2AmQgBUIANwJcQQAhBAsCQCALQdaq1SpPDQBB1arVKiAEQTBtIgZBAXQiBCALIAQgC0sbIAZBqtWqFU8bIgRB1qrVKk8NACAFIARBMGwiBBAxIgY2AmAgBSAGNgJcIAUgBCAGajYCZCAFIAkgCkcEfyAGIAogCEEwayIEIARBMHBrQTBqIgT8CgAAIAQgBmoFIAYLNgJgDAELEEEACwsgBSAHQQhrLQAAOgBoIBFBAWohEUEAIQlBfyEMDAELIAVBMGogBBA1GgsgDEEBaiIMIAUoAmAgBSgCXCIEa0EwbUgNAAsMAQsQQQALIAEoAogVIgBBIGshASAAQRVrLAAAQQBIBEAgASgCABAvCyABIAUpAzA3AgAgASAFKAI4NgIIIAUoAlwiAARAIAUgADYCYCAAEC8LIAUsAFtBAEgEQCAFKAJQEC8LIAVB8ABqJAAgEQvMEgUSfwN+BH0BewN8IwBBEGsiCyQAAkAgAUGYKWooAgAiDyABKAKUKSIQRgRAIAtBhRA2AgBBp9oAIAsQNAwBCyABKAKEFSACQTBsaiIK/QADACEeAkACQCAKKAIgIAooAhwiCGsiDUEwbSIJDgICAAELIAggHv0LAxgMAQsgDUEASgRAQQEgCSAJQQFMGyERIB79HQEhGSAe/R0AIRcCQANAIAooAhwiAiAHQTBsIgxqIggoAgAhBSAAKAL4ASEGAkAgBw0AIAUgBkYEQCACIBc3AyAgAiAXNwMYIAIgFzcDSCABIAY2ApApIAEgFzcDiCkgASAXNwOAKSAIKAIAIQUgACgC+AEhBgwBCyACIAEpA4gpNwMYCwJAAkAgACgC0AEiAkUNACABKQOAKSAIKAIEIAZrQQF0rHwhGANAIAUgAigCECIGSARAIAIoAgAiAg0BDAILIAUgBkwNAiACKAIEIgINAAsLQYgiEJYBAAsgAkEUaiIFKAIAIAUgAiwAH0EASBsiBhBnIgJB8P///wdJBEACQCACQQpNBEAgCyACOgAPIAtBBGohBQwBCyACQQ9yQQFqIg4QMSEFIAsgDkGAgICAeHI2AgwgCyAFNgIEIAsgAjYCCAsgBSAGIAL8CgAAIAIgBWpBADoAAAJAIAsoAgggCy0ADyICIALAQQBIIgYbIgVFBEBDAAAAACEaDAELQwAAAAAhGiALKAIEIhIgC0EEaiAGGyIOIQIgBUEBcQRAQwrXIzwhGgJAAkACQAJAIA4tAAAiAkEgaw4gAwACAgICAgICAgICAQIAAgICAgICAgICAgICAgICAgACC0MAAEBAIRoMAgtDAAAAQCEaDAELQwAAQEBDAACAPyACQTBrQf8BcUEKSRshGgsgEiALQQRqIAYbQQFqIQILIAVBAUYNACAFIA5qIQUDQEMK1yM8IRtDCtcjPCEcAkACQAJAAkAgAi0AACIGQSBrDiADAQICAgICAgICAgIAAgECAgICAgICAgICAgICAgICAQILQwAAAEAhHAwCC0MAAEBAIRwMAQtDAABAQEMAAIA/IAZBMGtB/wFxQQpJGyEcCyAaIBySIR0CQAJAAkACQCACLQABIgZBIGsOIAMAAgICAgICAgICAgECAAICAgICAgICAgICAgICAgIAAgtDAABAQCEbDAILQwAAAEAhGwwBC0MAAEBAQwAAgD8gBkEwa0H/AXFBCkkbIRsLIB0gG5IhGiACQQJqIgIgBUcNAAsLIAooAhwgDGogGjgCKCALLAAPQQBIBEAgCygCBBAvCwJAIAgqAhAgA15FDQAgCCoCFCAEXkUNACAIKAIEIgUgASgCkClMDQAgGCAZVQ0AIAooAhwhAiAHBEAgAiAMakEQayAYNwMACyACIAxqIBg3AxggASAFNgKQKQsgB0EBaiIHIBFGDQIMAQsLEEsACyAKKAIcIQgLIA8gEGtBAnUhDiAJQTBsIAhqIgJBGGsgHiAe/Q0ICQoLDA0ODwgJCgsMDQ4P/QsDACACQUBqIB79WwMAASABIB79WwOIKQEgCUEBayEKQQAhBQNAIAUhBgJ/QQEgBSAJTg0AGkEAIAggBSICQTBsaikDIEIAWQ0AGgJ/A0AgCSAJIAJBAWoiAkYNARogCCACQTBsaikDIEIAUw0ACyACCyEGIAIgCU4LIQIgBSAGIAJrIgIiBkgEQEEAIQdEAAAAAAAAAAAhHyACIAUiAmsiDEEBakEDcSIPBEADQCAfIAggAkEwbGoqAii7oCEfIAJBAWohAiAHQQFqIgcgD0cNAAsLIAxBAksEQANAIB8gCCACQTBsaiIHKgIou6AgByoCWLugIAcqAogBu6AgByoCuAG7oCEfIAJBA2ohByACQQRqIQIgBiAHRw0ACwsgCCAGQTBsaikDICAIIAVBMGxqKQMYIhd9uSEgA0ACfiAgIAggBUEwbGoiAioCKLuiIB+jIBe5oCIhmUQAAAAAAADgQ2MEQCAhsAwBC0KAgICAgICAgIB/CyEXIAIgFzcDSCACIBc3AyAgBUEBaiIFIAZHDQALCyAGQQFqIgUgCUgNAAsCQCANQTFOBEAgCCkDICIXQgBTBEAgCCAXNwNICyANQZABSQ0BQQEhBUEBIAogCkEBTBshBgNAIAggBUEwbGoiAikDICIXQgBTBEAgAiAXNwNICyACQRBrKQMAIhggAikDGFUEQCACIBg3AxggAiAYIBcgFyAYUxs3AyALIAVBAWoiBSAGRw0ACwsgDUEATA0BC0EBIAkgCUEBTBshESAOQQFrIQlBACENA0ACQCAIIA1BMGxqIgcoAgAgACgC2AFODQAgDiAHKAIgQaABbCICIAkgAiAJSBsiAkEAIAJBAEobIgVB0A9qIgIgAiAOShsiD0HQDyAHKAIYQaABbCICIAkgAiAJSBsiDCAMQdAPTBsiBkHQD2siAmshECAMQQBKIRIgASgClCkhCkMAAAAAIRsCQCACIA9ODQAgDyAGayITQc8PaiEVQQAhBiATQQNxIhMEQANAIBsgCiACQQJ0aioCAJIhGyACQQFqIQIgBkEBaiIGIBNHDQALCyAVQQJNDQADQCAbIAogAkECdGoiBioCAJIgBioCBJIgBioCCJIgBioCDJIhGyACQQRqIgIgD0cNAAsLIAxBACASGyEGIBu7RAAAAAAAAOA/oiAQt6O2IQMCQAJAIA1FDQAgCiAGQQJ0aioCACADXkUNACAGIQICQCAMQQBMDQADQCAKIAJBAnRqKgIAIANeRQ0BIAJBAUohFiACQQFrIQIgFg0AC0EAIQILIAcgB0EQaykDACIXIAJBoAFtrCIYIBcgGFUiDBs3AxggBiACIAwbIQIMAQsDQCAFIAYiAksEQCACQQFqIQYgCiACQQJ0aioCACADXQ0BCwsgByACQaABbq03AxgLAkAgAyAKIAVBAnRqKgIAXQRAAkAgBSAJTg0AA0AgCiAFQQJ0aioCACADXkUNASAFQQFqIgUgCUcNAAsgCSEFCyAHIAVBoAFurSIYNwMgIA0gEEEBa04NAiAYIAcpA0giF1UNAQwCCwNAIAIgBSIGSARAIAVBAWshBSAKIAZBAnRqKgIAIANdDQELCyAGQaABbawhFwsgByAXNwMgCyANQQFqIg0gEUcNAAsLIAtBEGokAAvFAgEHfyABIAAoAggiBCAAKAIEIgJrQTBtTQRAIAAgAQR/IAJBACABQTBsQTBrIgAgAEEwcGtBMGoiAPwLACAAIAJqBSACCzYCBA8LAkAgAiAAKAIAIgVrQTBtIgcgAWoiA0HWqtUqSQRAQdWq1SogBCAFa0EwbSIEQQF0IgggAyADIAhJGyAEQarVqhVPGyIEBEAgBEHWqtUqTw0CIARBMGwQMSEGCyAHQTBsIAZqIgNBACABQTBsQTBrIgEgAUEwcGtBMGoiAfwLACABIANqIQEgAiAFRwRAA0AgA0EwayIDIAJBMGsiAv0AAwD9CwMAIAMgAv0AAyD9CwMgIAMgAv0AAxD9CwMQIAIgBUcNAAsgACgCACECCyAAIAYgBEEwbGo2AgggACABNgIEIAAgAzYCACACBEAgAhAvCw8LEEEACxBRAAvkJgMWfwN9AnsjAEEwayIIJAACQAJAIAAoAtQBIgkgACgCvAFGBEAgAygCJCEHIAMoAiAhDyADQewAaiEQAkAgAygCcCADKAJsIgVrQQJ1IgYgCUkEQCAQIAkgBmsQeSAQKAIAIQUMAQsgBiAJTQ0AIAMgBSAJQQJ0ajYCcAsgBSABKAL4FCIFIAFB/BRqKAIAIAVrQQJ2IAlrQQJ0aiAJQQJ0/AoAAAJAIARDAAAAAF5FDQAgCUEATA0AIBAoAgAhBkEAIQUgCUEETwRAIAlBfHEhBSAE/RMhHgNAIAYgCkECdGoiDCAM/QACACAe/ecB/QsCACAKQQRqIgogBUcNAAsgBSAJRg0BCwNAIAYgBUECdGoiCiAKKgIAIASVOAIAIAVBAWoiBSAJRw0ACwsgA0HgAGohFAJAIAMoAmQgAygCYCIGa0ECdSIFIAlJBEAgFCAJIAVrEHkMAQsgBSAJTQ0AIAMgBiAJQQJ0ajYCZAsgA0H4AGohFQJAIAMoAnwgAygCeCIGa0ECdSIFIAlJBEAgFSAJIAVrEHkMAQsgBSAJTQ0AIAMgBiAJQQJ0ajYCfAsgECgCACEFAkAgByAPRyIWDQAgAi0ATUUNACAFIAAoAtgBQQJ0akGAgIB8NgIAIAhBIDsBECAIQQE6ABsgAEHAAWogCEEQahD+ASEGIBAoAgAiBSAGKAIAQQJ0akGAgIB8NgIAIAgsABtBAE4NACAIKAIQEC8gECgCACEFCyAFIAAoAvQBQQJ0akGAgIB8NgIAIAUgACgC3AFBAnRqQYCAgHw2AgAgBSAAKALwAUECdGpBgICAfDYCACACLQA4RQRAIAUgACgC6AFBAnRqQYCAgHw2AgALIAUgACgC4AFBAnRqQYCAgHw2AgAgBSAAKALkAUECdGpBgICAfDYCACACKAKQASIGBEAgACABIAMoAiAiASADKAIkIAFrQTBtIAUgAigClAEgBhEMAAsgAi0ATkUNAkGcvDQoAgAiAUGgvDQoAgAiF0YNASAAQcQBaiEKIAhBEGpBDHIhDANAAkAgASwAC0EATgRAIAggASkCADcDECAIIAEoAgg2AhgMAQsgCEEQaiABKAIAIAEoAgQQcAsjAEEQayILJABB6dQAEGchBgJ/IAEtAAtBB3YEQCABKAIEDAELIAEtAAtB/wBxCyEHAn8CfyMAQRBrIg8kACAGIAdqIgVB7////wdNBEACQCAFQQtJBEAgDEIANwIAIAxBADYCCCAMIAwtAAtBgAFxIAVyOgALIAwgDC0AC0H/AHE6AAsMAQsgDCAFQQtPBH8gBUEQakFwcSINIA1BAWsiDSANQQtGGwVBCgtBAWoiDRDfAyETIAwgDCgCCEGAgICAeHEgDUH/////B3FyNgIIIAwgDCgCCEGAgICAeHI2AgggDCATNgIAIAwgBTYCBAsgD0EQaiQAIAwMAQsQSwALIgUtAAtBB3YEQCAFKAIADAELIAULIgVB6dQAIAYQeCAFIAZqIgUCfyABIg8tAAtBB3YEQCABKAIADAELIA8LIAcQeCAFIAdqQQFBABCRAiALQRBqJAACQCAKKAIAIgZFDQAgECgCACETIAgoAhQgCC0AGyIBIAHAQQBIIgEbIQsgCCgCECAIQRBqIAEbIQ0gCiEHIAYhBQNAAkAgCyAFKAIUIAUtABsiASABwEEASCIBGyIOIAsgDkkiERsiEgRAIAUoAhAgBUEQaiABGyANIBIQRSIBDQELQX8gESALIA5LGyEBCyAHIAUgAUEASCIBGyEHIAVBBGogBSABGygCACIBIQUgAQ0ACwJAAkAgByAKRg0AAkACQCAHKAIUIActABsiASABwEEASCIFGyIBIAsgASALSRsiDgRAIA0gBygCECAHQRBqIAUbIA4QRSIFDQELIAEgC00NAQwCCyAFQQBIDQELIAYhBQNAAkACQAJAAkACQAJAIAUoAhQgBS0AGyIBIAHAQQBIIg4bIgEgCyABIAtJIhEbIgcEQCANIAUoAhAgBUEQaiAOGyIOIAcQRSISRQRAIAEgC0sNAgwDCyASQQBODQIMAQsgASALTQ0CCyAFKAIAIgUNBQwHCyAOIA0gBxBFIgENAQsgEQ0BDAILIAFBAE4NAQsgBSgCBCIFDQEMAwsLIBMgBSgCHEECdGpBgICAfDYCAAsgCCgCHCAMIAgtACciAcBBAEgiBRshDSAIKAIgIAEgBRshCyAKIQcgBiEFA0ACQCALIAUoAhQgBS0AGyIBIAHAQQBIIgEbIg4gCyAOSSIRGyISBEAgBSgCECAFQRBqIAEbIA0gEhBFIgENAQtBfyARIAsgDksbIQELIAcgBSABQQBIIgEbIQcgBUEEaiAFIAEbKAIAIgEhBSABDQALIAcgCkYNAQJAAkAgBygCFCAHLQAbIgEgAcBBAEgiBRsiASALIAEgC0kbIg5FDQAgDSAHKAIQIAdBEGogBRsgDhBFIgVFDQAgBUEATg0BDAMLIAEgC0sNAgsDQAJAAkACQAJAIAYoAhQgBi0AGyIBIAHAQQBIIgcbIgEgCyABIAtJIg4bIgUEQAJAIA0gBigCECAGQRBqIAcbIgcgBRBFIhEEQCARQQBODQEMBgsgASALSw0FCyAHIA0gBRBFIgFFDQEgAUEATg0CDAMLIAEgC0sNAwsgDg0BCyATIAYoAhxBAnRqQYCAgHw2AgAMBAsgBigCBCIGRQ0CDAELIAYoAgAiBg0ACwtBiCIQlgEACyAILAAnQQBIBEAgCCgCHBAvCyAILAAbQQBIBEAgCCgCEBAvCyAPQQxqIgEgF0cNAAsMAQsgCEG2JTYCCCAIQeQcNgIEIAhB7RQ2AgBBzdYAIAgQNBAAAAsgCEEAOgASIAhBoNoAOwEQIAhBAjoAGyAAQcABaiIBIAhBEGoQ3QIhBSAILAAbQQBIBEAgCCgCEBAvCwJAIAUgAEHEAWoiBkYNACAIQQA6ABIgCEGg2gA7ARAgCEECOgAbIAEgCEEQahD+ASEFIBAoAgAgBSgCAEECdGpBgICAfDYCACAILAAbQQBODQAgCCgCEBAvCyAIQQA6ABIgCEGgzgA7ARAgCEECOgAbIAEgCEEQahDdAiEYIAgsABtBAEgEQCAIKAIQEC8LIBggBkYNACAIQQA6ABIgCEGgzgA7ARAgCEECOgAbIAEgCEEQahD+ASEBIBAoAgAgASgCAEECdGpBgICAfDYCACAILAAbQQBODQAgCCgCEBAvCyADKAIkIgUgAygCICIGa0EwbSEHAkAgBSAGRg0AIAAoAvgBIQEgBUEwaygCACEFAkACQCAHQQJPBEAgASAFSg0DIAdBMGwgBmpB4ABrKAIAIAFODQEgACgC2AEiAUEATA0DIBAoAgAhBkEAIQUgAUEETwRAIAFBfHEhBUEAIQoDQCAGIApBAnRq/QwAAID/AACA/wAAgP8AAID//QsCACAKQQRqIgogBUcNAAsgASAFRg0ECwNAIAYgBUECdGpBgICAfDYCACAFQQFqIgUgAUcNAAsMAwsgASAFSg0CIAEgCUgNAQwCCyABIAlODQELIBAoAgAhBgJAIAkgAWsiB0EESQRAIAEhBQwBCyABIAdBfHEiD2ohBUEAIQoDQCAGIAEgCmpBAnRq/QwAAID/AACA/wAAgP8AAID//QsCACAKQQRqIgogD0cNAAsgByAPRg0BCwNAIAYgBUECdGpBgICAfDYCACAFQQFqIgUgCUcNAAsLAkAgFg0AIAIqAlQiBEMAAAAAXkUNACAAKAL4ASECIAICfyAEQwAA8EEgACgCILKVlRAzIgSLQwAAAE9dBEAgBKgMAQtBgICAgHgLIgVqQQFqIgEgCU4NACAQKAIAIQYCQCAJIAVBf3NqIAJrIgJBBEkEQCABIQUMAQsgASACQXxxIgdqIQVBACEKA0AgBiABIApqQQJ0av0MAACA/wAAgP8AAID/AACA//0LAgAgCkEEaiIKIAdHDQALIAIgB0YNAQsDQCAGIAVBAnRqQYCAgHw2AgAgBUEBaiIFIAlIDQALCwJAIAMtAF5FBEAgECgCACEKDAELIAMoAlgiAUECbSECIAMoAmwhCiABQQJIDQACQCACIAAoAvgBIgFqIgIgAUEBaiIFIAIgBUobIAFrIgdBBEkEQCABIQUMAQsgASAHQXxxIg9qIQVBACEGA0AgCiABIAZqQQJ0av0MAACA/wAAgP8AAID/AACA//0LAgAgBkEEaiIGIA9HDQALIAcgD0YNAQsDQCAKIAVBAnRqQYCAgHw2AgAgBUEBaiIFIAJIDQALCwJAIAMoAnAiASAKIgZGDQAgBkEEaiIFIAFGDQAgBioCACEEA0AgBSAGIAQgBSoCACIbXSICGyEGIBsgBCACGyEEIAVBBGoiBSABRw0ACwsCQCAJQQBMDQAgBioCACEbIAlBAXEhAQJAIAlBAUYEQEMAAAAAIQRBACEFDAELIAlBfnEhAkMAAAAAIQRBACEFQQAhBgNAIAogBUECdCIHaioCACIcQwAAgP9eBEAgBCAcIBuTEFeSIQQLIAogB0EEcmoqAgAiHEMAAID/XgRAIAQgHCAbkxBXkiEECyAFQQJqIQUgBkECaiIGIAJHDQALCwJAIAFFDQAgCiAFQQJ0aioCACIcQwAAgP9eRQ0AIAQgHCAbkxBXkiEECyAEEG0hBCAJQQBMDQAgGyAEkiEEIBUoAgAhAkEAIQUCQCAJQQRJDQAgAiAKa0EQSQ0AIAlBfHEhBSAE/RMhHkEAIQYDQCACIAZBAnQiAWogASAKav0AAgAiHyAe/eUB/QwAAID/AACA/wAAgP8AAID/IB/9DAAAgP8AAID/AACA/wAAgP/9RP1S/QsCACAGQQRqIgYgBUcNAAsgBSAJRg0BCyAFQQFyIQEgCUEBcQRAIAIgBUECdCIFaiAFIApqKgIAIhsgBJNDAACA/yAbQwAAgP9eGzgCACABIQULIAEgCUYNAANAIAIgBUECdCIBaiABIApqKgIAIhsgBJNDAACA/yAbQwAAgP9eGzgCACACIAFBBGoiAWogASAKaioCACIbIASTQwAAgP8gG0MAAID/Xhs4AgAgBUECaiIFIAlHDQALCyADKAJ4IgYgACgC+AEiAkECdGoiByEAAkAgByADKAJ8IgFGDQAgB0EEaiIFIAFGDQAgACoCACEEA0AgBSAAIAQgBSoCACIbXSIDGyEAIBsgBCADGyEEIAVBBGoiBSABRw0ACwtDAACA/yEcAkAgAiAJTg0AIAAqAgAhGyACQQFqIRkCfSAJIAJrQQFxRQRAIAIhBUMAAAAADAELIAJBAWohBSAGIAJBAnRqKgIAIgRDAACA/14EfSAEIBuTEFcFQwAAAAALCyEEIBkgCUcEQANAIAYgBUECdGoiACoCACIdQwAAgP9eBEAgBCAdIBuTEFeSIQQLIAAqAgQiHUMAAID/XgRAIAQgHSAbkxBXkiEECyAFQQJqIgUgCUcNAAsLIARDAAAAAF5FDQAgGyAEEG2SIRwLIAYhAAJAIAJBAkkNACAGQQRqIQUgBioCACEEIAJBAWtBA3EiAwRAQQAhAQNAIAUgACAEIAUqAgAiG10iDxshACAbIAQgDxshBCAFQQRqIQUgAUEBaiIBIANHDQALCyACQf7///8DakH/////A3FBA0kNAANAIAVBDGogBUEIaiAFQQRqIAUgACAEIAUqAgAiG10iABsgGyAEIAAbIgQgBSoCBCIbXSIAGyAbIAQgABsiBCAFKgIIIhtdIgAbIBsgBCAAGyIEIAUqAgwiG10iARshACAbIAQgARshBCAFQRBqIgUgB0cNAAsLAkAgHCAAKgIAXkUNACACQQBMDQBBACEHQQAhBQJAIAJBBEkNACAGIAprQRBJDQAgAkF8cSEFQQAhAANAIAogAEECdCIBav0MAACA/wAAgP8AAID/AACA//0LAgAgASAGav0MAACA/wAAgP8AAID/AACA//0LAgAgAEEEaiIAIAVHDQALIAIgBUYNAQsgAiAFQX9zaiEaIAJBA3EiAQRAA0AgCiAFQQJ0IgNqQYCAgHw2AgAgAyAGakGAgIB8NgIAIAVBAWohBSAHQQFqIgcgAUcNAAsLIBpBA0kNAANAIAogBUECdCIAakGAgIB8NgIAIAAgBmpBgICAfDYCACAKIABBBGoiAWpBgICAfDYCACABIAZqQYCAgHw2AgAgCiAAQQhqIgFqQYCAgHw2AgAgASAGakGAgIB8NgIAIAogAEEMaiIAakGAgIB8NgIAIAAgBmpBgICAfDYCACAFQQRqIgUgAkcNAAsLAkAgCUEATA0AIBQoAgAhAEEAIQUgCUEBRwRAIAlBfnEhAkEAIQcDQEMAAAAAIQRDAAAAACEbIAogBUECdCIBaioCAEMAAID/XARAIAEgBmoqAgAQVyEbCyAAIAFqIBs4AgAgCiAFQQFyQQJ0IgFqKgIAQwAAgP9cBEAgASAGaioCABBXIQQLIAAgAWogBDgCACAFQQJqIQUgB0ECaiIHIAJHDQALCyAJQQFxRQ0AQwAAAAAhBCAKIAVBAnQiAWoqAgBDAACA/1wEQCABIAZqKgIAEFchBAsgACABaiAEOAIACyAIQTBqJAAL+wIBCn8gACgCBCICIAAoAggiA0kEQCACIAEoAgA2AgAgACACQQRqNgIEDwsCQCACIAAoAgAiBmsiB0ECdSIIQQFqIgRBgICAgARJBEBB/////wMgAyAGayIDQQF1IgUgBCAEIAVJGyADQfz///8HTxsiAwR/IANBgICAgARPDQIgA0ECdBAxBUEACyIFIAhBAnRqIgQgASgCADYCACAFIANBAnRqIQggBEEEaiEJAkAgAiAGRg0AAkAgB0EEayIBQSxJDQAgAiAFIAdqa0EQSQ0AIARBEGshByACQRBrIQUgAiABQQJ2QQFqIgpB/P///wdxIgNBAnQiAWshAiAEIAFrIQRBACEBA0AgByABQQJ0IgtrIAUgC2v9AAIA/QsCACABQQRqIgEgA0cNAAsgAyAKRg0BCwNAIARBBGsiBCACQQRrIgIoAgA2AgAgAiAGRw0ACwsgACAINgIIIAAgCTYCBCAAIAQ2AgAgBgRAIAYQLwsPCxBBAAsQUQALkAMBCn8gASAAKAIIIgMgACgCBCICa0ECdU0EQCAAIAEEfyACQQAgAUECdCIA/AsAIAAgAmoFIAILNgIEDwsCQCACIAAoAgAiBWsiB0ECdSIIIAFqIgRBgICAgARJBEBB/////wMgAyAFayIDQQF1IgkgBCAEIAlJGyADQfz///8HTxsiAwRAIANBgICAgARPDQIgA0ECdBAxIQYLIAYgCEECdGoiBEEAIAFBAnQiAfwLACABIARqIQggBiADQQJ0aiEJAkAgAiAFRg0AAkAgB0EEayIBQSxJDQAgAiAGIAdqa0EQSQ0AIARBEGshBiACQRBrIQcgAiABQQJ2QQFqIgpB/P///wdxIgNBAnQiAWshAiAEIAFrIQRBACEBA0AgBiABQQJ0IgtrIAcgC2v9AAIA/QsCACABQQRqIgEgA0cNAAsgAyAKRg0BCwNAIARBBGsiBCACQQRrIgIoAgA2AgAgAiAFRw0ACwsgACAJNgIIIAAgCDYCBCAAIAQ2AgAgBQRAIAUQLwsPCxBBAAsQUQALlgcBDn8jAEEgayIEJAACQAJAAkACQCAAEGciA0Hw////B0kEQAJAIANBCk0EQCAEIAM6AB8gBEEUaiEBDAELIANBD3JBAWoiAhAxIQEgBCACQYCAgIB4cjYCHCAEIAE2AhQgBCADNgIYCyABIAAgA/wKAAAgASADakEAOgAAIAQtAB8iAcAhCUEBIQcCQEGYuzQoAgAiAkUNACAEKAIYIAEgCUEASCIBGyEFIAQoAhQgBEEUaiABGyEKA0ACQAJAAkACQAJAAkAgAigCFCACLQAbIgEgAcBBAEgiARsiCCAFIAUgCEsiBhsiCwRAIAogAigCECACQRBqIAEbIgMgCxBFIgENASAFIAhPDQIMBgsgBSAITw0CDAULIAFBAEgNBAsgAyAKIAsQRSIBDQELIAYNAUEAIQcMBAsgAUEASA0AQQAhBwwDCyACQQRqIQILIAIoAgAiAg0ACwsgCUEASARAIAQoAhQQLwsgBwRAAkBBlLs0KAIAIgJBmLs0Rg0AAkACQAJAIAAQZyIGQQFqDgIAAQILA0AgAiwAK0EASARAIAIoAiRBf0YNBwsCQCACKAIEIgMEQANAIAMiASgCACIDDQAMAgsACwNAIAIoAggiASgCACACRyEMIAEhAiAMDQALCyABIgJBmLs0Rw0ACwwCCwNAIAIoAiQgAi0AKyIBIAHAQQBIG0UNBgJAIAIiAygCBCIBBEADQCABIgIoAgAiAQ0ADAILAAsDQCADKAIIIgIoAgAgA0chDSACIQMgDQ0ACwsgAkGYuzRHDQALDAELA0AgAigCJCACLQArIgEgAcBBAEgiAxsgBkYEQCACQSBqIgEoAgAgASADGyAAIAYQRUUNBgsCQCACKAIEIgMEQANAIAMiASgCACIDDQAMAgsACwNAIAIoAggiASgCACACRyEOIAEhAiAODQALCyABIgJBmLs0Rw0ACwsgBCAANgIEIARBryI2AgBBxegAIAQQNEF/IQIMBQsgABBnIgNB8P///wdPDQMCQCADQQpNBEAgBCADOgAfIARBFGohAQwBCyADQQ9yQQFqIgIQMSEBIAQgAkGAgICAeHI2AhwgBCABNgIUIAQgAzYCGAsgASAAIAP8CgAAIAEgA2pBADoAAEGUuzQgBEEUahD+ASgCACECIAQsAB9BAE4NBCAEKAIUEC8MBAsQSwALENoCAAsgAigCHCECDAELEEsACyAEQSBqJAAgAgu+JgMcfwV+AX0jAEGQhgVrIgQkABB0ISMgAEFAazQCACEgIAAoAiwhEyAAKAIoIREgACgCJCEOIAAoAiAhCiABQewSaigCACEGIAEoAqApIQkgASgC6BIhBSAEQQA6AKgDIAQgBCgCqAM2ApgDIAQgBTYCpAMgBCAGIAVrNgKgAyAEIAQpAqADNwOQAyAEQZADahDTASEGIARBADYCoAMgAUH4EmooAgAhCCAEIAEoAvQSIgU2AqgDIAQgBTYCiAMgBCAIIAVrNgKkAyAEIAQpAqADNwOAAyAGIARBgANqEDohBSABKAK0FCIIQQBOBEAgASAIQQJ0akG4FGoiCCAIKAIAIgggBSAFIAhJGzYCAAsgAUEANgK0FCAGQQAgCSAKIAlBAEobIg9BAXQiFKwgIBBWIhUoApgBIghBACAVEHz8CwACQCABKAJYIhhBAEwNACABKAJQIgwgAiAUaiIJIAkgDEobIhIgDCACIAIgDEobIglMDQAgDEECdCEZIA9BA3QhGiABKAJcIgcgCUECdGohGyAJIBIgCWsiFkF8cSIXaiEFIBZBBEkhHANAIAwgEGwhCyAQIBRsIQ0gCSECAkACQCAcDQBBACEKIBAgGmwgCGogGyAQIBlsamtBEEkNAANAIAggCiANakECdGogByAJIApqIAtqQQJ0av0AAgD9CwIAIApBBGoiCiAXRw0ACyAFIQIgFiAXRg0BCyANIAlrIQogEiACQX9zaiEfQQAhDSASIAJrQQNxIh4EQANAIAggAiAKakECdGogByACIAtqQQJ0aioCADgCACACQQFqIQIgDUEBaiINIB5HDQALCyAfQQNJDQADQCAIIAIgCmpBAnRqIAcgAiALakECdGoqAgA4AgAgCCAKIAJBAWoiDWpBAnRqIAcgCyANakECdGoqAgA4AgAgCCAKIAJBAmoiDWpBAnRqIAcgCyANakECdGoqAgA4AgAgCCAKIAJBA2oiDWpBAnRqIAcgCyANakECdGoqAgA4AgAgAkEEaiICIBJHDQALCyAQQQFqIhAgGEcNAAsLIARBADYCoAMgAUGEE2ooAgAhCSAEIAFBgBNqKAIAIgI2AqgDIAQgAjYC+AIgBCAJIAJrNgKkAyAEIAQpAqADNwPwAiAGIARB8AJqEDohAiABKAK0FCIJQQBOBEAgASAJQQJ0akG4FGoiCSAJKAIAIgkgAiACIAlJGzYCAAsgAUEBNgK0FCAGIAAoAmQgFUEBEN0DIQIgBiAGIAYgACgCaCACEE4gAhBPEO8BIQkgBEEANgKgAyABKAL4EiEFIAQgASgC9BIiAjYCqAMgBCACNgLoAiAEIAUgAms2AqQDIAQgBCkCoAM3A+ACIAYgBEHgAmoQOiECIAEoArQUIgVBAE4EQCABIAVBAnRqQbgUaiIFIAUoAgAiBSACIAIgBUkbNgIACyABQQA2ArQUIAYgACgCbCAJQQIQ3QMhAiAGIAYgBiAAKAJwIAIQTiACEE8Q7wEhCSAEQQA2AqADIAFBnBNqKAIAIQUgBCABQZgTaigCACICNgKoAyAEIAI2AtgCIAQgBSACazYCpAMgBCAEKQKgAzcD0AIgBiAEQdACahA6IQIgASgCtBQiBUEATgRAIAEgBUECdGpBuBRqIgUgBSgCACIFIAIgAiAFSRs2AgALIAFBAzYCtBQgACgCYCICKAIAQSRsQZjqAGooAgAaIAYgBiACIAIpAxAgD6wiICACKAIQIAIoAgBBJGxBmOoAaigCAGxBABDnASAGIAkQrAIQTyECIBNBAEoEQEMAAIA/IA6yIBGylZGVISUgDqwhJCARrCEhQQAhCgNAIAAoAowBIQggBEEANgKgAyABKAL4EiEFIAQgASgC9BIiCTYCqAMgBCAJNgLIAiAEIAUgCWs2AqQDIAQgBCkCoAM3A8ACIAYgBEHAAmoQOiEJIAEoArQUIgVBAE4EQCABIAVBAnRqQbgUaiIFIAUoAgAiBSAJIAUgCUsbNgIACyABQQA2ArQUIAYgAiAAKgJIEKoBIQUgBiAGIAYgCCAKQTxsaiIJKAIAIAUQTiAFEKsBIAYgCSgCBCAFEE4QTyEFIARBADYCoAMgASgChBMhByAEIAEoAoATIgg2AqgDIAQgCDYCuAIgBCAHIAhrNgKkAyAEIAQpAqADNwOwAiAGIARBsAJqEDohCCABKAK0FCIHQQBOBEAgASAHQQJ0akG4FGoiByAHKAIAIgcgCCAHIAhLGzYCAAsgAUEBNgK0FCAGIAkoAhAgBRBaIQggBiAGIAkoAhQgCBBOIAgQTyEIIAYgCSgCGCAFEFohByAGIAkoAhwgBRBaIQUgBiAGIAkoAiAgBRBOIAUQTyELIARBADYCoAMgASgC+BIhDCAEIAEoAvQSIgU2AqgDIAQgBTYCqAIgBCAMIAVrNgKkAyAEIAQpAqADNwOgAiAGIARBoAJqEDohBSABKAK0FCIMQQBOBEAgASAMQQJ0akG4FGoiDCAMKAIAIgwgBSAFIAxJGzYCAAsgAUEANgK0FCAGIAYgCCAGQQAgDiARbawiIiAhICAQrgEQfkEAQQEQigEhBSAGIAYgBiAGIAYgByAGIAAoAhQgIiAhICAQrgEQfkEAQQEQigEgBRBaIAYgJRDOARDJARCqAiEFIAYgBiAGIAYgBiALICIgISAgELECQQFBABCKASAGIAAoAhQgICAiICEQrgEQfiAFEFpBAEEBEIoBIQggBEEANgKgAyABKAKEEyEHIAQgASgCgBMiBTYCqAMgBCAFNgKYAiAEIAcgBWs2AqQDIAQgBCkCoAM3A5ACIAYgBEGQAmoQOiEFIAEoArQUIgdBAE4EQCABIAdBAnRqQbgUaiIHIAcoAgAiByAFIAUgB0kbNgIACyABQQE2ArQUIAYgCCAGQQAgJCAgEFYQfiEIIARBADYCoAMgASgC+BIhByAEIAEoAvQSIgU2AqgDIAQgBTYCiAIgBCAHIAVrNgKkAyAEIAQpAqADNwOAAiAGIARBgAJqEDohBSABKAK0FCIHQQBOBEAgASAHQQJ0akG4FGoiByAHKAIAIgcgBSAFIAdJGzYCAAsgAUEANgK0FCAGIAkoAgggCBBaIQUgBEEANgKgAyABKAKEEyEHIAQgASgCgBMiCDYCqAMgBCAINgL4ASAEIAcgCGs2AqQDIAQgBCkCoAM3A/ABIAYgBEHwAWoQOiEIIAEoArQUIgdBAE4EQCABIAdBAnRqQbgUaiIHIAcoAgAiByAIIAcgCEsbNgIACyABQQE2ArQUIAYgBiAJKAIMIAUQTiAFEE8hCCAEQQA2AqADIAEoApATIQcgBCABKAKMEyIFNgKoAyAEIAU2AugBIAQgByAFazYCpAMgBCAEKQKgAzcD4AEgBiAEQeABahA6IQUgASgCtBQiB0EATgRAIAEgB0ECdGpBuBRqIgcgBygCACIHIAUgBSAHSRs2AgALIAFBAjYCtBQgBiAIIAIQTyEFIARBADYCoAMgASgC+BIhCCAEIAEoAvQSIgI2AqgDIAQgAjYC2AEgBCAIIAJrNgKkAyAEIAQpAqADNwPQASAGIARB0AFqEDohAiABKAK0FCIIQQBOBEAgASAIQQJ0akG4FGoiCCAIKAIAIgggAiACIAhJGzYCAAsgAUEANgK0FCAGIAUgACoCSBCqASECIARBADYCoAMgASgChBMhByAEIAEoAoATIgg2AqgDIAQgCDYCyAEgBCAHIAhrNgKkAyAEIAQpAqADNwPAASAGIARBwAFqEDohCCABKAK0FCIHQQBOBEAgASAHQQJ0akG4FGoiByAHKAIAIgcgCCAHIAhLGzYCAAsgAUEBNgK0FCAGIAYgBiAJKAIkIAIQTiACEKsBIAYgCSgCKCACEE4QTyEIIARBADYCoAMgASgC+BIhByAEIAEoAvQSIgI2AqgDIAQgAjYCuAEgBCAHIAJrNgKkAyAEIAQpAqADNwOwASAGIARBsAFqEDohAiABKAK0FCIHQQBOBEAgASAHQQJ0akG4FGoiByAHKAIAIgcgAiACIAdJGzYCAAsgAUEANgK0FCAGIAkoAiwgCBBaIQIgBEEANgKgAyABKAKEEyEHIAQgASgCgBMiCDYCqAMgBCAINgKoASAEIAcgCGs2AqQDIAQgBCkCoAM3A6ABIAYgBEGgAWoQOiEIIAEoArQUIgdBAE4EQCABIAdBAnRqQbgUaiIHIAcoAgAiByAIIAcgCEsbNgIACyABQQE2ArQUIAYgBiAJKAIwIAIQTiACEE8hCCAEQQA2AqADIAEoAvgSIQcgBCABKAL0EiICNgKoAyAEIAI2ApgBIAQgByACazYCpAMgBCAEKQKgAzcDkAEgBiAEQZABahA6IQIgASgCtBQiB0EATgRAIAEgB0ECdGpBuBRqIgcgBygCACIHIAIgAiAHSRs2AgALIAFBADYCtBQgBiAIEO8BIQggBEEANgKgAyABKAKEEyEHIAQgASgCgBMiAjYCqAMgBCACNgKIASAEIAcgAms2AqQDIAQgBCkCoAM3A4ABIAYgBEGAAWoQOiECIAEoArQUIgdBAE4EQCABIAdBAnRqQbgUaiIHIAcoAgAiByACIAIgB0kbNgIACyABQQE2ArQUIAYgCSgCNCAIEFohAiAEQQA2AqADIAEoAvgSIQcgBCABKAL0EiIINgKoAyAEIAg2AnggBCAHIAhrNgKkAyAEIAQpAqADNwNwIAYgBEHwAGoQOiEIIAEoArQUIgdBAE4EQCABIAdBAnRqQbgUaiIHIAcoAgAiByAIIAcgCEsbNgIACyABQQA2ArQUIAYgBiAJKAI4IAIQTiACEE8hCSAEQQA2AqADIAEoApwTIQggBCABKAKYEyICNgKoAyAEIAI2AmggBCAIIAJrNgKkAyAEIAQpAqADNwNgIAYgBEHgAGoQOiECIAEoArQUIghBAE4EQCABIAhBAnRqQbgUaiIIIAgoAgAiCCACIAIgCEkbNgIACyABQQM2ArQUIAYgCSAFEE8hAiAKQQFqIgogE0cNAAsLIARBADYCoAMgASgC+BIhBSAEIAEoAvQSIgk2AqgDIAQgCTYCWCAEIAUgCWs2AqQDIAQgBCkCoAM3A1AgBiAEQdAAahA6IQkgASgCtBQiBUEATgRAIAEgBUECdGpBuBRqIgUgBSgCACIFIAkgBSAJSxs2AgALIAFBADYCtBQgBiACIAAqAkgQqgEhAiAEQQA2AqADIAEoAoQTIQUgBCABKAKAEyIJNgKoAyAEIAk2AkggBCAFIAlrNgKkAyAEIAQpAqADNwNAIAYgBEFAaxA6IQkgASgCtBQiBUEATgRAIAEgBUECdGpBuBRqIgUgBSgCACIFIAkgBSAJSxs2AgALIAFBATYCtBQgBiAGIAYgACgCdCACEE4gAhCrASAGIAAoAnggAhBOEE8hCSAEQQA2AjggBEEANgKoAyAEQgA3AzAgBEIANwKgAyAGIARBMGoQOiECIAEoArQUIgVBAE4EQCABIAVBAnRqQbgUaiIFIAUoAgAiBSACIAIgBUkbNgIACyABQX82ArQUIARBoANqIgJBAEHgggX8CwAgAiAJELkBIAYgAiADEKECIAJBAEHgggX8CwAgCUIANwJsIAlBADYCQCAAKAI8QQBKBEAgDiAPbKwhIiAOsiARspW7RAAAAAAAANC/ELwCtiElIA6sISFBACECA0AgACgCmAEhCCAEQQA2AoSGBSABKAL4EiEHIARBjIYFaiIFIAEoAvQSIgo2AgAgBCAKNgIoIAQgByAKazYCiIYFIAQgBCkChIYFNwMgIAYgBEEgahA6IQogASgCtBQiB0EATgRAIAEgB0ECdGpBuBRqIgcgBygCACIHIAogByAKSxs2AgALIAFBADYCtBQgBiAGIAggAkHgAGxqIgooAjwgCRBaIAYgJRDOARDJASEHIARBADYChIYFIAEoAoQTIQsgBSABKAKAEyIINgIAIAQgCDYCGCAEIAsgCGs2AoiGBSAEIAQpAoSGBTcDECAGIARBEGoQOiEIIAEoArQUIgtBAE4EQCABIAtBAnRqQbgUaiILIAsoAgAiCyAIIAggC0kbNgIACyABQQE2ArQUIAYgCigCQCAJEFohCCAGIAYgCigCRCAIEE4gCBBPIQogBEEANgIIIAVBADYCACAEQgA3AwAgBEIANwKEhgUgBiAEEDohBSABKAK0FCIIQQBOBEAgASAIQQJ0akG4FGoiCCAIKAIAIgggBSAFIAhJGzYCAAsgAUF/NgK0FCAGIAYgCiAhICAQ+gMQrAIhBSAGIAEoAjQiCiAiIAooAgBBJGxBmOoAaigCACACIA9sIA5sIgpsEOkBIQggBiABKAI4IgsgICAhIA8gCygCAEEkbEGY6gBqKAIAbCAKIAsoAgBBJGxBmOoAaigCAGwQ5wEhCiAEQaADaiILIAYgByAIEH4QuQEgCyAGIAUgChB+ELkBIAJBAWoiAiAAKAI8SA0ACwsgBiAEQaADaiADEKECIAYQXiABEHQgI30gASkDCHw3AwggASABKAIkQQFqNgIkIARBkIYFaiQAC+4QBBt/B3wBfQF+IwBBIGsiDCQAIAxBADYCHCAMQgA3AhQCQAJAIAQEQCAEQYCAgIAETw0BIAwgBEECdCIJEDEiDzYCFCAMIAkgD2oiFzYCHCAPQQAgCfwLACAMIBc2AhgLIAxBADYCECAMQgA3AggCQCAFBEAgBUEBdCILQYCAgIAETw0BIAwgBUEDdCIKEDEiCTYCCCAMIAkgC0ECdGo2AhAgCUEAIAr8CwAgDCAJIApqNgIMCyAIKAIAIgogAyAFbUEBaiIVIAogFUgbIABMDQIgBEEBdiISQQFqIRggBEF+cSEaIARBAXEhGyASQQFqIRwgEkECayEdIAUgBmwiHkECdCEfIAAgBWwiCUECdCEgIAMgCWshEyAEQQZJISEDQAJAIAMgACAFbCIRayIUIAQgBCAUSiIWG0EATA0AIAIoAgAhDSABKAIAIRBBACEJAkAgBCATIAQgE0gbIg5BCEkNACAPIBBrQRBJDQAgDyAgIBkgH2xqIA1qa0EQSQ0AIA5BfHEhCUEAIQsDQCAPIAtBAnQiCmogCiAQav0AAgAgDSALIBFqQQJ0av0AAgD95gH9CwIAIAtBBGoiCyAJRw0ACyAJIA5GDQELIAlBAXIhCiAOQQFxBEAgDyAJQQJ0IgtqIAsgEGoqAgAgDSAJIBFqQQJ0aioCAJQ4AgAgCiEJCyAKIA5GDQADQCAPIAlBAnQiCmogCiAQaioCACANIAkgEWpBAnRqKgIAlDgCACAPIAlBAWoiCkECdCILaiALIBBqKgIAIA0gCiARakECdGoqAgCUOAIAIAlBAmoiCSAORw0ACwsCQCAWRQ0AIBcgDyAUQQJ0aiIKayIJQQBMDQAgCkEAIAlBAnYgCUEDS2tBAnRBBGr8CwALIAxBFGogDEEIahDUAgJAIARFDQBBACEJIAwoAgghC0EAIQogBEEBRwRAA0AgCyAJQQJ0aiALIAlBA3RqIg0qAgAiKyArlCANKgIEIisgK5SSOAIAIAsgCUEBciINQQJ0aiALIA1BA3RqIg0qAgAiKyArlCANKgIEIisgK5SSOAIAIAlBAmohCSAKQQJqIgogGkcNAAsLIBtFDQAgCyAJQQJ0aiALIAlBA3RqIgkqAgAiKyArlCAJKgIEIisgK5SSOAIACyAIKAIIIhFBAEoEQCAIKAIMIRQgCCgCACEWIAcoAgghEEEAIQ0gDCgCCCELA0BEAAAAAAAAAAAhJEEAIQkgIUUEQCANIBhsISIDQCAkIAsgCUECdCIKQQxyaioCACAQIAkgImpBAnRqIg4qAgyUIAsgCkEIcmoqAgAgDioCCJQgCiALaioCACAOKgIAlCALIApBBHJqKgIAIA4qAgSUkpKSu6AhJCAJQQRqIgkgHUgNAAsLAkAgCSASSg0AIA0gGGwhDiAcIAlrQQFxBH8gJCALIAlBAnRqKgIAIBAgCSAOakECdGoqAgCUu6AhJCAJQQFqBSAJCyEKIAkgEkYNAANAICQgCyAKQQJ0aioCACAQIAogDmpBAnRqKgIAlLugIAsgCkEBaiIJQQJ0aioCACAQIAkgDmpBAnRqKgIAlLugISQgCkECaiEKIAkgEkcNAAsLIBQgDSAWbCAAakECdGoCfAJAAkACQAJARLu919nffNs9ICQgJES7vdfZ33zbPWMbIiS9IixCAFkEQCAsQiCIpyIJQf//P0sNAQtEAAAAAAAA8L8gJCAkoqMgLEL///////////8Ag1ANBBogLEIAWQ0BICQgJKFEAAAAAAAAAACjDAQLIAlB//+//wdLDQJBgIDA/wMhCkGBeCEOIAlBgIDA/wNHBEAgCSEKDAILICynDQFEAAAAAAAAAAAMAwsgJEQAAAAAAABQQ6K9IixCIIinIQpBy3chDgsgDiAKQeK+JWoiCUEUdmq3IilEAGCfUBNE0z+iIiUgLEL/////D4MgCUH//z9xQZ7Bmv8Daq1CIIaEv0QAAAAAAADwv6AiJCAkICREAAAAAAAA4D+ioiInob1CgICAgHCDvyIoRAAAIBV7y9s/oiImoCIqICYgJSAqoaAgJCAkRAAAAAAAAABAoKMiJSAnICUgJaIiJiAmoiIlICUgJUSfxnjQCZrDP6JEr3iOHcVxzD+gokQE+peZmZnZP6CiICYgJSAlICVERFI+3xLxwj+iRN4Dy5ZkRsc/oKJEWZMilCRJ0j+gokSTVVVVVVXlP6CioKCiICQgKKEgJ6GgIiREAAAgFXvL2z+iIClENivxEfP+WT2iICQgKKBE1a2ayjiUuz2ioKCgoCEkCyAkC7Y4AgAgDUEBaiINIBFHDQALCyAZQQFqIRkgEyAeayETIAAgBmoiACAIKAIAIgogFSAKIBVIG0gNAAsMAgsQQQALEEEACwJAIAAgCk4NACAIKAIIIgJBAEwNACAIKAIMIQMgCkEBRiACQQNLcSEHIAJBA3EhBSACQXxxIQEDQEEAIQtBACEEQQAhCQJAIAcEQANAIAMgACAEakECdGr9DAAAIMEAACDBAAAgwQAAIMH9CwIAIARBBGoiBCABRw0ACyABIgkgAkYNAQsgAiAJQX9zaiEjIAUEQANAIAMgCSAKbCAAakECdGpBgICAiXw2AgAgCUEBaiEJIAtBAWoiCyAFRw0ACwsgI0EDSQ0AA0AgAyAJIApsIABqQQJ0akGAgICJfDYCACADIAlBAWogCmwgAGpBAnRqQYCAgIl8NgIAIAMgCUECaiAKbCAAakECdGpBgICAiXw2AgAgAyAJQQNqIApsIABqQQJ0akGAgICJfDYCACAJQQRqIgkgAkcNAAsLIAAgBmoiACAKSA0ACwsgDCgCCCIABEAgDCAANgIMIAAQLwsgDwRAIA8QLwsgDEEgaiQAC/QEAQJ/IAAEQCAAKAKkASIBBEAgARBeCyAAKAKoASIBBEAgASgCACICBEAgASACNgIEIAIQLwsgARAvCyAAKAL8ASIBBEAgASgCPCICBEAgAhBeIAFBADYCPAsgASgCcCICBEAgAhBeIAFBADYCcAsgASgCgAIiAgRAIAIQXiABQQA2AoACCyABKAKQAyICBEAgAhBeIAFBADYCkAMLIAEoAqAEIgIEQCACEF4gAUEANgKgBAsgASgCsAUiAgRAIAIQXiABQQA2ArAFCyABKALABiICBEAgAhBeIAFBADYCwAYLIAEoAtAHIgIEQCACEF4gAUEANgLQBwsgAUHgCGooAgAiAgRAIAIQXiABQQA2AuAICyABQfAJaigCACICBEAgAhBeIAFBADYC8AkLIAFBgAtqKAIAIgIEQCACEF4gAUEANgKACwsgAUGQDGooAgAiAgRAIAIQXiABQQA2ApAMCyABQaANaigCACICBEAgAhBeIAFBADYCoA0LIAFBsA5qKAIAIgIEQCACEF4gAUEANgKwDgsgAUHAD2ooAgAiAgRAIAIQXiABQQA2AsAPCyABQdAQaigCACICBEAgAhBeIAFBADYC0BALIAFB4BFqKAIAIgIEQCACEF4gAUEANgLgEQsgARCCAhAvCyAALACLAkEASARAIAAoAoACEC8LIABBzAFqIAAoAtABEIECIABBwAFqIAAoAsQBEIACIABBsAFqIAAoArQBEP8BIAAoApgBIgEEQCAAIAE2ApwBIAEQLwsgACgCjAEiAQRAIAAgATYCkAEgARAvCyAAKAJUIgEEQCAAIAE2AlggARAvCyAAEC8LC5YDAQd/IAACfwJAAkAgASgCBCIERQRAIAFBBGoiBiECDAELIAIoAgAgAiACLQALIgbAQQBIIgUbIQggAigCBCAGIAUbIQUDQAJAAkACQAJAAkAgBCICKAIUIAItABsiBCAEwEEASCIHGyIEIAUgBCAFSSIJGyIGBEAgCCACKAIQIAJBEGogBxsiByAGEEUiCkUEQCAEIAVLDQIMAwsgCkEATg0CDAELIAQgBU0NAgsgAiEGIAIoAgAiBA0EDAULIAcgCCAGEEUiBA0BCyAJDQEMBAsgBEEATg0DCyACKAIEIgQNAAsgAkEEaiEGC0EgEDEiBEEQaiEFAkAgAygCACIDLAALQQBOBEAgBSADKQIANwIAIAUgAygCCDYCCAwBCyAFIAMoAgAgAygCBBBwCyAEIAI2AgggBEIANwIAIARBADYCHCAGIAQ2AgAgBCECIAEoAgAoAgAiAwRAIAEgAzYCACAGKAIAIQILIAEoAgQgAhCXASABIAEoAghBAWo2AghBAQwBCyACIQRBAAs6AAQgACAENgIACx8AQQgQYSAAEPECIgBBjJsDNgIAIABBrJsDQQcQAgALlbgBAhR/AX5B8P04JAhB8P00JAdBgNY0ECNBgNY0QYDWNDYCAEG01jQjCCICNgIAQaDWNEECNgIAQbjWNCACIwdrNgIAQczWNEHM1jQ2AgBB4NY0QejVNDYCAEGY1jRBKjYCAEHI1jRB0Nc0NgIAQYzWNEGA1jQ2AgBBiNY0QYDWNDYCAEGA1jQQ+QNBgNY0ECIjAEEQayICJAACQCACQQxqIAJBCGoQHA0AQbzsNCACKAIMQQJ0QQRqEEMiBDYCACAERQ0AIAIoAggQQyIEBEBBvOw0KAIAIAIoAgxBAnRqQQA2AgBBvOw0KAIAIAQQG0UNAQtBvOw0QQA2AgALIAJBEGokAEG0nwNBCTYCAEG4nwNBADYCAEHiC0ECQeDoAEGw6QBBAUECQQAQBkHKIUEBQbTpAEG46QBBA0EEQQAQBkG8C0EEQcDpAEHs6QBBBUEGQQAQBkG4nwNBsNU0KAIANgIAQbDVNEG0nwM2AgAjAEHQCWsiASQAQQAhBCMAQZArayIAJAAgAEEAOgCmFSAAQeXcATsBpBUgAEECOgCvFSAAQZsVakHRGygAADYAACAAQbgVaiAAQawVaigCADYCACAAQc4bKAAANgKYFSAAQQA6AJ8VIABBwBVqIAApApgVNwMAIABBBzoAoxUgAEHIFWogAEGgFWooAgA2AgAgAEEANgK8FSAAQQA2ApQVIAAgACkCpBU3A7AVIABBADoAihUgAEH60AE7AYgVIABBAjoAkxUgAEH/FGpBzx8oAAA2AAAgAEEHOgCHFSAAQQE2AvgUIABBADoAgxUgAEHMHygAADYC/BQgAEHUFWogAEGQFWooAgA2AgAgACAAKQKIFTcCzBUgAEHYFWpBATYCACAAQeQVaiAAQYQVaigCADYCACAAQdwVaiAAKQL8FDcCACAAQQA6AO4UIABB5MoBOwHsFCAAQQI6APcUIABB5BRqQd0XLwAAOwEAIABBBjoA6xQgAEECNgLcFCAAQQA6AOYUIABB2RcoAAA2AuAUIABB8BVqIABB9BRqKAIANgIAIAAgACkC7BQ3A+gVIABB9BVqQQI2AgAgAEGAFmogAEHoFGooAgA2AgAgAEH4FWogACkC4BQ3AwAgAEEAOgDSFCAAQeXmATsB0BQgAEECOgDbFCAAQccUakG7GygAADYAACAAQQc6AM8UIABBAzYCwBQgAEEAOgDLFCAAQbgbKAAANgLEFCAAQYwWaiAAQdgUaigCADYCACAAIAApAtAUNwKEFiAAQZAWakEDNgIAIABBnBZqIABBzBRqKAIANgIAIABBlBZqIAApAsQUNwIAIABBADoAthQgAEHy6gE7AbQUIABBAjoAvxQgAEGrFGpBhBgoAAA2AAAgAEEHOgCzFCAAQQQ2AqQUIABBADoArxQgAEGBGCgAADYCqBQgAEGoFmogAEG8FGooAgA2AgAgACAAKQK0FDcDoBYgAEGsFmpBBDYCACAAQbgWaiAAQbAUaigCADYCACAAQbAWaiAAKQKoFDcDACAAQQA6AJoUIABB694BOwGYFCAAQQI6AKMUIABBkBRqQYoZLwAAOwEAIABBBjoAlxQgAEEFNgKIFCAAQQA6AJIUIABBhhkoAAA2AowUIABBxBZqIABBoBRqKAIANgIAIAAgACkCmBQ3ArwWIABByBZqQQU2AgAgAEHUFmogAEGUFGooAgA2AgAgAEHMFmogACkCjBQ3AgAgAEEAOgD+EyAAQebkATsB/BMgAEECOgCHFCAAQfQTakGjHC8AADsBACAAQQY6APsTIABBBjYC7BMgAEEAOgD2EyAAQZ8cKAAANgLwEyAAQeAWaiAAQYQUaigCADYCACAAIAApAvwTNwPYFiAAQeQWakEGNgIAIABB8BZqIABB+BNqKAIANgIAIABB6BZqIAApAvATNwMAIABBADoA4hMgAEHqwgE7AeATIABBAjoA6xMgAEHcE2oiAkEAOgAAIABBCDoA3xMgAEEHNgLQEyAAQurCwYvmrdm55QA3AtQTIABB/BZqIABB6BNqKAIANgIAIAAgACkC4BM3AvQWIABBgBdqQQc2AgAgAEGMF2ogAigCADYCACAAQYQXakLqwsGL5q3ZueUANwIAIABBADoAxhMgAEHw6AE7AcQTIABBAjoAzxMgAEHAE2oiAkG5Hy8AADsBACAAQYAUOwHCEyAAQQg2ArQTIABBsR8pAAAiFDcCuBMgAEGYF2ogAEHME2ooAgA2AgAgACAAKQLEEzcDkBcgAEGcF2pBCDYCACAAQagXaiACKAIANgIAIABBoBdqIBQ3AwAgAEEAOgCqEyAAQfTkATsBqBMgAEECOgCzEyAAQZ8TakHZGygAADYAACAAQQc6AKcTIABBCTYCmBMgAEEAOgCjEyAAQdYbKAAANgKcEyAAQbQXaiAAQbATaigCADYCACAAIAApAqgTNwKsFyAAQbgXakEJNgIAIABBxBdqIABBpBNqKAIANgIAIABBvBdqIAApApwTNwIAIABBADoAjhMgAEHw2AE7AYwTIABBAjoAlxMgAEGEE2pByxsvAAA7AQAgAEEGOgCLEyAAQQo2AvwSIABBADoAhhMgAEHHGygAADYCgBMgAEHQF2ogAEGUE2ooAgA2AgAgACAAKQKMEzcDyBcgAEHUF2pBCjYCACAAQeAXaiAAQYgTaigCADYCACAAQdgXaiAAKQKAEzcDACAAQQA6APISIABB48IBOwHwEiAAQQI6APsSIABB5xJqQekXKAAANgAAIABBBzoA7xIgAEELNgLgEiAAQQA6AOsSIABB5hcoAAA2AuQSIABB7BdqIABB+BJqKAIANgIAIAAgACkC8BI3AuQXIABB8BdqQQs2AgAgAEH8F2ogAEHsEmooAgA2AgAgAEH0F2ogACkC5BI3AgAgAEEAOgDWEiAAQe7YATsB1BIgAEECOgDfEiAAQcwSakGXHC0AADoAACAAQQU6ANMSIABBDDYCxBIgAEEAOgDNEiAAQZMcKAAANgLIEiAAQYgYaiAAQdwSaigCADYCACAAIAApAtQSNwOAGCAAQYwYakEMNgIAIABBmBhqIABB0BJqKAIANgIAIABBkBhqIAApAsgSNwMAIABBADoAuhIgAEHh5AE7AbgSIABBAjoAwxIgAEGwEmpB4SQvAAA7AQAgAEEGOgC3EiAAQQ02AqgSIABBADoAshIgAEHdJCgAADYCrBIgAEGkGGogAEHAEmooAgA2AgAgACAAKQK4EjcCnBggAEGoGGpBDTYCACAAQbQYaiAAQbQSaigCADYCACAAQawYaiAAKQKsEjcCACAAQQA6AJ4SIABB8+wBOwGcEiAAQQI6AKcSIABBkxJqQe8bKAAANgAAIABBBzoAmxIgAEEONgKMEiAAQQA6AJcSIABB7BsoAAA2ApASIABBwBhqIABBpBJqKAIANgIAIAAgACkCnBI3A7gYIABBxBhqQQ42AgAgAEHQGGogAEGYEmooAgA2AgAgAEHIGGogACkCkBI3AwAgAEEAOgCCEiAAQenoATsBgBIgAEECOgCLEiAAQfcRakHvGCgAADYAACAAQQc6AP8RIABBDzYC8BEgAEEAOgD7ESAAQewYKAAANgL0ESAAQdwYaiAAQYgSaigCADYCACAAIAApAoASNwLUGCAAQeAYakEPNgIAIABB7BhqIABB/BFqKAIANgIAIABB5BhqIAApAvQRNwIAIABBADoA5hEgAEHpyAE7AeQRIABBAjoA7xEgAEHgEWoiAkGZGC8AADsBACAAQYAUOwHiESAAQRA2AtQRIABBkRgpAAAiFDcC2BEgAEH4GGogAEHsEWooAgA2AgAgACAAKQLkETcD8BggAEH8GGpBEDYCACAAQYgZaiACKAIANgIAIABBgBlqIBQ3AwAgAEEAOgDKESAAQejSATsByBEgAEECOgDTESAAQcARakGLGy0AADoAACAAQQU6AMcRIABBETYCuBEgAEEAOgDBESAAQYcbKAAANgK8ESAAQZQZaiAAQdARaigCADYCACAAIAApAsgRNwKMGSAAQZgZakERNgIAIABBpBlqIABBxBFqKAIANgIAIABBnBlqIAApArwRNwIAIABBADoArhEgAEHm0gE7AawRIABBAjoAtxEgAEGjEWpB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aiAAQcgJaigCADYCACAAQaghaiAAKQLACTcDACAAQQA6ALIJIABB7dwBOwGwCSAAQQI6ALsJIABBrAlqIgJB6hgtAAA6AAAgAEEJOgCvCSAAQTc2AqAJIABBADoArQkgAEHiGCkAACIUNwKkCSAAQbwhaiAAQbgJaigCADYCACAAIAApArAJNwK0ISAAQcAhakE3NgIAIABBzCFqIAIoAgA2AgAgAEHEIWogFDcCACAAQQA6AJYJIABB4uYBOwGUCSAAQQI6AJ8JIABBiwlqQbMYKAAANgAAIABBBzoAkwkgAEE4NgKECSAAQQA6AI8JIABBsBgoAAA2AogJIABB2CFqIABBnAlqKAIANgIAIAAgACkClAk3A9AhIABB3CFqQTg2AgAgAEHoIWogAEGQCWooAgA2AgAgAEHgIWogACkCiAk3AwAgAEEAOgD6CCAAQevWATsB+AggAEECOgCDCSAAQfAIakGQHC8AADsBACAAQQY6APcIIABBOTYC6AggAEEAOgDyCCAAQYwcKAAANgLsCCAAQfQhaiAAQYAJaigCADYCACAAIAApAvgINwLsISAAQfghakE5NgIAIABBhCJqIABB9AhqKAIANgIAIABB/CFqIAApAuwINwIAIABBADoA3gggAEHz4gE7AdwIIABBAjoA5wggAEHYCGoiAkEAOgAAIABBCDoA2wggAEE6NgLMCCAAQuHYiYvmrdqw7gA3AtAIIABBkCJqIABB5AhqKAIANgIAIAAgACkC3Ag3A4giIABBlCJqQTo2AgAgAEGgImogAigCADYCACAAQZgiakLh2ImL5q3asO4ANwMAIABBADoAwgggAEHz7gE7AcAIIABBAjoAywggAEG3CGpB3RooAAA2AAAgAEEHOgC/CCAAQTs2ArAIIABBADoAuwggAEHaGigAADYCtAggAEGsImogAEHICGooAgA2AgAgACAAKQLACDcCpCIgAEGwImpBOzYCACAAQbwiaiAAQbwIaigCADYCACAAQbQiaiAAKQK0CDcCACAAQQA6AKYIIABB59gBOwGkCCAAQQI6AK8IIABBoAhqIgJBADoAACAAQQg6AKMIIABBPDYClAggAELnwrHLtqzasO4ANwKYCCAAQcgiaiAAQawIaigCADYCACAAIAApAqQINwPAIiAAQcwiakE8NgIAIABB2CJqIAIoAgA2AgAgAEHQImpC58Kxy7as2rDuADcDACAAQQA6AIoIIABB7eQBOwGICCAAQQI6AJMIIABB+xooAAA2AP8HIABBBzoAhwggAEE9NgL4ByAAQQA6AIMIIABB+BooAAA2AvwHIABB5CJqIABBkAhqKAIANgIAIAAgACkCiAg3AtwiIABB6CJqQT02AgAgAEH0ImogAEGECGooAgA2AgAgAEHsImogACkC/Ac3AgAgAEEAOgDuByAAQfDCATsB7AcgAEECOgD3ByAAQZAbKAAANgDjByAAQQc6AOsHIABBPjYC3AcgAEEAOgDnByAAQY0bKAAANgLgByAAQYAjaiAAKAL0BzYCACAAIAApAuwHNwP4IiAAQYQjakE+NgIAIABBkCNqIAAoAugHNgIAIABBiCNqIAApAuAHNwMAIABBADoA0gcgAEHz0gE7AdAHIABBAjoA2wcgAEGKJigAADYAxwcgAEEHOgDPByAAQT82AsAHIABBADoAywcgAEGHJigAADYCxAcgAEGcI2ogACgC2Ac2AgAgACAAKQLQBzcClCMgAEGgI2pBPzYCACAAQawjaiAAKALMBzYCACAAQaQjaiAAKQLEBzcCACAAQQA6ALYHIABB69oBOwG0ByAAQQI6AL8HIABBjhQtAAA6AKwHIABBBToAswcgAEHAADYCpAcgAEEAOgCtByAAQYoUKAAANgKoByAAQbgjaiAAKAK8BzYCACAAIAApArQHNwOwIyAAQbwjakHAADYCACAAQcgjaiAAKAKwBzYCACAAQcAjaiAAKQKoBzcDACAAQQA6AJoHIABB89wBOwGYByAAQQI6AKMHIABB/yUtAAA6AJAHIABBBToAlwcgAEHBADYCiAcgAEEAOgCRByAAQfslKAAANgKMByAAQdQjaiAAKAKgBzYCACAAIAApApgHNwLMIyAAQdgjakHBADYCACAAQeQjaiAAKAKUBzYCACAAQdwjaiAAKQKMBzcCACAAQQA6AP4GIABB+d4BOwH8BiAAQQI6AIcHIABBqSYvAAA7AfQGIABBBjoA+wYgAEHCADYC7AYgAEEAOgD2BiAAQaUmKAAANgLwBiAAQfAjaiAAKAKEBzYCACAAIAApAvwGNwPoIyAAQfQjakHCADYCACAAQYAkaiAAKAL4BjYCACAAQfgjaiAAKQLwBjcDACAAQQA6AOIGIABB894B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OgDnAkEQEDEiDkEAOgANIA5B4xspAAA3AAUgDkHeGykAADcAACAAQaQoakHWADYCACAAQaAoaiAAKALkAjYCACAAIAApAtwCNwOYKCAAQagoaiAOQQ0QcCAAQQA6ANICIABB7fIBOwHQAiAAQQI6ANsCIABBxBQoAAA2AMcCIABBwChqQdcANgIAIABBvChqIAAoAtgCNgIAIABBwRQoAAA2AsQCIABBADoAywIgAEHEKGogACkCxAI3AgAgAEEHOgDPAiAAQcwoaiAAKALMAjYCACAAQdcANgLAAiAAIAApAtACNwK0KCAAQQA6ALYCIABB4t4BOwG0AiAAQQI6AL8CIABB0BcoAAA2AKsCIABBBzoAswIgAEHYADYCpAIgAEEAOgCvAiAAQc0XKAAANgKoAiAAQdgoaiAAKAK8AjYCACAAIAApArQCNwPQKCAAQdwoakHYADYCACAAQegoaiAAKAKwAjYCACAAQeAoaiAAKQKoAjcDACAAQQA6AJoCIABB9NgBOwGYAiAAQQI6AKMCIABBsxwoAAA2AI8CIABBBzoAlwIgAEHZADYCiAIgAEEAOgCTAiAAQbAcKAAANgKMAiAAQfQoaiAAKAKgAjYCACAAIAApApgCNwLsKCAAQfgoakHZADYCACAAQYQpaiAAKAKUAjYCACAAQfwoaiAAKQKMAjcCACAAQQA6AP4BIABB7c4BOwH8ASAAQQI6AIcCIABBADoA+AEgAEEIOgD7ASAAQdoANgLsASAAQu3CsYv2rNi5+QA3AvABIABBkClqIAAoAoQCNgIAIAAgACkC/AE3A4gpIABBlClqQdoANgIAIABBoClqIAAoAvgBNgIAIABBmClqQu3CsYv2rNi5+QA3AwAgAEEAOgDiASAAQeHmATsB4AEgAEECOgDrASAAQQA6ANwBIABBCDoA3wEgAEHbADYC0AEgAELh5s2L1q3ZueUANwLUASAAQawpaiAAKALoATYCACAAIAApAuABNwKkKSAAQbApakHbADYCACAAQbwpaiAAKALcATYCACAAQbQpakLh5s2L1q3ZueUANwIAIABBADoAxgEgAEH06AE7AcQBIABBAjoAzwEgAEG/FC0AADoAvAEgAEEFOgDDASAAQdwANgK0ASAAQQA6AL0BIABBuxQoAAA2ArgBIABByClqIAAoAswBNgIAIAAgACkCxAE3A8ApIABBzClqQdwANgIAIABB2ClqIAAoAsABNgIAIABB0ClqIAApArgBNwMAIABBAzoAswEgAEEAOgCrASAAQcYKLQAAOgCqASAAQcQKLwAAOwGoASAAQQA6AKQBIABBCDoApwEgAEHdADYCmAEgAELowt2Llq3asO4ANwKcASAAQeQpaiAAKAKwATYCACAAIAApAqgBNwLcKSAAQegpakHdADYCACAAQfQpaiAAKAKkATYCACAAQewpakLowt2Llq3asO4ANwIAIABBADoAjgEgAEHs3AE7AYwBIABBAjoAlwEgAEGSJigAADYAgwEgAEEHOgCLASAAQd4ANgJ8IABBADoAhwEgAEGPJigAADYCgAEgAEGAKmogACgClAE2AgAgACAAKQKMATcD+CkgAEGEKmpB3gA2AgAgAEGQKmogACgCiAE2AgAgAEGIKmogACkCgAE3AwAgAEEAOgByIABB6MIBOwFwIABBAjoAeyAAQfklLQAAOgBoIABBBToAbyAAQd8ANgJgIABBADoAaSAAQfUlKAAANgJkIABBnCpqIAAoAng2AgAgACAAKQJwNwKUKiAAQaAqakHfADYCACAAQawqaiAAKAJsNgIAIABBpCpqIAApAmQ3AgAgAEEAOgBWIABB4sIBOwFUIABBAjoAXyAAQfkTKAAANgBLIABBBzoAUyAAQeAANgJEIABBADoATyAAQfYTKAAANgJIIABBuCpqIAAoAlw2AgAgACAAKQJUNwOwKiAAQbwqakHgADYCACAAQcgqaiAAKAJQNgIAIABBwCpqIAApAkg3AwAgAEEAOgA6IABB6u4BOwE4IABBAjoAQyAAQQA6ADQgAEEIOgA3IABB4QA2AiggAELqwtmL5q3ZueUANwIsIABB1CpqIABBQGsoAgA2AgAgACAAKQI4NwLMKiAAQdgqakHhADYCACAAQeQqaiAAKAI0NgIAIABB3CpqQurC2Yvmrdm55QA3AgAgAEEAOgAeIABB8+oBOwEcIABBAjoAJyAAQdwfLQAAOgAYIABBCToAGyAAQeIANgIMIABBADoAGSAAQdQfKQAAIhQ3AhAgAEHwKmogACgCJDYCACAAIAApAhw3A+gqIABB9CpqQeIANgIAIABBgCtqIAAoAhg2AgAgAEH4KmogFDcDAEGYuzRCADcCAEGUuzRBmLs0NgIAA0AjAEEQayIIJAAgAEGIK2oiEQJ/IABBsBVqIARBHGxqIQVBmLs0KAIAIQYCQAJAAkBBmLs0IgNBlLs0KAIARg0AAkAgBkUEQEGYuzQhAgNAIAIoAggiAygCACACRiETIAMhAiATDQALDAELIAYhAgNAIAIiAygCBCICDQALCwJAIAUoAgQgBS0ACyICIALAIg9BAEgiCxsiByADKAIUIAMtABsiAiACwEEASCINGyICIAIgB0sbIhAEQCADKAIQIANBEGogDRsgBSgCACAFIAsbIBAQRSILDQELIAIgB0kNAQwCCyALQQBODQELIAZFDQEgCCADNgIMIANBBGoMAgtBmLs0KAIAIgJFDQAgBSgCACAFIA9BAEgbIQ9BmLs0IQYDQAJAAkACQAJAAkACQCACIgMoAhQgAi0AGyICIALAQQBIIg0bIgIgByACIAdJIhAbIgsEQCAPIAMoAhAgA0EQaiANGyINIAsQRSISRQRAIAIgB0sNAgwDCyASQQBODQIMAQsgAiAHTQ0CCyADIQYgAygCACICDQUMBAsgDSAPIAsQRSICDQELIBANAQwCCyACQQBODQELIANBBGohBiADKAIEIgINAQsLIAggAzYCDCAGDAELIAhBmLs0NgIMQZi7NAsiBigCACICBH9BAAVBLBAxIgJBEGohAwJAIAUsAAtBAE4EQCADIAUpAgA3AgAgAyAFKAIINgIIDAELIAMgBSgCACAFKAIEEHALIAIgBSgCDDYCHCACQSBqIQMCQCAFLAAbQQBOBEAgAyAFKQIQNwIAIAMgBSgCGDYCCAwBCyADIAUoAhAgBSgCFBBwCyACIAgoAgw2AgggAkIANwIAIAYgAjYCACACIQNBlLs0KAIAKAIAIgUEQEGUuzQgBTYCACAGKAIAIQMLQZi7NCgCACADEJcBQZy7NEGcuzQoAgBBAWo2AgBBAQs6AAQgESACNgIAIAhBEGokACAEQQFqIgRB4wBHDQALIABBhCtqIQQDQCAEQQFrLAAAQQBIBEAgBEEMaygCABAvCyAEQRxrIQIgBEERaywAAEEASARAIAIoAgAQLwsgAiIEIABBsBVqRw0ACyAALAAbQQBIBEAgACgCEBAvCyAALAAnQQBIBEAgACgCHBAvCyAALAA3QQBIBEAgACgCLBAvCyAALABDQQBIBEAgACgCOBAvCyAALABTQQBIBEAgACgCSBAvCyAALABfQQBIBEAgACgCVBAvCyAALABvQQBIBEAgACgCZBAvCyAALAB7QQBIBEAgACgCcBAvCyAALACLAUEASARAIAAoAoABEC8LIAAsAJcBQQBIBEAgACgCjAEQLwsgACwApwFBAEgEQCAAKAKcARAvCyAALACzAUEASARAIAAoAqgBEC8LIAAsAMMBQQBIBEAgACgCuAEQLwsgACwAzwFBAEgEQCAAKALEARAvCyAALADfAUEASARAIAAoAtQBEC8LIAAsAOsBQQBIBEAgACgC4AEQLwsgACwA+wFBAEgEQCAAKALwARAvCyAALACHAkEASARAIAAoAvwBEC8LIAAsAJcCQQBIBEAgACgCjAIQLwsgACwAowJBAEgEQCAAKAKYAhAvCyAALACzAkEASARAIAAoAqgCEC8LIAAsAL8CQQBIBEAgACgCtAIQLwsgACwAzwJBAEgEQCAAKALEAhAvCyAALADbAkEASARAIAAoAtACEC8LIA4QLyAALADnAkEASARAIAAoAtwCEC8LIAAsAPcCQQBIBEAgACgC7AIQLwsgACwAgwNBAEgEQCAAKAL4AhAvCyAALACTA0EASARAIAAoAogDEC8LIAAsAJ8DQQBIBEAgACgClAMQLwsgACwArwNBAEgEQCAAKAKkAxAvCyAALAC7A0EASARAIAAoArADEC8LIAAsAMsDQQBIBEAgACgCwAMQLwsgACwA1wNBAEgEQCAAKALMAxAvCyAALADnA0EASARAIAAoAtwDEC8LIAAsAPMDQQBIBEAgACgC6AMQLwsgChAvIAAsAP8DQQBIBEAgACgC9AMQLwsgACwAjwRBAEgEQCAAKAKEBBAvCyAALACbBEEASARAIAAoApAEEC8LIAAsAKsEQQBIBEAgACgCoAQQLwsgACwAtwRBAEgEQCAAKAKsBBAvCyAALADHBEEASARAIAAoArwEEC8LIAAsANMEQQBIBEAgACgCyAQQLwsgACwA4wRBAEgEQCAAKALYBBAvCyAALADvBEEASARAIAAoAuQEEC8LIAAsAP8EQQBIBEAgACgC9AQQLwsgACwAiwVBAEgEQCAAKAKABRAvCyAALACbBUEASARAIAAoApAFEC8LIAAsAKcFQQBIBEAgACgCnAUQLwsgACwAtwVBAEgEQCAAKAKsBRAvCyAALADDBUEA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AEgEQCAAKAIEEC8LIABBBGoiAUEAEDYgACABQZPUABA3IgEoAgg2AhggACABKQIANwMQIAFCADcCACABQQA2AgggACAAQRBqQe3TABA1IgEoAgg2AiggACABKQIANwMgIAFCADcCACABQQA2AghBjLw0IAAoAiAgAEEgaiAALQArIgHAQQBIIgQbIAAoAiQgASAEGxBpGiAALAArQQBIBEAgACgCIBAvCyAALAAbQQBIBEAgACgCEBAvCyAALAAPQQBIBEAgACgCBBAvCyAAQQRqIgFBABA2IAAgAUHF1AAQNyIBKAIINgIYIAAgASkCADcDECABQgA3AgAgAUEANgIIIAAgAEEQakHt0wAQNSIBKAIINgIoIAAgASkCADcDICABQgA3AgAgAUEANgIIQYy8NCAAKAIgIABBIGogAC0AKyIBwEEASCIEGyAAKAIkIAEgBBsQaRogACwAK0EASARAIAAoAiAQLwsgACwAG0EASARAIAAoAhAQLwsgACwAD0EASARAIAAoAgQQLwsgAEEEaiIBQQAQNiAAIAFBstQAEDciASgCCDYCGCAAIAEpAgA3AxAgAUIANwIAIAFBADYCCCAAIABBEGpB7dMAEDUiASgCCDYCKCAAIAEpAgA3AyAgAUIANwIAIAFBADYCCEGMvDQgACgCICAAQSBqIAAtACsiAcBBAEgiBBsgACgCJCABIAQbEGkaIAAsACtBAEgEQCAAKAIgEC8LIAAsABtBAEgEQCAAKAIQEC8LIAAsAA9BAEgEQCAAKAIEEC8LIABBBGoiAUEAEDYgACABQbrUABA3IgEoAgg2AhggACABKQIANwMQIAFCADcCACABQQA2AgggACAAQRBqQe3TABA1IgEoAgg2AiggACABKQIANwMgIAFCADcCACABQQA2AghBjLw0IAAoAiAgAEEgaiAALQArIgHAQQBIIgQbIAAoAiQgASAEGxBpGiAALAArQQBIBEAgACgCIBAvCyAALAAbQQBIBEAgACgCEBAvCyAALAAPQQBIBEAgACgCBBAvCyAAQQRqIgFBARA2IAAgAUGl1AAQNyIBKAIINgIYIAAgASkCADcDECABQgA3AgAgAUEANgIIIAAgAEEQakHt0wAQNSIBKAIINgIoIAAgASkCADcDICABQgA3AgAgAUEANgIIQYy8NCAAKAIgIABBIGogAC0AKyIBwEEASCIEGyAAKAIkIAEgBBsQaRogACwAK0EASARAIAAoAiAQLwsgACwAG0EASARAIAAoAhAQLwsgACwAD0EASARAIAAoAgQQLwsgAEEEaiIBQQAQNiAAIAFB/9MAEDciASgCCDYCGCAAIAEpAgA3AxAgAUIANwIAIAFBADYCCCAAIABBEGpB7dMAEDUiASgCCDYCKCAAIAEpAgA3AyAgAUIANwIAIAFBADYCCEGMvDQgACgCICAAQSBqIAAtACsiAcBBAEgiBBsgACgCJCABIAQbEGkaIAAsACtBAEgEQCAAKAIgEC8LIAAsABtBAEgEQCAAKAIQEC8LIAAsAA9BAEgEQCAAKAIEEC8LIABBBGoiAUEAEDYgACABQdHUABA3IgEoAgg2AhggACABKQIANwMQIAFCADcCACABQQA2AgggACAAQRBqQe3TABA1IgEoAgg2AiggACABKQIANwMgIAFCADcCACABQQA2AghBjLw0IAAoAiAgAEEgaiAALQArIgHAQQBIIgQbIAAoAiQgASAEGxBpGiAALAArQQBIBEAgACgCIBAvCyAALAAbQQBIBEAgACgCEBAvCyAALAAPQQBIBEAgACgCBBAvCyAAQQRqIgFBABA2IAAgAUHQ1AAQNyIBKAIINgIYIAAgASkCADcDECABQgA3AgAgAUEANgIIIAAgAEEQakHt0wAQNSIBKAIINgIoIAAgASkCADcDICABQgA3AgAgAUEANgIIQYy8NCAAKAIgIABBIGogAC0AKyIBwEEASCIEGyAAKAIkIAEgBBsQaRogACwAK0EASARAIAAoAiAQLwsgACwAG0EASARAIAAoAhAQLwsgACwAD0EASARAIAAoAgQQLwsgAEEEaiIBQQAQNiAAIAFB+NMAEDciASgCCDYCGCAAIAEpAgA3AxAgAUIANwIAIAFBADYCCCAAIABBEGpB7dMAEDUiASgCCDYCKCAAIAEpAgA3AyAgAUIANwIAIAFBADYCCEGMvDQgACgCICAAQSBqIAAtACsiAcBBAEgiBBsgACgCJCABIAQbEGkaIAAsACtBAEgEQCAAKAIgEC8LIAAsABtBAEgEQCAAKAIQEC8LIAAsAA9BAEgEQCAAKAIEEC8LIABBBGoiAUEAEDYgACABQZvUABA3IgEoAgg2AhggACABKQIANwMQIAFCADcCACABQQA2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ASACIAVBAWoQnQEgBEEQaiQADAELEEsACwsgA0EQaiQACwkAIAAgBRDaAQuOBwIEfwR7IAJBH0oEQCACQSBtIQYDQCABIAVBB3RqIgNBQGsgACAFQRZsaiIELwEAQQJ0QfC5BGr9CQIAIgcgBCgBAiICQQx2/REgAkENdv0cASACQQ52/RwCIAJBD3b9HAMiCf0MEAAAABAAAAAQAAAAEAAAAP1OIAT9XAAG/YkB/akBIghBBP2tAf1Q/Qzw////8P////D////w/////a4B/foB/eYB/QsCACADIAcgAkEEdP0RIAJBA3T9HAEgAkECdP0cAiACQQF0/RwD/QwQAAAAEAAAABAAAAAQAAAA/U4gCP0MDwAAAA8AAAAPAAAADwAAAP1O/VD9DPD////w////8P////D////9rgH9+gH95gH9CwIAIAMgByACQRB2/REgAkERdv0cASACQRJ2/RwCIAJBE3b9HAP9DBAAAAAQAAAAEAAAABAAAAD9TiAEQQpq/VwAAP2JAf2pASIIQQT9rQH9UP0M8P////D////w////8P////2uAf36Af3mAf0LAlAgAyAHIAJBBHb9ESACQQV2/RwBIAJBBnb9HAIgAkEHdv0cAyIKQQT9qwH9DBAAAAAQAAAAEAAAABAAAAD9TiAI/QwPAAAADwAAAA8AAAAPAAAA/U79UP0M8P////D////w////8P////2uAf36Af3mAf0LAhAgAyAHIAJBFHb9ESACQRV2/RwBIAJBFnb9HAIgAkEXdv0cA/0MEAAAABAAAAAQAAAAEAAAAP1OIARBDmr9XAAA/YkB/akBIghBBP2tAf1Q/Qzw////8P////D////w/////a4B/foB/eYB/QsCYCADIAcgCv0MEAAAABAAAAAQAAAAEAAAAP1OIAj9DA8AAAAPAAAADwAAAA8AAAD9Tv1Q/Qzw////8P////D////w/////a4B/foB/eYB/QsCICADIAcgAkEYdv0RIAJBGXb9HAEgAkEadv0cAiACQRt2/RwD/QwQAAAAEAAAABAAAAAQAAAA/U4gBEESav1cAAD9iQH9qQEiCEEE/a0B/VD9DPD////w////8P////D////9rgH9+gH95gH9CwJwIAMgByAJQQT9qwH9DBAAAAAQAAAAEAAAABAAAAD9TiAI/QwPAAAADwAAAA8A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AAALIABBwANqJAAgDAvQBAEEfyMAQfAEayIAJAAgACACNgLoBCAAIAE2AuwEIABBswE2AhAgAEHIAWogAEHQAWogAEEQaiIBEE0hByAAQcABaiIJIAQoAhwiCDYCACAIQQRqQQH+HgIAGiAJEGshCCAAQQA6AL8BAkAgAEHsBGogAiADIAkgBCgCBCAFIABBvwFqIAggByAAQcQBaiAAQeAEahClA0UNACAAQZoxKAAANgC3ASAAQZMxKQAANwOwASAIIABBsAFqIABBugFqIABBgAFqIAgoAgAoAjARBwAaIABBsgE2AhAgAEEIakEAIAEQTSEDIAEhBAJAIAAoAsQBIAcoAgBrIgFBiQNOBEAgAUECdUECahBDIQIgAygCACEBIAMgAjYCACABBEAgASADKAIEEQAACyADKAIAIgRFDQELIAAtAL8BBEAgBEEtOgAAIARBAWohBAsgBygCACECA0AgACgCxAEgAk0EQAJAIARBADoAACAAIAY2AgAgAEEQaiAAEM8DQQFHDQAgAygCACEBIANBADYCACABBEAgASADKAIEEQAACwwECwUgBCAAQbABaiAAQYABaiIBIAFBKGogAhCbAiABa0ECdWotAAA6AAAgBEEBaiEEIAJBBGohAgwBCwsQRwALEEcACyAAQewEaiAAQegEahA+BEAgBSAFKAIAQQJyNgIACyAAKALsBCEKIAAoAsABIgFBBGpBf/4eAgBFBEAgASABKAIAKAIIEQAACyAHKAIAIQEgB0EANgIAIAEEQCABIAcoAgQRAAALIABB8ARqJAAgCgsLACAAIAEgAhC+AwveBgEGfyMAQZABayIAJAAgACACNgKIASAAIAE2AowBIABBswE2AhQgAEEYaiAAQSBqIABBFGoiCBBNIQkgAEEQaiIHIAQoAhwiATYCACABQQRqQQH+HgIAGiAHEHMhASAAQQA6AA8gAEGMAWogAiADIAcgBCgCBCAFIABBD2ogASAJIAggAEGEAWoQqwMEQCMAQRBrIgIkAAJAIAYtAAtBB3YEQCAGKAIAIQogAkEAOgAPIAogAi0ADzoAACAGQQA2AgQMAQsgAkEAOgAOIAYgAi0ADjoAACAGIAYtAAtBgAFxOgALIAYgBi0AC0H/AHE6AAsLIAJBEGokACAALQAPBEAgBiABQS0gASgCACgCHBEEABCPAgsg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dEHwuQRq/QkCACIDIAb9XAAC/YkB/akBIgRBBP2tAf0M+P////j////4////+P////2uAf36Af3mAf0LAgAgAiADIAT9DA8AAAAPAAAADwAAAA8AAAD9Tv0M+P////j////4////+P////2uAf36Af3mAf0LAgAgAiADIAZBBmr9XAAA/YkB/akBIgRBBP2tAf0M+P////j////4////+P////2uAf36Af3mAf0LAlAgAiADIAT9DA8AAAAPAAAADwAAAA8AAAD9Tv0M+P////j////4////+P////2uAf36Af3mAf0LAhAgAiADIAZBCmr9XAAA/YkB/akBIgRBBP2tAf0M+P////j////4////+P////2uAf36Af3mAf0LAmAgAiADIAT9DA8AAAAPAAAADwAAAA8AAAD9Tv0M+P////j////4////+P////2uAf36Af3mAf0LAiAgAiADIAZBDmr9XAAA/YkB/akBIgRBBP2tAf0M+P////j////4////+P////2uAf36Af3mAf0LAnAgAiADIAT9DA8AAAAPAAAADwAAAA8AAAD9Tv0M+P////j////4////+P////2uAf36Af3mAf0LAjAgBUEBaiIFIAdHDQALCwvLAQEHfyMAQdABayIAJAAQQiEFIAAgBDYCACAAQbABaiIHIAcgB0EUIAVBwBUgABBiIgpqIgUgAhB1IQggAEEQaiIEIAIoAhwiBjYCACAGQQRqQQH+HgIAGiAEEGshBiAEKAIAIglBBGpBf/4eAgBFBEAgCSAJKAIAKAIIEQAACyAGIAcgBSAEIAYoAgAoAjARBwAaIAEgBCAKQQJ0IARqIgEgCCAAa0ECdCAAakGwBWsgBSAIRhsgASACIAMQkgEhCyAAQdABaiQAIAsLkgUBCX8CfyMAQaADayIGJAAgBkIlNwOYAyAGQZgDaiIHQQFyQYUrIAIoAgQQ3wEhCCAGIAZB8AJqIgk2AuwCEEIhAAJ/IAgEQCACKAIIIQogBkFAayAFNwMAIAYgBDcDOCAGIAo2AjAgCUEeIAAgByAGQTBqEGIMAQsgBiAENwNQIAYgBTcDWCAGQfACakEeIAAgBkGYA2ogBkHQAGoQYgshACAGQbIBNgKAASAGQeQCakEAIAZBgAFqEE0hCSAGQfACaiIKIQcCQCAAQR5OBEAQQiEAAn8gCARA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DAELIAEtAAtB/wBxCyACakYEQAJ/IAEtAAtBB3YEQCABKAIEDAELIAEtAAtB/wBxCyEDIAECfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQtBAXQQOCABIAEtAAtBB3YEfyABKAIIQf////8HcUEBawVBCgsQOCAAIAMCfyABLQALQQd2BEAgASgCAAwBCyABCyICajYCzAELAn8gAEH8AmoiBigCACIDKAIMIgcgAygCEEYEQCADIAMoAgAoAiQRAQAMAQsgBygCAAsgAEEXaiAAQRZqIAIgAEHMAWogACgC7AEgACgC6AEgAEHcAWogAEEgaiAAQRxqIABBGGogAEHwAWoQnAINACAGEFwaDAELCwJAAn8gAC0A5wFBB3YEQCAAKALgAQwBCyAALQDnAUH/AHELRQ0AIAAtABdFDQAgACgCHCIDIABBIGprQZ8BSg0AIAAgA0EEajYCHCADIAAoAhg2AgALIAAgAiAAKALMASAEEL8DIAApAwAhCSAFIAApAwg3AwggBSAJNwMAIABB3AFqIABBIGogACgCHCAEEGMgAEH8AmogAEH4AmoQPgRAIAQgBCgCAEECcjYCAAsgACgC/AIhCCABEDIaIABB3AFqEDIaIABBgANqJAAgCAu5BQEDfyMAQfACayIAJAAgACACNgLoAiAAIAE2AuwCIABBzAFqIAMgAEHgAWogAEHcAWogAEHYAWoQnQIjAEEQayICJAAgAEHAAWoiAUIANwIAIAFBADYCCCACQRBqJAAgASABLQALQQd2BH8gASgCCEH/////B3FBAWsFQQoLEDggAAJ/IAEtAAtBB3YEQCABKAIADAELIAELIgI2ArwBIAAgAEEQajYCDCAAQQA2AgggAEEBOgAHIABBxQA6AAYDQAJAIABB7AJqIABB6AJqED4NACAAKAK8AQJ/IAEtAAtBB3YEQCABKAIEDAELIAEtAAtB/wBxCyACakYEQAJ/IAEtAAtBB3YEQCABKAIEDAELIAEtAAtB/wBxCyEDIAECfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQtBAXQQOCABIAEtAAtBB3YEfyABKAIIQf////8HcUEBawVBCgsQOCAAIAMCfyABLQALQQd2BEAgASgCAAwBCyABCyICajYCvAELAn8gAEHsAmoiBigCACIDKAIMIgcgAygC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BEAgASgCAAwBCyABCyICNgK0ASAAIABBEGo2AgwgAEEANgIIA0ACQCAAQcwCaiAAQcgCahA+DQAgACgCtAECfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQsgAmpGBEACfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQshAyABAn8gAS0AC0EHdgRAIAEoAgQMAQsgAS0AC0H/AHELQQF0EDggASABLQALQQd2BH8gASgCCEH/////B3FBAWsFQQoLEDggACADAn8gAS0AC0EHdgRAIAEoAgAMAQsgAQsiAmo2ArQBCwJ/IABBzAJqIggoAgAiAygCDCIJIAMoAhBGBEAgAyADKAIAKAIkEQEADAELIAkoAgALIAYgAiAAQbQBaiAAQQhqIAAoAsQCIABBxAFqIABBEGogAEEMaiAHELQBDQAgCBBcGgwBCwsCQAJ/IAAtAM8BQQd2BEAgACgCyAEMAQsgAC0AzwFB/wBxC0UNACAAKAIMIgMgAEEQamtBnwFKDQAgACADQQRqNgIMIAMgACgCCDYCAAsgBSACIAAoArQBIAQgBhDGAzsBACAAQcQBaiAAQRBqIAAoAgwgBBBjIABBzAJqIABByAJqED4EQCAEIAQoAgBBAnI2AgALIAAoAswCIQogARAyGiAAQcQBahAyGiAAQdACaiQAIAoLmgUBBX8jAEHQAmsiACQAIAAgAjYCyAIgACABNgLMAiADEIgBIQYgAyAAQdABahDEASEHIABBxAFqIAMgAEHEAmoQwwEjAEEQayICJAAgAEG4AWoiAUIANwIAIAFBADYCCCACQRBqJAAgASABLQALQQd2BH8gASgCCEH/////B3FBAWsFQQoLEDggAAJ/IAEtAAtBB3YEQCABKAIADAELIAELIgI2ArQBIAAgAEEQajYCDCAAQQA2AggDQAJAIABBzAJqIABByAJqED4NACAAKAK0AQJ/IAEtAAtBB3YEQCABKAIEDAELIAEtAAtB/wBxCyACakYEQAJ/IAEtAAtBB3YEQCABKAIEDAELIAEtAAtB/wBxCyEDIAECfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQtBAXQQOCABIAEtAAtBB3YEfyABKAIIQf////8HcUEBawVBCgsQOCAAIAMCfyABLQALQQd2BEAgASgCAAwBCyABCyICajYC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CCAGKAIQRgRAIAYgBigCACgCJBEBAAwBCyAILQAAC8BBECABIABBtAFqIABBCGpBACADIABBEGogAEEMaiAAQdABahC2AQ0AIAcQXRoMAQsLIAIgACgCtAEgAWsQOAJ/IAItAAtBB3YEQCACKAIADAELIAILIQsQQiEJIAAgBTYCACALIAkgABC9A0EBRwRAIARBBDYCAAsgAEH8AWogAEH4AWoQPwRAIAQgBCgCAEECcjYCAAsgACgC/AEhCiACEDIaIAMQMhogAEGAAmokACAKC9EFAgN/AX4jAEGQAmsiACQAIAAgAjYCiAIgACABNgKMAiAAQdABaiADIABB4AFqIABB3wFqIABB3gFqEKACIwBBEGsiAiQAIABBxAFqIgFCADcCACABQQA2AgggAkEQaiQAIAEgAS0AC0EHdgR/IAEoAghB/////wdxQQFrBUEKCxA4IAACfyABLQALQQd2BEAgASgCAAwBCyABCyICNgLAASAAIABBIGo2AhwgAEEANgIYIABBAToAFyAAQcUAOgAWA0ACQCAAQYwCaiAAQYgCahA/DQAgACgCwAECfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQsgAmpGBEACfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQshAyABAn8gAS0AC0EHdgRAIAEoAgQMAQsgAS0AC0H/AHELQQF0EDggASABLQALQQd2BH8gASgCCEH/////B3FBAWsFQQoLEDggACADAn8gAS0AC0EHdgRAIAEoAgAMAQsgAQsiAmo2AsABCwJ/IABBjAJqIgYoAgAiAygCDCIHIAMoAhBGBEAgAyADKAIAKAIkEQEADAELIActAAALwCAAQRdqIABBFmogAiAAQcABaiAALADfASAALADeASAAQdABaiAAQSBqIABBHGogAEEYaiAAQeABahCfAg0AIAYQXRoMAQsLAkACfyAALQDbAUEHdgRAIAAoAtQBDAELIAAtANsBQf8AcQtFDQAgAC0AF0UNACAAKAIcIgMgAEEgamtBnwFKDQAgACADQQRqNgIcIAMgACgCGDYCAAsgACACIAAoAsABIAQQvwMgACkDACEJIAUgACkDCDcDCCAFIAk3AwAgAEHQAWogAEEgaiAAKAIcIAQQYyAAQYwCaiAAQYgCahA/BEAgBCAEKAIAQQJyNgIA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aiICNgLYBCABQaQEaiAHIAIgAUHYBGoQOSABKAKkBCAENgIcIAEsAIsEQQBIBEAgASgCgAQQLwsgASwAywRBAEgEQCABKALABBAvCyABLAC7BEEASARAIAEoArAEEC8LIAMoAighBCABQbAEaiICIAYQNiABIAJBqjoQNyICKAIINgLIBCABIAIpAgA3A8AEIAJCADcCACACQQA2AgggASABQcAEakHbERA1IgIoAgg2AogEIAEgAikCADcDgAQgAkIANwIAIAJBADYCCCABIAFBgARqIgI2AtgEIAFBpARqIAcgAiABQdgEahA5IAEoAqQEIAQ2AhwgASwAiwRBAEgEQCABKAKABBAvCyABLADLBEEASARAIAEoAsAEEC8LIAEsALsEQQBIBEAgASgCsAQQLwsgAygCLCEEIAFBsARqIgIgBhA2IAEgAkGqOhA3IgIoAgg2AsgEIAEgAikCADcDwAQgAkIANwIAIAJBADYCCCABIAFBwARqQcsOEDUiAigCCDYCiAQgASACKQIANwOABCACQgA3AgAgAkEANgIIIAEgAUGABGoiAjYC2AQgAUGkBGogByACIAFB2ARqEDkgASgCpAQgBDYCHCABLACLBEEASARAIAEoAoAEEC8LIAEsAMsEQQBIBEAgASgCwAQQLwsgASwAuwRBAEgEQCABKAKwBBAvCyADKAIwIQQgAUGwBGoiAiAGEDYgASACQao6EDciAigCCDYCyAQgASACKQIANwPABCACQgA3AgAgAkEANgIIIAEgAUHABGpB9BIQNSICKAIINgKIBCABIAIpAgA3A4AEIAJCADcCACACQQA2AgggASABQYAEaiICNgLYBCABQaQEaiAHIAIgAUHYBGoQOSABKAKkBCAENgIcIAEsAIsEQQBIBEAgASgCgAQQLwsgASwAywRBAEgEQCABKALABBAvCyABLAC7BEEASARAIAEoArAEEC8LIAMoAjQhBCABQbAEaiICIAYQNiABIAJBqjoQNyICKAIINgLIBCABIAIpAgA3A8AEIAJCADcCACACQQA2AgggASABQcAEakGoDhA1IgIoAgg2AogEIAEgAikCADcDgAQgAkIANwIAIAJBADYCCCABIAFBgARqIgI2AtgEIAFBpARqIAcgAiABQdgEahA5IAEoAqQEIAQ2AhwgASwAiwRBAEgEQCABKAKABBAvCyABLADLBEEASARAIAEoAsAEEC8LIAEsALsEQQBIBEAgASgCsAQQLwsgAygCOCEEIAFBsARqIgIgBhA2IAEgAkGqOhA3IgIoAgg2AsgEIAEgAikCADcDwAQgAkIANwIAIAJBADYCCCABIAFBwARqQdUSEDUiAigCCDYCiAQgASACKQIANwOABCACQgA3AgAgAkEANgIIIAEgAUGABGoiAjYC2AQgAUGkBGogByACIAFB2ARqEDkgASgCpAQgBDYCHCABLACLBEEASARAIAEoAoAEEC8LIAEsAMsEQQBIBEAgASgCwAQQLwsgASwAuwRBAEgEQCABKAKwBBAvCyADKAIAIQQgAUGwBGoiAiAGEDYgASACQao6EDciAigCCDYCyAQgASACKQIANwPABCACQgA3AgAgAkEANgIIIAEgAUHABGpBpg0QNSICKAIINgKIBCABIAIpAgA3A4AEIAJCADcCACACQQA2AgggASABQYAEaiICNgLYBCABQaQEaiAHIAIgAUHYBGoQOSABKAKkBCAENgIcIAEsAIsEQQBIBEAgASgCgAQQLwsgASwAywRBAEgEQCABKALABBAvCyABLAC7BEEASARAIAEoArAEEC8LIAMoAgQhBCABQbAEaiICIAYQNiABIAJBqjoQNyICKAIINgLIBCABIAIpAgA3A8AEIAJCADcCACACQQA2AgggASABQcAEakH8ERA1IgIoAgg2AogEIAEgAikCADcDgAQgAkIANwIAIAJBADYCCCABIAFBgARqIgI2AtgEIAFBpARqIAcgAiABQdgEahA5IAEoAqQEIAQ2AhwgASwAiwRBAEgEQCABKAKABBAvCyABLADLBEEASARAIAEoAsAEEC8LIAEsALsEQQBIBEAgASgCsAQQLwsgAygCECEEIAFBsARqIgIgBhA2IAEgAkGqOhA3IgIoAgg2AsgEIAEgAikCADcDwAQgAkIANwIAIAJBADYCCCABIAFBwARqQYcMEDUiAigCCDYCiAQgASACKQIANwOABCACQgA3AgAgAkEANgIIIAEgAUGABGoiAjYC2AQgAUGkBGogByACIAFB2ARqEDkgASgCpAQgBDYCHCABLACLBEEASARAIAEoAoAEEC8LIAEsAMsEQQBIBEAgASgCwAQQLwsgASwAuwRBAEgEQCABKAKwBBAvCyADKAIUIQQgAUGwBGoiAiAGEDYgASACQao6EDciAigCCDYCyAQgASACKQIANwPABCACQgA3AgAgAkEANgIIIAEgAUHABGpBkREQNSICKAIINgKIBCABIAIpAgA3A4AEIAJCADcCACACQQA2AgggASABQYAEaiICNgLYBCABQaQEaiAHIAIgAUHYBGoQOSABKAKkBCAENgIcIAEsAIsEQQBIBEAgASgCgAQQLwsgASwAywRBAEgEQCABKALABBAvCyABLAC7BEEASARAIAEoArAEEC8LIAMoAhghBCABQbAEaiICIAYQNiABIAJBqjoQNyICKAIINgLIBCABIAIpAgA3A8AEIAJCADcCACACQQA2AgggASABQcAEakGxDBA1IgIoAgg2AogEIAEgAikCADcDgAQgAkIANwIAIAJBADYCCCABIAFBgARqIgI2AtgEIAFBpARqIAcgAiABQdgEahA5IAEoAqQEIAQ2AhwgASwAiwRBAEgEQCABKAKABBAvCyABLADLBEEASARAIAEoAsAEEC8LIAEsALsEQQBIBEAgASgCsAQQLwsgAygCHCEEIAFBsARqIgIgBhA2IAEgAkGqOhA3IgIoAgg2AsgEIAEgAikCADcDwAQgAkIANwIAIAJBADYCCCABIAFBwARqQYAOEDUiAigCCDYCiAQgASACKQIANwOABCACQgA3AgAgAkEANgIIIAEgAUGABGoiAjYC2AQgAUGkBGogByACIAFB2ARqEDkgASgCpAQgBDYCHCABLACLBEEASARAIAEoAoAEEC8LIAEsAMsEQQBIBEAgASgCwAQQLwsgASwAuwRBAEgEQCABKAKwBBAvCyADKAIgIQQgAUGwBGoiAiAGEDYgASACQao6EDciAigCCDYCyAQgASACKQIANwPABCACQgA3AgAgAkEANgIIIAEgAUHABGpBsRIQNSICKAIINgKIBCABIAIpAgA3A4AEIAJCADcCACACQQA2AgggASABQYAEaiICNgLYBCABQaQEaiAHIAIgAUHYBGoQOSABKAKkBCAENgIcIAEsAIsEQQBIBEAgASgCgAQQLwsgASwAywRBAEgEQCABKALABBAvCyABLAC7BEEASARAIAEoArAEEC8LIAMoAgghBCABQbAEaiICIAYQNiABIAJBqjoQNyICKAIINgLIBCABIAIpAgA3A8AEIAJCADcCACACQQA2AgggASABQcAEakHZDBA1IgIoAgg2AogEIAEgAikCADcDgAQgAkIANwIAIAJBADYCCCABIAFBgARqIgI2AtgEIAFBpARqIAcgAiABQdgEahA5IAEoAqQEIAQ2AhwgASwAiwRBAEgEQCABKAKABBAvCyABLADLBEEASARAIAEoAsAEEC8LIAEsALsEQQBIBEAgASgCsAQQLwsgAygCDCEEIAFBsARqIgIgBhA2IAEgAkGqOhA3IgIoAgg2AsgEIAEgAikCADcDwAQgAkIANwIAIAJBADYCCCABIAFBwARqQbcREDUiAigCCDYCiAQgASACKQIANwOABCACQgA3AgAgAkEANgIIIAEgAUGABGoiAjYC2AQgAUGkBGogByACIAFB2ARqEDkgASgCpAQgBDYCHCABLACLBEEASARAIAEoAoAEEC8LIAEsAMsEQQBIBEAgASgCwAQQLwsgASwAuwRBAEgEQCABKAKwBBAvCyAGQQFqIgYgFUcNAAsLIAAgACgCpAFBACAMrCIvIDQQVjYCfCAAIAAoAqQBIBAgLyAxEFY2AoABIAAgACgCpAFBACAvEEg2AoQBIAAgACgCpAFBACAvEEg2AogBIAAoAnwhBCABQSAQMSICNgKABCABQpyAgICAhICAgH83AoQEIAJByx0oAAA2ABggAkHDHSkAADcAECACQbMd/QAAAP0LAAAgAkEAOgAcIAEgAUGABGoiAjYCsAQgAUHABGogByACIAFBsARqEDkgASgCwAQgBDYCHCABLACLBEEASARAIAEoAoAEEC8LIAAoAoABIQQgAUEgEDEiAjYCgAQgAUKegICAgISAgIB/NwKEBCACQd4NKQAANwAWIAJB2A0pAAA3ABAgAkHIDf0AAAD9CwAAIAJBADoAHiABIAFBgARqIgI2ArAEIAFBwARqIAcgAiABQbAEahA5IAEoAsAEIAQ2AhwgASwAiwRBAEgEQCABKAKABBAvCyAAKAKEASEEIAFBIBAxIgI2AoAEIAFCkYCAgICEgICAfzcChAQgAkHGDS0AADoAECACQbYN/QAAAP0LAAAgAkEAOgARIAEgAUGABGoiAjYCsAQgAUHABGogByACIAFBsARqEDkgASgCwAQgBDYCHCABLACLBEEASARAIAEoAoAEEC8LIAAoAogBIQQgAUEQEDEiAjYCgAQgAUKPgICAgIKAgIB/NwKEBCACQZESKQAANwAHIAJBihIpAAA3AAAgAkEAOgAPIAEgAUGABGoiAjYCsAQgAUHABGogByACIAFBsARqEDkgASgCwAQgBDYCHCABLACLBEEASARAIAEoAoAEEC8LIBRBAEoEQCAMQQJ0rCExQQAhBgNAIAAoApgBIAZB4ABsaiIDIAAoAqQBQQAgLxBINgJIIAMgACgCpAFBACAvEEg2AkwgAyAAKAKkASAQIC8gMRBWNgJQIAMgACgCpAFBACAxEEg2AlQgAyAAKAKkASAQIDEgLxBWNgJYIAMgACgCpAFBACAvEEg2AlwgAyAAKAKkAUEAIC8QSDYCACADIAAoAqQBQQAgLxBINgIEIAMgACgCpAEgECAvIC8QVjYCECADIAAoAqQBQQAgLxBINgIUIAMgACgCpAEgECAvIC8QVjYCGCADIAAoAqQBIBAgLyAvEFY2AhwgAyAAKAKkAUEAIC8QSDYCICADIAAoAqQBIBAgLyAvEFY2AgggAyAAKAKkAUEAIC8QSDYCDCADIAAoAqQBQQAgLxBINgIkIAMgACgCpAFBACAvEEg2AiggAyAAKAKkASAQIC8gLxBWNgI0IAMgACgCpAFBACAvEEg2AjggAyAAKAKkASAQIC8gLxBWNgI8IAMgACgCpAEgECAvIC8QVjYCQCADIAAoAqQBQQAgLxBINgJEIAMgACgCpAEgECAvIC8QVjYCLCADIAAoAqQBQQAgLxBINgIwIAMoAkghBCABQbAEaiICIAYQNiABIAJBujoQNyICKAIINgLIBCABIAIpAgA3A8AEIAJCADcCACACQQA2AgggASABQcAEakGBDRA1IgIoAgg2AogEIAEgAikCADcDgAQgAkIANwIAIAJBADYCCCABIAFBgARqIgI2AtgEIAFBpARqIAcgAiABQdgEahA5IAEoAqQEIAQ2AhwgASwAiwRBAEgEQCABKAKABBAvCyABLADLBEEASARAIAEoAsAEEC8LIAEsALsEQQBIBEAgASgCsAQQLwsgAygCTCEEIAFBsARqIgIgBhA2IAEgAkG6OhA3IgIoAgg2AsgEIAEgAikCADcDwAQgAkIANwIAIAJBADYCCCABIAFBwARqQdsREDUiAigCCDYCiAQgASACKQIANwOABCACQgA3AgAgAkEANgIIIAEgAUGABGoiAjYC2AQgAUGkBGogByACIAFB2ARqEDkgASgCpAQgBDYCHCABLACLBEEASARAIAEoAoAEEC8LIAEsAMsEQQBIBEAgASgCwAQQLwsgASwAuwRBAEgEQCABKAKwBBAvCyADKAJQIQQgAUGwBGoiAiAGEDYgASACQbo6EDciAigCCDYCyAQgASACKQIANwPABCACQgA3AgAgAkEANgIIIAEgAUHABGpByw4QNSICKAIINgKIBCABIAIpAgA3A4AEIAJCADcCACACQQA2AgggASABQYAEaiICNgLYBCABQaQEaiAHIAIgAUHYBGoQOSABKAKkBCAENgIcIAEsAIsEQQBIBEAgASgCgAQQLwsgASwAywRBAEgEQCABKALABBAvCyABLAC7BEEASARAIAEoArAEEC8LIAMoAlQhBCABQbAEaiICIAYQNiABIAJBujoQNyICKAIINgLIBCABIAIpAgA3A8AEIAJCADcCACACQQA2AgggASABQcAEakH0EhA1IgIoAgg2AogEIAEgAikCADcDgAQgAkIANwIAIAJBADYCCCABIAFBgARqIgI2AtgEIAFBpARqIAcgAiABQdgEahA5IAEoAqQEIAQ2AhwgASwAiwRBAEgEQCABKAKABBAvCyABLADLBEEASARAIAEoAsAEEC8LIAEsALsEQQBIBEAgASgCsAQQLwsgAygCWCEEIAFBsARqIgIgBhA2IAEgAkG6OhA3IgIoAgg2AsgEIAEgAikCADcDwAQgAkIANwIAIAJBADYCCCABIAFBwARqQagOEDUiAigCCDYCiAQgASACKQIANwOABCACQgA3AgAgAkEANgIIIAEgAUGABGoiAjYC2AQgAUGkBGogByACIAFB2ARqEDkgASgCpAQgBDYCHCABLACLBEEASARAIAEoAoAEEC8LIAEsAMsEQQBIBEAgASgCwAQQLwsgASwAuwRBAEgEQCABKAKwBBAvCyADKAJcIQQgAUGwBGoiAiAGEDYgASACQbo6EDciAigCCDYCyAQgASACKQIANwPABCACQgA3AgAgAkEANgIIIAEgAUHABGpB1RIQNSICKAIINgKIBCABIAIpAgA3A4AEIAJCADcCACACQQA2AgggASABQYAEaiICNgLYBCABQaQEaiAHIAIgAUHYBGoQOSABKAKkBCAENgIcIAEsAIsEQQBIBEAgASgCgAQQLwsgASwAywRBAEgEQCABKALABBAvCyABLAC7BEEASARAIAEoArAEEC8LIAMoAgAhBCABQbAEaiICIAYQNiABIAJBujoQNyICKAIINgLIBCABIAIpAgA3A8AEIAJCADcCACACQQA2AgggASABQcAEakGmDRA1IgIoAgg2AogEIAEgAikCADcDgAQgAkIANwIAIAJBADYCCCABIAFBgARqIgI2AtgEIAFBpARqIAcgAiABQdgEahA5IAEoAqQEIAQ2AhwgASwAiwRBAEgEQCABKAKABBAvCyABLADLBEEASARAIAEoAsAEEC8LIAEsALsEQQBIBEAgASgCsAQQLwsgAygCBCEEIAFBsARqIgIgBhA2IAEgAkG6OhA3IgIoAgg2AsgEIAEgAikCADcDwAQgAkIANwIAIAJBADYCCCABIAFBwARqQfwREDUiAigCCDYCiAQgASACKQIANwOABCACQgA3AgAgAkEANgIIIAEgAUGABGoiAjYC2AQgAUGkBGogByACIAFB2ARqEDkgASgCpAQgBDYCHCABLACLBEEASARAIAEoAoAEEC8LIAEsAMsEQQBIBEAgASgCwAQQLwsgASwAuwRBAEgEQCABKAKwBBAvCyADKAIQIQQgAUGwBGoiAiAGEDYgASACQbo6EDciAigCCDYCyAQgASACKQIANwPABCACQgA3AgAgAkEANgIIIAEgAUHABGpBhwwQNSICKAIINgKIBCABIAIpAgA3A4AEIAJCADcCACACQQA2AgggASABQYAEaiICNgLYBCABQaQEaiAHIAIgAUHYBGoQOSABKAKkBCAENgIcIAEsAIsEQQBIBEAgASgCgAQQLwsgASwAywRBAEgEQCABKALABBAvCyABLAC7BEEASARAIAEoArAEEC8LIAMoAhQhBCABQbAEaiICIAYQNiABIAJBujoQNyICKAIINgLIBCABIAIpAgA3A8AEIAJCADcCACACQQA2AgggASABQcAEakGRERA1IgIoAgg2AogEIAEgAikCADcDgAQgAkIANwIAIAJBADYCCCABIAFBgARqIgI2AtgEIAFBpARqIAcgAiABQdgEahA5IAEoAqQEIAQ2AhwgASwAiwRBAEgEQCABKAKABBAvCyABLADLBEEASARAIAEoAsAEEC8LIAEsALsEQQBIBEAgASgCsAQQLwsgAygCGCEEIAFBsARqIgIgBhA2IAEgAkG6OhA3IgIoAgg2AsgEIAEgAikCADcDwAQgAkIANwIAIAJBADYCCCABIAFBwARqQbEMEDUiAigCCDYCiAQgASACKQIANwOABCACQgA3AgAgAkEANgIIIAEgAUGABGoiAjYC2AQgAUGkBGogByACIAFB2ARqEDkgASgCpAQgBDYCHCABLACLBEEASARAIAEoAoAEEC8LIAEsAMsEQQBIBEAgASgCwAQQLwsgASwAuwRBAEgEQCABKAKwBBAvCyADKAIcIQQgAUGwBGoiAiAGEDYgASACQbo6EDciAigCCDYCyAQgASACKQIANwPABCACQgA3AgAgAkEANgIIIAEgAUHABGpBgA4QNSICKAIINgKIBCABIAIpAgA3A4AEIAJCADcCACACQQA2AgggASABQYAEaiICNgLYBCABQaQEaiAHIAIgAUHYBGoQOSABKAKkBCAENgIcIAEsAIsEQQBIBEAgASgCgAQQLwsgASwAywRBAEgEQCABKALABBAvCyABLAC7BEEASARAIAEoArAEEC8LIAMoAiAhBCABQbAEaiICIAYQNiABIAJBujoQNyICKAIINgLIBCABIAIpAgA3A8AEIAJCADcCACACQQA2AgggASABQcAEakGxEhA1IgIoAgg2AogEIAEgAikCADcDgAQgAkIANwIAIAJBADYCCCABIAFBgARqIgI2AtgEIAFBpARqIAcgAiABQdgEahA5IAEoAqQEIAQ2AhwgASwAiwRBAEgEQCABKAKABBAvCyABLADLBEEASARAIAEoAsAEEC8LIAEsALsEQQBIBEAgASgCsAQQLwsgAygCCCEEIAFBsARqIgIgBhA2IAEgAkG6OhA3IgIoAgg2AsgEIAEgAikCADcDwAQgAkIANwIAIAJBADYCCCABIAFBwARqQdkMEDUiAigCCDYCiAQgASACKQIANwOABCACQgA3AgAgAkEANgIIIAEgAUGABGoiAjYC2AQgAUGkBGogByACIAFB2ARqEDkgASgCpAQgBDYCHCABLACLBEEASARAIAEoAoAEEC8LIAEsAMsEQQBIBEAgASgCwAQQLwsgASwAuwRBAEgEQCABKAKwBBAvCyADKAIMIQQgAUGwBGoiAiAGEDYgASACQbo6EDciAigCCDYCyAQgASACKQIANwPABCACQgA3AgAgAkEANgIIIAEgAUHABGpBtxEQNSICKAIINgKIBCABIAIpAgA3A4AEIAJCADcCACACQQA2AgggASABQYAEaiICNgLYBCABQaQEaiAHIAIgAUHYBGoQOSABKAKkBCAENgIcIAEsAIsEQQBIBEAgASgCgAQQLwsgASwAywRBAEgEQCABKALABBAvCyABLAC7BEEASARAIAEoArAEEC8LIAMoAiQhBCABQbAEaiICIAYQNiABIAJBujoQNyICKAIINgLIBCABIAIpAgA3A8AEIAJCADcCACACQQA2AgggASABQcAEakGQDRA1IgIoAgg2AogEIAEgAikCADcDgAQgAkIANwIAIAJBADYCCCABIAFBgARqIgI2AtgEIAFBpARqIAcgAiABQdgEahA5IAEoAqQEIAQ2AhwgASwAiwRBAEgEQCABKAKABBAvCyABLADLBEEASARAIAEoAsAEEC8LIAEsALsEQQBIBEAgASgCsAQQLwsgAygCKCEEIAFBsARqIgIgBhA2IAEgAkG6OhA3IgIoAgg2AsgEIAEgAikCADcDwAQgAkIANwIAIAJBADYCCCABIAFBwARqQegREDUiAigCCDYCiAQgASACKQIANwOABCACQgA3AgAgAkEANgIIIAEgAUGABGoiAjYC2AQgAUGkBGogByACIAFB2ARqEDkgASgCpAQgBDYCHCABLACLBEEASARAIAEoAoAEEC8LIAEsAMsEQQBIBEAgASgCwAQQLwsgASwAuwRBAEgEQCABKAKwBBAvCyADKAI0IQQgAUGwBGoiAiAGEDYgASACQbo6EDciAigCCDYCyAQgASACKQIANwPABCACQgA3AgAgAkEANgIIIAEgAUHABGpB7gsQNSICKAIINgKIBCABIAIpAgA3A4AEIAJCADcCACACQQA2AgggASABQYAEaiICNgLYBCABQaQEaiAHIAIgAUHYBGoQOSABKAKkBCAENgIcIAEsAIsEQQBIBEAgASgCgAQQLwsgASwAywRBAEgEQCABKALABBAvCyABLAC7BEEASARAIAEoArAEEC8LIAMoAjghBCABQbAEaiICIAYQNiABIAJBujoQNyICKAIINgLIBCABIAIpAgA3A8AEIAJCADcCACACQQA2AgggASABQcAEakH6EBA1IgIoAgg2AogEIAEgAikCADcDgAQgAkIANwIAIAJBADYCCCABIAFBgARqIgI2AtgEIAFBpARqIAcgAiABQdgEahA5IAEoAqQEIAQ2AhwgASwAiwRBAEgEQCABKAKABBAvCyABLADLBEEASARAIAEoAsAEEC8LIAEsALsEQQBIBEAgASgCsAQQLwsgAygCPCEEIAFBsARqIgIgBhA2IAEgAkG6OhA3IgIoAgg2AsgEIAEgAikCADcDwAQgAkIANwIAIAJBADYCCCABIAFBwARqQZoMEDUiAigCCDYCiAQgASACKQIANwOABCACQgA3AgAgAkEANgIIIAEgAUGABGoiAjYC2AQgAUGkBGogByACIAFB2ARqEDkgASgCpAQgBDYCHCABLACLBEEASARAIAEoAoAEEC8LIAEsAMsEQQBIBEAgASgCwAQQLwsgASwAuwRBAEgEQCABKAKwBBAvCyADQUBrKAIAIQQgAUGwBGoiAiAGEDYgASACQbo6EDciAigCCDYCyAQgASACKQIANwPABCACQgA3AgAgAkEANgIIIAEgAUHABGpB5w0QNSICKAIINgKIBCABIAIpAgA3A4AEIAJCADcCACACQQA2AgggASABQYAEaiICNgLYBCABQaQEaiAHIAIgAUHYBGoQOSABKAKkBCAENgIcIAEsAIsEQQBIBEAgASgCgAQQLwsgASwAywRBAEgEQCABKALABBAvCyABLAC7BEEASARAIAEoArAEEC8LIAMoAkQhBCABQbAEaiICIAYQNiABIAJBujoQNyICKAIINgLIBCABIAIpAgA3A8AEIAJCADcCACACQQA2AgggASABQcAEakGaEhA1IgIoAgg2AogEIAEgAikCADcDgAQgAkIANwIAIAJBADYCCCABIAFBgARqIgI2AtgEIAFBpARqIAcgAiABQdgEahA5IAEoAqQEIAQ2AhwgASwAiwRBAEgEQCABKAKABBAvCyABLADLBEEASARAIAEoAsAEEC8LIAEsALsEQQBIBEAgASgCsAQQLwsgAygCLCEEIAFBsARqIgIgBhA2IAEgAkG6OhA3IgIoAgg2AsgEIAEgAikCADcDwAQgAkIANwIAIAJBADYCCCABIAFBwARqQcIMEDUiAigCCDYCiAQgASACKQIANwOABCACQgA3AgAgAkEANgIIIAEgAUGABGoiAjYC2AQgAUGkBGogByACIAFB2ARqEDkgASgCpAQgBDYCHCABLACLBEEASARAIAEoAoAEEC8L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ACgCADYCACAHIAAoAgQ2AgQgByAALQAIOgAIIAEgACgCDDYCACABIAAoAhA2AgQgASAALQAUOgAIIARBAmohBCAGQQJqIgYgCkcNAAsLIAtFDQIgBCAIakEMbCAFakEMayIAIAMgBEEMbGoiASgCADYCACAAIAEoAgQ2AgQgACABLQAIOgAIDAILIAFBADYCKCABQZ94NgIAIAIoAgghAwsgA0UNAQsgAiADNgIMIAMQLwsgAkFAayQAC6UBAQR/IABBrJYBNgIAIABBCGohBAJAIAAoAigiAUUNACABQX/+HgIEDQAgASABKAIAKAIIEQAAAkAgAUEIaiID/hACAARAIANBf/4eAgANAQsgASABKAIAKAIQEQAACwsgBCgCACIBQQRqQX/+HgIARQRAIAEgASgCACgCCBEAAAsgAEGslAE2AgAgACgCBCIBBEAgASABKAIAKAIEEQAACyAAEC8LowEBBH8gAEGslgE2AgAgAEEIaiEEAkAgACgCKCIBRQ0AIAFBf/4eAgQNACABIAEoAgAoAggRAAACQCABQQhqIgP+EAIABEAgA0F//h4CAA0BCyABIAEoAgAoAhARAAALCyAEKAIAIgFBBGpBf/4eAgBFBEAgASABKAIAKAIIEQAACyAAQayUATYCACAAKAIEIgEEQCABIAEoAgAoAgQRAAALIAAL6wIBBn8CQCABKAIEIgMgASgCDCIERg0AIAQgASgCCCICRgRAQQAhAiABLQAsQQhxDQFBASECIARBAWstAAAiA0HfAEYNASADwEEATgRAIAAoAgwoAgggA0ECdGotAABB4ABxDQILQQAhAgwBCwJAIAIgA0cNACABKAIsIgRBgAFxDQBBACECIARBBHENAUEBIQIgAy0AACIDQd8ARg0BIAPAQQBOBEAgACgCDCgCCCADQQJ0ai0AAEHgAHENAgtBACECDAELIAItAAAiBsAhBEEBIQUCf0EBIAJBAWstAAAiAkHfAEYNABogAsBBAE4EQEEBIAAoAgwoAgggAkECdGotAABB4ABxDQEaC0EACyEHAkAgBEHfAEYNACAEQQBOBEAgACgCDCgCCCAGQQJ0ai0AAEHgAHENAQtBACEFCyAHIAVHIQILIAFBACAAKAIEIAAtABQgAkYiABs2AiggAUGfeEGeeCAAGzYCAAtSAQF/IABB1JUBNgIAIAAo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dXRleAAlcyBmYWlsZWQgdG8gYWNxdWlyZSBtdXRleABjaXJjdW1mbGV4AC0rICAgMFgweAAtMFgrMFggMFgtMHgrMHggMHgAaGVicmV3AGhhdwBOb3YAVGh1AHRlbHVndQBBdWd1c3QAJXMgZmFpbGVkIHRvIGJyb2FkY2FzdAB1bnNpZ25lZCBzaG9ydABhbGVydABwcmludAB1bnNpZ25lZCBpbnQAY2lyY3VtZmxleC1hY2NlbnQAZ3JhdmUtYWNjZW50AGZ1bGxfZGVmYXVsdABrdl9jYWNoZV9yZWluaXQAa3ZfY2FjaGVfaW5pdAB4ZGlnaXQALmNyb3NzX2F0dG4ucXVlcnkud2VpZ2h0AC5hdHRuLnF1ZXJ5LndlaWdodAAuY3Jvc3NfYXR0bi5rZXkud2VpZ2h0AC5hdHRuLmtleS53ZWlnaHQALmNyb3NzX2F0dG4ub3V0LndlaWdodAAuYXR0bi5vdXQud2VpZ2h0AGVuY29kZXIubG5fcG9zdC53ZWlnaHQALm1scF9sbi53ZWlnaHQALmNyb3NzX2F0dG5fbG4ud2VpZ2h0AC5hdHRuX2xuLndlaWdodABkZWNvZGVyLmxuLndlaWdodABkZWNvZGVyLnRva2VuX2VtYmVkZGluZy53ZWlnaHQALmNyb3NzX2F0dG4udmFsdWUud2VpZ2h0AC5hdHRuLnZhbHVlLndlaWdodABlbmNvZGVyLmNvbnYyLndlaWdodAAubWxwLjIud2VpZ2h0AGVuY29kZXIuY29udjEud2VpZ2h0AC5tbHAuMC53ZWlnaHQAc2V0AHJpZ2h0LWN1cmx5LWJyYWNrZXQAbGVmdC1jdXJseS1icmFja2V0AHJpZ2h0LXNxdWFyZS1icmFja2V0AGxlZnQtc3F1YXJlLWJyYWNrZXQAcHVuY3QAZ2dtbF9uZXdfb2JqZWN0AE9jdABmbG9hdABTYXQAY29tbWVyY2lhbC1hdAB1aW50NjRfdABoeXBoZW4tbWludXMAcmV2ZXJzZS1zb2xpZHVzAHdoaXNwZXJfZXhwX2NvbXB1dGVfdG9rZW5fbGV2ZWxfdGltZXN0YW1wcwBhZnJpa2FhbnMAcGFyYW1zAHJpZ2h0LXBhcmVudGhlc2lzAGxlZnQtcGFyZW50aGVzaXMAd2hpc3Blcl9wcmludF90aW1pbmdzAC5jcm9zc19hdHRuLnF1ZXJ5LmJpYXMALmF0dG4ucXVlcnkuYmlhcwAuY3Jvc3NfYXR0bi5vdXQuYmlhcwAuYXR0bi5vdXQuYmlhcwBlbmNvZGVyLmxuX3Bvc3QuYmlhcwAubWxwX2xuLmJpYXMALmNyb3NzX2F0dG5fbG4uYmlhcwAuYXR0bl9sbi5iaWFzAGRlY29kZXIubG4uYmlhcwAuY3Jvc3NfYXR0bi52YWx1ZS5iaWFzAC5hdHRuLnZhbHVlLmJpYXMAZW5jb2Rlci5jb252Mi5iaWFzAC5tbHAuMi5iaWFzAGVuY29kZXIuY29udjEuYmlhcwAubWxwLjAuYmlhcwAlcwBmb3VyAHdoaXNwZXJfbGFuZ19zdHIAQXByAGNvbnN0cnVjdG9yAHZlY3RvcgBjZ3JhcGgtPm5vZGVzW2NncmFwaC0+bl9ub2RlcyAtIDFdID09IHRlbnNvcgB1bmtub3duIGFsbG9jYXRpb24gZXJyb3IAYmFzaGtpcgBsb3dlcgB1cHBlcgBraG1lcgBidWZmZXIAT2N0b2JlcgBOb3ZlbWJlcgBTZXB0ZW1iZXIARGVjZW1iZXIAdGF0YXIAbXlhbm1hcgB1bnNpZ25lZCBjaGFyAGlvc19iYXNlOjpjbGVhcgBNYXIAcQAvVXNlcnMvZ2dlcmdhbm92L2RldmVsb3BtZW50L2dpdGh1Yi93aGlzcGVyLmNwcC93aGlzcGVyLmNwcABmdWxsLXN0b3AAU2VwACVJOiVNOiVTICVwAHR3bwBhdXRvAHBhc2h0bwB6ZXJvAGxhbwBTdW4ASnVuAGNhcnJpYWdlLXJldHVybgBicmV0b24Ac2VtaWNvbG9uAHN0ZDo6ZXhjZXB0aW9uAF9fY3hhX2d1YXJkX2FjcXVpcmUgZGV0ZWN0ZWQgcmVjdXJzaXZlIGluaXRpYWxpemF0aW9uAE1vbgBsYXRpbgBwZXJjZW50LXNpZ24AcGx1cy1zaWduAGVxdWFscy1zaWduAG51bWJlci1zaWduAGRvbGxhci1zaWduAGxlc3MtdGhhbi1zaWduAGdyZWF0ZXItdGhhbi1zaWduAHNldmVuAHR1cmttZW4AaHlwaGVuAG9jY2l0YW4AdGliZXRhbgBuYW4AZ2VybWFuAGNwbGFuAGNhdGFsYW4AbGF0dmlhbgBiZWxhcnVzaWFuAHJ1c3NpYW4AcGVyc2lhbgBpbmRvbmVzaWFuAGh1bmdhcmlhbgBidWxnYXJpYW4AYm9zbmlhbgBtYWNlZG9uaWFuAHVrcmFpbmlhbgBzbG92ZW5pYW4AbGl0aHVhbmlhbgBtb25nb2xpYW4AaXRhbGlhbgBub3J3ZWdpYW4Ac2VyYmlhbgBrb3JlYW4ASmFuAGFsbnVtAG1hbGF5YWxhbQBKdWwAY250cmwAZ2dtbF9uZXdfdGVuc29yX2ltcGwAYm9vbABsbABBcHJpbAB0YW1pbABlbXNjcmlwdGVuOjp2YWwAbnlub3JzawBhc3RlcmlzawBxdWVzdGlvbi1tYXJrAHF1b3RhdGlvbi1tYXJrAGV4Y2xhbWF0aW9uLW1hcmsAYmxhbmsAdGFqaWsAZ3JlZWsAdXpiZWsAc2xvdmFrAGoAbWFvcmkARnJpAGF6ZXJiYWlqYW5pAHN3YWhpbGkAbmVwYWxpAHNvbWFsaQBiZW5nYWxpAG1hcmF0aGkAc2luZGhpAGhpbmRpAHB1bmphYmkAYmFkX2FycmF5X25ld19sZW5ndGgAd2Vsc2gAZmlubmlzaABzcGFuaXNoAGRhbmlzaABwb2xpc2gAZW5nbGlzaAB0dXJraXNoAGx1eGVtYm91cmdpc2gAc3dlZGlzaAB5aWRkaXNoAGJhY2tzbGFzaABncmFwaABrYXpha2gAZHV0Y2gATWFyY2gAZnJlbmNoAGN6ZWNoAEF1ZwB0YWdhbG9nAHVuc2lnbmVkIGxvbmcAdGVybWluYXRpbmcAc3RkOjp3c3RyaW5nAGJhc2ljX3N0cmluZwBzdGQ6OnN0cmluZwBzdGQ6OnUxNnN0cmluZwBzdGQ6OnUzMnN0cmluZwBlbmNvZGVyLnBvc2l0aW9uYWxfZW1iZWRkaW5nAGRlY29kZXIucG9zaXRpb25hbF9lbWJlZGRpbmcAaW5mACUuMExmACVMZgB3aGlzcGVyX3Rva2VuaXplAGZpdmUAdHJ1ZQBiYXNxdWUAaW52YWxpZCBhbGlnbm1lbnQgdmFsdWUAVHVlAHdoaXNwZXJfaW5pdF9zdGF0ZQB3aGlzcGVyX2luaXRfbm9fc3RhdGUAd2hpc3Blcl9pbml0X2Zyb21fZmlsZV9ub19zdGF0ZQB3aGlzcGVyX2xhbmdfYXV0b19kZXRlY3Rfd2l0aF9zdGF0ZQB3aGlzcGVyX2Z1bGxfd2l0aF9zdGF0ZQB0cmFuc2xhdGUAZmFsc2UAcG9ydHVndWVzZQBtYWx0ZXNlAGZhcm9lc2UAY2hpbmVzZQBzdW5kYW5lc2UAdmlldG5hbWVzZQBfX2N4YV9ndWFyZF9yZWxlYXNlAHVuZGVyc2NvcmUAX19jeGFfZ3VhcmRfYWNxdWlyZQB3dHlwZSA9PSBjYWNoZS52LT50eXBlAHNyYzAtPnR5cGUgPT0gZHN0LT50eXBlAGRzdC0+dHlwZSA9PSBzcmMwLT50eXBlAFVua25vd24gZXJyb3IgdHlwZQBKdW5lAG9uZQBuaW5lAG5ld2xpbmUAbG93LWxpbmUAdmVydGljYWwtbGluZQBoYWl0aWFuIGNyZW9sZQBkb3VibGUAYXBvc3Ryb3BoZQB0aHJlZQBmcmVlAHRpbGRlAHJpZ2h0LWJyYWNlAGxlZnQtYnJhY2UAYmFja3NwYWNlAHRyYW5zY3JpYmUAcGVyaW9kAG1hcDo6YXQ6ICBrZXkgbm90IGZvdW5kAGFtcGVyc2FuZAB2b2lkAHdoaXNwZXJfbGFuZ19pZAB0ZXJtaW5hdGVfaGFuZGxlciB1bmV4cGVjdGVkbHkgcmV0dXJuZWQAdGhyZWFkIGNvbnN0cnVjdG9yIGZhaWxlZABfX3RocmVhZF9zcGVjaWZpY19wdHIgY29uc3RydWN0aW9uIGZhaWxlZAB0aHJlYWQ6OmpvaW4gZmFpbGVkAG11dGV4IGxvY2sgZmFpbGVkAGZvcm0tZmVlZABXZWQAd2hpc3Blcl9tb2RlbF9sb2FkACUwMmQ6JTAyZDolMDJkJXMlMDNkAGxlYWZfJWQAbm9kZV8lZABnZ21sX2FsaWduZWRfbWFsbG9jAHN0ZDo6YmFkX2FsbG9jAGRzdC0+bmVbMF0gPT0gbmMAYW1oYXJpYwBpY2VsYW5kaWMAYXJhYmljAERlYwAvVXNlcnMvZ2dlcmdhbm92L2RldmVsb3BtZW50L2dpdGh1Yi93aGlzcGVyLmNwcC9nZ21sLmMAd2IAcmIARmViAHZlcnRpY2FsLXRhYgBuX2xvZ2l0cyA9PSBjdHgudm9jYWIubl92b2NhYgB3K2IAcitiAGErYgByd2EAY3BsYW4tPndvcmtfZGF0YQBoYXVzYQBzaG9uYQBjb21tYQBzaW5oYWxhAGxpbmdhbGEAYWxwaGEAa2FubmFkYQB5b3J1YmEAW19leHRyYV90b2tlbl8AW19UVF8AW19TT1RfXQBbX05PVF9dAFtfRU9UX10AW19CRUdfXQBzcmMwLT5uYlswXSA9PSBkc3QtPm5iWzBdICYmIHNyYzAtPm5iWzFdID09IGRzdC0+bmJbMV0gJiYgc3JjMC0+bmJbMl0gPT0gZHN0LT5uYlsyXSAmJiBzcmMwLT5uYlszXSA9PSBkc3QtPm5iWzNdAGEtPm5lWzFdID09IGItPm5lWzFdAFoAdGVuc29yLT5vcCA9PSBHR01MX09QX1VOQVJZACVhICViICVkICVIOiVNOiVTICVZAFBPU0lYAFcAVgBVAHd0eXBlICE9IEdHTUxfVFlQRV9DT1VOVABheGlzMyA+PSAwICYmIGF4aXMzIDwgR0dNTF9NQVhfRElNUwBheGlzMiA+PSAwICYmIGF4aXMyIDwgR0dNTF9NQVhfRElNUwBheGlzMSA+PSAwICYmIGF4aXMxIDwgR0dNTF9NQVhfRElNUwBheGlzMCA+PSAwICYmIGF4aXMwIDwgR0dNTF9NQVhfRElNUwBjZ3JhcGgtPm5fbGVhZnMgPCBHR01MX01BWF9OT0RFUwBjZ3JhcGgtPm5fbm9kZXMgPCBHR01MX01BWF9OT0RFUwAlSDolTTolUwBSAFEAUABPAE5BTgBuZTEgPT0gTgBuZWQxID09IE4AUE0AQU0AbmViMTAgPT0gTQBuZWMwMCA9PSBNAE5VTAB0ZW5zb3IgIT0gTlVMTABjdHgtPm1lbV9idWZmZXIgIT0gTlVMTABMQ19BTEwASwBKAEkASABMQU5HAElORgBFAG5ldjEgPT0gRABuZWMwMSA9PSBEAG5lazAgPT0gRABuZTAgPT0gRABuZWQwID09IEQAbmVjMTAgPT0gRABuZWIwMCA9PSBEAEMAQgBBAGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHNob3J0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBzaG9ydD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBpbnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGZsb2F0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50NjRfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50NjRfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDMyX3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludDMyX3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGNoYXI+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIGNoYXI+AHN0ZDo6YmFzaWNfc3RyaW5nPHVuc2lnbmVkIGNoYXI+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHNpZ25lZCBjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxsb25nPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBsb25nPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxkb3VibGU+AD4+PgA8PDwAMDEyMzQ1Njc4OQBpOABIRUFQVTgAQy5VVEYtOABpMTYAZjE2AGRzdC0+dHlwZSA9PSBHR01MX1RZUEVfRjE2AHNyYzAtPnR5cGUgPT0gR0dNTF9UWVBFX0YxNgBheGlzMiAhPSBheGlzMwBheGlzMSAhPSBheGlzMwBheGlzMCAhPSBheGlzMwBuZTAzID09IG5lMwBuYjIgPD0gbmIzAG5lMyA9PSBuZTEzAG5lMDMgPT0gbmUxMwBuZTMgPT0gbmUwMwBheGlzMSAhPSBheGlzMgBheGlzMCAhPSBheGlzMgBnZ21sX25lbGVtZW50cyhhKSA9PSBuZTAqbmUxKm5lMgBuX2hlYWQgPT0gbmUyAG5lMDIgPT0gbmUyAG5iMSA8PSBuYjIAbmUyID09IG5lYTIAaTMyAGYzMgBnZ21sX2lzX21hdHJpeChhKSAmJiBnZ21sX2lzX3ZlY3RvcihiKSAmJiBiLT50eXBlID09IEdHTUxfVFlQRV9JMzIAZHN0LT50eXBlID09IEdHTUxfVFlQRV9GMzIAc3JjMS0+dHlwZSA9PSBHR01MX1RZUEVfRjMyAG5lMiA9PSBuZTEyAG5lMDIgPT0gbmUxMgBuZTIgPT0gbmUwMgBwMCA9PSBzcmMwLT5uZVswXS8yAGF4aXMwICE9IGF4aXMxAGsxID09IHMxAGdnbWxfbmVsZW1lbnRzKGEpID09IG5lMCpuZTEAbmUwMCA9PSBuZTEAbmIwIDw9IG5iMQBuZTEgPT0gbmVhMQBxOF8xAHE1XzEAcTRfMQBuZTEgPT0gbmUxMQBuZTEgPT0gbmUwMQBuZTAgPT0gbmUwMQB0ID09IDAgfHwgdCA9PSAxAG5vZGUtPnNyY1sxXS0+bmVbM10gPT0gMQBub2RlLT5zcmNbMF0tPm5lWzNdID09IDEAbm9kZS0+c3JjWzFdLT5uZVsyXSA9PSAxAG5lMDAgJSAyID09IDEAbmVjMTEgPT0gMQBuZWIxMSA9PSAxAG5lMDEgPT0gMQBuZTAgPT0gMQBkMCA9PSAxAGswID09IHMwAG5lMSArIG5fcGFzdCA9PSBuZTAAbmUwMCA9PSBuZTAAbl9kaW1zIDw9IG5lMABuZTAgPT0gbmVhMABxOF8wAHE1XzAAcTRfMABuZTEgPT0gbmUxMABuZTAgPT0gbmUwMABjcGxhbi0+bl90aHJlYWRzID4gMABjcGxhbi0+bl90YXNrc1tpXSA+IDAAbl9wYXN0ID49IDAAUCA+PSAwAHBhcmFtcy0+aXRoID09IDAAcmMgPT0gMAAoKHVpbnRwdHJfdCkgKG1lbV9idWZmZXIgKyBvYmpfbmV3LT5vZmZzKSklR0dNTF9NRU1fQUxJR04gPT0gMAAoKHVpbnRwdHJfdCkgKGN0eC0+bWVtX2J1ZmZlcikpJUdHTUxfTUVNX0FMSUdOID09IDAAbl9kaW1zICUgMiA9PSAwAHAxID09IDAAcDAgPT0gMABUaGUgZXhwcmVzc2lvbiBjb250YWluZWQgbWlzbWF0Y2hlZCB7IGFuZCB9LgBlbmNvZGVyLmJsb2Nrcy4AZGVjb2Rlci5ibG9ja3MuAFRoZSBleHByZXNzaW9uIGNvbnRhaW5lZCBhbiBpbnZhbGlkIGNoYXJhY3RlciByYW5nZSwgc3VjaCBhcyBbYi1hXSBpbiBtb3N0IGVuY29kaW5ncy4AQW4gZW1wdHkgcmVnZXggaXMgbm90IGFsbG93ZWQgaW4gdGhlIFBPU0lYIGdyYW1tYXIuAFRoZSBleHByZXNzaW9uIGNvbnRhaW5lZCBhbiBpbnZhbGlkIHJhbmdlIGluIGEge30gZXhwcmVzc2lvbi4AVGhlIHBhcnNlciBkaWQgbm90IGNvbnN1bWUgdGhlIGVudGlyZSByZWd1bGFyIGV4cHJlc3Npb24uAE9uZSBvZiAqPyt7IHdhcyBub3QgcHJlY2VkZWQgYnkgYSB2YWxpZCByZWd1bGFyIGV4cHJlc3Npb24uAFRoZSBjb21wbGV4aXR5IG9mIGFuIGF0dGVtcHRlZCBtYXRjaCBhZ2FpbnN0IGEgcmVndWxhciBleHByZXNzaW9uIGV4Y2VlZGVkIGEgcHJlLXNldCBsZXZlbC4AVGhlIGV4cHJlc3Npb24gY29udGFpbmVkIGFuIGludmFsaWQgZXNjYXBlZCBjaGFyYWN0ZXIsIG9yIGEgdHJhaWxpbmcgZXNjYXBlLgBUaGVyZSB3YXMgaW5zdWZmaWNpZW50IG1lbW9yeSB0byBjb252ZXJ0IHRoZSBleHByZXNzaW9uIGludG8gYSBmaW5pdGUgc3RhdGUgbWFjaGluZS4AVGhlIGV4cHJlc3Npb24gY29udGFpbmVkIGFuIGludmFsaWQgY29sbGF0aW5nIGVsZW1lbnQgbmFtZS4AVGhlIGV4cHJlc3Npb24gY29udGFpbmVkIGFuIGludmFsaWQgY2hhcmFjdGVyIGNsYXNzIG5hbWUuAFRoZXJlIHdhcyBpbnN1ZmZpY2llbnQgbWVtb3J5IHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gY291bGQgbWF0Y2ggdGhlIHNwZWNpZmllZCBjaGFyYWN0ZXIgc2VxdWVuY2UuAFRoZSBleHByZXNzaW9uIGNvbnRhaW5lZCBhbiBpbnZhbGlkIGJhY2sgcmVmZXJlbmNlLgBBbiBpbnZhbGlkIHJlZ2V4IGdyYW1tYXIgaGFzIGJlZW4gcmVxdWVzdGVkLgBUaGUgZXhwcmVzc2lvbiBjb250YWluZWQgbWlzbWF0Y2hlZCBbIGFuZCBdLgBUaGUgZXhwcmVzc2lvbiBjb250YWluZWQgbWlzbWF0Y2hlZCAoIGFuZCApLgAtLS0AdysAJ3N8J3R8J3JlfCd2ZXwnbXwnbGx8J2R8ID9bWzphbHBoYTpdXSt8ID9bWzpkaWdpdDpdXSt8ID9bXlxzWzphbHBoYTpdWzpkaWdpdDpdXSt8XHMrKD8hXFMpfFxzKwByKwBhKwAlcyAoY29weSkAJXMgKHZpZXcpAG5fZWxlbWVudHMgPT0gZ2dtbF9uZWxlbWVudHMoY2FjaGUudikAZ2dtbF9pc19jb250aWd1b3VzKGRzdCkAb2Zmc2V0ICsgaW0wKm5iMCArIGltMSpuYjEgKyBpbTIqbmIyICsgaW0zKm5iMyA8PSBnZ21sX25ieXRlcyhkc3QpAG9mZnNldCArIChuZTEwID09IDAgPyAwIDogbmUxMC0xKSpuYjAgKyAobmUxMSA9PSAwID8gMCA6IG5lMTEtMSkqbmIxICsgKG5lMTIgPT0gMCA/IDAgOiBuZTEyLTEpKm5iMiArIChuZTEzID09IDAgPyAwIDogbmUxMy0xKSpuYjMgPCBnZ21sX25ieXRlcyhkc3QpAGdnbWxfaXNfc2NhbGFyKGRzdCkAZ2dtbF9pc19jb250aWd1b3VzX2V4Y2VwdF9kaW1fMShkc3QpAGdnbWxfYXJlX3NhbWVfc2hhcGUoc3JjMSwgZHN0KQBnZ21sX2FyZV9zYW1lX3NoYXBlKG9wdDAsIGRzdCkAZ2dtbF9jYW5fcmVwZWF0KHNyYzAsIGRzdCkAZ2dtbF9hcmVfc2FtZV9zaGFwZShzcmMwLCBzcmMxKSAmJiBnZ21sX2FyZV9zYW1lX3NoYXBlKHNyYzAsIGRzdCkAZ2dtbF9jYW5fcmVwZWF0X3Jvd3Moc3JjMSwgc3JjMCkgJiYgZ2dtbF9hcmVfc2FtZV9zaGFwZShzcmMwLCBkc3QpAGRzdC0+bmJbMF0gPT0gc2l6ZW9mKGZsb2F0KQBzcmMwLT5uYlswXSA9PSBzaXplb2YoZmxvYXQpAG5idjAgPT0gc2l6ZW9mKGZsb2F0KQBuYnEwID09IHNpemVvZihmbG9hdCkAbmJrMCA9PSBzaXplb2YoZmxvYXQpAG5iMCA9PSBzaXplb2YoZmxvYXQpAG5iYzEwID09IHNpemVvZihmbG9hdCkAbmIxMCA9PSBzaXplb2YoZmxvYXQpAG5iYjEwID09IHNpemVvZihmbG9hdCkAbmIwMCA9PSBzaXplb2YoZmxvYXQpAHNyYzAtPm5iWzBdID09IHNpemVvZihnZ21sX2ZwMTZfdCkAbmJ2MCA9PSBzaXplb2YoZ2dtbF9mcDE2X3QpAG5icTAgPT0gc2l6ZW9mKGdnbWxfZnAxNl90KQBuYmswID09IHNpemVvZihnZ21sX2ZwMTZfdCkAbmIwID09IHNpemVvZihnZ21sX2ZwMTZfdCkAbmJhMCA9PSBzaXplb2YoZ2dtbF9mcDE2X3QpAG5iYzAwID09IHNpemVvZihnZ21sX2ZwMTZfdCkAbmIwMCA9PSBzaXplb2YoZ2dtbF9mcDE2X3QpAG5iYjAwID09IHNpemVvZihnZ21sX2ZwMTZfdCkAJXMgKGNvcHkgb2YgJXMpAChudWxsKQBjYWNoZS5idWYuc2l6ZSgpID49IDIqbl9lbGVtZW50cypnZ21sX3R5cGVfc2l6ZWYod3R5cGUpAGdnbWxfaXNfcXVhbnRpemVkKHNyYzAtPnR5cGUpAG5iMDAgPT0gZ2dtbF90eXBlX3NpemUodHlwZSkAJXMgKHBlcm11dGVkKQAlcyAodHJhbnNwb3NlZCkAJXMgKHJlc2hhcGVkKQBnZ21sX2lzX2NvbnRpZ3VvdXNfZXhjZXB0X2RpbV8xKGdyYWQpAGdnbWxfYXJlX3NhbWVfc2hhcGUoc3JjMCwgZ3JhZCkAZ2dtbF9pc19tYXRyaXgoYikAZ2dtbF9uZWxlbWVudHMoYSkgPT0gZ2dtbF9uZWxlbWVudHMoYikAZ2dtbF9pc19zY2FsYXIoYikAZ2dtbF9jYW5fbXVsX21hdChhLCBiKQBnZ21sX2Nhbl9yZXBlYXQoYSwgYikAZ2dtbF9hcmVfc2FtZV9zaGFwZShhLCBiKQBnZ21sX2lzX2NvbnRpZ3VvdXMoYSkAIWdnbWxfaXNfdHJhbnNwb3NlZChhKQBnZ21sX2lzX3BhZGRlZF8xZChhKQBnZ21sX2Nhbl9yZXBlYXRfcm93cyhiLCBhKQBnZ21sX2lzX2NvbnRpZ3VvdXMoc3JjMSkAZ2dtbF9pc19zY2FsYXIoc3JjMSkAZ2dtbF9hcmVfc2FtZV9zaGFwZShzcmMwLCBkc3QpICYmIGdnbWxfYXJlX3NhbWVfc2hhcGUoc3JjMCwgc3JjMSkAZ2dtbF9pc19jb250aWd1b3VzKG9wdDApAGdnbWxfaXNfY29udGlndW91cyhkc3QpICYmIGdnbWxfaXNfY29udGlndW91cyhzcmMwKQBnZ21sX25lbGVtZW50cyhkc3QpID09IGdnbWxfbmVsZW1lbnRzKHNyYzApAG9mZnNldCArIChuZTEwID09IDAgPyAwIDogbmUxMC0xKSpuYjAwICsgKG5lMTEgPT0gMCA/IDAgOiBuZTExLTEpKm5iMDEgKyAobmUxMiA9PSAwID8gMCA6IG5lMTItMSkqbmIwMiArIChuZTEzID09IDAgPyAwIDogbmUxMy0xKSpuYjAzIDwgZ2dtbF9uYnl0ZXMoc3JjMCkAZ2dtbF9pc19jb250aWd1b3VzX2V4Y2VwdF9kaW1fMShzcmMwKQBnZ21sX2Nhbl9yZXBlYXQoZHN0LCBzcmMwKQApKSkAb3BlcmF0b3IoKQAoKCgAc3JjMS0+dHlwZSA9PSBHR01MX1RZUEVfRjMyICYmICJvbmx5IGYzMiBzcmMxIHN1cHBvcnRlZCBmb3Igbm93IgBQdXJlIHZpcnR1YWwgZnVuY3Rpb24gY2FsbGVkIQAgfCAAQVZYID0gAFZTWCA9IABCTEFTID0gAE9QRU5WSU5PID0gAE5FT04gPSAAQ09SRU1MID0gAFdBU01fU0lNRCA9IABGMTZDID0gAEZQMTZfVkEgPSAAQVJNX0ZNQSA9IABTU1NFMyA9IABBVlgyID0gAEFWWDUxMiA9IAAlczogdGVuc29yICclcycgaGFzIHdyb25nIHNpemUgaW4gbW9kZWwgZmlsZTogZ290ICV6dSwgZXhwZWN0ZWQgJXp1CgAlczogYWRkaW5nICVkIGV4dHJhIHRva2VucwoAJXM6ICAgICAgbWVsIHRpbWUgPSAlOC4yZiBtcwoAJXM6ICAgIHRvdGFsIHRpbWUgPSAlOC4yZiBtcwoAJXM6ICAgICBsb2FkIHRpbWUgPSAlOC4yZiBtcwoAc3lzdGVtX2luZm86IG5fdGhyZWFkcyA9ICVkIC8gJWQgfCAlcwoAV0hJU1BFUl9BU1NFUlQ6ICVzOiVkOiAlcwoAR0dNTF9BU1NFUlQ6ICVzOiVkOiAlcwoAWyVzIC0tPiAlc10gICVzCgAlczogb2Zmc2V0ICVkbXMgaXMgYmVmb3JlIHRoZSBzdGFydCBvZiB0aGUgYXVkaW8KAHVua25vd24gdG9rZW4KACVzOiBmYWlsZWQgdG8gY29tcHV0ZSBsb2cgbWVsIHNwZWN0cm9ncmFtCgAlczogbG9hZGluZyBtb2RlbAoAJXM6IGZhaWxlZCB0byBsb2FkIG1vZGVsCgAlczogICAgIGZhbGxiYWNrcyA9ICUzZCBwIC8gJTNkIGgKACVzOiBXQVJOIG5vIHRlbnNvcnMgbG9hZGVkIGZyb20gbW9kZWwgZmlsZSAtIGFzc3VtaW5nIGVtcHR5IG1vZGVsIGZvciB0ZXN0aW5nCgAlczogZW5jb2Rlcl9iZWdpbl9jYWxsYmFjayByZXR1cm5lZCBmYWxzZSAtIGFib3J0aW5nCgAlczogdGVuc29yICclcycgaGFzIHdyb25nIHNpemUgaW4gbW9kZWwgZmlsZQoAJXM6IHVua25vd24gdGVuc29yICclcycgaW4gbW9kZWwgZmlsZQoAJXM6IG5vIHNpZ25hbCBkYXRhIGF2YWlsYWJsZQoAJXM6IGZhaWxlZCB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIGt2IGNhY2hlCgAlczoga3ZfY2FjaGVfaW5pdCgpIGZhaWxlZCBmb3IgY3Jvc3MtYXR0ZW50aW9uIGNhY2hlCgAlczoga3ZfY2FjaGVfaW5pdCgpIGZhaWxlZCBmb3Igc2VsZi1hdHRlbnRpb24gY2FjaGUKACVzOiBmYWlsZWQgdG8gYXV0by1kZXRlY3QgbGFuZ3VhZ2UKACVzOiBnZ21sX2luaXQoKSBmYWlsZWQKACVzOiBFUlJPUiBub3QgYWxsIHRlbnNvcnMgbG9hZGVkIGZyb20gbW9kZWwgZmlsZSAtIGV4cGVjdGVkICV6dSwgZ290ICVkCgAlczoga3ZfY2FjaGVfcmVpbml0KCkgZmFpbGVkIGZvciBzZWxmLWF0dGVudGlvbiwgZGVjb2RlciAlZAoAJXM6IHVua25vd24gbGFuZ3VhZ2UgaWQgJWQKACVzOiBuX2F1ZGlvX2xheWVyID0gJWQKACVzOiBuX2F1ZGlvX3N0YXRlID0gJWQKACVzOiBuX3RleHRfbGF5ZXIgID0gJWQKACVzOiBuX3RleHRfc3RhdGUgID0gJWQKACVzOiBuX2F1ZGlv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AQmeGAAAAQAAAAEBCbAYAAABAAAAAgEJyBkAAAEAAAAEAcioARAQEBAQEBAQABAQEBAQEBAQABAQEBAQEAAAEBAQEBAQEBAAEBAQEBAAEAAQEBAQEBAAABAQEBAQAAAAEBAQEBAQEBAAEBAQEAAQEAAQEBAQEAAQABAQEBAAABAAEBAQEBAQAAAQEBAQABAAABAQEBAQAAAAEBAQEAAAAAAQEBAQEBAQEAAQEBAAEBAQABAQEBAAEBAAEBAQAAAQEAAQEBAQEAAQABAQEAAQABAAEBAQEAAAEAAQEBAAAAAQABAQEBAQEAAAEBAQABAQAAAQEBAQABAAABAQEAAAEAAAEBAQEBAAAAAQEBAAEAAAABAQEBAAAAAAEBAQAAAAAAAQEBAQEBAQEAAQEAAQEBAQABAQEAAQEBAAEBAAABAQEAAQEBAQABAQABAQABAAEBAAEBAQAAAQEAAQEAAAABAQABAQEBAQABAAEBAAEBAAEAAQEBAAEAAQABAQAAAQABAAEBAQEAAAEAAQEAAQAAAQABAQEAAAABAAEBAAAAAAEAAQEBAQEBAAABAQABAQEAAAEBAQABAQAAAQEAAAEBAAABAQEBAAEAAAEBAAEAAQAAAQEBAAABAAABAQAAAAEAAAEBAQEBAAAAAQEAAQEAAAABAQEAAQAAAAEBAAABAAAAAQEBAQAAAAABAQABAAAAAAEBAQAAAAAAAQEAAAAAAAABAQEBAQEBAQABAAEBAQEBAAEBAAEBAQEAAQAAAQEBAQABAQEAAQEBAAEAAQABAQEAAQEAAAEBAQABAAAAAQEBAAEBAQEAAQEAAQABAQABAQABAQABAAEBAAEAAAEAAQEAAQEBAAABAQABAAEAAAEBAAEBAAAAAQEAAQAAAAABAQABAQEBAQABAAEAAQEBAAEAAQEAAQEAAQABAAABAQABAAEBAQABAAEAAQABAAEAAQABAQAAAQABAAEAAAABAAEAAQEBAQAAAQABAAEBAAABAAEBAAEAAAEAAQAAAQAAAQABAQEAAAABAAEAAQAAAAEAAQEAAAAAAQABAAAAAAABAAEBAQEBAQAAAQABAQEBAAABAQABAQEAAAEAAAEBAQAAAQEBAAEBAAABAAEAAQEAAAEBAAABAQAAAQAAAAEBAAABAQEBAAEAAAEAAQEAAQAAAQEAAQABAAABAAABAAEAAAEBAQAAAQAAAQABAAABAAABAQAAAAEAAAEAAAAAAQAAAQEBAQEAAAABAAEBAQAAAAEBAAEBAAAAAQAAAQEAAAABAQEAAQAAAAEAAQABAAAAAQEAAAEAAAABAAAAAQAAAAEBAQEAAAAAAQABAQAAAAABAQABAAAAAAEAAAEAAAAAAQEBAAAAAAABAAEAAAAAAAEBAAAAAAAAAQAAAAAAAAABAQEBAQEBAQAAAQEBAQEBAAEAAQEBAQEAAAABAQEBAQABAQABAQEBAAABAAEBAQEAAQAAAQEBAQAAAAABAQEBAAEBAQABAQEAAAEBAAEBAQABAAEAAQEBAAAAAQABAQEAAQEAAAEBAQAAAQAAAQEBAAEAAAABAQEAAAAAAAEBAQABAQEBAAEBAAABAQEAAQEAAQABAQABAQAAAAEBAAEBAAEBAAEAAQEAAAEAAQABAQABAAABAAEBAAAAAAEAAQEAAQEBAAABAQAAAQEAAAEBAAEAAQAAAQEAAAABAAABAQABAQAAAAEBAAABAAAAAQEAAQAAAAABAQAAAAAAAAEBAAEBAQEBAAEAAAEBAQEAAQABAAEBAQABAAAAAQEBAAEAAQEAAQEAAQAAAQABAQABAAEAAAEBAAEAAAAAAQEAAQABAQEAAQABAAABAQABAAEAAQABAAEAAQAAAAEAAQABAAEBAAABAAEAAAEAAAEAAQABAAAAAQABAAAAAAABAAEAAQEBAQAAAQAAAQEBAAABAAEAAQEAAAEAAAABAQAAAQABAQABAAABAAABAAEAAAEAAQAAAQAAAQAAAAABAAABAAEBAQAAAAEAAAEBAAAAAQABAAEAAAABAAAAAQAAAAEAAQEAAAAAAQAAAQAAAAABAAEAAAAAAAEAAAAAAAAAAQABAQEBAQEAAAABAQEBAQAAAQABAQEBAAAAAAEBAQEAAAEBAAEBAQAAAAEAAQEBAAABAAABAQEAAAAAAAEBAQAAAQEBAAEBAAAAAQEAAQEAAAEAAQABAQAAAAABAAEBAAABAQAAAQEAAAABAAABAQAAAQAAAAEBAAAAAAAAAQEAAAEBAQEAAQAAAAEBAQABAAABAAEBAAEAAAAAAQEAAQAAAQEAAQABAAAAAQABAAEAAAEAAAEAAQAAAAAAAQABAAABAQEAAAEAAAABAQAAAQAAAQABAAABAAAAAAEAAAEAAAEBAAAAAQAAAAEAAAABAAABAAAAAAEAAAAAAAAAAQAAAQEBAQEAAAAAAQEBAQAAAAEAAQEBAAAAAAABAQEAAAABAQABAQAAAAABAAEBAAAAAQAAAQEAAAAAAAABAQAAAAEBAQABAAAAAAEBAAEAAAABAAEAAQAAAAAAAQABAAAAAQEAAAEAAAAAAQAAAQAAAAEAAAABAAAAAAAAAAEAAAABAQEBAAAAAAABAQEAAAAAAQABAQAAAAAAAAEBAAAAAAEBAAEAAAAAAAEAAQAAAAABAAABAAAAAAAAAAEAAAAAAQEBAAAAAAAAAQEAAAAAAAEAAQAAAAAAAAABAAAAAAABAQAAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAQAAAAAAAAEBAAAAAAAAAAABAAAAAAABAAEAAAAAAAABAQAAAAAAAQEBAAAAAAAAAAABAAAAAAEAAAEAAAAAAAEAAQAAAAABAQABAAAAAAAAAQEAAAAAAQABAQAAAAAAAQEBAAAAAAEBAQEAAAAAAAAAAAEAAAABAAAAAQAAAAABAAABAAAAAQEAAAEAAAAAAAEAAQAAAAEAAQABAAAAAAEBAAEAAAABAQEAAQAAAAAAAAEBAAAAAQAAAQEAAAAAAQABAQAAAAEBAAEBAAAAAAABAQEAAAABAAEBAQAAAAABAQEBAAAAAQEBAQEAAAAAAAAAAAEAAAEAAAAAAQAAAAEAAAABAAABAQAAAAEAAAAAAQAAAQAAAQABAAABAAAAAQEAAAEAAAEBAQAAAQAAAAAAAQABAAABAAABAAEAAAABAAEAAQAAAQEAAQABAAAAAAEBAAEAAAEAAQEAAQAAAAEBAQABAAABAQEBAAEAAAAAAAABAQAAAQAAAAEBAAAAAQAAAQEAAAEBAAABAQAAAAABAAEBAAABAAEAAQEAAAABAQABAQAAAQEBAAEBAAAAAAABAQEAAAEAAAEBAQAAAAEAAQEBAAABAQABAQEAAAAAAQEBAQAAAQABAQEBAAAAAQEBAQEAAAEBAQEBAQAAAAAAAAAAAQABAAAAAAABAAABAAAAAAEAAQEAAAAAAQAAAAEAAAABAAEAAQAAAAEAAAEBAAAAAQABAQEAAAABAAAAAAEAAAEAAQAAAQAAAQAAAQABAAABAAEBAAEAAAEAAAABAQAAAQABAAEBAAABAAABAQEAAAEAAQEBAQAAAQAAAAAAAQABAAEAAAABAAEAAAEAAAEAAQABAQAAAQABAAAAAQABAAEAAQABAAEAAQAAAQEAAQABAAEBAQABAAEAAAAAAQEAAQABAAABAQABAAABAAEBAAEAAQEAAQEAAQAAAAEBAQABAAEAAQEBAAEAAAEBAQEAAQABAQEBAQABAAAAAAAAAQEAAQAAAAABAQAAAQAAAAEBAAEBAAAAAQEAAAABAAABAQABAAEAAAEBAAABAQAAAQEAAQEBAAABAQAAAAABAAEBAAEAAAEAAQEAAAEAAQABAQABAQABAAEBAAAAAQEAAQEAAQABAQABAQAAAQEBAAEBAAEBAQEAAQEAAAAAAAEBAQABAAAAAQEBAAABAAABAQEAAQEAAAEBAQAAAAEAAQEBAAEAAQABAQEAAAEBAAEBAQABAQEAAQEBAAAAAAEBAQEAAQAAAQEBAQAAAQABAQEBAAEBAAEBAQEAAAABAQEBAQABAAEBAQEBAAABAQEBAQEAAQEBAQEBAQAAAAAAAAAAAQEAAAAAAAABAAEAAAAAAAEBAQAAAAAAAQAAAQAAAAABAQABAAAAAAEAAQEAAAAAAQEBAQAAAAABAAAAAQAAAAEBAAABAAAAAQABAAEAAAABAQEAAQAAAAEAAAEBAAAAAQEAAQEAAAABAAEBAQAAAAEBAQEBAAAAAQAAAAABAAABAQAAAAEAAAEAAQAAAQAAAQEBAAABAAABAAABAAEAAAEBAAEAAQAAAQABAQABAAABAQEBAAEAAAEAAAABAQAAAQEAAAEBAAABAAEAAQEAAAEBAQABAQAAAQAAAQEBAAABAQABAQEAAAEAAQEBAQAAAQEBAQEBAAABAAAAAAABAAEBAAAAAAEAAQABAAAAAQABAQEAAAABAAEAAAEAAAEAAQEAAQAAAQABAAEBAAABAAEBAQEAAAEAAQAAAAEAAQABAQAAAQABAAEAAQABAAEAAQEBAAEAAQABAAABAQABAAEBAAEBAAEAAQABAQEAAQABAQEBAQABAAEAAAAAAQEAAQEAAAABAQABAAEAAAEBAAEBAQAAAQEAAQAAAQABAQABAQABAAEBAAEAAQEAAQEAAQEBAQABAQABAAAAAQEBAAEBAAABAQEAAQABAAEBAQABAQEAAQEBAAEAAAEBAQEAAQEAAQEBAQABAAEBAQEBAAEBAQEBAQEAAQAAAAAAAAEBAQAAAAAAAQEAAQAAAAABAQEBAAAAAAEBAAABAAAAAQEBAAEAAAABAQABAQAAAAEBAQEBAAAAAQEAAAABAAABAQEAAAEAAAEBAAEAAQAAAQEBAQABAAABAQAAAQEAAAEBAQABAQAAAQEAAQEBAAABAQEBAQEAAAEBAAAAAAEAAQEBAAAAAQABAQABAAABAAEBAQEAAAEAAQEAAAEAAQABAQEAAQABAAEBAAEBAAEAAQEBAQEAAQABAQAAAAEBAAEBAQAAAQEAAQEAAQABAQABAQEBAAEBAAEBAAABAQEAAQEBAAEBAQABAQABAQEBAAEBAQEBAQEAAQEAAAAAAAEBAQEAAAAAAQEBAAEAAAABAQEBAQAAAAEBAQAAAQAAAQEBAQABAAABAQEAAQEAAAEBAQEBAQAAAQEBAAAAAQABAQEBAAABAAEBAQABAAEAAQEBAQEAAQABAQEAAAEBAAEBAQEAAQEAAQEBAAEBAQABAQEBAQEBAAEBAQAAAAABAQEBAQAAAAEBAQEAAQAAAQEBAQEBAAABAQEBAAABAAEBAQEBAAEAAQEBAQABAQABAQEBAQEBAAEBAQEAAAABAQEBAQEAAAEBAQEBAAEAAQEBAQEBAQABAQEBAQAAAQEBAQEBAQABAQEBAQEAAQEBAQEBAQEBAQEBAQEBABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAABAAAAAgAAAAMAAAAAAAAAAAAAAAAAAAAIAAAABgAAAAcAAAAKAAAACwAAAAwAAAANAAAADgAAAAAAAAABAAAAAQAAAAEAAAABAAAAAAAAAAAAAACASAAAOAAAADkAAAA6AAAAOwAAAE5TdDNfXzIxMV9fZW5kX3N0YXRlSWNFRQBOU3QzX18yNl9fbm9kZUljRUUA0MsAAGVIAAD4ywAATEgAAHhIAAAAAAAAMEkAADwAAAA9AAAAPgAAAD8AAABAAAAATlN0M19fMjIwX19zaGFyZWRfcHRyX3BvaW50ZXJJUE5TXzEzX19lbXB0eV9zdGF0ZUljRUVOU18xMHNoYXJlZF9wdHJJUzJfRTI3X19zaGFyZWRfcHRyX2RlZmF1bHRfZGVsZXRlSVMyX1MyX0VFTlNfOWFsbG9jYXRvcklTMl9FRUVFAAAAAPjLAACoSAAAeMIAAE5TdDNfXzIxMHNoYXJlZF9wdHJJTlNfMTNfX2VtcHR5X3N0YXRlSWNFRUUyN19fc2hhcmVkX3B0cl9kZWZhdWx0X2RlbGV0ZUlTMl9TMl9FRQAAAAAAAAAYSgAAQQAAAEIAAABDAAAAOwAAAE5TdDNfXzIxM19fZW1wdHlfc3RhdGVJY0VFAE5TdDNfXzIxNl9fb3duc19vbmVfc3RhdGVJY0VFAE5TdDNfXzIxNV9faGFzX29uZV9zdGF0ZUljRUUAAAD4ywAA4UkAAHhIAAD4ywAAw0kAAABKAAD4ywAAqEkAAAxKAAAAAAAADEoAAEEAAABEAAAARQAAADsAAAAAAAAAeEoAAEEAAABGAAAARwAAADsAAABOU3QzX18yMjBfX2xfYW5jaG9yX211bHRpbGluZUljRUUAAAD4ywAAVEoAAAxKAAAAAAAAwEoAAEEAAABIAAAASQAAADsAAABOU3QzX18yMjBfX3JfYW5jaG9yX211bHRpbGluZUljRUUAAAD4ywAAnEoAAAxKAAAAAAAAGEsAAEoAAABLAAAATAAAADsAAABOU3QzX18yMTVfX3dvcmRfYm91bmRhcnlJY05TXzEycmVnZXhfdHJhaXRzSWNFRUVFAAAA+MsAAORKAAAMSgAAAAAAAGxLAABNAAAATgAAAE8AAAA7AAAATlN0M19fMjExX19sb29rYWhlYWRJY05TXzEycmVnZXhfdHJhaXRzSWNFRUVFAAAA+MsAADxLAAAMSgAAAAAAALhLAABBAAAAUAAAAFEAAAA7AAAATlN0M19fMjIzX19tYXRjaF9hbnlfYnV0X25ld2xpbmVJY0VFAAAAAPjLAACQSwAADEoAAAAAAAAUTAAAUgAAAFMAAABUAAAAOwAAAE5TdDNfXzIxOF9fbWF0Y2hfY2hhcl9pY2FzZUljTlNfMTJyZWdleF90cmFpdHNJY0VFRUUAAAAA+MsAANxLAAAMSgAAAAAAAHBMAABVAAAAVgAAAFcAAAA7AAAATlN0M19fMjIwX19tYXRjaF9jaGFyX2NvbGxhdGVJY05TXzEycmVnZXhfdHJhaXRzSWNFRUVFAAD4ywAAOEwAAAxKAAAAAAAAsEwAAEEAAABYAAAAWQAAADsAAABOU3QzX18yMTJfX21hdGNoX2NoYXJJY0VFAAAA+MsAAJRMAAAMSgAAAAAAAAhNAABaAAAAWwAAAFwAAAA7AAAATlN0M19fMjE2X19iYWNrX3JlZl9pY2FzZUljTlNfMTJyZWdleF90cmFpdHNJY0VFRUUAAPjLAADUTAAADEoAAAAAAABkTQAAXQAAAF4AAABfAAAAOwAAAE5TdDNfXzIxOF9fYmFja19yZWZfY29sbGF0ZUljTlNfMTJyZWdleF90cmFpdHNJY0VFRUUAAAAA+MsAACxNAAAMSgAAAAAAAKBNAABBAAAAYAAAAGEAAAA7AAAATlN0M19fMjEwX19iYWNrX3JlZkljRUUA+MsAAIhNAAAMSgAAAAAAAPxNAABiAAAAYwAAAGQAAAA7AAAATlN0M19fMjIwX19icmFja2V0X2V4cHJlc3Npb25JY05TXzEycmVnZXhfdHJhaXRzSWNFRUVFAAD4ywAAxE0AAAxKAAAAAAAATE4AAEEAAABlAAAAZgAAADsAAABOU3QzX18yMjhfX2JlZ2luX21hcmtlZF9zdWJleHByZXNzaW9uSWNFRQAAAPjLAAAgTgAADEoAAAAAAACYTgAAQQAAAGcAAABoAAAAOwAAAE5TdDNfXzIyNl9fZW5kX21hcmtlZF9zdWJleHByZXNzaW9uSWNFRQD4ywAAcE4AAAxKAAAAAAAA/E4AAGkAAABqAAAAawAAAGwAAABOU3QzX18yNl9fbG9vcEljRUUATlN0M19fMjE3X19vd25zX3R3b19zdGF0ZXNJY0VFAAAA+MsAAM9OAAAMSgAA+MsAALxOAADwTgAAAAAAAPBOAABpAAAAbQAAAEUAAAA7AAAAAAAAAFhPAAA4AAAAbgAAAG8AAAA7AAAATlN0M19fMjE3X19yZXBlYXRfb25lX2xvb3BJY0VFAAD4ywAAOE8AAABKAAAAAAAAmE8AAGkAAABwAAAAcQAAAHIAAABOU3QzX18yMTFfX2FsdGVybmF0ZUljRUUAAAAA+MsAAHxPAADwTgAAAAAAAOBPAAA4AAAAcwAAAHQAAAA7AAAATlN0M19fMjIxX19lbXB0eV9ub25fb3duX3N0YXRlSWNFRQAA+MsAALxPAAAASgAAAAAAACBQAABBAAAAdQAAAHYAAAA7AAAATlN0M19fMjExX19tYXRjaF9hbnlJY0VFAAAAAPjLAAAEUAAADEoAAE5TdDNfXzIxMmJhc2ljX3N0cmluZ0loTlNfMTFjaGFyX3RyYWl0c0loRUVOU185YWxsb2NhdG9ySWhFRUVFAADQywAALFAAAE5TdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUVFAADQywAAdFAAAE5TdDNfXzIxMmJhc2ljX3N0cmluZ0lEc05TXzExY2hhcl90cmFpdHNJRHNFRU5TXzlhbGxvY2F0b3JJRHNFRUVFAAAA0MsAALxQAABOU3QzX18yMTJiYXNpY19zdHJpbmdJRGlOU18xMWNoYXJfdHJhaXRzSURpRUVOU185YWxsb2NhdG9ySURpRUVFRQAAANDLAAAIUQAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJY0VFAADQywAAVFEAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWFFRQAA0MsAAHxRAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0loRUUAANDLAACkUQAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJc0VFAADQywAAzFEAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SXRFRQAA0MsAAPRRAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lpRUUAANDLAAAcUgAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJakVFAADQywAARFIAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWxFRQAA0MsAAGxSAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0ltRUUAANDLAACUUgAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJeEVFAADQywAAvFIAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SXlFRQAA0MsAAORSAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lmRUUAANDLAAAMUwAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJZEVFAADQywAANFMAAAAAAAADAAAABAAAAAQAAAAGAAAAg/miAERObgD8KRUA0VcnAN009QBi28AAPJmVAEGQQwBjUf4Au96rALdhxQA6biQA0k1CAEkG4AAJ6i4AHJLRAOsd/gApsRwA6D6n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lP///5T////MlwAArQAAAK4AAABIlwAAgJcAAJSXAABclwAAbAAAAAAAAAAklwAAnQAAAJ4AAACU////lP///ySXAACfAAAAoAAAAE5TdDNfXzIxNGJhc2ljX2lmc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFAPjLAACclwAAJJcAAE5TdDNfXzIxM2Jhc2ljX2ZpbGVidWZJY05TXzExY2hhcl90cmFpdHNJY0VFRUUAAPjLAADYlwAA7JYAAAAAAAA4mAAArwAAALAAAABOU3QzX18yOGlvc19iYXNlRQAAANDLAAAkmAAA0XSeAFedvSqAcFIP//8+JwoAAABkAAAA6AMAABAnAACghgEAQEIPAICWmAAA4fUFGAAAADUAAABxAAAAa////877//+Sv///AAAAAAAAAAD/////////////////////////////////////////////////////////////////AAECAwQFBgcICf////////8KCwwNDg8QERITFBUWFxgZGhscHR4fICEiI////////woLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIj/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wABAgQHAwYFAAAAAAAAAAIAAMADAADABAAAwAUAAMAGAADABwAAwAgAAMAJAADACgAAwAsAAMAMAADADQAAwA4AAMAPAADAEAAAwBEAAMASAADAEwAAwBQAAMAVAADAFgAAwBcAAMAYAADAGQAAwBoAAMAbAADAHAAAwB0AAMAeAADAHwAAwAAAALMBAADDAgAAwwMAAMMEAADDBQAAwwYAAMMHAADDCAAAwwkAAMMKAADDCwAAwwwAAMMNAADTDgAAww8AAMMAAAy7AQAMwwIADMMDAAzDBAAM2wAAAADeEgSVAAAAAP///////////////3CaAAAUAAAAQy5VVEYtOAEChJoBSkxDX0NUWVBFAAAAAExDX05VTUVSSUMAAExDX1RJTUUAAAAAAExDX0NPTExBVEUAAExDX01PTkVUQVJZ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AACWAQAATlN0M19fMjEwbW9uZXlwdW5jdEl3TGIwRUVFAFTMAABUugAAAAAAAAIAAAAkrgAAAgAAAIC5AAACAAAAAAAAAOS6AADoAAAAlwEAAMYAAACYAQAAmQEAAJoBAACbAQAAnAEAAJ0BAACeAQAAnwEAAKABAABOU3QzX18yMTBtb25leXB1bmN0SXdMYjFFRUUAVMwAAMi6AAAAAAAAAgAAACSuAAACAAAAgLkAAAIAAAAAAAAAiLsAAOgAAAChAQAAxgAAAKIBAACjAQAATlN0M19fMjltb25leV9nZXRJY05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVFAE5TdDNfXzIxMV9fbW9uZXlfZ2V0SWNFRQAA0MsAAGa7AABUzAAAILsAAAAAAAACAAAAJK4AAAIAAACAuwAAAAAAAAAAAAAsvAAA6AAAAKQBAADGAAAApQEAAKYBAABOU3QzX18yOW1vbmV5X2dldEl3TlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUUATlN0M19fMjExX19tb25leV9nZXRJd0VFAADQywAACrwAAFTMAADEuwAAAAAAAAIAAAAkrgAAAgAAACS8AAAAAAAAAAAAANC8AADoAAAApwEAAMYAAACoAQAAqQEAAE5TdDNfXzI5bW9uZXlfcHV0SWNOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRQBOU3QzX18yMTFfX21vbmV5X3B1dEljRUUAANDLAACuvAAAVMwAAGi8AAAAAAAAAgAAACSuAAACAAAAyLwAAAAAAAAAAAAAdL0AAOgAAACqAQAAxgAAAKsBAACsAQAATlN0M19fMjltb25leV9wdXRJd05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUVFAE5TdDNfXzIxMV9fbW9uZXlfcHV0SXdFRQAA0MsAAFK9AABUzAAADL0AAAAAAAACAAAAJK4AAAIAAABsvQAAAAAAAAAAAADsvQAA6AAAAK0BAADGAAAArgEAAK8BAACwAQAATlN0M19fMjhtZXNzYWdlc0ljRUUATlN0M19fMjEz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6AMCAAAA//////8AAAAB/wH//////////////wAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAB/wH//////wABIAAEAIAAAAj//wH/Af////////8B/wb/B/8I/wn//////7wCvAIBAP//AQABAP//AAD//////////wAAAAAAAAAAAAAAAAAAAAAUAXj//wEACv///////////wH/Af8AAAAAAAAB/wH/Af8AAAAAAAAAAAAAAAAAAAAAAAAB/wAAAAAAAAH/Af8BAAAAAQAAAAH//////wAAAAAB////AAAAAP////////////8oAAr//////wEACv////8A//////////8BvggB/wH///8BAP//////////////////Cv//////DP8N/04xMF9fY3h4YWJpdjExNl9fc2hpbV90eXBlX2luZm9FAAD4ywAABsoAABzOAABOMTBfX2N4eGFiaXYxMTdfX2NsYXNzX3R5cGVfaW5mb0UAAAD4ywAANMoAACjKAABOMTBfX2N4eGFiaXYxMTdfX3BiYXNlX3R5cGVfaW5mb0UAAAD4ywAAZMoAACjKAABOMTBfX2N4eGFiaXYxMTlfX3BvaW50ZXJfdHlwZV9pbmZvRQD4ywAAlMoAAIjKAAAAAAAACMsAALsBAAC8AQAAvQEAAL4BAAC/AQAATjEwX19jeHhhYml2MTIzX19mdW5kYW1lbnRhbF90eXBlX2luZm9FAPjLAADgygAAKMoAAHYAAADMygAAFMsAAGIAAADMygAAIMsAAGMAAADMygAALMsAAGgAAADMygAAOMsAAGEAAADMygAARMsAAHMAAADMygAAUMsAAHQAAADMygAAXMsAAGkAAADMygAAaMsAAGoAAADMygAAdMsAAGwAAADMygAAgMsAAG0AAADMygAAjMsAAHgAAADMygAAmMsAAHkAAADMygAApMsAAGYAAADMygAAsMsAAGQAAADMygAAvMsAAAAAAABYygAAuwEAAMABAAC9AQAAvgEAAMEBAADCAQAAwwEAAMQBAAAAAAAAQMwAALsBAADFAQAAvQEAAL4BAADBAQAAxgEAAMcBAADIAQAATjEwX19jeHhhYml2MTIwX19zaV9jbGFzc190eXBlX2luZm9FAAAAAPjLAAAYzAAAWMoAAAAAAACczAAAuwEAAMkBAAC9AQAAvgEAAMEBAADKAQAAywEAAMwBAABOMTBfX2N4eGFiaXYxMjFfX3ZtaV9jbGFzc190eXBlX2luZm9FAAAA+MsAAHTMAABYygAAAAAAAAzNAAAIAAAAzQEAAM4BAAAAAAAANM0AAAgAAADPAQAA0AEAAAAAAAD0zAAACAAAANEBAADSAQAAU3Q5ZXhjZXB0aW9uAAAAANDLAADkzAAAU3Q5YmFkX2FsbG9jAAAAAPjLAAD8zAAA9MwAAFN0MjBiYWRfYXJyYXlfbmV3X2xlbmd0aAAAAAD4ywAAGM0AAAzNAAAAAAAAeM0AAAcAAADTAQAA1AEAAAAAAAAAzgAA1QEAANYBAAC4AQAAU3QxMWxvZ2ljX2Vycm9yAPjLAABozQAA9MwAAAAAAACszQAABwAAANcBAADUAQAAU3QxMmxlbmd0aF9lcnJvcgAAAAD4ywAAmM0AAHjNAAAAAAAA4M0AAAcAAADYAQAA1AEAAFN0MTJvdXRfb2ZfcmFuZ2UAAAAA+MsAAMzNAAB4zQAAU3QxM3J1bnRpbWVfZXJyb3IAAAD4ywAA7M0AAPTMAABTdDl0eXBlX2luZm8AAAAA0MsAAAzOAAABATcBZCzOAAAszgAAAAABAAACAAAFAAAAAAAAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAeAAAABAwDQAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAA//////////8BWXDOAAAAAAAABQAAAAAAAAAAAAAAiQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAIoAAAAYMA0AAAQAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAP////8KAQwIzwAA8D4OALoBAAA=";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}var binary=tryParseAsDataURI(file);if(binary){return binary}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}function getBinaryPromise(binaryFile){return Promise.resolve().then(()=>getBinarySync(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>WebAssembly.instantiate(binary,imports)).then(instance=>instance).then(receiver,reason=>{err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){return instantiateArrayBuffer(binaryFile,imports,callback)}function createWasm(){var info={"a":wasmImports};function receiveInstance(instance,module){var exports=instance.exports;wasmExports=exports;registerTLSInit(wasmExports["_"]);wasmTable=wasmExports["X"];addOnInit(wasmExports["W"]);wasmModule=module;removeRunDependency("wasm-instantiate");return exports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"],result["module"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);readyPromiseReject(e)}}instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult).catch(readyPromiseReject);return{}}var tempDouble;var tempI64;function ExitStatus(status){this.name="ExitStatus";this.message=`Program terminated with exit(${status})`;this.status=status}var terminateWorker=worker=>{worker.terminate();worker.onmessage=e=>{}};var killThread=pthread_ptr=>{var worker=PThread.pthreads[pthread_ptr];delete PThread.pthreads[pthread_ptr];terminateWorker(worker);__emscripten_thread_free_data(pthread_ptr);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);worker.pthread_ptr=0};var cancelThread=pthread_ptr=>{var worker=PThread.pthreads[pthread_ptr];worker.postMessage({"cmd":"cancel"})};var cleanupThread=pthread_ptr=>{var worker=PThread.pthreads[pthread_ptr];assert(worker);PThread.returnWorkerToPool(worker)};var spawnThread=threadParams=>{var worker=PThread.getNewWorker();if(!worker){return 6}PThread.runningWorkers.push(worker);PThread.pthreads[threadParams.pthread_ptr]=worker;worker.pthread_ptr=threadParams.pthread_ptr;var msg={"cmd":"run","start_routine":threadParams.startRoutine,"arg":threadParams.arg,"pthread_ptr":threadParams.pthread_ptr};if(ENVIRONMENT_IS_NODE){worker.unref()}worker.postMessage(msg,threadParams.transferList);return 0};var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:function(){var paths=Array.prototype.slice.call(arguments);return PATH.normalize(paths.join("/"))},join2:(l,r)=>PATH.normalize(l+"/"+r)};var initRandomFill=()=>{if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){return view=>(view.set(crypto.getRandomValues(new Uint8Array(view.byteLength))),view)}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");var randomFillSync=crypto_module["randomFillSync"];if(randomFillSync){return view=>crypto_module["randomFillSync"](view)}var randomBytes=crypto_module["randomBytes"];return view=>(view.set(randomBytes(view.byteLength)),view)}catch(e){}}abort("initRandomDevice")};var randomFill=view=>(randomFill=initRandomFill())(view);var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start<arr.length;start++){if(arr[start]!=="")break}var end=arr.length-1;for(;end>=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i<length;i++){if(fromParts[i]!==toParts[i]){samePartsLength=i;break}}var outputParts=[];for(var i=samePartsLength;i<fromParts.length;i++){outputParts.push("..")}outputParts=outputParts.concat(toParts.slice(samePartsLength));return outputParts.join("/")}};var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;var UTF8ArrayToString=(heapOrArray,idx,maxBytesToRead)=>{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.buffer instanceof SharedArrayBuffer?heapOrArray.slice(idx,endPtr):heapOrArray.subarray(idx,endPtr))}var str="";while(idx<endPtr){var u0=heapOrArray[idx++];if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heapOrArray[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heapOrArray[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heapOrArray[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str};var FS_stdin_getChar_buffer=[];var lengthBytesUTF8=str=>{var len=0;for(var i=0;i<str.length;++i){var c=str.charCodeAt(i);if(c<=127){len++}else if(c<=2047){len+=2}else if(c>=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx};function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc(BUFSIZE);var bytesRead=0;var fd=process.stdin.fd;try{bytesRead=fs.readSync(fd,buf)}catch(e){if(e.toString().includes("EOF"))bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}FS_stdin_getChar_buffer=intArrayFromString(result,true)}return FS_stdin_getChar_buffer.shift()};var TTY={ttys:[],init(){},shutdown(){},register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close(stream){stream.tty.ops.fsync(stream.tty)},fsync(stream){stream.tty.ops.fsync(stream.tty)},read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=stream.tty.ops.get_char(stream.tty)}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.put_char){throw new FS.ErrnoError(60)}try{for(var i=0;i<length;i++){stream.tty.ops.put_char(stream.tty,buffer[offset+i])}}catch(e){throw new FS.ErrnoError(29)}if(length){stream.node.timestamp=Date.now()}return i}},default_tty_ops:{get_char(tty){return FS_stdin_getChar()},put_char(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}},ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(tty,optional_actions,data){return 0},ioctl_tiocgwinsz(tty){return[24,80]}},default_tty1_ops:{put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};var mmapAlloc=size=>{abort()};var MEMFS={ops_table:null,mount(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity<CAPACITY_DOUBLING_MAX?2:1.125)>>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup(parent,name){throw FS.genericErrors[44]},mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i<size;i++)buffer[offset+i]=contents[position+i]}return size},write(stream,buffer,offset,length,position,canOwn){if(buffer.buffer===GROWABLE_HEAP_I8().buffer){canOwn=false}if(!length)return 0;var node=stream.node;node.timestamp=Date.now();if(buffer.subarray&&(!node.contents||node.contents.subarray)){if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length;return length}else if(node.usedBytes===0&&position===0){node.contents=buffer.slice(offset,offset+length);node.usedBytes=length;return length}else if(position+length<=node.usedBytes){node.contents.set(buffer.subarray(offset,offset+length),position);return length}}MEMFS.expandFileStorage(node,position+length);if(node.contents.subarray&&buffer.subarray){node.contents.set(buffer.subarray(offset,offset+length),position)}else{for(var i=0;i<length;i++){node.contents[position+i]=buffer[offset+i]}}node.usedBytes=Math.max(node.usedBytes,position+length);return length},llseek(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.usedBytes}}if(position<0){throw new FS.ErrnoError(28)}return position},allocate(stream,offset,length){MEMFS.expandFileStorage(stream.node,offset+length);stream.node.usedBytes=Math.max(stream.node.usedBytes,offset+length)},mmap(stream,length,position,prot,flags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}var ptr;var allocated;var contents=stream.node.contents;if(!(flags&2)&&contents.buffer===GROWABLE_HEAP_I8().buffer){allocated=false;ptr=contents.byteOffset}else{if(position>0||position+length<contents.length){if(contents.subarray){contents=contents.subarray(position,position+length)}else{contents=Array.prototype.slice.call(contents,position,position+length)}}allocated=true;ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}GROWABLE_HEAP_I8().set(contents,ptr)}return{ptr:ptr,allocated:allocated}},msync(stream,buffer,offset,length,mmapFlags){MEMFS.stream_ops.write(stream,buffer,0,length,offset,false);return 0}}};var asyncLoad=(url,onload,onerror,noRunDep)=>{var dep=!noRunDep?getUniqueRunDependency(`al ${url}`):"";readAsync(url,arrayBuffer=>{assert(arrayBuffer,`Loading data file "${url}" failed (no arrayBuffer).`);onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},event=>{if(onerror){onerror()}else{throw`Loading data file "${url}" failed.`}});if(dep)addRunDependency(dep)};var preloadPlugins=Module["preloadPlugins"]||[];var FS_handledByPreloadPlugin=(byteArray,fullname,finish,onerror)=>{if(typeof Browser!="undefined")Browser.init();var handled=false;preloadPlugins.forEach(plugin=>{if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,onerror);handled=true}});return handled};var FS_createPreloadedFile=(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}if(FS_handledByPreloadPlugin(byteArray,fullname,finish,()=>{if(onerror)onerror();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,byteArray=>processData(byteArray),onerror)}else{processData(url)}};var FS_modeStringToFlags=str=>{var flagModes={"r":0,"r+":2,"w":512|64|1,"w+":512|64|2,"a":1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags};var FS_getMode=(canRead,canWrite)=>{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath(path,opts={}){path=PATH_FS.resolve(path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i<parts.length;i++){var islast=i===parts.length-1;if(islast&&opts.parent){break}current=FS.lookupNode(current,parts[i]);current_path=PATH.join2(current_path,parts[i]);if(FS.isMountpoint(current)){if(!islast||islast&&opts.follow_mount){current=current.mounted.root}}if(!islast||opts.follow){var count=0;while(FS.isLink(current.mode)){var link=FS.readlink(current_path);current_path=PATH_FS.resolve(PATH.dirname(current_path),link);var lookup=FS.lookupPath(current_path,{recurse_count:opts.recurse_count+1});current=lookup.node;if(count++>40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?`${mount}/${path}`:mount+path}path=path?`${node.name}/${path}`:node.name;node=node.parent}},hashName(parentid,name){var hash=0;for(var i=0;i<name.length;i++){hash=(hash<<5)-hash+name.charCodeAt(i)|0}return(parentid+hash>>>0)%FS.nameTable.length},hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode(node){FS.hashRemoveNode(node)},isRoot(node){return node===node.parent},isMountpoint(node){return!!node.mounted},isFile(mode){return(mode&61440)===32768},isDir(mode){return(mode&61440)===16384},isLink(mode){return(mode&61440)===40960},isChrdev(mode){return(mode&61440)===8192},isBlkdev(mode){return(mode&61440)===24576},isFIFO(mode){return(mode&61440)===4096},isSocket(mode){return(mode&49152)===49152},flagsToPermissionString(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions(node,perms){if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup(dir){var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}return stream},getStream:fd=>FS.streams[fd],createStream(stream,fd=-1){if(!FS.FSStream){FS.FSStream=function(){this.shared={}};FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get(){return this.node},set(val){this.node=val}},isRead:{get(){return(this.flags&2097155)!==1}},isWrite:{get(){return(this.flags&2097155)!==0}},isAppend:{get(){return this.flags&1024}},flags:{get(){return this.shared.flags},set(val){this.shared.flags=val}},position:{get(){return this.shared.position},set(val){this.shared.position=val}}})}stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream(fd){FS.streams[fd]=null},chrdev_stream_ops:{open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek(){throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs(populate,callback){if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup(parent,name){return parent.node_ops.lookup(parent,name)},mknod(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree(path,mode){var dirs=path.split("/");var d="";for(var i=0;i<dirs.length;++i){if(!dirs[i])continue;d+="/"+dirs[i];try{FS.mkdir(d,mode)}catch(e){if(e.errno!=20)throw e}}},mkdev(path,mode,dev){if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink(oldpath,newpath){if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat(path){return FS.stat(path,true)},chmod(path,mode,dontFollow){var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod(path,mode){FS.chmod(path,mode,true)},fchmod(fd,mode){var stream=FS.getStreamChecked(fd);FS.chmod(stream.node,mode)},chown(path,uid,gid,dontFollow){var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown(path,uid,gid){FS.chown(path,uid,gid,true)},fchown(fd,uid,gid){var stream=FS.getStreamChecked(fd);FS.chown(stream.node,uid,gid)},truncate(path,len){if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate(fd,len){var stream=FS.getStreamChecked(fd);if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open(path,flags,mode){if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS_modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close(stream){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed(stream){return stream.fd===null},llseek(stream,offset,whence){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate(stream,offset,length){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap(stream,length,position,prot,flags){if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync(stream,buffer,offset,length,mmapFlags){if(!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile(path,opts={}){opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error(`Invalid encoding type "${opts.encoding}"`)}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile(path,data,opts={}){opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data=="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:()=>FS.currentPath,chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomLeft=randomFill(randomBuffer).byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount(){var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup(parent,name){var fd=+name;var stream=FS.getStreamChecked(fd);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError(){if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.name="ErrnoError";this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack="<generic error, no stack>"})},staticInit(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init(input,output,error){FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit(){FS.init.initialized=false;for(var i=0;i<FS.streams.length;i++){var stream=FS.streams[i];if(!stream){continue}FS.close(stream)}},findObject(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(!ret.exists){return null}return ret.object},analyzePath(path,dontResolveLastLink){try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath(parent,path,canRead,canWrite){parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile(parent,name,data,canRead,canWrite,canOwn){var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS_getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i<len;++i)arr[i]=data.charCodeAt(i);data=arr}FS.chmod(node,mode|146);var stream=FS.open(node,577);FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode)}return node},createDevice(parent,name,input,output){var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open(stream){stream.seekable=false},close(stream){if(output&&output.buffer&&output.buffer.length){output(10)}},read(stream,buffer,offset,length,pos){var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=input()}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write(stream,buffer,offset,length,pos){for(var i=0;i<length;i++){try{output(buffer[offset+i])}catch(e){throw new FS.ErrnoError(29)}}if(length){stream.node.timestamp=Date.now()}return i}});return FS.mkdev(path,mode,dev)},forceLoadFile(obj){if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile(parent,name,url,canRead,canWrite){function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i<size;i++){buffer[offset+i]=contents[position+i]}}else{for(var i=0;i<size;i++){buffer[offset+i]=contents.get(position+i)}}return size}stream_ops.read=(stream,buffer,offset,length,position)=>{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,GROWABLE_HEAP_I8(),ptr,length,position);return{ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):"";var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}GROWABLE_HEAP_I32()[buf>>2]=stat.dev;GROWABLE_HEAP_I32()[buf+4>>2]=stat.mode;GROWABLE_HEAP_U32()[buf+8>>2]=stat.nlink;GROWABLE_HEAP_I32()[buf+12>>2]=stat.uid;GROWABLE_HEAP_I32()[buf+16>>2]=stat.gid;GROWABLE_HEAP_I32()[buf+20>>2]=stat.rdev;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],GROWABLE_HEAP_I32()[buf+24>>2]=tempI64[0],GROWABLE_HEAP_I32()[buf+28>>2]=tempI64[1];GROWABLE_HEAP_I32()[buf+32>>2]=4096;GROWABLE_HEAP_I32()[buf+36>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();tempI64=[Math.floor(atime/1e3)>>>0,(tempDouble=Math.floor(atime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],GROWABLE_HEAP_I32()[buf+40>>2]=tempI64[0],GROWABLE_HEAP_I32()[buf+44>>2]=tempI64[1];GROWABLE_HEAP_U32()[buf+48>>2]=atime%1e3*1e3;tempI64=[Math.floor(mtime/1e3)>>>0,(tempDouble=Math.floor(mtime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],GROWABLE_HEAP_I32()[buf+56>>2]=tempI64[0],GROWABLE_HEAP_I32()[buf+60>>2]=tempI64[1];GROWABLE_HEAP_U32()[buf+64>>2]=mtime%1e3*1e3;tempI64=[Math.floor(ctime/1e3)>>>0,(tempDouble=Math.floor(ctime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],GROWABLE_HEAP_I32()[buf+72>>2]=tempI64[0],GROWABLE_HEAP_I32()[buf+76>>2]=tempI64[1];GROWABLE_HEAP_U32()[buf+80>>2]=ctime%1e3*1e3;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],GROWABLE_HEAP_I32()[buf+88>>2]=tempI64[0],GROWABLE_HEAP_I32()[buf+92>>2]=tempI64[1];return 0},doMsync(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=GROWABLE_HEAP_U8().slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},varargs:undefined,get(){var ret=GROWABLE_HEAP_I32()[SYSCALLS.varargs>>2];SYSCALLS.varargs+=4;return ret},getp(){return SYSCALLS.get()},getStr(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream}};function _proc_exit(code){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(0,1,code);EXITSTATUS=code;if(!keepRuntimeAlive()){PThread.terminateAllThreads();if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}var exitJS=(status,implicit)=>{EXITSTATUS=status;if(ENVIRONMENT_IS_PTHREAD){exitOnMainThread(status);throw"unwind"}_proc_exit(status)};var _exit=exitJS;var handleException=e=>{if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)};var PThread={unusedWorkers:[],runningWorkers:[],tlsInitFunctions:[],pthreads:{},init(){if(ENVIRONMENT_IS_PTHREAD){PThread.initWorker()}else{PThread.initMainThread()}},initMainThread(){var pthreadPoolSize=8;while(pthreadPoolSize--){PThread.allocateUnusedWorker()}addOnPreRun(()=>{addRunDependency("loading-workers");PThread.loadWasmModuleToAllWorkers(()=>removeRunDependency("loading-workers"))})},initWorker(){noExitRuntime=false},setExitStatus:status=>{EXITSTATUS=status},terminateAllThreads__deps:["$terminateWorker"],terminateAllThreads:()=>{for(var worker of PThread.runningWorkers){terminateWorker(worker)}for(var worker of PThread.unusedWorkers){terminateWorker(worker)}PThread.unusedWorkers=[];PThread.runningWorkers=[];PThread.pthreads=[]},returnWorkerToPool:worker=>{var pthread_ptr=worker.pthread_ptr;delete PThread.pthreads[pthread_ptr];PThread.unusedWorkers.push(worker);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);worker.pthread_ptr=0;__emscripten_thread_free_data(pthread_ptr)},receiveObjectTransfer(data){},threadInitTLS(){PThread.tlsInitFunctions.forEach(f=>f())},loadWasmModuleToWorker:worker=>new Promise(onFinishedLoading=>{worker.onmessage=e=>{var d=e["data"];var cmd=d["cmd"];if(d["targetThread"]&&d["targetThread"]!=_pthread_self()){var targetWorker=PThread.pthreads[d["targetThread"]];if(targetWorker){targetWorker.postMessage(d,d["transferList"])}else{err(`Internal error! Worker sent a message "${cmd}" to target pthread ${d["targetThread"]}, but that thread no longer exists!`)}return}if(cmd==="checkMailbox"){checkMailbox()}else if(cmd==="spawnThread"){spawnThread(d)}else if(cmd==="cleanupThread"){cleanupThread(d["thread"])}else if(cmd==="killThread"){killThread(d["thread"])}else if(cmd==="cancelThread"){cancelThread(d["thread"])}else if(cmd==="loaded"){worker.loaded=true;if(ENVIRONMENT_IS_NODE&&!worker.pthread_ptr){worker.unref()}onFinishedLoading(worker)}else if(cmd==="alert"){alert(`Thread ${d["threadId"]}: ${d["text"]}`)}else if(d.target==="setimmediate"){worker.postMessage(d)}else if(cmd==="callHandler"){Module[d["handler"]](...d["args"])}else if(cmd){err(`worker sent an unknown command ${cmd}`)}};worker.onerror=e=>{var message="worker sent an error!";err(`${message} ${e.filename}:${e.lineno}: ${e.message}`);throw e};if(ENVIRONMENT_IS_NODE){worker.on("message",data=>worker.onmessage({data:data}));worker.on("error",e=>worker.onerror(e))}var handlers=[];var knownHandlers=["onExit","onAbort","print","printErr"];for(var handler of knownHandlers){if(Module.hasOwnProperty(handler)){handlers.push(handler)}}worker.postMessage({"cmd":"load","handlers":handlers,"urlOrBlob":Module["mainScriptUrlOrBlob"]||_scriptDir,"wasmMemory":wasmMemory,"wasmModule":wasmModule})}),loadWasmModuleToAllWorkers(onMaybeReady){if(ENVIRONMENT_IS_PTHREAD){return onMaybeReady()}let pthreadPoolReady=Promise.all(PThread.unusedWorkers.map(PThread.loadWasmModuleToWorker));pthreadPoolReady.then(onMaybeReady)},allocateUnusedWorker(){var worker;var pthreadMainJs=locateFile("libwhisper.worker.js");worker=new Worker(pthreadMainJs);PThread.unusedWorkers.push(worker)},getNewWorker(){if(PThread.unusedWorkers.length==0){PThread.allocateUnusedWorker();PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])}return PThread.unusedWorkers.pop()}};Module["PThread"]=PThread;var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var establishStackSpace=()=>{var pthread_ptr=_pthread_self();var stackHigh=GROWABLE_HEAP_I32()[pthread_ptr+52>>2];var stackSize=GROWABLE_HEAP_I32()[pthread_ptr+56>>2];var stackLow=stackHigh-stackSize;_emscripten_stack_set_limits(stackHigh,stackLow);stackRestore(stackHigh)};Module["establishStackSpace"]=establishStackSpace;function exitOnMainThread(returnCode){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(1,0,returnCode);_exit(returnCode)}var wasmTableMirror=[];var getWasmTableEntry=funcPtr=>{var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func};var invokeEntryPoint=(ptr,arg)=>{var result=getWasmTableEntry(ptr)(arg);function finish(result){if(keepRuntimeAlive()){PThread.setExitStatus(result)}else{__emscripten_thread_exit(result)}}finish(result)};Module["invokeEntryPoint"]=invokeEntryPoint;var registerTLSInit=tlsInitFunc=>{PThread.tlsInitFunctions.push(tlsInitFunc)};function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24;this.set_type=function(type){GROWABLE_HEAP_U32()[this.ptr+4>>2]=type};this.get_type=function(){return GROWABLE_HEAP_U32()[this.ptr+4>>2]};this.set_destructor=function(destructor){GROWABLE_HEAP_U32()[this.ptr+8>>2]=destructor};this.get_destructor=function(){return GROWABLE_HEAP_U32()[this.ptr+8>>2]};this.set_caught=function(caught){caught=caught?1:0;GROWABLE_HEAP_I8()[this.ptr+12>>0]=caught};this.get_caught=function(){return GROWABLE_HEAP_I8()[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;GROWABLE_HEAP_I8()[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return GROWABLE_HEAP_I8()[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)};this.set_adjusted_ptr=function(adjustedPtr){GROWABLE_HEAP_U32()[this.ptr+16>>2]=adjustedPtr};this.get_adjusted_ptr=function(){return GROWABLE_HEAP_U32()[this.ptr+16>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return GROWABLE_HEAP_U32()[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}var exceptionLast=0;var uncaughtExceptionCount=0;var ___cxa_throw=(ptr,type,destructor)=>{var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast};var ___emscripten_init_main_thread_js=tb=>{__emscripten_thread_init(tb,!ENVIRONMENT_IS_WORKER,1,!ENVIRONMENT_IS_WEB,65536,false);PThread.threadInitTLS()};var ___emscripten_thread_cleanup=thread=>{if(!ENVIRONMENT_IS_PTHREAD)cleanupThread(thread);else postMessage({"cmd":"cleanupThread","thread":thread})};function pthreadCreateProxied(pthread_ptr,attr,startRoutine,arg){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(2,1,pthread_ptr,attr,startRoutine,arg);return ___pthread_create_js(pthread_ptr,attr,startRoutine,arg)}var ___pthread_create_js=(pthread_ptr,attr,startRoutine,arg)=>{if(typeof SharedArrayBuffer=="undefined"){err("Current environment does not support SharedArrayBuffer, pthreads are not available!");return 6}var transferList=[];var error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error)){return pthreadCreateProxied(pthread_ptr,attr,startRoutine,arg)}if(error)return error;var threadParams={startRoutine:startRoutine,pthread_ptr:pthread_ptr,arg:arg,transferList:transferList};if(ENVIRONMENT_IS_PTHREAD){threadParams.cmd="spawnThread";postMessage(threadParams,transferList);return 0}return spawnThread(threadParams)};var setErrNo=value=>{GROWABLE_HEAP_I32()[___errno_location()>>2]=value;return value};function ___syscall_fcntl64(fd,cmd,varargs){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(3,1,fd,cmd,varargs);SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}while(FS.streams[arg]){arg++}var newStream;newStream=FS.createStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 5:{var arg=SYSCALLS.getp();var offset=0;GROWABLE_HEAP_I16()[arg+offset>>1]=2;return 0}case 6:case 7:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_ioctl(fd,op,varargs){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(4,1,fd,op,varargs);SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:{if(!stream.tty)return-59;return 0}case 21505:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcgets){var termios=stream.tty.ops.ioctl_tcgets(stream);var argp=SYSCALLS.getp();GROWABLE_HEAP_I32()[argp>>2]=termios.c_iflag||0;GROWABLE_HEAP_I32()[argp+4>>2]=termios.c_oflag||0;GROWABLE_HEAP_I32()[argp+8>>2]=termios.c_cflag||0;GROWABLE_HEAP_I32()[argp+12>>2]=termios.c_lflag||0;for(var i=0;i<32;i++){GROWABLE_HEAP_I8()[argp+i+17>>0]=termios.c_cc[i]||0}return 0}return 0}case 21510:case 21511:case 21512:{if(!stream.tty)return-59;return 0}case 21506:case 21507:case 21508:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcsets){var argp=SYSCALLS.getp();var c_iflag=GROWABLE_HEAP_I32()[argp>>2];var c_oflag=GROWABLE_HEAP_I32()[argp+4>>2];var c_cflag=GROWABLE_HEAP_I32()[argp+8>>2];var c_lflag=GROWABLE_HEAP_I32()[argp+12>>2];var c_cc=[];for(var i=0;i<32;i++){c_cc.push(GROWABLE_HEAP_I8()[argp+i+17>>0])}return stream.tty.ops.ioctl_tcsets(stream.tty,op,{c_iflag:c_iflag,c_oflag:c_oflag,c_cflag:c_cflag,c_lflag:c_lflag,c_cc:c_cc})}return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.getp();GROWABLE_HEAP_I32()[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.getp();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tiocgwinsz){var winsize=stream.tty.ops.ioctl_tiocgwinsz(stream.tty);var argp=SYSCALLS.getp();GROWABLE_HEAP_I16()[argp>>1]=winsize[0];GROWABLE_HEAP_I16()[argp+2>>1]=winsize[1]}return 0}case 21524:{if(!stream.tty)return-59;return 0}case 21515:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(5,1,dirfd,path,flags,varargs);SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?SYSCALLS.get():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var __embind_register_bigint=(primitiveType,name,size,minRange,maxRange)=>{};var embind_init_charCodes=()=>{var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes};var embind_charCodes=undefined;var readLatin1String=ptr=>{var ret="";var c=ptr;while(GROWABLE_HEAP_U8()[c]){ret+=embind_charCodes[GROWABLE_HEAP_U8()[c++]]}return ret};var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var BindingError=undefined;var throwBindingError=message=>{throw new BindingError(message)};var InternalError=undefined;var throwInternalError=message=>{throw new InternalError(message)};var whenDependentTypesAreResolved=(myTypes,dependentTypes,getTypeConverters)=>{myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i<myTypes.length;++i){registerType(myTypes[i],myTypeConverters[i])}}var typeConverters=new Array(dependentTypes.length);var unregisteredTypes=[];var registered=0;dependentTypes.forEach((dt,i)=>{if(registeredTypes.hasOwnProperty(dt)){typeConverters[i]=registeredTypes[dt]}else{unregisteredTypes.push(dt);if(!awaitingDependencies.hasOwnProperty(dt)){awaitingDependencies[dt]=[]}awaitingDependencies[dt].push(()=>{typeConverters[i]=registeredTypes[dt];++registered;if(registered===unregisteredTypes.length){onComplete(typeConverters)}})}});if(0===unregisteredTypes.length){onComplete(typeConverters)}};function sharedRegisterType(rawType,registeredInstance,options={}){var name=registeredInstance.name;if(!rawType){throwBindingError(`type "${name}" must have a positive integer typeid pointer`)}if(registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations){return}else{throwBindingError(`Cannot register type '${name}' twice`)}}registeredTypes[rawType]=registeredInstance;delete typeDependencies[rawType];if(awaitingDependencies.hasOwnProperty(rawType)){var callbacks=awaitingDependencies[rawType];delete awaitingDependencies[rawType];callbacks.forEach(cb=>cb())}}function registerType(rawType,registeredInstance,options={}){if(!("argPackAdvance"in registeredInstance)){throw new TypeError("registerType registeredInstance requires argPackAdvance")}return sharedRegisterType(rawType,registeredInstance,options)}var GenericWireTypeSize=8;var __embind_register_bool=(rawType,name,trueValue,falseValue)=>{name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(wt){return!!wt},"toWireType":function(destructors,o){return o?trueValue:falseValue},"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":function(pointer){return this["fromWireType"](GROWABLE_HEAP_U8()[pointer])},destructorFunction:null})};function handleAllocatorInit(){Object.assign(HandleAllocator.prototype,{get(id){return this.allocated[id]},has(id){return this.allocated[id]!==undefined},allocate(handle){var id=this.freelist.pop()||this.allocated.length;this.allocated[id]=handle;return id},free(id){this.allocated[id]=undefined;this.freelist.push(id)}})}function HandleAllocator(){this.allocated=[undefined];this.freelist=[]}var emval_handles=new HandleAllocator;var __emval_decref=handle=>{if(handle>=emval_handles.reserved&&0===--emval_handles.get(handle).refcount){emval_handles.free(handle)}};var count_emval_handles=()=>{var count=0;for(var i=emval_handles.reserved;i<emval_handles.allocated.length;++i){if(emval_handles.allocated[i]!==undefined){++count}}return count};var init_emval=()=>{emval_handles.allocated.push({value:undefined},{value:null},{value:true},{value:false});emval_handles.reserved=emval_handles.allocated.length;Module["count_emval_handles"]=count_emval_handles};var Emval={toValue:handle=>{if(!handle){throwBindingError("Cannot use deleted val. handle = "+handle)}return emval_handles.get(handle).value},toHandle:value=>{switch(value){case undefined:return 1;case null:return 2;case true:return 3;case false:return 4;default:{return emval_handles.allocate({refcount:1,value:value})}}}};function simpleReadValueFromPointer(pointer){return this["fromWireType"](GROWABLE_HEAP_I32()[pointer>>2])}var __embind_register_emval=(rawType,name)=>{name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":handle=>{var rv=Emval.toValue(handle);__emval_decref(handle);return rv},"toWireType":(destructors,value)=>Emval.toHandle(value),"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})};var floatReadValueFromPointer=(name,width)=>{switch(width){case 4:return function(pointer){return this["fromWireType"](GROWABLE_HEAP_F32()[pointer>>2])};case 8:return function(pointer){return this["fromWireType"](GROWABLE_HEAP_F64()[pointer>>3])};default:throw new TypeError(`invalid float width (${width}): ${name}`)}};var __embind_register_float=(rawType,name,size)=>{name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":value=>value,"toWireType":(destructors,value)=>value,"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":floatReadValueFromPointer(name,size),destructorFunction:null})};var char_0=48;var char_9=57;var makeLegalFunctionName=name=>{if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return`_${name}`}return name};var runDestructors=destructors=>{while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}};function createNamedFunction(name,body){name=makeLegalFunctionName(name);return{[name]:function(){return body.apply(this,arguments)}}[name]}function newFunc(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError(`new_ called with constructor type ${typeof constructor} which is not a function`)}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc,isAsync){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i<argTypes.length;++i){if(argTypes[i]!==null&&argTypes[i].destructorFunction===undefined){needsDestructorStack=true;break}}var returns=argTypes[0].name!=="void";var argsList="";var argsListWired="";for(var i=0;i<argCount-2;++i){argsList+=(i!==0?", ":"")+"arg"+i;argsListWired+=(i!==0?", ":"")+"arg"+i+"Wired"}var invokerFnBody=`\n        return function ${makeLegalFunctionName(humanName)}(${argsList}) {\n        if (arguments.length !== ${argCount-2}) {\n          throwBindingError('function ${humanName} called with ' + arguments.length + ' arguments, expected ${argCount-2}');\n        }`;if(needsDestructorStack){invokerFnBody+="var destructors = [];\n"}var dtorStack=needsDestructorStack?"destructors":"null";var args1=["throwBindingError","invoker","fn","runDestructors","retType","classParam"];var args2=[throwBindingError,cppInvokerFunc,cppTargetFunc,runDestructors,argTypes[0],argTypes[1]];if(isClassMethodFunc){invokerFnBody+="var thisWired = classParam.toWireType("+dtorStack+", this);\n"}for(var i=0;i<argCount-2;++i){invokerFnBody+="var arg"+i+"Wired = argType"+i+".toWireType("+dtorStack+", arg"+i+"); // "+argTypes[i+2].name+"\n";args1.push("argType"+i);args2.push(argTypes[i+2])}if(isClassMethodFunc){argsListWired="thisWired"+(argsListWired.length>0?", ":"")+argsListWired}invokerFnBody+=(returns||isAsync?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i<argTypes.length;++i){var paramName=i===1?"thisWired":"arg"+(i-2)+"Wired";if(argTypes[i].destructorFunction!==null){invokerFnBody+=paramName+"_dtor("+paramName+"); // "+argTypes[i].name+"\n";args1.push(paramName+"_dtor");args2.push(argTypes[i].destructorFunction)}}}if(returns){invokerFnBody+="var ret = retType.fromWireType(rv);\n"+"return ret;\n"}else{}invokerFnBody+="}\n";args1.push(invokerFnBody);return newFunc(Function,args1).apply(null,args2)}var ensureOverloadTable=(proto,methodName,humanName)=>{if(undefined===proto[methodName].overloadTable){var prevFunc=proto[methodName];proto[methodName]=function(){if(!proto[methodName].overloadTable.hasOwnProperty(arguments.length)){throwBindingError(`Function '${humanName}' called with an invalid number of arguments (${arguments.length}) - expects one of (${proto[methodName].overloadTable})!`)}return proto[methodName].overloadTable[arguments.length].apply(this,arguments)};proto[methodName].overloadTable=[];proto[methodName].overloadTable[prevFunc.argCount]=prevFunc}};var exposePublicSymbol=(name,value,numArguments)=>{if(Module.hasOwnProperty(name)){if(undefined===numArguments||undefined!==Module[name].overloadTable&&undefined!==Module[name].overloadTable[numArguments]){throwBindingError(`Cannot register public name '${name}' twice`)}ensureOverloadTable(Module,name,name);if(Module.hasOwnProperty(numArguments)){throwBindingError(`Cannot register multiple overloads of a function with the same number of arguments (${numArguments})!`)}Module[name].overloadTable[numArguments]=value}else{Module[name]=value;if(undefined!==numArguments){Module[name].numArguments=numArguments}}};var heap32VectorToArray=(count,firstElement)=>{var array=[];for(var i=0;i<count;i++){array.push(GROWABLE_HEAP_U32()[firstElement+i*4>>2])}return array};var replacePublicSymbol=(name,value,numArguments)=>{if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}};var dynCallLegacy=(sig,ptr,args)=>{var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)};var dynCall=(sig,ptr,args)=>{if(sig.includes("j")){return dynCallLegacy(sig,ptr,args)}var rtn=getWasmTableEntry(ptr).apply(null,args);return rtn};var getDynCaller=(sig,ptr)=>{var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}};var embind__requireFunction=(signature,rawFunction)=>{signature=readLatin1String(signature);function makeDynCaller(){if(signature.includes("j")){return getDynCaller(signature,rawFunction)}return getWasmTableEntry(rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError(`unknown function pointer with signature ${signature}: ${rawFunction}`)}return fp};var extendError=(baseErrorType,errorName)=>{var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return`${this.name}: ${this.message}`}};return errorClass};var UnboundTypeError=undefined;var getTypeName=type=>{var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv};var throwUnboundTypeError=(message,types)=>{var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(`${message}: `+unboundTypes.map(getTypeName).join([", "]))};var __embind_register_function=(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn,isAsync)=>{var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError(`Cannot call ${name} due to unbound types`,argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn,isAsync),argCount-1);return[]})};var integerReadValueFromPointer=(name,width,signed)=>{switch(width){case 1:return signed?pointer=>GROWABLE_HEAP_I8()[pointer>>0]:pointer=>GROWABLE_HEAP_U8()[pointer>>0];case 2:return signed?pointer=>GROWABLE_HEAP_I16()[pointer>>1]:pointer=>GROWABLE_HEAP_U16()[pointer>>1];case 4:return signed?pointer=>GROWABLE_HEAP_I32()[pointer>>2]:pointer=>GROWABLE_HEAP_U32()[pointer>>2];default:throw new TypeError(`invalid integer width (${width}): ${name}`)}};var __embind_register_integer=(primitiveType,name,size,minRange,maxRange)=>{name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=value=>value<<bitshift>>>bitshift}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":toWireType,"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":integerReadValueFromPointer(name,size,minRange!==0),destructorFunction:null})};var __embind_register_memory_view=(rawType,dataTypeIndex,name)=>{var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){var size=GROWABLE_HEAP_U32()[handle>>2];var data=GROWABLE_HEAP_U32()[handle+4>>2];return new TA(GROWABLE_HEAP_I8().buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})};function readPointer(pointer){return this["fromWireType"](GROWABLE_HEAP_U32()[pointer>>2])}var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite);var __embind_register_std_string=(rawType,name)=>{name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":value=>{var length=GROWABLE_HEAP_U32()[value>>2];var payload=value+4;var str;if(stdStringIsUTF8){var decodeStartPtr=payload;for(var i=0;i<=length;++i){var currentBytePtr=payload+i;if(i==length||GROWABLE_HEAP_U8()[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;i<length;++i){a[i]=String.fromCharCode(GROWABLE_HEAP_U8()[payload+i])}str=a.join("")}_free(value);return str},"toWireType":(destructors,value)=>{if(value instanceof ArrayBuffer){value=new Uint8Array(value)}var length;var valueIsOfTypeString=typeof value=="string";if(!(valueIsOfTypeString||value instanceof Uint8Array||value instanceof Uint8ClampedArray||value instanceof Int8Array)){throwBindingError("Cannot pass non-string to std::string")}if(stdStringIsUTF8&&valueIsOfTypeString){length=lengthBytesUTF8(value)}else{length=value.length}var base=_malloc(4+length+1);var ptr=base+4;GROWABLE_HEAP_U32()[base>>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr,length+1)}else{if(valueIsOfTypeString){for(var i=0;i<length;++i){var charCode=value.charCodeAt(i);if(charCode>255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}GROWABLE_HEAP_U8()[ptr+i]=charCode}}else{for(var i=0;i<length;++i){GROWABLE_HEAP_U8()[ptr+i]=value[i]}}}if(destructors!==null){destructors.push(_free,base)}return base},"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":readPointer,destructorFunction:ptr=>_free(ptr)})};var UTF16Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):undefined;var UTF16ToString=(ptr,maxBytesToRead)=>{var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&GROWABLE_HEAP_U16()[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder)return UTF16Decoder.decode(GROWABLE_HEAP_U8().slice(ptr,endPtr));var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=GROWABLE_HEAP_I16()[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str};var stringToUTF16=(str,outPtr,maxBytesToWrite)=>{if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite<str.length*2?maxBytesToWrite/2:str.length;for(var i=0;i<numCharsToWrite;++i){var codeUnit=str.charCodeAt(i);GROWABLE_HEAP_I16()[outPtr>>1]=codeUnit;outPtr+=2}GROWABLE_HEAP_I16()[outPtr>>1]=0;return outPtr-startPtr};var lengthBytesUTF16=str=>str.length*2;var UTF32ToString=(ptr,maxBytesToRead)=>{var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=GROWABLE_HEAP_I32()[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str};var stringToUTF32=(str,outPtr,maxBytesToWrite)=>{if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i<str.length;++i){var codeUnit=str.charCodeAt(i);if(codeUnit>=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}GROWABLE_HEAP_I32()[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}GROWABLE_HEAP_I32()[outPtr>>2]=0;return outPtr-startPtr};var lengthBytesUTF32=str=>{var len=0;for(var i=0;i<str.length;++i){var codeUnit=str.charCodeAt(i);if(codeUnit>=55296&&codeUnit<=57343)++i;len+=4}return len};var __embind_register_std_wstring=(rawType,charSize,name)=>{name=readLatin1String(name);var decodeString,encodeString,getHeap,lengthBytesUTF,shift;if(charSize===2){decodeString=UTF16ToString;encodeString=stringToUTF16;lengthBytesUTF=lengthBytesUTF16;getHeap=()=>GROWABLE_HEAP_U16();shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=()=>GROWABLE_HEAP_U32();shift=2}registerType(rawType,{name:name,"fromWireType":value=>{var length=GROWABLE_HEAP_U32()[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":(destructors,value)=>{if(!(typeof value=="string")){throwBindingError(`Cannot pass non-string to C++ string type ${name}`)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);GROWABLE_HEAP_U32()[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:ptr=>_free(ptr)})};var __embind_register_void=(rawType,name)=>{name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":()=>undefined,"toWireType":(destructors,o)=>undefined})};var nowIsMonotonic=true;var __emscripten_get_now_is_monotonic=()=>nowIsMonotonic;var maybeExit=()=>{if(!keepRuntimeAlive()){try{if(ENVIRONMENT_IS_PTHREAD)__emscripten_thread_exit(EXITSTATUS);else _exit(EXITSTATUS)}catch(e){handleException(e)}}};var callUserCallback=func=>{if(ABORT){return}try{func();maybeExit()}catch(e){handleException(e)}};var __emscripten_thread_mailbox_await=pthread_ptr=>{if(typeof Atomics.waitAsync==="function"){var wait=Atomics.waitAsync(GROWABLE_HEAP_I32(),pthread_ptr>>2,pthread_ptr);wait.value.then(checkMailbox);var waitingAsync=pthread_ptr+128;Atomics.store(GROWABLE_HEAP_I32(),waitingAsync>>2,1)}};Module["__emscripten_thread_mailbox_await"]=__emscripten_thread_mailbox_await;var checkMailbox=()=>{var pthread_ptr=_pthread_self();if(pthread_ptr){__emscripten_thread_mailbox_await(pthread_ptr);callUserCallback(()=>__emscripten_check_mailbox())}};Module["checkMailbox"]=checkMailbox;var __emscripten_notify_mailbox_postmessage=(targetThreadId,currThreadId,mainThreadId)=>{if(targetThreadId==currThreadId){setTimeout(()=>checkMailbox())}else if(ENVIRONMENT_IS_PTHREAD){postMessage({"targetThread":targetThreadId,"cmd":"checkMailbox"})}else{var worker=PThread.pthreads[targetThreadId];if(!worker){return}worker.postMessage({"cmd":"checkMailbox"})}};var withStackSave=f=>{var stack=stackSave();var ret=f();stackRestore(stack);return ret};var proxyToMainThread=function(index,sync){var numCallArgs=arguments.length-2;var outerArgs=arguments;return withStackSave(()=>{var serializedNumCallArgs=numCallArgs;var args=stackAlloc(serializedNumCallArgs*8);var b=args>>3;for(var i=0;i<numCallArgs;i++){var arg=outerArgs[2+i];GROWABLE_HEAP_F64()[b+i]=arg}return __emscripten_run_on_main_thread_js(index,serializedNumCallArgs,args,sync)})};var proxiedJSCallArgs=[];var __emscripten_receive_on_main_thread_js=(index,callingThread,numCallArgs,args)=>{proxiedJSCallArgs.length=numCallArgs;var b=args>>3;for(var i=0;i<numCallArgs;i++){proxiedJSCallArgs[i]=GROWABLE_HEAP_F64()[b+i]}var func=proxiedFunctionTable[index];PThread.currentProxiedOperationCallerThread=callingThread;var rtn=func.apply(null,proxiedJSCallArgs);PThread.currentProxiedOperationCallerThread=0;return rtn};var __emscripten_thread_set_strongref=thread=>{if(ENVIRONMENT_IS_NODE){PThread.pthreads[thread].ref()}};var requireRegisteredType=(rawType,humanName)=>{var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(humanName+" has unknown type "+getTypeName(rawType))}return impl};var __emval_as=(handle,returnType,destructorsRef)=>{handle=Emval.toValue(handle);returnType=requireRegisteredType(returnType,"emval::as");var destructors=[];var rd=Emval.toHandle(destructors);GROWABLE_HEAP_U32()[destructorsRef>>2]=rd;return returnType["toWireType"](destructors,handle)};var emval_symbols={};var getStringOrSymbol=address=>{var symbol=emval_symbols[address];if(symbol===undefined){return readLatin1String(address)}return symbol};var emval_methodCallers=[];var __emval_call_void_method=(caller,handle,methodName,args)=>{caller=emval_methodCallers[caller];handle=Emval.toValue(handle);methodName=getStringOrSymbol(methodName);caller(handle,methodName,null,args)};var emval_addMethodCaller=caller=>{var id=emval_methodCallers.length;emval_methodCallers.push(caller);return id};var emval_lookupTypes=(argCount,argTypes)=>{var a=new Array(argCount);for(var i=0;i<argCount;++i){a[i]=requireRegisteredType(GROWABLE_HEAP_U32()[argTypes+i*4>>2],"parameter "+i)}return a};var emval_registeredMethods=[];var __emval_get_method_caller=(argCount,argTypes)=>{var types=emval_lookupTypes(argCount,argTypes);var retType=types[0];var signatureName=retType.name+"_$"+types.slice(1).map(function(t){return t.name}).join("_")+"$";var returnId=emval_registeredMethods[signatureName];if(returnId!==undefined){return returnId}var params=["retType"];var args=[retType];var argsList="";for(var i=0;i<argCount-1;++i){argsList+=(i!==0?", ":"")+"arg"+i;params.push("argType"+i);args.push(types[1+i])}var functionName=makeLegalFunctionName("methodCaller_"+signatureName);var functionBody="return function "+functionName+"(handle, name, destructors, args) {\n";var offset=0;for(var i=0;i<argCount-1;++i){functionBody+="    var arg"+i+" = argType"+i+".readValueFromPointer(args"+(offset?"+"+offset:"")+");\n";offset+=types[i+1]["argPackAdvance"]}functionBody+="    var rv = handle[name]("+argsList+");\n";for(var i=0;i<argCount-1;++i){if(types[i+1]["deleteObject"]){functionBody+="    argType"+i+".deleteObject(arg"+i+");\n"}}if(!retType.isVoid){functionBody+="    return retType.toWireType(destructors, rv);\n"}functionBody+="};\n";params.push(functionBody);var invokerFunction=newFunc(Function,params).apply(null,args);returnId=emval_addMethodCaller(invokerFunction);emval_registeredMethods[signatureName]=returnId;return returnId};var __emval_get_module_property=name=>{name=getStringOrSymbol(name);return Emval.toHandle(Module[name])};var __emval_get_property=(handle,key)=>{handle=Emval.toValue(handle);key=Emval.toValue(key);return Emval.toHandle(handle[key])};var __emval_incref=handle=>{if(handle>4){emval_handles.get(handle).refcount+=1}};var craftEmvalAllocator=argCount=>{var argsList="";for(var i=0;i<argCount;++i){argsList+=(i!==0?", ":"")+"arg"+i}var getMemory=()=>GROWABLE_HEAP_U32();var functionBody="return function emval_allocator_"+argCount+"(constructor, argTypes, args) {\n"+"  var HEAPU32 = getMemory();\n";for(var i=0;i<argCount;++i){functionBody+="var argType"+i+" = requireRegisteredType(HEAPU32[((argTypes)>>2)], 'parameter "+i+"');\n"+"var arg"+i+" = argType"+i+".readValueFromPointer(args);\n"+"args += argType"+i+"['argPackAdvance'];\n"+"argTypes += 4;\n"}functionBody+="var obj = new constructor("+argsList+");\n"+"return valueToHandle(obj);\n"+"}\n";return new Function("requireRegisteredType","Module","valueToHandle","getMemory",functionBody)(requireRegisteredType,Module,Emval.toHandle,getMemory)};var emval_newers={};var __emval_new=(handle,argCount,argTypes,args)=>{handle=Emval.toValue(handle);var newer=emval_newers[argCount];if(!newer){newer=craftEmvalAllocator(argCount);emval_newers[argCount]=newer}return newer(handle,argTypes,args)};var __emval_new_cstring=v=>Emval.toHandle(getStringOrSymbol(v));var __emval_run_destructors=handle=>{var destructors=Emval.toValue(handle);runDestructors(destructors);__emval_decref(handle)};var _abort=()=>{abort("")};var warnOnce=text=>{if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;if(ENVIRONMENT_IS_NODE)text="warning: "+text;err(text)}};var _emscripten_check_blocking_allowed=()=>{};var runtimeKeepalivePush=()=>{runtimeKeepaliveCounter+=1};var _emscripten_exit_with_live_runtime=()=>{runtimeKeepalivePush();throw"unwind"};var getHeapMax=()=>2147483648;var _emscripten_get_heap_max=()=>getHeapMax();var _emscripten_get_now;_emscripten_get_now=()=>performance.timeOrigin+performance.now();var _emscripten_num_logical_cores=()=>{if(ENVIRONMENT_IS_NODE)return require("os").cpus().length;return navigator["hardwareConcurrency"]};var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)/65536;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=GROWABLE_HEAP_U8().length;requestedSize>>>=0;if(requestedSize<=oldSize){return false}var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}var alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var ENV={};var getExecutableName=()=>thisProgram||"./this.program";var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var stringToAscii=(str,buffer)=>{for(var i=0;i<str.length;++i){GROWABLE_HEAP_I8()[buffer++>>0]=str.charCodeAt(i)}GROWABLE_HEAP_I8()[buffer>>0]=0};var _environ_get=function(__environ,environ_buf){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(6,1,__environ,environ_buf);var bufSize=0;getEnvStrings().forEach((string,i)=>{var ptr=environ_buf+bufSize;GROWABLE_HEAP_U32()[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0};var _environ_sizes_get=function(penviron_count,penviron_buf_size){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(7,1,penviron_count,penviron_buf_size);var strings=getEnvStrings();GROWABLE_HEAP_U32()[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(string=>bufSize+=string.length+1);GROWABLE_HEAP_U32()[penviron_buf_size>>2]=bufSize;return 0};function _fd_close(fd){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(8,1,fd);try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doReadv=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i<iovcnt;i++){var ptr=GROWABLE_HEAP_U32()[iov>>2];var len=GROWABLE_HEAP_U32()[iov+4>>2];iov+=8;var curr=FS.read(stream,GROWABLE_HEAP_I8(),ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr<len)break;if(typeof offset!=="undefined"){offset+=curr}}return ret};function _fd_read(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(9,1,fd,iov,iovcnt,pnum);try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doReadv(stream,iov,iovcnt);GROWABLE_HEAP_U32()[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var convertI32PairToI53Checked=(lo,hi)=>hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN;function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(10,1,fd,offset_low,offset_high,whence,newOffset);var offset=convertI32PairToI53Checked(offset_low,offset_high);try{if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],GROWABLE_HEAP_I32()[newOffset>>2]=tempI64[0],GROWABLE_HEAP_I32()[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doWritev=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i<iovcnt;i++){var ptr=GROWABLE_HEAP_U32()[iov>>2];var len=GROWABLE_HEAP_U32()[iov+4>>2];iov+=8;var curr=FS.write(stream,GROWABLE_HEAP_I8(),ptr,len,offset);if(curr<0)return-1;ret+=curr;if(typeof offset!=="undefined"){offset+=curr}}return ret};function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(11,1,fd,iov,iovcnt,pnum);try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);GROWABLE_HEAP_U32()[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var isLeapYear=year=>year%4===0&&(year%100!==0||year%400===0);var arraySum=(array,index)=>{var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum};var MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];var addDays=(date,days)=>{var newDate=new Date(date.getTime());while(days>0){var leap=isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate};var writeArrayToMemory=(array,buffer)=>{GROWABLE_HEAP_I8().set(array,buffer)};var _strftime=(s,maxsize,format,tm)=>{var tm_zone=GROWABLE_HEAP_U32()[tm+40>>2];var date={tm_sec:GROWABLE_HEAP_I32()[tm>>2],tm_min:GROWABLE_HEAP_I32()[tm+4>>2],tm_hour:GROWABLE_HEAP_I32()[tm+8>>2],tm_mday:GROWABLE_HEAP_I32()[tm+12>>2],tm_mon:GROWABLE_HEAP_I32()[tm+16>>2],tm_year:GROWABLE_HEAP_I32()[tm+20>>2],tm_wday:GROWABLE_HEAP_I32()[tm+24>>2],tm_yday:GROWABLE_HEAP_I32()[tm+28>>2],tm_isdst:GROWABLE_HEAP_I32()[tm+32>>2],tm_gmtoff:GROWABLE_HEAP_I32()[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length<digits){str=character[0]+str}return str}function leadingNulls(value,digits){return leadingSomething(value,digits,"0")}function compareByDay(date1,date2){function sgn(value){return value<0?-1:value>0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}return thisDate.getFullYear()}return thisDate.getFullYear()-1}var EXPANSION_RULES_2={"%a":date=>WEEKDAYS[date.tm_wday].substring(0,3),"%A":date=>WEEKDAYS[date.tm_wday],"%b":date=>MONTHS[date.tm_mon].substring(0,3),"%B":date=>MONTHS[date.tm_mon],"%C":date=>{var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":date=>leadingNulls(date.tm_mday,2),"%e":date=>leadingSomething(date.tm_mday,2," "),"%g":date=>getWeekBasedYear(date).toString().substring(2),"%G":date=>getWeekBasedYear(date),"%H":date=>leadingNulls(date.tm_hour,2),"%I":date=>{var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":date=>leadingNulls(date.tm_mday+arraySum(isLeapYear(date.tm_year+1900)?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR,date.tm_mon-1),3),"%m":date=>leadingNulls(date.tm_mon+1,2),"%M":date=>leadingNulls(date.tm_min,2),"%n":()=>"\n","%p":date=>{if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}return"PM"},"%S":date=>leadingNulls(date.tm_sec,2),"%t":()=>"\t","%u":date=>date.tm_wday||7,"%U":date=>{var days=date.tm_yday+7-date.tm_wday;return leadingNulls(Math.floor(days/7),2)},"%V":date=>{var val=Math.floor((date.tm_yday+7-(date.tm_wday+6)%7)/7);if((date.tm_wday+371-date.tm_yday-2)%7<=2){val++}if(!val){val=52;var dec31=(date.tm_wday+7-date.tm_yday-1)%7;if(dec31==4||dec31==5&&isLeapYear(date.tm_year%400-1)){val++}}else if(val==53){var jan1=(date.tm_wday+371-date.tm_yday)%7;if(jan1!=4&&(jan1!=3||!isLeapYear(date.tm_year)))val=1}return leadingNulls(val,2)},"%w":date=>date.tm_wday,"%W":date=>{var days=date.tm_yday+7-(date.tm_wday+6)%7;return leadingNulls(Math.floor(days/7),2)},"%y":date=>(date.tm_year+1900).toString().substring(2),"%Y":date=>date.tm_year+1900,"%z":date=>{var off=date.tm_gmtoff;var ahead=off>=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":date=>date.tm_zone,"%%":()=>"%"};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1};var _strftime_l=(s,maxsize,format,tm,loc)=>_strftime(s,maxsize,format,tm);PThread.init();var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.createPreloadedFile=FS_createPreloadedFile;FS.staticInit();Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_unlink"]=FS.unlink;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;embind_init_charCodes();BindingError=Module["BindingError"]=class BindingError extends Error{constructor(message){super(message);this.name="BindingError"}};InternalError=Module["InternalError"]=class InternalError extends Error{constructor(message){super(message);this.name="InternalError"}};handleAllocatorInit();init_emval();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");var proxiedFunctionTable=[_proc_exit,exitOnMainThread,pthreadCreateProxied,___syscall_fcntl64,___syscall_ioctl,___syscall_openat,_environ_get,_environ_sizes_get,_fd_close,_fd_read,_fd_seek,_fd_write];var wasmImports={d:___cxa_throw,K:___emscripten_init_main_thread_js,m:___emscripten_thread_cleanup,H:___pthread_create_js,q:___syscall_fcntl64,M:___syscall_ioctl,N:___syscall_openat,y:__embind_register_bigint,S:__embind_register_bool,R:__embind_register_emval,s:__embind_register_float,h:__embind_register_function,g:__embind_register_integer,c:__embind_register_memory_view,r:__embind_register_std_string,k:__embind_register_std_wstring,T:__embind_register_void,Q:__emscripten_get_now_is_monotonic,F:__emscripten_notify_mailbox_postmessage,I:__emscripten_receive_on_main_thread_js,J:__emscripten_thread_mailbox_await,P:__emscripten_thread_set_strongref,w:__emval_as,U:__emval_call_void_method,f:__emval_decref,V:__emval_get_method_caller,u:__emval_get_module_property,i:__emval_get_property,l:__emval_incref,t:__emval_new,j:__emval_new_cstring,v:__emval_run_destructors,b:_abort,n:_emscripten_check_blocking_allowed,O:_emscripten_exit_with_live_runtime,z:_emscripten_get_heap_max,e:_emscripten_get_now,A:_emscripten_num_logical_cores,E:_emscripten_resize_heap,C:_environ_get,D:_environ_sizes_get,G:_exit,o:_fd_close,L:_fd_read,x:_fd_seek,p:_fd_write,a:wasmMemory||Module["wasmMemory"],B:_strftime_l};var wasmExports=createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports["W"])();var _free=a0=>(_free=wasmExports["Y"])(a0);var _malloc=a0=>(_malloc=wasmExports["Z"])(a0);var __emscripten_tls_init=Module["__emscripten_tls_init"]=()=>(__emscripten_tls_init=Module["__emscripten_tls_init"]=wasmExports["_"])();var _pthread_self=Module["_pthread_self"]=()=>(_pthread_self=Module["_pthread_self"]=wasmExports["$"])();var ___getTypeName=a0=>(___getTypeName=wasmExports["aa"])(a0);var __embind_initialize_bindings=Module["__embind_initialize_bindings"]=()=>(__embind_initialize_bindings=Module["__embind_initialize_bindings"]=wasmExports["ba"])();var ___errno_location=()=>(___errno_location=wasmExports["ca"])();var __emscripten_thread_init=Module["__emscripten_thread_init"]=(a0,a1,a2,a3,a4,a5)=>(__emscripten_thread_init=Module["__emscripten_thread_init"]=wasmExports["da"])(a0,a1,a2,a3,a4,a5);var __emscripten_thread_crashed=Module["__emscripten_thread_crashed"]=()=>(__emscripten_thread_crashed=Module["__emscripten_thread_crashed"]=wasmExports["ea"])();var _emscripten_main_thread_process_queued_calls=()=>(_emscripten_main_thread_process_queued_calls=wasmExports["emscripten_main_thread_process_queued_calls"])();var _emscripten_main_runtime_thread_id=()=>(_emscripten_main_runtime_thread_id=wasmExports["emscripten_main_runtime_thread_id"])();var __emscripten_run_on_main_thread_js=(a0,a1,a2,a3)=>(__emscripten_run_on_main_thread_js=wasmExports["fa"])(a0,a1,a2,a3);var __emscripten_thread_free_data=a0=>(__emscripten_thread_free_data=wasmExports["ga"])(a0);var __emscripten_thread_exit=Module["__emscripten_thread_exit"]=a0=>(__emscripten_thread_exit=Module["__emscripten_thread_exit"]=wasmExports["ha"])(a0);var __emscripten_check_mailbox=Module["__emscripten_check_mailbox"]=()=>(__emscripten_check_mailbox=Module["__emscripten_check_mailbox"]=wasmExports["ia"])();var _emscripten_stack_set_limits=(a0,a1)=>(_emscripten_stack_set_limits=wasmExports["ja"])(a0,a1);var stackSave=()=>(stackSave=wasmExports["ka"])();var stackRestore=a0=>(stackRestore=wasmExports["la"])(a0);var stackAlloc=a0=>(stackAlloc=wasmExports["ma"])(a0);var ___cxa_is_pointer_type=a0=>(___cxa_is_pointer_type=wasmExports["na"])(a0);var dynCall_jiji=Module["dynCall_jiji"]=(a0,a1,a2,a3,a4)=>(dynCall_jiji=Module["dynCall_jiji"]=wasmExports["oa"])(a0,a1,a2,a3,a4);var dynCall_viijii=Module["dynCall_viijii"]=(a0,a1,a2,a3,a4,a5,a6)=>(dynCall_viijii=Module["dynCall_viijii"]=wasmExports["pa"])(a0,a1,a2,a3,a4,a5,a6);var dynCall_iiiiij=Module["dynCall_iiiiij"]=(a0,a1,a2,a3,a4,a5,a6)=>(dynCall_iiiiij=Module["dynCall_iiiiij"]=wasmExports["qa"])(a0,a1,a2,a3,a4,a5,a6);var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8)=>(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=wasmExports["ra"])(a0,a1,a2,a3,a4,a5,a6,a7,a8);var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9)=>(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=wasmExports["sa"])(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9);function intArrayFromBase64(s){if(typeof ENVIRONMENT_IS_NODE!="undefined"&&ENVIRONMENT_IS_NODE){var buf=Buffer.from(s,"base64");return new Uint8Array(buf.buffer,buf.byteOffset,buf.length)}try{var decoded=atob(s);var bytes=new Uint8Array(decoded.length);for(var i=0;i<decoded.length;++i){bytes[i]=decoded.charCodeAt(i)}return bytes}catch(_){throw new Error("Converting base64 string to bytes failed.")}}function tryParseAsDataURI(filename){if(!isDataURI(filename)){return}return intArrayFromBase64(filename.slice(dataURIPrefix.length))}Module["addRunDependency"]=addRunDependency;Module["removeRunDependency"]=removeRunDependency;Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["FS_unlink"]=FS.unlink;Module["keepRuntimeAlive"]=keepRuntimeAlive;Module["wasmMemory"]=wasmMemory;Module["ExitStatus"]=ExitStatus;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["PThread"]=PThread;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(){if(runDependencies>0){return}if(ENVIRONMENT_IS_PTHREAD){readyPromiseResolve(Module);initRuntime();startWorker(Module);return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run();
 
 
-  return whisper_factory.ready
+  return moduleArg.ready
 }
+
 );
 })();
 if (typeof exports === 'object' && typeof module === 'object')
   module.exports = whisper_factory;
 else if (typeof define === 'function' && define['amd'])
-  define([], function() { return whisper_factory; });
-else if (typeof exports === 'object')
-  exports["whisper_factory"] = whisper_factory;
+  define([], () => whisper_factory);
index 7d215ae1fd61d1ac26bed2139b6f3c12ca1be7f0..2b8da8f734219bc72f7ac0921d6c97dc8f1c7cd7 100644 (file)
@@ -1,3 +1,5 @@
+#define _USE_MATH_DEFINES // for M_PI
+
 #include "common.h"
 
 // third-party utilities
 #include <codecvt>
 #include <sstream>
 
-#ifndef M_PI
-#define M_PI 3.14159265358979323846
-#endif
-
 #if defined(_MSC_VER)
 #pragma warning(disable: 4244 4267) // possible loss of data
 #endif
 
+// Function to check if the next argument exists
+std::string get_next_arg(int& i, int argc, char** argv, const std::string& flag, gpt_params& params) {
+    if (i + 1 < argc && argv[i + 1][0] != '-') {
+        return argv[++i];
+    } else {
+        fprintf(stderr, "error: %s requires one argument.\n", flag.c_str());
+        gpt_print_usage(argc, argv, params);
+        exit(0);
+    }
+}
+
 bool gpt_params_parse(int argc, char ** argv, gpt_params & params) {
     for (int i = 1; i < argc; i++) {
         std::string arg = argv[i];
 
         if (arg == "-s" || arg == "--seed") {
-            params.seed = std::stoi(argv[++i]);
+            params.seed = std::stoi(get_next_arg(i, argc, argv, arg, params));
         } else if (arg == "-t" || arg == "--threads") {
-            params.n_threads = std::stoi(argv[++i]);
+            params.n_threads = std::stoi(get_next_arg(i, argc, argv, arg, params));
+        } else if (arg == "-ngl" || arg == "--gpu-layers" || arg == "--n-gpu-layers") {
+            params.n_gpu_layers = std::stoi(get_next_arg(i, argc, argv, arg, params));
         } else if (arg == "-p" || arg == "--prompt") {
-            params.prompt = argv[++i];
+            params.prompt = get_next_arg(i, argc, argv, arg, params);
         } else if (arg == "-n" || arg == "--n_predict") {
-            params.n_predict = std::stoi(argv[++i]);
+            params.n_predict = std::stoi(get_next_arg(i, argc, argv, arg, params));
         } else if (arg == "--top_k") {
-            params.top_k = std::max(1, std::stoi(argv[++i]));
+            params.top_k = std::stoi(get_next_arg(i, argc, argv, arg, params));
         } else if (arg == "--top_p") {
-            params.top_p = std::stof(argv[++i]);
+            params.top_p = std::stof(get_next_arg(i, argc, argv, arg, params));
         } else if (arg == "--temp") {
-            params.temp = std::stof(argv[++i]);
+            params.temp = std::stof(get_next_arg(i, argc, argv, arg, params));
         } else if (arg == "--repeat-last-n") {
-            params.repeat_last_n = std::stof(argv[++i]);
+            params.repeat_last_n = std::stoi(get_next_arg(i, argc, argv, arg, params));
         } else if (arg == "--repeat-penalty") {
-            params.repeat_penalty = std::stof(argv[++i]);
+            params.repeat_penalty = std::stof(get_next_arg(i, argc, argv, arg, params));
         } else if (arg == "-b" || arg == "--batch_size") {
-            params.n_batch = std::stoi(argv[++i]);
+            params.n_batch= std::stoi(get_next_arg(i, argc, argv, arg, params));
         } else if (arg == "-m" || arg == "--model") {
-            params.model = argv[++i];
+            params.model = get_next_arg(i, argc, argv, arg, params);
         } else if (arg == "-i" || arg == "--interactive") {
             params.interactive = true;
         } else if (arg == "-ip" || arg == "--interactive-port") {
             params.interactive = true;
-            params.interactive_port = std::stoi(argv[++i]);
+            params.interactive_port = std::stoi(get_next_arg(i, argc, argv, arg, params));
         } else if (arg == "-h" || arg == "--help") {
             gpt_print_usage(argc, argv, params);
             exit(0);
         } else if (arg == "-f" || arg == "--file") {
-            if (++i > argc) {
-                fprintf(stderr, "Invalid file param");
-                break;
-            }
+            get_next_arg(i, argc, argv, arg, params);
             std::ifstream file(argv[i]);
             if (!file) {
                 fprintf(stderr, "error: failed to open file '%s'\n", argv[i]);
@@ -70,7 +78,7 @@ bool gpt_params_parse(int argc, char ** argv, gpt_params & params) {
                 params.prompt.pop_back();
             }
         } else if (arg == "-tt" || arg == "--token_test") {
-            params.token_test = argv[++i];
+            params.token_test = get_next_arg(i, argc, argv, arg, params);
         }
         else {
             fprintf(stderr, "error: unknown argument: %s\n", arg.c_str());
@@ -89,6 +97,7 @@ void gpt_print_usage(int /*argc*/, char ** argv, const gpt_params & params) {
     fprintf(stderr, "  -h, --help            show this help message and exit\n");
     fprintf(stderr, "  -s SEED, --seed SEED  RNG seed (default: -1)\n");
     fprintf(stderr, "  -t N, --threads N     number of threads to use during computation (default: %d)\n", params.n_threads);
+    fprintf(stderr, "  -ngl N, --gpu-layers N  number of layers to offload to GPU on supported models (default: %d)\n", params.n_gpu_layers);
     fprintf(stderr, "  -p PROMPT, --prompt PROMPT\n");
     fprintf(stderr, "                        prompt to start generation with (default: random)\n");
     fprintf(stderr, "  -f FNAME, --file FNAME\n");
@@ -755,3 +764,46 @@ float similarity(const std::string & s0, const std::string & s1) {
 
     return 1.0f - (dist / std::max(s0.size(), s1.size()));
 }
+
+bool sam_params_parse(int argc, char ** argv, sam_params & params) {
+    for (int i = 1; i < argc; i++) {
+        std::string arg = argv[i];
+
+        if (arg == "-s" || arg == "--seed") {
+            params.seed = std::stoi(argv[++i]);
+        } else if (arg == "-t" || arg == "--threads") {
+            params.n_threads = std::stoi(argv[++i]);
+        } else if (arg == "-m" || arg == "--model") {
+            params.model = argv[++i];
+        } else if (arg == "-i" || arg == "--inp") {
+            params.fname_inp = argv[++i];
+        } else if (arg == "-o" || arg == "--out") {
+            params.fname_out = argv[++i];
+        } else if (arg == "-h" || arg == "--help") {
+            sam_print_usage(argc, argv, params);
+            exit(0);
+        } else {
+            fprintf(stderr, "error: unknown argument: %s\n", arg.c_str());
+            sam_print_usage(argc, argv, params);
+            exit(0);
+        }
+    }
+
+    return true;
+}
+
+void sam_print_usage(int argc, char ** argv, const sam_params & params) {
+    fprintf(stderr, "usage: %s [options]\n", argv[0]);
+    fprintf(stderr, "\n");
+    fprintf(stderr, "options:\n");
+    fprintf(stderr, "  -h, --help            show this help message and exit\n");
+    fprintf(stderr, "  -s SEED, --seed SEED  RNG seed (default: -1)\n");
+    fprintf(stderr, "  -t N, --threads N     number of threads to use during computation (default: %d)\n", params.n_threads);
+    fprintf(stderr, "  -m FNAME, --model FNAME\n");
+    fprintf(stderr, "                        model path (default: %s)\n", params.model.c_str());
+    fprintf(stderr, "  -i FNAME, --inp FNAME\n");
+    fprintf(stderr, "                        input file (default: %s)\n", params.fname_inp.c_str());
+    fprintf(stderr, "  -o FNAME, --out FNAME\n");
+    fprintf(stderr, "                        output file (default: %s)\n", params.fname_out.c_str());
+    fprintf(stderr, "\n");
+}
index f9740a3c3d8e1c8fb989a74e184f5a0c2b40060c..7c671588a10e4649372e8f863d6304877001bf91 100644 (file)
@@ -11,7 +11,7 @@
 #define COMMON_SAMPLE_RATE 16000
 
 //
-// CLI argument parsing
+// GPT CLI argument parsing
 //
 
 struct gpt_params {
@@ -33,6 +33,8 @@ struct gpt_params {
 
     bool    interactive      = false;
     int32_t interactive_port = -1;
+
+    int32_t n_gpu_layers     = 0;
 };
 
 bool gpt_params_parse(int argc, char ** argv, gpt_params & params);
@@ -155,3 +157,20 @@ bool vad_simple(
 
 // compute similarity between two strings using Levenshtein distance
 float similarity(const std::string & s0, const std::string & s1);
+
+//
+// SAM argument parsing
+//
+
+struct sam_params {
+    int32_t seed      = -1; // RNG seed
+    int32_t n_threads = std::min(4, (int32_t) std::thread::hardware_concurrency());
+
+    std::string model     = "models/sam-vit-b/ggml-model-f16.bin"; // model path
+    std::string fname_inp = "img.jpg";
+    std::string fname_out = "img.out";
+};
+
+bool sam_params_parse(int argc, char ** argv, sam_params & params);
+
+void sam_print_usage(int argc, char ** argv, const sam_params & params);
index 8fde4925b2d446a84c4a281eeaa7ef27ad7fcdc1..a2ba98ee0e6915de32dd6b39bf748f75494420a5 100644 (file)
@@ -191,9 +191,9 @@ bool gpt2_model_load(const std::string & fname, gpt2_model & model, gpt_vocab &
     // create the ggml context
     {
         struct ggml_init_params params = {
-            .mem_size   = ctx_size,
-            .mem_buffer = NULL,
-            .no_alloc   = false,
+            /*.mem_size   =*/ ctx_size,
+            /*.mem_buffer =*/ NULL,
+            /*.no_alloc   =*/ false,
         };
 
         model.ctx = ggml_init(params);
@@ -420,7 +420,6 @@ bool gpt2_eval(
 
     struct ggml_context * ctx0 = ggml_init(params);
     struct ggml_cgraph gf = {};
-    gf.n_threads = n_threads;
 
     struct ggml_tensor * embd = ggml_new_tensor_1d(ctx0, GGML_TYPE_I32, N);
     memcpy(embd->data, embd_inp.data(), N*ggml_element_size(embd));
@@ -442,7 +441,7 @@ bool gpt2_eval(
         // norm
         {
             // [ 768, N]
-            cur = ggml_norm(ctx0, inpL);
+            cur = ggml_norm(ctx0, inpL, 1e-5f);
 
             // cur = ln_1_g*cur + ln_1_b
             // [ 768, N]
@@ -589,7 +588,7 @@ bool gpt2_eval(
         {
             // norm
             {
-                cur = ggml_norm(ctx0, inpFF);
+                cur = ggml_norm(ctx0, inpFF, 1e-5f);
 
                 // cur = ln_2_g*cur + ln_2_b
                 // [ 768, N]
@@ -644,7 +643,7 @@ bool gpt2_eval(
     // norm
     {
         // [ 768, N]
-        inpL = ggml_norm(ctx0, inpL);
+        inpL = ggml_norm(ctx0, inpL, 1e-5f);
 
         // inpL = ln_f_g*inpL + ln_f_b
         // [ 768, N]
@@ -664,8 +663,8 @@ bool gpt2_eval(
     //inpL = ggml_soft_max(ctx0, inpL);
 
     // run the computation
-    ggml_build_forward_expand(&gf, inpL);
-    ggml_graph_compute       (ctx0, &gf);
+    ggml_build_forward_expand  (&gf, inpL);
+    ggml_graph_compute_with_ctx(ctx0, &gf, n_threads);
 
     //if (n_past%100 == 0) {
     //    ggml_graph_print   (&gf);
index 8fde4925b2d446a84c4a281eeaa7ef27ad7fcdc1..1ee4e728c15b56223db7a2ee880baf3392991057 100644 (file)
@@ -379,6 +379,7 @@ bool gpt2_model_load(const std::string & fname, gpt2_model & model, gpt_vocab &
 //   - embd_inp:  the embeddings of the tokens in the context
 //   - embd_w:    the predicted logits for the next token
 //
+// TODO: sync latest version from ggml repo
 bool gpt2_eval(
         const gpt2_model & model,
         const int n_threads,
@@ -420,7 +421,6 @@ bool gpt2_eval(
 
     struct ggml_context * ctx0 = ggml_init(params);
     struct ggml_cgraph gf = {};
-    gf.n_threads = n_threads;
 
     struct ggml_tensor * embd = ggml_new_tensor_1d(ctx0, GGML_TYPE_I32, N);
     memcpy(embd->data, embd_inp.data(), N*ggml_element_size(embd));
@@ -442,7 +442,7 @@ bool gpt2_eval(
         // norm
         {
             // [ 768, N]
-            cur = ggml_norm(ctx0, inpL);
+            cur = ggml_norm(ctx0, inpL, 1e-5f);
 
             // cur = ln_1_g*cur + ln_1_b
             // [ 768, N]
@@ -589,7 +589,7 @@ bool gpt2_eval(
         {
             // norm
             {
-                cur = ggml_norm(ctx0, inpFF);
+                cur = ggml_norm(ctx0, inpFF, 1e-5f);
 
                 // cur = ln_2_g*cur + ln_2_b
                 // [ 768, N]
@@ -644,7 +644,7 @@ bool gpt2_eval(
     // norm
     {
         // [ 768, N]
-        inpL = ggml_norm(ctx0, inpL);
+        inpL = ggml_norm(ctx0, inpL, 1e-5f);
 
         // inpL = ln_f_g*inpL + ln_f_b
         // [ 768, N]
@@ -664,8 +664,8 @@ bool gpt2_eval(
     //inpL = ggml_soft_max(ctx0, inpL);
 
     // run the computation
-    ggml_build_forward_expand(&gf, inpL);
-    ggml_graph_compute       (ctx0, &gf);
+    ggml_build_forward_expand  (&gf, inpL);
+    ggml_graph_compute_with_ctx(ctx0, &gf, n_threads);
 
     //if (n_past%100 == 0) {
     //    ggml_graph_print   (&gf);
diff --git a/ggml-alloc.c b/ggml-alloc.c
new file mode 100644 (file)
index 0000000..856a4cd
--- /dev/null
@@ -0,0 +1,594 @@
+#include "ggml-alloc.h"
+#include "ggml.h"
+#include <assert.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define UNUSED(x) (void)(x)
+#define MAX(a, b) ((a) > (b) ? (a) : (b))
+#define GGML_MAX_CONCUR (2*GGML_MAX_NODES)
+
+//#define GGML_ALLOCATOR_DEBUG
+
+//#define AT_PRINTF printf
+#define AT_PRINTF(...) ((void)0)
+
+struct hash_node {
+    struct ggml_tensor * t;
+    int n_children;
+    int n_views;
+};
+
+static size_t hash(void * p) {
+    return (size_t)p % GGML_GRAPH_HASHTABLE_SIZE;
+}
+
+static struct hash_node * hash_get(struct hash_node hash_table[], struct ggml_tensor * t) {
+    size_t h = hash(t);
+
+    // linear probing
+    size_t i = h;
+    while (hash_table[i].t != NULL) {
+        if (hash_table[i].t == t) {
+            return &hash_table[i];
+        }
+        i = (i + 1) % GGML_GRAPH_HASHTABLE_SIZE;
+        if (i == h) {
+            // hash table is full
+            GGML_ASSERT(false);
+        }
+    }
+
+    hash_table[i].t = t;
+    return &hash_table[i];
+}
+
+// TODO: GGML_PAD ?
+static size_t aligned_offset(const void * buffer, size_t offset, size_t alignment) {
+    assert(alignment && !(alignment & (alignment - 1))); // power of 2
+    size_t align = (alignment - (((uintptr_t)buffer + offset) % alignment)) % alignment;
+    return offset + align;
+}
+
+struct free_block {
+    void * addr;
+    size_t size;
+};
+
+#define MAX_FREE_BLOCKS 128
+
+struct ggml_allocr {
+    void * data;
+    size_t size;
+    size_t alignment;
+    int n_free_blocks;
+    struct free_block free_blocks[MAX_FREE_BLOCKS];
+    struct hash_node hash_table[GGML_GRAPH_HASHTABLE_SIZE];
+    size_t max_size;
+    bool measure;
+    int parse_seq[GGML_MAX_CONCUR];
+    int parse_seq_len;
+
+#ifdef GGML_ALLOCATOR_DEBUG
+    struct ggml_tensor * allocated_tensors[1024];
+#endif
+};
+
+#ifdef GGML_ALLOCATOR_DEBUG
+static void add_allocated_tensor(struct ggml_allocr * alloc, struct ggml_tensor * tensor) {
+    for (int i = 0; i < 1024; i++) {
+        if (alloc->allocated_tensors[i] == NULL) {
+            alloc->allocated_tensors[i] = tensor;
+            return;
+        }
+    }
+    GGML_ASSERT(!"out of allocated_tensors");
+}
+static void remove_allocated_tensor(struct ggml_allocr * alloc, struct ggml_tensor * tensor) {
+    for (int i = 0; i < 1024; i++) {
+        if (alloc->allocated_tensors[i] == tensor ||
+            (alloc->allocated_tensors[i] != NULL && alloc->allocated_tensors[i]->data == tensor->data)) {
+            alloc->allocated_tensors[i] = NULL;
+            return;
+        }
+    }
+    printf("tried to free tensor %s not found\n", tensor->name);
+    GGML_ASSERT(!"tensor not found");
+}
+#endif
+
+
+static size_t ggml_allocator_get_alloc_size(struct ggml_allocr * alloc, struct ggml_tensor * tensor) {
+    return ggml_nbytes(tensor);
+
+    UNUSED(alloc);
+}
+
+void ggml_allocr_alloc(struct ggml_allocr * alloc, struct ggml_tensor * tensor) {
+    size_t size = ggml_allocator_get_alloc_size(alloc, tensor);
+    size = aligned_offset(NULL, size, alloc->alignment);
+
+    AT_PRINTF("%s: allocating %s (%zu bytes) - ", __func__, tensor->name, size);
+
+    size_t max_avail = 0;
+
+    // find the best fitting free block besides the last block
+    int best_fit_block = -1;
+    size_t best_fit_size = SIZE_MAX;
+    for (int i = 0; i < alloc->n_free_blocks - 1; i++) {
+        struct free_block * block = &alloc->free_blocks[i];
+        max_avail = MAX(max_avail, block->size);
+        if (block->size >= size && block->size <= best_fit_size) {
+            best_fit_block = i;
+            best_fit_size = block->size;
+        }
+    }
+
+    AT_PRINTF("block %d\n", best_fit_block);
+
+    if (best_fit_block == -1) {
+        // the last block is our last resort
+        struct free_block * block = &alloc->free_blocks[alloc->n_free_blocks - 1];
+        if (block->size >= size) {
+            best_fit_block = alloc->n_free_blocks - 1;
+            max_avail = MAX(max_avail, block->size);
+        } else {
+            fprintf(stderr, "%s: not enough space in the buffer (needed %zu, largest block available %zu)\n",
+                    __func__, size, max_avail);
+            GGML_ASSERT(!"not enough space in the buffer");
+        return;
+        }
+    }
+    struct free_block * block = &alloc->free_blocks[best_fit_block];
+    void * addr = block->addr;
+    block->addr = (char*)block->addr + size;
+    block->size -= size;
+    if (block->size == 0) {
+        // remove block if empty
+        alloc->n_free_blocks--;
+        for (int j = best_fit_block; j < alloc->n_free_blocks; j++) {
+            alloc->free_blocks[j] = alloc->free_blocks[j+1];
+        }
+    }
+
+    tensor->data = addr;
+
+#ifdef GGML_ALLOCATOR_DEBUG
+    add_allocated_tensor(alloc, tensor);
+    size_t cur_max = (char*)addr - (char*)alloc->data + size;
+    if (cur_max > alloc->max_size) {
+        printf("max_size = %.2f MB: tensors: ", cur_max / 1024.0 / 1024.0);
+        for (int i = 0; i < 1024; i++) {
+            if (alloc->allocated_tensors[i]) {
+                printf("%s (%.2f MB) ", alloc->allocated_tensors[i]->name, ggml_nbytes(alloc->allocated_tensors[i]) / 1024.0 / 1024.0);
+            }
+        }
+        printf("\n");
+    }
+#endif
+
+    alloc->max_size = MAX(alloc->max_size, (char*)addr - (char*)alloc->data + size);
+}
+
+// this is a very naive implementation, but for our case the number of free blocks should be very small
+static void ggml_allocator_free_tensor(struct ggml_allocr * alloc, struct ggml_tensor * tensor) {
+    void * ptr = tensor->data;
+
+    if (ptr < alloc->data || (char*)ptr >= (char*)alloc->data + alloc->max_size) {
+        // the tensor was not allocated in this buffer
+        // this can happen because the graph allocator will try to free weights and other tensors from different buffers
+        // the easiest way to deal with this is just to ignore it
+        return;
+    }
+
+    size_t size = ggml_allocator_get_alloc_size(alloc, tensor);
+    size = aligned_offset(NULL, size, alloc->alignment);
+    AT_PRINTF("%s: freeing %s (%zu bytes) - n_free_blocks = %d\n", __func__, tensor->name, size, alloc->n_free_blocks);
+
+#ifdef GGML_ALLOCATOR_DEBUG
+    remove_allocated_tensor(alloc, tensor);
+#endif
+
+    // see if we can merge with an existing block
+    for (int i = 0; i < alloc->n_free_blocks; i++) {
+        struct free_block * block = &alloc->free_blocks[i];
+        // check if ptr is at the end of the block
+        if ((char*)block->addr + block->size == ptr) {
+            block->size += size;
+            // check if we can merge with the next block
+            if (i < alloc->n_free_blocks - 1 && (char*)block->addr + block->size == alloc->free_blocks[i+1].addr) {
+                block->size += alloc->free_blocks[i+1].size;
+                alloc->n_free_blocks--;
+                for (int j = i+1; j < alloc->n_free_blocks; j++) {
+                    alloc->free_blocks[j] = alloc->free_blocks[j+1];
+                }
+            }
+            return;
+        }
+        // check if ptr is at the beginning of the block
+        if ((char*)ptr + size == block->addr) {
+            block->addr = ptr;
+            block->size += size;
+            // check if we can merge with the previous block
+            if (i > 0 && (char*)alloc->free_blocks[i-1].addr + alloc->free_blocks[i-1].size == block->addr) {
+                alloc->free_blocks[i-1].size += block->size;
+                alloc->n_free_blocks--;
+                for (int j = i; j < alloc->n_free_blocks; j++) {
+                    alloc->free_blocks[j] = alloc->free_blocks[j+1];
+                }
+            }
+            return;
+        }
+    }
+    // otherwise, add a new block
+    GGML_ASSERT(alloc->n_free_blocks < MAX_FREE_BLOCKS && "out of free blocks");
+    // insert the new block in the correct position to keep the array sorted by address (to make merging blocks faster)
+    int insert_pos = 0;
+    while (insert_pos < alloc->n_free_blocks && alloc->free_blocks[insert_pos].addr < ptr) {
+        insert_pos++;
+    }
+    // shift all blocks from insert_pos onward to make room for the new block
+    for (int i = alloc->n_free_blocks; i > insert_pos; i--) {
+        alloc->free_blocks[i] = alloc->free_blocks[i-1];
+    }
+    // insert the new block
+    alloc->free_blocks[insert_pos].addr = ptr;
+    alloc->free_blocks[insert_pos].size = size;
+    alloc->n_free_blocks++;
+}
+
+void ggml_allocr_set_parse_seq(struct ggml_allocr * alloc, const int * list, int n) {
+    for (int i = 0; i < n; i++) {
+        alloc->parse_seq[i] = list[i];
+    }
+    alloc->parse_seq_len = n;
+}
+
+void ggml_allocr_reset(struct ggml_allocr * alloc) {
+    alloc->n_free_blocks = 1;
+    size_t align_offset = aligned_offset(alloc->data, 0, alloc->alignment);
+    alloc->free_blocks[0].addr = (char *)alloc->data + align_offset;
+    alloc->free_blocks[0].size = alloc->size - align_offset;
+}
+
+struct ggml_allocr * ggml_allocr_new(void * data, size_t size, size_t alignment) {
+    struct ggml_allocr * alloc = (struct ggml_allocr *)malloc(sizeof(struct ggml_allocr) /* + n_free_blocks * sizeof(struct free_block) */);
+
+    *alloc = (struct ggml_allocr){
+        /*.data          = */ data,
+        /*.size          = */ size,
+        /*.alignment     = */ alignment,
+        /*.n_free_blocks = */ 0,
+        /*.free_blocks   = */ {{0}},
+        /*.hash_table    = */ {{0}},
+        /*.max_size      = */ 0,
+        /*.measure       = */ false,
+        /*.parse_seq     = */ {0},
+        /*.parse_seq_len = */ 0,
+#ifdef GGML_ALLOCATOR_DEBUG
+        /*.allocated_tensors = */ {0},
+#endif
+    };
+
+    ggml_allocr_reset(alloc);
+
+    return alloc;
+}
+
+// address and size of the buffer when measuring
+// it needs to be large enough to fit all the tensors, but it cannot overlap with other existing buffers
+static void * const MEASURE_BASE_ADDR = (void *) 0x1000;
+static const size_t MEASURE_MAX_SIZE  = 1ULL<<40; // 1 TB
+
+struct ggml_allocr * ggml_allocr_new_measure(size_t alignment) {
+    struct ggml_allocr * alloc = (struct ggml_allocr *)malloc(sizeof(struct ggml_allocr) /* + n_free_blocks * sizeof(struct free_block) */);
+
+    *alloc = (struct ggml_allocr){
+        /*.data          = */ MEASURE_BASE_ADDR,
+        /*.size          = */ MEASURE_MAX_SIZE,
+        /*.alignment     = */ alignment,
+        /*.n_free_blocks = */ 0,
+        /*.free_blocks   = */ {{0}},
+        /*.hash_table    = */ {{0}},
+        /*.max_size      = */ 0,
+        /*.measure       = */ true,
+        /*.parse_seq     = */ {0},
+        /*.parse_seq_len = */ 0,
+#ifdef GGML_ALLOCATOR_DEBUG
+        /*.allocated_tensors = */ {0},
+#endif
+    };
+
+    ggml_allocr_reset(alloc);
+
+    return alloc;
+}
+
+void ggml_allocr_free(struct ggml_allocr * alloc) {
+    free(alloc);
+}
+
+bool ggml_allocr_is_measure(struct ggml_allocr * alloc) {
+    return alloc->measure;
+}
+
+//////////// compute graph allocator
+
+static bool ggml_is_view(struct ggml_tensor * t) {
+    return t->op == GGML_OP_RESHAPE || t->op == GGML_OP_VIEW || t->op == GGML_OP_TRANSPOSE ||
+           t->op == GGML_OP_PERMUTE || t->op == GGML_OP_CPY;
+}
+
+static bool ggml_are_same_layout(const struct ggml_tensor * a, const struct ggml_tensor * b) {
+    if (a->type != b->type) {
+        return false;
+    }
+    for (int i = 0; i < GGML_MAX_DIMS; i++) {
+        if (a->ne[i] != b->ne[i]) {
+            return false;
+        }
+        if (a->nb[i] != b->nb[i]) {
+            return false;
+        }
+    }
+    return true;
+}
+
+static struct ggml_tensor * get_view_parent(struct ggml_tensor * t) {
+    switch (t->op) {
+        case GGML_OP_PERMUTE:
+        case GGML_OP_RESHAPE:
+        case GGML_OP_TRANSPOSE:
+        case GGML_OP_VIEW:
+            return t->src[0];
+        case GGML_OP_CPY:
+            return t->src[1];
+        default:
+            return NULL;
+    }
+}
+
+static struct ggml_tensor * get_view_source(struct ggml_tensor * t) {
+    struct ggml_tensor * parent = t;
+    do {
+        parent = get_view_parent(parent);
+    } while (ggml_is_view(parent));
+    return parent;
+}
+
+static bool ggml_op_can_inplace(enum ggml_op op) {
+    switch (op) {
+        case GGML_OP_SCALE:
+        case GGML_OP_DIAG_MASK_ZERO:
+        case GGML_OP_DIAG_MASK_INF:
+        case GGML_OP_ADD:
+        case GGML_OP_ADD1:
+        case GGML_OP_ACC:
+        case GGML_OP_SUB:
+        case GGML_OP_MUL:
+        case GGML_OP_DIV:
+        case GGML_OP_SQR:
+        case GGML_OP_SQRT:
+        case GGML_OP_LOG:
+        case GGML_OP_UNARY:
+        case GGML_OP_ROPE:
+        case GGML_OP_RMS_NORM:
+        case GGML_OP_SET:
+        case GGML_OP_SOFT_MAX:
+        case GGML_OP_CONT:
+        case GGML_OP_ADD_REL_POS:
+            return true;
+
+        default:
+            return false;
+    }
+}
+
+static void allocate_node(struct ggml_allocr * alloc, struct ggml_tensor * node) {
+    struct hash_node * ht = alloc->hash_table;
+    if (node->data == NULL) {
+        if (ggml_is_view(node)) {
+            size_t offset;
+            switch(node->op) {
+                case GGML_OP_VIEW:
+                    memcpy(&offset, node->op_params, sizeof(size_t));
+                    node->data = (char *) node->src[0]->data + offset;
+                    break;
+                case GGML_OP_PERMUTE:
+                case GGML_OP_RESHAPE:
+                case GGML_OP_TRANSPOSE:
+                    node->data = node->src[0]->data;
+                    break;
+                case GGML_OP_CPY:
+                    node->data = node->src[1]->data;
+                    break;
+                default:
+                    GGML_ASSERT(!"unknown view op");
+                    break;
+            }
+        } else {
+            // see if we can reuse a parent's buffer (inplace)
+            if (ggml_op_can_inplace(node->op)) {
+                for (int i = 0; i < GGML_MAX_SRC; i++) {
+                    struct ggml_tensor * parent = node->src[i];
+                    if (parent == NULL) {
+                        break;
+                    }
+
+                    // if the node's data is external, then we cannot re-use it
+                    if ((char *) parent->data < (char *) alloc->data ||
+                        (char *) parent->data >= ((char *) alloc->data + alloc->size)) {
+                        AT_PRINTF("not reusing parent %s for %s as %p is external\n", parent->name, node->name, parent->data);
+                        continue;
+                    }
+
+                    struct hash_node * p_hn = hash_get(ht, parent);
+                    if (parent->data != NULL && p_hn->n_children == 1 && p_hn->n_views == 0 && ggml_are_same_layout(node, parent)) {
+                        if (ggml_is_view(parent)) {
+                            struct ggml_tensor * view_src = get_view_source(parent);
+                            struct hash_node * view_src_hn = hash_get(ht, view_src);
+                            if (view_src_hn->n_views == 1 && view_src_hn->n_children == 0 && view_src->data == parent->data) {
+                                // TODO: the offset of the view parent must be kept to ensure that the op doesn't overwrite
+                                // the parent's data that it will need later (same layout requirement). the problem is that then
+                                // we cannot free the tensor because the original address of the allocation is lost.
+                                // adding a view_src pointer to the tensor would solve this and simplify the code dealing with views
+                                // for now, we only reuse the parent's data if the offset is zero (view_src->data == parent->data)
+                                AT_PRINTF("reusing view parent %s (%s) for %s\n", parent->name, view_src->name, node->name);
+                                node->data = parent->data;
+                                return;
+                            }
+                        }
+                        else {
+                            AT_PRINTF("reusing parent %s for %s\n", parent->name, node->name);
+                            node->data = parent->data;
+                            return;
+                        }
+                    }
+                }
+            }
+            ggml_allocr_alloc(alloc, node);
+        }
+    }
+}
+
+static size_t ggml_allocator_alloc_graph_tensors_n(
+    struct ggml_allocr * alloc,
+    struct ggml_cgraph ** graphs, int n_graphs,
+    struct ggml_tensor *** inputs, struct ggml_tensor *** outputs) {
+
+    // reset hash table
+    struct hash_node * ht = alloc->hash_table;
+    memset(ht, 0, sizeof(struct hash_node) * GGML_GRAPH_HASHTABLE_SIZE);
+
+    // count number of children and views
+    for (int g = 0; g < n_graphs; g++) {
+        struct ggml_cgraph * gf = graphs[g];
+        for (int i = 0; i < gf->n_nodes; i++) {
+            struct ggml_tensor * node = gf->nodes[i];
+
+            if (ggml_is_view(node)) {
+                struct ggml_tensor * view_src = get_view_source(node);
+                hash_get(ht, view_src)->n_views += 1;
+            }
+
+            for (int j = 0; j < GGML_MAX_SRC; j++) {
+                struct ggml_tensor * parent = node->src[j];
+                if (parent == NULL) {
+                    break;
+                }
+                hash_get(ht, parent)->n_children += 1;
+            }
+        }
+    }
+
+    // allocate tensors
+    for (int g = 0; g < n_graphs; g++) {
+        struct ggml_cgraph * gf = graphs[g];
+        AT_PRINTF("####### graph %d/%d\n", g, n_graphs);
+        // graph inputs are allocated first to ensure that they are not overwritten by each other
+        if (inputs != NULL && inputs[g] != NULL) {
+            for (int i = 0; inputs[g][i] != NULL; i++) {
+                struct ggml_tensor * input = inputs[g][i];
+                AT_PRINTF("input: %s\n", input->name);
+                allocate_node(alloc, input);
+            }
+        }
+        // if we have parse_seq then we allocate nodes following the list, and we only free nodes at barriers
+        int last_barrier_pos = 0;
+        int n_nodes = alloc->parse_seq_len ? alloc->parse_seq_len : gf->n_nodes;
+
+        for (int ind = 0; ind < n_nodes; ind++) {
+            // allocate a node if there is no parse_seq or this is not a barrier
+            if ((alloc->parse_seq_len==0) || alloc->parse_seq[ind] != -1) {
+                int i = alloc->parse_seq_len ? alloc->parse_seq[ind] : ind;
+                struct ggml_tensor * node = gf->nodes[i];
+
+                // allocate parents (leafs)
+                for (int j = 0; j < GGML_MAX_SRC; j++) {
+                    struct ggml_tensor * parent = node->src[j];
+                    if (parent == NULL) {
+                        break;
+                    }
+                    allocate_node(alloc, parent);
+                }
+
+                // allocate node
+                allocate_node(alloc, node);
+
+                AT_PRINTF("exec: %s (%s) <= ", ggml_op_name(node->op), node->name);
+                for (int j = 0; j < GGML_MAX_SRC; j++) {
+                    struct ggml_tensor * parent = node->src[j];
+                    if (parent == NULL) {
+                        break;
+                    }
+                    AT_PRINTF("%s", parent->name);
+                    if (j < GGML_MAX_SRC - 1 && node->src[j + 1] != NULL) {
+                        AT_PRINTF(", ");
+                    }
+                }
+                AT_PRINTF("\n");
+            }
+
+
+            // update parents
+            // update immediately if there is no parse_seq
+            // update only at barriers if there is parse_seq
+            if ((alloc->parse_seq_len==0) || alloc->parse_seq[ind] == -1) {
+                int update_start = alloc->parse_seq_len ? last_barrier_pos : ind;
+                int update_end   = alloc->parse_seq_len ? ind              : ind + 1;
+                for (int i = update_start; i < update_end; i++) {
+                    int node_i = alloc->parse_seq_len ? alloc->parse_seq[i] : i;
+                    struct ggml_tensor * node = gf->nodes[node_i];
+
+                    for (int j = 0; j < GGML_MAX_SRC; j++) {
+                        struct ggml_tensor * parent = node->src[j];
+                        if (parent == NULL) {
+                            break;
+                        }
+                        struct hash_node * p_hn = hash_get(ht, parent);
+                        p_hn->n_children -= 1;
+
+                        //AT_PRINTF("parent %s: %d children, %d views\n", parent->name, parent->n_children, parent->n_views);
+
+                        if (p_hn->n_children == 0 && p_hn->n_views == 0) {
+                            if (ggml_is_view(parent)) {
+                                struct ggml_tensor * view_src = get_view_source(parent);
+                                struct hash_node * view_src_hn = hash_get(ht, view_src);
+                                view_src_hn->n_views -= 1;
+                                AT_PRINTF("view_src %s: %d children, %d views\n", view_src->name, view_src_hn->n_children, view_src_hn->n_views);
+                                if (view_src_hn->n_views == 0 && view_src_hn->n_children == 0 && view_src->data != node->data) {
+                                    ggml_allocator_free_tensor(alloc, view_src);
+                                }
+                            }
+                            else {
+                                if (parent->data != node->data) {
+                                    ggml_allocator_free_tensor(alloc, parent);
+                                }
+                            }
+                        }
+                    }
+                }
+                AT_PRINTF("\n");
+                if (alloc->parse_seq_len) {
+                    last_barrier_pos = ind + 1;
+                }
+            }
+        }
+        // free graph outputs here that wouldn't be freed otherwise because they have no children
+        if (outputs != NULL && outputs[g] != NULL) {
+            for (int i = 0; outputs[g][i] != NULL; i++) {
+                struct ggml_tensor * output = outputs[g][i];
+                AT_PRINTF("output: %s\n", output->name);
+                ggml_allocator_free_tensor(alloc, output);
+            }
+        }
+    }
+
+    return alloc->max_size;
+}
+
+size_t ggml_allocr_alloc_graph(struct ggml_allocr * alloc, struct ggml_cgraph * graph) {
+    return ggml_allocator_alloc_graph_tensors_n(alloc, &graph, 1, NULL, NULL);
+}
diff --git a/ggml-alloc.h b/ggml-alloc.h
new file mode 100644 (file)
index 0000000..9559da7
--- /dev/null
@@ -0,0 +1,26 @@
+#pragma once
+
+#include "ggml.h"
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
+
+GGML_API struct ggml_allocr * ggml_allocr_new(void * data, size_t size, size_t alignment);
+GGML_API struct ggml_allocr * ggml_allocr_new_measure(size_t alignment);
+
+// tell the allocator to parse nodes following the order described in the list
+// you should call this if your graph are optimized to execute out-of-order
+GGML_API void   ggml_allocr_set_parse_seq(struct ggml_allocr * alloc, const int * list, int n);
+
+GGML_API void   ggml_allocr_free(struct ggml_allocr * alloc);
+GGML_API bool   ggml_allocr_is_measure(struct ggml_allocr * alloc);
+GGML_API void   ggml_allocr_reset(struct ggml_allocr * alloc);
+GGML_API void   ggml_allocr_alloc(struct ggml_allocr * alloc, struct ggml_tensor * tensor);
+GGML_API size_t ggml_allocr_alloc_graph(struct ggml_allocr * alloc, struct ggml_cgraph * graph);
+
+
+#ifdef  __cplusplus
+}
+#endif
index 694e0bcb83704153ff91ab2667b8b54902d03365..391e63181c0fc688e686eef2434a75ec7b05674a 100644 (file)
 #include <hip/hip_runtime.h>
 #include <hipblas/hipblas.h>
 #include <hip/hip_fp16.h>
-#include <rocblas/rocblas.h>
+#ifdef __HIP_PLATFORM_AMD__
+// for rocblas_initialize()
+#include "rocblas/rocblas.h"
+#endif
+#define CUBLAS_COMPUTE_32F HIPBLAS_R_32F
+#define CUBLAS_COMPUTE_32F_FAST_16F HIPBLAS_R_32F
+#define CUBLAS_GEMM_DEFAULT HIPBLAS_GEMM_DEFAULT
 #define CUBLAS_OP_N HIPBLAS_OP_N
 #define CUBLAS_OP_T HIPBLAS_OP_T
 #define CUBLAS_STATUS_SUCCESS HIPBLAS_STATUS_SUCCESS
 #define CUBLAS_TF32_TENSOR_OP_MATH 0
+#define CUDA_R_16F  HIPBLAS_R_16F
+#define CUDA_R_32F  HIPBLAS_R_32F
 #define __shfl_xor_sync(mask, var, laneMask, width) __shfl_xor(var, laneMask, width)
 #define cublasCreate hipblasCreate
-#define cublasGetStatusString rocblas_status_to_string
+#define cublasGemmEx hipblasGemmEx
 #define cublasHandle_t hipblasHandle_t
-#define cublasLoggerConfigure(logIsOn, logToStdOut, logToStdErr, logFileName) CUBLAS_STATUS_SUCCESS
 #define cublasSetMathMode(handle, mode) CUBLAS_STATUS_SUCCESS
 #define cublasSetStream hipblasSetStream
 #define cublasSgemm hipblasSgemm
 #define cudaDeviceSynchronize hipDeviceSynchronize
 #define cudaError_t hipError_t
 #define cudaEventCreateWithFlags hipEventCreateWithFlags
-#define cudaEventDestroy hipEventDestroy
 #define cudaEventDisableTiming hipEventDisableTiming
 #define cudaEventRecord hipEventRecord
 #define cudaEvent_t hipEvent_t
+#define cudaEventDestroy hipEventDestroy
 #define cudaFree hipFree
 #define cudaFreeHost hipHostFree
 #define cudaGetDevice hipGetDevice
@@ -40,7 +47,7 @@
 #define cudaGetErrorString hipGetErrorString
 #define cudaGetLastError hipGetLastError
 #define cudaMalloc hipMalloc
-#define cudaMallocHost hipHostMalloc
+#define cudaMallocHost(ptr, size) hipHostMalloc(ptr, size, hipHostMallocDefault)
 #define cudaMemcpy hipMemcpy
 #define cudaMemcpy2DAsync hipMemcpy2DAsync
 #define cudaMemcpyAsync hipMemcpyAsync
 #define cudaMemcpyHostToDevice hipMemcpyHostToDevice
 #define cudaMemcpyKind hipMemcpyKind
 #define cudaMemset hipMemset
+#define cudaOccupancyMaxPotentialBlockSize hipOccupancyMaxPotentialBlockSize
 #define cudaSetDevice hipSetDevice
 #define cudaStreamCreateWithFlags hipStreamCreateWithFlags
 #define cudaStreamNonBlocking hipStreamNonBlocking
+#define cudaStreamSynchronize hipStreamSynchronize
 #define cudaStreamWaitEvent(stream, event) hipStreamWaitEvent(stream, event, 0)
 #define cudaStream_t hipStream_t
 #define cudaSuccess hipSuccess
 #include "ggml-cuda.h"
 #include "ggml.h"
 
+#define MIN_CC_DP4A 610 // minimum compute capability for __dp4a, an intrinsic for byte-wise dot products
+#ifndef CC_TURING
+#define CC_TURING   700
+#endif
+
+#if defined(GGML_USE_HIPBLAS)
+#define __CUDA_ARCH__ 1300
+
+typedef int8_t int8x4_t __attribute__((ext_vector_type(4)));
+static __device__ __forceinline__ int __vsubss4(const int a, const int b) {
+    const int8x4_t va = reinterpret_cast<const int8x4_t&>(a);
+    const int8x4_t vb = reinterpret_cast<const int8x4_t&>(b);
+    const int8x4_t c = __builtin_elementwise_sub_sat(va, vb);
+    return reinterpret_cast<const int&>(c);
+}
+
+static __device__ __forceinline__ int __dp4a(const int a, const int b, int c) {
+#if defined(__gfx906__) || defined(__gfx908__) || defined(__gfx90a__) || defined(__gfx1030__)
+    c = __builtin_amdgcn_sdot4(a, b, c, false);
+#elif defined(__gfx1100__)
+    c = __builtin_amdgcn_sudot4( true, a, true, b, c, false);
+#elif defined(__gfx1010__) || defined(__gfx900__)
+    int tmp1;
+    int tmp2;
+    asm("\n \
+        v_mul_i32_i24 %1, sext(%3), sext(%4) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0 \n \
+        v_mul_i32_i24 %2, sext(%3), sext(%4) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_1 src1_sel:BYTE_1 \n \
+        v_add3_u32 %0, %1, %2, %0 \n \
+        v_mul_i32_i24 %1, sext(%3), sext(%4) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_2 src1_sel:BYTE_2 \n \
+        v_mul_i32_i24 %2, sext(%3), sext(%4) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_3 src1_sel:BYTE_3 \n \
+        v_add3_u32 %0, %1, %2, %0 \n \
+        "
+        : "+v"(c), "=&v"(tmp1), "=&v"(tmp2)
+        : "v"(a), "v"(b)
+    );
+#else
+    const int8x4_t va = reinterpret_cast<const int8x4_t&>(a);
+    const int8x4_t vb = reinterpret_cast<const int8x4_t&>(b);
+    c += va[0] * vb[0] + va[1] * vb[1] + va[2] * vb[2] + va[3] * vb[3];
+#endif
+    return c;
+}
+#endif
+
 #if defined(_MSC_VER)
 #pragma warning(disable: 4244 4267) // possible loss of data
 #endif
@@ -101,17 +154,45 @@ static_assert(sizeof(half) == sizeof(ggml_fp16_t), "wrong fp16 size");
     } while (0)
 #endif // CUDART_VERSION >= 11
 
-#ifdef GGML_CUDA_DMMV_F16
+#ifdef GGML_CUDA_F16
 typedef half dfloat; // dequantize float
 typedef half2 dfloat2;
 #else
 typedef float dfloat; // dequantize float
 typedef float2 dfloat2;
-#endif //GGML_CUDA_DMMV_F16
+#endif //GGML_CUDA_F16
+
+static __device__ __forceinline__ int get_int_from_int8(const int8_t * x8, const int & i32) {
+    const uint16_t * x16 = (uint16_t *) (x8 + sizeof(int) * i32); // assume at least 2 byte alignment
+
+    int x32 = 0;
+    x32 |= x16[0] <<  0;
+    x32 |= x16[1] << 16;
+
+    return x32;
+}
+
+static __device__ __forceinline__ int get_int_from_uint8(const uint8_t * x8, const int & i32) {
+    const uint16_t * x16 = (uint16_t *) (x8 + sizeof(int) * i32); // assume at least 2 byte alignment
+
+    int x32 = 0;
+    x32 |= x16[0] <<  0;
+    x32 |= x16[1] << 16;
+
+    return x32;
+}
+
+static __device__ __forceinline__ int get_int_from_int8_aligned(const int8_t * x8, const int & i32) {
+    return *((int *) (x8 + sizeof(int) * i32)); // assume at least 4 byte alignment
+}
+
+static __device__ __forceinline__ int get_int_from_uint8_aligned(const uint8_t * x8, const int & i32) {
+    return *((int *) (x8 + sizeof(int) * i32)); // assume at least 4 byte alignment
+}
 
 typedef void (*dequantize_kernel_t)(const void * vx, const int ib, const int iqs, dfloat2 & v);
-typedef void (*to_fp32_cuda_t)(const void * x, float * y, int k, cudaStream_t stream);
-typedef void (*dot_kernel_k_t)(const void * vx, const int ib, const int iqs, const float * y, float & v);
+typedef void (*to_fp32_cuda_t)(const void * __restrict__ x, float * __restrict__ y, int k, cudaStream_t stream);
+typedef void (*dot_kernel_k_t)(const void * __restrict__ vx, const int ib, const int iqs, const float * __restrict__ y, float & v);
 typedef void (*cpy_kernel_t)(const char * cx, char * cdst);
 typedef void (*ggml_cuda_func_t)(const ggml_tensor * src0, const ggml_tensor * src1, ggml_tensor * dst);
 typedef void (*ggml_cuda_op_t)(
@@ -121,9 +202,11 @@ typedef void (*ggml_cuda_op_t)(
 
 // QK = number of values after dequantization
 // QR = QK / number of values before dequantization
+// QI = number of 32 bit integers before dequantization
 
 #define QK4_0 32
 #define QR4_0 2
+#define QI4_0 (QK4_0 / (4 * QR4_0))
 typedef struct {
     half    d;              // delta
     uint8_t qs[QK4_0 / 2];  // nibbles / quants
@@ -132,15 +215,16 @@ static_assert(sizeof(block_q4_0) == sizeof(ggml_fp16_t) + QK4_0 / 2, "wrong q4_0
 
 #define QK4_1 32
 #define QR4_1 2
+#define QI4_1 (QK4_1 / (4 * QR4_1))
 typedef struct {
-    half    d;              // delta
-    half    m;              // min
+    half2   dm;             // dm.x = delta, dm.y = min
     uint8_t qs[QK4_1 / 2];  // nibbles / quants
 } block_q4_1;
 static_assert(sizeof(block_q4_1) == sizeof(ggml_fp16_t) * 2 + QK4_1 / 2, "wrong q4_1 block size/padding");
 
 #define QK5_0 32
 #define QR5_0 2
+#define QI5_0 (QK5_0 / (4 * QR5_0))
 typedef struct {
     half d;                 // delta
     uint8_t qh[4];          // 5-th bit of quants
@@ -150,9 +234,9 @@ static_assert(sizeof(block_q5_0) == sizeof(ggml_fp16_t) + sizeof(uint32_t) + QK5
 
 #define QK5_1 32
 #define QR5_1 2
+#define QI5_1 (QK5_1 / (4 * QR5_1))
 typedef struct {
-    half d;                 // delta
-    half m;                 // min
+    half2 dm;               // dm.x = delta, dm.y = min
     uint8_t qh[4];          // 5-th bit of quants
     uint8_t qs[QK5_1 / 2];  // nibbles / quants
 } block_q5_1;
@@ -160,12 +244,31 @@ static_assert(sizeof(block_q5_1) == 2 * sizeof(ggml_fp16_t) + sizeof(uint32_t) +
 
 #define QK8_0 32
 #define QR8_0 1
+#define QI8_0 (QK8_0 / (4 * QR8_0))
 typedef struct {
     half    d;              // delta
     int8_t  qs[QK8_0];      // quants
 } block_q8_0;
 static_assert(sizeof(block_q8_0) == sizeof(ggml_fp16_t) + QK8_0, "wrong q8_0 block size/padding");
 
+#define QK8_1 32
+#define QR8_1 1
+#define QI8_1 (QK8_1 / (4 * QR8_1))
+typedef struct {
+    half2   ds;             // ds.x = delta, ds.y = sum
+    int8_t  qs[QK8_0];      // quants
+} block_q8_1;
+static_assert(sizeof(block_q8_1) == 2*sizeof(ggml_fp16_t) + QK8_0, "wrong q8_1 block size/padding");
+
+typedef float (*vec_dot_q_cuda_t)(const void * __restrict__ vbq, const block_q8_1 * __restrict__ bq8_1, const int & iqs);
+typedef void (*allocate_tiles_cuda_t)(int ** x_ql, half2 ** x_dm, int ** x_qh, int ** x_sc);
+typedef void (*load_tiles_cuda_t)(
+    const void * __restrict__ vx, int * __restrict__ x_ql, half2 * __restrict__ x_dm, int * __restrict__ x_qh,
+    int * __restrict__ x_sc, const int & i_offset, const int & i_max, const int & k, const int & blocks_per_row);
+typedef float (*vec_dot_q_mul_mat_cuda_t)(
+    const int * __restrict__ x_ql, const half2 * __restrict__ x_dm, const int * __restrict__ x_qh, const int * __restrict__ x_sc,
+    const int * __restrict__ y_qs, const half2 * __restrict__ y_ms, const int & i, const int & j, const int & k);
+
 //================================= k-quants
 
 #ifdef GGML_QKK_64
@@ -176,14 +279,17 @@ static_assert(sizeof(block_q8_0) == sizeof(ggml_fp16_t) + QK8_0, "wrong q8_0 blo
 #define K_SCALE_SIZE 12
 #endif
 
+#define QR2_K 4
+#define QI2_K (QK_K / (4*QR2_K))
 typedef struct {
     uint8_t scales[QK_K/16]; // scales and mins, quantized with 4 bits
     uint8_t qs[QK_K/4];      // quants
-    half d;                  // super-block scale for quantized scales
-    half dmin;               // super-block scale for quantized mins
+    half2 dm;                // super-block scale for quantized scales/mins
 } block_q2_K;
 static_assert(sizeof(block_q2_K) == 2*sizeof(ggml_fp16_t) + QK_K/16 + QK_K/4, "wrong q2_K block size/padding");
 
+#define QR3_K 4
+#define QI3_K (QK_K / (4*QR3_K))
 typedef struct {
     uint8_t hmask[QK_K/8];     // quants - high bit
     uint8_t qs[QK_K/4];        // quants - low 2 bits
@@ -196,23 +302,26 @@ typedef struct {
 } block_q3_K;
 //static_assert(sizeof(block_q3_K) == sizeof(ggml_fp16_t) + QK_K / 4 + QK_K / 8 + K_SCALE_SIZE, "wrong q3_K block size/padding");
 
+#define QR4_K 2
+#define QI4_K (QK_K / (4*QR4_K))
 #ifdef GGML_QKK_64
 typedef struct {
-    half    d[2];              // super-block scales/mins
+    half    dm[2];             // super-block scales/mins
     uint8_t scales[2];         // 4-bit block scales/mins
     uint8_t qs[QK_K/2];        // 4--bit quants
 } block_q4_K;
-static_assert(sizeof(block_q4_K) == 2*sizeof(ggml_fp16_t) + QK_K/2 + 2, "wrong q4_K block size/padding");
+static_assert(sizeof(block_q4_K) == sizeof(half2) + QK_K/2 + 2, "wrong q4_K block size/padding");
 #else
 typedef struct {
-    half d;                    // super-block scale for quantized scales
-    half dmin;                 // super-block scale for quantized mins
+    half2 dm;                  // super-block scale for quantized scales/mins
     uint8_t scales[3*QK_K/64]; // scales, quantized with 6 bits
     uint8_t qs[QK_K/2];        // 4--bit quants
 } block_q4_K;
 static_assert(sizeof(block_q4_K) == 2*sizeof(ggml_fp16_t) + 3*QK_K/64 + QK_K/2, "wrong q4_K block size/padding");
 #endif
 
+#define QR5_K 2
+#define QI5_K (QK_K / (4*QR5_K))
 #ifdef GGML_QKK_64
 typedef struct {
     half d;                  // super-block scale
@@ -223,15 +332,16 @@ typedef struct {
 static_assert(sizeof(block_q5_K) == sizeof(ggml_fp16_t) + QK_K/2 + QK_K/8 + QK_K/16, "wrong q5_K block size/padding");
 #else
 typedef struct {
-    half d;               // super-block scale for quantized scales
-    half dmin;            // super-block scale for quantized mins
-    uint8_t scales[K_SCALE_SIZE];   // scales and mins, quantized with 6 bits
-    uint8_t qh[QK_K/8];          // quants, high bit
-    uint8_t qs[QK_K/2];          // quants, low 4 bits
+    half2 dm;                     // super-block scale for quantized scales/mins
+    uint8_t scales[K_SCALE_SIZE]; // scales and mins, quantized with 6 bits
+    uint8_t qh[QK_K/8];           // quants, high bit
+    uint8_t qs[QK_K/2];           // quants, low 4 bits
 } block_q5_K;
 static_assert(sizeof(block_q5_K) == 2*sizeof(ggml_fp16_t) + K_SCALE_SIZE + QK_K/2 + QK_K/8, "wrong q5_K block size/padding");
 #endif
 
+#define QR6_K 2
+#define QI6_K (QK_K / (4*QR6_K))
 typedef struct {
     uint8_t ql[QK_K/2];   // quants, lower 4 bits
     uint8_t qh[QK_K/4];   // quants, upper 2 bits
@@ -241,22 +351,26 @@ typedef struct {
 static_assert(sizeof(block_q6_K) == sizeof(ggml_fp16_t) + 13*QK_K/16, "wrong q6_K block size/padding");
 
 #define WARP_SIZE 32
+#define MATRIX_ROW_PADDING 512 // last row of quant. matrices is a multiple of this to avoid out-of-bounds memory accesses
 
 #define CUDA_ADD_BLOCK_SIZE 256
 #define CUDA_MUL_BLOCK_SIZE 256
+#define CUDA_GELU_BLOCK_SIZE 256
 #define CUDA_SILU_BLOCK_SIZE 256
 #define CUDA_CPY_BLOCK_SIZE 32
 #define CUDA_SCALE_BLOCK_SIZE 256
 #define CUDA_ROPE_BLOCK_SIZE 256
+#define CUDA_ALIBI_BLOCK_SIZE 32
 #define CUDA_DIAG_MASK_INF_BLOCK_SIZE 32
+#define CUDA_QUANTIZE_BLOCK_SIZE 256
 #define CUDA_DEQUANTIZE_BLOCK_SIZE 256
 
 // dmmv = dequantize_mul_mat_vec
 #ifndef GGML_CUDA_DMMV_X
 #define GGML_CUDA_DMMV_X 32
 #endif
-#ifndef GGML_CUDA_DMMV_Y
-#define GGML_CUDA_DMMV_Y 1
+#ifndef GGML_CUDA_MMV_Y
+#define GGML_CUDA_MMV_Y 1
 #endif
 
 #ifndef K_QUANTS_PER_ITERATION
@@ -270,13 +384,27 @@ struct ggml_tensor_extra_gpu {
     cudaEvent_t events[GGML_CUDA_MAX_DEVICES]; // events for synchronizing multiple GPUs
 };
 
-static __global__ void add_f32(const float * x, const float * y, float * dst, const int k) {
+static int g_device_count = -1;
+static int g_main_device = 0;
+static int g_compute_capabilities[GGML_CUDA_MAX_DEVICES];
+static float g_tensor_split[GGML_CUDA_MAX_DEVICES] = {0};
+static bool g_mul_mat_q = true;
+
+static void * g_scratch_buffer = nullptr;
+static size_t g_scratch_size = 1024*1024*1024; // 1 GB by default
+static size_t g_scratch_offset = 0;
+
+static cublasHandle_t g_cublas_handles[GGML_CUDA_MAX_DEVICES] = {nullptr};
+
+static cudaStream_t g_cudaStreams_main[GGML_CUDA_MAX_DEVICES] = { nullptr };
+
+static __global__ void add_f32(const float * x, const float * y, float * dst, const int kx, const int ky) {
     const int i = blockDim.x*blockIdx.x + threadIdx.x;
 
-    if (i >= k) {
+    if (i >= kx) {
         return;
     }
-    dst[i] = x[i] + y[i];
+    dst[i] = x[i] + y[i%ky];
 }
 
 static __global__ void add_f16_f32_f16(const half * x, const float * y, half * dst, const int k) {
@@ -297,6 +425,19 @@ static __global__ void mul_f32(const float * x, const float * y, float * dst, co
     dst[i] = x[i] * y[i%ky];
 }
 
+static __global__ void gelu_f32(const float * x, float * dst, const int k) {
+    const float GELU_COEF_A    = 0.044715f;
+    const float SQRT_2_OVER_PI = 0.79788456080286535587989211986876f;
+    const int i = blockDim.x*blockIdx.x + threadIdx.x;
+
+    if (i >= k) {
+        return;
+    }
+
+    float xi = x[i];
+    dst[i] = 0.5f*xi*(1.0f + tanhf(SQRT_2_OVER_PI*xi*(1.0f + GELU_COEF_A*xi*xi)));
+}
+
 static __global__ void silu_f32(const float * x, float * dst, const int k) {
     const int i = blockDim.x*blockIdx.x + threadIdx.x;
 
@@ -306,32 +447,58 @@ static __global__ void silu_f32(const float * x, float * dst, const int k) {
     dst[i] = x[i] / (1.0f + expf(-x[i]));
 }
 
-static __global__ void rms_norm_f32(const float * x, float * dst, const int ncols) {
+static __global__ void norm_f32(const float * x, float * dst, const int ncols) {
     const int row = blockIdx.x*blockDim.y + threadIdx.y;
     const int tid = threadIdx.x;
 
-    const float eps = 1e-6;
+    const float eps = 1e-5f;
+
+    float mean = 0.0f;
+    float var = 0.0f;
+
+    for (int col = tid; col < ncols; col += WARP_SIZE) {
+        const float xi = x[row*ncols + col];
+        mean += xi;
+        var += xi * xi;
+    }
+
+    // sum up partial sums
+#pragma unroll
+    for (int mask = 16; mask > 0; mask >>= 1) {
+        mean += __shfl_xor_sync(0xffffffff, mean, mask, 32);
+        var += __shfl_xor_sync(0xffffffff, var, mask, 32);
+    }
+
+    mean /= ncols;
+    var = var / ncols - mean * mean;
+    const float inv_var = rsqrtf(var + eps);
+
+    for (int col = tid; col < ncols; col += WARP_SIZE) {
+        dst[row*ncols + col] = (x[row*ncols + col] - mean) * inv_var;
+    }
+}
+
+static __global__ void rms_norm_f32(const float * x, float * dst, const int ncols, const float eps) {
+    const int row = blockIdx.x*blockDim.y + threadIdx.y;
+    const int tid = threadIdx.x;
 
     float tmp = 0.0f; // partial sum for thread in warp
 
-    for (int i = 0; i < ncols; i += WARP_SIZE) {
-        const int col = i + tid;
+    for (int col = tid; col < ncols; col += WARP_SIZE) {
         const float xi = x[row*ncols + col];
         tmp += xi * xi;
     }
 
     // sum up partial sums
-    __syncthreads();
 #pragma unroll
     for (int mask = 16; mask > 0; mask >>= 1) {
         tmp += __shfl_xor_sync(0xffffffff, tmp, mask, 32);
     }
 
     const float mean = tmp / ncols;
-    const float scale = 1.0f / sqrtf(mean + eps);
+    const float scale = rsqrtf(mean + eps);
 
-    for (int i = 0; i < ncols; i += WARP_SIZE) {
-        const int col = i + tid;
+    for (int col = tid; col < ncols; col += WARP_SIZE) {
         dst[row*ncols + col] = scale * x[row*ncols + col];
     }
 }
@@ -346,33 +513,33 @@ static __device__ __forceinline__ void dequantize_q4_0(const void * vx, const in
     v.x = vui & 0xF;
     v.y = vui >> 4;
 
-#ifdef GGML_CUDA_DMMV_F16
+#ifdef GGML_CUDA_F16
     v = __hsub2(v, {8.0f, 8.0f});
     v = __hmul2(v, {d, d});
 #else
     v.x = (v.x - 8.0f) * d;
     v.y = (v.y - 8.0f) * d;
-#endif // GGML_CUDA_DMMV_F16
+#endif // GGML_CUDA_F16
 }
 
 static __device__ __forceinline__ void dequantize_q4_1(const void * vx, const int ib, const int iqs, dfloat2 & v){
     const block_q4_1 * x = (const block_q4_1 *) vx;
 
-    const dfloat d = x[ib].d;
-    const dfloat m = x[ib].m;
+    const dfloat d = __low2half(x[ib].dm);
+    const dfloat m = __high2half(x[ib].dm);
 
     const int vui = x[ib].qs[iqs];
 
     v.x = vui & 0xF;
     v.y = vui >> 4;
 
-#ifdef GGML_CUDA_DMMV_F16
+#ifdef GGML_CUDA_F16
     v = __hmul2(v, {d, d});
     v = __hadd2(v, {m, m});
 #else
     v.x = (v.x * d) + m;
     v.y = (v.y * d) + m;
-#endif // GGML_CUDA_DMMV_F16
+#endif // GGML_CUDA_F16
 }
 
 static __device__ __forceinline__ void dequantize_q5_0(const void * vx, const int ib, const int iqs, dfloat2 & v){
@@ -389,20 +556,20 @@ static __device__ __forceinline__ void dequantize_q5_0(const void * vx, const in
     v.x = ((x[ib].qs[iqs] & 0xf) | xh_0);
     v.y = ((x[ib].qs[iqs] >>  4) | xh_1);
 
-#ifdef GGML_CUDA_DMMV_F16
+#ifdef GGML_CUDA_F16
     v = __hsub2(v, {16.0f, 16.0f});
     v = __hmul2(v, {d, d});
 #else
     v.x = (v.x - 16.0f) * d;
     v.y = (v.y - 16.0f) * d;
-#endif // GGML_CUDA_DMMV_F16
+#endif // GGML_CUDA_F16
 }
 
 static __device__ __forceinline__ void dequantize_q5_1(const void * vx, const int ib, const int iqs, dfloat2 & v){
     const block_q5_1 * x = (const block_q5_1 *) vx;
 
-    const dfloat d = x[ib].d;
-    const dfloat m = x[ib].m;
+    const dfloat d = __low2half(x[ib].dm);
+    const dfloat m = __high2half(x[ib].dm);
 
     uint32_t qh;
     memcpy(&qh, x[ib].qh, sizeof(qh));
@@ -413,13 +580,13 @@ static __device__ __forceinline__ void dequantize_q5_1(const void * vx, const in
     v.x = ((x[ib].qs[iqs] & 0xf) | xh_0);
     v.y = ((x[ib].qs[iqs] >>  4) | xh_1);
 
-#ifdef GGML_CUDA_DMMV_F16
+#ifdef GGML_CUDA_F16
     v = __hmul2(v, {d, d});
     v = __hadd2(v, {m, m});
 #else
     v.x = (v.x * d) + m;
     v.y = (v.y * d) + m;
-#endif // GGML_CUDA_DMMV_F16
+#endif // GGML_CUDA_F16
 }
 
 static __device__ __forceinline__ void dequantize_q8_0(const void * vx, const int ib, const int iqs, dfloat2 & v){
@@ -430,17 +597,17 @@ static __device__ __forceinline__ void dequantize_q8_0(const void * vx, const in
     v.x = x[ib].qs[iqs + 0];
     v.y = x[ib].qs[iqs + 1];
 
-#ifdef GGML_CUDA_DMMV_F16
+#ifdef GGML_CUDA_F16
     v = __hmul2(v, {d, d});
 #else
     v.x *= d;
     v.y *= d;
-#endif // GGML_CUDA_DMMV_F16
+#endif // GGML_CUDA_F16
 }
 
 //================================== k-quants
 
-static __global__ void dequantize_block_q2_K(const void * vx, float * yy) {
+static __global__ void dequantize_block_q2_K(const void * __restrict__ vx, float * __restrict__ yy) {
 
     const int i   = blockIdx.x;
     const block_q2_K * x = (const block_q2_K *) vx;
@@ -454,8 +621,8 @@ static __global__ void dequantize_block_q2_K(const void * vx, float * yy) {
     const uint8_t q = x[i].qs[32*n + l];
     float * y = yy + i*QK_K + 128*n;
 
-    float dall = x[i].d;
-    float dmin = x[i].dmin;
+    float dall = __low2half(x[i].dm);
+    float dmin = __high2half(x[i].dm);
     y[l+ 0] = dall * (x[i].scales[is+0] & 0xF) * ((q >> 0) & 3) - dmin * (x[i].scales[is+0] >> 4);
     y[l+32] = dall * (x[i].scales[is+2] & 0xF) * ((q >> 2) & 3) - dmin * (x[i].scales[is+2] >> 4);
     y[l+64] = dall * (x[i].scales[is+4] & 0xF) * ((q >> 4) & 3) - dmin * (x[i].scales[is+4] >> 4);
@@ -465,15 +632,15 @@ static __global__ void dequantize_block_q2_K(const void * vx, float * yy) {
     const int il = tid%16;  // 0...15
     const uint8_t q = x[i].qs[il] >> (2*is);
     float * y = yy + i*QK_K + 16*is + il;
-    float dall = x[i].d;
-    float dmin = x[i].dmin;
+    float dall = __low2half(x[i].dm);
+    float dmin = __high2half(x[i].dm);
     y[ 0] = dall * (x[i].scales[is+0] & 0xF) * ((q >> 0) & 3) - dmin * (x[i].scales[is+0] >> 4);
     y[32] = dall * (x[i].scales[is+2] & 0xF) * ((q >> 4) & 3) - dmin * (x[i].scales[is+2] >> 4);
 #endif
 
 }
 
-static __global__ void dequantize_block_q3_K(const void * vx, float * yy) {
+static __global__ void dequantize_block_q3_K(const void * __restrict__ vx, float * __restrict__ yy) {
 
     const int i = blockIdx.x;
     const block_q3_K * x = (const block_q3_K *) vx;
@@ -537,7 +704,7 @@ static inline __device__ void get_scale_min_k4(int j, const uint8_t * q, uint8_t
 }
 #endif
 
-static __global__ void dequantize_block_q4_K(const void * vx, float * yy) {
+static __global__ void dequantize_block_q4_K(const void * __restrict__ vx, float * __restrict__ yy) {
     const block_q4_K * x = (const block_q4_K *) vx;
 
     const int i = blockIdx.x;
@@ -552,8 +719,8 @@ static __global__ void dequantize_block_q4_K(const void * vx, float * yy) {
 
     float * y = yy + i*QK_K + 64*il + n*ir;
 
-    const float dall = x[i].d;
-    const float dmin = x[i].dmin;
+    const float dall = __low2half(x[i].dm);
+    const float dmin = __high2half(x[i].dm);
 
     const uint8_t * q = x[i].qs + 32*il + n*ir;
 
@@ -570,14 +737,14 @@ static __global__ void dequantize_block_q4_K(const void * vx, float * yy) {
     const int tid = threadIdx.x;
     const uint8_t * q = x[i].qs;
     float * y = yy + i*QK_K;
-    const float d = (float)x[i].d[0];
-    const float m = (float)x[i].d[1];
+    const float d = (float)x[i].dm[0];
+    const float m = (float)x[i].dm[1];
     y[tid+ 0] = d * (x[i].scales[0] & 0xF) * (q[tid] & 0xF) - m * (x[i].scales[0] >> 4);
     y[tid+32] = d * (x[i].scales[1] & 0xF) * (q[tid] >>  4) - m * (x[i].scales[1] >> 4);
 #endif
 }
 
-static __global__ void dequantize_block_q5_K(const void * vx, float * yy) {
+static __global__ void dequantize_block_q5_K(const void * __restrict__ vx, float * __restrict__ yy) {
     const block_q5_K * x = (const block_q5_K *) vx;
 
     const int i = blockIdx.x;
@@ -591,8 +758,8 @@ static __global__ void dequantize_block_q5_K(const void * vx, float * yy) {
 
     float * y = yy + i*QK_K + 64*il + 2*ir;
 
-    const float dall = x[i].d;
-    const float dmin = x[i].dmin;
+    const float dall = __low2half(x[i].dm);
+    const float dmin = __high2half(x[i].dm);
 
     const uint8_t * ql = x[i].qs + 32*il + 2*ir;
     const uint8_t * qh = x[i].qh + 2*ir;
@@ -623,7 +790,7 @@ static __global__ void dequantize_block_q5_K(const void * vx, float * yy) {
 #endif
 }
 
-static __global__ void dequantize_block_q6_K(const void * vx, float * yy) {
+static __global__ void dequantize_block_q6_K(const void * __restrict__ vx, float * __restrict__ yy) {
     const block_q6_K * x = (const block_q6_K *) vx;
 
     const int i = blockIdx.x;
@@ -667,7 +834,7 @@ static __global__ void dequantize_block_q6_K(const void * vx, float * yy) {
 #endif
 }
 
-static __global__ void dequantize_mul_mat_vec_q2_k(const void * vx, const float * yy, float * dst, const int ncols, int nrows) {
+static __global__ void dequantize_mul_mat_vec_q2_k(const void * __restrict__ vx, const float * __restrict__ yy, float * __restrict__ dst, const int ncols, int nrows) {
 
     static_assert(16%K_QUANTS_PER_ITERATION == 0, "16 must be divisible by K_QUANTS_PER_ITERATION");
 
@@ -704,8 +871,8 @@ static __global__ void dequantize_mul_mat_vec_q2_k(const void * vx, const float
         const float   * y = yy + i * QK_K + y_offset;
         const uint8_t * q = x[i].qs + q_offset;
 
-        const float dall = x[i].d;
-        const float dmin = x[i].dmin;
+        const float dall = __low2half(x[i].dm);
+        const float dmin = __high2half(x[i].dm);
 
         const uint32_t * a = (const uint32_t *)(x[i].scales + s_offset);
         aux[0] = a[0] & 0x0f0f0f0f;
@@ -747,9 +914,7 @@ static __global__ void dequantize_mul_mat_vec_q2_k(const void * vx, const float
         uaux[0] = s[0] & 0x0f0f0f0f;
         uaux[1] = (s[0] >> 4) & 0x0f0f0f0f;
 
-        const half2 * dh = (const half2 *)&x[i].d;
-
-        const float2 dall = __half22float2(dh[0]);
+        const float2 dall = __half22float2(x[i].dm);
 
         float sum1 = 0, sum2 = 0;
         for (int l = 0; l < K_QUANTS_PER_ITERATION; ++l) {
@@ -765,7 +930,6 @@ static __global__ void dequantize_mul_mat_vec_q2_k(const void * vx, const float
 #endif
 
     // sum up partial sums and write back result
-    __syncthreads();
 #pragma unroll
     for (int mask = 16; mask > 0; mask >>= 1) {
         tmp += __shfl_xor_sync(0xffffffff, tmp, mask, 32);
@@ -776,7 +940,7 @@ static __global__ void dequantize_mul_mat_vec_q2_k(const void * vx, const float
     }
 }
 
-static __global__ void dequantize_mul_mat_vec_q3_k(const void * vx, const float * yy, float * dst, const int ncols, int nrows) {
+static __global__ void dequantize_mul_mat_vec_q3_k(const void * __restrict__ vx, const float * __restrict__ yy, float * __restrict__ dst, const int ncols, int nrows) {
 
     const int row = blockIdx.y*blockDim.y + threadIdx.y;
     if (row > nrows) return;
@@ -870,7 +1034,6 @@ static __global__ void dequantize_mul_mat_vec_q3_k(const void * vx, const float
 #endif
 
     // sum up partial sums and write back result
-    __syncthreads();
 #pragma unroll
     for (int mask = 16; mask > 0; mask >>= 1) {
         tmp += __shfl_xor_sync(0xffffffff, tmp, mask, 32);
@@ -881,7 +1044,7 @@ static __global__ void dequantize_mul_mat_vec_q3_k(const void * vx, const float
     }
 }
 
-static __global__ void dequantize_mul_mat_vec_q4_k(const void * vx, const float * yy, float * dst, const int ncols, int nrows) {
+static __global__ void dequantize_mul_mat_vec_q4_k(const void * __restrict__ vx, const float * __restrict__ yy, float * __restrict__ dst, const int ncols, int nrows) {
 
     const int row = blockIdx.y*blockDim.y + threadIdx.y;
     if (row > nrows) return;
@@ -914,17 +1077,23 @@ static __global__ void dequantize_mul_mat_vec_q4_k(const void * vx, const float
     uint16_t aux[4];
     const uint8_t * sc = (const uint8_t *)aux;
 
+#if K_QUANTS_PER_ITERATION == 2
+    uint32_t q32[4];
+    const uint8_t * q4 = (const uint8_t *)q32;
+#else
+    uint16_t q16[4];
+    const uint8_t * q4 = (const uint8_t *)q16;
+#endif
+
     float tmp = 0; // partial sum for thread in warp
 
     for (int i = ix; i < num_blocks_per_row; i += K_QUANTS_PER_ITERATION) {
 
-        const uint8_t * q1 = x[i].qs + q_offset;
-        const uint8_t * q2 = q1 + 64;
         const float   * y1 = yy + i*QK_K + y_offset;
         const float   * y2 = y1 + 128;
 
-        const float dall = x[i].d;
-        const float dmin = x[i].dmin;
+        const float dall = __low2half(x[i].dm);
+        const float dmin = __high2half(x[i].dm);
 
         const uint16_t * a = (const uint16_t *)x[i].scales;
         aux[0] = a[im+0] & kmask1;
@@ -932,14 +1101,41 @@ static __global__ void dequantize_mul_mat_vec_q4_k(const void * vx, const float
         aux[2] = ((a[im+4] >> 0) & kmask2) | ((a[im+0] & kmask3) >> 2);
         aux[3] = ((a[im+4] >> 4) & kmask2) | ((a[im+2] & kmask3) >> 2);
 
+#if K_QUANTS_PER_ITERATION == 2
+        const uint32_t * q1 = (const uint32_t *)(x[i].qs + q_offset);
+        const uint32_t * q2 = q1 + 16;
+
+        q32[0] = q1[0] & 0x0f0f0f0f;
+        q32[1] = q1[0] & 0xf0f0f0f0;
+        q32[2] = q2[0] & 0x0f0f0f0f;
+        q32[3] = q2[0] & 0xf0f0f0f0;
+
         float4 s = {0.f, 0.f, 0.f, 0.f};
         float smin = 0;
-        for (int l = 0; l < n; ++l) {
-            s.x += y1[l] * (q1[l] & 0xF); s.y += y1[l+32] * (q1[l] >> 4);
-            s.z += y2[l] * (q2[l] & 0xF); s.w += y2[l+32] * (q2[l] >> 4);
+        for (int l = 0; l < 4; ++l) {
+            s.x += y1[l] * q4[l+0]; s.y += y1[l+32] * q4[l+ 4];
+            s.z += y2[l] * q4[l+8]; s.w += y2[l+32] * q4[l+12];
+            smin += y1[l] * sc[2] + y1[l+32] * sc[3] + y2[l] * sc[6] + y2[l+32] * sc[7];
+        }
+        tmp += dall * (s.x * sc[0] + s.y * sc[1] * 1.f/16.f + s.z * sc[4] + s.w * sc[5] * 1.f/16.f) - dmin * smin;
+#else
+        const uint16_t * q1 = (const uint16_t *)(x[i].qs + q_offset);
+        const uint16_t * q2 = q1 + 32;
+
+        q16[0] = q1[0] & 0x0f0f;
+        q16[1] = q1[0] & 0xf0f0;
+        q16[2] = q2[0] & 0x0f0f;
+        q16[3] = q2[0] & 0xf0f0;
+
+        float4 s = {0.f, 0.f, 0.f, 0.f};
+        float smin = 0;
+        for (int l = 0; l < 2; ++l) {
+            s.x += y1[l] * q4[l+0]; s.y += y1[l+32] * q4[l+2];
+            s.z += y2[l] * q4[l+4]; s.w += y2[l+32] * q4[l+6];
             smin += y1[l] * sc[2] + y1[l+32] * sc[3] + y2[l] * sc[6] + y2[l+32] * sc[7];
         }
-        tmp += dall * (s.x * sc[0] + s.y * sc[1] + s.z * sc[4] + s.w * sc[5]) - dmin * smin;
+        tmp += dall * (s.x * sc[0] + s.y * sc[1] * 1.f/16.f + s.z * sc[4] + s.w * sc[5] * 1.f/16.f) - dmin * smin;
+#endif
 
     }
 #else
@@ -959,8 +1155,8 @@ static __global__ void dequantize_mul_mat_vec_q4_k(const void * vx, const float
         const uint16_t * a = (const uint16_t *)x[i].scales;
         aux16[0] = a[0] & 0x0f0f;
         aux16[1] = (a[0] >> 4) & 0x0f0f;
-        const float d = (float)x[i].d[0];
-        const float m = (float)x[i].d[1];
+        const float d = (float)x[i].dm[0];
+        const float m = (float)x[i].dm[1];
         float sum = 0.f;
         for (int j = 0; j < K_QUANTS_PER_ITERATION; ++j) {
             sum += y[j+ 0] * (d * s[0] * (q[j+ 0] & 0xF) - m * s[2])
@@ -974,7 +1170,6 @@ static __global__ void dequantize_mul_mat_vec_q4_k(const void * vx, const float
 #endif
 
     // sum up partial sums and write back result
-    __syncthreads();
 #pragma unroll
     for (int mask = 16; mask > 0; mask >>= 1) {
         tmp += __shfl_xor_sync(0xffffffff, tmp, mask, 32);
@@ -985,7 +1180,7 @@ static __global__ void dequantize_mul_mat_vec_q4_k(const void * vx, const float
     }
 }
 
-static __global__ void dequantize_mul_mat_vec_q5_k(const void * vx, const float * yy, float * dst, const int ncols) {
+static __global__ void dequantize_mul_mat_vec_q5_k(const void * __restrict__ vx, const float * __restrict__ yy, float * __restrict__ dst, const int ncols) {
 
     const int row = blockIdx.x;
     const int num_blocks_per_row = ncols / QK_K;
@@ -1020,16 +1215,18 @@ static __global__ void dequantize_mul_mat_vec_q5_k(const void * vx, const float
     uint16_t aux[4];
     const uint8_t * sc = (const uint8_t *)aux;
 
+    uint16_t q16[8];
+    const uint8_t * q4 = (const uint8_t *)q16;
+
     for (int i = ix; i < num_blocks_per_row; i += 2) {
 
         const uint8_t * ql1 = x[i].qs + q_offset;
-        const uint8_t * ql2 = ql1 + 64;
         const uint8_t * qh  = x[i].qh + l0;
         const float   * y1  = yy + i*QK_K + y_offset;
         const float   * y2  = y1 + 128;
 
-        const float dall = x[i].d;
-        const float dmin = x[i].dmin;
+        const float dall = __low2half(x[i].dm);
+        const float dmin = __high2half(x[i].dm);
 
         const uint16_t * a = (const uint16_t *)x[i].scales;
         aux[0] = a[im+0] & kmask1;
@@ -1039,15 +1236,25 @@ static __global__ void dequantize_mul_mat_vec_q5_k(const void * vx, const float
 
         float4 sum = {0.f, 0.f, 0.f, 0.f};
         float smin = 0;
+        const uint16_t * q1 = (const uint16_t *)ql1;
+        const uint16_t * q2 = q1 + 32;
+        q16[0] = q1[0] & 0x0f0f;
+        q16[1] = q1[8] & 0x0f0f;
+        q16[2] = (q1[0] >> 4) & 0x0f0f;
+        q16[3] = (q1[8] >> 4) & 0x0f0f;
+        q16[4] = q2[0] & 0x0f0f;
+        q16[5] = q2[8] & 0x0f0f;
+        q16[6] = (q2[0] >> 4) & 0x0f0f;
+        q16[7] = (q2[8] >> 4) & 0x0f0f;
         for (int l = 0; l < n; ++l) {
-            sum.x += y1[l+ 0] * ((ql1[l+ 0] & 0xF) + (qh[l+ 0] & (hm1 << 0) ? 16 : 0))
-                   + y1[l+16] * ((ql1[l+16] & 0xF) + (qh[l+16] & (hm1 << 0) ? 16 : 0));
-            sum.y += y1[l+32] * ((ql1[l+ 0] >>  4) + (qh[l+ 0] & (hm1 << 1) ? 16 : 0))
-                   + y1[l+48] * ((ql1[l+16] >>  4) + (qh[l+16] & (hm1 << 1) ? 16 : 0));
-            sum.z += y2[l+ 0] * ((ql2[l+ 0] & 0xF) + (qh[l+ 0] & (hm2 << 0) ? 16 : 0))
-                   + y2[l+16] * ((ql2[l+16] & 0xF) + (qh[l+16] & (hm2 << 0) ? 16 : 0));
-            sum.w += y2[l+32] * ((ql2[l+ 0] >>  4) + (qh[l+ 0] & (hm2 << 1) ? 16 : 0))
-                   + y2[l+48] * ((ql2[l+16] >>  4) + (qh[l+16] & (hm2 << 1) ? 16 : 0));
+            sum.x += y1[l+ 0] * (q4[l +0] + (qh[l+ 0] & (hm1 << 0) ? 16 : 0))
+                   + y1[l+16] * (q4[l +2] + (qh[l+16] & (hm1 << 0) ? 16 : 0));
+            sum.y += y1[l+32] * (q4[l +4] + (qh[l+ 0] & (hm1 << 1) ? 16 : 0))
+                   + y1[l+48] * (q4[l +6] + (qh[l+16] & (hm1 << 1) ? 16 : 0));
+            sum.z += y2[l+ 0] * (q4[l +8] + (qh[l+ 0] & (hm2 << 0) ? 16 : 0))
+                   + y2[l+16] * (q4[l+10] + (qh[l+16] & (hm2 << 0) ? 16 : 0));
+            sum.w += y2[l+32] * (q4[l+12] + (qh[l+ 0] & (hm2 << 1) ? 16 : 0))
+                   + y2[l+48] * (q4[l+14] + (qh[l+16] & (hm2 << 1) ? 16 : 0));
             smin += (y1[l] + y1[l+16]) * sc[2] + (y1[l+32] + y1[l+48]) * sc[3]
                   + (y2[l] + y2[l+16]) * sc[6] + (y2[l+32] + y2[l+48]) * sc[7];
         }
@@ -1079,7 +1286,6 @@ static __global__ void dequantize_mul_mat_vec_q5_k(const void * vx, const float
 #endif
 
     // sum up partial sums and write back result
-    __syncthreads();
 #pragma unroll
     for (int mask = 16; mask > 0; mask >>= 1) {
         tmp += __shfl_xor_sync(0xffffffff, tmp, mask, 32);
@@ -1090,7 +1296,7 @@ static __global__ void dequantize_mul_mat_vec_q5_k(const void * vx, const float
     }
 }
 
-static __global__ void dequantize_mul_mat_vec_q6_k(const void * vx, const float * yy, float * dst, const int ncols, int nrows) {
+static __global__ void dequantize_mul_mat_vec_q6_k(const void * __restrict__ vx, const float * __restrict__ yy, float * __restrict__ dst, const int ncols, int nrows) {
 
     static_assert(16%K_QUANTS_PER_ITERATION == 0, "16 must be divisible by K_QUANTS_PER_ITERATION");
 
@@ -1190,7 +1396,6 @@ static __global__ void dequantize_mul_mat_vec_q6_k(const void * vx, const float
 #endif
 
     // sum up partial sums and write back result
-    __syncthreads();
 #pragma unroll
     for (int mask = 16; mask > 0; mask >>= 1) {
         tmp += __shfl_xor_sync(0xffffffff, tmp, mask, 32);
@@ -1209,8 +1414,47 @@ static __device__ void convert_f16(const void * vx, const int ib, const int iqs,
     v.y = x[ib + iqs + 1];
 }
 
+static __global__ void quantize_q8_1(const float * __restrict__ x, void * __restrict__ vy, const int kx, const int kx_padded) {
+    const int ix = blockDim.x*blockIdx.x + threadIdx.x;
+
+    if (ix >= kx_padded) {
+        return;
+    }
+
+    const int iy = blockDim.y*blockIdx.y + threadIdx.y;
+
+    const int i_padded = iy*kx_padded + ix;
+
+    block_q8_1 * y = (block_q8_1 *) vy;
+
+    const int ib = i_padded / QK8_1; // block index
+    const int iqs = i_padded % QK8_1; // quant index
+
+    const float xi = ix < kx ? x[iy*kx + ix] : 0.0f;
+    float amax = fabsf(xi);
+    float sum = xi;
+
+#pragma unroll
+    for (int mask = 16; mask > 0; mask >>= 1) {
+        amax = fmaxf(amax, __shfl_xor_sync(0xffffffff, amax, mask, 32));
+        sum += __shfl_xor_sync(0xffffffff, sum, mask, 32);
+    }
+
+    const float d = amax / 127;
+    const int8_t q = amax == 0.0f ? 0 : roundf(xi / d);
+
+    y[ib].qs[iqs] = q;
+
+    if (iqs > 0) {
+        return;
+    }
+
+    reinterpret_cast<half&>(y[ib].ds.x) = d;
+    reinterpret_cast<half&>(y[ib].ds.y) = sum;
+}
+
 template <int qk, int qr, dequantize_kernel_t dequantize_kernel>
-static __global__ void dequantize_block(const void * vx, float * y, const int k) {
+static __global__ void dequantize_block(const void * __restrict__ vx, float * __restrict__ y, const int k) {
     const int i = blockDim.x*blockIdx.x + 2*threadIdx.x;
 
     if (i >= k) {
@@ -1230,232 +1474,2628 @@ static __global__ void dequantize_block(const void * vx, float * y, const int k)
     y[iybs + iqs + y_offset] = v.y;
 }
 
-template <int qk, int qr, dequantize_kernel_t dequantize_kernel>
-static __global__ void dequantize_mul_mat_vec(const void * vx, const dfloat * y, float * dst, const int ncols, const int nrows) {
-    // qk = quantized weights per x block
-    // qr = number of quantized weights per data value in x block
-    const int row = blockIdx.y*blockDim.y + threadIdx.y;
+// VDR = vec dot ratio, how many contiguous integers each thread processes when the vec dot kernel is called
+// MMVQ = mul_mat_vec_q, MMQ = mul_mat_q
 
-    if (row >= nrows) {
-        return;
-    }
+#define VDR_Q4_0_Q8_1_MMVQ 2
+#define VDR_Q4_0_Q8_1_MMQ  4
 
-    const int tid = threadIdx.x;
+template <int vdr> static __device__ __forceinline__ float vec_dot_q4_0_q8_1_impl(
+    const int * v, const int * u, const float & d4, const half2 & ds8) {
 
-    const int iter_stride = 2*GGML_CUDA_DMMV_X;
-    const int vals_per_iter = iter_stride / WARP_SIZE; // num quantized vals per thread and i iter
-    const int y_offset = qr == 1 ? 1 : qk/2;
+#if __CUDA_ARCH__ >= MIN_CC_DP4A // lowest compute capability for integer intrinsics
+    int sumi = 0;
 
-// partial sum for each thread
-#ifdef GGML_CUDA_DMMV_F16
-    half2 tmp = {0.0f, 0.0f}; // two sums for f16 to take advantage of half2 intrinsics
+#pragma unroll
+    for (int i = 0; i < vdr; ++i) {
+        const int vi0 = (v[i] >> 0) & 0x0F0F0F0F;
+        const int vi1 = (v[i] >> 4) & 0x0F0F0F0F;
+
+        // SIMD dot product of quantized values
+        sumi = __dp4a(vi0, u[2*i+0], sumi);
+        sumi = __dp4a(vi1, u[2*i+1], sumi);
+    }
+
+    const float2 ds8f = __half22float2(ds8);
+
+    // second part effectively subtracts 8 from each quant value
+    return d4 * (sumi * ds8f.x - (8*vdr/QI4_0) * ds8f.y);
 #else
-    float tmp = 0.0f;
-#endif // GGML_CUDA_DMMV_F16
+    assert(false);
+    return 0.0f; // only to satisfy the compiler
+#endif // __CUDA_ARCH__ >= MIN_CC_DP4A
+}
 
-    for (int i = 0; i < ncols; i += iter_stride) {
-        const int col = i + vals_per_iter*tid;
-        const int ib = (row*ncols + col)/qk; // x block index
-        const int iqs = (col%qk)/qr; // x quant index
-        const int iybs = col - col%qk; // y block start index
+#define VDR_Q4_1_Q8_1_MMVQ 2
+#define VDR_Q4_1_Q8_1_MMQ  4
+
+template <int vdr> static __device__ __forceinline__ float vec_dot_q4_1_q8_1_impl(
+    const int * v, const int * u, const half2 & dm4, const half2 & ds8) {
+
+#if __CUDA_ARCH__ >= MIN_CC_DP4A // lowest compute capability for integer intrinsics
+    int sumi = 0;
 
-// processing >2 values per i iter is faster for fast GPUs
 #pragma unroll
-        for (int j = 0; j < vals_per_iter; j += 2) {
-            // process 2 vals per j iter
+    for (int i = 0; i < vdr; ++i) {
+        const int vi0 = (v[i] >> 0) & 0x0F0F0F0F;
+        const int vi1 = (v[i] >> 4) & 0x0F0F0F0F;
 
-            // dequantize
-            // for qr = 2 the iqs needs to increase by 1 per j iter because 2 weights per data val
-            dfloat2 v;
-            dequantize_kernel(vx, ib, iqs + j/qr, v);
+        // SIMD dot product of quantized values
+        sumi = __dp4a(vi0, u[2*i+0], sumi);
+        sumi = __dp4a(vi1, u[2*i+1], sumi);
+    }
 
-            // matrix multiplication
-            // for qr = 2 the y index needs to increase by 1 per j iter because of y_offset = qk/2
-#ifdef GGML_CUDA_DMMV_F16
-            tmp += __hmul2(v, {
-                y[iybs + iqs + j/qr + 0],
-                y[iybs + iqs + j/qr + y_offset]
-            });
+#ifdef GGML_CUDA_F16
+    const float2 tmp = __half22float2(__hmul2(dm4, ds8));
+    const float d4d8 = tmp.x;
+    const float m4s8 = tmp.y;
 #else
-            tmp += v.x * y[iybs + iqs + j/qr + 0];
-            tmp += v.y * y[iybs + iqs + j/qr + y_offset];
-#endif // GGML_CUDA_DMMV_F16
-        }
-    }
+    const float2 dm4f = __half22float2(dm4);
+    const float2 ds8f = __half22float2(ds8);
+    const float d4d8 = dm4f.x * ds8f.x;
+    const float m4s8 = dm4f.y * ds8f.y;
+#endif // GGML_CUDA_F16
+
+    // scale second part of sum by QI8_1/(vdr * QR4_1) to compensate for multiple threads adding it
+    return sumi * d4d8 + m4s8 / (QI8_1 / (vdr * QR4_1));
+#else
+    assert(false);
+    return 0.0f; // only to satisfy the compiler
+#endif // __CUDA_ARCH__ >= MIN_CC_DP4A
+}
+
+#define VDR_Q5_0_Q8_1_MMVQ 2
+#define VDR_Q5_0_Q8_1_MMQ  4
+
+template <int vdr> static __device__ __forceinline__ float vec_dot_q5_0_q8_1_impl(
+    const int * vl, const int * vh, const int * u, const float & d5, const half2 & ds8) {
+
+#if __CUDA_ARCH__ >= MIN_CC_DP4A // lowest compute capability for integer intrinsics
+    int sumi = 0;
 
-    // sum up partial sums and write back result
-    __syncthreads();
 #pragma unroll
-    for (int mask = 16; mask > 0; mask >>= 1) {
-        tmp += __shfl_xor_sync(0xffffffff, tmp, mask, 32);
+    for (int i = 0; i < vdr; ++i) {
+        int vi0 = (vl[i] >>  0) & 0x0F0F0F0F; // lower 4 qs bits, still need qh as 5th bits
+        vi0    |= (vh[i] <<  4) & 0x00000010; // 0 ->  4
+        vi0    |= (vh[i] << 11) & 0x00001000; // 1 -> 12
+        vi0    |= (vh[i] << 18) & 0x00100000; // 2 -> 20
+        vi0    |= (vh[i] << 25) & 0x10000000; // 3 -> 28
+        sumi = __dp4a(vi0, u[2*i+0], sumi); // SIMD dot product of quantized values
+
+        int vi1 = (vl[i] >>  4) & 0x0F0F0F0F; // upper 4 qs bits, still need qh as 5th bits
+        vi1    |= (vh[i] >> 12) & 0x00000010; // 16 ->  4
+        vi1    |= (vh[i] >>  5) & 0x00001000; // 17 -> 12
+        vi1    |= (vh[i] <<  2) & 0x00100000; // 18 -> 20
+        vi1    |= (vh[i] <<  9) & 0x10000000; // 19 -> 28
+        sumi = __dp4a(vi1, u[2*i+1], sumi); // SIMD dot product of quantized values
     }
 
-    if (tid == 0) {
-#ifdef GGML_CUDA_DMMV_F16
-        dst[row] = tmp.x + tmp.y;
+    const float2 ds8f = __half22float2(ds8);
+
+    // second part effectively subtracts 16 from each quant value
+    return d5 * (sumi * ds8f.x - (16*vdr/QI5_0) * ds8f.y);
 #else
-        dst[row] = tmp;
-#endif // GGML_CUDA_DMMV_F16
-    }
+    assert(false);
+    return 0.0f; // only to satisfy the compiler
+#endif // __CUDA_ARCH__ >= MIN_CC_DP4A
 }
 
-static __global__ void mul_mat_p021_f16_f32(const void * vx, const float * y, float * dst, const int ncols_x, const int nrows_x, const int nchannels_x) {
-    const half * x = (const half *) vx;
+#define VDR_Q5_1_Q8_1_MMVQ 2
+#define VDR_Q5_1_Q8_1_MMQ  4
 
-    const int row_x = blockDim.y*blockIdx.y + threadIdx.y;
-    const int channel = blockDim.z*blockIdx.z + threadIdx.z;
+template <int vdr> static __device__ __forceinline__ float vec_dot_q5_1_q8_1_impl(
+    const int * vl, const int * vh, const int * u, const half2 & dm5, const half2 & ds8) {
 
-    const int nrows_y = ncols_x;
-    const int nrows_dst = nrows_x;
-    const int row_dst = row_x;
+#if __CUDA_ARCH__ >= MIN_CC_DP4A // lowest compute capability for integer intrinsics
+    int sumi = 0;
 
-    float tmp = 0.0f;
+#pragma unroll
+    for (int i = 0; i < vdr; ++i) {
+        int vi0 = (vl[i] >>  0) & 0x0F0F0F0F; // lower 4 qs bits, still need qh as 5th bits
+        vi0    |= (vh[i] <<  4) & 0x00000010; // 0 ->  4
+        vi0    |= (vh[i] << 11) & 0x00001000; // 1 -> 12
+        vi0    |= (vh[i] << 18) & 0x00100000; // 2 -> 20
+        vi0    |= (vh[i] << 25) & 0x10000000; // 3 -> 28
+        sumi = __dp4a(vi0, u[2*i+0], sumi); // SIMD dot product of quantized values
+
+        int vi1 = (vl[i] >>  4) & 0x0F0F0F0F; // upper 4 qs bits, still need qh as 5th bits
+        vi1    |= (vh[i] >> 12) & 0x00000010; // 16 ->  4
+        vi1    |= (vh[i] >>  5) & 0x00001000; // 17 -> 12
+        vi1    |= (vh[i] <<  2) & 0x00100000; // 18 -> 20
+        vi1    |= (vh[i] <<  9) & 0x10000000; // 19 -> 28
+        sumi = __dp4a(vi1, u[2*i+1], sumi); // SIMD dot product of quantized values
+    }
 
-    for (int col_x0 = 0; col_x0 < ncols_x; col_x0 += blockDim.x) {
-        const int col_x = col_x0 + threadIdx.x;
+#ifdef GGML_CUDA_F16
+    const float2 tmp = __half22float2(__hmul2(dm5, ds8));
+    const float d5d8 = tmp.x;
+    const float m5s8 = tmp.y;
+#else
+    const float2 dm5f = __half22float2(dm5);
+    const float2 ds8f = __half22float2(ds8);
+    const float d5d8 = dm5f.x * ds8f.x;
+    const float m5s8 = dm5f.y * ds8f.y;
+#endif // GGML_CUDA_F16
 
-        if (col_x >= ncols_x) {
-            break;
-        }
+    // scale second part of sum by QI5_1 / vdr to compensate for multiple threads adding it
+    return sumi*d5d8 + m5s8 / (QI5_1 / vdr);
 
-        // x is transposed and permuted
-        const int ix = row_x*nchannels_x*ncols_x + channel*ncols_x + col_x;
-        const float xi = __half2float(x[ix]);
+#else
+    assert(false);
+    return 0.0f; // only to satisfy the compiler
+#endif // __CUDA_ARCH__ >= MIN_CC_DP4A
+}
 
-        const int row_y = col_x;
+#define VDR_Q8_0_Q8_1_MMVQ 2
+#define VDR_Q8_0_Q8_1_MMQ 8
 
+template <int vdr> static __device__ __forceinline__ float vec_dot_q8_0_q8_1_impl(
+    const int * v, const int * u, const float & d8_0, const float & d8_1) {
 
-        // y is not transposed but permuted
-        const int iy = channel*nrows_y + row_y;
+#if __CUDA_ARCH__ >= MIN_CC_DP4A // lowest compute capability for integer intrinsics
+    int sumi = 0;
 
-        tmp += xi * y[iy];
+#pragma unroll
+    for (int i = 0; i < vdr; ++i) {
+        // SIMD dot product of quantized values
+        sumi = __dp4a(v[i], u[i], sumi);
     }
 
-    // dst is not transposed and not permuted
-    const int idst = channel*nrows_dst + row_dst;
+    return d8_0*d8_1 * sumi;
+#else
+    assert(false);
+    return 0.0f; // only to satisfy the compiler
+#endif // __CUDA_ARCH__ >= MIN_CC_DP4A
+}
+
+template <int vdr> static __device__ __forceinline__ float vec_dot_q8_1_q8_1_impl(
+    const int * v, const int * u, const half2 & dm8, const half2 & ds8) {
+
+#if __CUDA_ARCH__ >= MIN_CC_DP4A // lowest compute capability for integer intrinsics
+    int sumi = 0;
 
-    // sum up partial sums and write back result
-    __syncthreads();
 #pragma unroll
-    for (int mask = 16; mask > 0; mask >>= 1) {
-        tmp += __shfl_xor_sync(0xffffffff, tmp, mask, 32);
+    for (int i = 0; i < vdr; ++i) {
+        // SIMD dot product of quantized values
+        sumi = __dp4a(v[i], u[i], sumi);
     }
 
-    if (threadIdx.x == 0) {
-        dst[idst] = tmp;
-    }
+#ifdef GGML_CUDA_F16
+    const float2 tmp = __half22float2(__hmul2(dm8, ds8));
+    const float d8d8 = tmp.x;
+    const float m8s8 = tmp.y;
+#else
+    const float2 dm8f = __half22float2(dm8);
+    const float2 ds8f = __half22float2(ds8);
+    const float d8d8 = dm8f.x * ds8f.x;
+    const float m8s8 = dm8f.y * ds8f.y;
+#endif // GGML_CUDA_F16
+
+    // scale second part of sum by QI8_1/ vdr to compensate for multiple threads adding it
+    return sumi*d8d8 + m8s8 / (QI8_1 / vdr);
+#else
+    assert(false);
+    return 0.0f; // only to satisfy the compiler
+#endif // __CUDA_ARCH__ >= MIN_CC_DP4A
 }
 
-static __global__ void mul_mat_vec_nc_f16_f32( // nc == non-contiguous
-    const void * vx, const float * y, float * dst, const int ncols_x, const int nrows_x,
-    const int row_stride_x, const int channel_stride_x) {
+#define VDR_Q2_K_Q8_1_MMVQ 1
+#define VDR_Q2_K_Q8_1_MMQ  2
 
-    const half * x = (const half *) vx;
+// contiguous v/x values
+static __device__ __forceinline__ float vec_dot_q2_K_q8_1_impl_mmvq(
+    const int & v, const int * __restrict__ u, const uint8_t * __restrict__ scales,
+    const half2 & dm2, const float * __restrict__ d8) {
 
-    const int row_x = blockDim.y*blockIdx.y + threadIdx.y;
-    const int channel = blockDim.z*blockIdx.z + threadIdx.z;
+#if __CUDA_ARCH__ >= MIN_CC_DP4A // lowest compute capability for integer intrinsics
+    float sumf_d = 0.0f;
+    float sumf_m = 0.0f;
 
-    const int nrows_y = ncols_x;
-    const int nrows_dst = nrows_x;
-    const int row_dst = row_x;
+#pragma unroll
+    for (int i = 0; i < QR2_K; ++i) {
+        const int sc = scales[2*i];
 
-    const int idst = channel*nrows_dst + row_dst;
+        const int vi = (v >> (2*i)) & 0x03030303;
 
-    float tmp = 0.0f;
+        sumf_d += d8[i] * (__dp4a(vi, u[i], 0) * (sc & 0xF)); // SIMD dot product
 
-    for (int col_x0 = 0; col_x0 < ncols_x; col_x0 += blockDim.x) {
-        const int col_x = col_x0 + threadIdx.x;
+        // fill int with 4x m
+        int m = sc >> 4;
+        m |= m <<  8;
+        m |= m << 16;
+        sumf_m += d8[i] * __dp4a(m, u[i], 0); // multiply constant q2_K part with sum of q8_1 values
+    }
 
-        if (col_x >= ncols_x) {
-            break;
-        }
+    const float2 dm2f = __half22float2(dm2);
 
-        const int ix = channel*channel_stride_x + row_x*row_stride_x + col_x;
-        const float xi = __half2float(x[ix]);
+    return dm2f.x*sumf_d - dm2f.y*sumf_m;
+#else
+    assert(false);
+    return 0.0f; // only to satisfy the compiler
+#endif // __CUDA_ARCH__ >= MIN_CC_DP4A
+}
 
-        const int row_y = col_x;
+// contiguous u/y values
+static __device__ __forceinline__ float vec_dot_q2_K_q8_1_impl_mmq(
+    const int * __restrict__ v, const int * __restrict__ u, const uint8_t * __restrict__ scales,
+    const half2 & dm2, const float & d8) {
 
-        const int iy = channel*nrows_y + row_y;
+#if __CUDA_ARCH__ >= MIN_CC_DP4A // lowest compute capability for integer intrinsics
+    int sumi_d = 0;
+    int sumi_m = 0;
 
-        tmp += xi * y[iy];
-    }
+#pragma unroll
+    for (int i0 = 0; i0 < QI8_1; i0 += QI8_1/2) {
+        int sumi_d_sc = 0;
+
+        const int sc = scales[i0 / (QI8_1/2)];
+
+        // fill int with 4x m
+        int m = sc >> 4;
+        m |= m <<  8;
+        m |= m << 16;
 
-    // sum up partial sums and write back result
-    __syncthreads();
 #pragma unroll
-    for (int mask = 16; mask > 0; mask >>= 1) {
-        tmp += __shfl_xor_sync(0xffffffff, tmp, mask, 32);
-    }
+        for (int i = i0; i < i0 + QI8_1/2; ++i) {
+            sumi_d_sc = __dp4a(v[i], u[i], sumi_d_sc); // SIMD dot product
+            sumi_m    = __dp4a(m,    u[i], sumi_m); // multiply sum of q8_1 values with m
+        }
 
-    if (threadIdx.x == 0) {
-        dst[idst] = tmp;
+        sumi_d += sumi_d_sc * (sc & 0xF);
     }
-}
 
-static __device__ void cpy_1_f32_f32(const char * cxi, char * cdsti) {
-    const float * xi = (const float *) cxi;
-    float * dsti = (float *) cdsti;
+    const float2 dm2f = __half22float2(dm2);
 
-    *dsti = *xi;
+    return d8 * (dm2f.x*sumi_d - dm2f.y*sumi_m);
+#else
+    assert(false);
+    return 0.0f; // only to satisfy the compiler
+#endif // __CUDA_ARCH__ >= MIN_CC_DP4A
 }
 
-static __device__ void cpy_1_f32_f16(const char * cxi, char * cdsti) {
-    const float * xi = (const float *) cxi;
-    half * dsti = (half *) cdsti;
+#define VDR_Q3_K_Q8_1_MMVQ 1
+#define VDR_Q3_K_Q8_1_MMQ  2
 
-    *dsti = __float2half(*xi);
-}
+// contiguous v/x values
+static __device__ __forceinline__ float vec_dot_q3_K_q8_1_impl_mmvq(
+    const int & vl, const int & vh, const int * __restrict__ u, const uint8_t * __restrict__ scales,
+    const int & scale_offset, const float & d3, const float * __restrict__ d8) {
 
-template <cpy_kernel_t cpy_1>
-static __global__ void cpy_f32_f16(const char * cx, char * cdst, const int ne,
-                                   const int ne00, const int ne01, const int nb00, const int nb01, const int nb02,
-                                   const int ne10, const int ne11, const int nb10, const int nb11, const int nb12) {
-    const int i = blockDim.x*blockIdx.x + threadIdx.x;
+#if __CUDA_ARCH__ >= MIN_CC_DP4A // lowest compute capability for integer intrinsics
+    float sumf = 0.0f;
 
-    if (i >= ne) {
-        return;
-    }
+#pragma unroll
+    for (int i = 0; i < QR3_K; ++i) {
+        const int isc = scale_offset + 2*i;
+
+        const int isc_low = isc % (QK_K/32);
+        const int sc_shift_low = 4 * (isc / (QK_K/32));
+        const int sc_low  = (scales[isc_low] >> sc_shift_low) & 0xF;
+
+        const int isc_high = isc % (QK_K/64);
+        const int sc_shift_high = 2 * (isc / (QK_K/64));
+        const int sc_high = ((scales[(QK_K/32) + isc_high] >> sc_shift_high) & 3) << 4;
+
+        const int sc = (sc_low | sc_high) - 32;
+
+        const int vil = (vl >> (2*i)) & 0x03030303;
+
+        const int vih = ((vh >> i) << 2) & 0x04040404;
+
+        const int vi = __vsubss4(vil, vih);
+
+        sumf += d8[i] * (__dp4a(vi, u[i], 0) * sc); // SIMD dot product
+    }
+
+    return d3 * sumf;
+#else
+    assert(false);
+    return 0.0f; // only to satisfy the compiler
+#endif // __CUDA_ARCH__ >= MIN_CC_DP4A
+}
+
+// contiguous u/y values
+static __device__ __forceinline__ float vec_dot_q3_K_q8_1_impl_mmq(
+    const int * __restrict__ v, const int * __restrict__ u, const int8_t * __restrict__ scales,
+    const float & d3, const float & d8) {
+
+#if __CUDA_ARCH__ >= MIN_CC_DP4A // lowest compute capability for integer intrinsics
+    int sumi = 0;
+
+#pragma unroll
+    for (int i0 = 0; i0 < QR3_K*VDR_Q3_K_Q8_1_MMQ; i0 += QI8_1/2) {
+        int sumi_sc = 0;
+
+        for (int i = i0; i < i0 + QI8_1/2; ++i) {
+            sumi_sc = __dp4a(v[i], u[i], sumi_sc); // SIMD dot product
+        }
+
+        sumi += sumi_sc * scales[i0 / (QI8_1/2)];
+    }
+
+    return d3*d8 * sumi;
+#else
+    assert(false);
+    return 0.0f; // only to satisfy the compiler
+#endif // __CUDA_ARCH__ >= MIN_CC_DP4A
+}
+
+#define VDR_Q4_K_Q8_1_MMVQ 2
+#define VDR_Q4_K_Q8_1_MMQ  8
+
+// contiguous v/x values
+static __device__ __forceinline__ float vec_dot_q4_K_q8_1_impl_vmmq(
+    const int * __restrict__ v, const int * __restrict__ u, const uint8_t * __restrict__ sc,
+    const uint8_t * __restrict__ m, const half2 & dm4, const float * __restrict__ d8) {
+
+#if __CUDA_ARCH__ >= MIN_CC_DP4A // lowest compute capability for integer intrinsics
+    float sumf_d = 0.0f;
+    float sumf_m = 0.0f;
+
+#pragma unroll
+    for (int i = 0; i < QR4_K; ++i) {
+        const int v0i = (v[0] >> (4*i)) & 0x0F0F0F0F;
+        const int v1i = (v[1] >> (4*i)) & 0x0F0F0F0F;
+
+        const int dot1 = __dp4a(v1i, u[2*i+1], __dp4a(v0i, u[2*i+0], 0)); // SIMD dot product
+        const int dot2 = __dp4a(0x01010101, u[2*i+1], __dp4a(0x01010101, u[2*i+0], 0)); // sum of u
+
+        sumf_d += d8[i] * (dot1 * sc[i]);
+        sumf_m += d8[i] * (dot2 * m[i]);  // multiply constant part of q4_K with sum of q8_1 values
+    }
+
+    const float2 dm4f = __half22float2(dm4);
+
+    return dm4f.x*sumf_d - dm4f.y*sumf_m;
+
+#else
+    assert(false);
+    return 0.0f; // only to satisfy the compiler
+#endif // __CUDA_ARCH__ >= MIN_CC_DP4A
+}
+
+// contiguous u/y values
+static __device__ __forceinline__ float vec_dot_q4_K_q8_1_impl_mmq(
+    const int * __restrict__ v, const int * __restrict__ u, const uint8_t * __restrict__ sc,
+    const uint8_t * __restrict__ m, const half2 & dm4, const half2 * __restrict__ ds8) {
+
+#if __CUDA_ARCH__ >= MIN_CC_DP4A // lowest compute capability for integer intrinsics
+    float sumf_d = 0.0f;
+    float sumf_m = 0.0f;
+
+#pragma unroll
+    for (int i = 0; i < QR4_K*VDR_Q4_K_Q8_1_MMQ/QI8_1; ++i) {
+        int sumi_d = 0;
+
+#pragma unroll
+        for (int j = 0; j < QI8_1; ++j) {
+            sumi_d = __dp4a((v[j] >> (4*i)) & 0x0F0F0F0F, u[i*QI8_1 + j], sumi_d); // SIMD dot product
+        }
+
+        const float2 ds8f = __half22float2(ds8[i]);
+
+        sumf_d += ds8f.x * (sc[i] * sumi_d);
+        sumf_m += ds8f.y *   m[i]; // sum of q8_1 block * q4_K min val
+    }
+
+    const float2 dm4f = __half22float2(dm4);
+
+    return dm4f.x*sumf_d - dm4f.y*sumf_m;
+
+#else
+    assert(false);
+    return 0.0f; // only to satisfy the compiler
+#endif // __CUDA_ARCH__ >= MIN_CC_DP4A
+}
+
+#define VDR_Q5_K_Q8_1_MMVQ 2
+#define VDR_Q5_K_Q8_1_MMQ  8
+
+// contiguous v/x values
+static __device__ __forceinline__ float vec_dot_q5_K_q8_1_impl_vmmq(
+    const int * __restrict__ vl, const int * __restrict__ vh, const int * __restrict__ u, const uint8_t * __restrict__ sc,
+    const uint8_t * __restrict__ m, const half2 & dm5, const float * __restrict__ d8) {
+
+#if __CUDA_ARCH__ >= MIN_CC_DP4A // lowest compute capability for integer intrinsics
+    float sumf_d = 0.0f;
+    float sumf_m = 0.0f;
+
+#pragma unroll
+    for (int i = 0; i < QR5_K; ++i) {
+        const int vl0i = (vl[0] >> (4*i)) & 0x0F0F0F0F;
+        const int vl1i = (vl[1] >> (4*i)) & 0x0F0F0F0F;
+
+        const int vh0i = ((vh[0] >> i) << 4) & 0x10101010;
+        const int vh1i = ((vh[1] >> i) << 4) & 0x10101010;
+
+        const int v0i = vl0i | vh0i;
+        const int v1i = vl1i | vh1i;
+
+        const int dot1 = __dp4a(v0i, u[2*i+0], __dp4a(v1i, u[2*i+1], 0)); // SIMD dot product
+        const int dot2 = __dp4a(0x01010101, u[2*i+0], __dp4a(0x01010101, u[2*i+1], 0)); // sum of u
+
+        sumf_d += d8[i] * (dot1 * sc[i]);
+        sumf_m += d8[i] * (dot2 * m[i]);
+
+    }
+
+    const float2 dm5f = __half22float2(dm5);
+
+    return dm5f.x*sumf_d - dm5f.y*sumf_m;
+
+#else
+    assert(false);
+    return 0.0f; // only to satisfy the compiler
+#endif // __CUDA_ARCH__ >= MIN_CC_DP4A
+}
+
+// contiguous u/y values
+static __device__ __forceinline__ float vec_dot_q5_K_q8_1_impl_mmq(
+    const int * __restrict__ v, const int * __restrict__ u, const uint8_t * __restrict__ sc,
+    const uint8_t * __restrict__ m, const half2 & dm4, const half2 * __restrict__ ds8) {
+
+#if __CUDA_ARCH__ >= MIN_CC_DP4A // lowest compute capability for integer intrinsics
+    float sumf_d = 0.0f;
+    float sumf_m = 0.0f;
+
+#pragma unroll
+    for (int i = 0; i < QR5_K*VDR_Q5_K_Q8_1_MMQ/QI8_1; ++i) {
+        int sumi_d = 0;
+
+#pragma unroll
+        for (int j = 0; j < QI8_1; ++j) {
+            sumi_d = __dp4a(v[i*QI8_1 + j], u[i*QI8_1 + j], sumi_d); // SIMD dot product
+        }
+
+        const float2 ds8f = __half22float2(ds8[i]);
+
+        sumf_d += ds8f.x * (sc[i] * sumi_d);
+        sumf_m += ds8f.y *   m[i]; // sum of q8_1 block * q4_K min val
+    }
+
+    const float2 dm4f = __half22float2(dm4);
+
+    return dm4f.x*sumf_d - dm4f.y*sumf_m;
+
+#else
+    assert(false);
+    return 0.0f; // only to satisfy the compiler
+#endif // __CUDA_ARCH__ >= MIN_CC_DP4A
+}
+
+#define VDR_Q6_K_Q8_1_MMVQ 1
+#define VDR_Q6_K_Q8_1_MMQ  8
+
+// contiguous v/x values
+static __device__ __forceinline__ float vec_dot_q6_K_q8_1_impl_mmvq(
+    const int & vl, const int & vh, const int * __restrict__ u, const int8_t * __restrict__ scales,
+    const float & d, const float * __restrict__ d8) {
+
+#if __CUDA_ARCH__ >= MIN_CC_DP4A // lowest compute capability for integer intrinsics
+    float sumf = 0.0f;
+
+#pragma unroll
+    for (int i = 0; i < QR6_K; ++i) {
+        const int sc = scales[4*i];
+
+        const int vil = (vl >> (4*i)) & 0x0F0F0F0F;
+
+        const int vih = ((vh >> (4*i)) << 4) & 0x30303030;
+
+        const int vi = __vsubss4((vil | vih), 0x20202020); // vi = (vil | vih) - 32
+
+        sumf += d8[i] * (__dp4a(vi, u[i], 0) * sc); // SIMD dot product
+    }
+
+    return d*sumf;
+#else
+    assert(false);
+    return 0.0f; // only to satisfy the compiler
+#endif // __CUDA_ARCH__ >= MIN_CC_DP4A
+}
+
+// contiguous u/y values
+static __device__ __forceinline__ float vec_dot_q6_K_q8_1_impl_mmq(
+    const int * __restrict__ v, const int * __restrict__ u, const int8_t * __restrict__ sc,
+    const float & d6, const float * __restrict__ d8) {
+
+#if __CUDA_ARCH__ >= MIN_CC_DP4A // lowest compute capability for integer intrinsics
+    float sumf_d = 0.0f;
+
+#pragma unroll
+    for (int i0 = 0; i0 < VDR_Q6_K_Q8_1_MMQ; i0 += 4) {
+        int2 sumi_d = {0, 0}; // 2 q6_K scales per q8_1 scale
+
+#pragma unroll
+        for (int i = i0; i < i0 + 2; ++i) {
+            sumi_d.x = __dp4a(v[2*i+0], u[2*i+0], sumi_d.x); // SIMD dot product
+            sumi_d.x = __dp4a(v[2*i+1], u[2*i+1], sumi_d.x); // SIMD dot product
+
+            sumi_d.y = __dp4a(v[2*i+4], u[2*i+4], sumi_d.y); // SIMD dot product
+            sumi_d.y = __dp4a(v[2*i+5], u[2*i+5], sumi_d.y); // SIMD dot product
+        }
+
+        sumf_d += d8[i0/4] * (sc[i0/2+0]*sumi_d.x + sc[i0/2+1]*sumi_d.y);
+    }
+
+    return d6 * sumf_d;
+
+#else
+    assert(false);
+    return 0.0f; // only to satisfy the compiler
+#endif // __CUDA_ARCH__ >= MIN_CC_DP4A
+}
+
+static __device__ __forceinline__ float vec_dot_q4_0_q8_1(
+    const void * __restrict__ vbq, const block_q8_1 * __restrict__ bq8_1, const int & iqs) {
+
+    const block_q4_0 * bq4_0 = (const block_q4_0 *) vbq;
+
+    int v[VDR_Q4_0_Q8_1_MMVQ];
+    int u[2*VDR_Q4_0_Q8_1_MMVQ];
+
+#pragma unroll
+    for (int i = 0; i < VDR_Q4_0_Q8_1_MMVQ; ++i) {
+        v[i]     = get_int_from_uint8(bq4_0->qs, iqs + i);
+        u[2*i+0] = get_int_from_int8_aligned(bq8_1->qs, iqs + i);
+        u[2*i+1] = get_int_from_int8_aligned(bq8_1->qs, iqs + i + QI4_0);
+    }
+
+    return vec_dot_q4_0_q8_1_impl<VDR_Q4_0_Q8_1_MMVQ>(v, u, bq4_0->d, bq8_1->ds);
+}
+
+template <int mmq_y> static __device__ __forceinline__ void allocate_tiles_q4_0(int ** x_ql, half2 ** x_dm, int ** x_qh, int ** x_sc) {
+
+    __shared__ int  tile_x_qs[mmq_y * (WARP_SIZE)       + mmq_y];
+    __shared__ float tile_x_d[mmq_y * (WARP_SIZE/QI4_0) + mmq_y/QI4_0];
+
+    *x_ql = tile_x_qs;
+    *x_dm = (half2 *) tile_x_d;
+}
+
+template <int mmq_y, int nwarps, bool need_check> static __device__ __forceinline__ void load_tiles_q4_0(
+    const void * __restrict__ vx, int * __restrict__ x_ql, half2 * __restrict__ x_dm, int * __restrict__ x_qh,
+    int * __restrict__ x_sc, const int & i_offset, const int & i_max, const int & k, const int & blocks_per_row) {
+
+    __builtin_assume(i_offset >= 0);
+    __builtin_assume(i_offset <  nwarps);
+    __builtin_assume(k >= 0);
+    __builtin_assume(k <  WARP_SIZE);
+
+    const int kbx  = k / QI4_0;
+    const int kqsx = k % QI4_0;
+
+    const block_q4_0 * bx0 = (block_q4_0 *) vx;
+
+    float * x_dmf = (float *) x_dm;
+
+#pragma unroll
+    for (int i0 = 0; i0 < mmq_y; i0 += nwarps) {
+        int i = i0 + i_offset;
+
+        if (need_check) {
+            i = min(i, i_max);
+        }
+
+        const block_q4_0 * bxi = bx0 + i*blocks_per_row + kbx;
+
+        x_ql[i * (WARP_SIZE + 1) + k] = get_int_from_uint8(bxi->qs, kqsx);
+        // x_dmf[i * (WARP_SIZE/QI4_0) + i / QI4_0 + kbx] = bxi->d;
+    }
+
+    const int blocks_per_tile_x_row = WARP_SIZE / QI4_0;
+    const int kbxd = k % blocks_per_tile_x_row;
+
+#pragma unroll
+    for (int i0 = 0; i0 < mmq_y; i0 += nwarps * QI4_0) {
+        int i = i0 + i_offset * QI4_0 + k / blocks_per_tile_x_row;
+
+        if (need_check) {
+            i = min(i, i_max);
+        }
+
+        const block_q4_0 * bxi = bx0 + i*blocks_per_row + kbxd;
+
+        x_dmf[i * (WARP_SIZE/QI4_0) + i / QI4_0 + kbxd] = bxi->d;
+    }
+}
+
+static __device__ __forceinline__ float vec_dot_q4_0_q8_1_mul_mat(
+    const int * __restrict__ x_ql, const half2 * __restrict__ x_dm, const int * __restrict__ x_qh, const int * __restrict__ x_sc,
+    const int * __restrict__ y_qs, const half2 * __restrict__ y_ds, const int & i, const int & j, const int & k) {
+
+    const int kyqs = k % (QI8_1/2) + QI8_1 * (k / (QI8_1/2));
+    const float * x_dmf = (float *) x_dm;
+
+    int u[2*VDR_Q4_0_Q8_1_MMQ];
+
+#pragma unroll
+    for (int l = 0; l < VDR_Q4_0_Q8_1_MMQ; ++l) {
+        u[2*l+0] = y_qs[j * WARP_SIZE + (kyqs + l)         % WARP_SIZE];
+        u[2*l+1] = y_qs[j * WARP_SIZE + (kyqs + l + QI4_0) % WARP_SIZE];
+    }
+
+    return vec_dot_q4_0_q8_1_impl<VDR_Q4_0_Q8_1_MMQ>
+        (&x_ql[i * (WARP_SIZE + 1) + k], u, x_dmf[i * (WARP_SIZE/QI4_0) + i/QI4_0 + k/QI4_0],
+         y_ds[j * (WARP_SIZE/QI8_1) + (2*k/QI8_1) % (WARP_SIZE/QI8_1)]);
+}
+
+static __device__ __forceinline__ float vec_dot_q4_1_q8_1(
+    const void * __restrict__ vbq, const block_q8_1 * __restrict__ bq8_1, const int & iqs) {
+
+    const block_q4_1 * bq4_1 = (const block_q4_1 *) vbq;
+
+    int v[VDR_Q4_1_Q8_1_MMVQ];
+    int u[2*VDR_Q4_1_Q8_1_MMVQ];
+
+#pragma unroll
+    for (int i = 0; i < VDR_Q4_1_Q8_1_MMVQ; ++i) {
+        v[i]    = get_int_from_uint8_aligned(bq4_1->qs, iqs + i);
+        u[2*i+0] = get_int_from_int8_aligned(bq8_1->qs, iqs + i);
+        u[2*i+1] = get_int_from_int8_aligned(bq8_1->qs, iqs + i + QI4_1);
+    }
+
+    return vec_dot_q4_1_q8_1_impl<VDR_Q4_1_Q8_1_MMVQ>(v, u, bq4_1->dm, bq8_1->ds);
+}
+
+template <int mmq_y> static __device__ __forceinline__ void allocate_tiles_q4_1(int ** x_ql, half2 ** x_dm, int ** x_qh, int ** x_sc) {
+
+    __shared__ int   tile_x_qs[mmq_y * (WARP_SIZE) +     + mmq_y];
+    __shared__ half2 tile_x_dm[mmq_y * (WARP_SIZE/QI4_1) + mmq_y/QI4_1];
+
+    *x_ql = tile_x_qs;
+    *x_dm = tile_x_dm;
+}
+
+template <int mmq_y, int nwarps, bool need_check> static __device__ __forceinline__ void load_tiles_q4_1(
+    const void * __restrict__ vx, int * __restrict__ x_ql, half2 * __restrict__ x_dm, int * __restrict__ x_qh,
+    int * __restrict__ x_sc, const int & i_offset, const int & i_max, const int & k, const int & blocks_per_row) {
+
+    __builtin_assume(i_offset >= 0);
+    __builtin_assume(i_offset <  nwarps);
+    __builtin_assume(k >= 0);
+    __builtin_assume(k <  WARP_SIZE);
+
+    const int kbx  = k / QI4_1;
+    const int kqsx = k % QI4_1;
+
+    const block_q4_1 * bx0 = (block_q4_1 *) vx;
+
+#pragma unroll
+    for (int i0 = 0; i0 < mmq_y; i0 += nwarps) {
+        int i = i0 + i_offset;
+
+        if (need_check) {
+            i = min(i, i_max);
+        }
+
+        const block_q4_1 * bxi = bx0 + i*blocks_per_row + kbx;
+
+        x_ql[i * (WARP_SIZE + 1) + k] = get_int_from_uint8_aligned(bxi->qs, kqsx);
+    }
+
+    const int blocks_per_tile_x_row = WARP_SIZE / QI4_1;
+    const int kbxd = k % blocks_per_tile_x_row;
+
+#pragma unroll
+    for (int i0 = 0; i0 < mmq_y; i0 += nwarps * QI4_1) {
+        int i = i0 + i_offset * QI4_1 + k / blocks_per_tile_x_row;
+
+        if (need_check) {
+            i = min(i, i_max);
+        }
+
+        const block_q4_1 * bxi = bx0 + i*blocks_per_row + kbxd;
+
+        x_dm[i * (WARP_SIZE/QI4_1) + i / QI4_1 + kbxd] = bxi->dm;
+    }
+}
+
+static __device__ __forceinline__ float vec_dot_q4_1_q8_1_mul_mat(
+    const int * __restrict__ x_ql, const half2 * __restrict__ x_dm, const int * __restrict__ x_qh, const int * __restrict__ x_sc,
+    const int * __restrict__ y_qs, const half2 * __restrict__ y_ds, const int & i, const int & j, const int & k) {
+
+    const int kyqs = k % (QI8_1/2) + QI8_1 * (k / (QI8_1/2));
+
+    int u[2*VDR_Q4_1_Q8_1_MMQ];
+
+#pragma unroll
+    for (int l = 0; l < VDR_Q4_1_Q8_1_MMQ; ++l) {
+        u[2*l+0] = y_qs[j * WARP_SIZE + (kyqs + l)         % WARP_SIZE];
+        u[2*l+1] = y_qs[j * WARP_SIZE + (kyqs + l + QI4_1) % WARP_SIZE];
+    }
+
+    return vec_dot_q4_1_q8_1_impl<VDR_Q4_1_Q8_1_MMQ>
+        (&x_ql[i * (WARP_SIZE + 1) + k], u, x_dm[i * (WARP_SIZE/QI4_1) + i/QI4_1 + k/QI4_1],
+         y_ds[j * (WARP_SIZE/QI8_1) + (2*k/QI8_1) % (WARP_SIZE/QI8_1)]);
+}
+
+static __device__ __forceinline__ float vec_dot_q5_0_q8_1(
+    const void * __restrict__ vbq, const block_q8_1 * __restrict__ bq8_1, const int & iqs) {
+
+    const block_q5_0 * bq5_0 = (const block_q5_0 *) vbq;
+
+    int vl[VDR_Q5_0_Q8_1_MMVQ];
+    int vh[VDR_Q5_0_Q8_1_MMVQ];
+    int  u[2*VDR_Q5_0_Q8_1_MMVQ];
+
+#pragma unroll
+    for (int i = 0; i < VDR_Q5_0_Q8_1_MMVQ; ++i) {
+        vl[i]    = get_int_from_uint8(bq5_0->qs, iqs + i);
+        vh[i]    = get_int_from_uint8(bq5_0->qh, 0) >> (4 * (iqs + i));
+        u[2*i+0] = get_int_from_int8_aligned(bq8_1->qs, iqs + i);
+        u[2*i+1] = get_int_from_int8_aligned(bq8_1->qs, iqs + i + QI5_0);
+    }
+
+    return vec_dot_q5_0_q8_1_impl<VDR_Q5_0_Q8_1_MMVQ>(vl, vh, u, bq5_0->d, bq8_1->ds);
+}
+
+template <int mmq_y> static __device__ __forceinline__ void allocate_tiles_q5_0(int ** x_ql, half2 ** x_dm, int ** x_qh, int ** x_sc) {
+
+    __shared__ int  tile_x_ql[mmq_y * (2*WARP_SIZE)     + mmq_y];
+    __shared__ float tile_x_d[mmq_y * (WARP_SIZE/QI5_0) + mmq_y/QI5_0];
+
+    *x_ql = tile_x_ql;
+    *x_dm = (half2 *) tile_x_d;
+}
+
+template <int mmq_y, int nwarps, bool need_check> static __device__ __forceinline__ void load_tiles_q5_0(
+    const void * __restrict__ vx, int * __restrict__ x_ql, half2 * __restrict__ x_dm, int * __restrict__ x_qh,
+    int * __restrict__ x_sc, const int & i_offset, const int & i_max, const int & k, const int & blocks_per_row) {
+
+    __builtin_assume(i_offset >= 0);
+    __builtin_assume(i_offset <  nwarps);
+    __builtin_assume(k >= 0);
+    __builtin_assume(k <  WARP_SIZE);
+
+    const int kbx  = k / QI5_0;
+    const int kqsx = k % QI5_0;
+
+    const block_q5_0 * bx0 = (block_q5_0 *) vx;
+
+#pragma unroll
+    for (int i0 = 0; i0 < mmq_y; i0 += nwarps) {
+        int i = i0 + i_offset;
+
+        if (need_check) {
+            i = min(i, i_max);
+        }
+
+        const block_q5_0 * bxi = bx0 + i*blocks_per_row + kbx;
+
+        const int ql = get_int_from_uint8(bxi->qs, kqsx);
+        const int qh = get_int_from_uint8(bxi->qh, 0) >> (4 * (k % QI5_0));
+
+        int qs0 = (ql >>  0)   & 0x0F0F0F0F;
+        qs0    |= (qh <<  4)   & 0x00000010;  // 0 ->  4
+        qs0    |= (qh << 11)   & 0x00001000;  // 1 -> 12
+        qs0    |= (qh << 18)   & 0x00100000;  // 2 -> 20
+        qs0    |= (qh << 25)   & 0x10000000;  // 3 -> 28
+        qs0     = __vsubss4(qs0, 0x10101010); // subtract 16
+
+        x_ql[i * (2*WARP_SIZE + 1) + 2*k+0] = qs0;
+
+        int qs1 = (ql >>  4)   & 0x0F0F0F0F;
+        qs1    |= (qh >> 12)   & 0x00000010;  // 16 ->  4
+        qs1    |= (qh >>  5)   & 0x00001000;  // 17 -> 12
+        qs1    |= (qh <<  2)   & 0x00100000;  // 18 -> 20
+        qs1    |= (qh <<  9)   & 0x10000000;  // 19 -> 28
+        qs1     = __vsubss4(qs1, 0x10101010); // subtract 16
+
+        x_ql[i * (2*WARP_SIZE + 1) + 2*k+1] = qs1;
+    }
+
+    const int blocks_per_tile_x_row = WARP_SIZE / QI5_0;
+    const int kbxd = k % blocks_per_tile_x_row;
+    float * x_dmf = (float *) x_dm;
+
+#pragma unroll
+    for (int i0 = 0; i0 < mmq_y; i0 += nwarps * QI5_0) {
+        int i = i0 + i_offset * QI5_0 + k / blocks_per_tile_x_row;
+
+        if (need_check) {
+            i = min(i, i_max);
+        }
+
+        const block_q5_0 * bxi = bx0 + i*blocks_per_row + kbxd;
+
+        x_dmf[i * (WARP_SIZE/QI5_0) + i / QI5_0 + kbxd] = bxi->d;
+    }
+}
+
+static __device__ __forceinline__ float vec_dot_q5_0_q8_1_mul_mat(
+    const int * __restrict__ x_ql, const half2 * __restrict__ x_dm, const int * __restrict__ x_qh, const int * __restrict__ x_sc,
+    const int * __restrict__ y_qs, const half2 * __restrict__ y_ds, const int & i, const int & j, const int & k) {
+
+    const int kyqs = k % (QI8_1/2) + QI8_1 * (k / (QI8_1/2));
+    const int index_bx = i * (WARP_SIZE/QI5_0) + i/QI5_0 + k/QI5_0;
+    const float * x_dmf = (const float *) x_dm;
+    const float * y_df  = (const float *) y_ds;
+
+    int u[2*VDR_Q5_0_Q8_1_MMQ];
+
+#pragma unroll
+    for (int l = 0; l < VDR_Q5_0_Q8_1_MMQ; ++l) {
+        u[2*l+0] = y_qs[j * WARP_SIZE + (kyqs + l)         % WARP_SIZE];
+        u[2*l+1] = y_qs[j * WARP_SIZE + (kyqs + l + QI5_0) % WARP_SIZE];
+    }
+
+    return vec_dot_q8_0_q8_1_impl<QR5_0*VDR_Q5_0_Q8_1_MMQ>
+        (&x_ql[i * (2*WARP_SIZE + 1) + 2 * k], u, x_dmf[index_bx], y_df[j * (WARP_SIZE/QI8_1) + (2*k/QI8_1) % (WARP_SIZE/QI8_1)]);
+}
+
+static __device__ __forceinline__ float vec_dot_q5_1_q8_1(
+    const void * __restrict__ vbq, const block_q8_1 * __restrict__ bq8_1, const int & iqs) {
+
+    const block_q5_1 * bq5_1 = (const block_q5_1 *) vbq;
+
+    int vl[VDR_Q5_1_Q8_1_MMVQ];
+    int vh[VDR_Q5_1_Q8_1_MMVQ];
+    int  u[2*VDR_Q5_1_Q8_1_MMVQ];
+
+#pragma unroll
+    for (int i = 0; i < VDR_Q5_1_Q8_1_MMVQ; ++i) {
+        vl[i]   = get_int_from_uint8_aligned(bq5_1->qs, iqs + i);
+        vh[i]   = get_int_from_uint8_aligned(bq5_1->qh, 0) >> (4 * (iqs + i));
+        u[2*i+0] = get_int_from_int8_aligned(bq8_1->qs, iqs + i);
+        u[2*i+1] = get_int_from_int8_aligned(bq8_1->qs, iqs + i + QI5_1);
+    }
+
+    return vec_dot_q5_1_q8_1_impl<VDR_Q5_1_Q8_1_MMVQ>(vl, vh, u, bq5_1->dm, bq8_1->ds);
+}
+
+template <int mmq_y> static __device__ __forceinline__ void allocate_tiles_q5_1(int ** x_ql, half2 ** x_dm, int ** x_qh, int ** x_sc) {
+
+    __shared__ int   tile_x_ql[mmq_y * (2*WARP_SIZE)     + mmq_y];
+    __shared__ half2 tile_x_dm[mmq_y * (WARP_SIZE/QI5_1) + mmq_y/QI5_1];
+
+    *x_ql = tile_x_ql;
+    *x_dm = tile_x_dm;
+}
+
+template <int mmq_y, int nwarps, bool need_check> static __device__ __forceinline__ void load_tiles_q5_1(
+    const void * __restrict__ vx, int * __restrict__ x_ql, half2 * __restrict__ x_dm, int * __restrict__ x_qh,
+    int * __restrict__ x_sc, const int & i_offset, const int & i_max, const int & k, const int & blocks_per_row) {
+
+    __builtin_assume(i_offset >= 0);
+    __builtin_assume(i_offset < nwarps);
+    __builtin_assume(k >= 0);
+    __builtin_assume(k <  WARP_SIZE);
+
+    const int kbx  = k / QI5_1;
+    const int kqsx = k % QI5_1;
+
+    const block_q5_1 * bx0 = (block_q5_1 *) vx;
+
+#pragma unroll
+    for (int i0 = 0; i0 < mmq_y; i0 += nwarps) {
+        int i = i0 + i_offset;
+
+        if (need_check) {
+            i = min(i, i_max);
+        }
+
+        const block_q5_1 * bxi = bx0 + i*blocks_per_row + kbx;
+
+        const int ql = get_int_from_uint8_aligned(bxi->qs, kqsx);
+        const int qh = get_int_from_uint8_aligned(bxi->qh, 0) >> (4 * (k % QI5_1));
+
+        int qs0 = (ql >>  0) & 0x0F0F0F0F;
+        qs0    |= (qh <<  4) & 0x00000010; // 0 ->  4
+        qs0    |= (qh << 11) & 0x00001000; // 1 -> 12
+        qs0    |= (qh << 18) & 0x00100000; // 2 -> 20
+        qs0    |= (qh << 25) & 0x10000000; // 3 -> 28
+
+        x_ql[i * (2*WARP_SIZE + 1) + 2*k+0] = qs0;
+
+        int qs1 = (ql >>  4) & 0x0F0F0F0F;
+        qs1    |= (qh >> 12) & 0x00000010; // 16 ->  4
+        qs1    |= (qh >>  5) & 0x00001000; // 17 -> 12
+        qs1    |= (qh <<  2) & 0x00100000; // 18 -> 20
+        qs1    |= (qh <<  9) & 0x10000000; // 19 -> 28
+
+        x_ql[i * (2*WARP_SIZE + 1) + 2*k+1] = qs1;
+    }
+
+    const int blocks_per_tile_x_row = WARP_SIZE / QI5_1;
+    const int kbxd = k % blocks_per_tile_x_row;
+
+#pragma unroll
+    for (int i0 = 0; i0 < mmq_y; i0 += nwarps * QI5_1) {
+        int i = i0 + i_offset * QI5_1 + k / blocks_per_tile_x_row;
+
+        if (need_check) {
+            i = min(i, i_max);
+        }
+
+        const block_q5_1 * bxi = bx0 + i*blocks_per_row + kbxd;
+
+        x_dm[i * (WARP_SIZE/QI5_1) + i / QI5_1 + kbxd] = bxi->dm;
+    }
+}
+
+static __device__ __forceinline__ float vec_dot_q5_1_q8_1_mul_mat(
+    const int * __restrict__ x_ql, const half2 * __restrict__ x_dm, const int * __restrict__ x_qh, const int * __restrict__ x_sc,
+    const int * __restrict__ y_qs, const half2 * __restrict__ y_ds, const int & i, const int & j, const int & k) {
+
+    const int kyqs = k % (QI8_1/2) + QI8_1 * (k / (QI8_1/2));
+    const int index_bx = i * (WARP_SIZE/QI5_1) + + i/QI5_1 + k/QI5_1;
+
+    int u[2*VDR_Q5_1_Q8_1_MMQ];
+
+#pragma unroll
+    for (int l = 0; l < VDR_Q5_1_Q8_1_MMQ; ++l) {
+        u[2*l+0] = y_qs[j * WARP_SIZE + (kyqs + l)         % WARP_SIZE];
+        u[2*l+1] = y_qs[j * WARP_SIZE + (kyqs + l + QI5_1) % WARP_SIZE];
+    }
+
+    return vec_dot_q8_1_q8_1_impl<QR5_1*VDR_Q5_1_Q8_1_MMQ>
+        (&x_ql[i * (2*WARP_SIZE + 1) + 2 * k], u, x_dm[index_bx], y_ds[j * (WARP_SIZE/QI8_1) + (2*k/QI8_1) % (WARP_SIZE/QI8_1)]);
+}
+
+static __device__ __forceinline__ float vec_dot_q8_0_q8_1(
+    const void * __restrict__ vbq, const block_q8_1 * __restrict__ bq8_1, const int & iqs) {
+
+    const block_q8_0 * bq8_0 = (const block_q8_0 *) vbq;
+
+    int v[VDR_Q8_0_Q8_1_MMVQ];
+    int u[VDR_Q8_0_Q8_1_MMVQ];
+
+#pragma unroll
+    for (int i = 0; i < VDR_Q8_0_Q8_1_MMVQ; ++i) {
+        v[i] = get_int_from_int8(bq8_0->qs, iqs + i);
+        u[i] = get_int_from_int8_aligned(bq8_1->qs, iqs + i);
+    }
+
+    return vec_dot_q8_0_q8_1_impl<VDR_Q8_0_Q8_1_MMVQ>(v, u, bq8_0->d, __low2half(bq8_1->ds));
+}
+
+template <int mmq_y> static __device__ __forceinline__ void allocate_tiles_q8_0(int ** x_ql, half2 ** x_dm, int ** x_qh, int ** x_sc) {
+
+    __shared__ int  tile_x_qs[mmq_y * (WARP_SIZE)       + mmq_y];
+    __shared__ float tile_x_d[mmq_y * (WARP_SIZE/QI8_0) + mmq_y/QI8_0];
+
+    *x_ql = tile_x_qs;
+    *x_dm = (half2 *) tile_x_d;
+}
+
+template <int mmq_y, int nwarps, bool need_check> static __device__ __forceinline__ void load_tiles_q8_0(
+    const void * __restrict__ vx, int * __restrict__ x_ql, half2 * __restrict__ x_dm, int * __restrict__ x_qh,
+    int * __restrict__ x_sc, const int & i_offset, const int & i_max, const int & k, const int & blocks_per_row) {
+
+    __builtin_assume(i_offset >= 0);
+    __builtin_assume(i_offset <  nwarps);
+    __builtin_assume(k >= 0);
+    __builtin_assume(k <  WARP_SIZE);
+
+    const int kbx  = k / QI8_0;
+    const int kqsx = k % QI8_0;
+    float * x_dmf = (float *) x_dm;
+
+    const block_q8_0 * bx0 = (block_q8_0 *) vx;
+
+#pragma unroll
+    for (int i0 = 0; i0 < mmq_y; i0 += nwarps) {
+        int i = i0 + i_offset;
+
+        if (need_check) {
+            i = min(i, i_max);
+        }
+
+        const block_q8_0 * bxi = bx0 + i*blocks_per_row + kbx;
+
+        x_ql[i * (WARP_SIZE + 1) + k] = get_int_from_int8(bxi->qs, kqsx);
+    }
+
+    const int blocks_per_tile_x_row = WARP_SIZE / QI8_0;
+    const int kbxd = k % blocks_per_tile_x_row;
+
+#pragma unroll
+    for (int i0 = 0; i0 < mmq_y; i0 += nwarps * QI8_0) {
+        int i = i0 + i_offset * QI8_0 + k / blocks_per_tile_x_row;
+
+        if (need_check) {
+            i = min(i, i_max);
+        }
+
+        const block_q8_0 * bxi = bx0 + i*blocks_per_row + kbxd;
+
+        x_dmf[i * (WARP_SIZE/QI8_0) + i / QI8_0 + kbxd] = bxi->d;
+    }
+}
+
+static __device__ __forceinline__ float vec_dot_q8_0_q8_1_mul_mat(
+    const int * __restrict__ x_ql, const half2 * __restrict__ x_dm, const int * __restrict__ x_qh, const int * __restrict__ x_sc,
+    const int * __restrict__ y_qs, const half2 * __restrict__ y_ds, const int & i, const int & j, const int & k) {
+
+    const float * x_dmf = (const float *) x_dm;
+    const float * y_df  = (const float *) y_ds;
+
+    return vec_dot_q8_0_q8_1_impl<VDR_Q8_0_Q8_1_MMQ>
+        (&x_ql[i * (WARP_SIZE + 1) + k], &y_qs[j * WARP_SIZE + k], x_dmf[i * (WARP_SIZE/QI8_0) + i/QI8_0 + k/QI8_0],
+         y_df[j * (WARP_SIZE/QI8_1) + k/QI8_1]);
+}
+
+static __device__ __forceinline__ float vec_dot_q2_K_q8_1(
+    const void * __restrict__ vbq, const block_q8_1 * __restrict__ bq8_1, const int & iqs) {
+
+    const block_q2_K * bq2_K = (const block_q2_K *) vbq;
+
+    const int bq8_offset = QR2_K * (iqs / QI8_1);
+    const int scale_offset = iqs - iqs % QI8_1 + (iqs % QI8_1) / (QI8_1/2);
+
+    const uint8_t * scales = bq2_K->scales + scale_offset;
+
+    const int v = get_int_from_uint8_aligned(bq2_K->qs, iqs);
+    int    u[QR2_K];
+    float d8[QR2_K];
+
+#pragma unroll
+    for (int i = 0; i < QR2_K; ++ i) {
+        u[i]  = get_int_from_int8_aligned(bq8_1[bq8_offset + i].qs, iqs % QI8_1);
+        d8[i] = __low2half(bq8_1[bq8_offset + i].ds);
+    }
+
+    return vec_dot_q2_K_q8_1_impl_mmvq(v, u, scales, bq2_K->dm, d8);
+}
+
+template <int mmq_y> static __device__ __forceinline__ void allocate_tiles_q2_K(int ** x_ql, half2 ** x_dm, int ** x_qh, int ** x_sc) {
+
+    __shared__ int   tile_x_ql[mmq_y * (WARP_SIZE)       + mmq_y];
+    __shared__ half2 tile_x_dm[mmq_y * (WARP_SIZE/QI2_K) + mmq_y/QI2_K];
+    __shared__ int   tile_x_sc[mmq_y * (WARP_SIZE/4)     + mmq_y/4];
+
+    *x_ql = tile_x_ql;
+    *x_dm = tile_x_dm;
+    *x_sc = tile_x_sc;
+}
+
+template <int mmq_y, int nwarps, bool need_check> static __device__ __forceinline__ void load_tiles_q2_K(
+    const void * __restrict__ vx, int * __restrict__ x_ql, half2 * __restrict__ x_dm, int * __restrict__ x_qh,
+    int * __restrict__ x_sc, const int & i_offset, const int & i_max, const int & k, const int & blocks_per_row) {
+
+    __builtin_assume(i_offset >= 0);
+    __builtin_assume(i_offset <  nwarps);
+    __builtin_assume(k >= 0);
+    __builtin_assume(k <  WARP_SIZE);
+
+    const int kbx  = k / QI2_K;
+    const int kqsx = k % QI2_K;
+
+    const block_q2_K * bx0 = (block_q2_K *) vx;
+
+#pragma unroll
+    for (int i0 = 0; i0 < mmq_y; i0 += nwarps) {
+        int i = i0 + i_offset;
+
+        if (need_check) {
+            i = min(i, i_max);
+        }
+
+        const block_q2_K * bxi = bx0 + i*blocks_per_row + kbx;
+
+        x_ql[i * (WARP_SIZE + 1) + k] = get_int_from_uint8_aligned(bxi->qs, kqsx);
+    }
+
+    const int blocks_per_tile_x_row = WARP_SIZE / QI2_K;
+    const int kbxd = k % blocks_per_tile_x_row;
+
+#pragma unroll
+    for (int i0 = 0; i0 < mmq_y; i0 += nwarps * QI2_K) {
+        int i = (i0 + i_offset * QI2_K + k / blocks_per_tile_x_row) % mmq_y;
+
+        if (need_check) {
+            i = min(i, i_max);
+        }
+
+        const block_q2_K * bxi = bx0 + i*blocks_per_row + kbxd;
+
+        x_dm[i * (WARP_SIZE/QI2_K) + i / QI2_K + kbxd] = bxi->dm;
+    }
+
+#pragma unroll
+    for (int i0 = 0; i0 < mmq_y; i0 += nwarps * 4) {
+        int i = i0 + i_offset * 4 + k / (WARP_SIZE/4);
+
+        if (need_check) {
+            i = min(i, i_max);
+        }
+
+        const block_q2_K * bxi = bx0 + i*blocks_per_row + (k % (WARP_SIZE/4)) / (QI2_K/4);
+
+        x_sc[i * (WARP_SIZE/4) + i / 4 + k % (WARP_SIZE/4)] = get_int_from_uint8_aligned(bxi->scales, k % (QI2_K/4));
+    }
+}
+
+static __device__ __forceinline__ float vec_dot_q2_K_q8_1_mul_mat(
+    const int * __restrict__ x_ql, const half2 * __restrict__ x_dm, const int * __restrict__ x_qh, const int * __restrict__ x_sc,
+    const int * __restrict__ y_qs, const half2 * __restrict__ y_ds, const int & i, const int & j, const int & k) {
+
+    const int kbx = k / QI2_K;
+    const int ky  = (k % QI2_K) * QR2_K;
+    const float * y_df = (const float *) y_ds;
+
+    int v[QR2_K*VDR_Q2_K_Q8_1_MMQ];
+
+    const int kqsx = i * (WARP_SIZE + 1) + kbx*QI2_K + (QI2_K/2) * (ky/(2*QI2_K)) + ky % (QI2_K/2);
+    const int shift = 2 * ((ky % (2*QI2_K)) / (QI2_K/2));
+
+#pragma unroll
+    for (int l = 0; l < QR2_K*VDR_Q2_K_Q8_1_MMQ; ++l) {
+        v[l] = (x_ql[kqsx + l] >> shift) & 0x03030303;
+    }
+
+    const uint8_t * scales = ((const uint8_t *) &x_sc[i * (WARP_SIZE/4) + i/4 + kbx*4]) + ky/4;
+
+    const int index_y = j * WARP_SIZE + (QR2_K*k) % WARP_SIZE;
+    return vec_dot_q2_K_q8_1_impl_mmq(v, &y_qs[index_y], scales, x_dm[i * (WARP_SIZE/QI2_K) + i/QI2_K + kbx], y_df[index_y/QI8_1]);
+}
+
+static __device__ __forceinline__ float vec_dot_q3_K_q8_1(
+    const void * __restrict__ vbq, const block_q8_1 * __restrict__ bq8_1, const int & iqs) {
+
+    const block_q3_K * bq3_K = (const block_q3_K *) vbq;
+
+    const int bq8_offset = QR3_K * (iqs / (QI3_K/2));
+    const int scale_offset = iqs - iqs % QI8_1 + (iqs % QI8_1) / (QI8_1/2);
+
+    const float d = bq3_K->d;
+
+    const int vl = get_int_from_uint8(bq3_K->qs, iqs);
+
+    // invert the mask with ~ so that a 0/1 results in 4/0 being subtracted
+    const int vh = ~get_int_from_uint8(bq3_K->hmask, iqs % (QI3_K/2)) >> bq8_offset;
+
+    int    u[QR3_K];
+    float d8[QR3_K];
+
+#pragma unroll
+    for (int i = 0; i < QR3_K; ++i) {
+        u[i]  = get_int_from_int8_aligned(bq8_1[bq8_offset + i].qs, iqs % QI8_1);
+        d8[i] = __low2half(bq8_1[bq8_offset + i].ds);
+    }
+
+    return vec_dot_q3_K_q8_1_impl_mmvq(vl, vh, u, bq3_K->scales, scale_offset, d, d8);
+}
+
+template <int mmq_y> static __device__ __forceinline__ void allocate_tiles_q3_K(int ** x_ql, half2 ** x_dm, int ** x_qh, int ** x_sc) {
+
+    __shared__ int   tile_x_ql[mmq_y * (WARP_SIZE)       + mmq_y];
+    __shared__ half2 tile_x_dm[mmq_y * (WARP_SIZE/QI3_K) + mmq_y/QI3_K];
+    __shared__ int   tile_x_qh[mmq_y * (WARP_SIZE/2)     + mmq_y/2];
+    __shared__ int   tile_x_sc[mmq_y * (WARP_SIZE/4)     + mmq_y/4];
+
+    *x_ql = tile_x_ql;
+    *x_dm = tile_x_dm;
+    *x_qh = tile_x_qh;
+    *x_sc = tile_x_sc;
+}
+
+template <int mmq_y, int nwarps, bool need_check> static __device__ __forceinline__ void load_tiles_q3_K(
+    const void * __restrict__ vx, int * __restrict__ x_ql, half2 * __restrict__ x_dm, int * __restrict__ x_qh,
+    int * __restrict__ x_sc, const int & i_offset, const int & i_max, const int & k, const int & blocks_per_row) {
+
+    __builtin_assume(i_offset >= 0);
+    __builtin_assume(i_offset <  nwarps);
+    __builtin_assume(k >= 0);
+    __builtin_assume(k <  WARP_SIZE);
+
+    const int kbx  = k / QI3_K;
+    const int kqsx = k % QI3_K;
+
+    const block_q3_K * bx0 = (block_q3_K *) vx;
+
+#pragma unroll
+    for (int i0 = 0; i0 < mmq_y; i0 += nwarps) {
+        int i = i0 + i_offset;
+
+        if (need_check) {
+            i = min(i, i_max);
+        }
+
+        const block_q3_K * bxi = bx0 + i*blocks_per_row + kbx;
+
+        x_ql[i * (WARP_SIZE + 1) + k] = get_int_from_uint8(bxi->qs, kqsx);
+    }
+
+    const int blocks_per_tile_x_row = WARP_SIZE / QI3_K;
+    const int kbxd = k % blocks_per_tile_x_row;
+    float * x_dmf = (float *) x_dm;
+
+#pragma unroll
+    for (int i0 = 0; i0 < mmq_y; i0 += nwarps * QI3_K) {
+        int i = (i0 + i_offset * QI3_K + k / blocks_per_tile_x_row) % mmq_y;
+
+        if (need_check) {
+            i = min(i, i_max);
+        }
+
+        const block_q3_K * bxi = bx0 + i*blocks_per_row + kbxd;
+
+        x_dmf[i * (WARP_SIZE/QI3_K) + i / QI3_K + kbxd] = bxi->d;
+    }
+
+#pragma unroll
+    for (int i0 = 0; i0 < mmq_y; i0 += nwarps * 2) {
+        int i = i0 + i_offset * 2 + k / (WARP_SIZE/2);
+
+        if (need_check) {
+            i = min(i, i_max);
+        }
+
+        const block_q3_K * bxi = bx0 + i*blocks_per_row + (k % (WARP_SIZE/2)) / (QI3_K/2);
+
+        // invert the mask with ~ so that a 0/1 results in 4/0 being subtracted
+        x_qh[i * (WARP_SIZE/2) + i / 2 + k % (WARP_SIZE/2)] = ~get_int_from_uint8(bxi->hmask, k % (QI3_K/2));
+    }
+
+#pragma unroll
+    for (int i0 = 0; i0 < mmq_y; i0 += nwarps * 4) {
+        int i = i0 + i_offset * 4 + k / (WARP_SIZE/4);
+
+        if (need_check) {
+            i = min(i, i_max);
+        }
+
+        const block_q3_K * bxi = bx0 + i*blocks_per_row + (k % (WARP_SIZE/4)) / (QI3_K/4);
+
+        const int ksc = k % (QI3_K/4);
+
+        const int ksc_low = ksc % (QI3_K/8);
+        const int shift_low = 4 * (ksc / (QI3_K/8));
+        const int sc_low = (get_int_from_uint8(bxi->scales, ksc_low) >> shift_low) & 0x0F0F0F0F;
+
+        const int ksc_high = QI3_K/8;
+        const int shift_high = 2 * ksc;
+        const int sc_high = ((get_int_from_uint8(bxi->scales, ksc_high) >> shift_high) << 4) & 0x30303030;
+
+        const int sc = __vsubss4(sc_low | sc_high, 0x20202020);
+
+        x_sc[i * (WARP_SIZE/4) + i / 4 + k % (WARP_SIZE/4)] = sc;
+    }
+}
+
+static __device__ __forceinline__ float vec_dot_q3_K_q8_1_mul_mat(
+    const int * __restrict__ x_ql, const half2 * __restrict__ x_dm, const int * __restrict__ x_qh, const int * __restrict__ x_sc,
+    const int * __restrict__ y_qs, const half2 * __restrict__ y_ds, const int & i, const int & j, const int & k) {
+
+    const int kbx  = k / QI3_K;
+    const int ky  = (k % QI3_K) * QR3_K;
+    const float * x_dmf = (const float *) x_dm;
+    const float * y_df  = (const float *) y_ds;
+
+    const int8_t * scales = ((int8_t *) (x_sc + i * (WARP_SIZE/4) + i/4 + kbx*4)) + ky/4;
+
+    int v[QR3_K*VDR_Q3_K_Q8_1_MMQ];
+
+#pragma unroll
+    for (int l = 0; l < QR3_K*VDR_Q3_K_Q8_1_MMQ; ++l) {
+        const int kqsx = i * (WARP_SIZE + 1) + kbx*QI3_K + (QI3_K/2) * (ky/(2*QI3_K)) + ky % (QI3_K/2);
+        const int shift = 2 * ((ky % 32) / 8);
+        const int vll = (x_ql[kqsx + l] >> shift) & 0x03030303;
+
+        const int vh = x_qh[i * (WARP_SIZE/2) + i/2 + kbx * (QI3_K/2) + (ky+l)%8] >> ((ky+l) / 8);
+        const int vlh = (vh << 2) & 0x04040404;
+
+        v[l] = __vsubss4(vll, vlh);
+    }
+
+    const int index_y = j * WARP_SIZE + (k*QR3_K) % WARP_SIZE;
+    return vec_dot_q3_K_q8_1_impl_mmq(v, &y_qs[index_y], scales, x_dmf[i * (WARP_SIZE/QI3_K) + i/QI3_K + kbx], y_df[index_y/QI8_1]);
+}
+
+static __device__ __forceinline__ float vec_dot_q4_K_q8_1(
+    const void * __restrict__ vbq, const block_q8_1 * __restrict__ bq8_1, const int & iqs) {
+
+#ifndef GGML_QKK_64
+    const block_q4_K * bq4_K = (const block_q4_K *) vbq;
+
+    int    v[2];
+    int    u[2*QR4_K];
+    float d8[QR4_K];
+
+    // iqs is in 0,2..30. bq8_offset = iqs/4 -> bq8_offset = 0, 2, 4, 6
+    const int bq8_offset = QR4_K * ((iqs/2) / (QI8_1/2));
+
+    // iqs = 0....3 -> bq8_offset = 0, want q4_offset = 0, 4, 8, 12
+    // iqs = 4....7 -> bq8_offset = 2, want q4_offset = 32, 36, 40, 44
+    // iqs = 8...11 -> bq8_offset = 4, want q4_offset = 64, 68, 72, 76
+    // iqs = 12..15 -> bq8_offset = 6, want q4_offset = 96, 100, 104, 108
+
+    const int * q4 = (const int *)(bq4_K->qs + 16 * bq8_offset + 4 * ((iqs/2)%4));
+    v[0] = q4[0];
+    v[1] = q4[4];
+
+    const uint16_t * scales = (const uint16_t *)bq4_K->scales;
+    uint16_t aux[2];
+    const int j = bq8_offset/2;
+    if (j < 2) {
+        aux[0] = scales[j+0] & 0x3f3f;
+        aux[1] = scales[j+2] & 0x3f3f;
+    } else {
+        aux[0] = ((scales[j+2] >> 0) & 0x0f0f) | ((scales[j-2] & 0xc0c0) >> 2);
+        aux[1] = ((scales[j+2] >> 4) & 0x0f0f) | ((scales[j-0] & 0xc0c0) >> 2);
+    }
+    const uint8_t * sc = (const uint8_t *)aux;
+    const uint8_t * m  = sc + 2;
+
+    for (int i = 0; i < QR4_K; ++i) {
+        const block_q8_1 * bq8i = bq8_1 + bq8_offset + i;
+        d8[i] = __low2half(bq8i->ds);
+
+        const int * q8 = (const int *)bq8i->qs + ((iqs/2)%4);
+        u[2*i+0] = q8[0];
+        u[2*i+1] = q8[4];
+    }
+
+    return vec_dot_q4_K_q8_1_impl_vmmq(v, u, sc, m, bq4_K->dm, d8);
+
+#else
+
+#if __CUDA_ARCH__ >= MIN_CC_DP4A // lowest compute capability for integer intrinsics
+    const block_q4_K * bq4_K = (const block_q4_K *) vbq;
+
+    float sumf_d = 0.0f;
+    float sumf_m = 0.0f;
+
+    uint16_t aux16[2];
+    const uint8_t * s = (const uint8_t *)aux16;
+
+    const uint16_t * a = (const uint16_t *)bq4_K->scales;
+    aux16[0] = a[0] & 0x0f0f;
+    aux16[1] = (a[0] >> 4) & 0x0f0f;
+
+    const float dall = bq4_K->dm[0];
+    const float dmin = bq4_K->dm[1];
+
+    const float d8_1 = __low2float(bq8_1[0].ds);
+    const float d8_2 = __low2float(bq8_1[1].ds);
+
+    const int ui1 = *((const int *)bq8_1[0].qs + (iqs/2));
+    const int ui2 = *((const int *)bq8_1[0].qs + (iqs/2) + 4);
+    const int ui3 = *((const int *)bq8_1[1].qs + (iqs/2));
+    const int ui4 = *((const int *)bq8_1[1].qs + (iqs/2) + 4);
+
+    const int * q4 = (const int *)bq4_K->qs + (iqs/2);
+    const int v1 = q4[0];
+    const int v2 = q4[4];
+
+    const int dot1 = __dp4a(ui2, v2 & 0x0f0f0f0f, __dp4a(ui1, v1 & 0x0f0f0f0f, 0));
+    const int dot2 = __dp4a(ui4, (v2 >> 4) & 0x0f0f0f0f, __dp4a(ui3, (v1 >> 4) & 0x0f0f0f0f, 0));
+    const int dot3 = __dp4a(0x01010101, ui2, __dp4a(0x01010101, ui1, 0));
+    const int dot4 = __dp4a(0x01010101, ui4, __dp4a(0x01010101, ui3, 0));
+
+    sumf_d += d8_1 * (dot1 * s[0]) + d8_2 * (dot2 * s[1]);
+    sumf_m += d8_1 * (dot3 * s[2]) + d8_2 * (dot4 * s[3]);
+
+    return dall * sumf_d - dmin * sumf_m;
+
+#else
+    assert(false);
+    return 0.0f; // only to satisfy the compiler
+#endif // __CUDA_ARCH__ >= MIN_CC_DP4A
+
+#endif
+}
+
+template <int mmq_y> static __device__ __forceinline__ void allocate_tiles_q4_K(int ** x_ql, half2 ** x_dm, int ** x_qh, int ** x_sc) {
+
+    __shared__ int   tile_x_ql[mmq_y * (WARP_SIZE)       + mmq_y];
+    __shared__ half2 tile_x_dm[mmq_y * (WARP_SIZE/QI4_K) + mmq_y/QI4_K];
+    __shared__ int   tile_x_sc[mmq_y * (WARP_SIZE/8)     + mmq_y/8];
+
+    *x_ql = tile_x_ql;
+    *x_dm = tile_x_dm;
+    *x_sc = tile_x_sc;
+}
+
+template <int mmq_y, int nwarps, bool need_check> static __device__ __forceinline__ void load_tiles_q4_K(
+    const void * __restrict__ vx, int * __restrict__ x_ql, half2 * __restrict__ x_dm, int * __restrict__ x_qh,
+    int * __restrict__ x_sc, const int & i_offset, const int & i_max, const int & k, const int & blocks_per_row) {
+
+    __builtin_assume(i_offset >= 0);
+    __builtin_assume(i_offset <  nwarps);
+    __builtin_assume(k >= 0);
+    __builtin_assume(k <  WARP_SIZE);
+
+    const int kbx  = k / QI4_K; // == 0 if QK_K == 256
+    const int kqsx = k % QI4_K; // == k if QK_K == 256
+
+    const block_q4_K * bx0 = (block_q4_K *) vx;
+
+#pragma unroll
+    for (int i0 = 0; i0 < mmq_y; i0 += nwarps) {
+        int i = i0 + i_offset;
+
+        if (need_check) {
+            i = min(i, i_max);
+        }
+
+        const block_q4_K * bxi = bx0 + i*blocks_per_row + kbx;
+
+        x_ql[i * (WARP_SIZE + 1) + k] = get_int_from_uint8_aligned(bxi->qs, kqsx);
+    }
+
+    const int blocks_per_tile_x_row = WARP_SIZE / QI4_K; // == 1 if QK_K == 256
+    const int kbxd = k % blocks_per_tile_x_row;          // == 0 if QK_K == 256
+
+#pragma unroll
+    for (int i0 = 0; i0 < mmq_y; i0 += nwarps * QI4_K) {
+        int i = (i0 + i_offset * QI4_K + k / blocks_per_tile_x_row) % mmq_y;
+
+        if (need_check) {
+            i = min(i, i_max);
+        }
+
+        const block_q4_K * bxi = bx0 + i*blocks_per_row + kbxd;
+
+#if QK_K == 256
+        x_dm[i * (WARP_SIZE/QI4_K) + i / QI4_K + kbxd] = bxi->dm;
+#else
+        x_dm[i * (WARP_SIZE/QI4_K) + i / QI4_K + kbxd] = {bxi->dm[0], bxi->dm[1]};
+#endif
+    }
+
+#pragma unroll
+    for (int i0 = 0; i0 < mmq_y; i0 += nwarps * 8) {
+        int i = (i0 + i_offset * 8 + k / (WARP_SIZE/8)) % mmq_y;
+
+        if (need_check) {
+            i = min(i, i_max);
+        }
+
+        const block_q4_K * bxi = bx0 + i*blocks_per_row + (k % (WARP_SIZE/8)) / (QI4_K/8);
+
+        const int * scales = (int *) bxi->scales;
+
+        const int ksc = k % (WARP_SIZE/8);
+
+        // scale arrangement after the following two lines: sc0,...,sc3, sc4,...,sc7, m0,...,m3, m4,...,m8
+        int scales8 = (scales[(ksc%2) + (ksc!=0)] >> (4 * (ksc & (ksc/2)))) & 0x0F0F0F0F; // lower 4 bits
+        scales8    |= (scales[ksc/2]              >> (2 * (ksc % 2)))       & 0x30303030; // upper 2 bits
+
+        x_sc[i * (WARP_SIZE/8) + i / 8 + ksc] = scales8;
+    }
+}
+
+static __device__ __forceinline__ float vec_dot_q4_K_q8_1_mul_mat(
+    const int * __restrict__ x_ql, const half2 * __restrict__ x_dm, const int * __restrict__ x_qh, const int * __restrict__ x_sc,
+    const int * __restrict__ y_qs, const half2 * __restrict__ y_ds, const int & i, const int & j, const int & k) {
+
+    const uint8_t * sc = ((const uint8_t *) &x_sc[i * (WARP_SIZE/8) + i/8 + k/16]) + 2*((k % 16) / 8);
+
+    const int index_y = j * WARP_SIZE + (QR4_K*k) % WARP_SIZE;
+    return vec_dot_q4_K_q8_1_impl_mmq(&x_ql[i * (WARP_SIZE + 1) + k], &y_qs[index_y], sc, sc+8,
+                                      x_dm[i * (WARP_SIZE/QI4_K) + i/QI4_K], &y_ds[index_y/QI8_1]);
+}
+
+static __device__ __forceinline__ float vec_dot_q5_K_q8_1(
+    const void * __restrict__ vbq, const block_q8_1 * __restrict__ bq8_1, const int & iqs) {
+
+#ifndef GGML_QKK_64
+    const block_q5_K * bq5_K = (const block_q5_K *) vbq;
+
+    int   vl[2];
+    int   vh[2];
+    int    u[2*QR5_K];
+    float d8[QR5_K];
+
+    const int bq8_offset = QR5_K * ((iqs/2) / (QI8_1/2));
+    const int * ql = (const int *)(bq5_K->qs + 16 * bq8_offset + 4 * ((iqs/2)%4));
+    const int * qh = (const int *)(bq5_K->qh + 4 * ((iqs/2)%4));
+
+    vl[0] = ql[0];
+    vl[1] = ql[4];
+
+    vh[0] = qh[0] >> bq8_offset;
+    vh[1] = qh[4] >> bq8_offset;
+
+    const uint16_t * scales = (const uint16_t *)bq5_K->scales;
+    uint16_t aux[2];
+    const int j = bq8_offset/2;
+    if (j < 2) {
+        aux[0] = scales[j+0] & 0x3f3f;
+        aux[1] = scales[j+2] & 0x3f3f;
+    } else {
+        aux[0] = ((scales[j+2] >> 0) & 0x0f0f) | ((scales[j-2] & 0xc0c0) >> 2);
+        aux[1] = ((scales[j+2] >> 4) & 0x0f0f) | ((scales[j-0] & 0xc0c0) >> 2);
+    }
+    const uint8_t * sc = (const uint8_t *)aux;
+    const uint8_t * m  = sc + 2;
+
+#pragma unroll
+    for (int i = 0; i < QR5_K; ++i) {
+        const block_q8_1 * bq8i = bq8_1 + bq8_offset + i;
+        d8[i] = __low2float(bq8i->ds);
+
+        const int * q8 = (const int *)bq8i->qs + ((iqs/2)%4);
+        u[2*i+0] = q8[0];
+        u[2*i+1] = q8[4];
+    }
+
+    return vec_dot_q5_K_q8_1_impl_vmmq(vl, vh, u, sc, m, bq5_K->dm, d8);
+
+#else
+
+#if __CUDA_ARCH__ >= MIN_CC_DP4A // lowest compute capability for integer intrinsics
+    const block_q5_K * bq5_K = (const block_q5_K *) vbq;
+
+    const int8_t * s = bq5_K->scales;
+
+    const float d = bq5_K->d;
+
+    const float d8_1 = __low2half(bq8_1[0].ds);
+    const float d8_2 = __low2half(bq8_1[1].ds);
+
+    const int ui1 = *((const int *)bq8_1[0].qs + (iqs/2));
+    const int ui2 = *((const int *)bq8_1[0].qs + (iqs/2) + 4);
+    const int ui3 = *((const int *)bq8_1[1].qs + (iqs/2));
+    const int ui4 = *((const int *)bq8_1[1].qs + (iqs/2) + 4);
+
+    const int * ql = (const int *)bq5_K->qs + (iqs/2);
+    const int vl1 = ql[0];
+    const int vl2 = ql[4];
+
+    const int step = 4 * (iqs/2); // 0, 4, 8, 12
+    const int im = step/8; // = 0 for iqs = 0, 2, = 1 for iqs = 4, 6
+    const int in = step%8; // 0, 4, 0, 4
+    const int vh = (*((const int *)(bq5_K->qh + in))) >> im;
+
+    const int v1 = (((vh << 4) & 0x10101010) ^ 0x10101010) | ((vl1 >> 0) & 0x0f0f0f0f);
+    const int v2 = (((vh << 2) & 0x10101010) ^ 0x10101010) | ((vl2 >> 0) & 0x0f0f0f0f);
+    const int v3 = (((vh >> 0) & 0x10101010) ^ 0x10101010) | ((vl1 >> 4) & 0x0f0f0f0f);
+    const int v4 = (((vh >> 2) & 0x10101010) ^ 0x10101010) | ((vl2 >> 4) & 0x0f0f0f0f);
+
+    const float sumf_d = d8_1 * (__dp4a(ui1, v1, 0) * s[0] + __dp4a(ui2, v2, 0) * s[1])
+                       + d8_2 * (__dp4a(ui3, v3, 0) * s[2] + __dp4a(ui4, v4, 0) * s[3]);
+
+    return d * sumf_d;
+
+#else
+    assert(false);
+    return 0.0f; // only to satisfy the compiler
+#endif // __CUDA_ARCH__ >= MIN_CC_DP4A
+
+#endif
+}
+
+template <int mmq_y> static __device__ __forceinline__ void allocate_tiles_q5_K(int ** x_ql, half2 ** x_dm, int ** x_qh, int ** x_sc) {
+
+    __shared__ int   tile_x_ql[mmq_y * (2*WARP_SIZE)     + mmq_y];
+    __shared__ half2 tile_x_dm[mmq_y * (WARP_SIZE/QI5_K) + mmq_y/QI5_K];
+    __shared__ int   tile_x_sc[mmq_y * (WARP_SIZE/8)     + mmq_y/8];
+
+    *x_ql = tile_x_ql;
+    *x_dm = tile_x_dm;
+    *x_sc = tile_x_sc;
+}
+
+template <int mmq_y, int nwarps, bool need_check> static __device__ __forceinline__ void load_tiles_q5_K(
+    const void * __restrict__ vx, int * __restrict__ x_ql, half2 * __restrict__ x_dm, int * __restrict__ x_qh,
+    int * __restrict__ x_sc, const int & i_offset, const int & i_max, const int & k, const int & blocks_per_row) {
+
+    __builtin_assume(i_offset >= 0);
+    __builtin_assume(i_offset <  nwarps);
+    __builtin_assume(k >= 0);
+    __builtin_assume(k <  WARP_SIZE);
+
+    const int kbx  = k / QI5_K; // == 0 if QK_K == 256
+    const int kqsx = k % QI5_K; // == k if QK_K == 256
+
+    const block_q5_K * bx0 = (block_q5_K *) vx;
+
+#pragma unroll
+    for (int i0 = 0; i0 < mmq_y; i0 += nwarps) {
+        int i = i0 + i_offset;
+
+        if (need_check) {
+            i = min(i, i_max);
+        }
+
+        const block_q5_K * bxi = bx0 + i*blocks_per_row + kbx;
+        const int ky = QR5_K*kqsx;
+
+        const int ql = get_int_from_uint8_aligned(bxi->qs, kqsx);
+        const int ql0 = (ql >> 0) & 0x0F0F0F0F;
+        const int ql1 = (ql >> 4) & 0x0F0F0F0F;
+
+        const int qh = get_int_from_uint8_aligned(bxi->qh, kqsx % (QI5_K/4));
+        const int qh0 = ((qh >> (2 * (kqsx / (QI5_K/4)) + 0)) << 4) & 0x10101010;
+        const int qh1 = ((qh >> (2 * (kqsx / (QI5_K/4)) + 1)) << 4) & 0x10101010;
+
+        const int kq0 = ky - ky % (QI5_K/2) + k % (QI5_K/4) + 0;
+        const int kq1 = ky - ky % (QI5_K/2) + k % (QI5_K/4) + (QI5_K/4);
+
+        x_ql[i * (2*WARP_SIZE + 1) + kq0] = ql0 | qh0;
+        x_ql[i * (2*WARP_SIZE + 1) + kq1] = ql1 | qh1;
+    }
+
+    const int blocks_per_tile_x_row = WARP_SIZE / QI5_K; // == 1 if QK_K == 256
+    const int kbxd = k % blocks_per_tile_x_row;          // == 0 if QK_K == 256
+
+#pragma unroll
+    for (int i0 = 0; i0 < mmq_y; i0 += nwarps * QI5_K) {
+        int i = (i0 + i_offset * QI5_K + k / blocks_per_tile_x_row) % mmq_y;
+
+        if (need_check) {
+            i = min(i, i_max);
+        }
+
+        const block_q5_K * bxi = bx0 + i*blocks_per_row + kbxd;
+
+#if QK_K == 256
+        x_dm[i * (WARP_SIZE/QI5_K) + i / QI5_K + kbxd] = bxi->dm;
+#endif
+    }
+
+#pragma unroll
+    for (int i0 = 0; i0 < mmq_y; i0 += nwarps * 8) {
+        int i = (i0 + i_offset * 8 + k / (WARP_SIZE/8)) % mmq_y;
+
+        if (need_check) {
+            i = min(i, i_max);
+        }
+
+        const block_q5_K * bxi = bx0 + i*blocks_per_row + (k % (WARP_SIZE/8)) / (QI5_K/8);
+
+        const int * scales = (int *) bxi->scales;
+
+        const int ksc = k % (WARP_SIZE/8);
+
+        // scale arrangement after the following two lines: sc0,...,sc3, sc4,...,sc7, m0,...,m3, m4,...,m8
+        int scales8 = (scales[(ksc%2) + (ksc!=0)] >> (4 * (ksc & (ksc/2)))) & 0x0F0F0F0F; // lower 4 bits
+        scales8    |= (scales[ksc/2]              >> (2 * (ksc % 2)))       & 0x30303030; // upper 2 bits
+
+        x_sc[i * (WARP_SIZE/8) + i / 8 + ksc] = scales8;
+    }
+}
+
+static __device__ __forceinline__ float vec_dot_q5_K_q8_1_mul_mat(
+    const int * __restrict__ x_ql, const half2 * __restrict__ x_dm, const int * __restrict__ x_qh, const int * __restrict__ x_sc,
+    const int * __restrict__ y_qs, const half2 * __restrict__ y_ds, const int & i, const int & j, const int & k) {
+
+    const uint8_t * sc = ((const uint8_t *) &x_sc[i * (WARP_SIZE/8) + i/8 + k/16]) + 2 * ((k % 16) / 8);
+
+    const int index_x = i * (QR5_K*WARP_SIZE + 1) +  QR5_K*k;
+    const int index_y = j * WARP_SIZE             + (QR5_K*k) % WARP_SIZE;
+    return vec_dot_q5_K_q8_1_impl_mmq(&x_ql[index_x], &y_qs[index_y], sc, sc+8,
+                                      x_dm[i * (WARP_SIZE/QI5_K) + i/QI5_K], &y_ds[index_y/QI8_1]);
+}
+
+static __device__ __forceinline__ float vec_dot_q6_K_q8_1(
+    const void * __restrict__ vbq, const block_q8_1 * __restrict__ bq8_1, const int & iqs) {
+
+    const block_q6_K * bq6_K = (const block_q6_K *) vbq;
+
+    const int bq8_offset = 2 * QR6_K * (iqs / (QI6_K/2)) + (iqs % (QI6_K/2)) / (QI6_K/4);
+    const int scale_offset = (QI6_K/4) * (iqs / (QI6_K/2)) + (iqs % (QI6_K/2)) / (QI6_K/8);
+    const int vh_shift = 2 * ((iqs % (QI6_K/2)) / (QI6_K/4));
+
+    const int vl = get_int_from_uint8(bq6_K->ql, iqs);
+    const int vh = get_int_from_uint8(bq6_K->qh, (QI6_K/4) * (iqs / (QI6_K/2)) + iqs % (QI6_K/4)) >> vh_shift;
+
+    const int8_t * scales = bq6_K->scales + scale_offset;
+
+    int    u[QR6_K];
+    float d8[QR6_K];
+
+#pragma unroll
+    for (int i = 0; i < QR6_K; ++i) {
+        u[i]  = get_int_from_int8_aligned(bq8_1[bq8_offset + 2*i].qs, iqs % QI8_1);
+        d8[i] = __low2half(bq8_1[bq8_offset + 2*i].ds);
+    }
+
+    return vec_dot_q6_K_q8_1_impl_mmvq(vl, vh, u, scales, bq6_K->d, d8);
+}
+
+template <int mmq_y> static __device__ __forceinline__ void allocate_tiles_q6_K(int ** x_ql, half2 ** x_dm, int ** x_qh, int ** x_sc) {
+
+    __shared__ int   tile_x_ql[mmq_y * (2*WARP_SIZE)     + mmq_y];
+    __shared__ half2 tile_x_dm[mmq_y * (WARP_SIZE/QI6_K) + mmq_y/QI6_K];
+    __shared__ int   tile_x_sc[mmq_y * (WARP_SIZE/8)     + mmq_y/8];
+
+    *x_ql = tile_x_ql;
+    *x_dm = tile_x_dm;
+    *x_sc = tile_x_sc;
+}
+
+template <int mmq_y, int nwarps, bool need_check> static __device__ __forceinline__ void load_tiles_q6_K(
+    const void * __restrict__ vx, int * __restrict__ x_ql, half2 * __restrict__ x_dm, int * __restrict__ x_qh,
+    int * __restrict__ x_sc, const int & i_offset, const int & i_max, const int & k, const int & blocks_per_row) {
+
+    __builtin_assume(i_offset >= 0);
+    __builtin_assume(i_offset <  nwarps);
+    __builtin_assume(k >= 0);
+    __builtin_assume(k <  WARP_SIZE);
+
+    const int kbx  = k / QI6_K; // == 0 if QK_K == 256
+    const int kqsx = k % QI6_K; // == k if QK_K == 256
+
+    const block_q6_K * bx0 = (block_q6_K *) vx;
+
+#pragma unroll
+    for (int i0 = 0; i0 < mmq_y; i0 += nwarps) {
+        int i = i0 + i_offset;
+
+        if (need_check) {
+            i = min(i, i_max);
+        }
+
+        const block_q6_K * bxi = bx0 + i*blocks_per_row + kbx;
+        const int ky = QR6_K*kqsx;
+
+        const int ql = get_int_from_uint8(bxi->ql, kqsx);
+        const int ql0 = (ql >> 0) & 0x0F0F0F0F;
+        const int ql1 = (ql >> 4) & 0x0F0F0F0F;
+
+        const int qh = get_int_from_uint8(bxi->qh, (QI6_K/4) * (kqsx / (QI6_K/2)) + kqsx % (QI6_K/4));
+        const int qh0 = ((qh >> (2 * ((kqsx % (QI6_K/2)) / (QI6_K/4)))) << 4) & 0x30303030;
+        const int qh1 =  (qh >> (2 * ((kqsx % (QI6_K/2)) / (QI6_K/4))))       & 0x30303030;
+
+        const int kq0 = ky - ky % QI6_K + k % (QI6_K/2) + 0;
+        const int kq1 = ky - ky % QI6_K + k % (QI6_K/2) + (QI6_K/2);
+
+        x_ql[i * (2*WARP_SIZE + 1) + kq0] = __vsubss4(ql0 | qh0, 0x20202020);
+        x_ql[i * (2*WARP_SIZE + 1) + kq1] = __vsubss4(ql1 | qh1, 0x20202020);
+    }
+
+    const int blocks_per_tile_x_row = WARP_SIZE / QI6_K; // == 1 if QK_K == 256
+    const int kbxd = k % blocks_per_tile_x_row;          // == 0 if QK_K == 256
+    float * x_dmf = (float *) x_dm;
+
+#pragma unroll
+    for (int i0 = 0; i0 < mmq_y; i0 += nwarps * QI6_K) {
+        int i = (i0 + i_offset * QI6_K + k / blocks_per_tile_x_row) % mmq_y;
+
+        if (need_check) {
+            i = min(i, i_max);
+        }
+
+        const block_q6_K * bxi = bx0 + i*blocks_per_row + kbxd;
+
+        x_dmf[i * (WARP_SIZE/QI6_K) + i / QI6_K + kbxd] = bxi->d;
+    }
+
+#pragma unroll
+    for (int i0 = 0; i0 < mmq_y; i0 += nwarps * 8) {
+        int i = (i0 + i_offset * 8 + k / (WARP_SIZE/8)) % mmq_y;
+
+        if (need_check) {
+            i = min(i, i_max);
+        }
+
+        const block_q6_K * bxi = bx0 + i*blocks_per_row + (k % (WARP_SIZE/8)) / 4;
+
+        x_sc[i * (WARP_SIZE/8) + i / 8 + k % (WARP_SIZE/8)] = get_int_from_int8(bxi->scales, k % (QI6_K/8));
+    }
+}
+
+static __device__ __forceinline__ float vec_dot_q6_K_q8_1_mul_mat(
+    const int * __restrict__ x_ql, const half2 * __restrict__ x_dm, const int * __restrict__ x_qh, const int * __restrict__ x_sc,
+    const int * __restrict__ y_qs, const half2 * __restrict__ y_ds, const int & i, const int & j, const int & k) {
+
+    const float * x_dmf = (const float *) x_dm;
+    const float * y_df  = (const float *) y_ds;
+
+    const int8_t * sc = ((const int8_t *) &x_sc[i * (WARP_SIZE/8) + i/8 + k/8]);
+
+    const int index_x = i * (QR6_K*WARP_SIZE + 1) +  QR6_K*k;
+    const int index_y = j * WARP_SIZE             + (QR6_K*k) % WARP_SIZE;
+    return vec_dot_q6_K_q8_1_impl_mmq(&x_ql[index_x], &y_qs[index_y], sc, x_dmf[i * (WARP_SIZE/QI6_K) + i/QI6_K], &y_df[index_y/QI8_1]);
+}
+
+template <int qk, int qr, int qi, bool need_sum, typename block_q_t, int mmq_x, int mmq_y, int nwarps,
+              allocate_tiles_cuda_t allocate_tiles, load_tiles_cuda_t load_tiles, int vdr, vec_dot_q_mul_mat_cuda_t vec_dot>
+static __device__ __forceinline__ void mul_mat_q(
+    const void * __restrict__ vx, const void * __restrict__ vy, float * __restrict__ dst,
+    const int ncols_x, const int nrows_x, const int ncols_y, const int nrows_y, const int nrows_dst) {
+
+    const block_q_t  * x = (const block_q_t  *) vx;
+    const block_q8_1 * y = (const block_q8_1 *) vy;
+
+    const int blocks_per_row_x = ncols_x / qk;
+    const int blocks_per_col_y = nrows_y / QK8_1;
+    const int blocks_per_warp = WARP_SIZE / qi;
+
+    const int & ncols_dst = ncols_y;
+
+    const int row_dst_0 = blockIdx.x*mmq_y;
+    const int & row_x_0 = row_dst_0;
+
+    const int col_dst_0 = blockIdx.y*mmq_x;
+    const int & col_y_0 = col_dst_0;
+
+    int   * tile_x_ql = nullptr;
+    half2 * tile_x_dm = nullptr;
+    int   * tile_x_qh = nullptr;
+    int   * tile_x_sc = nullptr;
+
+    allocate_tiles(&tile_x_ql, &tile_x_dm, &tile_x_qh, &tile_x_sc);
+
+    __shared__ int    tile_y_qs[mmq_x * WARP_SIZE];
+    __shared__ half2  tile_y_ds[mmq_x * WARP_SIZE/QI8_1];
+
+    float sum[mmq_y/WARP_SIZE][mmq_x/nwarps] = {0.0f};
+
+    for (int ib0 = 0; ib0 < blocks_per_row_x; ib0 += blocks_per_warp) {
+
+        load_tiles(x + row_x_0*blocks_per_row_x + ib0, tile_x_ql, tile_x_dm, tile_x_qh, tile_x_sc,
+                   threadIdx.y, nrows_x-row_x_0-1, threadIdx.x, blocks_per_row_x);
+
+#pragma unroll
+        for (int ir = 0; ir < qr; ++ir) {
+            const int kqs = ir*WARP_SIZE + threadIdx.x;
+            const int kbxd = kqs / QI8_1;
+
+#pragma unroll
+            for (int i = 0; i < mmq_x; i += nwarps) {
+                const int col_y_eff = min(col_y_0 + threadIdx.y + i, ncols_y-1); // to prevent out-of-bounds memory accesses
+
+                const block_q8_1 * by0 = &y[col_y_eff*blocks_per_col_y + ib0 * (qk/QK8_1) + kbxd];
+
+                const int index_y = (threadIdx.y + i) * WARP_SIZE + kqs % WARP_SIZE;
+                tile_y_qs[index_y] = get_int_from_int8_aligned(by0->qs, threadIdx.x % QI8_1);
+            }
+
+#pragma unroll
+            for (int ids0 = 0; ids0 < mmq_x; ids0 += nwarps * QI8_1) {
+                const int ids = (ids0 + threadIdx.y * QI8_1 + threadIdx.x / (WARP_SIZE/QI8_1)) % mmq_x;
+                const int kby = threadIdx.x % (WARP_SIZE/QI8_1);
+                const int col_y_eff = min(col_y_0 + ids, ncols_y-1);
+
+                // if the sum is not needed it's faster to transform the scale to f32 ahead of time
+                const half2 * dsi_src = &y[col_y_eff*blocks_per_col_y + ib0 * (qk/QK8_1) + ir*(WARP_SIZE/QI8_1) + kby].ds;
+                half2       * dsi_dst = &tile_y_ds[ids * (WARP_SIZE/QI8_1) + kby];
+                if (need_sum) {
+                    *dsi_dst = *dsi_src;
+                } else {
+                    float * dfi_dst = (float *) dsi_dst;
+                    *dfi_dst = __low2half(*dsi_src);
+                }
+            }
+
+            __syncthreads();
+
+// #pragma unroll // unrolling this loop causes too much register pressure
+            for (int k = ir*WARP_SIZE/qr; k < (ir+1)*WARP_SIZE/qr; k += vdr) {
+#pragma unroll
+                for (int j = 0; j < mmq_x; j += nwarps) {
+#pragma unroll
+                    for (int i = 0; i < mmq_y; i += WARP_SIZE) {
+                        sum[i/WARP_SIZE][j/nwarps] += vec_dot(
+                            tile_x_ql, tile_x_dm, tile_x_qh, tile_x_sc, tile_y_qs, tile_y_ds,
+                            threadIdx.x + i, threadIdx.y + j, k);
+                    }
+                }
+            }
+
+            __syncthreads();
+        }
+    }
+
+#pragma unroll
+    for (int j = 0; j < mmq_x; j += nwarps) {
+        const int col_dst = col_dst_0 + j + threadIdx.y;
+
+        if (col_dst >= ncols_dst) {
+            return;
+        }
+
+#pragma unroll
+        for (int i = 0; i < mmq_y; i += WARP_SIZE) {
+            const int row_dst = row_dst_0 + threadIdx.x + i;
+
+            if (row_dst >= nrows_dst) {
+                continue;
+            }
+
+            dst[col_dst*nrows_dst + row_dst] = sum[i/WARP_SIZE][j/nwarps];
+        }
+    }
+}
+
+#define  MMQ_X_Q4_0_AMPERE 64
+#define  MMQ_Y_Q4_0_AMPERE 128
+#define NWARPS_Q4_0_AMPERE 4
+#define  MMQ_X_Q4_0_PASCAL 64
+#define  MMQ_Y_Q4_0_PASCAL 64
+#define NWARPS_Q4_0_PASCAL 8
+
+template <bool need_check> static __global__ void mul_mat_q4_0(
+    const void * __restrict__ vx, const void * __restrict__ vy, float * __restrict__ dst,
+    const int ncols_x, const int nrows_x, const int ncols_y, const int nrows_y, const int nrows_dst) {
+
+#if __CUDA_ARCH__ >= CC_TURING
+    const int mmq_x  =  MMQ_X_Q4_0_AMPERE;
+    const int mmq_y  =  MMQ_Y_Q4_0_AMPERE;
+    const int nwarps = NWARPS_Q4_0_AMPERE;
+
+    mul_mat_q<QK4_0, QR4_0, QI4_0, true, block_q4_0, mmq_x, mmq_y, nwarps, allocate_tiles_q4_0<mmq_y>,
+        load_tiles_q4_0<mmq_y, nwarps, need_check>, VDR_Q4_0_Q8_1_MMQ, vec_dot_q4_0_q8_1_mul_mat>
+        (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst);
+
+#elif __CUDA_ARCH__ >= MIN_CC_DP4A
+    const int mmq_x  =  MMQ_X_Q4_0_PASCAL;
+    const int mmq_y  =  MMQ_Y_Q4_0_PASCAL;
+    const int nwarps = NWARPS_Q4_0_PASCAL;
+
+    mul_mat_q<QK4_0, QR4_0, QI4_0, true, block_q4_0, mmq_x, mmq_y, nwarps, allocate_tiles_q4_0<mmq_y>,
+        load_tiles_q4_0<mmq_y, nwarps, need_check>, VDR_Q4_0_Q8_1_MMQ, vec_dot_q4_0_q8_1_mul_mat>
+        (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst);
+#else
+    (void) vec_dot_q4_0_q8_1_mul_mat;
+    assert(false);
+#endif // __CUDA_ARCH__ >= CC_TURING
+}
+
+#define  MMQ_X_Q4_1_AMPERE 64
+#define  MMQ_Y_Q4_1_AMPERE 128
+#define NWARPS_Q4_1_AMPERE 4
+#define  MMQ_X_Q4_1_PASCAL 64
+#define  MMQ_Y_Q4_1_PASCAL 64
+#define NWARPS_Q4_1_PASCAL 8
+
+template <bool need_check> static __global__ void
+#if __CUDA_ARCH__ < CC_TURING
+    __launch_bounds__(WARP_SIZE*NWARPS_Q4_1_PASCAL, 2)
+#endif // __CUDA_ARCH__ < CC_TURING
+    mul_mat_q4_1(
+    const void * __restrict__ vx, const void * __restrict__ vy, float * __restrict__ dst,
+    const int ncols_x, const int nrows_x, const int ncols_y, const int nrows_y, const int nrows_dst) {
+
+#if __CUDA_ARCH__ >= CC_TURING
+    const int mmq_x  =  MMQ_X_Q4_1_AMPERE;
+    const int mmq_y  =  MMQ_Y_Q4_1_AMPERE;
+    const int nwarps = NWARPS_Q4_1_AMPERE;
+
+    mul_mat_q<QK4_1, QR4_1, QI4_1, true, block_q4_1, mmq_x, mmq_y, nwarps, allocate_tiles_q4_1<mmq_y>,
+        load_tiles_q4_1<mmq_y, nwarps, need_check>, VDR_Q4_1_Q8_1_MMQ, vec_dot_q4_1_q8_1_mul_mat>
+        (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst);
+
+#elif __CUDA_ARCH__ >= MIN_CC_DP4A
+    const int mmq_x  =  MMQ_X_Q4_1_PASCAL;
+    const int mmq_y  =  MMQ_Y_Q4_1_PASCAL;
+    const int nwarps = NWARPS_Q4_1_PASCAL;
+
+    mul_mat_q<QK4_1, QR4_1, QI4_1, true, block_q4_1, mmq_x, mmq_y, nwarps, allocate_tiles_q4_1<mmq_y>,
+        load_tiles_q4_1<mmq_y, nwarps, need_check>, VDR_Q4_1_Q8_1_MMQ, vec_dot_q4_1_q8_1_mul_mat>
+        (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst);
+#else
+    (void) vec_dot_q4_1_q8_1_mul_mat;
+    assert(false);
+#endif // __CUDA_ARCH__ >= CC_TURING
+}
+
+#define  MMQ_X_Q5_0_AMPERE 128
+#define  MMQ_Y_Q5_0_AMPERE 64
+#define NWARPS_Q5_0_AMPERE 4
+#define  MMQ_X_Q5_0_PASCAL 64
+#define  MMQ_Y_Q5_0_PASCAL 64
+#define NWARPS_Q5_0_PASCAL 8
+
+template <bool need_check> static __global__ void mul_mat_q5_0(
+    const void * __restrict__ vx, const void * __restrict__ vy, float * __restrict__ dst,
+    const int ncols_x, const int nrows_x, const int ncols_y, const int nrows_y, const int nrows_dst) {
+
+#if __CUDA_ARCH__ >= CC_TURING
+    const int mmq_x  =  MMQ_X_Q5_0_AMPERE;
+    const int mmq_y  =  MMQ_Y_Q5_0_AMPERE;
+    const int nwarps = NWARPS_Q5_0_AMPERE;
+
+    mul_mat_q<QK5_0, QR5_0, QI5_0, false, block_q5_0, mmq_x, mmq_y, nwarps, allocate_tiles_q5_0<mmq_y>,
+        load_tiles_q5_0<mmq_y, nwarps, need_check>, VDR_Q5_0_Q8_1_MMQ, vec_dot_q5_0_q8_1_mul_mat>
+        (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst);
+
+#elif __CUDA_ARCH__ >= MIN_CC_DP4A
+    const int mmq_x  =  MMQ_X_Q5_0_PASCAL;
+    const int mmq_y  =  MMQ_Y_Q5_0_PASCAL;
+    const int nwarps = NWARPS_Q5_0_PASCAL;
+
+    mul_mat_q<QK5_0, QR5_0, QI5_0, false, block_q5_0, mmq_x, mmq_y, nwarps, allocate_tiles_q5_0<mmq_y>,
+        load_tiles_q5_0<mmq_y, nwarps, need_check>, VDR_Q5_0_Q8_1_MMQ, vec_dot_q5_0_q8_1_mul_mat>
+        (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst);
+#else
+    (void) vec_dot_q5_0_q8_1_mul_mat;
+    assert(false);
+#endif // __CUDA_ARCH__ >= CC_TURING
+}
+
+#define  MMQ_X_Q5_1_AMPERE 128
+#define  MMQ_Y_Q5_1_AMPERE 64
+#define NWARPS_Q5_1_AMPERE 4
+#define  MMQ_X_Q5_1_PASCAL 64
+#define  MMQ_Y_Q5_1_PASCAL 64
+#define NWARPS_Q5_1_PASCAL 8
+
+template <bool need_check> static __global__ void mul_mat_q5_1(
+    const void * __restrict__ vx, const void * __restrict__ vy, float * __restrict__ dst,
+    const int ncols_x, const int nrows_x, const int ncols_y, const int nrows_y, const int nrows_dst) {
+
+#if __CUDA_ARCH__ >= CC_TURING
+    const int mmq_x  =  MMQ_X_Q5_1_AMPERE;
+    const int mmq_y  =  MMQ_Y_Q5_1_AMPERE;
+    const int nwarps = NWARPS_Q5_1_AMPERE;
+
+    mul_mat_q<QK5_1, QR5_1, QI5_1, true, block_q5_1, mmq_x, mmq_y, nwarps, allocate_tiles_q5_1<mmq_y>,
+        load_tiles_q5_1<mmq_y, nwarps, need_check>, VDR_Q5_1_Q8_1_MMQ, vec_dot_q5_1_q8_1_mul_mat>
+        (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst);
+
+#elif __CUDA_ARCH__ >= MIN_CC_DP4A
+    const int mmq_x  =  MMQ_X_Q5_1_PASCAL;
+    const int mmq_y  =  MMQ_Y_Q5_1_PASCAL;
+    const int nwarps = NWARPS_Q5_1_PASCAL;
+
+    mul_mat_q<QK5_1, QR5_1, QI5_1, true, block_q5_1, mmq_x, mmq_y, nwarps, allocate_tiles_q5_1<mmq_y>,
+        load_tiles_q5_1<mmq_y, nwarps, need_check>, VDR_Q5_1_Q8_1_MMQ, vec_dot_q5_1_q8_1_mul_mat>
+        (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst);
+#else
+    (void) vec_dot_q5_1_q8_1_mul_mat;
+    assert(false);
+#endif // __CUDA_ARCH__ >= CC_TURING
+}
+
+#define  MMQ_X_Q8_0_AMPERE 128
+#define  MMQ_Y_Q8_0_AMPERE 64
+#define NWARPS_Q8_0_AMPERE 4
+#define  MMQ_X_Q8_0_PASCAL 64
+#define  MMQ_Y_Q8_0_PASCAL 64
+#define NWARPS_Q8_0_PASCAL 8
+
+template <bool need_check> static __global__ void mul_mat_q8_0(
+    const void * __restrict__ vx, const void * __restrict__ vy, float * __restrict__ dst,
+    const int ncols_x, const int nrows_x, const int ncols_y, const int nrows_y, const int nrows_dst) {
+
+#if __CUDA_ARCH__ >= CC_TURING
+    const int mmq_x  =  MMQ_X_Q8_0_AMPERE;
+    const int mmq_y  =  MMQ_Y_Q8_0_AMPERE;
+    const int nwarps = NWARPS_Q8_0_AMPERE;
+
+    mul_mat_q<QK8_0, QR8_0, QI8_0, false, block_q8_0, mmq_x, mmq_y, nwarps, allocate_tiles_q8_0<mmq_y>,
+        load_tiles_q8_0<mmq_y, nwarps, need_check>, VDR_Q8_0_Q8_1_MMQ, vec_dot_q8_0_q8_1_mul_mat>
+        (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst);
+
+#elif __CUDA_ARCH__ >= MIN_CC_DP4A
+    const int mmq_x  =  MMQ_X_Q8_0_PASCAL;
+    const int mmq_y  =  MMQ_Y_Q8_0_PASCAL;
+    const int nwarps = NWARPS_Q8_0_PASCAL;
+
+    mul_mat_q<QK8_0, QR8_0, QI8_0, false, block_q8_0, mmq_x, mmq_y, nwarps, allocate_tiles_q8_0<mmq_y>,
+        load_tiles_q8_0<mmq_y, nwarps, need_check>, VDR_Q8_0_Q8_1_MMQ, vec_dot_q8_0_q8_1_mul_mat>
+        (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst);
+#else
+    (void) vec_dot_q8_0_q8_1_mul_mat;
+    assert(false);
+#endif // __CUDA_ARCH__ >= CC_TURING
+}
+
+#define  MMQ_X_Q2_K_AMPERE 64
+#define  MMQ_Y_Q2_K_AMPERE 128
+#define NWARPS_Q2_K_AMPERE 4
+#define  MMQ_X_Q2_K_PASCAL 64
+#define  MMQ_Y_Q2_K_PASCAL 64
+#define NWARPS_Q2_K_PASCAL 8
+
+template <bool need_check> static __global__ void mul_mat_q2_K(
+    const void * __restrict__ vx, const void * __restrict__ vy, float * __restrict__ dst,
+    const int ncols_x, const int nrows_x, const int ncols_y, const int nrows_y, const int nrows_dst) {
+
+#if __CUDA_ARCH__ >= CC_TURING
+    const int mmq_x  =  MMQ_X_Q2_K_AMPERE;
+    const int mmq_y  =  MMQ_Y_Q2_K_AMPERE;
+    const int nwarps = NWARPS_Q2_K_AMPERE;
+
+    mul_mat_q<QK_K, QR2_K, QI2_K, false, block_q2_K, mmq_x, mmq_y, nwarps, allocate_tiles_q2_K<mmq_y>,
+        load_tiles_q2_K<mmq_y, nwarps, need_check>, VDR_Q2_K_Q8_1_MMQ, vec_dot_q2_K_q8_1_mul_mat>
+        (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst);
+
+#elif __CUDA_ARCH__ >= MIN_CC_DP4A
+    const int mmq_x  =  MMQ_X_Q2_K_PASCAL;
+    const int mmq_y  =  MMQ_Y_Q2_K_PASCAL;
+    const int nwarps = NWARPS_Q2_K_PASCAL;
+
+    mul_mat_q<QK_K, QR2_K, QI2_K, false, block_q2_K, mmq_x, mmq_y, nwarps, allocate_tiles_q2_K<mmq_y>,
+        load_tiles_q2_K<mmq_y, nwarps, need_check>, VDR_Q2_K_Q8_1_MMQ, vec_dot_q2_K_q8_1_mul_mat>
+        (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst);
+#else
+    (void) vec_dot_q2_K_q8_1_mul_mat;
+    assert(false);
+#endif // __CUDA_ARCH__ >= CC_TURING
+}
+
+#define  MMQ_X_Q3_K_AMPERE 128
+#define  MMQ_Y_Q3_K_AMPERE 128
+#define NWARPS_Q3_K_AMPERE 4
+#define  MMQ_X_Q3_K_PASCAL 64
+#define  MMQ_Y_Q3_K_PASCAL 64
+#define NWARPS_Q3_K_PASCAL 8
+
+template <bool need_check> static __global__ void
+#if __CUDA_ARCH__ < CC_TURING
+    __launch_bounds__(WARP_SIZE*NWARPS_Q3_K_PASCAL, 2)
+#endif // __CUDA_ARCH__ < CC_TURING
+    mul_mat_q3_K(
+    const void * __restrict__ vx, const void * __restrict__ vy, float * __restrict__ dst,
+    const int ncols_x, const int nrows_x, const int ncols_y, const int nrows_y, const int nrows_dst) {
+
+#if __CUDA_ARCH__ >= CC_TURING
+    const int mmq_x  =  MMQ_X_Q3_K_AMPERE;
+    const int mmq_y  =  MMQ_Y_Q3_K_AMPERE;
+    const int nwarps = NWARPS_Q3_K_AMPERE;
+
+    mul_mat_q<QK_K, QR3_K, QI3_K, false, block_q3_K, mmq_x, mmq_y, nwarps, allocate_tiles_q3_K<mmq_y>,
+        load_tiles_q3_K<mmq_y, nwarps, need_check>, VDR_Q3_K_Q8_1_MMQ, vec_dot_q3_K_q8_1_mul_mat>
+        (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst);
+
+#elif __CUDA_ARCH__ >= MIN_CC_DP4A
+    const int mmq_x  =  MMQ_X_Q3_K_PASCAL;
+    const int mmq_y  =  MMQ_Y_Q3_K_PASCAL;
+    const int nwarps = NWARPS_Q3_K_PASCAL;
+
+    mul_mat_q<QK_K, QR3_K, QI3_K, false, block_q3_K, mmq_x, mmq_y, nwarps, allocate_tiles_q3_K<mmq_y>,
+        load_tiles_q3_K<mmq_y, nwarps, need_check>, VDR_Q3_K_Q8_1_MMQ, vec_dot_q3_K_q8_1_mul_mat>
+        (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst);
+#else
+    (void) vec_dot_q3_K_q8_1_mul_mat;
+    assert(false);
+#endif // __CUDA_ARCH__ >= CC_TURING
+}
+
+#define  MMQ_X_Q4_K_AMPERE 64
+#define  MMQ_Y_Q4_K_AMPERE 128
+#define NWARPS_Q4_K_AMPERE 4
+#define  MMQ_X_Q4_K_PASCAL 64
+#define  MMQ_Y_Q4_K_PASCAL 64
+#define NWARPS_Q4_K_PASCAL 8
+
+template <bool need_check> static __global__ void
+#if __CUDA_ARCH__ < CC_TURING
+    __launch_bounds__(WARP_SIZE*NWARPS_Q4_K_PASCAL, 2)
+#endif // __CUDA_ARCH__ < CC_TURING
+    mul_mat_q4_K(
+    const void * __restrict__ vx, const void * __restrict__ vy, float * __restrict__ dst,
+    const int ncols_x, const int nrows_x, const int ncols_y, const int nrows_y, const int nrows_dst) {
+
+#if __CUDA_ARCH__ >= CC_TURING
+    const int mmq_x  =  MMQ_X_Q4_K_AMPERE;
+    const int mmq_y  =  MMQ_Y_Q4_K_AMPERE;
+    const int nwarps = NWARPS_Q4_K_AMPERE;
+
+    mul_mat_q<QK_K, QR4_K, QI4_K, true, block_q4_K, mmq_x, mmq_y, nwarps, allocate_tiles_q4_K<mmq_y>,
+        load_tiles_q4_K<mmq_y, nwarps, need_check>, VDR_Q4_K_Q8_1_MMQ, vec_dot_q4_K_q8_1_mul_mat>
+        (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst);
+
+#elif __CUDA_ARCH__ >= MIN_CC_DP4A
+    const int mmq_x  =  MMQ_X_Q4_K_PASCAL;
+    const int mmq_y  =  MMQ_Y_Q4_K_PASCAL;
+    const int nwarps = NWARPS_Q4_K_PASCAL;
+
+    mul_mat_q<QK_K, QR4_K, QI4_K, true, block_q4_K, mmq_x, mmq_y, nwarps, allocate_tiles_q4_K<mmq_y>,
+        load_tiles_q4_K<mmq_y, nwarps, need_check>, VDR_Q4_K_Q8_1_MMQ, vec_dot_q4_K_q8_1_mul_mat>
+        (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst);
+#else
+    (void) vec_dot_q4_K_q8_1_mul_mat;
+    assert(false);
+#endif // __CUDA_ARCH__ >= CC_TURING
+}
+
+#define  MMQ_X_Q5_K_AMPERE 64
+#define  MMQ_Y_Q5_K_AMPERE 128
+#define NWARPS_Q5_K_AMPERE 4
+#define  MMQ_X_Q5_K_PASCAL 64
+#define  MMQ_Y_Q5_K_PASCAL 64
+#define NWARPS_Q5_K_PASCAL 8
+
+template <bool need_check> static __global__ void mul_mat_q5_K(
+    const void * __restrict__ vx, const void * __restrict__ vy, float * __restrict__ dst,
+    const int ncols_x, const int nrows_x, const int ncols_y, const int nrows_y, const int nrows_dst) {
+
+#if __CUDA_ARCH__ >= CC_TURING
+    const int mmq_x  =  MMQ_X_Q5_K_AMPERE;
+    const int mmq_y  =  MMQ_Y_Q5_K_AMPERE;
+    const int nwarps = NWARPS_Q5_K_AMPERE;
+
+    mul_mat_q<QK_K, QR5_K, QI5_K, true, block_q5_K, mmq_x, mmq_y, nwarps, allocate_tiles_q5_K<mmq_y>,
+        load_tiles_q5_K<mmq_y, nwarps, need_check>, VDR_Q5_K_Q8_1_MMQ, vec_dot_q5_K_q8_1_mul_mat>
+        (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst);
+
+#elif __CUDA_ARCH__ >= MIN_CC_DP4A
+    const int mmq_x  =  MMQ_X_Q5_K_PASCAL;
+    const int mmq_y  =  MMQ_Y_Q5_K_PASCAL;
+    const int nwarps = NWARPS_Q5_K_PASCAL;
+
+    mul_mat_q<QK_K, QR5_K, QI5_K, true, block_q5_K, mmq_x, mmq_y, nwarps, allocate_tiles_q5_K<mmq_y>,
+        load_tiles_q5_K<mmq_y, nwarps, need_check>, VDR_Q5_K_Q8_1_MMQ, vec_dot_q5_K_q8_1_mul_mat>
+        (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst);
+#else
+    (void) vec_dot_q5_K_q8_1_mul_mat;
+    assert(false);
+#endif // __CUDA_ARCH__ >= CC_TURING
+}
+
+#define  MMQ_X_Q6_K_AMPERE 64
+#define  MMQ_Y_Q6_K_AMPERE 64
+#define NWARPS_Q6_K_AMPERE 4
+#define  MMQ_X_Q6_K_PASCAL 64
+#define  MMQ_Y_Q6_K_PASCAL 64
+#define NWARPS_Q6_K_PASCAL 8
+
+template <bool need_check> static __global__ void
+#if __CUDA_ARCH__ < CC_TURING
+    __launch_bounds__(WARP_SIZE*NWARPS_Q6_K_PASCAL, 2)
+#endif // __CUDA_ARCH__ < CC_TURING
+    mul_mat_q6_K(
+    const void * __restrict__ vx, const void * __restrict__ vy, float * __restrict__ dst,
+    const int ncols_x, const int nrows_x, const int ncols_y, const int nrows_y, const int nrows_dst) {
+
+#if __CUDA_ARCH__ >= CC_TURING
+    const int mmq_x  =  MMQ_X_Q6_K_AMPERE;
+    const int mmq_y  =  MMQ_Y_Q6_K_AMPERE;
+    const int nwarps = NWARPS_Q6_K_AMPERE;
+
+    mul_mat_q<QK_K, QR6_K, QI6_K, false, block_q6_K, mmq_x, mmq_y, nwarps, allocate_tiles_q6_K<mmq_y>,
+        load_tiles_q6_K<mmq_y, nwarps, need_check>, VDR_Q6_K_Q8_1_MMQ, vec_dot_q6_K_q8_1_mul_mat>
+        (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst);
+
+#elif __CUDA_ARCH__ >= MIN_CC_DP4A
+    const int mmq_x  =  MMQ_X_Q6_K_PASCAL;
+    const int mmq_y  =  MMQ_Y_Q6_K_PASCAL;
+    const int nwarps = NWARPS_Q6_K_PASCAL;
+
+    mul_mat_q<QK_K, QR6_K, QI6_K, false, block_q6_K, mmq_x, mmq_y, nwarps, allocate_tiles_q6_K<mmq_y>,
+        load_tiles_q6_K<mmq_y, nwarps, need_check>, VDR_Q6_K_Q8_1_MMQ, vec_dot_q6_K_q8_1_mul_mat>
+        (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst);
+#else
+    (void) vec_dot_q6_K_q8_1_mul_mat;
+    assert(false);
+#endif // __CUDA_ARCH__ >= CC_TURING
+}
+
+template <int qk, int qi, typename block_q_t, int vdr, vec_dot_q_cuda_t vec_dot_q_cuda>
+static __global__ void mul_mat_vec_q(const void * __restrict__ vx, const void * __restrict__ vy, float * __restrict__ dst, const int ncols, const int nrows) {
+    const int row = blockIdx.y*blockDim.y + threadIdx.y;
+
+    if (row >= nrows) {
+        return;
+    }
+
+    const int blocks_per_row = ncols / qk;
+    const int blocks_per_warp = vdr * WARP_SIZE / qi;
+
+// partial sum for each thread
+    float tmp = 0.0f;
+
+    const block_q_t  * x = (const block_q_t  *) vx;
+    const block_q8_1 * y = (const block_q8_1 *) vy;
+
+    for (int i = 0; i < blocks_per_row; i += blocks_per_warp) {
+        const int ibx = row*blocks_per_row + i + threadIdx.x / (qi/vdr); // x block index
+
+        const int iby = (i + threadIdx.x / (qi/vdr)) * (qk/QK8_1); // y block index that aligns with ibx
+
+        const int iqs  = vdr * (threadIdx.x % (qi/vdr)); // x block quant index when casting the quants to int
+
+        tmp += vec_dot_q_cuda(&x[ibx], &y[iby], iqs);
+    }
+
+    // sum up partial sums and write back result
+#pragma unroll
+    for (int mask = 16; mask > 0; mask >>= 1) {
+        tmp += __shfl_xor_sync(0xffffffff, tmp, mask, 32);
+    }
+
+    if (threadIdx.x == 0) {
+        dst[row] = tmp;
+    }
+}
+
+template <int qk, int qr, dequantize_kernel_t dequantize_kernel>
+static __global__ void dequantize_mul_mat_vec(const void * __restrict__ vx, const dfloat * __restrict__ y, float * __restrict__ dst, const int ncols, const int nrows) {
+    // qk = quantized weights per x block
+    // qr = number of quantized weights per data value in x block
+    const int row = blockIdx.y*blockDim.y + threadIdx.y;
+
+    if (row >= nrows) {
+        return;
+    }
+
+    const int tid = threadIdx.x;
+
+    const int iter_stride = 2*GGML_CUDA_DMMV_X;
+    const int vals_per_iter = iter_stride / WARP_SIZE; // num quantized vals per thread and i iter
+    const int y_offset = qr == 1 ? 1 : qk/2;
+
+// partial sum for each thread
+#ifdef GGML_CUDA_F16
+    half2 tmp = {0.0f, 0.0f}; // two sums for f16 to take advantage of half2 intrinsics
+#else
+    float tmp = 0.0f;
+#endif // GGML_CUDA_F16
+
+    for (int i = 0; i < ncols; i += iter_stride) {
+        const int col = i + vals_per_iter*tid;
+        const int ib = (row*ncols + col)/qk; // x block index
+        const int iqs = (col%qk)/qr; // x quant index
+        const int iybs = col - col%qk; // y block start index
+
+// processing >2 values per i iter is faster for fast GPUs
+#pragma unroll
+        for (int j = 0; j < vals_per_iter; j += 2) {
+            // process 2 vals per j iter
+
+            // dequantize
+            // for qr = 2 the iqs needs to increase by 1 per j iter because 2 weights per data val
+            dfloat2 v;
+            dequantize_kernel(vx, ib, iqs + j/qr, v);
+
+            // matrix multiplication
+            // for qr = 2 the y index needs to increase by 1 per j iter because of y_offset = qk/2
+#ifdef GGML_CUDA_F16
+            tmp += __hmul2(v, {
+                y[iybs + iqs + j/qr + 0],
+                y[iybs + iqs + j/qr + y_offset]
+            });
+#else
+            tmp += v.x * y[iybs + iqs + j/qr + 0];
+            tmp += v.y * y[iybs + iqs + j/qr + y_offset];
+#endif // GGML_CUDA_F16
+        }
+    }
+
+    // sum up partial sums and write back result
+#pragma unroll
+    for (int mask = 16; mask > 0; mask >>= 1) {
+        tmp += __shfl_xor_sync(0xffffffff, tmp, mask, 32);
+    }
+
+    if (tid == 0) {
+#ifdef GGML_CUDA_F16
+        dst[row] = tmp.x + tmp.y;
+#else
+        dst[row] = tmp;
+#endif // GGML_CUDA_F16
+    }
+}
+
+static __global__ void mul_mat_p021_f16_f32(
+    const void * __restrict__ vx, const float * __restrict__ y, float * __restrict__ dst,
+    const int ncols_x, const int nrows_x, const int nchannels_x, const int nchannels_y) {
+
+    const half * x = (const half *) vx;
+
+    const int row_x = blockDim.y*blockIdx.y + threadIdx.y;
+    const int channel = blockDim.z*blockIdx.z + threadIdx.z;
+    const int channel_x = channel / (nchannels_y / nchannels_x);
+
+    const int nrows_y = ncols_x;
+    const int nrows_dst = nrows_x;
+    const int row_dst = row_x;
+
+    float tmp = 0.0f;
+
+    for (int col_x0 = 0; col_x0 < ncols_x; col_x0 += blockDim.x) {
+        const int col_x = col_x0 + threadIdx.x;
+
+        if (col_x >= ncols_x) {
+            break;
+        }
+
+        // x is transposed and permuted
+        const int ix = row_x*nchannels_x*ncols_x + channel_x*ncols_x + col_x;
+        const float xi = __half2float(x[ix]);
+
+        const int row_y = col_x;
+
+
+        // y is not transposed but permuted
+        const int iy = channel*nrows_y + row_y;
+
+        tmp += xi * y[iy];
+    }
+
+    // dst is not transposed and not permuted
+    const int idst = channel*nrows_dst + row_dst;
+
+    // sum up partial sums and write back result
+#pragma unroll
+    for (int mask = 16; mask > 0; mask >>= 1) {
+        tmp += __shfl_xor_sync(0xffffffff, tmp, mask, 32);
+    }
+
+    if (threadIdx.x == 0) {
+        dst[idst] = tmp;
+    }
+}
+
+static __global__ void mul_mat_vec_nc_f16_f32( // nc == non-contiguous
+    const void * __restrict__ vx, const float * __restrict__ y, float * __restrict__ dst, const int ncols_x, const int nrows_x,
+    const int row_stride_x, const int channel_stride_x, const int channel_x_divisor) {
+
+    const half * x = (const half *) vx;
+
+    const int row_x = blockDim.y*blockIdx.y + threadIdx.y;
+    const int channel = blockDim.z*blockIdx.z + threadIdx.z;
+    const int channel_x = channel / channel_x_divisor;
+
+    const int nrows_y = ncols_x;
+    const int nrows_dst = nrows_x;
+    const int row_dst = row_x;
+
+    const int idst = channel*nrows_dst + row_dst;
+
+    float tmp = 0.0f;
+
+    for (int col_x0 = 0; col_x0 < ncols_x; col_x0 += blockDim.x) {
+        const int col_x = col_x0 + threadIdx.x;
+
+        if (col_x >= ncols_x) {
+            break;
+        }
+
+        const int ix = channel_x*channel_stride_x + row_x*row_stride_x + col_x;
+        const float xi = __half2float(x[ix]);
+
+        const int row_y = col_x;
+
+        const int iy = channel*nrows_y + row_y;
+
+        tmp += xi * y[iy];
+    }
+
+    // sum up partial sums and write back result
+#pragma unroll
+    for (int mask = 16; mask > 0; mask >>= 1) {
+        tmp += __shfl_xor_sync(0xffffffff, tmp, mask, 32);
+    }
+
+    if (threadIdx.x == 0) {
+        dst[idst] = tmp;
+    }
+}
+
+static __device__ void cpy_1_f32_f32(const char * cxi, char * cdsti) {
+    const float * xi = (const float *) cxi;
+    float * dsti = (float *) cdsti;
+
+    *dsti = *xi;
+}
+
+static __device__ void cpy_1_f32_f16(const char * cxi, char * cdsti) {
+    const float * xi = (const float *) cxi;
+    half * dsti = (half *) cdsti;
+
+    *dsti = __float2half(*xi);
+}
+
+template <cpy_kernel_t cpy_1>
+static __global__ void cpy_f32_f16(const char * cx, char * cdst, const int ne,
+                                   const int ne00, const int ne01, const int nb00, const int nb01, const int nb02,
+                                   const int ne10, const int ne11, const int nb10, const int nb11, const int nb12) {
+    const int i = blockDim.x*blockIdx.x + threadIdx.x;
+
+    if (i >= ne) {
+        return;
+    }
+
+    // determine indices i02/i12, i01/i11, i00/i10 as a function of index i of flattened tensor
+    // then combine those indices with the corresponding byte offsets to get the total offsets
+    const int i02 = i / (ne00*ne01);
+    const int i01 = (i - i02*ne01*ne00) / ne00;
+    const int i00 = i - i02*ne01*ne00 - i01*ne00;
+    const int x_offset = i00*nb00 + i01*nb01 + i02*nb02;
+
+    const int i12 = i / (ne10*ne11);
+    const int i11 = (i - i12*ne10*ne11) / ne10;
+    const int i10 = i - i12*ne10*ne11 - i11*ne10;
+    const int dst_offset = i10*nb10 + i11*nb11 + i12*nb12;
+
+    cpy_1(cx + x_offset, cdst + dst_offset);
+}
+
+// rope == RoPE == rotary positional embedding
+static __global__ void rope_f32(const float * x, float * dst, const int ncols, const float p0,
+                                const float p_delta, const int p_delta_rows, const float theta_scale) {
+    const int col = 2*(blockDim.y*blockIdx.y + threadIdx.y);
+
+    if (col >= ncols) {
+        return;
+    }
+
+    const int row = blockDim.x*blockIdx.x + threadIdx.x;
+    const int i = row*ncols + col;
+
+    const float theta = (p0 + p_delta * (row/p_delta_rows))*powf(theta_scale, col/2);
+    const float sin_theta = sinf(theta);
+    const float cos_theta = cosf(theta);
+
+    const float x0 = x[i + 0];
+    const float x1 = x[i + 1];
+
+    dst[i + 0] = x0*cos_theta - x1*sin_theta;
+    dst[i + 1] = x0*sin_theta + x1*cos_theta;
+}
+
+static __global__ void rope_neox_f32(const float * x, float * dst, const int ncols, const float p0,
+                                const float p_delta, const int p_delta_rows, const float theta_scale) {
+    const int col = 2*(blockDim.y*blockIdx.y + threadIdx.y);
+
+    if (col >= ncols) {
+        return;
+    }
+
+    const int row = blockDim.x*blockIdx.x + threadIdx.x;
+    const int i = row*ncols + col/2;
 
-    // determine indices i02/i12, i01/i11, i00/i10 as a function of index i of flattened tensor
-    // then combine those indices with the corresponding byte offsets to get the total offsets
-    const int i02 = i / (ne00*ne01);
-    const int i01 = (i - i02*ne01*ne00) / ne00;
-    const int i00 = i - i02*ne01*ne00 - i01*ne00;
-    const int x_offset = i00*nb00 + i01*nb01 + i02*nb02;
+    const float theta = (p0 + p_delta * (row/p_delta_rows))*powf(theta_scale, col/2);
+    const float sin_theta = sinf(theta);
+    const float cos_theta = cosf(theta);
 
-    const int i12 = i / (ne10*ne11);
-    const int i11 = (i - i12*ne10*ne11) / ne10;
-    const int i10 = i - i12*ne10*ne11 - i11*ne10;
-    const int dst_offset = i10*nb10 + i11*nb11 + i12*nb12;
+    const float x0 = x[i + 0];
+    const float x1 = x[i + ncols/2];
 
-    cpy_1(cx + x_offset, cdst + dst_offset);
+    dst[i + 0]       = x0*cos_theta - x1*sin_theta;
+    dst[i + ncols/2] = x0*sin_theta + x1*cos_theta;
 }
 
-// rope == RoPE == rotary positional embedding
-static __global__ void rope_f32(const float * x, float * dst, const int ncols, const float p, const float theta_scale) {
-    const int col = 2*(blockDim.x*blockIdx.x + threadIdx.x);
+static __global__ void rope_glm_f32(const float * x, float * dst, const int ncols, const float p, const float block_p, const float theta_scale) {
+    const int col = blockDim.x*blockIdx.x + threadIdx.x;
+    const int half_n_dims = ncols/4;
 
-    if (col >= ncols) {
+    if (col >= half_n_dims) {
         return;
     }
 
     const int row = blockDim.y*blockIdx.y + threadIdx.y;
     const int i = row*ncols + col;
 
-    const float theta = p*powf(theta_scale, col/2);
+    const float col_theta_scale = powf(theta_scale, col);
+
+    const float theta = p*col_theta_scale;
     const float sin_theta = sinf(theta);
     const float cos_theta = cosf(theta);
 
     const float x0 = x[i + 0];
-    const float x1 = x[i + 1];
+    const float x1 = x[i + half_n_dims];
 
-    dst[i + 0] = x0*cos_theta - x1*sin_theta;
-    dst[i + 1] = x0*sin_theta + x1*cos_theta;
+    dst[i + 0]           = x0*cos_theta - x1*sin_theta;
+    dst[i + half_n_dims] = x0*sin_theta + x1*cos_theta;
+
+    const float block_theta = block_p*col_theta_scale;
+    const float sin_block_theta = sinf(block_theta);
+    const float cos_block_theta = cosf(block_theta);
+
+    const float x2 = x[i + half_n_dims * 2];
+    const float x3 = x[i + half_n_dims * 3];
+
+    dst[i + half_n_dims * 2] = x2*cos_block_theta - x3*sin_block_theta;
+    dst[i + half_n_dims * 3] = x2*sin_block_theta + x3*cos_block_theta;
 }
 
-static __global__ void diag_mask_inf_f32(const float * x, float * dst, const int ncols, const int rows_per_channel, const int n_past) {
+static __global__ void alibi_f32(const float * x, float * dst, const int ncols, const int k_rows,
+                                 const int n_heads_log2_floor, const float m0, const float m1) {
     const int col = blockDim.x*blockIdx.x + threadIdx.x;
+
+    if (col >= ncols) {
+        return;
+    }
+
     const int row = blockDim.y*blockIdx.y + threadIdx.y;
+    const int i = row*ncols + col;
+
+    const int k = row/k_rows;
+
+    float m_k;
+    if (k < n_heads_log2_floor) {
+        m_k = powf(m0, k + 1);
+    } else {
+        m_k = powf(m1, 2 * (k - n_heads_log2_floor) + 1);
+    }
+
+    dst[i] = col * m_k + x[i];
+}
+
+static __global__ void diag_mask_inf_f32(const float * x, float * dst, const int ncols, const int rows_per_channel, const int n_past) {
+    const int col = blockDim.y*blockIdx.y + threadIdx.y;
+    const int row = blockDim.x*blockIdx.x + threadIdx.x;
 
     if (col >= ncols) {
         return;
@@ -1468,44 +4108,44 @@ static __global__ void diag_mask_inf_f32(const float * x, float * dst, const int
 
 // the CUDA soft max implementation differs from the CPU implementation
 // instead of doubles floats are used
-// values are also not normalized to the maximum value by subtracting it in the exponential function
-// theoretically these changes could cause problems with rounding error and arithmetic overflow but for LLaMa it seems to be fine
 static __global__ void soft_max_f32(const float * x, float * dst, const int ncols) {
-    const int row = blockDim.y*blockIdx.y + threadIdx.y;
-    const int block_size = blockDim.x;
-    const int tid = threadIdx.x;
+    const int row = blockDim.x*blockIdx.x + threadIdx.x;
+    const int block_size = blockDim.y;
+    const int tid = threadIdx.y;
 
-    float tmp = 0.0;
+    float max_val = -INFINITY;
 
-    for (int block_start = 0; block_start < ncols; block_start += block_size) {
-        const int col = block_start + tid;
+    for (int col = tid; col < ncols; col += block_size) {
+        const int i = row*ncols + col;
+        max_val = max(max_val, x[i]);
+    }
 
-        if (col >= ncols) {
-            break;
-        }
+    // find the max value in the block
+#pragma unroll
+    for (int mask = 16; mask > 0; mask >>= 1) {
+        max_val = max(max_val, __shfl_xor_sync(0xffffffff, max_val, mask, 32));
+    }
 
+    float tmp = 0.f;
+
+    for (int col = tid; col < ncols; col += block_size) {
         const int i = row*ncols + col;
-        const float val = expf(x[i]);
+        const float val = expf(x[i] - max_val);
         tmp += val;
         dst[i] = val;
     }
 
     // sum up partial sums
-    __syncthreads();
 #pragma unroll
     for (int mask = 16; mask > 0; mask >>= 1) {
         tmp += __shfl_xor_sync(0xffffffff, tmp, mask, 32);
     }
 
-    for (int block_start = 0; block_start < ncols; block_start += block_size) {
-        const int col = block_start + tid;
-
-        if (col >= ncols) {
-            break;
-        }
+    const float inv_tmp = 1.f / tmp;
 
+    for (int col = tid; col < ncols; col += block_size) {
         const int i = row*ncols + col;
-        dst[i] /= tmp;
+        dst[i] *= inv_tmp;
     }
 }
 
@@ -1519,9 +4159,9 @@ static __global__ void scale_f32(const float * x, float * dst, const float scale
     dst[i] = scale * x[i];
 }
 
-static void add_f32_cuda(const float * x, const float * y, float * dst, const int k, cudaStream_t stream) {
-    const int num_blocks = (k + CUDA_ADD_BLOCK_SIZE - 1) / CUDA_ADD_BLOCK_SIZE;
-    add_f32<<<num_blocks, CUDA_ADD_BLOCK_SIZE, 0, stream>>>(x, y, dst, k);
+static void add_f32_cuda(const float * x, const float * y, float * dst, const int kx, const int ky, cudaStream_t stream) {
+    const int num_blocks = (kx + CUDA_ADD_BLOCK_SIZE - 1) / CUDA_ADD_BLOCK_SIZE;
+    add_f32<<<num_blocks, CUDA_ADD_BLOCK_SIZE, 0, stream>>>(x, y, dst, kx, ky);
 }
 
 static void add_f16_f32_f16_cuda(const half * x, const float * y, half * dst, const int k, cudaStream_t stream) {
@@ -1534,15 +4174,33 @@ static void mul_f32_cuda(const float * x, const float * y, float * dst, const in
     mul_f32<<<num_blocks, CUDA_MUL_BLOCK_SIZE, 0, stream>>>(x, y, dst, kx, ky);
 }
 
+static void gelu_f32_cuda(const float * x, float * dst, const int k, cudaStream_t stream) {
+    const int num_blocks = (k + CUDA_GELU_BLOCK_SIZE - 1) / CUDA_GELU_BLOCK_SIZE;
+    gelu_f32<<<num_blocks, CUDA_GELU_BLOCK_SIZE, 0, stream>>>(x, dst, k);
+}
+
 static void silu_f32_cuda(const float * x, float * dst, const int k, cudaStream_t stream) {
     const int num_blocks = (k + CUDA_SILU_BLOCK_SIZE - 1) / CUDA_SILU_BLOCK_SIZE;
     silu_f32<<<num_blocks, CUDA_SILU_BLOCK_SIZE, 0, stream>>>(x, dst, k);
 }
 
-static void rms_norm_f32_cuda(const float * x, float * dst, const int ncols, const int nrows, cudaStream_t stream) {
+static void norm_f32_cuda(const float * x, float * dst, const int ncols, const int nrows, cudaStream_t stream) {
+    GGML_ASSERT(ncols % WARP_SIZE == 0);
+    const dim3 block_dims(WARP_SIZE, 1, 1);
+    norm_f32<<<nrows, block_dims, 0, stream>>>(x, dst, ncols);
+}
+
+static void rms_norm_f32_cuda(const float * x, float * dst, const int ncols, const int nrows, const float eps, cudaStream_t stream) {
     GGML_ASSERT(ncols % WARP_SIZE == 0);
     const dim3 block_dims(WARP_SIZE, 1, 1);
-    rms_norm_f32<<<nrows, block_dims, 0, stream>>>(x, dst, ncols);
+    rms_norm_f32<<<nrows, block_dims, 0, stream>>>(x, dst, ncols, eps);
+}
+
+static void quantize_row_q8_1_cuda(const float * x, void * vy, const int kx, const int ky, const int kx_padded, cudaStream_t stream) {
+    const int block_num_x = (kx_padded + CUDA_QUANTIZE_BLOCK_SIZE - 1) / CUDA_QUANTIZE_BLOCK_SIZE;
+    const dim3 num_blocks(block_num_x, ky, 1);
+    const dim3 block_size(CUDA_DEQUANTIZE_BLOCK_SIZE, 1, 1);
+    quantize_q8_1<<<num_blocks, block_size, 0, stream>>>(x, vy, kx, kx_padded);
 }
 
 static void dequantize_row_q4_0_cuda(const void * vx, float * y, const int k, cudaStream_t stream) {
@@ -1613,45 +4271,45 @@ static void dequantize_row_q6_K_cuda(const void * vx, float * y, const int k, cu
 
 static void dequantize_mul_mat_vec_q4_0_cuda(const void * vx, const dfloat * y, float * dst, const int ncols, const int nrows, cudaStream_t stream) {
     GGML_ASSERT(ncols % GGML_CUDA_DMMV_X == 0);
-    const int block_num_y = (nrows + GGML_CUDA_DMMV_Y - 1) / GGML_CUDA_DMMV_Y;
+    const int block_num_y = (nrows + GGML_CUDA_MMV_Y - 1) / GGML_CUDA_MMV_Y;
     const dim3 block_nums(1, block_num_y, 1);
-    const dim3 block_dims(WARP_SIZE, GGML_CUDA_DMMV_Y, 1);
+    const dim3 block_dims(WARP_SIZE, GGML_CUDA_MMV_Y, 1);
     dequantize_mul_mat_vec<QK4_0, QR4_0, dequantize_q4_0>
         <<<block_nums, block_dims, 0, stream>>>(vx, y, dst, ncols, nrows);
 }
 
 static void dequantize_mul_mat_vec_q4_1_cuda(const void * vx, const dfloat * y, float * dst, const int ncols, const int nrows, cudaStream_t stream) {
     GGML_ASSERT(ncols % GGML_CUDA_DMMV_X == 0);
-    const int block_num_y = (nrows + GGML_CUDA_DMMV_Y - 1) / GGML_CUDA_DMMV_Y;
+    const int block_num_y = (nrows + GGML_CUDA_MMV_Y - 1) / GGML_CUDA_MMV_Y;
     const dim3 block_nums(1, block_num_y, 1);
-    const dim3 block_dims(WARP_SIZE, GGML_CUDA_DMMV_Y, 1);
+    const dim3 block_dims(WARP_SIZE, GGML_CUDA_MMV_Y, 1);
     dequantize_mul_mat_vec<QK4_1, QR4_1, dequantize_q4_1>
         <<<block_nums, block_dims, 0, stream>>>(vx, y, dst, ncols, nrows);
 }
 
 static void dequantize_mul_mat_vec_q5_0_cuda(const void * vx, const dfloat * y, float * dst, const int ncols, const int nrows, cudaStream_t stream) {
     GGML_ASSERT(ncols % GGML_CUDA_DMMV_X == 0);
-    const int block_num_y = (nrows + GGML_CUDA_DMMV_Y - 1) / GGML_CUDA_DMMV_Y;
+    const int block_num_y = (nrows + GGML_CUDA_MMV_Y - 1) / GGML_CUDA_MMV_Y;
     const dim3 block_nums(1, block_num_y, 1);
-    const dim3 block_dims(WARP_SIZE, GGML_CUDA_DMMV_Y, 1);
+    const dim3 block_dims(WARP_SIZE, GGML_CUDA_MMV_Y, 1);
     dequantize_mul_mat_vec<QK5_0, QR5_0, dequantize_q5_0>
         <<<block_nums, block_dims, 0, stream>>>(vx, y, dst, ncols, nrows);
 }
 
 static void dequantize_mul_mat_vec_q5_1_cuda(const void * vx, const dfloat * y, float * dst, const int ncols, const int nrows, cudaStream_t stream) {
     GGML_ASSERT(ncols % GGML_CUDA_DMMV_X == 0);
-    const int block_num_y = (nrows + GGML_CUDA_DMMV_Y - 1) / GGML_CUDA_DMMV_Y;
+    const int block_num_y = (nrows + GGML_CUDA_MMV_Y - 1) / GGML_CUDA_MMV_Y;
     const dim3 block_nums(1, block_num_y, 1);
-    const dim3 block_dims(WARP_SIZE, GGML_CUDA_DMMV_Y, 1);
+    const dim3 block_dims(WARP_SIZE, GGML_CUDA_MMV_Y, 1);
     dequantize_mul_mat_vec<QK5_1, QR5_1, dequantize_q5_1>
         <<<block_nums, block_dims, 0, stream>>>(vx, y, dst, ncols, nrows);
 }
 
 static void dequantize_mul_mat_vec_q8_0_cuda(const void * vx, const dfloat * y, float * dst, const int ncols, const int nrows, cudaStream_t stream) {
     GGML_ASSERT(ncols % GGML_CUDA_DMMV_X == 0);
-    const int block_num_y = (nrows + GGML_CUDA_DMMV_Y - 1) / GGML_CUDA_DMMV_Y;
+    const int block_num_y = (nrows + GGML_CUDA_MMV_Y - 1) / GGML_CUDA_MMV_Y;
     const dim3 block_nums(1, block_num_y, 1);
-    const dim3 block_dims(WARP_SIZE, GGML_CUDA_DMMV_Y, 1);
+    const dim3 block_dims(WARP_SIZE, GGML_CUDA_MMV_Y, 1);
     dequantize_mul_mat_vec<QK8_0, QR8_0, dequantize_q8_0>
         <<<block_nums, block_dims, 0, stream>>>(vx, y, dst, ncols, nrows);
 }
@@ -1698,6 +4356,96 @@ static void dequantize_mul_mat_vec_q6_K_cuda(const void * vx, const float * y, f
     dequantize_mul_mat_vec_q6_k<<<block_nums, block_dims, 0, stream>>>(vx, y, dst, ncols, nrows);
 }
 
+static void mul_mat_vec_q4_0_q8_1_cuda(const void * vx, const void * vy, float * dst, const int ncols, const int nrows, cudaStream_t stream) {
+    GGML_ASSERT(ncols % QK4_0 == 0);
+    const int block_num_y = (nrows + GGML_CUDA_MMV_Y - 1) / GGML_CUDA_MMV_Y;
+    const dim3 block_nums(1, block_num_y, 1);
+    const dim3 block_dims(WARP_SIZE, GGML_CUDA_MMV_Y, 1);
+    mul_mat_vec_q<QK4_0, QI4_0, block_q4_0, VDR_Q4_0_Q8_1_MMVQ, vec_dot_q4_0_q8_1>
+        <<<block_nums, block_dims, 0, stream>>>(vx, vy, dst, ncols, nrows);
+}
+
+static void mul_mat_vec_q4_1_q8_1_cuda(const void * vx, const void * vy, float * dst, const int ncols, const int nrows, cudaStream_t stream) {
+    GGML_ASSERT(ncols % QK4_1 == 0);
+    const int block_num_y = (nrows + GGML_CUDA_MMV_Y - 1) / GGML_CUDA_MMV_Y;
+    const dim3 block_nums(1, block_num_y, 1);
+    const dim3 block_dims(WARP_SIZE, GGML_CUDA_MMV_Y, 1);
+    mul_mat_vec_q<QK4_0, QI4_1, block_q4_1, VDR_Q4_1_Q8_1_MMVQ, vec_dot_q4_1_q8_1>
+        <<<block_nums, block_dims, 0, stream>>>(vx, vy, dst, ncols, nrows);
+}
+
+static void mul_mat_vec_q5_0_q8_1_cuda(const void * vx, const void * vy, float * dst, const int ncols, const int nrows, cudaStream_t stream) {
+    GGML_ASSERT(ncols % QK5_0 == 0);
+    const int block_num_y = (nrows + GGML_CUDA_MMV_Y - 1) / GGML_CUDA_MMV_Y;
+    const dim3 block_nums(1, block_num_y, 1);
+    const dim3 block_dims(WARP_SIZE, GGML_CUDA_MMV_Y, 1);
+    mul_mat_vec_q<QK5_0, QI5_0, block_q5_0, VDR_Q5_0_Q8_1_MMVQ, vec_dot_q5_0_q8_1>
+        <<<block_nums, block_dims, 0, stream>>>(vx, vy, dst, ncols, nrows);
+}
+
+static void mul_mat_vec_q5_1_q8_1_cuda(const void * vx, const void * vy, float * dst, const int ncols, const int nrows, cudaStream_t stream) {
+    GGML_ASSERT(ncols % QK5_1 == 0);
+    const int block_num_y = (nrows + GGML_CUDA_MMV_Y - 1) / GGML_CUDA_MMV_Y;
+    const dim3 block_nums(1, block_num_y, 1);
+    const dim3 block_dims(WARP_SIZE, GGML_CUDA_MMV_Y, 1);
+    mul_mat_vec_q<QK5_1, QI5_1, block_q5_1, VDR_Q5_1_Q8_1_MMVQ, vec_dot_q5_1_q8_1>
+        <<<block_nums, block_dims, 0, stream>>>(vx, vy, dst, ncols, nrows);
+}
+
+static void mul_mat_vec_q8_0_q8_1_cuda(const void * vx, const void * vy, float * dst, const int ncols, const int nrows, cudaStream_t stream) {
+    GGML_ASSERT(ncols % QK8_0 == 0);
+    const int block_num_y = (nrows + GGML_CUDA_MMV_Y - 1) / GGML_CUDA_MMV_Y;
+    const dim3 block_nums(1, block_num_y, 1);
+    const dim3 block_dims(WARP_SIZE, GGML_CUDA_MMV_Y, 1);
+    mul_mat_vec_q<QK8_0, QI8_0, block_q8_0, VDR_Q8_0_Q8_1_MMVQ, vec_dot_q8_0_q8_1>
+        <<<block_nums, block_dims, 0, stream>>>(vx, vy, dst, ncols, nrows);
+}
+
+static void mul_mat_vec_q2_K_q8_1_cuda(const void * vx, const void * vy, float * dst, const int ncols, const int nrows, cudaStream_t stream) {
+    GGML_ASSERT(ncols % QK_K == 0);
+    const int block_num_y = (nrows + GGML_CUDA_MMV_Y - 1) / GGML_CUDA_MMV_Y;
+    const dim3 block_nums(1, block_num_y, 1);
+    const dim3 block_dims(WARP_SIZE, GGML_CUDA_MMV_Y, 1);
+    mul_mat_vec_q<QK_K, QI2_K, block_q2_K, VDR_Q2_K_Q8_1_MMVQ, vec_dot_q2_K_q8_1>
+        <<<block_nums, block_dims, 0, stream>>>(vx, vy, dst, ncols, nrows);
+}
+
+static void mul_mat_vec_q3_K_q8_1_cuda(const void * vx, const void * vy, float * dst, const int ncols, const int nrows, cudaStream_t stream) {
+    GGML_ASSERT(ncols % QK_K == 0);
+    const int block_num_y = (nrows + GGML_CUDA_MMV_Y - 1) / GGML_CUDA_MMV_Y;
+    const dim3 block_nums(1, block_num_y, 1);
+    const dim3 block_dims(WARP_SIZE, GGML_CUDA_MMV_Y, 1);
+    mul_mat_vec_q<QK_K, QI3_K, block_q3_K, VDR_Q3_K_Q8_1_MMVQ, vec_dot_q3_K_q8_1>
+        <<<block_nums, block_dims, 0, stream>>>(vx, vy, dst, ncols, nrows);
+}
+
+static void mul_mat_vec_q4_K_q8_1_cuda(const void * vx, const void * vy, float * dst, const int ncols, const int nrows, cudaStream_t stream) {
+    GGML_ASSERT(ncols % QK_K == 0);
+    const int block_num_y = (nrows + GGML_CUDA_MMV_Y - 1) / GGML_CUDA_MMV_Y;
+    const dim3 block_nums(1, block_num_y, 1);
+    const dim3 block_dims(WARP_SIZE, GGML_CUDA_MMV_Y, 1);
+    mul_mat_vec_q<QK_K, QI4_K, block_q4_K, VDR_Q4_K_Q8_1_MMVQ, vec_dot_q4_K_q8_1>
+        <<<block_nums, block_dims, 0, stream>>>(vx, vy, dst, ncols, nrows);
+}
+
+static void mul_mat_vec_q5_K_q8_1_cuda(const void * vx, const void * vy, float * dst, const int ncols, const int nrows, cudaStream_t stream) {
+    GGML_ASSERT(ncols % QK_K == 0);
+    const int block_num_y = (nrows + GGML_CUDA_MMV_Y - 1) / GGML_CUDA_MMV_Y;
+    const dim3 block_nums(1, block_num_y, 1);
+    const dim3 block_dims(WARP_SIZE, GGML_CUDA_MMV_Y, 1);
+    mul_mat_vec_q<QK_K, QI5_K, block_q5_K, VDR_Q5_K_Q8_1_MMVQ, vec_dot_q5_K_q8_1>
+        <<<block_nums, block_dims, 0, stream>>>(vx, vy, dst, ncols, nrows);
+}
+
+static void mul_mat_vec_q6_K_q8_1_cuda(const void * vx, const void * vy, float * dst, const int ncols, const int nrows, cudaStream_t stream) {
+    GGML_ASSERT(ncols % QK_K == 0);
+    const int block_num_y = (nrows + GGML_CUDA_MMV_Y - 1) / GGML_CUDA_MMV_Y;
+    const dim3 block_nums(1, block_num_y, 1);
+    const dim3 block_dims(WARP_SIZE, GGML_CUDA_MMV_Y, 1);
+    mul_mat_vec_q<QK_K, QI6_K, block_q6_K, VDR_Q6_K_Q8_1_MMVQ, vec_dot_q6_K_q8_1>
+        <<<block_nums, block_dims, 0, stream>>>(vx, vy, dst, ncols, nrows);
+}
+
 static void convert_fp16_to_fp32_cuda(const void * vx, float * y, const int k, cudaStream_t stream) {
     const int num_blocks = (k + CUDA_DEQUANTIZE_BLOCK_SIZE - 1) / CUDA_DEQUANTIZE_BLOCK_SIZE;
     dequantize_block<1, 1, convert_f16><<<num_blocks, CUDA_DEQUANTIZE_BLOCK_SIZE, 0, stream>>>(vx, y, k);
@@ -1705,9 +4453,9 @@ static void convert_fp16_to_fp32_cuda(const void * vx, float * y, const int k, c
 
 static void convert_mul_mat_vec_f16_cuda(const void * vx, const dfloat * y, float * dst, const int ncols, const int nrows, cudaStream_t stream) {
     GGML_ASSERT(ncols % GGML_CUDA_DMMV_X == 0);
-    const int block_num_y = (nrows + GGML_CUDA_DMMV_Y - 1) / GGML_CUDA_DMMV_Y;
+    const int block_num_y = (nrows + GGML_CUDA_MMV_Y - 1) / GGML_CUDA_MMV_Y;
     const dim3 block_nums(1, block_num_y, 1);
-    const dim3 block_dims(WARP_SIZE, GGML_CUDA_DMMV_Y, 1);
+    const dim3 block_dims(WARP_SIZE, GGML_CUDA_MMV_Y, 1);
     dequantize_mul_mat_vec<1, 1, convert_f16>
         <<<block_nums, block_dims, 0, stream>>>(vx, y, dst, ncols, nrows);
 }
@@ -1741,20 +4489,396 @@ static to_fp32_cuda_t ggml_get_to_fp32_cuda(ggml_type type) {
     }
 }
 
-static void ggml_mul_mat_p021_f16_f32_cuda(const void * vx, const float * y, float * dst, const int ncols_x, const int nrows_x, const int nchannels_x, cudaStream_t stream) {
-    const dim3 block_nums(1, nrows_x, nchannels_x);
+static void ggml_mul_mat_q4_0_q8_1_cuda(
+    const void * vx, const void * vy, float * dst, const int ncols_x, const int nrows_x,
+    const int ncols_y, const int nrows_y, const int nrows_dst, cudaStream_t stream) {
+
+    int id;
+    CUDA_CHECK(cudaGetDevice(&id));
+    const int compute_capability = g_compute_capabilities[id];
+
+    int mmq_x, mmq_y, nwarps;
+    if (compute_capability >= CC_TURING) {
+        mmq_x  =  MMQ_X_Q4_0_AMPERE;
+        mmq_y  =  MMQ_Y_Q4_0_AMPERE;
+        nwarps = NWARPS_Q4_0_AMPERE;
+    } else if (compute_capability >= MIN_CC_DP4A) {
+        mmq_x  =  MMQ_X_Q4_0_PASCAL;
+        mmq_y  =  MMQ_Y_Q4_0_PASCAL;
+        nwarps = NWARPS_Q4_0_PASCAL;
+    } else {
+        GGML_ASSERT(false);
+    }
+
+    const int block_num_x = (nrows_x + mmq_y - 1) / mmq_y;
+    const int block_num_y = (ncols_y + mmq_x - 1) / mmq_x;
+    const dim3 block_nums(block_num_x, block_num_y, 1);
+    const dim3 block_dims(WARP_SIZE, nwarps, 1);
+
+    if (nrows_x % mmq_y == 0) {
+        const bool need_check = false;
+        mul_mat_q4_0<need_check><<<block_nums, block_dims, 0, stream>>>
+            (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst);
+    } else {
+        const bool need_check = true;
+        mul_mat_q4_0<need_check><<<block_nums, block_dims, 0, stream>>>
+            (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst);
+    }
+}
+
+static void ggml_mul_mat_q4_1_q8_1_cuda(
+    const void * vx, const void * vy, float * dst, const int ncols_x, const int nrows_x,
+    const int ncols_y, const int nrows_y, const int nrows_dst, cudaStream_t stream) {
+
+    int id;
+    CUDA_CHECK(cudaGetDevice(&id));
+    const int compute_capability = g_compute_capabilities[id];
+
+    int mmq_x, mmq_y, nwarps;
+    if (compute_capability >= CC_TURING) {
+        mmq_x  =  MMQ_X_Q4_1_AMPERE;
+        mmq_y  =  MMQ_Y_Q4_1_AMPERE;
+        nwarps = NWARPS_Q4_1_AMPERE;
+    } else if (compute_capability >= MIN_CC_DP4A) {
+        mmq_x  =  MMQ_X_Q4_1_PASCAL;
+        mmq_y  =  MMQ_Y_Q4_1_PASCAL;
+        nwarps = NWARPS_Q4_1_PASCAL;
+    } else {
+        GGML_ASSERT(false);
+    }
+
+    const int block_num_x = (nrows_x + mmq_y - 1) / mmq_y;
+    const int block_num_y = (ncols_y + mmq_x - 1) / mmq_x;
+    const dim3 block_nums(block_num_x, block_num_y, 1);
+    const dim3 block_dims(WARP_SIZE, nwarps, 1);
+
+    if (nrows_x % mmq_y == 0) {
+        const bool need_check = false;
+        mul_mat_q4_1<need_check><<<block_nums, block_dims, 0, stream>>>
+            (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst);
+    } else {
+        const bool need_check = true;
+        mul_mat_q4_1<need_check><<<block_nums, block_dims, 0, stream>>>
+            (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst);
+    }
+}
+
+static void ggml_mul_mat_q5_0_q8_1_cuda(
+    const void * vx, const void * vy, float * dst, const int ncols_x, const int nrows_x,
+    const int ncols_y, const int nrows_y, const int nrows_dst, cudaStream_t stream) {
+
+    int id;
+    CUDA_CHECK(cudaGetDevice(&id));
+    const int compute_capability = g_compute_capabilities[id];
+
+    int mmq_x, mmq_y, nwarps;
+    if (compute_capability >= CC_TURING) {
+        mmq_x  =  MMQ_X_Q5_0_AMPERE;
+        mmq_y  =  MMQ_Y_Q5_0_AMPERE;
+        nwarps = NWARPS_Q5_0_AMPERE;
+    } else if (compute_capability >= MIN_CC_DP4A) {
+        mmq_x  =  MMQ_X_Q5_0_PASCAL;
+        mmq_y  =  MMQ_Y_Q5_0_PASCAL;
+        nwarps = NWARPS_Q5_0_PASCAL;
+    } else {
+        GGML_ASSERT(false);
+    }
+
+    const int block_num_x = (nrows_x + mmq_y - 1) / mmq_y;
+    const int block_num_y = (ncols_y + mmq_x - 1) / mmq_x;
+    const dim3 block_nums(block_num_x, block_num_y, 1);
+    const dim3 block_dims(WARP_SIZE, nwarps, 1);
+
+    if (nrows_x % mmq_y == 0) {
+        const bool need_check = false;
+        mul_mat_q5_0<need_check><<<block_nums, block_dims, 0, stream>>>
+            (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst);
+    } else {
+        const bool need_check = true;
+        mul_mat_q5_0<need_check><<<block_nums, block_dims, 0, stream>>>
+            (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst);
+    }
+}
+
+static void ggml_mul_mat_q5_1_q8_1_cuda(
+    const void * vx, const void * vy, float * dst, const int ncols_x, const int nrows_x,
+    const int ncols_y, const int nrows_y, const int nrows_dst, cudaStream_t stream) {
+
+    int id;
+    CUDA_CHECK(cudaGetDevice(&id));
+    const int compute_capability = g_compute_capabilities[id];
+
+    int mmq_x, mmq_y, nwarps;
+    if (compute_capability >= CC_TURING) {
+        mmq_x  =  MMQ_X_Q5_1_AMPERE;
+        mmq_y  =  MMQ_Y_Q5_1_AMPERE;
+        nwarps = NWARPS_Q5_1_AMPERE;
+    } else if (compute_capability >= MIN_CC_DP4A) {
+        mmq_x  =  MMQ_X_Q5_1_PASCAL;
+        mmq_y  =  MMQ_Y_Q5_1_PASCAL;
+        nwarps = NWARPS_Q5_1_PASCAL;
+    } else {
+        GGML_ASSERT(false);
+    }
+
+    const int block_num_x = (nrows_x + mmq_y - 1) / mmq_y;
+    const int block_num_y = (ncols_y + mmq_x - 1) / mmq_x;
+    const dim3 block_nums(block_num_x, block_num_y, 1);
+    const dim3 block_dims(WARP_SIZE, nwarps, 1);
+
+    if (nrows_x % mmq_y == 0) {
+        const bool need_check = false;
+        mul_mat_q5_1<need_check><<<block_nums, block_dims, 0, stream>>>
+            (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst);
+    } else {
+        const bool need_check = true;
+        mul_mat_q5_1<need_check><<<block_nums, block_dims, 0, stream>>>
+            (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst);
+    }
+}
+
+static void ggml_mul_mat_q8_0_q8_1_cuda(
+    const void * vx, const void * vy, float * dst, const int ncols_x, const int nrows_x,
+    const int ncols_y, const int nrows_y, const int nrows_dst, cudaStream_t stream) {
+
+    int id;
+    CUDA_CHECK(cudaGetDevice(&id));
+    const int compute_capability = g_compute_capabilities[id];
+
+    int mmq_x, mmq_y, nwarps;
+    if (compute_capability >= CC_TURING) {
+        mmq_x  =  MMQ_X_Q8_0_AMPERE;
+        mmq_y  =  MMQ_Y_Q8_0_AMPERE;
+        nwarps = NWARPS_Q8_0_AMPERE;
+    } else if (compute_capability >= MIN_CC_DP4A) {
+        mmq_x  =  MMQ_X_Q8_0_PASCAL;
+        mmq_y  =  MMQ_Y_Q8_0_PASCAL;
+        nwarps = NWARPS_Q8_0_PASCAL;
+    } else {
+        GGML_ASSERT(false);
+    }
+
+    const int block_num_x = (nrows_x + mmq_y - 1) / mmq_y;
+    const int block_num_y = (ncols_y + mmq_x - 1) / mmq_x;
+    const dim3 block_nums(block_num_x, block_num_y, 1);
+    const dim3 block_dims(WARP_SIZE, nwarps, 1);
+
+    if (nrows_x % mmq_y == 0) {
+        const bool need_check = false;
+        mul_mat_q8_0<need_check><<<block_nums, block_dims, 0, stream>>>
+            (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst);
+    } else {
+        const bool need_check = true;
+        mul_mat_q8_0<need_check><<<block_nums, block_dims, 0, stream>>>
+            (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst);
+    }
+}
+
+static void ggml_mul_mat_q2_K_q8_1_cuda(
+    const void * vx, const void * vy, float * dst, const int ncols_x, const int nrows_x,
+    const int ncols_y, const int nrows_y, const int nrows_dst, cudaStream_t stream) {
+
+    int id;
+    CUDA_CHECK(cudaGetDevice(&id));
+    const int compute_capability = g_compute_capabilities[id];
+
+    int mmq_x, mmq_y, nwarps;
+    if (compute_capability >= CC_TURING) {
+        mmq_x  =  MMQ_X_Q2_K_AMPERE;
+        mmq_y  =  MMQ_Y_Q2_K_AMPERE;
+        nwarps = NWARPS_Q2_K_AMPERE;
+    } else if (compute_capability >= MIN_CC_DP4A) {
+        mmq_x  =  MMQ_X_Q2_K_PASCAL;
+        mmq_y  =  MMQ_Y_Q2_K_PASCAL;
+        nwarps = NWARPS_Q2_K_PASCAL;
+    } else {
+        GGML_ASSERT(false);
+    }
+
+    const int block_num_x = (nrows_x + mmq_y - 1) / mmq_y;
+    const int block_num_y = (ncols_y + mmq_x - 1) / mmq_x;
+    const dim3 block_nums(block_num_x, block_num_y, 1);
+    const dim3 block_dims(WARP_SIZE, nwarps, 1);
+
+    if (nrows_x % mmq_y == 0) {
+        const bool need_check = false;
+        mul_mat_q2_K<need_check><<<block_nums, block_dims, 0, stream>>>
+            (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst);
+    } else {
+        const bool need_check = true;
+        mul_mat_q2_K<need_check><<<block_nums, block_dims, 0, stream>>>
+            (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst);
+    }
+}
+
+static void ggml_mul_mat_q3_K_q8_1_cuda(
+    const void * vx, const void * vy, float * dst, const int ncols_x, const int nrows_x,
+    const int ncols_y, const int nrows_y, const int nrows_dst, cudaStream_t stream) {
+
+#if QK_K == 256
+
+    int id;
+    CUDA_CHECK(cudaGetDevice(&id));
+    const int compute_capability = g_compute_capabilities[id];
+
+    int mmq_x, mmq_y, nwarps;
+    if (compute_capability >= CC_TURING) {
+        mmq_x  =  MMQ_X_Q3_K_AMPERE;
+        mmq_y  =  MMQ_Y_Q3_K_AMPERE;
+        nwarps = NWARPS_Q3_K_AMPERE;
+    } else if (compute_capability >= MIN_CC_DP4A) {
+        mmq_x  =  MMQ_X_Q3_K_PASCAL;
+        mmq_y  =  MMQ_Y_Q3_K_PASCAL;
+        nwarps = NWARPS_Q3_K_PASCAL;
+    } else {
+        GGML_ASSERT(false);
+    }
+
+    const int block_num_x = (nrows_x + mmq_y - 1) / mmq_y;
+    const int block_num_y = (ncols_y + mmq_x - 1) / mmq_x;
+    const dim3 block_nums(block_num_x, block_num_y, 1);
+    const dim3 block_dims(WARP_SIZE, nwarps, 1);
+
+    if (nrows_x % mmq_y == 0) {
+        const bool need_check = false;
+        mul_mat_q3_K<need_check><<<block_nums, block_dims, 0, stream>>>
+            (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst);
+    } else {
+        const bool need_check = true;
+        mul_mat_q3_K<need_check><<<block_nums, block_dims, 0, stream>>>
+            (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst);
+    }
+#endif
+}
+
+static void ggml_mul_mat_q4_K_q8_1_cuda(
+    const void * vx, const void * vy, float * dst, const int ncols_x, const int nrows_x,
+    const int ncols_y, const int nrows_y, const int nrows_dst, cudaStream_t stream) {
+
+    int id;
+    CUDA_CHECK(cudaGetDevice(&id));
+    const int compute_capability = g_compute_capabilities[id];
+
+    int mmq_x, mmq_y, nwarps;
+    if (compute_capability >= CC_TURING) {
+        mmq_x  =  MMQ_X_Q4_K_AMPERE;
+        mmq_y  =  MMQ_Y_Q4_K_AMPERE;
+        nwarps = NWARPS_Q4_K_AMPERE;
+    } else if (compute_capability >= MIN_CC_DP4A) {
+        mmq_x  =  MMQ_X_Q4_K_PASCAL;
+        mmq_y  =  MMQ_Y_Q4_K_PASCAL;
+        nwarps = NWARPS_Q4_K_PASCAL;
+    } else {
+        GGML_ASSERT(false);
+    }
+
+    const int block_num_x = (nrows_x + mmq_y - 1) / mmq_y;
+    const int block_num_y = (ncols_y + mmq_x - 1) / mmq_x;
+    const dim3 block_nums(block_num_x, block_num_y, 1);
+    const dim3 block_dims(WARP_SIZE, nwarps, 1);
+
+    if (nrows_x % mmq_y == 0) {
+        const bool need_check = false;
+        mul_mat_q4_K<need_check><<<block_nums, block_dims, 0, stream>>>
+            (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst);
+    } else {
+        const bool need_check = true;
+        mul_mat_q4_K<need_check><<<block_nums, block_dims, 0, stream>>>
+            (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst);
+    }
+}
+
+static void ggml_mul_mat_q5_K_q8_1_cuda(
+    const void * vx, const void * vy, float * dst, const int ncols_x, const int nrows_x,
+    const int ncols_y, const int nrows_y, const int nrows_dst, cudaStream_t stream) {
+
+    int id;
+    CUDA_CHECK(cudaGetDevice(&id));
+    const int compute_capability = g_compute_capabilities[id];
+
+    int mmq_x, mmq_y, nwarps;
+    if (compute_capability >= CC_TURING) {
+        mmq_x  =  MMQ_X_Q5_K_AMPERE;
+        mmq_y  =  MMQ_Y_Q5_K_AMPERE;
+        nwarps = NWARPS_Q5_K_AMPERE;
+    } else if (compute_capability >= MIN_CC_DP4A) {
+        mmq_x  =  MMQ_X_Q5_K_PASCAL;
+        mmq_y  =  MMQ_Y_Q5_K_PASCAL;
+        nwarps = NWARPS_Q5_K_PASCAL;
+    } else {
+        GGML_ASSERT(false);
+    }
+
+    const int block_num_x = (nrows_x + mmq_y - 1) / mmq_y;
+    const int block_num_y = (ncols_y + mmq_x - 1) / mmq_x;
+    const dim3 block_nums(block_num_x, block_num_y, 1);
+    const dim3 block_dims(WARP_SIZE, nwarps, 1);
+
+    if (nrows_x % mmq_y == 0) {
+        const bool need_check = false;
+        mul_mat_q5_K<need_check><<<block_nums, block_dims, 0, stream>>>
+            (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst);
+    } else {
+        const bool need_check = true;
+        mul_mat_q5_K<need_check><<<block_nums, block_dims, 0, stream>>>
+            (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst);
+    }
+}
+
+static void ggml_mul_mat_q6_K_q8_1_cuda(
+    const void * vx, const void * vy, float * dst, const int ncols_x, const int nrows_x,
+    const int ncols_y, const int nrows_y, const int nrows_dst, cudaStream_t stream) {
+
+    int id;
+    CUDA_CHECK(cudaGetDevice(&id));
+    const int compute_capability = g_compute_capabilities[id];
+
+    int mmq_x, mmq_y, nwarps;
+    if (compute_capability >= CC_TURING) {
+        mmq_x  =  MMQ_X_Q6_K_AMPERE;
+        mmq_y  =  MMQ_Y_Q6_K_AMPERE;
+        nwarps = NWARPS_Q6_K_AMPERE;
+    } else if (compute_capability >= MIN_CC_DP4A) {
+        mmq_x  =  MMQ_X_Q6_K_PASCAL;
+        mmq_y  =  MMQ_Y_Q6_K_PASCAL;
+        nwarps = NWARPS_Q6_K_PASCAL;
+    } else {
+        GGML_ASSERT(false);
+    }
+
+    const int block_num_x = (nrows_x + mmq_y - 1) / mmq_y;
+    const int block_num_y = (ncols_y + mmq_x - 1) / mmq_x;
+    const dim3 block_nums(block_num_x, block_num_y, 1);
+    const dim3 block_dims(WARP_SIZE, nwarps, 1);
+
+    if (nrows_x % mmq_y == 0) {
+        const bool need_check = false;
+        mul_mat_q6_K<need_check><<<block_nums, block_dims, 0, stream>>>
+            (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst);
+    } else {
+        const bool need_check = true;
+        mul_mat_q6_K<need_check><<<block_nums, block_dims, 0, stream>>>
+            (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst);
+    }
+}
+
+static void ggml_mul_mat_p021_f16_f32_cuda(
+    const void * vx, const float * y, float * dst, const int ncols_x, const int nrows_x,
+    const int nchannels_x, const int nchannels_y, cudaStream_t stream) {
+
+    const dim3 block_nums(1, nrows_x, nchannels_y);
     const dim3 block_dims(WARP_SIZE, 1, 1);
-    mul_mat_p021_f16_f32<<<block_nums, block_dims, 0, stream>>>(vx, y, dst, ncols_x, nrows_x, nchannels_x);
+    mul_mat_p021_f16_f32<<<block_nums, block_dims, 0, stream>>>(vx, y, dst, ncols_x, nrows_x, nchannels_x, nchannels_y);
 }
 
 static void ggml_mul_mat_vec_nc_f16_f32_cuda(
     const void * vx, const float * y, float * dst, const int ncols_x, const int nrows_x, const int row_stride_x,
-    const int nchannels_x, const int channel_stride_x, cudaStream_t stream) {
+    const int nchannels_x, const int nchannels_y, const int channel_stride_x, cudaStream_t stream) {
 
-    const dim3 block_nums(1, nrows_x, nchannels_x);
+    const dim3 block_nums(1, nrows_x, nchannels_y);
     const dim3 block_dims(WARP_SIZE, 1, 1);
     mul_mat_vec_nc_f16_f32<<<block_nums, block_dims, 0, stream>>>
-        (vx, y, dst, ncols_x, nrows_x, row_stride_x, channel_stride_x);
+        (vx, y, dst, ncols_x, nrows_x, row_stride_x, channel_stride_x, nchannels_y/nchannels_x);
 }
 
 static void ggml_cpy_f32_f32_cuda(
@@ -1782,24 +4906,51 @@ static void scale_f32_cuda(const float * x, float * dst, const float scale, cons
     scale_f32<<<num_blocks, CUDA_SCALE_BLOCK_SIZE, 0, stream>>>(x, dst, scale, k);
 }
 
-static void rope_f32_cuda(const float * x, float * dst, const int ncols, const int nrows, const float p, const float theta_scale, cudaStream_t stream) {
-    GGML_ASSERT(nrows % 2 == 0);
-    const dim3 block_dims(2*CUDA_ROPE_BLOCK_SIZE, 1, 1);
+static void rope_f32_cuda(const float * x, float * dst, const int ncols, const int nrows, const float p0,
+                          const float p_delta, const int p_delta_rows, const float theta_scale, cudaStream_t stream) {
+    GGML_ASSERT(ncols % 2 == 0);
+    const dim3 block_dims(1, CUDA_ROPE_BLOCK_SIZE, 1);
+    const int num_blocks_x = (ncols + 2*CUDA_ROPE_BLOCK_SIZE - 1) / (2*CUDA_ROPE_BLOCK_SIZE);
+    const dim3 block_nums(nrows, num_blocks_x, 1);
+    rope_f32<<<block_nums, block_dims, 0, stream>>>(x, dst, ncols, p0, p_delta, p_delta_rows, theta_scale);
+}
+
+static void rope_neox_f32_cuda(const float * x, float * dst, const int ncols, const int nrows, const float p0,
+                          const float p_delta, const int p_delta_rows, const float theta_scale, cudaStream_t stream) {
+    GGML_ASSERT(ncols % 2 == 0);
+    const dim3 block_dims(1, CUDA_ROPE_BLOCK_SIZE, 1);
     const int num_blocks_x = (ncols + 2*CUDA_ROPE_BLOCK_SIZE - 1) / (2*CUDA_ROPE_BLOCK_SIZE);
+    const dim3 block_nums(nrows, num_blocks_x, 1);
+    rope_neox_f32<<<block_nums, block_dims, 0, stream>>>(x, dst, ncols, p0, p_delta, p_delta_rows, theta_scale);
+}
+
+static void rope_glm_f32_cuda(const float * x, float * dst, const int ncols, const int nrows, const float p, const float block_p, const float theta_scale, cudaStream_t stream) {
+    GGML_ASSERT(nrows % 4 == 0);
+    const dim3 block_dims(4*CUDA_ROPE_BLOCK_SIZE, 1, 1);
+    const int num_blocks_x = (ncols + 4*CUDA_ROPE_BLOCK_SIZE - 1) / (4*CUDA_ROPE_BLOCK_SIZE);
+    const dim3 block_nums(num_blocks_x, nrows, 1);
+    rope_glm_f32<<<block_nums, block_dims, 0, stream>>>(x, dst, ncols, p, block_p, theta_scale);
+}
+
+static void alibi_f32_cuda(const float * x, float * dst, const int ncols, const int nrows,
+                           const int k_rows, const int n_heads_log2_floor, const float m0,
+                           const float m1, cudaStream_t stream) {
+    const dim3 block_dims(CUDA_ALIBI_BLOCK_SIZE, 1, 1);
+    const int num_blocks_x = (ncols + CUDA_ALIBI_BLOCK_SIZE - 1) / (CUDA_ALIBI_BLOCK_SIZE);
     const dim3 block_nums(num_blocks_x, nrows, 1);
-    rope_f32<<<block_nums, block_dims, 0, stream>>>(x, dst, ncols, p, theta_scale);
+    alibi_f32<<<block_nums, block_dims, 0, stream>>>(x, dst, ncols, k_rows, n_heads_log2_floor, m0, m1);
 }
 
 static void diag_mask_inf_f32_cuda(const float * x, float * dst, const int ncols_x, const int nrows_x, const int rows_per_channel, const int n_past, cudaStream_t stream) {
-    const dim3 block_dims(CUDA_DIAG_MASK_INF_BLOCK_SIZE, 1, 1);
+    const dim3 block_dims(1, CUDA_DIAG_MASK_INF_BLOCK_SIZE, 1);
     const int block_num_x = (ncols_x + CUDA_DIAG_MASK_INF_BLOCK_SIZE - 1) / CUDA_DIAG_MASK_INF_BLOCK_SIZE;
-    const dim3 block_nums(block_num_x, nrows_x, 1);
+    const dim3 block_nums(nrows_x, block_num_x, 1);
     diag_mask_inf_f32<<<block_nums, block_dims, 0, stream>>>(x, dst, ncols_x, rows_per_channel, n_past);
 }
 
 static void soft_max_f32_cuda(const float * x, float * dst, const int ncols_x, const int nrows_x, cudaStream_t stream) {
-    const dim3 block_dims(WARP_SIZE, 1, 1);
-    const dim3 block_nums(1, nrows_x, 1);
+    const dim3 block_dims(1, WARP_SIZE, 1);
+    const dim3 block_nums(nrows_x, 1, 1);
     soft_max_f32<<<block_nums, block_dims, 0, stream>>>(x, dst, ncols_x);
 }
 
@@ -1832,20 +4983,53 @@ static void * ggml_cuda_pool_malloc(size_t size, size_t * actual_size) {
     scoped_spin_lock lock(g_cuda_pool_lock);
     int id;
     CUDA_CHECK(cudaGetDevice(&id));
-
+#ifdef DEBUG_CUDA_MALLOC
+    int nnz = 0;
+    size_t max_size = 0, tot_size = 0;
+#endif
+    size_t best_diff = 1ull << 36;
+    int ibest = -1;
     for (int i = 0; i < MAX_CUDA_BUFFERS; ++i) {
         cuda_buffer& b = g_cuda_buffer_pool[id][i];
-        if (b.size >= size && b.ptr != nullptr) {
-            void * ptr = b.ptr;
-            *actual_size = b.size;
-            b.ptr = nullptr;
-            b.size = 0;
-            return ptr;
+        if (b.ptr != nullptr) {
+#ifdef DEBUG_CUDA_MALLOC
+            ++nnz;
+            tot_size += b.size;
+            if (b.size > max_size) max_size = b.size;
+#endif
+            if (b.size >= size) {
+                size_t diff = b.size - size;
+                if (diff < best_diff) {
+                    best_diff = diff;
+                    ibest = i;
+                    if (!best_diff) {
+                        void * ptr = b.ptr;
+                        *actual_size = b.size;
+                        b.ptr = nullptr;
+                        b.size = 0;
+                        return ptr;
+                    }
+                }
+            }
         }
     }
+    if (ibest >= 0) {
+        cuda_buffer& b = g_cuda_buffer_pool[id][ibest];
+        void * ptr = b.ptr;
+        *actual_size = b.size;
+        b.ptr = nullptr;
+        b.size = 0;
+        return ptr;
+    }
+#ifdef DEBUG_CUDA_MALLOC
+    fprintf(stderr, "%s: %d buffers, max_size = %u MB, tot_size = %u MB, requested %u MB\n", __func__, nnz,
+            (uint32_t)(max_size/1024/1024), (uint32_t)(tot_size/1024/1024), (uint32_t)(size/1024/1024));
+#endif
     void * ptr;
-    CUDA_CHECK(cudaMalloc((void **) &ptr, size));
-    *actual_size = size;
+    size_t look_ahead_size = (size_t) (1.05 * size);
+    look_ahead_size = 256 * ((look_ahead_size + 255)/256);
+    CUDA_CHECK(cudaMalloc((void **) &ptr, look_ahead_size));
+    *actual_size = look_ahead_size;
     return ptr;
 }
 
@@ -1858,41 +5042,40 @@ static void ggml_cuda_pool_free(void * ptr, size_t size) {
         cuda_buffer& b = g_cuda_buffer_pool[id][i];
         if (b.ptr == nullptr) {
             b.ptr = ptr;
-            b.size = size;
-            return;
-        }
-    }
-    fprintf(stderr, "WARNING: cuda buffer pool full, increase MAX_CUDA_BUFFERS\n");
-    CUDA_CHECK(cudaFree(ptr));
-}
-
-
-static void * g_scratch_buffer = nullptr;
-static size_t g_scratch_size = 1024*1024*1024; // 1 GB by default
-static size_t g_scratch_offset = 0;
-
-static int g_device_count = -1;
-static int g_main_device = 0;
-static float g_tensor_split[GGML_CUDA_MAX_DEVICES] = {0};
-
-static cublasHandle_t g_cublas_handles[GGML_CUDA_MAX_DEVICES] = {nullptr};
+            b.size = size;
+            return;
+        }
+    }
+    fprintf(stderr, "WARNING: cuda buffer pool full, increase MAX_CUDA_BUFFERS\n");
+    CUDA_CHECK(cudaFree(ptr));
+}
 
-static cudaStream_t g_cudaStreams_main[GGML_CUDA_MAX_DEVICES] = { nullptr };
 
 void ggml_init_cublas() {
     static bool initialized = false;
 
     if (!initialized) {
+
+#ifdef __HIP_PLATFORM_AMD__
+        // Workaround for a rocBLAS bug when using multiple graphics cards:
+        // https://github.com/ROCmSoftwarePlatform/rocBLAS/issues/1346
+        rocblas_initialize();
+        CUDA_CHECK(cudaDeviceSynchronize());
+#endif
+
         CUDA_CHECK(cudaGetDeviceCount(&g_device_count));
         GGML_ASSERT(g_device_count <= GGML_CUDA_MAX_DEVICES);
         int64_t total_vram = 0;
-        fprintf(stderr, "%s: found %d CUDA devices:\n", __func__, g_device_count);
+        fprintf(stderr, "%s: found %d " GGML_CUDA_NAME " devices:\n", __func__, g_device_count);
         for (int id = 0; id < g_device_count; ++id) {
             cudaDeviceProp prop;
             CUDA_CHECK(cudaGetDeviceProperties(&prop, id));
-            fprintf(stderr, "  Device %d: %s\n", id, prop.name);
+            fprintf(stderr, "  Device %d: %s, compute capability %d.%d\n", id, prop.name, prop.major, prop.minor);
+
             g_tensor_split[id] = total_vram;
             total_vram += prop.totalGlobalMem;
+
+            g_compute_capabilities[id] = 100*prop.major + 10*prop.minor;
         }
         for (int id = 0; id < g_device_count; ++id) {
             g_tensor_split[id] /= total_vram;
@@ -1917,6 +5100,9 @@ void ggml_init_cublas() {
 }
 
 void ggml_cuda_set_tensor_split(const float * tensor_split) {
+    if (tensor_split == nullptr) {
+        return;
+    }
     bool all_zero = true;
     for (int i = 0; i < g_device_count; ++i) {
         if (tensor_split[i] != 0.0f) {
@@ -2013,16 +5199,19 @@ inline void ggml_cuda_op_add(
 
     GGML_ASSERT(src0_ddq_i != nullptr || src0_ddf_i != nullptr);
     GGML_ASSERT(src1_ddf_i != nullptr);
-    GGML_ASSERT(dst_ddf_i != nullptr);
+    GGML_ASSERT(dst_ddf_i  != nullptr);
 
-    const int64_t ne0 = src0->ne[0];
+    const int64_t ne00 = src0->ne[0];
     const int64_t i01_diff = i01_high - i01_low;
 
+    const int64_t ne10 = src1->ne[0];
+    const int64_t ne11 = src1->ne[1];
+
     // compute
     if (src0->type == GGML_TYPE_F32 && dst->type == GGML_TYPE_F32) {
-        add_f32_cuda(src0_ddf_i, src1_ddf_i, dst_ddf_i, ne0*i01_diff, cudaStream_main);
+        add_f32_cuda(src0_ddf_i, src1_ddf_i, dst_ddf_i, ne00*i01_diff, ne10*ne11, cudaStream_main);
     } else if (src0->type == GGML_TYPE_F16 && dst->type == GGML_TYPE_F16) {
-        add_f16_f32_f16_cuda((half *) src0_ddq_i, src1_ddf_i, (half *) dst_ddf_i, ne0*i01_diff, cudaStream_main);
+        add_f16_f32_f16_cuda((half *) src0_ddq_i, src1_ddf_i, (half *) dst_ddf_i, ne00*i01_diff, cudaStream_main);
     } else {
         GGML_ASSERT(false);
     }
@@ -2041,27 +5230,42 @@ inline void ggml_cuda_op_mul(
 
     GGML_ASSERT(src0_ddf_i != nullptr);
     GGML_ASSERT(src1_ddf_i != nullptr);
-    GGML_ASSERT(dst_ddf_i != nullptr);
+    GGML_ASSERT(dst_ddf_i  != nullptr);
 
     const int64_t ne00 = src0->ne[0];
+    const int64_t i01_diff = i01_high - i01_low;
 
     const int64_t ne10 = src1->ne[0];
     const int64_t ne11 = src1->ne[1];
 
-    for (int64_t i01 = i01_low; i01 < i01_high; i01++) {
-        const int64_t i11 = i1*ne11 + i01%ne11; // broadcast src1 across src0
+    mul_f32_cuda(src0_ddf_i, src1_ddf_i, dst_ddf_i, ne00*i01_diff, ne10*ne11, cudaStream_main);
 
-        float * src0_ddf_i01 = src0_ddf_i + i01*ne00;
-        float * src1_ddf_i01 = src1_ddf_i + i11*ne10;
-        float * dst_ddf_i01 = dst_ddf_i + i01*ne00;
+    (void) dst;
+    (void) src0_ddq_i;
+    (void) i02;
+    (void) i1;
+}
 
-        // compute
-        mul_f32_cuda(src0_ddf_i01, src1_ddf_i01, dst_ddf_i01, ne00, ne10, cudaStream_main);
-    }
+inline void ggml_cuda_op_gelu(
+    const ggml_tensor * src0, const ggml_tensor * src1, ggml_tensor * dst, char * src0_ddq_i,
+    float * src0_ddf_i, float * src1_ddf_i, float * dst_ddf_i, int64_t i02, int64_t i01_low, int64_t i01_high, int i1,
+    cudaStream_t & cudaStream_main){
 
+    GGML_ASSERT(src0_ddf_i != nullptr);
+    GGML_ASSERT(dst_ddf_i != nullptr);
+
+    const int64_t ne00 = src0->ne[0];
+    const int64_t i01_diff = i01_high - i01_low;
+
+    // compute
+    gelu_f32_cuda(src0_ddf_i, dst_ddf_i, ne00*i01_diff, cudaStream_main);
+
+    (void) src1;
     (void) dst;
     (void) src0_ddq_i;
+    (void) src1_ddf_i;
     (void) i02;
+    (void) i1;
 }
 
 inline void ggml_cuda_op_silu(
@@ -2086,6 +5290,28 @@ inline void ggml_cuda_op_silu(
     (void) i1;
 }
 
+inline void ggml_cuda_op_norm(
+    const ggml_tensor * src0, const ggml_tensor * src1, ggml_tensor * dst, char * src0_ddq_i,
+    float * src0_ddf_i, float * src1_ddf_i, float * dst_ddf_i, int64_t i02, int64_t i01_low, int64_t i01_high, int i1,
+    cudaStream_t & cudaStream_main){
+
+    GGML_ASSERT(src0_ddf_i != nullptr);
+    GGML_ASSERT(dst_ddf_i != nullptr);
+
+    const int64_t ne00 = src0->ne[0];
+    const int64_t i01_diff = i01_high - i01_low;
+
+    // compute
+    norm_f32_cuda(src0_ddf_i, dst_ddf_i, ne00, i01_diff, cudaStream_main);
+
+    (void) src1;
+    (void) dst;
+    (void) src0_ddq_i;
+    (void) src1_ddf_i;
+    (void) i02;
+    (void) i1;
+}
+
 inline void ggml_cuda_op_rms_norm(
     const ggml_tensor * src0, const ggml_tensor * src1, ggml_tensor * dst, char * src0_ddq_i,
     float * src0_ddf_i, float * src1_ddf_i, float * dst_ddf_i, int64_t i02, int64_t i01_low, int64_t i01_high, int i1,
@@ -2097,8 +5323,11 @@ inline void ggml_cuda_op_rms_norm(
     const int64_t ne00 = src0->ne[0];
     const int64_t i01_diff = i01_high - i01_low;
 
+    float eps;
+    memcpy(&eps, dst->op_params, sizeof(float));
+
     // compute
-    rms_norm_f32_cuda(src0_ddf_i, dst_ddf_i, ne00, i01_diff, cudaStream_main);
+    rms_norm_f32_cuda(src0_ddf_i, dst_ddf_i, ne00, i01_diff, eps, cudaStream_main);
 
     (void) src1;
     (void) dst;
@@ -2108,7 +5337,7 @@ inline void ggml_cuda_op_rms_norm(
     (void) i1;
 }
 
-inline void ggml_cuda_op_dequantize_mul_mat_vec(
+inline void ggml_cuda_op_mul_mat_q(
     const ggml_tensor * src0, const ggml_tensor * src1, ggml_tensor * dst, char * src0_ddq_i,
     float * src0_ddf_i, float * src1_ddf_i, float * dst_ddf_i, int64_t i02, int64_t i01_low, int64_t i01_high, int i1,
     cudaStream_t & cudaStream_main){
@@ -2118,71 +5347,250 @@ inline void ggml_cuda_op_dequantize_mul_mat_vec(
     GGML_ASSERT(dst_ddf_i != nullptr);
 
     const int64_t ne00 = src0->ne[0];
-    const int64_t nrows = i01_high - i01_low;
 
-// on some GPUs it is faster to convert src1 to half and to use half precision intrinsics
-#ifdef GGML_CUDA_DMMV_F16
-    size_t ash;
-    dfloat * src1_dfloat = nullptr; // dfloat == half
+    const int64_t ne10 = src1->ne[0];
+    const int64_t ne11 = src1->ne[1];
+    GGML_ASSERT(ne10 % QK8_1 == 0);
+
+    const int64_t ne0 = dst->ne[0];
 
-    bool src1_convert_f16 = src0->type == GGML_TYPE_Q4_0 || src0->type == GGML_TYPE_Q4_1 ||
-        src0->type == GGML_TYPE_Q5_0 || src0->type == GGML_TYPE_Q5_1 ||
-        src0->type == GGML_TYPE_Q8_0 || src0->type == GGML_TYPE_F16;
+    const int64_t i01_diff = i01_high - i01_low;
 
-    if (src1_convert_f16) {
-        src1_dfloat = (half *) ggml_cuda_pool_malloc(ne00*sizeof(half), &ash);
-        ggml_cpy_f32_f16_cuda((char *) src1_ddf_i, (char *) src1_dfloat, ne00,
-                                ne00, 1, sizeof(float), 0, 0,
-                                ne00, 1, sizeof(half),  0, 0, cudaStream_main);
-    }
-#else
-    dfloat * src1_dfloat = src1_ddf_i; // dfloat == float, no conversion
-#endif // GGML_CUDA_DMMV_F16
+    int id;
+    CUDA_CHECK(cudaGetDevice(&id));
+
+    // the main device has a larger memory buffer to hold the results from all GPUs
+    // nrows_dst == nrows of the matrix that the dequantize_mul_mat kernel writes into
+    const int64_t nrows_dst = dst->backend == GGML_BACKEND_GPU && id == g_main_device ? ne0 : i01_diff;
+
+    const int64_t padded_row_size = ne10 % MATRIX_ROW_PADDING == 0 ?
+        ne10 : ne10 - ne10 % MATRIX_ROW_PADDING + MATRIX_ROW_PADDING;
+    size_t as;
+    void * src1_q8_1 = ggml_cuda_pool_malloc(padded_row_size*ne11*sizeof(block_q8_1)/QK8_1, &as);
+    quantize_row_q8_1_cuda(src1_ddf_i, src1_q8_1, ne10, ne11, padded_row_size, cudaStream_main);
 
     switch (src0->type) {
         case GGML_TYPE_Q4_0:
-            dequantize_mul_mat_vec_q4_0_cuda(src0_ddq_i, src1_dfloat, dst_ddf_i, ne00, nrows, cudaStream_main);
+            ggml_mul_mat_q4_0_q8_1_cuda(src0_ddq_i, src1_q8_1, dst_ddf_i, ne00, i01_diff, ne11, padded_row_size, nrows_dst, cudaStream_main);
             break;
         case GGML_TYPE_Q4_1:
-            dequantize_mul_mat_vec_q4_1_cuda(src0_ddq_i, src1_dfloat, dst_ddf_i, ne00, nrows, cudaStream_main);
+            ggml_mul_mat_q4_1_q8_1_cuda(src0_ddq_i, src1_q8_1, dst_ddf_i, ne00, i01_diff, ne11, padded_row_size, nrows_dst, cudaStream_main);
             break;
         case GGML_TYPE_Q5_0:
-            dequantize_mul_mat_vec_q5_0_cuda(src0_ddq_i, src1_dfloat, dst_ddf_i, ne00, nrows, cudaStream_main);
+            ggml_mul_mat_q5_0_q8_1_cuda(src0_ddq_i, src1_q8_1, dst_ddf_i, ne00, i01_diff, ne11, padded_row_size, nrows_dst, cudaStream_main);
             break;
         case GGML_TYPE_Q5_1:
-            dequantize_mul_mat_vec_q5_1_cuda(src0_ddq_i, src1_dfloat, dst_ddf_i, ne00, nrows, cudaStream_main);
+            ggml_mul_mat_q5_1_q8_1_cuda(src0_ddq_i, src1_q8_1, dst_ddf_i, ne00, i01_diff, ne11, padded_row_size, nrows_dst, cudaStream_main);
             break;
         case GGML_TYPE_Q8_0:
-            dequantize_mul_mat_vec_q8_0_cuda(src0_ddq_i, src1_dfloat, dst_ddf_i, ne00, nrows, cudaStream_main);
+            ggml_mul_mat_q8_0_q8_1_cuda(src0_ddq_i, src1_q8_1, dst_ddf_i, ne00, i01_diff, ne11, padded_row_size, nrows_dst, cudaStream_main);
             break;
         case GGML_TYPE_Q2_K:
-            dequantize_mul_mat_vec_q2_K_cuda(src0_ddq_i, src1_ddf_i, dst_ddf_i, ne00, nrows, cudaStream_main);
+            ggml_mul_mat_q2_K_q8_1_cuda(src0_ddq_i, src1_q8_1, dst_ddf_i, ne00, i01_diff, ne11, padded_row_size, nrows_dst, cudaStream_main);
             break;
         case GGML_TYPE_Q3_K:
-            dequantize_mul_mat_vec_q3_K_cuda(src0_ddq_i, src1_ddf_i, dst_ddf_i, ne00, nrows, cudaStream_main);
+            ggml_mul_mat_q3_K_q8_1_cuda(src0_ddq_i, src1_q8_1, dst_ddf_i, ne00, i01_diff, ne11, padded_row_size, nrows_dst, cudaStream_main);
             break;
         case GGML_TYPE_Q4_K:
-            dequantize_mul_mat_vec_q4_K_cuda(src0_ddq_i, src1_ddf_i, dst_ddf_i, ne00, nrows, cudaStream_main);
+            ggml_mul_mat_q4_K_q8_1_cuda(src0_ddq_i, src1_q8_1, dst_ddf_i, ne00, i01_diff, ne11, padded_row_size, nrows_dst, cudaStream_main);
             break;
         case GGML_TYPE_Q5_K:
-            dequantize_mul_mat_vec_q5_K_cuda(src0_ddq_i, src1_ddf_i, dst_ddf_i, ne00, nrows, cudaStream_main);
+            ggml_mul_mat_q5_K_q8_1_cuda(src0_ddq_i, src1_q8_1, dst_ddf_i, ne00, i01_diff, ne11, padded_row_size, nrows_dst, cudaStream_main);
             break;
         case GGML_TYPE_Q6_K:
-            dequantize_mul_mat_vec_q6_K_cuda(src0_ddq_i, src1_ddf_i, dst_ddf_i, ne00, nrows, cudaStream_main);
-            break;
-        case GGML_TYPE_F16:
-            convert_mul_mat_vec_f16_cuda(src0_ddq_i, src1_dfloat, dst_ddf_i, ne00, nrows, cudaStream_main);
+            ggml_mul_mat_q6_K_q8_1_cuda(src0_ddq_i, src1_q8_1, dst_ddf_i, ne00, i01_diff, ne11, padded_row_size, nrows_dst, cudaStream_main);
             break;
         default:
             GGML_ASSERT(false);
             break;
     }
 
-#ifdef GGML_CUDA_DMMV_F16
-    if (src1_convert_f16) {
-        ggml_cuda_pool_free(src1_dfloat, ash);
+    ggml_cuda_pool_free(src1_q8_1, as);
+
+    (void) src1;
+    (void) dst;
+    (void) src0_ddf_i;
+    (void) i02;
+    (void) i1;
+}
+
+static int64_t get_row_rounding(ggml_type type) {
+    int max_compute_capability = INT_MIN;
+    for (int id = 0; id < g_device_count; ++id) {
+        if (max_compute_capability < g_compute_capabilities[id]
+                && g_tensor_split[id] < (id + 1 < g_device_count ? g_tensor_split[id + 1] : 1.0f)) {
+            max_compute_capability = g_compute_capabilities[id];
+        }
+    }
+
+    switch(type) {
+        case GGML_TYPE_Q4_0:
+        case GGML_TYPE_Q4_1:
+            return max_compute_capability >= CC_TURING ? 128 : 64;
+        case GGML_TYPE_Q5_0:
+        case GGML_TYPE_Q5_1:
+        case GGML_TYPE_Q8_0:
+            return 64;
+        case GGML_TYPE_F16:
+            return 1;
+        case GGML_TYPE_Q2_K:
+        case GGML_TYPE_Q3_K:
+        case GGML_TYPE_Q4_K:
+        case GGML_TYPE_Q5_K:
+            return max_compute_capability >= CC_TURING ? 128 : 64;
+        case GGML_TYPE_Q6_K:
+            return 64;
+        default:
+            GGML_ASSERT(false);
+    }
+}
+
+inline void ggml_cuda_op_mul_mat_vec(
+    const ggml_tensor * src0, const ggml_tensor * src1, ggml_tensor * dst, char * src0_ddq_i,
+    float * src0_ddf_i, float * src1_ddf_i, float * dst_ddf_i, int64_t i02, int64_t i01_low, int64_t i01_high, int i1,
+    cudaStream_t & cudaStream_main){
+
+    GGML_ASSERT(src0_ddq_i != nullptr);
+    GGML_ASSERT(src1_ddf_i != nullptr);
+    GGML_ASSERT(dst_ddf_i != nullptr);
+
+    const int64_t ne00 = src0->ne[0];
+    const int64_t nrows = i01_high - i01_low;
+
+#ifdef GGML_CUDA_FORCE_DMMV
+    const bool use_mul_mat_vec_q = false;
+    (void) g_compute_capabilities[0];
+#else
+    int id;
+    CUDA_CHECK(cudaGetDevice(&id));
+
+    bool mul_mat_vec_q_implemented =
+        src0->type == GGML_TYPE_Q4_0 ||
+        src0->type == GGML_TYPE_Q4_1 ||
+        src0->type == GGML_TYPE_Q5_0 ||
+        src0->type == GGML_TYPE_Q5_1 ||
+        src0->type == GGML_TYPE_Q8_0;
+#if QK_K == 256
+    mul_mat_vec_q_implemented = mul_mat_vec_q_implemented ||
+        src0->type == GGML_TYPE_Q2_K ||
+        src0->type == GGML_TYPE_Q3_K ||
+        src0->type == GGML_TYPE_Q4_K ||
+        src0->type == GGML_TYPE_Q5_K ||
+        src0->type == GGML_TYPE_Q6_K;
+#endif // QK_K == 256
+
+    const bool use_mul_mat_vec_q = g_compute_capabilities[id] >= MIN_CC_DP4A && mul_mat_vec_q_implemented;
+#endif
+
+    if (use_mul_mat_vec_q) {
+        const int64_t padded_row_size = ne00 % MATRIX_ROW_PADDING == 0 ?
+            ne00 : ne00 - ne00 % MATRIX_ROW_PADDING + MATRIX_ROW_PADDING;
+        size_t as;
+        void * src1_q8_1 = ggml_cuda_pool_malloc(padded_row_size*sizeof(block_q8_1)/QK8_1, &as);
+        quantize_row_q8_1_cuda(src1_ddf_i, src1_q8_1, ne00, 1, padded_row_size, cudaStream_main);
+
+        switch (src0->type) {
+            case GGML_TYPE_Q4_0:
+                mul_mat_vec_q4_0_q8_1_cuda(src0_ddq_i, src1_q8_1, dst_ddf_i, ne00, nrows, cudaStream_main);
+                break;
+            case GGML_TYPE_Q4_1:
+                mul_mat_vec_q4_1_q8_1_cuda(src0_ddq_i, src1_q8_1, dst_ddf_i, ne00, nrows, cudaStream_main);
+                break;
+            case GGML_TYPE_Q5_0:
+                mul_mat_vec_q5_0_q8_1_cuda(src0_ddq_i, src1_q8_1, dst_ddf_i, ne00, nrows, cudaStream_main);
+                break;
+            case GGML_TYPE_Q5_1:
+                mul_mat_vec_q5_1_q8_1_cuda(src0_ddq_i, src1_q8_1, dst_ddf_i, ne00, nrows, cudaStream_main);
+                break;
+            case GGML_TYPE_Q8_0:
+                mul_mat_vec_q8_0_q8_1_cuda(src0_ddq_i, src1_q8_1, dst_ddf_i, ne00, nrows, cudaStream_main);
+                break;
+            case GGML_TYPE_Q2_K:
+                mul_mat_vec_q2_K_q8_1_cuda(src0_ddq_i, src1_q8_1, dst_ddf_i, ne00, nrows, cudaStream_main);
+                break;
+            case GGML_TYPE_Q3_K:
+                mul_mat_vec_q3_K_q8_1_cuda(src0_ddq_i, src1_q8_1, dst_ddf_i, ne00, nrows, cudaStream_main);
+                break;
+            case GGML_TYPE_Q4_K:
+                mul_mat_vec_q4_K_q8_1_cuda(src0_ddq_i, src1_q8_1, dst_ddf_i, ne00, nrows, cudaStream_main);
+                break;
+            case GGML_TYPE_Q5_K:
+                mul_mat_vec_q5_K_q8_1_cuda(src0_ddq_i, src1_q8_1, dst_ddf_i, ne00, nrows, cudaStream_main);
+                break;
+            case GGML_TYPE_Q6_K:
+                mul_mat_vec_q6_K_q8_1_cuda(src0_ddq_i, src1_q8_1, dst_ddf_i, ne00, nrows, cudaStream_main);
+                break;
+            default:
+                GGML_ASSERT(false);
+                break;
+        }
+
+        ggml_cuda_pool_free(src1_q8_1, as);
+    } else {
+        // on some GPUs it is faster to convert src1 to half and to use half precision intrinsics
+#ifdef GGML_CUDA_F16
+        size_t ash;
+        dfloat * src1_dfloat = nullptr; // dfloat == half
+
+        bool src1_convert_f16 = src0->type == GGML_TYPE_Q4_0 || src0->type == GGML_TYPE_Q4_1 ||
+            src0->type == GGML_TYPE_Q5_0 || src0->type == GGML_TYPE_Q5_1 ||
+            src0->type == GGML_TYPE_Q8_0 || src0->type == GGML_TYPE_F16;
+
+        if (src1_convert_f16) {
+            src1_dfloat = (half *) ggml_cuda_pool_malloc(ne00*sizeof(half), &ash);
+            ggml_cpy_f32_f16_cuda((char *) src1_ddf_i, (char *) src1_dfloat, ne00,
+                                    ne00, 1, sizeof(float), 0, 0,
+                                    ne00, 1, sizeof(half),  0, 0, cudaStream_main);
+        }
+#else
+        dfloat * src1_dfloat = src1_ddf_i; // dfloat == float, no conversion
+#endif // GGML_CUDA_F16
+
+        switch (src0->type) {
+            case GGML_TYPE_Q4_0:
+                dequantize_mul_mat_vec_q4_0_cuda(src0_ddq_i, src1_dfloat, dst_ddf_i, ne00, nrows, cudaStream_main);
+                break;
+            case GGML_TYPE_Q4_1:
+                dequantize_mul_mat_vec_q4_1_cuda(src0_ddq_i, src1_dfloat, dst_ddf_i, ne00, nrows, cudaStream_main);
+                break;
+            case GGML_TYPE_Q5_0:
+                dequantize_mul_mat_vec_q5_0_cuda(src0_ddq_i, src1_dfloat, dst_ddf_i, ne00, nrows, cudaStream_main);
+                break;
+            case GGML_TYPE_Q5_1:
+                dequantize_mul_mat_vec_q5_1_cuda(src0_ddq_i, src1_dfloat, dst_ddf_i, ne00, nrows, cudaStream_main);
+                break;
+            case GGML_TYPE_Q8_0:
+                dequantize_mul_mat_vec_q8_0_cuda(src0_ddq_i, src1_dfloat, dst_ddf_i, ne00, nrows, cudaStream_main);
+                break;
+            case GGML_TYPE_Q2_K:
+                dequantize_mul_mat_vec_q2_K_cuda(src0_ddq_i, src1_ddf_i, dst_ddf_i, ne00, nrows, cudaStream_main);
+                break;
+            case GGML_TYPE_Q3_K:
+                dequantize_mul_mat_vec_q3_K_cuda(src0_ddq_i, src1_ddf_i, dst_ddf_i, ne00, nrows, cudaStream_main);
+                break;
+            case GGML_TYPE_Q4_K:
+                dequantize_mul_mat_vec_q4_K_cuda(src0_ddq_i, src1_ddf_i, dst_ddf_i, ne00, nrows, cudaStream_main);
+                break;
+            case GGML_TYPE_Q5_K:
+                dequantize_mul_mat_vec_q5_K_cuda(src0_ddq_i, src1_ddf_i, dst_ddf_i, ne00, nrows, cudaStream_main);
+                break;
+            case GGML_TYPE_Q6_K:
+                dequantize_mul_mat_vec_q6_K_cuda(src0_ddq_i, src1_ddf_i, dst_ddf_i, ne00, nrows, cudaStream_main);
+                break;
+            case GGML_TYPE_F16:
+                convert_mul_mat_vec_f16_cuda(src0_ddq_i, src1_dfloat, dst_ddf_i, ne00, nrows, cudaStream_main);
+                break;
+            default:
+                GGML_ASSERT(false);
+                break;
+        }
+
+#ifdef GGML_CUDA_F16
+        if (src1_convert_f16) {
+            ggml_cuda_pool_free(src1_dfloat, ash);
+        }
+#endif // GGML_CUDA_F16
     }
-#endif // GGML_CUDA_DMMV_F16
 
     (void) src1;
     (void) dst;
@@ -2241,25 +5649,82 @@ inline void ggml_cuda_op_rope(
     GGML_ASSERT(dst_ddf_i != nullptr);
 
     const int64_t ne00 = src0->ne[0];
+    const int64_t ne01 = src0->ne[1];
     const int64_t i01_diff = i01_high - i01_low;
 
-    const int n_past = ((int32_t *) src1->data)[0];
-    const int n_dims = ((int32_t *) src1->data)[1];
-    const int mode   = ((int32_t *) src1->data)[2];
-    GGML_ASSERT(mode == 0);
+    const int n_past = ((int32_t *) dst->op_params)[0];
+    const int n_dims = ((int32_t *) dst->op_params)[1];
+    const int mode   = ((int32_t *) dst->op_params)[2];
+    const int n_ctx  = ((int32_t *) dst->op_params)[3];
+    // RoPE alteration for extended context
+
+    float freq_base, freq_scale;
+    memcpy(&freq_base,  (int32_t *) dst->op_params + 4, sizeof(float));
+    memcpy(&freq_scale, (int32_t *) dst->op_params + 5, sizeof(float));
+
+    const float theta_scale = powf(freq_base, -2.0f/n_dims);
 
-    const float theta_scale = powf(10000.0, -2.0f/n_dims);
-    const float p = ((mode & 1) == 0 ? n_past + i02 : i02);
+    const bool is_neox = mode & 2;
+    const bool is_glm  = mode & 4;
 
     // compute
-    rope_f32_cuda(src0_ddf_i, dst_ddf_i, ne00, i01_diff, p, theta_scale, cudaStream_main);
+    if (is_glm) {
+        const float p = (((mode & 1) == 0 ? n_past + i02 : i02)) * freq_scale;
+        const float id_p = min(p, n_ctx - 2.f);
+        const float block_p = max(p - (n_ctx - 2.f), 0.f);
+        rope_glm_f32_cuda(src0_ddf_i, dst_ddf_i, ne00, i01_diff, id_p, block_p, theta_scale, cudaStream_main);
+    } else if (is_neox) {
+        GGML_ASSERT(ne00 == n_dims && "ne00 != n_dims is not implemented for CUDA yet");
+        const float p0 = (((mode & 1) == 0 ? n_past : 0)) * freq_scale;
+        rope_neox_f32_cuda(src0_ddf_i, dst_ddf_i, ne00, i01_diff, p0, freq_scale, ne01, theta_scale, cudaStream_main);
+    } else {
+        const float p0 = (((mode & 1) == 0 ? n_past : 0)) * freq_scale;
+        rope_f32_cuda(src0_ddf_i, dst_ddf_i, ne00, i01_diff, p0, freq_scale, ne01, theta_scale, cudaStream_main);
+    }
 
+    (void) src1;
     (void) dst;
     (void) src0_ddq_i;
     (void) src1_ddf_i;
     (void) i1;
 }
 
+inline void ggml_cuda_op_alibi(
+    const ggml_tensor * src0, const ggml_tensor * src1, ggml_tensor * dst, char * src0_ddq_i,
+    float * src0_ddf_i, float * src1_ddf_i, float * dst_ddf_i, int64_t i02, int64_t i01_low, int64_t i01_high, int i1,
+    cudaStream_t & cudaStream_main){
+
+    GGML_ASSERT(src0_ddf_i != nullptr);
+    GGML_ASSERT(dst_ddf_i != nullptr);
+
+    const int64_t ne00 = src0->ne[0];
+    const int64_t ne01 = src0->ne[1];
+    const int64_t ne02 = src0->ne[2];
+    const int64_t i01_diff = i01_high - i01_low;
+
+    const int n_past = ((int32_t *) dst->op_params)[0];
+    const int n_head = ((int32_t *) dst->op_params)[1];
+    float max_bias;
+    memcpy(&max_bias, (int32_t *) dst->op_params + 2, sizeof(float));
+
+    GGML_ASSERT(ne01 + n_past == ne00);
+    GGML_ASSERT(n_head == ne02);
+
+    const int n_heads_log2_floor = 1 << (int) floor(log2(n_head));
+
+    const float m0 = powf(2.0f, -(max_bias) / n_heads_log2_floor);
+    const float m1 = powf(2.0f, -(max_bias / 2.0f) / n_heads_log2_floor);
+
+    // compute
+    alibi_f32_cuda(src0_ddf_i, dst_ddf_i, ne00, i01_diff, ne01, n_heads_log2_floor, m0, m1, cudaStream_main);
+
+    (void) src1;
+    (void) src0_ddq_i;
+    (void) src1_ddf_i;
+    (void) i02;
+    (void) i1;
+}
+
 inline void ggml_cuda_op_diag_mask_inf(
     const ggml_tensor * src0, const ggml_tensor * src1, ggml_tensor * dst, char * src0_ddq_i,
     float * src0_ddf_i, float * src1_ddf_i, float * dst_ddf_i, int64_t i02, int64_t i01_low, int64_t i01_high, int i1,
@@ -2272,11 +5737,12 @@ inline void ggml_cuda_op_diag_mask_inf(
     const int64_t ne01 = src0->ne[1];
     const int64_t i01_diff = i01_high - i01_low;
 
-    const int n_past = ((int32_t *) src1->data)[0];
+    const int n_past = ((int32_t *) dst->op_params)[0];
 
     // compute
     diag_mask_inf_f32_cuda(src0_ddf_i, dst_ddf_i, ne00, i01_diff, ne01, n_past, cudaStream_main);
 
+    (void) src1;
     (void) dst;
     (void) src0_ddq_i;
     (void) src1_ddf_i;
@@ -2344,6 +5810,9 @@ static void ggml_cuda_op(const ggml_tensor * src0, const ggml_tensor * src1, ggm
     const int64_t ne11 = use_src1 ? src1->ne[1] : 1;
     const int64_t ne12 = use_src1 ? src1->ne[2] : 1;
     const int64_t ne13 = use_src1 ? src1->ne[3] : 1;
+    const int64_t nrows1 = use_src1 ? ggml_nrows(src1) : 1;
+
+    GGML_ASSERT(ne03 == ne13);
 
     const int64_t ne0 = dst->ne[0];
     const int64_t ne1 = dst->ne[1];
@@ -2355,12 +5824,19 @@ static void ggml_cuda_op(const ggml_tensor * src0, const ggml_tensor * src1, ggm
     GGML_ASSERT(!use_src1 || src1->backend != GGML_BACKEND_GPU_SPLIT);
 
     // strides for iteration over dims 3 and 2
-    const int64_t num_iters = flatten_rows ? 1 : ne02 * ne03;
-    const int64_t stride_mod = flatten_rows ? ne02 * ne03 : 1;
+    const int64_t num_iters_0 = ne02 >= ne12 ? ne02*ne03 : ne12*ne13;
+    const int64_t num_iters = flatten_rows ? 1 : num_iters_0;
+    const int64_t stride_mod = flatten_rows ? num_iters_0 : 1;
     const int64_t src0_stride = ne00 * ne01 * stride_mod;
     const int64_t src1_stride = ne10 * ne11 * stride_mod;
     const int64_t dst_stride = ne0 * ne1 * stride_mod;
 
+    const int64_t rows_per_iter = flatten_rows ? nrows0 : ne01;
+    const int64_t i03_max = flatten_rows ? 1 : ne03;
+    const int64_t i02_max = flatten_rows ? 1 : (ne02 >= ne12 ? ne02 : ne12);
+    const int64_t i02_divisor = ne02 >= ne12 ? 1 : ne12 / ne02;
+    GGML_ASSERT(!(flatten_rows && ne02 < ne12));
+
     const size_t src0_ts = ggml_type_size(src0->type);
     const size_t src0_bs = ggml_blck_size(src0->type);
 
@@ -2377,6 +5853,7 @@ static void ggml_cuda_op(const ggml_tensor * src0, const ggml_tensor * src1, ggm
         dst->op == GGML_OP_SCALE || dst->op == GGML_OP_DIAG_MASK_INF || dst->op == GGML_OP_ROPE);
 
     const bool split = src0->backend == GGML_BACKEND_GPU_SPLIT;
+    GGML_ASSERT(!(split && ne02 < ne12));
 
     const to_fp32_cuda_t to_fp32_cuda = ggml_get_to_fp32_cuda(src0->type);
 
@@ -2409,11 +5886,20 @@ static void ggml_cuda_op(const ggml_tensor * src0, const ggml_tensor * src1, ggm
 
         int64_t row_low, row_high;
         if (split) {
+            const int64_t rounding = get_row_rounding(src0->type);
+
             row_low = id == 0 ? 0 : nrows0*g_tensor_split[id];
-            row_high = id == g_device_count - 1 ? nrows0 : nrows0*g_tensor_split[id + 1];
+            row_low -= row_low % rounding;
+
+            if (id == g_device_count - 1) {
+                row_high = nrows0;
+            } else {
+                row_high = nrows0*g_tensor_split[id + 1];
+                row_high -= row_high % rounding;
+            }
         } else {
             row_low = 0;
-            row_high = nrows0;
+            row_high = nrows0*i02_divisor;
         }
         if (row_low == row_high) {
             continue;
@@ -2461,16 +5947,12 @@ static void ggml_cuda_op(const ggml_tensor * src0, const ggml_tensor * src1, ggm
             dst_ddf[id] = (float *) ggml_cuda_pool_malloc(size_dst_ddf, &dst_asf[id]);
         }
 
-        const int64_t i03_max = flatten_rows ? 1 : ne03;
-        const int64_t i02_max = flatten_rows ? 1 : ne02;
-        const int64_t rows_per_iter = flatten_rows ? nrows0 : ne01;
-
         for (int64_t i03 = 0; i03 < i03_max; i03++) {
             const int64_t i13 = i03 % ne13;
             for (int64_t i02 = 0; i02 < i02_max; i02++) {
                 const int64_t i12 = i02 % ne12;
 
-                const int64_t i0 = i03*ne02 + i02;
+                const int64_t i0 = i03*i02_max + i02;
 
                 // i0 values that contain the lower/upper rows for a split tensor when using multiple GPUs
                 const int64_t i0_offset_low = row_low/rows_per_iter;
@@ -2504,10 +5986,10 @@ static void ggml_cuda_op(const ggml_tensor * src0, const ggml_tensor * src1, ggm
                 const int64_t i11 = i13*ne12 + i12;
 
                 // for split tensors the data begins at i0 == i0_offset_low
-                char  * src0_ddq_i = src0_ddq[id] + (i0 - i0_offset_low)*src0_stride*src0_ts/src0_bs;
-                float * src0_ddf_i = src0_ddf[id] + (i0 - i0_offset_low)*src0_stride;
+                char  * src0_ddq_i = src0_ddq[id] + (i0/i02_divisor - i0_offset_low)*src0_stride*src0_ts/src0_bs;
+                float * src0_ddf_i = src0_ddf[id] + (i0/i02_divisor - i0_offset_low)*src0_stride;
                 float * src1_ddf_i = src1_ddf[id] + i11*src1_stride;
-                float * dst_ddf_i  =  dst_ddf[id] + (i0 - i0_offset_low)*dst_stride;
+                float * dst_ddf_i  =  dst_ddf[id] + (i0             - i0_offset_low)*dst_stride;
 
                 // for split tensors the data pointer needs to be rounded down
                 // to the bin edge for i03, i02 bins beyond the first
@@ -2546,11 +6028,11 @@ static void ggml_cuda_op(const ggml_tensor * src0, const ggml_tensor * src1, ggm
                     }
                 }
 
-                if (!src0_on_device || !src0_is_contiguous) {
+                if ((!src0_on_device || !src0_is_contiguous) && i02 % i02_divisor == 0) {
                     if (src0_is_f32) {
-                        CUDA_CHECK(ggml_cuda_cpy_tensor_2d(src0_ddf_i, src0, i03, i02, i01_low, i01_high, cudaStream_main));
+                        CUDA_CHECK(ggml_cuda_cpy_tensor_2d(src0_ddf_i, src0, i03, i02/i02_divisor, i01_low, i01_high, cudaStream_main));
                     } else {
-                        CUDA_CHECK(ggml_cuda_cpy_tensor_2d(src0_ddq_i, src0, i03, i02, i01_low, i01_high, cudaStream_main));
+                        CUDA_CHECK(ggml_cuda_cpy_tensor_2d(src0_ddq_i, src0, i03, i02/i02_divisor, i01_low, i01_high, cudaStream_main));
                     }
                 }
 
@@ -2580,13 +6062,12 @@ static void ggml_cuda_op(const ggml_tensor * src0, const ggml_tensor * src1, ggm
                     if (split) {
                         // src0 = weight matrix is saved as a transposed matrix for better memory layout.
                         // dst is NOT transposed.
-                        // The outputs of cuBLAS matrix matrix multiplications can therefore NOT simply be concatenated for >1 GPU.
+                        // The outputs of matrix matrix multiplications can therefore NOT simply be concatenated for >1 GPU.
                         // Instead they need to be copied to the correct slice in ne0 = dst row index.
                         // If dst is a vector with ne0 == 1 then you don't have to do this but it still produces correct results.
-                        for (int64_t j = 0; j < ne1; ++j) {
-                            float * dhf_dst_i = (float *) ((char *) dst_off_device + (j*ne0 + i01_low)*sizeof(float) + i02*nb2 + i03*nb3);
-                            CUDA_CHECK(cudaMemcpyAsync(dhf_dst_i, dst_ddf_i + j*i01_diff, i01_diff*sizeof(float), kind, cudaStream_main));
-                        }
+                        float * dhf_dst_i = (float *) ((char *) dst_off_device + i01_low*sizeof(float) + i02*nb2 + i03*nb3);
+                        CUDA_CHECK(cudaMemcpy2DAsync(dhf_dst_i, ne0*sizeof(float), dst_ddf_i, i01_diff*sizeof(float),
+                                                     i01_diff*sizeof(float), ne1, kind, cudaStream_main));
                     } else {
                         float * dhf_dst_i = (float *) ((char *) dst_off_device + i02*nb2 + i03*nb3);
                         CUDA_CHECK(cudaMemcpyAsync(dhf_dst_i, dst_ddf_i, dst_stride*sizeof(float), kind, cudaStream_main));
@@ -2627,7 +6108,7 @@ static void ggml_cuda_op(const ggml_tensor * src0, const ggml_tensor * src1, ggm
     if (split && g_device_count > 1) {
         CUDA_CHECK(cudaSetDevice(g_main_device));
         for (int id = 0; id < g_device_count; ++id) {
-            if (id != g_main_device) {
+            if (id != g_main_device && src0_extra->events[id]) {
                 CUDA_CHECK(cudaStreamWaitEvent(g_cudaStreams_main[g_main_device], src0_extra->events[id]));
             }
         }
@@ -2655,11 +6136,21 @@ void ggml_cuda_mul(const ggml_tensor * src0, const ggml_tensor * src1, ggml_tens
     ggml_cuda_op(src0, src1, dst, ggml_cuda_op_mul, true, false); // TODO ggml_cuda_op needs modification for flatten
 }
 
+void ggml_cuda_gelu(const ggml_tensor * src0, const ggml_tensor * src1, ggml_tensor * dst) {
+    GGML_ASSERT(src0->type == GGML_TYPE_F32 && dst->type == GGML_TYPE_F32);
+    ggml_cuda_op(src0, src1, dst, ggml_cuda_op_gelu, true, true);
+}
+
 void ggml_cuda_silu(const ggml_tensor * src0, const ggml_tensor * src1, ggml_tensor * dst) {
     GGML_ASSERT(src0->type == GGML_TYPE_F32 && dst->type == GGML_TYPE_F32);
     ggml_cuda_op(src0, src1, dst, ggml_cuda_op_silu, true, true);
 }
 
+void ggml_cuda_norm(const ggml_tensor * src0, const ggml_tensor * src1, ggml_tensor * dst) {
+    GGML_ASSERT(src0->type == GGML_TYPE_F32 && dst->type == GGML_TYPE_F32);
+    ggml_cuda_op(src0, src1, dst, ggml_cuda_op_norm, true, true);
+}
+
 void ggml_cuda_rms_norm(const ggml_tensor * src0, const ggml_tensor * src1, ggml_tensor * dst) {
     GGML_ASSERT(src0->type == GGML_TYPE_F32 && dst->type == GGML_TYPE_F32);
     ggml_cuda_op(src0, src1, dst, ggml_cuda_op_rms_norm, true, true);
@@ -2694,6 +6185,8 @@ void ggml_cuda_mul_mat_vec_p021(const ggml_tensor * src0, const ggml_tensor * sr
     const int64_t ne01 = src0->ne[1];
     const int64_t ne02 = src0->ne[2];
 
+    const int64_t ne12 = src1->ne[2];
+
     CUDA_CHECK(cudaSetDevice(g_main_device));
     cudaStream_t cudaStream_main = g_cudaStreams_main[g_main_device];
 
@@ -2706,7 +6199,7 @@ void ggml_cuda_mul_mat_vec_p021(const ggml_tensor * src0, const ggml_tensor * sr
     struct ggml_tensor_extra_gpu * dst_extra = (ggml_tensor_extra_gpu *) dst->extra;
     float * dst_ddf = (float *) dst_extra->data_device[g_main_device];
 
-    ggml_mul_mat_p021_f16_f32_cuda(src0_ddq, src1_ddf, dst_ddf, ne00, ne01, ne02, cudaStream_main);
+    ggml_mul_mat_p021_f16_f32_cuda(src0_ddq, src1_ddf, dst_ddf, ne00, ne01, ne02, ne12, cudaStream_main);
 }
 
 void ggml_cuda_mul_mat_vec_nc(const ggml_tensor * src0, const ggml_tensor * src1, ggml_tensor * dst){
@@ -2720,6 +6213,8 @@ void ggml_cuda_mul_mat_vec_nc(const ggml_tensor * src0, const ggml_tensor * src1
     const int64_t ne01 = src0->ne[1];
     const int64_t ne02 = src0->ne[2];
 
+    const int64_t ne12 = src1->ne[2];
+
     const int64_t nb01 = src0->nb[1];
     const int64_t nb02 = src0->nb[2];
 
@@ -2738,7 +6233,7 @@ void ggml_cuda_mul_mat_vec_nc(const ggml_tensor * src0, const ggml_tensor * src1
     const int row_stride_x = nb01 / sizeof(half);
     const int channel_stride_x = nb02 / sizeof(half);
 
-    ggml_mul_mat_vec_nc_f16_f32_cuda(src0_ddq, src1_ddf, dst_ddf, ne00, ne01, row_stride_x, ne02, channel_stride_x, cudaStream_main);
+    ggml_mul_mat_vec_nc_f16_f32_cuda(src0_ddq, src1_ddf, dst_ddf, ne00, ne01, row_stride_x, ne02, ne12, channel_stride_x, cudaStream_main);
 }
 
 void ggml_cuda_mul_mat(const ggml_tensor * src0, const ggml_tensor * src1, ggml_tensor * dst) {
@@ -2752,10 +6247,22 @@ void ggml_cuda_mul_mat(const ggml_tensor * src0, const ggml_tensor * src1, ggml_
     }else if (src0->type == GGML_TYPE_F32) {
         ggml_cuda_op(src0, src1, dst, ggml_cuda_op_mul_mat_cublas, true, false);
     } else if (ggml_is_quantized(src0->type) || src0->type == GGML_TYPE_F16) {
-        if (src1->ne[1] == 1 && src0->ne[0] % GGML_CUDA_DMMV_X == 0 && src0->ne[1] % GGML_CUDA_DMMV_Y == 0) {
-            ggml_cuda_op(src0, src1, dst, ggml_cuda_op_dequantize_mul_mat_vec, false, false);
+        if (src1->ne[1] == 1 && src0->ne[0] % GGML_CUDA_DMMV_X == 0) {
+            ggml_cuda_op(src0, src1, dst, ggml_cuda_op_mul_mat_vec, false, false);
         } else {
-            ggml_cuda_op(src0, src1, dst, ggml_cuda_op_mul_mat_cublas, true, false);
+            int min_compute_capability = INT_MAX;
+            for (int id = 0; id < g_device_count; ++id) {
+                if (min_compute_capability > g_compute_capabilities[id]
+                        && g_tensor_split[id] < (id + 1 < g_device_count ? g_tensor_split[id + 1] : 1.0f)) {
+                    min_compute_capability = g_compute_capabilities[id];
+                }
+            }
+
+            if (g_mul_mat_q && ggml_is_quantized(src0->type) && min_compute_capability >= MIN_CC_DP4A) {
+                ggml_cuda_op(src0, src1, dst, ggml_cuda_op_mul_mat_q, false, false);
+            } else {
+                ggml_cuda_op(src0, src1, dst, ggml_cuda_op_mul_mat_cublas, true, false);
+            }
         }
     } else {
         GGML_ASSERT(false);
@@ -2815,6 +6322,11 @@ void ggml_cuda_cpy(const ggml_tensor * src0, const ggml_tensor * src1, ggml_tens
     (void) dst;
 }
 
+void ggml_cuda_dup(const ggml_tensor * src0, const ggml_tensor * src1, ggml_tensor * dst) {
+    ggml_cuda_cpy(src0, dst, nullptr);
+    (void) src1;
+}
+
 void ggml_cuda_diag_mask_inf(const ggml_tensor * src0, const ggml_tensor * src1, ggml_tensor * dst) {
     GGML_ASSERT(src0->type == GGML_TYPE_F32 && dst->type == GGML_TYPE_F32);
     ggml_cuda_op(src0, src1, dst, ggml_cuda_op_diag_mask_inf, true, true);
@@ -2827,7 +6339,17 @@ void ggml_cuda_soft_max(const ggml_tensor * src0, const ggml_tensor * src1, ggml
 
 void ggml_cuda_rope(const ggml_tensor * src0, const ggml_tensor * src1, ggml_tensor * dst) {
     GGML_ASSERT(src0->type == GGML_TYPE_F32 && dst->type == GGML_TYPE_F32);
-    ggml_cuda_op(src0, src1, dst, ggml_cuda_op_rope, true, false); // FIXME flatten changes results
+    GGML_ASSERT(ggml_is_contiguous(src0)); // TODO: this restriction is temporary until non-cont support is implemented
+
+    const int mode = ((int32_t *) dst->op_params)[2];
+    const bool is_glm = mode & 4;
+
+    ggml_cuda_op(src0, src1, dst, ggml_cuda_op_rope, true, !is_glm); // flatten support not implemented for glm
+}
+
+void ggml_cuda_alibi(const ggml_tensor * src0, const ggml_tensor * src1, ggml_tensor * dst) {
+    GGML_ASSERT(src0->type == GGML_TYPE_F32 && dst->type == GGML_TYPE_F32);
+    ggml_cuda_op(src0, src1, dst, ggml_cuda_op_alibi, true, true);
 }
 
 void ggml_cuda_nop(const ggml_tensor * src0, const ggml_tensor * src1, ggml_tensor * dst) {
@@ -2838,7 +6360,11 @@ void ggml_cuda_nop(const ggml_tensor * src0, const ggml_tensor * src1, ggml_tens
 
 void ggml_cuda_transform_tensor(void * data, struct ggml_tensor * tensor) {
     int nrows = ggml_nrows(tensor);
+
+    const int64_t ne0 = tensor->ne[0];
+
     const size_t nb1 = tensor->nb[1];
+
     ggml_backend backend = tensor->backend;
     struct ggml_tensor_extra_gpu * extra = new struct ggml_tensor_extra_gpu;
     memset(extra, 0, sizeof(*extra));
@@ -2855,8 +6381,17 @@ void ggml_cuda_transform_tensor(void * data, struct ggml_tensor * tensor) {
             row_low = 0;
             row_high = nrows;
         } else if (backend == GGML_BACKEND_GPU_SPLIT) {
+            const int64_t rounding = get_row_rounding(tensor->type);
+
             row_low = id == 0 ? 0 : nrows*g_tensor_split[id];
-            row_high = id == g_device_count - 1 ? nrows : nrows*g_tensor_split[id + 1];
+            row_low -= row_low % rounding;
+
+            if (id == g_device_count - 1) {
+                row_high = nrows;
+            } else {
+                row_high = nrows*g_tensor_split[id + 1];
+                row_high -= row_high % rounding;
+            }
         } else {
             GGML_ASSERT(false);
         }
@@ -2867,13 +6402,26 @@ void ggml_cuda_transform_tensor(void * data, struct ggml_tensor * tensor) {
         int64_t nrows_split = row_high - row_low;
 
         const size_t offset_split = row_low*nb1;
-        const size_t size = ggml_nbytes_split(tensor, nrows_split);
+        size_t size = ggml_nbytes_split(tensor, nrows_split);
+        const size_t original_size = size;
+
+        // pad last row to a multiple of 512 elements to avoid out-of-bounds memory accesses
+        if (ne0 % MATRIX_ROW_PADDING != 0) {
+            size += (MATRIX_ROW_PADDING - ne0 % MATRIX_ROW_PADDING)
+                * ggml_type_size(tensor->type)/ggml_blck_size(tensor->type);
+        }
 
-        void * buf;
+        char * buf;
         CUDA_CHECK(cudaMalloc(&buf, size));
-        void * buf_host = (char*)data + offset_split;
+        char * buf_host = (char*)data + offset_split;
+
+        // set padding to 0 to avoid possible NaN values
+        if (size > original_size) {
+            CUDA_CHECK(cudaMemset(buf + original_size, 0, size - original_size));
+        }
+
 
-        cudaMemcpy(buf, buf_host, size, cudaMemcpyHostToDevice);
+        CUDA_CHECK(cudaMemcpy(buf, buf_host, original_size, cudaMemcpyHostToDevice));
 
         extra->data_device[id] = buf;
 
@@ -2886,7 +6434,7 @@ void ggml_cuda_transform_tensor(void * data, struct ggml_tensor * tensor) {
 }
 
 void ggml_cuda_free_data(struct ggml_tensor * tensor) {
-    if (tensor->backend != GGML_BACKEND_GPU && tensor->backend != GGML_BACKEND_GPU_SPLIT) {
+    if (!tensor || (tensor->backend != GGML_BACKEND_GPU && tensor->backend != GGML_BACKEND_GPU_SPLIT) ) {
         return;
     }
 
@@ -2907,43 +6455,65 @@ void ggml_cuda_free_data(struct ggml_tensor * tensor) {
     delete extra;
 }
 
-void ggml_cuda_assign_buffers_impl(struct ggml_tensor * tensor, bool scratch, bool force_inplace) {
+static struct ggml_tensor_extra_gpu * g_temp_tensor_extras = nullptr;
+static size_t g_temp_tensor_extra_index = 0;
+
+static struct ggml_tensor_extra_gpu * ggml_cuda_alloc_temp_tensor_extra() {
+    if (g_temp_tensor_extras == nullptr) {
+        g_temp_tensor_extras = new ggml_tensor_extra_gpu[GGML_MAX_NODES];
+    }
+
+    size_t alloc_index = g_temp_tensor_extra_index;
+    g_temp_tensor_extra_index = (g_temp_tensor_extra_index + 1) % GGML_MAX_NODES;
+    struct ggml_tensor_extra_gpu * extra = &g_temp_tensor_extras[alloc_index];
+    memset(extra, 0, sizeof(*extra));
+
+    return extra;
+}
+
+void ggml_cuda_assign_buffers_impl(struct ggml_tensor * tensor, bool scratch, bool force_inplace, bool no_alloc) {
     if (scratch && g_scratch_size == 0) {
         return;
     }
 
     // recursively assign CUDA buffers until a compute tensor is found
-    if (tensor->src0 != nullptr && tensor->src0->backend == GGML_BACKEND_CPU) {
-        const ggml_op src0_op = tensor->src0->op;
-        if (src0_op == GGML_OP_RESHAPE || src0_op == GGML_OP_TRANSPOSE || src0_op == GGML_OP_VIEW) {
-            ggml_cuda_assign_buffers_impl(tensor->src0, scratch, force_inplace);
+    if (tensor->src[0] != nullptr && tensor->src[0]->backend == GGML_BACKEND_CPU) {
+        const ggml_op src0_op = tensor->src[0]->op;
+        if (src0_op == GGML_OP_RESHAPE || src0_op == GGML_OP_TRANSPOSE || src0_op == GGML_OP_VIEW || src0_op == GGML_OP_PERMUTE) {
+            ggml_cuda_assign_buffers_impl(tensor->src[0], scratch, force_inplace, no_alloc);
         }
     }
-    if (tensor->op == GGML_OP_CPY && tensor->src1->backend == GGML_BACKEND_CPU) {
-        ggml_cuda_assign_buffers_impl(tensor->src1, scratch, force_inplace);
+    if (tensor->op == GGML_OP_CPY && tensor->src[1]->backend == GGML_BACKEND_CPU) {
+        ggml_cuda_assign_buffers_impl(tensor->src[1], scratch, force_inplace, no_alloc);
     }
 
     tensor->backend = GGML_BACKEND_GPU;
-    struct ggml_tensor_extra_gpu * extra = new ggml_tensor_extra_gpu;
-    memset(extra, 0, sizeof(*extra));
 
-    const bool inplace = (tensor->src0 != nullptr && tensor->src0->data == tensor->data) ||
+    if (scratch && no_alloc) {
+        return;
+    }
+
+    struct ggml_tensor_extra_gpu * extra;
+
+    const bool inplace = (tensor->src[0] != nullptr && tensor->src[0]->data == tensor->data) ||
         tensor->op == GGML_OP_VIEW ||
         force_inplace;
     const size_t size = ggml_nbytes(tensor);
 
     CUDA_CHECK(cudaSetDevice(g_main_device));
-    if (inplace && (tensor->src0->backend == GGML_BACKEND_GPU || tensor->src0->backend == GGML_BACKEND_GPU_SPLIT)) {
-        struct ggml_tensor_extra_gpu * src0_extra = (ggml_tensor_extra_gpu * ) tensor->src0->extra;
+    if (inplace && (tensor->src[0]->backend == GGML_BACKEND_GPU || tensor->src[0]->backend == GGML_BACKEND_GPU_SPLIT)) {
+        struct ggml_tensor_extra_gpu * src0_extra = (ggml_tensor_extra_gpu * ) tensor->src[0]->extra;
         char * src0_ddc = (char *) src0_extra->data_device[g_main_device];
         size_t offset = 0;
         if (tensor->op == GGML_OP_VIEW) {
-            memcpy(&offset, tensor->opt[0]->data, sizeof(size_t));
+            memcpy(&offset, tensor->op_params, sizeof(size_t));
         }
+        extra = ggml_cuda_alloc_temp_tensor_extra();
         extra->data_device[g_main_device] = src0_ddc + offset;
     } else if (tensor->op == GGML_OP_CPY) {
-        struct ggml_tensor_extra_gpu * src1_extra = (ggml_tensor_extra_gpu * ) tensor->src1->extra;
+        struct ggml_tensor_extra_gpu * src1_extra = (ggml_tensor_extra_gpu * ) tensor->src[1]->extra;
         void * src1_ddv = src1_extra->data_device[g_main_device];
+        extra = ggml_cuda_alloc_temp_tensor_extra();
         extra->data_device[g_main_device] = src1_ddv;
     } else if (scratch) {
         GGML_ASSERT(size <= g_scratch_size);
@@ -2956,6 +6526,7 @@ void ggml_cuda_assign_buffers_impl(struct ggml_tensor * tensor, bool scratch, bo
             CUDA_CHECK(cudaMalloc(&data, g_scratch_size));
             g_scratch_buffer = data;
         }
+        extra = ggml_cuda_alloc_temp_tensor_extra();
         extra->data_device[g_main_device] = data + g_scratch_offset;
 
         g_scratch_offset += size;
@@ -2965,22 +6536,56 @@ void ggml_cuda_assign_buffers_impl(struct ggml_tensor * tensor, bool scratch, bo
         void * data;
         CUDA_CHECK(cudaMalloc(&data, size));
         CUDA_CHECK(cudaMemset(data, 0, size));
+        extra = new ggml_tensor_extra_gpu;
+        memset(extra, 0, sizeof(*extra));
         extra->data_device[g_main_device] = data;
     }
 
     tensor->extra = extra;
 }
 
+void ggml_cuda_assign_scratch_offset(struct ggml_tensor * tensor, size_t offset) {
+    if (g_scratch_size == 0) {
+        return;
+    }
+    if (g_scratch_buffer == nullptr) {
+        CUDA_CHECK(cudaMalloc(&g_scratch_buffer, g_scratch_size));
+    }
+
+    struct ggml_tensor_extra_gpu * extra = ggml_cuda_alloc_temp_tensor_extra();
+
+    const bool inplace = (tensor->src[0] != nullptr && tensor->src[0]->data == tensor->data) ||
+        tensor->op == GGML_OP_VIEW;
+
+    if (inplace && (tensor->src[0]->backend == GGML_BACKEND_GPU || tensor->src[0]->backend == GGML_BACKEND_GPU_SPLIT)) {
+        struct ggml_tensor_extra_gpu * src0_extra = (ggml_tensor_extra_gpu * ) tensor->src[0]->extra;
+        char * src0_ddc = (char *) src0_extra->data_device[g_main_device];
+        size_t view_offset = 0;
+        if (tensor->op == GGML_OP_VIEW) {
+            memcpy(&view_offset, tensor->op_params, sizeof(size_t));
+        }
+        extra->data_device[g_main_device] = src0_ddc + view_offset;
+    } else {
+        extra->data_device[g_main_device] = (char *) g_scratch_buffer + offset;
+    }
+
+    tensor->extra = extra;
+}
+
 void ggml_cuda_assign_buffers(struct ggml_tensor * tensor) {
-    ggml_cuda_assign_buffers_impl(tensor, true, false);
+    ggml_cuda_assign_buffers_impl(tensor, true, false, false);
+}
+
+void ggml_cuda_assign_buffers_no_alloc(struct ggml_tensor * tensor) {
+    ggml_cuda_assign_buffers_impl(tensor, true, false, true);
 }
 
 void ggml_cuda_assign_buffers_no_scratch(struct ggml_tensor * tensor) {
-    ggml_cuda_assign_buffers_impl(tensor, false, false);
+    ggml_cuda_assign_buffers_impl(tensor, false, false, false);
 }
 
 void ggml_cuda_assign_buffers_force_inplace(struct ggml_tensor * tensor) {
-    ggml_cuda_assign_buffers_impl(tensor, false, true);
+    ggml_cuda_assign_buffers_impl(tensor, false, true, false);
 }
 
 void ggml_cuda_set_main_device(int main_device) {
@@ -2997,6 +6602,10 @@ void ggml_cuda_set_main_device(int main_device) {
     }
 }
 
+void ggml_cuda_set_mul_mat_q(bool mul_mat_q) {
+    g_mul_mat_q = mul_mat_q;
+}
+
 void ggml_cuda_set_scratch_size(size_t scratch_size) {
     g_scratch_size = scratch_size;
 }
@@ -3013,10 +6622,16 @@ void ggml_cuda_free_scratch() {
 bool ggml_cuda_compute_forward(struct ggml_compute_params * params, struct ggml_tensor * tensor){
     ggml_cuda_func_t func;
     const bool any_on_device = tensor->backend == GGML_BACKEND_GPU
-        || (tensor->src0 != nullptr && (tensor->src0->backend == GGML_BACKEND_GPU || tensor->src0->backend == GGML_BACKEND_GPU_SPLIT))
-        || (tensor->src1 != nullptr && tensor->src1->backend == GGML_BACKEND_GPU);
+        || (tensor->src[0] != nullptr && (tensor->src[0]->backend == GGML_BACKEND_GPU || tensor->src[0]->backend == GGML_BACKEND_GPU_SPLIT))
+        || (tensor->src[1] != nullptr && tensor->src[1]->backend == GGML_BACKEND_GPU);
 
     switch (tensor->op) {
+        case GGML_OP_DUP:
+            if (!any_on_device) {
+                return false;
+            }
+            func = ggml_cuda_dup;
+            break;
         case GGML_OP_ADD:
             if (!any_on_device) {
                 return false;
@@ -3029,11 +6644,28 @@ bool ggml_cuda_compute_forward(struct ggml_compute_params * params, struct ggml_
             }
             func = ggml_cuda_mul;
             break;
-        case GGML_OP_SILU:
+        case GGML_OP_UNARY:
+            switch (ggml_get_unary_op(tensor)) {
+                case GGML_UNARY_OP_GELU:
+                    if (!any_on_device) {
+                        return false;
+                    }
+                    func = ggml_cuda_gelu;
+                    break;
+                case GGML_UNARY_OP_SILU:
+                    if (!any_on_device) {
+                        return false;
+                    }
+                    func = ggml_cuda_silu;
+                    break;
+                default:
+                    return false;
+            } break;
+        case GGML_OP_NORM:
             if (!any_on_device) {
                 return false;
             }
-            func = ggml_cuda_silu;
+            func = ggml_cuda_norm;
             break;
         case GGML_OP_RMS_NORM:
             if (!any_on_device) {
@@ -3042,7 +6674,7 @@ bool ggml_cuda_compute_forward(struct ggml_compute_params * params, struct ggml_
             func = ggml_cuda_rms_norm;
             break;
         case GGML_OP_MUL_MAT:
-            if (!any_on_device && !ggml_cuda_can_mul_mat(tensor->src0, tensor->src1, tensor)) {
+            if (!any_on_device && !ggml_cuda_can_mul_mat(tensor->src[0], tensor->src[1], tensor)) {
                 return false;
             }
             func = ggml_cuda_mul_mat;
@@ -3059,6 +6691,12 @@ bool ggml_cuda_compute_forward(struct ggml_compute_params * params, struct ggml_
             }
             func = ggml_cuda_cpy;
             break;
+        case GGML_OP_CONT:
+            if (!any_on_device) {
+                return false;
+            }
+            func = ggml_cuda_dup;
+            break;
         case GGML_OP_RESHAPE:
         case GGML_OP_VIEW:
         case GGML_OP_PERMUTE:
@@ -3086,6 +6724,12 @@ bool ggml_cuda_compute_forward(struct ggml_compute_params * params, struct ggml_
             }
             func = ggml_cuda_rope;
             break;
+        case GGML_OP_ALIBI:
+            if (!any_on_device) {
+                return false;
+            }
+            func = ggml_cuda_alibi;
+            break;
         default:
             return false;
     }
@@ -3096,6 +6740,18 @@ bool ggml_cuda_compute_forward(struct ggml_compute_params * params, struct ggml_
     if (params->type == GGML_TASK_INIT || params->type == GGML_TASK_FINALIZE) {
         return true;
     }
-    func(tensor->src0, tensor->src1, tensor);
+    func(tensor->src[0], tensor->src[1], tensor);
     return true;
 }
+
+int ggml_cuda_get_device_count() {
+    int device_count;
+    CUDA_CHECK(cudaGetDeviceCount(&device_count));
+    return device_count;
+}
+
+void ggml_cuda_get_device_description(int device, char * description, size_t description_size) {
+    cudaDeviceProp prop;
+    CUDA_CHECK(cudaGetDeviceProperties(&prop, device));
+    snprintf(description, description_size, "%s", prop.name);
+}
index 3c1e8deb6a6ddbfbb43e22bd01cc64e560fe313d..a72e82069b9f1430fdbcc007f93ae26ea6c2f924 100644 (file)
@@ -2,34 +2,44 @@
 
 #include "ggml.h"
 
+#ifdef GGML_USE_HIPBLAS
+#define GGML_CUDA_NAME "ROCm"
+#define GGML_CUBLAS_NAME "hipBLAS"
+#else
+#define GGML_CUDA_NAME "CUDA"
+#define GGML_CUBLAS_NAME "cuBLAS"
+#endif
+
 #ifdef  __cplusplus
 extern "C" {
 #endif
 
 #define GGML_CUDA_MAX_DEVICES       16
 
-void   ggml_init_cublas(void);
-void   ggml_cuda_set_tensor_split(const float * tensor_split);
+GGML_API void   ggml_init_cublas(void);
+GGML_API void * ggml_cuda_host_malloc(size_t size);
+GGML_API void   ggml_cuda_host_free(void * ptr);
+
+GGML_API bool   ggml_cuda_can_mul_mat(const struct ggml_tensor * src0, const struct ggml_tensor * src1, struct ggml_tensor * dst);
+GGML_API void   ggml_cuda_set_tensor_split(const float * tensor_split);
+GGML_API void   ggml_cuda_transform_tensor(void * data, struct ggml_tensor * tensor);
+GGML_API void   ggml_cuda_free_data(struct ggml_tensor * tensor);
 
-void   ggml_cuda_mul(const struct ggml_tensor * src0, const struct ggml_tensor * src1, struct ggml_tensor * dst);
-bool   ggml_cuda_can_mul_mat(const struct ggml_tensor * src0, const struct ggml_tensor * src1, struct ggml_tensor * dst);
-size_t ggml_cuda_mul_mat_get_wsize(const struct ggml_tensor * src0, const struct ggml_tensor * src1, struct ggml_tensor * dst);
-void   ggml_cuda_mul_mat(const struct ggml_tensor * src0, const struct ggml_tensor * src1, struct ggml_tensor * dst, void * wdata, size_t wsize);
+GGML_API void   ggml_cuda_assign_buffers(struct ggml_tensor * tensor);
+GGML_API void   ggml_cuda_assign_buffers_no_scratch(struct ggml_tensor * tensor);
+GGML_API void   ggml_cuda_assign_buffers_force_inplace(struct ggml_tensor * tensor);
 
-// TODO: export these with GGML_API
-void * ggml_cuda_host_malloc(size_t size);
-void   ggml_cuda_host_free(void * ptr);
+GGML_API void   ggml_cuda_assign_buffers_no_alloc(struct ggml_tensor * tensor);
+GGML_API void   ggml_cuda_assign_scratch_offset(struct ggml_tensor * tensor, size_t offset);
 
-void   ggml_cuda_transform_tensor(void * data, struct ggml_tensor * tensor);
+GGML_API void   ggml_cuda_set_main_device(int main_device);
+GGML_API void   ggml_cuda_set_mul_mat_q(bool mul_mat_q);
+GGML_API void   ggml_cuda_set_scratch_size(size_t scratch_size);
+GGML_API void   ggml_cuda_free_scratch(void);
+GGML_API bool   ggml_cuda_compute_forward(struct ggml_compute_params * params, struct ggml_tensor * tensor);
 
-void   ggml_cuda_free_data(struct ggml_tensor * tensor);
-void   ggml_cuda_assign_buffers(struct ggml_tensor * tensor);
-void   ggml_cuda_assign_buffers_no_scratch(struct ggml_tensor * tensor);
-void   ggml_cuda_assign_buffers_force_inplace(struct ggml_tensor * tensor);
-void   ggml_cuda_set_main_device(int main_device);
-void   ggml_cuda_set_scratch_size(size_t scratch_size);
-void   ggml_cuda_free_scratch(void);
-bool   ggml_cuda_compute_forward(struct ggml_compute_params * params, struct ggml_tensor * tensor);
+GGML_API int    ggml_cuda_get_device_count(void);
+GGML_API void   ggml_cuda_get_device_description(int device, char * description, size_t description_size);
 
 #ifdef  __cplusplus
 }
index b9e50ac745eb077f927a51fef6ab1af65de1e032..fca28d37ef97069ca7800fc890ea4d013c46437f 100644 (file)
@@ -24,6 +24,7 @@
 
 // max memory buffers that can be mapped to the device
 #define GGML_METAL_MAX_BUFFERS 16
+#define GGML_METAL_MAX_COMMAND_BUFFERS 32
 
 struct ggml_tensor;
 struct ggml_cgraph;
@@ -34,9 +35,16 @@ extern "C" {
 
 struct ggml_metal_context;
 
-struct ggml_metal_context * ggml_metal_init(void);
+// number of command buffers to use
+struct ggml_metal_context * ggml_metal_init(int n_cb);
 void ggml_metal_free(struct ggml_metal_context * ctx);
 
+void * ggml_metal_host_malloc(size_t n);
+void   ggml_metal_host_free  (void * data);
+
+// set the number of command buffers to use
+void ggml_metal_set_n_cb(struct ggml_metal_context * ctx, int n_cb);
+
 // creates a mapping between a host memory buffer and a device memory buffer
 // - make sure to map all buffers used in the graph before calling ggml_metal_graph_compute
 // - the mapping is used during computation to determine the arguments of the compute kernels
@@ -57,6 +65,16 @@ void ggml_metal_set_tensor(struct ggml_metal_context * ctx, struct ggml_tensor *
 // get data from the device into host memory
 void ggml_metal_get_tensor(struct ggml_metal_context * ctx, struct ggml_tensor * t);
 
+// try to find operations that can be run concurrently in the graph
+// you should run it again if the topology of your graph changes
+void ggml_metal_graph_find_concurrency(struct ggml_metal_context * ctx, struct ggml_cgraph * gf, bool check_mem);
+
+// if the graph has been optimized for concurrently dispatch, return length of the concur_list if optimized
+int ggml_metal_if_optimized(struct ggml_metal_context * ctx);
+
+// output the concur_list for ggml_alloc
+int * ggml_metal_get_concur_list(struct ggml_metal_context * ctx);
+
 // same as ggml_graph_compute but uses Metal
 // creates gf->n_threads command buffers in parallel
 void ggml_metal_graph_compute(struct ggml_metal_context * ctx, struct ggml_cgraph * gf);
index fd69c41fe357d6e1636f2640186c7908352450b9..ad2ee8cf5fef098169d765b7fa92b12f57c9f70c 100644 (file)
@@ -5,7 +5,11 @@
 #import <Foundation/Foundation.h>
 
 #import <Metal/Metal.h>
-#import <MetalPerformanceShaders/MetalPerformanceShaders.h>
+
+#undef MIN
+#undef MAX
+#define MIN(a, b) ((a) < (b) ? (a) : (b))
+#define MAX(a, b) ((a) > (b) ? (a) : (b))
 
 #ifdef GGML_METAL_NDEBUG
 #define metal_printf(...)
@@ -15,6 +19,8 @@
 
 #define UNUSED(x) (void)(x)
 
+#define GGML_MAX_CONCUR (2*GGML_MAX_NODES)
+
 struct ggml_metal_buffer {
     const char * name;
 
@@ -25,21 +31,30 @@ struct ggml_metal_buffer {
 };
 
 struct ggml_metal_context {
-    float * logits;
+    int n_cb;
 
     id<MTLDevice>       device;
     id<MTLCommandQueue> queue;
     id<MTLLibrary>      library;
 
+    id<MTLCommandBuffer>         command_buffers [GGML_METAL_MAX_COMMAND_BUFFERS];
+    id<MTLComputeCommandEncoder> command_encoders[GGML_METAL_MAX_COMMAND_BUFFERS];
+
+    dispatch_queue_t d_queue;
+
     int n_buffers;
     struct ggml_metal_buffer buffers[GGML_METAL_MAX_BUFFERS];
 
+    int concur_list[GGML_MAX_CONCUR];
+    int concur_list_len;
+
     // custom kernels
 #define GGML_METAL_DECL_KERNEL(name) \
     id<MTLFunction>             function_##name; \
     id<MTLComputePipelineState> pipeline_##name
 
     GGML_METAL_DECL_KERNEL(add);
+    GGML_METAL_DECL_KERNEL(add_row); // TODO: avoid this extra kernel, instead extend the "add" kernel to support broadcast
     GGML_METAL_DECL_KERNEL(mul);
     GGML_METAL_DECL_KERNEL(mul_row); // TODO: avoid this extra kernel, instead extend the "mul" kernel to support broadcast
     GGML_METAL_DECL_KERNEL(scale);
@@ -51,6 +66,7 @@ struct ggml_metal_context {
     GGML_METAL_DECL_KERNEL(get_rows_f16);
     GGML_METAL_DECL_KERNEL(get_rows_q4_0);
     GGML_METAL_DECL_KERNEL(get_rows_q4_1);
+    GGML_METAL_DECL_KERNEL(get_rows_q8_0);
     GGML_METAL_DECL_KERNEL(get_rows_q2_K);
     GGML_METAL_DECL_KERNEL(get_rows_q3_K);
     GGML_METAL_DECL_KERNEL(get_rows_q4_K);
@@ -61,11 +77,21 @@ struct ggml_metal_context {
     GGML_METAL_DECL_KERNEL(mul_mat_f16_f32);
     GGML_METAL_DECL_KERNEL(mul_mat_q4_0_f32);
     GGML_METAL_DECL_KERNEL(mul_mat_q4_1_f32);
+    GGML_METAL_DECL_KERNEL(mul_mat_q8_0_f32);
     GGML_METAL_DECL_KERNEL(mul_mat_q2_K_f32);
     GGML_METAL_DECL_KERNEL(mul_mat_q3_K_f32);
     GGML_METAL_DECL_KERNEL(mul_mat_q4_K_f32);
     GGML_METAL_DECL_KERNEL(mul_mat_q5_K_f32);
     GGML_METAL_DECL_KERNEL(mul_mat_q6_K_f32);
+    GGML_METAL_DECL_KERNEL(mul_mm_f16_f32);
+    GGML_METAL_DECL_KERNEL(mul_mm_q4_0_f32);
+    GGML_METAL_DECL_KERNEL(mul_mm_q4_1_f32);
+    GGML_METAL_DECL_KERNEL(mul_mm_q8_0_f32);
+    GGML_METAL_DECL_KERNEL(mul_mm_q2_K_f32);
+    GGML_METAL_DECL_KERNEL(mul_mm_q3_K_f32);
+    GGML_METAL_DECL_KERNEL(mul_mm_q4_K_f32);
+    GGML_METAL_DECL_KERNEL(mul_mm_q5_K_f32);
+    GGML_METAL_DECL_KERNEL(mul_mm_q6_K_f32);
     GGML_METAL_DECL_KERNEL(rope);
     GGML_METAL_DECL_KERNEL(alibi_f32);
     GGML_METAL_DECL_KERNEL(cpy_f32_f16);
@@ -86,22 +112,18 @@ static NSString * const msl_library_source = @"see metal.metal";
 @implementation GGMLMetalClass
 @end
 
-struct ggml_metal_context * ggml_metal_init(void) {
+struct ggml_metal_context * ggml_metal_init(int n_cb) {
     fprintf(stderr, "%s: allocating\n", __func__);
 
     struct ggml_metal_context * ctx = malloc(sizeof(struct ggml_metal_context));
 
+    ctx->n_cb   = MIN(n_cb, GGML_METAL_MAX_BUFFERS);
     ctx->device = MTLCreateSystemDefaultDevice();
     ctx->queue  = [ctx->device newCommandQueue];
     ctx->n_buffers = 0;
+    ctx->concur_list_len = 0;
 
-    // determine if we can use MPS
-    if (MPSSupportsMTLDevice(ctx->device)) {
-        fprintf(stderr, "%s: using MPS\n", __func__);
-    } else {
-        fprintf(stderr, "%s: not using MPS\n", __func__);
-        GGML_ASSERT(false && "MPS not supported");
-    }
+    ctx->d_queue = dispatch_queue_create("llama.cpp", DISPATCH_QUEUE_CONCURRENT);
 
 #if 0
     // compile from source string and show compile log
@@ -111,7 +133,7 @@ struct ggml_metal_context * ggml_metal_init(void) {
         ctx->library = [ctx->device newLibraryWithSource:msl_library_source options:nil error:&error];
         if (error) {
             fprintf(stderr, "%s: error: %s\n", __func__, [[error description] UTF8String]);
-            exit(1);
+            return NULL;
         }
     }
 #else
@@ -129,7 +151,7 @@ struct ggml_metal_context * ggml_metal_init(void) {
         NSString * src  = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&error];
         if (error) {
             fprintf(stderr, "%s: error: %s\n", __func__, [[error description] UTF8String]);
-            exit(1);
+            return NULL;
         }
 
 #ifdef GGML_QKK_64
@@ -141,19 +163,27 @@ struct ggml_metal_context * ggml_metal_init(void) {
 #endif
         if (error) {
             fprintf(stderr, "%s: error: %s\n", __func__, [[error description] UTF8String]);
-            exit(1);
+            return NULL;
         }
     }
 #endif
 
     // load kernels
     {
+        NSError * error = nil;
 #define GGML_METAL_ADD_KERNEL(name) \
         ctx->function_##name = [ctx->library newFunctionWithName:@"kernel_"#name]; \
-        ctx->pipeline_##name = [ctx->device newComputePipelineStateWithFunction:ctx->function_##name error:nil]; \
-        fprintf(stderr, "%s: loaded %-32s %16p\n", __func__, "kernel_"#name, (void *) ctx->pipeline_##name);
+        ctx->pipeline_##name = [ctx->device newComputePipelineStateWithFunction:ctx->function_##name error:&error]; \
+        fprintf(stderr, "%s: loaded %-32s %16p | th_max = %4d | th_width = %4d\n", __func__, "kernel_"#name, (void *) ctx->pipeline_##name, \
+                (int) ctx->pipeline_##name.maxTotalThreadsPerThreadgroup, \
+                (int) ctx->pipeline_##name.threadExecutionWidth); \
+        if (error) { \
+            fprintf(stderr, "%s: load pipeline error: %s\n", __func__, [[error description] UTF8String]); \
+            return NULL; \
+        }
 
         GGML_METAL_ADD_KERNEL(add);
+        GGML_METAL_ADD_KERNEL(add_row);
         GGML_METAL_ADD_KERNEL(mul);
         GGML_METAL_ADD_KERNEL(mul_row);
         GGML_METAL_ADD_KERNEL(scale);
@@ -165,6 +195,7 @@ struct ggml_metal_context * ggml_metal_init(void) {
         GGML_METAL_ADD_KERNEL(get_rows_f16);
         GGML_METAL_ADD_KERNEL(get_rows_q4_0);
         GGML_METAL_ADD_KERNEL(get_rows_q4_1);
+        GGML_METAL_ADD_KERNEL(get_rows_q8_0);
         GGML_METAL_ADD_KERNEL(get_rows_q2_K);
         GGML_METAL_ADD_KERNEL(get_rows_q3_K);
         GGML_METAL_ADD_KERNEL(get_rows_q4_K);
@@ -175,11 +206,21 @@ struct ggml_metal_context * ggml_metal_init(void) {
         GGML_METAL_ADD_KERNEL(mul_mat_f16_f32);
         GGML_METAL_ADD_KERNEL(mul_mat_q4_0_f32);
         GGML_METAL_ADD_KERNEL(mul_mat_q4_1_f32);
+        GGML_METAL_ADD_KERNEL(mul_mat_q8_0_f32);
         GGML_METAL_ADD_KERNEL(mul_mat_q2_K_f32);
         GGML_METAL_ADD_KERNEL(mul_mat_q3_K_f32);
         GGML_METAL_ADD_KERNEL(mul_mat_q4_K_f32);
         GGML_METAL_ADD_KERNEL(mul_mat_q5_K_f32);
         GGML_METAL_ADD_KERNEL(mul_mat_q6_K_f32);
+        GGML_METAL_ADD_KERNEL(mul_mm_f16_f32);
+        GGML_METAL_ADD_KERNEL(mul_mm_q4_0_f32);
+        GGML_METAL_ADD_KERNEL(mul_mm_q8_0_f32);
+        GGML_METAL_ADD_KERNEL(mul_mm_q4_1_f32);
+        GGML_METAL_ADD_KERNEL(mul_mm_q2_K_f32);
+        GGML_METAL_ADD_KERNEL(mul_mm_q3_K_f32);
+        GGML_METAL_ADD_KERNEL(mul_mm_q4_K_f32);
+        GGML_METAL_ADD_KERNEL(mul_mm_q5_K_f32);
+        GGML_METAL_ADD_KERNEL(mul_mm_q6_K_f32);
         GGML_METAL_ADD_KERNEL(rope);
         GGML_METAL_ADD_KERNEL(alibi_f32);
         GGML_METAL_ADD_KERNEL(cpy_f32_f16);
@@ -189,12 +230,12 @@ struct ggml_metal_context * ggml_metal_init(void) {
 #undef GGML_METAL_ADD_KERNEL
     }
 
-    fprintf(stderr, "%s: recommendedMaxWorkingSetSize = %8.2f MB\n", __func__, ctx->device.recommendedMaxWorkingSetSize / 1024.0 / 1024.0);
-    fprintf(stderr, "%s: hasUnifiedMemory             = %s\n",       __func__, ctx->device.hasUnifiedMemory ? "true" : "false");
+    fprintf(stderr, "%s: recommendedMaxWorkingSetSize  = %8.2f MB\n", __func__, ctx->device.recommendedMaxWorkingSetSize / 1024.0 / 1024.0);
+    fprintf(stderr, "%s: hasUnifiedMemory              = %s\n",       __func__, ctx->device.hasUnifiedMemory ? "true" : "false");
     if (ctx->device.maxTransferRate != 0) {
-        fprintf(stderr, "%s: maxTransferRate              = %8.2f MB/s\n", __func__, ctx->device.maxTransferRate / 1024.0 / 1024.0);
+        fprintf(stderr, "%s: maxTransferRate               = %8.2f MB/s\n", __func__, ctx->device.maxTransferRate / 1024.0 / 1024.0);
     } else {
-        fprintf(stderr, "%s: maxTransferRate              = built-in GPU\n", __func__);
+        fprintf(stderr, "%s: maxTransferRate               = built-in GPU\n", __func__);
     }
 
     return ctx;
@@ -202,12 +243,97 @@ struct ggml_metal_context * ggml_metal_init(void) {
 
 void ggml_metal_free(struct ggml_metal_context * ctx) {
     fprintf(stderr, "%s: deallocating\n", __func__);
+#define GGML_METAL_DEL_KERNEL(name) \
+    [ctx->function_##name release]; \
+    [ctx->pipeline_##name release];
+
+    GGML_METAL_DEL_KERNEL(add);
+    GGML_METAL_DEL_KERNEL(add_row);
+    GGML_METAL_DEL_KERNEL(mul);
+    GGML_METAL_DEL_KERNEL(mul_row);
+    GGML_METAL_DEL_KERNEL(scale);
+    GGML_METAL_DEL_KERNEL(silu);
+    GGML_METAL_DEL_KERNEL(relu);
+    GGML_METAL_DEL_KERNEL(gelu);
+    GGML_METAL_DEL_KERNEL(soft_max);
+    GGML_METAL_DEL_KERNEL(diag_mask_inf);
+    GGML_METAL_DEL_KERNEL(get_rows_f16);
+    GGML_METAL_DEL_KERNEL(get_rows_q4_0);
+    GGML_METAL_DEL_KERNEL(get_rows_q4_1);
+    GGML_METAL_DEL_KERNEL(get_rows_q8_0);
+    GGML_METAL_DEL_KERNEL(get_rows_q2_K);
+    GGML_METAL_DEL_KERNEL(get_rows_q3_K);
+    GGML_METAL_DEL_KERNEL(get_rows_q4_K);
+    GGML_METAL_DEL_KERNEL(get_rows_q5_K);
+    GGML_METAL_DEL_KERNEL(get_rows_q6_K);
+    GGML_METAL_DEL_KERNEL(rms_norm);
+    GGML_METAL_DEL_KERNEL(norm);
+    GGML_METAL_DEL_KERNEL(mul_mat_f16_f32);
+    GGML_METAL_DEL_KERNEL(mul_mat_q4_0_f32);
+    GGML_METAL_DEL_KERNEL(mul_mat_q4_1_f32);
+    GGML_METAL_DEL_KERNEL(mul_mat_q8_0_f32);
+    GGML_METAL_DEL_KERNEL(mul_mat_q2_K_f32);
+    GGML_METAL_DEL_KERNEL(mul_mat_q3_K_f32);
+    GGML_METAL_DEL_KERNEL(mul_mat_q4_K_f32);
+    GGML_METAL_DEL_KERNEL(mul_mat_q5_K_f32);
+    GGML_METAL_DEL_KERNEL(mul_mat_q6_K_f32);
+    GGML_METAL_DEL_KERNEL(mul_mm_f16_f32);
+    GGML_METAL_DEL_KERNEL(mul_mm_q4_0_f32);
+    GGML_METAL_DEL_KERNEL(mul_mm_q8_0_f32);
+    GGML_METAL_DEL_KERNEL(mul_mm_q4_1_f32);
+    GGML_METAL_DEL_KERNEL(mul_mm_q2_K_f32);
+    GGML_METAL_DEL_KERNEL(mul_mm_q3_K_f32);
+    GGML_METAL_DEL_KERNEL(mul_mm_q4_K_f32);
+    GGML_METAL_DEL_KERNEL(mul_mm_q5_K_f32);
+    GGML_METAL_DEL_KERNEL(mul_mm_q6_K_f32);
+    GGML_METAL_DEL_KERNEL(rope);
+    GGML_METAL_DEL_KERNEL(alibi_f32);
+    GGML_METAL_DEL_KERNEL(cpy_f32_f16);
+    GGML_METAL_DEL_KERNEL(cpy_f32_f32);
+    GGML_METAL_DEL_KERNEL(cpy_f16_f16);
+
+#undef GGML_METAL_DEL_KERNEL
+
     for (int i = 0; i < ctx->n_buffers; ++i) {
         [ctx->buffers[i].metal release];
     }
+
+    [ctx->library release];
+    [ctx->queue release];
+    [ctx->device release];
+
+    dispatch_release(ctx->d_queue);
+
     free(ctx);
 }
 
+void * ggml_metal_host_malloc(size_t n) {
+    void * data = NULL;
+    const int result = posix_memalign((void **) &data, getpagesize(), n);
+    if (result != 0) {
+        fprintf(stderr, "%s: error: posix_memalign failed\n", __func__);
+        return NULL;
+    }
+
+    return data;
+}
+
+void ggml_metal_host_free(void * data) {
+    free(data);
+}
+
+void ggml_metal_set_n_cb(struct ggml_metal_context * ctx, int n_cb) {
+    ctx->n_cb = MIN(n_cb, GGML_METAL_MAX_BUFFERS);
+}
+
+int ggml_metal_if_optimized(struct ggml_metal_context * ctx) {
+    return ctx->concur_list_len;
+}
+
+int * ggml_metal_get_concur_list(struct ggml_metal_context * ctx) {
+    return ctx->concur_list;
+}
+
 // finds the Metal buffer that contains the tensor data on the GPU device
 // the assumption is that there is 1-to-1 mapping between the host and device memory buffers, so we can find the
 // Metal buffer based on the host memory pointer
@@ -346,48 +472,154 @@ void ggml_metal_get_tensor(
     memcpy(t->data, (void *) ((uint8_t *) id_src.contents + offs), ggml_nbytes(t));
 }
 
+void ggml_metal_graph_find_concurrency(
+        struct ggml_metal_context * ctx,
+        struct ggml_cgraph * gf, bool check_mem) {
+    int search_depth = gf->n_nodes; //we only find concurrency in this range to avoid wasting too much time
+    int nodes_unused[GGML_MAX_CONCUR];
+
+    for (int i = 0; i < GGML_MAX_CONCUR; i++) { ctx->concur_list[i] = 0; }
+    for (int i = 0; i < gf->n_nodes;     i++) { nodes_unused[i]     = 1; }
+    ctx->concur_list_len = 0;
+
+    int n_left    = gf->n_nodes;
+    int n_start   = 0; // all nodes before n_start at nodes_unused array have been sorted and store back to ctx->concur_list
+    int level_pos = 0; // at ctx->concur_list, the last layer (level) ends at level_pos
+
+    while (n_left > 0) {
+        // number of nodes at a layer (that can be issued concurrently)
+        int concurrency = 0;
+        for (int i = n_start; i < ((n_start + search_depth > gf->n_nodes) ? gf->n_nodes : n_start + search_depth); i++) {
+            if (nodes_unused[i]) {
+                // if the requirements for gf->nodes[i] are satisfied
+                int exe_flag = 1;
+
+                // scan all srcs
+                for (int src_ind = 0; src_ind < GGML_MAX_SRC; src_ind++) {
+                    struct ggml_tensor * src_cur = gf->nodes[i]->src[src_ind];
+                    if (src_cur) {
+                        // if is leaf nodes it's satisfied.
+                        // TODO: ggml_is_leaf()
+                        if (src_cur->op == GGML_OP_NONE && src_cur->grad == NULL) {
+                            continue;
+                        }
+
+                        // otherwise this src should be the output from previous nodes.
+                        int is_found = 0;
+
+                        // scan 2*search_depth back because we inserted barrier.
+                        //for (int j = ((level_pos - 2*search_depth) < 0 ? 0 : (level_pos - 2*search_depth)); j < level_pos; j++) {
+                        for (int j = MAX(0, level_pos - 2*search_depth); j < level_pos; j++) {
+                            if (ctx->concur_list[j] >= 0 && gf->nodes[ctx->concur_list[j]] == src_cur) {
+                                is_found = 1;
+                                break;
+                            }
+                        }
+                        if (is_found == 0) {
+                            exe_flag = 0;
+                            break;
+                        }
+                    }
+                }
+                if (exe_flag && check_mem) {
+                    // check if nodes[i]'s data will be overwritten by a node before nodes[i].
+                    // if node[5] and node[3] write to the same memory region, then we can't issue node[5] before node[3]
+                    int64_t data_start = (int64_t) gf->nodes[i]->data;
+                    int64_t length     = (int64_t) ggml_nbytes(gf->nodes[i]);
+                    for (int j = n_start; j < i; j++) {
+                        if (nodes_unused[j] && gf->nodes[j]->op != GGML_OP_RESHAPE \
+                                            && gf->nodes[j]->op != GGML_OP_VIEW \
+                                            && gf->nodes[j]->op != GGML_OP_TRANSPOSE \
+                                            && gf->nodes[j]->op != GGML_OP_PERMUTE) {
+                            if (((int64_t)gf->nodes[j]->data) >= data_start + length || \
+                                ((int64_t)gf->nodes[j]->data) + (int64_t) ggml_nbytes(gf->nodes[j]) <= data_start) {
+                                continue;
+                            }
+
+                            exe_flag = 0;
+                        }
+                    }
+                }
+                if (exe_flag) {
+                    ctx->concur_list[level_pos + concurrency] = i;
+                    nodes_unused[i] = 0;
+                    concurrency++;
+                    ctx->concur_list_len++;
+                }
+            }
+        }
+        n_left -= concurrency;
+        // adding a barrier different layer
+        ctx->concur_list[level_pos + concurrency] = -1;
+        ctx->concur_list_len++;
+        // jump all sorted nodes at nodes_bak
+        while (!nodes_unused[n_start]) {
+            n_start++;
+        }
+        level_pos += concurrency + 1;
+    }
+
+    if (ctx->concur_list_len > GGML_MAX_CONCUR) {
+        fprintf(stderr, "%s: too many elements for metal ctx->concur_list!\n", __func__);
+    }
+}
+
 void ggml_metal_graph_compute(
         struct ggml_metal_context * ctx,
                struct ggml_cgraph * gf) {
     metal_printf("%s: evaluating graph\n", __func__);
 
+    @autoreleasepool {
+
+    // if there is ctx->concur_list, dispatch concurrently
+    // else fallback to serial dispatch
+    MTLComputePassDescriptor * edesc = MTLComputePassDescriptor.computePassDescriptor;
+
+    const bool has_concur = ctx->concur_list_len && ctx->concur_list_len <= GGML_MAX_CONCUR;
+
+    const int n_nodes  = has_concur ? ctx->concur_list_len      : gf->n_nodes;
+    edesc.dispatchType = has_concur ? MTLDispatchTypeConcurrent : MTLDispatchTypeSerial;
+
     // create multiple command buffers and enqueue them
     // then, we encode the graph into the command buffers in parallel
 
-    const int n_cb = gf->n_threads;
-
-    NSMutableArray * command_buffers = [NSMutableArray arrayWithCapacity:n_cb];
+    const int n_cb = ctx->n_cb;
 
     for (int i = 0; i < n_cb; ++i) {
-        command_buffers[i] = [ctx->queue commandBuffer];
+        ctx->command_buffers[i] = [ctx->queue commandBuffer];
 
         // enqueue the command buffers in order to specify their execution order
-        [command_buffers[i] enqueue];
-    }
+        [ctx->command_buffers[i] enqueue];
 
-    // TODO: is this the best way to start threads?
-    dispatch_queue_t queue = dispatch_queue_create("llama.cpp", DISPATCH_QUEUE_CONCURRENT);
+        ctx->command_encoders[i] = [ctx->command_buffers[i] computeCommandEncoderWithDescriptor: edesc];
+    }
 
     for (int cb_idx = 0; cb_idx < n_cb; ++cb_idx) {
-        const int n_nodes_per_cb = (gf->n_nodes + n_cb - 1) / n_cb;
+        const int n_nodes_per_cb = (n_nodes + n_cb - 1) / n_cb;
 
-        dispatch_async(queue, ^{
+        dispatch_async(ctx->d_queue, ^{
             size_t offs_src0 = 0;
             size_t offs_src1 = 0;
             size_t offs_dst  = 0;
 
-            id<MTLCommandBuffer> command_buffer = command_buffers[cb_idx];
-
-            id<MTLComputeCommandEncoder> encoder = nil;
+            id<MTLCommandBuffer> command_buffer  = ctx->command_buffers[cb_idx];
+            id<MTLComputeCommandEncoder> encoder = ctx->command_encoders[cb_idx];
 
             const int node_start =                                      (cb_idx + 0) * n_nodes_per_cb;
-            const int node_end   = (cb_idx == n_cb - 1) ? gf->n_nodes : (cb_idx + 1) * n_nodes_per_cb;
+            const int node_end   = MIN((cb_idx == n_cb - 1) ? n_nodes : (cb_idx + 1) * n_nodes_per_cb, n_nodes);
+
+            for (int ind = node_start; ind < node_end; ++ind) {
+                const int i = has_concur ? ctx->concur_list[ind] : ind;
+
+                if (i == -1) {
+                    [encoder memoryBarrierWithScope:MTLBarrierScopeBuffers];
+                    continue;
+                }
 
-            for (int i = node_start; i < node_end; ++i) {
                 metal_printf("%s: encoding node %3d, op = %8s\n", __func__, i, ggml_op_name(gf->nodes[i]->op));
 
-                struct ggml_tensor * src0 = gf->nodes[i]->src0;
-                struct ggml_tensor * src1 = gf->nodes[i]->src1;
+                struct ggml_tensor * src0 = gf->nodes[i]->src[0];
+                struct ggml_tensor * src1 = gf->nodes[i]->src[1];
                 struct ggml_tensor * dst  = gf->nodes[i];
 
                 const int64_t  ne00 = src0 ? src0->ne[0] : 0;
@@ -443,6 +675,7 @@ void ggml_metal_graph_compute(
                 //}
 
                 switch (dst->op) {
+                    case GGML_OP_NONE:
                     case GGML_OP_RESHAPE:
                     case GGML_OP_VIEW:
                     case GGML_OP_TRANSPOSE:
@@ -452,14 +685,16 @@ void ggml_metal_graph_compute(
                         } break;
                     case GGML_OP_ADD:
                         {
-                            if (encoder == nil) {
-                                encoder = [command_buffer computeCommandEncoder];
+                            if (ggml_nelements(src1) == ne10) {
+                                // src1 is a row
+                                [encoder setComputePipelineState:ctx->pipeline_add_row];
+                            } else {
+                                [encoder setComputePipelineState:ctx->pipeline_add];
                             }
-
-                            [encoder setComputePipelineState:ctx->pipeline_add];
                             [encoder setBuffer:id_src0 offset:offs_src0 atIndex:0];
                             [encoder setBuffer:id_src1 offset:offs_src1 atIndex:1];
                             [encoder setBuffer:id_dst  offset:offs_dst  atIndex:2];
+                            [encoder setBytes:&ne00 length:sizeof(ne00) atIndex:3];
 
                             const int64_t n = ggml_nelements(dst);
 
@@ -467,10 +702,6 @@ void ggml_metal_graph_compute(
                         } break;
                     case GGML_OP_MUL:
                         {
-                            if (encoder == nil) {
-                                encoder = [command_buffer computeCommandEncoder];
-                            }
-
                             if (ggml_nelements(src1) == ne10) {
                                 // src1 is a row
                                 [encoder setComputePipelineState:ctx->pipeline_mul_row];
@@ -488,10 +719,6 @@ void ggml_metal_graph_compute(
                         } break;
                     case GGML_OP_SCALE:
                         {
-                            if (encoder == nil) {
-                                encoder = [command_buffer computeCommandEncoder];
-                            }
-
                             const float scale = *(const float *) src1->data;
 
                             [encoder setComputePipelineState:ctx->pipeline_scale];
@@ -503,54 +730,46 @@ void ggml_metal_graph_compute(
 
                             [encoder dispatchThreadgroups:MTLSizeMake(n, 1, 1) threadsPerThreadgroup:MTLSizeMake(1, 1, 1)];
                         } break;
-                    case GGML_OP_SILU:
-                        {
-                            if (encoder == nil) {
-                                encoder = [command_buffer computeCommandEncoder];
-                            }
-
-                            [encoder setComputePipelineState:ctx->pipeline_silu];
-                            [encoder setBuffer:id_src0 offset:offs_src0 atIndex:0];
-                            [encoder setBuffer:id_dst  offset:offs_dst  atIndex:1];
-
-                            const int64_t n = ggml_nelements(dst);
-
-                            [encoder dispatchThreadgroups:MTLSizeMake(n, 1, 1) threadsPerThreadgroup:MTLSizeMake(1, 1, 1)];
-                        } break;
-                    case GGML_OP_RELU:
-                        {
-                            if (encoder == nil) {
-                                encoder = [command_buffer computeCommandEncoder];
-                            }
-
-                            [encoder setComputePipelineState:ctx->pipeline_relu];
-                            [encoder setBuffer:id_src0 offset:offs_src0 atIndex:0];
-                            [encoder setBuffer:id_dst  offset:offs_dst  atIndex:1];
-
-                            const int64_t n = ggml_nelements(dst);
-
-                            [encoder dispatchThreadgroups:MTLSizeMake(n, 1, 1) threadsPerThreadgroup:MTLSizeMake(1, 1, 1)];
+                    case GGML_OP_UNARY:
+                        switch (ggml_get_unary_op(gf->nodes[i])) {
+                            case GGML_UNARY_OP_SILU:
+                                {
+                                    [encoder setComputePipelineState:ctx->pipeline_silu];
+                                    [encoder setBuffer:id_src0 offset:offs_src0 atIndex:0];
+                                    [encoder setBuffer:id_dst  offset:offs_dst  atIndex:1];
+
+                                    const int64_t n = ggml_nelements(dst);
+
+                                    [encoder dispatchThreadgroups:MTLSizeMake(n, 1, 1) threadsPerThreadgroup:MTLSizeMake(1, 1, 1)];
+                                } break;
+                            case GGML_UNARY_OP_RELU:
+                                {
+                                    [encoder setComputePipelineState:ctx->pipeline_relu];
+                                    [encoder setBuffer:id_src0 offset:offs_src0 atIndex:0];
+                                    [encoder setBuffer:id_dst  offset:offs_dst  atIndex:1];
+
+                                    const int64_t n = ggml_nelements(dst);
+
+                                    [encoder dispatchThreadgroups:MTLSizeMake(n, 1, 1) threadsPerThreadgroup:MTLSizeMake(1, 1, 1)];
+                                } break;
+                            case GGML_UNARY_OP_GELU:
+                                {
+                                    [encoder setComputePipelineState:ctx->pipeline_gelu];
+                                    [encoder setBuffer:id_src0 offset:offs_src0 atIndex:0];
+                                    [encoder setBuffer:id_dst  offset:offs_dst  atIndex:1];
+
+                                    const int64_t n = ggml_nelements(dst);
+
+                                    [encoder dispatchThreadgroups:MTLSizeMake(n, 1, 1) threadsPerThreadgroup:MTLSizeMake(1, 1, 1)];
+                                } break;
+                            default:
+                                {
+                                    fprintf(stderr, "%s: node %3d, op = %8s not implemented\n", __func__, i, ggml_op_name(dst->op));
+                                    GGML_ASSERT(false);
+                                }
                         } break;
-                    case GGML_OP_GELU:
-                    {
-                            if (encoder == nil) {
-                                encoder = [command_buffer computeCommandEncoder];
-                            }
-
-                            [encoder setComputePipelineState:ctx->pipeline_gelu];
-                            [encoder setBuffer:id_src0 offset:offs_src0 atIndex:0];
-                            [encoder setBuffer:id_dst  offset:offs_dst  atIndex:1];
-
-                            const int64_t n = ggml_nelements(dst);
-
-                            [encoder dispatchThreadgroups:MTLSizeMake(n, 1, 1) threadsPerThreadgroup:MTLSizeMake(1, 1, 1)];
-                    } break;
                     case GGML_OP_SOFT_MAX:
                         {
-                            if (encoder == nil) {
-                                encoder = [command_buffer computeCommandEncoder];
-                            }
-
                             const int nth = 32;
 
                             [encoder setComputePipelineState:ctx->pipeline_soft_max];
@@ -565,11 +784,7 @@ void ggml_metal_graph_compute(
                         } break;
                     case GGML_OP_DIAG_MASK_INF:
                         {
-                            if (encoder == nil) {
-                                encoder = [command_buffer computeCommandEncoder];
-                            }
-
-                            const int n_past = ((int32_t *)(src1->data))[0];
+                            const int n_past = ((int32_t *)(dst->op_params))[0];
 
                             [encoder setComputePipelineState:ctx->pipeline_diag_mask_inf];
                             [encoder setBuffer:id_src0 offset:offs_src0 atIndex:0];
@@ -585,53 +800,44 @@ void ggml_metal_graph_compute(
                             // TODO: needs to be updated after PR: https://github.com/ggerganov/ggml/pull/224
 
                             GGML_ASSERT(ne00 == ne10);
-                            GGML_ASSERT(ne02 == ne12);
+                            // GGML_ASSERT(ne02 == ne12); // Should be checked on individual data types until broadcast is implemented everywhere
+                            uint gqa = ne12/ne02;
+                            GGML_ASSERT(ne03 == ne13);
 
+                            // for now the matrix-matrix multiplication kernel only works on A14+/M1+ SoCs
+                            // AMD GPU and older A-chips will reuse matrix-vector multiplication kernel
                             if (ggml_is_contiguous(src0) &&
                                 ggml_is_contiguous(src1) &&
-                                (src0t == GGML_TYPE_F32 || src0t == GGML_TYPE_F16) && ne11 > 1) {
-
-                                if (encoder != nil) {
-                                    [encoder endEncoding];
-                                    encoder = nil;
-                                }
-
-                                MPSDataType src0dt = src0t == GGML_TYPE_F32 ? MPSDataTypeFloat32 : MPSDataTypeFloat16;
-                                MPSDataType src1dt = src1t == GGML_TYPE_F32 ? MPSDataTypeFloat32 : MPSDataTypeFloat16;
-
-                                // for F32 x F32 we use MPS
-                                MPSMatrixDescriptor * desc0 = [MPSMatrixDescriptor
-                                    matrixDescriptorWithRows:ne01 columns:ne00 rowBytes:src0->nb[1] dataType:src0dt];
-
-                                MPSMatrixDescriptor * desc1 = [MPSMatrixDescriptor
-                                    matrixDescriptorWithRows:ne11 columns:ne10 rowBytes:src1->nb[1] dataType:src1dt];
-
-                                MPSMatrixDescriptor * desc  = [MPSMatrixDescriptor
-                                    matrixDescriptorWithRows:ne1 columns:ne0 rowBytes:dst->nb[1] dataType:MPSDataTypeFloat32];
-
-                                MPSMatrixMultiplication * mul = [[MPSMatrixMultiplication alloc]
-                                    initWithDevice:ctx->device transposeLeft:false transposeRight:true
-                                        resultRows:ne11 resultColumns:ne01 interiorColumns:ne00 alpha:1.0 beta:0.0];
-
-                                // we need to do ne02 multiplications
-                                // TODO: is there a way to do this in parallel - currently very slow ..
-                                // TODO: might be possible to offload part of the computation to ANE using Accelerate's CBLAS
-                                for (int64_t i02 = 0; i02 < ne02; ++i02) {
-                                    size_t offs_src0_cur = offs_src0 + i02*nb02;
-                                    size_t offs_src1_cur = offs_src1 + i02*nb12;
-                                    size_t offs_dst_cur  = offs_dst  + i02*nb2;
-
-                                    MPSMatrix * mat_src0 = [[MPSMatrix alloc] initWithBuffer:id_src0 offset:offs_src0_cur descriptor:desc0];
-                                    MPSMatrix * mat_src1 = [[MPSMatrix alloc] initWithBuffer:id_src1 offset:offs_src1_cur descriptor:desc1];
-                                    MPSMatrix * mat_dst  = [[MPSMatrix alloc] initWithBuffer:id_dst  offset:offs_dst_cur  descriptor:desc ];
-
-                                    [mul encodeToCommandBuffer:command_buffer leftMatrix:mat_src1 rightMatrix:mat_src0 resultMatrix:mat_dst];
+                                src1t == GGML_TYPE_F32 &&
+                                [ctx->device supportsFamily:MTLGPUFamilyApple7] &&
+                                ne00%32 == 0 &&
+                                ne11 > 1) {
+                                switch (src0->type) {
+                                    case GGML_TYPE_F16:  [encoder setComputePipelineState:ctx->pipeline_mul_mm_f16_f32];  break;
+                                    case GGML_TYPE_Q4_0: [encoder setComputePipelineState:ctx->pipeline_mul_mm_q4_0_f32]; break;
+                                    case GGML_TYPE_Q4_1: [encoder setComputePipelineState:ctx->pipeline_mul_mm_q4_1_f32]; break;
+                                    case GGML_TYPE_Q8_0: [encoder setComputePipelineState:ctx->pipeline_mul_mm_q8_0_f32]; break;
+                                    case GGML_TYPE_Q2_K: [encoder setComputePipelineState:ctx->pipeline_mul_mm_q2_K_f32]; break;
+                                    case GGML_TYPE_Q3_K: [encoder setComputePipelineState:ctx->pipeline_mul_mm_q3_K_f32]; break;
+                                    case GGML_TYPE_Q4_K: [encoder setComputePipelineState:ctx->pipeline_mul_mm_q4_K_f32]; break;
+                                    case GGML_TYPE_Q5_K: [encoder setComputePipelineState:ctx->pipeline_mul_mm_q5_K_f32]; break;
+                                    case GGML_TYPE_Q6_K: [encoder setComputePipelineState:ctx->pipeline_mul_mm_q6_K_f32]; break;
+                                    default: GGML_ASSERT(false && "MUL MAT-MAT not implemented");
                                 }
+                                [encoder setBuffer:id_src0 offset:offs_src0    atIndex:0];
+                                [encoder setBuffer:id_src1 offset:offs_src1    atIndex:1];
+                                [encoder setBuffer:id_dst  offset:offs_dst     atIndex:2];
+                                [encoder setBytes:&ne00    length:sizeof(ne00) atIndex:3];
+                                [encoder setBytes:&ne02    length:sizeof(ne02) atIndex:4];
+                                [encoder setBytes:&nb01    length:sizeof(nb01) atIndex:5];
+                                [encoder setBytes:&nb02    length:sizeof(nb02) atIndex:6];
+                                [encoder setBytes:&ne12    length:sizeof(ne12) atIndex:7];
+                                [encoder setBytes:&ne0     length:sizeof(ne0)  atIndex:8];
+                                [encoder setBytes:&ne1     length:sizeof(ne1)  atIndex:9];
+                                [encoder setBytes:&gqa     length:sizeof(gqa)  atIndex:10];
+                                [encoder setThreadgroupMemoryLength:8192 atIndex:0];
+                                [encoder dispatchThreadgroups:MTLSizeMake( (ne11+31)/32, (ne01+63) / 64, ne12) threadsPerThreadgroup:MTLSizeMake(128, 1, 1)];
                             } else {
-                                if (encoder == nil) {
-                                    encoder = [command_buffer computeCommandEncoder];
-                                }
-
                                 int nth0 = 32;
                                 int nth1 = 1;
 
@@ -639,8 +845,6 @@ void ggml_metal_graph_compute(
                                 switch (src0t) {
                                     case GGML_TYPE_F16:
                                         {
-                                            GGML_ASSERT(ne02 == ne12);
-
                                             nth0 = 64;
                                             nth1 = 1;
                                             [encoder setComputePipelineState:ctx->pipeline_mul_mat_f16_f32];
@@ -663,13 +867,22 @@ void ggml_metal_graph_compute(
                                             nth1 = 8;
                                             [encoder setComputePipelineState:ctx->pipeline_mul_mat_q4_1_f32];
                                         } break;
+                                    case GGML_TYPE_Q8_0:
+                                        {
+                                            GGML_ASSERT(ne02 == 1);
+                                            GGML_ASSERT(ne12 == 1);
+
+                                            nth0 = 8;
+                                            nth1 = 8;
+                                            [encoder setComputePipelineState:ctx->pipeline_mul_mat_q8_0_f32];
+                                        } break;
                                     case GGML_TYPE_Q2_K:
                                         {
                                             GGML_ASSERT(ne02 == 1);
                                             GGML_ASSERT(ne12 == 1);
 
-                                            nth0 = 4;
-                                            nth1 = 16;
+                                            nth0 = 2;
+                                            nth1 = 32;
                                             [encoder setComputePipelineState:ctx->pipeline_mul_mat_q2_K_f32];
                                         } break;
                                     case GGML_TYPE_Q3_K:
@@ -677,8 +890,8 @@ void ggml_metal_graph_compute(
                                             GGML_ASSERT(ne02 == 1);
                                             GGML_ASSERT(ne12 == 1);
 
-                                            nth0 = 4;
-                                            nth1 = 16;
+                                            nth0 = 2;
+                                            nth1 = 32;
                                             [encoder setComputePipelineState:ctx->pipeline_mul_mat_q3_K_f32];
                                         } break;
                                     case GGML_TYPE_Q4_K:
@@ -686,8 +899,8 @@ void ggml_metal_graph_compute(
                                             GGML_ASSERT(ne02 == 1);
                                             GGML_ASSERT(ne12 == 1);
 
-                                            nth0 = 4;
-                                            nth1 = 16;
+                                            nth0 = 2;
+                                            nth1 = 32;
                                             [encoder setComputePipelineState:ctx->pipeline_mul_mat_q4_K_f32];
                                         } break;
                                     case GGML_TYPE_Q5_K:
@@ -695,8 +908,8 @@ void ggml_metal_graph_compute(
                                             GGML_ASSERT(ne02 == 1);
                                             GGML_ASSERT(ne12 == 1);
 
-                                            nth0 = 4;
-                                            nth1 = 16;
+                                            nth0 = 2;
+                                            nth1 = 32;
                                             [encoder setComputePipelineState:ctx->pipeline_mul_mat_q5_K_f32];
                                         } break;
                                     case GGML_TYPE_Q6_K:
@@ -704,8 +917,8 @@ void ggml_metal_graph_compute(
                                             GGML_ASSERT(ne02 == 1);
                                             GGML_ASSERT(ne12 == 1);
 
-                                            nth0 = 4;
-                                            nth1 = 16;
+                                            nth0 = 2;
+                                            nth1 = 32;
                                             [encoder setComputePipelineState:ctx->pipeline_mul_mat_q6_K_f32];
                                         } break;
                                     default:
@@ -720,28 +933,36 @@ void ggml_metal_graph_compute(
                                 [encoder setBuffer:id_dst  offset:offs_dst  atIndex:2];
                                 [encoder setBytes:&ne00 length:sizeof(ne00) atIndex:3];
                                 [encoder setBytes:&ne01 length:sizeof(ne01) atIndex:4];
-                                [encoder setBytes:&nb00 length:sizeof(nb00) atIndex:5];
-                                [encoder setBytes:&nb01 length:sizeof(nb01) atIndex:6];
-                                [encoder setBytes:&nb02 length:sizeof(nb02) atIndex:7];
-                                [encoder setBytes:&ne10 length:sizeof(ne10) atIndex:8];
-                                [encoder setBytes:&ne11 length:sizeof(ne11) atIndex:9];
-                                [encoder setBytes:&nb10 length:sizeof(nb10) atIndex:10];
-                                [encoder setBytes:&nb11 length:sizeof(nb11) atIndex:11];
-                                [encoder setBytes:&nb12 length:sizeof(nb12) atIndex:12];
-                                [encoder setBytes:&ne0  length:sizeof(ne0)  atIndex:13];
-                                [encoder setBytes:&ne1  length:sizeof(ne1)  atIndex:14];
-
-                                if (src0t == GGML_TYPE_Q4_0 || src0t == GGML_TYPE_Q4_1) {
-                                    [encoder setThreadgroupMemoryLength:nth0*nth1*sizeof(float) atIndex:0];
-                                    [encoder dispatchThreadgroups:MTLSizeMake(ne01, ne11, 1) threadsPerThreadgroup:MTLSizeMake(nth0, nth1, 1)];
+                                [encoder setBytes:&ne02 length:sizeof(ne02) atIndex:5];
+                                [encoder setBytes:&nb00 length:sizeof(nb00) atIndex:6];
+                                [encoder setBytes:&nb01 length:sizeof(nb01) atIndex:7];
+                                [encoder setBytes:&nb02 length:sizeof(nb02) atIndex:8];
+                                [encoder setBytes:&ne10 length:sizeof(ne10) atIndex:9];
+                                [encoder setBytes:&ne11 length:sizeof(ne11) atIndex:10];
+                                [encoder setBytes:&ne12 length:sizeof(ne12) atIndex:11];
+                                [encoder setBytes:&nb10 length:sizeof(nb10) atIndex:12];
+                                [encoder setBytes:&nb11 length:sizeof(nb11) atIndex:13];
+                                [encoder setBytes:&nb12 length:sizeof(nb12) atIndex:14];
+                                [encoder setBytes:&ne0  length:sizeof(ne0)  atIndex:15];
+                                [encoder setBytes:&ne1  length:sizeof(ne1)  atIndex:16];
+                                [encoder setBytes:&gqa  length:sizeof(gqa)  atIndex:17];
+
+                                if (src0t == GGML_TYPE_Q4_0 || src0t == GGML_TYPE_Q4_1 || src0t == GGML_TYPE_Q8_0 ||
+                                    src0t == GGML_TYPE_Q2_K || src0t == GGML_TYPE_Q4_K) {
+                                    [encoder dispatchThreadgroups:MTLSizeMake((ne01 + 7)/8, ne11, ne12) threadsPerThreadgroup:MTLSizeMake(nth0, nth1, 1)];
+                                }
+                                else if (src0t == GGML_TYPE_Q3_K) {
+#ifdef GGML_QKK_64
+                                    [encoder dispatchThreadgroups:MTLSizeMake((ne01 + 1)/2, ne11, ne12) threadsPerThreadgroup:MTLSizeMake(nth0, nth1, 1)];
+#else
+                                    [encoder dispatchThreadgroups:MTLSizeMake((ne01 + 3)/4, ne11, ne12) threadsPerThreadgroup:MTLSizeMake(nth0, nth1, 1)];
+#endif
                                 }
-                                else if (src0t == GGML_TYPE_Q2_K ||
-                                         src0t == GGML_TYPE_Q3_K ||
-                                         src0t == GGML_TYPE_Q4_K ||
-                                         src0t == GGML_TYPE_Q5_K ||
-                                         src0t == GGML_TYPE_Q6_K) {
-                                    [encoder setThreadgroupMemoryLength:nth0*nth1*sizeof(float) atIndex:0];
-                                    [encoder dispatchThreadgroups:MTLSizeMake(ne01, 1, 1) threadsPerThreadgroup:MTLSizeMake(nth0, nth1, 1)];
+                                else if (src0t == GGML_TYPE_Q5_K) {
+                                    [encoder dispatchThreadgroups:MTLSizeMake((ne01 + 3)/4, ne11, ne12) threadsPerThreadgroup:MTLSizeMake(nth0, nth1, 1)];
+                                }
+                                else if (src0t == GGML_TYPE_Q6_K) {
+                                    [encoder dispatchThreadgroups:MTLSizeMake((ne01 + 1)/2, ne11, ne12) threadsPerThreadgroup:MTLSizeMake(nth0, nth1, 1)];
                                 } else {
                                     [encoder setThreadgroupMemoryLength:nth0*sizeof(float) atIndex:0];
                                     [encoder dispatchThreadgroups:MTLSizeMake(ne01, ne11, ne12) threadsPerThreadgroup:MTLSizeMake(nth0, nth1, 1)];
@@ -750,14 +971,11 @@ void ggml_metal_graph_compute(
                         } break;
                     case GGML_OP_GET_ROWS:
                         {
-                            if (encoder == nil) {
-                                encoder = [command_buffer computeCommandEncoder];
-                            }
-
                             switch (src0->type) {
-                                case GGML_TYPE_F16:  [encoder setComputePipelineState:ctx->pipeline_get_rows_f16]; break;
+                                case GGML_TYPE_F16:  [encoder setComputePipelineState:ctx->pipeline_get_rows_f16];  break;
                                 case GGML_TYPE_Q4_0: [encoder setComputePipelineState:ctx->pipeline_get_rows_q4_0]; break;
                                 case GGML_TYPE_Q4_1: [encoder setComputePipelineState:ctx->pipeline_get_rows_q4_1]; break;
+                                case GGML_TYPE_Q8_0: [encoder setComputePipelineState:ctx->pipeline_get_rows_q8_0]; break;
                                 case GGML_TYPE_Q2_K: [encoder setComputePipelineState:ctx->pipeline_get_rows_q2_K]; break;
                                 case GGML_TYPE_Q3_K: [encoder setComputePipelineState:ctx->pipeline_get_rows_q3_K]; break;
                                 case GGML_TYPE_Q4_K: [encoder setComputePipelineState:ctx->pipeline_get_rows_q4_K]; break;
@@ -779,13 +997,10 @@ void ggml_metal_graph_compute(
                         } break;
                     case GGML_OP_RMS_NORM:
                         {
-                            if (encoder == nil) {
-                                encoder = [command_buffer computeCommandEncoder];
-                            }
+                            float eps;
+                            memcpy(&eps, dst->op_params, sizeof(float));
 
-                            const float eps = 1e-6f;
-
-                            const int nth = 256;
+                            const int nth = 512;
 
                             [encoder setComputePipelineState:ctx->pipeline_rms_norm];
                             [encoder setBuffer:id_src0 offset:offs_src0 atIndex:0];
@@ -793,7 +1008,7 @@ void ggml_metal_graph_compute(
                             [encoder setBytes:&ne00 length:sizeof( int64_t) atIndex:2];
                             [encoder setBytes:&nb01 length:sizeof(uint64_t) atIndex:3];
                             [encoder setBytes:&eps  length:sizeof(   float) atIndex:4];
-                            [encoder setThreadgroupMemoryLength:nth*sizeof(float) atIndex:0];
+                            [encoder setThreadgroupMemoryLength:nth/32*sizeof(float) atIndex:0];
 
                             const int64_t nrows = ggml_nrows(src0);
 
@@ -801,20 +1016,17 @@ void ggml_metal_graph_compute(
                         } break;
                     case GGML_OP_NORM:
                         {
-                            if (encoder == nil) {
-                                encoder = [command_buffer computeCommandEncoder];
-                            }
-
-                            const float eps = 1e-5f;
+                            float eps;
+                            memcpy(&eps, dst->op_params, sizeof(float));
 
                             const int nth = 256;
 
                             [encoder setComputePipelineState:ctx->pipeline_norm];
-                            [encoder setBuffer:id_src0 offset:offs_src0 atIndex:0];
-                            [encoder setBuffer:id_dst  offset:offs_dst  atIndex:1];
-                            [encoder setBytes:&ne00 length:sizeof( int64_t) atIndex:2];
-                            [encoder setBytes:&nb01 length:sizeof(uint64_t) atIndex:3];
-                            [encoder setBytes:&eps  length:sizeof(   float) atIndex:4];
+                            [encoder setBuffer:id_src0 offset:offs_src0        atIndex:0];
+                            [encoder setBuffer:id_dst  offset:offs_dst         atIndex:1];
+                            [encoder setBytes:&ne00    length:sizeof( int64_t) atIndex:2];
+                            [encoder setBytes:&nb01    length:sizeof(uint64_t) atIndex:3];
+                            [encoder setBytes:&eps     length:sizeof(   float) atIndex:4];
                             [encoder setThreadgroupMemoryLength:nth*sizeof(float) atIndex:0];
 
                             const int64_t nrows = ggml_nrows(src0);
@@ -823,15 +1035,12 @@ void ggml_metal_graph_compute(
                         } break;
                     case GGML_OP_ALIBI:
                         {
-                            if (encoder == nil) {
-                                encoder = [command_buffer computeCommandEncoder];
-                            }
-
                             GGML_ASSERT((src0t == GGML_TYPE_F32));
 
-                            const int   n_past   = ((int32_t *) src1->data)[0]; UNUSED(n_past);
-                            const int   n_head   = ((int32_t *) src1->data)[1];
-                            const float max_bias = ((float *)   src1->data)[2];
+                            const int n_past = ((int32_t *) dst->op_params)[0]; UNUSED(n_past);
+                            const int n_head = ((int32_t *) dst->op_params)[1];
+                            float max_bias;
+                            memcpy(&max_bias, (int32_t *) dst->op_params + 2, sizeof(float));
 
                             if (__builtin_popcount(n_head) != 1) {
                                 GGML_ASSERT(false && "only power-of-two n_head implemented");
@@ -860,51 +1069,53 @@ void ggml_metal_graph_compute(
                             [encoder setBytes:&nb2  length:sizeof(uint64_t) atIndex:16];
                             [encoder setBytes:&nb3  length:sizeof(uint64_t) atIndex:17];
                             [encoder setBytes:&m0  length:sizeof(    float) atIndex:18];
+
                             const int nth = 32;
+
                             [encoder dispatchThreadgroups:MTLSizeMake(ne01, ne02, ne03) threadsPerThreadgroup:MTLSizeMake(nth, 1, 1)];
                         } break;
                     case GGML_OP_ROPE:
                         {
-                            if (encoder == nil) {
-                                encoder = [command_buffer computeCommandEncoder];
-                            }
-
-                            const int n_dims = ((int32_t *) src1->data)[1];
-                            const int mode   = ((int32_t *) src1->data)[2];
+                            const int n_past = ((int32_t *) dst->op_params)[0];
+                            const int n_dims = ((int32_t *) dst->op_params)[1];
+                            const int mode   = ((int32_t *) dst->op_params)[2];
 
-                            const int n_past = ((int32_t *)(src1->data))[0];
+                            float freq_base;
+                            float freq_scale;
+                            memcpy(&freq_base,  (int32_t *) dst->op_params + 4, sizeof(float));
+                            memcpy(&freq_scale, (int32_t *) dst->op_params + 5, sizeof(float));
 
                             [encoder setComputePipelineState:ctx->pipeline_rope];
-                            [encoder setBuffer:id_src0 offset:offs_src0 atIndex:0];
-                            [encoder setBuffer:id_dst  offset:offs_dst  atIndex:1];
-                            [encoder setBytes:&ne00   length:sizeof( int64_t) atIndex:2];
-                            [encoder setBytes:&ne01   length:sizeof( int64_t) atIndex:3];
-                            [encoder setBytes:&ne02   length:sizeof( int64_t) atIndex:4];
-                            [encoder setBytes:&ne03   length:sizeof( int64_t) atIndex:5];
-                            [encoder setBytes:&nb00   length:sizeof(uint64_t) atIndex:6];
-                            [encoder setBytes:&nb01   length:sizeof(uint64_t) atIndex:7];
-                            [encoder setBytes:&nb02   length:sizeof(uint64_t) atIndex:8];
-                            [encoder setBytes:&nb03   length:sizeof(uint64_t) atIndex:9];
-                            [encoder setBytes:&ne0    length:sizeof( int64_t) atIndex:10];
-                            [encoder setBytes:&ne1    length:sizeof( int64_t) atIndex:11];
-                            [encoder setBytes:&ne2    length:sizeof( int64_t) atIndex:12];
-                            [encoder setBytes:&ne3    length:sizeof( int64_t) atIndex:13];
-                            [encoder setBytes:&nb0    length:sizeof(uint64_t) atIndex:14];
-                            [encoder setBytes:&nb1    length:sizeof(uint64_t) atIndex:15];
-                            [encoder setBytes:&nb2    length:sizeof(uint64_t) atIndex:16];
-                            [encoder setBytes:&nb3    length:sizeof(uint64_t) atIndex:17];
-                            [encoder setBytes:&n_past length:sizeof(     int) atIndex:18];
-                            [encoder setBytes:&n_dims length:sizeof(     int) atIndex:19];
-                            [encoder setBytes:&mode   length:sizeof(     int) atIndex:20];
+                            [encoder setBuffer:id_src0 offset:offs_src0        atIndex:0];
+                            [encoder setBuffer:id_dst  offset:offs_dst         atIndex:1];
+                            [encoder setBytes:&ne00    length:sizeof( int64_t) atIndex:2];
+                            [encoder setBytes:&ne01    length:sizeof( int64_t) atIndex:3];
+                            [encoder setBytes:&ne02    length:sizeof( int64_t) atIndex:4];
+                            [encoder setBytes:&ne03    length:sizeof( int64_t) atIndex:5];
+                            [encoder setBytes:&nb00    length:sizeof(uint64_t) atIndex:6];
+                            [encoder setBytes:&nb01    length:sizeof(uint64_t) atIndex:7];
+                            [encoder setBytes:&nb02    length:sizeof(uint64_t) atIndex:8];
+                            [encoder setBytes:&nb03    length:sizeof(uint64_t) atIndex:9];
+                            [encoder setBytes:&ne0     length:sizeof( int64_t) atIndex:10];
+                            [encoder setBytes:&ne1     length:sizeof( int64_t) atIndex:11];
+                            [encoder setBytes:&ne2     length:sizeof( int64_t) atIndex:12];
+                            [encoder setBytes:&ne3     length:sizeof( int64_t) atIndex:13];
+                            [encoder setBytes:&nb0     length:sizeof(uint64_t) atIndex:14];
+                            [encoder setBytes:&nb1     length:sizeof(uint64_t) atIndex:15];
+                            [encoder setBytes:&nb2     length:sizeof(uint64_t) atIndex:16];
+                            [encoder setBytes:&nb3     length:sizeof(uint64_t) atIndex:17];
+                            [encoder setBytes:&n_past  length:sizeof(     int) atIndex:18];
+                            [encoder setBytes:&n_dims  length:sizeof(     int) atIndex:19];
+                            [encoder setBytes:&mode    length:sizeof(     int) atIndex:20];
+                            [encoder setBytes:&freq_base  length:sizeof(float) atIndex:21];
+                            [encoder setBytes:&freq_scale length:sizeof(float) atIndex:22];
 
                             [encoder dispatchThreadgroups:MTLSizeMake(ne01, ne02, ne03) threadsPerThreadgroup:MTLSizeMake(1, 1, 1)];
                         } break;
+                    case GGML_OP_DUP:
                     case GGML_OP_CPY:
+                    case GGML_OP_CONT:
                         {
-                            if (encoder == nil) {
-                                encoder = [command_buffer computeCommandEncoder];
-                            }
-
                             const int nth = 32;
 
                             switch (src0t) {
@@ -927,30 +1138,32 @@ void ggml_metal_graph_compute(
                                 default: GGML_ASSERT(false && "not implemented");
                             }
 
-                            [encoder setBuffer:id_src0 offset:offs_src0 atIndex:0];
-                            [encoder setBuffer:id_dst  offset:offs_dst  atIndex:1];
-                            [encoder setBytes:&ne00 length:sizeof( int64_t) atIndex:2];
-                            [encoder setBytes:&ne01 length:sizeof( int64_t) atIndex:3];
-                            [encoder setBytes:&ne02 length:sizeof( int64_t) atIndex:4];
-                            [encoder setBytes:&ne03 length:sizeof( int64_t) atIndex:5];
-                            [encoder setBytes:&nb00 length:sizeof(uint64_t) atIndex:6];
-                            [encoder setBytes:&nb01 length:sizeof(uint64_t) atIndex:7];
-                            [encoder setBytes:&nb02 length:sizeof(uint64_t) atIndex:8];
-                            [encoder setBytes:&nb03 length:sizeof(uint64_t) atIndex:9];
-                            [encoder setBytes:&ne0  length:sizeof( int64_t) atIndex:10];
-                            [encoder setBytes:&ne1  length:sizeof( int64_t) atIndex:11];
-                            [encoder setBytes:&ne2  length:sizeof( int64_t) atIndex:12];
-                            [encoder setBytes:&ne3  length:sizeof( int64_t) atIndex:13];
-                            [encoder setBytes:&nb0  length:sizeof(uint64_t) atIndex:14];
-                            [encoder setBytes:&nb1  length:sizeof(uint64_t) atIndex:15];
-                            [encoder setBytes:&nb2  length:sizeof(uint64_t) atIndex:16];
-                            [encoder setBytes:&nb3  length:sizeof(uint64_t) atIndex:17];
+                            [encoder setBuffer:id_src0 offset:offs_src0        atIndex:0];
+                            [encoder setBuffer:id_dst  offset:offs_dst         atIndex:1];
+                            [encoder setBytes:&ne00    length:sizeof( int64_t) atIndex:2];
+                            [encoder setBytes:&ne01    length:sizeof( int64_t) atIndex:3];
+                            [encoder setBytes:&ne02    length:sizeof( int64_t) atIndex:4];
+                            [encoder setBytes:&ne03    length:sizeof( int64_t) atIndex:5];
+                            [encoder setBytes:&nb00    length:sizeof(uint64_t) atIndex:6];
+                            [encoder setBytes:&nb01    length:sizeof(uint64_t) atIndex:7];
+                            [encoder setBytes:&nb02    length:sizeof(uint64_t) atIndex:8];
+                            [encoder setBytes:&nb03    length:sizeof(uint64_t) atIndex:9];
+                            [encoder setBytes:&ne0     length:sizeof( int64_t) atIndex:10];
+                            [encoder setBytes:&ne1     length:sizeof( int64_t) atIndex:11];
+                            [encoder setBytes:&ne2     length:sizeof( int64_t) atIndex:12];
+                            [encoder setBytes:&ne3     length:sizeof( int64_t) atIndex:13];
+                            [encoder setBytes:&nb0     length:sizeof(uint64_t) atIndex:14];
+                            [encoder setBytes:&nb1     length:sizeof(uint64_t) atIndex:15];
+                            [encoder setBytes:&nb2     length:sizeof(uint64_t) atIndex:16];
+                            [encoder setBytes:&nb3     length:sizeof(uint64_t) atIndex:17];
 
                             [encoder dispatchThreadgroups:MTLSizeMake(ne01, ne02, ne03) threadsPerThreadgroup:MTLSizeMake(nth, 1, 1)];
                         } break;
                     default:
-                        fprintf(stderr, "%s: node %3d, op = %8s not implemented\n", __func__, i, ggml_op_name(dst->op));
-                        GGML_ASSERT(false);
+                        {
+                            fprintf(stderr, "%s: node %3d, op = %8s not implemented\n", __func__, i, ggml_op_name(dst->op));
+                            GGML_ASSERT(false);
+                        }
                 }
             }
 
@@ -964,17 +1177,19 @@ void ggml_metal_graph_compute(
     }
 
     // wait for all threads to finish
-    dispatch_barrier_sync(queue, ^{});
-
-    [command_buffers[n_cb - 1] waitUntilCompleted];
+    dispatch_barrier_sync(ctx->d_queue, ^{});
 
     // check status of command buffers
     // needed to detect if the device ran out-of-memory for example (#1881)
     for (int i = 0; i < n_cb; i++) {
-        MTLCommandBufferStatus status = (MTLCommandBufferStatus) [command_buffers[i] status];
+        [ctx->command_buffers[i] waitUntilCompleted];
+
+        MTLCommandBufferStatus status = (MTLCommandBufferStatus) [ctx->command_buffers[i] status];
         if (status != MTLCommandBufferStatusCompleted) {
             fprintf(stderr, "%s: command buffer %d failed with status %lu\n", __func__, i, status);
             GGML_ASSERT(false);
         }
     }
+
+    }
 }
index e62fe6842ea72bf950619935c74e9fecf1d10799..82e1a0c7aca06e124898dc1c8caa7064bafef261 100644 (file)
@@ -18,46 +18,11 @@ typedef struct {
     uint8_t qs[QK4_1 / 2];  // nibbles / quants
 } block_q4_1;
 
-static void dequantize_row_q4_0(device const block_q4_0 * x, device float * y, int k) {
-    const int qk = QK4_0;
-
-    assert(k % qk == 0);
-
-    const int nb = k / qk;
-
-    for (int i = 0; i < nb; i++) {
-        const half d = x[i].d;
-
-        for (int j = 0; j < qk/2; ++j) {
-            const int x0 = (x[i].qs[j] & 0x0F) - 8;
-            const int x1 = (x[i].qs[j] >>   4) - 8;
-
-            y[i*qk + j + 0   ] = x0*d;
-            y[i*qk + j + qk/2] = x1*d;
-        }
-    }
-}
-
-static void dequantize_row_q4_1(device const block_q4_1 * x, device float * y, int k) {
-    const int qk = QK4_1;
-
-    assert(k % qk == 0);
-
-    const int nb = k / qk;
-
-    for (int i = 0; i < nb; i++) {
-        const half d = x[i].d;
-        const half m = x[i].m;
-
-        for (int j = 0; j < qk/2; ++j) {
-            const int x0 = (x[i].qs[j] & 0x0F);
-            const int x1 = (x[i].qs[j] >>   4);
-
-            y[i*qk + j + 0   ] = x0*d + m;
-            y[i*qk + j + qk/2] = x1*d + m;
-        }
-    }
-}
+#define QK8_0 32
+typedef struct {
+    half    d;         // delta
+    int8_t  qs[QK8_0]; // quants
+} block_q8_0;
 
 kernel void kernel_add(
         device const float * src0,
@@ -67,6 +32,17 @@ kernel void kernel_add(
     dst[tpig] = src0[tpig] + src1[tpig];
 }
 
+// assumption: src1 is a row
+// broadcast src1 into src0
+kernel void kernel_add_row(
+        device const float * src0,
+        device const float * src1,
+        device       float * dst,
+        constant   int64_t & ne00,
+        uint tpig[[thread_position_in_grid]]) {
+    dst[tpig] = src0[tpig] + src1[tpig % ne00];
+}
+
 kernel void kernel_mul(
         device const float * src0,
         device const float * src1,
@@ -117,7 +93,12 @@ kernel void kernel_gelu(
     device       float * dst,
     uint tpig[[thread_position_in_grid]]) {
     float x = src0[tpig];
-    dst[tpig] = 0.5f*x*(1.0f + tanh(SQRT_2_OVER_PI*x*(1.0f + GELU_COEF_A*x*x)));
+
+    // BEWARE !!!
+    // Simply using "tanh" instead of "precise::tanh" will sometimes results in NaNs!
+    // This was observed with Falcon 7B and 40B models
+    //
+    dst[tpig] = 0.5f*x*(1.0f + precise::tanh(SQRT_2_OVER_PI*x*(1.0f + GELU_COEF_A*x*x)));
 }
 
 kernel void kernel_soft_max(
@@ -208,54 +189,6 @@ kernel void kernel_diag_mask_inf(
     }
 }
 
-kernel void kernel_get_rows_f16(
-        device const  void * src0,
-        device const   int * src1,
-        device       float * dst,
-        constant   int64_t & ne00,
-        constant  uint64_t & nb01,
-        constant  uint64_t & nb1,
-        uint tpig[[thread_position_in_grid]]) {
-    const int i = tpig;
-    const int r = ((device int32_t *) src1)[i];
-
-    for (int j = 0; j < ne00; j++) {
-        dst[i*nb1 + j] = ((device half *) ((device char *) src0 + r*nb01))[j];
-    }
-}
-
-kernel void kernel_get_rows_q4_0(
-        device const  void * src0,
-        device const   int * src1,
-        device       float * dst,
-        constant   int64_t & ne00,
-        constant  uint64_t & nb01,
-        constant  uint64_t & nb1,
-        uint tpig[[thread_position_in_grid]]) {
-    const int i = tpig;
-    const int r = ((device int32_t *) src1)[i];
-
-    dequantize_row_q4_0(
-            (device const block_q4_0 *) ((device char *) src0 + r*nb01),
-                       (device float *) ((device char *)  dst + i*nb1), ne00);
-}
-
-kernel void kernel_get_rows_q4_1(
-        device const  void * src0,
-        device const   int * src1,
-        device       float * dst,
-        constant   int64_t & ne00,
-        constant  uint64_t & nb01,
-        constant  uint64_t & nb1,
-        uint tpig[[thread_position_in_grid]]) {
-    const int i = tpig;
-    const int r = ((device int32_t *) src1)[i];
-
-    dequantize_row_q4_1(
-            (device const block_q4_1 *) ((device char *) src0 + r*nb01),
-                       (device float *) ((device char *)  dst + i*nb1), ne00);
-}
-
 kernel void kernel_norm(
         device const  void * src0,
         device       float * dst,
@@ -331,26 +264,33 @@ kernel void kernel_rms_norm(
         threadgroup float  * sum [[threadgroup(0)]],
         uint tgpig[[threadgroup_position_in_grid]],
         uint tpitg[[thread_position_in_threadgroup]],
+        uint sgitg[[simdgroup_index_in_threadgroup]],
+        uint tiisg[[thread_index_in_simdgroup]],
         uint   ntg[[threads_per_threadgroup]]) {
-    device const float * x = (device const float *) ((device const char *) src0 + tgpig*nb01);
+    device const float4 * x = (device const float4 *) ((device const char *) src0 + tgpig*nb01);
+    device const float * x_scalar = (device const float *) x;
+    float4 sumf=0;
+    float all_sum=0;
 
     // parallel sum
-    sum[tpitg] = 0.0f;
-    for (int i00 = tpitg; i00 < ne00; i00 += ntg) {
-        sum[tpitg] += x[i00] * x[i00];
+    for (int i00 = tpitg; i00 < ne00/4; i00 += ntg) {
+        sumf += x[i00] * x[i00];
+    }
+    all_sum = sumf[0] + sumf[1] + sumf[2] + sumf[3];
+    all_sum = simd_sum(all_sum);
+    if (tiisg == 0) {
+        sum[sgitg] = all_sum;
     }
 
-    // reduce
     threadgroup_barrier(mem_flags::mem_threadgroup);
-    for (uint i = ntg/2; i > 0; i /= 2) {
-        if (tpitg < i) {
-            sum[tpitg] += sum[tpitg + i];
-        }
-        threadgroup_barrier(mem_flags::mem_threadgroup);
+    // broadcast, simd group number is ntg / 32
+    for (uint i = ntg / 32 / 2; i > 0; i /= 2) {
+       if (tpitg < i) {
+           sum[tpitg] += sum[tpitg + i];
+       }
     }
-
-    // broadcast
     if (tpitg == 0) {
+        for (int i = 4 * (ne00 / 4); i < ne00; i++) {sum[0] += x_scalar[i];}
         sum[0] /= ne00;
     }
 
@@ -359,146 +299,201 @@ kernel void kernel_rms_norm(
     const float mean  = sum[0];
     const float scale = 1.0f/sqrt(mean + eps);
 
-    device float * y = dst + tgpig*ne00;
-    for (int i00 = tpitg; i00 < ne00; i00 += ntg) {
+    device float4 * y = (device float4 *) (dst + tgpig*ne00);
+    device float * y_scalar = (device float *) y;
+    for (int i00 = tpitg; i00 < ne00/4; i00 += ntg) {
         y[i00] = x[i00] * scale;
     }
+    if (tpitg == 0) {
+        for (int i00 = 4 * (ne00 / 4); i00 < ne00; i00++) {y_scalar[i00] = x_scalar[i00] * scale;}
+    }
 }
 
-kernel void kernel_mul_mat_q4_0_f32(
-        device const  void * src0,
-        device const float * src1,
-        device       float * dst,
-        constant   int64_t & ne00,
-        constant   int64_t & ne10,
-        constant   int64_t & ne0,
-        threadgroup float  * sum [[threadgroup(0)]],
-        uint2 tgpig[[threadgroup_position_in_grid]],
-        uint2 tpitg[[thread_position_in_threadgroup]],
-        uint2  tptg[[threads_per_threadgroup]]) {
-    const int nb = ne00/QK4_0;
-
-    const int64_t r0 = tgpig.x;
-    const int64_t r1 = tgpig.y;
-
-    device const block_q4_0 * x = (device const block_q4_0 *) src0 + r0*nb;
-    device const float      * y = (device const float      *) src1 + r1*ne10;
-
-    const int nth = tptg.x*tptg.y;
-    const int ith = tptg.y*tpitg.x + tpitg.y;
-
-    const int ix = tpitg.y/4;           // 0 or 1
-    const int iy = tpitg.y - 4*ix;      // 0...3
-
-    const int first = 4 * iy;
-
-    float sumf = 0;
-
-    for (int i = 2*tpitg.x + ix; i < nb; i += 2*tptg.x) {
-
-        const float d = (float)x[i].d;
-
-        device const uint8_t * xl = x[i].qs + first;
-        device const float   * yl = y + i * QK4_0 + first;
-
-        float2 acc = {0.0f, 0.0f};
+// function for calculate inner product between half a q4_0 block and 16 floats (yl), sumy is SUM(yl[i])
+// il indicates where the q4 quants begin (0 or QK4_0/4)
+// we assume that the yl's have been multiplied with the appropriate scale factor
+// that corresponds to the missing bit shifts (1, 1/16, 1/256, 1/4096)
+inline float block_q_n_dot_y(device const block_q4_0 * qb_curr, float sumy, thread float * yl, int il) {
+    float d = qb_curr->d;
+    float2 acc = 0.f;
+    device const uint16_t * qs = ((device const uint16_t *)qb_curr + 1 + il/2);
+    for (int i = 0; i < 8; i+=2) {
+        acc[0] += yl[i + 0] * (qs[i / 2] & 0x000F)
+                + yl[i + 1] * (qs[i / 2] & 0x0F00);
+        acc[1] += yl[i + 8] * (qs[i / 2] & 0x00F0)
+                + yl[i + 9] * (qs[i / 2] & 0xF000);
+    }
+    return d * (sumy * -8.f + acc[0] + acc[1]);
+}
 
-        for (int j = 0; j < 4; ++j) {
+// function for calculate inner product between half a q4_1 block and 16 floats (yl), sumy is SUM(yl[i])
+// il indicates where the q4 quants begin (0 or QK4_0/4)
+// we assume that the yl's have been multiplied with the appropriate scale factor
+// that corresponds to the missing bit shifts (1, 1/16, 1/256, 1/4096)
+inline float block_q_n_dot_y(device const block_q4_1 * qb_curr, float sumy, thread float * yl, int il) {
+    float d = qb_curr->d;
+    float m = qb_curr->m;
+    device const uint16_t * qs = ((device const uint16_t *)qb_curr + 2 + il/2);
+    float2 acc = 0.f;
+    for (int i = 0; i < 8; i+=2) {
+        acc[0] += yl[i + 0] * (qs[i / 2] & 0x000F)
+                + yl[i + 1] * (qs[i / 2] & 0x0F00);
+        acc[1] += yl[i + 8] * (qs[i / 2] & 0x00F0)
+                + yl[i + 9] * (qs[i / 2] & 0xF000);
+    }
+    return d * (acc[0] + acc[1]) + sumy * m;
+}
 
-            acc[0] += yl[j] * (xl[j] & 0xF) + yl[j+16] * (xl[j] >> 4);
-            acc[1] += yl[j] + yl[j+16];
+// putting them in the kernel cause a significant performance penalty
+#define N_DST 4 // each SIMD group works on 4 rows
+#define N_SIMDGROUP 2 // number of SIMD groups in a thread group
+#define N_SIMDWIDTH 32 // assuming SIMD group size is 32
+//Note: This is a template, but strictly speaking it only applies to
+//      quantizations where the block size is 32. It also does not
+//      giard against the number of rows not being divisible by
+//      N_DST, so this is another explicit assumption of the implementation.
+template<typename block_q_type, int nr, int nsg, int nw>
+void mul_vec_q_n_f32(device const void * src0, device const float * src1, device float * dst,
+                    int64_t ne00, int64_t ne01, int64_t ne02, int64_t ne10, int64_t ne12, int64_t ne0, int64_t ne1, uint gqa,
+                    uint3 tgpig, uint tiisg, uint sgitg) {
+    const int nb = ne00/QK4_0;
+    const int r0 = tgpig.x;
+    const int r1 = tgpig.y;
+    const int im = tgpig.z;
+    const int first_row = (r0 * nsg + sgitg) * nr;
+    const uint offset0 = first_row * nb + im/gqa*(nb*ne0);
+    device const block_q_type * x = (device const block_q_type *) src0 + offset0;
+    device const float        * y = (device const float        *) src1 + r1*ne10 + im*ne00*ne1;
+    float yl[16];       // src1 vector cache
+    float sumf[nr]={0.f};
+
+    const int ix = tiisg/2;
+    const int il = 8*(tiisg%2);
+
+    device const float * yb = y + ix * QK4_0 + il;
+
+    // each thread in a SIMD group deals with half a block.
+    for (int ib = ix; ib < nb; ib += nw/2) {
+        float sumy = 0;
+        for (int i = 0; i < 8; i += 2) {
+            sumy += yb[i] + yb[i+1];
+            yl[i+0] = yb[i+ 0];
+            yl[i+1] = yb[i+ 1]/256.f;
+            sumy += yb[i+16] + yb[i+17];
+            yl[i+8] = yb[i+16]/16.f;
+            yl[i+9] = yb[i+17]/4096.f;
+        }
 
+        for (int row = 0; row < nr; row++) {
+            sumf[row] += block_q_n_dot_y(x+ib+row*nb, sumy, yl, il);
         }
 
-        sumf += d * (acc[0] - 8.f*acc[1]);
+        yb += QK4_0 * 16;
     }
 
-    sum[ith] = sumf;
-
-    //
-    // Accumulate the sum from all threads in the threadgroup
-    //
-    threadgroup_barrier(mem_flags::mem_threadgroup);
-    if (ith%4 == 0) {
-        sum[ith] += sum[ith+1] + sum[ith+2] + sum[ith+3];
-    }
-    threadgroup_barrier(mem_flags::mem_threadgroup);
-    if (ith%16 == 0) {
-        sum[ith] += sum[ith+4] + sum[ith+8] + sum[ith+12];
-    }
-    threadgroup_barrier(mem_flags::mem_threadgroup);
-    if (ith == 0) {
-        for (int i = 16; i < nth; i += 16) sum[0] += sum[i];
-        dst[r1*ne0 + r0] = sum[0];
+    for (int row = 0; row < nr; ++row) {
+        const float tot = simd_sum(sumf[row]);
+        if (tiisg == 0 && first_row + row < ne01) {
+            dst[r1*ne0 + im*ne0*ne1 + first_row + row] = tot;
+        }
     }
 }
 
-kernel void kernel_mul_mat_q4_1_f32(
+kernel void kernel_mul_mat_q4_0_f32(
         device const  void * src0,
         device const float * src1,
         device       float * dst,
         constant   int64_t & ne00,
-        constant   int64_t & ne10,
-        constant   int64_t & ne0,
-        threadgroup float  * sum [[threadgroup(0)]],
-        uint2 tgpig[[threadgroup_position_in_grid]],
-        uint2 tpitg[[thread_position_in_threadgroup]],
-        uint2  tptg[[threads_per_threadgroup]]) {
-    const int nb = ne00/QK4_1;
-
-    const int64_t r0 = tgpig.x;
-    const int64_t r1 = tgpig.y;
-
-    device const block_q4_1 * x = (device const block_q4_1 *) src0 + r0*nb;
-    device const float      * y = (device const float      *) src1 + r1*ne10;
-
-    const uint nth = tptg.x*tptg.y;
-    const uint ith = tptg.y*tpitg.x + tpitg.y;
-
-    const int ix = tpitg.y/4;           // 0 or 1
-    const int iy = tpitg.y - 4*ix;      // 0...3
-
-    const int first = 4 * iy;
-
-    float sumf = 0;
-
-    for (int i = 2*tpitg.x + ix; i < nb; i += 2*tptg.x) {
-
-        const float d = (float)x[i].d;
-        const float m = (float)x[i].m;
-
-        device const uint8_t * xl = x[i].qs + first;
-        device const float   * yl = y + i * QK4_1 + first;
-
-        float2 acc = {0.0f, 0.0f};
+        constant   int64_t & ne01[[buffer(4)]],
+        constant   int64_t & ne02[[buffer(5)]],
+        constant   int64_t & ne10[[buffer(9)]],
+        constant   int64_t & ne12[[buffer(11)]],
+        constant   int64_t & ne0[[buffer(15)]],
+        constant   int64_t & ne1[[buffer(16)]],
+        constant   uint    & gqa[[buffer(17)]],
+        uint3 tgpig[[threadgroup_position_in_grid]],
+        uint tiisg[[thread_index_in_simdgroup]],
+        uint sgitg[[simdgroup_index_in_threadgroup]]) {
+    mul_vec_q_n_f32<block_q4_0, N_DST, N_SIMDGROUP, N_SIMDWIDTH>(src0,src1,dst,ne00,ne01,ne02,ne10,ne12,ne0,ne1,gqa,tgpig,tiisg,sgitg);
+}
 
-        for (int j = 0; j < 4; ++j) {
+kernel void kernel_mul_mat_q4_1_f32(
+        device const  void * src0,
+        device const float * src1,
+        device       float * dst,
+        constant   int64_t & ne00,
+        constant   int64_t & ne01[[buffer(4)]],
+        constant   int64_t & ne02[[buffer(5)]],
+        constant   int64_t & ne10[[buffer(9)]],
+        constant   int64_t & ne12[[buffer(11)]],
+        constant   int64_t & ne0[[buffer(15)]],
+        constant   int64_t & ne1[[buffer(16)]],
+        constant   uint    & gqa[[buffer(17)]],
+        uint3 tgpig[[threadgroup_position_in_grid]],
+        uint tiisg[[thread_index_in_simdgroup]],
+        uint sgitg[[simdgroup_index_in_threadgroup]]) {
+     mul_vec_q_n_f32<block_q4_1, N_DST, N_SIMDGROUP, N_SIMDWIDTH>(src0,src1,dst,ne00,ne01,ne02,ne10,ne12,ne0,ne1,gqa,tgpig,tiisg,sgitg);
+}
 
-            acc[0] += yl[j+ 0] * (d * (xl[j] & 0xF) + m);
-            acc[1] += yl[j+16] * (d * (xl[j] >>  4) + m);
+kernel void kernel_mul_mat_q8_0_f32(
+        device const  void * src0,
+        device const float * src1,
+        device       float * dst,
+        constant   int64_t & ne00,
+        constant   int64_t & ne01[[buffer(4)]],
+        constant   int64_t & ne02[[buffer(5)]],
+        constant   int64_t & ne10[[buffer(9)]],
+        constant   int64_t & ne12[[buffer(11)]],
+        constant   int64_t & ne0[[buffer(15)]],
+        constant   int64_t & ne1[[buffer(16)]],
+        constant   uint    & gqa[[buffer(17)]],
+        uint3 tgpig[[threadgroup_position_in_grid]],
+        uint tiisg[[thread_index_in_simdgroup]],
+        uint sgitg[[simdgroup_index_in_threadgroup]]) {
+    const int nr  = N_DST;
+    const int nsg = N_SIMDGROUP;
+    const int nw  = N_SIMDWIDTH;
+
+    const int nb = ne00/QK8_0;
+    const int r0 = tgpig.x;
+    const int r1 = tgpig.y;
+    const int im = tgpig.z;
+    const int first_row = (r0 * nsg + sgitg) * nr;
+    const uint offset0 = first_row * nb + im/gqa*(nb*ne0);
+    device const block_q8_0 * x = (device const block_q8_0 *) src0 + offset0;
+    device const float      * y = (device const float      *) src1 + r1*ne10 + im*ne00*ne1;
+
+    float yl[16];
+    float sumf[nr]={0.f};
+
+    const int ix = tiisg/2;
+    const int il = tiisg%2;
+
+    device const float * yb = y + ix * QK8_0 + 16*il;
+
+    // each thread in a SIMD group deals with half a block.
+    for (int ib = ix; ib < nb; ib += nw/2) {
+        for (int i = 0; i < 16; ++i) {
+            yl[i] = yb[i];
+        }
 
+        for (int row = 0; row < nr; row++) {
+            device const int8_t * qs = x[ib+row*nb].qs + 16*il;
+            float sumq = 0.f;
+            for (int iq = 0; iq < 16; ++iq) {
+                sumq += qs[iq] * yl[iq];
+            }
+            sumf[row] += sumq*x[ib+row*nb].d;
         }
 
-        sumf += acc[0] + acc[1];
+        yb += QK8_0 * 16;
     }
 
-    sum[ith] = sumf;
-
-    //
-    // Accumulate the sum from all threads in the threadgroup
-    //
-    threadgroup_barrier(mem_flags::mem_threadgroup);
-    if (ith%4 == 0) {
-        sum[ith] += sum[ith+1] + sum[ith+2] + sum[ith+3];
-    }
-    threadgroup_barrier(mem_flags::mem_threadgroup);
-    if (ith%16 == 0) {
-        sum[ith] += sum[ith+4] + sum[ith+8] + sum[ith+12];
-    }
-    threadgroup_barrier(mem_flags::mem_threadgroup);
-    if (ith == 0) {
-        for (uint i = 16; i < nth; i += 16) sum[0] += sum[i];
-        dst[r1*ne0 + r0] = sum[0];
+    for (int row = 0; row < nr; ++row) {
+        const float tot = simd_sum(sumf[row]);
+        if (tiisg == 0 && first_row + row < ne01) {
+            dst[r1*ne0 + im*ne0*ne1 + first_row + row] = tot;
+        }
     }
 }
 
@@ -508,11 +503,13 @@ kernel void kernel_mul_mat_f16_f32(
         device       float * dst,
         constant   int64_t & ne00,
         constant   int64_t & ne01,
+        constant   int64_t & ne02,
         constant  uint64_t & nb00,
         constant  uint64_t & nb01,
         constant  uint64_t & nb02,
         constant   int64_t & ne10,
         constant   int64_t & ne11,
+        constant   int64_t & ne12,
         constant  uint64_t & nb10,
         constant  uint64_t & nb11,
         constant  uint64_t & nb12,
@@ -528,7 +525,7 @@ kernel void kernel_mul_mat_f16_f32(
     const int64_t r1 = tgpig.y;
     const int64_t im = tgpig.z;
 
-    device const half  * x = (device const half  *) (src0 + r0*nb01 + im*nb02);
+    device const half  * x = (device const half  *) (src0 + r0*nb01 + im/(ne12/ne02)*nb02);
     device const float * y = (device const float *) (src1 + r1*nb11 + im*nb12);
 
     sum[tpitg.x] = 0.0f;
@@ -615,17 +612,19 @@ kernel void kernel_rope(
         constant       int & n_past,
         constant       int & n_dims,
         constant       int & mode,
+        constant     float & freq_base,
+        constant     float & freq_scale,
         uint3 tpig[[thread_position_in_grid]]) {
     const int64_t i3 = tpig[2];
     const int64_t i2 = tpig[1];
     const int64_t i1 = tpig[0];
 
     const bool is_neox = mode & 2;
-    const float theta_scale = pow(10000.0, -2.0f/n_dims);
+    const float theta_scale = pow(freq_base, -2.0f/n_dims);
 
     const int64_t p = ((mode & 1) == 0 ? n_past + i2 : i2);
 
-    float theta = (float)p;
+    float theta = freq_scale * (float)p;
 
     if (!is_neox) {
         for (int64_t i0 = 0; i0 < ne0; i0 += 2) {
@@ -644,7 +643,25 @@ kernel void kernel_rope(
             dst_data[1] = x0*sin_theta + x1*cos_theta;
         }
     } else {
-        // TODO: implement
+        for (int64_t ib = 0; ib < ne0/n_dims; ++ib) {
+            for (int64_t ic = 0; ic < n_dims; ic += 2) {
+                const float cos_theta = cos(theta);
+                const float sin_theta = sin(theta);
+
+                theta *= theta_scale;
+
+                const int64_t i0 = ib*n_dims + ic/2;
+
+                device const float * const src = (device float *)((device char *) src0 + i3*nb03 + i2*nb02 + i1*nb01 + i0*nb00);
+                device       float * dst_data  = (device float *)((device char *)  dst + i3*nb3  + i2*nb2  + i1*nb1  + i0*nb0);
+
+                const float x0 = src[0];
+                const float x1 = src[n_dims/2];
+
+                dst_data[0]        = x0*cos_theta - x1*sin_theta;
+                dst_data[n_dims/2] = x0*sin_theta + x1*cos_theta;
+            }
+        }
     }
 }
 
@@ -863,779 +880,581 @@ static inline uchar4 get_scale_min_k4(int j, device const uint8_t * q) {
     return r;
 }
 
-//========================================== dequantization =============================
+//====================================== dot products =========================
 
-static void dequantize_row_q2_K(device const block_q2_K * x, device float * y, int k) {
-    assert(k % QK_K == 0);
-    const int nb = k / QK_K;
+kernel void kernel_mul_mat_q2_K_f32(
+        device const  void * src0,
+        device const float * src1,
+        device       float * dst,
+        constant   int64_t & ne00,
+        constant   int64_t & ne01[[buffer(4)]],
+        constant   int64_t & ne02[[buffer(5)]],
+        constant   int64_t & ne10[[buffer(9)]],
+        constant   int64_t & ne12[[buffer(11)]],
+        constant   int64_t & ne0[[buffer(15)]],
+        constant   int64_t & ne1[[buffer(16)]],
+        constant   uint    & gqa[[buffer(17)]],
+        uint3 tgpig[[threadgroup_position_in_grid]],
+        uint tiisg[[thread_index_in_simdgroup]],
+        uint sgitg[[simdgroup_index_in_threadgroup]]) {
 
-    for (int i = 0; i < nb; i++) {
+    const int nb = ne00/QK_K;
+    const int r0 = tgpig.x;
+    const int r1 = tgpig.y;
+    const int r2 = tgpig.z;
 
-        const float d = x[i].d;
-        const float min = x[i].dmin;
+    const int first_row = (r0 * N_SIMDGROUP + sgitg) * N_DST;
+    const int ib_row = first_row * nb;
+    const uint offset0 = r2/gqa*(nb*ne0);
+    device const block_q2_K * x = (device const block_q2_K *) src0 + ib_row + offset0;
+    device const float      * y = (device const float      *) src1 + r1*ne10 + r2*ne00*ne1;
+    float yl[32];
+    float sumf[N_DST]={0.f}, all_sum;
 
-        device const uint8_t * q = x[i].qs;
+    const int step = sizeof(block_q2_K) * nb;
 
 #if QK_K == 256
-        int is = 0;
-        float dl, ml;
-        for (int n = 0; n < QK_K; n += 128) {
-            int shift = 0;
-            for (int j = 0; j < 4; ++j) {
-
-                uint8_t sc = x[i].scales[is++];
-                dl = d * (sc & 0xF); ml = min * (sc >> 4);
-                for (int l = 0; l < 16; ++l) *y++ = dl * ((int8_t)((q[l] >> shift) & 3)) - ml;
-
-                sc = x[i].scales[is++];
-                dl = d * (sc & 0xF); ml = min * (sc >> 4);
-                for (int l = 0; l < 16; ++l) *y++ = dl * ((int8_t)((q[l+16] >> shift) & 3)) - ml;
+    const int ix = tiisg/8;  // 0...3
+    const int it = tiisg%8;  // 0...7
+    const int im = it/4;     // 0 or 1
+    const int ir = it%4;     // 0...3
+    const int is = (8*ir)/16;// 0 or 1
+
+    device const float * y4 = y + ix * QK_K + 128 * im + 8 * ir;
+
+    for (int ib = ix; ib < nb; ib += 4) {
+
+        float4 sumy = {0.f, 0.f, 0.f, 0.f};
+        for (int i = 0; i < 8; ++i) {
+            yl[i+ 0] = y4[i+ 0]; sumy[0] += yl[i+ 0];
+            yl[i+ 8] = y4[i+32]; sumy[1] += yl[i+ 8];
+            yl[i+16] = y4[i+64]; sumy[2] += yl[i+16];
+            yl[i+24] = y4[i+96]; sumy[3] += yl[i+24];
+        }
 
-                shift += 2;
+        device const uint8_t  * sc = (device const uint8_t  *)x[ib].scales + 8*im + is;
+        device const uint16_t * qs = (device const uint16_t *)x[ib].qs + 16 * im + 4 * ir;
+        device const half     * dh = &x[ib].d;
+
+        for (int row = 0; row < N_DST; row++) {
+
+            float4 acc1 = {0.f, 0.f, 0.f, 0.f};
+            float4 acc2 = {0.f, 0.f, 0.f, 0.f};
+            for (int i = 0; i < 8; i += 2) {
+                acc1[0] += yl[i+ 0] * (qs[i/2] & 0x0003);
+                acc2[0] += yl[i+ 1] * (qs[i/2] & 0x0300);
+                acc1[1] += yl[i+ 8] * (qs[i/2] & 0x000c);
+                acc2[1] += yl[i+ 9] * (qs[i/2] & 0x0c00);
+                acc1[2] += yl[i+16] * (qs[i/2] & 0x0030);
+                acc2[2] += yl[i+17] * (qs[i/2] & 0x3000);
+                acc1[3] += yl[i+24] * (qs[i/2] & 0x00c0);
+                acc2[3] += yl[i+25] * (qs[i/2] & 0xc000);
             }
-            q += 32;
+            float dall = dh[0];
+            float dmin = dh[1] * 1.f/16.f;
+            sumf[row] += dall * ((acc1[0] + 1.f/256.f * acc2[0]) * (sc[0] & 0xF) * 1.f/ 1.f +
+                                 (acc1[1] + 1.f/256.f * acc2[1]) * (sc[2] & 0xF) * 1.f/ 4.f +
+                                 (acc1[2] + 1.f/256.f * acc2[2]) * (sc[4] & 0xF) * 1.f/16.f +
+                                 (acc1[3] + 1.f/256.f * acc2[3]) * (sc[6] & 0xF) * 1.f/64.f) -
+                         dmin * (sumy[0] * (sc[0] & 0xF0) + sumy[1] * (sc[2] & 0xF0) + sumy[2] * (sc[4] & 0xF0) + sumy[3] * (sc[6] & 0xF0));
+
+            qs += step/2;
+            sc += step;
+            dh += step/2;
         }
+
+        y4 += 4 * QK_K;
+    }
 #else
-        float dl1 = d * (x[i].scales[0] & 0xF), ml1 = min * (x[i].scales[0] >> 4);
-        float dl2 = d * (x[i].scales[1] & 0xF), ml2 = min * (x[i].scales[1] >> 4);
-        float dl3 = d * (x[i].scales[2] & 0xF), ml3 = min * (x[i].scales[2] >> 4);
-        float dl4 = d * (x[i].scales[3] & 0xF), ml4 = min * (x[i].scales[3] >> 4);
-        for (int l = 0; l < 16; ++l) {
-            y[l+ 0] = dl1 * ((q[l] >> 0) & 3) - ml1;
-            y[l+16] = dl2 * ((q[l] >> 2) & 3) - ml2;
-            y[l+32] = dl3 * ((q[l] >> 4) & 3) - ml3;
-            y[l+48] = dl4 * ((q[l] >> 6) & 3) - ml4;
+    const int ix = tiisg/2;  // 0...15
+    const int it = tiisg%2;  // 0...1
+
+    device const float * y4 = y + ix * QK_K + 8 * it;
+
+    for (int ib = ix; ib < nb; ib += 16) {
+
+        float4 sumy = {0.f, 0.f, 0.f, 0.f};
+        for (int i = 0; i < 8; ++i) {
+            yl[i+ 0] = y4[i+ 0]; sumy[0] += yl[i+ 0];
+            yl[i+ 8] = y4[i+16]; sumy[1] += yl[i+ 8];
+            yl[i+16] = y4[i+32]; sumy[2] += yl[i+16];
+            yl[i+24] = y4[i+48]; sumy[3] += yl[i+24];
+        }
+
+        device const uint8_t  * sc = (device const uint8_t  *)x[ib].scales;
+        device const uint16_t * qs = (device const uint16_t *)x[ib].qs + 4 * it;
+        device const half     * dh = &x[ib].d;
+
+        for (int row = 0; row < N_DST; row++) {
+
+            float4 acc1 = {0.f, 0.f, 0.f, 0.f};
+            float4 acc2 = {0.f, 0.f, 0.f, 0.f};
+            for (int i = 0; i < 8; i += 2) {
+                acc1[0] += yl[i+ 0] * (qs[i/2] & 0x0003);
+                acc2[0] += yl[i+ 1] * (qs[i/2] & 0x0300);
+                acc1[1] += yl[i+ 8] * (qs[i/2] & 0x000c);
+                acc2[1] += yl[i+ 9] * (qs[i/2] & 0x0c00);
+                acc1[2] += yl[i+16] * (qs[i/2] & 0x0030);
+                acc2[2] += yl[i+17] * (qs[i/2] & 0x3000);
+                acc1[3] += yl[i+24] * (qs[i/2] & 0x00c0);
+                acc2[3] += yl[i+25] * (qs[i/2] & 0xc000);
+            }
+
+            float dall = dh[0];
+            float dmin = dh[1];
+            sumf[row] += dall * ((acc1[0] + 1.f/256.f * acc2[0]) * (sc[0] & 0xF) * 1.f/ 1.f +
+                                 (acc1[1] + 1.f/256.f * acc2[1]) * (sc[1] & 0xF) * 1.f/ 4.f +
+                                 (acc1[2] + 1.f/256.f * acc2[2]) * (sc[2] & 0xF) * 1.f/16.f +
+                                 (acc1[3] + 1.f/256.f * acc2[3]) * (sc[3] & 0xF) * 1.f/64.f) -
+                         dmin * (sumy[0] * (sc[0] >> 4) + sumy[1] * (sc[1] >> 4) + sumy[2] * (sc[2] >> 4) + sumy[3] * (sc[3] >> 4));
+
+            qs += step/2;
+            sc += step;
+            dh += step/2;
         }
-        y += QK_K;
+
+        y4 += 16 * QK_K;
+    }
 #endif
 
+    for (int row = 0; row < N_DST; ++row) {
+        all_sum = simd_sum(sumf[row]);
+        if (tiisg == 0) {
+            dst[r1*ne0 + r2*ne0*ne1 + first_row + row] = all_sum;
+        }
     }
 }
 
-static void dequantize_row_q3_K(device const block_q3_K * x, device float * y, int k) {
-    assert(k % QK_K == 0);
-    const int nb = k / QK_K;
-
 #if QK_K == 256
+kernel void kernel_mul_mat_q3_K_f32(
+        device const  void * src0,
+        device const float * src1,
+        device       float * dst,
+        constant   int64_t & ne00,
+        constant   int64_t & ne01[[buffer(4)]],
+        constant   int64_t & ne02[[buffer(5)]],
+        constant   int64_t & ne10[[buffer(9)]],
+        constant   int64_t & ne12[[buffer(11)]],
+        constant   int64_t & ne0[[buffer(15)]],
+        constant   int64_t & ne1[[buffer(16)]],
+        constant   uint    & gqa[[buffer(17)]],
+        uint3 tgpig[[threadgroup_position_in_grid]],
+        uint tiisg[[thread_index_in_simdgroup]],
+        uint sgitg[[simdgroup_index_in_threadgroup]]) {
+
+    const int nb = ne00/QK_K;
+
+    const int64_t r0 = tgpig.x;
+    const int64_t r1 = tgpig.y;
+    const int64_t r2 = tgpig.z;
+
+    const int first_row = (r0 * N_SIMDGROUP + sgitg) * 2;
+    const uint offset0 = r2/gqa*(nb*ne0);
+    device const block_q3_K * x = (device const block_q3_K *) src0 + first_row*nb + offset0;
+    device const float     * yy = (device const float      *) src1 + r1*ne10 + r2*ne00*ne1;
+
+    float yl[16];
 
     const uint16_t kmask1 = 0x0303;
     const uint16_t kmask2 = 0x0f0f;
 
-    uint16_t aux[8];
-    thread const int8_t * scales = (thread const int8_t*)aux;
-
-    for (int i = 0; i < nb; i++) {
+    const int tid = tiisg/2;
+    const int ix  = tiisg%2;
+    const int ip  = tid/8;          // 0 or 1
+    const int il  = tid/2 - 4*ip;   // 0...3
+    const int ir  = tid%2;
+    const int n   = 8;
+    const int l0  = n*ir;
 
-        const float d_all = (float)(x[i].d);
+    const uint16_t m1 = 1 << (4*ip + il);
+    const uint16_t m2 = m1 << 8;
 
-        device const uint8_t * q = x[i].qs;
-        device const uint8_t * h = x[i].hmask;
-        uint8_t m = 1;
-
-        device const uint16_t * a = (device const uint16_t *)x[i].scales;
-        aux[0] = (a[0] & kmask2) | (((a[4] >> 0) & kmask1) << 4);
-        aux[1] = (a[1] & kmask2) | (((a[5] >> 0) & kmask1) << 4);
-        aux[2] = (a[2] & kmask2) | (((a[4] >> 2) & kmask1) << 4);
-        aux[3] = (a[3] & kmask2) | (((a[5] >> 2) & kmask1) << 4);
-        aux[4] = ((a[0] >> 4) & kmask2) | (((a[4] >> 4) & kmask1) << 4);
-        aux[5] = ((a[1] >> 4) & kmask2) | (((a[5] >> 4) & kmask1) << 4);
-        aux[6] = ((a[2] >> 4) & kmask2) | (((a[4] >> 6) & kmask1) << 4);
-        aux[7] = ((a[3] >> 4) & kmask2) | (((a[5] >> 6) & kmask1) << 4);
-
-        int is = 0;
-        float dl;
-        for (int n = 0; n < QK_K; n += 128) {
-            int shift = 0;
-            for (int j = 0; j < 4; ++j) {
-
-                dl = d_all * (scales[is++] - 32);
-                for (int l = 0; l < 16; ++l) {
-                    *y++ = dl * ((int8_t)((q[l+ 0] >> shift) & 3) - ((h[l+ 0] & m) ? 0 : 4));
-                }
+    const int shift = 2*il;
+    const uint16_t qm1 = 0x0003 << shift;
+    const uint16_t qm2 = 0x0300 << shift;
+    const int32_t v1 = 4 << shift;
+    const int32_t v2 = 1024 << shift;
 
-                dl = d_all * (scales[is++] - 32);
-                for (int l = 0; l < 16; ++l) {
-                    *y++ = dl * ((int8_t)((q[l+16] >> shift) & 3) - ((h[l+16] & m) ? 0 : 4));
-                }
+    const uint16_t s_shift1 = 4*ip;
+    const uint16_t s_shift2 = s_shift1 + 2*(il/2);
+    const int ik = 4 + (il%2);
 
-                shift += 2;
-                m <<= 1;
-            }
-            q += 32;
-        }
-    }
-#else
-    for (int i = 0; i < nb; i++) {
+    const int q_offset = 32*ip + l0;
+    const int y_offset = 128*ip + 32*il + l0;
 
-        const float d_all = (float)(x[i].d);
+    const int step = sizeof(block_q3_K) * nb / 2;
 
-        device const uint8_t * q = x[i].qs;
-        device const uint8_t * hm = x[i].hmask;
+    device const float * y1 = yy + ix*QK_K + y_offset;
 
-        const float d1 = d_all * ((x[i].scales[0] & 0xF) - 8);
-        const float d2 = d_all * ((x[i].scales[0] >>  4) - 8);
-        const float d3 = d_all * ((x[i].scales[1] & 0xF) - 8);
-        const float d4 = d_all * ((x[i].scales[1] >>  4) - 8);
+    float sumf1[2] = {0.f}, sumf2[2] = {0.f};
+    for (int i = ix; i < nb; i += 2) {
 
         for (int l = 0; l < 8; ++l) {
-            uint8_t h = hm[l];
-            y[l+ 0] = d1 * ((int8_t)((q[l+0] >> 0) & 3) - ((h & 0x01) ? 0 : 4));
-            y[l+ 8] = d1 * ((int8_t)((q[l+8] >> 0) & 3) - ((h & 0x02) ? 0 : 4));
-            y[l+16] = d2 * ((int8_t)((q[l+0] >> 2) & 3) - ((h & 0x04) ? 0 : 4));
-            y[l+24] = d2 * ((int8_t)((q[l+8] >> 2) & 3) - ((h & 0x08) ? 0 : 4));
-            y[l+32] = d3 * ((int8_t)((q[l+0] >> 4) & 3) - ((h & 0x10) ? 0 : 4));
-            y[l+40] = d3 * ((int8_t)((q[l+8] >> 4) & 3) - ((h & 0x20) ? 0 : 4));
-            y[l+48] = d4 * ((int8_t)((q[l+0] >> 6) & 3) - ((h & 0x40) ? 0 : 4));
-            y[l+56] = d4 * ((int8_t)((q[l+8] >> 6) & 3) - ((h & 0x80) ? 0 : 4));
+            yl[l+0] = y1[l+ 0];
+            yl[l+8] = y1[l+16];
         }
-        y += QK_K;
-    }
-#endif
 
-}
+        device const uint16_t * q = (device const uint16_t *)(x[i].qs + q_offset);
+        device const uint16_t * h = (device const uint16_t *)(x[i].hmask + l0);
+        device const uint16_t * a = (device const uint16_t *)(x[i].scales);
+        device const half * dh = &x[i].d;
 
-static void dequantize_row_q4_K(device const block_q4_K * x, device float * y, int k) {
-    assert(k % QK_K == 0);
-    const int nb = k / QK_K;
+        for (int row = 0; row < 2; ++row) {
 
-    for (int i = 0; i < nb; i++) {
+            const float d_all = (float)dh[0];
+            const char2 scales = as_type<char2>((uint16_t)(((a[il] >> s_shift1) & kmask2) | (((a[ik] >> s_shift2) & kmask1) << 4)));
 
-        device const uint8_t * q = x[i].qs;
+            float s1 = 0, s2 = 0;
+            for (int l = 0; l < n; l += 2) {
+                const uint16_t qs = q[l/2];
+                s1 += yl[l+0] * ((int32_t)(qs & qm1) - ((h[l/2] & m1) ? 0 : v1));
+                s2 += yl[l+1] * ((int32_t)(qs & qm2) - ((h[l/2] & m2) ? 0 : v2));
+            }
+            float d = d_all * (s1 + 1.f/256.f * s2);
+            sumf1[row] += d * scales[0];
+            sumf2[row] += d;
+
+            s1 = s2 = 0;
+            for (int l = 0; l < n; l += 2) {
+                const uint16_t qs = q[l/2+8];
+                s1 += yl[l+8] * ((int32_t)(qs & qm1) - ((h[l/2+8] & m1) ? 0 : v1));
+                s2 += yl[l+9] * ((int32_t)(qs & qm2) - ((h[l/2+8] & m2) ? 0 : v2));
+            }
+            d = d_all * (s1 + 1.f/256.f * s2);
+            sumf1[row] += d * scales[1];
+            sumf2[row] += d;
+
+            q  += step;
+            h  += step;
+            a  += step;
+            dh += step;
 
-#if QK_K == 256
-        const float d = x[i].d;
-        const float min = x[i].dmin;
-
-        device const uint8_t * scales = x[i].scales;
-
-        int is = 0;
-        for (int j = 0; j < QK_K; j += 64) {
-            const uchar4 sc = get_scale_min_k4(is, scales);
-            const float d1 = d * sc[0]; const float m1 = min * sc[1];
-            const float d2 = d * sc[2]; const float m2 = min * sc[3];
-            for (int l = 0; l < 32; ++l) *y++ = d1 * (q[l] & 0xF) - m1;
-            for (int l = 0; l < 32; ++l) *y++ = d2 * (q[l]  >> 4) - m2;
-            q += 32; is += 2;
-        }
-#else
-        device const uint8_t * s = x[i].scales;
-        device const half2 * dh = (device const half2 *)x[i].d;
-        const float2 d = (float2)dh[0];
-        const float d1 = d[0] * (s[0] & 0xF);
-        const float d2 = d[0] * (s[1] & 0xF);
-        const float m1 = d[1] * (s[0] >>  4);
-        const float m2 = d[1] * (s[1] >>  4);
-        for (int l = 0; l < 32; ++l) {
-            y[l+ 0] = d1 * (q[l] & 0xF) - m1;
-            y[l+32] = d2 * (q[l] >>  4) - m2;
         }
-        y += QK_K;
-#endif
 
-    }
-}
+        y1 += 2 * QK_K;
 
-static void dequantize_row_q5_K(device const block_q5_K * x, device float * y, int k) {
-    assert(k % QK_K == 0);
-    const int nb = k / QK_K;
+    }
 
-#if QK_K == 256
-   for (int i = 0; i < nb; i++) {
-
-        const float d = (float)(x[i].d);
-        const float min = (float)(x[i].dmin);
-
-        device const uint8_t * ql = x[i].qs;
-        device const uint8_t * qh = x[i].qh;
-
-        int is = 0;
-        uint8_t u1 = 1, u2 = 2;
-        for (int j = 0; j < QK_K; j += 64) {
-            const uchar4 sc = get_scale_min_k4(is, x[i].scales);
-            const float d1 = d * sc[0]; const float m1 = min * sc[1];
-            const float d2 = d * sc[2]; const float m2 = min * sc[3];
-            for (int l = 0; l < 32; ++l) *y++ = d1 * ((ql[l] & 0xF) + (qh[l] & u1 ? 16 : 0)) - m1;
-            for (int l = 0; l < 32; ++l) *y++ = d2 * ((ql[l]  >> 4) + (qh[l] & u2 ? 16 : 0)) - m2;
-            ql += 32; is += 2;
-            u1 <<= 2; u2 <<= 2;
+    for (int row = 0; row < 2; ++row) {
+        const float sumf = (sumf1[row] - 32.f*sumf2[row]) / (1 << shift);
+        const float tot = simd_sum(sumf);
+        if (tiisg == 0) {
+            dst[r1*ne0 + r2*ne0*ne1 + first_row + row] = tot;
         }
     }
+}
 #else
-    for (int i = 0; i < nb; i++) {
+kernel void kernel_mul_mat_q3_K_f32(
+        device const  void * src0,
+        device const float * src1,
+        device       float * dst,
+        constant   int64_t & ne00,
+        constant   int64_t & ne01[[buffer(4)]],
+        constant   int64_t & ne02[[buffer(5)]],
+        constant   int64_t & ne10[[buffer(9)]],
+        constant   int64_t & ne12[[buffer(11)]],
+        constant   int64_t & ne0[[buffer(15)]],
+        constant   int64_t & ne1[[buffer(16)]],
+        constant   uint    & gqa[[buffer(17)]],
+        uint3 tgpig[[threadgroup_position_in_grid]],
+        uint tiisg[[thread_index_in_simdgroup]],
+        uint sgitg[[simdgroup_index_in_threadgroup]]) {
 
-        const float d = (float)x[i].d;
+    const int nb = ne00/QK_K;
 
-        device const uint8_t * ql = x[i].qs;
-        device const uint8_t * qh = x[i].qh;
-        device const int8_t  * sc = x[i].scales;
+    const int64_t r0 = tgpig.x;
+    const int64_t r1 = tgpig.y;
+    const int64_t r2 = tgpig.z;
+
+    const int row = 2 * r0 + sgitg;
+    const uint offset0 = r2/gqa*(nb*ne0);
+    device const block_q3_K * x = (device const block_q3_K *) src0 + row*nb + offset0;
+    device const float     * yy = (device const float      *) src1 + r1*ne10 + r2*ne00*ne1;
+    const int ix = tiisg/4;
+    const int il = 4 * (tiisg%4);// 0, 4, 8, 12
+    const int im = il/8;         // 0, 0, 1, 1
+    const int in = il%8;         // 0, 4, 0, 4
 
-        for (int l = 0; l < 8; ++l) {
-            y[l+ 0] = d * sc[0] * ((ql[l+ 0] & 0xF) - (qh[l] & 0x01 ? 0 : 16));
-            y[l+ 8] = d * sc[0] * ((ql[l+ 8] & 0xF) - (qh[l] & 0x02 ? 0 : 16));
-            y[l+16] = d * sc[1] * ((ql[l+16] & 0xF) - (qh[l] & 0x04 ? 0 : 16));
-            y[l+24] = d * sc[1] * ((ql[l+24] & 0xF) - (qh[l] & 0x08 ? 0 : 16));
-            y[l+32] = d * sc[2] * ((ql[l+ 0] >>  4) - (qh[l] & 0x10 ? 0 : 16));
-            y[l+40] = d * sc[2] * ((ql[l+ 8] >>  4) - (qh[l] & 0x20 ? 0 : 16));
-            y[l+48] = d * sc[3] * ((ql[l+16] >>  4) - (qh[l] & 0x40 ? 0 : 16));
-            y[l+56] = d * sc[3] * ((ql[l+24] >>  4) - (qh[l] & 0x80 ? 0 : 16));
-        }
-        y += QK_K;
-    }
-#endif
+    float2 sum = {0.f, 0.f};
 
-}
+    for (int i = ix; i < nb; i += 8) {
 
-static void dequantize_row_q6_K(device const block_q6_K * x, device float * y, int k) {
-    assert(k % QK_K == 0);
-    const int nb = k / QK_K;
+        const float d_all = (float)(x[i].d);
 
-    for (int i = 0; i < nb; i++) {
-
-        device const uint8_t * ql = x[i].ql;
-        device const uint8_t * qh = x[i].qh;
-        device const int8_t  * sc = x[i].scales;
-
-        const float d = x[i].d;
-
-#if QK_K == 256
-        for (int n = 0; n < QK_K; n += 128) {
-            for (int l = 0; l < 32; ++l) {
-                int is = l/16;
-                const int8_t q1 = (int8_t)((ql[l +  0] & 0xF) | (((qh[l] >> 0) & 3) << 4)) - 32;
-                const int8_t q2 = (int8_t)((ql[l + 32] & 0xF) | (((qh[l] >> 2) & 3) << 4)) - 32;
-                const int8_t q3 = (int8_t)((ql[l +  0]  >> 4) | (((qh[l] >> 4) & 3) << 4)) - 32;
-                const int8_t q4 = (int8_t)((ql[l + 32]  >> 4) | (((qh[l] >> 6) & 3) << 4)) - 32;
-                y[l +  0] = d * sc[is + 0] * q1;
-                y[l + 32] = d * sc[is + 2] * q2;
-                y[l + 64] = d * sc[is + 4] * q3;
-                y[l + 96] = d * sc[is + 6] * q4;
-            }
-            y  += 128;
-            ql += 64;
-            qh += 32;
-            sc += 8;
+        device const uint16_t * q = (device const uint16_t *)(x[i].qs + il);
+        device const uint16_t * h = (device const uint16_t *)(x[i].hmask + in);
+        device const uint16_t * s = (device const uint16_t *)(x[i].scales);
+        device const float    * y = yy + i * QK_K + il;
+
+        const float d1 = d_all * ((int32_t)(s[0] & 0x000F) - 8);
+        const float d2 = d_all * ((int32_t)(s[0] & 0x00F0) - 128) * 1.f/64.f;
+        const float d3 = d_all * ((int32_t)(s[0] & 0x0F00) - 2048) * 1.f/4096.f;
+        const float d4 = d_all * ((int32_t)(s[0] & 0xF000) - 32768) * 1.f/262144.f;
+
+        for (int l = 0; l < 4; l += 2) {
+            const uint16_t hm = h[l/2] >> im;
+            sum[0] += y[l+ 0] * d1 * ((int32_t)(q[l/2] & 0x0003) - ((hm & 0x0001) ? 0 :  4))
+                    + y[l+16] * d2 * ((int32_t)(q[l/2] & 0x000c) - ((hm & 0x0004) ? 0 : 16))
+                    + y[l+32] * d3 * ((int32_t)(q[l/2] & 0x0030) - ((hm & 0x0010) ? 0 : 64))
+                    + y[l+48] * d4 * ((int32_t)(q[l/2] & 0x00c0) - ((hm & 0x0040) ? 0 : 256));
+            sum[1] += y[l+ 1] * d1 * ((int32_t)(q[l/2] & 0x0300) - ((hm & 0x0100) ? 0 : 1024))
+                    + y[l+17] * d2 * ((int32_t)(q[l/2] & 0x0c00) - ((hm & 0x0400) ? 0 : 4096))
+                    + y[l+33] * d3 * ((int32_t)(q[l/2] & 0x3000) - ((hm & 0x1000) ? 0 : 16384))
+                    + y[l+49] * d4 * ((int32_t)(q[l/2] & 0xc000) - ((hm & 0x4000) ? 0 : 65536));
         }
-#else
-        for (int l = 0; l < 16; ++l) {
-            const int8_t q1 = (int8_t)((ql[l+ 0] & 0xF) | (((qh[l] >> 0) & 3) << 4)) - 32;
-            const int8_t q2 = (int8_t)((ql[l+16] & 0xF) | (((qh[l] >> 2) & 3) << 4)) - 32;
-            const int8_t q3 = (int8_t)((ql[l+ 0]  >> 4) | (((qh[l] >> 4) & 3) << 4)) - 32;
-            const int8_t q4 = (int8_t)((ql[l+16]  >> 4) | (((qh[l] >> 6) & 3) << 4)) - 32;
-            y[l+ 0] = d * sc[0] * q1;
-            y[l+16] = d * sc[1] * q2;
-            y[l+32] = d * sc[2] * q3;
-            y[l+48] = d * sc[3] * q4;
-        }
-        y  += 64;
-#endif
-    }
-}
-
-kernel void kernel_get_rows_q2_K(
-        device const  void * src0,
-        device const   int * src1,
-        device       float * dst,
-        constant   int64_t & ne00,
-        constant  uint64_t & nb01,
-        constant  uint64_t & nb1,
-        uint tpig[[thread_position_in_grid]]) {
-    const int i = tpig;
-    const int r = ((device int32_t *) src1)[i];
-
-    dequantize_row_q2_K(
-            (device const block_q2_K *) ((device char *) src0 + r*nb01),
-                       (device float *) ((device char *)  dst + i*nb1), ne00);
-}
-
-kernel void kernel_get_rows_q3_K(
-        device const  void * src0,
-        device const   int * src1,
-        device       float * dst,
-        constant   int64_t & ne00,
-        constant  uint64_t & nb01,
-        constant  uint64_t & nb1,
-        uint tpig[[thread_position_in_grid]]) {
-    const int i = tpig;
-    const int r = ((device int32_t *) src1)[i];
-
-    dequantize_row_q3_K(
-            (device const block_q3_K *) ((device char *) src0 + r*nb01),
-                       (device float *) ((device char *)  dst + i*nb1), ne00);
-}
-
-kernel void kernel_get_rows_q4_K(
-        device const  void * src0,
-        device const   int * src1,
-        device       float * dst,
-        constant   int64_t & ne00,
-        constant  uint64_t & nb01,
-        constant  uint64_t & nb1,
-        uint tpig[[thread_position_in_grid]]) {
-    const int i = tpig;
-    const int r = ((device int32_t *) src1)[i];
-
-    dequantize_row_q4_K(
-            (device const block_q4_K *) ((device char *) src0 + r*nb01),
-                       (device float *) ((device char *)  dst + i*nb1), ne00);
-}
-
-kernel void kernel_get_rows_q5_K(
-        device const  void * src0,
-        device const   int * src1,
-        device       float * dst,
-        constant   int64_t & ne00,
-        constant  uint64_t & nb01,
-        constant  uint64_t & nb1,
-        uint tpig[[thread_position_in_grid]]) {
-    const int i = tpig;
-    const int r = ((device int32_t *) src1)[i];
-
-    dequantize_row_q5_K(
-            (device const block_q5_K *) ((device char *) src0 + r*nb01),
-                       (device float *) ((device char *)  dst + i*nb1), ne00);
-}
-
-kernel void kernel_get_rows_q6_K(
-        device const  void * src0,
-        device const   int * src1,
-        device       float * dst,
-        constant   int64_t & ne00,
-        constant  uint64_t & nb01,
-        constant  uint64_t & nb1,
-        uint tpig[[thread_position_in_grid]]) {
-    const int i = tpig;
-    const int r = ((device int32_t *) src1)[i];
-
-    dequantize_row_q6_K(
-            (device const block_q6_K *) ((device char *) src0 + r*nb01),
-                       (device float *) ((device char *)  dst + i*nb1), ne00);
-}
-
-//====================================== dot products =========================
-
-kernel void kernel_mul_mat_q2_K_f32(
-        device const  void * src0,
-        device const float * src1,
-        device       float * dst,
-        constant   int64_t & ne00,
-        constant   int64_t & ne10,
-        constant   int64_t & ne0,
-        threadgroup float  * sum [[threadgroup(0)]],
-        uint2 tgpig[[threadgroup_position_in_grid]],
-        uint2 tpitg[[thread_position_in_threadgroup]],
-        uint2  tptg[[threads_per_threadgroup]]) {
-
-    const int nb = ne00/QK_K;
-
-    const int64_t r0 = tgpig.x;
-    const int64_t r1 = tgpig.y;
-
-    device const block_q2_K * x = (device const block_q2_K *) src0 + r0*nb;
-    device const float     * yy = (device const float      *) src1 + r1*ne10;
-
-    const int nth = tptg.x*tptg.y;
-    const int ith = tptg.y*tpitg.x + tpitg.y;
-
-    float sumf = 0;
-
-#if QK_K == 256
-    const int tid = tpitg.y;    // 0...16
-    const int il  = tid/4;      // 0...3
-    const int ir  = tid%4;      // 0...3
-    const int ip  = il/2;       // 0 or 1
-    const int shift1 = 4*(il%2);// 0 or 4
-    const int shift2 = shift1+2;// 2 or 6
-    const int n   = 8;
-    const int is  = 4*il + (n*ir)/16;
-
-    const int y_offset = 64*il + n*ir;
-    const int q_offset = 32*ip + n*ir;
-
-    for (int i = tpitg.x; i < nb; i += tptg.x) {
-
-        device const uint8_t * q = x[i].qs + q_offset;
-        device const uint8_t * scales = x[i].scales + is;
-
-        uint8_t d1 = scales[0] & 0xF;
-        uint8_t d2 = scales[2] & 0xF;
-        uint8_t m1 = scales[0] >>  4;
-        uint8_t m2 = scales[2] >>  4;
-
-        device const float   * y = yy + i*QK_K + y_offset;
-
-        float2 s = {0.f, 0.f};
-        float smin = 0;
-        for (int l = 0; l < n; ++l) {
-            s[0] += y[l+ 0] * ((q[l] >> shift1) & 3);
-            s[1] += y[l+32] * ((q[l] >> shift2) & 3);
-            smin += y[l+ 0] * m1 + y[l+32] * m2;
-        }
-
-        const float dall = (float)x[i].d;
-        const float dmin = (float)x[i].dmin;
-
-        sumf += dall * (s[0] * d1 + s[1] * d2) - dmin * smin;
 
     }
-#else
-    const int il = 4 * tpitg.x;
-
-    uint32_t aux[2];
-    thread const uint8_t * d = (thread const uint8_t *)aux;
-    thread const uint8_t * m = (thread const uint8_t *)aux + 4;
+    const float sumf = sum[0] + sum[1] * 1.f/256.f;
 
-    for (int i = tpitg.y; i < nb; i += tptg.y) {
-
-        device const uint8_t * q = x[i].qs + il;
-        device const float   * y = yy + i*QK_K + il;
-
-        const float dall = (float)x[i].d;
-        const float dmin = (float)x[i].dmin;
-
-        device const uint32_t * a = (device const uint32_t *)x[i].scales;
-        aux[0] = a[0] & 0x0f0f0f0f;
-        aux[1] = (a[0] >> 4) & 0x0f0f0f0f;
-
-        for (int l = 0; l < 4; ++l) {
-            sumf += y[l+ 0] * (dall * d[0] * ((q[l] >> 0) & 3) - dmin * m[0])
-                  + y[l+16] * (dall * d[1] * ((q[l] >> 2) & 3) - dmin * m[1])
-                  + y[l+32] * (dall * d[2] * ((q[l] >> 4) & 3) - dmin * m[2])
-                  + y[l+48] * (dall * d[3] * ((q[l] >> 6) & 3) - dmin * m[3]);
-        }
+    const float tot = simd_sum(sumf);
+    if (tiisg == 0) {
+        dst[r1*ne0 + r2*ne0*ne1 + row] = tot;
     }
-#endif
-
-    sum[ith] = sumf;
 
-    //
-    // Accumulate the sum from all threads in the threadgroup
-    //
-    threadgroup_barrier(mem_flags::mem_threadgroup);
-    if (ith%4 == 0) {
-        for (int i = 1; i < 4; ++i) sum[ith] += sum[ith + i];
-    }
-    threadgroup_barrier(mem_flags::mem_threadgroup);
-    if (ith%16 == 0) {
-        for (int i = 4; i < 16; i += 4) sum[ith] += sum[ith + i];
-    }
-    threadgroup_barrier(mem_flags::mem_threadgroup);
-    if (ith == 0) {
-        for (int i = 16; i < nth; i += 16) sum[0] += sum[i];
-        dst[r1*ne0 + r0] = sum[0];
-    }
 }
+#endif
 
-kernel void kernel_mul_mat_q3_K_f32(
+#if QK_K == 256
+kernel void kernel_mul_mat_q4_K_f32(
         device const  void * src0,
         device const float * src1,
         device       float * dst,
         constant   int64_t & ne00,
-        constant   int64_t & ne10,
-        constant   int64_t & ne0,
-        constant   int64_t & ne1,
-        threadgroup float  * sum [[threadgroup(0)]],
-        uint2 tgpig[[threadgroup_position_in_grid]],
-        uint2 tpitg[[thread_position_in_threadgroup]],
-        uint2  tptg[[threads_per_threadgroup]]) {
-
-    const int nb = ne00/QK_K;
-
-    const int64_t r0 = tgpig.x;
-    const int64_t r1 = tgpig.y;
-
-    device const block_q3_K * x = (device const block_q3_K *) src0 + r0*nb;
-    device const float     * yy = (device const float      *) src1 + r1*ne10;
-
-    const int nth = tptg.x*tptg.y;
-    const int ith = tptg.y*tpitg.x + tpitg.y;
-
-#if QK_K == 256
-
-    const uint8_t m3 = 3;
-    const int8_t  m4 = 4;
+        constant   int64_t & ne01[[buffer(4)]],
+        constant   int64_t & ne02[[buffer(5)]],
+        constant   int64_t & ne10[[buffer(9)]],
+        constant   int64_t & ne12[[buffer(11)]],
+        constant   int64_t & ne0[[buffer(15)]],
+        constant   int64_t & ne1[[buffer(16)]],
+        constant   uint    & gqa[[buffer(17)]],
+        uint3 tgpig[[threadgroup_position_in_grid]],
+        uint tiisg[[thread_index_in_simdgroup]],
+        uint sgitg[[simdgroup_index_in_threadgroup]]) {
 
-    const uint16_t kmask1 = 0x0303;
+    const uint16_t kmask1 = 0x3f3f;
     const uint16_t kmask2 = 0x0f0f;
+    const uint16_t kmask3 = 0xc0c0;
 
-    const int tid = tpitg.y;        // expecting 16
-    const int ip  = tid/8;          // 0 or 1
-    const int il  = tid/2 - 4*ip;   // 0...3
-    const int ir  = tid%2;
-    const int n   = 8;
-    const int l0  = n*ir;
-
-    const uint8_t m = 1 << (4*ip + il);
-
-    const int shift = 2*il;
-
-    const uint16_t s_shift1 = 4*ip;
-    const uint16_t s_shift2 = s_shift1 + 2*(il/2);
-    const int ik = 4 + (il%2);
-
-    const int q_offset = 32*ip + l0;
-    const int y_offset = 128*ip + 32*il + l0;
-
-    //float sumf = 0;
-    float sumf1 = 0, sumf2 = 0;
-    for (int i = tpitg.x; i < nb; i += tptg.x) {
-
-        const float d_all = (float)(x[i].d);
-
-        device const uint8_t * q = x[i].qs + q_offset;
-        device const uint8_t * h = x[i].hmask + l0;
-        device const float   * y = yy + i * QK_K + y_offset;
-
-        device const uint16_t * a = (device const uint16_t *)x[i].scales;
-        const char2 scales = as_type<char2>((uint16_t)(((a[il] >> s_shift1) & kmask2) | (((a[ik] >> s_shift2) & kmask1) << 4)));
-
-        float s = 0;
-        for (int l = 0; l < n; ++l) {
-            s += y[l+ 0] * ((int8_t)((q[l+ 0] >> shift) & m3) - ((h[l+ 0] & m) ? 0 : m4));
-        }
-        float d = d_all * s;
-        sumf1 += d * scales[0];
-        sumf2 += d;
-        //sumf += d_all * s * (scales[0] - 32);
+    const int ix = tiisg/8;  // 0...3
+    const int it = tiisg%8;  // 0...7
+    const int im = it/4;     // 0 or 1
+    const int ir = it%4;     // 0...3
 
-        s = 0;
-        for (int l = 0; l < n; ++l) {
-            s += y[l+16] * ((int8_t)((q[l+16] >> shift) & m3) - ((h[l+16] & m) ? 0 : m4));
+    const int nb = ne00/QK_K;
+    const int r0 = tgpig.x;
+    const int r1 = tgpig.y;
+    const int r2 = tgpig.z;
+    const int first_row = (r0 * N_SIMDGROUP + sgitg) * N_DST;
+    const int ib_row = first_row * nb;
+    const uint offset0 = r2/gqa*(nb*ne0);
+    device const block_q4_K * x = (device const block_q4_K *) src0 + ib_row + offset0;
+    device const float      * y = (device const float      *) src1 + r1*ne10 + r2*ne00*ne1;
+    float yl[16];
+    float yh[16];
+    float sumf[N_DST]={0.f}, all_sum;
+
+    const int step = sizeof(block_q4_K) * nb / 2;
+
+    device const float * y4 = y + ix * QK_K + 64 * im + 8 * ir;
+
+    uint16_t sc16[4];
+    thread const uint8_t * sc8 = (thread const uint8_t *)sc16;
+
+    for (int ib = ix; ib < nb; ib += 4) {
+
+        float4 sumy = {0.f, 0.f, 0.f, 0.f};
+        for (int i = 0; i < 8; ++i) {
+            yl[i+0] = y4[i+  0]; sumy[0] += yl[i+0];
+            yl[i+8] = y4[i+ 32]; sumy[1] += yl[i+8];
+            yh[i+0] = y4[i+128]; sumy[2] += yh[i+0];
+            yh[i+8] = y4[i+160]; sumy[3] += yh[i+8];
         }
-        d = d_all * s;
-        sumf1 += d * scales[1];
-        sumf2 += d;
-        //sumf += d_all * s * (scales[1] - 32);
 
-    }
-
-    //sum[ith] = sumf;
-    sum[ith] = sumf1 - 32.f*sumf2;
-#else
-    const int il = 4 * tpitg.x;  // 0, 4, 8, 12
-    const int im = il/8;         // 0, 0, 1, 1
-    const int in = il%8;         // 0, 4, 0, 4
-
-    float sumf = 0;
-
-    for (int i = tpitg.y; i < nb; i += tptg.y) {
-
-        const float d_all = (float)(x[i].d);
-
-        device const uint8_t * q = x[i].qs + il;
-        device const uint8_t * h = x[i].hmask + in;
-        device const float   * y = yy + i * QK_K + il;
-
-        const float d1 = d_all * ((x[i].scales[0] & 0xF) - 8);
-        const float d2 = d_all * ((x[i].scales[0] >>  4) - 8);
-        const float d3 = d_all * ((x[i].scales[1] & 0xF) - 8);
-        const float d4 = d_all * ((x[i].scales[1] >>  4) - 8);
+        device const uint16_t * sc = (device const uint16_t *)x[ib].scales + im;
+        device const uint16_t * q1 = (device const uint16_t *)x[ib].qs + 16 * im + 4 * ir;
+        device const half     * dh = &x[ib].d;
+
+        for (int row = 0; row < N_DST; row++) {
+
+            sc16[0] = sc[0] & kmask1;
+            sc16[1] = sc[2] & kmask1;
+            sc16[2] = ((sc[4] >> 0) & kmask2) | ((sc[0] & kmask3) >> 2);
+            sc16[3] = ((sc[4] >> 4) & kmask2) | ((sc[2] & kmask3) >> 2);
+
+            device const uint16_t * q2 = q1 + 32;
+
+            float4 acc1 = {0.f, 0.f, 0.f, 0.f};
+            float4 acc2 = {0.f, 0.f, 0.f, 0.f};
+            for (int i = 0; i < 8; i += 2) {
+                acc1[0] += yl[i+0] * (q1[i/2] & 0x000F);
+                acc1[1] += yl[i+1] * (q1[i/2] & 0x0F00);
+                acc1[2] += yl[i+8] * (q1[i/2] & 0x00F0);
+                acc1[3] += yl[i+9] * (q1[i/2] & 0xF000);
+                acc2[0] += yh[i+0] * (q2[i/2] & 0x000F);
+                acc2[1] += yh[i+1] * (q2[i/2] & 0x0F00);
+                acc2[2] += yh[i+8] * (q2[i/2] & 0x00F0);
+                acc2[3] += yh[i+9] * (q2[i/2] & 0xF000);
+            }
 
-        for (int l = 0; l < 4; ++l) {
-            const uint8_t hm = h[l] >> im;
-            sumf += y[l+ 0] * d1 * ((int8_t)((q[l+0] >> 0) & 3) - ((hm & 0x01) ? 0 : 4))
-                  + y[l+16] * d2 * ((int8_t)((q[l+0] >> 2) & 3) - ((hm & 0x04) ? 0 : 4))
-                  + y[l+32] * d3 * ((int8_t)((q[l+0] >> 4) & 3) - ((hm & 0x10) ? 0 : 4))
-                  + y[l+48] * d4 * ((int8_t)((q[l+0] >> 6) & 3) - ((hm & 0x40) ? 0 : 4));
+            float dall = dh[0];
+            float dmin = dh[1];
+            sumf[row] += dall * ((acc1[0] + 1.f/256.f * acc1[1]) * sc8[0] +
+                                 (acc1[2] + 1.f/256.f * acc1[3]) * sc8[1] * 1.f/16.f +
+                                 (acc2[0] + 1.f/256.f * acc2[1]) * sc8[4] +
+                                 (acc2[2] + 1.f/256.f * acc2[3]) * sc8[5] * 1.f/16.f) -
+                         dmin * (sumy[0] * sc8[2] + sumy[1] * sc8[3] + sumy[2] * sc8[6] + sumy[3] * sc8[7]);
+
+            q1 += step;
+            sc += step;
+            dh += step;
         }
 
+        y4 += 4 * QK_K;
     }
 
-    sum[ith] = sumf;
-
-#endif
-
-    //
-    // Accumulate the sum from all threads in the threadgroup
-    //
-    threadgroup_barrier(mem_flags::mem_threadgroup);
-    if (ith%4 == 0) {
-        for (int i = 1; i < 4; ++i) sum[ith] += sum[ith + i];
-    }
-    threadgroup_barrier(mem_flags::mem_threadgroup);
-    if (ith%16 == 0) {
-        for (int i = 4; i < 16; i += 4) sum[ith] += sum[ith + i];
-    }
-    threadgroup_barrier(mem_flags::mem_threadgroup);
-    if (ith == 0) {
-        for (int i = 16; i < nth; i += 16) sum[0] += sum[i];
-        dst[r1*ne0 + r0] = sum[0];
+    for (int row = 0; row < N_DST; ++row) {
+        all_sum = simd_sum(sumf[row]);
+        if (tiisg == 0) {
+            dst[r1*ne0 + r2*ne0*ne1 + first_row + row] = all_sum;
+        }
     }
-
 }
-
+#else
 kernel void kernel_mul_mat_q4_K_f32(
         device const  void * src0,
         device const float * src1,
         device       float * dst,
         constant   int64_t & ne00,
-        constant   int64_t & ne10,
-        constant   int64_t & ne0,
-        threadgroup float  * sum [[threadgroup(0)]],
-        uint2 tgpig[[threadgroup_position_in_grid]],
-        uint2 tpitg[[thread_position_in_threadgroup]],
-        uint2  tptg[[threads_per_threadgroup]]) {
-
-    const int nb = ne00/QK_K;
-
-    const int64_t r0 = tgpig.x;
-    const int64_t r1 = tgpig.y;
-
-    const int nth = tptg.x*tptg.y;
-    const int ith = tptg.y*tpitg.x + tpitg.y;
-
-    device const block_q4_K * x = (device const block_q4_K *) src0 + r0*nb;
-    device const float     * yy = (device const float      *) src1 + r1*ne10;
-
-    float sumf = 0;
-
-#if QK_K == 256
-
-    const uint16_t kmask1 = 0x3f3f;
-    const uint16_t kmask2 = 0x0f0f;
-    const uint16_t kmask3 = 0xc0c0;
-
-    const int tid = tpitg.y;   // 0...16
-    const int il  = tid/4;     // 0...3
-    const int ir  = tid - 4*il;// 0...3
-    const int n   = 4;
-
-    const int im = il/2;  // 0 or 1. 0 computes 0,32 + 128,160, 1 computes 64,96 + 192,224
-    const int in = il%2;
-
-    const int l0 = n*(2*ir + in);
-    const int q_offset = 32*im + l0;
-    const int y_offset = 64*im + l0;
+        constant   int64_t & ne01[[buffer(4)]],
+        constant   int64_t & ne02[[buffer(5)]],
+        constant   int64_t & ne10[[buffer(9)]],
+        constant   int64_t & ne12[[buffer(11)]],
+        constant   int64_t & ne0[[buffer(15)]],
+        constant   int64_t & ne1[[buffer(16)]],
+        constant   uint    & gqa[[buffer(17)]],
+        uint3 tgpig[[threadgroup_position_in_grid]],
+        uint tiisg[[thread_index_in_simdgroup]],
+        uint sgitg[[simdgroup_index_in_threadgroup]]) {
 
-    uchar2 sc1, sc2, sc3, sc4;
+    const int ix = tiisg/4;  // 0...7
+    const int it = tiisg%4;  // 0...3
 
-    for (int i = tpitg.x; i < nb; i += tptg.x) {
+    const int nb = ne00/QK_K;
+    const int r0 = tgpig.x;
+    const int r1 = tgpig.y;
+    const int r2 = tgpig.z;
+    const int first_row = (r0 * N_SIMDGROUP + sgitg) * N_DST;
+    const int ib_row = first_row * nb;
+    const uint offset0 = r2/gqa*(nb*ne0);
+    device const block_q4_K * x = (device const block_q4_K *) src0 + ib_row + offset0;
+    device const float      * y = (device const float      *) src1 + r1*ne10 + r2*ne00*ne1;
+    float yl[8];
+    float yh[8];
+    float sumf[N_DST]={0.f}, all_sum;
+
+    const int step = sizeof(block_q4_K) * nb / 2;
+
+    device const float * y4 = y + ix * QK_K + 8 * it;
+
+    uint16_t sc16[4];
+
+    for (int ib = ix; ib < nb; ib += 8) {
+
+        float2 sumy = {0.f, 0.f};
+        for (int i = 0; i < 8; ++i) {
+            yl[i] = y4[i+ 0]; sumy[0] += yl[i];
+            yh[i] = y4[i+32]; sumy[1] += yh[i];
+        }
 
-        device const uint8_t * q1 = (x + i)->qs + q_offset;
-        device const uint8_t * q2 = q1 + 64;
-        device const float   * y1 = yy + i*QK_K + y_offset;
-        device const float   * y2 = y1 + 128;
+        device const uint16_t * sc = (device const uint16_t *)x[ib].scales;
+        device const uint16_t * qs = (device const uint16_t *)x[ib].qs + 4 * it;
+        device const half     * dh = x[ib].d;
 
-        const float dall = (float)((x + i)->d);
-        const float dmin = (float)((x + i)->dmin);
+        for (int row = 0; row < N_DST; row++) {
 
-        device const uint16_t * a = (device const uint16_t *)(x + i)->scales;
-        sc1 = as_type<uchar2>((uint16_t)(a[im+0] & kmask1));
-        sc2 = as_type<uchar2>((uint16_t)(a[im+2] & kmask1));
-        sc3 = as_type<uchar2>((uint16_t)(((a[im+4] >> 0) & kmask2) | ((a[im+0] & kmask3) >> 2)));
-        sc4 = as_type<uchar2>((uint16_t)(((a[im+4] >> 4) & kmask2) | ((a[im+2] & kmask3) >> 2)));
+            sc16[0] = sc[0] & 0x000f;
+            sc16[1] = sc[0] & 0x0f00;
+            sc16[2] = sc[0] & 0x00f0;
+            sc16[3] = sc[0] & 0xf000;
 
-        float4 s = {0.f, 0.f, 0.f, 0.f};
-        float smin = 0;
-        for (int l = 0; l < n; ++l) {
+            float2 acc1 = {0.f, 0.f};
+            float2 acc2 = {0.f, 0.f};
+            for (int i = 0; i < 8; i += 2) {
+                acc1[0] += yl[i+0] * (qs[i/2] & 0x000F);
+                acc1[1] += yl[i+1] * (qs[i/2] & 0x0F00);
+                acc2[0] += yh[i+0] * (qs[i/2] & 0x00F0);
+                acc2[1] += yh[i+1] * (qs[i/2] & 0xF000);
+            }
 
-            s[0] += y1[l] * (q1[l] & 0xF); s[1] += y1[l+32] * (q1[l] >> 4);
-            s[2] += y2[l] * (q2[l] & 0xF); s[3] += y2[l+32] * (q2[l] >> 4);
-            smin += y1[l] * sc2[0] + y1[l+32] * sc2[1] + y2[l] * sc4[0] + y2[l+32] * sc4[1];
+            float dall = dh[0];
+            float dmin = dh[1];
+            sumf[row] += dall * ((acc1[0] + 1.f/256.f * acc1[1]) * sc16[0] +
+                                 (acc2[0] + 1.f/256.f * acc2[1]) * sc16[1] * 1.f/4096.f) -
+                         dmin * 1.f/16.f * (sumy[0] * sc16[2] + sumy[1] * sc16[3] * 1.f/256.f);
 
+            qs += step;
+            sc += step;
+            dh += step;
         }
-        sumf += dall * (s[0] * sc1[0] + s[1] * sc1[1] + s[2] * sc3[0] + s[3] * sc3[1]) - dmin * smin;
 
+        y4 += 8 * QK_K;
     }
-#else
-    uint16_t aux16[2];
-    thread const uint8_t * scales = (thread const uint8_t *)aux16;
-
-    const int il  = 4*tpitg.x;
-
-    for (int i = tpitg.y; i < nb; i += tptg.y) {
 
-        device const uint8_t * q = x[i].qs + il;
-        device const float   * y = yy + i * QK_K + il;
-
-        const float d = (float)x[i].d[0];
-        const float m = (float)x[i].d[1];
-
-        device const uint16_t * a = (device const uint16_t *)x[i].scales;
-        aux16[0] = a[0] & 0x0f0f;
-        aux16[1] = (a[0] >> 4) & 0x0f0f;
-
-        for (int l = 0; l < 4; ++l) {
-            sumf += d * scales[0] * (y[l+ 0] * (q[l] & 0xF) + y[l+16] * (q[l+16] & 0xF)) - m * scales[2] * (y[l+ 0] + y[l+16])
-                  + d * scales[1] * (y[l+32] * (q[l] >>  4) + y[l+48] * (q[l+16] >>  4)) - m * scales[3] * (y[l+32] + y[l+48]);
+    for (int row = 0; row < N_DST; ++row) {
+        all_sum = simd_sum(sumf[row]);
+        if (tiisg == 0) {
+            dst[r1*ne0+ r2*ne0*ne1 + first_row + row] = all_sum;
         }
     }
-#endif
-
-    sum[ith] = sumf;
-
-    //
-    // Accumulate the sum from all threads in the threadgroup
-    // This version is slightly faster than the commented out one below,
-    // which I copy-pasted from ggerganov's q4_0 dot product for metal.
-    //
-    threadgroup_barrier(mem_flags::mem_threadgroup);
-    if (ith%4 == 0) {
-        for (int i = 1; i < 4; ++i) sum[ith] += sum[ith + i];
-    }
-    threadgroup_barrier(mem_flags::mem_threadgroup);
-    if (ith%16 == 0) {
-        for (int i = 4; i < 16; i += 4) sum[ith] += sum[ith + i];
-    }
-    threadgroup_barrier(mem_flags::mem_threadgroup);
-    if (ith == 0) {
-        for (int i = 16; i < nth; i += 16) sum[0] += sum[i];
-        dst[r1*ne0 + r0] = sum[0];
-    }
-
-    //// accumulate the sum from all threads in the threadgroup
-    //threadgroup_barrier(mem_flags::mem_threadgroup);
-    //for (uint i = nth/2; i > 0; i /= 2) {
-    //    if (ith < i) {
-    //        sum[ith] += sum[ith + i];
-    //    }
-    //    threadgroup_barrier(mem_flags::mem_threadgroup);
-    //}
-
-    //if (ith == 0) {
-    //    dst[r1*ne0 + r0] = sum[0];
-    //}
 }
+#endif
 
 kernel void kernel_mul_mat_q5_K_f32(
         device const  void * src0,
         device const float * src1,
         device       float * dst,
         constant   int64_t & ne00,
-        constant   int64_t & ne10,
-        constant   int64_t & ne0,
-        threadgroup float  * sum [[threadgroup(0)]],
-        uint2 tgpig[[threadgroup_position_in_grid]],
-        uint2 tpitg[[thread_position_in_threadgroup]],
-        uint2  tptg[[threads_per_threadgroup]]) {
+        constant   int64_t & ne01[[buffer(4)]],
+        constant   int64_t & ne02[[buffer(5)]],
+        constant   int64_t & ne10[[buffer(9)]],
+        constant   int64_t & ne12[[buffer(11)]],
+        constant   int64_t & ne0[[buffer(15)]],
+        constant   int64_t & ne1[[buffer(16)]],
+        constant   uint    & gqa[[buffer(17)]],
+        uint3 tgpig[[threadgroup_position_in_grid]],
+        uint tiisg[[thread_index_in_simdgroup]],
+        uint sgitg[[simdgroup_index_in_threadgroup]]) {
 
     const int nb = ne00/QK_K;
 
     const int64_t r0 = tgpig.x;
     const int64_t r1 = tgpig.y;
+    const int r2 = tgpig.z;
 
-    device const block_q5_K * x = (device const block_q5_K *) src0 + r0*nb;
-    device const float     * yy = (device const float      *) src1 + r1*ne10;
+    const int first_row = (r0 * N_SIMDGROUP + sgitg) * 2;
+    const uint offset0 = r2/gqa*(nb*ne0);
+    device const block_q5_K * x = (device const block_q5_K *) src0 + first_row*nb + offset0;
+    device const float     * yy = (device const float      *) src1 + r1*ne10 + r2*ne00*ne1;
 
-    const int nth = tptg.x*tptg.y;
-    const int ith = tptg.y*tpitg.x + tpitg.y;
+    float sumf[2]={0.f};
 
-    float sumf = 0;
+    const int step = sizeof(block_q5_K) * nb;
 
 #if QK_K == 256
+#
+    float yl[16], yh[16];
 
     const uint16_t kmask1 = 0x3f3f;
     const uint16_t kmask2 = 0x0f0f;
     const uint16_t kmask3 = 0xc0c0;
 
-    const int tid = tpitg.y;   // 0...16
-    const int il  = tid/4;     // 0...3
-    const int ir  = tid - 4*il;// 0...3
-    const int n   = 4;
-
-    const int im = il/2;  // 0 or 1. 0 computes 0,32 + 128,160, 1 computes 64,96 + 192,224
-    const int in = il%2;
+    const int tid = tiisg/4;
+    const int ix  = tiisg%4;
+    const int im  = tid/4;
+    const int ir  = tid%4;
+    const int n   = 8;
 
-    const int l0 = n*(2*ir + in);
+    const int l0 = n*ir;
     const int q_offset = 32*im + l0;
     const int y_offset = 64*im + l0;
 
@@ -1644,78 +1463,113 @@ kernel void kernel_mul_mat_q5_K_f32(
     const uint8_t hm3 = hm1 << 4;
     const uint8_t hm4 = hm2 << 4;
 
-    uchar2 sc1, sc2, sc3, sc4;
+    uint16_t sc16[4];
+    thread const uint8_t * sc8 = (thread const uint8_t *)sc16;
 
-    for (int i = tpitg.x; i < nb; i += tptg.x) {
+    device const float * y1 = yy + ix*QK_K + y_offset;
 
-        device const uint8_t * q1 = (x + i)->qs + q_offset;
-        device const uint8_t * q2 = q1 + 64;
-        device const uint8_t * qh = (x + i)->qh + l0;
-        device const float   * y1 = yy + i*QK_K + y_offset;
-        device const float   * y2 = y1 + 128;
+    for (int i = ix; i < nb; i += 4) {
 
-        const float dall = (float)((x + i)->d);
-        const float dmin = (float)((x + i)->dmin);
+        device const uint8_t * q1 = x[i].qs + q_offset;
+        device const uint8_t * qh = x[i].qh + l0;
+        device const half * dh = &x[i].d;
+        device const uint16_t * a = (device const uint16_t *)x[i].scales + im;
 
-        device const uint16_t * a = (device const uint16_t *)(x + i)->scales;
-        sc1 = as_type<uchar2>((uint16_t)(a[im+0] & kmask1));
-        sc2 = as_type<uchar2>((uint16_t)(a[im+2] & kmask1));
-        sc3 = as_type<uchar2>((uint16_t)(((a[im+4] >> 0) & kmask2) | ((a[im+0] & kmask3) >> 2)));
-        sc4 = as_type<uchar2>((uint16_t)(((a[im+4] >> 4) & kmask2) | ((a[im+2] & kmask3) >> 2)));
+        device const float * y2 = y1 + 128;
+        float4 sumy = {0.f, 0.f, 0.f, 0.f};
+        for (int l = 0; l < 8; ++l) {
+            yl[l+0] = y1[l+ 0]; sumy[0] += yl[l+0];
+            yl[l+8] = y1[l+32]; sumy[1] += yl[l+8];
+            yh[l+0] = y2[l+ 0]; sumy[2] += yh[l+0];
+            yh[l+8] = y2[l+32]; sumy[3] += yh[l+8];
+        }
 
-        float4 s = {0.f, 0.f, 0.f, 0.f};
-        float smin = 0;
-        for (int l = 0; l < n; ++l) {
+        for (int row = 0; row < 2; ++row) {
+
+            device const uint8_t * q2 = q1 + 64;
+
+            sc16[0] = a[0] & kmask1;
+            sc16[1] = a[2] & kmask1;
+            sc16[2] = ((a[4] >> 0) & kmask2) | ((a[0] & kmask3) >> 2);
+            sc16[3] = ((a[4] >> 4) & kmask2) | ((a[2] & kmask3) >> 2);
+
+            float4 acc = {0.f, 0.f, 0.f, 0.f};
+            for (int l = 0; l < n; ++l) {
+                uint8_t h = qh[l];
+                acc[0] += yl[l+0] * ((uint16_t)(q1[l] & 0x0F) + (h & hm1 ? 16 : 0));
+                acc[1] += yl[l+8] * ((uint16_t)(q1[l] & 0xF0) + (h & hm2 ? 256 : 0));
+                acc[2] += yh[l+0] * ((uint16_t)(q2[l] & 0x0F) + (h & hm3 ? 16 : 0));
+                acc[3] += yh[l+8] * ((uint16_t)(q2[l] & 0xF0) + (h & hm4 ? 256 : 0));
+            }
+            const float dall = dh[0];
+            const float dmin = dh[1];
+            sumf[row] += dall * (acc[0] * sc8[0] + acc[1] * sc8[1] * 1.f/16.f + acc[2] * sc8[4] + acc[3] * sc8[5] * 1.f/16.f) -
+                         dmin * (sumy[0] * sc8[2] + sumy[1] * sc8[3] + sumy[2] * sc8[6] + sumy[3] * sc8[7]);
 
-            s[0] += y1[l+ 0] * ((q1[l] & 0xF) + (qh[l] & hm1 ? 16 : 0));
-            s[1] += y1[l+32] * ((q1[l] >>  4) + (qh[l] & hm2 ? 16 : 0));
-            s[2] += y2[l+ 0] * ((q2[l] & 0xF) + (qh[l] & hm3 ? 16 : 0));
-            s[3] += y2[l+32] * ((q2[l] >>  4) + (qh[l] & hm4 ? 16 : 0));
-            smin += y1[l] * sc2[0] + y1[l+32] * sc2[1] + y2[l] * sc4[0] + y2[l+32] * sc4[1];
+            q1 += step;
+            qh += step;
+            dh += step/2;
+            a  += step/2;
 
         }
-        sumf += dall * (s[0] * sc1[0] + s[1] * sc1[1] + s[2] * sc3[0] + s[3] * sc3[1]) - dmin * smin;
+
+        y1 += 4 * QK_K;
 
     }
 #else
-    const int il  = 4 * tpitg.x;  // 0, 4, 8, 12
-    const int im  = il/8;         // 0, 0, 1, 1
-    const int in  = il%8;         // 0, 4, 0, 4
+    float yl[8], yh[8];
+
+    const int il = 4 * (tiisg/8);  // 0, 4, 8, 12
+    const int ix = tiisg%8;
+    const int im = il/8;         // 0, 0, 1, 1
+    const int in = il%8;         // 0, 4, 0, 4
+
+    device const float * y = yy + ix*QK_K + il;
 
-    for (int i = tpitg.y; i < nb; i += tptg.y) {
+    for (int i = ix; i < nb; i += 8) {
 
-        const float d = (float)x[i].d;
+        for (int l = 0; l < 4; ++l) {
+            yl[l+0] = y[l+ 0];
+            yl[l+4] = y[l+16];
+            yh[l+0] = y[l+32];
+            yh[l+4] = y[l+48];
+        }
+
+        device const half * dh = &x[i].d;
         device const uint8_t * q = x[i].qs + il;
         device const uint8_t * h = x[i].qh + in;
         device const int8_t  * s = x[i].scales;
-        device const float   * y = yy + i*QK_K + il;
 
-        for (int l = 0; l < 4; ++l) {
-            const uint8_t hl = h[l] >> im;
-            sumf += y[l+ 0] * d * s[0] * ((q[l+ 0] & 0xF) - (hl & 0x01 ? 0 : 16))
-                  + y[l+16] * d * s[1] * ((q[l+16] & 0xF) - (hl & 0x04 ? 0 : 16))
-                  + y[l+32] * d * s[2] * ((q[l+ 0] >>  4) - (hl & 0x10 ? 0 : 16))
-                  + y[l+48] * d * s[3] * ((q[l+16] >>  4) - (hl & 0x40 ? 0 : 16));
+        for (int row = 0; row < 2; ++row) {
+
+            const float d = dh[0];
+
+            float2 acc = {0.f, 0.f};
+            for (int l = 0; l < 4; ++l) {
+                const uint8_t hl = h[l] >> im;
+                acc[0] += yl[l+0] * s[0] * ((int16_t)(q[l+ 0] & 0x0F) - (hl & 0x01 ? 0 : 16))
+                        + yl[l+4] * s[1] * ((int16_t)(q[l+16] & 0x0F) - (hl & 0x04 ? 0 : 16));
+                acc[1] += yh[l+0] * s[2] * ((int16_t)(q[l+ 0] & 0xF0) - (hl & 0x10 ? 0 : 256))
+                        + yh[l+4] * s[3] * ((int16_t)(q[l+16] & 0xF0) - (hl & 0x40 ? 0 : 256));
+            }
+            sumf[row] += d * (acc[0] + 1.f/16.f * acc[1]);
+
+            q += step;
+            h += step;
+            s += step;
+            dh += step/2;
+
         }
+
+        y += 8 * QK_K;
     }
 #endif
-    sum[ith] = sumf;
 
-    //
-    // Accumulate the sum from all threads in the threadgroup
-    //
-    threadgroup_barrier(mem_flags::mem_threadgroup);
-    if (ith%4 == 0) {
-        sum[ith] += sum[ith+1] + sum[ith+2] + sum[ith+3];
-    }
-    threadgroup_barrier(mem_flags::mem_threadgroup);
-    if (ith%16 == 0) {
-        sum[ith] += sum[ith+4] + sum[ith+8] + sum[ith+12];
-    }
-    threadgroup_barrier(mem_flags::mem_threadgroup);
-    if (ith == 0) {
-        for (int i = 16; i < nth; i += 16) sum[0] += sum[i];
-        dst[r1*ne0 + r0] = sum[0];
+    for (int row = 0; row < 2; ++row) {
+        const float tot = simd_sum(sumf[row]);
+        if (tiisg == 0) {
+            dst[r1*ne0 + r2*ne0*ne1 + first_row + row] = tot;
+        }
     }
 
 }
@@ -1725,12 +1579,16 @@ kernel void kernel_mul_mat_q6_K_f32(
         device const float * src1,
         device       float * dst,
         constant   int64_t & ne00,
-        constant   int64_t & ne10,
-        constant   int64_t & ne0,
-        threadgroup float  * sum [[threadgroup(0)]],
-        uint2 tgpig[[threadgroup_position_in_grid]],
-        uint2 tpitg[[thread_position_in_threadgroup]],
-        uint2  tptg[[threads_per_threadgroup]]) {
+        constant   int64_t & ne01[[buffer(4)]],
+        constant   int64_t & ne02[[buffer(5)]],
+        constant   int64_t & ne10[[buffer(9)]],
+        constant   int64_t & ne12[[buffer(11)]],
+        constant   int64_t & ne0[[buffer(15)]],
+        constant   int64_t & ne1[[buffer(16)]],
+        constant   uint    & gqa[[buffer(17)]],
+        uint3 tgpig[[threadgroup_position_in_grid]],
+        uint tiisg[[thread_index_in_simdgroup]],
+        uint sgitg[[simdgroup_index_in_threadgroup]]) {
 
     const uint8_t kmask1 = 0x03;
     const uint8_t kmask2 = 0x0C;
@@ -1741,20 +1599,20 @@ kernel void kernel_mul_mat_q6_K_f32(
 
     const int64_t r0 = tgpig.x;
     const int64_t r1 = tgpig.y;
+    const int r2 = tgpig.z;
 
-    device const block_q6_K * x = (device const block_q6_K *) src0 + r0*nb;
-    device const float     * yy = (device const float      *) src1 + r1*ne10;
-
-    const int nth = tptg.x*tptg.y;
-    const int ith = tptg.y*tpitg.x + tpitg.y;
+    const int row = 2 * r0 + sgitg;
+    const uint offset0 = r2/gqa*(nb*ne0);
+    device const block_q6_K * x = (device const block_q6_K *) src0 + row * nb + offset0;
+    device const float     * yy = (device const float      *) src1 + r1*ne10 + r2*ne00*ne1;
 
     float sumf = 0;
 
 #if QK_K == 256
-    // Note: we absolutely assume that tptg.y = 16 and QK_K = 256!
-    const int iqs  = 16 * tpitg.y;
-    const int ip   = iqs / 128;         // 0 or 1
-    const int il   = (iqs - 128*ip)/16; // 0...7
+    const int tid  = tiisg/2;
+    const int ix   = tiisg%2;
+    const int ip   = tid/8;         // 0 or 1
+    const int il   = tid%8;
     const int n    = 4;
     const int l0   = n*il;
     const int is   = 8*ip + l0/16;
@@ -1763,9 +1621,10 @@ kernel void kernel_mul_mat_q6_K_f32(
     const int q_offset_l = 64*ip + l0;
     const int q_offset_h = 32*ip + l0;
 
-    for (int i = tpitg.x; i < nb; i += tptg.x) {
+    for (int i = ix; i < nb; i += 2) {
 
-        device const uint8_t * ql = x[i].ql + q_offset_l;
+        device const uint8_t * q1 = x[i].ql + q_offset_l;
+        device const uint8_t * q2 = q1 + 32;
         device const uint8_t * qh = x[i].qh + q_offset_h;
         device const int8_t  * sc = x[i].scales + is;
 
@@ -1775,19 +1634,21 @@ kernel void kernel_mul_mat_q6_K_f32(
 
         float4 sums = {0.f, 0.f, 0.f, 0.f};
         for (int l = 0; l < n; ++l) {
-            sums[0] += y[l+ 0] * ((int8_t)((ql[l+ 0] & 0xF) | ((qh[l] & kmask1) << 4)) - 32);
-            sums[1] += y[l+32] * ((int8_t)((ql[l+32] & 0xF) | ((qh[l] & kmask2) << 2)) - 32);
-            sums[2] += y[l+64] * ((int8_t)((ql[l+ 0]  >> 4) | ((qh[l] & kmask3) << 0)) - 32);
-            sums[3] += y[l+96] * ((int8_t)((ql[l+32]  >> 4) | ((qh[l] & kmask4) >> 2)) - 32);
+            sums[0] += y[l+ 0] * ((int8_t)((q1[l] & 0xF) | ((qh[l] & kmask1) << 4)) - 32);
+            sums[1] += y[l+32] * ((int8_t)((q2[l] & 0xF) | ((qh[l] & kmask2) << 2)) - 32);
+            sums[2] += y[l+64] * ((int8_t)((q1[l]  >> 4) | ((qh[l] & kmask3) << 0)) - 32);
+            sums[3] += y[l+96] * ((int8_t)((q2[l]  >> 4) | ((qh[l] & kmask4) >> 2)) - 32);
         }
 
         sumf += dall * (sums[0] * sc[0] + sums[1] * sc[2] + sums[2] * sc[4] + sums[3] * sc[6]);
 
     }
+
 #else
-    const int il  = 4*tpitg.x;    // 0, 4, 8, 12
+    const int ix  = tiisg/4;
+    const int il  = 4*(tiisg%4);
 
-    for (int i = tpitg.y; i < nb; i += tptg.y) {
+    for (int i = ix; i < nb; i += 8) {
         device const float * y = yy + i * QK_K + il;
         device const uint8_t * ql = x[i].ql + il;
         device const uint8_t * qh = x[i].qh + il;
@@ -1807,23 +1668,382 @@ kernel void kernel_mul_mat_q6_K_f32(
 
 #endif
 
-    sum[ith] = sumf;
+    const float tot = simd_sum(sumf);
+    if (tiisg == 0) {
+        dst[r1*ne0 + r2*ne0*ne1 + row] = tot;
+    }
+}
 
-    //
-    // Accumulate the sum from all threads in the threadgroup
-    //
-    threadgroup_barrier(mem_flags::mem_threadgroup);
-    if (ith%4 == 0) {
-        for (int i = 1; i < 4; ++i) sum[ith] += sum[ith + i];
+//============================= templates and their specializations =============================
+
+template <typename type4x4>
+void dequantize_f16(device const half4x4 * src, short il, thread type4x4 & reg) {
+    half4x4 temp = *(((device half4x4 *)src));
+    for (int i = 0; i < 16; i++){
+        reg[i/4][i%4] = temp[i/4][i%4];
     }
-    threadgroup_barrier(mem_flags::mem_threadgroup);
-    if (ith%16 == 0) {
-        for (int i = 4; i < 16; i += 4) sum[ith] += sum[ith + i];
+}
+
+template <typename type4x4>
+void dequantize_q4_0(device const block_q4_0 *xb, short il, thread type4x4 & reg) {
+    device const uint16_t * qs = ((device const uint16_t *)xb + 1);
+    const half d = il ? (xb->d / 16.h) : xb->d;
+    const half m = il ? ( -8.h * 16.h) : -8.h;
+    const ushort mask0 = il ? 0x00F0 : 0x000F;
+    const ushort mask1 = il ? 0xF000 : 0x0F00;
+
+    for (int i=0;i<8;i++) {
+        reg[i/2][2*(i%2)]   = (((qs[i] & mask0)     ) + m) * d;
+        reg[i/2][2*(i%2)+1] = (((qs[i] & mask1) >> 8) + m) * d;
     }
-    threadgroup_barrier(mem_flags::mem_threadgroup);
-    if (ith == 0) {
-        for (int i = 16; i < nth; i += 16) sum[0] += sum[i];
-        dst[r1*ne0 + r0] = sum[0];
+}
+
+template <typename type4x4>
+void dequantize_q4_1(device const block_q4_1 *xb, short il, thread type4x4 & reg) {
+    device const uint16_t * qs = ((device const uint16_t *)xb + 2);
+    const half d = il ? (xb->d / 16.h) : xb->d;
+    const half m = xb->m;
+    const ushort mask0 = il ? 0x00F0 : 0x000F;
+    const ushort mask1 = il ? 0xF000 : 0x0F00;
+
+    for (int i=0;i<8;i++) {
+        reg[i/2][2*(i%2)]   = (((qs[i] & mask0)     ) * d) + m;
+        reg[i/2][2*(i%2)+1] = (((qs[i] & mask1) >> 8) * d) + m;
+    }
+}
+
+template <typename type4x4>
+void dequantize_q8_0(device const block_q8_0 *xb, short il, thread type4x4 & reg) {
+    device const int8_t * qs = ((device const int8_t *)xb->qs);
+    const half d = xb->d;
+
+    for (int i=0;i<16;i++) {
+        reg[i/4][i%4] = (qs[i + 16*il] * d);
+    }
+}
+
+template <typename type4x4>
+void dequantize_q2_K(device const block_q2_K *xb, short il, thread type4x4 & reg) {
+    const half d = xb->d;
+    const half min = xb->dmin;
+    device const uint8_t * q = (device const uint8_t *)xb->qs;
+    half dl, ml;
+    uint8_t sc = xb->scales[il];
+
+#if QK_K == 256
+    q = q + 32*(il/8) + 16*(il&1);
+    il = (il/2)%4;
+#endif
+    half  coef = il>1 ? (il>2 ? 1/64.h : 1/16.h) : (il>0 ? 1/4.h : 1.h);
+    uchar mask = il>1 ? (il>2 ? 192    : 48)     : (il>0 ? 12    : 3);
+    dl = d * (sc & 0xF) * coef, ml = min * (sc >> 4);
+    for (int i = 0; i < 16; ++i) {
+        reg[i/4][i%4] = dl * (q[i] & mask) - ml;
+    }
+}
+
+template <typename type4x4>
+void dequantize_q3_K(device const block_q3_K *xb, short il, thread type4x4 & reg) {
+    const float d_all = (float)(xb->d);
+    device const uint8_t * q = (device const uint8_t *)xb->qs;
+    device const uint8_t * h = (device const uint8_t *)xb->hmask;
+    device const int8_t * scales = (device const int8_t *)xb->scales;
+
+#if QK_K == 256
+    q = q + 32 * (il/8) + 16 * (il&1);
+    h = h + 16 * (il&1);
+    uint8_t m = 1 << (il/2);
+    uint16_t kmask1 = (il/4)>1 ? ((il/4)>2 ? 192 : 48) : \
+                                 ((il/4)>0 ? 12  : 3);
+    uint16_t kmask2 = il/8 ? 0xF0 : 0x0F;
+    uint16_t scale_2 = scales[il%8], scale_1 = scales[8 + il%4];
+    int16_t  dl_int = (il/4)&1 ? (scale_2&kmask2) | ((scale_1&kmask1) << 2) : \
+                                 (scale_2&kmask2) | ((scale_1&kmask1) << 4);
+    float dl = il<8 ? d_all * (dl_int - 32.f) : d_all * (dl_int / 16.f - 32.f);
+
+    il = (il/2)%4;
+    float   coef = il>1 ? (il>2 ? 1/64.h : 1/16.h) : (il>0 ? 1/4.h : 1.h);
+    uint8_t mask = il>1 ? (il>2 ? 192    : 48)     : (il>0 ? 12    : 3);
+
+    for (int i = 0; i < 16; ++i) {
+        reg[i/4][i%4] = coef * dl * ((q[i] & mask) - ((h[i] & m) ? 0 : 4.f/coef));
+    }
+#else
+    float    kcoef = il&1 ? 1.f/16.f : 1.f;
+    uint16_t kmask = il&1 ? 0xF0     : 0x0F;
+    float    dl = d_all * ((scales[il/2] & kmask) * kcoef - 8);
+    float    coef = il>1 ? (il>2 ? 1/64.h : 1/16.h) : (il>0 ? 1/4.h : 1.h);
+    uint8_t  mask = il>1 ? (il>2 ? 192    : 48)     : (il>0 ? 12    : 3);
+    uint8_t  m = 1<<(il*2);
+    for (int i = 0; i < 16; ++i) {
+        reg[i/4][i%4] = coef * dl * ((q[i] & mask) - ((h[i%8] & (m * (1 + i/8))) ? 0 : 4.f/coef));
+    }
+#endif
+}
+
+template <typename type4x4>
+void dequantize_q4_K(device const block_q4_K *xb, short il, thread type4x4 & reg) {
+    device const uint8_t * q = xb->qs;
+
+#if QK_K == 256
+    const float d = (float)(xb->d);
+    const float min = (float)(xb->dmin);
+    short is = (il/4) * 2;
+    q = q + (il/4) * 32 + 16 * (il&1);
+    il = il%4;
+    const uchar4 sc = get_scale_min_k4(is, xb->scales);
+    const float dl = il<2 ? d * sc[0]   : d * sc[2]/16.h;
+    const float ml = il<2 ? min * sc[1] : min * sc[3];
+#else
+    q = q + 16 * (il&1);
+    device const uint8_t * s = xb->scales;
+    device const half2 * dh = (device const half2 *)xb->d;
+    const float2 d = (float2)dh[0];
+    const float dl = il<2 ? d[0] * (s[0]&0xF) : d[0] * (s[1]&0xF)/16.h;
+    const float ml = il<2 ? d[1] * (s[0]>>4)  : d[1 ]* (s[1]>>4);
+#endif
+    const ushort mask = il<2 ? 0x0F : 0xF0;
+    for (int i = 0; i < 16; ++i) {
+        reg[i/4][i%4] = dl * (q[i] & mask) - ml;
+    }
+}
+
+template <typename type4x4>
+void dequantize_q5_K(device const block_q5_K *xb, short il, thread type4x4 & reg) {
+    device const uint8_t * q  = xb->qs;
+    device const uint8_t * qh = xb->qh;
+
+#if QK_K == 256
+    const float d = (float)(xb->d);
+    const float min = (float)(xb->dmin);
+    short is = (il/4) * 2;
+    q  = q + 32 * (il/4) + 16 * (il&1);
+    qh = qh + 16 * (il&1);
+    uint8_t ul = 1 << (il/2);
+    il = il%4;
+    const uchar4 sc = get_scale_min_k4(is, xb->scales);
+    const float dl = il<2 ? d * sc[0]   : d * sc[2]/16.h;
+    const float ml = il<2 ? min * sc[1] : min * sc[3];
+
+    const ushort mask   = il<2 ? 0x0F : 0xF0;
+    const float  qh_val = il<2 ? 16.f : 256.f;
+    for (int i = 0; i < 16; ++i) {
+        reg[i/4][i%4] = dl * ((q[i] & mask) + (qh[i] & ul ? qh_val : 0)) - ml;
+    }
+#else
+    q = q + 16 * (il&1);
+    device const int8_t * s = xb->scales;
+    const float dl = xb->d * s[il];
+    uint8_t m = 1<<(il*2);
+    const float  coef = il<2 ? 1.f  : 1.f/16.f;
+    const ushort mask = il<2 ? 0x0F : 0xF0;
+    for (int i = 0; i < 16; ++i) {
+        reg[i/4][i%4] = coef * dl * ((q[i] & mask) - (qh[i%8] & (m*(1+i/8)) ? 0.f : 16.f/coef));
+    }
+#endif
+}
+
+template <typename type4x4>
+void dequantize_q6_K(device const block_q6_K *xb, short il, thread type4x4 & reg) {
+    const float d_all = (float)(xb->d);
+    device const uint8_t * ql = (device const uint8_t *)xb->ql;
+    device const uint8_t * qh = (device const uint8_t *)xb->qh;
+    device const int8_t * scales = (device const int8_t *)xb->scales;
+
+#if QK_K == 256
+    ql = ql + 64*(il/8) + 32*((il/2)&1) + 16*(il&1);
+    qh = qh + 32*(il/8) + 16*(il&1);
+    float sc = scales[(il%2) + 2 * ((il/2))];
+    il = (il/2)%4;
+#else
+    ql = ql + 16 * (il&1);
+    float sc = scales[il];
+#endif
+    for (int i = 0; i < 16; ++i) {
+        uint16_t  kmask1 = il>1 ? (il>2 ? 192 : 48) : (il>0 ? 12 : 3);
+        uint16_t  kmask2 = il>1 ? 0xF0              : 0x0F;
+        const float coef = il>1 ? 1.f/16.f          : 1.f;
+        float q = il&1 ? ((ql[i]&kmask2)|((qh[i]&kmask1)<<2)) - 32.f/coef : \
+                         ((ql[i]&kmask2)|((qh[i]&kmask1)<<4)) - 32.f/coef;
+        reg[i/4][i%4] = d_all * sc * q * coef;
     }
+}
+
+template<typename block_q, short nl, void (*dequantize_func)(device const block_q *, short, thread float4x4 &)>
+kernel void kernel_get_rows(
+        device const  void * src0,
+        device const   int * src1,
+        device       float * dst,
+        constant   int64_t & ne00,
+        constant  uint64_t & nb01,
+        constant  uint64_t & nb1,
+        uint                 tgpig[[threadgroup_position_in_grid]],
+        uint                 tiitg[[thread_index_in_threadgroup]],
+        uint                 tptg[[threads_per_threadgroup]]) {
+    const int i = tgpig;
+    const int r = ((device int32_t *) src1)[i];
 
+    for (int ind = tiitg; ind < ne00/16; ind += tptg) {
+        float4x4 temp;
+        dequantize_func(
+            ((device const block_q *) ((device char *) src0 + r*nb01)) + ind/nl, ind%nl, temp);
+        *(((device float4x4 *) ((device char *) dst + i*nb1)) + ind) = temp;
+    }
 }
+
+#define BLOCK_SIZE_M 64 // 8 simdgroup matrices from matrix A
+#define BLOCK_SIZE_N 32 // 4 simdgroup matrices from matrix A
+#define BLOCK_SIZE_K 32
+#define THREAD_MAT_M 4 // each thread take 4 simdgroup matrices from matrix A
+#define THREAD_MAT_N 2 // each thread take 2 simdgroup matrices from matrix B
+#define THREAD_PER_BLOCK 128
+#define THREAD_PER_ROW 2 // 2 thread for each row in matrix A to load numbers
+#define THREAD_PER_COL 4 // 4 thread for each row in matrix B to load numbers
+#define SG_MAT_SIZE 64 // simdgroup matrix is of shape 8x8
+#define SG_MAT_ROW 8
+
+// each block_q contains 16*nl weights
+template<typename block_q, short nl, void (*dequantize_func)(device const block_q *, short, thread half4x4 &)>
+kernel void kernel_mul_mm(device const  uchar * src0,
+                           device const  float * src1,
+                           device        float * dst,
+                           constant    int64_t & ne00,
+                           constant    int64_t & ne02,
+                           constant    int64_t & nb01,
+                           constant    int64_t & nb02,
+                           constant    int64_t & ne12,
+                           constant    int64_t & ne0,
+                           constant    int64_t & ne1,
+                           constant    uint & gqa,
+                           threadgroup   uchar * shared_memory [[threadgroup(0)]],
+                           uint3                 tgpig[[threadgroup_position_in_grid]],
+                           uint                  tiitg[[thread_index_in_threadgroup]],
+                           uint                  sgitg[[simdgroup_index_in_threadgroup]]) {
+
+    threadgroup half * sa = ((threadgroup half *)shared_memory);
+    threadgroup float * sb = (threadgroup float *)(shared_memory + 4096);
+
+    const uint r0 = tgpig.y;
+    const uint r1 = tgpig.x;
+    const uint im = tgpig.z;
+    // if this block is of 64x32 shape or smaller
+    short n_rows = (ne0 - r0 * BLOCK_SIZE_M < BLOCK_SIZE_M) ? (ne0 - r0 * BLOCK_SIZE_M) : BLOCK_SIZE_M;
+    short n_cols = (ne1 - r1 * BLOCK_SIZE_N < BLOCK_SIZE_N) ? (ne1 - r1 * BLOCK_SIZE_N) : BLOCK_SIZE_N;
+    // a thread shouldn't load data outside of the matrix
+    short thread_row = ((short)tiitg/THREAD_PER_ROW) < n_rows ? ((short)tiitg/THREAD_PER_ROW) : n_rows - 1;
+    short thread_col = ((short)tiitg/THREAD_PER_COL) < n_cols ? ((short)tiitg/THREAD_PER_COL) : n_cols - 1;
+
+    simdgroup_half8x8 ma[4];
+    simdgroup_float8x8 mb[2];
+    simdgroup_float8x8 c_res[8];
+    for (int i = 0; i < 8; i++){
+        c_res[i] = make_filled_simdgroup_matrix<float, 8>(0.f);
+    }
+
+    short il = (tiitg % THREAD_PER_ROW);
+    uint offset0 = im/gqa*nb02; ushort offset1 = il/nl;
+    device const block_q  * x = (device const block_q  *)(src0 + (r0 * BLOCK_SIZE_M + thread_row) * nb01 + offset0) + offset1;
+    device const float * y = src1 + (r1 * BLOCK_SIZE_N + thread_col) * ne00 \
+                             + BLOCK_SIZE_K / THREAD_PER_COL * (tiitg % THREAD_PER_COL) + im * ne00 * ne1;
+
+    for (int loop_k = 0; loop_k < ne00; loop_k += BLOCK_SIZE_K) {
+        //load data and store to threadgroup memory
+        half4x4 temp_a;
+        dequantize_func(x, il, temp_a);
+        threadgroup_barrier(mem_flags::mem_threadgroup);
+        #pragma unroll(16)
+        for (int i = 0; i < 16; i++) {
+            *(sa + SG_MAT_SIZE * ((tiitg / THREAD_PER_ROW / 8) \
+            + 16 * (tiitg % THREAD_PER_ROW) + 8 * (i / 8)) \
+            + (tiitg / THREAD_PER_ROW) % 8 + (i & 7) * 8) = temp_a[i/4][i%4];
+        }
+        *(threadgroup float2x4 *)(sb + (tiitg % THREAD_PER_COL) * 8 * 32 + 8 * (tiitg / THREAD_PER_COL)) \
+                = *((device float2x4 *)y);
+        il = (il + 2 < nl) ? il + 2 : il % 2;
+        x  = (il < 2) ? x + (2+nl-1)/nl : x;
+        y += BLOCK_SIZE_K;
+
+        threadgroup_barrier(mem_flags::mem_threadgroup);
+        //load matrices from threadgroup memory and conduct outer products
+        threadgroup half  * lsma = (sa + THREAD_MAT_M * SG_MAT_SIZE * (sgitg % 2));
+        threadgroup float * lsmb = (sb + THREAD_MAT_N * SG_MAT_SIZE * (sgitg / 2));
+        #pragma unroll(4)
+        for (int ik = 0; ik < BLOCK_SIZE_K / 8; ik++) {
+            #pragma unroll(4)
+            for (int i = 0; i < 4; i++) {
+                simdgroup_load(ma[i],lsma + SG_MAT_SIZE * i);
+            }
+            simdgroup_barrier(mem_flags::mem_none);
+            #pragma unroll(2)
+            for (int i = 0; i < 2; i++) {
+                simdgroup_load(mb[i],lsmb + SG_MAT_SIZE * i);
+            }
+
+            lsma += BLOCK_SIZE_M / SG_MAT_ROW * SG_MAT_SIZE;
+            lsmb += BLOCK_SIZE_N / SG_MAT_ROW * SG_MAT_SIZE;
+            #pragma unroll(8)
+            for (int i = 0; i < 8; i++){
+                simdgroup_multiply_accumulate(c_res[i], mb[i/4], ma[i%4], c_res[i]);
+            }
+        }
+    }
+
+    if ((r0 + 1) * BLOCK_SIZE_M <= ne0 && (r1 + 1) * BLOCK_SIZE_N <= ne1) {
+        device float *C = dst + BLOCK_SIZE_M * r0 + 32 * (sgitg&1) \
+                          + (BLOCK_SIZE_N * r1 + 16 * (sgitg>>1)) * ne0 + im*ne1*ne0;
+        for (int i = 0; i < 8; i++) {
+            simdgroup_store(c_res[i], C + 8 * (i%4) + 8 * ne0 * (i/4), ne0);
+        }
+    } else {
+        // block is smaller than 64x32, we should avoid writing data outside of the matrix
+        threadgroup_barrier(mem_flags::mem_threadgroup);
+        threadgroup float *temp_str = ((threadgroup float *)shared_memory) \
+                                      + 32 * (sgitg&1) + (16 * (sgitg>>1)) * BLOCK_SIZE_M;
+        for (int i = 0; i < 8; i++) {
+            simdgroup_store(c_res[i], temp_str + 8 * (i%4) + 8 * BLOCK_SIZE_M * (i/4), BLOCK_SIZE_M);
+        }
+
+        threadgroup_barrier(mem_flags::mem_threadgroup);
+        device float *C = dst + BLOCK_SIZE_M * r0 + (BLOCK_SIZE_N * r1) * ne0 + im*ne1*ne0;
+        if (sgitg==0) {
+            for (int i = 0; i < n_rows; i++) {
+                for (int j = tiitg; j< n_cols; j += BLOCK_SIZE_N) {
+                    *(C + i + j * ne0) = *(temp_str + i + j * BLOCK_SIZE_M);
+                }
+            }
+        }
+    }
+}
+
+#if QK_K == 256
+#define QK_NL 16
+#else
+#define QK_NL 4
+#endif
+
+typedef void (get_rows_t)(device const void *, device const int *, device float *, constant int64_t &, \
+                          constant uint64_t &, constant uint64_t &, uint, uint, uint);
+
+template [[host_name("kernel_get_rows_f16")]]  kernel get_rows_t kernel_get_rows<half4x4,    1, dequantize_f16>;
+template [[host_name("kernel_get_rows_q4_0")]] kernel get_rows_t kernel_get_rows<block_q4_0, 2, dequantize_q4_0>;
+template [[host_name("kernel_get_rows_q4_1")]] kernel get_rows_t kernel_get_rows<block_q4_1, 2, dequantize_q4_1>;
+template [[host_name("kernel_get_rows_q8_0")]] kernel get_rows_t kernel_get_rows<block_q8_0, 2, dequantize_q8_0>;
+template [[host_name("kernel_get_rows_q2_K")]] kernel get_rows_t kernel_get_rows<block_q2_K, QK_NL, dequantize_q2_K>;
+template [[host_name("kernel_get_rows_q3_K")]] kernel get_rows_t kernel_get_rows<block_q3_K, QK_NL, dequantize_q3_K>;
+template [[host_name("kernel_get_rows_q4_K")]] kernel get_rows_t kernel_get_rows<block_q4_K, QK_NL, dequantize_q4_K>;
+template [[host_name("kernel_get_rows_q5_K")]] kernel get_rows_t kernel_get_rows<block_q5_K, QK_NL, dequantize_q5_K>;
+template [[host_name("kernel_get_rows_q6_K")]] kernel get_rows_t kernel_get_rows<block_q6_K, QK_NL, dequantize_q6_K>;
+
+typedef void (mat_mm_t)(device const uchar *, device const float *, device float *, constant int64_t &,\
+                             constant int64_t &, constant int64_t &, constant int64_t &, constant int64_t &, \
+                             constant int64_t &, constant int64_t &, constant uint &, threadgroup uchar *, uint3, uint, uint);
+
+template [[host_name("kernel_mul_mm_f16_f32")]]  kernel mat_mm_t kernel_mul_mm<half4x4,    1, dequantize_f16>;
+template [[host_name("kernel_mul_mm_q4_0_f32")]] kernel mat_mm_t kernel_mul_mm<block_q4_0, 2, dequantize_q4_0>;
+template [[host_name("kernel_mul_mm_q4_1_f32")]] kernel mat_mm_t kernel_mul_mm<block_q4_1, 2, dequantize_q4_1>;
+template [[host_name("kernel_mul_mm_q8_0_f32")]] kernel mat_mm_t kernel_mul_mm<block_q8_0, 2, dequantize_q8_0>;
+template [[host_name("kernel_mul_mm_q2_K_f32")]] kernel mat_mm_t kernel_mul_mm<block_q2_K, QK_NL, dequantize_q2_K>;
+template [[host_name("kernel_mul_mm_q3_K_f32")]] kernel mat_mm_t kernel_mul_mm<block_q3_K, QK_NL, dequantize_q3_K>;
+template [[host_name("kernel_mul_mm_q4_K_f32")]] kernel mat_mm_t kernel_mul_mm<block_q4_K, QK_NL, dequantize_q4_K>;
+template [[host_name("kernel_mul_mm_q5_K_f32")]] kernel mat_mm_t kernel_mul_mm<block_q5_K, QK_NL, dequantize_q5_K>;
+template [[host_name("kernel_mul_mm_q6_K_f32")]] kernel mat_mm_t kernel_mul_mm<block_q6_K, QK_NL, dequantize_q6_K>;
index 7927d227009669f4bacde5e39cc6f29c2ab15f19..eb214a836489b04a4e3d6b9c6444ab30570edb89 100644 (file)
@@ -656,10 +656,14 @@ __kernel void dequantize_mul_mat_vec_q6_K(__global const struct block_q6_K * xx,
 \n#if K_QUANTS_PER_ITERATION == 1\n
     const int l0 = K_QUANTS_PER_ITERATION*in;            // 0...15
     const int is = 0;
+
 \n#else\n
+
     const int l0 = 4 * in;                               // 0, 4, 8, ..., 28
     const int is = in / 4;
+
 \n#endif\n
+
     const int ql_offset = 64*im + l0;
     const int qh_offset = 32*im + l0;
     const int s_offset  =  8*im + is;
@@ -1376,7 +1380,7 @@ static void ggml_cl_mul_f32(const ggml_tensor * src0, const ggml_tensor * src1,
     const int64_t ne00 = src0->ne[0];
     const int64_t ne01 = src0->ne[1];
     const int64_t ne02 = src0->ne[2];
-    const int64_t ne03 = src0->ne[2];
+    const int64_t ne03 = src0->ne[3];
     const int64_t ne0 = ne00 * ne01 * ne02 * ne03;
     const int64_t ne10 = src1->ne[0];
     const int64_t ne11 = src1->ne[1];
diff --git a/ggml.c b/ggml.c
index c3d51bbd36d3aa5f52a6e8b63c41644e1ee95d12..ecbc724b508c23e1b67379cf2b779befd6247232 100644 (file)
--- a/ggml.c
+++ b/ggml.c
 #include <float.h>
 #include <limits.h>
 #include <stdarg.h>
+#include <signal.h>
 
 #ifdef GGML_USE_METAL
 #include <unistd.h>
 #endif
 
+// static_assert should be a #define, but if it's not,
+// fall back to the _Static_assert C11 keyword.
 // if C99 - static_assert is noop
 // ref: https://stackoverflow.com/a/53923785/4039976
 #ifndef static_assert
+#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201100L)
+#define static_assert(cond, msg) _Static_assert(cond, msg)
+#else
 #define static_assert(cond, msg) struct global_scope_noop_trick
 #endif
+#endif
 
 #if defined(_MSC_VER)
 // disable "possible loss of data" to avoid hundreds of casts
 typedef volatile LONG atomic_int;
 typedef atomic_int atomic_bool;
 
-static void atomic_store(atomic_int* ptr, LONG val) {
+static void atomic_store(atomic_int * ptr, LONG val) {
     InterlockedExchange(ptr, val);
 }
-static LONG atomic_load(atomic_int* ptr) {
+static LONG atomic_load(atomic_int * ptr) {
     return InterlockedCompareExchange(ptr, 0, 0);
 }
-static LONG atomic_fetch_add(atomic_int* ptr, LONG inc) {
+static LONG atomic_fetch_add(atomic_int * ptr, LONG inc) {
     return InterlockedExchangeAdd(ptr, inc);
 }
-static LONG atomic_fetch_sub(atomic_int* ptr, LONG dec) {
+static LONG atomic_fetch_sub(atomic_int * ptr, LONG dec) {
     return atomic_fetch_add(ptr, -(dec));
 }
 
 typedef HANDLE pthread_t;
 
 typedef DWORD thread_ret_t;
-static int pthread_create(pthread_t* out, void* unused, thread_ret_t(*func)(void*), void* arg) {
+static int pthread_create(pthread_t * out, void * unused, thread_ret_t(*func)(void *), void * arg) {
     (void) unused;
     HANDLE handle = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) func, arg, 0, NULL);
     if (handle == NULL)
@@ -77,7 +84,7 @@ static int pthread_create(pthread_t* out, void* unused, thread_ret_t(*func)(void
     return 0;
 }
 
-static int pthread_join(pthread_t thread, void* unused) {
+static int pthread_join(pthread_t thread, void * unused) {
     (void) unused;
     return (int) WaitForSingleObject(thread, INFINITE);
 }
@@ -90,7 +97,7 @@ static int sched_yield (void) {
 #include <pthread.h>
 #include <stdatomic.h>
 
-typedef void* thread_ret_t;
+typedef void * thread_ret_t;
 
 #include <sys/types.h>
 #include <sys/stat.h>
@@ -111,10 +118,6 @@ typedef void* thread_ret_t;
 #endif
 #endif
 
-#ifdef __HAIKU__
-#define static_assert(cond, msg) _Static_assert(cond, msg)
-#endif
-
 /*#define GGML_PERF*/
 #define GGML_DEBUG 0
 #define GGML_GELU_FP16
@@ -154,12 +157,6 @@ typedef void* thread_ret_t;
 //#define GGML_SOFT_MAX_ACCELERATE
 #endif
 
-#if UINTPTR_MAX == 0xFFFFFFFF
-    #define GGML_MEM_ALIGN 4
-#else
-    #define GGML_MEM_ALIGN 16
-#endif
-
 //
 // logging
 //
@@ -192,8 +189,8 @@ typedef void* thread_ret_t;
 #define GGML_ALIGNED_MALLOC(size)  _aligned_malloc(size, GGML_MEM_ALIGN)
 #define GGML_ALIGNED_FREE(ptr)     _aligned_free(ptr)
 #else
-inline static void* ggml_aligned_malloc(size_t size) {
-    void* aligned_memory = NULL;
+inline static void * ggml_aligned_malloc(size_t size) {
+    void * aligned_memory = NULL;
 #ifdef GGML_USE_METAL
     int result = posix_memalign(&aligned_memory, getpagesize(), size);
 #else
@@ -210,8 +207,7 @@ inline static void* ggml_aligned_malloc(size_t size) {
                 error_desc = "insufficient memory";
                 break;
         }
-        GGML_PRINT("%s: %s (attempted to allocate %6.2f MB)\n",
-            __func__, error_desc, size/(1024.0*1024.0));
+        GGML_PRINT("%s: %s (attempted to allocate %6.2f MB)\n", __func__, error_desc, size/(1024.0*1024.0));
         return NULL;
     }
     return aligned_memory;
@@ -247,7 +243,11 @@ inline static void* ggml_aligned_malloc(size_t size) {
 #include "ggml-opencl.h"
 #endif
 #elif defined(GGML_USE_OPENBLAS)
+#if defined(GGML_BLAS_USE_MKL)
+#include <mkl.h>
+#else
 #include <cblas.h>
+#endif
 #elif defined(GGML_USE_CUBLAS)
 #include "ggml-cuda.h"
 #elif defined(GGML_USE_CLBLAST)
@@ -293,11 +293,13 @@ typedef double ggml_float;
 #include <intrin.h>
 #else
 #if defined(__AVX__) || defined(__AVX2__) || defined(__AVX512F__) || defined(__SSSE3__) || defined(__SSE3__)
+#if !defined(__riscv)
 #include <immintrin.h>
 #endif
 #endif
 #endif
 #endif
+#endif
 
 #ifdef __F16C__
 
@@ -481,14 +483,14 @@ ggml_fp16_t ggml_fp32_to_fp16(float x) {
     return GGML_FP32_TO_FP16(x);
 }
 
-void ggml_fp16_to_fp32_row(const ggml_fp16_t * x, float * y, size_t n) {
-    for (size_t i = 0; i < n; i++) {
+void ggml_fp16_to_fp32_row(const ggml_fp16_t * x, float * y, int n) {
+    for (int i = 0; i < n; i++) {
         y[i] = GGML_FP16_TO_FP32(x[i]);
     }
 }
 
-void ggml_fp32_to_fp16_row(const float * x, ggml_fp16_t * y, size_t n) {
-    size_t i = 0;
+void ggml_fp32_to_fp16_row(const float * x, ggml_fp16_t * y, int n) {
+    int i = 0;
 #if defined(__F16C__)
     for (; i + 7 < n; i += 8) {
         __m256 x_vec = _mm256_loadu_ps(x + i);
@@ -1292,6 +1294,7 @@ static void quantize_row_q8_0(const float * restrict x, void * restrict vy, int
 #endif
     }
 #else
+    (void)nb;
     // scalar
     quantize_row_q8_0_reference(x, y, k);
 #endif
@@ -1510,6 +1513,7 @@ static void quantize_row_q8_1(const float * restrict x, void * restrict vy, int
 #endif
     }
 #else
+    (void)nb;
     // scalar
     quantize_row_q8_1_reference(x, y, k);
 #endif
@@ -1627,109 +1631,186 @@ static void dequantize_row_q8_0(const void * restrict vx, float * restrict y, in
     }
 }
 
+static void ggml_vec_dot_f32(const int n, float * restrict s, const float * restrict x, const float * restrict y);
+static void ggml_vec_dot_f16(const int n, float * restrict s, ggml_fp16_t * restrict x, ggml_fp16_t * restrict y);
 static void ggml_vec_dot_q4_0_q8_0(const int n, float * restrict s, const void * restrict vx, const void * restrict vy);
 static void ggml_vec_dot_q4_1_q8_1(const int n, float * restrict s, const void * restrict vx, const void * restrict vy);
 static void ggml_vec_dot_q5_0_q8_0(const int n, float * restrict s, const void * restrict vx, const void * restrict vy);
 static void ggml_vec_dot_q5_1_q8_1(const int n, float * restrict s, const void * restrict vx, const void * restrict vy);
 static void ggml_vec_dot_q8_0_q8_0(const int n, float * restrict s, const void * restrict vx, const void * restrict vy);
 
-static const quantize_fns_t quantize_fns[GGML_TYPE_COUNT] = {
+static const ggml_type_traits_t type_traits[GGML_TYPE_COUNT] = {
+    [GGML_TYPE_I8] = {
+        .type_name                = "i8",
+        .blck_size                = 1,
+        .type_size                = sizeof(int8_t),
+        .is_quantized             = false,
+    },
+    [GGML_TYPE_I16] = {
+        .type_name                = "i16",
+        .blck_size                = 1,
+        .type_size                = sizeof(int16_t),
+        .is_quantized             = false,
+    },
+    [GGML_TYPE_I32] = {
+        .type_name                = "i32",
+        .blck_size                = 1,
+        .type_size                = sizeof(int32_t),
+        .is_quantized             = false,
+    },
+    [GGML_TYPE_F32] = {
+        .type_name                = "f32",
+        .blck_size                = 1,
+        .type_size                = sizeof(float),
+        .is_quantized             = false,
+        .vec_dot                  = (ggml_vec_dot_t) ggml_vec_dot_f32,
+        .vec_dot_type             = GGML_TYPE_F32,
+    },
+    [GGML_TYPE_F16] = {
+        .type_name                = "f16",
+        .blck_size                = 1,
+        .type_size                = sizeof(ggml_fp16_t),
+        .is_quantized             = false,
+        .to_float                 = (ggml_to_float_t) ggml_fp16_to_fp32_row,
+        .from_float               = (ggml_from_float_t) ggml_fp32_to_fp16_row,
+        .from_float_reference     = (ggml_from_float_t) ggml_fp32_to_fp16_row,
+        .vec_dot                  = (ggml_vec_dot_t) ggml_vec_dot_f16,
+        .vec_dot_type             = GGML_TYPE_F16,
+    },
     [GGML_TYPE_Q4_0] = {
-        .dequantize_row_q         = (dequantize_row_q_t) dequantize_row_q4_0,
-        .quantize_row_q           = quantize_row_q4_0,
-        .quantize_row_q_reference = (quantize_row_q_t) quantize_row_q4_0_reference,
-        .quantize_row_q_dot       = quantize_row_q8_0,
-        .vec_dot_q                = ggml_vec_dot_q4_0_q8_0,
+        .type_name                = "q4_0",
+        .blck_size                = QK4_0,
+        .type_size                = sizeof(block_q4_0),
+        .is_quantized             = true,
+        .to_float                 = (ggml_to_float_t) dequantize_row_q4_0,
+        .from_float               = quantize_row_q4_0,
+        .from_float_reference     = (ggml_from_float_t) quantize_row_q4_0_reference,
+        .vec_dot                  = ggml_vec_dot_q4_0_q8_0,
         .vec_dot_type             = GGML_TYPE_Q8_0,
     },
     [GGML_TYPE_Q4_1] = {
-        .dequantize_row_q         = (dequantize_row_q_t)dequantize_row_q4_1,
-        .quantize_row_q           = quantize_row_q4_1,
-        .quantize_row_q_reference = (quantize_row_q_t) quantize_row_q4_1_reference,
-        .quantize_row_q_dot       = quantize_row_q8_1,
-        .vec_dot_q                = ggml_vec_dot_q4_1_q8_1,
+        .type_name                = "q4_1",
+        .blck_size                = QK4_1,
+        .type_size                = sizeof(block_q4_1),
+        .is_quantized             = true,
+        .to_float                 = (ggml_to_float_t) dequantize_row_q4_1,
+        .from_float               = quantize_row_q4_1,
+        .from_float_reference     = (ggml_from_float_t) quantize_row_q4_1_reference,
+        .vec_dot                  = ggml_vec_dot_q4_1_q8_1,
         .vec_dot_type             = GGML_TYPE_Q8_1,
     },
     [GGML_TYPE_Q5_0] = {
-        .dequantize_row_q         = (dequantize_row_q_t) dequantize_row_q5_0,
-        .quantize_row_q           = quantize_row_q5_0,
-        .quantize_row_q_reference = (quantize_row_q_t) quantize_row_q5_0_reference,
-        .quantize_row_q_dot       = quantize_row_q8_0,
-        .vec_dot_q                = ggml_vec_dot_q5_0_q8_0,
+        .type_name                = "q5_0",
+        .blck_size                = QK5_0,
+        .type_size                = sizeof(block_q5_0),
+        .is_quantized             = true,
+        .to_float                 = (ggml_to_float_t) dequantize_row_q5_0,
+        .from_float               = quantize_row_q5_0,
+        .from_float_reference     = (ggml_from_float_t) quantize_row_q5_0_reference,
+        .vec_dot                  = ggml_vec_dot_q5_0_q8_0,
         .vec_dot_type             = GGML_TYPE_Q8_0,
     },
     [GGML_TYPE_Q5_1] = {
-        .dequantize_row_q         = (dequantize_row_q_t) dequantize_row_q5_1,
-        .quantize_row_q           = quantize_row_q5_1,
-        .quantize_row_q_reference = (quantize_row_q_t) quantize_row_q5_1_reference,
-        .quantize_row_q_dot       = quantize_row_q8_1,
-        .vec_dot_q                = ggml_vec_dot_q5_1_q8_1,
+        .type_name                = "q5_1",
+        .blck_size                = QK5_1,
+        .type_size                = sizeof(block_q5_1),
+        .is_quantized             = true,
+        .to_float                 = (ggml_to_float_t) dequantize_row_q5_1,
+        .from_float               = quantize_row_q5_1,
+        .from_float_reference     = (ggml_from_float_t) quantize_row_q5_1_reference,
+        .vec_dot                  = ggml_vec_dot_q5_1_q8_1,
         .vec_dot_type             = GGML_TYPE_Q8_1,
     },
     [GGML_TYPE_Q8_0] = {
-        .dequantize_row_q         = dequantize_row_q8_0,
-        .quantize_row_q           = quantize_row_q8_0,
-        .quantize_row_q_reference = (quantize_row_q_t) quantize_row_q8_0_reference,
-        .quantize_row_q_dot       = quantize_row_q8_0,
-        .vec_dot_q                = ggml_vec_dot_q8_0_q8_0,
+        .type_name                = "q8_0",
+        .blck_size                = QK8_0,
+        .type_size                = sizeof(block_q8_0),
+        .is_quantized             = true,
+        .to_float                 = dequantize_row_q8_0,
+        .from_float               = quantize_row_q8_0,
+        .from_float_reference     = (ggml_from_float_t) quantize_row_q8_0_reference,
+        .vec_dot                  = ggml_vec_dot_q8_0_q8_0,
         .vec_dot_type             = GGML_TYPE_Q8_0,
     },
     [GGML_TYPE_Q8_1] = {
-        .dequantize_row_q         = NULL,   // TODO
-        .quantize_row_q           = quantize_row_q8_1,
-        .quantize_row_q_reference = (quantize_row_q_t) quantize_row_q8_1_reference,
-        .quantize_row_q_dot       = quantize_row_q8_1,
-        .vec_dot_q                = NULL,   // TODO
+        .type_name                = "q8_1",
+        .blck_size                = QK8_1,
+        .type_size                = sizeof(block_q8_1),
+        .is_quantized             = true,
+        .from_float               = quantize_row_q8_1,
+        .from_float_reference     = (ggml_from_float_t) quantize_row_q8_1_reference,
         .vec_dot_type             = GGML_TYPE_Q8_1,
     },
 #ifdef GGML_USE_K_QUANTS
     [GGML_TYPE_Q2_K] = {
-        .dequantize_row_q         = (dequantize_row_q_t) dequantize_row_q2_K,
-        .quantize_row_q           = quantize_row_q2_K,
-        .quantize_row_q_reference = (quantize_row_q_t) quantize_row_q2_K_reference,
-        .quantize_row_q_dot       = quantize_row_q8_K,
-        .vec_dot_q                = ggml_vec_dot_q2_K_q8_K,
+        .type_name                = "q2_K",
+        .blck_size                = QK_K,
+        .type_size                = sizeof(block_q2_K),
+        .is_quantized             = true,
+        .to_float                 = (ggml_to_float_t) dequantize_row_q2_K,
+        .from_float               = quantize_row_q2_K,
+        .from_float_reference     = (ggml_from_float_t) quantize_row_q2_K_reference,
+        .vec_dot                  = ggml_vec_dot_q2_K_q8_K,
         .vec_dot_type             = GGML_TYPE_Q8_K,
     },
     [GGML_TYPE_Q3_K] = {
-        .dequantize_row_q         = (dequantize_row_q_t) dequantize_row_q3_K,
-        .quantize_row_q           = quantize_row_q3_K,
-        .quantize_row_q_reference = (quantize_row_q_t) quantize_row_q3_K_reference,
-        .quantize_row_q_dot       = quantize_row_q8_K,
-        .vec_dot_q                = ggml_vec_dot_q3_K_q8_K,
+        .type_name                = "q3_K",
+        .blck_size                = QK_K,
+        .type_size                = sizeof(block_q3_K),
+        .is_quantized             = true,
+        .to_float                 = (ggml_to_float_t) dequantize_row_q3_K,
+        .from_float               = quantize_row_q3_K,
+        .from_float_reference     = (ggml_from_float_t) quantize_row_q3_K_reference,
+        .vec_dot                  = ggml_vec_dot_q3_K_q8_K,
         .vec_dot_type             = GGML_TYPE_Q8_K,
     },
     [GGML_TYPE_Q4_K] = {
-        .dequantize_row_q         = (dequantize_row_q_t) dequantize_row_q4_K,
-        .quantize_row_q           = quantize_row_q4_K,
-        .quantize_row_q_reference = (quantize_row_q_t) quantize_row_q4_K_reference,
-        .quantize_row_q_dot       = quantize_row_q8_K,
-        .vec_dot_q                = ggml_vec_dot_q4_K_q8_K,
+        .type_name                = "q4_K",
+        .blck_size                = QK_K,
+        .type_size                = sizeof(block_q4_K),
+        .is_quantized             = true,
+        .to_float                 = (ggml_to_float_t) dequantize_row_q4_K,
+        .from_float               = quantize_row_q4_K,
+        .from_float_reference     = (ggml_from_float_t) quantize_row_q4_K_reference,
+        .vec_dot                  = ggml_vec_dot_q4_K_q8_K,
         .vec_dot_type             = GGML_TYPE_Q8_K,
     },
     [GGML_TYPE_Q5_K] = {
-        .dequantize_row_q         = (dequantize_row_q_t) dequantize_row_q5_K,
-        .quantize_row_q           = quantize_row_q5_K,
-        .quantize_row_q_reference = (quantize_row_q_t) quantize_row_q5_K_reference,
-        .quantize_row_q_dot       = quantize_row_q8_K,
-        .vec_dot_q                = ggml_vec_dot_q5_K_q8_K,
+        .type_name                = "q5_K",
+        .blck_size                = QK_K,
+        .type_size                = sizeof(block_q5_K),
+        .is_quantized             = true,
+        .to_float                 = (ggml_to_float_t) dequantize_row_q5_K,
+        .from_float               = quantize_row_q5_K,
+        .from_float_reference     = (ggml_from_float_t) quantize_row_q5_K_reference,
+        .vec_dot                  = ggml_vec_dot_q5_K_q8_K,
         .vec_dot_type             = GGML_TYPE_Q8_K,
     },
     [GGML_TYPE_Q6_K] = {
-        .dequantize_row_q         = (dequantize_row_q_t) dequantize_row_q6_K,
-        .quantize_row_q           = quantize_row_q6_K,
-        .quantize_row_q_reference = (quantize_row_q_t) quantize_row_q6_K_reference,
-        .quantize_row_q_dot       = quantize_row_q8_K,
-        .vec_dot_q                = ggml_vec_dot_q6_K_q8_K,
+        .type_name                = "q6_K",
+        .blck_size                = QK_K,
+        .type_size                = sizeof(block_q6_K),
+        .is_quantized             = true,
+        .to_float                 = (ggml_to_float_t) dequantize_row_q6_K,
+        .from_float               = quantize_row_q6_K,
+        .from_float_reference     = (ggml_from_float_t) quantize_row_q6_K_reference,
+        .vec_dot                  = ggml_vec_dot_q6_K_q8_K,
         .vec_dot_type             = GGML_TYPE_Q8_K,
     },
+    [GGML_TYPE_Q8_K] = {
+        .type_name                = "q8_K",
+        .blck_size                = QK_K,
+        .type_size                = sizeof(block_q8_K),
+        .is_quantized             = true,
+        .from_float               = quantize_row_q8_K,
+    }
 #endif
 };
 
 // For internal test use
-quantize_fns_t ggml_internal_get_quantize_fn(size_t i) {
-    GGML_ASSERT(i < GGML_TYPE_COUNT);
-    return quantize_fns[i];
+ggml_type_traits_t ggml_internal_get_type_traits(enum ggml_type type) {
+    GGML_ASSERT(type < GGML_TYPE_COUNT);
+    return type_traits[type];
 }
 
 
@@ -2275,7 +2356,7 @@ inline static void ggml_vec_neg_f32 (const int n, float * y, const float * x)
 inline static void ggml_vec_mul_f32 (const int n, float * z, const float * x, const float * y) { for (int i = 0; i < n; ++i) z[i]  = x[i]*y[i];   }
 inline static void ggml_vec_div_f32 (const int n, float * z, const float * x, const float * y) { for (int i = 0; i < n; ++i) z[i]  = x[i]/y[i];   }
 
-inline static void ggml_vec_dot_f32(const int n, float * restrict s, const float * restrict x, const float * restrict y) {
+static void ggml_vec_dot_f32(const int n, float * restrict s, const float * restrict x, const float * restrict y) {
 #ifdef GGML_SIMD
     float sumf = 0.0f;
     const int np = (n & ~(GGML_F32_STEP - 1));
@@ -2312,7 +2393,7 @@ inline static void ggml_vec_dot_f32(const int n, float * restrict s, const float
     *s = sumf;
 }
 
-inline static void ggml_vec_dot_f16(const int n, float * restrict s, ggml_fp16_t * restrict x, ggml_fp16_t * restrict y) {
+static void ggml_vec_dot_f16(const int n, float * restrict s, ggml_fp16_t * restrict x, ggml_fp16_t * restrict y) {
     ggml_float sumf = 0.0;
 
 #if defined(GGML_SIMD)
@@ -2353,7 +2434,6 @@ static void ggml_vec_dot_q4_0_q8_0(const int n, float * restrict s, const void *
     const int nb = n / qk;
 
     assert(n % qk == 0);
-    assert(nb % 2 == 0);
 
     const block_q4_0 * restrict x = vx;
     const block_q8_0 * restrict y = vy;
@@ -2362,6 +2442,7 @@ static void ggml_vec_dot_q4_0_q8_0(const int n, float * restrict s, const void *
     float32x4_t sumv0 = vdupq_n_f32(0.0f);
     float32x4_t sumv1 = vdupq_n_f32(0.0f);
 
+    GGML_ASSERT(nb % 2 == 0); // TODO: handle odd nb
     for (int i = 0; i < nb; i += 2) {
         const block_q4_0 * restrict x0 = &x[i + 0];
         const block_q4_0 * restrict x1 = &x[i + 1];
@@ -2540,6 +2621,7 @@ static void ggml_vec_dot_q4_0_q8_0(const int n, float * restrict s, const void *
     }
 
     // Main loop
+    GGML_ASSERT(nb % 2 == 0); // TODO: handle odd nb
     for (int i = 2; i < nb; i+=2) {
         _mm_prefetch(&x[i] + sizeof(block_q4_0), _MM_HINT_T0);
         _mm_prefetch(&y[i] + sizeof(block_q8_0), _MM_HINT_T0);
@@ -2623,7 +2705,6 @@ static void ggml_vec_dot_q4_1_q8_1(const int n, float * restrict s, const void *
     const int nb = n / qk;
 
     assert(n % qk == 0);
-    assert(nb % 2 == 0);
 
     const block_q4_1 * restrict x = vx;
     const block_q8_1 * restrict y = vy;
@@ -2635,6 +2716,7 @@ static void ggml_vec_dot_q4_1_q8_1(const int n, float * restrict s, const void *
 
     float summs = 0;
 
+    GGML_ASSERT(nb % 2 == 0); // TODO: handle odd nb
     for (int i = 0; i < nb; i += 2) {
         const block_q4_1 * restrict x0 = &x[i + 0];
         const block_q4_1 * restrict x1 = &x[i + 1];
@@ -2749,7 +2831,6 @@ static void ggml_vec_dot_q5_0_q8_0(const int n, float * restrict s, const void *
     const int nb = n / qk;
 
     assert(n % qk == 0);
-    assert(nb % 2 == 0);
     assert(qk == QK5_0);
 
     const block_q5_0 * restrict x = vx;
@@ -2765,6 +2846,7 @@ static void ggml_vec_dot_q5_0_q8_0(const int n, float * restrict s, const void *
     uint64_t tmp0[4];
     uint64_t tmp1[4];
 
+    GGML_ASSERT(nb % 2 == 0); // TODO: handle odd nb
     for (int i = 0; i < nb; i += 2) {
         const block_q5_0 * restrict x0 = &x[i];
         const block_q5_0 * restrict x1 = &x[i + 1];
@@ -2989,7 +3071,6 @@ static void ggml_vec_dot_q5_1_q8_1(const int n, float * restrict s, const void *
     const int nb = n / qk;
 
     assert(n % qk == 0);
-    assert(nb % 2 == 0);
     assert(qk == QK5_1);
 
     const block_q5_1 * restrict x = vx;
@@ -3008,6 +3089,7 @@ static void ggml_vec_dot_q5_1_q8_1(const int n, float * restrict s, const void *
     uint64_t tmp0[4];
     uint64_t tmp1[4];
 
+    GGML_ASSERT(nb % 2 == 0); // TODO: handle odd nb
     for (int i = 0; i < nb; i += 2) {
         const block_q5_1 * restrict x0 = &x[i];
         const block_q5_1 * restrict x1 = &x[i + 1];
@@ -3245,7 +3327,6 @@ static void ggml_vec_dot_q8_0_q8_0(const int n, float * restrict s, const void *
     const int nb = n / qk;
 
     assert(n % qk == 0);
-    assert(nb % 2 == 0);
 
     const block_q8_0 * restrict x = vx;
     const block_q8_0 * restrict y = vy;
@@ -3254,6 +3335,7 @@ static void ggml_vec_dot_q8_0_q8_0(const int n, float * restrict s, const void *
     float32x4_t sumv0 = vdupq_n_f32(0.0f);
     float32x4_t sumv1 = vdupq_n_f32(0.0f);
 
+    GGML_ASSERT(nb % 2 == 0); // TODO: handle odd nb
     for (int i = 0; i < nb; i += 2) {
         const block_q8_0 * restrict x0 = &x[i + 0];
         const block_q8_0 * restrict x1 = &x[i + 1];
@@ -3430,7 +3512,9 @@ inline static void ggml_vec_mad_f32(const int n, float * restrict y, const float
 
 //inline static void ggml_vec_scale_f32(const int n, float * y, const float   v) { for (int i = 0; i < n; ++i) y[i] *= v;          }
 inline static void ggml_vec_scale_f32(const int n, float * y, const float   v) {
-#if defined(GGML_SIMD)
+#if defined(GGML_USE_ACCELERATE)
+    vDSP_vsmul(y, 1, &v, y, 1, n);
+#elif defined(GGML_SIMD)
     const int np = (n & ~(GGML_F32_STEP - 1));
 
     GGML_F32_VEC vx = GGML_F32_VEC_SET1(v);
@@ -3469,9 +3553,9 @@ inline static void ggml_vec_tanh_f32 (const int n, float * y, const float * x) {
 inline static void ggml_vec_elu_f32  (const int n, float * y, const float * x) { for (int i = 0; i < n; ++i) y[i] = (x[i] > 0.f) ? x[i] : expf(x[i])-1; }
 inline static void ggml_vec_relu_f32 (const int n, float * y, const float * x) { for (int i = 0; i < n; ++i) y[i] = (x[i] > 0.f) ? x[i] : 0.f; }
 
-static const float GELU_COEF_A    = 0.044715f;
-static const float GELU_QUICK_COEF    = -1.702f;
-static const float SQRT_2_OVER_PI = 0.79788456080286535587989211986876f;
+static const float GELU_COEF_A     = 0.044715f;
+static const float GELU_QUICK_COEF = -1.702f;
+static const float SQRT_2_OVER_PI  = 0.79788456080286535587989211986876f;
 
 inline static float ggml_gelu_f32(float x) {
     return 0.5f*x*(1.0f + tanhf(SQRT_2_OVER_PI*x*(1.0f + GELU_COEF_A*x*x)));
@@ -3593,7 +3677,7 @@ inline static void ggml_vec_sum_f32(const int n, float * s, const float * x) {
 #endif
 }
 
-inline static void ggml_vec_sum_ggf(const int n, ggml_float * s, const float * x) {
+inline static void ggml_vec_sum_f32_ggf(const int n, ggml_float * s, const float * x) {
     ggml_float sum = 0.0;
     for (int i = 0; i < n; ++i) {
         sum += (ggml_float)x[i];
@@ -3601,6 +3685,14 @@ inline static void ggml_vec_sum_ggf(const int n, ggml_float * s, const float * x
     *s = sum;
 }
 
+inline static void ggml_vec_sum_f16_ggf(const int n, float * s, const ggml_fp16_t * x) {
+    float sum = 0.0f;
+    for (int i = 0; i < n; ++i) {
+        sum += GGML_FP16_TO_FP32(x[i]);
+    }
+    *s = sum;
+}
+
 inline static void ggml_vec_max_f32(const int n, float * s, const float * x) {
 #ifndef GGML_USE_ACCELERATE
     float max = -INFINITY;
@@ -3632,95 +3724,6 @@ inline static void ggml_vec_argmax_f32(const int n, int * s, const float * x) {
 // data types
 //
 
-static const int GGML_BLCK_SIZE[GGML_TYPE_COUNT] = {
-    [GGML_TYPE_F32]  = 1,
-    [GGML_TYPE_F16]  = 1,
-    [GGML_TYPE_Q4_0] = QK4_0,
-    [GGML_TYPE_Q4_1] = QK4_1,
-    [GGML_TYPE_Q5_0] = QK5_0,
-    [GGML_TYPE_Q5_1] = QK5_1,
-    [GGML_TYPE_Q8_0] = QK8_0,
-    [GGML_TYPE_Q8_1] = QK8_1,
-#ifdef GGML_USE_K_QUANTS
-    [GGML_TYPE_Q2_K] = QK_K,
-    [GGML_TYPE_Q3_K] = QK_K,
-    [GGML_TYPE_Q4_K] = QK_K,
-    [GGML_TYPE_Q5_K] = QK_K,
-    [GGML_TYPE_Q6_K] = QK_K,
-    [GGML_TYPE_Q8_K] = QK_K,
-#endif
-    [GGML_TYPE_I8]   = 1,
-    [GGML_TYPE_I16]  = 1,
-    [GGML_TYPE_I32]  = 1,
-};
-static_assert(GGML_TYPE_COUNT == 19, "GGML_BLCK_SIZE is outdated");
-
-static const size_t GGML_TYPE_SIZE[GGML_TYPE_COUNT] = {
-    [GGML_TYPE_F32]  = sizeof(float),
-    [GGML_TYPE_F16]  = sizeof(ggml_fp16_t),
-    [GGML_TYPE_Q4_0] = sizeof(block_q4_0),
-    [GGML_TYPE_Q4_1] = sizeof(block_q4_1),
-    [GGML_TYPE_Q5_0] = sizeof(block_q5_0),
-    [GGML_TYPE_Q5_1] = sizeof(block_q5_1),
-    [GGML_TYPE_Q8_0] = sizeof(block_q8_0),
-    [GGML_TYPE_Q8_1] = sizeof(block_q8_1),
-#ifdef GGML_USE_K_QUANTS
-    [GGML_TYPE_Q2_K] = sizeof(block_q2_K),
-    [GGML_TYPE_Q3_K] = sizeof(block_q3_K),
-    [GGML_TYPE_Q4_K] = sizeof(block_q4_K),
-    [GGML_TYPE_Q5_K] = sizeof(block_q5_K),
-    [GGML_TYPE_Q6_K] = sizeof(block_q6_K),
-    [GGML_TYPE_Q8_K] = sizeof(block_q8_K),
-#endif
-    [GGML_TYPE_I8]   = sizeof(int8_t),
-    [GGML_TYPE_I16]  = sizeof(int16_t),
-    [GGML_TYPE_I32]  = sizeof(int32_t),
-};
-static_assert(GGML_TYPE_COUNT == 19, "GGML_TYPE_SIZE is outdated");
-
-
-static const char * GGML_TYPE_NAME[GGML_TYPE_COUNT] = {
-    [GGML_TYPE_F32]  = "f32",
-    [GGML_TYPE_F16]  = "f16",
-    [GGML_TYPE_Q4_0] = "q4_0",
-    [GGML_TYPE_Q4_1] = "q4_1",
-    [GGML_TYPE_Q5_0] = "q5_0",
-    [GGML_TYPE_Q5_1] = "q5_1",
-    [GGML_TYPE_Q8_0] = "q8_0",
-    [GGML_TYPE_Q8_1] = "q8_1",
-    [GGML_TYPE_Q2_K] = "q2_K",
-    [GGML_TYPE_Q3_K] = "q3_K",
-    [GGML_TYPE_Q4_K] = "q4_K",
-    [GGML_TYPE_Q5_K] = "q5_K",
-    [GGML_TYPE_Q6_K] = "q6_K",
-    [GGML_TYPE_Q8_K] = "q8_K",
-    [GGML_TYPE_I8]   = "i8",
-    [GGML_TYPE_I16]  = "i16",
-    [GGML_TYPE_I32]  = "i32",
-};
-static_assert(GGML_TYPE_COUNT == 19, "GGML_TYPE_NAME is outdated");
-
-static bool GGML_IS_QUANTIZED[GGML_TYPE_COUNT] = {
-    [GGML_TYPE_F32]  = false,
-    [GGML_TYPE_F16]  = false,
-    [GGML_TYPE_Q4_0] = true,
-    [GGML_TYPE_Q4_1] = true,
-    [GGML_TYPE_Q5_0] = true,
-    [GGML_TYPE_Q5_1] = true,
-    [GGML_TYPE_Q8_0] = true,
-    [GGML_TYPE_Q8_1] = true,
-    [GGML_TYPE_Q2_K] = true,
-    [GGML_TYPE_Q3_K] = true,
-    [GGML_TYPE_Q4_K] = true,
-    [GGML_TYPE_Q5_K] = true,
-    [GGML_TYPE_Q6_K] = true,
-    [GGML_TYPE_Q8_K] = true,
-    [GGML_TYPE_I8]   = false,
-    [GGML_TYPE_I16]  = false,
-    [GGML_TYPE_I32]  = false,
-};
-static_assert(GGML_TYPE_COUNT == 19, "GGML_IS_QUANTIZED is outdated");
-
 static const char * GGML_OP_NAME[GGML_OP_COUNT] = {
     "NONE",
 
@@ -3740,20 +3743,12 @@ static const char * GGML_OP_NAME[GGML_OP_COUNT] = {
     "ARGMAX",
     "REPEAT",
     "REPEAT_BACK",
-    "ABS",
-    "SGN",
-    "NEG",
-    "STEP",
-    "TANH",
-    "ELU",
-    "RELU",
-    "GELU",
-    "GELU_QUICK",
-    "SILU",
+    "CONCAT",
     "SILU_BACK",
     "NORM",
     "RMS_NORM",
     "RMS_NORM_BACK",
+    "GROUP_NORM",
 
     "MUL_MAT",
     "OUT_PROD",
@@ -3779,16 +3774,28 @@ static const char * GGML_OP_NAME[GGML_OP_COUNT] = {
     "CLAMP",
     "CONV_1D",
     "CONV_2D",
+    "CONV_TRANSPOSE_2D",
+    "POOL_1D",
+    "POOL_2D",
+    "UPSCALE",
 
     "FLASH_ATTN",
     "FLASH_FF",
     "FLASH_ATTN_BACK",
     "WIN_PART",
     "WIN_UNPART",
+    "GET_REL_POS",
+    "ADD_REL_POS",
+
+    "UNARY",
 
     "MAP_UNARY",
     "MAP_BINARY",
 
+    "MAP_CUSTOM1_F32",
+    "MAP_CUSTOM2_F32",
+    "MAP_CUSTOM3_F32",
+
     "MAP_CUSTOM1",
     "MAP_CUSTOM2",
     "MAP_CUSTOM3",
@@ -3797,7 +3804,7 @@ static const char * GGML_OP_NAME[GGML_OP_COUNT] = {
     "CROSS_ENTROPY_LOSS_BACK",
 };
 
-static_assert(GGML_OP_COUNT == 66, "GGML_OP_COUNT != 66");
+static_assert(GGML_OP_COUNT == 68, "GGML_OP_COUNT != 68");
 
 static const char * GGML_OP_SYMBOL[GGML_OP_COUNT] = {
     "none",
@@ -3818,20 +3825,12 @@ static const char * GGML_OP_SYMBOL[GGML_OP_COUNT] = {
     "argmax(x)",
     "repeat(x)",
     "repeat_back(x)",
-    "abs(x)",
-    "sgn(x)",
-    "-x",
-    "step(x)",
-    "tanh(x)",
-    "elu(x)",
-    "relu(x)",
-    "gelu(x)",
-    "gelu_quick(x)",
-    "silu(x)",
+    "concat(x, y)",
     "silu_back(x)",
     "norm(x)",
     "rms_norm(x)",
     "rms_norm_back(x)",
+    "group_norm(x)",
 
     "X*Y",
     "X*Y",
@@ -3857,16 +3856,28 @@ static const char * GGML_OP_SYMBOL[GGML_OP_COUNT] = {
     "clamp(x)",
     "conv_1d(x)",
     "conv_2d(x)",
+    "conv_transpose_2d(x)",
+    "pool_1d(x)",
+    "pool_2d(x)",
+    "upscale(x)",
 
     "flash_attn(x)",
     "flash_ff(x)",
     "flash_attn_back(x)",
     "win_part(x)",
     "win_unpart(x)",
+    "get_rel_pos(x)",
+    "add_rel_pos(x)",
+
+    "unary(x)",
 
     "f(x)",
     "f(x,y)",
 
+    "custom_f32(x)",
+    "custom_f32(x,y)",
+    "custom_f32(x,y,z)",
+
     "custom(x)",
     "custom(x,y)",
     "custom(x,y,z)",
@@ -3875,7 +3886,9 @@ static const char * GGML_OP_SYMBOL[GGML_OP_COUNT] = {
     "cross_entropy_loss_back(x,y)",
 };
 
-static_assert(GGML_OP_COUNT == 66, "GGML_OP_COUNT != 66");
+static_assert(GGML_OP_COUNT == 68, "GGML_OP_COUNT != 68");
+
+static_assert(GGML_OP_POOL_COUNT == 2, "GGML_OP_POOL_COUNT != 2");
 
 static_assert(sizeof(struct ggml_object)%GGML_MEM_ALIGN == 0, "ggml_object size must be a multiple of GGML_MEM_ALIGN");
 static_assert(sizeof(struct ggml_tensor)%GGML_MEM_ALIGN == 0, "ggml_tensor size must be a multiple of GGML_MEM_ALIGN");
@@ -3903,8 +3916,10 @@ static void ggml_setup_op_has_task_pass(void) {
         p[GGML_OP_DIAG_MASK_ZERO         ] = true;
         p[GGML_OP_CONV_1D                ] = true;
         p[GGML_OP_CONV_2D                ] = true;
+        p[GGML_OP_CONV_TRANSPOSE_2D      ] = true;
         p[GGML_OP_FLASH_ATTN_BACK        ] = true;
         p[GGML_OP_CROSS_ENTROPY_LOSS     ] = true;
+        p[GGML_OP_ADD_REL_POS            ] = true;
     }
 
     {   // FINALIZE
@@ -4061,8 +4076,8 @@ bool ggml_is_numa(void) {
 ////////////////////////////////////////////////////////////////////////////////
 
 void ggml_print_object(const struct ggml_object * obj) {
-    GGML_PRINT(" - ggml_object: offset = %zu, size = %zu, next = %p\n",
-            obj->offs, obj->size, (const void *) obj->next);
+    GGML_PRINT(" - ggml_object: type = %d, offset = %zu, size = %zu, next = %p\n",
+            obj->type, obj->offs, obj->size, (const void *) obj->next);
 }
 
 void ggml_print_objects(const struct ggml_context * ctx) {
@@ -4100,37 +4115,49 @@ size_t ggml_nbytes(const struct ggml_tensor * tensor) {
     //
     // is enough, but just in case, adding the second part
 
-    return MAX(tensor->ne[3]*tensor->nb[3], (ggml_nelements(tensor)*GGML_TYPE_SIZE[tensor->type])/GGML_BLCK_SIZE[tensor->type]);
+    return MAX(tensor->ne[3]*tensor->nb[3], (ggml_nelements(tensor)*ggml_type_size(tensor->type))/ggml_blck_size(tensor->type));
+}
+
+size_t ggml_nbytes_pad(const struct ggml_tensor * tensor) {
+    return GGML_PAD(ggml_nbytes(tensor), GGML_MEM_ALIGN);
 }
 
 size_t ggml_nbytes_split(const struct ggml_tensor * tensor, int nrows_split) {
     static_assert(GGML_MAX_DIMS == 4, "GGML_MAX_DIMS is not 4 - update this function");
 
-    return (nrows_split*tensor->ne[0]*GGML_TYPE_SIZE[tensor->type])/GGML_BLCK_SIZE[tensor->type];
+    return (nrows_split*tensor->ne[0]*ggml_type_size(tensor->type))/ggml_blck_size(tensor->type);
 }
 
 int ggml_blck_size(enum ggml_type type) {
-    return GGML_BLCK_SIZE[type];
+    return type_traits[type].blck_size;
 }
 
 size_t ggml_type_size(enum ggml_type type) {
-    return GGML_TYPE_SIZE[type];
+    return type_traits[type].type_size;
 }
 
 float ggml_type_sizef(enum ggml_type type) {
-    return ((float)(GGML_TYPE_SIZE[type]))/GGML_BLCK_SIZE[type];
+    return ((float)(type_traits[type].type_size))/type_traits[type].blck_size;
 }
 
 const char * ggml_type_name(enum ggml_type type) {
-    return GGML_TYPE_NAME[type];
+    return type_traits[type].type_name;
+}
+
+bool ggml_is_quantized(enum ggml_type type) {
+    return type_traits[type].is_quantized;
 }
 
 const char * ggml_op_name(enum ggml_op op) {
     return GGML_OP_NAME[op];
 }
 
+const char * ggml_op_symbol(enum ggml_op op) {
+    return GGML_OP_SYMBOL[op];
+}
+
 size_t ggml_element_size(const struct ggml_tensor * tensor) {
-    return GGML_TYPE_SIZE[tensor->type];
+    return ggml_type_size(tensor->type);
 }
 
 static inline bool ggml_is_scalar(const struct ggml_tensor * tensor) {
@@ -4154,10 +4181,9 @@ static inline bool ggml_is_matrix(const struct ggml_tensor * tensor) {
 static inline bool ggml_can_mul_mat(const struct ggml_tensor * t0, const struct ggml_tensor * t1) {
     static_assert(GGML_MAX_DIMS == 4, "GGML_MAX_DIMS is not 4 - update this function");
 
-    return
-        (t0->ne[0] == t1->ne[0])  &&
-        (t0->ne[2] == t1->ne[2])  &&
-        (t0->ne[3] == t1->ne[3]);
+    return (t0->ne[0]           == t1->ne[0])  &&
+           (t1->ne[2]%t0->ne[2] == 0)          && // verify t0 is broadcastable
+           (t1->ne[3]%t0->ne[3] == 0);
 }
 
 static inline bool ggml_can_out_prod(const struct ggml_tensor * t0, const struct ggml_tensor * t1) {
@@ -4169,10 +4195,6 @@ static inline bool ggml_can_out_prod(const struct ggml_tensor * t0, const struct
         (t0->ne[3] == t1->ne[3]);
 }
 
-bool ggml_is_quantized(enum ggml_type type) {
-    return GGML_IS_QUANTIZED[type];
-}
-
 enum ggml_type ggml_ftype_to_ggml_type(enum ggml_ftype ftype) {
     enum ggml_type wtype = GGML_TYPE_COUNT;
 
@@ -4199,7 +4221,7 @@ enum ggml_type ggml_ftype_to_ggml_type(enum ggml_ftype ftype) {
 }
 
 size_t ggml_tensor_overhead(void) {
-    return GGML_OBJECT_SIZE + GGML_TENSOR_SIZE + 16;
+    return GGML_OBJECT_SIZE + GGML_TENSOR_SIZE;
 }
 
 bool ggml_is_transposed(const struct ggml_tensor * tensor) {
@@ -4210,8 +4232,17 @@ bool ggml_is_contiguous(const struct ggml_tensor * tensor) {
     static_assert(GGML_MAX_DIMS == 4, "GGML_MAX_DIMS is not 4 - update this function");
 
     return
-        tensor->nb[0] == GGML_TYPE_SIZE[tensor->type] &&
-        tensor->nb[1] == (tensor->nb[0]*tensor->ne[0])/GGML_BLCK_SIZE[tensor->type] &&
+        tensor->nb[0] == ggml_type_size(tensor->type) &&
+        tensor->nb[1] == (tensor->nb[0]*tensor->ne[0])/ggml_blck_size(tensor->type) &&
+        tensor->nb[2] == tensor->nb[1]*tensor->ne[1] &&
+        tensor->nb[3] == tensor->nb[2]*tensor->ne[2];
+}
+
+static inline bool ggml_is_contiguous_except_dim_1(const struct ggml_tensor * tensor) {
+    static_assert(GGML_MAX_DIMS == 4, "GGML_MAX_DIMS is not 4 - update this function");
+
+    return
+        tensor->nb[0] == ggml_type_size(tensor->type) &&
         tensor->nb[2] == tensor->nb[1]*tensor->ne[1] &&
         tensor->nb[3] == tensor->nb[2]*tensor->ne[2];
 }
@@ -4226,12 +4257,12 @@ static inline bool ggml_is_padded_1d(const struct ggml_tensor * tensor) {
     static_assert(GGML_MAX_DIMS == 4, "GGML_MAX_DIMS is not 4 - update this function");
 
     return
-        tensor->nb[0] == GGML_TYPE_SIZE[tensor->type] &&
+        tensor->nb[0] == ggml_type_size(tensor->type) &&
         tensor->nb[2] == tensor->nb[1]*tensor->ne[1] &&
         tensor->nb[3] == tensor->nb[2]*tensor->ne[2];
 }
 
-static inline bool ggml_are_same_shape(const struct ggml_tensor * t0, const struct ggml_tensor * t1) {
+bool ggml_are_same_shape(const struct ggml_tensor * t0, const struct ggml_tensor * t1) {
     static_assert(GGML_MAX_DIMS == 4, "GGML_MAX_DIMS is not 4 - update this function");
 
     return
@@ -4361,7 +4392,7 @@ struct ggml_context * ggml_init(struct ggml_init_params params) {
         return NULL;
     }
 
-    const size_t mem_size = (params.mem_size + GGML_MEM_ALIGN - 1) & ~(GGML_MEM_ALIGN - 1);
+    const size_t mem_size = params.mem_buffer ? params.mem_size : GGML_PAD(params.mem_size, GGML_MEM_ALIGN);
 
     *ctx = (struct ggml_context) {
         /*.mem_size           =*/ mem_size,
@@ -4397,8 +4428,8 @@ void ggml_free(struct ggml_context * ctx) {
         if (&g_state.contexts[i].context == ctx) {
             g_state.contexts[i].used = false;
 
-            GGML_PRINT_DEBUG("%s: context %d with %d objects has been freed. memory used = %zu\n",
-                    __func__, i, ctx->n_objects, ctx->objects_end->offs + ctx->objects_end->size);
+            GGML_PRINT_DEBUG("%s: context %d has been freed. memory used = %zu\n",
+                    __func__, i, ggml_used_mem(ctx));
 
             if (ctx->mem_buffer_owned) {
                 GGML_ALIGNED_FREE(ctx->mem_buffer);
@@ -4428,6 +4459,10 @@ size_t ggml_set_scratch(struct ggml_context * ctx, struct ggml_scratch scratch)
     return result;
 }
 
+bool ggml_get_no_alloc(struct ggml_context * ctx) {
+    return ctx->no_alloc;
+}
+
 void ggml_set_no_alloc(struct ggml_context * ctx, bool no_alloc) {
     ctx->no_alloc = no_alloc;
 }
@@ -4446,12 +4481,14 @@ size_t ggml_get_max_tensor_size(const struct ggml_context * ctx) {
     struct ggml_object * obj = ctx->objects_begin;
 
     while (obj != NULL) {
-        struct ggml_tensor * tensor = (struct ggml_tensor *) ((char *) ctx->mem_buffer + obj->offs);
+        if (obj->type == GGML_OBJECT_TENSOR) {
+            struct ggml_tensor * tensor = (struct ggml_tensor *) ((char *) ctx->mem_buffer + obj->offs);
 
-        const size_t size = ggml_nbytes(tensor);
+            const size_t size = ggml_nbytes(tensor);
 
-        if (max_size < size) {
-            max_size = size;
+            if (max_size < size) {
+                max_size = size;
+            }
         }
 
         obj = obj->next;
@@ -4465,7 +4502,7 @@ size_t ggml_get_max_tensor_size(const struct ggml_context * ctx) {
 // this is an error prone process, but it is necessary to support inplace
 // operators when using scratch buffers
 // TODO: implement a better way
-void ggml_scratch_save(struct ggml_context * ctx) {
+static void ggml_scratch_save(struct ggml_context * ctx) {
     // this is needed to allow opt tensors to store their data
     // TODO: again, need to find a better way
     ctx->no_alloc_save = ctx->no_alloc;
@@ -4475,7 +4512,7 @@ void ggml_scratch_save(struct ggml_context * ctx) {
     ctx->scratch.data = NULL;
 }
 
-void ggml_scratch_load(struct ggml_context * ctx) {
+static void ggml_scratch_load(struct ggml_context * ctx) {
     ctx->no_alloc = ctx->no_alloc_save;
 
     ctx->scratch = ctx->scratch_save;
@@ -4483,12 +4520,7 @@ void ggml_scratch_load(struct ggml_context * ctx) {
 
 ////////////////////////////////////////////////////////////////////////////////
 
-struct ggml_tensor * ggml_new_tensor_impl(
-        struct ggml_context * ctx,
-        enum   ggml_type type,
-        int    n_dims,
-        const int64_t* ne,
-        void*  data) {
+static struct ggml_object * ggml_new_object(struct ggml_context * ctx, enum ggml_object_type type, size_t size) {
     // always insert objects at the end of the context's memory pool
     struct ggml_object * obj_cur = ctx->objects_end;
 
@@ -4496,77 +4528,81 @@ struct ggml_tensor * ggml_new_tensor_impl(
     const size_t cur_size = obj_cur == NULL ? 0 : obj_cur->size;
     const size_t cur_end  = cur_offs + cur_size;
 
-    size_t size_needed = 0;
-
-    if (data == NULL && !ctx->no_alloc) {
-        size_needed += GGML_TYPE_SIZE[type]*(ne[0]/GGML_BLCK_SIZE[type]);
-        for (int i = 1; i < n_dims; i++) {
-            size_needed *= ne[i];
-        }
-        // align to GGML_MEM_ALIGN
-        size_needed = ((size_needed + GGML_MEM_ALIGN - 1)/GGML_MEM_ALIGN)*GGML_MEM_ALIGN;
-    }
+    // align to GGML_MEM_ALIGN
+    size_t size_needed = GGML_PAD(size, GGML_MEM_ALIGN);
 
     char * const mem_buffer = ctx->mem_buffer;
     struct ggml_object * const obj_new = (struct ggml_object *)(mem_buffer + cur_end);
 
-    if (ctx->scratch.data == NULL || data != NULL) {
-        size_needed += GGML_TENSOR_SIZE;
+    if (cur_end + size_needed + GGML_OBJECT_SIZE > ctx->mem_size) {
+        GGML_PRINT("%s: not enough space in the context's memory pool (needed %zu, available %zu)\n",
+                __func__, cur_end + size_needed, ctx->mem_size);
+        assert(false);
+        return NULL;
+    }
+
+    *obj_new = (struct ggml_object) {
+        .offs = cur_end + GGML_OBJECT_SIZE,
+        .size = size_needed,
+        .next = NULL,
+        .type = type,
+    };
 
-        if (cur_end + size_needed + GGML_OBJECT_SIZE > ctx->mem_size) {
-            GGML_PRINT("%s: not enough space in the context's memory pool (needed %zu, available %zu)\n",
-                    __func__, cur_end + size_needed + GGML_OBJECT_SIZE, ctx->mem_size);
-            assert(false);
-            return NULL;
-        }
+    ggml_assert_aligned(mem_buffer + obj_new->offs);
 
-        *obj_new = (struct ggml_object) {
-            .offs = cur_end + GGML_OBJECT_SIZE,
-            .size = size_needed,
-            .next = NULL,
-        };
+    if (obj_cur != NULL) {
+        obj_cur->next = obj_new;
     } else {
-        if (ctx->scratch.offs + size_needed > ctx->scratch.size) {
-            GGML_PRINT("%s: not enough space in the scratch memory pool (needed %zu, available %zu)\n",
-                    __func__, ctx->scratch.offs + size_needed, ctx->scratch.size);
-            assert(false);
-            return NULL;
+        // this is the first object in this context
+        ctx->objects_begin = obj_new;
+    }
+
+    ctx->objects_end = obj_new;
+
+    //printf("%s: inserted new object at %zu, size = %zu\n", __func__, cur_end, obj_new->size);
+
+    return obj_new;
+}
+
+static struct ggml_tensor * ggml_new_tensor_impl(
+        struct ggml_context * ctx,
+        enum   ggml_type      type,
+        int                   n_dims,
+        const int64_t       * ne,
+        void                * data) {
+
+    assert(n_dims >= 1 && n_dims <= GGML_MAX_DIMS);
+
+    size_t data_size = 0;
+
+    if (data == NULL && !ctx->no_alloc) {
+        data_size += ggml_type_size(type)*(ne[0]/ggml_blck_size(type));
+        for (int i = 1; i < n_dims; i++) {
+            data_size *= ne[i];
         }
+    }
 
-        if (cur_end + GGML_TENSOR_SIZE + GGML_OBJECT_SIZE > ctx->mem_size) {
-            GGML_PRINT("%s: not enough space in the context's memory pool (needed %zu, available %zu)\n",
-                    __func__, cur_end + GGML_TENSOR_SIZE + GGML_OBJECT_SIZE, ctx->mem_size);
+    if (ctx->scratch.data != NULL && data == NULL) {
+        // allocate tensor data in the scratch buffer
+        if (ctx->scratch.offs + data_size > ctx->scratch.size) {
+            GGML_PRINT("%s: not enough space in the scratch memory pool (needed %zu, available %zu)\n",
+                    __func__, ctx->scratch.offs + data_size, ctx->scratch.size);
             assert(false);
             return NULL;
         }
 
         data = (char * const) ctx->scratch.data + ctx->scratch.offs;
 
-        *obj_new = (struct ggml_object) {
-            .offs = cur_end + GGML_OBJECT_SIZE,
-            .size = GGML_TENSOR_SIZE,
-            .next = NULL,
-        };
-
-        //printf("scratch offs = %zu, size_needed = %zu\n", ctx->scratch.offs, size_needed);
-
-        ctx->scratch.offs += size_needed;
-    }
+        ctx->scratch.offs += data_size;
 
-    if (obj_cur != NULL) {
-        obj_cur->next = obj_new;
-    } else {
-        // this is the first object in this context
-        ctx->objects_begin = obj_new;
+        data_size = 0;
     }
 
-    ctx->objects_end = obj_new;
-
-    //printf("%s: inserted new object at %zu, size = %zu\n", __func__, cur_end, obj_new->size);
+    struct ggml_object * const obj_new = ggml_new_object(ctx, GGML_OBJECT_TENSOR, GGML_TENSOR_SIZE + data_size);
 
-    struct ggml_tensor * const result = (struct ggml_tensor *)(mem_buffer + obj_new->offs);
+    // TODO: for recoverable errors, we would need to free the data allocated from the scratch buffer here
 
-    ggml_assert_aligned(result);
+    struct ggml_tensor * const result = (struct ggml_tensor *)((char *)ctx->mem_buffer + obj_new->offs);
 
     *result = (struct ggml_tensor) {
         /*.type         =*/ type,
@@ -4575,19 +4611,17 @@ struct ggml_tensor * ggml_new_tensor_impl(
         /*.ne           =*/ { 1, 1, 1, 1 },
         /*.nb           =*/ { 0, 0, 0, 0 },
         /*.op           =*/ GGML_OP_NONE,
+        /*.op_params    =*/ { 0 },
         /*.is_param     =*/ false,
         /*.grad         =*/ NULL,
-        /*.src0         =*/ NULL,
-        /*.src1         =*/ NULL,
-        /*.opt          =*/ { NULL },
-        /*.n_tasks      =*/ 0,
+        /*.src          =*/ { NULL },
         /*.perf_runs    =*/ 0,
         /*.perf_cycles  =*/ 0,
         /*.perf_time_us =*/ 0,
         /*.data         =*/ (data == NULL && !ctx->no_alloc) ? (void *)(result + 1) : data,
         /*.name         =*/ { 0 },
         /*.extra        =*/ NULL,
-        /*.pad          =*/ { 0 },
+        /*.padding      =*/ { 0 },
     };
 
     // TODO: this should not be needed as long as we don't rely on aligned SIMD loads
@@ -4597,8 +4631,8 @@ struct ggml_tensor * ggml_new_tensor_impl(
         result->ne[i] = ne[i];
     }
 
-    result->nb[0] = GGML_TYPE_SIZE[type];
-    result->nb[1] = result->nb[0]*(result->ne[0]/GGML_BLCK_SIZE[type]);
+    result->nb[0] = ggml_type_size(type);
+    result->nb[1] = result->nb[0]*(result->ne[0]/ggml_blck_size(type));
     for (int i = 2; i < GGML_MAX_DIMS; i++) {
         result->nb[i] = result->nb[i - 1]*result->ne[i - 1];
     }
@@ -4608,24 +4642,40 @@ struct ggml_tensor * ggml_new_tensor_impl(
     return result;
 }
 
+static void ggml_set_op_params(struct ggml_tensor * tensor, const void * params, size_t params_size) {
+    GGML_ASSERT(tensor != NULL); // silence -Warray-bounds warnings
+    assert(params_size <= GGML_MAX_OP_PARAMS);
+    memcpy(tensor->op_params, params, params_size);
+}
+
+static int32_t ggml_get_op_params_i32(const struct ggml_tensor * tensor, uint32_t i) {
+    assert(i < GGML_MAX_OP_PARAMS / sizeof(int32_t));
+    return ((const int32_t *)(tensor->op_params))[i];
+}
+
+static void ggml_set_op_params_i32(struct ggml_tensor * tensor, uint32_t i, int32_t value) {
+    assert(i < GGML_MAX_OP_PARAMS / sizeof(int32_t));
+    ((int32_t *)(tensor->op_params))[i] = value;
+}
+
 struct ggml_tensor * ggml_new_tensor(
         struct ggml_context * ctx,
-        enum   ggml_type type,
-        int    n_dims,
-        const int64_t * ne) {
+        enum   ggml_type      type,
+        int                   n_dims,
+        const int64_t       * ne) {
     return ggml_new_tensor_impl(ctx, type, n_dims, ne, NULL);
 }
 
 struct ggml_tensor * ggml_new_tensor_1d(
         struct ggml_context * ctx,
-        enum   ggml_type type,
+        enum   ggml_type      type,
         int64_t ne0) {
     return ggml_new_tensor(ctx, type, 1, &ne0);
 }
 
 struct ggml_tensor * ggml_new_tensor_2d(
         struct ggml_context * ctx,
-        enum   ggml_type type,
+        enum   ggml_type      type,
         int64_t ne0,
         int64_t ne1) {
     const int64_t ne[2] = { ne0, ne1 };
@@ -4634,7 +4684,7 @@ struct ggml_tensor * ggml_new_tensor_2d(
 
 struct ggml_tensor * ggml_new_tensor_3d(
         struct ggml_context * ctx,
-        enum   ggml_type type,
+        enum   ggml_type      type,
         int64_t ne0,
         int64_t ne1,
         int64_t ne2) {
@@ -4719,7 +4769,7 @@ struct ggml_tensor * ggml_set_i32 (struct ggml_tensor * tensor, int32_t value) {
             {
                 assert(tensor->nb[0] == sizeof(ggml_fp16_t));
                 for (int i = 0; i < n; i++) {
-                    ggml_vec_set_f16(nc, (ggml_fp16_t *)(data + i*n1), value);
+                    ggml_vec_set_f16(nc, (ggml_fp16_t *)(data + i*n1), GGML_FP32_TO_FP16(value));
                 }
             } break;
         case GGML_TYPE_F32:
@@ -4771,7 +4821,7 @@ struct ggml_tensor * ggml_set_f32(struct ggml_tensor * tensor, float value) {
             {
                 assert(tensor->nb[0] == sizeof(ggml_fp16_t));
                 for (int i = 0; i < n; i++) {
-                    ggml_vec_set_f16(nc, (ggml_fp16_t *)(data + i*n1), value);
+                    ggml_vec_set_f16(nc, (ggml_fp16_t *)(data + i*n1), GGML_FP32_TO_FP16(value));
                 }
             } break;
         case GGML_TYPE_F32:
@@ -4939,6 +4989,11 @@ float * ggml_get_data_f32(const struct ggml_tensor * tensor) {
     return (float *)(tensor->data);
 }
 
+enum ggml_unary_op ggml_get_unary_op(const struct ggml_tensor * tensor) {
+    GGML_ASSERT(tensor->op == GGML_OP_UNARY);
+    return (enum ggml_unary_op) ggml_get_op_params_i32(tensor, 0);
+}
+
 const char * ggml_get_name(const struct ggml_tensor * tensor) {
     return tensor->name;
 }
@@ -4984,9 +5039,11 @@ struct ggml_tensor * ggml_get_tensor(struct ggml_context * ctx, const char * nam
     char * const mem_buffer = ctx->mem_buffer;
 
     while (obj != NULL) {
-        struct ggml_tensor * cur = (struct ggml_tensor *)(mem_buffer + obj->offs);
-        if (strcmp(cur->name, name) == 0) {
-            return cur;
+        if (obj->type == GGML_OBJECT_TENSOR) {
+            struct ggml_tensor * cur = (struct ggml_tensor *)(mem_buffer + obj->offs);
+            if (strcmp(cur->name, name) == 0) {
+                return cur;
+            }
         }
 
         obj = obj->next;
@@ -4999,7 +5056,7 @@ struct ggml_tensor * ggml_get_tensor(struct ggml_context * ctx, const char * nam
 
 // ggml_dup
 
-struct ggml_tensor * ggml_dup_impl(
+static struct ggml_tensor * ggml_dup_impl(
         struct ggml_context * ctx,
         struct ggml_tensor * a,
         bool inplace) {
@@ -5013,8 +5070,7 @@ struct ggml_tensor * ggml_dup_impl(
 
     result->op   = GGML_OP_DUP;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = NULL;
+    result->src[0] = a;
 
     return result;
 }
@@ -5033,16 +5089,20 @@ struct ggml_tensor * ggml_dup_inplace(
 
 // ggml_add
 
-struct ggml_tensor * ggml_add_impl(
+static struct ggml_tensor * ggml_add_impl(
         struct ggml_context * ctx,
         struct ggml_tensor * a,
         struct ggml_tensor * b,
         bool inplace) {
-    GGML_ASSERT(ggml_are_same_shape(a, b));
+    // TODO: support less-strict constraint
+    //       GGML_ASSERT(ggml_can_repeat(b, a));
+    GGML_ASSERT(ggml_can_repeat_rows(b, a));
 
     bool is_node = false;
 
-    if (a->grad || b->grad) {
+    if (!inplace && (a->grad || b->grad)) {
+        // TODO: support backward pass for broadcasting
+        GGML_ASSERT(ggml_are_same_shape(a, b));
         is_node = true;
     }
 
@@ -5050,8 +5110,8 @@ struct ggml_tensor * ggml_add_impl(
 
     result->op   = GGML_OP_ADD;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = b;
+    result->src[0] = a;
+    result->src[1] = b;
 
     return result;
 }
@@ -5072,7 +5132,7 @@ struct ggml_tensor * ggml_add_inplace(
 
 // ggml_add1
 
-struct ggml_tensor * ggml_add1_impl(
+static struct ggml_tensor * ggml_add1_impl(
         struct ggml_context * ctx,
         struct ggml_tensor * a,
         struct ggml_tensor * b,
@@ -5090,8 +5150,8 @@ struct ggml_tensor * ggml_add1_impl(
 
     result->op   = GGML_OP_ADD1;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = b;
+    result->src[0] = a;
+    result->src[1] = b;
 
     return result;
 }
@@ -5112,7 +5172,7 @@ struct ggml_tensor * ggml_add1_inplace(
 
 // ggml_acc
 
-struct ggml_tensor * ggml_acc_impl(
+static struct ggml_tensor * ggml_acc_impl(
         struct ggml_context * ctx,
         struct ggml_tensor * a,
         struct ggml_tensor * b,
@@ -5134,23 +5194,13 @@ struct ggml_tensor * ggml_acc_impl(
 
     struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a);
 
-    ggml_scratch_save(ctx);
-
-    struct ggml_tensor * c = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, 5);
-
-    ((int32_t *) c->data)[0] = nb1;
-    ((int32_t *) c->data)[1] = nb2;
-    ((int32_t *) c->data)[2] = nb3;
-    ((int32_t *) c->data)[3] = offset;
-    ((int32_t *) c->data)[4] = inplace ? 1 : 0;
-
-    ggml_scratch_load(ctx);
+    int32_t params[] = { nb1, nb2, nb3, offset, inplace ? 1 : 0 };
+    ggml_set_op_params(result, params, sizeof(params));
 
     result->op   = GGML_OP_ACC;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = b;
-    result->opt[0] = c;
+    result->src[0] = a;
+    result->src[1] = b;
 
     return result;
 }
@@ -5179,7 +5229,7 @@ struct ggml_tensor * ggml_acc_inplace(
 
 // ggml_sub
 
-struct ggml_tensor * ggml_sub_impl(
+static struct ggml_tensor * ggml_sub_impl(
         struct ggml_context * ctx,
         struct ggml_tensor * a,
         struct ggml_tensor * b,
@@ -5196,8 +5246,8 @@ struct ggml_tensor * ggml_sub_impl(
 
     result->op   = GGML_OP_SUB;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = b;
+    result->src[0] = a;
+    result->src[1] = b;
 
     return result;
 }
@@ -5218,7 +5268,7 @@ struct ggml_tensor * ggml_sub_inplace(
 
 // ggml_mul
 
-struct ggml_tensor * ggml_mul_impl(
+static struct ggml_tensor * ggml_mul_impl(
         struct ggml_context * ctx,
         struct ggml_tensor * a,
         struct ggml_tensor * b,
@@ -5243,8 +5293,8 @@ struct ggml_tensor * ggml_mul_impl(
 
     result->op   = GGML_OP_MUL;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = b;
+    result->src[0] = a;
+    result->src[1] = b;
 
     return result;
 }
@@ -5265,7 +5315,7 @@ struct ggml_tensor * ggml_mul_inplace(
 
 // ggml_div
 
-struct ggml_tensor * ggml_div_impl(
+static struct ggml_tensor * ggml_div_impl(
         struct ggml_context * ctx,
         struct ggml_tensor * a,
         struct ggml_tensor * b,
@@ -5286,8 +5336,8 @@ struct ggml_tensor * ggml_div_impl(
 
     result->op   = GGML_OP_DIV;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = b;
+    result->src[0] = a;
+    result->src[1] = b;
 
     return result;
 }
@@ -5308,7 +5358,7 @@ struct ggml_tensor * ggml_div_inplace(
 
 // ggml_sqr
 
-struct ggml_tensor * ggml_sqr_impl(
+static struct ggml_tensor * ggml_sqr_impl(
         struct ggml_context * ctx,
         struct ggml_tensor * a,
         bool inplace) {
@@ -5322,8 +5372,7 @@ struct ggml_tensor * ggml_sqr_impl(
 
     result->op   = GGML_OP_SQR;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = NULL;
+    result->src[0] = a;
 
     return result;
 }
@@ -5342,7 +5391,7 @@ struct ggml_tensor * ggml_sqr_inplace(
 
 // ggml_sqrt
 
-struct ggml_tensor * ggml_sqrt_impl(
+static struct ggml_tensor * ggml_sqrt_impl(
         struct ggml_context * ctx,
         struct ggml_tensor * a,
         bool inplace) {
@@ -5356,8 +5405,7 @@ struct ggml_tensor * ggml_sqrt_impl(
 
     result->op   = GGML_OP_SQRT;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = NULL;
+    result->src[0] = a;
 
     return result;
 }
@@ -5377,7 +5425,7 @@ struct ggml_tensor * ggml_sqrt_inplace(
 
 // ggml_log
 
-struct ggml_tensor * ggml_log_impl(
+static struct ggml_tensor * ggml_log_impl(
         struct ggml_context * ctx,
         struct ggml_tensor  * a,
         bool inplace) {
@@ -5391,8 +5439,7 @@ struct ggml_tensor * ggml_log_impl(
 
     result->op   = GGML_OP_LOG;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = NULL;
+    result->src[0] = a;
 
     return result;
 }
@@ -5424,8 +5471,7 @@ struct ggml_tensor * ggml_sum(
 
     result->op   = GGML_OP_SUM;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = NULL;
+    result->src[0] = a;
 
     return result;
 }
@@ -5451,8 +5497,7 @@ struct ggml_tensor * ggml_sum_rows(
 
     result->op   = GGML_OP_SUM_ROWS;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = NULL;
+    result->src[0] = a;
 
     return result;
 }
@@ -5474,8 +5519,7 @@ struct ggml_tensor * ggml_mean(
 
     result->op   = GGML_OP_MEAN;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = NULL;
+    result->src[0] = a;
 
     return result;
 }
@@ -5498,8 +5542,7 @@ struct ggml_tensor * ggml_argmax(
 
     result->op   = GGML_OP_ARGMAX;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = NULL;
+    result->src[0] = a;
 
     return result;
 }
@@ -5518,16 +5561,12 @@ struct ggml_tensor * ggml_repeat(
         is_node = true;
     }
 
-    if (ggml_are_same_shape(a, b) && !is_node) {
-        return a;
-    }
-
     struct ggml_tensor * result = ggml_new_tensor(ctx, a->type, b->n_dims, b->ne);
 
     result->op   = GGML_OP_REPEAT;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = b;
+    result->src[0] = a;
+    result->src[1] = b;
 
     return result;
 }
@@ -5554,351 +5593,174 @@ struct ggml_tensor * ggml_repeat_back(
 
     result->op   = GGML_OP_REPEAT_BACK;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = b;
+    result->src[0] = a;
+    result->src[1] = b;
 
     return result;
 }
 
-// ggml_abs
+// ggml_concat
+
+struct ggml_tensor* ggml_concat(
+    struct ggml_context* ctx,
+    struct ggml_tensor* a,
+    struct ggml_tensor* b) {
+    GGML_ASSERT(a->ne[0] == b->ne[0] && a->ne[1] == b->ne[1] && a->ne[3] == b->ne[3]);
 
-struct ggml_tensor * ggml_abs_impl(
-        struct ggml_context * ctx,
-        struct ggml_tensor * a,
-        bool inplace) {
     bool is_node = false;
 
-    if (!inplace && (a->grad)) {
+    if (a->grad || b->grad) {
         is_node = true;
     }
 
-    struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a);
+    struct ggml_tensor * result = ggml_new_tensor_4d(ctx, a->type, a->ne[0], a->ne[1], a->ne[2] + b->ne[2], a->ne[3]);
 
-    result->op   = GGML_OP_ABS;
+    result->op = GGML_OP_CONCAT;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = NULL;
+    result->src[0] = a;
+    result->src[1] = b;
 
     return result;
 }
 
+// ggml_abs
+
 struct ggml_tensor * ggml_abs(
         struct ggml_context * ctx,
         struct ggml_tensor  * a) {
-    return ggml_abs_impl(ctx, a, false);
+    return ggml_unary(ctx, a, GGML_UNARY_OP_ABS);
 }
 
 struct ggml_tensor * ggml_abs_inplace(
         struct ggml_context * ctx,
         struct ggml_tensor  * a) {
-    return ggml_abs_impl(ctx, a, true);
+    return ggml_unary_inplace(ctx, a, GGML_UNARY_OP_ABS);
 }
 
-
 // ggml_sgn
 
-struct ggml_tensor * ggml_sgn_impl(
-        struct ggml_context * ctx,
-        struct ggml_tensor * a,
-        bool inplace) {
-    bool is_node = false;
-
-    if (!inplace && (a->grad)) {
-        is_node = true;
-    }
-
-    struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a);
-
-    result->op   = GGML_OP_SGN;
-    result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = NULL;
-
-    return result;
-}
-
 struct ggml_tensor * ggml_sgn(
         struct ggml_context * ctx,
         struct ggml_tensor  * a) {
-    return ggml_sgn_impl(ctx, a, false);
+    return ggml_unary(ctx, a, GGML_UNARY_OP_SGN);
 }
 
 struct ggml_tensor * ggml_sgn_inplace(
         struct ggml_context * ctx,
         struct ggml_tensor  * a) {
-    return ggml_sgn_impl(ctx, a, true);
+    return ggml_unary_inplace(ctx, a, GGML_UNARY_OP_SGN);
 }
 
 // ggml_neg
 
-struct ggml_tensor * ggml_neg_impl(
-        struct ggml_context * ctx,
-        struct ggml_tensor * a,
-        bool inplace) {
-    bool is_node = false;
-
-    if (!inplace && (a->grad)) {
-        is_node = true;
-    }
-
-    struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a);
-
-    result->op   = GGML_OP_NEG;
-    result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = NULL;
-
-    return result;
-}
-
 struct ggml_tensor * ggml_neg(
         struct ggml_context * ctx,
         struct ggml_tensor  * a) {
-    return ggml_neg_impl(ctx, a, false);
+    return ggml_unary(ctx, a, GGML_UNARY_OP_NEG);
 }
 
 struct ggml_tensor * ggml_neg_inplace(
         struct ggml_context * ctx,
         struct ggml_tensor  * a) {
-    return ggml_neg_impl(ctx, a, true);
+    return ggml_unary_inplace(ctx, a, GGML_UNARY_OP_NEG);
 }
 
 // ggml_step
 
-struct ggml_tensor * ggml_step_impl(
-        struct ggml_context * ctx,
-        struct ggml_tensor * a,
-        bool inplace) {
-    bool is_node = false;
-
-    if (!inplace && (a->grad)) {
-        is_node = true;
-    }
-
-    struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a);
-
-    result->op   = GGML_OP_STEP;
-    result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = NULL;
-
-    return result;
-}
-
 struct ggml_tensor * ggml_step(
         struct ggml_context * ctx,
         struct ggml_tensor  * a) {
-    return ggml_step_impl(ctx, a, false);
+    return ggml_unary(ctx, a, GGML_UNARY_OP_STEP);
 }
 
 struct ggml_tensor * ggml_step_inplace(
         struct ggml_context * ctx,
         struct ggml_tensor  * a) {
-    return ggml_step_impl(ctx, a, true);
+    return ggml_unary_inplace(ctx, a, GGML_UNARY_OP_STEP);
 }
 
 // ggml_tanh
 
-struct ggml_tensor * ggml_tanh_impl(
-        struct ggml_context * ctx,
-        struct ggml_tensor * a,
-        bool inplace) {
-    bool is_node = false;
-
-    if (!inplace && (a->grad)) {
-        is_node = true;
-    }
-
-    struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a);
-
-    result->op   = GGML_OP_TANH;
-    result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = NULL;
-
-    return result;
-}
-
 struct ggml_tensor * ggml_tanh(
         struct ggml_context * ctx,
         struct ggml_tensor  * a) {
-    return ggml_tanh_impl(ctx, a, false);
+    return ggml_unary(ctx, a, GGML_UNARY_OP_TANH);
 }
 
 struct ggml_tensor * ggml_tanh_inplace(
         struct ggml_context * ctx,
         struct ggml_tensor  * a) {
-    return ggml_tanh_impl(ctx, a, true);
+    return ggml_unary_inplace(ctx, a, GGML_UNARY_OP_TANH);
 }
 
 // ggml_elu
 
-struct ggml_tensor * ggml_elu_impl(
-        struct ggml_context * ctx,
-        struct ggml_tensor * a,
-        bool inplace) {
-    bool is_node = false;
-
-    if (!inplace && (a->grad)) {
-        is_node = true;
-    }
-
-    struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a);
-
-    result->op   = GGML_OP_ELU;
-    result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = NULL;
-
-    return result;
-}
-
 struct ggml_tensor * ggml_elu(
     struct ggml_context * ctx,
     struct ggml_tensor  * a) {
-    return ggml_elu_impl(ctx, a, false);
+    return ggml_unary(ctx, a, GGML_UNARY_OP_ELU);
 }
 
 struct ggml_tensor * ggml_elu_inplace(
     struct ggml_context * ctx,
     struct ggml_tensor  * a) {
-    return ggml_elu_impl(ctx, a, true);
+    return ggml_unary_inplace(ctx, a, GGML_UNARY_OP_ELU);
 }
 
 // ggml_relu
 
-struct ggml_tensor * ggml_relu_impl(
-        struct ggml_context * ctx,
-        struct ggml_tensor * a,
-        bool inplace) {
-    bool is_node = false;
-
-    if (!inplace && (a->grad)) {
-        is_node = true;
-    }
-
-    struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a);
-
-    result->op   = GGML_OP_RELU;
-    result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = NULL;
-
-    return result;
-}
-
 struct ggml_tensor * ggml_relu(
         struct ggml_context * ctx,
         struct ggml_tensor  * a) {
-    return ggml_relu_impl(ctx, a, false);
+    return ggml_unary(ctx, a, GGML_UNARY_OP_RELU);
 }
 
 struct ggml_tensor * ggml_relu_inplace(
         struct ggml_context * ctx,
         struct ggml_tensor  * a) {
-    return ggml_relu_impl(ctx, a, true);
+    return ggml_unary_inplace(ctx, a, GGML_UNARY_OP_RELU);
 }
 
 // ggml_gelu
 
-struct ggml_tensor * ggml_gelu_impl(
-        struct ggml_context * ctx,
-        struct ggml_tensor * a,
-        bool inplace) {
-    bool is_node = false;
-
-    if (!inplace && (a->grad)) {
-        is_node = true;
-    }
-
-    struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a);
-
-    result->op   = GGML_OP_GELU;
-    result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = NULL;
-
-    return result;
-}
-
-struct ggml_tensor * ggml_gelu(
+struct ggml_tensor * ggml_gelu(
         struct ggml_context * ctx,
         struct ggml_tensor  * a) {
-    return ggml_gelu_impl(ctx, a, false);
+    return ggml_unary(ctx, a, GGML_UNARY_OP_GELU);
 }
 
 struct ggml_tensor * ggml_gelu_inplace(
         struct ggml_context * ctx,
         struct ggml_tensor  * a) {
-    return ggml_gelu_impl(ctx, a, true);
+    return ggml_unary_inplace(ctx, a, GGML_UNARY_OP_GELU);
 }
 
 // ggml_gelu_quick
 
-struct ggml_tensor * ggml_gelu_quick_impl(
-        struct ggml_context * ctx,
-        struct ggml_tensor * a,
-        bool inplace) {
-    bool is_node = false;
-
-    if (!inplace && (a->grad)) {
-        is_node = true;
-    }
-
-    struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a);
-
-    result->op   = GGML_OP_GELU_QUICK;
-    result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = NULL;
-
-    return result;
-}
-
 struct ggml_tensor * ggml_gelu_quick(
         struct ggml_context * ctx,
         struct ggml_tensor  * a) {
-    return ggml_gelu_quick_impl(ctx, a, false);
+    return ggml_unary(ctx, a, GGML_UNARY_OP_GELU_QUICK);
 }
 
 struct ggml_tensor * ggml_gelu_quick_inplace(
         struct ggml_context * ctx,
         struct ggml_tensor  * a) {
-    return ggml_gelu_quick_impl(ctx, a, true);
+    return ggml_unary_inplace(ctx, a, GGML_UNARY_OP_GELU_QUICK);
 }
 
 // ggml_silu
 
-struct ggml_tensor * ggml_silu_impl(
-        struct ggml_context * ctx,
-        struct ggml_tensor * a,
-        bool inplace) {
-    bool is_node = false;
-
-    if (!inplace && (a->grad)) {
-        is_node = true;
-    }
-
-    struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a);
-
-    result->op   = GGML_OP_SILU;
-    result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = NULL;
-
-    return result;
-}
-
 struct ggml_tensor * ggml_silu(
         struct ggml_context * ctx,
         struct ggml_tensor  * a) {
-    return ggml_silu_impl(ctx, a, false);
+    return ggml_unary(ctx, a, GGML_UNARY_OP_SILU);
 }
 
 struct ggml_tensor * ggml_silu_inplace(
         struct ggml_context * ctx,
         struct ggml_tensor  * a) {
-    return ggml_silu_impl(ctx, a, true);
+    return ggml_unary_inplace(ctx, a, GGML_UNARY_OP_SILU);
 }
 
 // ggml_silu_back
@@ -5918,17 +5780,18 @@ struct ggml_tensor * ggml_silu_back(
 
     result->op   = GGML_OP_SILU_BACK;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = b;
+    result->src[0] = a;
+    result->src[1] = b;
 
     return result;
 }
 
 // ggml_norm
 
-struct ggml_tensor * ggml_norm_impl(
+static struct ggml_tensor * ggml_norm_impl(
         struct ggml_context * ctx,
         struct ggml_tensor  * a,
+        float eps,
         bool inplace) {
     bool is_node = false;
 
@@ -5939,29 +5802,35 @@ struct ggml_tensor * ggml_norm_impl(
 
     struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a);
 
+    ggml_set_op_params(result, &eps, sizeof(eps));
+
     result->op   = GGML_OP_NORM;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = NULL; // TODO: maybe store epsilon here?
+    result->src[0] = a;
 
     return result;
 }
 
 struct ggml_tensor * ggml_norm(
         struct ggml_context * ctx,
-        struct ggml_tensor  * a) {
-    return ggml_norm_impl(ctx, a, false);
+        struct ggml_tensor  * a,
+        float eps) {
+    return ggml_norm_impl(ctx, a, eps, false);
 }
 
 struct ggml_tensor * ggml_norm_inplace(
         struct ggml_context * ctx,
-        struct ggml_tensor  * a) {
-    return ggml_norm_impl(ctx, a, true);
+        struct ggml_tensor  * a,
+        float eps) {
+    return ggml_norm_impl(ctx, a, eps, true);
 }
 
-struct ggml_tensor * ggml_rms_norm_impl(
+// ggml_rms_norm
+
+static struct ggml_tensor * ggml_rms_norm_impl(
         struct ggml_context * ctx,
         struct ggml_tensor  * a,
+        float eps,
         bool inplace) {
     bool is_node = false;
 
@@ -5971,26 +5840,31 @@ struct ggml_tensor * ggml_rms_norm_impl(
 
     struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a);
 
+    ggml_set_op_params(result, &eps, sizeof(eps));
+
     result->op   = GGML_OP_RMS_NORM;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = NULL; // TODO: maybe store epsilon here?
+    result->src[0] = a;
 
     return result;
 }
 
 struct ggml_tensor * ggml_rms_norm(
         struct ggml_context * ctx,
-        struct ggml_tensor  * a) {
-    return ggml_rms_norm_impl(ctx, a, false);
+        struct ggml_tensor  * a,
+        float  eps) {
+    return ggml_rms_norm_impl(ctx, a, eps, false);
 }
 
 struct ggml_tensor * ggml_rms_norm_inplace(
         struct ggml_context * ctx,
-        struct ggml_tensor  * a) {
-    return ggml_rms_norm_impl(ctx, a, true);
+        struct ggml_tensor  * a,
+        float eps) {
+    return ggml_rms_norm_impl(ctx, a, eps, true);
 }
 
+// ggml_rms_norm_back
+
 struct ggml_tensor * ggml_rms_norm_back(
         struct ggml_context * ctx,
         struct ggml_tensor  * a,
@@ -6006,12 +5880,50 @@ struct ggml_tensor * ggml_rms_norm_back(
 
     result->op   = GGML_OP_RMS_NORM_BACK;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = b;
+    result->src[0] = a;
+    result->src[1] = b;
+
+    return result;
+}
+
+// ggml_group_norm
+
+static struct ggml_tensor * ggml_group_norm_impl(
+    struct ggml_context * ctx,
+    struct ggml_tensor * a,
+    int n_groups,
+    bool inplace) {
+
+    bool is_node = false;
+    if (!inplace && (a->grad)) {
+        GGML_ASSERT(false); // TODO: implement backward
+        is_node = true;
+    }
+
+    struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a);
+
+    result->op = GGML_OP_GROUP_NORM;
+    result->op_params[0] = n_groups;
+    result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
+    result->src[0] = a;
+    result->src[1] = NULL; // TODO: maybe store epsilon here?
 
     return result;
 }
 
+struct ggml_tensor * ggml_group_norm(
+    struct ggml_context * ctx,
+    struct ggml_tensor * a,
+    int n_groups) {
+    return ggml_group_norm_impl(ctx, a, n_groups, false);
+}
+
+struct ggml_tensor * ggml_group_norm_inplace(
+    struct ggml_context * ctx,
+    struct ggml_tensor * a,
+    int n_groups) {
+    return ggml_group_norm_impl(ctx, a, n_groups, true);
+}
 
 // ggml_mul_mat
 
@@ -6028,13 +5940,13 @@ struct ggml_tensor * ggml_mul_mat(
         is_node = true;
     }
 
-    const int64_t ne[4] = { a->ne[1], b->ne[1], a->ne[2], b->ne[3] };
-    struct ggml_tensor * result = ggml_new_tensor(ctx, GGML_TYPE_F32, MIN(a->n_dims, b->n_dims), ne);
+    const int64_t ne[4] = { a->ne[1], b->ne[1], b->ne[2], b->ne[3] };
+    struct ggml_tensor * result = ggml_new_tensor(ctx, GGML_TYPE_F32, MAX(a->n_dims, b->n_dims), ne);
 
     result->op   = GGML_OP_MUL_MAT;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = b;
+    result->src[0] = a;
+    result->src[1] = b;
 
     return result;
 }
@@ -6059,15 +5971,15 @@ struct ggml_tensor * ggml_out_prod(
 
     result->op   = GGML_OP_OUT_PROD;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = b;
+    result->src[0] = a;
+    result->src[1] = b;
 
     return result;
 }
 
 // ggml_scale
 
-struct ggml_tensor * ggml_scale_impl(
+static struct ggml_tensor * ggml_scale_impl(
         struct ggml_context * ctx,
         struct ggml_tensor  * a,
         struct ggml_tensor  * b,
@@ -6085,8 +5997,8 @@ struct ggml_tensor * ggml_scale_impl(
 
     result->op   = GGML_OP_SCALE;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = b;
+    result->src[0] = a;
+    result->src[1] = b;
 
     return result;
 }
@@ -6107,7 +6019,7 @@ struct ggml_tensor * ggml_scale_inplace(
 
 // ggml_set
 
-struct ggml_tensor * ggml_set_impl(
+static struct ggml_tensor * ggml_set_impl(
         struct ggml_context * ctx,
         struct ggml_tensor  * a,
         struct ggml_tensor  * b,
@@ -6127,23 +6039,13 @@ struct ggml_tensor * ggml_set_impl(
     // make a view of the destination
     struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a);
 
-    ggml_scratch_save(ctx);
-
-    struct ggml_tensor * c = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, 5);
-
-    (( int32_t * ) c->data)[0] = nb1;
-    (( int32_t * ) c->data)[1] = nb2;
-    (( int32_t * ) c->data)[2] = nb3;
-    (( int32_t * ) c->data)[3] = offset;
-    (( int32_t * ) c->data)[4] = inplace ? 1 : 0;
-
-    ggml_scratch_load(ctx);
+    int32_t params[] = { nb1, nb2, nb3, offset, inplace ? 1 : 0 };
+    ggml_set_op_params(result, params, sizeof(params));
 
     result->op   = GGML_OP_SET;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = b;
-    result->opt[0] = c;
+    result->src[0] = a;
+    result->src[1] = b;
 
     return result;
 }
@@ -6207,7 +6109,7 @@ struct ggml_tensor * ggml_set_2d_inplace(
 
 // ggml_cpy
 
-struct ggml_tensor * ggml_cpy_impl(
+static struct ggml_tensor * ggml_cpy_impl(
         struct ggml_context * ctx,
         struct ggml_tensor  * a,
         struct ggml_tensor  * b,
@@ -6230,8 +6132,8 @@ struct ggml_tensor * ggml_cpy_impl(
 
     result->op   = GGML_OP_CPY;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = b;
+    result->src[0] = a;
+    result->src[1] = b;
 
     return result;
 }
@@ -6252,7 +6154,7 @@ struct ggml_tensor * ggml_cpy_inplace(
 
 // ggml_cont
 
-struct ggml_tensor * ggml_cont_impl(
+static struct ggml_tensor * ggml_cont_impl(
         struct ggml_context * ctx,
         struct ggml_tensor  * a,
         bool inplace) {
@@ -6267,8 +6169,7 @@ struct ggml_tensor * ggml_cont_impl(
 
     result->op   = GGML_OP_CONT;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = NULL;
+    result->src[0] = a;
 
     return result;
 }
@@ -6311,8 +6212,7 @@ struct ggml_tensor * ggml_reshape(
 
     result->op   = GGML_OP_RESHAPE;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = NULL;
+    result->src[0] = a;
 
     return result;
 }
@@ -6336,8 +6236,7 @@ struct ggml_tensor * ggml_reshape_1d(
 
     result->op   = GGML_OP_RESHAPE;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = NULL;
+    result->src[0] = a;
 
     return result;
 }
@@ -6362,8 +6261,7 @@ struct ggml_tensor * ggml_reshape_2d(
 
     result->op   = GGML_OP_RESHAPE;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = NULL;
+    result->src[0] = a;
 
     return result;
 }
@@ -6389,8 +6287,7 @@ struct ggml_tensor * ggml_reshape_3d(
 
     result->op   = GGML_OP_RESHAPE;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = NULL;
+    result->src[0] = a;
 
     return result;
 }
@@ -6418,14 +6315,34 @@ struct ggml_tensor * ggml_reshape_4d(
 
     result->op   = GGML_OP_RESHAPE;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = NULL;
+    result->src[0] = a;
 
     return result;
 }
 
 // ggml_view_1d
 
+static struct ggml_tensor * ggml_view_tensor_offset(
+        struct ggml_context * ctx,
+        struct ggml_tensor  * a,
+        int                   n_dims,
+        const int64_t       * ne,
+        size_t                offset) {
+    // don't calculate an offset from an unallocated tensor
+    void * data = NULL;
+    if (a->data != NULL) {
+        data = (char *) a->data + offset;
+    }
+
+    struct ggml_tensor * result = ggml_new_tensor_impl(ctx, a->type, n_dims, ne, data);
+
+    ggml_format_name(result, "%s (view)", a->name);
+
+    ggml_set_op_params(result, &offset, sizeof(offset));
+
+    return result;
+}
+
 struct ggml_tensor * ggml_view_1d(
         struct ggml_context * ctx,
         struct ggml_tensor  * a,
@@ -6438,22 +6355,11 @@ struct ggml_tensor * ggml_view_1d(
         is_node = true;
     }
 
-    struct ggml_tensor * result = ggml_new_tensor_impl(ctx, a->type, 1, &ne0, (char *) a->data + offset);
-    ggml_format_name(result, "%s (view)", a->name);
-
-    ggml_scratch_save(ctx);
-
-    struct ggml_tensor * offs = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, 2);
-    ggml_set_name(offs, "offset");
-    memcpy(offs->data, &offset, 2*sizeof(int32_t));
-
-    ggml_scratch_load(ctx);
+    struct ggml_tensor * result = ggml_view_tensor_offset(ctx, a, 1, &ne0, offset);
 
     result->op   = GGML_OP_VIEW;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = NULL;
-    result->opt[0] = offs;
+    result->src[0] = a;
 
     return result;
 }
@@ -6476,16 +6382,7 @@ struct ggml_tensor * ggml_view_2d(
 
     const int64_t ne[GGML_MAX_DIMS] = { ne0, ne1, 1, 1 };
 
-    struct ggml_tensor * result = ggml_new_tensor_impl(ctx, a->type, 2, ne, (char *) a->data + offset);
-    ggml_format_name(result, "%s (view)", a->name);
-
-    ggml_scratch_save(ctx);
-
-    struct ggml_tensor * offs = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, 2);
-    ggml_set_name(offs, "offset");
-    memcpy(offs->data, &offset, 2*sizeof(int32_t));
-
-    ggml_scratch_load(ctx);
+    struct ggml_tensor * result = ggml_view_tensor_offset(ctx, a, 2, ne, offset);
 
     result->nb[1] = nb1;
     result->nb[2] = result->nb[1]*ne1;
@@ -6493,9 +6390,7 @@ struct ggml_tensor * ggml_view_2d(
 
     result->op   = GGML_OP_VIEW;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = NULL;
-    result->opt[0] = offs;
+    result->src[0] = a;
 
     return result;
 }
@@ -6520,16 +6415,7 @@ struct ggml_tensor * ggml_view_3d(
 
     const int64_t ne[GGML_MAX_DIMS] = { ne0, ne1, ne2, 1 };
 
-    struct ggml_tensor * result = ggml_new_tensor_impl(ctx, a->type, 3, ne, (char *) a->data + offset);
-    ggml_format_name(result, "%s (view)", a->name);
-
-    ggml_scratch_save(ctx);
-
-    struct ggml_tensor * offs = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, 2);
-    ggml_set_name(offs, "offset");
-    memcpy(offs->data, &offset, 2*sizeof(int32_t));
-
-    ggml_scratch_load(ctx);
+    struct ggml_tensor * result = ggml_view_tensor_offset(ctx, a, 3, ne, offset);
 
     result->nb[1] = nb1;
     result->nb[2] = nb2;
@@ -6537,9 +6423,7 @@ struct ggml_tensor * ggml_view_3d(
 
     result->op   = GGML_OP_VIEW;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = NULL;
-    result->opt[0] = offs;
+    result->src[0] = a;
 
     return result;
 }
@@ -6566,16 +6450,7 @@ struct ggml_tensor * ggml_view_4d(
 
     const int64_t ne[GGML_MAX_DIMS] = { ne0, ne1, ne2, ne3 };
 
-    struct ggml_tensor * result = ggml_new_tensor_impl(ctx, a->type, 4, ne, (char *) a->data + offset);
-    ggml_format_name(result, "%s (view)", a->name);
-
-    ggml_scratch_save(ctx);
-
-    struct ggml_tensor * offs = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, 2);
-    ggml_set_name(offs, "offset");
-    memcpy(offs->data, &offset, 2*sizeof(int32_t));
-
-    ggml_scratch_load(ctx);
+    struct ggml_tensor * result = ggml_view_tensor_offset(ctx, a, 4, ne, offset);
 
     result->nb[1] = nb1;
     result->nb[2] = nb2;
@@ -6583,9 +6458,7 @@ struct ggml_tensor * ggml_view_4d(
 
     result->op   = GGML_OP_VIEW;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = NULL;
-    result->opt[0] = offs;
+    result->src[0] = a;
 
     return result;
 }
@@ -6645,23 +6518,10 @@ struct ggml_tensor * ggml_permute(
 
     result->op   = GGML_OP_PERMUTE;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = NULL;
-
-    if (is_node) {
-        ggml_scratch_save(ctx);
+    result->src[0] = a;
 
-        struct ggml_tensor * b = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, 4);
-
-        ((int32_t *) b->data)[0] = axis0;
-        ((int32_t *) b->data)[1] = axis1;
-        ((int32_t *) b->data)[2] = axis2;
-        ((int32_t *) b->data)[3] = axis3;
-
-        ggml_scratch_load(ctx);
-
-        result->opt[0] = b;
-    }
+    int32_t params[] = { axis0, axis1, axis2, axis3 };
+    ggml_set_op_params(result, params, sizeof(params));
 
     return result;
 }
@@ -6688,8 +6548,7 @@ struct ggml_tensor * ggml_transpose(
 
     result->op   = GGML_OP_TRANSPOSE;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = NULL;
+    result->src[0] = a;
 
     return result;
 }
@@ -6714,8 +6573,8 @@ struct ggml_tensor * ggml_get_rows(
 
     result->op   = GGML_OP_GET_ROWS;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = b;
+    result->src[0] = a;
+    result->src[1] = b;
 
     return result;
 }
@@ -6742,9 +6601,9 @@ struct ggml_tensor * ggml_get_rows_back(
 
     result->op   = GGML_OP_GET_ROWS_BACK;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = b;
-    result->opt[0] = c;
+    result->src[0] = a;
+    result->src[1] = b;
+    result->src[2] = c;
 
     return result;
 }
@@ -6766,8 +6625,7 @@ struct ggml_tensor * ggml_diag(
 
     result->op   = GGML_OP_DIAG;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = NULL;
+    result->src[0] = a;
 
     return result;
 }
@@ -6775,7 +6633,7 @@ struct ggml_tensor * ggml_diag(
 
 // ggml_diag_mask_inf
 
-struct ggml_tensor * ggml_diag_mask_inf_impl(
+static struct ggml_tensor * ggml_diag_mask_inf_impl(
         struct ggml_context * ctx,
         struct ggml_tensor  * a,
         int                   n_past,
@@ -6788,19 +6646,12 @@ struct ggml_tensor * ggml_diag_mask_inf_impl(
 
     struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a);
 
-    ggml_scratch_save(ctx);
-
-    struct ggml_tensor * b = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, 2);
-
-    ((int32_t *) b->data)[0] = n_past;
-    ((int32_t *) b->data)[1] = inplace ? 1 : 0;
-
-    ggml_scratch_load(ctx);
+    int32_t params[] = { n_past, inplace ? 1 : 0 };
+    ggml_set_op_params(result, params, sizeof(params));
 
     result->op   = GGML_OP_DIAG_MASK_INF;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = b;
+    result->src[0] = a;
 
     return result;
 }
@@ -6822,7 +6673,7 @@ struct ggml_tensor * ggml_diag_mask_inf_inplace(
 
 // ggml_diag_mask_zero
 
-struct ggml_tensor * ggml_diag_mask_zero_impl(
+static struct ggml_tensor * ggml_diag_mask_zero_impl(
         struct ggml_context * ctx,
         struct ggml_tensor  * a,
         int                   n_past,
@@ -6835,20 +6686,12 @@ struct ggml_tensor * ggml_diag_mask_zero_impl(
 
     struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a);
 
-    ggml_scratch_save(ctx);
-
-    struct ggml_tensor * b = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, 2);
-    ggml_set_name(b, "n_past, inplace");
-
-    ((int32_t *) b->data)[0] = n_past;
-    ((int32_t *) b->data)[1] = inplace ? 1 : 0;
-
-    ggml_scratch_load(ctx);
+    int32_t params[] = { n_past, inplace ? 1 : 0 };
+    ggml_set_op_params(result, params, sizeof(params));
 
     result->op   = GGML_OP_DIAG_MASK_ZERO;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = b;
+    result->src[0] = a;
 
     return result;
 }
@@ -6869,7 +6712,7 @@ struct ggml_tensor * ggml_diag_mask_zero_inplace(
 
 // ggml_soft_max
 
-struct ggml_tensor * ggml_soft_max_impl(
+static struct ggml_tensor * ggml_soft_max_impl(
         struct ggml_context * ctx,
         struct ggml_tensor  * a,
         bool                  inplace) {
@@ -6883,8 +6726,7 @@ struct ggml_tensor * ggml_soft_max_impl(
 
     result->op   = GGML_OP_SOFT_MAX;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = NULL;
+    result->src[0] = a;
 
     return result;
 }
@@ -6904,7 +6746,7 @@ struct ggml_tensor * ggml_soft_max_inplace(
 
 // ggml_soft_max_back
 
-struct ggml_tensor * ggml_soft_max_back_impl(
+static struct ggml_tensor * ggml_soft_max_back_impl(
         struct ggml_context * ctx,
         struct ggml_tensor  * a,
         struct ggml_tensor  * b,
@@ -6919,8 +6761,8 @@ struct ggml_tensor * ggml_soft_max_back_impl(
 
     result->op   = GGML_OP_SOFT_MAX_BACK;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = b;
+    result->src[0] = a;
+    result->src[1] = b;
 
     return result;
 }
@@ -6941,13 +6783,17 @@ struct ggml_tensor * ggml_soft_max_back_inplace(
 
 // ggml_rope
 
-struct ggml_tensor * ggml_rope_impl(
+static struct ggml_tensor * ggml_rope_impl(
         struct ggml_context * ctx,
         struct ggml_tensor  * a,
         int                   n_past,
         int                   n_dims,
         int                   mode,
         int                   n_ctx,
+        float                 freq_base,
+        float                 freq_scale,
+        float                 xpos_base,
+        bool                  xpos_down,
         bool                  inplace) {
     GGML_ASSERT(n_past >= 0);
     bool is_node = false;
@@ -6958,21 +6804,16 @@ struct ggml_tensor * ggml_rope_impl(
 
     struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a);
 
-    ggml_scratch_save(ctx);
-
-    struct ggml_tensor * b = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, 4);
-
-    ((int32_t *) b->data)[0] = n_past;
-    ((int32_t *) b->data)[1] = n_dims;
-    ((int32_t *) b->data)[2] = mode;
-    ((int32_t *) b->data)[3] = n_ctx;
-
-    ggml_scratch_load(ctx);
+    int32_t params[8] = { n_past, n_dims, mode, n_ctx };
+    memcpy(params + 4, &freq_base,  sizeof(float));
+    memcpy(params + 5, &freq_scale, sizeof(float));
+    memcpy(params + 6, &xpos_base,  sizeof(float));
+    memcpy(params + 7, &xpos_down,  sizeof(bool));
+    ggml_set_op_params(result, params, sizeof(params));
 
     result->op   = GGML_OP_ROPE;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = b;
+    result->src[0] = a;
 
     return result;
 }
@@ -6984,7 +6825,7 @@ struct ggml_tensor * ggml_rope(
         int                   n_dims,
         int                   mode,
         int                   n_ctx) {
-    return ggml_rope_impl(ctx, a, n_past, n_dims, mode, n_ctx, false);
+    return ggml_rope_impl(ctx, a, n_past, n_dims, mode, n_ctx, 10000.0f, 1.0f, 0.0f, false, false);
 }
 
 struct ggml_tensor * ggml_rope_inplace(
@@ -6994,7 +6835,41 @@ struct ggml_tensor * ggml_rope_inplace(
         int                   n_dims,
         int                   mode,
         int                   n_ctx) {
-    return ggml_rope_impl(ctx, a, n_past, n_dims, mode, n_ctx, true);
+    return ggml_rope_impl(ctx, a, n_past, n_dims, mode, n_ctx, 10000.0f, 1.0f, 0.0f, false, true);
+}
+
+struct ggml_tensor * ggml_rope_custom(
+        struct ggml_context * ctx,
+        struct ggml_tensor  * a,
+        int                   n_past,
+        int                   n_dims,
+        int                   mode,
+        int                   n_ctx,
+        float                 freq_base,
+        float                 freq_scale) {
+    return ggml_rope_impl(ctx, a, n_past, n_dims, mode, n_ctx, freq_base, freq_scale, 0.0f, false, false);
+}
+
+struct ggml_tensor * ggml_rope_custom_inplace(
+        struct ggml_context * ctx,
+        struct ggml_tensor  * a,
+        int                   n_past,
+        int                   n_dims,
+        int                   mode,
+        int                   n_ctx,
+        float                 freq_base,
+        float                 freq_scale) {
+    return ggml_rope_impl(ctx, a, n_past, n_dims, mode, n_ctx, freq_base, freq_scale, 0.0f, false, true);
+}
+
+struct ggml_tensor * ggml_rope_xpos_inplace(
+        struct ggml_context * ctx,
+        struct ggml_tensor  * a,
+        int                   n_past,
+        int                   n_dims,
+        float                 base,
+        bool                  down) {
+    return ggml_rope_impl(ctx, a, n_past, n_dims, 0, 0, 10000.0f, 1.0f, base, down, true);
 }
 
 // ggml_rope_back
@@ -7004,7 +6879,12 @@ struct ggml_tensor * ggml_rope_back(
         struct ggml_tensor  * a,
         int                   n_past,
         int                   n_dims,
-        int                   mode) {
+        int                   mode,
+        int                   n_ctx,
+        float                 freq_base,
+        float                 freq_scale,
+        float                 xpos_base,
+        bool                  xpos_down) {
     GGML_ASSERT(n_past >= 0);
     GGML_ASSERT((mode & 4) == 0 && "ggml_rope_back() for ChatGLM not implemented yet");
 
@@ -7016,21 +6896,16 @@ struct ggml_tensor * ggml_rope_back(
 
     struct ggml_tensor * result = ggml_dup_tensor(ctx, a);
 
-    ggml_scratch_save(ctx);
-
-    struct ggml_tensor * b = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, 3);
-    ggml_set_name(b, "n_past, n_dims, mode");
-
-    ((int32_t *) b->data)[0] = n_past;
-    ((int32_t *) b->data)[1] = n_dims;
-    ((int32_t *) b->data)[2] = mode;
-
-    ggml_scratch_load(ctx);
+    int32_t params[8] = { n_past, n_dims, mode, n_ctx };
+    memcpy(params + 4, &freq_base,  sizeof(float));
+    memcpy(params + 5, &freq_scale, sizeof(float));
+    memcpy(params + 6, &xpos_base,  sizeof(float));
+    memcpy(params + 7, &xpos_down,  sizeof(bool));
+    ggml_set_op_params(result, params, sizeof(params));
 
     result->op   = GGML_OP_ROPE_BACK;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = b;
+    result->src[0] = a;
 
     return result;
 }
@@ -7055,21 +6930,13 @@ struct ggml_tensor * ggml_alibi(
     //struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a);
     struct ggml_tensor * result = ggml_view_tensor(ctx, a);
 
-    ggml_scratch_save(ctx);
-
-    struct ggml_tensor * b = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, 3);
-
-    ((int32_t *) b->data)[0] = n_past;
-    ((int32_t *) b->data)[1] = n_head;
-    GGML_ASSERT(sizeof(float) == sizeof(int32_t));
-    (((float *) b->data)[2]) = bias_max;
-
-    ggml_scratch_load(ctx);
+    int32_t op_params[3] = { n_past, n_head };
+    memcpy(op_params + 2, &bias_max, sizeof(float));
+    ggml_set_op_params(result, op_params, sizeof(op_params));
 
     result->op   = GGML_OP_ALIBI;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = b;
+    result->src[0] = a;
 
     return result;
 }
@@ -7091,19 +6958,12 @@ struct ggml_tensor * ggml_clamp(
     // TODO: when implement backward, fix this:
     struct ggml_tensor * result = ggml_view_tensor(ctx, a);
 
-    ggml_scratch_save(ctx);
-
-    struct ggml_tensor * b = ggml_new_tensor_1d(ctx, GGML_TYPE_F32, 2);
-
-    ((float *) b->data)[0] = min;
-    ((float *) b->data)[1] = max;
-
-    ggml_scratch_load(ctx);
+    float params[] = { min, max };
+    ggml_set_op_params(result, params, sizeof(params));
 
     result->op   = GGML_OP_CLAMP;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = b;
+    result->src[0] = a;
 
     return result;
 }
@@ -7134,30 +6994,36 @@ GGML_API struct ggml_tensor * ggml_conv_1d(
         ggml_calc_conv_output_size(b->ne[0], a->ne[0], s0, p0, d0),
         a->ne[2], 1, 1,
     };
-    struct ggml_tensor* result = ggml_new_tensor(ctx, GGML_TYPE_F32, 2, ne);
+    struct ggml_tensor * result = ggml_new_tensor(ctx, GGML_TYPE_F32, 2, ne);
 
-    ggml_scratch_save(ctx);
-    struct ggml_tensor* c = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, 3);
-    ((int32_t*)c->data)[0] = s0;
-    ((int32_t*)c->data)[1] = p0;
-    ((int32_t*)c->data)[2] = d0;
-    ggml_scratch_load(ctx);
+    int32_t params[] = { s0, p0, d0 };
+    ggml_set_op_params(result, params, sizeof(params));
 
     result->op = GGML_OP_CONV_1D;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = b;
-    result->opt[0] = c;
+    result->src[0] = a;
+    result->src[1] = b;
 
     return result;
 }
 
+// ggml_conv_1d_ph
+
+struct ggml_tensor* ggml_conv_1d_ph(
+        struct ggml_context * ctx,
+        struct ggml_tensor  * a,
+        struct ggml_tensor  * b,
+        int                   s,
+        int                   d) {
+    return ggml_conv_1d(ctx, a, b, s, a->ne[0] / 2, d);
+}
+
 // ggml_conv_2d
 
-struct ggml_tensor* ggml_conv_2d(
-    struct ggml_context* ctx,
-    struct ggml_tensor * a,
-    struct ggml_tensor * b,
+struct ggml_tensor * ggml_conv_2d(
+    struct ggml_context * ctx,
+    struct ggml_tensor  * a,
+    struct ggml_tensor  * b,
     int                  s0,
     int                  s1,
     int                  p0,
@@ -7165,7 +7031,6 @@ struct ggml_tensor* ggml_conv_2d(
     int                  d0,
     int                  d1) {
 
-    GGML_ASSERT(b->ne[3] == 1);
     GGML_ASSERT(a->ne[2] == b->ne[2]);
     bool is_node = false;
 
@@ -7177,99 +7042,248 @@ struct ggml_tensor* ggml_conv_2d(
     const int64_t ne[4] = {
         ggml_calc_conv_output_size(b->ne[0], a->ne[0], s0, p0, d0),
         ggml_calc_conv_output_size(b->ne[1], a->ne[1], s1, p1, d1),
-        a->ne[3], 1,
+        a->ne[3], b->ne[3],
     };
-    struct ggml_tensor* result = ggml_new_tensor(ctx, GGML_TYPE_F32, 4, ne);
+    struct ggml_tensor * result = ggml_new_tensor(ctx, GGML_TYPE_F32, 4, ne);
 
-    ggml_scratch_save(ctx);
-    struct ggml_tensor* c = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, 6);
-    ((int32_t*)c->data)[0] = s0;
-    ((int32_t*)c->data)[1] = s1;
-    ((int32_t*)c->data)[2] = p0;
-    ((int32_t*)c->data)[3] = p1;
-    ((int32_t*)c->data)[4] = d0;
-    ((int32_t*)c->data)[5] = d1;
-    ggml_scratch_load(ctx);
+    int32_t params[] = { s0, s1, p0, p1, d0, d1 };
+    ggml_set_op_params(result, params, sizeof(params));
 
     result->op = GGML_OP_CONV_2D;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = b;
-    result->opt[0] = c;
+    result->src[0] = a;
+    result->src[1] = b;
 
     return result;
 
 }
 
-// ggml_conv_1d_ph
+// ggml_conv_2d_sk_p0
 
-struct ggml_tensor* ggml_conv_1d_ph(
+struct ggml_tensor * ggml_conv_2d_sk_p0(
         struct ggml_context * ctx,
         struct ggml_tensor  * a,
-        struct ggml_tensor  * b,
-        int                   s,
-        int                   d) {
-    return ggml_conv_1d(ctx, a, b, s, a->ne[0] / 2, d);
+        struct ggml_tensor  * b) {
+    return ggml_conv_2d(ctx, a, b, a->ne[0], a->ne[1], 0, 0, 1, 1);
 }
 
-// ggml_flash_attn
+// ggml_conv_2d_s1_ph
 
-struct ggml_tensor * ggml_flash_attn(
+struct ggml_tensor * ggml_conv_2d_s1_ph(
         struct ggml_context * ctx,
-        struct ggml_tensor  * q,
-        struct ggml_tensor  * k,
-        struct ggml_tensor  * v,
-        bool                  masked) {
-    GGML_ASSERT(ggml_can_mul_mat(k, q));
-    // TODO: check if vT can be multiplied by (k*qT)
+        struct ggml_tensor  * a,
+        struct ggml_tensor  * b) {
+    return ggml_conv_2d(ctx, a, b, 1, 1, a->ne[0] / 2, a->ne[1] / 2, 1, 1);
+}
+
+// ggml_conv_transpose_2d_p0
+
+static int64_t ggml_calc_conv_transpose_output_size(int64_t ins, int64_t ks, int s, int p) {
+    return (ins - 1) * s - 2 * p + ks;
+}
+
+struct ggml_tensor * ggml_conv_transpose_2d_p0(
+        struct ggml_context * ctx,
+        struct ggml_tensor  * a,
+        struct ggml_tensor  * b,
+        int                   stride) {
+    GGML_ASSERT(a->ne[3] == b->ne[2]);
 
     bool is_node = false;
 
-    if (q->grad || k->grad || v->grad) {
+    if (a->grad || b->grad) {
+        GGML_ASSERT(false); // TODO: implement backward
         is_node = true;
     }
 
-    //struct ggml_tensor * result = ggml_dup_tensor(ctx, q);
-    struct ggml_tensor * result = ggml_new_tensor(ctx, GGML_TYPE_F32, 4, q->ne);
+    const int64_t ne[4] = {
+        ggml_calc_conv_transpose_output_size(b->ne[0], a->ne[0], stride, 0 /*p0*/),
+        ggml_calc_conv_transpose_output_size(b->ne[1], a->ne[1], stride, 0 /*p1*/),
+        a->ne[2], b->ne[3],
+    };
 
-    result->op   = GGML_OP_FLASH_ATTN;
+    struct ggml_tensor* result = ggml_new_tensor(ctx, GGML_TYPE_F32, 4, ne);
+
+    ggml_set_op_params_i32(result, 0, stride);
+
+    result->op = GGML_OP_CONV_TRANSPOSE_2D;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = q;
-    result->src1 = k;
-    result->opt[0] = v;
-    result->opt[1] = ggml_new_i32(ctx, masked ? 1 : 0);
+    result->src[0] = a;
+    result->src[1] = b;
 
     return result;
 }
 
-// ggml_flash_ff
+// ggml_pool_*
 
-struct ggml_tensor * ggml_flash_ff(
+static int64_t ggml_calc_pool_output_size(int64_t ins, int ks, int s, int p) {
+    return (ins + 2 * p - ks) / s + 1;
+}
+
+// ggml_pool_1d
+
+struct ggml_tensor * ggml_pool_1d(
         struct ggml_context * ctx,
         struct ggml_tensor  * a,
-        struct ggml_tensor  * b0,
-        struct ggml_tensor  * b1,
-        struct ggml_tensor  * c0,
-        struct ggml_tensor  * c1) {
-    GGML_ASSERT(ggml_can_mul_mat(b0, a));
-    // TODO: more checks
+        enum ggml_op_pool     op,
+        int                   k0,
+        int                   s0,
+        int                   p0) {
 
     bool is_node = false;
 
-    if (a->grad || b0->grad || b1->grad || c0->grad || c1->grad) {
+    if (a->grad) {
+        GGML_ASSERT(false); // TODO: implement backward
+        is_node = true;
+    }
+
+    const int64_t ne[3] = {
+        ggml_calc_pool_output_size(a->ne[0], k0, s0, p0),
+        a->ne[1],
+    };
+    struct ggml_tensor * result = ggml_new_tensor(ctx, GGML_TYPE_F32, 2, ne);
+
+    int32_t params[] = { op, k0, s0, p0 };
+    ggml_set_op_params(result, params, sizeof(params));
+
+    result->op = GGML_OP_POOL_1D;
+    result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
+    result->src[0] = a;
+
+    return result;
+}
+
+// ggml_pool_2d
+
+struct ggml_tensor * ggml_pool_2d(
+        struct ggml_context * ctx,
+        struct ggml_tensor  * a,
+        enum ggml_op_pool     op,
+        int                   k0,
+        int                   k1,
+        int                   s0,
+        int                   s1,
+        int                   p0,
+        int                   p1) {
+
+    bool is_node = false;
+
+    if (a->grad) {
+        GGML_ASSERT(false); // TODO: implement backward
+        is_node = true;
+    }
+
+    const int64_t ne[3] = {
+        ggml_calc_pool_output_size(a->ne[0], k0, s0, p0),
+        ggml_calc_pool_output_size(a->ne[1], k1, s1, p1),
+        a->ne[2],
+    };
+    struct ggml_tensor * result = ggml_new_tensor(ctx, GGML_TYPE_F32, 3, ne);
+
+    int32_t params[] = { op, k0, k1, s0, s1, p0, p1 };
+    ggml_set_op_params(result, params, sizeof(params));
+
+    result->op = GGML_OP_POOL_2D;
+    result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
+    result->src[0] = a;
+
+    return result;
+}
+
+// ggml_upscale
+
+static struct ggml_tensor * ggml_upscale_impl(
+    struct ggml_context * ctx,
+    struct ggml_tensor * a,
+    int scale_factor) {
+    bool is_node = false;
+
+    if (a->grad) {
+        GGML_ASSERT(false); // TODO: implement backward
+        is_node = true;
+    }
+
+    struct ggml_tensor * result = ggml_new_tensor_4d(ctx, a->type,
+            a->ne[0] * scale_factor,
+            a->ne[1] * scale_factor,
+            a->ne[2], a->ne[3]);
+
+    result->op = GGML_OP_UPSCALE;
+    result->op_params[0] = scale_factor;
+    result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
+    result->src[0] = a;
+    result->src[1] = NULL;
+
+    return result;
+}
+
+struct ggml_tensor * ggml_upscale(
+    struct ggml_context * ctx,
+    struct ggml_tensor * a,
+    int scale_factor) {
+    return ggml_upscale_impl(ctx, a, scale_factor);
+}
+
+// ggml_flash_attn
+
+struct ggml_tensor * ggml_flash_attn(
+        struct ggml_context * ctx,
+        struct ggml_tensor  * q,
+        struct ggml_tensor  * k,
+        struct ggml_tensor  * v,
+        bool                  masked) {
+    GGML_ASSERT(ggml_can_mul_mat(k, q));
+    // TODO: check if vT can be multiplied by (k*qT)
+
+    bool is_node = false;
+
+    if (q->grad || k->grad || v->grad) {
+        is_node = true;
+    }
+
+    //struct ggml_tensor * result = ggml_dup_tensor(ctx, q);
+    struct ggml_tensor * result = ggml_new_tensor(ctx, GGML_TYPE_F32, q->n_dims, q->ne);
+
+    int32_t t = masked ? 1 : 0;
+    ggml_set_op_params(result, &t, sizeof(t));
+
+    result->op   = GGML_OP_FLASH_ATTN;
+    result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
+    result->src[0] = q;
+    result->src[1] = k;
+    result->src[2] = v;
+
+    return result;
+}
+
+// ggml_flash_ff
+
+struct ggml_tensor * ggml_flash_ff(
+        struct ggml_context * ctx,
+        struct ggml_tensor  * a,
+        struct ggml_tensor  * b0,
+        struct ggml_tensor  * b1,
+        struct ggml_tensor  * c0,
+        struct ggml_tensor  * c1) {
+    GGML_ASSERT(ggml_can_mul_mat(b0, a));
+    // TODO: more checks
+
+    bool is_node = false;
+
+    if (a->grad || b0->grad || b1->grad || c0->grad || c1->grad) {
         is_node = true;
     }
 
     //struct ggml_tensor * result = ggml_dup_tensor(ctx, a);
-    struct ggml_tensor * result = ggml_new_tensor(ctx, GGML_TYPE_F32, 4, a->ne);
+    struct ggml_tensor * result = ggml_new_tensor(ctx, GGML_TYPE_F32, a->n_dims, a->ne);
 
     result->op   = GGML_OP_FLASH_FF;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = b0;
-    result->opt[0] = b1;
-    result->opt[1] = c0;
-    result->opt[2] = c1;
+    result->src[0] = a;
+    result->src[1] = b0;
+    result->src[2] = b1;
+    result->src[3] = c0;
+    result->src[4] = c1;
 
     return result;
 }
@@ -7327,13 +7341,15 @@ struct ggml_tensor * ggml_flash_attn_back(
 
     struct ggml_tensor * result = ggml_new_tensor(ctx, GGML_TYPE_F32, 4, ne);
 
+    int32_t masked_i = masked ? 1 : 0;
+    ggml_set_op_params(result, &masked_i, sizeof(masked_i));
+
     result->op   = GGML_OP_FLASH_ATTN_BACK;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = q;
-    result->src1 = k;
-    result->opt[0] = v;
-    result->opt[1] = d;
-    result->opt[2] = ggml_new_i32(ctx, masked ? 1 : 0);
+    result->src[0] = q;
+    result->src[1] = k;
+    result->src[2] = v;
+    result->src[3] = d;
 
     return result;
 }
@@ -7366,21 +7382,12 @@ struct ggml_tensor * ggml_win_part(
 
     struct ggml_tensor * result = ggml_new_tensor(ctx, GGML_TYPE_F32, 4, ne);
 
-    ggml_scratch_save(ctx);
-
-    struct ggml_tensor * b = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, 3);
-
-    ((int32_t *) b->data)[0] = npx;
-    ((int32_t *) b->data)[1] = npy;
-    ((int32_t *) b->data)[2] = w;
-
-    ggml_scratch_load(ctx);
+    int32_t params[] = { npx, npy, w };
+    ggml_set_op_params(result, params, sizeof(params));
 
     result->op   = GGML_OP_WIN_PART;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = NULL;
-    result->opt[0] = b;
+    result->src[0] = a;
 
     return result;
 }
@@ -7405,26 +7412,136 @@ struct ggml_tensor * ggml_win_unpart(
     const int64_t ne[4] = { a->ne[0], w0, h0, 1, };
     struct ggml_tensor * result = ggml_new_tensor(ctx, GGML_TYPE_F32, 3, ne);
 
-    ggml_scratch_save(ctx);
+    int32_t params[] = { w };
+    ggml_set_op_params(result, params, sizeof(params));
+
+    result->op   = GGML_OP_WIN_UNPART;
+    result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
+    result->src[0] = a;
 
-    struct ggml_tensor * b = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, 1);
+    return result;
+}
 
-    ((int32_t *) b->data)[0] = w;
+// ggml_get_rel_pos
 
-    ggml_scratch_load(ctx);
+struct ggml_tensor * ggml_get_rel_pos(
+        struct ggml_context * ctx,
+        struct ggml_tensor  * a,
+        int                   qh,
+        int                   kh) {
+    GGML_ASSERT(qh == kh);
+    GGML_ASSERT(2*MAX(qh, kh) - 1 == a->ne[1]);
 
-    result->op   = GGML_OP_WIN_UNPART;
+    bool is_node = false;
+
+    if (a->grad) {
+        GGML_ASSERT(false); // TODO: implement backward
+        is_node = true;
+    }
+
+    const int64_t ne[4] = { a->ne[0], kh, qh, 1, };
+    struct ggml_tensor * result = ggml_new_tensor(ctx, GGML_TYPE_F16, 3, ne);
+
+    result->op   = GGML_OP_GET_REL_POS;
+    result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
+    result->src[0] = a;
+    result->src[1] = NULL;
+
+    return result;
+}
+
+// ggml_add_rel_pos
+
+static struct ggml_tensor * ggml_add_rel_pos_impl(
+        struct ggml_context * ctx,
+        struct ggml_tensor  * a,
+        struct ggml_tensor  * pw,
+        struct ggml_tensor  * ph,
+        bool                  inplace) {
+    GGML_ASSERT(ggml_are_same_shape(pw, ph));
+    GGML_ASSERT(ggml_is_contiguous(a));
+    GGML_ASSERT(ggml_is_contiguous(pw));
+    GGML_ASSERT(ggml_is_contiguous(ph));
+    GGML_ASSERT(ph->type == GGML_TYPE_F32);
+    GGML_ASSERT(pw->type == GGML_TYPE_F32);
+    GGML_ASSERT(pw->ne[3] == a->ne[2]);
+    GGML_ASSERT(pw->ne[0]*pw->ne[0] == a->ne[0]);
+    GGML_ASSERT(pw->ne[1]*pw->ne[2] == a->ne[1]);
+
+    bool is_node = false;
+
+    if (!inplace && (a->grad || pw->grad || ph->grad)) {
+        is_node = true;
+    }
+
+    struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a);
+    result->op   = GGML_OP_ADD_REL_POS;
+    result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
+    result->src[0] = a;
+    result->src[1] = pw;
+    result->src[2] = ph;
+
+    return result;
+}
+
+
+struct ggml_tensor * ggml_add_rel_pos(
+        struct ggml_context * ctx,
+        struct ggml_tensor  * a,
+        struct ggml_tensor  * pw,
+        struct ggml_tensor  * ph) {
+    return ggml_add_rel_pos_impl(ctx, a, pw, ph, false);
+}
+
+struct ggml_tensor * ggml_add_rel_pos_inplace(
+        struct ggml_context * ctx,
+        struct ggml_tensor  * a,
+        struct ggml_tensor  * pw,
+        struct ggml_tensor  * ph) {
+    return ggml_add_rel_pos_impl(ctx, a, pw, ph, true);
+}
+
+// gmml_unary
+
+static struct ggml_tensor * ggml_unary_impl(
+        struct ggml_context * ctx,
+        struct ggml_tensor * a,
+        enum ggml_unary_op op,
+        bool inplace) {
+    bool is_node = false;
+
+    if (!inplace && (a->grad)) {
+        is_node = true;
+    }
+
+    struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a);
+
+    ggml_set_op_params_i32(result, 0, (int32_t) op);
+
+    result->op   = GGML_OP_UNARY;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = NULL;
-    result->opt[0] = b;
+    result->src[0] = a;
 
     return result;
 }
 
+struct ggml_tensor * ggml_unary(
+        struct ggml_context * ctx,
+        struct ggml_tensor  * a,
+        enum ggml_unary_op op) {
+    return ggml_unary_impl(ctx, a, op, false);
+}
+
+struct ggml_tensor * ggml_unary_inplace(
+        struct ggml_context * ctx,
+        struct ggml_tensor  * a,
+        enum ggml_unary_op op) {
+    return ggml_unary_impl(ctx, a, op, true);
+}
+
 // ggml_map_unary
 
-struct ggml_tensor * ggml_map_unary_impl_f32(
+static struct ggml_tensor * ggml_map_unary_impl_f32(
         struct ggml_context        * ctx,
         struct ggml_tensor         * a,
         const  ggml_unary_op_f32_t fun,
@@ -7435,19 +7552,13 @@ struct ggml_tensor * ggml_map_unary_impl_f32(
         is_node = true;
     }
 
-    struct ggml_tensor *result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a);
-
-    ggml_scratch_save(ctx);
-
-    struct ggml_tensor * addr_tensor = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, sizeof(void *) / sizeof(int32_t));
-    *((void (**)(void))addr_tensor->data) = (void (*)(void))fun;
+    struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a);
 
-    ggml_scratch_load(ctx);
+    ggml_set_op_params(result, (const void *) &fun, sizeof(fun));
 
     result->op = GGML_OP_MAP_UNARY;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->opt[0] = addr_tensor;
+    result->src[0] = a;
 
     return result;
 }
@@ -7468,7 +7579,7 @@ struct ggml_tensor * ggml_map_unary_inplace_f32(
 
 // ggml_map_binary
 
-struct ggml_tensor * ggml_map_binary_impl_f32(
+static struct ggml_tensor * ggml_map_binary_impl_f32(
         struct ggml_context         * ctx,
         struct ggml_tensor          * a,
         struct ggml_tensor          * b,
@@ -7482,20 +7593,14 @@ struct ggml_tensor * ggml_map_binary_impl_f32(
         is_node = true;
     }
 
-    struct ggml_tensor *result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a);
-
-    ggml_scratch_save(ctx);
-
-    struct ggml_tensor * addr_tensor = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, sizeof(void *) / sizeof(int32_t));
-    *((void (**)(void))addr_tensor->data) = (void (*)(void))fun;
+    struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a);
 
-    ggml_scratch_load(ctx);
+    ggml_set_op_params(result, (const void *) &fun, sizeof(fun));
 
     result->op = GGML_OP_MAP_BINARY;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = b;
-    result->opt[0] = addr_tensor;
+    result->src[0] = a;
+    result->src[1] = b;
 
     return result;
 }
@@ -7516,9 +7621,9 @@ struct ggml_tensor * ggml_map_binary_inplace_f32(
     return ggml_map_binary_impl_f32(ctx, a, b, fun, true);
 }
 
-// ggml_map_custom1
+// ggml_map_custom1_f32
 
-struct ggml_tensor * ggml_map_custom1_impl_f32(
+static struct ggml_tensor * ggml_map_custom1_impl_f32(
         struct ggml_context          * ctx,
         struct ggml_tensor           * a,
         const  ggml_custom1_op_f32_t   fun,
@@ -7529,19 +7634,13 @@ struct ggml_tensor * ggml_map_custom1_impl_f32(
         is_node = true;
     }
 
-    struct ggml_tensor *result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a);
-
-    ggml_scratch_save(ctx);
-
-    struct ggml_tensor * addr_tensor = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, sizeof(void *) / sizeof(int32_t));
-    *((void (**)(void))addr_tensor->data) = (void (*)(void))fun;
+    struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a);
 
-    ggml_scratch_load(ctx);
+    ggml_set_op_params(result, (const void *) &fun, sizeof(fun));
 
-    result->op = GGML_OP_MAP_CUSTOM1;
+    result->op = GGML_OP_MAP_CUSTOM1_F32;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->opt[0] = addr_tensor;
+    result->src[0] = a;
 
     return result;
 }
@@ -7560,9 +7659,9 @@ struct ggml_tensor * ggml_map_custom1_inplace_f32(
     return ggml_map_custom1_impl_f32(ctx, a, fun, true);
 }
 
-// ggml_map_custom2
+// ggml_map_custom2_f32
 
-struct ggml_tensor * ggml_map_custom2_impl_f32(
+static struct ggml_tensor * ggml_map_custom2_impl_f32(
         struct ggml_context          * ctx,
         struct ggml_tensor           * a,
         struct ggml_tensor           * b,
@@ -7574,20 +7673,14 @@ struct ggml_tensor * ggml_map_custom2_impl_f32(
         is_node = true;
     }
 
-    struct ggml_tensor *result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a);
-
-    ggml_scratch_save(ctx);
-
-    struct ggml_tensor * addr_tensor = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, sizeof(void *) / sizeof(int32_t));
-    *((void (**)(void))addr_tensor->data) = (void (*)(void))fun;
+    struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a);
 
-    ggml_scratch_load(ctx);
+    ggml_set_op_params(result, (const void *) &fun, sizeof(fun));
 
-    result->op = GGML_OP_MAP_CUSTOM2;
+    result->op = GGML_OP_MAP_CUSTOM2_F32;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = b;
-    result->opt[0] = addr_tensor;
+    result->src[0] = a;
+    result->src[1] = b;
 
     return result;
 }
@@ -7608,9 +7701,9 @@ struct ggml_tensor * ggml_map_custom2_inplace_f32(
     return ggml_map_custom2_impl_f32(ctx, a, b, fun, true);
 }
 
-// ggml_map_custom3
+// ggml_map_custom3_f32
 
-struct ggml_tensor * ggml_map_custom3_impl_f32(
+static struct ggml_tensor * ggml_map_custom3_impl_f32(
         struct ggml_context          * ctx,
         struct ggml_tensor           * a,
         struct ggml_tensor           * b,
@@ -7623,21 +7716,15 @@ struct ggml_tensor * ggml_map_custom3_impl_f32(
         is_node = true;
     }
 
-    struct ggml_tensor *result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a);
-
-    ggml_scratch_save(ctx);
-
-    struct ggml_tensor * addr_tensor = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, sizeof(void *) / sizeof(int32_t));
-    *((void (**)(void))addr_tensor->data) = (void (*)(void))fun;
+    struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a);
 
-    ggml_scratch_load(ctx);
+    ggml_set_op_params(result, (const void *) &fun, sizeof(fun));
 
-    result->op = GGML_OP_MAP_CUSTOM3;
+    result->op = GGML_OP_MAP_CUSTOM3_F32;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = b;
-    result->opt[0] = addr_tensor;
-    result->opt[1] = c;
+    result->src[0] = a;
+    result->src[1] = b;
+    result->src[2] = c;
 
     return result;
 }
@@ -7660,64 +7747,248 @@ struct ggml_tensor * ggml_map_custom3_inplace_f32(
     return ggml_map_custom3_impl_f32(ctx, a, b, c, fun, true);
 }
 
-// ggml_cross_entropy_loss
+// ggml_map_custom1
+struct ggml_map_custom1_op_params {
+    ggml_custom1_op_t fun;
+    int n_tasks;
+    void * userdata;
+};
+
+static struct ggml_tensor * ggml_map_custom1_impl(
+        struct ggml_context          * ctx,
+        struct ggml_tensor           * a,
+        const  ggml_custom1_op_t       fun,
+        int                            n_tasks,
+        void                         * userdata,
+        bool                           inplace) {
+    GGML_ASSERT(n_tasks == GGML_N_TASKS_MAX || n_tasks > 0);
 
-struct ggml_tensor * ggml_cross_entropy_loss(
-        struct ggml_context         * ctx,
-        struct ggml_tensor          * a,
-        struct ggml_tensor          * b) {
-    GGML_ASSERT(ggml_are_same_shape(a, b));
     bool is_node = false;
 
-    if (a->grad || b->grad) {
+    if (!inplace && a->grad) {
         is_node = true;
     }
 
-    struct ggml_tensor * result = ggml_new_tensor_1d(ctx, a->type, 1);
+    struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a);
 
-    result->op   = GGML_OP_CROSS_ENTROPY_LOSS;
+    struct ggml_map_custom1_op_params params = {
+        /*.fun      =*/ fun,
+        /*.n_tasks  =*/ n_tasks,
+        /*.userdata =*/ userdata
+    };
+    ggml_set_op_params(result, (const void *) &params, sizeof(params));
+
+    result->op = GGML_OP_MAP_CUSTOM1;
     result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
-    result->src0 = a;
-    result->src1 = b;
+    result->src[0] = a;
 
     return result;
 }
 
-// ggml_cross_entropy_loss_back
-
-struct ggml_tensor * ggml_cross_entropy_loss_back(
-        struct ggml_context         * ctx,
-        struct ggml_tensor          * a,
-        struct ggml_tensor          * b,
-        struct ggml_tensor          * c) {
-    GGML_ASSERT(ggml_are_same_shape(a, b));
-    GGML_ASSERT(ggml_is_scalar(c));
-
-    struct ggml_tensor * result = ggml_dup_tensor(ctx, a);
-
-    result->op   = GGML_OP_CROSS_ENTROPY_LOSS_BACK;
-    result->grad = NULL;
-    result->src0 = a;
-    result->src1 = b;
-    result->opt[0] = c;
+struct ggml_tensor * ggml_map_custom1(
+        struct ggml_context          * ctx,
+        struct ggml_tensor           * a,
+        const  ggml_custom1_op_t       fun,
+        int                            n_tasks,
+        void                         * userdata) {
+    return ggml_map_custom1_impl(ctx, a, fun, n_tasks, userdata, false);
+}
 
-    return result;
+struct ggml_tensor * ggml_map_custom1_inplace(
+        struct ggml_context          * ctx,
+        struct ggml_tensor           * a,
+        const  ggml_custom1_op_t       fun,
+        int                            n_tasks,
+        void                         * userdata) {
+    return ggml_map_custom1_impl(ctx, a, fun, n_tasks, userdata, true);
 }
 
-////////////////////////////////////////////////////////////////////////////////
+// ggml_map_custom2
 
-void ggml_set_param(
-        struct ggml_context * ctx,
-        struct ggml_tensor * tensor) {
-    tensor->is_param = true;
+struct ggml_map_custom2_op_params {
+    ggml_custom2_op_t fun;
+    int n_tasks;
+    void * userdata;
+};
 
-    GGML_ASSERT(tensor->grad == NULL);
-    tensor->grad = ggml_dup_tensor(ctx, tensor);
-}
+static struct ggml_tensor * ggml_map_custom2_impl(
+        struct ggml_context          * ctx,
+        struct ggml_tensor           * a,
+        struct ggml_tensor           * b,
+        const  ggml_custom2_op_t       fun,
+        int                            n_tasks,
+        void                         * userdata,
+        bool                           inplace) {
+    GGML_ASSERT(n_tasks == GGML_N_TASKS_MAX || n_tasks > 0);
 
-// ggml_compute_forward_dup
+    bool is_node = false;
 
-static void ggml_compute_forward_dup_same_cont(
+    if (!inplace && (a->grad || b->grad)) {
+        is_node = true;
+    }
+
+    struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a);
+
+    struct ggml_map_custom2_op_params params = {
+        /*.fun      =*/ fun,
+        /*.n_tasks  =*/ n_tasks,
+        /*.userdata =*/ userdata
+    };
+    ggml_set_op_params(result, (const void *) &params, sizeof(params));
+
+    result->op = GGML_OP_MAP_CUSTOM2;
+    result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
+    result->src[0] = a;
+    result->src[1] = b;
+
+    return result;
+}
+
+struct ggml_tensor * ggml_map_custom2(
+        struct ggml_context          * ctx,
+        struct ggml_tensor           * a,
+        struct ggml_tensor           * b,
+        const  ggml_custom2_op_t       fun,
+        int                            n_tasks,
+        void                         * userdata) {
+    return ggml_map_custom2_impl(ctx, a, b, fun, n_tasks, userdata, false);
+}
+
+struct ggml_tensor * ggml_map_custom2_inplace(
+        struct ggml_context          * ctx,
+        struct ggml_tensor           * a,
+        struct ggml_tensor           * b,
+        const  ggml_custom2_op_t       fun,
+        int                            n_tasks,
+        void                         * userdata) {
+    return ggml_map_custom2_impl(ctx, a, b, fun, n_tasks, userdata, true);
+}
+
+// ggml_map_custom3
+
+struct ggml_map_custom3_op_params {
+    ggml_custom3_op_t fun;
+    int n_tasks;
+    void * userdata;
+};
+
+static struct ggml_tensor * ggml_map_custom3_impl(
+        struct ggml_context          * ctx,
+        struct ggml_tensor           * a,
+        struct ggml_tensor           * b,
+        struct ggml_tensor           * c,
+        const  ggml_custom3_op_t       fun,
+        int                            n_tasks,
+        void                         * userdata,
+        bool                           inplace) {
+    GGML_ASSERT(n_tasks == GGML_N_TASKS_MAX || n_tasks > 0);
+
+    bool is_node = false;
+
+    if (!inplace && (a->grad || b->grad || c->grad)) {
+        is_node = true;
+    }
+
+    struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a);
+
+    struct ggml_map_custom3_op_params params = {
+        /*.fun      =*/ fun,
+        /*.n_tasks  =*/ n_tasks,
+        /*.userdata =*/ userdata
+    };
+    ggml_set_op_params(result, (const void *) &params, sizeof(params));
+
+    result->op = GGML_OP_MAP_CUSTOM3;
+    result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
+    result->src[0] = a;
+    result->src[1] = b;
+    result->src[2] = c;
+
+    return result;
+}
+
+struct ggml_tensor * ggml_map_custom3(
+        struct ggml_context          * ctx,
+        struct ggml_tensor           * a,
+        struct ggml_tensor           * b,
+        struct ggml_tensor           * c,
+        const  ggml_custom3_op_t       fun,
+        int                            n_tasks,
+        void                         * userdata) {
+    return ggml_map_custom3_impl(ctx, a, b, c, fun, n_tasks, userdata, false);
+}
+
+struct ggml_tensor * ggml_map_custom3_inplace(
+        struct ggml_context          * ctx,
+        struct ggml_tensor           * a,
+        struct ggml_tensor           * b,
+        struct ggml_tensor           * c,
+        const  ggml_custom3_op_t       fun,
+        int                            n_tasks,
+        void                         * userdata) {
+    return ggml_map_custom3_impl(ctx, a, b, c, fun, n_tasks, userdata, true);
+}
+
+
+
+// ggml_cross_entropy_loss
+
+struct ggml_tensor * ggml_cross_entropy_loss(
+        struct ggml_context         * ctx,
+        struct ggml_tensor          * a,
+        struct ggml_tensor          * b) {
+    GGML_ASSERT(ggml_are_same_shape(a, b));
+    bool is_node = false;
+
+    if (a->grad || b->grad) {
+        is_node = true;
+    }
+
+    struct ggml_tensor * result = ggml_new_tensor_1d(ctx, a->type, 1);
+
+    result->op   = GGML_OP_CROSS_ENTROPY_LOSS;
+    result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL;
+    result->src[0] = a;
+    result->src[1] = b;
+
+    return result;
+}
+
+// ggml_cross_entropy_loss_back
+
+struct ggml_tensor * ggml_cross_entropy_loss_back(
+        struct ggml_context         * ctx,
+        struct ggml_tensor          * a,
+        struct ggml_tensor          * b,
+        struct ggml_tensor          * c) {
+    GGML_ASSERT(ggml_are_same_shape(a, b));
+    GGML_ASSERT(ggml_is_scalar(c));
+
+    struct ggml_tensor * result = ggml_dup_tensor(ctx, a);
+
+    result->op   = GGML_OP_CROSS_ENTROPY_LOSS_BACK;
+    result->grad = NULL;
+    result->src[0] = a;
+    result->src[1] = b;
+    result->src[2] = c;
+
+    return result;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+void ggml_set_param(
+        struct ggml_context * ctx,
+        struct ggml_tensor * tensor) {
+    tensor->is_param = true;
+
+    GGML_ASSERT(tensor->grad == NULL);
+    tensor->grad = ggml_dup_tensor(ctx, tensor);
+}
+
+// ggml_compute_forward_dup
+
+static void ggml_compute_forward_dup_same_cont(
         const struct ggml_compute_params * params,
         const struct ggml_tensor * src0,
         struct ggml_tensor * dst) {
@@ -7745,7 +8016,7 @@ static void ggml_compute_forward_dup_same_cont(
         memcpy(
             ((char *)  dst->data + ie0*nb0),
             ((char *) src0->data + ie0*nb00),
-            (ie1 - ie0) * GGML_TYPE_SIZE[src0->type]);
+            (ie1 - ie0) * ggml_type_size(src0->type));
     }
 
 }
@@ -7779,7 +8050,7 @@ static void ggml_compute_forward_dup_f16(
 
     if (src0->type == dst->type &&
         ne00 == ne0 &&
-        nb00 == GGML_TYPE_SIZE[src0->type] && nb0 == GGML_TYPE_SIZE[dst->type]) {
+        nb00 == ggml_type_size(src0->type) && nb0 == ggml_type_size(dst->type)) {
         // copy by rows
         const size_t rs = ne00*nb00;
         for (int64_t i03 = 0; i03 < ne03; i03++) {
@@ -7832,12 +8103,12 @@ static void ggml_compute_forward_dup_f16(
                         id += ne00 * (ne01 - ir1);
                     }
                 }
-            } else if (ggml_is_quantized(dst->type)) {
-                quantize_row_q_t const quantize_row_q = quantize_fns[dst->type].quantize_row_q;
+            } else if (type_traits[dst->type].from_float) {
+                ggml_from_float_t const quantize_row_q = type_traits[dst->type].from_float;
                 float * src0_f32 = (float *) params->wdata + (ne00 + CACHE_LINE_SIZE_F32) * ith;
 
                 size_t id = 0;
-                size_t rs = nb0 * (ne00 / GGML_BLCK_SIZE[dst->type]);
+                size_t rs = nb0 * (ne00 / ggml_blck_size(dst->type));
                 char * dst_ptr = (char *) dst->data;
 
                 for (int i03 = 0; i03 < ne03; i03++) {
@@ -8050,7 +8321,7 @@ static void ggml_compute_forward_dup_f32(
 
     if (src0->type == dst->type &&
         ne00 == ne0 &&
-        nb00 == GGML_TYPE_SIZE[src0->type] && nb0 == GGML_TYPE_SIZE[dst->type]) {
+        nb00 == ggml_type_size(src0->type) && nb0 == ggml_type_size(dst->type)) {
         // copy by rows
         const size_t rs = ne00*nb00;
         for (int64_t i03 = 0; i03 < ne03; i03++) {
@@ -8085,29 +8356,11 @@ static void ggml_compute_forward_dup_f32(
                         id += rs * (ne01 - ir1);
                     }
                 }
-            } else if (dst->type == GGML_TYPE_F16) {
-                size_t id = 0;
-                ggml_fp16_t * dst_ptr = (ggml_fp16_t *) dst->data;
-
-                for (int i03 = 0; i03 < ne03; i03++) {
-                    for (int i02 = 0; i02 < ne02; i02++) {
-                        id += ne00 * ir0;
-                        for (int i01 = ir0; i01 < ir1; i01++) {
-                            for (int i00 = 0; i00 < ne00; i00++) {
-                                const float * src0_ptr = (float *) ((char *) src0->data + i00*nb00 + i01*nb01 + i02*nb02 + i03*nb03);
-
-                                dst_ptr[id] = GGML_FP32_TO_FP16(*src0_ptr);
-                                id++;
-                            }
-                        }
-                        id += ne00 * (ne01 - ir1);
-                    }
-                }
-            } else if (ggml_is_quantized(dst->type)) {
-                quantize_row_q_t const quantize_row_q = quantize_fns[dst->type].quantize_row_q;
+            } else if (type_traits[dst->type].from_float) {
+                ggml_from_float_t const quantize_row_q = type_traits[dst->type].from_float;
 
                 size_t id = 0;
-                size_t rs = nb0 * (ne00 / GGML_BLCK_SIZE[dst->type]);
+                size_t rs = nb0 * (ne00 / ggml_blck_size(dst->type));
                 char * dst_ptr = (char *) dst->data;
 
                 for (int i03 = 0; i03 < ne03; i03++) {
@@ -8318,7 +8571,7 @@ static void ggml_compute_forward_add_f32(
         const struct ggml_tensor * src0,
         const struct ggml_tensor * src1,
         struct ggml_tensor * dst) {
-    GGML_ASSERT(ggml_are_same_shape(src0, src1) && ggml_are_same_shape(src0, dst));
+    GGML_ASSERT(ggml_can_repeat_rows(src1, src0) && ggml_are_same_shape(src0, dst));
 
     if (params->type == GGML_TASK_INIT || params->type == GGML_TASK_FINALIZE) {
         return;
@@ -8343,23 +8596,23 @@ static void ggml_compute_forward_add_f32(
 
     if (nb10 == sizeof(float)) {
         for (int ir = ir0; ir < ir1; ++ir) {
-            // src0, src1 and dst are same shape => same indices
-            const int i3 = ir/(ne2*ne1);
-            const int i2 = (ir - i3*ne2*ne1)/ne1;
-            const int i1 = (ir - i3*ne2*ne1 - i2*ne1);
+            // src1 is broadcastable across src0 and dst in i1, i2, i3
+            const int64_t i03 = ir/(ne02*ne01);
+            const int64_t i02 = (ir - i03*ne02*ne01)/ne01;
+            const int64_t i01 = (ir - i03*ne02*ne01 - i02*ne01);
 
+            const int64_t i13 = i03 % ne13;
+            const int64_t i12 = i02 % ne12;
+            const int64_t i11 = i01 % ne11;
+
+            float * dst_ptr  = (float *) ((char *) dst->data  + i03*nb3  + i02*nb2  + i01*nb1 );
+            float * src0_ptr = (float *) ((char *) src0->data + i03*nb03 + i02*nb02 + i01*nb01);
+            float * src1_ptr = (float *) ((char *) src1->data + i13*nb13 + i12*nb12 + i11*nb11);
 
 #ifdef GGML_USE_ACCELERATE
-            vDSP_vadd(
-                    (float *) ((char *) src0->data + i3*nb03 + i2*nb02 + i1*nb01), 1,
-                    (float *) ((char *) src1->data + i3*nb13 + i2*nb12 + i1*nb11), 1,
-                    (float *) ((char *) dst->data  + i3*nb3  + i2*nb2  + i1*nb1 ), 1,
-                    ne0);
+            vDSP_vadd(src0_ptr, 1, src1_ptr, 1, dst_ptr, 1, ne00);
 #else
-            ggml_vec_add_f32(ne0,
-                    (float *) ((char *) dst->data  + i3*nb3  + i2*nb2  + i1*nb1 ),
-                    (float *) ((char *) src0->data + i3*nb03 + i2*nb02 + i1*nb01),
-                    (float *) ((char *) src1->data + i3*nb13 + i2*nb12 + i1*nb11));
+            ggml_vec_add_f32(ne00, dst_ptr, src0_ptr, src1_ptr);
 #endif
                 // }
             // }
@@ -8367,15 +8620,20 @@ static void ggml_compute_forward_add_f32(
     } else {
         // src1 is not contiguous
         for (int ir = ir0; ir < ir1; ++ir) {
-            // src0, src1 and dst are same shape => same indices
-            const int i3 = ir/(ne2*ne1);
-            const int i2 = (ir - i3*ne2*ne1)/ne1;
-            const int i1 = (ir - i3*ne2*ne1 - i2*ne1);
+            // src1 is broadcastable across src0 and dst in i1, i2, i3
+            const int64_t i03 = ir/(ne02*ne01);
+            const int64_t i02 = (ir - i03*ne02*ne01)/ne01;
+            const int64_t i01 = (ir - i03*ne02*ne01 - i02*ne01);
+
+            const int64_t i13 = i03 % ne13;
+            const int64_t i12 = i02 % ne12;
+            const int64_t i11 = i01 % ne11;
+
+            float * dst_ptr  = (float *) ((char *) dst->data  + i03*nb3  + i02*nb2  + i01*nb1 );
+            float * src0_ptr = (float *) ((char *) src0->data + i03*nb03 + i02*nb02 + i01*nb01);
 
-            float * dst_ptr  = (float *) ((char *) dst->data  + i3*nb3  + i2*nb2  + i1*nb1 );
-            float * src0_ptr = (float *) ((char *) src0->data + i3*nb03 + i2*nb02 + i1*nb01);
             for (int i0 = 0; i0 < ne0; i0++) {
-                float * src1_ptr = (float *) ((char *) src1->data + i3*nb13 + i2*nb12 + i1*nb11 + i0*nb10);
+                float * src1_ptr = (float *) ((char *) src1->data + i13*nb13 + i12*nb12 + i11*nb11 + i0*nb10);
 
                 dst_ptr[i0] = src0_ptr[i0] + *src1_ptr;
             }
@@ -8510,11 +8768,11 @@ static void ggml_compute_forward_add_q_f32(
     const int nth = params->nth;
 
     const enum ggml_type type = src0->type;
-    dequantize_row_q_t const dequantize_row_q = quantize_fns[type].dequantize_row_q;
-    quantize_row_q_t const quantize_row_q = quantize_fns[type].quantize_row_q;
+    ggml_to_float_t const dequantize_row_q = type_traits[type].to_float;
+    ggml_from_float_t const quantize_row_q = type_traits[type].from_float;
 
     // we don't support permuted src0 or src1
-    GGML_ASSERT(nb00 == GGML_TYPE_SIZE[type]);
+    GGML_ASSERT(nb00 == ggml_type_size(type));
     GGML_ASSERT(nb10 == sizeof(float));
 
     // dst cannot be transposed or permuted
@@ -8784,11 +9042,11 @@ static void ggml_compute_forward_add1_q_f32(
     GGML_TENSOR_UNARY_OP_LOCALS;
 
     const enum ggml_type type = src0->type;
-    dequantize_row_q_t const dequantize_row_q = quantize_fns[type].dequantize_row_q;
-    quantize_row_q_t const quantize_row_q = quantize_fns[type].quantize_row_q;
+    ggml_to_float_t const dequantize_row_q = type_traits[type].to_float;
+    ggml_from_float_t const quantize_row_q = type_traits[type].from_float;
 
     // we don't support permuted src0
-    GGML_ASSERT(nb00 == GGML_TYPE_SIZE[type]);
+    GGML_ASSERT(nb00 == ggml_type_size(type));
 
     // dst cannot be transposed or permuted
     GGML_ASSERT(nb0 <= nb1);
@@ -8878,21 +9136,17 @@ static void ggml_compute_forward_acc_f32(
         const struct ggml_compute_params * params,
         const struct ggml_tensor * src0,
         const struct ggml_tensor * src1,
-        const struct ggml_tensor * opt0,
         struct ggml_tensor * dst) {
     GGML_ASSERT(ggml_are_same_shape(src0, dst));
     GGML_ASSERT(ggml_is_contiguous(dst) && ggml_is_contiguous(src0));
 
-    GGML_ASSERT(opt0->type == GGML_TYPE_I32);
-    GGML_ASSERT(ggml_nelements(opt0) == 5);
-
     // view src0 and dst with these strides and data offset inbytes during acc
     // nb0 is implicitely element_size because src0 and dst are contiguous
-    size_t nb1     = ((int32_t *) opt0->data)[0];
-    size_t nb2     = ((int32_t *) opt0->data)[1];
-    size_t nb3     = ((int32_t *) opt0->data)[2];
-    size_t offset  = ((int32_t *) opt0->data)[3];
-    bool   inplace = (bool) ((int32_t *) opt0->data)[4];
+    size_t nb1     = ((int32_t *) dst->op_params)[0];
+    size_t nb2     = ((int32_t *) dst->op_params)[1];
+    size_t nb3     = ((int32_t *) dst->op_params)[2];
+    size_t offset  = ((int32_t *) dst->op_params)[3];
+    bool   inplace = (bool) ((int32_t *) dst->op_params)[4];
 
     if (!inplace && (params->type == GGML_TASK_INIT)) {
         // memcpy needs to be synchronized across threads to avoid race conditions.
@@ -8961,13 +9215,12 @@ static void ggml_compute_forward_acc(
         const struct ggml_compute_params * params,
         const struct ggml_tensor * src0,
         const struct ggml_tensor * src1,
-        const struct ggml_tensor * opt0,
         struct ggml_tensor * dst) {
 
     switch (src0->type) {
         case GGML_TYPE_F32:
             {
-                ggml_compute_forward_acc_f32(params, src0, src1, opt0, dst);
+                ggml_compute_forward_acc_f32(params, src0, src1, dst);
             } break;
         case GGML_TYPE_F16:
         case GGML_TYPE_Q4_0:
@@ -9155,6 +9408,8 @@ static void ggml_compute_forward_mul(
         const struct ggml_tensor * src0,
         const struct ggml_tensor * src1,
         struct ggml_tensor * dst) {
+    GGML_ASSERT(src1->type == GGML_TYPE_F32 && "only f32 src1 supported for now");
+
     switch (src0->type) {
         case GGML_TYPE_F32:
             {
@@ -9399,7 +9654,7 @@ static void ggml_compute_forward_sum_f32(
     for (int64_t i03 = 0; i03 < ne03; i03++) {
         for (int64_t i02 = 0; i02 < ne02; i02++) {
             for (int64_t i01 = 0; i01 < ne01; i01++) {
-                ggml_vec_sum_ggf(ne00,
+                ggml_vec_sum_f32_ggf(ne00,
                         &row_sum,
                         (float *) ((char *) src0->data + i01*nb01 + i02*nb02 + i03*nb03));
                 sum += row_sum;
@@ -9409,6 +9664,38 @@ static void ggml_compute_forward_sum_f32(
     ((float *) dst->data)[0] = sum;
 }
 
+static void ggml_compute_forward_sum_f16(
+    const struct ggml_compute_params * params,
+    const struct ggml_tensor * src0,
+          struct ggml_tensor * dst) {
+    assert(params->ith == 0);
+    assert(ggml_is_scalar(dst));
+
+    if (params->type == GGML_TASK_INIT || params->type == GGML_TASK_FINALIZE) {
+        return;
+    }
+
+    assert(src0->nb[0] == sizeof(ggml_fp16_t));
+
+    GGML_TENSOR_LOCALS(int64_t, ne0, src0, ne);
+    GGML_TENSOR_LOCALS(size_t,  nb0, src0, nb);
+
+    float sum = 0;
+    float row_sum = 0;
+
+    for (int64_t i03 = 0; i03 < ne03; i03++) {
+        for (int64_t i02 = 0; i02 < ne02; i02++) {
+            for (int64_t i01 = 0; i01 < ne01; i01++) {
+                ggml_vec_sum_f16_ggf(ne00,
+                    &row_sum,
+                    (ggml_fp16_t *) ((char *) src0->data + i01 * nb01 + i02 * nb02 + i03 * nb03));
+                sum += row_sum;
+            }
+        }
+    }
+    ((ggml_fp16_t *) dst->data)[0] = GGML_FP32_TO_FP16(sum);
+}
+
 static void ggml_compute_forward_sum(
         const struct ggml_compute_params * params,
         const struct ggml_tensor * src0,
@@ -9418,6 +9705,10 @@ static void ggml_compute_forward_sum(
             {
                 ggml_compute_forward_sum_f32(params, src0, dst);
             } break;
+        case GGML_TYPE_F16:
+            {
+                ggml_compute_forward_sum_f16(params, src0, dst);
+            } break;
         default:
             {
                 GGML_ASSERT(false);
@@ -9450,8 +9741,8 @@ static void ggml_compute_forward_sum_rows_f32(
     for (int64_t i3 = 0; i3 < ne03; i3++) {
         for (int64_t i2 = 0; i2 < ne02; i2++) {
             for (int64_t i1 = 0; i1 < ne01; i1++) {
-                float* src_row = (float *) ((char *) src0->data + i1*nb01 + i2*nb02 + i3*nb03);
-                float* dst_row = (float *) ((char *) dst->data  + i1*nb1  + i2*nb2  + i3*nb3);
+                float * src_row = (float *) ((char *) src0->data + i1*nb01 + i2*nb02 + i3*nb03);
+                float * dst_row = (float *) ((char *) dst->data  + i1*nb1  + i2*nb2  + i3*nb3);
                 float row_sum = 0;
                 ggml_vec_sum_f32(ne00, &row_sum, src_row);
                 dst_row[0] = row_sum;
@@ -9713,51 +10004,117 @@ static void ggml_compute_forward_repeat_back(
     }
 }
 
-// ggml_compute_forward_abs
+// ggml_compute_forward_concat
 
-static void ggml_compute_forward_abs_f32(
-        const struct ggml_compute_params * params,
-        const struct ggml_tensor * src0,
-        struct ggml_tensor * dst) {
-    assert(params->ith == 0);
-    assert(ggml_are_same_shape(src0, dst));
+static void ggml_compute_forward_concat_f32(
+    const struct ggml_compute_params * params,
+    const struct ggml_tensor * src0,
+    const struct ggml_tensor * src1,
+    struct ggml_tensor * dst) {
 
     if (params->type == GGML_TASK_INIT || params->type == GGML_TASK_FINALIZE) {
         return;
     }
 
-    const int n  = ggml_nrows(src0);
-    const int nc = src0->ne[0];
+    GGML_ASSERT(src0->nb[0] == sizeof(float));
 
-    assert(dst->nb[0]  == sizeof(float));
-    assert(src0->nb[0] == sizeof(float));
+    const int ith = params->ith;
 
-    for (int i = 0; i < n; i++) {
-        ggml_vec_abs_f32(nc,
-                (float *) ((char *) dst->data  + i*( dst->nb[1])),
-                (float *) ((char *) src0->data + i*(src0->nb[1])));
-    }
-}
+    GGML_TENSOR_BINARY_OP_LOCALS;
 
-static void ggml_compute_forward_abs(
-        const struct ggml_compute_params * params,
-        const struct ggml_tensor * src0,
-        struct ggml_tensor * dst) {
-    switch (src0->type) {
-        case GGML_TYPE_F32:
-            {
-                ggml_compute_forward_abs_f32(params, src0, dst);
-            } break;
-        default:
-            {
-                GGML_ASSERT(false);
-            } break;
-    }
-}
+    // TODO: support for transposed / permuted tensors
+    GGML_ASSERT(nb0  == sizeof(float));
+    GGML_ASSERT(nb00 == sizeof(float));
+    GGML_ASSERT(nb10 == sizeof(float));
 
-// ggml_compute_forward_sgn
+    for (int i3 = 0; i3 < ne3; i3++) {
+        for (int i2 = ith; i2 < ne2; i2++) {
+            if (i2 < ne02) { // src0
+                for (int i1 = 0; i1 < ne1; i1++) {
+                    for (int i0 = 0; i0 < ne0; i0++) {
+                        const float * x = (float *)((char *) src0->data + i0 * nb00 + i1 * nb01 + i2 * nb02 + i3 * nb03);
 
-static void ggml_compute_forward_sgn_f32(
+                        float * y = (float *)((char *)dst->data + i0 * nb0 + i1 * nb1 + i2 * nb2 + i3 * nb3);
+                        *y = *x;
+                    }
+                }
+            } // src1
+            else {
+                for (int i1 = 0; i1 < ne1; i1++) {
+                    for (int i0 = 0; i0 < ne0; i0++) {
+                        const float * x = (float *)((char *) src1->data + i0 * nb10 + i1 * nb11 + (i2 - ne02) * nb12 + i3 * nb13);
+
+                        float * y = (float *)((char *)dst->data + i0 * nb0 + i1 * nb1 + i2 * nb2 + i3 * nb3);
+                        *y = *x;
+                    }
+                }
+            }
+        }
+    }
+}
+
+static void ggml_compute_forward_concat(
+    const struct ggml_compute_params* params,
+    const struct ggml_tensor* src0,
+    const struct ggml_tensor* src1,
+    struct ggml_tensor* dst) {
+    switch (src0->type) {
+        case GGML_TYPE_F32:
+            {
+                ggml_compute_forward_concat_f32(params, src0, src1, dst);
+            } break;
+        default:
+            {
+                GGML_ASSERT(false);
+            } break;
+    }
+}
+
+// ggml_compute_forward_abs
+
+static void ggml_compute_forward_abs_f32(
+        const struct ggml_compute_params * params,
+        const struct ggml_tensor * src0,
+        struct ggml_tensor * dst) {
+    assert(params->ith == 0);
+    assert(ggml_are_same_shape(src0, dst));
+
+    if (params->type == GGML_TASK_INIT || params->type == GGML_TASK_FINALIZE) {
+        return;
+    }
+
+    const int n  = ggml_nrows(src0);
+    const int nc = src0->ne[0];
+
+    assert(dst->nb[0]  == sizeof(float));
+    assert(src0->nb[0] == sizeof(float));
+
+    for (int i = 0; i < n; i++) {
+        ggml_vec_abs_f32(nc,
+                (float *) ((char *) dst->data  + i*( dst->nb[1])),
+                (float *) ((char *) src0->data + i*(src0->nb[1])));
+    }
+}
+
+static void ggml_compute_forward_abs(
+        const struct ggml_compute_params * params,
+        const struct ggml_tensor * src0,
+        struct ggml_tensor * dst) {
+    switch (src0->type) {
+        case GGML_TYPE_F32:
+            {
+                ggml_compute_forward_abs_f32(params, src0, dst);
+            } break;
+        default:
+            {
+                GGML_ASSERT(false);
+            } break;
+    }
+}
+
+// ggml_compute_forward_sgn
+
+static void ggml_compute_forward_sgn_f32(
         const struct ggml_compute_params * params,
         const struct ggml_tensor * src0,
         struct ggml_tensor * dst) {
@@ -10013,8 +10370,8 @@ static void ggml_compute_forward_gelu_f32(
         const struct ggml_compute_params * params,
         const struct ggml_tensor * src0,
         struct ggml_tensor * dst) {
-    GGML_ASSERT(ggml_is_contiguous(src0));
-    GGML_ASSERT(ggml_is_contiguous(dst));
+    GGML_ASSERT(ggml_is_contiguous_except_dim_1(src0));
+    GGML_ASSERT(ggml_is_contiguous_except_dim_1(dst));
     GGML_ASSERT(ggml_are_same_shape(src0, dst));
 
     if (params->type == GGML_TASK_INIT || params->type == GGML_TASK_FINALIZE) {
@@ -10072,8 +10429,8 @@ static void ggml_compute_forward_gelu_quick_f32(
         const struct ggml_compute_params * params,
         const struct ggml_tensor * src0,
         struct ggml_tensor * dst) {
-    GGML_ASSERT(ggml_is_contiguous(src0));
-    GGML_ASSERT(ggml_is_contiguous(dst));
+    GGML_ASSERT(ggml_is_contiguous_except_dim_1(src0));
+    GGML_ASSERT(ggml_is_contiguous_except_dim_1(dst));
     GGML_ASSERT(ggml_are_same_shape(src0, dst));
 
     if (params->type == GGML_TASK_INIT || params->type == GGML_TASK_FINALIZE) {
@@ -10131,8 +10488,8 @@ static void ggml_compute_forward_silu_f32(
         const struct ggml_compute_params * params,
         const struct ggml_tensor * src0,
         struct ggml_tensor * dst) {
-    GGML_ASSERT(ggml_is_contiguous(src0));
-    GGML_ASSERT(ggml_is_contiguous(dst));
+    GGML_ASSERT(ggml_is_contiguous_except_dim_1(src0));
+    GGML_ASSERT(ggml_is_contiguous_except_dim_1(dst));
     GGML_ASSERT(ggml_are_same_shape(src0, dst));
 
     if (params->type == GGML_TASK_INIT || params->type == GGML_TASK_FINALIZE) {
@@ -10184,7 +10541,6 @@ static void ggml_compute_forward_silu(
     }
 }
 
-
 // ggml_compute_forward_silu_back
 
 static void ggml_compute_forward_silu_back_f32(
@@ -10192,9 +10548,9 @@ static void ggml_compute_forward_silu_back_f32(
         const struct ggml_tensor * src0,
         const struct ggml_tensor * grad,
         struct ggml_tensor * dst) {
-    GGML_ASSERT(ggml_is_contiguous(grad));
-    GGML_ASSERT(ggml_is_contiguous(src0));
-    GGML_ASSERT(ggml_is_contiguous(dst));
+    GGML_ASSERT(ggml_is_contiguous_except_dim_1(grad));
+    GGML_ASSERT(ggml_is_contiguous_except_dim_1(src0));
+    GGML_ASSERT(ggml_is_contiguous_except_dim_1(dst));
     GGML_ASSERT(ggml_are_same_shape(src0, dst));
     GGML_ASSERT(ggml_are_same_shape(src0, grad));
 
@@ -10268,7 +10624,8 @@ static void ggml_compute_forward_norm_f32(
 
     GGML_TENSOR_UNARY_OP_LOCALS;
 
-    const float eps = 1e-5f; // TODO: make this a parameter
+    float eps;
+    memcpy(&eps, dst->op_params, sizeof(float));
 
     // TODO: optimize
     for (int64_t i03 = 0; i03 < ne03; i03++) {
@@ -10317,6 +10674,8 @@ static void ggml_compute_forward_norm(
     }
 }
 
+// ggml_compute_forward_group_rms_norm
+
 static void ggml_compute_forward_rms_norm_f32(
         const struct ggml_compute_params * params,
         const struct ggml_tensor * src0,
@@ -10334,7 +10693,8 @@ static void ggml_compute_forward_rms_norm_f32(
 
     GGML_TENSOR_UNARY_OP_LOCALS;
 
-    const float eps = 1e-6f; // TODO: make this a parameter
+    float eps;
+    memcpy(&eps, dst->op_params, sizeof(float));
 
     // TODO: optimize
     for (int64_t i03 = 0; i03 < ne03; i03++) {
@@ -10380,7 +10740,6 @@ static void ggml_compute_forward_rms_norm(
     }
 }
 
-
 static void ggml_compute_forward_rms_norm_back_f32(
         const struct ggml_compute_params * params,
         const struct ggml_tensor * src0,
@@ -10554,6 +10913,95 @@ static void ggml_compute_forward_rms_norm_back(
     }
 }
 
+// ggml_compute_forward_group_norm
+
+static void ggml_compute_forward_group_norm_f32(
+    const struct ggml_compute_params * params,
+    const struct ggml_tensor * src0,
+    struct ggml_tensor * dst) {
+    GGML_ASSERT(ggml_are_same_shape(src0, dst));
+
+    if (params->type == GGML_TASK_INIT || params->type == GGML_TASK_FINALIZE) {
+        return;
+    }
+
+    GGML_ASSERT(src0->nb[0] == sizeof(float));
+
+    const int ith = params->ith;
+    const int nth = params->nth;
+
+    GGML_TENSOR_UNARY_OP_LOCALS;
+
+    const float eps = 1e-6f; // TODO: make this a parameter
+
+    // TODO: optimize
+
+    int n_channels = src0->ne[2];
+    int n_groups = dst->op_params[0];
+    int n_channels_per_group = (n_channels + n_groups - 1) / n_groups;
+    for (int i = ith; i < n_groups; i+=nth) {
+        int start = i * n_channels_per_group;
+        int end = start + n_channels_per_group;
+        if (end > n_channels) {
+            end = n_channels;
+        }
+        int step = end - start;
+
+        for (int64_t i03 = 0; i03 < ne03; i03++) {
+            ggml_float sum = 0.0;
+            for (int64_t i02 = start; i02 < end; i02++) {
+                for (int64_t i01 = 0; i01 < ne01; i01++) {
+                    const float * x = (float *)((char *) src0->data + i01 * nb01 + i02 * nb02 + i03 * nb03);
+
+                    for (int64_t i00 = 0; i00 < ne00; i00++) {
+                        sum += (ggml_float)x[i00];
+                    }
+                }
+            }
+            float mean = sum / (ne00 * ne01 * step);
+            ggml_float sum2 = 0.0;
+
+            for (int64_t i02 = start; i02 < end; i02++) {
+                for (int64_t i01 = 0; i01 < ne01; i01++) {
+                    const float * x = (float *)((char *) src0->data + i01 * nb01 + i02 * nb02 + i03 * nb03);
+
+                    float * y = (float *)((char *) dst->data + i01 * nb1 + i02 * nb2 + i03 * nb3);
+
+                    for (int64_t i00 = 0; i00 < ne00; i00++) {
+                        float v = x[i00] - mean;
+                        y[i00] = v;
+                        sum2 += (ggml_float)(v * v);
+                    }
+                }
+            }
+            float variance = sum2 / (ne00 * ne01 * step);
+            const float scale = 1.0f / sqrtf(variance + eps);
+
+            for (int64_t i02 = start; i02 < end; i02++) {
+                for (int64_t i01 = 0; i01 < ne01; i01++) {
+                    float * y = (float *)((char *) dst->data + i01 * nb1 + i02 * nb2 + i03 * nb3);
+                    ggml_vec_scale_f32(ne00, y, scale);
+                }
+            }
+        }
+    }
+}
+
+static void ggml_compute_forward_group_norm(
+    const struct ggml_compute_params * params,
+    const struct ggml_tensor * src0,
+    struct ggml_tensor * dst) {
+    switch (src0->type) {
+        case GGML_TYPE_F32:
+            {
+                ggml_compute_forward_group_norm_f32(params, src0, dst);
+            } break;
+        default:
+            {
+                GGML_ASSERT(false);
+            } break;
+    }
+}
 
 // ggml_compute_forward_mul_mat
 
@@ -10585,7 +11033,7 @@ static bool ggml_compute_forward_mul_mat_use_blas(
 }
 #endif
 
-static void ggml_compute_forward_mul_mat_f32(
+static void ggml_compute_forward_mul_mat(
         const struct ggml_compute_params * params,
         const struct ggml_tensor * src0,
         const struct ggml_tensor * src1,
@@ -10598,31 +11046,43 @@ static void ggml_compute_forward_mul_mat_f32(
     const int ith = params->ith;
     const int nth = params->nth;
 
-    assert(ne02 == ne12);
-    assert(ne03 == ne13);
-    assert(ne2  == ne12);
-    assert(ne3  == ne13);
+    const enum ggml_type type = src0->type;
+
+    const bool src1_cont = ggml_is_contiguous(src1);
+
+    ggml_vec_dot_t    const vec_dot               = type_traits[type].vec_dot;
+    enum ggml_type    const vec_dot_type          = type_traits[type].vec_dot_type;
+    ggml_from_float_t const from_float_to_vec_dot = type_traits[vec_dot_type].from_float;
+
+    GGML_ASSERT(ne0 == ne01);
+    GGML_ASSERT(ne1 == ne11);
+    GGML_ASSERT(ne2 == ne12);
+    GGML_ASSERT(ne3 == ne13);
 
     // we don't support permuted src0 or src1
-    assert(nb00 == sizeof(float));
-    assert(nb10 == sizeof(float));
+    GGML_ASSERT(nb00 == ggml_type_size(type));
+    GGML_ASSERT(nb10 == sizeof(float));
 
     // dst cannot be transposed or permuted
-    assert(nb0 == sizeof(float));
-    assert(nb0 <= nb1);
-    assert(nb1 <= nb2);
-    assert(nb2 <= nb3);
+    GGML_ASSERT(nb0 == sizeof(float));
+    GGML_ASSERT(nb0 <= nb1);
+    GGML_ASSERT(nb1 <= nb2);
+    GGML_ASSERT(nb2 <= nb3);
 
-    assert(ne0 == ne01);
-    assert(ne1 == ne11);
-    assert(ne2 == ne02);
-    assert(ne3 == ne03);
+    // broadcast factors
+    const int64_t r2 = ne12/ne02;
+    const int64_t r3 = ne13/ne03;
 
     // nb01 >= nb00 - src0 is not transposed
     //   compute by src0 rows
 
 #if defined(GGML_USE_CLBLAST)
     if (ggml_cl_can_mul_mat(src0, src1, dst)) {
+        // TODO: handle case when src0 is broadcast-able into src1 across 2nd,3rd dimension
+        //       ref: https://github.com/ggerganov/ggml/pull/224
+        GGML_ASSERT(ne02 == ne12);
+        GGML_ASSERT(ne03 == ne13);
+
         if (params->ith == 0 && params->type == GGML_TASK_COMPUTE) {
             ggml_cl_mul_mat(src0, src1, dst, params->wdata, params->wsize);
         }
@@ -10644,11 +11104,30 @@ static void ggml_compute_forward_mul_mat_f32(
             return;
         }
 
-        for (int64_t i03 = 0; i03 < ne03; i03++) {
-            for (int64_t i02 = 0; i02 < ne02; i02++) {
-                const float * x = (float *) ((char *) src0->data + i02*nb02 + i03*nb03);
-                const float * y = (float *) ((char *) src1->data + i02*nb12 + i03*nb13);
-                float * d = (float *) ((char *) dst->data + i02*nb2 + i03*nb3);
+        for (int64_t i13 = 0; i13 < ne13; i13++) {
+            for (int64_t i12 = 0; i12 < ne12; i12++) {
+                // broadcast src0 into src1 across 2nd,3rd dimension
+                const int64_t i03 = i13/r3;
+                const int64_t i02 = i12/r2;
+
+                const void  * x = (char *)            src0->data + i02*nb02 + i03*nb03;
+                const float * y = (float *) ((char *) src1->data + i12*nb12 + i13*nb13);
+
+                float * d = (float *) ((char *) dst->data + i12*nb2 + i13*nb3);
+
+                if (type != GGML_TYPE_F32) {
+                            float * const wdata    = params->wdata;
+                    ggml_to_float_t const to_float = type_traits[type].to_float;
+
+                    size_t id = 0;
+                    for (int64_t i01 = 0; i01 < ne01; ++i01) {
+                        to_float((const char *) x + i01*nb01, wdata + id, ne00);
+                        id += ne00;
+                    }
+
+                    assert(id*sizeof(float) <= params->wsize);
+                    x = wdata;
+                }
 
                 cblas_sgemm(CblasRowMajor, CblasNoTrans, CblasTrans,
                         ne11, ne01, ne10,
@@ -10657,13 +11136,28 @@ static void ggml_compute_forward_mul_mat_f32(
                         0.0f,    d, ne01);
             }
         }
-        //printf("CBLAS F32 = %f ms, %d x %d x %d x %d\n", (ggml_perf_time_us() - t0)/1000.0, ne0, ne1, ne2, ne3);
+
+        //printf("CBLAS = %f ms, %d x %d x %d x %d\n", (ggml_perf_time_us() - t0)/1000.0, ne0, ne1, ne2, ne3);
 
         return;
     }
 #endif
 
     if (params->type == GGML_TASK_INIT) {
+        if (src1->type != vec_dot_type) {
+            char * wdata = params->wdata;
+            const size_t row_size = ne10*ggml_type_size(vec_dot_type)/ggml_blck_size(vec_dot_type);
+
+            for (int64_t i13 = 0; i13 < ne13; ++i13) {
+                for (int64_t i12 = 0; i12 < ne12; ++i12) {
+                    for (int64_t i11 = 0; i11 < ne11; ++i11) {
+                        from_float_to_vec_dot((float *)((char *) src1->data + i13*nb13 + i12*nb12 + i11*nb11), (void *) wdata, ne10);
+                        wdata += row_size;
+                    }
+                }
+            }
+        }
+
         return;
     }
 
@@ -10671,58 +11165,93 @@ static void ggml_compute_forward_mul_mat_f32(
         return;
     }
 
-    // parallelize by src0 rows using ggml_vec_dot_f32
+    const void * wdata    = (src1->type == vec_dot_type) ? src1->data : params->wdata;
+    const size_t row_size = ne10*ggml_type_size(vec_dot_type)/ggml_blck_size(vec_dot_type);
 
-    // total rows in src0
-    const int nr = ne01*ne02*ne03;
+    const int64_t nr0 = ne01;           // src0 rows
+    const int64_t nr1 = ne11*ne12*ne13; // src1 rows
 
-    // rows per thread
-    const int dr = (nr + nth - 1)/nth;
+    //printf("nr0 = %lld, nr1 = %lld\n", nr0, nr1);
 
-    // row range for this thread
-    const int ir0 = dr*ith;
-    const int ir1 = MIN(ir0 + dr, nr);
+    // distribute the thread work across the inner or outer loop based on which one is larger
 
-    for (int ir = ir0; ir < ir1; ++ir) {
-        // src0 indices
-        const int i03 = ir/(ne02*ne01);
-        const int i02 = (ir - i03*ne02*ne01)/ne01;
-        const int i01 = (ir - i03*ne02*ne01 - i02*ne01);
+    const int64_t nth0 = nr0 > nr1 ? nth : 1; // parallelize by src0 rows
+    const int64_t nth1 = nr0 > nr1 ? 1 : nth; // parallelize by src1 rows
 
-        for (int64_t ic = 0; ic < ne11; ++ic) {
-            // src1 indices
-            const int i13 = i03;
-            const int i12 = i02;
-            const int i11 = ic;
+    const int64_t ith0 = ith % nth0;
+    const int64_t ith1 = ith / nth0;
 
-            // dst indices
-            const int i0 = i01;
-            const int i1 = i11;
-            const int i2 = i02;
-            const int i3 = i03;
-
-            ggml_vec_dot_f32(ne00,
-                    (float *) ((char *)  dst->data + (i0*nb0 + i1*nb1 + i2*nb2 + i3*nb3)),
-                    (float *) ((char *) src0->data + (i01*nb01 + i02*nb02 + i03*nb03)),
-                    (float *) ((char *) src1->data + (i11*nb11 + i12*nb12 + i13*nb13)));
-        }
+    const int64_t dr0 = (nr0 + nth0 - 1)/nth0;
+    const int64_t dr1 = (nr1 + nth1 - 1)/nth1;
+
+    const int64_t ir010 = dr0*ith0;
+    const int64_t ir011 = MIN(ir010 + dr0, nr0);
+
+    const int64_t ir110 = dr1*ith1;
+    const int64_t ir111 = MIN(ir110 + dr1, nr1);
+
+    //printf("ir010 = %6lld, ir011 = %6lld, ir110 = %6lld, ir111 = %6lld\n", ir010, ir011, ir110, ir111);
+
+    // threads with no work simply yield (not sure if it helps)
+    if (ir010 >= ir011 || ir110 >= ir111) {
+        sched_yield();
+        return;
     }
 
-    //int64_t t1 = ggml_perf_time_us();
-    //static int64_t acc = 0;
-    //acc += t1 - t0;
-    //if (t1 - t0 > 10) {
-    //    printf("\n");
-    //    printf("ne00 = %5d, ne01 = %5d, ne02 = %5d, ne03 = %5d\n", ne00, ne01, ne02, ne03);
-    //    printf("nb00 = %5d, nb01 = %5d, nb02 = %5d, nb03 = %5d\n", nb00, nb01, nb02, nb03);
-    //    printf("ne10 = %5d, ne11 = %5d, ne12 = %5d, ne13 = %5d\n", ne10, ne11, ne12, ne13);
-    //    printf("nb10 = %5d, nb11 = %5d, nb12 = %5d, nb13 = %5d\n", nb10, nb11, nb12, nb13);
+    assert(ne12 % ne02 == 0);
+    assert(ne13 % ne03 == 0);
 
-    //    printf("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX task %d/%d: %d us, acc = %d\n", ith, nth, (int) (t1 - t0), (int) acc);
-    //}
+    // block-tiling attempt
+    const int64_t blck_0 = 16;
+    const int64_t blck_1 = 16;
+
+    // attempt to reduce false-sharing (does not seem to make a difference)
+    float tmp[16];
+
+    for (int64_t iir1 = ir110; iir1 < ir111; iir1 += blck_1) {
+        for (int64_t iir0 = ir010; iir0 < ir011; iir0 += blck_0) {
+            for (int64_t ir1 = iir1; ir1 < iir1 + blck_1 && ir1 < ir111; ++ir1) {
+                const int64_t i13 = (ir1/(ne12*ne11));
+                const int64_t i12 = (ir1 - i13*ne12*ne11)/ne11;
+                const int64_t i11 = (ir1 - i13*ne12*ne11 - i12*ne11);
+
+                // broadcast src0 into src1
+                const int64_t i03 = i13/r3;
+                const int64_t i02 = i12/r2;
+
+                const int64_t i1 = i11;
+                const int64_t i2 = i12;
+                const int64_t i3 = i13;
+
+                const char * src0_row = (const char *) src0->data + (0 + i02*nb02 + i03*nb03);
+
+                // desc: when src1 is not a contiguous memory block we have to calculate the offset using the strides
+                //       if it is, then we have either copied the data to params->wdata and made it contiguous or we are using
+                //       the original src1 data pointer, so we should index using the indices directly
+                // TODO: this is a bit of a hack, we should probably have a better way to handle this
+                const char * src1_col = (const char *) wdata +
+                    (src1_cont || src1->type != vec_dot_type
+                     ? (i11      + i12*ne11 + i13*ne12*ne11)*row_size
+                     : (i11*nb11 + i12*nb12 + i13*nb13));
+
+                float * dst_col = (float *) ((char *) dst->data + (i1*nb1 + i2*nb2 + i3*nb3));
+
+                //for (int64_t ir0 = iir0; ir0 < iir0 + blck_0 && ir0 < ir011; ++ir0) {
+                //    vec_dot(ne00, &dst_col[ir0], src0_row + ir0*nb01, src1_col);
+                //}
+
+                for (int64_t ir0 = iir0; ir0 < iir0 + blck_0 && ir0 < ir011; ++ir0) {
+                    vec_dot(ne00, &tmp[ir0 - iir0], src0_row + ir0*nb01, src1_col);
+                }
+                memcpy(&dst_col[iir0], tmp, (MIN(iir0 + blck_0, ir011) - iir0)*sizeof(float));
+            }
+        }
+    }
 }
 
-static void ggml_compute_forward_mul_mat_f16_f32(
+// ggml_compute_forward_out_prod
+
+static void ggml_compute_forward_out_prod_f32(
         const struct ggml_compute_params * params,
         const struct ggml_tensor * src0,
         const struct ggml_tensor * src1,
@@ -10732,8 +11261,6 @@ static void ggml_compute_forward_mul_mat_f16_f32(
 
     GGML_TENSOR_BINARY_OP_LOCALS;
 
-    //const int64_t ne   = ne0*ne1*ne2*ne3;
-
     const int ith = params->ith;
     const int nth = params->nth;
 
@@ -10742,319 +11269,82 @@ static void ggml_compute_forward_mul_mat_f16_f32(
     GGML_ASSERT(ne2  == ne12);
     GGML_ASSERT(ne3  == ne13);
 
-    // TODO: we don't support permuted src0
-    GGML_ASSERT(nb00 == sizeof(ggml_fp16_t));
+    // we don't support permuted src0 or src1
+    GGML_ASSERT(nb00 == sizeof(float));
 
     // dst cannot be transposed or permuted
     GGML_ASSERT(nb0 == sizeof(float));
-    GGML_ASSERT(nb0 <= nb1);
-    GGML_ASSERT(nb1 <= nb2);
-    GGML_ASSERT(nb2 <= nb3);
+    // GGML_ASSERT(nb0 <= nb1);
+    // GGML_ASSERT(nb1 <= nb2);
+    // GGML_ASSERT(nb2 <= nb3);
 
-    GGML_ASSERT(ne0 == ne01);
-    GGML_ASSERT(ne1 == ne11);
+    GGML_ASSERT(ne0 == ne00);
+    GGML_ASSERT(ne1 == ne10);
     GGML_ASSERT(ne2 == ne02);
     GGML_ASSERT(ne3 == ne03);
 
     // nb01 >= nb00 - src0 is not transposed
     //   compute by src0 rows
 
-#if defined(GGML_USE_CLBLAST)
-    if (ggml_cl_can_mul_mat(src0, src1, dst)) {
-        if (params->ith == 0 && params->type == GGML_TASK_COMPUTE) {
-            ggml_cl_mul_mat(src0, src1, dst, params->wdata, params->wsize);
-        }
+    // TODO: #if defined(GGML_USE_CUBLAS) ggml_cuda_out_prod
+    // TODO: #if defined(GGML_USE_ACCELERATE) || defined(GGML_USE_OPENBLAS) || defined(GGML_USE_CLBLAST)
+
+    if (params->type == GGML_TASK_INIT) {
+        ggml_vec_set_f32(ne0*ne1*ne2*ne3, dst->data, 0);
         return;
     }
-#endif
 
-#if defined(GGML_USE_ACCELERATE) || defined(GGML_USE_OPENBLAS)
-    if (ggml_compute_forward_mul_mat_use_blas(src0, src1, dst)) {
-        GGML_ASSERT(nb10 == sizeof(float));
+    if (params->type == GGML_TASK_FINALIZE) {
+        return;
+    }
 
-        if (params->ith != 0) {
-            return;
-        }
-
-        if (params->type == GGML_TASK_INIT) {
-            return;
-        }
-
-        if (params->type == GGML_TASK_FINALIZE) {
-            return;
-        }
-
-        for (int64_t i03 = 0; i03 < ne03; i03++) {
-            for (int64_t i02 = 0; i02 < ne02; i02++) {
-                float * const wdata = params->wdata;
-                {
-                    size_t id = 0;
-                    for (int64_t i01 = 0; i01 < ne01; ++i01) {
-                        for (int64_t i00 = 0; i00 < ne00; ++i00) {
-                            wdata[id++] = GGML_FP16_TO_FP32(*(ggml_fp16_t *) ((char *) src0->data + i03*nb03 + i02*nb02 + i01*nb01 + i00*nb00));
-                        }
-                    }
-
-                    assert(id*sizeof(float) <= params->wsize);
-                }
-
-                const float * x = wdata;
-                const float * y = (float *) ((char *) src1->data + i02*nb12 + i03*nb13);
-
-                float * d = (float *) ((char *) dst->data + i02*nb2 + i03*nb3);
-
-                // zT = y * xT
-                cblas_sgemm(CblasRowMajor, CblasNoTrans, CblasTrans,
-                        ne11, ne01, ne10,
-                        1.0f,    y, ne10,
-                                 x, ne00,
-                        0.0f,    d, ne01);
-            }
-        }
-
-        /*printf("CBLAS F16 = %f ms, %d x %d x %d x %d\n", (ggml_perf_time_us() - t0)/1000.0, ne0, ne1, ne2, ne3);*/
-
-        return;
-    }
-#endif
-
-    if (params->type == GGML_TASK_INIT) {
-        ggml_fp16_t * const wdata = params->wdata;
-
-        size_t id = 0;
-        for (int64_t i13 = 0; i13 < ne13; ++i13) {
-            for (int64_t i12 = 0; i12 < ne12; ++i12) {
-                for (int64_t i11 = 0; i11 < ne11; ++i11) {
-                    for (int64_t i10 = 0; i10 < ne10; ++i10) {
-                        wdata[id++] = GGML_FP32_TO_FP16(*(float *)((char *) src1->data + i13*nb13 + i12*nb12 + i11*nb11 + i10*nb10));
-                    }
-                }
-            }
-        }
-
-        GGML_ASSERT(id*sizeof(ggml_fp16_t) <= params->wsize);
-
-        return;
-    }
-
-    if (params->type == GGML_TASK_FINALIZE) {
-        return;
-    }
-
-    // fp16 -> half the size, so divide by 2
-    // TODO: do not support transposed src1
-    assert(nb10/2 == sizeof(ggml_fp16_t));
-
-    // parallelize by src0 rows using ggml_vec_dot_f16
-
-    // total rows in src0
-    const int nr = ne01*ne02*ne03;
-
-    // rows per thread
-    const int dr = (nr + nth - 1)/nth;
-
-    // row range for this thread
-    const int ir0 = dr*ith;
-    const int ir1 = MIN(ir0 + dr, nr);
-
-    ggml_fp16_t * wdata = params->wdata;
-
-    for (int ir = ir0; ir < ir1; ++ir) {
-        // src0 indices
-        const int i03 = ir/(ne02*ne01);
-        const int i02 = (ir - i03*ne02*ne01)/ne01;
-        const int i01 = (ir - i03*ne02*ne01 - i02*ne01);
-
-        const int i13 = i03;
-        const int i12 = i02;
-
-        const int i0 = i01;
-        const int i2 = i02;
-        const int i3 = i03;
-
-        ggml_fp16_t * src0_row = (ggml_fp16_t *) ((char *) src0->data + (i01*nb01 + i02*nb02 + i03*nb03));
-        ggml_fp16_t * src1_col =                                wdata + (       0 + i12*ne11 + i13*ne12*ne11)*ne00;
-
-        float * dst_col = (float *) ((char *) dst->data + (i0*nb0 + 0*nb1 + i2*nb2 + i3*nb3));
-
-        for (int64_t ic = 0; ic < ne11; ++ic) {
-            ggml_vec_dot_f16(ne00, &dst_col[ic*ne0], src0_row, src1_col + ic*ne00);
-        }
-    }
-
-    //int64_t t1 = ggml_time_us();
-    //static int64_t acc = 0;
-    //acc += t1 - t0;
-    //if (t1 - t0 > 10) {
-    //    printf("\n");
-    //    printf("ne00 = %5d, ne01 = %5d, ne02 = %5d, ne03 = %5d\n", ne00, ne01, ne02, ne03);
-    //    printf("nb00 = %5d, nb01 = %5d, nb02 = %5d, nb03 = %5d\n", nb00, nb01, nb02, nb03);
-    //    printf("ne10 = %5d, ne11 = %5d, ne12 = %5d, ne13 = %5d\n", ne10, ne11, ne12, ne13);
-
-    //    printf("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX task %d/%d: %d us, acc = %d\n", ith, nth, (int) (t1 - t0), (int) acc);
-    //}
-}
-
-static void ggml_compute_forward_mul_mat_q_f32(
-        const struct ggml_compute_params * params,
-        const struct ggml_tensor * src0,
-        const struct ggml_tensor * src1,
-              struct ggml_tensor * dst) {
-    int64_t t0 = ggml_perf_time_us();
-    UNUSED(t0);
-
-    GGML_TENSOR_BINARY_OP_LOCALS;
-
-    const int ith = params->ith;
-    const int nth = params->nth;
-
-    GGML_ASSERT(ne02 == ne12);
-    GGML_ASSERT(ne03 == ne13);
-    GGML_ASSERT(ne2  == ne12);
-    GGML_ASSERT(ne3  == ne13);
-
-    const enum ggml_type type = src0->type;
-    quantize_row_q_t const quantize_row_q_dot = quantize_fns[type].quantize_row_q_dot;
-    vec_dot_q_t      const vec_dot_q          = quantize_fns[type].vec_dot_q;
-    enum ggml_type   const vec_dot_type       = quantize_fns[type].vec_dot_type;
-
-    // we don't support permuted src0 or src1
-    GGML_ASSERT(nb00 == GGML_TYPE_SIZE[type]);
-    GGML_ASSERT(nb10 == sizeof(float));
-
-    // dst cannot be transposed or permuted
-    GGML_ASSERT(nb0 == sizeof(float));
-    GGML_ASSERT(nb0 <= nb1);
-    GGML_ASSERT(nb1 <= nb2);
-    GGML_ASSERT(nb2 <= nb3);
-
-    GGML_ASSERT(ne0 == ne01);
-    GGML_ASSERT(ne1 == ne11);
-    GGML_ASSERT(ne2 == ne02);
-    GGML_ASSERT(ne3 == ne03);
-
-    // nb01 >= nb00 - src0 is not transposed
-    //   compute by src0 rows
-
-#if defined(GGML_USE_CLBLAST)
-    if (ggml_cl_can_mul_mat(src0, src1, dst)) {
-        if (params->ith == 0 && params->type == GGML_TASK_COMPUTE) {
-            ggml_cl_mul_mat(src0, src1, dst, params->wdata, params->wsize);
-        }
-        return;
-    }
-#endif
-
-#if defined(GGML_USE_ACCELERATE) || defined(GGML_USE_OPENBLAS)
-    if (ggml_compute_forward_mul_mat_use_blas(src0, src1, dst)) {
-        if (params->ith != 0) {
-            return;
-        }
-
-        if (params->type == GGML_TASK_INIT) {
-            return;
-        }
-
-        if (params->type == GGML_TASK_FINALIZE) {
-            return;
-        }
-
-        float * const wdata = params->wdata;
-        dequantize_row_q_t const dequantize_row_q = quantize_fns[type].dequantize_row_q;
-
-        for (int64_t i03 = 0; i03 < ne03; i03++) {
-            for (int64_t i02 = 0; i02 < ne02; i02++) {
-                const float * y = (float *) ((char *) src1->data + i02*nb12 + i03*nb13);
-
-                float * d = (float *) ((char *) dst->data + i02*nb2 + i03*nb3);
-
-                {
-                    size_t id = 0;
-                    for (int64_t i01 = 0; i01 < ne01; ++i01) {
-                        dequantize_row_q((char *) src0->data + i03*nb03 + i02*nb02 + i01*nb01, wdata + id, ne00);
-                        id += ne00;
-                    }
-
-                    assert(id*sizeof(float) <= params->wsize);
-                }
-
-                const float * x = wdata;
-
-                cblas_sgemm(CblasRowMajor, CblasNoTrans, CblasTrans,
-                        ne11, ne01, ne10,
-                        1.0f,    y, ne10,
-                                 x, ne00,
-                        0.0f,    d, ne01);
-            }
-        }
-
-        //printf("CBLAS = %f ms, %d x %d x %d x %d\n", (ggml_perf_time_us() - t0)/1000.0, ne0, ne1, ne2, ne3);
-
-        return;
-    }
-#endif
-
-    if (params->type == GGML_TASK_INIT) {
-        char * wdata = params->wdata;
-        const size_t row_size = ne10*GGML_TYPE_SIZE[vec_dot_type]/GGML_BLCK_SIZE[vec_dot_type];
-
-        for (int64_t i13 = 0; i13 < ne13; ++i13) {
-            for (int64_t i12 = 0; i12 < ne12; ++i12) {
-                for (int64_t i11 = 0; i11 < ne11; ++i11) {
-                    quantize_row_q_dot((float *)((char *) src1->data + i13*nb13 + i12*nb12 + i11*nb11), (void *) wdata, ne10);
-                    wdata += row_size;
-                }
-            }
-        }
-
-        return;
-    }
-
-    if (params->type == GGML_TASK_FINALIZE) {
-        return;
-    }
-
-    // parallelize by src0 rows using ggml_vec_dot_q
+    // parallelize by last three dimensions
 
-    // total rows in src0
-    const int nr = ne01*ne02*ne03;
+    // total rows in dst
+    const int64_t nr = ne1*ne2*ne3;
 
     // rows per thread
-    const int dr = (nr + nth - 1)/nth;
+    const int64_t dr = (nr + nth - 1)/nth;
 
     // row range for this thread
-    const int ir0 = dr*ith;
-    const int ir1 = MIN(ir0 + dr, nr);
-
-    void * wdata = params->wdata;
-    const size_t row_size = ne00*GGML_TYPE_SIZE[vec_dot_type]/GGML_BLCK_SIZE[vec_dot_type];
+    const int64_t ir0 = dr*ith;
+    const int64_t ir1 = MIN(ir0 + dr, nr);
 
-    for (int ir = ir0; ir < ir1; ++ir) {
-        // src0 indices
-        const int i03 = ir/(ne02*ne01);
-        const int i02 = (ir - i03*ne02*ne01)/ne01;
-        const int i01 = (ir - i03*ne02*ne01 - i02*ne01);
+    // dst[:,:,:,:] = 0
+    // for i2,i3:
+    //   for i1:
+    //     for i01:
+    //       for i0:
+    //         dst[i0,i1,i2,i3] += src0[i0,i01,i2,i3] * src1[i1,i01,i2,i3]
 
-        const int i13 = i03;
-        const int i12 = i02;
+    for (int64_t ir = ir0; ir < ir1; ++ir) {
+        // dst indices
+        const int64_t i3 = ir/(ne2*ne1);
+        const int64_t i2 = (ir - i3*ne2*ne1)/ne1;
+        const int64_t i1 = (ir - i3*ne2*ne1 - i2*ne1);
 
-        const int i0 = i01;
-        const int i2 = i02;
-        const int i3 = i03;
+        const int64_t i02 = i2;
+        const int64_t i03 = i3;
 
-        void * src0_row = (void *) ((char *) src0->data + (i01*nb01 + i02*nb02 + i03*nb03));
-        char * src1_col =          ((char *)      wdata + (      (0 + i12*ne11 + i13*ne12*ne11)*row_size));
+        //const int64_t i10 = i1;
+        const int64_t i12 = i2;
+        const int64_t i13 = i3;
 
-        float * dst_col = (float *) ((char *) dst->data + (i0*nb0 + 0*nb1 + i2*nb2 + i3*nb3));
+        for (int64_t i01 = 0; i01 < ne01; ++i01) {
+            const int64_t i11 = i01;
 
-        assert(ne00 % 32 == 0);
+            float * s0 = (float *) ((char *) src0->data + (          i01*nb01 + i02*nb02 + i03*nb03));
+            float * s1 = (float *) ((char *) src1->data + (i1*nb10 + i11*nb11 + i12*nb12 + i13*nb13));
+            float * d  = (float *) ((char *)  dst->data + (          i1*nb1 + i2*nb2 + i3*nb3));
 
-        for (int64_t ic = 0; ic < ne11; ++ic) {
-            vec_dot_q(ne00, &dst_col[ic*ne0], src0_row, (void *) (src1_col + ic*row_size));
+            ggml_vec_mad_f32(ne0, d, s0, *s1);
+            // for (int64_t i0 = 0; i0 < ne0; ++i0) {
+            //     d[i0] += s0[i0] * s1[i1];
+            // }
         }
     }
 
-    //int64_t t1 = ggml_time_us();
+    //int64_t t1 = ggml_perf_time_us();
     //static int64_t acc = 0;
     //acc += t1 - t0;
     //if (t1 - t0 > 10) {
@@ -11062,12 +11352,13 @@ static void ggml_compute_forward_mul_mat_q_f32(
     //    printf("ne00 = %5d, ne01 = %5d, ne02 = %5d, ne03 = %5d\n", ne00, ne01, ne02, ne03);
     //    printf("nb00 = %5d, nb01 = %5d, nb02 = %5d, nb03 = %5d\n", nb00, nb01, nb02, nb03);
     //    printf("ne10 = %5d, ne11 = %5d, ne12 = %5d, ne13 = %5d\n", ne10, ne11, ne12, ne13);
+    //    printf("nb10 = %5d, nb11 = %5d, nb12 = %5d, nb13 = %5d\n", nb10, nb11, nb12, nb13);
 
     //    printf("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX task %d/%d: %d us, acc = %d\n", ith, nth, (int) (t1 - t0), (int) acc);
     //}
 }
 
-static void ggml_compute_forward_mul_mat(
+static void ggml_compute_forward_out_prod(
         const struct ggml_compute_params * params,
         const struct ggml_tensor * src0,
         const struct ggml_tensor * src1,
@@ -11079,21 +11370,18 @@ static void ggml_compute_forward_mul_mat(
         case GGML_TYPE_Q5_1:
         case GGML_TYPE_Q8_0:
         case GGML_TYPE_Q8_1:
-        case GGML_TYPE_Q2_K:
-        case GGML_TYPE_Q3_K:
-        case GGML_TYPE_Q4_K:
-        case GGML_TYPE_Q5_K:
-        case GGML_TYPE_Q6_K:
             {
-                ggml_compute_forward_mul_mat_q_f32(params, src0, src1, dst);
+                GGML_ASSERT(false); // todo
+                // ggml_compute_forward_out_prod_q_f32(params, src0, src1, dst);
             } break;
         case GGML_TYPE_F16:
             {
-                ggml_compute_forward_mul_mat_f16_f32(params, src0, src1, dst);
+                GGML_ASSERT(false); // todo
+                // ggml_compute_forward_out_prod_f16_f32(params, src0, src1, dst);
             } break;
         case GGML_TYPE_F32:
             {
-                ggml_compute_forward_mul_mat_f32(params, src0, src1, dst);
+                ggml_compute_forward_out_prod_f32(params, src0, src1, dst);
             } break;
         default:
             {
@@ -11102,151 +11390,9 @@ static void ggml_compute_forward_mul_mat(
     }
 }
 
-// ggml_compute_forward_out_prod
-
+// ggml_compute_forward_scale
 
-static void ggml_compute_forward_out_prod_f32(
-        const struct ggml_compute_params * params,
-        const struct ggml_tensor * src0,
-        const struct ggml_tensor * src1,
-              struct ggml_tensor * dst) {
-    int64_t t0 = ggml_perf_time_us();
-    UNUSED(t0);
-
-    GGML_TENSOR_BINARY_OP_LOCALS;
-
-    const int ith = params->ith;
-    const int nth = params->nth;
-
-    GGML_ASSERT(ne02 == ne12);
-    GGML_ASSERT(ne03 == ne13);
-    GGML_ASSERT(ne2  == ne12);
-    GGML_ASSERT(ne3  == ne13);
-
-    // we don't support permuted src0 or src1
-    GGML_ASSERT(nb00 == sizeof(float));
-
-    // dst cannot be transposed or permuted
-    GGML_ASSERT(nb0 == sizeof(float));
-    // GGML_ASSERT(nb0 <= nb1);
-    // GGML_ASSERT(nb1 <= nb2);
-    // GGML_ASSERT(nb2 <= nb3);
-
-    GGML_ASSERT(ne0 == ne00);
-    GGML_ASSERT(ne1 == ne10);
-    GGML_ASSERT(ne2 == ne02);
-    GGML_ASSERT(ne3 == ne03);
-
-    // nb01 >= nb00 - src0 is not transposed
-    //   compute by src0 rows
-
-    // TODO: #if defined(GGML_USE_CUBLAS) ggml_cuda_out_prod
-    // TODO: #if defined(GGML_USE_ACCELERATE) || defined(GGML_USE_OPENBLAS) || defined(GGML_USE_CLBLAST)
-
-    if (params->type == GGML_TASK_INIT) {
-        ggml_vec_set_f32(ne0*ne1*ne2*ne3, dst->data, 0);
-        return;
-    }
-
-    if (params->type == GGML_TASK_FINALIZE) {
-        return;
-    }
-
-    // parallelize by last three dimensions
-
-    // total rows in dst
-    const int64_t nr = ne1*ne2*ne3;
-
-    // rows per thread
-    const int64_t dr = (nr + nth - 1)/nth;
-
-    // row range for this thread
-    const int64_t ir0 = dr*ith;
-    const int64_t ir1 = MIN(ir0 + dr, nr);
-
-    // dst[:,:,:,:] = 0
-    // for i2,i3:
-    //   for i1:
-    //     for i01:
-    //       for i0:
-    //         dst[i0,i1,i2,i3] += src0[i0,i01,i2,i3] * src1[i1,i01,i2,i3]
-
-    for (int64_t ir = ir0; ir < ir1; ++ir) {
-        // dst indices
-        const int64_t i3 = ir/(ne2*ne1);
-        const int64_t i2 = (ir - i3*ne2*ne1)/ne1;
-        const int64_t i1 = (ir - i3*ne2*ne1 - i2*ne1);
-
-        const int64_t i02 = i2;
-        const int64_t i03 = i3;
-
-        //const int64_t i10 = i1;
-        const int64_t i12 = i2;
-        const int64_t i13 = i3;
-
-        for (int64_t i01 = 0; i01 < ne01; ++i01) {
-            const int64_t i11 = i01;
-
-            float * s0 = (float *) ((char *) src0->data + (          i01*nb01 + i02*nb02 + i03*nb03));
-            float * s1 = (float *) ((char *) src1->data + (i1*nb10 + i11*nb11 + i12*nb12 + i13*nb13));
-            float * d  = (float *) ((char *)  dst->data + (          i1*nb1 + i2*nb2 + i3*nb3));
-
-            ggml_vec_mad_f32(ne0, d, s0, *s1);
-            // for (int64_t i0 = 0; i0 < ne0; ++i0) {
-            //     d[i0] += s0[i0] * s1[i1];
-            // }
-        }
-    }
-
-    //int64_t t1 = ggml_perf_time_us();
-    //static int64_t acc = 0;
-    //acc += t1 - t0;
-    //if (t1 - t0 > 10) {
-    //    printf("\n");
-    //    printf("ne00 = %5d, ne01 = %5d, ne02 = %5d, ne03 = %5d\n", ne00, ne01, ne02, ne03);
-    //    printf("nb00 = %5d, nb01 = %5d, nb02 = %5d, nb03 = %5d\n", nb00, nb01, nb02, nb03);
-    //    printf("ne10 = %5d, ne11 = %5d, ne12 = %5d, ne13 = %5d\n", ne10, ne11, ne12, ne13);
-    //    printf("nb10 = %5d, nb11 = %5d, nb12 = %5d, nb13 = %5d\n", nb10, nb11, nb12, nb13);
-
-    //    printf("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX task %d/%d: %d us, acc = %d\n", ith, nth, (int) (t1 - t0), (int) acc);
-    //}
-}
-
-static void ggml_compute_forward_out_prod(
-        const struct ggml_compute_params * params,
-        const struct ggml_tensor * src0,
-        const struct ggml_tensor * src1,
-        struct ggml_tensor * dst) {
-    switch (src0->type) {
-        case GGML_TYPE_Q4_0:
-        case GGML_TYPE_Q4_1:
-        case GGML_TYPE_Q5_0:
-        case GGML_TYPE_Q5_1:
-        case GGML_TYPE_Q8_0:
-        case GGML_TYPE_Q8_1:
-            {
-                GGML_ASSERT(false); // todo
-                // ggml_compute_forward_out_prod_q_f32(params, src0, src1, dst);
-            } break;
-        case GGML_TYPE_F16:
-            {
-                GGML_ASSERT(false); // todo
-                // ggml_compute_forward_out_prod_f16_f32(params, src0, src1, dst);
-            } break;
-        case GGML_TYPE_F32:
-            {
-                ggml_compute_forward_out_prod_f32(params, src0, src1, dst);
-            } break;
-        default:
-            {
-                GGML_ASSERT(false);
-            } break;
-    }
-}
-
-// ggml_compute_forward_scale
-
-static void ggml_compute_forward_scale_f32(
+static void ggml_compute_forward_scale_f32(
         const struct ggml_compute_params * params,
         const struct ggml_tensor * src0,
         const struct ggml_tensor * src1,
@@ -11313,21 +11459,17 @@ static void ggml_compute_forward_set_f32(
         const struct ggml_compute_params * params,
         const struct ggml_tensor * src0,
         const struct ggml_tensor * src1,
-        const struct ggml_tensor * opt0,
         struct ggml_tensor * dst) {
     GGML_ASSERT(ggml_are_same_shape(src0, dst));
     GGML_ASSERT(ggml_is_contiguous(dst) && ggml_is_contiguous(src0));
 
-    GGML_ASSERT(opt0->type == GGML_TYPE_I32);
-    GGML_ASSERT(ggml_nelements(opt0) == 5);
-
     // view src0 and dst with these strides and data offset inbytes during set
     // nb0 is implicitely element_size because src0 and dst are contiguous
-    size_t nb1     = ((int32_t *) opt0->data)[0];
-    size_t nb2     = ((int32_t *) opt0->data)[1];
-    size_t nb3     = ((int32_t *) opt0->data)[2];
-    size_t offset  = ((int32_t *) opt0->data)[3];
-    bool   inplace = (bool) ((int32_t *) opt0->data)[4];
+    size_t nb1     = ((int32_t *) dst->op_params)[0];
+    size_t nb2     = ((int32_t *) dst->op_params)[1];
+    size_t nb3     = ((int32_t *) dst->op_params)[2];
+    size_t offset  = ((int32_t *) dst->op_params)[3];
+    bool   inplace = (bool) ((int32_t *) dst->op_params)[4];
 
     if (!inplace && (params->type == GGML_TASK_INIT)) {
         // memcpy needs to be synchronized across threads to avoid race conditions.
@@ -11387,13 +11529,12 @@ static void ggml_compute_forward_set(
         const struct ggml_compute_params * params,
         const struct ggml_tensor * src0,
         const struct ggml_tensor * src1,
-        const struct ggml_tensor * opt0,
         struct ggml_tensor * dst) {
 
     switch (src0->type) {
         case GGML_TYPE_F32:
             {
-                ggml_compute_forward_set_f32(params, src0, src1, opt0, dst);
+                ggml_compute_forward_set_f32(params, src0, src1, dst);
             } break;
         case GGML_TYPE_F16:
         case GGML_TYPE_Q4_0:
@@ -11490,11 +11631,11 @@ static void ggml_compute_forward_get_rows_q(
     const int nc = src0->ne[0];
     const int nr = ggml_nelements(src1);
     const enum ggml_type type = src0->type;
-    dequantize_row_q_t const dequantize_row_q = quantize_fns[type].dequantize_row_q;
+    ggml_to_float_t const dequantize_row_q = type_traits[type].to_float;
 
     assert( dst->ne[0] == nc);
     assert( dst->ne[1] == nr);
-    assert(src0->nb[0] == GGML_TYPE_SIZE[type]);
+    assert(src0->nb[0] == ggml_type_size(type));
 
     for (int i = 0; i < nr; ++i) {
         const int r = ((int32_t *) src1->data)[i];
@@ -11789,17 +11930,14 @@ static void ggml_compute_forward_diag(
 static void ggml_compute_forward_diag_mask_f32(
         const struct ggml_compute_params * params,
         const struct ggml_tensor * src0,
-        const struct ggml_tensor * src1,
         struct ggml_tensor * dst,
         const float value) {
-    GGML_ASSERT(src1->type == GGML_TYPE_I32);
-    GGML_ASSERT(ggml_nelements(src1) == 2);
 
     const int ith = params->ith;
     const int nth = params->nth;
 
-    const int  n_past  =       ((int32_t *) src1->data)[0];
-    const bool inplace = (bool)((int32_t *) src1->data)[1];
+    const int  n_past  =       ((int32_t *) dst->op_params)[0];
+    const bool inplace = (bool)((int32_t *) dst->op_params)[1];
 
     GGML_ASSERT(n_past >= 0);
 
@@ -11842,12 +11980,11 @@ static void ggml_compute_forward_diag_mask_f32(
 static void ggml_compute_forward_diag_mask_inf(
         const struct ggml_compute_params * params,
         const struct ggml_tensor * src0,
-        const struct ggml_tensor * src1,
         struct ggml_tensor * dst) {
     switch (src0->type) {
         case GGML_TYPE_F32:
             {
-                ggml_compute_forward_diag_mask_f32(params, src0, src1, dst, -INFINITY);
+                ggml_compute_forward_diag_mask_f32(params, src0, dst, -INFINITY);
             } break;
         default:
             {
@@ -11859,12 +11996,11 @@ static void ggml_compute_forward_diag_mask_inf(
 static void ggml_compute_forward_diag_mask_zero(
         const struct ggml_compute_params * params,
         const struct ggml_tensor * src0,
-        const struct ggml_tensor * src1,
         struct ggml_tensor * dst) {
     switch (src0->type) {
         case GGML_TYPE_F32:
             {
-                ggml_compute_forward_diag_mask_f32(params, src0, src1, dst, 0);
+                ggml_compute_forward_diag_mask_f32(params, src0, dst, 0);
             } break;
         default:
             {
@@ -12062,26 +12198,23 @@ static void ggml_compute_forward_soft_max_back(
 static void ggml_compute_forward_alibi_f32(
         const struct ggml_compute_params * params,
         const struct ggml_tensor * src0,
-        const struct ggml_tensor * src1,
         struct ggml_tensor * dst) {
     assert(params->ith == 0);
 
-    GGML_ASSERT(src1->type == GGML_TYPE_I32);
-    GGML_ASSERT(ggml_nelements(src1) == 3);
-
     if (params->type == GGML_TASK_INIT || params->type == GGML_TASK_FINALIZE) {
         return;
     }
 
-    const int   n_past   = ((int32_t *) src1->data)[0];
-    const int   n_head   = ((int32_t *) src1->data)[1];
-    const float max_bias = ((float *)   src1->data)[2];
+    const int n_past = ((int32_t *) dst->op_params)[0];
+    const int n_head = ((int32_t *) dst->op_params)[1];
+    float max_bias;
+    memcpy(&max_bias, (int32_t *) dst->op_params + 2, sizeof(float));
 
     assert(n_past >= 0);
 
     const int ne0 = src0->ne[0]; // all_seq_len = n_past + ne1
     const int ne1 = src0->ne[1]; // seq_len_without_past
-    //const int ne2 = src0->ne[2]; // n_head -> this is k
+    const int ne2 = src0->ne[2]; // n_head -> this is k
     //const int ne3 = src0->ne[3]; // 1 -> bsz
 
     const int n  = ggml_nrows(src0);
@@ -12092,8 +12225,9 @@ static void ggml_compute_forward_alibi_f32(
     const int nb2 = src0->nb[2];
     //const int nb3 = src0->nb[3];
 
-    assert(nb0 == sizeof(float));
-    assert(ne1 + n_past == ne0); (void) n_past;
+    GGML_ASSERT(nb0 == sizeof(float));
+    GGML_ASSERT(ne1 + n_past == ne0);
+    GGML_ASSERT(n_head == ne2);
 
     // add alibi to src0 (KQ_scaled)
     const int n_heads_log2_floor = 1 << (int) floor(log2(n_head));
@@ -12117,7 +12251,7 @@ static void ggml_compute_forward_alibi_f32(
                     m_k = powf(m1, 2 * (k - n_heads_log2_floor) + 1);
                 }
 
-                pdst[0] = (i-ne0+1) * m_k + src[0];
+                pdst[0] = i * m_k + src[0];
 
             }
         }
@@ -12127,26 +12261,23 @@ static void ggml_compute_forward_alibi_f32(
 static void ggml_compute_forward_alibi_f16(
         const struct ggml_compute_params * params,
         const struct ggml_tensor * src0,
-        const struct ggml_tensor * src1,
         struct ggml_tensor * dst) {
     assert(params->ith == 0);
 
-    GGML_ASSERT(src1->type == GGML_TYPE_I32);
-    GGML_ASSERT(ggml_nelements(src1) == 3);
-
     if (params->type == GGML_TASK_INIT || params->type == GGML_TASK_FINALIZE) {
         return;
     }
 
-    const int   n_past   = ((int32_t *) src1->data)[0];
-    const int   n_head   = ((int32_t *) src1->data)[1];
-    const float max_bias = ((float *)   src1->data)[2];
+    const int n_past = ((int32_t *) dst->op_params)[0];
+    const int n_head = ((int32_t *) dst->op_params)[1];
+    float max_bias;
+    memcpy(&max_bias, (int32_t *) dst->op_params + 2, sizeof(float));
 
     assert(n_past >= 0);
 
     const int ne0 = src0->ne[0]; // all_seq_len = n_past + ne1
     const int ne1 = src0->ne[1]; // seq_len_without_past
-    //const int ne2 = src0->ne[2]; // n_head -> this is k
+    const int ne2 = src0->ne[2]; // n_head -> this is k
     //const int ne3 = src0->ne[3]; // 1 -> bsz
 
     const int n  = ggml_nrows(src0);
@@ -12157,8 +12288,9 @@ static void ggml_compute_forward_alibi_f16(
     const int nb2 = src0->nb[2];
     //const int nb3 = src0->nb[3];
 
-    assert(nb0 == sizeof(ggml_fp16_t));
-    assert(ne1 + n_past == ne0); (void) n_past;
+    GGML_ASSERT(nb0 == sizeof(ggml_fp16_t));
+    GGML_ASSERT(ne1 + n_past == ne0); (void) n_past;
+    GGML_ASSERT(n_head == ne2);
 
     // add alibi to src0 (KQ_scaled)
     const int n_heads_log2_floor = 1 << (int) floor(log2(n_head));
@@ -12183,7 +12315,7 @@ static void ggml_compute_forward_alibi_f16(
                 }
 
                 // we return F32
-                pdst[0] = (i-ne0+1) * m_k + GGML_FP16_TO_FP32(src[0]);
+                pdst[0] = i * m_k + GGML_FP16_TO_FP32(src[0]);
             }
         }
     }
@@ -12192,16 +12324,15 @@ static void ggml_compute_forward_alibi_f16(
 static void ggml_compute_forward_alibi(
         const struct ggml_compute_params * params,
         const struct ggml_tensor * src0,
-        const struct ggml_tensor * src1,
         struct ggml_tensor * dst) {
     switch (src0->type) {
         case GGML_TYPE_F16:
             {
-                ggml_compute_forward_alibi_f16(params, src0, src1, dst);
+                ggml_compute_forward_alibi_f16(params, src0, dst);
             } break;
         case GGML_TYPE_F32:
             {
-                ggml_compute_forward_alibi_f32(params, src0, src1, dst);
+                ggml_compute_forward_alibi_f32(params, src0, dst);
             } break;
         case GGML_TYPE_Q4_0:
         case GGML_TYPE_Q4_1:
@@ -12225,25 +12356,22 @@ static void ggml_compute_forward_alibi(
     }
 }
 
-
 // ggml_compute_forward_clamp
 
 static void ggml_compute_forward_clamp_f32(
         const struct ggml_compute_params * params,
         const struct ggml_tensor * src0,
-        const struct ggml_tensor * src1,
         struct ggml_tensor * dst) {
     assert(params->ith == 0);
 
-    GGML_ASSERT(src1->type == GGML_TYPE_F32);
-    GGML_ASSERT(ggml_nelements(src1) == 2);
-
     if (params->type == GGML_TASK_INIT || params->type == GGML_TASK_FINALIZE) {
         return;
     }
 
-    const float min = ((float *) src1->data)[0];
-    const float max = ((float *) src1->data)[1];
+    float min;
+    float max;
+    memcpy(&min, (float *) dst->op_params + 0, sizeof(float));
+    memcpy(&max, (float *) dst->op_params + 1, sizeof(float));
 
     const int ith = params->ith;
     const int nth = params->nth;
@@ -12273,12 +12401,11 @@ static void ggml_compute_forward_clamp_f32(
 static void ggml_compute_forward_clamp(
         const struct ggml_compute_params * params,
         const struct ggml_tensor * src0,
-        const struct ggml_tensor * src1,
         struct ggml_tensor * dst) {
     switch (src0->type) {
         case GGML_TYPE_F32:
             {
-                ggml_compute_forward_clamp_f32(params, src0, src1, dst);
+                ggml_compute_forward_clamp_f32(params, src0, dst);
             } break;
         case GGML_TYPE_F16:
         case GGML_TYPE_Q4_0:
@@ -12308,19 +12435,27 @@ static void ggml_compute_forward_clamp(
 static void ggml_compute_forward_rope_f32(
         const struct ggml_compute_params * params,
         const struct ggml_tensor * src0,
-        const struct ggml_tensor * src1,
         struct ggml_tensor * dst) {
-    GGML_ASSERT(src1->type == GGML_TYPE_I32);
-    GGML_ASSERT(ggml_nelements(src1) == 4);
 
     if (params->type == GGML_TASK_INIT || params->type == GGML_TASK_FINALIZE) {
         return;
     }
 
-    const int n_past = ((int32_t *) src1->data)[0];
-    const int n_dims = ((int32_t *) src1->data)[1];
-    const int mode   = ((int32_t *) src1->data)[2];
-    const int n_ctx  = ((int32_t *) src1->data)[3];
+    float freq_base;
+    float freq_scale;
+
+    // these two only relevant for xPos RoPE:
+    float xpos_base;
+    bool xpos_down;
+
+    const int n_past = ((int32_t *) dst->op_params)[0];
+    const int n_dims = ((int32_t *) dst->op_params)[1];
+    const int mode   = ((int32_t *) dst->op_params)[2];
+    const int n_ctx  = ((int32_t *) dst->op_params)[3];
+    memcpy(&freq_base,  (int32_t *) dst->op_params + 4, sizeof(float));
+    memcpy(&freq_scale, (int32_t *) dst->op_params + 5, sizeof(float));
+    memcpy(&xpos_base,  (int32_t *) dst->op_params + 6, sizeof(float));
+    memcpy(&xpos_down,  (int32_t *) dst->op_params + 7, sizeof(bool));
 
     assert(n_past >= 0);
 
@@ -12349,7 +12484,7 @@ static void ggml_compute_forward_rope_f32(
     // row index used to determine which thread to use
     int ir = 0;
 
-    const float theta_scale = powf(10000.0, -2.0f/n_dims);
+    const float theta_scale = powf(freq_base, -2.0f/n_dims);
 
     const bool is_neox = mode & 2;
     const bool is_glm  = mode & 4;
@@ -12361,7 +12496,7 @@ static void ggml_compute_forward_rope_f32(
                 if (ir++ < ir0) continue;
                 if (ir   > ir1) break;
 
-                float theta = (float)p;
+                float theta = freq_scale * (float)p;
 
                 if (is_glm) {
                     theta = MIN(p, n_ctx - 2);
@@ -12392,6 +12527,9 @@ static void ggml_compute_forward_rope_f32(
                     for (int64_t i0 = 0; i0 < ne0; i0 += 2) {
                         const float cos_theta = cosf(theta);
                         const float sin_theta = sinf(theta);
+                        // zeta scaling for xPos only:
+                        float zeta = xpos_base != 0.0f ? powf((i0 + 0.4f * ne0) / (1.4f * ne0), (n_past + i2) / xpos_base) : 1.0f;
+                        if (xpos_down) zeta = 1.0f / zeta;
 
                         theta *= theta_scale;
 
@@ -12401,11 +12539,11 @@ static void ggml_compute_forward_rope_f32(
                         const float x0 = src[0];
                         const float x1 = src[1];
 
-                        dst_data[0] = x0*cos_theta - x1*sin_theta;
-                        dst_data[1] = x0*sin_theta + x1*cos_theta;
+                        dst_data[0] = x0*cos_theta*zeta - x1*sin_theta*zeta;
+                        dst_data[1] = x0*sin_theta*zeta + x1*cos_theta*zeta;
                     }
                 } else {
-                    // TODO: this is probably wrong, but I can't figure it out ..
+                    // TODO: this might be wrong for ne0 != n_dims - need double check
                     // ref:  https://github.com/huggingface/transformers/blob/main/src/transformers/models/gpt_neox/modeling_gpt_neox.py#LL251C1-L294C28
                     for (int64_t ib = 0; ib < ne0/n_dims; ++ib) {
                         for (int64_t ic = 0; ic < n_dims; ic += 2) {
@@ -12435,19 +12573,21 @@ static void ggml_compute_forward_rope_f32(
 static void ggml_compute_forward_rope_f16(
         const struct ggml_compute_params * params,
         const struct ggml_tensor * src0,
-        const struct ggml_tensor * src1,
         struct ggml_tensor * dst) {
-    GGML_ASSERT(src1->type == GGML_TYPE_I32);
-    GGML_ASSERT(ggml_nelements(src1) == 4);
 
     if (params->type == GGML_TASK_INIT || params->type == GGML_TASK_FINALIZE) {
         return;
     }
 
-    const int n_past = ((int32_t *) src1->data)[0];
-    const int n_dims = ((int32_t *) src1->data)[1];
-    const int mode   = ((int32_t *) src1->data)[2];
-    const int n_ctx  = ((int32_t *) src1->data)[3];
+    float freq_base;
+    float freq_scale;
+
+    const int n_past = ((int32_t *) dst->op_params)[0];
+    const int n_dims = ((int32_t *) dst->op_params)[1];
+    const int mode   = ((int32_t *) dst->op_params)[2];
+    const int n_ctx  = ((int32_t *) dst->op_params)[3];
+    memcpy(&freq_base,  (int32_t *) dst->op_params + 4, sizeof(float));
+    memcpy(&freq_scale, (int32_t *) dst->op_params + 5, sizeof(float));
 
     assert(n_past >= 0);
 
@@ -12476,7 +12616,7 @@ static void ggml_compute_forward_rope_f16(
     // row index used to determine which thread to use
     int ir = 0;
 
-    const float theta_scale = powf(10000.0, -2.0f/n_dims);
+    const float theta_scale = powf(freq_base, -2.0f/n_dims);
 
     const bool is_neox = mode & 2;
     const bool is_glm  = mode & 4;
@@ -12488,7 +12628,7 @@ static void ggml_compute_forward_rope_f16(
                 if (ir++ < ir0) continue;
                 if (ir   > ir1) break;
 
-                float theta = (float)p;
+                float theta = freq_scale * (float)p;
 
                 if (is_glm) {
                     theta = MIN(p, n_ctx - 2);
@@ -12532,7 +12672,7 @@ static void ggml_compute_forward_rope_f16(
                         dst_data[1] = GGML_FP32_TO_FP16(x0*sin_theta + x1*cos_theta);
                     }
                 } else {
-                    // TODO: this is probably wrong, but I can't figure it out ..
+                    // TODO: this might be wrong for ne0 != n_dims - need double check
                     // ref:  https://github.com/huggingface/transformers/blob/main/src/transformers/models/gpt_neox/modeling_gpt_neox.py#LL251C1-L294C28
                     for (int64_t ib = 0; ib < ne0/n_dims; ++ib) {
                         for (int64_t ic = 0; ic < n_dims; ic += 2) {
@@ -12549,7 +12689,7 @@ static void ggml_compute_forward_rope_f16(
                             const float x0 = GGML_FP16_TO_FP32(src[0]);
                             const float x1 = GGML_FP16_TO_FP32(src[n_dims/2]);
 
-                            dst_data[0]     = GGML_FP32_TO_FP16(x0*cos_theta - x1*sin_theta);
+                            dst_data[0]        = GGML_FP32_TO_FP16(x0*cos_theta - x1*sin_theta);
                             dst_data[n_dims/2] = GGML_FP32_TO_FP16(x0*sin_theta + x1*cos_theta);
                         }
                     }
@@ -12562,16 +12702,15 @@ static void ggml_compute_forward_rope_f16(
 static void ggml_compute_forward_rope(
         const struct ggml_compute_params * params,
         const struct ggml_tensor * src0,
-        const struct ggml_tensor * src1,
         struct ggml_tensor * dst) {
     switch (src0->type) {
         case GGML_TYPE_F16:
             {
-                ggml_compute_forward_rope_f16(params, src0, src1, dst);
+                ggml_compute_forward_rope_f16(params, src0, dst);
             } break;
         case GGML_TYPE_F32:
             {
-                ggml_compute_forward_rope_f32(params, src0, src1, dst);
+                ggml_compute_forward_rope_f32(params, src0, dst);
             } break;
         default:
             {
@@ -12585,10 +12724,7 @@ static void ggml_compute_forward_rope(
 static void ggml_compute_forward_rope_back_f32(
         const struct ggml_compute_params * params,
         const struct ggml_tensor * src0,
-        const struct ggml_tensor * src1,
         struct ggml_tensor * dst) {
-    assert(src1->type == GGML_TYPE_I32);
-    assert(ggml_nelements(src1) == 3);
 
     if (params->type == GGML_TASK_INIT || params->type == GGML_TASK_FINALIZE) {
         return;
@@ -12598,9 +12734,21 @@ static void ggml_compute_forward_rope_back_f32(
     // dx = rope_back(dy, src1)
     // src0 is dy, src1 contains options
 
-    const int n_past = ((int32_t *) src1->data)[0];
-    const int n_dims = ((int32_t *) src1->data)[1];
-    const int mode   = ((int32_t *) src1->data)[2];
+    float freq_base;
+    float freq_scale;
+
+    // these two only relevant for xPos RoPE:
+    float xpos_base;
+    bool xpos_down;
+
+    const int n_past = ((int32_t *) dst->op_params)[0];
+    const int n_dims = ((int32_t *) dst->op_params)[1];
+    const int mode   = ((int32_t *) dst->op_params)[2];
+    const int n_ctx  = ((int32_t *) dst->op_params)[3]; UNUSED(n_ctx);
+    memcpy(&freq_base,  (int32_t *) dst->op_params + 4, sizeof(float));
+    memcpy(&freq_scale, (int32_t *) dst->op_params + 5, sizeof(float));
+    memcpy(&xpos_base,  (int32_t *) dst->op_params + 6, sizeof(float));
+    memcpy(&xpos_down,  (int32_t *) dst->op_params + 7, sizeof(bool));
 
     assert(n_past >= 0);
 
@@ -12626,7 +12774,7 @@ static void ggml_compute_forward_rope_back_f32(
     // row index used to determine which thread to use
     int ir = 0;
 
-    const float theta_scale = powf(10000.0, -2.0f/n_dims);
+    const float theta_scale = powf(freq_base, -2.0f/n_dims);
 
     const bool is_neox = mode & 2;
 
@@ -12637,12 +12785,15 @@ static void ggml_compute_forward_rope_back_f32(
                 if (ir++ < ir0) continue;
                 if (ir   > ir1) break;
 
-                float theta = (float)p;
+                float theta = freq_scale * (float)p;
 
                 if (!is_neox) {
                     for (int64_t i0 = 0; i0 < ne0; i0 += 2) {
                         const float cos_theta = cosf(theta);
                         const float sin_theta = sinf(theta);
+                        // zeta scaling for xPos only:
+                        float zeta = xpos_base != 0.0f ? powf((i0 + 0.4f * ne0) / (1.4f * ne0), (n_past + i2) / xpos_base) : 1.0f;
+                        if (xpos_down) zeta = 1.0f / zeta;
 
                         theta *= theta_scale;
 
@@ -12652,8 +12803,8 @@ static void ggml_compute_forward_rope_back_f32(
                         const float dy0 = dy[0];
                         const float dy1 = dy[1];
 
-                        dx[0] =   dy0*cos_theta + dy1*sin_theta;
-                        dx[1] = - dy0*sin_theta + dy1*cos_theta;
+                        dx[0] =   dy0*cos_theta*zeta + dy1*sin_theta*zeta;
+                        dx[1] = - dy0*sin_theta*zeta + dy1*cos_theta*zeta;
                     }
                 } else {
                     for (int64_t ib = 0; ib < ne0/n_dims; ++ib) {
@@ -12684,10 +12835,7 @@ static void ggml_compute_forward_rope_back_f32(
 static void ggml_compute_forward_rope_back_f16(
         const struct ggml_compute_params * params,
         const struct ggml_tensor * src0,
-        const struct ggml_tensor * src1,
         struct ggml_tensor * dst) {
-    assert(src1->type == GGML_TYPE_I32);
-    assert(ggml_nelements(src1) == 3);
 
     if (params->type == GGML_TASK_INIT || params->type == GGML_TASK_FINALIZE) {
         return;
@@ -12697,9 +12845,9 @@ static void ggml_compute_forward_rope_back_f16(
     // dx = rope_back(dy, src1)
     // src0 is dy, src1 contains options
 
-    const int n_past = ((int32_t *) src1->data)[0];
-    const int n_dims = ((int32_t *) src1->data)[1];
-    const int mode   = ((int32_t *) src1->data)[2];
+    const int n_past = ((int32_t *) dst->op_params)[0];
+    const int n_dims = ((int32_t *) dst->op_params)[1];
+    const int mode   = ((int32_t *) dst->op_params)[2];
 
     assert(n_past >= 0);
 
@@ -12783,16 +12931,15 @@ static void ggml_compute_forward_rope_back_f16(
 static void ggml_compute_forward_rope_back(
         const struct ggml_compute_params * params,
         const struct ggml_tensor * src0,
-        const struct ggml_tensor * src1,
         struct ggml_tensor * dst) {
     switch (src0->type) {
         case GGML_TYPE_F16:
             {
-                ggml_compute_forward_rope_back_f16(params, src0, src1, dst);
+                ggml_compute_forward_rope_back_f16(params, src0, dst);
             } break;
         case GGML_TYPE_F32:
             {
-                ggml_compute_forward_rope_back_f32(params, src0, src1, dst);
+                ggml_compute_forward_rope_back_f32(params, src0, dst);
             } break;
         default:
             {
@@ -12989,7 +13136,7 @@ static void ggml_compute_forward_conv_1d_s1_ph(
         const struct ggml_compute_params * params,
         const struct ggml_tensor * src0,
         const struct ggml_tensor * src1,
-        struct ggml_tensor * dst) {
+              struct ggml_tensor * dst) {
     switch (src0->type) {
         case GGML_TYPE_F16:
             {
@@ -13192,7 +13339,7 @@ static void ggml_compute_forward_conv_1d_s2_ph(
         const struct ggml_compute_params * params,
         const struct ggml_tensor * src0,
         const struct ggml_tensor * src1,
-        struct ggml_tensor * dst) {
+              struct ggml_tensor * dst) {
     switch (src0->type) {
         case GGML_TYPE_F16:
             {
@@ -13212,14 +13359,13 @@ static void ggml_compute_forward_conv_1d_s2_ph(
 // ggml_compute_forward_conv_1d
 
 static void ggml_compute_forward_conv_1d(
-    const struct ggml_compute_params * params,
-    const struct ggml_tensor * src0,
-    const struct ggml_tensor * src1,
-    const struct ggml_tensor * opt0,
-    struct ggml_tensor * dst) {
-    const int32_t s0 = ((const int32_t*)(opt0->data))[0];
-    const int32_t p0 = ((const int32_t*)(opt0->data))[1];
-    const int32_t d0 = ((const int32_t*)(opt0->data))[2];
+        const struct ggml_compute_params * params,
+        const struct ggml_tensor * src0,
+        const struct ggml_tensor * src1,
+              struct ggml_tensor * dst) {
+    const int32_t s0 = ((const int32_t*)(dst->op_params))[0];
+    const int32_t p0 = ((const int32_t*)(dst->op_params))[1];
+    const int32_t d0 = ((const int32_t*)(dst->op_params))[2];
     GGML_ASSERT(d0 == 1); // dilation not supported
     GGML_ASSERT(p0 == src0->ne[0]/2); // only half padding supported
     if (s0 == 1) {
@@ -13231,9 +13377,9 @@ static void ggml_compute_forward_conv_1d(
     };
 }
 
-// ggml_compute_forward_conv_2d_sk_p0
+// ggml_compute_forward_conv_2d
 
-static void ggml_compute_forward_conv_2d_sk_p0_f16_f32(
+static void ggml_compute_forward_conv_2d_f16_f32(
         const struct ggml_compute_params * params,
         const struct ggml_tensor * src0,
         const struct ggml_tensor * src1,
@@ -13256,11 +13402,17 @@ static void ggml_compute_forward_conv_2d_sk_p0_f16_f32(
     // size of the convolution row - the kernel size unrolled across all channels
     const int ew0 = nk0*nk1*ne02;
 
+    const int32_t s0 = ((const int32_t*)(dst->op_params))[0];
+    const int32_t s1 = ((const int32_t*)(dst->op_params))[1];
+    const int32_t p0 = ((const int32_t*)(dst->op_params))[2];
+    const int32_t p1 = ((const int32_t*)(dst->op_params))[3];
+    const int32_t d0 = ((const int32_t*)(dst->op_params))[4];
+    const int32_t d1 = ((const int32_t*)(dst->op_params))[5];
+
     GGML_ASSERT(nb00 == sizeof(ggml_fp16_t));
     GGML_ASSERT(nb10 == sizeof(float));
 
     if (params->type == GGML_TASK_INIT) {
-        // TODO: fix this memset (wsize is overestimated)
         memset(params->wdata, 0, params->wsize);
 
         // prepare source data (src1)
@@ -13275,8 +13427,13 @@ static void ggml_compute_forward_conv_2d_sk_p0_f16_f32(
                     for (int i0 = 0; i0 < ne0; i0++) {
                         for (int ik1 = 0; ik1 < nk1; ik1++) {
                             for (int ik0 = 0; ik0 < nk0; ik0++) {
-                                dst_data[(i1*ne0 + i0)*ew0 + i12*(nk0*nk1) + ik1*nk0 + ik0] =
-                                    GGML_FP32_TO_FP16(src[(i1*nk1 + ik1)*ne10 + (i0*nk0 + ik0)]);
+                                const int idx0 = i0*s0 + ik0*d0 - p0;
+                                const int idx1 = i1*s1 + ik1*d1 - p1;
+
+                                if (!(idx1 < 0 || idx1 >= ne11 || idx0 < 0 || idx0 >= ne10)) {
+                                    dst_data[(i1*ne0 + i0)*ew0 + i12*(nk0*nk1) + ik1*nk0 + ik0] =
+                                        GGML_FP32_TO_FP16(src[idx1*ne10 + idx0]);
+                                }
                             }
                         }
                     }
@@ -13303,32 +13460,34 @@ static void ggml_compute_forward_conv_2d_sk_p0_f16_f32(
 
     ggml_fp16_t * const wdata = (ggml_fp16_t *) params->wdata + 0;
 
-    for (int i2 = ip0; i2 < ip1; i2++) {
-        float * dst_data = (float *)((char *) dst->data + i2*nb2);
-
-        for (int i1 = 0; i1 < ne1; ++i1) {
-            for (int i0 = 0; i0 < ne0; ++i0) {
-                ggml_vec_dot_f16(ew0, dst_data + i1*ne0 + i0,
-                        (ggml_fp16_t *) ((char *) src0->data + i2*nb03),
-                        (ggml_fp16_t *)                wdata + (i1*ne0 + i0)*ew0);
+    for (int i3 = 0; i3 < ne3; i3++) {
+        for (int i2 = ip0; i2 < ip1; i2++) {
+            float * dst_data = (float *)((char *) dst->data + i3*nb3 + i2*nb2);
+
+            for (int i1 = 0; i1 < ne1; ++i1) {
+                for (int i0 = 0; i0 < ne0; ++i0) {
+                    ggml_vec_dot_f16(ew0, dst_data + i1*ne0 + i0,
+                            (ggml_fp16_t *) ((char *) src0->data + i2*nb03),
+                            (ggml_fp16_t *)                wdata + i3*nb3 + (i1*ne0 + i0)*ew0);
+                }
             }
         }
     }
 }
 
-static void ggml_compute_forward_conv_2d_sk_p0(
+static void ggml_compute_forward_conv_2d(
         const struct ggml_compute_params * params,
         const struct ggml_tensor * src0,
         const struct ggml_tensor * src1,
-        struct ggml_tensor * dst) {
+              struct ggml_tensor * dst) {
     switch (src0->type) {
         case GGML_TYPE_F16:
             {
-                ggml_compute_forward_conv_2d_sk_p0_f16_f32(params, src0, src1, dst);
+                ggml_compute_forward_conv_2d_f16_f32(params, src0, src1, dst);
             } break;
         case GGML_TYPE_F32:
             {
-                //ggml_compute_forward_conv_2d_sk_p0_f32(params, src0, src1, dst);
+                //ggml_compute_forward_conv_2d_f32(params, src0, src1, dst);
                 GGML_ASSERT(false);
             } break;
         default:
@@ -13338,74 +13497,359 @@ static void ggml_compute_forward_conv_2d_sk_p0(
     }
 }
 
-// ggml_compute_forward_conv_2d
-
-static void ggml_compute_forward_conv_2d(
-    const struct ggml_compute_params* params,
-    const struct ggml_tensor* src0,
-    const struct ggml_tensor* src1,
-    const struct ggml_tensor* opt0,
-    struct ggml_tensor* dst) {
-    const int32_t s0 = ((const int32_t*)(opt0->data))[0];
-    const int32_t s1 = ((const int32_t*)(opt0->data))[1];
-    const int32_t p0 = ((const int32_t*)(opt0->data))[2];
-    const int32_t p1 = ((const int32_t*)(opt0->data))[3];
-    const int32_t d0 = ((const int32_t*)(opt0->data))[4];
-    const int32_t d1 = ((const int32_t*)(opt0->data))[5];
-    GGML_ASSERT(d0 == 1); // dilation not supported
-    GGML_ASSERT(d1 == 1);
-    GGML_ASSERT(p0 == 0); // padding not supported
-    GGML_ASSERT(p1 == 0);
-
-    if (s0 == src0->ne[0] && s1 == src0->ne[1]) {
-        ggml_compute_forward_conv_2d_sk_p0(params, src0, src1, dst);
-    }
-    else {
-        GGML_ASSERT(false); // only stride equal to kernel size is supported
-    };
-}
-
-
-// ggml_compute_forward_flash_attn
+// ggml_compute_forward_conv_transpose_2d
 
-static void ggml_compute_forward_flash_attn_f32(
+static void ggml_compute_forward_conv_transpose_2d(
         const struct ggml_compute_params * params,
-        const struct ggml_tensor * q,
-        const struct ggml_tensor * k,
-        const struct ggml_tensor * v,
-        const bool masked,
-             struct ggml_tensor * dst) {
+        const struct ggml_tensor * src0,
+        const struct ggml_tensor * src1,
+              struct ggml_tensor * dst) {
+    GGML_ASSERT(src0->type == GGML_TYPE_F16);
+    GGML_ASSERT(src1->type == GGML_TYPE_F32);
+    GGML_ASSERT( dst->type == GGML_TYPE_F32);
+
     int64_t t0 = ggml_perf_time_us();
     UNUSED(t0);
 
-    GGML_TENSOR_LOCALS(int64_t, neq, q,   ne);
-    GGML_TENSOR_LOCALS(size_t,  nbq, q,   nb);
-    GGML_TENSOR_LOCALS(int64_t, nek, k,   ne);
-    GGML_TENSOR_LOCALS(size_t,  nbk, k,   nb);
-    GGML_TENSOR_LOCALS(int64_t, nev, v,   ne);
-    GGML_TENSOR_LOCALS(size_t,  nbv, v,   nb);
-    GGML_TENSOR_LOCALS(int64_t, ne,  dst, ne);
-    GGML_TENSOR_LOCALS(size_t,  nb,  dst, nb);
+    GGML_TENSOR_BINARY_OP_LOCALS;
 
     const int ith = params->ith;
     const int nth = params->nth;
 
-    const int64_t D = neq0;
-    const int64_t N = neq1;
-    const int64_t P = nek1 - N;
-    const int64_t M = P + N;
+    const int nk = ne00*ne01*ne02*ne03;
 
-    const int Mup = ggml_up(M, GGML_SOFT_MAX_UNROLL);
+    GGML_ASSERT(nb00 == sizeof(ggml_fp16_t));
+    GGML_ASSERT(nb10 == sizeof(float));
 
-    GGML_ASSERT(ne0 == D);
-    GGML_ASSERT(ne1 == N);
-    GGML_ASSERT(P >= 0);
+    if (params->type == GGML_TASK_INIT) {
+        memset(params->wdata, 0, params->wsize);
 
-    GGML_ASSERT(nbq0 == sizeof(float));
-    GGML_ASSERT(nbk0 == sizeof(float));
-    GGML_ASSERT(nbv0 == sizeof(float));
+        // permute kernel data (src0) from (Kw x Kh x Cout x Cin) to (Cin x Kw x Kh x Cout)
+        {
+            ggml_fp16_t * const wdata = (ggml_fp16_t *) params->wdata + 0;
 
-    GGML_ASSERT(neq0 == D);
+            for (int64_t i03 = 0; i03 < ne03; i03++) {
+                for (int64_t i02 = 0; i02 < ne02; i02++) {
+                    const ggml_fp16_t * const src = (ggml_fp16_t *)((char *) src0->data + i03*nb03 + i02*nb02);
+                    ggml_fp16_t * dst_data = wdata + i02*ne01*ne00*ne03;
+                    for (int64_t i01 = 0; i01 < ne01; i01++) {
+                        for (int64_t i00 = 0; i00 < ne00; i00++) {
+                            dst_data[i01*ne00*ne03 + i00*ne03 + i03] = src[i01 * ne00 + i00];
+                        }
+                    }
+                }
+            }
+        }
+
+        // permute source data (src1) from (Sw x Sh x Cin) to (Cin x Sw x Sh)
+        {
+            ggml_fp16_t * const wdata = (ggml_fp16_t *) params->wdata + nk;
+            for (int i12 = 0; i12 < ne12; i12++) {
+                for (int i11 = 0; i11 < ne11; i11++) {
+                    const float * const src = (float *)((char *) src1->data + i12*nb12 + i11*nb11);
+                    ggml_fp16_t * dst_data = wdata + i11*ne10*ne12;
+                    for (int i10 = 0; i10 < ne10; i10++) {
+                        dst_data[i10*ne12 + i12] = GGML_FP32_TO_FP16(src[i10]);
+                    }
+                }
+            }
+        }
+
+        return;
+    }
+
+    if (params->type == GGML_TASK_FINALIZE) {
+        return;
+    }
+
+    const int32_t stride = ggml_get_op_params_i32(dst, 0);
+
+    // total patches in dst
+    const int np = ne2;
+
+    // patches per thread
+    const int dp = (np + nth - 1)/nth;
+
+    // patch range for this thread
+    const int ip0 = dp*ith;
+    const int ip1 = MIN(ip0 + dp, np);
+
+    ggml_fp16_t * const wdata = (ggml_fp16_t *) params->wdata + 0;
+    ggml_fp16_t * const wdata_src = wdata + nk;
+
+    for (int i2 = ip0; i2 < ip1; i2++) { // Cout
+        float * dst_data = (float *)((char *) dst->data + i2*nb2);
+        ggml_fp16_t * wdata_kernel = wdata + i2*ne01*ne00*ne03;
+        for (int i11 = 0; i11 < ne11; i11++) {
+            for (int i10 = 0; i10 < ne10; i10++) {
+                const int i1n = i11*ne10*ne12 + i10*ne12;
+                for (int i01 = 0; i01 < ne01; i01++) {
+                    for (int i00 = 0; i00 < ne00; i00++) {
+                        float v = 0;
+                        ggml_vec_dot_f16(ne03, &v,
+                                wdata_src + i1n,
+                                wdata_kernel + i01*ne00*ne03 + i00*ne03);
+                        dst_data[(i11*stride + i01)*ne0 + i10*stride + i00] += v;
+                    }
+                }
+            }
+        }
+    }
+}
+
+// ggml_compute_forward_pool_1d_sk_p0
+
+static void ggml_compute_forward_pool_1d_sk_p0(
+        const struct ggml_compute_params * params,
+        const enum ggml_op_pool op,
+        const struct ggml_tensor * src,
+        const int k,
+        struct ggml_tensor * dst) {
+    assert(src->type == GGML_TYPE_F32);
+    assert(params->ith == 0);
+
+    if (params->type == GGML_TASK_INIT || params->type == GGML_TASK_FINALIZE) {
+        return;
+    }
+
+    const char * cdata = (const char *)src->data;
+    const char * const data_end = cdata + ggml_nbytes(src);
+    float * drow = (float *)dst->data;
+
+    const int64_t rs = dst->ne[0];
+
+    while (cdata < data_end) {
+        const float * const srow = (const float *)cdata;
+
+        int j = 0;
+
+        for (int64_t i = 0; i < rs; ++i) {
+            switch (op) {
+                case GGML_OP_POOL_AVG:   drow[i] = 0;        break;
+                case GGML_OP_POOL_MAX:   drow[i] = -FLT_MAX; break;
+                case GGML_OP_POOL_COUNT: GGML_ASSERT(false); break;
+            }
+            for (int ki = 0; ki < k; ++ki) {
+                switch (op) {
+                    case GGML_OP_POOL_AVG:                          drow[i] += srow[j]; break;
+                    case GGML_OP_POOL_MAX:   if (srow[j] > drow[i]) drow[i]  = srow[j]; break;
+                    case GGML_OP_POOL_COUNT:                        GGML_ASSERT(false); break;
+                }
+                ++j;
+            }
+            switch (op) {
+                case GGML_OP_POOL_AVG:         drow[i] /= k; break;
+                case GGML_OP_POOL_MAX:                       break;
+                case GGML_OP_POOL_COUNT: GGML_ASSERT(false); break;
+            }
+        }
+
+        cdata += src->nb[1];
+        drow  += rs;
+    }
+}
+
+// ggml_compute_forward_pool_1d
+
+static void ggml_compute_forward_pool_1d(
+        const struct ggml_compute_params * params,
+        const struct ggml_tensor * src0,
+              struct ggml_tensor * dst) {
+
+    const int32_t * opts = (const int32_t *)dst->op_params;
+    enum ggml_op_pool op = opts[0];
+    const int k0 = opts[1];
+    const int s0 = opts[2];
+    const int p0 = opts[3];
+    GGML_ASSERT(p0 == 0); // padding not supported
+    GGML_ASSERT(k0 == s0); // only s = k supported
+
+    ggml_compute_forward_pool_1d_sk_p0(params, op, src0, k0, dst);
+}
+
+// ggml_compute_forward_pool_2d_sk_p0
+
+static void ggml_compute_forward_pool_2d_sk_p0(
+        const struct ggml_compute_params * params,
+        const enum   ggml_op_pool op,
+        const struct ggml_tensor * src,
+        const int k0,
+        const int k1,
+        struct ggml_tensor * dst) {
+    assert(src->type == GGML_TYPE_F32);
+    assert(params->ith == 0);
+
+    if (params->type == GGML_TASK_INIT || params->type == GGML_TASK_FINALIZE) {
+        return;
+    }
+
+    const char * cdata = (const char*)src->data;
+    const char * const data_end = cdata + ggml_nbytes(src);
+
+    const int64_t px = dst->ne[0];
+    const int64_t py = dst->ne[1];
+    const int64_t pa = px * py;
+
+    float * dplane = (float *)dst->data;
+
+    const int ka = k0 * k1;
+
+    while (cdata < data_end) {
+        for (int oy = 0; oy < py; ++oy) {
+            float * const drow = dplane + oy * px;
+            for (int ox = 0; ox < px; ++ox) {
+                float * const out =  drow + ox;
+                switch (op) {
+                    case GGML_OP_POOL_AVG:     *out = 0;        break;
+                    case GGML_OP_POOL_MAX:     *out = -FLT_MAX; break;
+                    case GGML_OP_POOL_COUNT: GGML_ASSERT(false); break;
+                }
+
+                const int ix = ox * k0;
+                const int iy = oy * k1;
+
+                for (int ky = 0; ky < k1; ++ky) {
+                    const float * const srow = (const float *)(cdata + src->nb[1] * (iy + ky));
+                    for (int kx = 0; kx < k0; ++kx) {
+                        int j = ix + kx;
+                        switch (op) {
+                            case GGML_OP_POOL_AVG:                     *out += srow[j]; break;
+                            case GGML_OP_POOL_MAX: if (srow[j] > *out) *out  = srow[j]; break;
+                            case GGML_OP_POOL_COUNT:                GGML_ASSERT(false); break;
+                        }
+                    }
+                }
+                switch (op) {
+                    case GGML_OP_POOL_AVG:           *out /= ka; break;
+                    case GGML_OP_POOL_MAX:                       break;
+                    case GGML_OP_POOL_COUNT: GGML_ASSERT(false); break;
+                }
+            }
+        }
+
+        cdata  += src->nb[2];
+        dplane += pa;
+    }
+}
+
+// ggml_compute_forward_pool_2d
+
+static void ggml_compute_forward_pool_2d(
+        const struct ggml_compute_params * params,
+        const struct ggml_tensor * src0,
+              struct ggml_tensor * dst) {
+
+    const int32_t * opts = (const int32_t *)dst->op_params;
+    enum ggml_op_pool op = opts[0];
+    const int k0 = opts[1];
+    const int k1 = opts[2];
+    const int s0 = opts[3];
+    const int s1 = opts[4];
+    const int p0 = opts[5];
+    const int p1 = opts[6];
+    GGML_ASSERT(p0 == 0);
+    GGML_ASSERT(p1 == 0); // padding not supported
+    GGML_ASSERT(k0 == s0);
+    GGML_ASSERT(k1 == s1); // only s = k supported
+
+    ggml_compute_forward_pool_2d_sk_p0(params, op, src0, k0, k1, dst);
+}
+
+// ggml_compute_forward_upscale
+
+static void ggml_compute_forward_upscale_f32(
+    const struct ggml_compute_params * params,
+    const struct ggml_tensor * src0,
+    struct ggml_tensor * dst) {
+
+    if (params->type == GGML_TASK_INIT || params->type == GGML_TASK_FINALIZE) {
+        return;
+    }
+
+    GGML_ASSERT(src0->nb[0] == sizeof(float));
+
+    const int ith = params->ith;
+
+    GGML_TENSOR_UNARY_OP_LOCALS;
+
+    const int scale_factor = dst->op_params[0];
+
+    // TODO: optimize
+
+    for (int i03 = 0; i03 < ne03; i03++) {
+        for (int i02 = ith; i02 < ne02; i02++) {
+            for (int m = 0; m < dst->ne[1]; m++) {
+                int i01 = m / scale_factor;
+                for (int n = 0; n < dst->ne[0]; n++) {
+                    int i00 = n / scale_factor;
+
+                    const float * x = (float *)((char *) src0->data + i00 * nb00 +i01 * nb01 + i02 * nb02 + i03 * nb03);
+
+                    float * y = (float *)((char *) dst->data + n * dst->nb[0] + m * dst->nb[1] + i02 * dst->nb[2] + i03 * dst->nb[3]);
+
+                    *y = *x;
+                }
+            }
+        }
+    }
+}
+
+static void ggml_compute_forward_upscale(
+    const struct ggml_compute_params * params,
+    const struct ggml_tensor * src0,
+    struct ggml_tensor * dst) {
+    switch (src0->type) {
+        case GGML_TYPE_F32:
+            {
+                ggml_compute_forward_upscale_f32(params, src0, dst);
+            } break;
+        default:
+            {
+                GGML_ASSERT(false);
+            } break;
+    }
+}
+
+// ggml_compute_forward_flash_attn
+
+static void ggml_compute_forward_flash_attn_f32(
+        const struct ggml_compute_params * params,
+        const struct ggml_tensor * q,
+        const struct ggml_tensor * k,
+        const struct ggml_tensor * v,
+        const bool masked,
+        struct ggml_tensor * dst) {
+    int64_t t0 = ggml_perf_time_us();
+    UNUSED(t0);
+
+    GGML_TENSOR_LOCALS(int64_t, neq, q,   ne);
+    GGML_TENSOR_LOCALS(size_t,  nbq, q,   nb);
+    GGML_TENSOR_LOCALS(int64_t, nek, k,   ne);
+    GGML_TENSOR_LOCALS(size_t,  nbk, k,   nb);
+    GGML_TENSOR_LOCALS(int64_t, nev, v,   ne);
+    GGML_TENSOR_LOCALS(size_t,  nbv, v,   nb);
+    GGML_TENSOR_LOCALS(int64_t, ne,  dst, ne);
+    GGML_TENSOR_LOCALS(size_t,  nb,  dst, nb);
+
+    const int ith = params->ith;
+    const int nth = params->nth;
+
+    const int64_t D = neq0;
+    const int64_t N = neq1;
+    const int64_t P = nek1 - N;
+    const int64_t M = P + N;
+
+    const int Mup = ggml_up(M, GGML_SOFT_MAX_UNROLL);
+
+    GGML_ASSERT(ne0 == D);
+    GGML_ASSERT(ne1 == N);
+    GGML_ASSERT(P >= 0);
+
+    GGML_ASSERT(nbq0 == sizeof(float));
+    GGML_ASSERT(nbk0 == sizeof(float));
+    GGML_ASSERT(nbv0 == sizeof(float));
+
+    GGML_ASSERT(neq0 == D);
     GGML_ASSERT(nek0 == D);
     GGML_ASSERT(nev1 == D);
 
@@ -13552,7 +13996,7 @@ static void ggml_compute_forward_flash_attn_f16(
         const struct ggml_tensor * k,
         const struct ggml_tensor * v,
         const bool masked,
-             struct ggml_tensor * dst) {
+        struct ggml_tensor * dst) {
     int64_t t0 = ggml_perf_time_us();
     UNUSED(t0);
 
@@ -14317,7 +14761,6 @@ static void ggml_compute_forward_flash_attn_back(
 static void ggml_compute_forward_win_part_f32(
         const struct ggml_compute_params * params,
         const struct ggml_tensor * src0,
-        const struct ggml_tensor * opt0,
         struct ggml_tensor * dst) {
     if (params->type == GGML_TASK_INIT || params->type == GGML_TASK_FINALIZE) {
         return;
@@ -14326,9 +14769,9 @@ static void ggml_compute_forward_win_part_f32(
     GGML_TENSOR_LOCALS(int64_t, ne0, src0, ne);
     GGML_TENSOR_LOCALS(int64_t, ne,  dst,  ne);
 
-    const int32_t nep0 = ((const int32_t *)(opt0->data))[0];
-    const int32_t nep1 = ((const int32_t *)(opt0->data))[1];
-    const int32_t w    = ((const int32_t *)(opt0->data))[2];
+    const int32_t nep0 = ((const int32_t *)(dst->op_params))[0];
+    const int32_t nep1 = ((const int32_t *)(dst->op_params))[1];
+    const int32_t w    = ((const int32_t *)(dst->op_params))[2];
 
     assert(ne00 == ne0);
     assert(ne3  == nep0*nep1);
@@ -14362,12 +14805,11 @@ static void ggml_compute_forward_win_part_f32(
 static void ggml_compute_forward_win_part(
         const struct ggml_compute_params * params,
         const struct ggml_tensor * src0,
-        const struct ggml_tensor * opt0,
         struct ggml_tensor * dst) {
     switch (src0->type) {
         case GGML_TYPE_F32:
             {
-                ggml_compute_forward_win_part_f32(params, src0, opt0, dst);
+                ggml_compute_forward_win_part_f32(params, src0, dst);
             } break;
         default:
             {
@@ -14381,7 +14823,6 @@ static void ggml_compute_forward_win_part(
 static void ggml_compute_forward_win_unpart_f32(
         const struct ggml_compute_params * params,
         const struct ggml_tensor * src0,
-        const struct ggml_tensor * opt0,
         struct ggml_tensor * dst) {
     if (params->type == GGML_TASK_INIT || params->type == GGML_TASK_FINALIZE) {
         return;
@@ -14390,7 +14831,7 @@ static void ggml_compute_forward_win_unpart_f32(
     GGML_TENSOR_LOCALS(int64_t, ne0, src0, ne);
     GGML_TENSOR_LOCALS(int64_t, ne,  dst,  ne);
 
-    const int32_t w = ((const int32_t *)(opt0->data))[0];
+    const int32_t w = ((const int32_t *)(dst->op_params))[0];
 
     // padding
     const int px = (w - ne1%w)%w;
@@ -14424,12 +14865,11 @@ static void ggml_compute_forward_win_unpart_f32(
 static void ggml_compute_forward_win_unpart(
         const struct ggml_compute_params * params,
         const struct ggml_tensor * src0,
-        const struct ggml_tensor * opt0,
         struct ggml_tensor * dst) {
     switch (src0->type) {
         case GGML_TYPE_F32:
             {
-                ggml_compute_forward_win_unpart_f32(params, src0, opt0, dst);
+                ggml_compute_forward_win_unpart_f32(params, src0, dst);
             } break;
         default:
             {
@@ -14438,42 +14878,99 @@ static void ggml_compute_forward_win_unpart(
     }
 }
 
-// ggml_compute_forward_map_unary
+//gmml_compute_forward_unary
 
-static void ggml_compute_forward_map_unary_f32(
+static void ggml_compute_forward_unary(
         const struct ggml_compute_params * params,
         const struct ggml_tensor * src0,
-        struct ggml_tensor * dst,
-        const ggml_unary_op_f32_t fun) {
-    GGML_ASSERT(ggml_are_same_shape(src0, dst));
+        struct ggml_tensor * dst) {
+    const enum ggml_unary_op op = ggml_get_unary_op(dst);
+
+    switch (op) {
+        case GGML_UNARY_OP_ABS:
+            {
+                ggml_compute_forward_abs(params, src0, dst);
+            } break;
+        case GGML_UNARY_OP_SGN:
+            {
+                ggml_compute_forward_sgn(params, src0, dst);
+            } break;
+        case GGML_UNARY_OP_NEG:
+            {
+                ggml_compute_forward_neg(params, src0, dst);
+            } break;
+        case GGML_UNARY_OP_STEP:
+            {
+                ggml_compute_forward_step(params, src0, dst);
+            } break;
+        case GGML_UNARY_OP_TANH:
+            {
+                ggml_compute_forward_tanh(params, src0, dst);
+            } break;
+        case GGML_UNARY_OP_ELU:
+            {
+                ggml_compute_forward_elu(params, src0, dst);
+            } break;
+        case GGML_UNARY_OP_RELU:
+            {
+                ggml_compute_forward_relu(params, src0, dst);
+            } break;
+        case GGML_UNARY_OP_GELU:
+            {
+                ggml_compute_forward_gelu(params, src0, dst);
+            } break;
+        case GGML_UNARY_OP_GELU_QUICK:
+            {
+                ggml_compute_forward_gelu_quick(params, src0, dst);
+            } break;
+        case GGML_UNARY_OP_SILU:
+            {
+                ggml_compute_forward_silu(params, src0, dst);
+            } break;
+        default:
+            {
+                GGML_ASSERT(false);
+            } break;
+    }
+}
 
+// ggml_compute_forward_get_rel_pos
+
+static void ggml_compute_forward_get_rel_pos_f16(
+        const struct ggml_compute_params * params,
+        const struct ggml_tensor * src0,
+        struct ggml_tensor * dst) {
     if (params->type == GGML_TASK_INIT || params->type == GGML_TASK_FINALIZE) {
         return;
     }
 
-    const int n  = ggml_nrows(src0);
-    const int nc = src0->ne[0];
+    // ref: https://github.com/facebookresearch/segment-anything/blob/main/segment_anything/modeling/image_encoder.py#L292-L322
 
-    assert( dst->nb[0] == sizeof(float));
-    assert(src0->nb[0] == sizeof(float));
+    GGML_TENSOR_UNARY_OP_LOCALS;
 
-    for (int i = 0; i < n; i++) {
-        fun(nc,
-                (float *) ((char *) dst->data  + i*( dst->nb[1])),
-                (float *) ((char *) src0->data + i*(src0->nb[1])));
+    const int64_t w = ne1;
+
+    ggml_fp16_t * src0_data = (ggml_fp16_t *) src0->data;
+    ggml_fp16_t * dst_data  = (ggml_fp16_t *) dst->data;
+
+    for (int64_t i2 = 0; i2 < ne2; ++i2) {
+        for (int64_t i1 = 0; i1 < ne1; ++i1) {
+            const int64_t pos = (w - i1 - 1) + i2;
+            for (int64_t i0 = 0; i0 < ne0; ++i0) {
+                dst_data[i2*ne1*ne0 + i1*ne0 + i0] = src0_data[pos*ne00 + i0];
+            }
+        }
     }
 }
 
-
-static void ggml_compute_forward_map_unary(
+static void ggml_compute_forward_get_rel_pos(
         const struct ggml_compute_params * params,
         const struct ggml_tensor * src0,
-        struct ggml_tensor * dst,
-        const ggml_unary_op_f32_t fun) {
+        struct ggml_tensor * dst) {
     switch (src0->type) {
-        case GGML_TYPE_F32:
+        case GGML_TYPE_F16:
             {
-                ggml_compute_forward_map_unary_f32(params, src0, dst, fun);
+                ggml_compute_forward_get_rel_pos_f16(params, src0, dst);
             } break;
         default:
             {
@@ -14482,16 +14979,103 @@ static void ggml_compute_forward_map_unary(
     }
 }
 
-// ggml_compute_forward_map_binary
+// ggml_compute_forward_add_rel_pos
 
-static void ggml_compute_forward_map_binary_f32(
+static void ggml_compute_forward_add_rel_pos_f32(
         const struct ggml_compute_params * params,
         const struct ggml_tensor * src0,
         const struct ggml_tensor * src1,
-        struct ggml_tensor * dst,
-        const ggml_binary_op_f32_t fun) {
-    assert(params->ith == 0);
-    assert(ggml_are_same_shape(src0, src1) && ggml_are_same_shape(src0, dst));
+        const struct ggml_tensor * src2,
+        struct ggml_tensor * dst) {
+    GGML_ASSERT(ggml_are_same_shape(src0, dst));
+    GGML_ASSERT(src0->nb[0] == dst->nb[0] && src0->nb[1] == dst->nb[1]
+             && src0->nb[2] == dst->nb[2] && src0->nb[3] == dst->nb[3]);
+
+    const bool inplace = dst->data == src0->data;
+    if (!inplace && params->type == GGML_TASK_INIT) {
+        memcpy((char *) dst->data, (char *) src0->data, ggml_nbytes(dst));
+        return;
+    }
+    if (params->type == GGML_TASK_INIT || params->type == GGML_TASK_FINALIZE) {
+        return;
+    }
+
+    int64_t t0 = ggml_perf_time_us();
+    UNUSED(t0);
+
+    // ref: https://github.com/facebookresearch/segment-anything/blob/main/segment_anything/modeling/image_encoder.py#L357-L359
+
+    float * src1_data = (float *) src1->data;
+    float * src2_data = (float *) src2->data;
+    float * dst_data  = (float *) dst->data;
+
+    const int64_t ne10 = src1->ne[0];
+    const int64_t ne11 = src1->ne[1];
+    const int64_t ne12 = src1->ne[2];
+    const int64_t ne13 = src1->ne[3];
+
+    const int ith = params->ith;
+    const int nth = params->nth;
+
+    // total patches in dst
+    const int np = ne13;
+
+    // patches per thread
+    const int dp = (np + nth - 1)/nth;
+
+    // patch range for this thread
+    const int ip0 = dp*ith;
+    const int ip1 = MIN(ip0 + dp, np);
+
+
+    for (int64_t i13 = ip0; i13 < ip1; ++i13) {
+        for (int64_t i12 = 0; i12 < ne12; ++i12) {
+            for (int64_t i11 = 0; i11 < ne11; ++i11) {
+                const int64_t jp1 = i13*ne12*ne11*ne10 + i12*ne11*ne10 + i11*ne10;
+                for (int64_t i10 = 0; i10 < ne10; ++i10) {
+                    const int64_t jp0  = jp1 + i10;
+                    const float src1_e = src1_data[jp0];
+                    const float src2_e = src2_data[jp0];
+
+                    const int64_t jdh = jp0 * ne10;
+                    const int64_t jdw = jdh - (ne10 - 1) * i10;
+
+                    for (int64_t j = 0; j < ne10; ++j) {
+                        dst_data[jdh + j     ] += src2_e;
+                        dst_data[jdw + j*ne10] += src1_e;
+                    }
+                }
+            }
+        }
+    }
+}
+
+static void ggml_compute_forward_add_rel_pos(
+        const struct ggml_compute_params * params,
+        const struct ggml_tensor * src0,
+        const struct ggml_tensor * src1,
+        const struct ggml_tensor * src2,
+        struct ggml_tensor * dst) {
+    switch (src0->type) {
+        case GGML_TYPE_F32:
+            {
+                ggml_compute_forward_add_rel_pos_f32(params, src0, src1, src2, dst);
+            } break;
+        default:
+            {
+                GGML_ASSERT(false);
+            } break;
+    }
+}
+
+// ggml_compute_forward_map_unary
+
+static void ggml_compute_forward_map_unary_f32(
+        const struct ggml_compute_params * params,
+        const struct ggml_tensor * src0,
+        struct ggml_tensor * dst,
+        const ggml_unary_op_f32_t fun) {
+    GGML_ASSERT(ggml_are_same_shape(src0, dst));
 
     if (params->type == GGML_TASK_INIT || params->type == GGML_TASK_FINALIZE) {
         return;
@@ -14502,27 +15086,24 @@ static void ggml_compute_forward_map_binary_f32(
 
     assert( dst->nb[0] == sizeof(float));
     assert(src0->nb[0] == sizeof(float));
-    assert(src1->nb[0] == sizeof(float));
 
     for (int i = 0; i < n; i++) {
         fun(nc,
                 (float *) ((char *) dst->data  + i*( dst->nb[1])),
-                (float *) ((char *) src0->data + i*(src0->nb[1])),
-                (float *) ((char *) src1->data + i*(src1->nb[1])));
+                (float *) ((char *) src0->data + i*(src0->nb[1])));
     }
 }
 
 
-static void ggml_compute_forward_map_binary(
+static void ggml_compute_forward_map_unary(
         const struct ggml_compute_params * params,
         const struct ggml_tensor * src0,
-        const struct ggml_tensor * src1,
         struct ggml_tensor * dst,
-        const ggml_binary_op_f32_t fun) {
+        const ggml_unary_op_f32_t fun) {
     switch (src0->type) {
         case GGML_TYPE_F32:
             {
-                ggml_compute_forward_map_binary_f32(params, src0, src1, dst, fun);
+                ggml_compute_forward_map_unary_f32(params, src0, dst, fun);
             } break;
         default:
             {
@@ -14531,32 +15112,47 @@ static void ggml_compute_forward_map_binary(
     }
 }
 
-// ggml_compute_forward_map_custom1
+// ggml_compute_forward_map_binary
 
-static void ggml_compute_forward_map_custom1_f32(
+static void ggml_compute_forward_map_binary_f32(
         const struct ggml_compute_params * params,
-        const struct ggml_tensor * a,
+        const struct ggml_tensor * src0,
+        const struct ggml_tensor * src1,
         struct ggml_tensor * dst,
-        const ggml_custom1_op_f32_t fun) {
+        const ggml_binary_op_f32_t fun) {
     assert(params->ith == 0);
+    assert(ggml_are_same_shape(src0, src1) && ggml_are_same_shape(src0, dst));
 
     if (params->type == GGML_TASK_INIT || params->type == GGML_TASK_FINALIZE) {
         return;
     }
 
-    fun(dst, a);
+    const int n  = ggml_nrows(src0);
+    const int nc = src0->ne[0];
+
+    assert( dst->nb[0] == sizeof(float));
+    assert(src0->nb[0] == sizeof(float));
+    assert(src1->nb[0] == sizeof(float));
+
+    for (int i = 0; i < n; i++) {
+        fun(nc,
+                (float *) ((char *) dst->data  + i*( dst->nb[1])),
+                (float *) ((char *) src0->data + i*(src0->nb[1])),
+                (float *) ((char *) src1->data + i*(src1->nb[1])));
+    }
 }
 
 
-static void ggml_compute_forward_map_custom1(
+static void ggml_compute_forward_map_binary(
         const struct ggml_compute_params * params,
-        const struct ggml_tensor * a,
+        const struct ggml_tensor * src0,
+        const struct ggml_tensor * src1,
         struct ggml_tensor * dst,
-        const ggml_custom1_op_f32_t fun) {
-    switch (a->type) {
+        const ggml_binary_op_f32_t fun) {
+    switch (src0->type) {
         case GGML_TYPE_F32:
             {
-                ggml_compute_forward_map_custom1_f32(params, a, dst, fun);
+                ggml_compute_forward_map_binary_f32(params, src0, src1, dst, fun);
             } break;
         default:
             {
@@ -14565,42 +15161,40 @@ static void ggml_compute_forward_map_custom1(
     }
 }
 
-// ggml_compute_forward_map_custom2
+// ggml_compute_forward_map_custom1
 
-static void ggml_compute_forward_map_custom2_f32(
+static void ggml_compute_forward_map_custom1_f32(
         const struct ggml_compute_params * params,
         const struct ggml_tensor * a,
-        const struct ggml_tensor * b,
         struct ggml_tensor * dst,
-        const ggml_custom2_op_f32_t fun) {
+        const ggml_custom1_op_f32_t fun) {
     assert(params->ith == 0);
 
     if (params->type == GGML_TASK_INIT || params->type == GGML_TASK_FINALIZE) {
         return;
     }
 
-    fun(dst, a, b);
+    fun(dst, a);
 }
 
+// ggml_compute_forward_map_custom2
 
-static void ggml_compute_forward_map_custom2(
+static void ggml_compute_forward_map_custom2_f32(
         const struct ggml_compute_params * params,
         const struct ggml_tensor * a,
         const struct ggml_tensor * b,
         struct ggml_tensor * dst,
         const ggml_custom2_op_f32_t fun) {
-    switch (a->type) {
-        case GGML_TYPE_F32:
-            {
-                ggml_compute_forward_map_custom2_f32(params, a, b, dst, fun);
-            } break;
-        default:
-            {
-                GGML_ASSERT(false);
-            } break;
+    assert(params->ith == 0);
+
+    if (params->type == GGML_TASK_INIT || params->type == GGML_TASK_FINALIZE) {
+        return;
     }
+
+    fun(dst, a, b);
 }
 
+
 // ggml_compute_forward_map_custom3
 
 static void ggml_compute_forward_map_custom3_f32(
@@ -14619,24 +15213,52 @@ static void ggml_compute_forward_map_custom3_f32(
     fun(dst, a, b, c);
 }
 
+// ggml_compute_forward_map_custom1
+
+static void ggml_compute_forward_map_custom1(
+        const struct ggml_compute_params * params,
+        const struct ggml_tensor * a,
+              struct ggml_tensor * dst) {
+    if (params->type == GGML_TASK_INIT || params->type == GGML_TASK_FINALIZE) {
+        return;
+    }
+
+    struct ggml_map_custom1_op_params * p = (struct ggml_map_custom1_op_params *) dst->op_params;
+
+    p->fun(dst, a, params->ith, params->nth, p->userdata);
+}
+
+// ggml_compute_forward_map_custom2
+
+static void ggml_compute_forward_map_custom2(
+        const struct ggml_compute_params * params,
+        const struct ggml_tensor * a,
+        const struct ggml_tensor * b,
+              struct ggml_tensor * dst) {
+    if (params->type == GGML_TASK_INIT || params->type == GGML_TASK_FINALIZE) {
+        return;
+    }
+
+    struct ggml_map_custom2_op_params * p = (struct ggml_map_custom2_op_params *) dst->op_params;
+
+    p->fun(dst, a, b, params->ith, params->nth, p->userdata);
+}
+
+// ggml_compute_forward_map_custom3
 
 static void ggml_compute_forward_map_custom3(
         const struct ggml_compute_params * params,
         const struct ggml_tensor * a,
         const struct ggml_tensor * b,
         const struct ggml_tensor * c,
-        struct ggml_tensor * dst,
-        const ggml_custom3_op_f32_t fun) {
-    switch (a->type) {
-        case GGML_TYPE_F32:
-            {
-                ggml_compute_forward_map_custom3_f32(params, a, b, c, dst, fun);
-            } break;
-        default:
-            {
-                GGML_ASSERT(false);
-            } break;
+              struct ggml_tensor * dst) {
+    if (params->type == GGML_TASK_INIT || params->type == GGML_TASK_FINALIZE) {
+        return;
     }
+
+    struct ggml_map_custom3_op_params * p = (struct ggml_map_custom3_op_params *) dst->op_params;
+
+    p->fun(dst, a, b, c, params->ith, params->nth, p->userdata);
 }
 
 // ggml_compute_forward_cross_entropy_loss
@@ -14929,287 +15551,303 @@ static void ggml_compute_forward(struct ggml_compute_params * params, struct ggm
     if (skip_cpu) {
         return;
     }
-    GGML_ASSERT(tensor->src0 == NULL || tensor->src0->backend == GGML_BACKEND_CPU);
-    GGML_ASSERT(tensor->src1 == NULL || tensor->src1->backend == GGML_BACKEND_CPU);
+    GGML_ASSERT(tensor->src[0] == NULL || tensor->src[0]->backend == GGML_BACKEND_CPU);
+    GGML_ASSERT(tensor->src[1] == NULL || tensor->src[1]->backend == GGML_BACKEND_CPU);
 #endif // GGML_USE_CUBLAS
 
     switch (tensor->op) {
         case GGML_OP_DUP:
             {
-                ggml_compute_forward_dup(params, tensor->src0, tensor);
+                ggml_compute_forward_dup(params, tensor->src[0], tensor);
             } break;
         case GGML_OP_ADD:
             {
-                ggml_compute_forward_add(params, tensor->src0, tensor->src1, tensor);
+                ggml_compute_forward_add(params, tensor->src[0], tensor->src[1], tensor);
             } break;
         case GGML_OP_ADD1:
             {
-                ggml_compute_forward_add1(params, tensor->src0, tensor->src1, tensor);
+                ggml_compute_forward_add1(params, tensor->src[0], tensor->src[1], tensor);
             } break;
         case GGML_OP_ACC:
             {
-                ggml_compute_forward_acc(params, tensor->src0, tensor->src1, tensor->opt[0], tensor);
+                ggml_compute_forward_acc(params, tensor->src[0], tensor->src[1], tensor);
             } break;
         case GGML_OP_SUB:
             {
-                ggml_compute_forward_sub(params, tensor->src0, tensor->src1, tensor);
+                ggml_compute_forward_sub(params, tensor->src[0], tensor->src[1], tensor);
             } break;
         case GGML_OP_MUL:
             {
-                ggml_compute_forward_mul(params, tensor->src0, tensor->src1, tensor);
+                ggml_compute_forward_mul(params, tensor->src[0], tensor->src[1], tensor);
             } break;
         case GGML_OP_DIV:
             {
-                ggml_compute_forward_div(params, tensor->src0, tensor->src1, tensor);
+                ggml_compute_forward_div(params, tensor->src[0], tensor->src[1], tensor);
             } break;
         case GGML_OP_SQR:
             {
-                ggml_compute_forward_sqr(params, tensor->src0, tensor);
+                ggml_compute_forward_sqr(params, tensor->src[0], tensor);
             } break;
         case GGML_OP_SQRT:
             {
-                ggml_compute_forward_sqrt(params, tensor->src0, tensor);
+                ggml_compute_forward_sqrt(params, tensor->src[0], tensor);
             } break;
         case GGML_OP_LOG:
             {
-                ggml_compute_forward_log(params, tensor->src0, tensor);
+                ggml_compute_forward_log(params, tensor->src[0], tensor);
             } break;
         case GGML_OP_SUM:
             {
-                ggml_compute_forward_sum(params, tensor->src0, tensor);
+                ggml_compute_forward_sum(params, tensor->src[0], tensor);
             } break;
         case GGML_OP_SUM_ROWS:
             {
-                ggml_compute_forward_sum_rows(params, tensor->src0, tensor);
+                ggml_compute_forward_sum_rows(params, tensor->src[0], tensor);
             } break;
         case GGML_OP_MEAN:
             {
-                ggml_compute_forward_mean(params, tensor->src0, tensor);
+                ggml_compute_forward_mean(params, tensor->src[0], tensor);
             } break;
         case GGML_OP_ARGMAX:
             {
-                ggml_compute_forward_argmax(params, tensor->src0, tensor);
+                ggml_compute_forward_argmax(params, tensor->src[0], tensor);
             } break;
         case GGML_OP_REPEAT:
             {
-                ggml_compute_forward_repeat(params, tensor->src0, tensor);
+                ggml_compute_forward_repeat(params, tensor->src[0], tensor);
             } break;
         case GGML_OP_REPEAT_BACK:
             {
-                ggml_compute_forward_repeat_back(params, tensor->src0, tensor);
-            } break;
-        case GGML_OP_ABS:
-            {
-                ggml_compute_forward_abs(params, tensor->src0, tensor);
-            } break;
-        case GGML_OP_SGN:
-            {
-                ggml_compute_forward_sgn(params, tensor->src0, tensor);
-            } break;
-        case GGML_OP_NEG:
-            {
-                ggml_compute_forward_neg(params, tensor->src0, tensor);
-            } break;
-        case GGML_OP_STEP:
-            {
-                ggml_compute_forward_step(params, tensor->src0, tensor);
-            } break;
-        case GGML_OP_TANH:
-            {
-                ggml_compute_forward_tanh(params, tensor->src0, tensor);
-            } break;
-        case GGML_OP_ELU:
-            {
-                ggml_compute_forward_elu(params, tensor->src0, tensor);
-            } break;
-        case GGML_OP_RELU:
-            {
-                ggml_compute_forward_relu(params, tensor->src0, tensor);
-            } break;
-        case GGML_OP_GELU:
-            {
-                ggml_compute_forward_gelu(params, tensor->src0, tensor);
-            } break;
-        case GGML_OP_GELU_QUICK:
-            {
-                ggml_compute_forward_gelu_quick(params, tensor->src0, tensor);
+                ggml_compute_forward_repeat_back(params, tensor->src[0], tensor);
             } break;
-        case GGML_OP_SILU:
+        case GGML_OP_CONCAT:
             {
-                ggml_compute_forward_silu(params, tensor->src0, tensor);
+                ggml_compute_forward_concat(params, tensor->src[0], tensor->src[1], tensor);
             } break;
         case GGML_OP_SILU_BACK:
             {
-                ggml_compute_forward_silu_back(params, tensor->src0, tensor->src1, tensor);
+                ggml_compute_forward_silu_back(params, tensor->src[0], tensor->src[1], tensor);
             } break;
         case GGML_OP_NORM:
             {
-                ggml_compute_forward_norm(params, tensor->src0, tensor);
+                ggml_compute_forward_norm(params, tensor->src[0], tensor);
             } break;
         case GGML_OP_RMS_NORM:
             {
-                ggml_compute_forward_rms_norm(params, tensor->src0, tensor);
+                ggml_compute_forward_rms_norm(params, tensor->src[0], tensor);
             } break;
         case GGML_OP_RMS_NORM_BACK:
             {
-                ggml_compute_forward_rms_norm_back(params, tensor->src0, tensor->src1, tensor);
+                ggml_compute_forward_rms_norm_back(params, tensor->src[0], tensor->src[1], tensor);
+            } break;
+        case GGML_OP_GROUP_NORM:
+            {
+                ggml_compute_forward_group_norm(params, tensor->src[0], tensor);
             } break;
         case GGML_OP_MUL_MAT:
             {
-                ggml_compute_forward_mul_mat(params, tensor->src0, tensor->src1, tensor);
+                ggml_compute_forward_mul_mat(params, tensor->src[0], tensor->src[1], tensor);
             } break;
         case GGML_OP_OUT_PROD:
             {
-                ggml_compute_forward_out_prod(params, tensor->src0, tensor->src1, tensor);
+                ggml_compute_forward_out_prod(params, tensor->src[0], tensor->src[1], tensor);
             } break;
         case GGML_OP_SCALE:
             {
-                ggml_compute_forward_scale(params, tensor->src0, tensor->src1, tensor);
+                ggml_compute_forward_scale(params, tensor->src[0], tensor->src[1], tensor);
             } break;
         case GGML_OP_SET:
             {
-                ggml_compute_forward_set(params, tensor->src0, tensor->src1, tensor->opt[0], tensor);
+                ggml_compute_forward_set(params, tensor->src[0], tensor->src[1], tensor);
             } break;
         case GGML_OP_CPY:
             {
-                ggml_compute_forward_cpy(params, tensor->src0, tensor);
+                ggml_compute_forward_cpy(params, tensor->src[0], tensor);
             } break;
         case GGML_OP_CONT:
             {
-                ggml_compute_forward_cont(params, tensor->src0, tensor);
+                ggml_compute_forward_cont(params, tensor->src[0], tensor);
             } break;
         case GGML_OP_RESHAPE:
             {
-                ggml_compute_forward_reshape(params, tensor->src0, tensor);
+                ggml_compute_forward_reshape(params, tensor->src[0], tensor);
             } break;
         case GGML_OP_VIEW:
             {
-                ggml_compute_forward_view(params, tensor->src0);
+                ggml_compute_forward_view(params, tensor->src[0]);
             } break;
         case GGML_OP_PERMUTE:
             {
-                ggml_compute_forward_permute(params, tensor->src0);
+                ggml_compute_forward_permute(params, tensor->src[0]);
             } break;
         case GGML_OP_TRANSPOSE:
             {
-                ggml_compute_forward_transpose(params, tensor->src0);
+                ggml_compute_forward_transpose(params, tensor->src[0]);
             } break;
         case GGML_OP_GET_ROWS:
             {
-                ggml_compute_forward_get_rows(params, tensor->src0, tensor->src1, tensor);
+                ggml_compute_forward_get_rows(params, tensor->src[0], tensor->src[1], tensor);
             } break;
         case GGML_OP_GET_ROWS_BACK:
             {
-                ggml_compute_forward_get_rows_back(params, tensor->src0, tensor->src1, tensor->opt[0], tensor);
+                ggml_compute_forward_get_rows_back(params, tensor->src[0], tensor->src[1], tensor->src[2], tensor);
             } break;
         case GGML_OP_DIAG:
             {
-                ggml_compute_forward_diag(params, tensor->src0, tensor);
+                ggml_compute_forward_diag(params, tensor->src[0], tensor);
             } break;
         case GGML_OP_DIAG_MASK_INF:
             {
-                ggml_compute_forward_diag_mask_inf(params, tensor->src0, tensor->src1, tensor);
+                ggml_compute_forward_diag_mask_inf(params, tensor->src[0], tensor);
             } break;
         case GGML_OP_DIAG_MASK_ZERO:
             {
-                ggml_compute_forward_diag_mask_zero(params, tensor->src0, tensor->src1, tensor);
+                ggml_compute_forward_diag_mask_zero(params, tensor->src[0], tensor);
             } break;
         case GGML_OP_SOFT_MAX:
             {
-                ggml_compute_forward_soft_max(params, tensor->src0, tensor);
+                ggml_compute_forward_soft_max(params, tensor->src[0], tensor);
             } break;
         case GGML_OP_SOFT_MAX_BACK:
             {
-                ggml_compute_forward_soft_max_back(params, tensor->src0, tensor->src1, tensor);
+                ggml_compute_forward_soft_max_back(params, tensor->src[0], tensor->src[1], tensor);
             } break;
         case GGML_OP_ROPE:
             {
-                ggml_compute_forward_rope(params, tensor->src0, tensor->src1, tensor);
+                ggml_compute_forward_rope(params, tensor->src[0], tensor);
             } break;
         case GGML_OP_ROPE_BACK:
             {
-                ggml_compute_forward_rope_back(params, tensor->src0, tensor->src1, tensor);
+                ggml_compute_forward_rope_back(params, tensor->src[0], tensor);
             } break;
         case GGML_OP_ALIBI:
             {
-                ggml_compute_forward_alibi(params, tensor->src0, tensor->src1, tensor);
+                ggml_compute_forward_alibi(params, tensor->src[0], tensor);
             } break;
         case GGML_OP_CLAMP:
             {
-                ggml_compute_forward_clamp(params, tensor->src0, tensor->src1, tensor);
+                ggml_compute_forward_clamp(params, tensor->src[0], tensor);
             } break;
         case GGML_OP_CONV_1D:
             {
-                ggml_compute_forward_conv_1d(params, tensor->src0, tensor->src1, tensor->opt[0], tensor);
+                ggml_compute_forward_conv_1d(params, tensor->src[0], tensor->src[1], tensor);
             } break;
         case GGML_OP_CONV_2D:
             {
-                ggml_compute_forward_conv_2d(params, tensor->src0, tensor->src1, tensor->opt[0], tensor);
+                ggml_compute_forward_conv_2d(params, tensor->src[0], tensor->src[1], tensor);
+            } break;
+        case GGML_OP_CONV_TRANSPOSE_2D:
+            {
+                ggml_compute_forward_conv_transpose_2d(params, tensor->src[0], tensor->src[1], tensor);
+            } break;
+        case GGML_OP_POOL_1D:
+            {
+                ggml_compute_forward_pool_1d(params, tensor->src[0], tensor);
+            } break;
+        case GGML_OP_POOL_2D:
+            {
+                ggml_compute_forward_pool_2d(params, tensor->src[0], tensor);
+            } break;
+        case GGML_OP_UPSCALE:
+            {
+                ggml_compute_forward_upscale(params, tensor->src[0], tensor);
             } break;
         case GGML_OP_FLASH_ATTN:
             {
-                const int32_t t = ggml_get_i32_1d(tensor->opt[1], 0);
+                const int32_t t = ggml_get_op_params_i32(tensor, 0);
                 GGML_ASSERT(t == 0 || t == 1);
                 const bool masked = t != 0;
-                ggml_compute_forward_flash_attn(params, tensor->src0, tensor->src1, tensor->opt[0], masked, tensor);
+                ggml_compute_forward_flash_attn(params, tensor->src[0], tensor->src[1], tensor->src[2], masked, tensor);
             } break;
         case GGML_OP_FLASH_FF:
             {
-                ggml_compute_forward_flash_ff(params, tensor->src0, tensor->src1, tensor->opt[0], tensor->opt[1], tensor->opt[2], tensor);
+                ggml_compute_forward_flash_ff(params, tensor->src[0], tensor->src[1], tensor->src[2], tensor->src[3], tensor->src[4], tensor);
             } break;
         case GGML_OP_FLASH_ATTN_BACK:
             {
-                int32_t t = ggml_get_i32_1d(tensor->opt[2], 0);
+                int32_t t = ggml_get_op_params_i32(tensor, 0);
                 GGML_ASSERT(t == 0 || t == 1);
                 bool masked = t != 0;
-                ggml_compute_forward_flash_attn_back(params, tensor->src0, tensor->src1, tensor->opt[0], tensor->opt[1], masked, tensor);
+                ggml_compute_forward_flash_attn_back(params, tensor->src[0], tensor->src[1], tensor->src[2], tensor->src[3], masked, tensor);
             } break;
         case GGML_OP_WIN_PART:
             {
-                ggml_compute_forward_win_part(params, tensor->src0, tensor->opt[0], tensor);
+                ggml_compute_forward_win_part(params, tensor->src[0], tensor);
             } break;
         case GGML_OP_WIN_UNPART:
             {
-                ggml_compute_forward_win_unpart(params, tensor->src0, tensor->opt[0], tensor);
+                ggml_compute_forward_win_unpart(params, tensor->src[0], tensor);
+            } break;
+        case GGML_OP_UNARY:
+            {
+                ggml_compute_forward_unary(params, tensor->src[0], tensor);
+            } break;
+        case GGML_OP_GET_REL_POS:
+            {
+                ggml_compute_forward_get_rel_pos(params, tensor->src[0], tensor);
+            } break;
+        case GGML_OP_ADD_REL_POS:
+            {
+                ggml_compute_forward_add_rel_pos(params, tensor->src[0], tensor->src[1], tensor->src[2], tensor);
             } break;
         case GGML_OP_MAP_UNARY:
             {
-                const ggml_unary_op_f32_t fun = *((ggml_unary_op_f32_t *)tensor->opt[0]->data);
-                ggml_compute_forward_map_unary(params, tensor->src0, tensor, fun);
+                ggml_unary_op_f32_t fun;
+                memcpy(&fun, tensor->op_params, sizeof(fun));
+                ggml_compute_forward_map_unary(params, tensor->src[0], tensor, fun);
             }
             break;
         case GGML_OP_MAP_BINARY:
             {
-                const ggml_binary_op_f32_t fun = *((ggml_binary_op_f32_t *)tensor->opt[0]->data);
-                ggml_compute_forward_map_binary(params, tensor->src0, tensor->src1, tensor, fun);
+                ggml_binary_op_f32_t fun;
+                memcpy(&fun, tensor->op_params, sizeof(fun));
+                ggml_compute_forward_map_binary(params, tensor->src[0], tensor->src[1], tensor, fun);
+            }
+            break;
+        case GGML_OP_MAP_CUSTOM1_F32:
+            {
+                ggml_custom1_op_f32_t fun;
+                memcpy(&fun, tensor->op_params, sizeof(fun));
+                ggml_compute_forward_map_custom1_f32(params, tensor->src[0], tensor, fun);
+            }
+            break;
+        case GGML_OP_MAP_CUSTOM2_F32:
+            {
+                ggml_custom2_op_f32_t fun;
+                memcpy(&fun, tensor->op_params, sizeof(fun));
+                ggml_compute_forward_map_custom2_f32(params, tensor->src[0], tensor->src[1], tensor, fun);
+            }
+            break;
+        case GGML_OP_MAP_CUSTOM3_F32:
+            {
+                ggml_custom3_op_f32_t fun;
+                memcpy(&fun, tensor->op_params, sizeof(fun));
+                ggml_compute_forward_map_custom3_f32(params, tensor->src[0], tensor->src[1], tensor->src[2], tensor, fun);
             }
             break;
         case GGML_OP_MAP_CUSTOM1:
             {
-                const ggml_custom1_op_f32_t fun = *((ggml_custom1_op_f32_t *)tensor->opt[0]->data);
-                ggml_compute_forward_map_custom1(params, tensor->src0, tensor, fun);
+                ggml_compute_forward_map_custom1(params, tensor->src[0], tensor);
             }
             break;
         case GGML_OP_MAP_CUSTOM2:
             {
-                const ggml_custom2_op_f32_t fun = *((ggml_custom2_op_f32_t *)tensor->opt[0]->data);
-                ggml_compute_forward_map_custom2(params, tensor->src0, tensor->src1, tensor, fun);
+                ggml_compute_forward_map_custom2(params, tensor->src[0], tensor->src[1], tensor);
             }
             break;
         case GGML_OP_MAP_CUSTOM3:
             {
-                const ggml_custom3_op_f32_t fun = *((ggml_custom3_op_f32_t *)tensor->opt[0]->data);
-                ggml_compute_forward_map_custom3(params, tensor->src0, tensor->src1, tensor->opt[1], tensor, fun);
+                ggml_compute_forward_map_custom3(params, tensor->src[0], tensor->src[1], tensor->src[2], tensor);
             }
             break;
         case GGML_OP_CROSS_ENTROPY_LOSS:
             {
-                ggml_compute_forward_cross_entropy_loss(params, tensor->src0, tensor->src1, tensor);
+                ggml_compute_forward_cross_entropy_loss(params, tensor->src[0], tensor->src[1], tensor);
             }
             break;
         case GGML_OP_CROSS_ENTROPY_LOSS_BACK:
             {
-                ggml_compute_forward_cross_entropy_loss_back(params, tensor->src0, tensor->src1, tensor->opt[0], tensor);
+                ggml_compute_forward_cross_entropy_loss_back(params, tensor->src[0], tensor->src[1], tensor->src[2], tensor);
             }
             break;
         case GGML_OP_NONE:
@@ -15226,8 +15864,8 @@ static void ggml_compute_forward(struct ggml_compute_params * params, struct ggm
 ////////////////////////////////////////////////////////////////////////////////
 
 static void ggml_compute_backward(struct ggml_context * ctx, struct ggml_tensor * tensor, bool inplace) {
-    struct ggml_tensor * src0 = tensor->src0;
-    struct ggml_tensor * src1 = tensor->src1;
+    struct ggml_tensor * src0 = tensor->src[0];
+    struct ggml_tensor * src1 = tensor->src[1];
 
     switch (tensor->op) {
         case GGML_OP_DUP:
@@ -15263,12 +15901,10 @@ static void ggml_compute_backward(struct ggml_context * ctx, struct ggml_tensor
                     src0->grad = ggml_add_impl(ctx, src0->grad, tensor->grad, inplace);
                 }
                 if (src1->grad) {
-                    GGML_ASSERT(ggml_nelements(tensor->opt[0]) == 5);
-                    GGML_ASSERT(tensor->opt[0]->type == GGML_TYPE_I32);
-                    const size_t nb1     = (( int32_t * ) tensor->opt[0]->data)[0];
-                    const size_t nb2     = (( int32_t * ) tensor->opt[0]->data)[1];
-                    const size_t nb3     = (( int32_t * ) tensor->opt[0]->data)[2];
-                    const size_t offset  = (( int32_t * ) tensor->opt[0]->data)[3];
+                    const size_t nb1     = ((int32_t *) tensor->op_params)[0];
+                    const size_t nb2     = ((int32_t *) tensor->op_params)[1];
+                    const size_t nb3     = ((int32_t *) tensor->op_params)[2];
+                    const size_t offset  = ((int32_t *) tensor->op_params)[3];
 
                     struct ggml_tensor * tensor_grad_view = ggml_view_4d(ctx,
                         tensor->grad,
@@ -15417,96 +16053,37 @@ static void ggml_compute_backward(struct ggml_context * ctx, struct ggml_tensor
                             inplace);
                 }
             } break;
-        case GGML_OP_ABS:
-            {
-                if (src0->grad) {
-                    src0->grad =
-                        ggml_add_impl(ctx,
-                                src0->grad,
-                                ggml_mul(ctx,
-                                    ggml_sgn(ctx, src0),
-                                    tensor->grad),
-                                inplace);
-                }
-            } break;
-        case GGML_OP_SGN:
-            {
-                if (src0->grad) {
-                    // noop
-                }
-            } break;
-        case GGML_OP_NEG:
-            {
-                if (src0->grad) {
-                    src0->grad = ggml_sub_impl(ctx, src0->grad, tensor->grad, inplace);
-                }
-            } break;
-        case GGML_OP_STEP:
+        case GGML_OP_CONCAT:
             {
-                if (src0->grad) {
-                    // noop
-                }
+                GGML_ASSERT(false); // TODO: implement
             } break;
-        case GGML_OP_TANH:
+        case GGML_OP_SILU_BACK:
             {
                 GGML_ASSERT(false); // TODO: not implemented
             } break;
-        case GGML_OP_ELU:
+        case GGML_OP_NORM:
             {
                 GGML_ASSERT(false); // TODO: not implemented
             } break;
-        case GGML_OP_RELU:
+        case GGML_OP_RMS_NORM:
             {
+                // necessary for llama
                 if (src0->grad) {
-                    src0->grad = ggml_sub_impl(ctx,
+                    src0->grad = ggml_add_impl(ctx,
                             src0->grad,
-                            ggml_mul(ctx,
-                                ggml_step(ctx, src0),
-                                tensor->grad),
+                            ggml_rms_norm_back(ctx, src0, tensor->grad),
                             inplace);
                 }
             } break;
-        case GGML_OP_GELU:
+        case GGML_OP_RMS_NORM_BACK:
             {
                 GGML_ASSERT(false); // TODO: not implemented
             } break;
-        case GGML_OP_GELU_QUICK:
+        case GGML_OP_GROUP_NORM:
             {
                 GGML_ASSERT(false); // TODO: not implemented
             } break;
-        case GGML_OP_SILU:
-            {
-                // necessary for llama
-                if (src0->grad) {
-                    src0->grad = ggml_add_impl(ctx,
-                            src0->grad,
-                            ggml_silu_back(ctx, src0, tensor->grad),
-                            inplace);
-                }
-            } break;
-        case GGML_OP_SILU_BACK:
-            {
-                GGML_ASSERT(false); // TODO: not implemented
-            } break;
-        case GGML_OP_NORM:
-            {
-                GGML_ASSERT(false); // TODO: not implemented
-            } break;
-        case GGML_OP_RMS_NORM:
-            {
-                // necessary for llama
-                if (src0->grad) {
-                    src0->grad = ggml_add_impl(ctx,
-                            src0->grad,
-                            ggml_rms_norm_back(ctx, src0, tensor->grad),
-                            inplace);
-                }
-            } break;
-        case GGML_OP_RMS_NORM_BACK:
-            {
-                GGML_ASSERT(false); // TODO: not implemented
-            } break;
-        case GGML_OP_MUL_MAT:
+        case GGML_OP_MUL_MAT:
             {
                 // https://cs231n.github.io/optimization-2/#staged
                 // # forward pass
@@ -15576,12 +16153,10 @@ static void ggml_compute_backward(struct ggml_context * ctx, struct ggml_tensor
             } break;
         case GGML_OP_SET:
             {
-                GGML_ASSERT(ggml_nelements(tensor->opt[0]) == 5);
-                GGML_ASSERT(tensor->opt[0]->type == GGML_TYPE_I32);
-                const size_t nb1     = (( int32_t * ) tensor->opt[0]->data)[0];
-                const size_t nb2     = (( int32_t * ) tensor->opt[0]->data)[1];
-                const size_t nb3     = (( int32_t * ) tensor->opt[0]->data)[2];
-                const size_t offset  = (( int32_t * ) tensor->opt[0]->data)[3];
+                const size_t nb1     = ((int32_t *) tensor->op_params)[0];
+                const size_t nb2     = ((int32_t *) tensor->op_params)[1];
+                const size_t nb3     = ((int32_t *) tensor->op_params)[2];
+                const size_t offset  = ((int32_t *) tensor->op_params)[3];
 
                 struct ggml_tensor * tensor_grad_view = NULL;
 
@@ -15658,8 +16233,7 @@ static void ggml_compute_backward(struct ggml_context * ctx, struct ggml_tensor
                 if (src0->grad) {
                     size_t offset;
 
-                    GGML_ASSERT(sizeof(offset) <= ggml_nbytes(tensor->opt[0]));
-                    memcpy(&offset, tensor->opt[0]->data, sizeof(offset));
+                    memcpy(&offset, tensor->op_params, sizeof(offset));
 
                     size_t nb1     = tensor->nb[1];
                     size_t nb2     = tensor->nb[2];
@@ -15686,7 +16260,7 @@ static void ggml_compute_backward(struct ggml_context * ctx, struct ggml_tensor
             {
                 // necessary for llama
                 if (src0->grad) {
-                    int32_t * axes = (int32_t *) tensor->opt[0]->data;
+                    int32_t * axes = (int32_t *) tensor->op_params;
                     int axis0 = axes[0] & 0x3;
                     int axis1 = axes[1] & 0x3;
                     int axis2 = axes[2] & 0x3;
@@ -15742,33 +16316,23 @@ static void ggml_compute_backward(struct ggml_context * ctx, struct ggml_tensor
             {
                 // necessary for llama
                 if (src0->grad) {
-                    assert(src1->type == GGML_TYPE_I32);
-                    assert(ggml_nelements(src1) == 2);
-                    const int n_past = ((int32_t *) src1->data)[0];
+                    const int n_past = ((int32_t *) tensor->op_params)[0];
                     src0->grad =
                         ggml_add_impl(ctx, src0->grad,
                             ggml_diag_mask_zero_impl(ctx, tensor->grad, n_past, false),
                         inplace);
                 }
-                if (src1->grad) {
-                    // noop
-                }
             } break;
         case GGML_OP_DIAG_MASK_ZERO:
             {
                 // necessary for llama
                 if (src0->grad) {
-                    assert(src1->type == GGML_TYPE_I32);
-                    assert(ggml_nelements(src1) == 2);
-                    const int n_past = ((int32_t *) src1->data)[0];
+                    const int n_past = ((int32_t *) tensor->op_params)[0];
                     src0->grad =
                         ggml_add_impl(ctx, src0->grad,
                             ggml_diag_mask_zero_impl(ctx, tensor->grad, n_past, false),
                         inplace);
                 }
-                if (src1->grad) {
-                    // noop
-                }
             } break;
         case GGML_OP_SOFT_MAX:
             {
@@ -15789,46 +16353,65 @@ static void ggml_compute_backward(struct ggml_context * ctx, struct ggml_tensor
             {
                 // necessary for llama
                 if (src0->grad) {
-                    assert(src1->type == GGML_TYPE_I32);
-                    assert(ggml_nelements(src1) == 4);
-                    const int n_past = ((int32_t *) src1->data)[0];
-                    const int n_dims = ((int32_t *) src1->data)[1];
-                    const int mode   = ((int32_t *) src1->data)[2];
+                    const int n_past = ((int32_t *) tensor->op_params)[0];
+                    const int n_dims = ((int32_t *) tensor->op_params)[1];
+                    const int mode   = ((int32_t *) tensor->op_params)[2];
+                    const int n_ctx  = ((int32_t *) tensor->op_params)[3];
+                    float freq_base;
+                    float freq_scale;
+                    float xpos_base;
+                    bool  xpos_down;
+                    memcpy(&freq_base,  (int32_t *) tensor->op_params + 4, sizeof(float));
+                    memcpy(&freq_scale, (int32_t *) tensor->op_params + 5, sizeof(float));
+                    memcpy(&xpos_base,  (int32_t *) tensor->op_params + 6, sizeof(float));
+                    memcpy(&xpos_down,  (int32_t *) tensor->op_params + 7, sizeof(bool));
+
                     src0->grad = ggml_add_impl(ctx,
                             src0->grad,
                             ggml_rope_back(ctx,
                                 tensor->grad,
                                 n_past,
                                 n_dims,
-                                mode),
+                                mode,
+                                n_ctx,
+                                freq_base,
+                                freq_scale,
+                                xpos_base,
+                                xpos_down),
                             inplace);
                 }
-                if (src1->grad) {
-                    // noop
-                }
             } break;
         case GGML_OP_ROPE_BACK:
             {
                 if (src0->grad) {
-                    assert(src1->type == GGML_TYPE_I32);
-                    assert(ggml_nelements(src1) == 4);
-                    const int n_past = ((int32_t *) src1->data)[0];
-                    const int n_dims = ((int32_t *) src1->data)[1];
-                    const int mode   = ((int32_t *) src1->data)[2];
-                    const int n_ctx  = ((int32_t *) src1->data)[3];
+                    const int n_past = ((int32_t *) tensor->op_params)[0];
+                    const int n_dims = ((int32_t *) tensor->op_params)[1];
+                    const int mode   = ((int32_t *) tensor->op_params)[2];
+                    const int n_ctx  = ((int32_t *) tensor->op_params)[3];
+                    float freq_base;
+                    float freq_scale;
+                    float xpos_base;
+                    bool  xpos_down;
+                    memcpy(&freq_base,  (int32_t *) tensor->op_params + 4, sizeof(float));
+                    memcpy(&freq_scale, (int32_t *) tensor->op_params + 5, sizeof(float));
+                    memcpy(&xpos_base,  (int32_t *) tensor->op_params + 6, sizeof(float));
+                    memcpy(&xpos_down,  (int32_t *) tensor->op_params + 7, sizeof(bool));
+
                     src0->grad = ggml_add_impl(ctx,
                             src0->grad,
-                            ggml_rope(ctx,
+                            ggml_rope_impl(ctx,
                                 tensor->grad,
                                 n_past,
                                 n_dims,
                                 mode,
-                                n_ctx),
+                                n_ctx,
+                                freq_base,
+                                freq_scale,
+                                xpos_base,
+                                xpos_down,
+                                false),
                             inplace);
                 }
-                if (src1->grad) {
-                    // noop
-                }
             } break;
         case GGML_OP_ALIBI:
             {
@@ -15846,18 +16429,34 @@ static void ggml_compute_backward(struct ggml_context * ctx, struct ggml_tensor
             {
                 GGML_ASSERT(false); // TODO: not implemented
             } break;
+        case GGML_OP_CONV_TRANSPOSE_2D:
+            {
+                GGML_ASSERT(false); // TODO: not implemented
+            } break;
+        case GGML_OP_POOL_1D:
+            {
+                GGML_ASSERT(false); // TODO: not implemented
+            } break;
+        case GGML_OP_POOL_2D:
+            {
+                GGML_ASSERT(false); // TODO: not implemented
+            } break;
+        case GGML_OP_UPSCALE:
+            {
+                GGML_ASSERT(false); // TODO: not implemented
+            } break;
         case GGML_OP_FLASH_ATTN:
             {
                 struct ggml_tensor * flash_grad = NULL;
-                if (src0->grad || src1->grad || tensor->opt[0]->grad) {
-                    int32_t t = ggml_get_i32_1d(tensor->opt[1], 0);
+                if (src0->grad || src1->grad || tensor->src[2]->grad) {
+                    int32_t t = ggml_get_op_params_i32(tensor, 0);
                     GGML_ASSERT(t == 0 || t == 1);
                     bool masked = t != 0;
                     flash_grad =
                         ggml_flash_attn_back(ctx,
                             src0,
                             src1,
-                            tensor->opt[0],
+                            tensor->src[2],
                             tensor->grad,
                             masked);
                 }
@@ -15954,7 +16553,7 @@ static void ggml_compute_backward(struct ggml_context * ctx, struct ggml_tensor
                             inplace);
                 }
 
-                struct ggml_tensor * opt0 = tensor->opt[0];
+                struct ggml_tensor * opt0 = tensor->src[2];
 
                 if (opt0->grad) {
                     struct ggml_tensor * grad_v = NULL;
@@ -16013,8 +16612,87 @@ static void ggml_compute_backward(struct ggml_context * ctx, struct ggml_tensor
             } break;
         case GGML_OP_WIN_PART:
         case GGML_OP_WIN_UNPART:
+        case GGML_OP_UNARY:
+            {
+                switch (ggml_get_unary_op(tensor)) {
+                    case GGML_UNARY_OP_ABS:
+                        {
+                            if (src0->grad) {
+                                src0->grad =
+                                    ggml_add_impl(ctx,
+                                            src0->grad,
+                                            ggml_mul(ctx,
+                                                ggml_sgn(ctx, src0),
+                                                tensor->grad),
+                                            inplace);
+                            }
+                        } break;
+                    case GGML_UNARY_OP_SGN:
+                        {
+                            if (src0->grad) {
+                                // noop
+                            }
+                        } break;
+                    case GGML_UNARY_OP_NEG:
+                        {
+                            if (src0->grad) {
+                                src0->grad = ggml_sub_impl(ctx, src0->grad, tensor->grad, inplace);
+                            }
+                        } break;
+                    case GGML_UNARY_OP_STEP:
+                        {
+                            if (src0->grad) {
+                                // noop
+                            }
+                        } break;
+                    case GGML_UNARY_OP_TANH:
+                        {
+                            GGML_ASSERT(false); // TODO: not implemented
+                        } break;
+                    case GGML_UNARY_OP_ELU:
+                        {
+                            GGML_ASSERT(false); // TODO: not implemented
+                        } break;
+                    case GGML_UNARY_OP_RELU:
+                        {
+                            if (src0->grad) {
+                                src0->grad = ggml_add_impl(ctx,
+                                        src0->grad,
+                                        ggml_mul(ctx,
+                                            ggml_step(ctx, src0),
+                                            tensor->grad),
+                                        inplace);
+                            }
+                        } break;
+                    case GGML_UNARY_OP_GELU:
+                        {
+                            GGML_ASSERT(false); // TODO: not implemented
+                        } break;
+                    case GGML_UNARY_OP_GELU_QUICK:
+                        {
+                            GGML_ASSERT(false); // TODO: not implemented
+                        } break;
+                    case GGML_UNARY_OP_SILU:
+                        {
+                            // necessary for llama
+                            if (src0->grad) {
+                                src0->grad = ggml_add_impl(ctx,
+                                        src0->grad,
+                                        ggml_silu_back(ctx, src0, tensor->grad),
+                                        inplace);
+                            }
+                        } break;
+                    default:
+                        GGML_ASSERT(false);
+                }
+            } break;
+        case GGML_OP_GET_REL_POS:
+        case GGML_OP_ADD_REL_POS:
         case GGML_OP_MAP_UNARY:
         case GGML_OP_MAP_BINARY:
+        case GGML_OP_MAP_CUSTOM1_F32:
+        case GGML_OP_MAP_CUSTOM2_F32:
+        case GGML_OP_MAP_CUSTOM3_F32:
         case GGML_OP_MAP_CUSTOM1:
         case GGML_OP_MAP_CUSTOM2:
         case GGML_OP_MAP_CUSTOM3:
@@ -16048,6 +16726,34 @@ static void ggml_compute_backward(struct ggml_context * ctx, struct ggml_tensor
     }
 }
 
+static_assert(GGML_GRAPH_HASHTABLE_SIZE > GGML_MAX_NODES * 2, "GGML_GRAPH_HT_SIZE is too small");
+
+static size_t hash(void * p) {
+    return (size_t)p % GGML_GRAPH_HASHTABLE_SIZE;
+}
+
+static bool hash_insert(void * hash_table[], void * p) {
+    size_t h = hash(p);
+
+    // linear probing
+    size_t i = h;
+    while (hash_table[i] != NULL && hash_table[i] != p) {
+        i = (i + 1) % GGML_GRAPH_HASHTABLE_SIZE;
+        if (i == h) {
+            // hash table is full
+            GGML_ASSERT(false);
+        }
+    }
+
+    if (hash_table[i] == p) {
+        return true;
+    }
+
+    // insert
+    hash_table[i] = p;
+    return false;
+}
+
 static void ggml_visit_parents(struct ggml_cgraph * cgraph, struct ggml_tensor * node) {
     if (node->grad == NULL) {
         // this usually happens when we generate intermediate nodes from constants in the backward pass
@@ -16058,29 +16764,13 @@ static void ggml_visit_parents(struct ggml_cgraph * cgraph, struct ggml_tensor *
     }
 
     // check if already visited
-    for (int i = 0; i < cgraph->n_nodes; i++) {
-        if (cgraph->nodes[i] == node) {
-            return;
-        }
-    }
-
-    for (int i = 0; i < cgraph->n_leafs; i++) {
-        if (cgraph->leafs[i] == node) {
-            return;
-        }
-    }
-
-    if (node->src0) {
-        ggml_visit_parents(cgraph, node->src0);
-    }
-
-    if (node->src1) {
-        ggml_visit_parents(cgraph, node->src1);
+    if (hash_insert(cgraph->visited_hash_table, node)) {
+        return;
     }
 
-    for (int i = 0; i < GGML_MAX_OPT; ++i) {
-        if (node->opt[i]) {
-            ggml_visit_parents(cgraph, node->opt[i]);
+    for (int i = 0; i < GGML_MAX_SRC; ++i) {
+        if (node->src[i]) {
+            ggml_visit_parents(cgraph, node->src[i]);
         }
     }
 
@@ -16135,12 +16825,10 @@ struct ggml_cgraph ggml_build_forward(struct ggml_tensor * tensor) {
     struct ggml_cgraph result = {
         /*.n_nodes      =*/ 0,
         /*.n_leafs      =*/ 0,
-        /*.n_threads    =*/ GGML_DEFAULT_N_THREADS,
-        /*.work_size    =*/ 0,
-        /*.work         =*/ NULL,
         /*.nodes        =*/ { NULL },
         /*.grads        =*/ { NULL },
         /*.leafs        =*/ { NULL },
+        /*.hash_table   =*/ { NULL },
         /*.perf_runs    =*/ 0,
         /*.perf_cycles  =*/ 0,
         /*.perf_time_us =*/ 0,
@@ -16182,13 +16870,42 @@ struct ggml_cgraph ggml_build_backward(struct ggml_context * ctx, struct ggml_cg
 
         if (node->is_param) {
             GGML_PRINT_DEBUG("%s: found root node %p\n", __func__, (void *) node);
-            ggml_build_forward_impl(&result, node->grad, true);
+            ggml_build_forward_expand(&result, node->grad);
         }
     }
 
     return result;
 }
 
+struct ggml_cgraph * ggml_new_graph(struct ggml_context * ctx) {
+    struct ggml_object * obj = ggml_new_object(ctx, GGML_OBJECT_GRAPH, GGML_GRAPH_SIZE);
+    struct ggml_cgraph * cgraph = (struct ggml_cgraph *) ((char *) ctx->mem_buffer + obj->offs);
+
+    *cgraph = (struct ggml_cgraph) {
+        /*.n_nodes      =*/ 0,
+        /*.n_leafs      =*/ 0,
+        /*.nodes        =*/ { NULL },
+        /*.grads        =*/ { NULL },
+        /*.leafs        =*/ { NULL },
+        /*.hash_table   =*/ { NULL },
+        /*.perf_runs    =*/ 0,
+        /*.perf_cycles  =*/ 0,
+        /*.perf_time_us =*/ 0,
+    };
+
+    return cgraph;
+}
+
+struct ggml_cgraph * ggml_build_forward_ctx(struct ggml_context * ctx, struct ggml_tensor * tensor) {
+    struct ggml_cgraph * cgraph = ggml_new_graph(ctx);
+    ggml_build_forward_impl(cgraph, tensor, false);
+    return cgraph;
+}
+
+size_t ggml_graph_overhead(void) {
+    return GGML_OBJECT_SIZE + GGML_PAD(GGML_GRAPH_SIZE, GGML_MEM_ALIGN);
+}
+
 //
 // thread data
 //
@@ -16254,7 +16971,7 @@ typedef pthread_t ggml_thread_t;
 
 // Android's libc implementation "bionic" does not support setting affinity
 #if defined(__linux__) && !defined(__BIONIC__)
-void set_numa_thread_affinity(int thread_n, int n_threads) {
+static void set_numa_thread_affinity(int thread_n, int n_threads) {
     if (!ggml_is_numa()) {
         return;
     }
@@ -16279,7 +16996,7 @@ void set_numa_thread_affinity(int thread_n, int n_threads) {
     CPU_FREE(cpus);
 }
 
-void clear_numa_thread_affinity(void) {
+static void clear_numa_thread_affinity(void) {
     if (!ggml_is_numa()) {
         return;
     }
@@ -16303,21 +17020,25 @@ void clear_numa_thread_affinity(void) {
 #else
 // TODO: Windows etc.
 // (the linux implementation may also work on BSD, someone should test)
-void set_numa_thread_affinity(int thread_n, int n_threads) { UNUSED(thread_n); UNUSED(n_threads);  }
-void clear_numa_thread_affinity(void) {}
+static void set_numa_thread_affinity(int thread_n, int n_threads) { UNUSED(thread_n); UNUSED(n_threads);  }
+static void clear_numa_thread_affinity(void) {}
 #endif
 
 struct ggml_compute_state_shared {
-    struct ggml_cgraph * cgraph;
+    const struct ggml_cgraph * cgraph;
+    const struct ggml_cplan  * cplan;
 
     int64_t perf_node_start_cycles;
     int64_t perf_node_start_time_us;
 
-    int n_threads;
+    const int n_threads;
 
     // synchronization primitives
     atomic_int n_active; // num active threads
     atomic_int node_n;   // active graph node
+
+    bool (*abort_callback)(void * data); // abort ggml_graph_compute when true
+    void * abort_callback_data;
 };
 
 struct ggml_compute_state {
@@ -16337,14 +17058,22 @@ static void ggml_graph_compute_perf_stats_node(struct ggml_tensor * node, const
 
 static thread_ret_t ggml_graph_compute_thread(void * data) {
     struct ggml_compute_state * state = (struct ggml_compute_state *) data;
-    struct ggml_cgraph * cgraph = state->shared->cgraph;
 
-    const int n_threads = state->shared->n_threads;
+    const struct ggml_cgraph * cgraph = state->shared->cgraph;
+    const struct ggml_cplan  * cplan  = state->shared->cplan;
+
+    const int * n_tasks_arr = cplan->n_tasks;
+    const int   n_threads   = state->shared->n_threads;
+
     set_numa_thread_affinity(state->ith, n_threads);
 
     int node_n = -1;
 
     while (true) {
+        if (cplan->abort_callback && cplan->abort_callback(cplan->abort_callback_data)) {
+            state->shared->node_n += 1;
+            return (thread_ret_t) GGML_EXIT_ABORTED;
+        }
         if (atomic_fetch_sub(&state->shared->n_active, 1) == 1) {
             // all other threads are finished and spinning
             // do finalize and init here so we don't have synchronize again
@@ -16352,18 +17081,18 @@ static thread_ret_t ggml_graph_compute_thread(void * data) {
                 /*.type  =*/ GGML_TASK_FINALIZE,
                 /*.ith   =*/ 0,
                 /*.nth   =*/ 0,
-                /*.wsize =*/ cgraph->work ? ggml_nbytes(cgraph->work) : 0,
-                /*.wdata =*/ cgraph->work ? cgraph->work->data : NULL,
+                /*.wsize =*/ cplan->work_size,
+                /*.wdata =*/ cplan->work_data,
             };
 
             if (node_n != -1) {
                 /* FINALIZE */
                 struct ggml_tensor * node = state->shared->cgraph->nodes[node_n];
                 if (GGML_OP_HAS_FINALIZE[node->op]) {
-                    params.nth = node->n_tasks;
+                    params.nth = n_tasks_arr[node_n];
                     ggml_compute_forward(&params, node);
-                    ggml_graph_compute_perf_stats_node(node, state->shared);
                 }
+                ggml_graph_compute_perf_stats_node(node, state->shared);
             }
 
             // distribute new work or execute it direct if 1T
@@ -16371,11 +17100,12 @@ static thread_ret_t ggml_graph_compute_thread(void * data) {
                 GGML_PRINT_DEBUG_5("%s: %d/%d\n", __func__, node_n, cgraph->n_nodes);
 
                 struct ggml_tensor * node = cgraph->nodes[node_n];
+                const int n_tasks = n_tasks_arr[node_n];
 
                 state->shared->perf_node_start_cycles  = ggml_perf_cycles();
                 state->shared->perf_node_start_time_us = ggml_perf_time_us();
 
-                params.nth = node->n_tasks;
+                params.nth = n_tasks;
 
                 /* INIT */
                 if (GGML_OP_HAS_INIT[node->op]) {
@@ -16383,7 +17113,7 @@ static thread_ret_t ggml_graph_compute_thread(void * data) {
                     ggml_compute_forward(&params, node);
                 }
 
-                if (node->n_tasks == 1) {
+                if (n_tasks == 1) {
                     // TODO: maybe push node_n to the atomic but if other threads see n_tasks is 1,
                     // they do something more efficient than spinning (?)
                     params.type = GGML_TASK_COMPUTE;
@@ -16392,11 +17122,16 @@ static thread_ret_t ggml_graph_compute_thread(void * data) {
                     if (GGML_OP_HAS_FINALIZE[node->op]) {
                         params.type = GGML_TASK_FINALIZE;
                         ggml_compute_forward(&params, node);
-                        ggml_graph_compute_perf_stats_node(node, state->shared);
                     }
+
+                    ggml_graph_compute_perf_stats_node(node, state->shared);
                 } else {
                     break;
                 }
+
+                if (cplan->abort_callback && cplan->abort_callback(cplan->abort_callback_data)) {
+                    break;
+                }
             }
 
             atomic_store(&state->shared->n_active, n_threads);
@@ -16405,7 +17140,7 @@ static thread_ret_t ggml_graph_compute_thread(void * data) {
             // wait for other threads to finish
             const int last = node_n;
             do {
-                sched_yield();
+                //sched_yield();
                 node_n = atomic_load(&state->shared->node_n);
             } while (node_n == last);
         }
@@ -16415,384 +17150,465 @@ static thread_ret_t ggml_graph_compute_thread(void * data) {
 
         /* COMPUTE */
         struct ggml_tensor * node = cgraph->nodes[node_n];
+        const int n_tasks = n_tasks_arr[node_n];
 
         struct ggml_compute_params params = {
             /*.type  =*/ GGML_TASK_COMPUTE,
             /*.ith   =*/ state->ith,
-            /*.nth   =*/ node->n_tasks,
-            /*.wsize =*/ cgraph->work ? ggml_nbytes(cgraph->work) : 0,
-            /*.wdata =*/ cgraph->work ? cgraph->work->data : NULL,
+            /*.nth   =*/ n_tasks,
+            /*.wsize =*/ cplan->work_size,
+            /*.wdata =*/ cplan->work_data,
         };
 
-        if (state->ith < node->n_tasks) {
+        if (state->ith < n_tasks) {
             ggml_compute_forward(&params, node);
         }
     }
 
-    return 0;
+    return GGML_EXIT_SUCCESS;
 }
 
-void ggml_graph_compute(struct ggml_context * ctx, struct ggml_cgraph * cgraph) {
-    const int n_threads = cgraph->n_threads;
+struct ggml_cplan ggml_graph_plan(struct ggml_cgraph * cgraph, int n_threads) {
+    if (n_threads <= 0) {
+        n_threads = GGML_DEFAULT_N_THREADS;
+    }
 
-    struct ggml_compute_state_shared state_shared = {
-        /*.cgraph                  =*/ cgraph,
-        /*.perf_node_start_cycles  =*/ 0,
-        /*.perf_node_start_time_us =*/ 0,
-        /*.n_threads               =*/ n_threads,
-        /*.n_active                =*/ n_threads,
-        /*.node_n                  =*/ -1,
-    };
-    struct ggml_compute_state * workers = alloca(sizeof(struct ggml_compute_state)*n_threads);
+    size_t work_size = 0;
 
-    // initialize tasks + work buffer
-    {
-        size_t work_size = 0;
+    struct ggml_cplan cplan;
+    memset(&cplan, 0, sizeof(struct ggml_cplan));
 
-        // thread scheduling for the different operations
-        for (int i = 0; i < cgraph->n_nodes; i++) {
-            struct ggml_tensor * node = cgraph->nodes[i];
+    // thread scheduling for the different operations + work buffer size estimation
+    for (int i = 0; i < cgraph->n_nodes; i++) {
+        int n_tasks = 1;
 
-            switch (node->op) {
-                case GGML_OP_CPY:
-                case GGML_OP_DUP:
-                    {
-                        node->n_tasks = n_threads;
+        struct ggml_tensor * node = cgraph->nodes[i];
 
-                        size_t cur = 0;
-                        if (ggml_is_quantized(node->type)) {
-                            cur = GGML_TYPE_SIZE[GGML_TYPE_F32] * node->ne[0] * n_threads;
-                        }
+        switch (node->op) {
+            case GGML_OP_CPY:
+            case GGML_OP_DUP:
+                {
+                    n_tasks = n_threads;
 
-                        work_size = MAX(work_size, cur);
-                    } break;
-                case GGML_OP_ADD:
-                case GGML_OP_ADD1:
-                    {
-                        node->n_tasks = n_threads;
+                    size_t cur = 0;
+                    if (ggml_is_quantized(node->type)) {
+                        cur = ggml_type_size(GGML_TYPE_F32) * node->ne[0] * n_tasks;
+                    }
 
-                        size_t cur = 0;
+                    work_size = MAX(work_size, cur);
+                } break;
+            case GGML_OP_ADD:
+            case GGML_OP_ADD1:
+                {
+                    n_tasks = n_threads;
 
-                        if (ggml_is_quantized(node->src0->type)) {
-                            cur = GGML_TYPE_SIZE[GGML_TYPE_F32] * node->src0->ne[0] * n_threads;
-                        }
+                    size_t cur = 0;
 
-                        work_size = MAX(work_size, cur);
-                    } break;
-                case GGML_OP_ACC:
-                    {
-                        node->n_tasks = n_threads;
+                    if (ggml_is_quantized(node->src[0]->type)) {
+                        cur = ggml_type_size(GGML_TYPE_F32) * node->src[0]->ne[0] * n_tasks;
+                    }
 
-                        size_t cur = 0;
+                    work_size = MAX(work_size, cur);
+                } break;
+            case GGML_OP_ACC:
+                {
+                    n_tasks = n_threads;
 
-                        if (ggml_is_quantized(node->src0->type)) {
-                            cur = GGML_TYPE_SIZE[GGML_TYPE_F32] * node->src1->ne[0] * n_threads;
-                        }
+                    size_t cur = 0;
 
-                        work_size = MAX(work_size, cur);
-                    } break;
-                case GGML_OP_SUB:
-                case GGML_OP_DIV:
-                case GGML_OP_SQR:
-                case GGML_OP_SQRT:
-                case GGML_OP_LOG:
-                case GGML_OP_SUM:
-                case GGML_OP_SUM_ROWS:
-                case GGML_OP_MEAN:
-                case GGML_OP_ARGMAX:
-                case GGML_OP_REPEAT:
-                case GGML_OP_REPEAT_BACK:
-                case GGML_OP_ABS:
-                case GGML_OP_SGN:
-                case GGML_OP_NEG:
-                case GGML_OP_STEP:
-                case GGML_OP_TANH:
-                case GGML_OP_ELU:
-                case GGML_OP_RELU:
-                    {
-                        node->n_tasks = 1;
-                    } break;
-                case GGML_OP_MUL:
-                case GGML_OP_GELU:
-                case GGML_OP_GELU_QUICK:
-                case GGML_OP_SILU:
-                case GGML_OP_SILU_BACK:
-                case GGML_OP_NORM:
-                case GGML_OP_RMS_NORM:
-                case GGML_OP_RMS_NORM_BACK:
-                    {
-                        node->n_tasks = n_threads;
-                    } break;
-                case GGML_OP_MUL_MAT:
-                case GGML_OP_OUT_PROD:
-                    {
-                        node->n_tasks = n_threads;
+                    if (ggml_is_quantized(node->src[0]->type)) {
+                        cur = ggml_type_size(GGML_TYPE_F32) * node->src[1]->ne[0] * n_tasks;
+                    }
+
+                    work_size = MAX(work_size, cur);
+                } break;
+            case GGML_OP_SUB:
+            case GGML_OP_DIV:
+            case GGML_OP_SQR:
+            case GGML_OP_SQRT:
+            case GGML_OP_LOG:
+            case GGML_OP_SUM:
+            case GGML_OP_SUM_ROWS:
+            case GGML_OP_MEAN:
+            case GGML_OP_ARGMAX:
+            case GGML_OP_REPEAT:
+            case GGML_OP_REPEAT_BACK:
+            {
+                    n_tasks = 1;
+                } break;
+
+            case GGML_OP_UNARY:
+                {
+                    switch (ggml_get_unary_op(node)) {
+                        case GGML_UNARY_OP_ABS:
+                        case GGML_UNARY_OP_SGN:
+                        case GGML_UNARY_OP_NEG:
+                        case GGML_UNARY_OP_STEP:
+                        case GGML_UNARY_OP_TANH:
+                        case GGML_UNARY_OP_ELU:
+                        case GGML_UNARY_OP_RELU:
+                            {
+                                n_tasks = 1;
+                            } break;
+
+                        case GGML_UNARY_OP_GELU:
+                        case GGML_UNARY_OP_GELU_QUICK:
+                        case GGML_UNARY_OP_SILU:
+                            {
+                                n_tasks = n_threads;
+                            } break;
+                    }
+                } break;
+            case GGML_OP_SILU_BACK:
+            case GGML_OP_MUL:
+            case GGML_OP_NORM:
+            case GGML_OP_RMS_NORM:
+            case GGML_OP_RMS_NORM_BACK:
+            case GGML_OP_GROUP_NORM:
+                {
+                    n_tasks = n_threads;
+                } break;
+            case GGML_OP_CONCAT:
+            case GGML_OP_MUL_MAT:
+            case GGML_OP_OUT_PROD:
+                {
+                    n_tasks = n_threads;
 
-                        // TODO: use different scheduling for different matrix sizes
-                        //const int nr0 = ggml_nrows(node->src0);
-                        //const int nr1 = ggml_nrows(node->src1);
+                    // TODO: use different scheduling for different matrix sizes
+                    //const int nr0 = ggml_nrows(node->src[0]);
+                    //const int nr1 = ggml_nrows(node->src[1]);
 
-                        //node->n_tasks = MIN(n_threads, MAX(1, nr0/128));
-                        //printf("nr0 = %8d, nr1 = %8d, nr0*nr1 = %8d, n_tasks = %d\n", nr0, nr1, nr0*nr1, node->n_tasks);
+                    //n_tasks = MIN(n_threads, MAX(1, nr0/128));
+                    //printf("nr0 = %8d, nr1 = %8d, nr0*nr1 = %8d, n_tasks%d\n", nr0, nr1, nr0*nr1, n_tasks);
 
-                        size_t cur = 0;
+                    size_t cur = 0;
+                    const enum ggml_type vec_dot_type = type_traits[node->src[0]->type].vec_dot_type;
 
 #if defined(GGML_USE_CUBLAS)
-                        if (ggml_cuda_can_mul_mat(node->src0, node->src1, node)) {
-                            node->n_tasks = 1; // TODO: this actually is doing nothing
-                                                //       the threads are still spinning
-                        }
-                        else
+                    if (ggml_cuda_can_mul_mat(node->src[0], node->src[1], node)) {
+                        n_tasks = 1; // TODO: this actually is doing nothing
+                                     //       the threads are still spinning
+                    } else
 #elif defined(GGML_USE_CLBLAST)
-                        if (ggml_cl_can_mul_mat(node->src0, node->src1, node)) {
-                            node->n_tasks = 1; // TODO: this actually is doing nothing
-                                                //       the threads are still spinning
-                            cur = ggml_cl_mul_mat_get_wsize(node->src0, node->src1, node);
-                        }
-                        else
-#endif
-                        if (node->src0->type == GGML_TYPE_F16 && node->src1->type == GGML_TYPE_F32) {
-#if defined(GGML_USE_ACCELERATE) || defined(GGML_USE_OPENBLAS)
-                            if (ggml_compute_forward_mul_mat_use_blas(node->src0, node->src1, node)) {
-                                node->n_tasks = 1; // TODO: this actually is doing nothing
-                                                   //       the threads are still spinning
-                                // here we need memory just for single 2D matrix from src0
-                                cur = GGML_TYPE_SIZE[GGML_TYPE_F32]*(node->src0->ne[0]*node->src0->ne[1]);
-                            } else {
-                                cur = GGML_TYPE_SIZE[GGML_TYPE_F16]*ggml_nelements(node->src1);
-                            }
-#else
-                            cur = GGML_TYPE_SIZE[GGML_TYPE_F16]*ggml_nelements(node->src1);
-#endif
-                        } else if (node->src0->type == GGML_TYPE_F32 && node->src1->type == GGML_TYPE_F32) {
-                            cur = 0;
-#if defined(GGML_USE_ACCELERATE) || defined(GGML_USE_OPENBLAS)
-                            if (ggml_compute_forward_mul_mat_use_blas(node->src0, node->src1, node)) {
-                                node->n_tasks = 1;
-                            }
+                    if (ggml_cl_can_mul_mat(node->src[0], node->src[1], node)) {
+                        n_tasks = 1; // TODO: this actually is doing nothing
+                                     //       the threads are still spinning
+                        cur = ggml_cl_mul_mat_get_wsize(node->src[0], node->src[1], node);
+                    } else
 #endif
-                        } else if (ggml_is_quantized(node->src0->type) && node->src1->type == GGML_TYPE_F32) {
 #if defined(GGML_USE_ACCELERATE) || defined(GGML_USE_OPENBLAS)
-                            if (ggml_compute_forward_mul_mat_use_blas(node->src0, node->src1, node)) {
-                                node->n_tasks = 1;
-                                cur = GGML_TYPE_SIZE[GGML_TYPE_F32]*(node->src0->ne[0]*node->src0->ne[1]);
-                            } else
-#endif
-                            {
-                                const enum ggml_type type_q = quantize_fns[node->src0->type].vec_dot_type;
-                                cur = GGML_TYPE_SIZE[type_q]*ggml_nelements(node->src1)/GGML_BLCK_SIZE[type_q];
-                            }
-                        } else {
-                            GGML_ASSERT(false);
-                        }
-
-                        work_size = MAX(work_size, cur);
-                    } break;
-                case GGML_OP_SCALE:
-                    {
-                        node->n_tasks = 1;
-                    } break;
-                case GGML_OP_SET:
-                case GGML_OP_CONT:
-                case GGML_OP_RESHAPE:
-                case GGML_OP_VIEW:
-                case GGML_OP_PERMUTE:
-                case GGML_OP_TRANSPOSE:
-                case GGML_OP_GET_ROWS:
-                case GGML_OP_GET_ROWS_BACK:
-                case GGML_OP_DIAG:
-                case GGML_OP_DIAG_MASK_ZERO:
-                    {
-                        node->n_tasks = 1;
-                    } break;
-                case GGML_OP_DIAG_MASK_INF:
-                case GGML_OP_SOFT_MAX:
-                case GGML_OP_SOFT_MAX_BACK:
-                case GGML_OP_ROPE:
-                case GGML_OP_ROPE_BACK:
-                    {
-                        node->n_tasks = n_threads;
-                    } break;
-                case GGML_OP_ALIBI:
-                    {
-                        node->n_tasks = 1; //TODO
-                    } break;
-                case GGML_OP_CLAMP:
-                    {
-                        node->n_tasks = 1; //TODO
-                    } break;
-                case GGML_OP_CONV_1D:
-                    {
-                        node->n_tasks = n_threads;
-
-                        GGML_ASSERT(node->src0->ne[3] == 1);
-                        GGML_ASSERT(node->src1->ne[2] == 1);
-                        GGML_ASSERT(node->src1->ne[3] == 1);
-
-                        size_t cur = 0;
-                        const int nk = node->src0->ne[0];
-
-                        if (node->src0->type == GGML_TYPE_F16 &&
-                            node->src1->type == GGML_TYPE_F32) {
-                            cur = sizeof(ggml_fp16_t)*(
-                                    nk*ggml_up32(node->src0->ne[1])*node->src0->ne[2] +
-                                    ( 2*(nk/2) + node->src1->ne[0])*node->src1->ne[1]
-                                    );
-                        } else if (node->src0->type == GGML_TYPE_F32 &&
-                                   node->src1->type == GGML_TYPE_F32) {
-                            cur = sizeof(float)*(
-                                    nk*ggml_up32(node->src0->ne[1])*node->src0->ne[2] +
-                                    ( 2*(nk/2) + node->src1->ne[0])*node->src1->ne[1]
-                                    );
-                        } else {
-                            GGML_ASSERT(false);
+                    if (ggml_compute_forward_mul_mat_use_blas(node->src[0], node->src[1], node)) {
+                        n_tasks = 1; // TODO: this actually is doing nothing
+                                     //       the threads are still spinning
+                        if (node->src[0]->type != GGML_TYPE_F32) {
+                            // here we need memory just for single 2D matrix from src0
+                            cur = ggml_type_size(GGML_TYPE_F32)*(node->src[0]->ne[0]*node->src[0]->ne[1]);
                         }
+                    } else
+#endif
+                    if (node->src[1]->type != vec_dot_type) {
+                        cur = ggml_type_size(vec_dot_type)*ggml_nelements(node->src[1])/ggml_blck_size(vec_dot_type);
+                    } else {
+                        cur = 0;
+                    }
 
-                        work_size = MAX(work_size, cur);
-                    } break;
-                case GGML_OP_CONV_2D:
-                    {
-                        node->n_tasks = n_threads;
-
-                        GGML_ASSERT(node->src1->ne[3] == 1);
-
-                        const int64_t ne00 = node->src0->ne[0]; // W
-                        const int64_t ne01 = node->src0->ne[1]; // H
-                        const int64_t ne02 = node->src0->ne[2]; // C
-                        const int64_t ne03 = node->src0->ne[3]; // N
+                    work_size = MAX(work_size, cur);
+                } break;
+            case GGML_OP_SCALE:
+                {
+                    n_tasks = 1;
+                } break;
+            case GGML_OP_SET:
+            case GGML_OP_CONT:
+            case GGML_OP_RESHAPE:
+            case GGML_OP_VIEW:
+            case GGML_OP_PERMUTE:
+            case GGML_OP_TRANSPOSE:
+            case GGML_OP_GET_ROWS:
+            case GGML_OP_GET_ROWS_BACK:
+            case GGML_OP_DIAG:
+                {
+                    n_tasks = 1;
+                } break;
+            case GGML_OP_DIAG_MASK_ZERO:
+            case GGML_OP_DIAG_MASK_INF:
+            case GGML_OP_SOFT_MAX:
+            case GGML_OP_SOFT_MAX_BACK:
+            case GGML_OP_ROPE:
+            case GGML_OP_ROPE_BACK:
+            case GGML_OP_ADD_REL_POS:
+                {
+                    n_tasks = n_threads;
+                } break;
+            case GGML_OP_ALIBI:
+                {
+                    n_tasks = 1; //TODO
+                } break;
+            case GGML_OP_CLAMP:
+                {
+                    n_tasks = 1; //TODO
+                } break;
+            case GGML_OP_CONV_1D:
+                {
+                    n_tasks = n_threads;
+
+                    GGML_ASSERT(node->src[0]->ne[3] == 1);
+                    GGML_ASSERT(node->src[1]->ne[2] == 1);
+                    GGML_ASSERT(node->src[1]->ne[3] == 1);
+
+                    size_t cur = 0;
+                    const int nk = node->src[0]->ne[0];
+
+                    if (node->src[0]->type == GGML_TYPE_F16 &&
+                            node->src[1]->type == GGML_TYPE_F32) {
+                        cur = sizeof(ggml_fp16_t)*(
+                                nk*ggml_up32(node->src[0]->ne[1])*node->src[0]->ne[2] +
+                                ( 2*(nk/2) + node->src[1]->ne[0])*node->src[1]->ne[1]
+                                );
+                    } else if (node->src[0]->type == GGML_TYPE_F32 &&
+                            node->src[1]->type == GGML_TYPE_F32) {
+                        cur = sizeof(float)*(
+                                nk*ggml_up32(node->src[0]->ne[1])*node->src[0]->ne[2] +
+                                ( 2*(nk/2) + node->src[1]->ne[0])*node->src[1]->ne[1]
+                                );
+                    } else {
+                        GGML_ASSERT(false);
+                    }
 
-                        const int64_t ne10 = node->src1->ne[0]; // W
-                        const int64_t ne11 = node->src1->ne[1]; // H
-                        const int64_t ne12 = node->src1->ne[2]; // C
+                    work_size = MAX(work_size, cur);
+                } break;
+            case GGML_OP_CONV_2D:
+                {
+                    n_tasks = n_threads;
+
+                    const int64_t ne00 = node->src[0]->ne[0]; // W
+                    const int64_t ne01 = node->src[0]->ne[1]; // H
+                    const int64_t ne02 = node->src[0]->ne[2]; // C
+                    const int64_t ne03 = node->src[0]->ne[3]; // N
+
+                    const int64_t ne10 = node->src[1]->ne[0]; // W
+                    const int64_t ne11 = node->src[1]->ne[1]; // H
+                    const int64_t ne12 = node->src[1]->ne[2]; // C
+
+                    const int64_t ne0 = node->ne[0];
+                    const int64_t ne1 = node->ne[1];
+                    const int64_t ne2 = node->ne[2];
+                    const int64_t nk = ne00*ne01;
+                    const int64_t ew0 = nk * ne02;
+
+                    UNUSED(ne03);
+                    UNUSED(ne2);
+
+                    size_t cur = 0;
+
+                    if (node->src[0]->type == GGML_TYPE_F16 &&
+                        node->src[1]->type == GGML_TYPE_F32) {
+                        cur = sizeof(ggml_fp16_t)*(ne0*ne1*ew0);
+                    } else if (node->src[0]->type == GGML_TYPE_F32 &&
+                               node->src[1]->type == GGML_TYPE_F32) {
+                        cur = sizeof(float)*      (ne10*ne11*ne12);
+                    } else {
+                        GGML_ASSERT(false);
+                    }
 
-                        const int64_t nk = ne00*ne01;
+                    work_size = MAX(work_size, cur);
+                } break;
+            case GGML_OP_CONV_TRANSPOSE_2D:
+                {
+                    n_tasks = n_threads;
 
-                        UNUSED(ne02);
-                        UNUSED(ne03);
-                        UNUSED(nk);
+                    const int64_t ne00 = node->src[0]->ne[0]; // W
+                    const int64_t ne01 = node->src[0]->ne[1]; // H
+                    const int64_t ne02 = node->src[0]->ne[2]; // Channels Out
+                    const int64_t ne03 = node->src[0]->ne[3]; // Channels In
 
-                        size_t cur = 0;
+                    const int64_t ne10 = node->src[1]->ne[0]; // W
+                    const int64_t ne11 = node->src[1]->ne[1]; // H
+                    const int64_t ne12 = node->src[1]->ne[2]; // Channels In
 
-                        if (node->src0->type == GGML_TYPE_F16 &&
-                            node->src1->type == GGML_TYPE_F32) {
-                            cur = sizeof(ggml_fp16_t)*(ne10*ne11*ne12);
-                        } else if (node->src0->type == GGML_TYPE_F32 &&
-                                   node->src1->type == GGML_TYPE_F32) {
-                            cur = sizeof(float)*      (ne10*ne11*ne12);
-                        } else {
-                            GGML_ASSERT(false);
-                        }
+                    size_t cur = 0;
+                    cur += sizeof(ggml_fp16_t)*ne00*ne01*ne02*ne03;
+                    cur += sizeof(ggml_fp16_t)*ne10*ne11*ne12;
 
-                        work_size = MAX(work_size, cur);
-                    } break;
-                case GGML_OP_FLASH_ATTN:
-                    {
-                        node->n_tasks = n_threads;
+                    work_size = MAX(work_size, cur);
+                } break;
+            case GGML_OP_POOL_1D:
+            case GGML_OP_POOL_2D:
+                {
+                    n_tasks = 1;
+                } break;
+            case GGML_OP_UPSCALE:
+                {
+                    n_tasks = n_threads;
+                } break;
+            case GGML_OP_FLASH_ATTN:
+                {
+                    n_tasks = n_threads;
 
-                        size_t cur = 0;
+                    size_t cur = 0;
 
-                        const int64_t ne11 = ggml_up(node->src1->ne[1], GGML_SOFT_MAX_UNROLL);
+                    const int64_t ne11 = ggml_up(node->src[1]->ne[1], GGML_SOFT_MAX_UNROLL);
 
-                        if (node->src1->type == GGML_TYPE_F32) {
-                            cur  = sizeof(float)*ne11*node->n_tasks; // TODO: this can become (n_tasks-1)
-                            cur += sizeof(float)*ne11*node->n_tasks; // this is overestimated by x2
-                        }
+                    if (node->src[1]->type == GGML_TYPE_F32) {
+                        cur  = sizeof(float)*ne11*n_tasks; // TODO: this can become (n_tasks-1)
+                        cur += sizeof(float)*ne11*n_tasks; // this is overestimated by x2
+                    }
 
-                        if (node->src1->type == GGML_TYPE_F16) {
-                            cur  = sizeof(float)*ne11*node->n_tasks; // TODO: this can become (n_tasks-1)
-                            cur += sizeof(float)*ne11*node->n_tasks; // this is overestimated by x2
-                        }
+                    if (node->src[1]->type == GGML_TYPE_F16) {
+                        cur  = sizeof(float)*ne11*n_tasks; // TODO: this can become (n_tasks-1)
+                        cur += sizeof(float)*ne11*n_tasks; // this is overestimated by x2
+                    }
 
-                        work_size = MAX(work_size, cur);
-                    } break;
-                case GGML_OP_FLASH_FF:
-                    {
-                        node->n_tasks = n_threads;
+                    work_size = MAX(work_size, cur);
+                } break;
+            case GGML_OP_FLASH_FF:
+                {
+                    n_tasks = n_threads;
 
-                        size_t cur = 0;
+                    size_t cur = 0;
 
-                        if (node->src1->type == GGML_TYPE_F32) {
-                            cur  = sizeof(float)*node->src1->ne[1]*node->n_tasks; // TODO: this can become (n_tasks-1)
-                            cur += sizeof(float)*node->src1->ne[1]*node->n_tasks; // this is overestimated by x2
-                        }
+                    if (node->src[1]->type == GGML_TYPE_F32) {
+                        cur  = sizeof(float)*node->src[1]->ne[1]*n_tasks; // TODO: this can become (n_tasks-1)
+                        cur += sizeof(float)*node->src[1]->ne[1]*n_tasks; // this is overestimated by x2
+                    }
 
-                        if (node->src1->type == GGML_TYPE_F16) {
-                            cur  = sizeof(float)*node->src1->ne[1]*node->n_tasks; // TODO: this can become (n_tasks-1)
-                            cur += sizeof(float)*node->src1->ne[1]*node->n_tasks; // this is overestimated by x2
-                        }
+                    if (node->src[1]->type == GGML_TYPE_F16) {
+                        cur  = sizeof(float)*node->src[1]->ne[1]*n_tasks; // TODO: this can become (n_tasks-1)
+                        cur += sizeof(float)*node->src[1]->ne[1]*n_tasks; // this is overestimated by x2
+                    }
 
-                        work_size = MAX(work_size, cur);
-                    } break;
-                case GGML_OP_FLASH_ATTN_BACK:
-                    {
-                        node->n_tasks = n_threads;
+                    work_size = MAX(work_size, cur);
+                } break;
+            case GGML_OP_FLASH_ATTN_BACK:
+                {
+                    n_tasks = n_threads;
 
-                        size_t cur = 0;
+                    size_t cur = 0;
 
-                        const int64_t    D = node->src0->ne[0];
-                        const int64_t ne11 = ggml_up(node->src1->ne[1], GGML_SOFT_MAX_UNROLL);
-                        const int64_t mxDn = MAX(D, ne11) * 2; // *2 because of S and SM in ggml_compute_forward_flash_attn_back
-                        if (node->src1->type == GGML_TYPE_F32) {
-                            cur  = sizeof(float)*mxDn*node->n_tasks; // TODO: this can become (n_tasks-1)
-                            cur += sizeof(float)*mxDn*node->n_tasks; // this is overestimated by x2
-                        }
+                    const int64_t    D = node->src[0]->ne[0];
+                    const int64_t ne11 = ggml_up(node->src[1]->ne[1], GGML_SOFT_MAX_UNROLL);
+                    const int64_t mxDn = MAX(D, ne11) * 2; // *2 because of S and SM in ggml_compute_forward_flash_attn_back
+                    if (node->src[1]->type == GGML_TYPE_F32) {
+                        cur  = sizeof(float)*mxDn*n_tasks; // TODO: this can become (n_tasks-1)
+                        cur += sizeof(float)*mxDn*n_tasks; // this is overestimated by x2
+                    }
 
-                        if (node->src1->type == GGML_TYPE_F16) {
-                            cur  = sizeof(float)*mxDn*node->n_tasks; // TODO: this can become (n_tasks-1)
-                            cur += sizeof(float)*mxDn*node->n_tasks; // this is overestimated by x2
-                        }
+                    if (node->src[1]->type == GGML_TYPE_F16) {
+                        cur  = sizeof(float)*mxDn*n_tasks; // TODO: this can become (n_tasks-1)
+                        cur += sizeof(float)*mxDn*n_tasks; // this is overestimated by x2
+                    }
 
-                        work_size = MAX(work_size, cur);
-                    } break;
-                case GGML_OP_WIN_PART:
-                case GGML_OP_WIN_UNPART:
-                case GGML_OP_MAP_UNARY:
-                case GGML_OP_MAP_BINARY:
-                case GGML_OP_MAP_CUSTOM1:
-                case GGML_OP_MAP_CUSTOM2:
-                case GGML_OP_MAP_CUSTOM3:
-                    {
-                        node->n_tasks = 1;
-                    } break;
-                case GGML_OP_CROSS_ENTROPY_LOSS:
-                    {
-                        node->n_tasks = n_threads;
+                    work_size = MAX(work_size, cur);
+                } break;
+            case GGML_OP_WIN_PART:
+            case GGML_OP_WIN_UNPART:
+            case GGML_OP_GET_REL_POS:
+            case GGML_OP_MAP_UNARY:
+            case GGML_OP_MAP_BINARY:
+            case GGML_OP_MAP_CUSTOM1_F32:
+            case GGML_OP_MAP_CUSTOM2_F32:
+            case GGML_OP_MAP_CUSTOM3_F32:
+                {
+                    n_tasks = 1;
+                } break;
+            case GGML_OP_MAP_CUSTOM1:
+                {
+                    struct ggml_map_custom1_op_params * p = (struct ggml_map_custom1_op_params *) node->op_params;
+                    if (p->n_tasks == GGML_N_TASKS_MAX) {
+                        n_tasks = n_threads;
+                    } else {
+                        n_tasks = MIN(p->n_tasks, n_threads);
+                    }
+                } break;
+            case GGML_OP_MAP_CUSTOM2:
+                {
+                    struct ggml_map_custom2_op_params * p = (struct ggml_map_custom2_op_params *) node->op_params;
+                    if (p->n_tasks == GGML_N_TASKS_MAX) {
+                        n_tasks = n_threads;
+                    } else {
+                        n_tasks = MIN(p->n_tasks, n_threads);
+                    }
+                } break;
+            case GGML_OP_MAP_CUSTOM3:
+                {
+                    struct ggml_map_custom3_op_params * p = (struct ggml_map_custom3_op_params *) node->op_params;
+                    if (p->n_tasks == GGML_N_TASKS_MAX) {
+                        n_tasks = n_threads;
+                    } else {
+                        n_tasks = MIN(p->n_tasks, n_threads);
+                    }
+                } break;
+            case GGML_OP_CROSS_ENTROPY_LOSS:
+                {
+                    n_tasks = n_threads;
 
-                        size_t cur = ggml_type_size(node->type)*(node->n_tasks + node->src0->ne[0]*node->n_tasks);
+                    size_t cur = ggml_type_size(node->type)*(n_tasks + node->src[0]->ne[0]*n_tasks);
 
-                        work_size = MAX(work_size, cur);
-                    } break;
-                case GGML_OP_CROSS_ENTROPY_LOSS_BACK:
-                    {
-                        node->n_tasks = n_threads;
+                    work_size = MAX(work_size, cur);
+                } break;
+            case GGML_OP_CROSS_ENTROPY_LOSS_BACK:
+                {
+                    n_tasks = n_threads;
 
-                        size_t cur = ggml_type_size(node->type)*node->src0->ne[0]*node->n_tasks;
+                    size_t cur = ggml_type_size(node->type)*node->src[0]->ne[0]*n_tasks;
 
-                        work_size = MAX(work_size, cur);
-                    } break;
-                case GGML_OP_NONE:
-                    {
-                        node->n_tasks = 1;
-                    } break;
-                case GGML_OP_COUNT:
-                    {
-                        GGML_ASSERT(false);
-                    } break;
-            }
+                    work_size = MAX(work_size, cur);
+                } break;
+            case GGML_OP_NONE:
+                {
+                    n_tasks = 1;
+                } break;
+            case GGML_OP_COUNT:
+                {
+                    GGML_ASSERT(false);
+                } break;
         }
 
-        if (cgraph->work != NULL && work_size > cgraph->work_size) {
-            GGML_ASSERT(false); // TODO: better handling
-        }
+        cplan.n_tasks[i] = n_tasks;
+    }
+
+    if (work_size > 0) {
+        work_size += CACHE_LINE_SIZE*(n_threads - 1);
+    }
+
+    cplan.n_threads = n_threads;
+    cplan.work_size = work_size;
+    cplan.work_data = NULL;
 
-        if (work_size > 0 && cgraph->work == NULL) {
-            cgraph->work_size = work_size + CACHE_LINE_SIZE*(n_threads - 1);
+    return cplan;
+}
+
+int ggml_graph_compute(struct ggml_cgraph * cgraph, struct ggml_cplan * cplan) {
+    {
+        GGML_ASSERT(cplan);
+        GGML_ASSERT(cplan->n_threads > 0);
+
+        if (cplan->work_size > 0) {
+            GGML_ASSERT(cplan->work_data);
+        }
 
-            GGML_PRINT_DEBUG("%s: allocating work buffer for graph (%zu bytes)\n", __func__, cgraph->work_size);
-            cgraph->work = ggml_new_tensor_1d(ctx, GGML_TYPE_I8, cgraph->work_size);
+        for (int i = 0; i < cgraph->n_nodes; ++i) {
+            if (cgraph->nodes[i]->op != GGML_OP_NONE) {
+                GGML_ASSERT(cplan->n_tasks[i] > 0);
+            }
         }
     }
 
+    const int n_threads = cplan->n_threads;
+
+    struct ggml_compute_state_shared state_shared = {
+        /*.cgraph                  =*/ cgraph,
+        /*.cgraph_plan             =*/ cplan,
+        /*.perf_node_start_cycles  =*/ 0,
+        /*.perf_node_start_time_us =*/ 0,
+        /*.n_threads               =*/ n_threads,
+        /*.n_active                =*/ n_threads,
+        /*.node_n                  =*/ -1,
+        /*.abort_callback          =*/ NULL,
+        /*.abort_callback_data     =*/ NULL,
+    };
+    struct ggml_compute_state * workers = alloca(sizeof(struct ggml_compute_state)*n_threads);
+
     // create thread pool
     if (n_threads > 1) {
         for (int j = 1; j < n_threads; ++j) {
@@ -16804,8 +17620,10 @@ void ggml_graph_compute(struct ggml_context * ctx, struct ggml_cgraph * cgraph)
 
             const int rc = ggml_thread_create(&workers[j].thrd, NULL, ggml_graph_compute_thread, &workers[j]);
             GGML_ASSERT(rc == 0);
+            UNUSED(rc);
         }
     }
+
     workers[0].ith = 0;
     workers[0].shared = &state_shared;
 
@@ -16813,12 +17631,12 @@ void ggml_graph_compute(struct ggml_context * ctx, struct ggml_cgraph * cgraph)
     const int64_t perf_start_time_us = ggml_perf_time_us();
 
     // this is a work thread too
-    ggml_graph_compute_thread(&workers[0]);
+    int compute_status = (size_t) ggml_graph_compute_thread(&workers[0]);
 
     // don't leave affinity set on the main thread
     clear_numa_thread_affinity();
 
-    // join thread pool
+    // join or kill thread pool
     if (n_threads > 1) {
         for (int j = 1; j < n_threads; j++) {
             const int rc = ggml_thread_join(workers[j].thrd, NULL);
@@ -16842,6 +17660,8 @@ void ggml_graph_compute(struct ggml_context * ctx, struct ggml_cgraph * cgraph)
                 (double) perf_time_us_cur     / 1000.0,
                 (double) cgraph->perf_time_us / 1000.0 / cgraph->perf_runs);
     }
+
+    return compute_status;
 }
 
 void ggml_graph_reset(struct ggml_cgraph * cgraph) {
@@ -16854,6 +17674,16 @@ void ggml_graph_reset(struct ggml_cgraph * cgraph) {
     }
 }
 
+void ggml_graph_compute_with_ctx(struct ggml_context * ctx, struct ggml_cgraph * cgraph, int n_threads) {
+    struct ggml_cplan cplan = ggml_graph_plan(cgraph, n_threads);
+
+    struct ggml_object * obj = ggml_new_object(ctx, GGML_OBJECT_WORK_BUFFER, cplan.work_size);
+
+    cplan.work_data = (uint8_t *)ctx->mem_buffer + obj->offs;
+
+    ggml_graph_compute(cgraph, &cplan);
+}
+
 struct ggml_tensor * ggml_graph_get_tensor(struct ggml_cgraph * cgraph, const char * name) {
     for (int i = 0; i < cgraph->n_leafs; i++) {
         struct ggml_tensor * leaf = cgraph->leafs[i];
@@ -16892,28 +17722,24 @@ static void ggml_graph_export_node(const struct ggml_tensor * tensor, const char
     const int64_t * ne = tensor->ne;
     const size_t  * nb = tensor->nb;
 
-    fprintf(fout, "%-6s %-6s %-12s %8d %" PRId64 " %" PRId64 " %" PRId64 " %" PRId64 " %16zu %16zu %16zu %16zu %8d %16p %32s\n",
+    fprintf(fout, "%-6s %-6s %-12s %8d %" PRId64 " %" PRId64 " %" PRId64 " %" PRId64 " %16zu %16zu %16zu %16zu %16p %32s\n",
             arg,
             ggml_type_name(tensor->type),
             ggml_op_name  (tensor->op),
             tensor->n_dims,
             ne[0], ne[1], ne[2], ne[3],
             nb[0], nb[1], nb[2], nb[3],
-            tensor->n_tasks,
             tensor->data,
             tensor->name);
 }
 
 void ggml_graph_export(const struct ggml_cgraph * cgraph, const char * fname) {
-    //assert(cgraph->work      == NULL);
-    //assert(cgraph->work_size == 0);
-
     uint64_t size_eval = 0;
 
     // compute size of intermediate results
     // TODO: does not take into account scratch buffers !!!!
     for (int i = 0; i < cgraph->n_nodes; ++i) {
-        size_eval += ggml_nbytes(cgraph->nodes[i]);
+        size_eval += ggml_nbytes_pad(cgraph->nodes[i]);
     }
 
     // print
@@ -16936,8 +17762,8 @@ void ggml_graph_export(const struct ggml_cgraph * cgraph, const char * fname) {
             ggml_graph_export_leaf(cgraph->leafs[i], fout);
 
             GGML_ASSERT(cgraph->leafs[i]->op   == GGML_OP_NONE);
-            GGML_ASSERT(cgraph->leafs[i]->src0 == NULL);
-            GGML_ASSERT(cgraph->leafs[i]->src1 == NULL);
+            GGML_ASSERT(cgraph->leafs[i]->src[0] == NULL);
+            GGML_ASSERT(cgraph->leafs[i]->src[1] == NULL);
         }
 
         // header
@@ -16948,17 +17774,9 @@ void ggml_graph_export(const struct ggml_cgraph * cgraph, const char * fname) {
         for (int i = 0; i < cgraph->n_nodes; ++i) {
             ggml_graph_export_node(cgraph->nodes[i], "DST", fout);
 
-            if (cgraph->nodes[i]->src0) {
-                ggml_graph_export_node(cgraph->nodes[i]->src0, "SRC0", fout);
-            }
-
-            if (cgraph->nodes[i]->src1) {
-                ggml_graph_export_node(cgraph->nodes[i]->src1, "SRC1", fout);
-            }
-
-            for (int j = 0; j < GGML_MAX_OPT; ++j) {
-                if (cgraph->nodes[i]->opt[j]) {
-                    ggml_graph_export_node(cgraph->nodes[i]->opt[j], "OPT", fout);
+            for (int j = 0; j < GGML_MAX_SRC; ++j) {
+                if (cgraph->nodes[i]->src[j]) {
+                    ggml_graph_export_node(cgraph->nodes[i]->src[j], "SRC", fout);
                 }
             }
 
@@ -17012,7 +17830,8 @@ void ggml_graph_export(const struct ggml_cgraph * cgraph, const char * fname) {
                     fwrite(&nb, sizeof(uint64_t), 1, fout);
                 }
 
-                fwrite(tensor->name, sizeof(char), GGML_MAX_NAME, fout);
+                fwrite(tensor->name,      sizeof(char), GGML_MAX_NAME,      fout);
+                fwrite(tensor->op_params, sizeof(char), GGML_MAX_OP_PARAMS, fout);
 
                 // dump the data
                 // TODO: pad this to 32 byte boundary
@@ -17045,20 +17864,18 @@ void ggml_graph_export(const struct ggml_cgraph * cgraph, const char * fname) {
                     fwrite(&nb, sizeof(uint64_t), 1, fout);
                 }
 
-                fwrite(tensor->name, sizeof(char), GGML_MAX_NAME, fout);
+                fwrite(tensor->name,      sizeof(char), GGML_MAX_NAME,      fout);
+                fwrite(tensor->op_params, sizeof(char), GGML_MAX_OP_PARAMS, fout);
 
                 // output the op arguments
                 {
-                    struct ggml_tensor * args[2 + GGML_MAX_OPT] = { NULL };
+                    struct ggml_tensor * args[GGML_MAX_SRC] = { NULL };
 
-                    args[0] = tensor->src0;
-                    args[1] = tensor->src1;
-
-                    for (int j = 0; j < GGML_MAX_OPT; ++j) {
-                        args[2 + j] = tensor->opt[j];
+                    for (int j = 0; j < GGML_MAX_SRC; ++j) {
+                        args[j] = tensor->src[j];
                     }
 
-                    for (int j = 0; j < 2 + GGML_MAX_OPT; ++j) {
+                    for (int j = 0; j < GGML_MAX_SRC; ++j) {
                         if (args[j]) {
                             int32_t idx = -1;
 
@@ -17229,7 +18046,8 @@ struct ggml_cgraph ggml_graph_import(const char * fname, struct ggml_context **
 
                 tensor->op = (enum ggml_op) op;
 
-                memcpy(tensor->name, ptr, GGML_MAX_NAME); ptr += GGML_MAX_NAME;
+                memcpy(tensor->name,      ptr, GGML_MAX_NAME);      ptr += GGML_MAX_NAME;
+                memcpy(tensor->op_params, ptr, GGML_MAX_OP_PARAMS); ptr += GGML_MAX_OP_PARAMS;
 
                 tensor->data = (void *) ptr;
 
@@ -17274,14 +18092,15 @@ struct ggml_cgraph ggml_graph_import(const char * fname, struct ggml_context **
                     nb[j] = nb_cur;
                 }
 
-                const char * ptr_name = ptr; ptr += GGML_MAX_NAME;
+                const char * ptr_name      = ptr; ptr += GGML_MAX_NAME;
+                const char * ptr_op_params = ptr; ptr += GGML_MAX_OP_PARAMS;
 
-                const int32_t * ptr_arg_idx = (const int32_t *) ptr; ptr += (2 + GGML_MAX_OPT)*sizeof(int32_t);
+                const int32_t * ptr_arg_idx = (const int32_t *) ptr; ptr += GGML_MAX_SRC*sizeof(int32_t);
 
-                struct ggml_tensor * args[2 + GGML_MAX_OPT] = { NULL };
+                struct ggml_tensor * args[GGML_MAX_SRC] = { NULL };
 
                 // parse args
-                for (int j = 0; j < 2 + GGML_MAX_OPT; ++j) {
+                for (int j = 0; j < GGML_MAX_SRC; ++j) {
                     const int32_t arg_idx = ptr_arg_idx[j];
 
                     if (arg_idx == -1) {
@@ -17311,8 +18130,8 @@ struct ggml_cgraph ggml_graph_import(const char * fname, struct ggml_context **
                         {
                             tensor = ggml_view_4d(*ctx_eval, args[0], ne[0], ne[1], ne[2], ne[3], 0, 0, 0, 0);
 
-                            uint64_t offs;
-                            memcpy(&offs, args[2]->data, sizeof(offs));
+                            size_t offs;
+                            memcpy(&offs, ptr_op_params, sizeof(offs));
 
                             tensor->data = ((char *) tensor->data) + offs;
                         } break;
@@ -17332,17 +18151,15 @@ struct ggml_cgraph ggml_graph_import(const char * fname, struct ggml_context **
                         } break;
                 }
 
-                memcpy(tensor->name, ptr_name, GGML_MAX_NAME);
+                memcpy(tensor->name,      ptr_name,      GGML_MAX_NAME);
+                memcpy(tensor->op_params, ptr_op_params, GGML_MAX_OP_PARAMS);
 
                 for (int j = 0; j < GGML_MAX_DIMS; ++j) {
                     tensor->nb[j] = nb[j];
                 }
 
-                tensor->src0 = args[0];
-                tensor->src1 = args[1];
-
-                for (int j = 0; j < GGML_MAX_OPT; ++j) {
-                    tensor->opt[j] = args[2 + j];
+                for (int j = 0; j < GGML_MAX_SRC; ++j) {
+                    tensor->src[j] = args[j];
                 }
 
                 result.nodes[i] = tensor;
@@ -17360,9 +18177,6 @@ void ggml_graph_print(const struct ggml_cgraph * cgraph) {
 
     GGML_PRINT("=== GRAPH ===\n");
 
-    GGML_PRINT_DEBUG("n_threads       = %d\n",        cgraph->n_threads);
-    GGML_PRINT_DEBUG("total work size = %zu bytes\n", cgraph->work_size);
-
     GGML_PRINT("n_nodes = %d\n", cgraph->n_nodes);
     for (int i = 0; i < cgraph->n_nodes; i++) {
         struct ggml_tensor * node = cgraph->nodes[i];
@@ -17372,7 +18186,7 @@ void ggml_graph_print(const struct ggml_cgraph * cgraph) {
         GGML_PRINT(" - %3d: [ %5" PRId64 ", %5" PRId64 ", %5" PRId64 "] %16s %s (%3d) cpu = %7.3f / %7.3f ms, wall = %7.3f / %7.3f ms\n",
                 i,
                 node->ne[0], node->ne[1], node->ne[2],
-                GGML_OP_NAME[node->op], node->is_param ? "x" : node->grad ? "g" : " ", node->perf_runs,
+                ggml_op_name(node->op), node->is_param ? "x" : node->grad ? "g" : " ", node->perf_runs,
                 (double) node->perf_cycles  / (double) ggml_cycles_per_ms(),
                 (double) node->perf_cycles  / (double) ggml_cycles_per_ms() / (double) node->perf_runs,
                 (double) node->perf_time_us / 1000.0,
@@ -17386,7 +18200,7 @@ void ggml_graph_print(const struct ggml_cgraph * cgraph) {
         GGML_PRINT(" - %3d: [ %5" PRId64 ", %5" PRId64 "] %8s\n",
                 i,
                 node->ne[0], node->ne[1],
-                GGML_OP_NAME[node->op]);
+                ggml_op_name(node->op));
     }
 
     for (int i = 0; i < GGML_OP_COUNT; i++) {
@@ -17394,7 +18208,7 @@ void ggml_graph_print(const struct ggml_cgraph * cgraph) {
             continue;
         }
 
-        GGML_PRINT("perf_total_per_op_us[%16s] = %7.3f ms\n", GGML_OP_NAME[i], (double) perf_total_per_op_us[i] / 1000.0);
+        GGML_PRINT("perf_total_per_op_us[%16s] = %7.3f ms\n", ggml_op_name(i), (double) perf_total_per_op_us[i] / 1000.0);
     }
 
     GGML_PRINT("========================================\n");
@@ -17488,13 +18302,13 @@ void ggml_graph_dump_dot(const struct ggml_cgraph * gb, const struct ggml_cgraph
         }
 
         if (node->n_dims == 2) {
-            fprintf(fp, "%d [%" PRId64 ", %" PRId64 "] | <x>%s", i, node->ne[0], node->ne[1], GGML_OP_SYMBOL[node->op]);
+            fprintf(fp, "%d [%" PRId64 ", %" PRId64 "] | <x>%s", i, node->ne[0], node->ne[1], ggml_op_symbol(node->op));
         } else {
-            fprintf(fp, "%d [%" PRId64 ", %" PRId64 ", %" PRId64 "] | <x>%s", i, node->ne[0], node->ne[1], node->ne[2], GGML_OP_SYMBOL[node->op]);
+            fprintf(fp, "%d [%" PRId64 ", %" PRId64 ", %" PRId64 "] | <x>%s", i, node->ne[0], node->ne[1], node->ne[2], ggml_op_symbol(node->op));
         }
 
         if (node->grad) {
-            fprintf(fp, " | <g>%s\"; ]\n", GGML_OP_SYMBOL[node->grad->op]);
+            fprintf(fp, " | <g>%s\"; ]\n", ggml_op_symbol(node->grad->op));
         } else {
             fprintf(fp, "\"; ]\n");
         }
@@ -17541,19 +18355,11 @@ void ggml_graph_dump_dot(const struct ggml_cgraph * gb, const struct ggml_cgraph
     for (int i = 0; i < gb->n_nodes; i++) {
         struct ggml_tensor * node = gb->nodes[i];
 
-        if (node->src0) {
-            ggml_graph_dump_dot_node_edge(fp, gb, node, node->src0, "x");
-        }
-
-        if (node->src1) {
-            ggml_graph_dump_dot_node_edge(fp, gb, node, node->src1, "y");
-        }
-
-        for (int j = 0; j < GGML_MAX_OPT; j++) {
-            if (node->opt[j]) {
+        for (int j = 0; j < GGML_MAX_SRC; j++) {
+            if (node->src[j]) {
                 char label[16];
-                snprintf(label, sizeof(label), "opt %d", j);
-                ggml_graph_dump_dot_node_edge(fp, gb, node, node->opt[j], label);
+                snprintf(label, sizeof(label), "src %d", j);
+                ggml_graph_dump_dot_node_edge(fp, gb, node, node->src[j], label);
             }
         }
     }
@@ -17561,19 +18367,11 @@ void ggml_graph_dump_dot(const struct ggml_cgraph * gb, const struct ggml_cgraph
     for (int i = 0; i < gb->n_leafs; i++) {
         struct ggml_tensor * node = gb->leafs[i];
 
-        if (node->src0) {
-            ggml_graph_dump_dot_leaf_edge(fp, node, node->src0, "x");
-        }
-
-        if (node->src1) {
-            ggml_graph_dump_dot_leaf_edge(fp, node, node->src1, "y");
-        }
-
-        for (int j = 0; j < GGML_MAX_OPT; j++) {
-            if (node->opt[j]) {
+        for (int j = 0; j < GGML_MAX_SRC; j++) {
+            if (node->src[j]) {
                 char label[16];
-                snprintf(label, sizeof(label), "opt %d", j);
-                ggml_graph_dump_dot_leaf_edge(fp, node, node->opt[j], label);
+                snprintf(label, sizeof(label), "src %d", j);
+                ggml_graph_dump_dot_leaf_edge(fp, node, node->src[j], label);
             }
         }
     }
@@ -17635,9 +18433,6 @@ static enum ggml_opt_result ggml_opt_adam(
         struct ggml_cgraph * gb) {
     GGML_ASSERT(ggml_is_scalar(f));
 
-    gf->n_threads = params.n_threads;
-    gb->n_threads = params.n_threads;
-
     // these will store the parameters we want to optimize
     struct ggml_tensor * ps[GGML_MAX_PARAMS];
 
@@ -17684,7 +18479,8 @@ static enum ggml_opt_result ggml_opt_adam(
     // compute the function value
     ggml_graph_reset  (gf);
     ggml_set_f32      (f->grad, 1.0f);
-    ggml_graph_compute(ctx, gb);
+
+    ggml_graph_compute_with_ctx(ctx, gb, params.n_threads);
 
     opt->adam.fx_prev = ggml_get_f32_1d(f, 0);
     opt->adam.fx_best = opt->adam.fx_prev;
@@ -17764,7 +18560,8 @@ static enum ggml_opt_result ggml_opt_adam(
 
         ggml_graph_reset  (gf);
         ggml_set_f32      (f->grad, 1.0f);
-        ggml_graph_compute(ctx, gb);
+
+        ggml_graph_compute_with_ctx(ctx, gb, params.n_threads);
 
         const float fx = ggml_get_f32_1d(f, 0);
 
@@ -17886,7 +18683,8 @@ static enum ggml_opt_result linesearch_backtracking(
 
             ggml_graph_reset  (gf);
             ggml_set_f32      (f->grad, 1.0f);
-            ggml_graph_compute(ctx, gb);
+
+            ggml_graph_compute_with_ctx(ctx, gb, params->n_threads);
 
             ggml_opt_get_grad(np, ps, g);
 
@@ -17954,9 +18752,6 @@ static enum ggml_opt_result ggml_opt_lbfgs(
         }
     }
 
-    gf->n_threads = params.n_threads;
-    gb->n_threads = params.n_threads;
-
     const int m = params.lbfgs.m;
 
     // these will store the parameters we want to optimize
@@ -18008,7 +18803,8 @@ static enum ggml_opt_result ggml_opt_lbfgs(
 
         ggml_graph_reset  (gf);
         ggml_set_f32      (f->grad, 1.0f);
-        ggml_graph_compute(ctx, gb);
+
+        ggml_graph_compute_with_ctx(ctx, gb, params.n_threads);
 
         ggml_opt_get_grad(np, ps, g);
 
@@ -18335,271 +19131,1371 @@ enum ggml_opt_result ggml_opt(
         ggml_free(ctx);
     }
 
-    return result;
+    return result;
+}
+
+enum ggml_opt_result ggml_opt_resume(
+        struct ggml_context * ctx,
+        struct ggml_opt_context * opt,
+        struct ggml_tensor * f) {
+
+    // build forward + backward compute graphs
+    struct ggml_tensor * gfbuf = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, sizeof(struct ggml_cgraph) / ggml_type_size(GGML_TYPE_I32)+ (sizeof(struct ggml_cgraph) % ggml_type_size(GGML_TYPE_I32) ? 1 : 0));
+    struct ggml_tensor * gbbuf = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, sizeof(struct ggml_cgraph) / ggml_type_size(GGML_TYPE_I32)+ (sizeof(struct ggml_cgraph) % ggml_type_size(GGML_TYPE_I32) ? 1 : 0));
+
+    struct ggml_cgraph * gf = (struct ggml_cgraph *) gfbuf->data;
+    struct ggml_cgraph * gb = (struct ggml_cgraph *) gbbuf->data;
+
+    *gf = ggml_build_forward (f);
+    *gb = ggml_build_backward(ctx, gf, true);
+
+    return ggml_opt_resume_g(ctx, opt, f, gf, gb);
+}
+
+enum ggml_opt_result ggml_opt_resume_g(
+        struct ggml_context * ctx,
+        struct ggml_opt_context * opt,
+        struct ggml_tensor * f,
+        struct ggml_cgraph * gf,
+        struct ggml_cgraph * gb) {
+
+    // build forward + backward compute graphs
+    enum ggml_opt_result result = GGML_OPT_OK;
+
+    switch (opt->params.type) {
+        case GGML_OPT_ADAM:
+            {
+                result = ggml_opt_adam(ctx, opt, opt->params, f, gf, gb);
+            } break;
+        case GGML_OPT_LBFGS:
+            {
+                result = ggml_opt_lbfgs(ctx, opt, opt->params, f, gf, gb);
+            } break;
+    }
+
+    if (opt->params.print_forward_graph) {
+        ggml_graph_print   (gf);
+        ggml_graph_dump_dot(gf, NULL, "opt-forward.dot");
+    }
+
+    if (opt->params.print_backward_graph) {
+        ggml_graph_print   (gb);
+        ggml_graph_dump_dot(gb, gf, "opt-backward.dot");
+    }
+
+    return result;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+size_t ggml_quantize_q4_0(const float * src, void * dst, int n, int k, int64_t * hist) {
+    assert(k % QK4_0 == 0);
+    const int nb = k / QK4_0;
+
+    for (int b = 0; b < n; b += k) {
+        block_q4_0 * restrict y = (block_q4_0 *) dst + b/QK4_0;
+
+        quantize_row_q4_0_reference(src + b, y, k);
+
+        for (int i = 0; i < nb; i++) {
+            for (int j = 0; j < QK4_0; j += 2) {
+                const uint8_t vi0 = y[i].qs[j/2] & 0x0F;
+                const uint8_t vi1 = y[i].qs[j/2] >> 4;
+
+                hist[vi0]++;
+                hist[vi1]++;
+            }
+        }
+    }
+
+    return (n/QK4_0*sizeof(block_q4_0));
+}
+
+size_t ggml_quantize_q4_1(const float * src, void * dst, int n, int k, int64_t * hist) {
+    assert(k % QK4_1 == 0);
+    const int nb = k / QK4_1;
+
+    for (int b = 0; b < n; b += k) {
+        block_q4_1 * restrict y = (block_q4_1 *) dst + b/QK4_1;
+
+        quantize_row_q4_1_reference(src + b, y, k);
+
+        for (int i = 0; i < nb; i++) {
+            for (int j = 0; j < QK4_1; j += 2) {
+                const uint8_t vi0 = y[i].qs[j/2] & 0x0F;
+                const uint8_t vi1 = y[i].qs[j/2] >> 4;
+
+                hist[vi0]++;
+                hist[vi1]++;
+            }
+        }
+    }
+
+    return (n/QK4_1*sizeof(block_q4_1));
+}
+
+size_t ggml_quantize_q5_0(const float * src, void * dst, int n, int k, int64_t * hist) {
+    assert(k % QK5_0 == 0);
+    const int nb = k / QK5_0;
+
+    for (int b = 0; b < n; b += k) {
+        block_q5_0 * restrict y = (block_q5_0 *)dst + b/QK5_0;
+
+        quantize_row_q5_0_reference(src + b, y, k);
+
+        for (int i = 0; i < nb; i++) {
+            uint32_t qh;
+            memcpy(&qh, &y[i].qh, sizeof(qh));
+
+            for (int j = 0; j < QK5_0; j += 2) {
+                const uint8_t vh0 = ((qh & (1u << (j + 0 ))) >> (j + 0 )) << 4;
+                const uint8_t vh1 = ((qh & (1u << (j + 16))) >> (j + 12));
+
+                // cast to 16 bins
+                const uint8_t vi0 = ((y[i].qs[j/2] & 0x0F) | vh0) / 2;
+                const uint8_t vi1 = ((y[i].qs[j/2] >>   4) | vh1) / 2;
+
+                hist[vi0]++;
+                hist[vi1]++;
+            }
+        }
+    }
+
+    return (n/QK5_0*sizeof(block_q5_0));
+}
+
+size_t ggml_quantize_q5_1(const float * src, void * dst, int n, int k, int64_t * hist) {
+    assert(k % QK5_1 == 0);
+    const int nb = k / QK5_1;
+
+    for (int b = 0; b < n; b += k) {
+        block_q5_1 * restrict y = (block_q5_1 *)dst + b/QK5_1;
+
+        quantize_row_q5_1_reference(src + b, y, k);
+
+        for (int i = 0; i < nb; i++) {
+            uint32_t qh;
+            memcpy(&qh, &y[i].qh, sizeof(qh));
+
+            for (int j = 0; j < QK5_1; j += 2) {
+                const uint8_t vh0 = ((qh & (1u << (j + 0 ))) >> (j + 0 )) << 4;
+                const uint8_t vh1 = ((qh & (1u << (j + 16))) >> (j + 12));
+
+                // cast to 16 bins
+                const uint8_t vi0 = ((y[i].qs[j/2] & 0x0F) | vh0) / 2;
+                const uint8_t vi1 = ((y[i].qs[j/2] >>   4) | vh1) / 2;
+
+                hist[vi0]++;
+                hist[vi1]++;
+            }
+        }
+    }
+
+    return (n/QK5_1*sizeof(block_q5_1));
+}
+
+size_t ggml_quantize_q8_0(const float * src, void * dst, int n, int k, int64_t * hist) {
+    assert(k % QK8_0 == 0);
+    const int nb = k / QK8_0;
+
+    for (int b = 0; b < n; b += k) {
+        block_q8_0 * restrict y = (block_q8_0 *)dst + b/QK8_0;
+
+        quantize_row_q8_0_reference(src + b, y, k);
+
+        for (int i = 0; i < nb; i++) {
+            for (int j = 0; j < QK8_0; ++j) {
+                const int8_t vi = y[i].qs[j];
+
+                hist[vi/16 + 8]++;
+            }
+        }
+    }
+
+    return (n/QK8_0*sizeof(block_q8_0));
+}
+
+size_t ggml_quantize_chunk(enum ggml_type type, const float * src, void * dst, int start, int n, int64_t * hist) {
+    size_t result = 0;
+    switch (type) {
+        case GGML_TYPE_Q4_0:
+            {
+                GGML_ASSERT(start % QK4_0 == 0);
+                block_q4_0 * block = (block_q4_0*)dst + start / QK4_0;
+                result = ggml_quantize_q4_0(src + start, block, n, n, hist);
+            } break;
+        case GGML_TYPE_Q4_1:
+            {
+                GGML_ASSERT(start % QK4_1 == 0);
+                block_q4_1 * block = (block_q4_1*)dst + start / QK4_1;
+                result = ggml_quantize_q4_1(src + start, block, n, n, hist);
+            } break;
+        case GGML_TYPE_Q5_0:
+            {
+                GGML_ASSERT(start % QK5_0 == 0);
+                block_q5_0 * block = (block_q5_0*)dst + start / QK5_0;
+                result = ggml_quantize_q5_0(src + start, block, n, n, hist);
+            } break;
+        case GGML_TYPE_Q5_1:
+            {
+                GGML_ASSERT(start % QK5_1 == 0);
+                block_q5_1 * block = (block_q5_1*)dst + start / QK5_1;
+                result = ggml_quantize_q5_1(src + start, block, n, n, hist);
+            } break;
+        case GGML_TYPE_Q8_0:
+            {
+                GGML_ASSERT(start % QK8_0 == 0);
+                block_q8_0 * block = (block_q8_0*)dst + start / QK8_0;
+                result = ggml_quantize_q8_0(src + start, block, n, n, hist);
+            } break;
+#ifdef GGML_USE_K_QUANTS
+        case GGML_TYPE_Q2_K:
+            {
+                GGML_ASSERT(start % QK_K == 0);
+                block_q2_K * block = (block_q2_K*)dst + start / QK_K;
+                result = ggml_quantize_q2_K(src + start, block, n, n, hist);
+            } break;
+        case GGML_TYPE_Q3_K:
+            {
+                GGML_ASSERT(start % QK_K == 0);
+                block_q3_K * block = (block_q3_K*)dst + start / QK_K;
+                result = ggml_quantize_q3_K(src + start, block, n, n, hist);
+            } break;
+        case GGML_TYPE_Q4_K:
+            {
+                GGML_ASSERT(start % QK_K == 0);
+                block_q4_K * block = (block_q4_K*)dst + start / QK_K;
+                result = ggml_quantize_q4_K(src + start, block, n, n, hist);
+            } break;
+        case GGML_TYPE_Q5_K:
+            {
+                GGML_ASSERT(start % QK_K == 0);
+                block_q5_K * block = (block_q5_K*)dst + start / QK_K;
+                result = ggml_quantize_q5_K(src + start, block, n, n, hist);
+            } break;
+        case GGML_TYPE_Q6_K:
+            {
+                GGML_ASSERT(start % QK_K == 0);
+                block_q6_K * block = (block_q6_K*)dst + start / QK_K;
+                result = ggml_quantize_q6_K(src + start, block, n, n, hist);
+            } break;
+#endif
+        case GGML_TYPE_F16:
+            {
+                int elemsize = sizeof(ggml_fp16_t);
+                ggml_fp32_to_fp16_row(src + start, (ggml_fp16_t *)dst + start, n);
+                result = n * elemsize;
+            } break;
+        case GGML_TYPE_F32:
+            {
+                int elemsize = sizeof(float);
+                result = n * elemsize;
+                memcpy((uint8_t *)dst + start * elemsize, src + start, result);
+            } break;
+        default:
+            assert(false);
+    }
+    return result;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+struct gguf_str {
+    uint64_t n;  // GGUFv2
+    char * data;
+};
+
+static const size_t GGUF_TYPE_SIZE[GGUF_TYPE_COUNT] = {
+    [GGUF_TYPE_UINT8]   = sizeof(uint8_t),
+    [GGUF_TYPE_INT8]    = sizeof(int8_t),
+    [GGUF_TYPE_UINT16]  = sizeof(uint16_t),
+    [GGUF_TYPE_INT16]   = sizeof(int16_t),
+    [GGUF_TYPE_UINT32]  = sizeof(uint32_t),
+    [GGUF_TYPE_INT32]   = sizeof(int32_t),
+    [GGUF_TYPE_FLOAT32] = sizeof(float),
+    [GGUF_TYPE_BOOL]    = sizeof(bool),
+    [GGUF_TYPE_STRING]  = sizeof(struct gguf_str),
+    [GGUF_TYPE_UINT64]  = sizeof(uint64_t),
+    [GGUF_TYPE_INT64]   = sizeof(int64_t),
+    [GGUF_TYPE_FLOAT64] = sizeof(double),
+    [GGUF_TYPE_ARRAY]   = 0, // undefined
+};
+static_assert(GGUF_TYPE_COUNT == 13, "GGUF_TYPE_COUNT != 13");
+
+static const char * GGUF_TYPE_NAME[GGUF_TYPE_COUNT] = {
+    [GGUF_TYPE_UINT8]   = "u8",
+    [GGUF_TYPE_INT8]    = "i8",
+    [GGUF_TYPE_UINT16]  = "u16",
+    [GGUF_TYPE_INT16]   = "i16",
+    [GGUF_TYPE_UINT32]  = "u32",
+    [GGUF_TYPE_INT32]   = "i32",
+    [GGUF_TYPE_FLOAT32] = "f32",
+    [GGUF_TYPE_BOOL]    = "bool",
+    [GGUF_TYPE_STRING]  = "str",
+    [GGUF_TYPE_ARRAY]   = "arr",
+    [GGUF_TYPE_UINT64]  = "u64",
+    [GGUF_TYPE_INT64]   = "i64",
+    [GGUF_TYPE_FLOAT64] = "f64",
+};
+static_assert(GGUF_TYPE_COUNT == 13, "GGUF_TYPE_COUNT != 13");
+
+union gguf_value {
+    uint8_t  uint8;
+    int8_t   int8;
+    uint16_t uint16;
+    int16_t  int16;
+    uint32_t uint32;
+    int32_t  int32;
+    float    float32;
+    uint64_t uint64;
+    int64_t  int64;
+    double   float64;
+    bool     bool_;
+
+    struct gguf_str str;
+
+    struct {
+        enum gguf_type type;
+
+        uint64_t n;  // GGUFv2
+        void * data;
+    } arr;
+};
+
+struct gguf_kv {
+    struct gguf_str key;
+
+    enum  gguf_type  type;
+    union gguf_value value;
+};
+
+struct gguf_header {
+    uint32_t magic;
+    uint32_t version;
+    uint64_t n_tensors; // GGUFv2
+    uint64_t n_kv;      // GGUFv2
+};
+
+struct gguf_tensor_info {
+    struct gguf_str name;
+
+    uint32_t n_dims;
+    uint64_t ne[GGML_MAX_DIMS];
+
+    enum ggml_type type;
+
+    uint64_t offset; // offset from start of `data`, must be a multiple of `ALIGNMENT`
+
+    // for writing API
+    const void * data;
+    size_t size;
+};
+
+struct gguf_context {
+    struct gguf_header header;
+
+    struct gguf_kv          * kv;
+    struct gguf_tensor_info * infos;
+
+    size_t alignment;
+    size_t offset;    // offset of `data` from beginning of file
+    size_t size;      // size of `data` in bytes
+
+    //uint8_t * padding;
+    void * data;
+};
+
+static bool gguf_fread_el(FILE * file, void * dst, size_t size, size_t * offset) {
+    const size_t n = fread(dst, 1, size, file);
+    *offset += n;
+    return n == size;
+}
+
+// NOTE: temporary handling of GGUFv1 >> remove after Oct 2023
+static bool gguf_fread_str_cur(FILE * file, struct gguf_str * p, size_t * offset) {
+    p->n    = 0;
+    p->data = NULL;
+
+    bool ok = true;
+
+    ok = ok && gguf_fread_el(file, &p->n,    sizeof(p->n), offset); p->data = calloc(p->n + 1, 1);
+    ok = ok && gguf_fread_el(file,  p->data, p->n,         offset);
+
+    return ok;
+}
+
+static bool gguf_fread_str_v1(FILE * file, struct gguf_str * p, size_t * offset) {
+    p->n    = 0;
+    p->data = NULL;
+
+    bool ok = true;
+
+    uint32_t n = 0;
+    ok = ok && gguf_fread_el(file, &n,       sizeof(n), offset); p->data = calloc(n + 1, 1); p->n = n;
+    ok = ok && gguf_fread_el(file,  p->data, p->n,      offset);
+
+    return ok;
+}
+
+struct gguf_context * gguf_init_empty(void) {
+    struct gguf_context * ctx = GGML_ALIGNED_MALLOC(sizeof(struct gguf_context));
+
+    ctx->header.magic     = GGUF_MAGIC;
+    ctx->header.version   = GGUF_VERSION;
+    ctx->header.n_tensors = 0;
+    ctx->header.n_kv      = 0;
+
+    ctx->kv    = NULL;
+    ctx->infos = NULL;
+
+    ctx->alignment = GGUF_DEFAULT_ALIGNMENT;
+    ctx->offset    = 0;
+    ctx->size      = 0;
+
+    ctx->data = NULL;
+
+    return ctx;
+}
+
+struct gguf_context * gguf_init_from_file(const char * fname, struct gguf_init_params params) {
+    FILE * file = fopen(fname, "rb");
+    if (!file) {
+        return NULL;
+    }
+
+    // offset from start of file
+    size_t offset = 0;
+
+    uint32_t magic = 0;
+
+    // check the magic before making allocations
+    {
+        gguf_fread_el(file, &magic, sizeof(magic), &offset);
+
+        if (magic != GGUF_MAGIC) {
+            fprintf(stderr, "%s: invalid magic number %08x\n", __func__, magic);
+            fclose(file);
+            return NULL;
+        }
+    }
+
+    bool ok = true;
+
+    struct gguf_context * ctx = GGML_ALIGNED_MALLOC(sizeof(struct gguf_context));
+
+    // read the header
+    {
+        ctx->header.magic = magic;
+
+        ctx->kv    = NULL;
+        ctx->infos = NULL;
+        ctx->data  = NULL;
+
+        ok = ok && gguf_fread_el(file, &ctx->header.version,   sizeof(ctx->header.version),   &offset);
+
+        if (ctx->header.version == 1) {
+            // NOTE: temporary handling of GGUFv1 >> remove after Oct 2023
+            uint32_t n_tensors = 0;
+            uint32_t n_kv      = 0;
+
+            ok = ok && gguf_fread_el(file, &n_tensors, sizeof(n_tensors), &offset);
+            ok = ok && gguf_fread_el(file, &n_kv,      sizeof(n_kv),      &offset);
+
+            ctx->header.n_tensors = n_tensors;
+            ctx->header.n_kv      = n_kv;
+        } else {
+            ok = ok && gguf_fread_el(file, &ctx->header.n_tensors, sizeof(ctx->header.n_tensors), &offset);
+            ok = ok && gguf_fread_el(file, &ctx->header.n_kv,      sizeof(ctx->header.n_kv),      &offset);
+        }
+
+        if (!ok) {
+            fprintf(stderr, "%s: failed to read header\n", __func__);
+            fclose(file);
+            gguf_free(ctx);
+            return NULL;
+        }
+    }
+
+    // NOTE: temporary handling of GGUFv1 >> remove after Oct 2023
+    bool (* gguf_fread_str)(FILE *, struct gguf_str *, size_t *) = gguf_fread_str_cur;
+    if (ctx->header.version == 1) {
+        gguf_fread_str = gguf_fread_str_v1;
+    }
+
+    // read the kv pairs
+    {
+        ctx->kv = GGML_ALIGNED_MALLOC(ctx->header.n_kv * sizeof(struct gguf_kv));
+
+        for (uint32_t i = 0; i < ctx->header.n_kv; ++i) {
+            struct gguf_kv * kv = &ctx->kv[i];
+
+            //fprintf(stderr, "%s: reading kv %d\n", __func__, i);
+
+            ok = ok && gguf_fread_str(file, &kv->key,                    &offset);
+            ok = ok && gguf_fread_el (file, &kv->type, sizeof(kv->type), &offset);
+
+            //fprintf(stderr, "%s: reading kv with key %s\n", __func__, kv->key.data);
+
+            switch (kv->type) {
+                case GGUF_TYPE_UINT8:   ok = ok && gguf_fread_el (file, &kv->value.uint8,   sizeof(kv->value.uint8),   &offset); break;
+                case GGUF_TYPE_INT8:    ok = ok && gguf_fread_el (file, &kv->value.int8,    sizeof(kv->value.int8),    &offset); break;
+                case GGUF_TYPE_UINT16:  ok = ok && gguf_fread_el (file, &kv->value.uint16,  sizeof(kv->value.uint16),  &offset); break;
+                case GGUF_TYPE_INT16:   ok = ok && gguf_fread_el (file, &kv->value.int16,   sizeof(kv->value.int16),   &offset); break;
+                case GGUF_TYPE_UINT32:  ok = ok && gguf_fread_el (file, &kv->value.uint32,  sizeof(kv->value.uint32),  &offset); break;
+                case GGUF_TYPE_INT32:   ok = ok && gguf_fread_el (file, &kv->value.int32,   sizeof(kv->value.int32),   &offset); break;
+                case GGUF_TYPE_FLOAT32: ok = ok && gguf_fread_el (file, &kv->value.float32, sizeof(kv->value.float32), &offset); break;
+                case GGUF_TYPE_UINT64:  ok = ok && gguf_fread_el (file, &kv->value.uint64,  sizeof(kv->value.uint64),  &offset); break;
+                case GGUF_TYPE_INT64:   ok = ok && gguf_fread_el (file, &kv->value.int64,   sizeof(kv->value.int64),   &offset); break;
+                case GGUF_TYPE_FLOAT64: ok = ok && gguf_fread_el (file, &kv->value.float64, sizeof(kv->value.float64), &offset); break;
+                case GGUF_TYPE_BOOL:    ok = ok && gguf_fread_el (file, &kv->value.bool_,   sizeof(kv->value.bool_),   &offset); break;
+                case GGUF_TYPE_STRING:  ok = ok && gguf_fread_str(file, &kv->value.str,                                &offset); break;
+                case GGUF_TYPE_ARRAY:
+                    {
+                        ok = ok && gguf_fread_el(file, &kv->value.arr.type, sizeof(kv->value.arr.type), &offset);
+
+                        if (ctx->header.version == 1) {
+                            // NOTE: temporary handling of GGUFv1 >> remove after Oct 2023
+                            uint32_t n = 0;
+                            ok = ok && gguf_fread_el(file, &n, sizeof(n), &offset);
+                            kv->value.arr.n = n;
+                        } else {
+                            ok = ok && gguf_fread_el(file, &kv->value.arr.n, sizeof(kv->value.arr.n), &offset);
+                        }
+
+                        switch (kv->value.arr.type) {
+                            case GGUF_TYPE_UINT8:
+                            case GGUF_TYPE_INT8:
+                            case GGUF_TYPE_UINT16:
+                            case GGUF_TYPE_INT16:
+                            case GGUF_TYPE_UINT32:
+                            case GGUF_TYPE_INT32:
+                            case GGUF_TYPE_FLOAT32:
+                            case GGUF_TYPE_UINT64:
+                            case GGUF_TYPE_INT64:
+                            case GGUF_TYPE_FLOAT64:
+                            case GGUF_TYPE_BOOL:
+                                {
+                                    kv->value.arr.data = malloc(kv->value.arr.n * GGUF_TYPE_SIZE[kv->value.arr.type]);
+                                    ok = ok && gguf_fread_el(file, kv->value.arr.data, kv->value.arr.n * GGUF_TYPE_SIZE[kv->value.arr.type], &offset);
+                                } break;
+                            case GGUF_TYPE_STRING:
+                                {
+                                    kv->value.arr.data = malloc(kv->value.arr.n * sizeof(struct gguf_str));
+                                    for (uint32_t j = 0; j < kv->value.arr.n; ++j) {
+                                        ok = ok && gguf_fread_str(file, &((struct gguf_str *) kv->value.arr.data)[j], &offset);
+                                    }
+                                } break;
+                            case GGUF_TYPE_ARRAY:
+                            case GGUF_TYPE_COUNT: GGML_ASSERT(false && "invalid type"); break;
+                        };
+                    } break;
+                case GGUF_TYPE_COUNT: GGML_ASSERT(false && "invalid type");
+            };
+
+            if (!ok) {
+                break;
+            }
+        }
+
+        if (!ok) {
+            fprintf(stderr, "%s: failed to read key-value pairs\n", __func__);
+            fclose(file);
+            gguf_free(ctx);
+            return NULL;
+        }
+    }
+
+    // read the tensor infos
+    {
+        ctx->infos = GGML_ALIGNED_MALLOC(ctx->header.n_tensors * sizeof(struct gguf_tensor_info));
+
+        for (uint32_t i = 0; i < ctx->header.n_tensors; ++i) {
+            struct gguf_tensor_info * info = &ctx->infos[i];
+
+            for (int j = 0; j < GGML_MAX_DIMS; ++j) {
+                info->ne[j] = 1;
+            }
+
+            ok = ok && gguf_fread_str(file, &info->name,                          &offset);
+            ok = ok && gguf_fread_el (file, &info->n_dims, sizeof(info->n_dims),  &offset);
+            for (uint32_t j = 0; j < info->n_dims; ++j) {
+                if (ctx->header.version == 1) {
+                    // NOTE: temporary handling of GGUFv1 >> remove after Oct 2023
+                    uint32_t t = 0;
+                    ok = ok && gguf_fread_el(file, &t, sizeof(t), &offset);
+                    info->ne[j] = t;
+                } else {
+                    ok = ok && gguf_fread_el(file, &info->ne[j], sizeof(info->ne[j]), &offset);
+                }
+            }
+            ok = ok && gguf_fread_el (file, &info->type,   sizeof(info->type),    &offset);
+            ok = ok && gguf_fread_el (file, &info->offset, sizeof(info->offset),  &offset);
+
+            if (!ok) {
+                fprintf(stderr, "%s: failed to read tensor info\n", __func__);
+                fclose(file);
+                gguf_free(ctx);
+                return NULL;
+            }
+        }
+    }
+
+    ctx->alignment = GGUF_DEFAULT_ALIGNMENT;
+
+    int alignment_idx = gguf_find_key(ctx, "general.alignment");
+    if (alignment_idx != -1) {
+        ctx->alignment = gguf_get_val_u32(ctx, alignment_idx);
+    }
+
+    // we require the data section to be aligned, so take into account any padding
+    {
+        const size_t offset_pad = offset % ctx->alignment;
+
+        if (offset_pad != 0) {
+            offset += ctx->alignment - offset_pad;
+            fseek(file, offset, SEEK_SET);
+        }
+    }
+
+    // store the current file offset - this is where the data section starts
+    ctx->offset = offset;
+
+    // compute the total size of the data section, taking into account the alignment
+    {
+        ctx->size = 0;
+        for (uint32_t i = 0; i < ctx->header.n_tensors; ++i) {
+            struct gguf_tensor_info * info = &ctx->infos[i];
+
+            const int64_t ne =
+                (int64_t) info->ne[0] *
+                (int64_t) info->ne[1] *
+                (int64_t) info->ne[2] *
+                (int64_t) info->ne[3];
+
+            if (ne % ggml_blck_size(info->type) != 0) {
+                fprintf(stderr, "%s: tensor '%s' number of elements (%" PRId64 ") is not a multiple of block size (%d)\n",
+                        __func__, info->name.data, ne, ggml_blck_size(info->type));
+                fclose(file);
+                gguf_free(ctx);
+                return NULL;
+            }
+
+            const size_t size_cur = (ne*ggml_type_size(info->type))/ggml_blck_size(info->type);
+
+            ctx->size += GGML_PAD(size_cur, ctx->alignment);
+        }
+    }
+
+    // load the tensor data only if requested
+    if (params.ctx != NULL) {
+        // if the provided gguf_context is no_alloc, then we create "empty" tensors and do not read the binary blob
+        // otherwise, we load the binary blob into the created ggml_context as well, and point the "data" members of
+        // the ggml_tensor structs to the appropriate locations in the binary blob
+
+        // compute the exact size needed for the new ggml_context
+        const size_t mem_size =
+            params.no_alloc ?
+            (ctx->header.n_tensors    )*ggml_tensor_overhead() :
+            (ctx->header.n_tensors + 1)*ggml_tensor_overhead() + ctx->size;
+
+        struct ggml_init_params pdata = {
+            .mem_size   = mem_size,
+            .mem_buffer = NULL,
+            .no_alloc   = params.no_alloc,
+        };
+
+        *params.ctx = ggml_init(pdata);
+
+        struct ggml_context * ctx_data = *params.ctx;
+
+        struct ggml_tensor * data = NULL;
+
+        if (params.no_alloc == false) {
+            data = ggml_new_tensor_1d(ctx_data, GGML_TYPE_I8, ctx->size);
+
+            ok = ok && data != NULL;
+
+            // read the binary blob with the tensor data
+            ok = ok && gguf_fread_el(file, data->data, ctx->size, &offset);
+
+            if (!ok) {
+                fprintf(stderr, "%s: failed to read tensor data\n", __func__);
+                fclose(file);
+                ggml_free(ctx_data);
+                gguf_free(ctx);
+                return NULL;
+            }
+
+            ctx->data = data->data;
+        }
+
+        ggml_set_no_alloc(ctx_data, true);
+
+        // create the tensors
+        for (uint32_t i = 0; i < ctx->header.n_tensors; ++i) {
+            const int64_t ne[GGML_MAX_DIMS] = {
+                ctx->infos[i].ne[0],
+                ctx->infos[i].ne[1],
+                ctx->infos[i].ne[2],
+                ctx->infos[i].ne[3],
+            };
+
+            struct ggml_tensor * cur = ggml_new_tensor(ctx_data, ctx->infos[i].type, ctx->infos[i].n_dims, ne);
+
+            ok = ok && cur != NULL;
+
+            ggml_set_name(cur, ctx->infos[i].name.data);
+
+            if (!ok) {
+                break;
+            }
+
+            // point the data member to the appropriate location in the binary blob using the tensor infos
+            if (params.no_alloc == false) {
+              //cur->data = (char *) data->data + ctx->infos[i].offset - ctx->offset; // offset from start of file
+                cur->data = (char *) data->data + ctx->infos[i].offset;               // offset from data
+            }
+        }
+
+        if (!ok) {
+            fprintf(stderr, "%s: failed to read the tensor data\n", __func__);
+            fclose(file);
+            ggml_free(ctx_data);
+            gguf_free(ctx);
+            return NULL;
+        }
+
+        ggml_set_no_alloc(ctx_data, params.no_alloc);
+    }
+
+    fclose(file);
+
+    return ctx;
+}
+
+void gguf_free(struct gguf_context * ctx) {
+    if (ctx == NULL) {
+        return;
+    }
+
+    if (ctx->kv) {
+        // free string memory - not great..
+        for (uint32_t i = 0; i < ctx->header.n_kv; ++i) {
+            struct gguf_kv * kv = &ctx->kv[i];
+
+            if (kv->key.data) {
+                free(kv->key.data);
+            }
+
+            if (kv->type == GGUF_TYPE_STRING) {
+                if (kv->value.str.data) {
+                    free(kv->value.str.data);
+                }
+            }
+
+            if (kv->type == GGUF_TYPE_ARRAY) {
+                if (kv->value.arr.data) {
+                    if (kv->value.arr.type == GGUF_TYPE_STRING) {
+                        for (uint32_t j = 0; j < kv->value.arr.n; ++j) {
+                            struct gguf_str * str = &((struct gguf_str *) kv->value.arr.data)[j];
+                            if (str->data) {
+                                free(str->data);
+                            }
+                        }
+                    }
+                    free(kv->value.arr.data);
+                }
+            }
+        }
+
+        GGML_ALIGNED_FREE(ctx->kv);
+    }
+
+    if (ctx->infos) {
+        for (uint32_t i = 0; i < ctx->header.n_tensors; ++i) {
+            struct gguf_tensor_info * info = &ctx->infos[i];
+
+            if (info->name.data) {
+                free(info->name.data);
+            }
+        }
+
+        GGML_ALIGNED_FREE(ctx->infos);
+    }
+
+    GGML_ALIGNED_FREE(ctx);
+}
+
+const char * gguf_type_name(enum gguf_type type) {
+    return GGUF_TYPE_NAME[type];
+}
+
+int gguf_get_version(struct gguf_context * ctx) {
+    return ctx->header.version;
+}
+
+size_t gguf_get_alignment(struct gguf_context * ctx) {
+    return ctx->alignment;
+}
+
+size_t gguf_get_data_offset(struct gguf_context * ctx) {
+    return ctx->offset;
+}
+
+void * gguf_get_data(struct gguf_context * ctx) {
+    return ctx->data;
+}
+
+int gguf_get_n_kv(struct gguf_context * ctx) {
+    return ctx->header.n_kv;
+}
+
+int gguf_find_key(struct gguf_context * ctx, const char * key) {
+    // return -1 if key not found
+    int keyfound = -1;
+
+    const int n_kv = gguf_get_n_kv(ctx);
+
+    for (int i = 0; i < n_kv; ++i) {
+        if (strcmp(key, gguf_get_key(ctx, i)) == 0) {
+            keyfound = i;
+            break;
+        }
+    }
+
+    return keyfound;
+}
+
+const char * gguf_get_key(struct gguf_context * ctx, int i) {
+    return ctx->kv[i].key.data;
+}
+
+enum gguf_type gguf_get_kv_type(struct gguf_context * ctx, int i) {
+    return ctx->kv[i].type;
+}
+
+enum gguf_type gguf_get_arr_type(struct gguf_context * ctx, int i) {
+    return ctx->kv[i].value.arr.type;
+}
+
+const void * gguf_get_arr_data(struct gguf_context * ctx, int i) {
+    return ctx->kv[i].value.arr.data;
+}
+
+const char * gguf_get_arr_str(struct gguf_context * ctx, int key_id, int i) {
+    struct gguf_kv * kv = &ctx->kv[key_id];
+    struct gguf_str * str = &((struct gguf_str *) kv->value.arr.data)[i];
+    return str->data;
+}
+
+int gguf_get_arr_n(struct gguf_context * ctx, int i) {
+    return ctx->kv[i].value.arr.n;
+}
+
+uint8_t gguf_get_val_u8(struct gguf_context * ctx, int i) {
+    return ctx->kv[i].value.uint8;
+}
+
+int8_t gguf_get_val_i8(struct gguf_context * ctx, int i) {
+    return ctx->kv[i].value.int8;
+}
+
+uint16_t gguf_get_val_u16(struct gguf_context * ctx, int i) {
+    return ctx->kv[i].value.uint16;
+}
+
+int16_t gguf_get_val_i16(struct gguf_context * ctx, int i) {
+    return ctx->kv[i].value.int16;
+}
+
+uint32_t gguf_get_val_u32(struct gguf_context * ctx, int i) {
+    return ctx->kv[i].value.uint32;
+}
+
+int32_t gguf_get_val_i32(struct gguf_context * ctx, int i) {
+    return ctx->kv[i].value.int32;
+}
+
+float gguf_get_val_f32(struct gguf_context * ctx, int i) {
+    return ctx->kv[i].value.float32;
+}
+
+uint64_t gguf_get_val_u64(struct gguf_context * ctx, int i) {
+    return ctx->kv[i].value.uint64;
+}
+
+int64_t gguf_get_val_i64(struct gguf_context * ctx, int i) {
+    return ctx->kv[i].value.int64;
+}
+
+double gguf_get_val_f64(struct gguf_context * ctx, int i) {
+    return ctx->kv[i].value.float64;
+}
+
+bool gguf_get_val_bool(struct gguf_context * ctx, int i) {
+    return ctx->kv[i].value.bool_;
+}
+
+const char * gguf_get_val_str (struct gguf_context * ctx, int i) {
+    return ctx->kv[i].value.str.data;
+}
+
+int gguf_get_n_tensors(struct gguf_context * ctx) {
+    return ctx->header.n_tensors;
+}
+
+int gguf_find_tensor(struct gguf_context * ctx, const char * name) {
+    // return -1 if tensor not found
+    int tensorfound = -1;
+
+    const int n_tensors = gguf_get_n_tensors(ctx);
+
+    for (int i = 0; i < n_tensors; ++i) {
+        if (strcmp(name, gguf_get_tensor_name(ctx, i)) == 0) {
+            tensorfound = i;
+            break;
+        }
+    }
+
+    return tensorfound;
+}
+
+size_t gguf_get_tensor_offset(struct gguf_context * ctx, int i) {
+    return ctx->infos[i].offset;
+}
+
+char * gguf_get_tensor_name(struct gguf_context * ctx, int i) {
+    return ctx->infos[i].name.data;
+}
+
+// returns the index
+static int gguf_get_or_add_key(struct gguf_context * ctx, const char * key) {
+    const int idx = gguf_find_key(ctx, key);
+    if (idx >= 0) {
+        return idx;
+    }
+
+    const int n_kv = gguf_get_n_kv(ctx);
+
+    ctx->kv = realloc(ctx->kv, (n_kv + 1) * sizeof(struct gguf_kv));
+    ctx->kv[n_kv].key.n    = strlen(key);
+    ctx->kv[n_kv].key.data = strdup(key);
+    ctx->header.n_kv++;
+
+    return n_kv;
+}
+
+void gguf_set_val_u8(struct gguf_context * ctx, const char * key, uint8_t val) {
+    const int idx = gguf_get_or_add_key(ctx, key);
+
+    ctx->kv[idx].type        = GGUF_TYPE_UINT8;
+    ctx->kv[idx].value.uint8 = val;
+}
+
+void gguf_set_val_i8(struct gguf_context * ctx, const char * key, int8_t val) {
+    const int idx = gguf_get_or_add_key(ctx, key);
+
+    ctx->kv[idx].type       = GGUF_TYPE_INT8;
+    ctx->kv[idx].value.int8 = val;
+}
+
+void gguf_set_val_u16(struct gguf_context * ctx, const char * key, uint16_t val) {
+    const int idx = gguf_get_or_add_key(ctx, key);
+
+    ctx->kv[idx].type         = GGUF_TYPE_UINT16;
+    ctx->kv[idx].value.uint16 = val;
+}
+
+void gguf_set_val_i16(struct gguf_context * ctx, const char * key, int16_t val) {
+    const int idx = gguf_get_or_add_key(ctx, key);
+
+    ctx->kv[idx].type        = GGUF_TYPE_INT16;
+    ctx->kv[idx].value.int16 = val;
+}
+
+void gguf_set_val_u32(struct gguf_context * ctx, const char * key, uint32_t val) {
+    const int idx = gguf_get_or_add_key(ctx, key);
+
+    ctx->kv[idx].type         = GGUF_TYPE_UINT32;
+    ctx->kv[idx].value.uint32 = val;
+}
+
+void gguf_set_val_i32(struct gguf_context * ctx, const char * key, int32_t val) {
+    const int idx = gguf_get_or_add_key(ctx, key);
+
+    ctx->kv[idx].type        = GGUF_TYPE_INT32;
+    ctx->kv[idx].value.int32 = val;
+}
+
+void gguf_set_val_f32(struct gguf_context * ctx, const char * key, float val) {
+    const int idx = gguf_get_or_add_key(ctx, key);
+
+    ctx->kv[idx].type          = GGUF_TYPE_FLOAT32;
+    ctx->kv[idx].value.float32 = val;
+}
+
+void gguf_set_val_u64(struct gguf_context * ctx, const char * key, uint64_t val) {
+    const int idx = gguf_get_or_add_key(ctx, key);
+
+    ctx->kv[idx].type         = GGUF_TYPE_UINT64;
+    ctx->kv[idx].value.uint64 = val;
+}
+
+void gguf_set_val_i64(struct gguf_context * ctx, const char * key, int64_t val) {
+    const int idx = gguf_get_or_add_key(ctx, key);
+
+    ctx->kv[idx].type        = GGUF_TYPE_INT64;
+    ctx->kv[idx].value.int64 = val;
+}
+
+void gguf_set_val_f64(struct gguf_context * ctx, const char * key, double val) {
+    const int idx = gguf_get_or_add_key(ctx, key);
+
+    ctx->kv[idx].type          = GGUF_TYPE_FLOAT64;
+    ctx->kv[idx].value.float64 = val;
+}
+
+void gguf_set_val_bool(struct gguf_context * ctx, const char * key, bool val) {
+    const int idx = gguf_get_or_add_key(ctx, key);
+
+    ctx->kv[idx].type        = GGUF_TYPE_BOOL;
+    ctx->kv[idx].value.bool_ = val;
 }
 
-enum ggml_opt_result ggml_opt_resume(
-        struct ggml_context * ctx,
-        struct ggml_opt_context * opt,
-        struct ggml_tensor * f) {
+void gguf_set_val_str(struct gguf_context * ctx, const char * key, const char * val) {
+    const int idx = gguf_get_or_add_key(ctx, key);
 
-    // build forward + backward compute graphs
-    struct ggml_tensor * gfbuf = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, sizeof(struct ggml_cgraph) / GGML_TYPE_SIZE[GGML_TYPE_I32]+ (sizeof(struct ggml_cgraph) % GGML_TYPE_SIZE[GGML_TYPE_I32] ? 1 : 0));
-    struct ggml_tensor * gbbuf = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, sizeof(struct ggml_cgraph) / GGML_TYPE_SIZE[GGML_TYPE_I32]+ (sizeof(struct ggml_cgraph) % GGML_TYPE_SIZE[GGML_TYPE_I32] ? 1 : 0));
+    ctx->kv[idx].type           = GGUF_TYPE_STRING;
+    ctx->kv[idx].value.str.n    = strlen(val);
+    ctx->kv[idx].value.str.data = strdup(val);
+}
 
-    struct ggml_cgraph * gf = (struct ggml_cgraph *) gfbuf->data;
-    struct ggml_cgraph * gb = (struct ggml_cgraph *) gbbuf->data;
+void gguf_set_arr_data(struct gguf_context * ctx, const char * key, enum gguf_type type, const void * data, int n) {
+    const int idx = gguf_get_or_add_key(ctx, key);
 
-    *gf = ggml_build_forward (f);
-    *gb = ggml_build_backward(ctx, gf, true);
+    ctx->kv[idx].type           = GGUF_TYPE_ARRAY;
+    ctx->kv[idx].value.arr.type = type;
+    ctx->kv[idx].value.arr.n    = n;
+    ctx->kv[idx].value.arr.data = malloc(n*GGUF_TYPE_SIZE[type]);
+    memcpy(ctx->kv[idx].value.arr.data, data, n*GGUF_TYPE_SIZE[type]);
+}
 
-    return ggml_opt_resume_g(ctx, opt, f, gf, gb);
+void gguf_set_arr_str(struct gguf_context * ctx, const char * key, const char ** data, int n) {
+    const int idx = gguf_get_or_add_key(ctx, key);
+
+    ctx->kv[idx].type           = GGUF_TYPE_ARRAY;
+    ctx->kv[idx].value.arr.type = GGUF_TYPE_STRING;
+    ctx->kv[idx].value.arr.n    = n;
+    ctx->kv[idx].value.arr.data = malloc(n*sizeof(struct gguf_str));
+    for (int i = 0; i < n; i++) {
+        struct gguf_str * str = &((struct gguf_str *)ctx->kv[idx].value.arr.data)[i];
+        str->n    = strlen(data[i]);
+        str->data = strdup(data[i]);
+    }
+}
+
+// set or add KV pairs from another context
+void gguf_set_kv(struct gguf_context * ctx, struct gguf_context * src) {
+    for (uint32_t i = 0; i < src->header.n_kv; i++) {
+        switch (src->kv[i].type) {
+            case GGUF_TYPE_UINT8:   gguf_set_val_u8  (ctx, src->kv[i].key.data, src->kv[i].value.uint8);    break;
+            case GGUF_TYPE_INT8:    gguf_set_val_i8  (ctx, src->kv[i].key.data, src->kv[i].value.int8);     break;
+            case GGUF_TYPE_UINT16:  gguf_set_val_u16 (ctx, src->kv[i].key.data, src->kv[i].value.uint16);   break;
+            case GGUF_TYPE_INT16:   gguf_set_val_i16 (ctx, src->kv[i].key.data, src->kv[i].value.int16);    break;
+            case GGUF_TYPE_UINT32:  gguf_set_val_u32 (ctx, src->kv[i].key.data, src->kv[i].value.uint32);   break;
+            case GGUF_TYPE_INT32:   gguf_set_val_i32 (ctx, src->kv[i].key.data, src->kv[i].value.int32);    break;
+            case GGUF_TYPE_FLOAT32: gguf_set_val_f32 (ctx, src->kv[i].key.data, src->kv[i].value.float32);  break;
+            case GGUF_TYPE_UINT64:  gguf_set_val_u64 (ctx, src->kv[i].key.data, src->kv[i].value.uint64);   break;
+            case GGUF_TYPE_INT64:   gguf_set_val_i64 (ctx, src->kv[i].key.data, src->kv[i].value.int64);    break;
+            case GGUF_TYPE_FLOAT64: gguf_set_val_f64 (ctx, src->kv[i].key.data, src->kv[i].value.float64);  break;
+            case GGUF_TYPE_BOOL:    gguf_set_val_bool(ctx, src->kv[i].key.data, src->kv[i].value.bool_);    break;
+            case GGUF_TYPE_STRING:  gguf_set_val_str (ctx, src->kv[i].key.data, src->kv[i].value.str.data); break;
+            case GGUF_TYPE_ARRAY:
+                {
+                    if (src->kv[i].value.arr.type == GGUF_TYPE_STRING) {
+                        const char ** data = malloc(src->kv[i].value.arr.n*sizeof(char *));
+                        for (uint32_t j = 0; j < src->kv[i].value.arr.n; j++) {
+                            data[j] = ((struct gguf_str *)src->kv[i].value.arr.data)[j].data;
+                        }
+                        gguf_set_arr_str(ctx, src->kv[i].key.data, data, src->kv[i].value.arr.n);
+                        free(data);
+                    } else if (src->kv[i].value.arr.type == GGUF_TYPE_ARRAY) {
+                        GGML_ASSERT(false && "nested arrays not supported");
+                    } else {
+                        gguf_set_arr_data(ctx, src->kv[i].key.data, src->kv[i].value.arr.type, src->kv[i].value.arr.data, src->kv[i].value.arr.n);
+                    }
+                } break;
+            case GGUF_TYPE_COUNT:  GGML_ASSERT(false && "invalid type"); break;
+        }
+    }
 }
 
-enum ggml_opt_result ggml_opt_resume_g(
-        struct ggml_context * ctx,
-        struct ggml_opt_context * opt,
-        struct ggml_tensor * f,
-        struct ggml_cgraph * gf,
-        struct ggml_cgraph * gb) {
+void gguf_add_tensor(
+             struct gguf_context * ctx,
+        const struct ggml_tensor * tensor) {
+    const int idx = ctx->header.n_tensors;
+    ctx->infos = realloc(ctx->infos, (idx + 1)*sizeof(struct gguf_tensor_info));
 
-    // build forward + backward compute graphs
-    enum ggml_opt_result result = GGML_OPT_OK;
+    ctx->infos[idx].name.n    = strlen(tensor->name);
+    ctx->infos[idx].name.data = strdup(tensor->name);
 
-    switch (opt->params.type) {
-        case GGML_OPT_ADAM:
-            {
-                result = ggml_opt_adam(ctx, opt, opt->params, f, gf, gb);
-            } break;
-        case GGML_OPT_LBFGS:
-            {
-                result = ggml_opt_lbfgs(ctx, opt, opt->params, f, gf, gb);
-            } break;
+    for (int i = 0; i < GGML_MAX_DIMS; ++i) {
+        ctx->infos[idx].ne[i] = 1;
     }
 
-    if (opt->params.print_forward_graph) {
-        ggml_graph_print   (gf);
-        ggml_graph_dump_dot(gf, NULL, "opt-forward.dot");
+    ctx->infos[idx].n_dims = tensor->n_dims;
+    for (int i = 0; i < tensor->n_dims; i++) {
+        ctx->infos[idx].ne[i] = tensor->ne[i];
     }
 
-    if (opt->params.print_backward_graph) {
-        ggml_graph_print   (gb);
-        ggml_graph_dump_dot(gb, gf, "opt-backward.dot");
+    ctx->infos[idx].type   = tensor->type;
+    ctx->infos[idx].offset = 0;
+    ctx->infos[idx].data   = tensor->data;
+    ctx->infos[idx].size   = ggml_nbytes(tensor);
+
+    if (ctx->header.n_tensors > 0) {
+        ctx->infos[idx].offset = ctx->infos[idx - 1].offset + GGML_PAD(ctx->infos[idx - 1].size, ctx->alignment);
     }
 
-    return result;
+    ctx->header.n_tensors++;
 }
 
-////////////////////////////////////////////////////////////////////////////////
-
-size_t ggml_quantize_q4_0(const float * src, void * dst, int n, int k, int64_t * hist) {
-    assert(k % QK4_0 == 0);
-    const int nb = k / QK4_0;
+void gguf_set_tensor_type(struct gguf_context * ctx, const char * name, enum ggml_type type) {
+    const int idx = gguf_find_tensor(ctx, name);
+    if (idx < 0) {
+        GGML_ASSERT(false && "tensor not found");
+    }
 
-    for (int b = 0; b < n; b += k) {
-        block_q4_0 * restrict y = (block_q4_0 *) dst + b/QK4_0;
+    ctx->infos[idx].type = type;
+}
 
-        quantize_row_q4_0_reference(src + b, y, k);
+void gguf_set_tensor_data(struct gguf_context * ctx, const char * name, const void * data, size_t size) {
+    const int idx = gguf_find_tensor(ctx, name);
+    if (idx < 0) {
+        GGML_ASSERT(false && "tensor not found");
+    }
 
-        for (int i = 0; i < nb; i++) {
-            for (int j = 0; j < QK4_0; j += 2) {
-                const uint8_t vi0 = y[i].qs[j/2] & 0x0F;
-                const uint8_t vi1 = y[i].qs[j/2] >> 4;
+    ctx->infos[idx].data = data;
+    ctx->infos[idx].size = size;
 
-                hist[vi0]++;
-                hist[vi1]++;
-            }
-        }
+    // update offsets
+    for (uint32_t i = idx + 1; i < ctx->header.n_tensors; ++i) {
+        ctx->infos[i].offset = ctx->infos[i - 1].offset + GGML_PAD(ctx->infos[i - 1].size, ctx->alignment);
     }
-
-    return (n/QK4_0*sizeof(block_q4_0));
 }
 
-size_t ggml_quantize_q4_1(const float * src, void * dst, int n, int k, int64_t * hist) {
-    assert(k % QK4_1 == 0);
-    const int nb = k / QK4_1;
+//static void gguf_fwrite_str(FILE * file, const struct gguf_str * val) {
+//    fwrite(&val->n,   sizeof(val->n),    1, file);
+//    fwrite(val->data, sizeof(char), val->n, file);
+//}
+//
+//static void gguf_fwrite_el(FILE * file, const void * val, size_t size) {
+//    fwrite(val, sizeof(char), size, file);
+//}
 
-    for (int b = 0; b < n; b += k) {
-        block_q4_1 * restrict y = (block_q4_1 *) dst + b/QK4_1;
+struct gguf_buf {
+    void * data;
+    size_t size;
+    size_t offset;
+};
 
-        quantize_row_q4_1_reference(src + b, y, k);
+static struct gguf_buf gguf_buf_init(size_t size) {
+    struct gguf_buf buf = {
+        /*buf.data   =*/ size == 0 ? NULL : malloc(size),
+        /*buf.size   =*/ size,
+        /*buf.offset =*/ 0,
+    };
 
-        for (int i = 0; i < nb; i++) {
-            for (int j = 0; j < QK4_1; j += 2) {
-                const uint8_t vi0 = y[i].qs[j/2] & 0x0F;
-                const uint8_t vi1 = y[i].qs[j/2] >> 4;
+    return buf;
+}
 
-                hist[vi0]++;
-                hist[vi1]++;
-            }
+static void gguf_buf_free(struct gguf_buf buf) {
+    if (buf.data) {
+        free(buf.data);
+    }
+}
+
+static void gguf_buf_grow(struct gguf_buf * buf, size_t size) {
+    if (buf->offset + size > buf->size) {
+        buf->size = 1.5*(buf->offset + size);
+        if (buf->data) {
+            buf->data = realloc(buf->data, buf->size);
         }
     }
+}
 
-    return (n/QK4_1*sizeof(block_q4_1));
+static void gguf_bwrite_str(struct gguf_buf * buf, const struct gguf_str * val) {
+    gguf_buf_grow(buf, sizeof(val->n) + val->n);
+
+    if (buf->data) {
+        memcpy((char *) buf->data + buf->offset, &val->n, sizeof(val->n));
+    }
+    buf->offset += sizeof(val->n);
+
+    if (buf->data) {
+        memcpy((char *) buf->data + buf->offset, val->data, val->n);
+    }
+    buf->offset += val->n;
 }
 
-size_t ggml_quantize_q5_0(const float * src, void * dst, int n, int k, int64_t * hist) {
-    assert(k % QK5_0 == 0);
-    const int nb = k / QK5_0;
+static void gguf_bwrite_el(struct gguf_buf * buf, const void * val, size_t el_size) {
+    gguf_buf_grow(buf, el_size);
 
-    for (int b = 0; b < n; b += k) {
-        block_q5_0 * restrict y = (block_q5_0 *)dst + b/QK5_0;
+    if (buf->data) {
+        memcpy((char *) buf->data + buf->offset, val, el_size);
+    }
+    buf->offset += el_size;
+}
 
-        quantize_row_q5_0_reference(src + b, y, k);
+static void gguf_write_to_buf(struct gguf_context * ctx, struct gguf_buf * buf, bool only_meta) {
+    // write header
+    gguf_bwrite_el(buf, &ctx->header.magic,     sizeof(ctx->header.magic));
+    gguf_bwrite_el(buf, &ctx->header.version,   sizeof(ctx->header.version));
+    gguf_bwrite_el(buf, &ctx->header.n_tensors, sizeof(ctx->header.n_tensors));
+    gguf_bwrite_el(buf, &ctx->header.n_kv,      sizeof(ctx->header.n_kv));
 
-        for (int i = 0; i < nb; i++) {
-            uint32_t qh;
-            memcpy(&qh, &y[i].qh, sizeof(qh));
+    // write key-value pairs
+    for (uint32_t i = 0; i < ctx->header.n_kv; ++i) {
+        struct gguf_kv * kv = &ctx->kv[i];
 
-            for (int j = 0; j < QK5_0; j += 2) {
-                const uint8_t vh0 = ((qh & (1u << (j + 0 ))) >> (j + 0 )) << 4;
-                const uint8_t vh1 = ((qh & (1u << (j + 16))) >> (j + 12));
+        gguf_bwrite_str(buf, &kv->key);
+        gguf_bwrite_el (buf, &kv->type, sizeof(kv->type));
 
-                // cast to 16 bins
-                const uint8_t vi0 = ((y[i].qs[j/2] & 0x0F) | vh0) / 2;
-                const uint8_t vi1 = ((y[i].qs[j/2] >>   4) | vh1) / 2;
+        switch (kv->type) {
+            case GGUF_TYPE_UINT8:   gguf_bwrite_el( buf, &kv->value.uint8,   sizeof(kv->value.uint8)  ); break;
+            case GGUF_TYPE_INT8:    gguf_bwrite_el (buf, &kv->value.int8,    sizeof(kv->value.int8)   ); break;
+            case GGUF_TYPE_UINT16:  gguf_bwrite_el (buf, &kv->value.uint16,  sizeof(kv->value.uint16) ); break;
+            case GGUF_TYPE_INT16:   gguf_bwrite_el (buf, &kv->value.int16,   sizeof(kv->value.int16)  ); break;
+            case GGUF_TYPE_UINT32:  gguf_bwrite_el (buf, &kv->value.uint32,  sizeof(kv->value.uint32) ); break;
+            case GGUF_TYPE_INT32:   gguf_bwrite_el (buf, &kv->value.int32,   sizeof(kv->value.int32)  ); break;
+            case GGUF_TYPE_FLOAT32: gguf_bwrite_el (buf, &kv->value.float32, sizeof(kv->value.float32)); break;
+            case GGUF_TYPE_UINT64:  gguf_bwrite_el (buf, &kv->value.uint64,  sizeof(kv->value.uint64) ); break;
+            case GGUF_TYPE_INT64:   gguf_bwrite_el (buf, &kv->value.int64,   sizeof(kv->value.int64)  ); break;
+            case GGUF_TYPE_FLOAT64: gguf_bwrite_el (buf, &kv->value.float64, sizeof(kv->value.float64)); break;
+            case GGUF_TYPE_BOOL:    gguf_bwrite_el (buf, &kv->value.bool_,   sizeof(kv->value.bool_)  ); break;
+            case GGUF_TYPE_STRING:  gguf_bwrite_str(buf, &kv->value.str                               ); break;
+            case GGUF_TYPE_ARRAY:
+                {
+                    gguf_bwrite_el(buf, &kv->value.arr.type, sizeof(kv->value.arr.type));
+                    gguf_bwrite_el(buf, &kv->value.arr.n,    sizeof(kv->value.arr.n)   );
+
+                    switch (kv->value.arr.type) {
+                        case GGUF_TYPE_UINT8:
+                        case GGUF_TYPE_INT8:
+                        case GGUF_TYPE_UINT16:
+                        case GGUF_TYPE_INT16:
+                        case GGUF_TYPE_UINT32:
+                        case GGUF_TYPE_INT32:
+                        case GGUF_TYPE_FLOAT32:
+                        case GGUF_TYPE_UINT64:
+                        case GGUF_TYPE_INT64:
+                        case GGUF_TYPE_FLOAT64:
+                        case GGUF_TYPE_BOOL:
+                            {
+                                gguf_bwrite_el(buf, kv->value.arr.data, kv->value.arr.n * GGUF_TYPE_SIZE[kv->value.arr.type]);
+                            } break;
+                        case GGUF_TYPE_STRING:
+                            {
+                                for (uint32_t j = 0; j < kv->value.arr.n; ++j) {
+                                    gguf_bwrite_str(buf, &((struct gguf_str *) kv->value.arr.data)[j]);
+                                }
+                            } break;
+                        case GGUF_TYPE_ARRAY:
+                        case GGUF_TYPE_COUNT: GGML_ASSERT(false && "invalid type"); break;
+                    };
+                } break;
+            case GGUF_TYPE_COUNT: GGML_ASSERT(false && "invalid type");
+        };
+    }
 
-                hist[vi0]++;
-                hist[vi1]++;
-            }
+    // write tensor infos
+    for (uint32_t i = 0; i < ctx->header.n_tensors; ++i) {
+        struct gguf_tensor_info * info = &ctx->infos[i];
+
+        gguf_bwrite_str(buf, &info->name);
+        gguf_bwrite_el (buf, &info->n_dims, sizeof(info->n_dims));
+        for (uint32_t j = 0; j < info->n_dims; ++j) {
+            gguf_bwrite_el(buf, &info->ne[j], sizeof(info->ne[j]));
         }
+        gguf_bwrite_el(buf, &info->type,   sizeof(info->type));
+        gguf_bwrite_el(buf, &info->offset, sizeof(info->offset));
     }
 
-    return (n/QK5_0*sizeof(block_q5_0));
-}
+    // we require the data section to be aligned, so take into account any padding
+    {
+        const size_t offset     = buf->offset;
+        const size_t offset_pad = GGML_PAD(offset, ctx->alignment);
 
-size_t ggml_quantize_q5_1(const float * src, void * dst, int n, int k, int64_t * hist) {
-    assert(k % QK5_1 == 0);
-    const int nb = k / QK5_1;
+        if (offset_pad != offset) {
+            uint8_t pad = 0;
+            for (size_t i = 0; i < offset_pad - offset; ++i) {
+                gguf_bwrite_el(buf, &pad, sizeof(pad));
+            }
+        }
+    }
 
-    for (int b = 0; b < n; b += k) {
-        block_q5_1 * restrict y = (block_q5_1 *)dst + b/QK5_1;
+    if (only_meta) {
+        return;
+    }
 
-        quantize_row_q5_1_reference(src + b, y, k);
+    size_t offset = 0;
 
-        for (int i = 0; i < nb; i++) {
-            uint32_t qh;
-            memcpy(&qh, &y[i].qh, sizeof(qh));
+    // write tensor data
+    for (uint32_t i = 0; i < ctx->header.n_tensors; ++i) {
+        struct gguf_tensor_info * info = &ctx->infos[i];
 
-            for (int j = 0; j < QK5_1; j += 2) {
-                const uint8_t vh0 = ((qh & (1u << (j + 0 ))) >> (j + 0 )) << 4;
-                const uint8_t vh1 = ((qh & (1u << (j + 16))) >> (j + 12));
+        const size_t size     = info->size;
+        const size_t size_pad = GGML_PAD(size, ctx->alignment);
 
-                // cast to 16 bins
-                const uint8_t vi0 = ((y[i].qs[j/2] & 0x0F) | vh0) / 2;
-                const uint8_t vi1 = ((y[i].qs[j/2] >>   4) | vh1) / 2;
+        gguf_bwrite_el(buf, info->data, size);
 
-                hist[vi0]++;
-                hist[vi1]++;
+        if (size_pad != size) {
+            uint8_t pad = 0;
+            for (size_t j = 0; j < size_pad - size; ++j) {
+                gguf_bwrite_el(buf, &pad, sizeof(pad));
             }
         }
-    }
 
-    return (n/QK5_1*sizeof(block_q5_1));
+        GGML_ASSERT(offset == info->offset);
+
+        offset += size_pad;
+    }
 }
 
-size_t ggml_quantize_q8_0(const float * src, void * dst, int n, int k, int64_t * hist) {
-    assert(k % QK8_0 == 0);
-    const int nb = k / QK8_0;
+void gguf_write_to_file(struct gguf_context * ctx, const char * fname, bool only_meta) {
+    FILE * file = fopen(fname, "wb");
+    if (!file) {
+        GGML_ASSERT(false && "failed to open file for writing");
+    }
 
-    for (int b = 0; b < n; b += k) {
-        block_q8_0 * restrict y = (block_q8_0 *)dst + b/QK8_0;
+    struct gguf_buf buf = gguf_buf_init(16*1024);
 
-        quantize_row_q8_0_reference(src + b, y, k);
+    gguf_write_to_buf(ctx, &buf, only_meta);
 
-        for (int i = 0; i < nb; i++) {
-            for (int j = 0; j < QK8_0; ++j) {
-                const int8_t vi = y[i].qs[j];
+    fwrite(buf.data, 1, buf.offset, file);
 
-                hist[vi/16 + 8]++;
-            }
-        }
-    }
+    gguf_buf_free(buf);
 
-    return (n/QK8_0*sizeof(block_q8_0));
+    fclose(file);
 }
 
-size_t ggml_quantize_chunk(enum ggml_type type, const float * src, void * dst, int start, int n, int64_t * hist) {
-    size_t result = 0;
-    switch (type) {
-        case GGML_TYPE_Q4_0:
-            {
-                GGML_ASSERT(start % QK4_0 == 0);
-                block_q4_0 * block = (block_q4_0*)dst + start / QK4_0;
-                result = ggml_quantize_q4_0(src + start, block, n, n, hist);
-            } break;
-        case GGML_TYPE_Q4_1:
-            {
-                GGML_ASSERT(start % QK4_1 == 0);
-                block_q4_1 * block = (block_q4_1*)dst + start / QK4_1;
-                result = ggml_quantize_q4_1(src + start, block, n, n, hist);
-            } break;
-        case GGML_TYPE_Q5_0:
-            {
-                GGML_ASSERT(start % QK5_0 == 0);
-                block_q5_0 * block = (block_q5_0*)dst + start / QK5_0;
-                result = ggml_quantize_q5_0(src + start, block, n, n, hist);
-            } break;
-        case GGML_TYPE_Q5_1:
-            {
-                GGML_ASSERT(start % QK5_1 == 0);
-                block_q5_1 * block = (block_q5_1*)dst + start / QK5_1;
-                result = ggml_quantize_q5_1(src + start, block, n, n, hist);
-            } break;
-        case GGML_TYPE_Q8_0:
-            {
-                GGML_ASSERT(start % QK8_0 == 0);
-                block_q8_0 * block = (block_q8_0*)dst + start / QK8_0;
-                result = ggml_quantize_q8_0(src + start, block, n, n, hist);
-            } break;
-#ifdef GGML_USE_K_QUANTS
-        case GGML_TYPE_Q2_K:
-            {
-                GGML_ASSERT(start % QK_K == 0);
-                block_q2_K * block = (block_q2_K*)dst + start / QK_K;
-                result = ggml_quantize_q2_K(src + start, block, n, n, hist);
-            } break;
-        case GGML_TYPE_Q3_K:
-            {
-                GGML_ASSERT(start % QK_K == 0);
-                block_q3_K * block = (block_q3_K*)dst + start / QK_K;
-                result = ggml_quantize_q3_K(src + start, block, n, n, hist);
-            } break;
-        case GGML_TYPE_Q4_K:
-            {
-                GGML_ASSERT(start % QK_K == 0);
-                block_q4_K * block = (block_q4_K*)dst + start / QK_K;
-                result = ggml_quantize_q4_K(src + start, block, n, n, hist);
-            } break;
-        case GGML_TYPE_Q5_K:
-            {
-                GGML_ASSERT(start % QK_K == 0);
-                block_q5_K * block = (block_q5_K*)dst + start / QK_K;
-                result = ggml_quantize_q5_K(src + start, block, n, n, hist);
-            } break;
-        case GGML_TYPE_Q6_K:
-            {
-                GGML_ASSERT(start % QK_K == 0);
-                block_q6_K * block = (block_q6_K*)dst + start / QK_K;
-                result = ggml_quantize_q6_K(src + start, block, n, n, hist);
-            } break;
-#endif
-        case GGML_TYPE_F16:
-            {
-                int elemsize = sizeof(ggml_fp16_t);
-                ggml_fp32_to_fp16_row(src + start, (ggml_fp16_t *)dst + start, n);
-                result = n * elemsize;
-            } break;
-        case GGML_TYPE_F32:
-            {
-                int elemsize = sizeof(float);
-                result = n * elemsize;
-                memcpy((uint8_t *)dst + start * elemsize, src + start, result);
-            } break;
-        default:
-            assert(false);
-    }
-    return result;
+size_t gguf_get_meta_size(struct gguf_context * ctx) {
+    // no allocs - only compute size
+    struct gguf_buf buf = gguf_buf_init(0);
+
+    gguf_write_to_buf(ctx, &buf, true);
+
+    return buf.offset;
+}
+
+void gguf_get_meta_data(struct gguf_context * ctx, void * data) {
+    struct gguf_buf buf = gguf_buf_init(16*1024);
+
+    gguf_write_to_buf(ctx, &buf, true);
+
+    memcpy(data, buf.data, buf.offset);
+
+    gguf_buf_free(buf);
 }
 
 ////////////////////////////////////////////////////////////////////////////////
diff --git a/ggml.h b/ggml.h
index 29884166edc7a4df6103abad3cd6b2a7e0043de2..4ef3d525371fe6ae2621eabfc9e3cd349da4c8b8 100644 (file)
--- a/ggml.h
+++ b/ggml.h
@@ -65,7 +65,7 @@
 //       ggml_set_f32(a, 3.0f);
 //       ggml_set_f32(b, 4.0f);
 //
-//       ggml_graph_compute(ctx0, &gf);
+//       ggml_graph_compute_with_ctx(ctx, &gf, n_threads);
 //
 //       printf("f = %f\n", ggml_get_f32_1d(f, 0));
 //
 // The data of the tensor is accessed via the "data" pointer. For example:
 //
 //   {
-//       struct ggml_tensor * a = ggml_new_tensor_2d(ctx, GGML_TYPE_F32, 2, 3);
+//       const int nx = 2;
+//       const int ny = 3;
 //
-//       // a[1, 2] = 1.0f;
-//       *(float *) ((char *) a->data + 2*a->nb[1] + 1*a->nb[0]) = 1.0f;
+//       struct ggml_tensor * a = ggml_new_tensor_2d(ctx, GGML_TYPE_F32, nx, ny);
 //
-//       // a[2, 0] = 2.0f;
-//       *(float *) ((char *) a->data + 0*a->nb[1] + 2*a->nb[0]) = 2.0f;
+//       for (int y = 0; y < ny; y++) {
+//           for (int x = 0; x < nx; x++) {
+//               *(float *) ((char *) a->data + y*a->nb[1] + x*a->nb[0]) = x + y;
+//           }
+//       }
 //
 //       ...
 //   }
 #    define GGML_API
 #endif
 
+// TODO: support for clang
+#ifdef __GNUC__
+#    define GGML_DEPRECATED(func, hint) func __attribute__((deprecated(hint)))
+#elif defined(_MSC_VER)
+#    define GGML_DEPRECATED(func, hint) __declspec(deprecated(hint)) func
+#else
+#    define GGML_DEPRECATED(func, hint) func
+#endif
+
 #include <stdint.h>
 #include <stddef.h>
 #include <stdbool.h>
 #define GGML_MAX_NODES         4096
 #define GGML_MAX_PARAMS        256
 #define GGML_MAX_CONTEXTS      64
-#define GGML_MAX_OPT           4
-#define GGML_MAX_NAME          48
+#define GGML_MAX_SRC           6
+#define GGML_MAX_NAME          64
+#define GGML_MAX_OP_PARAMS     32
 #define GGML_DEFAULT_N_THREADS 4
 
+#if UINTPTR_MAX == 0xFFFFFFFF
+    #define GGML_MEM_ALIGN 4
+#else
+    #define GGML_MEM_ALIGN 16
+#endif
+
+#define GGML_EXIT_SUCCESS 0
+#define GGML_EXIT_ABORTED 1
+
+#define GGUF_MAGIC   0x46554747 // "GGUF"
+#define GGUF_VERSION 2
+
+#define GGUF_DEFAULT_ALIGNMENT 32
+
 #define GGML_UNUSED(x) (void)(x)
 
+#define GGML_PAD(x, n) (((x) + (n) - 1) & ~((n) - 1))
+
 #define GGML_ASSERT(x) \
     do { \
         if (!(x)) { \
 extern "C" {
 #endif
 
-#ifdef __ARM_NEON
-    // we use the built-in 16-bit float type
+#if defined(__ARM_NEON) && defined(__CUDACC__)
+    typedef half ggml_fp16_t;
+#elif defined(__ARM_NEON)
     typedef __fp16 ggml_fp16_t;
 #else
     typedef uint16_t ggml_fp16_t;
@@ -250,8 +280,8 @@ extern "C" {
     GGML_API float       ggml_fp16_to_fp32(ggml_fp16_t x);
     GGML_API ggml_fp16_t ggml_fp32_to_fp16(float x);
 
-    GGML_API void ggml_fp16_to_fp32_row(const ggml_fp16_t * x, float * y, size_t n);
-    GGML_API void ggml_fp32_to_fp16_row(const float * x, ggml_fp16_t * y, size_t n);
+    GGML_API void ggml_fp16_to_fp32_row(const ggml_fp16_t * x, float * y, int n);
+    GGML_API void ggml_fp32_to_fp16_row(const float * x, ggml_fp16_t * y, int n);
 
     struct ggml_object;
     struct ggml_context;
@@ -324,20 +354,12 @@ extern "C" {
         GGML_OP_ARGMAX,
         GGML_OP_REPEAT,
         GGML_OP_REPEAT_BACK,
-        GGML_OP_ABS,
-        GGML_OP_SGN,
-        GGML_OP_NEG,
-        GGML_OP_STEP,
-        GGML_OP_TANH,
-        GGML_OP_ELU,
-        GGML_OP_RELU,
-        GGML_OP_GELU,
-        GGML_OP_GELU_QUICK,
-        GGML_OP_SILU,
+        GGML_OP_CONCAT,
         GGML_OP_SILU_BACK,
         GGML_OP_NORM, // normalize
         GGML_OP_RMS_NORM,
         GGML_OP_RMS_NORM_BACK,
+        GGML_OP_GROUP_NORM,
 
         GGML_OP_MUL_MAT,
         GGML_OP_OUT_PROD,
@@ -363,16 +385,29 @@ extern "C" {
         GGML_OP_CLAMP,
         GGML_OP_CONV_1D,
         GGML_OP_CONV_2D,
+        GGML_OP_CONV_TRANSPOSE_2D,
+        GGML_OP_POOL_1D,
+        GGML_OP_POOL_2D,
+
+        GGML_OP_UPSCALE, // nearest interpolate
 
         GGML_OP_FLASH_ATTN,
         GGML_OP_FLASH_FF,
         GGML_OP_FLASH_ATTN_BACK,
         GGML_OP_WIN_PART,
         GGML_OP_WIN_UNPART,
+        GGML_OP_GET_REL_POS,
+        GGML_OP_ADD_REL_POS,
+
+        GGML_OP_UNARY,
 
         GGML_OP_MAP_UNARY,
         GGML_OP_MAP_BINARY,
 
+        GGML_OP_MAP_CUSTOM1_F32,
+        GGML_OP_MAP_CUSTOM2_F32,
+        GGML_OP_MAP_CUSTOM3_F32,
+
         GGML_OP_MAP_CUSTOM1,
         GGML_OP_MAP_CUSTOM2,
         GGML_OP_MAP_CUSTOM3,
@@ -383,6 +418,24 @@ extern "C" {
         GGML_OP_COUNT,
     };
 
+    enum ggml_unary_op {
+        GGML_UNARY_OP_ABS,
+        GGML_UNARY_OP_SGN,
+        GGML_UNARY_OP_NEG,
+        GGML_UNARY_OP_STEP,
+        GGML_UNARY_OP_TANH,
+        GGML_UNARY_OP_ELU,
+        GGML_UNARY_OP_RELU,
+        GGML_UNARY_OP_GELU,
+        GGML_UNARY_OP_GELU_QUICK,
+        GGML_UNARY_OP_SILU,
+    };
+
+    enum ggml_object_type {
+        GGML_OBJECT_TENSOR,
+        GGML_OBJECT_GRAPH,
+        GGML_OBJECT_WORK_BUFFER
+    };
 
     // ggml object
     struct ggml_object {
@@ -391,7 +444,9 @@ extern "C" {
 
         struct ggml_object * next;
 
-        char padding[8];
+        enum ggml_object_type type;
+
+        char padding[4];
     };
 
     static const size_t GGML_OBJECT_SIZE = sizeof(struct ggml_object);
@@ -411,15 +466,13 @@ extern "C" {
         // compute data
         enum ggml_op op;
 
+        // op params - allocated as int32_t for alignment
+        int32_t op_params[GGML_MAX_OP_PARAMS / sizeof(int32_t)];
+
         bool is_param;
 
         struct ggml_tensor * grad;
-        struct ggml_tensor * src0;
-        struct ggml_tensor * src1;
-        struct ggml_tensor * opt[GGML_MAX_OPT];
-
-        // thread scheduling
-        int n_tasks;
+        struct ggml_tensor * src[GGML_MAX_SRC];
 
         // performance
         int     perf_runs;
@@ -437,25 +490,46 @@ extern "C" {
 
     static const size_t GGML_TENSOR_SIZE = sizeof(struct ggml_tensor);
 
+    // the compute plan that needs to be prepared for ggml_graph_compute()
+    // since https://github.com/ggerganov/ggml/issues/287
+    struct ggml_cplan {
+        size_t    work_size; // size of work buffer, calculated by `ggml_graph_plan()`
+        uint8_t * work_data; // work buffer, to be allocated by caller before calling to `ggml_graph_compute()`
+
+        int n_threads;
+
+        // the `n_tasks` of nodes, 1:1 mapping to cgraph nodes
+        int n_tasks[GGML_MAX_NODES];
+
+        // abort ggml_graph_compute when true
+        bool (*abort_callback)(void * data);
+        void * abort_callback_data;
+    };
+
+    // next prime after GGML_MAX_NODES
+    // #define GGML_GRAPH_HASHTABLE_SIZE 4099
+    // next prime after GGML_MAX_NODES * 2 (nodes + leafs)
+    #define GGML_GRAPH_HASHTABLE_SIZE 8273
+
     // computation graph
     struct ggml_cgraph {
         int n_nodes;
         int n_leafs;
-        int n_threads;
-
-        size_t work_size;
-        struct ggml_tensor * work;
 
         struct ggml_tensor * nodes[GGML_MAX_NODES];
         struct ggml_tensor * grads[GGML_MAX_NODES];
         struct ggml_tensor * leafs[GGML_MAX_NODES];
 
+        void * visited_hash_table[GGML_GRAPH_HASHTABLE_SIZE];
+
         // performance
         int     perf_runs;
         int64_t perf_cycles;
         int64_t perf_time_us;
     };
 
+    static const size_t GGML_GRAPH_SIZE = sizeof(struct ggml_cgraph);
+
     // scratch buffer
     struct ggml_scratch {
         size_t offs;
@@ -509,6 +583,7 @@ extern "C" {
     GGML_API int64_t ggml_nelements   (const struct ggml_tensor * tensor);
     GGML_API int64_t ggml_nrows       (const struct ggml_tensor * tensor);
     GGML_API size_t  ggml_nbytes      (const struct ggml_tensor * tensor);
+    GGML_API size_t  ggml_nbytes_pad  (const struct ggml_tensor * tensor); // same as ggml_nbytes() but padded to GGML_MEM_ALIGN
     GGML_API size_t  ggml_nbytes_split(const struct ggml_tensor * tensor, int nrows_split);
 
     GGML_API int     ggml_blck_size (enum ggml_type type);
@@ -517,6 +592,7 @@ extern "C" {
 
     GGML_API const char * ggml_type_name(enum ggml_type type);
     GGML_API const char * ggml_op_name  (enum ggml_op   op);
+    GGML_API const char * ggml_op_symbol(enum ggml_op   op);
 
     GGML_API size_t  ggml_element_size(const struct ggml_tensor * tensor);
 
@@ -529,6 +605,8 @@ extern "C" {
     GGML_API bool ggml_is_contiguous(const struct ggml_tensor * tensor);
     GGML_API bool ggml_is_permuted  (const struct ggml_tensor * tensor);
 
+    GGML_API bool ggml_are_same_shape(const struct ggml_tensor * t0, const struct ggml_tensor * t1);
+
     // use this to compute the memory overhead of a tensor
     GGML_API size_t ggml_tensor_overhead(void);
 
@@ -540,6 +618,7 @@ extern "C" {
     GGML_API size_t  ggml_used_mem(const struct ggml_context * ctx);
 
     GGML_API size_t  ggml_set_scratch (struct ggml_context * ctx, struct ggml_scratch scratch);
+    GGML_API bool    ggml_get_no_alloc(struct ggml_context * ctx);
     GGML_API void    ggml_set_no_alloc(struct ggml_context * ctx, bool no_alloc);
 
     GGML_API void *  ggml_get_mem_buffer     (const struct ggml_context * ctx);
@@ -599,9 +678,11 @@ extern "C" {
     GGML_API void *  ggml_get_data    (const struct ggml_tensor * tensor);
     GGML_API float * ggml_get_data_f32(const struct ggml_tensor * tensor);
 
-    GGML_API const char *         ggml_get_name(const struct ggml_tensor * tensor);
-    GGML_API struct ggml_tensor * ggml_set_name(struct ggml_tensor * tensor, const char * name);
-    GGML_API struct ggml_tensor * ggml_format_name(struct ggml_tensor * tensor, const char * fmt, ...);
+    GGML_API enum ggml_unary_op ggml_get_unary_op(const struct ggml_tensor * tensor);
+
+    GGML_API const char *         ggml_get_name   (const struct ggml_tensor * tensor);
+    GGML_API struct ggml_tensor * ggml_set_name   (      struct ggml_tensor * tensor, const char * name);
+    GGML_API struct ggml_tensor * ggml_format_name(      struct ggml_tensor * tensor, const char * fmt, ...);
 
     //
     // operations on tensors with backpropagation
@@ -611,6 +692,11 @@ extern "C" {
             struct ggml_context * ctx,
             struct ggml_tensor  * a);
 
+    // in-place, returns view(a)
+    GGML_API struct ggml_tensor * ggml_dup_inplace(
+            struct ggml_context * ctx,
+            struct ggml_tensor  * a);
+
     GGML_API struct ggml_tensor * ggml_add(
             struct ggml_context * ctx,
             struct ggml_tensor  * a,
@@ -735,6 +821,13 @@ extern "C" {
             struct ggml_tensor  * a,
             struct ggml_tensor  * b);
 
+    // concat a and b on dim 2
+    // used in stable-diffusion
+    GGML_API struct ggml_tensor * ggml_concat(
+            struct ggml_context * ctx,
+            struct ggml_tensor  * a,
+            struct ggml_tensor  * b);
+
     GGML_API struct ggml_tensor * ggml_abs(
             struct ggml_context * ctx,
             struct ggml_tensor  * a);
@@ -824,25 +917,42 @@ extern "C" {
             struct ggml_tensor  * b);
 
     // normalize along rows
-    // TODO: eps is hardcoded to 1e-5 for now
     GGML_API struct ggml_tensor * ggml_norm(
             struct ggml_context * ctx,
-            struct ggml_tensor  * a);
+            struct ggml_tensor  * a,
+            float                 eps);
 
     GGML_API struct ggml_tensor * ggml_norm_inplace(
             struct ggml_context * ctx,
-            struct ggml_tensor  * a);
+            struct ggml_tensor  * a,
+            float                 eps);
 
     GGML_API struct ggml_tensor * ggml_rms_norm(
             struct ggml_context * ctx,
-            struct ggml_tensor  * a);
+            struct ggml_tensor  * a,
+            float                 eps);
 
     GGML_API struct ggml_tensor * ggml_rms_norm_inplace(
             struct ggml_context * ctx,
-            struct ggml_tensor  * a);
+            struct ggml_tensor  * a,
+            float                 eps);
+
+    // group normalize along ne0*ne1*n_groups
+    // used in stable-diffusion
+    // TODO: eps is hardcoded to 1e-6 for now
+    GGML_API struct ggml_tensor * ggml_group_norm(
+            struct ggml_context * ctx,
+            struct ggml_tensor  * a,
+            int                   n_groups);
+
+    GGML_API struct ggml_tensor * ggml_group_norm_inplace(
+            struct ggml_context * ctx,
+            struct ggml_tensor  * a,
+            int                   n_groups);
 
     // a - x
     // b - dy
+    // TODO: update with configurable eps
     GGML_API struct ggml_tensor * ggml_rms_norm_back(
             struct ggml_context * ctx,
             struct ggml_tensor  * a,
@@ -934,11 +1044,22 @@ extern "C" {
             struct ggml_tensor  * a,
             struct ggml_tensor  * b);
 
+    // a -> b, in-place, return view(b)
+    GGML_API struct ggml_tensor * ggml_cpy_inplace(
+            struct ggml_context * ctx,
+            struct ggml_tensor  * a,
+            struct ggml_tensor  * b);
+
     // make contiguous
     GGML_API struct ggml_tensor * ggml_cont(
             struct ggml_context * ctx,
             struct ggml_tensor  * a);
 
+    // make contiguous, in-place
+    GGML_API struct ggml_tensor * ggml_cont_inplace(
+            struct ggml_context * ctx,
+            struct ggml_tensor  * a);
+
     // return view(a), b specifies the new shape
     // TODO: when we start computing gradient, make a copy instead of view
     GGML_API struct ggml_tensor * ggml_reshape(
@@ -1107,6 +1228,37 @@ extern "C" {
             int                   mode,
             int                   n_ctx);
 
+    // custom RoPE
+    GGML_API struct ggml_tensor * ggml_rope_custom(
+            struct ggml_context * ctx,
+            struct ggml_tensor  * a,
+            int                   n_past,
+            int                   n_dims,
+            int                   mode,
+            int                   n_ctx,
+            float                 freq_base,
+            float                 freq_scale);
+
+    // in-place, returns view(a)
+    GGML_API struct ggml_tensor * ggml_rope_custom_inplace(
+            struct ggml_context * ctx,
+            struct ggml_tensor  * a,
+            int                   n_past,
+            int                   n_dims,
+            int                   mode,
+            int                   n_ctx,
+            float                 freq_base,
+            float                 freq_scale);
+
+    // xPos RoPE, in-place, returns view(a)
+    GGML_API struct ggml_tensor * ggml_rope_xpos_inplace(
+            struct ggml_context * ctx,
+            struct ggml_tensor  * a,
+            int                   n_past,
+            int                   n_dims,
+            float                 base,
+            bool                  down);
+
     // rotary position embedding backward, i.e compute dx from dy
     // a - dy
     GGML_API struct ggml_tensor * ggml_rope_back(
@@ -1114,7 +1266,12 @@ extern "C" {
             struct ggml_tensor  * a,
             int                   n_past,
             int                   n_dims,
-            int                   mode);
+            int                   mode,
+            int                   n_ctx,
+            float                 freq_base,
+            float                 freq_scale,
+            float                 xpos_base,
+            bool                  xpos_down);
 
     // alibi position embedding
     // in-place, returns view(a)
@@ -1141,6 +1298,15 @@ extern "C" {
             int                   p0,  // padding
             int                   d0); // dilation
 
+    // conv_1d with padding = half
+    // alias for ggml_conv_1d(a, b, s, a->ne[0]/2, d)
+    GGML_API struct ggml_tensor* ggml_conv_1d_ph(
+            struct ggml_context * ctx,
+            struct ggml_tensor  * a,
+            struct ggml_tensor  * b,
+            int                   s,
+            int                   d);
+
     GGML_API struct ggml_tensor * ggml_conv_2d(
             struct ggml_context * ctx,
             struct ggml_tensor  * a,
@@ -1152,14 +1318,70 @@ extern "C" {
             int                   d0,
             int                   d1);
 
-    // conv_1d with padding = half
-    // alias for ggml_conv_1d(a, b, s, a->ne[0]/2, d)
-    GGML_API struct ggml_tensor* ggml_conv_1d_ph(
+
+    // kernel size is a->ne[0] x a->ne[1]
+    // stride is equal to kernel size
+    // padding is zero
+    // example:
+    // a:     16   16    3  768
+    // b:   1024 1024    3    1
+    // res:   64   64  768    1
+    // used in sam
+    GGML_API struct ggml_tensor * ggml_conv_2d_sk_p0(
+            struct ggml_context * ctx,
+            struct ggml_tensor  * a,
+            struct ggml_tensor  * b);
+
+    // kernel size is a->ne[0] x a->ne[1]
+    // stride is 1
+    // padding is half
+    // example:
+    // a:      3    3    256  256
+    // b:     64   64    256    1
+    // res:   64   64    256    1
+    // used in sam
+    GGML_API struct ggml_tensor * ggml_conv_2d_s1_ph(
+            struct ggml_context * ctx,
+            struct ggml_tensor  * a,
+            struct ggml_tensor  * b);
+
+    GGML_API struct ggml_tensor * ggml_conv_transpose_2d_p0(
             struct ggml_context * ctx,
             struct ggml_tensor  * a,
             struct ggml_tensor  * b,
-            int                   s,
-            int                   d);
+            int                   stride);
+
+    enum ggml_op_pool {
+        GGML_OP_POOL_MAX,
+        GGML_OP_POOL_AVG,
+        GGML_OP_POOL_COUNT,
+    };
+
+    GGML_API struct ggml_tensor * ggml_pool_1d(
+            struct ggml_context * ctx,
+            struct ggml_tensor  * a,
+            enum ggml_op_pool     op,
+            int                   k0, // kernel size
+            int                   s0, // stride
+            int                   p0); // padding
+
+    GGML_API struct ggml_tensor * ggml_pool_2d(
+            struct ggml_context * ctx,
+            struct ggml_tensor  * a,
+            enum ggml_op_pool     op,
+            int                   k0,
+            int                   k1,
+            int                   s0,
+            int                   s1,
+            int                   p0,
+            int                   p1);
+
+    // nearest interpolate
+    // used in stable-diffusion
+    GGML_API struct ggml_tensor * ggml_upscale(
+            struct ggml_context * ctx,
+            struct ggml_tensor  * a,
+            int                   scale_factor);
 
     GGML_API struct ggml_tensor * ggml_flash_attn(
             struct ggml_context * ctx,
@@ -1204,6 +1426,37 @@ extern "C" {
             int                   h0,
             int                   w);
 
+    GGML_API struct ggml_tensor * ggml_unary(
+            struct ggml_context * ctx,
+             struct ggml_tensor * a,
+             enum ggml_unary_op op);
+
+    GGML_API struct ggml_tensor * ggml_unary_inplace(
+        struct ggml_context * ctx,
+        struct ggml_tensor  * a,
+        enum ggml_unary_op op);
+
+    // used in sam
+    GGML_API struct ggml_tensor * ggml_get_rel_pos(
+            struct ggml_context * ctx,
+            struct ggml_tensor  * a,
+            int                   qh,
+            int                   kh);
+
+    // used in sam
+
+    GGML_API struct ggml_tensor * ggml_add_rel_pos(
+            struct ggml_context * ctx,
+            struct ggml_tensor  * a,
+            struct ggml_tensor  * pw,
+            struct ggml_tensor  * ph);
+
+    GGML_API struct ggml_tensor * ggml_add_rel_pos_inplace(
+            struct ggml_context * ctx,
+            struct ggml_tensor  * a,
+            struct ggml_tensor  * pw,
+            struct ggml_tensor  * ph);
+
     // custom operators
 
     typedef void (*ggml_unary_op_f32_t) (const int, float *, const float *);
@@ -1213,63 +1466,129 @@ extern "C" {
     typedef void (*ggml_custom2_op_f32_t)(struct ggml_tensor *, const struct ggml_tensor *, const struct ggml_tensor *);
     typedef void (*ggml_custom3_op_f32_t)(struct ggml_tensor *, const struct ggml_tensor *, const struct ggml_tensor *, const struct ggml_tensor *);
 
-    GGML_API struct ggml_tensor * ggml_map_unary_f32(
+    GGML_DEPRECATED(GGML_API struct ggml_tensor * ggml_map_unary_f32(
             struct ggml_context        * ctx,
             struct ggml_tensor         * a,
-                   ggml_unary_op_f32_t   fun);
+                   ggml_unary_op_f32_t   fun),
+        "use ggml_map_custom1 instead");
 
-    GGML_API struct ggml_tensor * ggml_map_unary_inplace_f32(
+    GGML_DEPRECATED(GGML_API struct ggml_tensor * ggml_map_unary_inplace_f32(
             struct ggml_context        * ctx,
             struct ggml_tensor         * a,
-                   ggml_unary_op_f32_t   fun);
+                   ggml_unary_op_f32_t   fun),
+        "use ggml_map_custom1_inplace instead");
 
-    GGML_API struct ggml_tensor * ggml_map_binary_f32(
+    GGML_DEPRECATED(GGML_API struct ggml_tensor * ggml_map_binary_f32(
             struct ggml_context         * ctx,
             struct ggml_tensor          * a,
             struct ggml_tensor          * b,
-                   ggml_binary_op_f32_t   fun);
+                   ggml_binary_op_f32_t   fun),
+        "use ggml_map_custom2 instead");
 
-    GGML_API struct ggml_tensor * ggml_map_binary_inplace_f32(
+    GGML_DEPRECATED(GGML_API struct ggml_tensor * ggml_map_binary_inplace_f32(
             struct ggml_context         * ctx,
             struct ggml_tensor          * a,
             struct ggml_tensor          * b,
-                   ggml_binary_op_f32_t   fun);
+                   ggml_binary_op_f32_t   fun),
+        "use ggml_map_custom2_inplace instead");
 
-    GGML_API struct ggml_tensor * ggml_map_custom1_f32(
+    GGML_DEPRECATED(GGML_API struct ggml_tensor * ggml_map_custom1_f32(
             struct ggml_context          * ctx,
             struct ggml_tensor           * a,
-                   ggml_custom1_op_f32_t   fun);
+                   ggml_custom1_op_f32_t   fun),
+        "use ggml_map_custom1 instead");
 
-    GGML_API struct ggml_tensor * ggml_map_custom1_inplace_f32(
+    GGML_DEPRECATED(GGML_API struct ggml_tensor * ggml_map_custom1_inplace_f32(
             struct ggml_context          * ctx,
             struct ggml_tensor           * a,
-                   ggml_custom1_op_f32_t   fun);
+                   ggml_custom1_op_f32_t   fun),
+        "use ggml_map_custom1_inplace instead");
 
-    GGML_API struct ggml_tensor * ggml_map_custom2_f32(
+    GGML_DEPRECATED(GGML_API struct ggml_tensor * ggml_map_custom2_f32(
             struct ggml_context          * ctx,
             struct ggml_tensor           * a,
             struct ggml_tensor           * b,
-                   ggml_custom2_op_f32_t   fun);
+                   ggml_custom2_op_f32_t   fun),
+        "use ggml_map_custom2 instead");
 
-    GGML_API struct ggml_tensor * ggml_map_custom2_inplace_f32(
+    GGML_DEPRECATED(GGML_API struct ggml_tensor * ggml_map_custom2_inplace_f32(
             struct ggml_context          * ctx,
             struct ggml_tensor           * a,
             struct ggml_tensor           * b,
-                   ggml_custom2_op_f32_t   fun);
+                   ggml_custom2_op_f32_t   fun),
+        "use ggml_map_custom2_inplace instead");
 
-    GGML_API struct ggml_tensor * ggml_map_custom3_f32(
+    GGML_DEPRECATED(GGML_API struct ggml_tensor * ggml_map_custom3_f32(
             struct ggml_context          * ctx,
             struct ggml_tensor           * a,
             struct ggml_tensor           * b,
             struct ggml_tensor           * c,
-                   ggml_custom3_op_f32_t   fun);
+                   ggml_custom3_op_f32_t   fun),
+        "use ggml_map_custom3 instead");
 
-    GGML_API struct ggml_tensor * ggml_map_custom3_inplace_f32(
+    GGML_DEPRECATED(GGML_API struct ggml_tensor * ggml_map_custom3_inplace_f32(
             struct ggml_context          * ctx,
             struct ggml_tensor           * a,
             struct ggml_tensor           * b,
             struct ggml_tensor           * c,
-                   ggml_custom3_op_f32_t   fun);
+                   ggml_custom3_op_f32_t   fun),
+        "use ggml_map_custom3_inplace instead");
+
+    // custom operators v2
+
+    typedef void (*ggml_custom1_op_t)(struct ggml_tensor * dst , const struct ggml_tensor * a, int ith, int nth, void * userdata);
+    typedef void (*ggml_custom2_op_t)(struct ggml_tensor * dst , const struct ggml_tensor * a, const struct ggml_tensor * b, int ith, int nth, void * userdata);
+    typedef void (*ggml_custom3_op_t)(struct ggml_tensor * dst , const struct ggml_tensor * a, const struct ggml_tensor * b, const struct ggml_tensor * c, int ith, int nth, void * userdata);
+
+    #define GGML_N_TASKS_MAX -1
+
+    GGML_API struct ggml_tensor * ggml_map_custom1(
+            struct ggml_context   * ctx,
+            struct ggml_tensor    * a,
+            ggml_custom1_op_t       fun,
+            int                     n_tasks,
+            void                  * userdata);
+
+    GGML_API struct ggml_tensor * ggml_map_custom1_inplace(
+            struct ggml_context   * ctx,
+            struct ggml_tensor    * a,
+            ggml_custom1_op_t       fun,
+            int                     n_tasks,
+            void                  * userdata);
+
+    GGML_API struct ggml_tensor * ggml_map_custom2(
+            struct ggml_context   * ctx,
+            struct ggml_tensor    * a,
+            struct ggml_tensor    * b,
+            ggml_custom2_op_t       fun,
+            int                     n_tasks,
+            void                  * userdata);
+
+    GGML_API struct ggml_tensor * ggml_map_custom2_inplace(
+            struct ggml_context   * ctx,
+            struct ggml_tensor    * a,
+            struct ggml_tensor    * b,
+            ggml_custom2_op_t       fun,
+            int                     n_tasks,
+            void                  * userdata);
+
+    GGML_API struct ggml_tensor * ggml_map_custom3(
+            struct ggml_context   * ctx,
+            struct ggml_tensor    * a,
+            struct ggml_tensor    * b,
+            struct ggml_tensor    * c,
+            ggml_custom3_op_t       fun,
+            int                     n_tasks,
+            void                  * userdata);
+
+    GGML_API struct ggml_tensor * ggml_map_custom3_inplace(
+            struct ggml_context   * ctx,
+            struct ggml_tensor    * a,
+            struct ggml_tensor    * b,
+            struct ggml_tensor    * c,
+            ggml_custom3_op_t       fun,
+            int                     n_tasks,
+            void                  * userdata);
 
     // loss function
 
@@ -1290,15 +1609,28 @@ extern "C" {
 
     GGML_API void ggml_set_param(
             struct ggml_context * ctx,
-            struct ggml_tensor * tensor);
+            struct ggml_tensor  * tensor);
+
 
     GGML_API void ggml_build_forward_expand(struct ggml_cgraph * cgraph, struct ggml_tensor * tensor);
 
     GGML_API struct ggml_cgraph ggml_build_forward (struct ggml_tensor * tensor);
     GGML_API struct ggml_cgraph ggml_build_backward(struct ggml_context * ctx, struct ggml_cgraph * gf, bool keep);
 
-    GGML_API void ggml_graph_compute(struct ggml_context * ctx, struct ggml_cgraph * cgraph);
-    GGML_API void ggml_graph_reset  (struct ggml_cgraph * cgraph);
+    // graph allocation in a context
+    GGML_API struct ggml_cgraph * ggml_new_graph        (struct ggml_context * ctx);
+    GGML_API struct ggml_cgraph * ggml_build_forward_ctx(struct ggml_context * ctx, struct ggml_tensor * tensor);
+    GGML_API size_t ggml_graph_overhead(void);
+
+    // ggml_graph_plan() has to be called before ggml_graph_compute()
+    // when plan.work_size > 0, caller must allocate memory for plan.work_data
+    GGML_API struct ggml_cplan ggml_graph_plan   (struct ggml_cgraph * cgraph, int n_threads /*= GGML_DEFAULT_N_THREADS*/);
+    GGML_API               int ggml_graph_compute(struct ggml_cgraph * cgraph, struct ggml_cplan * cplan);
+    GGML_API              void ggml_graph_reset  (struct ggml_cgraph * cgraph);
+
+    // same as ggml_graph_compute() but the work data is allocated as a part of the context
+    // note: the drawback of this API is that you must have ensured that the context has enough memory for the work data
+    GGML_API void ggml_graph_compute_with_ctx(struct ggml_context * ctx, struct ggml_cgraph * cgraph, int n_threads);
 
     GGML_API struct ggml_tensor * ggml_graph_get_tensor(struct ggml_cgraph * cgraph, const char * name);
 
@@ -1488,6 +1820,127 @@ extern "C" {
 
     GGML_API size_t ggml_quantize_chunk(enum ggml_type type, const float * src, void * dst, int start, int n, int64_t * hist);
 
+    //
+    // gguf
+    //
+
+    enum gguf_type {
+        GGUF_TYPE_UINT8   = 0,
+        GGUF_TYPE_INT8    = 1,
+        GGUF_TYPE_UINT16  = 2,
+        GGUF_TYPE_INT16   = 3,
+        GGUF_TYPE_UINT32  = 4,
+        GGUF_TYPE_INT32   = 5,
+        GGUF_TYPE_FLOAT32 = 6,
+        GGUF_TYPE_BOOL    = 7,
+        GGUF_TYPE_STRING  = 8,
+        GGUF_TYPE_ARRAY   = 9,
+        GGUF_TYPE_UINT64  = 10,
+        GGUF_TYPE_INT64   = 11,
+        GGUF_TYPE_FLOAT64 = 12,
+        GGUF_TYPE_COUNT,       // marks the end of the enum
+    };
+
+    struct gguf_context;
+
+    struct gguf_init_params {
+        bool no_alloc;
+
+        // if not NULL, create a ggml_context and allocate the tensor data in it
+        struct ggml_context ** ctx;
+    };
+
+    GGML_API struct gguf_context * gguf_init_empty(void);
+    GGML_API struct gguf_context * gguf_init_from_file(const char * fname, struct gguf_init_params params);
+    //GGML_API struct gguf_context * gguf_init_from_buffer(..);
+
+    GGML_API void gguf_free(struct gguf_context * ctx);
+
+    GGML_API const char * gguf_type_name(enum gguf_type type);
+
+    GGML_API int    gguf_get_version    (struct gguf_context * ctx);
+    GGML_API size_t gguf_get_alignment  (struct gguf_context * ctx);
+    GGML_API size_t gguf_get_data_offset(struct gguf_context * ctx);
+    GGML_API void * gguf_get_data       (struct gguf_context * ctx);
+
+    GGML_API int          gguf_get_n_kv(struct gguf_context * ctx);
+    GGML_API int          gguf_find_key(struct gguf_context * ctx, const char * key);
+    GGML_API const char * gguf_get_key (struct gguf_context * ctx, int i);
+
+    GGML_API enum gguf_type gguf_get_kv_type (struct gguf_context * ctx, int i);
+    GGML_API enum gguf_type gguf_get_arr_type(struct gguf_context * ctx, int i);
+
+    // results are undefined if the wrong type is used for the key
+    GGML_API uint8_t      gguf_get_val_u8  (struct gguf_context * ctx, int i);
+    GGML_API int8_t       gguf_get_val_i8  (struct gguf_context * ctx, int i);
+    GGML_API uint16_t     gguf_get_val_u16 (struct gguf_context * ctx, int i);
+    GGML_API int16_t      gguf_get_val_i16 (struct gguf_context * ctx, int i);
+    GGML_API uint32_t     gguf_get_val_u32 (struct gguf_context * ctx, int i);
+    GGML_API int32_t      gguf_get_val_i32 (struct gguf_context * ctx, int i);
+    GGML_API float        gguf_get_val_f32 (struct gguf_context * ctx, int i);
+    GGML_API uint64_t     gguf_get_val_u64 (struct gguf_context * ctx, int i);
+    GGML_API int64_t      gguf_get_val_i64 (struct gguf_context * ctx, int i);
+    GGML_API double       gguf_get_val_f64 (struct gguf_context * ctx, int i);
+    GGML_API bool         gguf_get_val_bool(struct gguf_context * ctx, int i);
+    GGML_API const char * gguf_get_val_str (struct gguf_context * ctx, int i);
+    GGML_API int          gguf_get_arr_n   (struct gguf_context * ctx, int i);
+    GGML_API const void * gguf_get_arr_data(struct gguf_context * ctx, int i);
+    GGML_API const char * gguf_get_arr_str (struct gguf_context * ctx, int key_id, int i);
+
+    GGML_API int    gguf_get_n_tensors    (struct gguf_context * ctx);
+    GGML_API int    gguf_find_tensor      (struct gguf_context * ctx, const char * name);
+    GGML_API size_t gguf_get_tensor_offset(struct gguf_context * ctx, int i);
+    GGML_API char * gguf_get_tensor_name  (struct gguf_context * ctx, int i);
+
+    // overrides existing values or adds a new one
+    GGML_API void gguf_set_val_u8  (struct gguf_context * ctx, const char * key, uint8_t  val);
+    GGML_API void gguf_set_val_i8  (struct gguf_context * ctx, const char * key, int8_t   val);
+    GGML_API void gguf_set_val_u16 (struct gguf_context * ctx, const char * key, uint16_t val);
+    GGML_API void gguf_set_val_i16 (struct gguf_context * ctx, const char * key, int16_t  val);
+    GGML_API void gguf_set_val_u32 (struct gguf_context * ctx, const char * key, uint32_t val);
+    GGML_API void gguf_set_val_i32 (struct gguf_context * ctx, const char * key, int32_t  val);
+    GGML_API void gguf_set_val_f32 (struct gguf_context * ctx, const char * key, float    val);
+    GGML_API void gguf_set_val_u64 (struct gguf_context * ctx, const char * key, uint64_t val);
+    GGML_API void gguf_set_val_i64 (struct gguf_context * ctx, const char * key, int64_t  val);
+    GGML_API void gguf_set_val_f64 (struct gguf_context * ctx, const char * key, double   val);
+    GGML_API void gguf_set_val_bool(struct gguf_context * ctx, const char * key, bool     val);
+    GGML_API void gguf_set_val_str (struct gguf_context * ctx, const char * key, const char * val);
+    GGML_API void gguf_set_arr_data(struct gguf_context * ctx, const char * key, enum gguf_type type, const void * data, int n);
+    GGML_API void gguf_set_arr_str (struct gguf_context * ctx, const char * key, const char ** data, int n);
+
+    // set or add KV pairs from another context
+    GGML_API void gguf_set_kv(struct gguf_context * ctx, struct gguf_context * src);
+
+    // manage tensor info
+    GGML_API void gguf_add_tensor(struct gguf_context * ctx, const struct ggml_tensor * tensor);
+    GGML_API void gguf_set_tensor_type(struct gguf_context * ctx, const char * name, enum ggml_type type);
+    GGML_API void gguf_set_tensor_data(struct gguf_context * ctx, const char * name, const void * data, size_t size);
+
+    // writing gguf files can be done in 2 ways:
+    //
+    // - write the entire gguf_context to a binary file in a single pass:
+    //
+    //   gguf_write_to_file(ctx, fname);
+    //
+    // - first prepare a file with a placeholder for the meta data, write the tensor data, then write the meta data:
+    //
+    //   FILE * f = fopen(fname, "wb");
+    //   fseek(f, gguf_get_meta_size(ctx), SEEK_SET);
+    //   fwrite(f, ...);
+    //   void * data = gguf_meta_get_meta_data(ctx);
+    //   fseek(f, 0, SEEK_SET);
+    //   fwrite(f, data, gguf_get_meta_size(ctx));
+    //   free(data);
+    //   fclose(f);
+    //
+
+    // write the entire context to a binary file
+    GGML_API void gguf_write_to_file(struct gguf_context * ctx, const char * fname, bool only_meta);
+
+    // get the size in bytes of the meta data (header, kv pairs, tensor info) including padding
+    GGML_API size_t gguf_get_meta_size(struct gguf_context * ctx);
+    GGML_API void   gguf_get_meta_data(struct gguf_context * ctx, void * data);
+
     //
     // system info
     //
@@ -1516,25 +1969,28 @@ extern "C" {
     //
 
 #ifdef  __cplusplus
-    // restrict not standard in C++
+// restrict not standard in C++
 #define GGML_RESTRICT
 #else
 #define GGML_RESTRICT restrict
 #endif
-    typedef void (*dequantize_row_q_t)(const void * GGML_RESTRICT x, float * GGML_RESTRICT y, int k);
-    typedef void (*quantize_row_q_t)  (const float * GGML_RESTRICT x, void * GGML_RESTRICT y, int k);
-    typedef void (*vec_dot_q_t)       (const int n, float * GGML_RESTRICT s, const void * GGML_RESTRICT x, const void * GGML_RESTRICT y);
+    typedef void (*ggml_to_float_t)  (const void  * GGML_RESTRICT x, float * GGML_RESTRICT y, int k);
+    typedef void (*ggml_from_float_t)(const float * GGML_RESTRICT x, void  * GGML_RESTRICT y, int k);
+    typedef void (*ggml_vec_dot_t)   (const int n, float * GGML_RESTRICT s, const void * GGML_RESTRICT x, const void * GGML_RESTRICT y);
 
     typedef struct {
-        dequantize_row_q_t dequantize_row_q;
-        quantize_row_q_t   quantize_row_q;
-        quantize_row_q_t   quantize_row_q_reference;
-        quantize_row_q_t   quantize_row_q_dot;
-        vec_dot_q_t        vec_dot_q;
-        enum ggml_type     vec_dot_type;
-    } quantize_fns_t;
-
-    quantize_fns_t ggml_internal_get_quantize_fn(size_t i);
+        const char      * type_name;
+        int               blck_size;
+        size_t            type_size;
+        bool              is_quantized;
+        ggml_to_float_t   to_float;
+        ggml_from_float_t from_float;
+        ggml_from_float_t from_float_reference;
+        ggml_vec_dot_t    vec_dot;
+        enum ggml_type    vec_dot_type;
+    } ggml_type_traits_t;
+
+    ggml_type_traits_t ggml_internal_get_type_traits(enum ggml_type type);
 
 #ifdef  __cplusplus
 }
index 1f4f8a06121f04ceaff42bdbf007a89f4572bdfd..3192fbc640425b7d2714cc587971cb45e1d7e34c 100644 (file)
@@ -441,6 +441,7 @@ struct whisper_hparams {
     int32_t n_text_layer  = 4;
     int32_t n_mels        = 80;
     int32_t ftype         = 1;
+    float   eps           = 1e-5f;
 };
 
 // audio encoding layer
@@ -1578,7 +1579,7 @@ static bool whisper_encode_internal(
             {
                 wstate.use_buf(ctx0, 0);
 
-                cur = ggml_norm(ctx0, inpL);
+                cur = ggml_norm(ctx0, inpL, hparams.eps);
 
                 // cur = ln_0_w*cur + ln_0_b
                 cur = ggml_add(ctx0,
@@ -1725,7 +1726,7 @@ static bool whisper_encode_internal(
                 {
                     wstate.use_buf(ctx0, 0);
 
-                    cur = ggml_norm(ctx0, inpFF);
+                    cur = ggml_norm(ctx0, inpFF, hparams.eps);
 
                     wstate.use_buf(ctx0, 1);
 
@@ -1788,7 +1789,7 @@ static bool whisper_encode_internal(
         {
             wstate.use_buf(ctx0, 0);
 
-            cur = ggml_norm(ctx0, cur);
+            cur = ggml_norm(ctx0, cur, hparams.eps);
 
             wstate.use_buf(ctx0, 1);
 
@@ -1805,10 +1806,9 @@ static bool whisper_encode_internal(
         // run the computation
         {
             struct ggml_cgraph gf = {};
-            gf.n_threads = n_threads;
 
-            ggml_build_forward_expand(&gf, cur);
-            ggml_graph_compute(ctx0, &gf);
+            ggml_build_forward_expand  (&gf, cur);
+            ggml_graph_compute_with_ctx(ctx0, &gf, n_threads);
 
             //ggml_graph_print(&gf);
         }
@@ -1851,12 +1851,11 @@ static bool whisper_encode_internal(
     // pre-compute cross-attention memory
     {
         struct ggml_cgraph gf = {};
-        gf.n_threads = n_threads;
 
         // TODO: hack to disconnect the encoded features from the previous graph
         cur->op = GGML_OP_NONE;
-        cur->src0 = nullptr;
-        cur->src1 = nullptr;
+        cur->src[0] = nullptr;
+        cur->src[1] = nullptr;
 
         for (int il = 0; il < model.hparams.n_text_layer; ++il) {
             auto& layer = model.layers_decoder[il];
@@ -1894,7 +1893,7 @@ static bool whisper_encode_internal(
             ggml_build_forward_expand(&gf, ggml_cpy(ctx0, Vcross, v));
         }
 
-        ggml_graph_compute(ctx0, &gf);
+        ggml_graph_compute_with_ctx(ctx0, &gf, n_threads);
         //ggml_graph_print(&gf);
     }
 
@@ -1965,7 +1964,6 @@ static bool whisper_decode_internal(
     struct ggml_context * ctx0 = ggml_init(params);
 
     struct ggml_cgraph gf = {};
-    gf.n_threads = n_threads;
 
     struct ggml_tensor * embd = ggml_new_tensor_1d(ctx0, GGML_TYPE_I32, N);
     memcpy(embd->data, tokens, N*ggml_element_size(embd));
@@ -1992,7 +1990,7 @@ static bool whisper_decode_internal(
         {
             wstate.use_buf(ctx0, 0);
 
-            cur = ggml_norm(ctx0, inpL);
+            cur = ggml_norm(ctx0, inpL, hparams.eps);
 
             // cur = ln_0_w*cur + ln_0_b
             cur = ggml_add(ctx0,
@@ -2119,7 +2117,7 @@ static bool whisper_decode_internal(
         {
             wstate.use_buf(ctx0, 0);
 
-            cur = ggml_norm(ctx0, inpCA); // note: we use inpCA here
+            cur = ggml_norm(ctx0, inpCA, hparams.eps); // note: we use inpCA here
 
             // cur = ln_0_w*cur + ln_0_b
             cur = ggml_add(ctx0,
@@ -2229,7 +2227,7 @@ static bool whisper_decode_internal(
             {
                 wstate.use_buf(ctx0, 0);
 
-                cur = ggml_norm(ctx0, inpFF);
+                cur = ggml_norm(ctx0, inpFF, hparams.eps);
 
                 wstate.use_buf(ctx0, 1);
 
@@ -2284,7 +2282,7 @@ static bool whisper_decode_internal(
     {
         wstate.use_buf(ctx0, 0);
 
-        cur = ggml_norm(ctx0, cur);
+        cur = ggml_norm(ctx0, cur, hparams.eps);
 
         wstate.use_buf(ctx0, 1);
 
@@ -2308,8 +2306,8 @@ static bool whisper_decode_internal(
 
     // run the computation
     {
-        ggml_build_forward_expand(&gf, logits);
-        ggml_graph_compute       (ctx0, &gf);
+        ggml_build_forward_expand  (&gf, logits);
+        ggml_graph_compute_with_ctx(ctx0, &gf, n_threads);
     }
 
     // extract logits for all N tokens
@@ -2358,7 +2356,7 @@ static std::string to_timestamp(int64_t t, bool comma = false) {
 static float sin_vals[SIN_COS_N_COUNT];
 static float cos_vals[SIN_COS_N_COUNT];
 
-// In FFT, we frequently use sine and cosine operations with the same values. 
+// In FFT, we frequently use sine and cosine operations with the same values.
 // We can use precalculated values to speed up the process.
 static void fill_sin_cos_table() {
     static bool is_filled = false;
@@ -5165,17 +5163,15 @@ WHISPER_API const char * whisper_bench_ggml_mul_mat_str(int n_threads) {
 
             struct ggml_cgraph gf = ggml_build_forward(c);
 
-            gf.n_threads = n_threads;
-
             double tsum = 0.0;
 
             // heat-up
-            ggml_graph_compute(ctx0, &gf);
+            ggml_graph_compute_with_ctx(ctx0, &gf, n_threads);
 
             for (int i = 0; i < n_max; ++i) {
                 const int64_t t0 = ggml_time_us();
 
-                ggml_graph_compute(ctx0, &gf);
+                ggml_graph_compute_with_ctx(ctx0, &gf, n_threads);
 
                 const int64_t t1 = ggml_time_us();