diff --git a/.npmrc b/.npmrc new file mode 100644 index 000000000..93095a163 --- /dev/null +++ b/.npmrc @@ -0,0 +1,2 @@ +//npm.pkg.github.com/:_authToken=${LINEDOT_NPM_TOKEN} +@linedotai:registry=https://npm.pkg.github.com diff --git a/LINEDOT_CHANGES.md b/LINEDOT_CHANGES.md new file mode 100644 index 000000000..6b12717c5 --- /dev/null +++ b/LINEDOT_CHANGES.md @@ -0,0 +1,122 @@ +# LineDot Changes to @linedotai/js-to-ppt + +This document tracks all modifications made to the forked pptxgenjs library for LineDot's PowerPoint generation needs. + +## Fork Information + +- **Original Library**: [PptxGenJS](https://github.com/gitbrent/PptxGenJS) by Brent Ely +- **Fork Name**: `@linedotai/js-to-ppt` +- **Base Version**: v4.0.1 (forked from upstream) +- **Current Version**: 1.0.5 + +--- + +## Version History + +### v1.0.5 (Unreleased) + +**Bug Fix: Bold Inline Text Causing Line Breaks** + +#### Problem +When text contained inline bold formatting (e.g., "We employ **FFD bin packing** to concatenate"), PowerPoint would render unwanted line breaks after bold spans. The text would break like: +``` +We employ FFD bin packing +to concatenate input vectors +``` +Instead of rendering as a continuous line. + +#### Root Cause +In `src/gen-xml.ts`, the `genXmlTextBody()` function was generating `` (paragraph properties) elements for **every text run** within a paragraph. According to OOXML specification, `` should only appear **once** per `` element, immediately after the opening tag. + +When multiple `` elements were present (one for normal text, one for bold text), PowerPoint interpreted each as starting a new paragraph-like structure, causing visual line breaks. + +#### Fix +Modified `src/gen-xml.ts` (around line 1377) to only generate `` for the first text run (`idx === 0`) in each paragraph: + +```typescript +// BEFORE (buggy): +paragraphPropXml = genXmlParagraphProperties(textObj, false) +strSlideXml += paragraphPropXml.replace('', '') + +// AFTER (fixed): +// IMPORTANT: Only add paragraph properties () for the FIRST text run in a paragraph. +// In OOXML, should only appear once per , right after the opening tag. +// Adding it for every text run causes rendering issues (like unwanted line breaks after bold text). +if (idx === 0) { + paragraphPropXml = genXmlParagraphProperties(textObj, false) + strSlideXml += paragraphPropXml.replace('', '') +} +``` + +#### Files Changed +- `src/gen-xml.ts` - Added `idx === 0` check for paragraph properties +- `dist/pptxgen.cjs.js` - Rebuilt bundle +- `dist/pptxgen.es.js` - Rebuilt bundle +- `package.json` - Version bump to 1.0.5 + +--- + +### v1.0.4 + +- Version alignment release + +### v1.0.3 + +- Shrink-to-fit functionality improvements + +### v1.0.2 + +- Chart rendering fix for Keynote compatibility + +### v1.0.1 + +- Initial LineDot fork from pptxgenjs v4.0.1 +- Package renamed to `@linedotai/js-to-ppt` +- Published to GitHub Package Registry + +--- + +## Consumer-Side Companion Fix + +Note: The library fix alone may not be sufficient. The consuming code in `linedot-backend` must also ensure consistent paragraph properties across all text spans in a block. + +In `linedot-backend/src/ppt/utils/pptx-generator.ts`, ensure the `align` property is set consistently on **all spans** within the same block, not just the first one: + +```typescript +// Set align on ALL spans to prevent pptxGenJS from detecting property changes +spans.forEach(span => { + if (!span.options.align && block.align) { + span.options.align = block.align; + } +}); +``` + +This prevents pptxGenJS from splitting text runs when it detects differing properties between spans. + +--- + +## Build Instructions + +After making changes to source files: + +```bash +cd js-to-ppt +npm run build +``` + +To use in linedot-backend during development: + +```bash +cd js-to-ppt +npm link + +cd ../linedot-backend +npm link @linedotai/js-to-ppt +``` + +--- + +## Related Issues + +- Internal: Bold text line break issue in PPTX generation +- OOXML Spec: `` should only appear once per `` element diff --git a/demos/browser/js/pptxgen.bundle.js b/demos/browser/js/pptxgen.bundle.js index c20c94450..ff3e51123 100644 --- a/demos/browser/js/pptxgen.bundle.js +++ b/demos/browser/js/pptxgen.bundle.js @@ -1,6 +1,6 @@ -/* PptxGenJS 4.0.1 @ 2025-06-25T23:35:35.101Z */ -!function(e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).JSZip=e()}(function(){return function a(n,o,i){function s(t,e){if(!o[t]){if(!n[t]){var r="function"==typeof require&&require;if(!e&&r)return r(t,!0);if(A)return A(t,!0);e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}r=o[t]={exports:{}};n[t][0].call(r.exports,function(e){return s(n[t][1][e]||e)},r,r.exports,a,n,o,i)}return o[t].exports}for(var A="function"==typeof require&&require,e=0;e>4,o=1>6:64,i=2>2)+u.charAt(n)+u.charAt(o)+u.charAt(i));return s.join("")},r.decode=function(e){var t,r,a,n,o,i=0,s=0,A="data:";if(e.substr(0,A.length)===A)throw new Error("Invalid base64 input, it looks like a data url.");var l,A=3*(e=e.replace(/[^A-Za-z0-9+/=]/g,"")).length/4;if(e.charAt(e.length-1)===u.charAt(64)&&A--,e.charAt(e.length-2)===u.charAt(64)&&A--,A%1!=0)throw new Error("Invalid base64 input, bad content length.");for(l=new(c.uint8array?Uint8Array:Array)(0|A);i>4,r=(15&n)<<4|(n=u.indexOf(e.charAt(i++)))>>2,a=(3&n)<<6|(o=u.indexOf(e.charAt(i++))),l[s++]=t,64!==n&&(l[s++]=r),64!==o&&(l[s++]=a);return l}},{"./support":30,"./utils":32}],2:[function(e,t,r){var a=e("./external"),n=e("./stream/DataWorker"),o=e("./stream/Crc32Probe"),i=e("./stream/DataLengthProbe");function s(e,t,r,a,n){this.compressedSize=e,this.uncompressedSize=t,this.crc32=r,this.compression=a,this.compressedContent=n}s.prototype={getContentWorker:function(){var e=new n(a.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new i("data_length")),t=this;return e.on("end",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),e},getCompressedWorker:function(){return new n(a.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},s.createWorkerFrom=function(e,t,r){return e.pipe(new o).pipe(new i("uncompressedSize")).pipe(t.compressWorker(r)).pipe(new i("compressedSize")).withStreamInfo("compression",t)},t.exports=s},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(e,t,r){var a=e("./stream/GenericWorker");r.STORE={magic:"\0\0",compressWorker:function(){return new a("STORE compression")},uncompressWorker:function(){return new a("STORE decompression")}},r.DEFLATE=e("./flate")},{"./flate":7,"./stream/GenericWorker":28}],4:[function(e,t,r){var a=e("./utils"),i=(()=>{for(var e=[],t=0;t<256;t++){for(var r=t,a=0;a<8;a++)r=1&r?3988292384^r>>>1:r>>>1;e[t]=r}return e})();t.exports=function(e,t){return void 0!==e&&e.length?("string"!==a.getTypeOf(e)?(e,t,r)=>{var a=i,n=0+r;e^=-1;for(var o=0;o>>8^a[255&(e^t[o])];return-1^e}:(e,t,r)=>{var a=i,n=0+r;e^=-1;for(var o=0;o>>8^a[255&(e^t.charCodeAt(o))];return-1^e})(0|t,e,e.length):0}},{"./utils":32}],5:[function(e,t,r){r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],6:[function(e,t,r){e="undefined"!=typeof Promise?Promise:e("lie");t.exports={Promise:e}},{lie:37}],7:[function(e,t,r){var a="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array,n=e("pako"),o=e("./utils"),i=e("./stream/GenericWorker"),s=a?"uint8array":"array";function A(e,t){i.call(this,"FlateWorker/"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}r.magic="\b\0",o.inherits(A,i),A.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(o.transformTo(s,e.data),!1)},A.prototype.flush=function(){i.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},A.prototype.cleanUp=function(){i.prototype.cleanUp.call(this),this._pako=null},A.prototype._createPako=function(){this._pako=new n[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var t=this;this._pako.onData=function(e){t.push({data:e,meta:t.meta})}},r.compressWorker=function(e){return new A("Deflate",e)},r.uncompressWorker=function(){return new A("Inflate",{})}},{"./stream/GenericWorker":28,"./utils":32,pako:38}],8:[function(e,t,r){function v(e,t){for(var r="",a=0;a>>=8;return r}function a(e,t,r,a,n,o){var i=e.file,s=e.compression,A=o!==b.utf8encode,l=y.transformTo("string",o(i.name)),c=y.transformTo("string",b.utf8encode(i.name)),p=i.comment,o=y.transformTo("string",o(p)),u=y.transformTo("string",b.utf8encode(p)),f=c.length!==i.name.length,p=u.length!==p.length,d="",h=i.dir,g=i.date,m={crc32:0,compressedSize:0,uncompressedSize:0},r=(t&&!r||(m.crc32=e.crc32,m.compressedSize=e.compressedSize,m.uncompressedSize=e.uncompressedSize),0),e=(t&&(r|=8),A||!f&&!p||(r|=2048),0),t=0,g=(h&&(e|=16),"UNIX"===n?(t=798,e|=(65535&((A=i.unixPermissions)?A:h?16893:33204))<<16):(t=20,e|=63&(i.dosPermissions||0)),n=g.getUTCHours(),n=(n=((n<<=6)|g.getUTCMinutes())<<5)|g.getUTCSeconds()/2,A=g.getUTCFullYear()-1980,A=(A=((A<<=4)|g.getUTCMonth()+1)<<5)|g.getUTCDate(),f&&(h=v(1,1)+v(w(l),4)+c,d+="up"+v(h.length,2)+h),p&&(i=v(1,1)+v(w(o),4)+u,d+="uc"+v(i.length,2)+i),""),g=(g=(g=(g=(g=(g=(g=(g=(g=(g+="\n\0")+v(r,2))+s.magic)+v(n,2))+v(A,2))+v(m.crc32,4))+v(m.compressedSize,4))+v(m.uncompressedSize,4))+v(l.length,2))+v(d.length,2);return{fileRecord:x.LOCAL_FILE_HEADER+g+l+d,dirRecord:x.CENTRAL_FILE_HEADER+v(t,2)+g+v(o.length,2)+"\0\0\0\0"+v(e,4)+v(a,4)+l+d+o}}var y=e("../utils"),n=e("../stream/GenericWorker"),b=e("../utf8"),w=e("../crc32"),x=e("../signature");function o(e,t,r,a){n.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=r,this.encodeFileName=a,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}y.inherits(o,n),o.prototype.push=function(e){var t=e.meta.percent||0,r=this.entriesCount,a=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,n.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:r?(t+100*(r-a-1))/r:100}}))},o.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;t?(e=a(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName),this.push({data:e.fileRecord,meta:{percent:0}})):this.accumulate=!0},o.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,r=a(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(r.dirRecord),t)this.push({data:(t=e,x.DATA_DESCRIPTOR+v(t.crc32,4)+v(t.compressedSize,4)+v(t.uncompressedSize,4)),meta:{percent:100}});else for(this.push({data:r.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},o.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t(n=y.transformTo("string",n(a)),x.CENTRAL_DIRECTORY_END+"\0\0\0\0"+v(e,2)+v(e,2)+v(t,4)+v(r,4)+v(n.length,2)+n))(this.dirRecords.length,r,e,this.zipComment,this.encodeFileName);this.push({data:r,meta:{percent:100}})},o.prototype.prepareNextSource=function(){this.previous=this._sources.shift(),this.openedSource(this.previous.streamInfo),this.isPaused?this.previous.pause():this.previous.resume()},o.prototype.registerPrevious=function(e){this._sources.push(e);var t=this;return e.on("data",function(e){t.processChunk(e)}),e.on("end",function(){t.closedSource(t.previous.streamInfo),t._sources.length?t.prepareNextSource():t.end()}),e.on("error",function(e){t.error(e)}),this},o.prototype.resume=function(){return!!n.prototype.resume.call(this)&&(!this.previous&&this._sources.length?(this.prepareNextSource(),!0):this.previous||this._sources.length||this.generatedError?void 0:(this.end(),!0))},o.prototype.error=function(e){var t=this._sources;if(!n.prototype.error.call(this,e))return!1;for(var r=0;r{if(t=l[e=e||t])return t;throw new Error(e+" is not a valid compression method !")})(t.options.compression,i.compression),a=t.options.compressionOptions||i.compressionOptions||{},n=t.dir,o=t.date;t._compressWorker(r,a).withStreamInfo("file",{name:e,dir:n,date:o,comment:t.comment||"",unixPermissions:t.unixPermissions,dosPermissions:t.dosPermissions}).pipe(s)}),s.entriesCount=A}catch(e){s.error(e)}return s}},{"../compressions":3,"./ZipFileWorker":8}],10:[function(e,t,r){function a(){if(!(this instanceof a))return new a;if(arguments.length)throw new Error("The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.");this.files=Object.create(null),this.comment=null,this.root="",this.clone=function(){var e,t=new a;for(e in this)"function"!=typeof this[e]&&(t[e]=this[e]);return t}}(a.prototype=e("./object")).loadAsync=e("./load"),a.support=e("./support"),a.defaults=e("./defaults"),a.version="3.10.1",a.loadAsync=function(e,t){return(new a).loadAsync(e,t)},a.external=e("./external"),t.exports=a},{"./defaults":5,"./external":6,"./load":11,"./object":15,"./support":30}],11:[function(e,t,r){var A=e("./utils"),n=e("./external"),a=e("./utf8"),o=e("./zipEntries"),l=e("./stream/Crc32Probe"),c=e("./nodejsUtils");t.exports=function(e,i){var s=this;return i=A.extend(i||{},{base64:!1,checkCRC32:!1,optimizedBinaryString:!1,createFolders:!1,decodeFileName:a.utf8decode}),c.isNode&&c.isStream(e)?n.Promise.reject(new Error("JSZip can't accept a stream when loading a zip file.")):A.prepareContent("the loaded zip file",e,!0,i.optimizedBinaryString,i.base64).then(function(e){var t=new o(i);return t.load(e),t}).then(function(e){var t=[n.Promise.resolve(e)],r=e.files;if(i.checkCRC32)for(var a=0;anew n.Promise(function(e,t){var r=a.decompressed.getContentWorker().pipe(new l);r.on("error",function(e){t(e)}).on("end",function(){r.streamInfo.crc32!==a.decompressed.crc32?t(new Error("Corrupted zip : CRC32 mismatch")):e()}).resume()}))(r[a]));return n.Promise.all(t)}).then(function(e){for(var e=e.shift(),t=e.files,r=0;r=this.index;t--)r=(r<<8)+this.byteAt(t);return this.index+=e,r},readString:function(e){return a.transformTo("string",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=n},{"../utils":32}],19:[function(e,t,r){var a=e("./Uint8ArrayReader");function n(e){a.call(this,e)}e("../utils").inherits(n,a),n.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=n},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(e,t,r){var a=e("./DataReader");function n(e){a.call(this,e)}e("../utils").inherits(n,a),n.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},n.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},n.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},n.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=n},{"../utils":32,"./DataReader":18}],21:[function(e,t,r){var a=e("./ArrayReader");function n(e){a.call(this,e)}e("../utils").inherits(n,a),n.prototype.readData=function(e){var t;return this.checkOffset(e),0===e?new Uint8Array(0):(t=this.data.subarray(this.zero+this.index,this.zero+this.index+e),this.index+=e,t)},t.exports=n},{"../utils":32,"./ArrayReader":17}],22:[function(e,t,r){var a=e("../utils"),n=e("../support"),o=e("./ArrayReader"),i=e("./StringReader"),s=e("./NodeBufferReader"),A=e("./Uint8ArrayReader");t.exports=function(e){var t=a.getTypeOf(e);return a.checkSupport(t),"string"!==t||n.uint8array?"nodebuffer"===t?new s(e):n.uint8array?new A(a.transformTo("uint8array",e)):new o(a.transformTo("array",e)):new i(e)}},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(e,t,r){r.LOCAL_FILE_HEADER="PK",r.CENTRAL_FILE_HEADER="PK",r.CENTRAL_DIRECTORY_END="PK",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK",r.ZIP64_CENTRAL_DIRECTORY_END="PK",r.DATA_DESCRIPTOR="PK\b"},{}],24:[function(e,t,r){var a=e("./GenericWorker"),n=e("../utils");function o(e){a.call(this,"ConvertWorker to "+e),this.destType=e}n.inherits(o,a),o.prototype.processChunk=function(e){this.push({data:n.transformTo(this.destType,e.data),meta:e.meta})},t.exports=o},{"../utils":32,"./GenericWorker":28}],25:[function(e,t,r){var a=e("./GenericWorker"),n=e("../crc32");function o(){a.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}e("../utils").inherits(o,a),o.prototype.processChunk=function(e){this.streamInfo.crc32=n(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=o},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(e,t,r){var a=e("../utils"),n=e("./GenericWorker");function o(e){n.call(this,"DataLengthProbe for "+e),this.propName=e,this.withStreamInfo(e,0)}a.inherits(o,n),o.prototype.processChunk=function(e){var t;e&&(t=this.streamInfo[this.propName]||0,this.streamInfo[this.propName]=t+e.data.length),n.prototype.processChunk.call(this,e)},t.exports=o},{"../utils":32,"./GenericWorker":28}],27:[function(e,t,r){var a=e("../utils"),n=e("./GenericWorker");function o(e){n.call(this,"DataWorker");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=a.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}a.inherits(o,n),o.prototype.cleanUp=function(){n.prototype.cleanUp.call(this),this.data=null},o.prototype.resume=function(){return!!n.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,a.delay(this._tickAndRepeat,[],this)),!0)},o.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished)||(a.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0)},o.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case"string":e=this.data.substring(this.index,t);break;case"uint8array":e=this.data.subarray(this.index,t);break;case"array":case"nodebuffer":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=o},{"../utils":32,"./GenericWorker":28}],28:[function(e,t,r){function a(e){this.name=e||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}a.prototype={push:function(e){this.emit("data",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit("error",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit("error",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var r=0;r "+e:e}},t.exports=a},{}],29:[function(e,t,r){var A=e("../utils"),n=e("./ConvertWorker"),o=e("./GenericWorker"),l=e("../base64"),a=e("../support"),i=e("../external"),s=null;if(a.nodestream)try{s=e("../nodejs/NodejsStreamOutputAdapter")}catch(e){}function c(e,s){return new i.Promise(function(t,r){var a=[],n=e._internalType,o=e._outputType,i=e._mimeType;e.on("data",function(e,t){a.push(e),s&&s(t)}).on("error",function(e){a=[],r(e)}).on("end",function(){try{var e=((e,t,r)=>{switch(e){case"blob":return A.newBlob(A.transformTo("arraybuffer",t),r);case"base64":return l.encode(t);default:return A.transformTo(e,t)}})(o,((e,t)=>{for(var r=0,a=null,n=0,o=0;o>>6:(r<65536?t[n++]=224|r>>>12:(t[n++]=240|r>>>18,t[n++]=128|r>>>12&63),t[n++]=128|r>>>6&63),t[n++]=128|63&r);return t},n.utf8decode=function(e){if(l.nodebuffer)return A.transformTo("nodebuffer",e).toString("utf-8");for(var t,r,a,n=e=A.transformTo(l.uint8array?"uint8array":"array",e),o=n.length,i=new Array(2*o),s=t=0;s>10&1023,i[t++]=56320|1023&r)}return i.length!==t&&(i.subarray?i=i.subarray(0,t):i.length=t),A.applyFromCharCode(i)},A.inherits(o,r),o.prototype.processChunk=function(e){var t=A.transformTo(l.uint8array?"uint8array":"array",e.data),r=(this.leftOver&&this.leftOver.length&&(l.uint8array?(r=t,(t=new Uint8Array(r.length+this.leftOver.length)).set(this.leftOver,0),t.set(r,this.leftOver.length)):t=this.leftOver.concat(t),this.leftOver=null),((e,t)=>{for(var r=(t=(t=t||e.length)>e.length?e.length:t)-1;0<=r&&128==(192&e[r]);)r--;return!(r<0)&&0!==r&&r+p[e[r]]>t?r:t})(t)),a=t;r!==t.length&&(l.uint8array?(a=t.subarray(0,r),this.leftOver=t.subarray(r,t.length)):(a=t.slice(0,r),this.leftOver=t.slice(r,t.length))),this.push({data:n.utf8decode(a),meta:e.meta})},o.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:n.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},n.Utf8DecodeWorker=o,A.inherits(i,r),i.prototype.processChunk=function(e){this.push({data:n.utf8encode(e.data),meta:e.meta})},n.Utf8EncodeWorker=i},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(e,t,i){var s=e("./support"),A=e("./base64"),r=e("./nodejsUtils"),l=e("./external");function a(e){return e}function c(e,t){for(var r=0;r{try{return s.uint8array&&1===String.fromCharCode.apply(null,new Uint8Array(1)).length}catch(e){return!1}})(),nodebuffer:(()=>{try{return s.nodebuffer&&1===String.fromCharCode.apply(null,r.allocBuffer(1)).length}catch(e){return!1}})()}};function o(e){var t=65536,r=i.getTypeOf(e),a=!0;if("uint8array"===r?a=n.applyCanBeUsed.uint8array:"nodebuffer"===r&&(a=n.applyCanBeUsed.nodebuffer),a)for(;1{for(var t in A)if(Object.prototype.hasOwnProperty.call(A,t)&&A[t].magic===e)return A[t];return null})(this.compressionMethod)))throw new Error("Corrupted zip : compression "+n.pretty(this.compressionMethod)+" unknown (inner file : "+n.transformTo("string",this.fileName)+")");this.decompressed=new o(this.compressedSize,this.uncompressedSize,this.crc32,t,e.readData(this.compressedSize))},readCentralPart:function(e){this.versionMadeBy=e.readInt(2),e.skip(2),this.bitFlag=e.readInt(2),this.compressionMethod=e.readString(2),this.date=e.readDate(),this.crc32=e.readInt(4),this.compressedSize=e.readInt(4),this.uncompressedSize=e.readInt(4);var t=e.readInt(2);if(this.extraFieldsLength=e.readInt(2),this.fileCommentLength=e.readInt(2),this.diskNumberStart=e.readInt(2),this.internalFileAttributes=e.readInt(2),this.externalFileAttributes=e.readInt(4),this.localHeaderOffset=e.readInt(4),this.isEncrypted())throw new Error("Encrypted zip are not supported");e.skip(t),this.readExtraFields(e),this.parseZIP64ExtraField(e),this.fileComment=e.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var e=this.versionMadeBy>>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||"/"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){var e;this.extraFields[1]&&(e=a(this.extraFields[1].value),this.uncompressedSize===n.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===n.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===n.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===n.MAX_VALUE_32BITS)&&(this.diskNumberStart=e.readInt(4))},readExtraFields:function(e){var t,r,a,n=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4{r.resolve(e).then(function(e){o[t]=e,++i!==a||n||(n=!0,l.resolve(s,o))},function(e){n||(n=!0,l.reject(s,e))})})(e[t],t);return s},s.race=function(e){if("[object Array]"!==Object.prototype.toString.call(e))return this.reject(new TypeError("must be an array"));var t=e.length,r=!1;if(!t)return this.resolve([]);for(var a,n=-1,o=new this(A);++n>>6:(r<65536?t[n++]=224|r>>>12:(t[n++]=240|r>>>18,t[n++]=128|r>>>12&63),t[n++]=128|r>>>6&63),t[n++]=128|63&r);return t},r.buf2binstring=function(e){return c(e,e.length)},r.binstring2buf=function(e){for(var t=new A.Buf8(e.length),r=0,a=t.length;r>10&1023,i[r++]=56320|1023&a)}return c(i,r)},r.utf8border=function(e,t){for(var r=(t=(t=t||e.length)>e.length?e.length:t)-1;0<=r&&128==(192&e[r]);)r--;return!(r<0)&&0!==r&&r+l[e[r]]>t?r:t}},{"./common":41}],43:[function(e,t,r){t.exports=function(e,t,r,a){for(var n=65535&e|0,o=e>>>16&65535|0,i=0;0!==r;){for(r-=i=2e3{for(var e=[],t=0;t<256;t++){for(var r=t,a=0;a<8;a++)r=1&r?3988292384^r>>>1:r>>>1;e[t]=r}return e})();t.exports=function(e,t,r,a){var n=s,o=a+r;e^=-1;for(var i=a;i>>8^n[255&(e^t[i])];return-1^e}},{}],46:[function(e,R,t){var s,p=e("../utils/common"),A=e("./trees"),u=e("./adler32"),f=e("./crc32"),r=e("./messages"),l=0,c=0,d=-2,a=2,h=8,n=286,o=30,i=19,O=2*n+1,M=15,g=3,m=258,v=m+g+1,y=42,b=113;function w(e,t){return e.msg=r[t],t}function x(e){return(e<<1)-(4>>8&255,e.pending_buf[e.pending++]=255&t}function T(e,t){var r,a,n=e.max_chain_length,o=e.strstart,i=e.prev_length,s=e.nice_match,A=e.w_size-v>=2),e.lookaheadA&&0!=--n);return i<=e.lookahead?i:e.lookahead}function B(e){var t,r,a,n,o,i,s,A,l,c=e.w_size;do{if(A=e.window_size-e.lookahead-e.strstart,c+(c-v)<=e.strstart){for(p.arraySet(e.window,e.window,c,c,0),e.match_start-=c,e.strstart-=c,e.block_start-=c,t=r=e.hash_size;a=e.head[--t],e.head[t]=c<=a?a-c:0,--r;);for(t=r=c;a=e.prev[--t],e.prev[t]=c<=a?a-c:0,--r;);A+=c}if(0===e.strm.avail_in)break;if(i=e.window,s=e.strstart+e.lookahead,l=void 0,r=0===(l=(A=A)<(l=(o=e.strm).avail_in)?A:l)?0:(o.avail_in-=l,p.arraySet(i,o.input,o.next_in,l,s),1===o.state.wrap?o.adler=u(o.adler,i,l,s):2===o.state.wrap&&(o.adler=f(o.adler,i,l,s)),o.next_in+=l,o.total_in+=l,l),e.lookahead+=r,g<=e.lookahead+e.insert)for(n=e.strstart-e.insert,e.ins_h=e.window[n],e.ins_h=(e.ins_h<=g){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(B(e),0===e.lookahead&&t===l)return 1;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var a=e.block_start+r;if((0===e.strstart||e.strstart>=a)&&(e.lookahead=e.strstart-a,e.strstart=a,S(e,!1),0===e.strm.avail_out))return 1;if(e.w_size-v<=e.strstart-e.block_start&&(S(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(S(e,!0),0===e.strm.avail_out?3:4):(e.strstart>e.block_start&&(S(e,!1),e.strm.avail_out),1)}),new _(4,4,8,4,D),new _(4,5,16,8,D),new _(4,6,32,32,D),new _(4,4,16,16,k),new _(8,16,32,32,k),new _(8,16,128,128,k),new _(8,32,128,256,k),new _(32,128,258,1024,k),new _(32,258,258,4096,k)],t.deflateInit=function(e,t){return I(e,t,h,15,8,0)},t.deflateInit2=I,t.deflateReset=F,t.deflateResetKeep=N,t.deflateSetHeader=function(e,t){return!e||!e.state||2!==e.state.wrap?d:(e.state.gzhead=t,c)},t.deflate=function(e,t){var r,a,n,o;if(!e||!e.state||5>8&255),L(a,a.gzhead.time>>16&255),L(a,a.gzhead.time>>24&255),L(a,9===a.level?2:2<=a.strategy||a.level<2?4:0),L(a,255&a.gzhead.os),a.gzhead.extra&&a.gzhead.extra.length&&(L(a,255&a.gzhead.extra.length),L(a,a.gzhead.extra.length>>8&255)),a.gzhead.hcrc&&(e.adler=f(e.adler,a.pending_buf,a.pending,0)),a.gzindex=0,a.status=69):(L(a,0),L(a,0),L(a,0),L(a,0),L(a,0),L(a,9===a.level?2:2<=a.strategy||a.level<2?4:0),L(a,3),a.status=b)):(i=h+(a.w_bits-8<<4)<<8,i|=(2<=a.strategy||a.level<2?0:a.level<6?1:6===a.level?2:3)<<6,0!==a.strstart&&(i|=32),i+=31-i%31,a.status=b,E(a,i),0!==a.strstart&&(E(a,e.adler>>>16),E(a,65535&e.adler)),e.adler=1)),69===a.status)if(a.gzhead.extra){for(n=a.pending;a.gzindex<(65535&a.gzhead.extra.length)&&(a.pending!==a.pending_buf_size||(a.gzhead.hcrc&&a.pending>n&&(e.adler=f(e.adler,a.pending_buf,a.pending-n,n)),P(e),n=a.pending,a.pending!==a.pending_buf_size));)L(a,255&a.gzhead.extra[a.gzindex]),a.gzindex++;a.gzhead.hcrc&&a.pending>n&&(e.adler=f(e.adler,a.pending_buf,a.pending-n,n)),a.gzindex===a.gzhead.extra.length&&(a.gzindex=0,a.status=73)}else a.status=73;if(73===a.status)if(a.gzhead.name){n=a.pending;do{if(a.pending===a.pending_buf_size&&(a.gzhead.hcrc&&a.pending>n&&(e.adler=f(e.adler,a.pending_buf,a.pending-n,n)),P(e),n=a.pending,a.pending===a.pending_buf_size)){o=1;break}}while(o=a.gzindexn&&(e.adler=f(e.adler,a.pending_buf,a.pending-n,n)),0===o&&(a.gzindex=0,a.status=91)}else a.status=91;if(91===a.status)if(a.gzhead.comment){n=a.pending;do{if(a.pending===a.pending_buf_size&&(a.gzhead.hcrc&&a.pending>n&&(e.adler=f(e.adler,a.pending_buf,a.pending-n,n)),P(e),n=a.pending,a.pending===a.pending_buf_size)){o=1;break}}while(o=a.gzindexn&&(e.adler=f(e.adler,a.pending_buf,a.pending-n,n)),0===o&&(a.status=103)}else a.status=103;if(103===a.status&&(a.gzhead.hcrc?(a.pending+2>a.pending_buf_size&&P(e),a.pending+2<=a.pending_buf_size&&(L(a,255&e.adler),L(a,e.adler>>8&255),e.adler=0,a.status=b)):a.status=b),0!==a.pending){if(P(e),0===e.avail_out)return a.last_flush=-1,c}else if(0===e.avail_in&&x(t)<=x(r)&&4!==t)return w(e,-5);if(666===a.status&&0!==e.avail_in)return w(e,-5);if(0!==e.avail_in||0!==a.lookahead||t!==l&&666!==a.status){var i=2===a.strategy?((e,t)=>{for(var r;;){if(0===e.lookahead&&(B(e),0===e.lookahead)){if(t===l)return 1;break}if(e.match_length=0,r=A._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(S(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(S(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(S(e,!1),0===e.strm.avail_out)?1:2})(a,t):3===a.strategy?((e,t)=>{for(var r,a,n,o,i=e.window;;){if(e.lookahead<=m){if(B(e),e.lookahead<=m&&t===l)return 1;if(0===e.lookahead)break}if(e.match_length=0,g<=e.lookahead&&0>8&255),L(a,e.adler>>16&255),L(a,e.adler>>24&255),L(a,255&e.total_in),L(a,e.total_in>>8&255),L(a,e.total_in>>16&255),L(a,e.total_in>>24&255)):(E(a,e.adler>>>16),E(a,65535&e.adler)),P(e),0=g;){for(a=r.strstart,n=r.lookahead-(g-1);r.ins_h=(r.ins_h<>>=a=r>>>24,x-=a,0==(a=r>>>16&255))f[u++]=65535&r;else{if(!(16&a)){if(0==(64&a)){r=C[(65535&r)+(w&(1<>>=a,x-=a),x<15&&(w+=c[l++]<>>=a=r>>>24,x-=a,!(16&(a=r>>>16&255))){if(0==(64&a)){r=P[(65535&r)+(w&(1<>>=a,x-=a,(a=u-d)>3,w&=(1<<(x-=n<<3))-1,e.next_in=l,e.next_out=u,e.avail_in=l>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function o(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new k.Buf16(320),this.work=new k.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function i(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=M,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new k.Buf32(a),t.distcode=t.distdyn=new k.Buf32(n),t.sane=1,t.back=-1,R):O}function s(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,i(e)):O}function A(e,t){var r,a;return!e||!e.state||(a=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15>>8&255,r.check=N(r.check,E,2,0),c=l=0,r.mode=2;else if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&l)<<8)+(l>>8))%31)e.msg="incorrect header check",r.mode=30;else if(8!=(15&l))e.msg="unknown compression method",r.mode=30;else{if(c-=4,x=8+(15&(l>>>=4)),0===r.wbits)r.wbits=x;else if(x>r.wbits){e.msg="invalid window size",r.mode=30;break}r.dmax=1<>8&1),512&r.flags&&(E[0]=255&l,E[1]=l>>>8&255,r.check=N(r.check,E,2,0)),c=l=0,r.mode=3;case 3:for(;c<32;){if(0===s)break e;s--,l+=a[o++]<>>8&255,E[2]=l>>>16&255,E[3]=l>>>24&255,r.check=N(r.check,E,4,0)),c=l=0,r.mode=4;case 4:for(;c<16;){if(0===s)break e;s--,l+=a[o++]<>8),512&r.flags&&(E[0]=255&l,E[1]=l>>>8&255,r.check=N(r.check,E,2,0)),c=l=0,r.mode=5;case 5:if(1024&r.flags){for(;c<16;){if(0===s)break e;s--,l+=a[o++]<>>8&255,r.check=N(r.check,E,2,0)),c=l=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&((f=s<(f=r.length)?s:f)&&(r.head&&(x=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),k.arraySet(r.head.extra,a,o,f,x)),512&r.flags&&(r.check=N(r.check,a,f,o)),s-=f,o+=f,r.length-=f),r.length))break e;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===s)break e;for(f=0;x=a[o+f++],r.head&&x&&r.length<65536&&(r.head.name+=String.fromCharCode(x)),x&&f>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=12;break;case 10:for(;c<32;){if(0===s)break e;s--,l+=a[o++]<>>=7&c,c-=7&c,r.mode=27;else{for(;c<3;){if(0===s)break e;s--,l+=a[o++]<>>=1)){case 0:r.mode=14;break;case 1:B=D=void 0;var B,D=r;if(G){for(U=new k.Buf32(512),j=new k.Buf32(32),B=0;B<144;)D.lens[B++]=8;for(;B<256;)D.lens[B++]=9;for(;B<280;)D.lens[B++]=7;for(;B<288;)D.lens[B++]=8;for(I(1,D.lens,0,288,U,0,D.work,{bits:9}),B=0;B<32;)D.lens[B++]=5;I(2,D.lens,0,32,j,0,D.work,{bits:5}),G=!1}if(D.lencode=U,D.lenbits=9,D.distcode=j,D.distbits=5,r.mode=20,6!==t)break;l>>>=2,c-=2;break e;case 2:r.mode=17;break;case 3:e.msg="invalid block type",r.mode=30}l>>>=2,c-=2}break;case 14:for(l>>>=7&c,c-=7&c;c<32;){if(0===s)break e;s--,l+=a[o++]<>>16^65535)){e.msg="invalid stored block lengths",r.mode=30;break}if(r.length=65535&l,c=l=0,r.mode=15,6===t)break e;case 15:r.mode=16;case 16:if(f=r.length){if(0===(f=A<(f=s>>=5,c-=5,r.ndist=1+(31&l),l>>>=5,c-=5,r.ncode=4+(15&l),l>>>=4,c-=4,286>>=3,c-=3}for(;r.have<19;)r.lens[T[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,P={bits:r.lenbits},C=I(0,r.lens,0,19,r.lencode,0,r.work,P),r.lenbits=P.bits,C){e.msg="invalid code lengths set",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have>>16&255,v=65535&L,!((g=L>>>24)<=c);){if(0===s)break e;s--,l+=a[o++]<>>=g,c-=g,r.lens[r.have++]=v;else{if(16===v){for(S=g+2;c>>=g,c-=g,0===r.have){e.msg="invalid bit length repeat",r.mode=30;break}x=r.lens[r.have-1],f=3+(3&l),l>>>=2,c-=2}else if(17===v){for(S=g+3;c>>=g)),l>>>=3,c=c-g-3}else{for(S=g+7;c>>=g)),l>>>=7,c=c-g-7}if(r.have+f>r.nlen+r.ndist){e.msg="invalid bit length repeat",r.mode=30;break}for(;f--;)r.lens[r.have++]=x}}if(30===r.mode)break;if(0===r.lens[256]){e.msg="invalid code -- missing end-of-block",r.mode=30;break}if(r.lenbits=9,P={bits:r.lenbits},C=I(1,r.lens,0,r.nlen,r.lencode,0,r.work,P),r.lenbits=P.bits,C){e.msg="invalid literal/lengths set",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,P={bits:r.distbits},C=I(2,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,P),r.distbits=P.bits,C){e.msg="invalid distances set",r.mode=30;break}if(r.mode=20,6===t)break e;case 20:r.mode=21;case 21:if(6<=s&&258<=A){e.next_out=i,e.avail_out=A,e.next_in=o,e.avail_in=s,r.hold=l,r.bits=c,F(e,u),i=e.next_out,n=e.output,A=e.avail_out,o=e.next_in,a=e.input,s=e.avail_in,l=r.hold,c=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;m=(L=r.lencode[l&(1<>>16&255,v=65535&L,!((g=L>>>24)<=c);){if(0===s)break e;s--,l+=a[o++]<>y)])>>>16&255,v=65535&L,!(y+(g=L>>>24)<=c);){if(0===s)break e;s--,l+=a[o++]<>>=y,c-=y,r.back+=y}if(l>>>=g,c-=g,r.back+=g,r.length=v,0===m){r.mode=26;break}if(32&m){r.back=-1,r.mode=12;break}if(64&m){e.msg="invalid literal/length code",r.mode=30;break}r.extra=15&m,r.mode=22;case 22:if(r.extra){for(S=r.extra;c>>=r.extra,c-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;m=(L=r.distcode[l&(1<>>16&255,v=65535&L,!((g=L>>>24)<=c);){if(0===s)break e;s--,l+=a[o++]<>y)])>>>16&255,v=65535&L,!(y+(g=L>>>24)<=c);){if(0===s)break e;s--,l+=a[o++]<>>=y,c-=y,r.back+=y}if(l>>>=g,c-=g,r.back+=g,64&m){e.msg="invalid distance code",r.mode=30;break}r.offset=v,r.extra=15&m,r.mode=24;case 24:if(r.extra){for(S=r.extra;c>>=r.extra,c-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg="invalid distance too far back",r.mode=30;break}r.mode=25;case 25:if(0===A)break e;if(r.offset>(f=u-A)){if((f=r.offset-f)>r.whave&&r.sane){e.msg="invalid distance too far back",r.mode=30;break}d=f>r.wnext?(f-=r.wnext,r.wsize-f):r.wnext-f,f>r.length&&(f=r.length),h=r.window}else h=n,d=i-r.offset,f=r.length;for(A-=f=Af?(h=_[N+i[y]],T[B+i[y]]):(h=96,0),A=1<<(d=v-P),b=l=1<>P)+(l-=A)]=d<<24|h<<16|g|0,0!==l;);for(A=1<>=1;if(0!==A?E=(E&A-1)+A:E=0,y++,0==--D[v]){if(v===w)break;v=t[r+i[y]]}if(x>>7)]}function o(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function C(e,t,r){e.bi_valid>a-r?(e.bi_buf|=t<>a-e.bi_valid,e.bi_valid+=r-a):(e.bi_buf|=t<>>=1,r<<=1,0<--t;);return r>>>1}function L(e,t,r){for(var a,n=new Array(16),o=0,i=1;i<=15;i++)n[i]=o=o+r[i-1]<<1;for(a=0;a<=t;a++){var s=e[2*a+1];0!==s&&(e[2*a]=S(n[s]++,s))}}function E(e){for(var t=0;t<286;t++)e.dyn_ltree[2*t]=0;for(t=0;t<30;t++)e.dyn_dtree[2*t]=0;for(t=0;t<19;t++)e.bl_tree[2*t]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.last_lit=e.matches=0}function T(e){8>1;1<=r;r--)B(e,o,r);for(n=A;r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],B(e,o,1),a=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=a,o[2*n]=o[2*r]+o[2*a],e.depth[n]=(e.depth[r]>=e.depth[a]?e.depth[r]:e.depth[a])+1,o[2*r+1]=o[2*a+1]=n,e.heap[1]=n++,B(e,o,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1];for(var c,p,u,f,d,h=e,g=t.dyn_tree,m=t.max_code,v=t.stat_desc.static_tree,y=t.stat_desc.has_stree,b=t.stat_desc.extra_bits,w=t.stat_desc.extra_base,x=t.stat_desc.max_length,C=0,P=0;P<=15;P++)h.bl_count[P]=0;for(g[2*h.heap[h.heap_max]+1]=0,c=h.heap_max+1;c<573;c++)x<(P=g[2*g[2*(p=h.heap[c])+1]+1]+1)&&(P=x,C++),g[2*p+1]=P,m>=7;i<30;i++)for(y[i]=n<<7,t=0;t<1<{for(var t=4093624447,r=0;r<=31;r++,t>>>=1)if(1&t&&0!==e.dyn_ltree[2*r])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(r=32;r<256;r++)if(0!==e.dyn_ltree[2*r])return 1;return 0})(e)),k(e,e.l_desc),k(e,e.d_desc),s=(e=>{var t;for(_(e,e.dyn_ltree,e.l_desc.max_code),_(e,e.dyn_dtree,e.d_desc.max_code),k(e,e.bl_desc),t=18;3<=t&&0===e.bl_tree[2*c[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t})(e),(o=e.static_len+3+7>>>3)<=(n=e.opt_len+3+7>>>3)&&(n=o)):n=o=r+5,r+4<=n&&-1!==t)I(e,t,r,a);else if(4===e.strategy||o===n)C(e,2+(a?1:0),3),D(e,p,u);else{C(e,4+(a?1:0),3);var A=e,l=(t=e.l_desc.max_code+1,r=e.d_desc.max_code+1,s+1);for(C(A,t-257,5),C(A,r-1,5),C(A,l-4,4),i=0;i>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(d[r]+256+1)]++,e.dyn_dtree[2*x(t)]++),e.last_lit===e.lit_bufsize-1},t._tr_align=function(e){C(e,2,3),P(e,256,p),16===(e=e).bi_valid?(o(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):8<=e.bi_valid&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}},{"../utils/common":41}],53:[function(e,t,r){t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,r){!function(e){function n(e){delete c[e]}function o(e){if(p)setTimeout(o,0,e);else{var t=c[e];if(t){p=!0;try{var r=t.callback,a=t.args;switch(a.length){case 0:r();break;case 1:r(a[0]);break;case 2:r(a[0],a[1]);break;case 3:r(a[0],a[1],a[2]);break;default:r.apply(i,a)}}finally{n(e),p=!1}}}}function t(e){e.source===r&&"string"==typeof e.data&&0===e.data.indexOf(A)&&o(+e.data.slice(A.length))}var r,i,a,s,A,l,c,p,u,f;(r="undefined"==typeof self?void 0===e?this:e:self).setImmediate||(l=1,p=!(c={}),u=r.document,e=(e=Object.getPrototypeOf&&Object.getPrototypeOf(r))&&e.setTimeout?e:r,f="[object process]"==={}.toString.call(r.process)?function(e){process.nextTick(function(){o(e)})}:(()=>{var e,t;if(r.postMessage&&!r.importScripts)return e=!0,t=r.onmessage,r.onmessage=function(){e=!1},r.postMessage("","*"),r.onmessage=t,e})()?(A="setImmediate$"+Math.random()+"$",r.addEventListener?r.addEventListener("message",t,!1):r.attachEvent("onmessage",t),function(e){r.postMessage(A+e,"*")}):r.MessageChannel?((s=new MessageChannel).port1.onmessage=function(e){o(e.data)},function(e){s.port2.postMessage(e)}):u&&"onreadystatechange"in u.createElement("script")?(a=u.documentElement,function(e){var t=u.createElement("script");t.onreadystatechange=function(){o(e),t.onreadystatechange=null,a.removeChild(t),t=null},a.appendChild(t)}):function(e){setTimeout(o,0,e)},e.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),r=0;r{function e(e,t,r){if(this instanceof a){switch(arguments.length){case 0:return new a;case 1:return new a(e);case 2:return new a(e,t)}return new a(e,t,r)}return a.apply(this,arguments)}return e[w]=a[w],e})(o):l&&"function"==typeof o?v(Function.call,o):o,l&&((u.virtual||(u.virtual={}))[a]=o,e&h.R)&&f&&!f[a]&&y(f,a,o))}var g=e(24),m=e(18),v=e(19),y=e(26),b=e(25),w="prototype";h.F=1,h.G=2,h.S=4,h.P=8,h.B=16,h.W=32,h.U=64,h.R=128,t.exports=h},{18:18,19:19,24:24,25:25,26:26}],23:[function(e,t,r){t.exports=function(e){try{return!!e()}catch(e){return!0}}},{}],24:[function(e,t,r){t=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=t)},{}],25:[function(e,t,r){var a={}.hasOwnProperty;t.exports=function(e,t){return a.call(e,t)}},{}],26:[function(e,t,r){var a=e(29),n=e(30);t.exports=e(20)?function(e,t,r){return a.f(e,t,n(1,r))}:function(e,t,r){return e[t]=r,e}},{20:20,29:29,30:30}],27:[function(e,t,r){t.exports=!e(20)&&!e(23)(function(){return 7!=Object.defineProperty(e(21)("div"),"a",{get:function(){return 7}}).a})},{20:20,21:21,23:23}],28:[function(e,t,r){t.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},{}],29:[function(e,t,r){var a=e(17),n=e(27),o=e(31),i=Object.defineProperty;r.f=e(20)?Object.defineProperty:function(e,t,r){if(a(e),t=o(t,!0),a(r),n)try{return i(e,t,r)}catch(e){}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(e[t]=r.value),e}},{17:17,20:20,27:27,31:31}],30:[function(e,t,r){t.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},{}],31:[function(e,t,r){var n=e(28);t.exports=function(e,t){if(!n(e))return e;var r,a;if(t&&"function"==typeof(r=e.toString)&&!n(a=r.call(e))||"function"==typeof(r=e.valueOf)&&!n(a=r.call(e))||!t&&"function"==typeof(r=e.toString)&&!n(a=r.call(e)))return a;throw TypeError("Can't convert object to primitive value")}},{28:28}],32:[function(e,t,r){var a=e(22);a(a.G,{global:e(24)})},{22:22,24:24}],33:[function(e,t,r){arguments[4][16][0].apply(r,arguments)},{16:16}],34:[function(e,t,r){var a=e(48);t.exports=function(e,t){if("number"!=typeof e&&"Number"!=a(e))throw TypeError(t);return+e}},{48:48}],35:[function(e,t,r){var a=e(152)("unscopables"),n=Array.prototype;null==n[a]&&e(72)(n,a,{}),t.exports=function(e){n[a][e]=!0}},{152:152,72:72}],36:[function(e,t,r){var a=e(129)(!0);t.exports=function(e,t,r){return t+(r?a(e,t).length:1)}},{129:129}],37:[function(e,t,r){t.exports=function(e,t,r,a){if(!(e instanceof t)||void 0!==a&&a in e)throw TypeError(r+": incorrect invocation!");return e}},{}],38:[function(e,t,r){arguments[4][17][0].apply(r,arguments)},{17:17,81:81}],39:[function(e,t,r){var A=e(142),l=e(137),c=e(141);t.exports=[].copyWithin||function(e,t){var r=A(this),a=c(r.length),n=l(e,a),o=l(t,a),e=2{try{return e[t]}catch(e){}})(e=Object(e),n))?t:o?a(e):"Object"==(t=a(e))&&"function"==typeof e.callee?"Arguments":t}},{152:152,48:48}],48:[function(e,t,r){var a={}.toString;t.exports=function(e){return a.call(e).slice(8,-1)}},{}],49:[function(e,t,r){function i(e,t){var r,a=d(t);if("F"!==a)return e._i[a];for(r=e._f;r;r=r.n)if(r.k==t)return r}var s=e(99).f,A=e(98),l=e(117),c=e(54),p=e(37),u=e(68),a=e(85),n=e(87),o=e(123),f=e(58),d=e(94).fastKey,h=e(149),g=f?"_s":"size";t.exports={getConstructor:function(e,n,r,a){var o=e(function(e,t){p(e,o,n,"_i"),e._t=n,e._i=A(null),e._f=void 0,e._l=void 0,e[g]=0,null!=t&&u(t,r,e[a],e)});return l(o.prototype,{clear:function(){for(var e=h(this,n),t=e._i,r=e._f;r;r=r.n)r.r=!0,r.p&&(r.p=r.p.n=void 0),delete t[r.i];e._f=e._l=void 0,e[g]=0},delete:function(e){var t,r,a=h(this,n),e=i(a,e);return e&&(t=e.n,r=e.p,delete a._i[e.i],e.r=!0,r&&(r.n=t),t&&(t.p=r),a._f==e&&(a._f=t),a._l==e&&(a._l=r),a[g]--),!!e},forEach:function(e){h(this,n);for(var t,r=c(e,1i;)o.call(e,a=n[i++])&&t.push(a);return t}},{104:104,107:107,108:108}],62:[function(e,t,r){function f(e,t,r){var a,n,o,i=e&f.F,s=e&f.G,A=e&f.P,l=e&f.B,c=s?d:e&f.S?d[t]||(d[t]={}):(d[t]||{})[y],p=s?h:h[t]||(h[t]={}),u=p[y]||(p[y]={});for(a in r=s?t:r)n=((o=!i&&c&&void 0!==c[a])?c:r)[a],o=l&&o?v(n,d):A&&"function"==typeof n?v(Function.call,n):n,c&&m(c,a,n,e&f.U),p[a]!=n&&g(p,a,o),A&&u[a]!=n&&(u[a]=n)}var d=e(70),h=e(52),g=e(72),m=e(118),v=e(54),y="prototype";d.core=h,f.F=1,f.G=2,f.S=4,f.P=8,f.B=16,f.W=32,f.U=64,f.R=128,t.exports=f},{118:118,52:52,54:54,70:70,72:72}],63:[function(e,t,r){var a=e(152)("match");t.exports=function(t){var r=/./;try{"/./"[t](r)}catch(e){try{return r[a]=!1,!"/./"[t](r)}catch(e){}}return!0}},{152:152}],64:[function(e,t,r){arguments[4][23][0].apply(r,arguments)},{23:23}],65:[function(e,t,r){e(248);var a,A=e(118),l=e(72),c=e(64),p=e(57),u=e(152),f=e(120),d=u("species"),h=!c(function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$")}),g=(a=(e=/(?:)/).exec,e.exec=function(){return a.apply(this,arguments)},2===(e="ab".split(e)).length&&"a"===e[0]&&"b"===e[1]);t.exports=function(r,e,t){var o,a,n=u(r),i=!c(function(){var e={};return e[n]=function(){return 7},7!=""[r](e)}),s=i?!c(function(){var e=!1,t=/a/;return t.exec=function(){return e=!0,null},"split"===r&&(t.constructor={},t.constructor[d]=function(){return t}),t[n](""),!e}):void 0;i&&s&&("replace"!==r||h)&&("split"!==r||g)||(o=/./[n],t=(s=t(p,n,""[r],function(e,t,r,a,n){return t.exec===f?i&&!n?{done:!0,value:o.call(t,r,a)}:{done:!0,value:e.call(r,t,a)}:{done:!1}}))[0],a=s[1],A(String.prototype,r,t),l(RegExp.prototype,n,2==e?function(e,t){return a.call(e,this,t)}:function(e){return a.call(e,this)}))}},{118:118,120:120,152:152,248:248,57:57,64:64,72:72}],66:[function(e,t,r){var a=e(38);t.exports=function(){var e=a(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t}},{38:38}],67:[function(e,t,r){var d=e(79),h=e(81),g=e(141),m=e(54),v=e(152)("isConcatSpreadable");t.exports=function e(t,r,a,n,o,i,s,A){for(var l,c,p=o,u=0,f=!!s&&m(s,A,3);udocument.F=Object<\/script>"),e.close(),l=e.F;t--;)delete l[A][i[t]];return l()};e.exports=Object.create||function(e,t){var r;return null!==e?(a[A]=n(e),r=new a,a[A]=null,r[s]=e):r=l(),void 0===t?r:o(r,t)}},{100:100,125:125,38:38,59:59,60:60,73:73}],99:[function(e,t,r){arguments[4][29][0].apply(r,arguments)},{143:143,29:29,38:38,58:58,74:74}],100:[function(e,t,r){var i=e(99),s=e(38),A=e(107);t.exports=e(58)?Object.defineProperties:function(e,t){s(e);for(var r,a=A(t),n=a.length,o=0;on;)!i(a,r=t[n++])||~A(o,r)||o.push(r);return o}},{125:125,140:140,41:41,71:71}],107:[function(e,t,r){var a=e(106),n=e(60);t.exports=Object.keys||function(e){return a(e,n)}},{106:106,60:60}],108:[function(e,t,r){r.f={}.propertyIsEnumerable},{}],109:[function(e,t,r){var n=e(62),o=e(52),i=e(64);t.exports=function(e,t){var r=(o.Object||{})[e]||Object[e],a={};a[e]=t(r),n(n.S+n.F*i(function(){r(1)}),"Object",a)}},{52:52,62:62,64:64}],110:[function(e,t,r){var A=e(58),l=e(107),c=e(140),p=e(108).f;t.exports=function(s){return function(e){for(var t,r=c(e),a=l(r),n=a.length,o=0,i=[];o>>0||(o.test(e)?16:10))}:a},{134:134,135:135,70:70}],114:[function(e,t,r){t.exports=function(e){try{return{e:!1,v:e()}}catch(e){return{e:!0,v:e}}}},{}],115:[function(e,t,r){var a=e(38),n=e(81),o=e(96);t.exports=function(e,t){return a(e),n(t)&&t.constructor===e?t:((0,(e=o.f(e)).resolve)(t),e.promise)}},{38:38,81:81,96:96}],116:[function(e,t,r){arguments[4][30][0].apply(r,arguments)},{30:30}],117:[function(e,t,r){var n=e(118);t.exports=function(e,t,r){for(var a in t)n(e,a,t[a],r);return e}},{118:118}],118:[function(e,t,r){var o=e(70),i=e(72),s=e(71),A=e(147)("src"),a=e(69),n="toString",l=(""+a).split(n);e(52).inspectSource=function(e){return a.call(e)},(t.exports=function(e,t,r,a){var n="function"==typeof r;n&&!s(r,"name")&&i(r,"name",t),e[t]!==r&&(n&&!s(r,A)&&i(r,A,e[t]?""+e[t]:l.join(String(t))),e===o?e[t]=r:a?e[t]?e[t]=r:i(e,t,r):(delete e[t],i(e,t,r)))})(Function.prototype,n,function(){return"function"==typeof this&&this[A]||a.call(this)})},{147:147,52:52,69:69,70:70,71:71,72:72}],119:[function(e,t,r){var a=e(47),n=RegExp.prototype.exec;t.exports=function(e,t){var r=e.exec;if("function"==typeof r){r=r.call(e,t);if("object"!=typeof r)throw new TypeError("RegExp exec method returned something other than an Object or null");return r}if("RegExp"!==a(e))throw new TypeError("RegExp#exec called on incompatible receiver");return n.call(e,t)}},{47:47}],120:[function(e,t,r){var a,n,i=e(66),s=RegExp.prototype.exec,A=String.prototype.replace,e=s,l="lastIndex",c=(n=/b*/g,s.call(a=/a/,"a"),s.call(n,"a"),0!==a[l]||0!==n[l]),p=void 0!==/()??/.exec("")[1];t.exports=e=c||p?function(e){var t,r,a,n,o=this;return p&&(r=new RegExp("^"+o.source+"$(?!\\s)",i.call(o))),c&&(t=o[l]),a=s.call(o,e),c&&a&&(o[l]=o.global?a.index+a[0].length:t),p&&a&&1{try{(a=t(54)(Function.call,t(101).f(Object.prototype,"__proto__").set,2))(e,[]),r=!(e instanceof Array)}catch(e){r=!0}return function(e,t){return n(e,t),r?e.__proto__=t:a(e,t),e}})({},!1):void 0),check:n}},{101:101,38:38,54:54,81:81}],123:[function(e,t,r){var a=e(70),n=e(99),o=e(58),i=e(152)("species");t.exports=function(e){e=a[e];o&&e&&!e[i]&&n.f(e,i,{configurable:!0,get:function(){return this}})}},{152:152,58:58,70:70,99:99}],124:[function(e,t,r){var a=e(99).f,n=e(71),o=e(152)("toStringTag");t.exports=function(e,t,r){e&&!n(e=r?e:e.prototype,o)&&a(e,o,{configurable:!0,value:t})}},{152:152,71:71,99:99}],125:[function(e,t,r){var a=e(126)("keys"),n=e(147);t.exports=function(e){return a[e]||(a[e]=n(e))}},{126:126,147:147}],126:[function(e,t,r){var a=e(52),n=e(70),o="__core-js_shared__",i=n[o]||(n[o]={});(t.exports=function(e,t){return i[e]||(i[e]=void 0!==t?t:{})})("versions",[]).push({version:a.version,mode:e(89)?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},{52:52,70:70,89:89}],127:[function(e,t,r){var a=e(38),n=e(33),o=e(152)("species");t.exports=function(e,t){var e=a(e).constructor;return void 0===e||null==(e=a(e)[o])?t:n(e)}},{152:152,33:33,38:38}],128:[function(e,t,r){var a=e(64);t.exports=function(e,t){return!!e&&a(function(){t?e.call(null,function(){},1):e.call(null)})}},{64:64}],129:[function(e,t,r){var o=e(139),i=e(57);t.exports=function(n){return function(e,t){var r,e=String(i(e)),t=o(t),a=e.length;return t<0||a<=t?n?"":void 0:(r=e.charCodeAt(t))<55296||56319"+e+""}var n=e(62),o=e(64),i=e(57),s=/"/g;t.exports=function(t,e){var r={};r[t]=e(a),n(n.P+n.F*o(function(){var e=""[t]('"');return e!==e.toLowerCase()||3t&&(n=n.slice(0,t)),a?n+e:e+n)}},{133:133,141:141,57:57}],133:[function(e,t,r){var n=e(139),o=e(57);t.exports=function(e){var t=String(o(this)),r="",a=n(e);if(a<0||a==1/0)throw RangeError("Count can't be negative");for(;0>>=1)&&(t+=t))1&a&&(r+=t);return r}},{139:139,57:57}],134:[function(e,t,r){function a(e,t,r){var a={},n=i(function(){return!!s[e]()||"​…"!="​…"[e]()}),t=a[e]=n?t(c):s[e];r&&(a[r]=t),o(o.P+o.F*n,"String",a)}var o=e(62),n=e(57),i=e(64),s=e(135),e="["+s+"]",A=RegExp("^"+e+e+"*"),l=RegExp(e+e+"*$"),c=a.trim=function(e,t){return e=String(n(e)),1&t&&(e=e.replace(A,"")),e=2&t?e.replace(l,""):e};t.exports=a},{135:135,57:57,62:62,64:64}],135:[function(e,t,r){t.exports="\t\n\v\f\r   ᠎              \u2028\u2029\ufeff"},{}],136:[function(e,t,r){function a(){var e,t=+this;m.hasOwnProperty(t)&&(e=m[t],delete m[t],e())}function n(e){a.call(e.data)}var o,i=e(54),s=e(76),A=e(73),l=e(59),c=e(70),p=c.process,u=c.setImmediate,f=c.clearImmediate,d=c.MessageChannel,h=c.Dispatch,g=0,m={},v="onreadystatechange";u&&f||(u=function(e){for(var t=[],r=1;r{w(e,a,{get:function(){return(e=this._d).v[u](a*l+e.o,ke);var e},set:function(e){var t=a,r=this._d;c&&(e=(e=Math.round(e))<0?0:255>1,l=23===t?w(2,-24)-w(2,-77):0,c=0,p=e<0||0===e&&1/e<0?1:0;for((e=G(e))!=e||e===y?(n=e!=e?1:0,a=r):(a=Q(W(e)/Y),e*(o=w(2,-a))<1&&(a--,o*=2),2<=(e+=1<=a+A?l/o:l*w(2,1-A))*o&&(a++,o/=2),r<=a+A?(n=0,a=r):1<=a+A?(n=(e*o-1)*w(2,t),a+=A):(n=e*w(2,A-1)*w(2,t),a=0));8<=t;i[c++]=255&n,n/=256,t-=8);for(a=a<>1,s=n-7,A=r-1,n=e[A--],l=127&n;for(n>>=7;0>=-s,s+=t;0>8&255]}function D(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]}function X(e){return S(e,52,8)}function H(e){return S(e,23,4)}function k(e,t,r){U(e[f],t,{get:function(){return this[r]}})}function _(e,t,r,a){r=c(+r);if(r+t>e[C])throw v(d);var n=e[x]._b,r=r+e[P],e=n.slice(r,r+t);return a?e:e.reverse()}function N(e,t,r,a,n,o){r=c(+r);if(r+t>e[C])throw v(d);for(var i=e[x]._b,s=r+e[P],A=a(+n),l=0;lV;)(F=I[V++])in h||o(h,F,b[F]);O||(s.constructor=h)}var l=new g(new h(2)),q=g[f].setInt8;l.setInt8(0,2147483648),l.setInt8(1,2147483649),!l.getInt8(0)&&l.getInt8(1)||i(g[f],{setInt8:function(e,t){q.call(this,e,t<<24>>24)},setUint8:function(e,t){q.call(this,e,t<<24>>24)}},!0)}else h=function(e){A(this,h,p);e=c(e);this._b=j.call(new Array(e),0),this[C]=e},g=function(e,t,r){A(this,g,u),A(e,h,u);var a=e[C],t=M(t);if(t<0||a>24},getUint8:function(e){return _(this,1,e)[0]},getInt16:function(e){e=_(this,2,e,arguments[1]);return(e[1]<<8|e[0])<<16>>16},getUint16:function(e){e=_(this,2,e,arguments[1]);return e[1]<<8|e[0]},getInt32:function(e){return E(_(this,4,e,arguments[1]))},getUint32:function(e){return E(_(this,4,e,arguments[1]))>>>0},getFloat32:function(e){return L(_(this,4,e,arguments[1]),23,4)},getFloat64:function(e){return L(_(this,8,e,arguments[1]),52,8)},setInt8:function(e,t){N(this,1,e,T,t)},setUint8:function(e,t){N(this,1,e,T,t)},setInt16:function(e,t){N(this,2,e,B,t,arguments[2])},setUint16:function(e,t){N(this,2,e,B,t,arguments[2])},setInt32:function(e,t){N(this,4,e,D,t,arguments[2])},setUint32:function(e,t){N(this,4,e,D,t,arguments[2])},setFloat32:function(e,t){N(this,4,e,H,t,arguments[2])},setFloat64:function(e,t){N(this,8,e,X,t,arguments[2])}});e(h,p),e(g,u),o(g[f],n.VIEW,!0),t[p]=h,t[u]=g},{103:103,117:117,124:124,138:138,139:139,141:141,146:146,37:37,40:40,58:58,64:64,70:70,72:72,89:89,99:99}],146:[function(e,t,r){for(var a,n=e(70),o=e(72),e=e(147),i=e("typed_array"),s=e("view"),e=!(!n.ArrayBuffer||!n.DataView),A=e,l=0,c="Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array".split(",");l<9;)(a=n[c[l++]])?(o(a.prototype,i,!0),o(a.prototype,s,!0)):A=!1;t.exports={ABV:e,CONSTR:A,TYPED:i,VIEW:s}},{147:147,70:70,72:72}],147:[function(e,t,r){var a=0,n=Math.random();t.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++a+n).toString(36))}},{}],148:[function(e,t,r){e=e(70).navigator;t.exports=e&&e.userAgent||""},{70:70}],149:[function(e,t,r){var a=e(81);t.exports=function(e,t){if(a(e)&&e._t===t)return e;throw TypeError("Incompatible receiver, "+t+" required!")}},{81:81}],150:[function(e,t,r){var a=e(70),n=e(52),o=e(89),i=e(151),s=e(99).f;t.exports=function(e){var t=n.Symbol||(n.Symbol=!o&&a.Symbol||{});"_"==e.charAt(0)||e in t||s(t,e,{value:i.f(e)})}},{151:151,52:52,70:70,89:89,99:99}],151:[function(e,t,r){r.f=e(152)},{152:152}],152:[function(e,t,r){var a=e(126)("wks"),n=e(147),o=e(70).Symbol,i="function"==typeof o;(t.exports=function(e){return a[e]||(a[e]=i&&o[e]||(i?o:n)("Symbol."+e))}).store=a},{126:126,147:147,70:70}],153:[function(e,t,r){var a=e(47),n=e(152)("iterator"),o=e(88);t.exports=e(52).getIteratorMethod=function(e){if(null!=e)return e[n]||e["@@iterator"]||o[a(e)]}},{152:152,47:47,52:52,88:88}],154:[function(e,t,r){var a=e(62);a(a.P,"Array",{copyWithin:e(39)}),e(35)("copyWithin")},{35:35,39:39,62:62}],155:[function(e,t,r){var a=e(62),n=e(42)(4);a(a.P+a.F*!e(128)([].every,!0),"Array",{every:function(e){return n(this,e,arguments[1])}})},{128:128,42:42,62:62}],156:[function(e,t,r){var a=e(62);a(a.P,"Array",{fill:e(40)}),e(35)("fill")},{35:35,40:40,62:62}],157:[function(e,t,r){var a=e(62),n=e(42)(2);a(a.P+a.F*!e(128)([].filter,!0),"Array",{filter:function(e){return n(this,e,arguments[1])}})},{128:128,42:42,62:62}],158:[function(e,t,r){var a=e(62),n=e(42)(6),o="findIndex",i=!0;o in[]&&Array(1)[o](function(){i=!1}),a(a.P+a.F*i,"Array",{findIndex:function(e){return n(this,e,1=e.length?(this._t=void 0,n(1)):n(0,"keys"==t?r:"values"==t?e[r]:[r,e[r]])},"values"),o.Arguments=o.Array,a("keys"),a("values"),a("entries")},{140:140,35:35,85:85,87:87,88:88}],165:[function(e,t,r){var a=e(62),n=e(140),o=[].join;a(a.P+a.F*(e(77)!=Object||!e(128)(o)),"Array",{join:function(e){return o.call(n(this),void 0===e?",":e)}})},{128:128,140:140,62:62,77:77}],166:[function(e,t,r){var a=e(62),n=e(140),o=e(139),i=e(141),s=[].lastIndexOf,A=!!s&&1/[1].lastIndexOf(1,-0)<0;a(a.P+a.F*(A||!e(128)(s)),"Array",{lastIndexOf:function(e){if(A)return s.apply(this,arguments)||0;var t=n(this),r=i(t.length),a=r-1;for((a=1>>=0)?31-Math.floor(Math.log(e+.5)*Math.LOG2E):32}})},{62:62}],189:[function(e,t,r){var e=e(62),a=Math.exp;e(e.S,"Math",{cosh:function(e){return(a(e=+e)+a(-e))/2}})},{62:62}],190:[function(e,t,r){var a=e(62),e=e(90);a(a.S+a.F*(e!=Math.expm1),"Math",{expm1:e})},{62:62,90:90}],191:[function(e,t,r){var a=e(62);a(a.S,"Math",{fround:e(91)})},{62:62,91:91}],192:[function(e,t,r){var e=e(62),A=Math.abs;e(e.S,"Math",{hypot:function(e,t){for(var r,a,n=0,o=0,i=arguments.length,s=0;o>>16)*a+r*(65535&t>>>16)<<16>>>0)}})},{62:62,64:64}],194:[function(e,t,r){e=e(62);e(e.S,"Math",{log10:function(e){return Math.log(e)*Math.LOG10E}})},{62:62}],195:[function(e,t,r){var a=e(62);a(a.S,"Math",{log1p:e(92)})},{62:62,92:92}],196:[function(e,t,r){e=e(62);e(e.S,"Math",{log2:function(e){return Math.log(e)/Math.LN2}})},{62:62}],197:[function(e,t,r){var a=e(62);a(a.S,"Math",{sign:e(93)})},{62:62,93:93}],198:[function(e,t,r){var a=e(62),n=e(90),o=Math.exp;a(a.S+a.F*e(64)(function(){return-2e-17!=!Math.sinh(-2e-17)}),"Math",{sinh:function(e){return Math.abs(e=+e)<1?(n(e)-n(-e))/2:(o(e-1)-o(-e-1))*(Math.E/2)}})},{62:62,64:64,90:90}],199:[function(e,t,r){var a=e(62),n=e(90),o=Math.exp;a(a.S,"Math",{tanh:function(e){var t=n(e=+e),r=n(-e);return t==1/0?1:r==1/0?-1:(t-r)/(o(e)+o(-e))}})},{62:62,90:90}],200:[function(e,t,r){e=e(62);e(e.S,"Math",{trunc:function(e){return(0x;x++)o(h,y=w[x])&&!o(b,y)&&u(b,y,p(h,y));(b.prototype=g).constructor=b,e(118)(n,d,b)}},{101:101,103:103,118:118,134:134,143:143,48:48,58:58,64:64,70:70,71:71,75:75,98:98,99:99}],202:[function(e,t,r){e=e(62);e(e.S,"Number",{EPSILON:Math.pow(2,-52)})},{62:62}],203:[function(e,t,r){var a=e(62),n=e(70).isFinite;a(a.S,"Number",{isFinite:function(e){return"number"==typeof e&&n(e)}})},{62:62,70:70}],204:[function(e,t,r){var a=e(62);a(a.S,"Number",{isInteger:e(80)})},{62:62,80:80}],205:[function(e,t,r){e=e(62);e(e.S,"Number",{isNaN:function(e){return e!=e}})},{62:62}],206:[function(e,t,r){var a=e(62),n=e(80),o=Math.abs;a(a.S,"Number",{isSafeInteger:function(e){return n(e)&&o(e)<=9007199254740991}})},{62:62,80:80}],207:[function(e,t,r){e=e(62);e(e.S,"Number",{MAX_SAFE_INTEGER:9007199254740991})},{62:62}],208:[function(e,t,r){e=e(62);e(e.S,"Number",{MIN_SAFE_INTEGER:-9007199254740991})},{62:62}],209:[function(e,t,r){var a=e(62),e=e(112);a(a.S+a.F*(Number.parseFloat!=e),"Number",{parseFloat:e})},{112:112,62:62}],210:[function(e,t,r){var a=e(62),e=e(113);a(a.S+a.F*(Number.parseInt!=e),"Number",{parseInt:e})},{113:113,62:62}],211:[function(e,t,r){function s(e,t){for(var r=-1,a=t;++r<6;)i[r]=(a+=e*i[r])%1e7,a=o(a/1e7)}function A(e){for(var t=6,r=0;0<=--t;)i[t]=o((r+=i[t])/e),r=r%e*1e7}function l(){for(var e,t=6,r="";0<=--t;)""===r&&0!==t&&0===i[t]||(e=String(i[t]),r=""===r?e:r+f.call("0",7-e.length)+e);return r}function c(e,t,r){return 0===t?r:t%2==1?c(e,t-1,r*e):c(e*e,t/2,r)}var a=e(62),p=e(139),u=e(34),f=e(133),n=1..toFixed,o=Math.floor,i=[0,0,0,0,0,0],d="Number.toFixed: incorrect invocation!";a(a.P+a.F*(!!n&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==0xde0b6b3a7640080.toFixed(0))||!e(64)(function(){n.call({})})),"Number",{toFixed:function(e){var t,r,a,n=u(this,d),e=p(e),o="",i="0";if(e<0||20{for(var e=0,t=n*c(2,69,1);4096<=t;)e+=12,t/=4096;for(;2<=t;)e+=1,t/=2;return e})()-69)<0?n*c(2,-t,1):n/c(2,t,1),a*=4503599627370496,0<(t=52-t)){for(s(0,a),r=e;7<=r;)s(1e7,0),r-=7;for(s(c(10,r,1),0),r=t-1;23<=r;)A(1<<23),r-=23;A(1<r;){a=void 0;n=void 0;o=void 0;i=void 0;s=void 0;A=void 0;l=void 0;c=void 0;var a=f[r++];var n,o,i,s=t?a.ok:a.fail,A=a.resolve,l=a.reject,c=a.domain;try{s?(t||(2==p._h&&g(p),p._h=1),!0===s?n=e:(c&&c.enter(),n=s(e),c&&(c.exit(),i=!0)),n===a.promise?l(T("Promise-chain cycle")):(o=d(n))?o.call(n,A,l):A(n)):l(e)}catch(a){c&&!i&&c.exit(),l(a)}}p._c=[],p._n=!1,u&&!p._h&&h(p)}))}function o(e){var t=this;t._d||(t._d=!0,(t=t._w||t)._v=e,t._s=2,t._a||(t._a=t._c.slice()),n(t,!0))}function h(n){w.call(c,function(){var e,t,r=n._v,a=F(n);if(a&&(e=P(function(){_?B.emit("unhandledRejection",r,n):(t=c.onunhandledrejection)?t({promise:n,reason:r}):(t=c.console)&&t.error&&t.error("Unhandled promise rejection",r)}),n._h=_||F(n)?2:1),n._a=void 0,a&&e.e)throw e.v})}function g(t){w.call(c,function(){var e;_?B.emit("rejectionHandled",t):(e=c.onrejectionhandled)&&e({promise:t,reason:t._v})})}var t,i,s,A,l=r(89),c=r(70),p=r(54),e=r(47),u=r(62),f=r(81),m=r(33),v=r(37),y=r(68),b=r(127),w=r(136).set,x=r(95)(),C=r(96),P=r(114),S=r(148),L=r(115),E="Promise",T=c.TypeError,B=c.process,D=B&&B.versions,M=D&&D.v8||"",k=c[E],_="process"==e(B),N=i=C.f,D=!!(()=>{try{var e=k.resolve(1),t=(e.constructor={})[r(152)("species")]=function(e){e(a,a)};return(_||"function"==typeof PromiseRejectionEvent)&&e.then(a)instanceof t&&0!==M.indexOf("6.6")&&-1===S.indexOf("Chrome/66")}catch(e){}})(),F=function(e){return 1!==e._h&&0===(e._a||e._c).length},I=function(e){var r,a=this;if(!a._d){a._d=!0,a=a._w||a;try{if(a===e)throw T("Promise can't be resolved itself");(r=d(e))?x(function(){var t={_w:a,_d:!1};try{r.call(e,p(I,t,1),p(o,t,1))}catch(e){o.call(t,e)}}):(a._v=e,a._s=1,n(a,!1))}catch(e){o.call({_w:a,_d:!1},e)}}};D||(k=function(e){v(this,k,E,"_h"),m(e),t.call(this);try{e(p(I,this,1),p(o,this,1))}catch(e){o.call(this,e)}},(t=function(e){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1}).prototype=r(117)(k.prototype,{then:function(e,t){var r=N(b(this,k));return r.ok="function"!=typeof e||e,r.fail="function"==typeof t&&t,r.domain=_?B.domain:void 0,this._c.push(r),this._a&&this._a.push(r),this._s&&n(this,!1),r.promise},catch:function(e){return this.then(void 0,e)}}),s=function(){var e=new t;this.promise=e,this.resolve=p(I,e,1),this.reject=p(o,e,1)},C.f=N=function(e){return e===k||e===A?new s:i(e)}),u(u.G+u.W+u.F*!D,{Promise:k}),r(124)(k,E),r(123)(E),A=r(52)[E],u(u.S+u.F*!D,E,{reject:function(e){var t=N(this);return(0,t.reject)(e),t.promise}}),u(u.S+u.F*(l||!D),E,{resolve:function(e){return L(l&&this===A?k:this,e)}}),u(u.S+u.F*!(D&&r(86)(function(e){k.all(e).catch(a)})),E,{all:function(e){var i=this,t=N(i),s=t.resolve,A=t.reject,r=P(function(){var a=[],n=0,o=1;y(e,!1,function(e){var t=n++,r=!1;a.push(void 0),o++,i.resolve(e).then(function(e){r||(r=!0,a[t]=e,--o)||s(a)},A)}),--o||s(a)});return r.e&&A(r.v),t.promise},race:function(e){var t=this,r=N(t),a=r.reject,n=P(function(){y(e,!1,function(e){t.resolve(e).then(r.resolve,a)})});return n.e&&a(n.v),r.promise}})},{114:114,115:115,117:117,123:123,124:124,127:127,136:136,148:148,152:152,33:33,37:37,47:47,52:52,54:54,62:62,68:68,70:70,81:81,86:86,89:89,95:95,96:96}],233:[function(e,t,r){var a=e(62),n=e(33),o=e(38),i=(e(70).Reflect||{}).apply,s=Function.apply;a(a.S+a.F*!e(64)(function(){i(function(){})}),"Reflect",{apply:function(e,t,r){e=n(e),r=o(r);return i?i(e,t,r):s.call(e,t,r)}})},{33:33,38:38,62:62,64:64,70:70}],234:[function(e,t,r){var a=e(62),n=e(98),o=e(33),i=e(38),s=e(81),A=e(64),l=e(46),c=(e(70).Reflect||{}).construct,p=A(function(){function e(){}return!(c(function(){},[],e)instanceof e)}),u=!A(function(){c(function(){})});a(a.S+a.F*(p||u),"Reflect",{construct:function(e,t){o(e),i(t);var r=arguments.length<3?e:o(arguments[2]);if(u&&!p)return c(e,t,r);if(e==r){switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3])}var a=[null];return a.push.apply(a,t),new(l.apply(e,a))}a=r.prototype,r=n(s(a)?a:Object.prototype),a=Function.apply.call(e,r,t);return s(a)?a:r}})},{33:33,38:38,46:46,62:62,64:64,70:70,81:81,98:98}],235:[function(e,t,r){var a=e(99),n=e(62),o=e(38),i=e(143);n(n.S+n.F*e(64)(function(){Reflect.defineProperty(a.f({},1,{value:1}),1,{value:2})}),"Reflect",{defineProperty:function(e,t,r){o(e),t=i(t,!0),o(r);try{return a.f(e,t,r),!0}catch(e){return!1}}})},{143:143,38:38,62:62,64:64,99:99}],236:[function(e,t,r){var a=e(62),n=e(101).f,o=e(38);a(a.S,"Reflect",{deleteProperty:function(e,t){var r=n(o(e),t);return!(r&&!r.configurable)&&delete e[t]}})},{101:101,38:38,62:62}],237:[function(e,t,r){function a(e){this._t=o(e),this._i=0;var t,r=this._k=[];for(t in e)r.push(t)}var n=e(62),o=e(38);e(84)(a,"Object",function(){var e,t=this._k;do{if(this._i>=t.length)return{value:void 0,done:!0}}while(!((e=t[this._i++])in this._t));return{value:e,done:!1}}),n(n.S,"Reflect",{enumerate:function(e){return new a(e)}})},{38:38,62:62,84:84}],238:[function(e,t,r){var a=e(101),n=e(62),o=e(38);n(n.S,"Reflect",{getOwnPropertyDescriptor:function(e,t){return a.f(o(e),t)}})},{101:101,38:38,62:62}],239:[function(e,t,r){var a=e(62),n=e(105),o=e(38);a(a.S,"Reflect",{getPrototypeOf:function(e){return n(o(e))}})},{105:105,38:38,62:62}],240:[function(e,t,r){var o=e(101),i=e(105),s=e(71),a=e(62),A=e(81),l=e(38);a(a.S,"Reflect",{get:function e(t,r){var a,n=arguments.length<3?t:arguments[2];return l(t)===n?t[r]:(a=o.f(t,r))?s(a,"value")?a.value:void 0!==a.get?a.get.call(n):void 0:A(a=i(t))?e(a,r,n):void 0}})},{101:101,105:105,38:38,62:62,71:71,81:81}],241:[function(e,t,r){e=e(62);e(e.S,"Reflect",{has:function(e,t){return t in e}})},{62:62}],242:[function(e,t,r){var a=e(62),n=e(38),o=Object.isExtensible;a(a.S,"Reflect",{isExtensible:function(e){return n(e),!o||o(e)}})},{38:38,62:62}],243:[function(e,t,r){var a=e(62);a(a.S,"Reflect",{ownKeys:e(111)})},{111:111,62:62}],244:[function(e,t,r){var a=e(62),n=e(38),o=Object.preventExtensions;a(a.S,"Reflect",{preventExtensions:function(e){n(e);try{return o&&o(e),!0}catch(e){return!1}}})},{38:38,62:62}],245:[function(e,t,r){var a=e(62),n=e(122);n&&a(a.S,"Reflect",{setPrototypeOf:function(e,t){n.check(e,t);try{return n.set(e,t),!0}catch(e){return!1}}})},{122:122,62:62}],246:[function(e,t,r){var i=e(99),s=e(101),A=e(105),l=e(71),a=e(62),c=e(116),p=e(38),u=e(81);a(a.S,"Reflect",{set:function e(t,r,a){var n=arguments.length<4?t:arguments[3],o=s.f(p(t),r);if(!o){if(u(t=A(t)))return e(t,r,a,n);o=c(0)}if(l(o,"value")){if(!1===o.writable||!u(n))return!1;if(t=s.f(n,r)){if(t.get||t.set||!1===t.writable)return!1;t.value=a,i.f(n,r,t)}else i.f(n,r,c(0,a));return!0}return void 0!==o.set&&(o.set.call(n,a),!0)}})},{101:101,105:105,116:116,38:38,62:62,71:71,81:81,99:99}],247:[function(e,t,r){var a=e(70),o=e(75),n=e(99).f,i=e(103).f,s=e(82),A=e(66),l=d=a.RegExp,c=d.prototype,p=/a/g,u=/a/g,f=new d(p)!==p;if(e(58)&&(!f||e(64)(function(){return u[e(152)("match")]=!1,d(p)!=p||d(u)==u||"/a/i"!=d(p,"i")}))){for(var d=function(e,t){var r=this instanceof d,a=s(e),n=void 0===t;return!r&&a&&e.constructor===d&&n?e:o(f?new l(a&&!n?e.source:e,t):l((a=e instanceof d)?e.source:e,a&&n?A.call(e):t),r?this:c,d)},h=i(l),g=0;h.length>g;)(t=>{t in d||n(d,t,{configurable:!0,get:function(){return l[t]},set:function(e){l[t]=e}})})(h[g++]);(c.constructor=d).prototype=c,e(118)(a,"RegExp",d)}e(123)("RegExp")},{103:103,118:118,123:123,152:152,58:58,64:64,66:66,70:70,75:75,82:82,99:99}],248:[function(e,t,r){var a=e(120);e(62)({target:"RegExp",proto:!0,forced:a!==/./.exec},{exec:a})},{120:120,62:62}],249:[function(e,t,r){e(58)&&"g"!=/./g.flags&&e(99).f(RegExp.prototype,"flags",{configurable:!0,get:e(66)})},{58:58,66:66,99:99}],250:[function(e,t,r){var c=e(38),p=e(141),u=e(36),f=e(119);e(65)("match",1,function(a,n,A,l){return[function(e){var t=a(this),r=null==e?void 0:e[n];return void 0!==r?r.call(e,t):new RegExp(e)[n](String(t))},function(e){var t=l(A,e,this);if(t.done)return t.value;var r=c(e),a=String(this);if(!r.global)return f(r,a);for(var n=r.unicode,o=[],i=r.lastIndex=0;null!==(s=f(r,a));){var s=String(s[0]);""===(o[i]=s)&&(r.lastIndex=u(a,p(r.lastIndex),n)),i++}return 0===i?null:o}]})},{119:119,141:141,36:36,38:38,65:65}],251:[function(e,t,r){var x=e(38),C=e(142),P=e(141),S=e(139),L=e(36),E=e(119),T=Math.max,B=Math.min,D=Math.floor,k=/\$([$&`']|\d\d?|<[^>]*>)/g,_=/\$([$&`']|\d\d?)/g;e(65)("replace",2,function(n,o,b,w){return[function(e,t){var r=n(this),a=null==e?void 0:e[o];return void 0!==a?a.call(e,r,t):b.call(String(r),e,t)},function(e,t){var r=w(b,e,this,t);if(r.done)return r.value;var a,n=x(e),o=String(this),i="function"==typeof t,s=(i||(t=String(t)),n.global);s&&(a=n.unicode,n.lastIndex=0);for(var A=[];;){var l=E(n,o);if(null===l)break;if(A.push(l),!s)break;""===String(l[0])&&(n.lastIndex=L(o,P(n.lastIndex),a))}for(var c,p="",u=0,f=0;f{var c=s+o.length,p=A.length,t=_;return void 0!==l&&(l=C(l),t=k),b.call(e,t,function(e,t){var r;switch(t.charAt(0)){case"$":return"$";case"&":return o;case"`":return i.slice(0,s);case"'":return i.slice(c);case"<":r=l[t.slice(1,-1)];break;default:var a,n=+t;if(0==n)return e;if(p>>0,c=new RegExp(e.source,s+"g");(a=u.call(c,r))&&!(A<(n=c[P])&&(i.push(r.slice(A,a.index)),1>>0;if(0==s)return[];if(0===a.length)return null===w(i,a)?[a]:[];for(var A=0,l=0,c=[];l>10),t%1024+56320))}return r.join("")}})},{137:137,62:62}],266:[function(e,t,r){var a=e(62),n=e(130);a(a.P+a.F*e(63)("includes"),"String",{includes:function(e){return!!~n(this,e,"includes").indexOf(e,1=e.length?{value:void 0,done:!0}:(e=a(e,t),this._i+=e.length,{value:e,done:!1})})},{129:129,85:85}],269:[function(e,t,r){e(131)("link",function(t){return function(e){return t(this,"a","href",e)}})},{131:131}],270:[function(e,t,r){var a=e(62),i=e(140),s=e(141);a(a.S,"String",{raw:function(e){for(var t=i(e.raw),r=s(t.length),a=arguments.length,n=[],o=0;on;)l(B,t=r[n++])||t==E||t==z||a.push(t);return a}function i(e){for(var t,r=e===k,a=Z(r?D:m(e)),n=[],o=0;a.length>o;)!l(B,t=a[o++])||r&&!l(k,t)||n.push(B[t]);return n}function s(e,t,r){return e===k&&s(D,t,r),g(e),t=v(t,!0),g(r),(l(B,t)?(r.enumerable?(l(e,E)&&e[E][t]&&(e[E][t]=!1),r=b(r,{enumerable:y(0,!1)})):(l(e,E)||x(e,E,y(1,{})),e[E][t]=!0),F):x)(e,t,r)}var A=e(70),l=e(71),c=e(58),p=e(62),M=e(118),z=e(94).KEY,u=e(64),f=e(126),d=e(124),U=e(147),h=e(152),j=e(151),G=e(150),Q=e(61),W=e(79),g=e(38),Y=e(81),X=e(142),m=e(140),v=e(143),y=e(116),b=e(98),H=e(102),V=e(101),w=e(104),q=e(99),J=e(107),K=V.f,x=q.f,Z=H.f,C=A.Symbol,P=A.JSON,S=P&&P.stringify,L="prototype",E=h("_hidden"),$=h("toPrimitive"),ee={}.propertyIsEnumerable,T=f("symbol-registry"),B=f("symbols"),D=f("op-symbols"),k=Object[L],f="function"==typeof C&&!!w.f,_=A.QObject,N=!_||!_[L]||!_[L].findChild,F=c&&u(function(){return 7!=b(x({},"a",{get:function(){return x(this,"a",{value:7}).a}})).a})?function(e,t,r){var a=K(k,t);a&&delete k[t],x(e,t,r),a&&e!==k&&x(k,t,a)}:x,I=f&&"symbol"==typeof C.iterator?function(e){return"symbol"==typeof e}:function(e){return e instanceof C};f||(M((C=function(){if(this instanceof C)throw TypeError("Symbol is not a constructor!");var t=U(0re;)h(te[re++]);for(var ae=J(h.store),ne=0;ae.length>ne;)G(ae[ne++]);p(p.S+p.F*!f,"Symbol",{for:function(e){return l(T,e+="")?T[e]:T[e]=C(e)},keyFor:function(e){if(!I(e))throw TypeError(e+" is not a symbol!");for(var t in T)if(T[t]===e)return t},useSetter:function(){N=!0},useSimple:function(){N=!1}}),p(p.S+p.F*!f,"Object",{create:function(e,t){return void 0===t?b(e):r(b(e),t)},defineProperty:s,defineProperties:r,getOwnPropertyDescriptor:n,getOwnPropertyNames:o,getOwnPropertySymbols:i});_=u(function(){w.f(1)});p(p.S+p.F*_,"Object",{getOwnPropertySymbols:function(e){return w.f(X(e))}}),P&&p(p.S+p.F*(!f||u(function(){var e=C();return"[null]"!=S([e])||"{}"!=S({a:e})||"{}"!=S(Object(e))})),"JSON",{stringify:function(e){for(var t,r,a=[e],n=1;ns;)void 0!==(r=n(a,t=o[s++]))&&p(i,t,r);return i}})},{101:101,111:111,140:140,53:53,62:62}],296:[function(e,t,r){var a=e(62),n=e(110)(!1);a(a.S,"Object",{values:function(e){return n(e)}})},{110:110,62:62}],297:[function(e,t,r){var a=e(62),n=e(52),o=e(70),i=e(127),s=e(115);a(a.P+a.R,"Promise",{finally:function(t){var r=i(this,n.Promise||o.Promise),e="function"==typeof t;return this.then(e?function(e){return s(r,t()).then(function(){return e})}:t,e?function(e){return s(r,t()).then(function(){throw e})}:t)}})},{115:115,127:127,52:52,62:62,70:70}],298:[function(e,t,r){var a=e(62),n=e(132),e=e(148),e=/Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(e);a(a.P+a.F*e,"String",{padEnd:function(e){return n(this,e,1{function c(e,i,s,A){return new(s=s||Promise)(function(r,t){function a(e){try{o(A.next(e))}catch(e){t(e)}}function n(e){try{o(A.throw(e))}catch(e){t(e)}}function o(e){var t;e.done?r(e.value):((t=e.value)instanceof s?t:new s(function(e){e(t)})).then(a,n)}o((A=A.apply(e,i||[])).next())})}let F=914400,m=12700,A="\r\n",D=/^[0-9a-fA-F]{6}$/,k=1.67,_=27,u={type:"solid",color:"666666",pt:1},Q=[.05,.1,.05,.1],p={color:"363636",pt:1},f={color:"888888",style:"solid",size:1,cap:"flat"},d="000000",v=12,N=18,o="LAYOUT_16x9",t="DEFAULT",l={type:"outer",blur:3,offset:23e3/12700,angle:90,color:"000000",opacity:.35,rotateWithShape:!0},y=[.5,.5,.5,.5],W={color:"000000"},Y={size:8,color:"FFFFFF",opacity:.75},h="2094734552",X="2094734553",g="2094734554",H="2094734555",V="2094734556",r="ABCDEFGHIJKLMNOPQRSTUVWXYZ".split(""),q=["C0504D","4F81BD","9BBB59","8064A2","4BACC6","F79646","628FC6","C86360","C0504D","4F81BD","9BBB59","8064A2","4BACC6","F79646","628FC6","C86360"],J=["5DA5DA","FAA43A","60BD68","F17CB0","B2912F","B276B2","DECF3F","F15854","A7A7A7","5DA5DA","FAA43A","60BD68","F17CB0","B2912F","B276B2","DECF3F","F15854","A7A7A7"];var i,s,a,K,Z,n,$,ee,b,w,te,x,I,re,C,e;(e=i=i||{}).left="left",e.center="center",e.right="right",e.justify="justify",(e=s=s||{}).b="b",e.ctr="ctr",e.t="t";let ae="{F7021451-1387-4CA6-816F-3879F97B5CBC}",P=((e=a=a||{}).arraybuffer="arraybuffer",e.base64="base64",e.binarystring="binarystring",e.blob="blob",e.nodebuffer="nodebuffer",e.uint8array="uint8array",(e=K=K||{}).area="area",e.bar="bar",e.bar3d="bar3D",e.bubble="bubble",e.bubble3d="bubble3D",e.doughnut="doughnut",e.line="line",e.pie="pie",e.radar="radar",e.scatter="scatter",(e=Z=Z||{}).accentBorderCallout1="accentBorderCallout1",e.accentBorderCallout2="accentBorderCallout2",e.accentBorderCallout3="accentBorderCallout3",e.accentCallout1="accentCallout1",e.accentCallout2="accentCallout2",e.accentCallout3="accentCallout3",e.actionButtonBackPrevious="actionButtonBackPrevious",e.actionButtonBeginning="actionButtonBeginning",e.actionButtonBlank="actionButtonBlank",e.actionButtonDocument="actionButtonDocument",e.actionButtonEnd="actionButtonEnd",e.actionButtonForwardNext="actionButtonForwardNext",e.actionButtonHelp="actionButtonHelp",e.actionButtonHome="actionButtonHome",e.actionButtonInformation="actionButtonInformation",e.actionButtonMovie="actionButtonMovie",e.actionButtonReturn="actionButtonReturn",e.actionButtonSound="actionButtonSound",e.arc="arc",e.bentArrow="bentArrow",e.bentUpArrow="bentUpArrow",e.bevel="bevel",e.blockArc="blockArc",e.borderCallout1="borderCallout1",e.borderCallout2="borderCallout2",e.borderCallout3="borderCallout3",e.bracePair="bracePair",e.bracketPair="bracketPair",e.callout1="callout1",e.callout2="callout2",e.callout3="callout3",e.can="can",e.chartPlus="chartPlus",e.chartStar="chartStar",e.chartX="chartX",e.chevron="chevron",e.chord="chord",e.circularArrow="circularArrow",e.cloud="cloud",e.cloudCallout="cloudCallout",e.corner="corner",e.cornerTabs="cornerTabs",e.cube="cube",e.curvedDownArrow="curvedDownArrow",e.curvedLeftArrow="curvedLeftArrow",e.curvedRightArrow="curvedRightArrow",e.curvedUpArrow="curvedUpArrow",e.custGeom="custGeom",e.decagon="decagon",e.diagStripe="diagStripe",e.diamond="diamond",e.dodecagon="dodecagon",e.donut="donut",e.doubleWave="doubleWave",e.downArrow="downArrow",e.downArrowCallout="downArrowCallout",e.ellipse="ellipse",e.ellipseRibbon="ellipseRibbon",e.ellipseRibbon2="ellipseRibbon2",e.flowChartAlternateProcess="flowChartAlternateProcess",e.flowChartCollate="flowChartCollate",e.flowChartConnector="flowChartConnector",e.flowChartDecision="flowChartDecision",e.flowChartDelay="flowChartDelay",e.flowChartDisplay="flowChartDisplay",e.flowChartDocument="flowChartDocument",e.flowChartExtract="flowChartExtract",e.flowChartInputOutput="flowChartInputOutput",e.flowChartInternalStorage="flowChartInternalStorage",e.flowChartMagneticDisk="flowChartMagneticDisk",e.flowChartMagneticDrum="flowChartMagneticDrum",e.flowChartMagneticTape="flowChartMagneticTape",e.flowChartManualInput="flowChartManualInput",e.flowChartManualOperation="flowChartManualOperation",e.flowChartMerge="flowChartMerge",e.flowChartMultidocument="flowChartMultidocument",e.flowChartOfflineStorage="flowChartOfflineStorage",e.flowChartOffpageConnector="flowChartOffpageConnector",e.flowChartOnlineStorage="flowChartOnlineStorage",e.flowChartOr="flowChartOr",e.flowChartPredefinedProcess="flowChartPredefinedProcess",e.flowChartPreparation="flowChartPreparation",e.flowChartProcess="flowChartProcess",e.flowChartPunchedCard="flowChartPunchedCard",e.flowChartPunchedTape="flowChartPunchedTape",e.flowChartSort="flowChartSort",e.flowChartSummingJunction="flowChartSummingJunction",e.flowChartTerminator="flowChartTerminator",e.folderCorner="folderCorner",e.frame="frame",e.funnel="funnel",e.gear6="gear6",e.gear9="gear9",e.halfFrame="halfFrame",e.heart="heart",e.heptagon="heptagon",e.hexagon="hexagon",e.homePlate="homePlate",e.horizontalScroll="horizontalScroll",e.irregularSeal1="irregularSeal1",e.irregularSeal2="irregularSeal2",e.leftArrow="leftArrow",e.leftArrowCallout="leftArrowCallout",e.leftBrace="leftBrace",e.leftBracket="leftBracket",e.leftCircularArrow="leftCircularArrow",e.leftRightArrow="leftRightArrow",e.leftRightArrowCallout="leftRightArrowCallout",e.leftRightCircularArrow="leftRightCircularArrow",e.leftRightRibbon="leftRightRibbon",e.leftRightUpArrow="leftRightUpArrow",e.leftUpArrow="leftUpArrow",e.lightningBolt="lightningBolt",e.line="line",e.lineInv="lineInv",e.mathDivide="mathDivide",e.mathEqual="mathEqual",e.mathMinus="mathMinus",e.mathMultiply="mathMultiply",e.mathNotEqual="mathNotEqual",e.mathPlus="mathPlus",e.moon="moon",e.noSmoking="noSmoking",e.nonIsoscelesTrapezoid="nonIsoscelesTrapezoid",e.notchedRightArrow="notchedRightArrow",e.octagon="octagon",e.parallelogram="parallelogram",e.pentagon="pentagon",e.pie="pie",e.pieWedge="pieWedge",e.plaque="plaque",e.plaqueTabs="plaqueTabs",e.plus="plus",e.quadArrow="quadArrow",e.quadArrowCallout="quadArrowCallout",e.rect="rect",e.ribbon="ribbon",e.ribbon2="ribbon2",e.rightArrow="rightArrow",e.rightArrowCallout="rightArrowCallout",e.rightBrace="rightBrace",e.rightBracket="rightBracket",e.round1Rect="round1Rect",e.round2DiagRect="round2DiagRect",e.round2SameRect="round2SameRect",e.roundRect="roundRect",e.rtTriangle="rtTriangle",e.smileyFace="smileyFace",e.snip1Rect="snip1Rect",e.snip2DiagRect="snip2DiagRect",e.snip2SameRect="snip2SameRect",e.snipRoundRect="snipRoundRect",e.squareTabs="squareTabs",e.star10="star10",e.star12="star12",e.star16="star16",e.star24="star24",e.star32="star32",e.star4="star4",e.star5="star5",e.star6="star6",e.star7="star7",e.star8="star8",e.stripedRightArrow="stripedRightArrow",e.sun="sun",e.swooshArrow="swooshArrow",e.teardrop="teardrop",e.trapezoid="trapezoid",e.triangle="triangle",e.upArrow="upArrow",e.upArrowCallout="upArrowCallout",e.upDownArrow="upDownArrow",e.upDownArrowCallout="upDownArrowCallout",e.uturnArrow="uturnArrow",e.verticalScroll="verticalScroll",e.wave="wave",e.wedgeEllipseCallout="wedgeEllipseCallout",e.wedgeRectCallout="wedgeRectCallout",e.wedgeRoundRectCallout="wedgeRoundRectCallout",(e=n=n||{}).text1="tx1",e.text2="tx2",e.background1="bg1",e.background2="bg2",e.accent1="accent1",e.accent2="accent2",e.accent3="accent3",e.accent4="accent4",e.accent5="accent5",e.accent6="accent6",(e=$=$||{}).left="left",e.center="center",e.right="right",e.justify="justify",(e=ee=ee||{}).top="top",e.middle="middle",e.bottom="bottom",(e=b=b||{}).ACTION_BUTTON_BACK_OR_PREVIOUS="actionButtonBackPrevious",e.ACTION_BUTTON_BEGINNING="actionButtonBeginning",e.ACTION_BUTTON_CUSTOM="actionButtonBlank",e.ACTION_BUTTON_DOCUMENT="actionButtonDocument",e.ACTION_BUTTON_END="actionButtonEnd",e.ACTION_BUTTON_FORWARD_OR_NEXT="actionButtonForwardNext",e.ACTION_BUTTON_HELP="actionButtonHelp",e.ACTION_BUTTON_HOME="actionButtonHome",e.ACTION_BUTTON_INFORMATION="actionButtonInformation",e.ACTION_BUTTON_MOVIE="actionButtonMovie",e.ACTION_BUTTON_RETURN="actionButtonReturn",e.ACTION_BUTTON_SOUND="actionButtonSound",e.ARC="arc",e.BALLOON="wedgeRoundRectCallout",e.BENT_ARROW="bentArrow",e.BENT_UP_ARROW="bentUpArrow",e.BEVEL="bevel",e.BLOCK_ARC="blockArc",e.CAN="can",e.CHART_PLUS="chartPlus",e.CHART_STAR="chartStar",e.CHART_X="chartX",e.CHEVRON="chevron",e.CHORD="chord",e.CIRCULAR_ARROW="circularArrow",e.CLOUD="cloud",e.CLOUD_CALLOUT="cloudCallout",e.CORNER="corner",e.CORNER_TABS="cornerTabs",e.CROSS="plus",e.CUBE="cube",e.CURVED_DOWN_ARROW="curvedDownArrow",e.CURVED_DOWN_RIBBON="ellipseRibbon",e.CURVED_LEFT_ARROW="curvedLeftArrow",e.CURVED_RIGHT_ARROW="curvedRightArrow",e.CURVED_UP_ARROW="curvedUpArrow",e.CURVED_UP_RIBBON="ellipseRibbon2",e.CUSTOM_GEOMETRY="custGeom",e.DECAGON="decagon",e.DIAGONAL_STRIPE="diagStripe",e.DIAMOND="diamond",e.DODECAGON="dodecagon",e.DONUT="donut",e.DOUBLE_BRACE="bracePair",e.DOUBLE_BRACKET="bracketPair",e.DOUBLE_WAVE="doubleWave",e.DOWN_ARROW="downArrow",e.DOWN_ARROW_CALLOUT="downArrowCallout",e.DOWN_RIBBON="ribbon",e.EXPLOSION1="irregularSeal1",e.EXPLOSION2="irregularSeal2",e.FLOWCHART_ALTERNATE_PROCESS="flowChartAlternateProcess",e.FLOWCHART_CARD="flowChartPunchedCard",e.FLOWCHART_COLLATE="flowChartCollate",e.FLOWCHART_CONNECTOR="flowChartConnector",e.FLOWCHART_DATA="flowChartInputOutput",e.FLOWCHART_DECISION="flowChartDecision",e.FLOWCHART_DELAY="flowChartDelay",e.FLOWCHART_DIRECT_ACCESS_STORAGE="flowChartMagneticDrum",e.FLOWCHART_DISPLAY="flowChartDisplay",e.FLOWCHART_DOCUMENT="flowChartDocument",e.FLOWCHART_EXTRACT="flowChartExtract",e.FLOWCHART_INTERNAL_STORAGE="flowChartInternalStorage",e.FLOWCHART_MAGNETIC_DISK="flowChartMagneticDisk",e.FLOWCHART_MANUAL_INPUT="flowChartManualInput",e.FLOWCHART_MANUAL_OPERATION="flowChartManualOperation",e.FLOWCHART_MERGE="flowChartMerge",e.FLOWCHART_MULTIDOCUMENT="flowChartMultidocument",e.FLOWCHART_OFFLINE_STORAGE="flowChartOfflineStorage",e.FLOWCHART_OFFPAGE_CONNECTOR="flowChartOffpageConnector",e.FLOWCHART_OR="flowChartOr",e.FLOWCHART_PREDEFINED_PROCESS="flowChartPredefinedProcess",e.FLOWCHART_PREPARATION="flowChartPreparation",e.FLOWCHART_PROCESS="flowChartProcess",e.FLOWCHART_PUNCHED_TAPE="flowChartPunchedTape",e.FLOWCHART_SEQUENTIAL_ACCESS_STORAGE="flowChartMagneticTape",e.FLOWCHART_SORT="flowChartSort",e.FLOWCHART_STORED_DATA="flowChartOnlineStorage",e.FLOWCHART_SUMMING_JUNCTION="flowChartSummingJunction",e.FLOWCHART_TERMINATOR="flowChartTerminator",e.FOLDED_CORNER="folderCorner",e.FRAME="frame",e.FUNNEL="funnel",e.GEAR_6="gear6",e.GEAR_9="gear9",e.HALF_FRAME="halfFrame",e.HEART="heart",e.HEPTAGON="heptagon",e.HEXAGON="hexagon",e.HORIZONTAL_SCROLL="horizontalScroll",e.ISOSCELES_TRIANGLE="triangle",e.LEFT_ARROW="leftArrow",e.LEFT_ARROW_CALLOUT="leftArrowCallout",e.LEFT_BRACE="leftBrace",e.LEFT_BRACKET="leftBracket",e.LEFT_CIRCULAR_ARROW="leftCircularArrow",e.LEFT_RIGHT_ARROW="leftRightArrow",e.LEFT_RIGHT_ARROW_CALLOUT="leftRightArrowCallout",e.LEFT_RIGHT_CIRCULAR_ARROW="leftRightCircularArrow",e.LEFT_RIGHT_RIBBON="leftRightRibbon",e.LEFT_RIGHT_UP_ARROW="leftRightUpArrow",e.LEFT_UP_ARROW="leftUpArrow",e.LIGHTNING_BOLT="lightningBolt",e.LINE_CALLOUT_1="borderCallout1",e.LINE_CALLOUT_1_ACCENT_BAR="accentCallout1",e.LINE_CALLOUT_1_BORDER_AND_ACCENT_BAR="accentBorderCallout1",e.LINE_CALLOUT_1_NO_BORDER="callout1",e.LINE_CALLOUT_2="borderCallout2",e.LINE_CALLOUT_2_ACCENT_BAR="accentCallout2",e.LINE_CALLOUT_2_BORDER_AND_ACCENT_BAR="accentBorderCallout2",e.LINE_CALLOUT_2_NO_BORDER="callout2",e.LINE_CALLOUT_3="borderCallout3",e.LINE_CALLOUT_3_ACCENT_BAR="accentCallout3",e.LINE_CALLOUT_3_BORDER_AND_ACCENT_BAR="accentBorderCallout3",e.LINE_CALLOUT_3_NO_BORDER="callout3",e.LINE_CALLOUT_4="borderCallout4",e.LINE_CALLOUT_4_ACCENT_BAR="accentCallout3=4",e.LINE_CALLOUT_4_BORDER_AND_ACCENT_BAR="accentBorderCallout4",e.LINE_CALLOUT_4_NO_BORDER="callout4",e.LINE="line",e.LINE_INVERSE="lineInv",e.MATH_DIVIDE="mathDivide",e.MATH_EQUAL="mathEqual",e.MATH_MINUS="mathMinus",e.MATH_MULTIPLY="mathMultiply",e.MATH_NOT_EQUAL="mathNotEqual",e.MATH_PLUS="mathPlus",e.MOON="moon",e.NON_ISOSCELES_TRAPEZOID="nonIsoscelesTrapezoid",e.NOTCHED_RIGHT_ARROW="notchedRightArrow",e.NO_SYMBOL="noSmoking",e.OCTAGON="octagon",e.OVAL="ellipse",e.OVAL_CALLOUT="wedgeEllipseCallout",e.PARALLELOGRAM="parallelogram",e.PENTAGON="homePlate",e.PIE="pie",e.PIE_WEDGE="pieWedge",e.PLAQUE="plaque",e.PLAQUE_TABS="plaqueTabs",e.QUAD_ARROW="quadArrow",e.QUAD_ARROW_CALLOUT="quadArrowCallout",e.RECTANGLE="rect",e.RECTANGULAR_CALLOUT="wedgeRectCallout",e.REGULAR_PENTAGON="pentagon",e.RIGHT_ARROW="rightArrow",e.RIGHT_ARROW_CALLOUT="rightArrowCallout",e.RIGHT_BRACE="rightBrace",e.RIGHT_BRACKET="rightBracket",e.RIGHT_TRIANGLE="rtTriangle",e.ROUNDED_RECTANGLE="roundRect",e.ROUNDED_RECTANGULAR_CALLOUT="wedgeRoundRectCallout",e.ROUND_1_RECTANGLE="round1Rect",e.ROUND_2_DIAG_RECTANGLE="round2DiagRect",e.ROUND_2_SAME_RECTANGLE="round2SameRect",e.SMILEY_FACE="smileyFace",e.SNIP_1_RECTANGLE="snip1Rect",e.SNIP_2_DIAG_RECTANGLE="snip2DiagRect",e.SNIP_2_SAME_RECTANGLE="snip2SameRect",e.SNIP_ROUND_RECTANGLE="snipRoundRect",e.SQUARE_TABS="squareTabs",e.STAR_10_POINT="star10",e.STAR_12_POINT="star12",e.STAR_16_POINT="star16",e.STAR_24_POINT="star24",e.STAR_32_POINT="star32",e.STAR_4_POINT="star4",e.STAR_5_POINT="star5",e.STAR_6_POINT="star6",e.STAR_7_POINT="star7",e.STAR_8_POINT="star8",e.STRIPED_RIGHT_ARROW="stripedRightArrow",e.SUN="sun",e.SWOOSH_ARROW="swooshArrow",e.TEAR="teardrop",e.TRAPEZOID="trapezoid",e.UP_ARROW="upArrow",e.UP_ARROW_CALLOUT="upArrowCallout",e.UP_DOWN_ARROW="upDownArrow",e.UP_DOWN_ARROW_CALLOUT="upDownArrowCallout",e.UP_RIBBON="ribbon2",e.U_TURN_ARROW="uturnArrow",e.VERTICAL_SCROLL="verticalScroll",e.WAVE="wave",(e=w=w||{}).AREA="area",e.BAR="bar",e.BAR3D="bar3D",e.BUBBLE="bubble",e.BUBBLE3D="bubble3D",e.DOUGHNUT="doughnut",e.LINE="line",e.PIE="pie",e.RADAR="radar",e.SCATTER="scatter",(e=te=te||{}).TEXT1="tx1",e.TEXT2="tx2",e.BACKGROUND1="bg1",e.BACKGROUND2="bg2",e.ACCENT1="accent1",e.ACCENT2="accent2",e.ACCENT3="accent3",e.ACCENT4="accent4",e.ACCENT5="accent5",e.ACCENT6="accent6",(e=x=x||{}).chart="chart",e.image="image",e.line="line",e.rect="rect",e.text="text",e.placeholder="placeholder",(e=I=I||{}).chart="chart",e.hyperlink="hyperlink",e.image="image",e.media="media",e.online="online",e.placeholder="placeholder",e.table="table",e.tablecell="tablecell",e.text="text",e.notes="notes",(e=re=re||{}).title="title",e.body="body",e.image="pic",e.chart="chart",e.table="tbl",e.media="media",(e=C=C||{}).DEFAULT="•",e.CHECK="✓",e.STAR="★",e.TRIANGLE="▶","data:image/png;base64,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");function R(e,t,r){return"number"==typeof(e="string"!=typeof e||isNaN(Number(e))?e:Number(e))&&e<100?M(e):"number"==typeof e&&100<=e?e:"string"==typeof e&&e.includes("%")?(!t||"X"!==t)&&t&&"Y"===t?Math.round(parseFloat(e)/100*r.height):Math.round(parseFloat(e)/100*r.width):0}function ne(e){return e.replace(/[xy]/g,function(e){var t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)})}function O(e){return void 0===e||null==e?"":e.toString().replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function M(e){return"number"==typeof e&&100${t}`:``}function G(e){let t="solid",r="",a="",n="";return e&&("string"==typeof e?r=e:(e.type&&(t=e.type),e.color&&(r=e.color),e.alpha&&(a+=``),e.transparency&&(a+=``)),"solid"===t?n+=`${j(r,a)}`:n+=""),n}function S(e){return e._rels.length+e._relsChart.length+e._relsMedia.length+1}function se(e){if(e&&"object"==typeof e)return"outer"!==e.type&&"inner"!==e.type&&"none"!==e.type&&(console.warn("Warning: shadow.type options are `outer`, `inner` or `none`."),e.type="outer"),e.angle&&((isNaN(Number(e.angle))||e.angle<0||359{e=(e=e||{_type:I.tablecell}).options||null;o+=Number(null!==e&&e.colspan?e.colspan:1)}),p.verbose&&console.log("| numCols ......................................... = "+o),!A&&p.colW&&(c=Array.isArray(p.colW)?p.colW.reduce((e,t)=>e+t)*F:p.colW*o||0,p.verbose)&&console.log("| tableCalcW ...................................... = "+c/F),n=c||M((i?i/F:a[1])+a[3]),p.verbose&&console.log("| emuSlideTabW .................................... = "+(n/F).toFixed(1)),!p.colW||!Array.isArray(p.colW))if(p.colW&&!isNaN(Number(p.colW))){let e=[];(t[0]||[]).forEach(()=>e.push(p.colW)),p.colW=[],e.forEach(e=>{Array.isArray(p.colW)&&p.colW.push(e)})}else{p.colW=[];for(let e=0;e{let n=[],r=0,a=0,o=[],i=(t.forEach(e=>{var t;o.push({_type:I.tablecell,text:[],options:e.options}),e.options.margin&&1<=e.options.margin[0]?(null!=(t=e.options)&&t.margin&&e.options.margin[0]&&z(e.options.margin[0])>r?r=z(e.options.margin[0]):null!=p&&p.margin&&p.margin[0]&&z(p.margin[0])>r&&(r=z(p.margin[0])),null!=(t=e.options)&&t.margin&&e.options.margin[2]&&z(e.options.margin[2])>a?a=z(e.options.margin[2]):null!=p&&p.margin&&p.margin[2]&&z(p.margin[2])>a&&(a=z(p.margin[2]))):(null!=(t=e.options)&&t.margin&&e.options.margin[0]&&M(e.options.margin[0])>r?r=M(e.options.margin[0]):null!=p&&p.margin&&p.margin[0]&&M(p.margin[0])>r&&(r=M(p.margin[0])),null!=(t=e.options)&&t.margin&&e.options.margin[2]&&M(e.options.margin[2])>a?a=M(e.options.margin[2]):null!=p&&p.margin&&p.margin[2]&&M(p.margin[2])>a&&(a=M(p.margin[2])))}),h(),f+=r+a,p.verbose&&0===e&&console.log(`| SLIDE [${d.length}]: emuSlideTabH ...... = ${(u/F).toFixed(1)} `),t.forEach((r,a)=>{var e={_type:I.tablecell,_lines:null,_lineHeight:M((null!=(e=r.options)&&e.fontSize?r.options.fontSize:p.fontSize||v)*(k+(p.autoPageLineWeight||0))/100),text:[],options:r.options};e.options.rowspan&&(e._lineHeight=0),e.options.autoPageCharWeight=p.autoPageCharWeight||null;let t=p.colW[a];r.options.colspan&&Array.isArray(p.colW)&&(t=p.colW.filter((e,t)=>a<=t&&te+t)),e._lines=((e,t)=>{var r=2.3+(null!=(r=e.options)&&r.autoPageCharWeight?e.options.autoPageCharWeight:0);let a=Math.floor(t/m*F)/((null!=(t=e.options)&&t.fontSize?e.options.fontSize:v)/r),n=[],o=[],i=[],s=[],A=(e.text&&0===e.text.toString().trim().length?o.push({_type:I.tablecell,text:" "}):"number"==typeof e.text||"string"==typeof e.text?o.push({_type:I.tablecell,text:(e.text||"").toString().trim()}):Array.isArray(e.text)&&(o=e.text),[]);return o.forEach(t=>{var e;"string"==typeof t.text&&(1{A.push({_type:I.tablecell,text:e,options:Object.assign(Object.assign({},t.options),{breakLine:!0})})}):A.push({_type:I.tablecell,text:t.text.trim(),options:t.options}),null!=(e=t.options))&&e.breakLine&&(i.push(A),A=[]),0{e.forEach(a=>{let n=[];let o=String(a.text).split(" ");o.forEach((e,t)=>{var r=Object.assign({},a.options);null!=r&&r.breakLine&&(r.breakLine=t+1===o.length),n.push({_type:I.tablecell,text:e+(t+1{let t=[],r="";e.forEach(e=>{r.length+e.text.length>a&&(n.push(t),t=[],r=""),t.push(e),r+=e.text.toString()}),0{e._lineHeight>=s&&(s=e._lineHeight)}),f+s>u&&(p.verbose&&(console.log("\n|-----------------------------------------------------------------------|"),console.log(`|-- NEW SLIDE CREATED (currTabH+currLineH > maxH) => ${(f/F).toFixed(2)} + ${(l._lineHeight/F).toFixed(2)} > `+u/F),console.log("|-----------------------------------------------------------------------|\n\n")),0e.text.length).reduce((e,t)=>e+t)&&g.rows.push(o),d.push(g),c=[],g={rows:c},o=[],t.forEach(e=>o.push({_type:I.tablecell,text:[],options:e.options})),h(),f+=r+a,p.verbose&&console.log(`| SLIDE [${d.length}]: emuSlideTabH ...... = ${(u/F).toFixed(1)} `),f=0,(p.addHeaderToEach||p.autoPageRepeatHeader)&&p._arrObjTabHeadRows&&p._arrObjTabHeadRows.forEach(e=>{let t=[],r=0;e.forEach(e=>{t.push(e),e._lineHeight>r&&(r=e._lineHeight)}),g.rows.push(t),f+=r}),e=o[i]);var c=l._lines.shift(),l=(Array.isArray(e.text)&&(c?e.text=e.text.concat(c):0===e.text.length&&(e.text=e.text.concat({_type:I.tablecell,text:""}))),i===n.length-1&&(f+=s),i=ie._lines.length).reduce((e,t)=>e+t));0===l&&(A=!0)}0{A=A.concat(e.data)}),r||a):(A=r,a),A.forEach((e,t)=>{e._dataIndex=t,void 0===e.labels||Array.isArray(e.labels[0])||(e.labels=[e.labels])}),s&&"object"==typeof s?s:{});l._type=t,l.x=void 0===l.x||null==l.x||isNaN(Number(l.x))?1:l.x,l.y=void 0===l.y||null==l.y||isNaN(Number(l.y))?1:l.y,l.w=l.w||"50%",l.h=l.h||"50%",l.objectName=l.objectName?O(l.objectName):"Chart "+e._slideObjects.filter(e=>e._type===I.chart).length,["bar","col"].includes(l.barDir||"")||(l.barDir="col"),l._type!==w.AREA||["stacked","standard","percentStacked"].includes(l.barGrouping||"")||(l.barGrouping="standard"),l._type!==w.BAR||["clustered","stacked","percentStacked"].includes(l.barGrouping||"")||(l.barGrouping="clustered"),l._type!==w.BAR3D||["clustered","stacked","standard","percentStacked"].includes(l.barGrouping||"")||(l.barGrouping="standard"),null!=(r=l.barGrouping)&&r.includes("tacked")&&!l.barGapWidthPct&&(l.barGapWidthPct=50),l.dataLabelPosition&&(l._type!==w.AREA&&l._type!==w.BAR3D&&l._type!==w.DOUGHNUT&&l._type!==w.RADAR||delete l.dataLabelPosition,l._type!==w.PIE||["bestFit","ctr","inEnd","outEnd"].includes(l.dataLabelPosition)||delete l.dataLabelPosition,l._type!==w.BUBBLE&&l._type!==w.BUBBLE3D&&l._type!==w.LINE&&l._type!==w.SCATTER||["b","ctr","l","r","t"].includes(l.dataLabelPosition)||delete l.dataLabelPosition,l._type===w.BAR)&&(["stacked","percentStacked"].includes(l.barGrouping||"")||["ctr","inBase","inEnd"].includes(l.dataLabelPosition)||delete l.dataLabelPosition,["clustered"].includes(l.barGrouping||"")||["ctr","inBase","inEnd","outEnd"].includes(l.dataLabelPosition)||delete l.dataLabelPosition),l.dataLabelBkgrdColors=!(!l.dataLabelBkgrdColors&&l.dataLabelBkgrdColors)&&l.dataLabelBkgrdColors,["b","l","r","t","tr"].includes(l.legendPos||"")||(l.legendPos="r"),["cone","coneToMax","box","cylinder","pyramid","pyramidToMax"].includes(l.bar3DShape||"")||(l.bar3DShape="box"),["circle","dash","diamond","dot","none","square","triangle"].includes(l.lineDataSymbol||"")||(l.lineDataSymbol="circle"),["gap","span"].includes(l.displayBlanksAs||"")||(l.displayBlanksAs="span"),["standard","marker","filled"].includes(l.radarStyle||"")||(l.radarStyle="standard"),l.lineDataSymbolSize=l.lineDataSymbolSize&&!isNaN(l.lineDataSymbolSize)?l.lineDataSymbolSize:6,l.lineDataSymbolLineSize=l.lineDataSymbolLineSize&&!isNaN(l.lineDataSymbolLineSize)?z(l.lineDataSymbolLineSize):z(.75),l.layout&&["x","y","w","h"].forEach(e=>{var t=l.layout[e];(isNaN(Number(t))||t<0||1e._type===I.image).length;if(p||c)if(p&&"string"!=typeof p)console.error("ERROR: addImage() 'path' should be a string, ex: {path:'/img/sample.png'} - you sent "+String(p));else if(c&&"string"!=typeof c)console.error("ERROR: addImage() 'data' should be a string, ex: {data:'image/png;base64,NMP[...]'} - you sent "+String(c));else if(c&&"string"==typeof c&&!c.toLowerCase().includes("base64,"))console.error("ERROR: Image `data` value lacks a base64 header! Ex: 'image/png;base64,NMP[...]')");else{let t=(p.substring(p.lastIndexOf("/")+1).split("?")[0].split(".").pop().split("#")[0]||"png").toLowerCase();if(c&&/image\/(\w+);/.exec(c)&&0e.path&&e.path===p&&e.type==="image/"+t&&!e.isDuplicate)[0],e._relsMedia.push({path:p||"preencoded."+t,type:"image/"+t,extn:t,data:c||"",rId:u,isDuplicate:!(null==n||!n.Target),Target:null!=n&&n.Target?n.Target:`../media/image-${e._slideNum}-${e._relsMedia.length+1}.`+t}),a.imageRid=u),"object"==typeof l){if(!l.url&&!l.slide)throw new Error("ERROR: `hyperlink` option requires either: `url` or `slide`");e._rels.push({type:I.hyperlink,data:l.slide?"slide":"dummy",rId:++u,Target:l.url||l.slide.toString()}),l._rId=u,a.hyperlink=l}e._slideObjects.push(a)}else console.error("ERROR: addImage() requires either 'data' or 'path' parameter!")}function ue(e,t,r){var r="object"==typeof r?r:{},a=(r.line=r.line||{type:"none"},{_type:I.text,shape:t||b.RECTANGLE,options:r,text:null});if(!t)throw new Error("Missing/Invalid shape parameter! Example: `addShape(pptxgen.shapes.LINE, {x:1, y:1, w:1, h:1});`");var t={type:r.line.type||"solid",color:r.line.color||"333333",transparency:r.line.transparency||0,width:r.line.width||1,dashType:r.line.dashType||"solid",beginArrowType:r.line.beginArrowType||null,endArrowType:r.line.endArrowType||null};"object"==typeof r.line&&"none"!==r.line.type&&(r.line=t),r.x=r.x||(0===r.x?0:1),r.y=r.y||(0===r.y?0:1),r.w=r.w||(0===r.w?0:1),r.h=r.h||(0===r.h?0:1),r.objectName=r.objectName?O(r.objectName):"Shape "+e._slideObjects.filter(e=>e._type===I.text).length,"string"==typeof r.line&&((t=t).color=String(r.line),r.line=t),"number"==typeof r.lineSize&&(r.line.width=r.lineSize),"string"==typeof r.lineDash&&(r.line.dashType=r.lineDash),"string"==typeof r.lineHead&&(r.line.beginArrowType=r.lineHead),"string"==typeof r.lineTail&&(r.line.endArrowType=r.lineTail),L(e,a),e._slideObjects.push(a)}function fe(r,e,t,a){let n={_type:a?I.placeholder:I.text,shape:(null==t?void 0:t.shape)||b.RECTANGLE,text:e&&0!==e.length?e:[{text:"",options:null}],options:t||{}};function o(t){var e;return t.placeholder||(t.color=t.color||n.options.color||r.color||d),(t.placeholder||a)&&(t.bullet=t.bullet||!1),(t=t.placeholder&&r._slideLayout&&r._slideLayout._slideObjects&&null!=(e=r._slideLayout._slideObjects.filter(e=>"placeholder"===e._type&&e.options&&e.options.placeholder&&e.options.placeholder===t.placeholder)[0])&&e.options?Object.assign(Object.assign({},t),e.options):t).objectName=t.objectName?O(t.objectName):"Text "+r._slideObjects.filter(e=>e._type===I.text).length,t.shape===b.LINE&&(e={type:t.line.type||"solid",color:t.line.color||"333333",transparency:t.line.transparency||0,width:t.line.width||1,dashType:t.line.dashType||"solid",beginArrowType:t.line.beginArrowType||null,endArrowType:t.line.endArrowType||null},"object"==typeof t.line&&(t.line=e),"string"==typeof t.line&&(e=e,"string"==typeof t.line&&(e.color=t.line),t.line=e),"number"==typeof t.lineSize&&(t.line.width=t.lineSize),"string"==typeof t.lineDash&&(t.line.dashType=t.lineDash),"string"==typeof t.lineHead&&(t.line.beginArrowType=t.lineHead),"string"==typeof t.lineTail)&&(t.line.endArrowType=t.lineTail),t.line=t.line||{},t.lineSpacing=t.lineSpacing&&!isNaN(t.lineSpacing)?t.lineSpacing:null,t.lineSpacingMultiple=t.lineSpacingMultiple&&!isNaN(t.lineSpacingMultiple)?t.lineSpacingMultiple:null,t._bodyProp=t._bodyProp||{},t._bodyProp.autoFit=t.autoFit||!1,t._bodyProp.anchor=t.placeholder?null:s.ctr,t._bodyProp.vert=t.vert||null,t._bodyProp.wrap="boolean"!=typeof t.wrap||t.wrap,(t.inset&&!isNaN(Number(t.inset))||0===t.inset)&&(t._bodyProp.lIns=M(t.inset),t._bodyProp.rIns=M(t.inset),t._bodyProp.tIns=M(t.inset),t._bodyProp.bIns=M(t.inset)),"boolean"==typeof t.underline&&!0===t.underline&&(t.underline={style:"sng"}),0===(t.align||"").toLowerCase().indexOf("c")?t._bodyProp.align=i.center:0===(t.align||"").toLowerCase().indexOf("l")?t._bodyProp.align=i.left:0===(t.align||"").toLowerCase().indexOf("r")?t._bodyProp.align=i.right:0===(t.align||"").toLowerCase().indexOf("j")&&(t._bodyProp.align=i.justify),0===(t.valign||"").toLowerCase().indexOf("b")?t._bodyProp.anchor=s.b:0===(t.valign||"").toLowerCase().indexOf("m")?t._bodyProp.anchor=s.ctr:0===(t.valign||"").toLowerCase().indexOf("t")&&(t._bodyProp.anchor=s.t),se(t.shadow),t}n.options=o(n.options),n.text.forEach(e=>e.options=o(e.options||{})),L(r,n.text||""),r._slideObjects.push(n)}function de(t,r){if(r.bkgd&&(r.background||(r.background={}),"string"==typeof r.bkgd?r.background.color=r.bkgd:(r.bkgd.data&&(r.background.data=r.bkgd.data),r.bkgd.path&&(r.background.path=r.bkgd.path),r.bkgd.src&&(r.background.path=r.bkgd.src))),null!=(a=r.background)&&a.fill&&(r.background.color=r.background.fill),t&&(t.path||t.data)){t.path=t.path||"preencoded.png";let e=(t.path.split(".").pop()||"png").split("?")[0];"jpg"===e&&(e="jpeg"),r._relsMedia=r._relsMedia||[];var a=r._relsMedia.length+1;r._relsMedia.push({path:t.path,type:I.image,extn:e,data:t.data||null,rId:a,Target:`../media/${(r._name||"").replace(/\s+/gi,"-")}-image-${r._relsMedia.length+1}.`+e}),r._bkgdImgRid=a}}function L(a,e,t){let r=[];"string"!=typeof e&&"number"!=typeof e&&(Array.isArray(e)?r=e:"object"==typeof e&&(r=[e]),r.forEach((r,e)=>{if(t&&t[e]&&t[e].hyperlink&&(r.options=Object.assign(Object.assign({},r.options),t[e])),Array.isArray(r)){let t=[];r.forEach(e=>{e.options&&!e.text.options&&t.push(e.options)}),L(a,r,t)}else Array.isArray(r.text)?L(a,r.text,t&&t[e]?[t[e]]:void 0):r&&"object"==typeof r&&r.options&&r.options.hyperlink&&!r.options.hyperlink._rId?"object"!=typeof r.options.hyperlink?console.log("ERROR: text `hyperlink` option should be an object. Ex: `hyperlink: {url:'https://github.com'}` "):r.options.hyperlink.url||r.options.hyperlink.slide?(e=S(a),a._rels.push({type:I.hyperlink,data:r.options.hyperlink.slide?"slide":"dummy",rId:e,Target:O(r.options.hyperlink.url)||r.options.hyperlink.slide.toString()}),r.options.hyperlink._rId=e):console.log("ERROR: 'hyperlink requires either: `url` or `slide`'"):r&&"object"==typeof r&&r.options&&r.options.hyperlink&&r.options.hyperlink._rId&&0===a._rels.filter(e=>e.rId===r.options.hyperlink._rId).length&&a._rels.push({type:I.hyperlink,data:r.options.hyperlink.slide?"slide":"dummy",rId:r.options.hyperlink._rId,Target:O(r.options.hyperlink.url)||r.options.hyperlink.slide.toString()})}))}class he{constructor(e){this.addSlide=e.addSlide,this.getSlide=e.getSlide,this._name="Slide "+e.slideNumber,this._presLayout=e.presLayout,this._rId=e.slideRId,this._rels=[],this._relsChart=[],this._relsMedia=[],this._setSlideNum=e.setSlideNum,this._slideId=e.slideId,this._slideLayout=e.slideLayout||null,this._slideNum=e.slideNumber,this._slideObjects=[],this._slideNumberProps=null!=(e=this._slideLayout)&&e._slideNumberProps?this._slideLayout._slideNumberProps:null}set bkgd(e){this._bkgd=e,this._background&&this._background.color||(this._background||(this._background={}),"string"==typeof e&&(this._background.color=e))}get bkgd(){return this._bkgd}set background(e){(this._background=e)&&de(e,this)}get background(){return this._background}set color(e){this._color=e}get color(){return this._color}set hidden(e){this._hidden=e}get hidden(){return this._hidden}set slideNumber(e){this._slideNumberProps=e,this._setSlideNum(e)}get slideNumber(){return this._slideNumberProps}get newAutoPagedSlides(){return this._newAutoPagedSlides}addChart(e,t,r){return ce(this,(r||{})._type=e,t,r),this}addImage(e){return pe(this,e),this}addMedia(e){{var n=this,o=e.x||0,i=e.y||0,s=e.w||2,A=e.h||2,l=e.data||"",c=e.link||"";let t=e.path||"",r=e.type||"audio",a;var p=e.cover||"data:image/png;base64,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AAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKREkRUAAACwrUpLSwuGDRvWfMCAAS26du3avKysrLiioqKkZcuWzZs1a1bcvHnz0tLS0rJsNtusuLi4ebNmzUoLCgo+8/eijY2N9Zs3b66pra2tqqur21xTU1NdVVVVs2nTptqNGzdWbdiwoeYvf/nL5hUrVlQtWLBgw6xZs6pqamoaJQYAAEDaKYABAACIiIghQ4aUHnTQQW379u3bql27dq3at2/fpkWLFq2bN29eWVpa2qpZs2bNCwsLm2ez2fLCwsLyoqKi8sLCwtKknK+hoaG6vr6+qqGh4S91dXV/aWhoqNq8eXNVTU3NuqqqqvUbNmxYu2rVqjWrV69e99Zbb6177rnnPpgzZ06NTwYAAABJogAGAADIA8OGDWt+xBFHdBwwYECnLl26dGjdunXHFi1adCgtLe1YUlLSvlmzZq0KCgqK07yDwsLCssLCwrKIaPdp/zuNjY21mzdvXrdp06ZVNTU172/YsGHl2rVr31+2bNnKBQsWrHjyySffnzVrVpVPGAAAAE1Fpuexsd9HfaF+ZcSal0ptCAAAIAE6deqUPf744zvtueeeXbp3796lbdu2XSorKzuXlpZ2KS0t7VBYWFhhSztGQ0PDxpqampU1NTXL169fv+yDDz5Y9s477yybPXv2sj/96U8rVqxYUWdLAAAAbE9t9q6Jog4f/TUFMAAAQEJks9nMt7/97Y4jRozo1bdv397t2rXrXl5e3rWsrKxzcXFx+4gosKUmp7G2tnZVTU3Nso0bNy5btWrV0tdff/2tJ598cvG999672noAAADYFgpgAACAhPne977X6a9Fb/v27Xu1bNmyV1lZWa8kvXOXLauvr9/wl7/8ZdG6desWL1u2bNHChQsX/fGPf1w8derUjbYDAADAliiAAQAAmqhsNps59dRTuxx66KH9+/Tp87n27dv3Ly8v719UVOSRzXlq06ZNKzZu3Pj6+++//8abb775xqOPPvrG3XffvcpmAAAA+CsFMAAAQBNx6qmndvniF784qHfv3v3btWv3uYqKis8VFhaW2wxbUl9fv37Dhg1vfPDBB68vXrz4jccee2z+jTfeuNxmAAAA8pMCGAAAYBc45phjWn/rW9/aq3///kPatGnTv6Kiop9HOLO9NDQ0VG/cuPGtNWvWLFy4cOGcO+6445WHHnporc0AAACknwIYAABgJzjjjDO6f+lLX9qrV69eg1u3bj2orKysR0RkbIadJFddXb103bp18xcvXjz30UcffeXqq69+x1oAAADSRwEMAACwnZWWlhb86le/2u3QQw8d1r17931btmw5qLCwsMxmaEoaGhqqP/zww/nvvPPOzGeeeWbW2LFj36ipqWm0GQAAgGRTAAMAAGwHP/7xj7t+9atf3bdXr15D27Ztu1c2m21jKyRJXV3dmg8++OCVRYsWvfznP/95xh/+8IdltgIAAJA8CmAAAIBtcOKJJ7Y75ZRTDujXr9+w1q1bD81ms61shTSpq6tbt3bt2pfffPPNWbfccsvUe++9d7WtAAAANH0KYAAAgE+hoqKi4IILLhg0YsSI/bp27bpfy5YtB2YymUKbIR/kcrmGDz/8cP6777474/nnn59x4YUXvrZx40aPiwYAAGiCFMAAAAAf4/jjj2/7/e9//8D+/fsf2Lp1630KCgpKbAUiGhsbN61fv37eW2+9NeWGG2545u67715lKwAAAE2DAhgAAOB/ZLPZzAUXXPC5I4888sDu3bsfWFFRsVtEFNgMbFl1dfWSd999d8qsWbNmnnvuuS+vW7euwVYAAAB2DQUwAACQ10pLSwsuvfTSQYcccsjBXbt2HVFWVtbDVmDb1dbWrnr//fdfmDp16uRf/vKXL65evbreVgAAAHYeBTAAAJB3Bg0aVHrBBRd8fs899zywQ4cOBxQVFbWwFdj+Ghsba9euXTtrzpw5T59//vmTX3755WpbAQAA2LEUwAAAQF4YNmxY8/POO+/gIUOGHOZ9vrDz/W0ZfNFFFz07a9asKlsBAADY/hTAAABAarVq1arwyiuv3HfEiBEjO3TocFBhYWGZrcCu19DQUP3+++8/O2XKlIk/+clPZm7cuLHRVgAAALYPBTAAAJAqrVq1Kvztb3+7/3777Xd4x44dRxQWFpbbCjRdDQ0NG99///0pM2bMeOqHP/zhC8pgAACAz0YBDAAApMJZZ53V45vf/OaRvXr1GllaWtrVRiB5ampq3l28ePHEO++8c9LVV1/9jo0AAABsPQUwAACQWMOHDy+/6KKLvjB48OCjW7RoMdBGID0+/PDDV+fNmzfhvPPOe3L69Ol/sREAAIBPRwEMAAAkSqtWrQpvuOGGQ/bbb79/atOmzX6ZTCZrK5BeuVyubs2aNTNmzJjx2JgxYyavW7euwVYAAAA+ngIYAABIhB//+Mddv/e9732lZ8+e/1RcXNzWRiD/1NbWfvD2228/dssttzz029/+9l0bAQAA+L8UwAAAQJNVUVFRcO21137+4IMPPrZ169b7ZTKZAlsBIqJxzZo1M59//vnxp5122hR3BQMAAPx/CmAAAKDJOeWUUzqefvrpx/bu3ftL2Wy2jY0AH6e+vn7j0qVLH/vd7373x+uvv36ZjQAAAPlOAQwAADQJ2Ww2c+uttx5wyCGHnNC6deu9I8LdvsDWaFy7du1L06ZN+/OPfvSjZ1evXl1vJQAAQD5SAAMAALtU//79S6655pp/2nPPPY8tLy/vayPAZ1VTU7NswYIF488999wHp06dutFGAACAfKIABgAAdomf//znPU855ZQTu3btemRhYWGZjQDbW2NjY92KFSuevOWWW+689NJLF9kIAACQDxTAAADATuMxz8Cusn79+rlPP/30f5188slT6+rqcjYCAACklQIYAADY4fr27Vv8hz/84a+Pee5nI8CuUlNT8+68efPu/8EPfvDgwoULN9kIAACQNgpgAABghxkyZEjpNddc89XBgwefWFxc3MFGgKaitrZ21dy5c+/5yU9+8uc5c+bU2AgAAJAWWyqAPYoNAADYJqNHj+4wb968n06ZMuXRYcOGnaH8BZqa4uLi9sOGDTtjypQpj86bN++nJ510UntbAQAA0s4dwAAAwFY599xze33/+9//dufOnY/IZDJZGwGSIpfL1S1fvvzJG2644fbLLrvsbRsBAACSyiOgAQCAz+y8887r+53vfOfbHTt2PDyTyRTaCJBUuVyuYcWKFU/cdNNN//XrX/96sY0AAABJowAGAAC22WWXXTboG9/4xg9at249zDaAtFm7du2su++++9pzzjnnNdsAAACSQgEMAABsNcUvkE8UwQAAQJIogAEAgE9N8Qvks7Vr18665557rvv5z38+3zYAAICmaksFcGHlwOj6UV9orIqoWZG1PQAAyBO/+MUvet9xxx3nHHrooT8pLS3tYiNAPiotLe2y7777HvP973+/X1lZ2ZIpU6assxUAAKCpKetcHwXlH/01BTAAAOS5M844o/u99957zpe//OWflZeX94qIjK0AeS5TXl7e8+CDDx71/e9/v3dEvDVjxowPrQUAAGgqFMAAAMD/ceKJJ7a77777fjJq1Kh/KS8v7xOKX4B/lCkvL+99+OGHj/rWt77VfvXq1Qvnz59fbS0AAMCutqUC2DuAAQAgzwwdOrTs+uuvP6l///4nFRYWltkI20NjY2Ns2rQpqquro6amJurr62PTpk2xefPmqK+vj+rq6qivr4/NmzfHpk2boqGhYZv/fxUWFkZJSUk0a9YsioqKoqysLIqKiqJZs2ZRUlISRUVFUVpa+r9/FRQUCIjtoqGhoeq11167a8yYMffMmTOnxkYAAIBdZUvvAFYAAwBAnujUqVP2nnvuGbXXXnudnM1mK22Ej9PQ0BAbN26MDRs2/J+/Nm7cGBs3boyamprYtGlTbNq0KWpqaqK2trbJnqe4uDhKSkqitLT0f/9eUVERFRUV0aJFi//zV0VFRRQWFvog8LHq6urWvvjii7eceOKJf169enW9jQAAADubAhgAAPLcXXfdddAXv/jF00tLS7vZRn7L5XKxYcOGWLt2baxbty7Wrl37d3+tW7cuNmzYkPd7atGiRbRu3TpatWoVrVu3jjZt2vzvf27dunW0aNHCh4morq5e+sgjj1zzne98Z6ptAAAAO5MCGAAA8tTVV189+MQTTzyzoqJioG3kj8bGxli5cmUsX748Pvjgg1i9evX//n3t2rXR2NhoSZ9RYWFhtGrVKtq1axdt27b937937tw5OnTo4LHTeWbDhg3z77333qvOPPPMebYBAADsDApgAADIM1/72tfaXHrppad27979qIjQRKVUQ0NDrFq1KlasWBHvv//+//595cqVTfqRzGlXXFwcHTp0iI4dO0bnzp2jY8eO0alTp2jXrp1HS6dYLpdrfOeddx76+c9/fv2ECRPW2QgAALAjKYABACBP9OrVq9ldd931jT322OM7hYWFZTaSHh9++GG88847sXTp0njvvfdixYoVsXr16mhoaLCchCgsLIz27dtHp06dolu3btG9e/fo3r27x0mnTENDQ9W8efNu++Y3v/nHJUuWbLYRAABgR1AAAwBAHrjrrrtG/NM//dOZJSUlXWwj2davXx9Lly6Nd955539L3w8//NBiUqqysvJ/y+C//tWqVSuLSbiamppljz322G9Gjx49xTYAAIDtTQEMAAAp9qtf/arPD3/4w5+1atVqL9tIno0bN8aSJUvirbfeikWLFsV7770XmzZtspg8V1JSEl27do0+ffpE3759o3fv3lFeXm4xCbRu3bqXr7322ivGjh27yDYAAIDtRQEMAAApNGjQoNI77rjju7vttttJBQUFWRtJhtWrV8ebb74ZixcvjiVLlsTy5cujsbHRYtiigoKC6Ny5c/Tu3Tt69+4d/fr1i7Zt21pMQjQ2Nta98cYbd33rW9+6ff78+TU2AgAAfFYKYAAASJHS0tKCBx988Jj99tvvn7PZbBsbaboaGhri7bffjrfeeisWLFgQS5YscXcv201FRUX06tUr+vbtG3379o2ePXtGYWGhxTRhdXV1a2bMmHHjV77ylYdqamr85gcAALDNFMAAAJASp59+erdf/vKX51ZWVu5jG03T6tWr47XXXouFCxfGm2++GRs3brQUdooWLVpE3759Y8CAATFw4EB3CDdh69evf/E//uM//vPqq69+xzYAAIBtoQAGAICEGzRoUOm99977w969ex+byWTc4teErF+/PubNmxcLFiyIN954Q+FLk9GiRYvo169fDBgwIPbYY4+orKy0lCYkl8s1LF68eNyJJ554rcdCAwAAW0sBDAAACXbNNdcMOemkk35RVlbWyzZ2vVwuF++++27MnTs3XnvttViyZIl3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B7lcrm7y5Mm//vKXv/yIbQAAwK63pXcAK4ABAMg7paWlBTNnzjyzT58+x9vG39uwYUOMGzcuZsyY4VHPQF7KZDKx3377xde//vWoqKiwkH+waNGiP+27775X1dTUeCwEAADsQgpgAAD4H926dctOnjz5V506dRppG/9fLpeLqVOnxp///OfYuHGjhQB5r6KiIkaNGhX777+/x0L/g+XLlz9+6KGHXvLuu+/W2QYAAOwaWyqAvQMYAIC8MXz48PInnnjiynbt2o2wjf/vnXfeiWuvvTaee+652Lx5s4UARMTmzZtjzpw58dprr0XPnj2jRYsWlvI/Kioq+n7rW98aMnXq1Ofee+89f3AAAMAusKV3ACuAAQDIC9/+9rc73n777X9o0aLFANv4b1VVVXHXXXfFvffeG+vXr7cQgI+wbt26eP7552P9+vWx2267RVFRkaVERElJSefjjjvuoA8++GDKK6+88hcbAQCAnUsBDABAXjv//PP7XXzxxX8oKSnpbBv/bfr06XHttdfGokWLLAPgU3jnnXdi2rRp0bp16+jc2R8nERHZbLbyC1/4whElJSUvTp48eY2NAADAzqMABgAgb/3ud7/b60c/+tFVRUVFrWwjYs2aNXHzzTfHpEmTora21kIAtkJtbW289NJL8c4770Tfvn2jtLQ073dSWFhYNnz48C/26dNn4UMPPbTMpwQAAHYOBTAAAHnp1ltv3f+b3/zmfxYWFjbP913kcrl4/vnn4/rrr4/ly5f7cAB8BitXroxp06ZFRUVFdOvWLTKZTF7vo6CgIDto0KBDBw0atOiBBx54xycEAAB2vC0VwJmex8Z+H/WF+pURa17ym6wAACTTww8//KXDDjvsXzKZTN6/rPGDDz6I22+/Pd544w0fDIDtbMCAAfGtb30r2rRpk/e7yOVyjVOmTPn1yJEjH/LJAACAHavN3jVR1OGjv6YABgAgdV555ZXTPve5z30r3/fQ0NAQjz32WDz++ONRV1fngwGwg2Sz2Tj66KPjC1/4QhQUFOT9Pl5//fU79tprr9/7ZAAAwI6jAAYAIC9ks9nMyy+/fFafPn2Oz/ddvPvuu3HbbbfFe++954MBsJN069YtvvOd70S3bt3yfhdLliy5f5999rmypqam0ScDAAC2PwUwAACpV1paWjBr1qyzevfufVw+7yGXy8WTTz4ZDz74oLt+AXaBbDYbxxxzTBxxxBF5fzfw0qVLHxg6dOjlSmAAANj+FMAAAKRar169mk2ePHlsu3btDsrnPaxcuTJuueWWePvtt30oAHaxnj17ximnnBIdOnTI6z2sXr16yiGHHPIvS5Ys2exTAQAA28+WCuDCyoHR9aO+0FgVUbMia3sAADRpQ4cOLXvqqacub9Omzf75uoNcLhfPPPNMXH/99bF27VofCoAmYP369TFlypQoKSmJnj17RiaTycs9NG/evPtJJ500ZPLkyc+sWLHCoykAAGA7KetcHwXlH/01BTAAAIk1ZMiQ0kceeeSKVq1a7Z2vO6iuro7bb789nnjiiWhs9IRNgKaksbEx5s+fH++//34MGDAgstn8/DlLaWlpp6997WuDn3rqqadXrlxZ75MBAACfnQIYAIDUOfTQQ1s8+OCDv2/ZsuUe+bqDOXPmxNVXX+2RzwBN3PLly+OFF16Ijh075u0joUtLSzudcMIJ+7/00ktPv/3227U+FQAA8NkogAEASJVhw4Y1v++++37TsmXLQfl4/vr6+hg/fnz88Y9/jNpaP0MHSILNmzfHiy++GJs3b47ddtstCgoK8m4HxcXFbY866qg9n3vuuaeXL1/ucdAAAPAZKIABAEiNI488snLcuHG/b9GixcB8PP97770XV111VcyZM8eHASCBFi1aFC+//HL069cvWrRokXfnLykp6XDcccftP2fOnGcWLVq0yScCAAC2jQIYAIBUOPLIIyvvvPPO35aXl++Wj+d/+umn48Ybb4wPP/zQhwEgwf7yl7/ECy+8ECUlJdGrV6+8O3+zZs3aHHXUUfspgQEAYNspgAEASLxjjz227W233faH5s2b98m3s1dVVcXNN98cTz31VDQ2NvowAKRAY2NjzJ8/P5YtWxYDBgyIZs2a5dX5mzVr1uaYY4458M0333xm4cKFNT4RAACwdRTAAAAk2qGHHtritttuuzofy9+33347rrnmmli8eLEPAkAKvf/++/HKK69Enz59orKyMq/Ons1mK4888sh9Zs6c+dTSpUs3+zQAAMCnpwAGACCxjjjiiJb33nvvteXl5f3y6dy5XC4mTZoUN998c1RVVfkgAKRYVVVVTJ06NbLZbPTp0ycymUzenL24uLjtV7/61c+/8sorTy1evLjWpwEAAD4dBTAAAIl06KGHtrj33nt/l2/lb3V1ddx0000xefLkyOVyPggAeSCXy8WCBQvi3Xffjd133z2y2fz5mUyzZs1aH3300fvNmDHjSXcCAwDAp6MABgAgcYYOHVo2fvz4qysqKgbk07mXLVsWV111lUc+A+SplStXxiuvvBKf+9znoqKiIm/O3axZszZHH3300GeeeebJFStW1PkkAADAlimAAQBIlCFDhpQ++uij17Rs2XL3fDr31KlT49prr42NGzf6EADksaqqqpg+fXq0bds2unTpkjfnLikpaT9q1KihTz755JMrV66s90kAAICPt6UCuMB6AABoSjp16pSdMGHCv1dWVu6RL2dubGyMcePGxR133BF1dW56AiCitrY2br755hg/fnw0NjbmzbkrKyv3mDBhwr9369bNXQkAALCNFMAAADQZrVq1Kpw+ffolbdq02T9fzlxdXR2/+93vYtKkSd73C8DfyeVy8fjjj8fvf//7qK6uzptzt2nTZv8pU6Zc0qpVq0KfAgAA2HoKYAAAmoSKioqC2bNnX9KuXbuD8uXMS5cujYsuuijmz5/vAwDAx3r11VfjoosuiqVLl+bNmdu1a3fQ7Nmz/72iosLPrgAAYCu5iAYAoEmYOXPmz9q1a3dIvpz35ZdfjiuuuCLWrVsnfAA+0bp16+KKK66Il19+OW/O3K5du4Nnzpz5M+kDAMDWUQADALDLvfjii2N69OgxKh/Omsvl4oEHHogbbrghamtrhQ/Ap1ZbWxs33HBDPPDAA3nz2oAePXqMevHFF8dIHwAAPj0FMAAAu9SkSZO+NnDgwFPy4ax1dXVx8803x8SJE73vF4BtksvlYuLEiXHLLbdEXV1dXpx54MCBJ0+aNOlr0gcAgE9HAQwAwC7z6KOPHnXggQeekw9nXbduXfz617+OWbNmCR6Az2zmzJnx61//Ol9eJZA58MADz3n00UePkjwAAHyywsqB0fWjvtBYFVGzImtDAADsEDfeeOO+Rx999EWZTKYw7Wddvnx5XHXVVbFy5UrBA7DdbNiwIWbPnh0DBw6MioqKtB8307179/179uz56sMPP7xc+gAA5LuyzvVRUP7RX1MAAwCw011xxRV7fPe7372qoKCgWdrPOmfOnPjtb38bGzduFDwA2111dXVMmzYtOnfuHB07dkz1WTOZTOHuu+9+eJs2bV6aNGnSKukDAJDPFMAAADQZZ5xxRvef/exnvy0sLCxP+1knTJgQd999d9TX1wsegB2moaEhXnrppchms9G3b99UnzWTyRTttddeB/3lL395dubMmRukDwBAvlIAAwDQJBx00EEVf/jDH64pLi7ulOZz5nK5eOCBB+Kxxx4TOgA77c+eBQsWRF1dXfTv3z8ymUxqz1pQUFBywAEHDJs+ffqkpUuXbpY+AAD5aEsFcIH1AACwMwwaNKj0vvvuu7qsrKxXms9ZV1cX1113XUyaNEnoAOx0EydOjOuvvz7q6upSfc6ysrJef/rTn67u379/idQBAODvKYABANjhKioqCh577LGLKyoqBqb5nNXV1XHNNdfE7NmzhQ7ALvPKK6/ElVdeGVVVVak+Z4sWLQZOnDhxbEVFhZ9vAQDA33CBDADADjdz5syftW3b9sA0n3HdunVx2WWXxRtvvCFwAHa5xYsXx2WXXRZr165N9TnbtWt34MyZM38mcQAA+P8UwAAA7FBPPvnkqB49eoxK8xlXrVoVV1xxRSxfvlzgADQZK1asiCuuuCJWrlyZ6nP26NFj1KRJk0ZJHAAA/lth5cDo+lFfaKyKqFmRtSEAALbZjTfeuO+XvvSlCzOZTGp/8fDdd9+NK6+8MtatWydwAJqc6urqmDVrVvTv3z8qKytTe85u3boN79mz57yHH37Yb2MBAJAXyjrXR0H5R39NAQwAwA5x3nnn9T311FOvLigoKE7rGV977bW45pprorq6WuAANFmbN2+OGTNmRI8ePaJ9+/apPGMmkykYNGjQIYWFhVOee+45v5UFAEDqKYABANipjjrqqFb/8R//8YdmzZq1SusZX3755bj++uujrq5O4AA0eQ0NDfHSSy9Fp06dolOnTqk8Y0FBQXbYsGGfnz9//qQ33nhjk9QBAEizLRXA3gEMAMB21a1bt+wNN9zwnyUlJR3TesYpU6bEjTfeGPX19QIHIDHq6+vjxhtvjKlTp6b2jCUlJZ1uuOGG/+jWrZu7GgAAyFsKYAAAtqunn376XyorK/dI6/kmTZoUd955ZzQ2NgobgMRpbGyMO+64I5588snUnrGysnLw008//UtpAwCQrxTAAABsN88///w3unTp8k9pPd/EiRNj3LhxkcvlhA1AYuVyubj//vtTXQJ36dLlS88+++yJ0gYAIB95BzAAANvFTTfdNPzII488L5PJZNJ4vsceeyzGjx8vaABS47XXXotmzZpF3759U3m+zp0779urV695Dz/88DJpAwCQNlt6B7ACGACAz+wXv/hF7x/+8IdXFxQUNEvj+R544IF45JFHBA1A6ixYsCDq6upiwIABqTtbJpPJDBo06ODGxsbnpk6dul7aAACkiQIYAIAd5oADDqj43e9+99tmzZq1TeP5xo0bF5MmTRI0AKm1aNGi2Lx5cwwcODB1ZysoKMjut99+w5577rnH33vvvc3SBgAgLbZUAHsHMAAA2yybzWbuvPPOfyktLe2exvNNmDBB+QtAXpg0aVI89NBDqTxbaWlpj3vuuedfstlsRtIAAOQDBTAAANvs+eef/06HDh0OTePZHn744Xj44YeFDEDeeOSRR+LPf/5zKs/WoUOHw5599tlvSxkAgHygAAYAYJvcd999hw8ePPjUNJ7t/vvvjwkTJggZgLzz2GOPxX333ZfKs+25554/+NOf/nSYlAEASDvvAAYAYKudccYZ3ceMGXN5QUFBcdrONnHixHjkkUeEDEDeWrx4cWSz2ejbt2/ajpbp06fPvn/5y18mz5w5c4OkAQBIsi29A1gBDADAVhk2bFjzG2+88Q/NmjVrl7azPfroo6l99CUAbI2FCxdGUVFR9OvXL1XnKigoKD7wwAP3e/LJJx9dsWJFnaQBAEiqLRXAHgENAMBWuffee39ZWlraPW3nevzxx+PBBx8UMAD8jz//+c8xceLE1J2rtLS0x3333fdLCQMAkFYKYAAAPrVJkyaN6tSp0xEpPFeMHz9ewADwD8aPHx+TJ09O3bk6der0hUmTJn1VwgAApJFHQAMA8Kmcd955fU888cR/z2QyRWk618yZM+Puu+8WMAB8jNdeey06duwYnTt3TtW5unbtuk9BQcHzzz333DopAwCQNN4BDADAZ3LEEUe0vOKKK67NZrOVaTrXyy+/HDfffHPkcjkhA8DHyOVyMXv27OjSpUt06tQpNefKZDJF++yzz/CpU6c+9u67726WNAAASeIdwAAAbLNsNpu55ZZb/q2kpKRjms61YMGCuPnmm6OxsVHIAPAJGhsb4+abb44333wzVecqLS3tcvfdd5+fzWYzUgYAIC0UwAAAbNGkSZO+3rZt2wPTdKZly5bFDTfcEPX19QIGgE+prq4urr322li+fHmqztWuXbsDH3/88VESBgAgLTwCGgCAj3XZZZcN+upXvzo2k8mk5hcH33///bjyyiujqqpKwACwlerq6uLll1+OIUOGRHl5eWrO1aVLl31LS0unPvPMM2ukDABAEngENAAAW61///4lJ5988q8ymUxRWs60YcOG+P3vfx8bN24UMABso40bN8bvfve7VP15WlBQkP3hD394ft++fYslDABA4q9vrQAAgI/y4IMPnl1WVtYrLeeprq6O3/zmN7Fq1SrhAsBntGrVqrjyyiujuro6NWcqKyvr8/DDD58lXQAAkk4BDADA/zF+/Pgju3XrdnRazlNfX5/KdxYCwK60fPnyuO6666K+vj41Z+rRo8dXx40bd4R0AQBIMgUwAAB/53vf+16nI4444py0nCeXy8Vtt90Wb7zxhnABYDt7/fXX47bbbotcLpeaMx155JHnfvvb3+4oXQAAkkoBDADA/6qoqCi4+OKLLywsLCxPy5nGjx8fs2bNEi4A7CCzZs2Khx56KDXnKSwsrPj1r399QUVFhZ+bAQCQSC5kAQD4XxMnThxdWVk5OC3nef7552PixImCBYAd7LHHHosXXnghNeeprKzc89FHHz1RsgAAJFFh5cDo+lFfaKyKqFmRtSEAgDxxwQUX7DZq1KgLM5lMYRrO8+qrr8Ytt9ySqkdSAkBT/7O3d+/e0a5du1Scp2PHjkNzudxzU6ZMWSddAACamrLO9VHwMc/wcwcwAADRt2/f4h//+McXZzKZVPwG4HvvvRc33HBDNDY2ChcAdpKGhoa47rrrYtmyZak4T0FBQfbss88e27dv32LpAgCQqGtZKwAAYPz48T8qKyvrkYazbNiwIX7/+99HbW2tYAFgJ9u0aVP8/ve/j40bN6biPGVlZb3GjRs3RrIAACSJAhgAIM/ddNNNw/v06XN8Gs5SX18f1157baxdu1awALCLrFmzJq699tqor69PxXn69ev3jd///vdDJQsAQFIogAEA8thBBx1Uceyxx/5rRGTScJ477rgjFi9eLFgA2MUWLVoUd955Z1qOU/CNb3zj34YNG9ZcsgAAJOIC1goAAPLXzTfffFZxcXG7NJxl4sSJMX36dKECQBMxbdq0mDRpUirOUlJS0unOO+88Q6oAACSBAhgAIE/913/914FdunT5UhrO8tprr8Wf//xnoQJAEzN+/PhYsGBBKs7SrVu3o2+66abhUgUAoKlTAAMA5KEvfelLlV/5yld+lYazrFixIq6//vpobGwULAA0MY2NjXHdddfFihUr0nCczHHHHfergw46qEKyAAA0ZQpgAIA8dPXVV5+ezWYrk36OmpqauPbaa2PTpk1CBYAmatOmTXHttddGTU1N4s+SzWbb3njjjT+RKgAATZkCGAAgz9x6663Du3Tp8uWknyOXy8Utt9wSK1euFCoANHErV66MW2+9NXK5XOLP4lHQAAA0dQpgAIA8MnTo0LKvfvWrv0jDWSZMmBBz584VKgAkxJw5c+Kxxx5LxVlGjRr1i6FDh5ZJFQCApkgBDACQR+64444fFRcXd0z6OV5++eV45JFHBAoACfPQQw+l4he4SkpKOt5xxx0/lCgAAE2RAhgAIE9cfvnlu/fs2XNU0s/xwQcfxB133JGKR0gCQL7J5XJx2223xZo1axJ/lp49ex57+eWX7y5VAACaGgUwAEAe6NatW/a73/3uv2YymURf/9XX18cNN9wQ1dXVQgWAhKqqqoobb7wx6uvrE32OTCZT8N3vfvdX3bp1y0oVAICmRAEMAJAHxo8ff0pZWVmvpJ/jnnvuiaVLlwoUABJuyZIlcd999yX+HGVlZT3Hjx9/ikQBAGhKFMAAACn385//vOeAAQNGJ/0c06dPjylTpggUAFJi8uTJMWPGjMSfY8CAAaN//vOf95QoAABNhQIYACDFstls5qyzzjo3k8kk+tGEK1asiLvvvlugAJAyd911V6xYsSLRZ8hkMtmzzjrr3Gw2m5EoAABNgQIYACDFxo0b98XKysq9knyG2trauOGGG6K2tlagAJAyf/1zfvPmzYk+R2Vl5V7jxo0bKVEAAJoCBTAAQEoNHz68/OCDDz4t6ee4//77Y/ny5QIFgJRavnx5jBs3LvHnGDFixI+HDRvWXKIAAOxqCmAAgJS69dZbT8tms22TfIYZM2bEc889J0wASLnJkyfHzJkzE32G4uLitrfffvtp0gQAYFdTAAMApNBVV121R48ePb6S5DOsXLky7rrrLmECQJ64++6744MPPkj0GXr27PnVK664Yg9pAgCwKymAAQBSprS0tOAb3/jGT5N8rdfY2Bi333679/4CQB6pqamJ2267LRobG5N8jIJvfvObZ5aWlvqZGwAAu+6i1AoAANJlwoQJX6uoqBiQ5DOMHz8+Fi1aJEwAyDNvvvlmPPjgg4k+Q4sWLQY9+OCDx0gTAIBdRQEMAJAiRx55ZOWwYcN+kOQzzJ07N5544glhAkCemjhxYixYsCDRZxg+fPiPjjjiiJbSBABgV1AAAwCkyBVXXHFyUVFRRVLnr6qqijvvvDNyuZwwASBP5XK5uP3226O6ujqxZygqKmrxm9/85mRpAgCwKyiAAQBS4vzzz+/Xu3fv45J8httvvz0+/PBDYQJAnlu3bl3cfvvtiT5D7969jz///PP7SRMAgJ1NAQwAkALZbDZz6qmn/jyTyST2+m769OkxZ84cYQIAERExe/bsmDFjRmLnz2QyBaeeeurPs9lsRpoAAOxMCmAAgBT44x//eERlZeXgpM6/du3auPfeewUJAPyde+65J9atW5fY+SsrKwf/6U9/+oIkAQDYmRTAAAAJ17dv3+JDDjnkR0k+w9133x01NTXCBAD+Tk1NTdx9992JPsPBBx/8o759+xZLEwCAnUUBDACQcHfdddc3S0pKOiV1/smTJ8e8efMECQB8pLlz58azzz6b2PlLSko63nPPPd+SJAAAO4sCGAAgwb70pS9VDhw48KSkzr9mzZoYP368IAGALXrggQdizZo1iZ2/f//+Jx111FGtJAkAwM6gAAYASLArrrji1MLCwvIkzp7L5eK2226LTZs2CRIA2KJNmzbFbbfdFrlcLpHzFxYWll1++eU/kCQAADuDAhgAIKF+8Ytf9O7evftXkjr/s88+G2+88YYgAYBP5Y033ojnn38+sfN369bt6F/96ld9JAkAwI6mAAYASKgf/vCHP8pkMom8nvvggw/igQceECIAsFXGjRsX69atS+TsmUym4NRTT/2xFAEA2NEUwAAACXTdddcNa9eu3YFJnD2Xy8Udd9wRtbW1ggQAtsqmTZvizjvvTOz8bdq02f+mm27aT5IAAOxICmAAgIQpLS0t+NrXvnZ6Uud/4YUXYuHChYIEALbJq6++GjNmzEjs/Mccc8zpFRUVfiYHAMAO42ITACBhbr/99oMrKip2S+LsGzZsiHHjxgkRAPhM7r///qiqqkrk7OXl5X3/67/+6wgpAgCwoyiAAQASpKKiouCwww47Nanz33vvvYn9YS0A0HRs2LAh7r///sTOf9BBB/1zq1atCiUJAMCOoAAGAEiQ+++//+iysrKeSZx9zpw58dJLLwkRANguXnjhhViwYEEiZy8tLe32xz/+8StSBABgR1AAAwAkRN++fYv33Xfff07i7LW1tXHvvfcKEQDYru6+++6oq6tL5Oz77bffKf379y+RIgAA25sCGAAgIW6++eZRxcXFbZM4+yOPPBJr164VIgCwXa1atSoee+yxRM6ezWbb3njjjV+TIgAA25sCGAAgAYYOHVq21157fSeJs7/33nvxxBNPCBEA2CEmTpwYK1asSOTsQ4YM+c7QoUPLpAgAwPakAAYASIBrr732xKKiosqkzZ3L5eKee+6JxsZGIQIAO0R9fX3cddddkcvlEjd7UVFR5bXXXnuCFAEA2J4UwAAATdwBBxxQMWDAgG8kcfYZM2bEW2+9JUQAYId6880348UXX0zk7AMGDPjG8OHDy6UIAMD2ogAGAGjirrrqqhOKiooqkjb3pk2b4oEHHhAgALBT3H///VFbW5u4uYuKilpcffXV7gIGAGC7UQADADRhBx10UEX//v0Teffvww8/HB9++KEQAYCdYv369TFhwoREzj5w4MBvHHDAARVSBABge1AAAwA0Yf/5n/95bGFhYfOkzb1q1aqYPHmyAAGAnerpp5+O1atXJ27uwsLC8ssuu2yUBAEA2B4UwAAATdQBBxxQMWjQoNFJnP3uu++O+vp6IQIAO1V9fX3cddddiZx99913/+bQoUPLpAgAwGelAAYAaKIuv/zyYwsLC8uTNvfcuXNjwYIFAgQAdokFCxbE3LlzEzd3UVFRi9/97ndflyAAAJ+VAhgAoAkaOnRo2aBBgxL37t+6urr405/+JEAAYJf605/+FHV1dYmbe/fdd//mkCFDSiUIAMBnoQAGAGiCfvOb33ylqKioZdLmfu655xL53j0AIF1Wr14dzz33XOLmLioqann11VcfLUEAAD4LBTAAQBPTq1evZoMHD/5m0uaurq6ORx55RIAAQJPwyCOPRHV1deLmHjJkyLe6deuWlSAAANtKAQwA0MTcdNNNxxQXF7dN2twTJkyIqqoqAQIATUJVVVUifzmtuLi43a233uouYAAAtpkCGACgCWnVqlXhXnvtdVLS5l61alU8++yzAgQAmpTJkyfHqlWrEjf30KFDR7dq1apQggAAbAsFMABAE3LLLbccXlJS0jlpcz/44INRX18vQACgSamvr48HH3wwcXOXlJR0vummmw6VIAAA20IBDADQRGSz2cwBBxzw7aTNvWjRonjppZcECAA0SS+99FIsXrw4cXOPGDHiO9lsNiNBAAC2lgIYAKCJuOaaa/YuLy/vm7S5H3roocjlcgIEAJqkXC6XyLuAy8vL+1111VV7SRAAgK2lAAYAaCK+8pWvfDdpM8+bNy8WLlwoPACgSVu4cGG8+uqrrg8BAMgLCmAAgCbgsssuG1RZWblPkmbO5XIxfvx44QEAifDAAw8k7qklrVu33veSSy7pLz0AALaGAhgAoAkYNWrUCUmbefbs2bFs2TLhAQCJsGzZsnjllVcSN/cJJ5xwovQAANgaCmAAgF3sn//5nzt37NjxiCTN3NjYGA888IDwAIBEGT9+fDQ0NCRq5k6dOn1h9OjRHaQHAMCnpQAGANjFfvSjH30tk8kk6rps2rRpsWrVKuEBAImyatWqeOGFFxI1cyaTKfzpT386SnoAAHxaCmAAgF1o0KBBpX369Plqkmaur6+PCRMmCA8ASKQJEyZEXV1dombu27fvV/r27VssPQAAPg0FMADALnTZZZcdXlRUVJGkmadOnRpr164VHgCQSOvXr48pU6YkauaioqLK3/zmN0dIDwCAT0MBDACwi2Sz2cy+++57UpJmrqurc/cvAJB4jz76aOLuAt5///1PymazGekBAPBJFMAAALvI1VdfPbSsrKx3kmaeMmVKbNiwQXgAQKJt2LAhnn/++UTNXFZW1ueqq67aS3oAAHwSBTAAwC7y5S9/+bgkzVtfXx8TJ04UHACQCo8//nji7gL+0pe+dLzkAAD4JApgAIBdYPTo0R3atm07IkkzT5s2LdatWyc8ACAVPvzww5g+fXqiZm7fvv2I0aNHd5AeAABbogAGANgFfvrTn47KZDKFSZm3vr4+HnnkEcEBAKnyyCOPRH19fWLmzWQyhT/96U+/JjkAALZEAQwAsJN16tQp26dPn6OTNLO7fwGANFq3bl1MmzYtUTP36dPnmE6dOmWlBwDAx1EAAwDsZFddddUB2Wy2dVLmbWxsjEmTJgmOVOvYsWN06OCJmgD5aNKkSdHY2JiYebPZbOurrrrqAMkBAPBxFMAAADvZiBEjvp6keV988cVYtWqV4Ei1Ll26xIUXXhinnXZadO3a1UIA8siqVavipZdecj0JAEBqKIABAHaiM844o3tlZeXeSZk3l8vFxIkTBUdeyGQyMXjw4PjVr34VY8aMcUcwQB55/PHHI5fLJWbeysrKvc8444zukgMA4KMogAEAdqJTTjnlqxGRScq8CxYsiPfee09w5JVMJhN77713XHjhhTFmzJho3769pQCk3HvvvRcLFy5M1B9X/3NdCQAA/4cCGABgJ+nVq1ezXr16fTlJM3v3L/nsr0XwBRdcECeffHK0bdvWUgBSLGnXPb169fpyr169mkkOAIB/pAAGANhJrrjiioOLiopaJmXeBN4JAztEYWFhDB8+PC688MIYPXp0VFZWWgpACi1YsCCWLVuWmHmLiopaXnnllYdIDgCAf6QABgDYSYYPH/6VJM2btHfhwY5WVFQUI0aMiEsuuSRGjx4dLVu2tBSAFMnlcvH4448naub99tvvK5IDAOAfKYABAHaC0aNHd6isrByalHnXrl0bL7/8suDgI/y1CL744ovjhBNOiBYtWlgKQEq89NJLsW7dusTMW1lZudfo0aM7SA4AgL+lAAYA2AlOP/30o5J07fXMM89EQ0OD4GALiouL47DDDouxY8fGqFGjoqyszFIAEq6hoSGeeeaZJI1c8D/XmQAA8P8vEq0AAGDHymazmX79+n05KfPW1tbGlClTBAefUnFxcYwcOTIuvfTSGDVqVJSWlloKQII9//zzUVtbm5h5+/Xr9+VsNpuRHAAAf6UABgDYwX7zm9/sWVJS0jkp886YMSOqq6sFB1uppKQkRo4cGZdcckkcffTRUVJSYikACVRdXR0zZ85M0p8/na+44orBkgMA4K8UwAAAO9gXvvCFLyVl1lwuF08//bTQ4DNo3rx5HHXUUXHJJZfEyJEjI5vNWgpAwjz11FORy+USM++RRx75ZakBAPBXCmAAgB1oyJAhpZ07dz4iKfO+/vrrsWLFCsHBdlBeXh6jRo2KSy+9VBEMkDArVqyI119/PTHzdunS5fD+/ft79AQAABGhAAYA2KHGjh17aGFhYWJeCOruX9j+KioqYtSoUXHxxRfH4YcfHkVFRZYC4LpouyosLGz+H//xHwdLDQCACAUwAMAOteeeex6ZlFnXrl0b8+bNExrsIK1atYrjjz8+LrroohgxYkQUFPh2DKApmzdvXqxZsyYx8+61115HSg0AgAgFMADADnPMMce0bt269b5Jmfe5556LxsZGwcEO1qZNmxg9enRcfPHFimCAJqyxsTGee+65JP35MvyYY45pLTkAAPykAQBgBznzzDMPz2Qyibje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FpafffbZvaQFAJA+CmAAgE9p//3375+EOV9//XVhAXmjvLw8Ro0aFf/+7/8eI0eOjGw2aymA67FP6fOf//xAaQEApI8CGADgU+rRo8fuTX3G2traePvtt4UF5J2KiooYNWpUXHzxxXH44Yc3+XdvAum2ePHiRLySo1evXoOkBQCQPgpgAIBPqXXr1k3+DoklS5ZEQ0ODsIC81apVqzj++OPj4osvjhEjRkRBgW97gZ2voaEhlixZ0uTnbNOmjQIYACCFfCcMAPApDBkypLR58+a9m/qcb775prAAIqJ169YxevToGDt2rCIYcF32MZo3b95n0KBBpdICAEgX3wEDAHwKp556av9MJtPkr53eeustYQH8jTZt2sTo0aPjvPPOi+HDhyuCAddlfyOTyRT84Ac/+Jy0AADSxXe+AACfwuDBg5v84/Hq6+tj0aJFwgL4CJ06dYqTTz45/u3f/i323nvvyGQylgLsUIsXL07Eqzn23HPPgdICAEgXBTAAwKfQpUuXAU19xnfeeSfq6uqEBbAFnTt3jjFjxiiCgR2utrY23n333SRc53oPMABAyiiAAQA+hZYtW/Zv6jN6/DPAp9elS5cYM2ZMnHvuuTF48GALAfL2+iwJ17kAAGwdBTAAwCcYPnx4eUlJSeemPqfHPwNsvV69esVpp50W55xzTvTvrwMB8u/6rLS0tPPw4cPLpQUAkB4KYACAT/Ctb31rt4ho8s8IXbx4sbAAtlGfPn3irLPOinPOOSd22203CwG2i4T8gl7m29/+dj9pAQCkhwIYAOAT7L777k2+CVi7dm1s2LBBWACfUZ8+feLss8+OM888M3r27GkhwGfy4Ycfxrp165r8nAMHDlQAAwCkSJEVAABsWadOnZr8D8TefvttQQFsRwMGDIgBAwbEggULYvz48bF06VJLAbb5Oq1Vq1audwEA2GkUwAAAn6CyslIBDJCnBgwYEP3794958+bFQw89FO+++66lAFtlyZIlsddeezX1613PvgcASBEFMADAFnTq1CnbvHnzXk19ziVLlggLYAfJZDIxePDg2GOPPeLll1+OBx98MFauXGkxQGqu05o3b967Xbt2RatXr66XGABA8nkHMADAFowZM6ZnJpPJNuUZGxsbPZoUYCfIZDKx9957x4UXXhhjxoyJ9u3bWwrwiZYuXRqNjY1NesaCgoLsqaee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k8nE7NmzY+LEibFmzRoNAXif/VNSzJo161kTAwBongTAAAC70O233/7KOeecszU/P78022sdMGBAtG/f3tWu0My9+uqrMWnSpFi1apVmALyPjh07xgEHHJCIWhsbG6u/8Y1v/NXUAACaJwEwAMAutHLlyob169fP6tat2+hsrzWVSsXhhx8ekyZNMjhohubMmROTJ0+OJUuWaAbAh3D44YdHKpVKRK3r16+fVVFR0WhqAADNU54WAADsWq+++mpirts77LDDDAyamTfffDP+/d//PX7yk58IfwE+pFQqFSNGjEhMva+88sozpgYA0Hw5AQwAsIvddNNNz5166qnV+fn5rbO91m7dukX//v1j4cKFBgc5btmyZfHYY4/F/PnzNQPgIzrggAOic+fOiai1sbFxy4033jjL1AAAmi8BMADALrZy5cqG8vLyGT179vx0Euo9+uijBcCQw5YvXx7jxo0T/AJ8wv1SUpSXlz9TXl7eYGoAAM2XABgAYDeYMWPGUxdccEEiAuAhQ4ZE69ato7q62uAgh6xcuTImTJgQc+fOjUwmoyEAH1ObNm3i0EMPTUy9zz777FOmBgDQvPkGMADAbvDVr371lYaGhk1JqLWgoCCOOOIIQ4McsW7duvj5z38ed955Z8yZM0f4C/AJjRw5MvLz8xNRa0NDw8abbrrpVVMDAGjenAAGANgNKisrm1atWjW9T58+5ySh3qOPPjqefPJJQREk2Pr16+Oxxx6L2bNn+3cZYBdJpVIxatSoxNS7cuXKadXV1WmTAwBo3pwABgDYTaZNm5aY6/c6duwYAwYMMDRIoA0bNsSvf/3r+Nd//dd49dVXhb8Au9CAAQOiY8eOian36aefftLUAAAQAAMA7CZf+9rX5tTX11ckpd6jjjrK0CBBqqqq4v77749vf/vb8eKLL0ZTU5OmAOxiRx55ZGJqra+vX/eNb3zjdVMDAMAV0AAAu0ltbW16xYoVT++///6fT0K9hx56aLRt2zaqqqoMD7LYli1bYsqUKfHcc8/F9u3bNQRgN2nbtm0MGTIkMfUuX778qdraWtc/AwDgBDAAwO70xz/+cUJSas3Pz4/jjjvO0CBL1dTUxKOPPhq33XZb/OUvfxH+Auxmxx57bOTn5yel3Myvf/3rCaYGAECEABgAYLe66667llZXV89PSr1HH310tGjRwuAgi7wd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qATAAABZ4umnn968fPnyxF3xN3r06GjXrp0BAgBZqUOHDnH88ccnru5ly5ZNmD59+hYTBADgoxIAAwBkkbvvvvtPmUymKUk1FxYWxumnn254AEBWOvPMMxP3yYpMJtN41113/dH0AAD4OATAAABZ5Be/+MWatWvXTkta3UcccUT06tXLAAGArNK7d+847LDDEld3eXn5X+6///51JggAwMchAAYAyDIPP/zwn5JWcyqVijPPPNPwAICsMmbMmEilUomr+8EHH/yT6QEA8HEJgAEAsszXv/71NzZs2DAraXUPHDgwDj74YAMEALLCoEGDYsCAAYmru6KiYuatt966wAQBAPi4BMAAAFlo3Lhxv01i3WPGjIm8PFtMAGDvysvLizFjxiSy9j//+c+/NUEAAD7RflgLAACyz/XXXz+nqqrqr0mru1evXnHUUUcZIACwVx1zzDHRvXv3xNW9adOmV2666aa5JggAwCchAAYAyFJ/+tOf7k1i3WPGjInS0lIDBAD2ijZt2sRZZ52VyNofeOCBe00QAIBPSgAMAJClbrrpprlJPAVcXFwcZ555pgECAHvFWWedFS1btkxc3Zs2bXrl5ptvnmeCAAB8UgJgAIAsNm7cuF8lse5Ro0ZF7969DRAA2KP69OkTI0eOTGTtjz322K9MEACAXUEADACQxcaOHTu7qqrqb0mrO5VKxfnnnx+pVMoQAYA9tv/4/Oc/n8j9R2Vl5d+uueaav5kiAAC7ggAYACDLTZ069bdJrLtv374xZMgQAwQA9ojDDjsssTeQTJ48+TcmCADAriIABgDIcpdeeumLVVVVryax9s9//vNRXFxsiADAblVaWhrnn39+Imuvqqr66+WXX/6SKQIAsKsIgAEAEuChhx76WRLrLisri9NPP90AAYDd6qyzzoqSkpIklp753e9+91MTBABgVxIAAwAkwA033DB3w4YNs5JY+3HHHRd9+vQxRABgt+jbt28cddRRiay9oqJi1te//vU3TBEAgF1JAAwAkBA///nPfxoR6aTVnUql4vOf/3zk5dl6AgC7Vn5+flx00UWRSqWSWH76F7/4xX+bIgAAu5q3cAAACXHHHXe8tW7duulJrL13795xzDHHGCIAsEudcMIJ0b1790TWXl5e/pc77rjjLVMEAGBXEwADACTI3XfffW8mk2lKYu1nnXVWtG3b1hAB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onv37vEv//IvccABBzSrdWcymaYnnnji9s997nPPeAoAAODDEQADAJBYDz/88NJjjjlmY+/evY+KiGZzFKq0tDSGDx8eq1evjvXr13sQAHLcwIED45prrol27do1t6VnZsyY8YOzzjprqqcAAAA+PAEwAACJdv/99795zDHHVO6zzz5HRDMKgVu0aBGHHXZYtGzZMhYuXBjpdNrDAJBjCgoK4pxzzonzzz8/WrRo0dyWn37uuefuOuWUUyZ4EgAA4KMRAAMAkHi///3v5w8bNmxF3759j2lO10GnUqno27dvDB06NBYvXhxbtmzxMADkiJ49e8YNN9wQgwcPblbf+434x7XPU6ZM+fbpp58+2ZMAAAAfnQAYAICc8OCDDy4ZNmzYin79+jWrEDgionXr1nHEEUdEfX19LF261MMAkGCpVCpOOOGEuOKKK6JNmzbNbv07wt9vnXPOOX/xNAAAwMcjAAYAIGc89NBDS4YNG7a8X79+xza3EDg/Pz8OPvjg6NWrV8yfPz8aGho8EAAJU1JSEpdffnmccMIJkZ+f3+zWn8lkGp944olvffazn53maQAAgI9PAAwAQE556KGHlo4cOXJdnz59RqWa252ZEdG1a9cYNmxYLFu2LCorKz0QAAnRt2/fuO6662K//fZrluvPZDLpp59++rvnnHPO054GAAD4ZATAAADknD/96U+LDj300KX7779/s7sOOiKiuLg4jjzyyCgpKYk333wz0um0hwIgSxUUFMRnP/vZuPDCC6OkpKRZ9iCdTjc88sgjt5x//vnTPREAAPDJCYABAMhJDz/88NId3wQelUqlmt09mqlUKvr06RMHH3xwLFy4MLZt2+ahAMgynTt3jrFjx8bQoUOjGV5aERH/CH+feOKJ2y+88MLnPBEAALBrCIABAMhZDz300JIePXq8NmjQoGPz8vJaNMcetG3bNkaNGhVNTU2xZMkSDwVAFkilUjF69Oi48soro0OHDs22D01NTdt++9vf/stll132oqcCAAB2HQEwAAA5bdKkSeXdu3efM3jw4GYbAufn58eAAQOiV69esWDBgti+fbsHA2Avad26dVx66aVx/PHHR35+frPtQ2NjY/WvfvWrf7nuuute81QAAMCuJQAGACDnTZ48eW1jY+OMI4444uiCgoKS5tqHrl27xqhRo2Lbtm2xcuVKDwbAHpRKpWLUqFExduzY6NWrV7PuRX19/fo77rjjK9/61rcWejIAAGDXEwADANAsPP/881UbNmx45rjjjjuqsLCwrLn2obCwMAYNGhT77bdfLF68OGpraz0cALtZ+/bt44orrogTTzwxCgub9/uU2tralTfffPPVP/nJT1Z7MgAAYPcQAAMA0Gz87W9/27p27doZJ5xwwsjCwsK2zbkXnTp1ipEjR0Z1dbXTwAC70ciRI+Pqq6+OHj16NPte1NTULL/hhhuu/e1vf7vOkwEAALuPABgAgGbltdde2zpv3rynTznllKFFRUWdmnMvCgsL49BDD4399tsvFi1a5DQwwC709qnfk08+udmf+o2I2Lx587yLL774unHjxm30dAAAwO71fgFwat9zYsTOftC4LmLjq610DwCAxOrVq1fhs88++69du3Y9QTciGhoaYurUqTF58uRobGzUEICPqaCgIE499dQYPXq04HeH8vLyp4499tjvrly5skE3AABg9+swrDYKuuz8ZwJgAAByWuvWrfNeeumlm/fdd9+zdeMfVq9eHffff38sWbJEMwA+ov322y8uuugi1z2/w8KFC38/fPjwnzY0NGR0AwAA9gwBMAAAzd7zzz9/8aGHHnp1RKR0IyKTycTMmTPjz3/+c9TV1WkIwAcoKSmJ8847L0aMGBGplL9Kdki//PLL9xx77LEPagUAAOxZ7xcA+wYwAADNwn333Tfn+OOP39yrV6/DQwgcqVQqevfuHcOHD49169ZFRUWFhwTgPRxyyCExduzY6N+/v/B3h0wm0/jMM8/828knnzxONwAAYM97v28AC4ABAGg2fve7370xePDgJf369Ts6lUrl60hEcXFxjBgxInr06BFLly6N2tpaTQHYoUOHDvGFL3whzjzzzCguLtaQHZqammoeeOCBWz73uc9N1w0AANg7BMAAALDDww8/vKygoOC54cOHH1FQUFCqI//QrVu3OO6446K0tDQWL14cTU1NmgI0Wy1btoxzzjknLr300ujevbuGvENtbe2K22677arbbrvtDd0AAIC9RwAMAADv8Oyzz25avHjx0yeddNKQoqKiTjryD3l5edGnT58YOXJkbN26NVatWqUpQLNz+OGHx1e+8pUYMGBA5OXlacg7VFVV/e3CCy+8/oEHHvDdAAAA2MsEwAAA8C7z58+vefbZZ58+44wz+hcX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OigOOOCAKCoq0pQs0djYuGXmzJk/PvPMMyc2NDS4XgAAAPjQBMAAAJADjjzyyNY/+9nPrujbt++5EZGnI9mluro6Fi5cGPPnz4958+ZFZWWlprBXtGvXLg455JAYMGBA9O/fP1q39nsjWSj91ltv/fmqq676xaxZs6q1AwAA+KgEwAAAkEN++ctfjhgzZsyNrVq16q0b2SmdTsfKlStj0aJFsXDhwli8eHFs27ZNY9gtSkpKol+/ftG/f//Yf//9o1evXpGX53dEslVNTc3yRx999EdXXnnlK7oBAAB8XAJgAADIMd26dSt8+OGHPzd48ODL8vPzbdyzXCaTiTVr1sTChQtj0aJFsWjRotiyZYvG8LGUlZVF//79/xn6du/ePVKplMZkuaampprXXnvtV2PGjHmgoqKiUUcAAIBPQgAMAAA56rjjjiv7r//6r8tdC508mzdvjuXLl8eKFSti+fLlsXjx4qipqdEY/pfi4uLo169f9O7dO/bZZ5/Yd999o6ysTGMSJJPJpJcsWfLn66677pfTp0/3mx8AAMAuIQAGAIAc99Of/nTIueeee3NpaWlf3UimxsbGWLlyZSxdujSWLVsWy5cvj3Xr1kUmk9GcZiKVSkWXLl1in332iT59+kSfPn2iV69eUVBQoDkJtXXr1sUPPvjgj6699tq/6wYAALArCYABAKAZaNeuXf64cePOGTp06BUFBQWtdST56uvrY+XKlf88KbxixYpYu3ZtpNNpzUm4vLy86Nq1a+yzzz7//KdXr17RsmVLzckBjY2NW/7617/+4pxzznm0srKySUcAAIBdTQAMAADNyIknntjmnnvuuXzfffcdk0qlHB3MMdu3b481a9bEmjVrYu3atbF27dooLy+PDRs2CIazUF5eXnTs2DG6desWXbt2jW7dukW3bt2iR48eUVhYqEE5JpPJNC5ZsuRR1z0DAAC7mwAYAACaoa9+9av7Xnfdddd16NDhCN3IfY2Njf8MhNetWxfr1q2LioqKWLduXWzbtk2DdrPS0tLo3LnzP//p0qVLdO3aNbp27eoK52Ziw4YNM//rv/7rxz/60Y+W6wYAALC7CYABAKAZ++UvfznirLPOuq64uNj3gZupmpqaWL9+/T//qaioiMrKyqisrIxNmzZFY2OjJn2AgoKCaN++fbRr1y7at28fHTt2jC5dukSnTp2ic+fOUVxcrEnN1NatW98aP378PVdcccXLugEAAOwpAmAAAGjm2rVrl//ggw+eOWLEiCsLCwvb6gjvtHnz5n+GwZs2bYrKysqorq6OLVu2xJYtW6K6ujqqq6sjk8nk3NpTqVS0bt06WrduHWVlZdGmTZsoLS39X2Fvu3btok2bNh4U/peGhobKl1566efnnHPO+OrqavevAwAAe5QAGAAAiIiIoUOHFt97770XHHjggRfk5+c7ssiHlk6n/xkEV1dXR01Nzfv+k8lkora2NtLpdNTX10dTU1PU1dXt0u8U5+XlRcuWLSM/Pz+KiooiLy8vWrVqFalUKoqLi3f6T0lJSbRq1eqfgW9paWnk5eUZMB9aU1NTzYIFC/745S9/+Y+zZ8+u0REAAGBvEAADAAD/y2mnndb2rrvuurRPnz5n5+XlFeoIe9LbgfDbtm/f/r7XUBcUFESLFi3++b/fDnxhT8pkMg1LliwZd8stt/xq0qRJVToCAADsTQJgAABgp0477bS2d95554X777//5wTBAP9XJpNpWLhw4QO33nrrHwS/AABAtni/ADi/7UHRc2c/SG+LqC33/gcAAHLZokWL6u69995X0un0swcddFCnkpKS3roC8A8VFRUz/7//7/+77aKLLpq6aNGiOh0BAACyRXH3xsgr3fnPBMAAAEDMnDmz8u67736qqalpWr9+/Ypbt27dN5VKpXQGaG4ymUx6zZo1U+65555/Peeccx6cOXNmpa4AAADZRgAMAAB8KDNnzqz88Y9//Gw6nZ4uCAaak7eD37vvvvtfzz///McEvwAAQDYTAAMAAB+JIBhoLgS/AABAEgmAAQCAj+XtILisrOyFvn37diwuLu4VEYJgIBdkKioqnrv33nu/PWbMmEcEvwAAQJK8XwCc2vecGLGzHzSui9j4aivdAwAA/unqq6/u8ZWvfOX8Pn36nJWXl9dCR4CkSafT9UuXLh3/X//1Xw/84he/WKMjAABAEnUYVhsFXXb+MwEwAADwkZ1xxhntb7/99rMPPPDA8/Pz81vrCJDtmpqaqhcsWPDgd77znUcmTpzotC8AAJBoAmAAAGC3GD58eMkPf/jDzwwePPjioqKijjoCZJv6+voNr7322u9vvPHGx2fPnl2jIwAAQC4QAAMAALvV0KFDi++5556zDjnkkPOKioq66giwt9XV1a19/fXXH7z++uvHC34BAIBcIwAGAAD2iFatWuXdc889w0455ZTzO3bseJSOAHtYZsOGDbOmTJny4PXXX/9qbW1tWksAAIBcJAAGAAD2uH/913/tf/7555/dq1ev0/Ly8lroCLC7pNPp+pUrV05+4IEHHvnOd76zSEcAAIBcJwAGAAD2mjPOOKP97bfffvYBBxzw2YKCgjY6AuwqjY2NVW+++eafv/e97z06YcKETToCAAA0FwJgAABgrxs+fHjJ97///dGDBg0aU1paur+OAB9XdXX1wtdee+3Rr371q1Nfe+21Wh0BAACaGwEwAACQVb761a/ue8EFF3y6b9++ZxUUFLTWEeCDNDY2bnnrrbfG/+EPf5j4ox/9aLmOAAAAzZkAGAAAyEpDhw4t/sEPfnDy4MGDz27dunV/HQHerbq6+s2XX375weuuu+7ppUuXbtcRAAAAATAAAJDlCgsLU3ffffeQ0aNHn9G1a9fj8vLyinQFmq90Ol1XXl4+bcqUKROuvfbav+sIAADA/yYABgAAEqNPnz4t/v3f/33UyJEjz2rfvv2nIiKlK9AsZDZt2vTXF1544bGvfe1rzzntCwAA8N4EwAAAQCJddNFFXa6++uqTDzzwwLNbtmzZTUcg99TV1a1ZsGDBuJ/+9KdP3n///et0BAAA4IMJgAEAgETr1q1b4d13333k4YcffmqHDh2OyMvLK9QVSK50Ot2wcePGWbNmzZp8/fXXz6qoqGjUFQAAgA9PAAwAAOSMo48+uvWtt956/CGHHHJKu3btBkdEnq5AIqQrKytfmzdv3uQ777xz+owZM6q1BAAA4OMRAAMAADnpuOOOK/vGN75x/CGHHHJa27ZtB4bvBUO2yVRVVc2dN2/epO9///vTpk+fvkVLAAAAPjkBMAAAkPNuu+22vmedddZJffr0Oa5Vq1a9dQT2ntra2uXLly+f/uijjz51xx13vKUjAAAAu5YAGAAAaFa+9KUvdbv44ouP7t+//wlOBsMekamqqpq7cOHCv/z+97+fcd9995VrCQAAwO4jAAYAAJqtSy65pOtll112jDAYdrl0VVXVvIULF/7lV7/61bO/+93v1moJAADAniEABgAAiIirr766x/nnnz9q//33P7JNmzZDUqlUga7Ah5fJZBoqKyv/vnjx4uf+9Kc/zbr33ntX6woAAMCeJwAGAAB4l379+hV97WtfGzRy5MhRPXv2PLaoqKizrsD/VV9fv37VqlXPvPDCC8/9+7//+5zFixfX6woAAMDeJQAGAAB4H61bt8678847Bx599NFHde/efURpaen+4apomq/M1q1bF69Zs+bF5557btY3v/nNOdXV1WltAQAAyB4CYAAAgI9g8ODBrcaOHXvI8OHDD+vevfvw1q1bHxACYXJXprq6+s01a9a88sorr7z8k5/8ZN5rr71Wqy0AAADZSwAMAADwCVx//fX7nHHGGYf169dvePv27Yfm5+e31hWSrLGxsXrjxo2vvvXWWy+PHz/+lR//+McrdQUAACA5BMAAAAC70Je//OUe55xzzvA+ffoM7tix45CioqKuukI2q6+vX7t27doXFy9ePGfixImv3Xvvvat1BQAAILkEwAAAALvRl7/85R6f+cxnBvfr129Qly5dDm/ZsqVAmL2qrq5u7bp16wS+AAAAOUoADAAAsIe0atUq75prrtnn2GOPPXi//fY7uH379oeUlpb2TaVS+brDbpKuqalZtnHjxnlvvfXW3GeffXbef/3Xfy2vra1Naw0AAEBuEgADAADsRQceeGDLq6+++oAhQ4Yc3LNnz4Pbtm17sGuj+biampqqq6qqXi8vL583Z86ceb/85S/nvfjii1t1BgAAoPkQAAMAAGSZoUOHFn/xi1/cf9CgQQf26NHjwHbt2h3YqlWr3qlUKk932CFdU1OzvLKycsHq1asXzJkzZ8Gf//znJTNmzKjWGgAAgOZNAAwAAJAAxx13XNkFF1xw4MEHH3xA165dDywtLd23pKRkn1QqVag7uS2TyTRs27ZtRXV19dJ169YtfOONNxZOmDBh4YQJEzbpDgAAAO8mAAYAAEiw8847r+OJJ57Yp3///vt16dKlT5s2bfZr3bp1v/z8/GLdSZampqaa6urqxZs3b16ybt26pQsXLlzy9NNPL33ooYc26A4AAAAflgAYAAAgx7Rr1y7/kksu6TFkyJCe++67b89OnTr1Kisr61VcXNyzZcuW3VKpVL4u7R2ZTKaprq6uvKamZtWWLVtWVlRUrFy6dOnK2bNnr7r//vvXVFZWNukSAAAAn4QAGAAAoBnp1KlTwec+97luQ4cO7bnPPvv0aNeuXafWrVt3Li4u7tqyZcvORUVFnfLy8lro1MeTTqe319fXr6+rq6uoqalZW11dvb6ysnL9ihUrVr/66qurHnzwwbUVFRWNOgUAAMDuIgAGAADgfznjjDPaH3bYYZ369OnTuUuXLp3Kysral5SUtC0uLu5YVFTUrqioqG2LFi065OfnlzaXnjQ1NW3dvn37xvr6+qr6+vrKmpqaDdu2bavasmXLpnXr1lUsXbp0/Ysvvrh+4sSJlZ4gAAAA9iYBMAAAAB9Lr169CkeNGtXuoIMOatexY8ey9u3bl7Zp06Z1SUlJWXFxcetWrVq1btGiRVlRUVHrwsLC1hGRX1hYWBoR+QUFBSV5eXkFeXl5u/0/LtPpdG06nW5sbGzcFhFNDQ0NW3f83+r6+vrq7du3b6mtra2uqamp3rZtW/XmzZurN23aVL1hw4YtCxYsqJo1a1bl0qVLt5s4AAAASSAABgAAYK/q169fUffu3Vvss88+xSUlJQVv//8LCwtT3bp1+8BTxuXl5VsbGhoyb//vbdu2Na5YsaJmzZo12xcvXlyvwwAAADQn7xcAF2gPAAAAu9vixYvrdwS11boBAAAAu0+eFgAAAAAAAADkBgEwAAAAAAAAQI4QAAMAAAAAAADkCAEwAAAAAAAAQI4QAAMAAAAAAADkCAEwAAAAAAAAQI4QAAMAAAAAAADkCAEwAAAAAAAAQI4QAAMAAAAAAADkCAEwAAAAAAAAQI4QAAMAAAAAAADkCAEwAAAAAAAAQI4QAAMAAAAAAADkCAEwAAAAAAAAQI4o0AIAAAAAAACA5GhoLIyCxoaIiEilIpNXGE1v/0wADAAAAAAAAJAghQUN/0x6MxGppvT/5L6ugAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAIb/v5272ZHiusM4/FZ1NUkz9sQwOF4EyZJtpJCwysa5jSy4n1xPEqRIuQFvvfGSgIwBOzGRQAQERnx0d1UW0cgWGvKxsMGvnmfVdc7/1OJsf+oCAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoMY3JP//9K8My551lzpAk293a7QAAAAAAAAD8iIw3r+SL7TpPxuSt4/ibJJuz20QDBgAAAAAAAHhzrJPp6NvHYcyyjLl7dJTPbl/Jp6sPLufSsM+5ec7q5YOrF0OeP/SVaAAAAAAAAIA3weH7u6zfm79dWDIMSw6225w785vsx3XyzasOby5ssz69c4sAAAAAAAAAr9n69C6bC9sT93a7rKdnORin5Otxynzi1JQcfiwCAwAAAAAAALxO69O7HH68TaaT98cp85R8vbp3Nfszv8q0LHn7xMF1sjk/ZzUPmZ/MmWefhAYAAAAAAAD4oayPdjn7223Gn7x6ZrXPnetX8mBKkpv3cufDd/Pufn5FL56SzcVtNheT3dNt8tQlAwAAAAAAAHyv1sm0ySv/9XtsNWZ3I/lHkgzHi7/4XY7WYz5yiwAAAAAAAAA/Ivtcv/3nPEyS1fHa42t5+vNLyX7JoRsCAAAAAAAAePPt1/nbV3/KvePn1Xc371/NYxEYAAAAAAAA4M0yTHk2rvNo2WdzvHZqzN9v/SF3vju3evng/at5fPDLPDu1yuGyZHSVAAAAAAAAAK/XOGe4ueSvZ4e8M8xZbVe5ceuPufvy3Oqkw4+v5emDX+fuuTlLhhwsEYIBAAAAAAAAXpclGR8OuXP0TR4cPM/9z/+SRyfNDf/1TZezOp/87KdjzizJZkhO7edMy/w/nAUAAAAAAADg/zaMWcZkP8/ZLsmLacr2/MV8+cnvs/tP5/4FmLjAq1ifcioAAAAASUVORK5CYII=",u=e.objectName?O(e.objectName):"Media "+n._slideObjects.filter(e=>e._type===I.media).length,f={_type:I.media};if(!t&&!l&&"online"!==r)throw new Error("addMedia() error: either `data` or `path` are required!");if(l&&!l.toLowerCase().includes("base64,"))throw new Error("addMedia() error: `data` value lacks a base64 header! Ex: 'video/mpeg;base64,NMP[...]')");if(!p.toLowerCase().includes("base64,"))throw new Error("addMedia() error: `cover` value lacks a base64 header! Ex: 'data:image/png;base64,iV[...]')");if("online"===r&&!c)throw new Error("addMedia() error: online videos require `link` value");a=e.extn||(l?l.split(";")[0].split("/")[1]:t.split(".").pop())||"mp3",f.mtype=r,f.media=t||"preencoded.mov",f.options={},f.options.x=o,f.options.y=i,f.options.w=s,f.options.h=A,f.options.objectName=u,"online"===r?(e=S(n),n._relsMedia.push({path:t||"preencoded"+a,data:"dummy",type:"online",extn:a,rId:e,Target:c}),f.mediaRid=e,n._relsMedia.push({path:"preencoded.png",data:p,type:"image/png",extn:"png",rId:S(n),Target:`../media/image-${n._slideNum}-${n._relsMedia.length+1}.png`})):(o=n._relsMedia.filter(e=>e.path&&e.path===t&&e.type===r+"/"+a&&!e.isDuplicate)[0],i=S(n),n._relsMedia.push({path:t||"preencoded"+a,type:r+"/"+a,extn:a,data:l||"",rId:i,isDuplicate:!(null==o||!o.Target),Target:null!=o&&o.Target?o.Target:`../media/media-${n._slideNum}-${n._relsMedia.length+1}.`+a}),f.mediaRid=i,n._relsMedia.push({path:t||"preencoded"+a,type:r+"/"+a,extn:a,data:l||"",rId:S(n),isDuplicate:!(null==o||!o.Target),Target:null!=o&&o.Target?o.Target:`../media/media-${n._slideNum}-${n._relsMedia.length+0}.`+a}),n._relsMedia.push({path:"preencoded.png",type:"image/png",extn:"png",data:p,rId:S(n),Target:`../media/image-${n._slideNum}-${n._relsMedia.length+1}.png`})),n._slideObjects.push(f)}return this}addNotes(e){return this._slideObjects.push({_type:I.notes,text:[{text:e}]}),this}addShape(e,t){return ue(this,e,t),this}addTable(e,t){return this._newAutoPagedSlides=((a,e,t,n,r,o,i)=>{let s=[a],A=t&&"object"==typeof t?t:{};if(A.objectName=A.objectName?O(A.objectName):"Table "+a._slideObjects.filter(e=>e._type===I.table).length,null===e||0===e.length||!Array.isArray(e))throw new Error("addTable: Array expected! EX: 'slide.addTable( [rows], {options} );' (https://gitbrent.github.io/PptxGenJS/docs/api-tables.html)");if(!e[0]||!Array.isArray(e[0]))throw new Error("addTable: 'rows' should be an array of cells! EX: 'slide.addTable( [ ['A'], ['B'], {text:'C',options:{align:'center'}} ] );' (https://gitbrent.github.io/PptxGenJS/docs/api-tables.html)");let l=[],c=(e.forEach(e=>{let r=[];Array.isArray(e)?e.forEach(e=>{let t={_type:I.tablecell,text:"",options:"object"==typeof e&&e.options?e.options:{}};"string"==typeof e||"number"==typeof e?t.text=e.toString():e.text&&("string"==typeof e.text||"number"==typeof e.text?t.text=e.text.toString():e.text&&(t.text=e.text),e.options)&&"object"==typeof e.options&&(t.options=e.options),t.options.border=t.options.border||A.border||[{type:"none"},{type:"none"},{type:"none"},{type:"none"}];e=t.options.border;Array.isArray(e)||"object"!=typeof e||(t.options.border=[e,e,e,e]),t.options.border[0]||(t.options.border[0]={type:"none"}),t.options.border[1]||(t.options.border[1]={type:"none"}),t.options.border[2]||(t.options.border[2]={type:"none"}),t.options.border[3]||(t.options.border[3]={type:"none"});[0,1,2,3].forEach(e=>{t.options.border[e]={type:t.options.border[e].type||u.type,color:t.options.border[e].color||u.color,pt:("number"==typeof t.options.border[e].pt?t.options.border[e]:u).pt}}),r.push(t)}):(console.log("addTable: tableRows has a bad row. A row should be an array of cells. You provided:"),console.log(e)),l.push(r)}),A.x=R(A.x||(0===A.x?0:F/2),"X",r),A.y=R(A.y||(0===A.y?0:F/2),"Y",r),A.h&&(A.h=R(A.h,"Y",r)),A.fontSize=A.fontSize||v,A.margin=0===A.margin||A.margin?A.margin:Q,"number"==typeof A.margin&&(A.margin=[Number(A.margin),Number(A.margin),Number(A.margin),Number(A.margin)]),-1!==JSON.stringify({arrRows:l}).indexOf("hyperlink")||A.color||(A.color=A.color||d),"string"==typeof A.border?(console.warn("addTable `border` option must be an object. Ex: `{border: {type:'none'}}`"),A.border=null):Array.isArray(A.border)&&[0,1,2,3].forEach(e=>{A.border[e]=A.border[e]?{type:A.border[e].type||u.type,color:A.border[e].color||u.color,pt:A.border[e].pt||u.pt}:{type:"none"}}),A.autoPage="boolean"==typeof A.autoPage&&A.autoPage,A.autoPageRepeatHeader="boolean"==typeof A.autoPageRepeatHeader&&A.autoPageRepeatHeader,A.autoPageHeaderRows=void 0===A.autoPageHeaderRows||isNaN(Number(A.autoPageHeaderRows))?1:Number(A.autoPageHeaderRows),A.autoPageLineWeight=void 0===A.autoPageLineWeight||isNaN(Number(A.autoPageLineWeight))?0:Number(A.autoPageLineWeight),A.autoPageLineWeight&&(1{var r;return null!=(r=null==t?void 0:t.options)&&r.colspan&&"number"==typeof t.options.colspan?e+=t.options.colspan:e+=1,e},0),"string"==typeof A.colW||"number"==typeof A.colW||A.colW&&Array.isArray(A.colW)&&1===A.colW.length&&1{r.forEach((e,t)=>{"number"==typeof e||"string"==typeof e?r[t]={_type:I.tablecell,text:String(r[t]),options:A}:"object"==typeof e&&("number"==typeof e.text?r[t].text=r[t].text.toString():null==e.text&&(r[t].text=""),r[t].options=e.options||{},r[t]._type=I.tablecell)})}),[]);return A&&!A.autoPage?(L(a,l),a._slideObjects.push({_type:I.table,arrTabRows:l,options:Object.assign({},A)})):(A.autoPageRepeatHeader&&(A._arrObjTabHeadRows=l.filter((e,t)=>t{i(a._slideNum+t)||s.push(o({masterName:(null==n?void 0:n._name)||null})),0{var e=new B;let n=2*(c.length-1)+1;var a=1<(null==(a=null==(a=c[0])?void 0:a.labels)?void 0:a.length);e.folder("_rels"),e.folder("docProps"),e.folder("xl/_rels"),e.folder("xl/tables"),e.folder("xl/theme"),e.folder("xl/worksheets"),e.folder("xl/worksheets/_rels"),e.file("[Content_Types].xml",' \n'),e.file("_rels/.rels",'\n'),e.file("docProps/app.xml",'Microsoft Macintosh Excel0falseWorksheets1Sheet1falsefalsefalse16.0300\n'),e.file("docProps/core.xml",'PptxGenJSPptxGenJS'+(new Date).toISOString()+''+(new Date).toISOString()+""),e.file("xl/_rels/workbook.xml.rels",''),e.file("xl/styles.xml",'\n'),e.file("xl/theme/theme1.xml",''),e.file("xl/workbook.xml",'\n'),e.file("xl/worksheets/_rels/sheet1.xml.rels",'\n');{let r='';if(p.opts._type===w.BUBBLE||p.opts._type===w.BUBBLE3D)r+=``;else if(p.opts._type===w.SCATTER)r+=``;else if(a){let t=c.length;c[0].labels.forEach(e=>t+=e.filter(e=>e&&""!==e).length),r=r+``+""}else{var o=c.length+c[0].labels.length*c[0].labels[0].length+c[0].labels.length,i=c.length+c[0].labels.length*c[0].labels[0].length+1;r=r+``+''}p.opts._type===w.BUBBLE||p.opts._type===w.BUBBLE3D?c.forEach((e,t)=>{0===t?r+="X-Axis":r=(r+=`${O(e.name||"Y-Axis"+t)}`)+`${O("Size"+t)}`}):c.forEach(e=>{r+=`${O((e.name||" ").replace("X-Axis","X-Values"))}`}),p.opts._type!==w.BUBBLE&&p.opts._type!==w.BUBBLE3D&&p.opts._type!==w.SCATTER&&c[0].labels.slice().reverse().forEach(e=>{e.filter(e=>e&&""!==e).forEach(e=>{r+=`${O(e)}`})}),r+="\n",e.file("xl/sharedStrings.xml",r)}{let a='';if(p.opts._type===w.BUBBLE||p.opts._type===w.BUBBLE3D){a=(a+=``)+``;let r=1;c.forEach((e,t)=>{0===t?a+=``:(a+=``,r++,a+=``)})}else p.opts._type===w.SCATTER?(a=(a+=`
`)+``,c.forEach((e,t)=>{a+=``})):(a=(a+=`
`)+``,c[0].labels.forEach((e,t)=>{a+=``}),c.forEach((e,t)=>{a+=``}));a=(a+="")+''+"
",e.file("xl/tables/table1.xml",a)}{let o='';if(o+='',p.opts._type===w.BUBBLE||p.opts._type===w.BUBBLE3D?o+=``:p.opts._type===w.SCATTER?o+=``:o+=``,o=o+''+'',p.opts._type===w.BUBBLE||p.opts._type===w.BUBBLE3D){o=(o+="")+``+'0';for(let e=1;e${e}`;o+="",c[0].values.forEach((e,t)=>{o=o+``+`${e}`;let r=2;for(let e=1;e${c[e].values[t]||""}`,r++,o+=`${c[e].sizes[t]||""}`,r++;o+=""})}else if(p.opts._type===w.SCATTER){o=(o+="")+``;for(let e=0;e${e}`;o+="",c[0].values.forEach((e,t)=>{o=o+``+`${e}`;for(let e=1;e${c[e].values[t]||0===c[e].values[t]?c[e].values[t]:""}`;o+=""})}else if(o+="",a){o+=``;for(let e=0;e0`;for(let e=c[0].labels.length-1;e${e}`;o+="";var s=c.length,A=c[0].labels[0].length,l=c[0].labels.length;for(let n=0;n`;let r=s,a=c[0].labels.slice().reverse();a.forEach((e,t)=>{e[n]&&(e=0===t?1:a[t-1].filter(e=>e&&""!==e).length,r+=e,o+=`${r}`)});for(let e=0;e${c[e].values[n]||0}`;o+=""}}else{o+=``,c[0].labels.forEach((e,t)=>{o+=`0`});for(let e=0;e${e+1}`;o+="",c[0].labels[0].forEach((e,t)=>{o+=``;for(let e=c[0].labels.length-1;0<=e;e--)o=(o+=``)+`${c.length+t+1}`+"";for(let e=0;e${c[e].values[t]||""}`;o+=""})}o=(o+="")+''+"\n",e.file("xl/worksheets/sheet1.xml",o)}e.generateAsync({type:"base64"}).then(e=>{u.file(`ppt/embeddings/Microsoft_Excel_Worksheet${p.globalId}.xlsx`,e,{base64:!0}),u.file("ppt/charts/_rels/"+p.fileName+".rels",''+``+""),u.file("ppt/charts/"+p.fileName,(n=>{let e,t,r,a,o='',i=!1;if(o=(o+='')+``+"",n.opts.showTitle?o=o+be({title:n.opts.title||"Chart Title",color:n.opts.titleColor,fontFace:n.opts.titleFontFace,fontSize:n.opts.titleFontSize||N,titleAlign:n.opts.titleAlign,titleBold:n.opts.titleBold,titlePos:n.opts.titlePos,titleRotate:n.opts.titleRotate},n.opts.x,n.opts.y)+'':o+='',n.opts._type===w.BAR3D&&(o+=``),o+="",n.opts.layout?o=(o=(o=(o=(o=(o=(o=(o+="")+' ')+' ')+' ')+' ')+' ')+' ')+" ":o+="",Array.isArray(n.opts._type)?n.opts._type.forEach(e=>{var t=Object.assign(Object.assign({},n.opts),e.options),r=t.secondaryValAxis?X:h,a=t.secondaryCatAxis?H:g;i=i||t.secondaryValAxis,o+=me(e.type,e.data,t,r,a)}):o+=me(n.opts._type,n.data,n.opts,h,g),n.opts._type!==w.PIE&&n.opts._type!==w.DOUGHNUT){if(n.opts.valAxes&&1{let a="";return a=(a=(a=(a=(a=(a+="")+' ')+' ')+' ')+' ')+("none"!==t.serGridLine.style?we(t.serGridLine):""),t.showSerAxisTitle&&(a+=be({color:t.serAxisTitleColor,fontFace:t.serAxisTitleFontFace,fontSize:t.serAxisTitleFontSize,titleRotate:t.serAxisTitleRotate,title:t.serAxisTitle||"Axis Title"})),a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a+=` `)+' ')+` `)+' ')+(t.serAxisLineShow?`${j(t.serAxisLineColor||f.color)}`:"")+' ')+" ")+" ")+" ")+" ")+` `)+` ${j(t.serAxisLabelColor||d)}`)+` `)+" ")+' ')+" ")+' ',t.serAxisLabelFrequency&&(a+=' '),t.serLabelFormatCode&&(["serAxisBaseTimeUnit","serAxisMajorTimeUnit","serAxisMinorTimeUnit"].forEach(e=>{!t[e]||"string"==typeof t[e]&&["days","months","years"].includes(e.toLowerCase())||(console.warn(`"${e}" must be one of: 'days','months','years' !`),t[e]=null)}),t.serAxisBaseTimeUnit&&(a+=` `),t.serAxisMajorTimeUnit&&(a+=` `),t.serAxisMinorTimeUnit&&(a+=` `),t.serAxisMajorUnit&&(a+=` `),t.serAxisMinorUnit)&&(a+=` `),a+=""})(n.opts,V,h))),null!=(e=n.opts)&&e.catAxes&&null!=(t=n.opts)&&t.catAxes[1]&&(o+=ve(Object.assign(Object.assign({},n.opts),n.opts.catAxes[1]),H,X))}return n.opts.showDataTable&&(o=(o=(o=(o=(o=(o=(o=(o=(o=(o=(o=(o=(o=(o=(o=(o+="")+` `)+` `)+` `)+` `)+" ")+' ')+" ")+' ')+' ')+` `)+' ')+' ')+" ")+' ')+" "),o=(o=(o=(o+=" ")+(null!=(r=n.opts.plotArea.fill)&&r.color?G(n.opts.plotArea.fill):""))+(n.opts.plotArea.border?`${G(n.opts.plotArea.border.color)}`:"")+" ")+" ",n.opts.showLegend&&(o=(o+="")+'',(n.opts.legendFontFace||n.opts.legendFontSize||n.opts.legendColor)&&(o=(o=(o=(o+="")+" ")+" ")+(n.opts.legendFontSize?``:""),n.opts.legendColor&&(o+=G(n.opts.legendColor)),n.opts.legendFontFace&&(o+=''),n.opts.legendFontFace&&(o+=''),o=(o=(o+=" ")+' ')+" "),o+=""),o=(o+=' ')+' ',n.opts._type===w.SCATTER&&(o+=''),o=(o=(o=(o=(o+="")+(null!=(a=n.opts.chartArea.fill)&&a.color?G(n.opts.chartArea.fill):""))+(n.opts.chartArea.border?`${G(n.opts.chartArea.border.color)}`:""))+" ")+''})(p)),t("")}).catch(e=>{r(e)})})})}function me(a,n,o,e,t){let i=-1,s=1;var r=null;let A="";switch(a){case w.AREA:case w.BAR:case w.BAR3D:case w.LINE:case w.RADAR:A+=``,a===w.AREA&&"stacked"===o.barGrouping&&(A+=''),a!==w.BAR&&a!==w.BAR3D||(A=(A+='')+''),a===w.RADAR&&(A+=''),A+='',n.forEach(e=>{i++,A=(A=(A=(A=(A=(A+="")+` `)+" ")+" Sheet1!$"+E(e._dataIndex+e.labels.length+1)+"$1")+' '+O(e.name)+"")+" ";var t=o.chartColors?o.chartColors[i%o.chartColors.length]:null;A+=" ","transparent"===t?A+="":o.chartColorsOpacity?A+=""+j(t,``)+"":A+=""+j(t)+"",a===w.LINE||a===w.RADAR?0===o.lineSize?A+="":A=(A+=`${j(t)}`)+'':o.dataBorder&&(A+=`${j(o.dataBorder.color)}`),A=(A+=T(o.shadow,l))+' ',a!==w.RADAR&&(A=(A+="")+``,o.dataLabelBkgrdColors&&(A+=`${j(t)}`),A=(A=(A=(A+="")+``)+`${j(o.dataLabelColor||d)}`)+``+"",o.dataLabelPosition&&(A+=``),A=(A=(A=(A+='')+``)+``)+``+""),a!==w.LINE&&a!==w.RADAR||(A=(A+="")+' ',o.lineDataSymbolSize&&(A+=``),A=(A=(A=(A+=" ")+` ${j(o.chartColors[e._dataIndex+1>o.chartColors.length?Math.floor(Math.random()*o.chartColors.length):e._dataIndex])}`)+` ${j(o.lineDataSymbolLineColor||t)}`+" ")+" "),a!==w.BAR&&a!==w.BAR3D||1!==n.length||!(o.chartColors&&o.chartColors!==q&&1{e=e<0?o.invertedColors||o.chartColors||q:o.chartColors||[];A=(A=(A+=" ")+` `+' ')+' ',0===o.lineSize?A+="":A=a===w.BAR?(A+="")+' ':(A=(A+=" ")+' ')+" ",A=(A+=T(o.shadow,l))+" "}),A+="",o.catLabelFormatCode?(A=(A=(A=(A+=" ")+` Sheet1!$A$2:$A$${e.labels[0].length+1}`+" ")+" "+(o.catLabelFormatCode||"General")+"")+` `,e.labels[0].forEach((e,t)=>A+=`${O(e)}`),A+=" "):(A=(A=(A+=" ")+` Sheet1!$A$2:$${E(e.labels.length)}$${e.labels[0].length+1}`+" ")+` `,e.labels.forEach(e=>{A+="",e.forEach((e,t)=>A+=`${O(e)}`),A+=""}),A+=" "),A=(A=(A=(A=A+""+" ")+`Sheet1!$${E(e._dataIndex+e.labels.length+1)}$2:$${E(e._dataIndex+e.labels.length+1)}$${e.labels[0].length+1}`+" ")+" "+(o.valLabelFormatCode||o.dataTableFormatCode||"General")+"")+` `,e.values.forEach((e,t)=>A+=`${e||0===e?e:""}`),A=(A+=" ")+" ",a===w.LINE&&(A+=''),A+=""}),A=(A=(A=(A=(A=(A=(A=(A+=" ")+` `)+" ")+" ")+` `)+" "+j(o.dataLabelColor||d)+"")+' ')+" ",o.dataLabelPosition&&(A+=' '),A=(A=(A=(A=(A+=' ')+' ')+' ')+' ')+` `+" ",a===w.BAR?A=(A+=` `)+` `:a===w.BAR3D?A=(A=(A+=` `)+` `)+' ':a===w.LINE&&(A+=' '),A=(A+=``)+``;break;case w.SCATTER:A=(A+="")+''+'',i=-1,n.filter((e,t)=>0{i++,A=(A=(A=(A=(A=(A+="")+` `+` `)+" ")+` Sheet1!$${E(e+2)}$1`)+' '+O(a.name)+" ")+" ";var t=o.chartColors[i%o.chartColors.length];if("transparent"===t?A+="":o.chartColorsOpacity?A+=""+j(t,'')+"":A+=""+j(t)+"",0===o.lineSize?A+="":A=(A+=`${j(t)}`)+``,A=(A=(A+=T(o.shadow,l))+" "+"")+' ',o.lineDataSymbolSize&&(A+=``),A=(A=(A=(A+="")+`${j(o.chartColors[e+1>o.chartColors.length?Math.floor(Math.random()*o.chartColors.length):e])}`)+`${j(o.lineDataSymbolLineColor||o.chartColors[i%o.chartColors.length])}`+"")+"",o.showLabel){let r=ne("-xxxx-xxxx-xxxx-xxxxxxxxxxxx");!a.labels[0]||"custom"!==o.dataLabelFormatScatter&&"customXY"!==o.dataLabelFormatScatter||(A+="",a.labels[0].forEach((e,t)=>{"custom"!==o.dataLabelFormatScatter&&"customXY"!==o.dataLabelFormatScatter||(A=(A=(A=(A=(A=(A=(A=(A=(A+=" ")+` `+" ")+" ")+" ")+" ")+" ")+" ")+' ')+" "+O(e)+" ",A=(A=(A=(A=(A=(A="customXY"!==o.dataLabelFormatScatter||/^ *$/.test(e)?A:(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A+=" ")+' ')+" ( ")+' ')+' ')+" ")+" ["+O(a.name)+"")+" ")+' ')+" , ")+' ')+' ')+" ")+" ["+O(a.name)+"]")+" ")+' ')+" ) ")+' ')+" ")+" ")+" ")+" ")+" ",o.dataLabelPosition&&(A+=' '),A=(A=(A=(A=(A=(A=(A+=' ')+' ')+' ')+' ')+' ')+` `+" ")+" ")}),A+=""),"XY"===o.dataLabelFormatScatter&&(A=(A=(A=(A=(A=(A=(A=(A=(A=(A+=" ")+" ")+" ")+" ")+" ")+" ")+" ")+" ")+' ')+" ",o.dataLabelPosition&&(A+=' '),A=(A=(A=(A=(A=(A=(A=(A+=' ')+` `)+` `)+` `)+' ')+' ')+' ')+" ")}1===n.length&&o.chartColors!==q&&a.values.forEach((e,t)=>{e=e<0?o.invertedColors||o.chartColors||q:o.chartColors||[];A=(A=(A+=" ")+` `+' ')+' ',0===o.lineSize?A+="":A=(A+="")+' ',A=(A+=T(o.shadow,l))+" "}),A=(A=(A=(A+=" ")+` Sheet1!$A$2:$A$${n[0].values.length+1}`)+" General")+` `,n[0].values.forEach((e,t)=>{A+=`${e||0===e?e:""}`}),A=(A=(A=(A=(A=(A+=" ")+" ")+" ")+` Sheet1!$${E(e+2)}$2:$${E(e+2)}$${n[0].values.length+1}`)+" General")+` `,n[0].values.forEach((e,t)=>{A+=`${a.values[t]||0===a.values[t]?a.values[t]:""}`}),A=(A=(A+=" ")+" ")+''}),A=(A=(A=(A=(A=(A=(A=(A+=" ")+` `)+" ")+" ")+` `)+" "+j(o.dataLabelColor||d)+"")+' ')+" ",o.dataLabelPosition&&(A+=' '),A=(A=(A=(A+=' ')+' ')+' ')+' ',A=(A+=``)+("");break;case w.BUBBLE:case w.BUBBLE3D:A=A+""+'',i=-1,n.filter((e,t)=>0{i++,A=(A=(A=(A=(A=(A+="")+` `+` `)+" ")+" Sheet1!$"+E(s+1)+"$1")+' '+O(r.name)+" ")+" ";e=o.chartColors[i%o.chartColors.length];"transparent"===e?A+="":o.chartColorsOpacity?A+=`${j(e,'')}`:A+=""+j(e)+"",0===o.lineSize?A+="":o.dataBorder?A+=`${j(o.dataBorder.color)}`:A=(A+=`${j(e)}`)+``,A=A+T(o.shadow,l)+"",A=(A=(A=(A+=" ")+` Sheet1!$A$2:$A$${n[0].values.length+1}`)+" General")+` `,n[0].values.forEach((e,t)=>{A+=`${e||0===e?e:""}`}),A=(A=(A=(A+=" ")+" ")+" ")+`Sheet1!$${E(s+1)}$2:$${E(s+1)}$${n[0].values.length+1}`,s++,A=(A+=" General")+` `,n[0].values.forEach((e,t)=>{A+=`${r.values[t]||0===r.values[t]?r.values[t]:""}`}),A=(A=(A=(A+=" ")+" ")+" ")+`Sheet1!$${E(s+1)}$2:$${E(s+1)}$${r.sizes.length+1}`,s++,A=(A+=" General")+` `,r.sizes.forEach((e,t)=>{A+=`${e||""}`}),A=(A=(A+=" ")+" ")+' '}),A=(A=(A=(A=(A+="")+``+"")+``)+`${j(o.dataLabelColor||d)}`)+``+"",o.dataLabelPosition&&(A+=``),A=(A=(A=(A=(A=(A=(A+='')+``)+``)+' ')+' ')+"")+``+"";break;case w.DOUGHNUT:case w.PIE:r=n[0],A=(A=(A=(A=(A=(A=(A=(A=(A=A+("")+' ')+""+' ')+' '+" ")+" "+" Sheet1!$B$1")+" "+' ')+(' '+O(r.name)+""))+" "+" ")+" "+" ")+' '+' ',o.dataNoEffects?A+="":A+=T(o.shadow,l),A+=" ",r.labels[0].forEach((e,t)=>{A=(A=(A=A+""+` `)+' ')+`${j(o.chartColors[t+1>o.chartColors.length?Math.floor(Math.random()*o.chartColors.length):t])}`,o.dataBorder&&(A+=`${j(o.dataBorder.color)}`),A=(A+=T(o.shadow,l))+" "}),A+="",r.labels[0].forEach((e,t)=>{A=(A=(A=(A=(A=(A=(A=A+""+` `)+` `+" ")+" ")+` `)+" "+j(o.dataLabelColor||d)+"")+` `+" ")+" ",a===w.PIE&&o.dataLabelPosition&&(A+=``),A=(A=(A=(A=(A=(A+=' ')+' ')+' ')+' ')+' ')+' '}),A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=A+` `+" ")+" "+" ")+" "+" ")+` `+' ')+" "+" ")+" "+" ")+(a===w.PIE?'':""))+' '+' ')+' '+' ')+' '+' ')+` `+"")+""+" ")+` Sheet1!$A$2:$A$${r.labels[0].length+1}`+" ")+` `,r.labels[0].forEach((e,t)=>{A+=`${O(e)}`}),A=(A=(A=(A=(A+=" ")+" "+"")+" "+" ")+` Sheet1!$B$2:$B$${r.labels[0].length+1}`+" ")+` `,r.values.forEach((e,t)=>{A+=`${e||0===e?e:""}`}),A=(A=(A=A+" "+" ")+" "+" ")+` `,a===w.DOUGHNUT&&(A+=``),A+="";break;default:A+=""}return A}function ve(t,e,r){let a="";return t._type===w.SCATTER||t._type===w.BUBBLE||t._type===w.BUBBLE3D?a+="":a+="",a=(a=a+(' ')+" ")+(''),!t.catAxisMaxVal&&0!==t.catAxisMaxVal||(a+=``),!t.catAxisMinVal&&0!==t.catAxisMinVal||(a+=``),a=(a=(a=(a+="")+(' '))+(' '))+("none"!==t.catGridLine.style?we(t.catGridLine):""),t.showCatAxisTitle&&(a+=be({color:t.catAxisTitleColor,fontFace:t.catAxisTitleFontFace,fontSize:t.catAxisTitleFontSize,titleRotate:t.catAxisTitleRotate,title:t.catAxisTitle||"Axis Title"})),t._type===w.SCATTER||t._type===w.BUBBLE||t._type===w.BUBBLE3D?a+=' ':a+=' ',a=t._type===w.SCATTER?(a+=' ')+' ':(a=(a+=' ')+' ')+' ',a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a+=" ")+` `)+(t.catAxisLineShow?""+j(t.catAxisLineColor||f.color)+"":""))+(' '))+" "+" ")+" "+" ")+(t.catAxisLabelRotate?``:"")+" ")+" "+" ")+` `)+(" "+j(t.catAxisLabelColor||d)+""))+(' '))+" "+" ")+(' ')+" ")+" "+(' '))+` `)+' '+' ')+` `,t.catAxisLabelFrequency&&(a+=' '),(t.catLabelFormatCode||t._type===w.SCATTER||t._type===w.BUBBLE||t._type===w.BUBBLE3D)&&(t.catLabelFormatCode&&(["catAxisBaseTimeUnit","catAxisMajorTimeUnit","catAxisMinorTimeUnit"].forEach(e=>{!t[e]||"string"==typeof t[e]&&["days","months","years"].includes(t[e].toLowerCase())||(console.warn(`"${e}" must be one of: 'days','months','years' !`),t[e]=null)}),t.catAxisBaseTimeUnit&&(a+=''),t.catAxisMajorTimeUnit&&(a+=''),t.catAxisMinorTimeUnit)&&(a+=''),t.catAxisMajorUnit&&(a+=``),t.catAxisMinorUnit)&&(a+=``),t._type===w.SCATTER||t._type===w.BUBBLE||t._type===w.BUBBLE3D?a+="":a+="",a}function ye(e,t){let r=t===h?"col"===e.barDir?"l":"b":"col"!==e.barDir?"r":"t";t===X&&(r="r");var a=t===h?g:H;let n="";return n=(n+="")+(' ')+" ",e.valAxisLogScaleBase&&(n+=``),n+='',!e.valAxisMaxVal&&0!==e.valAxisMaxVal||(n+=``),!e.valAxisMinVal&&0!==e.valAxisMinVal||(n+=``),n=(n=(n+=" ")+` `)+(' '),"none"!==e.valGridLine.style&&(n+=we(e.valGridLine)),e.showValAxisTitle&&(n+=be({color:e.valAxisTitleColor,fontFace:e.valAxisTitleFontFace,fontSize:e.valAxisTitleFontSize,titleRotate:e.valAxisTitleRotate,title:e.valAxisTitle||"Axis Title"})),n+=``,n=e._type===w.SCATTER?(n+=' ')+' ':(n=(n+=' ')+' ')+' ',n=(n=(n=(n=(n=(n=(n=(n=(n=(n=(n=(n=(n=(n+=" ")+` `)+(e.valAxisLineShow?""+j(e.valAxisLineColor||f.color)+"":""))+(' '))+" "+" ")+" "+" ")+` `+" ")+" "+" ")+` `)+(" "+j(e.valAxisLabelColor||d)+""))+(' '))+" "+" ")+(' ')+" ")+" "+(' '),"number"==typeof e.catAxisCrossesAt?n+=` `:"string"==typeof e.catAxisCrossesAt?n+=' ':(t="r"===r||"t"===r,n+=' '),n+=' ',e.valAxisMajorUnit&&(n+=` `),e.valAxisDisplayUnit&&(n+=`${e.valAxisDisplayUnitLabel?"":""}`),n+=""}function be(r,a,n){var e="left"===r.titleAlign||"right"===r.titleAlign?``:"",t=r.titleRotate?``:"",o=r.fontSize?`sz="${Math.round(100*r.fontSize)}"`:"",i=r.titleBold?1:0;let s="";if(r.titlePos&&"number"==typeof r.titlePos.x&&"number"==typeof r.titlePos.y){a=r.titlePos.x+a,n=r.titlePos.y+n;let e=0===a?0:a*(a/5)/10,t=(1<=e&&(e/=10),.1<=e&&(e/=10),0===n?0:n*(n/5)/10);1<=t&&(t/=10),.1<=t&&(t/=10),s=``}return` +/* PptxGenJS 1.0.3 @ 2025-12-16T06:04:54.224Z */ +!function(e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).JSZip=e()}(function(){return function a(n,o,i){function s(t,e){if(!o[t]){if(!n[t]){var r="function"==typeof require&&require;if(!e&&r)return r(t,!0);if(A)return A(t,!0);e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}r=o[t]={exports:{}};n[t][0].call(r.exports,function(e){return s(n[t][1][e]||e)},r,r.exports,a,n,o,i)}return o[t].exports}for(var A="function"==typeof require&&require,e=0;e>4,o=1>6:64,i=2>2)+u.charAt(n)+u.charAt(o)+u.charAt(i));return s.join("")},r.decode=function(e){var t,r,a,n,o,i=0,s=0,A="data:";if(e.substr(0,A.length)===A)throw new Error("Invalid base64 input, it looks like a data url.");var l,A=3*(e=e.replace(/[^A-Za-z0-9+/=]/g,"")).length/4;if(e.charAt(e.length-1)===u.charAt(64)&&A--,e.charAt(e.length-2)===u.charAt(64)&&A--,A%1!=0)throw new Error("Invalid base64 input, bad content length.");for(l=new(c.uint8array?Uint8Array:Array)(0|A);i>4,r=(15&n)<<4|(n=u.indexOf(e.charAt(i++)))>>2,a=(3&n)<<6|(o=u.indexOf(e.charAt(i++))),l[s++]=t,64!==n&&(l[s++]=r),64!==o&&(l[s++]=a);return l}},{"./support":30,"./utils":32}],2:[function(e,t,r){var a=e("./external"),n=e("./stream/DataWorker"),o=e("./stream/Crc32Probe"),i=e("./stream/DataLengthProbe");function s(e,t,r,a,n){this.compressedSize=e,this.uncompressedSize=t,this.crc32=r,this.compression=a,this.compressedContent=n}s.prototype={getContentWorker:function(){var e=new n(a.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new i("data_length")),t=this;return e.on("end",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),e},getCompressedWorker:function(){return new n(a.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},s.createWorkerFrom=function(e,t,r){return e.pipe(new o).pipe(new i("uncompressedSize")).pipe(t.compressWorker(r)).pipe(new i("compressedSize")).withStreamInfo("compression",t)},t.exports=s},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(e,t,r){var a=e("./stream/GenericWorker");r.STORE={magic:"\0\0",compressWorker:function(){return new a("STORE compression")},uncompressWorker:function(){return new a("STORE decompression")}},r.DEFLATE=e("./flate")},{"./flate":7,"./stream/GenericWorker":28}],4:[function(e,t,r){var a=e("./utils"),i=(()=>{for(var e=[],t=0;t<256;t++){for(var r=t,a=0;a<8;a++)r=1&r?3988292384^r>>>1:r>>>1;e[t]=r}return e})();t.exports=function(e,t){return void 0!==e&&e.length?("string"!==a.getTypeOf(e)?(e,t,r)=>{var a=i,n=0+r;e^=-1;for(var o=0;o>>8^a[255&(e^t[o])];return-1^e}:(e,t,r)=>{var a=i,n=0+r;e^=-1;for(var o=0;o>>8^a[255&(e^t.charCodeAt(o))];return-1^e})(0|t,e,e.length):0}},{"./utils":32}],5:[function(e,t,r){r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],6:[function(e,t,r){e="undefined"!=typeof Promise?Promise:e("lie");t.exports={Promise:e}},{lie:37}],7:[function(e,t,r){var a="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array,n=e("pako"),o=e("./utils"),i=e("./stream/GenericWorker"),s=a?"uint8array":"array";function A(e,t){i.call(this,"FlateWorker/"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}r.magic="\b\0",o.inherits(A,i),A.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(o.transformTo(s,e.data),!1)},A.prototype.flush=function(){i.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},A.prototype.cleanUp=function(){i.prototype.cleanUp.call(this),this._pako=null},A.prototype._createPako=function(){this._pako=new n[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var t=this;this._pako.onData=function(e){t.push({data:e,meta:t.meta})}},r.compressWorker=function(e){return new A("Deflate",e)},r.uncompressWorker=function(){return new A("Inflate",{})}},{"./stream/GenericWorker":28,"./utils":32,pako:38}],8:[function(e,t,r){function v(e,t){for(var r="",a=0;a>>=8;return r}function a(e,t,r,a,n,o){var i=e.file,s=e.compression,A=o!==b.utf8encode,l=y.transformTo("string",o(i.name)),c=y.transformTo("string",b.utf8encode(i.name)),p=i.comment,o=y.transformTo("string",o(p)),u=y.transformTo("string",b.utf8encode(p)),f=c.length!==i.name.length,p=u.length!==p.length,d="",h=i.dir,g=i.date,m={crc32:0,compressedSize:0,uncompressedSize:0},r=(t&&!r||(m.crc32=e.crc32,m.compressedSize=e.compressedSize,m.uncompressedSize=e.uncompressedSize),0),e=(t&&(r|=8),A||!f&&!p||(r|=2048),0),t=0,g=(h&&(e|=16),"UNIX"===n?(t=798,e|=(65535&((A=i.unixPermissions)?A:h?16893:33204))<<16):(t=20,e|=63&(i.dosPermissions||0)),n=g.getUTCHours(),n=(n=((n<<=6)|g.getUTCMinutes())<<5)|g.getUTCSeconds()/2,A=g.getUTCFullYear()-1980,A=(A=((A<<=4)|g.getUTCMonth()+1)<<5)|g.getUTCDate(),f&&(h=v(1,1)+v(x(l),4)+c,d+="up"+v(h.length,2)+h),p&&(i=v(1,1)+v(x(o),4)+u,d+="uc"+v(i.length,2)+i),""),g=(g=(g=(g=(g=(g=(g=(g=(g=(g+="\n\0")+v(r,2))+s.magic)+v(n,2))+v(A,2))+v(m.crc32,4))+v(m.compressedSize,4))+v(m.uncompressedSize,4))+v(l.length,2))+v(d.length,2);return{fileRecord:w.LOCAL_FILE_HEADER+g+l+d,dirRecord:w.CENTRAL_FILE_HEADER+v(t,2)+g+v(o.length,2)+"\0\0\0\0"+v(e,4)+v(a,4)+l+d+o}}var y=e("../utils"),n=e("../stream/GenericWorker"),b=e("../utf8"),x=e("../crc32"),w=e("../signature");function o(e,t,r,a){n.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=r,this.encodeFileName=a,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}y.inherits(o,n),o.prototype.push=function(e){var t=e.meta.percent||0,r=this.entriesCount,a=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,n.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:r?(t+100*(r-a-1))/r:100}}))},o.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;t?(e=a(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName),this.push({data:e.fileRecord,meta:{percent:0}})):this.accumulate=!0},o.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,r=a(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(r.dirRecord),t)this.push({data:(t=e,w.DATA_DESCRIPTOR+v(t.crc32,4)+v(t.compressedSize,4)+v(t.uncompressedSize,4)),meta:{percent:100}});else for(this.push({data:r.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},o.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t(n=y.transformTo("string",n(a)),w.CENTRAL_DIRECTORY_END+"\0\0\0\0"+v(e,2)+v(e,2)+v(t,4)+v(r,4)+v(n.length,2)+n))(this.dirRecords.length,r,e,this.zipComment,this.encodeFileName);this.push({data:r,meta:{percent:100}})},o.prototype.prepareNextSource=function(){this.previous=this._sources.shift(),this.openedSource(this.previous.streamInfo),this.isPaused?this.previous.pause():this.previous.resume()},o.prototype.registerPrevious=function(e){this._sources.push(e);var t=this;return e.on("data",function(e){t.processChunk(e)}),e.on("end",function(){t.closedSource(t.previous.streamInfo),t._sources.length?t.prepareNextSource():t.end()}),e.on("error",function(e){t.error(e)}),this},o.prototype.resume=function(){return!!n.prototype.resume.call(this)&&(!this.previous&&this._sources.length?(this.prepareNextSource(),!0):this.previous||this._sources.length||this.generatedError?void 0:(this.end(),!0))},o.prototype.error=function(e){var t=this._sources;if(!n.prototype.error.call(this,e))return!1;for(var r=0;r{if(t=l[e=e||t])return t;throw new Error(e+" is not a valid compression method !")})(t.options.compression,i.compression),a=t.options.compressionOptions||i.compressionOptions||{},n=t.dir,o=t.date;t._compressWorker(r,a).withStreamInfo("file",{name:e,dir:n,date:o,comment:t.comment||"",unixPermissions:t.unixPermissions,dosPermissions:t.dosPermissions}).pipe(s)}),s.entriesCount=A}catch(e){s.error(e)}return s}},{"../compressions":3,"./ZipFileWorker":8}],10:[function(e,t,r){function a(){if(!(this instanceof a))return new a;if(arguments.length)throw new Error("The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.");this.files=Object.create(null),this.comment=null,this.root="",this.clone=function(){var e,t=new a;for(e in this)"function"!=typeof this[e]&&(t[e]=this[e]);return t}}(a.prototype=e("./object")).loadAsync=e("./load"),a.support=e("./support"),a.defaults=e("./defaults"),a.version="3.10.1",a.loadAsync=function(e,t){return(new a).loadAsync(e,t)},a.external=e("./external"),t.exports=a},{"./defaults":5,"./external":6,"./load":11,"./object":15,"./support":30}],11:[function(e,t,r){var A=e("./utils"),n=e("./external"),a=e("./utf8"),o=e("./zipEntries"),l=e("./stream/Crc32Probe"),c=e("./nodejsUtils");t.exports=function(e,i){var s=this;return i=A.extend(i||{},{base64:!1,checkCRC32:!1,optimizedBinaryString:!1,createFolders:!1,decodeFileName:a.utf8decode}),c.isNode&&c.isStream(e)?n.Promise.reject(new Error("JSZip can't accept a stream when loading a zip file.")):A.prepareContent("the loaded zip file",e,!0,i.optimizedBinaryString,i.base64).then(function(e){var t=new o(i);return t.load(e),t}).then(function(e){var t=[n.Promise.resolve(e)],r=e.files;if(i.checkCRC32)for(var a=0;anew n.Promise(function(e,t){var r=a.decompressed.getContentWorker().pipe(new l);r.on("error",function(e){t(e)}).on("end",function(){r.streamInfo.crc32!==a.decompressed.crc32?t(new Error("Corrupted zip : CRC32 mismatch")):e()}).resume()}))(r[a]));return n.Promise.all(t)}).then(function(e){for(var e=e.shift(),t=e.files,r=0;r=this.index;t--)r=(r<<8)+this.byteAt(t);return this.index+=e,r},readString:function(e){return a.transformTo("string",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=n},{"../utils":32}],19:[function(e,t,r){var a=e("./Uint8ArrayReader");function n(e){a.call(this,e)}e("../utils").inherits(n,a),n.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=n},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(e,t,r){var a=e("./DataReader");function n(e){a.call(this,e)}e("../utils").inherits(n,a),n.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},n.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},n.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},n.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=n},{"../utils":32,"./DataReader":18}],21:[function(e,t,r){var a=e("./ArrayReader");function n(e){a.call(this,e)}e("../utils").inherits(n,a),n.prototype.readData=function(e){var t;return this.checkOffset(e),0===e?new Uint8Array(0):(t=this.data.subarray(this.zero+this.index,this.zero+this.index+e),this.index+=e,t)},t.exports=n},{"../utils":32,"./ArrayReader":17}],22:[function(e,t,r){var a=e("../utils"),n=e("../support"),o=e("./ArrayReader"),i=e("./StringReader"),s=e("./NodeBufferReader"),A=e("./Uint8ArrayReader");t.exports=function(e){var t=a.getTypeOf(e);return a.checkSupport(t),"string"!==t||n.uint8array?"nodebuffer"===t?new s(e):n.uint8array?new A(a.transformTo("uint8array",e)):new o(a.transformTo("array",e)):new i(e)}},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(e,t,r){r.LOCAL_FILE_HEADER="PK",r.CENTRAL_FILE_HEADER="PK",r.CENTRAL_DIRECTORY_END="PK",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK",r.ZIP64_CENTRAL_DIRECTORY_END="PK",r.DATA_DESCRIPTOR="PK\b"},{}],24:[function(e,t,r){var a=e("./GenericWorker"),n=e("../utils");function o(e){a.call(this,"ConvertWorker to "+e),this.destType=e}n.inherits(o,a),o.prototype.processChunk=function(e){this.push({data:n.transformTo(this.destType,e.data),meta:e.meta})},t.exports=o},{"../utils":32,"./GenericWorker":28}],25:[function(e,t,r){var a=e("./GenericWorker"),n=e("../crc32");function o(){a.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}e("../utils").inherits(o,a),o.prototype.processChunk=function(e){this.streamInfo.crc32=n(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=o},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(e,t,r){var a=e("../utils"),n=e("./GenericWorker");function o(e){n.call(this,"DataLengthProbe for "+e),this.propName=e,this.withStreamInfo(e,0)}a.inherits(o,n),o.prototype.processChunk=function(e){var t;e&&(t=this.streamInfo[this.propName]||0,this.streamInfo[this.propName]=t+e.data.length),n.prototype.processChunk.call(this,e)},t.exports=o},{"../utils":32,"./GenericWorker":28}],27:[function(e,t,r){var a=e("../utils"),n=e("./GenericWorker");function o(e){n.call(this,"DataWorker");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=a.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}a.inherits(o,n),o.prototype.cleanUp=function(){n.prototype.cleanUp.call(this),this.data=null},o.prototype.resume=function(){return!!n.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,a.delay(this._tickAndRepeat,[],this)),!0)},o.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished)||(a.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0)},o.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case"string":e=this.data.substring(this.index,t);break;case"uint8array":e=this.data.subarray(this.index,t);break;case"array":case"nodebuffer":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=o},{"../utils":32,"./GenericWorker":28}],28:[function(e,t,r){function a(e){this.name=e||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}a.prototype={push:function(e){this.emit("data",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit("error",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit("error",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var r=0;r "+e:e}},t.exports=a},{}],29:[function(e,t,r){var A=e("../utils"),n=e("./ConvertWorker"),o=e("./GenericWorker"),l=e("../base64"),a=e("../support"),i=e("../external"),s=null;if(a.nodestream)try{s=e("../nodejs/NodejsStreamOutputAdapter")}catch(e){}function c(e,s){return new i.Promise(function(t,r){var a=[],n=e._internalType,o=e._outputType,i=e._mimeType;e.on("data",function(e,t){a.push(e),s&&s(t)}).on("error",function(e){a=[],r(e)}).on("end",function(){try{var e=((e,t,r)=>{switch(e){case"blob":return A.newBlob(A.transformTo("arraybuffer",t),r);case"base64":return l.encode(t);default:return A.transformTo(e,t)}})(o,((e,t)=>{for(var r=0,a=null,n=0,o=0;o>>6:(r<65536?t[n++]=224|r>>>12:(t[n++]=240|r>>>18,t[n++]=128|r>>>12&63),t[n++]=128|r>>>6&63),t[n++]=128|63&r);return t},n.utf8decode=function(e){if(l.nodebuffer)return A.transformTo("nodebuffer",e).toString("utf-8");for(var t,r,a,n=e=A.transformTo(l.uint8array?"uint8array":"array",e),o=n.length,i=new Array(2*o),s=t=0;s>10&1023,i[t++]=56320|1023&r)}return i.length!==t&&(i.subarray?i=i.subarray(0,t):i.length=t),A.applyFromCharCode(i)},A.inherits(o,r),o.prototype.processChunk=function(e){var t=A.transformTo(l.uint8array?"uint8array":"array",e.data),r=(this.leftOver&&this.leftOver.length&&(l.uint8array?(r=t,(t=new Uint8Array(r.length+this.leftOver.length)).set(this.leftOver,0),t.set(r,this.leftOver.length)):t=this.leftOver.concat(t),this.leftOver=null),((e,t)=>{for(var r=(t=(t=t||e.length)>e.length?e.length:t)-1;0<=r&&128==(192&e[r]);)r--;return!(r<0)&&0!==r&&r+p[e[r]]>t?r:t})(t)),a=t;r!==t.length&&(l.uint8array?(a=t.subarray(0,r),this.leftOver=t.subarray(r,t.length)):(a=t.slice(0,r),this.leftOver=t.slice(r,t.length))),this.push({data:n.utf8decode(a),meta:e.meta})},o.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:n.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},n.Utf8DecodeWorker=o,A.inherits(i,r),i.prototype.processChunk=function(e){this.push({data:n.utf8encode(e.data),meta:e.meta})},n.Utf8EncodeWorker=i},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(e,t,i){var s=e("./support"),A=e("./base64"),r=e("./nodejsUtils"),l=e("./external");function a(e){return e}function c(e,t){for(var r=0;r{try{return s.uint8array&&1===String.fromCharCode.apply(null,new Uint8Array(1)).length}catch(e){return!1}})(),nodebuffer:(()=>{try{return s.nodebuffer&&1===String.fromCharCode.apply(null,r.allocBuffer(1)).length}catch(e){return!1}})()}};function o(e){var t=65536,r=i.getTypeOf(e),a=!0;if("uint8array"===r?a=n.applyCanBeUsed.uint8array:"nodebuffer"===r&&(a=n.applyCanBeUsed.nodebuffer),a)for(;1{for(var t in A)if(Object.prototype.hasOwnProperty.call(A,t)&&A[t].magic===e)return A[t];return null})(this.compressionMethod)))throw new Error("Corrupted zip : compression "+n.pretty(this.compressionMethod)+" unknown (inner file : "+n.transformTo("string",this.fileName)+")");this.decompressed=new o(this.compressedSize,this.uncompressedSize,this.crc32,t,e.readData(this.compressedSize))},readCentralPart:function(e){this.versionMadeBy=e.readInt(2),e.skip(2),this.bitFlag=e.readInt(2),this.compressionMethod=e.readString(2),this.date=e.readDate(),this.crc32=e.readInt(4),this.compressedSize=e.readInt(4),this.uncompressedSize=e.readInt(4);var t=e.readInt(2);if(this.extraFieldsLength=e.readInt(2),this.fileCommentLength=e.readInt(2),this.diskNumberStart=e.readInt(2),this.internalFileAttributes=e.readInt(2),this.externalFileAttributes=e.readInt(4),this.localHeaderOffset=e.readInt(4),this.isEncrypted())throw new Error("Encrypted zip are not supported");e.skip(t),this.readExtraFields(e),this.parseZIP64ExtraField(e),this.fileComment=e.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var e=this.versionMadeBy>>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||"/"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){var e;this.extraFields[1]&&(e=a(this.extraFields[1].value),this.uncompressedSize===n.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===n.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===n.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===n.MAX_VALUE_32BITS)&&(this.diskNumberStart=e.readInt(4))},readExtraFields:function(e){var t,r,a,n=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4{r.resolve(e).then(function(e){o[t]=e,++i!==a||n||(n=!0,l.resolve(s,o))},function(e){n||(n=!0,l.reject(s,e))})})(e[t],t);return s},s.race=function(e){if("[object Array]"!==Object.prototype.toString.call(e))return this.reject(new TypeError("must be an array"));var t=e.length,r=!1;if(!t)return this.resolve([]);for(var a,n=-1,o=new this(A);++n>>6:(r<65536?t[n++]=224|r>>>12:(t[n++]=240|r>>>18,t[n++]=128|r>>>12&63),t[n++]=128|r>>>6&63),t[n++]=128|63&r);return t},r.buf2binstring=function(e){return c(e,e.length)},r.binstring2buf=function(e){for(var t=new A.Buf8(e.length),r=0,a=t.length;r>10&1023,i[r++]=56320|1023&a)}return c(i,r)},r.utf8border=function(e,t){for(var r=(t=(t=t||e.length)>e.length?e.length:t)-1;0<=r&&128==(192&e[r]);)r--;return!(r<0)&&0!==r&&r+l[e[r]]>t?r:t}},{"./common":41}],43:[function(e,t,r){t.exports=function(e,t,r,a){for(var n=65535&e|0,o=e>>>16&65535|0,i=0;0!==r;){for(r-=i=2e3{for(var e=[],t=0;t<256;t++){for(var r=t,a=0;a<8;a++)r=1&r?3988292384^r>>>1:r>>>1;e[t]=r}return e})();t.exports=function(e,t,r,a){var n=s,o=a+r;e^=-1;for(var i=a;i>>8^n[255&(e^t[i])];return-1^e}},{}],46:[function(e,R,t){var s,p=e("../utils/common"),A=e("./trees"),u=e("./adler32"),f=e("./crc32"),r=e("./messages"),l=0,c=0,d=-2,a=2,h=8,n=286,o=30,i=19,O=2*n+1,M=15,g=3,m=258,v=m+g+1,y=42,b=113;function x(e,t){return e.msg=r[t],t}function w(e){return(e<<1)-(4>>8&255,e.pending_buf[e.pending++]=255&t}function T(e,t){var r,a,n=e.max_chain_length,o=e.strstart,i=e.prev_length,s=e.nice_match,A=e.w_size-v>=2),e.lookaheadA&&0!=--n);return i<=e.lookahead?i:e.lookahead}function B(e){var t,r,a,n,o,i,s,A,l,c=e.w_size;do{if(A=e.window_size-e.lookahead-e.strstart,c+(c-v)<=e.strstart){for(p.arraySet(e.window,e.window,c,c,0),e.match_start-=c,e.strstart-=c,e.block_start-=c,t=r=e.hash_size;a=e.head[--t],e.head[t]=c<=a?a-c:0,--r;);for(t=r=c;a=e.prev[--t],e.prev[t]=c<=a?a-c:0,--r;);A+=c}if(0===e.strm.avail_in)break;if(i=e.window,s=e.strstart+e.lookahead,l=void 0,r=0===(l=(A=A)<(l=(o=e.strm).avail_in)?A:l)?0:(o.avail_in-=l,p.arraySet(i,o.input,o.next_in,l,s),1===o.state.wrap?o.adler=u(o.adler,i,l,s):2===o.state.wrap&&(o.adler=f(o.adler,i,l,s)),o.next_in+=l,o.total_in+=l,l),e.lookahead+=r,g<=e.lookahead+e.insert)for(n=e.strstart-e.insert,e.ins_h=e.window[n],e.ins_h=(e.ins_h<=g){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(B(e),0===e.lookahead&&t===l)return 1;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var a=e.block_start+r;if((0===e.strstart||e.strstart>=a)&&(e.lookahead=e.strstart-a,e.strstart=a,S(e,!1),0===e.strm.avail_out))return 1;if(e.w_size-v<=e.strstart-e.block_start&&(S(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(S(e,!0),0===e.strm.avail_out?3:4):(e.strstart>e.block_start&&(S(e,!1),e.strm.avail_out),1)}),new _(4,4,8,4,D),new _(4,5,16,8,D),new _(4,6,32,32,D),new _(4,4,16,16,k),new _(8,16,32,32,k),new _(8,16,128,128,k),new _(8,32,128,256,k),new _(32,128,258,1024,k),new _(32,258,258,4096,k)],t.deflateInit=function(e,t){return I(e,t,h,15,8,0)},t.deflateInit2=I,t.deflateReset=F,t.deflateResetKeep=N,t.deflateSetHeader=function(e,t){return!e||!e.state||2!==e.state.wrap?d:(e.state.gzhead=t,c)},t.deflate=function(e,t){var r,a,n,o;if(!e||!e.state||5>8&255),L(a,a.gzhead.time>>16&255),L(a,a.gzhead.time>>24&255),L(a,9===a.level?2:2<=a.strategy||a.level<2?4:0),L(a,255&a.gzhead.os),a.gzhead.extra&&a.gzhead.extra.length&&(L(a,255&a.gzhead.extra.length),L(a,a.gzhead.extra.length>>8&255)),a.gzhead.hcrc&&(e.adler=f(e.adler,a.pending_buf,a.pending,0)),a.gzindex=0,a.status=69):(L(a,0),L(a,0),L(a,0),L(a,0),L(a,0),L(a,9===a.level?2:2<=a.strategy||a.level<2?4:0),L(a,3),a.status=b)):(i=h+(a.w_bits-8<<4)<<8,i|=(2<=a.strategy||a.level<2?0:a.level<6?1:6===a.level?2:3)<<6,0!==a.strstart&&(i|=32),i+=31-i%31,a.status=b,E(a,i),0!==a.strstart&&(E(a,e.adler>>>16),E(a,65535&e.adler)),e.adler=1)),69===a.status)if(a.gzhead.extra){for(n=a.pending;a.gzindex<(65535&a.gzhead.extra.length)&&(a.pending!==a.pending_buf_size||(a.gzhead.hcrc&&a.pending>n&&(e.adler=f(e.adler,a.pending_buf,a.pending-n,n)),P(e),n=a.pending,a.pending!==a.pending_buf_size));)L(a,255&a.gzhead.extra[a.gzindex]),a.gzindex++;a.gzhead.hcrc&&a.pending>n&&(e.adler=f(e.adler,a.pending_buf,a.pending-n,n)),a.gzindex===a.gzhead.extra.length&&(a.gzindex=0,a.status=73)}else a.status=73;if(73===a.status)if(a.gzhead.name){n=a.pending;do{if(a.pending===a.pending_buf_size&&(a.gzhead.hcrc&&a.pending>n&&(e.adler=f(e.adler,a.pending_buf,a.pending-n,n)),P(e),n=a.pending,a.pending===a.pending_buf_size)){o=1;break}}while(o=a.gzindexn&&(e.adler=f(e.adler,a.pending_buf,a.pending-n,n)),0===o&&(a.gzindex=0,a.status=91)}else a.status=91;if(91===a.status)if(a.gzhead.comment){n=a.pending;do{if(a.pending===a.pending_buf_size&&(a.gzhead.hcrc&&a.pending>n&&(e.adler=f(e.adler,a.pending_buf,a.pending-n,n)),P(e),n=a.pending,a.pending===a.pending_buf_size)){o=1;break}}while(o=a.gzindexn&&(e.adler=f(e.adler,a.pending_buf,a.pending-n,n)),0===o&&(a.status=103)}else a.status=103;if(103===a.status&&(a.gzhead.hcrc?(a.pending+2>a.pending_buf_size&&P(e),a.pending+2<=a.pending_buf_size&&(L(a,255&e.adler),L(a,e.adler>>8&255),e.adler=0,a.status=b)):a.status=b),0!==a.pending){if(P(e),0===e.avail_out)return a.last_flush=-1,c}else if(0===e.avail_in&&w(t)<=w(r)&&4!==t)return x(e,-5);if(666===a.status&&0!==e.avail_in)return x(e,-5);if(0!==e.avail_in||0!==a.lookahead||t!==l&&666!==a.status){var i=2===a.strategy?((e,t)=>{for(var r;;){if(0===e.lookahead&&(B(e),0===e.lookahead)){if(t===l)return 1;break}if(e.match_length=0,r=A._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(S(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(S(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(S(e,!1),0===e.strm.avail_out)?1:2})(a,t):3===a.strategy?((e,t)=>{for(var r,a,n,o,i=e.window;;){if(e.lookahead<=m){if(B(e),e.lookahead<=m&&t===l)return 1;if(0===e.lookahead)break}if(e.match_length=0,g<=e.lookahead&&0>8&255),L(a,e.adler>>16&255),L(a,e.adler>>24&255),L(a,255&e.total_in),L(a,e.total_in>>8&255),L(a,e.total_in>>16&255),L(a,e.total_in>>24&255)):(E(a,e.adler>>>16),E(a,65535&e.adler)),P(e),0=g;){for(a=r.strstart,n=r.lookahead-(g-1);r.ins_h=(r.ins_h<>>=a=r>>>24,w-=a,0==(a=r>>>16&255))f[u++]=65535&r;else{if(!(16&a)){if(0==(64&a)){r=C[(65535&r)+(x&(1<>>=a,w-=a),w<15&&(x+=c[l++]<>>=a=r>>>24,w-=a,!(16&(a=r>>>16&255))){if(0==(64&a)){r=P[(65535&r)+(x&(1<>>=a,w-=a,(a=u-d)>3,x&=(1<<(w-=n<<3))-1,e.next_in=l,e.next_out=u,e.avail_in=l>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function o(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new k.Buf16(320),this.work=new k.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function i(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=M,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new k.Buf32(a),t.distcode=t.distdyn=new k.Buf32(n),t.sane=1,t.back=-1,R):O}function s(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,i(e)):O}function A(e,t){var r,a;return!e||!e.state||(a=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15>>8&255,r.check=N(r.check,E,2,0),c=l=0,r.mode=2;else if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&l)<<8)+(l>>8))%31)e.msg="incorrect header check",r.mode=30;else if(8!=(15&l))e.msg="unknown compression method",r.mode=30;else{if(c-=4,w=8+(15&(l>>>=4)),0===r.wbits)r.wbits=w;else if(w>r.wbits){e.msg="invalid window size",r.mode=30;break}r.dmax=1<>8&1),512&r.flags&&(E[0]=255&l,E[1]=l>>>8&255,r.check=N(r.check,E,2,0)),c=l=0,r.mode=3;case 3:for(;c<32;){if(0===s)break e;s--,l+=a[o++]<>>8&255,E[2]=l>>>16&255,E[3]=l>>>24&255,r.check=N(r.check,E,4,0)),c=l=0,r.mode=4;case 4:for(;c<16;){if(0===s)break e;s--,l+=a[o++]<>8),512&r.flags&&(E[0]=255&l,E[1]=l>>>8&255,r.check=N(r.check,E,2,0)),c=l=0,r.mode=5;case 5:if(1024&r.flags){for(;c<16;){if(0===s)break e;s--,l+=a[o++]<>>8&255,r.check=N(r.check,E,2,0)),c=l=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&((f=s<(f=r.length)?s:f)&&(r.head&&(w=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),k.arraySet(r.head.extra,a,o,f,w)),512&r.flags&&(r.check=N(r.check,a,f,o)),s-=f,o+=f,r.length-=f),r.length))break e;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===s)break e;for(f=0;w=a[o+f++],r.head&&w&&r.length<65536&&(r.head.name+=String.fromCharCode(w)),w&&f>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=12;break;case 10:for(;c<32;){if(0===s)break e;s--,l+=a[o++]<>>=7&c,c-=7&c,r.mode=27;else{for(;c<3;){if(0===s)break e;s--,l+=a[o++]<>>=1)){case 0:r.mode=14;break;case 1:B=D=void 0;var B,D=r;if(G){for(U=new k.Buf32(512),j=new k.Buf32(32),B=0;B<144;)D.lens[B++]=8;for(;B<256;)D.lens[B++]=9;for(;B<280;)D.lens[B++]=7;for(;B<288;)D.lens[B++]=8;for(I(1,D.lens,0,288,U,0,D.work,{bits:9}),B=0;B<32;)D.lens[B++]=5;I(2,D.lens,0,32,j,0,D.work,{bits:5}),G=!1}if(D.lencode=U,D.lenbits=9,D.distcode=j,D.distbits=5,r.mode=20,6!==t)break;l>>>=2,c-=2;break e;case 2:r.mode=17;break;case 3:e.msg="invalid block type",r.mode=30}l>>>=2,c-=2}break;case 14:for(l>>>=7&c,c-=7&c;c<32;){if(0===s)break e;s--,l+=a[o++]<>>16^65535)){e.msg="invalid stored block lengths",r.mode=30;break}if(r.length=65535&l,c=l=0,r.mode=15,6===t)break e;case 15:r.mode=16;case 16:if(f=r.length){if(0===(f=A<(f=s>>=5,c-=5,r.ndist=1+(31&l),l>>>=5,c-=5,r.ncode=4+(15&l),l>>>=4,c-=4,286>>=3,c-=3}for(;r.have<19;)r.lens[T[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,P={bits:r.lenbits},C=I(0,r.lens,0,19,r.lencode,0,r.work,P),r.lenbits=P.bits,C){e.msg="invalid code lengths set",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have>>16&255,v=65535&L,!((g=L>>>24)<=c);){if(0===s)break e;s--,l+=a[o++]<>>=g,c-=g,r.lens[r.have++]=v;else{if(16===v){for(S=g+2;c>>=g,c-=g,0===r.have){e.msg="invalid bit length repeat",r.mode=30;break}w=r.lens[r.have-1],f=3+(3&l),l>>>=2,c-=2}else if(17===v){for(S=g+3;c>>=g)),l>>>=3,c=c-g-3}else{for(S=g+7;c>>=g)),l>>>=7,c=c-g-7}if(r.have+f>r.nlen+r.ndist){e.msg="invalid bit length repeat",r.mode=30;break}for(;f--;)r.lens[r.have++]=w}}if(30===r.mode)break;if(0===r.lens[256]){e.msg="invalid code -- missing end-of-block",r.mode=30;break}if(r.lenbits=9,P={bits:r.lenbits},C=I(1,r.lens,0,r.nlen,r.lencode,0,r.work,P),r.lenbits=P.bits,C){e.msg="invalid literal/lengths set",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,P={bits:r.distbits},C=I(2,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,P),r.distbits=P.bits,C){e.msg="invalid distances set",r.mode=30;break}if(r.mode=20,6===t)break e;case 20:r.mode=21;case 21:if(6<=s&&258<=A){e.next_out=i,e.avail_out=A,e.next_in=o,e.avail_in=s,r.hold=l,r.bits=c,F(e,u),i=e.next_out,n=e.output,A=e.avail_out,o=e.next_in,a=e.input,s=e.avail_in,l=r.hold,c=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;m=(L=r.lencode[l&(1<>>16&255,v=65535&L,!((g=L>>>24)<=c);){if(0===s)break e;s--,l+=a[o++]<>y)])>>>16&255,v=65535&L,!(y+(g=L>>>24)<=c);){if(0===s)break e;s--,l+=a[o++]<>>=y,c-=y,r.back+=y}if(l>>>=g,c-=g,r.back+=g,r.length=v,0===m){r.mode=26;break}if(32&m){r.back=-1,r.mode=12;break}if(64&m){e.msg="invalid literal/length code",r.mode=30;break}r.extra=15&m,r.mode=22;case 22:if(r.extra){for(S=r.extra;c>>=r.extra,c-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;m=(L=r.distcode[l&(1<>>16&255,v=65535&L,!((g=L>>>24)<=c);){if(0===s)break e;s--,l+=a[o++]<>y)])>>>16&255,v=65535&L,!(y+(g=L>>>24)<=c);){if(0===s)break e;s--,l+=a[o++]<>>=y,c-=y,r.back+=y}if(l>>>=g,c-=g,r.back+=g,64&m){e.msg="invalid distance code",r.mode=30;break}r.offset=v,r.extra=15&m,r.mode=24;case 24:if(r.extra){for(S=r.extra;c>>=r.extra,c-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg="invalid distance too far back",r.mode=30;break}r.mode=25;case 25:if(0===A)break e;if(r.offset>(f=u-A)){if((f=r.offset-f)>r.whave&&r.sane){e.msg="invalid distance too far back",r.mode=30;break}d=f>r.wnext?(f-=r.wnext,r.wsize-f):r.wnext-f,f>r.length&&(f=r.length),h=r.window}else h=n,d=i-r.offset,f=r.length;for(A-=f=Af?(h=_[N+i[y]],T[B+i[y]]):(h=96,0),A=1<<(d=v-P),b=l=1<>P)+(l-=A)]=d<<24|h<<16|g|0,0!==l;);for(A=1<>=1;if(0!==A?E=(E&A-1)+A:E=0,y++,0==--D[v]){if(v===x)break;v=t[r+i[y]]}if(w>>7)]}function o(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function C(e,t,r){e.bi_valid>a-r?(e.bi_buf|=t<>a-e.bi_valid,e.bi_valid+=r-a):(e.bi_buf|=t<>>=1,r<<=1,0<--t;);return r>>>1}function L(e,t,r){for(var a,n=new Array(16),o=0,i=1;i<=15;i++)n[i]=o=o+r[i-1]<<1;for(a=0;a<=t;a++){var s=e[2*a+1];0!==s&&(e[2*a]=S(n[s]++,s))}}function E(e){for(var t=0;t<286;t++)e.dyn_ltree[2*t]=0;for(t=0;t<30;t++)e.dyn_dtree[2*t]=0;for(t=0;t<19;t++)e.bl_tree[2*t]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.last_lit=e.matches=0}function T(e){8>1;1<=r;r--)B(e,o,r);for(n=A;r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],B(e,o,1),a=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=a,o[2*n]=o[2*r]+o[2*a],e.depth[n]=(e.depth[r]>=e.depth[a]?e.depth[r]:e.depth[a])+1,o[2*r+1]=o[2*a+1]=n,e.heap[1]=n++,B(e,o,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1];for(var c,p,u,f,d,h=e,g=t.dyn_tree,m=t.max_code,v=t.stat_desc.static_tree,y=t.stat_desc.has_stree,b=t.stat_desc.extra_bits,x=t.stat_desc.extra_base,w=t.stat_desc.max_length,C=0,P=0;P<=15;P++)h.bl_count[P]=0;for(g[2*h.heap[h.heap_max]+1]=0,c=h.heap_max+1;c<573;c++)w<(P=g[2*g[2*(p=h.heap[c])+1]+1]+1)&&(P=w,C++),g[2*p+1]=P,m>=7;i<30;i++)for(y[i]=n<<7,t=0;t<1<{for(var t=4093624447,r=0;r<=31;r++,t>>>=1)if(1&t&&0!==e.dyn_ltree[2*r])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(r=32;r<256;r++)if(0!==e.dyn_ltree[2*r])return 1;return 0})(e)),k(e,e.l_desc),k(e,e.d_desc),s=(e=>{var t;for(_(e,e.dyn_ltree,e.l_desc.max_code),_(e,e.dyn_dtree,e.d_desc.max_code),k(e,e.bl_desc),t=18;3<=t&&0===e.bl_tree[2*c[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t})(e),(o=e.static_len+3+7>>>3)<=(n=e.opt_len+3+7>>>3)&&(n=o)):n=o=r+5,r+4<=n&&-1!==t)I(e,t,r,a);else if(4===e.strategy||o===n)C(e,2+(a?1:0),3),D(e,p,u);else{C(e,4+(a?1:0),3);var A=e,l=(t=e.l_desc.max_code+1,r=e.d_desc.max_code+1,s+1);for(C(A,t-257,5),C(A,r-1,5),C(A,l-4,4),i=0;i>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(d[r]+256+1)]++,e.dyn_dtree[2*w(t)]++),e.last_lit===e.lit_bufsize-1},t._tr_align=function(e){C(e,2,3),P(e,256,p),16===(e=e).bi_valid?(o(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):8<=e.bi_valid&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}},{"../utils/common":41}],53:[function(e,t,r){t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,r){!function(e){function n(e){delete c[e]}function o(e){if(p)setTimeout(o,0,e);else{var t=c[e];if(t){p=!0;try{var r=t.callback,a=t.args;switch(a.length){case 0:r();break;case 1:r(a[0]);break;case 2:r(a[0],a[1]);break;case 3:r(a[0],a[1],a[2]);break;default:r.apply(i,a)}}finally{n(e),p=!1}}}}function t(e){e.source===r&&"string"==typeof e.data&&0===e.data.indexOf(A)&&o(+e.data.slice(A.length))}var r,i,a,s,A,l,c,p,u,f;(r="undefined"==typeof self?void 0===e?this:e:self).setImmediate||(l=1,p=!(c={}),u=r.document,e=(e=Object.getPrototypeOf&&Object.getPrototypeOf(r))&&e.setTimeout?e:r,f="[object process]"==={}.toString.call(r.process)?function(e){process.nextTick(function(){o(e)})}:(()=>{var e,t;if(r.postMessage&&!r.importScripts)return e=!0,t=r.onmessage,r.onmessage=function(){e=!1},r.postMessage("","*"),r.onmessage=t,e})()?(A="setImmediate$"+Math.random()+"$",r.addEventListener?r.addEventListener("message",t,!1):r.attachEvent("onmessage",t),function(e){r.postMessage(A+e,"*")}):r.MessageChannel?((s=new MessageChannel).port1.onmessage=function(e){o(e.data)},function(e){s.port2.postMessage(e)}):u&&"onreadystatechange"in u.createElement("script")?(a=u.documentElement,function(e){var t=u.createElement("script");t.onreadystatechange=function(){o(e),t.onreadystatechange=null,a.removeChild(t),t=null},a.appendChild(t)}):function(e){setTimeout(o,0,e)},e.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),r=0;r{function e(e,t,r){if(this instanceof a){switch(arguments.length){case 0:return new a;case 1:return new a(e);case 2:return new a(e,t)}return new a(e,t,r)}return a.apply(this,arguments)}return e[x]=a[x],e})(o):l&&"function"==typeof o?v(Function.call,o):o,l&&((u.virtual||(u.virtual={}))[a]=o,e&h.R)&&f&&!f[a]&&y(f,a,o))}var g=e(24),m=e(18),v=e(19),y=e(26),b=e(25),x="prototype";h.F=1,h.G=2,h.S=4,h.P=8,h.B=16,h.W=32,h.U=64,h.R=128,t.exports=h},{18:18,19:19,24:24,25:25,26:26}],23:[function(e,t,r){t.exports=function(e){try{return!!e()}catch(e){return!0}}},{}],24:[function(e,t,r){t=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=t)},{}],25:[function(e,t,r){var a={}.hasOwnProperty;t.exports=function(e,t){return a.call(e,t)}},{}],26:[function(e,t,r){var a=e(29),n=e(30);t.exports=e(20)?function(e,t,r){return a.f(e,t,n(1,r))}:function(e,t,r){return e[t]=r,e}},{20:20,29:29,30:30}],27:[function(e,t,r){t.exports=!e(20)&&!e(23)(function(){return 7!=Object.defineProperty(e(21)("div"),"a",{get:function(){return 7}}).a})},{20:20,21:21,23:23}],28:[function(e,t,r){t.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},{}],29:[function(e,t,r){var a=e(17),n=e(27),o=e(31),i=Object.defineProperty;r.f=e(20)?Object.defineProperty:function(e,t,r){if(a(e),t=o(t,!0),a(r),n)try{return i(e,t,r)}catch(e){}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(e[t]=r.value),e}},{17:17,20:20,27:27,31:31}],30:[function(e,t,r){t.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},{}],31:[function(e,t,r){var n=e(28);t.exports=function(e,t){if(!n(e))return e;var r,a;if(t&&"function"==typeof(r=e.toString)&&!n(a=r.call(e))||"function"==typeof(r=e.valueOf)&&!n(a=r.call(e))||!t&&"function"==typeof(r=e.toString)&&!n(a=r.call(e)))return a;throw TypeError("Can't convert object to primitive value")}},{28:28}],32:[function(e,t,r){var a=e(22);a(a.G,{global:e(24)})},{22:22,24:24}],33:[function(e,t,r){arguments[4][16][0].apply(r,arguments)},{16:16}],34:[function(e,t,r){var a=e(48);t.exports=function(e,t){if("number"!=typeof e&&"Number"!=a(e))throw TypeError(t);return+e}},{48:48}],35:[function(e,t,r){var a=e(152)("unscopables"),n=Array.prototype;null==n[a]&&e(72)(n,a,{}),t.exports=function(e){n[a][e]=!0}},{152:152,72:72}],36:[function(e,t,r){var a=e(129)(!0);t.exports=function(e,t,r){return t+(r?a(e,t).length:1)}},{129:129}],37:[function(e,t,r){t.exports=function(e,t,r,a){if(!(e instanceof t)||void 0!==a&&a in e)throw TypeError(r+": incorrect invocation!");return e}},{}],38:[function(e,t,r){arguments[4][17][0].apply(r,arguments)},{17:17,81:81}],39:[function(e,t,r){var A=e(142),l=e(137),c=e(141);t.exports=[].copyWithin||function(e,t){var r=A(this),a=c(r.length),n=l(e,a),o=l(t,a),e=2{try{return e[t]}catch(e){}})(e=Object(e),n))?t:o?a(e):"Object"==(t=a(e))&&"function"==typeof e.callee?"Arguments":t}},{152:152,48:48}],48:[function(e,t,r){var a={}.toString;t.exports=function(e){return a.call(e).slice(8,-1)}},{}],49:[function(e,t,r){function i(e,t){var r,a=d(t);if("F"!==a)return e._i[a];for(r=e._f;r;r=r.n)if(r.k==t)return r}var s=e(99).f,A=e(98),l=e(117),c=e(54),p=e(37),u=e(68),a=e(85),n=e(87),o=e(123),f=e(58),d=e(94).fastKey,h=e(149),g=f?"_s":"size";t.exports={getConstructor:function(e,n,r,a){var o=e(function(e,t){p(e,o,n,"_i"),e._t=n,e._i=A(null),e._f=void 0,e._l=void 0,e[g]=0,null!=t&&u(t,r,e[a],e)});return l(o.prototype,{clear:function(){for(var e=h(this,n),t=e._i,r=e._f;r;r=r.n)r.r=!0,r.p&&(r.p=r.p.n=void 0),delete t[r.i];e._f=e._l=void 0,e[g]=0},delete:function(e){var t,r,a=h(this,n),e=i(a,e);return e&&(t=e.n,r=e.p,delete a._i[e.i],e.r=!0,r&&(r.n=t),t&&(t.p=r),a._f==e&&(a._f=t),a._l==e&&(a._l=r),a[g]--),!!e},forEach:function(e){h(this,n);for(var t,r=c(e,1i;)o.call(e,a=n[i++])&&t.push(a);return t}},{104:104,107:107,108:108}],62:[function(e,t,r){function f(e,t,r){var a,n,o,i=e&f.F,s=e&f.G,A=e&f.P,l=e&f.B,c=s?d:e&f.S?d[t]||(d[t]={}):(d[t]||{})[y],p=s?h:h[t]||(h[t]={}),u=p[y]||(p[y]={});for(a in r=s?t:r)n=((o=!i&&c&&void 0!==c[a])?c:r)[a],o=l&&o?v(n,d):A&&"function"==typeof n?v(Function.call,n):n,c&&m(c,a,n,e&f.U),p[a]!=n&&g(p,a,o),A&&u[a]!=n&&(u[a]=n)}var d=e(70),h=e(52),g=e(72),m=e(118),v=e(54),y="prototype";d.core=h,f.F=1,f.G=2,f.S=4,f.P=8,f.B=16,f.W=32,f.U=64,f.R=128,t.exports=f},{118:118,52:52,54:54,70:70,72:72}],63:[function(e,t,r){var a=e(152)("match");t.exports=function(t){var r=/./;try{"/./"[t](r)}catch(e){try{return r[a]=!1,!"/./"[t](r)}catch(e){}}return!0}},{152:152}],64:[function(e,t,r){arguments[4][23][0].apply(r,arguments)},{23:23}],65:[function(e,t,r){e(248);var a,A=e(118),l=e(72),c=e(64),p=e(57),u=e(152),f=e(120),d=u("species"),h=!c(function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$
")}),g=(a=(e=/(?:)/).exec,e.exec=function(){return a.apply(this,arguments)},2===(e="ab".split(e)).length&&"a"===e[0]&&"b"===e[1]);t.exports=function(r,e,t){var o,a,n=u(r),i=!c(function(){var e={};return e[n]=function(){return 7},7!=""[r](e)}),s=i?!c(function(){var e=!1,t=/a/;return t.exec=function(){return e=!0,null},"split"===r&&(t.constructor={},t.constructor[d]=function(){return t}),t[n](""),!e}):void 0;i&&s&&("replace"!==r||h)&&("split"!==r||g)||(o=/./[n],t=(s=t(p,n,""[r],function(e,t,r,a,n){return t.exec===f?i&&!n?{done:!0,value:o.call(t,r,a)}:{done:!0,value:e.call(r,t,a)}:{done:!1}}))[0],a=s[1],A(String.prototype,r,t),l(RegExp.prototype,n,2==e?function(e,t){return a.call(e,this,t)}:function(e){return a.call(e,this)}))}},{118:118,120:120,152:152,248:248,57:57,64:64,72:72}],66:[function(e,t,r){var a=e(38);t.exports=function(){var e=a(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t}},{38:38}],67:[function(e,t,r){var d=e(79),h=e(81),g=e(141),m=e(54),v=e(152)("isConcatSpreadable");t.exports=function e(t,r,a,n,o,i,s,A){for(var l,c,p=o,u=0,f=!!s&&m(s,A,3);udocument.F=Object<\/script>"),e.close(),l=e.F;t--;)delete l[A][i[t]];return l()};e.exports=Object.create||function(e,t){var r;return null!==e?(a[A]=n(e),r=new a,a[A]=null,r[s]=e):r=l(),void 0===t?r:o(r,t)}},{100:100,125:125,38:38,59:59,60:60,73:73}],99:[function(e,t,r){arguments[4][29][0].apply(r,arguments)},{143:143,29:29,38:38,58:58,74:74}],100:[function(e,t,r){var i=e(99),s=e(38),A=e(107);t.exports=e(58)?Object.defineProperties:function(e,t){s(e);for(var r,a=A(t),n=a.length,o=0;on;)!i(a,r=t[n++])||~A(o,r)||o.push(r);return o}},{125:125,140:140,41:41,71:71}],107:[function(e,t,r){var a=e(106),n=e(60);t.exports=Object.keys||function(e){return a(e,n)}},{106:106,60:60}],108:[function(e,t,r){r.f={}.propertyIsEnumerable},{}],109:[function(e,t,r){var n=e(62),o=e(52),i=e(64);t.exports=function(e,t){var r=(o.Object||{})[e]||Object[e],a={};a[e]=t(r),n(n.S+n.F*i(function(){r(1)}),"Object",a)}},{52:52,62:62,64:64}],110:[function(e,t,r){var A=e(58),l=e(107),c=e(140),p=e(108).f;t.exports=function(s){return function(e){for(var t,r=c(e),a=l(r),n=a.length,o=0,i=[];o>>0||(o.test(e)?16:10))}:a},{134:134,135:135,70:70}],114:[function(e,t,r){t.exports=function(e){try{return{e:!1,v:e()}}catch(e){return{e:!0,v:e}}}},{}],115:[function(e,t,r){var a=e(38),n=e(81),o=e(96);t.exports=function(e,t){return a(e),n(t)&&t.constructor===e?t:((0,(e=o.f(e)).resolve)(t),e.promise)}},{38:38,81:81,96:96}],116:[function(e,t,r){arguments[4][30][0].apply(r,arguments)},{30:30}],117:[function(e,t,r){var n=e(118);t.exports=function(e,t,r){for(var a in t)n(e,a,t[a],r);return e}},{118:118}],118:[function(e,t,r){var o=e(70),i=e(72),s=e(71),A=e(147)("src"),a=e(69),n="toString",l=(""+a).split(n);e(52).inspectSource=function(e){return a.call(e)},(t.exports=function(e,t,r,a){var n="function"==typeof r;n&&!s(r,"name")&&i(r,"name",t),e[t]!==r&&(n&&!s(r,A)&&i(r,A,e[t]?""+e[t]:l.join(String(t))),e===o?e[t]=r:a?e[t]?e[t]=r:i(e,t,r):(delete e[t],i(e,t,r)))})(Function.prototype,n,function(){return"function"==typeof this&&this[A]||a.call(this)})},{147:147,52:52,69:69,70:70,71:71,72:72}],119:[function(e,t,r){var a=e(47),n=RegExp.prototype.exec;t.exports=function(e,t){var r=e.exec;if("function"==typeof r){r=r.call(e,t);if("object"!=typeof r)throw new TypeError("RegExp exec method returned something other than an Object or null");return r}if("RegExp"!==a(e))throw new TypeError("RegExp#exec called on incompatible receiver");return n.call(e,t)}},{47:47}],120:[function(e,t,r){var a,n,i=e(66),s=RegExp.prototype.exec,A=String.prototype.replace,e=s,l="lastIndex",c=(n=/b*/g,s.call(a=/a/,"a"),s.call(n,"a"),0!==a[l]||0!==n[l]),p=void 0!==/()??/.exec("")[1];t.exports=e=c||p?function(e){var t,r,a,n,o=this;return p&&(r=new RegExp("^"+o.source+"$(?!\\s)",i.call(o))),c&&(t=o[l]),a=s.call(o,e),c&&a&&(o[l]=o.global?a.index+a[0].length:t),p&&a&&1{try{(a=t(54)(Function.call,t(101).f(Object.prototype,"__proto__").set,2))(e,[]),r=!(e instanceof Array)}catch(e){r=!0}return function(e,t){return n(e,t),r?e.__proto__=t:a(e,t),e}})({},!1):void 0),check:n}},{101:101,38:38,54:54,81:81}],123:[function(e,t,r){var a=e(70),n=e(99),o=e(58),i=e(152)("species");t.exports=function(e){e=a[e];o&&e&&!e[i]&&n.f(e,i,{configurable:!0,get:function(){return this}})}},{152:152,58:58,70:70,99:99}],124:[function(e,t,r){var a=e(99).f,n=e(71),o=e(152)("toStringTag");t.exports=function(e,t,r){e&&!n(e=r?e:e.prototype,o)&&a(e,o,{configurable:!0,value:t})}},{152:152,71:71,99:99}],125:[function(e,t,r){var a=e(126)("keys"),n=e(147);t.exports=function(e){return a[e]||(a[e]=n(e))}},{126:126,147:147}],126:[function(e,t,r){var a=e(52),n=e(70),o="__core-js_shared__",i=n[o]||(n[o]={});(t.exports=function(e,t){return i[e]||(i[e]=void 0!==t?t:{})})("versions",[]).push({version:a.version,mode:e(89)?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},{52:52,70:70,89:89}],127:[function(e,t,r){var a=e(38),n=e(33),o=e(152)("species");t.exports=function(e,t){var e=a(e).constructor;return void 0===e||null==(e=a(e)[o])?t:n(e)}},{152:152,33:33,38:38}],128:[function(e,t,r){var a=e(64);t.exports=function(e,t){return!!e&&a(function(){t?e.call(null,function(){},1):e.call(null)})}},{64:64}],129:[function(e,t,r){var o=e(139),i=e(57);t.exports=function(n){return function(e,t){var r,e=String(i(e)),t=o(t),a=e.length;return t<0||a<=t?n?"":void 0:(r=e.charCodeAt(t))<55296||56319"+e+""}var n=e(62),o=e(64),i=e(57),s=/"/g;t.exports=function(t,e){var r={};r[t]=e(a),n(n.P+n.F*o(function(){var e=""[t]('"');return e!==e.toLowerCase()||3t&&(n=n.slice(0,t)),a?n+e:e+n)}},{133:133,141:141,57:57}],133:[function(e,t,r){var n=e(139),o=e(57);t.exports=function(e){var t=String(o(this)),r="",a=n(e);if(a<0||a==1/0)throw RangeError("Count can't be negative");for(;0>>=1)&&(t+=t))1&a&&(r+=t);return r}},{139:139,57:57}],134:[function(e,t,r){function a(e,t,r){var a={},n=i(function(){return!!s[e]()||"​…"!="​…"[e]()}),t=a[e]=n?t(c):s[e];r&&(a[r]=t),o(o.P+o.F*n,"String",a)}var o=e(62),n=e(57),i=e(64),s=e(135),e="["+s+"]",A=RegExp("^"+e+e+"*"),l=RegExp(e+e+"*$"),c=a.trim=function(e,t){return e=String(n(e)),1&t&&(e=e.replace(A,"")),e=2&t?e.replace(l,""):e};t.exports=a},{135:135,57:57,62:62,64:64}],135:[function(e,t,r){t.exports="\t\n\v\f\r   ᠎              \u2028\u2029\ufeff"},{}],136:[function(e,t,r){function a(){var e,t=+this;m.hasOwnProperty(t)&&(e=m[t],delete m[t],e())}function n(e){a.call(e.data)}var o,i=e(54),s=e(76),A=e(73),l=e(59),c=e(70),p=c.process,u=c.setImmediate,f=c.clearImmediate,d=c.MessageChannel,h=c.Dispatch,g=0,m={},v="onreadystatechange";u&&f||(u=function(e){for(var t=[],r=1;r{x(e,a,{get:function(){return(e=this._d).v[u](a*l+e.o,ke);var e},set:function(e){var t=a,r=this._d;c&&(e=(e=Math.round(e))<0?0:255>1,l=23===t?x(2,-24)-x(2,-77):0,c=0,p=e<0||0===e&&1/e<0?1:0;for((e=G(e))!=e||e===y?(n=e!=e?1:0,a=r):(a=Q(W(e)/Y),e*(o=x(2,-a))<1&&(a--,o*=2),2<=(e+=1<=a+A?l/o:l*x(2,1-A))*o&&(a++,o/=2),r<=a+A?(n=0,a=r):1<=a+A?(n=(e*o-1)*x(2,t),a+=A):(n=e*x(2,A-1)*x(2,t),a=0));8<=t;i[c++]=255&n,n/=256,t-=8);for(a=a<>1,s=n-7,A=r-1,n=e[A--],l=127&n;for(n>>=7;0>=-s,s+=t;0>8&255]}function D(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]}function X(e){return S(e,52,8)}function H(e){return S(e,23,4)}function k(e,t,r){U(e[f],t,{get:function(){return this[r]}})}function _(e,t,r,a){r=c(+r);if(r+t>e[C])throw v(d);var n=e[w]._b,r=r+e[P],e=n.slice(r,r+t);return a?e:e.reverse()}function N(e,t,r,a,n,o){r=c(+r);if(r+t>e[C])throw v(d);for(var i=e[w]._b,s=r+e[P],A=a(+n),l=0;lV;)(F=I[V++])in h||o(h,F,b[F]);O||(s.constructor=h)}var l=new g(new h(2)),q=g[f].setInt8;l.setInt8(0,2147483648),l.setInt8(1,2147483649),!l.getInt8(0)&&l.getInt8(1)||i(g[f],{setInt8:function(e,t){q.call(this,e,t<<24>>24)},setUint8:function(e,t){q.call(this,e,t<<24>>24)}},!0)}else h=function(e){A(this,h,p);e=c(e);this._b=j.call(new Array(e),0),this[C]=e},g=function(e,t,r){A(this,g,u),A(e,h,u);var a=e[C],t=M(t);if(t<0||a>24},getUint8:function(e){return _(this,1,e)[0]},getInt16:function(e){e=_(this,2,e,arguments[1]);return(e[1]<<8|e[0])<<16>>16},getUint16:function(e){e=_(this,2,e,arguments[1]);return e[1]<<8|e[0]},getInt32:function(e){return E(_(this,4,e,arguments[1]))},getUint32:function(e){return E(_(this,4,e,arguments[1]))>>>0},getFloat32:function(e){return L(_(this,4,e,arguments[1]),23,4)},getFloat64:function(e){return L(_(this,8,e,arguments[1]),52,8)},setInt8:function(e,t){N(this,1,e,T,t)},setUint8:function(e,t){N(this,1,e,T,t)},setInt16:function(e,t){N(this,2,e,B,t,arguments[2])},setUint16:function(e,t){N(this,2,e,B,t,arguments[2])},setInt32:function(e,t){N(this,4,e,D,t,arguments[2])},setUint32:function(e,t){N(this,4,e,D,t,arguments[2])},setFloat32:function(e,t){N(this,4,e,H,t,arguments[2])},setFloat64:function(e,t){N(this,8,e,X,t,arguments[2])}});e(h,p),e(g,u),o(g[f],n.VIEW,!0),t[p]=h,t[u]=g},{103:103,117:117,124:124,138:138,139:139,141:141,146:146,37:37,40:40,58:58,64:64,70:70,72:72,89:89,99:99}],146:[function(e,t,r){for(var a,n=e(70),o=e(72),e=e(147),i=e("typed_array"),s=e("view"),e=!(!n.ArrayBuffer||!n.DataView),A=e,l=0,c="Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array".split(",");l<9;)(a=n[c[l++]])?(o(a.prototype,i,!0),o(a.prototype,s,!0)):A=!1;t.exports={ABV:e,CONSTR:A,TYPED:i,VIEW:s}},{147:147,70:70,72:72}],147:[function(e,t,r){var a=0,n=Math.random();t.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++a+n).toString(36))}},{}],148:[function(e,t,r){e=e(70).navigator;t.exports=e&&e.userAgent||""},{70:70}],149:[function(e,t,r){var a=e(81);t.exports=function(e,t){if(a(e)&&e._t===t)return e;throw TypeError("Incompatible receiver, "+t+" required!")}},{81:81}],150:[function(e,t,r){var a=e(70),n=e(52),o=e(89),i=e(151),s=e(99).f;t.exports=function(e){var t=n.Symbol||(n.Symbol=!o&&a.Symbol||{});"_"==e.charAt(0)||e in t||s(t,e,{value:i.f(e)})}},{151:151,52:52,70:70,89:89,99:99}],151:[function(e,t,r){r.f=e(152)},{152:152}],152:[function(e,t,r){var a=e(126)("wks"),n=e(147),o=e(70).Symbol,i="function"==typeof o;(t.exports=function(e){return a[e]||(a[e]=i&&o[e]||(i?o:n)("Symbol."+e))}).store=a},{126:126,147:147,70:70}],153:[function(e,t,r){var a=e(47),n=e(152)("iterator"),o=e(88);t.exports=e(52).getIteratorMethod=function(e){if(null!=e)return e[n]||e["@@iterator"]||o[a(e)]}},{152:152,47:47,52:52,88:88}],154:[function(e,t,r){var a=e(62);a(a.P,"Array",{copyWithin:e(39)}),e(35)("copyWithin")},{35:35,39:39,62:62}],155:[function(e,t,r){var a=e(62),n=e(42)(4);a(a.P+a.F*!e(128)([].every,!0),"Array",{every:function(e){return n(this,e,arguments[1])}})},{128:128,42:42,62:62}],156:[function(e,t,r){var a=e(62);a(a.P,"Array",{fill:e(40)}),e(35)("fill")},{35:35,40:40,62:62}],157:[function(e,t,r){var a=e(62),n=e(42)(2);a(a.P+a.F*!e(128)([].filter,!0),"Array",{filter:function(e){return n(this,e,arguments[1])}})},{128:128,42:42,62:62}],158:[function(e,t,r){var a=e(62),n=e(42)(6),o="findIndex",i=!0;o in[]&&Array(1)[o](function(){i=!1}),a(a.P+a.F*i,"Array",{findIndex:function(e){return n(this,e,1=e.length?(this._t=void 0,n(1)):n(0,"keys"==t?r:"values"==t?e[r]:[r,e[r]])},"values"),o.Arguments=o.Array,a("keys"),a("values"),a("entries")},{140:140,35:35,85:85,87:87,88:88}],165:[function(e,t,r){var a=e(62),n=e(140),o=[].join;a(a.P+a.F*(e(77)!=Object||!e(128)(o)),"Array",{join:function(e){return o.call(n(this),void 0===e?",":e)}})},{128:128,140:140,62:62,77:77}],166:[function(e,t,r){var a=e(62),n=e(140),o=e(139),i=e(141),s=[].lastIndexOf,A=!!s&&1/[1].lastIndexOf(1,-0)<0;a(a.P+a.F*(A||!e(128)(s)),"Array",{lastIndexOf:function(e){if(A)return s.apply(this,arguments)||0;var t=n(this),r=i(t.length),a=r-1;for((a=1>>=0)?31-Math.floor(Math.log(e+.5)*Math.LOG2E):32}})},{62:62}],189:[function(e,t,r){var e=e(62),a=Math.exp;e(e.S,"Math",{cosh:function(e){return(a(e=+e)+a(-e))/2}})},{62:62}],190:[function(e,t,r){var a=e(62),e=e(90);a(a.S+a.F*(e!=Math.expm1),"Math",{expm1:e})},{62:62,90:90}],191:[function(e,t,r){var a=e(62);a(a.S,"Math",{fround:e(91)})},{62:62,91:91}],192:[function(e,t,r){var e=e(62),A=Math.abs;e(e.S,"Math",{hypot:function(e,t){for(var r,a,n=0,o=0,i=arguments.length,s=0;o>>16)*a+r*(65535&t>>>16)<<16>>>0)}})},{62:62,64:64}],194:[function(e,t,r){e=e(62);e(e.S,"Math",{log10:function(e){return Math.log(e)*Math.LOG10E}})},{62:62}],195:[function(e,t,r){var a=e(62);a(a.S,"Math",{log1p:e(92)})},{62:62,92:92}],196:[function(e,t,r){e=e(62);e(e.S,"Math",{log2:function(e){return Math.log(e)/Math.LN2}})},{62:62}],197:[function(e,t,r){var a=e(62);a(a.S,"Math",{sign:e(93)})},{62:62,93:93}],198:[function(e,t,r){var a=e(62),n=e(90),o=Math.exp;a(a.S+a.F*e(64)(function(){return-2e-17!=!Math.sinh(-2e-17)}),"Math",{sinh:function(e){return Math.abs(e=+e)<1?(n(e)-n(-e))/2:(o(e-1)-o(-e-1))*(Math.E/2)}})},{62:62,64:64,90:90}],199:[function(e,t,r){var a=e(62),n=e(90),o=Math.exp;a(a.S,"Math",{tanh:function(e){var t=n(e=+e),r=n(-e);return t==1/0?1:r==1/0?-1:(t-r)/(o(e)+o(-e))}})},{62:62,90:90}],200:[function(e,t,r){e=e(62);e(e.S,"Math",{trunc:function(e){return(0w;w++)o(h,y=x[w])&&!o(b,y)&&u(b,y,p(h,y));(b.prototype=g).constructor=b,e(118)(n,d,b)}},{101:101,103:103,118:118,134:134,143:143,48:48,58:58,64:64,70:70,71:71,75:75,98:98,99:99}],202:[function(e,t,r){e=e(62);e(e.S,"Number",{EPSILON:Math.pow(2,-52)})},{62:62}],203:[function(e,t,r){var a=e(62),n=e(70).isFinite;a(a.S,"Number",{isFinite:function(e){return"number"==typeof e&&n(e)}})},{62:62,70:70}],204:[function(e,t,r){var a=e(62);a(a.S,"Number",{isInteger:e(80)})},{62:62,80:80}],205:[function(e,t,r){e=e(62);e(e.S,"Number",{isNaN:function(e){return e!=e}})},{62:62}],206:[function(e,t,r){var a=e(62),n=e(80),o=Math.abs;a(a.S,"Number",{isSafeInteger:function(e){return n(e)&&o(e)<=9007199254740991}})},{62:62,80:80}],207:[function(e,t,r){e=e(62);e(e.S,"Number",{MAX_SAFE_INTEGER:9007199254740991})},{62:62}],208:[function(e,t,r){e=e(62);e(e.S,"Number",{MIN_SAFE_INTEGER:-9007199254740991})},{62:62}],209:[function(e,t,r){var a=e(62),e=e(112);a(a.S+a.F*(Number.parseFloat!=e),"Number",{parseFloat:e})},{112:112,62:62}],210:[function(e,t,r){var a=e(62),e=e(113);a(a.S+a.F*(Number.parseInt!=e),"Number",{parseInt:e})},{113:113,62:62}],211:[function(e,t,r){function s(e,t){for(var r=-1,a=t;++r<6;)i[r]=(a+=e*i[r])%1e7,a=o(a/1e7)}function A(e){for(var t=6,r=0;0<=--t;)i[t]=o((r+=i[t])/e),r=r%e*1e7}function l(){for(var e,t=6,r="";0<=--t;)""===r&&0!==t&&0===i[t]||(e=String(i[t]),r=""===r?e:r+f.call("0",7-e.length)+e);return r}function c(e,t,r){return 0===t?r:t%2==1?c(e,t-1,r*e):c(e*e,t/2,r)}var a=e(62),p=e(139),u=e(34),f=e(133),n=1..toFixed,o=Math.floor,i=[0,0,0,0,0,0],d="Number.toFixed: incorrect invocation!";a(a.P+a.F*(!!n&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==0xde0b6b3a7640080.toFixed(0))||!e(64)(function(){n.call({})})),"Number",{toFixed:function(e){var t,r,a,n=u(this,d),e=p(e),o="",i="0";if(e<0||20{for(var e=0,t=n*c(2,69,1);4096<=t;)e+=12,t/=4096;for(;2<=t;)e+=1,t/=2;return e})()-69)<0?n*c(2,-t,1):n/c(2,t,1),a*=4503599627370496,0<(t=52-t)){for(s(0,a),r=e;7<=r;)s(1e7,0),r-=7;for(s(c(10,r,1),0),r=t-1;23<=r;)A(1<<23),r-=23;A(1<r;){a=void 0;n=void 0;o=void 0;i=void 0;s=void 0;A=void 0;l=void 0;c=void 0;var a=f[r++];var n,o,i,s=t?a.ok:a.fail,A=a.resolve,l=a.reject,c=a.domain;try{s?(t||(2==p._h&&g(p),p._h=1),!0===s?n=e:(c&&c.enter(),n=s(e),c&&(c.exit(),i=!0)),n===a.promise?l(T("Promise-chain cycle")):(o=d(n))?o.call(n,A,l):A(n)):l(e)}catch(a){c&&!i&&c.exit(),l(a)}}p._c=[],p._n=!1,u&&!p._h&&h(p)}))}function o(e){var t=this;t._d||(t._d=!0,(t=t._w||t)._v=e,t._s=2,t._a||(t._a=t._c.slice()),n(t,!0))}function h(n){x.call(c,function(){var e,t,r=n._v,a=F(n);if(a&&(e=P(function(){_?B.emit("unhandledRejection",r,n):(t=c.onunhandledrejection)?t({promise:n,reason:r}):(t=c.console)&&t.error&&t.error("Unhandled promise rejection",r)}),n._h=_||F(n)?2:1),n._a=void 0,a&&e.e)throw e.v})}function g(t){x.call(c,function(){var e;_?B.emit("rejectionHandled",t):(e=c.onrejectionhandled)&&e({promise:t,reason:t._v})})}var t,i,s,A,l=r(89),c=r(70),p=r(54),e=r(47),u=r(62),f=r(81),m=r(33),v=r(37),y=r(68),b=r(127),x=r(136).set,w=r(95)(),C=r(96),P=r(114),S=r(148),L=r(115),E="Promise",T=c.TypeError,B=c.process,D=B&&B.versions,M=D&&D.v8||"",k=c[E],_="process"==e(B),N=i=C.f,D=!!(()=>{try{var e=k.resolve(1),t=(e.constructor={})[r(152)("species")]=function(e){e(a,a)};return(_||"function"==typeof PromiseRejectionEvent)&&e.then(a)instanceof t&&0!==M.indexOf("6.6")&&-1===S.indexOf("Chrome/66")}catch(e){}})(),F=function(e){return 1!==e._h&&0===(e._a||e._c).length},I=function(e){var r,a=this;if(!a._d){a._d=!0,a=a._w||a;try{if(a===e)throw T("Promise can't be resolved itself");(r=d(e))?w(function(){var t={_w:a,_d:!1};try{r.call(e,p(I,t,1),p(o,t,1))}catch(e){o.call(t,e)}}):(a._v=e,a._s=1,n(a,!1))}catch(e){o.call({_w:a,_d:!1},e)}}};D||(k=function(e){v(this,k,E,"_h"),m(e),t.call(this);try{e(p(I,this,1),p(o,this,1))}catch(e){o.call(this,e)}},(t=function(e){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1}).prototype=r(117)(k.prototype,{then:function(e,t){var r=N(b(this,k));return r.ok="function"!=typeof e||e,r.fail="function"==typeof t&&t,r.domain=_?B.domain:void 0,this._c.push(r),this._a&&this._a.push(r),this._s&&n(this,!1),r.promise},catch:function(e){return this.then(void 0,e)}}),s=function(){var e=new t;this.promise=e,this.resolve=p(I,e,1),this.reject=p(o,e,1)},C.f=N=function(e){return e===k||e===A?new s:i(e)}),u(u.G+u.W+u.F*!D,{Promise:k}),r(124)(k,E),r(123)(E),A=r(52)[E],u(u.S+u.F*!D,E,{reject:function(e){var t=N(this);return(0,t.reject)(e),t.promise}}),u(u.S+u.F*(l||!D),E,{resolve:function(e){return L(l&&this===A?k:this,e)}}),u(u.S+u.F*!(D&&r(86)(function(e){k.all(e).catch(a)})),E,{all:function(e){var i=this,t=N(i),s=t.resolve,A=t.reject,r=P(function(){var a=[],n=0,o=1;y(e,!1,function(e){var t=n++,r=!1;a.push(void 0),o++,i.resolve(e).then(function(e){r||(r=!0,a[t]=e,--o)||s(a)},A)}),--o||s(a)});return r.e&&A(r.v),t.promise},race:function(e){var t=this,r=N(t),a=r.reject,n=P(function(){y(e,!1,function(e){t.resolve(e).then(r.resolve,a)})});return n.e&&a(n.v),r.promise}})},{114:114,115:115,117:117,123:123,124:124,127:127,136:136,148:148,152:152,33:33,37:37,47:47,52:52,54:54,62:62,68:68,70:70,81:81,86:86,89:89,95:95,96:96}],233:[function(e,t,r){var a=e(62),n=e(33),o=e(38),i=(e(70).Reflect||{}).apply,s=Function.apply;a(a.S+a.F*!e(64)(function(){i(function(){})}),"Reflect",{apply:function(e,t,r){e=n(e),r=o(r);return i?i(e,t,r):s.call(e,t,r)}})},{33:33,38:38,62:62,64:64,70:70}],234:[function(e,t,r){var a=e(62),n=e(98),o=e(33),i=e(38),s=e(81),A=e(64),l=e(46),c=(e(70).Reflect||{}).construct,p=A(function(){function e(){}return!(c(function(){},[],e)instanceof e)}),u=!A(function(){c(function(){})});a(a.S+a.F*(p||u),"Reflect",{construct:function(e,t){o(e),i(t);var r=arguments.length<3?e:o(arguments[2]);if(u&&!p)return c(e,t,r);if(e==r){switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3])}var a=[null];return a.push.apply(a,t),new(l.apply(e,a))}a=r.prototype,r=n(s(a)?a:Object.prototype),a=Function.apply.call(e,r,t);return s(a)?a:r}})},{33:33,38:38,46:46,62:62,64:64,70:70,81:81,98:98}],235:[function(e,t,r){var a=e(99),n=e(62),o=e(38),i=e(143);n(n.S+n.F*e(64)(function(){Reflect.defineProperty(a.f({},1,{value:1}),1,{value:2})}),"Reflect",{defineProperty:function(e,t,r){o(e),t=i(t,!0),o(r);try{return a.f(e,t,r),!0}catch(e){return!1}}})},{143:143,38:38,62:62,64:64,99:99}],236:[function(e,t,r){var a=e(62),n=e(101).f,o=e(38);a(a.S,"Reflect",{deleteProperty:function(e,t){var r=n(o(e),t);return!(r&&!r.configurable)&&delete e[t]}})},{101:101,38:38,62:62}],237:[function(e,t,r){function a(e){this._t=o(e),this._i=0;var t,r=this._k=[];for(t in e)r.push(t)}var n=e(62),o=e(38);e(84)(a,"Object",function(){var e,t=this._k;do{if(this._i>=t.length)return{value:void 0,done:!0}}while(!((e=t[this._i++])in this._t));return{value:e,done:!1}}),n(n.S,"Reflect",{enumerate:function(e){return new a(e)}})},{38:38,62:62,84:84}],238:[function(e,t,r){var a=e(101),n=e(62),o=e(38);n(n.S,"Reflect",{getOwnPropertyDescriptor:function(e,t){return a.f(o(e),t)}})},{101:101,38:38,62:62}],239:[function(e,t,r){var a=e(62),n=e(105),o=e(38);a(a.S,"Reflect",{getPrototypeOf:function(e){return n(o(e))}})},{105:105,38:38,62:62}],240:[function(e,t,r){var o=e(101),i=e(105),s=e(71),a=e(62),A=e(81),l=e(38);a(a.S,"Reflect",{get:function e(t,r){var a,n=arguments.length<3?t:arguments[2];return l(t)===n?t[r]:(a=o.f(t,r))?s(a,"value")?a.value:void 0!==a.get?a.get.call(n):void 0:A(a=i(t))?e(a,r,n):void 0}})},{101:101,105:105,38:38,62:62,71:71,81:81}],241:[function(e,t,r){e=e(62);e(e.S,"Reflect",{has:function(e,t){return t in e}})},{62:62}],242:[function(e,t,r){var a=e(62),n=e(38),o=Object.isExtensible;a(a.S,"Reflect",{isExtensible:function(e){return n(e),!o||o(e)}})},{38:38,62:62}],243:[function(e,t,r){var a=e(62);a(a.S,"Reflect",{ownKeys:e(111)})},{111:111,62:62}],244:[function(e,t,r){var a=e(62),n=e(38),o=Object.preventExtensions;a(a.S,"Reflect",{preventExtensions:function(e){n(e);try{return o&&o(e),!0}catch(e){return!1}}})},{38:38,62:62}],245:[function(e,t,r){var a=e(62),n=e(122);n&&a(a.S,"Reflect",{setPrototypeOf:function(e,t){n.check(e,t);try{return n.set(e,t),!0}catch(e){return!1}}})},{122:122,62:62}],246:[function(e,t,r){var i=e(99),s=e(101),A=e(105),l=e(71),a=e(62),c=e(116),p=e(38),u=e(81);a(a.S,"Reflect",{set:function e(t,r,a){var n=arguments.length<4?t:arguments[3],o=s.f(p(t),r);if(!o){if(u(t=A(t)))return e(t,r,a,n);o=c(0)}if(l(o,"value")){if(!1===o.writable||!u(n))return!1;if(t=s.f(n,r)){if(t.get||t.set||!1===t.writable)return!1;t.value=a,i.f(n,r,t)}else i.f(n,r,c(0,a));return!0}return void 0!==o.set&&(o.set.call(n,a),!0)}})},{101:101,105:105,116:116,38:38,62:62,71:71,81:81,99:99}],247:[function(e,t,r){var a=e(70),o=e(75),n=e(99).f,i=e(103).f,s=e(82),A=e(66),l=d=a.RegExp,c=d.prototype,p=/a/g,u=/a/g,f=new d(p)!==p;if(e(58)&&(!f||e(64)(function(){return u[e(152)("match")]=!1,d(p)!=p||d(u)==u||"/a/i"!=d(p,"i")}))){for(var d=function(e,t){var r=this instanceof d,a=s(e),n=void 0===t;return!r&&a&&e.constructor===d&&n?e:o(f?new l(a&&!n?e.source:e,t):l((a=e instanceof d)?e.source:e,a&&n?A.call(e):t),r?this:c,d)},h=i(l),g=0;h.length>g;)(t=>{t in d||n(d,t,{configurable:!0,get:function(){return l[t]},set:function(e){l[t]=e}})})(h[g++]);(c.constructor=d).prototype=c,e(118)(a,"RegExp",d)}e(123)("RegExp")},{103:103,118:118,123:123,152:152,58:58,64:64,66:66,70:70,75:75,82:82,99:99}],248:[function(e,t,r){var a=e(120);e(62)({target:"RegExp",proto:!0,forced:a!==/./.exec},{exec:a})},{120:120,62:62}],249:[function(e,t,r){e(58)&&"g"!=/./g.flags&&e(99).f(RegExp.prototype,"flags",{configurable:!0,get:e(66)})},{58:58,66:66,99:99}],250:[function(e,t,r){var c=e(38),p=e(141),u=e(36),f=e(119);e(65)("match",1,function(a,n,A,l){return[function(e){var t=a(this),r=null==e?void 0:e[n];return void 0!==r?r.call(e,t):new RegExp(e)[n](String(t))},function(e){var t=l(A,e,this);if(t.done)return t.value;var r=c(e),a=String(this);if(!r.global)return f(r,a);for(var n=r.unicode,o=[],i=r.lastIndex=0;null!==(s=f(r,a));){var s=String(s[0]);""===(o[i]=s)&&(r.lastIndex=u(a,p(r.lastIndex),n)),i++}return 0===i?null:o}]})},{119:119,141:141,36:36,38:38,65:65}],251:[function(e,t,r){var w=e(38),C=e(142),P=e(141),S=e(139),L=e(36),E=e(119),T=Math.max,B=Math.min,D=Math.floor,k=/\$([$&`']|\d\d?|<[^>]*>)/g,_=/\$([$&`']|\d\d?)/g;e(65)("replace",2,function(n,o,b,x){return[function(e,t){var r=n(this),a=null==e?void 0:e[o];return void 0!==a?a.call(e,r,t):b.call(String(r),e,t)},function(e,t){var r=x(b,e,this,t);if(r.done)return r.value;var a,n=w(e),o=String(this),i="function"==typeof t,s=(i||(t=String(t)),n.global);s&&(a=n.unicode,n.lastIndex=0);for(var A=[];;){var l=E(n,o);if(null===l)break;if(A.push(l),!s)break;""===String(l[0])&&(n.lastIndex=L(o,P(n.lastIndex),a))}for(var c,p="",u=0,f=0;f{var c=s+o.length,p=A.length,t=_;return void 0!==l&&(l=C(l),t=k),b.call(e,t,function(e,t){var r;switch(t.charAt(0)){case"$":return"$";case"&":return o;case"`":return i.slice(0,s);case"'":return i.slice(c);case"<":r=l[t.slice(1,-1)];break;default:var a,n=+t;if(0==n)return e;if(p>>0,c=new RegExp(e.source,s+"g");(a=u.call(c,r))&&!(A<(n=c[P])&&(i.push(r.slice(A,a.index)),1>>0;if(0==s)return[];if(0===a.length)return null===x(i,a)?[a]:[];for(var A=0,l=0,c=[];l>10),t%1024+56320))}return r.join("")}})},{137:137,62:62}],266:[function(e,t,r){var a=e(62),n=e(130);a(a.P+a.F*e(63)("includes"),"String",{includes:function(e){return!!~n(this,e,"includes").indexOf(e,1=e.length?{value:void 0,done:!0}:(e=a(e,t),this._i+=e.length,{value:e,done:!1})})},{129:129,85:85}],269:[function(e,t,r){e(131)("link",function(t){return function(e){return t(this,"a","href",e)}})},{131:131}],270:[function(e,t,r){var a=e(62),i=e(140),s=e(141);a(a.S,"String",{raw:function(e){for(var t=i(e.raw),r=s(t.length),a=arguments.length,n=[],o=0;on;)l(B,t=r[n++])||t==E||t==z||a.push(t);return a}function i(e){for(var t,r=e===k,a=Z(r?D:m(e)),n=[],o=0;a.length>o;)!l(B,t=a[o++])||r&&!l(k,t)||n.push(B[t]);return n}function s(e,t,r){return e===k&&s(D,t,r),g(e),t=v(t,!0),g(r),(l(B,t)?(r.enumerable?(l(e,E)&&e[E][t]&&(e[E][t]=!1),r=b(r,{enumerable:y(0,!1)})):(l(e,E)||w(e,E,y(1,{})),e[E][t]=!0),F):w)(e,t,r)}var A=e(70),l=e(71),c=e(58),p=e(62),M=e(118),z=e(94).KEY,u=e(64),f=e(126),d=e(124),U=e(147),h=e(152),j=e(151),G=e(150),Q=e(61),W=e(79),g=e(38),Y=e(81),X=e(142),m=e(140),v=e(143),y=e(116),b=e(98),H=e(102),V=e(101),x=e(104),q=e(99),J=e(107),K=V.f,w=q.f,Z=H.f,C=A.Symbol,P=A.JSON,S=P&&P.stringify,L="prototype",E=h("_hidden"),$=h("toPrimitive"),ee={}.propertyIsEnumerable,T=f("symbol-registry"),B=f("symbols"),D=f("op-symbols"),k=Object[L],f="function"==typeof C&&!!x.f,_=A.QObject,N=!_||!_[L]||!_[L].findChild,F=c&&u(function(){return 7!=b(w({},"a",{get:function(){return w(this,"a",{value:7}).a}})).a})?function(e,t,r){var a=K(k,t);a&&delete k[t],w(e,t,r),a&&e!==k&&w(k,t,a)}:w,I=f&&"symbol"==typeof C.iterator?function(e){return"symbol"==typeof e}:function(e){return e instanceof C};f||(M((C=function(){if(this instanceof C)throw TypeError("Symbol is not a constructor!");var t=U(0re;)h(te[re++]);for(var ae=J(h.store),ne=0;ae.length>ne;)G(ae[ne++]);p(p.S+p.F*!f,"Symbol",{for:function(e){return l(T,e+="")?T[e]:T[e]=C(e)},keyFor:function(e){if(!I(e))throw TypeError(e+" is not a symbol!");for(var t in T)if(T[t]===e)return t},useSetter:function(){N=!0},useSimple:function(){N=!1}}),p(p.S+p.F*!f,"Object",{create:function(e,t){return void 0===t?b(e):r(b(e),t)},defineProperty:s,defineProperties:r,getOwnPropertyDescriptor:n,getOwnPropertyNames:o,getOwnPropertySymbols:i});_=u(function(){x.f(1)});p(p.S+p.F*_,"Object",{getOwnPropertySymbols:function(e){return x.f(X(e))}}),P&&p(p.S+p.F*(!f||u(function(){var e=C();return"[null]"!=S([e])||"{}"!=S({a:e})||"{}"!=S(Object(e))})),"JSON",{stringify:function(e){for(var t,r,a=[e],n=1;ns;)void 0!==(r=n(a,t=o[s++]))&&p(i,t,r);return i}})},{101:101,111:111,140:140,53:53,62:62}],296:[function(e,t,r){var a=e(62),n=e(110)(!1);a(a.S,"Object",{values:function(e){return n(e)}})},{110:110,62:62}],297:[function(e,t,r){var a=e(62),n=e(52),o=e(70),i=e(127),s=e(115);a(a.P+a.R,"Promise",{finally:function(t){var r=i(this,n.Promise||o.Promise),e="function"==typeof t;return this.then(e?function(e){return s(r,t()).then(function(){return e})}:t,e?function(e){return s(r,t()).then(function(){throw e})}:t)}})},{115:115,127:127,52:52,62:62,70:70}],298:[function(e,t,r){var a=e(62),n=e(132),e=e(148),e=/Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(e);a(a.P+a.F*e,"String",{padEnd:function(e){return n(this,e,1{function c(e,i,s,A){return new(s=s||Promise)(function(r,t){function a(e){try{o(A.next(e))}catch(e){t(e)}}function n(e){try{o(A.throw(e))}catch(e){t(e)}}function o(e){var t;e.done?r(e.value):((t=e.value)instanceof s?t:new s(function(e){e(t)})).then(a,n)}o((A=A.apply(e,i||[])).next())})}let R=914400,m=12700,A="\r\n",D=/^[0-9a-fA-F]{6}$/,k=1.67,_=27,u={type:"solid",color:"666666",pt:1},Y=[.05,.1,.05,.1],p={color:"363636",pt:1},f={color:"888888",style:"solid",size:1,cap:"flat"},d="000000",v=12,N=18,o="LAYOUT_16x9",t="DEFAULT",l={type:"outer",blur:3,offset:23e3/12700,angle:90,color:"000000",opacity:.35,rotateWithShape:!0},y=[.5,.5,.5,.5],X={color:"000000"},F={size:8,color:"FFFFFF",opacity:.75},h="2094734552",I="2094734553",g="2094734554",H="2094734555",V="2094734556",r="ABCDEFGHIJKLMNOPQRSTUVWXYZ".split(""),q=["C0504D","4F81BD","9BBB59","8064A2","4BACC6","F79646","628FC6","C86360","C0504D","4F81BD","9BBB59","8064A2","4BACC6","F79646","628FC6","C86360"],J=["5DA5DA","FAA43A","60BD68","F17CB0","B2912F","B276B2","DECF3F","F15854","A7A7A7","5DA5DA","FAA43A","60BD68","F17CB0","B2912F","B276B2","DECF3F","F15854","A7A7A7"];var i,s,a,K,Z,n,$,ee,b,x,te,w,O,re,C,e;(e=i=i||{}).left="left",e.center="center",e.right="right",e.justify="justify",(e=s=s||{}).b="b",e.ctr="ctr",e.t="t";let ae="{F7021451-1387-4CA6-816F-3879F97B5CBC}",P=((e=a=a||{}).arraybuffer="arraybuffer",e.base64="base64",e.binarystring="binarystring",e.blob="blob",e.nodebuffer="nodebuffer",e.uint8array="uint8array",(e=K=K||{}).area="area",e.bar="bar",e.bar3d="bar3D",e.bubble="bubble",e.bubble3d="bubble3D",e.doughnut="doughnut",e.line="line",e.pie="pie",e.radar="radar",e.scatter="scatter",(e=Z=Z||{}).accentBorderCallout1="accentBorderCallout1",e.accentBorderCallout2="accentBorderCallout2",e.accentBorderCallout3="accentBorderCallout3",e.accentCallout1="accentCallout1",e.accentCallout2="accentCallout2",e.accentCallout3="accentCallout3",e.actionButtonBackPrevious="actionButtonBackPrevious",e.actionButtonBeginning="actionButtonBeginning",e.actionButtonBlank="actionButtonBlank",e.actionButtonDocument="actionButtonDocument",e.actionButtonEnd="actionButtonEnd",e.actionButtonForwardNext="actionButtonForwardNext",e.actionButtonHelp="actionButtonHelp",e.actionButtonHome="actionButtonHome",e.actionButtonInformation="actionButtonInformation",e.actionButtonMovie="actionButtonMovie",e.actionButtonReturn="actionButtonReturn",e.actionButtonSound="actionButtonSound",e.arc="arc",e.bentArrow="bentArrow",e.bentUpArrow="bentUpArrow",e.bevel="bevel",e.blockArc="blockArc",e.borderCallout1="borderCallout1",e.borderCallout2="borderCallout2",e.borderCallout3="borderCallout3",e.bracePair="bracePair",e.bracketPair="bracketPair",e.callout1="callout1",e.callout2="callout2",e.callout3="callout3",e.can="can",e.chartPlus="chartPlus",e.chartStar="chartStar",e.chartX="chartX",e.chevron="chevron",e.chord="chord",e.circularArrow="circularArrow",e.cloud="cloud",e.cloudCallout="cloudCallout",e.corner="corner",e.cornerTabs="cornerTabs",e.cube="cube",e.curvedDownArrow="curvedDownArrow",e.curvedLeftArrow="curvedLeftArrow",e.curvedRightArrow="curvedRightArrow",e.curvedUpArrow="curvedUpArrow",e.custGeom="custGeom",e.decagon="decagon",e.diagStripe="diagStripe",e.diamond="diamond",e.dodecagon="dodecagon",e.donut="donut",e.doubleWave="doubleWave",e.downArrow="downArrow",e.downArrowCallout="downArrowCallout",e.ellipse="ellipse",e.ellipseRibbon="ellipseRibbon",e.ellipseRibbon2="ellipseRibbon2",e.flowChartAlternateProcess="flowChartAlternateProcess",e.flowChartCollate="flowChartCollate",e.flowChartConnector="flowChartConnector",e.flowChartDecision="flowChartDecision",e.flowChartDelay="flowChartDelay",e.flowChartDisplay="flowChartDisplay",e.flowChartDocument="flowChartDocument",e.flowChartExtract="flowChartExtract",e.flowChartInputOutput="flowChartInputOutput",e.flowChartInternalStorage="flowChartInternalStorage",e.flowChartMagneticDisk="flowChartMagneticDisk",e.flowChartMagneticDrum="flowChartMagneticDrum",e.flowChartMagneticTape="flowChartMagneticTape",e.flowChartManualInput="flowChartManualInput",e.flowChartManualOperation="flowChartManualOperation",e.flowChartMerge="flowChartMerge",e.flowChartMultidocument="flowChartMultidocument",e.flowChartOfflineStorage="flowChartOfflineStorage",e.flowChartOffpageConnector="flowChartOffpageConnector",e.flowChartOnlineStorage="flowChartOnlineStorage",e.flowChartOr="flowChartOr",e.flowChartPredefinedProcess="flowChartPredefinedProcess",e.flowChartPreparation="flowChartPreparation",e.flowChartProcess="flowChartProcess",e.flowChartPunchedCard="flowChartPunchedCard",e.flowChartPunchedTape="flowChartPunchedTape",e.flowChartSort="flowChartSort",e.flowChartSummingJunction="flowChartSummingJunction",e.flowChartTerminator="flowChartTerminator",e.folderCorner="folderCorner",e.frame="frame",e.funnel="funnel",e.gear6="gear6",e.gear9="gear9",e.halfFrame="halfFrame",e.heart="heart",e.heptagon="heptagon",e.hexagon="hexagon",e.homePlate="homePlate",e.horizontalScroll="horizontalScroll",e.irregularSeal1="irregularSeal1",e.irregularSeal2="irregularSeal2",e.leftArrow="leftArrow",e.leftArrowCallout="leftArrowCallout",e.leftBrace="leftBrace",e.leftBracket="leftBracket",e.leftCircularArrow="leftCircularArrow",e.leftRightArrow="leftRightArrow",e.leftRightArrowCallout="leftRightArrowCallout",e.leftRightCircularArrow="leftRightCircularArrow",e.leftRightRibbon="leftRightRibbon",e.leftRightUpArrow="leftRightUpArrow",e.leftUpArrow="leftUpArrow",e.lightningBolt="lightningBolt",e.line="line",e.lineInv="lineInv",e.mathDivide="mathDivide",e.mathEqual="mathEqual",e.mathMinus="mathMinus",e.mathMultiply="mathMultiply",e.mathNotEqual="mathNotEqual",e.mathPlus="mathPlus",e.moon="moon",e.noSmoking="noSmoking",e.nonIsoscelesTrapezoid="nonIsoscelesTrapezoid",e.notchedRightArrow="notchedRightArrow",e.octagon="octagon",e.parallelogram="parallelogram",e.pentagon="pentagon",e.pie="pie",e.pieWedge="pieWedge",e.plaque="plaque",e.plaqueTabs="plaqueTabs",e.plus="plus",e.quadArrow="quadArrow",e.quadArrowCallout="quadArrowCallout",e.rect="rect",e.ribbon="ribbon",e.ribbon2="ribbon2",e.rightArrow="rightArrow",e.rightArrowCallout="rightArrowCallout",e.rightBrace="rightBrace",e.rightBracket="rightBracket",e.round1Rect="round1Rect",e.round2DiagRect="round2DiagRect",e.round2SameRect="round2SameRect",e.roundRect="roundRect",e.rtTriangle="rtTriangle",e.smileyFace="smileyFace",e.snip1Rect="snip1Rect",e.snip2DiagRect="snip2DiagRect",e.snip2SameRect="snip2SameRect",e.snipRoundRect="snipRoundRect",e.squareTabs="squareTabs",e.star10="star10",e.star12="star12",e.star16="star16",e.star24="star24",e.star32="star32",e.star4="star4",e.star5="star5",e.star6="star6",e.star7="star7",e.star8="star8",e.stripedRightArrow="stripedRightArrow",e.sun="sun",e.swooshArrow="swooshArrow",e.teardrop="teardrop",e.trapezoid="trapezoid",e.triangle="triangle",e.upArrow="upArrow",e.upArrowCallout="upArrowCallout",e.upDownArrow="upDownArrow",e.upDownArrowCallout="upDownArrowCallout",e.uturnArrow="uturnArrow",e.verticalScroll="verticalScroll",e.wave="wave",e.wedgeEllipseCallout="wedgeEllipseCallout",e.wedgeRectCallout="wedgeRectCallout",e.wedgeRoundRectCallout="wedgeRoundRectCallout",(e=n=n||{}).text1="tx1",e.text2="tx2",e.background1="bg1",e.background2="bg2",e.accent1="accent1",e.accent2="accent2",e.accent3="accent3",e.accent4="accent4",e.accent5="accent5",e.accent6="accent6",(e=$=$||{}).left="left",e.center="center",e.right="right",e.justify="justify",(e=ee=ee||{}).top="top",e.middle="middle",e.bottom="bottom",(e=b=b||{}).ACTION_BUTTON_BACK_OR_PREVIOUS="actionButtonBackPrevious",e.ACTION_BUTTON_BEGINNING="actionButtonBeginning",e.ACTION_BUTTON_CUSTOM="actionButtonBlank",e.ACTION_BUTTON_DOCUMENT="actionButtonDocument",e.ACTION_BUTTON_END="actionButtonEnd",e.ACTION_BUTTON_FORWARD_OR_NEXT="actionButtonForwardNext",e.ACTION_BUTTON_HELP="actionButtonHelp",e.ACTION_BUTTON_HOME="actionButtonHome",e.ACTION_BUTTON_INFORMATION="actionButtonInformation",e.ACTION_BUTTON_MOVIE="actionButtonMovie",e.ACTION_BUTTON_RETURN="actionButtonReturn",e.ACTION_BUTTON_SOUND="actionButtonSound",e.ARC="arc",e.BALLOON="wedgeRoundRectCallout",e.BENT_ARROW="bentArrow",e.BENT_UP_ARROW="bentUpArrow",e.BEVEL="bevel",e.BLOCK_ARC="blockArc",e.CAN="can",e.CHART_PLUS="chartPlus",e.CHART_STAR="chartStar",e.CHART_X="chartX",e.CHEVRON="chevron",e.CHORD="chord",e.CIRCULAR_ARROW="circularArrow",e.CLOUD="cloud",e.CLOUD_CALLOUT="cloudCallout",e.CORNER="corner",e.CORNER_TABS="cornerTabs",e.CROSS="plus",e.CUBE="cube",e.CURVED_DOWN_ARROW="curvedDownArrow",e.CURVED_DOWN_RIBBON="ellipseRibbon",e.CURVED_LEFT_ARROW="curvedLeftArrow",e.CURVED_RIGHT_ARROW="curvedRightArrow",e.CURVED_UP_ARROW="curvedUpArrow",e.CURVED_UP_RIBBON="ellipseRibbon2",e.CUSTOM_GEOMETRY="custGeom",e.DECAGON="decagon",e.DIAGONAL_STRIPE="diagStripe",e.DIAMOND="diamond",e.DODECAGON="dodecagon",e.DONUT="donut",e.DOUBLE_BRACE="bracePair",e.DOUBLE_BRACKET="bracketPair",e.DOUBLE_WAVE="doubleWave",e.DOWN_ARROW="downArrow",e.DOWN_ARROW_CALLOUT="downArrowCallout",e.DOWN_RIBBON="ribbon",e.EXPLOSION1="irregularSeal1",e.EXPLOSION2="irregularSeal2",e.FLOWCHART_ALTERNATE_PROCESS="flowChartAlternateProcess",e.FLOWCHART_CARD="flowChartPunchedCard",e.FLOWCHART_COLLATE="flowChartCollate",e.FLOWCHART_CONNECTOR="flowChartConnector",e.FLOWCHART_DATA="flowChartInputOutput",e.FLOWCHART_DECISION="flowChartDecision",e.FLOWCHART_DELAY="flowChartDelay",e.FLOWCHART_DIRECT_ACCESS_STORAGE="flowChartMagneticDrum",e.FLOWCHART_DISPLAY="flowChartDisplay",e.FLOWCHART_DOCUMENT="flowChartDocument",e.FLOWCHART_EXTRACT="flowChartExtract",e.FLOWCHART_INTERNAL_STORAGE="flowChartInternalStorage",e.FLOWCHART_MAGNETIC_DISK="flowChartMagneticDisk",e.FLOWCHART_MANUAL_INPUT="flowChartManualInput",e.FLOWCHART_MANUAL_OPERATION="flowChartManualOperation",e.FLOWCHART_MERGE="flowChartMerge",e.FLOWCHART_MULTIDOCUMENT="flowChartMultidocument",e.FLOWCHART_OFFLINE_STORAGE="flowChartOfflineStorage",e.FLOWCHART_OFFPAGE_CONNECTOR="flowChartOffpageConnector",e.FLOWCHART_OR="flowChartOr",e.FLOWCHART_PREDEFINED_PROCESS="flowChartPredefinedProcess",e.FLOWCHART_PREPARATION="flowChartPreparation",e.FLOWCHART_PROCESS="flowChartProcess",e.FLOWCHART_PUNCHED_TAPE="flowChartPunchedTape",e.FLOWCHART_SEQUENTIAL_ACCESS_STORAGE="flowChartMagneticTape",e.FLOWCHART_SORT="flowChartSort",e.FLOWCHART_STORED_DATA="flowChartOnlineStorage",e.FLOWCHART_SUMMING_JUNCTION="flowChartSummingJunction",e.FLOWCHART_TERMINATOR="flowChartTerminator",e.FOLDED_CORNER="folderCorner",e.FRAME="frame",e.FUNNEL="funnel",e.GEAR_6="gear6",e.GEAR_9="gear9",e.HALF_FRAME="halfFrame",e.HEART="heart",e.HEPTAGON="heptagon",e.HEXAGON="hexagon",e.HORIZONTAL_SCROLL="horizontalScroll",e.ISOSCELES_TRIANGLE="triangle",e.LEFT_ARROW="leftArrow",e.LEFT_ARROW_CALLOUT="leftArrowCallout",e.LEFT_BRACE="leftBrace",e.LEFT_BRACKET="leftBracket",e.LEFT_CIRCULAR_ARROW="leftCircularArrow",e.LEFT_RIGHT_ARROW="leftRightArrow",e.LEFT_RIGHT_ARROW_CALLOUT="leftRightArrowCallout",e.LEFT_RIGHT_CIRCULAR_ARROW="leftRightCircularArrow",e.LEFT_RIGHT_RIBBON="leftRightRibbon",e.LEFT_RIGHT_UP_ARROW="leftRightUpArrow",e.LEFT_UP_ARROW="leftUpArrow",e.LIGHTNING_BOLT="lightningBolt",e.LINE_CALLOUT_1="borderCallout1",e.LINE_CALLOUT_1_ACCENT_BAR="accentCallout1",e.LINE_CALLOUT_1_BORDER_AND_ACCENT_BAR="accentBorderCallout1",e.LINE_CALLOUT_1_NO_BORDER="callout1",e.LINE_CALLOUT_2="borderCallout2",e.LINE_CALLOUT_2_ACCENT_BAR="accentCallout2",e.LINE_CALLOUT_2_BORDER_AND_ACCENT_BAR="accentBorderCallout2",e.LINE_CALLOUT_2_NO_BORDER="callout2",e.LINE_CALLOUT_3="borderCallout3",e.LINE_CALLOUT_3_ACCENT_BAR="accentCallout3",e.LINE_CALLOUT_3_BORDER_AND_ACCENT_BAR="accentBorderCallout3",e.LINE_CALLOUT_3_NO_BORDER="callout3",e.LINE_CALLOUT_4="borderCallout4",e.LINE_CALLOUT_4_ACCENT_BAR="accentCallout3=4",e.LINE_CALLOUT_4_BORDER_AND_ACCENT_BAR="accentBorderCallout4",e.LINE_CALLOUT_4_NO_BORDER="callout4",e.LINE="line",e.LINE_INVERSE="lineInv",e.MATH_DIVIDE="mathDivide",e.MATH_EQUAL="mathEqual",e.MATH_MINUS="mathMinus",e.MATH_MULTIPLY="mathMultiply",e.MATH_NOT_EQUAL="mathNotEqual",e.MATH_PLUS="mathPlus",e.MOON="moon",e.NON_ISOSCELES_TRAPEZOID="nonIsoscelesTrapezoid",e.NOTCHED_RIGHT_ARROW="notchedRightArrow",e.NO_SYMBOL="noSmoking",e.OCTAGON="octagon",e.OVAL="ellipse",e.OVAL_CALLOUT="wedgeEllipseCallout",e.PARALLELOGRAM="parallelogram",e.PENTAGON="homePlate",e.PIE="pie",e.PIE_WEDGE="pieWedge",e.PLAQUE="plaque",e.PLAQUE_TABS="plaqueTabs",e.QUAD_ARROW="quadArrow",e.QUAD_ARROW_CALLOUT="quadArrowCallout",e.RECTANGLE="rect",e.RECTANGULAR_CALLOUT="wedgeRectCallout",e.REGULAR_PENTAGON="pentagon",e.RIGHT_ARROW="rightArrow",e.RIGHT_ARROW_CALLOUT="rightArrowCallout",e.RIGHT_BRACE="rightBrace",e.RIGHT_BRACKET="rightBracket",e.RIGHT_TRIANGLE="rtTriangle",e.ROUNDED_RECTANGLE="roundRect",e.ROUNDED_RECTANGULAR_CALLOUT="wedgeRoundRectCallout",e.ROUND_1_RECTANGLE="round1Rect",e.ROUND_2_DIAG_RECTANGLE="round2DiagRect",e.ROUND_2_SAME_RECTANGLE="round2SameRect",e.SMILEY_FACE="smileyFace",e.SNIP_1_RECTANGLE="snip1Rect",e.SNIP_2_DIAG_RECTANGLE="snip2DiagRect",e.SNIP_2_SAME_RECTANGLE="snip2SameRect",e.SNIP_ROUND_RECTANGLE="snipRoundRect",e.SQUARE_TABS="squareTabs",e.STAR_10_POINT="star10",e.STAR_12_POINT="star12",e.STAR_16_POINT="star16",e.STAR_24_POINT="star24",e.STAR_32_POINT="star32",e.STAR_4_POINT="star4",e.STAR_5_POINT="star5",e.STAR_6_POINT="star6",e.STAR_7_POINT="star7",e.STAR_8_POINT="star8",e.STRIPED_RIGHT_ARROW="stripedRightArrow",e.SUN="sun",e.SWOOSH_ARROW="swooshArrow",e.TEAR="teardrop",e.TRAPEZOID="trapezoid",e.UP_ARROW="upArrow",e.UP_ARROW_CALLOUT="upArrowCallout",e.UP_DOWN_ARROW="upDownArrow",e.UP_DOWN_ARROW_CALLOUT="upDownArrowCallout",e.UP_RIBBON="ribbon2",e.U_TURN_ARROW="uturnArrow",e.VERTICAL_SCROLL="verticalScroll",e.WAVE="wave",(e=x=x||{}).AREA="area",e.BAR="bar",e.BAR3D="bar3D",e.BUBBLE="bubble",e.BUBBLE3D="bubble3D",e.DOUGHNUT="doughnut",e.LINE="line",e.PIE="pie",e.RADAR="radar",e.SCATTER="scatter",(e=te=te||{}).TEXT1="tx1",e.TEXT2="tx2",e.BACKGROUND1="bg1",e.BACKGROUND2="bg2",e.ACCENT1="accent1",e.ACCENT2="accent2",e.ACCENT3="accent3",e.ACCENT4="accent4",e.ACCENT5="accent5",e.ACCENT6="accent6",(e=w=w||{}).chart="chart",e.image="image",e.line="line",e.rect="rect",e.text="text",e.placeholder="placeholder",(e=O=O||{}).chart="chart",e.hyperlink="hyperlink",e.image="image",e.media="media",e.online="online",e.placeholder="placeholder",e.table="table",e.tablecell="tablecell",e.text="text",e.notes="notes",(e=re=re||{}).title="title",e.body="body",e.image="pic",e.chart="chart",e.table="tbl",e.media="media",(e=C=C||{}).DEFAULT="•",e.CHECK="✓",e.STAR="★",e.TRIANGLE="▶","data:image/png;base64,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");function M(e,t,r){return"number"==typeof(e="string"!=typeof e||isNaN(Number(e))?e:Number(e))&&e<100?U(e):"number"==typeof e&&100<=e?e:"string"==typeof e&&e.includes("%")?(!t||"X"!==t)&&t&&"Y"===t?Math.round(parseFloat(e)/100*r.height):Math.round(parseFloat(e)/100*r.width):0}function ne(e){return e.replace(/[xy]/g,function(e){var t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)})}function z(e){return void 0===e||null==e?"":e.toString().replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function U(e){return"number"==typeof e&&100${t}`:``}function W(e){let t="solid",r="",a="",n="";return e&&("string"==typeof e?r=e:(e.type&&(t=e.type),e.color&&(r=e.color),e.alpha&&(a+=``),e.transparency&&(a+=``)),"solid"===t?n+=`${Q(r,a)}`:n+=""),n}function S(e){return e._rels.length+e._relsChart.length+e._relsMedia.length+1}function se(e){if(e&&"object"==typeof e)return"outer"!==e.type&&"inner"!==e.type&&"none"!==e.type&&(console.warn("Warning: shadow.type options are `outer`, `inner` or `none`."),e.type="outer"),e.angle&&((isNaN(Number(e.angle))||e.angle<0||359{e=(e=e||{_type:O.tablecell}).options||null;o+=Number(null!==e&&e.colspan?e.colspan:1)}),p.verbose&&console.log("| numCols ......................................... = "+o),!A&&p.colW&&(c=Array.isArray(p.colW)?p.colW.reduce((e,t)=>e+t)*R:p.colW*o||0,p.verbose)&&console.log("| tableCalcW ...................................... = "+c/R),n=c||U((i?i/R:a[1])+a[3]),p.verbose&&console.log("| emuSlideTabW .................................... = "+(n/R).toFixed(1)),!p.colW||!Array.isArray(p.colW))if(p.colW&&!isNaN(Number(p.colW))){let e=[];(t[0]||[]).forEach(()=>e.push(p.colW)),p.colW=[],e.forEach(e=>{Array.isArray(p.colW)&&p.colW.push(e)})}else{p.colW=[];for(let e=0;e{let n=[],r=0,a=0,o=[],i=(t.forEach(e=>{var t;o.push({_type:O.tablecell,text:[],options:e.options}),e.options.margin&&1<=e.options.margin[0]?(null!=(t=e.options)&&t.margin&&e.options.margin[0]&&j(e.options.margin[0])>r?r=j(e.options.margin[0]):null!=p&&p.margin&&p.margin[0]&&j(p.margin[0])>r&&(r=j(p.margin[0])),null!=(t=e.options)&&t.margin&&e.options.margin[2]&&j(e.options.margin[2])>a?a=j(e.options.margin[2]):null!=p&&p.margin&&p.margin[2]&&j(p.margin[2])>a&&(a=j(p.margin[2]))):(null!=(t=e.options)&&t.margin&&e.options.margin[0]&&U(e.options.margin[0])>r?r=U(e.options.margin[0]):null!=p&&p.margin&&p.margin[0]&&U(p.margin[0])>r&&(r=U(p.margin[0])),null!=(t=e.options)&&t.margin&&e.options.margin[2]&&U(e.options.margin[2])>a?a=U(e.options.margin[2]):null!=p&&p.margin&&p.margin[2]&&U(p.margin[2])>a&&(a=U(p.margin[2])))}),h(),f+=r+a,p.verbose&&0===e&&console.log(`| SLIDE [${d.length}]: emuSlideTabH ...... = ${(u/R).toFixed(1)} `),t.forEach((r,a)=>{var e={_type:O.tablecell,_lines:null,_lineHeight:U((null!=(e=r.options)&&e.fontSize?r.options.fontSize:p.fontSize||v)*(k+(p.autoPageLineWeight||0))/100),text:[],options:r.options};e.options.rowspan&&(e._lineHeight=0),e.options.autoPageCharWeight=p.autoPageCharWeight||null;let t=p.colW[a];r.options.colspan&&Array.isArray(p.colW)&&(t=p.colW.filter((e,t)=>a<=t&&te+t)),e._lines=((e,t)=>{var r=2.3+(null!=(r=e.options)&&r.autoPageCharWeight?e.options.autoPageCharWeight:0);let a=Math.floor(t/m*R)/((null!=(t=e.options)&&t.fontSize?e.options.fontSize:v)/r),n=[],o=[],i=[],s=[],A=(e.text&&0===e.text.toString().trim().length?o.push({_type:O.tablecell,text:" "}):"number"==typeof e.text||"string"==typeof e.text?o.push({_type:O.tablecell,text:(e.text||"").toString().trim()}):Array.isArray(e.text)&&(o=e.text),[]);return o.forEach(t=>{var e;"string"==typeof t.text&&(1{A.push({_type:O.tablecell,text:e,options:Object.assign(Object.assign({},t.options),{breakLine:!0})})}):A.push({_type:O.tablecell,text:t.text.trim(),options:t.options}),null!=(e=t.options))&&e.breakLine&&(i.push(A),A=[]),0{e.forEach(a=>{let n=[];let o=String(a.text).split(" ");o.forEach((e,t)=>{var r=Object.assign({},a.options);null!=r&&r.breakLine&&(r.breakLine=t+1===o.length),n.push({_type:O.tablecell,text:e+(t+1{let t=[],r="";e.forEach(e=>{r.length+e.text.length>a&&(n.push(t),t=[],r=""),t.push(e),r+=e.text.toString()}),0{e._lineHeight>=s&&(s=e._lineHeight)}),f+s>u&&(p.verbose&&(console.log("\n|-----------------------------------------------------------------------|"),console.log(`|-- NEW SLIDE CREATED (currTabH+currLineH > maxH) => ${(f/R).toFixed(2)} + ${(l._lineHeight/R).toFixed(2)} > `+u/R),console.log("|-----------------------------------------------------------------------|\n\n")),0e.text.length).reduce((e,t)=>e+t)&&g.rows.push(o),d.push(g),c=[],g={rows:c},o=[],t.forEach(e=>o.push({_type:O.tablecell,text:[],options:e.options})),h(),f+=r+a,p.verbose&&console.log(`| SLIDE [${d.length}]: emuSlideTabH ...... = ${(u/R).toFixed(1)} `),f=0,(p.addHeaderToEach||p.autoPageRepeatHeader)&&p._arrObjTabHeadRows&&p._arrObjTabHeadRows.forEach(e=>{let t=[],r=0;e.forEach(e=>{t.push(e),e._lineHeight>r&&(r=e._lineHeight)}),g.rows.push(t),f+=r}),e=o[i]);var c=l._lines.shift(),l=(Array.isArray(e.text)&&(c?e.text=e.text.concat(c):0===e.text.length&&(e.text=e.text.concat({_type:O.tablecell,text:""}))),i===n.length-1&&(f+=s),i=ie._lines.length).reduce((e,t)=>e+t));0===l&&(A=!0)}0{A=A.concat(e.data)}),r||a):(A=r,a),A.forEach((e,t)=>{e._dataIndex=t,void 0===e.labels||Array.isArray(e.labels[0])||(e.labels=[e.labels])}),s&&"object"==typeof s?s:{});l._type=t,l.x=void 0===l.x||null==l.x||isNaN(Number(l.x))?1:l.x,l.y=void 0===l.y||null==l.y||isNaN(Number(l.y))?1:l.y,l.w=l.w||"50%",l.h=l.h||"50%",l.objectName=l.objectName?z(l.objectName):"Chart "+e._slideObjects.filter(e=>e._type===O.chart).length,["bar","col"].includes(l.barDir||"")||(l.barDir="col"),l._type!==x.AREA||["stacked","standard","percentStacked"].includes(l.barGrouping||"")||(l.barGrouping="standard"),l._type!==x.BAR||["clustered","stacked","percentStacked"].includes(l.barGrouping||"")||(l.barGrouping="clustered"),l._type!==x.BAR3D||["clustered","stacked","standard","percentStacked"].includes(l.barGrouping||"")||(l.barGrouping="standard"),null!=(r=l.barGrouping)&&r.includes("tacked")&&!l.barGapWidthPct&&(l.barGapWidthPct=50),l.dataLabelPosition&&(l._type!==x.AREA&&l._type!==x.BAR3D&&l._type!==x.DOUGHNUT&&l._type!==x.RADAR||delete l.dataLabelPosition,l._type!==x.PIE||["bestFit","ctr","inEnd","outEnd"].includes(l.dataLabelPosition)||delete l.dataLabelPosition,l._type!==x.BUBBLE&&l._type!==x.BUBBLE3D&&l._type!==x.LINE&&l._type!==x.SCATTER||["b","ctr","l","r","t"].includes(l.dataLabelPosition)||delete l.dataLabelPosition,l._type===x.BAR)&&(["stacked","percentStacked"].includes(l.barGrouping||"")||["ctr","inBase","inEnd"].includes(l.dataLabelPosition)||delete l.dataLabelPosition,["clustered"].includes(l.barGrouping||"")||["ctr","inBase","inEnd","outEnd"].includes(l.dataLabelPosition)||delete l.dataLabelPosition),l.dataLabelBkgrdColors=!(!l.dataLabelBkgrdColors&&l.dataLabelBkgrdColors)&&l.dataLabelBkgrdColors,["b","l","r","t","tr"].includes(l.legendPos||"")||(l.legendPos="r"),["cone","coneToMax","box","cylinder","pyramid","pyramidToMax"].includes(l.bar3DShape||"")||(l.bar3DShape="box"),["circle","dash","diamond","dot","none","square","triangle"].includes(l.lineDataSymbol||"")||(l.lineDataSymbol="circle"),["gap","span"].includes(l.displayBlanksAs||"")||(l.displayBlanksAs="span"),["standard","marker","filled"].includes(l.radarStyle||"")||(l.radarStyle="standard"),l.lineDataSymbolSize=l.lineDataSymbolSize&&!isNaN(l.lineDataSymbolSize)?l.lineDataSymbolSize:6,l.lineDataSymbolLineSize=l.lineDataSymbolLineSize&&!isNaN(l.lineDataSymbolLineSize)?j(l.lineDataSymbolLineSize):j(.75),l.layout&&["x","y","w","h"].forEach(e=>{var t=l.layout[e];(isNaN(Number(t))||t<0||1e._type===O.image).length;if(p||c)if(p&&"string"!=typeof p)console.error("ERROR: addImage() 'path' should be a string, ex: {path:'/img/sample.png'} - you sent "+String(p));else if(c&&"string"!=typeof c)console.error("ERROR: addImage() 'data' should be a string, ex: {data:'image/png;base64,NMP[...]'} - you sent "+String(c));else if(c&&"string"==typeof c&&!c.toLowerCase().includes("base64,"))console.error("ERROR: Image `data` value lacks a base64 header! Ex: 'image/png;base64,NMP[...]')");else{let t=(p.substring(p.lastIndexOf("/")+1).split("?")[0].split(".").pop().split("#")[0]||"png").toLowerCase();if(c&&/image\/(\w+);/.exec(c)&&0e.path&&e.path===p&&e.type==="image/"+t&&!e.isDuplicate)[0],e._relsMedia.push({path:p||"preencoded."+t,type:"image/"+t,extn:t,data:c||"",rId:u,isDuplicate:!(null==n||!n.Target),Target:null!=n&&n.Target?n.Target:`../media/image-${e._slideNum}-${e._relsMedia.length+1}.`+t}),a.imageRid=u),"object"==typeof l){if(!l.url&&!l.slide)throw new Error("ERROR: `hyperlink` option requires either: `url` or `slide`");e._rels.push({type:O.hyperlink,data:l.slide?"slide":"dummy",rId:++u,Target:l.url||l.slide.toString()}),l._rId=u,a.hyperlink=l}e._slideObjects.push(a)}else console.error("ERROR: addImage() requires either 'data' or 'path' parameter!")}function ue(e,t,r){var r="object"==typeof r?r:{},a=(r.line=r.line||{type:"none"},{_type:O.text,shape:t||b.RECTANGLE,options:r,text:null});if(!t)throw new Error("Missing/Invalid shape parameter! Example: `addShape(pptxgen.shapes.LINE, {x:1, y:1, w:1, h:1});`");var t={type:r.line.type||"solid",color:r.line.color||"333333",transparency:r.line.transparency||0,width:r.line.width||1,dashType:r.line.dashType||"solid",beginArrowType:r.line.beginArrowType||null,endArrowType:r.line.endArrowType||null};"object"==typeof r.line&&"none"!==r.line.type&&(r.line=t),r.x=r.x||(0===r.x?0:1),r.y=r.y||(0===r.y?0:1),r.w=r.w||(0===r.w?0:1),r.h=r.h||(0===r.h?0:1),r.objectName=r.objectName?z(r.objectName):"Shape "+e._slideObjects.filter(e=>e._type===O.text).length,"string"==typeof r.line&&((t=t).color=String(r.line),r.line=t),"number"==typeof r.lineSize&&(r.line.width=r.lineSize),"string"==typeof r.lineDash&&(r.line.dashType=r.lineDash),"string"==typeof r.lineHead&&(r.line.beginArrowType=r.lineHead),"string"==typeof r.lineTail&&(r.line.endArrowType=r.lineTail),L(e,a),e._slideObjects.push(a)}function fe(r,e,t,a){let n={_type:a?O.placeholder:O.text,shape:(null==t?void 0:t.shape)||b.RECTANGLE,text:e&&0!==e.length?e:[{text:"",options:null}],options:t||{}};function o(t){var e;return t.placeholder||(t.color=t.color||n.options.color||r.color||d),(t.placeholder||a)&&(t.bullet=t.bullet||!1),(t=t.placeholder&&r._slideLayout&&r._slideLayout._slideObjects&&null!=(e=r._slideLayout._slideObjects.filter(e=>"placeholder"===e._type&&e.options&&e.options.placeholder&&e.options.placeholder===t.placeholder)[0])&&e.options?Object.assign(Object.assign({},t),e.options):t).objectName=t.objectName?z(t.objectName):"Text "+r._slideObjects.filter(e=>e._type===O.text).length,t.shape===b.LINE&&(e={type:t.line.type||"solid",color:t.line.color||"333333",transparency:t.line.transparency||0,width:t.line.width||1,dashType:t.line.dashType||"solid",beginArrowType:t.line.beginArrowType||null,endArrowType:t.line.endArrowType||null},"object"==typeof t.line&&(t.line=e),"string"==typeof t.line&&(e=e,"string"==typeof t.line&&(e.color=t.line),t.line=e),"number"==typeof t.lineSize&&(t.line.width=t.lineSize),"string"==typeof t.lineDash&&(t.line.dashType=t.lineDash),"string"==typeof t.lineHead&&(t.line.beginArrowType=t.lineHead),"string"==typeof t.lineTail)&&(t.line.endArrowType=t.lineTail),t.line=t.line||{},t.lineSpacing=t.lineSpacing&&!isNaN(t.lineSpacing)?t.lineSpacing:null,t.lineSpacingMultiple=t.lineSpacingMultiple&&!isNaN(t.lineSpacingMultiple)?t.lineSpacingMultiple:null,t._bodyProp=t._bodyProp||{},t._bodyProp.autoFit=t.autoFit||!1,t._bodyProp.anchor=t.placeholder?null:s.ctr,t._bodyProp.vert=t.vert||null,t._bodyProp.wrap="boolean"!=typeof t.wrap||t.wrap,(t.inset&&!isNaN(Number(t.inset))||0===t.inset)&&(t._bodyProp.lIns=U(t.inset),t._bodyProp.rIns=U(t.inset),t._bodyProp.tIns=U(t.inset),t._bodyProp.bIns=U(t.inset)),"boolean"==typeof t.underline&&!0===t.underline&&(t.underline={style:"sng"}),0===(t.align||"").toLowerCase().indexOf("c")?t._bodyProp.align=i.center:0===(t.align||"").toLowerCase().indexOf("l")?t._bodyProp.align=i.left:0===(t.align||"").toLowerCase().indexOf("r")?t._bodyProp.align=i.right:0===(t.align||"").toLowerCase().indexOf("j")&&(t._bodyProp.align=i.justify),0===(t.valign||"").toLowerCase().indexOf("b")?t._bodyProp.anchor=s.b:0===(t.valign||"").toLowerCase().indexOf("m")?t._bodyProp.anchor=s.ctr:0===(t.valign||"").toLowerCase().indexOf("t")&&(t._bodyProp.anchor=s.t),se(t.shadow),t}n.options=o(n.options),n.text.forEach(e=>e.options=o(e.options||{})),L(r,n.text||""),r._slideObjects.push(n)}function de(t,r){if(r.bkgd&&(r.background||(r.background={}),"string"==typeof r.bkgd?r.background.color=r.bkgd:(r.bkgd.data&&(r.background.data=r.bkgd.data),r.bkgd.path&&(r.background.path=r.bkgd.path),r.bkgd.src&&(r.background.path=r.bkgd.src))),null!=(a=r.background)&&a.fill&&(r.background.color=r.background.fill),t&&(t.path||t.data)){t.path=t.path||"preencoded.png";let e=(t.path.split(".").pop()||"png").split("?")[0];"jpg"===e&&(e="jpeg"),r._relsMedia=r._relsMedia||[];var a=r._relsMedia.length+1;r._relsMedia.push({path:t.path,type:O.image,extn:e,data:t.data||null,rId:a,Target:`../media/${(r._name||"").replace(/\s+/gi,"-")}-image-${r._relsMedia.length+1}.`+e}),r._bkgdImgRid=a}}function L(a,e,t){let r=[];"string"!=typeof e&&"number"!=typeof e&&(Array.isArray(e)?r=e:"object"==typeof e&&(r=[e]),r.forEach((r,e)=>{if(t&&t[e]&&t[e].hyperlink&&(r.options=Object.assign(Object.assign({},r.options),t[e])),Array.isArray(r)){let t=[];r.forEach(e=>{e.options&&!e.text.options&&t.push(e.options)}),L(a,r,t)}else Array.isArray(r.text)?L(a,r.text,t&&t[e]?[t[e]]:void 0):r&&"object"==typeof r&&r.options&&r.options.hyperlink&&!r.options.hyperlink._rId?"object"!=typeof r.options.hyperlink?console.log("ERROR: text `hyperlink` option should be an object. Ex: `hyperlink: {url:'https://github.com'}` "):r.options.hyperlink.url||r.options.hyperlink.slide?(e=S(a),a._rels.push({type:O.hyperlink,data:r.options.hyperlink.slide?"slide":"dummy",rId:e,Target:z(r.options.hyperlink.url)||r.options.hyperlink.slide.toString()}),r.options.hyperlink._rId=e):console.log("ERROR: 'hyperlink requires either: `url` or `slide`'"):r&&"object"==typeof r&&r.options&&r.options.hyperlink&&r.options.hyperlink._rId&&0===a._rels.filter(e=>e.rId===r.options.hyperlink._rId).length&&a._rels.push({type:O.hyperlink,data:r.options.hyperlink.slide?"slide":"dummy",rId:r.options.hyperlink._rId,Target:z(r.options.hyperlink.url)||r.options.hyperlink.slide.toString()})}))}class he{constructor(e){this.addSlide=e.addSlide,this.getSlide=e.getSlide,this._name="Slide "+e.slideNumber,this._presLayout=e.presLayout,this._rId=e.slideRId,this._rels=[],this._relsChart=[],this._relsMedia=[],this._setSlideNum=e.setSlideNum,this._slideId=e.slideId,this._slideLayout=e.slideLayout||null,this._slideNum=e.slideNumber,this._slideObjects=[],this._slideNumberProps=null!=(e=this._slideLayout)&&e._slideNumberProps?this._slideLayout._slideNumberProps:null}set bkgd(e){this._bkgd=e,this._background&&this._background.color||(this._background||(this._background={}),"string"==typeof e&&(this._background.color=e))}get bkgd(){return this._bkgd}set background(e){(this._background=e)&&de(e,this)}get background(){return this._background}set color(e){this._color=e}get color(){return this._color}set hidden(e){this._hidden=e}get hidden(){return this._hidden}set slideNumber(e){this._slideNumberProps=e,this._setSlideNum(e)}get slideNumber(){return this._slideNumberProps}get newAutoPagedSlides(){return this._newAutoPagedSlides}addChart(e,t,r){return ce(this,(r||{})._type=e,t,r),this}addImage(e){return pe(this,e),this}addMedia(e){{var n=this,o=e.x||0,i=e.y||0,s=e.w||2,A=e.h||2,l=e.data||"",c=e.link||"";let t=e.path||"",r=e.type||"audio",a;var p=e.cover||"data:image/png;base64,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AAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKREkRUAAACwrUpLSwuGDRvWfMCAAS26du3avKysrLiioqKkZcuWzZs1a1bcvHnz0tLS0rJsNtusuLi4ebNmzUoLCgo+8/eijY2N9Zs3b66pra2tqqur21xTU1NdVVVVs2nTptqNGzdWbdiwoeYvf/nL5hUrVlQtWLBgw6xZs6pqamoaJQYAAEDaKYABAACIiIghQ4aUHnTQQW379u3bql27dq3at2/fpkWLFq2bN29eWVpa2qpZs2bNCwsLm2ez2fLCwsLyoqKi8sLCwtKknK+hoaG6vr6+qqGh4S91dXV/aWhoqNq8eXNVTU3NuqqqqvUbNmxYu2rVqjWrV69e99Zbb6177rnnPpgzZ06NTwYAAABJogAGAADIA8OGDWt+xBFHdBwwYECnLl26dGjdunXHFi1adCgtLe1YUlLSvlmzZq0KCgqK07yDwsLCssLCwrKIaPdp/zuNjY21mzdvXrdp06ZVNTU172/YsGHl2rVr31+2bNnKBQsWrHjyySffnzVrVpVPGAAAAE1Fpuexsd9HfaF+ZcSal0ptCAAAIAE6deqUPf744zvtueeeXbp3796lbdu2XSorKzuXlpZ2KS0t7VBYWFhhSztGQ0PDxpqampU1NTXL169fv+yDDz5Y9s477yybPXv2sj/96U8rVqxYUWdLAAAAbE9t9q6Jog4f/TUFMAAAQEJks9nMt7/97Y4jRozo1bdv397t2rXrXl5e3rWsrKxzcXFx+4gosKUmp7G2tnZVTU3Nso0bNy5btWrV0tdff/2tJ598cvG999672noAAADYFgpgAACAhPne977X6a9Fb/v27Xu1bNmyV1lZWa8kvXOXLauvr9/wl7/8ZdG6desWL1u2bNHChQsX/fGPf1w8derUjbYDAADAliiAAQAAmqhsNps59dRTuxx66KH9+/Tp87n27dv3Ly8v719UVOSRzXlq06ZNKzZu3Pj6+++//8abb775xqOPPvrG3XffvcpmAAAA+CsFMAAAQBNx6qmndvniF784qHfv3v3btWv3uYqKis8VFhaW2wxbUl9fv37Dhg1vfPDBB68vXrz4jccee2z+jTfeuNxmAAAA8pMCGAAAYBc45phjWn/rW9/aq3///kPatGnTv6Kiop9HOLO9NDQ0VG/cuPGtNWvWLFy4cOGcO+6445WHHnporc0AAACknwIYAABgJzjjjDO6f+lLX9qrV69eg1u3bj2orKysR0RkbIadJFddXb103bp18xcvXjz30UcffeXqq69+x1oAAADSRwEMAACwnZWWlhb86le/2u3QQw8d1r17931btmw5qLCwsMxmaEoaGhqqP/zww/nvvPPOzGeeeWbW2LFj36ipqWm0GQAAgGRTAAMAAGwHP/7xj7t+9atf3bdXr15D27Ztu1c2m21jKyRJXV3dmg8++OCVRYsWvfznP/95xh/+8IdltgIAAJA8CmAAAIBtcOKJJ7Y75ZRTDujXr9+w1q1bD81ms61shTSpq6tbt3bt2pfffPPNWbfccsvUe++9d7WtAAAANH0KYAAAgE+hoqKi4IILLhg0YsSI/bp27bpfy5YtB2YymUKbIR/kcrmGDz/8cP6777474/nnn59x4YUXvrZx40aPiwYAAGiCFMAAAAAf4/jjj2/7/e9//8D+/fsf2Lp1630KCgpKbAUiGhsbN61fv37eW2+9NeWGG2545u67715lKwAAAE2DAhgAAOB/ZLPZzAUXXPC5I4888sDu3bsfWFFRsVtEFNgMbFl1dfWSd999d8qsWbNmnnvuuS+vW7euwVYAAAB2DQUwAACQ10pLSwsuvfTSQYcccsjBXbt2HVFWVtbDVmDb1dbWrnr//fdfmDp16uRf/vKXL65evbreVgAAAHYeBTAAAJB3Bg0aVHrBBRd8fs899zywQ4cOBxQVFbWwFdj+Ghsba9euXTtrzpw5T59//vmTX3755WpbAQAA2LEUwAAAQF4YNmxY8/POO+/gIUOGHOZ9vrDz/W0ZfNFFFz07a9asKlsBAADY/hTAAABAarVq1arwyiuv3HfEiBEjO3TocFBhYWGZrcCu19DQUP3+++8/O2XKlIk/+clPZm7cuLHRVgAAALYPBTAAAJAqrVq1Kvztb3+7/3777Xd4x44dRxQWFpbbCjRdDQ0NG99///0pM2bMeOqHP/zhC8pgAACAz0YBDAAApMJZZ53V45vf/OaRvXr1GllaWtrVRiB5ampq3l28ePHEO++8c9LVV1/9jo0AAABsPQUwAACQWMOHDy+/6KKLvjB48OCjW7RoMdBGID0+/PDDV+fNmzfhvPPOe3L69Ol/sREAAIBPRwEMAAAkSqtWrQpvuOGGQ/bbb79/atOmzX6ZTCZrK5BeuVyubs2aNTNmzJjx2JgxYyavW7euwVYAAAA+ngIYAABIhB//+Mddv/e9732lZ8+e/1RcXNzWRiD/1NbWfvD2228/dssttzz029/+9l0bAQAA+L8UwAAAQJNVUVFRcO21137+4IMPPrZ169b7ZTKZAlsBIqJxzZo1M59//vnxp5122hR3BQMAAPx/CmAAAKDJOeWUUzqefvrpx/bu3ftL2Wy2jY0AH6e+vn7j0qVLH/vd7373x+uvv36ZjQAAAPlOAQwAADQJ2Ww2c+uttx5wyCGHnNC6deu9I8LdvsDWaFy7du1L06ZN+/OPfvSjZ1evXl1vJQAAQD5SAAMAALtU//79S6655pp/2nPPPY8tLy/vayPAZ1VTU7NswYIF488999wHp06dutFGAACAfKIABgAAdomf//znPU855ZQTu3btemRhYWGZjQDbW2NjY92KFSuevOWWW+689NJLF9kIAACQDxTAAADATuMxz8Cusn79+rlPP/30f5188slT6+rqcjYCAACklQIYAADY4fr27Vv8hz/84a+Pee5nI8CuUlNT8+68efPu/8EPfvDgwoULN9kIAACQNgpgAABghxkyZEjpNddc89XBgwefWFxc3MFGgKaitrZ21dy5c+/5yU9+8uc5c+bU2AgAAJAWWyqAPYoNAADYJqNHj+4wb968n06ZMuXRYcOGnaH8BZqa4uLi9sOGDTtjypQpj86bN++nJ510UntbAQAA0s4dwAAAwFY599xze33/+9//dufOnY/IZDJZGwGSIpfL1S1fvvzJG2644fbLLrvsbRsBAACSyiOgAQCAz+y8887r+53vfOfbHTt2PDyTyRTaCJBUuVyuYcWKFU/cdNNN//XrX/96sY0AAABJowAGAAC22WWXXTboG9/4xg9at249zDaAtFm7du2su++++9pzzjnnNdsAAACSQgEMAABsNcUvkE8UwQAAQJIogAEAgE9N8Qvks7Vr18665557rvv5z38+3zYAAICmaksFcGHlwOj6UV9orIqoWZG1PQAAyBO/+MUvet9xxx3nHHrooT8pLS3tYiNAPiotLe2y7777HvP973+/X1lZ2ZIpU6assxUAAKCpKetcHwXlH/01BTAAAOS5M844o/u99957zpe//OWflZeX94qIjK0AeS5TXl7e8+CDDx71/e9/v3dEvDVjxowPrQUAAGgqFMAAAMD/ceKJJ7a77777fjJq1Kh/KS8v7xOKX4B/lCkvL+99+OGHj/rWt77VfvXq1Qvnz59fbS0AAMCutqUC2DuAAQAgzwwdOrTs+uuvP6l///4nFRYWltkI20NjY2Ns2rQpqquro6amJurr62PTpk2xefPmqK+vj+rq6qivr4/NmzfHpk2boqGhYZv/fxUWFkZJSUk0a9YsioqKoqysLIqKiqJZs2ZRUlISRUVFUVpa+r9/FRQUCIjtoqGhoeq11167a8yYMffMmTOnxkYAAIBdZUvvAFYAAwBAnujUqVP2nnvuGbXXXnudnM1mK22Ej9PQ0BAbN26MDRs2/J+/Nm7cGBs3boyamprYtGlTbNq0KWpqaqK2trbJnqe4uDhKSkqitLT0f/9eUVERFRUV0aJFi//zV0VFRRQWFvog8LHq6urWvvjii7eceOKJf169enW9jQAAADubAhgAAPLcXXfdddAXv/jF00tLS7vZRn7L5XKxYcOGWLt2baxbty7Wrl37d3+tW7cuNmzYkPd7atGiRbRu3TpatWoVrVu3jjZt2vzvf27dunW0aNHCh4morq5e+sgjj1zzne98Z6ptAAAAO5MCGAAA8tTVV189+MQTTzyzoqJioG3kj8bGxli5cmUsX748Pvjgg1i9evX//n3t2rXR2NhoSZ9RYWFhtGrVKtq1axdt27b937937tw5OnTo4LHTeWbDhg3z77333qvOPPPMebYBAADsDApgAADIM1/72tfaXHrppad27979qIjQRKVUQ0NDrFq1KlasWBHvv//+//595cqVTfqRzGlXXFwcHTp0iI4dO0bnzp2jY8eO0alTp2jXrp1HS6dYLpdrfOeddx76+c9/fv2ECRPW2QgAALAjKYABACBP9OrVq9ldd931jT322OM7hYWFZTaSHh9++GG88847sXTp0njvvfdixYoVsXr16mhoaLCchCgsLIz27dtHp06dolu3btG9e/fo3r27x0mnTENDQ9W8efNu++Y3v/nHJUuWbLYRAABgR1AAAwBAHrjrrrtG/NM//dOZJSUlXWwj2davXx9Lly6Nd955539L3w8//NBiUqqysvJ/y+C//tWqVSuLSbiamppljz322G9Gjx49xTYAAIDtTQEMAAAp9qtf/arPD3/4w5+1atVqL9tIno0bN8aSJUvirbfeikWLFsV7770XmzZtspg8V1JSEl27do0+ffpE3759o3fv3lFeXm4xCbRu3bqXr7322ivGjh27yDYAAIDtRQEMAAApNGjQoNI77rjju7vttttJBQUFWRtJhtWrV8ebb74ZixcvjiVLlsTy5cujsbHRYtiigoKC6Ny5c/Tu3Tt69+4d/fr1i7Zt21pMQjQ2Nta98cYbd33rW9+6ff78+TU2AgAAfFYKYAAASJHS0tKCBx988Jj99tvvn7PZbBsbaboaGhri7bffjrfeeisWLFgQS5YscXcv201FRUX06tUr+vbtG3379o2ePXtGYWGhxTRhdXV1a2bMmHHjV77ylYdqamr85gcAALDNFMAAAJASp59+erdf/vKX51ZWVu5jG03T6tWr47XXXouFCxfGm2++GRs3brQUdooWLVpE3759Y8CAATFw4EB3CDdh69evf/E//uM//vPqq69+xzYAAIBtoQAGAICEGzRoUOm99977w969ex+byWTc4teErF+/PubNmxcLFiyIN954Q+FLk9GiRYvo169fDBgwIPbYY4+orKy0lCYkl8s1LF68eNyJJ554rcdCAwAAW0sBDAAACXbNNdcMOemkk35RVlbWyzZ2vVwuF++++27MnTs3XnvttViyZIl3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B7lcrm7y5Mm//vKXv/yIbQAAwK63pXcAK4ABAMg7paWlBTNnzjyzT58+x9vG39uwYUOMGzcuZsyY4VHPQF7KZDKx3377xde//vWoqKiwkH+waNGiP+27775X1dTUeCwEAADsQgpgAAD4H926dctOnjz5V506dRppG/9fLpeLqVOnxp///OfYuHGjhQB5r6KiIkaNGhX777+/x0L/g+XLlz9+6KGHXvLuu+/W2QYAAOwaWyqAvQMYAIC8MXz48PInnnjiynbt2o2wjf/vnXfeiWuvvTaee+652Lx5s4UARMTmzZtjzpw58dprr0XPnj2jRYsWlvI/Kioq+n7rW98aMnXq1Ofee+89f3AAAMAusKV3ACuAAQDIC9/+9rc73n777X9o0aLFANv4b1VVVXHXXXfFvffeG+vXr7cQgI+wbt26eP7552P9+vWx2267RVFRkaVERElJSefjjjvuoA8++GDKK6+88hcbAQCAnUsBDABAXjv//PP7XXzxxX8oKSnpbBv/bfr06XHttdfGokWLLAPgU3jnnXdi2rRp0bp16+jc2R8nERHZbLbyC1/4whElJSUvTp48eY2NAADAzqMABgAgb/3ud7/b60c/+tFVRUVFrWwjYs2aNXHzzTfHpEmTora21kIAtkJtbW289NJL8c4770Tfvn2jtLQ073dSWFhYNnz48C/26dNn4UMPPbTMpwQAAHYOBTAAAHnp1ltv3f+b3/zmfxYWFjbP913kcrl4/vnn4/rrr4/ly5f7cAB8BitXroxp06ZFRUVFdOvWLTKZTF7vo6CgIDto0KBDBw0atOiBBx54xycEAAB2vC0VwJmex8Z+H/WF+pURa17ym6wAACTTww8//KXDDjvsXzKZTN6/rPGDDz6I22+/Pd544w0fDIDtbMCAAfGtb30r2rRpk/e7yOVyjVOmTPn1yJEjH/LJAACAHavN3jVR1OGjv6YABgAgdV555ZXTPve5z30r3/fQ0NAQjz32WDz++ONRV1fngwGwg2Sz2Tj66KPjC1/4QhQUFOT9Pl5//fU79tprr9/7ZAAAwI6jAAYAIC9ks9nMyy+/fFafPn2Oz/ddvPvuu3HbbbfFe++954MBsJN069YtvvOd70S3bt3yfhdLliy5f5999rmypqam0ScDAAC2PwUwAACpV1paWjBr1qyzevfufVw+7yGXy8WTTz4ZDz74oLt+AXaBbDYbxxxzTBxxxBF5fzfw0qVLHxg6dOjlSmAAANj+FMAAAKRar169mk2ePHlsu3btDsrnPaxcuTJuueWWePvtt30oAHaxnj17ximnnBIdOnTI6z2sXr16yiGHHPIvS5Ys2exTAQAA28+WCuDCyoHR9aO+0FgVUbMia3sAADRpQ4cOLXvqqacub9Omzf75uoNcLhfPPPNMXH/99bF27VofCoAmYP369TFlypQoKSmJnj17RiaTycs9NG/evPtJJ500ZPLkyc+sWLHCoykAAGA7KetcHwXlH/01BTAAAIk1ZMiQ0kceeeSKVq1a7Z2vO6iuro7bb789nnjiiWhs9IRNgKaksbEx5s+fH++//34MGDAgstn8/DlLaWlpp6997WuDn3rqqadXrlxZ75MBAACfnQIYAIDUOfTQQ1s8+OCDv2/ZsuUe+bqDOXPmxNVXX+2RzwBN3PLly+OFF16Ijh075u0joUtLSzudcMIJ+7/00ktPv/3227U+FQAA8NkogAEASJVhw4Y1v++++37TsmXLQfl4/vr6+hg/fnz88Y9/jNpaP0MHSILNmzfHiy++GJs3b47ddtstCgoK8m4HxcXFbY866qg9n3vuuaeXL1/ucdAAAPAZKIABAEiNI488snLcuHG/b9GixcB8PP97770XV111VcyZM8eHASCBFi1aFC+//HL069cvWrRokXfnLykp6XDcccftP2fOnGcWLVq0yScCAAC2jQIYAIBUOPLIIyvvvPPO35aXl++Wj+d/+umn48Ybb4wPP/zQhwEgwf7yl7/ECy+8ECUlJdGrV6+8O3+zZs3aHHXUUfspgQEAYNspgAEASLxjjz227W233faH5s2b98m3s1dVVcXNN98cTz31VDQ2NvowAKRAY2NjzJ8/P5YtWxYDBgyIZs2a5dX5mzVr1uaYY4458M0333xm4cKFNT4RAACwdRTAAAAk2qGHHtritttuuzofy9+33347rrnmmli8eLEPAkAKvf/++/HKK69Enz59orKyMq/Ons1mK4888sh9Zs6c+dTSpUs3+zQAAMCnpwAGACCxjjjiiJb33nvvteXl5f3y6dy5XC4mTZoUN998c1RVVfkgAKRYVVVVTJ06NbLZbPTp0ycymUzenL24uLjtV7/61c+/8sorTy1evLjWpwEAAD4dBTAAAIl06KGHtrj33nt/l2/lb3V1ddx0000xefLkyOVyPggAeSCXy8WCBQvi3Xffjd133z2y2fz5mUyzZs1aH3300fvNmDHjSXcCAwDAp6MABgAgcYYOHVo2fvz4qysqKgbk07mXLVsWV111lUc+A+SplStXxiuvvBKf+9znoqKiIm/O3axZszZHH3300GeeeebJFStW1PkkAADAlimAAQBIlCFDhpQ++uij17Rs2XL3fDr31KlT49prr42NGzf6EADksaqqqpg+fXq0bds2unTpkjfnLikpaT9q1KihTz755JMrV66s90kAAICPt6UCuMB6AABoSjp16pSdMGHCv1dWVu6RL2dubGyMcePGxR133BF1dW56AiCitrY2br755hg/fnw0NjbmzbkrKyv3mDBhwr9369bNXQkAALCNFMAAADQZrVq1Kpw+ffolbdq02T9fzlxdXR2/+93vYtKkSd73C8DfyeVy8fjjj8fvf//7qK6uzptzt2nTZv8pU6Zc0qpVq0KfAgAA2HoKYAAAmoSKioqC2bNnX9KuXbuD8uXMS5cujYsuuijmz5/vAwDAx3r11VfjoosuiqVLl+bNmdu1a3fQ7Nmz/72iosLPrgAAYCu5iAYAoEmYOXPmz9q1a3dIvpz35ZdfjiuuuCLWrVsnfAA+0bp16+KKK66Il19+OW/O3K5du4Nnzpz5M+kDAMDWUQADALDLvfjii2N69OgxKh/Omsvl4oEHHogbbrghamtrhQ/Ap1ZbWxs33HBDPPDAA3nz2oAePXqMevHFF8dIHwAAPj0FMAAAu9SkSZO+NnDgwFPy4ax1dXVx8803x8SJE73vF4BtksvlYuLEiXHLLbdEXV1dXpx54MCBJ0+aNOlr0gcAgE9HAQwAwC7z6KOPHnXggQeekw9nXbduXfz617+OWbNmCR6Az2zmzJnx61//Ol9eJZA58MADz3n00UePkjwAAHyywsqB0fWjvtBYFVGzImtDAADsEDfeeOO+Rx999EWZTKYw7Wddvnx5XHXVVbFy5UrBA7DdbNiwIWbPnh0DBw6MioqKtB8307179/179uz56sMPP7xc+gAA5LuyzvVRUP7RX1MAAwCw011xxRV7fPe7372qoKCgWdrPOmfOnPjtb38bGzduFDwA2111dXVMmzYtOnfuHB07dkz1WTOZTOHuu+9+eJs2bV6aNGnSKukDAJDPFMAAADQZZ5xxRvef/exnvy0sLCxP+1knTJgQd999d9TX1wsegB2moaEhXnrppchms9G3b99UnzWTyRTttddeB/3lL395dubMmRukDwBAvlIAAwDQJBx00EEVf/jDH64pLi7ulOZz5nK5eOCBB+Kxxx4TOgA77c+eBQsWRF1dXfTv3z8ymUxqz1pQUFBywAEHDJs+ffqkpUuXbpY+AAD5aEsFcIH1AACwMwwaNKj0vvvuu7qsrKxXms9ZV1cX1113XUyaNEnoAOx0EydOjOuvvz7q6upSfc6ysrJef/rTn67u379/idQBAODvKYABANjhKioqCh577LGLKyoqBqb5nNXV1XHNNdfE7NmzhQ7ALvPKK6/ElVdeGVVVVak+Z4sWLQZOnDhxbEVFhZ9vAQDA33CBDADADjdz5syftW3b9sA0n3HdunVx2WWXxRtvvCFwAHa5xYsXx2WXXRZr165N9TnbtWt34MyZM38mcQAA+P8UwAAA7FBPPvnkqB49eoxK8xlXrVoVV1xxRSxfvlzgADQZK1asiCuuuCJWrlyZ6nP26NFj1KRJk0ZJHAAA/lth5cDo+lFfaKyKqFmRtSEAALbZjTfeuO+XvvSlCzOZTGp/8fDdd9+NK6+8MtatWydwAJqc6urqmDVrVvTv3z8qKytTe85u3boN79mz57yHH37Yb2MBAJAXyjrXR0H5R39NAQwAwA5x3nnn9T311FOvLigoKE7rGV977bW45pprorq6WuAANFmbN2+OGTNmRI8ePaJ9+/apPGMmkykYNGjQIYWFhVOee+45v5UFAEDqKYABANipjjrqqFb/8R//8YdmzZq1SusZX3755bj++uujrq5O4AA0eQ0NDfHSSy9Fp06dolOnTqk8Y0FBQXbYsGGfnz9//qQ33nhjk9QBAEizLRXA3gEMAMB21a1bt+wNN9zwnyUlJR3TesYpU6bEjTfeGPX19QIHIDHq6+vjxhtvjKlTp6b2jCUlJZ1uuOGG/+jWrZu7GgAAyFsKYAAAtqunn376XyorK/dI6/kmTZoUd955ZzQ2NgobgMRpbGyMO+64I5588snUnrGysnLw008//UtpAwCQrxTAAABsN88///w3unTp8k9pPd/EiRNj3LhxkcvlhA1AYuVyubj//vtTXQJ36dLlS88+++yJ0gYAIB95BzAAANvFTTfdNPzII488L5PJZNJ4vsceeyzGjx8vaABS47XXXotmzZpF3759U3m+zp0779urV695Dz/88DJpAwCQNlt6B7ACGACAz+wXv/hF7x/+8IdXFxQUNEvj+R544IF45JFHBA1A6ixYsCDq6upiwIABqTtbJpPJDBo06ODGxsbnpk6dul7aAACkiQIYAIAd5oADDqj43e9+99tmzZq1TeP5xo0bF5MmTRI0AKm1aNGi2Lx5cwwcODB1ZysoKMjut99+w5577rnH33vvvc3SBgAgLbZUAHsHMAAA2yybzWbuvPPOfyktLe2exvNNmDBB+QtAXpg0aVI89NBDqTxbaWlpj3vuuedfstlsRtIAAOQDBTAAANvs+eef/06HDh0OTePZHn744Xj44YeFDEDeeOSRR+LPf/5zKs/WoUOHw5599tlvSxkAgHygAAYAYJvcd999hw8ePPjUNJ7t/vvvjwkTJggZgLzz2GOPxX333ZfKs+25554/+NOf/nSYlAEASDvvAAYAYKudccYZ3ceMGXN5QUFBcdrONnHixHjkkUeEDEDeWrx4cWSz2ejbt2/ajpbp06fPvn/5y18mz5w5c4OkAQBIsi29A1gBDADAVhk2bFjzG2+88Q/NmjVrl7azPfroo6l99CUAbI2FCxdGUVFR9OvXL1XnKigoKD7wwAP3e/LJJx9dsWJFnaQBAEiqLRXAHgENAMBWuffee39ZWlraPW3nevzxx+PBBx8UMAD8jz//+c8xceLE1J2rtLS0x3333fdLCQMAkFYKYAAAPrVJkyaN6tSp0xEpPFeMHz9ewADwD8aPHx+TJ09O3bk6der0hUmTJn1VwgAApJFHQAMA8Kmcd955fU888cR/z2QyRWk618yZM+Puu+8WMAB8jNdeey06duwYnTt3TtW5unbtuk9BQcHzzz333DopAwCQNN4BDADAZ3LEEUe0vOKKK67NZrOVaTrXyy+/HDfffHPkcjkhA8DHyOVyMXv27OjSpUt06tQpNefKZDJF++yzz/CpU6c+9u67726WNAAASeIdwAAAbLNsNpu55ZZb/q2kpKRjms61YMGCuPnmm6OxsVHIAPAJGhsb4+abb44333wzVecqLS3tcvfdd5+fzWYzUgYAIC0UwAAAbNGkSZO+3rZt2wPTdKZly5bFDTfcEPX19QIGgE+prq4urr322li+fHmqztWuXbsDH3/88VESBgAgLTwCGgCAj3XZZZcN+upXvzo2k8mk5hcH33///bjyyiujqqpKwACwlerq6uLll1+OIUOGRHl5eWrO1aVLl31LS0unPvPMM2ukDABAEngENAAAW61///4lJ5988q8ymUxRWs60YcOG+P3vfx8bN24UMABso40bN8bvfve7VP15WlBQkP3hD394ft++fYslDABA4q9vrQAAgI/y4IMPnl1WVtYrLeeprq6O3/zmN7Fq1SrhAsBntGrVqrjyyiujuro6NWcqKyvr8/DDD58lXQAAkk4BDADA/zF+/Pgju3XrdnRazlNfX5/KdxYCwK60fPnyuO6666K+vj41Z+rRo8dXx40bd4R0AQBIMgUwAAB/53vf+16nI4444py0nCeXy8Vtt90Wb7zxhnABYDt7/fXX47bbbotcLpeaMx155JHnfvvb3+4oXQAAkkoBDADA/6qoqCi4+OKLLywsLCxPy5nGjx8fs2bNEi4A7CCzZs2Khx56KDXnKSwsrPj1r399QUVFhZ+bAQCQSC5kAQD4XxMnThxdWVk5OC3nef7552PixImCBYAd7LHHHosXXnghNeeprKzc89FHHz1RsgAAJFFh5cDo+lFfaKyKqFmRtSEAgDxxwQUX7DZq1KgLM5lMYRrO8+qrr8Ytt9ySqkdSAkBT/7O3d+/e0a5du1Scp2PHjkNzudxzU6ZMWSddAACamrLO9VHwMc/wcwcwAADRt2/f4h//+McXZzKZVPwG4HvvvRc33HBDNDY2ChcAdpKGhoa47rrrYtmyZak4T0FBQfbss88e27dv32LpAgCQqGtZKwAAYPz48T8qKyvrkYazbNiwIX7/+99HbW2tYAFgJ9u0aVP8/ve/j40bN6biPGVlZb3GjRs3RrIAACSJAhgAIM/ddNNNw/v06XN8Gs5SX18f1157baxdu1awALCLrFmzJq699tqor69PxXn69ev3jd///vdDJQsAQFIogAEA8thBBx1Uceyxx/5rRGTScJ477rgjFi9eLFgA2MUWLVoUd955Z1qOU/CNb3zj34YNG9ZcsgAAJOIC1goAAPLXzTfffFZxcXG7NJxl4sSJMX36dKECQBMxbdq0mDRpUirOUlJS0unOO+88Q6oAACSBAhgAIE/913/914FdunT5UhrO8tprr8Wf//xnoQJAEzN+/PhYsGBBKs7SrVu3o2+66abhUgUAoKlTAAMA5KEvfelLlV/5yld+lYazrFixIq6//vpobGwULAA0MY2NjXHdddfFihUr0nCczHHHHfergw46qEKyAAA0ZQpgAIA8dPXVV5+ezWYrk36OmpqauPbaa2PTpk1CBYAmatOmTXHttddGTU1N4s+SzWbb3njjjT+RKgAATZkCGAAgz9x6663Du3Tp8uWknyOXy8Utt9wSK1euFCoANHErV66MW2+9NXK5XOLP4lHQAAA0dQpgAIA8MnTo0LKvfvWrv0jDWSZMmBBz584VKgAkxJw5c+Kxxx5LxVlGjRr1i6FDh5ZJFQCApkgBDACQR+64444fFRcXd0z6OV5++eV45JFHBAoACfPQQw+l4he4SkpKOt5xxx0/lCgAAE2RAhgAIE9cfvnlu/fs2XNU0s/xwQcfxB133JGKR0gCQL7J5XJx2223xZo1axJ/lp49ex57+eWX7y5VAACaGgUwAEAe6NatW/a73/3uv2YymURf/9XX18cNN9wQ1dXVQgWAhKqqqoobb7wx6uvrE32OTCZT8N3vfvdX3bp1y0oVAICmRAEMAJAHxo8ff0pZWVmvpJ/jnnvuiaVLlwoUABJuyZIlcd999yX+HGVlZT3Hjx9/ikQBAGhKFMAAACn385//vOeAAQNGJ/0c06dPjylTpggUAFJi8uTJMWPGjMSfY8CAAaN//vOf95QoAABNhQIYACDFstls5qyzzjo3k8kk+tGEK1asiLvvvlugAJAyd911V6xYsSLRZ8hkMtmzzjrr3Gw2m5EoAABNgQIYACDFxo0b98XKysq9knyG2trauOGGG6K2tlagAJAyf/1zfvPmzYk+R2Vl5V7jxo0bKVEAAJoCBTAAQEoNHz68/OCDDz4t6ee4//77Y/ny5QIFgJRavnx5jBs3LvHnGDFixI+HDRvWXKIAAOxqCmAAgJS69dZbT8tms22TfIYZM2bEc889J0wASLnJkyfHzJkzE32G4uLitrfffvtp0gQAYFdTAAMApNBVV121R48ePb6S5DOsXLky7rrrLmECQJ64++6744MPPkj0GXr27PnVK664Yg9pAgCwKymAAQBSprS0tOAb3/jGT5N8rdfY2Bi333679/4CQB6pqamJ2267LRobG5N8jIJvfvObZ5aWlvqZGwAAu+6i1AoAANJlwoQJX6uoqBiQ5DOMHz8+Fi1aJEwAyDNvvvlmPPjgg4k+Q4sWLQY9+OCDx0gTAIBdRQEMAJAiRx55ZOWwYcN+kOQzzJ07N5544glhAkCemjhxYixYsCDRZxg+fPiPjjjiiJbSBABgV1AAAwCkyBVXXHFyUVFRRVLnr6qqijvvvDNyuZwwASBP5XK5uP3226O6ujqxZygqKmrxm9/85mRpAgCwKyiAAQBS4vzzz+/Xu3fv45J8httvvz0+/PBDYQJAnlu3bl3cfvvtiT5D7969jz///PP7SRMAgJ1NAQwAkALZbDZz6qmn/jyTyST2+m769OkxZ84cYQIAERExe/bsmDFjRmLnz2QyBaeeeurPs9lsRpoAAOxMCmAAgBT44x//eERlZeXgpM6/du3auPfeewUJAPyde+65J9atW5fY+SsrKwf/6U9/+oIkAQDYmRTAAAAJ17dv3+JDDjnkR0k+w9133x01NTXCBAD+Tk1NTdx9992JPsPBBx/8o759+xZLEwCAnUUBDACQcHfdddc3S0pKOiV1/smTJ8e8efMECQB8pLlz58azzz6b2PlLSko63nPPPd+SJAAAO4sCGAAgwb70pS9VDhw48KSkzr9mzZoYP368IAGALXrggQdizZo1iZ2/f//+Jx111FGtJAkAwM6gAAYASLArrrji1MLCwvIkzp7L5eK2226LTZs2CRIA2KJNmzbFbbfdFrlcLpHzFxYWll1++eU/kCQAADuDAhgAIKF+8Ytf9O7evftXkjr/s88+G2+88YYgAYBP5Y033ojnn38+sfN369bt6F/96ld9JAkAwI6mAAYASKgf/vCHP8pkMom8nvvggw/igQceECIAsFXGjRsX69atS+TsmUym4NRTT/2xFAEA2NEUwAAACXTdddcNa9eu3YFJnD2Xy8Udd9wRtbW1ggQAtsqmTZvizjvvTOz8bdq02f+mm27aT5IAAOxICmAAgIQpLS0t+NrXvnZ6Uud/4YUXYuHChYIEALbJq6++GjNmzEjs/Mccc8zpFRUVfiYHAMAO42ITACBhbr/99oMrKip2S+LsGzZsiHHjxgkRAPhM7r///qiqqkrk7OXl5X3/67/+6wgpAgCwoyiAAQASpKKiouCwww47Nanz33vvvYn9YS0A0HRs2LAh7r///sTOf9BBB/1zq1atCiUJAMCOoAAGAEiQ+++//+iysrKeSZx9zpw58dJLLwkRANguXnjhhViwYEEiZy8tLe32xz/+8StSBABgR1AAAwAkRN++fYv33Xfff07i7LW1tXHvvfcKEQDYru6+++6oq6tL5Oz77bffKf379y+RIgAA25sCGAAgIW6++eZRxcXFbZM4+yOPPBJr164VIgCwXa1atSoee+yxRM6ezWbb3njjjV+TIgAA25sCGAAgAYYOHVq21157fSeJs7/33nvxxBNPCBEA2CEmTpwYK1asSOTsQ4YM+c7QoUPLpAgAwPakAAYASIBrr732xKKiosqkzZ3L5eKee+6JxsZGIQIAO0R9fX3cddddkcvlEjd7UVFR5bXXXnuCFAEA2J4UwAAATdwBBxxQMWDAgG8kcfYZM2bEW2+9JUQAYId6880348UXX0zk7AMGDPjG8OHDy6UIAMD2ogAGAGjirrrqqhOKiooqkjb3pk2b4oEHHhAgALBT3H///VFbW5u4uYuKilpcffXV7gIGAGC7UQADADRhBx10UEX//v0Teffvww8/HB9++KEQAYCdYv369TFhwoREzj5w4MBvHHDAARVSBABge1AAAwA0Yf/5n/95bGFhYfOkzb1q1aqYPHmyAAGAnerpp5+O1atXJ27uwsLC8ssuu2yUBAEA2B4UwAAATdQBBxxQMWjQoNFJnP3uu++O+vp6IQIAO1V9fX3cddddiZx99913/+bQoUPLpAgAwGelAAYAaKIuv/zyYwsLC8uTNvfcuXNjwYIFAgQAdokFCxbE3LlzEzd3UVFRi9/97ndflyAAAJ+VAhgAoAkaOnRo2aBBgxL37t+6urr405/+JEAAYJf605/+FHV1dYmbe/fdd//mkCFDSiUIAMBnoQAGAGiCfvOb33ylqKioZdLmfu655xL53j0AIF1Wr14dzz33XOLmLioqann11VcfLUEAAD4LBTAAQBPTq1evZoMHD/5m0uaurq6ORx55RIAAQJPwyCOPRHV1deLmHjJkyLe6deuWlSAAANtKAQwA0MTcdNNNxxQXF7dN2twTJkyIqqoqAQIATUJVVVUifzmtuLi43a233uouYAAAtpkCGACgCWnVqlXhXnvtdVLS5l61alU8++yzAgQAmpTJkyfHqlWrEjf30KFDR7dq1apQggAAbAsFMABAE3LLLbccXlJS0jlpcz/44INRX18vQACgSamvr48HH3wwcXOXlJR0vummmw6VIAAA20IBDADQRGSz2cwBBxzw7aTNvWjRonjppZcECAA0SS+99FIsXrw4cXOPGDHiO9lsNiNBAAC2lgIYAKCJuOaaa/YuLy/vm7S5H3roocjlcgIEAJqkXC6XyLuAy8vL+1111VV7SRAAgK2lAAYAaCK+8pWvfDdpM8+bNy8WLlwoPACgSVu4cGG8+uqrrg8BAMgLCmAAgCbgsssuG1RZWblPkmbO5XIxfvx44QEAifDAAw8k7qklrVu33veSSy7pLz0AALaGAhgAoAkYNWrUCUmbefbs2bFs2TLhAQCJsGzZsnjllVcSN/cJJ5xwovQAANgaCmAAgF3sn//5nzt37NjxiCTN3NjYGA888IDwAIBEGT9+fDQ0NCRq5k6dOn1h9OjRHaQHAMCnpQAGANjFfvSjH30tk8kk6rps2rRpsWrVKuEBAImyatWqeOGFFxI1cyaTKfzpT386SnoAAHxaCmAAgF1o0KBBpX369Plqkmaur6+PCRMmCA8ASKQJEyZEXV1dombu27fvV/r27VssPQAAPg0FMADALnTZZZcdXlRUVJGkmadOnRpr164VHgCQSOvXr48pU6YkauaioqLK3/zmN0dIDwCAT0MBDACwi2Sz2cy+++57UpJmrqurc/cvAJB4jz76aOLuAt5///1PymazGekBAPBJFMAAALvI1VdfPbSsrKx3kmaeMmVKbNiwQXgAQKJt2LAhnn/++UTNXFZW1ueqq67aS3oAAHwSBTAAwC7y5S9/+bgkzVtfXx8TJ04UHACQCo8//nji7gL+0pe+dLzkAAD4JApgAIBdYPTo0R3atm07IkkzT5s2LdatWyc8ACAVPvzww5g+fXqiZm7fvv2I0aNHd5AeAABbogAGANgFfvrTn47KZDKFSZm3vr4+HnnkEcEBAKnyyCOPRH19fWLmzWQyhT/96U+/JjkAALZEAQwAsJN16tQp26dPn6OTNLO7fwGANFq3bl1MmzYtUTP36dPnmE6dOmWlBwDAx1EAAwDsZFddddUB2Wy2dVLmbWxsjEmTJgmOVOvYsWN06OCJmgD5aNKkSdHY2JiYebPZbOurrrrqAMkBAPBxFMAAADvZiBEjvp6keV988cVYtWqV4Ei1Ll26xIUXXhinnXZadO3a1UIA8siqVavipZdecj0JAEBqKIABAHaiM844o3tlZeXeSZk3l8vFxIkTBUdeyGQyMXjw4PjVr34VY8aMcUcwQB55/PHHI5fLJWbeysrKvc8444zukgMA4KMogAEAdqJTTjnlqxGRScq8CxYsiPfee09w5JVMJhN77713XHjhhTFmzJho3769pQCk3HvvvRcLFy5M1B9X/3NdCQAA/4cCGABgJ+nVq1ezXr16fTlJM3v3L/nsr0XwBRdcECeffHK0bdvWUgBSLGnXPb169fpyr169mkkOAIB/pAAGANhJrrjiioOLiopaJmXeBN4JAztEYWFhDB8+PC688MIYPXp0VFZWWgpACi1YsCCWLVuWmHmLiopaXnnllYdIDgCAf6QABgDYSYYPH/6VJM2btHfhwY5WVFQUI0aMiEsuuSRGjx4dLVu2tBSAFMnlcvH4448naub99tvvK5IDAOAfKYABAHaC0aNHd6isrByalHnXrl0bL7/8suDgI/y1CL744ovjhBNOiBYtWlgKQEq89NJLsW7dusTMW1lZudfo0aM7SA4AgL+lAAYA2AlOP/30o5J07fXMM89EQ0OD4GALiouL47DDDouxY8fGqFGjoqyszFIAEq6hoSGeeeaZJI1c8D/XmQAA8P8vEq0AAGDHymazmX79+n05KfPW1tbGlClTBAefUnFxcYwcOTIuvfTSGDVqVJSWlloKQII9//zzUVtbm5h5+/Xr9+VsNpuRHAAAf6UABgDYwX7zm9/sWVJS0jkp886YMSOqq6sFB1uppKQkRo4cGZdcckkcffTRUVJSYikACVRdXR0zZ85M0p8/na+44orBkgMA4K8UwAAAO9gXvvCFLyVl1lwuF08//bTQ4DNo3rx5HHXUUXHJJZfEyJEjI5vNWgpAwjz11FORy+USM++RRx75ZakBAPBXCmAAgB1oyJAhpZ07dz4iKfO+/vrrsWLFCsHBdlBeXh6jRo2KSy+9VBEMkDArVqyI119/PTHzdunS5fD+/ft79AQAABGhAAYA2KHGjh17aGFhYWJeCOruX9j+KioqYtSoUXHxxRfH4YcfHkVFRZYC4LpouyosLGz+H//xHwdLDQCACAUwAMAOteeeex6ZlFnXrl0b8+bNExrsIK1atYrjjz8+LrroohgxYkQUFPh2DKApmzdvXqxZsyYx8+61115HSg0AgAgFMADADnPMMce0bt269b5Jmfe5556LxsZGwcEO1qZNmxg9enRcfPHFimCAJqyxsTGee+65JP35MvyYY45pLTkAAPykAQBgBznzzDMPz2Qyibje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FpafffbZvaQFAJA+CmAAgE9p//3375+EOV9//XVhAXmjvLw8Ro0aFf/+7/8eI0eOjGw2aymA67FP6fOf//xAaQEApI8CGADgU+rRo8fuTX3G2traePvtt4UF5J2KiooYNWpUXHzxxXH44Yc3+XdvAum2ePHiRLySo1evXoOkBQCQPgpgAIBPqXXr1k3+DoklS5ZEQ0ODsIC81apVqzj++OPj4osvjhEjRkRBgW97gZ2voaEhlixZ0uTnbNOmjQIYACCFfCcMAPApDBkypLR58+a9m/qcb775prAAIqJ169YxevToGDt2rCIYcF32MZo3b95n0KBBpdICAEgX3wEDAHwKp556av9MJtPkr53eeustYQH8jTZt2sTo0aPjvPPOi+HDhyuCAddlfyOTyRT84Ac/+Jy0AADSxXe+AACfwuDBg5v84/Hq6+tj0aJFwgL4CJ06dYqTTz45/u3f/i323nvvyGQylgLsUIsXL07Eqzn23HPPgdICAEgXBTAAwKfQpUuXAU19xnfeeSfq6uqEBbAFnTt3jjFjxiiCgR2utrY23n333SRc53oPMABAyiiAAQA+hZYtW/Zv6jN6/DPAp9elS5cYM2ZMnHvuuTF48GALAfL2+iwJ17kAAGwdBTAAwCcYPnx4eUlJSeemPqfHPwNsvV69esVpp50W55xzTvTvrwMB8u/6rLS0tPPw4cPLpQUAkB4KYACAT/Ctb31rt4ho8s8IXbx4sbAAtlGfPn3irLPOinPOOSd22203CwG2i4T8gl7m29/+dj9pAQCkhwIYAOAT7L777k2+CVi7dm1s2LBBWACfUZ8+feLss8+OM888M3r27GkhwGfy4Ycfxrp165r8nAMHDlQAAwCkSJEVAABsWadOnZr8D8TefvttQQFsRwMGDIgBAwbEggULYvz48bF06VJLAbb5Oq1Vq1audwEA2GkUwAAAn6CyslIBDJCnBgwYEP3794958+bFQw89FO+++66lAFtlyZIlsddeezX1613PvgcASBEFMADAFnTq1CnbvHnzXk19ziVLlggLYAfJZDIxePDg2GOPPeLll1+OBx98MFauXGkxQGqu05o3b967Xbt2RatXr66XGABA8nkHMADAFowZM6ZnJpPJNuUZGxsbPZoUYCfIZDKx9957x4UXXhhjxoyJ9u3bWwrwiZYuXRqNjY1NesaCgoLsqaee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k8nE7NmzY+LEibFmzRoNAXif/VNSzJo161kTAwBongTAAAC70O233/7KOeecszU/P78022sdMGBAtG/f3tWu0My9+uqrMWnSpFi1apVmALyPjh07xgEHHJCIWhsbG6u/8Y1v/NXUAACaJwEwAMAutHLlyob169fP6tat2+hsrzWVSsXhhx8ekyZNMjhohubMmROTJ0+OJUuWaAbAh3D44YdHKpVKRK3r16+fVVFR0WhqAADNU54WAADsWq+++mpirts77LDDDAyamTfffDP+/d//PX7yk58IfwE+pFQqFSNGjEhMva+88sozpgYA0Hw5AQwAsIvddNNNz5166qnV+fn5rbO91m7dukX//v1j4cKFBgc5btmyZfHYY4/F/PnzNQPgIzrggAOic+fOiai1sbFxy4033jjL1AAAmi8BMADALrZy5cqG8vLyGT179vx0Euo9+uijBcCQw5YvXx7jxo0T/AJ8wv1SUpSXlz9TXl7eYGoAAM2XABgAYDeYMWPGUxdccEEiAuAhQ4ZE69ato7q62uAgh6xcuTImTJgQc+fOjUwmoyEAH1ObNm3i0EMPTUy9zz777FOmBgDQvPkGMADAbvDVr371lYaGhk1JqLWgoCCOOOIIQ4McsW7duvj5z38ed955Z8yZM0f4C/AJjRw5MvLz8xNRa0NDw8abbrrpVVMDAGjenAAGANgNKisrm1atWjW9T58+5ySh3qOPPjqefPJJQREk2Pr16+Oxxx6L2bNn+3cZYBdJpVIxatSoxNS7cuXKadXV1WmTAwBo3pwABgDYTaZNm5aY6/c6duwYAwYMMDRIoA0bNsSvf/3r+Nd//dd49dVXhb8Au9CAAQOiY8eOian36aefftLUAAAQAAMA7CZf+9rX5tTX11ckpd6jjjrK0CBBqqqq4v77749vf/vb8eKLL0ZTU5OmAOxiRx55ZGJqra+vX/eNb3zjdVMDAMAV0AAAu0ltbW16xYoVT++///6fT0K9hx56aLRt2zaqqqoMD7LYli1bYsqUKfHcc8/F9u3bNQRgN2nbtm0MGTIkMfUuX778qdraWtc/AwDgBDAAwO70xz/+cUJSas3Pz4/jjjvO0CBL1dTUxKOPPhq33XZb/OUvfxH+Auxmxx57bOTn5yel3Myvf/3rCaYGAECEABgAYLe66667llZXV89PSr1HH310tGjRwuAgi7wd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qATAAABZ4umnn968fPnyxF3xN3r06GjXrp0BAgBZqUOHDnH88ccnru5ly5ZNmD59+hYTBADgoxIAAwBkkbvvvvtPmUymKUk1FxYWxumnn254AEBWOvPMMxP3yYpMJtN41113/dH0AAD4OATAAABZ5Be/+MWatWvXTkta3UcccUT06tXLAAGArNK7d+847LDDEld3eXn5X+6///51JggAwMchAAYAyDIPP/zwn5JWcyqVijPPPNPwAICsMmbMmEilUomr+8EHH/yT6QEA8HEJgAEAsszXv/71NzZs2DAraXUPHDgwDj74YAMEALLCoEGDYsCAAYmru6KiYuatt966wAQBAPi4BMAAAFlo3Lhxv01i3WPGjIm8PFtMAGDvysvLizFjxiSy9j//+c+/NUEAAD7RflgLAACyz/XXXz+nqqrqr0mru1evXnHUUUcZIACwVx1zzDHRvXv3xNW9adOmV2666aa5JggAwCchAAYAyFJ/+tOf7k1i3WPGjInS0lIDBAD2ijZt2sRZZ52VyNofeOCBe00QAIBPSgAMAJClbrrpprlJPAVcXFwcZ555pgECAHvFWWedFS1btkxc3Zs2bXrl5ptvnmeCAAB8UgJgAIAsNm7cuF8lse5Ro0ZF7969DRAA2KP69OkTI0eOTGTtjz322K9MEACAXUEADACQxcaOHTu7qqrqb0mrO5VKxfnnnx+pVMoQAYA9tv/4/Oc/n8j9R2Vl5d+uueaav5kiAAC7ggAYACDLTZ069bdJrLtv374xZMgQAwQA9ojDDjsssTeQTJ48+TcmCADAriIABgDIcpdeeumLVVVVryax9s9//vNRXFxsiADAblVaWhrnn39+Imuvqqr66+WXX/6SKQIAsKsIgAEAEuChhx76WRLrLisri9NPP90AAYDd6qyzzoqSkpIklp753e9+91MTBABgVxIAAwAkwA033DB3w4YNs5JY+3HHHRd9+vQxRABgt+jbt28cddRRiay9oqJi1te//vU3TBEAgF1JAAwAkBA///nPfxoR6aTVnUql4vOf/3zk5dl6AgC7Vn5+flx00UWRSqWSWH76F7/4xX+bIgAAu5q3cAAACXHHHXe8tW7duulJrL13795xzDHHGCIAsEudcMIJ0b1790TWXl5e/pc77rjjLVMEAGBXEwADACTI3XfffW8mk2lKYu1nnXVWtG3b1hAB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onv37vEv//IvccABBzSrdWcymaYnnnji9s997nPPeAoAAODDEQADAJBYDz/88NJjjjlmY+/evY+KiGZzFKq0tDSGDx8eq1evjvXr13sQAHLcwIED45prrol27do1t6VnZsyY8YOzzjprqqcAAAA+PAEwAACJdv/99795zDHHVO6zzz5HRDMKgVu0aBGHHXZYtGzZMhYuXBjpdNrDAJBjCgoK4pxzzonzzz8/WrRo0dyWn37uuefuOuWUUyZ4EgAA4KMRAAMAkHi///3v5w8bNmxF3759j2lO10GnUqno27dvDB06NBYvXhxbtmzxMADkiJ49e8YNN9wQgwcPblbf+434x7XPU6ZM+fbpp58+2ZMAAAAfnQAYAICc8OCDDy4ZNmzYin79+jWrEDgionXr1nHEEUdEfX19LF261MMAkGCpVCpOOOGEuOKKK6JNmzbNbv07wt9vnXPOOX/xNAAAwMcjAAYAIGc89NBDS4YNG7a8X79+xza3EDg/Pz8OPvjg6NWrV8yfPz8aGho8EAAJU1JSEpdffnmccMIJkZ+f3+zWn8lkGp944olvffazn53maQAAgI9PAAwAQE556KGHlo4cOXJdnz59RqWa252ZEdG1a9cYNmxYLFu2LCorKz0QAAnRt2/fuO6662K//fZrluvPZDLpp59++rvnnHPO054GAAD4ZATAAADknD/96U+LDj300KX7779/s7sOOiKiuLg4jjzyyCgpKYk333wz0um0hwIgSxUUFMRnP/vZuPDCC6OkpKRZ9iCdTjc88sgjt5x//vnTPREAAPDJCYABAMhJDz/88NId3wQelUqlmt09mqlUKvr06RMHH3xwLFy4MLZt2+ahAMgynTt3jrFjx8bQoUOjGV5aERH/CH+feOKJ2y+88MLnPBEAALBrCIABAMhZDz300JIePXq8NmjQoGPz8vJaNMcetG3bNkaNGhVNTU2xZMkSDwVAFkilUjF69Oi48soro0OHDs22D01NTdt++9vf/stll132oqcCAAB2HQEwAAA5bdKkSeXdu3efM3jw4GYbAufn58eAAQOiV69esWDBgti+fbsHA2Avad26dVx66aVx/PHHR35+frPtQ2NjY/WvfvWrf7nuuute81QAAMCuJQAGACDnTZ48eW1jY+OMI4444uiCgoKS5tqHrl27xqhRo2Lbtm2xcuVKDwbAHpRKpWLUqFExduzY6NWrV7PuRX19/fo77rjjK9/61rcWejIAAGDXEwADANAsPP/881UbNmx45rjjjjuqsLCwrLn2obCwMAYNGhT77bdfLF68OGpraz0cALtZ+/bt44orrogTTzwxCgub9/uU2tralTfffPPVP/nJT1Z7MgAAYPcQAAMA0Gz87W9/27p27doZJ5xwwsjCwsK2zbkXnTp1ipEjR0Z1dbXTwAC70ciRI+Pqq6+OHj16NPte1NTULL/hhhuu/e1vf7vOkwEAALuPABgAgGbltdde2zpv3rynTznllKFFRUWdmnMvCgsL49BDD4399tsvFi1a5DQwwC709qnfk08+udmf+o2I2Lx587yLL774unHjxm30dAAAwO71fgFwat9zYsTOftC4LmLjq610DwCAxOrVq1fhs88++69du3Y9QTciGhoaYurUqTF58uRobGzUEICPqaCgIE499dQYPXq04HeH8vLyp4499tjvrly5skE3AABg9+swrDYKuuz8ZwJgAAByWuvWrfNeeumlm/fdd9+zdeMfVq9eHffff38sWbJEMwA+ov322y8uuugi1z2/w8KFC38/fPjwnzY0NGR0AwAA9gwBMAAAzd7zzz9/8aGHHnp1RKR0IyKTycTMmTPjz3/+c9TV1WkIwAcoKSmJ8847L0aMGBGplL9Kdki//PLL9xx77LEPagUAAOxZ7xcA+wYwAADNwn333Tfn+OOP39yrV6/DQwgcqVQqevfuHcOHD49169ZFRUWFhwTgPRxyyCExduzY6N+/v/B3h0wm0/jMM8/828knnzxONwAAYM97v28AC4ABAGg2fve7370xePDgJf369Ts6lUrl60hEcXFxjBgxInr06BFLly6N2tpaTQHYoUOHDvGFL3whzjzzzCguLtaQHZqammoeeOCBWz73uc9N1w0AANg7BMAAALDDww8/vKygoOC54cOHH1FQUFCqI//QrVu3OO6446K0tDQWL14cTU1NmgI0Wy1btoxzzjknLr300ujevbuGvENtbe2K22677arbbrvtDd0AAIC9RwAMAADv8Oyzz25avHjx0yeddNKQoqKiTjryD3l5edGnT58YOXJkbN26NVatWqUpQLNz+OGHx1e+8pUYMGBA5OXlacg7VFVV/e3CCy+8/oEHHvDdAAAA2MsEwAAA8C7z58+vefbZZ58+44wz+hcX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OigOOOCAKCoq0pQs0djYuGXmzJk/PvPMMyc2NDS4XgAAAPjQBMAAAJADjjzyyNY/+9nPrujbt++5EZGnI9mluro6Fi5cGPPnz4958+ZFZWWlprBXtGvXLg455JAYMGBA9O/fP1q39nsjWSj91ltv/fmqq676xaxZs6q1AwAA+KgEwAAAkEN++ctfjhgzZsyNrVq16q0b2SmdTsfKlStj0aJFsXDhwli8eHFs27ZNY9gtSkpKol+/ftG/f//Yf//9o1evXpGX53dEslVNTc3yRx999EdXXnnlK7oBAAB8XAJgAADIMd26dSt8+OGHPzd48ODL8vPzbdyzXCaTiTVr1sTChQtj0aJFsWjRotiyZYvG8LGUlZVF//79/xn6du/ePVKplMZkuaampprXXnvtV2PGjHmgoqKiUUcAAIBPQgAMAAA56rjjjiv7r//6r8tdC508mzdvjuXLl8eKFSti+fLlsXjx4qipqdEY/pfi4uLo169f9O7dO/bZZ5/Yd999o6ysTGMSJJPJpJcsWfLn66677pfTp0/3mx8AAMAuIQAGAIAc99Of/nTIueeee3NpaWlf3UimxsbGWLlyZSxdujSWLVsWy5cvj3Xr1kUmk9GcZiKVSkWXLl1in332iT59+kSfPn2iV69eUVBQoDkJtXXr1sUPPvjgj6699tq/6wYAALArCYABAKAZaNeuXf64cePOGTp06BUFBQWtdST56uvrY+XKlf88KbxixYpYu3ZtpNNpzUm4vLy86Nq1a+yzzz7//KdXr17RsmVLzckBjY2NW/7617/+4pxzznm0srKySUcAAIBdTQAMAADNyIknntjmnnvuuXzfffcdk0qlHB3MMdu3b481a9bEmjVrYu3atbF27dooLy+PDRs2CIazUF5eXnTs2DG6desWXbt2jW7dukW3bt2iR48eUVhYqEE5JpPJNC5ZsuRR1z0DAAC7mwAYAACaoa9+9av7Xnfdddd16NDhCN3IfY2Njf8MhNetWxfr1q2LioqKWLduXWzbtk2DdrPS0tLo3LnzP//p0qVLdO3aNbp27eoK52Ziw4YNM//rv/7rxz/60Y+W6wYAALC7CYABAKAZ++UvfznirLPOuq64uNj3gZupmpqaWL9+/T//qaioiMrKyqisrIxNmzZFY2OjJn2AgoKCaN++fbRr1y7at28fHTt2jC5dukSnTp2ic+fOUVxcrEnN1NatW98aP378PVdcccXLugEAAOwpAmAAAGjm2rVrl//ggw+eOWLEiCsLCwvb6gjvtHnz5n+GwZs2bYrKysqorq6OLVu2xJYtW6K6ujqqq6sjk8nk3NpTqVS0bt06WrduHWVlZdGmTZsoLS39X2Fvu3btok2bNh4U/peGhobKl1566efnnHPO+OrqavevAwAAe5QAGAAAiIiIoUOHFt97770XHHjggRfk5+c7ssiHlk6n/xkEV1dXR01Nzfv+k8lkora2NtLpdNTX10dTU1PU1dXt0u8U5+XlRcuWLSM/Pz+KiooiLy8vWrVqFalUKoqLi3f6T0lJSbRq1eqfgW9paWnk5eUZMB9aU1NTzYIFC/745S9/+Y+zZ8+u0REAAGBvEAADAAD/y2mnndb2rrvuurRPnz5n5+XlFeoIe9LbgfDbtm/f/r7XUBcUFESLFi3++b/fDnxhT8pkMg1LliwZd8stt/xq0qRJVToCAADsTQJgAABgp0477bS2d95554X777//5wTBAP9XJpNpWLhw4QO33nrrHwS/AABAtni/ADi/7UHRc2c/SG+LqC33/gcAAHLZokWL6u69995X0un0swcddFCnkpKS3roC8A8VFRUz/7//7/+77aKLLpq6aNGiOh0BAACyRXH3xsgr3fnPBMAAAEDMnDmz8u67736qqalpWr9+/Ypbt27dN5VKpXQGaG4ymUx6zZo1U+65555/Peeccx6cOXNmpa4AAADZRgAMAAB8KDNnzqz88Y9//Gw6nZ4uCAaak7eD37vvvvtfzz///McEvwAAQDYTAAMAAB+JIBhoLgS/AABAEgmAAQCAj+XtILisrOyFvn37diwuLu4VEYJgIBdkKioqnrv33nu/PWbMmEcEvwAAQJK8XwCc2vecGLGzHzSui9j4aivdAwAA/unqq6/u8ZWvfOX8Pn36nJWXl9dCR4CkSafT9UuXLh3/X//1Xw/84he/WKMjAABAEnUYVhsFXXb+MwEwAADwkZ1xxhntb7/99rMPPPDA8/Pz81vrCJDtmpqaqhcsWPDgd77znUcmTpzotC8AAJBoAmAAAGC3GD58eMkPf/jDzwwePPjioqKijjoCZJv6+voNr7322u9vvPHGx2fPnl2jIwAAQC4QAAMAALvV0KFDi++5556zDjnkkPOKioq66giwt9XV1a19/fXXH7z++uvHC34BAIBcIwAGAAD2iFatWuXdc889w0455ZTzO3bseJSOAHtYZsOGDbOmTJny4PXXX/9qbW1tWksAAIBcJAAGAAD2uH/913/tf/7555/dq1ev0/Ly8lroCLC7pNPp+pUrV05+4IEHHvnOd76zSEcAAIBcJwAGAAD2mjPOOKP97bfffvYBBxzw2YKCgjY6AuwqjY2NVW+++eafv/e97z06YcKETToCAAA0FwJgAABgrxs+fHjJ97///dGDBg0aU1paur+OAB9XdXX1wtdee+3Rr371q1Nfe+21Wh0BAACaGwEwAACQVb761a/ue8EFF3y6b9++ZxUUFLTWEeCDNDY2bnnrrbfG/+EPf5j4ox/9aLmOAAAAzZkAGAAAyEpDhw4t/sEPfnDy4MGDz27dunV/HQHerbq6+s2XX375weuuu+7ppUuXbtcRAAAAATAAAJDlCgsLU3ffffeQ0aNHn9G1a9fj8vLyinQFmq90Ol1XXl4+bcqUKROuvfbav+sIAADA/yYABgAAEqNPnz4t/v3f/33UyJEjz2rfvv2nIiKlK9AsZDZt2vTXF1544bGvfe1rzzntCwAA8N4EwAAAQCJddNFFXa6++uqTDzzwwLNbtmzZTUcg99TV1a1ZsGDBuJ/+9KdP3n///et0BAAA4IMJgAEAgETr1q1b4d13333k4YcffmqHDh2OyMvLK9QVSK50Ot2wcePGWbNmzZp8/fXXz6qoqGjUFQAAgA9PAAwAAOSMo48+uvWtt956/CGHHHJKu3btBkdEnq5AIqQrKytfmzdv3uQ777xz+owZM6q1BAAA4OMRAAMAADnpuOOOK/vGN75x/CGHHHJa27ZtB4bvBUO2yVRVVc2dN2/epO9///vTpk+fvkVLAAAAPjkBMAAAkPNuu+22vmedddZJffr0Oa5Vq1a9dQT2ntra2uXLly+f/uijjz51xx13vKUjAAAAu5YAGAAAaFa+9KUvdbv44ouP7t+//wlOBsMekamqqpq7cOHCv/z+97+fcd9995VrCQAAwO4jAAYAAJqtSy65pOtll112jDAYdrl0VVXVvIULF/7lV7/61bO/+93v1moJAADAniEABgAAiIirr766x/nnnz9q//33P7JNmzZDUqlUga7Ah5fJZBoqKyv/vnjx4uf+9Kc/zbr33ntX6woAAMCeJwAGAAB4l379+hV97WtfGzRy5MhRPXv2PLaoqKizrsD/VV9fv37VqlXPvPDCC8/9+7//+5zFixfX6woAAMDeJQAGAAB4H61bt8678847Bx599NFHde/efURpaen+4apomq/M1q1bF69Zs+bF5557btY3v/nNOdXV1WltAQAAyB4CYAAAgI9g8ODBrcaOHXvI8OHDD+vevfvw1q1bHxACYXJXprq6+s01a9a88sorr7z8k5/8ZN5rr71Wqy0AAADZSwAMAADwCVx//fX7nHHGGYf169dvePv27Yfm5+e31hWSrLGxsXrjxo2vvvXWWy+PHz/+lR//+McrdQUAACA5BMAAAAC70Je//OUe55xzzvA+ffoM7tix45CioqKuukI2q6+vX7t27doXFy9ePGfixImv3Xvvvat1BQAAILkEwAAAALvRl7/85R6f+cxnBvfr129Qly5dDm/ZsqVAmL2qrq5u7bp16wS+AAAAOUoADAAAsIe0atUq75prrtnn2GOPPXi//fY7uH379oeUlpb2TaVS+brDbpKuqalZtnHjxnlvvfXW3GeffXbef/3Xfy2vra1Naw0AAEBuEgADAADsRQceeGDLq6+++oAhQ4Yc3LNnz4Pbtm17sGuj+biampqqq6qqXi8vL583Z86ceb/85S/nvfjii1t1BgAAoPkQAAMAAGSZoUOHFn/xi1/cf9CgQQf26NHjwHbt2h3YqlWr3qlUKk932CFdU1OzvLKycsHq1asXzJkzZ8Gf//znJTNmzKjWGgAAgOZNAAwAAJAAxx13XNkFF1xw4MEHH3xA165dDywtLd23pKRkn1QqVag7uS2TyTRs27ZtRXV19dJ169YtfOONNxZOmDBh4YQJEzbpDgAAAO8mAAYAAEiw8847r+OJJ57Yp3///vt16dKlT5s2bfZr3bp1v/z8/GLdSZampqaa6urqxZs3b16ybt26pQsXLlzy9NNPL33ooYc26A4AAAAflgAYAAAgx7Rr1y7/kksu6TFkyJCe++67b89OnTr1Kisr61VcXNyzZcuW3VKpVL4u7R2ZTKaprq6uvKamZtWWLVtWVlRUrFy6dOnK2bNnr7r//vvXVFZWNukSAAAAn4QAGAAAoBnp1KlTwec+97luQ4cO7bnPPvv0aNeuXafWrVt3Li4u7tqyZcvORUVFnfLy8lro1MeTTqe319fXr6+rq6uoqalZW11dvb6y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AACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoMY3JP//9K8My551lzpAk293a7QAAAAAAAAD8iIw3r+SL7TpPxuSt4/ibJJuz20QDBgAAAAAAAHhzrJPp6NvHYcyyjLl7dJTPbl/Jp6sPLufSsM+5ec7q5YOrF0OeP/SVaAAAAAAAAIA3weH7u6zfm79dWDIMSw6225w785vsx3XyzasOby5ssz69c4sAAAAAAAAAr9n69C6bC9sT93a7rKdnORin5Otxynzi1JQcfiwCAwAAAAAAALxO69O7HH68TaaT98cp85R8vbp3Nfszv8q0LHn7xMF1sjk/ZzUPmZ/MmWefhAYAAAAAAAD4oayPdjn7223Gn7x6ZrXPnetX8mBKkpv3cufDd/Pufn5FL56SzcVtNheT3dNt8tQlAwAAAAAAAHyv1sm0ySv/9XtsNWZ3I/lHkgzHi7/4XY7WYz5yiwAAAAAAAAA/Ivtcv/3nPEyS1fHa42t5+vNLyX7JoRsCAAAAAAAAePPt1/nbV3/KvePn1Xc371/NYxEYAAAAAAAA4M0yTHk2rvNo2WdzvHZqzN9v/SF3vju3evng/at5fPDLPDu1yuGyZHSVAAAAAAAAAK/XOGe4ueSvZ4e8M8xZbVe5ceuPufvy3Oqkw4+v5emDX+fuuTlLhhwsEYIBAAAAAAAAXpclGR8OuXP0TR4cPM/9z/+SRyfNDf/1TZezOp/87KdjzizJZkhO7edMy/w/nAUAAAAAAADg/zaMWcZkP8/ZLsmLacr2/MV8+cnvs/tP5/4FmLjAq1ifcioAAAAASUVORK5CYII=",u=e.objectName?z(e.objectName):"Media "+n._slideObjects.filter(e=>e._type===O.media).length,f={_type:O.media};if(!t&&!l&&"online"!==r)throw new Error("addMedia() error: either `data` or `path` are required!");if(l&&!l.toLowerCase().includes("base64,"))throw new Error("addMedia() error: `data` value lacks a base64 header! Ex: 'video/mpeg;base64,NMP[...]')");if(!p.toLowerCase().includes("base64,"))throw new Error("addMedia() error: `cover` value lacks a base64 header! Ex: 'data:image/png;base64,iV[...]')");if("online"===r&&!c)throw new Error("addMedia() error: online videos require `link` value");a=e.extn||(l?l.split(";")[0].split("/")[1]:t.split(".").pop())||"mp3",f.mtype=r,f.media=t||"preencoded.mov",f.options={},f.options.x=o,f.options.y=i,f.options.w=s,f.options.h=A,f.options.objectName=u,"online"===r?(e=S(n),n._relsMedia.push({path:t||"preencoded"+a,data:"dummy",type:"online",extn:a,rId:e,Target:c}),f.mediaRid=e,n._relsMedia.push({path:"preencoded.png",data:p,type:"image/png",extn:"png",rId:S(n),Target:`../media/image-${n._slideNum}-${n._relsMedia.length+1}.png`})):(o=n._relsMedia.filter(e=>e.path&&e.path===t&&e.type===r+"/"+a&&!e.isDuplicate)[0],i=S(n),n._relsMedia.push({path:t||"preencoded"+a,type:r+"/"+a,extn:a,data:l||"",rId:i,isDuplicate:!(null==o||!o.Target),Target:null!=o&&o.Target?o.Target:`../media/media-${n._slideNum}-${n._relsMedia.length+1}.`+a}),f.mediaRid=i,n._relsMedia.push({path:t||"preencoded"+a,type:r+"/"+a,extn:a,data:l||"",rId:S(n),isDuplicate:!(null==o||!o.Target),Target:null!=o&&o.Target?o.Target:`../media/media-${n._slideNum}-${n._relsMedia.length+0}.`+a}),n._relsMedia.push({path:"preencoded.png",type:"image/png",extn:"png",data:p,rId:S(n),Target:`../media/image-${n._slideNum}-${n._relsMedia.length+1}.png`})),n._slideObjects.push(f)}return this}addNotes(e){return this._slideObjects.push({_type:O.notes,text:[{text:e}]}),this}addShape(e,t){return ue(this,e,t),this}addTable(e,t){return this._newAutoPagedSlides=((a,e,t,n,r,o,i)=>{let s=[a],A=t&&"object"==typeof t?t:{};if(A.objectName=A.objectName?z(A.objectName):"Table "+a._slideObjects.filter(e=>e._type===O.table).length,null===e||0===e.length||!Array.isArray(e))throw new Error("addTable: Array expected! EX: 'slide.addTable( [rows], {options} );' (https://gitbrent.github.io/PptxGenJS/docs/api-tables.html)");if(!e[0]||!Array.isArray(e[0]))throw new Error("addTable: 'rows' should be an array of cells! EX: 'slide.addTable( [ ['A'], ['B'], {text:'C',options:{align:'center'}} ] );' (https://gitbrent.github.io/PptxGenJS/docs/api-tables.html)");let l=[],c=(e.forEach(e=>{let r=[];Array.isArray(e)?e.forEach(e=>{let t={_type:O.tablecell,text:"",options:"object"==typeof e&&e.options?e.options:{}};"string"==typeof e||"number"==typeof e?t.text=e.toString():e.text&&("string"==typeof e.text||"number"==typeof e.text?t.text=e.text.toString():e.text&&(t.text=e.text),e.options)&&"object"==typeof e.options&&(t.options=e.options),t.options.border=t.options.border||A.border||[{type:"none"},{type:"none"},{type:"none"},{type:"none"}];e=t.options.border;Array.isArray(e)||"object"!=typeof e||(t.options.border=[e,e,e,e]),t.options.border[0]||(t.options.border[0]={type:"none"}),t.options.border[1]||(t.options.border[1]={type:"none"}),t.options.border[2]||(t.options.border[2]={type:"none"}),t.options.border[3]||(t.options.border[3]={type:"none"});[0,1,2,3].forEach(e=>{t.options.border[e]={type:t.options.border[e].type||u.type,color:t.options.border[e].color||u.color,pt:("number"==typeof t.options.border[e].pt?t.options.border[e]:u).pt}}),r.push(t)}):(console.log("addTable: tableRows has a bad row. A row should be an array of cells. You provided:"),console.log(e)),l.push(r)}),A.x=M(A.x||(0===A.x?0:R/2),"X",r),A.y=M(A.y||(0===A.y?0:R/2),"Y",r),A.h&&(A.h=M(A.h,"Y",r)),A.fontSize=A.fontSize||v,A.margin=0===A.margin||A.margin?A.margin:Y,"number"==typeof A.margin&&(A.margin=[Number(A.margin),Number(A.margin),Number(A.margin),Number(A.margin)]),-1!==JSON.stringify({arrRows:l}).indexOf("hyperlink")||A.color||(A.color=A.color||d),"string"==typeof A.border?(console.warn("addTable `border` option must be an object. Ex: `{border: {type:'none'}}`"),A.border=null):Array.isArray(A.border)&&[0,1,2,3].forEach(e=>{A.border[e]=A.border[e]?{type:A.border[e].type||u.type,color:A.border[e].color||u.color,pt:A.border[e].pt||u.pt}:{type:"none"}}),A.autoPage="boolean"==typeof A.autoPage&&A.autoPage,A.autoPageRepeatHeader="boolean"==typeof A.autoPageRepeatHeader&&A.autoPageRepeatHeader,A.autoPageHeaderRows=void 0===A.autoPageHeaderRows||isNaN(Number(A.autoPageHeaderRows))?1:Number(A.autoPageHeaderRows),A.autoPageLineWeight=void 0===A.autoPageLineWeight||isNaN(Number(A.autoPageLineWeight))?0:Number(A.autoPageLineWeight),A.autoPageLineWeight&&(1{var r;return null!=(r=null==t?void 0:t.options)&&r.colspan&&"number"==typeof t.options.colspan?e+=t.options.colspan:e+=1,e},0),"string"==typeof A.colW||"number"==typeof A.colW||A.colW&&Array.isArray(A.colW)&&1===A.colW.length&&1{r.forEach((e,t)=>{"number"==typeof e||"string"==typeof e?r[t]={_type:O.tablecell,text:String(r[t]),options:A}:"object"==typeof e&&("number"==typeof e.text?r[t].text=r[t].text.toString():null==e.text&&(r[t].text=""),r[t].options=e.options||{},r[t]._type=O.tablecell)})}),[]);return A&&!A.autoPage?(L(a,l),a._slideObjects.push({_type:O.table,arrTabRows:l,options:Object.assign({},A)})):(A.autoPageRepeatHeader&&(A._arrObjTabHeadRows=l.filter((e,t)=>t{i(a._slideNum+t)||s.push(o({masterName:(null==n?void 0:n._name)||null})),0{var e=new B;let n=2*(c.length-1)+1;var a=1<(null==(a=null==(a=c[0])?void 0:a.labels)?void 0:a.length);e.folder("_rels"),e.folder("docProps"),e.folder("xl/_rels"),e.folder("xl/tables"),e.folder("xl/theme"),e.folder("xl/worksheets"),e.folder("xl/worksheets/_rels"),e.file("[Content_Types].xml",' \n'),e.file("_rels/.rels",'\n'),e.file("docProps/app.xml",'Microsoft Macintosh Excel0falseWorksheets1Sheet1falsefalsefalse16.0300\n'),e.file("docProps/core.xml",'PptxGenJSPptxGenJS'+(new Date).toISOString()+''+(new Date).toISOString()+""),e.file("xl/_rels/workbook.xml.rels",''),e.file("xl/styles.xml",'\n'),e.file("xl/theme/theme1.xml",''),e.file("xl/workbook.xml",'\n'),e.file("xl/worksheets/_rels/sheet1.xml.rels",'\n');{let r='';if(p.opts._type===x.BUBBLE||p.opts._type===x.BUBBLE3D)r+=``;else if(p.opts._type===x.SCATTER)r+=``;else if(a){let t=c.length;c[0].labels.forEach(e=>t+=e.filter(e=>e&&""!==e).length),r=r+``+""}else{var o=c.length+c[0].labels.length*c[0].labels[0].length+c[0].labels.length,i=c.length+c[0].labels.length*c[0].labels[0].length+1;r=r+``+''}p.opts._type===x.BUBBLE||p.opts._type===x.BUBBLE3D?c.forEach((e,t)=>{0===t?r+="X-Axis":r=(r+=`${z(e.name||"Y-Axis"+t)}`)+`${z("Size"+t)}`}):c.forEach(e=>{r+=`${z((e.name||" ").replace("X-Axis","X-Values"))}`}),p.opts._type!==x.BUBBLE&&p.opts._type!==x.BUBBLE3D&&p.opts._type!==x.SCATTER&&c[0].labels.slice().reverse().forEach(e=>{e.filter(e=>e&&""!==e).forEach(e=>{r+=`${z(e)}`})}),r+="\n",e.file("xl/sharedStrings.xml",r)}{let a='';if(p.opts._type===x.BUBBLE||p.opts._type===x.BUBBLE3D){a=(a+=``)+``;let r=1;c.forEach((e,t)=>{0===t?a+=``:(a+=``,r++,a+=``)})}else p.opts._type===x.SCATTER?(a=(a+=`
`)+``,c.forEach((e,t)=>{a+=``})):(a=(a+='
')+``,c[0].labels.forEach((e,t)=>{a+=``}),c.forEach((e,t)=>{a+=``}));a=(a+="")+''+"
",e.file("xl/tables/table1.xml",a)}{let o='';if(o+='',p.opts._type===x.BUBBLE||p.opts._type===x.BUBBLE3D?o+=``:p.opts._type===x.SCATTER?o+=``:o+=``,o=o+''+'',p.opts._type===x.BUBBLE||p.opts._type===x.BUBBLE3D){o=(o+="")+``+'0';for(let e=1;e${e}`;o+="",c[0].values.forEach((e,t)=>{o=o+``+`${e}`;let r=2;for(let e=1;e${c[e].values[t]||""}`,r++,o+=`${c[e].sizes[t]||""}`,r++;o+=""})}else if(p.opts._type===x.SCATTER){o=(o+="")+``;for(let e=0;e${e}`;o+="",c[0].values.forEach((e,t)=>{o=o+``+`${e}`;for(let e=1;e${c[e].values[t]||0===c[e].values[t]?c[e].values[t]:""}`;o+=""})}else if(o+="",a){o+=``;for(let e=0;e0`;for(let e=c[0].labels.length-1;e${e}`;o+="";var s=c.length,A=c[0].labels[0].length,l=c[0].labels.length;for(let n=0;n`;let r=s,a=c[0].labels.slice().reverse();a.forEach((e,t)=>{e[n]&&(e=0===t?1:a[t-1].filter(e=>e&&""!==e).length,r+=e,o+=`${r}`)});for(let e=0;e${c[e].values[n]||0}`;o+=""}}else{o+=``,c[0].labels.forEach((e,t)=>{o+=`0`});for(let e=0;e${e+1}`;o+="",c[0].labels[0].forEach((e,t)=>{o+=``;for(let e=c[0].labels.length-1;0<=e;e--)o=(o+=``)+`${c.length+t+1}`+"";for(let e=0;e${c[e].values[t]||""}`;o+=""})}o=(o+="")+''+"\n",e.file("xl/worksheets/sheet1.xml",o)}e.generateAsync({type:"base64"}).then(e=>{u.file(`ppt/embeddings/Microsoft_Excel_Worksheet${p.globalId}.xlsx`,e,{base64:!0}),u.file("ppt/charts/_rels/"+p.fileName+".rels",''+``+""),u.file("ppt/charts/"+p.fileName,(n=>{let e,t,r,a,o='',i=!1;if(o=(o+='')+``+"",n.opts.showTitle?o=o+be({title:n.opts.title||"Chart Title",color:n.opts.titleColor,fontFace:n.opts.titleFontFace,fontSize:n.opts.titleFontSize||N,titleAlign:n.opts.titleAlign,titleBold:n.opts.titleBold,titlePos:n.opts.titlePos,titleRotate:n.opts.titleRotate},n.opts.x,n.opts.y)+'':o+='',n.opts._type===x.BAR3D&&(o+=``),o+="",n.opts.layout?o=(o=(o=(o=(o=(o=(o=(o+="")+' ')+' ')+' ')+' ')+' ')+' ')+" ":o+="",Array.isArray(n.opts._type)?n.opts._type.forEach(e=>{var t=Object.assign(Object.assign({},n.opts),e.options),r=t.secondaryValAxis?I:h,a=t.secondaryCatAxis?H:g;i=i||t.secondaryValAxis,o+=me(e.type,e.data,t,r,a)}):o+=me(n.opts._type,n.data,n.opts,h,g),n.opts._type!==x.PIE&&n.opts._type!==x.DOUGHNUT){if(n.opts.valAxes&&1{let a="";return a=(a=(a=(a=(a=(a+="")+' ')+' ')+' ')+' ')+("none"!==t.serGridLine.style?xe(t.serGridLine):""),t.showSerAxisTitle&&(a+=be({color:t.serAxisTitleColor,fontFace:t.serAxisTitleFontFace,fontSize:t.serAxisTitleFontSize,titleRotate:t.serAxisTitleRotate,title:t.serAxisTitle||"Axis Title"})),a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a+=` `)+' ')+` `)+' ')+(t.serAxisLineShow?`${Q(t.serAxisLineColor||f.color)}`:"")+' ')+" ")+" ")+" ")+" ")+` `)+` ${Q(t.serAxisLabelColor||d)}`)+` `)+" ")+' ')+" ")+' ',t.serAxisLabelFrequency&&(a+=' '),t.serLabelFormatCode&&(["serAxisBaseTimeUnit","serAxisMajorTimeUnit","serAxisMinorTimeUnit"].forEach(e=>{!t[e]||"string"==typeof t[e]&&["days","months","years"].includes(e.toLowerCase())||(console.warn(`"${e}" must be one of: 'days','months','years' !`),t[e]=null)}),t.serAxisBaseTimeUnit&&(a+=` `),t.serAxisMajorTimeUnit&&(a+=` `),t.serAxisMinorTimeUnit&&(a+=` `),t.serAxisMajorUnit&&(a+=` `),t.serAxisMinorUnit)&&(a+=` `),a+=""})(n.opts,V,h))),null!=(e=n.opts)&&e.catAxes&&null!=(t=n.opts)&&t.catAxes[1]&&(o+=ve(Object.assign(Object.assign({},n.opts),n.opts.catAxes[1]),H,I))}return n.opts.showDataTable&&(o=(o=(o=(o=(o=(o=(o=(o=(o=(o=(o=(o=(o=(o=(o=(o+="")+` `)+` `)+` `)+` `)+" ")+' ')+" ")+' ')+' ')+` `)+' ')+' ')+" ")+' ')+" "),o=(o=(o=(o+=" ")+(null!=(r=n.opts.plotArea.fill)&&r.color?W(n.opts.plotArea.fill):""))+(n.opts.plotArea.border?`${W(n.opts.plotArea.border.color)}`:"")+" ")+" ",n.opts.showLegend&&(o=(o+="")+'',(n.opts.legendFontFace||n.opts.legendFontSize||n.opts.legendColor)&&(o=(o=(o=(o+="")+" ")+" ")+(n.opts.legendFontSize?``:""),n.opts.legendColor&&(o+=W(n.opts.legendColor)),n.opts.legendFontFace&&(o+=''),n.opts.legendFontFace&&(o+=''),o=(o=(o+=" ")+' ')+" "),o+=""),o=(o+=' ')+' ',n.opts._type===x.SCATTER&&(o+=''),o=(o=(o=(o=(o+="")+(null!=(a=n.opts.chartArea.fill)&&a.color?W(n.opts.chartArea.fill):""))+(n.opts.chartArea.border?`${W(n.opts.chartArea.border.color)}`:""))+" ")+''})(p)),t("")}).catch(e=>{r(e)})})})}function me(a,n,o,e,t){let i=-1,s=1;var r=null;let A="";switch(a){case x.AREA:case x.BAR:case x.BAR3D:case x.LINE:case x.RADAR:A+=``,a===x.AREA&&"stacked"===o.barGrouping&&(A+=''),a!==x.BAR&&a!==x.BAR3D||(A=(A+='')+''),a===x.RADAR&&(A+=''),A+='',n.forEach(e=>{i++,A=(A=(A=(A=(A=(A+="")+` `)+" ")+" Sheet1!$"+E(e._dataIndex+e.labels.length+1)+"$1")+' '+z(e.name)+"")+" ";var t=o.chartColors?o.chartColors[i%o.chartColors.length]:null;A+=" ","transparent"===t?A+="":o.chartColorsOpacity?A+=""+Q(t,``)+"":A+=""+Q(t)+"",a===x.LINE||a===x.RADAR?0===o.lineSize?A+="":A=(A+=`${Q(t)}`)+'':o.dataBorder&&(A+=`${Q(o.dataBorder.color)}`),A=(A+=T(o.shadow,l))+' ',a!==x.RADAR&&(A=(A+="")+``,o.dataLabelBkgrdColors&&(A+=`${Q(t)}`),A=(A=(A=(A+="")+``)+`${Q(o.dataLabelColor||d)}`)+``+"",o.dataLabelPosition&&(A+=``),A=(A=(A=(A+='')+``)+``)+``+""),a!==x.LINE&&a!==x.RADAR||(A=(A+="")+' ',o.lineDataSymbolSize&&(A+=``),A=(A=(A=(A+=" ")+` ${Q(o.chartColors[e._dataIndex+1>o.chartColors.length?Math.floor(Math.random()*o.chartColors.length):e._dataIndex])}`)+` ${Q(o.lineDataSymbolLineColor||t)}`+" ")+" "),a!==x.BAR&&a!==x.BAR3D||1!==n.length||!(o.chartColors&&o.chartColors!==q&&1{e=e<0?o.invertedColors||o.chartColors||q:o.chartColors||[];A=(A=(A+=" ")+` `+' ')+' ',0===o.lineSize?A+="":A=a===x.BAR?(A+="")+' ':(A=(A+=" ")+' ')+" ",A=(A+=T(o.shadow,l))+" "}),A+="",o.catLabelFormatCode?(A=(A=(A=(A+=" ")+` Sheet1!$A$2:$A$${e.labels[0].length+1}`+" ")+" "+(o.catLabelFormatCode||"General")+"")+` `,e.labels[0].forEach((e,t)=>A+=`${z(e)}`),A+=" "):1")+` Sheet1!$A$2:$${E(e.labels.length)}$${e.labels[0].length+1}`+" ")+` `,e.labels.forEach(e=>{A+="",e.forEach((e,t)=>A+=`${z(e)}`),A+=""}),A+=" "):(A=(A=(A+=" ")+` Sheet1!$A$2:$A$${e.labels[0].length+1}`+" ")+` `,e.labels[0].forEach((e,t)=>A+=`${z(e)}`),A+=" "),A=(A=(A=(A=A+""+" ")+`Sheet1!$${E(e._dataIndex+e.labels.length+1)}$2:$${E(e._dataIndex+e.labels.length+1)}$${e.labels[0].length+1}`+" ")+" "+(o.valLabelFormatCode||o.dataTableFormatCode||"General")+"")+` `,e.values.forEach((e,t)=>A+=`${e||0===e?e:""}`),A=(A+=" ")+" ",a===x.LINE&&(A+=''),A+=""}),A=(A=(A=(A=(A=(A=(A=(A+=" ")+` `)+" ")+" ")+` `)+" "+Q(o.dataLabelColor||d)+"")+' ')+" ",o.dataLabelPosition&&(A+=' '),A=(A=(A=(A=(A+=' ')+' ')+' ')+' ')+` `+" ",a===x.BAR?A=(A+=` `)+` `:a===x.BAR3D?A=(A=(A+=` `)+` `)+' ':a===x.LINE&&(A+=' '),A+=``,a===x.BAR3D&&(A+=``),A+=``;break;case x.SCATTER:A=(A+="")+''+'',i=-1,n.filter((e,t)=>0{i++,A=(A=(A=(A=(A=(A+="")+` `+` `)+" ")+` Sheet1!$${E(e+2)}$1`)+' '+z(a.name)+" ")+" ";var t=o.chartColors[i%o.chartColors.length];if("transparent"===t?A+="":o.chartColorsOpacity?A+=""+Q(t,'')+"":A+=""+Q(t)+"",0===o.lineSize?A+="":A=(A+=`${Q(t)}`)+``,A=(A=(A+=T(o.shadow,l))+" "+"")+' ',o.lineDataSymbolSize&&(A+=``),A=(A=(A=(A+="")+`${Q(o.chartColors[e+1>o.chartColors.length?Math.floor(Math.random()*o.chartColors.length):e])}`)+`${Q(o.lineDataSymbolLineColor||o.chartColors[i%o.chartColors.length])}`+"")+"",o.showLabel){let r=ne("-xxxx-xxxx-xxxx-xxxxxxxxxxxx");!a.labels[0]||"custom"!==o.dataLabelFormatScatter&&"customXY"!==o.dataLabelFormatScatter||(A+="",a.labels[0].forEach((e,t)=>{"custom"!==o.dataLabelFormatScatter&&"customXY"!==o.dataLabelFormatScatter||(A=(A=(A=(A=(A=(A=(A=(A=(A+=" ")+` `+" ")+" ")+" ")+" ")+" ")+" ")+' ')+" "+z(e)+" ",A=(A=(A=(A=(A=(A="customXY"!==o.dataLabelFormatScatter||/^ *$/.test(e)?A:(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A+=" ")+' ')+" ( ")+' ')+' ')+" ")+" ["+z(a.name)+"")+" ")+' ')+" , ")+' ')+' ')+" ")+" ["+z(a.name)+"]")+" ")+' ')+" ) ")+' ')+" ")+" ")+" ")+" ")+" ",o.dataLabelPosition&&(A+=' '),A=(A=(A=(A=(A=(A=(A+=' ')+' ')+' ')+' ')+' ')+` `+" ")+" ")}),A+=""),"XY"===o.dataLabelFormatScatter&&(A=(A=(A=(A=(A=(A=(A=(A=(A=(A+=" ")+" ")+" ")+" ")+" ")+" ")+" ")+" ")+' ')+" ",o.dataLabelPosition&&(A+=' '),A=(A=(A=(A=(A=(A=(A=(A+=' ')+` `)+` `)+` `)+' ')+' ')+' ')+" ")}1===n.length&&o.chartColors!==q&&a.values.forEach((e,t)=>{e=e<0?o.invertedColors||o.chartColors||q:o.chartColors||[];A=(A=(A+=" ")+` `+' ')+' ',0===o.lineSize?A+="":A=(A+="")+' ',A=(A+=T(o.shadow,l))+" "}),A=(A=(A=(A+=" ")+` Sheet1!$A$2:$A$${n[0].values.length+1}`)+" General")+` `,n[0].values.forEach((e,t)=>{A+=`${e||0===e?e:""}`}),A=(A=(A=(A=(A=(A+=" ")+" ")+" ")+` Sheet1!$${E(e+2)}$2:$${E(e+2)}$${n[0].values.length+1}`)+" General")+` `,n[0].values.forEach((e,t)=>{A+=`${a.values[t]||0===a.values[t]?a.values[t]:""}`}),A=(A=(A+=" ")+" ")+''}),A=(A=(A=(A=(A=(A=(A=(A+=" ")+` `)+" ")+" ")+` `)+" "+Q(o.dataLabelColor||d)+"")+' ')+" ",o.dataLabelPosition&&(A+=' '),A=(A=(A=(A+=' ')+' ')+' ')+' ',A=(A+=``)+("");break;case x.BUBBLE:case x.BUBBLE3D:A=A+""+'',i=-1,n.filter((e,t)=>0{i++,A=(A=(A=(A=(A=(A+="")+` `+` `)+" ")+" Sheet1!$"+E(s+1)+"$1")+' '+z(r.name)+" ")+" ";e=o.chartColors[i%o.chartColors.length];"transparent"===e?A+="":o.chartColorsOpacity?A+=`${Q(e,'')}`:A+=""+Q(e)+"",0===o.lineSize?A+="":o.dataBorder?A+=`${Q(o.dataBorder.color)}`:A=(A+=`${Q(e)}`)+``,A=A+T(o.shadow,l)+"",A=(A=(A=(A+=" ")+` Sheet1!$A$2:$A$${n[0].values.length+1}`)+" General")+` `,n[0].values.forEach((e,t)=>{A+=`${e||0===e?e:""}`}),A=(A=(A=(A+=" ")+" ")+" ")+`Sheet1!$${E(s+1)}$2:$${E(s+1)}$${n[0].values.length+1}`,s++,A=(A+=" General")+` `,n[0].values.forEach((e,t)=>{A+=`${r.values[t]||0===r.values[t]?r.values[t]:""}`}),A=(A=(A=(A+=" ")+" ")+" ")+`Sheet1!$${E(s+1)}$2:$${E(s+1)}$${r.sizes.length+1}`,s++,A=(A+=" General")+` `,r.sizes.forEach((e,t)=>{A+=`${e||""}`}),A=(A=(A+=" ")+" ")+' '}),A=(A=(A=(A=(A+="")+``+"")+``)+`${Q(o.dataLabelColor||d)}`)+``+"",o.dataLabelPosition&&(A+=``),A=(A=(A=(A=(A=(A=(A+='')+``)+``)+' ')+' ')+"")+``+"";break;case x.DOUGHNUT:case x.PIE:r=n[0],A=(A=(A=(A=(A=(A=(A=(A=(A=A+("")+' ')+""+' ')+' '+" ")+" "+" Sheet1!$B$1")+" "+' ')+(' '+z(r.name)+""))+" "+" ")+" "+" ")+' '+' ',o.dataNoEffects?A+="":A+=T(o.shadow,l),A+=" ",r.labels[0].forEach((e,t)=>{A=(A=(A=A+""+` `)+' ')+`${Q(o.chartColors[t+1>o.chartColors.length?Math.floor(Math.random()*o.chartColors.length):t])}`,o.dataBorder&&(A+=`${Q(o.dataBorder.color)}`),A=(A+=T(o.shadow,l))+" "}),A+="",r.labels[0].forEach((e,t)=>{A=(A=(A=(A=(A=(A=(A=A+""+` `)+` `+" ")+" ")+` `)+" "+Q(o.dataLabelColor||d)+"")+` `+" ")+" ",a===x.PIE&&o.dataLabelPosition&&(A+=``),A=(A=(A=(A=(A=(A+=' ')+' ')+' ')+' ')+' ')+' '}),A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=A+` `+" ")+" "+" ")+" "+" ")+` `+' ')+" "+" ")+" "+" ")+(a===x.PIE?'':""))+' '+' ')+' '+' ')+' '+' ')+` `+"")+""+" ")+` Sheet1!$A$2:$A$${r.labels[0].length+1}`+" ")+` `,r.labels[0].forEach((e,t)=>{A+=`${z(e)}`}),A=(A=(A=(A=(A+=" ")+" "+"")+" "+" ")+` Sheet1!$B$2:$B$${r.labels[0].length+1}`+" ")+` `,r.values.forEach((e,t)=>{A+=`${e||0===e?e:""}`}),A=(A=(A=A+" "+" ")+" "+" ")+` `,a===x.DOUGHNUT&&(A+=``),A+="";break;default:A+=""}return A}function ve(t,e,r){let a="";return t._type===x.SCATTER||t._type===x.BUBBLE||t._type===x.BUBBLE3D?a+="":a+="",a=(a=a+(' ')+" ")+(''),!t.catAxisMaxVal&&0!==t.catAxisMaxVal||(a+=``),!t.catAxisMinVal&&0!==t.catAxisMinVal||(a+=``),a=(a=(a=(a+="")+(' '))+(' '))+("none"!==t.catGridLine.style?xe(t.catGridLine):""),t.showCatAxisTitle&&(a+=be({color:t.catAxisTitleColor,fontFace:t.catAxisTitleFontFace,fontSize:t.catAxisTitleFontSize,titleRotate:t.catAxisTitleRotate,title:t.catAxisTitle||"Axis Title"})),t._type===x.SCATTER||t._type===x.BUBBLE||t._type===x.BUBBLE3D?a+=' ':a+=' ',a=t._type===x.SCATTER?(a+=' ')+' ':(a=(a+=' ')+' ')+' ',a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a+=" ")+` `)+(t.catAxisLineShow?""+Q(t.catAxisLineColor||f.color)+"":""))+(' '))+" "+" ")+" "+" ")+(t.catAxisLabelRotate?``:"")+" ")+" "+" ")+` `)+(" "+Q(t.catAxisLabelColor||d)+""))+(' '))+" "+" ")+(' ')+" ")+" "+(' '))+` `)+' '+' ')+` `,t.catAxisLabelFrequency&&(a+=' '),(t.catLabelFormatCode||t._type===x.SCATTER||t._type===x.BUBBLE||t._type===x.BUBBLE3D)&&(t.catLabelFormatCode&&(["catAxisBaseTimeUnit","catAxisMajorTimeUnit","catAxisMinorTimeUnit"].forEach(e=>{!t[e]||"string"==typeof t[e]&&["days","months","years"].includes(t[e].toLowerCase())||(console.warn(`"${e}" must be one of: 'days','months','years' !`),t[e]=null)}),t.catAxisBaseTimeUnit&&(a+=''),t.catAxisMajorTimeUnit&&(a+=''),t.catAxisMinorTimeUnit)&&(a+=''),t.catAxisMajorUnit&&(a+=``),t.catAxisMinorUnit)&&(a+=``),t._type===x.SCATTER||t._type===x.BUBBLE||t._type===x.BUBBLE3D?a+="":a+="",a}function ye(e,t){let r=t===h?"col"===e.barDir?"l":"b":"col"!==e.barDir?"r":"t";t===I&&(r="r");var a=t===h?g:H;let n="";return n=(n+="")+(' ')+" ",e.valAxisLogScaleBase&&(n+=``),n+='',!e.valAxisMaxVal&&0!==e.valAxisMaxVal||(n+=``),!e.valAxisMinVal&&0!==e.valAxisMinVal||(n+=``),n=(n=(n+=" ")+` `)+(' '),"none"!==e.valGridLine.style&&(n+=xe(e.valGridLine)),e.showValAxisTitle&&(n+=be({color:e.valAxisTitleColor,fontFace:e.valAxisTitleFontFace,fontSize:e.valAxisTitleFontSize,titleRotate:e.valAxisTitleRotate,title:e.valAxisTitle||"Axis Title"})),n+=``,n=e._type===x.SCATTER?(n+=' ')+' ':(n=(n+=' ')+' ')+' ',n=(n=(n=(n=(n=(n=(n=(n=(n=(n=(n=(n=(n=(n+=" ")+` `)+(e.valAxisLineShow?""+Q(e.valAxisLineColor||f.color)+"":""))+(' '))+" "+" ")+" "+" ")+` `+" ")+" "+" ")+` `)+(" "+Q(e.valAxisLabelColor||d)+""))+(' '))+" "+" ")+(' ')+" ")+" "+(' '),"number"==typeof e.catAxisCrossesAt?n+=` `:"string"==typeof e.catAxisCrossesAt?n+=' ':(t="r"===r||"t"===r,n+=' '),n+=' ',e.valAxisMajorUnit&&(n+=` `),e.valAxisDisplayUnit&&(n+=`${e.valAxisDisplayUnitLabel?"":""}`),n+=""}function be(r,a,n){var e="left"===r.titleAlign||"right"===r.titleAlign?``:"",t=r.titleRotate?``:"",o=r.fontSize?`sz="${Math.round(100*r.fontSize)}"`:"",i=r.titleBold?1:0;let s="";if(r.titlePos&&"number"==typeof r.titlePos.x&&"number"==typeof r.titlePos.y){a=r.titlePos.x+a,n=r.titlePos.y+n;let e=0===a?0:a*(a/5)/10,t=(1<=e&&(e/=10),.1<=e&&(e/=10),0===n?0:n*(n/5)/10);1<=t&&(t/=10),.1<=t&&(t/=10),s=``}return` ${t} @@ -8,35 +8,35 @@ ${e} - ${j(r.color||d)} + ${Q(r.color||d)} - ${j(r.color||d)} + ${Q(r.color||d)} - ${O(r.title)||""} + ${z(r.title)||""}
${s} - `}function E(e){let t="";e-=1;return t=e<=25?r[e]:""+r[Math.floor(e/r.length-1)]+r[e%r.length]}function T(e,t){var r,a,n,o,i,s;return e?"object"!=typeof e?(console.warn("`shadow` options must be an object. Ex: `{shadow: {type:'none'}}`"),""):(r="",e=(t=Object.assign(Object.assign({},t),e)).type||"outer",a=z(t.blur),n=z(t.offset),o=Math.round(6e4*t.angle),i=t.color,s=Math.round(1e5*t.opacity),(r=(r+=``)+``+``)+``+""):""}function we(e){var t="";return(t+=" ")+` `+(' ')+(' ')+" "+" "+""}function xe(e){if(e&&"flat"!==e){if("square"===e)return"sq";if("round"===e)return"rnd";throw new Error("Invalid chart line cap: "+e)}return"flat"}function Ce(e){let t,r,a="undefined"!=typeof process&&!(null==(t=process.versions)||!t.node)&&"node"===(null==(r=process.release)?void 0:r.name),o,i,s=a?()=>c(this,void 0,void 0,function*(){({default:o}=yield import("node:fs")),{default:i}=yield import("node:https")}):()=>c(this,void 0,void 0,function*(){}),A=(a&&s(),[]),l=e._relsMedia.filter(e=>!("online"===e.type||e.data||e.path&&(e.path,e.path.includes("preencoded")))),n=[];return l.forEach(e=>{n.includes(e.path)?e.isDuplicate=!0:(e.isDuplicate=!1,n.push(e.path))}),l.filter(e=>!e.isDuplicate).forEach(n=>{A.push(c(this,void 0,void 0,function*(){if(i||(yield s()),a&&o&&0!==n.path.indexOf("http"))try{var e=o.readFileSync(n.path);return n.data=Buffer.from(e).toString("base64"),l.filter(e=>e.isDuplicate&&e.path===n.path).forEach(e=>e.data=n.data),"done"}catch(e){throw n.data=P,l.filter(e=>e.isDuplicate&&e.path===n.path).forEach(e=>e.data=n.data),new Error(`ERROR: Unable to read media: "${n.path}" -`+String(e))}return a&&i&&n.path.startsWith("http")?yield new Promise((r,a)=>{i.get(n.path,e=>{let t="";e.setEncoding("binary"),e.on("data",e=>t+=e),e.on("end",()=>{n.data=Buffer.from(t,"binary").toString("base64"),l.filter(e=>e.isDuplicate&&e.path===n.path).forEach(e=>e.data=n.data),r("done")}),e.on("error",()=>{n.data=P,l.filter(e=>e.isDuplicate&&e.path===n.path).forEach(e=>e.data=n.data),a(new Error("ERROR! Unable to load image (https.get): "+n.path))})})}):yield new Promise((t,r)=>{let a=new XMLHttpRequest;a.onload=()=>{let e=new FileReader;e.onloadend=()=>{n.data=e.result,l.filter(e=>e.isDuplicate&&e.path===n.path).forEach(e=>e.data=n.data),n.isSvgPng?Pe(n).then(()=>t("done")).catch(r):t("done")},e.readAsDataURL(a.response)},a.onerror=()=>{n.data=P,l.filter(e=>e.isDuplicate&&e.path===n.path).forEach(e=>e.data=n.data),r(new Error("ERROR! Unable to load image (xhr.onerror): "+n.path))},a.open("GET",n.path),a.responseType="blob",a.send()})}))}),e._relsMedia.filter(e=>e.isSvgPng&&e.data).forEach(e=>{c(this,void 0,void 0,function*(){a&&!o&&(yield s()),a&&o?(e.data=P,A.push(Promise.resolve("done"))):A.push(Pe(e))})}),A}function Pe(n){return c(this,void 0,void 0,function*(){return yield new Promise((r,e)=>{let a=new Image;a.onload=()=>{a.width+a.height===0&&a.onerror("h/w=0");let e=document.createElement("CANVAS");var t=e.getContext("2d");e.width=a.width,e.height=a.height,t.drawImage(a,0,0);try{n.data=e.toDataURL(n.type),r("done")}catch(e){a.onerror(e.toString())}e=null},a.onerror=()=>{n.data=P,e(new Error("ERROR! Unable to load image (image.onerror): "+n.path))},a.src="string"==typeof n.data?n.data:P})})}let Se={cover:function(e,t){var e=e.h/e.w,r=e`},contain:function(e,t){var e=e.h/e.w,r=e`},crop:function(e,t){var r=t.x,a=e.w-(t.x+t.w),n=t.y,t=e.h-(t.y+t.h);return``}};function Le(k){let e,_=k._name?'':"",N=1;return k._bkgdImgRid?_+=``:null!=(e=k.background)&&e.color?_+=`${G(k.background)}`:!k.bkgd&&k._name&&k._name===t&&(_+=''),_=(_=_+""+'')+''+'',k._slideObjects.forEach((a,e)=>{let t,r,n,o,i,s,A,l,c=0,p=0,u=R("75%","X",k._presLayout),f=0,d,h="",g=null,m,v=0,y=0,b,w=null;var x,C,P,S,L=null==(t=a.options)?void 0:t.sizing,E=null==(r=a.options)?void 0:r.rounding;void 0!==k._slideLayout&&void 0!==k._slideLayout._slideObjects&&a.options&&a.options.placeholder&&(d=k._slideLayout._slideObjects.filter(e=>e.options.placeholder===a.options.placeholder)[0]),a.options=a.options||{},void 0!==a.options.x&&(c=R(a.options.x,"X",k._presLayout)),void 0!==a.options.y&&(p=R(a.options.y,"Y",k._presLayout)),void 0!==a.options.w&&(u=R(a.options.w,"X",k._presLayout)),void 0!==a.options.h&&(f=R(a.options.h,"Y",k._presLayout));let T=u,B=f;switch(d&&(!d.options.x&&0!==d.options.x||(c=R(d.options.x,"X",k._presLayout)),!d.options.y&&0!==d.options.y||(p=R(d.options.y,"Y",k._presLayout)),!d.options.w&&0!==d.options.w||(u=R(d.options.w,"X",k._presLayout)),!d.options.h&&0!==d.options.h||(f=R(d.options.h,"Y",k._presLayout))),a.options.flipH&&(h+=' flipH="1"'),a.options.flipV&&(h+=' flipV="1"'),a.options.rotate&&(h+=` rot="${U(a.options.rotate)}"`),a._type){case I.table:if(g=a.arrTabRows,m=a.options,v=0,y=0,g[0].forEach(e=>{b=e.options||null,v+=null!==b&&(b,1)&&b.colspan?Number(b.colspan):1}),w=``,w=(w+=' ')+``+'',Array.isArray(m.colW)){w+="";for(let t=0;t`}}else{y=m.colW||F,a.options.w&&!m.colW&&(y=Math.round(("number"==typeof a.options.w?a.options.w:1)/v)),w+="";for(let e=0;e`}w+="",g.forEach(r=>{for(let t=0;t({_type:I.tablecell,options:{rowspan:e},_hmerge:!0})),r.splice(t+1,0,...a),t+=n):t+=1}}),g.forEach((e,t)=>{let n=g[t+1];n&&e.forEach((e,t)=>{var r=e._rowContinue||(null==(r=e.options)?void 0:r.rowspan),a=null==(a=e.options)?void 0:a.colspan;r&&1{let r=0;Array.isArray(m.rowH)&&m.rowH[t]?r=M(Number(m.rowH[t])):m.rowH&&!isNaN(Number(m.rowH))?r=M(Number(m.rowH)):(a.options.cy||a.options.h)&&(r=Math.round((a.options.h?M(a.options.h):"number"==typeof a.options.cy?a.options.cy:1)/g.length)),w+=``,e.forEach(a=>{let t={rowSpan:1<(null==(o=a.options)?void 0:o.rowspan)?a.options.rowspan:void 0,gridSpan:1<(null==(o=a.options)?void 0:o.colspan)?a.options.colspan:void 0,vMerge:a._vmerge?1:void 0,hMerge:a._hmerge?1:void 0},n=Object.keys(t).map(e=>[e,t[e]]).filter(([,e])=>!!e).map(([e,t])=>`${String(e)}="${String(t)}"`).join(" ");if(n=n&&" "+n,a._hmerge||a._vmerge)w+=``;else{let t=a.options||{};a.options=t,["align","bold","border","color","fill","fontFace","fontSize","margin","textDirection","underline","valign"].forEach(e=>{m[e]&&!t[e]&&0!==t[e]&&(t[e]=m[e])});var o=t.valign?` anchor="${t.valign.replace(/^c$/i,"ctr").replace(/^m$/i,"ctr").replace("center","ctr").replace("middle","ctr").replace("top","t").replace("btm","b").replace("bottom","b")}"`:"",i=t.textDirection&&"horz"!==t.textDirection?` vert="${t.textDirection}"`:"",s=(s=(null!=(s=null==(s=a._optImp)?void 0:s.fill)&&s.color?a._optImp.fill.color:null!=(s=a._optImp)&&s.fill&&"string"==typeof a._optImp.fill?a._optImp.fill:"")||t.fill?t.fill:"")?G(s):"";let e=0===t.margin||t.margin?t.margin:Q,r=(Array.isArray(e)||"number"!=typeof e||(e=[e,e,e,e]),"");r=1<=e[0]?` marL="${z(e[3])}" marR="${z(e[1])}" marT="${z(e[0])}" marB="${z(e[2])}"`:` marL="${M(e[3])}" marR="${M(e[1])}" marT="${M(e[0])}" marB="${M(e[2])}"`,w+=`${De(a)}`,t.border&&Array.isArray(t.border)&&[{idx:3,name:"lnL"},{idx:1,name:"lnR"},{idx:0,name:"lnT"},{idx:2,name:"lnB"}].forEach(e=>{"none"!==t.border[e.idx].type?w=(w=(w=(w+=``)+`${j(t.border[e.idx].color)}`)+``)+``:w+=``}),w=(w+=s)+" "+" "}}),w+=""}),w=(w=w+" "+" ")+" "+"",_+=w,N++;break;case I.text:case I.placeholder:if(a.options.line||0!==f||(f=.3*F),a.options._bodyProp||(a.options._bodyProp={}),a.options.margin&&Array.isArray(a.options.margin)?(a.options._bodyProp.lIns=z(a.options.margin[0]||0),a.options._bodyProp.rIns=z(a.options.margin[1]||0),a.options._bodyProp.bIns=z(a.options.margin[2]||0),a.options._bodyProp.tIns=z(a.options.margin[3]||0)):"number"==typeof a.options.margin&&(a.options._bodyProp.lIns=z(a.options.margin),a.options._bodyProp.rIns=z(a.options.margin),a.options._bodyProp.bIns=z(a.options.margin),a.options._bodyProp.tIns=z(a.options.margin)),_=(_+="")+``,null!=(n=a.options.hyperlink)&&n.url&&(_+=``),null!=(o=a.options.hyperlink)&&o.slide&&(_+=``),_=(_=(_=(_=(_=(_+="")+("':"/>")))+`${ke("placeholder"===a._type?a:d)}`+"")+``)+``)+``,"custGeom"===a.shape)_=(_=(_=(_=(_+="")+"")+"")+'')+``,null!=(s=a.options.points)&&s.forEach((e,t)=>{if("curve"in e)switch(e.curve.type){case"arc":_+=``;break;case"cubic":_+=` - - - - `;break;case"quadratic":_+=` - - - `}else"close"in e?_+="":e.moveTo||0===t?_+=``:_+=``}),_=(_+="")+"";else{if(_+='',a.options.rectRadius)_+=``;else if(a.options.angleRange){for(let e=0;e<2;e++){var D=a.options.angleRange[e];_+=``}a.options.arcThicknessRatio&&(_+=``)}_+=""}_+=a.options.fill?G(a.options.fill):"",a.options.line&&(_+=a.options.line.width?``:"",a.options.line.color&&(_+=G(a.options.line)),a.options.line.dashType&&(_+=``),a.options.line.beginArrowType&&(_+=``),a.options.line.endArrowType&&(_+=``),_+=""),a.options.shadow&&"none"!==a.options.shadow.type&&(a.options.shadow.type=a.options.shadow.type||"outer",a.options.shadow.blur=z(a.options.shadow.blur||8),a.options.shadow.offset=z(a.options.shadow.offset||4),a.options.shadow.angle=Math.round(6e4*(a.options.shadow.angle||270)),a.options.shadow.opacity=Math.round(1e5*(a.options.shadow.opacity||.75)),a.options.shadow.color=a.options.shadow.color||W.color,_=(_=(_=(_=(_+="")+` `)+` `)+` `)+" "),_=(_+="")+De(a)+"";break;case I.image:_=(_=_+""+" ")+``,null!=(A=a.hyperlink)&&A.url&&(_+=``),null!=(l=a.hyperlink)&&l.slide&&(_+=``),_=(_=(_=_+" "+' ')+(" "+ke(d)+""))+" "+"",_=(k._relsMedia||[]).filter(e=>e.rId===a.imageRid)[0]&&"svg"===(k._relsMedia||[]).filter(e=>e.rId===a.imageRid)[0].extn?(_=(_=(_=(_+=``)+(a.options.transparency?` `:""))+' ')+` `+" ")+" ":(_+=``)+(a.options.transparency?``:"")+"",null!=L&&L.type?(x=L.w?R(L.w,"X",k._presLayout):u,C=L.h?R(L.h,"Y",k._presLayout):f,P=R(L.x||0,"X",k._presLayout),S=R(L.y||0,"Y",k._presLayout),_+=Se[L.type]({w:T,h:B},{w:x,h:C,x:P,y:S}),T=x,B=C):_+=" ",_=(_=(_=(_=(_=_+""+"")+(" "))+` `)+` `)+" "+` `,a.options.shadow&&"none"!==a.options.shadow.type&&(a.options.shadow.type=a.options.shadow.type||"outer",a.options.shadow.blur=z(a.options.shadow.blur||8),a.options.shadow.offset=z(a.options.shadow.offset||4),a.options.shadow.angle=Math.round(6e4*(a.options.shadow.angle||270)),a.options.shadow.opacity=Math.round(1e5*(a.options.shadow.opacity||.75)),a.options.shadow.color=a.options.shadow.color||W.color,_=(_=(_=(_=(_+="")+``)+``)+``)+``+""),_=_+""+"";break;case I.media:_="online"===a.mtype?(_=(_=(_=(_=(_=(_=(_+=" ")+``)+" ")+` `)+" ")+` `+" ")+` `+' ')+" ":(_=(_=(_=(_=(_=(_=(_=(_=(_=(_+=" ")+``)+' ')+` `)+' ')+` `)+" ")+" ")+` `+" ")+` `+' ')+" ";break;case I.chart:_=(_=(_=(_=(_=(_=(_=_+""+" ")+` `+" ")+` ${ke(d)}`+" ")+` `)+' '+' ')+` `+" ")+" "+"";break;default:_+=""}}),k._slideNumberProps&&(k._slideNumberProps.align||(k._slideNumberProps.align="left"),_=(_=(_=(_=(_+=" ")+' ')+" ")+""+``+``+' ')+"`,k._slideNumberProps.color&&(_+=G(k._slideNumberProps.color)),k._slideNumberProps.fontFace&&(_+=``),_+=""),_+="",k._slideNumberProps.align.startsWith("l")?_+='':k._slideNumberProps.align.startsWith("c")?_+='':k._slideNumberProps.align.startsWith("r")?_+='':_+='',_=(_+=``)+`${k._slideNum}`+""),_=_+""+""}function Ee(e,t){let r=0,a=''+A+'';return e._rels.forEach(e=>{r=Math.max(r,e.rId),e.type.toLowerCase().includes("hyperlink")?"slide"===e.data?a+=``:a+=``:e.type.toLowerCase().includes("notesSlide")&&(a+=``)}),(e._relsChart||[]).forEach(e=>{r=Math.max(r,e.rId),a+=``}),(e._relsMedia||[]).forEach(e=>{var t=e.rId.toString();r=Math.max(r,e.rId),e.type.toLowerCase().includes("image")?a+='':e.type.toLowerCase().includes("audio")?a.includes(' Target="'+e.Target+'"')?a+='':a+='':e.type.toLowerCase().includes("video")?a.includes(' Target="'+e.Target+'"')?a+='':a+='':e.type.toLowerCase().includes("online")&&(a.includes(' Target="'+e.Target+'"')?a+='':a+='')}),t.forEach((e,t)=>{a+=``}),a+=""}function Te(t,e){let r,a,n="",o="",i="",s="";var A,l=e?"a:lvl1pPr":"a:pPr";let c=z(_),p="<"+l+(t.options.rtlMode?' rtl="1" ':"");if(t.options.align)switch(t.options.align){case"left":p+=' algn="l"';break;case"right":p+=' algn="r"';break;case"center":p+=' algn="ctr"';break;case"justify":p+=' algn="just"';break;default:p+=""}if(t.options.lineSpacing?o=``:t.options.lineSpacingMultiple&&(o=``),t.options.indentLevel&&!isNaN(Number(t.options.indentLevel))&&0`),t.options.paraSpaceAfter&&!isNaN(Number(t.options.paraSpaceAfter))&&0`),"object"==typeof t.options.bullet)if(null!=(a=null==(r=null==t?void 0:t.options)?void 0:r.bullet)&&a.indent&&(c=z(t.options.bullet.indent)),t.options.bullet.type)"number"===t.options.bullet.type.toString().toLowerCase()&&(p+=` marL="${t.options.indentLevel&&0`);else if(t.options.bullet.characterCode){let e=`&#x${t.options.bullet.characterCode};`;/^[0-9A-Fa-f]{4}$/.test(t.options.bullet.characterCode)||(console.warn("Warning: `bullet.characterCode should be a 4-digit unicode charatcer (ex: 22AB)`!"),e=C.DEFAULT),p+=` marL="${t.options.indentLevel&&0'}else if(t.options.bullet.code){let e=`&#x${t.options.bullet.code};`;/^[0-9A-Fa-f]{4}$/.test(t.options.bullet.code)||(console.warn("Warning: `bullet.code should be a 4-digit hex code (ex: 22AB)`!"),e=C.DEFAULT),p+=` marL="${t.options.indentLevel&&0'}else p+=` marL="${t.options.indentLevel&&0`;else n=t.options.bullet?(p+=` marL="${t.options.indentLevel&&0`):(t.options.bullet,p+=' indent="0" marL="0"',"");return t.options.tabStops&&Array.isArray(t.options.tabStops)&&(A=t.options.tabStops.map(e=>``).join(""),s=`${A}`),p+=">"+o+i+n+s,e&&(p+=Be(t.options,!0)),p+=""}function Be(e,t){let r,a="";var n,o,i,t=t?"a:defRPr":"a:rPr";if(a=(a=(a=(a=(a+="<"+t+' lang="'+(e.lang||"en-US")+'"'+(e.lang?' altLang="en-US"':""))+(e.fontSize?` sz="${Math.round(100*e.fontSize)}"`:""))+(null!=e&&e.bold?` b="${e.bold?"1":"0"}"`:""))+(null!=e&&e.italic?` i="${e.italic?"1":"0"}"`:""))+(null!=e&&e.strike?` strike="${"string"==typeof e.strike?e.strike:"sngStrike"}"`:""),"object"==typeof e.underline&&null!=(r=e.underline)&&r.style?a+=` u="${e.underline.style}"`:"string"==typeof e.underline?a+=` u="${String(e.underline)}"`:e.hyperlink&&(a+=' u="sng"'),e.baseline?a+=` baseline="${Math.round(50*e.baseline)}"`:e.subscript?a+=' baseline="-40000"':e.superscript&&(a+=' baseline="30000"'),a=a+(e.charSpacing?` spc="${Math.round(100*e.charSpacing)}" kern="0"`:"")+' dirty="0">',(e.color||e.fontFace||e.outline||"object"==typeof e.underline&&e.underline.color)&&(e.outline&&"object"==typeof e.outline&&(a+=`${G(e.outline.color||"FFFFFF")}`),e.color&&(a+=G({color:e.color,transparency:e.transparency})),e.highlight&&(a+=`${j(e.highlight)}`),"object"==typeof e.underline&&e.underline.color&&(a+=`${G(e.underline.color)}`),e.glow&&(a+=`${n=e.glow,o=Y,i="",o=Object.assign(Object.assign({},o),n),(i+=``)+j(o.color,``)+""}`),e.fontFace)&&(a+=``),e.hyperlink){if("object"!=typeof e.hyperlink)throw new Error("ERROR: text `hyperlink` option should be an object. Ex: `hyperlink:{url:'https://github.com'}` ");if(!e.hyperlink.url&&!e.hyperlink.slide)throw new Error("ERROR: 'hyperlink requires either `url` or `slide`'");e.hyperlink.url?a+=`":"/>"):e.hyperlink.slide&&(a+=`":"/>")),e.color&&(a=(a=(a+=' ')+' ')+" ")}return a+=``}function De(r){let o=r.options||{},e=[],a=[];if(o&&r._type!==I.tablecell&&null==r.text)return"";let i=r._type===I.tablecell?"":"",n=(i+=(e=>{let t="":"resize"===e.options.fit&&(t+="")),e.options.shrinkText&&(t+=""),t=t+(e.options._bodyProp.autoFit?"":"")+""):t+=' wrap="square" rtlCol="0">',e._type===I.tablecell?"":t})(r),0===o.h&&o.line&&o.align?i+='':"placeholder"===r._type?i+=`${Te(r,!0)}`:i+="","string"==typeof r.text||"number"==typeof r.text?e.push({text:r.text.toString(),options:o||{}}):r.text&&!Array.isArray(r.text)&&"object"==typeof r.text&&Object.keys(r.text).includes("text")?e.push({text:r.text||"",options:r.options||{}}):Array.isArray(r.text)&&(e=r.text.map(e=>({text:e.text,options:e.options}))),e.forEach((t,e)=>{t.text||(t.text=""),t.options=t.options||o||{},0===e&&t.options&&!t.options.bullet&&o.bullet&&(t.options.bullet=o.bullet),"string"!=typeof t.text&&"number"!=typeof t.text||(t.text=t.text.toString().replace(/\r*\n/g,A)),t.text.includes(A)&&null===t.text.match(/\n$/g)?t.text.split(A).forEach(e=>{t.options.breakLine=!0,a.push({text:e,options:t.options})}):a.push(t)}),[]),s=[];return a.forEach((e,t)=>{0{let t,a=!1,n=(i+="","{0<(r.options._lineIdx=e)&&r.options.softBreakBefore&&(i+=""),r.options.align=r.options.align||o.align,r.options.lineSpacing=r.options.lineSpacing||o.lineSpacing,r.options.lineSpacingMultiple=r.options.lineSpacingMultiple||o.lineSpacingMultiple,r.options.indentLevel=r.options.indentLevel||o.indentLevel,r.options.paraSpaceBefore=r.options.paraSpaceBefore||o.paraSpaceBefore,r.options.paraSpaceAfter=r.options.paraSpaceAfter||o.paraSpaceAfter,n=Te(r,!1),i+=n.replace("",""),Object.entries(o).filter(([e])=>!(r.options.hyperlink&&"color"===e)).forEach(([e,t])=>{"bullet"===e||r.options[e]||(r.options[e]=t)}),i+=(e=r).text?`${Be(e.options,!1)}${O(e.text)}`:"",(!r.text&&o.fontSize||r.options.fontSize)&&(a=!0,o.fontSize=o.fontSize||r.options.fontSize)}),r._type===I.tablecell&&(o.fontSize||o.fontFace)?o.fontFace?i=(i=(i=(i+=`')+``)+``)+``+"":i+=`':a?i+=`':i+=``,i+=""}),-1===i.indexOf("")&&(i+=""),i+=r._type===I.tablecell?"":""}function ke(e){var t,r;return e?(t=null!=(t=e.options)&&t._placeholderIdx?e.options._placeholderIdx:"",r=(r=null!=(r=e.options)&&r._placeholderType?e.options._placeholderType:"")&&re[r]?re[r].toString():"",``}function E(e){let t="";e-=1;return t=e<=25?r[e]:""+r[Math.floor(e/r.length-1)]+r[e%r.length]}function T(e,t){var r,a,n,o,i,s;return e?"object"!=typeof e?(console.warn("`shadow` options must be an object. Ex: `{shadow: {type:'none'}}`"),""):(r="",e=(t=Object.assign(Object.assign({},t),e)).type||"outer",a=j(t.blur),n=j(t.offset),o=Math.round(6e4*t.angle),i=t.color,s=Math.round(1e5*t.opacity),(r=(r+=``)+``+``)+``+""):""}function xe(e){var t="";return(t+=" ")+` `+(' ')+(' ')+" "+" "+""}function we(e){if(e&&"flat"!==e){if("square"===e)return"sq";if("round"===e)return"rnd";throw new Error("Invalid chart line cap: "+e)}return"flat"}function Ce(e){let t,r,a="undefined"!=typeof process&&!(null==(t=process.versions)||!t.node)&&"node"===(null==(r=process.release)?void 0:r.name),o,i,s=a?()=>c(this,void 0,void 0,function*(){({default:o}=yield import("node:fs")),{default:i}=yield import("node:https")}):()=>c(this,void 0,void 0,function*(){}),A=(a&&s(),[]),l=e._relsMedia.filter(e=>!("online"===e.type||e.data||e.path&&(e.path,e.path.includes("preencoded")))),n=[];return l.forEach(e=>{n.includes(e.path)?e.isDuplicate=!0:(e.isDuplicate=!1,n.push(e.path))}),l.filter(e=>!e.isDuplicate).forEach(n=>{A.push(c(this,void 0,void 0,function*(){if(i||(yield s()),a&&o&&0!==n.path.indexOf("http"))try{var e=o.readFileSync(n.path);return n.data=Buffer.from(e).toString("base64"),l.filter(e=>e.isDuplicate&&e.path===n.path).forEach(e=>e.data=n.data),"done"}catch(e){throw n.data=P,l.filter(e=>e.isDuplicate&&e.path===n.path).forEach(e=>e.data=n.data),new Error(`ERROR: Unable to read media: "${n.path}" +`+String(e))}return a&&i&&n.path.startsWith("http")?yield new Promise((r,a)=>{i.get(n.path,e=>{let t="";e.setEncoding("binary"),e.on("data",e=>t+=e),e.on("end",()=>{n.data=Buffer.from(t,"binary").toString("base64"),l.filter(e=>e.isDuplicate&&e.path===n.path).forEach(e=>e.data=n.data),r("done")}),e.on("error",()=>{n.data=P,l.filter(e=>e.isDuplicate&&e.path===n.path).forEach(e=>e.data=n.data),a(new Error("ERROR! Unable to load image (https.get): "+n.path))})})}):yield new Promise((t,r)=>{let a=new XMLHttpRequest;a.onload=()=>{let e=new FileReader;e.onloadend=()=>{n.data=e.result,l.filter(e=>e.isDuplicate&&e.path===n.path).forEach(e=>e.data=n.data),n.isSvgPng?Pe(n).then(()=>t("done")).catch(r):t("done")},e.readAsDataURL(a.response)},a.onerror=()=>{n.data=P,l.filter(e=>e.isDuplicate&&e.path===n.path).forEach(e=>e.data=n.data),r(new Error("ERROR! Unable to load image (xhr.onerror): "+n.path))},a.open("GET",n.path),a.responseType="blob",a.send()})}))}),e._relsMedia.filter(e=>e.isSvgPng&&e.data).forEach(e=>{c(this,void 0,void 0,function*(){a&&!o&&(yield s()),a&&o?(e.data=P,A.push(Promise.resolve("done"))):A.push(Pe(e))})}),A}function Pe(n){return c(this,void 0,void 0,function*(){return yield new Promise((r,e)=>{let a=new Image;a.onload=()=>{a.width+a.height===0&&a.onerror("h/w=0");let e=document.createElement("CANVAS");var t=e.getContext("2d");e.width=a.width,e.height=a.height,t.drawImage(a,0,0);try{n.data=e.toDataURL(n.type),r("done")}catch(e){a.onerror(e.toString())}e=null},a.onerror=()=>{n.data=P,e(new Error("ERROR! Unable to load image (image.onerror): "+n.path))},a.src="string"==typeof n.data?n.data:P})})}function Se(e){let t,r,a,n="",o=18;Array.isArray(e.text)?e.text.forEach(e=>{var t;"string"==typeof e?n+=e:e.text&&(n+=e.text,null!=(t=e.options))&&t.fontSize&&(o=e.options.fontSize)}):"string"==typeof e.text&&(n=e.text),null!=(t=e.options)&&t.fontSize&&(o=e.options.fontSize);var i,s,A="number"==typeof(null==(r=e.options)?void 0:r.w)?e.options.w:0,e="number"==typeof(null==(a=e.options)?void 0:a.h)?e.options.h:0;return n&&0!==A&&0!==e?(e=72*e,A=Math.max(72*A-14,10),e=Math.max(e-14,10),s=.55*o,i=1.2*o,A=Math.max(Math.floor(A/s),1),s=n.length,(s=Math.ceil(s/A)*i)<=e?95e3:(A=Math.sqrt(e/s),Math.max(25e3,Math.min(1e5,Math.round(1e5*A))))):75e3}let Le={cover:function(e,t){var e=e.h/e.w,r=e`},contain:function(e,t){var e=e.h/e.w,r=e`},crop:function(e,t){var r=t.x,a=e.w-(t.x+t.w),n=t.y,t=e.h-(t.y+t.h);return``}};function Ee(N){let e,F=N._name?'':"",I=1;return N._bkgdImgRid?F+=``:null!=(e=N.background)&&e.color?F+=`${W(N.background)}`:!N.bkgd&&N._name&&N._name===t&&(F+=''),F=(F=F+""+'')+''+'',N._slideObjects.forEach((a,e)=>{let t,r,n,o,i,s,A,l,c,p,u=0,f=0,d=M("75%","X",N._presLayout),h=0,g,m="",v=null,y,b=0,x=0,w,C=null;var P,S,L,E=null==(t=a.options)?void 0:t.sizing,T=null==(r=a.options)?void 0:r.rounding;void 0!==N._slideLayout&&void 0!==N._slideLayout._slideObjects&&a.options&&a.options.placeholder&&(g=N._slideLayout._slideObjects.filter(e=>e.options.placeholder===a.options.placeholder)[0]),a.options=a.options||{},void 0!==a.options.x&&(u=M(a.options.x,"X",N._presLayout)),void 0!==a.options.y&&(f=M(a.options.y,"Y",N._presLayout)),void 0!==a.options.w&&(d=M(a.options.w,"X",N._presLayout)),void 0!==a.options.h&&(h=M(a.options.h,"Y",N._presLayout));let B=d,D=h;switch(g&&(!g.options.x&&0!==g.options.x||(u=M(g.options.x,"X",N._presLayout)),!g.options.y&&0!==g.options.y||(f=M(g.options.y,"Y",N._presLayout)),!g.options.w&&0!==g.options.w||(d=M(g.options.w,"X",N._presLayout)),!g.options.h&&0!==g.options.h||(h=M(g.options.h,"Y",N._presLayout))),a.options.flipH&&(m+=' flipH="1"'),a.options.flipV&&(m+=' flipV="1"'),a.options.rotate&&(m+=` rot="${G(a.options.rotate)}"`),a._type){case O.table:if(v=a.arrTabRows,y=a.options,b=0,x=0,v[0].forEach(e=>{w=e.options||null,b+=null!==w&&(w,1)&&w.colspan?Number(w.colspan):1}),C=``,C=(C+=' ')+``+'',Array.isArray(y.colW)){C+="";for(let t=0;t`}}else{x=y.colW||R,a.options.w&&!y.colW&&(x=Math.round(("number"==typeof a.options.w?a.options.w:1)/b)),C+="";for(let e=0;e`}C+="",v.forEach(r=>{for(let t=0;t({_type:O.tablecell,options:{rowspan:e},_hmerge:!0})),r.splice(t+1,0,...a),t+=n):t+=1}}),v.forEach((e,t)=>{let n=v[t+1];n&&e.forEach((e,t)=>{var r=e._rowContinue||(null==(r=e.options)?void 0:r.rowspan),a=null==(a=e.options)?void 0:a.colspan;r&&1{let r=0;Array.isArray(y.rowH)&&y.rowH[t]?r=U(Number(y.rowH[t])):y.rowH&&!isNaN(Number(y.rowH))?r=U(Number(y.rowH)):(a.options.cy||a.options.h)&&(r=Math.round((a.options.h?U(a.options.h):"number"==typeof a.options.cy?a.options.cy:1)/v.length)),C+=``,e.forEach(a=>{let t={rowSpan:1<(null==(o=a.options)?void 0:o.rowspan)?a.options.rowspan:void 0,gridSpan:1<(null==(o=a.options)?void 0:o.colspan)?a.options.colspan:void 0,vMerge:a._vmerge?1:void 0,hMerge:a._hmerge?1:void 0},n=Object.keys(t).map(e=>[e,t[e]]).filter(([,e])=>!!e).map(([e,t])=>`${String(e)}="${String(t)}"`).join(" ");if(n=n&&" "+n,a._hmerge||a._vmerge)C+=``;else{let t=a.options||{};a.options=t,["align","bold","border","color","fill","fontFace","fontSize","margin","textDirection","underline","valign"].forEach(e=>{y[e]&&!t[e]&&0!==t[e]&&(t[e]=y[e])});var o=t.valign?` anchor="${t.valign.replace(/^c$/i,"ctr").replace(/^m$/i,"ctr").replace("center","ctr").replace("middle","ctr").replace("top","t").replace("btm","b").replace("bottom","b")}"`:"",i=t.textDirection&&"horz"!==t.textDirection?` vert="${t.textDirection}"`:"",s=(s=(null!=(s=null==(s=a._optImp)?void 0:s.fill)&&s.color?a._optImp.fill.color:null!=(s=a._optImp)&&s.fill&&"string"==typeof a._optImp.fill?a._optImp.fill:"")||t.fill?t.fill:"")?W(s):"";let e=0===t.margin||t.margin?t.margin:Y,r=(Array.isArray(e)||"number"!=typeof e||(e=[e,e,e,e]),"");r=1<=e[0]?` marL="${j(e[3])}" marR="${j(e[1])}" marT="${j(e[0])}" marB="${j(e[2])}"`:` marL="${U(e[3])}" marR="${U(e[1])}" marT="${U(e[0])}" marB="${U(e[2])}"`,C+=`${ke(a)}`,t.border&&Array.isArray(t.border)&&[{idx:3,name:"lnL"},{idx:1,name:"lnR"},{idx:0,name:"lnT"},{idx:2,name:"lnB"}].forEach(e=>{"none"!==t.border[e.idx].type?C=(C=(C=(C+=``)+`${Q(t.border[e.idx].color)}`)+``)+``:C+=``}),C=(C+=s)+" "+" "}}),C+=""}),C=(C=C+" "+" ")+" "+"",F+=C,I++;break;case O.text:case O.placeholder:a.options.line||0!==h||(h=.3*R),a.options._bodyProp||(a.options._bodyProp={}),a.options.margin&&Array.isArray(a.options.margin)?(a.options._bodyProp.lIns=j(a.options.margin[0]||0),a.options._bodyProp.rIns=j(a.options.margin[1]||0),a.options._bodyProp.bIns=j(a.options.margin[2]||0),a.options._bodyProp.tIns=j(a.options.margin[3]||0)):"number"==typeof a.options.margin&&(a.options._bodyProp.lIns=j(a.options.margin),a.options._bodyProp.rIns=j(a.options.margin),a.options._bodyProp.bIns=j(a.options.margin),a.options._bodyProp.tIns=j(a.options.margin)),F=(F+="")+``,null!=(n=a.options.hyperlink)&&n.url&&(F+=``),null!=(o=a.options.hyperlink)&&o.slide&&(F+=``),F+="";var k=(null==(i=a.options)?void 0:i.isTextBox)||"shrink"===(null==(s=a.options)?void 0:s.fit)||(null==(A=a.options)?void 0:A.shrinkText);if(F=(F=(F=(F=(F+="':"/>"))+`${_e("placeholder"===a._type?a:g)}`+"")+``)+``)+``,"custGeom"===a.shape)F=(F=(F=(F=(F+="")+"")+"")+'')+``,null!=(l=a.options.points)&&l.forEach((e,t)=>{if("curve"in e)switch(e.curve.type){case"arc":F+=``;break;case"cubic":F+=` + + + + `;break;case"quadratic":F+=` + + + `}else"close"in e?F+="":e.moveTo||0===t?F+=``:F+=``}),F=(F+="")+"";else{if(F+='',a.options.rectRadius)F+=``;else if(a.options.angleRange){for(let e=0;e<2;e++){var _=a.options.angleRange[e];F+=``}a.options.arcThicknessRatio&&(F+=``)}F+=""}F+=a.options.fill?W(a.options.fill):"",a.options.line&&(F+=a.options.line.width?``:"",a.options.line.color&&(F+=W(a.options.line)),a.options.line.dashType&&(F+=``),a.options.line.beginArrowType&&(F+=``),a.options.line.endArrowType&&(F+=``),F+=""),a.options.shadow&&"none"!==a.options.shadow.type&&(a.options.shadow.type=a.options.shadow.type||"outer",a.options.shadow.blur=j(a.options.shadow.blur||8),a.options.shadow.offset=j(a.options.shadow.offset||4),a.options.shadow.angle=Math.round(6e4*(a.options.shadow.angle||270)),a.options.shadow.opacity=Math.round(1e5*(a.options.shadow.opacity||.75)),a.options.shadow.color=a.options.shadow.color||X.color,F=(F=(F=(F=(F+="")+` `)+` `)+` `)+" "),F=(F+="")+ke(a)+"";break;case O.image:F=(F=F+""+" ")+``,null!=(c=a.hyperlink)&&c.url&&(F+=``),null!=(p=a.hyperlink)&&p.slide&&(F+=``),F=(F=(F=F+" "+' ')+(" "+_e(g)+""))+" "+"",F=(N._relsMedia||[]).filter(e=>e.rId===a.imageRid)[0]&&"svg"===(N._relsMedia||[]).filter(e=>e.rId===a.imageRid)[0].extn?(F=(F=(F=(F+=``)+(a.options.transparency?` `:""))+' ')+` `+" ")+" ":(F+=``)+(a.options.transparency?``:"")+"",null!=E&&E.type?(k=E.w?M(E.w,"X",N._presLayout):d,P=E.h?M(E.h,"Y",N._presLayout):h,S=M(E.x||0,"X",N._presLayout),L=M(E.y||0,"Y",N._presLayout),F+=Le[E.type]({w:B,h:D},{w:k,h:P,x:S,y:L}),B=k,D=P):F+=" ",F=(F=(F=(F=(F=F+""+"")+(" "))+` `)+` `)+" "+` `,a.options.shadow&&"none"!==a.options.shadow.type&&(a.options.shadow.type=a.options.shadow.type||"outer",a.options.shadow.blur=j(a.options.shadow.blur||8),a.options.shadow.offset=j(a.options.shadow.offset||4),a.options.shadow.angle=Math.round(6e4*(a.options.shadow.angle||270)),a.options.shadow.opacity=Math.round(1e5*(a.options.shadow.opacity||.75)),a.options.shadow.color=a.options.shadow.color||X.color,F=(F=(F=(F=(F+="")+``)+``)+``)+``+""),F=F+""+"";break;case O.media:F="online"===a.mtype?(F=(F=(F=(F=(F=(F=(F+=" ")+``)+" ")+` `)+" ")+` `+" ")+` `+' ')+" ":(F=(F=(F=(F=(F=(F=(F=(F=(F=(F+=" ")+``)+' ')+` `)+' ')+` `)+" ")+" ")+` `+" ")+` `+' ')+" ";break;case O.chart:F=(F=(F=(F=(F=(F=(F=F+""+" ")+` `+" ")+` ${_e(g)}`+" ")+` `)+' '+' ')+` `+" ")+" "+"";break;default:F+=""}}),N._slideNumberProps&&(N._slideNumberProps.align||(N._slideNumberProps.align="left"),F=(F=(F=(F=(F+=" ")+' ')+" ")+""+``+``+' ')+"`,N._slideNumberProps.color&&(F+=W(N._slideNumberProps.color)),N._slideNumberProps.fontFace&&(F+=``),F+=""),F+="",N._slideNumberProps.align.startsWith("l")?F+='':N._slideNumberProps.align.startsWith("c")?F+='':N._slideNumberProps.align.startsWith("r")?F+='':F+='',F=(F+=``)+`${N._slideNum}`+""),F=F+""+""}function Te(e,t){let r=0,a=''+A+'';return e._rels.forEach(e=>{r=Math.max(r,e.rId),e.type.toLowerCase().includes("hyperlink")?"slide"===e.data?a+=``:a+=``:e.type.toLowerCase().includes("notesSlide")&&(a+=``)}),(e._relsChart||[]).forEach(e=>{r=Math.max(r,e.rId),a+=``}),(e._relsMedia||[]).forEach(e=>{var t=e.rId.toString();r=Math.max(r,e.rId),e.type.toLowerCase().includes("image")?a+='':e.type.toLowerCase().includes("audio")?a.includes(' Target="'+e.Target+'"')?a+='':a+='':e.type.toLowerCase().includes("video")?a.includes(' Target="'+e.Target+'"')?a+='':a+='':e.type.toLowerCase().includes("online")&&(a.includes(' Target="'+e.Target+'"')?a+='':a+='')}),t.forEach((e,t)=>{a+=``}),a+=""}function Be(t,e){let r,a,n="",o="",i="",s="";var A,l=e?"a:lvl1pPr":"a:pPr";let c=j(_),p="<"+l+(t.options.rtlMode?' rtl="1" ':"");if(t.options.align)switch(t.options.align){case"left":p+=' algn="l"';break;case"right":p+=' algn="r"';break;case"center":p+=' algn="ctr"';break;case"justify":p+=' algn="just"';break;default:p+=""}if(t.options.lineSpacing?o=``:t.options.lineSpacingMultiple&&(o=``),t.options.indentLevel&&!isNaN(Number(t.options.indentLevel))&&0`),t.options.paraSpaceAfter&&!isNaN(Number(t.options.paraSpaceAfter))&&0`),"object"==typeof t.options.bullet)if(null!=(a=null==(r=null==t?void 0:t.options)?void 0:r.bullet)&&a.indent&&(c=j(t.options.bullet.indent)),t.options.bullet.type)"number"===t.options.bullet.type.toString().toLowerCase()&&(p+=` marL="${t.options.indentLevel&&0`);else if(t.options.bullet.characterCode){let e=`&#x${t.options.bullet.characterCode};`;/^[0-9A-Fa-f]{4}$/.test(t.options.bullet.characterCode)||(console.warn("Warning: `bullet.characterCode should be a 4-digit unicode charatcer (ex: 22AB)`!"),e=C.DEFAULT),p+=` marL="${t.options.indentLevel&&0'}else if(t.options.bullet.code){let e=`&#x${t.options.bullet.code};`;/^[0-9A-Fa-f]{4}$/.test(t.options.bullet.code)||(console.warn("Warning: `bullet.code should be a 4-digit hex code (ex: 22AB)`!"),e=C.DEFAULT),p+=` marL="${t.options.indentLevel&&0'}else p+=` marL="${t.options.indentLevel&&0`;else n=t.options.bullet?(p+=` marL="${t.options.indentLevel&&0`):(t.options.bullet,p+=' indent="0" marL="0"',"");return t.options.tabStops&&Array.isArray(t.options.tabStops)&&(A=t.options.tabStops.map(e=>``).join(""),s=`${A}`),p+=">"+o+i+n+s,e&&(p+=De(t.options,!0)),p+=""}function De(e,t){let r,a="";var n,o,i,t=t?"a:defRPr":"a:rPr";if(a=(a=(a=(a=(a+="<"+t+' lang="'+(e.lang||"en-US")+'"'+(e.lang?' altLang="en-US"':""))+(e.fontSize?` sz="${Math.round(100*e.fontSize)}"`:""))+(null!=e&&e.bold?` b="${e.bold?"1":"0"}"`:""))+(null!=e&&e.italic?` i="${e.italic?"1":"0"}"`:""))+(null!=e&&e.strike?` strike="${"string"==typeof e.strike?e.strike:"sngStrike"}"`:""),"object"==typeof e.underline&&null!=(r=e.underline)&&r.style?a+=` u="${e.underline.style}"`:"string"==typeof e.underline?a+=` u="${String(e.underline)}"`:e.hyperlink&&(a+=' u="sng"'),e.baseline?a+=` baseline="${Math.round(50*e.baseline)}"`:e.subscript?a+=' baseline="-40000"':e.superscript&&(a+=' baseline="30000"'),a=a+(e.charSpacing?` spc="${Math.round(100*e.charSpacing)}" kern="0"`:"")+' dirty="0">',(e.color||e.fontFace||e.outline||"object"==typeof e.underline&&e.underline.color)&&(e.outline&&"object"==typeof e.outline&&(a+=`${W(e.outline.color||"FFFFFF")}`),e.color&&(a+=W({color:e.color,transparency:e.transparency})),e.highlight&&(a+=`${Q(e.highlight)}`),"object"==typeof e.underline&&e.underline.color&&(a+=`${W(e.underline.color)}`),e.glow&&(a+=`${n=e.glow,o=F,i="",o=Object.assign(Object.assign({},o),n),(i+=``)+Q(o.color,``)+""}`),e.fontFace)&&(a+=``),e.hyperlink){if("object"!=typeof e.hyperlink)throw new Error("ERROR: text `hyperlink` option should be an object. Ex: `hyperlink:{url:'https://github.com'}` ");if(!e.hyperlink.url&&!e.hyperlink.slide)throw new Error("ERROR: 'hyperlink requires either `url` or `slide`'");e.hyperlink.url?a+=`":"/>"):e.hyperlink.slide&&(a+=`":"/>")),e.color&&(a=(a=(a+=' ')+' ')+" ")}return a+=``}function ke(r){let o=r.options||{},e=[],a=[];if(o&&r._type!==O.tablecell&&null==r.text)return"";let i=r._type===O.tablecell?"":"",n=(i+=(e=>{let t="`):"resize"===e.options.fit&&(t+="")),e.options.shrinkText&&(r=Se(e),t+=``),t=t+(e.options._bodyProp.autoFit?"":"")+""):t+=' wrap="square" rtlCol="0">',e._type===O.tablecell?"":t})(r),0===o.h&&o.line&&o.align?i+='':"placeholder"===r._type?i+=`${Be(r,!0)}`:i+="","string"==typeof r.text||"number"==typeof r.text?e.push({text:r.text.toString(),options:o||{}}):r.text&&!Array.isArray(r.text)&&"object"==typeof r.text&&Object.keys(r.text).includes("text")?e.push({text:r.text||"",options:r.options||{}}):Array.isArray(r.text)&&(e=r.text.map(e=>({text:e.text,options:e.options}))),e.forEach((t,e)=>{t.text||(t.text=""),t.options=t.options||o||{},0===e&&t.options&&!t.options.bullet&&o.bullet&&(t.options.bullet=o.bullet),"string"!=typeof t.text&&"number"!=typeof t.text||(t.text=t.text.toString().replace(/\r*\n/g,A)),t.text.includes(A)&&null===t.text.match(/\n$/g)?t.text.split(A).forEach(e=>{t.options.breakLine=!0,a.push({text:e,options:t.options})}):a.push(t)}),[]),s=[];return a.forEach((e,t)=>{0{let t,a=!1,n=(i+="","{0<(r.options._lineIdx=e)&&r.options.softBreakBefore&&(i+=""),r.options.align=r.options.align||o.align,r.options.lineSpacing=r.options.lineSpacing||o.lineSpacing,r.options.lineSpacingMultiple=r.options.lineSpacingMultiple||o.lineSpacingMultiple,r.options.indentLevel=r.options.indentLevel||o.indentLevel,r.options.paraSpaceBefore=r.options.paraSpaceBefore||o.paraSpaceBefore,r.options.paraSpaceAfter=r.options.paraSpaceAfter||o.paraSpaceAfter,n=Be(r,!1),i+=n.replace("",""),Object.entries(o).filter(([e])=>!(r.options.hyperlink&&"color"===e)).forEach(([e,t])=>{"bullet"===e||r.options[e]||(r.options[e]=t)}),i+=(e=r).text?`${De(e.options,!1)}${z(e.text)}`:"",(!r.text&&o.fontSize||r.options.fontSize)&&(a=!0,o.fontSize=o.fontSize||r.options.fontSize)}),r._type===O.tablecell&&(o.fontSize||o.fontFace)?o.fontFace?i=(i=(i=(i+=`')+``)+``)+``+"":i+=`':a?i+=`':i+=``,i+=""}),-1===i.indexOf("")&&(i+=""),i+=r._type===O.tablecell?"":""}function _e(e){var t,r;return e?(t=null!=(t=e.options)&&t._placeholderIdx?e.options._placeholderIdx:"",r=(r=null!=(r=e.options)&&r._placeholderType?e.options._placeholderType:"")&&re[r]?re[r].toString():"",``):""}function _e(e){return`${A}${O((e=>{let t="";return e._slideObjects.forEach(e=>{e._type===I.notes&&(t+=null!=e&&e.text&&e.text[0]?e.text[0].text:"")}),t.replace(/\r*\n/g,A)})(e))}${e._slideNum}`}function Ne(e,t,r){return Ee(e[r-1],[{target:`../slideLayouts/slideLayout${((t,r,a)=>{for(let e=0;e{var t=0e._slideNum===this.slides[this.slides.length-1]._slideNum).length;return e.sectionTitle=t?this.sections[this.sections.length-1].title:null,this.addSlide(e)},this.getSlide=t=>this.slides.filter(e=>e._slideNum===t)[0],this.setSlideNumber=e=>{this.masterSlide._slideNumberProps=e,this.slideLayouts.filter(e=>e._name===t)[0]._slideNumberProps=e},this.createChartMediaRels=(e,r,t)=>{e._relsChart.forEach(e=>t.push(ge(e,r))),e._relsMedia.forEach(t=>{if("online"!==t.type&&"hyperlink"!==t.type){let e=t.data&&"string"==typeof t.data?t.data:"";(e.includes(",")||e.includes(";"))&&e.includes(",")?e.includes(";")||(e="image/png;"+e):e="image/png;base64,"+e,r.file(t.Target.replace("..","ppt"),e.split(",").pop(),{base64:!0})}})},this.writeFileToBrowser=(r,a)=>c(this,void 0,void 0,function*(){let t=document.createElement("a");if(t.setAttribute("style","display:none;"),t.dataset.interception="off",document.body.appendChild(t),window.URL.createObjectURL){let e=window.URL.createObjectURL(new Blob([a],{type:"application/vnd.openxmlformats-officedocument.presentationml.presentation"}));return t.href=e,t.download=r,t.click(),setTimeout(()=>{window.URL.revokeObjectURL(e),document.body.removeChild(t)},100),yield Promise.resolve(r)}}),this.exportPresentation=s=>c(this,void 0,void 0,function*(){let o=[],t=[],i=new B;return this.slides.forEach(e=>{t=t.concat(Ce(e))}),this.slideLayouts.forEach(e=>{t=t.concat(Ce(e))}),t=t.concat(Ce(this.masterSlide)),yield Promise.all(t).then(()=>c(this,void 0,void 0,function*(){var r,e,t,a,n;return this.slides.forEach(e=>{var r;e._slideLayout&&((r=e)._slideLayout._slideObjects||[]).forEach(t=>{t._type===I.placeholder&&0===r._slideObjects.filter(e=>e.options&&e.options.placeholder===t.options.placeholder).length&&fe(r,[{text:""}],t.options,!1)})}),i.folder("_rels"),i.folder("docProps"),i.folder("ppt").folder("_rels"),i.folder("ppt/charts").folder("_rels"),i.folder("ppt/embeddings"),i.folder("ppt/media"),i.folder("ppt/slideLayouts").folder("_rels"),i.folder("ppt/slideMasters").folder("_rels"),i.folder("ppt/slides").folder("_rels"),i.folder("ppt/theme"),i.folder("ppt/notesMasters").folder("_rels"),i.folder("ppt/notesSlides").folder("_rels"),i.file("[Content_Types].xml",((e,t,r)=>{let a=''+A;return a=(a=(a=(a=(a=a+''+'')+''+'')+''+'')+''+'')+''+'',e.forEach(e=>{(e._relsMedia||[]).forEach(e=>{"image"===e.type||"online"===e.type||"chart"===e.type||"m4v"===e.extn||a.includes(e.type)||(a+='')})}),a=(a=a+''+'')+''+'',e.forEach((e,t)=>{a=a+``+``,e._relsChart.forEach(e=>{a+=``})}),a=(a=a+''+'')+''+'',t.forEach((e,t)=>{a+=``,(e._relsChart||[]).forEach(e=>{a+=' '})}),e.forEach((e,t)=>{a+=``}),r._relsChart.forEach(e=>{a+=' '}),r._relsMedia.forEach(e=>{"image"===e.type||"online"===e.type||"chart"===e.type||"m4v"===e.extn||a.includes(e.type)||(a+=' ')}),a=(a+=' ')+' '+""})(this.slides,this.slideLayouts,this.masterSlide)),i.file("_rels/.rels",`${A} + />`):""}function Ne(e){return`${A}${z((e=>{let t="";return e._slideObjects.forEach(e=>{e._type===O.notes&&(t+=null!=e&&e.text&&e.text[0]?e.text[0].text:"")}),t.replace(/\r*\n/g,A)})(e))}${e._slideNum}`}function Fe(e,t,r){return Te(e[r-1],[{target:`../slideLayouts/slideLayout${((t,r,a)=>{for(let e=0;e{var t=0e._slideNum===this.slides[this.slides.length-1]._slideNum).length;return e.sectionTitle=t?this.sections[this.sections.length-1].title:null,this.addSlide(e)},this.getSlide=t=>this.slides.filter(e=>e._slideNum===t)[0],this.setSlideNumber=e=>{this.masterSlide._slideNumberProps=e,this.slideLayouts.filter(e=>e._name===t)[0]._slideNumberProps=e},this.createChartMediaRels=(e,r,t)=>{e._relsChart.forEach(e=>t.push(ge(e,r))),e._relsMedia.forEach(t=>{if("online"!==t.type&&"hyperlink"!==t.type){let e=t.data&&"string"==typeof t.data?t.data:"";(e.includes(",")||e.includes(";"))&&e.includes(",")?e.includes(";")||(e="image/png;"+e):e="image/png;base64,"+e,r.file(t.Target.replace("..","ppt"),e.split(",").pop(),{base64:!0})}})},this.writeFileToBrowser=(r,a)=>c(this,void 0,void 0,function*(){let t=document.createElement("a");if(t.setAttribute("style","display:none;"),t.dataset.interception="off",document.body.appendChild(t),window.URL.createObjectURL){let e=window.URL.createObjectURL(new Blob([a],{type:"application/vnd.openxmlformats-officedocument.presentationml.presentation"}));return t.href=e,t.download=r,t.click(),setTimeout(()=>{window.URL.revokeObjectURL(e),document.body.removeChild(t)},100),yield Promise.resolve(r)}}),this.exportPresentation=s=>c(this,void 0,void 0,function*(){let o=[],t=[],i=new B;return this.slides.forEach(e=>{t=t.concat(Ce(e))}),this.slideLayouts.forEach(e=>{t=t.concat(Ce(e))}),t=t.concat(Ce(this.masterSlide)),yield Promise.all(t).then(()=>c(this,void 0,void 0,function*(){var r,e,t,a,n;return this.slides.forEach(e=>{var r;e._slideLayout&&((r=e)._slideLayout._slideObjects||[]).forEach(t=>{t._type===O.placeholder&&0===r._slideObjects.filter(e=>e.options&&e.options.placeholder===t.options.placeholder).length&&fe(r,[{text:""}],t.options,!1)})}),i.folder("_rels"),i.folder("docProps"),i.folder("ppt").folder("_rels"),i.folder("ppt/charts").folder("_rels"),i.folder("ppt/embeddings"),i.folder("ppt/media"),i.folder("ppt/slideLayouts").folder("_rels"),i.folder("ppt/slideMasters").folder("_rels"),i.folder("ppt/slides").folder("_rels"),i.folder("ppt/theme"),i.folder("ppt/notesMasters").folder("_rels"),i.folder("ppt/notesSlides").folder("_rels"),i.file("[Content_Types].xml",((e,t,r)=>{let a=''+A;return a=(a=(a=(a=(a=a+''+'')+''+'')+''+'')+''+'')+''+'',e.forEach(e=>{(e._relsMedia||[]).forEach(e=>{"image"===e.type||"online"===e.type||"chart"===e.type||"m4v"===e.extn||a.includes(e.type)||(a+='')})}),a=(a=a+''+'')+''+'',e.forEach((e,t)=>{a=a+``+``,e._relsChart.forEach(e=>{a+=``})}),a=(a=a+''+'')+''+'',t.forEach((e,t)=>{a+=``,(e._relsChart||[]).forEach(e=>{a+=' '})}),e.forEach((e,t)=>{a+=``}),r._relsChart.forEach(e=>{a+=' '}),r._relsMedia.forEach(e=>{"image"===e.type||"online"===e.type||"chart"===e.type||"m4v"===e.extn||a.includes(e.type)||(a+=' ')}),a=(a+=' ')+' '+""})(this.slides,this.slideLayouts,this.masterSlide)),i.file("_rels/.rels",`${A} @@ -76,21 +76,21 @@ 16.0000 `)),i.file("docProps/core.xml",(a=this.title,n=this.subject,e=this.author,t=this.revision,` - ${O(a)} - ${O(n)} - ${O(e)} - ${O(e)} + ${z(a)} + ${z(n)} + ${z(e)} + ${z(e)} ${t} ${(new Date).toISOString().replace(/\.\d\d\dZ/,"Z")} ${(new Date).toISOString().replace(/\.\d\d\dZ/,"Z")} - `)),i.file("ppt/_rels/presentation.xml.rels",(t=>{let r=1,a=''+A;a+='';for(let e=1;e<=t.length;e++)a+=``;return r++,a+=``+``+``+``+``+""})(this.slides)),i.file("ppt/theme/theme1.xml",`${null!=(n=(a=this).theme)&&n.headFontFace?``:''}${null!=(n=a.theme)&&n.bodyFontFace?``:''}`),i.file("ppt/presentation.xml",(e=>{let t=''+A+'`;t+='',e.slides.forEach(e=>t+=``),t=(t=(t=(t+="")+``)+``)+``+"";for(let e=1;e<10;e++)t+=``+''+``;return t+="",e.sections&&0',e.sections.forEach(e=>{t+=``,e._slides.forEach(e=>t+=``),t+=""}),t=(t+="")+''),t+=""})(this)),i.file("ppt/presProps.xml",`${A}`),i.file("ppt/tableStyles.xml",`${A}`),i.file("ppt/viewProps.xml",`${A}`),this.slideLayouts.forEach((e,t)=>{i.file(`ppt/slideLayouts/slideLayout${t+1}.xml`,` + `)),i.file("ppt/_rels/presentation.xml.rels",(t=>{let r=1,a=''+A;a+='';for(let e=1;e<=t.length;e++)a+=``;return r++,a+=``+``+``+``+``+""})(this.slides)),i.file("ppt/theme/theme1.xml",`${null!=(n=(a=this).theme)&&n.headFontFace?``:''}${null!=(n=a.theme)&&n.bodyFontFace?``:''}`),i.file("ppt/presentation.xml",(e=>{let t=''+A+'`;t+='',e.slides.forEach(e=>t+=``),t=(t=(t=(t+="")+``)+``)+``+"";for(let e=1;e<10;e++)t+=``+''+``;return t+="",e.sections&&0',e.sections.forEach(e=>{t+=``,e._slides.forEach(e=>t+=``),t+=""}),t=(t+="")+''),t+=""})(this)),i.file("ppt/presProps.xml",`${A}`),i.file("ppt/tableStyles.xml",`${A}`),i.file("ppt/viewProps.xml",`${A}`),this.slideLayouts.forEach((e,t)=>{i.file(`ppt/slideLayouts/slideLayout${t+1}.xml`,` - ${Le(e)} - `),i.file(`ppt/slideLayouts/_rels/slideLayout${t+1}.xml.rels`,(e=t+1,Ee(this.slideLayouts[e-1],[{target:"../slideMasters/slideMaster1.xml",type:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideMaster"}])))}),this.slides.forEach((e,t)=>{var r;i.file(`ppt/slides/slide${t+1}.xml`,(r=e,''+A+'`+Le(r)+"")),i.file(`ppt/slides/_rels/slide${t+1}.xml.rels`,Ne(this.slides,this.slideLayouts,t+1)),i.file(`ppt/notesSlides/notesSlide${t+1}.xml`,_e(e)),i.file(`ppt/notesSlides/_rels/notesSlide${t+1}.xml.rels`,` + ${Ee(e)} + `),i.file(`ppt/slideLayouts/_rels/slideLayout${t+1}.xml.rels`,(e=t+1,Te(this.slideLayouts[e-1],[{target:"../slideMasters/slideMaster1.xml",type:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideMaster"}])))}),this.slides.forEach((e,t)=>{var r;i.file(`ppt/slides/slide${t+1}.xml`,(r=e,''+A+'`+Ee(r)+"")),i.file(`ppt/slides/_rels/slide${t+1}.xml.rels`,Fe(this.slides,this.slideLayouts,t+1)),i.file(`ppt/notesSlides/notesSlide${t+1}.xml`,Ne(e)),i.file(`ppt/notesSlides/_rels/notesSlide${t+1}.xml.rels`,` - `)}),i.file("ppt/slideMasters/slideMaster1.xml",(r=this.masterSlide,e=(e=this.slideLayouts).map((e,t)=>``),t=''+A,(t+='')+Le(r)+''+e.join("")+' ')),i.file("ppt/slideMasters/_rels/slideMaster1.xml.rels",(a=this.masterSlide,(n=(n=this.slideLayouts).map((e,t)=>({target:`../slideLayouts/slideLayout${t+1}.xml`,type:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideLayout"}))).push({target:"../theme/theme1.xml",type:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme"}),Ee(a,n))),i.file("ppt/notesMasters/notesMaster1.xml",`${A}7/23/19Click to edit Master text stylesSecond levelThird levelFourth levelFifth level‹#›`),i.file("ppt/notesMasters/_rels/notesMaster1.xml.rels",`${A} + `)}),i.file("ppt/slideMasters/slideMaster1.xml",(r=this.masterSlide,e=(e=this.slideLayouts).map((e,t)=>``),t=''+A,(t+='')+Ee(r)+''+e.join("")+' ')),i.file("ppt/slideMasters/_rels/slideMaster1.xml.rels",(a=this.masterSlide,(n=(n=this.slideLayouts).map((e,t)=>({target:`../slideLayouts/slideLayout${t+1}.xml`,type:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideLayout"}))).push({target:"../theme/theme1.xml",type:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme"}),Te(a,n))),i.file("ppt/notesMasters/notesMaster1.xml",`${A}7/23/19Click to edit Master text stylesSecond levelThird levelFourth levelFifth level‹#›`),i.file("ppt/notesMasters/_rels/notesMaster1.xml.rels",`${A} - `),this.slideLayouts.forEach(e=>{this.createChartMediaRels(e,i,o)}),this.slides.forEach(e=>{this.createChartMediaRels(e,i,o)}),this.createChartMediaRels(this.masterSlide,i,o),yield Promise.all(o).then(()=>c(this,void 0,void 0,function*(){return"STREAM"===s.outputType?yield i.generateAsync({type:"nodebuffer",compression:s.compression?"DEFLATE":"STORE"}):s.outputType?yield i.generateAsync({type:s.outputType}):yield i.generateAsync({type:"blob",compression:s.compression?"DEFLATE":"STORE"})}))}))});this.LAYOUTS={LAYOUT_4x3:{name:"screen4x3",width:9144e3,height:6858e3},LAYOUT_16x9:{name:"screen16x9",width:9144e3,height:5143500},LAYOUT_16x10:{name:"screen16x10",width:9144e3,height:5715e3},LAYOUT_WIDE:{name:"custom",width:12192e3,height:6858e3}},this._author="PptxGenJS",this._company="PptxGenJS",this._revision="1",this._subject="PptxGenJS Presentation",this._title="PptxGenJS Presentation",this._presLayout={name:this.LAYOUTS[o].name,_sizeW:this.LAYOUTS[o].width,_sizeH:this.LAYOUTS[o].height,width:this.LAYOUTS[o].width,height:this.LAYOUTS[o].height},this._rtlMode=!1,this._slideLayouts=[{_margin:y,_name:t,_presLayout:this._presLayout,_rels:[],_relsChart:[],_relsMedia:[],_slide:null,_slideNum:1e3,_slideNumberProps:null,_slideObjects:[]}],this._slides=[],this._sections=[],this._masterSlide={addChart:null,addImage:null,addMedia:null,addNotes:null,addShape:null,addTable:null,addText:null,_name:null,_presLayout:this._presLayout,_rId:null,_rels:[],_relsChart:[],_relsMedia:[],_slideId:null,_slideLayout:null,_slideNum:null,_slideNumberProps:null,_slideObjects:[]}}stream(e){return c(this,void 0,void 0,function*(){return yield this.exportPresentation({compression:null==e?void 0:e.compression,outputType:"STREAM"})})}write(r){return c(this,void 0,void 0,function*(){var e="object"==typeof r&&null!=r&&r.outputType?r.outputType:r||null,t=!("object"!=typeof r||null==r||!r.compression)&&r.compression;return yield this.exportPresentation({compression:t,outputType:e})})}writeFile(a){return c(this,void 0,void 0,function*(){var e="undefined"!=typeof process&&!(null==(e=process.versions)||!e.node)&&"node"===(null==(e=process.release)?void 0:e.name),{fileName:t="Presentation.pptx",compression:r=!1}=("string"==typeof a&&(console.warn("[WARNING] writeFile(string) is deprecated - pass { fileName } instead."),a={fileName:a}),a),t=t.toLowerCase().endsWith(".pptx")?t:t+".pptx",r=yield this.exportPresentation({compression:r,outputType:e?"nodebuffer":null});return e?(e=(yield import("node:fs")).promises,e=e.writeFile,yield e(t,r)):yield this.writeFileToBrowser(t,r),t})}addSection(e){e?e.title||console.warn("addSection requires a title"):console.warn("addSection requires an argument");var t={_type:"user",_slides:[],title:e.title};e.order?this.sections.splice(e.order,0,t):this._sections.push(t)}addSlide(t){let r="string"==typeof t?t:null!=t&&t.masterName?t.masterName:"",e={_name:this.LAYOUTS[o].name,_presLayout:this.presLayout,_rels:[],_relsChart:[],_relsMedia:[],_slideNum:this.slides.length+1};r&&(n=this.slideLayouts.filter(e=>e._name===r)[0])&&(e=n);var a,n=new he({addSlide:this.addNewSlide,getSlide:this.getSlide,presLayout:this.presLayout,setSlideNum:this.setSlideNumber,slideId:this.slides.length+256,slideRId:this.slides.length+2,slideNumber:this.slides.length+1,slideLayout:e});return this._slides.push(n),null!=t&&t.sectionTitle?(a=this.sections.filter(e=>e.title===t.sectionTitle)[0])?a._slides.push(n):console.warn(`addSlide: unable to find section with title: "${t.sectionTitle}"`):this.sections&&0"default"===e._type).length+1),_type:"default",_slides:[n]})),n}defineLayout(e){e?e.name?e.width?e.height?"number"!=typeof e.height?console.warn("defineLayout `height` should be a number (inches)"):"number"!=typeof e.width&&console.warn("defineLayout `width` should be a number (inches)"):console.warn("defineLayout requires `height`"):console.warn("defineLayout requires `width`"):console.warn("defineLayout requires `name`"):console.warn("defineLayout requires `{name, width, height}`"),this.LAYOUTS[e.name]={name:e.name,_sizeW:Math.round(Number(e.width)*F),_sizeH:Math.round(Number(e.height)*F),width:Math.round(Number(e.width)*F),height:Math.round(Number(e.height)*F)}}defineSlideMaster(e){e=JSON.parse(JSON.stringify(e));if(!e.title)throw new Error("defineSlideMaster() object argument requires a `title` value. (https://gitbrent.github.io/PptxGenJS/docs/masters.html)");var t,n,r={_margin:e.margin||y,_name:e.title,_presLayout:this.presLayout,_rels:[],_relsChart:[],_relsMedia:[],_slide:null,_slideNum:1e3+this.slideLayouts.length+1,_slideNumberProps:e.slideNumber||null,_slideObjects:[],background:e.background||null,bkgd:e.bkgd||null};n=r,(t=e).bkgd&&(n.bkgd=t.bkgd),t.objects&&Array.isArray(t.objects)&&0{var r=Object.keys(e)[0],a=n;x[r]&&"chart"===r?ce(a,e[r].type,e[r].data,e[r].opts):x[r]&&"image"===r?pe(a,e[r]):x[r]&&"line"===r?ue(a,b.LINE,e[r]):x[r]&&"rect"===r?ue(a,b.RECTANGLE,e[r]):x[r]&&"text"===r?fe(a,[{text:e[r].text}],e[r].options,!1):x[r]&&"placeholder"===r&&(e[r].options.placeholder=e[r].options.name,delete e[r].options.name,e[r].options._placeholderType=e[r].options.type,delete e[r].options.type,e[r].options._placeholderIdx=100+t,fe(a,[{text:e[r].text}],e[r].options,!0))}),t.slideNumber&&"object"==typeof t.slideNumber&&(n._slideNumberProps=t.slideNumber),this.slideLayouts.push(r),(e.background||e.bkgd)&&de(e.background,r),r._slideNumberProps&&!this.masterSlide._slideNumberProps&&(this.masterSlide._slideNumberProps=r._slideNumberProps)}tableToSlides(t,p={}){{var[u,f,t={},d]=[this,t,p,null!=p&&p.masterSlideName?this.slideLayouts.filter(e=>e._name===p.masterSlideName)[0]:null];let a=t||{},n=void(a.slideMargin=a.slideMargin||0===a.slideMargin?a.slideMargin:.5,a.w||u.presLayout.width),o=[],i=[],s=[],A=[],r=[],l=[.5,.5,.5,.5],c=0;if(!document.getElementById(f))throw new Error('tableToSlides: Table ID "'+f+'" does not exist!');null!=d&&d._margin?(Array.isArray(d._margin)?l=d._margin:isNaN(d._margin)||(l=[d._margin,d._margin,d._margin,d._margin]),a.slideMargin=l):null!=a&&a.slideMargin&&(Array.isArray(a.slideMargin)?l=a.slideMargin:isNaN(a.slideMargin)||(l=[a.slideMargin,a.slideMargin,a.slideMargin,a.slideMargin])),n=(a.w?M(a.w):u.presLayout.width)-M(l[1]+l[3]),a.verbose&&(console.log("[[VERBOSE MODE]]"),console.log("|-- `tableToSlides` ----------------------------------------------------|"),console.log("| tableProps.h .................................... = "+a.h),console.log("| tableProps.w .................................... = "+a.w),console.log("| pptx.presLayout.width ........................... = "+(u.presLayout.width/F).toFixed(1)),console.log("| pptx.presLayout.height .......................... = "+(u.presLayout.height/F).toFixed(1)),console.log("| emuSlideTabW .................................... = "+(n/F).toFixed(1)));let e=document.querySelectorAll(`#${f} tr:first-child th`);(e=0===e.length?document.querySelectorAll(`#${f} tr:first-child td`):e).forEach(e=>{var t=e;if(t.getAttribute("colspan"))for(let e=0;e{c+=e}),r.forEach((e,t)=>{e=Number((Number(n)*(e/c*100)/100/F).toFixed(2));let r=0;var a=document.querySelector(`#${f} thead tr:first-child th:nth-child(${t+1})`),a=(a&&(r=Number(a.getAttribute("data-pptx-min-width"))),document.querySelector(`#${f} thead tr:first-child th:nth-child(${t+1})`));a&&(r=Number(a.getAttribute("data-pptx-width"))),A.push(r>e?r:e)}),a.verbose&&console.log(`| arrColW ......................................... = [${A.join(", ")}]`),["thead","tbody","tfoot"].forEach(t=>{document.querySelectorAll(`#${f} ${t} tr`).forEach(e=>{let r=[];switch(Array.from(e.cells).forEach(a=>{var e=window.getComputedStyle(a).getPropertyValue("color").replace(/\s+/gi,"").replace("rgba(","").replace("rgb(","").replace(")","").split(",");let t=window.getComputedStyle(a).getPropertyValue("background-color").replace(/\s+/gi,"").replace("rgba(","").replace("rgb(","").replace(")","").split(","),n=("rgba(0, 0, 0, 0)"!==window.getComputedStyle(a).getPropertyValue("background-color")&&!window.getComputedStyle(a).getPropertyValue("transparent")||(t=["255","255","255"]),{align:null,bold:!!("bold"===window.getComputedStyle(a).getPropertyValue("font-weight")||500<=Number(window.getComputedStyle(a).getPropertyValue("font-weight"))),border:null,color:ie(Number(e[0]),Number(e[1]),Number(e[2])),fill:{color:ie(Number(t[0]),Number(t[1]),Number(t[2]))},fontFace:(window.getComputedStyle(a).getPropertyValue("font-family")||"").split(",")[0].replace(/"/g,"").replace("inherit","").replace("initial","")||null,fontSize:Number(window.getComputedStyle(a).getPropertyValue("font-size").replace(/[a-z]/gi,"")),margin:null,colspan:Number(a.getAttribute("colspan"))||null,rowspan:Number(a.getAttribute("rowspan"))||null,valign:null});["left","center","right","start","end"].includes(window.getComputedStyle(a).getPropertyValue("text-align"))&&(e=window.getComputedStyle(a).getPropertyValue("text-align").replace("start","left").replace("end","right"),n.align="center"===e?"center":"left"===e?"left":"right"===e?"right":null),["top","middle","bottom"].includes(window.getComputedStyle(a).getPropertyValue("vertical-align"))&&(e=window.getComputedStyle(a).getPropertyValue("vertical-align"),n.valign="top"===e?"top":"middle"===e?"middle":"bottom"===e?"bottom":null),window.getComputedStyle(a).getPropertyValue("padding-left")&&(n.margin=[0,0,0,0],["padding-top","padding-right","padding-bottom","padding-left"].forEach((e,t)=>{n.margin[t]=Math.round(Number(window.getComputedStyle(a).getPropertyValue(e).replace(/\D/gi,"")))})),(window.getComputedStyle(a).getPropertyValue("border-top-width")||window.getComputedStyle(a).getPropertyValue("border-right-width")||window.getComputedStyle(a).getPropertyValue("border-bottom-width")||window.getComputedStyle(a).getPropertyValue("border-left-width"))&&(n.border=[null,null,null,null],["top","right","bottom","left"].forEach((e,t)=>{var r=Math.round(Number(window.getComputedStyle(a).getPropertyValue("border-"+e+"-width").replace("px",""))),e=window.getComputedStyle(a).getPropertyValue("border-"+e+"-color").replace(/\s+/gi,"").replace("rgba(","").replace("rgb(","").replace(")","").split(","),e=ie(Number(e[0]),Number(e[1]),Number(e[2]));n.border[t]={pt:r,color:e}})),r.push({_type:I.tablecell,text:a.innerText,options:n})}),t){case"thead":o.push(r);break;case"tbody":i.push(r);break;case"tfoot":s.push(r);break;default:console.log("table parsing: unexpected table part: "+t)}})}),a._arrObjTabHeadRows=o||null,a.colW=A,Ae([...o,...i,...s],a,u.presLayout,d).forEach((e,t)=>{var r=u.addSlide({masterName:a.masterSlideName||null});0===t&&(a.y=a.y||l[0]),0 opts.y = `+a.y),r.addTable(e.rows,{x:a.x||l[3],y:a.y,w:Number(n)/F,colW:A,autoPage:!1}),a.addImage&&(a.addImage.options=a.addImage.options||{},a.addImage.image&&(a.addImage.image.path||a.addImage.image.data)?r.addImage({path:a.addImage.image.path,data:a.addImage.image.data,x:a.addImage.options.x,y:a.addImage.options.y,w:a.addImage.options.w,h:a.addImage.options.h}):console.warn("Warning: tableToSlides.addImage requires either `path` or `data`")),a.addShape&&r.addShape(a.addShape.shapeName,a.addShape.options||{}),a.addTable&&r.addTable(a.addTable.rows,a.addTable.options||{}),a.addText&&r.addText(a.addText.text,a.addText.options||{})})}}}return Fe})(JSZip); + `),this.slideLayouts.forEach(e=>{this.createChartMediaRels(e,i,o)}),this.slides.forEach(e=>{this.createChartMediaRels(e,i,o)}),this.createChartMediaRels(this.masterSlide,i,o),yield Promise.all(o).then(()=>c(this,void 0,void 0,function*(){return"STREAM"===s.outputType?yield i.generateAsync({type:"nodebuffer",compression:s.compression?"DEFLATE":"STORE"}):s.outputType?yield i.generateAsync({type:s.outputType}):yield i.generateAsync({type:"blob",compression:s.compression?"DEFLATE":"STORE"})}))}))});this.LAYOUTS={LAYOUT_4x3:{name:"screen4x3",width:9144e3,height:6858e3},LAYOUT_16x9:{name:"screen16x9",width:9144e3,height:5143500},LAYOUT_16x10:{name:"screen16x10",width:9144e3,height:5715e3},LAYOUT_WIDE:{name:"custom",width:12192e3,height:6858e3}},this._author="PptxGenJS",this._company="PptxGenJS",this._revision="1",this._subject="PptxGenJS Presentation",this._title="PptxGenJS Presentation",this._presLayout={name:this.LAYOUTS[o].name,_sizeW:this.LAYOUTS[o].width,_sizeH:this.LAYOUTS[o].height,width:this.LAYOUTS[o].width,height:this.LAYOUTS[o].height},this._rtlMode=!1,this._slideLayouts=[{_margin:y,_name:t,_presLayout:this._presLayout,_rels:[],_relsChart:[],_relsMedia:[],_slide:null,_slideNum:1e3,_slideNumberProps:null,_slideObjects:[]}],this._slides=[],this._sections=[],this._masterSlide={addChart:null,addImage:null,addMedia:null,addNotes:null,addShape:null,addTable:null,addText:null,_name:null,_presLayout:this._presLayout,_rId:null,_rels:[],_relsChart:[],_relsMedia:[],_slideId:null,_slideLayout:null,_slideNum:null,_slideNumberProps:null,_slideObjects:[]}}stream(e){return c(this,void 0,void 0,function*(){return yield this.exportPresentation({compression:null==e?void 0:e.compression,outputType:"STREAM"})})}write(r){return c(this,void 0,void 0,function*(){var e="object"==typeof r&&null!=r&&r.outputType?r.outputType:r||null,t=!("object"!=typeof r||null==r||!r.compression)&&r.compression;return yield this.exportPresentation({compression:t,outputType:e})})}writeFile(a){return c(this,void 0,void 0,function*(){var e="undefined"!=typeof process&&!(null==(e=process.versions)||!e.node)&&"node"===(null==(e=process.release)?void 0:e.name),{fileName:t="Presentation.pptx",compression:r=!1}=("string"==typeof a&&(console.warn("[WARNING] writeFile(string) is deprecated - pass { fileName } instead."),a={fileName:a}),a),t=t.toLowerCase().endsWith(".pptx")?t:t+".pptx",r=yield this.exportPresentation({compression:r,outputType:e?"nodebuffer":null});return e?(e=(yield import("node:fs")).promises,e=e.writeFile,yield e(t,r)):yield this.writeFileToBrowser(t,r),t})}addSection(e){e?e.title||console.warn("addSection requires a title"):console.warn("addSection requires an argument");var t={_type:"user",_slides:[],title:e.title};e.order?this.sections.splice(e.order,0,t):this._sections.push(t)}addSlide(t){let r="string"==typeof t?t:null!=t&&t.masterName?t.masterName:"",e={_name:this.LAYOUTS[o].name,_presLayout:this.presLayout,_rels:[],_relsChart:[],_relsMedia:[],_slideNum:this.slides.length+1};r&&(n=this.slideLayouts.filter(e=>e._name===r)[0])&&(e=n);var a,n=new he({addSlide:this.addNewSlide,getSlide:this.getSlide,presLayout:this.presLayout,setSlideNum:this.setSlideNumber,slideId:this.slides.length+256,slideRId:this.slides.length+2,slideNumber:this.slides.length+1,slideLayout:e});return this._slides.push(n),null!=t&&t.sectionTitle?(a=this.sections.filter(e=>e.title===t.sectionTitle)[0])?a._slides.push(n):console.warn(`addSlide: unable to find section with title: "${t.sectionTitle}"`):this.sections&&0"default"===e._type).length+1),_type:"default",_slides:[n]})),n}defineLayout(e){e?e.name?e.width?e.height?"number"!=typeof e.height?console.warn("defineLayout `height` should be a number (inches)"):"number"!=typeof e.width&&console.warn("defineLayout `width` should be a number (inches)"):console.warn("defineLayout requires `height`"):console.warn("defineLayout requires `width`"):console.warn("defineLayout requires `name`"):console.warn("defineLayout requires `{name, width, height}`"),this.LAYOUTS[e.name]={name:e.name,_sizeW:Math.round(Number(e.width)*R),_sizeH:Math.round(Number(e.height)*R),width:Math.round(Number(e.width)*R),height:Math.round(Number(e.height)*R)}}defineSlideMaster(e){e=JSON.parse(JSON.stringify(e));if(!e.title)throw new Error("defineSlideMaster() object argument requires a `title` value. (https://gitbrent.github.io/PptxGenJS/docs/masters.html)");var t,n,r={_margin:e.margin||y,_name:e.title,_presLayout:this.presLayout,_rels:[],_relsChart:[],_relsMedia:[],_slide:null,_slideNum:1e3+this.slideLayouts.length+1,_slideNumberProps:e.slideNumber||null,_slideObjects:[],background:e.background||null,bkgd:e.bkgd||null};n=r,(t=e).bkgd&&(n.bkgd=t.bkgd),t.objects&&Array.isArray(t.objects)&&0{var r=Object.keys(e)[0],a=n;w[r]&&"chart"===r?ce(a,e[r].type,e[r].data,e[r].opts):w[r]&&"image"===r?pe(a,e[r]):w[r]&&"line"===r?ue(a,b.LINE,e[r]):w[r]&&"rect"===r?ue(a,b.RECTANGLE,e[r]):w[r]&&"text"===r?fe(a,[{text:e[r].text}],e[r].options,!1):w[r]&&"placeholder"===r&&(e[r].options.placeholder=e[r].options.name,delete e[r].options.name,e[r].options._placeholderType=e[r].options.type,delete e[r].options.type,e[r].options._placeholderIdx=100+t,fe(a,[{text:e[r].text}],e[r].options,!0))}),t.slideNumber&&"object"==typeof t.slideNumber&&(n._slideNumberProps=t.slideNumber),this.slideLayouts.push(r),(e.background||e.bkgd)&&de(e.background,r),r._slideNumberProps&&!this.masterSlide._slideNumberProps&&(this.masterSlide._slideNumberProps=r._slideNumberProps)}tableToSlides(t,p={}){{var[u,f,t={},d]=[this,t,p,null!=p&&p.masterSlideName?this.slideLayouts.filter(e=>e._name===p.masterSlideName)[0]:null];let a=t||{},n=void(a.slideMargin=a.slideMargin||0===a.slideMargin?a.slideMargin:.5,a.w||u.presLayout.width),o=[],i=[],s=[],A=[],r=[],l=[.5,.5,.5,.5],c=0;if(!document.getElementById(f))throw new Error('tableToSlides: Table ID "'+f+'" does not exist!');null!=d&&d._margin?(Array.isArray(d._margin)?l=d._margin:isNaN(d._margin)||(l=[d._margin,d._margin,d._margin,d._margin]),a.slideMargin=l):null!=a&&a.slideMargin&&(Array.isArray(a.slideMargin)?l=a.slideMargin:isNaN(a.slideMargin)||(l=[a.slideMargin,a.slideMargin,a.slideMargin,a.slideMargin])),n=(a.w?U(a.w):u.presLayout.width)-U(l[1]+l[3]),a.verbose&&(console.log("[[VERBOSE MODE]]"),console.log("|-- `tableToSlides` ----------------------------------------------------|"),console.log("| tableProps.h .................................... = "+a.h),console.log("| tableProps.w .................................... = "+a.w),console.log("| pptx.presLayout.width ........................... = "+(u.presLayout.width/R).toFixed(1)),console.log("| pptx.presLayout.height .......................... = "+(u.presLayout.height/R).toFixed(1)),console.log("| emuSlideTabW .................................... = "+(n/R).toFixed(1)));let e=document.querySelectorAll(`#${f} tr:first-child th`);(e=0===e.length?document.querySelectorAll(`#${f} tr:first-child td`):e).forEach(e=>{var t=e;if(t.getAttribute("colspan"))for(let e=0;e{c+=e}),r.forEach((e,t)=>{e=Number((Number(n)*(e/c*100)/100/R).toFixed(2));let r=0;var a=document.querySelector(`#${f} thead tr:first-child th:nth-child(${t+1})`),a=(a&&(r=Number(a.getAttribute("data-pptx-min-width"))),document.querySelector(`#${f} thead tr:first-child th:nth-child(${t+1})`));a&&(r=Number(a.getAttribute("data-pptx-width"))),A.push(r>e?r:e)}),a.verbose&&console.log(`| arrColW ......................................... = [${A.join(", ")}]`),["thead","tbody","tfoot"].forEach(t=>{document.querySelectorAll(`#${f} ${t} tr`).forEach(e=>{let r=[];switch(Array.from(e.cells).forEach(a=>{var e=window.getComputedStyle(a).getPropertyValue("color").replace(/\s+/gi,"").replace("rgba(","").replace("rgb(","").replace(")","").split(",");let t=window.getComputedStyle(a).getPropertyValue("background-color").replace(/\s+/gi,"").replace("rgba(","").replace("rgb(","").replace(")","").split(","),n=("rgba(0, 0, 0, 0)"!==window.getComputedStyle(a).getPropertyValue("background-color")&&!window.getComputedStyle(a).getPropertyValue("transparent")||(t=["255","255","255"]),{align:null,bold:!!("bold"===window.getComputedStyle(a).getPropertyValue("font-weight")||500<=Number(window.getComputedStyle(a).getPropertyValue("font-weight"))),border:null,color:ie(Number(e[0]),Number(e[1]),Number(e[2])),fill:{color:ie(Number(t[0]),Number(t[1]),Number(t[2]))},fontFace:(window.getComputedStyle(a).getPropertyValue("font-family")||"").split(",")[0].replace(/"/g,"").replace("inherit","").replace("initial","")||null,fontSize:Number(window.getComputedStyle(a).getPropertyValue("font-size").replace(/[a-z]/gi,"")),margin:null,colspan:Number(a.getAttribute("colspan"))||null,rowspan:Number(a.getAttribute("rowspan"))||null,valign:null});["left","center","right","start","end"].includes(window.getComputedStyle(a).getPropertyValue("text-align"))&&(e=window.getComputedStyle(a).getPropertyValue("text-align").replace("start","left").replace("end","right"),n.align="center"===e?"center":"left"===e?"left":"right"===e?"right":null),["top","middle","bottom"].includes(window.getComputedStyle(a).getPropertyValue("vertical-align"))&&(e=window.getComputedStyle(a).getPropertyValue("vertical-align"),n.valign="top"===e?"top":"middle"===e?"middle":"bottom"===e?"bottom":null),window.getComputedStyle(a).getPropertyValue("padding-left")&&(n.margin=[0,0,0,0],["padding-top","padding-right","padding-bottom","padding-left"].forEach((e,t)=>{n.margin[t]=Math.round(Number(window.getComputedStyle(a).getPropertyValue(e).replace(/\D/gi,"")))})),(window.getComputedStyle(a).getPropertyValue("border-top-width")||window.getComputedStyle(a).getPropertyValue("border-right-width")||window.getComputedStyle(a).getPropertyValue("border-bottom-width")||window.getComputedStyle(a).getPropertyValue("border-left-width"))&&(n.border=[null,null,null,null],["top","right","bottom","left"].forEach((e,t)=>{var r=Math.round(Number(window.getComputedStyle(a).getPropertyValue("border-"+e+"-width").replace("px",""))),e=window.getComputedStyle(a).getPropertyValue("border-"+e+"-color").replace(/\s+/gi,"").replace("rgba(","").replace("rgb(","").replace(")","").split(","),e=ie(Number(e[0]),Number(e[1]),Number(e[2]));n.border[t]={pt:r,color:e}})),r.push({_type:O.tablecell,text:a.innerText,options:n})}),t){case"thead":o.push(r);break;case"tbody":i.push(r);break;case"tfoot":s.push(r);break;default:console.log("table parsing: unexpected table part: "+t)}})}),a._arrObjTabHeadRows=o||null,a.colW=A,Ae([...o,...i,...s],a,u.presLayout,d).forEach((e,t)=>{var r=u.addSlide({masterName:a.masterSlideName||null});0===t&&(a.y=a.y||l[0]),0 opts.y = `+a.y),r.addTable(e.rows,{x:a.x||l[3],y:a.y,w:Number(n)/R,colW:A,autoPage:!1}),a.addImage&&(a.addImage.options=a.addImage.options||{},a.addImage.image&&(a.addImage.image.path||a.addImage.image.data)?r.addImage({path:a.addImage.image.path,data:a.addImage.image.data,x:a.addImage.options.x,y:a.addImage.options.y,w:a.addImage.options.w,h:a.addImage.options.h}):console.warn("Warning: tableToSlides.addImage requires either `path` or `data`")),a.addShape&&r.addShape(a.addShape.shapeName,a.addShape.options||{}),a.addTable&&r.addTable(a.addTable.rows,a.addTable.options||{}),a.addText&&r.addText(a.addText.text,a.addText.options||{})})}}}return Ie})(JSZip); //# sourceMappingURL=pptxgen.bundle.js.map diff --git a/demos/browser/js/pptxgen.bundle.js.map b/demos/browser/js/pptxgen.bundle.js.map index 3db05251a..f20254225 100644 --- a/demos/browser/js/pptxgen.bundle.js.map +++ b/demos/browser/js/pptxgen.bundle.js.map @@ -1 +1 @@ -{"version":3,"names":[],"mappings":"","sources":["pptxgen.bundle.js"],"sourcesContent":["/* PptxGenJS 4.0.1 @ 2025-06-25T23:35:35.101Z */\n!function(e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).JSZip=e()}(function(){return function a(n,o,i){function s(t,e){if(!o[t]){if(!n[t]){var r=\"function\"==typeof require&&require;if(!e&&r)return r(t,!0);if(A)return A(t,!0);e=new Error(\"Cannot find module '\"+t+\"'\");throw e.code=\"MODULE_NOT_FOUND\",e}r=o[t]={exports:{}};n[t][0].call(r.exports,function(e){return s(n[t][1][e]||e)},r,r.exports,a,n,o,i)}return o[t].exports}for(var A=\"function\"==typeof require&&require,e=0;e>4,o=1>6:64,i=2>2)+u.charAt(n)+u.charAt(o)+u.charAt(i));return s.join(\"\")},r.decode=function(e){var t,r,a,n,o,i=0,s=0,A=\"data:\";if(e.substr(0,A.length)===A)throw new Error(\"Invalid base64 input, it looks like a data url.\");var l,A=3*(e=e.replace(/[^A-Za-z0-9+/=]/g,\"\")).length/4;if(e.charAt(e.length-1)===u.charAt(64)&&A--,e.charAt(e.length-2)===u.charAt(64)&&A--,A%1!=0)throw new Error(\"Invalid base64 input, bad content length.\");for(l=new(c.uint8array?Uint8Array:Array)(0|A);i>4,r=(15&n)<<4|(n=u.indexOf(e.charAt(i++)))>>2,a=(3&n)<<6|(o=u.indexOf(e.charAt(i++))),l[s++]=t,64!==n&&(l[s++]=r),64!==o&&(l[s++]=a);return l}},{\"./support\":30,\"./utils\":32}],2:[function(e,t,r){var a=e(\"./external\"),n=e(\"./stream/DataWorker\"),o=e(\"./stream/Crc32Probe\"),i=e(\"./stream/DataLengthProbe\");function s(e,t,r,a,n){this.compressedSize=e,this.uncompressedSize=t,this.crc32=r,this.compression=a,this.compressedContent=n}s.prototype={getContentWorker:function(){var e=new n(a.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new i(\"data_length\")),t=this;return e.on(\"end\",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error(\"Bug : uncompressed data size mismatch\")}),e},getCompressedWorker:function(){return new n(a.Promise.resolve(this.compressedContent)).withStreamInfo(\"compressedSize\",this.compressedSize).withStreamInfo(\"uncompressedSize\",this.uncompressedSize).withStreamInfo(\"crc32\",this.crc32).withStreamInfo(\"compression\",this.compression)}},s.createWorkerFrom=function(e,t,r){return e.pipe(new o).pipe(new i(\"uncompressedSize\")).pipe(t.compressWorker(r)).pipe(new i(\"compressedSize\")).withStreamInfo(\"compression\",t)},t.exports=s},{\"./external\":6,\"./stream/Crc32Probe\":25,\"./stream/DataLengthProbe\":26,\"./stream/DataWorker\":27}],3:[function(e,t,r){var a=e(\"./stream/GenericWorker\");r.STORE={magic:\"\\0\\0\",compressWorker:function(){return new a(\"STORE compression\")},uncompressWorker:function(){return new a(\"STORE decompression\")}},r.DEFLATE=e(\"./flate\")},{\"./flate\":7,\"./stream/GenericWorker\":28}],4:[function(e,t,r){var a=e(\"./utils\"),i=(()=>{for(var e=[],t=0;t<256;t++){for(var r=t,a=0;a<8;a++)r=1&r?3988292384^r>>>1:r>>>1;e[t]=r}return e})();t.exports=function(e,t){return void 0!==e&&e.length?(\"string\"!==a.getTypeOf(e)?(e,t,r)=>{var a=i,n=0+r;e^=-1;for(var o=0;o>>8^a[255&(e^t[o])];return-1^e}:(e,t,r)=>{var a=i,n=0+r;e^=-1;for(var o=0;o>>8^a[255&(e^t.charCodeAt(o))];return-1^e})(0|t,e,e.length):0}},{\"./utils\":32}],5:[function(e,t,r){r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],6:[function(e,t,r){e=\"undefined\"!=typeof Promise?Promise:e(\"lie\");t.exports={Promise:e}},{lie:37}],7:[function(e,t,r){var a=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Uint32Array,n=e(\"pako\"),o=e(\"./utils\"),i=e(\"./stream/GenericWorker\"),s=a?\"uint8array\":\"array\";function A(e,t){i.call(this,\"FlateWorker/\"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}r.magic=\"\\b\\0\",o.inherits(A,i),A.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(o.transformTo(s,e.data),!1)},A.prototype.flush=function(){i.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},A.prototype.cleanUp=function(){i.prototype.cleanUp.call(this),this._pako=null},A.prototype._createPako=function(){this._pako=new n[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var t=this;this._pako.onData=function(e){t.push({data:e,meta:t.meta})}},r.compressWorker=function(e){return new A(\"Deflate\",e)},r.uncompressWorker=function(){return new A(\"Inflate\",{})}},{\"./stream/GenericWorker\":28,\"./utils\":32,pako:38}],8:[function(e,t,r){function v(e,t){for(var r=\"\",a=0;a>>=8;return r}function a(e,t,r,a,n,o){var i=e.file,s=e.compression,A=o!==b.utf8encode,l=y.transformTo(\"string\",o(i.name)),c=y.transformTo(\"string\",b.utf8encode(i.name)),p=i.comment,o=y.transformTo(\"string\",o(p)),u=y.transformTo(\"string\",b.utf8encode(p)),f=c.length!==i.name.length,p=u.length!==p.length,d=\"\",h=i.dir,g=i.date,m={crc32:0,compressedSize:0,uncompressedSize:0},r=(t&&!r||(m.crc32=e.crc32,m.compressedSize=e.compressedSize,m.uncompressedSize=e.uncompressedSize),0),e=(t&&(r|=8),A||!f&&!p||(r|=2048),0),t=0,g=(h&&(e|=16),\"UNIX\"===n?(t=798,e|=(65535&((A=i.unixPermissions)?A:h?16893:33204))<<16):(t=20,e|=63&(i.dosPermissions||0)),n=g.getUTCHours(),n=(n=((n<<=6)|g.getUTCMinutes())<<5)|g.getUTCSeconds()/2,A=g.getUTCFullYear()-1980,A=(A=((A<<=4)|g.getUTCMonth()+1)<<5)|g.getUTCDate(),f&&(h=v(1,1)+v(w(l),4)+c,d+=\"up\"+v(h.length,2)+h),p&&(i=v(1,1)+v(w(o),4)+u,d+=\"uc\"+v(i.length,2)+i),\"\"),g=(g=(g=(g=(g=(g=(g=(g=(g=(g+=\"\\n\\0\")+v(r,2))+s.magic)+v(n,2))+v(A,2))+v(m.crc32,4))+v(m.compressedSize,4))+v(m.uncompressedSize,4))+v(l.length,2))+v(d.length,2);return{fileRecord:x.LOCAL_FILE_HEADER+g+l+d,dirRecord:x.CENTRAL_FILE_HEADER+v(t,2)+g+v(o.length,2)+\"\\0\\0\\0\\0\"+v(e,4)+v(a,4)+l+d+o}}var y=e(\"../utils\"),n=e(\"../stream/GenericWorker\"),b=e(\"../utf8\"),w=e(\"../crc32\"),x=e(\"../signature\");function o(e,t,r,a){n.call(this,\"ZipFileWorker\"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=r,this.encodeFileName=a,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}y.inherits(o,n),o.prototype.push=function(e){var t=e.meta.percent||0,r=this.entriesCount,a=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,n.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:r?(t+100*(r-a-1))/r:100}}))},o.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;t?(e=a(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName),this.push({data:e.fileRecord,meta:{percent:0}})):this.accumulate=!0},o.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,r=a(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(r.dirRecord),t)this.push({data:(t=e,x.DATA_DESCRIPTOR+v(t.crc32,4)+v(t.compressedSize,4)+v(t.uncompressedSize,4)),meta:{percent:100}});else for(this.push({data:r.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},o.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t(n=y.transformTo(\"string\",n(a)),x.CENTRAL_DIRECTORY_END+\"\\0\\0\\0\\0\"+v(e,2)+v(e,2)+v(t,4)+v(r,4)+v(n.length,2)+n))(this.dirRecords.length,r,e,this.zipComment,this.encodeFileName);this.push({data:r,meta:{percent:100}})},o.prototype.prepareNextSource=function(){this.previous=this._sources.shift(),this.openedSource(this.previous.streamInfo),this.isPaused?this.previous.pause():this.previous.resume()},o.prototype.registerPrevious=function(e){this._sources.push(e);var t=this;return e.on(\"data\",function(e){t.processChunk(e)}),e.on(\"end\",function(){t.closedSource(t.previous.streamInfo),t._sources.length?t.prepareNextSource():t.end()}),e.on(\"error\",function(e){t.error(e)}),this},o.prototype.resume=function(){return!!n.prototype.resume.call(this)&&(!this.previous&&this._sources.length?(this.prepareNextSource(),!0):this.previous||this._sources.length||this.generatedError?void 0:(this.end(),!0))},o.prototype.error=function(e){var t=this._sources;if(!n.prototype.error.call(this,e))return!1;for(var r=0;r{if(t=l[e=e||t])return t;throw new Error(e+\" is not a valid compression method !\")})(t.options.compression,i.compression),a=t.options.compressionOptions||i.compressionOptions||{},n=t.dir,o=t.date;t._compressWorker(r,a).withStreamInfo(\"file\",{name:e,dir:n,date:o,comment:t.comment||\"\",unixPermissions:t.unixPermissions,dosPermissions:t.dosPermissions}).pipe(s)}),s.entriesCount=A}catch(e){s.error(e)}return s}},{\"../compressions\":3,\"./ZipFileWorker\":8}],10:[function(e,t,r){function a(){if(!(this instanceof a))return new a;if(arguments.length)throw new Error(\"The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.\");this.files=Object.create(null),this.comment=null,this.root=\"\",this.clone=function(){var e,t=new a;for(e in this)\"function\"!=typeof this[e]&&(t[e]=this[e]);return t}}(a.prototype=e(\"./object\")).loadAsync=e(\"./load\"),a.support=e(\"./support\"),a.defaults=e(\"./defaults\"),a.version=\"3.10.1\",a.loadAsync=function(e,t){return(new a).loadAsync(e,t)},a.external=e(\"./external\"),t.exports=a},{\"./defaults\":5,\"./external\":6,\"./load\":11,\"./object\":15,\"./support\":30}],11:[function(e,t,r){var A=e(\"./utils\"),n=e(\"./external\"),a=e(\"./utf8\"),o=e(\"./zipEntries\"),l=e(\"./stream/Crc32Probe\"),c=e(\"./nodejsUtils\");t.exports=function(e,i){var s=this;return i=A.extend(i||{},{base64:!1,checkCRC32:!1,optimizedBinaryString:!1,createFolders:!1,decodeFileName:a.utf8decode}),c.isNode&&c.isStream(e)?n.Promise.reject(new Error(\"JSZip can't accept a stream when loading a zip file.\")):A.prepareContent(\"the loaded zip file\",e,!0,i.optimizedBinaryString,i.base64).then(function(e){var t=new o(i);return t.load(e),t}).then(function(e){var t=[n.Promise.resolve(e)],r=e.files;if(i.checkCRC32)for(var a=0;anew n.Promise(function(e,t){var r=a.decompressed.getContentWorker().pipe(new l);r.on(\"error\",function(e){t(e)}).on(\"end\",function(){r.streamInfo.crc32!==a.decompressed.crc32?t(new Error(\"Corrupted zip : CRC32 mismatch\")):e()}).resume()}))(r[a]));return n.Promise.all(t)}).then(function(e){for(var e=e.shift(),t=e.files,r=0;r=this.index;t--)r=(r<<8)+this.byteAt(t);return this.index+=e,r},readString:function(e){return a.transformTo(\"string\",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=n},{\"../utils\":32}],19:[function(e,t,r){var a=e(\"./Uint8ArrayReader\");function n(e){a.call(this,e)}e(\"../utils\").inherits(n,a),n.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=n},{\"../utils\":32,\"./Uint8ArrayReader\":21}],20:[function(e,t,r){var a=e(\"./DataReader\");function n(e){a.call(this,e)}e(\"../utils\").inherits(n,a),n.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},n.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},n.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},n.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=n},{\"../utils\":32,\"./DataReader\":18}],21:[function(e,t,r){var a=e(\"./ArrayReader\");function n(e){a.call(this,e)}e(\"../utils\").inherits(n,a),n.prototype.readData=function(e){var t;return this.checkOffset(e),0===e?new Uint8Array(0):(t=this.data.subarray(this.zero+this.index,this.zero+this.index+e),this.index+=e,t)},t.exports=n},{\"../utils\":32,\"./ArrayReader\":17}],22:[function(e,t,r){var a=e(\"../utils\"),n=e(\"../support\"),o=e(\"./ArrayReader\"),i=e(\"./StringReader\"),s=e(\"./NodeBufferReader\"),A=e(\"./Uint8ArrayReader\");t.exports=function(e){var t=a.getTypeOf(e);return a.checkSupport(t),\"string\"!==t||n.uint8array?\"nodebuffer\"===t?new s(e):n.uint8array?new A(a.transformTo(\"uint8array\",e)):new o(a.transformTo(\"array\",e)):new i(e)}},{\"../support\":30,\"../utils\":32,\"./ArrayReader\":17,\"./NodeBufferReader\":19,\"./StringReader\":20,\"./Uint8ArrayReader\":21}],23:[function(e,t,r){r.LOCAL_FILE_HEADER=\"PK\u0003\u0004\",r.CENTRAL_FILE_HEADER=\"PK\u0001\u0002\",r.CENTRAL_DIRECTORY_END=\"PK\u0005\u0006\",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR=\"PK\u0006\u0007\",r.ZIP64_CENTRAL_DIRECTORY_END=\"PK\u0006\u0006\",r.DATA_DESCRIPTOR=\"PK\u0007\\b\"},{}],24:[function(e,t,r){var a=e(\"./GenericWorker\"),n=e(\"../utils\");function o(e){a.call(this,\"ConvertWorker to \"+e),this.destType=e}n.inherits(o,a),o.prototype.processChunk=function(e){this.push({data:n.transformTo(this.destType,e.data),meta:e.meta})},t.exports=o},{\"../utils\":32,\"./GenericWorker\":28}],25:[function(e,t,r){var a=e(\"./GenericWorker\"),n=e(\"../crc32\");function o(){a.call(this,\"Crc32Probe\"),this.withStreamInfo(\"crc32\",0)}e(\"../utils\").inherits(o,a),o.prototype.processChunk=function(e){this.streamInfo.crc32=n(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=o},{\"../crc32\":4,\"../utils\":32,\"./GenericWorker\":28}],26:[function(e,t,r){var a=e(\"../utils\"),n=e(\"./GenericWorker\");function o(e){n.call(this,\"DataLengthProbe for \"+e),this.propName=e,this.withStreamInfo(e,0)}a.inherits(o,n),o.prototype.processChunk=function(e){var t;e&&(t=this.streamInfo[this.propName]||0,this.streamInfo[this.propName]=t+e.data.length),n.prototype.processChunk.call(this,e)},t.exports=o},{\"../utils\":32,\"./GenericWorker\":28}],27:[function(e,t,r){var a=e(\"../utils\"),n=e(\"./GenericWorker\");function o(e){n.call(this,\"DataWorker\");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type=\"\",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=a.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}a.inherits(o,n),o.prototype.cleanUp=function(){n.prototype.cleanUp.call(this),this.data=null},o.prototype.resume=function(){return!!n.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,a.delay(this._tickAndRepeat,[],this)),!0)},o.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished)||(a.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0)},o.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case\"string\":e=this.data.substring(this.index,t);break;case\"uint8array\":e=this.data.subarray(this.index,t);break;case\"array\":case\"nodebuffer\":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=o},{\"../utils\":32,\"./GenericWorker\":28}],28:[function(e,t,r){function a(e){this.name=e||\"default\",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}a.prototype={push:function(e){this.emit(\"data\",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit(\"end\"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit(\"error\",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit(\"error\",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var r=0;r \"+e:e}},t.exports=a},{}],29:[function(e,t,r){var A=e(\"../utils\"),n=e(\"./ConvertWorker\"),o=e(\"./GenericWorker\"),l=e(\"../base64\"),a=e(\"../support\"),i=e(\"../external\"),s=null;if(a.nodestream)try{s=e(\"../nodejs/NodejsStreamOutputAdapter\")}catch(e){}function c(e,s){return new i.Promise(function(t,r){var a=[],n=e._internalType,o=e._outputType,i=e._mimeType;e.on(\"data\",function(e,t){a.push(e),s&&s(t)}).on(\"error\",function(e){a=[],r(e)}).on(\"end\",function(){try{var e=((e,t,r)=>{switch(e){case\"blob\":return A.newBlob(A.transformTo(\"arraybuffer\",t),r);case\"base64\":return l.encode(t);default:return A.transformTo(e,t)}})(o,((e,t)=>{for(var r=0,a=null,n=0,o=0;o>>6:(r<65536?t[n++]=224|r>>>12:(t[n++]=240|r>>>18,t[n++]=128|r>>>12&63),t[n++]=128|r>>>6&63),t[n++]=128|63&r);return t},n.utf8decode=function(e){if(l.nodebuffer)return A.transformTo(\"nodebuffer\",e).toString(\"utf-8\");for(var t,r,a,n=e=A.transformTo(l.uint8array?\"uint8array\":\"array\",e),o=n.length,i=new Array(2*o),s=t=0;s>10&1023,i[t++]=56320|1023&r)}return i.length!==t&&(i.subarray?i=i.subarray(0,t):i.length=t),A.applyFromCharCode(i)},A.inherits(o,r),o.prototype.processChunk=function(e){var t=A.transformTo(l.uint8array?\"uint8array\":\"array\",e.data),r=(this.leftOver&&this.leftOver.length&&(l.uint8array?(r=t,(t=new Uint8Array(r.length+this.leftOver.length)).set(this.leftOver,0),t.set(r,this.leftOver.length)):t=this.leftOver.concat(t),this.leftOver=null),((e,t)=>{for(var r=(t=(t=t||e.length)>e.length?e.length:t)-1;0<=r&&128==(192&e[r]);)r--;return!(r<0)&&0!==r&&r+p[e[r]]>t?r:t})(t)),a=t;r!==t.length&&(l.uint8array?(a=t.subarray(0,r),this.leftOver=t.subarray(r,t.length)):(a=t.slice(0,r),this.leftOver=t.slice(r,t.length))),this.push({data:n.utf8decode(a),meta:e.meta})},o.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:n.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},n.Utf8DecodeWorker=o,A.inherits(i,r),i.prototype.processChunk=function(e){this.push({data:n.utf8encode(e.data),meta:e.meta})},n.Utf8EncodeWorker=i},{\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./support\":30,\"./utils\":32}],32:[function(e,t,i){var s=e(\"./support\"),A=e(\"./base64\"),r=e(\"./nodejsUtils\"),l=e(\"./external\");function a(e){return e}function c(e,t){for(var r=0;r{try{return s.uint8array&&1===String.fromCharCode.apply(null,new Uint8Array(1)).length}catch(e){return!1}})(),nodebuffer:(()=>{try{return s.nodebuffer&&1===String.fromCharCode.apply(null,r.allocBuffer(1)).length}catch(e){return!1}})()}};function o(e){var t=65536,r=i.getTypeOf(e),a=!0;if(\"uint8array\"===r?a=n.applyCanBeUsed.uint8array:\"nodebuffer\"===r&&(a=n.applyCanBeUsed.nodebuffer),a)for(;1{for(var t in A)if(Object.prototype.hasOwnProperty.call(A,t)&&A[t].magic===e)return A[t];return null})(this.compressionMethod)))throw new Error(\"Corrupted zip : compression \"+n.pretty(this.compressionMethod)+\" unknown (inner file : \"+n.transformTo(\"string\",this.fileName)+\")\");this.decompressed=new o(this.compressedSize,this.uncompressedSize,this.crc32,t,e.readData(this.compressedSize))},readCentralPart:function(e){this.versionMadeBy=e.readInt(2),e.skip(2),this.bitFlag=e.readInt(2),this.compressionMethod=e.readString(2),this.date=e.readDate(),this.crc32=e.readInt(4),this.compressedSize=e.readInt(4),this.uncompressedSize=e.readInt(4);var t=e.readInt(2);if(this.extraFieldsLength=e.readInt(2),this.fileCommentLength=e.readInt(2),this.diskNumberStart=e.readInt(2),this.internalFileAttributes=e.readInt(2),this.externalFileAttributes=e.readInt(4),this.localHeaderOffset=e.readInt(4),this.isEncrypted())throw new Error(\"Encrypted zip are not supported\");e.skip(t),this.readExtraFields(e),this.parseZIP64ExtraField(e),this.fileComment=e.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var e=this.versionMadeBy>>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||\"/\"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){var e;this.extraFields[1]&&(e=a(this.extraFields[1].value),this.uncompressedSize===n.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===n.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===n.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===n.MAX_VALUE_32BITS)&&(this.diskNumberStart=e.readInt(4))},readExtraFields:function(e){var t,r,a,n=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4{r.resolve(e).then(function(e){o[t]=e,++i!==a||n||(n=!0,l.resolve(s,o))},function(e){n||(n=!0,l.reject(s,e))})})(e[t],t);return s},s.race=function(e){if(\"[object Array]\"!==Object.prototype.toString.call(e))return this.reject(new TypeError(\"must be an array\"));var t=e.length,r=!1;if(!t)return this.resolve([]);for(var a,n=-1,o=new this(A);++n>>6:(r<65536?t[n++]=224|r>>>12:(t[n++]=240|r>>>18,t[n++]=128|r>>>12&63),t[n++]=128|r>>>6&63),t[n++]=128|63&r);return t},r.buf2binstring=function(e){return c(e,e.length)},r.binstring2buf=function(e){for(var t=new A.Buf8(e.length),r=0,a=t.length;r>10&1023,i[r++]=56320|1023&a)}return c(i,r)},r.utf8border=function(e,t){for(var r=(t=(t=t||e.length)>e.length?e.length:t)-1;0<=r&&128==(192&e[r]);)r--;return!(r<0)&&0!==r&&r+l[e[r]]>t?r:t}},{\"./common\":41}],43:[function(e,t,r){t.exports=function(e,t,r,a){for(var n=65535&e|0,o=e>>>16&65535|0,i=0;0!==r;){for(r-=i=2e3{for(var e=[],t=0;t<256;t++){for(var r=t,a=0;a<8;a++)r=1&r?3988292384^r>>>1:r>>>1;e[t]=r}return e})();t.exports=function(e,t,r,a){var n=s,o=a+r;e^=-1;for(var i=a;i>>8^n[255&(e^t[i])];return-1^e}},{}],46:[function(e,R,t){var s,p=e(\"../utils/common\"),A=e(\"./trees\"),u=e(\"./adler32\"),f=e(\"./crc32\"),r=e(\"./messages\"),l=0,c=0,d=-2,a=2,h=8,n=286,o=30,i=19,O=2*n+1,M=15,g=3,m=258,v=m+g+1,y=42,b=113;function w(e,t){return e.msg=r[t],t}function x(e){return(e<<1)-(4>>8&255,e.pending_buf[e.pending++]=255&t}function T(e,t){var r,a,n=e.max_chain_length,o=e.strstart,i=e.prev_length,s=e.nice_match,A=e.w_size-v>=2),e.lookaheadA&&0!=--n);return i<=e.lookahead?i:e.lookahead}function B(e){var t,r,a,n,o,i,s,A,l,c=e.w_size;do{if(A=e.window_size-e.lookahead-e.strstart,c+(c-v)<=e.strstart){for(p.arraySet(e.window,e.window,c,c,0),e.match_start-=c,e.strstart-=c,e.block_start-=c,t=r=e.hash_size;a=e.head[--t],e.head[t]=c<=a?a-c:0,--r;);for(t=r=c;a=e.prev[--t],e.prev[t]=c<=a?a-c:0,--r;);A+=c}if(0===e.strm.avail_in)break;if(i=e.window,s=e.strstart+e.lookahead,l=void 0,r=0===(l=(A=A)<(l=(o=e.strm).avail_in)?A:l)?0:(o.avail_in-=l,p.arraySet(i,o.input,o.next_in,l,s),1===o.state.wrap?o.adler=u(o.adler,i,l,s):2===o.state.wrap&&(o.adler=f(o.adler,i,l,s)),o.next_in+=l,o.total_in+=l,l),e.lookahead+=r,g<=e.lookahead+e.insert)for(n=e.strstart-e.insert,e.ins_h=e.window[n],e.ins_h=(e.ins_h<=g){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(B(e),0===e.lookahead&&t===l)return 1;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var a=e.block_start+r;if((0===e.strstart||e.strstart>=a)&&(e.lookahead=e.strstart-a,e.strstart=a,S(e,!1),0===e.strm.avail_out))return 1;if(e.w_size-v<=e.strstart-e.block_start&&(S(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(S(e,!0),0===e.strm.avail_out?3:4):(e.strstart>e.block_start&&(S(e,!1),e.strm.avail_out),1)}),new _(4,4,8,4,D),new _(4,5,16,8,D),new _(4,6,32,32,D),new _(4,4,16,16,k),new _(8,16,32,32,k),new _(8,16,128,128,k),new _(8,32,128,256,k),new _(32,128,258,1024,k),new _(32,258,258,4096,k)],t.deflateInit=function(e,t){return I(e,t,h,15,8,0)},t.deflateInit2=I,t.deflateReset=F,t.deflateResetKeep=N,t.deflateSetHeader=function(e,t){return!e||!e.state||2!==e.state.wrap?d:(e.state.gzhead=t,c)},t.deflate=function(e,t){var r,a,n,o;if(!e||!e.state||5>8&255),L(a,a.gzhead.time>>16&255),L(a,a.gzhead.time>>24&255),L(a,9===a.level?2:2<=a.strategy||a.level<2?4:0),L(a,255&a.gzhead.os),a.gzhead.extra&&a.gzhead.extra.length&&(L(a,255&a.gzhead.extra.length),L(a,a.gzhead.extra.length>>8&255)),a.gzhead.hcrc&&(e.adler=f(e.adler,a.pending_buf,a.pending,0)),a.gzindex=0,a.status=69):(L(a,0),L(a,0),L(a,0),L(a,0),L(a,0),L(a,9===a.level?2:2<=a.strategy||a.level<2?4:0),L(a,3),a.status=b)):(i=h+(a.w_bits-8<<4)<<8,i|=(2<=a.strategy||a.level<2?0:a.level<6?1:6===a.level?2:3)<<6,0!==a.strstart&&(i|=32),i+=31-i%31,a.status=b,E(a,i),0!==a.strstart&&(E(a,e.adler>>>16),E(a,65535&e.adler)),e.adler=1)),69===a.status)if(a.gzhead.extra){for(n=a.pending;a.gzindex<(65535&a.gzhead.extra.length)&&(a.pending!==a.pending_buf_size||(a.gzhead.hcrc&&a.pending>n&&(e.adler=f(e.adler,a.pending_buf,a.pending-n,n)),P(e),n=a.pending,a.pending!==a.pending_buf_size));)L(a,255&a.gzhead.extra[a.gzindex]),a.gzindex++;a.gzhead.hcrc&&a.pending>n&&(e.adler=f(e.adler,a.pending_buf,a.pending-n,n)),a.gzindex===a.gzhead.extra.length&&(a.gzindex=0,a.status=73)}else a.status=73;if(73===a.status)if(a.gzhead.name){n=a.pending;do{if(a.pending===a.pending_buf_size&&(a.gzhead.hcrc&&a.pending>n&&(e.adler=f(e.adler,a.pending_buf,a.pending-n,n)),P(e),n=a.pending,a.pending===a.pending_buf_size)){o=1;break}}while(o=a.gzindexn&&(e.adler=f(e.adler,a.pending_buf,a.pending-n,n)),0===o&&(a.gzindex=0,a.status=91)}else a.status=91;if(91===a.status)if(a.gzhead.comment){n=a.pending;do{if(a.pending===a.pending_buf_size&&(a.gzhead.hcrc&&a.pending>n&&(e.adler=f(e.adler,a.pending_buf,a.pending-n,n)),P(e),n=a.pending,a.pending===a.pending_buf_size)){o=1;break}}while(o=a.gzindexn&&(e.adler=f(e.adler,a.pending_buf,a.pending-n,n)),0===o&&(a.status=103)}else a.status=103;if(103===a.status&&(a.gzhead.hcrc?(a.pending+2>a.pending_buf_size&&P(e),a.pending+2<=a.pending_buf_size&&(L(a,255&e.adler),L(a,e.adler>>8&255),e.adler=0,a.status=b)):a.status=b),0!==a.pending){if(P(e),0===e.avail_out)return a.last_flush=-1,c}else if(0===e.avail_in&&x(t)<=x(r)&&4!==t)return w(e,-5);if(666===a.status&&0!==e.avail_in)return w(e,-5);if(0!==e.avail_in||0!==a.lookahead||t!==l&&666!==a.status){var i=2===a.strategy?((e,t)=>{for(var r;;){if(0===e.lookahead&&(B(e),0===e.lookahead)){if(t===l)return 1;break}if(e.match_length=0,r=A._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(S(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(S(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(S(e,!1),0===e.strm.avail_out)?1:2})(a,t):3===a.strategy?((e,t)=>{for(var r,a,n,o,i=e.window;;){if(e.lookahead<=m){if(B(e),e.lookahead<=m&&t===l)return 1;if(0===e.lookahead)break}if(e.match_length=0,g<=e.lookahead&&0>8&255),L(a,e.adler>>16&255),L(a,e.adler>>24&255),L(a,255&e.total_in),L(a,e.total_in>>8&255),L(a,e.total_in>>16&255),L(a,e.total_in>>24&255)):(E(a,e.adler>>>16),E(a,65535&e.adler)),P(e),0=g;){for(a=r.strstart,n=r.lookahead-(g-1);r.ins_h=(r.ins_h<>>=a=r>>>24,x-=a,0==(a=r>>>16&255))f[u++]=65535&r;else{if(!(16&a)){if(0==(64&a)){r=C[(65535&r)+(w&(1<>>=a,x-=a),x<15&&(w+=c[l++]<>>=a=r>>>24,x-=a,!(16&(a=r>>>16&255))){if(0==(64&a)){r=P[(65535&r)+(w&(1<>>=a,x-=a,(a=u-d)>3,w&=(1<<(x-=n<<3))-1,e.next_in=l,e.next_out=u,e.avail_in=l>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function o(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new k.Buf16(320),this.work=new k.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function i(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=\"\",t.wrap&&(e.adler=1&t.wrap),t.mode=M,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new k.Buf32(a),t.distcode=t.distdyn=new k.Buf32(n),t.sane=1,t.back=-1,R):O}function s(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,i(e)):O}function A(e,t){var r,a;return!e||!e.state||(a=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15>>8&255,r.check=N(r.check,E,2,0),c=l=0,r.mode=2;else if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&l)<<8)+(l>>8))%31)e.msg=\"incorrect header check\",r.mode=30;else if(8!=(15&l))e.msg=\"unknown compression method\",r.mode=30;else{if(c-=4,x=8+(15&(l>>>=4)),0===r.wbits)r.wbits=x;else if(x>r.wbits){e.msg=\"invalid window size\",r.mode=30;break}r.dmax=1<>8&1),512&r.flags&&(E[0]=255&l,E[1]=l>>>8&255,r.check=N(r.check,E,2,0)),c=l=0,r.mode=3;case 3:for(;c<32;){if(0===s)break e;s--,l+=a[o++]<>>8&255,E[2]=l>>>16&255,E[3]=l>>>24&255,r.check=N(r.check,E,4,0)),c=l=0,r.mode=4;case 4:for(;c<16;){if(0===s)break e;s--,l+=a[o++]<>8),512&r.flags&&(E[0]=255&l,E[1]=l>>>8&255,r.check=N(r.check,E,2,0)),c=l=0,r.mode=5;case 5:if(1024&r.flags){for(;c<16;){if(0===s)break e;s--,l+=a[o++]<>>8&255,r.check=N(r.check,E,2,0)),c=l=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&((f=s<(f=r.length)?s:f)&&(r.head&&(x=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),k.arraySet(r.head.extra,a,o,f,x)),512&r.flags&&(r.check=N(r.check,a,f,o)),s-=f,o+=f,r.length-=f),r.length))break e;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===s)break e;for(f=0;x=a[o+f++],r.head&&x&&r.length<65536&&(r.head.name+=String.fromCharCode(x)),x&&f>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=12;break;case 10:for(;c<32;){if(0===s)break e;s--,l+=a[o++]<>>=7&c,c-=7&c,r.mode=27;else{for(;c<3;){if(0===s)break e;s--,l+=a[o++]<>>=1)){case 0:r.mode=14;break;case 1:B=D=void 0;var B,D=r;if(G){for(U=new k.Buf32(512),j=new k.Buf32(32),B=0;B<144;)D.lens[B++]=8;for(;B<256;)D.lens[B++]=9;for(;B<280;)D.lens[B++]=7;for(;B<288;)D.lens[B++]=8;for(I(1,D.lens,0,288,U,0,D.work,{bits:9}),B=0;B<32;)D.lens[B++]=5;I(2,D.lens,0,32,j,0,D.work,{bits:5}),G=!1}if(D.lencode=U,D.lenbits=9,D.distcode=j,D.distbits=5,r.mode=20,6!==t)break;l>>>=2,c-=2;break e;case 2:r.mode=17;break;case 3:e.msg=\"invalid block type\",r.mode=30}l>>>=2,c-=2}break;case 14:for(l>>>=7&c,c-=7&c;c<32;){if(0===s)break e;s--,l+=a[o++]<>>16^65535)){e.msg=\"invalid stored block lengths\",r.mode=30;break}if(r.length=65535&l,c=l=0,r.mode=15,6===t)break e;case 15:r.mode=16;case 16:if(f=r.length){if(0===(f=A<(f=s>>=5,c-=5,r.ndist=1+(31&l),l>>>=5,c-=5,r.ncode=4+(15&l),l>>>=4,c-=4,286>>=3,c-=3}for(;r.have<19;)r.lens[T[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,P={bits:r.lenbits},C=I(0,r.lens,0,19,r.lencode,0,r.work,P),r.lenbits=P.bits,C){e.msg=\"invalid code lengths set\",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have>>16&255,v=65535&L,!((g=L>>>24)<=c);){if(0===s)break e;s--,l+=a[o++]<>>=g,c-=g,r.lens[r.have++]=v;else{if(16===v){for(S=g+2;c>>=g,c-=g,0===r.have){e.msg=\"invalid bit length repeat\",r.mode=30;break}x=r.lens[r.have-1],f=3+(3&l),l>>>=2,c-=2}else if(17===v){for(S=g+3;c>>=g)),l>>>=3,c=c-g-3}else{for(S=g+7;c>>=g)),l>>>=7,c=c-g-7}if(r.have+f>r.nlen+r.ndist){e.msg=\"invalid bit length repeat\",r.mode=30;break}for(;f--;)r.lens[r.have++]=x}}if(30===r.mode)break;if(0===r.lens[256]){e.msg=\"invalid code -- missing end-of-block\",r.mode=30;break}if(r.lenbits=9,P={bits:r.lenbits},C=I(1,r.lens,0,r.nlen,r.lencode,0,r.work,P),r.lenbits=P.bits,C){e.msg=\"invalid literal/lengths set\",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,P={bits:r.distbits},C=I(2,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,P),r.distbits=P.bits,C){e.msg=\"invalid distances set\",r.mode=30;break}if(r.mode=20,6===t)break e;case 20:r.mode=21;case 21:if(6<=s&&258<=A){e.next_out=i,e.avail_out=A,e.next_in=o,e.avail_in=s,r.hold=l,r.bits=c,F(e,u),i=e.next_out,n=e.output,A=e.avail_out,o=e.next_in,a=e.input,s=e.avail_in,l=r.hold,c=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;m=(L=r.lencode[l&(1<>>16&255,v=65535&L,!((g=L>>>24)<=c);){if(0===s)break e;s--,l+=a[o++]<>y)])>>>16&255,v=65535&L,!(y+(g=L>>>24)<=c);){if(0===s)break e;s--,l+=a[o++]<>>=y,c-=y,r.back+=y}if(l>>>=g,c-=g,r.back+=g,r.length=v,0===m){r.mode=26;break}if(32&m){r.back=-1,r.mode=12;break}if(64&m){e.msg=\"invalid literal/length code\",r.mode=30;break}r.extra=15&m,r.mode=22;case 22:if(r.extra){for(S=r.extra;c>>=r.extra,c-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;m=(L=r.distcode[l&(1<>>16&255,v=65535&L,!((g=L>>>24)<=c);){if(0===s)break e;s--,l+=a[o++]<>y)])>>>16&255,v=65535&L,!(y+(g=L>>>24)<=c);){if(0===s)break e;s--,l+=a[o++]<>>=y,c-=y,r.back+=y}if(l>>>=g,c-=g,r.back+=g,64&m){e.msg=\"invalid distance code\",r.mode=30;break}r.offset=v,r.extra=15&m,r.mode=24;case 24:if(r.extra){for(S=r.extra;c>>=r.extra,c-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg=\"invalid distance too far back\",r.mode=30;break}r.mode=25;case 25:if(0===A)break e;if(r.offset>(f=u-A)){if((f=r.offset-f)>r.whave&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break}d=f>r.wnext?(f-=r.wnext,r.wsize-f):r.wnext-f,f>r.length&&(f=r.length),h=r.window}else h=n,d=i-r.offset,f=r.length;for(A-=f=Af?(h=_[N+i[y]],T[B+i[y]]):(h=96,0),A=1<<(d=v-P),b=l=1<>P)+(l-=A)]=d<<24|h<<16|g|0,0!==l;);for(A=1<>=1;if(0!==A?E=(E&A-1)+A:E=0,y++,0==--D[v]){if(v===w)break;v=t[r+i[y]]}if(x>>7)]}function o(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function C(e,t,r){e.bi_valid>a-r?(e.bi_buf|=t<>a-e.bi_valid,e.bi_valid+=r-a):(e.bi_buf|=t<>>=1,r<<=1,0<--t;);return r>>>1}function L(e,t,r){for(var a,n=new Array(16),o=0,i=1;i<=15;i++)n[i]=o=o+r[i-1]<<1;for(a=0;a<=t;a++){var s=e[2*a+1];0!==s&&(e[2*a]=S(n[s]++,s))}}function E(e){for(var t=0;t<286;t++)e.dyn_ltree[2*t]=0;for(t=0;t<30;t++)e.dyn_dtree[2*t]=0;for(t=0;t<19;t++)e.bl_tree[2*t]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.last_lit=e.matches=0}function T(e){8>1;1<=r;r--)B(e,o,r);for(n=A;r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],B(e,o,1),a=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=a,o[2*n]=o[2*r]+o[2*a],e.depth[n]=(e.depth[r]>=e.depth[a]?e.depth[r]:e.depth[a])+1,o[2*r+1]=o[2*a+1]=n,e.heap[1]=n++,B(e,o,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1];for(var c,p,u,f,d,h=e,g=t.dyn_tree,m=t.max_code,v=t.stat_desc.static_tree,y=t.stat_desc.has_stree,b=t.stat_desc.extra_bits,w=t.stat_desc.extra_base,x=t.stat_desc.max_length,C=0,P=0;P<=15;P++)h.bl_count[P]=0;for(g[2*h.heap[h.heap_max]+1]=0,c=h.heap_max+1;c<573;c++)x<(P=g[2*g[2*(p=h.heap[c])+1]+1]+1)&&(P=x,C++),g[2*p+1]=P,m>=7;i<30;i++)for(y[i]=n<<7,t=0;t<1<{for(var t=4093624447,r=0;r<=31;r++,t>>>=1)if(1&t&&0!==e.dyn_ltree[2*r])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(r=32;r<256;r++)if(0!==e.dyn_ltree[2*r])return 1;return 0})(e)),k(e,e.l_desc),k(e,e.d_desc),s=(e=>{var t;for(_(e,e.dyn_ltree,e.l_desc.max_code),_(e,e.dyn_dtree,e.d_desc.max_code),k(e,e.bl_desc),t=18;3<=t&&0===e.bl_tree[2*c[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t})(e),(o=e.static_len+3+7>>>3)<=(n=e.opt_len+3+7>>>3)&&(n=o)):n=o=r+5,r+4<=n&&-1!==t)I(e,t,r,a);else if(4===e.strategy||o===n)C(e,2+(a?1:0),3),D(e,p,u);else{C(e,4+(a?1:0),3);var A=e,l=(t=e.l_desc.max_code+1,r=e.d_desc.max_code+1,s+1);for(C(A,t-257,5),C(A,r-1,5),C(A,l-4,4),i=0;i>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(d[r]+256+1)]++,e.dyn_dtree[2*x(t)]++),e.last_lit===e.lit_bufsize-1},t._tr_align=function(e){C(e,2,3),P(e,256,p),16===(e=e).bi_valid?(o(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):8<=e.bi_valid&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}},{\"../utils/common\":41}],53:[function(e,t,r){t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,r){!function(e){function n(e){delete c[e]}function o(e){if(p)setTimeout(o,0,e);else{var t=c[e];if(t){p=!0;try{var r=t.callback,a=t.args;switch(a.length){case 0:r();break;case 1:r(a[0]);break;case 2:r(a[0],a[1]);break;case 3:r(a[0],a[1],a[2]);break;default:r.apply(i,a)}}finally{n(e),p=!1}}}}function t(e){e.source===r&&\"string\"==typeof e.data&&0===e.data.indexOf(A)&&o(+e.data.slice(A.length))}var r,i,a,s,A,l,c,p,u,f;(r=\"undefined\"==typeof self?void 0===e?this:e:self).setImmediate||(l=1,p=!(c={}),u=r.document,e=(e=Object.getPrototypeOf&&Object.getPrototypeOf(r))&&e.setTimeout?e:r,f=\"[object process]\"==={}.toString.call(r.process)?function(e){process.nextTick(function(){o(e)})}:(()=>{var e,t;if(r.postMessage&&!r.importScripts)return e=!0,t=r.onmessage,r.onmessage=function(){e=!1},r.postMessage(\"\",\"*\"),r.onmessage=t,e})()?(A=\"setImmediate$\"+Math.random()+\"$\",r.addEventListener?r.addEventListener(\"message\",t,!1):r.attachEvent(\"onmessage\",t),function(e){r.postMessage(A+e,\"*\")}):r.MessageChannel?((s=new MessageChannel).port1.onmessage=function(e){o(e.data)},function(e){s.port2.postMessage(e)}):u&&\"onreadystatechange\"in u.createElement(\"script\")?(a=u.documentElement,function(e){var t=u.createElement(\"script\");t.onreadystatechange=function(){o(e),t.onreadystatechange=null,a.removeChild(t),t=null},a.appendChild(t)}):function(e){setTimeout(o,0,e)},e.setImmediate=function(e){\"function\"!=typeof e&&(e=new Function(\"\"+e));for(var t=new Array(arguments.length-1),r=0;r{function e(e,t,r){if(this instanceof a){switch(arguments.length){case 0:return new a;case 1:return new a(e);case 2:return new a(e,t)}return new a(e,t,r)}return a.apply(this,arguments)}return e[w]=a[w],e})(o):l&&\"function\"==typeof o?v(Function.call,o):o,l&&((u.virtual||(u.virtual={}))[a]=o,e&h.R)&&f&&!f[a]&&y(f,a,o))}var g=e(24),m=e(18),v=e(19),y=e(26),b=e(25),w=\"prototype\";h.F=1,h.G=2,h.S=4,h.P=8,h.B=16,h.W=32,h.U=64,h.R=128,t.exports=h},{18:18,19:19,24:24,25:25,26:26}],23:[function(e,t,r){t.exports=function(e){try{return!!e()}catch(e){return!0}}},{}],24:[function(e,t,r){t=t.exports=\"undefined\"!=typeof window&&window.Math==Math?window:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")();\"number\"==typeof __g&&(__g=t)},{}],25:[function(e,t,r){var a={}.hasOwnProperty;t.exports=function(e,t){return a.call(e,t)}},{}],26:[function(e,t,r){var a=e(29),n=e(30);t.exports=e(20)?function(e,t,r){return a.f(e,t,n(1,r))}:function(e,t,r){return e[t]=r,e}},{20:20,29:29,30:30}],27:[function(e,t,r){t.exports=!e(20)&&!e(23)(function(){return 7!=Object.defineProperty(e(21)(\"div\"),\"a\",{get:function(){return 7}}).a})},{20:20,21:21,23:23}],28:[function(e,t,r){t.exports=function(e){return\"object\"==typeof e?null!==e:\"function\"==typeof e}},{}],29:[function(e,t,r){var a=e(17),n=e(27),o=e(31),i=Object.defineProperty;r.f=e(20)?Object.defineProperty:function(e,t,r){if(a(e),t=o(t,!0),a(r),n)try{return i(e,t,r)}catch(e){}if(\"get\"in r||\"set\"in r)throw TypeError(\"Accessors not supported!\");return\"value\"in r&&(e[t]=r.value),e}},{17:17,20:20,27:27,31:31}],30:[function(e,t,r){t.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},{}],31:[function(e,t,r){var n=e(28);t.exports=function(e,t){if(!n(e))return e;var r,a;if(t&&\"function\"==typeof(r=e.toString)&&!n(a=r.call(e))||\"function\"==typeof(r=e.valueOf)&&!n(a=r.call(e))||!t&&\"function\"==typeof(r=e.toString)&&!n(a=r.call(e)))return a;throw TypeError(\"Can't convert object to primitive value\")}},{28:28}],32:[function(e,t,r){var a=e(22);a(a.G,{global:e(24)})},{22:22,24:24}],33:[function(e,t,r){arguments[4][16][0].apply(r,arguments)},{16:16}],34:[function(e,t,r){var a=e(48);t.exports=function(e,t){if(\"number\"!=typeof e&&\"Number\"!=a(e))throw TypeError(t);return+e}},{48:48}],35:[function(e,t,r){var a=e(152)(\"unscopables\"),n=Array.prototype;null==n[a]&&e(72)(n,a,{}),t.exports=function(e){n[a][e]=!0}},{152:152,72:72}],36:[function(e,t,r){var a=e(129)(!0);t.exports=function(e,t,r){return t+(r?a(e,t).length:1)}},{129:129}],37:[function(e,t,r){t.exports=function(e,t,r,a){if(!(e instanceof t)||void 0!==a&&a in e)throw TypeError(r+\": incorrect invocation!\");return e}},{}],38:[function(e,t,r){arguments[4][17][0].apply(r,arguments)},{17:17,81:81}],39:[function(e,t,r){var A=e(142),l=e(137),c=e(141);t.exports=[].copyWithin||function(e,t){var r=A(this),a=c(r.length),n=l(e,a),o=l(t,a),e=2{try{return e[t]}catch(e){}})(e=Object(e),n))?t:o?a(e):\"Object\"==(t=a(e))&&\"function\"==typeof e.callee?\"Arguments\":t}},{152:152,48:48}],48:[function(e,t,r){var a={}.toString;t.exports=function(e){return a.call(e).slice(8,-1)}},{}],49:[function(e,t,r){function i(e,t){var r,a=d(t);if(\"F\"!==a)return e._i[a];for(r=e._f;r;r=r.n)if(r.k==t)return r}var s=e(99).f,A=e(98),l=e(117),c=e(54),p=e(37),u=e(68),a=e(85),n=e(87),o=e(123),f=e(58),d=e(94).fastKey,h=e(149),g=f?\"_s\":\"size\";t.exports={getConstructor:function(e,n,r,a){var o=e(function(e,t){p(e,o,n,\"_i\"),e._t=n,e._i=A(null),e._f=void 0,e._l=void 0,e[g]=0,null!=t&&u(t,r,e[a],e)});return l(o.prototype,{clear:function(){for(var e=h(this,n),t=e._i,r=e._f;r;r=r.n)r.r=!0,r.p&&(r.p=r.p.n=void 0),delete t[r.i];e._f=e._l=void 0,e[g]=0},delete:function(e){var t,r,a=h(this,n),e=i(a,e);return e&&(t=e.n,r=e.p,delete a._i[e.i],e.r=!0,r&&(r.n=t),t&&(t.p=r),a._f==e&&(a._f=t),a._l==e&&(a._l=r),a[g]--),!!e},forEach:function(e){h(this,n);for(var t,r=c(e,1i;)o.call(e,a=n[i++])&&t.push(a);return t}},{104:104,107:107,108:108}],62:[function(e,t,r){function f(e,t,r){var a,n,o,i=e&f.F,s=e&f.G,A=e&f.P,l=e&f.B,c=s?d:e&f.S?d[t]||(d[t]={}):(d[t]||{})[y],p=s?h:h[t]||(h[t]={}),u=p[y]||(p[y]={});for(a in r=s?t:r)n=((o=!i&&c&&void 0!==c[a])?c:r)[a],o=l&&o?v(n,d):A&&\"function\"==typeof n?v(Function.call,n):n,c&&m(c,a,n,e&f.U),p[a]!=n&&g(p,a,o),A&&u[a]!=n&&(u[a]=n)}var d=e(70),h=e(52),g=e(72),m=e(118),v=e(54),y=\"prototype\";d.core=h,f.F=1,f.G=2,f.S=4,f.P=8,f.B=16,f.W=32,f.U=64,f.R=128,t.exports=f},{118:118,52:52,54:54,70:70,72:72}],63:[function(e,t,r){var a=e(152)(\"match\");t.exports=function(t){var r=/./;try{\"/./\"[t](r)}catch(e){try{return r[a]=!1,!\"/./\"[t](r)}catch(e){}}return!0}},{152:152}],64:[function(e,t,r){arguments[4][23][0].apply(r,arguments)},{23:23}],65:[function(e,t,r){e(248);var a,A=e(118),l=e(72),c=e(64),p=e(57),u=e(152),f=e(120),d=u(\"species\"),h=!c(function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:\"7\"},e},\"7\"!==\"\".replace(e,\"$\")}),g=(a=(e=/(?:)/).exec,e.exec=function(){return a.apply(this,arguments)},2===(e=\"ab\".split(e)).length&&\"a\"===e[0]&&\"b\"===e[1]);t.exports=function(r,e,t){var o,a,n=u(r),i=!c(function(){var e={};return e[n]=function(){return 7},7!=\"\"[r](e)}),s=i?!c(function(){var e=!1,t=/a/;return t.exec=function(){return e=!0,null},\"split\"===r&&(t.constructor={},t.constructor[d]=function(){return t}),t[n](\"\"),!e}):void 0;i&&s&&(\"replace\"!==r||h)&&(\"split\"!==r||g)||(o=/./[n],t=(s=t(p,n,\"\"[r],function(e,t,r,a,n){return t.exec===f?i&&!n?{done:!0,value:o.call(t,r,a)}:{done:!0,value:e.call(r,t,a)}:{done:!1}}))[0],a=s[1],A(String.prototype,r,t),l(RegExp.prototype,n,2==e?function(e,t){return a.call(e,this,t)}:function(e){return a.call(e,this)}))}},{118:118,120:120,152:152,248:248,57:57,64:64,72:72}],66:[function(e,t,r){var a=e(38);t.exports=function(){var e=a(this),t=\"\";return e.global&&(t+=\"g\"),e.ignoreCase&&(t+=\"i\"),e.multiline&&(t+=\"m\"),e.unicode&&(t+=\"u\"),e.sticky&&(t+=\"y\"),t}},{38:38}],67:[function(e,t,r){var d=e(79),h=e(81),g=e(141),m=e(54),v=e(152)(\"isConcatSpreadable\");t.exports=function e(t,r,a,n,o,i,s,A){for(var l,c,p=o,u=0,f=!!s&&m(s,A,3);udocument.F=Object<\\/script>\"),e.close(),l=e.F;t--;)delete l[A][i[t]];return l()};e.exports=Object.create||function(e,t){var r;return null!==e?(a[A]=n(e),r=new a,a[A]=null,r[s]=e):r=l(),void 0===t?r:o(r,t)}},{100:100,125:125,38:38,59:59,60:60,73:73}],99:[function(e,t,r){arguments[4][29][0].apply(r,arguments)},{143:143,29:29,38:38,58:58,74:74}],100:[function(e,t,r){var i=e(99),s=e(38),A=e(107);t.exports=e(58)?Object.defineProperties:function(e,t){s(e);for(var r,a=A(t),n=a.length,o=0;on;)!i(a,r=t[n++])||~A(o,r)||o.push(r);return o}},{125:125,140:140,41:41,71:71}],107:[function(e,t,r){var a=e(106),n=e(60);t.exports=Object.keys||function(e){return a(e,n)}},{106:106,60:60}],108:[function(e,t,r){r.f={}.propertyIsEnumerable},{}],109:[function(e,t,r){var n=e(62),o=e(52),i=e(64);t.exports=function(e,t){var r=(o.Object||{})[e]||Object[e],a={};a[e]=t(r),n(n.S+n.F*i(function(){r(1)}),\"Object\",a)}},{52:52,62:62,64:64}],110:[function(e,t,r){var A=e(58),l=e(107),c=e(140),p=e(108).f;t.exports=function(s){return function(e){for(var t,r=c(e),a=l(r),n=a.length,o=0,i=[];o>>0||(o.test(e)?16:10))}:a},{134:134,135:135,70:70}],114:[function(e,t,r){t.exports=function(e){try{return{e:!1,v:e()}}catch(e){return{e:!0,v:e}}}},{}],115:[function(e,t,r){var a=e(38),n=e(81),o=e(96);t.exports=function(e,t){return a(e),n(t)&&t.constructor===e?t:((0,(e=o.f(e)).resolve)(t),e.promise)}},{38:38,81:81,96:96}],116:[function(e,t,r){arguments[4][30][0].apply(r,arguments)},{30:30}],117:[function(e,t,r){var n=e(118);t.exports=function(e,t,r){for(var a in t)n(e,a,t[a],r);return e}},{118:118}],118:[function(e,t,r){var o=e(70),i=e(72),s=e(71),A=e(147)(\"src\"),a=e(69),n=\"toString\",l=(\"\"+a).split(n);e(52).inspectSource=function(e){return a.call(e)},(t.exports=function(e,t,r,a){var n=\"function\"==typeof r;n&&!s(r,\"name\")&&i(r,\"name\",t),e[t]!==r&&(n&&!s(r,A)&&i(r,A,e[t]?\"\"+e[t]:l.join(String(t))),e===o?e[t]=r:a?e[t]?e[t]=r:i(e,t,r):(delete e[t],i(e,t,r)))})(Function.prototype,n,function(){return\"function\"==typeof this&&this[A]||a.call(this)})},{147:147,52:52,69:69,70:70,71:71,72:72}],119:[function(e,t,r){var a=e(47),n=RegExp.prototype.exec;t.exports=function(e,t){var r=e.exec;if(\"function\"==typeof r){r=r.call(e,t);if(\"object\"!=typeof r)throw new TypeError(\"RegExp exec method returned something other than an Object or null\");return r}if(\"RegExp\"!==a(e))throw new TypeError(\"RegExp#exec called on incompatible receiver\");return n.call(e,t)}},{47:47}],120:[function(e,t,r){var a,n,i=e(66),s=RegExp.prototype.exec,A=String.prototype.replace,e=s,l=\"lastIndex\",c=(n=/b*/g,s.call(a=/a/,\"a\"),s.call(n,\"a\"),0!==a[l]||0!==n[l]),p=void 0!==/()??/.exec(\"\")[1];t.exports=e=c||p?function(e){var t,r,a,n,o=this;return p&&(r=new RegExp(\"^\"+o.source+\"$(?!\\\\s)\",i.call(o))),c&&(t=o[l]),a=s.call(o,e),c&&a&&(o[l]=o.global?a.index+a[0].length:t),p&&a&&1{try{(a=t(54)(Function.call,t(101).f(Object.prototype,\"__proto__\").set,2))(e,[]),r=!(e instanceof Array)}catch(e){r=!0}return function(e,t){return n(e,t),r?e.__proto__=t:a(e,t),e}})({},!1):void 0),check:n}},{101:101,38:38,54:54,81:81}],123:[function(e,t,r){var a=e(70),n=e(99),o=e(58),i=e(152)(\"species\");t.exports=function(e){e=a[e];o&&e&&!e[i]&&n.f(e,i,{configurable:!0,get:function(){return this}})}},{152:152,58:58,70:70,99:99}],124:[function(e,t,r){var a=e(99).f,n=e(71),o=e(152)(\"toStringTag\");t.exports=function(e,t,r){e&&!n(e=r?e:e.prototype,o)&&a(e,o,{configurable:!0,value:t})}},{152:152,71:71,99:99}],125:[function(e,t,r){var a=e(126)(\"keys\"),n=e(147);t.exports=function(e){return a[e]||(a[e]=n(e))}},{126:126,147:147}],126:[function(e,t,r){var a=e(52),n=e(70),o=\"__core-js_shared__\",i=n[o]||(n[o]={});(t.exports=function(e,t){return i[e]||(i[e]=void 0!==t?t:{})})(\"versions\",[]).push({version:a.version,mode:e(89)?\"pure\":\"global\",copyright:\"© 2019 Denis Pushkarev (zloirock.ru)\"})},{52:52,70:70,89:89}],127:[function(e,t,r){var a=e(38),n=e(33),o=e(152)(\"species\");t.exports=function(e,t){var e=a(e).constructor;return void 0===e||null==(e=a(e)[o])?t:n(e)}},{152:152,33:33,38:38}],128:[function(e,t,r){var a=e(64);t.exports=function(e,t){return!!e&&a(function(){t?e.call(null,function(){},1):e.call(null)})}},{64:64}],129:[function(e,t,r){var o=e(139),i=e(57);t.exports=function(n){return function(e,t){var r,e=String(i(e)),t=o(t),a=e.length;return t<0||a<=t?n?\"\":void 0:(r=e.charCodeAt(t))<55296||56319\"+e+\"\"}var n=e(62),o=e(64),i=e(57),s=/\"/g;t.exports=function(t,e){var r={};r[t]=e(a),n(n.P+n.F*o(function(){var e=\"\"[t]('\"');return e!==e.toLowerCase()||3t&&(n=n.slice(0,t)),a?n+e:e+n)}},{133:133,141:141,57:57}],133:[function(e,t,r){var n=e(139),o=e(57);t.exports=function(e){var t=String(o(this)),r=\"\",a=n(e);if(a<0||a==1/0)throw RangeError(\"Count can't be negative\");for(;0>>=1)&&(t+=t))1&a&&(r+=t);return r}},{139:139,57:57}],134:[function(e,t,r){function a(e,t,r){var a={},n=i(function(){return!!s[e]()||\"​…\"!=\"​…\"[e]()}),t=a[e]=n?t(c):s[e];r&&(a[r]=t),o(o.P+o.F*n,\"String\",a)}var o=e(62),n=e(57),i=e(64),s=e(135),e=\"[\"+s+\"]\",A=RegExp(\"^\"+e+e+\"*\"),l=RegExp(e+e+\"*$\"),c=a.trim=function(e,t){return e=String(n(e)),1&t&&(e=e.replace(A,\"\")),e=2&t?e.replace(l,\"\"):e};t.exports=a},{135:135,57:57,62:62,64:64}],135:[function(e,t,r){t.exports=\"\\t\\n\\v\\f\\r   ᠎              \\u2028\\u2029\\ufeff\"},{}],136:[function(e,t,r){function a(){var e,t=+this;m.hasOwnProperty(t)&&(e=m[t],delete m[t],e())}function n(e){a.call(e.data)}var o,i=e(54),s=e(76),A=e(73),l=e(59),c=e(70),p=c.process,u=c.setImmediate,f=c.clearImmediate,d=c.MessageChannel,h=c.Dispatch,g=0,m={},v=\"onreadystatechange\";u&&f||(u=function(e){for(var t=[],r=1;r{w(e,a,{get:function(){return(e=this._d).v[u](a*l+e.o,ke);var e},set:function(e){var t=a,r=this._d;c&&(e=(e=Math.round(e))<0?0:255>1,l=23===t?w(2,-24)-w(2,-77):0,c=0,p=e<0||0===e&&1/e<0?1:0;for((e=G(e))!=e||e===y?(n=e!=e?1:0,a=r):(a=Q(W(e)/Y),e*(o=w(2,-a))<1&&(a--,o*=2),2<=(e+=1<=a+A?l/o:l*w(2,1-A))*o&&(a++,o/=2),r<=a+A?(n=0,a=r):1<=a+A?(n=(e*o-1)*w(2,t),a+=A):(n=e*w(2,A-1)*w(2,t),a=0));8<=t;i[c++]=255&n,n/=256,t-=8);for(a=a<>1,s=n-7,A=r-1,n=e[A--],l=127&n;for(n>>=7;0>=-s,s+=t;0>8&255]}function D(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]}function X(e){return S(e,52,8)}function H(e){return S(e,23,4)}function k(e,t,r){U(e[f],t,{get:function(){return this[r]}})}function _(e,t,r,a){r=c(+r);if(r+t>e[C])throw v(d);var n=e[x]._b,r=r+e[P],e=n.slice(r,r+t);return a?e:e.reverse()}function N(e,t,r,a,n,o){r=c(+r);if(r+t>e[C])throw v(d);for(var i=e[x]._b,s=r+e[P],A=a(+n),l=0;lV;)(F=I[V++])in h||o(h,F,b[F]);O||(s.constructor=h)}var l=new g(new h(2)),q=g[f].setInt8;l.setInt8(0,2147483648),l.setInt8(1,2147483649),!l.getInt8(0)&&l.getInt8(1)||i(g[f],{setInt8:function(e,t){q.call(this,e,t<<24>>24)},setUint8:function(e,t){q.call(this,e,t<<24>>24)}},!0)}else h=function(e){A(this,h,p);e=c(e);this._b=j.call(new Array(e),0),this[C]=e},g=function(e,t,r){A(this,g,u),A(e,h,u);var a=e[C],t=M(t);if(t<0||a>24},getUint8:function(e){return _(this,1,e)[0]},getInt16:function(e){e=_(this,2,e,arguments[1]);return(e[1]<<8|e[0])<<16>>16},getUint16:function(e){e=_(this,2,e,arguments[1]);return e[1]<<8|e[0]},getInt32:function(e){return E(_(this,4,e,arguments[1]))},getUint32:function(e){return E(_(this,4,e,arguments[1]))>>>0},getFloat32:function(e){return L(_(this,4,e,arguments[1]),23,4)},getFloat64:function(e){return L(_(this,8,e,arguments[1]),52,8)},setInt8:function(e,t){N(this,1,e,T,t)},setUint8:function(e,t){N(this,1,e,T,t)},setInt16:function(e,t){N(this,2,e,B,t,arguments[2])},setUint16:function(e,t){N(this,2,e,B,t,arguments[2])},setInt32:function(e,t){N(this,4,e,D,t,arguments[2])},setUint32:function(e,t){N(this,4,e,D,t,arguments[2])},setFloat32:function(e,t){N(this,4,e,H,t,arguments[2])},setFloat64:function(e,t){N(this,8,e,X,t,arguments[2])}});e(h,p),e(g,u),o(g[f],n.VIEW,!0),t[p]=h,t[u]=g},{103:103,117:117,124:124,138:138,139:139,141:141,146:146,37:37,40:40,58:58,64:64,70:70,72:72,89:89,99:99}],146:[function(e,t,r){for(var a,n=e(70),o=e(72),e=e(147),i=e(\"typed_array\"),s=e(\"view\"),e=!(!n.ArrayBuffer||!n.DataView),A=e,l=0,c=\"Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array\".split(\",\");l<9;)(a=n[c[l++]])?(o(a.prototype,i,!0),o(a.prototype,s,!0)):A=!1;t.exports={ABV:e,CONSTR:A,TYPED:i,VIEW:s}},{147:147,70:70,72:72}],147:[function(e,t,r){var a=0,n=Math.random();t.exports=function(e){return\"Symbol(\".concat(void 0===e?\"\":e,\")_\",(++a+n).toString(36))}},{}],148:[function(e,t,r){e=e(70).navigator;t.exports=e&&e.userAgent||\"\"},{70:70}],149:[function(e,t,r){var a=e(81);t.exports=function(e,t){if(a(e)&&e._t===t)return e;throw TypeError(\"Incompatible receiver, \"+t+\" required!\")}},{81:81}],150:[function(e,t,r){var a=e(70),n=e(52),o=e(89),i=e(151),s=e(99).f;t.exports=function(e){var t=n.Symbol||(n.Symbol=!o&&a.Symbol||{});\"_\"==e.charAt(0)||e in t||s(t,e,{value:i.f(e)})}},{151:151,52:52,70:70,89:89,99:99}],151:[function(e,t,r){r.f=e(152)},{152:152}],152:[function(e,t,r){var a=e(126)(\"wks\"),n=e(147),o=e(70).Symbol,i=\"function\"==typeof o;(t.exports=function(e){return a[e]||(a[e]=i&&o[e]||(i?o:n)(\"Symbol.\"+e))}).store=a},{126:126,147:147,70:70}],153:[function(e,t,r){var a=e(47),n=e(152)(\"iterator\"),o=e(88);t.exports=e(52).getIteratorMethod=function(e){if(null!=e)return e[n]||e[\"@@iterator\"]||o[a(e)]}},{152:152,47:47,52:52,88:88}],154:[function(e,t,r){var a=e(62);a(a.P,\"Array\",{copyWithin:e(39)}),e(35)(\"copyWithin\")},{35:35,39:39,62:62}],155:[function(e,t,r){var a=e(62),n=e(42)(4);a(a.P+a.F*!e(128)([].every,!0),\"Array\",{every:function(e){return n(this,e,arguments[1])}})},{128:128,42:42,62:62}],156:[function(e,t,r){var a=e(62);a(a.P,\"Array\",{fill:e(40)}),e(35)(\"fill\")},{35:35,40:40,62:62}],157:[function(e,t,r){var a=e(62),n=e(42)(2);a(a.P+a.F*!e(128)([].filter,!0),\"Array\",{filter:function(e){return n(this,e,arguments[1])}})},{128:128,42:42,62:62}],158:[function(e,t,r){var a=e(62),n=e(42)(6),o=\"findIndex\",i=!0;o in[]&&Array(1)[o](function(){i=!1}),a(a.P+a.F*i,\"Array\",{findIndex:function(e){return n(this,e,1=e.length?(this._t=void 0,n(1)):n(0,\"keys\"==t?r:\"values\"==t?e[r]:[r,e[r]])},\"values\"),o.Arguments=o.Array,a(\"keys\"),a(\"values\"),a(\"entries\")},{140:140,35:35,85:85,87:87,88:88}],165:[function(e,t,r){var a=e(62),n=e(140),o=[].join;a(a.P+a.F*(e(77)!=Object||!e(128)(o)),\"Array\",{join:function(e){return o.call(n(this),void 0===e?\",\":e)}})},{128:128,140:140,62:62,77:77}],166:[function(e,t,r){var a=e(62),n=e(140),o=e(139),i=e(141),s=[].lastIndexOf,A=!!s&&1/[1].lastIndexOf(1,-0)<0;a(a.P+a.F*(A||!e(128)(s)),\"Array\",{lastIndexOf:function(e){if(A)return s.apply(this,arguments)||0;var t=n(this),r=i(t.length),a=r-1;for((a=1>>=0)?31-Math.floor(Math.log(e+.5)*Math.LOG2E):32}})},{62:62}],189:[function(e,t,r){var e=e(62),a=Math.exp;e(e.S,\"Math\",{cosh:function(e){return(a(e=+e)+a(-e))/2}})},{62:62}],190:[function(e,t,r){var a=e(62),e=e(90);a(a.S+a.F*(e!=Math.expm1),\"Math\",{expm1:e})},{62:62,90:90}],191:[function(e,t,r){var a=e(62);a(a.S,\"Math\",{fround:e(91)})},{62:62,91:91}],192:[function(e,t,r){var e=e(62),A=Math.abs;e(e.S,\"Math\",{hypot:function(e,t){for(var r,a,n=0,o=0,i=arguments.length,s=0;o>>16)*a+r*(65535&t>>>16)<<16>>>0)}})},{62:62,64:64}],194:[function(e,t,r){e=e(62);e(e.S,\"Math\",{log10:function(e){return Math.log(e)*Math.LOG10E}})},{62:62}],195:[function(e,t,r){var a=e(62);a(a.S,\"Math\",{log1p:e(92)})},{62:62,92:92}],196:[function(e,t,r){e=e(62);e(e.S,\"Math\",{log2:function(e){return Math.log(e)/Math.LN2}})},{62:62}],197:[function(e,t,r){var a=e(62);a(a.S,\"Math\",{sign:e(93)})},{62:62,93:93}],198:[function(e,t,r){var a=e(62),n=e(90),o=Math.exp;a(a.S+a.F*e(64)(function(){return-2e-17!=!Math.sinh(-2e-17)}),\"Math\",{sinh:function(e){return Math.abs(e=+e)<1?(n(e)-n(-e))/2:(o(e-1)-o(-e-1))*(Math.E/2)}})},{62:62,64:64,90:90}],199:[function(e,t,r){var a=e(62),n=e(90),o=Math.exp;a(a.S,\"Math\",{tanh:function(e){var t=n(e=+e),r=n(-e);return t==1/0?1:r==1/0?-1:(t-r)/(o(e)+o(-e))}})},{62:62,90:90}],200:[function(e,t,r){e=e(62);e(e.S,\"Math\",{trunc:function(e){return(0x;x++)o(h,y=w[x])&&!o(b,y)&&u(b,y,p(h,y));(b.prototype=g).constructor=b,e(118)(n,d,b)}},{101:101,103:103,118:118,134:134,143:143,48:48,58:58,64:64,70:70,71:71,75:75,98:98,99:99}],202:[function(e,t,r){e=e(62);e(e.S,\"Number\",{EPSILON:Math.pow(2,-52)})},{62:62}],203:[function(e,t,r){var a=e(62),n=e(70).isFinite;a(a.S,\"Number\",{isFinite:function(e){return\"number\"==typeof e&&n(e)}})},{62:62,70:70}],204:[function(e,t,r){var a=e(62);a(a.S,\"Number\",{isInteger:e(80)})},{62:62,80:80}],205:[function(e,t,r){e=e(62);e(e.S,\"Number\",{isNaN:function(e){return e!=e}})},{62:62}],206:[function(e,t,r){var a=e(62),n=e(80),o=Math.abs;a(a.S,\"Number\",{isSafeInteger:function(e){return n(e)&&o(e)<=9007199254740991}})},{62:62,80:80}],207:[function(e,t,r){e=e(62);e(e.S,\"Number\",{MAX_SAFE_INTEGER:9007199254740991})},{62:62}],208:[function(e,t,r){e=e(62);e(e.S,\"Number\",{MIN_SAFE_INTEGER:-9007199254740991})},{62:62}],209:[function(e,t,r){var a=e(62),e=e(112);a(a.S+a.F*(Number.parseFloat!=e),\"Number\",{parseFloat:e})},{112:112,62:62}],210:[function(e,t,r){var a=e(62),e=e(113);a(a.S+a.F*(Number.parseInt!=e),\"Number\",{parseInt:e})},{113:113,62:62}],211:[function(e,t,r){function s(e,t){for(var r=-1,a=t;++r<6;)i[r]=(a+=e*i[r])%1e7,a=o(a/1e7)}function A(e){for(var t=6,r=0;0<=--t;)i[t]=o((r+=i[t])/e),r=r%e*1e7}function l(){for(var e,t=6,r=\"\";0<=--t;)\"\"===r&&0!==t&&0===i[t]||(e=String(i[t]),r=\"\"===r?e:r+f.call(\"0\",7-e.length)+e);return r}function c(e,t,r){return 0===t?r:t%2==1?c(e,t-1,r*e):c(e*e,t/2,r)}var a=e(62),p=e(139),u=e(34),f=e(133),n=1..toFixed,o=Math.floor,i=[0,0,0,0,0,0],d=\"Number.toFixed: incorrect invocation!\";a(a.P+a.F*(!!n&&(\"0.000\"!==8e-5.toFixed(3)||\"1\"!==.9.toFixed(0)||\"1.25\"!==1.255.toFixed(2)||\"1000000000000000128\"!==0xde0b6b3a7640080.toFixed(0))||!e(64)(function(){n.call({})})),\"Number\",{toFixed:function(e){var t,r,a,n=u(this,d),e=p(e),o=\"\",i=\"0\";if(e<0||20{for(var e=0,t=n*c(2,69,1);4096<=t;)e+=12,t/=4096;for(;2<=t;)e+=1,t/=2;return e})()-69)<0?n*c(2,-t,1):n/c(2,t,1),a*=4503599627370496,0<(t=52-t)){for(s(0,a),r=e;7<=r;)s(1e7,0),r-=7;for(s(c(10,r,1),0),r=t-1;23<=r;)A(1<<23),r-=23;A(1<r;){a=void 0;n=void 0;o=void 0;i=void 0;s=void 0;A=void 0;l=void 0;c=void 0;var a=f[r++];var n,o,i,s=t?a.ok:a.fail,A=a.resolve,l=a.reject,c=a.domain;try{s?(t||(2==p._h&&g(p),p._h=1),!0===s?n=e:(c&&c.enter(),n=s(e),c&&(c.exit(),i=!0)),n===a.promise?l(T(\"Promise-chain cycle\")):(o=d(n))?o.call(n,A,l):A(n)):l(e)}catch(a){c&&!i&&c.exit(),l(a)}}p._c=[],p._n=!1,u&&!p._h&&h(p)}))}function o(e){var t=this;t._d||(t._d=!0,(t=t._w||t)._v=e,t._s=2,t._a||(t._a=t._c.slice()),n(t,!0))}function h(n){w.call(c,function(){var e,t,r=n._v,a=F(n);if(a&&(e=P(function(){_?B.emit(\"unhandledRejection\",r,n):(t=c.onunhandledrejection)?t({promise:n,reason:r}):(t=c.console)&&t.error&&t.error(\"Unhandled promise rejection\",r)}),n._h=_||F(n)?2:1),n._a=void 0,a&&e.e)throw e.v})}function g(t){w.call(c,function(){var e;_?B.emit(\"rejectionHandled\",t):(e=c.onrejectionhandled)&&e({promise:t,reason:t._v})})}var t,i,s,A,l=r(89),c=r(70),p=r(54),e=r(47),u=r(62),f=r(81),m=r(33),v=r(37),y=r(68),b=r(127),w=r(136).set,x=r(95)(),C=r(96),P=r(114),S=r(148),L=r(115),E=\"Promise\",T=c.TypeError,B=c.process,D=B&&B.versions,M=D&&D.v8||\"\",k=c[E],_=\"process\"==e(B),N=i=C.f,D=!!(()=>{try{var e=k.resolve(1),t=(e.constructor={})[r(152)(\"species\")]=function(e){e(a,a)};return(_||\"function\"==typeof PromiseRejectionEvent)&&e.then(a)instanceof t&&0!==M.indexOf(\"6.6\")&&-1===S.indexOf(\"Chrome/66\")}catch(e){}})(),F=function(e){return 1!==e._h&&0===(e._a||e._c).length},I=function(e){var r,a=this;if(!a._d){a._d=!0,a=a._w||a;try{if(a===e)throw T(\"Promise can't be resolved itself\");(r=d(e))?x(function(){var t={_w:a,_d:!1};try{r.call(e,p(I,t,1),p(o,t,1))}catch(e){o.call(t,e)}}):(a._v=e,a._s=1,n(a,!1))}catch(e){o.call({_w:a,_d:!1},e)}}};D||(k=function(e){v(this,k,E,\"_h\"),m(e),t.call(this);try{e(p(I,this,1),p(o,this,1))}catch(e){o.call(this,e)}},(t=function(e){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1}).prototype=r(117)(k.prototype,{then:function(e,t){var r=N(b(this,k));return r.ok=\"function\"!=typeof e||e,r.fail=\"function\"==typeof t&&t,r.domain=_?B.domain:void 0,this._c.push(r),this._a&&this._a.push(r),this._s&&n(this,!1),r.promise},catch:function(e){return this.then(void 0,e)}}),s=function(){var e=new t;this.promise=e,this.resolve=p(I,e,1),this.reject=p(o,e,1)},C.f=N=function(e){return e===k||e===A?new s:i(e)}),u(u.G+u.W+u.F*!D,{Promise:k}),r(124)(k,E),r(123)(E),A=r(52)[E],u(u.S+u.F*!D,E,{reject:function(e){var t=N(this);return(0,t.reject)(e),t.promise}}),u(u.S+u.F*(l||!D),E,{resolve:function(e){return L(l&&this===A?k:this,e)}}),u(u.S+u.F*!(D&&r(86)(function(e){k.all(e).catch(a)})),E,{all:function(e){var i=this,t=N(i),s=t.resolve,A=t.reject,r=P(function(){var a=[],n=0,o=1;y(e,!1,function(e){var t=n++,r=!1;a.push(void 0),o++,i.resolve(e).then(function(e){r||(r=!0,a[t]=e,--o)||s(a)},A)}),--o||s(a)});return r.e&&A(r.v),t.promise},race:function(e){var t=this,r=N(t),a=r.reject,n=P(function(){y(e,!1,function(e){t.resolve(e).then(r.resolve,a)})});return n.e&&a(n.v),r.promise}})},{114:114,115:115,117:117,123:123,124:124,127:127,136:136,148:148,152:152,33:33,37:37,47:47,52:52,54:54,62:62,68:68,70:70,81:81,86:86,89:89,95:95,96:96}],233:[function(e,t,r){var a=e(62),n=e(33),o=e(38),i=(e(70).Reflect||{}).apply,s=Function.apply;a(a.S+a.F*!e(64)(function(){i(function(){})}),\"Reflect\",{apply:function(e,t,r){e=n(e),r=o(r);return i?i(e,t,r):s.call(e,t,r)}})},{33:33,38:38,62:62,64:64,70:70}],234:[function(e,t,r){var a=e(62),n=e(98),o=e(33),i=e(38),s=e(81),A=e(64),l=e(46),c=(e(70).Reflect||{}).construct,p=A(function(){function e(){}return!(c(function(){},[],e)instanceof e)}),u=!A(function(){c(function(){})});a(a.S+a.F*(p||u),\"Reflect\",{construct:function(e,t){o(e),i(t);var r=arguments.length<3?e:o(arguments[2]);if(u&&!p)return c(e,t,r);if(e==r){switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3])}var a=[null];return a.push.apply(a,t),new(l.apply(e,a))}a=r.prototype,r=n(s(a)?a:Object.prototype),a=Function.apply.call(e,r,t);return s(a)?a:r}})},{33:33,38:38,46:46,62:62,64:64,70:70,81:81,98:98}],235:[function(e,t,r){var a=e(99),n=e(62),o=e(38),i=e(143);n(n.S+n.F*e(64)(function(){Reflect.defineProperty(a.f({},1,{value:1}),1,{value:2})}),\"Reflect\",{defineProperty:function(e,t,r){o(e),t=i(t,!0),o(r);try{return a.f(e,t,r),!0}catch(e){return!1}}})},{143:143,38:38,62:62,64:64,99:99}],236:[function(e,t,r){var a=e(62),n=e(101).f,o=e(38);a(a.S,\"Reflect\",{deleteProperty:function(e,t){var r=n(o(e),t);return!(r&&!r.configurable)&&delete e[t]}})},{101:101,38:38,62:62}],237:[function(e,t,r){function a(e){this._t=o(e),this._i=0;var t,r=this._k=[];for(t in e)r.push(t)}var n=e(62),o=e(38);e(84)(a,\"Object\",function(){var e,t=this._k;do{if(this._i>=t.length)return{value:void 0,done:!0}}while(!((e=t[this._i++])in this._t));return{value:e,done:!1}}),n(n.S,\"Reflect\",{enumerate:function(e){return new a(e)}})},{38:38,62:62,84:84}],238:[function(e,t,r){var a=e(101),n=e(62),o=e(38);n(n.S,\"Reflect\",{getOwnPropertyDescriptor:function(e,t){return a.f(o(e),t)}})},{101:101,38:38,62:62}],239:[function(e,t,r){var a=e(62),n=e(105),o=e(38);a(a.S,\"Reflect\",{getPrototypeOf:function(e){return n(o(e))}})},{105:105,38:38,62:62}],240:[function(e,t,r){var o=e(101),i=e(105),s=e(71),a=e(62),A=e(81),l=e(38);a(a.S,\"Reflect\",{get:function e(t,r){var a,n=arguments.length<3?t:arguments[2];return l(t)===n?t[r]:(a=o.f(t,r))?s(a,\"value\")?a.value:void 0!==a.get?a.get.call(n):void 0:A(a=i(t))?e(a,r,n):void 0}})},{101:101,105:105,38:38,62:62,71:71,81:81}],241:[function(e,t,r){e=e(62);e(e.S,\"Reflect\",{has:function(e,t){return t in e}})},{62:62}],242:[function(e,t,r){var a=e(62),n=e(38),o=Object.isExtensible;a(a.S,\"Reflect\",{isExtensible:function(e){return n(e),!o||o(e)}})},{38:38,62:62}],243:[function(e,t,r){var a=e(62);a(a.S,\"Reflect\",{ownKeys:e(111)})},{111:111,62:62}],244:[function(e,t,r){var a=e(62),n=e(38),o=Object.preventExtensions;a(a.S,\"Reflect\",{preventExtensions:function(e){n(e);try{return o&&o(e),!0}catch(e){return!1}}})},{38:38,62:62}],245:[function(e,t,r){var a=e(62),n=e(122);n&&a(a.S,\"Reflect\",{setPrototypeOf:function(e,t){n.check(e,t);try{return n.set(e,t),!0}catch(e){return!1}}})},{122:122,62:62}],246:[function(e,t,r){var i=e(99),s=e(101),A=e(105),l=e(71),a=e(62),c=e(116),p=e(38),u=e(81);a(a.S,\"Reflect\",{set:function e(t,r,a){var n=arguments.length<4?t:arguments[3],o=s.f(p(t),r);if(!o){if(u(t=A(t)))return e(t,r,a,n);o=c(0)}if(l(o,\"value\")){if(!1===o.writable||!u(n))return!1;if(t=s.f(n,r)){if(t.get||t.set||!1===t.writable)return!1;t.value=a,i.f(n,r,t)}else i.f(n,r,c(0,a));return!0}return void 0!==o.set&&(o.set.call(n,a),!0)}})},{101:101,105:105,116:116,38:38,62:62,71:71,81:81,99:99}],247:[function(e,t,r){var a=e(70),o=e(75),n=e(99).f,i=e(103).f,s=e(82),A=e(66),l=d=a.RegExp,c=d.prototype,p=/a/g,u=/a/g,f=new d(p)!==p;if(e(58)&&(!f||e(64)(function(){return u[e(152)(\"match\")]=!1,d(p)!=p||d(u)==u||\"/a/i\"!=d(p,\"i\")}))){for(var d=function(e,t){var r=this instanceof d,a=s(e),n=void 0===t;return!r&&a&&e.constructor===d&&n?e:o(f?new l(a&&!n?e.source:e,t):l((a=e instanceof d)?e.source:e,a&&n?A.call(e):t),r?this:c,d)},h=i(l),g=0;h.length>g;)(t=>{t in d||n(d,t,{configurable:!0,get:function(){return l[t]},set:function(e){l[t]=e}})})(h[g++]);(c.constructor=d).prototype=c,e(118)(a,\"RegExp\",d)}e(123)(\"RegExp\")},{103:103,118:118,123:123,152:152,58:58,64:64,66:66,70:70,75:75,82:82,99:99}],248:[function(e,t,r){var a=e(120);e(62)({target:\"RegExp\",proto:!0,forced:a!==/./.exec},{exec:a})},{120:120,62:62}],249:[function(e,t,r){e(58)&&\"g\"!=/./g.flags&&e(99).f(RegExp.prototype,\"flags\",{configurable:!0,get:e(66)})},{58:58,66:66,99:99}],250:[function(e,t,r){var c=e(38),p=e(141),u=e(36),f=e(119);e(65)(\"match\",1,function(a,n,A,l){return[function(e){var t=a(this),r=null==e?void 0:e[n];return void 0!==r?r.call(e,t):new RegExp(e)[n](String(t))},function(e){var t=l(A,e,this);if(t.done)return t.value;var r=c(e),a=String(this);if(!r.global)return f(r,a);for(var n=r.unicode,o=[],i=r.lastIndex=0;null!==(s=f(r,a));){var s=String(s[0]);\"\"===(o[i]=s)&&(r.lastIndex=u(a,p(r.lastIndex),n)),i++}return 0===i?null:o}]})},{119:119,141:141,36:36,38:38,65:65}],251:[function(e,t,r){var x=e(38),C=e(142),P=e(141),S=e(139),L=e(36),E=e(119),T=Math.max,B=Math.min,D=Math.floor,k=/\\$([$&`']|\\d\\d?|<[^>]*>)/g,_=/\\$([$&`']|\\d\\d?)/g;e(65)(\"replace\",2,function(n,o,b,w){return[function(e,t){var r=n(this),a=null==e?void 0:e[o];return void 0!==a?a.call(e,r,t):b.call(String(r),e,t)},function(e,t){var r=w(b,e,this,t);if(r.done)return r.value;var a,n=x(e),o=String(this),i=\"function\"==typeof t,s=(i||(t=String(t)),n.global);s&&(a=n.unicode,n.lastIndex=0);for(var A=[];;){var l=E(n,o);if(null===l)break;if(A.push(l),!s)break;\"\"===String(l[0])&&(n.lastIndex=L(o,P(n.lastIndex),a))}for(var c,p=\"\",u=0,f=0;f{var c=s+o.length,p=A.length,t=_;return void 0!==l&&(l=C(l),t=k),b.call(e,t,function(e,t){var r;switch(t.charAt(0)){case\"$\":return\"$\";case\"&\":return o;case\"`\":return i.slice(0,s);case\"'\":return i.slice(c);case\"<\":r=l[t.slice(1,-1)];break;default:var a,n=+t;if(0==n)return e;if(p>>0,c=new RegExp(e.source,s+\"g\");(a=u.call(c,r))&&!(A<(n=c[P])&&(i.push(r.slice(A,a.index)),1>>0;if(0==s)return[];if(0===a.length)return null===w(i,a)?[a]:[];for(var A=0,l=0,c=[];l>10),t%1024+56320))}return r.join(\"\")}})},{137:137,62:62}],266:[function(e,t,r){var a=e(62),n=e(130);a(a.P+a.F*e(63)(\"includes\"),\"String\",{includes:function(e){return!!~n(this,e,\"includes\").indexOf(e,1=e.length?{value:void 0,done:!0}:(e=a(e,t),this._i+=e.length,{value:e,done:!1})})},{129:129,85:85}],269:[function(e,t,r){e(131)(\"link\",function(t){return function(e){return t(this,\"a\",\"href\",e)}})},{131:131}],270:[function(e,t,r){var a=e(62),i=e(140),s=e(141);a(a.S,\"String\",{raw:function(e){for(var t=i(e.raw),r=s(t.length),a=arguments.length,n=[],o=0;on;)l(B,t=r[n++])||t==E||t==z||a.push(t);return a}function i(e){for(var t,r=e===k,a=Z(r?D:m(e)),n=[],o=0;a.length>o;)!l(B,t=a[o++])||r&&!l(k,t)||n.push(B[t]);return n}function s(e,t,r){return e===k&&s(D,t,r),g(e),t=v(t,!0),g(r),(l(B,t)?(r.enumerable?(l(e,E)&&e[E][t]&&(e[E][t]=!1),r=b(r,{enumerable:y(0,!1)})):(l(e,E)||x(e,E,y(1,{})),e[E][t]=!0),F):x)(e,t,r)}var A=e(70),l=e(71),c=e(58),p=e(62),M=e(118),z=e(94).KEY,u=e(64),f=e(126),d=e(124),U=e(147),h=e(152),j=e(151),G=e(150),Q=e(61),W=e(79),g=e(38),Y=e(81),X=e(142),m=e(140),v=e(143),y=e(116),b=e(98),H=e(102),V=e(101),w=e(104),q=e(99),J=e(107),K=V.f,x=q.f,Z=H.f,C=A.Symbol,P=A.JSON,S=P&&P.stringify,L=\"prototype\",E=h(\"_hidden\"),$=h(\"toPrimitive\"),ee={}.propertyIsEnumerable,T=f(\"symbol-registry\"),B=f(\"symbols\"),D=f(\"op-symbols\"),k=Object[L],f=\"function\"==typeof C&&!!w.f,_=A.QObject,N=!_||!_[L]||!_[L].findChild,F=c&&u(function(){return 7!=b(x({},\"a\",{get:function(){return x(this,\"a\",{value:7}).a}})).a})?function(e,t,r){var a=K(k,t);a&&delete k[t],x(e,t,r),a&&e!==k&&x(k,t,a)}:x,I=f&&\"symbol\"==typeof C.iterator?function(e){return\"symbol\"==typeof e}:function(e){return e instanceof C};f||(M((C=function(){if(this instanceof C)throw TypeError(\"Symbol is not a constructor!\");var t=U(0re;)h(te[re++]);for(var ae=J(h.store),ne=0;ae.length>ne;)G(ae[ne++]);p(p.S+p.F*!f,\"Symbol\",{for:function(e){return l(T,e+=\"\")?T[e]:T[e]=C(e)},keyFor:function(e){if(!I(e))throw TypeError(e+\" is not a symbol!\");for(var t in T)if(T[t]===e)return t},useSetter:function(){N=!0},useSimple:function(){N=!1}}),p(p.S+p.F*!f,\"Object\",{create:function(e,t){return void 0===t?b(e):r(b(e),t)},defineProperty:s,defineProperties:r,getOwnPropertyDescriptor:n,getOwnPropertyNames:o,getOwnPropertySymbols:i});_=u(function(){w.f(1)});p(p.S+p.F*_,\"Object\",{getOwnPropertySymbols:function(e){return w.f(X(e))}}),P&&p(p.S+p.F*(!f||u(function(){var e=C();return\"[null]\"!=S([e])||\"{}\"!=S({a:e})||\"{}\"!=S(Object(e))})),\"JSON\",{stringify:function(e){for(var t,r,a=[e],n=1;ns;)void 0!==(r=n(a,t=o[s++]))&&p(i,t,r);return i}})},{101:101,111:111,140:140,53:53,62:62}],296:[function(e,t,r){var a=e(62),n=e(110)(!1);a(a.S,\"Object\",{values:function(e){return n(e)}})},{110:110,62:62}],297:[function(e,t,r){var a=e(62),n=e(52),o=e(70),i=e(127),s=e(115);a(a.P+a.R,\"Promise\",{finally:function(t){var r=i(this,n.Promise||o.Promise),e=\"function\"==typeof t;return this.then(e?function(e){return s(r,t()).then(function(){return e})}:t,e?function(e){return s(r,t()).then(function(){throw e})}:t)}})},{115:115,127:127,52:52,62:62,70:70}],298:[function(e,t,r){var a=e(62),n=e(132),e=e(148),e=/Version\\/10\\.\\d+(\\.\\d+)?( Mobile\\/\\w+)? Safari\\//.test(e);a(a.P+a.F*e,\"String\",{padEnd:function(e){return n(this,e,1{function c(e,i,s,A){return new(s=s||Promise)(function(r,t){function a(e){try{o(A.next(e))}catch(e){t(e)}}function n(e){try{o(A.throw(e))}catch(e){t(e)}}function o(e){var t;e.done?r(e.value):((t=e.value)instanceof s?t:new s(function(e){e(t)})).then(a,n)}o((A=A.apply(e,i||[])).next())})}let F=914400,m=12700,A=\"\\r\\n\",D=/^[0-9a-fA-F]{6}$/,k=1.67,_=27,u={type:\"solid\",color:\"666666\",pt:1},Q=[.05,.1,.05,.1],p={color:\"363636\",pt:1},f={color:\"888888\",style:\"solid\",size:1,cap:\"flat\"},d=\"000000\",v=12,N=18,o=\"LAYOUT_16x9\",t=\"DEFAULT\",l={type:\"outer\",blur:3,offset:23e3/12700,angle:90,color:\"000000\",opacity:.35,rotateWithShape:!0},y=[.5,.5,.5,.5],W={color:\"000000\"},Y={size:8,color:\"FFFFFF\",opacity:.75},h=\"2094734552\",X=\"2094734553\",g=\"2094734554\",H=\"2094734555\",V=\"2094734556\",r=\"ABCDEFGHIJKLMNOPQRSTUVWXYZ\".split(\"\"),q=[\"C0504D\",\"4F81BD\",\"9BBB59\",\"8064A2\",\"4BACC6\",\"F79646\",\"628FC6\",\"C86360\",\"C0504D\",\"4F81BD\",\"9BBB59\",\"8064A2\",\"4BACC6\",\"F79646\",\"628FC6\",\"C86360\"],J=[\"5DA5DA\",\"FAA43A\",\"60BD68\",\"F17CB0\",\"B2912F\",\"B276B2\",\"DECF3F\",\"F15854\",\"A7A7A7\",\"5DA5DA\",\"FAA43A\",\"60BD68\",\"F17CB0\",\"B2912F\",\"B276B2\",\"DECF3F\",\"F15854\",\"A7A7A7\"];var i,s,a,K,Z,n,$,ee,b,w,te,x,I,re,C,e;(e=i=i||{}).left=\"left\",e.center=\"center\",e.right=\"right\",e.justify=\"justify\",(e=s=s||{}).b=\"b\",e.ctr=\"ctr\",e.t=\"t\";let ae=\"{F7021451-1387-4CA6-816F-3879F97B5CBC}\",P=((e=a=a||{}).arraybuffer=\"arraybuffer\",e.base64=\"base64\",e.binarystring=\"binarystring\",e.blob=\"blob\",e.nodebuffer=\"nodebuffer\",e.uint8array=\"uint8array\",(e=K=K||{}).area=\"area\",e.bar=\"bar\",e.bar3d=\"bar3D\",e.bubble=\"bubble\",e.bubble3d=\"bubble3D\",e.doughnut=\"doughnut\",e.line=\"line\",e.pie=\"pie\",e.radar=\"radar\",e.scatter=\"scatter\",(e=Z=Z||{}).accentBorderCallout1=\"accentBorderCallout1\",e.accentBorderCallout2=\"accentBorderCallout2\",e.accentBorderCallout3=\"accentBorderCallout3\",e.accentCallout1=\"accentCallout1\",e.accentCallout2=\"accentCallout2\",e.accentCallout3=\"accentCallout3\",e.actionButtonBackPrevious=\"actionButtonBackPrevious\",e.actionButtonBeginning=\"actionButtonBeginning\",e.actionButtonBlank=\"actionButtonBlank\",e.actionButtonDocument=\"actionButtonDocument\",e.actionButtonEnd=\"actionButtonEnd\",e.actionButtonForwardNext=\"actionButtonForwardNext\",e.actionButtonHelp=\"actionButtonHelp\",e.actionButtonHome=\"actionButtonHome\",e.actionButtonInformation=\"actionButtonInformation\",e.actionButtonMovie=\"actionButtonMovie\",e.actionButtonReturn=\"actionButtonReturn\",e.actionButtonSound=\"actionButtonSound\",e.arc=\"arc\",e.bentArrow=\"bentArrow\",e.bentUpArrow=\"bentUpArrow\",e.bevel=\"bevel\",e.blockArc=\"blockArc\",e.borderCallout1=\"borderCallout1\",e.borderCallout2=\"borderCallout2\",e.borderCallout3=\"borderCallout3\",e.bracePair=\"bracePair\",e.bracketPair=\"bracketPair\",e.callout1=\"callout1\",e.callout2=\"callout2\",e.callout3=\"callout3\",e.can=\"can\",e.chartPlus=\"chartPlus\",e.chartStar=\"chartStar\",e.chartX=\"chartX\",e.chevron=\"chevron\",e.chord=\"chord\",e.circularArrow=\"circularArrow\",e.cloud=\"cloud\",e.cloudCallout=\"cloudCallout\",e.corner=\"corner\",e.cornerTabs=\"cornerTabs\",e.cube=\"cube\",e.curvedDownArrow=\"curvedDownArrow\",e.curvedLeftArrow=\"curvedLeftArrow\",e.curvedRightArrow=\"curvedRightArrow\",e.curvedUpArrow=\"curvedUpArrow\",e.custGeom=\"custGeom\",e.decagon=\"decagon\",e.diagStripe=\"diagStripe\",e.diamond=\"diamond\",e.dodecagon=\"dodecagon\",e.donut=\"donut\",e.doubleWave=\"doubleWave\",e.downArrow=\"downArrow\",e.downArrowCallout=\"downArrowCallout\",e.ellipse=\"ellipse\",e.ellipseRibbon=\"ellipseRibbon\",e.ellipseRibbon2=\"ellipseRibbon2\",e.flowChartAlternateProcess=\"flowChartAlternateProcess\",e.flowChartCollate=\"flowChartCollate\",e.flowChartConnector=\"flowChartConnector\",e.flowChartDecision=\"flowChartDecision\",e.flowChartDelay=\"flowChartDelay\",e.flowChartDisplay=\"flowChartDisplay\",e.flowChartDocument=\"flowChartDocument\",e.flowChartExtract=\"flowChartExtract\",e.flowChartInputOutput=\"flowChartInputOutput\",e.flowChartInternalStorage=\"flowChartInternalStorage\",e.flowChartMagneticDisk=\"flowChartMagneticDisk\",e.flowChartMagneticDrum=\"flowChartMagneticDrum\",e.flowChartMagneticTape=\"flowChartMagneticTape\",e.flowChartManualInput=\"flowChartManualInput\",e.flowChartManualOperation=\"flowChartManualOperation\",e.flowChartMerge=\"flowChartMerge\",e.flowChartMultidocument=\"flowChartMultidocument\",e.flowChartOfflineStorage=\"flowChartOfflineStorage\",e.flowChartOffpageConnector=\"flowChartOffpageConnector\",e.flowChartOnlineStorage=\"flowChartOnlineStorage\",e.flowChartOr=\"flowChartOr\",e.flowChartPredefinedProcess=\"flowChartPredefinedProcess\",e.flowChartPreparation=\"flowChartPreparation\",e.flowChartProcess=\"flowChartProcess\",e.flowChartPunchedCard=\"flowChartPunchedCard\",e.flowChartPunchedTape=\"flowChartPunchedTape\",e.flowChartSort=\"flowChartSort\",e.flowChartSummingJunction=\"flowChartSummingJunction\",e.flowChartTerminator=\"flowChartTerminator\",e.folderCorner=\"folderCorner\",e.frame=\"frame\",e.funnel=\"funnel\",e.gear6=\"gear6\",e.gear9=\"gear9\",e.halfFrame=\"halfFrame\",e.heart=\"heart\",e.heptagon=\"heptagon\",e.hexagon=\"hexagon\",e.homePlate=\"homePlate\",e.horizontalScroll=\"horizontalScroll\",e.irregularSeal1=\"irregularSeal1\",e.irregularSeal2=\"irregularSeal2\",e.leftArrow=\"leftArrow\",e.leftArrowCallout=\"leftArrowCallout\",e.leftBrace=\"leftBrace\",e.leftBracket=\"leftBracket\",e.leftCircularArrow=\"leftCircularArrow\",e.leftRightArrow=\"leftRightArrow\",e.leftRightArrowCallout=\"leftRightArrowCallout\",e.leftRightCircularArrow=\"leftRightCircularArrow\",e.leftRightRibbon=\"leftRightRibbon\",e.leftRightUpArrow=\"leftRightUpArrow\",e.leftUpArrow=\"leftUpArrow\",e.lightningBolt=\"lightningBolt\",e.line=\"line\",e.lineInv=\"lineInv\",e.mathDivide=\"mathDivide\",e.mathEqual=\"mathEqual\",e.mathMinus=\"mathMinus\",e.mathMultiply=\"mathMultiply\",e.mathNotEqual=\"mathNotEqual\",e.mathPlus=\"mathPlus\",e.moon=\"moon\",e.noSmoking=\"noSmoking\",e.nonIsoscelesTrapezoid=\"nonIsoscelesTrapezoid\",e.notchedRightArrow=\"notchedRightArrow\",e.octagon=\"octagon\",e.parallelogram=\"parallelogram\",e.pentagon=\"pentagon\",e.pie=\"pie\",e.pieWedge=\"pieWedge\",e.plaque=\"plaque\",e.plaqueTabs=\"plaqueTabs\",e.plus=\"plus\",e.quadArrow=\"quadArrow\",e.quadArrowCallout=\"quadArrowCallout\",e.rect=\"rect\",e.ribbon=\"ribbon\",e.ribbon2=\"ribbon2\",e.rightArrow=\"rightArrow\",e.rightArrowCallout=\"rightArrowCallout\",e.rightBrace=\"rightBrace\",e.rightBracket=\"rightBracket\",e.round1Rect=\"round1Rect\",e.round2DiagRect=\"round2DiagRect\",e.round2SameRect=\"round2SameRect\",e.roundRect=\"roundRect\",e.rtTriangle=\"rtTriangle\",e.smileyFace=\"smileyFace\",e.snip1Rect=\"snip1Rect\",e.snip2DiagRect=\"snip2DiagRect\",e.snip2SameRect=\"snip2SameRect\",e.snipRoundRect=\"snipRoundRect\",e.squareTabs=\"squareTabs\",e.star10=\"star10\",e.star12=\"star12\",e.star16=\"star16\",e.star24=\"star24\",e.star32=\"star32\",e.star4=\"star4\",e.star5=\"star5\",e.star6=\"star6\",e.star7=\"star7\",e.star8=\"star8\",e.stripedRightArrow=\"stripedRightArrow\",e.sun=\"sun\",e.swooshArrow=\"swooshArrow\",e.teardrop=\"teardrop\",e.trapezoid=\"trapezoid\",e.triangle=\"triangle\",e.upArrow=\"upArrow\",e.upArrowCallout=\"upArrowCallout\",e.upDownArrow=\"upDownArrow\",e.upDownArrowCallout=\"upDownArrowCallout\",e.uturnArrow=\"uturnArrow\",e.verticalScroll=\"verticalScroll\",e.wave=\"wave\",e.wedgeEllipseCallout=\"wedgeEllipseCallout\",e.wedgeRectCallout=\"wedgeRectCallout\",e.wedgeRoundRectCallout=\"wedgeRoundRectCallout\",(e=n=n||{}).text1=\"tx1\",e.text2=\"tx2\",e.background1=\"bg1\",e.background2=\"bg2\",e.accent1=\"accent1\",e.accent2=\"accent2\",e.accent3=\"accent3\",e.accent4=\"accent4\",e.accent5=\"accent5\",e.accent6=\"accent6\",(e=$=$||{}).left=\"left\",e.center=\"center\",e.right=\"right\",e.justify=\"justify\",(e=ee=ee||{}).top=\"top\",e.middle=\"middle\",e.bottom=\"bottom\",(e=b=b||{}).ACTION_BUTTON_BACK_OR_PREVIOUS=\"actionButtonBackPrevious\",e.ACTION_BUTTON_BEGINNING=\"actionButtonBeginning\",e.ACTION_BUTTON_CUSTOM=\"actionButtonBlank\",e.ACTION_BUTTON_DOCUMENT=\"actionButtonDocument\",e.ACTION_BUTTON_END=\"actionButtonEnd\",e.ACTION_BUTTON_FORWARD_OR_NEXT=\"actionButtonForwardNext\",e.ACTION_BUTTON_HELP=\"actionButtonHelp\",e.ACTION_BUTTON_HOME=\"actionButtonHome\",e.ACTION_BUTTON_INFORMATION=\"actionButtonInformation\",e.ACTION_BUTTON_MOVIE=\"actionButtonMovie\",e.ACTION_BUTTON_RETURN=\"actionButtonReturn\",e.ACTION_BUTTON_SOUND=\"actionButtonSound\",e.ARC=\"arc\",e.BALLOON=\"wedgeRoundRectCallout\",e.BENT_ARROW=\"bentArrow\",e.BENT_UP_ARROW=\"bentUpArrow\",e.BEVEL=\"bevel\",e.BLOCK_ARC=\"blockArc\",e.CAN=\"can\",e.CHART_PLUS=\"chartPlus\",e.CHART_STAR=\"chartStar\",e.CHART_X=\"chartX\",e.CHEVRON=\"chevron\",e.CHORD=\"chord\",e.CIRCULAR_ARROW=\"circularArrow\",e.CLOUD=\"cloud\",e.CLOUD_CALLOUT=\"cloudCallout\",e.CORNER=\"corner\",e.CORNER_TABS=\"cornerTabs\",e.CROSS=\"plus\",e.CUBE=\"cube\",e.CURVED_DOWN_ARROW=\"curvedDownArrow\",e.CURVED_DOWN_RIBBON=\"ellipseRibbon\",e.CURVED_LEFT_ARROW=\"curvedLeftArrow\",e.CURVED_RIGHT_ARROW=\"curvedRightArrow\",e.CURVED_UP_ARROW=\"curvedUpArrow\",e.CURVED_UP_RIBBON=\"ellipseRibbon2\",e.CUSTOM_GEOMETRY=\"custGeom\",e.DECAGON=\"decagon\",e.DIAGONAL_STRIPE=\"diagStripe\",e.DIAMOND=\"diamond\",e.DODECAGON=\"dodecagon\",e.DONUT=\"donut\",e.DOUBLE_BRACE=\"bracePair\",e.DOUBLE_BRACKET=\"bracketPair\",e.DOUBLE_WAVE=\"doubleWave\",e.DOWN_ARROW=\"downArrow\",e.DOWN_ARROW_CALLOUT=\"downArrowCallout\",e.DOWN_RIBBON=\"ribbon\",e.EXPLOSION1=\"irregularSeal1\",e.EXPLOSION2=\"irregularSeal2\",e.FLOWCHART_ALTERNATE_PROCESS=\"flowChartAlternateProcess\",e.FLOWCHART_CARD=\"flowChartPunchedCard\",e.FLOWCHART_COLLATE=\"flowChartCollate\",e.FLOWCHART_CONNECTOR=\"flowChartConnector\",e.FLOWCHART_DATA=\"flowChartInputOutput\",e.FLOWCHART_DECISION=\"flowChartDecision\",e.FLOWCHART_DELAY=\"flowChartDelay\",e.FLOWCHART_DIRECT_ACCESS_STORAGE=\"flowChartMagneticDrum\",e.FLOWCHART_DISPLAY=\"flowChartDisplay\",e.FLOWCHART_DOCUMENT=\"flowChartDocument\",e.FLOWCHART_EXTRACT=\"flowChartExtract\",e.FLOWCHART_INTERNAL_STORAGE=\"flowChartInternalStorage\",e.FLOWCHART_MAGNETIC_DISK=\"flowChartMagneticDisk\",e.FLOWCHART_MANUAL_INPUT=\"flowChartManualInput\",e.FLOWCHART_MANUAL_OPERATION=\"flowChartManualOperation\",e.FLOWCHART_MERGE=\"flowChartMerge\",e.FLOWCHART_MULTIDOCUMENT=\"flowChartMultidocument\",e.FLOWCHART_OFFLINE_STORAGE=\"flowChartOfflineStorage\",e.FLOWCHART_OFFPAGE_CONNECTOR=\"flowChartOffpageConnector\",e.FLOWCHART_OR=\"flowChartOr\",e.FLOWCHART_PREDEFINED_PROCESS=\"flowChartPredefinedProcess\",e.FLOWCHART_PREPARATION=\"flowChartPreparation\",e.FLOWCHART_PROCESS=\"flowChartProcess\",e.FLOWCHART_PUNCHED_TAPE=\"flowChartPunchedTape\",e.FLOWCHART_SEQUENTIAL_ACCESS_STORAGE=\"flowChartMagneticTape\",e.FLOWCHART_SORT=\"flowChartSort\",e.FLOWCHART_STORED_DATA=\"flowChartOnlineStorage\",e.FLOWCHART_SUMMING_JUNCTION=\"flowChartSummingJunction\",e.FLOWCHART_TERMINATOR=\"flowChartTerminator\",e.FOLDED_CORNER=\"folderCorner\",e.FRAME=\"frame\",e.FUNNEL=\"funnel\",e.GEAR_6=\"gear6\",e.GEAR_9=\"gear9\",e.HALF_FRAME=\"halfFrame\",e.HEART=\"heart\",e.HEPTAGON=\"heptagon\",e.HEXAGON=\"hexagon\",e.HORIZONTAL_SCROLL=\"horizontalScroll\",e.ISOSCELES_TRIANGLE=\"triangle\",e.LEFT_ARROW=\"leftArrow\",e.LEFT_ARROW_CALLOUT=\"leftArrowCallout\",e.LEFT_BRACE=\"leftBrace\",e.LEFT_BRACKET=\"leftBracket\",e.LEFT_CIRCULAR_ARROW=\"leftCircularArrow\",e.LEFT_RIGHT_ARROW=\"leftRightArrow\",e.LEFT_RIGHT_ARROW_CALLOUT=\"leftRightArrowCallout\",e.LEFT_RIGHT_CIRCULAR_ARROW=\"leftRightCircularArrow\",e.LEFT_RIGHT_RIBBON=\"leftRightRibbon\",e.LEFT_RIGHT_UP_ARROW=\"leftRightUpArrow\",e.LEFT_UP_ARROW=\"leftUpArrow\",e.LIGHTNING_BOLT=\"lightningBolt\",e.LINE_CALLOUT_1=\"borderCallout1\",e.LINE_CALLOUT_1_ACCENT_BAR=\"accentCallout1\",e.LINE_CALLOUT_1_BORDER_AND_ACCENT_BAR=\"accentBorderCallout1\",e.LINE_CALLOUT_1_NO_BORDER=\"callout1\",e.LINE_CALLOUT_2=\"borderCallout2\",e.LINE_CALLOUT_2_ACCENT_BAR=\"accentCallout2\",e.LINE_CALLOUT_2_BORDER_AND_ACCENT_BAR=\"accentBorderCallout2\",e.LINE_CALLOUT_2_NO_BORDER=\"callout2\",e.LINE_CALLOUT_3=\"borderCallout3\",e.LINE_CALLOUT_3_ACCENT_BAR=\"accentCallout3\",e.LINE_CALLOUT_3_BORDER_AND_ACCENT_BAR=\"accentBorderCallout3\",e.LINE_CALLOUT_3_NO_BORDER=\"callout3\",e.LINE_CALLOUT_4=\"borderCallout4\",e.LINE_CALLOUT_4_ACCENT_BAR=\"accentCallout3=4\",e.LINE_CALLOUT_4_BORDER_AND_ACCENT_BAR=\"accentBorderCallout4\",e.LINE_CALLOUT_4_NO_BORDER=\"callout4\",e.LINE=\"line\",e.LINE_INVERSE=\"lineInv\",e.MATH_DIVIDE=\"mathDivide\",e.MATH_EQUAL=\"mathEqual\",e.MATH_MINUS=\"mathMinus\",e.MATH_MULTIPLY=\"mathMultiply\",e.MATH_NOT_EQUAL=\"mathNotEqual\",e.MATH_PLUS=\"mathPlus\",e.MOON=\"moon\",e.NON_ISOSCELES_TRAPEZOID=\"nonIsoscelesTrapezoid\",e.NOTCHED_RIGHT_ARROW=\"notchedRightArrow\",e.NO_SYMBOL=\"noSmoking\",e.OCTAGON=\"octagon\",e.OVAL=\"ellipse\",e.OVAL_CALLOUT=\"wedgeEllipseCallout\",e.PARALLELOGRAM=\"parallelogram\",e.PENTAGON=\"homePlate\",e.PIE=\"pie\",e.PIE_WEDGE=\"pieWedge\",e.PLAQUE=\"plaque\",e.PLAQUE_TABS=\"plaqueTabs\",e.QUAD_ARROW=\"quadArrow\",e.QUAD_ARROW_CALLOUT=\"quadArrowCallout\",e.RECTANGLE=\"rect\",e.RECTANGULAR_CALLOUT=\"wedgeRectCallout\",e.REGULAR_PENTAGON=\"pentagon\",e.RIGHT_ARROW=\"rightArrow\",e.RIGHT_ARROW_CALLOUT=\"rightArrowCallout\",e.RIGHT_BRACE=\"rightBrace\",e.RIGHT_BRACKET=\"rightBracket\",e.RIGHT_TRIANGLE=\"rtTriangle\",e.ROUNDED_RECTANGLE=\"roundRect\",e.ROUNDED_RECTANGULAR_CALLOUT=\"wedgeRoundRectCallout\",e.ROUND_1_RECTANGLE=\"round1Rect\",e.ROUND_2_DIAG_RECTANGLE=\"round2DiagRect\",e.ROUND_2_SAME_RECTANGLE=\"round2SameRect\",e.SMILEY_FACE=\"smileyFace\",e.SNIP_1_RECTANGLE=\"snip1Rect\",e.SNIP_2_DIAG_RECTANGLE=\"snip2DiagRect\",e.SNIP_2_SAME_RECTANGLE=\"snip2SameRect\",e.SNIP_ROUND_RECTANGLE=\"snipRoundRect\",e.SQUARE_TABS=\"squareTabs\",e.STAR_10_POINT=\"star10\",e.STAR_12_POINT=\"star12\",e.STAR_16_POINT=\"star16\",e.STAR_24_POINT=\"star24\",e.STAR_32_POINT=\"star32\",e.STAR_4_POINT=\"star4\",e.STAR_5_POINT=\"star5\",e.STAR_6_POINT=\"star6\",e.STAR_7_POINT=\"star7\",e.STAR_8_POINT=\"star8\",e.STRIPED_RIGHT_ARROW=\"stripedRightArrow\",e.SUN=\"sun\",e.SWOOSH_ARROW=\"swooshArrow\",e.TEAR=\"teardrop\",e.TRAPEZOID=\"trapezoid\",e.UP_ARROW=\"upArrow\",e.UP_ARROW_CALLOUT=\"upArrowCallout\",e.UP_DOWN_ARROW=\"upDownArrow\",e.UP_DOWN_ARROW_CALLOUT=\"upDownArrowCallout\",e.UP_RIBBON=\"ribbon2\",e.U_TURN_ARROW=\"uturnArrow\",e.VERTICAL_SCROLL=\"verticalScroll\",e.WAVE=\"wave\",(e=w=w||{}).AREA=\"area\",e.BAR=\"bar\",e.BAR3D=\"bar3D\",e.BUBBLE=\"bubble\",e.BUBBLE3D=\"bubble3D\",e.DOUGHNUT=\"doughnut\",e.LINE=\"line\",e.PIE=\"pie\",e.RADAR=\"radar\",e.SCATTER=\"scatter\",(e=te=te||{}).TEXT1=\"tx1\",e.TEXT2=\"tx2\",e.BACKGROUND1=\"bg1\",e.BACKGROUND2=\"bg2\",e.ACCENT1=\"accent1\",e.ACCENT2=\"accent2\",e.ACCENT3=\"accent3\",e.ACCENT4=\"accent4\",e.ACCENT5=\"accent5\",e.ACCENT6=\"accent6\",(e=x=x||{}).chart=\"chart\",e.image=\"image\",e.line=\"line\",e.rect=\"rect\",e.text=\"text\",e.placeholder=\"placeholder\",(e=I=I||{}).chart=\"chart\",e.hyperlink=\"hyperlink\",e.image=\"image\",e.media=\"media\",e.online=\"online\",e.placeholder=\"placeholder\",e.table=\"table\",e.tablecell=\"tablecell\",e.text=\"text\",e.notes=\"notes\",(e=re=re||{}).title=\"title\",e.body=\"body\",e.image=\"pic\",e.chart=\"chart\",e.table=\"tbl\",e.media=\"media\",(e=C=C||{}).DEFAULT=\"•\",e.CHECK=\"✓\",e.STAR=\"★\",e.TRIANGLE=\"▶\",\"data:image/png;base64,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\");function R(e,t,r){return\"number\"==typeof(e=\"string\"!=typeof e||isNaN(Number(e))?e:Number(e))&&e<100?M(e):\"number\"==typeof e&&100<=e?e:\"string\"==typeof e&&e.includes(\"%\")?(!t||\"X\"!==t)&&t&&\"Y\"===t?Math.round(parseFloat(e)/100*r.height):Math.round(parseFloat(e)/100*r.width):0}function ne(e){return e.replace(/[xy]/g,function(e){var t=16*Math.random()|0;return(\"x\"===e?t:3&t|8).toString(16)})}function O(e){return void 0===e||null==e?\"\":e.toString().replace(/&/g,\"&\").replace(//g,\">\").replace(/\"/g,\""\").replace(/'/g,\"'\")}function M(e){return\"number\"==typeof e&&100${t}`:``}function G(e){let t=\"solid\",r=\"\",a=\"\",n=\"\";return e&&(\"string\"==typeof e?r=e:(e.type&&(t=e.type),e.color&&(r=e.color),e.alpha&&(a+=``),e.transparency&&(a+=``)),\"solid\"===t?n+=`${j(r,a)}`:n+=\"\"),n}function S(e){return e._rels.length+e._relsChart.length+e._relsMedia.length+1}function se(e){if(e&&\"object\"==typeof e)return\"outer\"!==e.type&&\"inner\"!==e.type&&\"none\"!==e.type&&(console.warn(\"Warning: shadow.type options are `outer`, `inner` or `none`.\"),e.type=\"outer\"),e.angle&&((isNaN(Number(e.angle))||e.angle<0||359{e=(e=e||{_type:I.tablecell}).options||null;o+=Number(null!==e&&e.colspan?e.colspan:1)}),p.verbose&&console.log(\"| numCols ......................................... = \"+o),!A&&p.colW&&(c=Array.isArray(p.colW)?p.colW.reduce((e,t)=>e+t)*F:p.colW*o||0,p.verbose)&&console.log(\"| tableCalcW ...................................... = \"+c/F),n=c||M((i?i/F:a[1])+a[3]),p.verbose&&console.log(\"| emuSlideTabW .................................... = \"+(n/F).toFixed(1)),!p.colW||!Array.isArray(p.colW))if(p.colW&&!isNaN(Number(p.colW))){let e=[];(t[0]||[]).forEach(()=>e.push(p.colW)),p.colW=[],e.forEach(e=>{Array.isArray(p.colW)&&p.colW.push(e)})}else{p.colW=[];for(let e=0;e{let n=[],r=0,a=0,o=[],i=(t.forEach(e=>{var t;o.push({_type:I.tablecell,text:[],options:e.options}),e.options.margin&&1<=e.options.margin[0]?(null!=(t=e.options)&&t.margin&&e.options.margin[0]&&z(e.options.margin[0])>r?r=z(e.options.margin[0]):null!=p&&p.margin&&p.margin[0]&&z(p.margin[0])>r&&(r=z(p.margin[0])),null!=(t=e.options)&&t.margin&&e.options.margin[2]&&z(e.options.margin[2])>a?a=z(e.options.margin[2]):null!=p&&p.margin&&p.margin[2]&&z(p.margin[2])>a&&(a=z(p.margin[2]))):(null!=(t=e.options)&&t.margin&&e.options.margin[0]&&M(e.options.margin[0])>r?r=M(e.options.margin[0]):null!=p&&p.margin&&p.margin[0]&&M(p.margin[0])>r&&(r=M(p.margin[0])),null!=(t=e.options)&&t.margin&&e.options.margin[2]&&M(e.options.margin[2])>a?a=M(e.options.margin[2]):null!=p&&p.margin&&p.margin[2]&&M(p.margin[2])>a&&(a=M(p.margin[2])))}),h(),f+=r+a,p.verbose&&0===e&&console.log(`| SLIDE [${d.length}]: emuSlideTabH ...... = ${(u/F).toFixed(1)} `),t.forEach((r,a)=>{var e={_type:I.tablecell,_lines:null,_lineHeight:M((null!=(e=r.options)&&e.fontSize?r.options.fontSize:p.fontSize||v)*(k+(p.autoPageLineWeight||0))/100),text:[],options:r.options};e.options.rowspan&&(e._lineHeight=0),e.options.autoPageCharWeight=p.autoPageCharWeight||null;let t=p.colW[a];r.options.colspan&&Array.isArray(p.colW)&&(t=p.colW.filter((e,t)=>a<=t&&te+t)),e._lines=((e,t)=>{var r=2.3+(null!=(r=e.options)&&r.autoPageCharWeight?e.options.autoPageCharWeight:0);let a=Math.floor(t/m*F)/((null!=(t=e.options)&&t.fontSize?e.options.fontSize:v)/r),n=[],o=[],i=[],s=[],A=(e.text&&0===e.text.toString().trim().length?o.push({_type:I.tablecell,text:\" \"}):\"number\"==typeof e.text||\"string\"==typeof e.text?o.push({_type:I.tablecell,text:(e.text||\"\").toString().trim()}):Array.isArray(e.text)&&(o=e.text),[]);return o.forEach(t=>{var e;\"string\"==typeof t.text&&(1{A.push({_type:I.tablecell,text:e,options:Object.assign(Object.assign({},t.options),{breakLine:!0})})}):A.push({_type:I.tablecell,text:t.text.trim(),options:t.options}),null!=(e=t.options))&&e.breakLine&&(i.push(A),A=[]),0{e.forEach(a=>{let n=[];let o=String(a.text).split(\" \");o.forEach((e,t)=>{var r=Object.assign({},a.options);null!=r&&r.breakLine&&(r.breakLine=t+1===o.length),n.push({_type:I.tablecell,text:e+(t+1{let t=[],r=\"\";e.forEach(e=>{r.length+e.text.length>a&&(n.push(t),t=[],r=\"\"),t.push(e),r+=e.text.toString()}),0{e._lineHeight>=s&&(s=e._lineHeight)}),f+s>u&&(p.verbose&&(console.log(\"\\n|-----------------------------------------------------------------------|\"),console.log(`|-- NEW SLIDE CREATED (currTabH+currLineH > maxH) => ${(f/F).toFixed(2)} + ${(l._lineHeight/F).toFixed(2)} > `+u/F),console.log(\"|-----------------------------------------------------------------------|\\n\\n\")),0e.text.length).reduce((e,t)=>e+t)&&g.rows.push(o),d.push(g),c=[],g={rows:c},o=[],t.forEach(e=>o.push({_type:I.tablecell,text:[],options:e.options})),h(),f+=r+a,p.verbose&&console.log(`| SLIDE [${d.length}]: emuSlideTabH ...... = ${(u/F).toFixed(1)} `),f=0,(p.addHeaderToEach||p.autoPageRepeatHeader)&&p._arrObjTabHeadRows&&p._arrObjTabHeadRows.forEach(e=>{let t=[],r=0;e.forEach(e=>{t.push(e),e._lineHeight>r&&(r=e._lineHeight)}),g.rows.push(t),f+=r}),e=o[i]);var c=l._lines.shift(),l=(Array.isArray(e.text)&&(c?e.text=e.text.concat(c):0===e.text.length&&(e.text=e.text.concat({_type:I.tablecell,text:\"\"}))),i===n.length-1&&(f+=s),i=ie._lines.length).reduce((e,t)=>e+t));0===l&&(A=!0)}0console.log(e)),console.log(\"|================================================|\\n\\n\")),d}let le=0;function ce(e,t,r,a){function n(e){e&&\"none\"!==e.style&&(void 0!==e.size&&(isNaN(Number(e.size))||e.size<=0)&&(console.warn(\"Warning: chart.gridLine.size must be greater than 0.\"),delete e.size),e.style&&![\"solid\",\"dash\",\"dot\"].includes(e.style)&&(console.warn(\"Warning: chart.gridLine.style options: `solid`, `dash`, `dot`.\"),delete e.style),e.cap)&&![\"flat\",\"square\",\"round\"].includes(e.cap)&&(console.warn(\"Warning: chart.gridLine.cap options: `flat`, `square`, `round`.\"),delete e.cap)}var o=++le,i={_type:null,text:null,options:null,chartRid:null};let s=null,A=[],l=(s=Array.isArray(t)?(t.forEach(e=>{A=A.concat(e.data)}),r||a):(A=r,a),A.forEach((e,t)=>{e._dataIndex=t,void 0===e.labels||Array.isArray(e.labels[0])||(e.labels=[e.labels])}),s&&\"object\"==typeof s?s:{});l._type=t,l.x=void 0===l.x||null==l.x||isNaN(Number(l.x))?1:l.x,l.y=void 0===l.y||null==l.y||isNaN(Number(l.y))?1:l.y,l.w=l.w||\"50%\",l.h=l.h||\"50%\",l.objectName=l.objectName?O(l.objectName):\"Chart \"+e._slideObjects.filter(e=>e._type===I.chart).length,[\"bar\",\"col\"].includes(l.barDir||\"\")||(l.barDir=\"col\"),l._type!==w.AREA||[\"stacked\",\"standard\",\"percentStacked\"].includes(l.barGrouping||\"\")||(l.barGrouping=\"standard\"),l._type!==w.BAR||[\"clustered\",\"stacked\",\"percentStacked\"].includes(l.barGrouping||\"\")||(l.barGrouping=\"clustered\"),l._type!==w.BAR3D||[\"clustered\",\"stacked\",\"standard\",\"percentStacked\"].includes(l.barGrouping||\"\")||(l.barGrouping=\"standard\"),null!=(r=l.barGrouping)&&r.includes(\"tacked\")&&!l.barGapWidthPct&&(l.barGapWidthPct=50),l.dataLabelPosition&&(l._type!==w.AREA&&l._type!==w.BAR3D&&l._type!==w.DOUGHNUT&&l._type!==w.RADAR||delete l.dataLabelPosition,l._type!==w.PIE||[\"bestFit\",\"ctr\",\"inEnd\",\"outEnd\"].includes(l.dataLabelPosition)||delete l.dataLabelPosition,l._type!==w.BUBBLE&&l._type!==w.BUBBLE3D&&l._type!==w.LINE&&l._type!==w.SCATTER||[\"b\",\"ctr\",\"l\",\"r\",\"t\"].includes(l.dataLabelPosition)||delete l.dataLabelPosition,l._type===w.BAR)&&([\"stacked\",\"percentStacked\"].includes(l.barGrouping||\"\")||[\"ctr\",\"inBase\",\"inEnd\"].includes(l.dataLabelPosition)||delete l.dataLabelPosition,[\"clustered\"].includes(l.barGrouping||\"\")||[\"ctr\",\"inBase\",\"inEnd\",\"outEnd\"].includes(l.dataLabelPosition)||delete l.dataLabelPosition),l.dataLabelBkgrdColors=!(!l.dataLabelBkgrdColors&&l.dataLabelBkgrdColors)&&l.dataLabelBkgrdColors,[\"b\",\"l\",\"r\",\"t\",\"tr\"].includes(l.legendPos||\"\")||(l.legendPos=\"r\"),[\"cone\",\"coneToMax\",\"box\",\"cylinder\",\"pyramid\",\"pyramidToMax\"].includes(l.bar3DShape||\"\")||(l.bar3DShape=\"box\"),[\"circle\",\"dash\",\"diamond\",\"dot\",\"none\",\"square\",\"triangle\"].includes(l.lineDataSymbol||\"\")||(l.lineDataSymbol=\"circle\"),[\"gap\",\"span\"].includes(l.displayBlanksAs||\"\")||(l.displayBlanksAs=\"span\"),[\"standard\",\"marker\",\"filled\"].includes(l.radarStyle||\"\")||(l.radarStyle=\"standard\"),l.lineDataSymbolSize=l.lineDataSymbolSize&&!isNaN(l.lineDataSymbolSize)?l.lineDataSymbolSize:6,l.lineDataSymbolLineSize=l.lineDataSymbolLineSize&&!isNaN(l.lineDataSymbolLineSize)?z(l.lineDataSymbolLineSize):z(.75),l.layout&&[\"x\",\"y\",\"w\",\"h\"].forEach(e=>{var t=l.layout[e];(isNaN(Number(t))||t<0||1e._type===I.image).length;if(p||c)if(p&&\"string\"!=typeof p)console.error(\"ERROR: addImage() 'path' should be a string, ex: {path:'/img/sample.png'} - you sent \"+String(p));else if(c&&\"string\"!=typeof c)console.error(\"ERROR: addImage() 'data' should be a string, ex: {data:'image/png;base64,NMP[...]'} - you sent \"+String(c));else if(c&&\"string\"==typeof c&&!c.toLowerCase().includes(\"base64,\"))console.error(\"ERROR: Image `data` value lacks a base64 header! Ex: 'image/png;base64,NMP[...]')\");else{let t=(p.substring(p.lastIndexOf(\"/\")+1).split(\"?\")[0].split(\".\").pop().split(\"#\")[0]||\"png\").toLowerCase();if(c&&/image\\/(\\w+);/.exec(c)&&0e.path&&e.path===p&&e.type===\"image/\"+t&&!e.isDuplicate)[0],e._relsMedia.push({path:p||\"preencoded.\"+t,type:\"image/\"+t,extn:t,data:c||\"\",rId:u,isDuplicate:!(null==n||!n.Target),Target:null!=n&&n.Target?n.Target:`../media/image-${e._slideNum}-${e._relsMedia.length+1}.`+t}),a.imageRid=u),\"object\"==typeof l){if(!l.url&&!l.slide)throw new Error(\"ERROR: `hyperlink` option requires either: `url` or `slide`\");e._rels.push({type:I.hyperlink,data:l.slide?\"slide\":\"dummy\",rId:++u,Target:l.url||l.slide.toString()}),l._rId=u,a.hyperlink=l}e._slideObjects.push(a)}else console.error(\"ERROR: addImage() requires either 'data' or 'path' parameter!\")}function ue(e,t,r){var r=\"object\"==typeof r?r:{},a=(r.line=r.line||{type:\"none\"},{_type:I.text,shape:t||b.RECTANGLE,options:r,text:null});if(!t)throw new Error(\"Missing/Invalid shape parameter! Example: `addShape(pptxgen.shapes.LINE, {x:1, y:1, w:1, h:1});`\");var t={type:r.line.type||\"solid\",color:r.line.color||\"333333\",transparency:r.line.transparency||0,width:r.line.width||1,dashType:r.line.dashType||\"solid\",beginArrowType:r.line.beginArrowType||null,endArrowType:r.line.endArrowType||null};\"object\"==typeof r.line&&\"none\"!==r.line.type&&(r.line=t),r.x=r.x||(0===r.x?0:1),r.y=r.y||(0===r.y?0:1),r.w=r.w||(0===r.w?0:1),r.h=r.h||(0===r.h?0:1),r.objectName=r.objectName?O(r.objectName):\"Shape \"+e._slideObjects.filter(e=>e._type===I.text).length,\"string\"==typeof r.line&&((t=t).color=String(r.line),r.line=t),\"number\"==typeof r.lineSize&&(r.line.width=r.lineSize),\"string\"==typeof r.lineDash&&(r.line.dashType=r.lineDash),\"string\"==typeof r.lineHead&&(r.line.beginArrowType=r.lineHead),\"string\"==typeof r.lineTail&&(r.line.endArrowType=r.lineTail),L(e,a),e._slideObjects.push(a)}function fe(r,e,t,a){let n={_type:a?I.placeholder:I.text,shape:(null==t?void 0:t.shape)||b.RECTANGLE,text:e&&0!==e.length?e:[{text:\"\",options:null}],options:t||{}};function o(t){var e;return t.placeholder||(t.color=t.color||n.options.color||r.color||d),(t.placeholder||a)&&(t.bullet=t.bullet||!1),(t=t.placeholder&&r._slideLayout&&r._slideLayout._slideObjects&&null!=(e=r._slideLayout._slideObjects.filter(e=>\"placeholder\"===e._type&&e.options&&e.options.placeholder&&e.options.placeholder===t.placeholder)[0])&&e.options?Object.assign(Object.assign({},t),e.options):t).objectName=t.objectName?O(t.objectName):\"Text \"+r._slideObjects.filter(e=>e._type===I.text).length,t.shape===b.LINE&&(e={type:t.line.type||\"solid\",color:t.line.color||\"333333\",transparency:t.line.transparency||0,width:t.line.width||1,dashType:t.line.dashType||\"solid\",beginArrowType:t.line.beginArrowType||null,endArrowType:t.line.endArrowType||null},\"object\"==typeof t.line&&(t.line=e),\"string\"==typeof t.line&&(e=e,\"string\"==typeof t.line&&(e.color=t.line),t.line=e),\"number\"==typeof t.lineSize&&(t.line.width=t.lineSize),\"string\"==typeof t.lineDash&&(t.line.dashType=t.lineDash),\"string\"==typeof t.lineHead&&(t.line.beginArrowType=t.lineHead),\"string\"==typeof t.lineTail)&&(t.line.endArrowType=t.lineTail),t.line=t.line||{},t.lineSpacing=t.lineSpacing&&!isNaN(t.lineSpacing)?t.lineSpacing:null,t.lineSpacingMultiple=t.lineSpacingMultiple&&!isNaN(t.lineSpacingMultiple)?t.lineSpacingMultiple:null,t._bodyProp=t._bodyProp||{},t._bodyProp.autoFit=t.autoFit||!1,t._bodyProp.anchor=t.placeholder?null:s.ctr,t._bodyProp.vert=t.vert||null,t._bodyProp.wrap=\"boolean\"!=typeof t.wrap||t.wrap,(t.inset&&!isNaN(Number(t.inset))||0===t.inset)&&(t._bodyProp.lIns=M(t.inset),t._bodyProp.rIns=M(t.inset),t._bodyProp.tIns=M(t.inset),t._bodyProp.bIns=M(t.inset)),\"boolean\"==typeof t.underline&&!0===t.underline&&(t.underline={style:\"sng\"}),0===(t.align||\"\").toLowerCase().indexOf(\"c\")?t._bodyProp.align=i.center:0===(t.align||\"\").toLowerCase().indexOf(\"l\")?t._bodyProp.align=i.left:0===(t.align||\"\").toLowerCase().indexOf(\"r\")?t._bodyProp.align=i.right:0===(t.align||\"\").toLowerCase().indexOf(\"j\")&&(t._bodyProp.align=i.justify),0===(t.valign||\"\").toLowerCase().indexOf(\"b\")?t._bodyProp.anchor=s.b:0===(t.valign||\"\").toLowerCase().indexOf(\"m\")?t._bodyProp.anchor=s.ctr:0===(t.valign||\"\").toLowerCase().indexOf(\"t\")&&(t._bodyProp.anchor=s.t),se(t.shadow),t}n.options=o(n.options),n.text.forEach(e=>e.options=o(e.options||{})),L(r,n.text||\"\"),r._slideObjects.push(n)}function de(t,r){if(r.bkgd&&(r.background||(r.background={}),\"string\"==typeof r.bkgd?r.background.color=r.bkgd:(r.bkgd.data&&(r.background.data=r.bkgd.data),r.bkgd.path&&(r.background.path=r.bkgd.path),r.bkgd.src&&(r.background.path=r.bkgd.src))),null!=(a=r.background)&&a.fill&&(r.background.color=r.background.fill),t&&(t.path||t.data)){t.path=t.path||\"preencoded.png\";let e=(t.path.split(\".\").pop()||\"png\").split(\"?\")[0];\"jpg\"===e&&(e=\"jpeg\"),r._relsMedia=r._relsMedia||[];var a=r._relsMedia.length+1;r._relsMedia.push({path:t.path,type:I.image,extn:e,data:t.data||null,rId:a,Target:`../media/${(r._name||\"\").replace(/\\s+/gi,\"-\")}-image-${r._relsMedia.length+1}.`+e}),r._bkgdImgRid=a}}function L(a,e,t){let r=[];\"string\"!=typeof e&&\"number\"!=typeof e&&(Array.isArray(e)?r=e:\"object\"==typeof e&&(r=[e]),r.forEach((r,e)=>{if(t&&t[e]&&t[e].hyperlink&&(r.options=Object.assign(Object.assign({},r.options),t[e])),Array.isArray(r)){let t=[];r.forEach(e=>{e.options&&!e.text.options&&t.push(e.options)}),L(a,r,t)}else Array.isArray(r.text)?L(a,r.text,t&&t[e]?[t[e]]:void 0):r&&\"object\"==typeof r&&r.options&&r.options.hyperlink&&!r.options.hyperlink._rId?\"object\"!=typeof r.options.hyperlink?console.log(\"ERROR: text `hyperlink` option should be an object. Ex: `hyperlink: {url:'https://github.com'}` \"):r.options.hyperlink.url||r.options.hyperlink.slide?(e=S(a),a._rels.push({type:I.hyperlink,data:r.options.hyperlink.slide?\"slide\":\"dummy\",rId:e,Target:O(r.options.hyperlink.url)||r.options.hyperlink.slide.toString()}),r.options.hyperlink._rId=e):console.log(\"ERROR: 'hyperlink requires either: `url` or `slide`'\"):r&&\"object\"==typeof r&&r.options&&r.options.hyperlink&&r.options.hyperlink._rId&&0===a._rels.filter(e=>e.rId===r.options.hyperlink._rId).length&&a._rels.push({type:I.hyperlink,data:r.options.hyperlink.slide?\"slide\":\"dummy\",rId:r.options.hyperlink._rId,Target:O(r.options.hyperlink.url)||r.options.hyperlink.slide.toString()})}))}class he{constructor(e){this.addSlide=e.addSlide,this.getSlide=e.getSlide,this._name=\"Slide \"+e.slideNumber,this._presLayout=e.presLayout,this._rId=e.slideRId,this._rels=[],this._relsChart=[],this._relsMedia=[],this._setSlideNum=e.setSlideNum,this._slideId=e.slideId,this._slideLayout=e.slideLayout||null,this._slideNum=e.slideNumber,this._slideObjects=[],this._slideNumberProps=null!=(e=this._slideLayout)&&e._slideNumberProps?this._slideLayout._slideNumberProps:null}set bkgd(e){this._bkgd=e,this._background&&this._background.color||(this._background||(this._background={}),\"string\"==typeof e&&(this._background.color=e))}get bkgd(){return this._bkgd}set background(e){(this._background=e)&&de(e,this)}get background(){return this._background}set color(e){this._color=e}get color(){return this._color}set hidden(e){this._hidden=e}get hidden(){return this._hidden}set slideNumber(e){this._slideNumberProps=e,this._setSlideNum(e)}get slideNumber(){return this._slideNumberProps}get newAutoPagedSlides(){return this._newAutoPagedSlides}addChart(e,t,r){return ce(this,(r||{})._type=e,t,r),this}addImage(e){return pe(this,e),this}addMedia(e){{var n=this,o=e.x||0,i=e.y||0,s=e.w||2,A=e.h||2,l=e.data||\"\",c=e.link||\"\";let t=e.path||\"\",r=e.type||\"audio\",a;var p=e.cover||\"data:image/png;base64,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AAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKREkRUAAACwrUpLSwuGDRvWfMCAAS26du3avKysrLiioqKkZcuWzZs1a1bcvHnz0tLS0rJsNtusuLi4ebNmzUoLCgo+8/eijY2N9Zs3b66pra2tqqur21xTU1NdVVVVs2nTptqNGzdWbdiwoeYvf/nL5hUrVlQtWLBgw6xZs6pqamoaJQYAAEDaKYABAACIiIghQ4aUHnTQQW379u3bql27dq3at2/fpkWLFq2bN29eWVpa2qpZs2bNCwsLm2ez2fLCwsLyoqKi8sLCwtKknK+hoaG6vr6+qqGh4S91dXV/aWhoqNq8eXNVTU3NuqqqqvUbNmxYu2rVqjWrV69e99Zbb6177rnnPpgzZ06NTwYAAABJogAGAADIA8OGDWt+xBFHdBwwYECnLl26dGjdunXHFi1adCgtLe1YUlLSvlmzZq0KCgqK07yDwsLCssLCwrKIaPdp/zuNjY21mzdvXrdp06ZVNTU172/YsGHl2rVr31+2bNnKBQsWrHjyySffnzVrVpVPGAAAAE1Fpuexsd9HfaF+ZcSal0ptCAAAIAE6deqUPf744zvtueeeXbp3796lbdu2XSorKzuXlpZ2KS0t7VBYWFhhSztGQ0PDxpqampU1NTXL169fv+yDDz5Y9s477yybPXv2sj/96U8rVqxYUWdLAAAAbE9t9q6Jog4f/TUFMAAAQEJks9nMt7/97Y4jRozo1bdv397t2rXrXl5e3rWsrKxzcXFx+4gosKUmp7G2tnZVTU3Nso0bNy5btWrV0tdff/2tJ598cvG999672noAAADYFgpgAACAhPne977X6a9Fb/v27Xu1bNmyV1lZWa8kvXOXLauvr9/wl7/8ZdG6desWL1u2bNHChQsX/fGPf1w8derUjbYDAADAliiAAQAAmqhsNps59dRTuxx66KH9+/Tp87n27dv3Ly8v719UVOSRzXlq06ZNKzZu3Pj6+++//8abb775xqOPPvrG3XffvcpmAAAA+CsFMAAAQBNx6qmndvniF784qHfv3v3btWv3uYqKis8VFhaW2wxbUl9fv37Dhg1vfPDBB68vXrz4jccee2z+jTfeuNxmAAAA8pMCGAAAYBc45phjWn/rW9/aq3///kPatGnTv6Kiop9HOLO9NDQ0VG/cuPGtNWvWLFy4cOGcO+6445WHHnporc0AAACknwIYAABgJzjjjDO6f+lLX9qrV69eg1u3bj2orKysR0RkbIadJFddXb103bp18xcvXjz30UcffeXqq69+x1oAAADSRwEMAACwnZWWlhb86le/2u3QQw8d1r17931btmw5qLCwsMxmaEoaGhqqP/zww/nvvPPOzGeeeWbW2LFj36ipqWm0GQAAgGRTAAMAAGwHP/7xj7t+9atf3bdXr15D27Ztu1c2m21jKyRJXV3dmg8++OCVRYsWvfznP/95xh/+8IdltgIAAJA8CmAAAIBtcOKJJ7Y75ZRTDujXr9+w1q1bD81ms61shTSpq6tbt3bt2pfffPPNWbfccsvUe++9d7WtAAAANH0KYAAAgE+hoqKi4IILLhg0YsSI/bp27bpfy5YtB2YymUKbIR/kcrmGDz/8cP6777474/nnn59x4YUXvrZx40aPiwYAAGiCFMAAAAAf4/jjj2/7/e9//8D+/fsf2Lp1630KCgpKbAUiGhsbN61fv37eW2+9NeWGG2545u67715lKwAAAE2DAhgAAOB/ZLPZzAUXXPC5I4888sDu3bsfWFFRsVtEFNgMbFl1dfWSd999d8qsWbNmnnvuuS+vW7euwVYAAAB2DQUwAACQ10pLSwsuvfTSQYcccsjBXbt2HVFWVtbDVmDb1dbWrnr//fdfmDp16uRf/vKXL65evbreVgAAAHYeBTAAAJB3Bg0aVHrBBRd8fs899zywQ4cOBxQVFbWwFdj+Ghsba9euXTtrzpw5T59//vmTX3755WpbAQAA2LEUwAAAQF4YNmxY8/POO+/gIUOGHOZ9vrDz/W0ZfNFFFz07a9asKlsBAADY/hTAAABAarVq1arwyiuv3HfEiBEjO3TocFBhYWGZrcCu19DQUP3+++8/O2XKlIk/+clPZm7cuLHRVgAAALYPBTAAAJAqrVq1Kvztb3+7/3777Xd4x44dRxQWFpbbCjRdDQ0NG99///0pM2bMeOqHP/zhC8pgAACAz0YBDAAApMJZZ53V45vf/OaRvXr1GllaWtrVRiB5ampq3l28ePHEO++8c9LVV1/9jo0AAABsPQUwAACQWMOHDy+/6KKLvjB48OCjW7RoMdBGID0+/PDDV+fNmzfhvPPOe3L69Ol/sREAAIBPRwEMAAAkSqtWrQpvuOGGQ/bbb79/atOmzX6ZTCZrK5BeuVyubs2aNTNmzJjx2JgxYyavW7euwVYAAAA+ngIYAABIhB//+Mddv/e9732lZ8+e/1RcXNzWRiD/1NbWfvD2228/dssttzz029/+9l0bAQAA+L8UwAAAQJNVUVFRcO21137+4IMPPrZ169b7ZTKZAlsBIqJxzZo1M59//vnxp5122hR3BQMAAPx/CmAAAKDJOeWUUzqefvrpx/bu3ftL2Wy2jY0AH6e+vn7j0qVLH/vd7373x+uvv36ZjQAAAPlOAQwAADQJ2Ww2c+uttx5wyCGHnNC6deu9I8LdvsDWaFy7du1L06ZN+/OPfvSjZ1evXl1vJQAAQD5SAAMAALtU//79S6655pp/2nPPPY8tLy/vayPAZ1VTU7NswYIF488999wHp06dutFGAACAfKIABgAAdomf//znPU855ZQTu3btemRhYWGZjQDbW2NjY92KFSuevOWWW+689NJLF9kIAACQDxTAAADATuMxz8Cusn79+rlPP/30f5188slT6+rqcjYCAACklQIYAADY4fr27Vv8hz/84a+Pee5nI8CuUlNT8+68efPu/8EPfvDgwoULN9kIAACQNgpgAABghxkyZEjpNddc89XBgwefWFxc3MFGgKaitrZ21dy5c+/5yU9+8uc5c+bU2AgAAJAWWyqAPYoNAADYJqNHj+4wb968n06ZMuXRYcOGnaH8BZqa4uLi9sOGDTtjypQpj86bN++nJ510UntbAQAA0s4dwAAAwFY599xze33/+9//dufOnY/IZDJZGwGSIpfL1S1fvvzJG2644fbLLrvsbRsBAACSyiOgAQCAz+y8887r+53vfOfbHTt2PDyTyRTaCJBUuVyuYcWKFU/cdNNN//XrX/96sY0AAABJowAGAAC22WWXXTboG9/4xg9at249zDaAtFm7du2su++++9pzzjnnNdsAAACSQgEMAABsNcUvkE8UwQAAQJIogAEAgE9N8Qvks7Vr18665557rvv5z38+3zYAAICmaksFcGHlwOj6UV9orIqoWZG1PQAAyBO/+MUvet9xxx3nHHrooT8pLS3tYiNAPiotLe2y7777HvP973+/X1lZ2ZIpU6assxUAAKCpKetcHwXlH/01BTAAAOS5M844o/u99957zpe//OWflZeX94qIjK0AeS5TXl7e8+CDDx71/e9/v3dEvDVjxowPrQUAAGgqFMAAAMD/ceKJJ7a77777fjJq1Kh/KS8v7xOKX4B/lCkvL+99+OGHj/rWt77VfvXq1Qvnz59fbS0AAMCutqUC2DuAAQAgzwwdOrTs+uuvP6l///4nFRYWltkI20NjY2Ns2rQpqquro6amJurr62PTpk2xefPmqK+vj+rq6qivr4/NmzfHpk2boqGhYZv/fxUWFkZJSUk0a9YsioqKoqysLIqKiqJZs2ZRUlISRUVFUVpa+r9/FRQUCIjtoqGhoeq11167a8yYMffMmTOnxkYAAIBdZUvvAFYAAwBAnujUqVP2nnvuGbXXXnudnM1mK22Ej9PQ0BAbN26MDRs2/J+/Nm7cGBs3boyamprYtGlTbNq0KWpqaqK2trbJnqe4uDhKSkqitLT0f/9eUVERFRUV0aJFi//zV0VFRRQWFvog8LHq6urWvvjii7eceOKJf169enW9jQAAADubAhgAAPLcXXfdddAXv/jF00tLS7vZRn7L5XKxYcOGWLt2baxbty7Wrl37d3+tW7cuNmzYkPd7atGiRbRu3TpatWoVrVu3jjZt2vzvf27dunW0aNHCh4morq5e+sgjj1zzne98Z6ptAAAAO5MCGAAA8tTVV189+MQTTzyzoqJioG3kj8bGxli5cmUsX748Pvjgg1i9evX//n3t2rXR2NhoSZ9RYWFhtGrVKtq1axdt27b937937tw5OnTo4LHTeWbDhg3z77333qvOPPPMebYBAADsDApgAADIM1/72tfaXHrppad27979qIjQRKVUQ0NDrFq1KlasWBHvv//+//595cqVTfqRzGlXXFwcHTp0iI4dO0bnzp2jY8eO0alTp2jXrp1HS6dYLpdrfOeddx76+c9/fv2ECRPW2QgAALAjKYABACBP9OrVq9ldd931jT322OM7hYWFZTaSHh9++GG88847sXTp0njvvfdixYoVsXr16mhoaLCchCgsLIz27dtHp06dolu3btG9e/fo3r27x0mnTENDQ9W8efNu++Y3v/nHJUuWbLYRAABgR1AAAwBAHrjrrrtG/NM//dOZJSUlXWwj2davXx9Lly6Nd955539L3w8//NBiUqqysvJ/y+C//tWqVSuLSbiamppljz322G9Gjx49xTYAAIDtTQEMAAAp9qtf/arPD3/4w5+1atVqL9tIno0bN8aSJUvirbfeikWLFsV7770XmzZtspg8V1JSEl27do0+ffpE3759o3fv3lFeXm4xCbRu3bqXr7322ivGjh27yDYAAIDtRQEMAAApNGjQoNI77rjju7vttttJBQUFWRtJhtWrV8ebb74ZixcvjiVLlsTy5cujsbHRYtiigoKC6Ny5c/Tu3Tt69+4d/fr1i7Zt21pMQjQ2Nta98cYbd33rW9+6ff78+TU2AgAAfFYKYAAASJHS0tKCBx988Jj99tvvn7PZbBsbaboaGhri7bffjrfeeisWLFgQS5YscXcv201FRUX06tUr+vbtG3379o2ePXtGYWGhxTRhdXV1a2bMmHHjV77ylYdqamr85gcAALDNFMAAAJASp59+erdf/vKX51ZWVu5jG03T6tWr47XXXouFCxfGm2++GRs3brQUdooWLVpE3759Y8CAATFw4EB3CDdh69evf/E//uM//vPqq69+xzYAAIBtoQAGAICEGzRoUOm99977w969ex+byWTc4teErF+/PubNmxcLFiyIN954Q+FLk9GiRYvo169fDBgwIPbYY4+orKy0lCYkl8s1LF68eNyJJ554rcdCAwAAW0sBDAAACXbNNdcMOemkk35RVlbWyzZ2vVwuF++++27MnTs3XnvttViyZIl3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B7lcrm7y5Mm//vKXv/yIbQAAwK63pXcAK4ABAMg7paWlBTNnzjyzT58+x9vG39uwYUOMGzcuZsyY4VHPQF7KZDKx3377xde//vWoqKiwkH+waNGiP+27775X1dTUeCwEAADsQgpgAAD4H926dctOnjz5V506dRppG/9fLpeLqVOnxp///OfYuHGjhQB5r6KiIkaNGhX777+/x0L/g+XLlz9+6KGHXvLuu+/W2QYAAOwaWyqAvQMYAIC8MXz48PInnnjiynbt2o2wjf/vnXfeiWuvvTaee+652Lx5s4UARMTmzZtjzpw58dprr0XPnj2jRYsWlvI/Kioq+n7rW98aMnXq1Ofee+89f3AAAMAusKV3ACuAAQDIC9/+9rc73n777X9o0aLFANv4b1VVVXHXXXfFvffeG+vXr7cQgI+wbt26eP7552P9+vWx2267RVFRkaVERElJSefjjjvuoA8++GDKK6+88hcbAQCAnUsBDABAXjv//PP7XXzxxX8oKSnpbBv/bfr06XHttdfGokWLLAPgU3jnnXdi2rRp0bp16+jc2R8nERHZbLbyC1/4whElJSUvTp48eY2NAADAzqMABgAgb/3ud7/b60c/+tFVRUVFrWwjYs2aNXHzzTfHpEmTora21kIAtkJtbW289NJL8c4770Tfvn2jtLQ073dSWFhYNnz48C/26dNn4UMPPbTMpwQAAHYOBTAAAHnp1ltv3f+b3/zmfxYWFjbP913kcrl4/vnn4/rrr4/ly5f7cAB8BitXroxp06ZFRUVFdOvWLTKZTF7vo6CgIDto0KBDBw0atOiBBx54xycEAAB2vC0VwJmex8Z+H/WF+pURa17ym6wAACTTww8//KXDDjvsXzKZTN6/rPGDDz6I22+/Pd544w0fDIDtbMCAAfGtb30r2rRpk/e7yOVyjVOmTPn1yJEjH/LJAACAHavN3jVR1OGjv6YABgAgdV555ZXTPve5z30r3/fQ0NAQjz32WDz++ONRV1fngwGwg2Sz2Tj66KPjC1/4QhQUFOT9Pl5//fU79tprr9/7ZAAAwI6jAAYAIC9ks9nMyy+/fFafPn2Oz/ddvPvuu3HbbbfFe++954MBsJN069YtvvOd70S3bt3yfhdLliy5f5999rmypqam0ScDAAC2PwUwAACpV1paWjBr1qyzevfufVw+7yGXy8WTTz4ZDz74oLt+AXaBbDYbxxxzTBxxxBF5fzfw0qVLHxg6dOjlSmAAANj+FMAAAKRar169mk2ePHlsu3btDsrnPaxcuTJuueWWePvtt30oAHaxnj17ximnnBIdOnTI6z2sXr16yiGHHPIvS5Ys2exTAQAA28+WCuDCyoHR9aO+0FgVUbMia3sAADRpQ4cOLXvqqacub9Omzf75uoNcLhfPPPNMXH/99bF27VofCoAmYP369TFlypQoKSmJnj17RiaTycs9NG/evPtJJ500ZPLkyc+sWLHCoykAAGA7KetcHwXlH/01BTAAAIk1ZMiQ0kceeeSKVq1a7Z2vO6iuro7bb789nnjiiWhs9IRNgKaksbEx5s+fH++//34MGDAgstn8/DlLaWlpp6997WuDn3rqqadXrlxZ75MBAACfnQIYAIDUOfTQQ1s8+OCDv2/ZsuUe+bqDOXPmxNVXX+2RzwBN3PLly+OFF16Ijh075u0joUtLSzudcMIJ+7/00ktPv/3227U+FQAA8NkogAEASJVhw4Y1v++++37TsmXLQfl4/vr6+hg/fnz88Y9/jNpaP0MHSILNmzfHiy++GJs3b47ddtstCgoK8m4HxcXFbY866qg9n3vuuaeXL1/ucdAAAPAZKIABAEiNI488snLcuHG/b9GixcB8PP97770XV111VcyZM8eHASCBFi1aFC+//HL069cvWrRokXfnLykp6XDcccftP2fOnGcWLVq0yScCAAC2jQIYAIBUOPLIIyvvvPPO35aXl++Wj+d/+umn48Ybb4wPP/zQhwEgwf7yl7/ECy+8ECUlJdGrV6+8O3+zZs3aHHXUUfspgQEAYNspgAEASLxjjz227W233faH5s2b98m3s1dVVcXNN98cTz31VDQ2NvowAKRAY2NjzJ8/P5YtWxYDBgyIZs2a5dX5mzVr1uaYY4458M0333xm4cKFNT4RAACwdRTAAAAk2qGHHtritttuuzofy9+33347rrnmmli8eLEPAkAKvf/++/HKK69Enz59orKyMq/Ons1mK4888sh9Zs6c+dTSpUs3+zQAAMCnpwAGACCxjjjiiJb33nvvteXl5f3y6dy5XC4mTZoUN998c1RVVfkgAKRYVVVVTJ06NbLZbPTp0ycymUzenL24uLjtV7/61c+/8sorTy1evLjWpwEAAD4dBTAAAIl06KGHtrj33nt/l2/lb3V1ddx0000xefLkyOVyPggAeSCXy8WCBQvi3Xffjd133z2y2fz5mUyzZs1aH3300fvNmDHjSXcCAwDAp6MABgAgcYYOHVo2fvz4qysqKgbk07mXLVsWV111lUc+A+SplStXxiuvvBKf+9znoqKiIm/O3axZszZHH3300GeeeebJFStW1PkkAADAlimAAQBIlCFDhpQ++uij17Rs2XL3fDr31KlT49prr42NGzf6EADksaqqqpg+fXq0bds2unTpkjfnLikpaT9q1KihTz755JMrV66s90kAAICPt6UCuMB6AABoSjp16pSdMGHCv1dWVu6RL2dubGyMcePGxR133BF1dW56AiCitrY2br755hg/fnw0NjbmzbkrKyv3mDBhwr9369bNXQkAALCNFMAAADQZrVq1Kpw+ffolbdq02T9fzlxdXR2/+93vYtKkSd73C8DfyeVy8fjjj8fvf//7qK6uzptzt2nTZv8pU6Zc0qpVq0KfAgAA2HoKYAAAmoSKioqC2bNnX9KuXbuD8uXMS5cujYsuuijmz5/vAwDAx3r11VfjoosuiqVLl+bNmdu1a3fQ7Nmz/72iosLPrgAAYCu5iAYAoEmYOXPmz9q1a3dIvpz35ZdfjiuuuCLWrVsnfAA+0bp16+KKK66Il19+OW/O3K5du4Nnzpz5M+kDAMDWUQADALDLvfjii2N69OgxKh/Omsvl4oEHHogbbrghamtrhQ/Ap1ZbWxs33HBDPPDAA3nz2oAePXqMevHFF8dIHwAAPj0FMAAAu9SkSZO+NnDgwFPy4ax1dXVx8803x8SJE73vF4BtksvlYuLEiXHLLbdEXV1dXpx54MCBJ0+aNOlr0gcAgE9HAQwAwC7z6KOPHnXggQeekw9nXbduXfz617+OWbNmCR6Az2zmzJnx61//Ol9eJZA58MADz3n00UePkjwAAHyywsqB0fWjvtBYFVGzImtDAADsEDfeeOO+Rx999EWZTKYw7Wddvnx5XHXVVbFy5UrBA7DdbNiwIWbPnh0DBw6MioqKtB8307179/179uz56sMPP7xc+gAA5LuyzvVRUP7RX1MAAwCw011xxRV7fPe7372qoKCgWdrPOmfOnPjtb38bGzduFDwA2111dXVMmzYtOnfuHB07dkz1WTOZTOHuu+9+eJs2bV6aNGnSKukDAJDPFMAAADQZZ5xxRvef/exnvy0sLCxP+1knTJgQd999d9TX1wsegB2moaEhXnrppchms9G3b99UnzWTyRTttddeB/3lL395dubMmRukDwBAvlIAAwDQJBx00EEVf/jDH64pLi7ulOZz5nK5eOCBB+Kxxx4TOgA77c+eBQsWRF1dXfTv3z8ymUxqz1pQUFBywAEHDJs+ffqkpUuXbpY+AAD5aEsFcIH1AACwMwwaNKj0vvvuu7qsrKxXms9ZV1cX1113XUyaNEnoAOx0EydOjOuvvz7q6upSfc6ysrJef/rTn67u379/idQBAODvKYABANjhKioqCh577LGLKyoqBqb5nNXV1XHNNdfE7NmzhQ7ALvPKK6/ElVdeGVVVVak+Z4sWLQZOnDhxbEVFhZ9vAQDA33CBDADADjdz5syftW3b9sA0n3HdunVx2WWXxRtvvCFwAHa5xYsXx2WXXRZr165N9TnbtWt34MyZM38mcQAA+P8UwAAA7FBPPvnkqB49eoxK8xlXrVoVV1xxRSxfvlzgADQZK1asiCuuuCJWrlyZ6nP26NFj1KRJk0ZJHAAA/lth5cDo+lFfaKyKqFmRtSEAALbZjTfeuO+XvvSlCzOZTGp/8fDdd9+NK6+8MtatWydwAJqc6urqmDVrVvTv3z8qKytTe85u3boN79mz57yHH37Yb2MBAJAXyjrXR0H5R39NAQwAwA5x3nnn9T311FOvLigoKE7rGV977bW45pprorq6WuAANFmbN2+OGTNmRI8ePaJ9+/apPGMmkykYNGjQIYWFhVOee+45v5UFAEDqKYABANipjjrqqFb/8R//8YdmzZq1SusZX3755bj++uujrq5O4AA0eQ0NDfHSSy9Fp06dolOnTqk8Y0FBQXbYsGGfnz9//qQ33nhjk9QBAEizLRXA3gEMAMB21a1bt+wNN9zwnyUlJR3TesYpU6bEjTfeGPX19QIHIDHq6+vjxhtvjKlTp6b2jCUlJZ1uuOGG/+jWrZu7GgAAyFsKYAAAtqunn376XyorK/dI6/kmTZoUd955ZzQ2NgobgMRpbGyMO+64I5588snUnrGysnLw008//UtpAwCQrxTAAABsN88///w3unTp8k9pPd/EiRNj3LhxkcvlhA1AYuVyubj//vtTXQJ36dLlS88+++yJ0gYAIB95BzAAANvFTTfdNPzII488L5PJZNJ4vsceeyzGjx8vaABS47XXXotmzZpF3759U3m+zp0779urV695Dz/88DJpAwCQNlt6B7ACGACAz+wXv/hF7x/+8IdXFxQUNEvj+R544IF45JFHBA1A6ixYsCDq6upiwIABqTtbJpPJDBo06ODGxsbnpk6dul7aAACkiQIYAIAd5oADDqj43e9+99tmzZq1TeP5xo0bF5MmTRI0AKm1aNGi2Lx5cwwcODB1ZysoKMjut99+w5577rnH33vvvc3SBgAgLbZUAHsHMAAA2yybzWbuvPPOfyktLe2exvNNmDBB+QtAXpg0aVI89NBDqTxbaWlpj3vuuedfstlsRtIAAOQDBTAAANvs+eef/06HDh0OTePZHn744Xj44YeFDEDeeOSRR+LPf/5zKs/WoUOHw5599tlvSxkAgHygAAYAYJvcd999hw8ePPjUNJ7t/vvvjwkTJggZgLzz2GOPxX333ZfKs+25554/+NOf/nSYlAEASDvvAAYAYKudccYZ3ceMGXN5QUFBcdrONnHixHjkkUeEDEDeWrx4cWSz2ejbt2/ajpbp06fPvn/5y18mz5w5c4OkAQBIsi29A1gBDADAVhk2bFjzG2+88Q/NmjVrl7azPfroo6l99CUAbI2FCxdGUVFR9OvXL1XnKigoKD7wwAP3e/LJJx9dsWJFnaQBAEiqLRXAHgENAMBWuffee39ZWlraPW3nevzxx+PBBx8UMAD8jz//+c8xceLE1J2rtLS0x3333fdLCQMAkFYKYAAAPrVJkyaN6tSp0xEpPFeMHz9ewADwD8aPHx+TJ09O3bk6der0hUmTJn1VwgAApJFHQAMA8Kmcd955fU888cR/z2QyRWk618yZM+Puu+8WMAB8jNdeey06duwYnTt3TtW5unbtuk9BQcHzzz333DopAwCQNN4BDADAZ3LEEUe0vOKKK67NZrOVaTrXyy+/HDfffHPkcjkhA8DHyOVyMXv27OjSpUt06tQpNefKZDJF++yzz/CpU6c+9u67726WNAAASeIdwAAAbLNsNpu55ZZb/q2kpKRjms61YMGCuPnmm6OxsVHIAPAJGhsb4+abb44333wzVecqLS3tcvfdd5+fzWYzUgYAIC0UwAAAbNGkSZO+3rZt2wPTdKZly5bFDTfcEPX19QIGgE+prq4urr322li+fHmqztWuXbsDH3/88VESBgAgLTwCGgCAj3XZZZcN+upXvzo2k8mk5hcH33///bjyyiujqqpKwACwlerq6uLll1+OIUOGRHl5eWrO1aVLl31LS0unPvPMM2ukDABAEngENAAAW61///4lJ5988q8ymUxRWs60YcOG+P3vfx8bN24UMABso40bN8bvfve7VP15WlBQkP3hD394ft++fYslDABA4q9vrQAAgI/y4IMPnl1WVtYrLeeprq6O3/zmN7Fq1SrhAsBntGrVqrjyyiujuro6NWcqKyvr8/DDD58lXQAAkk4BDADA/zF+/Pgju3XrdnRazlNfX5/KdxYCwK60fPnyuO6666K+vj41Z+rRo8dXx40bd4R0AQBIMgUwAAB/53vf+16nI4444py0nCeXy8Vtt90Wb7zxhnABYDt7/fXX47bbbotcLpeaMx155JHnfvvb3+4oXQAAkkoBDADA/6qoqCi4+OKLLywsLCxPy5nGjx8fs2bNEi4A7CCzZs2Khx56KDXnKSwsrPj1r399QUVFhZ+bAQCQSC5kAQD4XxMnThxdWVk5OC3nef7552PixImCBYAd7LHHHosXXnghNeeprKzc89FHHz1RsgAAJFFh5cDo+lFfaKyKqFmRtSEAgDxxwQUX7DZq1KgLM5lMYRrO8+qrr8Ytt9ySqkdSAkBT/7O3d+/e0a5du1Scp2PHjkNzudxzU6ZMWSddAACamrLO9VHwMc/wcwcwAADRt2/f4h//+McXZzKZVPwG4HvvvRc33HBDNDY2ChcAdpKGhoa47rrrYtmyZak4T0FBQfbss88e27dv32LpAgCQqGtZKwAAYPz48T8qKyvrkYazbNiwIX7/+99HbW2tYAFgJ9u0aVP8/ve/j40bN6biPGVlZb3GjRs3RrIAACSJAhgAIM/ddNNNw/v06XN8Gs5SX18f1157baxdu1awALCLrFmzJq699tqor69PxXn69ev3jd///vdDJQsAQFIogAEA8thBBx1Uceyxx/5rRGTScJ477rgjFi9eLFgA2MUWLVoUd955Z1qOU/CNb3zj34YNG9ZcsgAAJOIC1goAAPLXzTfffFZxcXG7NJxl4sSJMX36dKECQBMxbdq0mDRpUirOUlJS0unOO+88Q6oAACSBAhgAIE/913/914FdunT5UhrO8tprr8Wf//xnoQJAEzN+/PhYsGBBKs7SrVu3o2+66abhUgUAoKlTAAMA5KEvfelLlV/5yld+lYazrFixIq6//vpobGwULAA0MY2NjXHdddfFihUr0nCczHHHHfergw46qEKyAAA0ZQpgAIA8dPXVV5+ezWYrk36OmpqauPbaa2PTpk1CBYAmatOmTXHttddGTU1N4s+SzWbb3njjjT+RKgAATZkCGAAgz9x6663Du3Tp8uWknyOXy8Utt9wSK1euFCoANHErV66MW2+9NXK5XOLP4lHQAAA0dQpgAIA8MnTo0LKvfvWrv0jDWSZMmBBz584VKgAkxJw5c+Kxxx5LxVlGjRr1i6FDh5ZJFQCApkgBDACQR+64444fFRcXd0z6OV5++eV45JFHBAoACfPQQw+l4he4SkpKOt5xxx0/lCgAAE2RAhgAIE9cfvnlu/fs2XNU0s/xwQcfxB133JGKR0gCQL7J5XJx2223xZo1axJ/lp49ex57+eWX7y5VAACaGgUwAEAe6NatW/a73/3uv2YymURf/9XX18cNN9wQ1dXVQgWAhKqqqoobb7wx6uvrE32OTCZT8N3vfvdX3bp1y0oVAICmRAEMAJAHxo8ff0pZWVmvpJ/jnnvuiaVLlwoUABJuyZIlcd999yX+HGVlZT3Hjx9/ikQBAGhKFMAAACn385//vOeAAQNGJ/0c06dPjylTpggUAFJi8uTJMWPGjMSfY8CAAaN//vOf95QoAABNhQIYACDFstls5qyzzjo3k8kk+tGEK1asiLvvvlugAJAyd911V6xYsSLRZ8hkMtmzzjrr3Gw2m5EoAABNgQIYACDFxo0b98XKysq9knyG2trauOGGG6K2tlagAJAyf/1zfvPmzYk+R2Vl5V7jxo0bKVEAAJoCBTAAQEoNHz68/OCDDz4t6ee4//77Y/ny5QIFgJRavnx5jBs3LvHnGDFixI+HDRvWXKIAAOxqCmAAgJS69dZbT8tms22TfIYZM2bEc889J0wASLnJkyfHzJkzE32G4uLitrfffvtp0gQAYFdTAAMApNBVV121R48ePb6S5DOsXLky7rrrLmECQJ64++6744MPPkj0GXr27PnVK664Yg9pAgCwKymAAQBSprS0tOAb3/jGT5N8rdfY2Bi333679/4CQB6pqamJ2267LRobG5N8jIJvfvObZ5aWlvqZGwAAu+6i1AoAANJlwoQJX6uoqBiQ5DOMHz8+Fi1aJEwAyDNvvvlmPPjgg4k+Q4sWLQY9+OCDx0gTAIBdRQEMAJAiRx55ZOWwYcN+kOQzzJ07N5544glhAkCemjhxYixYsCDRZxg+fPiPjjjiiJbSBABgV1AAAwCkyBVXXHFyUVFRRVLnr6qqijvvvDNyuZwwASBP5XK5uP3226O6ujqxZygqKmrxm9/85mRpAgCwKyiAAQBS4vzzz+/Xu3fv45J8httvvz0+/PBDYQJAnlu3bl3cfvvtiT5D7969jz///PP7SRMAgJ1NAQwAkALZbDZz6qmn/jyTyST2+m769OkxZ84cYQIAERExe/bsmDFjRmLnz2QyBaeeeurPs9lsRpoAAOxMCmAAgBT44x//eERlZeXgpM6/du3auPfeewUJAPyde+65J9atW5fY+SsrKwf/6U9/+oIkAQDYmRTAAAAJ17dv3+JDDjnkR0k+w9133x01NTXCBAD+Tk1NTdx9992JPsPBBx/8o759+xZLEwCAnUUBDACQcHfdddc3S0pKOiV1/smTJ8e8efMECQB8pLlz58azzz6b2PlLSko63nPPPd+SJAAAO4sCGAAgwb70pS9VDhw48KSkzr9mzZoYP368IAGALXrggQdizZo1iZ2/f//+Jx111FGtJAkAwM6gAAYASLArrrji1MLCwvIkzp7L5eK2226LTZs2CRIA2KJNmzbFbbfdFrlcLpHzFxYWll1++eU/kCQAADuDAhgAIKF+8Ytf9O7evftXkjr/s88+G2+88YYgAYBP5Y033ojnn38+sfN369bt6F/96ld9JAkAwI6mAAYASKgf/vCHP8pkMom8nvvggw/igQceECIAsFXGjRsX69atS+TsmUym4NRTT/2xFAEA2NEUwAAACXTdddcNa9eu3YFJnD2Xy8Udd9wRtbW1ggQAtsqmTZvizjvvTOz8bdq02f+mm27aT5IAAOxICmAAgIQpLS0t+NrXvnZ6Uud/4YUXYuHChYIEALbJq6++GjNmzEjs/Mccc8zpFRUVfiYHAMAO42ITACBhbr/99oMrKip2S+LsGzZsiHHjxgkRAPhM7r///qiqqkrk7OXl5X3/67/+6wgpAgCwoyiAAQASpKKiouCwww47Nanz33vvvYn9YS0A0HRs2LAh7r///sTOf9BBB/1zq1atCiUJAMCOoAAGAEiQ+++//+iysrKeSZx9zpw58dJLLwkRANguXnjhhViwYEEiZy8tLe32xz/+8StSBABgR1AAAwAkRN++fYv33Xfff07i7LW1tXHvvfcKEQDYru6+++6oq6tL5Oz77bffKf379y+RIgAA25sCGAAgIW6++eZRxcXFbZM4+yOPPBJr164VIgCwXa1atSoee+yxRM6ezWbb3njjjV+TIgAA25sCGAAgAYYOHVq21157fSeJs7/33nvxxBNPCBEA2CEmTpwYK1asSOTsQ4YM+c7QoUPLpAgAwPakAAYASIBrr732xKKiosqkzZ3L5eKee+6JxsZGIQIAO0R9fX3cddddkcvlEjd7UVFR5bXXXnuCFAEA2J4UwAAATdwBBxxQMWDAgG8kcfYZM2bEW2+9JUQAYId6880348UXX0zk7AMGDPjG8OHDy6UIAMD2ogAGAGjirrrqqhOKiooqkjb3pk2b4oEHHhAgALBT3H///VFbW5u4uYuKilpcffXV7gIGAGC7UQADADRhBx10UEX//v0Teffvww8/HB9++KEQAYCdYv369TFhwoREzj5w4MBvHHDAARVSBABge1AAAwA0Yf/5n/95bGFhYfOkzb1q1aqYPHmyAAGAnerpp5+O1atXJ27uwsLC8ssuu2yUBAEA2B4UwAAATdQBBxxQMWjQoNFJnP3uu++O+vp6IQIAO1V9fX3cddddiZx99913/+bQoUPLpAgAwGelAAYAaKIuv/zyYwsLC8uTNvfcuXNjwYIFAgQAdokFCxbE3LlzEzd3UVFRi9/97ndflyAAAJ+VAhgAoAkaOnRo2aBBgxL37t+6urr405/+JEAAYJf605/+FHV1dYmbe/fdd//mkCFDSiUIAMBnoQAGAGiCfvOb33ylqKioZdLmfu655xL53j0AIF1Wr14dzz33XOLmLioqann11VcfLUEAAD4LBTAAQBPTq1evZoMHD/5m0uaurq6ORx55RIAAQJPwyCOPRHV1deLmHjJkyLe6deuWlSAAANtKAQwA0MTcdNNNxxQXF7dN2twTJkyIqqoqAQIATUJVVVUifzmtuLi43a233uouYAAAtpkCGACgCWnVqlXhXnvtdVLS5l61alU8++yzAgQAmpTJkyfHqlWrEjf30KFDR7dq1apQggAAbAsFMABAE3LLLbccXlJS0jlpcz/44INRX18vQACgSamvr48HH3wwcXOXlJR0vummmw6VIAAA20IBDADQRGSz2cwBBxzw7aTNvWjRonjppZcECAA0SS+99FIsXrw4cXOPGDHiO9lsNiNBAAC2lgIYAKCJuOaaa/YuLy/vm7S5H3roocjlcgIEAJqkXC6XyLuAy8vL+1111VV7SRAAgK2lAAYAaCK+8pWvfDdpM8+bNy8WLlwoPACgSVu4cGG8+uqrrg8BAMgLCmAAgCbgsssuG1RZWblPkmbO5XIxfvx44QEAifDAAw8k7qklrVu33veSSy7pLz0AALaGAhgAoAkYNWrUCUmbefbs2bFs2TLhAQCJsGzZsnjllVcSN/cJJ5xwovQAANgaCmAAgF3sn//5nzt37NjxiCTN3NjYGA888IDwAIBEGT9+fDQ0NCRq5k6dOn1h9OjRHaQHAMCnpQAGANjFfvSjH30tk8kk6rps2rRpsWrVKuEBAImyatWqeOGFFxI1cyaTKfzpT386SnoAAHxaCmAAgF1o0KBBpX369Plqkmaur6+PCRMmCA8ASKQJEyZEXV1dombu27fvV/r27VssPQAAPg0FMADALnTZZZcdXlRUVJGkmadOnRpr164VHgCQSOvXr48pU6YkauaioqLK3/zmN0dIDwCAT0MBDACwi2Sz2cy+++57UpJmrqurc/cvAJB4jz76aOLuAt5///1PymazGekBAPBJFMAAALvI1VdfPbSsrKx3kmaeMmVKbNiwQXgAQKJt2LAhnn/++UTNXFZW1ueqq67aS3oAAHwSBTAAwC7y5S9/+bgkzVtfXx8TJ04UHACQCo8//nji7gL+0pe+dLzkAAD4JApgAIBdYPTo0R3atm07IkkzT5s2LdatWyc8ACAVPvzww5g+fXqiZm7fvv2I0aNHd5AeAABbogAGANgFfvrTn47KZDKFSZm3vr4+HnnkEcEBAKnyyCOPRH19fWLmzWQyhT/96U+/JjkAALZEAQwAsJN16tQp26dPn6OTNLO7fwGANFq3bl1MmzYtUTP36dPnmE6dOmWlBwDAx1EAAwDsZFddddUB2Wy2dVLmbWxsjEmTJgmOVOvYsWN06OCJmgD5aNKkSdHY2JiYebPZbOurrrrqAMkBAPBxFMAAADvZiBEjvp6keV988cVYtWqV4Ei1Ll26xIUXXhinnXZadO3a1UIA8siqVavipZdecj0JAEBqKIABAHaiM844o3tlZeXeSZk3l8vFxIkTBUdeyGQyMXjw4PjVr34VY8aMcUcwQB55/PHHI5fLJWbeysrKvc8444zukgMA4KMogAEAdqJTTjnlqxGRScq8CxYsiPfee09w5JVMJhN77713XHjhhTFmzJho3769pQCk3HvvvRcLFy5M1B9X/3NdCQAA/4cCGABgJ+nVq1ezXr16fTlJM3v3L/nsr0XwBRdcECeffHK0bdvWUgBSLGnXPb169fpyr169mkkOAIB/pAAGANhJrrjiioOLiopaJmXeBN4JAztEYWFhDB8+PC688MIYPXp0VFZWWgpACi1YsCCWLVuWmHmLiopaXnnllYdIDgCAf6QABgDYSYYPH/6VJM2btHfhwY5WVFQUI0aMiEsuuSRGjx4dLVu2tBSAFMnlcvH4448naub99tvvK5IDAOAfKYABAHaC0aNHd6isrByalHnXrl0bL7/8suDgI/y1CL744ovjhBNOiBYtWlgKQEq89NJLsW7dusTMW1lZudfo0aM7SA4AgL+lAAYA2AlOP/30o5J07fXMM89EQ0OD4GALiouL47DDDouxY8fGqFGjoqyszFIAEq6hoSGeeeaZJI1c8D/XmQAA8P8vEq0AAGDHymazmX79+n05KfPW1tbGlClTBAefUnFxcYwcOTIuvfTSGDVqVJSWlloKQII9//zzUVtbm5h5+/Xr9+VsNpuRHAAAf6UABgDYwX7zm9/sWVJS0jkp886YMSOqq6sFB1uppKQkRo4cGZdcckkcffTRUVJSYikACVRdXR0zZ85M0p8/na+44orBkgMA4K8UwAAAO9gXvvCFLyVl1lwuF08//bTQ4DNo3rx5HHXUUXHJJZfEyJEjI5vNWgpAwjz11FORy+USM++RRx75ZakBAPBXCmAAgB1oyJAhpZ07dz4iKfO+/vrrsWLFCsHBdlBeXh6jRo2KSy+9VBEMkDArVqyI119/PTHzdunS5fD+/ft79AQAABGhAAYA2KHGjh17aGFhYWJeCOruX9j+KioqYtSoUXHxxRfH4YcfHkVFRZYC4LpouyosLGz+H//xHwdLDQCACAUwAMAOteeeex6ZlFnXrl0b8+bNExrsIK1atYrjjz8+LrroohgxYkQUFPh2DKApmzdvXqxZsyYx8+61115HSg0AgAgFMADADnPMMce0bt269b5Jmfe5556LxsZGwcEO1qZNmxg9enRcfPHFimCAJqyxsTGee+65JP35MvyYY45pLTkAAPykAQBgBznzzDMPz2Qyibje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FpafffbZvaQFAJA+CmAAgE9p//3375+EOV9//XVhAXmjvLw8Ro0aFf/+7/8eI0eOjGw2aymA67FP6fOf//xAaQEApI8CGADgU+rRo8fuTX3G2traePvtt4UF5J2KiooYNWpUXHzxxXH44Yc3+XdvAum2ePHiRLySo1evXoOkBQCQPgpgAIBPqXXr1k3+DoklS5ZEQ0ODsIC81apVqzj++OPj4osvjhEjRkRBgW97gZ2voaEhlixZ0uTnbNOmjQIYACCFfCcMAPApDBkypLR58+a9m/qcb775prAAIqJ169YxevToGDt2rCIYcF32MZo3b95n0KBBpdICAEgX3wEDAHwKp556av9MJtPkr53eeustYQH8jTZt2sTo0aPjvPPOi+HDhyuCAddlfyOTyRT84Ac/+Jy0AADSxXe+AACfwuDBg5v84/Hq6+tj0aJFwgL4CJ06dYqTTz45/u3f/i323nvvyGQylgLsUIsXL07Eqzn23HPPgdICAEgXBTAAwKfQpUuXAU19xnfeeSfq6uqEBbAFnTt3jjFjxiiCgR2utrY23n333SRc53oPMABAyiiAAQA+hZYtW/Zv6jN6/DPAp9elS5cYM2ZMnHvuuTF48GALAfL2+iwJ17kAAGwdBTAAwCcYPnx4eUlJSeemPqfHPwNsvV69esVpp50W55xzTvTvrwMB8u/6rLS0tPPw4cPLpQUAkB4KYACAT/Ctb31rt4ho8s8IXbx4sbAAtlGfPn3irLPOinPOOSd22203CwG2i4T8gl7m29/+dj9pAQCkhwIYAOAT7L777k2+CVi7dm1s2LBBWACfUZ8+feLss8+OM888M3r27GkhwGfy4Ycfxrp165r8nAMHDlQAAwCkSJEVAABsWadOnZr8D8TefvttQQFsRwMGDIgBAwbEggULYvz48bF06VJLAbb5Oq1Vq1audwEA2GkUwAAAn6CyslIBDJCnBgwYEP3794958+bFQw89FO+++66lAFtlyZIlsddeezX1613PvgcASBEFMADAFnTq1CnbvHnzXk19ziVLlggLYAfJZDIxePDg2GOPPeLll1+OBx98MFauXGkxQGqu05o3b967Xbt2RatXr66XGABA8nkHMADAFowZM6ZnJpPJNuUZGxsbPZoUYCfIZDKx9957x4UXXhhjxoyJ9u3bWwrwiZYuXRqNjY1NesaCgoLsqaee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k8nE7NmzY+LEibFmzRoNAXif/VNSzJo161kTAwBongTAAAC70O233/7KOeecszU/P78022sdMGBAtG/f3tWu0My9+uqrMWnSpFi1apVmALyPjh07xgEHHJCIWhsbG6u/8Y1v/NXUAACaJwEwAMAutHLlyob169fP6tat2+hsrzWVSsXhhx8ekyZNMjhohubMmROTJ0+OJUuWaAbAh3D44YdHKpVKRK3r16+fVVFR0WhqAADNU54WAADsWq+++mpirts77LDDDAyamTfffDP+/d//PX7yk58IfwE+pFQqFSNGjEhMva+88sozpgYA0Hw5AQwAsIvddNNNz5166qnV+fn5rbO91m7dukX//v1j4cKFBgc5btmyZfHYY4/F/PnzNQPgIzrggAOic+fOiai1sbFxy4033jjL1AAAmi8BMADALrZy5cqG8vLyGT179vx0Euo9+uijBcCQw5YvXx7jxo0T/AJ8wv1SUpSXlz9TXl7eYGoAAM2XABgAYDeYMWPGUxdccEEiAuAhQ4ZE69ato7q62uAgh6xcuTImTJgQc+fOjUwmoyEAH1ObNm3i0EMPTUy9zz777FOmBgDQvPkGMADAbvDVr371lYaGhk1JqLWgoCCOOOIIQ4McsW7duvj5z38ed955Z8yZM0f4C/AJjRw5MvLz8xNRa0NDw8abbrrpVVMDAGjenAAGANgNKisrm1atWjW9T58+5ySh3qOPPjqefPJJQREk2Pr16+Oxxx6L2bNn+3cZYBdJpVIxatSoxNS7cuXKadXV1WmTAwBo3pwABgDYTaZNm5aY6/c6duwYAwYMMDRIoA0bNsSvf/3r+Nd//dd49dVXhb8Au9CAAQOiY8eOian36aefftLUAAAQAAMA7CZf+9rX5tTX11ckpd6jjjrK0CBBqqqq4v77749vf/vb8eKLL0ZTU5OmAOxiRx55ZGJqra+vX/eNb3zjdVMDAMAV0AAAu0ltbW16xYoVT++///6fT0K9hx56aLRt2zaqqqoMD7LYli1bYsqUKfHcc8/F9u3bNQRgN2nbtm0MGTIkMfUuX778qdraWtc/AwDgBDAAwO70xz/+cUJSas3Pz4/jjjvO0CBL1dTUxKOPPhq33XZb/OUvfxH+Auxmxx57bOTn5yel3Myvf/3rCaYGAECEABgAYLe66667llZXV89PSr1HH310tGjRwuAgi7wd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qATAAABZ4umnn968fPnyxF3xN3r06GjXrp0BAgBZqUOHDnH88ccnru5ly5ZNmD59+hYTBADgoxIAAwBkkbvvvvtPmUymKUk1FxYWxumnn254AEBWOvPMMxP3yYpMJtN41113/dH0AAD4OATAAABZ5Be/+MWatWvXTkta3UcccUT06tXLAAGArNK7d+847LDDEld3eXn5X+6///51JggAwMchAAYAyDIPP/zwn5JWcyqVijPPPNPwAICsMmbMmEilUomr+8EHH/yT6QEA8HEJgAEAsszXv/71NzZs2DAraXUPHDgwDj74YAMEALLCoEGDYsCAAYmru6KiYuatt966wAQBAPi4BMAAAFlo3Lhxv01i3WPGjIm8PFtMAGDvysvLizFjxiSy9j//+c+/NUEAAD7RflgLAACyz/XXXz+nqqrqr0mru1evXnHUUUcZIACwVx1zzDHRvXv3xNW9adOmV2666aa5JggAwCchAAYAyFJ/+tOf7k1i3WPGjInS0lIDBAD2ijZt2sRZZ52VyNofeOCBe00QAIBPSgAMAJClbrrpprlJPAVcXFwcZ555pgECAHvFWWedFS1btkxc3Zs2bXrl5ptvnmeCAAB8UgJgAIAsNm7cuF8lse5Ro0ZF7969DRAA2KP69OkTI0eOTGTtjz322K9MEACAXUEADACQxcaOHTu7qqrqb0mrO5VKxfnnnx+pVMoQAYA9tv/4/Oc/n8j9R2Vl5d+uueaav5kiAAC7ggAYACDLTZ069bdJrLtv374xZMgQAwQA9ojDDjsssTeQTJ48+TcmCADAriIABgDIcpdeeumLVVVVryax9s9//vNRXFxsiADAblVaWhrnn39+Imuvqqr66+WXX/6SKQIAsKsIgAEAEuChhx76WRLrLisri9NPP90AAYDd6qyzzoqSkpIklp753e9+91MTBABgVxIAAwAkwA033DB3w4YNs5JY+3HHHRd9+vQxRABgt+jbt28cddRRiay9oqJi1te//vU3TBEAgF1JAAwAkBA///nPfxoR6aTVnUql4vOf/3zk5dl6AgC7Vn5+flx00UWRSqWSWH76F7/4xX+bIgAAu5q3cAAACXHHHXe8tW7duulJrL13795xzDHHGCIAsEudcMIJ0b1790TWXl5e/pc77rjjLVMEAGBXEwADACTI3XfffW8mk2lKYu1nnXVWtG3b1hAB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onv37vEv//IvccABBzSrdWcymaYnnnji9s997nPPeAoAAODDEQADAJBYDz/88NJjjjlmY+/evY+KiGZzFKq0tDSGDx8eq1evjvXr13sQAHLcwIED45prrol27do1t6VnZsyY8YOzzjprqqcAAAA+PAEwAACJdv/99795zDHHVO6zzz5HRDMKgVu0aBGHHXZYtGzZMhYuXBjpdNrDAJBjCgoK4pxzzonzzz8/WrRo0dyWn37uuefuOuWUUyZ4EgAA4KMRAAMAkHi///3v5w8bNmxF3759j2lO10GnUqno27dvDB06NBYvXhxbtmzxMADkiJ49e8YNN9wQgwcPblbf+434x7XPU6ZM+fbpp58+2ZMAAAAfnQAYAICc8OCDDy4ZNmzYin79+jWrEDgionXr1nHEEUdEfX19LF261MMAkGCpVCpOOOGEuOKKK6JNmzbNbv07wt9vnXPOOX/xNAAAwMcjAAYAIGc89NBDS4YNG7a8X79+xza3EDg/Pz8OPvjg6NWrV8yfPz8aGho8EAAJU1JSEpdffnmccMIJkZ+f3+zWn8lkGp944olvffazn53maQAAgI9PAAwAQE556KGHlo4cOXJdnz59RqWa252ZEdG1a9cYNmxYLFu2LCorKz0QAAnRt2/fuO6662K//fZrluvPZDLpp59++rvnnHPO054GAAD4ZATAAADknD/96U+LDj300KX7779/s7sOOiKiuLg4jjzyyCgpKYk333wz0um0hwIgSxUUFMRnP/vZuPDCC6OkpKRZ9iCdTjc88sgjt5x//vnTPREAAPDJCYABAMhJDz/88NId3wQelUqlmt09mqlUKvr06RMHH3xwLFy4MLZt2+ahAMgynTt3jrFjx8bQoUOjGV5aERH/CH+feOKJ2y+88MLnPBEAALBrCIABAMhZDz300JIePXq8NmjQoGPz8vJaNMcetG3bNkaNGhVNTU2xZMkSDwVAFkilUjF69Oi48soro0OHDs22D01NTdt++9vf/stll132oqcCAAB2HQEwAAA5bdKkSeXdu3efM3jw4GYbAufn58eAAQOiV69esWDBgti+fbsHA2Avad26dVx66aVx/PHHR35+frPtQ2NjY/WvfvWrf7nuuute81QAAMCuJQAGACDnTZ48eW1jY+OMI4444uiCgoKS5tqHrl27xqhRo2Lbtm2xcuVKDwbAHpRKpWLUqFExduzY6NWrV7PuRX19/fo77rjjK9/61rcWejIAAGDXEwADANAsPP/881UbNmx45rjjjjuqsLCwrLn2obCwMAYNGhT77bdfLF68OGpraz0cALtZ+/bt44orrogTTzwxCgub9/uU2tralTfffPPVP/nJT1Z7MgAAYPcQAAMA0Gz87W9/27p27doZJ5xwwsjCwsK2zbkXnTp1ipEjR0Z1dbXTwAC70ciRI+Pqq6+OHj16NPte1NTULL/hhhuu/e1vf7vOkwEAALuPABgAgGbltdde2zpv3rynTznllKFFRUWdmnMvCgsL49BDD4399tsvFi1a5DQwwC709qnfk08+udmf+o2I2Lx587yLL774unHjxm30dAAAwO71fgFwat9zYsTOftC4LmLjq610DwCAxOrVq1fhs88++69du3Y9QTciGhoaYurUqTF58uRobGzUEICPqaCgIE499dQYPXq04HeH8vLyp4499tjvrly5skE3AABg9+swrDYKuuz8ZwJgAAByWuvWrfNeeumlm/fdd9+zdeMfVq9eHffff38sWbJEMwA+ov322y8uuugi1z2/w8KFC38/fPjwnzY0NGR0AwAA9gwBMAAAzd7zzz9/8aGHHnp1RKR0IyKTycTMmTPjz3/+c9TV1WkIwAcoKSmJ8847L0aMGBGplL9Kdki//PLL9xx77LEPagUAAOxZ7xcA+wYwAADNwn333Tfn+OOP39yrV6/DQwgcqVQqevfuHcOHD49169ZFRUWFhwTgPRxyyCExduzY6N+/v/B3h0wm0/jMM8/828knnzxONwAAYM97v28AC4ABAGg2fve7370xePDgJf369Ts6lUrl60hEcXFxjBgxInr06BFLly6N2tpaTQHYoUOHDvGFL3whzjzzzCguLtaQHZqammoeeOCBWz73uc9N1w0AANg7BMAAALDDww8/vKygoOC54cOHH1FQUFCqI//QrVu3OO6446K0tDQWL14cTU1NmgI0Wy1btoxzzjknLr300ujevbuGvENtbe2K22677arbbrvtDd0AAIC9RwAMAADv8Oyzz25avHjx0yeddNKQoqKiTjryD3l5edGnT58YOXJkbN26NVatWqUpQLNz+OGHx1e+8pUYMGBA5OXlacg7VFVV/e3CCy+8/oEHHvDdAAAA2MsEwAAA8C7z58+vefbZZ58+44wz+hcX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OigOOOCAKCoq0pQs0djYuGXmzJk/PvPMMyc2NDS4XgAAAPjQBMAAAJADjjzyyNY/+9nPrujbt++5EZGnI9mluro6Fi5cGPPnz4958+ZFZWWlprBXtGvXLg455JAYMGBA9O/fP1q39nsjWSj91ltv/fmqq676xaxZs6q1AwAA+KgEwAAAkEN++ctfjhgzZsyNrVq16q0b2SmdTsfKlStj0aJFsXDhwli8eHFs27ZNY9gtSkpKol+/ftG/f//Yf//9o1evXpGX53dEslVNTc3yRx999EdXXnnlK7oBAAB8XAJgAADIMd26dSt8+OGHPzd48ODL8vPzbdyzXCaTiTVr1sTChQtj0aJFsWjRotiyZYvG8LGUlZVF//79/xn6du/ePVKplMZkuaampprXXnvtV2PGjHmgoqKiUUcAAIBPQgAMAAA56rjjjiv7r//6r8tdC508mzdvjuXLl8eKFSti+fLlsXjx4qipqdEY/pfi4uLo169f9O7dO/bZZ5/Yd999o6ysTGMSJJPJpJcsWfLn66677pfTp0/3mx8AAMAuIQAGAIAc99Of/nTIueeee3NpaWlf3UimxsbGWLlyZSxdujSWLVsWy5cvj3Xr1kUmk9GcZiKVSkWXLl1in332iT59+kSfPn2iV69eUVBQoDkJtXXr1sUPPvjgj6699tq/6wYAALArCYABAKAZaNeuXf64cePOGTp06BUFBQWtdST56uvrY+XKlf88KbxixYpYu3ZtpNNpzUm4vLy86Nq1a+yzzz7//KdXr17RsmVLzckBjY2NW/7617/+4pxzznm0srKySUcAAIBdTQAMAADNyIknntjmnnvuuXzfffcdk0qlHB3MMdu3b481a9bEmjVrYu3atbF27dooLy+PDRs2CIazUF5eXnTs2DG6desWXbt2jW7dukW3bt2iR48eUVhYqEE5JpPJNC5ZsuRR1z0DAAC7mwAYAACaoa9+9av7Xnfdddd16NDhCN3IfY2Njf8MhNetWxfr1q2LioqKWLduXWzbtk2DdrPS0tLo3LnzP//p0qVLdO3aNbp27eoK52Ziw4YNM//rv/7rxz/60Y+W6wYAALC7CYABAKAZ++UvfznirLPOuq64uNj3gZupmpqaWL9+/T//qaioiMrKyqisrIxNmzZFY2OjJn2AgoKCaN++fbRr1y7at28fHTt2jC5dukSnTp2ic+fOUVxcrEnN1NatW98aP378PVdcccXLugEAAOwpAmAAAGjm2rVrl//ggw+eOWLEiCsLCwvb6gjvtHnz5n+GwZs2bYrKysqorq6OLVu2xJYtW6K6ujqqq6sjk8nk3NpTqVS0bt06WrduHWVlZdGmTZsoLS39X2Fvu3btok2bNh4U/peGhobKl1566efnnHPO+OrqavevAwAAe5QAGAAAiIiIoUOHFt97770XHHjggRfk5+c7ssiHlk6n/xkEV1dXR01Nzfv+k8lkora2NtLpdNTX10dTU1PU1dXt0u8U5+XlRcuWLSM/Pz+KiooiLy8vWrVqFalUKoqLi3f6T0lJSbRq1eqfgW9paWnk5eUZMB9aU1NTzYIFC/745S9/+Y+zZ8+u0REAAGBvEAADAAD/y2mnndb2rrvuurRPnz5n5+XlFeoIe9LbgfDbtm/f/r7XUBcUFESLFi3++b/fDnxhT8pkMg1LliwZd8stt/xq0qRJVToCAADsTQJgAABgp0477bS2d95554X777//5wTBAP9XJpNpWLhw4QO33nrrHwS/AABAtni/ADi/7UHRc2c/SG+LqC33/gcAAHLZokWL6u69995X0un0swcddFCnkpKS3roC8A8VFRUz/7//7/+77aKLLpq6aNGiOh0BAACyRXH3xsgr3fnPBMAAAEDMnDmz8u67736qqalpWr9+/Ypbt27dN5VKpXQGaG4ymUx6zZo1U+65555/Peeccx6cOXNmpa4AAADZRgAMAAB8KDNnzqz88Y9//Gw6nZ4uCAaak7eD37vvvvtfzz///McEvwAAQDYTAAMAAB+JIBhoLgS/AABAEgmAAQCAj+XtILisrOyFvn37diwuLu4VEYJgIBdkKioqnrv33nu/PWbMmEcEvwAAQJK8XwCc2vecGLGzHzSui9j4aivdAwAA/unqq6/u8ZWvfOX8Pn36nJWXl9dCR4CkSafT9UuXLh3/X//1Xw/84he/WKMjAABAEnUYVhsFXXb+MwEwAADwkZ1xxhntb7/99rMPPPDA8/Pz81vrCJDtmpqaqhcsWPDgd77znUcmTpzotC8AAJBoAmAAAGC3GD58eMkPf/jDzwwePPjioqKijjoCZJv6+voNr7322u9vvPHGx2fPnl2jIwAAQC4QAAMAALvV0KFDi++5556zDjnkkPOKioq66giwt9XV1a19/fXXH7z++uvHC34BAIBcIwAGAAD2iFatWuXdc889w0455ZTzO3bseJSOAHtYZsOGDbOmTJny4PXXX/9qbW1tWksAAIBcJAAGAAD2uH/913/tf/7555/dq1ev0/Ly8lroCLC7pNPp+pUrV05+4IEHHvnOd76zSEcAAIBcJwAGAAD2mjPOOKP97bfffvYBBxzw2YKCgjY6AuwqjY2NVW+++eafv/e97z06YcKETToCAAA0FwJgAABgrxs+fHjJ97///dGDBg0aU1paur+OAB9XdXX1wtdee+3Rr371q1Nfe+21Wh0BAACaGwEwAACQVb761a/ue8EFF3y6b9++ZxUUFLTWEeCDNDY2bnnrrbfG/+EPf5j4ox/9aLmOAAAAzZkAGAAAyEpDhw4t/sEPfnDy4MGDz27dunV/HQHerbq6+s2XX375weuuu+7ppUuXbtcRAAAAATAAAJDlCgsLU3ffffeQ0aNHn9G1a9fj8vLyinQFmq90Ol1XXl4+bcqUKROuvfbav+sIAADA/yYABgAAEqNPnz4t/v3f/33UyJEjz2rfvv2nIiKlK9AsZDZt2vTXF1544bGvfe1rzzntCwAA8N4EwAAAQCJddNFFXa6++uqTDzzwwLNbtmzZTUcg99TV1a1ZsGDBuJ/+9KdP3n///et0BAAA4IMJgAEAgETr1q1b4d13333k4YcffmqHDh2OyMvLK9QVSK50Ot2wcePGWbNmzZp8/fXXz6qoqGjUFQAAgA9PAAwAAOSMo48+uvWtt956/CGHHHJKu3btBkdEnq5AIqQrKytfmzdv3uQ777xz+owZM6q1BAAA4OMRAAMAADnpuOOOK/vGN75x/CGHHHJa27ZtB4bvBUO2yVRVVc2dN2/epO9///vTpk+fvkVLAAAAPjkBMAAAkPNuu+22vmedddZJffr0Oa5Vq1a9dQT2ntra2uXLly+f/uijjz51xx13vKUjAAAAu5YAGAAAaFa+9KUvdbv44ouP7t+//wlOBsMekamqqpq7cOHCv/z+97+fcd9995VrCQAAwO4jAAYAAJqtSy65pOtll112jDAYdrl0VVXVvIULF/7lV7/61bO/+93v1moJAADAniEABgAAiIirr766x/nnnz9q//33P7JNmzZDUqlUga7Ah5fJZBoqKyv/vnjx4uf+9Kc/zbr33ntX6woAAMCeJwAGAAB4l379+hV97WtfGzRy5MhRPXv2PLaoqKizrsD/VV9fv37VqlXPvPDCC8/9+7//+5zFixfX6woAAMDeJQAGAAB4H61bt8678847Bx599NFHde/efURpaen+4apomq/M1q1bF69Zs+bF5557btY3v/nNOdXV1WltAQAAyB4CYAAAgI9g8ODBrcaOHXvI8OHDD+vevfvw1q1bHxACYXJXprq6+s01a9a88sorr7z8k5/8ZN5rr71Wqy0AAADZSwAMAADwCVx//fX7nHHGGYf169dvePv27Yfm5+e31hWSrLGxsXrjxo2vvvXWWy+PHz/+lR//+McrdQUAACA5BMAAAAC70Je//OUe55xzzvA+ffoM7tix45CioqKuukI2q6+vX7t27doXFy9ePGfixImv3Xvvvat1BQAAILkEwAAAALvRl7/85R6f+cxnBvfr129Qly5dDm/ZsqVAmL2qrq5u7bp16wS+AAAAOUoADAAAsIe0atUq75prrtnn2GOPPXi//fY7uH379oeUlpb2TaVS+brDbpKuqalZtnHjxnlvvfXW3GeffXbef/3Xfy2vra1Naw0AAEBuEgADAADsRQceeGDLq6+++oAhQ4Yc3LNnz4Pbtm17sGuj+biampqqq6qqXi8vL583Z86ceb/85S/nvfjii1t1BgAAoPkQAAMAAGSZoUOHFn/xi1/cf9CgQQf26NHjwHbt2h3YqlWr3qlUKk932CFdU1OzvLKycsHq1asXzJkzZ8Gf//znJTNmzKjWGgAAgOZNAAwAAJAAxx13XNkFF1xw4MEHH3xA165dDywtLd23pKRkn1QqVag7uS2TyTRs27ZtRXV19dJ169YtfOONNxZOmDBh4YQJEzbpDgAAAO8mAAYAAEiw8847r+OJJ57Yp3///vt16dKlT5s2bfZr3bp1v/z8/GLdSZampqaa6urqxZs3b16ybt26pQsXLlzy9NNPL33ooYc26A4AAAAflgAYAAAgx7Rr1y7/kksu6TFkyJCe++67b89OnTr1Kisr61VcXNyzZcuW3VKpVL4u7R2ZTKaprq6uvKamZtWWLVtWVlRUrFy6dOnK2bNnr7r//vvXVFZWNukSAAAAn4QAGAAAoBnp1KlTwec+97luQ4cO7bnPPvv0aNeuXafWrVt3Li4u7tqyZcvORUVFnfLy8lro1MeTTqe319fXr6+rq6uoqalZW11dvb6y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AACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoMY3JP//9K8My551lzpAk293a7QAAAAAAAAD8iIw3r+SL7TpPxuSt4/ibJJuz20QDBgAAAAAAAHhzrJPp6NvHYcyyjLl7dJTPbl/Jp6sPLufSsM+5ec7q5YOrF0OeP/SVaAAAAAAAAIA3weH7u6zfm79dWDIMSw6225w785vsx3XyzasOby5ssz69c4sAAAAAAAAAr9n69C6bC9sT93a7rKdnORin5Otxynzi1JQcfiwCAwAAAAAAALxO69O7HH68TaaT98cp85R8vbp3Nfszv8q0LHn7xMF1sjk/ZzUPmZ/MmWefhAYAAAAAAAD4oayPdjn7223Gn7x6ZrXPnetX8mBKkpv3cufDd/Pufn5FL56SzcVtNheT3dNt8tQlAwAAAAAAAHyv1sm0ySv/9XtsNWZ3I/lHkgzHi7/4XY7WYz5yiwAAAAAAAAA/Ivtcv/3nPEyS1fHa42t5+vNLyX7JoRsCAAAAAAAAePPt1/nbV3/KvePn1Xc371/NYxEYAAAAAAAA4M0yTHk2rvNo2WdzvHZqzN9v/SF3vju3evng/at5fPDLPDu1yuGyZHSVAAAAAAAAAK/XOGe4ueSvZ4e8M8xZbVe5ceuPufvy3Oqkw4+v5emDX+fuuTlLhhwsEYIBAAAAAAAAXpclGR8OuXP0TR4cPM/9z/+SRyfNDf/1TZezOp/87KdjzizJZkhO7edMy/w/nAUAAAAAAADg/zaMWcZkP8/ZLsmLacr2/MV8+cnvs/tP5/4FmLjAq1ifcioAAAAASUVORK5CYII=\",u=e.objectName?O(e.objectName):\"Media \"+n._slideObjects.filter(e=>e._type===I.media).length,f={_type:I.media};if(!t&&!l&&\"online\"!==r)throw new Error(\"addMedia() error: either `data` or `path` are required!\");if(l&&!l.toLowerCase().includes(\"base64,\"))throw new Error(\"addMedia() error: `data` value lacks a base64 header! Ex: 'video/mpeg;base64,NMP[...]')\");if(!p.toLowerCase().includes(\"base64,\"))throw new Error(\"addMedia() error: `cover` value lacks a base64 header! Ex: 'data:image/png;base64,iV[...]')\");if(\"online\"===r&&!c)throw new Error(\"addMedia() error: online videos require `link` value\");a=e.extn||(l?l.split(\";\")[0].split(\"/\")[1]:t.split(\".\").pop())||\"mp3\",f.mtype=r,f.media=t||\"preencoded.mov\",f.options={},f.options.x=o,f.options.y=i,f.options.w=s,f.options.h=A,f.options.objectName=u,\"online\"===r?(e=S(n),n._relsMedia.push({path:t||\"preencoded\"+a,data:\"dummy\",type:\"online\",extn:a,rId:e,Target:c}),f.mediaRid=e,n._relsMedia.push({path:\"preencoded.png\",data:p,type:\"image/png\",extn:\"png\",rId:S(n),Target:`../media/image-${n._slideNum}-${n._relsMedia.length+1}.png`})):(o=n._relsMedia.filter(e=>e.path&&e.path===t&&e.type===r+\"/\"+a&&!e.isDuplicate)[0],i=S(n),n._relsMedia.push({path:t||\"preencoded\"+a,type:r+\"/\"+a,extn:a,data:l||\"\",rId:i,isDuplicate:!(null==o||!o.Target),Target:null!=o&&o.Target?o.Target:`../media/media-${n._slideNum}-${n._relsMedia.length+1}.`+a}),f.mediaRid=i,n._relsMedia.push({path:t||\"preencoded\"+a,type:r+\"/\"+a,extn:a,data:l||\"\",rId:S(n),isDuplicate:!(null==o||!o.Target),Target:null!=o&&o.Target?o.Target:`../media/media-${n._slideNum}-${n._relsMedia.length+0}.`+a}),n._relsMedia.push({path:\"preencoded.png\",type:\"image/png\",extn:\"png\",data:p,rId:S(n),Target:`../media/image-${n._slideNum}-${n._relsMedia.length+1}.png`})),n._slideObjects.push(f)}return this}addNotes(e){return this._slideObjects.push({_type:I.notes,text:[{text:e}]}),this}addShape(e,t){return ue(this,e,t),this}addTable(e,t){return this._newAutoPagedSlides=((a,e,t,n,r,o,i)=>{let s=[a],A=t&&\"object\"==typeof t?t:{};if(A.objectName=A.objectName?O(A.objectName):\"Table \"+a._slideObjects.filter(e=>e._type===I.table).length,null===e||0===e.length||!Array.isArray(e))throw new Error(\"addTable: Array expected! EX: 'slide.addTable( [rows], {options} );' (https://gitbrent.github.io/PptxGenJS/docs/api-tables.html)\");if(!e[0]||!Array.isArray(e[0]))throw new Error(\"addTable: 'rows' should be an array of cells! EX: 'slide.addTable( [ ['A'], ['B'], {text:'C',options:{align:'center'}} ] );' (https://gitbrent.github.io/PptxGenJS/docs/api-tables.html)\");let l=[],c=(e.forEach(e=>{let r=[];Array.isArray(e)?e.forEach(e=>{let t={_type:I.tablecell,text:\"\",options:\"object\"==typeof e&&e.options?e.options:{}};\"string\"==typeof e||\"number\"==typeof e?t.text=e.toString():e.text&&(\"string\"==typeof e.text||\"number\"==typeof e.text?t.text=e.text.toString():e.text&&(t.text=e.text),e.options)&&\"object\"==typeof e.options&&(t.options=e.options),t.options.border=t.options.border||A.border||[{type:\"none\"},{type:\"none\"},{type:\"none\"},{type:\"none\"}];e=t.options.border;Array.isArray(e)||\"object\"!=typeof e||(t.options.border=[e,e,e,e]),t.options.border[0]||(t.options.border[0]={type:\"none\"}),t.options.border[1]||(t.options.border[1]={type:\"none\"}),t.options.border[2]||(t.options.border[2]={type:\"none\"}),t.options.border[3]||(t.options.border[3]={type:\"none\"});[0,1,2,3].forEach(e=>{t.options.border[e]={type:t.options.border[e].type||u.type,color:t.options.border[e].color||u.color,pt:(\"number\"==typeof t.options.border[e].pt?t.options.border[e]:u).pt}}),r.push(t)}):(console.log(\"addTable: tableRows has a bad row. A row should be an array of cells. You provided:\"),console.log(e)),l.push(r)}),A.x=R(A.x||(0===A.x?0:F/2),\"X\",r),A.y=R(A.y||(0===A.y?0:F/2),\"Y\",r),A.h&&(A.h=R(A.h,\"Y\",r)),A.fontSize=A.fontSize||v,A.margin=0===A.margin||A.margin?A.margin:Q,\"number\"==typeof A.margin&&(A.margin=[Number(A.margin),Number(A.margin),Number(A.margin),Number(A.margin)]),-1!==JSON.stringify({arrRows:l}).indexOf(\"hyperlink\")||A.color||(A.color=A.color||d),\"string\"==typeof A.border?(console.warn(\"addTable `border` option must be an object. Ex: `{border: {type:'none'}}`\"),A.border=null):Array.isArray(A.border)&&[0,1,2,3].forEach(e=>{A.border[e]=A.border[e]?{type:A.border[e].type||u.type,color:A.border[e].color||u.color,pt:A.border[e].pt||u.pt}:{type:\"none\"}}),A.autoPage=\"boolean\"==typeof A.autoPage&&A.autoPage,A.autoPageRepeatHeader=\"boolean\"==typeof A.autoPageRepeatHeader&&A.autoPageRepeatHeader,A.autoPageHeaderRows=void 0===A.autoPageHeaderRows||isNaN(Number(A.autoPageHeaderRows))?1:Number(A.autoPageHeaderRows),A.autoPageLineWeight=void 0===A.autoPageLineWeight||isNaN(Number(A.autoPageLineWeight))?0:Number(A.autoPageLineWeight),A.autoPageLineWeight&&(1{var r;return null!=(r=null==t?void 0:t.options)&&r.colspan&&\"number\"==typeof t.options.colspan?e+=t.options.colspan:e+=1,e},0),\"string\"==typeof A.colW||\"number\"==typeof A.colW||A.colW&&Array.isArray(A.colW)&&1===A.colW.length&&1{r.forEach((e,t)=>{\"number\"==typeof e||\"string\"==typeof e?r[t]={_type:I.tablecell,text:String(r[t]),options:A}:\"object\"==typeof e&&(\"number\"==typeof e.text?r[t].text=r[t].text.toString():null==e.text&&(r[t].text=\"\"),r[t].options=e.options||{},r[t]._type=I.tablecell)})}),[]);return A&&!A.autoPage?(L(a,l),a._slideObjects.push({_type:I.table,arrTabRows:l,options:Object.assign({},A)})):(A.autoPageRepeatHeader&&(A._arrObjTabHeadRows=l.filter((e,t)=>t{i(a._slideNum+t)||s.push(o({masterName:(null==n?void 0:n._name)||null})),0{var e=new B;let n=2*(c.length-1)+1;var a=1<(null==(a=null==(a=c[0])?void 0:a.labels)?void 0:a.length);e.folder(\"_rels\"),e.folder(\"docProps\"),e.folder(\"xl/_rels\"),e.folder(\"xl/tables\"),e.folder(\"xl/theme\"),e.folder(\"xl/worksheets\"),e.folder(\"xl/worksheets/_rels\"),e.file(\"[Content_Types].xml\",' \\n'),e.file(\"_rels/.rels\",'\\n'),e.file(\"docProps/app.xml\",'Microsoft Macintosh Excel0falseWorksheets1Sheet1falsefalsefalse16.0300\\n'),e.file(\"docProps/core.xml\",'PptxGenJSPptxGenJS'+(new Date).toISOString()+''+(new Date).toISOString()+\"\"),e.file(\"xl/_rels/workbook.xml.rels\",''),e.file(\"xl/styles.xml\",'\\n'),e.file(\"xl/theme/theme1.xml\",''),e.file(\"xl/workbook.xml\",'\\n'),e.file(\"xl/worksheets/_rels/sheet1.xml.rels\",'\\n');{let r='';if(p.opts._type===w.BUBBLE||p.opts._type===w.BUBBLE3D)r+=``;else if(p.opts._type===w.SCATTER)r+=``;else if(a){let t=c.length;c[0].labels.forEach(e=>t+=e.filter(e=>e&&\"\"!==e).length),r=r+``+\"\"}else{var o=c.length+c[0].labels.length*c[0].labels[0].length+c[0].labels.length,i=c.length+c[0].labels.length*c[0].labels[0].length+1;r=r+``+''}p.opts._type===w.BUBBLE||p.opts._type===w.BUBBLE3D?c.forEach((e,t)=>{0===t?r+=\"X-Axis\":r=(r+=`${O(e.name||\"Y-Axis\"+t)}`)+`${O(\"Size\"+t)}`}):c.forEach(e=>{r+=`${O((e.name||\" \").replace(\"X-Axis\",\"X-Values\"))}`}),p.opts._type!==w.BUBBLE&&p.opts._type!==w.BUBBLE3D&&p.opts._type!==w.SCATTER&&c[0].labels.slice().reverse().forEach(e=>{e.filter(e=>e&&\"\"!==e).forEach(e=>{r+=`${O(e)}`})}),r+=\"\\n\",e.file(\"xl/sharedStrings.xml\",r)}{let a='';if(p.opts._type===w.BUBBLE||p.opts._type===w.BUBBLE3D){a=(a+=``)+``;let r=1;c.forEach((e,t)=>{0===t?a+=``:(a+=``,r++,a+=``)})}else p.opts._type===w.SCATTER?(a=(a+=`
`)+``,c.forEach((e,t)=>{a+=``})):(a=(a+=`
`)+``,c[0].labels.forEach((e,t)=>{a+=``}),c.forEach((e,t)=>{a+=``}));a=(a+=\"\")+''+\"
\",e.file(\"xl/tables/table1.xml\",a)}{let o='';if(o+='',p.opts._type===w.BUBBLE||p.opts._type===w.BUBBLE3D?o+=``:p.opts._type===w.SCATTER?o+=``:o+=``,o=o+''+'',p.opts._type===w.BUBBLE||p.opts._type===w.BUBBLE3D){o=(o+=\"\")+``+'0';for(let e=1;e${e}`;o+=\"\",c[0].values.forEach((e,t)=>{o=o+``+`${e}`;let r=2;for(let e=1;e${c[e].values[t]||\"\"}`,r++,o+=`${c[e].sizes[t]||\"\"}`,r++;o+=\"\"})}else if(p.opts._type===w.SCATTER){o=(o+=\"\")+``;for(let e=0;e${e}`;o+=\"\",c[0].values.forEach((e,t)=>{o=o+``+`${e}`;for(let e=1;e${c[e].values[t]||0===c[e].values[t]?c[e].values[t]:\"\"}`;o+=\"\"})}else if(o+=\"\",a){o+=``;for(let e=0;e0`;for(let e=c[0].labels.length-1;e${e}`;o+=\"\";var s=c.length,A=c[0].labels[0].length,l=c[0].labels.length;for(let n=0;n`;let r=s,a=c[0].labels.slice().reverse();a.forEach((e,t)=>{e[n]&&(e=0===t?1:a[t-1].filter(e=>e&&\"\"!==e).length,r+=e,o+=`${r}`)});for(let e=0;e${c[e].values[n]||0}`;o+=\"\"}}else{o+=``,c[0].labels.forEach((e,t)=>{o+=`0`});for(let e=0;e${e+1}`;o+=\"\",c[0].labels[0].forEach((e,t)=>{o+=``;for(let e=c[0].labels.length-1;0<=e;e--)o=(o+=``)+`${c.length+t+1}`+\"\";for(let e=0;e${c[e].values[t]||\"\"}`;o+=\"\"})}o=(o+=\"\")+''+\"\\n\",e.file(\"xl/worksheets/sheet1.xml\",o)}e.generateAsync({type:\"base64\"}).then(e=>{u.file(`ppt/embeddings/Microsoft_Excel_Worksheet${p.globalId}.xlsx`,e,{base64:!0}),u.file(\"ppt/charts/_rels/\"+p.fileName+\".rels\",''+``+\"\"),u.file(\"ppt/charts/\"+p.fileName,(n=>{let e,t,r,a,o='',i=!1;if(o=(o+='')+``+\"\",n.opts.showTitle?o=o+be({title:n.opts.title||\"Chart Title\",color:n.opts.titleColor,fontFace:n.opts.titleFontFace,fontSize:n.opts.titleFontSize||N,titleAlign:n.opts.titleAlign,titleBold:n.opts.titleBold,titlePos:n.opts.titlePos,titleRotate:n.opts.titleRotate},n.opts.x,n.opts.y)+'':o+='',n.opts._type===w.BAR3D&&(o+=``),o+=\"\",n.opts.layout?o=(o=(o=(o=(o=(o=(o=(o+=\"\")+' ')+' ')+' ')+' ')+' ')+' ')+\" \":o+=\"\",Array.isArray(n.opts._type)?n.opts._type.forEach(e=>{var t=Object.assign(Object.assign({},n.opts),e.options),r=t.secondaryValAxis?X:h,a=t.secondaryCatAxis?H:g;i=i||t.secondaryValAxis,o+=me(e.type,e.data,t,r,a)}):o+=me(n.opts._type,n.data,n.opts,h,g),n.opts._type!==w.PIE&&n.opts._type!==w.DOUGHNUT){if(n.opts.valAxes&&1{let a=\"\";return a=(a=(a=(a=(a=(a+=\"\")+' ')+' ')+' ')+' ')+(\"none\"!==t.serGridLine.style?we(t.serGridLine):\"\"),t.showSerAxisTitle&&(a+=be({color:t.serAxisTitleColor,fontFace:t.serAxisTitleFontFace,fontSize:t.serAxisTitleFontSize,titleRotate:t.serAxisTitleRotate,title:t.serAxisTitle||\"Axis Title\"})),a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a+=` `)+' ')+` `)+' ')+(t.serAxisLineShow?`${j(t.serAxisLineColor||f.color)}`:\"\")+' ')+\" \")+\" \")+\" \")+\" \")+` `)+` ${j(t.serAxisLabelColor||d)}`)+` `)+\" \")+' ')+\" \")+' ',t.serAxisLabelFrequency&&(a+=' '),t.serLabelFormatCode&&([\"serAxisBaseTimeUnit\",\"serAxisMajorTimeUnit\",\"serAxisMinorTimeUnit\"].forEach(e=>{!t[e]||\"string\"==typeof t[e]&&[\"days\",\"months\",\"years\"].includes(e.toLowerCase())||(console.warn(`\"${e}\" must be one of: 'days','months','years' !`),t[e]=null)}),t.serAxisBaseTimeUnit&&(a+=` `),t.serAxisMajorTimeUnit&&(a+=` `),t.serAxisMinorTimeUnit&&(a+=` `),t.serAxisMajorUnit&&(a+=` `),t.serAxisMinorUnit)&&(a+=` `),a+=\"\"})(n.opts,V,h))),null!=(e=n.opts)&&e.catAxes&&null!=(t=n.opts)&&t.catAxes[1]&&(o+=ve(Object.assign(Object.assign({},n.opts),n.opts.catAxes[1]),H,X))}return n.opts.showDataTable&&(o=(o=(o=(o=(o=(o=(o=(o=(o=(o=(o=(o=(o=(o=(o=(o+=\"\")+` `)+` `)+` `)+` `)+\" \")+' ')+\" \")+' ')+' ')+` `)+' ')+' ')+\" \")+' ')+\" \"),o=(o=(o=(o+=\" \")+(null!=(r=n.opts.plotArea.fill)&&r.color?G(n.opts.plotArea.fill):\"\"))+(n.opts.plotArea.border?`${G(n.opts.plotArea.border.color)}`:\"\")+\" \")+\" \",n.opts.showLegend&&(o=(o+=\"\")+'',(n.opts.legendFontFace||n.opts.legendFontSize||n.opts.legendColor)&&(o=(o=(o=(o+=\"\")+\" \")+\" \")+(n.opts.legendFontSize?``:\"\"),n.opts.legendColor&&(o+=G(n.opts.legendColor)),n.opts.legendFontFace&&(o+=''),n.opts.legendFontFace&&(o+=''),o=(o=(o+=\" \")+' ')+\" \"),o+=\"\"),o=(o+=' ')+' ',n.opts._type===w.SCATTER&&(o+=''),o=(o=(o=(o=(o+=\"\")+(null!=(a=n.opts.chartArea.fill)&&a.color?G(n.opts.chartArea.fill):\"\"))+(n.opts.chartArea.border?`${G(n.opts.chartArea.border.color)}`:\"\"))+\" \")+''})(p)),t(\"\")}).catch(e=>{r(e)})})})}function me(a,n,o,e,t){let i=-1,s=1;var r=null;let A=\"\";switch(a){case w.AREA:case w.BAR:case w.BAR3D:case w.LINE:case w.RADAR:A+=``,a===w.AREA&&\"stacked\"===o.barGrouping&&(A+=''),a!==w.BAR&&a!==w.BAR3D||(A=(A+='')+''),a===w.RADAR&&(A+=''),A+='',n.forEach(e=>{i++,A=(A=(A=(A=(A=(A+=\"\")+` `)+\" \")+\" Sheet1!$\"+E(e._dataIndex+e.labels.length+1)+\"$1\")+' '+O(e.name)+\"\")+\" \";var t=o.chartColors?o.chartColors[i%o.chartColors.length]:null;A+=\" \",\"transparent\"===t?A+=\"\":o.chartColorsOpacity?A+=\"\"+j(t,``)+\"\":A+=\"\"+j(t)+\"\",a===w.LINE||a===w.RADAR?0===o.lineSize?A+=\"\":A=(A+=`${j(t)}`)+'':o.dataBorder&&(A+=`${j(o.dataBorder.color)}`),A=(A+=T(o.shadow,l))+' ',a!==w.RADAR&&(A=(A+=\"\")+``,o.dataLabelBkgrdColors&&(A+=`${j(t)}`),A=(A=(A=(A+=\"\")+``)+`${j(o.dataLabelColor||d)}`)+``+\"\",o.dataLabelPosition&&(A+=``),A=(A=(A=(A+='')+``)+``)+``+\"\"),a!==w.LINE&&a!==w.RADAR||(A=(A+=\"\")+' ',o.lineDataSymbolSize&&(A+=``),A=(A=(A=(A+=\" \")+` ${j(o.chartColors[e._dataIndex+1>o.chartColors.length?Math.floor(Math.random()*o.chartColors.length):e._dataIndex])}`)+` ${j(o.lineDataSymbolLineColor||t)}`+\" \")+\" \"),a!==w.BAR&&a!==w.BAR3D||1!==n.length||!(o.chartColors&&o.chartColors!==q&&1{e=e<0?o.invertedColors||o.chartColors||q:o.chartColors||[];A=(A=(A+=\" \")+` `+' ')+' ',0===o.lineSize?A+=\"\":A=a===w.BAR?(A+=\"\")+' ':(A=(A+=\" \")+' ')+\" \",A=(A+=T(o.shadow,l))+\" \"}),A+=\"\",o.catLabelFormatCode?(A=(A=(A=(A+=\" \")+` Sheet1!$A$2:$A$${e.labels[0].length+1}`+\" \")+\" \"+(o.catLabelFormatCode||\"General\")+\"\")+` `,e.labels[0].forEach((e,t)=>A+=`${O(e)}`),A+=\" \"):(A=(A=(A+=\" \")+` Sheet1!$A$2:$${E(e.labels.length)}$${e.labels[0].length+1}`+\" \")+` `,e.labels.forEach(e=>{A+=\"\",e.forEach((e,t)=>A+=`${O(e)}`),A+=\"\"}),A+=\" \"),A=(A=(A=(A=A+\"\"+\" \")+`Sheet1!$${E(e._dataIndex+e.labels.length+1)}$2:$${E(e._dataIndex+e.labels.length+1)}$${e.labels[0].length+1}`+\" \")+\" \"+(o.valLabelFormatCode||o.dataTableFormatCode||\"General\")+\"\")+` `,e.values.forEach((e,t)=>A+=`${e||0===e?e:\"\"}`),A=(A+=\" \")+\" \",a===w.LINE&&(A+=''),A+=\"\"}),A=(A=(A=(A=(A=(A=(A=(A+=\" \")+` `)+\" \")+\" \")+` `)+\" \"+j(o.dataLabelColor||d)+\"\")+' ')+\" \",o.dataLabelPosition&&(A+=' '),A=(A=(A=(A=(A+=' ')+' ')+' ')+' ')+` `+\" \",a===w.BAR?A=(A+=` `)+` `:a===w.BAR3D?A=(A=(A+=` `)+` `)+' ':a===w.LINE&&(A+=' '),A=(A+=``)+``;break;case w.SCATTER:A=(A+=\"\")+''+'',i=-1,n.filter((e,t)=>0{i++,A=(A=(A=(A=(A=(A+=\"\")+` `+` `)+\" \")+` Sheet1!$${E(e+2)}$1`)+' '+O(a.name)+\" \")+\" \";var t=o.chartColors[i%o.chartColors.length];if(\"transparent\"===t?A+=\"\":o.chartColorsOpacity?A+=\"\"+j(t,'')+\"\":A+=\"\"+j(t)+\"\",0===o.lineSize?A+=\"\":A=(A+=`${j(t)}`)+``,A=(A=(A+=T(o.shadow,l))+\" \"+\"\")+' ',o.lineDataSymbolSize&&(A+=``),A=(A=(A=(A+=\"\")+`${j(o.chartColors[e+1>o.chartColors.length?Math.floor(Math.random()*o.chartColors.length):e])}`)+`${j(o.lineDataSymbolLineColor||o.chartColors[i%o.chartColors.length])}`+\"\")+\"\",o.showLabel){let r=ne(\"-xxxx-xxxx-xxxx-xxxxxxxxxxxx\");!a.labels[0]||\"custom\"!==o.dataLabelFormatScatter&&\"customXY\"!==o.dataLabelFormatScatter||(A+=\"\",a.labels[0].forEach((e,t)=>{\"custom\"!==o.dataLabelFormatScatter&&\"customXY\"!==o.dataLabelFormatScatter||(A=(A=(A=(A=(A=(A=(A=(A=(A+=\" \")+` `+\" \")+\" \")+\" \")+\" \")+\" \")+\" \")+' ')+\" \"+O(e)+\" \",A=(A=(A=(A=(A=(A=\"customXY\"!==o.dataLabelFormatScatter||/^ *$/.test(e)?A:(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A+=\" \")+' ')+\" ( \")+' ')+' ')+\" \")+\" [\"+O(a.name)+\"\")+\" \")+' ')+\" , \")+' ')+' ')+\" \")+\" [\"+O(a.name)+\"]\")+\" \")+' ')+\" ) \")+' ')+\" \")+\" \")+\" \")+\" \")+\" \",o.dataLabelPosition&&(A+=' '),A=(A=(A=(A=(A=(A=(A+=' ')+' ')+' ')+' ')+' ')+` `+\" \")+\" \")}),A+=\"\"),\"XY\"===o.dataLabelFormatScatter&&(A=(A=(A=(A=(A=(A=(A=(A=(A=(A+=\" \")+\" \")+\" \")+\" \")+\" \")+\" \")+\" \")+\" \")+' ')+\" \",o.dataLabelPosition&&(A+=' '),A=(A=(A=(A=(A=(A=(A=(A+=' ')+` `)+` `)+` `)+' ')+' ')+' ')+\" \")}1===n.length&&o.chartColors!==q&&a.values.forEach((e,t)=>{e=e<0?o.invertedColors||o.chartColors||q:o.chartColors||[];A=(A=(A+=\" \")+` `+' ')+' ',0===o.lineSize?A+=\"\":A=(A+=\"\")+' ',A=(A+=T(o.shadow,l))+\" \"}),A=(A=(A=(A+=\" \")+` Sheet1!$A$2:$A$${n[0].values.length+1}`)+\" General\")+` `,n[0].values.forEach((e,t)=>{A+=`${e||0===e?e:\"\"}`}),A=(A=(A=(A=(A=(A+=\" \")+\" \")+\" \")+` Sheet1!$${E(e+2)}$2:$${E(e+2)}$${n[0].values.length+1}`)+\" General\")+` `,n[0].values.forEach((e,t)=>{A+=`${a.values[t]||0===a.values[t]?a.values[t]:\"\"}`}),A=(A=(A+=\" \")+\" \")+''}),A=(A=(A=(A=(A=(A=(A=(A+=\" \")+` `)+\" \")+\" \")+` `)+\" \"+j(o.dataLabelColor||d)+\"\")+' ')+\" \",o.dataLabelPosition&&(A+=' '),A=(A=(A=(A+=' ')+' ')+' ')+' ',A=(A+=``)+(\"\");break;case w.BUBBLE:case w.BUBBLE3D:A=A+\"\"+'',i=-1,n.filter((e,t)=>0{i++,A=(A=(A=(A=(A=(A+=\"\")+` `+` `)+\" \")+\" Sheet1!$\"+E(s+1)+\"$1\")+' '+O(r.name)+\" \")+\" \";e=o.chartColors[i%o.chartColors.length];\"transparent\"===e?A+=\"\":o.chartColorsOpacity?A+=`${j(e,'')}`:A+=\"\"+j(e)+\"\",0===o.lineSize?A+=\"\":o.dataBorder?A+=`${j(o.dataBorder.color)}`:A=(A+=`${j(e)}`)+``,A=A+T(o.shadow,l)+\"\",A=(A=(A=(A+=\" \")+` Sheet1!$A$2:$A$${n[0].values.length+1}`)+\" General\")+` `,n[0].values.forEach((e,t)=>{A+=`${e||0===e?e:\"\"}`}),A=(A=(A=(A+=\" \")+\" \")+\" \")+`Sheet1!$${E(s+1)}$2:$${E(s+1)}$${n[0].values.length+1}`,s++,A=(A+=\" General\")+` `,n[0].values.forEach((e,t)=>{A+=`${r.values[t]||0===r.values[t]?r.values[t]:\"\"}`}),A=(A=(A=(A+=\" \")+\" \")+\" \")+`Sheet1!$${E(s+1)}$2:$${E(s+1)}$${r.sizes.length+1}`,s++,A=(A+=\" General\")+` `,r.sizes.forEach((e,t)=>{A+=`${e||\"\"}`}),A=(A=(A+=\" \")+\" \")+' '}),A=(A=(A=(A=(A+=\"\")+``+\"\")+``)+`${j(o.dataLabelColor||d)}`)+``+\"\",o.dataLabelPosition&&(A+=``),A=(A=(A=(A=(A=(A=(A+='')+``)+``)+' ')+' ')+\"\")+``+\"\";break;case w.DOUGHNUT:case w.PIE:r=n[0],A=(A=(A=(A=(A=(A=(A=(A=(A=A+(\"\")+' ')+\"\"+' ')+' '+\" \")+\" \"+\" Sheet1!$B$1\")+\" \"+' ')+(' '+O(r.name)+\"\"))+\" \"+\" \")+\" \"+\" \")+' '+' ',o.dataNoEffects?A+=\"\":A+=T(o.shadow,l),A+=\" \",r.labels[0].forEach((e,t)=>{A=(A=(A=A+\"\"+` `)+' ')+`${j(o.chartColors[t+1>o.chartColors.length?Math.floor(Math.random()*o.chartColors.length):t])}`,o.dataBorder&&(A+=`${j(o.dataBorder.color)}`),A=(A+=T(o.shadow,l))+\" \"}),A+=\"\",r.labels[0].forEach((e,t)=>{A=(A=(A=(A=(A=(A=(A=A+\"\"+` `)+` `+\" \")+\" \")+` `)+\" \"+j(o.dataLabelColor||d)+\"\")+` `+\" \")+\" \",a===w.PIE&&o.dataLabelPosition&&(A+=``),A=(A=(A=(A=(A=(A+=' ')+' ')+' ')+' ')+' ')+' '}),A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=A+` `+\" \")+\" \"+\" \")+\" \"+\" \")+` `+' ')+\" \"+\" \")+\" \"+\" \")+(a===w.PIE?'':\"\"))+' '+' ')+' '+' ')+' '+' ')+` `+\"\")+\"\"+\" \")+` Sheet1!$A$2:$A$${r.labels[0].length+1}`+\" \")+` `,r.labels[0].forEach((e,t)=>{A+=`${O(e)}`}),A=(A=(A=(A=(A+=\" \")+\" \"+\"\")+\" \"+\" \")+` Sheet1!$B$2:$B$${r.labels[0].length+1}`+\" \")+` `,r.values.forEach((e,t)=>{A+=`${e||0===e?e:\"\"}`}),A=(A=(A=A+\" \"+\" \")+\" \"+\" \")+` `,a===w.DOUGHNUT&&(A+=``),A+=\"\";break;default:A+=\"\"}return A}function ve(t,e,r){let a=\"\";return t._type===w.SCATTER||t._type===w.BUBBLE||t._type===w.BUBBLE3D?a+=\"\":a+=\"\",a=(a=a+(' ')+\" \")+(''),!t.catAxisMaxVal&&0!==t.catAxisMaxVal||(a+=``),!t.catAxisMinVal&&0!==t.catAxisMinVal||(a+=``),a=(a=(a=(a+=\"\")+(' '))+(' '))+(\"none\"!==t.catGridLine.style?we(t.catGridLine):\"\"),t.showCatAxisTitle&&(a+=be({color:t.catAxisTitleColor,fontFace:t.catAxisTitleFontFace,fontSize:t.catAxisTitleFontSize,titleRotate:t.catAxisTitleRotate,title:t.catAxisTitle||\"Axis Title\"})),t._type===w.SCATTER||t._type===w.BUBBLE||t._type===w.BUBBLE3D?a+=' ':a+=' ',a=t._type===w.SCATTER?(a+=' ')+' ':(a=(a+=' ')+' ')+' ',a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a+=\" \")+` `)+(t.catAxisLineShow?\"\"+j(t.catAxisLineColor||f.color)+\"\":\"\"))+(' '))+\" \"+\" \")+\" \"+\" \")+(t.catAxisLabelRotate?``:\"\")+\" \")+\" \"+\" \")+` `)+(\" \"+j(t.catAxisLabelColor||d)+\"\"))+(' '))+\" \"+\" \")+(' ')+\" \")+\" \"+(' '))+` `)+' '+' ')+` `,t.catAxisLabelFrequency&&(a+=' '),(t.catLabelFormatCode||t._type===w.SCATTER||t._type===w.BUBBLE||t._type===w.BUBBLE3D)&&(t.catLabelFormatCode&&([\"catAxisBaseTimeUnit\",\"catAxisMajorTimeUnit\",\"catAxisMinorTimeUnit\"].forEach(e=>{!t[e]||\"string\"==typeof t[e]&&[\"days\",\"months\",\"years\"].includes(t[e].toLowerCase())||(console.warn(`\"${e}\" must be one of: 'days','months','years' !`),t[e]=null)}),t.catAxisBaseTimeUnit&&(a+=''),t.catAxisMajorTimeUnit&&(a+=''),t.catAxisMinorTimeUnit)&&(a+=''),t.catAxisMajorUnit&&(a+=``),t.catAxisMinorUnit)&&(a+=``),t._type===w.SCATTER||t._type===w.BUBBLE||t._type===w.BUBBLE3D?a+=\"\":a+=\"\",a}function ye(e,t){let r=t===h?\"col\"===e.barDir?\"l\":\"b\":\"col\"!==e.barDir?\"r\":\"t\";t===X&&(r=\"r\");var a=t===h?g:H;let n=\"\";return n=(n+=\"\")+(' ')+\" \",e.valAxisLogScaleBase&&(n+=``),n+='',!e.valAxisMaxVal&&0!==e.valAxisMaxVal||(n+=``),!e.valAxisMinVal&&0!==e.valAxisMinVal||(n+=``),n=(n=(n+=\" \")+` `)+(' '),\"none\"!==e.valGridLine.style&&(n+=we(e.valGridLine)),e.showValAxisTitle&&(n+=be({color:e.valAxisTitleColor,fontFace:e.valAxisTitleFontFace,fontSize:e.valAxisTitleFontSize,titleRotate:e.valAxisTitleRotate,title:e.valAxisTitle||\"Axis Title\"})),n+=``,n=e._type===w.SCATTER?(n+=' ')+' ':(n=(n+=' ')+' ')+' ',n=(n=(n=(n=(n=(n=(n=(n=(n=(n=(n=(n=(n=(n+=\" \")+` `)+(e.valAxisLineShow?\"\"+j(e.valAxisLineColor||f.color)+\"\":\"\"))+(' '))+\" \"+\" \")+\" \"+\" \")+` `+\" \")+\" \"+\" \")+` `)+(\" \"+j(e.valAxisLabelColor||d)+\"\"))+(' '))+\" \"+\" \")+(' ')+\" \")+\" \"+(' '),\"number\"==typeof e.catAxisCrossesAt?n+=` `:\"string\"==typeof e.catAxisCrossesAt?n+=' ':(t=\"r\"===r||\"t\"===r,n+=' '),n+=' e.type===w.AREA).length?\"midCat\":\"between\")+'\"/>',e.valAxisMajorUnit&&(n+=` `),e.valAxisDisplayUnit&&(n+=`${e.valAxisDisplayUnitLabel?\"\":\"\"}`),n+=\"\"}function be(r,a,n){var e=\"left\"===r.titleAlign||\"right\"===r.titleAlign?``:\"\",t=r.titleRotate?``:\"\",o=r.fontSize?`sz=\"${Math.round(100*r.fontSize)}\"`:\"\",i=r.titleBold?1:0;let s=\"\";if(r.titlePos&&\"number\"==typeof r.titlePos.x&&\"number\"==typeof r.titlePos.y){a=r.titlePos.x+a,n=r.titlePos.y+n;let e=0===a?0:a*(a/5)/10,t=(1<=e&&(e/=10),.1<=e&&(e/=10),0===n?0:n*(n/5)/10);1<=t&&(t/=10),.1<=t&&(t/=10),s=``}return`\n \n \n ${t}\n \n \n ${e}\n \n ${j(r.color||d)}\n \n \n \n \n \n ${j(r.color||d)}\n \n \n ${O(r.title)||\"\"}\n \n
\n \n \n ${s}\n \n `}function E(e){let t=\"\";e-=1;return t=e<=25?r[e]:\"\"+r[Math.floor(e/r.length-1)]+r[e%r.length]}function T(e,t){var r,a,n,o,i,s;return e?\"object\"!=typeof e?(console.warn(\"`shadow` options must be an object. Ex: `{shadow: {type:'none'}}`\"),\"\"):(r=\"\",e=(t=Object.assign(Object.assign({},t),e)).type||\"outer\",a=z(t.blur),n=z(t.offset),o=Math.round(6e4*t.angle),i=t.color,s=Math.round(1e5*t.opacity),(r=(r+=``)+``+``)+``+\"\"):\"\"}function we(e){var t=\"\";return(t+=\" \")+` `+(' ')+(' ')+\" \"+\" \"+\"\"}function xe(e){if(e&&\"flat\"!==e){if(\"square\"===e)return\"sq\";if(\"round\"===e)return\"rnd\";throw new Error(\"Invalid chart line cap: \"+e)}return\"flat\"}function Ce(e){let t,r,a=\"undefined\"!=typeof process&&!(null==(t=process.versions)||!t.node)&&\"node\"===(null==(r=process.release)?void 0:r.name),o,i,s=a?()=>c(this,void 0,void 0,function*(){({default:o}=yield import(\"node:fs\")),{default:i}=yield import(\"node:https\")}):()=>c(this,void 0,void 0,function*(){}),A=(a&&s(),[]),l=e._relsMedia.filter(e=>!(\"online\"===e.type||e.data||e.path&&(e.path,e.path.includes(\"preencoded\")))),n=[];return l.forEach(e=>{n.includes(e.path)?e.isDuplicate=!0:(e.isDuplicate=!1,n.push(e.path))}),l.filter(e=>!e.isDuplicate).forEach(n=>{A.push(c(this,void 0,void 0,function*(){if(i||(yield s()),a&&o&&0!==n.path.indexOf(\"http\"))try{var e=o.readFileSync(n.path);return n.data=Buffer.from(e).toString(\"base64\"),l.filter(e=>e.isDuplicate&&e.path===n.path).forEach(e=>e.data=n.data),\"done\"}catch(e){throw n.data=P,l.filter(e=>e.isDuplicate&&e.path===n.path).forEach(e=>e.data=n.data),new Error(`ERROR: Unable to read media: \"${n.path}\"\n`+String(e))}return a&&i&&n.path.startsWith(\"http\")?yield new Promise((r,a)=>{i.get(n.path,e=>{let t=\"\";e.setEncoding(\"binary\"),e.on(\"data\",e=>t+=e),e.on(\"end\",()=>{n.data=Buffer.from(t,\"binary\").toString(\"base64\"),l.filter(e=>e.isDuplicate&&e.path===n.path).forEach(e=>e.data=n.data),r(\"done\")}),e.on(\"error\",()=>{n.data=P,l.filter(e=>e.isDuplicate&&e.path===n.path).forEach(e=>e.data=n.data),a(new Error(\"ERROR! Unable to load image (https.get): \"+n.path))})})}):yield new Promise((t,r)=>{let a=new XMLHttpRequest;a.onload=()=>{let e=new FileReader;e.onloadend=()=>{n.data=e.result,l.filter(e=>e.isDuplicate&&e.path===n.path).forEach(e=>e.data=n.data),n.isSvgPng?Pe(n).then(()=>t(\"done\")).catch(r):t(\"done\")},e.readAsDataURL(a.response)},a.onerror=()=>{n.data=P,l.filter(e=>e.isDuplicate&&e.path===n.path).forEach(e=>e.data=n.data),r(new Error(\"ERROR! Unable to load image (xhr.onerror): \"+n.path))},a.open(\"GET\",n.path),a.responseType=\"blob\",a.send()})}))}),e._relsMedia.filter(e=>e.isSvgPng&&e.data).forEach(e=>{c(this,void 0,void 0,function*(){a&&!o&&(yield s()),a&&o?(e.data=P,A.push(Promise.resolve(\"done\"))):A.push(Pe(e))})}),A}function Pe(n){return c(this,void 0,void 0,function*(){return yield new Promise((r,e)=>{let a=new Image;a.onload=()=>{a.width+a.height===0&&a.onerror(\"h/w=0\");let e=document.createElement(\"CANVAS\");var t=e.getContext(\"2d\");e.width=a.width,e.height=a.height,t.drawImage(a,0,0);try{n.data=e.toDataURL(n.type),r(\"done\")}catch(e){a.onerror(e.toString())}e=null},a.onerror=()=>{n.data=P,e(new Error(\"ERROR! Unable to load image (image.onerror): \"+n.path))},a.src=\"string\"==typeof n.data?n.data:P})})}let Se={cover:function(e,t){var e=e.h/e.w,r=e`},contain:function(e,t){var e=e.h/e.w,r=e`},crop:function(e,t){var r=t.x,a=e.w-(t.x+t.w),n=t.y,t=e.h-(t.y+t.h);return``}};function Le(k){let e,_=k._name?'':\"\",N=1;return k._bkgdImgRid?_+=``:null!=(e=k.background)&&e.color?_+=`${G(k.background)}`:!k.bkgd&&k._name&&k._name===t&&(_+=''),_=(_=_+\"\"+'')+''+'',k._slideObjects.forEach((a,e)=>{let t,r,n,o,i,s,A,l,c=0,p=0,u=R(\"75%\",\"X\",k._presLayout),f=0,d,h=\"\",g=null,m,v=0,y=0,b,w=null;var x,C,P,S,L=null==(t=a.options)?void 0:t.sizing,E=null==(r=a.options)?void 0:r.rounding;void 0!==k._slideLayout&&void 0!==k._slideLayout._slideObjects&&a.options&&a.options.placeholder&&(d=k._slideLayout._slideObjects.filter(e=>e.options.placeholder===a.options.placeholder)[0]),a.options=a.options||{},void 0!==a.options.x&&(c=R(a.options.x,\"X\",k._presLayout)),void 0!==a.options.y&&(p=R(a.options.y,\"Y\",k._presLayout)),void 0!==a.options.w&&(u=R(a.options.w,\"X\",k._presLayout)),void 0!==a.options.h&&(f=R(a.options.h,\"Y\",k._presLayout));let T=u,B=f;switch(d&&(!d.options.x&&0!==d.options.x||(c=R(d.options.x,\"X\",k._presLayout)),!d.options.y&&0!==d.options.y||(p=R(d.options.y,\"Y\",k._presLayout)),!d.options.w&&0!==d.options.w||(u=R(d.options.w,\"X\",k._presLayout)),!d.options.h&&0!==d.options.h||(f=R(d.options.h,\"Y\",k._presLayout))),a.options.flipH&&(h+=' flipH=\"1\"'),a.options.flipV&&(h+=' flipV=\"1\"'),a.options.rotate&&(h+=` rot=\"${U(a.options.rotate)}\"`),a._type){case I.table:if(g=a.arrTabRows,m=a.options,v=0,y=0,g[0].forEach(e=>{b=e.options||null,v+=null!==b&&(b,1)&&b.colspan?Number(b.colspan):1}),w=``,w=(w+=' ')+``+'',Array.isArray(m.colW)){w+=\"\";for(let t=0;t`}}else{y=m.colW||F,a.options.w&&!m.colW&&(y=Math.round((\"number\"==typeof a.options.w?a.options.w:1)/v)),w+=\"\";for(let e=0;e`}w+=\"\",g.forEach(r=>{for(let t=0;t({_type:I.tablecell,options:{rowspan:e},_hmerge:!0})),r.splice(t+1,0,...a),t+=n):t+=1}}),g.forEach((e,t)=>{let n=g[t+1];n&&e.forEach((e,t)=>{var r=e._rowContinue||(null==(r=e.options)?void 0:r.rowspan),a=null==(a=e.options)?void 0:a.colspan;r&&1{let r=0;Array.isArray(m.rowH)&&m.rowH[t]?r=M(Number(m.rowH[t])):m.rowH&&!isNaN(Number(m.rowH))?r=M(Number(m.rowH)):(a.options.cy||a.options.h)&&(r=Math.round((a.options.h?M(a.options.h):\"number\"==typeof a.options.cy?a.options.cy:1)/g.length)),w+=``,e.forEach(a=>{let t={rowSpan:1<(null==(o=a.options)?void 0:o.rowspan)?a.options.rowspan:void 0,gridSpan:1<(null==(o=a.options)?void 0:o.colspan)?a.options.colspan:void 0,vMerge:a._vmerge?1:void 0,hMerge:a._hmerge?1:void 0},n=Object.keys(t).map(e=>[e,t[e]]).filter(([,e])=>!!e).map(([e,t])=>`${String(e)}=\"${String(t)}\"`).join(\" \");if(n=n&&\" \"+n,a._hmerge||a._vmerge)w+=``;else{let t=a.options||{};a.options=t,[\"align\",\"bold\",\"border\",\"color\",\"fill\",\"fontFace\",\"fontSize\",\"margin\",\"textDirection\",\"underline\",\"valign\"].forEach(e=>{m[e]&&!t[e]&&0!==t[e]&&(t[e]=m[e])});var o=t.valign?` anchor=\"${t.valign.replace(/^c$/i,\"ctr\").replace(/^m$/i,\"ctr\").replace(\"center\",\"ctr\").replace(\"middle\",\"ctr\").replace(\"top\",\"t\").replace(\"btm\",\"b\").replace(\"bottom\",\"b\")}\"`:\"\",i=t.textDirection&&\"horz\"!==t.textDirection?` vert=\"${t.textDirection}\"`:\"\",s=(s=(null!=(s=null==(s=a._optImp)?void 0:s.fill)&&s.color?a._optImp.fill.color:null!=(s=a._optImp)&&s.fill&&\"string\"==typeof a._optImp.fill?a._optImp.fill:\"\")||t.fill?t.fill:\"\")?G(s):\"\";let e=0===t.margin||t.margin?t.margin:Q,r=(Array.isArray(e)||\"number\"!=typeof e||(e=[e,e,e,e]),\"\");r=1<=e[0]?` marL=\"${z(e[3])}\" marR=\"${z(e[1])}\" marT=\"${z(e[0])}\" marB=\"${z(e[2])}\"`:` marL=\"${M(e[3])}\" marR=\"${M(e[1])}\" marT=\"${M(e[0])}\" marB=\"${M(e[2])}\"`,w+=`${De(a)}`,t.border&&Array.isArray(t.border)&&[{idx:3,name:\"lnL\"},{idx:1,name:\"lnR\"},{idx:0,name:\"lnT\"},{idx:2,name:\"lnB\"}].forEach(e=>{\"none\"!==t.border[e.idx].type?w=(w=(w=(w+=``)+`${j(t.border[e.idx].color)}`)+``)+``:w+=``}),w=(w+=s)+\" \"+\" \"}}),w+=\"\"}),w=(w=w+\" \"+\" \")+\" \"+\"\",_+=w,N++;break;case I.text:case I.placeholder:if(a.options.line||0!==f||(f=.3*F),a.options._bodyProp||(a.options._bodyProp={}),a.options.margin&&Array.isArray(a.options.margin)?(a.options._bodyProp.lIns=z(a.options.margin[0]||0),a.options._bodyProp.rIns=z(a.options.margin[1]||0),a.options._bodyProp.bIns=z(a.options.margin[2]||0),a.options._bodyProp.tIns=z(a.options.margin[3]||0)):\"number\"==typeof a.options.margin&&(a.options._bodyProp.lIns=z(a.options.margin),a.options._bodyProp.rIns=z(a.options.margin),a.options._bodyProp.bIns=z(a.options.margin),a.options._bodyProp.tIns=z(a.options.margin)),_=(_+=\"\")+``,null!=(n=a.options.hyperlink)&&n.url&&(_+=``),null!=(o=a.options.hyperlink)&&o.slide&&(_+=``),_=(_=(_=(_=(_=(_+=\"\")+(\"':\"/>\")))+`${ke(\"placeholder\"===a._type?a:d)}`+\"\")+``)+``)+``,\"custGeom\"===a.shape)_=(_=(_=(_=(_+=\"\")+\"\")+\"\")+'')+``,null!=(s=a.options.points)&&s.forEach((e,t)=>{if(\"curve\"in e)switch(e.curve.type){case\"arc\":_+=``;break;case\"cubic\":_+=`\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t`;break;case\"quadratic\":_+=`\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t`}else\"close\"in e?_+=\"\":e.moveTo||0===t?_+=``:_+=``}),_=(_+=\"\")+\"\";else{if(_+='',a.options.rectRadius)_+=``;else if(a.options.angleRange){for(let e=0;e<2;e++){var D=a.options.angleRange[e];_+=``}a.options.arcThicknessRatio&&(_+=``)}_+=\"\"}_+=a.options.fill?G(a.options.fill):\"\",a.options.line&&(_+=a.options.line.width?``:\"\",a.options.line.color&&(_+=G(a.options.line)),a.options.line.dashType&&(_+=``),a.options.line.beginArrowType&&(_+=``),a.options.line.endArrowType&&(_+=``),_+=\"\"),a.options.shadow&&\"none\"!==a.options.shadow.type&&(a.options.shadow.type=a.options.shadow.type||\"outer\",a.options.shadow.blur=z(a.options.shadow.blur||8),a.options.shadow.offset=z(a.options.shadow.offset||4),a.options.shadow.angle=Math.round(6e4*(a.options.shadow.angle||270)),a.options.shadow.opacity=Math.round(1e5*(a.options.shadow.opacity||.75)),a.options.shadow.color=a.options.shadow.color||W.color,_=(_=(_=(_=(_+=\"\")+` `)+` `)+` `)+\" \"),_=(_+=\"\")+De(a)+\"\";break;case I.image:_=(_=_+\"\"+\" \")+``,null!=(A=a.hyperlink)&&A.url&&(_+=``),null!=(l=a.hyperlink)&&l.slide&&(_+=``),_=(_=(_=_+\" \"+' ')+(\" \"+ke(d)+\"\"))+\" \"+\"\",_=(k._relsMedia||[]).filter(e=>e.rId===a.imageRid)[0]&&\"svg\"===(k._relsMedia||[]).filter(e=>e.rId===a.imageRid)[0].extn?(_=(_=(_=(_+=``)+(a.options.transparency?` `:\"\"))+' ')+` `+\" \")+\" \":(_+=``)+(a.options.transparency?``:\"\")+\"\",null!=L&&L.type?(x=L.w?R(L.w,\"X\",k._presLayout):u,C=L.h?R(L.h,\"Y\",k._presLayout):f,P=R(L.x||0,\"X\",k._presLayout),S=R(L.y||0,\"Y\",k._presLayout),_+=Se[L.type]({w:T,h:B},{w:x,h:C,x:P,y:S}),T=x,B=C):_+=\" \",_=(_=(_=(_=(_=_+\"\"+\"\")+(\" \"))+` `)+` `)+\" \"+` `,a.options.shadow&&\"none\"!==a.options.shadow.type&&(a.options.shadow.type=a.options.shadow.type||\"outer\",a.options.shadow.blur=z(a.options.shadow.blur||8),a.options.shadow.offset=z(a.options.shadow.offset||4),a.options.shadow.angle=Math.round(6e4*(a.options.shadow.angle||270)),a.options.shadow.opacity=Math.round(1e5*(a.options.shadow.opacity||.75)),a.options.shadow.color=a.options.shadow.color||W.color,_=(_=(_=(_=(_+=\"\")+``)+``)+``)+``+\"\"),_=_+\"\"+\"\";break;case I.media:_=\"online\"===a.mtype?(_=(_=(_=(_=(_=(_=(_+=\" \")+``)+\" \")+` `)+\" \")+` `+\" \")+` `+' ')+\" \":(_=(_=(_=(_=(_=(_=(_=(_=(_=(_+=\" \")+``)+' ')+` `)+' ')+` `)+\" \")+\" \")+` `+\" \")+` `+' ')+\" \";break;case I.chart:_=(_=(_=(_=(_=(_=(_=_+\"\"+\" \")+` `+\" \")+` ${ke(d)}`+\" \")+` `)+' '+' ')+` `+\" \")+\" \"+\"\";break;default:_+=\"\"}}),k._slideNumberProps&&(k._slideNumberProps.align||(k._slideNumberProps.align=\"left\"),_=(_=(_=(_=(_+=\" \")+' ')+\" \")+\"\"+``+``+' ')+\" \",(k._slideNumberProps.fontFace||k._slideNumberProps.fontSize||k._slideNumberProps.color)&&(_+=``,k._slideNumberProps.color&&(_+=G(k._slideNumberProps.color)),k._slideNumberProps.fontFace&&(_+=``),_+=\"\"),_+=\"\",k._slideNumberProps.align.startsWith(\"l\")?_+='':k._slideNumberProps.align.startsWith(\"c\")?_+='':k._slideNumberProps.align.startsWith(\"r\")?_+='':_+='',_=(_+=``)+`${k._slideNum}`+\"\"),_=_+\"\"+\"\"}function Ee(e,t){let r=0,a=''+A+'';return e._rels.forEach(e=>{r=Math.max(r,e.rId),e.type.toLowerCase().includes(\"hyperlink\")?\"slide\"===e.data?a+=``:a+=``:e.type.toLowerCase().includes(\"notesSlide\")&&(a+=``)}),(e._relsChart||[]).forEach(e=>{r=Math.max(r,e.rId),a+=``}),(e._relsMedia||[]).forEach(e=>{var t=e.rId.toString();r=Math.max(r,e.rId),e.type.toLowerCase().includes(\"image\")?a+='':e.type.toLowerCase().includes(\"audio\")?a.includes(' Target=\"'+e.Target+'\"')?a+='':a+='':e.type.toLowerCase().includes(\"video\")?a.includes(' Target=\"'+e.Target+'\"')?a+='':a+='':e.type.toLowerCase().includes(\"online\")&&(a.includes(' Target=\"'+e.Target+'\"')?a+='':a+='')}),t.forEach((e,t)=>{a+=``}),a+=\"\"}function Te(t,e){let r,a,n=\"\",o=\"\",i=\"\",s=\"\";var A,l=e?\"a:lvl1pPr\":\"a:pPr\";let c=z(_),p=\"<\"+l+(t.options.rtlMode?' rtl=\"1\" ':\"\");if(t.options.align)switch(t.options.align){case\"left\":p+=' algn=\"l\"';break;case\"right\":p+=' algn=\"r\"';break;case\"center\":p+=' algn=\"ctr\"';break;case\"justify\":p+=' algn=\"just\"';break;default:p+=\"\"}if(t.options.lineSpacing?o=``:t.options.lineSpacingMultiple&&(o=``),t.options.indentLevel&&!isNaN(Number(t.options.indentLevel))&&0`),t.options.paraSpaceAfter&&!isNaN(Number(t.options.paraSpaceAfter))&&0`),\"object\"==typeof t.options.bullet)if(null!=(a=null==(r=null==t?void 0:t.options)?void 0:r.bullet)&&a.indent&&(c=z(t.options.bullet.indent)),t.options.bullet.type)\"number\"===t.options.bullet.type.toString().toLowerCase()&&(p+=` marL=\"${t.options.indentLevel&&0`);else if(t.options.bullet.characterCode){let e=`&#x${t.options.bullet.characterCode};`;/^[0-9A-Fa-f]{4}$/.test(t.options.bullet.characterCode)||(console.warn(\"Warning: `bullet.characterCode should be a 4-digit unicode charatcer (ex: 22AB)`!\"),e=C.DEFAULT),p+=` marL=\"${t.options.indentLevel&&0'}else if(t.options.bullet.code){let e=`&#x${t.options.bullet.code};`;/^[0-9A-Fa-f]{4}$/.test(t.options.bullet.code)||(console.warn(\"Warning: `bullet.code should be a 4-digit hex code (ex: 22AB)`!\"),e=C.DEFAULT),p+=` marL=\"${t.options.indentLevel&&0'}else p+=` marL=\"${t.options.indentLevel&&0`;else n=t.options.bullet?(p+=` marL=\"${t.options.indentLevel&&0`):(t.options.bullet,p+=' indent=\"0\" marL=\"0\"',\"\");return t.options.tabStops&&Array.isArray(t.options.tabStops)&&(A=t.options.tabStops.map(e=>``).join(\"\"),s=`${A}`),p+=\">\"+o+i+n+s,e&&(p+=Be(t.options,!0)),p+=\"\"}function Be(e,t){let r,a=\"\";var n,o,i,t=t?\"a:defRPr\":\"a:rPr\";if(a=(a=(a=(a=(a+=\"<\"+t+' lang=\"'+(e.lang||\"en-US\")+'\"'+(e.lang?' altLang=\"en-US\"':\"\"))+(e.fontSize?` sz=\"${Math.round(100*e.fontSize)}\"`:\"\"))+(null!=e&&e.bold?` b=\"${e.bold?\"1\":\"0\"}\"`:\"\"))+(null!=e&&e.italic?` i=\"${e.italic?\"1\":\"0\"}\"`:\"\"))+(null!=e&&e.strike?` strike=\"${\"string\"==typeof e.strike?e.strike:\"sngStrike\"}\"`:\"\"),\"object\"==typeof e.underline&&null!=(r=e.underline)&&r.style?a+=` u=\"${e.underline.style}\"`:\"string\"==typeof e.underline?a+=` u=\"${String(e.underline)}\"`:e.hyperlink&&(a+=' u=\"sng\"'),e.baseline?a+=` baseline=\"${Math.round(50*e.baseline)}\"`:e.subscript?a+=' baseline=\"-40000\"':e.superscript&&(a+=' baseline=\"30000\"'),a=a+(e.charSpacing?` spc=\"${Math.round(100*e.charSpacing)}\" kern=\"0\"`:\"\")+' dirty=\"0\">',(e.color||e.fontFace||e.outline||\"object\"==typeof e.underline&&e.underline.color)&&(e.outline&&\"object\"==typeof e.outline&&(a+=`${G(e.outline.color||\"FFFFFF\")}`),e.color&&(a+=G({color:e.color,transparency:e.transparency})),e.highlight&&(a+=`${j(e.highlight)}`),\"object\"==typeof e.underline&&e.underline.color&&(a+=`${G(e.underline.color)}`),e.glow&&(a+=`${n=e.glow,o=Y,i=\"\",o=Object.assign(Object.assign({},o),n),(i+=``)+j(o.color,``)+\"\"}`),e.fontFace)&&(a+=``),e.hyperlink){if(\"object\"!=typeof e.hyperlink)throw new Error(\"ERROR: text `hyperlink` option should be an object. Ex: `hyperlink:{url:'https://github.com'}` \");if(!e.hyperlink.url&&!e.hyperlink.slide)throw new Error(\"ERROR: 'hyperlink requires either `url` or `slide`'\");e.hyperlink.url?a+=`\":\"/>\"):e.hyperlink.slide&&(a+=`\":\"/>\")),e.color&&(a=(a=(a+=' ')+' ')+\" \")}return a+=``}function De(r){let o=r.options||{},e=[],a=[];if(o&&r._type!==I.tablecell&&null==r.text)return\"\";let i=r._type===I.tablecell?\"\":\"\",n=(i+=(e=>{let t=\"\",e.options.fit&&(\"none\"===e.options.fit?t+=\"\":\"shrink\"===e.options.fit?t+=\"\":\"resize\"===e.options.fit&&(t+=\"\")),e.options.shrinkText&&(t+=\"\"),t=t+(e.options._bodyProp.autoFit?\"\":\"\")+\"\"):t+=' wrap=\"square\" rtlCol=\"0\">',e._type===I.tablecell?\"\":t})(r),0===o.h&&o.line&&o.align?i+='':\"placeholder\"===r._type?i+=`${Te(r,!0)}`:i+=\"\",\"string\"==typeof r.text||\"number\"==typeof r.text?e.push({text:r.text.toString(),options:o||{}}):r.text&&!Array.isArray(r.text)&&\"object\"==typeof r.text&&Object.keys(r.text).includes(\"text\")?e.push({text:r.text||\"\",options:r.options||{}}):Array.isArray(r.text)&&(e=r.text.map(e=>({text:e.text,options:e.options}))),e.forEach((t,e)=>{t.text||(t.text=\"\"),t.options=t.options||o||{},0===e&&t.options&&!t.options.bullet&&o.bullet&&(t.options.bullet=o.bullet),\"string\"!=typeof t.text&&\"number\"!=typeof t.text||(t.text=t.text.toString().replace(/\\r*\\n/g,A)),t.text.includes(A)&&null===t.text.match(/\\n$/g)?t.text.split(A).forEach(e=>{t.options.breakLine=!0,a.push({text:e,options:t.options})}):a.push(t)}),[]),s=[];return a.forEach((e,t)=>{0{let t,a=!1,n=(i+=\"\",\"{0<(r.options._lineIdx=e)&&r.options.softBreakBefore&&(i+=\"\"),r.options.align=r.options.align||o.align,r.options.lineSpacing=r.options.lineSpacing||o.lineSpacing,r.options.lineSpacingMultiple=r.options.lineSpacingMultiple||o.lineSpacingMultiple,r.options.indentLevel=r.options.indentLevel||o.indentLevel,r.options.paraSpaceBefore=r.options.paraSpaceBefore||o.paraSpaceBefore,r.options.paraSpaceAfter=r.options.paraSpaceAfter||o.paraSpaceAfter,n=Te(r,!1),i+=n.replace(\"\",\"\"),Object.entries(o).filter(([e])=>!(r.options.hyperlink&&\"color\"===e)).forEach(([e,t])=>{\"bullet\"===e||r.options[e]||(r.options[e]=t)}),i+=(e=r).text?`${Be(e.options,!1)}${O(e.text)}`:\"\",(!r.text&&o.fontSize||r.options.fontSize)&&(a=!0,o.fontSize=o.fontSize||r.options.fontSize)}),r._type===I.tablecell&&(o.fontSize||o.fontFace)?o.fontFace?i=(i=(i=(i+=`')+``)+``)+``+\"\":i+=`':a?i+=`':i+=``,i+=\"\"}),-1===i.indexOf(\"\")&&(i+=\"\"),i+=r._type===I.tablecell?\"\":\"\"}function ke(e){var t,r;return e?(t=null!=(t=e.options)&&t._placeholderIdx?e.options._placeholderIdx:\"\",r=(r=null!=(r=e.options)&&r._placeholderType?e.options._placeholderType:\"\")&&re[r]?re[r].toString():\"\",``):\"\"}function _e(e){return`${A}${O((e=>{let t=\"\";return e._slideObjects.forEach(e=>{e._type===I.notes&&(t+=null!=e&&e.text&&e.text[0]?e.text[0].text:\"\")}),t.replace(/\\r*\\n/g,A)})(e))}${e._slideNum}`}function Ne(e,t,r){return Ee(e[r-1],[{target:`../slideLayouts/slideLayout${((t,r,a)=>{for(let e=0;e{var t=0e._slideNum===this.slides[this.slides.length-1]._slideNum).length;return e.sectionTitle=t?this.sections[this.sections.length-1].title:null,this.addSlide(e)},this.getSlide=t=>this.slides.filter(e=>e._slideNum===t)[0],this.setSlideNumber=e=>{this.masterSlide._slideNumberProps=e,this.slideLayouts.filter(e=>e._name===t)[0]._slideNumberProps=e},this.createChartMediaRels=(e,r,t)=>{e._relsChart.forEach(e=>t.push(ge(e,r))),e._relsMedia.forEach(t=>{if(\"online\"!==t.type&&\"hyperlink\"!==t.type){let e=t.data&&\"string\"==typeof t.data?t.data:\"\";(e.includes(\",\")||e.includes(\";\"))&&e.includes(\",\")?e.includes(\";\")||(e=\"image/png;\"+e):e=\"image/png;base64,\"+e,r.file(t.Target.replace(\"..\",\"ppt\"),e.split(\",\").pop(),{base64:!0})}})},this.writeFileToBrowser=(r,a)=>c(this,void 0,void 0,function*(){let t=document.createElement(\"a\");if(t.setAttribute(\"style\",\"display:none;\"),t.dataset.interception=\"off\",document.body.appendChild(t),window.URL.createObjectURL){let e=window.URL.createObjectURL(new Blob([a],{type:\"application/vnd.openxmlformats-officedocument.presentationml.presentation\"}));return t.href=e,t.download=r,t.click(),setTimeout(()=>{window.URL.revokeObjectURL(e),document.body.removeChild(t)},100),yield Promise.resolve(r)}}),this.exportPresentation=s=>c(this,void 0,void 0,function*(){let o=[],t=[],i=new B;return this.slides.forEach(e=>{t=t.concat(Ce(e))}),this.slideLayouts.forEach(e=>{t=t.concat(Ce(e))}),t=t.concat(Ce(this.masterSlide)),yield Promise.all(t).then(()=>c(this,void 0,void 0,function*(){var r,e,t,a,n;return this.slides.forEach(e=>{var r;e._slideLayout&&((r=e)._slideLayout._slideObjects||[]).forEach(t=>{t._type===I.placeholder&&0===r._slideObjects.filter(e=>e.options&&e.options.placeholder===t.options.placeholder).length&&fe(r,[{text:\"\"}],t.options,!1)})}),i.folder(\"_rels\"),i.folder(\"docProps\"),i.folder(\"ppt\").folder(\"_rels\"),i.folder(\"ppt/charts\").folder(\"_rels\"),i.folder(\"ppt/embeddings\"),i.folder(\"ppt/media\"),i.folder(\"ppt/slideLayouts\").folder(\"_rels\"),i.folder(\"ppt/slideMasters\").folder(\"_rels\"),i.folder(\"ppt/slides\").folder(\"_rels\"),i.folder(\"ppt/theme\"),i.folder(\"ppt/notesMasters\").folder(\"_rels\"),i.folder(\"ppt/notesSlides\").folder(\"_rels\"),i.file(\"[Content_Types].xml\",((e,t,r)=>{let a=''+A;return a=(a=(a=(a=(a=a+''+'')+''+'')+''+'')+''+'')+''+'',e.forEach(e=>{(e._relsMedia||[]).forEach(e=>{\"image\"===e.type||\"online\"===e.type||\"chart\"===e.type||\"m4v\"===e.extn||a.includes(e.type)||(a+='')})}),a=(a=a+''+'')+''+'',e.forEach((e,t)=>{a=a+``+``,e._relsChart.forEach(e=>{a+=``})}),a=(a=a+''+'')+''+'',t.forEach((e,t)=>{a+=``,(e._relsChart||[]).forEach(e=>{a+=' '})}),e.forEach((e,t)=>{a+=``}),r._relsChart.forEach(e=>{a+=' '}),r._relsMedia.forEach(e=>{\"image\"===e.type||\"online\"===e.type||\"chart\"===e.type||\"m4v\"===e.extn||a.includes(e.type)||(a+=' ')}),a=(a+=' ')+' '+\"\"})(this.slides,this.slideLayouts,this.masterSlide)),i.file(\"_rels/.rels\",`${A}\n\t\t\n\t\t\n\t\t\n\t\t`),i.file(\"docProps/app.xml\",(a=this.slides,n=this.company,`${A}\n\t0\n\t0\n\tMicrosoft Office PowerPoint\n\tOn-screen Show (16:9)\n\t0\n\t${a.length}\n\t${a.length}\n\t0\n\t0\n\tfalse\n\t\n\t\t\n\t\t\tFonts Used\n\t\t\t2\n\t\t\tTheme\n\t\t\t1\n\t\t\tSlide Titles\n\t\t\t${a.length}\n\t\t\n\t\n\t\n\t\t\n\t\t\tArial\n\t\t\tCalibri\n\t\t\tOffice Theme\n\t\t\t${a.map((e,t)=>`Slide ${t+1}`).join(\"\")}\n\t\t\n\t\n\t${n}\n\tfalse\n\tfalse\n\tfalse\n\t16.0000\n\t`)),i.file(\"docProps/core.xml\",(a=this.title,n=this.subject,e=this.author,t=this.revision,`\n\t\n\t\t${O(a)}\n\t\t${O(n)}\n\t\t${O(e)}\n\t\t${O(e)}\n\t\t${t}\n\t\t${(new Date).toISOString().replace(/\\.\\d\\d\\dZ/,\"Z\")}\n\t\t${(new Date).toISOString().replace(/\\.\\d\\d\\dZ/,\"Z\")}\n\t`)),i.file(\"ppt/_rels/presentation.xml.rels\",(t=>{let r=1,a=''+A;a+='';for(let e=1;e<=t.length;e++)a+=``;return r++,a+=``+``+``+``+``+\"\"})(this.slides)),i.file(\"ppt/theme/theme1.xml\",`${null!=(n=(a=this).theme)&&n.headFontFace?``:''}${null!=(n=a.theme)&&n.bodyFontFace?``:''}`),i.file(\"ppt/presentation.xml\",(e=>{let t=''+A+'`;t+='',e.slides.forEach(e=>t+=``),t=(t=(t=(t+=\"\")+``)+``)+``+\"\";for(let e=1;e<10;e++)t+=``+''+``;return t+=\"\",e.sections&&0',e.sections.forEach(e=>{t+=``,e._slides.forEach(e=>t+=``),t+=\"\"}),t=(t+=\"\")+''),t+=\"\"})(this)),i.file(\"ppt/presProps.xml\",`${A}`),i.file(\"ppt/tableStyles.xml\",`${A}`),i.file(\"ppt/viewProps.xml\",`${A}`),this.slideLayouts.forEach((e,t)=>{i.file(`ppt/slideLayouts/slideLayout${t+1}.xml`,`\n\t\t\n\t\t${Le(e)}\n\t\t`),i.file(`ppt/slideLayouts/_rels/slideLayout${t+1}.xml.rels`,(e=t+1,Ee(this.slideLayouts[e-1],[{target:\"../slideMasters/slideMaster1.xml\",type:\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideMaster\"}])))}),this.slides.forEach((e,t)=>{var r;i.file(`ppt/slides/slide${t+1}.xml`,(r=e,''+A+'`+Le(r)+\"\")),i.file(`ppt/slides/_rels/slide${t+1}.xml.rels`,Ne(this.slides,this.slideLayouts,t+1)),i.file(`ppt/notesSlides/notesSlide${t+1}.xml`,_e(e)),i.file(`ppt/notesSlides/_rels/notesSlide${t+1}.xml.rels`,`\n\t\t\n\t\t\t\n\t\t\t\n\t\t`)}),i.file(\"ppt/slideMasters/slideMaster1.xml\",(r=this.masterSlide,e=(e=this.slideLayouts).map((e,t)=>``),t=''+A,(t+='')+Le(r)+''+e.join(\"\")+' ')),i.file(\"ppt/slideMasters/_rels/slideMaster1.xml.rels\",(a=this.masterSlide,(n=(n=this.slideLayouts).map((e,t)=>({target:`../slideLayouts/slideLayout${t+1}.xml`,type:\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideLayout\"}))).push({target:\"../theme/theme1.xml\",type:\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme\"}),Ee(a,n))),i.file(\"ppt/notesMasters/notesMaster1.xml\",`${A}7/23/19Click to edit Master text stylesSecond levelThird levelFourth levelFifth level‹#›`),i.file(\"ppt/notesMasters/_rels/notesMaster1.xml.rels\",`${A}\n\t\t\n\t\t`),this.slideLayouts.forEach(e=>{this.createChartMediaRels(e,i,o)}),this.slides.forEach(e=>{this.createChartMediaRels(e,i,o)}),this.createChartMediaRels(this.masterSlide,i,o),yield Promise.all(o).then(()=>c(this,void 0,void 0,function*(){return\"STREAM\"===s.outputType?yield i.generateAsync({type:\"nodebuffer\",compression:s.compression?\"DEFLATE\":\"STORE\"}):s.outputType?yield i.generateAsync({type:s.outputType}):yield i.generateAsync({type:\"blob\",compression:s.compression?\"DEFLATE\":\"STORE\"})}))}))});this.LAYOUTS={LAYOUT_4x3:{name:\"screen4x3\",width:9144e3,height:6858e3},LAYOUT_16x9:{name:\"screen16x9\",width:9144e3,height:5143500},LAYOUT_16x10:{name:\"screen16x10\",width:9144e3,height:5715e3},LAYOUT_WIDE:{name:\"custom\",width:12192e3,height:6858e3}},this._author=\"PptxGenJS\",this._company=\"PptxGenJS\",this._revision=\"1\",this._subject=\"PptxGenJS Presentation\",this._title=\"PptxGenJS Presentation\",this._presLayout={name:this.LAYOUTS[o].name,_sizeW:this.LAYOUTS[o].width,_sizeH:this.LAYOUTS[o].height,width:this.LAYOUTS[o].width,height:this.LAYOUTS[o].height},this._rtlMode=!1,this._slideLayouts=[{_margin:y,_name:t,_presLayout:this._presLayout,_rels:[],_relsChart:[],_relsMedia:[],_slide:null,_slideNum:1e3,_slideNumberProps:null,_slideObjects:[]}],this._slides=[],this._sections=[],this._masterSlide={addChart:null,addImage:null,addMedia:null,addNotes:null,addShape:null,addTable:null,addText:null,_name:null,_presLayout:this._presLayout,_rId:null,_rels:[],_relsChart:[],_relsMedia:[],_slideId:null,_slideLayout:null,_slideNum:null,_slideNumberProps:null,_slideObjects:[]}}stream(e){return c(this,void 0,void 0,function*(){return yield this.exportPresentation({compression:null==e?void 0:e.compression,outputType:\"STREAM\"})})}write(r){return c(this,void 0,void 0,function*(){var e=\"object\"==typeof r&&null!=r&&r.outputType?r.outputType:r||null,t=!(\"object\"!=typeof r||null==r||!r.compression)&&r.compression;return yield this.exportPresentation({compression:t,outputType:e})})}writeFile(a){return c(this,void 0,void 0,function*(){var e=\"undefined\"!=typeof process&&!(null==(e=process.versions)||!e.node)&&\"node\"===(null==(e=process.release)?void 0:e.name),{fileName:t=\"Presentation.pptx\",compression:r=!1}=(\"string\"==typeof a&&(console.warn(\"[WARNING] writeFile(string) is deprecated - pass { fileName } instead.\"),a={fileName:a}),a),t=t.toLowerCase().endsWith(\".pptx\")?t:t+\".pptx\",r=yield this.exportPresentation({compression:r,outputType:e?\"nodebuffer\":null});return e?(e=(yield import(\"node:fs\")).promises,e=e.writeFile,yield e(t,r)):yield this.writeFileToBrowser(t,r),t})}addSection(e){e?e.title||console.warn(\"addSection requires a title\"):console.warn(\"addSection requires an argument\");var t={_type:\"user\",_slides:[],title:e.title};e.order?this.sections.splice(e.order,0,t):this._sections.push(t)}addSlide(t){let r=\"string\"==typeof t?t:null!=t&&t.masterName?t.masterName:\"\",e={_name:this.LAYOUTS[o].name,_presLayout:this.presLayout,_rels:[],_relsChart:[],_relsMedia:[],_slideNum:this.slides.length+1};r&&(n=this.slideLayouts.filter(e=>e._name===r)[0])&&(e=n);var a,n=new he({addSlide:this.addNewSlide,getSlide:this.getSlide,presLayout:this.presLayout,setSlideNum:this.setSlideNumber,slideId:this.slides.length+256,slideRId:this.slides.length+2,slideNumber:this.slides.length+1,slideLayout:e});return this._slides.push(n),null!=t&&t.sectionTitle?(a=this.sections.filter(e=>e.title===t.sectionTitle)[0])?a._slides.push(n):console.warn(`addSlide: unable to find section with title: \"${t.sectionTitle}\"`):this.sections&&0\"default\"===e._type).length+1),_type:\"default\",_slides:[n]})),n}defineLayout(e){e?e.name?e.width?e.height?\"number\"!=typeof e.height?console.warn(\"defineLayout `height` should be a number (inches)\"):\"number\"!=typeof e.width&&console.warn(\"defineLayout `width` should be a number (inches)\"):console.warn(\"defineLayout requires `height`\"):console.warn(\"defineLayout requires `width`\"):console.warn(\"defineLayout requires `name`\"):console.warn(\"defineLayout requires `{name, width, height}`\"),this.LAYOUTS[e.name]={name:e.name,_sizeW:Math.round(Number(e.width)*F),_sizeH:Math.round(Number(e.height)*F),width:Math.round(Number(e.width)*F),height:Math.round(Number(e.height)*F)}}defineSlideMaster(e){e=JSON.parse(JSON.stringify(e));if(!e.title)throw new Error(\"defineSlideMaster() object argument requires a `title` value. (https://gitbrent.github.io/PptxGenJS/docs/masters.html)\");var t,n,r={_margin:e.margin||y,_name:e.title,_presLayout:this.presLayout,_rels:[],_relsChart:[],_relsMedia:[],_slide:null,_slideNum:1e3+this.slideLayouts.length+1,_slideNumberProps:e.slideNumber||null,_slideObjects:[],background:e.background||null,bkgd:e.bkgd||null};n=r,(t=e).bkgd&&(n.bkgd=t.bkgd),t.objects&&Array.isArray(t.objects)&&0{var r=Object.keys(e)[0],a=n;x[r]&&\"chart\"===r?ce(a,e[r].type,e[r].data,e[r].opts):x[r]&&\"image\"===r?pe(a,e[r]):x[r]&&\"line\"===r?ue(a,b.LINE,e[r]):x[r]&&\"rect\"===r?ue(a,b.RECTANGLE,e[r]):x[r]&&\"text\"===r?fe(a,[{text:e[r].text}],e[r].options,!1):x[r]&&\"placeholder\"===r&&(e[r].options.placeholder=e[r].options.name,delete e[r].options.name,e[r].options._placeholderType=e[r].options.type,delete e[r].options.type,e[r].options._placeholderIdx=100+t,fe(a,[{text:e[r].text}],e[r].options,!0))}),t.slideNumber&&\"object\"==typeof t.slideNumber&&(n._slideNumberProps=t.slideNumber),this.slideLayouts.push(r),(e.background||e.bkgd)&&de(e.background,r),r._slideNumberProps&&!this.masterSlide._slideNumberProps&&(this.masterSlide._slideNumberProps=r._slideNumberProps)}tableToSlides(t,p={}){{var[u,f,t={},d]=[this,t,p,null!=p&&p.masterSlideName?this.slideLayouts.filter(e=>e._name===p.masterSlideName)[0]:null];let a=t||{},n=void(a.slideMargin=a.slideMargin||0===a.slideMargin?a.slideMargin:.5,a.w||u.presLayout.width),o=[],i=[],s=[],A=[],r=[],l=[.5,.5,.5,.5],c=0;if(!document.getElementById(f))throw new Error('tableToSlides: Table ID \"'+f+'\" does not exist!');null!=d&&d._margin?(Array.isArray(d._margin)?l=d._margin:isNaN(d._margin)||(l=[d._margin,d._margin,d._margin,d._margin]),a.slideMargin=l):null!=a&&a.slideMargin&&(Array.isArray(a.slideMargin)?l=a.slideMargin:isNaN(a.slideMargin)||(l=[a.slideMargin,a.slideMargin,a.slideMargin,a.slideMargin])),n=(a.w?M(a.w):u.presLayout.width)-M(l[1]+l[3]),a.verbose&&(console.log(\"[[VERBOSE MODE]]\"),console.log(\"|-- `tableToSlides` ----------------------------------------------------|\"),console.log(\"| tableProps.h .................................... = \"+a.h),console.log(\"| tableProps.w .................................... = \"+a.w),console.log(\"| pptx.presLayout.width ........................... = \"+(u.presLayout.width/F).toFixed(1)),console.log(\"| pptx.presLayout.height .......................... = \"+(u.presLayout.height/F).toFixed(1)),console.log(\"| emuSlideTabW .................................... = \"+(n/F).toFixed(1)));let e=document.querySelectorAll(`#${f} tr:first-child th`);(e=0===e.length?document.querySelectorAll(`#${f} tr:first-child td`):e).forEach(e=>{var t=e;if(t.getAttribute(\"colspan\"))for(let e=0;e{c+=e}),r.forEach((e,t)=>{e=Number((Number(n)*(e/c*100)/100/F).toFixed(2));let r=0;var a=document.querySelector(`#${f} thead tr:first-child th:nth-child(${t+1})`),a=(a&&(r=Number(a.getAttribute(\"data-pptx-min-width\"))),document.querySelector(`#${f} thead tr:first-child th:nth-child(${t+1})`));a&&(r=Number(a.getAttribute(\"data-pptx-width\"))),A.push(r>e?r:e)}),a.verbose&&console.log(`| arrColW ......................................... = [${A.join(\", \")}]`),[\"thead\",\"tbody\",\"tfoot\"].forEach(t=>{document.querySelectorAll(`#${f} ${t} tr`).forEach(e=>{let r=[];switch(Array.from(e.cells).forEach(a=>{var e=window.getComputedStyle(a).getPropertyValue(\"color\").replace(/\\s+/gi,\"\").replace(\"rgba(\",\"\").replace(\"rgb(\",\"\").replace(\")\",\"\").split(\",\");let t=window.getComputedStyle(a).getPropertyValue(\"background-color\").replace(/\\s+/gi,\"\").replace(\"rgba(\",\"\").replace(\"rgb(\",\"\").replace(\")\",\"\").split(\",\"),n=(\"rgba(0, 0, 0, 0)\"!==window.getComputedStyle(a).getPropertyValue(\"background-color\")&&!window.getComputedStyle(a).getPropertyValue(\"transparent\")||(t=[\"255\",\"255\",\"255\"]),{align:null,bold:!!(\"bold\"===window.getComputedStyle(a).getPropertyValue(\"font-weight\")||500<=Number(window.getComputedStyle(a).getPropertyValue(\"font-weight\"))),border:null,color:ie(Number(e[0]),Number(e[1]),Number(e[2])),fill:{color:ie(Number(t[0]),Number(t[1]),Number(t[2]))},fontFace:(window.getComputedStyle(a).getPropertyValue(\"font-family\")||\"\").split(\",\")[0].replace(/\"/g,\"\").replace(\"inherit\",\"\").replace(\"initial\",\"\")||null,fontSize:Number(window.getComputedStyle(a).getPropertyValue(\"font-size\").replace(/[a-z]/gi,\"\")),margin:null,colspan:Number(a.getAttribute(\"colspan\"))||null,rowspan:Number(a.getAttribute(\"rowspan\"))||null,valign:null});[\"left\",\"center\",\"right\",\"start\",\"end\"].includes(window.getComputedStyle(a).getPropertyValue(\"text-align\"))&&(e=window.getComputedStyle(a).getPropertyValue(\"text-align\").replace(\"start\",\"left\").replace(\"end\",\"right\"),n.align=\"center\"===e?\"center\":\"left\"===e?\"left\":\"right\"===e?\"right\":null),[\"top\",\"middle\",\"bottom\"].includes(window.getComputedStyle(a).getPropertyValue(\"vertical-align\"))&&(e=window.getComputedStyle(a).getPropertyValue(\"vertical-align\"),n.valign=\"top\"===e?\"top\":\"middle\"===e?\"middle\":\"bottom\"===e?\"bottom\":null),window.getComputedStyle(a).getPropertyValue(\"padding-left\")&&(n.margin=[0,0,0,0],[\"padding-top\",\"padding-right\",\"padding-bottom\",\"padding-left\"].forEach((e,t)=>{n.margin[t]=Math.round(Number(window.getComputedStyle(a).getPropertyValue(e).replace(/\\D/gi,\"\")))})),(window.getComputedStyle(a).getPropertyValue(\"border-top-width\")||window.getComputedStyle(a).getPropertyValue(\"border-right-width\")||window.getComputedStyle(a).getPropertyValue(\"border-bottom-width\")||window.getComputedStyle(a).getPropertyValue(\"border-left-width\"))&&(n.border=[null,null,null,null],[\"top\",\"right\",\"bottom\",\"left\"].forEach((e,t)=>{var r=Math.round(Number(window.getComputedStyle(a).getPropertyValue(\"border-\"+e+\"-width\").replace(\"px\",\"\"))),e=window.getComputedStyle(a).getPropertyValue(\"border-\"+e+\"-color\").replace(/\\s+/gi,\"\").replace(\"rgba(\",\"\").replace(\"rgb(\",\"\").replace(\")\",\"\").split(\",\"),e=ie(Number(e[0]),Number(e[1]),Number(e[2]));n.border[t]={pt:r,color:e}})),r.push({_type:I.tablecell,text:a.innerText,options:n})}),t){case\"thead\":o.push(r);break;case\"tbody\":i.push(r);break;case\"tfoot\":s.push(r);break;default:console.log(\"table parsing: unexpected table part: \"+t)}})}),a._arrObjTabHeadRows=o||null,a.colW=A,Ae([...o,...i,...s],a,u.presLayout,d).forEach((e,t)=>{var r=u.addSlide({masterName:a.masterSlideName||null});0===t&&(a.y=a.y||l[0]),0 opts.y = `+a.y),r.addTable(e.rows,{x:a.x||l[3],y:a.y,w:Number(n)/F,colW:A,autoPage:!1}),a.addImage&&(a.addImage.options=a.addImage.options||{},a.addImage.image&&(a.addImage.image.path||a.addImage.image.data)?r.addImage({path:a.addImage.image.path,data:a.addImage.image.data,x:a.addImage.options.x,y:a.addImage.options.y,w:a.addImage.options.w,h:a.addImage.options.h}):console.warn(\"Warning: tableToSlides.addImage requires either `path` or `data`\")),a.addShape&&r.addShape(a.addShape.shapeName,a.addShape.options||{}),a.addTable&&r.addTable(a.addTable.rows,a.addTable.options||{}),a.addText&&r.addText(a.addText.text,a.addText.options||{})})}}}return Fe})(JSZip);"],"file":"pptxgen.bundle.js"} \ No newline at end of file +{"version":3,"names":[],"mappings":"","sources":["pptxgen.bundle.js"],"sourcesContent":["/* PptxGenJS 1.0.3 @ 2025-12-16T06:04:54.224Z */\n!function(e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).JSZip=e()}(function(){return function a(n,o,i){function s(t,e){if(!o[t]){if(!n[t]){var r=\"function\"==typeof require&&require;if(!e&&r)return r(t,!0);if(A)return A(t,!0);e=new Error(\"Cannot find module '\"+t+\"'\");throw e.code=\"MODULE_NOT_FOUND\",e}r=o[t]={exports:{}};n[t][0].call(r.exports,function(e){return s(n[t][1][e]||e)},r,r.exports,a,n,o,i)}return o[t].exports}for(var A=\"function\"==typeof require&&require,e=0;e>4,o=1>6:64,i=2>2)+u.charAt(n)+u.charAt(o)+u.charAt(i));return s.join(\"\")},r.decode=function(e){var t,r,a,n,o,i=0,s=0,A=\"data:\";if(e.substr(0,A.length)===A)throw new Error(\"Invalid base64 input, it looks like a data url.\");var l,A=3*(e=e.replace(/[^A-Za-z0-9+/=]/g,\"\")).length/4;if(e.charAt(e.length-1)===u.charAt(64)&&A--,e.charAt(e.length-2)===u.charAt(64)&&A--,A%1!=0)throw new Error(\"Invalid base64 input, bad content length.\");for(l=new(c.uint8array?Uint8Array:Array)(0|A);i>4,r=(15&n)<<4|(n=u.indexOf(e.charAt(i++)))>>2,a=(3&n)<<6|(o=u.indexOf(e.charAt(i++))),l[s++]=t,64!==n&&(l[s++]=r),64!==o&&(l[s++]=a);return l}},{\"./support\":30,\"./utils\":32}],2:[function(e,t,r){var a=e(\"./external\"),n=e(\"./stream/DataWorker\"),o=e(\"./stream/Crc32Probe\"),i=e(\"./stream/DataLengthProbe\");function s(e,t,r,a,n){this.compressedSize=e,this.uncompressedSize=t,this.crc32=r,this.compression=a,this.compressedContent=n}s.prototype={getContentWorker:function(){var e=new n(a.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new i(\"data_length\")),t=this;return e.on(\"end\",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error(\"Bug : uncompressed data size mismatch\")}),e},getCompressedWorker:function(){return new n(a.Promise.resolve(this.compressedContent)).withStreamInfo(\"compressedSize\",this.compressedSize).withStreamInfo(\"uncompressedSize\",this.uncompressedSize).withStreamInfo(\"crc32\",this.crc32).withStreamInfo(\"compression\",this.compression)}},s.createWorkerFrom=function(e,t,r){return e.pipe(new o).pipe(new i(\"uncompressedSize\")).pipe(t.compressWorker(r)).pipe(new i(\"compressedSize\")).withStreamInfo(\"compression\",t)},t.exports=s},{\"./external\":6,\"./stream/Crc32Probe\":25,\"./stream/DataLengthProbe\":26,\"./stream/DataWorker\":27}],3:[function(e,t,r){var a=e(\"./stream/GenericWorker\");r.STORE={magic:\"\\0\\0\",compressWorker:function(){return new a(\"STORE compression\")},uncompressWorker:function(){return new a(\"STORE decompression\")}},r.DEFLATE=e(\"./flate\")},{\"./flate\":7,\"./stream/GenericWorker\":28}],4:[function(e,t,r){var a=e(\"./utils\"),i=(()=>{for(var e=[],t=0;t<256;t++){for(var r=t,a=0;a<8;a++)r=1&r?3988292384^r>>>1:r>>>1;e[t]=r}return e})();t.exports=function(e,t){return void 0!==e&&e.length?(\"string\"!==a.getTypeOf(e)?(e,t,r)=>{var a=i,n=0+r;e^=-1;for(var o=0;o>>8^a[255&(e^t[o])];return-1^e}:(e,t,r)=>{var a=i,n=0+r;e^=-1;for(var o=0;o>>8^a[255&(e^t.charCodeAt(o))];return-1^e})(0|t,e,e.length):0}},{\"./utils\":32}],5:[function(e,t,r){r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],6:[function(e,t,r){e=\"undefined\"!=typeof Promise?Promise:e(\"lie\");t.exports={Promise:e}},{lie:37}],7:[function(e,t,r){var a=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Uint32Array,n=e(\"pako\"),o=e(\"./utils\"),i=e(\"./stream/GenericWorker\"),s=a?\"uint8array\":\"array\";function A(e,t){i.call(this,\"FlateWorker/\"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}r.magic=\"\\b\\0\",o.inherits(A,i),A.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(o.transformTo(s,e.data),!1)},A.prototype.flush=function(){i.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},A.prototype.cleanUp=function(){i.prototype.cleanUp.call(this),this._pako=null},A.prototype._createPako=function(){this._pako=new n[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var t=this;this._pako.onData=function(e){t.push({data:e,meta:t.meta})}},r.compressWorker=function(e){return new A(\"Deflate\",e)},r.uncompressWorker=function(){return new A(\"Inflate\",{})}},{\"./stream/GenericWorker\":28,\"./utils\":32,pako:38}],8:[function(e,t,r){function v(e,t){for(var r=\"\",a=0;a>>=8;return r}function a(e,t,r,a,n,o){var i=e.file,s=e.compression,A=o!==b.utf8encode,l=y.transformTo(\"string\",o(i.name)),c=y.transformTo(\"string\",b.utf8encode(i.name)),p=i.comment,o=y.transformTo(\"string\",o(p)),u=y.transformTo(\"string\",b.utf8encode(p)),f=c.length!==i.name.length,p=u.length!==p.length,d=\"\",h=i.dir,g=i.date,m={crc32:0,compressedSize:0,uncompressedSize:0},r=(t&&!r||(m.crc32=e.crc32,m.compressedSize=e.compressedSize,m.uncompressedSize=e.uncompressedSize),0),e=(t&&(r|=8),A||!f&&!p||(r|=2048),0),t=0,g=(h&&(e|=16),\"UNIX\"===n?(t=798,e|=(65535&((A=i.unixPermissions)?A:h?16893:33204))<<16):(t=20,e|=63&(i.dosPermissions||0)),n=g.getUTCHours(),n=(n=((n<<=6)|g.getUTCMinutes())<<5)|g.getUTCSeconds()/2,A=g.getUTCFullYear()-1980,A=(A=((A<<=4)|g.getUTCMonth()+1)<<5)|g.getUTCDate(),f&&(h=v(1,1)+v(x(l),4)+c,d+=\"up\"+v(h.length,2)+h),p&&(i=v(1,1)+v(x(o),4)+u,d+=\"uc\"+v(i.length,2)+i),\"\"),g=(g=(g=(g=(g=(g=(g=(g=(g=(g+=\"\\n\\0\")+v(r,2))+s.magic)+v(n,2))+v(A,2))+v(m.crc32,4))+v(m.compressedSize,4))+v(m.uncompressedSize,4))+v(l.length,2))+v(d.length,2);return{fileRecord:w.LOCAL_FILE_HEADER+g+l+d,dirRecord:w.CENTRAL_FILE_HEADER+v(t,2)+g+v(o.length,2)+\"\\0\\0\\0\\0\"+v(e,4)+v(a,4)+l+d+o}}var y=e(\"../utils\"),n=e(\"../stream/GenericWorker\"),b=e(\"../utf8\"),x=e(\"../crc32\"),w=e(\"../signature\");function o(e,t,r,a){n.call(this,\"ZipFileWorker\"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=r,this.encodeFileName=a,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}y.inherits(o,n),o.prototype.push=function(e){var t=e.meta.percent||0,r=this.entriesCount,a=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,n.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:r?(t+100*(r-a-1))/r:100}}))},o.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;t?(e=a(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName),this.push({data:e.fileRecord,meta:{percent:0}})):this.accumulate=!0},o.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,r=a(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(r.dirRecord),t)this.push({data:(t=e,w.DATA_DESCRIPTOR+v(t.crc32,4)+v(t.compressedSize,4)+v(t.uncompressedSize,4)),meta:{percent:100}});else for(this.push({data:r.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},o.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t(n=y.transformTo(\"string\",n(a)),w.CENTRAL_DIRECTORY_END+\"\\0\\0\\0\\0\"+v(e,2)+v(e,2)+v(t,4)+v(r,4)+v(n.length,2)+n))(this.dirRecords.length,r,e,this.zipComment,this.encodeFileName);this.push({data:r,meta:{percent:100}})},o.prototype.prepareNextSource=function(){this.previous=this._sources.shift(),this.openedSource(this.previous.streamInfo),this.isPaused?this.previous.pause():this.previous.resume()},o.prototype.registerPrevious=function(e){this._sources.push(e);var t=this;return e.on(\"data\",function(e){t.processChunk(e)}),e.on(\"end\",function(){t.closedSource(t.previous.streamInfo),t._sources.length?t.prepareNextSource():t.end()}),e.on(\"error\",function(e){t.error(e)}),this},o.prototype.resume=function(){return!!n.prototype.resume.call(this)&&(!this.previous&&this._sources.length?(this.prepareNextSource(),!0):this.previous||this._sources.length||this.generatedError?void 0:(this.end(),!0))},o.prototype.error=function(e){var t=this._sources;if(!n.prototype.error.call(this,e))return!1;for(var r=0;r{if(t=l[e=e||t])return t;throw new Error(e+\" is not a valid compression method !\")})(t.options.compression,i.compression),a=t.options.compressionOptions||i.compressionOptions||{},n=t.dir,o=t.date;t._compressWorker(r,a).withStreamInfo(\"file\",{name:e,dir:n,date:o,comment:t.comment||\"\",unixPermissions:t.unixPermissions,dosPermissions:t.dosPermissions}).pipe(s)}),s.entriesCount=A}catch(e){s.error(e)}return s}},{\"../compressions\":3,\"./ZipFileWorker\":8}],10:[function(e,t,r){function a(){if(!(this instanceof a))return new a;if(arguments.length)throw new Error(\"The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.\");this.files=Object.create(null),this.comment=null,this.root=\"\",this.clone=function(){var e,t=new a;for(e in this)\"function\"!=typeof this[e]&&(t[e]=this[e]);return t}}(a.prototype=e(\"./object\")).loadAsync=e(\"./load\"),a.support=e(\"./support\"),a.defaults=e(\"./defaults\"),a.version=\"3.10.1\",a.loadAsync=function(e,t){return(new a).loadAsync(e,t)},a.external=e(\"./external\"),t.exports=a},{\"./defaults\":5,\"./external\":6,\"./load\":11,\"./object\":15,\"./support\":30}],11:[function(e,t,r){var A=e(\"./utils\"),n=e(\"./external\"),a=e(\"./utf8\"),o=e(\"./zipEntries\"),l=e(\"./stream/Crc32Probe\"),c=e(\"./nodejsUtils\");t.exports=function(e,i){var s=this;return i=A.extend(i||{},{base64:!1,checkCRC32:!1,optimizedBinaryString:!1,createFolders:!1,decodeFileName:a.utf8decode}),c.isNode&&c.isStream(e)?n.Promise.reject(new Error(\"JSZip can't accept a stream when loading a zip file.\")):A.prepareContent(\"the loaded zip file\",e,!0,i.optimizedBinaryString,i.base64).then(function(e){var t=new o(i);return t.load(e),t}).then(function(e){var t=[n.Promise.resolve(e)],r=e.files;if(i.checkCRC32)for(var a=0;anew n.Promise(function(e,t){var r=a.decompressed.getContentWorker().pipe(new l);r.on(\"error\",function(e){t(e)}).on(\"end\",function(){r.streamInfo.crc32!==a.decompressed.crc32?t(new Error(\"Corrupted zip : CRC32 mismatch\")):e()}).resume()}))(r[a]));return n.Promise.all(t)}).then(function(e){for(var e=e.shift(),t=e.files,r=0;r=this.index;t--)r=(r<<8)+this.byteAt(t);return this.index+=e,r},readString:function(e){return a.transformTo(\"string\",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=n},{\"../utils\":32}],19:[function(e,t,r){var a=e(\"./Uint8ArrayReader\");function n(e){a.call(this,e)}e(\"../utils\").inherits(n,a),n.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=n},{\"../utils\":32,\"./Uint8ArrayReader\":21}],20:[function(e,t,r){var a=e(\"./DataReader\");function n(e){a.call(this,e)}e(\"../utils\").inherits(n,a),n.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},n.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},n.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},n.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=n},{\"../utils\":32,\"./DataReader\":18}],21:[function(e,t,r){var a=e(\"./ArrayReader\");function n(e){a.call(this,e)}e(\"../utils\").inherits(n,a),n.prototype.readData=function(e){var t;return this.checkOffset(e),0===e?new Uint8Array(0):(t=this.data.subarray(this.zero+this.index,this.zero+this.index+e),this.index+=e,t)},t.exports=n},{\"../utils\":32,\"./ArrayReader\":17}],22:[function(e,t,r){var a=e(\"../utils\"),n=e(\"../support\"),o=e(\"./ArrayReader\"),i=e(\"./StringReader\"),s=e(\"./NodeBufferReader\"),A=e(\"./Uint8ArrayReader\");t.exports=function(e){var t=a.getTypeOf(e);return a.checkSupport(t),\"string\"!==t||n.uint8array?\"nodebuffer\"===t?new s(e):n.uint8array?new A(a.transformTo(\"uint8array\",e)):new o(a.transformTo(\"array\",e)):new i(e)}},{\"../support\":30,\"../utils\":32,\"./ArrayReader\":17,\"./NodeBufferReader\":19,\"./StringReader\":20,\"./Uint8ArrayReader\":21}],23:[function(e,t,r){r.LOCAL_FILE_HEADER=\"PK\u0003\u0004\",r.CENTRAL_FILE_HEADER=\"PK\u0001\u0002\",r.CENTRAL_DIRECTORY_END=\"PK\u0005\u0006\",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR=\"PK\u0006\u0007\",r.ZIP64_CENTRAL_DIRECTORY_END=\"PK\u0006\u0006\",r.DATA_DESCRIPTOR=\"PK\u0007\\b\"},{}],24:[function(e,t,r){var a=e(\"./GenericWorker\"),n=e(\"../utils\");function o(e){a.call(this,\"ConvertWorker to \"+e),this.destType=e}n.inherits(o,a),o.prototype.processChunk=function(e){this.push({data:n.transformTo(this.destType,e.data),meta:e.meta})},t.exports=o},{\"../utils\":32,\"./GenericWorker\":28}],25:[function(e,t,r){var a=e(\"./GenericWorker\"),n=e(\"../crc32\");function o(){a.call(this,\"Crc32Probe\"),this.withStreamInfo(\"crc32\",0)}e(\"../utils\").inherits(o,a),o.prototype.processChunk=function(e){this.streamInfo.crc32=n(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=o},{\"../crc32\":4,\"../utils\":32,\"./GenericWorker\":28}],26:[function(e,t,r){var a=e(\"../utils\"),n=e(\"./GenericWorker\");function o(e){n.call(this,\"DataLengthProbe for \"+e),this.propName=e,this.withStreamInfo(e,0)}a.inherits(o,n),o.prototype.processChunk=function(e){var t;e&&(t=this.streamInfo[this.propName]||0,this.streamInfo[this.propName]=t+e.data.length),n.prototype.processChunk.call(this,e)},t.exports=o},{\"../utils\":32,\"./GenericWorker\":28}],27:[function(e,t,r){var a=e(\"../utils\"),n=e(\"./GenericWorker\");function o(e){n.call(this,\"DataWorker\");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type=\"\",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=a.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}a.inherits(o,n),o.prototype.cleanUp=function(){n.prototype.cleanUp.call(this),this.data=null},o.prototype.resume=function(){return!!n.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,a.delay(this._tickAndRepeat,[],this)),!0)},o.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished)||(a.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0)},o.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case\"string\":e=this.data.substring(this.index,t);break;case\"uint8array\":e=this.data.subarray(this.index,t);break;case\"array\":case\"nodebuffer\":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=o},{\"../utils\":32,\"./GenericWorker\":28}],28:[function(e,t,r){function a(e){this.name=e||\"default\",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}a.prototype={push:function(e){this.emit(\"data\",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit(\"end\"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit(\"error\",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit(\"error\",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var r=0;r \"+e:e}},t.exports=a},{}],29:[function(e,t,r){var A=e(\"../utils\"),n=e(\"./ConvertWorker\"),o=e(\"./GenericWorker\"),l=e(\"../base64\"),a=e(\"../support\"),i=e(\"../external\"),s=null;if(a.nodestream)try{s=e(\"../nodejs/NodejsStreamOutputAdapter\")}catch(e){}function c(e,s){return new i.Promise(function(t,r){var a=[],n=e._internalType,o=e._outputType,i=e._mimeType;e.on(\"data\",function(e,t){a.push(e),s&&s(t)}).on(\"error\",function(e){a=[],r(e)}).on(\"end\",function(){try{var e=((e,t,r)=>{switch(e){case\"blob\":return A.newBlob(A.transformTo(\"arraybuffer\",t),r);case\"base64\":return l.encode(t);default:return A.transformTo(e,t)}})(o,((e,t)=>{for(var r=0,a=null,n=0,o=0;o>>6:(r<65536?t[n++]=224|r>>>12:(t[n++]=240|r>>>18,t[n++]=128|r>>>12&63),t[n++]=128|r>>>6&63),t[n++]=128|63&r);return t},n.utf8decode=function(e){if(l.nodebuffer)return A.transformTo(\"nodebuffer\",e).toString(\"utf-8\");for(var t,r,a,n=e=A.transformTo(l.uint8array?\"uint8array\":\"array\",e),o=n.length,i=new Array(2*o),s=t=0;s>10&1023,i[t++]=56320|1023&r)}return i.length!==t&&(i.subarray?i=i.subarray(0,t):i.length=t),A.applyFromCharCode(i)},A.inherits(o,r),o.prototype.processChunk=function(e){var t=A.transformTo(l.uint8array?\"uint8array\":\"array\",e.data),r=(this.leftOver&&this.leftOver.length&&(l.uint8array?(r=t,(t=new Uint8Array(r.length+this.leftOver.length)).set(this.leftOver,0),t.set(r,this.leftOver.length)):t=this.leftOver.concat(t),this.leftOver=null),((e,t)=>{for(var r=(t=(t=t||e.length)>e.length?e.length:t)-1;0<=r&&128==(192&e[r]);)r--;return!(r<0)&&0!==r&&r+p[e[r]]>t?r:t})(t)),a=t;r!==t.length&&(l.uint8array?(a=t.subarray(0,r),this.leftOver=t.subarray(r,t.length)):(a=t.slice(0,r),this.leftOver=t.slice(r,t.length))),this.push({data:n.utf8decode(a),meta:e.meta})},o.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:n.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},n.Utf8DecodeWorker=o,A.inherits(i,r),i.prototype.processChunk=function(e){this.push({data:n.utf8encode(e.data),meta:e.meta})},n.Utf8EncodeWorker=i},{\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./support\":30,\"./utils\":32}],32:[function(e,t,i){var s=e(\"./support\"),A=e(\"./base64\"),r=e(\"./nodejsUtils\"),l=e(\"./external\");function a(e){return e}function c(e,t){for(var r=0;r{try{return s.uint8array&&1===String.fromCharCode.apply(null,new Uint8Array(1)).length}catch(e){return!1}})(),nodebuffer:(()=>{try{return s.nodebuffer&&1===String.fromCharCode.apply(null,r.allocBuffer(1)).length}catch(e){return!1}})()}};function o(e){var t=65536,r=i.getTypeOf(e),a=!0;if(\"uint8array\"===r?a=n.applyCanBeUsed.uint8array:\"nodebuffer\"===r&&(a=n.applyCanBeUsed.nodebuffer),a)for(;1{for(var t in A)if(Object.prototype.hasOwnProperty.call(A,t)&&A[t].magic===e)return A[t];return null})(this.compressionMethod)))throw new Error(\"Corrupted zip : compression \"+n.pretty(this.compressionMethod)+\" unknown (inner file : \"+n.transformTo(\"string\",this.fileName)+\")\");this.decompressed=new o(this.compressedSize,this.uncompressedSize,this.crc32,t,e.readData(this.compressedSize))},readCentralPart:function(e){this.versionMadeBy=e.readInt(2),e.skip(2),this.bitFlag=e.readInt(2),this.compressionMethod=e.readString(2),this.date=e.readDate(),this.crc32=e.readInt(4),this.compressedSize=e.readInt(4),this.uncompressedSize=e.readInt(4);var t=e.readInt(2);if(this.extraFieldsLength=e.readInt(2),this.fileCommentLength=e.readInt(2),this.diskNumberStart=e.readInt(2),this.internalFileAttributes=e.readInt(2),this.externalFileAttributes=e.readInt(4),this.localHeaderOffset=e.readInt(4),this.isEncrypted())throw new Error(\"Encrypted zip are not supported\");e.skip(t),this.readExtraFields(e),this.parseZIP64ExtraField(e),this.fileComment=e.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var e=this.versionMadeBy>>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||\"/\"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){var e;this.extraFields[1]&&(e=a(this.extraFields[1].value),this.uncompressedSize===n.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===n.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===n.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===n.MAX_VALUE_32BITS)&&(this.diskNumberStart=e.readInt(4))},readExtraFields:function(e){var t,r,a,n=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4{r.resolve(e).then(function(e){o[t]=e,++i!==a||n||(n=!0,l.resolve(s,o))},function(e){n||(n=!0,l.reject(s,e))})})(e[t],t);return s},s.race=function(e){if(\"[object Array]\"!==Object.prototype.toString.call(e))return this.reject(new TypeError(\"must be an array\"));var t=e.length,r=!1;if(!t)return this.resolve([]);for(var a,n=-1,o=new this(A);++n>>6:(r<65536?t[n++]=224|r>>>12:(t[n++]=240|r>>>18,t[n++]=128|r>>>12&63),t[n++]=128|r>>>6&63),t[n++]=128|63&r);return t},r.buf2binstring=function(e){return c(e,e.length)},r.binstring2buf=function(e){for(var t=new A.Buf8(e.length),r=0,a=t.length;r>10&1023,i[r++]=56320|1023&a)}return c(i,r)},r.utf8border=function(e,t){for(var r=(t=(t=t||e.length)>e.length?e.length:t)-1;0<=r&&128==(192&e[r]);)r--;return!(r<0)&&0!==r&&r+l[e[r]]>t?r:t}},{\"./common\":41}],43:[function(e,t,r){t.exports=function(e,t,r,a){for(var n=65535&e|0,o=e>>>16&65535|0,i=0;0!==r;){for(r-=i=2e3{for(var e=[],t=0;t<256;t++){for(var r=t,a=0;a<8;a++)r=1&r?3988292384^r>>>1:r>>>1;e[t]=r}return e})();t.exports=function(e,t,r,a){var n=s,o=a+r;e^=-1;for(var i=a;i>>8^n[255&(e^t[i])];return-1^e}},{}],46:[function(e,R,t){var s,p=e(\"../utils/common\"),A=e(\"./trees\"),u=e(\"./adler32\"),f=e(\"./crc32\"),r=e(\"./messages\"),l=0,c=0,d=-2,a=2,h=8,n=286,o=30,i=19,O=2*n+1,M=15,g=3,m=258,v=m+g+1,y=42,b=113;function x(e,t){return e.msg=r[t],t}function w(e){return(e<<1)-(4>>8&255,e.pending_buf[e.pending++]=255&t}function T(e,t){var r,a,n=e.max_chain_length,o=e.strstart,i=e.prev_length,s=e.nice_match,A=e.w_size-v>=2),e.lookaheadA&&0!=--n);return i<=e.lookahead?i:e.lookahead}function B(e){var t,r,a,n,o,i,s,A,l,c=e.w_size;do{if(A=e.window_size-e.lookahead-e.strstart,c+(c-v)<=e.strstart){for(p.arraySet(e.window,e.window,c,c,0),e.match_start-=c,e.strstart-=c,e.block_start-=c,t=r=e.hash_size;a=e.head[--t],e.head[t]=c<=a?a-c:0,--r;);for(t=r=c;a=e.prev[--t],e.prev[t]=c<=a?a-c:0,--r;);A+=c}if(0===e.strm.avail_in)break;if(i=e.window,s=e.strstart+e.lookahead,l=void 0,r=0===(l=(A=A)<(l=(o=e.strm).avail_in)?A:l)?0:(o.avail_in-=l,p.arraySet(i,o.input,o.next_in,l,s),1===o.state.wrap?o.adler=u(o.adler,i,l,s):2===o.state.wrap&&(o.adler=f(o.adler,i,l,s)),o.next_in+=l,o.total_in+=l,l),e.lookahead+=r,g<=e.lookahead+e.insert)for(n=e.strstart-e.insert,e.ins_h=e.window[n],e.ins_h=(e.ins_h<=g){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(B(e),0===e.lookahead&&t===l)return 1;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var a=e.block_start+r;if((0===e.strstart||e.strstart>=a)&&(e.lookahead=e.strstart-a,e.strstart=a,S(e,!1),0===e.strm.avail_out))return 1;if(e.w_size-v<=e.strstart-e.block_start&&(S(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(S(e,!0),0===e.strm.avail_out?3:4):(e.strstart>e.block_start&&(S(e,!1),e.strm.avail_out),1)}),new _(4,4,8,4,D),new _(4,5,16,8,D),new _(4,6,32,32,D),new _(4,4,16,16,k),new _(8,16,32,32,k),new _(8,16,128,128,k),new _(8,32,128,256,k),new _(32,128,258,1024,k),new _(32,258,258,4096,k)],t.deflateInit=function(e,t){return I(e,t,h,15,8,0)},t.deflateInit2=I,t.deflateReset=F,t.deflateResetKeep=N,t.deflateSetHeader=function(e,t){return!e||!e.state||2!==e.state.wrap?d:(e.state.gzhead=t,c)},t.deflate=function(e,t){var r,a,n,o;if(!e||!e.state||5>8&255),L(a,a.gzhead.time>>16&255),L(a,a.gzhead.time>>24&255),L(a,9===a.level?2:2<=a.strategy||a.level<2?4:0),L(a,255&a.gzhead.os),a.gzhead.extra&&a.gzhead.extra.length&&(L(a,255&a.gzhead.extra.length),L(a,a.gzhead.extra.length>>8&255)),a.gzhead.hcrc&&(e.adler=f(e.adler,a.pending_buf,a.pending,0)),a.gzindex=0,a.status=69):(L(a,0),L(a,0),L(a,0),L(a,0),L(a,0),L(a,9===a.level?2:2<=a.strategy||a.level<2?4:0),L(a,3),a.status=b)):(i=h+(a.w_bits-8<<4)<<8,i|=(2<=a.strategy||a.level<2?0:a.level<6?1:6===a.level?2:3)<<6,0!==a.strstart&&(i|=32),i+=31-i%31,a.status=b,E(a,i),0!==a.strstart&&(E(a,e.adler>>>16),E(a,65535&e.adler)),e.adler=1)),69===a.status)if(a.gzhead.extra){for(n=a.pending;a.gzindex<(65535&a.gzhead.extra.length)&&(a.pending!==a.pending_buf_size||(a.gzhead.hcrc&&a.pending>n&&(e.adler=f(e.adler,a.pending_buf,a.pending-n,n)),P(e),n=a.pending,a.pending!==a.pending_buf_size));)L(a,255&a.gzhead.extra[a.gzindex]),a.gzindex++;a.gzhead.hcrc&&a.pending>n&&(e.adler=f(e.adler,a.pending_buf,a.pending-n,n)),a.gzindex===a.gzhead.extra.length&&(a.gzindex=0,a.status=73)}else a.status=73;if(73===a.status)if(a.gzhead.name){n=a.pending;do{if(a.pending===a.pending_buf_size&&(a.gzhead.hcrc&&a.pending>n&&(e.adler=f(e.adler,a.pending_buf,a.pending-n,n)),P(e),n=a.pending,a.pending===a.pending_buf_size)){o=1;break}}while(o=a.gzindexn&&(e.adler=f(e.adler,a.pending_buf,a.pending-n,n)),0===o&&(a.gzindex=0,a.status=91)}else a.status=91;if(91===a.status)if(a.gzhead.comment){n=a.pending;do{if(a.pending===a.pending_buf_size&&(a.gzhead.hcrc&&a.pending>n&&(e.adler=f(e.adler,a.pending_buf,a.pending-n,n)),P(e),n=a.pending,a.pending===a.pending_buf_size)){o=1;break}}while(o=a.gzindexn&&(e.adler=f(e.adler,a.pending_buf,a.pending-n,n)),0===o&&(a.status=103)}else a.status=103;if(103===a.status&&(a.gzhead.hcrc?(a.pending+2>a.pending_buf_size&&P(e),a.pending+2<=a.pending_buf_size&&(L(a,255&e.adler),L(a,e.adler>>8&255),e.adler=0,a.status=b)):a.status=b),0!==a.pending){if(P(e),0===e.avail_out)return a.last_flush=-1,c}else if(0===e.avail_in&&w(t)<=w(r)&&4!==t)return x(e,-5);if(666===a.status&&0!==e.avail_in)return x(e,-5);if(0!==e.avail_in||0!==a.lookahead||t!==l&&666!==a.status){var i=2===a.strategy?((e,t)=>{for(var r;;){if(0===e.lookahead&&(B(e),0===e.lookahead)){if(t===l)return 1;break}if(e.match_length=0,r=A._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(S(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(S(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(S(e,!1),0===e.strm.avail_out)?1:2})(a,t):3===a.strategy?((e,t)=>{for(var r,a,n,o,i=e.window;;){if(e.lookahead<=m){if(B(e),e.lookahead<=m&&t===l)return 1;if(0===e.lookahead)break}if(e.match_length=0,g<=e.lookahead&&0>8&255),L(a,e.adler>>16&255),L(a,e.adler>>24&255),L(a,255&e.total_in),L(a,e.total_in>>8&255),L(a,e.total_in>>16&255),L(a,e.total_in>>24&255)):(E(a,e.adler>>>16),E(a,65535&e.adler)),P(e),0=g;){for(a=r.strstart,n=r.lookahead-(g-1);r.ins_h=(r.ins_h<>>=a=r>>>24,w-=a,0==(a=r>>>16&255))f[u++]=65535&r;else{if(!(16&a)){if(0==(64&a)){r=C[(65535&r)+(x&(1<>>=a,w-=a),w<15&&(x+=c[l++]<>>=a=r>>>24,w-=a,!(16&(a=r>>>16&255))){if(0==(64&a)){r=P[(65535&r)+(x&(1<>>=a,w-=a,(a=u-d)>3,x&=(1<<(w-=n<<3))-1,e.next_in=l,e.next_out=u,e.avail_in=l>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function o(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new k.Buf16(320),this.work=new k.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function i(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=\"\",t.wrap&&(e.adler=1&t.wrap),t.mode=M,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new k.Buf32(a),t.distcode=t.distdyn=new k.Buf32(n),t.sane=1,t.back=-1,R):O}function s(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,i(e)):O}function A(e,t){var r,a;return!e||!e.state||(a=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15>>8&255,r.check=N(r.check,E,2,0),c=l=0,r.mode=2;else if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&l)<<8)+(l>>8))%31)e.msg=\"incorrect header check\",r.mode=30;else if(8!=(15&l))e.msg=\"unknown compression method\",r.mode=30;else{if(c-=4,w=8+(15&(l>>>=4)),0===r.wbits)r.wbits=w;else if(w>r.wbits){e.msg=\"invalid window size\",r.mode=30;break}r.dmax=1<>8&1),512&r.flags&&(E[0]=255&l,E[1]=l>>>8&255,r.check=N(r.check,E,2,0)),c=l=0,r.mode=3;case 3:for(;c<32;){if(0===s)break e;s--,l+=a[o++]<>>8&255,E[2]=l>>>16&255,E[3]=l>>>24&255,r.check=N(r.check,E,4,0)),c=l=0,r.mode=4;case 4:for(;c<16;){if(0===s)break e;s--,l+=a[o++]<>8),512&r.flags&&(E[0]=255&l,E[1]=l>>>8&255,r.check=N(r.check,E,2,0)),c=l=0,r.mode=5;case 5:if(1024&r.flags){for(;c<16;){if(0===s)break e;s--,l+=a[o++]<>>8&255,r.check=N(r.check,E,2,0)),c=l=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&((f=s<(f=r.length)?s:f)&&(r.head&&(w=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),k.arraySet(r.head.extra,a,o,f,w)),512&r.flags&&(r.check=N(r.check,a,f,o)),s-=f,o+=f,r.length-=f),r.length))break e;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===s)break e;for(f=0;w=a[o+f++],r.head&&w&&r.length<65536&&(r.head.name+=String.fromCharCode(w)),w&&f>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=12;break;case 10:for(;c<32;){if(0===s)break e;s--,l+=a[o++]<>>=7&c,c-=7&c,r.mode=27;else{for(;c<3;){if(0===s)break e;s--,l+=a[o++]<>>=1)){case 0:r.mode=14;break;case 1:B=D=void 0;var B,D=r;if(G){for(U=new k.Buf32(512),j=new k.Buf32(32),B=0;B<144;)D.lens[B++]=8;for(;B<256;)D.lens[B++]=9;for(;B<280;)D.lens[B++]=7;for(;B<288;)D.lens[B++]=8;for(I(1,D.lens,0,288,U,0,D.work,{bits:9}),B=0;B<32;)D.lens[B++]=5;I(2,D.lens,0,32,j,0,D.work,{bits:5}),G=!1}if(D.lencode=U,D.lenbits=9,D.distcode=j,D.distbits=5,r.mode=20,6!==t)break;l>>>=2,c-=2;break e;case 2:r.mode=17;break;case 3:e.msg=\"invalid block type\",r.mode=30}l>>>=2,c-=2}break;case 14:for(l>>>=7&c,c-=7&c;c<32;){if(0===s)break e;s--,l+=a[o++]<>>16^65535)){e.msg=\"invalid stored block lengths\",r.mode=30;break}if(r.length=65535&l,c=l=0,r.mode=15,6===t)break e;case 15:r.mode=16;case 16:if(f=r.length){if(0===(f=A<(f=s>>=5,c-=5,r.ndist=1+(31&l),l>>>=5,c-=5,r.ncode=4+(15&l),l>>>=4,c-=4,286>>=3,c-=3}for(;r.have<19;)r.lens[T[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,P={bits:r.lenbits},C=I(0,r.lens,0,19,r.lencode,0,r.work,P),r.lenbits=P.bits,C){e.msg=\"invalid code lengths set\",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have>>16&255,v=65535&L,!((g=L>>>24)<=c);){if(0===s)break e;s--,l+=a[o++]<>>=g,c-=g,r.lens[r.have++]=v;else{if(16===v){for(S=g+2;c>>=g,c-=g,0===r.have){e.msg=\"invalid bit length repeat\",r.mode=30;break}w=r.lens[r.have-1],f=3+(3&l),l>>>=2,c-=2}else if(17===v){for(S=g+3;c>>=g)),l>>>=3,c=c-g-3}else{for(S=g+7;c>>=g)),l>>>=7,c=c-g-7}if(r.have+f>r.nlen+r.ndist){e.msg=\"invalid bit length repeat\",r.mode=30;break}for(;f--;)r.lens[r.have++]=w}}if(30===r.mode)break;if(0===r.lens[256]){e.msg=\"invalid code -- missing end-of-block\",r.mode=30;break}if(r.lenbits=9,P={bits:r.lenbits},C=I(1,r.lens,0,r.nlen,r.lencode,0,r.work,P),r.lenbits=P.bits,C){e.msg=\"invalid literal/lengths set\",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,P={bits:r.distbits},C=I(2,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,P),r.distbits=P.bits,C){e.msg=\"invalid distances set\",r.mode=30;break}if(r.mode=20,6===t)break e;case 20:r.mode=21;case 21:if(6<=s&&258<=A){e.next_out=i,e.avail_out=A,e.next_in=o,e.avail_in=s,r.hold=l,r.bits=c,F(e,u),i=e.next_out,n=e.output,A=e.avail_out,o=e.next_in,a=e.input,s=e.avail_in,l=r.hold,c=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;m=(L=r.lencode[l&(1<>>16&255,v=65535&L,!((g=L>>>24)<=c);){if(0===s)break e;s--,l+=a[o++]<>y)])>>>16&255,v=65535&L,!(y+(g=L>>>24)<=c);){if(0===s)break e;s--,l+=a[o++]<>>=y,c-=y,r.back+=y}if(l>>>=g,c-=g,r.back+=g,r.length=v,0===m){r.mode=26;break}if(32&m){r.back=-1,r.mode=12;break}if(64&m){e.msg=\"invalid literal/length code\",r.mode=30;break}r.extra=15&m,r.mode=22;case 22:if(r.extra){for(S=r.extra;c>>=r.extra,c-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;m=(L=r.distcode[l&(1<>>16&255,v=65535&L,!((g=L>>>24)<=c);){if(0===s)break e;s--,l+=a[o++]<>y)])>>>16&255,v=65535&L,!(y+(g=L>>>24)<=c);){if(0===s)break e;s--,l+=a[o++]<>>=y,c-=y,r.back+=y}if(l>>>=g,c-=g,r.back+=g,64&m){e.msg=\"invalid distance code\",r.mode=30;break}r.offset=v,r.extra=15&m,r.mode=24;case 24:if(r.extra){for(S=r.extra;c>>=r.extra,c-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg=\"invalid distance too far back\",r.mode=30;break}r.mode=25;case 25:if(0===A)break e;if(r.offset>(f=u-A)){if((f=r.offset-f)>r.whave&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break}d=f>r.wnext?(f-=r.wnext,r.wsize-f):r.wnext-f,f>r.length&&(f=r.length),h=r.window}else h=n,d=i-r.offset,f=r.length;for(A-=f=Af?(h=_[N+i[y]],T[B+i[y]]):(h=96,0),A=1<<(d=v-P),b=l=1<>P)+(l-=A)]=d<<24|h<<16|g|0,0!==l;);for(A=1<>=1;if(0!==A?E=(E&A-1)+A:E=0,y++,0==--D[v]){if(v===x)break;v=t[r+i[y]]}if(w>>7)]}function o(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function C(e,t,r){e.bi_valid>a-r?(e.bi_buf|=t<>a-e.bi_valid,e.bi_valid+=r-a):(e.bi_buf|=t<>>=1,r<<=1,0<--t;);return r>>>1}function L(e,t,r){for(var a,n=new Array(16),o=0,i=1;i<=15;i++)n[i]=o=o+r[i-1]<<1;for(a=0;a<=t;a++){var s=e[2*a+1];0!==s&&(e[2*a]=S(n[s]++,s))}}function E(e){for(var t=0;t<286;t++)e.dyn_ltree[2*t]=0;for(t=0;t<30;t++)e.dyn_dtree[2*t]=0;for(t=0;t<19;t++)e.bl_tree[2*t]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.last_lit=e.matches=0}function T(e){8>1;1<=r;r--)B(e,o,r);for(n=A;r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],B(e,o,1),a=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=a,o[2*n]=o[2*r]+o[2*a],e.depth[n]=(e.depth[r]>=e.depth[a]?e.depth[r]:e.depth[a])+1,o[2*r+1]=o[2*a+1]=n,e.heap[1]=n++,B(e,o,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1];for(var c,p,u,f,d,h=e,g=t.dyn_tree,m=t.max_code,v=t.stat_desc.static_tree,y=t.stat_desc.has_stree,b=t.stat_desc.extra_bits,x=t.stat_desc.extra_base,w=t.stat_desc.max_length,C=0,P=0;P<=15;P++)h.bl_count[P]=0;for(g[2*h.heap[h.heap_max]+1]=0,c=h.heap_max+1;c<573;c++)w<(P=g[2*g[2*(p=h.heap[c])+1]+1]+1)&&(P=w,C++),g[2*p+1]=P,m>=7;i<30;i++)for(y[i]=n<<7,t=0;t<1<{for(var t=4093624447,r=0;r<=31;r++,t>>>=1)if(1&t&&0!==e.dyn_ltree[2*r])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(r=32;r<256;r++)if(0!==e.dyn_ltree[2*r])return 1;return 0})(e)),k(e,e.l_desc),k(e,e.d_desc),s=(e=>{var t;for(_(e,e.dyn_ltree,e.l_desc.max_code),_(e,e.dyn_dtree,e.d_desc.max_code),k(e,e.bl_desc),t=18;3<=t&&0===e.bl_tree[2*c[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t})(e),(o=e.static_len+3+7>>>3)<=(n=e.opt_len+3+7>>>3)&&(n=o)):n=o=r+5,r+4<=n&&-1!==t)I(e,t,r,a);else if(4===e.strategy||o===n)C(e,2+(a?1:0),3),D(e,p,u);else{C(e,4+(a?1:0),3);var A=e,l=(t=e.l_desc.max_code+1,r=e.d_desc.max_code+1,s+1);for(C(A,t-257,5),C(A,r-1,5),C(A,l-4,4),i=0;i>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(d[r]+256+1)]++,e.dyn_dtree[2*w(t)]++),e.last_lit===e.lit_bufsize-1},t._tr_align=function(e){C(e,2,3),P(e,256,p),16===(e=e).bi_valid?(o(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):8<=e.bi_valid&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}},{\"../utils/common\":41}],53:[function(e,t,r){t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,r){!function(e){function n(e){delete c[e]}function o(e){if(p)setTimeout(o,0,e);else{var t=c[e];if(t){p=!0;try{var r=t.callback,a=t.args;switch(a.length){case 0:r();break;case 1:r(a[0]);break;case 2:r(a[0],a[1]);break;case 3:r(a[0],a[1],a[2]);break;default:r.apply(i,a)}}finally{n(e),p=!1}}}}function t(e){e.source===r&&\"string\"==typeof e.data&&0===e.data.indexOf(A)&&o(+e.data.slice(A.length))}var r,i,a,s,A,l,c,p,u,f;(r=\"undefined\"==typeof self?void 0===e?this:e:self).setImmediate||(l=1,p=!(c={}),u=r.document,e=(e=Object.getPrototypeOf&&Object.getPrototypeOf(r))&&e.setTimeout?e:r,f=\"[object process]\"==={}.toString.call(r.process)?function(e){process.nextTick(function(){o(e)})}:(()=>{var e,t;if(r.postMessage&&!r.importScripts)return e=!0,t=r.onmessage,r.onmessage=function(){e=!1},r.postMessage(\"\",\"*\"),r.onmessage=t,e})()?(A=\"setImmediate$\"+Math.random()+\"$\",r.addEventListener?r.addEventListener(\"message\",t,!1):r.attachEvent(\"onmessage\",t),function(e){r.postMessage(A+e,\"*\")}):r.MessageChannel?((s=new MessageChannel).port1.onmessage=function(e){o(e.data)},function(e){s.port2.postMessage(e)}):u&&\"onreadystatechange\"in u.createElement(\"script\")?(a=u.documentElement,function(e){var t=u.createElement(\"script\");t.onreadystatechange=function(){o(e),t.onreadystatechange=null,a.removeChild(t),t=null},a.appendChild(t)}):function(e){setTimeout(o,0,e)},e.setImmediate=function(e){\"function\"!=typeof e&&(e=new Function(\"\"+e));for(var t=new Array(arguments.length-1),r=0;r{function e(e,t,r){if(this instanceof a){switch(arguments.length){case 0:return new a;case 1:return new a(e);case 2:return new a(e,t)}return new a(e,t,r)}return a.apply(this,arguments)}return e[x]=a[x],e})(o):l&&\"function\"==typeof o?v(Function.call,o):o,l&&((u.virtual||(u.virtual={}))[a]=o,e&h.R)&&f&&!f[a]&&y(f,a,o))}var g=e(24),m=e(18),v=e(19),y=e(26),b=e(25),x=\"prototype\";h.F=1,h.G=2,h.S=4,h.P=8,h.B=16,h.W=32,h.U=64,h.R=128,t.exports=h},{18:18,19:19,24:24,25:25,26:26}],23:[function(e,t,r){t.exports=function(e){try{return!!e()}catch(e){return!0}}},{}],24:[function(e,t,r){t=t.exports=\"undefined\"!=typeof window&&window.Math==Math?window:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")();\"number\"==typeof __g&&(__g=t)},{}],25:[function(e,t,r){var a={}.hasOwnProperty;t.exports=function(e,t){return a.call(e,t)}},{}],26:[function(e,t,r){var a=e(29),n=e(30);t.exports=e(20)?function(e,t,r){return a.f(e,t,n(1,r))}:function(e,t,r){return e[t]=r,e}},{20:20,29:29,30:30}],27:[function(e,t,r){t.exports=!e(20)&&!e(23)(function(){return 7!=Object.defineProperty(e(21)(\"div\"),\"a\",{get:function(){return 7}}).a})},{20:20,21:21,23:23}],28:[function(e,t,r){t.exports=function(e){return\"object\"==typeof e?null!==e:\"function\"==typeof e}},{}],29:[function(e,t,r){var a=e(17),n=e(27),o=e(31),i=Object.defineProperty;r.f=e(20)?Object.defineProperty:function(e,t,r){if(a(e),t=o(t,!0),a(r),n)try{return i(e,t,r)}catch(e){}if(\"get\"in r||\"set\"in r)throw TypeError(\"Accessors not supported!\");return\"value\"in r&&(e[t]=r.value),e}},{17:17,20:20,27:27,31:31}],30:[function(e,t,r){t.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},{}],31:[function(e,t,r){var n=e(28);t.exports=function(e,t){if(!n(e))return e;var r,a;if(t&&\"function\"==typeof(r=e.toString)&&!n(a=r.call(e))||\"function\"==typeof(r=e.valueOf)&&!n(a=r.call(e))||!t&&\"function\"==typeof(r=e.toString)&&!n(a=r.call(e)))return a;throw TypeError(\"Can't convert object to primitive value\")}},{28:28}],32:[function(e,t,r){var a=e(22);a(a.G,{global:e(24)})},{22:22,24:24}],33:[function(e,t,r){arguments[4][16][0].apply(r,arguments)},{16:16}],34:[function(e,t,r){var a=e(48);t.exports=function(e,t){if(\"number\"!=typeof e&&\"Number\"!=a(e))throw TypeError(t);return+e}},{48:48}],35:[function(e,t,r){var a=e(152)(\"unscopables\"),n=Array.prototype;null==n[a]&&e(72)(n,a,{}),t.exports=function(e){n[a][e]=!0}},{152:152,72:72}],36:[function(e,t,r){var a=e(129)(!0);t.exports=function(e,t,r){return t+(r?a(e,t).length:1)}},{129:129}],37:[function(e,t,r){t.exports=function(e,t,r,a){if(!(e instanceof t)||void 0!==a&&a in e)throw TypeError(r+\": incorrect invocation!\");return e}},{}],38:[function(e,t,r){arguments[4][17][0].apply(r,arguments)},{17:17,81:81}],39:[function(e,t,r){var A=e(142),l=e(137),c=e(141);t.exports=[].copyWithin||function(e,t){var r=A(this),a=c(r.length),n=l(e,a),o=l(t,a),e=2{try{return e[t]}catch(e){}})(e=Object(e),n))?t:o?a(e):\"Object\"==(t=a(e))&&\"function\"==typeof e.callee?\"Arguments\":t}},{152:152,48:48}],48:[function(e,t,r){var a={}.toString;t.exports=function(e){return a.call(e).slice(8,-1)}},{}],49:[function(e,t,r){function i(e,t){var r,a=d(t);if(\"F\"!==a)return e._i[a];for(r=e._f;r;r=r.n)if(r.k==t)return r}var s=e(99).f,A=e(98),l=e(117),c=e(54),p=e(37),u=e(68),a=e(85),n=e(87),o=e(123),f=e(58),d=e(94).fastKey,h=e(149),g=f?\"_s\":\"size\";t.exports={getConstructor:function(e,n,r,a){var o=e(function(e,t){p(e,o,n,\"_i\"),e._t=n,e._i=A(null),e._f=void 0,e._l=void 0,e[g]=0,null!=t&&u(t,r,e[a],e)});return l(o.prototype,{clear:function(){for(var e=h(this,n),t=e._i,r=e._f;r;r=r.n)r.r=!0,r.p&&(r.p=r.p.n=void 0),delete t[r.i];e._f=e._l=void 0,e[g]=0},delete:function(e){var t,r,a=h(this,n),e=i(a,e);return e&&(t=e.n,r=e.p,delete a._i[e.i],e.r=!0,r&&(r.n=t),t&&(t.p=r),a._f==e&&(a._f=t),a._l==e&&(a._l=r),a[g]--),!!e},forEach:function(e){h(this,n);for(var t,r=c(e,1i;)o.call(e,a=n[i++])&&t.push(a);return t}},{104:104,107:107,108:108}],62:[function(e,t,r){function f(e,t,r){var a,n,o,i=e&f.F,s=e&f.G,A=e&f.P,l=e&f.B,c=s?d:e&f.S?d[t]||(d[t]={}):(d[t]||{})[y],p=s?h:h[t]||(h[t]={}),u=p[y]||(p[y]={});for(a in r=s?t:r)n=((o=!i&&c&&void 0!==c[a])?c:r)[a],o=l&&o?v(n,d):A&&\"function\"==typeof n?v(Function.call,n):n,c&&m(c,a,n,e&f.U),p[a]!=n&&g(p,a,o),A&&u[a]!=n&&(u[a]=n)}var d=e(70),h=e(52),g=e(72),m=e(118),v=e(54),y=\"prototype\";d.core=h,f.F=1,f.G=2,f.S=4,f.P=8,f.B=16,f.W=32,f.U=64,f.R=128,t.exports=f},{118:118,52:52,54:54,70:70,72:72}],63:[function(e,t,r){var a=e(152)(\"match\");t.exports=function(t){var r=/./;try{\"/./\"[t](r)}catch(e){try{return r[a]=!1,!\"/./\"[t](r)}catch(e){}}return!0}},{152:152}],64:[function(e,t,r){arguments[4][23][0].apply(r,arguments)},{23:23}],65:[function(e,t,r){e(248);var a,A=e(118),l=e(72),c=e(64),p=e(57),u=e(152),f=e(120),d=u(\"species\"),h=!c(function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:\"7\"},e},\"7\"!==\"\".replace(e,\"$\")}),g=(a=(e=/(?:)/).exec,e.exec=function(){return a.apply(this,arguments)},2===(e=\"ab\".split(e)).length&&\"a\"===e[0]&&\"b\"===e[1]);t.exports=function(r,e,t){var o,a,n=u(r),i=!c(function(){var e={};return e[n]=function(){return 7},7!=\"\"[r](e)}),s=i?!c(function(){var e=!1,t=/a/;return t.exec=function(){return e=!0,null},\"split\"===r&&(t.constructor={},t.constructor[d]=function(){return t}),t[n](\"\"),!e}):void 0;i&&s&&(\"replace\"!==r||h)&&(\"split\"!==r||g)||(o=/./[n],t=(s=t(p,n,\"\"[r],function(e,t,r,a,n){return t.exec===f?i&&!n?{done:!0,value:o.call(t,r,a)}:{done:!0,value:e.call(r,t,a)}:{done:!1}}))[0],a=s[1],A(String.prototype,r,t),l(RegExp.prototype,n,2==e?function(e,t){return a.call(e,this,t)}:function(e){return a.call(e,this)}))}},{118:118,120:120,152:152,248:248,57:57,64:64,72:72}],66:[function(e,t,r){var a=e(38);t.exports=function(){var e=a(this),t=\"\";return e.global&&(t+=\"g\"),e.ignoreCase&&(t+=\"i\"),e.multiline&&(t+=\"m\"),e.unicode&&(t+=\"u\"),e.sticky&&(t+=\"y\"),t}},{38:38}],67:[function(e,t,r){var d=e(79),h=e(81),g=e(141),m=e(54),v=e(152)(\"isConcatSpreadable\");t.exports=function e(t,r,a,n,o,i,s,A){for(var l,c,p=o,u=0,f=!!s&&m(s,A,3);udocument.F=Object<\\/script>\"),e.close(),l=e.F;t--;)delete l[A][i[t]];return l()};e.exports=Object.create||function(e,t){var r;return null!==e?(a[A]=n(e),r=new a,a[A]=null,r[s]=e):r=l(),void 0===t?r:o(r,t)}},{100:100,125:125,38:38,59:59,60:60,73:73}],99:[function(e,t,r){arguments[4][29][0].apply(r,arguments)},{143:143,29:29,38:38,58:58,74:74}],100:[function(e,t,r){var i=e(99),s=e(38),A=e(107);t.exports=e(58)?Object.defineProperties:function(e,t){s(e);for(var r,a=A(t),n=a.length,o=0;on;)!i(a,r=t[n++])||~A(o,r)||o.push(r);return o}},{125:125,140:140,41:41,71:71}],107:[function(e,t,r){var a=e(106),n=e(60);t.exports=Object.keys||function(e){return a(e,n)}},{106:106,60:60}],108:[function(e,t,r){r.f={}.propertyIsEnumerable},{}],109:[function(e,t,r){var n=e(62),o=e(52),i=e(64);t.exports=function(e,t){var r=(o.Object||{})[e]||Object[e],a={};a[e]=t(r),n(n.S+n.F*i(function(){r(1)}),\"Object\",a)}},{52:52,62:62,64:64}],110:[function(e,t,r){var A=e(58),l=e(107),c=e(140),p=e(108).f;t.exports=function(s){return function(e){for(var t,r=c(e),a=l(r),n=a.length,o=0,i=[];o>>0||(o.test(e)?16:10))}:a},{134:134,135:135,70:70}],114:[function(e,t,r){t.exports=function(e){try{return{e:!1,v:e()}}catch(e){return{e:!0,v:e}}}},{}],115:[function(e,t,r){var a=e(38),n=e(81),o=e(96);t.exports=function(e,t){return a(e),n(t)&&t.constructor===e?t:((0,(e=o.f(e)).resolve)(t),e.promise)}},{38:38,81:81,96:96}],116:[function(e,t,r){arguments[4][30][0].apply(r,arguments)},{30:30}],117:[function(e,t,r){var n=e(118);t.exports=function(e,t,r){for(var a in t)n(e,a,t[a],r);return e}},{118:118}],118:[function(e,t,r){var o=e(70),i=e(72),s=e(71),A=e(147)(\"src\"),a=e(69),n=\"toString\",l=(\"\"+a).split(n);e(52).inspectSource=function(e){return a.call(e)},(t.exports=function(e,t,r,a){var n=\"function\"==typeof r;n&&!s(r,\"name\")&&i(r,\"name\",t),e[t]!==r&&(n&&!s(r,A)&&i(r,A,e[t]?\"\"+e[t]:l.join(String(t))),e===o?e[t]=r:a?e[t]?e[t]=r:i(e,t,r):(delete e[t],i(e,t,r)))})(Function.prototype,n,function(){return\"function\"==typeof this&&this[A]||a.call(this)})},{147:147,52:52,69:69,70:70,71:71,72:72}],119:[function(e,t,r){var a=e(47),n=RegExp.prototype.exec;t.exports=function(e,t){var r=e.exec;if(\"function\"==typeof r){r=r.call(e,t);if(\"object\"!=typeof r)throw new TypeError(\"RegExp exec method returned something other than an Object or null\");return r}if(\"RegExp\"!==a(e))throw new TypeError(\"RegExp#exec called on incompatible receiver\");return n.call(e,t)}},{47:47}],120:[function(e,t,r){var a,n,i=e(66),s=RegExp.prototype.exec,A=String.prototype.replace,e=s,l=\"lastIndex\",c=(n=/b*/g,s.call(a=/a/,\"a\"),s.call(n,\"a\"),0!==a[l]||0!==n[l]),p=void 0!==/()??/.exec(\"\")[1];t.exports=e=c||p?function(e){var t,r,a,n,o=this;return p&&(r=new RegExp(\"^\"+o.source+\"$(?!\\\\s)\",i.call(o))),c&&(t=o[l]),a=s.call(o,e),c&&a&&(o[l]=o.global?a.index+a[0].length:t),p&&a&&1{try{(a=t(54)(Function.call,t(101).f(Object.prototype,\"__proto__\").set,2))(e,[]),r=!(e instanceof Array)}catch(e){r=!0}return function(e,t){return n(e,t),r?e.__proto__=t:a(e,t),e}})({},!1):void 0),check:n}},{101:101,38:38,54:54,81:81}],123:[function(e,t,r){var a=e(70),n=e(99),o=e(58),i=e(152)(\"species\");t.exports=function(e){e=a[e];o&&e&&!e[i]&&n.f(e,i,{configurable:!0,get:function(){return this}})}},{152:152,58:58,70:70,99:99}],124:[function(e,t,r){var a=e(99).f,n=e(71),o=e(152)(\"toStringTag\");t.exports=function(e,t,r){e&&!n(e=r?e:e.prototype,o)&&a(e,o,{configurable:!0,value:t})}},{152:152,71:71,99:99}],125:[function(e,t,r){var a=e(126)(\"keys\"),n=e(147);t.exports=function(e){return a[e]||(a[e]=n(e))}},{126:126,147:147}],126:[function(e,t,r){var a=e(52),n=e(70),o=\"__core-js_shared__\",i=n[o]||(n[o]={});(t.exports=function(e,t){return i[e]||(i[e]=void 0!==t?t:{})})(\"versions\",[]).push({version:a.version,mode:e(89)?\"pure\":\"global\",copyright:\"© 2019 Denis Pushkarev (zloirock.ru)\"})},{52:52,70:70,89:89}],127:[function(e,t,r){var a=e(38),n=e(33),o=e(152)(\"species\");t.exports=function(e,t){var e=a(e).constructor;return void 0===e||null==(e=a(e)[o])?t:n(e)}},{152:152,33:33,38:38}],128:[function(e,t,r){var a=e(64);t.exports=function(e,t){return!!e&&a(function(){t?e.call(null,function(){},1):e.call(null)})}},{64:64}],129:[function(e,t,r){var o=e(139),i=e(57);t.exports=function(n){return function(e,t){var r,e=String(i(e)),t=o(t),a=e.length;return t<0||a<=t?n?\"\":void 0:(r=e.charCodeAt(t))<55296||56319\"+e+\"\"}var n=e(62),o=e(64),i=e(57),s=/\"/g;t.exports=function(t,e){var r={};r[t]=e(a),n(n.P+n.F*o(function(){var e=\"\"[t]('\"');return e!==e.toLowerCase()||3t&&(n=n.slice(0,t)),a?n+e:e+n)}},{133:133,141:141,57:57}],133:[function(e,t,r){var n=e(139),o=e(57);t.exports=function(e){var t=String(o(this)),r=\"\",a=n(e);if(a<0||a==1/0)throw RangeError(\"Count can't be negative\");for(;0>>=1)&&(t+=t))1&a&&(r+=t);return r}},{139:139,57:57}],134:[function(e,t,r){function a(e,t,r){var a={},n=i(function(){return!!s[e]()||\"​…\"!=\"​…\"[e]()}),t=a[e]=n?t(c):s[e];r&&(a[r]=t),o(o.P+o.F*n,\"String\",a)}var o=e(62),n=e(57),i=e(64),s=e(135),e=\"[\"+s+\"]\",A=RegExp(\"^\"+e+e+\"*\"),l=RegExp(e+e+\"*$\"),c=a.trim=function(e,t){return e=String(n(e)),1&t&&(e=e.replace(A,\"\")),e=2&t?e.replace(l,\"\"):e};t.exports=a},{135:135,57:57,62:62,64:64}],135:[function(e,t,r){t.exports=\"\\t\\n\\v\\f\\r   ᠎              \\u2028\\u2029\\ufeff\"},{}],136:[function(e,t,r){function a(){var e,t=+this;m.hasOwnProperty(t)&&(e=m[t],delete m[t],e())}function n(e){a.call(e.data)}var o,i=e(54),s=e(76),A=e(73),l=e(59),c=e(70),p=c.process,u=c.setImmediate,f=c.clearImmediate,d=c.MessageChannel,h=c.Dispatch,g=0,m={},v=\"onreadystatechange\";u&&f||(u=function(e){for(var t=[],r=1;r{x(e,a,{get:function(){return(e=this._d).v[u](a*l+e.o,ke);var e},set:function(e){var t=a,r=this._d;c&&(e=(e=Math.round(e))<0?0:255>1,l=23===t?x(2,-24)-x(2,-77):0,c=0,p=e<0||0===e&&1/e<0?1:0;for((e=G(e))!=e||e===y?(n=e!=e?1:0,a=r):(a=Q(W(e)/Y),e*(o=x(2,-a))<1&&(a--,o*=2),2<=(e+=1<=a+A?l/o:l*x(2,1-A))*o&&(a++,o/=2),r<=a+A?(n=0,a=r):1<=a+A?(n=(e*o-1)*x(2,t),a+=A):(n=e*x(2,A-1)*x(2,t),a=0));8<=t;i[c++]=255&n,n/=256,t-=8);for(a=a<>1,s=n-7,A=r-1,n=e[A--],l=127&n;for(n>>=7;0>=-s,s+=t;0>8&255]}function D(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]}function X(e){return S(e,52,8)}function H(e){return S(e,23,4)}function k(e,t,r){U(e[f],t,{get:function(){return this[r]}})}function _(e,t,r,a){r=c(+r);if(r+t>e[C])throw v(d);var n=e[w]._b,r=r+e[P],e=n.slice(r,r+t);return a?e:e.reverse()}function N(e,t,r,a,n,o){r=c(+r);if(r+t>e[C])throw v(d);for(var i=e[w]._b,s=r+e[P],A=a(+n),l=0;lV;)(F=I[V++])in h||o(h,F,b[F]);O||(s.constructor=h)}var l=new g(new h(2)),q=g[f].setInt8;l.setInt8(0,2147483648),l.setInt8(1,2147483649),!l.getInt8(0)&&l.getInt8(1)||i(g[f],{setInt8:function(e,t){q.call(this,e,t<<24>>24)},setUint8:function(e,t){q.call(this,e,t<<24>>24)}},!0)}else h=function(e){A(this,h,p);e=c(e);this._b=j.call(new Array(e),0),this[C]=e},g=function(e,t,r){A(this,g,u),A(e,h,u);var a=e[C],t=M(t);if(t<0||a>24},getUint8:function(e){return _(this,1,e)[0]},getInt16:function(e){e=_(this,2,e,arguments[1]);return(e[1]<<8|e[0])<<16>>16},getUint16:function(e){e=_(this,2,e,arguments[1]);return e[1]<<8|e[0]},getInt32:function(e){return E(_(this,4,e,arguments[1]))},getUint32:function(e){return E(_(this,4,e,arguments[1]))>>>0},getFloat32:function(e){return L(_(this,4,e,arguments[1]),23,4)},getFloat64:function(e){return L(_(this,8,e,arguments[1]),52,8)},setInt8:function(e,t){N(this,1,e,T,t)},setUint8:function(e,t){N(this,1,e,T,t)},setInt16:function(e,t){N(this,2,e,B,t,arguments[2])},setUint16:function(e,t){N(this,2,e,B,t,arguments[2])},setInt32:function(e,t){N(this,4,e,D,t,arguments[2])},setUint32:function(e,t){N(this,4,e,D,t,arguments[2])},setFloat32:function(e,t){N(this,4,e,H,t,arguments[2])},setFloat64:function(e,t){N(this,8,e,X,t,arguments[2])}});e(h,p),e(g,u),o(g[f],n.VIEW,!0),t[p]=h,t[u]=g},{103:103,117:117,124:124,138:138,139:139,141:141,146:146,37:37,40:40,58:58,64:64,70:70,72:72,89:89,99:99}],146:[function(e,t,r){for(var a,n=e(70),o=e(72),e=e(147),i=e(\"typed_array\"),s=e(\"view\"),e=!(!n.ArrayBuffer||!n.DataView),A=e,l=0,c=\"Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array\".split(\",\");l<9;)(a=n[c[l++]])?(o(a.prototype,i,!0),o(a.prototype,s,!0)):A=!1;t.exports={ABV:e,CONSTR:A,TYPED:i,VIEW:s}},{147:147,70:70,72:72}],147:[function(e,t,r){var a=0,n=Math.random();t.exports=function(e){return\"Symbol(\".concat(void 0===e?\"\":e,\")_\",(++a+n).toString(36))}},{}],148:[function(e,t,r){e=e(70).navigator;t.exports=e&&e.userAgent||\"\"},{70:70}],149:[function(e,t,r){var a=e(81);t.exports=function(e,t){if(a(e)&&e._t===t)return e;throw TypeError(\"Incompatible receiver, \"+t+\" required!\")}},{81:81}],150:[function(e,t,r){var a=e(70),n=e(52),o=e(89),i=e(151),s=e(99).f;t.exports=function(e){var t=n.Symbol||(n.Symbol=!o&&a.Symbol||{});\"_\"==e.charAt(0)||e in t||s(t,e,{value:i.f(e)})}},{151:151,52:52,70:70,89:89,99:99}],151:[function(e,t,r){r.f=e(152)},{152:152}],152:[function(e,t,r){var a=e(126)(\"wks\"),n=e(147),o=e(70).Symbol,i=\"function\"==typeof o;(t.exports=function(e){return a[e]||(a[e]=i&&o[e]||(i?o:n)(\"Symbol.\"+e))}).store=a},{126:126,147:147,70:70}],153:[function(e,t,r){var a=e(47),n=e(152)(\"iterator\"),o=e(88);t.exports=e(52).getIteratorMethod=function(e){if(null!=e)return e[n]||e[\"@@iterator\"]||o[a(e)]}},{152:152,47:47,52:52,88:88}],154:[function(e,t,r){var a=e(62);a(a.P,\"Array\",{copyWithin:e(39)}),e(35)(\"copyWithin\")},{35:35,39:39,62:62}],155:[function(e,t,r){var a=e(62),n=e(42)(4);a(a.P+a.F*!e(128)([].every,!0),\"Array\",{every:function(e){return n(this,e,arguments[1])}})},{128:128,42:42,62:62}],156:[function(e,t,r){var a=e(62);a(a.P,\"Array\",{fill:e(40)}),e(35)(\"fill\")},{35:35,40:40,62:62}],157:[function(e,t,r){var a=e(62),n=e(42)(2);a(a.P+a.F*!e(128)([].filter,!0),\"Array\",{filter:function(e){return n(this,e,arguments[1])}})},{128:128,42:42,62:62}],158:[function(e,t,r){var a=e(62),n=e(42)(6),o=\"findIndex\",i=!0;o in[]&&Array(1)[o](function(){i=!1}),a(a.P+a.F*i,\"Array\",{findIndex:function(e){return n(this,e,1=e.length?(this._t=void 0,n(1)):n(0,\"keys\"==t?r:\"values\"==t?e[r]:[r,e[r]])},\"values\"),o.Arguments=o.Array,a(\"keys\"),a(\"values\"),a(\"entries\")},{140:140,35:35,85:85,87:87,88:88}],165:[function(e,t,r){var a=e(62),n=e(140),o=[].join;a(a.P+a.F*(e(77)!=Object||!e(128)(o)),\"Array\",{join:function(e){return o.call(n(this),void 0===e?\",\":e)}})},{128:128,140:140,62:62,77:77}],166:[function(e,t,r){var a=e(62),n=e(140),o=e(139),i=e(141),s=[].lastIndexOf,A=!!s&&1/[1].lastIndexOf(1,-0)<0;a(a.P+a.F*(A||!e(128)(s)),\"Array\",{lastIndexOf:function(e){if(A)return s.apply(this,arguments)||0;var t=n(this),r=i(t.length),a=r-1;for((a=1>>=0)?31-Math.floor(Math.log(e+.5)*Math.LOG2E):32}})},{62:62}],189:[function(e,t,r){var e=e(62),a=Math.exp;e(e.S,\"Math\",{cosh:function(e){return(a(e=+e)+a(-e))/2}})},{62:62}],190:[function(e,t,r){var a=e(62),e=e(90);a(a.S+a.F*(e!=Math.expm1),\"Math\",{expm1:e})},{62:62,90:90}],191:[function(e,t,r){var a=e(62);a(a.S,\"Math\",{fround:e(91)})},{62:62,91:91}],192:[function(e,t,r){var e=e(62),A=Math.abs;e(e.S,\"Math\",{hypot:function(e,t){for(var r,a,n=0,o=0,i=arguments.length,s=0;o>>16)*a+r*(65535&t>>>16)<<16>>>0)}})},{62:62,64:64}],194:[function(e,t,r){e=e(62);e(e.S,\"Math\",{log10:function(e){return Math.log(e)*Math.LOG10E}})},{62:62}],195:[function(e,t,r){var a=e(62);a(a.S,\"Math\",{log1p:e(92)})},{62:62,92:92}],196:[function(e,t,r){e=e(62);e(e.S,\"Math\",{log2:function(e){return Math.log(e)/Math.LN2}})},{62:62}],197:[function(e,t,r){var a=e(62);a(a.S,\"Math\",{sign:e(93)})},{62:62,93:93}],198:[function(e,t,r){var a=e(62),n=e(90),o=Math.exp;a(a.S+a.F*e(64)(function(){return-2e-17!=!Math.sinh(-2e-17)}),\"Math\",{sinh:function(e){return Math.abs(e=+e)<1?(n(e)-n(-e))/2:(o(e-1)-o(-e-1))*(Math.E/2)}})},{62:62,64:64,90:90}],199:[function(e,t,r){var a=e(62),n=e(90),o=Math.exp;a(a.S,\"Math\",{tanh:function(e){var t=n(e=+e),r=n(-e);return t==1/0?1:r==1/0?-1:(t-r)/(o(e)+o(-e))}})},{62:62,90:90}],200:[function(e,t,r){e=e(62);e(e.S,\"Math\",{trunc:function(e){return(0w;w++)o(h,y=x[w])&&!o(b,y)&&u(b,y,p(h,y));(b.prototype=g).constructor=b,e(118)(n,d,b)}},{101:101,103:103,118:118,134:134,143:143,48:48,58:58,64:64,70:70,71:71,75:75,98:98,99:99}],202:[function(e,t,r){e=e(62);e(e.S,\"Number\",{EPSILON:Math.pow(2,-52)})},{62:62}],203:[function(e,t,r){var a=e(62),n=e(70).isFinite;a(a.S,\"Number\",{isFinite:function(e){return\"number\"==typeof e&&n(e)}})},{62:62,70:70}],204:[function(e,t,r){var a=e(62);a(a.S,\"Number\",{isInteger:e(80)})},{62:62,80:80}],205:[function(e,t,r){e=e(62);e(e.S,\"Number\",{isNaN:function(e){return e!=e}})},{62:62}],206:[function(e,t,r){var a=e(62),n=e(80),o=Math.abs;a(a.S,\"Number\",{isSafeInteger:function(e){return n(e)&&o(e)<=9007199254740991}})},{62:62,80:80}],207:[function(e,t,r){e=e(62);e(e.S,\"Number\",{MAX_SAFE_INTEGER:9007199254740991})},{62:62}],208:[function(e,t,r){e=e(62);e(e.S,\"Number\",{MIN_SAFE_INTEGER:-9007199254740991})},{62:62}],209:[function(e,t,r){var a=e(62),e=e(112);a(a.S+a.F*(Number.parseFloat!=e),\"Number\",{parseFloat:e})},{112:112,62:62}],210:[function(e,t,r){var a=e(62),e=e(113);a(a.S+a.F*(Number.parseInt!=e),\"Number\",{parseInt:e})},{113:113,62:62}],211:[function(e,t,r){function s(e,t){for(var r=-1,a=t;++r<6;)i[r]=(a+=e*i[r])%1e7,a=o(a/1e7)}function A(e){for(var t=6,r=0;0<=--t;)i[t]=o((r+=i[t])/e),r=r%e*1e7}function l(){for(var e,t=6,r=\"\";0<=--t;)\"\"===r&&0!==t&&0===i[t]||(e=String(i[t]),r=\"\"===r?e:r+f.call(\"0\",7-e.length)+e);return r}function c(e,t,r){return 0===t?r:t%2==1?c(e,t-1,r*e):c(e*e,t/2,r)}var a=e(62),p=e(139),u=e(34),f=e(133),n=1..toFixed,o=Math.floor,i=[0,0,0,0,0,0],d=\"Number.toFixed: incorrect invocation!\";a(a.P+a.F*(!!n&&(\"0.000\"!==8e-5.toFixed(3)||\"1\"!==.9.toFixed(0)||\"1.25\"!==1.255.toFixed(2)||\"1000000000000000128\"!==0xde0b6b3a7640080.toFixed(0))||!e(64)(function(){n.call({})})),\"Number\",{toFixed:function(e){var t,r,a,n=u(this,d),e=p(e),o=\"\",i=\"0\";if(e<0||20{for(var e=0,t=n*c(2,69,1);4096<=t;)e+=12,t/=4096;for(;2<=t;)e+=1,t/=2;return e})()-69)<0?n*c(2,-t,1):n/c(2,t,1),a*=4503599627370496,0<(t=52-t)){for(s(0,a),r=e;7<=r;)s(1e7,0),r-=7;for(s(c(10,r,1),0),r=t-1;23<=r;)A(1<<23),r-=23;A(1<r;){a=void 0;n=void 0;o=void 0;i=void 0;s=void 0;A=void 0;l=void 0;c=void 0;var a=f[r++];var n,o,i,s=t?a.ok:a.fail,A=a.resolve,l=a.reject,c=a.domain;try{s?(t||(2==p._h&&g(p),p._h=1),!0===s?n=e:(c&&c.enter(),n=s(e),c&&(c.exit(),i=!0)),n===a.promise?l(T(\"Promise-chain cycle\")):(o=d(n))?o.call(n,A,l):A(n)):l(e)}catch(a){c&&!i&&c.exit(),l(a)}}p._c=[],p._n=!1,u&&!p._h&&h(p)}))}function o(e){var t=this;t._d||(t._d=!0,(t=t._w||t)._v=e,t._s=2,t._a||(t._a=t._c.slice()),n(t,!0))}function h(n){x.call(c,function(){var e,t,r=n._v,a=F(n);if(a&&(e=P(function(){_?B.emit(\"unhandledRejection\",r,n):(t=c.onunhandledrejection)?t({promise:n,reason:r}):(t=c.console)&&t.error&&t.error(\"Unhandled promise rejection\",r)}),n._h=_||F(n)?2:1),n._a=void 0,a&&e.e)throw e.v})}function g(t){x.call(c,function(){var e;_?B.emit(\"rejectionHandled\",t):(e=c.onrejectionhandled)&&e({promise:t,reason:t._v})})}var t,i,s,A,l=r(89),c=r(70),p=r(54),e=r(47),u=r(62),f=r(81),m=r(33),v=r(37),y=r(68),b=r(127),x=r(136).set,w=r(95)(),C=r(96),P=r(114),S=r(148),L=r(115),E=\"Promise\",T=c.TypeError,B=c.process,D=B&&B.versions,M=D&&D.v8||\"\",k=c[E],_=\"process\"==e(B),N=i=C.f,D=!!(()=>{try{var e=k.resolve(1),t=(e.constructor={})[r(152)(\"species\")]=function(e){e(a,a)};return(_||\"function\"==typeof PromiseRejectionEvent)&&e.then(a)instanceof t&&0!==M.indexOf(\"6.6\")&&-1===S.indexOf(\"Chrome/66\")}catch(e){}})(),F=function(e){return 1!==e._h&&0===(e._a||e._c).length},I=function(e){var r,a=this;if(!a._d){a._d=!0,a=a._w||a;try{if(a===e)throw T(\"Promise can't be resolved itself\");(r=d(e))?w(function(){var t={_w:a,_d:!1};try{r.call(e,p(I,t,1),p(o,t,1))}catch(e){o.call(t,e)}}):(a._v=e,a._s=1,n(a,!1))}catch(e){o.call({_w:a,_d:!1},e)}}};D||(k=function(e){v(this,k,E,\"_h\"),m(e),t.call(this);try{e(p(I,this,1),p(o,this,1))}catch(e){o.call(this,e)}},(t=function(e){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1}).prototype=r(117)(k.prototype,{then:function(e,t){var r=N(b(this,k));return r.ok=\"function\"!=typeof e||e,r.fail=\"function\"==typeof t&&t,r.domain=_?B.domain:void 0,this._c.push(r),this._a&&this._a.push(r),this._s&&n(this,!1),r.promise},catch:function(e){return this.then(void 0,e)}}),s=function(){var e=new t;this.promise=e,this.resolve=p(I,e,1),this.reject=p(o,e,1)},C.f=N=function(e){return e===k||e===A?new s:i(e)}),u(u.G+u.W+u.F*!D,{Promise:k}),r(124)(k,E),r(123)(E),A=r(52)[E],u(u.S+u.F*!D,E,{reject:function(e){var t=N(this);return(0,t.reject)(e),t.promise}}),u(u.S+u.F*(l||!D),E,{resolve:function(e){return L(l&&this===A?k:this,e)}}),u(u.S+u.F*!(D&&r(86)(function(e){k.all(e).catch(a)})),E,{all:function(e){var i=this,t=N(i),s=t.resolve,A=t.reject,r=P(function(){var a=[],n=0,o=1;y(e,!1,function(e){var t=n++,r=!1;a.push(void 0),o++,i.resolve(e).then(function(e){r||(r=!0,a[t]=e,--o)||s(a)},A)}),--o||s(a)});return r.e&&A(r.v),t.promise},race:function(e){var t=this,r=N(t),a=r.reject,n=P(function(){y(e,!1,function(e){t.resolve(e).then(r.resolve,a)})});return n.e&&a(n.v),r.promise}})},{114:114,115:115,117:117,123:123,124:124,127:127,136:136,148:148,152:152,33:33,37:37,47:47,52:52,54:54,62:62,68:68,70:70,81:81,86:86,89:89,95:95,96:96}],233:[function(e,t,r){var a=e(62),n=e(33),o=e(38),i=(e(70).Reflect||{}).apply,s=Function.apply;a(a.S+a.F*!e(64)(function(){i(function(){})}),\"Reflect\",{apply:function(e,t,r){e=n(e),r=o(r);return i?i(e,t,r):s.call(e,t,r)}})},{33:33,38:38,62:62,64:64,70:70}],234:[function(e,t,r){var a=e(62),n=e(98),o=e(33),i=e(38),s=e(81),A=e(64),l=e(46),c=(e(70).Reflect||{}).construct,p=A(function(){function e(){}return!(c(function(){},[],e)instanceof e)}),u=!A(function(){c(function(){})});a(a.S+a.F*(p||u),\"Reflect\",{construct:function(e,t){o(e),i(t);var r=arguments.length<3?e:o(arguments[2]);if(u&&!p)return c(e,t,r);if(e==r){switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3])}var a=[null];return a.push.apply(a,t),new(l.apply(e,a))}a=r.prototype,r=n(s(a)?a:Object.prototype),a=Function.apply.call(e,r,t);return s(a)?a:r}})},{33:33,38:38,46:46,62:62,64:64,70:70,81:81,98:98}],235:[function(e,t,r){var a=e(99),n=e(62),o=e(38),i=e(143);n(n.S+n.F*e(64)(function(){Reflect.defineProperty(a.f({},1,{value:1}),1,{value:2})}),\"Reflect\",{defineProperty:function(e,t,r){o(e),t=i(t,!0),o(r);try{return a.f(e,t,r),!0}catch(e){return!1}}})},{143:143,38:38,62:62,64:64,99:99}],236:[function(e,t,r){var a=e(62),n=e(101).f,o=e(38);a(a.S,\"Reflect\",{deleteProperty:function(e,t){var r=n(o(e),t);return!(r&&!r.configurable)&&delete e[t]}})},{101:101,38:38,62:62}],237:[function(e,t,r){function a(e){this._t=o(e),this._i=0;var t,r=this._k=[];for(t in e)r.push(t)}var n=e(62),o=e(38);e(84)(a,\"Object\",function(){var e,t=this._k;do{if(this._i>=t.length)return{value:void 0,done:!0}}while(!((e=t[this._i++])in this._t));return{value:e,done:!1}}),n(n.S,\"Reflect\",{enumerate:function(e){return new a(e)}})},{38:38,62:62,84:84}],238:[function(e,t,r){var a=e(101),n=e(62),o=e(38);n(n.S,\"Reflect\",{getOwnPropertyDescriptor:function(e,t){return a.f(o(e),t)}})},{101:101,38:38,62:62}],239:[function(e,t,r){var a=e(62),n=e(105),o=e(38);a(a.S,\"Reflect\",{getPrototypeOf:function(e){return n(o(e))}})},{105:105,38:38,62:62}],240:[function(e,t,r){var o=e(101),i=e(105),s=e(71),a=e(62),A=e(81),l=e(38);a(a.S,\"Reflect\",{get:function e(t,r){var a,n=arguments.length<3?t:arguments[2];return l(t)===n?t[r]:(a=o.f(t,r))?s(a,\"value\")?a.value:void 0!==a.get?a.get.call(n):void 0:A(a=i(t))?e(a,r,n):void 0}})},{101:101,105:105,38:38,62:62,71:71,81:81}],241:[function(e,t,r){e=e(62);e(e.S,\"Reflect\",{has:function(e,t){return t in e}})},{62:62}],242:[function(e,t,r){var a=e(62),n=e(38),o=Object.isExtensible;a(a.S,\"Reflect\",{isExtensible:function(e){return n(e),!o||o(e)}})},{38:38,62:62}],243:[function(e,t,r){var a=e(62);a(a.S,\"Reflect\",{ownKeys:e(111)})},{111:111,62:62}],244:[function(e,t,r){var a=e(62),n=e(38),o=Object.preventExtensions;a(a.S,\"Reflect\",{preventExtensions:function(e){n(e);try{return o&&o(e),!0}catch(e){return!1}}})},{38:38,62:62}],245:[function(e,t,r){var a=e(62),n=e(122);n&&a(a.S,\"Reflect\",{setPrototypeOf:function(e,t){n.check(e,t);try{return n.set(e,t),!0}catch(e){return!1}}})},{122:122,62:62}],246:[function(e,t,r){var i=e(99),s=e(101),A=e(105),l=e(71),a=e(62),c=e(116),p=e(38),u=e(81);a(a.S,\"Reflect\",{set:function e(t,r,a){var n=arguments.length<4?t:arguments[3],o=s.f(p(t),r);if(!o){if(u(t=A(t)))return e(t,r,a,n);o=c(0)}if(l(o,\"value\")){if(!1===o.writable||!u(n))return!1;if(t=s.f(n,r)){if(t.get||t.set||!1===t.writable)return!1;t.value=a,i.f(n,r,t)}else i.f(n,r,c(0,a));return!0}return void 0!==o.set&&(o.set.call(n,a),!0)}})},{101:101,105:105,116:116,38:38,62:62,71:71,81:81,99:99}],247:[function(e,t,r){var a=e(70),o=e(75),n=e(99).f,i=e(103).f,s=e(82),A=e(66),l=d=a.RegExp,c=d.prototype,p=/a/g,u=/a/g,f=new d(p)!==p;if(e(58)&&(!f||e(64)(function(){return u[e(152)(\"match\")]=!1,d(p)!=p||d(u)==u||\"/a/i\"!=d(p,\"i\")}))){for(var d=function(e,t){var r=this instanceof d,a=s(e),n=void 0===t;return!r&&a&&e.constructor===d&&n?e:o(f?new l(a&&!n?e.source:e,t):l((a=e instanceof d)?e.source:e,a&&n?A.call(e):t),r?this:c,d)},h=i(l),g=0;h.length>g;)(t=>{t in d||n(d,t,{configurable:!0,get:function(){return l[t]},set:function(e){l[t]=e}})})(h[g++]);(c.constructor=d).prototype=c,e(118)(a,\"RegExp\",d)}e(123)(\"RegExp\")},{103:103,118:118,123:123,152:152,58:58,64:64,66:66,70:70,75:75,82:82,99:99}],248:[function(e,t,r){var a=e(120);e(62)({target:\"RegExp\",proto:!0,forced:a!==/./.exec},{exec:a})},{120:120,62:62}],249:[function(e,t,r){e(58)&&\"g\"!=/./g.flags&&e(99).f(RegExp.prototype,\"flags\",{configurable:!0,get:e(66)})},{58:58,66:66,99:99}],250:[function(e,t,r){var c=e(38),p=e(141),u=e(36),f=e(119);e(65)(\"match\",1,function(a,n,A,l){return[function(e){var t=a(this),r=null==e?void 0:e[n];return void 0!==r?r.call(e,t):new RegExp(e)[n](String(t))},function(e){var t=l(A,e,this);if(t.done)return t.value;var r=c(e),a=String(this);if(!r.global)return f(r,a);for(var n=r.unicode,o=[],i=r.lastIndex=0;null!==(s=f(r,a));){var s=String(s[0]);\"\"===(o[i]=s)&&(r.lastIndex=u(a,p(r.lastIndex),n)),i++}return 0===i?null:o}]})},{119:119,141:141,36:36,38:38,65:65}],251:[function(e,t,r){var w=e(38),C=e(142),P=e(141),S=e(139),L=e(36),E=e(119),T=Math.max,B=Math.min,D=Math.floor,k=/\\$([$&`']|\\d\\d?|<[^>]*>)/g,_=/\\$([$&`']|\\d\\d?)/g;e(65)(\"replace\",2,function(n,o,b,x){return[function(e,t){var r=n(this),a=null==e?void 0:e[o];return void 0!==a?a.call(e,r,t):b.call(String(r),e,t)},function(e,t){var r=x(b,e,this,t);if(r.done)return r.value;var a,n=w(e),o=String(this),i=\"function\"==typeof t,s=(i||(t=String(t)),n.global);s&&(a=n.unicode,n.lastIndex=0);for(var A=[];;){var l=E(n,o);if(null===l)break;if(A.push(l),!s)break;\"\"===String(l[0])&&(n.lastIndex=L(o,P(n.lastIndex),a))}for(var c,p=\"\",u=0,f=0;f{var c=s+o.length,p=A.length,t=_;return void 0!==l&&(l=C(l),t=k),b.call(e,t,function(e,t){var r;switch(t.charAt(0)){case\"$\":return\"$\";case\"&\":return o;case\"`\":return i.slice(0,s);case\"'\":return i.slice(c);case\"<\":r=l[t.slice(1,-1)];break;default:var a,n=+t;if(0==n)return e;if(p>>0,c=new RegExp(e.source,s+\"g\");(a=u.call(c,r))&&!(A<(n=c[P])&&(i.push(r.slice(A,a.index)),1>>0;if(0==s)return[];if(0===a.length)return null===x(i,a)?[a]:[];for(var A=0,l=0,c=[];l>10),t%1024+56320))}return r.join(\"\")}})},{137:137,62:62}],266:[function(e,t,r){var a=e(62),n=e(130);a(a.P+a.F*e(63)(\"includes\"),\"String\",{includes:function(e){return!!~n(this,e,\"includes\").indexOf(e,1=e.length?{value:void 0,done:!0}:(e=a(e,t),this._i+=e.length,{value:e,done:!1})})},{129:129,85:85}],269:[function(e,t,r){e(131)(\"link\",function(t){return function(e){return t(this,\"a\",\"href\",e)}})},{131:131}],270:[function(e,t,r){var a=e(62),i=e(140),s=e(141);a(a.S,\"String\",{raw:function(e){for(var t=i(e.raw),r=s(t.length),a=arguments.length,n=[],o=0;on;)l(B,t=r[n++])||t==E||t==z||a.push(t);return a}function i(e){for(var t,r=e===k,a=Z(r?D:m(e)),n=[],o=0;a.length>o;)!l(B,t=a[o++])||r&&!l(k,t)||n.push(B[t]);return n}function s(e,t,r){return e===k&&s(D,t,r),g(e),t=v(t,!0),g(r),(l(B,t)?(r.enumerable?(l(e,E)&&e[E][t]&&(e[E][t]=!1),r=b(r,{enumerable:y(0,!1)})):(l(e,E)||w(e,E,y(1,{})),e[E][t]=!0),F):w)(e,t,r)}var A=e(70),l=e(71),c=e(58),p=e(62),M=e(118),z=e(94).KEY,u=e(64),f=e(126),d=e(124),U=e(147),h=e(152),j=e(151),G=e(150),Q=e(61),W=e(79),g=e(38),Y=e(81),X=e(142),m=e(140),v=e(143),y=e(116),b=e(98),H=e(102),V=e(101),x=e(104),q=e(99),J=e(107),K=V.f,w=q.f,Z=H.f,C=A.Symbol,P=A.JSON,S=P&&P.stringify,L=\"prototype\",E=h(\"_hidden\"),$=h(\"toPrimitive\"),ee={}.propertyIsEnumerable,T=f(\"symbol-registry\"),B=f(\"symbols\"),D=f(\"op-symbols\"),k=Object[L],f=\"function\"==typeof C&&!!x.f,_=A.QObject,N=!_||!_[L]||!_[L].findChild,F=c&&u(function(){return 7!=b(w({},\"a\",{get:function(){return w(this,\"a\",{value:7}).a}})).a})?function(e,t,r){var a=K(k,t);a&&delete k[t],w(e,t,r),a&&e!==k&&w(k,t,a)}:w,I=f&&\"symbol\"==typeof C.iterator?function(e){return\"symbol\"==typeof e}:function(e){return e instanceof C};f||(M((C=function(){if(this instanceof C)throw TypeError(\"Symbol is not a constructor!\");var t=U(0re;)h(te[re++]);for(var ae=J(h.store),ne=0;ae.length>ne;)G(ae[ne++]);p(p.S+p.F*!f,\"Symbol\",{for:function(e){return l(T,e+=\"\")?T[e]:T[e]=C(e)},keyFor:function(e){if(!I(e))throw TypeError(e+\" is not a symbol!\");for(var t in T)if(T[t]===e)return t},useSetter:function(){N=!0},useSimple:function(){N=!1}}),p(p.S+p.F*!f,\"Object\",{create:function(e,t){return void 0===t?b(e):r(b(e),t)},defineProperty:s,defineProperties:r,getOwnPropertyDescriptor:n,getOwnPropertyNames:o,getOwnPropertySymbols:i});_=u(function(){x.f(1)});p(p.S+p.F*_,\"Object\",{getOwnPropertySymbols:function(e){return x.f(X(e))}}),P&&p(p.S+p.F*(!f||u(function(){var e=C();return\"[null]\"!=S([e])||\"{}\"!=S({a:e})||\"{}\"!=S(Object(e))})),\"JSON\",{stringify:function(e){for(var t,r,a=[e],n=1;ns;)void 0!==(r=n(a,t=o[s++]))&&p(i,t,r);return i}})},{101:101,111:111,140:140,53:53,62:62}],296:[function(e,t,r){var a=e(62),n=e(110)(!1);a(a.S,\"Object\",{values:function(e){return n(e)}})},{110:110,62:62}],297:[function(e,t,r){var a=e(62),n=e(52),o=e(70),i=e(127),s=e(115);a(a.P+a.R,\"Promise\",{finally:function(t){var r=i(this,n.Promise||o.Promise),e=\"function\"==typeof t;return this.then(e?function(e){return s(r,t()).then(function(){return e})}:t,e?function(e){return s(r,t()).then(function(){throw e})}:t)}})},{115:115,127:127,52:52,62:62,70:70}],298:[function(e,t,r){var a=e(62),n=e(132),e=e(148),e=/Version\\/10\\.\\d+(\\.\\d+)?( Mobile\\/\\w+)? Safari\\//.test(e);a(a.P+a.F*e,\"String\",{padEnd:function(e){return n(this,e,1{function c(e,i,s,A){return new(s=s||Promise)(function(r,t){function a(e){try{o(A.next(e))}catch(e){t(e)}}function n(e){try{o(A.throw(e))}catch(e){t(e)}}function o(e){var t;e.done?r(e.value):((t=e.value)instanceof s?t:new s(function(e){e(t)})).then(a,n)}o((A=A.apply(e,i||[])).next())})}let R=914400,m=12700,A=\"\\r\\n\",D=/^[0-9a-fA-F]{6}$/,k=1.67,_=27,u={type:\"solid\",color:\"666666\",pt:1},Y=[.05,.1,.05,.1],p={color:\"363636\",pt:1},f={color:\"888888\",style:\"solid\",size:1,cap:\"flat\"},d=\"000000\",v=12,N=18,o=\"LAYOUT_16x9\",t=\"DEFAULT\",l={type:\"outer\",blur:3,offset:23e3/12700,angle:90,color:\"000000\",opacity:.35,rotateWithShape:!0},y=[.5,.5,.5,.5],X={color:\"000000\"},F={size:8,color:\"FFFFFF\",opacity:.75},h=\"2094734552\",I=\"2094734553\",g=\"2094734554\",H=\"2094734555\",V=\"2094734556\",r=\"ABCDEFGHIJKLMNOPQRSTUVWXYZ\".split(\"\"),q=[\"C0504D\",\"4F81BD\",\"9BBB59\",\"8064A2\",\"4BACC6\",\"F79646\",\"628FC6\",\"C86360\",\"C0504D\",\"4F81BD\",\"9BBB59\",\"8064A2\",\"4BACC6\",\"F79646\",\"628FC6\",\"C86360\"],J=[\"5DA5DA\",\"FAA43A\",\"60BD68\",\"F17CB0\",\"B2912F\",\"B276B2\",\"DECF3F\",\"F15854\",\"A7A7A7\",\"5DA5DA\",\"FAA43A\",\"60BD68\",\"F17CB0\",\"B2912F\",\"B276B2\",\"DECF3F\",\"F15854\",\"A7A7A7\"];var i,s,a,K,Z,n,$,ee,b,x,te,w,O,re,C,e;(e=i=i||{}).left=\"left\",e.center=\"center\",e.right=\"right\",e.justify=\"justify\",(e=s=s||{}).b=\"b\",e.ctr=\"ctr\",e.t=\"t\";let ae=\"{F7021451-1387-4CA6-816F-3879F97B5CBC}\",P=((e=a=a||{}).arraybuffer=\"arraybuffer\",e.base64=\"base64\",e.binarystring=\"binarystring\",e.blob=\"blob\",e.nodebuffer=\"nodebuffer\",e.uint8array=\"uint8array\",(e=K=K||{}).area=\"area\",e.bar=\"bar\",e.bar3d=\"bar3D\",e.bubble=\"bubble\",e.bubble3d=\"bubble3D\",e.doughnut=\"doughnut\",e.line=\"line\",e.pie=\"pie\",e.radar=\"radar\",e.scatter=\"scatter\",(e=Z=Z||{}).accentBorderCallout1=\"accentBorderCallout1\",e.accentBorderCallout2=\"accentBorderCallout2\",e.accentBorderCallout3=\"accentBorderCallout3\",e.accentCallout1=\"accentCallout1\",e.accentCallout2=\"accentCallout2\",e.accentCallout3=\"accentCallout3\",e.actionButtonBackPrevious=\"actionButtonBackPrevious\",e.actionButtonBeginning=\"actionButtonBeginning\",e.actionButtonBlank=\"actionButtonBlank\",e.actionButtonDocument=\"actionButtonDocument\",e.actionButtonEnd=\"actionButtonEnd\",e.actionButtonForwardNext=\"actionButtonForwardNext\",e.actionButtonHelp=\"actionButtonHelp\",e.actionButtonHome=\"actionButtonHome\",e.actionButtonInformation=\"actionButtonInformation\",e.actionButtonMovie=\"actionButtonMovie\",e.actionButtonReturn=\"actionButtonReturn\",e.actionButtonSound=\"actionButtonSound\",e.arc=\"arc\",e.bentArrow=\"bentArrow\",e.bentUpArrow=\"bentUpArrow\",e.bevel=\"bevel\",e.blockArc=\"blockArc\",e.borderCallout1=\"borderCallout1\",e.borderCallout2=\"borderCallout2\",e.borderCallout3=\"borderCallout3\",e.bracePair=\"bracePair\",e.bracketPair=\"bracketPair\",e.callout1=\"callout1\",e.callout2=\"callout2\",e.callout3=\"callout3\",e.can=\"can\",e.chartPlus=\"chartPlus\",e.chartStar=\"chartStar\",e.chartX=\"chartX\",e.chevron=\"chevron\",e.chord=\"chord\",e.circularArrow=\"circularArrow\",e.cloud=\"cloud\",e.cloudCallout=\"cloudCallout\",e.corner=\"corner\",e.cornerTabs=\"cornerTabs\",e.cube=\"cube\",e.curvedDownArrow=\"curvedDownArrow\",e.curvedLeftArrow=\"curvedLeftArrow\",e.curvedRightArrow=\"curvedRightArrow\",e.curvedUpArrow=\"curvedUpArrow\",e.custGeom=\"custGeom\",e.decagon=\"decagon\",e.diagStripe=\"diagStripe\",e.diamond=\"diamond\",e.dodecagon=\"dodecagon\",e.donut=\"donut\",e.doubleWave=\"doubleWave\",e.downArrow=\"downArrow\",e.downArrowCallout=\"downArrowCallout\",e.ellipse=\"ellipse\",e.ellipseRibbon=\"ellipseRibbon\",e.ellipseRibbon2=\"ellipseRibbon2\",e.flowChartAlternateProcess=\"flowChartAlternateProcess\",e.flowChartCollate=\"flowChartCollate\",e.flowChartConnector=\"flowChartConnector\",e.flowChartDecision=\"flowChartDecision\",e.flowChartDelay=\"flowChartDelay\",e.flowChartDisplay=\"flowChartDisplay\",e.flowChartDocument=\"flowChartDocument\",e.flowChartExtract=\"flowChartExtract\",e.flowChartInputOutput=\"flowChartInputOutput\",e.flowChartInternalStorage=\"flowChartInternalStorage\",e.flowChartMagneticDisk=\"flowChartMagneticDisk\",e.flowChartMagneticDrum=\"flowChartMagneticDrum\",e.flowChartMagneticTape=\"flowChartMagneticTape\",e.flowChartManualInput=\"flowChartManualInput\",e.flowChartManualOperation=\"flowChartManualOperation\",e.flowChartMerge=\"flowChartMerge\",e.flowChartMultidocument=\"flowChartMultidocument\",e.flowChartOfflineStorage=\"flowChartOfflineStorage\",e.flowChartOffpageConnector=\"flowChartOffpageConnector\",e.flowChartOnlineStorage=\"flowChartOnlineStorage\",e.flowChartOr=\"flowChartOr\",e.flowChartPredefinedProcess=\"flowChartPredefinedProcess\",e.flowChartPreparation=\"flowChartPreparation\",e.flowChartProcess=\"flowChartProcess\",e.flowChartPunchedCard=\"flowChartPunchedCard\",e.flowChartPunchedTape=\"flowChartPunchedTape\",e.flowChartSort=\"flowChartSort\",e.flowChartSummingJunction=\"flowChartSummingJunction\",e.flowChartTerminator=\"flowChartTerminator\",e.folderCorner=\"folderCorner\",e.frame=\"frame\",e.funnel=\"funnel\",e.gear6=\"gear6\",e.gear9=\"gear9\",e.halfFrame=\"halfFrame\",e.heart=\"heart\",e.heptagon=\"heptagon\",e.hexagon=\"hexagon\",e.homePlate=\"homePlate\",e.horizontalScroll=\"horizontalScroll\",e.irregularSeal1=\"irregularSeal1\",e.irregularSeal2=\"irregularSeal2\",e.leftArrow=\"leftArrow\",e.leftArrowCallout=\"leftArrowCallout\",e.leftBrace=\"leftBrace\",e.leftBracket=\"leftBracket\",e.leftCircularArrow=\"leftCircularArrow\",e.leftRightArrow=\"leftRightArrow\",e.leftRightArrowCallout=\"leftRightArrowCallout\",e.leftRightCircularArrow=\"leftRightCircularArrow\",e.leftRightRibbon=\"leftRightRibbon\",e.leftRightUpArrow=\"leftRightUpArrow\",e.leftUpArrow=\"leftUpArrow\",e.lightningBolt=\"lightningBolt\",e.line=\"line\",e.lineInv=\"lineInv\",e.mathDivide=\"mathDivide\",e.mathEqual=\"mathEqual\",e.mathMinus=\"mathMinus\",e.mathMultiply=\"mathMultiply\",e.mathNotEqual=\"mathNotEqual\",e.mathPlus=\"mathPlus\",e.moon=\"moon\",e.noSmoking=\"noSmoking\",e.nonIsoscelesTrapezoid=\"nonIsoscelesTrapezoid\",e.notchedRightArrow=\"notchedRightArrow\",e.octagon=\"octagon\",e.parallelogram=\"parallelogram\",e.pentagon=\"pentagon\",e.pie=\"pie\",e.pieWedge=\"pieWedge\",e.plaque=\"plaque\",e.plaqueTabs=\"plaqueTabs\",e.plus=\"plus\",e.quadArrow=\"quadArrow\",e.quadArrowCallout=\"quadArrowCallout\",e.rect=\"rect\",e.ribbon=\"ribbon\",e.ribbon2=\"ribbon2\",e.rightArrow=\"rightArrow\",e.rightArrowCallout=\"rightArrowCallout\",e.rightBrace=\"rightBrace\",e.rightBracket=\"rightBracket\",e.round1Rect=\"round1Rect\",e.round2DiagRect=\"round2DiagRect\",e.round2SameRect=\"round2SameRect\",e.roundRect=\"roundRect\",e.rtTriangle=\"rtTriangle\",e.smileyFace=\"smileyFace\",e.snip1Rect=\"snip1Rect\",e.snip2DiagRect=\"snip2DiagRect\",e.snip2SameRect=\"snip2SameRect\",e.snipRoundRect=\"snipRoundRect\",e.squareTabs=\"squareTabs\",e.star10=\"star10\",e.star12=\"star12\",e.star16=\"star16\",e.star24=\"star24\",e.star32=\"star32\",e.star4=\"star4\",e.star5=\"star5\",e.star6=\"star6\",e.star7=\"star7\",e.star8=\"star8\",e.stripedRightArrow=\"stripedRightArrow\",e.sun=\"sun\",e.swooshArrow=\"swooshArrow\",e.teardrop=\"teardrop\",e.trapezoid=\"trapezoid\",e.triangle=\"triangle\",e.upArrow=\"upArrow\",e.upArrowCallout=\"upArrowCallout\",e.upDownArrow=\"upDownArrow\",e.upDownArrowCallout=\"upDownArrowCallout\",e.uturnArrow=\"uturnArrow\",e.verticalScroll=\"verticalScroll\",e.wave=\"wave\",e.wedgeEllipseCallout=\"wedgeEllipseCallout\",e.wedgeRectCallout=\"wedgeRectCallout\",e.wedgeRoundRectCallout=\"wedgeRoundRectCallout\",(e=n=n||{}).text1=\"tx1\",e.text2=\"tx2\",e.background1=\"bg1\",e.background2=\"bg2\",e.accent1=\"accent1\",e.accent2=\"accent2\",e.accent3=\"accent3\",e.accent4=\"accent4\",e.accent5=\"accent5\",e.accent6=\"accent6\",(e=$=$||{}).left=\"left\",e.center=\"center\",e.right=\"right\",e.justify=\"justify\",(e=ee=ee||{}).top=\"top\",e.middle=\"middle\",e.bottom=\"bottom\",(e=b=b||{}).ACTION_BUTTON_BACK_OR_PREVIOUS=\"actionButtonBackPrevious\",e.ACTION_BUTTON_BEGINNING=\"actionButtonBeginning\",e.ACTION_BUTTON_CUSTOM=\"actionButtonBlank\",e.ACTION_BUTTON_DOCUMENT=\"actionButtonDocument\",e.ACTION_BUTTON_END=\"actionButtonEnd\",e.ACTION_BUTTON_FORWARD_OR_NEXT=\"actionButtonForwardNext\",e.ACTION_BUTTON_HELP=\"actionButtonHelp\",e.ACTION_BUTTON_HOME=\"actionButtonHome\",e.ACTION_BUTTON_INFORMATION=\"actionButtonInformation\",e.ACTION_BUTTON_MOVIE=\"actionButtonMovie\",e.ACTION_BUTTON_RETURN=\"actionButtonReturn\",e.ACTION_BUTTON_SOUND=\"actionButtonSound\",e.ARC=\"arc\",e.BALLOON=\"wedgeRoundRectCallout\",e.BENT_ARROW=\"bentArrow\",e.BENT_UP_ARROW=\"bentUpArrow\",e.BEVEL=\"bevel\",e.BLOCK_ARC=\"blockArc\",e.CAN=\"can\",e.CHART_PLUS=\"chartPlus\",e.CHART_STAR=\"chartStar\",e.CHART_X=\"chartX\",e.CHEVRON=\"chevron\",e.CHORD=\"chord\",e.CIRCULAR_ARROW=\"circularArrow\",e.CLOUD=\"cloud\",e.CLOUD_CALLOUT=\"cloudCallout\",e.CORNER=\"corner\",e.CORNER_TABS=\"cornerTabs\",e.CROSS=\"plus\",e.CUBE=\"cube\",e.CURVED_DOWN_ARROW=\"curvedDownArrow\",e.CURVED_DOWN_RIBBON=\"ellipseRibbon\",e.CURVED_LEFT_ARROW=\"curvedLeftArrow\",e.CURVED_RIGHT_ARROW=\"curvedRightArrow\",e.CURVED_UP_ARROW=\"curvedUpArrow\",e.CURVED_UP_RIBBON=\"ellipseRibbon2\",e.CUSTOM_GEOMETRY=\"custGeom\",e.DECAGON=\"decagon\",e.DIAGONAL_STRIPE=\"diagStripe\",e.DIAMOND=\"diamond\",e.DODECAGON=\"dodecagon\",e.DONUT=\"donut\",e.DOUBLE_BRACE=\"bracePair\",e.DOUBLE_BRACKET=\"bracketPair\",e.DOUBLE_WAVE=\"doubleWave\",e.DOWN_ARROW=\"downArrow\",e.DOWN_ARROW_CALLOUT=\"downArrowCallout\",e.DOWN_RIBBON=\"ribbon\",e.EXPLOSION1=\"irregularSeal1\",e.EXPLOSION2=\"irregularSeal2\",e.FLOWCHART_ALTERNATE_PROCESS=\"flowChartAlternateProcess\",e.FLOWCHART_CARD=\"flowChartPunchedCard\",e.FLOWCHART_COLLATE=\"flowChartCollate\",e.FLOWCHART_CONNECTOR=\"flowChartConnector\",e.FLOWCHART_DATA=\"flowChartInputOutput\",e.FLOWCHART_DECISION=\"flowChartDecision\",e.FLOWCHART_DELAY=\"flowChartDelay\",e.FLOWCHART_DIRECT_ACCESS_STORAGE=\"flowChartMagneticDrum\",e.FLOWCHART_DISPLAY=\"flowChartDisplay\",e.FLOWCHART_DOCUMENT=\"flowChartDocument\",e.FLOWCHART_EXTRACT=\"flowChartExtract\",e.FLOWCHART_INTERNAL_STORAGE=\"flowChartInternalStorage\",e.FLOWCHART_MAGNETIC_DISK=\"flowChartMagneticDisk\",e.FLOWCHART_MANUAL_INPUT=\"flowChartManualInput\",e.FLOWCHART_MANUAL_OPERATION=\"flowChartManualOperation\",e.FLOWCHART_MERGE=\"flowChartMerge\",e.FLOWCHART_MULTIDOCUMENT=\"flowChartMultidocument\",e.FLOWCHART_OFFLINE_STORAGE=\"flowChartOfflineStorage\",e.FLOWCHART_OFFPAGE_CONNECTOR=\"flowChartOffpageConnector\",e.FLOWCHART_OR=\"flowChartOr\",e.FLOWCHART_PREDEFINED_PROCESS=\"flowChartPredefinedProcess\",e.FLOWCHART_PREPARATION=\"flowChartPreparation\",e.FLOWCHART_PROCESS=\"flowChartProcess\",e.FLOWCHART_PUNCHED_TAPE=\"flowChartPunchedTape\",e.FLOWCHART_SEQUENTIAL_ACCESS_STORAGE=\"flowChartMagneticTape\",e.FLOWCHART_SORT=\"flowChartSort\",e.FLOWCHART_STORED_DATA=\"flowChartOnlineStorage\",e.FLOWCHART_SUMMING_JUNCTION=\"flowChartSummingJunction\",e.FLOWCHART_TERMINATOR=\"flowChartTerminator\",e.FOLDED_CORNER=\"folderCorner\",e.FRAME=\"frame\",e.FUNNEL=\"funnel\",e.GEAR_6=\"gear6\",e.GEAR_9=\"gear9\",e.HALF_FRAME=\"halfFrame\",e.HEART=\"heart\",e.HEPTAGON=\"heptagon\",e.HEXAGON=\"hexagon\",e.HORIZONTAL_SCROLL=\"horizontalScroll\",e.ISOSCELES_TRIANGLE=\"triangle\",e.LEFT_ARROW=\"leftArrow\",e.LEFT_ARROW_CALLOUT=\"leftArrowCallout\",e.LEFT_BRACE=\"leftBrace\",e.LEFT_BRACKET=\"leftBracket\",e.LEFT_CIRCULAR_ARROW=\"leftCircularArrow\",e.LEFT_RIGHT_ARROW=\"leftRightArrow\",e.LEFT_RIGHT_ARROW_CALLOUT=\"leftRightArrowCallout\",e.LEFT_RIGHT_CIRCULAR_ARROW=\"leftRightCircularArrow\",e.LEFT_RIGHT_RIBBON=\"leftRightRibbon\",e.LEFT_RIGHT_UP_ARROW=\"leftRightUpArrow\",e.LEFT_UP_ARROW=\"leftUpArrow\",e.LIGHTNING_BOLT=\"lightningBolt\",e.LINE_CALLOUT_1=\"borderCallout1\",e.LINE_CALLOUT_1_ACCENT_BAR=\"accentCallout1\",e.LINE_CALLOUT_1_BORDER_AND_ACCENT_BAR=\"accentBorderCallout1\",e.LINE_CALLOUT_1_NO_BORDER=\"callout1\",e.LINE_CALLOUT_2=\"borderCallout2\",e.LINE_CALLOUT_2_ACCENT_BAR=\"accentCallout2\",e.LINE_CALLOUT_2_BORDER_AND_ACCENT_BAR=\"accentBorderCallout2\",e.LINE_CALLOUT_2_NO_BORDER=\"callout2\",e.LINE_CALLOUT_3=\"borderCallout3\",e.LINE_CALLOUT_3_ACCENT_BAR=\"accentCallout3\",e.LINE_CALLOUT_3_BORDER_AND_ACCENT_BAR=\"accentBorderCallout3\",e.LINE_CALLOUT_3_NO_BORDER=\"callout3\",e.LINE_CALLOUT_4=\"borderCallout4\",e.LINE_CALLOUT_4_ACCENT_BAR=\"accentCallout3=4\",e.LINE_CALLOUT_4_BORDER_AND_ACCENT_BAR=\"accentBorderCallout4\",e.LINE_CALLOUT_4_NO_BORDER=\"callout4\",e.LINE=\"line\",e.LINE_INVERSE=\"lineInv\",e.MATH_DIVIDE=\"mathDivide\",e.MATH_EQUAL=\"mathEqual\",e.MATH_MINUS=\"mathMinus\",e.MATH_MULTIPLY=\"mathMultiply\",e.MATH_NOT_EQUAL=\"mathNotEqual\",e.MATH_PLUS=\"mathPlus\",e.MOON=\"moon\",e.NON_ISOSCELES_TRAPEZOID=\"nonIsoscelesTrapezoid\",e.NOTCHED_RIGHT_ARROW=\"notchedRightArrow\",e.NO_SYMBOL=\"noSmoking\",e.OCTAGON=\"octagon\",e.OVAL=\"ellipse\",e.OVAL_CALLOUT=\"wedgeEllipseCallout\",e.PARALLELOGRAM=\"parallelogram\",e.PENTAGON=\"homePlate\",e.PIE=\"pie\",e.PIE_WEDGE=\"pieWedge\",e.PLAQUE=\"plaque\",e.PLAQUE_TABS=\"plaqueTabs\",e.QUAD_ARROW=\"quadArrow\",e.QUAD_ARROW_CALLOUT=\"quadArrowCallout\",e.RECTANGLE=\"rect\",e.RECTANGULAR_CALLOUT=\"wedgeRectCallout\",e.REGULAR_PENTAGON=\"pentagon\",e.RIGHT_ARROW=\"rightArrow\",e.RIGHT_ARROW_CALLOUT=\"rightArrowCallout\",e.RIGHT_BRACE=\"rightBrace\",e.RIGHT_BRACKET=\"rightBracket\",e.RIGHT_TRIANGLE=\"rtTriangle\",e.ROUNDED_RECTANGLE=\"roundRect\",e.ROUNDED_RECTANGULAR_CALLOUT=\"wedgeRoundRectCallout\",e.ROUND_1_RECTANGLE=\"round1Rect\",e.ROUND_2_DIAG_RECTANGLE=\"round2DiagRect\",e.ROUND_2_SAME_RECTANGLE=\"round2SameRect\",e.SMILEY_FACE=\"smileyFace\",e.SNIP_1_RECTANGLE=\"snip1Rect\",e.SNIP_2_DIAG_RECTANGLE=\"snip2DiagRect\",e.SNIP_2_SAME_RECTANGLE=\"snip2SameRect\",e.SNIP_ROUND_RECTANGLE=\"snipRoundRect\",e.SQUARE_TABS=\"squareTabs\",e.STAR_10_POINT=\"star10\",e.STAR_12_POINT=\"star12\",e.STAR_16_POINT=\"star16\",e.STAR_24_POINT=\"star24\",e.STAR_32_POINT=\"star32\",e.STAR_4_POINT=\"star4\",e.STAR_5_POINT=\"star5\",e.STAR_6_POINT=\"star6\",e.STAR_7_POINT=\"star7\",e.STAR_8_POINT=\"star8\",e.STRIPED_RIGHT_ARROW=\"stripedRightArrow\",e.SUN=\"sun\",e.SWOOSH_ARROW=\"swooshArrow\",e.TEAR=\"teardrop\",e.TRAPEZOID=\"trapezoid\",e.UP_ARROW=\"upArrow\",e.UP_ARROW_CALLOUT=\"upArrowCallout\",e.UP_DOWN_ARROW=\"upDownArrow\",e.UP_DOWN_ARROW_CALLOUT=\"upDownArrowCallout\",e.UP_RIBBON=\"ribbon2\",e.U_TURN_ARROW=\"uturnArrow\",e.VERTICAL_SCROLL=\"verticalScroll\",e.WAVE=\"wave\",(e=x=x||{}).AREA=\"area\",e.BAR=\"bar\",e.BAR3D=\"bar3D\",e.BUBBLE=\"bubble\",e.BUBBLE3D=\"bubble3D\",e.DOUGHNUT=\"doughnut\",e.LINE=\"line\",e.PIE=\"pie\",e.RADAR=\"radar\",e.SCATTER=\"scatter\",(e=te=te||{}).TEXT1=\"tx1\",e.TEXT2=\"tx2\",e.BACKGROUND1=\"bg1\",e.BACKGROUND2=\"bg2\",e.ACCENT1=\"accent1\",e.ACCENT2=\"accent2\",e.ACCENT3=\"accent3\",e.ACCENT4=\"accent4\",e.ACCENT5=\"accent5\",e.ACCENT6=\"accent6\",(e=w=w||{}).chart=\"chart\",e.image=\"image\",e.line=\"line\",e.rect=\"rect\",e.text=\"text\",e.placeholder=\"placeholder\",(e=O=O||{}).chart=\"chart\",e.hyperlink=\"hyperlink\",e.image=\"image\",e.media=\"media\",e.online=\"online\",e.placeholder=\"placeholder\",e.table=\"table\",e.tablecell=\"tablecell\",e.text=\"text\",e.notes=\"notes\",(e=re=re||{}).title=\"title\",e.body=\"body\",e.image=\"pic\",e.chart=\"chart\",e.table=\"tbl\",e.media=\"media\",(e=C=C||{}).DEFAULT=\"•\",e.CHECK=\"✓\",e.STAR=\"★\",e.TRIANGLE=\"▶\",\"data:image/png;base64,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\");function M(e,t,r){return\"number\"==typeof(e=\"string\"!=typeof e||isNaN(Number(e))?e:Number(e))&&e<100?U(e):\"number\"==typeof e&&100<=e?e:\"string\"==typeof e&&e.includes(\"%\")?(!t||\"X\"!==t)&&t&&\"Y\"===t?Math.round(parseFloat(e)/100*r.height):Math.round(parseFloat(e)/100*r.width):0}function ne(e){return e.replace(/[xy]/g,function(e){var t=16*Math.random()|0;return(\"x\"===e?t:3&t|8).toString(16)})}function z(e){return void 0===e||null==e?\"\":e.toString().replace(/&/g,\"&\").replace(//g,\">\").replace(/\"/g,\""\").replace(/'/g,\"'\")}function U(e){return\"number\"==typeof e&&100${t}`:``}function W(e){let t=\"solid\",r=\"\",a=\"\",n=\"\";return e&&(\"string\"==typeof e?r=e:(e.type&&(t=e.type),e.color&&(r=e.color),e.alpha&&(a+=``),e.transparency&&(a+=``)),\"solid\"===t?n+=`${Q(r,a)}`:n+=\"\"),n}function S(e){return e._rels.length+e._relsChart.length+e._relsMedia.length+1}function se(e){if(e&&\"object\"==typeof e)return\"outer\"!==e.type&&\"inner\"!==e.type&&\"none\"!==e.type&&(console.warn(\"Warning: shadow.type options are `outer`, `inner` or `none`.\"),e.type=\"outer\"),e.angle&&((isNaN(Number(e.angle))||e.angle<0||359{e=(e=e||{_type:O.tablecell}).options||null;o+=Number(null!==e&&e.colspan?e.colspan:1)}),p.verbose&&console.log(\"| numCols ......................................... = \"+o),!A&&p.colW&&(c=Array.isArray(p.colW)?p.colW.reduce((e,t)=>e+t)*R:p.colW*o||0,p.verbose)&&console.log(\"| tableCalcW ...................................... = \"+c/R),n=c||U((i?i/R:a[1])+a[3]),p.verbose&&console.log(\"| emuSlideTabW .................................... = \"+(n/R).toFixed(1)),!p.colW||!Array.isArray(p.colW))if(p.colW&&!isNaN(Number(p.colW))){let e=[];(t[0]||[]).forEach(()=>e.push(p.colW)),p.colW=[],e.forEach(e=>{Array.isArray(p.colW)&&p.colW.push(e)})}else{p.colW=[];for(let e=0;e{let n=[],r=0,a=0,o=[],i=(t.forEach(e=>{var t;o.push({_type:O.tablecell,text:[],options:e.options}),e.options.margin&&1<=e.options.margin[0]?(null!=(t=e.options)&&t.margin&&e.options.margin[0]&&j(e.options.margin[0])>r?r=j(e.options.margin[0]):null!=p&&p.margin&&p.margin[0]&&j(p.margin[0])>r&&(r=j(p.margin[0])),null!=(t=e.options)&&t.margin&&e.options.margin[2]&&j(e.options.margin[2])>a?a=j(e.options.margin[2]):null!=p&&p.margin&&p.margin[2]&&j(p.margin[2])>a&&(a=j(p.margin[2]))):(null!=(t=e.options)&&t.margin&&e.options.margin[0]&&U(e.options.margin[0])>r?r=U(e.options.margin[0]):null!=p&&p.margin&&p.margin[0]&&U(p.margin[0])>r&&(r=U(p.margin[0])),null!=(t=e.options)&&t.margin&&e.options.margin[2]&&U(e.options.margin[2])>a?a=U(e.options.margin[2]):null!=p&&p.margin&&p.margin[2]&&U(p.margin[2])>a&&(a=U(p.margin[2])))}),h(),f+=r+a,p.verbose&&0===e&&console.log(`| SLIDE [${d.length}]: emuSlideTabH ...... = ${(u/R).toFixed(1)} `),t.forEach((r,a)=>{var e={_type:O.tablecell,_lines:null,_lineHeight:U((null!=(e=r.options)&&e.fontSize?r.options.fontSize:p.fontSize||v)*(k+(p.autoPageLineWeight||0))/100),text:[],options:r.options};e.options.rowspan&&(e._lineHeight=0),e.options.autoPageCharWeight=p.autoPageCharWeight||null;let t=p.colW[a];r.options.colspan&&Array.isArray(p.colW)&&(t=p.colW.filter((e,t)=>a<=t&&te+t)),e._lines=((e,t)=>{var r=2.3+(null!=(r=e.options)&&r.autoPageCharWeight?e.options.autoPageCharWeight:0);let a=Math.floor(t/m*R)/((null!=(t=e.options)&&t.fontSize?e.options.fontSize:v)/r),n=[],o=[],i=[],s=[],A=(e.text&&0===e.text.toString().trim().length?o.push({_type:O.tablecell,text:\" \"}):\"number\"==typeof e.text||\"string\"==typeof e.text?o.push({_type:O.tablecell,text:(e.text||\"\").toString().trim()}):Array.isArray(e.text)&&(o=e.text),[]);return o.forEach(t=>{var e;\"string\"==typeof t.text&&(1{A.push({_type:O.tablecell,text:e,options:Object.assign(Object.assign({},t.options),{breakLine:!0})})}):A.push({_type:O.tablecell,text:t.text.trim(),options:t.options}),null!=(e=t.options))&&e.breakLine&&(i.push(A),A=[]),0{e.forEach(a=>{let n=[];let o=String(a.text).split(\" \");o.forEach((e,t)=>{var r=Object.assign({},a.options);null!=r&&r.breakLine&&(r.breakLine=t+1===o.length),n.push({_type:O.tablecell,text:e+(t+1{let t=[],r=\"\";e.forEach(e=>{r.length+e.text.length>a&&(n.push(t),t=[],r=\"\"),t.push(e),r+=e.text.toString()}),0{e._lineHeight>=s&&(s=e._lineHeight)}),f+s>u&&(p.verbose&&(console.log(\"\\n|-----------------------------------------------------------------------|\"),console.log(`|-- NEW SLIDE CREATED (currTabH+currLineH > maxH) => ${(f/R).toFixed(2)} + ${(l._lineHeight/R).toFixed(2)} > `+u/R),console.log(\"|-----------------------------------------------------------------------|\\n\\n\")),0e.text.length).reduce((e,t)=>e+t)&&g.rows.push(o),d.push(g),c=[],g={rows:c},o=[],t.forEach(e=>o.push({_type:O.tablecell,text:[],options:e.options})),h(),f+=r+a,p.verbose&&console.log(`| SLIDE [${d.length}]: emuSlideTabH ...... = ${(u/R).toFixed(1)} `),f=0,(p.addHeaderToEach||p.autoPageRepeatHeader)&&p._arrObjTabHeadRows&&p._arrObjTabHeadRows.forEach(e=>{let t=[],r=0;e.forEach(e=>{t.push(e),e._lineHeight>r&&(r=e._lineHeight)}),g.rows.push(t),f+=r}),e=o[i]);var c=l._lines.shift(),l=(Array.isArray(e.text)&&(c?e.text=e.text.concat(c):0===e.text.length&&(e.text=e.text.concat({_type:O.tablecell,text:\"\"}))),i===n.length-1&&(f+=s),i=ie._lines.length).reduce((e,t)=>e+t));0===l&&(A=!0)}0console.log(e)),console.log(\"|================================================|\\n\\n\")),d}let le=0;function ce(e,t,r,a){function n(e){e&&\"none\"!==e.style&&(void 0!==e.size&&(isNaN(Number(e.size))||e.size<=0)&&(console.warn(\"Warning: chart.gridLine.size must be greater than 0.\"),delete e.size),e.style&&![\"solid\",\"dash\",\"dot\"].includes(e.style)&&(console.warn(\"Warning: chart.gridLine.style options: `solid`, `dash`, `dot`.\"),delete e.style),e.cap)&&![\"flat\",\"square\",\"round\"].includes(e.cap)&&(console.warn(\"Warning: chart.gridLine.cap options: `flat`, `square`, `round`.\"),delete e.cap)}var o=++le,i={_type:null,text:null,options:null,chartRid:null};let s=null,A=[],l=(s=Array.isArray(t)?(t.forEach(e=>{A=A.concat(e.data)}),r||a):(A=r,a),A.forEach((e,t)=>{e._dataIndex=t,void 0===e.labels||Array.isArray(e.labels[0])||(e.labels=[e.labels])}),s&&\"object\"==typeof s?s:{});l._type=t,l.x=void 0===l.x||null==l.x||isNaN(Number(l.x))?1:l.x,l.y=void 0===l.y||null==l.y||isNaN(Number(l.y))?1:l.y,l.w=l.w||\"50%\",l.h=l.h||\"50%\",l.objectName=l.objectName?z(l.objectName):\"Chart \"+e._slideObjects.filter(e=>e._type===O.chart).length,[\"bar\",\"col\"].includes(l.barDir||\"\")||(l.barDir=\"col\"),l._type!==x.AREA||[\"stacked\",\"standard\",\"percentStacked\"].includes(l.barGrouping||\"\")||(l.barGrouping=\"standard\"),l._type!==x.BAR||[\"clustered\",\"stacked\",\"percentStacked\"].includes(l.barGrouping||\"\")||(l.barGrouping=\"clustered\"),l._type!==x.BAR3D||[\"clustered\",\"stacked\",\"standard\",\"percentStacked\"].includes(l.barGrouping||\"\")||(l.barGrouping=\"standard\"),null!=(r=l.barGrouping)&&r.includes(\"tacked\")&&!l.barGapWidthPct&&(l.barGapWidthPct=50),l.dataLabelPosition&&(l._type!==x.AREA&&l._type!==x.BAR3D&&l._type!==x.DOUGHNUT&&l._type!==x.RADAR||delete l.dataLabelPosition,l._type!==x.PIE||[\"bestFit\",\"ctr\",\"inEnd\",\"outEnd\"].includes(l.dataLabelPosition)||delete l.dataLabelPosition,l._type!==x.BUBBLE&&l._type!==x.BUBBLE3D&&l._type!==x.LINE&&l._type!==x.SCATTER||[\"b\",\"ctr\",\"l\",\"r\",\"t\"].includes(l.dataLabelPosition)||delete l.dataLabelPosition,l._type===x.BAR)&&([\"stacked\",\"percentStacked\"].includes(l.barGrouping||\"\")||[\"ctr\",\"inBase\",\"inEnd\"].includes(l.dataLabelPosition)||delete l.dataLabelPosition,[\"clustered\"].includes(l.barGrouping||\"\")||[\"ctr\",\"inBase\",\"inEnd\",\"outEnd\"].includes(l.dataLabelPosition)||delete l.dataLabelPosition),l.dataLabelBkgrdColors=!(!l.dataLabelBkgrdColors&&l.dataLabelBkgrdColors)&&l.dataLabelBkgrdColors,[\"b\",\"l\",\"r\",\"t\",\"tr\"].includes(l.legendPos||\"\")||(l.legendPos=\"r\"),[\"cone\",\"coneToMax\",\"box\",\"cylinder\",\"pyramid\",\"pyramidToMax\"].includes(l.bar3DShape||\"\")||(l.bar3DShape=\"box\"),[\"circle\",\"dash\",\"diamond\",\"dot\",\"none\",\"square\",\"triangle\"].includes(l.lineDataSymbol||\"\")||(l.lineDataSymbol=\"circle\"),[\"gap\",\"span\"].includes(l.displayBlanksAs||\"\")||(l.displayBlanksAs=\"span\"),[\"standard\",\"marker\",\"filled\"].includes(l.radarStyle||\"\")||(l.radarStyle=\"standard\"),l.lineDataSymbolSize=l.lineDataSymbolSize&&!isNaN(l.lineDataSymbolSize)?l.lineDataSymbolSize:6,l.lineDataSymbolLineSize=l.lineDataSymbolLineSize&&!isNaN(l.lineDataSymbolLineSize)?j(l.lineDataSymbolLineSize):j(.75),l.layout&&[\"x\",\"y\",\"w\",\"h\"].forEach(e=>{var t=l.layout[e];(isNaN(Number(t))||t<0||1e._type===O.image).length;if(p||c)if(p&&\"string\"!=typeof p)console.error(\"ERROR: addImage() 'path' should be a string, ex: {path:'/img/sample.png'} - you sent \"+String(p));else if(c&&\"string\"!=typeof c)console.error(\"ERROR: addImage() 'data' should be a string, ex: {data:'image/png;base64,NMP[...]'} - you sent \"+String(c));else if(c&&\"string\"==typeof c&&!c.toLowerCase().includes(\"base64,\"))console.error(\"ERROR: Image `data` value lacks a base64 header! Ex: 'image/png;base64,NMP[...]')\");else{let t=(p.substring(p.lastIndexOf(\"/\")+1).split(\"?\")[0].split(\".\").pop().split(\"#\")[0]||\"png\").toLowerCase();if(c&&/image\\/(\\w+);/.exec(c)&&0e.path&&e.path===p&&e.type===\"image/\"+t&&!e.isDuplicate)[0],e._relsMedia.push({path:p||\"preencoded.\"+t,type:\"image/\"+t,extn:t,data:c||\"\",rId:u,isDuplicate:!(null==n||!n.Target),Target:null!=n&&n.Target?n.Target:`../media/image-${e._slideNum}-${e._relsMedia.length+1}.`+t}),a.imageRid=u),\"object\"==typeof l){if(!l.url&&!l.slide)throw new Error(\"ERROR: `hyperlink` option requires either: `url` or `slide`\");e._rels.push({type:O.hyperlink,data:l.slide?\"slide\":\"dummy\",rId:++u,Target:l.url||l.slide.toString()}),l._rId=u,a.hyperlink=l}e._slideObjects.push(a)}else console.error(\"ERROR: addImage() requires either 'data' or 'path' parameter!\")}function ue(e,t,r){var r=\"object\"==typeof r?r:{},a=(r.line=r.line||{type:\"none\"},{_type:O.text,shape:t||b.RECTANGLE,options:r,text:null});if(!t)throw new Error(\"Missing/Invalid shape parameter! Example: `addShape(pptxgen.shapes.LINE, {x:1, y:1, w:1, h:1});`\");var t={type:r.line.type||\"solid\",color:r.line.color||\"333333\",transparency:r.line.transparency||0,width:r.line.width||1,dashType:r.line.dashType||\"solid\",beginArrowType:r.line.beginArrowType||null,endArrowType:r.line.endArrowType||null};\"object\"==typeof r.line&&\"none\"!==r.line.type&&(r.line=t),r.x=r.x||(0===r.x?0:1),r.y=r.y||(0===r.y?0:1),r.w=r.w||(0===r.w?0:1),r.h=r.h||(0===r.h?0:1),r.objectName=r.objectName?z(r.objectName):\"Shape \"+e._slideObjects.filter(e=>e._type===O.text).length,\"string\"==typeof r.line&&((t=t).color=String(r.line),r.line=t),\"number\"==typeof r.lineSize&&(r.line.width=r.lineSize),\"string\"==typeof r.lineDash&&(r.line.dashType=r.lineDash),\"string\"==typeof r.lineHead&&(r.line.beginArrowType=r.lineHead),\"string\"==typeof r.lineTail&&(r.line.endArrowType=r.lineTail),L(e,a),e._slideObjects.push(a)}function fe(r,e,t,a){let n={_type:a?O.placeholder:O.text,shape:(null==t?void 0:t.shape)||b.RECTANGLE,text:e&&0!==e.length?e:[{text:\"\",options:null}],options:t||{}};function o(t){var e;return t.placeholder||(t.color=t.color||n.options.color||r.color||d),(t.placeholder||a)&&(t.bullet=t.bullet||!1),(t=t.placeholder&&r._slideLayout&&r._slideLayout._slideObjects&&null!=(e=r._slideLayout._slideObjects.filter(e=>\"placeholder\"===e._type&&e.options&&e.options.placeholder&&e.options.placeholder===t.placeholder)[0])&&e.options?Object.assign(Object.assign({},t),e.options):t).objectName=t.objectName?z(t.objectName):\"Text \"+r._slideObjects.filter(e=>e._type===O.text).length,t.shape===b.LINE&&(e={type:t.line.type||\"solid\",color:t.line.color||\"333333\",transparency:t.line.transparency||0,width:t.line.width||1,dashType:t.line.dashType||\"solid\",beginArrowType:t.line.beginArrowType||null,endArrowType:t.line.endArrowType||null},\"object\"==typeof t.line&&(t.line=e),\"string\"==typeof t.line&&(e=e,\"string\"==typeof t.line&&(e.color=t.line),t.line=e),\"number\"==typeof t.lineSize&&(t.line.width=t.lineSize),\"string\"==typeof t.lineDash&&(t.line.dashType=t.lineDash),\"string\"==typeof t.lineHead&&(t.line.beginArrowType=t.lineHead),\"string\"==typeof t.lineTail)&&(t.line.endArrowType=t.lineTail),t.line=t.line||{},t.lineSpacing=t.lineSpacing&&!isNaN(t.lineSpacing)?t.lineSpacing:null,t.lineSpacingMultiple=t.lineSpacingMultiple&&!isNaN(t.lineSpacingMultiple)?t.lineSpacingMultiple:null,t._bodyProp=t._bodyProp||{},t._bodyProp.autoFit=t.autoFit||!1,t._bodyProp.anchor=t.placeholder?null:s.ctr,t._bodyProp.vert=t.vert||null,t._bodyProp.wrap=\"boolean\"!=typeof t.wrap||t.wrap,(t.inset&&!isNaN(Number(t.inset))||0===t.inset)&&(t._bodyProp.lIns=U(t.inset),t._bodyProp.rIns=U(t.inset),t._bodyProp.tIns=U(t.inset),t._bodyProp.bIns=U(t.inset)),\"boolean\"==typeof t.underline&&!0===t.underline&&(t.underline={style:\"sng\"}),0===(t.align||\"\").toLowerCase().indexOf(\"c\")?t._bodyProp.align=i.center:0===(t.align||\"\").toLowerCase().indexOf(\"l\")?t._bodyProp.align=i.left:0===(t.align||\"\").toLowerCase().indexOf(\"r\")?t._bodyProp.align=i.right:0===(t.align||\"\").toLowerCase().indexOf(\"j\")&&(t._bodyProp.align=i.justify),0===(t.valign||\"\").toLowerCase().indexOf(\"b\")?t._bodyProp.anchor=s.b:0===(t.valign||\"\").toLowerCase().indexOf(\"m\")?t._bodyProp.anchor=s.ctr:0===(t.valign||\"\").toLowerCase().indexOf(\"t\")&&(t._bodyProp.anchor=s.t),se(t.shadow),t}n.options=o(n.options),n.text.forEach(e=>e.options=o(e.options||{})),L(r,n.text||\"\"),r._slideObjects.push(n)}function de(t,r){if(r.bkgd&&(r.background||(r.background={}),\"string\"==typeof r.bkgd?r.background.color=r.bkgd:(r.bkgd.data&&(r.background.data=r.bkgd.data),r.bkgd.path&&(r.background.path=r.bkgd.path),r.bkgd.src&&(r.background.path=r.bkgd.src))),null!=(a=r.background)&&a.fill&&(r.background.color=r.background.fill),t&&(t.path||t.data)){t.path=t.path||\"preencoded.png\";let e=(t.path.split(\".\").pop()||\"png\").split(\"?\")[0];\"jpg\"===e&&(e=\"jpeg\"),r._relsMedia=r._relsMedia||[];var a=r._relsMedia.length+1;r._relsMedia.push({path:t.path,type:O.image,extn:e,data:t.data||null,rId:a,Target:`../media/${(r._name||\"\").replace(/\\s+/gi,\"-\")}-image-${r._relsMedia.length+1}.`+e}),r._bkgdImgRid=a}}function L(a,e,t){let r=[];\"string\"!=typeof e&&\"number\"!=typeof e&&(Array.isArray(e)?r=e:\"object\"==typeof e&&(r=[e]),r.forEach((r,e)=>{if(t&&t[e]&&t[e].hyperlink&&(r.options=Object.assign(Object.assign({},r.options),t[e])),Array.isArray(r)){let t=[];r.forEach(e=>{e.options&&!e.text.options&&t.push(e.options)}),L(a,r,t)}else Array.isArray(r.text)?L(a,r.text,t&&t[e]?[t[e]]:void 0):r&&\"object\"==typeof r&&r.options&&r.options.hyperlink&&!r.options.hyperlink._rId?\"object\"!=typeof r.options.hyperlink?console.log(\"ERROR: text `hyperlink` option should be an object. Ex: `hyperlink: {url:'https://github.com'}` \"):r.options.hyperlink.url||r.options.hyperlink.slide?(e=S(a),a._rels.push({type:O.hyperlink,data:r.options.hyperlink.slide?\"slide\":\"dummy\",rId:e,Target:z(r.options.hyperlink.url)||r.options.hyperlink.slide.toString()}),r.options.hyperlink._rId=e):console.log(\"ERROR: 'hyperlink requires either: `url` or `slide`'\"):r&&\"object\"==typeof r&&r.options&&r.options.hyperlink&&r.options.hyperlink._rId&&0===a._rels.filter(e=>e.rId===r.options.hyperlink._rId).length&&a._rels.push({type:O.hyperlink,data:r.options.hyperlink.slide?\"slide\":\"dummy\",rId:r.options.hyperlink._rId,Target:z(r.options.hyperlink.url)||r.options.hyperlink.slide.toString()})}))}class he{constructor(e){this.addSlide=e.addSlide,this.getSlide=e.getSlide,this._name=\"Slide \"+e.slideNumber,this._presLayout=e.presLayout,this._rId=e.slideRId,this._rels=[],this._relsChart=[],this._relsMedia=[],this._setSlideNum=e.setSlideNum,this._slideId=e.slideId,this._slideLayout=e.slideLayout||null,this._slideNum=e.slideNumber,this._slideObjects=[],this._slideNumberProps=null!=(e=this._slideLayout)&&e._slideNumberProps?this._slideLayout._slideNumberProps:null}set bkgd(e){this._bkgd=e,this._background&&this._background.color||(this._background||(this._background={}),\"string\"==typeof e&&(this._background.color=e))}get bkgd(){return this._bkgd}set background(e){(this._background=e)&&de(e,this)}get background(){return this._background}set color(e){this._color=e}get color(){return this._color}set hidden(e){this._hidden=e}get hidden(){return this._hidden}set slideNumber(e){this._slideNumberProps=e,this._setSlideNum(e)}get slideNumber(){return this._slideNumberProps}get newAutoPagedSlides(){return this._newAutoPagedSlides}addChart(e,t,r){return ce(this,(r||{})._type=e,t,r),this}addImage(e){return pe(this,e),this}addMedia(e){{var n=this,o=e.x||0,i=e.y||0,s=e.w||2,A=e.h||2,l=e.data||\"\",c=e.link||\"\";let t=e.path||\"\",r=e.type||\"audio\",a;var p=e.cover||\"data:image/png;base64,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AAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKREkRUAAACwrUpLSwuGDRvWfMCAAS26du3avKysrLiioqKkZcuWzZs1a1bcvHnz0tLS0rJsNtusuLi4ebNmzUoLCgo+8/eijY2N9Zs3b66pra2tqqur21xTU1NdVVVVs2nTptqNGzdWbdiwoeYvf/nL5hUrVlQtWLBgw6xZs6pqamoaJQYAAEDaKYABAACIiIghQ4aUHnTQQW379u3bql27dq3at2/fpkWLFq2bN29eWVpa2qpZs2bNCwsLm2ez2fLCwsLyoqKi8sLCwtKknK+hoaG6vr6+qqGh4S91dXV/aWhoqNq8eXNVTU3NuqqqqvUbNmxYu2rVqjWrV69e99Zbb6177rnnPpgzZ06NTwYAAABJogAGAADIA8OGDWt+xBFHdBwwYECnLl26dGjdunXHFi1adCgtLe1YUlLSvlmzZq0KCgqK07yDwsLCssLCwrKIaPdp/zuNjY21mzdvXrdp06ZVNTU172/YsGHl2rVr31+2bNnKBQsWrHjyySffnzVrVpVPGAAAAE1Fpuexsd9HfaF+ZcSal0ptCAAAIAE6deqUPf744zvtueeeXbp3796lbdu2XSorKzuXlpZ2KS0t7VBYWFhhSztGQ0PDxpqampU1NTXL169fv+yDDz5Y9s477yybPXv2sj/96U8rVqxYUWdLAAAAbE9t9q6Jog4f/TUFMAAAQEJks9nMt7/97Y4jRozo1bdv397t2rXrXl5e3rWsrKxzcXFx+4gosKUmp7G2tnZVTU3Nso0bNy5btWrV0tdff/2tJ598cvG999672noAAADYFgpgAACAhPne977X6a9Fb/v27Xu1bNmyV1lZWa8kvXOXLauvr9/wl7/8ZdG6desWL1u2bNHChQsX/fGPf1w8derUjbYDAADAliiAAQAAmqhsNps59dRTuxx66KH9+/Tp87n27dv3Ly8v719UVOSRzXlq06ZNKzZu3Pj6+++//8abb775xqOPPvrG3XffvcpmAAAA+CsFMAAAQBNx6qmndvniF784qHfv3v3btWv3uYqKis8VFhaW2wxbUl9fv37Dhg1vfPDBB68vXrz4jccee2z+jTfeuNxmAAAA8pMCGAAAYBc45phjWn/rW9/aq3///kPatGnTv6Kiop9HOLO9NDQ0VG/cuPGtNWvWLFy4cOGcO+6445WHHnporc0AAACknwIYAABgJzjjjDO6f+lLX9qrV69eg1u3bj2orKysR0RkbIadJFddXb103bp18xcvXjz30UcffeXqq69+x1oAAADSRwEMAACwnZWWlhb86le/2u3QQw8d1r17931btmw5qLCwsMxmaEoaGhqqP/zww/nvvPPOzGeeeWbW2LFj36ipqWm0GQAAgGRTAAMAAGwHP/7xj7t+9atf3bdXr15D27Ztu1c2m21jKyRJXV3dmg8++OCVRYsWvfznP/95xh/+8IdltgIAAJA8CmAAAIBtcOKJJ7Y75ZRTDujXr9+w1q1bD81ms61shTSpq6tbt3bt2pfffPPNWbfccsvUe++9d7WtAAAANH0KYAAAgE+hoqKi4IILLhg0YsSI/bp27bpfy5YtB2YymUKbIR/kcrmGDz/8cP6777474/nnn59x4YUXvrZx40aPiwYAAGiCFMAAAAAf4/jjj2/7/e9//8D+/fsf2Lp1630KCgpKbAUiGhsbN61fv37eW2+9NeWGG2545u67715lKwAAAE2DAhgAAOB/ZLPZzAUXXPC5I4888sDu3bsfWFFRsVtEFNgMbFl1dfWSd999d8qsWbNmnnvuuS+vW7euwVYAAAB2DQUwAACQ10pLSwsuvfTSQYcccsjBXbt2HVFWVtbDVmDb1dbWrnr//fdfmDp16uRf/vKXL65evbreVgAAAHYeBTAAAJB3Bg0aVHrBBRd8fs899zywQ4cOBxQVFbWwFdj+Ghsba9euXTtrzpw5T59//vmTX3755WpbAQAA2LEUwAAAQF4YNmxY8/POO+/gIUOGHOZ9vrDz/W0ZfNFFFz07a9asKlsBAADY/hTAAABAarVq1arwyiuv3HfEiBEjO3TocFBhYWGZrcCu19DQUP3+++8/O2XKlIk/+clPZm7cuLHRVgAAALYPBTAAAJAqrVq1Kvztb3+7/3777Xd4x44dRxQWFpbbCjRdDQ0NG99///0pM2bMeOqHP/zhC8pgAACAz0YBDAAApMJZZ53V45vf/OaRvXr1GllaWtrVRiB5ampq3l28ePHEO++8c9LVV1/9jo0AAABsPQUwAACQWMOHDy+/6KKLvjB48OCjW7RoMdBGID0+/PDDV+fNmzfhvPPOe3L69Ol/sREAAIBPRwEMAAAkSqtWrQpvuOGGQ/bbb79/atOmzX6ZTCZrK5BeuVyubs2aNTNmzJjx2JgxYyavW7euwVYAAAA+ngIYAABIhB//+Mddv/e9732lZ8+e/1RcXNzWRiD/1NbWfvD2228/dssttzz029/+9l0bAQAA+L8UwAAAQJNVUVFRcO21137+4IMPPrZ169b7ZTKZAlsBIqJxzZo1M59//vnxp5122hR3BQMAAPx/CmAAAKDJOeWUUzqefvrpx/bu3ftL2Wy2jY0AH6e+vn7j0qVLH/vd7373x+uvv36ZjQAAAPlOAQwAADQJ2Ww2c+uttx5wyCGHnNC6deu9I8LdvsDWaFy7du1L06ZN+/OPfvSjZ1evXl1vJQAAQD5SAAMAALtU//79S6655pp/2nPPPY8tLy/vayPAZ1VTU7NswYIF488999wHp06dutFGAACAfKIABgAAdomf//znPU855ZQTu3btemRhYWGZjQDbW2NjY92KFSuevOWWW+689NJLF9kIAACQDxTAAADATuMxz8Cusn79+rlPP/30f5188slT6+rqcjYCAACklQIYAADY4fr27Vv8hz/84a+Pee5nI8CuUlNT8+68efPu/8EPfvDgwoULN9kIAACQNgpgAABghxkyZEjpNddc89XBgwefWFxc3MFGgKaitrZ21dy5c+/5yU9+8uc5c+bU2AgAAJAWWyqAPYoNAADYJqNHj+4wb968n06ZMuXRYcOGnaH8BZqa4uLi9sOGDTtjypQpj86bN++nJ510UntbAQAA0s4dwAAAwFY599xze33/+9//dufOnY/IZDJZGwGSIpfL1S1fvvzJG2644fbLLrvsbRsBAACSyiOgAQCAz+y8887r+53vfOfbHTt2PDyTyRTaCJBUuVyuYcWKFU/cdNNN//XrX/96sY0AAABJowAGAAC22WWXXTboG9/4xg9at249zDaAtFm7du2su++++9pzzjnnNdsAAACSQgEMAABsNcUvkE8UwQAAQJIogAEAgE9N8Qvks7Vr18665557rvv5z38+3zYAAICmaksFcGHlwOj6UV9orIqoWZG1PQAAyBO/+MUvet9xxx3nHHrooT8pLS3tYiNAPiotLe2y7777HvP973+/X1lZ2ZIpU6assxUAAKCpKetcHwXlH/01BTAAAOS5M844o/u99957zpe//OWflZeX94qIjK0AeS5TXl7e8+CDDx71/e9/v3dEvDVjxowPrQUAAGgqFMAAAMD/ceKJJ7a77777fjJq1Kh/KS8v7xOKX4B/lCkvL+99+OGHj/rWt77VfvXq1Qvnz59fbS0AAMCutqUC2DuAAQAgzwwdOrTs+uuvP6l///4nFRYWltkI20NjY2Ns2rQpqquro6amJurr62PTpk2xefPmqK+vj+rq6qivr4/NmzfHpk2boqGhYZv/fxUWFkZJSUk0a9YsioqKoqysLIqKiqJZs2ZRUlISRUVFUVpa+r9/FRQUCIjtoqGhoeq11167a8yYMffMmTOnxkYAAIBdZUvvAFYAAwBAnujUqVP2nnvuGbXXXnudnM1mK22Ej9PQ0BAbN26MDRs2/J+/Nm7cGBs3boyamprYtGlTbNq0KWpqaqK2trbJnqe4uDhKSkqitLT0f/9eUVERFRUV0aJFi//zV0VFRRQWFvog8LHq6urWvvjii7eceOKJf169enW9jQAAADubAhgAAPLcXXfdddAXv/jF00tLS7vZRn7L5XKxYcOGWLt2baxbty7Wrl37d3+tW7cuNmzYkPd7atGiRbRu3TpatWoVrVu3jjZt2vzvf27dunW0aNHCh4morq5e+sgjj1zzne98Z6ptAAAAO5MCGAAA8tTVV189+MQTTzyzoqJioG3kj8bGxli5cmUsX748Pvjgg1i9evX//n3t2rXR2NhoSZ9RYWFhtGrVKtq1axdt27b937937tw5OnTo4LHTeWbDhg3z77333qvOPPPMebYBAADsDApgAADIM1/72tfaXHrppad27979qIjQRKVUQ0NDrFq1KlasWBHvv//+//595cqVTfqRzGlXXFwcHTp0iI4dO0bnzp2jY8eO0alTp2jXrp1HS6dYLpdrfOeddx76+c9/fv2ECRPW2QgAALAjKYABACBP9OrVq9ldd931jT322OM7hYWFZTaSHh9++GG88847sXTp0njvvfdixYoVsXr16mhoaLCchCgsLIz27dtHp06dolu3btG9e/fo3r27x0mnTENDQ9W8efNu++Y3v/nHJUuWbLYRAABgR1AAAwBAHrjrrrtG/NM//dOZJSUlXWwj2davXx9Lly6Nd955539L3w8//NBiUqqysvJ/y+C//tWqVSuLSbiamppljz322G9Gjx49xTYAAIDtTQEMAAAp9qtf/arPD3/4w5+1atVqL9tIno0bN8aSJUvirbfeikWLFsV7770XmzZtspg8V1JSEl27do0+ffpE3759o3fv3lFeXm4xCbRu3bqXr7322ivGjh27yDYAAIDtRQEMAAApNGjQoNI77rjju7vttttJBQUFWRtJhtWrV8ebb74ZixcvjiVLlsTy5cujsbHRYtiigoKC6Ny5c/Tu3Tt69+4d/fr1i7Zt21pMQjQ2Nta98cYbd33rW9+6ff78+TU2AgAAfFYKYAAASJHS0tKCBx988Jj99tvvn7PZbBsbaboaGhri7bffjrfeeisWLFgQS5YscXcv201FRUX06tUr+vbtG3379o2ePXtGYWGhxTRhdXV1a2bMmHHjV77ylYdqamr85gcAALDNFMAAAJASp59+erdf/vKX51ZWVu5jG03T6tWr47XXXouFCxfGm2++GRs3brQUdooWLVpE3759Y8CAATFw4EB3CDdh69evf/E//uM//vPqq69+xzYAAIBtoQAGAICEGzRoUOm99977w969ex+byWTc4teErF+/PubNmxcLFiyIN954Q+FLk9GiRYvo169fDBgwIPbYY4+orKy0lCYkl8s1LF68eNyJJ554rcdCAwAAW0sBDAAACXbNNdcMOemkk35RVlbWyzZ2vVwuF++++27MnTs3XnvttViyZIl3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B7lcrm7y5Mm//vKXv/yIbQAAwK63pXcAK4ABAMg7paWlBTNnzjyzT58+x9vG39uwYUOMGzcuZsyY4VHPQF7KZDKx3377xde//vWoqKiwkH+waNGiP+27775X1dTUeCwEAADsQgpgAAD4H926dctOnjz5V506dRppG/9fLpeLqVOnxp///OfYuHGjhQB5r6KiIkaNGhX777+/x0L/g+XLlz9+6KGHXvLuu+/W2QYAAOwaWyqAvQMYAIC8MXz48PInnnjiynbt2o2wjf/vnXfeiWuvvTaee+652Lx5s4UARMTmzZtjzpw58dprr0XPnj2jRYsWlvI/Kioq+n7rW98aMnXq1Ofee+89f3AAAMAusKV3ACuAAQDIC9/+9rc73n777X9o0aLFANv4b1VVVXHXXXfFvffeG+vXr7cQgI+wbt26eP7552P9+vWx2267RVFRkaVERElJSefjjjvuoA8++GDKK6+88hcbAQCAnUsBDABAXjv//PP7XXzxxX8oKSnpbBv/bfr06XHttdfGokWLLAPgU3jnnXdi2rRp0bp16+jc2R8nERHZbLbyC1/4whElJSUvTp48eY2NAADAzqMABgAgb/3ud7/b60c/+tFVRUVFrWwjYs2aNXHzzTfHpEmTora21kIAtkJtbW289NJL8c4770Tfvn2jtLQ073dSWFhYNnz48C/26dNn4UMPPbTMpwQAAHYOBTAAAHnp1ltv3f+b3/zmfxYWFjbP913kcrl4/vnn4/rrr4/ly5f7cAB8BitXroxp06ZFRUVFdOvWLTKZTF7vo6CgIDto0KBDBw0atOiBBx54xycEAAB2vC0VwJmex8Z+H/WF+pURa17ym6wAACTTww8//KXDDjvsXzKZTN6/rPGDDz6I22+/Pd544w0fDIDtbMCAAfGtb30r2rRpk/e7yOVyjVOmTPn1yJEjH/LJAACAHavN3jVR1OGjv6YABgAgdV555ZXTPve5z30r3/fQ0NAQjz32WDz++ONRV1fngwGwg2Sz2Tj66KPjC1/4QhQUFOT9Pl5//fU79tprr9/7ZAAAwI6jAAYAIC9ks9nMyy+/fFafPn2Oz/ddvPvuu3HbbbfFe++954MBsJN069YtvvOd70S3bt3yfhdLliy5f5999rmypqam0ScDAAC2PwUwAACpV1paWjBr1qyzevfufVw+7yGXy8WTTz4ZDz74oLt+AXaBbDYbxxxzTBxxxBF5fzfw0qVLHxg6dOjlSmAAANj+FMAAAKRar169mk2ePHlsu3btDsrnPaxcuTJuueWWePvtt30oAHaxnj17ximnnBIdOnTI6z2sXr16yiGHHPIvS5Ys2exTAQAA28+WCuDCyoHR9aO+0FgVUbMia3sAADRpQ4cOLXvqqacub9Omzf75uoNcLhfPPPNMXH/99bF27VofCoAmYP369TFlypQoKSmJnj17RiaTycs9NG/evPtJJ500ZPLkyc+sWLHCoykAAGA7KetcHwXlH/01BTAAAIk1ZMiQ0kceeeSKVq1a7Z2vO6iuro7bb789nnjiiWhs9IRNgKaksbEx5s+fH++//34MGDAgstn8/DlLaWlpp6997WuDn3rqqadXrlxZ75MBAACfnQIYAIDUOfTQQ1s8+OCDv2/ZsuUe+bqDOXPmxNVXX+2RzwBN3PLly+OFF16Ijh075u0joUtLSzudcMIJ+7/00ktPv/3227U+FQAA8NkogAEASJVhw4Y1v++++37TsmXLQfl4/vr6+hg/fnz88Y9/jNpaP0MHSILNmzfHiy++GJs3b47ddtstCgoK8m4HxcXFbY866qg9n3vuuaeXL1/ucdAAAPAZKIABAEiNI488snLcuHG/b9GixcB8PP97770XV111VcyZM8eHASCBFi1aFC+//HL069cvWrRokXfnLykp6XDcccftP2fOnGcWLVq0yScCAAC2jQIYAIBUOPLIIyvvvPPO35aXl++Wj+d/+umn48Ybb4wPP/zQhwEgwf7yl7/ECy+8ECUlJdGrV6+8O3+zZs3aHHXUUfspgQEAYNspgAEASLxjjz227W233faH5s2b98m3s1dVVcXNN98cTz31VDQ2NvowAKRAY2NjzJ8/P5YtWxYDBgyIZs2a5dX5mzVr1uaYY4458M0333xm4cKFNT4RAACwdRTAAAAk2qGHHtritttuuzofy9+33347rrnmmli8eLEPAkAKvf/++/HKK69Enz59orKyMq/Ons1mK4888sh9Zs6c+dTSpUs3+zQAAMCnpwAGACCxjjjiiJb33nvvteXl5f3y6dy5XC4mTZoUN998c1RVVfkgAKRYVVVVTJ06NbLZbPTp0ycymUzenL24uLjtV7/61c+/8sorTy1evLjWpwEAAD4dBTAAAIl06KGHtrj33nt/l2/lb3V1ddx0000xefLkyOVyPggAeSCXy8WCBQvi3Xffjd133z2y2fz5mUyzZs1aH3300fvNmDHjSXcCAwDAp6MABgAgcYYOHVo2fvz4qysqKgbk07mXLVsWV111lUc+A+SplStXxiuvvBKf+9znoqKiIm/O3axZszZHH3300GeeeebJFStW1PkkAADAlimAAQBIlCFDhpQ++uij17Rs2XL3fDr31KlT49prr42NGzf6EADksaqqqpg+fXq0bds2unTpkjfnLikpaT9q1KihTz755JMrV66s90kAAICPt6UCuMB6AABoSjp16pSdMGHCv1dWVu6RL2dubGyMcePGxR133BF1dW56AiCitrY2br755hg/fnw0NjbmzbkrKyv3mDBhwr9369bNXQkAALCNFMAAADQZrVq1Kpw+ffolbdq02T9fzlxdXR2/+93vYtKkSd73C8DfyeVy8fjjj8fvf//7qK6uzptzt2nTZv8pU6Zc0qpVq0KfAgAA2HoKYAAAmoSKioqC2bNnX9KuXbuD8uXMS5cujYsuuijmz5/vAwDAx3r11VfjoosuiqVLl+bNmdu1a3fQ7Nmz/72iosLPrgAAYCu5iAYAoEmYOXPmz9q1a3dIvpz35ZdfjiuuuCLWrVsnfAA+0bp16+KKK66Il19+OW/O3K5du4Nnzpz5M+kDAMDWUQADALDLvfjii2N69OgxKh/Omsvl4oEHHogbbrghamtrhQ/Ap1ZbWxs33HBDPPDAA3nz2oAePXqMevHFF8dIHwAAPj0FMAAAu9SkSZO+NnDgwFPy4ax1dXVx8803x8SJE73vF4BtksvlYuLEiXHLLbdEXV1dXpx54MCBJ0+aNOlr0gcAgE9HAQwAwC7z6KOPHnXggQeekw9nXbduXfz617+OWbNmCR6Az2zmzJnx61//Ol9eJZA58MADz3n00UePkjwAAHyywsqB0fWjvtBYFVGzImtDAADsEDfeeOO+Rx999EWZTKYw7Wddvnx5XHXVVbFy5UrBA7DdbNiwIWbPnh0DBw6MioqKtB8307179/179uz56sMPP7xc+gAA5LuyzvVRUP7RX1MAAwCw011xxRV7fPe7372qoKCgWdrPOmfOnPjtb38bGzduFDwA2111dXVMmzYtOnfuHB07dkz1WTOZTOHuu+9+eJs2bV6aNGnSKukDAJDPFMAAADQZZ5xxRvef/exnvy0sLCxP+1knTJgQd999d9TX1wsegB2moaEhXnrppchms9G3b99UnzWTyRTttddeB/3lL395dubMmRukDwBAvlIAAwDQJBx00EEVf/jDH64pLi7ulOZz5nK5eOCBB+Kxxx4TOgA77c+eBQsWRF1dXfTv3z8ymUxqz1pQUFBywAEHDJs+ffqkpUuXbpY+AAD5aEsFcIH1AACwMwwaNKj0vvvuu7qsrKxXms9ZV1cX1113XUyaNEnoAOx0EydOjOuvvz7q6upSfc6ysrJef/rTn67u379/idQBAODvKYABANjhKioqCh577LGLKyoqBqb5nNXV1XHNNdfE7NmzhQ7ALvPKK6/ElVdeGVVVVak+Z4sWLQZOnDhxbEVFhZ9vAQDA33CBDADADjdz5syftW3b9sA0n3HdunVx2WWXxRtvvCFwAHa5xYsXx2WXXRZr165N9TnbtWt34MyZM38mcQAA+P8UwAAA7FBPPvnkqB49eoxK8xlXrVoVV1xxRSxfvlzgADQZK1asiCuuuCJWrlyZ6nP26NFj1KRJk0ZJHAAA/lth5cDo+lFfaKyKqFmRtSEAALbZjTfeuO+XvvSlCzOZTGp/8fDdd9+NK6+8MtatWydwAJqc6urqmDVrVvTv3z8qKytTe85u3boN79mz57yHH37Yb2MBAJAXyjrXR0H5R39NAQwAwA5x3nnn9T311FOvLigoKE7rGV977bW45pprorq6WuAANFmbN2+OGTNmRI8ePaJ9+/apPGMmkykYNGjQIYWFhVOee+45v5UFAEDqKYABANipjjrqqFb/8R//8YdmzZq1SusZX3755bj++uujrq5O4AA0eQ0NDfHSSy9Fp06dolOnTqk8Y0FBQXbYsGGfnz9//qQ33nhjk9QBAEizLRXA3gEMAMB21a1bt+wNN9zwnyUlJR3TesYpU6bEjTfeGPX19QIHIDHq6+vjxhtvjKlTp6b2jCUlJZ1uuOGG/+jWrZu7GgAAyFsKYAAAtqunn376XyorK/dI6/kmTZoUd955ZzQ2NgobgMRpbGyMO+64I5588snUnrGysnLw008//UtpAwCQrxTAAABsN88///w3unTp8k9pPd/EiRNj3LhxkcvlhA1AYuVyubj//vtTXQJ36dLlS88+++yJ0gYAIB95BzAAANvFTTfdNPzII488L5PJZNJ4vsceeyzGjx8vaABS47XXXotmzZpF3759U3m+zp0779urV695Dz/88DJpAwCQNlt6B7ACGACAz+wXv/hF7x/+8IdXFxQUNEvj+R544IF45JFHBA1A6ixYsCDq6upiwIABqTtbJpPJDBo06ODGxsbnpk6dul7aAACkiQIYAIAd5oADDqj43e9+99tmzZq1TeP5xo0bF5MmTRI0AKm1aNGi2Lx5cwwcODB1ZysoKMjut99+w5577rnH33vvvc3SBgAgLbZUAHsHMAAA2yybzWbuvPPOfyktLe2exvNNmDBB+QtAXpg0aVI89NBDqTxbaWlpj3vuuedfstlsRtIAAOQDBTAAANvs+eef/06HDh0OTePZHn744Xj44YeFDEDeeOSRR+LPf/5zKs/WoUOHw5599tlvSxkAgHygAAYAYJvcd999hw8ePPjUNJ7t/vvvjwkTJggZgLzz2GOPxX333ZfKs+25554/+NOf/nSYlAEASDvvAAYAYKudccYZ3ceMGXN5QUFBcdrONnHixHjkkUeEDEDeWrx4cWSz2ejbt2/ajpbp06fPvn/5y18mz5w5c4OkAQBIsi29A1gBDADAVhk2bFjzG2+88Q/NmjVrl7azPfroo6l99CUAbI2FCxdGUVFR9OvXL1XnKigoKD7wwAP3e/LJJx9dsWJFnaQBAEiqLRXAHgENAMBWuffee39ZWlraPW3nevzxx+PBBx8UMAD8jz//+c8xceLE1J2rtLS0x3333fdLCQMAkFYKYAAAPrVJkyaN6tSp0xEpPFeMHz9ewADwD8aPHx+TJ09O3bk6der0hUmTJn1VwgAApJFHQAMA8Kmcd955fU888cR/z2QyRWk618yZM+Puu+8WMAB8jNdeey06duwYnTt3TtW5unbtuk9BQcHzzz333DopAwCQNN4BDADAZ3LEEUe0vOKKK67NZrOVaTrXyy+/HDfffHPkcjkhA8DHyOVyMXv27OjSpUt06tQpNefKZDJF++yzz/CpU6c+9u67726WNAAASeIdwAAAbLNsNpu55ZZb/q2kpKRjms61YMGCuPnmm6OxsVHIAPAJGhsb4+abb44333wzVecqLS3tcvfdd5+fzWYzUgYAIC0UwAAAbNGkSZO+3rZt2wPTdKZly5bFDTfcEPX19QIGgE+prq4urr322li+fHmqztWuXbsDH3/88VESBgAgLTwCGgCAj3XZZZcN+upXvzo2k8mk5hcH33///bjyyiujqqpKwACwlerq6uLll1+OIUOGRHl5eWrO1aVLl31LS0unPvPMM2ukDABAEngENAAAW61///4lJ5988q8ymUxRWs60YcOG+P3vfx8bN24UMABso40bN8bvfve7VP15WlBQkP3hD394ft++fYslDABA4q9vrQAAgI/y4IMPnl1WVtYrLeeprq6O3/zmN7Fq1SrhAsBntGrVqrjyyiujuro6NWcqKyvr8/DDD58lXQAAkk4BDADA/zF+/Pgju3XrdnRazlNfX5/KdxYCwK60fPnyuO6666K+vj41Z+rRo8dXx40bd4R0AQBIMgUwAAB/53vf+16nI4444py0nCeXy8Vtt90Wb7zxhnABYDt7/fXX47bbbotcLpeaMx155JHnfvvb3+4oXQAAkkoBDADA/6qoqCi4+OKLLywsLCxPy5nGjx8fs2bNEi4A7CCzZs2Khx56KDXnKSwsrPj1r399QUVFhZ+bAQCQSC5kAQD4XxMnThxdWVk5OC3nef7552PixImCBYAd7LHHHosXXnghNeeprKzc89FHHz1RsgAAJFFh5cDo+lFfaKyKqFmRtSEAgDxxwQUX7DZq1KgLM5lMYRrO8+qrr8Ytt9ySqkdSAkBT/7O3d+/e0a5du1Scp2PHjkNzudxzU6ZMWSddAACamrLO9VHwMc/wcwcwAADRt2/f4h//+McXZzKZVPwG4HvvvRc33HBDNDY2ChcAdpKGhoa47rrrYtmyZak4T0FBQfbss88e27dv32LpAgCQqGtZKwAAYPz48T8qKyvrkYazbNiwIX7/+99HbW2tYAFgJ9u0aVP8/ve/j40bN6biPGVlZb3GjRs3RrIAACSJAhgAIM/ddNNNw/v06XN8Gs5SX18f1157baxdu1awALCLrFmzJq699tqor69PxXn69ev3jd///vdDJQsAQFIogAEA8thBBx1Uceyxx/5rRGTScJ477rgjFi9eLFgA2MUWLVoUd955Z1qOU/CNb3zj34YNG9ZcsgAAJOIC1goAAPLXzTfffFZxcXG7NJxl4sSJMX36dKECQBMxbdq0mDRpUirOUlJS0unOO+88Q6oAACSBAhgAIE/913/914FdunT5UhrO8tprr8Wf//xnoQJAEzN+/PhYsGBBKs7SrVu3o2+66abhUgUAoKlTAAMA5KEvfelLlV/5yld+lYazrFixIq6//vpobGwULAA0MY2NjXHdddfFihUr0nCczHHHHfergw46qEKyAAA0ZQpgAIA8dPXVV5+ezWYrk36OmpqauPbaa2PTpk1CBYAmatOmTXHttddGTU1N4s+SzWbb3njjjT+RKgAATZkCGAAgz9x6663Du3Tp8uWknyOXy8Utt9wSK1euFCoANHErV66MW2+9NXK5XOLP4lHQAAA0dQpgAIA8MnTo0LKvfvWrv0jDWSZMmBBz584VKgAkxJw5c+Kxxx5LxVlGjRr1i6FDh5ZJFQCApkgBDACQR+64444fFRcXd0z6OV5++eV45JFHBAoACfPQQw+l4he4SkpKOt5xxx0/lCgAAE2RAhgAIE9cfvnlu/fs2XNU0s/xwQcfxB133JGKR0gCQL7J5XJx2223xZo1axJ/lp49ex57+eWX7y5VAACaGgUwAEAe6NatW/a73/3uv2YymURf/9XX18cNN9wQ1dXVQgWAhKqqqoobb7wx6uvrE32OTCZT8N3vfvdX3bp1y0oVAICmRAEMAJAHxo8ff0pZWVmvpJ/jnnvuiaVLlwoUABJuyZIlcd999yX+HGVlZT3Hjx9/ikQBAGhKFMAAACn385//vOeAAQNGJ/0c06dPjylTpggUAFJi8uTJMWPGjMSfY8CAAaN//vOf95QoAABNhQIYACDFstls5qyzzjo3k8kk+tGEK1asiLvvvlugAJAyd911V6xYsSLRZ8hkMtmzzjrr3Gw2m5EoAABNgQIYACDFxo0b98XKysq9knyG2trauOGGG6K2tlagAJAyf/1zfvPmzYk+R2Vl5V7jxo0bKVEAAJoCBTAAQEoNHz68/OCDDz4t6ee4//77Y/ny5QIFgJRavnx5jBs3LvHnGDFixI+HDRvWXKIAAOxqCmAAgJS69dZbT8tms22TfIYZM2bEc889J0wASLnJkyfHzJkzE32G4uLitrfffvtp0gQAYFdTAAMApNBVV121R48ePb6S5DOsXLky7rrrLmECQJ64++6744MPPkj0GXr27PnVK664Yg9pAgCwKymAAQBSprS0tOAb3/jGT5N8rdfY2Bi333679/4CQB6pqamJ2267LRobG5N8jIJvfvObZ5aWlvqZGwAAu+6i1AoAANJlwoQJX6uoqBiQ5DOMHz8+Fi1aJEwAyDNvvvlmPPjgg4k+Q4sWLQY9+OCDx0gTAIBdRQEMAJAiRx55ZOWwYcN+kOQzzJ07N5544glhAkCemjhxYixYsCDRZxg+fPiPjjjiiJbSBABgV1AAAwCkyBVXXHFyUVFRRVLnr6qqijvvvDNyuZwwASBP5XK5uP3226O6ujqxZygqKmrxm9/85mRpAgCwKyiAAQBS4vzzz+/Xu3fv45J8httvvz0+/PBDYQJAnlu3bl3cfvvtiT5D7969jz///PP7SRMAgJ1NAQwAkALZbDZz6qmn/jyTyST2+m769OkxZ84cYQIAERExe/bsmDFjRmLnz2QyBaeeeurPs9lsRpoAAOxMCmAAgBT44x//eERlZeXgpM6/du3auPfeewUJAPyde+65J9atW5fY+SsrKwf/6U9/+oIkAQDYmRTAAAAJ17dv3+JDDjnkR0k+w9133x01NTXCBAD+Tk1NTdx9992JPsPBBx/8o759+xZLEwCAnUUBDACQcHfdddc3S0pKOiV1/smTJ8e8efMECQB8pLlz58azzz6b2PlLSko63nPPPd+SJAAAO4sCGAAgwb70pS9VDhw48KSkzr9mzZoYP368IAGALXrggQdizZo1iZ2/f//+Jx111FGtJAkAwM6gAAYASLArrrji1MLCwvIkzp7L5eK2226LTZs2CRIA2KJNmzbFbbfdFrlcLpHzFxYWll1++eU/kCQAADuDAhgAIKF+8Ytf9O7evftXkjr/s88+G2+88YYgAYBP5Y033ojnn38+sfN369bt6F/96ld9JAkAwI6mAAYASKgf/vCHP8pkMom8nvvggw/igQceECIAsFXGjRsX69atS+TsmUym4NRTT/2xFAEA2NEUwAAACXTdddcNa9eu3YFJnD2Xy8Udd9wRtbW1ggQAtsqmTZvizjvvTOz8bdq02f+mm27aT5IAAOxICmAAgIQpLS0t+NrXvnZ6Uud/4YUXYuHChYIEALbJq6++GjNmzEjs/Mccc8zpFRUVfiYHAMAO42ITACBhbr/99oMrKip2S+LsGzZsiHHjxgkRAPhM7r///qiqqkrk7OXl5X3/67/+6wgpAgCwoyiAAQASpKKiouCwww47Nanz33vvvYn9YS0A0HRs2LAh7r///sTOf9BBB/1zq1atCiUJAMCOoAAGAEiQ+++//+iysrKeSZx9zpw58dJLLwkRANguXnjhhViwYEEiZy8tLe32xz/+8StSBABgR1AAAwAkRN++fYv33Xfff07i7LW1tXHvvfcKEQDYru6+++6oq6tL5Oz77bffKf379y+RIgAA25sCGAAgIW6++eZRxcXFbZM4+yOPPBJr164VIgCwXa1atSoee+yxRM6ezWbb3njjjV+TIgAA25sCGAAgAYYOHVq21157fSeJs7/33nvxxBNPCBEA2CEmTpwYK1asSOTsQ4YM+c7QoUPLpAgAwPakAAYASIBrr732xKKiosqkzZ3L5eKee+6JxsZGIQIAO0R9fX3cddddkcvlEjd7UVFR5bXXXnuCFAEA2J4UwAAATdwBBxxQMWDAgG8kcfYZM2bEW2+9JUQAYId6880348UXX0zk7AMGDPjG8OHDy6UIAMD2ogAGAGjirrrqqhOKiooqkjb3pk2b4oEHHhAgALBT3H///VFbW5u4uYuKilpcffXV7gIGAGC7UQADADRhBx10UEX//v0Teffvww8/HB9++KEQAYCdYv369TFhwoREzj5w4MBvHHDAARVSBABge1AAAwA0Yf/5n/95bGFhYfOkzb1q1aqYPHmyAAGAnerpp5+O1atXJ27uwsLC8ssuu2yUBAEA2B4UwAAATdQBBxxQMWjQoNFJnP3uu++O+vp6IQIAO1V9fX3cddddiZx99913/+bQoUPLpAgAwGelAAYAaKIuv/zyYwsLC8uTNvfcuXNjwYIFAgQAdokFCxbE3LlzEzd3UVFRi9/97ndflyAAAJ+VAhgAoAkaOnRo2aBBgxL37t+6urr405/+JEAAYJf605/+FHV1dYmbe/fdd//mkCFDSiUIAMBnoQAGAGiCfvOb33ylqKioZdLmfu655xL53j0AIF1Wr14dzz33XOLmLioqann11VcfLUEAAD4LBTAAQBPTq1evZoMHD/5m0uaurq6ORx55RIAAQJPwyCOPRHV1deLmHjJkyLe6deuWlSAAANtKAQwA0MTcdNNNxxQXF7dN2twTJkyIqqoqAQIATUJVVVUifzmtuLi43a233uouYAAAtpkCGACgCWnVqlXhXnvtdVLS5l61alU8++yzAgQAmpTJkyfHqlWrEjf30KFDR7dq1apQggAAbAsFMABAE3LLLbccXlJS0jlpcz/44INRX18vQACgSamvr48HH3wwcXOXlJR0vummmw6VIAAA20IBDADQRGSz2cwBBxzw7aTNvWjRonjppZcECAA0SS+99FIsXrw4cXOPGDHiO9lsNiNBAAC2lgIYAKCJuOaaa/YuLy/vm7S5H3roocjlcgIEAJqkXC6XyLuAy8vL+1111VV7SRAAgK2lAAYAaCK+8pWvfDdpM8+bNy8WLlwoPACgSVu4cGG8+uqrrg8BAMgLCmAAgCbgsssuG1RZWblPkmbO5XIxfvx44QEAifDAAw8k7qklrVu33veSSy7pLz0AALaGAhgAoAkYNWrUCUmbefbs2bFs2TLhAQCJsGzZsnjllVcSN/cJJ5xwovQAANgaCmAAgF3sn//5nzt37NjxiCTN3NjYGA888IDwAIBEGT9+fDQ0NCRq5k6dOn1h9OjRHaQHAMCnpQAGANjFfvSjH30tk8kk6rps2rRpsWrVKuEBAImyatWqeOGFFxI1cyaTKfzpT386SnoAAHxaCmAAgF1o0KBBpX369Plqkmaur6+PCRMmCA8ASKQJEyZEXV1dombu27fvV/r27VssPQAAPg0FMADALnTZZZcdXlRUVJGkmadOnRpr164VHgCQSOvXr48pU6YkauaioqLK3/zmN0dIDwCAT0MBDACwi2Sz2cy+++57UpJmrqurc/cvAJB4jz76aOLuAt5///1PymazGekBAPBJFMAAALvI1VdfPbSsrKx3kmaeMmVKbNiwQXgAQKJt2LAhnn/++UTNXFZW1ueqq67aS3oAAHwSBTAAwC7y5S9/+bgkzVtfXx8TJ04UHACQCo8//nji7gL+0pe+dLzkAAD4JApgAIBdYPTo0R3atm07IkkzT5s2LdatWyc8ACAVPvzww5g+fXqiZm7fvv2I0aNHd5AeAABbogAGANgFfvrTn47KZDKFSZm3vr4+HnnkEcEBAKnyyCOPRH19fWLmzWQyhT/96U+/JjkAALZEAQwAsJN16tQp26dPn6OTNLO7fwGANFq3bl1MmzYtUTP36dPnmE6dOmWlBwDAx1EAAwDsZFddddUB2Wy2dVLmbWxsjEmTJgmOVOvYsWN06OCJmgD5aNKkSdHY2JiYebPZbOurrrrqAMkBAPBxFMAAADvZiBEjvp6keV988cVYtWqV4Ei1Ll26xIUXXhinnXZadO3a1UIA8siqVavipZdecj0JAEBqKIABAHaiM844o3tlZeXeSZk3l8vFxIkTBUdeyGQyMXjw4PjVr34VY8aMcUcwQB55/PHHI5fLJWbeysrKvc8444zukgMA4KMogAEAdqJTTjnlqxGRScq8CxYsiPfee09w5JVMJhN77713XHjhhTFmzJho3769pQCk3HvvvRcLFy5M1B9X/3NdCQAA/4cCGABgJ+nVq1ezXr16fTlJM3v3L/nsr0XwBRdcECeffHK0bdvWUgBSLGnXPb169fpyr169mkkOAIB/pAAGANhJrrjiioOLiopaJmXeBN4JAztEYWFhDB8+PC688MIYPXp0VFZWWgpACi1YsCCWLVuWmHmLiopaXnnllYdIDgCAf6QABgDYSYYPH/6VJM2btHfhwY5WVFQUI0aMiEsuuSRGjx4dLVu2tBSAFMnlcvH4448naub99tvvK5IDAOAfKYABAHaC0aNHd6isrByalHnXrl0bL7/8suDgI/y1CL744ovjhBNOiBYtWlgKQEq89NJLsW7dusTMW1lZudfo0aM7SA4AgL+lAAYA2AlOP/30o5J07fXMM89EQ0OD4GALiouL47DDDouxY8fGqFGjoqyszFIAEq6hoSGeeeaZJI1c8D/XmQAA8P8vEq0AAGDHymazmX79+n05KfPW1tbGlClTBAefUnFxcYwcOTIuvfTSGDVqVJSWlloKQII9//zzUVtbm5h5+/Xr9+VsNpuRHAAAf6UABgDYwX7zm9/sWVJS0jkp886YMSOqq6sFB1uppKQkRo4cGZdcckkcffTRUVJSYikACVRdXR0zZ85M0p8/na+44orBkgMA4K8UwAAAO9gXvvCFLyVl1lwuF08//bTQ4DNo3rx5HHXUUXHJJZfEyJEjI5vNWgpAwjz11FORy+USM++RRx75ZakBAPBXCmAAgB1oyJAhpZ07dz4iKfO+/vrrsWLFCsHBdlBeXh6jRo2KSy+9VBEMkDArVqyI119/PTHzdunS5fD+/ft79AQAABGhAAYA2KHGjh17aGFhYWJeCOruX9j+KioqYtSoUXHxxRfH4YcfHkVFRZYC4LpouyosLGz+H//xHwdLDQCACAUwAMAOteeeex6ZlFnXrl0b8+bNExrsIK1atYrjjz8+LrroohgxYkQUFPh2DKApmzdvXqxZsyYx8+61115HSg0AgAgFMADADnPMMce0bt269b5Jmfe5556LxsZGwcEO1qZNmxg9enRcfPHFimCAJqyxsTGee+65JP35MvyYY45pLTkAAPykAQBgBznzzDMPz2Qyibje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FpafffbZvaQFAJA+CmAAgE9p//3375+EOV9//XVhAXmjvLw8Ro0aFf/+7/8eI0eOjGw2aymA67FP6fOf//xAaQEApI8CGADgU+rRo8fuTX3G2traePvtt4UF5J2KiooYNWpUXHzxxXH44Yc3+XdvAum2ePHiRLySo1evXoOkBQCQPgpgAIBPqXXr1k3+DoklS5ZEQ0ODsIC81apVqzj++OPj4osvjhEjRkRBgW97gZ2voaEhlixZ0uTnbNOmjQIYACCFfCcMAPApDBkypLR58+a9m/qcb775prAAIqJ169YxevToGDt2rCIYcF32MZo3b95n0KBBpdICAEgX3wEDAHwKp556av9MJtPkr53eeustYQH8jTZt2sTo0aPjvPPOi+HDhyuCAddlfyOTyRT84Ac/+Jy0AADSxXe+AACfwuDBg5v84/Hq6+tj0aJFwgL4CJ06dYqTTz45/u3f/i323nvvyGQylgLsUIsXL07Eqzn23HPPgdICAEgXBTAAwKfQpUuXAU19xnfeeSfq6uqEBbAFnTt3jjFjxiiCgR2utrY23n333SRc53oPMABAyiiAAQA+hZYtW/Zv6jN6/DPAp9elS5cYM2ZMnHvuuTF48GALAfL2+iwJ17kAAGwdBTAAwCcYPnx4eUlJSeemPqfHPwNsvV69esVpp50W55xzTvTvrwMB8u/6rLS0tPPw4cPLpQUAkB4KYACAT/Ctb31rt4ho8s8IXbx4sbAAtlGfPn3irLPOinPOOSd22203CwG2i4T8gl7m29/+dj9pAQCkhwIYAOAT7L777k2+CVi7dm1s2LBBWACfUZ8+feLss8+OM888M3r27GkhwGfy4Ycfxrp165r8nAMHDlQAAwCkSJEVAABsWadOnZr8D8TefvttQQFsRwMGDIgBAwbEggULYvz48bF06VJLAbb5Oq1Vq1audwEA2GkUwAAAn6CyslIBDJCnBgwYEP3794958+bFQw89FO+++66lAFtlyZIlsddeezX1613PvgcASBEFMADAFnTq1CnbvHnzXk19ziVLlggLYAfJZDIxePDg2GOPPeLll1+OBx98MFauXGkxQGqu05o3b967Xbt2RatXr66XGABA8nkHMADAFowZM6ZnJpPJNuUZGxsbPZoUYCfIZDKx9957x4UXXhhjxoyJ9u3bWwrwiZYuXRqNjY1NesaCgoLsqaee2kNaAADp4A5gAIAt2Hvvvfs29RlXrlwZtbW1wgLYSf5aBO+5554xa9asmDBhQqxevdpigI9UW1sb77//fnTu3LlJzzls2LC+EbFIYgAAyecOYACALejRo0eTL4DfeecdQQHsAoWFhTF8+PC48MILY/To0VFZWWkpQGKv15Jw3QsAwKejAAYA2ILWrVs3+ff/vvvuu4IC2IUKCwtjxIgRcckll8To0aOjZcuWlgIk7notCde9AAB8Oh4BDQCwBc2bN+/Z1GdUAAM0kW+wi4pixIgRsd9++8WUKVPiscceiw0bNlgMEO+9914SrnsVwAAAKeEOYACAj9G/f/+SkpKSjk19TgUwQNPSrFmzOOyww2Ls2LExatSoKCsrsxTIc0m4XistLe3Ut2/fYmkBACSfAhgA4GOccMIJ3Zr69dK6deuiqqpKWABNUHFxcYwcOTJ+/etfK4Ihz1VVVcX69eub+pgF3/zmN7tLCwAg+RTAAAAfY8iQIT2b+oxJeJwgQL77axE8duzYOProo6OkpMRSIA8l4botCde/AAB8MgUwAMDH6N69e8+mPqPHPwMkR/PmzeOoo46KSy65JEaOHBnNmjWzFMgjSbhuS8L1LwAAn0wBDADwMVq1atWjqc+4bNkyQQEkTHl5eYwaNSr+/d//PUaOHBnZbNZSIA8k4botCde/AAB8MgUwAMDHqKio6NXUZ1y+fLmgAJL750yMGjUqLr744jj88MOjqKjIUiDFknDd1rJly16SAgBIPgUwAMBHyGazmbKysq5NecbGxsZYtWqVsAASrlWrVnH88cfHxRdfHCNGjIiCAt+qQxqtWrUqGhsbm/SMJSUlXbPZbEZaAADJ5rtKAICPcNxxx7UrKCgobsozrl69Ourr64UFkBKtW7eO0aNHx9ixYxXBkEJ1dXXxwQcfNOkZCwoKio877rh20gIASDbfTQIAfITPf/7zXZr6jO+//76gAFKoTZs2MXr06Dj//PNj+PDhimBIkRUrVrgOBgBgh/NdJP+PvTuPr7I888d/nSwEkhD2HUQEUVRAoIiouCtq64Jabd1arVorbqO2tlXbaavTOu38Rqffdmpbu9rWpYogsqgFRXCttAIKArJDgAAJBLKQ5JzfH8WO4+DOcp6T9/v18jWvTv657ut6hNvnk/t+AICd2G+//bL+xVcSXiAC8PF17do1Lr300rj99ttj2LBhkUq5lRWSLgn7tyTsgwEAeH8FWgAA8H917txZAAxAVujevXtceeWVsXr16njiiSdi9uzZkclkNAYSKAn7tyTsgwEAeH8CYACAnWjXrp0roAHIKj169Igrr7wyli5dGpMmTYo5c+ZoCiRMEvZvSdgHAwDw/gTAAAA7UVxc3D3baxQAAzRPffr0ibFjx8aSJUti/PjxsWDBAk2BhEjC/i0J+2AAAN6fbwADAOxESUlJz2yur7q6Ourq6gwKoBnbb7/94l/+5V/ia1/7WhxwwAEaAglQV1cX1dXV9sEAAOxWAmAAgHc5/PDDSwsKCtpmc40VFRUGBUBERPTt2zduvPHGuOGGG2LffffVEMhy2b6PKygoaDt8+PASkwIASC4BMADAu5x44oldsr3GDRs2GBQA/8uAAQPiG9/4Rtxwww3Ru3dvDQH7uE+yH+5qUgAAyeUbwAAA79KvX7+sD4DXr19vUADs1IABA+LAAw+MuXPnxoQJE2LlypWaAlkkCTe5HHDAAV0i4i3TAgBIJgEwAMC7dO/evXO21+gEMADvJ5VKxaBBg2LgwIExe/bsGD9+fKxbt05jwD4uZ/bDAAC8NwEwAMC7tG/fvlO21ygABuDDSKVSMWzYsBg6dGjMnj07HnvsMbdIwF6WhBPASdgPAwDw3gTAAADv0rp166w/8ZCEF4cAZI+3g+BDDz00XnnllZg4caK/S8A+LtH7YQAA3psAGADgXUpKSrL6xENjY2Ns3rzZoAD4yPLz8+Pwww+P4cOHx/PPPx8TJ06MqqoqjYE9aPPmzdHY2BgFBdn7Wi7b98MAALw/ATAAwLu0bNmySzbXV1lZGZlMxqAA+Njy8/Nj1KhRMXLkyHjhhRcEwbAHZTKZqKqqio4dO9oPAwCwWwiAAQDepaioKKuvvKusrDQkAHaJgoKCGDVqVIwYMSJmzpwZkydPji1btmgM7IH9XDYHwNm+HwYA4P3laQEAwP8YPnx4SX5+fkk21ygABmBXa9GiRRx//PFxxx13xNlnnx0lJSWaAs14P5efn18yfPhwfxAAACSUABgA4B2OOOKIDtleo+//ArC7FBUVxejRo+P73/9+nH322VFcXKwpsBsk4cr1JOyLAQDYOQEwAMA79O3bt1221+gEMAC729tB8B133BGnn356tGrVSlOgme3n9ttvv7YmBQCQTAJgAIB36NSpkwAYAHYoKSmJz3zmM3HnnXfG6NGjo0WLFpoCzWQ/l4R9MQAAOycABgB4hw4dOrTN9hqTcGUgALmlpKQkzj777PjOd74To0aNivz8fE2BHN/PJWFfDADAzgmAAQDeoaysrG221ygABmBvad++fVx00UVx5513xgknnBCFhYWaAjm6nysrK3MCGAAgoQTAAADvUFJS0j6b68tkMlFdXW1QAOxV7dq1i/POOy+++93vxqhRoyIvz+sF+CiSsJ8rLS0VAAMAJJT/QgMAeIfi4uK22VxfXV1dNDY2GhQAWeHtE8F33HGHIBg+gsbGxqirq7MvBgBgt/BfZgAA79CqVausPung9C8A2ahDhw5x0UUXxbe//e04/PDDBcGQA/u6oqIiJ4ABABLKf5EBALxDQUGBABgAPqauXbvGpZdeGt/61rdi2LBhkUqlNAUSuq9r0aJFW1MCAEimAi0AAPgfhYWFZdlc39atWw0JgKzXrVu3uPLKK2P16tXxxBNPxOzZsyOTyWgMJGhfl+37YgAA3psAGADgnZujgoLW2VyfE8AAJEmPHj3iyiuvjKVLl8akSZNizpw5mgIJ2ddl+74YAID35gpoAIAdWrdunZefn98ym2sUAAOQRH369ImxY8fGLbfcEgMGDNAQSMC+Lj8/v1WrVq28OwQASCCbOACAHQYNGlQSEVn9scJt27YZFACJtd9++8UNN9wQX/va1+KAAw7QEJq1BOzr8gYPHlxsUgAAySMABgDY4YADDijJ9hpramoMCoDE69u3b9x4441xww03xL777qshNEu1tbVZX2P//v1LTQoAIHl8AxgAYIeePXtm/QuuJLwoBIAPa8CAATFgwICYP39+jBs3LpYvX64pNBtJ2Nf16NGjxKQAAJJHAAwAsEOnTp0EwACwFwwYMCAOPPDAmDt3bkyYMCFWrlypKeS8JOzrunbtKgAGAEggATAAwA5lZWVZ/4Krrq7OoADISalUKgYNGhQDBw6M2bNnx4QJE2Lt2rUaQ85KQgDcpk0bV0ADACSQABgAYIeysjIngAFgL0ulUjFs2LAYOnRozJ49O8aPHx/r1q3TGHKOABgAgN1FAAwAsENJSUlxttfoBDAAzcXbQfCQIUPi5ZdfjokTJ0ZFRYXGkDOSEAAnYX8MAMD/JQAGANihqKioKNtrrKmpMSgAmpW8vLw4/PDDY/jw4fH888/HE088EZWVlRpD4iUhAG7RokWRSQEAJI8AGABgh8LCwhbZXF86nY7t27cbFADNUn5+fowaNSpGjhwZL7zwQkycODGqqqo0hsTavn17ZDKZSKVSWVtjixYtWpgUAEDyCIABAHbI9gC4oaHBkABo9goKCmLUqFExYsSImDlzZkyePDm2bNmiMSROJpOJhoaGyOaMtbCw0AlgAIAk/neTFgAA7NgYFRRk9QuuxsZGQwKAHVq0aBHHH398HHnkkfHMM8/E1KlTY9u2bRpDomR7AJzt+2MAAN5jH6cFAAA7NkZZ/oLL9c8A8H8VFRXF6NGj49hjj41nnnkmpkyZEjU1NRpDImT7DS8FBQWugAYASCABMADA2xujLH/B5QpoAHhvbwfBRx11VEyfPj2efvrpqK2t1RiymgAYAIDdIU8LAAD+QQAMAMlXUlISn/nMZ+LOO++M0aNHZ/X1uiAABgBgdxAAAwDskO1XQAuAAeDDKykpibPPPjv+7d/+LUaPHh2FhYWagv3dR5Sfn9/SlAAAkkcADADw9sYoL88JYADIMa1bt46zzz47vve978UJJ5wgCMb+7iPIz8/3LwwAQAIJgAEAdkilUlm9N2psbDQkAPiY2rVrF+edd15897vfjRNOOCEKCgo0Bfu7D94f55sSAEDyCIABAHbI9gA4nU4bEgB8Qu3bt/9nEDxq1KjIy/NqBPu799kfp0wJACB5/FcOAMAOXnABQPPRoUOHuOiii+J73/ueIJi9JpPJZHuJ/sUAAEggmzgAgP+R1QFwAl4QAkDidOzYMS666KL41re+FYcffnj4fTDs796xOc7yG3IAANg5mzgAgITsjQTAALD7dOvWLS699NL41re+FcOGDRMEs0dk+xXQeXl5/kUAAEigAi0AAPiHbH/BJQAGgN2ve/fuceWVV8ayZcviiSeeiDlz5mgKzXl/5/AIAEACCYABAHbIZDJOAAMAERGx7777xtixY2PJkiUxYcKEmD9/vqZgfwwAQCIIgAEA/ocr7gCA/2W//faLG264Id56660YP358vPnmm5rCLpPtV0Cn3IUOAJBIAmAAgB2y/QVXtr8gBIBc1rdv37jxxhvjrbfeinHjxsWiRYs0hU/MFdAAANjEAQDsXln9Bs4BDADY+/r27Rs333xz3HDDDdG7d28NIdf3d75BAgCQQE4AAwDskO0nMATAAJA9BgwYEAMGDIj58+fHI488EitXrtQUcnF/5woaAIAEcgIYAGCHVCqVzvL6DAkAssyAAQPi1ltvjbFjx0bPnj01hJza32UScEc1AAD/lxPAAAD/QwAMAHysv6MHDRoUBx98cDz//PMxadKk2LRpk8aQ+P1dtv+CJAAAO+cEMADADul0dr/fEgADQHarr6+PioqK2LZtm2aQE/u7dDrtBDAAQAI5AQwA8D+cAAYAPrK6urp4+umnY9q0acJfcm1/5wQwAEACCYABAP6HEw4AwIfW0NAQ06ZNiyeffDK2bt2qIXxkCfgGsAAYACCBBMAAADtkMpmsDoDz8ny9AwCywdvB71NPPRXV1dUaQs7u7wTAAADJJAAGANgh219wCYABYO9qbGyMGTNmxJNPPhmVlZUawieWn5+f9VtkUwIASB4BMADADplMpiGb6yssLDQkANgL0ul0zJo1KyZPnhwbN27UEHaZgoLsfjXX1NTUaEoAAAncZ2oBAMA/NDY2bs/m+gTAALBnpdPpePnll2Py5Mmxdu1aDWGXa9GiRbb/O1BvSgAAySMABgDYoampSQAMAEQmk4nZs2fH448/HuXl5RpCs93fNTY2CoABABJIAAwAsENDQ0NWv+ASAAPA7vV28PvEE0/E6tWrNYTdLtuvgM72G3IAAHiPfaYWAAD8gyugAaD5mjNnTkyaNCmWLl2qGewx2X4FtAAYACCZBMAAADs0NTU5AQwAzcyCBQtiwoQJ8dZbb2kG9nfv0tDQIAAGAEggATAAwA7Z/oJLAAwAu87ChQtj/PjxsXjxYs1gr8n2K6Cz/RckAQB4j32mFgAA/EO2B8AFBQWRl5cX6XTasADgY1q+fHmMGzcu5s+frxnsVXl5eVkfAG/fvt0JYACABBIAAwDs0NDQkPUnHFq1ahXbtm0zLAD4iFauXBmPPPKI4Jes2tclYH8sAAYASCABMADADrW1tXXZXqMAGAA+mnXr1sX48eNj9uzZkclkNISs2tdlu7q6ulqTAgBIHgEwAMAOW7du3ZrtNSbhRSEAZIP169fHY489JvjFvu4TqK6u3mpSAADJIwAGANihqqpKAAwACbdhw4Z4/PHH45VXXommpiYNwb7uE6isrHT1DABAAgmAAQB22LRpU9a/4GrZsqVBAcBOVFVVxcSJE+OFF16IxsZGDSHrJSEA3rRpkxPAAAAJJAAGANhh3bp1WR8AOwEMAP/bli1bYsKECYJfEicJ+7ry8nIBMABAAgmAAQB2WLZsmSugASAhqqurY/LkyTFz5syor6/XEBInCfu6pUuXCoABABJIAAwAsMP8+fOz/gRwcXGxQQHQrNXU1MSUKVPimWeeEfySaEnY173++uu+AQwAkEACYACAHRYsWFCXyWQaUqlUYbbW2Lp1a4MCoFmqq6uLp59+OqZNmxbbtsmkSL5s39el0+mGpUuXbjcpAIDkEQADALxDU1PTtoKCgrbZWp8AGIDmZvv27TF9+vR48sknY+tWt9GSO7J9X9fU1ORfOACAhBIAAwC8Q0NDw9ZsDoBLS0sNCYDm8ndyTJs2LZ566qmorq7WEHJOtu/rGhsb/YsHAJBQAmAAgHeor6+vbNWqVc9src8JYAByXWNjY8yYMSOefPLJqKys1BByVrbv6+rr66tMCQAgmQTAAADv0NDQkNVvmgXAAOSqdDods2bNismTJ8fGjRs1hJyX7fu6bN8XAwDw3gTAAADvUFdXV5XN9ZWWlkYqlYpMJmNYAOSETCYTr732Wjz++OOxatUqDaFZSKVSUVJSktU11tbWVpkUAEAyCYABAN5h27Ztm7K5vvz8/GjVqlXU1NQYFgCJlslkYvbs2fH4449HeXm5htCstGrVKvLz87O6xq1btzoBDACQUAJgAIB3qK6u3pztNZaVlQmAAUist4PfiRMnxpo1azSEZqmsrCzra9y2bVuVSQEAJJMAGADgHaqqqjZle43t2rWLtWvXGhYAiTNnzpyYNGlSLF26VDNo1tq1a5f1NW7atMkJYACALNbQWBgFjQ0REZFKRSavMJre/pkAGADgHSoqKqqyvcYkvDAEgHdasGBBTJgwId566y3NgITs5zZs2CAABgDIYoUFDf9MejMRqab0/+S+AmAAgHdYtWpV1r/oatu2rUEBkAgLFy6M8ePHx+LFizUD3iEJAfDq1aurTAoAIJkEwAAA77BgwYKsD4CdAAYg2y1fvjzGjRsX8+fP1wzYiST8Ql8S9sUAAOycABgA4B2eeOKJjZlMpimVSuVna41OAAOQrVauXBmPPPKI4Bc+QLb/Ql8mk2l64oknNpoUAEAyCYABAN6huro6vX379g1FRUVdsrVGJ4AByDZr166NCRMmxOzZsyOTyWgIJHw/t3379g3V1dVpkwIASCYBMADAu9TV1a0XAAPAB1u/fn089thjgl/Isf1cXV3delMCAEguATAAwLvU1dVVtGnTJmvrKykpiRYtWsT27dsNC4C9oqKiIiZOnBivvPJKNDU1aQh8BEVFRVFcXJz1+2GTAgBILgEwAMC7bN26dV2XLll7ADhSqVR07Ngx1qxZY1gA7FFVVVUxceLEeP755wW/8DF17NgxUqlU1u+HTQoAILkEwAAA71JVVZX1Jx46deokAAZgj9m8eXM8/vjj8cILL0RjY6OGwCfcx9kPAwCwOwmAAQDeZf369Vn/zbMkvDgEIPm2bNkSU6ZMiZkzZ0Z9fb2GwC7QsWNH+2EAAHYrATAAwLusXr066088JOHFIQDJVVNTE1OmTIlnnnlG8Au7WBJ+kW/VqlUCYACABBMAAwC8y9///ves/+aZABiA3aG2tjYmT54czz77bNTV1WkINNN93KuvvioABgBIMAEwAMC7PPzww+t//OMfN6RSqcJsrbFz584GBcAus3379pg+fXpMnTo1tm3bpiGwG2X7CeB0Ot3w8MMPC4ABABJMAAwA8C7V1dXpurq68latWu2TrTV26NAh8vLyIp1OGxgAH1tDQ0NMmzYtnnrqqaiurtYQ2M3y8vKiQ4cOWV1jfX39mtraWptMAIAEEwADAOxEbW3tmmwOgAsKCqJdu3axceNGwwLgI2tsbIwZM2bEk08+GZWVlRoCe0j79u2joCC7X8fV1NSUmxQAQLIJgAEAdmLz5s2r2rdvn9U1duvWTQAMwEeSTqdj1qxZMXnyZH+HwF7av2W7LVu2rDQpAIBkEwADAOzEpk2bVvfp0yera+zWrVvMmzfPsAD4QG8Hv1OmTIkNGzZoCOzF/Vu227BhwxqTAgBINgEwAMBOrFixYvWwYcOyusYkvEAEYO/KZDLx0ksvxZQpU6K83K2usLd17do162tctWrVKpMCAEg2ATAAwE7Mnz9/9ZgxY7K6xiS8QARg78hkMjF79uyYOHFirFnjMB9kiyT8At+8efP8oQEAkHACYACAnRg3btyab37zm5mISGVrjU4AA7Azc+bMiSeeeCKWLVumGZBlEvALfJlx48atNikAgGQTAAMA7MTrr79e29DQsKmwsLBDttZYXFwcZWVlsWXLFgMDIBYsWBDjx4+PJUuWaAZkobKysiguLs7qGhsaGjYuWLCgzrQAAJJNAAwA8B62bt26vF27dh2yucauXbsKgAGauYULF8b48eNj8eLFmgFZLAm3t2zbtm25SQEAJJ8AGADgPVRVVS1t167d0GyusWfPnrFw4ULDAmiGli1bFo899ljMnz9fMyABevbsmfU1VlZWLjUpAIDkEwADALyHdevWLevTp09W15iEF4kA7ForVqyIRx99VPALCZOEfdvatWuXmRQAQPIJgAEA3sPChQuXHX744VldY69evQwKoJlYtWpVjB8/PubOnRuZTEZDIGGSsG9buHDhMpMCAEg+ATAAwHuYNm3a0ksuuSSra+zevXvk5+dHU1OTgQHkqHXr1sX48eNj9uzZgl9IqIKCgkR8A/jpp59eZloAADmw/9QCAICde+ihhzbcd999W/Pz80uzdjNXUBBdunSJNWvWGBhAjqmoqIiJEyfGyy+/HOl0WkMgwbp27RoFBdn9Gq6xsbH6kUce2WBaAADJJwAGAHgf27ZtW15WVnZwNtfYq1cvATBADqmqqoqJEyfG888/74YHyBFJ+P7vtm3blpsUAEBuEAADALyPLVu2LMv2ALhnz57x0ksvGRZAwm3evDkef/zxeOGFF6KxsVFDIIck4fu/W7ZsWWpSAAC5QQAMAPA+1q9fvyzbT2z06NHDoAASbMuWLTFlypSYOXNm1NfXawjkoCTs19avX7/MpAAAcoMAGADgfSxYsGDh0KFDs7rGfffdN1KpVGQyGQMDSJCampqYMmVKPPPMM4JfyGGpVCr23XffrK9z/vz5C00LACA3CIABAN7Ho48++uYFF1yQ1TWWlJRE586dY926dQYGkAC1tbUxefLkePbZZ6Ourk5DIMd17do1WrVqlfV1/vnPf15kWgAAuUEADADwPiZNmlRVX1+/oaioqGM217nvvvsKgAGy3Pbt22P69OkxderU2LZtm4ZAM9GnT5+sr7G+vr7iySefrDItAIDcIAAGAPgAW7duXZTtAXCfPn3ipZdeMiyALNTQ0BDTpk2Lp556KqqrqzUEmpkkXP+8detWp38BAHKIABgA4ANUVFQs7NChw8hsrjEJLxYBmpvGxsaYMWNGPPnkk1FZWakh0EwlYZ9WUVHh+78AADlEAAwA8AGWLl266MADD8zqGnv16hUFBQXR2NhoYAB7WTqdjlmzZsWkSZNi06ZNGgLNWGFhYfTs2TMR+13TAgDIHQJgAIAPMHPmzEWnnnpqdm/qCgqiZ8+esWzZMgMD2EveDn4nT54cGzdu1BAg9tlnn8jPz0/CfnexaQEA5I48LQAAeH+//OUvV6bT6bpsr7NPnz6GBbAXZDKZePHFF+O73/1u3H///cJf4J+ScP1zOp2u++Uvf7nStAAAcocTwAAAH6C6ujpdXV29uE2bNodkc539+vWL6dOnGxjAHpLJZGL27NkxceLEWLNmjYYAO92fJWCvu7i6ujptWgAAuUMADADwIWzYsGFetgfA/fv3NyiAPeTVV1+NSZMmxapVqzQD2KlUKpWI/dmGDRvmmhYAQG4RAAMAfAiLFy9+o2/fvlldY1lZWXTu3DnWr19vYAC7yYIFC2L8+PGxZMkSzQDeV5cuXaK0tDQJ+9z5pgUAkFsEwAAAH8JTTz31+ujRo7O+zv33318ADLAbLFy4MMaPHx+LFy/WDOBD78uSYMqUKa+bFgBAbsnTAgCAD/aLX/xiTWNjY1W215mUF40ASbFs2bK4++674z/+4z+Ev8BHkoTv/zY0NFTee++9q00LACC3OAEMAPAhNDQ0ZDZv3jy/Q4cOI7O5TgEwwK6xYsWKePTRR2P+fDejArm7L9uyZYs/5AAAcpAAGADgQ1q3bl3WB8AdO3aMNm3axObNmw0M4GNYtWpVjB8/PubOnRuZTEZDgI+lbdu20aFDh0Tsb00LACD3CIABAD6kefPmzTvooIOyvs4DDzwwXnrpJQMD+AjWrVsX48ePj9mzZwt+gV2yH0uCuXPnzjMtAIDcIwAGAPiQ/vznP88/77zzsr7OAw44QAAM8CFVVFTEuHHjBL/ALt+PJcHDDz/sBDAAQA4SAAMAfEgTJ06srK2tXdGqVat9srnOgw8+2LAAPkBVVVVMnDgxnn/++WhqatIQYJdKwq0xNTU1yydNmlRlWgAAuUcADADwEWzYsOHvvXr1yuoAuG3bttG1a9dYu3atgQG8y+bNm+Pxxx+PF154IRobGzUE2OW6desWbdu2TcS+1rQAAHKTABgA4CNYuHDha7169Toj2+scMGCAABjgHbZs2RJTpkyJ5557LrZv364hwG6TlO//Lly48O+mBQCQmwTAAAAfwcSJE/9+wgknZH2dBx54YEyfPt3AgGavpqYmpkyZEs8880zU19drCLDbDRgwIBF1jh8//u+mBQCQmwTAAAAfwb333rv6Bz/4wfqioqLO2VznAQccEHl5eZFOpw0NaJZqa2tj8uTJ8eyzz0ZdXZ2GAHtEXl5e9O/fP+vrrK+vX3ffffeVmxgAQG4SAAMAfESVlZVzu3btmtXHgFu1ahX77LNPLFu2zMCAZqWuri6efvrpmDZtWmzbtk1DgD1qn332iVatWmV9nZs2bZpjWgAAuUsADADwES1dunR2tgfAERGDBg0SAAPNRkNDQ0ybNi2eeuqpqK6u1hBgr+2/kuCtt976m2kBAOQuATAAwEc0ffr0v48cOTLr6xw4cGBMmDDBwICc1tDQEM8991w8+eSTUVlZqSHAXt9/JcG0adP+bloAALlLAAwA8BH9x3/8x9JbbrmlOj8/v3U219mrV68oKyuLLVu2GBqQc9LpdMyaNSsmTZoUmzZt0hBgrysrK4tevXplfZ2NjY1b7rnnnmUmBgCQuwTAAAAfUW1tbXrDhg1/7dKly3HZXGcqlYqBAwfGrFmzDA3IGW8Hv5MnT46NGzdqCJA1Bg4cGKlUKuvr3Lhx4yu1tbVpEwMAyF0CYACAj+Gtt956JdsD4IgQAAM5I51Ox8svvxxTpkyJ8vJyDQGyct+VBIsWLXrFtAAAcpsAGADgYxg/fvwrRxxxRNbXedBBB0VBQUE0NjYaGpBImUwmZs+eHRMnTow1a9ZoCJCVCgoK4qCDDkpErY888ogAGAAgx+VpAQDAR/fjH/94ZX19/fpsr7OoqCj69etnYEAivfrqq3HHHXfEz3/+c+EvkNX69esXRUVFWV9nXV1d+b333rvaxAAAcpsTwAAAH9OGDRte6dGjx6ezvc5BgwbFggULDAxIjCVLlsSECRNi/vz5mgEkwuDBgxNR5/r1653+BQBoBgTAAAAf07x5815OQgA8bNiwePjhhyOTyRgakNXefPPNmDBhQixevFgzgMRIpVIxdOjQRNQ6d+7cl0wMACD3CYABAD6m++677+XRo0dnIiKVzXW2bds2evfuHcuWLTM0ICstW7YsHnvsMSd+gUTq06dPtG3bNgmlpu+9996/mhgAQO4TAAMAfEwTJ06s3Lp165LS0tK+2V7rkCFDBMBA1lmxYkU8+uijgl8g0YYMGZKIOqurqxc+/fTTm00MACD3CYABAD6B8vLyl/fff/+sD4AHDx4c48aNMzAgK6xcuTImTJgQc+fOdT09kHhJ+f7vmjVrfP8XAKCZEAADAHwCM2fOfG7//ff/fLbX2a1bt+jWrVuUl5cbGrDXrFu3LsaPHx+zZ88W/AI5oWfPntGlS5dE1DpjxoznTAwAoHkQAAMAfAK33Xbba5dcckl1fn5+62yvdciQIQJgYK9Yv359PPbYY4JfIOck5frnxsbGzbfddts8EwMAaB4EwAAAn0BlZWXThg0b/tqlS5fjsr3WQw89NCZNmmRowJ78MzKeeOKJeP7556OpqUlDgJxz6KGHJqLOioqKV6qrq9MmBgDQPAiAAQA+oXnz5s1MQgDcu3dv10ADe0RVVVVMnDgxXnjhhWhsbNQQICd17949evbsmZT9quufAQCakTwtAAD4ZP77v/97VkQk4kTFpz71KQMDdpstW7bEQw89FLfffns899xzwl8gpw0fPjwRdWYymfTdd9/9gokBADQfTgADAHxCkyZNqtqyZcuCsrKyg7K91uHDh8fjjz9uaMAuVVNTE1OmTIlnnnkm6uvrNQTIealUKg477LBE1Lply5bXp0+fvsXUAACaDwEwAMAusHz58lkDBw7M+gC4S5cu0atXr1i5cqWhAZ9YbW1tTJ48OZ599tmoq6vTEKDZ6N27d3Ts2DEx+1QTAwBoXgTAAAC7wLPPPvvCwIEDr0hCrcOGDRMAA59IXV1dPP300zFt2rTYtm2bhgDNzrBhwxJT61/+8pcXTQwAoHnxDWAAgF3g1ltvnV9fX782CbUefvjhkUqlDA34yBoaGmLq1Klx6623xuOPPy78BZqlJF3/XFdXt/rWW29dYGoAAM2LE8AAALtAQ0NDZs2aNc/16dPns9lea7t27aJPnz6xZMkSgwM+7J9xMW3atHjqqaeiurpaQ4Bmbb/99ou2bdsmotbVq1fPNDEAgOZHAAwAsIs8++yz05IQAEdEHHHEEQJg4AOl0+mYNWtWTJo0KTZt2qQhABFx5JFHJqbW6dOnTzMxAIDmxxXQAAC7yC233PJaQ0NDZRJqHT58eLRo0cLQgJ1Kp9Px3HPPxW233Rb333+/8Bdgh6KiovjUpz6ViFobGho23HLLLXNNDQCg+XECGABgF6murk6Xl5c/t88++5yR7bW2bNkyDj300Hj55ZcNDvindDodL7/8ckyZMiXKy8s1BOBdhgwZEkVFRYmodc2aNc/V1tamTQ0AoPkRAAMA7EIvvvjiM0kIgCMiRo4cKQAGIiIik8nE7NmzY+LEibFmzRoNAXif/VNSzJo161kTAwBongTAAAC70O233/7KOeecszU/P78022sdMGBAtG/f3tWu0My9+uqrMWnSpFi1apVmALyPjh07xgEHHJCIWhsbG6u/8Y1v/NXUAACaJwEwAMAutHLlyob169fP6tat2+hsrzWVSsXhhx8ekyZNMjhohubMmROTJ0+OJUuWaAbAh3D44YdHKpVKRK3r16+fVVFR0WhqAADNU54WAADsWq+++mpirts77LDDDAyamTfffDP+/d//PX7yk58IfwE+pFQqFSNGjEhMva+88sozpgYA0Hw5AQwAsIvddNNNz5166qnV+fn5rbO91m7dukX//v1j4cKFBgc5btmyZfHYY4/F/PnzNQPgIzrggAOic+fOiai1sbFxy4033jjL1AAAmi8BMADALrZy5cqG8vLyGT179vx0Euo9+uijBcCQw5YvXx7jxo0T/AJ8wv1SUpSXlz9TXl7eYGoAAM2XABgAYDeYMWPGUxdccEEiAuAhQ4ZE69ato7q62uAgh6xcuTImTJgQc+fOjUwmoyEAH1ObNm3i0EMPTUy9zz777FOmBgDQvPkGMADAbvDVr371lYaGhk1JqLWgoCCOOOIIQ4McsW7duvj5z38ed955Z8yZM0f4C/AJjRw5MvLz8xNRa0NDw8abbrrpVVMDAGjenAAGANgNKisrm1atWjW9T58+5ySh3qOPPjqefPJJQREk2Pr16+Oxxx6L2bNn+3cZYBdJpVIxatSoxNS7cuXKadXV1WmTAwBo3pwABgDYTaZNm5aY6/c6duwYAwYMMDRIoA0bNsSvf/3r+Nd//dd49dVXhb8Au9CAAQOiY8eOian36aefftLUAAAQAAMA7CZf+9rX5tTX11ckpd6jjjrK0CBBqqqq4v77749vf/vb8eKLL0ZTU5OmAOxiRx55ZGJqra+vX/eNb3zjdVMDAMAV0AAAu0ltbW16xYoVT++///6fT0K9hx56aLRt2zaqqqoMD7LYli1bYsqUKfHcc8/F9u3bNQRgN2nbtm0MGTIkMfUuX778qdraWtc/AwDgBDAAwO70xz/+cUJSas3Pz4/jjjvO0CBL1dTUxKOPPhq33XZb/OUvfxH+Auxmxx57bOTn5yel3Myvf/3rCaYGAECEABgAYLe66667llZXV89PSr1HH310tGjRwuAgi7wd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qATAAABZ4umnn968fPnyxF3xN3r06GjXrp0BAgBZqUOHDnH88ccnru5ly5ZNmD59+hYTBADgoxIAAwBkkbvvvvtPmUymKUk1FxYWxumnn254AEBWOvPMMxP3yYpMJtN41113/dH0AAD4OATAAABZ5Be/+MWatWvXTkta3UcccUT06tXLAAGArNK7d+847LDDEld3eXn5X+6///51JggAwMchAAYAyDIPP/zwn5JWcyqVijPPPNPwAICsMmbMmEilUomr+8EHH/yT6QEA8HEJgAEAsszXv/71NzZs2DAraXUPHDgwDj74YAMEALLCoEGDYsCAAYmru6KiYuatt966wAQBAPi4BMAAAFlo3Lhxv01i3WPGjIm8PFtMAGDvysvLizFjxiSy9j//+c+/NUEAAD7RflgLAACyz/XXXz+nqqrqr0mru1evXnHUUUcZIACwVx1zzDHRvXv3xNW9adOmV2666aa5JggAwCchAAYAyFJ/+tOf7k1i3WPGjInS0lIDBAD2ijZt2sRZZ52VyNofeOCBe00QAIBPSgAMAJClbrrpprlJPAVcXFwcZ555pgECAHvFWWedFS1btkxc3Zs2bXrl5ptvnmeCAAB8UgJgAIAsNm7cuF8lse5Ro0ZF7969DRAA2KP69OkTI0eOTGTtjz322K9MEACAXUEADACQxcaOHTu7qqrqb0mrO5VKxfnnnx+pVMoQAYA9tv/4/Oc/n8j9R2Vl5d+uueaav5kiAAC7ggAYACDLTZ069bdJrLtv374xZMgQAwQA9ojDDjsssTeQTJ48+TcmCADAriIABgDIcpdeeumLVVVVryax9s9//vNRXFxsiADAblVaWhrnn39+Imuvqqr66+WXX/6SKQIAsKsIgAEAEuChhx76WRLrLisri9NPP90AAYDd6qyzzoqSkpIklp753e9+91MTBABgVxIAAwAkwA033DB3w4YNs5JY+3HHHRd9+vQxRABgt+jbt28cddRRiay9oqJi1te//vU3TBEAgF1JAAwAkBA///nPfxoR6aTVnUql4vOf/3zk5dl6AgC7Vn5+flx00UWRSqWSWH76F7/4xX+bIgAAu5q3cAAACXHHHXe8tW7duulJrL13795xzDHHGCIAsEudcMIJ0b1790TWXl5e/pc77rjjLVMEAGBXEwADACTI3XfffW8mk2lKYu1nnXVWtG3b1hAB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onv37vEv//IvccABBzSrdWcymaYnnnji9s997nPPeAoAAODDEQADAJBYDz/88NJjjjlmY+/evY+KiGZzFKq0tDSGDx8eq1evjvXr13sQAHLcwIED45prrol27do1t6VnZsyY8YOzzjprqqcAAAA+PAEwAACJdv/99795zDHHVO6zzz5HRDMKgVu0aBGHHXZYtGzZMhYuXBjpdNrDAJBjCgoK4pxzzonzzz8/WrRo0dyWn37uuefuOuWUUyZ4EgAA4KMRAAMAkHi///3v5w8bNmxF3759j2lO10GnUqno27dvDB06NBYvXhxbtmzxMADkiJ49e8YNN9wQgwcPblbf+434x7XPU6ZM+fbpp58+2ZMAAAAfnQAYAICc8OCDDy4ZNmzYin79+jWrEDgionXr1nHEEUdEfX19LF261MMAkGCpVCpOOOGEuOKKK6JNmzbNbv07wt9vnXPOOX/xNAAAwMcjAAYAIGc89NBDS4YNG7a8X79+xza3EDg/Pz8OPvjg6NWrV8yfPz8aGho8EAAJU1JSEpdffnmccMIJkZ+f3+zWn8lkGp944olvffazn53maQAAgI9PAAwAQE556KGHlo4cOXJdnz59RqWa252ZEdG1a9cYNmxYLFu2LCorKz0QAAnRt2/fuO6662K//fZrluvPZDLpp59++rvnnHPO054GAAD4ZATAAADknD/96U+LDj300KX7779/s7sOOiKiuLg4jjzyyCgpKYk333wz0um0hwIgSxUUFMRnP/vZuPDCC6OkpKRZ9iCdTjc88sgjt5x//vnTPREAAPDJCYABAMhJDz/88NId3wQelUqlmt09mqlUKvr06RMHH3xwLFy4MLZt2+ahAMgynTt3jrFjx8bQoUOjGV5aERH/CH+feOKJ2y+88MLnPBEAALBrCIABAMhZDz300JIePXq8NmjQoGPz8vJaNMcetG3bNkaNGhVNTU2xZMkSDwVAFkilUjF69Oi48soro0OHDs22D01NTdt++9vf/stll132oqcCAAB2HQEwAAA5bdKkSeXdu3efM3jw4GYbAufn58eAAQOiV69esWDBgti+fbsHA2Avad26dVx66aVx/PHHR35+frPtQ2NjY/WvfvWrf7nuuute81QAAMCuJQAGACDnTZ48eW1jY+OMI4444uiCgoKS5tqHrl27xqhRo2Lbtm2xcuVKDwbAHpRKpWLUqFExduzY6NWrV7PuRX19/fo77rjjK9/61rcWejIAAGDXEwADANAsPP/881UbNmx45rjjjjuqsLCwrLn2obCwMAYNGhT77bdfLF68OGpraz0cALtZ+/bt44orrogTTzwxCgub9/uU2tralTfffPPVP/nJT1Z7MgAAYPcQAAMA0Gz87W9/27p27doZJ5xwwsjCwsK2zbkXnTp1ipEjR0Z1dbXTwAC70ciRI+Pqq6+OHj16NPte1NTULL/hhhuu/e1vf7vOkwEAALuPABgAgGbltdde2zpv3rynTznllKFFRUWdmnMvCgsL49BDD4399tsvFi1a5DQwwC709qnfk08+udmf+o2I2Lx587yLL774unHjxm30dAAAwO71fgFwat9zYsTOftC4LmLjq610DwCAxOrVq1fhs88++69du3Y9QTciGhoaYurUqTF58uRobGzUEICPqaCgIE499dQYPXq04HeH8vLyp4499tjvrly5skE3AABg9+swrDYKuuz8ZwJgAAByWuvWrfNeeumlm/fdd9+zdeMfVq9eHffff38sWbJEMwA+ov322y8uuugi1z2/w8KFC38/fPjwnzY0NGR0AwAA9gwBMAAAzd7zzz9/8aGHHnp1RKR0IyKTycTMmTPjz3/+c9TV1WkIwAcoKSmJ8847L0aMGBGplL9Kdki//PLL9xx77LEPagUAAOxZ7xcA+wYwAADNwn333Tfn+OOP39yrV6/DQwgcqVQqevfuHcOHD49169ZFRUWFhwTgPRxyyCExduzY6N+/v/B3h0wm0/jMM8/828knnzxONwAAYM97v28AC4ABAGg2fve7370xePDgJf369Ts6lUrl60hEcXFxjBgxInr06BFLly6N2tpaTQHYoUOHDvGFL3whzjzzzCguLtaQHZqammoeeOCBWz73uc9N1w0AANg7BMAAALDDww8/vKygoOC54cOHH1FQUFCqI//QrVu3OO6446K0tDQWL14cTU1NmgI0Wy1btoxzzjknLr300ujevbuGvENtbe2K22677arbbrvtDd0AAIC9RwAMAADv8Oyzz25avHjx0yeddNKQoqKiTjryD3l5edGnT58YOXJkbN26NVatWqUpQLNz+OGHx1e+8pUYMGBA5OXlacg7VFVV/e3CCy+8/oEHHvDdAAAA2MsEwAAA8C7z58+vefbZZ58+44wz+hcX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OigOOOCAKCoq0pQs0djYuGXmzJk/PvPMMyc2NDS4XgAAAPjQBMAAAJADjjzyyNY/+9nPrujbt++5EZGnI9mluro6Fi5cGPPnz4958+ZFZWWlprBXtGvXLg455JAYMGBA9O/fP1q39nsjWSj91ltv/fmqq676xaxZs6q1AwAA+KgEwAAAkEN++ctfjhgzZsyNrVq16q0b2SmdTsfKlStj0aJFsXDhwli8eHFs27ZNY9gtSkpKol+/ftG/f//Yf//9o1evXpGX53dEslVNTc3yRx999EdXXnnlK7oBAAB8XAJgAADIMd26dSt8+OGHPzd48ODL8vPzbdyzXCaTiTVr1sTChQtj0aJFsWjRotiyZYvG8LGUlZVF//79/xn6du/ePVKplMZkuaampprXXnvtV2PGjHmgoqKiUUcAAIBPQgAMAAA56rjjjiv7r//6r8tdC508mzdvjuXLl8eKFSti+fLlsXjx4qipqdEY/pfi4uLo169f9O7dO/bZZ5/Yd999o6ysTGMSJJPJpJcsWfLn66677pfTp0/3mx8AAMAuIQAGAIAc99Of/nTIueeee3NpaWlf3UimxsbGWLlyZSxdujSWLVsWy5cvj3Xr1kUmk9GcZiKVSkWXLl1in332iT59+kSfPn2iV69eUVBQoDkJtXXr1sUPPvjgj6699tq/6wYAALArCYABAKAZaNeuXf64cePOGTp06BUFBQWtdST56uvrY+XKlf88KbxixYpYu3ZtpNNpzUm4vLy86Nq1a+yzzz7//KdXr17RsmVLzckBjY2NW/7617/+4pxzznm0srKySUcAAIBdTQAMAADNyIknntjmnnvuuXzfffcdk0qlHB3MMdu3b481a9bEmjVrYu3atbF27dooLy+PDRs2CIazUF5eXnTs2DG6desWXbt2jW7dukW3bt2iR48eUVhYqEE5JpPJNC5ZsuRR1z0DAAC7mwAYAACaoa9+9av7Xnfdddd16NDhCN3IfY2Njf8MhNetWxfr1q2LioqKWLduXWzbtk2DdrPS0tLo3LnzP//p0qVLdO3aNbp27eoK52Ziw4YNM//rv/7rxz/60Y+W6wYAALC7CYABAKAZ++UvfznirLPOuq64uNj3gZupmpqaWL9+/T//qaioiMrKyqisrIxNmzZFY2OjJn2AgoKCaN++fbRr1y7at28fHTt2jC5dukSnTp2ic+fOUVxcrEnN1NatW98aP378PVdcccXLugEAAOwpAmAAAGjm2rVrl//ggw+eOWLEiCsLCwvb6gjvtHnz5n+GwZs2bYrKysqorq6OLVu2xJYtW6K6ujqqq6sjk8nk3NpTqVS0bt06WrduHWVlZdGmTZsoLS39X2Fvu3btok2bNh4U/peGhobKl1566efnnHPO+OrqavevAwAAe5QAGAAAiIiIoUOHFt97770XHHjggRfk5+c7ssiHlk6n/xkEV1dXR01Nzfv+k8lkora2NtLpdNTX10dTU1PU1dXt0u8U5+XlRcuWLSM/Pz+KiooiLy8vWrVqFalUKoqLi3f6T0lJSbRq1eqfgW9paWnk5eUZMB9aU1NTzYIFC/745S9/+Y+zZ8+u0REAAGBvEAADAAD/y2mnndb2rrvuurRPnz5n5+XlFeoIe9LbgfDbtm/f/r7XUBcUFESLFi3++b/fDnxhT8pkMg1LliwZd8stt/xq0qRJVToCAADsTQJgAABgp0477bS2d95554X777//5wTBAP9XJpNpWLhw4QO33nrrHwS/AABAtni/ADi/7UHRc2c/SG+LqC33/gcAAHLZokWL6u69995X0un0swcddFCnkpKS3roC8A8VFRUz/7//7/+77aKLLpq6aNGiOh0BAACyRXH3xsgr3fnPBMAAAEDMnDmz8u67736qqalpWr9+/Ypbt27dN5VKpXQGaG4ymUx6zZo1U+65555/Peeccx6cOXNmpa4AAADZRgAMAAB8KDNnzqz88Y9//Gw6nZ4uCAaak7eD37vvvvtfzz///McEvwAAQDYTAAMAAB+JIBhoLgS/AABAEgmAAQCAj+XtILisrOyFvn37diwuLu4VEYJgIBdkKioqnrv33nu/PWbMmEcEvwAAQJK8XwCc2vecGLGzHzSui9j4aivdAwAA/unqq6/u8ZWvfOX8Pn36nJWXl9dCR4CkSafT9UuXLh3/X//1Xw/84he/WKMjAABAEnUYVhsFXXb+MwEwAADwkZ1xxhntb7/99rMPPPDA8/Pz81vrCJDtmpqaqhcsWPDgd77znUcmTpzotC8AAJBoAmAAAGC3GD58eMkPf/jDzwwePPjioqKijjoCZJv6+voNr7322u9vvPHGx2fPnl2jIwAAQC4QAAMAALvV0KFDi++5556zDjnkkPOKioq66giwt9XV1a19/fXXH7z++uvHC34BAIBcIwAGAAD2iFatWuXdc889w0455ZTzO3bseJSOAHtYZsOGDbOmTJny4PXXX/9qbW1tWksAAIBcJAAGAAD2uH/913/tf/7555/dq1ev0/Ly8lroCLC7pNPp+pUrV05+4IEHHvnOd76zSEcAAIBcJwAGAAD2mjPOOKP97bfffvYBBxzw2YKCgjY6AuwqjY2NVW+++eafv/e97z06YcKETToCAAA0FwJgAABgrxs+fHjJ97///dGDBg0aU1paur+OAB9XdXX1wtdee+3Rr371q1Nfe+21Wh0BAACaGwEwAACQVb761a/ue8EFF3y6b9++ZxUUFLTWEeCDNDY2bnnrrbfG/+EPf5j4ox/9aLmOAAAAzZkAGAAAyEpDhw4t/sEPfnDy4MGDz27dunV/HQHerbq6+s2XX375weuuu+7ppUuXbtcRAAAAATAAAJDlCgsLU3ffffeQ0aNHn9G1a9fj8vLyinQFmq90Ol1XXl4+bcqUKROuvfbav+sIAADA/yYABgAAEqNPnz4t/v3f/33UyJEjz2rfvv2nIiKlK9AsZDZt2vTXF1544bGvfe1rzzntCwAA8N4EwAAAQCJddNFFXa6++uqTDzzwwLNbtmzZTUcg99TV1a1ZsGDBuJ/+9KdP3n///et0BAAA4IMJgAEAgETr1q1b4d13333k4YcffmqHDh2OyMvLK9QVSK50Ot2wcePGWbNmzZp8/fXXz6qoqGjUFQAAgA9PAAwAAOSMo48+uvWtt956/CGHHHJKu3btBkdEnq5AIqQrKytfmzdv3uQ777xz+owZM6q1BAAA4OMRAAMAADnpuOOOK/vGN75x/CGHHHJa27ZtB4bvBUO2yVRVVc2dN2/epO9///vTpk+fvkVLAAAAPjkBMAAAkPNuu+22vmedddZJffr0Oa5Vq1a9dQT2ntra2uXLly+f/uijjz51xx13vKUjAAAAu5YAGAAAaFa+9KUvdbv44ouP7t+//wlOBsMekamqqpq7cOHCv/z+97+fcd9995VrCQAAwO4jAAYAAJqtSy65pOtll112jDAYdrl0VVXVvIULF/7lV7/61bO/+93v1moJAADAniEABgAAiIirr766x/nnnz9q//33P7JNmzZDUqlUga7Ah5fJZBoqKyv/vnjx4uf+9Kc/zbr33ntX6woAAMCeJwAGAAB4l379+hV97WtfGzRy5MhRPXv2PLaoqKizrsD/VV9fv37VqlXPvPDCC8/9+7//+5zFixfX6woAAMDeJQAGAAB4H61bt8678847Bx599NFHde/efURpaen+4apomq/M1q1bF69Zs+bF5557btY3v/nNOdXV1WltAQAAyB4CYAAAgI9g8ODBrcaOHXvI8OHDD+vevfvw1q1bHxACYXJXprq6+s01a9a88sorr7z8k5/8ZN5rr71Wqy0AAADZSwAMAADwCVx//fX7nHHGGYf169dvePv27Yfm5+e31hWSrLGxsXrjxo2vvvXWWy+PHz/+lR//+McrdQUAACA5BMAAAAC70Je//OUe55xzzvA+ffoM7tix45CioqKuukI2q6+vX7t27doXFy9ePGfixImv3Xvvvat1BQAAILkEwAAAALvRl7/85R6f+cxnBvfr129Qly5dDm/ZsqVAmL2qrq5u7bp16wS+AAAAOUoADAAAsIe0atUq75prrtnn2GOPPXi//fY7uH379oeUlpb2TaVS+brDbpKuqalZtnHjxnlvvfXW3GeffXbef/3Xfy2vra1Naw0AAEBuEgADAADsRQceeGDLq6+++oAhQ4Yc3LNnz4Pbtm17sGuj+biampqqq6qqXi8vL583Z86ceb/85S/nvfjii1t1BgAAoPkQAAMAAGSZoUOHFn/xi1/cf9CgQQf26NHjwHbt2h3YqlWr3qlUKk932CFdU1OzvLKycsHq1asXzJkzZ8Gf//znJTNmzKjWGgAAgOZNAAwAAJAAxx13XNkFF1xw4MEHH3xA165dDywtLd23pKRkn1QqVag7uS2TyTRs27ZtRXV19dJ169YtfOONNxZOmDBh4YQJEzbpDgAAAO8mAAYAAEiw8847r+OJJ57Yp3///vt16dKlT5s2bfZr3bp1v/z8/GLdSZampqaa6urqxZs3b16ybt26pQsXLlzy9NNPL33ooYc26A4AAAAflgAYAAAgx7Rr1y7/kksu6TFkyJCe++67b89OnTr1Kisr61VcXNyzZcuW3VKpVL4u7R2ZTKaprq6uvKamZtWWLVtWVlRUrFy6dOnK2bNnr7r//vvXVFZWNukSAAAAn4QAGAAAoBnp1KlTwec+97luQ4cO7bnPPvv0aNeuXafWrVt3Li4u7tqyZcvORUVFnfLy8lro1MeTTqe319fXr6+rq6uoqalZW11dvb6y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AACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoMY3JP//9K8My551lzpAk293a7QAAAAAAAAD8iIw3r+SL7TpPxuSt4/ibJJuz20QDBgAAAAAAAHhzrJPp6NvHYcyyjLl7dJTPbl/Jp6sPLufSsM+5ec7q5YOrF0OeP/SVaAAAAAAAAIA3weH7u6zfm79dWDIMSw6225w785vsx3XyzasOby5ssz69c4sAAAAAAAAAr9n69C6bC9sT93a7rKdnORin5Otxynzi1JQcfiwCAwAAAAAAALxO69O7HH68TaaT98cp85R8vbp3Nfszv8q0LHn7xMF1sjk/ZzUPmZ/MmWefhAYAAAAAAAD4oayPdjn7223Gn7x6ZrXPnetX8mBKkpv3cufDd/Pufn5FL56SzcVtNheT3dNt8tQlAwAAAAAAAHyv1sm0ySv/9XtsNWZ3I/lHkgzHi7/4XY7WYz5yiwAAAAAAAAA/Ivtcv/3nPEyS1fHa42t5+vNLyX7JoRsCAAAAAAAAePPt1/nbV3/KvePn1Xc371/NYxEYAAAAAAAA4M0yTHk2rvNo2WdzvHZqzN9v/SF3vju3evng/at5fPDLPDu1yuGyZHSVAAAAAAAAAK/XOGe4ueSvZ4e8M8xZbVe5ceuPufvy3Oqkw4+v5emDX+fuuTlLhhwsEYIBAAAAAAAAXpclGR8OuXP0TR4cPM/9z/+SRyfNDf/1TZezOp/87KdjzizJZkhO7edMy/w/nAUAAAAAAADg/zaMWcZkP8/ZLsmLacr2/MV8+cnvs/tP5/4FmLjAq1ifcioAAAAASUVORK5CYII=\",u=e.objectName?z(e.objectName):\"Media \"+n._slideObjects.filter(e=>e._type===O.media).length,f={_type:O.media};if(!t&&!l&&\"online\"!==r)throw new Error(\"addMedia() error: either `data` or `path` are required!\");if(l&&!l.toLowerCase().includes(\"base64,\"))throw new Error(\"addMedia() error: `data` value lacks a base64 header! Ex: 'video/mpeg;base64,NMP[...]')\");if(!p.toLowerCase().includes(\"base64,\"))throw new Error(\"addMedia() error: `cover` value lacks a base64 header! Ex: 'data:image/png;base64,iV[...]')\");if(\"online\"===r&&!c)throw new Error(\"addMedia() error: online videos require `link` value\");a=e.extn||(l?l.split(\";\")[0].split(\"/\")[1]:t.split(\".\").pop())||\"mp3\",f.mtype=r,f.media=t||\"preencoded.mov\",f.options={},f.options.x=o,f.options.y=i,f.options.w=s,f.options.h=A,f.options.objectName=u,\"online\"===r?(e=S(n),n._relsMedia.push({path:t||\"preencoded\"+a,data:\"dummy\",type:\"online\",extn:a,rId:e,Target:c}),f.mediaRid=e,n._relsMedia.push({path:\"preencoded.png\",data:p,type:\"image/png\",extn:\"png\",rId:S(n),Target:`../media/image-${n._slideNum}-${n._relsMedia.length+1}.png`})):(o=n._relsMedia.filter(e=>e.path&&e.path===t&&e.type===r+\"/\"+a&&!e.isDuplicate)[0],i=S(n),n._relsMedia.push({path:t||\"preencoded\"+a,type:r+\"/\"+a,extn:a,data:l||\"\",rId:i,isDuplicate:!(null==o||!o.Target),Target:null!=o&&o.Target?o.Target:`../media/media-${n._slideNum}-${n._relsMedia.length+1}.`+a}),f.mediaRid=i,n._relsMedia.push({path:t||\"preencoded\"+a,type:r+\"/\"+a,extn:a,data:l||\"\",rId:S(n),isDuplicate:!(null==o||!o.Target),Target:null!=o&&o.Target?o.Target:`../media/media-${n._slideNum}-${n._relsMedia.length+0}.`+a}),n._relsMedia.push({path:\"preencoded.png\",type:\"image/png\",extn:\"png\",data:p,rId:S(n),Target:`../media/image-${n._slideNum}-${n._relsMedia.length+1}.png`})),n._slideObjects.push(f)}return this}addNotes(e){return this._slideObjects.push({_type:O.notes,text:[{text:e}]}),this}addShape(e,t){return ue(this,e,t),this}addTable(e,t){return this._newAutoPagedSlides=((a,e,t,n,r,o,i)=>{let s=[a],A=t&&\"object\"==typeof t?t:{};if(A.objectName=A.objectName?z(A.objectName):\"Table \"+a._slideObjects.filter(e=>e._type===O.table).length,null===e||0===e.length||!Array.isArray(e))throw new Error(\"addTable: Array expected! EX: 'slide.addTable( [rows], {options} );' (https://gitbrent.github.io/PptxGenJS/docs/api-tables.html)\");if(!e[0]||!Array.isArray(e[0]))throw new Error(\"addTable: 'rows' should be an array of cells! EX: 'slide.addTable( [ ['A'], ['B'], {text:'C',options:{align:'center'}} ] );' (https://gitbrent.github.io/PptxGenJS/docs/api-tables.html)\");let l=[],c=(e.forEach(e=>{let r=[];Array.isArray(e)?e.forEach(e=>{let t={_type:O.tablecell,text:\"\",options:\"object\"==typeof e&&e.options?e.options:{}};\"string\"==typeof e||\"number\"==typeof e?t.text=e.toString():e.text&&(\"string\"==typeof e.text||\"number\"==typeof e.text?t.text=e.text.toString():e.text&&(t.text=e.text),e.options)&&\"object\"==typeof e.options&&(t.options=e.options),t.options.border=t.options.border||A.border||[{type:\"none\"},{type:\"none\"},{type:\"none\"},{type:\"none\"}];e=t.options.border;Array.isArray(e)||\"object\"!=typeof e||(t.options.border=[e,e,e,e]),t.options.border[0]||(t.options.border[0]={type:\"none\"}),t.options.border[1]||(t.options.border[1]={type:\"none\"}),t.options.border[2]||(t.options.border[2]={type:\"none\"}),t.options.border[3]||(t.options.border[3]={type:\"none\"});[0,1,2,3].forEach(e=>{t.options.border[e]={type:t.options.border[e].type||u.type,color:t.options.border[e].color||u.color,pt:(\"number\"==typeof t.options.border[e].pt?t.options.border[e]:u).pt}}),r.push(t)}):(console.log(\"addTable: tableRows has a bad row. A row should be an array of cells. You provided:\"),console.log(e)),l.push(r)}),A.x=M(A.x||(0===A.x?0:R/2),\"X\",r),A.y=M(A.y||(0===A.y?0:R/2),\"Y\",r),A.h&&(A.h=M(A.h,\"Y\",r)),A.fontSize=A.fontSize||v,A.margin=0===A.margin||A.margin?A.margin:Y,\"number\"==typeof A.margin&&(A.margin=[Number(A.margin),Number(A.margin),Number(A.margin),Number(A.margin)]),-1!==JSON.stringify({arrRows:l}).indexOf(\"hyperlink\")||A.color||(A.color=A.color||d),\"string\"==typeof A.border?(console.warn(\"addTable `border` option must be an object. Ex: `{border: {type:'none'}}`\"),A.border=null):Array.isArray(A.border)&&[0,1,2,3].forEach(e=>{A.border[e]=A.border[e]?{type:A.border[e].type||u.type,color:A.border[e].color||u.color,pt:A.border[e].pt||u.pt}:{type:\"none\"}}),A.autoPage=\"boolean\"==typeof A.autoPage&&A.autoPage,A.autoPageRepeatHeader=\"boolean\"==typeof A.autoPageRepeatHeader&&A.autoPageRepeatHeader,A.autoPageHeaderRows=void 0===A.autoPageHeaderRows||isNaN(Number(A.autoPageHeaderRows))?1:Number(A.autoPageHeaderRows),A.autoPageLineWeight=void 0===A.autoPageLineWeight||isNaN(Number(A.autoPageLineWeight))?0:Number(A.autoPageLineWeight),A.autoPageLineWeight&&(1{var r;return null!=(r=null==t?void 0:t.options)&&r.colspan&&\"number\"==typeof t.options.colspan?e+=t.options.colspan:e+=1,e},0),\"string\"==typeof A.colW||\"number\"==typeof A.colW||A.colW&&Array.isArray(A.colW)&&1===A.colW.length&&1{r.forEach((e,t)=>{\"number\"==typeof e||\"string\"==typeof e?r[t]={_type:O.tablecell,text:String(r[t]),options:A}:\"object\"==typeof e&&(\"number\"==typeof e.text?r[t].text=r[t].text.toString():null==e.text&&(r[t].text=\"\"),r[t].options=e.options||{},r[t]._type=O.tablecell)})}),[]);return A&&!A.autoPage?(L(a,l),a._slideObjects.push({_type:O.table,arrTabRows:l,options:Object.assign({},A)})):(A.autoPageRepeatHeader&&(A._arrObjTabHeadRows=l.filter((e,t)=>t{i(a._slideNum+t)||s.push(o({masterName:(null==n?void 0:n._name)||null})),0{var e=new B;let n=2*(c.length-1)+1;var a=1<(null==(a=null==(a=c[0])?void 0:a.labels)?void 0:a.length);e.folder(\"_rels\"),e.folder(\"docProps\"),e.folder(\"xl/_rels\"),e.folder(\"xl/tables\"),e.folder(\"xl/theme\"),e.folder(\"xl/worksheets\"),e.folder(\"xl/worksheets/_rels\"),e.file(\"[Content_Types].xml\",' \\n'),e.file(\"_rels/.rels\",'\\n'),e.file(\"docProps/app.xml\",'Microsoft Macintosh Excel0falseWorksheets1Sheet1falsefalsefalse16.0300\\n'),e.file(\"docProps/core.xml\",'PptxGenJSPptxGenJS'+(new Date).toISOString()+''+(new Date).toISOString()+\"\"),e.file(\"xl/_rels/workbook.xml.rels\",''),e.file(\"xl/styles.xml\",'\\n'),e.file(\"xl/theme/theme1.xml\",''),e.file(\"xl/workbook.xml\",'\\n'),e.file(\"xl/worksheets/_rels/sheet1.xml.rels\",'\\n');{let r='';if(p.opts._type===x.BUBBLE||p.opts._type===x.BUBBLE3D)r+=``;else if(p.opts._type===x.SCATTER)r+=``;else if(a){let t=c.length;c[0].labels.forEach(e=>t+=e.filter(e=>e&&\"\"!==e).length),r=r+``+\"\"}else{var o=c.length+c[0].labels.length*c[0].labels[0].length+c[0].labels.length,i=c.length+c[0].labels.length*c[0].labels[0].length+1;r=r+``+''}p.opts._type===x.BUBBLE||p.opts._type===x.BUBBLE3D?c.forEach((e,t)=>{0===t?r+=\"X-Axis\":r=(r+=`${z(e.name||\"Y-Axis\"+t)}`)+`${z(\"Size\"+t)}`}):c.forEach(e=>{r+=`${z((e.name||\" \").replace(\"X-Axis\",\"X-Values\"))}`}),p.opts._type!==x.BUBBLE&&p.opts._type!==x.BUBBLE3D&&p.opts._type!==x.SCATTER&&c[0].labels.slice().reverse().forEach(e=>{e.filter(e=>e&&\"\"!==e).forEach(e=>{r+=`${z(e)}`})}),r+=\"\\n\",e.file(\"xl/sharedStrings.xml\",r)}{let a='';if(p.opts._type===x.BUBBLE||p.opts._type===x.BUBBLE3D){a=(a+=``)+``;let r=1;c.forEach((e,t)=>{0===t?a+=``:(a+=``,r++,a+=``)})}else p.opts._type===x.SCATTER?(a=(a+=`
`)+``,c.forEach((e,t)=>{a+=``})):(a=(a+='
')+``,c[0].labels.forEach((e,t)=>{a+=``}),c.forEach((e,t)=>{a+=``}));a=(a+=\"\")+''+\"
\",e.file(\"xl/tables/table1.xml\",a)}{let o='';if(o+='',p.opts._type===x.BUBBLE||p.opts._type===x.BUBBLE3D?o+=``:p.opts._type===x.SCATTER?o+=``:o+=``,o=o+''+'',p.opts._type===x.BUBBLE||p.opts._type===x.BUBBLE3D){o=(o+=\"\")+``+'0';for(let e=1;e${e}`;o+=\"\",c[0].values.forEach((e,t)=>{o=o+``+`${e}`;let r=2;for(let e=1;e${c[e].values[t]||\"\"}`,r++,o+=`${c[e].sizes[t]||\"\"}`,r++;o+=\"\"})}else if(p.opts._type===x.SCATTER){o=(o+=\"\")+``;for(let e=0;e${e}`;o+=\"\",c[0].values.forEach((e,t)=>{o=o+``+`${e}`;for(let e=1;e${c[e].values[t]||0===c[e].values[t]?c[e].values[t]:\"\"}`;o+=\"\"})}else if(o+=\"\",a){o+=``;for(let e=0;e0`;for(let e=c[0].labels.length-1;e${e}`;o+=\"\";var s=c.length,A=c[0].labels[0].length,l=c[0].labels.length;for(let n=0;n`;let r=s,a=c[0].labels.slice().reverse();a.forEach((e,t)=>{e[n]&&(e=0===t?1:a[t-1].filter(e=>e&&\"\"!==e).length,r+=e,o+=`${r}`)});for(let e=0;e${c[e].values[n]||0}`;o+=\"\"}}else{o+=``,c[0].labels.forEach((e,t)=>{o+=`0`});for(let e=0;e${e+1}`;o+=\"\",c[0].labels[0].forEach((e,t)=>{o+=``;for(let e=c[0].labels.length-1;0<=e;e--)o=(o+=``)+`${c.length+t+1}`+\"\";for(let e=0;e${c[e].values[t]||\"\"}`;o+=\"\"})}o=(o+=\"\")+''+\"\\n\",e.file(\"xl/worksheets/sheet1.xml\",o)}e.generateAsync({type:\"base64\"}).then(e=>{u.file(`ppt/embeddings/Microsoft_Excel_Worksheet${p.globalId}.xlsx`,e,{base64:!0}),u.file(\"ppt/charts/_rels/\"+p.fileName+\".rels\",''+``+\"\"),u.file(\"ppt/charts/\"+p.fileName,(n=>{let e,t,r,a,o='',i=!1;if(o=(o+='')+``+\"\",n.opts.showTitle?o=o+be({title:n.opts.title||\"Chart Title\",color:n.opts.titleColor,fontFace:n.opts.titleFontFace,fontSize:n.opts.titleFontSize||N,titleAlign:n.opts.titleAlign,titleBold:n.opts.titleBold,titlePos:n.opts.titlePos,titleRotate:n.opts.titleRotate},n.opts.x,n.opts.y)+'':o+='',n.opts._type===x.BAR3D&&(o+=``),o+=\"\",n.opts.layout?o=(o=(o=(o=(o=(o=(o=(o+=\"\")+' ')+' ')+' ')+' ')+' ')+' ')+\" \":o+=\"\",Array.isArray(n.opts._type)?n.opts._type.forEach(e=>{var t=Object.assign(Object.assign({},n.opts),e.options),r=t.secondaryValAxis?I:h,a=t.secondaryCatAxis?H:g;i=i||t.secondaryValAxis,o+=me(e.type,e.data,t,r,a)}):o+=me(n.opts._type,n.data,n.opts,h,g),n.opts._type!==x.PIE&&n.opts._type!==x.DOUGHNUT){if(n.opts.valAxes&&1{let a=\"\";return a=(a=(a=(a=(a=(a+=\"\")+' ')+' ')+' ')+' ')+(\"none\"!==t.serGridLine.style?xe(t.serGridLine):\"\"),t.showSerAxisTitle&&(a+=be({color:t.serAxisTitleColor,fontFace:t.serAxisTitleFontFace,fontSize:t.serAxisTitleFontSize,titleRotate:t.serAxisTitleRotate,title:t.serAxisTitle||\"Axis Title\"})),a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a+=` `)+' ')+` `)+' ')+(t.serAxisLineShow?`${Q(t.serAxisLineColor||f.color)}`:\"\")+' ')+\" \")+\" \")+\" \")+\" \")+` `)+` ${Q(t.serAxisLabelColor||d)}`)+` `)+\" \")+' ')+\" \")+' ',t.serAxisLabelFrequency&&(a+=' '),t.serLabelFormatCode&&([\"serAxisBaseTimeUnit\",\"serAxisMajorTimeUnit\",\"serAxisMinorTimeUnit\"].forEach(e=>{!t[e]||\"string\"==typeof t[e]&&[\"days\",\"months\",\"years\"].includes(e.toLowerCase())||(console.warn(`\"${e}\" must be one of: 'days','months','years' !`),t[e]=null)}),t.serAxisBaseTimeUnit&&(a+=` `),t.serAxisMajorTimeUnit&&(a+=` `),t.serAxisMinorTimeUnit&&(a+=` `),t.serAxisMajorUnit&&(a+=` `),t.serAxisMinorUnit)&&(a+=` `),a+=\"\"})(n.opts,V,h))),null!=(e=n.opts)&&e.catAxes&&null!=(t=n.opts)&&t.catAxes[1]&&(o+=ve(Object.assign(Object.assign({},n.opts),n.opts.catAxes[1]),H,I))}return n.opts.showDataTable&&(o=(o=(o=(o=(o=(o=(o=(o=(o=(o=(o=(o=(o=(o=(o=(o+=\"\")+` `)+` `)+` `)+` `)+\" \")+' ')+\" \")+' ')+' ')+` `)+' ')+' ')+\" \")+' ')+\" \"),o=(o=(o=(o+=\" \")+(null!=(r=n.opts.plotArea.fill)&&r.color?W(n.opts.plotArea.fill):\"\"))+(n.opts.plotArea.border?`${W(n.opts.plotArea.border.color)}`:\"\")+\" \")+\" \",n.opts.showLegend&&(o=(o+=\"\")+'',(n.opts.legendFontFace||n.opts.legendFontSize||n.opts.legendColor)&&(o=(o=(o=(o+=\"\")+\" \")+\" \")+(n.opts.legendFontSize?``:\"\"),n.opts.legendColor&&(o+=W(n.opts.legendColor)),n.opts.legendFontFace&&(o+=''),n.opts.legendFontFace&&(o+=''),o=(o=(o+=\" \")+' ')+\" \"),o+=\"\"),o=(o+=' ')+' ',n.opts._type===x.SCATTER&&(o+=''),o=(o=(o=(o=(o+=\"\")+(null!=(a=n.opts.chartArea.fill)&&a.color?W(n.opts.chartArea.fill):\"\"))+(n.opts.chartArea.border?`${W(n.opts.chartArea.border.color)}`:\"\"))+\" \")+''})(p)),t(\"\")}).catch(e=>{r(e)})})})}function me(a,n,o,e,t){let i=-1,s=1;var r=null;let A=\"\";switch(a){case x.AREA:case x.BAR:case x.BAR3D:case x.LINE:case x.RADAR:A+=``,a===x.AREA&&\"stacked\"===o.barGrouping&&(A+=''),a!==x.BAR&&a!==x.BAR3D||(A=(A+='')+''),a===x.RADAR&&(A+=''),A+='',n.forEach(e=>{i++,A=(A=(A=(A=(A=(A+=\"\")+` `)+\" \")+\" Sheet1!$\"+E(e._dataIndex+e.labels.length+1)+\"$1\")+' '+z(e.name)+\"\")+\" \";var t=o.chartColors?o.chartColors[i%o.chartColors.length]:null;A+=\" \",\"transparent\"===t?A+=\"\":o.chartColorsOpacity?A+=\"\"+Q(t,``)+\"\":A+=\"\"+Q(t)+\"\",a===x.LINE||a===x.RADAR?0===o.lineSize?A+=\"\":A=(A+=`${Q(t)}`)+'':o.dataBorder&&(A+=`${Q(o.dataBorder.color)}`),A=(A+=T(o.shadow,l))+' ',a!==x.RADAR&&(A=(A+=\"\")+``,o.dataLabelBkgrdColors&&(A+=`${Q(t)}`),A=(A=(A=(A+=\"\")+``)+`${Q(o.dataLabelColor||d)}`)+``+\"\",o.dataLabelPosition&&(A+=``),A=(A=(A=(A+='')+``)+``)+``+\"\"),a!==x.LINE&&a!==x.RADAR||(A=(A+=\"\")+' ',o.lineDataSymbolSize&&(A+=``),A=(A=(A=(A+=\" \")+` ${Q(o.chartColors[e._dataIndex+1>o.chartColors.length?Math.floor(Math.random()*o.chartColors.length):e._dataIndex])}`)+` ${Q(o.lineDataSymbolLineColor||t)}`+\" \")+\" \"),a!==x.BAR&&a!==x.BAR3D||1!==n.length||!(o.chartColors&&o.chartColors!==q&&1{e=e<0?o.invertedColors||o.chartColors||q:o.chartColors||[];A=(A=(A+=\" \")+` `+' ')+' ',0===o.lineSize?A+=\"\":A=a===x.BAR?(A+=\"\")+' ':(A=(A+=\" \")+' ')+\" \",A=(A+=T(o.shadow,l))+\" \"}),A+=\"\",o.catLabelFormatCode?(A=(A=(A=(A+=\" \")+` Sheet1!$A$2:$A$${e.labels[0].length+1}`+\" \")+\" \"+(o.catLabelFormatCode||\"General\")+\"\")+` `,e.labels[0].forEach((e,t)=>A+=`${z(e)}`),A+=\" \"):1\")+` Sheet1!$A$2:$${E(e.labels.length)}$${e.labels[0].length+1}`+\" \")+` `,e.labels.forEach(e=>{A+=\"\",e.forEach((e,t)=>A+=`${z(e)}`),A+=\"\"}),A+=\" \"):(A=(A=(A+=\" \")+` Sheet1!$A$2:$A$${e.labels[0].length+1}`+\" \")+` `,e.labels[0].forEach((e,t)=>A+=`${z(e)}`),A+=\" \"),A=(A=(A=(A=A+\"\"+\" \")+`Sheet1!$${E(e._dataIndex+e.labels.length+1)}$2:$${E(e._dataIndex+e.labels.length+1)}$${e.labels[0].length+1}`+\" \")+\" \"+(o.valLabelFormatCode||o.dataTableFormatCode||\"General\")+\"\")+` `,e.values.forEach((e,t)=>A+=`${e||0===e?e:\"\"}`),A=(A+=\" \")+\" \",a===x.LINE&&(A+=''),A+=\"\"}),A=(A=(A=(A=(A=(A=(A=(A+=\" \")+` `)+\" \")+\" \")+` `)+\" \"+Q(o.dataLabelColor||d)+\"\")+' ')+\" \",o.dataLabelPosition&&(A+=' '),A=(A=(A=(A=(A+=' ')+' ')+' ')+' ')+` `+\" \",a===x.BAR?A=(A+=` `)+` `:a===x.BAR3D?A=(A=(A+=` `)+` `)+' ':a===x.LINE&&(A+=' '),A+=``,a===x.BAR3D&&(A+=``),A+=``;break;case x.SCATTER:A=(A+=\"\")+''+'',i=-1,n.filter((e,t)=>0{i++,A=(A=(A=(A=(A=(A+=\"\")+` `+` `)+\" \")+` Sheet1!$${E(e+2)}$1`)+' '+z(a.name)+\" \")+\" \";var t=o.chartColors[i%o.chartColors.length];if(\"transparent\"===t?A+=\"\":o.chartColorsOpacity?A+=\"\"+Q(t,'')+\"\":A+=\"\"+Q(t)+\"\",0===o.lineSize?A+=\"\":A=(A+=`${Q(t)}`)+``,A=(A=(A+=T(o.shadow,l))+\" \"+\"\")+' ',o.lineDataSymbolSize&&(A+=``),A=(A=(A=(A+=\"\")+`${Q(o.chartColors[e+1>o.chartColors.length?Math.floor(Math.random()*o.chartColors.length):e])}`)+`${Q(o.lineDataSymbolLineColor||o.chartColors[i%o.chartColors.length])}`+\"\")+\"\",o.showLabel){let r=ne(\"-xxxx-xxxx-xxxx-xxxxxxxxxxxx\");!a.labels[0]||\"custom\"!==o.dataLabelFormatScatter&&\"customXY\"!==o.dataLabelFormatScatter||(A+=\"\",a.labels[0].forEach((e,t)=>{\"custom\"!==o.dataLabelFormatScatter&&\"customXY\"!==o.dataLabelFormatScatter||(A=(A=(A=(A=(A=(A=(A=(A=(A+=\" \")+` `+\" \")+\" \")+\" \")+\" \")+\" \")+\" \")+' ')+\" \"+z(e)+\" \",A=(A=(A=(A=(A=(A=\"customXY\"!==o.dataLabelFormatScatter||/^ *$/.test(e)?A:(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A+=\" \")+' ')+\" ( \")+' ')+' ')+\" \")+\" [\"+z(a.name)+\"\")+\" \")+' ')+\" , \")+' ')+' ')+\" \")+\" [\"+z(a.name)+\"]\")+\" \")+' ')+\" ) \")+' ')+\" \")+\" \")+\" \")+\" \")+\" \",o.dataLabelPosition&&(A+=' '),A=(A=(A=(A=(A=(A=(A+=' ')+' ')+' ')+' ')+' ')+` `+\" \")+\" \")}),A+=\"\"),\"XY\"===o.dataLabelFormatScatter&&(A=(A=(A=(A=(A=(A=(A=(A=(A=(A+=\" \")+\" \")+\" \")+\" \")+\" \")+\" \")+\" \")+\" \")+' ')+\" \",o.dataLabelPosition&&(A+=' '),A=(A=(A=(A=(A=(A=(A=(A+=' ')+` `)+` `)+` `)+' ')+' ')+' ')+\" \")}1===n.length&&o.chartColors!==q&&a.values.forEach((e,t)=>{e=e<0?o.invertedColors||o.chartColors||q:o.chartColors||[];A=(A=(A+=\" \")+` `+' ')+' ',0===o.lineSize?A+=\"\":A=(A+=\"\")+' ',A=(A+=T(o.shadow,l))+\" \"}),A=(A=(A=(A+=\" \")+` Sheet1!$A$2:$A$${n[0].values.length+1}`)+\" General\")+` `,n[0].values.forEach((e,t)=>{A+=`${e||0===e?e:\"\"}`}),A=(A=(A=(A=(A=(A+=\" \")+\" \")+\" \")+` Sheet1!$${E(e+2)}$2:$${E(e+2)}$${n[0].values.length+1}`)+\" General\")+` `,n[0].values.forEach((e,t)=>{A+=`${a.values[t]||0===a.values[t]?a.values[t]:\"\"}`}),A=(A=(A+=\" \")+\" \")+''}),A=(A=(A=(A=(A=(A=(A=(A+=\" \")+` `)+\" \")+\" \")+` `)+\" \"+Q(o.dataLabelColor||d)+\"\")+' ')+\" \",o.dataLabelPosition&&(A+=' '),A=(A=(A=(A+=' ')+' ')+' ')+' ',A=(A+=``)+(\"\");break;case x.BUBBLE:case x.BUBBLE3D:A=A+\"\"+'',i=-1,n.filter((e,t)=>0{i++,A=(A=(A=(A=(A=(A+=\"\")+` `+` `)+\" \")+\" Sheet1!$\"+E(s+1)+\"$1\")+' '+z(r.name)+\" \")+\" \";e=o.chartColors[i%o.chartColors.length];\"transparent\"===e?A+=\"\":o.chartColorsOpacity?A+=`${Q(e,'')}`:A+=\"\"+Q(e)+\"\",0===o.lineSize?A+=\"\":o.dataBorder?A+=`${Q(o.dataBorder.color)}`:A=(A+=`${Q(e)}`)+``,A=A+T(o.shadow,l)+\"\",A=(A=(A=(A+=\" \")+` Sheet1!$A$2:$A$${n[0].values.length+1}`)+\" General\")+` `,n[0].values.forEach((e,t)=>{A+=`${e||0===e?e:\"\"}`}),A=(A=(A=(A+=\" \")+\" \")+\" \")+`Sheet1!$${E(s+1)}$2:$${E(s+1)}$${n[0].values.length+1}`,s++,A=(A+=\" General\")+` `,n[0].values.forEach((e,t)=>{A+=`${r.values[t]||0===r.values[t]?r.values[t]:\"\"}`}),A=(A=(A=(A+=\" \")+\" \")+\" \")+`Sheet1!$${E(s+1)}$2:$${E(s+1)}$${r.sizes.length+1}`,s++,A=(A+=\" General\")+` `,r.sizes.forEach((e,t)=>{A+=`${e||\"\"}`}),A=(A=(A+=\" \")+\" \")+' '}),A=(A=(A=(A=(A+=\"\")+``+\"\")+``)+`${Q(o.dataLabelColor||d)}`)+``+\"\",o.dataLabelPosition&&(A+=``),A=(A=(A=(A=(A=(A=(A+='')+``)+``)+' ')+' ')+\"\")+``+\"\";break;case x.DOUGHNUT:case x.PIE:r=n[0],A=(A=(A=(A=(A=(A=(A=(A=(A=A+(\"\")+' ')+\"\"+' ')+' '+\" \")+\" \"+\" Sheet1!$B$1\")+\" \"+' ')+(' '+z(r.name)+\"\"))+\" \"+\" \")+\" \"+\" \")+' '+' ',o.dataNoEffects?A+=\"\":A+=T(o.shadow,l),A+=\" \",r.labels[0].forEach((e,t)=>{A=(A=(A=A+\"\"+` `)+' ')+`${Q(o.chartColors[t+1>o.chartColors.length?Math.floor(Math.random()*o.chartColors.length):t])}`,o.dataBorder&&(A+=`${Q(o.dataBorder.color)}`),A=(A+=T(o.shadow,l))+\" \"}),A+=\"\",r.labels[0].forEach((e,t)=>{A=(A=(A=(A=(A=(A=(A=A+\"\"+` `)+` `+\" \")+\" \")+` `)+\" \"+Q(o.dataLabelColor||d)+\"\")+` `+\" \")+\" \",a===x.PIE&&o.dataLabelPosition&&(A+=``),A=(A=(A=(A=(A=(A+=' ')+' ')+' ')+' ')+' ')+' '}),A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=A+` `+\" \")+\" \"+\" \")+\" \"+\" \")+` `+' ')+\" \"+\" \")+\" \"+\" \")+(a===x.PIE?'':\"\"))+' '+' ')+' '+' ')+' '+' ')+` `+\"\")+\"\"+\" \")+` Sheet1!$A$2:$A$${r.labels[0].length+1}`+\" \")+` `,r.labels[0].forEach((e,t)=>{A+=`${z(e)}`}),A=(A=(A=(A=(A+=\" \")+\" \"+\"\")+\" \"+\" \")+` Sheet1!$B$2:$B$${r.labels[0].length+1}`+\" \")+` `,r.values.forEach((e,t)=>{A+=`${e||0===e?e:\"\"}`}),A=(A=(A=A+\" \"+\" \")+\" \"+\" \")+` `,a===x.DOUGHNUT&&(A+=``),A+=\"\";break;default:A+=\"\"}return A}function ve(t,e,r){let a=\"\";return t._type===x.SCATTER||t._type===x.BUBBLE||t._type===x.BUBBLE3D?a+=\"\":a+=\"\",a=(a=a+(' ')+\" \")+(''),!t.catAxisMaxVal&&0!==t.catAxisMaxVal||(a+=``),!t.catAxisMinVal&&0!==t.catAxisMinVal||(a+=``),a=(a=(a=(a+=\"\")+(' '))+(' '))+(\"none\"!==t.catGridLine.style?xe(t.catGridLine):\"\"),t.showCatAxisTitle&&(a+=be({color:t.catAxisTitleColor,fontFace:t.catAxisTitleFontFace,fontSize:t.catAxisTitleFontSize,titleRotate:t.catAxisTitleRotate,title:t.catAxisTitle||\"Axis Title\"})),t._type===x.SCATTER||t._type===x.BUBBLE||t._type===x.BUBBLE3D?a+=' ':a+=' ',a=t._type===x.SCATTER?(a+=' ')+' ':(a=(a+=' ')+' ')+' ',a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a+=\" \")+` `)+(t.catAxisLineShow?\"\"+Q(t.catAxisLineColor||f.color)+\"\":\"\"))+(' '))+\" \"+\" \")+\" \"+\" \")+(t.catAxisLabelRotate?``:\"\")+\" \")+\" \"+\" \")+` `)+(\" \"+Q(t.catAxisLabelColor||d)+\"\"))+(' '))+\" \"+\" \")+(' ')+\" \")+\" \"+(' '))+` `)+' '+' ')+` `,t.catAxisLabelFrequency&&(a+=' '),(t.catLabelFormatCode||t._type===x.SCATTER||t._type===x.BUBBLE||t._type===x.BUBBLE3D)&&(t.catLabelFormatCode&&([\"catAxisBaseTimeUnit\",\"catAxisMajorTimeUnit\",\"catAxisMinorTimeUnit\"].forEach(e=>{!t[e]||\"string\"==typeof t[e]&&[\"days\",\"months\",\"years\"].includes(t[e].toLowerCase())||(console.warn(`\"${e}\" must be one of: 'days','months','years' !`),t[e]=null)}),t.catAxisBaseTimeUnit&&(a+=''),t.catAxisMajorTimeUnit&&(a+=''),t.catAxisMinorTimeUnit)&&(a+=''),t.catAxisMajorUnit&&(a+=``),t.catAxisMinorUnit)&&(a+=``),t._type===x.SCATTER||t._type===x.BUBBLE||t._type===x.BUBBLE3D?a+=\"\":a+=\"\",a}function ye(e,t){let r=t===h?\"col\"===e.barDir?\"l\":\"b\":\"col\"!==e.barDir?\"r\":\"t\";t===I&&(r=\"r\");var a=t===h?g:H;let n=\"\";return n=(n+=\"\")+(' ')+\" \",e.valAxisLogScaleBase&&(n+=``),n+='',!e.valAxisMaxVal&&0!==e.valAxisMaxVal||(n+=``),!e.valAxisMinVal&&0!==e.valAxisMinVal||(n+=``),n=(n=(n+=\" \")+` `)+(' '),\"none\"!==e.valGridLine.style&&(n+=xe(e.valGridLine)),e.showValAxisTitle&&(n+=be({color:e.valAxisTitleColor,fontFace:e.valAxisTitleFontFace,fontSize:e.valAxisTitleFontSize,titleRotate:e.valAxisTitleRotate,title:e.valAxisTitle||\"Axis Title\"})),n+=``,n=e._type===x.SCATTER?(n+=' ')+' ':(n=(n+=' ')+' ')+' ',n=(n=(n=(n=(n=(n=(n=(n=(n=(n=(n=(n=(n=(n+=\" \")+` `)+(e.valAxisLineShow?\"\"+Q(e.valAxisLineColor||f.color)+\"\":\"\"))+(' '))+\" \"+\" \")+\" \"+\" \")+` `+\" \")+\" \"+\" \")+` `)+(\" \"+Q(e.valAxisLabelColor||d)+\"\"))+(' '))+\" \"+\" \")+(' ')+\" \")+\" \"+(' '),\"number\"==typeof e.catAxisCrossesAt?n+=` `:\"string\"==typeof e.catAxisCrossesAt?n+=' ':(t=\"r\"===r||\"t\"===r,n+=' '),n+=' e.type===x.AREA).length?\"midCat\":\"between\")+'\"/>',e.valAxisMajorUnit&&(n+=` `),e.valAxisDisplayUnit&&(n+=`${e.valAxisDisplayUnitLabel?\"\":\"\"}`),n+=\"\"}function be(r,a,n){var e=\"left\"===r.titleAlign||\"right\"===r.titleAlign?``:\"\",t=r.titleRotate?``:\"\",o=r.fontSize?`sz=\"${Math.round(100*r.fontSize)}\"`:\"\",i=r.titleBold?1:0;let s=\"\";if(r.titlePos&&\"number\"==typeof r.titlePos.x&&\"number\"==typeof r.titlePos.y){a=r.titlePos.x+a,n=r.titlePos.y+n;let e=0===a?0:a*(a/5)/10,t=(1<=e&&(e/=10),.1<=e&&(e/=10),0===n?0:n*(n/5)/10);1<=t&&(t/=10),.1<=t&&(t/=10),s=``}return`\n \n \n ${t}\n \n \n ${e}\n \n ${Q(r.color||d)}\n \n \n \n \n \n ${Q(r.color||d)}\n \n \n ${z(r.title)||\"\"}\n \n
\n \n \n ${s}\n \n `}function E(e){let t=\"\";e-=1;return t=e<=25?r[e]:\"\"+r[Math.floor(e/r.length-1)]+r[e%r.length]}function T(e,t){var r,a,n,o,i,s;return e?\"object\"!=typeof e?(console.warn(\"`shadow` options must be an object. Ex: `{shadow: {type:'none'}}`\"),\"\"):(r=\"\",e=(t=Object.assign(Object.assign({},t),e)).type||\"outer\",a=j(t.blur),n=j(t.offset),o=Math.round(6e4*t.angle),i=t.color,s=Math.round(1e5*t.opacity),(r=(r+=``)+``+``)+``+\"\"):\"\"}function xe(e){var t=\"\";return(t+=\" \")+` `+(' ')+(' ')+\" \"+\" \"+\"\"}function we(e){if(e&&\"flat\"!==e){if(\"square\"===e)return\"sq\";if(\"round\"===e)return\"rnd\";throw new Error(\"Invalid chart line cap: \"+e)}return\"flat\"}function Ce(e){let t,r,a=\"undefined\"!=typeof process&&!(null==(t=process.versions)||!t.node)&&\"node\"===(null==(r=process.release)?void 0:r.name),o,i,s=a?()=>c(this,void 0,void 0,function*(){({default:o}=yield import(\"node:fs\")),{default:i}=yield import(\"node:https\")}):()=>c(this,void 0,void 0,function*(){}),A=(a&&s(),[]),l=e._relsMedia.filter(e=>!(\"online\"===e.type||e.data||e.path&&(e.path,e.path.includes(\"preencoded\")))),n=[];return l.forEach(e=>{n.includes(e.path)?e.isDuplicate=!0:(e.isDuplicate=!1,n.push(e.path))}),l.filter(e=>!e.isDuplicate).forEach(n=>{A.push(c(this,void 0,void 0,function*(){if(i||(yield s()),a&&o&&0!==n.path.indexOf(\"http\"))try{var e=o.readFileSync(n.path);return n.data=Buffer.from(e).toString(\"base64\"),l.filter(e=>e.isDuplicate&&e.path===n.path).forEach(e=>e.data=n.data),\"done\"}catch(e){throw n.data=P,l.filter(e=>e.isDuplicate&&e.path===n.path).forEach(e=>e.data=n.data),new Error(`ERROR: Unable to read media: \"${n.path}\"\n`+String(e))}return a&&i&&n.path.startsWith(\"http\")?yield new Promise((r,a)=>{i.get(n.path,e=>{let t=\"\";e.setEncoding(\"binary\"),e.on(\"data\",e=>t+=e),e.on(\"end\",()=>{n.data=Buffer.from(t,\"binary\").toString(\"base64\"),l.filter(e=>e.isDuplicate&&e.path===n.path).forEach(e=>e.data=n.data),r(\"done\")}),e.on(\"error\",()=>{n.data=P,l.filter(e=>e.isDuplicate&&e.path===n.path).forEach(e=>e.data=n.data),a(new Error(\"ERROR! Unable to load image (https.get): \"+n.path))})})}):yield new Promise((t,r)=>{let a=new XMLHttpRequest;a.onload=()=>{let e=new FileReader;e.onloadend=()=>{n.data=e.result,l.filter(e=>e.isDuplicate&&e.path===n.path).forEach(e=>e.data=n.data),n.isSvgPng?Pe(n).then(()=>t(\"done\")).catch(r):t(\"done\")},e.readAsDataURL(a.response)},a.onerror=()=>{n.data=P,l.filter(e=>e.isDuplicate&&e.path===n.path).forEach(e=>e.data=n.data),r(new Error(\"ERROR! Unable to load image (xhr.onerror): \"+n.path))},a.open(\"GET\",n.path),a.responseType=\"blob\",a.send()})}))}),e._relsMedia.filter(e=>e.isSvgPng&&e.data).forEach(e=>{c(this,void 0,void 0,function*(){a&&!o&&(yield s()),a&&o?(e.data=P,A.push(Promise.resolve(\"done\"))):A.push(Pe(e))})}),A}function Pe(n){return c(this,void 0,void 0,function*(){return yield new Promise((r,e)=>{let a=new Image;a.onload=()=>{a.width+a.height===0&&a.onerror(\"h/w=0\");let e=document.createElement(\"CANVAS\");var t=e.getContext(\"2d\");e.width=a.width,e.height=a.height,t.drawImage(a,0,0);try{n.data=e.toDataURL(n.type),r(\"done\")}catch(e){a.onerror(e.toString())}e=null},a.onerror=()=>{n.data=P,e(new Error(\"ERROR! Unable to load image (image.onerror): \"+n.path))},a.src=\"string\"==typeof n.data?n.data:P})})}function Se(e){let t,r,a,n=\"\",o=18;Array.isArray(e.text)?e.text.forEach(e=>{var t;\"string\"==typeof e?n+=e:e.text&&(n+=e.text,null!=(t=e.options))&&t.fontSize&&(o=e.options.fontSize)}):\"string\"==typeof e.text&&(n=e.text),null!=(t=e.options)&&t.fontSize&&(o=e.options.fontSize);var i,s,A=\"number\"==typeof(null==(r=e.options)?void 0:r.w)?e.options.w:0,e=\"number\"==typeof(null==(a=e.options)?void 0:a.h)?e.options.h:0;return n&&0!==A&&0!==e?(e=72*e,A=Math.max(72*A-14,10),e=Math.max(e-14,10),s=.55*o,i=1.2*o,A=Math.max(Math.floor(A/s),1),s=n.length,(s=Math.ceil(s/A)*i)<=e?95e3:(A=Math.sqrt(e/s),Math.max(25e3,Math.min(1e5,Math.round(1e5*A))))):75e3}let Le={cover:function(e,t){var e=e.h/e.w,r=e`},contain:function(e,t){var e=e.h/e.w,r=e`},crop:function(e,t){var r=t.x,a=e.w-(t.x+t.w),n=t.y,t=e.h-(t.y+t.h);return``}};function Ee(N){let e,F=N._name?'':\"\",I=1;return N._bkgdImgRid?F+=``:null!=(e=N.background)&&e.color?F+=`${W(N.background)}`:!N.bkgd&&N._name&&N._name===t&&(F+=''),F=(F=F+\"\"+'')+''+'',N._slideObjects.forEach((a,e)=>{let t,r,n,o,i,s,A,l,c,p,u=0,f=0,d=M(\"75%\",\"X\",N._presLayout),h=0,g,m=\"\",v=null,y,b=0,x=0,w,C=null;var P,S,L,E=null==(t=a.options)?void 0:t.sizing,T=null==(r=a.options)?void 0:r.rounding;void 0!==N._slideLayout&&void 0!==N._slideLayout._slideObjects&&a.options&&a.options.placeholder&&(g=N._slideLayout._slideObjects.filter(e=>e.options.placeholder===a.options.placeholder)[0]),a.options=a.options||{},void 0!==a.options.x&&(u=M(a.options.x,\"X\",N._presLayout)),void 0!==a.options.y&&(f=M(a.options.y,\"Y\",N._presLayout)),void 0!==a.options.w&&(d=M(a.options.w,\"X\",N._presLayout)),void 0!==a.options.h&&(h=M(a.options.h,\"Y\",N._presLayout));let B=d,D=h;switch(g&&(!g.options.x&&0!==g.options.x||(u=M(g.options.x,\"X\",N._presLayout)),!g.options.y&&0!==g.options.y||(f=M(g.options.y,\"Y\",N._presLayout)),!g.options.w&&0!==g.options.w||(d=M(g.options.w,\"X\",N._presLayout)),!g.options.h&&0!==g.options.h||(h=M(g.options.h,\"Y\",N._presLayout))),a.options.flipH&&(m+=' flipH=\"1\"'),a.options.flipV&&(m+=' flipV=\"1\"'),a.options.rotate&&(m+=` rot=\"${G(a.options.rotate)}\"`),a._type){case O.table:if(v=a.arrTabRows,y=a.options,b=0,x=0,v[0].forEach(e=>{w=e.options||null,b+=null!==w&&(w,1)&&w.colspan?Number(w.colspan):1}),C=``,C=(C+=' ')+``+'',Array.isArray(y.colW)){C+=\"\";for(let t=0;t`}}else{x=y.colW||R,a.options.w&&!y.colW&&(x=Math.round((\"number\"==typeof a.options.w?a.options.w:1)/b)),C+=\"\";for(let e=0;e`}C+=\"\",v.forEach(r=>{for(let t=0;t({_type:O.tablecell,options:{rowspan:e},_hmerge:!0})),r.splice(t+1,0,...a),t+=n):t+=1}}),v.forEach((e,t)=>{let n=v[t+1];n&&e.forEach((e,t)=>{var r=e._rowContinue||(null==(r=e.options)?void 0:r.rowspan),a=null==(a=e.options)?void 0:a.colspan;r&&1{let r=0;Array.isArray(y.rowH)&&y.rowH[t]?r=U(Number(y.rowH[t])):y.rowH&&!isNaN(Number(y.rowH))?r=U(Number(y.rowH)):(a.options.cy||a.options.h)&&(r=Math.round((a.options.h?U(a.options.h):\"number\"==typeof a.options.cy?a.options.cy:1)/v.length)),C+=``,e.forEach(a=>{let t={rowSpan:1<(null==(o=a.options)?void 0:o.rowspan)?a.options.rowspan:void 0,gridSpan:1<(null==(o=a.options)?void 0:o.colspan)?a.options.colspan:void 0,vMerge:a._vmerge?1:void 0,hMerge:a._hmerge?1:void 0},n=Object.keys(t).map(e=>[e,t[e]]).filter(([,e])=>!!e).map(([e,t])=>`${String(e)}=\"${String(t)}\"`).join(\" \");if(n=n&&\" \"+n,a._hmerge||a._vmerge)C+=``;else{let t=a.options||{};a.options=t,[\"align\",\"bold\",\"border\",\"color\",\"fill\",\"fontFace\",\"fontSize\",\"margin\",\"textDirection\",\"underline\",\"valign\"].forEach(e=>{y[e]&&!t[e]&&0!==t[e]&&(t[e]=y[e])});var o=t.valign?` anchor=\"${t.valign.replace(/^c$/i,\"ctr\").replace(/^m$/i,\"ctr\").replace(\"center\",\"ctr\").replace(\"middle\",\"ctr\").replace(\"top\",\"t\").replace(\"btm\",\"b\").replace(\"bottom\",\"b\")}\"`:\"\",i=t.textDirection&&\"horz\"!==t.textDirection?` vert=\"${t.textDirection}\"`:\"\",s=(s=(null!=(s=null==(s=a._optImp)?void 0:s.fill)&&s.color?a._optImp.fill.color:null!=(s=a._optImp)&&s.fill&&\"string\"==typeof a._optImp.fill?a._optImp.fill:\"\")||t.fill?t.fill:\"\")?W(s):\"\";let e=0===t.margin||t.margin?t.margin:Y,r=(Array.isArray(e)||\"number\"!=typeof e||(e=[e,e,e,e]),\"\");r=1<=e[0]?` marL=\"${j(e[3])}\" marR=\"${j(e[1])}\" marT=\"${j(e[0])}\" marB=\"${j(e[2])}\"`:` marL=\"${U(e[3])}\" marR=\"${U(e[1])}\" marT=\"${U(e[0])}\" marB=\"${U(e[2])}\"`,C+=`${ke(a)}`,t.border&&Array.isArray(t.border)&&[{idx:3,name:\"lnL\"},{idx:1,name:\"lnR\"},{idx:0,name:\"lnT\"},{idx:2,name:\"lnB\"}].forEach(e=>{\"none\"!==t.border[e.idx].type?C=(C=(C=(C+=``)+`${Q(t.border[e.idx].color)}`)+``)+``:C+=``}),C=(C+=s)+\" \"+\" \"}}),C+=\"\"}),C=(C=C+\" \"+\" \")+\" \"+\"\",F+=C,I++;break;case O.text:case O.placeholder:a.options.line||0!==h||(h=.3*R),a.options._bodyProp||(a.options._bodyProp={}),a.options.margin&&Array.isArray(a.options.margin)?(a.options._bodyProp.lIns=j(a.options.margin[0]||0),a.options._bodyProp.rIns=j(a.options.margin[1]||0),a.options._bodyProp.bIns=j(a.options.margin[2]||0),a.options._bodyProp.tIns=j(a.options.margin[3]||0)):\"number\"==typeof a.options.margin&&(a.options._bodyProp.lIns=j(a.options.margin),a.options._bodyProp.rIns=j(a.options.margin),a.options._bodyProp.bIns=j(a.options.margin),a.options._bodyProp.tIns=j(a.options.margin)),F=(F+=\"\")+``,null!=(n=a.options.hyperlink)&&n.url&&(F+=``),null!=(o=a.options.hyperlink)&&o.slide&&(F+=``),F+=\"\";var k=(null==(i=a.options)?void 0:i.isTextBox)||\"shrink\"===(null==(s=a.options)?void 0:s.fit)||(null==(A=a.options)?void 0:A.shrinkText);if(F=(F=(F=(F=(F+=\"':\"/>\"))+`${_e(\"placeholder\"===a._type?a:g)}`+\"\")+``)+``)+``,\"custGeom\"===a.shape)F=(F=(F=(F=(F+=\"\")+\"\")+\"\")+'')+``,null!=(l=a.options.points)&&l.forEach((e,t)=>{if(\"curve\"in e)switch(e.curve.type){case\"arc\":F+=``;break;case\"cubic\":F+=`\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t`;break;case\"quadratic\":F+=`\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t`}else\"close\"in e?F+=\"\":e.moveTo||0===t?F+=``:F+=``}),F=(F+=\"\")+\"\";else{if(F+='',a.options.rectRadius)F+=``;else if(a.options.angleRange){for(let e=0;e<2;e++){var _=a.options.angleRange[e];F+=``}a.options.arcThicknessRatio&&(F+=``)}F+=\"\"}F+=a.options.fill?W(a.options.fill):\"\",a.options.line&&(F+=a.options.line.width?``:\"\",a.options.line.color&&(F+=W(a.options.line)),a.options.line.dashType&&(F+=``),a.options.line.beginArrowType&&(F+=``),a.options.line.endArrowType&&(F+=``),F+=\"\"),a.options.shadow&&\"none\"!==a.options.shadow.type&&(a.options.shadow.type=a.options.shadow.type||\"outer\",a.options.shadow.blur=j(a.options.shadow.blur||8),a.options.shadow.offset=j(a.options.shadow.offset||4),a.options.shadow.angle=Math.round(6e4*(a.options.shadow.angle||270)),a.options.shadow.opacity=Math.round(1e5*(a.options.shadow.opacity||.75)),a.options.shadow.color=a.options.shadow.color||X.color,F=(F=(F=(F=(F+=\"\")+` `)+` `)+` `)+\" \"),F=(F+=\"\")+ke(a)+\"\";break;case O.image:F=(F=F+\"\"+\" \")+``,null!=(c=a.hyperlink)&&c.url&&(F+=``),null!=(p=a.hyperlink)&&p.slide&&(F+=``),F=(F=(F=F+\" \"+' ')+(\" \"+_e(g)+\"\"))+\" \"+\"\",F=(N._relsMedia||[]).filter(e=>e.rId===a.imageRid)[0]&&\"svg\"===(N._relsMedia||[]).filter(e=>e.rId===a.imageRid)[0].extn?(F=(F=(F=(F+=``)+(a.options.transparency?` `:\"\"))+' ')+` `+\" \")+\" \":(F+=``)+(a.options.transparency?``:\"\")+\"\",null!=E&&E.type?(k=E.w?M(E.w,\"X\",N._presLayout):d,P=E.h?M(E.h,\"Y\",N._presLayout):h,S=M(E.x||0,\"X\",N._presLayout),L=M(E.y||0,\"Y\",N._presLayout),F+=Le[E.type]({w:B,h:D},{w:k,h:P,x:S,y:L}),B=k,D=P):F+=\" \",F=(F=(F=(F=(F=F+\"\"+\"\")+(\" \"))+` `)+` `)+\" \"+` `,a.options.shadow&&\"none\"!==a.options.shadow.type&&(a.options.shadow.type=a.options.shadow.type||\"outer\",a.options.shadow.blur=j(a.options.shadow.blur||8),a.options.shadow.offset=j(a.options.shadow.offset||4),a.options.shadow.angle=Math.round(6e4*(a.options.shadow.angle||270)),a.options.shadow.opacity=Math.round(1e5*(a.options.shadow.opacity||.75)),a.options.shadow.color=a.options.shadow.color||X.color,F=(F=(F=(F=(F+=\"\")+``)+``)+``)+``+\"\"),F=F+\"\"+\"\";break;case O.media:F=\"online\"===a.mtype?(F=(F=(F=(F=(F=(F=(F+=\" \")+``)+\" \")+` `)+\" \")+` `+\" \")+` `+' ')+\" \":(F=(F=(F=(F=(F=(F=(F=(F=(F=(F+=\" \")+``)+' ')+` `)+' ')+` `)+\" \")+\" \")+` `+\" \")+` `+' ')+\" \";break;case O.chart:F=(F=(F=(F=(F=(F=(F=F+\"\"+\" \")+` `+\" \")+` ${_e(g)}`+\" \")+` `)+' '+' ')+` `+\" \")+\" \"+\"\";break;default:F+=\"\"}}),N._slideNumberProps&&(N._slideNumberProps.align||(N._slideNumberProps.align=\"left\"),F=(F=(F=(F=(F+=\" \")+' ')+\" \")+\"\"+``+``+' ')+\" \",(N._slideNumberProps.fontFace||N._slideNumberProps.fontSize||N._slideNumberProps.color)&&(F+=``,N._slideNumberProps.color&&(F+=W(N._slideNumberProps.color)),N._slideNumberProps.fontFace&&(F+=``),F+=\"\"),F+=\"\",N._slideNumberProps.align.startsWith(\"l\")?F+='':N._slideNumberProps.align.startsWith(\"c\")?F+='':N._slideNumberProps.align.startsWith(\"r\")?F+='':F+='',F=(F+=``)+`${N._slideNum}`+\"\"),F=F+\"\"+\"\"}function Te(e,t){let r=0,a=''+A+'';return e._rels.forEach(e=>{r=Math.max(r,e.rId),e.type.toLowerCase().includes(\"hyperlink\")?\"slide\"===e.data?a+=``:a+=``:e.type.toLowerCase().includes(\"notesSlide\")&&(a+=``)}),(e._relsChart||[]).forEach(e=>{r=Math.max(r,e.rId),a+=``}),(e._relsMedia||[]).forEach(e=>{var t=e.rId.toString();r=Math.max(r,e.rId),e.type.toLowerCase().includes(\"image\")?a+='':e.type.toLowerCase().includes(\"audio\")?a.includes(' Target=\"'+e.Target+'\"')?a+='':a+='':e.type.toLowerCase().includes(\"video\")?a.includes(' Target=\"'+e.Target+'\"')?a+='':a+='':e.type.toLowerCase().includes(\"online\")&&(a.includes(' Target=\"'+e.Target+'\"')?a+='':a+='')}),t.forEach((e,t)=>{a+=``}),a+=\"\"}function Be(t,e){let r,a,n=\"\",o=\"\",i=\"\",s=\"\";var A,l=e?\"a:lvl1pPr\":\"a:pPr\";let c=j(_),p=\"<\"+l+(t.options.rtlMode?' rtl=\"1\" ':\"\");if(t.options.align)switch(t.options.align){case\"left\":p+=' algn=\"l\"';break;case\"right\":p+=' algn=\"r\"';break;case\"center\":p+=' algn=\"ctr\"';break;case\"justify\":p+=' algn=\"just\"';break;default:p+=\"\"}if(t.options.lineSpacing?o=``:t.options.lineSpacingMultiple&&(o=``),t.options.indentLevel&&!isNaN(Number(t.options.indentLevel))&&0`),t.options.paraSpaceAfter&&!isNaN(Number(t.options.paraSpaceAfter))&&0`),\"object\"==typeof t.options.bullet)if(null!=(a=null==(r=null==t?void 0:t.options)?void 0:r.bullet)&&a.indent&&(c=j(t.options.bullet.indent)),t.options.bullet.type)\"number\"===t.options.bullet.type.toString().toLowerCase()&&(p+=` marL=\"${t.options.indentLevel&&0`);else if(t.options.bullet.characterCode){let e=`&#x${t.options.bullet.characterCode};`;/^[0-9A-Fa-f]{4}$/.test(t.options.bullet.characterCode)||(console.warn(\"Warning: `bullet.characterCode should be a 4-digit unicode charatcer (ex: 22AB)`!\"),e=C.DEFAULT),p+=` marL=\"${t.options.indentLevel&&0'}else if(t.options.bullet.code){let e=`&#x${t.options.bullet.code};`;/^[0-9A-Fa-f]{4}$/.test(t.options.bullet.code)||(console.warn(\"Warning: `bullet.code should be a 4-digit hex code (ex: 22AB)`!\"),e=C.DEFAULT),p+=` marL=\"${t.options.indentLevel&&0'}else p+=` marL=\"${t.options.indentLevel&&0`;else n=t.options.bullet?(p+=` marL=\"${t.options.indentLevel&&0`):(t.options.bullet,p+=' indent=\"0\" marL=\"0\"',\"\");return t.options.tabStops&&Array.isArray(t.options.tabStops)&&(A=t.options.tabStops.map(e=>``).join(\"\"),s=`${A}`),p+=\">\"+o+i+n+s,e&&(p+=De(t.options,!0)),p+=\"\"}function De(e,t){let r,a=\"\";var n,o,i,t=t?\"a:defRPr\":\"a:rPr\";if(a=(a=(a=(a=(a+=\"<\"+t+' lang=\"'+(e.lang||\"en-US\")+'\"'+(e.lang?' altLang=\"en-US\"':\"\"))+(e.fontSize?` sz=\"${Math.round(100*e.fontSize)}\"`:\"\"))+(null!=e&&e.bold?` b=\"${e.bold?\"1\":\"0\"}\"`:\"\"))+(null!=e&&e.italic?` i=\"${e.italic?\"1\":\"0\"}\"`:\"\"))+(null!=e&&e.strike?` strike=\"${\"string\"==typeof e.strike?e.strike:\"sngStrike\"}\"`:\"\"),\"object\"==typeof e.underline&&null!=(r=e.underline)&&r.style?a+=` u=\"${e.underline.style}\"`:\"string\"==typeof e.underline?a+=` u=\"${String(e.underline)}\"`:e.hyperlink&&(a+=' u=\"sng\"'),e.baseline?a+=` baseline=\"${Math.round(50*e.baseline)}\"`:e.subscript?a+=' baseline=\"-40000\"':e.superscript&&(a+=' baseline=\"30000\"'),a=a+(e.charSpacing?` spc=\"${Math.round(100*e.charSpacing)}\" kern=\"0\"`:\"\")+' dirty=\"0\">',(e.color||e.fontFace||e.outline||\"object\"==typeof e.underline&&e.underline.color)&&(e.outline&&\"object\"==typeof e.outline&&(a+=`${W(e.outline.color||\"FFFFFF\")}`),e.color&&(a+=W({color:e.color,transparency:e.transparency})),e.highlight&&(a+=`${Q(e.highlight)}`),\"object\"==typeof e.underline&&e.underline.color&&(a+=`${W(e.underline.color)}`),e.glow&&(a+=`${n=e.glow,o=F,i=\"\",o=Object.assign(Object.assign({},o),n),(i+=``)+Q(o.color,``)+\"\"}`),e.fontFace)&&(a+=``),e.hyperlink){if(\"object\"!=typeof e.hyperlink)throw new Error(\"ERROR: text `hyperlink` option should be an object. Ex: `hyperlink:{url:'https://github.com'}` \");if(!e.hyperlink.url&&!e.hyperlink.slide)throw new Error(\"ERROR: 'hyperlink requires either `url` or `slide`'\");e.hyperlink.url?a+=`\":\"/>\"):e.hyperlink.slide&&(a+=`\":\"/>\")),e.color&&(a=(a=(a+=' ')+' ')+\" \")}return a+=``}function ke(r){let o=r.options||{},e=[],a=[];if(o&&r._type!==O.tablecell&&null==r.text)return\"\";let i=r._type===O.tablecell?\"\":\"\",n=(i+=(e=>{let t=\"\",e.options.fit&&(\"none\"===e.options.fit?t+=\"\":\"shrink\"===e.options.fit?(r=Se(e),t+=``):\"resize\"===e.options.fit&&(t+=\"\")),e.options.shrinkText&&(r=Se(e),t+=``),t=t+(e.options._bodyProp.autoFit?\"\":\"\")+\"\"):t+=' wrap=\"square\" rtlCol=\"0\">',e._type===O.tablecell?\"\":t})(r),0===o.h&&o.line&&o.align?i+='':\"placeholder\"===r._type?i+=`${Be(r,!0)}`:i+=\"\",\"string\"==typeof r.text||\"number\"==typeof r.text?e.push({text:r.text.toString(),options:o||{}}):r.text&&!Array.isArray(r.text)&&\"object\"==typeof r.text&&Object.keys(r.text).includes(\"text\")?e.push({text:r.text||\"\",options:r.options||{}}):Array.isArray(r.text)&&(e=r.text.map(e=>({text:e.text,options:e.options}))),e.forEach((t,e)=>{t.text||(t.text=\"\"),t.options=t.options||o||{},0===e&&t.options&&!t.options.bullet&&o.bullet&&(t.options.bullet=o.bullet),\"string\"!=typeof t.text&&\"number\"!=typeof t.text||(t.text=t.text.toString().replace(/\\r*\\n/g,A)),t.text.includes(A)&&null===t.text.match(/\\n$/g)?t.text.split(A).forEach(e=>{t.options.breakLine=!0,a.push({text:e,options:t.options})}):a.push(t)}),[]),s=[];return a.forEach((e,t)=>{0{let t,a=!1,n=(i+=\"\",\"{0<(r.options._lineIdx=e)&&r.options.softBreakBefore&&(i+=\"\"),r.options.align=r.options.align||o.align,r.options.lineSpacing=r.options.lineSpacing||o.lineSpacing,r.options.lineSpacingMultiple=r.options.lineSpacingMultiple||o.lineSpacingMultiple,r.options.indentLevel=r.options.indentLevel||o.indentLevel,r.options.paraSpaceBefore=r.options.paraSpaceBefore||o.paraSpaceBefore,r.options.paraSpaceAfter=r.options.paraSpaceAfter||o.paraSpaceAfter,n=Be(r,!1),i+=n.replace(\"\",\"\"),Object.entries(o).filter(([e])=>!(r.options.hyperlink&&\"color\"===e)).forEach(([e,t])=>{\"bullet\"===e||r.options[e]||(r.options[e]=t)}),i+=(e=r).text?`${De(e.options,!1)}${z(e.text)}`:\"\",(!r.text&&o.fontSize||r.options.fontSize)&&(a=!0,o.fontSize=o.fontSize||r.options.fontSize)}),r._type===O.tablecell&&(o.fontSize||o.fontFace)?o.fontFace?i=(i=(i=(i+=`')+``)+``)+``+\"\":i+=`':a?i+=`':i+=``,i+=\"\"}),-1===i.indexOf(\"\")&&(i+=\"\"),i+=r._type===O.tablecell?\"\":\"\"}function _e(e){var t,r;return e?(t=null!=(t=e.options)&&t._placeholderIdx?e.options._placeholderIdx:\"\",r=(r=null!=(r=e.options)&&r._placeholderType?e.options._placeholderType:\"\")&&re[r]?re[r].toString():\"\",``):\"\"}function Ne(e){return`${A}${z((e=>{let t=\"\";return e._slideObjects.forEach(e=>{e._type===O.notes&&(t+=null!=e&&e.text&&e.text[0]?e.text[0].text:\"\")}),t.replace(/\\r*\\n/g,A)})(e))}${e._slideNum}`}function Fe(e,t,r){return Te(e[r-1],[{target:`../slideLayouts/slideLayout${((t,r,a)=>{for(let e=0;e{var t=0e._slideNum===this.slides[this.slides.length-1]._slideNum).length;return e.sectionTitle=t?this.sections[this.sections.length-1].title:null,this.addSlide(e)},this.getSlide=t=>this.slides.filter(e=>e._slideNum===t)[0],this.setSlideNumber=e=>{this.masterSlide._slideNumberProps=e,this.slideLayouts.filter(e=>e._name===t)[0]._slideNumberProps=e},this.createChartMediaRels=(e,r,t)=>{e._relsChart.forEach(e=>t.push(ge(e,r))),e._relsMedia.forEach(t=>{if(\"online\"!==t.type&&\"hyperlink\"!==t.type){let e=t.data&&\"string\"==typeof t.data?t.data:\"\";(e.includes(\",\")||e.includes(\";\"))&&e.includes(\",\")?e.includes(\";\")||(e=\"image/png;\"+e):e=\"image/png;base64,\"+e,r.file(t.Target.replace(\"..\",\"ppt\"),e.split(\",\").pop(),{base64:!0})}})},this.writeFileToBrowser=(r,a)=>c(this,void 0,void 0,function*(){let t=document.createElement(\"a\");if(t.setAttribute(\"style\",\"display:none;\"),t.dataset.interception=\"off\",document.body.appendChild(t),window.URL.createObjectURL){let e=window.URL.createObjectURL(new Blob([a],{type:\"application/vnd.openxmlformats-officedocument.presentationml.presentation\"}));return t.href=e,t.download=r,t.click(),setTimeout(()=>{window.URL.revokeObjectURL(e),document.body.removeChild(t)},100),yield Promise.resolve(r)}}),this.exportPresentation=s=>c(this,void 0,void 0,function*(){let o=[],t=[],i=new B;return this.slides.forEach(e=>{t=t.concat(Ce(e))}),this.slideLayouts.forEach(e=>{t=t.concat(Ce(e))}),t=t.concat(Ce(this.masterSlide)),yield Promise.all(t).then(()=>c(this,void 0,void 0,function*(){var r,e,t,a,n;return this.slides.forEach(e=>{var r;e._slideLayout&&((r=e)._slideLayout._slideObjects||[]).forEach(t=>{t._type===O.placeholder&&0===r._slideObjects.filter(e=>e.options&&e.options.placeholder===t.options.placeholder).length&&fe(r,[{text:\"\"}],t.options,!1)})}),i.folder(\"_rels\"),i.folder(\"docProps\"),i.folder(\"ppt\").folder(\"_rels\"),i.folder(\"ppt/charts\").folder(\"_rels\"),i.folder(\"ppt/embeddings\"),i.folder(\"ppt/media\"),i.folder(\"ppt/slideLayouts\").folder(\"_rels\"),i.folder(\"ppt/slideMasters\").folder(\"_rels\"),i.folder(\"ppt/slides\").folder(\"_rels\"),i.folder(\"ppt/theme\"),i.folder(\"ppt/notesMasters\").folder(\"_rels\"),i.folder(\"ppt/notesSlides\").folder(\"_rels\"),i.file(\"[Content_Types].xml\",((e,t,r)=>{let a=''+A;return a=(a=(a=(a=(a=a+''+'')+''+'')+''+'')+''+'')+''+'',e.forEach(e=>{(e._relsMedia||[]).forEach(e=>{\"image\"===e.type||\"online\"===e.type||\"chart\"===e.type||\"m4v\"===e.extn||a.includes(e.type)||(a+='')})}),a=(a=a+''+'')+''+'',e.forEach((e,t)=>{a=a+``+``,e._relsChart.forEach(e=>{a+=``})}),a=(a=a+''+'')+''+'',t.forEach((e,t)=>{a+=``,(e._relsChart||[]).forEach(e=>{a+=' '})}),e.forEach((e,t)=>{a+=``}),r._relsChart.forEach(e=>{a+=' '}),r._relsMedia.forEach(e=>{\"image\"===e.type||\"online\"===e.type||\"chart\"===e.type||\"m4v\"===e.extn||a.includes(e.type)||(a+=' ')}),a=(a+=' ')+' '+\"\"})(this.slides,this.slideLayouts,this.masterSlide)),i.file(\"_rels/.rels\",`${A}\n\t\t\n\t\t\n\t\t\n\t\t`),i.file(\"docProps/app.xml\",(a=this.slides,n=this.company,`${A}\n\t0\n\t0\n\tMicrosoft Office PowerPoint\n\tOn-screen Show (16:9)\n\t0\n\t${a.length}\n\t${a.length}\n\t0\n\t0\n\tfalse\n\t\n\t\t\n\t\t\tFonts Used\n\t\t\t2\n\t\t\tTheme\n\t\t\t1\n\t\t\tSlide Titles\n\t\t\t${a.length}\n\t\t\n\t\n\t\n\t\t\n\t\t\tArial\n\t\t\tCalibri\n\t\t\tOffice Theme\n\t\t\t${a.map((e,t)=>`Slide ${t+1}`).join(\"\")}\n\t\t\n\t\n\t${n}\n\tfalse\n\tfalse\n\tfalse\n\t16.0000\n\t`)),i.file(\"docProps/core.xml\",(a=this.title,n=this.subject,e=this.author,t=this.revision,`\n\t\n\t\t${z(a)}\n\t\t${z(n)}\n\t\t${z(e)}\n\t\t${z(e)}\n\t\t${t}\n\t\t${(new Date).toISOString().replace(/\\.\\d\\d\\dZ/,\"Z\")}\n\t\t${(new Date).toISOString().replace(/\\.\\d\\d\\dZ/,\"Z\")}\n\t`)),i.file(\"ppt/_rels/presentation.xml.rels\",(t=>{let r=1,a=''+A;a+='';for(let e=1;e<=t.length;e++)a+=``;return r++,a+=``+``+``+``+``+\"\"})(this.slides)),i.file(\"ppt/theme/theme1.xml\",`${null!=(n=(a=this).theme)&&n.headFontFace?``:''}${null!=(n=a.theme)&&n.bodyFontFace?``:''}`),i.file(\"ppt/presentation.xml\",(e=>{let t=''+A+'`;t+='',e.slides.forEach(e=>t+=``),t=(t=(t=(t+=\"\")+``)+``)+``+\"\";for(let e=1;e<10;e++)t+=``+''+``;return t+=\"\",e.sections&&0',e.sections.forEach(e=>{t+=``,e._slides.forEach(e=>t+=``),t+=\"\"}),t=(t+=\"\")+''),t+=\"\"})(this)),i.file(\"ppt/presProps.xml\",`${A}`),i.file(\"ppt/tableStyles.xml\",`${A}`),i.file(\"ppt/viewProps.xml\",`${A}`),this.slideLayouts.forEach((e,t)=>{i.file(`ppt/slideLayouts/slideLayout${t+1}.xml`,`\n\t\t\n\t\t${Ee(e)}\n\t\t`),i.file(`ppt/slideLayouts/_rels/slideLayout${t+1}.xml.rels`,(e=t+1,Te(this.slideLayouts[e-1],[{target:\"../slideMasters/slideMaster1.xml\",type:\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideMaster\"}])))}),this.slides.forEach((e,t)=>{var r;i.file(`ppt/slides/slide${t+1}.xml`,(r=e,''+A+'`+Ee(r)+\"\")),i.file(`ppt/slides/_rels/slide${t+1}.xml.rels`,Fe(this.slides,this.slideLayouts,t+1)),i.file(`ppt/notesSlides/notesSlide${t+1}.xml`,Ne(e)),i.file(`ppt/notesSlides/_rels/notesSlide${t+1}.xml.rels`,`\n\t\t\n\t\t\t\n\t\t\t\n\t\t`)}),i.file(\"ppt/slideMasters/slideMaster1.xml\",(r=this.masterSlide,e=(e=this.slideLayouts).map((e,t)=>``),t=''+A,(t+='')+Ee(r)+''+e.join(\"\")+' ')),i.file(\"ppt/slideMasters/_rels/slideMaster1.xml.rels\",(a=this.masterSlide,(n=(n=this.slideLayouts).map((e,t)=>({target:`../slideLayouts/slideLayout${t+1}.xml`,type:\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideLayout\"}))).push({target:\"../theme/theme1.xml\",type:\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme\"}),Te(a,n))),i.file(\"ppt/notesMasters/notesMaster1.xml\",`${A}7/23/19Click to edit Master text stylesSecond levelThird levelFourth levelFifth level‹#›`),i.file(\"ppt/notesMasters/_rels/notesMaster1.xml.rels\",`${A}\n\t\t\n\t\t`),this.slideLayouts.forEach(e=>{this.createChartMediaRels(e,i,o)}),this.slides.forEach(e=>{this.createChartMediaRels(e,i,o)}),this.createChartMediaRels(this.masterSlide,i,o),yield Promise.all(o).then(()=>c(this,void 0,void 0,function*(){return\"STREAM\"===s.outputType?yield i.generateAsync({type:\"nodebuffer\",compression:s.compression?\"DEFLATE\":\"STORE\"}):s.outputType?yield i.generateAsync({type:s.outputType}):yield i.generateAsync({type:\"blob\",compression:s.compression?\"DEFLATE\":\"STORE\"})}))}))});this.LAYOUTS={LAYOUT_4x3:{name:\"screen4x3\",width:9144e3,height:6858e3},LAYOUT_16x9:{name:\"screen16x9\",width:9144e3,height:5143500},LAYOUT_16x10:{name:\"screen16x10\",width:9144e3,height:5715e3},LAYOUT_WIDE:{name:\"custom\",width:12192e3,height:6858e3}},this._author=\"PptxGenJS\",this._company=\"PptxGenJS\",this._revision=\"1\",this._subject=\"PptxGenJS Presentation\",this._title=\"PptxGenJS Presentation\",this._presLayout={name:this.LAYOUTS[o].name,_sizeW:this.LAYOUTS[o].width,_sizeH:this.LAYOUTS[o].height,width:this.LAYOUTS[o].width,height:this.LAYOUTS[o].height},this._rtlMode=!1,this._slideLayouts=[{_margin:y,_name:t,_presLayout:this._presLayout,_rels:[],_relsChart:[],_relsMedia:[],_slide:null,_slideNum:1e3,_slideNumberProps:null,_slideObjects:[]}],this._slides=[],this._sections=[],this._masterSlide={addChart:null,addImage:null,addMedia:null,addNotes:null,addShape:null,addTable:null,addText:null,_name:null,_presLayout:this._presLayout,_rId:null,_rels:[],_relsChart:[],_relsMedia:[],_slideId:null,_slideLayout:null,_slideNum:null,_slideNumberProps:null,_slideObjects:[]}}stream(e){return c(this,void 0,void 0,function*(){return yield this.exportPresentation({compression:null==e?void 0:e.compression,outputType:\"STREAM\"})})}write(r){return c(this,void 0,void 0,function*(){var e=\"object\"==typeof r&&null!=r&&r.outputType?r.outputType:r||null,t=!(\"object\"!=typeof r||null==r||!r.compression)&&r.compression;return yield this.exportPresentation({compression:t,outputType:e})})}writeFile(a){return c(this,void 0,void 0,function*(){var e=\"undefined\"!=typeof process&&!(null==(e=process.versions)||!e.node)&&\"node\"===(null==(e=process.release)?void 0:e.name),{fileName:t=\"Presentation.pptx\",compression:r=!1}=(\"string\"==typeof a&&(console.warn(\"[WARNING] writeFile(string) is deprecated - pass { fileName } instead.\"),a={fileName:a}),a),t=t.toLowerCase().endsWith(\".pptx\")?t:t+\".pptx\",r=yield this.exportPresentation({compression:r,outputType:e?\"nodebuffer\":null});return e?(e=(yield import(\"node:fs\")).promises,e=e.writeFile,yield e(t,r)):yield this.writeFileToBrowser(t,r),t})}addSection(e){e?e.title||console.warn(\"addSection requires a title\"):console.warn(\"addSection requires an argument\");var t={_type:\"user\",_slides:[],title:e.title};e.order?this.sections.splice(e.order,0,t):this._sections.push(t)}addSlide(t){let r=\"string\"==typeof t?t:null!=t&&t.masterName?t.masterName:\"\",e={_name:this.LAYOUTS[o].name,_presLayout:this.presLayout,_rels:[],_relsChart:[],_relsMedia:[],_slideNum:this.slides.length+1};r&&(n=this.slideLayouts.filter(e=>e._name===r)[0])&&(e=n);var a,n=new he({addSlide:this.addNewSlide,getSlide:this.getSlide,presLayout:this.presLayout,setSlideNum:this.setSlideNumber,slideId:this.slides.length+256,slideRId:this.slides.length+2,slideNumber:this.slides.length+1,slideLayout:e});return this._slides.push(n),null!=t&&t.sectionTitle?(a=this.sections.filter(e=>e.title===t.sectionTitle)[0])?a._slides.push(n):console.warn(`addSlide: unable to find section with title: \"${t.sectionTitle}\"`):this.sections&&0\"default\"===e._type).length+1),_type:\"default\",_slides:[n]})),n}defineLayout(e){e?e.name?e.width?e.height?\"number\"!=typeof e.height?console.warn(\"defineLayout `height` should be a number (inches)\"):\"number\"!=typeof e.width&&console.warn(\"defineLayout `width` should be a number (inches)\"):console.warn(\"defineLayout requires `height`\"):console.warn(\"defineLayout requires `width`\"):console.warn(\"defineLayout requires `name`\"):console.warn(\"defineLayout requires `{name, width, height}`\"),this.LAYOUTS[e.name]={name:e.name,_sizeW:Math.round(Number(e.width)*R),_sizeH:Math.round(Number(e.height)*R),width:Math.round(Number(e.width)*R),height:Math.round(Number(e.height)*R)}}defineSlideMaster(e){e=JSON.parse(JSON.stringify(e));if(!e.title)throw new Error(\"defineSlideMaster() object argument requires a `title` value. (https://gitbrent.github.io/PptxGenJS/docs/masters.html)\");var t,n,r={_margin:e.margin||y,_name:e.title,_presLayout:this.presLayout,_rels:[],_relsChart:[],_relsMedia:[],_slide:null,_slideNum:1e3+this.slideLayouts.length+1,_slideNumberProps:e.slideNumber||null,_slideObjects:[],background:e.background||null,bkgd:e.bkgd||null};n=r,(t=e).bkgd&&(n.bkgd=t.bkgd),t.objects&&Array.isArray(t.objects)&&0{var r=Object.keys(e)[0],a=n;w[r]&&\"chart\"===r?ce(a,e[r].type,e[r].data,e[r].opts):w[r]&&\"image\"===r?pe(a,e[r]):w[r]&&\"line\"===r?ue(a,b.LINE,e[r]):w[r]&&\"rect\"===r?ue(a,b.RECTANGLE,e[r]):w[r]&&\"text\"===r?fe(a,[{text:e[r].text}],e[r].options,!1):w[r]&&\"placeholder\"===r&&(e[r].options.placeholder=e[r].options.name,delete e[r].options.name,e[r].options._placeholderType=e[r].options.type,delete e[r].options.type,e[r].options._placeholderIdx=100+t,fe(a,[{text:e[r].text}],e[r].options,!0))}),t.slideNumber&&\"object\"==typeof t.slideNumber&&(n._slideNumberProps=t.slideNumber),this.slideLayouts.push(r),(e.background||e.bkgd)&&de(e.background,r),r._slideNumberProps&&!this.masterSlide._slideNumberProps&&(this.masterSlide._slideNumberProps=r._slideNumberProps)}tableToSlides(t,p={}){{var[u,f,t={},d]=[this,t,p,null!=p&&p.masterSlideName?this.slideLayouts.filter(e=>e._name===p.masterSlideName)[0]:null];let a=t||{},n=void(a.slideMargin=a.slideMargin||0===a.slideMargin?a.slideMargin:.5,a.w||u.presLayout.width),o=[],i=[],s=[],A=[],r=[],l=[.5,.5,.5,.5],c=0;if(!document.getElementById(f))throw new Error('tableToSlides: Table ID \"'+f+'\" does not exist!');null!=d&&d._margin?(Array.isArray(d._margin)?l=d._margin:isNaN(d._margin)||(l=[d._margin,d._margin,d._margin,d._margin]),a.slideMargin=l):null!=a&&a.slideMargin&&(Array.isArray(a.slideMargin)?l=a.slideMargin:isNaN(a.slideMargin)||(l=[a.slideMargin,a.slideMargin,a.slideMargin,a.slideMargin])),n=(a.w?U(a.w):u.presLayout.width)-U(l[1]+l[3]),a.verbose&&(console.log(\"[[VERBOSE MODE]]\"),console.log(\"|-- `tableToSlides` ----------------------------------------------------|\"),console.log(\"| tableProps.h .................................... = \"+a.h),console.log(\"| tableProps.w .................................... = \"+a.w),console.log(\"| pptx.presLayout.width ........................... = \"+(u.presLayout.width/R).toFixed(1)),console.log(\"| pptx.presLayout.height .......................... = \"+(u.presLayout.height/R).toFixed(1)),console.log(\"| emuSlideTabW .................................... = \"+(n/R).toFixed(1)));let e=document.querySelectorAll(`#${f} tr:first-child th`);(e=0===e.length?document.querySelectorAll(`#${f} tr:first-child td`):e).forEach(e=>{var t=e;if(t.getAttribute(\"colspan\"))for(let e=0;e{c+=e}),r.forEach((e,t)=>{e=Number((Number(n)*(e/c*100)/100/R).toFixed(2));let r=0;var a=document.querySelector(`#${f} thead tr:first-child th:nth-child(${t+1})`),a=(a&&(r=Number(a.getAttribute(\"data-pptx-min-width\"))),document.querySelector(`#${f} thead tr:first-child th:nth-child(${t+1})`));a&&(r=Number(a.getAttribute(\"data-pptx-width\"))),A.push(r>e?r:e)}),a.verbose&&console.log(`| arrColW ......................................... = [${A.join(\", \")}]`),[\"thead\",\"tbody\",\"tfoot\"].forEach(t=>{document.querySelectorAll(`#${f} ${t} tr`).forEach(e=>{let r=[];switch(Array.from(e.cells).forEach(a=>{var e=window.getComputedStyle(a).getPropertyValue(\"color\").replace(/\\s+/gi,\"\").replace(\"rgba(\",\"\").replace(\"rgb(\",\"\").replace(\")\",\"\").split(\",\");let t=window.getComputedStyle(a).getPropertyValue(\"background-color\").replace(/\\s+/gi,\"\").replace(\"rgba(\",\"\").replace(\"rgb(\",\"\").replace(\")\",\"\").split(\",\"),n=(\"rgba(0, 0, 0, 0)\"!==window.getComputedStyle(a).getPropertyValue(\"background-color\")&&!window.getComputedStyle(a).getPropertyValue(\"transparent\")||(t=[\"255\",\"255\",\"255\"]),{align:null,bold:!!(\"bold\"===window.getComputedStyle(a).getPropertyValue(\"font-weight\")||500<=Number(window.getComputedStyle(a).getPropertyValue(\"font-weight\"))),border:null,color:ie(Number(e[0]),Number(e[1]),Number(e[2])),fill:{color:ie(Number(t[0]),Number(t[1]),Number(t[2]))},fontFace:(window.getComputedStyle(a).getPropertyValue(\"font-family\")||\"\").split(\",\")[0].replace(/\"/g,\"\").replace(\"inherit\",\"\").replace(\"initial\",\"\")||null,fontSize:Number(window.getComputedStyle(a).getPropertyValue(\"font-size\").replace(/[a-z]/gi,\"\")),margin:null,colspan:Number(a.getAttribute(\"colspan\"))||null,rowspan:Number(a.getAttribute(\"rowspan\"))||null,valign:null});[\"left\",\"center\",\"right\",\"start\",\"end\"].includes(window.getComputedStyle(a).getPropertyValue(\"text-align\"))&&(e=window.getComputedStyle(a).getPropertyValue(\"text-align\").replace(\"start\",\"left\").replace(\"end\",\"right\"),n.align=\"center\"===e?\"center\":\"left\"===e?\"left\":\"right\"===e?\"right\":null),[\"top\",\"middle\",\"bottom\"].includes(window.getComputedStyle(a).getPropertyValue(\"vertical-align\"))&&(e=window.getComputedStyle(a).getPropertyValue(\"vertical-align\"),n.valign=\"top\"===e?\"top\":\"middle\"===e?\"middle\":\"bottom\"===e?\"bottom\":null),window.getComputedStyle(a).getPropertyValue(\"padding-left\")&&(n.margin=[0,0,0,0],[\"padding-top\",\"padding-right\",\"padding-bottom\",\"padding-left\"].forEach((e,t)=>{n.margin[t]=Math.round(Number(window.getComputedStyle(a).getPropertyValue(e).replace(/\\D/gi,\"\")))})),(window.getComputedStyle(a).getPropertyValue(\"border-top-width\")||window.getComputedStyle(a).getPropertyValue(\"border-right-width\")||window.getComputedStyle(a).getPropertyValue(\"border-bottom-width\")||window.getComputedStyle(a).getPropertyValue(\"border-left-width\"))&&(n.border=[null,null,null,null],[\"top\",\"right\",\"bottom\",\"left\"].forEach((e,t)=>{var r=Math.round(Number(window.getComputedStyle(a).getPropertyValue(\"border-\"+e+\"-width\").replace(\"px\",\"\"))),e=window.getComputedStyle(a).getPropertyValue(\"border-\"+e+\"-color\").replace(/\\s+/gi,\"\").replace(\"rgba(\",\"\").replace(\"rgb(\",\"\").replace(\")\",\"\").split(\",\"),e=ie(Number(e[0]),Number(e[1]),Number(e[2]));n.border[t]={pt:r,color:e}})),r.push({_type:O.tablecell,text:a.innerText,options:n})}),t){case\"thead\":o.push(r);break;case\"tbody\":i.push(r);break;case\"tfoot\":s.push(r);break;default:console.log(\"table parsing: unexpected table part: \"+t)}})}),a._arrObjTabHeadRows=o||null,a.colW=A,Ae([...o,...i,...s],a,u.presLayout,d).forEach((e,t)=>{var r=u.addSlide({masterName:a.masterSlideName||null});0===t&&(a.y=a.y||l[0]),0 opts.y = `+a.y),r.addTable(e.rows,{x:a.x||l[3],y:a.y,w:Number(n)/R,colW:A,autoPage:!1}),a.addImage&&(a.addImage.options=a.addImage.options||{},a.addImage.image&&(a.addImage.image.path||a.addImage.image.data)?r.addImage({path:a.addImage.image.path,data:a.addImage.image.data,x:a.addImage.options.x,y:a.addImage.options.y,w:a.addImage.options.w,h:a.addImage.options.h}):console.warn(\"Warning: tableToSlides.addImage requires either `path` or `data`\")),a.addShape&&r.addShape(a.addShape.shapeName,a.addShape.options||{}),a.addTable&&r.addTable(a.addTable.rows,a.addTable.options||{}),a.addText&&r.addText(a.addText.text,a.addText.options||{})})}}}return Ie})(JSZip);"],"file":"pptxgen.bundle.js"} \ No newline at end of file diff --git a/demos/node/package.json b/demos/node/package.json index e210c684a..6e49d2f8b 100644 --- a/demos/node/package.json +++ b/demos/node/package.json @@ -12,7 +12,9 @@ "demo": "node demo.js", "demo-all": "node demo.js All", "demo-text": "node demo.js Text", - "demo-stream": "node demo_stream.js" + "demo-stream": "node demo_stream.js", + "test-shrink-charts": "node test_shrink_charts.js", + "test-shrink-charts:build": "cd ../.. && npm run ship && cd demos/node && node test_shrink_charts.js" }, "repository": { "type": "git", diff --git a/dev.js b/dev.js new file mode 100644 index 000000000..d10aadfb4 --- /dev/null +++ b/dev.js @@ -0,0 +1,221 @@ +#!/usr/bin/env node + +/** + * Smart dev mode for js-to-ppt + * + * Usage: npm run dev + * + * What it does: + * 1. Auto-finds projects that use @linedotai/js-to-ppt in sibling folders + * 2. Links all found projects to use this local package + * 3. Saves original lock files (package-lock.json, yarn.lock) + * 4. Runs Rollup watch mode + * 5. When you stop (Ctrl+C): + * - Restores all projects to their published version + * - Restores original lock files + */ + +const { spawn, execSync } = require('child_process'); +const path = require('path'); +const fs = require('fs'); + +const PACKAGE_NAME = '@linedotai/js-to-ppt'; + +// Find projects by checking sibling directories +function findProjects() { + const packageDir = __dirname; + const parentDir = path.dirname(packageDir); + + // Projects to look for + const projectConfigs = [ + { + names: ['linedot-backend', 'flyingshelf-backend', 'backend', 'api'], + label: 'Backend' + }, + { + names: ['linedot-studio', 'flyingshelf-studio', 'flyingshelf', 'studio', 'frontend', 'app', 'linedot-app'], + label: 'Studio' + }, + { + names: ['linedot-photographer', 'flyingshelf-photographer', 'photographer'], + label: 'Photographer' + }, + { + names: ['convert-to-ppt'], + label: 'Convert-to-PPT' + } + ]; + + const foundProjects = []; + + for (const config of projectConfigs) { + for (const name of config.names) { + const candidatePath = path.join(parentDir, name); + const packageJsonPath = path.join(candidatePath, 'package.json'); + + if (fs.existsSync(packageJsonPath)) { + try { + const pkg = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8')); + // Check if it has our package + if (pkg.dependencies?.[PACKAGE_NAME] || pkg.devDependencies?.[PACKAGE_NAME]) { + foundProjects.push({ + path: candidatePath, + label: config.label, + name: name + }); + break; // Found this project, move to next config + } + } catch (e) { + // Invalid package.json, skip + } + } + } + } + + return foundProjects; +} + +console.log('\n🚀 Starting dev mode for js-to-ppt...\n'); + +// Build first +console.log('📦 Building package...\n'); +try { + execSync('npm run build', { stdio: 'inherit', cwd: __dirname }); + console.log('\n✅ Build complete\n'); +} catch (error) { + console.error('❌ Build failed\n'); + process.exit(1); +} + +const projects = findProjects(); + +if (projects.length === 0) { + console.log('ℹ️ No projects found that use ' + PACKAGE_NAME); + console.log(' Running watch-only mode (no auto-linking)\n'); + + // Just run watch mode + const watch = spawn('npm', ['run', 'watch'], { stdio: 'inherit', shell: true, cwd: __dirname }); + process.exit(0); +} + +console.log(`📁 Found ${projects.length} project(s) using ${PACKAGE_NAME}:`); +projects.forEach(p => console.log(` - ${p.label} (${p.name})`)); +console.log(''); + +// Store project states for cleanup +const projectStates = []; + +// Link each project to local package +for (const project of projects) { + const packageJsonPath = path.join(project.path, 'package.json'); + const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8')); + const currentVersion = packageJson.dependencies?.[PACKAGE_NAME] || packageJson.devDependencies?.[PACKAGE_NAME]; + const wasAlreadyLocal = currentVersion && currentVersion.startsWith('file:'); + + // Save lock files before making changes + const lockFiles = {}; + const packageLockPath = path.join(project.path, 'package-lock.json'); + const yarnLockPath = path.join(project.path, 'yarn.lock'); + + if (fs.existsSync(packageLockPath)) { + lockFiles.packageLock = fs.readFileSync(packageLockPath, 'utf8'); + } + if (fs.existsSync(yarnLockPath)) { + lockFiles.yarnLock = fs.readFileSync(yarnLockPath, 'utf8'); + } + + projectStates.push({ + project, + originalVersion: currentVersion, + wasAlreadyLocal, + lockFiles, + packageJsonPath + }); + + // Link to local if not already + if (!wasAlreadyLocal) { + console.log(`🔗 Linking ${project.label} to LOCAL js-to-ppt...`); + console.log(` (will restore to "${currentVersion}" on exit)\n`); + + const relativePath = path.relative(project.path, __dirname); + + try { + execSync(`cd "${project.path}" && npm install file:${relativePath}`, { stdio: 'inherit' }); + console.log(`✅ ${project.label} now using LOCAL js-to-ppt\n`); + } catch (error) { + console.error(`❌ Failed to link ${project.label}\n`); + } + } else { + console.log(`✅ ${project.label} already using LOCAL js-to-ppt\n`); + } +} + +console.log('👀 Starting Rollup watch mode...'); +console.log('💡 Press Ctrl+C to stop and restore all projects\n'); + +// Start watch mode +const watchProcess = spawn('npm', ['run', 'watch'], { stdio: 'inherit', shell: true, cwd: __dirname }); + +// Cleanup on exit +let isCleaningUp = false; + +const cleanup = () => { + if (isCleaningUp) return; + isCleaningUp = true; + + console.log('\n\n🛑 Stopping dev mode...\n'); + + // Restore each project + for (const state of projectStates) { + const { project, originalVersion, wasAlreadyLocal, lockFiles, packageJsonPath } = state; + + // Only unlink if we linked it (not if it was already local) + if (!wasAlreadyLocal && fs.existsSync(packageJsonPath)) { + console.log(`🔄 Restoring ${project.label} to original version: ${originalVersion}...`); + + try { + // Read current package.json + const currentPkg = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8')); + + // Restore original version in the exact same location (dependencies or devDependencies) + if (currentPkg.dependencies?.[PACKAGE_NAME]) { + currentPkg.dependencies[PACKAGE_NAME] = originalVersion; + } else if (currentPkg.devDependencies?.[PACKAGE_NAME]) { + currentPkg.devDependencies[PACKAGE_NAME] = originalVersion; + } + + // Write back with proper formatting + fs.writeFileSync(packageJsonPath, JSON.stringify(currentPkg, null, 2) + '\n', 'utf8'); + + // Restore lock files BEFORE running npm install + const packageLockPath = path.join(project.path, 'package-lock.json'); + const yarnLockPath = path.join(project.path, 'yarn.lock'); + + if (lockFiles.packageLock) { + console.log(` Restoring package-lock.json...`); + fs.writeFileSync(packageLockPath, lockFiles.packageLock, 'utf8'); + } + if (lockFiles.yarnLock) { + console.log(` Restoring yarn.lock...`); + fs.writeFileSync(yarnLockPath, lockFiles.yarnLock, 'utf8'); + } + + // Run npm install to update node_modules + execSync(`cd "${project.path}" && npm install`, { stdio: 'inherit' }); + + console.log(`✅ ${project.label} restored to original state\n`); + } catch (error) { + console.error(`⚠️ Failed to restore ${project.label}. Run manually:`); + console.error(` Edit ${project.name}/package.json and set ${PACKAGE_NAME} to ${originalVersion}\n`); + } + } + } + + console.log('👋 Dev mode stopped\n'); + process.exit(0); +}; + +process.on('SIGINT', cleanup); +process.on('SIGTERM', cleanup); + +watchProcess.on('exit', cleanup); diff --git a/dist/core-enums.d.ts b/dist/core-enums.d.ts new file mode 100644 index 000000000..4be333199 --- /dev/null +++ b/dist/core-enums.d.ts @@ -0,0 +1,589 @@ +/** + * PptxGenJS Enums + * NOTE: `enum` wont work for objects, so use `Object.freeze` + */ +import { BorderProps, OptsChartGridLine } from './core-interfaces'; +export declare const EMU = 914400; +export declare const ONEPT = 12700; +export declare const CRLF = "\r\n"; +export declare const LAYOUT_IDX_SERIES_BASE = 2147483649; +export declare const REGEX_HEX_COLOR: RegExp; +export declare const LINEH_MODIFIER = 1.67; +export declare const DEF_BULLET_MARGIN = 27; +export declare const DEF_CELL_BORDER: BorderProps; +export declare const DEF_CELL_MARGIN_PT: [number, number, number, number]; +export declare const DEF_CELL_MARGIN_IN: [number, number, number, number]; +export declare const DEF_CHART_BORDER: BorderProps; +export declare const DEF_CHART_GRIDLINE: OptsChartGridLine; +export declare const DEF_FONT_COLOR = "000000"; +export declare const DEF_FONT_SIZE = 12; +export declare const DEF_FONT_TITLE_SIZE = 18; +export declare const DEF_PRES_LAYOUT = "LAYOUT_16x9"; +export declare const DEF_PRES_LAYOUT_NAME = "DEFAULT"; +export declare const DEF_SHAPE_LINE_COLOR = "333333"; +export declare const DEF_SHAPE_SHADOW: { + type: string; + blur: number; + offset: number; + angle: number; + color: string; + opacity: number; + rotateWithShape: boolean; +}; +export declare const DEF_SLIDE_BKGD = "FFFFFF"; +export declare const DEF_SLIDE_MARGIN_IN: [number, number, number, number]; +export declare const DEF_TEXT_SHADOW: { + type: string; + blur: number; + offset: number; + angle: number; + color: string; + opacity: number; +}; +export declare const DEF_TEXT_GLOW: { + size: number; + color: string; + opacity: number; +}; +export declare const AXIS_ID_VALUE_PRIMARY = "2094734552"; +export declare const AXIS_ID_VALUE_SECONDARY = "2094734553"; +export declare const AXIS_ID_CATEGORY_PRIMARY = "2094734554"; +export declare const AXIS_ID_CATEGORY_SECONDARY = "2094734555"; +export declare const AXIS_ID_SERIES_PRIMARY = "2094734556"; +export type JSZIP_OUTPUT_TYPE = 'arraybuffer' | 'base64' | 'binarystring' | 'blob' | 'nodebuffer' | 'uint8array'; +export type WRITE_OUTPUT_TYPE = JSZIP_OUTPUT_TYPE | 'STREAM'; +export type CHART_NAME = 'area' | 'area3D' | 'bar' | 'bar3D' | 'bubble' | 'bubble3D' | 'doughnut' | 'line' | 'line3D' | 'ofPie' | 'pie' | 'pie3D' | 'scatter' | 'stock' | 'treemap' | 'sunburst' | 'histogram' | 'pareto' | 'boxWhisker' | 'waterfallChartEx' | 'funnel' | 'regionMap'; +export type SCHEME_COLORS = 'tx1' | 'tx2' | 'bg1' | 'bg2' | 'accent1' | 'accent2' | 'accent3' | 'accent4' | 'accent5' | 'accent6'; +export declare const LETTERS: string[]; +export declare const BARCHART_COLORS: string[]; +export declare const PIECHART_COLORS: string[]; +export declare enum TEXT_HALIGN { + 'left' = "left", + 'center' = "center", + 'right' = "right", + 'justify' = "justify" +} +export declare enum TEXT_VALIGN { + 'b' = "b", + 'ctr' = "ctr", + 't' = "t" +} +export declare const SLDNUMFLDID = "{F7021451-1387-4CA6-816F-3879F97B5CBC}"; +export declare enum OutputType { + 'arraybuffer' = "arraybuffer", + 'base64' = "base64", + 'binarystring' = "binarystring", + 'blob' = "blob", + 'nodebuffer' = "nodebuffer", + 'uint8array' = "uint8array" +} +export declare enum ChartType { + 'area' = "area", + 'area3d' = "area3D", + 'bar' = "bar", + 'bar3d' = "bar3D", + 'bubble' = "bubble", + 'bubble3d' = "bubble3D", + 'doughnut' = "doughnut", + 'line' = "line", + 'line3d' = "line3D", + 'pie' = "pie", + 'pie3d' = "pie3D", + 'scatter' = "scatter", + 'stock' = "stock", + 'ofPie' = "ofPie", + 'treemap' = "treemap", + 'sunburst' = "sunburst", + 'histogram' = "histogram", + 'pareto' = "pareto", + 'boxWhisker' = "boxWhisker", + 'waterfallChartEx' = "waterfallChartEx", + 'funnel' = "funnel" +} +export declare enum ShapeType { + 'accentBorderCallout1' = "accentBorderCallout1", + 'accentBorderCallout2' = "accentBorderCallout2", + 'accentBorderCallout3' = "accentBorderCallout3", + 'accentCallout1' = "accentCallout1", + 'accentCallout2' = "accentCallout2", + 'accentCallout3' = "accentCallout3", + 'actionButtonBackPrevious' = "actionButtonBackPrevious", + 'actionButtonBeginning' = "actionButtonBeginning", + 'actionButtonBlank' = "actionButtonBlank", + 'actionButtonDocument' = "actionButtonDocument", + 'actionButtonEnd' = "actionButtonEnd", + 'actionButtonForwardNext' = "actionButtonForwardNext", + 'actionButtonHelp' = "actionButtonHelp", + 'actionButtonHome' = "actionButtonHome", + 'actionButtonInformation' = "actionButtonInformation", + 'actionButtonMovie' = "actionButtonMovie", + 'actionButtonReturn' = "actionButtonReturn", + 'actionButtonSound' = "actionButtonSound", + 'arc' = "arc", + 'bentArrow' = "bentArrow", + 'bentUpArrow' = "bentUpArrow", + 'bevel' = "bevel", + 'blockArc' = "blockArc", + 'borderCallout1' = "borderCallout1", + 'borderCallout2' = "borderCallout2", + 'borderCallout3' = "borderCallout3", + 'bracePair' = "bracePair", + 'bracketPair' = "bracketPair", + 'callout1' = "callout1", + 'callout2' = "callout2", + 'callout3' = "callout3", + 'can' = "can", + 'chartPlus' = "chartPlus", + 'chartStar' = "chartStar", + 'chartX' = "chartX", + 'chevron' = "chevron", + 'chord' = "chord", + 'circularArrow' = "circularArrow", + 'cloud' = "cloud", + 'cloudCallout' = "cloudCallout", + 'corner' = "corner", + 'cornerTabs' = "cornerTabs", + 'cube' = "cube", + 'curvedDownArrow' = "curvedDownArrow", + 'curvedLeftArrow' = "curvedLeftArrow", + 'curvedRightArrow' = "curvedRightArrow", + 'curvedUpArrow' = "curvedUpArrow", + 'custGeom' = "custGeom", + 'decagon' = "decagon", + 'diagStripe' = "diagStripe", + 'diamond' = "diamond", + 'dodecagon' = "dodecagon", + 'donut' = "donut", + 'doubleWave' = "doubleWave", + 'downArrow' = "downArrow", + 'downArrowCallout' = "downArrowCallout", + 'ellipse' = "ellipse", + 'ellipseRibbon' = "ellipseRibbon", + 'ellipseRibbon2' = "ellipseRibbon2", + 'flowChartAlternateProcess' = "flowChartAlternateProcess", + 'flowChartCollate' = "flowChartCollate", + 'flowChartConnector' = "flowChartConnector", + 'flowChartDecision' = "flowChartDecision", + 'flowChartDelay' = "flowChartDelay", + 'flowChartDisplay' = "flowChartDisplay", + 'flowChartDocument' = "flowChartDocument", + 'flowChartExtract' = "flowChartExtract", + 'flowChartInputOutput' = "flowChartInputOutput", + 'flowChartInternalStorage' = "flowChartInternalStorage", + 'flowChartMagneticDisk' = "flowChartMagneticDisk", + 'flowChartMagneticDrum' = "flowChartMagneticDrum", + 'flowChartMagneticTape' = "flowChartMagneticTape", + 'flowChartManualInput' = "flowChartManualInput", + 'flowChartManualOperation' = "flowChartManualOperation", + 'flowChartMerge' = "flowChartMerge", + 'flowChartMultidocument' = "flowChartMultidocument", + 'flowChartOfflineStorage' = "flowChartOfflineStorage", + 'flowChartOffpageConnector' = "flowChartOffpageConnector", + 'flowChartOnlineStorage' = "flowChartOnlineStorage", + 'flowChartOr' = "flowChartOr", + 'flowChartPredefinedProcess' = "flowChartPredefinedProcess", + 'flowChartPreparation' = "flowChartPreparation", + 'flowChartProcess' = "flowChartProcess", + 'flowChartPunchedCard' = "flowChartPunchedCard", + 'flowChartPunchedTape' = "flowChartPunchedTape", + 'flowChartSort' = "flowChartSort", + 'flowChartSummingJunction' = "flowChartSummingJunction", + 'flowChartTerminator' = "flowChartTerminator", + 'folderCorner' = "folderCorner", + 'frame' = "frame", + 'funnel' = "funnel", + 'gear6' = "gear6", + 'gear9' = "gear9", + 'halfFrame' = "halfFrame", + 'heart' = "heart", + 'heptagon' = "heptagon", + 'hexagon' = "hexagon", + 'homePlate' = "homePlate", + 'horizontalScroll' = "horizontalScroll", + 'irregularSeal1' = "irregularSeal1", + 'irregularSeal2' = "irregularSeal2", + 'leftArrow' = "leftArrow", + 'leftArrowCallout' = "leftArrowCallout", + 'leftBrace' = "leftBrace", + 'leftBracket' = "leftBracket", + 'leftCircularArrow' = "leftCircularArrow", + 'leftRightArrow' = "leftRightArrow", + 'leftRightArrowCallout' = "leftRightArrowCallout", + 'leftRightCircularArrow' = "leftRightCircularArrow", + 'leftRightRibbon' = "leftRightRibbon", + 'leftRightUpArrow' = "leftRightUpArrow", + 'leftUpArrow' = "leftUpArrow", + 'lightningBolt' = "lightningBolt", + 'line' = "line", + 'lineInv' = "lineInv", + 'mathDivide' = "mathDivide", + 'mathEqual' = "mathEqual", + 'mathMinus' = "mathMinus", + 'mathMultiply' = "mathMultiply", + 'mathNotEqual' = "mathNotEqual", + 'mathPlus' = "mathPlus", + 'moon' = "moon", + 'noSmoking' = "noSmoking", + 'nonIsoscelesTrapezoid' = "nonIsoscelesTrapezoid", + 'notchedRightArrow' = "notchedRightArrow", + 'octagon' = "octagon", + 'parallelogram' = "parallelogram", + 'pentagon' = "pentagon", + 'pie' = "pie", + 'pieWedge' = "pieWedge", + 'plaque' = "plaque", + 'plaqueTabs' = "plaqueTabs", + 'plus' = "plus", + 'quadArrow' = "quadArrow", + 'quadArrowCallout' = "quadArrowCallout", + 'rect' = "rect", + 'ribbon' = "ribbon", + 'ribbon2' = "ribbon2", + 'rightArrow' = "rightArrow", + 'rightArrowCallout' = "rightArrowCallout", + 'rightBrace' = "rightBrace", + 'rightBracket' = "rightBracket", + 'round1Rect' = "round1Rect", + 'round2DiagRect' = "round2DiagRect", + 'round2SameRect' = "round2SameRect", + 'roundRect' = "roundRect", + 'rtTriangle' = "rtTriangle", + 'smileyFace' = "smileyFace", + 'snip1Rect' = "snip1Rect", + 'snip2DiagRect' = "snip2DiagRect", + 'snip2SameRect' = "snip2SameRect", + 'snipRoundRect' = "snipRoundRect", + 'squareTabs' = "squareTabs", + 'star10' = "star10", + 'star12' = "star12", + 'star16' = "star16", + 'star24' = "star24", + 'star32' = "star32", + 'star4' = "star4", + 'star5' = "star5", + 'star6' = "star6", + 'star7' = "star7", + 'star8' = "star8", + 'stripedRightArrow' = "stripedRightArrow", + 'sun' = "sun", + 'swooshArrow' = "swooshArrow", + 'teardrop' = "teardrop", + 'trapezoid' = "trapezoid", + 'triangle' = "triangle", + 'upArrow' = "upArrow", + 'upArrowCallout' = "upArrowCallout", + 'upDownArrow' = "upDownArrow", + 'upDownArrowCallout' = "upDownArrowCallout", + 'uturnArrow' = "uturnArrow", + 'verticalScroll' = "verticalScroll", + 'wave' = "wave", + 'wedgeEllipseCallout' = "wedgeEllipseCallout", + 'wedgeRectCallout' = "wedgeRectCallout", + 'wedgeRoundRectCallout' = "wedgeRoundRectCallout" +} +/** + * TODO: FUTURE: v4.0: rename to `ThemeColor` + */ +export declare enum SchemeColor { + 'text1' = "tx1", + 'text2' = "tx2", + 'background1' = "bg1", + 'background2' = "bg2", + 'accent1' = "accent1", + 'accent2' = "accent2", + 'accent3' = "accent3", + 'accent4' = "accent4", + 'accent5' = "accent5", + 'accent6' = "accent6" +} +export declare enum AlignH { + 'left' = "left", + 'center' = "center", + 'right' = "right", + 'justify' = "justify" +} +export declare enum AlignV { + 'top' = "top", + 'middle' = "middle", + 'bottom' = "bottom" +} +export declare enum SHAPE_TYPE { + ACTION_BUTTON_BACK_OR_PREVIOUS = "actionButtonBackPrevious", + ACTION_BUTTON_BEGINNING = "actionButtonBeginning", + ACTION_BUTTON_CUSTOM = "actionButtonBlank", + ACTION_BUTTON_DOCUMENT = "actionButtonDocument", + ACTION_BUTTON_END = "actionButtonEnd", + ACTION_BUTTON_FORWARD_OR_NEXT = "actionButtonForwardNext", + ACTION_BUTTON_HELP = "actionButtonHelp", + ACTION_BUTTON_HOME = "actionButtonHome", + ACTION_BUTTON_INFORMATION = "actionButtonInformation", + ACTION_BUTTON_MOVIE = "actionButtonMovie", + ACTION_BUTTON_RETURN = "actionButtonReturn", + ACTION_BUTTON_SOUND = "actionButtonSound", + ARC = "arc", + BALLOON = "wedgeRoundRectCallout", + BENT_ARROW = "bentArrow", + BENT_UP_ARROW = "bentUpArrow", + BEVEL = "bevel", + BLOCK_ARC = "blockArc", + CAN = "can", + CHART_PLUS = "chartPlus", + CHART_STAR = "chartStar", + CHART_X = "chartX", + CHEVRON = "chevron", + CHORD = "chord", + CIRCULAR_ARROW = "circularArrow", + CLOUD = "cloud", + CLOUD_CALLOUT = "cloudCallout", + CORNER = "corner", + CORNER_TABS = "cornerTabs", + CROSS = "plus", + CUBE = "cube", + CURVED_DOWN_ARROW = "curvedDownArrow", + CURVED_DOWN_RIBBON = "ellipseRibbon", + CURVED_LEFT_ARROW = "curvedLeftArrow", + CURVED_RIGHT_ARROW = "curvedRightArrow", + CURVED_UP_ARROW = "curvedUpArrow", + CURVED_UP_RIBBON = "ellipseRibbon2", + CUSTOM_GEOMETRY = "custGeom", + DECAGON = "decagon", + DIAGONAL_STRIPE = "diagStripe", + DIAMOND = "diamond", + DODECAGON = "dodecagon", + DONUT = "donut", + DOUBLE_BRACE = "bracePair", + DOUBLE_BRACKET = "bracketPair", + DOUBLE_WAVE = "doubleWave", + DOWN_ARROW = "downArrow", + DOWN_ARROW_CALLOUT = "downArrowCallout", + DOWN_RIBBON = "ribbon", + EXPLOSION1 = "irregularSeal1", + EXPLOSION2 = "irregularSeal2", + FLOWCHART_ALTERNATE_PROCESS = "flowChartAlternateProcess", + FLOWCHART_CARD = "flowChartPunchedCard", + FLOWCHART_COLLATE = "flowChartCollate", + FLOWCHART_CONNECTOR = "flowChartConnector", + FLOWCHART_DATA = "flowChartInputOutput", + FLOWCHART_DECISION = "flowChartDecision", + FLOWCHART_DELAY = "flowChartDelay", + FLOWCHART_DIRECT_ACCESS_STORAGE = "flowChartMagneticDrum", + FLOWCHART_DISPLAY = "flowChartDisplay", + FLOWCHART_DOCUMENT = "flowChartDocument", + FLOWCHART_EXTRACT = "flowChartExtract", + FLOWCHART_INTERNAL_STORAGE = "flowChartInternalStorage", + FLOWCHART_MAGNETIC_DISK = "flowChartMagneticDisk", + FLOWCHART_MANUAL_INPUT = "flowChartManualInput", + FLOWCHART_MANUAL_OPERATION = "flowChartManualOperation", + FLOWCHART_MERGE = "flowChartMerge", + FLOWCHART_MULTIDOCUMENT = "flowChartMultidocument", + FLOWCHART_OFFLINE_STORAGE = "flowChartOfflineStorage", + FLOWCHART_OFFPAGE_CONNECTOR = "flowChartOffpageConnector", + FLOWCHART_OR = "flowChartOr", + FLOWCHART_PREDEFINED_PROCESS = "flowChartPredefinedProcess", + FLOWCHART_PREPARATION = "flowChartPreparation", + FLOWCHART_PROCESS = "flowChartProcess", + FLOWCHART_PUNCHED_TAPE = "flowChartPunchedTape", + FLOWCHART_SEQUENTIAL_ACCESS_STORAGE = "flowChartMagneticTape", + FLOWCHART_SORT = "flowChartSort", + FLOWCHART_STORED_DATA = "flowChartOnlineStorage", + FLOWCHART_SUMMING_JUNCTION = "flowChartSummingJunction", + FLOWCHART_TERMINATOR = "flowChartTerminator", + FOLDED_CORNER = "folderCorner", + FRAME = "frame", + FUNNEL = "funnel", + GEAR_6 = "gear6", + GEAR_9 = "gear9", + HALF_FRAME = "halfFrame", + HEART = "heart", + HEPTAGON = "heptagon", + HEXAGON = "hexagon", + HORIZONTAL_SCROLL = "horizontalScroll", + ISOSCELES_TRIANGLE = "triangle", + LEFT_ARROW = "leftArrow", + LEFT_ARROW_CALLOUT = "leftArrowCallout", + LEFT_BRACE = "leftBrace", + LEFT_BRACKET = "leftBracket", + LEFT_CIRCULAR_ARROW = "leftCircularArrow", + LEFT_RIGHT_ARROW = "leftRightArrow", + LEFT_RIGHT_ARROW_CALLOUT = "leftRightArrowCallout", + LEFT_RIGHT_CIRCULAR_ARROW = "leftRightCircularArrow", + LEFT_RIGHT_RIBBON = "leftRightRibbon", + LEFT_RIGHT_UP_ARROW = "leftRightUpArrow", + LEFT_UP_ARROW = "leftUpArrow", + LIGHTNING_BOLT = "lightningBolt", + LINE_CALLOUT_1 = "borderCallout1", + LINE_CALLOUT_1_ACCENT_BAR = "accentCallout1", + LINE_CALLOUT_1_BORDER_AND_ACCENT_BAR = "accentBorderCallout1", + LINE_CALLOUT_1_NO_BORDER = "callout1", + LINE_CALLOUT_2 = "borderCallout2", + LINE_CALLOUT_2_ACCENT_BAR = "accentCallout2", + LINE_CALLOUT_2_BORDER_AND_ACCENT_BAR = "accentBorderCallout2", + LINE_CALLOUT_2_NO_BORDER = "callout2", + LINE_CALLOUT_3 = "borderCallout3", + LINE_CALLOUT_3_ACCENT_BAR = "accentCallout3", + LINE_CALLOUT_3_BORDER_AND_ACCENT_BAR = "accentBorderCallout3", + LINE_CALLOUT_3_NO_BORDER = "callout3", + LINE_CALLOUT_4 = "borderCallout4", + LINE_CALLOUT_4_ACCENT_BAR = "accentCallout3=4", + LINE_CALLOUT_4_BORDER_AND_ACCENT_BAR = "accentBorderCallout4", + LINE_CALLOUT_4_NO_BORDER = "callout4", + LINE = "line", + LINE_INVERSE = "lineInv", + MATH_DIVIDE = "mathDivide", + MATH_EQUAL = "mathEqual", + MATH_MINUS = "mathMinus", + MATH_MULTIPLY = "mathMultiply", + MATH_NOT_EQUAL = "mathNotEqual", + MATH_PLUS = "mathPlus", + MOON = "moon", + NON_ISOSCELES_TRAPEZOID = "nonIsoscelesTrapezoid", + NOTCHED_RIGHT_ARROW = "notchedRightArrow", + NO_SYMBOL = "noSmoking", + OCTAGON = "octagon", + OVAL = "ellipse", + OVAL_CALLOUT = "wedgeEllipseCallout", + PARALLELOGRAM = "parallelogram", + PENTAGON = "homePlate", + PIE = "pie", + PIE_WEDGE = "pieWedge", + PLAQUE = "plaque", + PLAQUE_TABS = "plaqueTabs", + QUAD_ARROW = "quadArrow", + QUAD_ARROW_CALLOUT = "quadArrowCallout", + RECTANGLE = "rect", + RECTANGULAR_CALLOUT = "wedgeRectCallout", + REGULAR_PENTAGON = "pentagon", + RIGHT_ARROW = "rightArrow", + RIGHT_ARROW_CALLOUT = "rightArrowCallout", + RIGHT_BRACE = "rightBrace", + RIGHT_BRACKET = "rightBracket", + RIGHT_TRIANGLE = "rtTriangle", + ROUNDED_RECTANGLE = "roundRect", + ROUNDED_RECTANGULAR_CALLOUT = "wedgeRoundRectCallout", + ROUND_1_RECTANGLE = "round1Rect", + ROUND_2_DIAG_RECTANGLE = "round2DiagRect", + ROUND_2_SAME_RECTANGLE = "round2SameRect", + SMILEY_FACE = "smileyFace", + SNIP_1_RECTANGLE = "snip1Rect", + SNIP_2_DIAG_RECTANGLE = "snip2DiagRect", + SNIP_2_SAME_RECTANGLE = "snip2SameRect", + SNIP_ROUND_RECTANGLE = "snipRoundRect", + SQUARE_TABS = "squareTabs", + STAR_10_POINT = "star10", + STAR_12_POINT = "star12", + STAR_16_POINT = "star16", + STAR_24_POINT = "star24", + STAR_32_POINT = "star32", + STAR_4_POINT = "star4", + STAR_5_POINT = "star5", + STAR_6_POINT = "star6", + STAR_7_POINT = "star7", + STAR_8_POINT = "star8", + STRIPED_RIGHT_ARROW = "stripedRightArrow", + SUN = "sun", + SWOOSH_ARROW = "swooshArrow", + TEAR = "teardrop", + TRAPEZOID = "trapezoid", + UP_ARROW = "upArrow", + UP_ARROW_CALLOUT = "upArrowCallout", + UP_DOWN_ARROW = "upDownArrow", + UP_DOWN_ARROW_CALLOUT = "upDownArrowCallout", + UP_RIBBON = "ribbon2", + U_TURN_ARROW = "uturnArrow", + VERTICAL_SCROLL = "verticalScroll", + WAVE = "wave" +} +export type SHAPE_NAME = 'accentBorderCallout1' | 'accentBorderCallout2' | 'accentBorderCallout3' | 'accentCallout1' | 'accentCallout2' | 'accentCallout3' | 'actionButtonBackPrevious' | 'actionButtonBeginning' | 'actionButtonBlank' | 'actionButtonDocument' | 'actionButtonEnd' | 'actionButtonForwardNext' | 'actionButtonHelp' | 'actionButtonHome' | 'actionButtonInformation' | 'actionButtonMovie' | 'actionButtonReturn' | 'actionButtonSound' | 'arc' | 'bentArrow' | 'bentUpArrow' | 'bevel' | 'blockArc' | 'borderCallout1' | 'borderCallout2' | 'borderCallout3' | 'bracePair' | 'bracketPair' | 'callout1' | 'callout2' | 'callout3' | 'can' | 'chartPlus' | 'chartStar' | 'chartX' | 'chevron' | 'chord' | 'circularArrow' | 'cloud' | 'cloudCallout' | 'corner' | 'cornerTabs' | 'cube' | 'curvedDownArrow' | 'curvedLeftArrow' | 'curvedRightArrow' | 'curvedUpArrow' | 'custGeom' | 'decagon' | 'diagStripe' | 'diamond' | 'dodecagon' | 'donut' | 'doubleWave' | 'downArrow' | 'downArrowCallout' | 'ellipse' | 'ellipseRibbon' | 'ellipseRibbon2' | 'flowChartAlternateProcess' | 'flowChartCollate' | 'flowChartConnector' | 'flowChartDecision' | 'flowChartDelay' | 'flowChartDisplay' | 'flowChartDocument' | 'flowChartExtract' | 'flowChartInputOutput' | 'flowChartInternalStorage' | 'flowChartMagneticDisk' | 'flowChartMagneticDrum' | 'flowChartMagneticTape' | 'flowChartManualInput' | 'flowChartManualOperation' | 'flowChartMerge' | 'flowChartMultidocument' | 'flowChartOfflineStorage' | 'flowChartOffpageConnector' | 'flowChartOnlineStorage' | 'flowChartOr' | 'flowChartPredefinedProcess' | 'flowChartPreparation' | 'flowChartProcess' | 'flowChartPunchedCard' | 'flowChartPunchedTape' | 'flowChartSort' | 'flowChartSummingJunction' | 'flowChartTerminator' | 'folderCorner' | 'frame' | 'funnel' | 'gear6' | 'gear9' | 'halfFrame' | 'heart' | 'heptagon' | 'hexagon' | 'homePlate' | 'horizontalScroll' | 'irregularSeal1' | 'irregularSeal2' | 'leftArrow' | 'leftArrowCallout' | 'leftBrace' | 'leftBracket' | 'leftCircularArrow' | 'leftRightArrow' | 'leftRightArrowCallout' | 'leftRightCircularArrow' | 'leftRightRibbon' | 'leftRightUpArrow' | 'leftUpArrow' | 'lightningBolt' | 'line' | 'lineInv' | 'mathDivide' | 'mathEqual' | 'mathMinus' | 'mathMultiply' | 'mathNotEqual' | 'mathPlus' | 'moon' | 'noSmoking' | 'nonIsoscelesTrapezoid' | 'notchedRightArrow' | 'octagon' | 'parallelogram' | 'pentagon' | 'pie' | 'pieWedge' | 'plaque' | 'plaqueTabs' | 'plus' | 'quadArrow' | 'quadArrowCallout' | 'rect' | 'ribbon' | 'ribbon2' | 'rightArrow' | 'rightArrowCallout' | 'rightBrace' | 'rightBracket' | 'round1Rect' | 'round2DiagRect' | 'round2SameRect' | 'roundRect' | 'rtTriangle' | 'smileyFace' | 'snip1Rect' | 'snip2DiagRect' | 'snip2SameRect' | 'snipRoundRect' | 'squareTabs' | 'star10' | 'star12' | 'star16' | 'star24' | 'star32' | 'star4' | 'star5' | 'star6' | 'star7' | 'star8' | 'stripedRightArrow' | 'sun' | 'swooshArrow' | 'teardrop' | 'trapezoid' | 'triangle' | 'upArrow' | 'upArrowCallout' | 'upDownArrow' | 'upDownArrowCallout' | 'uturnArrow' | 'verticalScroll' | 'wave' | 'wedgeEllipseCallout' | 'wedgeRectCallout' | 'wedgeRoundRectCallout'; +/** + * Chart types matching PowerPoint categories: + * - Column: BAR, BAR3D (use barDir for horizontal/vertical) + * - Line: LINE, LINE3D, AREA, AREA3D + * - Pie: PIE, PIE3D, DOUGHNUT, OFPIE + * - X Y (Scatter): SCATTER, BUBBLE + * - Waterfall: STOCK + * - ChartEx (Extended): TREEMAP, SUNBURST, HISTOGRAM, PARETO, BOXWHISKER, WATERFALL_CHARTEX, FUNNEL, REGION_MAP + */ +export declare enum CHART_TYPE { + 'BAR' = "bar", + 'BAR3D' = "bar3D", + 'AREA' = "area", + 'AREA3D' = "area3D", + 'LINE' = "line", + 'LINE3D' = "line3D", + 'PIE' = "pie", + 'PIE3D' = "pie3D", + 'DOUGHNUT' = "doughnut", + 'OFPIE' = "ofPie", + 'SCATTER' = "scatter", + 'BUBBLE' = "bubble", + 'STOCK' = "stock", + 'TREEMAP' = "treemap", + 'SUNBURST' = "sunburst", + 'HISTOGRAM' = "histogram", + 'PARETO' = "pareto", + 'BOXWHISKER' = "boxWhisker", + 'WATERFALL_CHARTEX' = "waterfallChartEx", + 'FUNNEL' = "funnel", + 'REGION_MAP' = "regionMap" +} +export declare enum SCHEME_COLOR_NAMES { + 'TEXT1' = "tx1", + 'TEXT2' = "tx2", + 'BACKGROUND1' = "bg1", + 'BACKGROUND2' = "bg2", + 'ACCENT1' = "accent1", + 'ACCENT2' = "accent2", + 'ACCENT3' = "accent3", + 'ACCENT4' = "accent4", + 'ACCENT5' = "accent5", + 'ACCENT6' = "accent6" +} +export declare enum MASTER_OBJECTS { + 'chart' = "chart", + 'image' = "image", + 'line' = "line", + 'rect' = "rect", + 'text' = "text", + 'placeholder' = "placeholder", + 'picturePlaceholder' = "picturePlaceholder" +} +export declare enum SLIDE_OBJECT_TYPES { + 'chart' = "chart", + 'group' = "group", + 'hyperlink' = "hyperlink", + 'image' = "image", + 'media' = "media", + 'online' = "online", + 'placeholder' = "placeholder", + 'picturePlaceholder' = "picturePlaceholder", + 'table' = "table", + 'tablecell' = "tablecell", + 'text' = "text", + 'notes' = "notes" +} +export declare enum PLACEHOLDER_TYPES { + 'title' = "title", + 'body' = "body", + 'image' = "pic", + 'chart' = "chart", + 'table' = "tbl", + 'media' = "media", + 'content' = "",// Content placeholder (no type = generic 6-icon picker) + 'clipArt' = "clipArt",// Online image placeholder + 'diagram' = "dgm",// SmartArt/diagram placeholder + 'cameo' = "media" +} +export type PLACEHOLDER_TYPE = 'title' | 'body' | 'image' | 'pic' | 'chart' | 'table' | 'tbl' | 'media' | 'content' | 'clipArt' | 'diagram' | 'cameo'; +/** + * NOTE: 20170304: BULLET_TYPES: Only default is used so far. I'd like to combine the two pieces of code that use these before implementing these as options + * Since we close

within the text object bullets, its slightly more difficult than combining into a func and calling to get the paraProp + * and i'm not sure if anyone will even use these... so, skipping for now. + */ +export declare enum BULLET_TYPES { + 'DEFAULT' = "•", + 'CHECK' = "✓", + 'STAR' = "★", + 'TRIANGLE' = "▶" +} +export declare const IMG_BROKEN = "data:image/png;base64,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"; +export declare const IMG_PLAYBTN = "data:image/png;base64,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AAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKREkRUAAACwrUpLSwuGDRvWfMCAAS26du3avKysrLiioqKkZcuWzZs1a1bcvHnz0tLS0rJsNtusuLi4ebNmzUoLCgo+8/eijY2N9Zs3b66pra2tqqur21xTU1NdVVVVs2nTptqNGzdWbdiwoeYvf/nL5hUrVlQtWLBgw6xZs6pqamoaJQYAAEDaKYABAACIiIghQ4aUHnTQQW379u3bql27dq3at2/fpkWLFq2bN29eWVpa2qpZs2bNCwsLm2ez2fLCwsLyoqKi8sLCwtKknK+hoaG6vr6+qqGh4S91dXV/aWhoqNq8eXNVTU3NuqqqqvUbNmxYu2rVqjWrV69e99Zbb6177rnnPpgzZ06NTwYAAABJogAGAADIA8OGDWt+xBFHdBwwYECnLl26dGjdunXHFi1adCgtLe1YUlLSvlmzZq0KCgqK07yDwsLCssLCwrKIaPdp/zuNjY21mzdvXrdp06ZVNTU172/YsGHl2rVr31+2bNnKBQsWrHjyySffnzVrVpVPGAAAAE1Fpuexsd9HfaF+ZcSal0ptCAAAIAE6deqUPf744zvtueeeXbp3796lbdu2XSorKzuXlpZ2KS0t7VBYWFhhSztGQ0PDxpqampU1NTXL169fv+yDDz5Y9s477yybPXv2sj/96U8rVqxYUWdLAAAAbE9t9q6Jog4f/TUFMAAAQEJks9nMt7/97Y4jRozo1bdv397t2rXrXl5e3rWsrKxzcXFx+4gosKUmp7G2tnZVTU3Nso0bNy5btWrV0tdff/2tJ598cvG999672noAAADYFgpgAACAhPne977X6a9Fb/v27Xu1bNmyV1lZWa8kvXOXLauvr9/wl7/8ZdG6desWL1u2bNHChQsX/fGPf1w8derUjbYDAADAliiAAQAAmqhsNps59dRTuxx66KH9+/Tp87n27dv3Ly8v719UVOSRzXlq06ZNKzZu3Pj6+++//8abb775xqOPPvrG3XffvcpmAAAA+CsFMAAAQBNx6qmndvniF784qHfv3v3btWv3uYqKis8VFhaW2wxbUl9fv37Dhg1vfPDBB68vXrz4jccee2z+jTfeuNxmAAAA8pMCGAAAYBc45phjWn/rW9/aq3///kPatGnTv6Kiop9HOLO9NDQ0VG/cuPGtNWvWLFy4cOGcO+6445WHHnporc0AAACknwIYAABgJzjjjDO6f+lLX9qrV69eg1u3bj2orKysR0RkbIadJFddXb103bp18xcvXjz30UcffeXqq69+x1oAAADSRwEMAACwnZWWlhb86le/2u3QQw8d1r17931btmw5qLCwsMxmaEoaGhqqP/zww/nvvPPOzGeeeWbW2LFj36ipqWm0GQAAgGRTAAMAAGwHP/7xj7t+9atf3bdXr15D27Ztu1c2m21jKyRJXV3dmg8++OCVRYsWvfznP/95xh/+8IdltgIAAJA8CmAAAIBtcOKJJ7Y75ZRTDujXr9+w1q1bD81ms61shTSpq6tbt3bt2pfffPPNWbfccsvUe++9d7WtAAAANH0KYAAAgE+hoqKi4IILLhg0YsSI/bp27bpfy5YtB2YymUKbIR/kcrmGDz/8cP6777474/nnn59x4YUXvrZx40aPiwYAAGiCFMAAAAAf4/jjj2/7/e9//8D+/fsf2Lp1630KCgpKbAUiGhsbN61fv37eW2+9NeWGG2545u67715lKwAAAE2DAhgAAOB/ZLPZzAUXXPC5I4888sDu3bsfWFFRsVtEFNgMbFl1dfWSd999d8qsWbNmnnvuuS+vW7euwVYAAAB2DQUwAACQ10pLSwsuvfTSQYcccsjBXbt2HVFWVtbDVmDb1dbWrnr//fdfmDp16uRf/vKXL65evbreVgAAAHYeBTAAAJB3Bg0aVHrBBRd8fs899zywQ4cOBxQVFbWwFdj+Ghsba9euXTtrzpw5T59//vmTX3755WpbAQAA2LEUwAAAQF4YNmxY8/POO+/gIUOGHOZ9vrDz/W0ZfNFFFz07a9asKlsBAADY/hTAAABAarVq1arwyiuv3HfEiBEjO3TocFBhYWGZrcCu19DQUP3+++8/O2XKlIk/+clPZm7cuLHRVgAAALYPBTAAAJAqrVq1Kvztb3+7/3777Xd4x44dRxQWFpbbCjRdDQ0NG99///0pM2bMeOqHP/zhC8pgAACAz0YBDAAApMJZZ53V45vf/OaRvXr1GllaWtrVRiB5ampq3l28ePHEO++8c9LVV1/9jo0AAABsPQUwAACQWMOHDy+/6KKLvjB48OCjW7RoMdBGID0+/PDDV+fNmzfhvPPOe3L69Ol/sREAAIBPRwEMAAAkSqtWrQpvuOGGQ/bbb79/atOmzX6ZTCZrK5BeuVyubs2aNTNmzJjx2JgxYyavW7euwVYAAAA+ngIYAABIhB//+Mddv/e9732lZ8+e/1RcXNzWRiD/1NbWfvD2228/dssttzz029/+9l0bAQAA+L8UwAAAQJNVUVFRcO21137+4IMPPrZ169b7ZTKZAlsBIqJxzZo1M59//vnxp5122hR3BQMAAPx/CmAAAKDJOeWUUzqefvrpx/bu3ftL2Wy2jY0AH6e+vn7j0qVLH/vd7373x+uvv36ZjQAAAPlOAQwAADQJ2Ww2c+uttx5wyCGHnNC6deu9I8LdvsDWaFy7du1L06ZN+/OPfvSjZ1evXl1vJQAAQD5SAAMAALtU//79S6655pp/2nPPPY8tLy/vayPAZ1VTU7NswYIF488999wHp06dutFGAACAfKIABgAAdomf//znPU855ZQTu3btemRhYWGZjQDbW2NjY92KFSuevOWWW+689NJLF9kIAACQDxTAAADATuMxz8Cusn79+rlPP/30f5188slT6+rqcjYCAACklQIYAADY4fr27Vv8hz/84a+Pee5nI8CuUlNT8+68efPu/8EPfvDgwoULN9kIAACQNgpgAABghxkyZEjpNddc89XBgwefWFxc3MFGgKaitrZ21dy5c+/5yU9+8uc5c+bU2AgAAJAWWyqAPYoNAADYJqNHj+4wb968n06ZMuXRYcOGnaH8BZqa4uLi9sOGDTtjypQpj86bN++nJ510UntbAQAA0s4dwAAAwFY599xze33/+9//dufOnY/IZDJZGwGSIpfL1S1fvvzJG2644fbLLrvsbRsBAACSyiOgAQCAz+y8887r+53vfOfbHTt2PDyTyRTaCJBUuVyuYcWKFU/cdNNN//XrX/96sY0AAABJowAGAAC22WWXXTboG9/4xg9at249zDaAtFm7du2su++++9pzzjnnNdsAAACSQgEMAABsNcUvkE8UwQAAQJIogAEAgE9N8Qvks7Vr18665557rvv5z38+3zYAAICmaksFcGHlwOj6UV9orIqoWZG1PQAAyBO/+MUvet9xxx3nHHrooT8pLS3tYiNAPiotLe2y7777HvP973+/X1lZ2ZIpU6assxUAAKCpKetcHwXlH/01BTAAAOS5M844o/u99957zpe//OWflZeX94qIjK0AeS5TXl7e8+CDDx71/e9/v3dEvDVjxowPrQUAAGgqFMAAAMD/ceKJJ7a77777fjJq1Kh/KS8v7xOKX4B/lCkvL+99+OGHj/rWt77VfvXq1Qvnz59fbS0AAMCutqUC2DuAAQAgzwwdOrTs+uuvP6l///4nFRYWltkI20NjY2Ns2rQpqquro6amJurr62PTpk2xefPmqK+vj+rq6qivr4/NmzfHpk2boqGhYZv/fxUWFkZJSUk0a9YsioqKoqysLIqKiqJZs2ZRUlISRUVFUVpa+r9/FRQUCIjtoqGhoeq11167a8yYMffMmTOnxkYAAIBdZUvvAFYAAwBAnujUqVP2nnvuGbXXXnudnM1mK22Ej9PQ0BAbN26MDRs2/J+/Nm7cGBs3boyamprYtGlTbNq0KWpqaqK2trbJnqe4uDhKSkqitLT0f/9eUVERFRUV0aJFi//zV0VFRRQWFvog8LHq6urWvvjii7eceOKJf169enW9jQAAADubAhgAAPLcXXfdddAXv/jF00tLS7vZRn7L5XKxYcOGWLt2baxbty7Wrl37d3+tW7cuNmzYkPd7atGiRbRu3TpatWoVrVu3jjZt2vzvf27dunW0aNHCh4morq5e+sgjj1zzne98Z6ptAAAAO5MCGAAA8tTVV189+MQTTzyzoqJioG3kj8bGxli5cmUsX748Pvjgg1i9evX//n3t2rXR2NhoSZ9RYWFhtGrVKtq1axdt27b937937tw5OnTo4LHTeWbDhg3z77333qvOPPPMebYBAADsDApgAADIM1/72tfaXHrppad27979qIjQRKVUQ0NDrFq1KlasWBHvv//+//595cqVTfqRzGlXXFwcHTp0iI4dO0bnzp2jY8eO0alTp2jXrp1HS6dYLpdrfOeddx76+c9/fv2ECRPW2QgAALAjKYABACBP9OrVq9ldd931jT322OM7hYWFZTaSHh9++GG88847sXTp0njvvfdixYoVsXr16mhoaLCchCgsLIz27dtHp06dolu3btG9e/fo3r27x0mnTENDQ9W8efNu++Y3v/nHJUuWbLYRAABgR1AAAwBAHrjrrrtG/NM//dOZJSUlXWwj2davXx9Lly6Nd955539L3w8//NBiUqqysvJ/y+C//tWqVSuLSbiamppljz322G9Gjx49xTYAAIDtTQEMAAAp9qtf/arPD3/4w5+1atVqL9tIno0bN8aSJUvirbfeikWLFsV7770XmzZtspg8V1JSEl27do0+ffpE3759o3fv3lFeXm4xCbRu3bqXr7322ivGjh27yDYAAIDtRQEMAAApNGjQoNI77rjju7vttttJBQUFWRtJhtWrV8ebb74ZixcvjiVLlsTy5cujsbHRYtiigoKC6Ny5c/Tu3Tt69+4d/fr1i7Zt21pMQjQ2Nta98cYbd33rW9+6ff78+TU2AgAAfFYKYAAASJHS0tKCBx988Jj99tvvn7PZbBsbaboaGhri7bffjrfeeisWLFgQS5YscXcv201FRUX06tUr+vbtG3379o2ePXtGYWGhxTRhdXV1a2bMmHHjV77ylYdqamr85gcAALDNFMAAAJASp59+erdf/vKX51ZWVu5jG03T6tWr47XXXouFCxfGm2++GRs3brQUdooWLVpE3759Y8CAATFw4EB3CDdh69evf/E//uM//vPqq69+xzYAAIBtoQAGAICEGzRoUOm99977w969ex+byWTc4teErF+/PubNmxcLFiyIN954Q+FLk9GiRYvo169fDBgwIPbYY4+orKy0lCYkl8s1LF68eNyJJ554rcdCAwAAW0sBDAAACXbNNdcMOemkk35RVlbWyzZ2vVwuF++++27MnTs3XnvttViyZIl3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B7lcrm7y5Mm//vKXv/yIbQAAwK63pXcAK4ABAMg7paWlBTNnzjyzT58+x9vG39uwYUOMGzcuZsyY4VHPQF7KZDKx3377xde//vWoqKiwkH+waNGiP+27775X1dTUeCwEAADsQgpgAAD4H926dctOnjz5V506dRppG/9fLpeLqVOnxp///OfYuHGjhQB5r6KiIkaNGhX777+/x0L/g+XLlz9+6KGHXvLuu+/W2QYAAOwaWyqAvQMYAIC8MXz48PInnnjiynbt2o2wjf/vnXfeiWuvvTaee+652Lx5s4UARMTmzZtjzpw58dprr0XPnj2jRYsWlvI/Kioq+n7rW98aMnXq1Ofee+89f3AAAMAusKV3ACuAAQDIC9/+9rc73n777X9o0aLFANv4b1VVVXHXXXfFvffeG+vXr7cQgI+wbt26eP7552P9+vWx2267RVFRkaVERElJSefjjjvuoA8++GDKK6+88hcbAQCAnUsBDABAXjv//PP7XXzxxX8oKSnpbBv/bfr06XHttdfGokWLLAPgU3jnnXdi2rRp0bp16+jc2R8nERHZbLbyC1/4whElJSUvTp48eY2NAADAzqMABgAgb/3ud7/b60c/+tFVRUVFrWwjYs2aNXHzzTfHpEmTora21kIAtkJtbW289NJL8c4770Tfvn2jtLQ073dSWFhYNnz48C/26dNn4UMPPbTMpwQAAHYOBTAAAHnp1ltv3f+b3/zmfxYWFjbP913kcrl4/vnn4/rrr4/ly5f7cAB8BitXroxp06ZFRUVFdOvWLTKZTF7vo6CgIDto0KBDBw0atOiBBx54xycEAAB2vC0VwJmex8Z+H/WF+pURa17ym6wAACTTww8//KXDDjvsXzKZTN6/rPGDDz6I22+/Pd544w0fDIDtbMCAAfGtb30r2rRpk/e7yOVyjVOmTPn1yJEjH/LJAACAHavN3jVR1OGjv6YABgAgdV555ZXTPve5z30r3/fQ0NAQjz32WDz++ONRV1fngwGwg2Sz2Tj66KPjC1/4QhQUFOT9Pl5//fU79tprr9/7ZAAAwI6jAAYAIC9ks9nMyy+/fFafPn2Oz/ddvPvuu3HbbbfFe++954MBsJN069YtvvOd70S3bt3yfhdLliy5f5999rmypqam0ScDAAC2PwUwAACpV1paWjBr1qyzevfufVw+7yGXy8WTTz4ZDz74oLt+AXaBbDYbxxxzTBxxxBF5fzfw0qVLHxg6dOjlSmAAANj+FMAAAKRar169mk2ePHlsu3btDsrnPaxcuTJuueWWePvtt30oAHaxnj17ximnnBIdOnTI6z2sXr16yiGHHPIvS5Ys2exTAQAA28+WCuDCyoHR9aO+0FgVUbMia3sAADRpQ4cOLXvqqacub9Omzf75uoNcLhfPPPNMXH/99bF27VofCoAmYP369TFlypQoKSmJnj17RiaTycs9NG/evPtJJ500ZPLkyc+sWLHCoykAAGA7KetcHwXlH/01BTAAAIk1ZMiQ0kceeeSKVq1a7Z2vO6iuro7bb789nnjiiWhs9IRNgKaksbEx5s+fH++//34MGDAgstn8/DlLaWlpp6997WuDn3rqqadXrlxZ75MBAACfnQIYAIDUOfTQQ1s8+OCDv2/ZsuUe+bqDOXPmxNVXX+2RzwBN3PLly+OFF16Ijh075u0joUtLSzudcMIJ+7/00ktPv/3227U+FQAA8NkogAEASJVhw4Y1v++++37TsmXLQfl4/vr6+hg/fnz88Y9/jNpaP0MHSILNmzfHiy++GJs3b47ddtstCgoK8m4HxcXFbY866qg9n3vuuaeXL1/ucdAAAPAZKIABAEiNI488snLcuHG/b9GixcB8PP97770XV111VcyZM8eHASCBFi1aFC+//HL069cvWrRokXfnLykp6XDcccftP2fOnGcWLVq0yScCAAC2jQIYAIBUOPLIIyvvvPPO35aXl++Wj+d/+umn48Ybb4wPP/zQhwEgwf7yl7/ECy+8ECUlJdGrV6+8O3+zZs3aHHXUUfspgQEAYNspgAEASLxjjz227W233faH5s2b98m3s1dVVcXNN98cTz31VDQ2NvowAKRAY2NjzJ8/P5YtWxYDBgyIZs2a5dX5mzVr1uaYY4458M0333xm4cKFNT4RAACwdRTAAAAk2qGHHtritttuuzofy9+33347rrnmmli8eLEPAkAKvf/++/HKK69Enz59orKyMq/Ons1mK4888sh9Zs6c+dTSpUs3+zQAAMCnpwAGACCxjjjiiJb33nvvteXl5f3y6dy5XC4mTZoUN998c1RVVfkgAKRYVVVVTJ06NbLZbPTp0ycymUzenL24uLjtV7/61c+/8sorTy1evLjWpwEAAD4dBTAAAIl06KGHtrj33nt/l2/lb3V1ddx0000xefLkyOVyPggAeSCXy8WCBQvi3Xffjd133z2y2fz5mUyzZs1aH3300fvNmDHjSXcCAwDAp6MABgAgcYYOHVo2fvz4qysqKgbk07mXLVsWV111lUc+A+SplStXxiuvvBKf+9znoqKiIm/O3axZszZHH3300GeeeebJFStW1PkkAADAlimAAQBIlCFDhpQ++uij17Rs2XL3fDr31KlT49prr42NGzf6EADksaqqqpg+fXq0bds2unTpkjfnLikpaT9q1KihTz755JMrV66s90kAAICPt6UCuMB6AABoSjp16pSdMGHCv1dWVu6RL2dubGyMcePGxR133BF1dW56AiCitrY2br755hg/fnw0NjbmzbkrKyv3mDBhwr9369bNXQkAALCNFMAAADQZrVq1Kpw+ffolbdq02T9fzlxdXR2/+93vYtKkSd73C8DfyeVy8fjjj8fvf//7qK6uzptzt2nTZv8pU6Zc0qpVq0KfAgAA2HoKYAAAmoSKioqC2bNnX9KuXbuD8uXMS5cujYsuuijmz5/vAwDAx3r11VfjoosuiqVLl+bNmdu1a3fQ7Nmz/72iosLPrgAAYCu5iAYAoEmYOXPmz9q1a3dIvpz35ZdfjiuuuCLWrVsnfAA+0bp16+KKK66Il19+OW/O3K5du4Nnzpz5M+kDAMDWUQADALDLvfjii2N69OgxKh/Omsvl4oEHHogbbrghamtrhQ/Ap1ZbWxs33HBDPPDAA3nz2oAePXqMevHFF8dIHwAAPj0FMAAAu9SkSZO+NnDgwFPy4ax1dXVx8803x8SJE73vF4BtksvlYuLEiXHLLbdEXV1dXpx54MCBJ0+aNOlr0gcAgE9HAQwAwC7z6KOPHnXggQeekw9nXbduXfz617+OWbNmCR6Az2zmzJnx61//Ol9eJZA58MADz3n00UePkjwAAHyywsqB0fWjvtBYFVGzImtDAADsEDfeeOO+Rx999EWZTKYw7Wddvnx5XHXVVbFy5UrBA7DdbNiwIWbPnh0DBw6MioqKtB8307179/179uz56sMPP7xc+gAA5LuyzvVRUP7RX1MAAwCw011xxRV7fPe7372qoKCgWdrPOmfOnPjtb38bGzduFDwA2111dXVMmzYtOnfuHB07dkz1WTOZTOHuu+9+eJs2bV6aNGnSKukDAJDPFMAAADQZZ5xxRvef/exnvy0sLCxP+1knTJgQd999d9TX1wsegB2moaEhXnrppchms9G3b99UnzWTyRTttddeB/3lL395dubMmRukDwBAvlIAAwDQJBx00EEVf/jDH64pLi7ulOZz5nK5eOCBB+Kxxx4TOgA77c+eBQsWRF1dXfTv3z8ymUxqz1pQUFBywAEHDJs+ffqkpUuXbpY+AAD5aEsFcIH1AACwMwwaNKj0vvvuu7qsrKxXms9ZV1cX1113XUyaNEnoAOx0EydOjOuvvz7q6upSfc6ysrJef/rTn67u379/idQBAODvKYABANjhKioqCh577LGLKyoqBqb5nNXV1XHNNdfE7NmzhQ7ALvPKK6/ElVdeGVVVVak+Z4sWLQZOnDhxbEVFhZ9vAQDA33CBDADADjdz5syftW3b9sA0n3HdunVx2WWXxRtvvCFwAHa5xYsXx2WXXRZr165N9TnbtWt34MyZM38mcQAA+P8UwAAA7FBPPvnkqB49eoxK8xlXrVoVV1xxRSxfvlzgADQZK1asiCuuuCJWrlyZ6nP26NFj1KRJk0ZJHAAA/lth5cDo+lFfaKyKqFmRtSEAALbZjTfeuO+XvvSlCzOZTGp/8fDdd9+NK6+8MtatWydwAJqc6urqmDVrVvTv3z8qKytTe85u3boN79mz57yHH37Yb2MBAJAXyjrXR0H5R39NAQwAwA5x3nnn9T311FOvLigoKE7rGV977bW45pprorq6WuAANFmbN2+OGTNmRI8ePaJ9+/apPGMmkykYNGjQIYWFhVOee+45v5UFAEDqKYABANipjjrqqFb/8R//8YdmzZq1SusZX3755bj++uujrq5O4AA0eQ0NDfHSSy9Fp06dolOnTqk8Y0FBQXbYsGGfnz9//qQ33nhjk9QBAEizLRXA3gEMAMB21a1bt+wNN9zwnyUlJR3TesYpU6bEjTfeGPX19QIHIDHq6+vjxhtvjKlTp6b2jCUlJZ1uuOGG/+jWrZu7GgAAyFsKYAAAtqunn376XyorK/dI6/kmTZoUd955ZzQ2NgobgMRpbGyMO+64I5588snUnrGysnLw008//UtpAwCQrxTAAABsN88///w3unTp8k9pPd/EiRNj3LhxkcvlhA1AYuVyubj//vtTXQJ36dLlS88+++yJ0gYAIB95BzAAANvFTTfdNPzII488L5PJZNJ4vsceeyzGjx8vaABS47XXXotmzZpF3759U3m+zp0779urV695Dz/88DJpAwCQNlt6B7ACGACAz+wXv/hF7x/+8IdXFxQUNEvj+R544IF45JFHBA1A6ixYsCDq6upiwIABqTtbJpPJDBo06ODGxsbnpk6dul7aAACkiQIYAIAd5oADDqj43e9+99tmzZq1TeP5xo0bF5MmTRI0AKm1aNGi2Lx5cwwcODB1ZysoKMjut99+w5577rnH33vvvc3SBgAgLbZUAHsHMAAA2yybzWbuvPPOfyktLe2exvNNmDBB+QtAXpg0aVI89NBDqTxbaWlpj3vuuedfstlsRtIAAOQDBTAAANvs+eef/06HDh0OTePZHn744Xj44YeFDEDeeOSRR+LPf/5zKs/WoUOHw5599tlvSxkAgHygAAYAYJvcd999hw8ePPjUNJ7t/vvvjwkTJggZgLzz2GOPxX333ZfKs+25554/+NOf/nSYlAEASDvvAAYAYKudccYZ3ceMGXN5QUFBcdrONnHixHjkkUeEDEDeWrx4cWSz2ejbt2/ajpbp06fPvn/5y18mz5w5c4OkAQBIsi29A1gBDADAVhk2bFjzG2+88Q/NmjVrl7azPfroo6l99CUAbI2FCxdGUVFR9OvXL1XnKigoKD7wwAP3e/LJJx9dsWJFnaQBAEiqLRXAHgENAMBWuffee39ZWlraPW3nevzxx+PBBx8UMAD8jz//+c8xceLE1J2rtLS0x3333fdLCQMAkFYKYAAAPrVJkyaN6tSp0xEpPFeMHz9ewADwD8aPHx+TJ09O3bk6der0hUmTJn1VwgAApJFHQAMA8Kmcd955fU888cR/z2QyRWk618yZM+Puu+8WMAB8jNdeey06duwYnTt3TtW5unbtuk9BQcHzzz333DopAwCQNN4BDADAZ3LEEUe0vOKKK67NZrOVaTrXyy+/HDfffHPkcjkhA8DHyOVyMXv27OjSpUt06tQpNefKZDJF++yzz/CpU6c+9u67726WNAAASeIdwAAAbLNsNpu55ZZb/q2kpKRjms61YMGCuPnmm6OxsVHIAPAJGhsb4+abb44333wzVecqLS3tcvfdd5+fzWYzUgYAIC0UwAAAbNGkSZO+3rZt2wPTdKZly5bFDTfcEPX19QIGgE+prq4urr322li+fHmqztWuXbsDH3/88VESBgAgLTwCGgCAj3XZZZcN+upXvzo2k8mk5hcH33///bjyyiujqqpKwACwlerq6uLll1+OIUOGRHl5eWrO1aVLl31LS0unPvPMM2ukDABAEngENAAAW61///4lJ5988q8ymUxRWs60YcOG+P3vfx8bN24UMABso40bN8bvfve7VP15WlBQkP3hD394ft++fYslDABA4q9vrQAAgI/y4IMPnl1WVtYrLeeprq6O3/zmN7Fq1SrhAsBntGrVqrjyyiujuro6NWcqKyvr8/DDD58lXQAAkk4BDADA/zF+/Pgju3XrdnRazlNfX5/KdxYCwK60fPnyuO6666K+vj41Z+rRo8dXx40bd4R0AQBIMgUwAAB/53vf+16nI4444py0nCeXy8Vtt90Wb7zxhnABYDt7/fXX47bbbotcLpeaMx155JHnfvvb3+4oXQAAkkoBDADA/6qoqCi4+OKLLywsLCxPy5nGjx8fs2bNEi4A7CCzZs2Khx56KDXnKSwsrPj1r399QUVFhZ+bAQCQSC5kAQD4XxMnThxdWVk5OC3nef7552PixImCBYAd7LHHHosXXnghNeeprKzc89FHHz1RsgAAJFFh5cDo+lFfaKyKqFmRtSEAgDxxwQUX7DZq1KgLM5lMYRrO8+qrr8Ytt9ySqkdSAkBT/7O3d+/e0a5du1Scp2PHjkNzudxzU6ZMWSddAACamrLO9VHwMc/wcwcwAADRt2/f4h//+McXZzKZVPwG4HvvvRc33HBDNDY2ChcAdpKGhoa47rrrYtmyZak4T0FBQfbss88e27dv32LpAgCQqGtZKwAAYPz48T8qKyvrkYazbNiwIX7/+99HbW2tYAFgJ9u0aVP8/ve/j40bN6biPGVlZb3GjRs3RrIAACSJAhgAIM/ddNNNw/v06XN8Gs5SX18f1157baxdu1awALCLrFmzJq699tqor69PxXn69ev3jd///vdDJQsAQFIogAEA8thBBx1Uceyxx/5rRGTScJ477rgjFi9eLFgA2MUWLVoUd955Z1qOU/CNb3zj34YNG9ZcsgAAJOIC1goAAPLXzTfffFZxcXG7NJxl4sSJMX36dKECQBMxbdq0mDRpUirOUlJS0unOO+88Q6oAACSBAhgAIE/913/914FdunT5UhrO8tprr8Wf//xnoQJAEzN+/PhYsGBBKs7SrVu3o2+66abhUgUAoKlTAAMA5KEvfelLlV/5yld+lYazrFixIq6//vpobGwULAA0MY2NjXHdddfFihUr0nCczHHHHfergw46qEKyAAA0ZQpgAIA8dPXVV5+ezWYrk36OmpqauPbaa2PTpk1CBYAmatOmTXHttddGTU1N4s+SzWbb3njjjT+RKgAATZkCGAAgz9x6663Du3Tp8uWknyOXy8Utt9wSK1euFCoANHErV66MW2+9NXK5XOLP4lHQAAA0dQpgAIA8MnTo0LKvfvWrv0jDWSZMmBBz584VKgAkxJw5c+Kxxx5LxVlGjRr1i6FDh5ZJFQCApkgBDACQR+64444fFRcXd0z6OV5++eV45JFHBAoACfPQQw+l4he4SkpKOt5xxx0/lCgAAE2RAhgAIE9cfvnlu/fs2XNU0s/xwQcfxB133JGKR0gCQL7J5XJx2223xZo1axJ/lp49ex57+eWX7y5VAACaGgUwAEAe6NatW/a73/3uv2YymURf/9XX18cNN9wQ1dXVQgWAhKqqqoobb7wx6uvrE32OTCZT8N3vfvdX3bp1y0oVAICmRAEMAJAHxo8ff0pZWVmvpJ/jnnvuiaVLlwoUABJuyZIlcd999yX+HGVlZT3Hjx9/ikQBAGhKFMAAACn385//vOeAAQNGJ/0c06dPjylTpggUAFJi8uTJMWPGjMSfY8CAAaN//vOf95QoAABNhQIYACDFstls5qyzzjo3k8kk+tGEK1asiLvvvlugAJAyd911V6xYsSLRZ8hkMtmzzjrr3Gw2m5EoAABNgQIYACDFxo0b98XKysq9knyG2trauOGGG6K2tlagAJAyf/1zfvPmzYk+R2Vl5V7jxo0bKVEAAJoCBTAAQEoNHz68/OCDDz4t6ee4//77Y/ny5QIFgJRavnx5jBs3LvHnGDFixI+HDRvWXKIAAOxqCmAAgJS69dZbT8tms22TfIYZM2bEc889J0wASLnJkyfHzJkzE32G4uLitrfffvtp0gQAYFdTAAMApNBVV121R48ePb6S5DOsXLky7rrrLmECQJ64++6744MPPkj0GXr27PnVK664Yg9pAgCwKymAAQBSprS0tOAb3/jGT5N8rdfY2Bi333679/4CQB6pqamJ2267LRobG5N8jIJvfvObZ5aWlvqZGwAAu+6i1AoAANJlwoQJX6uoqBiQ5DOMHz8+Fi1aJEwAyDNvvvlmPPjgg4k+Q4sWLQY9+OCDx0gTAIBdRQEMAJAiRx55ZOWwYcN+kOQzzJ07N5544glhAkCemjhxYixYsCDRZxg+fPiPjjjiiJbSBABgV1AAAwCkyBVXXHFyUVFRRVLnr6qqijvvvDNyuZwwASBP5XK5uP3226O6ujqxZygqKmrxm9/85mRpAgCwKyiAAQBS4vzzz+/Xu3fv45J8httvvz0+/PBDYQJAnlu3bl3cfvvtiT5D7969jz///PP7SRMAgJ1NAQwAkALZbDZz6qmn/jyTyST2+m769OkxZ84cYQIAERExe/bsmDFjRmLnz2QyBaeeeurPs9lsRpoAAOxMCmAAgBT44x//eERlZeXgpM6/du3auPfeewUJAPyde+65J9atW5fY+SsrKwf/6U9/+oIkAQDYmRTAAAAJ17dv3+JDDjnkR0k+w9133x01NTXCBAD+Tk1NTdx9992JPsPBBx/8o759+xZLEwCAnUUBDACQcHfdddc3S0pKOiV1/smTJ8e8efMECQB8pLlz58azzz6b2PlLSko63nPPPd+SJAAAO4sCGAAgwb70pS9VDhw48KSkzr9mzZoYP368IAGALXrggQdizZo1iZ2/f//+Jx111FGtJAkAwM6gAAYASLArrrji1MLCwvIkzp7L5eK2226LTZs2CRIA2KJNmzbFbbfdFrlcLpHzFxYWll1++eU/kCQAADuDAhgAIKF+8Ytf9O7evftXkjr/s88+G2+88YYgAYBP5Y033ojnn38+sfN369bt6F/96ld9JAkAwI6mAAYASKgf/vCHP8pkMom8nvvggw/igQceECIAsFXGjRsX69atS+TsmUym4NRTT/2xFAEA2NEUwAAACXTdddcNa9eu3YFJnD2Xy8Udd9wRtbW1ggQAtsqmTZvizjvvTOz8bdq02f+mm27aT5IAAOxICmAAgIQpLS0t+NrXvnZ6Uud/4YUXYuHChYIEALbJq6++GjNmzEjs/Mccc8zpFRUVfiYHAMAO42ITACBhbr/99oMrKip2S+LsGzZsiHHjxgkRAPhM7r///qiqqkrk7OXl5X3/67/+6wgpAgCwoyiAAQASpKKiouCwww47Nanz33vvvYn9YS0A0HRs2LAh7r///sTOf9BBB/1zq1atCiUJAMCOoAAGAEiQ+++//+iysrKeSZx9zpw58dJLLwkRANguXnjhhViwYEEiZy8tLe32xz/+8StSBABgR1AAAwAkRN++fYv33Xfff07i7LW1tXHvvfcKEQDYru6+++6oq6tL5Oz77bffKf379y+RIgAA25sCGAAgIW6++eZRxcXFbZM4+yOPPBJr164VIgCwXa1atSoee+yxRM6ezWbb3njjjV+TIgAA25sCGAAgAYYOHVq21157fSeJs7/33nvxxBNPCBEA2CEmTpwYK1asSOTsQ4YM+c7QoUPLpAgAwPakAAYASIBrr732xKKiosqkzZ3L5eKee+6JxsZGIQIAO0R9fX3cddddkcvlEjd7UVFR5bXXXnuCFAEA2J4UwAAATdwBBxxQMWDAgG8kcfYZM2bEW2+9JUQAYId6880348UXX0zk7AMGDPjG8OHDy6UIAMD2ogAGAGjirrrqqhOKiooqkjb3pk2b4oEHHhAgALBT3H///VFbW5u4uYuKilpcffXV7gIGAGC7UQADADRhBx10UEX//v0Teffvww8/HB9++KEQAYCdYv369TFhwoREzj5w4MBvHHDAARVSBABge1AAAwA0Yf/5n/95bGFhYfOkzb1q1aqYPHmyAAGAnerpp5+O1atXJ27uwsLC8ssuu2yUBAEA2B4UwAAATdQBBxxQMWjQoNFJnP3uu++O+vp6IQIAO1V9fX3cddddiZx99913/+bQoUPLpAgAwGelAAYAaKIuv/zyYwsLC8uTNvfcuXNjwYIFAgQAdokFCxbE3LlzEzd3UVFRi9/97ndflyAAAJ+VAhgAoAkaOnRo2aBBgxL37t+6urr405/+JEAAYJf605/+FHV1dYmbe/fdd//mkCFDSiUIAMBnoQAGAGiCfvOb33ylqKioZdLmfu655xL53j0AIF1Wr14dzz33XOLmLioqann11VcfLUEAAD4LBTAAQBPTq1evZoMHD/5m0uaurq6ORx55RIAAQJPwyCOPRHV1deLmHjJkyLe6deuWlSAAANtKAQwA0MTcdNNNxxQXF7dN2twTJkyIqqoqAQIATUJVVVUifzmtuLi43a233uouYAAAtpkCGACgCWnVqlXhXnvtdVLS5l61alU8++yzAgQAmpTJkyfHqlWrEjf30KFDR7dq1apQggAAbAsFMABAE3LLLbccXlJS0jlpcz/44INRX18vQACgSamvr48HH3wwcXOXlJR0vummmw6VIAAA20IBDADQRGSz2cwBBxzw7aTNvWjRonjppZcECAA0SS+99FIsXrw4cXOPGDHiO9lsNiNBAAC2lgIYAKCJuOaaa/YuLy/vm7S5H3roocjlcgIEAJqkXC6XyLuAy8vL+1111VV7SRAAgK2lAAYAaCK+8pWvfDdpM8+bNy8WLlwoPACgSVu4cGG8+uqrrg8BAMgLCmAAgCbgsssuG1RZWblPkmbO5XIxfvx44QEAifDAAw8k7qklrVu33veSSy7pLz0AALaGAhgAoAkYNWrUCUmbefbs2bFs2TLhAQCJsGzZsnjllVcSN/cJJ5xwovQAANgaCmAAgF3sn//5nzt37NjxiCTN3NjYGA888IDwAIBEGT9+fDQ0NCRq5k6dOn1h9OjRHaQHAMCnpQAGANjFfvSjH30tk8kk6rps2rRpsWrVKuEBAImyatWqeOGFFxI1cyaTKfzpT386SnoAAHxaCmAAgF1o0KBBpX369Plqkmaur6+PCRMmCA8ASKQJEyZEXV1dombu27fvV/r27VssPQAAPg0FMADALnTZZZcdXlRUVJGkmadOnRpr164VHgCQSOvXr48pU6YkauaioqLK3/zmN0dIDwCAT0MBDACwi2Sz2cy+++57UpJmrqurc/cvAJB4jz76aOLuAt5///1PymazGekBAPBJFMAAALvI1VdfPbSsrKx3kmaeMmVKbNiwQXgAQKJt2LAhnn/++UTNXFZW1ueqq67aS3oAAHwSBTAAwC7y5S9/+bgkzVtfXx8TJ04UHACQCo8//nji7gL+0pe+dLzkAAD4JApgAIBdYPTo0R3atm07IkkzT5s2LdatWyc8ACAVPvzww5g+fXqiZm7fvv2I0aNHd5AeAABbogAGANgFfvrTn47KZDKFSZm3vr4+HnnkEcEBAKnyyCOPRH19fWLmzWQyhT/96U+/JjkAALZEAQwAsJN16tQp26dPn6OTNLO7fwGANFq3bl1MmzYtUTP36dPnmE6dOmWlBwDAx1EAAwDsZFddddUB2Wy2dVLmbWxsjEmTJgmOVOvYsWN06OCJmgD5aNKkSdHY2JiYebPZbOurrrrqAMkBAPBxFMAAADvZiBEjvp6keV988cVYtWqV4Ei1Ll26xIUXXhinnXZadO3a1UIA8siqVavipZdecj0JAEBqKIABAHaiM844o3tlZeXeSZk3l8vFxIkTBUdeyGQyMXjw4PjVr34VY8aMcUcwQB55/PHHI5fLJWbeysrKvc8444zukgMA4KMogAEAdqJTTjnlqxGRScq8CxYsiPfee09w5JVMJhN77713XHjhhTFmzJho3769pQCk3HvvvRcLFy5M1B9X/3NdCQAA/4cCGABgJ+nVq1ezXr16fTlJM3v3L/nsr0XwBRdcECeffHK0bdvWUgBSLGnXPb169fpyr169mkkOAIB/pAAGANhJrrjiioOLiopaJmXeBN4JAztEYWFhDB8+PC688MIYPXp0VFZWWgpACi1YsCCWLVuWmHmLiopaXnnllYdIDgCAf6QABgDYSYYPH/6VJM2btHfhwY5WVFQUI0aMiEsuuSRGjx4dLVu2tBSAFMnlcvH4448naub99tvvK5IDAOAfKYABAHaC0aNHd6isrByalHnXrl0bL7/8suDgI/y1CL744ovjhBNOiBYtWlgKQEq89NJLsW7dusTMW1lZudfo0aM7SA4AgL+lAAYA2AlOP/30o5J07fXMM89EQ0OD4GALiouL47DDDouxY8fGqFGjoqyszFIAEq6hoSGeeeaZJI1c8D/XmQAA8P8vEq0AAGDHymazmX79+n05KfPW1tbGlClTBAefUnFxcYwcOTIuvfTSGDVqVJSWlloKQII9//zzUVtbm5h5+/Xr9+VsNpuRHAAAf6UABgDYwX7zm9/sWVJS0jkp886YMSOqq6sFB1uppKQkRo4cGZdcckkcffTRUVJSYikACVRdXR0zZ85M0p8/na+44orBkgMA4K8UwAAAO9gXvvCFLyVl1lwuF08//bTQ4DNo3rx5HHXUUXHJJZfEyJEjI5vNWgpAwjz11FORy+USM++RRx75ZakBAPBXCmAAgB1oyJAhpZ07dz4iKfO+/vrrsWLFCsHBdlBeXh6jRo2KSy+9VBEMkDArVqyI119/PTHzdunS5fD+/ft79AQAABGhAAYA2KHGjh17aGFhYWJeCOruX9j+KioqYtSoUXHxxRfH4YcfHkVFRZYC4LpouyosLGz+H//xHwdLDQCACAUwAMAOteeeex6ZlFnXrl0b8+bNExrsIK1atYrjjz8+LrroohgxYkQUFPh2DKApmzdvXqxZsyYx8+61115HSg0AgAgFMADADnPMMce0bt269b5Jmfe5556LxsZGwcEO1qZNmxg9enRcfPHFimCAJqyxsTGee+65JP35MvyYY45pLTkAAPykAQBgBznzzDMPz2Qyibje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FpafffbZvaQFAJA+CmAAgE9p//3375+EOV9//XVhAXmjvLw8Ro0aFf/+7/8eI0eOjGw2aymA67FP6fOf//xAaQEApI8CGADgU+rRo8fuTX3G2traePvtt4UF5J2KiooYNWpUXHzxxXH44Yc3+XdvAum2ePHiRLySo1evXoOkBQCQPgpgAIBPqXXr1k3+DoklS5ZEQ0ODsIC81apVqzj++OPj4osvjhEjRkRBgW97gZ2voaEhlixZ0uTnbNOmjQIYACCFfCcMAPApDBkypLR58+a9m/qcb775prAAIqJ169YxevToGDt2rCIYcF32MZo3b95n0KBBpdICAEgX3wEDAHwKp556av9MJtPkr53eeustYQH8jTZt2sTo0aPjvPPOi+HDhyuCAddlfyOTyRT84Ac/+Jy0AADSxXe+AACfwuDBg5v84/Hq6+tj0aJFwgL4CJ06dYqTTz45/u3f/i323nvvyGQylgLsUIsXL07Eqzn23HPPgdICAEgXBTAAwKfQpUuXAU19xnfeeSfq6uqEBbAFnTt3jjFjxiiCgR2utrY23n333SRc53oPMABAyiiAAQA+hZYtW/Zv6jN6/DPAp9elS5cYM2ZMnHvuuTF48GALAfL2+iwJ17kAAGwdBTAAwCcYPnx4eUlJSeemPqfHPwNsvV69esVpp50W55xzTvTvrwMB8u/6rLS0tPPw4cPLpQUAkB4KYACAT/Ctb31rt4ho8s8IXbx4sbAAtlGfPn3irLPOinPOOSd22203CwG2i4T8gl7m29/+dj9pAQCkhwIYAOAT7L777k2+CVi7dm1s2LBBWACfUZ8+feLss8+OM888M3r27GkhwGfy4Ycfxrp165r8nAMHDlQAAwCkSJEVAABsWadOnZr8D8TefvttQQFsRwMGDIgBAwbEggULYvz48bF06VJLAbb5Oq1Vq1audwEA2GkUwAAAn6CyslIBDJCnBgwYEP3794958+bFQw89FO+++66lAFtlyZIlsddeezX1613PvgcASBEFMADAFnTq1CnbvHnzXk19ziVLlggLYAfJZDIxePDg2GOPPeLll1+OBx98MFauXGkxQGqu05o3b967Xbt2RatXr66XGABA8nkHMADAFowZM6ZnJpPJNuUZGxsbPZoUYCfIZDKx9957x4UXXhhjxoyJ9u3bWwrwiZYuXRqNjY1NesaCgoLsqaee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k8nE7NmzY+LEibFmzRoNAXif/VNSzJo161kTAwBongTAAAC70O233/7KOeecszU/P78022sdMGBAtG/f3tWu0My9+uqrMWnSpFi1apVmALyPjh07xgEHHJCIWhsbG6u/8Y1v/NXUAACaJwEwAMAutHLlyob169fP6tat2+hsrzWVSsXhhx8ekyZNMjhohubMmROTJ0+OJUuWaAbAh3D44YdHKpVKRK3r16+fVVFR0WhqAADNU54WAADsWq+++mpirts77LDDDAyamTfffDP+/d//PX7yk58IfwE+pFQqFSNGjEhMva+88sozpgYA0Hw5AQwAsIvddNNNz5166qnV+fn5rbO91m7dukX//v1j4cKFBgc5btmyZfHYY4/F/PnzNQPgIzrggAOic+fOiai1sbFxy4033jjL1AAAmi8BMADALrZy5cqG8vLyGT179vx0Euo9+uijBcCQw5YvXx7jxo0T/AJ8wv1SUpSXlz9TXl7eYGoAAM2XABgAYDeYMWPGUxdccEEiAuAhQ4ZE69ato7q62uAgh6xcuTImTJgQc+fOjUwmoyEAH1ObNm3i0EMPTUy9zz777FOmBgDQvPkGMADAbvDVr371lYaGhk1JqLWgoCCOOOIIQ4McsW7duvj5z38ed955Z8yZM0f4C/AJjRw5MvLz8xNRa0NDw8abbrrpVVMDAGjenAAGANgNKisrm1atWjW9T58+5ySh3qOPPjqefPJJQREk2Pr16+Oxxx6L2bNn+3cZYBdJpVIxatSoxNS7cuXKadXV1WmTAwBo3pwABgDYTaZNm5aY6/c6duwYAwYMMDRIoA0bNsSvf/3r+Nd//dd49dVXhb8Au9CAAQOiY8eOian36aefftLUAAAQAAMA7CZf+9rX5tTX11ckpd6jjjrK0CBBqqqq4v77749vf/vb8eKLL0ZTU5OmAOxiRx55ZGJqra+vX/eNb3zjdVMDAMAV0AAAu0ltbW16xYoVT++///6fT0K9hx56aLRt2zaqqqoMD7LYli1bYsqUKfHcc8/F9u3bNQRgN2nbtm0MGTIkMfUuX778qdraWtc/AwDgBDAAwO70xz/+cUJSas3Pz4/jjjvO0CBL1dTUxKOPPhq33XZb/OUvfxH+Auxmxx57bOTn5yel3Myvf/3rCaYGAECEABgAYLe66667llZXV89PSr1HH310tGjRwuAgi7wd/H7jG9+IqVOnRn19vaYA7GYtWrSIo48+OjH1btmy5Y177rlnhckBABDhCmgAgN3u9ddfn3T44YcPSEKtxcXFcdhhh8XMmTMNDvayurq6ePrpp2PatGmxbds2DQHYgw477LAoKSlJTL3z5s17wtQAAHibE8AAALvZ9773vanpdLohKfWecMIJkUqlDA72koaGhpg6dWrceuut8fjjjwt/AfawVCoVJ5xwQmLqTafT27/73e8+ZXIAALzNCWAAgN1s+vTpWyoqKmZ26dIlER/Y7d69e/Tv3z/efPNNw4M9qKGhIaZNmxZPPfVUVFdXawjAXnLAAQdE9+7dE1NvRUXFczNmzPAXBwAA/+QEMADAHjBr1qxEXcuXpFMvkHTpdDqee+65uP322+PRRx8V/gLsZccff3yi6p0xY8YkUwMA4J2cAAYA2AO++tWvvnT66adXFRYWtk1CvQMHDoyOHTvGhg0bDA92k3Q6HbNmzYrJkyfHxo0bNQQgC3Ts2DEGDhyYmHobGhoqb7755pdMDgCAd3ICGABgDygvL29YsWLF1MRsEvPy4sQTTzQ42A3S6XS8+OKL8Z3vfCfuv/9+4S9AFjnppJMiLy85r8tWrFgxpaKiotHkAAB4JwEwAMAe8qtf/erRiMgkpd6jjjoqysrKDA52kUwmE6+++mp873vfi1//+texdu1aTQHIImVlZXHUUUcl6q+W//7v//6zyQEA8G4CYACAPeQ///M/l1dWVv4tKfUWFhbGMcccY3CwC7wd/P785z+PNWvWaAhAFjruuOOioCA5X0urqqqa/dOf/nS1yQEA8G4CYACAPeill14al6R6jzvuuCgqKjI4+JjmzJkTd911V/z85z+P1au9owfIVkVFRYn7xbcXXnhhnMkBALAzBVoAALDnjB079pkFCxZUFhYWtktCvSUlJXHEEUfE9OnTDQ8+gjfffDPGjx8fb731lmYAJMCRRx4ZJSUliam3oaFh0zXXXPOsyQEAsDMCYACAPai8vLxh6dKlE/v3739xUmo+8cQT49lnn410Om2A8AEWLVoUjz32WCxevFgzABIiLy8vTjzxxETVvGTJkifKy8sbTA8AgJ3ucbUAAGDP+u1vfzsxIjJJqbdjx44xdOhQg4P3sXz58rj77rvjRz/6kfAXIGGGDRsWHTp0SFLJmd/85jePmxwAAO9FAAwAsIf953/+5/JNmza9kqSaTz/99EilUoYH77Jy5cr4yU9+Et///vdj/vz5GgKQMHl5eXHGGWckquZNmza9fM8996wwPQAA3osroAEA9oKXXnpp/KmnnnpYUurt2rVrDBkyJGbPnm14EBHr1q2L8ePHx+zZsyOTyWgIQEINHTo0OnfunKiaX3jhhQkmBwDA+xEAAwDsBZdffvkzS5YsWVdUVNQlKTWfccYZ8be//U3YRbO2fv36eOyxxwS/ADkglUrF6aefnqia6+rq1lx22WXTTQ8AgPcjAAYA2AsqKyub5s+f/8ihhx56dVJq7tatm1PANFsbNmyIxx9/PF555ZVoamrSEIAc8KlPfSq6du2aqJrfeOONcdXV1WnTAwDg/fgGMADAXvL1r399XDqdrktSzb4FTHNTVVUV999/f3z729+OF198UfgLkCNSqVR8+tOfTlTN6XS69pvf/OZjpgcAwAdxAhgAYC+ZMWNG9Zo1a/7Ss2fPxLx97N69ewwcODDmzJljgOS0LVu2xIQJE+KFF16IxsZGDQHIMYceemh069YtUTWvXr36qRkzZlSbHgAAH8QJYACAvejXv/71HyMiUR8SPeuss5wCJmdt27YtHn300bjtttviueeeE/4C5KC8vLwYM2ZM0srO/OpXv/qT6QEA8KH2vFoAALD3fP/733+rqqoqUR/V7dGjR3zqU58yPHJKfX19TJ06Nb71rW/F1KlTo76+XlMActSIESOiS5cuiap506ZNf73rrruWmh4AAB+GABgAYC975plnHkpazWeccUbk5dlKkjvmzZsXjz76aGzdulUzAHJYQUFBnH766Ymre9q0aQ+aHgAAH5a3dgAAe9nYsWNn1tfXr01SzZ07d47DDjvM8ACARBk5cmR06NAhUTXX1dWtHjt27POmBwDAhyUABgDYyyorK5tee+21Pyat7jPPPDMKCgoMEABIhBYtWiTy9O/s2bP/UF1dnTZBAAA+LAEwAEAWuOqqqyY0NjZWJanm9u3bx9FHH214AEAiHHfccdGmTZtE1dzQ0LDxiiuumGh6AAB8FAJgAIAssGDBgrqFCxc+lrS6R48eHYWFhQYIAGS1li1bxsknn5y4uhcuXDhu6dKl200QAICPQgAMAJAlvv71r/8pnU7XJqnmtm3bximnnGJ4AEBWO+2006K0tDRRNTc1NdV+7Wtfe8j0AAD4qATAAABZ4umnn968fPnyxF3xN3r06GjXrp0BAgBZqUOHDnH88ccnru5ly5ZNmD59+hYTBADgoxIAAwBkkbvvvvtPmUymKUk1FxYWxumnn254AEBWOvPMMxP3yYpMJtN41113/dH0AAD4OATAAABZ5Be/+MWatWvXTkta3UcccUT06tXLAAGArNK7d+847LDDEld3eXn5X+6///51JggAwMchAAYAyDIPP/zwn5JWcyqVijPPPNPwAICsMmbMmEilUomr+8EHH/yT6QEA8HEJgAEAsszXv/71NzZs2DAraXUPHDgwDj74YAMEALLCoEGDYsCAAYmru6KiYuatt966wAQBAPi4BMAAAFlo3Lhxv01i3WPGjIm8PFtMAGDvysvLizFjxiSy9j//+c+/NUEAAD7RflgLAACyz/XXXz+nqqrqr0mru1evXnHUUUcZIACwVx1zzDHRvXv3xNW9adOmV2666aa5JggAwCchAAYAyFJ/+tOf7k1i3WPGjInS0lIDBAD2ijZt2sRZZ52VyNofeOCBe00QAIBPSgAMAJClbrrpprlJPAVcXFwcZ555pgECAHvFWWedFS1btkxc3Zs2bXrl5ptvnmeCAAB8UgJgAIAsNm7cuF8lse5Ro0ZF7969DRAA2KP69OkTI0eOTGTtjz322K9MEACAXUEADACQxcaOHTu7qqrqb0mrO5VKxfnnnx+pVMoQAYA9tv/4/Oc/n8j9R2Vl5d+uueaav5kiAAC7ggAYACDLTZ069bdJrLtv374xZMgQAwQA9ojDDjsssTeQTJ48+TcmCADAriIABgDIcpdeeumLVVVVryax9s9//vNRXFxsiADAblVaWhrnn39+Imuvqqr66+WXX/6SKQIAsKsIgAEAEuChhx76WRLrLisri9NPP90AAYDd6qyzzoqSkpIklp753e9+91MTBABgVxIAAwAkwA033DB3w4YNs5JY+3HHHRd9+vQxRABgt+jbt28cddRRiay9oqJi1te//vU3TBEAgF1JAAwAkBA///nPfxoR6aTVnUql4vOf/3zk5dl6AgC7Vn5+flx00UWRSqWSWH76F7/4xX+bIgAAu5q3cAAACXHHHXe8tW7duulJrL13795xzDHHGCIAsEudcMIJ0b1790TWXl5e/pc77rjjLVMEAGBXEwADACTI3XfffW8mk2lKYu1nnXVWtG3b1hAB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onv37vEv//IvccABBzSrdWcymaYnnnji9s997nPPeAoAAODDEQADAJBYDz/88NJjjjlmY+/evY+KiGZzFKq0tDSGDx8eq1evjvXr13sQAHLcwIED45prrol27do1t6VnZsyY8YOzzjprqqcAAAA+PAEwAACJdv/99795zDHHVO6zzz5HRDMKgVu0aBGHHXZYtGzZMhYuXBjpdNrDAJBjCgoK4pxzzonzzz8/WrRo0dyWn37uuefuOuWUUyZ4EgAA4KMRAAMAkHi///3v5w8bNmxF3759j2lO10GnUqno27dvDB06NBYvXhxbtmzxMADkiJ49e8YNN9wQgwcPblbf+434x7XPU6ZM+fbpp58+2ZMAAAAfnQAYAICc8OCDDy4ZNmzYin79+jWrEDgionXr1nHEEUdEfX19LF261MMAkGCpVCpOOOGEuOKKK6JNmzbNbv07wt9vnXPOOX/xNAAAwMcjAAYAIGc89NBDS4YNG7a8X79+xza3EDg/Pz8OPvjg6NWrV8yfPz8aGho8EAAJU1JSEpdffnmccMIJkZ+f3+zWn8lkGp944olvffazn53maQAAgI9PAAwAQE556KGHlo4cOXJdnz59RqWa252ZEdG1a9cYNmxYLFu2LCorKz0QAAnRt2/fuO6662K//fZrluvPZDLpp59++rvnnHPO054GAAD4ZATAAADknD/96U+LDj300KX7779/s7sOOiKiuLg4jjzyyCgpKYk333wz0um0hwIgSxUUFMRnP/vZuPDCC6OkpKRZ9iCdTjc88sgjt5x//vnTPREAAPDJCYABAMhJDz/88NId3wQelUqlmt09mqlUKvr06RMHH3xwLFy4MLZt2+ahAMgynTt3jrFjx8bQoUOjGV5aERH/CH+feOKJ2y+88MLnPBEAALBrCIABAMhZDz300JIePXq8NmjQoGPz8vJaNMcetG3bNkaNGhVNTU2xZMkSDwVAFkilUjF69Oi48soro0OHDs22D01NTdt++9vf/stll132oqcCAAB2HQEwAAA5bdKkSeXdu3efM3jw4GYbAufn58eAAQOiV69esWDBgti+fbsHA2Avad26dVx66aVx/PHHR35+frPtQ2NjY/WvfvWrf7nuuute81QAAMCuJQAGACDnTZ48eW1jY+OMI4444uiCgoKS5tqHrl27xqhRo2Lbtm2xcuVKDwbAHpRKpWLUqFExduzY6NWrV7PuRX19/fo77rjjK9/61rcWejIAAGDXEwADANAsPP/881UbNmx45rjjjjuqsLCwrLn2obCwMAYNGhT77bdfLF68OGpraz0cALtZ+/bt44orrogTTzwxCgub9/uU2tralTfffPPVP/nJT1Z7MgAAYPcQAAMA0Gz87W9/27p27doZJ5xwwsjCwsK2zbkXnTp1ipEjR0Z1dbXTwAC70ciRI+Pqq6+OHj16NPte1NTULL/hhhuu/e1vf7vOkwEAALuPABgAgGbltdde2zpv3rynTznllKFFRUWdmnMvCgsL49BDD4399tsvFi1a5DQwwC709qnfk08+udmf+o2I2Lx587yLL774unHjxm30dAAAwO71fgFwat9zYsTOftC4LmLjq610DwCAxOrVq1fhs88++69du3Y9QTciGhoaYurUqTF58uRobGzUEICPqaCgIE499dQYPXq04HeH8vLyp4499tjvrly5skE3AABg9+swrDYKuuz8ZwJgAAByWuvWrfNeeumlm/fdd9+zdeMfVq9eHffff38sWbJEMwA+ov322y8uuugi1z2/w8KFC38/fPjwnzY0NGR0AwAA9gwBMAAAzd7zzz9/8aGHHnp1RKR0IyKTycTMmTPjz3/+c9TV1WkIwAcoKSmJ8847L0aMGBGplL9Kdki//PLL9xx77LEPagUAAOxZ7xcA+wYwAADNwn333Tfn+OOP39yrV6/DQwgcqVQqevfuHcOHD49169ZFRUWFhwTgPRxyyCExduzY6N+/v/B3h0wm0/jMM8/828knnzxONwAAYM97v28AC4ABAGg2fve7370xePDgJf369Ts6lUrl60hEcXFxjBgxInr06BFLly6N2tpaTQHYoUOHDvGFL3whzjzzzCguLtaQHZqammoeeOCBWz73uc9N1w0AANg7BMAAALDDww8/vKygoOC54cOHH1FQUFCqI//QrVu3OO6446K0tDQWL14cTU1NmgI0Wy1btoxzzjknLr300ujevbuGvENtbe2K22677arbbrvtDd0AAIC9RwAMAADv8Oyzz25avHjx0yeddNKQoqKiTjryD3l5edGnT58YOXJkbN26NVatWqUpQLNz+OGHx1e+8pUYMGBA5OXlacg7VFVV/e3CCy+8/oEHHvDdAAAA2MsEwAAA8C7z58+vefbZZ58+44wz+hcX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OigOOOCAKCoq0pQs0djYuGXmzJk/PvPMMyc2NDS4XgAAAPjQBMAAAJADjjzyyNY/+9nPrujbt++5EZGnI9mluro6Fi5cGPPnz4958+ZFZWWlprBXtGvXLg455JAYMGBA9O/fP1q39nsjWSj91ltv/fmqq676xaxZs6q1AwAA+KgEwAAAkEN++ctfjhgzZsyNrVq16q0b2SmdTsfKlStj0aJFsXDhwli8eHFs27ZNY9gtSkpKol+/ftG/f//Yf//9o1evXpGX53dEslVNTc3yRx999EdXXnnlK7oBAAB8XAJgAADIMd26dSt8+OGHPzd48ODL8vPzbdyzXCaTiTVr1sTChQtj0aJFsWjRotiyZYvG8LGUlZVF//79/xn6du/ePVKplMZkuaampprXXnvtV2PGjHmgoqKiUUcAAIBPQgAMAAA56rjjjiv7r//6r8tdC508mzdvjuXLl8eKFSti+fLlsXjx4qipqdEY/pfi4uLo169f9O7dO/bZZ5/Yd999o6ysTGMSJJPJpJcsWfLn66677pfTp0/3mx8AAMAuIQAGAIAc99Of/nTIueeee3NpaWlf3UimxsbGWLlyZSxdujSWLVsWy5cvj3Xr1kUmk9GcZiKVSkWXLl1in332iT59+kSfPn2iV69eUVBQoDkJtXXr1sUPPvjgj6699tq/6wYAALArCYABAKAZaNeuXf64cePOGTp06BUFBQWtdST56uvrY+XKlf88KbxixYpYu3ZtpNNpzUm4vLy86Nq1a+yzzz7//KdXr17RsmVLzckBjY2NW/7617/+4pxzznm0srKySUcAAIBdTQAMAADNyIknntjmnnvuuXzfffcdk0qlHB3MMdu3b481a9bEmjVrYu3atbF27dooLy+PDRs2CIazUF5eXnTs2DG6desWXbt2jW7dukW3bt2iR48eUVhYqEE5JpPJNC5ZsuRR1z0DAAC7mwAYAACaoa9+9av7Xnfdddd16NDhCN3IfY2Njf8MhNetWxfr1q2LioqKWLduXWzbtk2DdrPS0tLo3LnzP//p0qVLdO3aNbp27eoK52Ziw4YNM//rv/7rxz/60Y+W6wYAALC7CYABAKAZ++UvfznirLPOuq64uNj3gZupmpqaWL9+/T//qaioiMrKyqisrIxNmzZFY2OjJn2AgoKCaN++fbRr1y7at28fHTt2jC5dukSnTp2ic+fOUVxcrEnN1NatW98aP378PVdcccXLugEAAOwpAmAAAGjm2rVrl//ggw+eOWLEiCsLCwvb6gjvtHnz5n+GwZs2bYrKysqorq6OLVu2xJYtW6K6ujqqq6sjk8nk3NpTqVS0bt06WrduHWVlZdGmTZsoLS39X2Fvu3btok2bNh4U/peGhobKl1566efnnHPO+OrqavevAwAAe5QAGAAAiIiIoUOHFt97770XHHjggRfk5+c7ssiHlk6n/xkEV1dXR01Nzfv+k8lkora2NtLpdNTX10dTU1PU1dXt0u8U5+XlRcuWLSM/Pz+KiooiLy8vWrVqFalUKoqLi3f6T0lJSbRq1eqfgW9paWnk5eUZMB9aU1NTzYIFC/745S9/+Y+zZ8+u0REAAGBvEAADAAD/y2mnndb2rrvuurRPnz5n5+XlFeoIe9LbgfDbtm/f/r7XUBcUFESLFi3++b/fDnxhT8pkMg1LliwZd8stt/xq0qRJVToCAADsTQJgAABgp0477bS2d95554X777//5wTBAP9XJpNpWLhw4QO33nrrHwS/AABAtni/ADi/7UHRc2c/SG+LqC33/gcAAHLZokWL6u69995X0un0swcddFCnkpKS3roC8A8VFRUz/7//7/+77aKLLpq6aNGiOh0BAACyRXH3xsgr3fnPBMAAAEDMnDmz8u67736qqalpWr9+/Ypbt27dN5VKpXQGaG4ymUx6zZo1U+65555/Peeccx6cOXNmpa4AAADZRgAMAAB8KDNnzqz88Y9//Gw6nZ4uCAaak7eD37vvvvtfzz///McEvwAAQDYTAAMAAB+JIBhoLgS/AABAEgmAAQCAj+XtILisrOyFvn37diwuLu4VEYJgIBdkKioqnrv33nu/PWbMmEcEvwAAQJK8XwCc2vecGLGzHzSui9j4aivdAwAA/unqq6/u8ZWvfOX8Pn36nJWXl9dCR4CkSafT9UuXLh3/X//1Xw/84he/WKMjAABAEnUYVhsFXXb+MwEwAADwkZ1xxhntb7/99rMPPPDA8/Pz81vrCJDtmpqaqhcsWPDgd77znUcmTpzotC8AAJBoAmAAAGC3GD58eMkPf/jDzwwePPjioqKijjoCZJv6+voNr7322u9vvPHGx2fPnl2jIwAAQC4QAAMAALvV0KFDi++5556zDjnkkPOKioq66giwt9XV1a19/fXXH7z++uvHC34BAIBcIwAGAAD2iFatWuXdc889w0455ZTzO3bseJSOAHtYZsOGDbOmTJny4PXXX/9qbW1tWksAAIBcJAAGAAD2uH/913/tf/7555/dq1ev0/Ly8lroCLC7pNPp+pUrV05+4IEHHvnOd76zSEcAAIBcJwAGAAD2mjPOOKP97bfffvYBBxzw2YKCgjY6AuwqjY2NVW+++eafv/e97z06YcKETToCAAA0FwJgAABgrxs+fHjJ97///dGDBg0aU1paur+OAB9XdXX1wtdee+3Rr371q1Nfe+21Wh0BAACaGwEwAACQVb761a/ue8EFF3y6b9++ZxUUFLTWEeCDNDY2bnnrrbfG/+EPf5j4ox/9aLmOAAAAzZkAGAAAyEpDhw4t/sEPfnDy4MGDz27dunV/HQHerbq6+s2XX375weuuu+7ppUuXbtcRAAAAATAAAJDlCgsLU3ffffeQ0aNHn9G1a9fj8vLyinQFmq90Ol1XXl4+bcqUKROuvfbav+sIAADA/yYABgAAEqNPnz4t/v3f/33UyJEjz2rfvv2nIiKlK9AsZDZt2vTXF1544bGvfe1rzzntCwAA8N4EwAAAQCJddNFFXa6++uqTDzzwwLNbtmzZTUcg99TV1a1ZsGDBuJ/+9KdP3n///et0BAAA4IMJgAEAgETr1q1b4d13333k4YcffmqHDh2OyMvLK9QVSK50Ot2wcePGWbNmzZp8/fXXz6qoqGjUFQAAgA9PAAwAAOSMo48+uvWtt956/CGHHHJKu3btBkdEnq5AIqQrKytfmzdv3uQ777xz+owZM6q1BAAA4OMRAAMAADnpuOOOK/vGN75x/CGHHHJa27ZtB4bvBUO2yVRVVc2dN2/epO9///vTpk+fvkVLAAAAPjkBMAAAkPNuu+22vmedddZJffr0Oa5Vq1a9dQT2ntra2uXLly+f/uijjz51xx13vKUjAAAAu5YAGAAAaFa+9KUvdbv44ouP7t+//wlOBsMekamqqpq7cOHCv/z+97+fcd9995VrCQAAwO4jAAYAAJqtSy65pOtll112jDAYdrl0VVXVvIULF/7lV7/61bO/+93v1moJAADAniEABgAAiIirr766x/nnnz9q//33P7JNmzZDUqlUga7Ah5fJZBoqKyv/vnjx4uf+9Kc/zbr33ntX6woAAMCeJwAGAAB4l379+hV97WtfGzRy5MhRPXv2PLaoqKizrsD/VV9fv37VqlXPvPDCC8/9+7//+5zFixfX6woAAMDeJQAGAAB4H61bt8678847Bx599NFHde/efURpaen+4apomq/M1q1bF69Zs+bF5557btY3v/nNOdXV1WltAQAAyB4CYAAAgI9g8ODBrcaOHXvI8OHDD+vevfvw1q1bHxACYXJXprq6+s01a9a88sorr7z8k5/8ZN5rr71Wqy0AAADZSwAMAADwCVx//fX7nHHGGYf169dvePv27Yfm5+e31hWSrLGxsXrjxo2vvvXWWy+PHz/+lR//+McrdQUAACA5BMAAAAC70Je//OUe55xzzvA+ffoM7tix45CioqKuukI2q6+vX7t27doXFy9ePGfixImv3Xvvvat1BQAAILkEwAAAALvRl7/85R6f+cxnBvfr129Qly5dDm/ZsqVAmL2qrq5u7bp16wS+AAAAOUoADAAAsIe0atUq75prrtnn2GOPPXi//fY7uH379oeUlpb2TaVS+brDbpKuqalZtnHjxnlvvfXW3GeffXbef/3Xfy2vra1Naw0AAEBuEgADAADsRQceeGDLq6+++oAhQ4Yc3LNnz4Pbtm17sGuj+biampqqq6qqXi8vL583Z86ceb/85S/nvfjii1t1BgAAoPkQAAMAAGSZoUOHFn/xi1/cf9CgQQf26NHjwHbt2h3YqlWr3qlUKk932CFdU1OzvLKycsHq1asXzJkzZ8Gf//znJTNmzKjWGgAAgOZNAAwAAJAAxx13XNkFF1xw4MEHH3xA165dDywtLd23pKRkn1QqVag7uS2TyTRs27ZtRXV19dJ169YtfOONNxZOmDBh4YQJEzbpDgAAAO8mAAYAAEiw8847r+OJJ57Yp3///vt16dKlT5s2bfZr3bp1v/z8/GLdSZampqaa6urqxZs3b16ybt26pQsXLlzy9NNPL33ooYc26A4AAAAflgAYAAAgx7Rr1y7/kksu6TFkyJCe++67b89OnTr1Kisr61VcXNyzZcuW3VKpVL4u7R2ZTKaprq6uvKamZtWWLVtWVlRUrFy6dOnK2bNnr7r//vvXVFZWNukSAAAAn4QAGAAAoBnp1KlTwec+97luQ4cO7bnPPvv0aNeuXafWrVt3Li4u7tqyZcvORUVFnfLy8lro1MeTTqe319fXr6+rq6uoqalZW11dvb6y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AACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoMY3JP//9K8My551lzpAk293a7QAAAAAAAAD8iIw3r+SL7TpPxuSt4/ibJJuz20QDBgAAAAAAAHhzrJPp6NvHYcyyjLl7dJTPbl/Jp6sPLufSsM+5ec7q5YOrF0OeP/SVaAAAAAAAAIA3weH7u6zfm79dWDIMSw6225w785vsx3XyzasOby5ssz69c4sAAAAAAAAAr9n69C6bC9sT93a7rKdnORin5Otxynzi1JQcfiwCAwAAAAAAALxO69O7HH68TaaT98cp85R8vbp3Nfszv8q0LHn7xMF1sjk/ZzUPmZ/MmWefhAYAAAAAAAD4oayPdjn7223Gn7x6ZrXPnetX8mBKkpv3cufDd/Pufn5FL56SzcVtNheT3dNt8tQlAwAAAAAAAHyv1sm0ySv/9XtsNWZ3I/lHkgzHi7/4XY7WYz5yiwAAAAAAAAA/Ivtcv/3nPEyS1fHa42t5+vNLyX7JoRsCAAAAAAAAePPt1/nbV3/KvePn1Xc371/NYxEYAAAAAAAA4M0yTHk2rvNo2WdzvHZqzN9v/SF3vju3evng/at5fPDLPDu1yuGyZHSVAAAAAAAAAK/XOGe4ueSvZ4e8M8xZbVe5ceuPufvy3Oqkw4+v5emDX+fuuTlLhhwsEYIBAAAAAAAAXpclGR8OuXP0TR4cPM/9z/+SRyfNDf/1TZezOp/87KdjzizJZkhO7edMy/w/nAUAAAAAAADg/zaMWcZkP8/ZLsmLacr2/MV8+cnvs/tP5/4FmLjAq1ifcioAAAAASUVORK5CYII="; diff --git a/dist/core-interfaces.d.ts b/dist/core-interfaces.d.ts new file mode 100644 index 000000000..ee758d05a --- /dev/null +++ b/dist/core-interfaces.d.ts @@ -0,0 +1,2233 @@ +/** + * PptxGenJS Interfaces + */ +import { CHART_NAME, PLACEHOLDER_TYPE, SHAPE_NAME, SLIDE_OBJECT_TYPES, TEXT_HALIGN, TEXT_VALIGN, WRITE_OUTPUT_TYPE } from './core-enums'; +/** + * Coordinate number - either: + * - Inches (0-n) + * - Percentage (0-100) + * + * @example 10.25 // coordinate in inches + * @example '75%' // coordinate as percentage of slide size + */ +export type Coord = number | `${number}%`; +export interface PositionProps { + /** + * Horizontal position + * - inches or percentage + * @example 10.25 // position in inches + * @example '75%' // position as percentage of slide size + */ + x?: Coord; + /** + * Vertical position + * - inches or percentage + * @example 10.25 // position in inches + * @example '75%' // position as percentage of slide size + */ + y?: Coord; + /** + * Height + * - inches or percentage + * @example 10.25 // height in inches + * @example '75%' // height as percentage of slide size + */ + h?: Coord; + /** + * Width + * - inches or percentage + * @example 10.25 // width in inches + * @example '75%' // width as percentage of slide size + */ + w?: Coord; +} +/** + * Either `data` or `path` is required + */ +export interface DataOrPathProps { + /** + * URL or relative path + * + * @example 'https://onedrives.com/myimg.png` // retrieve image via URL + * @example '/home/gitbrent/images/myimg.png` // retrieve image via local path + */ + path?: string; + /** + * base64-encoded string + * - Useful for avoiding potential path/server issues + * + * @example 'image/png;base64,iVtDafDrBF[...]=' // pre-encoded image in base-64 + */ + data?: string; +} +export interface BackgroundProps extends DataOrPathProps, ShapeFillProps { + /** + * Color (hex format) + * @deprecated v3.6.0 - use `ShapeFillProps` instead + */ + fill?: HexColor; + /** + * source URL + * @deprecated v3.6.0 - use `DataOrPathProps` instead - remove in v4.0.0 + */ + src?: string; +} +/** + * Color in Hex format + * @example 'FF3399' + */ +export type HexColor = string; +export type ThemeColor = 'tx1' | 'tx2' | 'bg1' | 'bg2' | 'accent1' | 'accent2' | 'accent3' | 'accent4' | 'accent5' | 'accent6'; +export type Color = HexColor | ThemeColor; +export type Margin = number | [number, number, number, number]; +export type HAlign = 'left' | 'center' | 'right' | 'justify'; +export type VAlign = 'top' | 'middle' | 'bottom'; +/** + * Embedded font entry + * Represents a font that is embedded in the PPTX file + */ +export interface EmbeddedFont { + /** + * Font typeface name (e.g., "Manrope SemiBold") + */ + fontName: string; + /** + * Base64-encoded regular font data (.fntdata format) + */ + regular?: string; + /** + * Base64-encoded bold font data (.fntdata format) + */ + bold?: string; + /** + * Base64-encoded italic font data (.fntdata format) + */ + italic?: string; + /** + * Base64-encoded bold-italic font data (.fntdata format) + */ + boldItalic?: string; +} +export interface BorderProps { + /** + * Border type + * @default solid + */ + type?: 'none' | 'dash' | 'solid'; + /** + * Border color (hex) + * @example 'FF3399' + * @default '666666' + */ + color?: HexColor; + /** + * Border size (points) + * @default 1 + */ + pt?: number; +} +export interface HyperlinkProps { + _rId: number; + /** + * Slide number to link to + */ + slide?: number; + /** + * Url to link to + */ + url?: string; + /** + * Hyperlink Tooltip + */ + tooltip?: string; +} +export interface ShadowProps { + /** + * shadow type + * @default 'none' + */ + type: 'outer' | 'inner' | 'none'; + /** + * opacity (percent) + * - range: 0.0-1.0 + * @example 0.5 // 50% opaque + */ + opacity?: number; + /** + * blur (points) + * - range: 0-100 + * @default 0 + */ + blur?: number; + /** + * angle (degrees) + * - range: 0-359 + * @default 0 + */ + angle?: number; + /** + * shadow offset (points) + * - range: 0-200 + * @default 0 + */ + offset?: number; + /** + * shadow color (hex format) + * @example 'FF3399' + */ + color?: HexColor; + /** + * whether to rotate shadow with shape + * @default false + */ + rotateWithShape?: boolean; +} +export interface GradientStop { + /** + * Stop color (hex format or theme color) + * @example 'FF0000' // red + */ + color: Color; + /** + * Stop position (0-100) + */ + position: number; + /** + * Transparency/alpha at this stop (0-100) + * 0 = fully opaque, 100 = fully transparent + */ + transparency?: number; +} +export interface GradientFillProps { + /** + * Gradient type + */ + type: 'linear' | 'radial'; + /** + * Gradient angle in degrees (for linear gradients) + * PowerPoint uses 0° = right, 90° = down, 180° = left, 270° = up + */ + angle?: number; + /** + * Radial gradient position (for radial gradients) + * x and y are percentages (0-100) where the gradient center is located + * @example { x: 100, y: 100 } // gradient center at bottom-right + * @example { x: 50, y: 50 } // gradient center at center (default) + * @example { x: 0, y: 0 } // gradient center at top-left + */ + radialPosition?: { + x: number; + y: number; + }; + /** + * Gradient stops + */ + stops: GradientStop[]; +} +export interface ShapeFillProps { + /** + * Fill color + * - `HexColor` or `ThemeColor` + * @example 'FF0000' // hex color (red) + * @example pptx.SchemeColor.text1 // Theme color (Text1) + */ + color?: Color; + /** + * Transparency (percent) + * - MS-PPT > Format Shape > Fill & Line > Fill > Transparency + * - range: 0-100 + * @default 0 + */ + transparency?: number; + /** + * Fill type + * @default 'solid' + */ + type?: 'none' | 'solid' | 'gradient'; + /** + * Gradient fill configuration (used when type is 'gradient') + */ + gradient?: GradientFillProps; + /** + * Transparency (percent) + * @deprecated v3.3.0 - use `transparency` + */ + alpha?: number; +} +export interface ShapeLineProps extends ShapeFillProps { + /** + * Line width (pt) + * @default 1 + */ + width?: number; + /** + * Dash type + * @default 'solid' + */ + dashType?: 'solid' | 'dash' | 'dashDot' | 'lgDash' | 'lgDashDot' | 'lgDashDotDot' | 'sysDash' | 'sysDot'; + /** + * Custom dash pattern - array of dash/space pairs + * Each element has `d` (dash length) and `sp` (space length) in 1/100000 of line width + * When specified, this overrides dashType + */ + custDash?: Array<{ + d: number; + sp: number; + }>; + /** + * Begin arrow type + * @since v3.3.0 + */ + beginArrowType?: 'none' | 'arrow' | 'diamond' | 'oval' | 'stealth' | 'triangle'; + /** + * End arrow type + * @since v3.3.0 + */ + endArrowType?: 'none' | 'arrow' | 'diamond' | 'oval' | 'stealth' | 'triangle'; + /** + * Dash type + * @deprecated v3.3.0 - use `dashType` + */ + lineDash?: 'solid' | 'dash' | 'dashDot' | 'lgDash' | 'lgDashDot' | 'lgDashDotDot' | 'sysDash' | 'sysDot'; + /** + * @deprecated v3.3.0 - use `beginArrowType` + */ + lineHead?: 'none' | 'arrow' | 'diamond' | 'oval' | 'stealth' | 'triangle'; + /** + * @deprecated v3.3.0 - use `endArrowType` + */ + lineTail?: 'none' | 'arrow' | 'diamond' | 'oval' | 'stealth' | 'triangle'; + /** + * Line width (pt) + * @deprecated v3.3.0 - use `width` + */ + pt?: number; + /** + * Line size (pt) + * @deprecated v3.3.0 - use `width` + */ + size?: number; +} +export interface TextBaseProps { + /** + * Horizontal alignment + * @default 'left' + */ + align?: HAlign; + /** + * Bold style + * @default false + */ + bold?: boolean; + /** + * Add a line-break + * @default false + */ + breakLine?: boolean; + /** + * Add standard or custom bullet + * - use `true` for standard bullet + * - pass object options for custom bullet + * @default false + */ + bullet?: boolean | { + /** + * Bullet type + * @default bullet + */ + type?: 'bullet' | 'number'; + /** + * Bullet character code (unicode) + * @since v3.3.0 + * @example '25BA' // 'BLACK RIGHT-POINTING POINTER' (U+25BA) + */ + characterCode?: string; + /** + * Indentation (space between bullet and text) (points) + * @since v3.3.0 + * @default 27 // DEF_BULLET_MARGIN + * @example 10 // Indents text 10 points from bullet + */ + indent?: number; + /** + * Number type + * @since v3.3.0 + * @example 'romanLcParenR' // roman numerals lower-case with paranthesis right + */ + numberType?: 'alphaLcParenBoth' | 'alphaLcParenR' | 'alphaLcPeriod' | 'alphaUcParenBoth' | 'alphaUcParenR' | 'alphaUcPeriod' | 'arabicParenBoth' | 'arabicParenR' | 'arabicPeriod' | 'arabicPlain' | 'romanLcParenBoth' | 'romanLcParenR' | 'romanLcPeriod' | 'romanUcParenBoth' | 'romanUcParenR' | 'romanUcPeriod'; + /** + * Number bullets start at + * @since v3.3.0 + * @default 1 + * @example 10 // numbered bullets start with 10 + */ + numberStartAt?: number; + /** + * Bullet code (unicode) + * @deprecated v3.3.0 - use `characterCode` + */ + code?: string; + /** + * Margin between bullet and text + * @since v3.2.1 + * @deplrecated v3.3.0 - use `indent` + */ + marginPt?: number; + /** + * Number to start with (only applies to type:number) + * @deprecated v3.3.0 - use `numberStartAt` + */ + startAt?: number; + /** + * Number type + * @deprecated v3.3.0 - use `numberType` + */ + style?: string; + }; + /** + * Text color + * - `HexColor` or `ThemeColor` + * - MS-PPT > Format Shape > Text Options > Text Fill & Outline > Text Fill > Color + * @example 'FF0000' // hex color (red) + * @example pptx.SchemeColor.text1 // Theme color (Text1) + */ + color?: Color; + /** + * Font face name + * @example 'Arial' // Arial font + */ + fontFace?: string; + /** + * Font size + * @example 12 // Font size 12 + */ + fontSize?: number; + /** + * Text highlight color (hex format) + * @example 'FFFF00' // yellow + */ + highlight?: HexColor; + /** + * italic style + * @default false + */ + italic?: boolean; + /** + * language + * - ISO 639-1 standard language code + * @default 'en-US' // english US + * @example 'fr-CA' // french Canadian + */ + lang?: string; + /** + * Add a soft line-break (shift+enter) before line text content + * @default false + * @since v3.5.0 + */ + softBreakBefore?: boolean; + /** + * tab stops + * - PowerPoint: Paragraph > Tabs > Tab stop position + * @example [{ position:1 }, { position:3 }] // Set first tab stop to 1 inch, set second tab stop to 3 inches + */ + tabStops?: Array<{ + position: number; + alignment?: 'l' | 'r' | 'ctr' | 'dec'; + }>; + /** + * text direction + * `horz` = horizontal + * `vert` = rotate 90^ + * `vert270` = rotate 270^ + * `wordArtVert` = stacked + * @default 'horz' + */ + textDirection?: 'horz' | 'vert' | 'vert270' | 'wordArtVert'; + /** + * Transparency (percent) + * - MS-PPT > Format Shape > Text Options > Text Fill & Outline > Text Fill > Transparency + * - range: 0-100 + * @default 0 + */ + transparency?: number; + /** + * underline properties + * - PowerPoint: Font > Color & Underline > Underline Style/Underline Color + * @default (none) + */ + underline?: { + style?: 'dash' | 'dashHeavy' | 'dashLong' | 'dashLongHeavy' | 'dbl' | 'dotDash' | 'dotDashHeave' | 'dotDotDash' | 'dotDotDashHeavy' | 'dotted' | 'dottedHeavy' | 'heavy' | 'none' | 'sng' | 'wavy' | 'wavyDbl' | 'wavyHeavy'; + color?: Color; + }; + /** + * vertical alignment + * @default 'top' + */ + valign?: VAlign; +} +export interface PlaceholderProps extends PositionProps, TextBaseProps { + name: string; + type: PLACEHOLDER_TYPE; + /** + * margin (points) + */ + margin?: Margin; +} +export interface ObjectNameProps { + /** + * Object name + * - used instead of default "Object N" name + * - PowerPoint: Home > Arrange > Selection Pane... + * @since v3.10.0 + * @default 'Object 1' + * @example 'Antenna Design 9' + */ + objectName?: string; +} +/** + * Theme color scheme - defines all 12 theme colors + * Colors can be specified as hex values (without #) like "317039" or "FFFFFF" + */ +export interface ThemeColorScheme { + /** Dark 1 (typically text color) - defaults to system windowText (000000) */ + dk1?: string; + /** Light 1 (typically background color) - defaults to system window (FFFFFF) */ + lt1?: string; + /** Dark 2 - defaults to "44546A" */ + dk2?: string; + /** Light 2 - defaults to "E7E6E6" */ + lt2?: string; + /** Accent 1 - defaults to "4472C4" */ + accent1?: string; + /** Accent 2 - defaults to "ED7D31" */ + accent2?: string; + /** Accent 3 - defaults to "A5A5A5" */ + accent3?: string; + /** Accent 4 - defaults to "FFC000" */ + accent4?: string; + /** Accent 5 - defaults to "5B9BD5" */ + accent5?: string; + /** Accent 6 - defaults to "70AD47" */ + accent6?: string; + /** Hyperlink color - defaults to "0563C1" */ + hlink?: string; + /** Followed hyperlink color - defaults to "954F72" */ + folHlink?: string; +} +export interface ThemeProps { + /** + * Headings font face name + * @example 'Arial Narrow' + * @default 'Calibri Light' + */ + headFontFace?: string; + /** + * Body font face name + * @example 'Arial' + * @default 'Calibri' + */ + bodyFontFace?: string; + /** + * Color scheme - defines the 12 theme colors (dk1, lt1, dk2, lt2, accent1-6, hlink, folHlink) + * @example { dk1: '317039', lt1: 'FEFCCC', accent1: '143021' } + */ + colorScheme?: ThemeColorScheme; +} +export type MediaType = 'audio' | 'online' | 'video'; +export interface ImageProps extends PositionProps, DataOrPathProps, ObjectNameProps { + /** + * Alt Text value ("How would you describe this object and its contents to someone who is blind?") + * - PowerPoint: [right-click on an image] > "Edit Alt Text..." + */ + altText?: string; + /** + * Flip horizontally? + * @default false + */ + flipH?: boolean; + /** + * Flip vertical? + * @default false + */ + flipV?: boolean; + hyperlink?: HyperlinkProps; + /** + * Placeholder type + * - values: 'body' | 'header' | 'footer' | 'title' | et. al. + * @example 'body' + * @see https://docs.microsoft.com/en-us/office/vba/api/powerpoint.ppplaceholdertype + */ + placeholder?: string; + /** + * Image rotation (degrees) + * - range: -360 to 360 + * @default 0 + * @example 180 // rotate image 180 degrees + */ + rotate?: number; + /** + * Enable image rounding + * @default false + */ + rounding?: boolean; + /** + * Shadow Props + * - MS-PPT > Format Picture > Shadow + * @example + * { type: 'outer', color: '000000', opacity: 0.5, blur: 20, offset: 20, angle: 270 } + */ + shadow?: ShadowProps; + /** + * Image sizing options + */ + sizing?: { + /** + * Sizing type + */ + type: 'contain' | 'cover' | 'crop'; + /** + * Image width + * - inches or percentage + * @example 10.25 // position in inches + * @example '75%' // position as percentage of slide size + */ + w: Coord; + /** + * Image height + * - inches or percentage + * @example 10.25 // position in inches + * @example '75%' // position as percentage of slide size + */ + h: Coord; + /** + * Offset from left to crop image + * - `crop` only + * - inches or percentage + * @example 10.25 // position in inches + * @example '75%' // position as percentage of slide size + */ + x?: Coord; + /** + * Offset from top to crop image + * - `crop` only + * - inches or percentage + * @example 10.25 // position in inches + * @example '75%' // position as percentage of slide size + */ + y?: Coord; + }; + /** + * Transparency (percent) + * - MS-PPT > Format Picture > Picture > Picture Transparency > Transparency + * - range: 0-100 + * @default 0 + * @example 25 // 25% transparent + */ + transparency?: number; +} +/** + * Add media (audio/video) to slide + * @requires either `link` or `path` + */ +export interface MediaProps extends PositionProps, DataOrPathProps, ObjectNameProps { + /** + * Media type + * - Use 'online' to embed a YouTube video (only supported in recent versions of PowerPoint) + */ + type: MediaType; + /** + * Cover image + * @since 3.9.0 + * @default "play button" image, gray background + */ + cover?: string; + /** + * media file extension + * - use when the media file path does not already have an extension, ex: "/folder/SomeSong" + * @since 3.9.0 + * @default extension from file provided + */ + extn?: string; + /** + * video embed link + * - works with YouTube + * - other sites may not show correctly in PowerPoint + * @example 'https://www.youtube.com/embed/Dph6ynRVyUc' // embed a youtube video + */ + link?: string; + /** + * full or local path + * @example 'https://freesounds/simpsons/bart.mp3' // embed mp3 audio clip from server + * @example '/sounds/simpsons_haha.mp3' // embed mp3 audio clip from local directory + */ + path?: string; +} +export interface ShapeProps extends PositionProps, ObjectNameProps { + /** + * Horizontal alignment + * @default 'left' + */ + align?: HAlign; + /** + * Radius (only for pptx.shapes.PIE, pptx.shapes.ARC, pptx.shapes.BLOCK_ARC) + * - In the case of pptx.shapes.BLOCK_ARC you have to setup the arcThicknessRatio + * - values: [0-359, 0-359] + * @since v3.4.0 + * @default [270, 0] + */ + angleRange?: [number, number]; + /** + * Radius (only for pptx.shapes.BLOCK_ARC) + * - You have to setup the angleRange values too + * - values: 0.0-1.0 + * @since v3.4.0 + * @default 0.5 + */ + arcThicknessRatio?: number; + /** + * Shape fill color properties + * @example { color:'FF0000' } // hex color (red) + * @example { color:'0088CC', transparency:50 } // hex color, 50% transparent + * @example { color:pptx.SchemeColor.accent1 } // Theme color Accent1 + */ + fill?: ShapeFillProps; + /** + * Flip shape horizontally? + * @default false + */ + flipH?: boolean; + /** + * Flip shape vertical? + * @default false + */ + flipV?: boolean; + /** + * Add hyperlink to shape + * @example hyperlink: { url: "https://github.com/gitbrent/pptxgenjs", tooltip: "Visit Homepage" }, + */ + hyperlink?: HyperlinkProps; + /** + * Line options + */ + line?: ShapeLineProps; + /** + * Points (only for pptx.shapes.CUSTOM_GEOMETRY) + * - type: 'arc' + * - `hR` Shape Arc Height Radius + * - `wR` Shape Arc Width Radius + * - `stAng` Shape Arc Start Angle + * - `swAng` Shape Arc Swing Angle + * @see http://www.datypic.com/sc/ooxml/e-a_arcTo-1.html + * @example [{ x: 0, y: 0 }, { x: 10, y: 10 }] // draw a line between those two points + */ + points?: Array<{ + x: Coord; + y: Coord; + moveTo?: boolean; + } | { + x: Coord; + y: Coord; + curve: { + type: 'arc'; + hR: Coord; + wR: Coord; + stAng: number; + swAng: number; + }; + } | { + x: Coord; + y: Coord; + curve: { + type: 'cubic'; + x1: Coord; + y1: Coord; + x2: Coord; + y2: Coord; + }; + } | { + x: Coord; + y: Coord; + curve: { + type: 'quadratic'; + x1: Coord; + y1: Coord; + }; + } | { + close: true; + }>; + /** + * Rounded rectangle radius (only for pptx.shapes.ROUNDED_RECTANGLE) + * - values: 0.0 to 1.0 + * @default 0 + */ + rectRadius?: number; + /** + * Shape geometry adjustments - raw OOXML adjustment values + * Maps adjustment names (e.g., "adj", "adj1", "adj2") to raw values + * Used for shapes that need custom geometry parameters like plus, cross, arrows, etc. + * Values are passed directly to the a:gd elements in the avLst + */ + shapeAdjustments?: Record; + /** + * Rotation (degrees) + * - range: -360 to 360 + * @default 0 + * @example 180 // rotate 180 degrees + */ + rotate?: number; + /** + * Shadow options + * TODO: need new demo.js entry for shape shadow + */ + shadow?: ShadowProps; + /** + * @deprecated v3.3.0 + */ + lineSize?: number; + /** + * @deprecated v3.3.0 + */ + lineDash?: 'dash' | 'dashDot' | 'lgDash' | 'lgDashDot' | 'lgDashDotDot' | 'solid' | 'sysDash' | 'sysDot'; + /** + * @deprecated v3.3.0 + */ + lineHead?: 'arrow' | 'diamond' | 'none' | 'oval' | 'stealth' | 'triangle'; + /** + * @deprecated v3.3.0 + */ + lineTail?: 'arrow' | 'diamond' | 'none' | 'oval' | 'stealth' | 'triangle'; + /** + * Shape name (used instead of default "Shape N" name) + * @deprecated v3.10.0 - use `objectName` + */ + shapeName?: string; + /** + * Vertical alignment of text within shape + * Used for shapes without text to preserve the anchor attribute + * @default 'top' + */ + valign?: VAlign; + /** + * Internal body properties for XML generation + * Used to preserve anchor attribute for shapes without text + */ + _bodyProp?: { + autoFit?: boolean; + align?: TEXT_HALIGN; + anchor?: TEXT_VALIGN; + /** + * Whether text is horizontally centered within the text area + * When false (0), text anchors at the edge based on alignment + * @see ECMA-376 anchorCtr attribute + */ + anchorCtr?: boolean; + lIns?: number; + rIns?: number; + tIns?: number; + bIns?: number; + vert?: 'eaVert' | 'horz' | 'mongolianVert' | 'vert' | 'vert270' | 'wordArtVert' | 'wordArtVertRtl'; + wrap?: boolean; + /** + * Whether to use first and last paragraph spacing on text body + * When true (1), space before first paragraph and space after last paragraph are applied + * @default true (PowerPoint default) + */ + spcFirstLastPara?: boolean; + }; +} +/** + * A child object within a group - can be a shape, text, or image + */ +export interface GroupChild { + /** + * Type of child object + */ + type: 'text' | 'shape' | 'image'; + /** + * For 'text' type - text options + */ + text?: string | TextProps[]; + /** + * For 'shape' type - shape name + */ + shapeName?: SHAPE_NAME; + /** + * For 'image' type - image properties + */ + image?: DataOrPathProps; + /** + * Position and size options (relative to group) + */ + options?: ShapeProps | TextPropsOptions | ImageProps; +} +export interface GroupProps extends PositionProps, ObjectNameProps { + /** + * Child objects within the group + */ + children: GroupChild[]; + /** + * Child coordinate system offset X (EMU) + * - Used internally for proper positioning + */ + chOffX?: number; + /** + * Child coordinate system offset Y (EMU) + */ + chOffY?: number; + /** + * Child coordinate system extent width (EMU) + */ + chExtCx?: number; + /** + * Child coordinate system extent height (EMU) + */ + chExtCy?: number; + /** + * Rotation (degrees) + * - range: -360 to 360 + */ + rotate?: number; + /** + * Flip horizontally + */ + flipH?: boolean; + /** + * Flip vertically + */ + flipV?: boolean; +} +export interface TableToSlidesProps extends TableProps { + _arrObjTabHeadRows?: TableRow[]; + /** + * Add an image to slide(s) created during autopaging + * - `image` prop requires either `path` or `data` + * - see `DataOrPathProps` for details on `image` props + * - see `PositionProps` for details on `options` props + */ + addImage?: { + image: DataOrPathProps; + options: PositionProps; + }; + /** + * Add a shape to slide(s) created during autopaging + */ + addShape?: { + shapeName: SHAPE_NAME; + options: ShapeProps; + }; + /** + * Add a table to slide(s) created during autopaging + */ + addTable?: { + rows: TableRow[]; + options: TableProps; + }; + /** + * Add a text object to slide(s) created during autopaging + */ + addText?: { + text: TextProps[]; + options: TextPropsOptions; + }; + /** + * Whether to enable auto-paging + * - auto-paging creates new slides as content overflows a slide + * @default true + */ + autoPage?: boolean; + /** + * Auto-paging character weight + * - adjusts how many characters are used before lines wrap + * - range: -1.0 to 1.0 + * @see https://gitbrent.github.io/PptxGenJS/docs/api-tables.html + * @default 0.0 + * @example 0.5 // lines are longer (increases the number of characters that can fit on a given line) + */ + autoPageCharWeight?: number; + /** + * Auto-paging line weight + * - adjusts how many lines are used before slides wrap + * - range: -1.0 to 1.0 + * @see https://gitbrent.github.io/PptxGenJS/docs/api-tables.html + * @default 0.0 + * @example 0.5 // tables are taller (increases the number of lines that can fit on a given slide) + */ + autoPageLineWeight?: number; + /** + * Whether to repeat head row(s) on new tables created by autopaging + * @since v3.3.0 + * @default false + */ + autoPageRepeatHeader?: boolean; + /** + * The `y` location to use on subsequent slides created by autopaging + * @default (top margin of Slide) + */ + autoPageSlideStartY?: number; + /** + * Column widths (inches) + */ + colW?: number | number[]; + /** + * Master slide name + * - define a master slide to have your auto-paged slides have corporate design, etc. + * @see https://gitbrent.github.io/PptxGenJS/docs/masters.html + */ + masterSlideName?: string; + /** + * Slide margin + * - this margin will be across all slides created by auto-paging + */ + slideMargin?: Margin; + /** + * @deprecated v3.3.0 - use `autoPageRepeatHeader` + */ + addHeaderToEach?: boolean; + /** + * @deprecated v3.3.0 - use `autoPageSlideStartY` + */ + newSlideStartY?: number; +} +export interface TableCellProps extends TextBaseProps { + /** + * Auto-paging character weight + * - adjusts how many characters are used before lines wrap + * - range: -1.0 to 1.0 + * @see https://gitbrent.github.io/PptxGenJS/docs/api-tables.html + * @default 0.0 + * @example 0.5 // lines are longer (increases the number of characters that can fit on a given line) + */ + autoPageCharWeight?: number; + /** + * Auto-paging line weight + * - adjusts how many lines are used before slides wrap + * - range: -1.0 to 1.0 + * @see https://gitbrent.github.io/PptxGenJS/docs/api-tables.html + * @default 0.0 + * @example 0.5 // tables are taller (increases the number of lines that can fit on a given slide) + */ + autoPageLineWeight?: number; + /** + * Cell border + */ + border?: BorderProps | [BorderProps, BorderProps, BorderProps, BorderProps]; + /** + * Cell colspan + */ + colspan?: number; + /** + * Fill color + * @example { color:'FF0000' } // hex color (red) + * @example { color:'0088CC', transparency:50 } // hex color, 50% transparent + * @example { color:pptx.SchemeColor.accent1 } // theme color Accent1 + */ + fill?: ShapeFillProps; + hyperlink?: HyperlinkProps; + /** + * Cell margin (inches) + * @default 0 + */ + margin?: Margin; + /** + * Cell rowspan + */ + rowspan?: number; +} +export interface TableProps extends PositionProps, TextBaseProps, ObjectNameProps { + _arrObjTabHeadRows?: TableRow[]; + /** + * Whether to enable auto-paging + * - auto-paging creates new slides as content overflows a slide + * @default false + */ + autoPage?: boolean; + /** + * Auto-paging character weight + * - adjusts how many characters are used before lines wrap + * - range: -1.0 to 1.0 + * @see https://gitbrent.github.io/PptxGenJS/docs/api-tables.html + * @default 0.0 + * @example 0.5 // lines are longer (increases the number of characters that can fit on a given line) + */ + autoPageCharWeight?: number; + /** + * Auto-paging line weight + * - adjusts how many lines are used before slides wrap + * - range: -1.0 to 1.0 + * @see https://gitbrent.github.io/PptxGenJS/docs/api-tables.html + * @default 0.0 + * @example 0.5 // tables are taller (increases the number of lines that can fit on a given slide) + */ + autoPageLineWeight?: number; + /** + * Whether table header row(s) should be repeated on each new slide creating by autoPage. + * Use `autoPageHeaderRows` to designate how many rows comprise the table header (1+). + * @default false + * @since v3.3.0 + */ + autoPageRepeatHeader?: boolean; + /** + * Number of rows that comprise table headers + * - required when `autoPageRepeatHeader` is set to true. + * @example 2 - repeats the first two table rows on each new slide created + * @default 1 + * @since v3.3.0 + */ + autoPageHeaderRows?: number; + /** + * The `y` location to use on subsequent slides created by autopaging + * @default (top margin of Slide) + */ + autoPageSlideStartY?: number; + /** + * Table border + * - single value is applied to all 4 sides + * - array of values in TRBL order for individual sides + */ + border?: BorderProps | [BorderProps, BorderProps, BorderProps, BorderProps]; + /** + * Width of table columns (inches) + * - single value is applied to every column equally based upon `w` + * - array of values in applied to each column in order + * @default columns of equal width based upon `w` + */ + colW?: number | number[]; + /** + * Cell background color + * @example { color:'FF0000' } // hex color (red) + * @example { color:'0088CC', transparency:50 } // hex color, 50% transparent + * @example { color:pptx.SchemeColor.accent1 } // theme color Accent1 + */ + fill?: ShapeFillProps; + /** + * Cell margin (inches) + * - affects all table cells, is superceded by cell options + */ + margin?: Margin; + /** + * Height of table rows (inches) + * - single value is applied to every row equally based upon `h` + * - array of values in applied to each row in order + * @default rows of equal height based upon `h` + */ + rowH?: number | number[]; + /** + * DEV TOOL: Verbose Mode (to console) + * - tell the library to provide an almost ridiculous amount of detail during auto-paging calculations + * @default false // obviously + */ + verbose?: boolean; + /** + * @deprecated v3.3.0 - use `autoPageSlideStartY` + */ + newSlideStartY?: number; + /** + * Table style ID (GUID referencing a style in tableStyles.xml) + * @example '{5C22544A-7EE6-4342-B048-85BDC9FD1C3A}' + */ + tableStyleId?: string; + /** + * Apply first row formatting from table style + * @default false + */ + firstRow?: boolean; + /** + * Apply last row formatting from table style + * @default false + */ + lastRow?: boolean; + /** + * Apply first column formatting from table style + * @default false + */ + firstCol?: boolean; + /** + * Apply last column formatting from table style + * @default false + */ + lastCol?: boolean; + /** + * Apply banded row formatting from table style + * @default false + */ + bandRow?: boolean; + /** + * Apply banded column formatting from table style + * @default false + */ + bandCol?: boolean; +} +export interface TableCell { + _type: SLIDE_OBJECT_TYPES.tablecell; + /** lines in this cell (autoPage) */ + _lines?: TableCell[][]; + /** `text` prop but guaranteed to hold "TableCell[]" */ + _tableCells?: TableCell[]; + /** height in EMU */ + _lineHeight?: number; + _hmerge?: boolean; + _vmerge?: boolean; + _rowContinue?: number; + _optImp?: any; + text?: string | TableCell[]; + options?: TableCellProps; +} +export interface TableRowSlide { + rows: TableRow[]; +} +export type TableRow = TableCell[]; +export interface TextGlowProps { + /** + * Border color (hex format) + * @example 'FF3399' + */ + color?: HexColor; + /** + * opacity (0.0 - 1.0) + * @example 0.5 + * 50% opaque + */ + opacity?: number; + /** + * size (points) + */ + size: number; +} +export interface TextPropsOptions extends PositionProps, DataOrPathProps, TextBaseProps, ObjectNameProps { + _bodyProp?: { + autoFit?: boolean; + align?: TEXT_HALIGN; + anchor?: TEXT_VALIGN; + /** + * Whether text is horizontally centered within the text area + * When false (0), text anchors at the edge based on alignment + * @see ECMA-376 anchorCtr attribute + */ + anchorCtr?: boolean; + lIns?: number; + rIns?: number; + tIns?: number; + bIns?: number; + vert?: 'eaVert' | 'horz' | 'mongolianVert' | 'vert' | 'vert270' | 'wordArtVert' | 'wordArtVertRtl'; + wrap?: boolean; + /** + * Whether to use first and last paragraph spacing on text body + * When true (1), space before first paragraph and space after last paragraph are applied + * @default true (PowerPoint default) + */ + spcFirstLastPara?: boolean; + }; + _lineIdx?: number; + baseline?: number; + /** + * Character spacing + */ + charSpacing?: number; + /** + * Kerning threshold in points + * Text will be kerned when its size is equal to or greater than this value + * Set to 0 to disable kerning, or a small value like 1 to enable kerning at all sizes + * PowerPoint default is typically 12pt (kern="1200" in hundredths of a point) + * @example 1 // Enable kerning for all text 1pt and above + * @example 12 // Enable kerning for 12pt and above (default) + * @example 0 // Disable kerning + */ + kern?: number; + /** + * Text fit options + * + * MS-PPT > Format Shape > Shape Options > Text Box > "[unlabeled group]": [3 options below] + * - 'none' = Do not Autofit + * - 'shrink' = Shrink text on overflow + * - 'resize' = Resize shape to fit text + * + * **Note** 'shrink' and 'resize' only take effect after editing text/resize shape. + * Both PowerPoint and Word dynamically calculate a scaling factor and apply it when edit/resize occurs. + * + * There is no way for this library to trigger that behavior, sorry. + * @since v3.3.0 + * @default "none" + */ + fit?: 'none' | 'shrink' | 'resize'; + /** + * Shape fill + * @example { color:'FF0000' } // hex color (red) + * @example { color:'0088CC', transparency:50 } // hex color, 50% transparent + * @example { color:pptx.SchemeColor.accent1 } // theme color Accent1 + */ + fill?: ShapeFillProps; + /** + * Flip shape horizontally? + * @default false + */ + flipH?: boolean; + /** + * Flip shape vertical? + * @default false + */ + flipV?: boolean; + glow?: TextGlowProps; + hyperlink?: HyperlinkProps; + indentLevel?: number; + isTextBox?: boolean; + line?: ShapeLineProps; + /** + * Line spacing (pt) + * - PowerPoint: Paragraph > Indents and Spacing > Line Spacing: > "Exactly" + * @example 28 // 28pt + */ + lineSpacing?: number; + /** + * line spacing multiple (percent) + * - range: 0.0-9.99 + * - PowerPoint: Paragraph > Indents and Spacing > Line Spacing: > "Multiple" + * @example 1.5 // 1.5X line spacing + * @since v3.5.0 + */ + lineSpacingMultiple?: number; + /** + * Margin (points) + * - PowerPoint: Format Shape > Shape Options > Size & Properties > Text Box > Left/Right/Top/Bottom margin + * @default "Normal" margin in PowerPoint [3.5, 7.0, 3.5, 7.0] // (this library sets no value, but PowerPoint defaults to "Normal" [0.05", 0.1", 0.05", 0.1"]) + * @example 0 // Top/Right/Bottom/Left margin 0 [0.0" in powerpoint] + * @example 10 // Top/Right/Bottom/Left margin 10 [0.14" in powerpoint] + * @example [10,5,10,5] // Top margin 10, Right margin 5, Bottom margin 10, Left margin 5 + */ + margin?: Margin; + outline?: { + color: Color; + size: number; + }; + /** + * Paragraph left margin (EMUs) + * - Used for offsetting text from the left edge of the shape + * @example 457200 // 0.5 inches left margin + */ + paragraphMarginLeft?: number; + /** + * Paragraph right margin (EMUs) + * - Used for constraining text wrap width within a paragraph + * @example 1587500 // ~1.75 inches right margin + */ + paragraphMarginRight?: number; + /** + * Paragraph first-line indent (EMUs) + * - Positive values indent the first line + * - Negative values create a hanging indent + * @example -228600 // -0.25 inches hanging indent + */ + paragraphIndent?: number; + paraSpaceAfter?: number; + paraSpaceBefore?: number; + placeholder?: string; + /** + * Rounded rectangle radius (only for pptx.shapes.ROUNDED_RECTANGLE) + * - values: 0.0 to 1.0 + * @default 0 + */ + rectRadius?: number; + /** + * Shape geometry adjustments - raw OOXML adjustment values + * Maps adjustment names (e.g., "adj", "adj1", "adj2") to raw values + * Used for shapes that need custom geometry parameters like plus, cross, arrows, etc. + * Values are passed directly to the a:gd elements in the avLst + */ + shapeAdjustments?: Record; + /** + * Rotation (degrees) + * - range: -360 to 360 + * @default 0 + * @example 180 // rotate 180 degrees + */ + rotate?: number; + /** + * Whether to enable right-to-left mode + * @default false + */ + rtlMode?: boolean; + shadow?: ShadowProps; + shape?: SHAPE_NAME; + strike?: boolean | 'dblStrike' | 'sngStrike'; + subscript?: boolean; + superscript?: boolean; + /** + * Vertical alignment + * @default middle + */ + valign?: VAlign; + vert?: 'eaVert' | 'horz' | 'mongolianVert' | 'vert' | 'vert270' | 'wordArtVert' | 'wordArtVertRtl'; + /** + * Text wrap + * @since v3.3.0 + * @default true + */ + wrap?: boolean; + /** + * Whether "Fit to Shape?" is enabled + * @deprecated v3.3.0 - use `fit` + */ + autoFit?: boolean; + /** + * Whather "Shrink Text on Overflow?" is enabled + * @deprecated v3.3.0 - use `fit` + */ + shrinkText?: boolean; + /** + * Inset + * @deprecated v3.10.0 - use `margin` + */ + inset?: number; + /** + * Dash type + * @deprecated v3.3.0 - use `line.dashType` + */ + lineDash?: 'solid' | 'dash' | 'dashDot' | 'lgDash' | 'lgDashDot' | 'lgDashDotDot' | 'sysDash' | 'sysDot'; + /** + * @deprecated v3.3.0 - use `line.beginArrowType` + */ + lineHead?: 'none' | 'arrow' | 'diamond' | 'oval' | 'stealth' | 'triangle'; + /** + * @deprecated v3.3.0 - use `line.width` + */ + lineSize?: number; + /** + * @deprecated v3.3.0 - use `line.endArrowType` + */ + lineTail?: 'none' | 'arrow' | 'diamond' | 'oval' | 'stealth' | 'triangle'; +} +export interface TextProps { + text?: string; + options?: TextPropsOptions; +} +export type ChartAxisTickMark = 'none' | 'inside' | 'outside' | 'cross'; +export type ChartLineCap = 'flat' | 'round' | 'square'; +export interface OptsChartData { + _dataIndex?: number; + /** + * category labels + * @example ['Year 2000', 'Year 2010', 'Year 2020'] // single-level category axes labels + * @example [['Year 2000', 'Year 2010', 'Year 2020'], ['Decades', '', '']] // multi-level category axes labels + * @since `labels` string[][] type added v3.11.0 + */ + labels?: string[] | string[][]; + /** + * series name + * @example 'Locations' + */ + name?: string; + /** + * bubble sizes + * @example [5, 1, 5, 1] + */ + sizes?: number[]; + /** + * subtotal/total indices for waterfall charts (0-based) + * @example [0, 4, 7] // marks categories at these indices as "Set as Total" + */ + subtotalIndices?: number[]; + /** + * category values + * @example [2000, 2010, 2020] + */ + values?: number[]; +} +export interface IOptsChartData extends OptsChartData { + labels?: string[][]; +} +export interface OptsChartGridLine { + /** + * MS-PPT > Chart format > Format Major Gridlines > Line > Cap type + * - line cap type + * @default flat + */ + cap?: ChartLineCap; + /** + * Gridline color (hex) + * @example 'FF3399' + */ + color?: HexColor; + /** + * Gridline size (points) + */ + size?: number; + /** + * Gridline style + */ + style?: 'solid' | 'dash' | 'dot' | 'none'; +} +export interface IChartMulti { + type: CHART_NAME; + data: IOptsChartData[]; + options: IChartOptsLib; +} +export interface IChartPropsFillLine { + /** + * PowerPoint: Format Chart Area/Plot > Border ["Line"] + * @example border: {color: 'FF0000', pt: 1} // hex RGB color, 1 pt line + */ + border?: BorderProps; + /** + * PowerPoint: Format Chart Area/Plot Area > Fill + * @example fill: {color: '696969'} // hex RGB color value + * @example fill: {color: pptx.SchemeColor.background2} // Theme color value + * @example fill: {transparency: 50} // 50% transparency + */ + fill?: ShapeFillProps; +} +export interface IChartAreaProps extends IChartPropsFillLine { + /** + * Whether the chart area has rounded corners + * - only applies when either `fill` or `border` is used + * @default true + * @since v3.11 + */ + roundedCorners?: boolean; +} +export interface IChartPropsBase { + /** + * Axis position + */ + axisPos?: 'b' | 'l' | 'r' | 't'; + chartColors?: HexColor[]; + /** + * opacity (0 - 100) + * @example 50 // 50% opaque + */ + chartColorsOpacity?: number; + dataBorder?: BorderProps; + displayBlanksAs?: string; + invertedColors?: HexColor[]; + lang?: string; + layout?: PositionProps; + shadow?: ShadowProps; + /** + * @default false + */ + showLabel?: boolean; + showLeaderLines?: boolean; + /** + * @default false + */ + showLegend?: boolean; + /** + * @default false + */ + showPercent?: boolean; + /** + * @default false + */ + showSerName?: boolean; + /** + * @default false + */ + showTitle?: boolean; + /** + * @default false + */ + showValue?: boolean; + /** + * 3D Perspecitve + * - range: 0-120 + * @default 30 + */ + v3DPerspective?: number; + /** + * Right Angle Axes + * - Shows chart from first-person perspective + * - Overrides `v3DPerspective` when true + * - PowerPoint: Chart Options > 3-D Rotation + * @default false + */ + v3DRAngAx?: boolean; + /** + * X Rotation + * - PowerPoint: Chart Options > 3-D Rotation + * - range: 0-359.9 + * @default 30 + */ + v3DRotX?: number; + /** + * Y Rotation + * - range: 0-359.9 + * @default 30 + */ + v3DRotY?: number; + /** + * PowerPoint: Format Chart Area (Fill & Border/Line) + * @since v3.11 + */ + chartArea?: IChartAreaProps; + /** + * PowerPoint: Format Plot Area (Fill & Border/Line) + * @since v3.11 + */ + plotArea?: IChartPropsFillLine; + /** + * @deprecated v3.11.0 - use `plotArea.border` + */ + border?: BorderProps; + /** + * @deprecated v3.11.0 - use `plotArea.fill` + */ + fill?: HexColor; +} +export interface IChartPropsAxisCat { + /** + * Multi-Chart prop: array of cat axes + */ + catAxes?: IChartPropsAxisCat[]; + catAxisBaseTimeUnit?: string; + catAxisCrossesAt?: number | 'autoZero'; + catAxisHidden?: boolean; + catAxisLabelColor?: string; + catAxisLabelFontBold?: boolean; + catAxisLabelFontFace?: string; + catAxisLabelFontItalic?: boolean; + catAxisLabelFontSize?: number; + catAxisLabelFrequency?: string; + catAxisLabelPos?: 'none' | 'low' | 'high' | 'nextTo'; + catAxisLabelRotate?: number; + catAxisLineColor?: string; + catAxisLineShow?: boolean; + catAxisLineSize?: number; + catAxisLineStyle?: 'solid' | 'dash' | 'dot'; + catAxisMajorTickMark?: ChartAxisTickMark; + catAxisMajorTimeUnit?: string; + catAxisMajorUnit?: number; + catAxisMaxVal?: number; + catAxisMinorTickMark?: ChartAxisTickMark; + catAxisMinorTimeUnit?: string; + catAxisMinorUnit?: number; + catAxisMinVal?: number; + /** @since v3.11.0 */ + catAxisMultiLevelLabels?: boolean; + catAxisOrientation?: 'minMax'; + catAxisTitle?: string; + catAxisTitleColor?: string; + catAxisTitleFontFace?: string; + catAxisTitleFontSize?: number; + catAxisTitleRotate?: number; + catGridLine?: OptsChartGridLine; + catLabelFormatCode?: string; + /** + * Whether data should use secondary category axis (instead of primary) + * @default false + */ + secondaryCatAxis?: boolean; + showCatAxisTitle?: boolean; +} +export interface IChartPropsAxisSer { + serAxisBaseTimeUnit?: string; + serAxisHidden?: boolean; + serAxisLabelColor?: string; + serAxisLabelFontBold?: boolean; + serAxisLabelFontFace?: string; + serAxisLabelFontItalic?: boolean; + serAxisLabelFontSize?: number; + serAxisLabelFrequency?: string; + serAxisLabelPos?: 'none' | 'low' | 'high' | 'nextTo'; + serAxisLineColor?: string; + serAxisLineShow?: boolean; + serAxisMajorTimeUnit?: string; + serAxisMajorUnit?: number; + serAxisMinorTimeUnit?: string; + serAxisMinorUnit?: number; + serAxisOrientation?: string; + serAxisTitle?: string; + serAxisTitleColor?: string; + serAxisTitleFontFace?: string; + serAxisTitleFontSize?: number; + serAxisTitleRotate?: number; + serGridLine?: OptsChartGridLine; + serLabelFormatCode?: string; + showSerAxisTitle?: boolean; +} +export interface IChartPropsAxisVal { + /** + * Whether data should use secondary value axis (instead of primary) + * @default false + */ + secondaryValAxis?: boolean; + showValAxisTitle?: boolean; + /** + * Multi-Chart prop: array of val axes + */ + valAxes?: IChartPropsAxisVal[]; + valAxisCrossesAt?: number | 'autoZero'; + valAxisDisplayUnit?: 'billions' | 'hundredMillions' | 'hundreds' | 'hundredThousands' | 'millions' | 'tenMillions' | 'tenThousands' | 'thousands' | 'trillions'; + valAxisDisplayUnitLabel?: boolean; + valAxisHidden?: boolean; + valAxisLabelColor?: string; + valAxisLabelFontBold?: boolean; + valAxisLabelFontFace?: string; + valAxisLabelFontItalic?: boolean; + valAxisLabelFontSize?: number; + valAxisLabelFormatCode?: string; + valAxisLabelPos?: 'none' | 'low' | 'high' | 'nextTo'; + valAxisLabelRotate?: number; + valAxisLineColor?: string; + valAxisLineShow?: boolean; + valAxisLineSize?: number; + valAxisLineStyle?: 'solid' | 'dash' | 'dot'; + /** + * PowerPoint: Format Axis > Axis Options > Logarithmic scale - Base + * - range: 2-99 + * @since v3.5.0 + */ + valAxisLogScaleBase?: number; + valAxisMajorTickMark?: ChartAxisTickMark; + valAxisMajorUnit?: number; + valAxisMaxVal?: number; + valAxisMinorTickMark?: ChartAxisTickMark; + valAxisMinVal?: number; + valAxisOrientation?: 'minMax'; + valAxisTitle?: string; + valAxisTitleColor?: string; + valAxisTitleFontFace?: string; + valAxisTitleFontSize?: number; + valAxisTitleRotate?: number; + valGridLine?: OptsChartGridLine; + /** + * Value label format code + * - this also directs Data Table formatting + * @since v3.3.0 + * @example '#%' // round percent + * @example '0.00%' // shows values as '0.00%' + * @example '$0.00' // shows values as '$0.00' + */ + valLabelFormatCode?: string; +} +export interface IChartPropsChartBar { + bar3DShape?: string; + barDir?: string; + barGapDepthPct?: number; + /** + * MS-PPT > Format chart > Format Data Point > Series Options > "Gap Width" + * - width (percent) + * - range: `0`-`500` + * @default 150 + */ + barGapWidthPct?: number; + barGrouping?: string; + /** + * MS-PPT > Format chart > Format Data Point > Series Options > "Series Overlap" + * - overlap (percent) + * - range: `-100`-`100` + * @since v3.9.0 + * @default 0 + */ + barOverlapPct?: number; +} +export interface IChartPropsChartDoughnut { + dataNoEffects?: boolean; + holeSize?: number; +} +export interface IChartPropsChartBubble { + /** + * Render bubble chart with 3D effect + * @default false + */ + bubble3D?: boolean; +} +export interface IChartPropsChartLine { + /** + * MS-PPT > Chart format > Format Data Series > Line > Cap type + * - line cap type + * @default flat + */ + lineCap?: ChartLineCap; + /** + * MS-PPT > Chart format > Format Data Series > Marker Options > Built-in > Type + * - line dash type + * @default solid + */ + lineDash?: 'dash' | 'dashDot' | 'lgDash' | 'lgDashDot' | 'lgDashDotDot' | 'solid' | 'sysDash' | 'sysDot'; + /** + * MS-PPT > Chart format > Format Data Series > Marker Options > Built-in > Type + * - marker type + * @default circle + */ + lineDataSymbol?: 'circle' | 'dash' | 'diamond' | 'dot' | 'none' | 'square' | 'triangle'; + /** + * MS-PPT > Chart format > Format Data Series > [Marker Options] > Border > Color + * - border color + * @default circle + */ + lineDataSymbolLineColor?: string; + /** + * MS-PPT > Chart format > Format Data Series > [Marker Options] > Border > Width + * - border width (points) + * @default 0.75 + */ + lineDataSymbolLineSize?: number; + /** + * MS-PPT > Chart format > Format Data Series > Marker Options > Built-in > Size + * - marker size + * - range: 2-72 + * @default 6 + */ + lineDataSymbolSize?: number; + /** + * MS-PPT > Chart format > Format Data Series > Line > Width + * - line width (points) + * - range: 0-1584 + * @default 2 + */ + lineSize?: number; + /** + * MS-PPT > Chart format > Format Data Series > Line > Smoothed line + * - "Smoothed line" + * @default false + */ + lineSmooth?: boolean; + /** + * Scatter chart style - controls line and marker display + * - 'lineMarker' = straight lines with markers + * - 'line' = straight lines only (no markers) + * - 'marker' = markers only (no lines) + * - 'smooth' = smooth curves only (no markers) + * - 'smoothMarker' = smooth curves with markers + * @default 'lineMarker' + */ + scatterStyle?: 'lineMarker' | 'line' | 'marker' | 'smooth' | 'smoothMarker'; +} +export interface IChartPropsChartPie { + dataNoEffects?: boolean; + /** + * MS-PPT > Format chart > Format Data Series > Series Options > "Angle of first slice" + * - angle (degrees) + * - range: 0-359 + * @since v3.4.0 + * @default 0 + */ + firstSliceAng?: number; + /** + * Type of "Of Pie" chart (for OFPIE chart type) + * - 'pie' = "Pie of Pie" chart + * - 'bar' = "Bar of Pie" chart + * @default 'pie' + */ + ofPieType?: 'pie' | 'bar'; +} +export interface IChartPropsChartRadar { + /** + * MS-PPT > Chart Type > Waterfall + * - radar chart type + * @default standard + */ + radarStyle?: 'standard' | 'marker' | 'filled'; +} +export interface IChartPropsChartStock { + /** + * Stock chart type + * - 'hlc' = High-Low-Close (3 series) + * - 'ohlc' = Open-High-Low-Close (4 series, with upDownBars) + * - 'volumeHlc' = Volume-High-Low-Close (bar + 3 series) + * - 'volumeOhlc' = Volume-Open-High-Low-Close (bar + 4 series, with upDownBars) + * @default 'hlc' + */ + stockType?: 'hlc' | 'ohlc' | 'volumeHlc' | 'volumeOhlc'; + /** + * Volume data series for volumeHlc/volumeOhlc stock charts + * This appears as a bar chart overlaid with the stock chart + */ + volumeData?: { + name: string; + labels: Array; + values: Array; + }; +} +export interface IChartPropsDataLabel { + dataLabelBkgrdColors?: boolean; + dataLabelColor?: string; + dataLabelFontBold?: boolean; + dataLabelFontFace?: string; + dataLabelFontItalic?: boolean; + dataLabelFontSize?: number; + /** + * Data label format code + * @example '#%' // round percent + * @example '0.00%' // shows values as '0.00%' + * @example '$0.00' // shows values as '$0.00' + */ + dataLabelFormatCode?: string; + dataLabelFormatScatter?: 'custom' | 'customXY' | 'XY'; + dataLabelPosition?: 'b' | 'bestFit' | 'ctr' | 'l' | 'r' | 't' | 'inEnd' | 'outEnd'; +} +export interface IChartPropsDataTable { + dataTableFontSize?: number; + /** + * Data table format code + * @since v3.3.0 + * @example '#%' // round percent + * @example '0.00%' // shows values as '0.00%' + * @example '$0.00' // shows values as '$0.00' + */ + dataTableFormatCode?: string; + /** + * Whether to show a data table adjacent to the chart + * @default false + */ + showDataTable?: boolean; + showDataTableHorzBorder?: boolean; + showDataTableKeys?: boolean; + showDataTableOutline?: boolean; + showDataTableVertBorder?: boolean; +} +export interface IChartPropsLegend { + legendColor?: string; + legendFontFace?: string; + legendFontSize?: number; + legendPos?: 'b' | 'l' | 'r' | 't' | 'tr'; +} +export interface IChartPropsTitle extends TextBaseProps { + title?: string; + titleAlign?: string; + titleBold?: boolean; + titleColor?: string; + titleFontFace?: string; + titleFontSize?: number; + titlePos?: { + x: number; + y: number; + }; + titleRotate?: number; +} +export interface IChartOpts extends IChartPropsAxisCat, IChartPropsAxisSer, IChartPropsAxisVal, IChartPropsBase, IChartPropsChartBar, IChartPropsChartBubble, IChartPropsChartDoughnut, IChartPropsChartLine, IChartPropsChartPie, IChartPropsChartRadar, IChartPropsChartStock, IChartPropsDataLabel, IChartPropsDataTable, IChartPropsLegend, IChartPropsTitle, ObjectNameProps, OptsChartGridLine, PositionProps { + /** + * Alt Text value ("How would you describe this object and its contents to someone who is blind?") + * - PowerPoint: [right-click on a chart] > "Edit Alt Text..." + */ + altText?: string; + /** + * GeoCache binary data for regionMap (Filled Map) charts + * - Contains cached map rendering data from Bing Maps + * - Required for map charts to display without internet connection + * - Preserved from parsed PPTX for roundtrip + */ + geoCache?: string; + /** + * Raw chart style XML for lossless roundtrip + * - Contains the original style definitions from the parsed PPTX + * - If provided, will be used instead of generating default style + */ + chartStyleXml?: string; + /** + * Raw chart colors XML for lossless roundtrip + * - Contains the original color scheme from the parsed PPTX + * - If provided, will be used instead of generating default colors + */ + chartColorsXml?: string; +} +export interface IChartOptsLib extends IChartOpts { + _type?: CHART_NAME | IChartMulti[]; +} +export interface ISlideRelChart extends OptsChartData { + type: CHART_NAME | IChartMulti[]; + opts: IChartOptsLib; + data: IOptsChartData[]; + rId: number; + Target: string; + globalId: number; + fileName: string; + /** Whether this is a ChartEx (extended chart) type */ + isChartEx?: boolean; + /** ChartEx-specific data for hierarchical charts (treemap, sunburst) */ + chartExData?: IChartExData; + /** Raw chart style XML for lossless roundtrip */ + chartStyleXml?: string; + /** Raw chart colors XML for lossless roundtrip */ + chartColorsXml?: string; +} +/** + * ChartEx (Extended Chart) data structure + * Used for treemap, sunburst, histogram, pareto, boxWhisker charts + */ +export interface IChartExData { + /** The layout ID for the ChartEx (treemap, sunburst, clusteredColumn, boxWhisker, paretoLine, waterfall, funnel) */ + layoutId: string; + /** Multi-level category labels for hierarchical charts */ + categoryLevels?: string[][]; + /** Numeric dimension values */ + values?: number[]; + /** Number dimension type: 'val' for value, 'size' for size */ + numDimType?: 'val' | 'size'; + /** For boxWhisker: quartile calculation method */ + quartileMethod?: 'exclusive' | 'inclusive'; + /** For histogram: binning settings */ + binning?: { + count?: number; + width?: number; + overflow?: number; + underflow?: number; + }; + /** For pareto: whether to show pareto line */ + showParetoLine?: boolean; + /** Data label settings */ + dataLabels?: { + position?: string; + showCategoryName?: boolean; + showValue?: boolean; + showSeriesName?: boolean; + }; +} +export interface ISlideRel { + type: SLIDE_OBJECT_TYPES; + Target: string; + fileName?: string; + data: any[] | string; + opts?: IChartOpts; + path?: string; + extn?: string; + globalId?: number; + rId: number; +} +export interface ISlideRelMedia { + type: string; + opts?: MediaProps; + path?: string; + extn?: string; + data?: string | ArrayBuffer; + /** used to indicate that a media file has already been read/enocded (PERF) */ + isDuplicate?: boolean; + isSvgPng?: boolean; + svgSize?: { + w: number; + h: number; + }; + rId: number; + Target: string; +} +export interface ISlideObject { + _type: SLIDE_OBJECT_TYPES; + options?: ObjectOptions; + text?: TextProps[]; + arrTabRows?: TableCell[][]; + chartRid?: number; + /** Whether this chart is a ChartEx (extended chart) type */ + isChartEx?: boolean; + image?: string; + imageRid?: number; + hyperlink?: HyperlinkProps; + media?: string; + mtype?: MediaType; + mediaRid?: number; + shape?: SHAPE_NAME; + groupChildren?: ISlideObject[]; +} +export interface WriteBaseProps { + /** + * Whether to compress export (can save substantial space, but takes a bit longer to export) + * @default false + * @since v3.5.0 + */ + compression?: boolean; +} +export interface WriteProps extends WriteBaseProps { + /** + * Output type + * - values: 'arraybuffer' | 'base64' | 'binarystring' | 'blob' | 'nodebuffer' | 'uint8array' | 'STREAM' + * @default 'blob' + */ + outputType?: WRITE_OUTPUT_TYPE; +} +export interface WriteFileProps extends WriteBaseProps { + /** + * Export file name + * @default 'Presentation.pptx' + */ + fileName?: string; +} +export interface SectionProps { + _type: 'user' | 'default'; + _slides: PresSlide[]; + /** + * Section title + */ + title: string; + /** + * Section order - uses to add section at any index + * - values: 1-n + */ + order?: number; +} +export interface PresLayout { + _sizeW?: number; + _sizeH?: number; + /** + * Layout Name + * @example 'LAYOUT_WIDE' + */ + name: string; + width: number; + height: number; +} +export interface SlideNumberProps extends PositionProps, TextBaseProps { + /** + * margin (points) + */ + margin?: Margin; +} +export interface SlideMasterProps { + /** + * Unique name for this master + */ + title: string; + background?: BackgroundProps; + margin?: Margin; + slideNumber?: SlideNumberProps; + objects?: Array<{ + chart: IChartOpts; + } | { + image: ImageProps; + } | { + line: ShapeProps; + } | { + rect: ShapeProps; + } | { + text: TextProps; + } | { + placeholder: { + options: PlaceholderProps; + /** + * Text to be shown in placeholder (shown until user focuses textbox or adds text) + * - Leave blank to have powerpoint show default phrase (ex: "Click to add title") + */ + text?: string; + }; + }>; + /** + * @deprecated v3.3.0 - use `background` + */ + bkgd?: string | BackgroundProps; +} +export interface ObjectOptions extends ImageProps, PositionProps, ShapeProps, TableCellProps, TextPropsOptions { + _placeholderIdx?: number; + _placeholderType?: PLACEHOLDER_TYPE; + /** + * Group child coordinate system properties (internal use) + */ + _groupProps?: { + chOffX?: number; + chOffY?: number; + chExtCx?: number; + chExtCy?: number; + rotate?: number; + flipH?: boolean; + flipV?: boolean; + }; + cx?: Coord; + cy?: Coord; + margin?: Margin; + colW?: number | number[]; + rowH?: number | number[]; + tableStyleId?: string; + firstRow?: boolean; + lastRow?: boolean; + firstCol?: boolean; + lastCol?: boolean; + bandRow?: boolean; + bandCol?: boolean; +} +export interface SlideBaseProps { + _bkgdImgRid?: number; + _margin?: Margin; + _name?: string; + _presLayout: PresLayout; + _rels: ISlideRel[]; + _relsChart: ISlideRelChart[]; + _relsMedia: ISlideRelMedia[]; + _slideNum: number; + _slideNumberProps?: SlideNumberProps; + _slideObjects?: ISlideObject[]; + background?: BackgroundProps; + /** + * @deprecated v3.3.0 - use `background` + */ + bkgd?: string | BackgroundProps; +} +export interface SlideLayout extends SlideBaseProps { + _slide?: { + _bkgdImgRid?: number; + back: string; + color: string; + hidden?: boolean; + }; +} +export interface PresSlide extends SlideBaseProps { + _rId: number; + _slideLayout: SlideLayout; + _slideId: number; + addChart: (type: CHART_NAME | IChartMulti[], data: IOptsChartData[], options?: IChartOpts) => PresSlide; + addGroup: (options: GroupProps) => PresSlide; + addImage: (options: ImageProps) => PresSlide; + addMedia: (options: MediaProps) => PresSlide; + addNotes: (notes: string) => PresSlide; + addShape: (shapeName: SHAPE_NAME, options?: ShapeProps) => PresSlide; + addTable: (tableRows: TableRow[], options?: TableProps) => PresSlide; + addText: (text: string | TextProps[], options?: TextPropsOptions) => PresSlide; + /** + * Background color or image (`color` | `path` | `data`) + * @example { color: 'FF3399' } - hex color + * @example { color: 'FF3399', transparency:50 } - hex color with 50% transparency + * @example { path: 'https://onedrives.com/myimg.png` } - retrieve image via URL + * @example { path: '/home/gitbrent/images/myimg.png` } - retrieve image via local path + * @example { data: 'image/png;base64,iVtDaDrF[...]=' } - base64 string + * @since v3.3.0 + */ + background?: BackgroundProps; + /** + * Default text color (hex format) + * @example 'FF3399' + * @default '000000' (DEF_FONT_COLOR) + */ + color?: HexColor; + /** + * Whether slide is hidden + * @default false + */ + hidden?: boolean; + /** + * Slide number options + */ + slideNumber?: SlideNumberProps; +} +export interface AddSlideProps { + masterName?: string; + sectionTitle?: string; +} +export interface PresentationProps { + author: string; + company: string; + /** + * Default kerning threshold in points for text (e.g., 12 means "Use kerning for 12 points and above") + * Set to 0 or undefined to disable kerning + * Value is stored in hundredths of a point internally (e.g., 12 points = 1200) + */ + defaultTextKern?: number; + /** + * Embedded fonts to include in the presentation + */ + embeddedFonts: EmbeddedFont[]; + layout: string; + masterSlide: PresSlide; + /** + * Presentation's layout + * read-only + */ + presLayout: PresLayout; + revision: string; + /** + * Whether to enable right-to-left mode + * @default false + */ + rtlMode: boolean; + subject: string; + theme: ThemeProps; + title: string; +} +export interface IPresentationProps extends PresentationProps { + sections: SectionProps[]; + slideLayouts: SlideLayout[]; + slides: PresSlide[]; +} diff --git a/dist/gen-charts.d.ts b/dist/gen-charts.d.ts new file mode 100644 index 000000000..dd14d06c8 --- /dev/null +++ b/dist/gen-charts.d.ts @@ -0,0 +1,38 @@ +/** + * PptxGenJS: Chart Generation + */ +import { CHART_TYPE } from './core-enums'; +import { ISlideRelChart } from './core-interfaces'; +import JSZip from 'jszip'; +/** + * Based on passed data, creates Excel Worksheet that is used as a data source for a chart. + * @param {ISlideRelChart} chartObject - chart object + * @param {JSZip} zip - file that the resulting XLSX should be added to + * @return {Promise} promise of generating the XLSX file + */ +export declare function createExcelWorksheet(chartObject: ISlideRelChart, zip: JSZip): Promise; +/** + * Main entry point method for create charts + * @see: http://www.datypic.com/sc/ooxml/s-dml-chart.xsd.html + * @param {ISlideRelChart} rel - chart object + * @return {string} XML + */ +export declare function makeXmlCharts(rel: ISlideRelChart): string; +/** + * Check if a chart type is a ChartEx type + * @param {CHART_TYPE} chartType - the chart type to check + * @return {boolean} true if ChartEx type + */ +export declare function isChartExType(chartType: CHART_TYPE | string): boolean; +/** + * Get the ChartEx layoutId for a chart type + * @param {CHART_TYPE} chartType - the chart type + * @return {string} the layoutId + */ +export declare function getChartExLayoutId(chartType: CHART_TYPE | string): string; +/** + * Generate ChartEx XML (for treemap, sunburst, histogram, pareto, boxWhisker, waterfall, funnel charts) + * @param {ISlideRelChart} rel - chart object + * @return {string} XML + */ +export declare function makeXmlChartEx(rel: ISlideRelChart): string; diff --git a/dist/gen-media.d.ts b/dist/gen-media.d.ts new file mode 100644 index 000000000..ab6036f37 --- /dev/null +++ b/dist/gen-media.d.ts @@ -0,0 +1,14 @@ +/** + * PptxGenJS: Media Methods + */ +import { PresSlide, SlideLayout } from './core-interfaces'; +/** + * Encode Image/Audio/Video into base64 + * @param {PresSlide | SlideLayout} layout - slide layout + * @return {Promise} promise + */ +export declare function encodeSlideMediaRels(layout: PresSlide | SlideLayout): Array>; +/** + * FIXME: TODO: currently unused + * TODO: Should return a Promise + */ diff --git a/dist/gen-objects.d.ts b/dist/gen-objects.d.ts new file mode 100644 index 000000000..64226feef --- /dev/null +++ b/dist/gen-objects.d.ts @@ -0,0 +1,119 @@ +/** + * PptxGenJS: Slide Object Generators + */ +import { CHART_NAME, SHAPE_NAME } from './core-enums'; +import { AddSlideProps, BackgroundProps, GroupProps, IChartMulti, IChartOptsLib, IOptsChartData, ImageProps, MediaProps, PresLayout, PresSlide, ShapeProps, SlideLayout, SlideMasterProps, TableProps, TableRow, TextProps, TextPropsOptions } from './core-interfaces'; +/** + * Transforms a slide definition to a slide object that is then passed to the XML transformation process. + * @param {SlideMasterProps} props - slide definition + * @param {PresSlide|SlideLayout} target - empty slide object that should be updated by the passed definition + */ +export declare function createSlideMaster(props: SlideMasterProps, target: SlideLayout): void; +/** + * Generate the chart based on input data. + * OOXML Chart Spec: ISO/IEC 29500-1:2016(E) + * + * @param {CHART_NAME | IChartMulti[]} `type` should belong to: 'column', 'pie' + * @param {[]} `data` a JSON object with follow the following format + * @param {IChartOptsLib} `opt` chart options + * @param {PresSlide} `target` slide object that the chart will be added to + * @return {object} chart object + * { + * title: 'eSurvey chart', + * data: [ + * { + * name: 'Income', + * labels: ['2005', '2006', '2007', '2008', '2009'], + * values: [23.5, 26.2, 30.1, 29.5, 24.6] + * }, + * { + * name: 'Expense', + * labels: ['2005', '2006', '2007', '2008', '2009'], + * values: [18.1, 22.8, 23.9, 25.1, 25] + * } + * ] + * } + */ +export declare function addChartDefinition(target: PresSlide, type: CHART_NAME | IChartMulti[], data: IOptsChartData[], opt: IChartOptsLib): object; +/** + * Adds an image object to a slide definition. + * This method can be called with only two args (opt, target) - this is supposed to be the only way in future. + * @param {ImageProps} `opt` - object containing `path`/`data`, `x`, `y`, etc. + * @param {PresSlide} `target` - slide that the image should be added to (if not specified as the 2nd arg) + * @note: Remote images (eg: "http://whatev.com/blah"/from web and/or remote server arent supported yet - we'd need to create an , load it, then send to canvas + * @see: https://stackoverflow.com/questions/164181/how-to-fetch-a-remote-image-to-display-in-a-canvas) + */ +export declare function addImageDefinition(target: PresSlide, opt: ImageProps): void; +/** + * Adds a media object to a slide definition. + * @param {PresSlide} `target` - slide object that the media will be added to + * @param {MediaProps} `opt` - media options + */ +export declare function addMediaDefinition(target: PresSlide, opt: MediaProps): void; +/** + * Adds Notes to a slide. + * @param {PresSlide} `target` slide object + * @param {string} `notes` + * @since 2.3.0 + */ +export declare function addNotesDefinition(target: PresSlide, notes: string): void; +/** + * Adds a shape object to a slide definition. + * @param {PresSlide} target slide object that the shape should be added to + * @param {SHAPE_NAME} shapeName shape name + * @param {ShapeProps} opts shape options + */ +export declare function addShapeDefinition(target: PresSlide, shapeName: SHAPE_NAME, opts: ShapeProps): void; +/** + * Adds a table object to a slide definition. + * @param {PresSlide} target - slide object that the table should be added to + * @param {TableRow[]} tableRows - table data + * @param {TableProps} options - table options + * @param {SlideLayout} slideLayout - Slide layout + * @param {PresLayout} presLayout - Presentation layout + * @param {Function} addSlide - method + * @param {Function} getSlide - method + */ +export declare function addTableDefinition(target: PresSlide, tableRows: TableRow[], options: TableProps, slideLayout: SlideLayout, presLayout: PresLayout, addSlide: (options?: AddSlideProps) => PresSlide, getSlide: (slideNumber: number) => PresSlide): PresSlide[]; +/** + * Adds a picture placeholder object to a slide/layout definition. + * Creates a native element with empty that acts as an image placeholder. + * @param {PresSlide} target - slide/layout object that the placeholder should be added to + * @param {object} props - picture placeholder properties (x, y, w, h, name, idx) + * @param {number} placeholderIdx - the placeholder index + * @since: 1.0.6 + */ +export declare function addPicturePlaceholderDefinition(target: PresSlide, props: { + x: number; + y: number; + w: number; + h: number; + name?: string; + idx?: number; +}, placeholderIdx: number): void; +/** + * Adds a text object to a slide definition. + * @param {PresSlide} target - slide object that the text should be added to + * @param {string|TextProps[]} text text string or object + * @param {TextPropsOptions} opts text options + * @param {boolean} isPlaceholder whether this a placeholder object + * @since: 1.0.0 + */ +export declare function addTextDefinition(target: PresSlide, text: TextProps[], opts: TextPropsOptions, isPlaceholder: boolean): void; +/** + * Adds placeholder objects to slide + * @param {PresSlide} slide - slide object containing layouts + */ +export declare function addPlaceholdersToSlideLayouts(slide: PresSlide): void; +/** + * Adds a background image or color to a slide definition. + * @param {BackgroundProps} props - color string or an object with image definition + * @param {PresSlide} target - slide object that the background is set to + */ +export declare function addBackgroundDefinition(props: BackgroundProps, target: SlideLayout): void; +/** + * Adds a group object to the slide + * @param {PresSlide} target - slide to add group to + * @param {GroupProps} opts - group options including children + */ +export declare function addGroupDefinition(target: PresSlide, opts: GroupProps): void; diff --git a/dist/gen-tables.d.ts b/dist/gen-tables.d.ts new file mode 100644 index 000000000..1f106f41b --- /dev/null +++ b/dist/gen-tables.d.ts @@ -0,0 +1,22 @@ +/** + * PptxGenJS: Table Generation + */ +import { PresLayout, SlideLayout, TableCell, TableToSlidesProps, TableRowSlide } from './core-interfaces'; +import PptxGenJS from './pptxgen'; +/** + * Takes an array of table rows and breaks into an array of slides, which contain the calculated amount of table rows that fit on that slide + * @param {TableCell[][]} tableRows - table rows + * @param {TableToSlidesProps} tableProps - table2slides properties + * @param {PresLayout} presLayout - presentation layout + * @param {SlideLayout} masterSlide - master slide + * @return {TableRowSlide[]} array of table rows + */ +export declare function getSlidesForTableRows(tableRows: TableCell[][], tableProps: TableToSlidesProps, presLayout: PresLayout, masterSlide?: SlideLayout): TableRowSlide[]; +/** + * Reproduces an HTML table as a PowerPoint table - including column widths, style, etc. - creates 1 or more slides as needed + * @param {PptxGenJS} pptx - pptxgenjs instance + * @param {string} tabEleId - HTMLElementID of the table + * @param {ITableToSlidesOpts} options - array of options (e.g.: tabsize) + * @param {SlideLayout} masterSlide - masterSlide + */ +export declare function genTableToSlides(pptx: PptxGenJS, tabEleId: string, options?: TableToSlidesProps, masterSlide?: SlideLayout): void; diff --git a/dist/gen-utils.d.ts b/dist/gen-utils.d.ts new file mode 100644 index 000000000..147ae1979 --- /dev/null +++ b/dist/gen-utils.d.ts @@ -0,0 +1,101 @@ +/** + * PptxGenJS: Utility Methods + */ +import { SCHEME_COLORS } from './core-enums'; +import { PresLayout, TextGlowProps, PresSlide, ShapeFillProps, Color, ShapeLineProps, Coord, ShadowProps } from './core-interfaces'; +/** + * Translates any type of `x`/`y`/`w`/`h` prop to EMU + * - guaranteed to return a result regardless of undefined, null, etc. (0) + * - {number} - 12800 (EMU) + * - {number} - 0.5 (inches) + * - {string} - "75%" + * @param {number|string} size - numeric ("5.5") or percentage ("90%") + * @param {'X' | 'Y'} xyDir - direction + * @param {PresLayout} layout - presentation layout + * @returns {number} calculated size + */ +export declare function getSmartParseNumber(size: Coord, xyDir: 'X' | 'Y', layout: PresLayout): number; +/** + * Basic UUID Generator Adapted + * @link https://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript#answer-2117523 + * @param {string} uuidFormat - UUID format + * @returns {string} UUID + */ +export declare function getUuid(uuidFormat: string): string; +/** + * Replace special XML characters with HTML-encoded strings + * @param {string} xml - XML string to encode + * @returns {string} escaped XML + */ +export declare function encodeXmlEntities(xml: string): string; +/** + * Convert inches into EMU + * @param {number|string} inches - as string or number + * @returns {number} EMU value + */ +export declare function inch2Emu(inches: number | string): number; +/** + * Convert `pt` into points (using `ONEPT`) + * @param {number|string} pt + * @returns {number} value in points (`ONEPT`) + */ +export declare function valToPts(pt: number | string): number; +/** + * Convert degrees (0..360) to PowerPoint `rot` value + * @param {number} d degrees + * @returns {number} calculated `rot` value + */ +export declare function convertRotationDegrees(d: number): number; +/** + * Converts component value to hex value + * @param {number} c - component color + * @returns {string} hex string + */ +export declare function componentToHex(c: number): string; +/** + * Converts RGB colors from css selectors to Hex for Presentation colors + * @param {number} r - red value + * @param {number} g - green value + * @param {number} b - blue value + * @returns {string} XML string + */ +export declare function rgbToHex(r: number, g: number, b: number): string; +/** TODO: FUTURE: TODO-4.0: + * @date 2022-04-10 + * @tldr this s/b a private method with all current calls switched to `genXmlColorSelection()` + * @desc lots of code calls this method + * @example [gen-charts.tx] `strXml += '' + createColorElement(seriesColor, ``) + ''` + * Thi sis wrong. We s/b calling `genXmlColorSelection()` instead as it returns `BLAH`!! + */ +/** + * Create either a `a:schemeClr` - (scheme color) or `a:srgbClr` (hexa representation). + * @param {string|SCHEME_COLORS} colorStr - hexa representation (eg. "FFFF00") or a scheme color constant (eg. pptx.SchemeColor.ACCENT1) + * @param {string} innerElements - additional elements that adjust the color and are enclosed by the color element + * @returns {string} XML string + */ +export declare function createColorElement(colorStr: string | SCHEME_COLORS, innerElements?: string): string; +/** + * Creates `a:glow` element + * @param {TextGlowProps} options glow properties + * @param {TextGlowProps} defaults defaults for unspecified properties in `opts` + * @see http://officeopenxml.com/drwSp-effects.php + * { size: 8, color: 'FFFFFF', opacity: 0.75 }; + */ +export declare function createGlowElement(options: TextGlowProps, defaults: TextGlowProps): string; +/** + * Create color selection + * @param {Color | ShapeFillProps | ShapeLineProps} props fill props + * @returns XML string + */ +export declare function genXmlColorSelection(props: Color | ShapeFillProps | ShapeLineProps): string; +/** + * Get a new rel ID (rId) for charts, media, etc. + * @param {PresSlide} target - the slide to use + * @returns {number} count of all current rels plus 1 for the caller to use as its "rId" + */ +export declare function getNewRelId(target: PresSlide): number; +/** + * Checks shadow options passed by user and performs corrections if needed. + * @param {ShadowProps} ShadowProps - shadow options + */ +export declare function correctShadowOptions(ShadowProps: ShadowProps): ShadowProps | undefined; diff --git a/dist/gen-xml.d.ts b/dist/gen-xml.d.ts new file mode 100644 index 000000000..4a509d997 --- /dev/null +++ b/dist/gen-xml.d.ts @@ -0,0 +1,174 @@ +/** + * PptxGenJS: XML Generation + */ +import { EmbeddedFont, IPresentationProps, ISlideObject, PresSlide, ShadowProps, SlideLayout, TableCell, TextProps } from './core-interfaces'; +/** + * Generate the XML for text and its options (bold, bullet, etc) including text runs (word-level formatting) + * @param {ISlideObject|TableCell} slideObj - slideObj or tableCell + * @note PPT text lines [lines followed by line-breaks] are created using

-aragraph's + * @note Bullets are a paragragh-level formatting device + * @template + * + * + * + * + * + * + * + * + * + * textbox text + * + * + * + * + * @returns XML containing the param object's text and formatting + */ +export declare function genXmlTextBody(slideObj: ISlideObject | TableCell): string; +/** + * Generate an XML Placeholder + * @param {ISlideObject} placeholderObj + * @returns XML + */ +export declare function genXmlPlaceholder(placeholderObj: ISlideObject, isLayoutPlaceholder?: boolean, slideText?: TextProps[]): string; +/** + * Generate XML ContentType + * @param {PresSlide[]} slides - slides + * @param {SlideLayout[]} slideLayouts - slide layouts + * @param {PresSlide} masterSlide - master slide + * @returns XML + */ +export declare function makeXmlContTypes(slides: PresSlide[], slideLayouts: SlideLayout[], masterSlide?: PresSlide, embeddedFonts?: EmbeddedFont[]): string; +/** + * Creates `_rels/.rels` + * @returns XML + */ +export declare function makeXmlRootRels(): string; +/** + * Creates `docProps/app.xml` + * @param {PresSlide[]} slides - Presenation Slides + * @param {string} company - "Company" metadata + * @returns XML + */ +export declare function makeXmlApp(slides: PresSlide[], company: string): string; +/** + * Creates `docProps/core.xml` + * @param {string} title - metadata data + * @param {string} subject - metadata data + * @param {string} author - metadata value + * @param {string} revision - metadata value + * @returns XML + */ +export declare function makeXmlCore(title: string, subject: string, author: string, revision: string): string; +/** + * Creates `ppt/_rels/presentation.xml.rels` + * @param {PresSlide[]} slides - Presenation Slides + * @param {EmbeddedFont[]} embeddedFonts - Embedded fonts (optional) + * @returns XML + */ +export declare function makeXmlPresentationRels(slides: PresSlide[], embeddedFonts?: EmbeddedFont[]): string; +/** + * Generates XML for the slide file (`ppt/slides/slide1.xml`) + * @param {PresSlide} slide - the slide object to transform into XML + * @return {string} XML + */ +export declare function makeXmlSlide(slide: PresSlide): string; +/** + * Get text content of Notes from Slide + * @param {PresSlide} slide - the slide object to transform into XML + * @return {string} notes text + */ +export declare function getNotesFromSlide(slide: PresSlide): string; +/** + * Generate XML for Notes Master (notesMaster1.xml) + * @returns {string} XML + */ +export declare function makeXmlNotesMaster(): string; +/** + * Creates Notes Slide (`ppt/notesSlides/notesSlide1.xml`) + * @param {PresSlide} slide - the slide object to transform into XML + * @return {string} XML + */ +export declare function makeXmlNotesSlide(slide: PresSlide): string; +/** + * Generates the XML layout resource from a layout object + * @param {SlideLayout} layout - slide layout (master) + * @return {string} XML + */ +export declare function makeXmlLayout(layout: SlideLayout): string; +/** + * Creates Slide Master 1 (`ppt/slideMasters/slideMaster1.xml`) + * @param {PresSlide} slide - slide object that represents master slide layout + * @param {SlideLayout[]} layouts - slide layouts + * @return {string} XML + */ +export declare function makeXmlMaster(slide: PresSlide, layouts: SlideLayout[]): string; +/** + * Generates XML string for a slide layout relation file + * @param {number} layoutNumber - 1-indexed number of a layout that relations are generated for + * @param {SlideLayout[]} slideLayouts - Slide Layouts + * @return {string} XML + */ +export declare function makeXmlSlideLayoutRel(layoutNumber: number, slideLayouts: SlideLayout[]): string; +/** + * Creates `ppt/_rels/slide*.xml.rels` + * @param {PresSlide[]} slides + * @param {SlideLayout[]} slideLayouts - Slide Layout(s) + * @param {number} `slideNumber` 1-indexed number of a layout that relations are generated for + * @return {string} XML + */ +export declare function makeXmlSlideRel(slides: PresSlide[], slideLayouts: SlideLayout[], slideNumber: number): string; +/** + * Generates XML string for a slide relation file. + * @param {number} slideNumber - 1-indexed number of a layout that relations are generated for + * @return {string} XML + */ +export declare function makeXmlNotesSlideRel(slideNumber: number): string; +/** + * Creates `ppt/slideMasters/_rels/slideMaster1.xml.rels` + * @param {PresSlide} masterSlide - Slide object + * @param {SlideLayout[]} slideLayouts - Slide Layouts + * @return {string} XML + */ +export declare function makeXmlMasterRel(masterSlide: PresSlide, slideLayouts: SlideLayout[]): string; +/** + * Creates `ppt/notesMasters/_rels/notesMaster1.xml.rels` + * @return {string} XML + */ +export declare function makeXmlNotesMasterRel(): string; +/** + * Creates `ppt/theme/theme1.xml` + * Supports custom theme colors via pres.theme.colorScheme + * @return {string} XML + */ +export declare function makeXmlTheme(pres: IPresentationProps): string; +/** + * Create presentation file (`ppt/presentation.xml`) + * @see https://docs.microsoft.com/en-us/office/open-xml/structure-of-a-presentationml-document + * @see http://www.datypic.com/sc/ooxml/t-p_CT_Presentation.html + * @param {IPresentationProps} pres - presentation + * @return {string} XML + */ +export declare function makeXmlPresentation(pres: IPresentationProps): string; +/** + * Create `ppt/presProps.xml` + * @return {string} XML + */ +export declare function makeXmlPresProps(): string; +/** + * Create `ppt/tableStyles.xml` + * @see: http://openxmldeveloper.org/discussions/formats/f/13/p/2398/8107.aspx + * @param {string} [customXml] - Custom table styles XML content (without XML declaration) + * @return {string} XML + */ +export declare function makeXmlTableStyles(customXml?: string): string; +/** + * Creates `ppt/viewProps.xml` + * @return {string} XML + */ +export declare function makeXmlViewProps(): string; +/** + * Checks shadow options passed by user and performs corrections if needed. + * @param {ShadowProps} shadowProps - shadow options + */ +export declare function correctShadowOptions(shadowProps: ShadowProps): void; diff --git a/dist/pptxgen.bundle.js b/dist/pptxgen.bundle.js deleted file mode 100644 index c20c94450..000000000 --- a/dist/pptxgen.bundle.js +++ /dev/null @@ -1,96 +0,0 @@ -/* PptxGenJS 4.0.1 @ 2025-06-25T23:35:35.101Z */ -!function(e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).JSZip=e()}(function(){return function a(n,o,i){function s(t,e){if(!o[t]){if(!n[t]){var r="function"==typeof require&&require;if(!e&&r)return r(t,!0);if(A)return A(t,!0);e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}r=o[t]={exports:{}};n[t][0].call(r.exports,function(e){return s(n[t][1][e]||e)},r,r.exports,a,n,o,i)}return o[t].exports}for(var A="function"==typeof require&&require,e=0;e>4,o=1>6:64,i=2>2)+u.charAt(n)+u.charAt(o)+u.charAt(i));return s.join("")},r.decode=function(e){var t,r,a,n,o,i=0,s=0,A="data:";if(e.substr(0,A.length)===A)throw new Error("Invalid base64 input, it looks like a data url.");var l,A=3*(e=e.replace(/[^A-Za-z0-9+/=]/g,"")).length/4;if(e.charAt(e.length-1)===u.charAt(64)&&A--,e.charAt(e.length-2)===u.charAt(64)&&A--,A%1!=0)throw new Error("Invalid base64 input, bad content length.");for(l=new(c.uint8array?Uint8Array:Array)(0|A);i>4,r=(15&n)<<4|(n=u.indexOf(e.charAt(i++)))>>2,a=(3&n)<<6|(o=u.indexOf(e.charAt(i++))),l[s++]=t,64!==n&&(l[s++]=r),64!==o&&(l[s++]=a);return l}},{"./support":30,"./utils":32}],2:[function(e,t,r){var a=e("./external"),n=e("./stream/DataWorker"),o=e("./stream/Crc32Probe"),i=e("./stream/DataLengthProbe");function s(e,t,r,a,n){this.compressedSize=e,this.uncompressedSize=t,this.crc32=r,this.compression=a,this.compressedContent=n}s.prototype={getContentWorker:function(){var e=new n(a.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new i("data_length")),t=this;return e.on("end",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),e},getCompressedWorker:function(){return new n(a.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},s.createWorkerFrom=function(e,t,r){return e.pipe(new o).pipe(new i("uncompressedSize")).pipe(t.compressWorker(r)).pipe(new i("compressedSize")).withStreamInfo("compression",t)},t.exports=s},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(e,t,r){var a=e("./stream/GenericWorker");r.STORE={magic:"\0\0",compressWorker:function(){return new a("STORE compression")},uncompressWorker:function(){return new a("STORE decompression")}},r.DEFLATE=e("./flate")},{"./flate":7,"./stream/GenericWorker":28}],4:[function(e,t,r){var a=e("./utils"),i=(()=>{for(var e=[],t=0;t<256;t++){for(var r=t,a=0;a<8;a++)r=1&r?3988292384^r>>>1:r>>>1;e[t]=r}return e})();t.exports=function(e,t){return void 0!==e&&e.length?("string"!==a.getTypeOf(e)?(e,t,r)=>{var a=i,n=0+r;e^=-1;for(var o=0;o>>8^a[255&(e^t[o])];return-1^e}:(e,t,r)=>{var a=i,n=0+r;e^=-1;for(var o=0;o>>8^a[255&(e^t.charCodeAt(o))];return-1^e})(0|t,e,e.length):0}},{"./utils":32}],5:[function(e,t,r){r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],6:[function(e,t,r){e="undefined"!=typeof Promise?Promise:e("lie");t.exports={Promise:e}},{lie:37}],7:[function(e,t,r){var a="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array,n=e("pako"),o=e("./utils"),i=e("./stream/GenericWorker"),s=a?"uint8array":"array";function A(e,t){i.call(this,"FlateWorker/"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}r.magic="\b\0",o.inherits(A,i),A.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(o.transformTo(s,e.data),!1)},A.prototype.flush=function(){i.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},A.prototype.cleanUp=function(){i.prototype.cleanUp.call(this),this._pako=null},A.prototype._createPako=function(){this._pako=new n[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var t=this;this._pako.onData=function(e){t.push({data:e,meta:t.meta})}},r.compressWorker=function(e){return new A("Deflate",e)},r.uncompressWorker=function(){return new A("Inflate",{})}},{"./stream/GenericWorker":28,"./utils":32,pako:38}],8:[function(e,t,r){function v(e,t){for(var r="",a=0;a>>=8;return r}function a(e,t,r,a,n,o){var i=e.file,s=e.compression,A=o!==b.utf8encode,l=y.transformTo("string",o(i.name)),c=y.transformTo("string",b.utf8encode(i.name)),p=i.comment,o=y.transformTo("string",o(p)),u=y.transformTo("string",b.utf8encode(p)),f=c.length!==i.name.length,p=u.length!==p.length,d="",h=i.dir,g=i.date,m={crc32:0,compressedSize:0,uncompressedSize:0},r=(t&&!r||(m.crc32=e.crc32,m.compressedSize=e.compressedSize,m.uncompressedSize=e.uncompressedSize),0),e=(t&&(r|=8),A||!f&&!p||(r|=2048),0),t=0,g=(h&&(e|=16),"UNIX"===n?(t=798,e|=(65535&((A=i.unixPermissions)?A:h?16893:33204))<<16):(t=20,e|=63&(i.dosPermissions||0)),n=g.getUTCHours(),n=(n=((n<<=6)|g.getUTCMinutes())<<5)|g.getUTCSeconds()/2,A=g.getUTCFullYear()-1980,A=(A=((A<<=4)|g.getUTCMonth()+1)<<5)|g.getUTCDate(),f&&(h=v(1,1)+v(w(l),4)+c,d+="up"+v(h.length,2)+h),p&&(i=v(1,1)+v(w(o),4)+u,d+="uc"+v(i.length,2)+i),""),g=(g=(g=(g=(g=(g=(g=(g=(g=(g+="\n\0")+v(r,2))+s.magic)+v(n,2))+v(A,2))+v(m.crc32,4))+v(m.compressedSize,4))+v(m.uncompressedSize,4))+v(l.length,2))+v(d.length,2);return{fileRecord:x.LOCAL_FILE_HEADER+g+l+d,dirRecord:x.CENTRAL_FILE_HEADER+v(t,2)+g+v(o.length,2)+"\0\0\0\0"+v(e,4)+v(a,4)+l+d+o}}var y=e("../utils"),n=e("../stream/GenericWorker"),b=e("../utf8"),w=e("../crc32"),x=e("../signature");function o(e,t,r,a){n.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=r,this.encodeFileName=a,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}y.inherits(o,n),o.prototype.push=function(e){var t=e.meta.percent||0,r=this.entriesCount,a=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,n.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:r?(t+100*(r-a-1))/r:100}}))},o.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;t?(e=a(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName),this.push({data:e.fileRecord,meta:{percent:0}})):this.accumulate=!0},o.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,r=a(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(r.dirRecord),t)this.push({data:(t=e,x.DATA_DESCRIPTOR+v(t.crc32,4)+v(t.compressedSize,4)+v(t.uncompressedSize,4)),meta:{percent:100}});else for(this.push({data:r.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},o.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t(n=y.transformTo("string",n(a)),x.CENTRAL_DIRECTORY_END+"\0\0\0\0"+v(e,2)+v(e,2)+v(t,4)+v(r,4)+v(n.length,2)+n))(this.dirRecords.length,r,e,this.zipComment,this.encodeFileName);this.push({data:r,meta:{percent:100}})},o.prototype.prepareNextSource=function(){this.previous=this._sources.shift(),this.openedSource(this.previous.streamInfo),this.isPaused?this.previous.pause():this.previous.resume()},o.prototype.registerPrevious=function(e){this._sources.push(e);var t=this;return e.on("data",function(e){t.processChunk(e)}),e.on("end",function(){t.closedSource(t.previous.streamInfo),t._sources.length?t.prepareNextSource():t.end()}),e.on("error",function(e){t.error(e)}),this},o.prototype.resume=function(){return!!n.prototype.resume.call(this)&&(!this.previous&&this._sources.length?(this.prepareNextSource(),!0):this.previous||this._sources.length||this.generatedError?void 0:(this.end(),!0))},o.prototype.error=function(e){var t=this._sources;if(!n.prototype.error.call(this,e))return!1;for(var r=0;r{if(t=l[e=e||t])return t;throw new Error(e+" is not a valid compression method !")})(t.options.compression,i.compression),a=t.options.compressionOptions||i.compressionOptions||{},n=t.dir,o=t.date;t._compressWorker(r,a).withStreamInfo("file",{name:e,dir:n,date:o,comment:t.comment||"",unixPermissions:t.unixPermissions,dosPermissions:t.dosPermissions}).pipe(s)}),s.entriesCount=A}catch(e){s.error(e)}return s}},{"../compressions":3,"./ZipFileWorker":8}],10:[function(e,t,r){function a(){if(!(this instanceof a))return new a;if(arguments.length)throw new Error("The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.");this.files=Object.create(null),this.comment=null,this.root="",this.clone=function(){var e,t=new a;for(e in this)"function"!=typeof this[e]&&(t[e]=this[e]);return t}}(a.prototype=e("./object")).loadAsync=e("./load"),a.support=e("./support"),a.defaults=e("./defaults"),a.version="3.10.1",a.loadAsync=function(e,t){return(new a).loadAsync(e,t)},a.external=e("./external"),t.exports=a},{"./defaults":5,"./external":6,"./load":11,"./object":15,"./support":30}],11:[function(e,t,r){var A=e("./utils"),n=e("./external"),a=e("./utf8"),o=e("./zipEntries"),l=e("./stream/Crc32Probe"),c=e("./nodejsUtils");t.exports=function(e,i){var s=this;return i=A.extend(i||{},{base64:!1,checkCRC32:!1,optimizedBinaryString:!1,createFolders:!1,decodeFileName:a.utf8decode}),c.isNode&&c.isStream(e)?n.Promise.reject(new Error("JSZip can't accept a stream when loading a zip file.")):A.prepareContent("the loaded zip file",e,!0,i.optimizedBinaryString,i.base64).then(function(e){var t=new o(i);return t.load(e),t}).then(function(e){var t=[n.Promise.resolve(e)],r=e.files;if(i.checkCRC32)for(var a=0;anew n.Promise(function(e,t){var r=a.decompressed.getContentWorker().pipe(new l);r.on("error",function(e){t(e)}).on("end",function(){r.streamInfo.crc32!==a.decompressed.crc32?t(new Error("Corrupted zip : CRC32 mismatch")):e()}).resume()}))(r[a]));return n.Promise.all(t)}).then(function(e){for(var e=e.shift(),t=e.files,r=0;r=this.index;t--)r=(r<<8)+this.byteAt(t);return this.index+=e,r},readString:function(e){return a.transformTo("string",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=n},{"../utils":32}],19:[function(e,t,r){var a=e("./Uint8ArrayReader");function n(e){a.call(this,e)}e("../utils").inherits(n,a),n.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=n},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(e,t,r){var a=e("./DataReader");function n(e){a.call(this,e)}e("../utils").inherits(n,a),n.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},n.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},n.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},n.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=n},{"../utils":32,"./DataReader":18}],21:[function(e,t,r){var a=e("./ArrayReader");function n(e){a.call(this,e)}e("../utils").inherits(n,a),n.prototype.readData=function(e){var t;return this.checkOffset(e),0===e?new Uint8Array(0):(t=this.data.subarray(this.zero+this.index,this.zero+this.index+e),this.index+=e,t)},t.exports=n},{"../utils":32,"./ArrayReader":17}],22:[function(e,t,r){var a=e("../utils"),n=e("../support"),o=e("./ArrayReader"),i=e("./StringReader"),s=e("./NodeBufferReader"),A=e("./Uint8ArrayReader");t.exports=function(e){var t=a.getTypeOf(e);return a.checkSupport(t),"string"!==t||n.uint8array?"nodebuffer"===t?new s(e):n.uint8array?new A(a.transformTo("uint8array",e)):new o(a.transformTo("array",e)):new i(e)}},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(e,t,r){r.LOCAL_FILE_HEADER="PK",r.CENTRAL_FILE_HEADER="PK",r.CENTRAL_DIRECTORY_END="PK",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK",r.ZIP64_CENTRAL_DIRECTORY_END="PK",r.DATA_DESCRIPTOR="PK\b"},{}],24:[function(e,t,r){var a=e("./GenericWorker"),n=e("../utils");function o(e){a.call(this,"ConvertWorker to "+e),this.destType=e}n.inherits(o,a),o.prototype.processChunk=function(e){this.push({data:n.transformTo(this.destType,e.data),meta:e.meta})},t.exports=o},{"../utils":32,"./GenericWorker":28}],25:[function(e,t,r){var a=e("./GenericWorker"),n=e("../crc32");function o(){a.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}e("../utils").inherits(o,a),o.prototype.processChunk=function(e){this.streamInfo.crc32=n(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=o},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(e,t,r){var a=e("../utils"),n=e("./GenericWorker");function o(e){n.call(this,"DataLengthProbe for "+e),this.propName=e,this.withStreamInfo(e,0)}a.inherits(o,n),o.prototype.processChunk=function(e){var t;e&&(t=this.streamInfo[this.propName]||0,this.streamInfo[this.propName]=t+e.data.length),n.prototype.processChunk.call(this,e)},t.exports=o},{"../utils":32,"./GenericWorker":28}],27:[function(e,t,r){var a=e("../utils"),n=e("./GenericWorker");function o(e){n.call(this,"DataWorker");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=a.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}a.inherits(o,n),o.prototype.cleanUp=function(){n.prototype.cleanUp.call(this),this.data=null},o.prototype.resume=function(){return!!n.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,a.delay(this._tickAndRepeat,[],this)),!0)},o.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished)||(a.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0)},o.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case"string":e=this.data.substring(this.index,t);break;case"uint8array":e=this.data.subarray(this.index,t);break;case"array":case"nodebuffer":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=o},{"../utils":32,"./GenericWorker":28}],28:[function(e,t,r){function a(e){this.name=e||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}a.prototype={push:function(e){this.emit("data",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit("error",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit("error",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var r=0;r "+e:e}},t.exports=a},{}],29:[function(e,t,r){var A=e("../utils"),n=e("./ConvertWorker"),o=e("./GenericWorker"),l=e("../base64"),a=e("../support"),i=e("../external"),s=null;if(a.nodestream)try{s=e("../nodejs/NodejsStreamOutputAdapter")}catch(e){}function c(e,s){return new i.Promise(function(t,r){var a=[],n=e._internalType,o=e._outputType,i=e._mimeType;e.on("data",function(e,t){a.push(e),s&&s(t)}).on("error",function(e){a=[],r(e)}).on("end",function(){try{var e=((e,t,r)=>{switch(e){case"blob":return A.newBlob(A.transformTo("arraybuffer",t),r);case"base64":return l.encode(t);default:return A.transformTo(e,t)}})(o,((e,t)=>{for(var r=0,a=null,n=0,o=0;o>>6:(r<65536?t[n++]=224|r>>>12:(t[n++]=240|r>>>18,t[n++]=128|r>>>12&63),t[n++]=128|r>>>6&63),t[n++]=128|63&r);return t},n.utf8decode=function(e){if(l.nodebuffer)return A.transformTo("nodebuffer",e).toString("utf-8");for(var t,r,a,n=e=A.transformTo(l.uint8array?"uint8array":"array",e),o=n.length,i=new Array(2*o),s=t=0;s>10&1023,i[t++]=56320|1023&r)}return i.length!==t&&(i.subarray?i=i.subarray(0,t):i.length=t),A.applyFromCharCode(i)},A.inherits(o,r),o.prototype.processChunk=function(e){var t=A.transformTo(l.uint8array?"uint8array":"array",e.data),r=(this.leftOver&&this.leftOver.length&&(l.uint8array?(r=t,(t=new Uint8Array(r.length+this.leftOver.length)).set(this.leftOver,0),t.set(r,this.leftOver.length)):t=this.leftOver.concat(t),this.leftOver=null),((e,t)=>{for(var r=(t=(t=t||e.length)>e.length?e.length:t)-1;0<=r&&128==(192&e[r]);)r--;return!(r<0)&&0!==r&&r+p[e[r]]>t?r:t})(t)),a=t;r!==t.length&&(l.uint8array?(a=t.subarray(0,r),this.leftOver=t.subarray(r,t.length)):(a=t.slice(0,r),this.leftOver=t.slice(r,t.length))),this.push({data:n.utf8decode(a),meta:e.meta})},o.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:n.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},n.Utf8DecodeWorker=o,A.inherits(i,r),i.prototype.processChunk=function(e){this.push({data:n.utf8encode(e.data),meta:e.meta})},n.Utf8EncodeWorker=i},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(e,t,i){var s=e("./support"),A=e("./base64"),r=e("./nodejsUtils"),l=e("./external");function a(e){return e}function c(e,t){for(var r=0;r{try{return s.uint8array&&1===String.fromCharCode.apply(null,new Uint8Array(1)).length}catch(e){return!1}})(),nodebuffer:(()=>{try{return s.nodebuffer&&1===String.fromCharCode.apply(null,r.allocBuffer(1)).length}catch(e){return!1}})()}};function o(e){var t=65536,r=i.getTypeOf(e),a=!0;if("uint8array"===r?a=n.applyCanBeUsed.uint8array:"nodebuffer"===r&&(a=n.applyCanBeUsed.nodebuffer),a)for(;1{for(var t in A)if(Object.prototype.hasOwnProperty.call(A,t)&&A[t].magic===e)return A[t];return null})(this.compressionMethod)))throw new Error("Corrupted zip : compression "+n.pretty(this.compressionMethod)+" unknown (inner file : "+n.transformTo("string",this.fileName)+")");this.decompressed=new o(this.compressedSize,this.uncompressedSize,this.crc32,t,e.readData(this.compressedSize))},readCentralPart:function(e){this.versionMadeBy=e.readInt(2),e.skip(2),this.bitFlag=e.readInt(2),this.compressionMethod=e.readString(2),this.date=e.readDate(),this.crc32=e.readInt(4),this.compressedSize=e.readInt(4),this.uncompressedSize=e.readInt(4);var t=e.readInt(2);if(this.extraFieldsLength=e.readInt(2),this.fileCommentLength=e.readInt(2),this.diskNumberStart=e.readInt(2),this.internalFileAttributes=e.readInt(2),this.externalFileAttributes=e.readInt(4),this.localHeaderOffset=e.readInt(4),this.isEncrypted())throw new Error("Encrypted zip are not supported");e.skip(t),this.readExtraFields(e),this.parseZIP64ExtraField(e),this.fileComment=e.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var e=this.versionMadeBy>>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||"/"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){var e;this.extraFields[1]&&(e=a(this.extraFields[1].value),this.uncompressedSize===n.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===n.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===n.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===n.MAX_VALUE_32BITS)&&(this.diskNumberStart=e.readInt(4))},readExtraFields:function(e){var t,r,a,n=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4{r.resolve(e).then(function(e){o[t]=e,++i!==a||n||(n=!0,l.resolve(s,o))},function(e){n||(n=!0,l.reject(s,e))})})(e[t],t);return s},s.race=function(e){if("[object Array]"!==Object.prototype.toString.call(e))return this.reject(new TypeError("must be an array"));var t=e.length,r=!1;if(!t)return this.resolve([]);for(var a,n=-1,o=new this(A);++n>>6:(r<65536?t[n++]=224|r>>>12:(t[n++]=240|r>>>18,t[n++]=128|r>>>12&63),t[n++]=128|r>>>6&63),t[n++]=128|63&r);return t},r.buf2binstring=function(e){return c(e,e.length)},r.binstring2buf=function(e){for(var t=new A.Buf8(e.length),r=0,a=t.length;r>10&1023,i[r++]=56320|1023&a)}return c(i,r)},r.utf8border=function(e,t){for(var r=(t=(t=t||e.length)>e.length?e.length:t)-1;0<=r&&128==(192&e[r]);)r--;return!(r<0)&&0!==r&&r+l[e[r]]>t?r:t}},{"./common":41}],43:[function(e,t,r){t.exports=function(e,t,r,a){for(var n=65535&e|0,o=e>>>16&65535|0,i=0;0!==r;){for(r-=i=2e3{for(var e=[],t=0;t<256;t++){for(var r=t,a=0;a<8;a++)r=1&r?3988292384^r>>>1:r>>>1;e[t]=r}return e})();t.exports=function(e,t,r,a){var n=s,o=a+r;e^=-1;for(var i=a;i>>8^n[255&(e^t[i])];return-1^e}},{}],46:[function(e,R,t){var s,p=e("../utils/common"),A=e("./trees"),u=e("./adler32"),f=e("./crc32"),r=e("./messages"),l=0,c=0,d=-2,a=2,h=8,n=286,o=30,i=19,O=2*n+1,M=15,g=3,m=258,v=m+g+1,y=42,b=113;function w(e,t){return e.msg=r[t],t}function x(e){return(e<<1)-(4>>8&255,e.pending_buf[e.pending++]=255&t}function T(e,t){var r,a,n=e.max_chain_length,o=e.strstart,i=e.prev_length,s=e.nice_match,A=e.w_size-v>=2),e.lookaheadA&&0!=--n);return i<=e.lookahead?i:e.lookahead}function B(e){var t,r,a,n,o,i,s,A,l,c=e.w_size;do{if(A=e.window_size-e.lookahead-e.strstart,c+(c-v)<=e.strstart){for(p.arraySet(e.window,e.window,c,c,0),e.match_start-=c,e.strstart-=c,e.block_start-=c,t=r=e.hash_size;a=e.head[--t],e.head[t]=c<=a?a-c:0,--r;);for(t=r=c;a=e.prev[--t],e.prev[t]=c<=a?a-c:0,--r;);A+=c}if(0===e.strm.avail_in)break;if(i=e.window,s=e.strstart+e.lookahead,l=void 0,r=0===(l=(A=A)<(l=(o=e.strm).avail_in)?A:l)?0:(o.avail_in-=l,p.arraySet(i,o.input,o.next_in,l,s),1===o.state.wrap?o.adler=u(o.adler,i,l,s):2===o.state.wrap&&(o.adler=f(o.adler,i,l,s)),o.next_in+=l,o.total_in+=l,l),e.lookahead+=r,g<=e.lookahead+e.insert)for(n=e.strstart-e.insert,e.ins_h=e.window[n],e.ins_h=(e.ins_h<=g){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(B(e),0===e.lookahead&&t===l)return 1;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var a=e.block_start+r;if((0===e.strstart||e.strstart>=a)&&(e.lookahead=e.strstart-a,e.strstart=a,S(e,!1),0===e.strm.avail_out))return 1;if(e.w_size-v<=e.strstart-e.block_start&&(S(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(S(e,!0),0===e.strm.avail_out?3:4):(e.strstart>e.block_start&&(S(e,!1),e.strm.avail_out),1)}),new _(4,4,8,4,D),new _(4,5,16,8,D),new _(4,6,32,32,D),new _(4,4,16,16,k),new _(8,16,32,32,k),new _(8,16,128,128,k),new _(8,32,128,256,k),new _(32,128,258,1024,k),new _(32,258,258,4096,k)],t.deflateInit=function(e,t){return I(e,t,h,15,8,0)},t.deflateInit2=I,t.deflateReset=F,t.deflateResetKeep=N,t.deflateSetHeader=function(e,t){return!e||!e.state||2!==e.state.wrap?d:(e.state.gzhead=t,c)},t.deflate=function(e,t){var r,a,n,o;if(!e||!e.state||5>8&255),L(a,a.gzhead.time>>16&255),L(a,a.gzhead.time>>24&255),L(a,9===a.level?2:2<=a.strategy||a.level<2?4:0),L(a,255&a.gzhead.os),a.gzhead.extra&&a.gzhead.extra.length&&(L(a,255&a.gzhead.extra.length),L(a,a.gzhead.extra.length>>8&255)),a.gzhead.hcrc&&(e.adler=f(e.adler,a.pending_buf,a.pending,0)),a.gzindex=0,a.status=69):(L(a,0),L(a,0),L(a,0),L(a,0),L(a,0),L(a,9===a.level?2:2<=a.strategy||a.level<2?4:0),L(a,3),a.status=b)):(i=h+(a.w_bits-8<<4)<<8,i|=(2<=a.strategy||a.level<2?0:a.level<6?1:6===a.level?2:3)<<6,0!==a.strstart&&(i|=32),i+=31-i%31,a.status=b,E(a,i),0!==a.strstart&&(E(a,e.adler>>>16),E(a,65535&e.adler)),e.adler=1)),69===a.status)if(a.gzhead.extra){for(n=a.pending;a.gzindex<(65535&a.gzhead.extra.length)&&(a.pending!==a.pending_buf_size||(a.gzhead.hcrc&&a.pending>n&&(e.adler=f(e.adler,a.pending_buf,a.pending-n,n)),P(e),n=a.pending,a.pending!==a.pending_buf_size));)L(a,255&a.gzhead.extra[a.gzindex]),a.gzindex++;a.gzhead.hcrc&&a.pending>n&&(e.adler=f(e.adler,a.pending_buf,a.pending-n,n)),a.gzindex===a.gzhead.extra.length&&(a.gzindex=0,a.status=73)}else a.status=73;if(73===a.status)if(a.gzhead.name){n=a.pending;do{if(a.pending===a.pending_buf_size&&(a.gzhead.hcrc&&a.pending>n&&(e.adler=f(e.adler,a.pending_buf,a.pending-n,n)),P(e),n=a.pending,a.pending===a.pending_buf_size)){o=1;break}}while(o=a.gzindexn&&(e.adler=f(e.adler,a.pending_buf,a.pending-n,n)),0===o&&(a.gzindex=0,a.status=91)}else a.status=91;if(91===a.status)if(a.gzhead.comment){n=a.pending;do{if(a.pending===a.pending_buf_size&&(a.gzhead.hcrc&&a.pending>n&&(e.adler=f(e.adler,a.pending_buf,a.pending-n,n)),P(e),n=a.pending,a.pending===a.pending_buf_size)){o=1;break}}while(o=a.gzindexn&&(e.adler=f(e.adler,a.pending_buf,a.pending-n,n)),0===o&&(a.status=103)}else a.status=103;if(103===a.status&&(a.gzhead.hcrc?(a.pending+2>a.pending_buf_size&&P(e),a.pending+2<=a.pending_buf_size&&(L(a,255&e.adler),L(a,e.adler>>8&255),e.adler=0,a.status=b)):a.status=b),0!==a.pending){if(P(e),0===e.avail_out)return a.last_flush=-1,c}else if(0===e.avail_in&&x(t)<=x(r)&&4!==t)return w(e,-5);if(666===a.status&&0!==e.avail_in)return w(e,-5);if(0!==e.avail_in||0!==a.lookahead||t!==l&&666!==a.status){var i=2===a.strategy?((e,t)=>{for(var r;;){if(0===e.lookahead&&(B(e),0===e.lookahead)){if(t===l)return 1;break}if(e.match_length=0,r=A._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(S(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(S(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(S(e,!1),0===e.strm.avail_out)?1:2})(a,t):3===a.strategy?((e,t)=>{for(var r,a,n,o,i=e.window;;){if(e.lookahead<=m){if(B(e),e.lookahead<=m&&t===l)return 1;if(0===e.lookahead)break}if(e.match_length=0,g<=e.lookahead&&0>8&255),L(a,e.adler>>16&255),L(a,e.adler>>24&255),L(a,255&e.total_in),L(a,e.total_in>>8&255),L(a,e.total_in>>16&255),L(a,e.total_in>>24&255)):(E(a,e.adler>>>16),E(a,65535&e.adler)),P(e),0=g;){for(a=r.strstart,n=r.lookahead-(g-1);r.ins_h=(r.ins_h<>>=a=r>>>24,x-=a,0==(a=r>>>16&255))f[u++]=65535&r;else{if(!(16&a)){if(0==(64&a)){r=C[(65535&r)+(w&(1<>>=a,x-=a),x<15&&(w+=c[l++]<>>=a=r>>>24,x-=a,!(16&(a=r>>>16&255))){if(0==(64&a)){r=P[(65535&r)+(w&(1<>>=a,x-=a,(a=u-d)>3,w&=(1<<(x-=n<<3))-1,e.next_in=l,e.next_out=u,e.avail_in=l>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function o(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new k.Buf16(320),this.work=new k.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function i(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=M,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new k.Buf32(a),t.distcode=t.distdyn=new k.Buf32(n),t.sane=1,t.back=-1,R):O}function s(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,i(e)):O}function A(e,t){var r,a;return!e||!e.state||(a=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15>>8&255,r.check=N(r.check,E,2,0),c=l=0,r.mode=2;else if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&l)<<8)+(l>>8))%31)e.msg="incorrect header check",r.mode=30;else if(8!=(15&l))e.msg="unknown compression method",r.mode=30;else{if(c-=4,x=8+(15&(l>>>=4)),0===r.wbits)r.wbits=x;else if(x>r.wbits){e.msg="invalid window size",r.mode=30;break}r.dmax=1<>8&1),512&r.flags&&(E[0]=255&l,E[1]=l>>>8&255,r.check=N(r.check,E,2,0)),c=l=0,r.mode=3;case 3:for(;c<32;){if(0===s)break e;s--,l+=a[o++]<>>8&255,E[2]=l>>>16&255,E[3]=l>>>24&255,r.check=N(r.check,E,4,0)),c=l=0,r.mode=4;case 4:for(;c<16;){if(0===s)break e;s--,l+=a[o++]<>8),512&r.flags&&(E[0]=255&l,E[1]=l>>>8&255,r.check=N(r.check,E,2,0)),c=l=0,r.mode=5;case 5:if(1024&r.flags){for(;c<16;){if(0===s)break e;s--,l+=a[o++]<>>8&255,r.check=N(r.check,E,2,0)),c=l=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&((f=s<(f=r.length)?s:f)&&(r.head&&(x=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),k.arraySet(r.head.extra,a,o,f,x)),512&r.flags&&(r.check=N(r.check,a,f,o)),s-=f,o+=f,r.length-=f),r.length))break e;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===s)break e;for(f=0;x=a[o+f++],r.head&&x&&r.length<65536&&(r.head.name+=String.fromCharCode(x)),x&&f>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=12;break;case 10:for(;c<32;){if(0===s)break e;s--,l+=a[o++]<>>=7&c,c-=7&c,r.mode=27;else{for(;c<3;){if(0===s)break e;s--,l+=a[o++]<>>=1)){case 0:r.mode=14;break;case 1:B=D=void 0;var B,D=r;if(G){for(U=new k.Buf32(512),j=new k.Buf32(32),B=0;B<144;)D.lens[B++]=8;for(;B<256;)D.lens[B++]=9;for(;B<280;)D.lens[B++]=7;for(;B<288;)D.lens[B++]=8;for(I(1,D.lens,0,288,U,0,D.work,{bits:9}),B=0;B<32;)D.lens[B++]=5;I(2,D.lens,0,32,j,0,D.work,{bits:5}),G=!1}if(D.lencode=U,D.lenbits=9,D.distcode=j,D.distbits=5,r.mode=20,6!==t)break;l>>>=2,c-=2;break e;case 2:r.mode=17;break;case 3:e.msg="invalid block type",r.mode=30}l>>>=2,c-=2}break;case 14:for(l>>>=7&c,c-=7&c;c<32;){if(0===s)break e;s--,l+=a[o++]<>>16^65535)){e.msg="invalid stored block lengths",r.mode=30;break}if(r.length=65535&l,c=l=0,r.mode=15,6===t)break e;case 15:r.mode=16;case 16:if(f=r.length){if(0===(f=A<(f=s>>=5,c-=5,r.ndist=1+(31&l),l>>>=5,c-=5,r.ncode=4+(15&l),l>>>=4,c-=4,286>>=3,c-=3}for(;r.have<19;)r.lens[T[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,P={bits:r.lenbits},C=I(0,r.lens,0,19,r.lencode,0,r.work,P),r.lenbits=P.bits,C){e.msg="invalid code lengths set",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have>>16&255,v=65535&L,!((g=L>>>24)<=c);){if(0===s)break e;s--,l+=a[o++]<>>=g,c-=g,r.lens[r.have++]=v;else{if(16===v){for(S=g+2;c>>=g,c-=g,0===r.have){e.msg="invalid bit length repeat",r.mode=30;break}x=r.lens[r.have-1],f=3+(3&l),l>>>=2,c-=2}else if(17===v){for(S=g+3;c>>=g)),l>>>=3,c=c-g-3}else{for(S=g+7;c>>=g)),l>>>=7,c=c-g-7}if(r.have+f>r.nlen+r.ndist){e.msg="invalid bit length repeat",r.mode=30;break}for(;f--;)r.lens[r.have++]=x}}if(30===r.mode)break;if(0===r.lens[256]){e.msg="invalid code -- missing end-of-block",r.mode=30;break}if(r.lenbits=9,P={bits:r.lenbits},C=I(1,r.lens,0,r.nlen,r.lencode,0,r.work,P),r.lenbits=P.bits,C){e.msg="invalid literal/lengths set",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,P={bits:r.distbits},C=I(2,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,P),r.distbits=P.bits,C){e.msg="invalid distances set",r.mode=30;break}if(r.mode=20,6===t)break e;case 20:r.mode=21;case 21:if(6<=s&&258<=A){e.next_out=i,e.avail_out=A,e.next_in=o,e.avail_in=s,r.hold=l,r.bits=c,F(e,u),i=e.next_out,n=e.output,A=e.avail_out,o=e.next_in,a=e.input,s=e.avail_in,l=r.hold,c=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;m=(L=r.lencode[l&(1<>>16&255,v=65535&L,!((g=L>>>24)<=c);){if(0===s)break e;s--,l+=a[o++]<>y)])>>>16&255,v=65535&L,!(y+(g=L>>>24)<=c);){if(0===s)break e;s--,l+=a[o++]<>>=y,c-=y,r.back+=y}if(l>>>=g,c-=g,r.back+=g,r.length=v,0===m){r.mode=26;break}if(32&m){r.back=-1,r.mode=12;break}if(64&m){e.msg="invalid literal/length code",r.mode=30;break}r.extra=15&m,r.mode=22;case 22:if(r.extra){for(S=r.extra;c>>=r.extra,c-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;m=(L=r.distcode[l&(1<>>16&255,v=65535&L,!((g=L>>>24)<=c);){if(0===s)break e;s--,l+=a[o++]<>y)])>>>16&255,v=65535&L,!(y+(g=L>>>24)<=c);){if(0===s)break e;s--,l+=a[o++]<>>=y,c-=y,r.back+=y}if(l>>>=g,c-=g,r.back+=g,64&m){e.msg="invalid distance code",r.mode=30;break}r.offset=v,r.extra=15&m,r.mode=24;case 24:if(r.extra){for(S=r.extra;c>>=r.extra,c-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg="invalid distance too far back",r.mode=30;break}r.mode=25;case 25:if(0===A)break e;if(r.offset>(f=u-A)){if((f=r.offset-f)>r.whave&&r.sane){e.msg="invalid distance too far back",r.mode=30;break}d=f>r.wnext?(f-=r.wnext,r.wsize-f):r.wnext-f,f>r.length&&(f=r.length),h=r.window}else h=n,d=i-r.offset,f=r.length;for(A-=f=Af?(h=_[N+i[y]],T[B+i[y]]):(h=96,0),A=1<<(d=v-P),b=l=1<>P)+(l-=A)]=d<<24|h<<16|g|0,0!==l;);for(A=1<>=1;if(0!==A?E=(E&A-1)+A:E=0,y++,0==--D[v]){if(v===w)break;v=t[r+i[y]]}if(x>>7)]}function o(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function C(e,t,r){e.bi_valid>a-r?(e.bi_buf|=t<>a-e.bi_valid,e.bi_valid+=r-a):(e.bi_buf|=t<>>=1,r<<=1,0<--t;);return r>>>1}function L(e,t,r){for(var a,n=new Array(16),o=0,i=1;i<=15;i++)n[i]=o=o+r[i-1]<<1;for(a=0;a<=t;a++){var s=e[2*a+1];0!==s&&(e[2*a]=S(n[s]++,s))}}function E(e){for(var t=0;t<286;t++)e.dyn_ltree[2*t]=0;for(t=0;t<30;t++)e.dyn_dtree[2*t]=0;for(t=0;t<19;t++)e.bl_tree[2*t]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.last_lit=e.matches=0}function T(e){8>1;1<=r;r--)B(e,o,r);for(n=A;r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],B(e,o,1),a=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=a,o[2*n]=o[2*r]+o[2*a],e.depth[n]=(e.depth[r]>=e.depth[a]?e.depth[r]:e.depth[a])+1,o[2*r+1]=o[2*a+1]=n,e.heap[1]=n++,B(e,o,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1];for(var c,p,u,f,d,h=e,g=t.dyn_tree,m=t.max_code,v=t.stat_desc.static_tree,y=t.stat_desc.has_stree,b=t.stat_desc.extra_bits,w=t.stat_desc.extra_base,x=t.stat_desc.max_length,C=0,P=0;P<=15;P++)h.bl_count[P]=0;for(g[2*h.heap[h.heap_max]+1]=0,c=h.heap_max+1;c<573;c++)x<(P=g[2*g[2*(p=h.heap[c])+1]+1]+1)&&(P=x,C++),g[2*p+1]=P,m>=7;i<30;i++)for(y[i]=n<<7,t=0;t<1<{for(var t=4093624447,r=0;r<=31;r++,t>>>=1)if(1&t&&0!==e.dyn_ltree[2*r])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(r=32;r<256;r++)if(0!==e.dyn_ltree[2*r])return 1;return 0})(e)),k(e,e.l_desc),k(e,e.d_desc),s=(e=>{var t;for(_(e,e.dyn_ltree,e.l_desc.max_code),_(e,e.dyn_dtree,e.d_desc.max_code),k(e,e.bl_desc),t=18;3<=t&&0===e.bl_tree[2*c[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t})(e),(o=e.static_len+3+7>>>3)<=(n=e.opt_len+3+7>>>3)&&(n=o)):n=o=r+5,r+4<=n&&-1!==t)I(e,t,r,a);else if(4===e.strategy||o===n)C(e,2+(a?1:0),3),D(e,p,u);else{C(e,4+(a?1:0),3);var A=e,l=(t=e.l_desc.max_code+1,r=e.d_desc.max_code+1,s+1);for(C(A,t-257,5),C(A,r-1,5),C(A,l-4,4),i=0;i>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(d[r]+256+1)]++,e.dyn_dtree[2*x(t)]++),e.last_lit===e.lit_bufsize-1},t._tr_align=function(e){C(e,2,3),P(e,256,p),16===(e=e).bi_valid?(o(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):8<=e.bi_valid&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}},{"../utils/common":41}],53:[function(e,t,r){t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,r){!function(e){function n(e){delete c[e]}function o(e){if(p)setTimeout(o,0,e);else{var t=c[e];if(t){p=!0;try{var r=t.callback,a=t.args;switch(a.length){case 0:r();break;case 1:r(a[0]);break;case 2:r(a[0],a[1]);break;case 3:r(a[0],a[1],a[2]);break;default:r.apply(i,a)}}finally{n(e),p=!1}}}}function t(e){e.source===r&&"string"==typeof e.data&&0===e.data.indexOf(A)&&o(+e.data.slice(A.length))}var r,i,a,s,A,l,c,p,u,f;(r="undefined"==typeof self?void 0===e?this:e:self).setImmediate||(l=1,p=!(c={}),u=r.document,e=(e=Object.getPrototypeOf&&Object.getPrototypeOf(r))&&e.setTimeout?e:r,f="[object process]"==={}.toString.call(r.process)?function(e){process.nextTick(function(){o(e)})}:(()=>{var e,t;if(r.postMessage&&!r.importScripts)return e=!0,t=r.onmessage,r.onmessage=function(){e=!1},r.postMessage("","*"),r.onmessage=t,e})()?(A="setImmediate$"+Math.random()+"$",r.addEventListener?r.addEventListener("message",t,!1):r.attachEvent("onmessage",t),function(e){r.postMessage(A+e,"*")}):r.MessageChannel?((s=new MessageChannel).port1.onmessage=function(e){o(e.data)},function(e){s.port2.postMessage(e)}):u&&"onreadystatechange"in u.createElement("script")?(a=u.documentElement,function(e){var t=u.createElement("script");t.onreadystatechange=function(){o(e),t.onreadystatechange=null,a.removeChild(t),t=null},a.appendChild(t)}):function(e){setTimeout(o,0,e)},e.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),r=0;r{function e(e,t,r){if(this instanceof a){switch(arguments.length){case 0:return new a;case 1:return new a(e);case 2:return new a(e,t)}return new a(e,t,r)}return a.apply(this,arguments)}return e[w]=a[w],e})(o):l&&"function"==typeof o?v(Function.call,o):o,l&&((u.virtual||(u.virtual={}))[a]=o,e&h.R)&&f&&!f[a]&&y(f,a,o))}var g=e(24),m=e(18),v=e(19),y=e(26),b=e(25),w="prototype";h.F=1,h.G=2,h.S=4,h.P=8,h.B=16,h.W=32,h.U=64,h.R=128,t.exports=h},{18:18,19:19,24:24,25:25,26:26}],23:[function(e,t,r){t.exports=function(e){try{return!!e()}catch(e){return!0}}},{}],24:[function(e,t,r){t=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=t)},{}],25:[function(e,t,r){var a={}.hasOwnProperty;t.exports=function(e,t){return a.call(e,t)}},{}],26:[function(e,t,r){var a=e(29),n=e(30);t.exports=e(20)?function(e,t,r){return a.f(e,t,n(1,r))}:function(e,t,r){return e[t]=r,e}},{20:20,29:29,30:30}],27:[function(e,t,r){t.exports=!e(20)&&!e(23)(function(){return 7!=Object.defineProperty(e(21)("div"),"a",{get:function(){return 7}}).a})},{20:20,21:21,23:23}],28:[function(e,t,r){t.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},{}],29:[function(e,t,r){var a=e(17),n=e(27),o=e(31),i=Object.defineProperty;r.f=e(20)?Object.defineProperty:function(e,t,r){if(a(e),t=o(t,!0),a(r),n)try{return i(e,t,r)}catch(e){}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(e[t]=r.value),e}},{17:17,20:20,27:27,31:31}],30:[function(e,t,r){t.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},{}],31:[function(e,t,r){var n=e(28);t.exports=function(e,t){if(!n(e))return e;var r,a;if(t&&"function"==typeof(r=e.toString)&&!n(a=r.call(e))||"function"==typeof(r=e.valueOf)&&!n(a=r.call(e))||!t&&"function"==typeof(r=e.toString)&&!n(a=r.call(e)))return a;throw TypeError("Can't convert object to primitive value")}},{28:28}],32:[function(e,t,r){var a=e(22);a(a.G,{global:e(24)})},{22:22,24:24}],33:[function(e,t,r){arguments[4][16][0].apply(r,arguments)},{16:16}],34:[function(e,t,r){var a=e(48);t.exports=function(e,t){if("number"!=typeof e&&"Number"!=a(e))throw TypeError(t);return+e}},{48:48}],35:[function(e,t,r){var a=e(152)("unscopables"),n=Array.prototype;null==n[a]&&e(72)(n,a,{}),t.exports=function(e){n[a][e]=!0}},{152:152,72:72}],36:[function(e,t,r){var a=e(129)(!0);t.exports=function(e,t,r){return t+(r?a(e,t).length:1)}},{129:129}],37:[function(e,t,r){t.exports=function(e,t,r,a){if(!(e instanceof t)||void 0!==a&&a in e)throw TypeError(r+": incorrect invocation!");return e}},{}],38:[function(e,t,r){arguments[4][17][0].apply(r,arguments)},{17:17,81:81}],39:[function(e,t,r){var A=e(142),l=e(137),c=e(141);t.exports=[].copyWithin||function(e,t){var r=A(this),a=c(r.length),n=l(e,a),o=l(t,a),e=2{try{return e[t]}catch(e){}})(e=Object(e),n))?t:o?a(e):"Object"==(t=a(e))&&"function"==typeof e.callee?"Arguments":t}},{152:152,48:48}],48:[function(e,t,r){var a={}.toString;t.exports=function(e){return a.call(e).slice(8,-1)}},{}],49:[function(e,t,r){function i(e,t){var r,a=d(t);if("F"!==a)return e._i[a];for(r=e._f;r;r=r.n)if(r.k==t)return r}var s=e(99).f,A=e(98),l=e(117),c=e(54),p=e(37),u=e(68),a=e(85),n=e(87),o=e(123),f=e(58),d=e(94).fastKey,h=e(149),g=f?"_s":"size";t.exports={getConstructor:function(e,n,r,a){var o=e(function(e,t){p(e,o,n,"_i"),e._t=n,e._i=A(null),e._f=void 0,e._l=void 0,e[g]=0,null!=t&&u(t,r,e[a],e)});return l(o.prototype,{clear:function(){for(var e=h(this,n),t=e._i,r=e._f;r;r=r.n)r.r=!0,r.p&&(r.p=r.p.n=void 0),delete t[r.i];e._f=e._l=void 0,e[g]=0},delete:function(e){var t,r,a=h(this,n),e=i(a,e);return e&&(t=e.n,r=e.p,delete a._i[e.i],e.r=!0,r&&(r.n=t),t&&(t.p=r),a._f==e&&(a._f=t),a._l==e&&(a._l=r),a[g]--),!!e},forEach:function(e){h(this,n);for(var t,r=c(e,1i;)o.call(e,a=n[i++])&&t.push(a);return t}},{104:104,107:107,108:108}],62:[function(e,t,r){function f(e,t,r){var a,n,o,i=e&f.F,s=e&f.G,A=e&f.P,l=e&f.B,c=s?d:e&f.S?d[t]||(d[t]={}):(d[t]||{})[y],p=s?h:h[t]||(h[t]={}),u=p[y]||(p[y]={});for(a in r=s?t:r)n=((o=!i&&c&&void 0!==c[a])?c:r)[a],o=l&&o?v(n,d):A&&"function"==typeof n?v(Function.call,n):n,c&&m(c,a,n,e&f.U),p[a]!=n&&g(p,a,o),A&&u[a]!=n&&(u[a]=n)}var d=e(70),h=e(52),g=e(72),m=e(118),v=e(54),y="prototype";d.core=h,f.F=1,f.G=2,f.S=4,f.P=8,f.B=16,f.W=32,f.U=64,f.R=128,t.exports=f},{118:118,52:52,54:54,70:70,72:72}],63:[function(e,t,r){var a=e(152)("match");t.exports=function(t){var r=/./;try{"/./"[t](r)}catch(e){try{return r[a]=!1,!"/./"[t](r)}catch(e){}}return!0}},{152:152}],64:[function(e,t,r){arguments[4][23][0].apply(r,arguments)},{23:23}],65:[function(e,t,r){e(248);var a,A=e(118),l=e(72),c=e(64),p=e(57),u=e(152),f=e(120),d=u("species"),h=!c(function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$")}),g=(a=(e=/(?:)/).exec,e.exec=function(){return a.apply(this,arguments)},2===(e="ab".split(e)).length&&"a"===e[0]&&"b"===e[1]);t.exports=function(r,e,t){var o,a,n=u(r),i=!c(function(){var e={};return e[n]=function(){return 7},7!=""[r](e)}),s=i?!c(function(){var e=!1,t=/a/;return t.exec=function(){return e=!0,null},"split"===r&&(t.constructor={},t.constructor[d]=function(){return t}),t[n](""),!e}):void 0;i&&s&&("replace"!==r||h)&&("split"!==r||g)||(o=/./[n],t=(s=t(p,n,""[r],function(e,t,r,a,n){return t.exec===f?i&&!n?{done:!0,value:o.call(t,r,a)}:{done:!0,value:e.call(r,t,a)}:{done:!1}}))[0],a=s[1],A(String.prototype,r,t),l(RegExp.prototype,n,2==e?function(e,t){return a.call(e,this,t)}:function(e){return a.call(e,this)}))}},{118:118,120:120,152:152,248:248,57:57,64:64,72:72}],66:[function(e,t,r){var a=e(38);t.exports=function(){var e=a(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t}},{38:38}],67:[function(e,t,r){var d=e(79),h=e(81),g=e(141),m=e(54),v=e(152)("isConcatSpreadable");t.exports=function e(t,r,a,n,o,i,s,A){for(var l,c,p=o,u=0,f=!!s&&m(s,A,3);udocument.F=Object<\/script>"),e.close(),l=e.F;t--;)delete l[A][i[t]];return l()};e.exports=Object.create||function(e,t){var r;return null!==e?(a[A]=n(e),r=new a,a[A]=null,r[s]=e):r=l(),void 0===t?r:o(r,t)}},{100:100,125:125,38:38,59:59,60:60,73:73}],99:[function(e,t,r){arguments[4][29][0].apply(r,arguments)},{143:143,29:29,38:38,58:58,74:74}],100:[function(e,t,r){var i=e(99),s=e(38),A=e(107);t.exports=e(58)?Object.defineProperties:function(e,t){s(e);for(var r,a=A(t),n=a.length,o=0;on;)!i(a,r=t[n++])||~A(o,r)||o.push(r);return o}},{125:125,140:140,41:41,71:71}],107:[function(e,t,r){var a=e(106),n=e(60);t.exports=Object.keys||function(e){return a(e,n)}},{106:106,60:60}],108:[function(e,t,r){r.f={}.propertyIsEnumerable},{}],109:[function(e,t,r){var n=e(62),o=e(52),i=e(64);t.exports=function(e,t){var r=(o.Object||{})[e]||Object[e],a={};a[e]=t(r),n(n.S+n.F*i(function(){r(1)}),"Object",a)}},{52:52,62:62,64:64}],110:[function(e,t,r){var A=e(58),l=e(107),c=e(140),p=e(108).f;t.exports=function(s){return function(e){for(var t,r=c(e),a=l(r),n=a.length,o=0,i=[];o>>0||(o.test(e)?16:10))}:a},{134:134,135:135,70:70}],114:[function(e,t,r){t.exports=function(e){try{return{e:!1,v:e()}}catch(e){return{e:!0,v:e}}}},{}],115:[function(e,t,r){var a=e(38),n=e(81),o=e(96);t.exports=function(e,t){return a(e),n(t)&&t.constructor===e?t:((0,(e=o.f(e)).resolve)(t),e.promise)}},{38:38,81:81,96:96}],116:[function(e,t,r){arguments[4][30][0].apply(r,arguments)},{30:30}],117:[function(e,t,r){var n=e(118);t.exports=function(e,t,r){for(var a in t)n(e,a,t[a],r);return e}},{118:118}],118:[function(e,t,r){var o=e(70),i=e(72),s=e(71),A=e(147)("src"),a=e(69),n="toString",l=(""+a).split(n);e(52).inspectSource=function(e){return a.call(e)},(t.exports=function(e,t,r,a){var n="function"==typeof r;n&&!s(r,"name")&&i(r,"name",t),e[t]!==r&&(n&&!s(r,A)&&i(r,A,e[t]?""+e[t]:l.join(String(t))),e===o?e[t]=r:a?e[t]?e[t]=r:i(e,t,r):(delete e[t],i(e,t,r)))})(Function.prototype,n,function(){return"function"==typeof this&&this[A]||a.call(this)})},{147:147,52:52,69:69,70:70,71:71,72:72}],119:[function(e,t,r){var a=e(47),n=RegExp.prototype.exec;t.exports=function(e,t){var r=e.exec;if("function"==typeof r){r=r.call(e,t);if("object"!=typeof r)throw new TypeError("RegExp exec method returned something other than an Object or null");return r}if("RegExp"!==a(e))throw new TypeError("RegExp#exec called on incompatible receiver");return n.call(e,t)}},{47:47}],120:[function(e,t,r){var a,n,i=e(66),s=RegExp.prototype.exec,A=String.prototype.replace,e=s,l="lastIndex",c=(n=/b*/g,s.call(a=/a/,"a"),s.call(n,"a"),0!==a[l]||0!==n[l]),p=void 0!==/()??/.exec("")[1];t.exports=e=c||p?function(e){var t,r,a,n,o=this;return p&&(r=new RegExp("^"+o.source+"$(?!\\s)",i.call(o))),c&&(t=o[l]),a=s.call(o,e),c&&a&&(o[l]=o.global?a.index+a[0].length:t),p&&a&&1{try{(a=t(54)(Function.call,t(101).f(Object.prototype,"__proto__").set,2))(e,[]),r=!(e instanceof Array)}catch(e){r=!0}return function(e,t){return n(e,t),r?e.__proto__=t:a(e,t),e}})({},!1):void 0),check:n}},{101:101,38:38,54:54,81:81}],123:[function(e,t,r){var a=e(70),n=e(99),o=e(58),i=e(152)("species");t.exports=function(e){e=a[e];o&&e&&!e[i]&&n.f(e,i,{configurable:!0,get:function(){return this}})}},{152:152,58:58,70:70,99:99}],124:[function(e,t,r){var a=e(99).f,n=e(71),o=e(152)("toStringTag");t.exports=function(e,t,r){e&&!n(e=r?e:e.prototype,o)&&a(e,o,{configurable:!0,value:t})}},{152:152,71:71,99:99}],125:[function(e,t,r){var a=e(126)("keys"),n=e(147);t.exports=function(e){return a[e]||(a[e]=n(e))}},{126:126,147:147}],126:[function(e,t,r){var a=e(52),n=e(70),o="__core-js_shared__",i=n[o]||(n[o]={});(t.exports=function(e,t){return i[e]||(i[e]=void 0!==t?t:{})})("versions",[]).push({version:a.version,mode:e(89)?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},{52:52,70:70,89:89}],127:[function(e,t,r){var a=e(38),n=e(33),o=e(152)("species");t.exports=function(e,t){var e=a(e).constructor;return void 0===e||null==(e=a(e)[o])?t:n(e)}},{152:152,33:33,38:38}],128:[function(e,t,r){var a=e(64);t.exports=function(e,t){return!!e&&a(function(){t?e.call(null,function(){},1):e.call(null)})}},{64:64}],129:[function(e,t,r){var o=e(139),i=e(57);t.exports=function(n){return function(e,t){var r,e=String(i(e)),t=o(t),a=e.length;return t<0||a<=t?n?"":void 0:(r=e.charCodeAt(t))<55296||56319"+e+""}var n=e(62),o=e(64),i=e(57),s=/"/g;t.exports=function(t,e){var r={};r[t]=e(a),n(n.P+n.F*o(function(){var e=""[t]('"');return e!==e.toLowerCase()||3t&&(n=n.slice(0,t)),a?n+e:e+n)}},{133:133,141:141,57:57}],133:[function(e,t,r){var n=e(139),o=e(57);t.exports=function(e){var t=String(o(this)),r="",a=n(e);if(a<0||a==1/0)throw RangeError("Count can't be negative");for(;0>>=1)&&(t+=t))1&a&&(r+=t);return r}},{139:139,57:57}],134:[function(e,t,r){function a(e,t,r){var a={},n=i(function(){return!!s[e]()||"​…"!="​…"[e]()}),t=a[e]=n?t(c):s[e];r&&(a[r]=t),o(o.P+o.F*n,"String",a)}var o=e(62),n=e(57),i=e(64),s=e(135),e="["+s+"]",A=RegExp("^"+e+e+"*"),l=RegExp(e+e+"*$"),c=a.trim=function(e,t){return e=String(n(e)),1&t&&(e=e.replace(A,"")),e=2&t?e.replace(l,""):e};t.exports=a},{135:135,57:57,62:62,64:64}],135:[function(e,t,r){t.exports="\t\n\v\f\r   ᠎              \u2028\u2029\ufeff"},{}],136:[function(e,t,r){function a(){var e,t=+this;m.hasOwnProperty(t)&&(e=m[t],delete m[t],e())}function n(e){a.call(e.data)}var o,i=e(54),s=e(76),A=e(73),l=e(59),c=e(70),p=c.process,u=c.setImmediate,f=c.clearImmediate,d=c.MessageChannel,h=c.Dispatch,g=0,m={},v="onreadystatechange";u&&f||(u=function(e){for(var t=[],r=1;r{w(e,a,{get:function(){return(e=this._d).v[u](a*l+e.o,ke);var e},set:function(e){var t=a,r=this._d;c&&(e=(e=Math.round(e))<0?0:255>1,l=23===t?w(2,-24)-w(2,-77):0,c=0,p=e<0||0===e&&1/e<0?1:0;for((e=G(e))!=e||e===y?(n=e!=e?1:0,a=r):(a=Q(W(e)/Y),e*(o=w(2,-a))<1&&(a--,o*=2),2<=(e+=1<=a+A?l/o:l*w(2,1-A))*o&&(a++,o/=2),r<=a+A?(n=0,a=r):1<=a+A?(n=(e*o-1)*w(2,t),a+=A):(n=e*w(2,A-1)*w(2,t),a=0));8<=t;i[c++]=255&n,n/=256,t-=8);for(a=a<>1,s=n-7,A=r-1,n=e[A--],l=127&n;for(n>>=7;0>=-s,s+=t;0>8&255]}function D(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]}function X(e){return S(e,52,8)}function H(e){return S(e,23,4)}function k(e,t,r){U(e[f],t,{get:function(){return this[r]}})}function _(e,t,r,a){r=c(+r);if(r+t>e[C])throw v(d);var n=e[x]._b,r=r+e[P],e=n.slice(r,r+t);return a?e:e.reverse()}function N(e,t,r,a,n,o){r=c(+r);if(r+t>e[C])throw v(d);for(var i=e[x]._b,s=r+e[P],A=a(+n),l=0;lV;)(F=I[V++])in h||o(h,F,b[F]);O||(s.constructor=h)}var l=new g(new h(2)),q=g[f].setInt8;l.setInt8(0,2147483648),l.setInt8(1,2147483649),!l.getInt8(0)&&l.getInt8(1)||i(g[f],{setInt8:function(e,t){q.call(this,e,t<<24>>24)},setUint8:function(e,t){q.call(this,e,t<<24>>24)}},!0)}else h=function(e){A(this,h,p);e=c(e);this._b=j.call(new Array(e),0),this[C]=e},g=function(e,t,r){A(this,g,u),A(e,h,u);var a=e[C],t=M(t);if(t<0||a>24},getUint8:function(e){return _(this,1,e)[0]},getInt16:function(e){e=_(this,2,e,arguments[1]);return(e[1]<<8|e[0])<<16>>16},getUint16:function(e){e=_(this,2,e,arguments[1]);return e[1]<<8|e[0]},getInt32:function(e){return E(_(this,4,e,arguments[1]))},getUint32:function(e){return E(_(this,4,e,arguments[1]))>>>0},getFloat32:function(e){return L(_(this,4,e,arguments[1]),23,4)},getFloat64:function(e){return L(_(this,8,e,arguments[1]),52,8)},setInt8:function(e,t){N(this,1,e,T,t)},setUint8:function(e,t){N(this,1,e,T,t)},setInt16:function(e,t){N(this,2,e,B,t,arguments[2])},setUint16:function(e,t){N(this,2,e,B,t,arguments[2])},setInt32:function(e,t){N(this,4,e,D,t,arguments[2])},setUint32:function(e,t){N(this,4,e,D,t,arguments[2])},setFloat32:function(e,t){N(this,4,e,H,t,arguments[2])},setFloat64:function(e,t){N(this,8,e,X,t,arguments[2])}});e(h,p),e(g,u),o(g[f],n.VIEW,!0),t[p]=h,t[u]=g},{103:103,117:117,124:124,138:138,139:139,141:141,146:146,37:37,40:40,58:58,64:64,70:70,72:72,89:89,99:99}],146:[function(e,t,r){for(var a,n=e(70),o=e(72),e=e(147),i=e("typed_array"),s=e("view"),e=!(!n.ArrayBuffer||!n.DataView),A=e,l=0,c="Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array".split(",");l<9;)(a=n[c[l++]])?(o(a.prototype,i,!0),o(a.prototype,s,!0)):A=!1;t.exports={ABV:e,CONSTR:A,TYPED:i,VIEW:s}},{147:147,70:70,72:72}],147:[function(e,t,r){var a=0,n=Math.random();t.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++a+n).toString(36))}},{}],148:[function(e,t,r){e=e(70).navigator;t.exports=e&&e.userAgent||""},{70:70}],149:[function(e,t,r){var a=e(81);t.exports=function(e,t){if(a(e)&&e._t===t)return e;throw TypeError("Incompatible receiver, "+t+" required!")}},{81:81}],150:[function(e,t,r){var a=e(70),n=e(52),o=e(89),i=e(151),s=e(99).f;t.exports=function(e){var t=n.Symbol||(n.Symbol=!o&&a.Symbol||{});"_"==e.charAt(0)||e in t||s(t,e,{value:i.f(e)})}},{151:151,52:52,70:70,89:89,99:99}],151:[function(e,t,r){r.f=e(152)},{152:152}],152:[function(e,t,r){var a=e(126)("wks"),n=e(147),o=e(70).Symbol,i="function"==typeof o;(t.exports=function(e){return a[e]||(a[e]=i&&o[e]||(i?o:n)("Symbol."+e))}).store=a},{126:126,147:147,70:70}],153:[function(e,t,r){var a=e(47),n=e(152)("iterator"),o=e(88);t.exports=e(52).getIteratorMethod=function(e){if(null!=e)return e[n]||e["@@iterator"]||o[a(e)]}},{152:152,47:47,52:52,88:88}],154:[function(e,t,r){var a=e(62);a(a.P,"Array",{copyWithin:e(39)}),e(35)("copyWithin")},{35:35,39:39,62:62}],155:[function(e,t,r){var a=e(62),n=e(42)(4);a(a.P+a.F*!e(128)([].every,!0),"Array",{every:function(e){return n(this,e,arguments[1])}})},{128:128,42:42,62:62}],156:[function(e,t,r){var a=e(62);a(a.P,"Array",{fill:e(40)}),e(35)("fill")},{35:35,40:40,62:62}],157:[function(e,t,r){var a=e(62),n=e(42)(2);a(a.P+a.F*!e(128)([].filter,!0),"Array",{filter:function(e){return n(this,e,arguments[1])}})},{128:128,42:42,62:62}],158:[function(e,t,r){var a=e(62),n=e(42)(6),o="findIndex",i=!0;o in[]&&Array(1)[o](function(){i=!1}),a(a.P+a.F*i,"Array",{findIndex:function(e){return n(this,e,1=e.length?(this._t=void 0,n(1)):n(0,"keys"==t?r:"values"==t?e[r]:[r,e[r]])},"values"),o.Arguments=o.Array,a("keys"),a("values"),a("entries")},{140:140,35:35,85:85,87:87,88:88}],165:[function(e,t,r){var a=e(62),n=e(140),o=[].join;a(a.P+a.F*(e(77)!=Object||!e(128)(o)),"Array",{join:function(e){return o.call(n(this),void 0===e?",":e)}})},{128:128,140:140,62:62,77:77}],166:[function(e,t,r){var a=e(62),n=e(140),o=e(139),i=e(141),s=[].lastIndexOf,A=!!s&&1/[1].lastIndexOf(1,-0)<0;a(a.P+a.F*(A||!e(128)(s)),"Array",{lastIndexOf:function(e){if(A)return s.apply(this,arguments)||0;var t=n(this),r=i(t.length),a=r-1;for((a=1>>=0)?31-Math.floor(Math.log(e+.5)*Math.LOG2E):32}})},{62:62}],189:[function(e,t,r){var e=e(62),a=Math.exp;e(e.S,"Math",{cosh:function(e){return(a(e=+e)+a(-e))/2}})},{62:62}],190:[function(e,t,r){var a=e(62),e=e(90);a(a.S+a.F*(e!=Math.expm1),"Math",{expm1:e})},{62:62,90:90}],191:[function(e,t,r){var a=e(62);a(a.S,"Math",{fround:e(91)})},{62:62,91:91}],192:[function(e,t,r){var e=e(62),A=Math.abs;e(e.S,"Math",{hypot:function(e,t){for(var r,a,n=0,o=0,i=arguments.length,s=0;o>>16)*a+r*(65535&t>>>16)<<16>>>0)}})},{62:62,64:64}],194:[function(e,t,r){e=e(62);e(e.S,"Math",{log10:function(e){return Math.log(e)*Math.LOG10E}})},{62:62}],195:[function(e,t,r){var a=e(62);a(a.S,"Math",{log1p:e(92)})},{62:62,92:92}],196:[function(e,t,r){e=e(62);e(e.S,"Math",{log2:function(e){return Math.log(e)/Math.LN2}})},{62:62}],197:[function(e,t,r){var a=e(62);a(a.S,"Math",{sign:e(93)})},{62:62,93:93}],198:[function(e,t,r){var a=e(62),n=e(90),o=Math.exp;a(a.S+a.F*e(64)(function(){return-2e-17!=!Math.sinh(-2e-17)}),"Math",{sinh:function(e){return Math.abs(e=+e)<1?(n(e)-n(-e))/2:(o(e-1)-o(-e-1))*(Math.E/2)}})},{62:62,64:64,90:90}],199:[function(e,t,r){var a=e(62),n=e(90),o=Math.exp;a(a.S,"Math",{tanh:function(e){var t=n(e=+e),r=n(-e);return t==1/0?1:r==1/0?-1:(t-r)/(o(e)+o(-e))}})},{62:62,90:90}],200:[function(e,t,r){e=e(62);e(e.S,"Math",{trunc:function(e){return(0x;x++)o(h,y=w[x])&&!o(b,y)&&u(b,y,p(h,y));(b.prototype=g).constructor=b,e(118)(n,d,b)}},{101:101,103:103,118:118,134:134,143:143,48:48,58:58,64:64,70:70,71:71,75:75,98:98,99:99}],202:[function(e,t,r){e=e(62);e(e.S,"Number",{EPSILON:Math.pow(2,-52)})},{62:62}],203:[function(e,t,r){var a=e(62),n=e(70).isFinite;a(a.S,"Number",{isFinite:function(e){return"number"==typeof e&&n(e)}})},{62:62,70:70}],204:[function(e,t,r){var a=e(62);a(a.S,"Number",{isInteger:e(80)})},{62:62,80:80}],205:[function(e,t,r){e=e(62);e(e.S,"Number",{isNaN:function(e){return e!=e}})},{62:62}],206:[function(e,t,r){var a=e(62),n=e(80),o=Math.abs;a(a.S,"Number",{isSafeInteger:function(e){return n(e)&&o(e)<=9007199254740991}})},{62:62,80:80}],207:[function(e,t,r){e=e(62);e(e.S,"Number",{MAX_SAFE_INTEGER:9007199254740991})},{62:62}],208:[function(e,t,r){e=e(62);e(e.S,"Number",{MIN_SAFE_INTEGER:-9007199254740991})},{62:62}],209:[function(e,t,r){var a=e(62),e=e(112);a(a.S+a.F*(Number.parseFloat!=e),"Number",{parseFloat:e})},{112:112,62:62}],210:[function(e,t,r){var a=e(62),e=e(113);a(a.S+a.F*(Number.parseInt!=e),"Number",{parseInt:e})},{113:113,62:62}],211:[function(e,t,r){function s(e,t){for(var r=-1,a=t;++r<6;)i[r]=(a+=e*i[r])%1e7,a=o(a/1e7)}function A(e){for(var t=6,r=0;0<=--t;)i[t]=o((r+=i[t])/e),r=r%e*1e7}function l(){for(var e,t=6,r="";0<=--t;)""===r&&0!==t&&0===i[t]||(e=String(i[t]),r=""===r?e:r+f.call("0",7-e.length)+e);return r}function c(e,t,r){return 0===t?r:t%2==1?c(e,t-1,r*e):c(e*e,t/2,r)}var a=e(62),p=e(139),u=e(34),f=e(133),n=1..toFixed,o=Math.floor,i=[0,0,0,0,0,0],d="Number.toFixed: incorrect invocation!";a(a.P+a.F*(!!n&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==0xde0b6b3a7640080.toFixed(0))||!e(64)(function(){n.call({})})),"Number",{toFixed:function(e){var t,r,a,n=u(this,d),e=p(e),o="",i="0";if(e<0||20{for(var e=0,t=n*c(2,69,1);4096<=t;)e+=12,t/=4096;for(;2<=t;)e+=1,t/=2;return e})()-69)<0?n*c(2,-t,1):n/c(2,t,1),a*=4503599627370496,0<(t=52-t)){for(s(0,a),r=e;7<=r;)s(1e7,0),r-=7;for(s(c(10,r,1),0),r=t-1;23<=r;)A(1<<23),r-=23;A(1<r;){a=void 0;n=void 0;o=void 0;i=void 0;s=void 0;A=void 0;l=void 0;c=void 0;var a=f[r++];var n,o,i,s=t?a.ok:a.fail,A=a.resolve,l=a.reject,c=a.domain;try{s?(t||(2==p._h&&g(p),p._h=1),!0===s?n=e:(c&&c.enter(),n=s(e),c&&(c.exit(),i=!0)),n===a.promise?l(T("Promise-chain cycle")):(o=d(n))?o.call(n,A,l):A(n)):l(e)}catch(a){c&&!i&&c.exit(),l(a)}}p._c=[],p._n=!1,u&&!p._h&&h(p)}))}function o(e){var t=this;t._d||(t._d=!0,(t=t._w||t)._v=e,t._s=2,t._a||(t._a=t._c.slice()),n(t,!0))}function h(n){w.call(c,function(){var e,t,r=n._v,a=F(n);if(a&&(e=P(function(){_?B.emit("unhandledRejection",r,n):(t=c.onunhandledrejection)?t({promise:n,reason:r}):(t=c.console)&&t.error&&t.error("Unhandled promise rejection",r)}),n._h=_||F(n)?2:1),n._a=void 0,a&&e.e)throw e.v})}function g(t){w.call(c,function(){var e;_?B.emit("rejectionHandled",t):(e=c.onrejectionhandled)&&e({promise:t,reason:t._v})})}var t,i,s,A,l=r(89),c=r(70),p=r(54),e=r(47),u=r(62),f=r(81),m=r(33),v=r(37),y=r(68),b=r(127),w=r(136).set,x=r(95)(),C=r(96),P=r(114),S=r(148),L=r(115),E="Promise",T=c.TypeError,B=c.process,D=B&&B.versions,M=D&&D.v8||"",k=c[E],_="process"==e(B),N=i=C.f,D=!!(()=>{try{var e=k.resolve(1),t=(e.constructor={})[r(152)("species")]=function(e){e(a,a)};return(_||"function"==typeof PromiseRejectionEvent)&&e.then(a)instanceof t&&0!==M.indexOf("6.6")&&-1===S.indexOf("Chrome/66")}catch(e){}})(),F=function(e){return 1!==e._h&&0===(e._a||e._c).length},I=function(e){var r,a=this;if(!a._d){a._d=!0,a=a._w||a;try{if(a===e)throw T("Promise can't be resolved itself");(r=d(e))?x(function(){var t={_w:a,_d:!1};try{r.call(e,p(I,t,1),p(o,t,1))}catch(e){o.call(t,e)}}):(a._v=e,a._s=1,n(a,!1))}catch(e){o.call({_w:a,_d:!1},e)}}};D||(k=function(e){v(this,k,E,"_h"),m(e),t.call(this);try{e(p(I,this,1),p(o,this,1))}catch(e){o.call(this,e)}},(t=function(e){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1}).prototype=r(117)(k.prototype,{then:function(e,t){var r=N(b(this,k));return r.ok="function"!=typeof e||e,r.fail="function"==typeof t&&t,r.domain=_?B.domain:void 0,this._c.push(r),this._a&&this._a.push(r),this._s&&n(this,!1),r.promise},catch:function(e){return this.then(void 0,e)}}),s=function(){var e=new t;this.promise=e,this.resolve=p(I,e,1),this.reject=p(o,e,1)},C.f=N=function(e){return e===k||e===A?new s:i(e)}),u(u.G+u.W+u.F*!D,{Promise:k}),r(124)(k,E),r(123)(E),A=r(52)[E],u(u.S+u.F*!D,E,{reject:function(e){var t=N(this);return(0,t.reject)(e),t.promise}}),u(u.S+u.F*(l||!D),E,{resolve:function(e){return L(l&&this===A?k:this,e)}}),u(u.S+u.F*!(D&&r(86)(function(e){k.all(e).catch(a)})),E,{all:function(e){var i=this,t=N(i),s=t.resolve,A=t.reject,r=P(function(){var a=[],n=0,o=1;y(e,!1,function(e){var t=n++,r=!1;a.push(void 0),o++,i.resolve(e).then(function(e){r||(r=!0,a[t]=e,--o)||s(a)},A)}),--o||s(a)});return r.e&&A(r.v),t.promise},race:function(e){var t=this,r=N(t),a=r.reject,n=P(function(){y(e,!1,function(e){t.resolve(e).then(r.resolve,a)})});return n.e&&a(n.v),r.promise}})},{114:114,115:115,117:117,123:123,124:124,127:127,136:136,148:148,152:152,33:33,37:37,47:47,52:52,54:54,62:62,68:68,70:70,81:81,86:86,89:89,95:95,96:96}],233:[function(e,t,r){var a=e(62),n=e(33),o=e(38),i=(e(70).Reflect||{}).apply,s=Function.apply;a(a.S+a.F*!e(64)(function(){i(function(){})}),"Reflect",{apply:function(e,t,r){e=n(e),r=o(r);return i?i(e,t,r):s.call(e,t,r)}})},{33:33,38:38,62:62,64:64,70:70}],234:[function(e,t,r){var a=e(62),n=e(98),o=e(33),i=e(38),s=e(81),A=e(64),l=e(46),c=(e(70).Reflect||{}).construct,p=A(function(){function e(){}return!(c(function(){},[],e)instanceof e)}),u=!A(function(){c(function(){})});a(a.S+a.F*(p||u),"Reflect",{construct:function(e,t){o(e),i(t);var r=arguments.length<3?e:o(arguments[2]);if(u&&!p)return c(e,t,r);if(e==r){switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3])}var a=[null];return a.push.apply(a,t),new(l.apply(e,a))}a=r.prototype,r=n(s(a)?a:Object.prototype),a=Function.apply.call(e,r,t);return s(a)?a:r}})},{33:33,38:38,46:46,62:62,64:64,70:70,81:81,98:98}],235:[function(e,t,r){var a=e(99),n=e(62),o=e(38),i=e(143);n(n.S+n.F*e(64)(function(){Reflect.defineProperty(a.f({},1,{value:1}),1,{value:2})}),"Reflect",{defineProperty:function(e,t,r){o(e),t=i(t,!0),o(r);try{return a.f(e,t,r),!0}catch(e){return!1}}})},{143:143,38:38,62:62,64:64,99:99}],236:[function(e,t,r){var a=e(62),n=e(101).f,o=e(38);a(a.S,"Reflect",{deleteProperty:function(e,t){var r=n(o(e),t);return!(r&&!r.configurable)&&delete e[t]}})},{101:101,38:38,62:62}],237:[function(e,t,r){function a(e){this._t=o(e),this._i=0;var t,r=this._k=[];for(t in e)r.push(t)}var n=e(62),o=e(38);e(84)(a,"Object",function(){var e,t=this._k;do{if(this._i>=t.length)return{value:void 0,done:!0}}while(!((e=t[this._i++])in this._t));return{value:e,done:!1}}),n(n.S,"Reflect",{enumerate:function(e){return new a(e)}})},{38:38,62:62,84:84}],238:[function(e,t,r){var a=e(101),n=e(62),o=e(38);n(n.S,"Reflect",{getOwnPropertyDescriptor:function(e,t){return a.f(o(e),t)}})},{101:101,38:38,62:62}],239:[function(e,t,r){var a=e(62),n=e(105),o=e(38);a(a.S,"Reflect",{getPrototypeOf:function(e){return n(o(e))}})},{105:105,38:38,62:62}],240:[function(e,t,r){var o=e(101),i=e(105),s=e(71),a=e(62),A=e(81),l=e(38);a(a.S,"Reflect",{get:function e(t,r){var a,n=arguments.length<3?t:arguments[2];return l(t)===n?t[r]:(a=o.f(t,r))?s(a,"value")?a.value:void 0!==a.get?a.get.call(n):void 0:A(a=i(t))?e(a,r,n):void 0}})},{101:101,105:105,38:38,62:62,71:71,81:81}],241:[function(e,t,r){e=e(62);e(e.S,"Reflect",{has:function(e,t){return t in e}})},{62:62}],242:[function(e,t,r){var a=e(62),n=e(38),o=Object.isExtensible;a(a.S,"Reflect",{isExtensible:function(e){return n(e),!o||o(e)}})},{38:38,62:62}],243:[function(e,t,r){var a=e(62);a(a.S,"Reflect",{ownKeys:e(111)})},{111:111,62:62}],244:[function(e,t,r){var a=e(62),n=e(38),o=Object.preventExtensions;a(a.S,"Reflect",{preventExtensions:function(e){n(e);try{return o&&o(e),!0}catch(e){return!1}}})},{38:38,62:62}],245:[function(e,t,r){var a=e(62),n=e(122);n&&a(a.S,"Reflect",{setPrototypeOf:function(e,t){n.check(e,t);try{return n.set(e,t),!0}catch(e){return!1}}})},{122:122,62:62}],246:[function(e,t,r){var i=e(99),s=e(101),A=e(105),l=e(71),a=e(62),c=e(116),p=e(38),u=e(81);a(a.S,"Reflect",{set:function e(t,r,a){var n=arguments.length<4?t:arguments[3],o=s.f(p(t),r);if(!o){if(u(t=A(t)))return e(t,r,a,n);o=c(0)}if(l(o,"value")){if(!1===o.writable||!u(n))return!1;if(t=s.f(n,r)){if(t.get||t.set||!1===t.writable)return!1;t.value=a,i.f(n,r,t)}else i.f(n,r,c(0,a));return!0}return void 0!==o.set&&(o.set.call(n,a),!0)}})},{101:101,105:105,116:116,38:38,62:62,71:71,81:81,99:99}],247:[function(e,t,r){var a=e(70),o=e(75),n=e(99).f,i=e(103).f,s=e(82),A=e(66),l=d=a.RegExp,c=d.prototype,p=/a/g,u=/a/g,f=new d(p)!==p;if(e(58)&&(!f||e(64)(function(){return u[e(152)("match")]=!1,d(p)!=p||d(u)==u||"/a/i"!=d(p,"i")}))){for(var d=function(e,t){var r=this instanceof d,a=s(e),n=void 0===t;return!r&&a&&e.constructor===d&&n?e:o(f?new l(a&&!n?e.source:e,t):l((a=e instanceof d)?e.source:e,a&&n?A.call(e):t),r?this:c,d)},h=i(l),g=0;h.length>g;)(t=>{t in d||n(d,t,{configurable:!0,get:function(){return l[t]},set:function(e){l[t]=e}})})(h[g++]);(c.constructor=d).prototype=c,e(118)(a,"RegExp",d)}e(123)("RegExp")},{103:103,118:118,123:123,152:152,58:58,64:64,66:66,70:70,75:75,82:82,99:99}],248:[function(e,t,r){var a=e(120);e(62)({target:"RegExp",proto:!0,forced:a!==/./.exec},{exec:a})},{120:120,62:62}],249:[function(e,t,r){e(58)&&"g"!=/./g.flags&&e(99).f(RegExp.prototype,"flags",{configurable:!0,get:e(66)})},{58:58,66:66,99:99}],250:[function(e,t,r){var c=e(38),p=e(141),u=e(36),f=e(119);e(65)("match",1,function(a,n,A,l){return[function(e){var t=a(this),r=null==e?void 0:e[n];return void 0!==r?r.call(e,t):new RegExp(e)[n](String(t))},function(e){var t=l(A,e,this);if(t.done)return t.value;var r=c(e),a=String(this);if(!r.global)return f(r,a);for(var n=r.unicode,o=[],i=r.lastIndex=0;null!==(s=f(r,a));){var s=String(s[0]);""===(o[i]=s)&&(r.lastIndex=u(a,p(r.lastIndex),n)),i++}return 0===i?null:o}]})},{119:119,141:141,36:36,38:38,65:65}],251:[function(e,t,r){var x=e(38),C=e(142),P=e(141),S=e(139),L=e(36),E=e(119),T=Math.max,B=Math.min,D=Math.floor,k=/\$([$&`']|\d\d?|<[^>]*>)/g,_=/\$([$&`']|\d\d?)/g;e(65)("replace",2,function(n,o,b,w){return[function(e,t){var r=n(this),a=null==e?void 0:e[o];return void 0!==a?a.call(e,r,t):b.call(String(r),e,t)},function(e,t){var r=w(b,e,this,t);if(r.done)return r.value;var a,n=x(e),o=String(this),i="function"==typeof t,s=(i||(t=String(t)),n.global);s&&(a=n.unicode,n.lastIndex=0);for(var A=[];;){var l=E(n,o);if(null===l)break;if(A.push(l),!s)break;""===String(l[0])&&(n.lastIndex=L(o,P(n.lastIndex),a))}for(var c,p="",u=0,f=0;f{var c=s+o.length,p=A.length,t=_;return void 0!==l&&(l=C(l),t=k),b.call(e,t,function(e,t){var r;switch(t.charAt(0)){case"$":return"$";case"&":return o;case"`":return i.slice(0,s);case"'":return i.slice(c);case"<":r=l[t.slice(1,-1)];break;default:var a,n=+t;if(0==n)return e;if(p>>0,c=new RegExp(e.source,s+"g");(a=u.call(c,r))&&!(A<(n=c[P])&&(i.push(r.slice(A,a.index)),1>>0;if(0==s)return[];if(0===a.length)return null===w(i,a)?[a]:[];for(var A=0,l=0,c=[];l>10),t%1024+56320))}return r.join("")}})},{137:137,62:62}],266:[function(e,t,r){var a=e(62),n=e(130);a(a.P+a.F*e(63)("includes"),"String",{includes:function(e){return!!~n(this,e,"includes").indexOf(e,1=e.length?{value:void 0,done:!0}:(e=a(e,t),this._i+=e.length,{value:e,done:!1})})},{129:129,85:85}],269:[function(e,t,r){e(131)("link",function(t){return function(e){return t(this,"a","href",e)}})},{131:131}],270:[function(e,t,r){var a=e(62),i=e(140),s=e(141);a(a.S,"String",{raw:function(e){for(var t=i(e.raw),r=s(t.length),a=arguments.length,n=[],o=0;on;)l(B,t=r[n++])||t==E||t==z||a.push(t);return a}function i(e){for(var t,r=e===k,a=Z(r?D:m(e)),n=[],o=0;a.length>o;)!l(B,t=a[o++])||r&&!l(k,t)||n.push(B[t]);return n}function s(e,t,r){return e===k&&s(D,t,r),g(e),t=v(t,!0),g(r),(l(B,t)?(r.enumerable?(l(e,E)&&e[E][t]&&(e[E][t]=!1),r=b(r,{enumerable:y(0,!1)})):(l(e,E)||x(e,E,y(1,{})),e[E][t]=!0),F):x)(e,t,r)}var A=e(70),l=e(71),c=e(58),p=e(62),M=e(118),z=e(94).KEY,u=e(64),f=e(126),d=e(124),U=e(147),h=e(152),j=e(151),G=e(150),Q=e(61),W=e(79),g=e(38),Y=e(81),X=e(142),m=e(140),v=e(143),y=e(116),b=e(98),H=e(102),V=e(101),w=e(104),q=e(99),J=e(107),K=V.f,x=q.f,Z=H.f,C=A.Symbol,P=A.JSON,S=P&&P.stringify,L="prototype",E=h("_hidden"),$=h("toPrimitive"),ee={}.propertyIsEnumerable,T=f("symbol-registry"),B=f("symbols"),D=f("op-symbols"),k=Object[L],f="function"==typeof C&&!!w.f,_=A.QObject,N=!_||!_[L]||!_[L].findChild,F=c&&u(function(){return 7!=b(x({},"a",{get:function(){return x(this,"a",{value:7}).a}})).a})?function(e,t,r){var a=K(k,t);a&&delete k[t],x(e,t,r),a&&e!==k&&x(k,t,a)}:x,I=f&&"symbol"==typeof C.iterator?function(e){return"symbol"==typeof e}:function(e){return e instanceof C};f||(M((C=function(){if(this instanceof C)throw TypeError("Symbol is not a constructor!");var t=U(0re;)h(te[re++]);for(var ae=J(h.store),ne=0;ae.length>ne;)G(ae[ne++]);p(p.S+p.F*!f,"Symbol",{for:function(e){return l(T,e+="")?T[e]:T[e]=C(e)},keyFor:function(e){if(!I(e))throw TypeError(e+" is not a symbol!");for(var t in T)if(T[t]===e)return t},useSetter:function(){N=!0},useSimple:function(){N=!1}}),p(p.S+p.F*!f,"Object",{create:function(e,t){return void 0===t?b(e):r(b(e),t)},defineProperty:s,defineProperties:r,getOwnPropertyDescriptor:n,getOwnPropertyNames:o,getOwnPropertySymbols:i});_=u(function(){w.f(1)});p(p.S+p.F*_,"Object",{getOwnPropertySymbols:function(e){return w.f(X(e))}}),P&&p(p.S+p.F*(!f||u(function(){var e=C();return"[null]"!=S([e])||"{}"!=S({a:e})||"{}"!=S(Object(e))})),"JSON",{stringify:function(e){for(var t,r,a=[e],n=1;ns;)void 0!==(r=n(a,t=o[s++]))&&p(i,t,r);return i}})},{101:101,111:111,140:140,53:53,62:62}],296:[function(e,t,r){var a=e(62),n=e(110)(!1);a(a.S,"Object",{values:function(e){return n(e)}})},{110:110,62:62}],297:[function(e,t,r){var a=e(62),n=e(52),o=e(70),i=e(127),s=e(115);a(a.P+a.R,"Promise",{finally:function(t){var r=i(this,n.Promise||o.Promise),e="function"==typeof t;return this.then(e?function(e){return s(r,t()).then(function(){return e})}:t,e?function(e){return s(r,t()).then(function(){throw e})}:t)}})},{115:115,127:127,52:52,62:62,70:70}],298:[function(e,t,r){var a=e(62),n=e(132),e=e(148),e=/Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(e);a(a.P+a.F*e,"String",{padEnd:function(e){return n(this,e,1{function c(e,i,s,A){return new(s=s||Promise)(function(r,t){function a(e){try{o(A.next(e))}catch(e){t(e)}}function n(e){try{o(A.throw(e))}catch(e){t(e)}}function o(e){var t;e.done?r(e.value):((t=e.value)instanceof s?t:new s(function(e){e(t)})).then(a,n)}o((A=A.apply(e,i||[])).next())})}let F=914400,m=12700,A="\r\n",D=/^[0-9a-fA-F]{6}$/,k=1.67,_=27,u={type:"solid",color:"666666",pt:1},Q=[.05,.1,.05,.1],p={color:"363636",pt:1},f={color:"888888",style:"solid",size:1,cap:"flat"},d="000000",v=12,N=18,o="LAYOUT_16x9",t="DEFAULT",l={type:"outer",blur:3,offset:23e3/12700,angle:90,color:"000000",opacity:.35,rotateWithShape:!0},y=[.5,.5,.5,.5],W={color:"000000"},Y={size:8,color:"FFFFFF",opacity:.75},h="2094734552",X="2094734553",g="2094734554",H="2094734555",V="2094734556",r="ABCDEFGHIJKLMNOPQRSTUVWXYZ".split(""),q=["C0504D","4F81BD","9BBB59","8064A2","4BACC6","F79646","628FC6","C86360","C0504D","4F81BD","9BBB59","8064A2","4BACC6","F79646","628FC6","C86360"],J=["5DA5DA","FAA43A","60BD68","F17CB0","B2912F","B276B2","DECF3F","F15854","A7A7A7","5DA5DA","FAA43A","60BD68","F17CB0","B2912F","B276B2","DECF3F","F15854","A7A7A7"];var i,s,a,K,Z,n,$,ee,b,w,te,x,I,re,C,e;(e=i=i||{}).left="left",e.center="center",e.right="right",e.justify="justify",(e=s=s||{}).b="b",e.ctr="ctr",e.t="t";let ae="{F7021451-1387-4CA6-816F-3879F97B5CBC}",P=((e=a=a||{}).arraybuffer="arraybuffer",e.base64="base64",e.binarystring="binarystring",e.blob="blob",e.nodebuffer="nodebuffer",e.uint8array="uint8array",(e=K=K||{}).area="area",e.bar="bar",e.bar3d="bar3D",e.bubble="bubble",e.bubble3d="bubble3D",e.doughnut="doughnut",e.line="line",e.pie="pie",e.radar="radar",e.scatter="scatter",(e=Z=Z||{}).accentBorderCallout1="accentBorderCallout1",e.accentBorderCallout2="accentBorderCallout2",e.accentBorderCallout3="accentBorderCallout3",e.accentCallout1="accentCallout1",e.accentCallout2="accentCallout2",e.accentCallout3="accentCallout3",e.actionButtonBackPrevious="actionButtonBackPrevious",e.actionButtonBeginning="actionButtonBeginning",e.actionButtonBlank="actionButtonBlank",e.actionButtonDocument="actionButtonDocument",e.actionButtonEnd="actionButtonEnd",e.actionButtonForwardNext="actionButtonForwardNext",e.actionButtonHelp="actionButtonHelp",e.actionButtonHome="actionButtonHome",e.actionButtonInformation="actionButtonInformation",e.actionButtonMovie="actionButtonMovie",e.actionButtonReturn="actionButtonReturn",e.actionButtonSound="actionButtonSound",e.arc="arc",e.bentArrow="bentArrow",e.bentUpArrow="bentUpArrow",e.bevel="bevel",e.blockArc="blockArc",e.borderCallout1="borderCallout1",e.borderCallout2="borderCallout2",e.borderCallout3="borderCallout3",e.bracePair="bracePair",e.bracketPair="bracketPair",e.callout1="callout1",e.callout2="callout2",e.callout3="callout3",e.can="can",e.chartPlus="chartPlus",e.chartStar="chartStar",e.chartX="chartX",e.chevron="chevron",e.chord="chord",e.circularArrow="circularArrow",e.cloud="cloud",e.cloudCallout="cloudCallout",e.corner="corner",e.cornerTabs="cornerTabs",e.cube="cube",e.curvedDownArrow="curvedDownArrow",e.curvedLeftArrow="curvedLeftArrow",e.curvedRightArrow="curvedRightArrow",e.curvedUpArrow="curvedUpArrow",e.custGeom="custGeom",e.decagon="decagon",e.diagStripe="diagStripe",e.diamond="diamond",e.dodecagon="dodecagon",e.donut="donut",e.doubleWave="doubleWave",e.downArrow="downArrow",e.downArrowCallout="downArrowCallout",e.ellipse="ellipse",e.ellipseRibbon="ellipseRibbon",e.ellipseRibbon2="ellipseRibbon2",e.flowChartAlternateProcess="flowChartAlternateProcess",e.flowChartCollate="flowChartCollate",e.flowChartConnector="flowChartConnector",e.flowChartDecision="flowChartDecision",e.flowChartDelay="flowChartDelay",e.flowChartDisplay="flowChartDisplay",e.flowChartDocument="flowChartDocument",e.flowChartExtract="flowChartExtract",e.flowChartInputOutput="flowChartInputOutput",e.flowChartInternalStorage="flowChartInternalStorage",e.flowChartMagneticDisk="flowChartMagneticDisk",e.flowChartMagneticDrum="flowChartMagneticDrum",e.flowChartMagneticTape="flowChartMagneticTape",e.flowChartManualInput="flowChartManualInput",e.flowChartManualOperation="flowChartManualOperation",e.flowChartMerge="flowChartMerge",e.flowChartMultidocument="flowChartMultidocument",e.flowChartOfflineStorage="flowChartOfflineStorage",e.flowChartOffpageConnector="flowChartOffpageConnector",e.flowChartOnlineStorage="flowChartOnlineStorage",e.flowChartOr="flowChartOr",e.flowChartPredefinedProcess="flowChartPredefinedProcess",e.flowChartPreparation="flowChartPreparation",e.flowChartProcess="flowChartProcess",e.flowChartPunchedCard="flowChartPunchedCard",e.flowChartPunchedTape="flowChartPunchedTape",e.flowChartSort="flowChartSort",e.flowChartSummingJunction="flowChartSummingJunction",e.flowChartTerminator="flowChartTerminator",e.folderCorner="folderCorner",e.frame="frame",e.funnel="funnel",e.gear6="gear6",e.gear9="gear9",e.halfFrame="halfFrame",e.heart="heart",e.heptagon="heptagon",e.hexagon="hexagon",e.homePlate="homePlate",e.horizontalScroll="horizontalScroll",e.irregularSeal1="irregularSeal1",e.irregularSeal2="irregularSeal2",e.leftArrow="leftArrow",e.leftArrowCallout="leftArrowCallout",e.leftBrace="leftBrace",e.leftBracket="leftBracket",e.leftCircularArrow="leftCircularArrow",e.leftRightArrow="leftRightArrow",e.leftRightArrowCallout="leftRightArrowCallout",e.leftRightCircularArrow="leftRightCircularArrow",e.leftRightRibbon="leftRightRibbon",e.leftRightUpArrow="leftRightUpArrow",e.leftUpArrow="leftUpArrow",e.lightningBolt="lightningBolt",e.line="line",e.lineInv="lineInv",e.mathDivide="mathDivide",e.mathEqual="mathEqual",e.mathMinus="mathMinus",e.mathMultiply="mathMultiply",e.mathNotEqual="mathNotEqual",e.mathPlus="mathPlus",e.moon="moon",e.noSmoking="noSmoking",e.nonIsoscelesTrapezoid="nonIsoscelesTrapezoid",e.notchedRightArrow="notchedRightArrow",e.octagon="octagon",e.parallelogram="parallelogram",e.pentagon="pentagon",e.pie="pie",e.pieWedge="pieWedge",e.plaque="plaque",e.plaqueTabs="plaqueTabs",e.plus="plus",e.quadArrow="quadArrow",e.quadArrowCallout="quadArrowCallout",e.rect="rect",e.ribbon="ribbon",e.ribbon2="ribbon2",e.rightArrow="rightArrow",e.rightArrowCallout="rightArrowCallout",e.rightBrace="rightBrace",e.rightBracket="rightBracket",e.round1Rect="round1Rect",e.round2DiagRect="round2DiagRect",e.round2SameRect="round2SameRect",e.roundRect="roundRect",e.rtTriangle="rtTriangle",e.smileyFace="smileyFace",e.snip1Rect="snip1Rect",e.snip2DiagRect="snip2DiagRect",e.snip2SameRect="snip2SameRect",e.snipRoundRect="snipRoundRect",e.squareTabs="squareTabs",e.star10="star10",e.star12="star12",e.star16="star16",e.star24="star24",e.star32="star32",e.star4="star4",e.star5="star5",e.star6="star6",e.star7="star7",e.star8="star8",e.stripedRightArrow="stripedRightArrow",e.sun="sun",e.swooshArrow="swooshArrow",e.teardrop="teardrop",e.trapezoid="trapezoid",e.triangle="triangle",e.upArrow="upArrow",e.upArrowCallout="upArrowCallout",e.upDownArrow="upDownArrow",e.upDownArrowCallout="upDownArrowCallout",e.uturnArrow="uturnArrow",e.verticalScroll="verticalScroll",e.wave="wave",e.wedgeEllipseCallout="wedgeEllipseCallout",e.wedgeRectCallout="wedgeRectCallout",e.wedgeRoundRectCallout="wedgeRoundRectCallout",(e=n=n||{}).text1="tx1",e.text2="tx2",e.background1="bg1",e.background2="bg2",e.accent1="accent1",e.accent2="accent2",e.accent3="accent3",e.accent4="accent4",e.accent5="accent5",e.accent6="accent6",(e=$=$||{}).left="left",e.center="center",e.right="right",e.justify="justify",(e=ee=ee||{}).top="top",e.middle="middle",e.bottom="bottom",(e=b=b||{}).ACTION_BUTTON_BACK_OR_PREVIOUS="actionButtonBackPrevious",e.ACTION_BUTTON_BEGINNING="actionButtonBeginning",e.ACTION_BUTTON_CUSTOM="actionButtonBlank",e.ACTION_BUTTON_DOCUMENT="actionButtonDocument",e.ACTION_BUTTON_END="actionButtonEnd",e.ACTION_BUTTON_FORWARD_OR_NEXT="actionButtonForwardNext",e.ACTION_BUTTON_HELP="actionButtonHelp",e.ACTION_BUTTON_HOME="actionButtonHome",e.ACTION_BUTTON_INFORMATION="actionButtonInformation",e.ACTION_BUTTON_MOVIE="actionButtonMovie",e.ACTION_BUTTON_RETURN="actionButtonReturn",e.ACTION_BUTTON_SOUND="actionButtonSound",e.ARC="arc",e.BALLOON="wedgeRoundRectCallout",e.BENT_ARROW="bentArrow",e.BENT_UP_ARROW="bentUpArrow",e.BEVEL="bevel",e.BLOCK_ARC="blockArc",e.CAN="can",e.CHART_PLUS="chartPlus",e.CHART_STAR="chartStar",e.CHART_X="chartX",e.CHEVRON="chevron",e.CHORD="chord",e.CIRCULAR_ARROW="circularArrow",e.CLOUD="cloud",e.CLOUD_CALLOUT="cloudCallout",e.CORNER="corner",e.CORNER_TABS="cornerTabs",e.CROSS="plus",e.CUBE="cube",e.CURVED_DOWN_ARROW="curvedDownArrow",e.CURVED_DOWN_RIBBON="ellipseRibbon",e.CURVED_LEFT_ARROW="curvedLeftArrow",e.CURVED_RIGHT_ARROW="curvedRightArrow",e.CURVED_UP_ARROW="curvedUpArrow",e.CURVED_UP_RIBBON="ellipseRibbon2",e.CUSTOM_GEOMETRY="custGeom",e.DECAGON="decagon",e.DIAGONAL_STRIPE="diagStripe",e.DIAMOND="diamond",e.DODECAGON="dodecagon",e.DONUT="donut",e.DOUBLE_BRACE="bracePair",e.DOUBLE_BRACKET="bracketPair",e.DOUBLE_WAVE="doubleWave",e.DOWN_ARROW="downArrow",e.DOWN_ARROW_CALLOUT="downArrowCallout",e.DOWN_RIBBON="ribbon",e.EXPLOSION1="irregularSeal1",e.EXPLOSION2="irregularSeal2",e.FLOWCHART_ALTERNATE_PROCESS="flowChartAlternateProcess",e.FLOWCHART_CARD="flowChartPunchedCard",e.FLOWCHART_COLLATE="flowChartCollate",e.FLOWCHART_CONNECTOR="flowChartConnector",e.FLOWCHART_DATA="flowChartInputOutput",e.FLOWCHART_DECISION="flowChartDecision",e.FLOWCHART_DELAY="flowChartDelay",e.FLOWCHART_DIRECT_ACCESS_STORAGE="flowChartMagneticDrum",e.FLOWCHART_DISPLAY="flowChartDisplay",e.FLOWCHART_DOCUMENT="flowChartDocument",e.FLOWCHART_EXTRACT="flowChartExtract",e.FLOWCHART_INTERNAL_STORAGE="flowChartInternalStorage",e.FLOWCHART_MAGNETIC_DISK="flowChartMagneticDisk",e.FLOWCHART_MANUAL_INPUT="flowChartManualInput",e.FLOWCHART_MANUAL_OPERATION="flowChartManualOperation",e.FLOWCHART_MERGE="flowChartMerge",e.FLOWCHART_MULTIDOCUMENT="flowChartMultidocument",e.FLOWCHART_OFFLINE_STORAGE="flowChartOfflineStorage",e.FLOWCHART_OFFPAGE_CONNECTOR="flowChartOffpageConnector",e.FLOWCHART_OR="flowChartOr",e.FLOWCHART_PREDEFINED_PROCESS="flowChartPredefinedProcess",e.FLOWCHART_PREPARATION="flowChartPreparation",e.FLOWCHART_PROCESS="flowChartProcess",e.FLOWCHART_PUNCHED_TAPE="flowChartPunchedTape",e.FLOWCHART_SEQUENTIAL_ACCESS_STORAGE="flowChartMagneticTape",e.FLOWCHART_SORT="flowChartSort",e.FLOWCHART_STORED_DATA="flowChartOnlineStorage",e.FLOWCHART_SUMMING_JUNCTION="flowChartSummingJunction",e.FLOWCHART_TERMINATOR="flowChartTerminator",e.FOLDED_CORNER="folderCorner",e.FRAME="frame",e.FUNNEL="funnel",e.GEAR_6="gear6",e.GEAR_9="gear9",e.HALF_FRAME="halfFrame",e.HEART="heart",e.HEPTAGON="heptagon",e.HEXAGON="hexagon",e.HORIZONTAL_SCROLL="horizontalScroll",e.ISOSCELES_TRIANGLE="triangle",e.LEFT_ARROW="leftArrow",e.LEFT_ARROW_CALLOUT="leftArrowCallout",e.LEFT_BRACE="leftBrace",e.LEFT_BRACKET="leftBracket",e.LEFT_CIRCULAR_ARROW="leftCircularArrow",e.LEFT_RIGHT_ARROW="leftRightArrow",e.LEFT_RIGHT_ARROW_CALLOUT="leftRightArrowCallout",e.LEFT_RIGHT_CIRCULAR_ARROW="leftRightCircularArrow",e.LEFT_RIGHT_RIBBON="leftRightRibbon",e.LEFT_RIGHT_UP_ARROW="leftRightUpArrow",e.LEFT_UP_ARROW="leftUpArrow",e.LIGHTNING_BOLT="lightningBolt",e.LINE_CALLOUT_1="borderCallout1",e.LINE_CALLOUT_1_ACCENT_BAR="accentCallout1",e.LINE_CALLOUT_1_BORDER_AND_ACCENT_BAR="accentBorderCallout1",e.LINE_CALLOUT_1_NO_BORDER="callout1",e.LINE_CALLOUT_2="borderCallout2",e.LINE_CALLOUT_2_ACCENT_BAR="accentCallout2",e.LINE_CALLOUT_2_BORDER_AND_ACCENT_BAR="accentBorderCallout2",e.LINE_CALLOUT_2_NO_BORDER="callout2",e.LINE_CALLOUT_3="borderCallout3",e.LINE_CALLOUT_3_ACCENT_BAR="accentCallout3",e.LINE_CALLOUT_3_BORDER_AND_ACCENT_BAR="accentBorderCallout3",e.LINE_CALLOUT_3_NO_BORDER="callout3",e.LINE_CALLOUT_4="borderCallout4",e.LINE_CALLOUT_4_ACCENT_BAR="accentCallout3=4",e.LINE_CALLOUT_4_BORDER_AND_ACCENT_BAR="accentBorderCallout4",e.LINE_CALLOUT_4_NO_BORDER="callout4",e.LINE="line",e.LINE_INVERSE="lineInv",e.MATH_DIVIDE="mathDivide",e.MATH_EQUAL="mathEqual",e.MATH_MINUS="mathMinus",e.MATH_MULTIPLY="mathMultiply",e.MATH_NOT_EQUAL="mathNotEqual",e.MATH_PLUS="mathPlus",e.MOON="moon",e.NON_ISOSCELES_TRAPEZOID="nonIsoscelesTrapezoid",e.NOTCHED_RIGHT_ARROW="notchedRightArrow",e.NO_SYMBOL="noSmoking",e.OCTAGON="octagon",e.OVAL="ellipse",e.OVAL_CALLOUT="wedgeEllipseCallout",e.PARALLELOGRAM="parallelogram",e.PENTAGON="homePlate",e.PIE="pie",e.PIE_WEDGE="pieWedge",e.PLAQUE="plaque",e.PLAQUE_TABS="plaqueTabs",e.QUAD_ARROW="quadArrow",e.QUAD_ARROW_CALLOUT="quadArrowCallout",e.RECTANGLE="rect",e.RECTANGULAR_CALLOUT="wedgeRectCallout",e.REGULAR_PENTAGON="pentagon",e.RIGHT_ARROW="rightArrow",e.RIGHT_ARROW_CALLOUT="rightArrowCallout",e.RIGHT_BRACE="rightBrace",e.RIGHT_BRACKET="rightBracket",e.RIGHT_TRIANGLE="rtTriangle",e.ROUNDED_RECTANGLE="roundRect",e.ROUNDED_RECTANGULAR_CALLOUT="wedgeRoundRectCallout",e.ROUND_1_RECTANGLE="round1Rect",e.ROUND_2_DIAG_RECTANGLE="round2DiagRect",e.ROUND_2_SAME_RECTANGLE="round2SameRect",e.SMILEY_FACE="smileyFace",e.SNIP_1_RECTANGLE="snip1Rect",e.SNIP_2_DIAG_RECTANGLE="snip2DiagRect",e.SNIP_2_SAME_RECTANGLE="snip2SameRect",e.SNIP_ROUND_RECTANGLE="snipRoundRect",e.SQUARE_TABS="squareTabs",e.STAR_10_POINT="star10",e.STAR_12_POINT="star12",e.STAR_16_POINT="star16",e.STAR_24_POINT="star24",e.STAR_32_POINT="star32",e.STAR_4_POINT="star4",e.STAR_5_POINT="star5",e.STAR_6_POINT="star6",e.STAR_7_POINT="star7",e.STAR_8_POINT="star8",e.STRIPED_RIGHT_ARROW="stripedRightArrow",e.SUN="sun",e.SWOOSH_ARROW="swooshArrow",e.TEAR="teardrop",e.TRAPEZOID="trapezoid",e.UP_ARROW="upArrow",e.UP_ARROW_CALLOUT="upArrowCallout",e.UP_DOWN_ARROW="upDownArrow",e.UP_DOWN_ARROW_CALLOUT="upDownArrowCallout",e.UP_RIBBON="ribbon2",e.U_TURN_ARROW="uturnArrow",e.VERTICAL_SCROLL="verticalScroll",e.WAVE="wave",(e=w=w||{}).AREA="area",e.BAR="bar",e.BAR3D="bar3D",e.BUBBLE="bubble",e.BUBBLE3D="bubble3D",e.DOUGHNUT="doughnut",e.LINE="line",e.PIE="pie",e.RADAR="radar",e.SCATTER="scatter",(e=te=te||{}).TEXT1="tx1",e.TEXT2="tx2",e.BACKGROUND1="bg1",e.BACKGROUND2="bg2",e.ACCENT1="accent1",e.ACCENT2="accent2",e.ACCENT3="accent3",e.ACCENT4="accent4",e.ACCENT5="accent5",e.ACCENT6="accent6",(e=x=x||{}).chart="chart",e.image="image",e.line="line",e.rect="rect",e.text="text",e.placeholder="placeholder",(e=I=I||{}).chart="chart",e.hyperlink="hyperlink",e.image="image",e.media="media",e.online="online",e.placeholder="placeholder",e.table="table",e.tablecell="tablecell",e.text="text",e.notes="notes",(e=re=re||{}).title="title",e.body="body",e.image="pic",e.chart="chart",e.table="tbl",e.media="media",(e=C=C||{}).DEFAULT="•",e.CHECK="✓",e.STAR="★",e.TRIANGLE="▶","data:image/png;base64,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");function R(e,t,r){return"number"==typeof(e="string"!=typeof e||isNaN(Number(e))?e:Number(e))&&e<100?M(e):"number"==typeof e&&100<=e?e:"string"==typeof e&&e.includes("%")?(!t||"X"!==t)&&t&&"Y"===t?Math.round(parseFloat(e)/100*r.height):Math.round(parseFloat(e)/100*r.width):0}function ne(e){return e.replace(/[xy]/g,function(e){var t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)})}function O(e){return void 0===e||null==e?"":e.toString().replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function M(e){return"number"==typeof e&&100${t}`:``}function G(e){let t="solid",r="",a="",n="";return e&&("string"==typeof e?r=e:(e.type&&(t=e.type),e.color&&(r=e.color),e.alpha&&(a+=``),e.transparency&&(a+=``)),"solid"===t?n+=`${j(r,a)}`:n+=""),n}function S(e){return e._rels.length+e._relsChart.length+e._relsMedia.length+1}function se(e){if(e&&"object"==typeof e)return"outer"!==e.type&&"inner"!==e.type&&"none"!==e.type&&(console.warn("Warning: shadow.type options are `outer`, `inner` or `none`."),e.type="outer"),e.angle&&((isNaN(Number(e.angle))||e.angle<0||359{e=(e=e||{_type:I.tablecell}).options||null;o+=Number(null!==e&&e.colspan?e.colspan:1)}),p.verbose&&console.log("| numCols ......................................... = "+o),!A&&p.colW&&(c=Array.isArray(p.colW)?p.colW.reduce((e,t)=>e+t)*F:p.colW*o||0,p.verbose)&&console.log("| tableCalcW ...................................... = "+c/F),n=c||M((i?i/F:a[1])+a[3]),p.verbose&&console.log("| emuSlideTabW .................................... = "+(n/F).toFixed(1)),!p.colW||!Array.isArray(p.colW))if(p.colW&&!isNaN(Number(p.colW))){let e=[];(t[0]||[]).forEach(()=>e.push(p.colW)),p.colW=[],e.forEach(e=>{Array.isArray(p.colW)&&p.colW.push(e)})}else{p.colW=[];for(let e=0;e{let n=[],r=0,a=0,o=[],i=(t.forEach(e=>{var t;o.push({_type:I.tablecell,text:[],options:e.options}),e.options.margin&&1<=e.options.margin[0]?(null!=(t=e.options)&&t.margin&&e.options.margin[0]&&z(e.options.margin[0])>r?r=z(e.options.margin[0]):null!=p&&p.margin&&p.margin[0]&&z(p.margin[0])>r&&(r=z(p.margin[0])),null!=(t=e.options)&&t.margin&&e.options.margin[2]&&z(e.options.margin[2])>a?a=z(e.options.margin[2]):null!=p&&p.margin&&p.margin[2]&&z(p.margin[2])>a&&(a=z(p.margin[2]))):(null!=(t=e.options)&&t.margin&&e.options.margin[0]&&M(e.options.margin[0])>r?r=M(e.options.margin[0]):null!=p&&p.margin&&p.margin[0]&&M(p.margin[0])>r&&(r=M(p.margin[0])),null!=(t=e.options)&&t.margin&&e.options.margin[2]&&M(e.options.margin[2])>a?a=M(e.options.margin[2]):null!=p&&p.margin&&p.margin[2]&&M(p.margin[2])>a&&(a=M(p.margin[2])))}),h(),f+=r+a,p.verbose&&0===e&&console.log(`| SLIDE [${d.length}]: emuSlideTabH ...... = ${(u/F).toFixed(1)} `),t.forEach((r,a)=>{var e={_type:I.tablecell,_lines:null,_lineHeight:M((null!=(e=r.options)&&e.fontSize?r.options.fontSize:p.fontSize||v)*(k+(p.autoPageLineWeight||0))/100),text:[],options:r.options};e.options.rowspan&&(e._lineHeight=0),e.options.autoPageCharWeight=p.autoPageCharWeight||null;let t=p.colW[a];r.options.colspan&&Array.isArray(p.colW)&&(t=p.colW.filter((e,t)=>a<=t&&te+t)),e._lines=((e,t)=>{var r=2.3+(null!=(r=e.options)&&r.autoPageCharWeight?e.options.autoPageCharWeight:0);let a=Math.floor(t/m*F)/((null!=(t=e.options)&&t.fontSize?e.options.fontSize:v)/r),n=[],o=[],i=[],s=[],A=(e.text&&0===e.text.toString().trim().length?o.push({_type:I.tablecell,text:" "}):"number"==typeof e.text||"string"==typeof e.text?o.push({_type:I.tablecell,text:(e.text||"").toString().trim()}):Array.isArray(e.text)&&(o=e.text),[]);return o.forEach(t=>{var e;"string"==typeof t.text&&(1{A.push({_type:I.tablecell,text:e,options:Object.assign(Object.assign({},t.options),{breakLine:!0})})}):A.push({_type:I.tablecell,text:t.text.trim(),options:t.options}),null!=(e=t.options))&&e.breakLine&&(i.push(A),A=[]),0{e.forEach(a=>{let n=[];let o=String(a.text).split(" ");o.forEach((e,t)=>{var r=Object.assign({},a.options);null!=r&&r.breakLine&&(r.breakLine=t+1===o.length),n.push({_type:I.tablecell,text:e+(t+1{let t=[],r="";e.forEach(e=>{r.length+e.text.length>a&&(n.push(t),t=[],r=""),t.push(e),r+=e.text.toString()}),0{e._lineHeight>=s&&(s=e._lineHeight)}),f+s>u&&(p.verbose&&(console.log("\n|-----------------------------------------------------------------------|"),console.log(`|-- NEW SLIDE CREATED (currTabH+currLineH > maxH) => ${(f/F).toFixed(2)} + ${(l._lineHeight/F).toFixed(2)} > `+u/F),console.log("|-----------------------------------------------------------------------|\n\n")),0e.text.length).reduce((e,t)=>e+t)&&g.rows.push(o),d.push(g),c=[],g={rows:c},o=[],t.forEach(e=>o.push({_type:I.tablecell,text:[],options:e.options})),h(),f+=r+a,p.verbose&&console.log(`| SLIDE [${d.length}]: emuSlideTabH ...... = ${(u/F).toFixed(1)} `),f=0,(p.addHeaderToEach||p.autoPageRepeatHeader)&&p._arrObjTabHeadRows&&p._arrObjTabHeadRows.forEach(e=>{let t=[],r=0;e.forEach(e=>{t.push(e),e._lineHeight>r&&(r=e._lineHeight)}),g.rows.push(t),f+=r}),e=o[i]);var c=l._lines.shift(),l=(Array.isArray(e.text)&&(c?e.text=e.text.concat(c):0===e.text.length&&(e.text=e.text.concat({_type:I.tablecell,text:""}))),i===n.length-1&&(f+=s),i=ie._lines.length).reduce((e,t)=>e+t));0===l&&(A=!0)}0{A=A.concat(e.data)}),r||a):(A=r,a),A.forEach((e,t)=>{e._dataIndex=t,void 0===e.labels||Array.isArray(e.labels[0])||(e.labels=[e.labels])}),s&&"object"==typeof s?s:{});l._type=t,l.x=void 0===l.x||null==l.x||isNaN(Number(l.x))?1:l.x,l.y=void 0===l.y||null==l.y||isNaN(Number(l.y))?1:l.y,l.w=l.w||"50%",l.h=l.h||"50%",l.objectName=l.objectName?O(l.objectName):"Chart "+e._slideObjects.filter(e=>e._type===I.chart).length,["bar","col"].includes(l.barDir||"")||(l.barDir="col"),l._type!==w.AREA||["stacked","standard","percentStacked"].includes(l.barGrouping||"")||(l.barGrouping="standard"),l._type!==w.BAR||["clustered","stacked","percentStacked"].includes(l.barGrouping||"")||(l.barGrouping="clustered"),l._type!==w.BAR3D||["clustered","stacked","standard","percentStacked"].includes(l.barGrouping||"")||(l.barGrouping="standard"),null!=(r=l.barGrouping)&&r.includes("tacked")&&!l.barGapWidthPct&&(l.barGapWidthPct=50),l.dataLabelPosition&&(l._type!==w.AREA&&l._type!==w.BAR3D&&l._type!==w.DOUGHNUT&&l._type!==w.RADAR||delete l.dataLabelPosition,l._type!==w.PIE||["bestFit","ctr","inEnd","outEnd"].includes(l.dataLabelPosition)||delete l.dataLabelPosition,l._type!==w.BUBBLE&&l._type!==w.BUBBLE3D&&l._type!==w.LINE&&l._type!==w.SCATTER||["b","ctr","l","r","t"].includes(l.dataLabelPosition)||delete l.dataLabelPosition,l._type===w.BAR)&&(["stacked","percentStacked"].includes(l.barGrouping||"")||["ctr","inBase","inEnd"].includes(l.dataLabelPosition)||delete l.dataLabelPosition,["clustered"].includes(l.barGrouping||"")||["ctr","inBase","inEnd","outEnd"].includes(l.dataLabelPosition)||delete l.dataLabelPosition),l.dataLabelBkgrdColors=!(!l.dataLabelBkgrdColors&&l.dataLabelBkgrdColors)&&l.dataLabelBkgrdColors,["b","l","r","t","tr"].includes(l.legendPos||"")||(l.legendPos="r"),["cone","coneToMax","box","cylinder","pyramid","pyramidToMax"].includes(l.bar3DShape||"")||(l.bar3DShape="box"),["circle","dash","diamond","dot","none","square","triangle"].includes(l.lineDataSymbol||"")||(l.lineDataSymbol="circle"),["gap","span"].includes(l.displayBlanksAs||"")||(l.displayBlanksAs="span"),["standard","marker","filled"].includes(l.radarStyle||"")||(l.radarStyle="standard"),l.lineDataSymbolSize=l.lineDataSymbolSize&&!isNaN(l.lineDataSymbolSize)?l.lineDataSymbolSize:6,l.lineDataSymbolLineSize=l.lineDataSymbolLineSize&&!isNaN(l.lineDataSymbolLineSize)?z(l.lineDataSymbolLineSize):z(.75),l.layout&&["x","y","w","h"].forEach(e=>{var t=l.layout[e];(isNaN(Number(t))||t<0||1e._type===I.image).length;if(p||c)if(p&&"string"!=typeof p)console.error("ERROR: addImage() 'path' should be a string, ex: {path:'/img/sample.png'} - you sent "+String(p));else if(c&&"string"!=typeof c)console.error("ERROR: addImage() 'data' should be a string, ex: {data:'image/png;base64,NMP[...]'} - you sent "+String(c));else if(c&&"string"==typeof c&&!c.toLowerCase().includes("base64,"))console.error("ERROR: Image `data` value lacks a base64 header! Ex: 'image/png;base64,NMP[...]')");else{let t=(p.substring(p.lastIndexOf("/")+1).split("?")[0].split(".").pop().split("#")[0]||"png").toLowerCase();if(c&&/image\/(\w+);/.exec(c)&&0e.path&&e.path===p&&e.type==="image/"+t&&!e.isDuplicate)[0],e._relsMedia.push({path:p||"preencoded."+t,type:"image/"+t,extn:t,data:c||"",rId:u,isDuplicate:!(null==n||!n.Target),Target:null!=n&&n.Target?n.Target:`../media/image-${e._slideNum}-${e._relsMedia.length+1}.`+t}),a.imageRid=u),"object"==typeof l){if(!l.url&&!l.slide)throw new Error("ERROR: `hyperlink` option requires either: `url` or `slide`");e._rels.push({type:I.hyperlink,data:l.slide?"slide":"dummy",rId:++u,Target:l.url||l.slide.toString()}),l._rId=u,a.hyperlink=l}e._slideObjects.push(a)}else console.error("ERROR: addImage() requires either 'data' or 'path' parameter!")}function ue(e,t,r){var r="object"==typeof r?r:{},a=(r.line=r.line||{type:"none"},{_type:I.text,shape:t||b.RECTANGLE,options:r,text:null});if(!t)throw new Error("Missing/Invalid shape parameter! Example: `addShape(pptxgen.shapes.LINE, {x:1, y:1, w:1, h:1});`");var t={type:r.line.type||"solid",color:r.line.color||"333333",transparency:r.line.transparency||0,width:r.line.width||1,dashType:r.line.dashType||"solid",beginArrowType:r.line.beginArrowType||null,endArrowType:r.line.endArrowType||null};"object"==typeof r.line&&"none"!==r.line.type&&(r.line=t),r.x=r.x||(0===r.x?0:1),r.y=r.y||(0===r.y?0:1),r.w=r.w||(0===r.w?0:1),r.h=r.h||(0===r.h?0:1),r.objectName=r.objectName?O(r.objectName):"Shape "+e._slideObjects.filter(e=>e._type===I.text).length,"string"==typeof r.line&&((t=t).color=String(r.line),r.line=t),"number"==typeof r.lineSize&&(r.line.width=r.lineSize),"string"==typeof r.lineDash&&(r.line.dashType=r.lineDash),"string"==typeof r.lineHead&&(r.line.beginArrowType=r.lineHead),"string"==typeof r.lineTail&&(r.line.endArrowType=r.lineTail),L(e,a),e._slideObjects.push(a)}function fe(r,e,t,a){let n={_type:a?I.placeholder:I.text,shape:(null==t?void 0:t.shape)||b.RECTANGLE,text:e&&0!==e.length?e:[{text:"",options:null}],options:t||{}};function o(t){var e;return t.placeholder||(t.color=t.color||n.options.color||r.color||d),(t.placeholder||a)&&(t.bullet=t.bullet||!1),(t=t.placeholder&&r._slideLayout&&r._slideLayout._slideObjects&&null!=(e=r._slideLayout._slideObjects.filter(e=>"placeholder"===e._type&&e.options&&e.options.placeholder&&e.options.placeholder===t.placeholder)[0])&&e.options?Object.assign(Object.assign({},t),e.options):t).objectName=t.objectName?O(t.objectName):"Text "+r._slideObjects.filter(e=>e._type===I.text).length,t.shape===b.LINE&&(e={type:t.line.type||"solid",color:t.line.color||"333333",transparency:t.line.transparency||0,width:t.line.width||1,dashType:t.line.dashType||"solid",beginArrowType:t.line.beginArrowType||null,endArrowType:t.line.endArrowType||null},"object"==typeof t.line&&(t.line=e),"string"==typeof t.line&&(e=e,"string"==typeof t.line&&(e.color=t.line),t.line=e),"number"==typeof t.lineSize&&(t.line.width=t.lineSize),"string"==typeof t.lineDash&&(t.line.dashType=t.lineDash),"string"==typeof t.lineHead&&(t.line.beginArrowType=t.lineHead),"string"==typeof t.lineTail)&&(t.line.endArrowType=t.lineTail),t.line=t.line||{},t.lineSpacing=t.lineSpacing&&!isNaN(t.lineSpacing)?t.lineSpacing:null,t.lineSpacingMultiple=t.lineSpacingMultiple&&!isNaN(t.lineSpacingMultiple)?t.lineSpacingMultiple:null,t._bodyProp=t._bodyProp||{},t._bodyProp.autoFit=t.autoFit||!1,t._bodyProp.anchor=t.placeholder?null:s.ctr,t._bodyProp.vert=t.vert||null,t._bodyProp.wrap="boolean"!=typeof t.wrap||t.wrap,(t.inset&&!isNaN(Number(t.inset))||0===t.inset)&&(t._bodyProp.lIns=M(t.inset),t._bodyProp.rIns=M(t.inset),t._bodyProp.tIns=M(t.inset),t._bodyProp.bIns=M(t.inset)),"boolean"==typeof t.underline&&!0===t.underline&&(t.underline={style:"sng"}),0===(t.align||"").toLowerCase().indexOf("c")?t._bodyProp.align=i.center:0===(t.align||"").toLowerCase().indexOf("l")?t._bodyProp.align=i.left:0===(t.align||"").toLowerCase().indexOf("r")?t._bodyProp.align=i.right:0===(t.align||"").toLowerCase().indexOf("j")&&(t._bodyProp.align=i.justify),0===(t.valign||"").toLowerCase().indexOf("b")?t._bodyProp.anchor=s.b:0===(t.valign||"").toLowerCase().indexOf("m")?t._bodyProp.anchor=s.ctr:0===(t.valign||"").toLowerCase().indexOf("t")&&(t._bodyProp.anchor=s.t),se(t.shadow),t}n.options=o(n.options),n.text.forEach(e=>e.options=o(e.options||{})),L(r,n.text||""),r._slideObjects.push(n)}function de(t,r){if(r.bkgd&&(r.background||(r.background={}),"string"==typeof r.bkgd?r.background.color=r.bkgd:(r.bkgd.data&&(r.background.data=r.bkgd.data),r.bkgd.path&&(r.background.path=r.bkgd.path),r.bkgd.src&&(r.background.path=r.bkgd.src))),null!=(a=r.background)&&a.fill&&(r.background.color=r.background.fill),t&&(t.path||t.data)){t.path=t.path||"preencoded.png";let e=(t.path.split(".").pop()||"png").split("?")[0];"jpg"===e&&(e="jpeg"),r._relsMedia=r._relsMedia||[];var a=r._relsMedia.length+1;r._relsMedia.push({path:t.path,type:I.image,extn:e,data:t.data||null,rId:a,Target:`../media/${(r._name||"").replace(/\s+/gi,"-")}-image-${r._relsMedia.length+1}.`+e}),r._bkgdImgRid=a}}function L(a,e,t){let r=[];"string"!=typeof e&&"number"!=typeof e&&(Array.isArray(e)?r=e:"object"==typeof e&&(r=[e]),r.forEach((r,e)=>{if(t&&t[e]&&t[e].hyperlink&&(r.options=Object.assign(Object.assign({},r.options),t[e])),Array.isArray(r)){let t=[];r.forEach(e=>{e.options&&!e.text.options&&t.push(e.options)}),L(a,r,t)}else Array.isArray(r.text)?L(a,r.text,t&&t[e]?[t[e]]:void 0):r&&"object"==typeof r&&r.options&&r.options.hyperlink&&!r.options.hyperlink._rId?"object"!=typeof r.options.hyperlink?console.log("ERROR: text `hyperlink` option should be an object. Ex: `hyperlink: {url:'https://github.com'}` "):r.options.hyperlink.url||r.options.hyperlink.slide?(e=S(a),a._rels.push({type:I.hyperlink,data:r.options.hyperlink.slide?"slide":"dummy",rId:e,Target:O(r.options.hyperlink.url)||r.options.hyperlink.slide.toString()}),r.options.hyperlink._rId=e):console.log("ERROR: 'hyperlink requires either: `url` or `slide`'"):r&&"object"==typeof r&&r.options&&r.options.hyperlink&&r.options.hyperlink._rId&&0===a._rels.filter(e=>e.rId===r.options.hyperlink._rId).length&&a._rels.push({type:I.hyperlink,data:r.options.hyperlink.slide?"slide":"dummy",rId:r.options.hyperlink._rId,Target:O(r.options.hyperlink.url)||r.options.hyperlink.slide.toString()})}))}class he{constructor(e){this.addSlide=e.addSlide,this.getSlide=e.getSlide,this._name="Slide "+e.slideNumber,this._presLayout=e.presLayout,this._rId=e.slideRId,this._rels=[],this._relsChart=[],this._relsMedia=[],this._setSlideNum=e.setSlideNum,this._slideId=e.slideId,this._slideLayout=e.slideLayout||null,this._slideNum=e.slideNumber,this._slideObjects=[],this._slideNumberProps=null!=(e=this._slideLayout)&&e._slideNumberProps?this._slideLayout._slideNumberProps:null}set bkgd(e){this._bkgd=e,this._background&&this._background.color||(this._background||(this._background={}),"string"==typeof e&&(this._background.color=e))}get bkgd(){return this._bkgd}set background(e){(this._background=e)&&de(e,this)}get background(){return this._background}set color(e){this._color=e}get color(){return this._color}set hidden(e){this._hidden=e}get hidden(){return this._hidden}set slideNumber(e){this._slideNumberProps=e,this._setSlideNum(e)}get slideNumber(){return this._slideNumberProps}get newAutoPagedSlides(){return this._newAutoPagedSlides}addChart(e,t,r){return ce(this,(r||{})._type=e,t,r),this}addImage(e){return pe(this,e),this}addMedia(e){{var n=this,o=e.x||0,i=e.y||0,s=e.w||2,A=e.h||2,l=e.data||"",c=e.link||"";let t=e.path||"",r=e.type||"audio",a;var p=e.cover||"data:image/png;base64,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AAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKREkRUAAACwrUpLSwuGDRvWfMCAAS26du3avKysrLiioqKkZcuWzZs1a1bcvHnz0tLS0rJsNtusuLi4ebNmzUoLCgo+8/eijY2N9Zs3b66pra2tqqur21xTU1NdVVVVs2nTptqNGzdWbdiwoeYvf/nL5hUrVlQtWLBgw6xZs6pqamoaJQYAAEDaKYABAACIiIghQ4aUHnTQQW379u3bql27dq3at2/fpkWLFq2bN29eWVpa2qpZs2bNCwsLm2ez2fLCwsLyoqKi8sLCwtKknK+hoaG6vr6+qqGh4S91dXV/aWhoqNq8eXNVTU3NuqqqqvUbNmxYu2rVqjWrV69e99Zbb6177rnnPpgzZ06NTwYAAABJogAGAADIA8OGDWt+xBFHdBwwYECnLl26dGjdunXHFi1adCgtLe1YUlLSvlmzZq0KCgqK07yDwsLCssLCwrKIaPdp/zuNjY21mzdvXrdp06ZVNTU172/YsGHl2rVr31+2bNnKBQsWrHjyySffnzVrVpVPGAAAAE1Fpuexsd9HfaF+ZcSal0ptCAAAIAE6deqUPf744zvtueeeXbp3796lbdu2XSorKzuXlpZ2KS0t7VBYWFhhSztGQ0PDxpqampU1NTXL169fv+yDDz5Y9s477yybPXv2sj/96U8rVqxYUWdLAAAAbE9t9q6Jog4f/TUFMAAAQEJks9nMt7/97Y4jRozo1bdv397t2rXrXl5e3rWsrKxzcXFx+4gosKUmp7G2tnZVTU3Nso0bNy5btWrV0tdff/2tJ598cvG999672noAAADYFgpgAACAhPne977X6a9Fb/v27Xu1bNmyV1lZWa8kvXOXLauvr9/wl7/8ZdG6desWL1u2bNHChQsX/fGPf1w8derUjbYDAADAliiAAQAAmqhsNps59dRTuxx66KH9+/Tp87n27dv3Ly8v719UVOSRzXlq06ZNKzZu3Pj6+++//8abb775xqOPPvrG3XffvcpmAAAA+CsFMAAAQBNx6qmndvniF784qHfv3v3btWv3uYqKis8VFhaW2wxbUl9fv37Dhg1vfPDBB68vXrz4jccee2z+jTfeuNxmAAAA8pMCGAAAYBc45phjWn/rW9/aq3///kPatGnTv6Kiop9HOLO9NDQ0VG/cuPGtNWvWLFy4cOGcO+6445WHHnporc0AAACknwIYAABgJzjjjDO6f+lLX9qrV69eg1u3bj2orKysR0RkbIadJFddXb103bp18xcvXjz30UcffeXqq69+x1oAAADSRwEMAACwnZWWlhb86le/2u3QQw8d1r17931btmw5qLCwsMxmaEoaGhqqP/zww/nvvPPOzGeeeWbW2LFj36ipqWm0GQAAgGRTAAMAAGwHP/7xj7t+9atf3bdXr15D27Ztu1c2m21jKyRJXV3dmg8++OCVRYsWvfznP/95xh/+8IdltgIAAJA8CmAAAIBtcOKJJ7Y75ZRTDujXr9+w1q1bD81ms61shTSpq6tbt3bt2pfffPPNWbfccsvUe++9d7WtAAAANH0KYAAAgE+hoqKi4IILLhg0YsSI/bp27bpfy5YtB2YymUKbIR/kcrmGDz/8cP6777474/nnn59x4YUXvrZx40aPiwYAAGiCFMAAAAAf4/jjj2/7/e9//8D+/fsf2Lp1630KCgpKbAUiGhsbN61fv37eW2+9NeWGG2545u67715lKwAAAE2DAhgAAOB/ZLPZzAUXXPC5I4888sDu3bsfWFFRsVtEFNgMbFl1dfWSd999d8qsWbNmnnvuuS+vW7euwVYAAAB2DQUwAACQ10pLSwsuvfTSQYcccsjBXbt2HVFWVtbDVmDb1dbWrnr//fdfmDp16uRf/vKXL65evbreVgAAAHYeBTAAAJB3Bg0aVHrBBRd8fs899zywQ4cOBxQVFbWwFdj+Ghsba9euXTtrzpw5T59//vmTX3755WpbAQAA2LEUwAAAQF4YNmxY8/POO+/gIUOGHOZ9vrDz/W0ZfNFFFz07a9asKlsBAADY/hTAAABAarVq1arwyiuv3HfEiBEjO3TocFBhYWGZrcCu19DQUP3+++8/O2XKlIk/+clPZm7cuLHRVgAAALYPBTAAAJAqrVq1Kvztb3+7/3777Xd4x44dRxQWFpbbCjRdDQ0NG99///0pM2bMeOqHP/zhC8pgAACAz0YBDAAApMJZZ53V45vf/OaRvXr1GllaWtrVRiB5ampq3l28ePHEO++8c9LVV1/9jo0AAABsPQUwAACQWMOHDy+/6KKLvjB48OCjW7RoMdBGID0+/PDDV+fNmzfhvPPOe3L69Ol/sREAAIBPRwEMAAAkSqtWrQpvuOGGQ/bbb79/atOmzX6ZTCZrK5BeuVyubs2aNTNmzJjx2JgxYyavW7euwVYAAAA+ngIYAABIhB//+Mddv/e9732lZ8+e/1RcXNzWRiD/1NbWfvD2228/dssttzz029/+9l0bAQAA+L8UwAAAQJNVUVFRcO21137+4IMPPrZ169b7ZTKZAlsBIqJxzZo1M59//vnxp5122hR3BQMAAPx/CmAAAKDJOeWUUzqefvrpx/bu3ftL2Wy2jY0AH6e+vn7j0qVLH/vd7373x+uvv36ZjQAAAPlOAQwAADQJ2Ww2c+uttx5wyCGHnNC6deu9I8LdvsDWaFy7du1L06ZN+/OPfvSjZ1evXl1vJQAAQD5SAAMAALtU//79S6655pp/2nPPPY8tLy/vayPAZ1VTU7NswYIF488999wHp06dutFGAACAfKIABgAAdomf//znPU855ZQTu3btemRhYWGZjQDbW2NjY92KFSuevOWWW+689NJLF9kIAACQDxTAAADATuMxz8Cusn79+rlPP/30f5188slT6+rqcjYCAACklQIYAADY4fr27Vv8hz/84a+Pee5nI8CuUlNT8+68efPu/8EPfvDgwoULN9kIAACQNgpgAABghxkyZEjpNddc89XBgwefWFxc3MFGgKaitrZ21dy5c+/5yU9+8uc5c+bU2AgAAJAWWyqAPYoNAADYJqNHj+4wb968n06ZMuXRYcOGnaH8BZqa4uLi9sOGDTtjypQpj86bN++nJ510UntbAQAA0s4dwAAAwFY599xze33/+9//dufOnY/IZDJZGwGSIpfL1S1fvvzJG2644fbLLrvsbRsBAACSyiOgAQCAz+y8887r+53vfOfbHTt2PDyTyRTaCJBUuVyuYcWKFU/cdNNN//XrX/96sY0AAABJowAGAAC22WWXXTboG9/4xg9at249zDaAtFm7du2su++++9pzzjnnNdsAAACSQgEMAABsNcUvkE8UwQAAQJIogAEAgE9N8Qvks7Vr18665557rvv5z38+3zYAAICmaksFcGHlwOj6UV9orIqoWZG1PQAAyBO/+MUvet9xxx3nHHrooT8pLS3tYiNAPiotLe2y7777HvP973+/X1lZ2ZIpU6assxUAAKCpKetcHwXlH/01BTAAAOS5M844o/u99957zpe//OWflZeX94qIjK0AeS5TXl7e8+CDDx71/e9/v3dEvDVjxowPrQUAAGgqFMAAAMD/ceKJJ7a77777fjJq1Kh/KS8v7xOKX4B/lCkvL+99+OGHj/rWt77VfvXq1Qvnz59fbS0AAMCutqUC2DuAAQAgzwwdOrTs+uuvP6l///4nFRYWltkI20NjY2Ns2rQpqquro6amJurr62PTpk2xefPmqK+vj+rq6qivr4/NmzfHpk2boqGhYZv/fxUWFkZJSUk0a9YsioqKoqysLIqKiqJZs2ZRUlISRUVFUVpa+r9/FRQUCIjtoqGhoeq11167a8yYMffMmTOnxkYAAIBdZUvvAFYAAwBAnujUqVP2nnvuGbXXXnudnM1mK22Ej9PQ0BAbN26MDRs2/J+/Nm7cGBs3boyamprYtGlTbNq0KWpqaqK2trbJnqe4uDhKSkqitLT0f/9eUVERFRUV0aJFi//zV0VFRRQWFvog8LHq6urWvvjii7eceOKJf169enW9jQAAADubAhgAAPLcXXfdddAXv/jF00tLS7vZRn7L5XKxYcOGWLt2baxbty7Wrl37d3+tW7cuNmzYkPd7atGiRbRu3TpatWoVrVu3jjZt2vzvf27dunW0aNHCh4morq5e+sgjj1zzne98Z6ptAAAAO5MCGAAA8tTVV189+MQTTzyzoqJioG3kj8bGxli5cmUsX748Pvjgg1i9evX//n3t2rXR2NhoSZ9RYWFhtGrVKtq1axdt27b937937tw5OnTo4LHTeWbDhg3z77333qvOPPPMebYBAADsDApgAADIM1/72tfaXHrppad27979qIjQRKVUQ0NDrFq1KlasWBHvv//+//595cqVTfqRzGlXXFwcHTp0iI4dO0bnzp2jY8eO0alTp2jXrp1HS6dYLpdrfOeddx76+c9/fv2ECRPW2QgAALAjKYABACBP9OrVq9ldd931jT322OM7hYWFZTaSHh9++GG88847sXTp0njvvfdixYoVsXr16mhoaLCchCgsLIz27dtHp06dolu3btG9e/fo3r27x0mnTENDQ9W8efNu++Y3v/nHJUuWbLYRAABgR1AAAwBAHrjrrrtG/NM//dOZJSUlXWwj2davXx9Lly6Nd955539L3w8//NBiUqqysvJ/y+C//tWqVSuLSbiamppljz322G9Gjx49xTYAAIDtTQEMAAAp9qtf/arPD3/4w5+1atVqL9tIno0bN8aSJUvirbfeikWLFsV7770XmzZtspg8V1JSEl27do0+ffpE3759o3fv3lFeXm4xCbRu3bqXr7322ivGjh27yDYAAIDtRQEMAAApNGjQoNI77rjju7vttttJBQUFWRtJhtWrV8ebb74ZixcvjiVLlsTy5cujsbHRYtiigoKC6Ny5c/Tu3Tt69+4d/fr1i7Zt21pMQjQ2Nta98cYbd33rW9+6ff78+TU2AgAAfFYKYAAASJHS0tKCBx988Jj99tvvn7PZbBsbaboaGhri7bffjrfeeisWLFgQS5YscXcv201FRUX06tUr+vbtG3379o2ePXtGYWGhxTRhdXV1a2bMmHHjV77ylYdqamr85gcAALDNFMAAAJASp59+erdf/vKX51ZWVu5jG03T6tWr47XXXouFCxfGm2++GRs3brQUdooWLVpE3759Y8CAATFw4EB3CDdh69evf/E//uM//vPqq69+xzYAAIBtoQAGAICEGzRoUOm99977w969ex+byWTc4teErF+/PubNmxcLFiyIN954Q+FLk9GiRYvo169fDBgwIPbYY4+orKy0lCYkl8s1LF68eNyJJ554rcdCAwAAW0sBDAAACXbNNdcMOemkk35RVlbWyzZ2vVwuF++++27MnTs3XnvttViyZIl3+NLkFRQURK9evWLQoEExePDg6Natm6U0EdXV1UvuvvvuX//kJz+ZYxsAAMCnpQAGAIAEOuqoo1r99re//VmHDh0Ot41da9OmTTF79uyYO3duLFy4MKqqqiyFRGvevHn0798/Bg8eHHvuuWeUlJRYyi62cuXKp04//fTLJ0yYsM42AACAT6IABgCAhBk3btwRRxxxxFnZbLaNbewaVVVVMXfu3Jg7d27Mnz8/amtrLYVUKi4ujoEDB8bgwYNj8ODBUV5ebim7SF1d3ZqnnnrqqlGjRj1hGwAAwJYogAEAICFOOeWUjhdddNEvW7duvZ9t7HwrV66MWbNmxdy5c+Odd96JXC5nKeSdzp07x9577x3Dhg2LDh06WMgusHbt2hnnnXfepbfccsv7tgEAAHwUBTAAADRxpaWlBU899dQ3Bw8e/L2CggLPYt2JVqxYES+99FK89NJLsXz5cguBv/HXMnjvvfeOTp06WchO1NjYuGnu3Lk3H3744XfV1NR40TgAAPB3FMAAANCEjR49usOll176yzZt2gy3jZ1j/fr18eKLL8bMmTNj6dKlFgKfQs+ePWPfffeNYcOGRYsWLSxkJ1mzZs0L55577q/vvvvuVbYBAAD8lQIYAACaoIqKioKJEyd+c/Dgwd8vKCgotpEda8OGDfHiiy/G9OnTlb7wGfXo0SOGDx8ew4YNi4qKCgvZwdwNDAAA/CMFMAAANDGnnHJKx7Fjx/5rZWXlMNvYcerr6+PVV1+NGTNmxLx586Kurs5SYDvKZrMxZMiQ2HfffWP33XePwsJCS9mB1q5dO+MXv/jFv995550rbQMAAPKbAhgAAJqIbDabeeKJJ47fZ599fuSu3x0jl8vFwoULY/r06TF79uzYtGmTpcBOUFpaGkOGDInhw4fHgAEDLGQHaWhoqJ42bdo1Rx555J9tAwAA8pcCGAAAmoDjjz++7ZVXXvmr1q1be9fvDrBmzZqYNm1azJw5M1audHMc7EodO3aMz3/+87H//vt7X/CO+3fetDPPPPOScePGfWAbAACQfxTAAACwi9100037HXvssf9WXFzc1ja2n1wuF6+99lo8//zzMW/evKivr7cUaEKKiopizz33jBEjRsTnPve5yGQylrId1dbWrvrjH/948Q9+8INZtgEAAPlFAQwAALvIkCFDSu+///5zunTp8k+2sf2sXbs2Jk+eHNOnT48PP/zQQiABKisrY8SIEXHIIYdEeXm5hWxHy5Yte+zrX//6f86ZM6fGNgAAID9sqQAurBwYXT/qC41VETUrsrYHAADb6IILLtjt97///VVt2rQZZhvbx+LFi2P8+PFx9913xxtvvBG1tbWWAgmxadOmeOONN+LZZ5+NtWvXRps2bTweejtp0aJFv5NOOumg0tLSuc8+++xaGwEAgPQr61wfBR/zu7XuAAYAgO0sm81mJk2a9PVhw4b9pKCgwG9VfkZ1dXUxY8aMeOaZZ+K9996zEEiRfv36xSGHHBJDhw6NgoICC/mMGhsbN8+YMeOaL37xi+Pq6upyNgIAAOnlEdAAALCTHH/88W2vuuqqCyorK/exjc9mzZo18dRTT8XUqVNj06ZNFgIpVlFREZ///OfjsMMOi8rKSgv5jNavXz/r9NNPv3DcuHEf2AYAAKSTAhgAAHaC22677fNf+9rXzstms5W2se0WLVoUjz/+eMybNy9yOTewQT4pKiqKIUOGxBFHHBG9e/e2kM+grq5u3QMPPHDRySefPM02AAAgfRTAAACwA1VUVBQ8/fTTpwwcOPCUTCbjGabbIJfLxauvvhpPPvlkLFy40EIgz2UymRgwYEAcccQRMWjQIAvZ9n+3Ns6fP/+Www8//JaNGzc22ggAAKTHlgrgwsqB0fWjvtBYFVGzwuvKAABgS0488cR2EyZMuLx79+5fzmQyGRvZOo2NjTFr1qy49dZb48knn4wPPvC0UuC/rV69OmbMmBFz5syJ0tLS6NSpU/jX7NbJZDKZ9u3bD/3+978/dPny5TNfffXValsBAIB0KOtcHwXlH/O9gDuAAQBg29x66637H3vssRcWFRW1sI2tU1NTE0899VQ8++yzsWHDBgsBPlGLFi3i4IMPjsMPPzxKS/28YmvV19d/OG7cuPNPPvnk6bYBAADJ5xHQAACwHWWz2cyzzz77rSFDhvzAI5+3zqZNm2Ly5Mnx1FNPKX6BbdKiRYs47LDD4pBDDlEEb6VcLtfwyiuvXHfooYfeWVdX5yXrAACQYApgAADYTo455pjW11133cWVlZV728ant2HDhnj88cdjypQpUVtbayHAZ1ZcXBwHHnhgfPGLX4wWLTyIYWusWbNm2re//e3zn3nmGb+JAwAACeUdwAAAsB1cfvnlu1900UW/LS8v72cbn05VVVVMmDAhbrnllnjzzTejoaHBUoDtoqGhIZYsWRLPPfdc1NTURI8ePSKb9XOMT6OsrKzb17/+9SPbtm0774knnlhtIwAAkMDreu8ABgCAz+bhhx/+8qGHHnpOQUFBsW18sk2bNsUzzzwTTzzxRFRVVVkIsMOVl5fHkUceGYccckgUF/tX9afR2Ni46emnn/71Mccc87htAABAsngENAAAbKN27doVTZ48+YxevXodZxufrK6uLp5++umYOHGi4hfYJSoqKuKLX/xiHHzwwe4I/pQWLVr0x4MOOuiadevWeUwDAAAkhEdAAwDANjj22GPbPvzww7/p2LHjobaxZXV1dfHkk0/GddddF3Pnzo26ujpLAXaJzZs3x2uvvRbPPfdcRET06NEjCgsLLWYLWrduvfv3vve9fd9+++1pCxYsqLYRAABo+rb0CGgFMAAAfITLL7989wsuuOB3zZs372UbH6+xsTGmTJkS119/fbzyyiuKX6DJ2Lx5cyxYsCCmT58excXF0a1bt8hkMhbzMUpKSjp8+ctfPrJt27ZzvBcYAACaPu8ABgCArTB+/Pgjv/CFL/xLQUFBiW18vAULFsT48eNj6dKllgE0eT169IivfOUrMWjQIMvYgsbGxpqJEydecuyxxz5pGwAA0HR5BzAAAHwK7dq1K3ruued+1qNHj6/axsdbtGhR3H///bF48WLLABKnV69ecdxxx0WfPn0sYwuWLl3654MOOujy1atX19sGAAA0Pd4BDAAAn2DYsGHNn3766V936tTpC7bx0TZs2BD33Xdf/PGPf4y1a9daCJBI69evj2nTpsW6deuiZ8+eUVLiYQ8fpbKysv+3v/3t/lOmTJmyfPlyz/cHAIAmxjuAAQBgC372s5/1uP76669t0aKF54J+hJqamhg/fnzcfPPN8fbbb0cul7MUINFyuVy888478cwzz0RVVVX07t07slk/A/lHZWVl3U488cTD6+rqZkyfPv1DGwEAgCZ0va4ABgCAj3bFFVfscdZZZ11dXFzcwTb+Xi6XixkzZsR1110XCxYsiMbGRksBUqWxsTGWLFkSM2bMiPLy8ujSpUtkMhmL+RvZbLbFQQcddHibNm1mP/HEE6ttBAAAmoYtFcDeAQwAQN6aNGnSqAMOOODsTCZTaBt/b9GiRXHPPffEu+++axlA3ujWrVucdNJJ0bt3b8v4B7lcrm7y5Mm//vKXv/yIbQAAwK63pXcAK4ABAMg7paWlBTNnzjyzT58+x9vG39uwYUOMGzcuZsyY4VHPQF7KZDKx3377xde//vWoqKiwkH+waNGiP+27775X1dTUeCwEAADsQgpgAAD4H926dctOnjz5V506dRppG/9fLpeLqVOnxp///OfYuHGjhQB5r6KiIkaNGhX777+/x0L/g+XLlz9+6KGHXvLuu+/W2QYAAOwaWyqAvQMYAIC8MXz48PInnnjiynbt2o2wjf/vnXfeiWuvvTaee+652Lx5s4UARMTmzZtjzpw58dprr0XPnj2jRYsWlvI/Kioq+n7rW98aMnXq1Ofee+89f3AAAMAusKV3ACuAAQDIC9/+9rc73n777X9o0aLFANv4b1VVVXHXXXfFvffeG+vXr7cQgI+wbt26eP7552P9+vWx2267RVFRkaVERElJSefjjjvuoA8++GDKK6+88hcbAQCAnUsBDABAXjv//PP7XXzxxX8oKSnpbBv/bfr06XHttdfGokWLLAPgU3jnnXdi2rRp0bp16+jc2R8nERHZbLbyC1/4whElJSUvTp48eY2NAADAzqMABgAgb/3ud7/b60c/+tFVRUVFrWwjYs2aNXHzzTfHpEmTora21kIAtkJtbW289NJL8c4770Tfvn2jtLQ073dSWFhYNnz48C/26dNn4UMPPbTMpwQAAHYOBTAAAHnp1ltv3f+b3/zmfxYWFjbP913kcrl4/vnn4/rrr4/ly5f7cAB8BitXroxp06ZFRUVFdOvWLTKZTF7vo6CgIDto0KBDBw0atOiBBx54xycEAAB2vC0VwJmex8Z+H/WF+pURa17ym6wAACTTww8//KXDDjvsXzKZTN6/rPGDDz6I22+/Pd544w0fDIDtbMCAAfGtb30r2rRpk/e7yOVyjVOmTPn1yJEjH/LJAACAHavN3jVR1OGjv6YABgAgdV555ZXTPve5z30r3/fQ0NAQjz32WDz++ONRV1fngwGwg2Sz2Tj66KPjC1/4QhQUFOT9Pl5//fU79tprr9/7ZAAAwI6jAAYAIC9ks9nMyy+/fFafPn2Oz/ddvPvuu3HbbbfFe++954MBsJN069YtvvOd70S3bt3yfhdLliy5f5999rmypqam0ScDAAC2PwUwAACpV1paWjBr1qyzevfufVw+7yGXy8WTTz4ZDz74oLt+AXaBbDYbxxxzTBxxxBF5fzfw0qVLHxg6dOjlSmAAANj+FMAAAKRar169mk2ePHlsu3btDsrnPaxcuTJuueWWePvtt30oAHaxnj17ximnnBIdOnTI6z2sXr16yiGHHPIvS5Ys2exTAQAA28+WCuDCyoHR9aO+0FgVUbMia3sAADRpQ4cOLXvqqacub9Omzf75uoNcLhfPPPNMXH/99bF27VofCoAmYP369TFlypQoKSmJnj17RiaTycs9NG/evPtJJ500ZPLkyc+sWLHCoykAAGA7KetcHwXlH/01BTAAAIk1ZMiQ0kceeeSKVq1a7Z2vO6iuro7bb789nnjiiWhs9IRNgKaksbEx5s+fH++//34MGDAgstn8/DlLaWlpp6997WuDn3rqqadXrlxZ75MBAACfnQIYAIDUOfTQQ1s8+OCDv2/ZsuUe+bqDOXPmxNVXX+2RzwBN3PLly+OFF16Ijh075u0joUtLSzudcMIJ+7/00ktPv/3227U+FQAA8NkogAEASJVhw4Y1v++++37TsmXLQfl4/vr6+hg/fnz88Y9/jNpaP0MHSILNmzfHiy++GJs3b47ddtstCgoK8m4HxcXFbY866qg9n3vuuaeXL1/ucdAAAPAZKIABAEiNI488snLcuHG/b9GixcB8PP97770XV111VcyZM8eHASCBFi1aFC+//HL069cvWrRokXfnLykp6XDcccftP2fOnGcWLVq0yScCAAC2jQIYAIBUOPLIIyvvvPPO35aXl++Wj+d/+umn48Ybb4wPP/zQhwEgwf7yl7/ECy+8ECUlJdGrV6+8O3+zZs3aHHXUUfspgQEAYNspgAEASLxjjz227W233faH5s2b98m3s1dVVcXNN98cTz31VDQ2NvowAKRAY2NjzJ8/P5YtWxYDBgyIZs2a5dX5mzVr1uaYY4458M0333xm4cKFNT4RAACwdRTAAAAk2qGHHtritttuuzofy9+33347rrnmmli8eLEPAkAKvf/++/HKK69Enz59orKyMq/Ons1mK4888sh9Zs6c+dTSpUs3+zQAAMCnpwAGACCxjjjiiJb33nvvteXl5f3y6dy5XC4mTZoUN998c1RVVfkgAKRYVVVVTJ06NbLZbPTp0ycymUzenL24uLjtV7/61c+/8sorTy1evLjWpwEAAD4dBTAAAIl06KGHtrj33nt/l2/lb3V1ddx0000xefLkyOVyPggAeSCXy8WCBQvi3Xffjd133z2y2fz5mUyzZs1aH3300fvNmDHjSXcCAwDAp6MABgAgcYYOHVo2fvz4qysqKgbk07mXLVsWV111lUc+A+SplStXxiuvvBKf+9znoqKiIm/O3axZszZHH3300GeeeebJFStW1PkkAADAlimAAQBIlCFDhpQ++uij17Rs2XL3fDr31KlT49prr42NGzf6EADksaqqqpg+fXq0bds2unTpkjfnLikpaT9q1KihTz755JMrV66s90kAAICPt6UCuMB6AABoSjp16pSdMGHCv1dWVu6RL2dubGyMcePGxR133BF1dW56AiCitrY2br755hg/fnw0NjbmzbkrKyv3mDBhwr9369bNXQkAALCNFMAAADQZrVq1Kpw+ffolbdq02T9fzlxdXR2/+93vYtKkSd73C8DfyeVy8fjjj8fvf//7qK6uzptzt2nTZv8pU6Zc0qpVq0KfAgAA2HoKYAAAmoSKioqC2bNnX9KuXbuD8uXMS5cujYsuuijmz5/vAwDAx3r11VfjoosuiqVLl+bNmdu1a3fQ7Nmz/72iosLPrgAAYCu5iAYAoEmYOXPmz9q1a3dIvpz35ZdfjiuuuCLWrVsnfAA+0bp16+KKK66Il19+OW/O3K5du4Nnzpz5M+kDAMDWUQADALDLvfjii2N69OgxKh/Omsvl4oEHHogbbrghamtrhQ/Ap1ZbWxs33HBDPPDAA3nz2oAePXqMevHFF8dIHwAAPj0FMAAAu9SkSZO+NnDgwFPy4ax1dXVx8803x8SJE73vF4BtksvlYuLEiXHLLbdEXV1dXpx54MCBJ0+aNOlr0gcAgE9HAQwAwC7z6KOPHnXggQeekw9nXbduXfz617+OWbNmCR6Az2zmzJnx61//Ol9eJZA58MADz3n00UePkjwAAHyywsqB0fWjvtBYFVGzImtDAADsEDfeeOO+Rx999EWZTKYw7Wddvnx5XHXVVbFy5UrBA7DdbNiwIWbPnh0DBw6MioqKtB8307179/179uz56sMPP7xc+gAA5LuyzvVRUP7RX1MAAwCw011xxRV7fPe7372qoKCgWdrPOmfOnPjtb38bGzduFDwA2111dXVMmzYtOnfuHB07dkz1WTOZTOHuu+9+eJs2bV6aNGnSKukDAJDPFMAAADQZZ5xxRvef/exnvy0sLCxP+1knTJgQd999d9TX1wsegB2moaEhXnrppchms9G3b99UnzWTyRTttddeB/3lL395dubMmRukDwBAvlIAAwDQJBx00EEVf/jDH64pLi7ulOZz5nK5eOCBB+Kxxx4TOgA77c+eBQsWRF1dXfTv3z8ymUxqz1pQUFBywAEHDJs+ffqkpUuXbpY+AAD5aEsFcIH1AACwMwwaNKj0vvvuu7qsrKxXms9ZV1cX1113XUyaNEnoAOx0EydOjOuvvz7q6upSfc6ysrJef/rTn67u379/idQBAODvKYABANjhKioqCh577LGLKyoqBqb5nNXV1XHNNdfE7NmzhQ7ALvPKK6/ElVdeGVVVVak+Z4sWLQZOnDhxbEVFhZ9vAQDA33CBDADADjdz5syftW3b9sA0n3HdunVx2WWXxRtvvCFwAHa5xYsXx2WXXRZr165N9TnbtWt34MyZM38mcQAA+P8UwAAA7FBPPvnkqB49eoxK8xlXrVoVV1xxRSxfvlzgADQZK1asiCuuuCJWrlyZ6nP26NFj1KRJk0ZJHAAA/lth5cDo+lFfaKyKqFmRtSEAALbZjTfeuO+XvvSlCzOZTGp/8fDdd9+NK6+8MtatWydwAJqc6urqmDVrVvTv3z8qKytTe85u3boN79mz57yHH37Yb2MBAJAXyjrXR0H5R39NAQwAwA5x3nnn9T311FOvLigoKE7rGV977bW45pprorq6WuAANFmbN2+OGTNmRI8ePaJ9+/apPGMmkykYNGjQIYWFhVOee+45v5UFAEDqKYABANipjjrqqFb/8R//8YdmzZq1SusZX3755bj++uujrq5O4AA0eQ0NDfHSSy9Fp06dolOnTqk8Y0FBQXbYsGGfnz9//qQ33nhjk9QBAEizLRXA3gEMAMB21a1bt+wNN9zwnyUlJR3TesYpU6bEjTfeGPX19QIHIDHq6+vjxhtvjKlTp6b2jCUlJZ1uuOGG/+jWrZu7GgAAyFsKYAAAtqunn376XyorK/dI6/kmTZoUd955ZzQ2NgobgMRpbGyMO+64I5588snUnrGysnLw008//UtpAwCQrxTAAABsN88///w3unTp8k9pPd/EiRNj3LhxkcvlhA1AYuVyubj//vtTXQJ36dLlS88+++yJ0gYAIB95BzAAANvFTTfdNPzII488L5PJZNJ4vsceeyzGjx8vaABS47XXXotmzZpF3759U3m+zp0779urV695Dz/88DJpAwCQNlt6B7ACGACAz+wXv/hF7x/+8IdXFxQUNEvj+R544IF45JFHBA1A6ixYsCDq6upiwIABqTtbJpPJDBo06ODGxsbnpk6dul7aAACkiQIYAIAd5oADDqj43e9+99tmzZq1TeP5xo0bF5MmTRI0AKm1aNGi2Lx5cwwcODB1ZysoKMjut99+w5577rnH33vvvc3SBgAgLbZUAHsHMAAA2yybzWbuvPPOfyktLe2exvNNmDBB+QtAXpg0aVI89NBDqTxbaWlpj3vuuedfstlsRtIAAOQDBTAAANvs+eef/06HDh0OTePZHn744Xj44YeFDEDeeOSRR+LPf/5zKs/WoUOHw5599tlvSxkAgHygAAYAYJvcd999hw8ePPjUNJ7t/vvvjwkTJggZgLzz2GOPxX333ZfKs+25554/+NOf/nSYlAEASDvvAAYAYKudccYZ3ceMGXN5QUFBcdrONnHixHjkkUeEDEDeWrx4cWSz2ejbt2/ajpbp06fPvn/5y18mz5w5c4OkAQBIsi29A1gBDADAVhk2bFjzG2+88Q/NmjVrl7azPfroo6l99CUAbI2FCxdGUVFR9OvXL1XnKigoKD7wwAP3e/LJJx9dsWJFnaQBAEiqLRXAHgENAMBWuffee39ZWlraPW3nevzxx+PBBx8UMAD8jz//+c8xceLE1J2rtLS0x3333fdLCQMAkFYKYAAAPrVJkyaN6tSp0xEpPFeMHz9ewADwD8aPHx+TJ09O3bk6der0hUmTJn1VwgAApJFHQAMA8Kmcd955fU888cR/z2QyRWk618yZM+Puu+8WMAB8jNdeey06duwYnTt3TtW5unbtuk9BQcHzzz333DopAwCQNN4BDADAZ3LEEUe0vOKKK67NZrOVaTrXyy+/HDfffHPkcjkhA8DHyOVyMXv27OjSpUt06tQpNefKZDJF++yzz/CpU6c+9u67726WNAAASeIdwAAAbLNsNpu55ZZb/q2kpKRjms61YMGCuPnmm6OxsVHIAPAJGhsb4+abb44333wzVecqLS3tcvfdd5+fzWYzUgYAIC0UwAAAbNGkSZO+3rZt2wPTdKZly5bFDTfcEPX19QIGgE+prq4urr322li+fHmqztWuXbsDH3/88VESBgAgLTwCGgCAj3XZZZcN+upXvzo2k8mk5hcH33///bjyyiujqqpKwACwlerq6uLll1+OIUOGRHl5eWrO1aVLl31LS0unPvPMM2ukDABAEngENAAAW61///4lJ5988q8ymUxRWs60YcOG+P3vfx8bN24UMABso40bN8bvfve7VP15WlBQkP3hD394ft++fYslDABA4q9vrQAAgI/y4IMPnl1WVtYrLeeprq6O3/zmN7Fq1SrhAsBntGrVqrjyyiujuro6NWcqKyvr8/DDD58lXQAAkk4BDADA/zF+/Pgju3XrdnRazlNfX5/KdxYCwK60fPnyuO6666K+vj41Z+rRo8dXx40bd4R0AQBIMgUwAAB/53vf+16nI4444py0nCeXy8Vtt90Wb7zxhnABYDt7/fXX47bbbotcLpeaMx155JHnfvvb3+4oXQAAkkoBDADA/6qoqCi4+OKLLywsLCxPy5nGjx8fs2bNEi4A7CCzZs2Khx56KDXnKSwsrPj1r399QUVFhZ+bAQCQSC5kAQD4XxMnThxdWVk5OC3nef7552PixImCBYAd7LHHHosXXnghNeeprKzc89FHHz1RsgAAJFFh5cDo+lFfaKyKqFmRtSEAgDxxwQUX7DZq1KgLM5lMYRrO8+qrr8Ytt9ySqkdSAkBT/7O3d+/e0a5du1Scp2PHjkNzudxzU6ZMWSddAACamrLO9VHwMc/wcwcwAADRt2/f4h//+McXZzKZVPwG4HvvvRc33HBDNDY2ChcAdpKGhoa47rrrYtmyZak4T0FBQfbss88e27dv32LpAgCQqGtZKwAAYPz48T8qKyvrkYazbNiwIX7/+99HbW2tYAFgJ9u0aVP8/ve/j40bN6biPGVlZb3GjRs3RrIAACSJAhgAIM/ddNNNw/v06XN8Gs5SX18f1157baxdu1awALCLrFmzJq699tqor69PxXn69ev3jd///vdDJQsAQFIogAEA8thBBx1Uceyxx/5rRGTScJ477rgjFi9eLFgA2MUWLVoUd955Z1qOU/CNb3zj34YNG9ZcsgAAJOIC1goAAPLXzTfffFZxcXG7NJxl4sSJMX36dKECQBMxbdq0mDRpUirOUlJS0unOO+88Q6oAACSBAhgAIE/913/914FdunT5UhrO8tprr8Wf//xnoQJAEzN+/PhYsGBBKs7SrVu3o2+66abhUgUAoKlTAAMA5KEvfelLlV/5yld+lYazrFixIq6//vpobGwULAA0MY2NjXHdddfFihUr0nCczHHHHfergw46qEKyAAA0ZQpgAIA8dPXVV5+ezWYrk36OmpqauPbaa2PTpk1CBYAmatOmTXHttddGTU1N4s+SzWbb3njjjT+RKgAATZkCGAAgz9x6663Du3Tp8uWknyOXy8Utt9wSK1euFCoANHErV66MW2+9NXK5XOLP4lHQAAA0dQpgAIA8MnTo0LKvfvWrv0jDWSZMmBBz584VKgAkxJw5c+Kxxx5LxVlGjRr1i6FDh5ZJFQCApkgBDACQR+64444fFRcXd0z6OV5++eV45JFHBAoACfPQQw+l4he4SkpKOt5xxx0/lCgAAE2RAhgAIE9cfvnlu/fs2XNU0s/xwQcfxB133JGKR0gCQL7J5XJx2223xZo1axJ/lp49ex57+eWX7y5VAACaGgUwAEAe6NatW/a73/3uv2YymURf/9XX18cNN9wQ1dXVQgWAhKqqqoobb7wx6uvrE32OTCZT8N3vfvdX3bp1y0oVAICmRAEMAJAHxo8ff0pZWVmvpJ/jnnvuiaVLlwoUABJuyZIlcd999yX+HGVlZT3Hjx9/ikQBAGhKFMAAACn385//vOeAAQNGJ/0c06dPjylTpggUAFJi8uTJMWPGjMSfY8CAAaN//vOf95QoAABNhQIYACDFstls5qyzzjo3k8kk+tGEK1asiLvvvlugAJAyd911V6xYsSLRZ8hkMtmzzjrr3Gw2m5EoAABNgQIYACDFxo0b98XKysq9knyG2trauOGGG6K2tlagAJAyf/1zfvPmzYk+R2Vl5V7jxo0bKVEAAJoCBTAAQEoNHz68/OCDDz4t6ee4//77Y/ny5QIFgJRavnx5jBs3LvHnGDFixI+HDRvWXKIAAOxqCmAAgJS69dZbT8tms22TfIYZM2bEc889J0wASLnJkyfHzJkzE32G4uLitrfffvtp0gQAYFdTAAMApNBVV121R48ePb6S5DOsXLky7rrrLmECQJ64++6744MPPkj0GXr27PnVK664Yg9pAgCwKymAAQBSprS0tOAb3/jGT5N8rdfY2Bi333679/4CQB6pqamJ2267LRobG5N8jIJvfvObZ5aWlvqZGwAAu+6i1AoAANJlwoQJX6uoqBiQ5DOMHz8+Fi1aJEwAyDNvvvlmPPjgg4k+Q4sWLQY9+OCDx0gTAIBdRQEMAJAiRx55ZOWwYcN+kOQzzJ07N5544glhAkCemjhxYixYsCDRZxg+fPiPjjjiiJbSBABgV1AAAwCkyBVXXHFyUVFRRVLnr6qqijvvvDNyuZwwASBP5XK5uP3226O6ujqxZygqKmrxm9/85mRpAgCwKyiAAQBS4vzzz+/Xu3fv45J8httvvz0+/PBDYQJAnlu3bl3cfvvtiT5D7969jz///PP7SRMAgJ1NAQwAkALZbDZz6qmn/jyTyST2+m769OkxZ84cYQIAERExe/bsmDFjRmLnz2QyBaeeeurPs9lsRpoAAOxMCmAAgBT44x//eERlZeXgpM6/du3auPfeewUJAPyde+65J9atW5fY+SsrKwf/6U9/+oIkAQDYmRTAAAAJ17dv3+JDDjnkR0k+w9133x01NTXCBAD+Tk1NTdx9992JPsPBBx/8o759+xZLEwCAnUUBDACQcHfdddc3S0pKOiV1/smTJ8e8efMECQB8pLlz58azzz6b2PlLSko63nPPPd+SJAAAO4sCGAAgwb70pS9VDhw48KSkzr9mzZoYP368IAGALXrggQdizZo1iZ2/f//+Jx111FGtJAkAwM6gAAYASLArrrji1MLCwvIkzp7L5eK2226LTZs2CRIA2KJNmzbFbbfdFrlcLpHzFxYWll1++eU/kCQAADuDAhgAIKF+8Ytf9O7evftXkjr/s88+G2+88YYgAYBP5Y033ojnn38+sfN369bt6F/96ld9JAkAwI6mAAYASKgf/vCHP8pkMom8nvvggw/igQceECIAsFXGjRsX69atS+TsmUym4NRTT/2xFAEA2NEUwAAACXTdddcNa9eu3YFJnD2Xy8Udd9wRtbW1ggQAtsqmTZvizjvvTOz8bdq02f+mm27aT5IAAOxICmAAgIQpLS0t+NrXvnZ6Uud/4YUXYuHChYIEALbJq6++GjNmzEjs/Mccc8zpFRUVfiYHAMAO42ITACBhbr/99oMrKip2S+LsGzZsiHHjxgkRAPhM7r///qiqqkrk7OXl5X3/67/+6wgpAgCwoyiAAQASpKKiouCwww47Nanz33vvvYn9YS0A0HRs2LAh7r///sTOf9BBB/1zq1atCiUJAMCOoAAGAEiQ+++//+iysrKeSZx9zpw58dJLLwkRANguXnjhhViwYEEiZy8tLe32xz/+8StSBABgR1AAAwAkRN++fYv33Xfff07i7LW1tXHvvfcKEQDYru6+++6oq6tL5Oz77bffKf379y+RIgAA25sCGAAgIW6++eZRxcXFbZM4+yOPPBJr164VIgCwXa1atSoee+yxRM6ezWbb3njjjV+TIgAA25sCGAAgAYYOHVq21157fSeJs7/33nvxxBNPCBEA2CEmTpwYK1asSOTsQ4YM+c7QoUPLpAgAwPakAAYASIBrr732xKKiosqkzZ3L5eKee+6JxsZGIQIAO0R9fX3cddddkcvlEjd7UVFR5bXXXnuCFAEA2J4UwAAATdwBBxxQMWDAgG8kcfYZM2bEW2+9JUQAYId6880348UXX0zk7AMGDPjG8OHDy6UIAMD2ogAGAGjirrrqqhOKiooqkjb3pk2b4oEHHhAgALBT3H///VFbW5u4uYuKilpcffXV7gIGAGC7UQADADRhBx10UEX//v0Teffvww8/HB9++KEQAYCdYv369TFhwoREzj5w4MBvHHDAARVSBABge1AAAwA0Yf/5n/95bGFhYfOkzb1q1aqYPHmyAAGAnerpp5+O1atXJ27uwsLC8ssuu2yUBAEA2B4UwAAATdQBBxxQMWjQoNFJnP3uu++O+vp6IQIAO1V9fX3cddddiZx99913/+bQoUPLpAgAwGelAAYAaKIuv/zyYwsLC8uTNvfcuXNjwYIFAgQAdokFCxbE3LlzEzd3UVFRi9/97ndflyAAAJ+VAhgAoAkaOnRo2aBBgxL37t+6urr405/+JEAAYJf605/+FHV1dYmbe/fdd//mkCFDSiUIAMBnoQAGAGiCfvOb33ylqKioZdLmfu655xL53j0AIF1Wr14dzz33XOLmLioqann11VcfLUEAAD4LBTAAQBPTq1evZoMHD/5m0uaurq6ORx55RIAAQJPwyCOPRHV1deLmHjJkyLe6deuWlSAAANtKAQwA0MTcdNNNxxQXF7dN2twTJkyIqqoqAQIATUJVVVUifzmtuLi43a233uouYAAAtpkCGACgCWnVqlXhXnvtdVLS5l61alU8++yzAgQAmpTJkyfHqlWrEjf30KFDR7dq1apQggAAbAsFMABAE3LLLbccXlJS0jlpcz/44INRX18vQACgSamvr48HH3wwcXOXlJR0vummmw6VIAAA20IBDADQRGSz2cwBBxzw7aTNvWjRonjppZcECAA0SS+99FIsXrw4cXOPGDHiO9lsNiNBAAC2lgIYAKCJuOaaa/YuLy/vm7S5H3roocjlcgIEAJqkXC6XyLuAy8vL+1111VV7SRAAgK2lAAYAaCK+8pWvfDdpM8+bNy8WLlwoPACgSVu4cGG8+uqrrg8BAMgLCmAAgCbgsssuG1RZWblPkmbO5XIxfvx44QEAifDAAw8k7qklrVu33veSSy7pLz0AALaGAhgAoAkYNWrUCUmbefbs2bFs2TLhAQCJsGzZsnjllVcSN/cJJ5xwovQAANgaCmAAgF3sn//5nzt37NjxiCTN3NjYGA888IDwAIBEGT9+fDQ0NCRq5k6dOn1h9OjRHaQHAMCnpQAGANjFfvSjH30tk8kk6rps2rRpsWrVKuEBAImyatWqeOGFFxI1cyaTKfzpT386SnoAAHxaCmAAgF1o0KBBpX369Plqkmaur6+PCRMmCA8ASKQJEyZEXV1dombu27fvV/r27VssPQAAPg0FMADALnTZZZcdXlRUVJGkmadOnRpr164VHgCQSOvXr48pU6YkauaioqLK3/zmN0dIDwCAT0MBDACwi2Sz2cy+++57UpJmrqurc/cvAJB4jz76aOLuAt5///1PymazGekBAPBJFMAAALvI1VdfPbSsrKx3kmaeMmVKbNiwQXgAQKJt2LAhnn/++UTNXFZW1ueqq67aS3oAAHwSBTAAwC7y5S9/+bgkzVtfXx8TJ04UHACQCo8//nji7gL+0pe+dLzkAAD4JApgAIBdYPTo0R3atm07IkkzT5s2LdatWyc8ACAVPvzww5g+fXqiZm7fvv2I0aNHd5AeAABbogAGANgFfvrTn47KZDKFSZm3vr4+HnnkEcEBAKnyyCOPRH19fWLmzWQyhT/96U+/JjkAALZEAQwAsJN16tQp26dPn6OTNLO7fwGANFq3bl1MmzYtUTP36dPnmE6dOmWlBwDAx1EAAwDsZFddddUB2Wy2dVLmbWxsjEmTJgmOVOvYsWN06OCJmgD5aNKkSdHY2JiYebPZbOurrrrqAMkBAPBxFMAAADvZiBEjvp6keV988cVYtWqV4Ei1Ll26xIUXXhinnXZadO3a1UIA8siqVavipZdecj0JAEBqKIABAHaiM844o3tlZeXeSZk3l8vFxIkTBUdeyGQyMXjw4PjVr34VY8aMcUcwQB55/PHHI5fLJWbeysrKvc8444zukgMA4KMogAEAdqJTTjnlqxGRScq8CxYsiPfee09w5JVMJhN77713XHjhhTFmzJho3769pQCk3HvvvRcLFy5M1B9X/3NdCQAA/4cCGABgJ+nVq1ezXr16fTlJM3v3L/nsr0XwBRdcECeffHK0bdvWUgBSLGnXPb169fpyr169mkkOAIB/pAAGANhJrrjiioOLiopaJmXeBN4JAztEYWFhDB8+PC688MIYPXp0VFZWWgpACi1YsCCWLVuWmHmLiopaXnnllYdIDgCAf6QABgDYSYYPH/6VJM2btHfhwY5WVFQUI0aMiEsuuSRGjx4dLVu2tBSAFMnlcvH4448naub99tvvK5IDAOAfKYABAHaC0aNHd6isrByalHnXrl0bL7/8suDgI/y1CL744ovjhBNOiBYtWlgKQEq89NJLsW7dusTMW1lZudfo0aM7SA4AgL+lAAYA2AlOP/30o5J07fXMM89EQ0OD4GALiouL47DDDouxY8fGqFGjoqyszFIAEq6hoSGeeeaZJI1c8D/XmQAA8P8vEq0AAGDHymazmX79+n05KfPW1tbGlClTBAefUnFxcYwcOTIuvfTSGDVqVJSWlloKQII9//zzUVtbm5h5+/Xr9+VsNpuRHAAAf6UABgDYwX7zm9/sWVJS0jkp886YMSOqq6sFB1uppKQkRo4cGZdcckkcffTRUVJSYikACVRdXR0zZ85M0p8/na+44orBkgMA4K8UwAAAO9gXvvCFLyVl1lwuF08//bTQ4DNo3rx5HHXUUXHJJZfEyJEjI5vNWgpAwjz11FORy+USM++RRx75ZakBAPBXCmAAgB1oyJAhpZ07dz4iKfO+/vrrsWLFCsHBdlBeXh6jRo2KSy+9VBEMkDArVqyI119/PTHzdunS5fD+/ft79AQAABGhAAYA2KHGjh17aGFhYWJeCOruX9j+KioqYtSoUXHxxRfH4YcfHkVFRZYC4LpouyosLGz+H//xHwdLDQCACAUwAMAOteeeex6ZlFnXrl0b8+bNExrsIK1atYrjjz8+LrroohgxYkQUFPh2DKApmzdvXqxZsyYx8+61115HSg0AgAgFMADADnPMMce0bt269b5Jmfe5556LxsZGwcEO1qZNmxg9enRcfPHFimCAJqyxsTGee+65JP35MvyYY45pLTkAAPykAQBgBznzzDMPz2Qyibje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FpafffbZvaQFAJA+CmAAgE9p//3375+EOV9//XVhAXmjvLw8Ro0aFf/+7/8eI0eOjGw2aymA67FP6fOf//xAaQEApI8CGADgU+rRo8fuTX3G2traePvtt4UF5J2KiooYNWpUXHzxxXH44Yc3+XdvAum2ePHiRLySo1evXoOkBQCQPgpgAIBPqXXr1k3+DoklS5ZEQ0ODsIC81apVqzj++OPj4osvjhEjRkRBgW97gZ2voaEhlixZ0uTnbNOmjQIYACCFfCcMAPApDBkypLR58+a9m/qcb775prAAIqJ169YxevToGDt2rCIYcF32MZo3b95n0KBBpdICAEgX3wEDAHwKp556av9MJtPkr53eeustYQH8jTZt2sTo0aPjvPPOi+HDhyuCAddlfyOTyRT84Ac/+Jy0AADSxXe+AACfwuDBg5v84/Hq6+tj0aJFwgL4CJ06dYqTTz45/u3f/i323nvvyGQylgLsUIsXL07Eqzn23HPPgdICAEgXBTAAwKfQpUuXAU19xnfeeSfq6uqEBbAFnTt3jjFjxiiCgR2utrY23n333SRc53oPMABAyiiAAQA+hZYtW/Zv6jN6/DPAp9elS5cYM2ZMnHvuuTF48GALAfL2+iwJ17kAAGwdBTAAwCcYPnx4eUlJSeemPqfHPwNsvV69esVpp50W55xzTvTvrwMB8u/6rLS0tPPw4cPLpQUAkB4KYACAT/Ctb31rt4ho8s8IXbx4sbAAtlGfPn3irLPOinPOOSd22203CwG2i4T8gl7m29/+dj9pAQCkhwIYAOAT7L777k2+CVi7dm1s2LBBWACfUZ8+feLss8+OM888M3r27GkhwGfy4Ycfxrp165r8nAMHDlQAAwCkSJEVAABsWadOnZr8D8TefvttQQFsRwMGDIgBAwbEggULYvz48bF06VJLAbb5Oq1Vq1audwEA2GkUwAAAn6CyslIBDJCnBgwYEP3794958+bFQw89FO+++66lAFtlyZIlsddeezX1613PvgcASBEFMADAFnTq1CnbvHnzXk19ziVLlggLYAfJZDIxePDg2GOPPeLll1+OBx98MFauXGkxQGqu05o3b967Xbt2RatXr66XGABA8nkHMADAFowZM6ZnJpPJNuUZGxsbPZoUYCfIZDKx9957x4UXXhhjxoyJ9u3bWwrwiZYuXRqNjY1NesaCgoLsqaee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k8nE7NmzY+LEibFmzRoNAXif/VNSzJo161kTAwBongTAAAC70O233/7KOeecszU/P78022sdMGBAtG/f3tWu0My9+uqrMWnSpFi1apVmALyPjh07xgEHHJCIWhsbG6u/8Y1v/NXUAACaJwEwAMAutHLlyob169fP6tat2+hsrzWVSsXhhx8ekyZNMjhohubMmROTJ0+OJUuWaAbAh3D44YdHKpVKRK3r16+fVVFR0WhqAADNU54WAADsWq+++mpirts77LDDDAyamTfffDP+/d//PX7yk58IfwE+pFQqFSNGjEhMva+88sozpgYA0Hw5AQwAsIvddNNNz5166qnV+fn5rbO91m7dukX//v1j4cKFBgc5btmyZfHYY4/F/PnzNQPgIzrggAOic+fOiai1sbFxy4033jjL1AAAmi8BMADALrZy5cqG8vLyGT179vx0Euo9+uijBcCQw5YvXx7jxo0T/AJ8wv1SUpSXlz9TXl7eYGoAAM2XABgAYDeYMWPGUxdccEEiAuAhQ4ZE69ato7q62uAgh6xcuTImTJgQc+fOjUwmoyEAH1ObNm3i0EMPTUy9zz777FOmBgDQvPkGMADAbvDVr371lYaGhk1JqLWgoCCOOOIIQ4McsW7duvj5z38ed955Z8yZM0f4C/AJjRw5MvLz8xNRa0NDw8abbrrpVVMDAGjenAAGANgNKisrm1atWjW9T58+5ySh3qOPPjqefPJJQREk2Pr16+Oxxx6L2bNn+3cZYBdJpVIxatSoxNS7cuXKadXV1WmTAwBo3pwABgDYTaZNm5aY6/c6duwYAwYMMDRIoA0bNsSvf/3r+Nd//dd49dVXhb8Au9CAAQOiY8eOian36aefftLUAAAQAAMA7CZf+9rX5tTX11ckpd6jjjrK0CBBqqqq4v77749vf/vb8eKLL0ZTU5OmAOxiRx55ZGJqra+vX/eNb3zjdVMDAMAV0AAAu0ltbW16xYoVT++///6fT0K9hx56aLRt2zaqqqoMD7LYli1bYsqUKfHcc8/F9u3bNQRgN2nbtm0MGTIkMfUuX778qdraWtc/AwDgBDAAwO70xz/+cUJSas3Pz4/jjjvO0CBL1dTUxKOPPhq33XZb/OUvfxH+Auxmxx57bOTn5yel3Myvf/3rCaYGAECEABgAYLe66667llZXV89PSr1HH310tGjRwuAgi7wd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qATAAABZ4umnn968fPnyxF3xN3r06GjXrp0BAgBZqUOHDnH88ccnru5ly5ZNmD59+hYTBADgoxIAAwBkkbvvvvtPmUymKUk1FxYWxumnn254AEBWOvPMMxP3yYpMJtN41113/dH0AAD4OATAAABZ5Be/+MWatWvXTkta3UcccUT06tXLAAGArNK7d+847LDDEld3eXn5X+6///51JggAwMchAAYAyDIPP/zwn5JWcyqVijPPPNPwAICsMmbMmEilUomr+8EHH/yT6QEA8HEJgAEAsszXv/71NzZs2DAraXUPHDgwDj74YAMEALLCoEGDYsCAAYmru6KiYuatt966wAQBAPi4BMAAAFlo3Lhxv01i3WPGjIm8PFtMAGDvysvLizFjxiSy9j//+c+/NUEAAD7RflgLAACyz/XXXz+nqqrqr0mru1evXnHUUUcZIACwVx1zzDHRvXv3xNW9adOmV2666aa5JggAwCchAAYAyFJ/+tOf7k1i3WPGjInS0lIDBAD2ijZt2sRZZ52VyNofeOCBe00QAIBPSgAMAJClbrrpprlJPAVcXFwcZ555pgECAHvFWWedFS1btkxc3Zs2bXrl5ptvnmeCAAB8UgJgAIAsNm7cuF8lse5Ro0ZF7969DRAA2KP69OkTI0eOTGTtjz322K9MEACAXUEADACQxcaOHTu7qqrqb0mrO5VKxfnnnx+pVMoQAYA9tv/4/Oc/n8j9R2Vl5d+uueaav5kiAAC7ggAYACDLTZ069bdJrLtv374xZMgQAwQA9ojDDjsssTeQTJ48+TcmCADAriIABgDIcpdeeumLVVVVryax9s9//vNRXFxsiADAblVaWhrnn39+Imuvqqr66+WXX/6SKQIAsKsIgAEAEuChhx76WRLrLisri9NPP90AAYDd6qyzzoqSkpIklp753e9+91MTBABgVxIAAwAkwA033DB3w4YNs5JY+3HHHRd9+vQxRABgt+jbt28cddRRiay9oqJi1te//vU3TBEAgF1JAAwAkBA///nPfxoR6aTVnUql4vOf/3zk5dl6AgC7Vn5+flx00UWRSqWSWH76F7/4xX+bIgAAu5q3cAAACXHHHXe8tW7duulJrL13795xzDHHGCIAsEudcMIJ0b1790TWXl5e/pc77rjjLVMEAGBXEwADACTI3XfffW8mk2lKYu1nnXVWtG3b1hAB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onv37vEv//IvccABBzSrdWcymaYnnnji9s997nPPeAoAAODDEQADAJBYDz/88NJjjjlmY+/evY+KiGZzFKq0tDSGDx8eq1evjvXr13sQAHLcwIED45prrol27do1t6VnZsyY8YOzzjprqqcAAAA+PAEwAACJdv/99795zDHHVO6zzz5HRDMKgVu0aBGHHXZYtGzZMhYuXBjpdNrDAJBjCgoK4pxzzonzzz8/WrRo0dyWn37uuefuOuWUUyZ4EgAA4KMRAAMAkHi///3v5w8bNmxF3759j2lO10GnUqno27dvDB06NBYvXhxbtmzxMADkiJ49e8YNN9wQgwcPblbf+434x7XPU6ZM+fbpp58+2ZMAAAAfnQAYAICc8OCDDy4ZNmzYin79+jWrEDgionXr1nHEEUdEfX19LF261MMAkGCpVCpOOOGEuOKKK6JNmzbNbv07wt9vnXPOOX/xNAAAwMcjAAYAIGc89NBDS4YNG7a8X79+xza3EDg/Pz8OPvjg6NWrV8yfPz8aGho8EAAJU1JSEpdffnmccMIJkZ+f3+zWn8lkGp944olvffazn53maQAAgI9PAAwAQE556KGHlo4cOXJdnz59RqWa252ZEdG1a9cYNmxYLFu2LCorKz0QAAnRt2/fuO6662K//fZrluvPZDLpp59++rvnnHPO054GAAD4ZATAAADknD/96U+LDj300KX7779/s7sOOiKiuLg4jjzyyCgpKYk333wz0um0hwIgSxUUFMRnP/vZuPDCC6OkpKRZ9iCdTjc88sgjt5x//vnTPREAAPDJCYABAMhJDz/88NId3wQelUqlmt09mqlUKvr06RMHH3xwLFy4MLZt2+ahAMgynTt3jrFjx8bQoUOjGV5aERH/CH+feOKJ2y+88MLnPBEAALBrCIABAMhZDz300JIePXq8NmjQoGPz8vJaNMcetG3bNkaNGhVNTU2xZMkSDwVAFkilUjF69Oi48soro0OHDs22D01NTdt++9vf/stll132oqcCAAB2HQEwAAA5bdKkSeXdu3efM3jw4GYbAufn58eAAQOiV69esWDBgti+fbsHA2Avad26dVx66aVx/PHHR35+frPtQ2NjY/WvfvWrf7nuuute81QAAMCuJQAGACDnTZ48eW1jY+OMI4444uiCgoKS5tqHrl27xqhRo2Lbtm2xcuVKDwbAHpRKpWLUqFExduzY6NWrV7PuRX19/fo77rjjK9/61rcWejIAAGDXEwADANAsPP/881UbNmx45rjjjjuqsLCwrLn2obCwMAYNGhT77bdfLF68OGpraz0cALtZ+/bt44orrogTTzwxCgub9/uU2tralTfffPPVP/nJT1Z7MgAAYPcQAAMA0Gz87W9/27p27doZJ5xwwsjCwsK2zbkXnTp1ipEjR0Z1dbXTwAC70ciRI+Pqq6+OHj16NPte1NTULL/hhhuu/e1vf7vOkwEAALuPABgAgGbltdde2zpv3rynTznllKFFRUWdmnMvCgsL49BDD4399tsvFi1a5DQwwC709qnfk08+udmf+o2I2Lx587yLL774unHjxm30dAAAwO71fgFwat9zYsTOftC4LmLjq610DwCAxOrVq1fhs88++69du3Y9QTciGhoaYurUqTF58uRobGzUEICPqaCgIE499dQYPXq04HeH8vLyp4499tjvrly5skE3AABg9+swrDYKuuz8ZwJgAAByWuvWrfNeeumlm/fdd9+zdeMfVq9eHffff38sWbJEMwA+ov322y8uuugi1z2/w8KFC38/fPjwnzY0NGR0AwAA9gwBMAAAzd7zzz9/8aGHHnp1RKR0IyKTycTMmTPjz3/+c9TV1WkIwAcoKSmJ8847L0aMGBGplL9Kdki//PLL9xx77LEPagUAAOxZ7xcA+wYwAADNwn333Tfn+OOP39yrV6/DQwgcqVQqevfuHcOHD49169ZFRUWFhwTgPRxyyCExduzY6N+/v/B3h0wm0/jMM8/828knnzxONwAAYM97v28AC4ABAGg2fve7370xePDgJf369Ts6lUrl60hEcXFxjBgxInr06BFLly6N2tpaTQHYoUOHDvGFL3whzjzzzCguLtaQHZqammoeeOCBWz73uc9N1w0AANg7BMAAALDDww8/vKygoOC54cOHH1FQUFCqI//QrVu3OO6446K0tDQWL14cTU1NmgI0Wy1btoxzzjknLr300ujevbuGvENtbe2K22677arbbrvtDd0AAIC9RwAMAADv8Oyzz25avHjx0yeddNKQoqKiTjryD3l5edGnT58YOXJkbN26NVatWqUpQLNz+OGHx1e+8pUYMGBA5OXlacg7VFVV/e3CCy+8/oEHHvDdAAAA2MsEwAAA8C7z58+vefbZZ58+44wz+hcX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OigOOOCAKCoq0pQs0djYuGXmzJk/PvPMMyc2NDS4XgAAAPjQBMAAAJADjjzyyNY/+9nPrujbt++5EZGnI9mluro6Fi5cGPPnz4958+ZFZWWlprBXtGvXLg455JAYMGBA9O/fP1q39nsjWSj91ltv/fmqq676xaxZs6q1AwAA+KgEwAAAkEN++ctfjhgzZsyNrVq16q0b2SmdTsfKlStj0aJFsXDhwli8eHFs27ZNY9gtSkpKol+/ftG/f//Yf//9o1evXpGX53dEslVNTc3yRx999EdXXnnlK7oBAAB8XAJgAADIMd26dSt8+OGHPzd48ODL8vPzbdyzXCaTiTVr1sTChQtj0aJFsWjRotiyZYvG8LGUlZVF//79/xn6du/ePVKplMZkuaampprXXnvtV2PGjHmgoqKiUUcAAIBPQgAMAAA56rjjjiv7r//6r8tdC508mzdvjuXLl8eKFSti+fLlsXjx4qipqdEY/pfi4uLo169f9O7dO/bZZ5/Yd999o6ysTGMSJJPJpJcsWfLn66677pfTp0/3mx8AAMAuIQAGAIAc99Of/nTIueeee3NpaWlf3UimxsbGWLlyZSxdujSWLVsWy5cvj3Xr1kUmk9GcZiKVSkWXLl1in332iT59+kSfPn2iV69eUVBQoDkJtXXr1sUPPvjgj6699tq/6wYAALArCYABAKAZaNeuXf64cePOGTp06BUFBQWtdST56uvrY+XKlf88KbxixYpYu3ZtpNNpzUm4vLy86Nq1a+yzzz7//KdXr17RsmVLzckBjY2NW/7617/+4pxzznm0srKySUcAAIBdTQAMAADNyIknntjmnnvuuXzfffcdk0qlHB3MMdu3b481a9bEmjVrYu3atbF27dooLy+PDRs2CIazUF5eXnTs2DG6desWXbt2jW7dukW3bt2iR48eUVhYqEE5JpPJNC5ZsuRR1z0DAAC7mwAYAACaoa9+9av7Xnfdddd16NDhCN3IfY2Njf8MhNetWxfr1q2LioqKWLduXWzbtk2DdrPS0tLo3LnzP//p0qVLdO3aNbp27eoK52Ziw4YNM//rv/7rxz/60Y+W6wYAALC7CYABAKAZ++UvfznirLPOuq64uNj3gZupmpqaWL9+/T//qaioiMrKyqisrIxNmzZFY2OjJn2AgoKCaN++fbRr1y7at28fHTt2jC5dukSnTp2ic+fOUVxcrEnN1NatW98aP378PVdcccXLugEAAOwpAmAAAGjm2rVrl//ggw+eOWLEiCsLCwvb6gjvtHnz5n+GwZs2bYrKysqorq6OLVu2xJYtW6K6ujqqq6sjk8nk3NpTqVS0bt06WrduHWVlZdGmTZsoLS39X2Fvu3btok2bNh4U/peGhobKl1566efnnHPO+OrqavevAwAAe5QAGAAAiIiIoUOHFt97770XHHjggRfk5+c7ssiHlk6n/xkEV1dXR01Nzfv+k8lkora2NtLpdNTX10dTU1PU1dXt0u8U5+XlRcuWLSM/Pz+KiooiLy8vWrVqFalUKoqLi3f6T0lJSbRq1eqfgW9paWnk5eUZMB9aU1NTzYIFC/745S9/+Y+zZ8+u0REAAGBvEAADAAD/y2mnndb2rrvuurRPnz5n5+XlFeoIe9LbgfDbtm/f/r7XUBcUFESLFi3++b/fDnxhT8pkMg1LliwZd8stt/xq0qRJVToCAADsTQJgAABgp0477bS2d95554X777//5wTBAP9XJpNpWLhw4QO33nrrHwS/AABAtni/ADi/7UHRc2c/SG+LqC33/gcAAHLZokWL6u69995X0un0swcddFCnkpKS3roC8A8VFRUz/7//7/+77aKLLpq6aNGiOh0BAACyRXH3xsgr3fnPBMAAAEDMnDmz8u67736qqalpWr9+/Ypbt27dN5VKpXQGaG4ymUx6zZo1U+65555/Peeccx6cOXNmpa4AAADZRgAMAAB8KDNnzqz88Y9//Gw6nZ4uCAaak7eD37vvvvtfzz///McEvwAAQDYTAAMAAB+JIBhoLgS/AABAEgmAAQCAj+XtILisrOyFvn37diwuLu4VEYJgIBdkKioqnrv33nu/PWbMmEcEvwAAQJK8XwCc2vecGLGzHzSui9j4aivdAwAA/unqq6/u8ZWvfOX8Pn36nJWXl9dCR4CkSafT9UuXLh3/X//1Xw/84he/WKMjAABAEnUYVhsFXXb+MwEwAADwkZ1xxhntb7/99rMPPPDA8/Pz81vrCJDtmpqaqhcsWPDgd77znUcmTpzotC8AAJBoAmAAAGC3GD58eMkPf/jDzwwePPjioqKijjoCZJv6+voNr7322u9vvPHGx2fPnl2jIwAAQC4QAAMAALvV0KFDi++5556zDjnkkPOKioq66giwt9XV1a19/fXXH7z++uvHC34BAIBcIwAGAAD2iFatWuXdc889w0455ZTzO3bseJSOAHtYZsOGDbOmTJny4PXXX/9qbW1tWksAAIBcJAAGAAD2uH/913/tf/7555/dq1ev0/Ly8lroCLC7pNPp+pUrV05+4IEHHvnOd76zSEcAAIBcJwAGAAD2mjPOOKP97bfffvYBBxzw2YKCgjY6AuwqjY2NVW+++eafv/e97z06YcKETToCAAA0FwJgAABgrxs+fHjJ97///dGDBg0aU1paur+OAB9XdXX1wtdee+3Rr371q1Nfe+21Wh0BAACaGwEwAACQVb761a/ue8EFF3y6b9++ZxUUFLTWEeCDNDY2bnnrrbfG/+EPf5j4ox/9aLmOAAAAzZkAGAAAyEpDhw4t/sEPfnDy4MGDz27dunV/HQHerbq6+s2XX375weuuu+7ppUuXbtcRAAAAATAAAJDlCgsLU3ffffeQ0aNHn9G1a9fj8vLyinQFmq90Ol1XXl4+bcqUKROuvfbav+sIAADA/yYABgAAEqNPnz4t/v3f/33UyJEjz2rfvv2nIiKlK9AsZDZt2vTXF1544bGvfe1rzzntCwAA8N4EwAAAQCJddNFFXa6++uqTDzzwwLNbtmzZTUcg99TV1a1ZsGDBuJ/+9KdP3n///et0BAAA4IMJgAEAgETr1q1b4d13333k4YcffmqHDh2OyMvLK9QVSK50Ot2wcePGWbNmzZp8/fXXz6qoqGjUFQAAgA9PAAwAAOSMo48+uvWtt956/CGHHHJKu3btBkdEnq5AIqQrKytfmzdv3uQ777xz+owZM6q1BAAA4OMRAAMAADnpuOOOK/vGN75x/CGHHHJa27ZtB4bvBUO2yVRVVc2dN2/epO9///vTpk+fvkVLAAAAPjkBMAAAkPNuu+22vmedddZJffr0Oa5Vq1a9dQT2ntra2uXLly+f/uijjz51xx13vKUjAAAAu5YAGAAAaFa+9KUvdbv44ouP7t+//wlOBsMekamqqpq7cOHCv/z+97+fcd9995VrCQAAwO4jAAYAAJqtSy65pOtll112jDAYdrl0VVXVvIULF/7lV7/61bO/+93v1moJAADAniEABgAAiIirr766x/nnnz9q//33P7JNmzZDUqlUga7Ah5fJZBoqKyv/vnjx4uf+9Kc/zbr33ntX6woAAMCeJwAGAAB4l379+hV97WtfGzRy5MhRPXv2PLaoqKizrsD/VV9fv37VqlXPvPDCC8/9+7//+5zFixfX6woAAMDeJQAGAAB4H61bt8678847Bx599NFHde/efURpaen+4apomq/M1q1bF69Zs+bF5557btY3v/nNOdXV1WltAQAAyB4CYAAAgI9g8ODBrcaOHXvI8OHDD+vevfvw1q1bHxACYXJXprq6+s01a9a88sorr7z8k5/8ZN5rr71Wqy0AAADZSwAMAADwCVx//fX7nHHGGYf169dvePv27Yfm5+e31hWSrLGxsXrjxo2vvvXWWy+PHz/+lR//+McrdQUAACA5BMAAAAC70Je//OUe55xzzvA+ffoM7tix45CioqKuukI2q6+vX7t27doXFy9ePGfixImv3Xvvvat1BQAAILkEwAAAALvRl7/85R6f+cxnBvfr129Qly5dDm/ZsqVAmL2qrq5u7bp16wS+AAAAOUoADAAAsIe0atUq75prrtnn2GOPPXi//fY7uH379oeUlpb2TaVS+brDbpKuqalZtnHjxnlvvfXW3GeffXbef/3Xfy2vra1Naw0AAEBuEgADAADsRQceeGDLq6+++oAhQ4Yc3LNnz4Pbtm17sGuj+biampqqq6qqXi8vL583Z86ceb/85S/nvfjii1t1BgAAoPkQAAMAAGSZoUOHFn/xi1/cf9CgQQf26NHjwHbt2h3YqlWr3qlUKk932CFdU1OzvLKycsHq1asXzJkzZ8Gf//znJTNmzKjWGgAAgOZNAAwAAJAAxx13XNkFF1xw4MEHH3xA165dDywtLd23pKRkn1QqVag7uS2TyTRs27ZtRXV19dJ169YtfOONNxZOmDBh4YQJEzbpDgAAAO8mAAYAAEiw8847r+OJJ57Yp3///vt16dKlT5s2bfZr3bp1v/z8/GLdSZampqaa6urqxZs3b16ybt26pQsXLlzy9NNPL33ooYc26A4AAAAflgAYAAAgx7Rr1y7/kksu6TFkyJCe++67b89OnTr1Kisr61VcXNyzZcuW3VKpVL4u7R2ZTKaprq6uvKamZtWWLVtWVlRUrFy6dOnK2bNnr7r//vvXVFZWNukSAAAAn4QAGAAAoBnp1KlTwec+97luQ4cO7bnPPvv0aNeuXafWrVt3Li4u7tqyZcvORUVFnfLy8lro1MeTTqe319fXr6+rq6uoqalZW11dvb6y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AACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoMY3JP//9K8My551lzpAk293a7QAAAAAAAAD8iIw3r+SL7TpPxuSt4/ibJJuz20QDBgAAAAAAAHhzrJPp6NvHYcyyjLl7dJTPbl/Jp6sPLufSsM+5ec7q5YOrF0OeP/SVaAAAAAAAAIA3weH7u6zfm79dWDIMSw6225w785vsx3XyzasOby5ssz69c4sAAAAAAAAAr9n69C6bC9sT93a7rKdnORin5Otxynzi1JQcfiwCAwAAAAAAALxO69O7HH68TaaT98cp85R8vbp3Nfszv8q0LHn7xMF1sjk/ZzUPmZ/MmWefhAYAAAAAAAD4oayPdjn7223Gn7x6ZrXPnetX8mBKkpv3cufDd/Pufn5FL56SzcVtNheT3dNt8tQlAwAAAAAAAHyv1sm0ySv/9XtsNWZ3I/lHkgzHi7/4XY7WYz5yiwAAAAAAAAA/Ivtcv/3nPEyS1fHa42t5+vNLyX7JoRsCAAAAAAAAePPt1/nbV3/KvePn1Xc371/NYxEYAAAAAAAA4M0yTHk2rvNo2WdzvHZqzN9v/SF3vju3evng/at5fPDLPDu1yuGyZHSVAAAAAAAAAK/XOGe4ueSvZ4e8M8xZbVe5ceuPufvy3Oqkw4+v5emDX+fuuTlLhhwsEYIBAAAAAAAAXpclGR8OuXP0TR4cPM/9z/+SRyfNDf/1TZezOp/87KdjzizJZkhO7edMy/w/nAUAAAAAAADg/zaMWcZkP8/ZLsmLacr2/MV8+cnvs/tP5/4FmLjAq1ifcioAAAAASUVORK5CYII=",u=e.objectName?O(e.objectName):"Media "+n._slideObjects.filter(e=>e._type===I.media).length,f={_type:I.media};if(!t&&!l&&"online"!==r)throw new Error("addMedia() error: either `data` or `path` are required!");if(l&&!l.toLowerCase().includes("base64,"))throw new Error("addMedia() error: `data` value lacks a base64 header! Ex: 'video/mpeg;base64,NMP[...]')");if(!p.toLowerCase().includes("base64,"))throw new Error("addMedia() error: `cover` value lacks a base64 header! Ex: 'data:image/png;base64,iV[...]')");if("online"===r&&!c)throw new Error("addMedia() error: online videos require `link` value");a=e.extn||(l?l.split(";")[0].split("/")[1]:t.split(".").pop())||"mp3",f.mtype=r,f.media=t||"preencoded.mov",f.options={},f.options.x=o,f.options.y=i,f.options.w=s,f.options.h=A,f.options.objectName=u,"online"===r?(e=S(n),n._relsMedia.push({path:t||"preencoded"+a,data:"dummy",type:"online",extn:a,rId:e,Target:c}),f.mediaRid=e,n._relsMedia.push({path:"preencoded.png",data:p,type:"image/png",extn:"png",rId:S(n),Target:`../media/image-${n._slideNum}-${n._relsMedia.length+1}.png`})):(o=n._relsMedia.filter(e=>e.path&&e.path===t&&e.type===r+"/"+a&&!e.isDuplicate)[0],i=S(n),n._relsMedia.push({path:t||"preencoded"+a,type:r+"/"+a,extn:a,data:l||"",rId:i,isDuplicate:!(null==o||!o.Target),Target:null!=o&&o.Target?o.Target:`../media/media-${n._slideNum}-${n._relsMedia.length+1}.`+a}),f.mediaRid=i,n._relsMedia.push({path:t||"preencoded"+a,type:r+"/"+a,extn:a,data:l||"",rId:S(n),isDuplicate:!(null==o||!o.Target),Target:null!=o&&o.Target?o.Target:`../media/media-${n._slideNum}-${n._relsMedia.length+0}.`+a}),n._relsMedia.push({path:"preencoded.png",type:"image/png",extn:"png",data:p,rId:S(n),Target:`../media/image-${n._slideNum}-${n._relsMedia.length+1}.png`})),n._slideObjects.push(f)}return this}addNotes(e){return this._slideObjects.push({_type:I.notes,text:[{text:e}]}),this}addShape(e,t){return ue(this,e,t),this}addTable(e,t){return this._newAutoPagedSlides=((a,e,t,n,r,o,i)=>{let s=[a],A=t&&"object"==typeof t?t:{};if(A.objectName=A.objectName?O(A.objectName):"Table "+a._slideObjects.filter(e=>e._type===I.table).length,null===e||0===e.length||!Array.isArray(e))throw new Error("addTable: Array expected! EX: 'slide.addTable( [rows], {options} );' (https://gitbrent.github.io/PptxGenJS/docs/api-tables.html)");if(!e[0]||!Array.isArray(e[0]))throw new Error("addTable: 'rows' should be an array of cells! EX: 'slide.addTable( [ ['A'], ['B'], {text:'C',options:{align:'center'}} ] );' (https://gitbrent.github.io/PptxGenJS/docs/api-tables.html)");let l=[],c=(e.forEach(e=>{let r=[];Array.isArray(e)?e.forEach(e=>{let t={_type:I.tablecell,text:"",options:"object"==typeof e&&e.options?e.options:{}};"string"==typeof e||"number"==typeof e?t.text=e.toString():e.text&&("string"==typeof e.text||"number"==typeof e.text?t.text=e.text.toString():e.text&&(t.text=e.text),e.options)&&"object"==typeof e.options&&(t.options=e.options),t.options.border=t.options.border||A.border||[{type:"none"},{type:"none"},{type:"none"},{type:"none"}];e=t.options.border;Array.isArray(e)||"object"!=typeof e||(t.options.border=[e,e,e,e]),t.options.border[0]||(t.options.border[0]={type:"none"}),t.options.border[1]||(t.options.border[1]={type:"none"}),t.options.border[2]||(t.options.border[2]={type:"none"}),t.options.border[3]||(t.options.border[3]={type:"none"});[0,1,2,3].forEach(e=>{t.options.border[e]={type:t.options.border[e].type||u.type,color:t.options.border[e].color||u.color,pt:("number"==typeof t.options.border[e].pt?t.options.border[e]:u).pt}}),r.push(t)}):(console.log("addTable: tableRows has a bad row. A row should be an array of cells. You provided:"),console.log(e)),l.push(r)}),A.x=R(A.x||(0===A.x?0:F/2),"X",r),A.y=R(A.y||(0===A.y?0:F/2),"Y",r),A.h&&(A.h=R(A.h,"Y",r)),A.fontSize=A.fontSize||v,A.margin=0===A.margin||A.margin?A.margin:Q,"number"==typeof A.margin&&(A.margin=[Number(A.margin),Number(A.margin),Number(A.margin),Number(A.margin)]),-1!==JSON.stringify({arrRows:l}).indexOf("hyperlink")||A.color||(A.color=A.color||d),"string"==typeof A.border?(console.warn("addTable `border` option must be an object. Ex: `{border: {type:'none'}}`"),A.border=null):Array.isArray(A.border)&&[0,1,2,3].forEach(e=>{A.border[e]=A.border[e]?{type:A.border[e].type||u.type,color:A.border[e].color||u.color,pt:A.border[e].pt||u.pt}:{type:"none"}}),A.autoPage="boolean"==typeof A.autoPage&&A.autoPage,A.autoPageRepeatHeader="boolean"==typeof A.autoPageRepeatHeader&&A.autoPageRepeatHeader,A.autoPageHeaderRows=void 0===A.autoPageHeaderRows||isNaN(Number(A.autoPageHeaderRows))?1:Number(A.autoPageHeaderRows),A.autoPageLineWeight=void 0===A.autoPageLineWeight||isNaN(Number(A.autoPageLineWeight))?0:Number(A.autoPageLineWeight),A.autoPageLineWeight&&(1{var r;return null!=(r=null==t?void 0:t.options)&&r.colspan&&"number"==typeof t.options.colspan?e+=t.options.colspan:e+=1,e},0),"string"==typeof A.colW||"number"==typeof A.colW||A.colW&&Array.isArray(A.colW)&&1===A.colW.length&&1{r.forEach((e,t)=>{"number"==typeof e||"string"==typeof e?r[t]={_type:I.tablecell,text:String(r[t]),options:A}:"object"==typeof e&&("number"==typeof e.text?r[t].text=r[t].text.toString():null==e.text&&(r[t].text=""),r[t].options=e.options||{},r[t]._type=I.tablecell)})}),[]);return A&&!A.autoPage?(L(a,l),a._slideObjects.push({_type:I.table,arrTabRows:l,options:Object.assign({},A)})):(A.autoPageRepeatHeader&&(A._arrObjTabHeadRows=l.filter((e,t)=>t{i(a._slideNum+t)||s.push(o({masterName:(null==n?void 0:n._name)||null})),0{var e=new B;let n=2*(c.length-1)+1;var a=1<(null==(a=null==(a=c[0])?void 0:a.labels)?void 0:a.length);e.folder("_rels"),e.folder("docProps"),e.folder("xl/_rels"),e.folder("xl/tables"),e.folder("xl/theme"),e.folder("xl/worksheets"),e.folder("xl/worksheets/_rels"),e.file("[Content_Types].xml",' \n'),e.file("_rels/.rels",'\n'),e.file("docProps/app.xml",'Microsoft Macintosh Excel0falseWorksheets1Sheet1falsefalsefalse16.0300\n'),e.file("docProps/core.xml",'PptxGenJSPptxGenJS'+(new Date).toISOString()+''+(new Date).toISOString()+""),e.file("xl/_rels/workbook.xml.rels",''),e.file("xl/styles.xml",'\n'),e.file("xl/theme/theme1.xml",''),e.file("xl/workbook.xml",'\n'),e.file("xl/worksheets/_rels/sheet1.xml.rels",'\n');{let r='';if(p.opts._type===w.BUBBLE||p.opts._type===w.BUBBLE3D)r+=``;else if(p.opts._type===w.SCATTER)r+=``;else if(a){let t=c.length;c[0].labels.forEach(e=>t+=e.filter(e=>e&&""!==e).length),r=r+``+""}else{var o=c.length+c[0].labels.length*c[0].labels[0].length+c[0].labels.length,i=c.length+c[0].labels.length*c[0].labels[0].length+1;r=r+``+''}p.opts._type===w.BUBBLE||p.opts._type===w.BUBBLE3D?c.forEach((e,t)=>{0===t?r+="X-Axis":r=(r+=`${O(e.name||"Y-Axis"+t)}`)+`${O("Size"+t)}`}):c.forEach(e=>{r+=`${O((e.name||" ").replace("X-Axis","X-Values"))}`}),p.opts._type!==w.BUBBLE&&p.opts._type!==w.BUBBLE3D&&p.opts._type!==w.SCATTER&&c[0].labels.slice().reverse().forEach(e=>{e.filter(e=>e&&""!==e).forEach(e=>{r+=`${O(e)}`})}),r+="\n",e.file("xl/sharedStrings.xml",r)}{let a='';if(p.opts._type===w.BUBBLE||p.opts._type===w.BUBBLE3D){a=(a+=``)+``;let r=1;c.forEach((e,t)=>{0===t?a+=``:(a+=``,r++,a+=``)})}else p.opts._type===w.SCATTER?(a=(a+=`
`)+``,c.forEach((e,t)=>{a+=``})):(a=(a+=`
`)+``,c[0].labels.forEach((e,t)=>{a+=``}),c.forEach((e,t)=>{a+=``}));a=(a+="")+''+"
",e.file("xl/tables/table1.xml",a)}{let o='';if(o+='',p.opts._type===w.BUBBLE||p.opts._type===w.BUBBLE3D?o+=``:p.opts._type===w.SCATTER?o+=``:o+=``,o=o+''+'',p.opts._type===w.BUBBLE||p.opts._type===w.BUBBLE3D){o=(o+="")+``+'0';for(let e=1;e${e}`;o+="",c[0].values.forEach((e,t)=>{o=o+``+`${e}`;let r=2;for(let e=1;e${c[e].values[t]||""}`,r++,o+=`${c[e].sizes[t]||""}`,r++;o+=""})}else if(p.opts._type===w.SCATTER){o=(o+="")+``;for(let e=0;e${e}`;o+="",c[0].values.forEach((e,t)=>{o=o+``+`${e}`;for(let e=1;e${c[e].values[t]||0===c[e].values[t]?c[e].values[t]:""}`;o+=""})}else if(o+="",a){o+=``;for(let e=0;e0`;for(let e=c[0].labels.length-1;e${e}`;o+="";var s=c.length,A=c[0].labels[0].length,l=c[0].labels.length;for(let n=0;n`;let r=s,a=c[0].labels.slice().reverse();a.forEach((e,t)=>{e[n]&&(e=0===t?1:a[t-1].filter(e=>e&&""!==e).length,r+=e,o+=`${r}`)});for(let e=0;e${c[e].values[n]||0}`;o+=""}}else{o+=``,c[0].labels.forEach((e,t)=>{o+=`0`});for(let e=0;e${e+1}`;o+="",c[0].labels[0].forEach((e,t)=>{o+=``;for(let e=c[0].labels.length-1;0<=e;e--)o=(o+=``)+`${c.length+t+1}`+"";for(let e=0;e${c[e].values[t]||""}`;o+=""})}o=(o+="")+''+"\n",e.file("xl/worksheets/sheet1.xml",o)}e.generateAsync({type:"base64"}).then(e=>{u.file(`ppt/embeddings/Microsoft_Excel_Worksheet${p.globalId}.xlsx`,e,{base64:!0}),u.file("ppt/charts/_rels/"+p.fileName+".rels",''+``+""),u.file("ppt/charts/"+p.fileName,(n=>{let e,t,r,a,o='',i=!1;if(o=(o+='')+``+"",n.opts.showTitle?o=o+be({title:n.opts.title||"Chart Title",color:n.opts.titleColor,fontFace:n.opts.titleFontFace,fontSize:n.opts.titleFontSize||N,titleAlign:n.opts.titleAlign,titleBold:n.opts.titleBold,titlePos:n.opts.titlePos,titleRotate:n.opts.titleRotate},n.opts.x,n.opts.y)+'':o+='',n.opts._type===w.BAR3D&&(o+=``),o+="",n.opts.layout?o=(o=(o=(o=(o=(o=(o=(o+="")+' ')+' ')+' ')+' ')+' ')+' ')+" ":o+="",Array.isArray(n.opts._type)?n.opts._type.forEach(e=>{var t=Object.assign(Object.assign({},n.opts),e.options),r=t.secondaryValAxis?X:h,a=t.secondaryCatAxis?H:g;i=i||t.secondaryValAxis,o+=me(e.type,e.data,t,r,a)}):o+=me(n.opts._type,n.data,n.opts,h,g),n.opts._type!==w.PIE&&n.opts._type!==w.DOUGHNUT){if(n.opts.valAxes&&1{let a="";return a=(a=(a=(a=(a=(a+="")+' ')+' ')+' ')+' ')+("none"!==t.serGridLine.style?we(t.serGridLine):""),t.showSerAxisTitle&&(a+=be({color:t.serAxisTitleColor,fontFace:t.serAxisTitleFontFace,fontSize:t.serAxisTitleFontSize,titleRotate:t.serAxisTitleRotate,title:t.serAxisTitle||"Axis Title"})),a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a+=` `)+' ')+` `)+' ')+(t.serAxisLineShow?`${j(t.serAxisLineColor||f.color)}`:"")+' ')+" ")+" ")+" ")+" ")+` `)+` ${j(t.serAxisLabelColor||d)}`)+` `)+" ")+' ')+" ")+' ',t.serAxisLabelFrequency&&(a+=' '),t.serLabelFormatCode&&(["serAxisBaseTimeUnit","serAxisMajorTimeUnit","serAxisMinorTimeUnit"].forEach(e=>{!t[e]||"string"==typeof t[e]&&["days","months","years"].includes(e.toLowerCase())||(console.warn(`"${e}" must be one of: 'days','months','years' !`),t[e]=null)}),t.serAxisBaseTimeUnit&&(a+=` `),t.serAxisMajorTimeUnit&&(a+=` `),t.serAxisMinorTimeUnit&&(a+=` `),t.serAxisMajorUnit&&(a+=` `),t.serAxisMinorUnit)&&(a+=` `),a+=""})(n.opts,V,h))),null!=(e=n.opts)&&e.catAxes&&null!=(t=n.opts)&&t.catAxes[1]&&(o+=ve(Object.assign(Object.assign({},n.opts),n.opts.catAxes[1]),H,X))}return n.opts.showDataTable&&(o=(o=(o=(o=(o=(o=(o=(o=(o=(o=(o=(o=(o=(o=(o=(o+="")+` `)+` `)+` `)+` `)+" ")+' ')+" ")+' ')+' ')+` `)+' ')+' ')+" ")+' ')+" "),o=(o=(o=(o+=" ")+(null!=(r=n.opts.plotArea.fill)&&r.color?G(n.opts.plotArea.fill):""))+(n.opts.plotArea.border?`${G(n.opts.plotArea.border.color)}`:"")+" ")+" ",n.opts.showLegend&&(o=(o+="")+'',(n.opts.legendFontFace||n.opts.legendFontSize||n.opts.legendColor)&&(o=(o=(o=(o+="")+" ")+" ")+(n.opts.legendFontSize?``:""),n.opts.legendColor&&(o+=G(n.opts.legendColor)),n.opts.legendFontFace&&(o+=''),n.opts.legendFontFace&&(o+=''),o=(o=(o+=" ")+' ')+" "),o+=""),o=(o+=' ')+' ',n.opts._type===w.SCATTER&&(o+=''),o=(o=(o=(o=(o+="")+(null!=(a=n.opts.chartArea.fill)&&a.color?G(n.opts.chartArea.fill):""))+(n.opts.chartArea.border?`${G(n.opts.chartArea.border.color)}`:""))+" ")+''})(p)),t("")}).catch(e=>{r(e)})})})}function me(a,n,o,e,t){let i=-1,s=1;var r=null;let A="";switch(a){case w.AREA:case w.BAR:case w.BAR3D:case w.LINE:case w.RADAR:A+=``,a===w.AREA&&"stacked"===o.barGrouping&&(A+=''),a!==w.BAR&&a!==w.BAR3D||(A=(A+='')+''),a===w.RADAR&&(A+=''),A+='',n.forEach(e=>{i++,A=(A=(A=(A=(A=(A+="")+` `)+" ")+" Sheet1!$"+E(e._dataIndex+e.labels.length+1)+"$1")+' '+O(e.name)+"")+" ";var t=o.chartColors?o.chartColors[i%o.chartColors.length]:null;A+=" ","transparent"===t?A+="":o.chartColorsOpacity?A+=""+j(t,``)+"":A+=""+j(t)+"",a===w.LINE||a===w.RADAR?0===o.lineSize?A+="":A=(A+=`${j(t)}`)+'':o.dataBorder&&(A+=`${j(o.dataBorder.color)}`),A=(A+=T(o.shadow,l))+' ',a!==w.RADAR&&(A=(A+="")+``,o.dataLabelBkgrdColors&&(A+=`${j(t)}`),A=(A=(A=(A+="")+``)+`${j(o.dataLabelColor||d)}`)+``+"",o.dataLabelPosition&&(A+=``),A=(A=(A=(A+='')+``)+``)+``+""),a!==w.LINE&&a!==w.RADAR||(A=(A+="")+' ',o.lineDataSymbolSize&&(A+=``),A=(A=(A=(A+=" ")+` ${j(o.chartColors[e._dataIndex+1>o.chartColors.length?Math.floor(Math.random()*o.chartColors.length):e._dataIndex])}`)+` ${j(o.lineDataSymbolLineColor||t)}`+" ")+" "),a!==w.BAR&&a!==w.BAR3D||1!==n.length||!(o.chartColors&&o.chartColors!==q&&1{e=e<0?o.invertedColors||o.chartColors||q:o.chartColors||[];A=(A=(A+=" ")+` `+' ')+' ',0===o.lineSize?A+="":A=a===w.BAR?(A+="")+' ':(A=(A+=" ")+' ')+" ",A=(A+=T(o.shadow,l))+" "}),A+="",o.catLabelFormatCode?(A=(A=(A=(A+=" ")+` Sheet1!$A$2:$A$${e.labels[0].length+1}`+" ")+" "+(o.catLabelFormatCode||"General")+"")+` `,e.labels[0].forEach((e,t)=>A+=`${O(e)}`),A+=" "):(A=(A=(A+=" ")+` Sheet1!$A$2:$${E(e.labels.length)}$${e.labels[0].length+1}`+" ")+` `,e.labels.forEach(e=>{A+="",e.forEach((e,t)=>A+=`${O(e)}`),A+=""}),A+=" "),A=(A=(A=(A=A+""+" ")+`Sheet1!$${E(e._dataIndex+e.labels.length+1)}$2:$${E(e._dataIndex+e.labels.length+1)}$${e.labels[0].length+1}`+" ")+" "+(o.valLabelFormatCode||o.dataTableFormatCode||"General")+"")+` `,e.values.forEach((e,t)=>A+=`${e||0===e?e:""}`),A=(A+=" ")+" ",a===w.LINE&&(A+=''),A+=""}),A=(A=(A=(A=(A=(A=(A=(A+=" ")+` `)+" ")+" ")+` `)+" "+j(o.dataLabelColor||d)+"")+' ')+" ",o.dataLabelPosition&&(A+=' '),A=(A=(A=(A=(A+=' ')+' ')+' ')+' ')+` `+" ",a===w.BAR?A=(A+=` `)+` `:a===w.BAR3D?A=(A=(A+=` `)+` `)+' ':a===w.LINE&&(A+=' '),A=(A+=``)+``;break;case w.SCATTER:A=(A+="")+''+'',i=-1,n.filter((e,t)=>0{i++,A=(A=(A=(A=(A=(A+="")+` `+` `)+" ")+` Sheet1!$${E(e+2)}$1`)+' '+O(a.name)+" ")+" ";var t=o.chartColors[i%o.chartColors.length];if("transparent"===t?A+="":o.chartColorsOpacity?A+=""+j(t,'')+"":A+=""+j(t)+"",0===o.lineSize?A+="":A=(A+=`${j(t)}`)+``,A=(A=(A+=T(o.shadow,l))+" "+"")+' ',o.lineDataSymbolSize&&(A+=``),A=(A=(A=(A+="")+`${j(o.chartColors[e+1>o.chartColors.length?Math.floor(Math.random()*o.chartColors.length):e])}`)+`${j(o.lineDataSymbolLineColor||o.chartColors[i%o.chartColors.length])}`+"")+"",o.showLabel){let r=ne("-xxxx-xxxx-xxxx-xxxxxxxxxxxx");!a.labels[0]||"custom"!==o.dataLabelFormatScatter&&"customXY"!==o.dataLabelFormatScatter||(A+="",a.labels[0].forEach((e,t)=>{"custom"!==o.dataLabelFormatScatter&&"customXY"!==o.dataLabelFormatScatter||(A=(A=(A=(A=(A=(A=(A=(A=(A+=" ")+` `+" ")+" ")+" ")+" ")+" ")+" ")+' ')+" "+O(e)+" ",A=(A=(A=(A=(A=(A="customXY"!==o.dataLabelFormatScatter||/^ *$/.test(e)?A:(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A+=" ")+' ')+" ( ")+' ')+' ')+" ")+" ["+O(a.name)+"")+" ")+' ')+" , ")+' ')+' ')+" ")+" ["+O(a.name)+"]")+" ")+' ')+" ) ")+' ')+" ")+" ")+" ")+" ")+" ",o.dataLabelPosition&&(A+=' '),A=(A=(A=(A=(A=(A=(A+=' ')+' ')+' ')+' ')+' ')+` `+" ")+" ")}),A+=""),"XY"===o.dataLabelFormatScatter&&(A=(A=(A=(A=(A=(A=(A=(A=(A=(A+=" ")+" ")+" ")+" ")+" ")+" ")+" ")+" ")+' ')+" ",o.dataLabelPosition&&(A+=' '),A=(A=(A=(A=(A=(A=(A=(A+=' ')+` `)+` `)+` `)+' ')+' ')+' ')+" ")}1===n.length&&o.chartColors!==q&&a.values.forEach((e,t)=>{e=e<0?o.invertedColors||o.chartColors||q:o.chartColors||[];A=(A=(A+=" ")+` `+' ')+' ',0===o.lineSize?A+="":A=(A+="")+' ',A=(A+=T(o.shadow,l))+" "}),A=(A=(A=(A+=" ")+` Sheet1!$A$2:$A$${n[0].values.length+1}`)+" General")+` `,n[0].values.forEach((e,t)=>{A+=`${e||0===e?e:""}`}),A=(A=(A=(A=(A=(A+=" ")+" ")+" ")+` Sheet1!$${E(e+2)}$2:$${E(e+2)}$${n[0].values.length+1}`)+" General")+` `,n[0].values.forEach((e,t)=>{A+=`${a.values[t]||0===a.values[t]?a.values[t]:""}`}),A=(A=(A+=" ")+" ")+''}),A=(A=(A=(A=(A=(A=(A=(A+=" ")+` `)+" ")+" ")+` `)+" "+j(o.dataLabelColor||d)+"")+' ')+" ",o.dataLabelPosition&&(A+=' '),A=(A=(A=(A+=' ')+' ')+' ')+' ',A=(A+=``)+("");break;case w.BUBBLE:case w.BUBBLE3D:A=A+""+'',i=-1,n.filter((e,t)=>0{i++,A=(A=(A=(A=(A=(A+="")+` `+` `)+" ")+" Sheet1!$"+E(s+1)+"$1")+' '+O(r.name)+" ")+" ";e=o.chartColors[i%o.chartColors.length];"transparent"===e?A+="":o.chartColorsOpacity?A+=`${j(e,'')}`:A+=""+j(e)+"",0===o.lineSize?A+="":o.dataBorder?A+=`${j(o.dataBorder.color)}`:A=(A+=`${j(e)}`)+``,A=A+T(o.shadow,l)+"",A=(A=(A=(A+=" ")+` Sheet1!$A$2:$A$${n[0].values.length+1}`)+" General")+` `,n[0].values.forEach((e,t)=>{A+=`${e||0===e?e:""}`}),A=(A=(A=(A+=" ")+" ")+" ")+`Sheet1!$${E(s+1)}$2:$${E(s+1)}$${n[0].values.length+1}`,s++,A=(A+=" General")+` `,n[0].values.forEach((e,t)=>{A+=`${r.values[t]||0===r.values[t]?r.values[t]:""}`}),A=(A=(A=(A+=" ")+" ")+" ")+`Sheet1!$${E(s+1)}$2:$${E(s+1)}$${r.sizes.length+1}`,s++,A=(A+=" General")+` `,r.sizes.forEach((e,t)=>{A+=`${e||""}`}),A=(A=(A+=" ")+" ")+' '}),A=(A=(A=(A=(A+="")+``+"")+``)+`${j(o.dataLabelColor||d)}`)+``+"",o.dataLabelPosition&&(A+=``),A=(A=(A=(A=(A=(A=(A+='')+``)+``)+' ')+' ')+"")+``+"";break;case w.DOUGHNUT:case w.PIE:r=n[0],A=(A=(A=(A=(A=(A=(A=(A=(A=A+("")+' ')+""+' ')+' '+" ")+" "+" Sheet1!$B$1")+" "+' ')+(' '+O(r.name)+""))+" "+" ")+" "+" ")+' '+' ',o.dataNoEffects?A+="":A+=T(o.shadow,l),A+=" ",r.labels[0].forEach((e,t)=>{A=(A=(A=A+""+` `)+' ')+`${j(o.chartColors[t+1>o.chartColors.length?Math.floor(Math.random()*o.chartColors.length):t])}`,o.dataBorder&&(A+=`${j(o.dataBorder.color)}`),A=(A+=T(o.shadow,l))+" "}),A+="",r.labels[0].forEach((e,t)=>{A=(A=(A=(A=(A=(A=(A=A+""+` `)+` `+" ")+" ")+` `)+" "+j(o.dataLabelColor||d)+"")+` `+" ")+" ",a===w.PIE&&o.dataLabelPosition&&(A+=``),A=(A=(A=(A=(A=(A+=' ')+' ')+' ')+' ')+' ')+' '}),A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=A+` `+" ")+" "+" ")+" "+" ")+` `+' ')+" "+" ")+" "+" ")+(a===w.PIE?'':""))+' '+' ')+' '+' ')+' '+' ')+` `+"")+""+" ")+` Sheet1!$A$2:$A$${r.labels[0].length+1}`+" ")+` `,r.labels[0].forEach((e,t)=>{A+=`${O(e)}`}),A=(A=(A=(A=(A+=" ")+" "+"")+" "+" ")+` Sheet1!$B$2:$B$${r.labels[0].length+1}`+" ")+` `,r.values.forEach((e,t)=>{A+=`${e||0===e?e:""}`}),A=(A=(A=A+" "+" ")+" "+" ")+` `,a===w.DOUGHNUT&&(A+=``),A+="";break;default:A+=""}return A}function ve(t,e,r){let a="";return t._type===w.SCATTER||t._type===w.BUBBLE||t._type===w.BUBBLE3D?a+="":a+="",a=(a=a+(' ')+" ")+(''),!t.catAxisMaxVal&&0!==t.catAxisMaxVal||(a+=``),!t.catAxisMinVal&&0!==t.catAxisMinVal||(a+=``),a=(a=(a=(a+="")+(' '))+(' '))+("none"!==t.catGridLine.style?we(t.catGridLine):""),t.showCatAxisTitle&&(a+=be({color:t.catAxisTitleColor,fontFace:t.catAxisTitleFontFace,fontSize:t.catAxisTitleFontSize,titleRotate:t.catAxisTitleRotate,title:t.catAxisTitle||"Axis Title"})),t._type===w.SCATTER||t._type===w.BUBBLE||t._type===w.BUBBLE3D?a+=' ':a+=' ',a=t._type===w.SCATTER?(a+=' ')+' ':(a=(a+=' ')+' ')+' ',a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a+=" ")+` `)+(t.catAxisLineShow?""+j(t.catAxisLineColor||f.color)+"":""))+(' '))+" "+" ")+" "+" ")+(t.catAxisLabelRotate?``:"")+" ")+" "+" ")+` `)+(" "+j(t.catAxisLabelColor||d)+""))+(' '))+" "+" ")+(' ')+" ")+" "+(' '))+` `)+' '+' ')+` `,t.catAxisLabelFrequency&&(a+=' '),(t.catLabelFormatCode||t._type===w.SCATTER||t._type===w.BUBBLE||t._type===w.BUBBLE3D)&&(t.catLabelFormatCode&&(["catAxisBaseTimeUnit","catAxisMajorTimeUnit","catAxisMinorTimeUnit"].forEach(e=>{!t[e]||"string"==typeof t[e]&&["days","months","years"].includes(t[e].toLowerCase())||(console.warn(`"${e}" must be one of: 'days','months','years' !`),t[e]=null)}),t.catAxisBaseTimeUnit&&(a+=''),t.catAxisMajorTimeUnit&&(a+=''),t.catAxisMinorTimeUnit)&&(a+=''),t.catAxisMajorUnit&&(a+=``),t.catAxisMinorUnit)&&(a+=``),t._type===w.SCATTER||t._type===w.BUBBLE||t._type===w.BUBBLE3D?a+="":a+="",a}function ye(e,t){let r=t===h?"col"===e.barDir?"l":"b":"col"!==e.barDir?"r":"t";t===X&&(r="r");var a=t===h?g:H;let n="";return n=(n+="")+(' ')+" ",e.valAxisLogScaleBase&&(n+=``),n+='',!e.valAxisMaxVal&&0!==e.valAxisMaxVal||(n+=``),!e.valAxisMinVal&&0!==e.valAxisMinVal||(n+=``),n=(n=(n+=" ")+` `)+(' '),"none"!==e.valGridLine.style&&(n+=we(e.valGridLine)),e.showValAxisTitle&&(n+=be({color:e.valAxisTitleColor,fontFace:e.valAxisTitleFontFace,fontSize:e.valAxisTitleFontSize,titleRotate:e.valAxisTitleRotate,title:e.valAxisTitle||"Axis Title"})),n+=``,n=e._type===w.SCATTER?(n+=' ')+' ':(n=(n+=' ')+' ')+' ',n=(n=(n=(n=(n=(n=(n=(n=(n=(n=(n=(n=(n=(n+=" ")+` `)+(e.valAxisLineShow?""+j(e.valAxisLineColor||f.color)+"":""))+(' '))+" "+" ")+" "+" ")+` `+" ")+" "+" ")+` `)+(" "+j(e.valAxisLabelColor||d)+""))+(' '))+" "+" ")+(' ')+" ")+" "+(' '),"number"==typeof e.catAxisCrossesAt?n+=` `:"string"==typeof e.catAxisCrossesAt?n+=' ':(t="r"===r||"t"===r,n+=' '),n+=' ',e.valAxisMajorUnit&&(n+=` `),e.valAxisDisplayUnit&&(n+=`${e.valAxisDisplayUnitLabel?"":""}`),n+=""}function be(r,a,n){var e="left"===r.titleAlign||"right"===r.titleAlign?``:"",t=r.titleRotate?``:"",o=r.fontSize?`sz="${Math.round(100*r.fontSize)}"`:"",i=r.titleBold?1:0;let s="";if(r.titlePos&&"number"==typeof r.titlePos.x&&"number"==typeof r.titlePos.y){a=r.titlePos.x+a,n=r.titlePos.y+n;let e=0===a?0:a*(a/5)/10,t=(1<=e&&(e/=10),.1<=e&&(e/=10),0===n?0:n*(n/5)/10);1<=t&&(t/=10),.1<=t&&(t/=10),s=``}return` - - - ${t} - - - ${e} - - ${j(r.color||d)} - - - - - - ${j(r.color||d)} - - - ${O(r.title)||""} - - - - - ${s} - - `}function E(e){let t="";e-=1;return t=e<=25?r[e]:""+r[Math.floor(e/r.length-1)]+r[e%r.length]}function T(e,t){var r,a,n,o,i,s;return e?"object"!=typeof e?(console.warn("`shadow` options must be an object. Ex: `{shadow: {type:'none'}}`"),""):(r="",e=(t=Object.assign(Object.assign({},t),e)).type||"outer",a=z(t.blur),n=z(t.offset),o=Math.round(6e4*t.angle),i=t.color,s=Math.round(1e5*t.opacity),(r=(r+=``)+``+``)+``+""):""}function we(e){var t="";return(t+=" ")+` `+(' ')+(' ')+" "+" "+""}function xe(e){if(e&&"flat"!==e){if("square"===e)return"sq";if("round"===e)return"rnd";throw new Error("Invalid chart line cap: "+e)}return"flat"}function Ce(e){let t,r,a="undefined"!=typeof process&&!(null==(t=process.versions)||!t.node)&&"node"===(null==(r=process.release)?void 0:r.name),o,i,s=a?()=>c(this,void 0,void 0,function*(){({default:o}=yield import("node:fs")),{default:i}=yield import("node:https")}):()=>c(this,void 0,void 0,function*(){}),A=(a&&s(),[]),l=e._relsMedia.filter(e=>!("online"===e.type||e.data||e.path&&(e.path,e.path.includes("preencoded")))),n=[];return l.forEach(e=>{n.includes(e.path)?e.isDuplicate=!0:(e.isDuplicate=!1,n.push(e.path))}),l.filter(e=>!e.isDuplicate).forEach(n=>{A.push(c(this,void 0,void 0,function*(){if(i||(yield s()),a&&o&&0!==n.path.indexOf("http"))try{var e=o.readFileSync(n.path);return n.data=Buffer.from(e).toString("base64"),l.filter(e=>e.isDuplicate&&e.path===n.path).forEach(e=>e.data=n.data),"done"}catch(e){throw n.data=P,l.filter(e=>e.isDuplicate&&e.path===n.path).forEach(e=>e.data=n.data),new Error(`ERROR: Unable to read media: "${n.path}" -`+String(e))}return a&&i&&n.path.startsWith("http")?yield new Promise((r,a)=>{i.get(n.path,e=>{let t="";e.setEncoding("binary"),e.on("data",e=>t+=e),e.on("end",()=>{n.data=Buffer.from(t,"binary").toString("base64"),l.filter(e=>e.isDuplicate&&e.path===n.path).forEach(e=>e.data=n.data),r("done")}),e.on("error",()=>{n.data=P,l.filter(e=>e.isDuplicate&&e.path===n.path).forEach(e=>e.data=n.data),a(new Error("ERROR! Unable to load image (https.get): "+n.path))})})}):yield new Promise((t,r)=>{let a=new XMLHttpRequest;a.onload=()=>{let e=new FileReader;e.onloadend=()=>{n.data=e.result,l.filter(e=>e.isDuplicate&&e.path===n.path).forEach(e=>e.data=n.data),n.isSvgPng?Pe(n).then(()=>t("done")).catch(r):t("done")},e.readAsDataURL(a.response)},a.onerror=()=>{n.data=P,l.filter(e=>e.isDuplicate&&e.path===n.path).forEach(e=>e.data=n.data),r(new Error("ERROR! Unable to load image (xhr.onerror): "+n.path))},a.open("GET",n.path),a.responseType="blob",a.send()})}))}),e._relsMedia.filter(e=>e.isSvgPng&&e.data).forEach(e=>{c(this,void 0,void 0,function*(){a&&!o&&(yield s()),a&&o?(e.data=P,A.push(Promise.resolve("done"))):A.push(Pe(e))})}),A}function Pe(n){return c(this,void 0,void 0,function*(){return yield new Promise((r,e)=>{let a=new Image;a.onload=()=>{a.width+a.height===0&&a.onerror("h/w=0");let e=document.createElement("CANVAS");var t=e.getContext("2d");e.width=a.width,e.height=a.height,t.drawImage(a,0,0);try{n.data=e.toDataURL(n.type),r("done")}catch(e){a.onerror(e.toString())}e=null},a.onerror=()=>{n.data=P,e(new Error("ERROR! Unable to load image (image.onerror): "+n.path))},a.src="string"==typeof n.data?n.data:P})})}let Se={cover:function(e,t){var e=e.h/e.w,r=e`},contain:function(e,t){var e=e.h/e.w,r=e`},crop:function(e,t){var r=t.x,a=e.w-(t.x+t.w),n=t.y,t=e.h-(t.y+t.h);return``}};function Le(k){let e,_=k._name?'':"",N=1;return k._bkgdImgRid?_+=``:null!=(e=k.background)&&e.color?_+=`${G(k.background)}`:!k.bkgd&&k._name&&k._name===t&&(_+=''),_=(_=_+""+'')+''+'',k._slideObjects.forEach((a,e)=>{let t,r,n,o,i,s,A,l,c=0,p=0,u=R("75%","X",k._presLayout),f=0,d,h="",g=null,m,v=0,y=0,b,w=null;var x,C,P,S,L=null==(t=a.options)?void 0:t.sizing,E=null==(r=a.options)?void 0:r.rounding;void 0!==k._slideLayout&&void 0!==k._slideLayout._slideObjects&&a.options&&a.options.placeholder&&(d=k._slideLayout._slideObjects.filter(e=>e.options.placeholder===a.options.placeholder)[0]),a.options=a.options||{},void 0!==a.options.x&&(c=R(a.options.x,"X",k._presLayout)),void 0!==a.options.y&&(p=R(a.options.y,"Y",k._presLayout)),void 0!==a.options.w&&(u=R(a.options.w,"X",k._presLayout)),void 0!==a.options.h&&(f=R(a.options.h,"Y",k._presLayout));let T=u,B=f;switch(d&&(!d.options.x&&0!==d.options.x||(c=R(d.options.x,"X",k._presLayout)),!d.options.y&&0!==d.options.y||(p=R(d.options.y,"Y",k._presLayout)),!d.options.w&&0!==d.options.w||(u=R(d.options.w,"X",k._presLayout)),!d.options.h&&0!==d.options.h||(f=R(d.options.h,"Y",k._presLayout))),a.options.flipH&&(h+=' flipH="1"'),a.options.flipV&&(h+=' flipV="1"'),a.options.rotate&&(h+=` rot="${U(a.options.rotate)}"`),a._type){case I.table:if(g=a.arrTabRows,m=a.options,v=0,y=0,g[0].forEach(e=>{b=e.options||null,v+=null!==b&&(b,1)&&b.colspan?Number(b.colspan):1}),w=``,w=(w+=' ')+``+'',Array.isArray(m.colW)){w+="";for(let t=0;t`}}else{y=m.colW||F,a.options.w&&!m.colW&&(y=Math.round(("number"==typeof a.options.w?a.options.w:1)/v)),w+="";for(let e=0;e`}w+="",g.forEach(r=>{for(let t=0;t({_type:I.tablecell,options:{rowspan:e},_hmerge:!0})),r.splice(t+1,0,...a),t+=n):t+=1}}),g.forEach((e,t)=>{let n=g[t+1];n&&e.forEach((e,t)=>{var r=e._rowContinue||(null==(r=e.options)?void 0:r.rowspan),a=null==(a=e.options)?void 0:a.colspan;r&&1{let r=0;Array.isArray(m.rowH)&&m.rowH[t]?r=M(Number(m.rowH[t])):m.rowH&&!isNaN(Number(m.rowH))?r=M(Number(m.rowH)):(a.options.cy||a.options.h)&&(r=Math.round((a.options.h?M(a.options.h):"number"==typeof a.options.cy?a.options.cy:1)/g.length)),w+=``,e.forEach(a=>{let t={rowSpan:1<(null==(o=a.options)?void 0:o.rowspan)?a.options.rowspan:void 0,gridSpan:1<(null==(o=a.options)?void 0:o.colspan)?a.options.colspan:void 0,vMerge:a._vmerge?1:void 0,hMerge:a._hmerge?1:void 0},n=Object.keys(t).map(e=>[e,t[e]]).filter(([,e])=>!!e).map(([e,t])=>`${String(e)}="${String(t)}"`).join(" ");if(n=n&&" "+n,a._hmerge||a._vmerge)w+=``;else{let t=a.options||{};a.options=t,["align","bold","border","color","fill","fontFace","fontSize","margin","textDirection","underline","valign"].forEach(e=>{m[e]&&!t[e]&&0!==t[e]&&(t[e]=m[e])});var o=t.valign?` anchor="${t.valign.replace(/^c$/i,"ctr").replace(/^m$/i,"ctr").replace("center","ctr").replace("middle","ctr").replace("top","t").replace("btm","b").replace("bottom","b")}"`:"",i=t.textDirection&&"horz"!==t.textDirection?` vert="${t.textDirection}"`:"",s=(s=(null!=(s=null==(s=a._optImp)?void 0:s.fill)&&s.color?a._optImp.fill.color:null!=(s=a._optImp)&&s.fill&&"string"==typeof a._optImp.fill?a._optImp.fill:"")||t.fill?t.fill:"")?G(s):"";let e=0===t.margin||t.margin?t.margin:Q,r=(Array.isArray(e)||"number"!=typeof e||(e=[e,e,e,e]),"");r=1<=e[0]?` marL="${z(e[3])}" marR="${z(e[1])}" marT="${z(e[0])}" marB="${z(e[2])}"`:` marL="${M(e[3])}" marR="${M(e[1])}" marT="${M(e[0])}" marB="${M(e[2])}"`,w+=`${De(a)}`,t.border&&Array.isArray(t.border)&&[{idx:3,name:"lnL"},{idx:1,name:"lnR"},{idx:0,name:"lnT"},{idx:2,name:"lnB"}].forEach(e=>{"none"!==t.border[e.idx].type?w=(w=(w=(w+=``)+`${j(t.border[e.idx].color)}`)+``)+``:w+=``}),w=(w+=s)+" "+" "}}),w+=""}),w=(w=w+" "+" ")+" "+"",_+=w,N++;break;case I.text:case I.placeholder:if(a.options.line||0!==f||(f=.3*F),a.options._bodyProp||(a.options._bodyProp={}),a.options.margin&&Array.isArray(a.options.margin)?(a.options._bodyProp.lIns=z(a.options.margin[0]||0),a.options._bodyProp.rIns=z(a.options.margin[1]||0),a.options._bodyProp.bIns=z(a.options.margin[2]||0),a.options._bodyProp.tIns=z(a.options.margin[3]||0)):"number"==typeof a.options.margin&&(a.options._bodyProp.lIns=z(a.options.margin),a.options._bodyProp.rIns=z(a.options.margin),a.options._bodyProp.bIns=z(a.options.margin),a.options._bodyProp.tIns=z(a.options.margin)),_=(_+="")+``,null!=(n=a.options.hyperlink)&&n.url&&(_+=``),null!=(o=a.options.hyperlink)&&o.slide&&(_+=``),_=(_=(_=(_=(_=(_+="")+("':"/>")))+`${ke("placeholder"===a._type?a:d)}`+"")+``)+``)+``,"custGeom"===a.shape)_=(_=(_=(_=(_+="")+"")+"")+'')+``,null!=(s=a.options.points)&&s.forEach((e,t)=>{if("curve"in e)switch(e.curve.type){case"arc":_+=``;break;case"cubic":_+=` - - - - `;break;case"quadratic":_+=` - - - `}else"close"in e?_+="":e.moveTo||0===t?_+=``:_+=``}),_=(_+="")+"";else{if(_+='',a.options.rectRadius)_+=``;else if(a.options.angleRange){for(let e=0;e<2;e++){var D=a.options.angleRange[e];_+=``}a.options.arcThicknessRatio&&(_+=``)}_+=""}_+=a.options.fill?G(a.options.fill):"",a.options.line&&(_+=a.options.line.width?``:"",a.options.line.color&&(_+=G(a.options.line)),a.options.line.dashType&&(_+=``),a.options.line.beginArrowType&&(_+=``),a.options.line.endArrowType&&(_+=``),_+=""),a.options.shadow&&"none"!==a.options.shadow.type&&(a.options.shadow.type=a.options.shadow.type||"outer",a.options.shadow.blur=z(a.options.shadow.blur||8),a.options.shadow.offset=z(a.options.shadow.offset||4),a.options.shadow.angle=Math.round(6e4*(a.options.shadow.angle||270)),a.options.shadow.opacity=Math.round(1e5*(a.options.shadow.opacity||.75)),a.options.shadow.color=a.options.shadow.color||W.color,_=(_=(_=(_=(_+="")+` `)+` `)+` `)+" "),_=(_+="")+De(a)+"";break;case I.image:_=(_=_+""+" ")+``,null!=(A=a.hyperlink)&&A.url&&(_+=``),null!=(l=a.hyperlink)&&l.slide&&(_+=``),_=(_=(_=_+" "+' ')+(" "+ke(d)+""))+" "+"",_=(k._relsMedia||[]).filter(e=>e.rId===a.imageRid)[0]&&"svg"===(k._relsMedia||[]).filter(e=>e.rId===a.imageRid)[0].extn?(_=(_=(_=(_+=``)+(a.options.transparency?` `:""))+' ')+` `+" ")+" ":(_+=``)+(a.options.transparency?``:"")+"",null!=L&&L.type?(x=L.w?R(L.w,"X",k._presLayout):u,C=L.h?R(L.h,"Y",k._presLayout):f,P=R(L.x||0,"X",k._presLayout),S=R(L.y||0,"Y",k._presLayout),_+=Se[L.type]({w:T,h:B},{w:x,h:C,x:P,y:S}),T=x,B=C):_+=" ",_=(_=(_=(_=(_=_+""+"")+(" "))+` `)+` `)+" "+` `,a.options.shadow&&"none"!==a.options.shadow.type&&(a.options.shadow.type=a.options.shadow.type||"outer",a.options.shadow.blur=z(a.options.shadow.blur||8),a.options.shadow.offset=z(a.options.shadow.offset||4),a.options.shadow.angle=Math.round(6e4*(a.options.shadow.angle||270)),a.options.shadow.opacity=Math.round(1e5*(a.options.shadow.opacity||.75)),a.options.shadow.color=a.options.shadow.color||W.color,_=(_=(_=(_=(_+="")+``)+``)+``)+``+""),_=_+""+"";break;case I.media:_="online"===a.mtype?(_=(_=(_=(_=(_=(_=(_+=" ")+``)+" ")+` `)+" ")+` `+" ")+` `+' ')+" ":(_=(_=(_=(_=(_=(_=(_=(_=(_=(_+=" ")+``)+' ')+` `)+' ')+` `)+" ")+" ")+` `+" ")+` `+' ')+" ";break;case I.chart:_=(_=(_=(_=(_=(_=(_=_+""+" ")+` `+" ")+` ${ke(d)}`+" ")+` `)+' '+' ')+` `+" ")+" "+"";break;default:_+=""}}),k._slideNumberProps&&(k._slideNumberProps.align||(k._slideNumberProps.align="left"),_=(_=(_=(_=(_+=" ")+' ')+" ")+""+``+``+' ')+"`,k._slideNumberProps.color&&(_+=G(k._slideNumberProps.color)),k._slideNumberProps.fontFace&&(_+=``),_+=""),_+="",k._slideNumberProps.align.startsWith("l")?_+='':k._slideNumberProps.align.startsWith("c")?_+='':k._slideNumberProps.align.startsWith("r")?_+='':_+='',_=(_+=``)+`${k._slideNum}`+""),_=_+""+""}function Ee(e,t){let r=0,a=''+A+'';return e._rels.forEach(e=>{r=Math.max(r,e.rId),e.type.toLowerCase().includes("hyperlink")?"slide"===e.data?a+=``:a+=``:e.type.toLowerCase().includes("notesSlide")&&(a+=``)}),(e._relsChart||[]).forEach(e=>{r=Math.max(r,e.rId),a+=``}),(e._relsMedia||[]).forEach(e=>{var t=e.rId.toString();r=Math.max(r,e.rId),e.type.toLowerCase().includes("image")?a+='':e.type.toLowerCase().includes("audio")?a.includes(' Target="'+e.Target+'"')?a+='':a+='':e.type.toLowerCase().includes("video")?a.includes(' Target="'+e.Target+'"')?a+='':a+='':e.type.toLowerCase().includes("online")&&(a.includes(' Target="'+e.Target+'"')?a+='':a+='')}),t.forEach((e,t)=>{a+=``}),a+=""}function Te(t,e){let r,a,n="",o="",i="",s="";var A,l=e?"a:lvl1pPr":"a:pPr";let c=z(_),p="<"+l+(t.options.rtlMode?' rtl="1" ':"");if(t.options.align)switch(t.options.align){case"left":p+=' algn="l"';break;case"right":p+=' algn="r"';break;case"center":p+=' algn="ctr"';break;case"justify":p+=' algn="just"';break;default:p+=""}if(t.options.lineSpacing?o=``:t.options.lineSpacingMultiple&&(o=``),t.options.indentLevel&&!isNaN(Number(t.options.indentLevel))&&0`),t.options.paraSpaceAfter&&!isNaN(Number(t.options.paraSpaceAfter))&&0`),"object"==typeof t.options.bullet)if(null!=(a=null==(r=null==t?void 0:t.options)?void 0:r.bullet)&&a.indent&&(c=z(t.options.bullet.indent)),t.options.bullet.type)"number"===t.options.bullet.type.toString().toLowerCase()&&(p+=` marL="${t.options.indentLevel&&0`);else if(t.options.bullet.characterCode){let e=`&#x${t.options.bullet.characterCode};`;/^[0-9A-Fa-f]{4}$/.test(t.options.bullet.characterCode)||(console.warn("Warning: `bullet.characterCode should be a 4-digit unicode charatcer (ex: 22AB)`!"),e=C.DEFAULT),p+=` marL="${t.options.indentLevel&&0'}else if(t.options.bullet.code){let e=`&#x${t.options.bullet.code};`;/^[0-9A-Fa-f]{4}$/.test(t.options.bullet.code)||(console.warn("Warning: `bullet.code should be a 4-digit hex code (ex: 22AB)`!"),e=C.DEFAULT),p+=` marL="${t.options.indentLevel&&0'}else p+=` marL="${t.options.indentLevel&&0`;else n=t.options.bullet?(p+=` marL="${t.options.indentLevel&&0`):(t.options.bullet,p+=' indent="0" marL="0"',"");return t.options.tabStops&&Array.isArray(t.options.tabStops)&&(A=t.options.tabStops.map(e=>``).join(""),s=`${A}`),p+=">"+o+i+n+s,e&&(p+=Be(t.options,!0)),p+=""}function Be(e,t){let r,a="";var n,o,i,t=t?"a:defRPr":"a:rPr";if(a=(a=(a=(a=(a+="<"+t+' lang="'+(e.lang||"en-US")+'"'+(e.lang?' altLang="en-US"':""))+(e.fontSize?` sz="${Math.round(100*e.fontSize)}"`:""))+(null!=e&&e.bold?` b="${e.bold?"1":"0"}"`:""))+(null!=e&&e.italic?` i="${e.italic?"1":"0"}"`:""))+(null!=e&&e.strike?` strike="${"string"==typeof e.strike?e.strike:"sngStrike"}"`:""),"object"==typeof e.underline&&null!=(r=e.underline)&&r.style?a+=` u="${e.underline.style}"`:"string"==typeof e.underline?a+=` u="${String(e.underline)}"`:e.hyperlink&&(a+=' u="sng"'),e.baseline?a+=` baseline="${Math.round(50*e.baseline)}"`:e.subscript?a+=' baseline="-40000"':e.superscript&&(a+=' baseline="30000"'),a=a+(e.charSpacing?` spc="${Math.round(100*e.charSpacing)}" kern="0"`:"")+' dirty="0">',(e.color||e.fontFace||e.outline||"object"==typeof e.underline&&e.underline.color)&&(e.outline&&"object"==typeof e.outline&&(a+=`${G(e.outline.color||"FFFFFF")}`),e.color&&(a+=G({color:e.color,transparency:e.transparency})),e.highlight&&(a+=`${j(e.highlight)}`),"object"==typeof e.underline&&e.underline.color&&(a+=`${G(e.underline.color)}`),e.glow&&(a+=`${n=e.glow,o=Y,i="",o=Object.assign(Object.assign({},o),n),(i+=``)+j(o.color,``)+""}`),e.fontFace)&&(a+=``),e.hyperlink){if("object"!=typeof e.hyperlink)throw new Error("ERROR: text `hyperlink` option should be an object. Ex: `hyperlink:{url:'https://github.com'}` ");if(!e.hyperlink.url&&!e.hyperlink.slide)throw new Error("ERROR: 'hyperlink requires either `url` or `slide`'");e.hyperlink.url?a+=`":"/>"):e.hyperlink.slide&&(a+=`":"/>")),e.color&&(a=(a=(a+=' ')+' ')+" ")}return a+=``}function De(r){let o=r.options||{},e=[],a=[];if(o&&r._type!==I.tablecell&&null==r.text)return"";let i=r._type===I.tablecell?"":"",n=(i+=(e=>{let t="":"resize"===e.options.fit&&(t+="")),e.options.shrinkText&&(t+=""),t=t+(e.options._bodyProp.autoFit?"":"")+""):t+=' wrap="square" rtlCol="0">',e._type===I.tablecell?"":t})(r),0===o.h&&o.line&&o.align?i+='':"placeholder"===r._type?i+=`${Te(r,!0)}`:i+="","string"==typeof r.text||"number"==typeof r.text?e.push({text:r.text.toString(),options:o||{}}):r.text&&!Array.isArray(r.text)&&"object"==typeof r.text&&Object.keys(r.text).includes("text")?e.push({text:r.text||"",options:r.options||{}}):Array.isArray(r.text)&&(e=r.text.map(e=>({text:e.text,options:e.options}))),e.forEach((t,e)=>{t.text||(t.text=""),t.options=t.options||o||{},0===e&&t.options&&!t.options.bullet&&o.bullet&&(t.options.bullet=o.bullet),"string"!=typeof t.text&&"number"!=typeof t.text||(t.text=t.text.toString().replace(/\r*\n/g,A)),t.text.includes(A)&&null===t.text.match(/\n$/g)?t.text.split(A).forEach(e=>{t.options.breakLine=!0,a.push({text:e,options:t.options})}):a.push(t)}),[]),s=[];return a.forEach((e,t)=>{0{let t,a=!1,n=(i+="","{0<(r.options._lineIdx=e)&&r.options.softBreakBefore&&(i+=""),r.options.align=r.options.align||o.align,r.options.lineSpacing=r.options.lineSpacing||o.lineSpacing,r.options.lineSpacingMultiple=r.options.lineSpacingMultiple||o.lineSpacingMultiple,r.options.indentLevel=r.options.indentLevel||o.indentLevel,r.options.paraSpaceBefore=r.options.paraSpaceBefore||o.paraSpaceBefore,r.options.paraSpaceAfter=r.options.paraSpaceAfter||o.paraSpaceAfter,n=Te(r,!1),i+=n.replace("",""),Object.entries(o).filter(([e])=>!(r.options.hyperlink&&"color"===e)).forEach(([e,t])=>{"bullet"===e||r.options[e]||(r.options[e]=t)}),i+=(e=r).text?`${Be(e.options,!1)}${O(e.text)}`:"",(!r.text&&o.fontSize||r.options.fontSize)&&(a=!0,o.fontSize=o.fontSize||r.options.fontSize)}),r._type===I.tablecell&&(o.fontSize||o.fontFace)?o.fontFace?i=(i=(i=(i+=`')+``)+``)+``+"":i+=`':a?i+=`':i+=``,i+=""}),-1===i.indexOf("")&&(i+=""),i+=r._type===I.tablecell?"":""}function ke(e){var t,r;return e?(t=null!=(t=e.options)&&t._placeholderIdx?e.options._placeholderIdx:"",r=(r=null!=(r=e.options)&&r._placeholderType?e.options._placeholderType:"")&&re[r]?re[r].toString():"",``):""}function _e(e){return`${A}${O((e=>{let t="";return e._slideObjects.forEach(e=>{e._type===I.notes&&(t+=null!=e&&e.text&&e.text[0]?e.text[0].text:"")}),t.replace(/\r*\n/g,A)})(e))}${e._slideNum}`}function Ne(e,t,r){return Ee(e[r-1],[{target:`../slideLayouts/slideLayout${((t,r,a)=>{for(let e=0;e{var t=0e._slideNum===this.slides[this.slides.length-1]._slideNum).length;return e.sectionTitle=t?this.sections[this.sections.length-1].title:null,this.addSlide(e)},this.getSlide=t=>this.slides.filter(e=>e._slideNum===t)[0],this.setSlideNumber=e=>{this.masterSlide._slideNumberProps=e,this.slideLayouts.filter(e=>e._name===t)[0]._slideNumberProps=e},this.createChartMediaRels=(e,r,t)=>{e._relsChart.forEach(e=>t.push(ge(e,r))),e._relsMedia.forEach(t=>{if("online"!==t.type&&"hyperlink"!==t.type){let e=t.data&&"string"==typeof t.data?t.data:"";(e.includes(",")||e.includes(";"))&&e.includes(",")?e.includes(";")||(e="image/png;"+e):e="image/png;base64,"+e,r.file(t.Target.replace("..","ppt"),e.split(",").pop(),{base64:!0})}})},this.writeFileToBrowser=(r,a)=>c(this,void 0,void 0,function*(){let t=document.createElement("a");if(t.setAttribute("style","display:none;"),t.dataset.interception="off",document.body.appendChild(t),window.URL.createObjectURL){let e=window.URL.createObjectURL(new Blob([a],{type:"application/vnd.openxmlformats-officedocument.presentationml.presentation"}));return t.href=e,t.download=r,t.click(),setTimeout(()=>{window.URL.revokeObjectURL(e),document.body.removeChild(t)},100),yield Promise.resolve(r)}}),this.exportPresentation=s=>c(this,void 0,void 0,function*(){let o=[],t=[],i=new B;return this.slides.forEach(e=>{t=t.concat(Ce(e))}),this.slideLayouts.forEach(e=>{t=t.concat(Ce(e))}),t=t.concat(Ce(this.masterSlide)),yield Promise.all(t).then(()=>c(this,void 0,void 0,function*(){var r,e,t,a,n;return this.slides.forEach(e=>{var r;e._slideLayout&&((r=e)._slideLayout._slideObjects||[]).forEach(t=>{t._type===I.placeholder&&0===r._slideObjects.filter(e=>e.options&&e.options.placeholder===t.options.placeholder).length&&fe(r,[{text:""}],t.options,!1)})}),i.folder("_rels"),i.folder("docProps"),i.folder("ppt").folder("_rels"),i.folder("ppt/charts").folder("_rels"),i.folder("ppt/embeddings"),i.folder("ppt/media"),i.folder("ppt/slideLayouts").folder("_rels"),i.folder("ppt/slideMasters").folder("_rels"),i.folder("ppt/slides").folder("_rels"),i.folder("ppt/theme"),i.folder("ppt/notesMasters").folder("_rels"),i.folder("ppt/notesSlides").folder("_rels"),i.file("[Content_Types].xml",((e,t,r)=>{let a=''+A;return a=(a=(a=(a=(a=a+''+'')+''+'')+''+'')+''+'')+''+'',e.forEach(e=>{(e._relsMedia||[]).forEach(e=>{"image"===e.type||"online"===e.type||"chart"===e.type||"m4v"===e.extn||a.includes(e.type)||(a+='')})}),a=(a=a+''+'')+''+'',e.forEach((e,t)=>{a=a+``+``,e._relsChart.forEach(e=>{a+=``})}),a=(a=a+''+'')+''+'',t.forEach((e,t)=>{a+=``,(e._relsChart||[]).forEach(e=>{a+=' '})}),e.forEach((e,t)=>{a+=``}),r._relsChart.forEach(e=>{a+=' '}),r._relsMedia.forEach(e=>{"image"===e.type||"online"===e.type||"chart"===e.type||"m4v"===e.extn||a.includes(e.type)||(a+=' ')}),a=(a+=' ')+' '+""})(this.slides,this.slideLayouts,this.masterSlide)),i.file("_rels/.rels",`${A} - - - - `),i.file("docProps/app.xml",(a=this.slides,n=this.company,`${A} - 0 - 0 - Microsoft Office PowerPoint - On-screen Show (16:9) - 0 - ${a.length} - ${a.length} - 0 - 0 - false - - - Fonts Used - 2 - Theme - 1 - Slide Titles - ${a.length} - - - - - Arial - Calibri - Office Theme - ${a.map((e,t)=>`Slide ${t+1}`).join("")} - - - ${n} - false - false - false - 16.0000 - `)),i.file("docProps/core.xml",(a=this.title,n=this.subject,e=this.author,t=this.revision,` - - ${O(a)} - ${O(n)} - ${O(e)} - ${O(e)} - ${t} - ${(new Date).toISOString().replace(/\.\d\d\dZ/,"Z")} - ${(new Date).toISOString().replace(/\.\d\d\dZ/,"Z")} - `)),i.file("ppt/_rels/presentation.xml.rels",(t=>{let r=1,a=''+A;a+='';for(let e=1;e<=t.length;e++)a+=``;return r++,a+=``+``+``+``+``+""})(this.slides)),i.file("ppt/theme/theme1.xml",`${null!=(n=(a=this).theme)&&n.headFontFace?``:''}${null!=(n=a.theme)&&n.bodyFontFace?``:''}`),i.file("ppt/presentation.xml",(e=>{let t=''+A+'`;t+='',e.slides.forEach(e=>t+=``),t=(t=(t=(t+="")+``)+``)+``+"";for(let e=1;e<10;e++)t+=``+''+``;return t+="",e.sections&&0',e.sections.forEach(e=>{t+=``,e._slides.forEach(e=>t+=``),t+=""}),t=(t+="")+''),t+=""})(this)),i.file("ppt/presProps.xml",`${A}`),i.file("ppt/tableStyles.xml",`${A}`),i.file("ppt/viewProps.xml",`${A}`),this.slideLayouts.forEach((e,t)=>{i.file(`ppt/slideLayouts/slideLayout${t+1}.xml`,` - - ${Le(e)} - `),i.file(`ppt/slideLayouts/_rels/slideLayout${t+1}.xml.rels`,(e=t+1,Ee(this.slideLayouts[e-1],[{target:"../slideMasters/slideMaster1.xml",type:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideMaster"}])))}),this.slides.forEach((e,t)=>{var r;i.file(`ppt/slides/slide${t+1}.xml`,(r=e,''+A+'`+Le(r)+"")),i.file(`ppt/slides/_rels/slide${t+1}.xml.rels`,Ne(this.slides,this.slideLayouts,t+1)),i.file(`ppt/notesSlides/notesSlide${t+1}.xml`,_e(e)),i.file(`ppt/notesSlides/_rels/notesSlide${t+1}.xml.rels`,` - - - - `)}),i.file("ppt/slideMasters/slideMaster1.xml",(r=this.masterSlide,e=(e=this.slideLayouts).map((e,t)=>``),t=''+A,(t+='')+Le(r)+''+e.join("")+' ')),i.file("ppt/slideMasters/_rels/slideMaster1.xml.rels",(a=this.masterSlide,(n=(n=this.slideLayouts).map((e,t)=>({target:`../slideLayouts/slideLayout${t+1}.xml`,type:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideLayout"}))).push({target:"../theme/theme1.xml",type:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme"}),Ee(a,n))),i.file("ppt/notesMasters/notesMaster1.xml",`${A}7/23/19Click to edit Master text stylesSecond levelThird levelFourth levelFifth level‹#›`),i.file("ppt/notesMasters/_rels/notesMaster1.xml.rels",`${A} - - `),this.slideLayouts.forEach(e=>{this.createChartMediaRels(e,i,o)}),this.slides.forEach(e=>{this.createChartMediaRels(e,i,o)}),this.createChartMediaRels(this.masterSlide,i,o),yield Promise.all(o).then(()=>c(this,void 0,void 0,function*(){return"STREAM"===s.outputType?yield i.generateAsync({type:"nodebuffer",compression:s.compression?"DEFLATE":"STORE"}):s.outputType?yield i.generateAsync({type:s.outputType}):yield i.generateAsync({type:"blob",compression:s.compression?"DEFLATE":"STORE"})}))}))});this.LAYOUTS={LAYOUT_4x3:{name:"screen4x3",width:9144e3,height:6858e3},LAYOUT_16x9:{name:"screen16x9",width:9144e3,height:5143500},LAYOUT_16x10:{name:"screen16x10",width:9144e3,height:5715e3},LAYOUT_WIDE:{name:"custom",width:12192e3,height:6858e3}},this._author="PptxGenJS",this._company="PptxGenJS",this._revision="1",this._subject="PptxGenJS Presentation",this._title="PptxGenJS Presentation",this._presLayout={name:this.LAYOUTS[o].name,_sizeW:this.LAYOUTS[o].width,_sizeH:this.LAYOUTS[o].height,width:this.LAYOUTS[o].width,height:this.LAYOUTS[o].height},this._rtlMode=!1,this._slideLayouts=[{_margin:y,_name:t,_presLayout:this._presLayout,_rels:[],_relsChart:[],_relsMedia:[],_slide:null,_slideNum:1e3,_slideNumberProps:null,_slideObjects:[]}],this._slides=[],this._sections=[],this._masterSlide={addChart:null,addImage:null,addMedia:null,addNotes:null,addShape:null,addTable:null,addText:null,_name:null,_presLayout:this._presLayout,_rId:null,_rels:[],_relsChart:[],_relsMedia:[],_slideId:null,_slideLayout:null,_slideNum:null,_slideNumberProps:null,_slideObjects:[]}}stream(e){return c(this,void 0,void 0,function*(){return yield this.exportPresentation({compression:null==e?void 0:e.compression,outputType:"STREAM"})})}write(r){return c(this,void 0,void 0,function*(){var e="object"==typeof r&&null!=r&&r.outputType?r.outputType:r||null,t=!("object"!=typeof r||null==r||!r.compression)&&r.compression;return yield this.exportPresentation({compression:t,outputType:e})})}writeFile(a){return c(this,void 0,void 0,function*(){var e="undefined"!=typeof process&&!(null==(e=process.versions)||!e.node)&&"node"===(null==(e=process.release)?void 0:e.name),{fileName:t="Presentation.pptx",compression:r=!1}=("string"==typeof a&&(console.warn("[WARNING] writeFile(string) is deprecated - pass { fileName } instead."),a={fileName:a}),a),t=t.toLowerCase().endsWith(".pptx")?t:t+".pptx",r=yield this.exportPresentation({compression:r,outputType:e?"nodebuffer":null});return e?(e=(yield import("node:fs")).promises,e=e.writeFile,yield e(t,r)):yield this.writeFileToBrowser(t,r),t})}addSection(e){e?e.title||console.warn("addSection requires a title"):console.warn("addSection requires an argument");var t={_type:"user",_slides:[],title:e.title};e.order?this.sections.splice(e.order,0,t):this._sections.push(t)}addSlide(t){let r="string"==typeof t?t:null!=t&&t.masterName?t.masterName:"",e={_name:this.LAYOUTS[o].name,_presLayout:this.presLayout,_rels:[],_relsChart:[],_relsMedia:[],_slideNum:this.slides.length+1};r&&(n=this.slideLayouts.filter(e=>e._name===r)[0])&&(e=n);var a,n=new he({addSlide:this.addNewSlide,getSlide:this.getSlide,presLayout:this.presLayout,setSlideNum:this.setSlideNumber,slideId:this.slides.length+256,slideRId:this.slides.length+2,slideNumber:this.slides.length+1,slideLayout:e});return this._slides.push(n),null!=t&&t.sectionTitle?(a=this.sections.filter(e=>e.title===t.sectionTitle)[0])?a._slides.push(n):console.warn(`addSlide: unable to find section with title: "${t.sectionTitle}"`):this.sections&&0"default"===e._type).length+1),_type:"default",_slides:[n]})),n}defineLayout(e){e?e.name?e.width?e.height?"number"!=typeof e.height?console.warn("defineLayout `height` should be a number (inches)"):"number"!=typeof e.width&&console.warn("defineLayout `width` should be a number (inches)"):console.warn("defineLayout requires `height`"):console.warn("defineLayout requires `width`"):console.warn("defineLayout requires `name`"):console.warn("defineLayout requires `{name, width, height}`"),this.LAYOUTS[e.name]={name:e.name,_sizeW:Math.round(Number(e.width)*F),_sizeH:Math.round(Number(e.height)*F),width:Math.round(Number(e.width)*F),height:Math.round(Number(e.height)*F)}}defineSlideMaster(e){e=JSON.parse(JSON.stringify(e));if(!e.title)throw new Error("defineSlideMaster() object argument requires a `title` value. (https://gitbrent.github.io/PptxGenJS/docs/masters.html)");var t,n,r={_margin:e.margin||y,_name:e.title,_presLayout:this.presLayout,_rels:[],_relsChart:[],_relsMedia:[],_slide:null,_slideNum:1e3+this.slideLayouts.length+1,_slideNumberProps:e.slideNumber||null,_slideObjects:[],background:e.background||null,bkgd:e.bkgd||null};n=r,(t=e).bkgd&&(n.bkgd=t.bkgd),t.objects&&Array.isArray(t.objects)&&0{var r=Object.keys(e)[0],a=n;x[r]&&"chart"===r?ce(a,e[r].type,e[r].data,e[r].opts):x[r]&&"image"===r?pe(a,e[r]):x[r]&&"line"===r?ue(a,b.LINE,e[r]):x[r]&&"rect"===r?ue(a,b.RECTANGLE,e[r]):x[r]&&"text"===r?fe(a,[{text:e[r].text}],e[r].options,!1):x[r]&&"placeholder"===r&&(e[r].options.placeholder=e[r].options.name,delete e[r].options.name,e[r].options._placeholderType=e[r].options.type,delete e[r].options.type,e[r].options._placeholderIdx=100+t,fe(a,[{text:e[r].text}],e[r].options,!0))}),t.slideNumber&&"object"==typeof t.slideNumber&&(n._slideNumberProps=t.slideNumber),this.slideLayouts.push(r),(e.background||e.bkgd)&&de(e.background,r),r._slideNumberProps&&!this.masterSlide._slideNumberProps&&(this.masterSlide._slideNumberProps=r._slideNumberProps)}tableToSlides(t,p={}){{var[u,f,t={},d]=[this,t,p,null!=p&&p.masterSlideName?this.slideLayouts.filter(e=>e._name===p.masterSlideName)[0]:null];let a=t||{},n=void(a.slideMargin=a.slideMargin||0===a.slideMargin?a.slideMargin:.5,a.w||u.presLayout.width),o=[],i=[],s=[],A=[],r=[],l=[.5,.5,.5,.5],c=0;if(!document.getElementById(f))throw new Error('tableToSlides: Table ID "'+f+'" does not exist!');null!=d&&d._margin?(Array.isArray(d._margin)?l=d._margin:isNaN(d._margin)||(l=[d._margin,d._margin,d._margin,d._margin]),a.slideMargin=l):null!=a&&a.slideMargin&&(Array.isArray(a.slideMargin)?l=a.slideMargin:isNaN(a.slideMargin)||(l=[a.slideMargin,a.slideMargin,a.slideMargin,a.slideMargin])),n=(a.w?M(a.w):u.presLayout.width)-M(l[1]+l[3]),a.verbose&&(console.log("[[VERBOSE MODE]]"),console.log("|-- `tableToSlides` ----------------------------------------------------|"),console.log("| tableProps.h .................................... = "+a.h),console.log("| tableProps.w .................................... = "+a.w),console.log("| pptx.presLayout.width ........................... = "+(u.presLayout.width/F).toFixed(1)),console.log("| pptx.presLayout.height .......................... = "+(u.presLayout.height/F).toFixed(1)),console.log("| emuSlideTabW .................................... = "+(n/F).toFixed(1)));let e=document.querySelectorAll(`#${f} tr:first-child th`);(e=0===e.length?document.querySelectorAll(`#${f} tr:first-child td`):e).forEach(e=>{var t=e;if(t.getAttribute("colspan"))for(let e=0;e{c+=e}),r.forEach((e,t)=>{e=Number((Number(n)*(e/c*100)/100/F).toFixed(2));let r=0;var a=document.querySelector(`#${f} thead tr:first-child th:nth-child(${t+1})`),a=(a&&(r=Number(a.getAttribute("data-pptx-min-width"))),document.querySelector(`#${f} thead tr:first-child th:nth-child(${t+1})`));a&&(r=Number(a.getAttribute("data-pptx-width"))),A.push(r>e?r:e)}),a.verbose&&console.log(`| arrColW ......................................... = [${A.join(", ")}]`),["thead","tbody","tfoot"].forEach(t=>{document.querySelectorAll(`#${f} ${t} tr`).forEach(e=>{let r=[];switch(Array.from(e.cells).forEach(a=>{var e=window.getComputedStyle(a).getPropertyValue("color").replace(/\s+/gi,"").replace("rgba(","").replace("rgb(","").replace(")","").split(",");let t=window.getComputedStyle(a).getPropertyValue("background-color").replace(/\s+/gi,"").replace("rgba(","").replace("rgb(","").replace(")","").split(","),n=("rgba(0, 0, 0, 0)"!==window.getComputedStyle(a).getPropertyValue("background-color")&&!window.getComputedStyle(a).getPropertyValue("transparent")||(t=["255","255","255"]),{align:null,bold:!!("bold"===window.getComputedStyle(a).getPropertyValue("font-weight")||500<=Number(window.getComputedStyle(a).getPropertyValue("font-weight"))),border:null,color:ie(Number(e[0]),Number(e[1]),Number(e[2])),fill:{color:ie(Number(t[0]),Number(t[1]),Number(t[2]))},fontFace:(window.getComputedStyle(a).getPropertyValue("font-family")||"").split(",")[0].replace(/"/g,"").replace("inherit","").replace("initial","")||null,fontSize:Number(window.getComputedStyle(a).getPropertyValue("font-size").replace(/[a-z]/gi,"")),margin:null,colspan:Number(a.getAttribute("colspan"))||null,rowspan:Number(a.getAttribute("rowspan"))||null,valign:null});["left","center","right","start","end"].includes(window.getComputedStyle(a).getPropertyValue("text-align"))&&(e=window.getComputedStyle(a).getPropertyValue("text-align").replace("start","left").replace("end","right"),n.align="center"===e?"center":"left"===e?"left":"right"===e?"right":null),["top","middle","bottom"].includes(window.getComputedStyle(a).getPropertyValue("vertical-align"))&&(e=window.getComputedStyle(a).getPropertyValue("vertical-align"),n.valign="top"===e?"top":"middle"===e?"middle":"bottom"===e?"bottom":null),window.getComputedStyle(a).getPropertyValue("padding-left")&&(n.margin=[0,0,0,0],["padding-top","padding-right","padding-bottom","padding-left"].forEach((e,t)=>{n.margin[t]=Math.round(Number(window.getComputedStyle(a).getPropertyValue(e).replace(/\D/gi,"")))})),(window.getComputedStyle(a).getPropertyValue("border-top-width")||window.getComputedStyle(a).getPropertyValue("border-right-width")||window.getComputedStyle(a).getPropertyValue("border-bottom-width")||window.getComputedStyle(a).getPropertyValue("border-left-width"))&&(n.border=[null,null,null,null],["top","right","bottom","left"].forEach((e,t)=>{var r=Math.round(Number(window.getComputedStyle(a).getPropertyValue("border-"+e+"-width").replace("px",""))),e=window.getComputedStyle(a).getPropertyValue("border-"+e+"-color").replace(/\s+/gi,"").replace("rgba(","").replace("rgb(","").replace(")","").split(","),e=ie(Number(e[0]),Number(e[1]),Number(e[2]));n.border[t]={pt:r,color:e}})),r.push({_type:I.tablecell,text:a.innerText,options:n})}),t){case"thead":o.push(r);break;case"tbody":i.push(r);break;case"tfoot":s.push(r);break;default:console.log("table parsing: unexpected table part: "+t)}})}),a._arrObjTabHeadRows=o||null,a.colW=A,Ae([...o,...i,...s],a,u.presLayout,d).forEach((e,t)=>{var r=u.addSlide({masterName:a.masterSlideName||null});0===t&&(a.y=a.y||l[0]),0 opts.y = `+a.y),r.addTable(e.rows,{x:a.x||l[3],y:a.y,w:Number(n)/F,colW:A,autoPage:!1}),a.addImage&&(a.addImage.options=a.addImage.options||{},a.addImage.image&&(a.addImage.image.path||a.addImage.image.data)?r.addImage({path:a.addImage.image.path,data:a.addImage.image.data,x:a.addImage.options.x,y:a.addImage.options.y,w:a.addImage.options.w,h:a.addImage.options.h}):console.warn("Warning: tableToSlides.addImage requires either `path` or `data`")),a.addShape&&r.addShape(a.addShape.shapeName,a.addShape.options||{}),a.addTable&&r.addTable(a.addTable.rows,a.addTable.options||{}),a.addText&&r.addText(a.addText.text,a.addText.options||{})})}}}return Fe})(JSZip); -//# sourceMappingURL=pptxgen.bundle.js.map diff --git a/dist/pptxgen.bundle.js.map b/dist/pptxgen.bundle.js.map deleted file mode 100644 index 3db05251a..000000000 --- a/dist/pptxgen.bundle.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"names":[],"mappings":"","sources":["pptxgen.bundle.js"],"sourcesContent":["/* PptxGenJS 4.0.1 @ 2025-06-25T23:35:35.101Z */\n!function(e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).JSZip=e()}(function(){return function a(n,o,i){function s(t,e){if(!o[t]){if(!n[t]){var r=\"function\"==typeof require&&require;if(!e&&r)return r(t,!0);if(A)return A(t,!0);e=new Error(\"Cannot find module '\"+t+\"'\");throw e.code=\"MODULE_NOT_FOUND\",e}r=o[t]={exports:{}};n[t][0].call(r.exports,function(e){return s(n[t][1][e]||e)},r,r.exports,a,n,o,i)}return o[t].exports}for(var A=\"function\"==typeof require&&require,e=0;e>4,o=1>6:64,i=2>2)+u.charAt(n)+u.charAt(o)+u.charAt(i));return s.join(\"\")},r.decode=function(e){var t,r,a,n,o,i=0,s=0,A=\"data:\";if(e.substr(0,A.length)===A)throw new Error(\"Invalid base64 input, it looks like a data url.\");var l,A=3*(e=e.replace(/[^A-Za-z0-9+/=]/g,\"\")).length/4;if(e.charAt(e.length-1)===u.charAt(64)&&A--,e.charAt(e.length-2)===u.charAt(64)&&A--,A%1!=0)throw new Error(\"Invalid base64 input, bad content length.\");for(l=new(c.uint8array?Uint8Array:Array)(0|A);i>4,r=(15&n)<<4|(n=u.indexOf(e.charAt(i++)))>>2,a=(3&n)<<6|(o=u.indexOf(e.charAt(i++))),l[s++]=t,64!==n&&(l[s++]=r),64!==o&&(l[s++]=a);return l}},{\"./support\":30,\"./utils\":32}],2:[function(e,t,r){var a=e(\"./external\"),n=e(\"./stream/DataWorker\"),o=e(\"./stream/Crc32Probe\"),i=e(\"./stream/DataLengthProbe\");function s(e,t,r,a,n){this.compressedSize=e,this.uncompressedSize=t,this.crc32=r,this.compression=a,this.compressedContent=n}s.prototype={getContentWorker:function(){var e=new n(a.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new i(\"data_length\")),t=this;return e.on(\"end\",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error(\"Bug : uncompressed data size mismatch\")}),e},getCompressedWorker:function(){return new n(a.Promise.resolve(this.compressedContent)).withStreamInfo(\"compressedSize\",this.compressedSize).withStreamInfo(\"uncompressedSize\",this.uncompressedSize).withStreamInfo(\"crc32\",this.crc32).withStreamInfo(\"compression\",this.compression)}},s.createWorkerFrom=function(e,t,r){return e.pipe(new o).pipe(new i(\"uncompressedSize\")).pipe(t.compressWorker(r)).pipe(new i(\"compressedSize\")).withStreamInfo(\"compression\",t)},t.exports=s},{\"./external\":6,\"./stream/Crc32Probe\":25,\"./stream/DataLengthProbe\":26,\"./stream/DataWorker\":27}],3:[function(e,t,r){var a=e(\"./stream/GenericWorker\");r.STORE={magic:\"\\0\\0\",compressWorker:function(){return new a(\"STORE compression\")},uncompressWorker:function(){return new a(\"STORE decompression\")}},r.DEFLATE=e(\"./flate\")},{\"./flate\":7,\"./stream/GenericWorker\":28}],4:[function(e,t,r){var a=e(\"./utils\"),i=(()=>{for(var e=[],t=0;t<256;t++){for(var r=t,a=0;a<8;a++)r=1&r?3988292384^r>>>1:r>>>1;e[t]=r}return e})();t.exports=function(e,t){return void 0!==e&&e.length?(\"string\"!==a.getTypeOf(e)?(e,t,r)=>{var a=i,n=0+r;e^=-1;for(var o=0;o>>8^a[255&(e^t[o])];return-1^e}:(e,t,r)=>{var a=i,n=0+r;e^=-1;for(var o=0;o>>8^a[255&(e^t.charCodeAt(o))];return-1^e})(0|t,e,e.length):0}},{\"./utils\":32}],5:[function(e,t,r){r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],6:[function(e,t,r){e=\"undefined\"!=typeof Promise?Promise:e(\"lie\");t.exports={Promise:e}},{lie:37}],7:[function(e,t,r){var a=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Uint32Array,n=e(\"pako\"),o=e(\"./utils\"),i=e(\"./stream/GenericWorker\"),s=a?\"uint8array\":\"array\";function A(e,t){i.call(this,\"FlateWorker/\"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}r.magic=\"\\b\\0\",o.inherits(A,i),A.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(o.transformTo(s,e.data),!1)},A.prototype.flush=function(){i.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},A.prototype.cleanUp=function(){i.prototype.cleanUp.call(this),this._pako=null},A.prototype._createPako=function(){this._pako=new n[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var t=this;this._pako.onData=function(e){t.push({data:e,meta:t.meta})}},r.compressWorker=function(e){return new A(\"Deflate\",e)},r.uncompressWorker=function(){return new A(\"Inflate\",{})}},{\"./stream/GenericWorker\":28,\"./utils\":32,pako:38}],8:[function(e,t,r){function v(e,t){for(var r=\"\",a=0;a>>=8;return r}function a(e,t,r,a,n,o){var i=e.file,s=e.compression,A=o!==b.utf8encode,l=y.transformTo(\"string\",o(i.name)),c=y.transformTo(\"string\",b.utf8encode(i.name)),p=i.comment,o=y.transformTo(\"string\",o(p)),u=y.transformTo(\"string\",b.utf8encode(p)),f=c.length!==i.name.length,p=u.length!==p.length,d=\"\",h=i.dir,g=i.date,m={crc32:0,compressedSize:0,uncompressedSize:0},r=(t&&!r||(m.crc32=e.crc32,m.compressedSize=e.compressedSize,m.uncompressedSize=e.uncompressedSize),0),e=(t&&(r|=8),A||!f&&!p||(r|=2048),0),t=0,g=(h&&(e|=16),\"UNIX\"===n?(t=798,e|=(65535&((A=i.unixPermissions)?A:h?16893:33204))<<16):(t=20,e|=63&(i.dosPermissions||0)),n=g.getUTCHours(),n=(n=((n<<=6)|g.getUTCMinutes())<<5)|g.getUTCSeconds()/2,A=g.getUTCFullYear()-1980,A=(A=((A<<=4)|g.getUTCMonth()+1)<<5)|g.getUTCDate(),f&&(h=v(1,1)+v(w(l),4)+c,d+=\"up\"+v(h.length,2)+h),p&&(i=v(1,1)+v(w(o),4)+u,d+=\"uc\"+v(i.length,2)+i),\"\"),g=(g=(g=(g=(g=(g=(g=(g=(g=(g+=\"\\n\\0\")+v(r,2))+s.magic)+v(n,2))+v(A,2))+v(m.crc32,4))+v(m.compressedSize,4))+v(m.uncompressedSize,4))+v(l.length,2))+v(d.length,2);return{fileRecord:x.LOCAL_FILE_HEADER+g+l+d,dirRecord:x.CENTRAL_FILE_HEADER+v(t,2)+g+v(o.length,2)+\"\\0\\0\\0\\0\"+v(e,4)+v(a,4)+l+d+o}}var y=e(\"../utils\"),n=e(\"../stream/GenericWorker\"),b=e(\"../utf8\"),w=e(\"../crc32\"),x=e(\"../signature\");function o(e,t,r,a){n.call(this,\"ZipFileWorker\"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=r,this.encodeFileName=a,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}y.inherits(o,n),o.prototype.push=function(e){var t=e.meta.percent||0,r=this.entriesCount,a=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,n.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:r?(t+100*(r-a-1))/r:100}}))},o.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;t?(e=a(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName),this.push({data:e.fileRecord,meta:{percent:0}})):this.accumulate=!0},o.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,r=a(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(r.dirRecord),t)this.push({data:(t=e,x.DATA_DESCRIPTOR+v(t.crc32,4)+v(t.compressedSize,4)+v(t.uncompressedSize,4)),meta:{percent:100}});else for(this.push({data:r.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},o.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t(n=y.transformTo(\"string\",n(a)),x.CENTRAL_DIRECTORY_END+\"\\0\\0\\0\\0\"+v(e,2)+v(e,2)+v(t,4)+v(r,4)+v(n.length,2)+n))(this.dirRecords.length,r,e,this.zipComment,this.encodeFileName);this.push({data:r,meta:{percent:100}})},o.prototype.prepareNextSource=function(){this.previous=this._sources.shift(),this.openedSource(this.previous.streamInfo),this.isPaused?this.previous.pause():this.previous.resume()},o.prototype.registerPrevious=function(e){this._sources.push(e);var t=this;return e.on(\"data\",function(e){t.processChunk(e)}),e.on(\"end\",function(){t.closedSource(t.previous.streamInfo),t._sources.length?t.prepareNextSource():t.end()}),e.on(\"error\",function(e){t.error(e)}),this},o.prototype.resume=function(){return!!n.prototype.resume.call(this)&&(!this.previous&&this._sources.length?(this.prepareNextSource(),!0):this.previous||this._sources.length||this.generatedError?void 0:(this.end(),!0))},o.prototype.error=function(e){var t=this._sources;if(!n.prototype.error.call(this,e))return!1;for(var r=0;r{if(t=l[e=e||t])return t;throw new Error(e+\" is not a valid compression method !\")})(t.options.compression,i.compression),a=t.options.compressionOptions||i.compressionOptions||{},n=t.dir,o=t.date;t._compressWorker(r,a).withStreamInfo(\"file\",{name:e,dir:n,date:o,comment:t.comment||\"\",unixPermissions:t.unixPermissions,dosPermissions:t.dosPermissions}).pipe(s)}),s.entriesCount=A}catch(e){s.error(e)}return s}},{\"../compressions\":3,\"./ZipFileWorker\":8}],10:[function(e,t,r){function a(){if(!(this instanceof a))return new a;if(arguments.length)throw new Error(\"The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.\");this.files=Object.create(null),this.comment=null,this.root=\"\",this.clone=function(){var e,t=new a;for(e in this)\"function\"!=typeof this[e]&&(t[e]=this[e]);return t}}(a.prototype=e(\"./object\")).loadAsync=e(\"./load\"),a.support=e(\"./support\"),a.defaults=e(\"./defaults\"),a.version=\"3.10.1\",a.loadAsync=function(e,t){return(new a).loadAsync(e,t)},a.external=e(\"./external\"),t.exports=a},{\"./defaults\":5,\"./external\":6,\"./load\":11,\"./object\":15,\"./support\":30}],11:[function(e,t,r){var A=e(\"./utils\"),n=e(\"./external\"),a=e(\"./utf8\"),o=e(\"./zipEntries\"),l=e(\"./stream/Crc32Probe\"),c=e(\"./nodejsUtils\");t.exports=function(e,i){var s=this;return i=A.extend(i||{},{base64:!1,checkCRC32:!1,optimizedBinaryString:!1,createFolders:!1,decodeFileName:a.utf8decode}),c.isNode&&c.isStream(e)?n.Promise.reject(new Error(\"JSZip can't accept a stream when loading a zip file.\")):A.prepareContent(\"the loaded zip file\",e,!0,i.optimizedBinaryString,i.base64).then(function(e){var t=new o(i);return t.load(e),t}).then(function(e){var t=[n.Promise.resolve(e)],r=e.files;if(i.checkCRC32)for(var a=0;anew n.Promise(function(e,t){var r=a.decompressed.getContentWorker().pipe(new l);r.on(\"error\",function(e){t(e)}).on(\"end\",function(){r.streamInfo.crc32!==a.decompressed.crc32?t(new Error(\"Corrupted zip : CRC32 mismatch\")):e()}).resume()}))(r[a]));return n.Promise.all(t)}).then(function(e){for(var e=e.shift(),t=e.files,r=0;r=this.index;t--)r=(r<<8)+this.byteAt(t);return this.index+=e,r},readString:function(e){return a.transformTo(\"string\",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=n},{\"../utils\":32}],19:[function(e,t,r){var a=e(\"./Uint8ArrayReader\");function n(e){a.call(this,e)}e(\"../utils\").inherits(n,a),n.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=n},{\"../utils\":32,\"./Uint8ArrayReader\":21}],20:[function(e,t,r){var a=e(\"./DataReader\");function n(e){a.call(this,e)}e(\"../utils\").inherits(n,a),n.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},n.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},n.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},n.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=n},{\"../utils\":32,\"./DataReader\":18}],21:[function(e,t,r){var a=e(\"./ArrayReader\");function n(e){a.call(this,e)}e(\"../utils\").inherits(n,a),n.prototype.readData=function(e){var t;return this.checkOffset(e),0===e?new Uint8Array(0):(t=this.data.subarray(this.zero+this.index,this.zero+this.index+e),this.index+=e,t)},t.exports=n},{\"../utils\":32,\"./ArrayReader\":17}],22:[function(e,t,r){var a=e(\"../utils\"),n=e(\"../support\"),o=e(\"./ArrayReader\"),i=e(\"./StringReader\"),s=e(\"./NodeBufferReader\"),A=e(\"./Uint8ArrayReader\");t.exports=function(e){var t=a.getTypeOf(e);return a.checkSupport(t),\"string\"!==t||n.uint8array?\"nodebuffer\"===t?new s(e):n.uint8array?new A(a.transformTo(\"uint8array\",e)):new o(a.transformTo(\"array\",e)):new i(e)}},{\"../support\":30,\"../utils\":32,\"./ArrayReader\":17,\"./NodeBufferReader\":19,\"./StringReader\":20,\"./Uint8ArrayReader\":21}],23:[function(e,t,r){r.LOCAL_FILE_HEADER=\"PK\u0003\u0004\",r.CENTRAL_FILE_HEADER=\"PK\u0001\u0002\",r.CENTRAL_DIRECTORY_END=\"PK\u0005\u0006\",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR=\"PK\u0006\u0007\",r.ZIP64_CENTRAL_DIRECTORY_END=\"PK\u0006\u0006\",r.DATA_DESCRIPTOR=\"PK\u0007\\b\"},{}],24:[function(e,t,r){var a=e(\"./GenericWorker\"),n=e(\"../utils\");function o(e){a.call(this,\"ConvertWorker to \"+e),this.destType=e}n.inherits(o,a),o.prototype.processChunk=function(e){this.push({data:n.transformTo(this.destType,e.data),meta:e.meta})},t.exports=o},{\"../utils\":32,\"./GenericWorker\":28}],25:[function(e,t,r){var a=e(\"./GenericWorker\"),n=e(\"../crc32\");function o(){a.call(this,\"Crc32Probe\"),this.withStreamInfo(\"crc32\",0)}e(\"../utils\").inherits(o,a),o.prototype.processChunk=function(e){this.streamInfo.crc32=n(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=o},{\"../crc32\":4,\"../utils\":32,\"./GenericWorker\":28}],26:[function(e,t,r){var a=e(\"../utils\"),n=e(\"./GenericWorker\");function o(e){n.call(this,\"DataLengthProbe for \"+e),this.propName=e,this.withStreamInfo(e,0)}a.inherits(o,n),o.prototype.processChunk=function(e){var t;e&&(t=this.streamInfo[this.propName]||0,this.streamInfo[this.propName]=t+e.data.length),n.prototype.processChunk.call(this,e)},t.exports=o},{\"../utils\":32,\"./GenericWorker\":28}],27:[function(e,t,r){var a=e(\"../utils\"),n=e(\"./GenericWorker\");function o(e){n.call(this,\"DataWorker\");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type=\"\",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=a.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}a.inherits(o,n),o.prototype.cleanUp=function(){n.prototype.cleanUp.call(this),this.data=null},o.prototype.resume=function(){return!!n.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,a.delay(this._tickAndRepeat,[],this)),!0)},o.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished)||(a.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0)},o.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case\"string\":e=this.data.substring(this.index,t);break;case\"uint8array\":e=this.data.subarray(this.index,t);break;case\"array\":case\"nodebuffer\":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=o},{\"../utils\":32,\"./GenericWorker\":28}],28:[function(e,t,r){function a(e){this.name=e||\"default\",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}a.prototype={push:function(e){this.emit(\"data\",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit(\"end\"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit(\"error\",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit(\"error\",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var r=0;r \"+e:e}},t.exports=a},{}],29:[function(e,t,r){var A=e(\"../utils\"),n=e(\"./ConvertWorker\"),o=e(\"./GenericWorker\"),l=e(\"../base64\"),a=e(\"../support\"),i=e(\"../external\"),s=null;if(a.nodestream)try{s=e(\"../nodejs/NodejsStreamOutputAdapter\")}catch(e){}function c(e,s){return new i.Promise(function(t,r){var a=[],n=e._internalType,o=e._outputType,i=e._mimeType;e.on(\"data\",function(e,t){a.push(e),s&&s(t)}).on(\"error\",function(e){a=[],r(e)}).on(\"end\",function(){try{var e=((e,t,r)=>{switch(e){case\"blob\":return A.newBlob(A.transformTo(\"arraybuffer\",t),r);case\"base64\":return l.encode(t);default:return A.transformTo(e,t)}})(o,((e,t)=>{for(var r=0,a=null,n=0,o=0;o>>6:(r<65536?t[n++]=224|r>>>12:(t[n++]=240|r>>>18,t[n++]=128|r>>>12&63),t[n++]=128|r>>>6&63),t[n++]=128|63&r);return t},n.utf8decode=function(e){if(l.nodebuffer)return A.transformTo(\"nodebuffer\",e).toString(\"utf-8\");for(var t,r,a,n=e=A.transformTo(l.uint8array?\"uint8array\":\"array\",e),o=n.length,i=new Array(2*o),s=t=0;s>10&1023,i[t++]=56320|1023&r)}return i.length!==t&&(i.subarray?i=i.subarray(0,t):i.length=t),A.applyFromCharCode(i)},A.inherits(o,r),o.prototype.processChunk=function(e){var t=A.transformTo(l.uint8array?\"uint8array\":\"array\",e.data),r=(this.leftOver&&this.leftOver.length&&(l.uint8array?(r=t,(t=new Uint8Array(r.length+this.leftOver.length)).set(this.leftOver,0),t.set(r,this.leftOver.length)):t=this.leftOver.concat(t),this.leftOver=null),((e,t)=>{for(var r=(t=(t=t||e.length)>e.length?e.length:t)-1;0<=r&&128==(192&e[r]);)r--;return!(r<0)&&0!==r&&r+p[e[r]]>t?r:t})(t)),a=t;r!==t.length&&(l.uint8array?(a=t.subarray(0,r),this.leftOver=t.subarray(r,t.length)):(a=t.slice(0,r),this.leftOver=t.slice(r,t.length))),this.push({data:n.utf8decode(a),meta:e.meta})},o.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:n.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},n.Utf8DecodeWorker=o,A.inherits(i,r),i.prototype.processChunk=function(e){this.push({data:n.utf8encode(e.data),meta:e.meta})},n.Utf8EncodeWorker=i},{\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./support\":30,\"./utils\":32}],32:[function(e,t,i){var s=e(\"./support\"),A=e(\"./base64\"),r=e(\"./nodejsUtils\"),l=e(\"./external\");function a(e){return e}function c(e,t){for(var r=0;r{try{return s.uint8array&&1===String.fromCharCode.apply(null,new Uint8Array(1)).length}catch(e){return!1}})(),nodebuffer:(()=>{try{return s.nodebuffer&&1===String.fromCharCode.apply(null,r.allocBuffer(1)).length}catch(e){return!1}})()}};function o(e){var t=65536,r=i.getTypeOf(e),a=!0;if(\"uint8array\"===r?a=n.applyCanBeUsed.uint8array:\"nodebuffer\"===r&&(a=n.applyCanBeUsed.nodebuffer),a)for(;1{for(var t in A)if(Object.prototype.hasOwnProperty.call(A,t)&&A[t].magic===e)return A[t];return null})(this.compressionMethod)))throw new Error(\"Corrupted zip : compression \"+n.pretty(this.compressionMethod)+\" unknown (inner file : \"+n.transformTo(\"string\",this.fileName)+\")\");this.decompressed=new o(this.compressedSize,this.uncompressedSize,this.crc32,t,e.readData(this.compressedSize))},readCentralPart:function(e){this.versionMadeBy=e.readInt(2),e.skip(2),this.bitFlag=e.readInt(2),this.compressionMethod=e.readString(2),this.date=e.readDate(),this.crc32=e.readInt(4),this.compressedSize=e.readInt(4),this.uncompressedSize=e.readInt(4);var t=e.readInt(2);if(this.extraFieldsLength=e.readInt(2),this.fileCommentLength=e.readInt(2),this.diskNumberStart=e.readInt(2),this.internalFileAttributes=e.readInt(2),this.externalFileAttributes=e.readInt(4),this.localHeaderOffset=e.readInt(4),this.isEncrypted())throw new Error(\"Encrypted zip are not supported\");e.skip(t),this.readExtraFields(e),this.parseZIP64ExtraField(e),this.fileComment=e.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var e=this.versionMadeBy>>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||\"/\"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){var e;this.extraFields[1]&&(e=a(this.extraFields[1].value),this.uncompressedSize===n.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===n.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===n.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===n.MAX_VALUE_32BITS)&&(this.diskNumberStart=e.readInt(4))},readExtraFields:function(e){var t,r,a,n=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4{r.resolve(e).then(function(e){o[t]=e,++i!==a||n||(n=!0,l.resolve(s,o))},function(e){n||(n=!0,l.reject(s,e))})})(e[t],t);return s},s.race=function(e){if(\"[object Array]\"!==Object.prototype.toString.call(e))return this.reject(new TypeError(\"must be an array\"));var t=e.length,r=!1;if(!t)return this.resolve([]);for(var a,n=-1,o=new this(A);++n>>6:(r<65536?t[n++]=224|r>>>12:(t[n++]=240|r>>>18,t[n++]=128|r>>>12&63),t[n++]=128|r>>>6&63),t[n++]=128|63&r);return t},r.buf2binstring=function(e){return c(e,e.length)},r.binstring2buf=function(e){for(var t=new A.Buf8(e.length),r=0,a=t.length;r>10&1023,i[r++]=56320|1023&a)}return c(i,r)},r.utf8border=function(e,t){for(var r=(t=(t=t||e.length)>e.length?e.length:t)-1;0<=r&&128==(192&e[r]);)r--;return!(r<0)&&0!==r&&r+l[e[r]]>t?r:t}},{\"./common\":41}],43:[function(e,t,r){t.exports=function(e,t,r,a){for(var n=65535&e|0,o=e>>>16&65535|0,i=0;0!==r;){for(r-=i=2e3{for(var e=[],t=0;t<256;t++){for(var r=t,a=0;a<8;a++)r=1&r?3988292384^r>>>1:r>>>1;e[t]=r}return e})();t.exports=function(e,t,r,a){var n=s,o=a+r;e^=-1;for(var i=a;i>>8^n[255&(e^t[i])];return-1^e}},{}],46:[function(e,R,t){var s,p=e(\"../utils/common\"),A=e(\"./trees\"),u=e(\"./adler32\"),f=e(\"./crc32\"),r=e(\"./messages\"),l=0,c=0,d=-2,a=2,h=8,n=286,o=30,i=19,O=2*n+1,M=15,g=3,m=258,v=m+g+1,y=42,b=113;function w(e,t){return e.msg=r[t],t}function x(e){return(e<<1)-(4>>8&255,e.pending_buf[e.pending++]=255&t}function T(e,t){var r,a,n=e.max_chain_length,o=e.strstart,i=e.prev_length,s=e.nice_match,A=e.w_size-v>=2),e.lookaheadA&&0!=--n);return i<=e.lookahead?i:e.lookahead}function B(e){var t,r,a,n,o,i,s,A,l,c=e.w_size;do{if(A=e.window_size-e.lookahead-e.strstart,c+(c-v)<=e.strstart){for(p.arraySet(e.window,e.window,c,c,0),e.match_start-=c,e.strstart-=c,e.block_start-=c,t=r=e.hash_size;a=e.head[--t],e.head[t]=c<=a?a-c:0,--r;);for(t=r=c;a=e.prev[--t],e.prev[t]=c<=a?a-c:0,--r;);A+=c}if(0===e.strm.avail_in)break;if(i=e.window,s=e.strstart+e.lookahead,l=void 0,r=0===(l=(A=A)<(l=(o=e.strm).avail_in)?A:l)?0:(o.avail_in-=l,p.arraySet(i,o.input,o.next_in,l,s),1===o.state.wrap?o.adler=u(o.adler,i,l,s):2===o.state.wrap&&(o.adler=f(o.adler,i,l,s)),o.next_in+=l,o.total_in+=l,l),e.lookahead+=r,g<=e.lookahead+e.insert)for(n=e.strstart-e.insert,e.ins_h=e.window[n],e.ins_h=(e.ins_h<=g){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(B(e),0===e.lookahead&&t===l)return 1;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var a=e.block_start+r;if((0===e.strstart||e.strstart>=a)&&(e.lookahead=e.strstart-a,e.strstart=a,S(e,!1),0===e.strm.avail_out))return 1;if(e.w_size-v<=e.strstart-e.block_start&&(S(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(S(e,!0),0===e.strm.avail_out?3:4):(e.strstart>e.block_start&&(S(e,!1),e.strm.avail_out),1)}),new _(4,4,8,4,D),new _(4,5,16,8,D),new _(4,6,32,32,D),new _(4,4,16,16,k),new _(8,16,32,32,k),new _(8,16,128,128,k),new _(8,32,128,256,k),new _(32,128,258,1024,k),new _(32,258,258,4096,k)],t.deflateInit=function(e,t){return I(e,t,h,15,8,0)},t.deflateInit2=I,t.deflateReset=F,t.deflateResetKeep=N,t.deflateSetHeader=function(e,t){return!e||!e.state||2!==e.state.wrap?d:(e.state.gzhead=t,c)},t.deflate=function(e,t){var r,a,n,o;if(!e||!e.state||5>8&255),L(a,a.gzhead.time>>16&255),L(a,a.gzhead.time>>24&255),L(a,9===a.level?2:2<=a.strategy||a.level<2?4:0),L(a,255&a.gzhead.os),a.gzhead.extra&&a.gzhead.extra.length&&(L(a,255&a.gzhead.extra.length),L(a,a.gzhead.extra.length>>8&255)),a.gzhead.hcrc&&(e.adler=f(e.adler,a.pending_buf,a.pending,0)),a.gzindex=0,a.status=69):(L(a,0),L(a,0),L(a,0),L(a,0),L(a,0),L(a,9===a.level?2:2<=a.strategy||a.level<2?4:0),L(a,3),a.status=b)):(i=h+(a.w_bits-8<<4)<<8,i|=(2<=a.strategy||a.level<2?0:a.level<6?1:6===a.level?2:3)<<6,0!==a.strstart&&(i|=32),i+=31-i%31,a.status=b,E(a,i),0!==a.strstart&&(E(a,e.adler>>>16),E(a,65535&e.adler)),e.adler=1)),69===a.status)if(a.gzhead.extra){for(n=a.pending;a.gzindex<(65535&a.gzhead.extra.length)&&(a.pending!==a.pending_buf_size||(a.gzhead.hcrc&&a.pending>n&&(e.adler=f(e.adler,a.pending_buf,a.pending-n,n)),P(e),n=a.pending,a.pending!==a.pending_buf_size));)L(a,255&a.gzhead.extra[a.gzindex]),a.gzindex++;a.gzhead.hcrc&&a.pending>n&&(e.adler=f(e.adler,a.pending_buf,a.pending-n,n)),a.gzindex===a.gzhead.extra.length&&(a.gzindex=0,a.status=73)}else a.status=73;if(73===a.status)if(a.gzhead.name){n=a.pending;do{if(a.pending===a.pending_buf_size&&(a.gzhead.hcrc&&a.pending>n&&(e.adler=f(e.adler,a.pending_buf,a.pending-n,n)),P(e),n=a.pending,a.pending===a.pending_buf_size)){o=1;break}}while(o=a.gzindexn&&(e.adler=f(e.adler,a.pending_buf,a.pending-n,n)),0===o&&(a.gzindex=0,a.status=91)}else a.status=91;if(91===a.status)if(a.gzhead.comment){n=a.pending;do{if(a.pending===a.pending_buf_size&&(a.gzhead.hcrc&&a.pending>n&&(e.adler=f(e.adler,a.pending_buf,a.pending-n,n)),P(e),n=a.pending,a.pending===a.pending_buf_size)){o=1;break}}while(o=a.gzindexn&&(e.adler=f(e.adler,a.pending_buf,a.pending-n,n)),0===o&&(a.status=103)}else a.status=103;if(103===a.status&&(a.gzhead.hcrc?(a.pending+2>a.pending_buf_size&&P(e),a.pending+2<=a.pending_buf_size&&(L(a,255&e.adler),L(a,e.adler>>8&255),e.adler=0,a.status=b)):a.status=b),0!==a.pending){if(P(e),0===e.avail_out)return a.last_flush=-1,c}else if(0===e.avail_in&&x(t)<=x(r)&&4!==t)return w(e,-5);if(666===a.status&&0!==e.avail_in)return w(e,-5);if(0!==e.avail_in||0!==a.lookahead||t!==l&&666!==a.status){var i=2===a.strategy?((e,t)=>{for(var r;;){if(0===e.lookahead&&(B(e),0===e.lookahead)){if(t===l)return 1;break}if(e.match_length=0,r=A._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(S(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(S(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(S(e,!1),0===e.strm.avail_out)?1:2})(a,t):3===a.strategy?((e,t)=>{for(var r,a,n,o,i=e.window;;){if(e.lookahead<=m){if(B(e),e.lookahead<=m&&t===l)return 1;if(0===e.lookahead)break}if(e.match_length=0,g<=e.lookahead&&0>8&255),L(a,e.adler>>16&255),L(a,e.adler>>24&255),L(a,255&e.total_in),L(a,e.total_in>>8&255),L(a,e.total_in>>16&255),L(a,e.total_in>>24&255)):(E(a,e.adler>>>16),E(a,65535&e.adler)),P(e),0=g;){for(a=r.strstart,n=r.lookahead-(g-1);r.ins_h=(r.ins_h<>>=a=r>>>24,x-=a,0==(a=r>>>16&255))f[u++]=65535&r;else{if(!(16&a)){if(0==(64&a)){r=C[(65535&r)+(w&(1<>>=a,x-=a),x<15&&(w+=c[l++]<>>=a=r>>>24,x-=a,!(16&(a=r>>>16&255))){if(0==(64&a)){r=P[(65535&r)+(w&(1<>>=a,x-=a,(a=u-d)>3,w&=(1<<(x-=n<<3))-1,e.next_in=l,e.next_out=u,e.avail_in=l>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function o(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new k.Buf16(320),this.work=new k.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function i(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=\"\",t.wrap&&(e.adler=1&t.wrap),t.mode=M,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new k.Buf32(a),t.distcode=t.distdyn=new k.Buf32(n),t.sane=1,t.back=-1,R):O}function s(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,i(e)):O}function A(e,t){var r,a;return!e||!e.state||(a=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15>>8&255,r.check=N(r.check,E,2,0),c=l=0,r.mode=2;else if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&l)<<8)+(l>>8))%31)e.msg=\"incorrect header check\",r.mode=30;else if(8!=(15&l))e.msg=\"unknown compression method\",r.mode=30;else{if(c-=4,x=8+(15&(l>>>=4)),0===r.wbits)r.wbits=x;else if(x>r.wbits){e.msg=\"invalid window size\",r.mode=30;break}r.dmax=1<>8&1),512&r.flags&&(E[0]=255&l,E[1]=l>>>8&255,r.check=N(r.check,E,2,0)),c=l=0,r.mode=3;case 3:for(;c<32;){if(0===s)break e;s--,l+=a[o++]<>>8&255,E[2]=l>>>16&255,E[3]=l>>>24&255,r.check=N(r.check,E,4,0)),c=l=0,r.mode=4;case 4:for(;c<16;){if(0===s)break e;s--,l+=a[o++]<>8),512&r.flags&&(E[0]=255&l,E[1]=l>>>8&255,r.check=N(r.check,E,2,0)),c=l=0,r.mode=5;case 5:if(1024&r.flags){for(;c<16;){if(0===s)break e;s--,l+=a[o++]<>>8&255,r.check=N(r.check,E,2,0)),c=l=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&((f=s<(f=r.length)?s:f)&&(r.head&&(x=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),k.arraySet(r.head.extra,a,o,f,x)),512&r.flags&&(r.check=N(r.check,a,f,o)),s-=f,o+=f,r.length-=f),r.length))break e;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===s)break e;for(f=0;x=a[o+f++],r.head&&x&&r.length<65536&&(r.head.name+=String.fromCharCode(x)),x&&f>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=12;break;case 10:for(;c<32;){if(0===s)break e;s--,l+=a[o++]<>>=7&c,c-=7&c,r.mode=27;else{for(;c<3;){if(0===s)break e;s--,l+=a[o++]<>>=1)){case 0:r.mode=14;break;case 1:B=D=void 0;var B,D=r;if(G){for(U=new k.Buf32(512),j=new k.Buf32(32),B=0;B<144;)D.lens[B++]=8;for(;B<256;)D.lens[B++]=9;for(;B<280;)D.lens[B++]=7;for(;B<288;)D.lens[B++]=8;for(I(1,D.lens,0,288,U,0,D.work,{bits:9}),B=0;B<32;)D.lens[B++]=5;I(2,D.lens,0,32,j,0,D.work,{bits:5}),G=!1}if(D.lencode=U,D.lenbits=9,D.distcode=j,D.distbits=5,r.mode=20,6!==t)break;l>>>=2,c-=2;break e;case 2:r.mode=17;break;case 3:e.msg=\"invalid block type\",r.mode=30}l>>>=2,c-=2}break;case 14:for(l>>>=7&c,c-=7&c;c<32;){if(0===s)break e;s--,l+=a[o++]<>>16^65535)){e.msg=\"invalid stored block lengths\",r.mode=30;break}if(r.length=65535&l,c=l=0,r.mode=15,6===t)break e;case 15:r.mode=16;case 16:if(f=r.length){if(0===(f=A<(f=s>>=5,c-=5,r.ndist=1+(31&l),l>>>=5,c-=5,r.ncode=4+(15&l),l>>>=4,c-=4,286>>=3,c-=3}for(;r.have<19;)r.lens[T[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,P={bits:r.lenbits},C=I(0,r.lens,0,19,r.lencode,0,r.work,P),r.lenbits=P.bits,C){e.msg=\"invalid code lengths set\",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have>>16&255,v=65535&L,!((g=L>>>24)<=c);){if(0===s)break e;s--,l+=a[o++]<>>=g,c-=g,r.lens[r.have++]=v;else{if(16===v){for(S=g+2;c>>=g,c-=g,0===r.have){e.msg=\"invalid bit length repeat\",r.mode=30;break}x=r.lens[r.have-1],f=3+(3&l),l>>>=2,c-=2}else if(17===v){for(S=g+3;c>>=g)),l>>>=3,c=c-g-3}else{for(S=g+7;c>>=g)),l>>>=7,c=c-g-7}if(r.have+f>r.nlen+r.ndist){e.msg=\"invalid bit length repeat\",r.mode=30;break}for(;f--;)r.lens[r.have++]=x}}if(30===r.mode)break;if(0===r.lens[256]){e.msg=\"invalid code -- missing end-of-block\",r.mode=30;break}if(r.lenbits=9,P={bits:r.lenbits},C=I(1,r.lens,0,r.nlen,r.lencode,0,r.work,P),r.lenbits=P.bits,C){e.msg=\"invalid literal/lengths set\",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,P={bits:r.distbits},C=I(2,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,P),r.distbits=P.bits,C){e.msg=\"invalid distances set\",r.mode=30;break}if(r.mode=20,6===t)break e;case 20:r.mode=21;case 21:if(6<=s&&258<=A){e.next_out=i,e.avail_out=A,e.next_in=o,e.avail_in=s,r.hold=l,r.bits=c,F(e,u),i=e.next_out,n=e.output,A=e.avail_out,o=e.next_in,a=e.input,s=e.avail_in,l=r.hold,c=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;m=(L=r.lencode[l&(1<>>16&255,v=65535&L,!((g=L>>>24)<=c);){if(0===s)break e;s--,l+=a[o++]<>y)])>>>16&255,v=65535&L,!(y+(g=L>>>24)<=c);){if(0===s)break e;s--,l+=a[o++]<>>=y,c-=y,r.back+=y}if(l>>>=g,c-=g,r.back+=g,r.length=v,0===m){r.mode=26;break}if(32&m){r.back=-1,r.mode=12;break}if(64&m){e.msg=\"invalid literal/length code\",r.mode=30;break}r.extra=15&m,r.mode=22;case 22:if(r.extra){for(S=r.extra;c>>=r.extra,c-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;m=(L=r.distcode[l&(1<>>16&255,v=65535&L,!((g=L>>>24)<=c);){if(0===s)break e;s--,l+=a[o++]<>y)])>>>16&255,v=65535&L,!(y+(g=L>>>24)<=c);){if(0===s)break e;s--,l+=a[o++]<>>=y,c-=y,r.back+=y}if(l>>>=g,c-=g,r.back+=g,64&m){e.msg=\"invalid distance code\",r.mode=30;break}r.offset=v,r.extra=15&m,r.mode=24;case 24:if(r.extra){for(S=r.extra;c>>=r.extra,c-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg=\"invalid distance too far back\",r.mode=30;break}r.mode=25;case 25:if(0===A)break e;if(r.offset>(f=u-A)){if((f=r.offset-f)>r.whave&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break}d=f>r.wnext?(f-=r.wnext,r.wsize-f):r.wnext-f,f>r.length&&(f=r.length),h=r.window}else h=n,d=i-r.offset,f=r.length;for(A-=f=Af?(h=_[N+i[y]],T[B+i[y]]):(h=96,0),A=1<<(d=v-P),b=l=1<>P)+(l-=A)]=d<<24|h<<16|g|0,0!==l;);for(A=1<>=1;if(0!==A?E=(E&A-1)+A:E=0,y++,0==--D[v]){if(v===w)break;v=t[r+i[y]]}if(x>>7)]}function o(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function C(e,t,r){e.bi_valid>a-r?(e.bi_buf|=t<>a-e.bi_valid,e.bi_valid+=r-a):(e.bi_buf|=t<>>=1,r<<=1,0<--t;);return r>>>1}function L(e,t,r){for(var a,n=new Array(16),o=0,i=1;i<=15;i++)n[i]=o=o+r[i-1]<<1;for(a=0;a<=t;a++){var s=e[2*a+1];0!==s&&(e[2*a]=S(n[s]++,s))}}function E(e){for(var t=0;t<286;t++)e.dyn_ltree[2*t]=0;for(t=0;t<30;t++)e.dyn_dtree[2*t]=0;for(t=0;t<19;t++)e.bl_tree[2*t]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.last_lit=e.matches=0}function T(e){8>1;1<=r;r--)B(e,o,r);for(n=A;r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],B(e,o,1),a=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=a,o[2*n]=o[2*r]+o[2*a],e.depth[n]=(e.depth[r]>=e.depth[a]?e.depth[r]:e.depth[a])+1,o[2*r+1]=o[2*a+1]=n,e.heap[1]=n++,B(e,o,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1];for(var c,p,u,f,d,h=e,g=t.dyn_tree,m=t.max_code,v=t.stat_desc.static_tree,y=t.stat_desc.has_stree,b=t.stat_desc.extra_bits,w=t.stat_desc.extra_base,x=t.stat_desc.max_length,C=0,P=0;P<=15;P++)h.bl_count[P]=0;for(g[2*h.heap[h.heap_max]+1]=0,c=h.heap_max+1;c<573;c++)x<(P=g[2*g[2*(p=h.heap[c])+1]+1]+1)&&(P=x,C++),g[2*p+1]=P,m>=7;i<30;i++)for(y[i]=n<<7,t=0;t<1<{for(var t=4093624447,r=0;r<=31;r++,t>>>=1)if(1&t&&0!==e.dyn_ltree[2*r])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(r=32;r<256;r++)if(0!==e.dyn_ltree[2*r])return 1;return 0})(e)),k(e,e.l_desc),k(e,e.d_desc),s=(e=>{var t;for(_(e,e.dyn_ltree,e.l_desc.max_code),_(e,e.dyn_dtree,e.d_desc.max_code),k(e,e.bl_desc),t=18;3<=t&&0===e.bl_tree[2*c[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t})(e),(o=e.static_len+3+7>>>3)<=(n=e.opt_len+3+7>>>3)&&(n=o)):n=o=r+5,r+4<=n&&-1!==t)I(e,t,r,a);else if(4===e.strategy||o===n)C(e,2+(a?1:0),3),D(e,p,u);else{C(e,4+(a?1:0),3);var A=e,l=(t=e.l_desc.max_code+1,r=e.d_desc.max_code+1,s+1);for(C(A,t-257,5),C(A,r-1,5),C(A,l-4,4),i=0;i>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(d[r]+256+1)]++,e.dyn_dtree[2*x(t)]++),e.last_lit===e.lit_bufsize-1},t._tr_align=function(e){C(e,2,3),P(e,256,p),16===(e=e).bi_valid?(o(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):8<=e.bi_valid&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}},{\"../utils/common\":41}],53:[function(e,t,r){t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,r){!function(e){function n(e){delete c[e]}function o(e){if(p)setTimeout(o,0,e);else{var t=c[e];if(t){p=!0;try{var r=t.callback,a=t.args;switch(a.length){case 0:r();break;case 1:r(a[0]);break;case 2:r(a[0],a[1]);break;case 3:r(a[0],a[1],a[2]);break;default:r.apply(i,a)}}finally{n(e),p=!1}}}}function t(e){e.source===r&&\"string\"==typeof e.data&&0===e.data.indexOf(A)&&o(+e.data.slice(A.length))}var r,i,a,s,A,l,c,p,u,f;(r=\"undefined\"==typeof self?void 0===e?this:e:self).setImmediate||(l=1,p=!(c={}),u=r.document,e=(e=Object.getPrototypeOf&&Object.getPrototypeOf(r))&&e.setTimeout?e:r,f=\"[object process]\"==={}.toString.call(r.process)?function(e){process.nextTick(function(){o(e)})}:(()=>{var e,t;if(r.postMessage&&!r.importScripts)return e=!0,t=r.onmessage,r.onmessage=function(){e=!1},r.postMessage(\"\",\"*\"),r.onmessage=t,e})()?(A=\"setImmediate$\"+Math.random()+\"$\",r.addEventListener?r.addEventListener(\"message\",t,!1):r.attachEvent(\"onmessage\",t),function(e){r.postMessage(A+e,\"*\")}):r.MessageChannel?((s=new MessageChannel).port1.onmessage=function(e){o(e.data)},function(e){s.port2.postMessage(e)}):u&&\"onreadystatechange\"in u.createElement(\"script\")?(a=u.documentElement,function(e){var t=u.createElement(\"script\");t.onreadystatechange=function(){o(e),t.onreadystatechange=null,a.removeChild(t),t=null},a.appendChild(t)}):function(e){setTimeout(o,0,e)},e.setImmediate=function(e){\"function\"!=typeof e&&(e=new Function(\"\"+e));for(var t=new Array(arguments.length-1),r=0;r{function e(e,t,r){if(this instanceof a){switch(arguments.length){case 0:return new a;case 1:return new a(e);case 2:return new a(e,t)}return new a(e,t,r)}return a.apply(this,arguments)}return e[w]=a[w],e})(o):l&&\"function\"==typeof o?v(Function.call,o):o,l&&((u.virtual||(u.virtual={}))[a]=o,e&h.R)&&f&&!f[a]&&y(f,a,o))}var g=e(24),m=e(18),v=e(19),y=e(26),b=e(25),w=\"prototype\";h.F=1,h.G=2,h.S=4,h.P=8,h.B=16,h.W=32,h.U=64,h.R=128,t.exports=h},{18:18,19:19,24:24,25:25,26:26}],23:[function(e,t,r){t.exports=function(e){try{return!!e()}catch(e){return!0}}},{}],24:[function(e,t,r){t=t.exports=\"undefined\"!=typeof window&&window.Math==Math?window:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")();\"number\"==typeof __g&&(__g=t)},{}],25:[function(e,t,r){var a={}.hasOwnProperty;t.exports=function(e,t){return a.call(e,t)}},{}],26:[function(e,t,r){var a=e(29),n=e(30);t.exports=e(20)?function(e,t,r){return a.f(e,t,n(1,r))}:function(e,t,r){return e[t]=r,e}},{20:20,29:29,30:30}],27:[function(e,t,r){t.exports=!e(20)&&!e(23)(function(){return 7!=Object.defineProperty(e(21)(\"div\"),\"a\",{get:function(){return 7}}).a})},{20:20,21:21,23:23}],28:[function(e,t,r){t.exports=function(e){return\"object\"==typeof e?null!==e:\"function\"==typeof e}},{}],29:[function(e,t,r){var a=e(17),n=e(27),o=e(31),i=Object.defineProperty;r.f=e(20)?Object.defineProperty:function(e,t,r){if(a(e),t=o(t,!0),a(r),n)try{return i(e,t,r)}catch(e){}if(\"get\"in r||\"set\"in r)throw TypeError(\"Accessors not supported!\");return\"value\"in r&&(e[t]=r.value),e}},{17:17,20:20,27:27,31:31}],30:[function(e,t,r){t.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},{}],31:[function(e,t,r){var n=e(28);t.exports=function(e,t){if(!n(e))return e;var r,a;if(t&&\"function\"==typeof(r=e.toString)&&!n(a=r.call(e))||\"function\"==typeof(r=e.valueOf)&&!n(a=r.call(e))||!t&&\"function\"==typeof(r=e.toString)&&!n(a=r.call(e)))return a;throw TypeError(\"Can't convert object to primitive value\")}},{28:28}],32:[function(e,t,r){var a=e(22);a(a.G,{global:e(24)})},{22:22,24:24}],33:[function(e,t,r){arguments[4][16][0].apply(r,arguments)},{16:16}],34:[function(e,t,r){var a=e(48);t.exports=function(e,t){if(\"number\"!=typeof e&&\"Number\"!=a(e))throw TypeError(t);return+e}},{48:48}],35:[function(e,t,r){var a=e(152)(\"unscopables\"),n=Array.prototype;null==n[a]&&e(72)(n,a,{}),t.exports=function(e){n[a][e]=!0}},{152:152,72:72}],36:[function(e,t,r){var a=e(129)(!0);t.exports=function(e,t,r){return t+(r?a(e,t).length:1)}},{129:129}],37:[function(e,t,r){t.exports=function(e,t,r,a){if(!(e instanceof t)||void 0!==a&&a in e)throw TypeError(r+\": incorrect invocation!\");return e}},{}],38:[function(e,t,r){arguments[4][17][0].apply(r,arguments)},{17:17,81:81}],39:[function(e,t,r){var A=e(142),l=e(137),c=e(141);t.exports=[].copyWithin||function(e,t){var r=A(this),a=c(r.length),n=l(e,a),o=l(t,a),e=2{try{return e[t]}catch(e){}})(e=Object(e),n))?t:o?a(e):\"Object\"==(t=a(e))&&\"function\"==typeof e.callee?\"Arguments\":t}},{152:152,48:48}],48:[function(e,t,r){var a={}.toString;t.exports=function(e){return a.call(e).slice(8,-1)}},{}],49:[function(e,t,r){function i(e,t){var r,a=d(t);if(\"F\"!==a)return e._i[a];for(r=e._f;r;r=r.n)if(r.k==t)return r}var s=e(99).f,A=e(98),l=e(117),c=e(54),p=e(37),u=e(68),a=e(85),n=e(87),o=e(123),f=e(58),d=e(94).fastKey,h=e(149),g=f?\"_s\":\"size\";t.exports={getConstructor:function(e,n,r,a){var o=e(function(e,t){p(e,o,n,\"_i\"),e._t=n,e._i=A(null),e._f=void 0,e._l=void 0,e[g]=0,null!=t&&u(t,r,e[a],e)});return l(o.prototype,{clear:function(){for(var e=h(this,n),t=e._i,r=e._f;r;r=r.n)r.r=!0,r.p&&(r.p=r.p.n=void 0),delete t[r.i];e._f=e._l=void 0,e[g]=0},delete:function(e){var t,r,a=h(this,n),e=i(a,e);return e&&(t=e.n,r=e.p,delete a._i[e.i],e.r=!0,r&&(r.n=t),t&&(t.p=r),a._f==e&&(a._f=t),a._l==e&&(a._l=r),a[g]--),!!e},forEach:function(e){h(this,n);for(var t,r=c(e,1i;)o.call(e,a=n[i++])&&t.push(a);return t}},{104:104,107:107,108:108}],62:[function(e,t,r){function f(e,t,r){var a,n,o,i=e&f.F,s=e&f.G,A=e&f.P,l=e&f.B,c=s?d:e&f.S?d[t]||(d[t]={}):(d[t]||{})[y],p=s?h:h[t]||(h[t]={}),u=p[y]||(p[y]={});for(a in r=s?t:r)n=((o=!i&&c&&void 0!==c[a])?c:r)[a],o=l&&o?v(n,d):A&&\"function\"==typeof n?v(Function.call,n):n,c&&m(c,a,n,e&f.U),p[a]!=n&&g(p,a,o),A&&u[a]!=n&&(u[a]=n)}var d=e(70),h=e(52),g=e(72),m=e(118),v=e(54),y=\"prototype\";d.core=h,f.F=1,f.G=2,f.S=4,f.P=8,f.B=16,f.W=32,f.U=64,f.R=128,t.exports=f},{118:118,52:52,54:54,70:70,72:72}],63:[function(e,t,r){var a=e(152)(\"match\");t.exports=function(t){var r=/./;try{\"/./\"[t](r)}catch(e){try{return r[a]=!1,!\"/./\"[t](r)}catch(e){}}return!0}},{152:152}],64:[function(e,t,r){arguments[4][23][0].apply(r,arguments)},{23:23}],65:[function(e,t,r){e(248);var a,A=e(118),l=e(72),c=e(64),p=e(57),u=e(152),f=e(120),d=u(\"species\"),h=!c(function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:\"7\"},e},\"7\"!==\"\".replace(e,\"$
\")}),g=(a=(e=/(?:)/).exec,e.exec=function(){return a.apply(this,arguments)},2===(e=\"ab\".split(e)).length&&\"a\"===e[0]&&\"b\"===e[1]);t.exports=function(r,e,t){var o,a,n=u(r),i=!c(function(){var e={};return e[n]=function(){return 7},7!=\"\"[r](e)}),s=i?!c(function(){var e=!1,t=/a/;return t.exec=function(){return e=!0,null},\"split\"===r&&(t.constructor={},t.constructor[d]=function(){return t}),t[n](\"\"),!e}):void 0;i&&s&&(\"replace\"!==r||h)&&(\"split\"!==r||g)||(o=/./[n],t=(s=t(p,n,\"\"[r],function(e,t,r,a,n){return t.exec===f?i&&!n?{done:!0,value:o.call(t,r,a)}:{done:!0,value:e.call(r,t,a)}:{done:!1}}))[0],a=s[1],A(String.prototype,r,t),l(RegExp.prototype,n,2==e?function(e,t){return a.call(e,this,t)}:function(e){return a.call(e,this)}))}},{118:118,120:120,152:152,248:248,57:57,64:64,72:72}],66:[function(e,t,r){var a=e(38);t.exports=function(){var e=a(this),t=\"\";return e.global&&(t+=\"g\"),e.ignoreCase&&(t+=\"i\"),e.multiline&&(t+=\"m\"),e.unicode&&(t+=\"u\"),e.sticky&&(t+=\"y\"),t}},{38:38}],67:[function(e,t,r){var d=e(79),h=e(81),g=e(141),m=e(54),v=e(152)(\"isConcatSpreadable\");t.exports=function e(t,r,a,n,o,i,s,A){for(var l,c,p=o,u=0,f=!!s&&m(s,A,3);udocument.F=Object<\\/script>\"),e.close(),l=e.F;t--;)delete l[A][i[t]];return l()};e.exports=Object.create||function(e,t){var r;return null!==e?(a[A]=n(e),r=new a,a[A]=null,r[s]=e):r=l(),void 0===t?r:o(r,t)}},{100:100,125:125,38:38,59:59,60:60,73:73}],99:[function(e,t,r){arguments[4][29][0].apply(r,arguments)},{143:143,29:29,38:38,58:58,74:74}],100:[function(e,t,r){var i=e(99),s=e(38),A=e(107);t.exports=e(58)?Object.defineProperties:function(e,t){s(e);for(var r,a=A(t),n=a.length,o=0;on;)!i(a,r=t[n++])||~A(o,r)||o.push(r);return o}},{125:125,140:140,41:41,71:71}],107:[function(e,t,r){var a=e(106),n=e(60);t.exports=Object.keys||function(e){return a(e,n)}},{106:106,60:60}],108:[function(e,t,r){r.f={}.propertyIsEnumerable},{}],109:[function(e,t,r){var n=e(62),o=e(52),i=e(64);t.exports=function(e,t){var r=(o.Object||{})[e]||Object[e],a={};a[e]=t(r),n(n.S+n.F*i(function(){r(1)}),\"Object\",a)}},{52:52,62:62,64:64}],110:[function(e,t,r){var A=e(58),l=e(107),c=e(140),p=e(108).f;t.exports=function(s){return function(e){for(var t,r=c(e),a=l(r),n=a.length,o=0,i=[];o>>0||(o.test(e)?16:10))}:a},{134:134,135:135,70:70}],114:[function(e,t,r){t.exports=function(e){try{return{e:!1,v:e()}}catch(e){return{e:!0,v:e}}}},{}],115:[function(e,t,r){var a=e(38),n=e(81),o=e(96);t.exports=function(e,t){return a(e),n(t)&&t.constructor===e?t:((0,(e=o.f(e)).resolve)(t),e.promise)}},{38:38,81:81,96:96}],116:[function(e,t,r){arguments[4][30][0].apply(r,arguments)},{30:30}],117:[function(e,t,r){var n=e(118);t.exports=function(e,t,r){for(var a in t)n(e,a,t[a],r);return e}},{118:118}],118:[function(e,t,r){var o=e(70),i=e(72),s=e(71),A=e(147)(\"src\"),a=e(69),n=\"toString\",l=(\"\"+a).split(n);e(52).inspectSource=function(e){return a.call(e)},(t.exports=function(e,t,r,a){var n=\"function\"==typeof r;n&&!s(r,\"name\")&&i(r,\"name\",t),e[t]!==r&&(n&&!s(r,A)&&i(r,A,e[t]?\"\"+e[t]:l.join(String(t))),e===o?e[t]=r:a?e[t]?e[t]=r:i(e,t,r):(delete e[t],i(e,t,r)))})(Function.prototype,n,function(){return\"function\"==typeof this&&this[A]||a.call(this)})},{147:147,52:52,69:69,70:70,71:71,72:72}],119:[function(e,t,r){var a=e(47),n=RegExp.prototype.exec;t.exports=function(e,t){var r=e.exec;if(\"function\"==typeof r){r=r.call(e,t);if(\"object\"!=typeof r)throw new TypeError(\"RegExp exec method returned something other than an Object or null\");return r}if(\"RegExp\"!==a(e))throw new TypeError(\"RegExp#exec called on incompatible receiver\");return n.call(e,t)}},{47:47}],120:[function(e,t,r){var a,n,i=e(66),s=RegExp.prototype.exec,A=String.prototype.replace,e=s,l=\"lastIndex\",c=(n=/b*/g,s.call(a=/a/,\"a\"),s.call(n,\"a\"),0!==a[l]||0!==n[l]),p=void 0!==/()??/.exec(\"\")[1];t.exports=e=c||p?function(e){var t,r,a,n,o=this;return p&&(r=new RegExp(\"^\"+o.source+\"$(?!\\\\s)\",i.call(o))),c&&(t=o[l]),a=s.call(o,e),c&&a&&(o[l]=o.global?a.index+a[0].length:t),p&&a&&1{try{(a=t(54)(Function.call,t(101).f(Object.prototype,\"__proto__\").set,2))(e,[]),r=!(e instanceof Array)}catch(e){r=!0}return function(e,t){return n(e,t),r?e.__proto__=t:a(e,t),e}})({},!1):void 0),check:n}},{101:101,38:38,54:54,81:81}],123:[function(e,t,r){var a=e(70),n=e(99),o=e(58),i=e(152)(\"species\");t.exports=function(e){e=a[e];o&&e&&!e[i]&&n.f(e,i,{configurable:!0,get:function(){return this}})}},{152:152,58:58,70:70,99:99}],124:[function(e,t,r){var a=e(99).f,n=e(71),o=e(152)(\"toStringTag\");t.exports=function(e,t,r){e&&!n(e=r?e:e.prototype,o)&&a(e,o,{configurable:!0,value:t})}},{152:152,71:71,99:99}],125:[function(e,t,r){var a=e(126)(\"keys\"),n=e(147);t.exports=function(e){return a[e]||(a[e]=n(e))}},{126:126,147:147}],126:[function(e,t,r){var a=e(52),n=e(70),o=\"__core-js_shared__\",i=n[o]||(n[o]={});(t.exports=function(e,t){return i[e]||(i[e]=void 0!==t?t:{})})(\"versions\",[]).push({version:a.version,mode:e(89)?\"pure\":\"global\",copyright:\"© 2019 Denis Pushkarev (zloirock.ru)\"})},{52:52,70:70,89:89}],127:[function(e,t,r){var a=e(38),n=e(33),o=e(152)(\"species\");t.exports=function(e,t){var e=a(e).constructor;return void 0===e||null==(e=a(e)[o])?t:n(e)}},{152:152,33:33,38:38}],128:[function(e,t,r){var a=e(64);t.exports=function(e,t){return!!e&&a(function(){t?e.call(null,function(){},1):e.call(null)})}},{64:64}],129:[function(e,t,r){var o=e(139),i=e(57);t.exports=function(n){return function(e,t){var r,e=String(i(e)),t=o(t),a=e.length;return t<0||a<=t?n?\"\":void 0:(r=e.charCodeAt(t))<55296||56319\"+e+\"\"}var n=e(62),o=e(64),i=e(57),s=/\"/g;t.exports=function(t,e){var r={};r[t]=e(a),n(n.P+n.F*o(function(){var e=\"\"[t]('\"');return e!==e.toLowerCase()||3t&&(n=n.slice(0,t)),a?n+e:e+n)}},{133:133,141:141,57:57}],133:[function(e,t,r){var n=e(139),o=e(57);t.exports=function(e){var t=String(o(this)),r=\"\",a=n(e);if(a<0||a==1/0)throw RangeError(\"Count can't be negative\");for(;0>>=1)&&(t+=t))1&a&&(r+=t);return r}},{139:139,57:57}],134:[function(e,t,r){function a(e,t,r){var a={},n=i(function(){return!!s[e]()||\"​…\"!=\"​…\"[e]()}),t=a[e]=n?t(c):s[e];r&&(a[r]=t),o(o.P+o.F*n,\"String\",a)}var o=e(62),n=e(57),i=e(64),s=e(135),e=\"[\"+s+\"]\",A=RegExp(\"^\"+e+e+\"*\"),l=RegExp(e+e+\"*$\"),c=a.trim=function(e,t){return e=String(n(e)),1&t&&(e=e.replace(A,\"\")),e=2&t?e.replace(l,\"\"):e};t.exports=a},{135:135,57:57,62:62,64:64}],135:[function(e,t,r){t.exports=\"\\t\\n\\v\\f\\r   ᠎              \\u2028\\u2029\\ufeff\"},{}],136:[function(e,t,r){function a(){var e,t=+this;m.hasOwnProperty(t)&&(e=m[t],delete m[t],e())}function n(e){a.call(e.data)}var o,i=e(54),s=e(76),A=e(73),l=e(59),c=e(70),p=c.process,u=c.setImmediate,f=c.clearImmediate,d=c.MessageChannel,h=c.Dispatch,g=0,m={},v=\"onreadystatechange\";u&&f||(u=function(e){for(var t=[],r=1;r{w(e,a,{get:function(){return(e=this._d).v[u](a*l+e.o,ke);var e},set:function(e){var t=a,r=this._d;c&&(e=(e=Math.round(e))<0?0:255>1,l=23===t?w(2,-24)-w(2,-77):0,c=0,p=e<0||0===e&&1/e<0?1:0;for((e=G(e))!=e||e===y?(n=e!=e?1:0,a=r):(a=Q(W(e)/Y),e*(o=w(2,-a))<1&&(a--,o*=2),2<=(e+=1<=a+A?l/o:l*w(2,1-A))*o&&(a++,o/=2),r<=a+A?(n=0,a=r):1<=a+A?(n=(e*o-1)*w(2,t),a+=A):(n=e*w(2,A-1)*w(2,t),a=0));8<=t;i[c++]=255&n,n/=256,t-=8);for(a=a<>1,s=n-7,A=r-1,n=e[A--],l=127&n;for(n>>=7;0>=-s,s+=t;0>8&255]}function D(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]}function X(e){return S(e,52,8)}function H(e){return S(e,23,4)}function k(e,t,r){U(e[f],t,{get:function(){return this[r]}})}function _(e,t,r,a){r=c(+r);if(r+t>e[C])throw v(d);var n=e[x]._b,r=r+e[P],e=n.slice(r,r+t);return a?e:e.reverse()}function N(e,t,r,a,n,o){r=c(+r);if(r+t>e[C])throw v(d);for(var i=e[x]._b,s=r+e[P],A=a(+n),l=0;lV;)(F=I[V++])in h||o(h,F,b[F]);O||(s.constructor=h)}var l=new g(new h(2)),q=g[f].setInt8;l.setInt8(0,2147483648),l.setInt8(1,2147483649),!l.getInt8(0)&&l.getInt8(1)||i(g[f],{setInt8:function(e,t){q.call(this,e,t<<24>>24)},setUint8:function(e,t){q.call(this,e,t<<24>>24)}},!0)}else h=function(e){A(this,h,p);e=c(e);this._b=j.call(new Array(e),0),this[C]=e},g=function(e,t,r){A(this,g,u),A(e,h,u);var a=e[C],t=M(t);if(t<0||a>24},getUint8:function(e){return _(this,1,e)[0]},getInt16:function(e){e=_(this,2,e,arguments[1]);return(e[1]<<8|e[0])<<16>>16},getUint16:function(e){e=_(this,2,e,arguments[1]);return e[1]<<8|e[0]},getInt32:function(e){return E(_(this,4,e,arguments[1]))},getUint32:function(e){return E(_(this,4,e,arguments[1]))>>>0},getFloat32:function(e){return L(_(this,4,e,arguments[1]),23,4)},getFloat64:function(e){return L(_(this,8,e,arguments[1]),52,8)},setInt8:function(e,t){N(this,1,e,T,t)},setUint8:function(e,t){N(this,1,e,T,t)},setInt16:function(e,t){N(this,2,e,B,t,arguments[2])},setUint16:function(e,t){N(this,2,e,B,t,arguments[2])},setInt32:function(e,t){N(this,4,e,D,t,arguments[2])},setUint32:function(e,t){N(this,4,e,D,t,arguments[2])},setFloat32:function(e,t){N(this,4,e,H,t,arguments[2])},setFloat64:function(e,t){N(this,8,e,X,t,arguments[2])}});e(h,p),e(g,u),o(g[f],n.VIEW,!0),t[p]=h,t[u]=g},{103:103,117:117,124:124,138:138,139:139,141:141,146:146,37:37,40:40,58:58,64:64,70:70,72:72,89:89,99:99}],146:[function(e,t,r){for(var a,n=e(70),o=e(72),e=e(147),i=e(\"typed_array\"),s=e(\"view\"),e=!(!n.ArrayBuffer||!n.DataView),A=e,l=0,c=\"Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array\".split(\",\");l<9;)(a=n[c[l++]])?(o(a.prototype,i,!0),o(a.prototype,s,!0)):A=!1;t.exports={ABV:e,CONSTR:A,TYPED:i,VIEW:s}},{147:147,70:70,72:72}],147:[function(e,t,r){var a=0,n=Math.random();t.exports=function(e){return\"Symbol(\".concat(void 0===e?\"\":e,\")_\",(++a+n).toString(36))}},{}],148:[function(e,t,r){e=e(70).navigator;t.exports=e&&e.userAgent||\"\"},{70:70}],149:[function(e,t,r){var a=e(81);t.exports=function(e,t){if(a(e)&&e._t===t)return e;throw TypeError(\"Incompatible receiver, \"+t+\" required!\")}},{81:81}],150:[function(e,t,r){var a=e(70),n=e(52),o=e(89),i=e(151),s=e(99).f;t.exports=function(e){var t=n.Symbol||(n.Symbol=!o&&a.Symbol||{});\"_\"==e.charAt(0)||e in t||s(t,e,{value:i.f(e)})}},{151:151,52:52,70:70,89:89,99:99}],151:[function(e,t,r){r.f=e(152)},{152:152}],152:[function(e,t,r){var a=e(126)(\"wks\"),n=e(147),o=e(70).Symbol,i=\"function\"==typeof o;(t.exports=function(e){return a[e]||(a[e]=i&&o[e]||(i?o:n)(\"Symbol.\"+e))}).store=a},{126:126,147:147,70:70}],153:[function(e,t,r){var a=e(47),n=e(152)(\"iterator\"),o=e(88);t.exports=e(52).getIteratorMethod=function(e){if(null!=e)return e[n]||e[\"@@iterator\"]||o[a(e)]}},{152:152,47:47,52:52,88:88}],154:[function(e,t,r){var a=e(62);a(a.P,\"Array\",{copyWithin:e(39)}),e(35)(\"copyWithin\")},{35:35,39:39,62:62}],155:[function(e,t,r){var a=e(62),n=e(42)(4);a(a.P+a.F*!e(128)([].every,!0),\"Array\",{every:function(e){return n(this,e,arguments[1])}})},{128:128,42:42,62:62}],156:[function(e,t,r){var a=e(62);a(a.P,\"Array\",{fill:e(40)}),e(35)(\"fill\")},{35:35,40:40,62:62}],157:[function(e,t,r){var a=e(62),n=e(42)(2);a(a.P+a.F*!e(128)([].filter,!0),\"Array\",{filter:function(e){return n(this,e,arguments[1])}})},{128:128,42:42,62:62}],158:[function(e,t,r){var a=e(62),n=e(42)(6),o=\"findIndex\",i=!0;o in[]&&Array(1)[o](function(){i=!1}),a(a.P+a.F*i,\"Array\",{findIndex:function(e){return n(this,e,1=e.length?(this._t=void 0,n(1)):n(0,\"keys\"==t?r:\"values\"==t?e[r]:[r,e[r]])},\"values\"),o.Arguments=o.Array,a(\"keys\"),a(\"values\"),a(\"entries\")},{140:140,35:35,85:85,87:87,88:88}],165:[function(e,t,r){var a=e(62),n=e(140),o=[].join;a(a.P+a.F*(e(77)!=Object||!e(128)(o)),\"Array\",{join:function(e){return o.call(n(this),void 0===e?\",\":e)}})},{128:128,140:140,62:62,77:77}],166:[function(e,t,r){var a=e(62),n=e(140),o=e(139),i=e(141),s=[].lastIndexOf,A=!!s&&1/[1].lastIndexOf(1,-0)<0;a(a.P+a.F*(A||!e(128)(s)),\"Array\",{lastIndexOf:function(e){if(A)return s.apply(this,arguments)||0;var t=n(this),r=i(t.length),a=r-1;for((a=1>>=0)?31-Math.floor(Math.log(e+.5)*Math.LOG2E):32}})},{62:62}],189:[function(e,t,r){var e=e(62),a=Math.exp;e(e.S,\"Math\",{cosh:function(e){return(a(e=+e)+a(-e))/2}})},{62:62}],190:[function(e,t,r){var a=e(62),e=e(90);a(a.S+a.F*(e!=Math.expm1),\"Math\",{expm1:e})},{62:62,90:90}],191:[function(e,t,r){var a=e(62);a(a.S,\"Math\",{fround:e(91)})},{62:62,91:91}],192:[function(e,t,r){var e=e(62),A=Math.abs;e(e.S,\"Math\",{hypot:function(e,t){for(var r,a,n=0,o=0,i=arguments.length,s=0;o>>16)*a+r*(65535&t>>>16)<<16>>>0)}})},{62:62,64:64}],194:[function(e,t,r){e=e(62);e(e.S,\"Math\",{log10:function(e){return Math.log(e)*Math.LOG10E}})},{62:62}],195:[function(e,t,r){var a=e(62);a(a.S,\"Math\",{log1p:e(92)})},{62:62,92:92}],196:[function(e,t,r){e=e(62);e(e.S,\"Math\",{log2:function(e){return Math.log(e)/Math.LN2}})},{62:62}],197:[function(e,t,r){var a=e(62);a(a.S,\"Math\",{sign:e(93)})},{62:62,93:93}],198:[function(e,t,r){var a=e(62),n=e(90),o=Math.exp;a(a.S+a.F*e(64)(function(){return-2e-17!=!Math.sinh(-2e-17)}),\"Math\",{sinh:function(e){return Math.abs(e=+e)<1?(n(e)-n(-e))/2:(o(e-1)-o(-e-1))*(Math.E/2)}})},{62:62,64:64,90:90}],199:[function(e,t,r){var a=e(62),n=e(90),o=Math.exp;a(a.S,\"Math\",{tanh:function(e){var t=n(e=+e),r=n(-e);return t==1/0?1:r==1/0?-1:(t-r)/(o(e)+o(-e))}})},{62:62,90:90}],200:[function(e,t,r){e=e(62);e(e.S,\"Math\",{trunc:function(e){return(0x;x++)o(h,y=w[x])&&!o(b,y)&&u(b,y,p(h,y));(b.prototype=g).constructor=b,e(118)(n,d,b)}},{101:101,103:103,118:118,134:134,143:143,48:48,58:58,64:64,70:70,71:71,75:75,98:98,99:99}],202:[function(e,t,r){e=e(62);e(e.S,\"Number\",{EPSILON:Math.pow(2,-52)})},{62:62}],203:[function(e,t,r){var a=e(62),n=e(70).isFinite;a(a.S,\"Number\",{isFinite:function(e){return\"number\"==typeof e&&n(e)}})},{62:62,70:70}],204:[function(e,t,r){var a=e(62);a(a.S,\"Number\",{isInteger:e(80)})},{62:62,80:80}],205:[function(e,t,r){e=e(62);e(e.S,\"Number\",{isNaN:function(e){return e!=e}})},{62:62}],206:[function(e,t,r){var a=e(62),n=e(80),o=Math.abs;a(a.S,\"Number\",{isSafeInteger:function(e){return n(e)&&o(e)<=9007199254740991}})},{62:62,80:80}],207:[function(e,t,r){e=e(62);e(e.S,\"Number\",{MAX_SAFE_INTEGER:9007199254740991})},{62:62}],208:[function(e,t,r){e=e(62);e(e.S,\"Number\",{MIN_SAFE_INTEGER:-9007199254740991})},{62:62}],209:[function(e,t,r){var a=e(62),e=e(112);a(a.S+a.F*(Number.parseFloat!=e),\"Number\",{parseFloat:e})},{112:112,62:62}],210:[function(e,t,r){var a=e(62),e=e(113);a(a.S+a.F*(Number.parseInt!=e),\"Number\",{parseInt:e})},{113:113,62:62}],211:[function(e,t,r){function s(e,t){for(var r=-1,a=t;++r<6;)i[r]=(a+=e*i[r])%1e7,a=o(a/1e7)}function A(e){for(var t=6,r=0;0<=--t;)i[t]=o((r+=i[t])/e),r=r%e*1e7}function l(){for(var e,t=6,r=\"\";0<=--t;)\"\"===r&&0!==t&&0===i[t]||(e=String(i[t]),r=\"\"===r?e:r+f.call(\"0\",7-e.length)+e);return r}function c(e,t,r){return 0===t?r:t%2==1?c(e,t-1,r*e):c(e*e,t/2,r)}var a=e(62),p=e(139),u=e(34),f=e(133),n=1..toFixed,o=Math.floor,i=[0,0,0,0,0,0],d=\"Number.toFixed: incorrect invocation!\";a(a.P+a.F*(!!n&&(\"0.000\"!==8e-5.toFixed(3)||\"1\"!==.9.toFixed(0)||\"1.25\"!==1.255.toFixed(2)||\"1000000000000000128\"!==0xde0b6b3a7640080.toFixed(0))||!e(64)(function(){n.call({})})),\"Number\",{toFixed:function(e){var t,r,a,n=u(this,d),e=p(e),o=\"\",i=\"0\";if(e<0||20{for(var e=0,t=n*c(2,69,1);4096<=t;)e+=12,t/=4096;for(;2<=t;)e+=1,t/=2;return e})()-69)<0?n*c(2,-t,1):n/c(2,t,1),a*=4503599627370496,0<(t=52-t)){for(s(0,a),r=e;7<=r;)s(1e7,0),r-=7;for(s(c(10,r,1),0),r=t-1;23<=r;)A(1<<23),r-=23;A(1<r;){a=void 0;n=void 0;o=void 0;i=void 0;s=void 0;A=void 0;l=void 0;c=void 0;var a=f[r++];var n,o,i,s=t?a.ok:a.fail,A=a.resolve,l=a.reject,c=a.domain;try{s?(t||(2==p._h&&g(p),p._h=1),!0===s?n=e:(c&&c.enter(),n=s(e),c&&(c.exit(),i=!0)),n===a.promise?l(T(\"Promise-chain cycle\")):(o=d(n))?o.call(n,A,l):A(n)):l(e)}catch(a){c&&!i&&c.exit(),l(a)}}p._c=[],p._n=!1,u&&!p._h&&h(p)}))}function o(e){var t=this;t._d||(t._d=!0,(t=t._w||t)._v=e,t._s=2,t._a||(t._a=t._c.slice()),n(t,!0))}function h(n){w.call(c,function(){var e,t,r=n._v,a=F(n);if(a&&(e=P(function(){_?B.emit(\"unhandledRejection\",r,n):(t=c.onunhandledrejection)?t({promise:n,reason:r}):(t=c.console)&&t.error&&t.error(\"Unhandled promise rejection\",r)}),n._h=_||F(n)?2:1),n._a=void 0,a&&e.e)throw e.v})}function g(t){w.call(c,function(){var e;_?B.emit(\"rejectionHandled\",t):(e=c.onrejectionhandled)&&e({promise:t,reason:t._v})})}var t,i,s,A,l=r(89),c=r(70),p=r(54),e=r(47),u=r(62),f=r(81),m=r(33),v=r(37),y=r(68),b=r(127),w=r(136).set,x=r(95)(),C=r(96),P=r(114),S=r(148),L=r(115),E=\"Promise\",T=c.TypeError,B=c.process,D=B&&B.versions,M=D&&D.v8||\"\",k=c[E],_=\"process\"==e(B),N=i=C.f,D=!!(()=>{try{var e=k.resolve(1),t=(e.constructor={})[r(152)(\"species\")]=function(e){e(a,a)};return(_||\"function\"==typeof PromiseRejectionEvent)&&e.then(a)instanceof t&&0!==M.indexOf(\"6.6\")&&-1===S.indexOf(\"Chrome/66\")}catch(e){}})(),F=function(e){return 1!==e._h&&0===(e._a||e._c).length},I=function(e){var r,a=this;if(!a._d){a._d=!0,a=a._w||a;try{if(a===e)throw T(\"Promise can't be resolved itself\");(r=d(e))?x(function(){var t={_w:a,_d:!1};try{r.call(e,p(I,t,1),p(o,t,1))}catch(e){o.call(t,e)}}):(a._v=e,a._s=1,n(a,!1))}catch(e){o.call({_w:a,_d:!1},e)}}};D||(k=function(e){v(this,k,E,\"_h\"),m(e),t.call(this);try{e(p(I,this,1),p(o,this,1))}catch(e){o.call(this,e)}},(t=function(e){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1}).prototype=r(117)(k.prototype,{then:function(e,t){var r=N(b(this,k));return r.ok=\"function\"!=typeof e||e,r.fail=\"function\"==typeof t&&t,r.domain=_?B.domain:void 0,this._c.push(r),this._a&&this._a.push(r),this._s&&n(this,!1),r.promise},catch:function(e){return this.then(void 0,e)}}),s=function(){var e=new t;this.promise=e,this.resolve=p(I,e,1),this.reject=p(o,e,1)},C.f=N=function(e){return e===k||e===A?new s:i(e)}),u(u.G+u.W+u.F*!D,{Promise:k}),r(124)(k,E),r(123)(E),A=r(52)[E],u(u.S+u.F*!D,E,{reject:function(e){var t=N(this);return(0,t.reject)(e),t.promise}}),u(u.S+u.F*(l||!D),E,{resolve:function(e){return L(l&&this===A?k:this,e)}}),u(u.S+u.F*!(D&&r(86)(function(e){k.all(e).catch(a)})),E,{all:function(e){var i=this,t=N(i),s=t.resolve,A=t.reject,r=P(function(){var a=[],n=0,o=1;y(e,!1,function(e){var t=n++,r=!1;a.push(void 0),o++,i.resolve(e).then(function(e){r||(r=!0,a[t]=e,--o)||s(a)},A)}),--o||s(a)});return r.e&&A(r.v),t.promise},race:function(e){var t=this,r=N(t),a=r.reject,n=P(function(){y(e,!1,function(e){t.resolve(e).then(r.resolve,a)})});return n.e&&a(n.v),r.promise}})},{114:114,115:115,117:117,123:123,124:124,127:127,136:136,148:148,152:152,33:33,37:37,47:47,52:52,54:54,62:62,68:68,70:70,81:81,86:86,89:89,95:95,96:96}],233:[function(e,t,r){var a=e(62),n=e(33),o=e(38),i=(e(70).Reflect||{}).apply,s=Function.apply;a(a.S+a.F*!e(64)(function(){i(function(){})}),\"Reflect\",{apply:function(e,t,r){e=n(e),r=o(r);return i?i(e,t,r):s.call(e,t,r)}})},{33:33,38:38,62:62,64:64,70:70}],234:[function(e,t,r){var a=e(62),n=e(98),o=e(33),i=e(38),s=e(81),A=e(64),l=e(46),c=(e(70).Reflect||{}).construct,p=A(function(){function e(){}return!(c(function(){},[],e)instanceof e)}),u=!A(function(){c(function(){})});a(a.S+a.F*(p||u),\"Reflect\",{construct:function(e,t){o(e),i(t);var r=arguments.length<3?e:o(arguments[2]);if(u&&!p)return c(e,t,r);if(e==r){switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3])}var a=[null];return a.push.apply(a,t),new(l.apply(e,a))}a=r.prototype,r=n(s(a)?a:Object.prototype),a=Function.apply.call(e,r,t);return s(a)?a:r}})},{33:33,38:38,46:46,62:62,64:64,70:70,81:81,98:98}],235:[function(e,t,r){var a=e(99),n=e(62),o=e(38),i=e(143);n(n.S+n.F*e(64)(function(){Reflect.defineProperty(a.f({},1,{value:1}),1,{value:2})}),\"Reflect\",{defineProperty:function(e,t,r){o(e),t=i(t,!0),o(r);try{return a.f(e,t,r),!0}catch(e){return!1}}})},{143:143,38:38,62:62,64:64,99:99}],236:[function(e,t,r){var a=e(62),n=e(101).f,o=e(38);a(a.S,\"Reflect\",{deleteProperty:function(e,t){var r=n(o(e),t);return!(r&&!r.configurable)&&delete e[t]}})},{101:101,38:38,62:62}],237:[function(e,t,r){function a(e){this._t=o(e),this._i=0;var t,r=this._k=[];for(t in e)r.push(t)}var n=e(62),o=e(38);e(84)(a,\"Object\",function(){var e,t=this._k;do{if(this._i>=t.length)return{value:void 0,done:!0}}while(!((e=t[this._i++])in this._t));return{value:e,done:!1}}),n(n.S,\"Reflect\",{enumerate:function(e){return new a(e)}})},{38:38,62:62,84:84}],238:[function(e,t,r){var a=e(101),n=e(62),o=e(38);n(n.S,\"Reflect\",{getOwnPropertyDescriptor:function(e,t){return a.f(o(e),t)}})},{101:101,38:38,62:62}],239:[function(e,t,r){var a=e(62),n=e(105),o=e(38);a(a.S,\"Reflect\",{getPrototypeOf:function(e){return n(o(e))}})},{105:105,38:38,62:62}],240:[function(e,t,r){var o=e(101),i=e(105),s=e(71),a=e(62),A=e(81),l=e(38);a(a.S,\"Reflect\",{get:function e(t,r){var a,n=arguments.length<3?t:arguments[2];return l(t)===n?t[r]:(a=o.f(t,r))?s(a,\"value\")?a.value:void 0!==a.get?a.get.call(n):void 0:A(a=i(t))?e(a,r,n):void 0}})},{101:101,105:105,38:38,62:62,71:71,81:81}],241:[function(e,t,r){e=e(62);e(e.S,\"Reflect\",{has:function(e,t){return t in e}})},{62:62}],242:[function(e,t,r){var a=e(62),n=e(38),o=Object.isExtensible;a(a.S,\"Reflect\",{isExtensible:function(e){return n(e),!o||o(e)}})},{38:38,62:62}],243:[function(e,t,r){var a=e(62);a(a.S,\"Reflect\",{ownKeys:e(111)})},{111:111,62:62}],244:[function(e,t,r){var a=e(62),n=e(38),o=Object.preventExtensions;a(a.S,\"Reflect\",{preventExtensions:function(e){n(e);try{return o&&o(e),!0}catch(e){return!1}}})},{38:38,62:62}],245:[function(e,t,r){var a=e(62),n=e(122);n&&a(a.S,\"Reflect\",{setPrototypeOf:function(e,t){n.check(e,t);try{return n.set(e,t),!0}catch(e){return!1}}})},{122:122,62:62}],246:[function(e,t,r){var i=e(99),s=e(101),A=e(105),l=e(71),a=e(62),c=e(116),p=e(38),u=e(81);a(a.S,\"Reflect\",{set:function e(t,r,a){var n=arguments.length<4?t:arguments[3],o=s.f(p(t),r);if(!o){if(u(t=A(t)))return e(t,r,a,n);o=c(0)}if(l(o,\"value\")){if(!1===o.writable||!u(n))return!1;if(t=s.f(n,r)){if(t.get||t.set||!1===t.writable)return!1;t.value=a,i.f(n,r,t)}else i.f(n,r,c(0,a));return!0}return void 0!==o.set&&(o.set.call(n,a),!0)}})},{101:101,105:105,116:116,38:38,62:62,71:71,81:81,99:99}],247:[function(e,t,r){var a=e(70),o=e(75),n=e(99).f,i=e(103).f,s=e(82),A=e(66),l=d=a.RegExp,c=d.prototype,p=/a/g,u=/a/g,f=new d(p)!==p;if(e(58)&&(!f||e(64)(function(){return u[e(152)(\"match\")]=!1,d(p)!=p||d(u)==u||\"/a/i\"!=d(p,\"i\")}))){for(var d=function(e,t){var r=this instanceof d,a=s(e),n=void 0===t;return!r&&a&&e.constructor===d&&n?e:o(f?new l(a&&!n?e.source:e,t):l((a=e instanceof d)?e.source:e,a&&n?A.call(e):t),r?this:c,d)},h=i(l),g=0;h.length>g;)(t=>{t in d||n(d,t,{configurable:!0,get:function(){return l[t]},set:function(e){l[t]=e}})})(h[g++]);(c.constructor=d).prototype=c,e(118)(a,\"RegExp\",d)}e(123)(\"RegExp\")},{103:103,118:118,123:123,152:152,58:58,64:64,66:66,70:70,75:75,82:82,99:99}],248:[function(e,t,r){var a=e(120);e(62)({target:\"RegExp\",proto:!0,forced:a!==/./.exec},{exec:a})},{120:120,62:62}],249:[function(e,t,r){e(58)&&\"g\"!=/./g.flags&&e(99).f(RegExp.prototype,\"flags\",{configurable:!0,get:e(66)})},{58:58,66:66,99:99}],250:[function(e,t,r){var c=e(38),p=e(141),u=e(36),f=e(119);e(65)(\"match\",1,function(a,n,A,l){return[function(e){var t=a(this),r=null==e?void 0:e[n];return void 0!==r?r.call(e,t):new RegExp(e)[n](String(t))},function(e){var t=l(A,e,this);if(t.done)return t.value;var r=c(e),a=String(this);if(!r.global)return f(r,a);for(var n=r.unicode,o=[],i=r.lastIndex=0;null!==(s=f(r,a));){var s=String(s[0]);\"\"===(o[i]=s)&&(r.lastIndex=u(a,p(r.lastIndex),n)),i++}return 0===i?null:o}]})},{119:119,141:141,36:36,38:38,65:65}],251:[function(e,t,r){var x=e(38),C=e(142),P=e(141),S=e(139),L=e(36),E=e(119),T=Math.max,B=Math.min,D=Math.floor,k=/\\$([$&`']|\\d\\d?|<[^>]*>)/g,_=/\\$([$&`']|\\d\\d?)/g;e(65)(\"replace\",2,function(n,o,b,w){return[function(e,t){var r=n(this),a=null==e?void 0:e[o];return void 0!==a?a.call(e,r,t):b.call(String(r),e,t)},function(e,t){var r=w(b,e,this,t);if(r.done)return r.value;var a,n=x(e),o=String(this),i=\"function\"==typeof t,s=(i||(t=String(t)),n.global);s&&(a=n.unicode,n.lastIndex=0);for(var A=[];;){var l=E(n,o);if(null===l)break;if(A.push(l),!s)break;\"\"===String(l[0])&&(n.lastIndex=L(o,P(n.lastIndex),a))}for(var c,p=\"\",u=0,f=0;f{var c=s+o.length,p=A.length,t=_;return void 0!==l&&(l=C(l),t=k),b.call(e,t,function(e,t){var r;switch(t.charAt(0)){case\"$\":return\"$\";case\"&\":return o;case\"`\":return i.slice(0,s);case\"'\":return i.slice(c);case\"<\":r=l[t.slice(1,-1)];break;default:var a,n=+t;if(0==n)return e;if(p>>0,c=new RegExp(e.source,s+\"g\");(a=u.call(c,r))&&!(A<(n=c[P])&&(i.push(r.slice(A,a.index)),1>>0;if(0==s)return[];if(0===a.length)return null===w(i,a)?[a]:[];for(var A=0,l=0,c=[];l>10),t%1024+56320))}return r.join(\"\")}})},{137:137,62:62}],266:[function(e,t,r){var a=e(62),n=e(130);a(a.P+a.F*e(63)(\"includes\"),\"String\",{includes:function(e){return!!~n(this,e,\"includes\").indexOf(e,1=e.length?{value:void 0,done:!0}:(e=a(e,t),this._i+=e.length,{value:e,done:!1})})},{129:129,85:85}],269:[function(e,t,r){e(131)(\"link\",function(t){return function(e){return t(this,\"a\",\"href\",e)}})},{131:131}],270:[function(e,t,r){var a=e(62),i=e(140),s=e(141);a(a.S,\"String\",{raw:function(e){for(var t=i(e.raw),r=s(t.length),a=arguments.length,n=[],o=0;on;)l(B,t=r[n++])||t==E||t==z||a.push(t);return a}function i(e){for(var t,r=e===k,a=Z(r?D:m(e)),n=[],o=0;a.length>o;)!l(B,t=a[o++])||r&&!l(k,t)||n.push(B[t]);return n}function s(e,t,r){return e===k&&s(D,t,r),g(e),t=v(t,!0),g(r),(l(B,t)?(r.enumerable?(l(e,E)&&e[E][t]&&(e[E][t]=!1),r=b(r,{enumerable:y(0,!1)})):(l(e,E)||x(e,E,y(1,{})),e[E][t]=!0),F):x)(e,t,r)}var A=e(70),l=e(71),c=e(58),p=e(62),M=e(118),z=e(94).KEY,u=e(64),f=e(126),d=e(124),U=e(147),h=e(152),j=e(151),G=e(150),Q=e(61),W=e(79),g=e(38),Y=e(81),X=e(142),m=e(140),v=e(143),y=e(116),b=e(98),H=e(102),V=e(101),w=e(104),q=e(99),J=e(107),K=V.f,x=q.f,Z=H.f,C=A.Symbol,P=A.JSON,S=P&&P.stringify,L=\"prototype\",E=h(\"_hidden\"),$=h(\"toPrimitive\"),ee={}.propertyIsEnumerable,T=f(\"symbol-registry\"),B=f(\"symbols\"),D=f(\"op-symbols\"),k=Object[L],f=\"function\"==typeof C&&!!w.f,_=A.QObject,N=!_||!_[L]||!_[L].findChild,F=c&&u(function(){return 7!=b(x({},\"a\",{get:function(){return x(this,\"a\",{value:7}).a}})).a})?function(e,t,r){var a=K(k,t);a&&delete k[t],x(e,t,r),a&&e!==k&&x(k,t,a)}:x,I=f&&\"symbol\"==typeof C.iterator?function(e){return\"symbol\"==typeof e}:function(e){return e instanceof C};f||(M((C=function(){if(this instanceof C)throw TypeError(\"Symbol is not a constructor!\");var t=U(0re;)h(te[re++]);for(var ae=J(h.store),ne=0;ae.length>ne;)G(ae[ne++]);p(p.S+p.F*!f,\"Symbol\",{for:function(e){return l(T,e+=\"\")?T[e]:T[e]=C(e)},keyFor:function(e){if(!I(e))throw TypeError(e+\" is not a symbol!\");for(var t in T)if(T[t]===e)return t},useSetter:function(){N=!0},useSimple:function(){N=!1}}),p(p.S+p.F*!f,\"Object\",{create:function(e,t){return void 0===t?b(e):r(b(e),t)},defineProperty:s,defineProperties:r,getOwnPropertyDescriptor:n,getOwnPropertyNames:o,getOwnPropertySymbols:i});_=u(function(){w.f(1)});p(p.S+p.F*_,\"Object\",{getOwnPropertySymbols:function(e){return w.f(X(e))}}),P&&p(p.S+p.F*(!f||u(function(){var e=C();return\"[null]\"!=S([e])||\"{}\"!=S({a:e})||\"{}\"!=S(Object(e))})),\"JSON\",{stringify:function(e){for(var t,r,a=[e],n=1;ns;)void 0!==(r=n(a,t=o[s++]))&&p(i,t,r);return i}})},{101:101,111:111,140:140,53:53,62:62}],296:[function(e,t,r){var a=e(62),n=e(110)(!1);a(a.S,\"Object\",{values:function(e){return n(e)}})},{110:110,62:62}],297:[function(e,t,r){var a=e(62),n=e(52),o=e(70),i=e(127),s=e(115);a(a.P+a.R,\"Promise\",{finally:function(t){var r=i(this,n.Promise||o.Promise),e=\"function\"==typeof t;return this.then(e?function(e){return s(r,t()).then(function(){return e})}:t,e?function(e){return s(r,t()).then(function(){throw e})}:t)}})},{115:115,127:127,52:52,62:62,70:70}],298:[function(e,t,r){var a=e(62),n=e(132),e=e(148),e=/Version\\/10\\.\\d+(\\.\\d+)?( Mobile\\/\\w+)? Safari\\//.test(e);a(a.P+a.F*e,\"String\",{padEnd:function(e){return n(this,e,1{function c(e,i,s,A){return new(s=s||Promise)(function(r,t){function a(e){try{o(A.next(e))}catch(e){t(e)}}function n(e){try{o(A.throw(e))}catch(e){t(e)}}function o(e){var t;e.done?r(e.value):((t=e.value)instanceof s?t:new s(function(e){e(t)})).then(a,n)}o((A=A.apply(e,i||[])).next())})}let F=914400,m=12700,A=\"\\r\\n\",D=/^[0-9a-fA-F]{6}$/,k=1.67,_=27,u={type:\"solid\",color:\"666666\",pt:1},Q=[.05,.1,.05,.1],p={color:\"363636\",pt:1},f={color:\"888888\",style:\"solid\",size:1,cap:\"flat\"},d=\"000000\",v=12,N=18,o=\"LAYOUT_16x9\",t=\"DEFAULT\",l={type:\"outer\",blur:3,offset:23e3/12700,angle:90,color:\"000000\",opacity:.35,rotateWithShape:!0},y=[.5,.5,.5,.5],W={color:\"000000\"},Y={size:8,color:\"FFFFFF\",opacity:.75},h=\"2094734552\",X=\"2094734553\",g=\"2094734554\",H=\"2094734555\",V=\"2094734556\",r=\"ABCDEFGHIJKLMNOPQRSTUVWXYZ\".split(\"\"),q=[\"C0504D\",\"4F81BD\",\"9BBB59\",\"8064A2\",\"4BACC6\",\"F79646\",\"628FC6\",\"C86360\",\"C0504D\",\"4F81BD\",\"9BBB59\",\"8064A2\",\"4BACC6\",\"F79646\",\"628FC6\",\"C86360\"],J=[\"5DA5DA\",\"FAA43A\",\"60BD68\",\"F17CB0\",\"B2912F\",\"B276B2\",\"DECF3F\",\"F15854\",\"A7A7A7\",\"5DA5DA\",\"FAA43A\",\"60BD68\",\"F17CB0\",\"B2912F\",\"B276B2\",\"DECF3F\",\"F15854\",\"A7A7A7\"];var i,s,a,K,Z,n,$,ee,b,w,te,x,I,re,C,e;(e=i=i||{}).left=\"left\",e.center=\"center\",e.right=\"right\",e.justify=\"justify\",(e=s=s||{}).b=\"b\",e.ctr=\"ctr\",e.t=\"t\";let ae=\"{F7021451-1387-4CA6-816F-3879F97B5CBC}\",P=((e=a=a||{}).arraybuffer=\"arraybuffer\",e.base64=\"base64\",e.binarystring=\"binarystring\",e.blob=\"blob\",e.nodebuffer=\"nodebuffer\",e.uint8array=\"uint8array\",(e=K=K||{}).area=\"area\",e.bar=\"bar\",e.bar3d=\"bar3D\",e.bubble=\"bubble\",e.bubble3d=\"bubble3D\",e.doughnut=\"doughnut\",e.line=\"line\",e.pie=\"pie\",e.radar=\"radar\",e.scatter=\"scatter\",(e=Z=Z||{}).accentBorderCallout1=\"accentBorderCallout1\",e.accentBorderCallout2=\"accentBorderCallout2\",e.accentBorderCallout3=\"accentBorderCallout3\",e.accentCallout1=\"accentCallout1\",e.accentCallout2=\"accentCallout2\",e.accentCallout3=\"accentCallout3\",e.actionButtonBackPrevious=\"actionButtonBackPrevious\",e.actionButtonBeginning=\"actionButtonBeginning\",e.actionButtonBlank=\"actionButtonBlank\",e.actionButtonDocument=\"actionButtonDocument\",e.actionButtonEnd=\"actionButtonEnd\",e.actionButtonForwardNext=\"actionButtonForwardNext\",e.actionButtonHelp=\"actionButtonHelp\",e.actionButtonHome=\"actionButtonHome\",e.actionButtonInformation=\"actionButtonInformation\",e.actionButtonMovie=\"actionButtonMovie\",e.actionButtonReturn=\"actionButtonReturn\",e.actionButtonSound=\"actionButtonSound\",e.arc=\"arc\",e.bentArrow=\"bentArrow\",e.bentUpArrow=\"bentUpArrow\",e.bevel=\"bevel\",e.blockArc=\"blockArc\",e.borderCallout1=\"borderCallout1\",e.borderCallout2=\"borderCallout2\",e.borderCallout3=\"borderCallout3\",e.bracePair=\"bracePair\",e.bracketPair=\"bracketPair\",e.callout1=\"callout1\",e.callout2=\"callout2\",e.callout3=\"callout3\",e.can=\"can\",e.chartPlus=\"chartPlus\",e.chartStar=\"chartStar\",e.chartX=\"chartX\",e.chevron=\"chevron\",e.chord=\"chord\",e.circularArrow=\"circularArrow\",e.cloud=\"cloud\",e.cloudCallout=\"cloudCallout\",e.corner=\"corner\",e.cornerTabs=\"cornerTabs\",e.cube=\"cube\",e.curvedDownArrow=\"curvedDownArrow\",e.curvedLeftArrow=\"curvedLeftArrow\",e.curvedRightArrow=\"curvedRightArrow\",e.curvedUpArrow=\"curvedUpArrow\",e.custGeom=\"custGeom\",e.decagon=\"decagon\",e.diagStripe=\"diagStripe\",e.diamond=\"diamond\",e.dodecagon=\"dodecagon\",e.donut=\"donut\",e.doubleWave=\"doubleWave\",e.downArrow=\"downArrow\",e.downArrowCallout=\"downArrowCallout\",e.ellipse=\"ellipse\",e.ellipseRibbon=\"ellipseRibbon\",e.ellipseRibbon2=\"ellipseRibbon2\",e.flowChartAlternateProcess=\"flowChartAlternateProcess\",e.flowChartCollate=\"flowChartCollate\",e.flowChartConnector=\"flowChartConnector\",e.flowChartDecision=\"flowChartDecision\",e.flowChartDelay=\"flowChartDelay\",e.flowChartDisplay=\"flowChartDisplay\",e.flowChartDocument=\"flowChartDocument\",e.flowChartExtract=\"flowChartExtract\",e.flowChartInputOutput=\"flowChartInputOutput\",e.flowChartInternalStorage=\"flowChartInternalStorage\",e.flowChartMagneticDisk=\"flowChartMagneticDisk\",e.flowChartMagneticDrum=\"flowChartMagneticDrum\",e.flowChartMagneticTape=\"flowChartMagneticTape\",e.flowChartManualInput=\"flowChartManualInput\",e.flowChartManualOperation=\"flowChartManualOperation\",e.flowChartMerge=\"flowChartMerge\",e.flowChartMultidocument=\"flowChartMultidocument\",e.flowChartOfflineStorage=\"flowChartOfflineStorage\",e.flowChartOffpageConnector=\"flowChartOffpageConnector\",e.flowChartOnlineStorage=\"flowChartOnlineStorage\",e.flowChartOr=\"flowChartOr\",e.flowChartPredefinedProcess=\"flowChartPredefinedProcess\",e.flowChartPreparation=\"flowChartPreparation\",e.flowChartProcess=\"flowChartProcess\",e.flowChartPunchedCard=\"flowChartPunchedCard\",e.flowChartPunchedTape=\"flowChartPunchedTape\",e.flowChartSort=\"flowChartSort\",e.flowChartSummingJunction=\"flowChartSummingJunction\",e.flowChartTerminator=\"flowChartTerminator\",e.folderCorner=\"folderCorner\",e.frame=\"frame\",e.funnel=\"funnel\",e.gear6=\"gear6\",e.gear9=\"gear9\",e.halfFrame=\"halfFrame\",e.heart=\"heart\",e.heptagon=\"heptagon\",e.hexagon=\"hexagon\",e.homePlate=\"homePlate\",e.horizontalScroll=\"horizontalScroll\",e.irregularSeal1=\"irregularSeal1\",e.irregularSeal2=\"irregularSeal2\",e.leftArrow=\"leftArrow\",e.leftArrowCallout=\"leftArrowCallout\",e.leftBrace=\"leftBrace\",e.leftBracket=\"leftBracket\",e.leftCircularArrow=\"leftCircularArrow\",e.leftRightArrow=\"leftRightArrow\",e.leftRightArrowCallout=\"leftRightArrowCallout\",e.leftRightCircularArrow=\"leftRightCircularArrow\",e.leftRightRibbon=\"leftRightRibbon\",e.leftRightUpArrow=\"leftRightUpArrow\",e.leftUpArrow=\"leftUpArrow\",e.lightningBolt=\"lightningBolt\",e.line=\"line\",e.lineInv=\"lineInv\",e.mathDivide=\"mathDivide\",e.mathEqual=\"mathEqual\",e.mathMinus=\"mathMinus\",e.mathMultiply=\"mathMultiply\",e.mathNotEqual=\"mathNotEqual\",e.mathPlus=\"mathPlus\",e.moon=\"moon\",e.noSmoking=\"noSmoking\",e.nonIsoscelesTrapezoid=\"nonIsoscelesTrapezoid\",e.notchedRightArrow=\"notchedRightArrow\",e.octagon=\"octagon\",e.parallelogram=\"parallelogram\",e.pentagon=\"pentagon\",e.pie=\"pie\",e.pieWedge=\"pieWedge\",e.plaque=\"plaque\",e.plaqueTabs=\"plaqueTabs\",e.plus=\"plus\",e.quadArrow=\"quadArrow\",e.quadArrowCallout=\"quadArrowCallout\",e.rect=\"rect\",e.ribbon=\"ribbon\",e.ribbon2=\"ribbon2\",e.rightArrow=\"rightArrow\",e.rightArrowCallout=\"rightArrowCallout\",e.rightBrace=\"rightBrace\",e.rightBracket=\"rightBracket\",e.round1Rect=\"round1Rect\",e.round2DiagRect=\"round2DiagRect\",e.round2SameRect=\"round2SameRect\",e.roundRect=\"roundRect\",e.rtTriangle=\"rtTriangle\",e.smileyFace=\"smileyFace\",e.snip1Rect=\"snip1Rect\",e.snip2DiagRect=\"snip2DiagRect\",e.snip2SameRect=\"snip2SameRect\",e.snipRoundRect=\"snipRoundRect\",e.squareTabs=\"squareTabs\",e.star10=\"star10\",e.star12=\"star12\",e.star16=\"star16\",e.star24=\"star24\",e.star32=\"star32\",e.star4=\"star4\",e.star5=\"star5\",e.star6=\"star6\",e.star7=\"star7\",e.star8=\"star8\",e.stripedRightArrow=\"stripedRightArrow\",e.sun=\"sun\",e.swooshArrow=\"swooshArrow\",e.teardrop=\"teardrop\",e.trapezoid=\"trapezoid\",e.triangle=\"triangle\",e.upArrow=\"upArrow\",e.upArrowCallout=\"upArrowCallout\",e.upDownArrow=\"upDownArrow\",e.upDownArrowCallout=\"upDownArrowCallout\",e.uturnArrow=\"uturnArrow\",e.verticalScroll=\"verticalScroll\",e.wave=\"wave\",e.wedgeEllipseCallout=\"wedgeEllipseCallout\",e.wedgeRectCallout=\"wedgeRectCallout\",e.wedgeRoundRectCallout=\"wedgeRoundRectCallout\",(e=n=n||{}).text1=\"tx1\",e.text2=\"tx2\",e.background1=\"bg1\",e.background2=\"bg2\",e.accent1=\"accent1\",e.accent2=\"accent2\",e.accent3=\"accent3\",e.accent4=\"accent4\",e.accent5=\"accent5\",e.accent6=\"accent6\",(e=$=$||{}).left=\"left\",e.center=\"center\",e.right=\"right\",e.justify=\"justify\",(e=ee=ee||{}).top=\"top\",e.middle=\"middle\",e.bottom=\"bottom\",(e=b=b||{}).ACTION_BUTTON_BACK_OR_PREVIOUS=\"actionButtonBackPrevious\",e.ACTION_BUTTON_BEGINNING=\"actionButtonBeginning\",e.ACTION_BUTTON_CUSTOM=\"actionButtonBlank\",e.ACTION_BUTTON_DOCUMENT=\"actionButtonDocument\",e.ACTION_BUTTON_END=\"actionButtonEnd\",e.ACTION_BUTTON_FORWARD_OR_NEXT=\"actionButtonForwardNext\",e.ACTION_BUTTON_HELP=\"actionButtonHelp\",e.ACTION_BUTTON_HOME=\"actionButtonHome\",e.ACTION_BUTTON_INFORMATION=\"actionButtonInformation\",e.ACTION_BUTTON_MOVIE=\"actionButtonMovie\",e.ACTION_BUTTON_RETURN=\"actionButtonReturn\",e.ACTION_BUTTON_SOUND=\"actionButtonSound\",e.ARC=\"arc\",e.BALLOON=\"wedgeRoundRectCallout\",e.BENT_ARROW=\"bentArrow\",e.BENT_UP_ARROW=\"bentUpArrow\",e.BEVEL=\"bevel\",e.BLOCK_ARC=\"blockArc\",e.CAN=\"can\",e.CHART_PLUS=\"chartPlus\",e.CHART_STAR=\"chartStar\",e.CHART_X=\"chartX\",e.CHEVRON=\"chevron\",e.CHORD=\"chord\",e.CIRCULAR_ARROW=\"circularArrow\",e.CLOUD=\"cloud\",e.CLOUD_CALLOUT=\"cloudCallout\",e.CORNER=\"corner\",e.CORNER_TABS=\"cornerTabs\",e.CROSS=\"plus\",e.CUBE=\"cube\",e.CURVED_DOWN_ARROW=\"curvedDownArrow\",e.CURVED_DOWN_RIBBON=\"ellipseRibbon\",e.CURVED_LEFT_ARROW=\"curvedLeftArrow\",e.CURVED_RIGHT_ARROW=\"curvedRightArrow\",e.CURVED_UP_ARROW=\"curvedUpArrow\",e.CURVED_UP_RIBBON=\"ellipseRibbon2\",e.CUSTOM_GEOMETRY=\"custGeom\",e.DECAGON=\"decagon\",e.DIAGONAL_STRIPE=\"diagStripe\",e.DIAMOND=\"diamond\",e.DODECAGON=\"dodecagon\",e.DONUT=\"donut\",e.DOUBLE_BRACE=\"bracePair\",e.DOUBLE_BRACKET=\"bracketPair\",e.DOUBLE_WAVE=\"doubleWave\",e.DOWN_ARROW=\"downArrow\",e.DOWN_ARROW_CALLOUT=\"downArrowCallout\",e.DOWN_RIBBON=\"ribbon\",e.EXPLOSION1=\"irregularSeal1\",e.EXPLOSION2=\"irregularSeal2\",e.FLOWCHART_ALTERNATE_PROCESS=\"flowChartAlternateProcess\",e.FLOWCHART_CARD=\"flowChartPunchedCard\",e.FLOWCHART_COLLATE=\"flowChartCollate\",e.FLOWCHART_CONNECTOR=\"flowChartConnector\",e.FLOWCHART_DATA=\"flowChartInputOutput\",e.FLOWCHART_DECISION=\"flowChartDecision\",e.FLOWCHART_DELAY=\"flowChartDelay\",e.FLOWCHART_DIRECT_ACCESS_STORAGE=\"flowChartMagneticDrum\",e.FLOWCHART_DISPLAY=\"flowChartDisplay\",e.FLOWCHART_DOCUMENT=\"flowChartDocument\",e.FLOWCHART_EXTRACT=\"flowChartExtract\",e.FLOWCHART_INTERNAL_STORAGE=\"flowChartInternalStorage\",e.FLOWCHART_MAGNETIC_DISK=\"flowChartMagneticDisk\",e.FLOWCHART_MANUAL_INPUT=\"flowChartManualInput\",e.FLOWCHART_MANUAL_OPERATION=\"flowChartManualOperation\",e.FLOWCHART_MERGE=\"flowChartMerge\",e.FLOWCHART_MULTIDOCUMENT=\"flowChartMultidocument\",e.FLOWCHART_OFFLINE_STORAGE=\"flowChartOfflineStorage\",e.FLOWCHART_OFFPAGE_CONNECTOR=\"flowChartOffpageConnector\",e.FLOWCHART_OR=\"flowChartOr\",e.FLOWCHART_PREDEFINED_PROCESS=\"flowChartPredefinedProcess\",e.FLOWCHART_PREPARATION=\"flowChartPreparation\",e.FLOWCHART_PROCESS=\"flowChartProcess\",e.FLOWCHART_PUNCHED_TAPE=\"flowChartPunchedTape\",e.FLOWCHART_SEQUENTIAL_ACCESS_STORAGE=\"flowChartMagneticTape\",e.FLOWCHART_SORT=\"flowChartSort\",e.FLOWCHART_STORED_DATA=\"flowChartOnlineStorage\",e.FLOWCHART_SUMMING_JUNCTION=\"flowChartSummingJunction\",e.FLOWCHART_TERMINATOR=\"flowChartTerminator\",e.FOLDED_CORNER=\"folderCorner\",e.FRAME=\"frame\",e.FUNNEL=\"funnel\",e.GEAR_6=\"gear6\",e.GEAR_9=\"gear9\",e.HALF_FRAME=\"halfFrame\",e.HEART=\"heart\",e.HEPTAGON=\"heptagon\",e.HEXAGON=\"hexagon\",e.HORIZONTAL_SCROLL=\"horizontalScroll\",e.ISOSCELES_TRIANGLE=\"triangle\",e.LEFT_ARROW=\"leftArrow\",e.LEFT_ARROW_CALLOUT=\"leftArrowCallout\",e.LEFT_BRACE=\"leftBrace\",e.LEFT_BRACKET=\"leftBracket\",e.LEFT_CIRCULAR_ARROW=\"leftCircularArrow\",e.LEFT_RIGHT_ARROW=\"leftRightArrow\",e.LEFT_RIGHT_ARROW_CALLOUT=\"leftRightArrowCallout\",e.LEFT_RIGHT_CIRCULAR_ARROW=\"leftRightCircularArrow\",e.LEFT_RIGHT_RIBBON=\"leftRightRibbon\",e.LEFT_RIGHT_UP_ARROW=\"leftRightUpArrow\",e.LEFT_UP_ARROW=\"leftUpArrow\",e.LIGHTNING_BOLT=\"lightningBolt\",e.LINE_CALLOUT_1=\"borderCallout1\",e.LINE_CALLOUT_1_ACCENT_BAR=\"accentCallout1\",e.LINE_CALLOUT_1_BORDER_AND_ACCENT_BAR=\"accentBorderCallout1\",e.LINE_CALLOUT_1_NO_BORDER=\"callout1\",e.LINE_CALLOUT_2=\"borderCallout2\",e.LINE_CALLOUT_2_ACCENT_BAR=\"accentCallout2\",e.LINE_CALLOUT_2_BORDER_AND_ACCENT_BAR=\"accentBorderCallout2\",e.LINE_CALLOUT_2_NO_BORDER=\"callout2\",e.LINE_CALLOUT_3=\"borderCallout3\",e.LINE_CALLOUT_3_ACCENT_BAR=\"accentCallout3\",e.LINE_CALLOUT_3_BORDER_AND_ACCENT_BAR=\"accentBorderCallout3\",e.LINE_CALLOUT_3_NO_BORDER=\"callout3\",e.LINE_CALLOUT_4=\"borderCallout4\",e.LINE_CALLOUT_4_ACCENT_BAR=\"accentCallout3=4\",e.LINE_CALLOUT_4_BORDER_AND_ACCENT_BAR=\"accentBorderCallout4\",e.LINE_CALLOUT_4_NO_BORDER=\"callout4\",e.LINE=\"line\",e.LINE_INVERSE=\"lineInv\",e.MATH_DIVIDE=\"mathDivide\",e.MATH_EQUAL=\"mathEqual\",e.MATH_MINUS=\"mathMinus\",e.MATH_MULTIPLY=\"mathMultiply\",e.MATH_NOT_EQUAL=\"mathNotEqual\",e.MATH_PLUS=\"mathPlus\",e.MOON=\"moon\",e.NON_ISOSCELES_TRAPEZOID=\"nonIsoscelesTrapezoid\",e.NOTCHED_RIGHT_ARROW=\"notchedRightArrow\",e.NO_SYMBOL=\"noSmoking\",e.OCTAGON=\"octagon\",e.OVAL=\"ellipse\",e.OVAL_CALLOUT=\"wedgeEllipseCallout\",e.PARALLELOGRAM=\"parallelogram\",e.PENTAGON=\"homePlate\",e.PIE=\"pie\",e.PIE_WEDGE=\"pieWedge\",e.PLAQUE=\"plaque\",e.PLAQUE_TABS=\"plaqueTabs\",e.QUAD_ARROW=\"quadArrow\",e.QUAD_ARROW_CALLOUT=\"quadArrowCallout\",e.RECTANGLE=\"rect\",e.RECTANGULAR_CALLOUT=\"wedgeRectCallout\",e.REGULAR_PENTAGON=\"pentagon\",e.RIGHT_ARROW=\"rightArrow\",e.RIGHT_ARROW_CALLOUT=\"rightArrowCallout\",e.RIGHT_BRACE=\"rightBrace\",e.RIGHT_BRACKET=\"rightBracket\",e.RIGHT_TRIANGLE=\"rtTriangle\",e.ROUNDED_RECTANGLE=\"roundRect\",e.ROUNDED_RECTANGULAR_CALLOUT=\"wedgeRoundRectCallout\",e.ROUND_1_RECTANGLE=\"round1Rect\",e.ROUND_2_DIAG_RECTANGLE=\"round2DiagRect\",e.ROUND_2_SAME_RECTANGLE=\"round2SameRect\",e.SMILEY_FACE=\"smileyFace\",e.SNIP_1_RECTANGLE=\"snip1Rect\",e.SNIP_2_DIAG_RECTANGLE=\"snip2DiagRect\",e.SNIP_2_SAME_RECTANGLE=\"snip2SameRect\",e.SNIP_ROUND_RECTANGLE=\"snipRoundRect\",e.SQUARE_TABS=\"squareTabs\",e.STAR_10_POINT=\"star10\",e.STAR_12_POINT=\"star12\",e.STAR_16_POINT=\"star16\",e.STAR_24_POINT=\"star24\",e.STAR_32_POINT=\"star32\",e.STAR_4_POINT=\"star4\",e.STAR_5_POINT=\"star5\",e.STAR_6_POINT=\"star6\",e.STAR_7_POINT=\"star7\",e.STAR_8_POINT=\"star8\",e.STRIPED_RIGHT_ARROW=\"stripedRightArrow\",e.SUN=\"sun\",e.SWOOSH_ARROW=\"swooshArrow\",e.TEAR=\"teardrop\",e.TRAPEZOID=\"trapezoid\",e.UP_ARROW=\"upArrow\",e.UP_ARROW_CALLOUT=\"upArrowCallout\",e.UP_DOWN_ARROW=\"upDownArrow\",e.UP_DOWN_ARROW_CALLOUT=\"upDownArrowCallout\",e.UP_RIBBON=\"ribbon2\",e.U_TURN_ARROW=\"uturnArrow\",e.VERTICAL_SCROLL=\"verticalScroll\",e.WAVE=\"wave\",(e=w=w||{}).AREA=\"area\",e.BAR=\"bar\",e.BAR3D=\"bar3D\",e.BUBBLE=\"bubble\",e.BUBBLE3D=\"bubble3D\",e.DOUGHNUT=\"doughnut\",e.LINE=\"line\",e.PIE=\"pie\",e.RADAR=\"radar\",e.SCATTER=\"scatter\",(e=te=te||{}).TEXT1=\"tx1\",e.TEXT2=\"tx2\",e.BACKGROUND1=\"bg1\",e.BACKGROUND2=\"bg2\",e.ACCENT1=\"accent1\",e.ACCENT2=\"accent2\",e.ACCENT3=\"accent3\",e.ACCENT4=\"accent4\",e.ACCENT5=\"accent5\",e.ACCENT6=\"accent6\",(e=x=x||{}).chart=\"chart\",e.image=\"image\",e.line=\"line\",e.rect=\"rect\",e.text=\"text\",e.placeholder=\"placeholder\",(e=I=I||{}).chart=\"chart\",e.hyperlink=\"hyperlink\",e.image=\"image\",e.media=\"media\",e.online=\"online\",e.placeholder=\"placeholder\",e.table=\"table\",e.tablecell=\"tablecell\",e.text=\"text\",e.notes=\"notes\",(e=re=re||{}).title=\"title\",e.body=\"body\",e.image=\"pic\",e.chart=\"chart\",e.table=\"tbl\",e.media=\"media\",(e=C=C||{}).DEFAULT=\"•\",e.CHECK=\"✓\",e.STAR=\"★\",e.TRIANGLE=\"▶\",\"data:image/png;base64,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\");function R(e,t,r){return\"number\"==typeof(e=\"string\"!=typeof e||isNaN(Number(e))?e:Number(e))&&e<100?M(e):\"number\"==typeof e&&100<=e?e:\"string\"==typeof e&&e.includes(\"%\")?(!t||\"X\"!==t)&&t&&\"Y\"===t?Math.round(parseFloat(e)/100*r.height):Math.round(parseFloat(e)/100*r.width):0}function ne(e){return e.replace(/[xy]/g,function(e){var t=16*Math.random()|0;return(\"x\"===e?t:3&t|8).toString(16)})}function O(e){return void 0===e||null==e?\"\":e.toString().replace(/&/g,\"&\").replace(//g,\">\").replace(/\"/g,\""\").replace(/'/g,\"'\")}function M(e){return\"number\"==typeof e&&100${t}`:``}function G(e){let t=\"solid\",r=\"\",a=\"\",n=\"\";return e&&(\"string\"==typeof e?r=e:(e.type&&(t=e.type),e.color&&(r=e.color),e.alpha&&(a+=``),e.transparency&&(a+=``)),\"solid\"===t?n+=`${j(r,a)}`:n+=\"\"),n}function S(e){return e._rels.length+e._relsChart.length+e._relsMedia.length+1}function se(e){if(e&&\"object\"==typeof e)return\"outer\"!==e.type&&\"inner\"!==e.type&&\"none\"!==e.type&&(console.warn(\"Warning: shadow.type options are `outer`, `inner` or `none`.\"),e.type=\"outer\"),e.angle&&((isNaN(Number(e.angle))||e.angle<0||359{e=(e=e||{_type:I.tablecell}).options||null;o+=Number(null!==e&&e.colspan?e.colspan:1)}),p.verbose&&console.log(\"| numCols ......................................... = \"+o),!A&&p.colW&&(c=Array.isArray(p.colW)?p.colW.reduce((e,t)=>e+t)*F:p.colW*o||0,p.verbose)&&console.log(\"| tableCalcW ...................................... = \"+c/F),n=c||M((i?i/F:a[1])+a[3]),p.verbose&&console.log(\"| emuSlideTabW .................................... = \"+(n/F).toFixed(1)),!p.colW||!Array.isArray(p.colW))if(p.colW&&!isNaN(Number(p.colW))){let e=[];(t[0]||[]).forEach(()=>e.push(p.colW)),p.colW=[],e.forEach(e=>{Array.isArray(p.colW)&&p.colW.push(e)})}else{p.colW=[];for(let e=0;e{let n=[],r=0,a=0,o=[],i=(t.forEach(e=>{var t;o.push({_type:I.tablecell,text:[],options:e.options}),e.options.margin&&1<=e.options.margin[0]?(null!=(t=e.options)&&t.margin&&e.options.margin[0]&&z(e.options.margin[0])>r?r=z(e.options.margin[0]):null!=p&&p.margin&&p.margin[0]&&z(p.margin[0])>r&&(r=z(p.margin[0])),null!=(t=e.options)&&t.margin&&e.options.margin[2]&&z(e.options.margin[2])>a?a=z(e.options.margin[2]):null!=p&&p.margin&&p.margin[2]&&z(p.margin[2])>a&&(a=z(p.margin[2]))):(null!=(t=e.options)&&t.margin&&e.options.margin[0]&&M(e.options.margin[0])>r?r=M(e.options.margin[0]):null!=p&&p.margin&&p.margin[0]&&M(p.margin[0])>r&&(r=M(p.margin[0])),null!=(t=e.options)&&t.margin&&e.options.margin[2]&&M(e.options.margin[2])>a?a=M(e.options.margin[2]):null!=p&&p.margin&&p.margin[2]&&M(p.margin[2])>a&&(a=M(p.margin[2])))}),h(),f+=r+a,p.verbose&&0===e&&console.log(`| SLIDE [${d.length}]: emuSlideTabH ...... = ${(u/F).toFixed(1)} `),t.forEach((r,a)=>{var e={_type:I.tablecell,_lines:null,_lineHeight:M((null!=(e=r.options)&&e.fontSize?r.options.fontSize:p.fontSize||v)*(k+(p.autoPageLineWeight||0))/100),text:[],options:r.options};e.options.rowspan&&(e._lineHeight=0),e.options.autoPageCharWeight=p.autoPageCharWeight||null;let t=p.colW[a];r.options.colspan&&Array.isArray(p.colW)&&(t=p.colW.filter((e,t)=>a<=t&&te+t)),e._lines=((e,t)=>{var r=2.3+(null!=(r=e.options)&&r.autoPageCharWeight?e.options.autoPageCharWeight:0);let a=Math.floor(t/m*F)/((null!=(t=e.options)&&t.fontSize?e.options.fontSize:v)/r),n=[],o=[],i=[],s=[],A=(e.text&&0===e.text.toString().trim().length?o.push({_type:I.tablecell,text:\" \"}):\"number\"==typeof e.text||\"string\"==typeof e.text?o.push({_type:I.tablecell,text:(e.text||\"\").toString().trim()}):Array.isArray(e.text)&&(o=e.text),[]);return o.forEach(t=>{var e;\"string\"==typeof t.text&&(1{A.push({_type:I.tablecell,text:e,options:Object.assign(Object.assign({},t.options),{breakLine:!0})})}):A.push({_type:I.tablecell,text:t.text.trim(),options:t.options}),null!=(e=t.options))&&e.breakLine&&(i.push(A),A=[]),0{e.forEach(a=>{let n=[];let o=String(a.text).split(\" \");o.forEach((e,t)=>{var r=Object.assign({},a.options);null!=r&&r.breakLine&&(r.breakLine=t+1===o.length),n.push({_type:I.tablecell,text:e+(t+1{let t=[],r=\"\";e.forEach(e=>{r.length+e.text.length>a&&(n.push(t),t=[],r=\"\"),t.push(e),r+=e.text.toString()}),0{e._lineHeight>=s&&(s=e._lineHeight)}),f+s>u&&(p.verbose&&(console.log(\"\\n|-----------------------------------------------------------------------|\"),console.log(`|-- NEW SLIDE CREATED (currTabH+currLineH > maxH) => ${(f/F).toFixed(2)} + ${(l._lineHeight/F).toFixed(2)} > `+u/F),console.log(\"|-----------------------------------------------------------------------|\\n\\n\")),0e.text.length).reduce((e,t)=>e+t)&&g.rows.push(o),d.push(g),c=[],g={rows:c},o=[],t.forEach(e=>o.push({_type:I.tablecell,text:[],options:e.options})),h(),f+=r+a,p.verbose&&console.log(`| SLIDE [${d.length}]: emuSlideTabH ...... = ${(u/F).toFixed(1)} `),f=0,(p.addHeaderToEach||p.autoPageRepeatHeader)&&p._arrObjTabHeadRows&&p._arrObjTabHeadRows.forEach(e=>{let t=[],r=0;e.forEach(e=>{t.push(e),e._lineHeight>r&&(r=e._lineHeight)}),g.rows.push(t),f+=r}),e=o[i]);var c=l._lines.shift(),l=(Array.isArray(e.text)&&(c?e.text=e.text.concat(c):0===e.text.length&&(e.text=e.text.concat({_type:I.tablecell,text:\"\"}))),i===n.length-1&&(f+=s),i=ie._lines.length).reduce((e,t)=>e+t));0===l&&(A=!0)}0console.log(e)),console.log(\"|================================================|\\n\\n\")),d}let le=0;function ce(e,t,r,a){function n(e){e&&\"none\"!==e.style&&(void 0!==e.size&&(isNaN(Number(e.size))||e.size<=0)&&(console.warn(\"Warning: chart.gridLine.size must be greater than 0.\"),delete e.size),e.style&&![\"solid\",\"dash\",\"dot\"].includes(e.style)&&(console.warn(\"Warning: chart.gridLine.style options: `solid`, `dash`, `dot`.\"),delete e.style),e.cap)&&![\"flat\",\"square\",\"round\"].includes(e.cap)&&(console.warn(\"Warning: chart.gridLine.cap options: `flat`, `square`, `round`.\"),delete e.cap)}var o=++le,i={_type:null,text:null,options:null,chartRid:null};let s=null,A=[],l=(s=Array.isArray(t)?(t.forEach(e=>{A=A.concat(e.data)}),r||a):(A=r,a),A.forEach((e,t)=>{e._dataIndex=t,void 0===e.labels||Array.isArray(e.labels[0])||(e.labels=[e.labels])}),s&&\"object\"==typeof s?s:{});l._type=t,l.x=void 0===l.x||null==l.x||isNaN(Number(l.x))?1:l.x,l.y=void 0===l.y||null==l.y||isNaN(Number(l.y))?1:l.y,l.w=l.w||\"50%\",l.h=l.h||\"50%\",l.objectName=l.objectName?O(l.objectName):\"Chart \"+e._slideObjects.filter(e=>e._type===I.chart).length,[\"bar\",\"col\"].includes(l.barDir||\"\")||(l.barDir=\"col\"),l._type!==w.AREA||[\"stacked\",\"standard\",\"percentStacked\"].includes(l.barGrouping||\"\")||(l.barGrouping=\"standard\"),l._type!==w.BAR||[\"clustered\",\"stacked\",\"percentStacked\"].includes(l.barGrouping||\"\")||(l.barGrouping=\"clustered\"),l._type!==w.BAR3D||[\"clustered\",\"stacked\",\"standard\",\"percentStacked\"].includes(l.barGrouping||\"\")||(l.barGrouping=\"standard\"),null!=(r=l.barGrouping)&&r.includes(\"tacked\")&&!l.barGapWidthPct&&(l.barGapWidthPct=50),l.dataLabelPosition&&(l._type!==w.AREA&&l._type!==w.BAR3D&&l._type!==w.DOUGHNUT&&l._type!==w.RADAR||delete l.dataLabelPosition,l._type!==w.PIE||[\"bestFit\",\"ctr\",\"inEnd\",\"outEnd\"].includes(l.dataLabelPosition)||delete l.dataLabelPosition,l._type!==w.BUBBLE&&l._type!==w.BUBBLE3D&&l._type!==w.LINE&&l._type!==w.SCATTER||[\"b\",\"ctr\",\"l\",\"r\",\"t\"].includes(l.dataLabelPosition)||delete l.dataLabelPosition,l._type===w.BAR)&&([\"stacked\",\"percentStacked\"].includes(l.barGrouping||\"\")||[\"ctr\",\"inBase\",\"inEnd\"].includes(l.dataLabelPosition)||delete l.dataLabelPosition,[\"clustered\"].includes(l.barGrouping||\"\")||[\"ctr\",\"inBase\",\"inEnd\",\"outEnd\"].includes(l.dataLabelPosition)||delete l.dataLabelPosition),l.dataLabelBkgrdColors=!(!l.dataLabelBkgrdColors&&l.dataLabelBkgrdColors)&&l.dataLabelBkgrdColors,[\"b\",\"l\",\"r\",\"t\",\"tr\"].includes(l.legendPos||\"\")||(l.legendPos=\"r\"),[\"cone\",\"coneToMax\",\"box\",\"cylinder\",\"pyramid\",\"pyramidToMax\"].includes(l.bar3DShape||\"\")||(l.bar3DShape=\"box\"),[\"circle\",\"dash\",\"diamond\",\"dot\",\"none\",\"square\",\"triangle\"].includes(l.lineDataSymbol||\"\")||(l.lineDataSymbol=\"circle\"),[\"gap\",\"span\"].includes(l.displayBlanksAs||\"\")||(l.displayBlanksAs=\"span\"),[\"standard\",\"marker\",\"filled\"].includes(l.radarStyle||\"\")||(l.radarStyle=\"standard\"),l.lineDataSymbolSize=l.lineDataSymbolSize&&!isNaN(l.lineDataSymbolSize)?l.lineDataSymbolSize:6,l.lineDataSymbolLineSize=l.lineDataSymbolLineSize&&!isNaN(l.lineDataSymbolLineSize)?z(l.lineDataSymbolLineSize):z(.75),l.layout&&[\"x\",\"y\",\"w\",\"h\"].forEach(e=>{var t=l.layout[e];(isNaN(Number(t))||t<0||1e._type===I.image).length;if(p||c)if(p&&\"string\"!=typeof p)console.error(\"ERROR: addImage() 'path' should be a string, ex: {path:'/img/sample.png'} - you sent \"+String(p));else if(c&&\"string\"!=typeof c)console.error(\"ERROR: addImage() 'data' should be a string, ex: {data:'image/png;base64,NMP[...]'} - you sent \"+String(c));else if(c&&\"string\"==typeof c&&!c.toLowerCase().includes(\"base64,\"))console.error(\"ERROR: Image `data` value lacks a base64 header! Ex: 'image/png;base64,NMP[...]')\");else{let t=(p.substring(p.lastIndexOf(\"/\")+1).split(\"?\")[0].split(\".\").pop().split(\"#\")[0]||\"png\").toLowerCase();if(c&&/image\\/(\\w+);/.exec(c)&&0e.path&&e.path===p&&e.type===\"image/\"+t&&!e.isDuplicate)[0],e._relsMedia.push({path:p||\"preencoded.\"+t,type:\"image/\"+t,extn:t,data:c||\"\",rId:u,isDuplicate:!(null==n||!n.Target),Target:null!=n&&n.Target?n.Target:`../media/image-${e._slideNum}-${e._relsMedia.length+1}.`+t}),a.imageRid=u),\"object\"==typeof l){if(!l.url&&!l.slide)throw new Error(\"ERROR: `hyperlink` option requires either: `url` or `slide`\");e._rels.push({type:I.hyperlink,data:l.slide?\"slide\":\"dummy\",rId:++u,Target:l.url||l.slide.toString()}),l._rId=u,a.hyperlink=l}e._slideObjects.push(a)}else console.error(\"ERROR: addImage() requires either 'data' or 'path' parameter!\")}function ue(e,t,r){var r=\"object\"==typeof r?r:{},a=(r.line=r.line||{type:\"none\"},{_type:I.text,shape:t||b.RECTANGLE,options:r,text:null});if(!t)throw new Error(\"Missing/Invalid shape parameter! Example: `addShape(pptxgen.shapes.LINE, {x:1, y:1, w:1, h:1});`\");var t={type:r.line.type||\"solid\",color:r.line.color||\"333333\",transparency:r.line.transparency||0,width:r.line.width||1,dashType:r.line.dashType||\"solid\",beginArrowType:r.line.beginArrowType||null,endArrowType:r.line.endArrowType||null};\"object\"==typeof r.line&&\"none\"!==r.line.type&&(r.line=t),r.x=r.x||(0===r.x?0:1),r.y=r.y||(0===r.y?0:1),r.w=r.w||(0===r.w?0:1),r.h=r.h||(0===r.h?0:1),r.objectName=r.objectName?O(r.objectName):\"Shape \"+e._slideObjects.filter(e=>e._type===I.text).length,\"string\"==typeof r.line&&((t=t).color=String(r.line),r.line=t),\"number\"==typeof r.lineSize&&(r.line.width=r.lineSize),\"string\"==typeof r.lineDash&&(r.line.dashType=r.lineDash),\"string\"==typeof r.lineHead&&(r.line.beginArrowType=r.lineHead),\"string\"==typeof r.lineTail&&(r.line.endArrowType=r.lineTail),L(e,a),e._slideObjects.push(a)}function fe(r,e,t,a){let n={_type:a?I.placeholder:I.text,shape:(null==t?void 0:t.shape)||b.RECTANGLE,text:e&&0!==e.length?e:[{text:\"\",options:null}],options:t||{}};function o(t){var e;return t.placeholder||(t.color=t.color||n.options.color||r.color||d),(t.placeholder||a)&&(t.bullet=t.bullet||!1),(t=t.placeholder&&r._slideLayout&&r._slideLayout._slideObjects&&null!=(e=r._slideLayout._slideObjects.filter(e=>\"placeholder\"===e._type&&e.options&&e.options.placeholder&&e.options.placeholder===t.placeholder)[0])&&e.options?Object.assign(Object.assign({},t),e.options):t).objectName=t.objectName?O(t.objectName):\"Text \"+r._slideObjects.filter(e=>e._type===I.text).length,t.shape===b.LINE&&(e={type:t.line.type||\"solid\",color:t.line.color||\"333333\",transparency:t.line.transparency||0,width:t.line.width||1,dashType:t.line.dashType||\"solid\",beginArrowType:t.line.beginArrowType||null,endArrowType:t.line.endArrowType||null},\"object\"==typeof t.line&&(t.line=e),\"string\"==typeof t.line&&(e=e,\"string\"==typeof t.line&&(e.color=t.line),t.line=e),\"number\"==typeof t.lineSize&&(t.line.width=t.lineSize),\"string\"==typeof t.lineDash&&(t.line.dashType=t.lineDash),\"string\"==typeof t.lineHead&&(t.line.beginArrowType=t.lineHead),\"string\"==typeof t.lineTail)&&(t.line.endArrowType=t.lineTail),t.line=t.line||{},t.lineSpacing=t.lineSpacing&&!isNaN(t.lineSpacing)?t.lineSpacing:null,t.lineSpacingMultiple=t.lineSpacingMultiple&&!isNaN(t.lineSpacingMultiple)?t.lineSpacingMultiple:null,t._bodyProp=t._bodyProp||{},t._bodyProp.autoFit=t.autoFit||!1,t._bodyProp.anchor=t.placeholder?null:s.ctr,t._bodyProp.vert=t.vert||null,t._bodyProp.wrap=\"boolean\"!=typeof t.wrap||t.wrap,(t.inset&&!isNaN(Number(t.inset))||0===t.inset)&&(t._bodyProp.lIns=M(t.inset),t._bodyProp.rIns=M(t.inset),t._bodyProp.tIns=M(t.inset),t._bodyProp.bIns=M(t.inset)),\"boolean\"==typeof t.underline&&!0===t.underline&&(t.underline={style:\"sng\"}),0===(t.align||\"\").toLowerCase().indexOf(\"c\")?t._bodyProp.align=i.center:0===(t.align||\"\").toLowerCase().indexOf(\"l\")?t._bodyProp.align=i.left:0===(t.align||\"\").toLowerCase().indexOf(\"r\")?t._bodyProp.align=i.right:0===(t.align||\"\").toLowerCase().indexOf(\"j\")&&(t._bodyProp.align=i.justify),0===(t.valign||\"\").toLowerCase().indexOf(\"b\")?t._bodyProp.anchor=s.b:0===(t.valign||\"\").toLowerCase().indexOf(\"m\")?t._bodyProp.anchor=s.ctr:0===(t.valign||\"\").toLowerCase().indexOf(\"t\")&&(t._bodyProp.anchor=s.t),se(t.shadow),t}n.options=o(n.options),n.text.forEach(e=>e.options=o(e.options||{})),L(r,n.text||\"\"),r._slideObjects.push(n)}function de(t,r){if(r.bkgd&&(r.background||(r.background={}),\"string\"==typeof r.bkgd?r.background.color=r.bkgd:(r.bkgd.data&&(r.background.data=r.bkgd.data),r.bkgd.path&&(r.background.path=r.bkgd.path),r.bkgd.src&&(r.background.path=r.bkgd.src))),null!=(a=r.background)&&a.fill&&(r.background.color=r.background.fill),t&&(t.path||t.data)){t.path=t.path||\"preencoded.png\";let e=(t.path.split(\".\").pop()||\"png\").split(\"?\")[0];\"jpg\"===e&&(e=\"jpeg\"),r._relsMedia=r._relsMedia||[];var a=r._relsMedia.length+1;r._relsMedia.push({path:t.path,type:I.image,extn:e,data:t.data||null,rId:a,Target:`../media/${(r._name||\"\").replace(/\\s+/gi,\"-\")}-image-${r._relsMedia.length+1}.`+e}),r._bkgdImgRid=a}}function L(a,e,t){let r=[];\"string\"!=typeof e&&\"number\"!=typeof e&&(Array.isArray(e)?r=e:\"object\"==typeof e&&(r=[e]),r.forEach((r,e)=>{if(t&&t[e]&&t[e].hyperlink&&(r.options=Object.assign(Object.assign({},r.options),t[e])),Array.isArray(r)){let t=[];r.forEach(e=>{e.options&&!e.text.options&&t.push(e.options)}),L(a,r,t)}else Array.isArray(r.text)?L(a,r.text,t&&t[e]?[t[e]]:void 0):r&&\"object\"==typeof r&&r.options&&r.options.hyperlink&&!r.options.hyperlink._rId?\"object\"!=typeof r.options.hyperlink?console.log(\"ERROR: text `hyperlink` option should be an object. Ex: `hyperlink: {url:'https://github.com'}` \"):r.options.hyperlink.url||r.options.hyperlink.slide?(e=S(a),a._rels.push({type:I.hyperlink,data:r.options.hyperlink.slide?\"slide\":\"dummy\",rId:e,Target:O(r.options.hyperlink.url)||r.options.hyperlink.slide.toString()}),r.options.hyperlink._rId=e):console.log(\"ERROR: 'hyperlink requires either: `url` or `slide`'\"):r&&\"object\"==typeof r&&r.options&&r.options.hyperlink&&r.options.hyperlink._rId&&0===a._rels.filter(e=>e.rId===r.options.hyperlink._rId).length&&a._rels.push({type:I.hyperlink,data:r.options.hyperlink.slide?\"slide\":\"dummy\",rId:r.options.hyperlink._rId,Target:O(r.options.hyperlink.url)||r.options.hyperlink.slide.toString()})}))}class he{constructor(e){this.addSlide=e.addSlide,this.getSlide=e.getSlide,this._name=\"Slide \"+e.slideNumber,this._presLayout=e.presLayout,this._rId=e.slideRId,this._rels=[],this._relsChart=[],this._relsMedia=[],this._setSlideNum=e.setSlideNum,this._slideId=e.slideId,this._slideLayout=e.slideLayout||null,this._slideNum=e.slideNumber,this._slideObjects=[],this._slideNumberProps=null!=(e=this._slideLayout)&&e._slideNumberProps?this._slideLayout._slideNumberProps:null}set bkgd(e){this._bkgd=e,this._background&&this._background.color||(this._background||(this._background={}),\"string\"==typeof e&&(this._background.color=e))}get bkgd(){return this._bkgd}set background(e){(this._background=e)&&de(e,this)}get background(){return this._background}set color(e){this._color=e}get color(){return this._color}set hidden(e){this._hidden=e}get hidden(){return this._hidden}set slideNumber(e){this._slideNumberProps=e,this._setSlideNum(e)}get slideNumber(){return this._slideNumberProps}get newAutoPagedSlides(){return this._newAutoPagedSlides}addChart(e,t,r){return ce(this,(r||{})._type=e,t,r),this}addImage(e){return pe(this,e),this}addMedia(e){{var n=this,o=e.x||0,i=e.y||0,s=e.w||2,A=e.h||2,l=e.data||\"\",c=e.link||\"\";let t=e.path||\"\",r=e.type||\"audio\",a;var p=e.cover||\"data:image/png;base64,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AAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKREkRUAAACwrUpLSwuGDRvWfMCAAS26du3avKysrLiioqKkZcuWzZs1a1bcvHnz0tLS0rJsNtusuLi4ebNmzUoLCgo+8/eijY2N9Zs3b66pra2tqqur21xTU1NdVVVVs2nTptqNGzdWbdiwoeYvf/nL5hUrVlQtWLBgw6xZs6pqamoaJQYAAEDaKYABAACIiIghQ4aUHnTQQW379u3bql27dq3at2/fpkWLFq2bN29eWVpa2qpZs2bNCwsLm2ez2fLCwsLyoqKi8sLCwtKknK+hoaG6vr6+qqGh4S91dXV/aWhoqNq8eXNVTU3NuqqqqvUbNmxYu2rVqjWrV69e99Zbb6177rnnPpgzZ06NTwYAAABJogAGAADIA8OGDWt+xBFHdBwwYECnLl26dGjdunXHFi1adCgtLe1YUlLSvlmzZq0KCgqK07yDwsLCssLCwrKIaPdp/zuNjY21mzdvXrdp06ZVNTU172/YsGHl2rVr31+2bNnKBQsWrHjyySffnzVrVpVPGAAAAE1Fpuexsd9HfaF+ZcSal0ptCAAAIAE6deqUPf744zvtueeeXbp3796lbdu2XSorKzuXlpZ2KS0t7VBYWFhhSztGQ0PDxpqampU1NTXL169fv+yDDz5Y9s477yybPXv2sj/96U8rVqxYUWdLAAAAbE9t9q6Jog4f/TUFMAAAQEJks9nMt7/97Y4jRozo1bdv397t2rXrXl5e3rWsrKxzcXFx+4gosKUmp7G2tnZVTU3Nso0bNy5btWrV0tdff/2tJ598cvG999672noAAADYFgpgAACAhPne977X6a9Fb/v27Xu1bNmyV1lZWa8kvXOXLauvr9/wl7/8ZdG6desWL1u2bNHChQsX/fGPf1w8derUjbYDAADAliiAAQAAmqhsNps59dRTuxx66KH9+/Tp87n27dv3Ly8v719UVOSRzXlq06ZNKzZu3Pj6+++//8abb775xqOPPvrG3XffvcpmAAAA+CsFMAAAQBNx6qmndvniF784qHfv3v3btWv3uYqKis8VFhaW2wxbUl9fv37Dhg1vfPDBB68vXrz4jccee2z+jTfeuNxmAAAA8pMCGAAAYBc45phjWn/rW9/aq3///kPatGnTv6Kiop9HOLO9NDQ0VG/cuPGtNWvWLFy4cOGcO+6445WHHnporc0AAACknwIYAABgJzjjjDO6f+lLX9qrV69eg1u3bj2orKysR0RkbIadJFddXb103bp18xcvXjz30UcffeXqq69+x1oAAADSRwEMAACwnZWWlhb86le/2u3QQw8d1r17931btmw5qLCwsMxmaEoaGhqqP/zww/nvvPPOzGeeeWbW2LFj36ipqWm0GQAAgGRTAAMAAGwHP/7xj7t+9atf3bdXr15D27Ztu1c2m21jKyRJXV3dmg8++OCVRYsWvfznP/95xh/+8IdltgIAAJA8CmAAAIBtcOKJJ7Y75ZRTDujXr9+w1q1bD81ms61shTSpq6tbt3bt2pfffPPNWbfccsvUe++9d7WtAAAANH0KYAAAgE+hoqKi4IILLhg0YsSI/bp27bpfy5YtB2YymUKbIR/kcrmGDz/8cP6777474/nnn59x4YUXvrZx40aPiwYAAGiCFMAAAAAf4/jjj2/7/e9//8D+/fsf2Lp1630KCgpKbAUiGhsbN61fv37eW2+9NeWGG2545u67715lKwAAAE2DAhgAAOB/ZLPZzAUXXPC5I4888sDu3bsfWFFRsVtEFNgMbFl1dfWSd999d8qsWbNmnnvuuS+vW7euwVYAAAB2DQUwAACQ10pLSwsuvfTSQYcccsjBXbt2HVFWVtbDVmDb1dbWrnr//fdfmDp16uRf/vKXL65evbreVgAAAHYeBTAAAJB3Bg0aVHrBBRd8fs899zywQ4cOBxQVFbWwFdj+Ghsba9euXTtrzpw5T59//vmTX3755WpbAQAA2LEUwAAAQF4YNmxY8/POO+/gIUOGHOZ9vrDz/W0ZfNFFFz07a9asKlsBAADY/hTAAABAarVq1arwyiuv3HfEiBEjO3TocFBhYWGZrcCu19DQUP3+++8/O2XKlIk/+clPZm7cuLHRVgAAALYPBTAAAJAqrVq1Kvztb3+7/3777Xd4x44dRxQWFpbbCjRdDQ0NG99///0pM2bMeOqHP/zhC8pgAACAz0YBDAAApMJZZ53V45vf/OaRvXr1GllaWtrVRiB5ampq3l28ePHEO++8c9LVV1/9jo0AAABsPQUwAACQWMOHDy+/6KKLvjB48OCjW7RoMdBGID0+/PDDV+fNmzfhvPPOe3L69Ol/sREAAIBPRwEMAAAkSqtWrQpvuOGGQ/bbb79/atOmzX6ZTCZrK5BeuVyubs2aNTNmzJjx2JgxYyavW7euwVYAAAA+ngIYAABIhB//+Mddv/e9732lZ8+e/1RcXNzWRiD/1NbWfvD2228/dssttzz029/+9l0bAQAA+L8UwAAAQJNVUVFRcO21137+4IMPPrZ169b7ZTKZAlsBIqJxzZo1M59//vnxp5122hR3BQMAAPx/CmAAAKDJOeWUUzqefvrpx/bu3ftL2Wy2jY0AH6e+vn7j0qVLH/vd7373x+uvv36ZjQAAAPlOAQwAADQJ2Ww2c+uttx5wyCGHnNC6deu9I8LdvsDWaFy7du1L06ZN+/OPfvSjZ1evXl1vJQAAQD5SAAMAALtU//79S6655pp/2nPPPY8tLy/vayPAZ1VTU7NswYIF488999wHp06dutFGAACAfKIABgAAdomf//znPU855ZQTu3btemRhYWGZjQDbW2NjY92KFSuevOWWW+689NJLF9kIAACQDxTAAADATuMxz8Cusn79+rlPP/30f5188slT6+rqcjYCAACklQIYAADY4fr27Vv8hz/84a+Pee5nI8CuUlNT8+68efPu/8EPfvDgwoULN9kIAACQNgpgAABghxkyZEjpNddc89XBgwefWFxc3MFGgKaitrZ21dy5c+/5yU9+8uc5c+bU2AgAAJAWWyqAPYoNAADYJqNHj+4wb968n06ZMuXRYcOGnaH8BZqa4uLi9sOGDTtjypQpj86bN++nJ510UntbAQAA0s4dwAAAwFY599xze33/+9//dufOnY/IZDJZGwGSIpfL1S1fvvzJG2644fbLLrvsbRsBAACSyiOgAQCAz+y8887r+53vfOfbHTt2PDyTyRTaCJBUuVyuYcWKFU/cdNNN//XrX/96sY0AAABJowAGAAC22WWXXTboG9/4xg9at249zDaAtFm7du2su++++9pzzjnnNdsAAACSQgEMAABsNcUvkE8UwQAAQJIogAEAgE9N8Qvks7Vr18665557rvv5z38+3zYAAICmaksFcGHlwOj6UV9orIqoWZG1PQAAyBO/+MUvet9xxx3nHHrooT8pLS3tYiNAPiotLe2y7777HvP973+/X1lZ2ZIpU6assxUAAKCpKetcHwXlH/01BTAAAOS5M844o/u99957zpe//OWflZeX94qIjK0AeS5TXl7e8+CDDx71/e9/v3dEvDVjxowPrQUAAGgqFMAAAMD/ceKJJ7a77777fjJq1Kh/KS8v7xOKX4B/lCkvL+99+OGHj/rWt77VfvXq1Qvnz59fbS0AAMCutqUC2DuAAQAgzwwdOrTs+uuvP6l///4nFRYWltkI20NjY2Ns2rQpqquro6amJurr62PTpk2xefPmqK+vj+rq6qivr4/NmzfHpk2boqGhYZv/fxUWFkZJSUk0a9YsioqKoqysLIqKiqJZs2ZRUlISRUVFUVpa+r9/FRQUCIjtoqGhoeq11167a8yYMffMmTOnxkYAAIBdZUvvAFYAAwBAnujUqVP2nnvuGbXXXnudnM1mK22Ej9PQ0BAbN26MDRs2/J+/Nm7cGBs3boyamprYtGlTbNq0KWpqaqK2trbJnqe4uDhKSkqitLT0f/9eUVERFRUV0aJFi//zV0VFRRQWFvog8LHq6urWvvjii7eceOKJf169enW9jQAAADubAhgAAPLcXXfdddAXv/jF00tLS7vZRn7L5XKxYcOGWLt2baxbty7Wrl37d3+tW7cuNmzYkPd7atGiRbRu3TpatWoVrVu3jjZt2vzvf27dunW0aNHCh4morq5e+sgjj1zzne98Z6ptAAAAO5MCGAAA8tTVV189+MQTTzyzoqJioG3kj8bGxli5cmUsX748Pvjgg1i9evX//n3t2rXR2NhoSZ9RYWFhtGrVKtq1axdt27b937937tw5OnTo4LHTeWbDhg3z77333qvOPPPMebYBAADsDApgAADIM1/72tfaXHrppad27979qIjQRKVUQ0NDrFq1KlasWBHvv//+//595cqVTfqRzGlXXFwcHTp0iI4dO0bnzp2jY8eO0alTp2jXrp1HS6dYLpdrfOeddx76+c9/fv2ECRPW2QgAALAjKYABACBP9OrVq9ldd931jT322OM7hYWFZTaSHh9++GG88847sXTp0njvvfdixYoVsXr16mhoaLCchCgsLIz27dtHp06dolu3btG9e/fo3r27x0mnTENDQ9W8efNu++Y3v/nHJUuWbLYRAABgR1AAAwBAHrjrrrtG/NM//dOZJSUlXWwj2davXx9Lly6Nd955539L3w8//NBiUqqysvJ/y+C//tWqVSuLSbiamppljz322G9Gjx49xTYAAIDtTQEMAAAp9qtf/arPD3/4w5+1atVqL9tIno0bN8aSJUvirbfeikWLFsV7770XmzZtspg8V1JSEl27do0+ffpE3759o3fv3lFeXm4xCbRu3bqXr7322ivGjh27yDYAAIDtRQEMAAApNGjQoNI77rjju7vttttJBQUFWRtJhtWrV8ebb74ZixcvjiVLlsTy5cujsbHRYtiigoKC6Ny5c/Tu3Tt69+4d/fr1i7Zt21pMQjQ2Nta98cYbd33rW9+6ff78+TU2AgAAfFYKYAAASJHS0tKCBx988Jj99tvvn7PZbBsbaboaGhri7bffjrfeeisWLFgQS5YscXcv201FRUX06tUr+vbtG3379o2ePXtGYWGhxTRhdXV1a2bMmHHjV77ylYdqamr85gcAALDNFMAAAJASp59+erdf/vKX51ZWVu5jG03T6tWr47XXXouFCxfGm2++GRs3brQUdooWLVpE3759Y8CAATFw4EB3CDdh69evf/E//uM//vPqq69+xzYAAIBtoQAGAICEGzRoUOm99977w969ex+byWTc4teErF+/PubNmxcLFiyIN954Q+FLk9GiRYvo169fDBgwIPbYY4+orKy0lCYkl8s1LF68eNyJJ554rcdCAwAAW0sBDAAACXbNNdcMOemkk35RVlbWyzZ2vVwuF++++27MnTs3XnvttViyZIl3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B7lcrm7y5Mm//vKXv/yIbQAAwK63pXcAK4ABAMg7paWlBTNnzjyzT58+x9vG39uwYUOMGzcuZsyY4VHPQF7KZDKx3377xde//vWoqKiwkH+waNGiP+27775X1dTUeCwEAADsQgpgAAD4H926dctOnjz5V506dRppG/9fLpeLqVOnxp///OfYuHGjhQB5r6KiIkaNGhX777+/x0L/g+XLlz9+6KGHXvLuu+/W2QYAAOwaWyqAvQMYAIC8MXz48PInnnjiynbt2o2wjf/vnXfeiWuvvTaee+652Lx5s4UARMTmzZtjzpw58dprr0XPnj2jRYsWlvI/Kioq+n7rW98aMnXq1Ofee+89f3AAAMAusKV3ACuAAQDIC9/+9rc73n777X9o0aLFANv4b1VVVXHXXXfFvffeG+vXr7cQgI+wbt26eP7552P9+vWx2267RVFRkaVERElJSefjjjvuoA8++GDKK6+88hcbAQCAnUsBDABAXjv//PP7XXzxxX8oKSnpbBv/bfr06XHttdfGokWLLAPgU3jnnXdi2rRp0bp16+jc2R8nERHZbLbyC1/4whElJSUvTp48eY2NAADAzqMABgAgb/3ud7/b60c/+tFVRUVFrWwjYs2aNXHzzTfHpEmTora21kIAtkJtbW289NJL8c4770Tfvn2jtLQ073dSWFhYNnz48C/26dNn4UMPPbTMpwQAAHYOBTAAAHnp1ltv3f+b3/zmfxYWFjbP913kcrl4/vnn4/rrr4/ly5f7cAB8BitXroxp06ZFRUVFdOvWLTKZTF7vo6CgIDto0KBDBw0atOiBBx54xycEAAB2vC0VwJmex8Z+H/WF+pURa17ym6wAACTTww8//KXDDjvsXzKZTN6/rPGDDz6I22+/Pd544w0fDIDtbMCAAfGtb30r2rRpk/e7yOVyjVOmTPn1yJEjH/LJAACAHavN3jVR1OGjv6YABgAgdV555ZXTPve5z30r3/fQ0NAQjz32WDz++ONRV1fngwGwg2Sz2Tj66KPjC1/4QhQUFOT9Pl5//fU79tprr9/7ZAAAwI6jAAYAIC9ks9nMyy+/fFafPn2Oz/ddvPvuu3HbbbfFe++954MBsJN069YtvvOd70S3bt3yfhdLliy5f5999rmypqam0ScDAAC2PwUwAACpV1paWjBr1qyzevfufVw+7yGXy8WTTz4ZDz74oLt+AXaBbDYbxxxzTBxxxBF5fzfw0qVLHxg6dOjlSmAAANj+FMAAAKRar169mk2ePHlsu3btDsrnPaxcuTJuueWWePvtt30oAHaxnj17ximnnBIdOnTI6z2sXr16yiGHHPIvS5Ys2exTAQAA28+WCuDCyoHR9aO+0FgVUbMia3sAADRpQ4cOLXvqqacub9Omzf75uoNcLhfPPPNMXH/99bF27VofCoAmYP369TFlypQoKSmJnj17RiaTycs9NG/evPtJJ500ZPLkyc+sWLHCoykAAGA7KetcHwXlH/01BTAAAIk1ZMiQ0kceeeSKVq1a7Z2vO6iuro7bb789nnjiiWhs9IRNgKaksbEx5s+fH++//34MGDAgstn8/DlLaWlpp6997WuDn3rqqadXrlxZ75MBAACfnQIYAIDUOfTQQ1s8+OCDv2/ZsuUe+bqDOXPmxNVXX+2RzwBN3PLly+OFF16Ijh075u0joUtLSzudcMIJ+7/00ktPv/3227U+FQAA8NkogAEASJVhw4Y1v++++37TsmXLQfl4/vr6+hg/fnz88Y9/jNpaP0MHSILNmzfHiy++GJs3b47ddtstCgoK8m4HxcXFbY866qg9n3vuuaeXL1/ucdAAAPAZKIABAEiNI488snLcuHG/b9GixcB8PP97770XV111VcyZM8eHASCBFi1aFC+//HL069cvWrRokXfnLykp6XDcccftP2fOnGcWLVq0yScCAAC2jQIYAIBUOPLIIyvvvPPO35aXl++Wj+d/+umn48Ybb4wPP/zQhwEgwf7yl7/ECy+8ECUlJdGrV6+8O3+zZs3aHHXUUfspgQEAYNspgAEASLxjjz227W233faH5s2b98m3s1dVVcXNN98cTz31VDQ2NvowAKRAY2NjzJ8/P5YtWxYDBgyIZs2a5dX5mzVr1uaYY4458M0333xm4cKFNT4RAACwdRTAAAAk2qGHHtritttuuzofy9+33347rrnmmli8eLEPAkAKvf/++/HKK69Enz59orKyMq/Ons1mK4888sh9Zs6c+dTSpUs3+zQAAMCnpwAGACCxjjjiiJb33nvvteXl5f3y6dy5XC4mTZoUN998c1RVVfkgAKRYVVVVTJ06NbLZbPTp0ycymUzenL24uLjtV7/61c+/8sorTy1evLjWpwEAAD4dBTAAAIl06KGHtrj33nt/l2/lb3V1ddx0000xefLkyOVyPggAeSCXy8WCBQvi3Xffjd133z2y2fz5mUyzZs1aH3300fvNmDHjSXcCAwDAp6MABgAgcYYOHVo2fvz4qysqKgbk07mXLVsWV111lUc+A+SplStXxiuvvBKf+9znoqKiIm/O3axZszZHH3300GeeeebJFStW1PkkAADAlimAAQBIlCFDhpQ++uij17Rs2XL3fDr31KlT49prr42NGzf6EADksaqqqpg+fXq0bds2unTpkjfnLikpaT9q1KihTz755JMrV66s90kAAICPt6UCuMB6AABoSjp16pSdMGHCv1dWVu6RL2dubGyMcePGxR133BF1dW56AiCitrY2br755hg/fnw0NjbmzbkrKyv3mDBhwr9369bNXQkAALCNFMAAADQZrVq1Kpw+ffolbdq02T9fzlxdXR2/+93vYtKkSd73C8DfyeVy8fjjj8fvf//7qK6uzptzt2nTZv8pU6Zc0qpVq0KfAgAA2HoKYAAAmoSKioqC2bNnX9KuXbuD8uXMS5cujYsuuijmz5/vAwDAx3r11VfjoosuiqVLl+bNmdu1a3fQ7Nmz/72iosLPrgAAYCu5iAYAoEmYOXPmz9q1a3dIvpz35ZdfjiuuuCLWrVsnfAA+0bp16+KKK66Il19+OW/O3K5du4Nnzpz5M+kDAMDWUQADALDLvfjii2N69OgxKh/Omsvl4oEHHogbbrghamtrhQ/Ap1ZbWxs33HBDPPDAA3nz2oAePXqMevHFF8dIHwAAPj0FMAAAu9SkSZO+NnDgwFPy4ax1dXVx8803x8SJE73vF4BtksvlYuLEiXHLLbdEXV1dXpx54MCBJ0+aNOlr0gcAgE9HAQwAwC7z6KOPHnXggQeekw9nXbduXfz617+OWbNmCR6Az2zmzJnx61//Ol9eJZA58MADz3n00UePkjwAAHyywsqB0fWjvtBYFVGzImtDAADsEDfeeOO+Rx999EWZTKYw7Wddvnx5XHXVVbFy5UrBA7DdbNiwIWbPnh0DBw6MioqKtB8307179/179uz56sMPP7xc+gAA5LuyzvVRUP7RX1MAAwCw011xxRV7fPe7372qoKCgWdrPOmfOnPjtb38bGzduFDwA2111dXVMmzYtOnfuHB07dkz1WTOZTOHuu+9+eJs2bV6aNGnSKukDAJDPFMAAADQZZ5xxRvef/exnvy0sLCxP+1knTJgQd999d9TX1wsegB2moaEhXnrppchms9G3b99UnzWTyRTttddeB/3lL395dubMmRukDwBAvlIAAwDQJBx00EEVf/jDH64pLi7ulOZz5nK5eOCBB+Kxxx4TOgA77c+eBQsWRF1dXfTv3z8ymUxqz1pQUFBywAEHDJs+ffqkpUuXbpY+AAD5aEsFcIH1AACwMwwaNKj0vvvuu7qsrKxXms9ZV1cX1113XUyaNEnoAOx0EydOjOuvvz7q6upSfc6ysrJef/rTn67u379/idQBAODvKYABANjhKioqCh577LGLKyoqBqb5nNXV1XHNNdfE7NmzhQ7ALvPKK6/ElVdeGVVVVak+Z4sWLQZOnDhxbEVFhZ9vAQDA33CBDADADjdz5syftW3b9sA0n3HdunVx2WWXxRtvvCFwAHa5xYsXx2WXXRZr165N9TnbtWt34MyZM38mcQAA+P8UwAAA7FBPPvnkqB49eoxK8xlXrVoVV1xxRSxfvlzgADQZK1asiCuuuCJWrlyZ6nP26NFj1KRJk0ZJHAAA/lth5cDo+lFfaKyKqFmRtSEAALbZjTfeuO+XvvSlCzOZTGp/8fDdd9+NK6+8MtatWydwAJqc6urqmDVrVvTv3z8qKytTe85u3boN79mz57yHH37Yb2MBAJAXyjrXR0H5R39NAQwAwA5x3nnn9T311FOvLigoKE7rGV977bW45pprorq6WuAANFmbN2+OGTNmRI8ePaJ9+/apPGMmkykYNGjQIYWFhVOee+45v5UFAEDqKYABANipjjrqqFb/8R//8YdmzZq1SusZX3755bj++uujrq5O4AA0eQ0NDfHSSy9Fp06dolOnTqk8Y0FBQXbYsGGfnz9//qQ33nhjk9QBAEizLRXA3gEMAMB21a1bt+wNN9zwnyUlJR3TesYpU6bEjTfeGPX19QIHIDHq6+vjxhtvjKlTp6b2jCUlJZ1uuOGG/+jWrZu7GgAAyFsKYAAAtqunn376XyorK/dI6/kmTZoUd955ZzQ2NgobgMRpbGyMO+64I5588snUnrGysnLw008//UtpAwCQrxTAAABsN88///w3unTp8k9pPd/EiRNj3LhxkcvlhA1AYuVyubj//vtTXQJ36dLlS88+++yJ0gYAIB95BzAAANvFTTfdNPzII488L5PJZNJ4vsceeyzGjx8vaABS47XXXotmzZpF3759U3m+zp0779urV695Dz/88DJpAwCQNlt6B7ACGACAz+wXv/hF7x/+8IdXFxQUNEvj+R544IF45JFHBA1A6ixYsCDq6upiwIABqTtbJpPJDBo06ODGxsbnpk6dul7aAACkiQIYAIAd5oADDqj43e9+99tmzZq1TeP5xo0bF5MmTRI0AKm1aNGi2Lx5cwwcODB1ZysoKMjut99+w5577rnH33vvvc3SBgAgLbZUAHsHMAAA2yybzWbuvPPOfyktLe2exvNNmDBB+QtAXpg0aVI89NBDqTxbaWlpj3vuuedfstlsRtIAAOQDBTAAANvs+eef/06HDh0OTePZHn744Xj44YeFDEDeeOSRR+LPf/5zKs/WoUOHw5599tlvSxkAgHygAAYAYJvcd999hw8ePPjUNJ7t/vvvjwkTJggZgLzz2GOPxX333ZfKs+25554/+NOf/nSYlAEASDvvAAYAYKudccYZ3ceMGXN5QUFBcdrONnHixHjkkUeEDEDeWrx4cWSz2ejbt2/ajpbp06fPvn/5y18mz5w5c4OkAQBIsi29A1gBDADAVhk2bFjzG2+88Q/NmjVrl7azPfroo6l99CUAbI2FCxdGUVFR9OvXL1XnKigoKD7wwAP3e/LJJx9dsWJFnaQBAEiqLRXAHgENAMBWuffee39ZWlraPW3nevzxx+PBBx8UMAD8jz//+c8xceLE1J2rtLS0x3333fdLCQMAkFYKYAAAPrVJkyaN6tSp0xEpPFeMHz9ewADwD8aPHx+TJ09O3bk6der0hUmTJn1VwgAApJFHQAMA8Kmcd955fU888cR/z2QyRWk618yZM+Puu+8WMAB8jNdeey06duwYnTt3TtW5unbtuk9BQcHzzz333DopAwCQNN4BDADAZ3LEEUe0vOKKK67NZrOVaTrXyy+/HDfffHPkcjkhA8DHyOVyMXv27OjSpUt06tQpNefKZDJF++yzz/CpU6c+9u67726WNAAASeIdwAAAbLNsNpu55ZZb/q2kpKRjms61YMGCuPnmm6OxsVHIAPAJGhsb4+abb44333wzVecqLS3tcvfdd5+fzWYzUgYAIC0UwAAAbNGkSZO+3rZt2wPTdKZly5bFDTfcEPX19QIGgE+prq4urr322li+fHmqztWuXbsDH3/88VESBgAgLTwCGgCAj3XZZZcN+upXvzo2k8mk5hcH33///bjyyiujqqpKwACwlerq6uLll1+OIUOGRHl5eWrO1aVLl31LS0unPvPMM2ukDABAEngENAAAW61///4lJ5988q8ymUxRWs60YcOG+P3vfx8bN24UMABso40bN8bvfve7VP15WlBQkP3hD394ft++fYslDABA4q9vrQAAgI/y4IMPnl1WVtYrLeeprq6O3/zmN7Fq1SrhAsBntGrVqrjyyiujuro6NWcqKyvr8/DDD58lXQAAkk4BDADA/zF+/Pgju3XrdnRazlNfX5/KdxYCwK60fPnyuO6666K+vj41Z+rRo8dXx40bd4R0AQBIMgUwAAB/53vf+16nI4444py0nCeXy8Vtt90Wb7zxhnABYDt7/fXX47bbbotcLpeaMx155JHnfvvb3+4oXQAAkkoBDADA/6qoqCi4+OKLLywsLCxPy5nGjx8fs2bNEi4A7CCzZs2Khx56KDXnKSwsrPj1r399QUVFhZ+bAQCQSC5kAQD4XxMnThxdWVk5OC3nef7552PixImCBYAd7LHHHosXXnghNeeprKzc89FHHz1RsgAAJFFh5cDo+lFfaKyKqFmRtSEAgDxxwQUX7DZq1KgLM5lMYRrO8+qrr8Ytt9ySqkdSAkBT/7O3d+/e0a5du1Scp2PHjkNzudxzU6ZMWSddAACamrLO9VHwMc/wcwcwAADRt2/f4h//+McXZzKZVPwG4HvvvRc33HBDNDY2ChcAdpKGhoa47rrrYtmyZak4T0FBQfbss88e27dv32LpAgCQqGtZKwAAYPz48T8qKyvrkYazbNiwIX7/+99HbW2tYAFgJ9u0aVP8/ve/j40bN6biPGVlZb3GjRs3RrIAACSJAhgAIM/ddNNNw/v06XN8Gs5SX18f1157baxdu1awALCLrFmzJq699tqor69PxXn69ev3jd///vdDJQsAQFIogAEA8thBBx1Uceyxx/5rRGTScJ477rgjFi9eLFgA2MUWLVoUd955Z1qOU/CNb3zj34YNG9ZcsgAAJOIC1goAAPLXzTfffFZxcXG7NJxl4sSJMX36dKECQBMxbdq0mDRpUirOUlJS0unOO+88Q6oAACSBAhgAIE/913/914FdunT5UhrO8tprr8Wf//xnoQJAEzN+/PhYsGBBKs7SrVu3o2+66abhUgUAoKlTAAMA5KEvfelLlV/5yld+lYazrFixIq6//vpobGwULAA0MY2NjXHdddfFihUr0nCczHHHHfergw46qEKyAAA0ZQpgAIA8dPXVV5+ezWYrk36OmpqauPbaa2PTpk1CBYAmatOmTXHttddGTU1N4s+SzWbb3njjjT+RKgAATZkCGAAgz9x6663Du3Tp8uWknyOXy8Utt9wSK1euFCoANHErV66MW2+9NXK5XOLP4lHQAAA0dQpgAIA8MnTo0LKvfvWrv0jDWSZMmBBz584VKgAkxJw5c+Kxxx5LxVlGjRr1i6FDh5ZJFQCApkgBDACQR+64444fFRcXd0z6OV5++eV45JFHBAoACfPQQw+l4he4SkpKOt5xxx0/lCgAAE2RAhgAIE9cfvnlu/fs2XNU0s/xwQcfxB133JGKR0gCQL7J5XJx2223xZo1axJ/lp49ex57+eWX7y5VAACaGgUwAEAe6NatW/a73/3uv2YymURf/9XX18cNN9wQ1dXVQgWAhKqqqoobb7wx6uvrE32OTCZT8N3vfvdX3bp1y0oVAICmRAEMAJAHxo8ff0pZWVmvpJ/jnnvuiaVLlwoUABJuyZIlcd999yX+HGVlZT3Hjx9/ikQBAGhKFMAAACn385//vOeAAQNGJ/0c06dPjylTpggUAFJi8uTJMWPGjMSfY8CAAaN//vOf95QoAABNhQIYACDFstls5qyzzjo3k8kk+tGEK1asiLvvvlugAJAyd911V6xYsSLRZ8hkMtmzzjrr3Gw2m5EoAABNgQIYACDFxo0b98XKysq9knyG2trauOGGG6K2tlagAJAyf/1zfvPmzYk+R2Vl5V7jxo0bKVEAAJoCBTAAQEoNHz68/OCDDz4t6ee4//77Y/ny5QIFgJRavnx5jBs3LvHnGDFixI+HDRvWXKIAAOxqCmAAgJS69dZbT8tms22TfIYZM2bEc889J0wASLnJkyfHzJkzE32G4uLitrfffvtp0gQAYFdTAAMApNBVV121R48ePb6S5DOsXLky7rrrLmECQJ64++6744MPPkj0GXr27PnVK664Yg9pAgCwKymAAQBSprS0tOAb3/jGT5N8rdfY2Bi333679/4CQB6pqamJ2267LRobG5N8jIJvfvObZ5aWlvqZGwAAu+6i1AoAANJlwoQJX6uoqBiQ5DOMHz8+Fi1aJEwAyDNvvvlmPPjgg4k+Q4sWLQY9+OCDx0gTAIBdRQEMAJAiRx55ZOWwYcN+kOQzzJ07N5544glhAkCemjhxYixYsCDRZxg+fPiPjjjiiJbSBABgV1AAAwCkyBVXXHFyUVFRRVLnr6qqijvvvDNyuZwwASBP5XK5uP3226O6ujqxZygqKmrxm9/85mRpAgCwKyiAAQBS4vzzz+/Xu3fv45J8httvvz0+/PBDYQJAnlu3bl3cfvvtiT5D7969jz///PP7SRMAgJ1NAQwAkALZbDZz6qmn/jyTyST2+m769OkxZ84cYQIAERExe/bsmDFjRmLnz2QyBaeeeurPs9lsRpoAAOxMCmAAgBT44x//eERlZeXgpM6/du3auPfeewUJAPyde+65J9atW5fY+SsrKwf/6U9/+oIkAQDYmRTAAAAJ17dv3+JDDjnkR0k+w9133x01NTXCBAD+Tk1NTdx9992JPsPBBx/8o759+xZLEwCAnUUBDACQcHfdddc3S0pKOiV1/smTJ8e8efMECQB8pLlz58azzz6b2PlLSko63nPPPd+SJAAAO4sCGAAgwb70pS9VDhw48KSkzr9mzZoYP368IAGALXrggQdizZo1iZ2/f//+Jx111FGtJAkAwM6gAAYASLArrrji1MLCwvIkzp7L5eK2226LTZs2CRIA2KJNmzbFbbfdFrlcLpHzFxYWll1++eU/kCQAADuDAhgAIKF+8Ytf9O7evftXkjr/s88+G2+88YYgAYBP5Y033ojnn38+sfN369bt6F/96ld9JAkAwI6mAAYASKgf/vCHP8pkMom8nvvggw/igQceECIAsFXGjRsX69atS+TsmUym4NRTT/2xFAEA2NEUwAAACXTdddcNa9eu3YFJnD2Xy8Udd9wRtbW1ggQAtsqmTZvizjvvTOz8bdq02f+mm27aT5IAAOxICmAAgIQpLS0t+NrXvnZ6Uud/4YUXYuHChYIEALbJq6++GjNmzEjs/Mccc8zpFRUVfiYHAMAO42ITACBhbr/99oMrKip2S+LsGzZsiHHjxgkRAPhM7r///qiqqkrk7OXl5X3/67/+6wgpAgCwoyiAAQASpKKiouCwww47Nanz33vvvYn9YS0A0HRs2LAh7r///sTOf9BBB/1zq1atCiUJAMCOoAAGAEiQ+++//+iysrKeSZx9zpw58dJLLwkRANguXnjhhViwYEEiZy8tLe32xz/+8StSBABgR1AAAwAkRN++fYv33Xfff07i7LW1tXHvvfcKEQDYru6+++6oq6tL5Oz77bffKf379y+RIgAA25sCGAAgIW6++eZRxcXFbZM4+yOPPBJr164VIgCwXa1atSoee+yxRM6ezWbb3njjjV+TIgAA25sCGAAgAYYOHVq21157fSeJs7/33nvxxBNPCBEA2CEmTpwYK1asSOTsQ4YM+c7QoUPLpAgAwPakAAYASIBrr732xKKiosqkzZ3L5eKee+6JxsZGIQIAO0R9fX3cddddkcvlEjd7UVFR5bXXXnuCFAEA2J4UwAAATdwBBxxQMWDAgG8kcfYZM2bEW2+9JUQAYId6880348UXX0zk7AMGDPjG8OHDy6UIAMD2ogAGAGjirrrqqhOKiooqkjb3pk2b4oEHHhAgALBT3H///VFbW5u4uYuKilpcffXV7gIGAGC7UQADADRhBx10UEX//v0Teffvww8/HB9++KEQAYCdYv369TFhwoREzj5w4MBvHHDAARVSBABge1AAAwA0Yf/5n/95bGFhYfOkzb1q1aqYPHmyAAGAnerpp5+O1atXJ27uwsLC8ssuu2yUBAEA2B4UwAAATdQBBxxQMWjQoNFJnP3uu++O+vp6IQIAO1V9fX3cddddiZx99913/+bQoUPLpAgAwGelAAYAaKIuv/zyYwsLC8uTNvfcuXNjwYIFAgQAdokFCxbE3LlzEzd3UVFRi9/97ndflyAAAJ+VAhgAoAkaOnRo2aBBgxL37t+6urr405/+JEAAYJf605/+FHV1dYmbe/fdd//mkCFDSiUIAMBnoQAGAGiCfvOb33ylqKioZdLmfu655xL53j0AIF1Wr14dzz33XOLmLioqann11VcfLUEAAD4LBTAAQBPTq1evZoMHD/5m0uaurq6ORx55RIAAQJPwyCOPRHV1deLmHjJkyLe6deuWlSAAANtKAQwA0MTcdNNNxxQXF7dN2twTJkyIqqoqAQIATUJVVVUifzmtuLi43a233uouYAAAtpkCGACgCWnVqlXhXnvtdVLS5l61alU8++yzAgQAmpTJkyfHqlWrEjf30KFDR7dq1apQggAAbAsFMABAE3LLLbccXlJS0jlpcz/44INRX18vQACgSamvr48HH3wwcXOXlJR0vummmw6VIAAA20IBDADQRGSz2cwBBxzw7aTNvWjRonjppZcECAA0SS+99FIsXrw4cXOPGDHiO9lsNiNBAAC2lgIYAKCJuOaaa/YuLy/vm7S5H3roocjlcgIEAJqkXC6XyLuAy8vL+1111VV7SRAAgK2lAAYAaCK+8pWvfDdpM8+bNy8WLlwoPACgSVu4cGG8+uqrrg8BAMgLCmAAgCbgsssuG1RZWblPkmbO5XIxfvx44QEAifDAAw8k7qklrVu33veSSy7pLz0AALaGAhgAoAkYNWrUCUmbefbs2bFs2TLhAQCJsGzZsnjllVcSN/cJJ5xwovQAANgaCmAAgF3sn//5nzt37NjxiCTN3NjYGA888IDwAIBEGT9+fDQ0NCRq5k6dOn1h9OjRHaQHAMCnpQAGANjFfvSjH30tk8kk6rps2rRpsWrVKuEBAImyatWqeOGFFxI1cyaTKfzpT386SnoAAHxaCmAAgF1o0KBBpX369Plqkmaur6+PCRMmCA8ASKQJEyZEXV1dombu27fvV/r27VssPQAAPg0FMADALnTZZZcdXlRUVJGkmadOnRpr164VHgCQSOvXr48pU6YkauaioqLK3/zmN0dIDwCAT0MBDACwi2Sz2cy+++57UpJmrqurc/cvAJB4jz76aOLuAt5///1PymazGekBAPBJFMAAALvI1VdfPbSsrKx3kmaeMmVKbNiwQXgAQKJt2LAhnn/++UTNXFZW1ueqq67aS3oAAHwSBTAAwC7y5S9/+bgkzVtfXx8TJ04UHACQCo8//nji7gL+0pe+dLzkAAD4JApgAIBdYPTo0R3atm07IkkzT5s2LdatWyc8ACAVPvzww5g+fXqiZm7fvv2I0aNHd5AeAABbogAGANgFfvrTn47KZDKFSZm3vr4+HnnkEcEBAKnyyCOPRH19fWLmzWQyhT/96U+/JjkAALZEAQwAsJN16tQp26dPn6OTNLO7fwGANFq3bl1MmzYtUTP36dPnmE6dOmWlBwDAx1EAAwDsZFddddUB2Wy2dVLmbWxsjEmTJgmOVOvYsWN06OCJmgD5aNKkSdHY2JiYebPZbOurrrrqAMkBAPBxFMAAADvZiBEjvp6keV988cVYtWqV4Ei1Ll26xIUXXhinnXZadO3a1UIA8siqVavipZdecj0JAEBqKIABAHaiM844o3tlZeXeSZk3l8vFxIkTBUdeyGQyMXjw4PjVr34VY8aMcUcwQB55/PHHI5fLJWbeysrKvc8444zukgMA4KMogAEAdqJTTjnlqxGRScq8CxYsiPfee09w5JVMJhN77713XHjhhTFmzJho3769pQCk3HvvvRcLFy5M1B9X/3NdCQAA/4cCGABgJ+nVq1ezXr16fTlJM3v3L/nsr0XwBRdcECeffHK0bdvWUgBSLGnXPb169fpyr169mkkOAIB/pAAGANhJrrjiioOLiopaJmXeBN4JAztEYWFhDB8+PC688MIYPXp0VFZWWgpACi1YsCCWLVuWmHmLiopaXnnllYdIDgCAf6QABgDYSYYPH/6VJM2btHfhwY5WVFQUI0aMiEsuuSRGjx4dLVu2tBSAFMnlcvH4448naub99tvvK5IDAOAfKYABAHaC0aNHd6isrByalHnXrl0bL7/8suDgI/y1CL744ovjhBNOiBYtWlgKQEq89NJLsW7dusTMW1lZudfo0aM7SA4AgL+lAAYA2AlOP/30o5J07fXMM89EQ0OD4GALiouL47DDDouxY8fGqFGjoqyszFIAEq6hoSGeeeaZJI1c8D/XmQAA8P8vEq0AAGDHymazmX79+n05KfPW1tbGlClTBAefUnFxcYwcOTIuvfTSGDVqVJSWlloKQII9//zzUVtbm5h5+/Xr9+VsNpuRHAAAf6UABgDYwX7zm9/sWVJS0jkp886YMSOqq6sFB1uppKQkRo4cGZdcckkcffTRUVJSYikACVRdXR0zZ85M0p8/na+44orBkgMA4K8UwAAAO9gXvvCFLyVl1lwuF08//bTQ4DNo3rx5HHXUUXHJJZfEyJEjI5vNWgpAwjz11FORy+USM++RRx75ZakBAPBXCmAAgB1oyJAhpZ07dz4iKfO+/vrrsWLFCsHBdlBeXh6jRo2KSy+9VBEMkDArVqyI119/PTHzdunS5fD+/ft79AQAABGhAAYA2KHGjh17aGFhYWJeCOruX9j+KioqYtSoUXHxxRfH4YcfHkVFRZYC4LpouyosLGz+H//xHwdLDQCACAUwAMAOteeeex6ZlFnXrl0b8+bNExrsIK1atYrjjz8+LrroohgxYkQUFPh2DKApmzdvXqxZsyYx8+61115HSg0AgAgFMADADnPMMce0bt269b5Jmfe5556LxsZGwcEO1qZNmxg9enRcfPHFimCAJqyxsTGee+65JP35MvyYY45pLTkAAPykAQBgBznzzDMPz2Qyibje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FpafffbZvaQFAJA+CmAAgE9p//3375+EOV9//XVhAXmjvLw8Ro0aFf/+7/8eI0eOjGw2aymA67FP6fOf//xAaQEApI8CGADgU+rRo8fuTX3G2traePvtt4UF5J2KiooYNWpUXHzxxXH44Yc3+XdvAum2ePHiRLySo1evXoOkBQCQPgpgAIBPqXXr1k3+DoklS5ZEQ0ODsIC81apVqzj++OPj4osvjhEjRkRBgW97gZ2voaEhlixZ0uTnbNOmjQIYACCFfCcMAPApDBkypLR58+a9m/qcb775prAAIqJ169YxevToGDt2rCIYcF32MZo3b95n0KBBpdICAEgX3wEDAHwKp556av9MJtPkr53eeustYQH8jTZt2sTo0aPjvPPOi+HDhyuCAddlfyOTyRT84Ac/+Jy0AADSxXe+AACfwuDBg5v84/Hq6+tj0aJFwgL4CJ06dYqTTz45/u3f/i323nvvyGQylgLsUIsXL07Eqzn23HPPgdICAEgXBTAAwKfQpUuXAU19xnfeeSfq6uqEBbAFnTt3jjFjxiiCgR2utrY23n333SRc53oPMABAyiiAAQA+hZYtW/Zv6jN6/DPAp9elS5cYM2ZMnHvuuTF48GALAfL2+iwJ17kAAGwdBTAAwCcYPnx4eUlJSeemPqfHPwNsvV69esVpp50W55xzTvTvrwMB8u/6rLS0tPPw4cPLpQUAkB4KYACAT/Ctb31rt4ho8s8IXbx4sbAAtlGfPn3irLPOinPOOSd22203CwG2i4T8gl7m29/+dj9pAQCkhwIYAOAT7L777k2+CVi7dm1s2LBBWACfUZ8+feLss8+OM888M3r27GkhwGfy4Ycfxrp165r8nAMHDlQAAwCkSJEVAABsWadOnZr8D8TefvttQQFsRwMGDIgBAwbEggULYvz48bF06VJLAbb5Oq1Vq1audwEA2GkUwAAAn6CyslIBDJCnBgwYEP3794958+bFQw89FO+++66lAFtlyZIlsddeezX1613PvgcASBEFMADAFnTq1CnbvHnzXk19ziVLlggLYAfJZDIxePDg2GOPPeLll1+OBx98MFauXGkxQGqu05o3b967Xbt2RatXr66XGABA8nkHMADAFowZM6ZnJpPJNuUZGxsbPZoUYCfIZDKx9957x4UXXhhjxoyJ9u3bWwrwiZYuXRqNjY1NesaCgoLsqaee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k8nE7NmzY+LEibFmzRoNAXif/VNSzJo161kTAwBongTAAAC70O233/7KOeecszU/P78022sdMGBAtG/f3tWu0My9+uqrMWnSpFi1apVmALyPjh07xgEHHJCIWhsbG6u/8Y1v/NXUAACaJwEwAMAutHLlyob169fP6tat2+hsrzWVSsXhhx8ekyZNMjhohubMmROTJ0+OJUuWaAbAh3D44YdHKpVKRK3r16+fVVFR0WhqAADNU54WAADsWq+++mpirts77LDDDAyamTfffDP+/d//PX7yk58IfwE+pFQqFSNGjEhMva+88sozpgYA0Hw5AQwAsIvddNNNz5166qnV+fn5rbO91m7dukX//v1j4cKFBgc5btmyZfHYY4/F/PnzNQPgIzrggAOic+fOiai1sbFxy4033jjL1AAAmi8BMADALrZy5cqG8vLyGT179vx0Euo9+uijBcCQw5YvXx7jxo0T/AJ8wv1SUpSXlz9TXl7eYGoAAM2XABgAYDeYMWPGUxdccEEiAuAhQ4ZE69ato7q62uAgh6xcuTImTJgQc+fOjUwmoyEAH1ObNm3i0EMPTUy9zz777FOmBgDQvPkGMADAbvDVr371lYaGhk1JqLWgoCCOOOIIQ4McsW7duvj5z38ed955Z8yZM0f4C/AJjRw5MvLz8xNRa0NDw8abbrrpVVMDAGjenAAGANgNKisrm1atWjW9T58+5ySh3qOPPjqefPJJQREk2Pr16+Oxxx6L2bNn+3cZYBdJpVIxatSoxNS7cuXKadXV1WmTAwBo3pwABgDYTaZNm5aY6/c6duwYAwYMMDRIoA0bNsSvf/3r+Nd//dd49dVXhb8Au9CAAQOiY8eOian36aefftLUAAAQAAMA7CZf+9rX5tTX11ckpd6jjjrK0CBBqqqq4v77749vf/vb8eKLL0ZTU5OmAOxiRx55ZGJqra+vX/eNb3zjdVMDAMAV0AAAu0ltbW16xYoVT++///6fT0K9hx56aLRt2zaqqqoMD7LYli1bYsqUKfHcc8/F9u3bNQRgN2nbtm0MGTIkMfUuX778qdraWtc/AwDgBDAAwO70xz/+cUJSas3Pz4/jjjvO0CBL1dTUxKOPPhq33XZb/OUvfxH+Auxmxx57bOTn5yel3Myvf/3rCaYGAECEABgAYLe66667llZXV89PSr1HH310tGjRwuAgi7wd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qATAAABZ4umnn968fPnyxF3xN3r06GjXrp0BAgBZqUOHDnH88ccnru5ly5ZNmD59+hYTBADgoxIAAwBkkbvvvvtPmUymKUk1FxYWxumnn254AEBWOvPMMxP3yYpMJtN41113/dH0AAD4OATAAABZ5Be/+MWatWvXTkta3UcccUT06tXLAAGArNK7d+847LDDEld3eXn5X+6///51JggAwMchAAYAyDIPP/zwn5JWcyqVijPPPNPwAICsMmbMmEilUomr+8EHH/yT6QEA8HEJgAEAsszXv/71NzZs2DAraXUPHDgwDj74YAMEALLCoEGDYsCAAYmru6KiYuatt966wAQBAPi4BMAAAFlo3Lhxv01i3WPGjIm8PFtMAGDvysvLizFjxiSy9j//+c+/NUEAAD7RflgLAACyz/XXXz+nqqrqr0mru1evXnHUUUcZIACwVx1zzDHRvXv3xNW9adOmV2666aa5JggAwCchAAYAyFJ/+tOf7k1i3WPGjInS0lIDBAD2ijZt2sRZZ52VyNofeOCBe00QAIBPSgAMAJClbrrpprlJPAVcXFwcZ555pgECAHvFWWedFS1btkxc3Zs2bXrl5ptvnmeCAAB8UgJgAIAsNm7cuF8lse5Ro0ZF7969DRAA2KP69OkTI0eOTGTtjz322K9MEACAXUEADACQxcaOHTu7qqrqb0mrO5VKxfnnnx+pVMoQAYA9tv/4/Oc/n8j9R2Vl5d+uueaav5kiAAC7ggAYACDLTZ069bdJrLtv374xZMgQAwQA9ojDDjsssTeQTJ48+TcmCADAriIABgDIcpdeeumLVVVVryax9s9//vNRXFxsiADAblVaWhrnn39+Imuvqqr66+WXX/6SKQIAsKsIgAEAEuChhx76WRLrLisri9NPP90AAYDd6qyzzoqSkpIklp753e9+91MTBABgVxIAAwAkwA033DB3w4YNs5JY+3HHHRd9+vQxRABgt+jbt28cddRRiay9oqJi1te//vU3TBEAgF1JAAwAkBA///nPfxoR6aTVnUql4vOf/3zk5dl6AgC7Vn5+flx00UWRSqWSWH76F7/4xX+bIgAAu5q3cAAACXHHHXe8tW7duulJrL13795xzDHHGCIAsEudcMIJ0b1790TWXl5e/pc77rjjLVMEAGBXEwADACTI3XfffW8mk2lKYu1nnXVWtG3b1hABgF2iQ4cOcfrppyey9kwm03T33Xf/3BQBANgdBMAAAAlyzz33rCgvL386ibW3bNkyzj33XEMEAHaJc889N1q0aJHI2tesWTP1xz/+8UpTBABgdxAAAwAkzA9/+MOfZzKZhiTWPnz48Bg0aJAhAgCfyKGHHhpDhw5NZO3pdLrhBz/4wS9MEQCA3UUADACQMPfee+/qRYsWPZDU+i+++OIoKSkxSADgY2ndunVcfPHFia1/4cKFf7jvvvvKTRIAgN1FAAwAkECXXXbZrxsaGjYlsfaysjJXQQMAH9u5554bpaWliay9oaFh4+WXX/47UwQAYHcSAAMAJNDs2bNrXn311V8ntf4jjjgiDj74YIMEAD6SwYMHx+GHH57Y+l955ZX7Zs+eXWOSAADsTgJgAICEOueccx6tqalZmtT6L7roomjZsqVBAgAfSsuWLeNzn/tcYuuvqalZMmbMmMdMEgCA3U0ADACQUJWVlU3Tpk37RVLrb9++fZx++ukGCQB8KGeccUa0b98+sfU/+eST91ZXV6dNEgCA3U0ADACQYOedd960qqqqV5Ja/wknnOAqaADgAx188MFx/PHHJ7b+TZs2vXzBBRc8a5IAAOwJAmAAgIT74x//eG9EZJJYeyqVigsuuMBV0ADAe2rZsmVccMEFkUqlkrqEzP333/8zkwQAYE8RAAMAJNzNN988b9WqVU8ktf6OHTsm+nt+AMDudcEFF0THjh0TW/+KFSse//rXv/6GSQIAsKcIgAEAcsCNN974k6ampq1JrX/kyJExdOhQgwQA/pdPfepTMWLEiMTW39TUVH3zzTf/t0kCALAnCYABAHLAxIkTK//+97//KslruPDCC6OsrMwwAYCIiGjTpk18/vOfT/QaZs+efd/EiRMrTRMAgD1JAAwAkCPOPvvsh2pqapYntf7S0tK46KKLDBIAiFQqFV/84hejtLQ0sWuoqal566yzznrYNAEA2NMEwAAAOaKioqJx0qRJP07yGgYPHhwjR440TABo5o444og46KCDEr2GJ5544qeVlZVNpgkAwJ4mAAYAyCGXXHLJzIqKihlJXsMFF1wQ3bp1M0wAaKZ69uyZ+KufKyoqZnzhC1+YZZoAAOwNAmAAgBzzb//2b/ek0+ntSa2/RYsWceWVV0ZhYaFhAkAzU1hYGF/60pcSvQ9Ip9Pb/+3f/u0e0wQAYG8RAAMA5Jh777139aJFix5M8hq6d+8eZ555pmECQDNzxhlnRPfu3RO9hsWLFz947733rjZNAAD2FgEwAEAO+uxnP/vL2traRL94PPHEE2Pw4MGGCQDNxKBBg+Kkk05K9Bpqa2tXn3vuub80TQAA9iYBMABADlq8eHH9uHHj/j3Ja0ilUnHJJZdE27ZtDRQAclybNm3ikksuiVQqleh1jBs37t8XL15cb6IAAOxNAmAAgBx1+eWXv1RRUTEjyWsoLS2NL3zhC4l/GQwAvLe3f+mrdevWiV5HRUXFM5dffvlLJgoAwN4mAAYAyGE33HDDXU1NTVuTvIaDDjrI94ABIId95jOfiUMOOSTRa2hqaqq+4YYbfmiaAABkAwEwAEAOGzdu3MbZs2cn/jt0p5xyiu8BA0AOOuSQQ+LTn/504tfx17/+9efjxo3baKIAAGQDATAAQI77zGc+81B1dfXCJK8hlUrFF7/4xejQoYOBAkCO6NixY3zpS19K/KceNm/ePO+00057xEQBAMgWAmAAgBxXXV2dfuCBB34UEekkr6O4uDguvfTSyMuzhQWApMvPz4/LLrssiouLk76U9P333/+ftbW1aVMFACBbeHsGANAMXH/99XMWLVr0YNLXsf/++8e5555roACQcOedd1707ds38etYuHDhH7/61a++bqIAAGQTATAAQDNxySWX/Lyurq486es4/vjjfQ8YABJs2LBhccwxxyR+HXV1dWsuvPDC+0wUAIBsIwAGAGgmXnvttdoHHnjguxGRSfI6UqlUfOlLX4oePXoYKgAkTO/evePSSy9N/Hd/IyLzwAMPfO/111+vNVUAALKNABgAoBm5+uqr/7Z06dJHk76OoqKiGDt2bJSWlhoqACRE69at46qrrorCwsLEr2X58uXjrr766r+ZKgAA2UgADADQzJx33nn/r66ubnXS19GhQ4e4/PLLIy/PlhYAsl1eXl5cfvnl0b59+8Svpb6+ft0ll1zyE1MFACBr999aAADQvLz++uu1Dz744Pcj4VdBR0QMGDAgzjrrLEMFgCw3ZsyYOPDAA3NiLY899tgPXnnllW2mCgBAthIAAwA0Q1/5ylf+umbNmqm5sJaTTz45Dj30UEMFgCw1ZMiQOOmkk3JiLWvXrv3LpZde+oKpAgCQzQTAAADN1GWXXfYf9fX1FUlfRyqViksvvTS6d+9uqACQZXr06BFf/OIXI5VKJX4tDQ0Nm6655pofmioAANlOAAwA0EzNmDGj+oEHHvhO5MBV0C1btozrr78+2rZta7AAkCXatWsX1113XbRs2TIXlpN56KGH/nXSpElVJgsAQLYTAAMANGNf+cpX/rpkyZI/58Ja2rZtG1dffXW0aNHCYAFgL2vRokVcffXVOfPLWUuXLn30iiuueNlkAQBIAgEwAEAzd+655/6ktrZ2eS6spXfv3jlzzSQAJNXbn2fYZ599cmI9tbW1y88555wfmywAAEkhAAYAaOYWLFhQ97Of/ezbmUymMRfWM2zYsDjllFMMFgD2kk9/+tMxdOjQnFhLJpNp/NnPfvbtBQsW1JksAABJIQAGACBuvfXWBfPnz78/V9Zz5plnxuDBgw0WAPaw4cOHx2c+85mcWc/8+fN/d+utty4wWQAAkkQADABARESMGTPmvpqamrdyYS2pVCouu+yy6Nmzp8ECwB7Su3fvuPjii3PmUwxbt25ddPrpp//aZAEASBoBMAAAERGxcuXKhh/+8Ie3pdPpnLjisGXLlvEv//Iv0aVLF8MFgN2sS5cucf3110dRUVFOrKepqanmu9/97jfKy8sbTBcAgKQRAAMA8E933XXX0ueff/6eXFlPaWlpXHvttVFWVma4ALCblJWVxXXXXRclJSU5s6aZM2fe/f/+3/9bZboAACSRABgAgP/l5JNPHldeXv50rqynU6dOMXbs2Jw5kQQA2aSoqCiuueaa6NixY86sqby8/MlTTz11gukCAJBUAmAAAP6PSy655K66urq1ubKefffdN6644orIy7P9BYBdJS8vL6688sro3bt3zqyprq6u/JJLLvmh6QIAkOi9uhYAAPBus2bNqn7ooYfujIh0rqxp4MCBcd555xkuAOwi559/fhxyyCG5tKT0gw8+eOesWbOqTRcAgCTLb3tQ9NzpjndbRG15oQ4BADRTEydOXDNmzJi8Tp06Dc2VNfXp0yfy8/PjzTffNGAA+ATOOuusOOmkk3JqTa+//vp9Z5555kTTBQAgCYq7N0Ze6c5/5gQwAADv6dRTT/31li1bXs+lNZ122mlx9NFHGy4AfEzHHntsnHrqqTm1pi1btrxx2mmn/cZ0AQDIBQJgAADeU0VFReONN974jcbGxqpcWtcFF1wQRx55pAEDwEd05JFHxuc+97mcWlNjY2PVzTff/I2KiopGEwYAIBcIgAEAeF9//OMf1z/yyCPfiRz6HnAqlYqLLroohgwZYsAA8CENHTo0LrrookilUrm0rPQjjzzynfvvv3+dCQMAkCsEwAAAfKBLL730hQULFvwupzbCeXnxpS99Kfbff38DBoAPcNBBB8WXvvSlyMvLrVdJCxYs+N2ll176ggkDAJBLBMAAAHwoo0eP/mVVVdXcXFpTYWFhfOUrX4kePXoYMAC8h169esUVV1wRBQUFObWuqqqqOaNHj/6lCQMAkGsEwAAAfCgVFRWNV1111S0NDQ0bcmldJSUlcfPNN8c+++xjyADwLr17946bbropiouLc2pdDQ0NG6666qqv++4vAAC5SAAMAMCHNmHChE3333//tzKZTDqX1lVcXBzXXXdddO/e3ZABYIfu3bvHtddeG61atcqpdWUymfT999//rQkTJmwyZQAAcpEAGACAj2Ts2LGz58+f/9tcW1fr1q3juuuuiw4dOhgyAM1ehw4d4rrrrovWrVvn3Nrmz5//m7Fjx842ZQAAcpUAGACAj+y44477xaZNm17MtXW1a9cubrzxxmjXrp0hA9BstW3bNmf/Pty4ceOLxx13nO/+AgCQ0wTAAAB8ZNXV1emLL774W3V1datzbW0dO3aMG2+8Mdq0aWPQADQ7ZWVlceONN0bHjh1zbm21tbWrL7zwwturq6vTJg0AQC7Lb3tQ9NzZD9LbImrLC3UIAICdWrZsWf327dtfOvbYY0/Ny8trkUtrKykpiaFDh8Zrr70WNTU1hg1As9ChQ4f42te+Fp06dcq5tTU1NW39zne+M/bBBx9cb9IAAOSC4u6NkVe6858JgAEA+NhefPHFzYcccsiyAQMGnBgRqZzaRBcXx5AhQ4TAADQLHTt2jJtuuik6dOiQi8tLjx8//ravfvWrc0waAIBc8X4BsCugAQD4RC688MIZb7zxxm9ycW3t27ePm266KSdPQgHA2zp16pTL4W+88cYbv77wwgufM2kAAJoLATAAAJ/YqFGjfrFhw4aZubi2t0Pgzp07GzQAOadz585x0003Rfv27XNyfRs2bJg5atSo+0waAIDmRAAMAMAnVltbm77sssu+V1dXtzoX19euXbu44YYbomPHjoYNQM7o0KFDXH/99dGuXbtc3Z+s/sIXvvDd2tratGkDANCc+AYwAAC7xJIlS+oj4pVRo0admpeX1yLX1ldcXBxDhw6NuXPnxrZt2wwcgETr0qVL3HjjjTl77XNTU1P1nXfeec0f/vCHdaYNAEAuer9vAAuAAQDYZWbNmlXVo0ePuYceeujoVCqVn2vra9WqVYwYMSIWLVoUlZWVBg5AIu23335x0003RVlZWU6uL51ON/z617++4fbbb3/TtAEAyFUCYAAA9phJkyatPeqoozbsu+++R+fi+goLC2P48OGxbNmy2LBhg4EDkCgDBgyIa6+9Nlq1apWza5w2bdq/XXLJJc+ZNgAAuez9AmDfAAYAYJc77bTTHn/rrbcezNX1FRUVxTXXXBNDhgwxbAASY8iQIXHNNddEUVFRzq5xwYIFvzv99NOfMG0AAJozATAAALvFEUcccc+GDRtm5ur6CgoK4sorr4wjjjjCsAFIwt/LceWVV0ZBQUHOrrG8vPypESNG/LdpAwDQ3AmAAQDYLaqrq9MXXXTRd2pra1fk7GY6Ly8uvvjiOPLIIw0cgKw1atSouPjiiyMvL3dfA23dunXxZz/72e83NDRkTBwAgObON4ABANhtli9fvr2mpuaFY4899uT8/PyWubjGVCoVgwYNikwmE4sWLTJ0ALLK6aefHueee26kUqmcXWN9fX3FDTfccM3UqVOrTBwAgObi/b4BLAAGAGC3evnll7cUFBS8cMQRR4zOy8trkYtrTKVSccABB0SnTp1i7ty5kck4fATA3lVYWBhXXHFFHHPMMTm9zsbGxuo777zzKz/72c9WmzoAAM2JABgAgL1qxowZlb169Xp98ODBJ6dSqfxcXWfPnj2jb9++8fe//z0aGxsNHoC9olWrVnH11VfHwIEDc3qd6XS64be//e2Nt9122wJTBwCguREAAwCw1z3xxBPlw4cPX9OvX79jIyJn76Hs2LFjDBw4MObMmRN1dXUGD8Ae1a5du7jxxhujT58+ub7U9JQpU779xS9+8XlTBwCgOXq/ADhPewAA2FPGjBkz9Y033vh1rq+zZ8+eceONN0bHjh0NHYA9pkuXLnHTTTdF9+7dc36tc+fO/eU555zzF1MHAID/SwAMAMAe9alPfernS5cufTjX19mlS5e49dZb48ADDzR0AHa7gQMHxje/+c3o1KlTzq/1rbfeemjEiBG/MnUAANg5ATAAAHvcsccee8/GjRtfyPV1FhcXx7XXXhsjRowwdAB2m8MPPzyuuuqqaNmyZc6vdePGjc8fffTR95g6AAC8NwEwAAB7XEVFReNxxx339crKyr/l+loLCgrisssui/PPPz9SqZThA7DLpFKpOP/88+PSSy+NgoKCnF/vpk2bXj7ssMNuqaysbDJ9AAB4bwJgAAD2isWLF9efddZZN1dXV7/ZHNZ7/PHHx5e//OUoKioyfAA+sRYtWsSXv/zlOP7445vFequrq98cM2bMN8rLyxtMHwAA3l9+24Oi585+kN4WUVteqEMAAOw2a9asaVi1atWs0aNHH1dQUNA619fbrVu3OOCAA2LevHlRX1/vAQDgYykrK4trrrkmDjrooGax3rq6uvKxY8de89RTT202fQAA+Ifi7o2RV7rznwmAAQDYq+bNm1ezevXqZ04++eTjCwoKSnN9ve3atYuRI0fG8uXLY+PGjR4AAD6S/v37x0033RRdu3ZtFuutr69fd9111335T3/6U4XpAwDA/xAAAwCQ1ebMmbMtlUq9fOSRR56Ul5eX83ckt2jRIkaMGBG1tbWxdOlSDwAAH8rxxx8fX/rSl5rN5wQaGxu33HXXXdf99Kc/XWn6AADwvwmAAQDIejNnzqzs2bPn64MHDz4plUrl5/p6U6lUHHLIIdGqVatYsGBBZDIZDwEAO5WXlxef/exn4/TTT49UKtUs1pxOp7f//ve//+o3vvGN1z0BAADwfwmAAQBIhEmTJpXvs88+8wYOHHhCKpUqaA5r3m+//WLAgAExd+5c3wUG4P8oKyuL6667LoYNG9Zs1pxOp7f/8Y9/vOmqq676qycAAAB2TgAMAEBiTJw4cc3BBx+85MADDzwulUrlNYc1t2/fPoYOHRqLFi2KLVu2eAgAiIiIffbZJ66//vro2bNns1lzJpNpnDBhwm1f/OIXn/cEAADAexMAAwCQKI8++ujy/fff/42DDjrohOZwHXRERHFxcRx11FHR2NgYb731locAoJkbPXp0XHHFFVFSUtJs1pxOpxsefvjhr15yySWzPAEAAPD+BMAAACTO+PHjVw0cOHDpAQcccGxzOQmcSqViwIAB0aVLl3jjjTeiqanJgwDQzBQVFcWll14aJ554YrP53m/EP07+Pv7447dffPHFMz0FAADwwQTAAAAk0iOPPLLs0EMPXbb//vs3mxA4IqJHjx4xZMiQePPNN2Pr1q0eBIBmonv37vEv//IvccABBzSrdWcymaYnnnji9s997nPPeAoAAODDEQADAJBYDz/88NJjjjlmY+/evY+KiGZzFKq0tDSGDx8eq1evjvXr13sQAHLcwIED45prrol27do1t6VnZsyY8YOzzjprqqcAAAA+PAEwAACJdv/99795zDHHVO6zzz5HRDMKgVu0aBGHHXZYtGzZMhYuXBjpdNrDAJBjCgoK4pxzzonzzz8/WrRo0dyWn37uuefuOuWUUyZ4EgAA4KMRAAMAkHi///3v5w8bNmxF3759j2lO10GnUqno27dvDB06NBYvXhxbtmzxMADkiJ49e8YNN9wQgwcPblbf+434x7XPU6ZM+fbpp58+2ZMAAAAfnQAYAICc8OCDDy4ZNmzYin79+jWrEDgionXr1nHEEUdEfX19LF261MMAkGCpVCpOOOGEuOKKK6JNmzbNbv07wt9vnXPOOX/xNAAAwMcjAAYAIGc89NBDS4YNG7a8X79+xza3EDg/Pz8OPvjg6NWrV8yfPz8aGho8EAAJU1JSEpdffnmccMIJkZ+f3+zWn8lkGp944olvffazn53maQAAgI9PAAwAQE556KGHlo4cOXJdnz59RqWa252ZEdG1a9cYNmxYLFu2LCorKz0QAAnRt2/fuO6662K//fZrluvPZDLpp59++rvnnHPO054GAAD4ZATAAADknD/96U+LDj300KX7779/s7sOOiKiuLg4jjzyyCgpKYk333wz0um0hwIgSxUUFMRnP/vZuPDCC6OkpKRZ9iCdTjc88sgjt5x//vnTPREAAPDJCYABAMhJDz/88NId3wQelUqlmt09mqlUKvr06RMHH3xwLFy4MLZt2+ahAMgynTt3jrFjx8bQoUOjGV5aERH/CH+feOKJ2y+88MLnPBEAALBrCIABAMhZDz300JIePXq8NmjQoGPz8vJaNMcetG3bNkaNGhVNTU2xZMkSDwVAFkilUjF69Oi48soro0OHDs22D01NTdt++9vf/stll132oqcCAAB2HQEwAAA5bdKkSeXdu3efM3jw4GYbAufn58eAAQOiV69esWDBgti+fbsHA2Avad26dVx66aVx/PHHR35+frPtQ2NjY/WvfvWrf7nuuute81QAAMCuJQAGACDnTZ48eW1jY+OMI4444uiCgoKS5tqHrl27xqhRo2Lbtm2xcuVKDwbAHpRKpWLUqFExduzY6NWrV7PuRX19/fo77rjjK9/61rcWejIAAGDXEwADANAsPP/881UbNmx45rjjjjuqsLCwrLn2obCwMAYNGhT77bdfLF68OGpraz0cALtZ+/bt44orrogTTzwxCgub9/uU2tralTfffPPVP/nJT1Z7MgAAYPcQAAMA0Gz87W9/27p27doZJ5xwwsjCwsK2zbkXnTp1ipEjR0Z1dbXTwAC70ciRI+Pqq6+OHj16NPte1NTULL/hhhuu/e1vf7vOkwEAALuPABgAgGbltdde2zpv3rynTznllKFFRUWdmnMvCgsL49BDD4399tsvFi1a5DQwwC709qnfk08+udmf+o2I2Lx587yLL774unHjxm30dAAAwO71fgFwat9zYsTOftC4LmLjq610DwCAxOrVq1fhs88++69du3Y9QTciGhoaYurUqTF58uRobGzUEICPqaCgIE499dQYPXq04HeH8vLyp4499tjvrly5skE3AABg9+swrDYKuuz8ZwJgAAByWuvWrfNeeumlm/fdd9+zdeMfVq9eHffff38sWbJEMwA+ov322y8uuugi1z2/w8KFC38/fPjwnzY0NGR0AwAA9gwBMAAAzd7zzz9/8aGHHnp1RKR0IyKTycTMmTPjz3/+c9TV1WkIwAcoKSmJ8847L0aMGBGplL9Kdki//PLL9xx77LEPagUAAOxZ7xcA+wYwAADNwn333Tfn+OOP39yrV6/DQwgcqVQqevfuHcOHD49169ZFRUWFhwTgPRxyyCExduzY6N+/v/B3h0wm0/jMM8/828knnzxONwAAYM97v28AC4ABAGg2fve7370xePDgJf369Ts6lUrl60hEcXFxjBgxInr06BFLly6N2tpaTQHYoUOHDvGFL3whzjzzzCguLtaQHZqammoeeOCBWz73uc9N1w0AANg7BMAAALDDww8/vKygoOC54cOHH1FQUFCqI//QrVu3OO6446K0tDQWL14cTU1NmgI0Wy1btoxzzjknLr300ujevbuGvENtbe2K22677arbbrvtDd0AAIC9RwAMAADv8Oyzz25avHjx0yeddNKQoqKiTjryD3l5edGnT58YOXJkbN26NVatWqUpQLNz+OGHx1e+8pUYMGBA5OXlacg7VFVV/e3CCy+8/oEHHvDdAAAA2MsEwAAA8C7z58+vefbZZ58+44wz+hcX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OigOOOCAKCoq0pQs0djYuGXmzJk/PvPMMyc2NDS4XgAAAPjQBMAAAJADjjzyyNY/+9nPrujbt++5EZGnI9mluro6Fi5cGPPnz4958+ZFZWWlprBXtGvXLg455JAYMGBA9O/fP1q39nsjWSj91ltv/fmqq676xaxZs6q1AwAA+KgEwAAAkEN++ctfjhgzZsyNrVq16q0b2SmdTsfKlStj0aJFsXDhwli8eHFs27ZNY9gtSkpKol+/ftG/f//Yf//9o1evXpGX53dEslVNTc3yRx999EdXXnnlK7oBAAB8XAJgAADIMd26dSt8+OGHPzd48ODL8vPzbdyzXCaTiTVr1sTChQtj0aJFsWjRotiyZYvG8LGUlZVF//79/xn6du/ePVKplMZkuaampprXXnvtV2PGjHmgoqKiUUcAAIBPQgAMAAA56rjjjiv7r//6r8tdC508mzdvjuXLl8eKFSti+fLlsXjx4qipqdEY/pfi4uLo169f9O7dO/bZZ5/Yd999o6ysTGMSJJPJpJcsWfLn66677pfTp0/3mx8AAMAuIQAGAIAc99Of/nTIueeee3NpaWlf3UimxsbGWLlyZSxdujSWLVsWy5cvj3Xr1kUmk9GcZiKVSkWXLl1in332iT59+kSfPn2iV69eUVBQoDkJtXXr1sUPPvjgj6699tq/6wYAALArCYABAKAZaNeuXf64cePOGTp06BUFBQWtdST56uvrY+XKlf88KbxixYpYu3ZtpNNpzUm4vLy86Nq1a+yzzz7//KdXr17RsmVLzckBjY2NW/7617/+4pxzznm0srKySUcAAIBdTQAMAADNyIknntjmnnvuuXzfffcdk0qlHB3MMdu3b481a9bEmjVrYu3atbF27dooLy+PDRs2CIazUF5eXnTs2DG6desWXbt2jW7dukW3bt2iR48eUVhYqEE5JpPJNC5ZsuRR1z0DAAC7mwAYAACaoa9+9av7Xnfdddd16NDhCN3IfY2Njf8MhNetWxfr1q2LioqKWLduXWzbtk2DdrPS0tLo3LnzP//p0qVLdO3aNbp27eoK52Ziw4YNM//rv/7rxz/60Y+W6wYAALC7CYABAKAZ++UvfznirLPOuq64uNj3gZupmpqaWL9+/T//qaioiMrKyqisrIxNmzZFY2OjJn2AgoKCaN++fbRr1y7at28fHTt2jC5dukSnTp2ic+fOUVxcrEnN1NatW98aP378PVdcccXLugEAAOwpAmAAAGjm2rVrl//ggw+eOWLEiCsLCwvb6gjvtHnz5n+GwZs2bYrKysqorq6OLVu2xJYtW6K6ujqqq6sjk8nk3NpTqVS0bt06WrduHWVlZdGmTZsoLS39X2Fvu3btok2bNh4U/peGhobKl1566efnnHPO+OrqavevAwAAe5QAGAAAiIiIoUOHFt97770XHHjggRfk5+c7ssiHlk6n/xkEV1dXR01Nzfv+k8lkora2NtLpdNTX10dTU1PU1dXt0u8U5+XlRcuWLSM/Pz+KiooiLy8vWrVqFalUKoqLi3f6T0lJSbRq1eqfgW9paWnk5eUZMB9aU1NTzYIFC/745S9/+Y+zZ8+u0REAAGBvEAADAAD/y2mnndb2rrvuurRPnz5n5+XlFeoIe9LbgfDbtm/f/r7XUBcUFESLFi3++b/fDnxhT8pkMg1LliwZd8stt/xq0qRJVToCAADsTQJgAABgp0477bS2d95554X777//5wTBAP9XJpNpWLhw4QO33nrrHwS/AABAtni/ADi/7UHRc2c/SG+LqC33/gcAAHLZokWL6u69995X0un0swcddFCnkpKS3roC8A8VFRUz/7//7/+77aKLLpq6aNGiOh0BAACyRXH3xsgr3fnPBMAAAEDMnDmz8u67736qqalpWr9+/Ypbt27dN5VKpXQGaG4ymUx6zZo1U+65555/Peeccx6cOXNmpa4AAADZRgAMAAB8KDNnzqz88Y9//Gw6nZ4uCAaak7eD37vvvvtfzz///McEvwAAQDYTAAMAAB+JIBhoLgS/AABAEgmAAQCAj+XtILisrOyFvn37diwuLu4VEYJgIBdkKioqnrv33nu/PWbMmEcEvwAAQJK8XwCc2vecGLGzHzSui9j4aivdAwAA/unqq6/u8ZWvfOX8Pn36nJWXl9dCR4CkSafT9UuXLh3/X//1Xw/84he/WKMjAABAEnUYVhsFXXb+MwEwAADwkZ1xxhntb7/99rMPPPDA8/Pz81vrCJDtmpqaqhcsWPDgd77znUcmTpzotC8AAJBoAmAAAGC3GD58eMkPf/jDzwwePPjioqKijjoCZJv6+voNr7322u9vvPHGx2fPnl2jIwAAQC4QAAMAALvV0KFDi++5556zDjnkkPOKioq66giwt9XV1a19/fXXH7z++uvHC34BAIBcIwAGAAD2iFatWuXdc889w0455ZTzO3bseJSOAHtYZsOGDbOmTJny4PXXX/9qbW1tWksAAIBcJAAGAAD2uH/913/tf/7555/dq1ev0/Ly8lroCLC7pNPp+pUrV05+4IEHHvnOd76zSEcAAIBcJwAGAAD2mjPOOKP97bfffvYBBxzw2YKCgjY6AuwqjY2NVW+++eafv/e97z06YcKETToCAAA0FwJgAABgrxs+fHjJ97///dGDBg0aU1paur+OAB9XdXX1wtdee+3Rr371q1Nfe+21Wh0BAACaGwEwAACQVb761a/ue8EFF3y6b9++ZxUUFLTWEeCDNDY2bnnrrbfG/+EPf5j4ox/9aLmOAAAAzZkAGAAAyEpDhw4t/sEPfnDy4MGDz27dunV/HQHerbq6+s2XX375weuuu+7ppUuXbtcRAAAAATAAAJDlCgsLU3ffffeQ0aNHn9G1a9fj8vLyinQFmq90Ol1XXl4+bcqUKROuvfbav+sIAADA/yYABgAAEqNPnz4t/v3f/33UyJEjz2rfvv2nIiKlK9AsZDZt2vTXF1544bGvfe1rzzntCwAA8N4EwAAAQCJddNFFXa6++uqTDzzwwLNbtmzZTUcg99TV1a1ZsGDBuJ/+9KdP3n///et0BAAA4IMJgAEAgETr1q1b4d13333k4YcffmqHDh2OyMvLK9QVSK50Ot2wcePGWbNmzZp8/fXXz6qoqGjUFQAAgA9PAAwAAOSMo48+uvWtt956/CGHHHJKu3btBkdEnq5AIqQrKytfmzdv3uQ777xz+owZM6q1BAAA4OMRAAMAADnpuOOOK/vGN75x/CGHHHJa27ZtB4bvBUO2yVRVVc2dN2/epO9///vTpk+fvkVLAAAAPjkBMAAAkPNuu+22vmedddZJffr0Oa5Vq1a9dQT2ntra2uXLly+f/uijjz51xx13vKUjAAAAu5YAGAAAaFa+9KUvdbv44ouP7t+//wlOBsMekamqqpq7cOHCv/z+97+fcd9995VrCQAAwO4jAAYAAJqtSy65pOtll112jDAYdrl0VVXVvIULF/7lV7/61bO/+93v1moJAADAniEABgAAiIirr766x/nnnz9q//33P7JNmzZDUqlUga7Ah5fJZBoqKyv/vnjx4uf+9Kc/zbr33ntX6woAAMCeJwAGAAB4l379+hV97WtfGzRy5MhRPXv2PLaoqKizrsD/VV9fv37VqlXPvPDCC8/9+7//+5zFixfX6woAAMDeJQAGAAB4H61bt8678847Bx599NFHde/efURpaen+4apomq/M1q1bF69Zs+bF5557btY3v/nNOdXV1WltAQAAyB4CYAAAgI9g8ODBrcaOHXvI8OHDD+vevfvw1q1bHxACYXJXprq6+s01a9a88sorr7z8k5/8ZN5rr71Wqy0AAADZSwAMAADwCVx//fX7nHHGGYf169dvePv27Yfm5+e31hWSrLGxsXrjxo2vvvXWWy+PHz/+lR//+McrdQUAACA5BMAAAAC70Je//OUe55xzzvA+ffoM7tix45CioqKuukI2q6+vX7t27doXFy9ePGfixImv3Xvvvat1BQAAILkEwAAAALvRl7/85R6f+cxnBvfr129Qly5dDm/ZsqVAmL2qrq5u7bp16wS+AAAAOUoADAAAsIe0atUq75prrtnn2GOPPXi//fY7uH379oeUlpb2TaVS+brDbpKuqalZtnHjxnlvvfXW3GeffXbef/3Xfy2vra1Naw0AAEBuEgADAADsRQceeGDLq6+++oAhQ4Yc3LNnz4Pbtm17sGuj+biampqqq6qqXi8vL583Z86ceb/85S/nvfjii1t1BgAAoPkQAAMAAGSZoUOHFn/xi1/cf9CgQQf26NHjwHbt2h3YqlWr3qlUKk932CFdU1OzvLKycsHq1asXzJkzZ8Gf//znJTNmzKjWGgAAgOZNAAwAAJAAxx13XNkFF1xw4MEHH3xA165dDywtLd23pKRkn1QqVag7uS2TyTRs27ZtRXV19dJ169YtfOONNxZOmDBh4YQJEzbpDgAAAO8mAAYAAEiw8847r+OJJ57Yp3///vt16dKlT5s2bfZr3bp1v/z8/GLdSZampqaa6urqxZs3b16ybt26pQsXLlzy9NNPL33ooYc26A4AAAAflgAYAAAgx7Rr1y7/kksu6TFkyJCe++67b89OnTr1Kisr61VcXNyzZcuW3VKpVL4u7R2ZTKaprq6uvKamZtWWLVtWVlRUrFy6dOnK2bNnr7r//vvXVFZWNukSAAAAn4QAGAAAoBnp1KlTwec+97luQ4cO7bnPPvv0aNeuXafWrVt3Li4u7tqyZcvORUVFnfLy8lro1MeTTqe319fXr6+rq6uoqalZW11dvb6y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AACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoMY3JP//9K8My551lzpAk293a7QAAAAAAAAD8iIw3r+SL7TpPxuSt4/ibJJuz20QDBgAAAAAAAHhzrJPp6NvHYcyyjLl7dJTPbl/Jp6sPLufSsM+5ec7q5YOrF0OeP/SVaAAAAAAAAIA3weH7u6zfm79dWDIMSw6225w785vsx3XyzasOby5ssz69c4sAAAAAAAAAr9n69C6bC9sT93a7rKdnORin5Otxynzi1JQcfiwCAwAAAAAAALxO69O7HH68TaaT98cp85R8vbp3Nfszv8q0LHn7xMF1sjk/ZzUPmZ/MmWefhAYAAAAAAAD4oayPdjn7223Gn7x6ZrXPnetX8mBKkpv3cufDd/Pufn5FL56SzcVtNheT3dNt8tQlAwAAAAAAAHyv1sm0ySv/9XtsNWZ3I/lHkgzHi7/4XY7WYz5yiwAAAAAAAAA/Ivtcv/3nPEyS1fHa42t5+vNLyX7JoRsCAAAAAAAAePPt1/nbV3/KvePn1Xc371/NYxEYAAAAAAAA4M0yTHk2rvNo2WdzvHZqzN9v/SF3vju3evng/at5fPDLPDu1yuGyZHSVAAAAAAAAAK/XOGe4ueSvZ4e8M8xZbVe5ceuPufvy3Oqkw4+v5emDX+fuuTlLhhwsEYIBAAAAAAAAXpclGR8OuXP0TR4cPM/9z/+SRyfNDf/1TZezOp/87KdjzizJZkhO7edMy/w/nAUAAAAAAADg/zaMWcZkP8/ZLsmLacr2/MV8+cnvs/tP5/4FmLjAq1ifcioAAAAASUVORK5CYII=\",u=e.objectName?O(e.objectName):\"Media \"+n._slideObjects.filter(e=>e._type===I.media).length,f={_type:I.media};if(!t&&!l&&\"online\"!==r)throw new Error(\"addMedia() error: either `data` or `path` are required!\");if(l&&!l.toLowerCase().includes(\"base64,\"))throw new Error(\"addMedia() error: `data` value lacks a base64 header! Ex: 'video/mpeg;base64,NMP[...]')\");if(!p.toLowerCase().includes(\"base64,\"))throw new Error(\"addMedia() error: `cover` value lacks a base64 header! Ex: 'data:image/png;base64,iV[...]')\");if(\"online\"===r&&!c)throw new Error(\"addMedia() error: online videos require `link` value\");a=e.extn||(l?l.split(\";\")[0].split(\"/\")[1]:t.split(\".\").pop())||\"mp3\",f.mtype=r,f.media=t||\"preencoded.mov\",f.options={},f.options.x=o,f.options.y=i,f.options.w=s,f.options.h=A,f.options.objectName=u,\"online\"===r?(e=S(n),n._relsMedia.push({path:t||\"preencoded\"+a,data:\"dummy\",type:\"online\",extn:a,rId:e,Target:c}),f.mediaRid=e,n._relsMedia.push({path:\"preencoded.png\",data:p,type:\"image/png\",extn:\"png\",rId:S(n),Target:`../media/image-${n._slideNum}-${n._relsMedia.length+1}.png`})):(o=n._relsMedia.filter(e=>e.path&&e.path===t&&e.type===r+\"/\"+a&&!e.isDuplicate)[0],i=S(n),n._relsMedia.push({path:t||\"preencoded\"+a,type:r+\"/\"+a,extn:a,data:l||\"\",rId:i,isDuplicate:!(null==o||!o.Target),Target:null!=o&&o.Target?o.Target:`../media/media-${n._slideNum}-${n._relsMedia.length+1}.`+a}),f.mediaRid=i,n._relsMedia.push({path:t||\"preencoded\"+a,type:r+\"/\"+a,extn:a,data:l||\"\",rId:S(n),isDuplicate:!(null==o||!o.Target),Target:null!=o&&o.Target?o.Target:`../media/media-${n._slideNum}-${n._relsMedia.length+0}.`+a}),n._relsMedia.push({path:\"preencoded.png\",type:\"image/png\",extn:\"png\",data:p,rId:S(n),Target:`../media/image-${n._slideNum}-${n._relsMedia.length+1}.png`})),n._slideObjects.push(f)}return this}addNotes(e){return this._slideObjects.push({_type:I.notes,text:[{text:e}]}),this}addShape(e,t){return ue(this,e,t),this}addTable(e,t){return this._newAutoPagedSlides=((a,e,t,n,r,o,i)=>{let s=[a],A=t&&\"object\"==typeof t?t:{};if(A.objectName=A.objectName?O(A.objectName):\"Table \"+a._slideObjects.filter(e=>e._type===I.table).length,null===e||0===e.length||!Array.isArray(e))throw new Error(\"addTable: Array expected! EX: 'slide.addTable( [rows], {options} );' (https://gitbrent.github.io/PptxGenJS/docs/api-tables.html)\");if(!e[0]||!Array.isArray(e[0]))throw new Error(\"addTable: 'rows' should be an array of cells! EX: 'slide.addTable( [ ['A'], ['B'], {text:'C',options:{align:'center'}} ] );' (https://gitbrent.github.io/PptxGenJS/docs/api-tables.html)\");let l=[],c=(e.forEach(e=>{let r=[];Array.isArray(e)?e.forEach(e=>{let t={_type:I.tablecell,text:\"\",options:\"object\"==typeof e&&e.options?e.options:{}};\"string\"==typeof e||\"number\"==typeof e?t.text=e.toString():e.text&&(\"string\"==typeof e.text||\"number\"==typeof e.text?t.text=e.text.toString():e.text&&(t.text=e.text),e.options)&&\"object\"==typeof e.options&&(t.options=e.options),t.options.border=t.options.border||A.border||[{type:\"none\"},{type:\"none\"},{type:\"none\"},{type:\"none\"}];e=t.options.border;Array.isArray(e)||\"object\"!=typeof e||(t.options.border=[e,e,e,e]),t.options.border[0]||(t.options.border[0]={type:\"none\"}),t.options.border[1]||(t.options.border[1]={type:\"none\"}),t.options.border[2]||(t.options.border[2]={type:\"none\"}),t.options.border[3]||(t.options.border[3]={type:\"none\"});[0,1,2,3].forEach(e=>{t.options.border[e]={type:t.options.border[e].type||u.type,color:t.options.border[e].color||u.color,pt:(\"number\"==typeof t.options.border[e].pt?t.options.border[e]:u).pt}}),r.push(t)}):(console.log(\"addTable: tableRows has a bad row. A row should be an array of cells. You provided:\"),console.log(e)),l.push(r)}),A.x=R(A.x||(0===A.x?0:F/2),\"X\",r),A.y=R(A.y||(0===A.y?0:F/2),\"Y\",r),A.h&&(A.h=R(A.h,\"Y\",r)),A.fontSize=A.fontSize||v,A.margin=0===A.margin||A.margin?A.margin:Q,\"number\"==typeof A.margin&&(A.margin=[Number(A.margin),Number(A.margin),Number(A.margin),Number(A.margin)]),-1!==JSON.stringify({arrRows:l}).indexOf(\"hyperlink\")||A.color||(A.color=A.color||d),\"string\"==typeof A.border?(console.warn(\"addTable `border` option must be an object. Ex: `{border: {type:'none'}}`\"),A.border=null):Array.isArray(A.border)&&[0,1,2,3].forEach(e=>{A.border[e]=A.border[e]?{type:A.border[e].type||u.type,color:A.border[e].color||u.color,pt:A.border[e].pt||u.pt}:{type:\"none\"}}),A.autoPage=\"boolean\"==typeof A.autoPage&&A.autoPage,A.autoPageRepeatHeader=\"boolean\"==typeof A.autoPageRepeatHeader&&A.autoPageRepeatHeader,A.autoPageHeaderRows=void 0===A.autoPageHeaderRows||isNaN(Number(A.autoPageHeaderRows))?1:Number(A.autoPageHeaderRows),A.autoPageLineWeight=void 0===A.autoPageLineWeight||isNaN(Number(A.autoPageLineWeight))?0:Number(A.autoPageLineWeight),A.autoPageLineWeight&&(1{var r;return null!=(r=null==t?void 0:t.options)&&r.colspan&&\"number\"==typeof t.options.colspan?e+=t.options.colspan:e+=1,e},0),\"string\"==typeof A.colW||\"number\"==typeof A.colW||A.colW&&Array.isArray(A.colW)&&1===A.colW.length&&1{r.forEach((e,t)=>{\"number\"==typeof e||\"string\"==typeof e?r[t]={_type:I.tablecell,text:String(r[t]),options:A}:\"object\"==typeof e&&(\"number\"==typeof e.text?r[t].text=r[t].text.toString():null==e.text&&(r[t].text=\"\"),r[t].options=e.options||{},r[t]._type=I.tablecell)})}),[]);return A&&!A.autoPage?(L(a,l),a._slideObjects.push({_type:I.table,arrTabRows:l,options:Object.assign({},A)})):(A.autoPageRepeatHeader&&(A._arrObjTabHeadRows=l.filter((e,t)=>t{i(a._slideNum+t)||s.push(o({masterName:(null==n?void 0:n._name)||null})),0{var e=new B;let n=2*(c.length-1)+1;var a=1<(null==(a=null==(a=c[0])?void 0:a.labels)?void 0:a.length);e.folder(\"_rels\"),e.folder(\"docProps\"),e.folder(\"xl/_rels\"),e.folder(\"xl/tables\"),e.folder(\"xl/theme\"),e.folder(\"xl/worksheets\"),e.folder(\"xl/worksheets/_rels\"),e.file(\"[Content_Types].xml\",' \\n'),e.file(\"_rels/.rels\",'\\n'),e.file(\"docProps/app.xml\",'Microsoft Macintosh Excel0falseWorksheets1Sheet1falsefalsefalse16.0300\\n'),e.file(\"docProps/core.xml\",'PptxGenJSPptxGenJS'+(new Date).toISOString()+''+(new Date).toISOString()+\"\"),e.file(\"xl/_rels/workbook.xml.rels\",''),e.file(\"xl/styles.xml\",'\\n'),e.file(\"xl/theme/theme1.xml\",''),e.file(\"xl/workbook.xml\",'\\n'),e.file(\"xl/worksheets/_rels/sheet1.xml.rels\",'\\n');{let r='';if(p.opts._type===w.BUBBLE||p.opts._type===w.BUBBLE3D)r+=``;else if(p.opts._type===w.SCATTER)r+=``;else if(a){let t=c.length;c[0].labels.forEach(e=>t+=e.filter(e=>e&&\"\"!==e).length),r=r+``+\"\"}else{var o=c.length+c[0].labels.length*c[0].labels[0].length+c[0].labels.length,i=c.length+c[0].labels.length*c[0].labels[0].length+1;r=r+``+''}p.opts._type===w.BUBBLE||p.opts._type===w.BUBBLE3D?c.forEach((e,t)=>{0===t?r+=\"X-Axis\":r=(r+=`${O(e.name||\"Y-Axis\"+t)}`)+`${O(\"Size\"+t)}`}):c.forEach(e=>{r+=`${O((e.name||\" \").replace(\"X-Axis\",\"X-Values\"))}`}),p.opts._type!==w.BUBBLE&&p.opts._type!==w.BUBBLE3D&&p.opts._type!==w.SCATTER&&c[0].labels.slice().reverse().forEach(e=>{e.filter(e=>e&&\"\"!==e).forEach(e=>{r+=`${O(e)}`})}),r+=\"\\n\",e.file(\"xl/sharedStrings.xml\",r)}{let a='';if(p.opts._type===w.BUBBLE||p.opts._type===w.BUBBLE3D){a=(a+=``)+``;let r=1;c.forEach((e,t)=>{0===t?a+=``:(a+=``,r++,a+=``)})}else p.opts._type===w.SCATTER?(a=(a+=`
`)+``,c.forEach((e,t)=>{a+=``})):(a=(a+=`
`)+``,c[0].labels.forEach((e,t)=>{a+=``}),c.forEach((e,t)=>{a+=``}));a=(a+=\"\")+''+\"
\",e.file(\"xl/tables/table1.xml\",a)}{let o='';if(o+='',p.opts._type===w.BUBBLE||p.opts._type===w.BUBBLE3D?o+=``:p.opts._type===w.SCATTER?o+=``:o+=``,o=o+''+'',p.opts._type===w.BUBBLE||p.opts._type===w.BUBBLE3D){o=(o+=\"\")+``+'0';for(let e=1;e${e}`;o+=\"\",c[0].values.forEach((e,t)=>{o=o+``+`${e}`;let r=2;for(let e=1;e${c[e].values[t]||\"\"}`,r++,o+=`${c[e].sizes[t]||\"\"}`,r++;o+=\"\"})}else if(p.opts._type===w.SCATTER){o=(o+=\"\")+``;for(let e=0;e${e}`;o+=\"\",c[0].values.forEach((e,t)=>{o=o+``+`${e}`;for(let e=1;e${c[e].values[t]||0===c[e].values[t]?c[e].values[t]:\"\"}`;o+=\"\"})}else if(o+=\"\",a){o+=``;for(let e=0;e0`;for(let e=c[0].labels.length-1;e${e}`;o+=\"\";var s=c.length,A=c[0].labels[0].length,l=c[0].labels.length;for(let n=0;n`;let r=s,a=c[0].labels.slice().reverse();a.forEach((e,t)=>{e[n]&&(e=0===t?1:a[t-1].filter(e=>e&&\"\"!==e).length,r+=e,o+=`${r}`)});for(let e=0;e${c[e].values[n]||0}`;o+=\"\"}}else{o+=``,c[0].labels.forEach((e,t)=>{o+=`0`});for(let e=0;e${e+1}`;o+=\"\",c[0].labels[0].forEach((e,t)=>{o+=``;for(let e=c[0].labels.length-1;0<=e;e--)o=(o+=``)+`${c.length+t+1}`+\"\";for(let e=0;e${c[e].values[t]||\"\"}`;o+=\"\"})}o=(o+=\"\")+''+\"\\n\",e.file(\"xl/worksheets/sheet1.xml\",o)}e.generateAsync({type:\"base64\"}).then(e=>{u.file(`ppt/embeddings/Microsoft_Excel_Worksheet${p.globalId}.xlsx`,e,{base64:!0}),u.file(\"ppt/charts/_rels/\"+p.fileName+\".rels\",''+``+\"\"),u.file(\"ppt/charts/\"+p.fileName,(n=>{let e,t,r,a,o='',i=!1;if(o=(o+='')+``+\"\",n.opts.showTitle?o=o+be({title:n.opts.title||\"Chart Title\",color:n.opts.titleColor,fontFace:n.opts.titleFontFace,fontSize:n.opts.titleFontSize||N,titleAlign:n.opts.titleAlign,titleBold:n.opts.titleBold,titlePos:n.opts.titlePos,titleRotate:n.opts.titleRotate},n.opts.x,n.opts.y)+'':o+='',n.opts._type===w.BAR3D&&(o+=``),o+=\"\",n.opts.layout?o=(o=(o=(o=(o=(o=(o=(o+=\"\")+' ')+' ')+' ')+' ')+' ')+' ')+\" \":o+=\"\",Array.isArray(n.opts._type)?n.opts._type.forEach(e=>{var t=Object.assign(Object.assign({},n.opts),e.options),r=t.secondaryValAxis?X:h,a=t.secondaryCatAxis?H:g;i=i||t.secondaryValAxis,o+=me(e.type,e.data,t,r,a)}):o+=me(n.opts._type,n.data,n.opts,h,g),n.opts._type!==w.PIE&&n.opts._type!==w.DOUGHNUT){if(n.opts.valAxes&&1{let a=\"\";return a=(a=(a=(a=(a=(a+=\"\")+' ')+' ')+' ')+' ')+(\"none\"!==t.serGridLine.style?we(t.serGridLine):\"\"),t.showSerAxisTitle&&(a+=be({color:t.serAxisTitleColor,fontFace:t.serAxisTitleFontFace,fontSize:t.serAxisTitleFontSize,titleRotate:t.serAxisTitleRotate,title:t.serAxisTitle||\"Axis Title\"})),a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a+=` `)+' ')+` `)+' ')+(t.serAxisLineShow?`${j(t.serAxisLineColor||f.color)}`:\"\")+' ')+\" \")+\" \")+\" \")+\" \")+` `)+` ${j(t.serAxisLabelColor||d)}`)+` `)+\" \")+' ')+\" \")+' ',t.serAxisLabelFrequency&&(a+=' '),t.serLabelFormatCode&&([\"serAxisBaseTimeUnit\",\"serAxisMajorTimeUnit\",\"serAxisMinorTimeUnit\"].forEach(e=>{!t[e]||\"string\"==typeof t[e]&&[\"days\",\"months\",\"years\"].includes(e.toLowerCase())||(console.warn(`\"${e}\" must be one of: 'days','months','years' !`),t[e]=null)}),t.serAxisBaseTimeUnit&&(a+=` `),t.serAxisMajorTimeUnit&&(a+=` `),t.serAxisMinorTimeUnit&&(a+=` `),t.serAxisMajorUnit&&(a+=` `),t.serAxisMinorUnit)&&(a+=` `),a+=\"\"})(n.opts,V,h))),null!=(e=n.opts)&&e.catAxes&&null!=(t=n.opts)&&t.catAxes[1]&&(o+=ve(Object.assign(Object.assign({},n.opts),n.opts.catAxes[1]),H,X))}return n.opts.showDataTable&&(o=(o=(o=(o=(o=(o=(o=(o=(o=(o=(o=(o=(o=(o=(o=(o+=\"\")+` `)+` `)+` `)+` `)+\" \")+' ')+\" \")+' ')+' ')+` `)+' ')+' ')+\" \")+' ')+\" \"),o=(o=(o=(o+=\" \")+(null!=(r=n.opts.plotArea.fill)&&r.color?G(n.opts.plotArea.fill):\"\"))+(n.opts.plotArea.border?`${G(n.opts.plotArea.border.color)}`:\"\")+\" \")+\" \",n.opts.showLegend&&(o=(o+=\"\")+'',(n.opts.legendFontFace||n.opts.legendFontSize||n.opts.legendColor)&&(o=(o=(o=(o+=\"\")+\" \")+\" \")+(n.opts.legendFontSize?``:\"\"),n.opts.legendColor&&(o+=G(n.opts.legendColor)),n.opts.legendFontFace&&(o+=''),n.opts.legendFontFace&&(o+=''),o=(o=(o+=\" \")+' ')+\" \"),o+=\"\"),o=(o+=' ')+' ',n.opts._type===w.SCATTER&&(o+=''),o=(o=(o=(o=(o+=\"\")+(null!=(a=n.opts.chartArea.fill)&&a.color?G(n.opts.chartArea.fill):\"\"))+(n.opts.chartArea.border?`${G(n.opts.chartArea.border.color)}`:\"\"))+\" \")+''})(p)),t(\"\")}).catch(e=>{r(e)})})})}function me(a,n,o,e,t){let i=-1,s=1;var r=null;let A=\"\";switch(a){case w.AREA:case w.BAR:case w.BAR3D:case w.LINE:case w.RADAR:A+=``,a===w.AREA&&\"stacked\"===o.barGrouping&&(A+=''),a!==w.BAR&&a!==w.BAR3D||(A=(A+='')+''),a===w.RADAR&&(A+=''),A+='',n.forEach(e=>{i++,A=(A=(A=(A=(A=(A+=\"\")+` `)+\" \")+\" Sheet1!$\"+E(e._dataIndex+e.labels.length+1)+\"$1\")+' '+O(e.name)+\"\")+\" \";var t=o.chartColors?o.chartColors[i%o.chartColors.length]:null;A+=\" \",\"transparent\"===t?A+=\"\":o.chartColorsOpacity?A+=\"\"+j(t,``)+\"\":A+=\"\"+j(t)+\"\",a===w.LINE||a===w.RADAR?0===o.lineSize?A+=\"\":A=(A+=`${j(t)}`)+'':o.dataBorder&&(A+=`${j(o.dataBorder.color)}`),A=(A+=T(o.shadow,l))+' ',a!==w.RADAR&&(A=(A+=\"\")+``,o.dataLabelBkgrdColors&&(A+=`${j(t)}`),A=(A=(A=(A+=\"\")+``)+`${j(o.dataLabelColor||d)}`)+``+\"\",o.dataLabelPosition&&(A+=``),A=(A=(A=(A+='')+``)+``)+``+\"\"),a!==w.LINE&&a!==w.RADAR||(A=(A+=\"\")+' ',o.lineDataSymbolSize&&(A+=``),A=(A=(A=(A+=\" \")+` ${j(o.chartColors[e._dataIndex+1>o.chartColors.length?Math.floor(Math.random()*o.chartColors.length):e._dataIndex])}`)+` ${j(o.lineDataSymbolLineColor||t)}`+\" \")+\" \"),a!==w.BAR&&a!==w.BAR3D||1!==n.length||!(o.chartColors&&o.chartColors!==q&&1{e=e<0?o.invertedColors||o.chartColors||q:o.chartColors||[];A=(A=(A+=\" \")+` `+' ')+' ',0===o.lineSize?A+=\"\":A=a===w.BAR?(A+=\"\")+' ':(A=(A+=\" \")+' ')+\" \",A=(A+=T(o.shadow,l))+\" \"}),A+=\"\",o.catLabelFormatCode?(A=(A=(A=(A+=\" \")+` Sheet1!$A$2:$A$${e.labels[0].length+1}`+\" \")+\" \"+(o.catLabelFormatCode||\"General\")+\"\")+` `,e.labels[0].forEach((e,t)=>A+=`${O(e)}`),A+=\" \"):(A=(A=(A+=\" \")+` Sheet1!$A$2:$${E(e.labels.length)}$${e.labels[0].length+1}`+\" \")+` `,e.labels.forEach(e=>{A+=\"\",e.forEach((e,t)=>A+=`${O(e)}`),A+=\"\"}),A+=\" \"),A=(A=(A=(A=A+\"\"+\" \")+`Sheet1!$${E(e._dataIndex+e.labels.length+1)}$2:$${E(e._dataIndex+e.labels.length+1)}$${e.labels[0].length+1}`+\" \")+\" \"+(o.valLabelFormatCode||o.dataTableFormatCode||\"General\")+\"\")+` `,e.values.forEach((e,t)=>A+=`${e||0===e?e:\"\"}`),A=(A+=\" \")+\" \",a===w.LINE&&(A+=''),A+=\"\"}),A=(A=(A=(A=(A=(A=(A=(A+=\" \")+` `)+\" \")+\" \")+` `)+\" \"+j(o.dataLabelColor||d)+\"\")+' ')+\" \",o.dataLabelPosition&&(A+=' '),A=(A=(A=(A=(A+=' ')+' ')+' ')+' ')+` `+\" \",a===w.BAR?A=(A+=` `)+` `:a===w.BAR3D?A=(A=(A+=` `)+` `)+' ':a===w.LINE&&(A+=' '),A=(A+=``)+``;break;case w.SCATTER:A=(A+=\"\")+''+'',i=-1,n.filter((e,t)=>0{i++,A=(A=(A=(A=(A=(A+=\"\")+` `+` `)+\" \")+` Sheet1!$${E(e+2)}$1`)+' '+O(a.name)+\" \")+\" \";var t=o.chartColors[i%o.chartColors.length];if(\"transparent\"===t?A+=\"\":o.chartColorsOpacity?A+=\"\"+j(t,'')+\"\":A+=\"\"+j(t)+\"\",0===o.lineSize?A+=\"\":A=(A+=`${j(t)}`)+``,A=(A=(A+=T(o.shadow,l))+\" \"+\"\")+' ',o.lineDataSymbolSize&&(A+=``),A=(A=(A=(A+=\"\")+`${j(o.chartColors[e+1>o.chartColors.length?Math.floor(Math.random()*o.chartColors.length):e])}`)+`${j(o.lineDataSymbolLineColor||o.chartColors[i%o.chartColors.length])}`+\"\")+\"\",o.showLabel){let r=ne(\"-xxxx-xxxx-xxxx-xxxxxxxxxxxx\");!a.labels[0]||\"custom\"!==o.dataLabelFormatScatter&&\"customXY\"!==o.dataLabelFormatScatter||(A+=\"\",a.labels[0].forEach((e,t)=>{\"custom\"!==o.dataLabelFormatScatter&&\"customXY\"!==o.dataLabelFormatScatter||(A=(A=(A=(A=(A=(A=(A=(A=(A+=\" \")+` `+\" \")+\" \")+\" \")+\" \")+\" \")+\" \")+' ')+\" \"+O(e)+\" \",A=(A=(A=(A=(A=(A=\"customXY\"!==o.dataLabelFormatScatter||/^ *$/.test(e)?A:(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A+=\" \")+' ')+\" ( \")+' ')+' ')+\" \")+\" [\"+O(a.name)+\"\")+\" \")+' ')+\" , \")+' ')+' ')+\" \")+\" [\"+O(a.name)+\"]\")+\" \")+' ')+\" ) \")+' ')+\" \")+\" \")+\" \")+\" \")+\" \",o.dataLabelPosition&&(A+=' '),A=(A=(A=(A=(A=(A=(A+=' ')+' ')+' ')+' ')+' ')+` `+\" \")+\" \")}),A+=\"\"),\"XY\"===o.dataLabelFormatScatter&&(A=(A=(A=(A=(A=(A=(A=(A=(A=(A+=\" \")+\" \")+\" \")+\" \")+\" \")+\" \")+\" \")+\" \")+' ')+\" \",o.dataLabelPosition&&(A+=' '),A=(A=(A=(A=(A=(A=(A=(A+=' ')+` `)+` `)+` `)+' ')+' ')+' ')+\" \")}1===n.length&&o.chartColors!==q&&a.values.forEach((e,t)=>{e=e<0?o.invertedColors||o.chartColors||q:o.chartColors||[];A=(A=(A+=\" \")+` `+' ')+' ',0===o.lineSize?A+=\"\":A=(A+=\"\")+' ',A=(A+=T(o.shadow,l))+\" \"}),A=(A=(A=(A+=\" \")+` Sheet1!$A$2:$A$${n[0].values.length+1}`)+\" General\")+` `,n[0].values.forEach((e,t)=>{A+=`${e||0===e?e:\"\"}`}),A=(A=(A=(A=(A=(A+=\" \")+\" \")+\" \")+` Sheet1!$${E(e+2)}$2:$${E(e+2)}$${n[0].values.length+1}`)+\" General\")+` `,n[0].values.forEach((e,t)=>{A+=`${a.values[t]||0===a.values[t]?a.values[t]:\"\"}`}),A=(A=(A+=\" \")+\" \")+''}),A=(A=(A=(A=(A=(A=(A=(A+=\" \")+` `)+\" \")+\" \")+` `)+\" \"+j(o.dataLabelColor||d)+\"\")+' ')+\" \",o.dataLabelPosition&&(A+=' '),A=(A=(A=(A+=' ')+' ')+' ')+' ',A=(A+=``)+(\"\");break;case w.BUBBLE:case w.BUBBLE3D:A=A+\"\"+'',i=-1,n.filter((e,t)=>0{i++,A=(A=(A=(A=(A=(A+=\"\")+` `+` `)+\" \")+\" Sheet1!$\"+E(s+1)+\"$1\")+' '+O(r.name)+\" \")+\" \";e=o.chartColors[i%o.chartColors.length];\"transparent\"===e?A+=\"\":o.chartColorsOpacity?A+=`${j(e,'')}`:A+=\"\"+j(e)+\"\",0===o.lineSize?A+=\"\":o.dataBorder?A+=`${j(o.dataBorder.color)}`:A=(A+=`${j(e)}`)+``,A=A+T(o.shadow,l)+\"\",A=(A=(A=(A+=\" \")+` Sheet1!$A$2:$A$${n[0].values.length+1}`)+\" General\")+` `,n[0].values.forEach((e,t)=>{A+=`${e||0===e?e:\"\"}`}),A=(A=(A=(A+=\" \")+\" \")+\" \")+`Sheet1!$${E(s+1)}$2:$${E(s+1)}$${n[0].values.length+1}`,s++,A=(A+=\" General\")+` `,n[0].values.forEach((e,t)=>{A+=`${r.values[t]||0===r.values[t]?r.values[t]:\"\"}`}),A=(A=(A=(A+=\" \")+\" \")+\" \")+`Sheet1!$${E(s+1)}$2:$${E(s+1)}$${r.sizes.length+1}`,s++,A=(A+=\" General\")+` `,r.sizes.forEach((e,t)=>{A+=`${e||\"\"}`}),A=(A=(A+=\" \")+\" \")+' '}),A=(A=(A=(A=(A+=\"\")+``+\"\")+``)+`${j(o.dataLabelColor||d)}`)+``+\"\",o.dataLabelPosition&&(A+=``),A=(A=(A=(A=(A=(A=(A+='')+``)+``)+' ')+' ')+\"\")+``+\"\";break;case w.DOUGHNUT:case w.PIE:r=n[0],A=(A=(A=(A=(A=(A=(A=(A=(A=A+(\"\")+' ')+\"\"+' ')+' '+\" \")+\" \"+\" Sheet1!$B$1\")+\" \"+' ')+(' '+O(r.name)+\"\"))+\" \"+\" \")+\" \"+\" \")+' '+' ',o.dataNoEffects?A+=\"\":A+=T(o.shadow,l),A+=\" \",r.labels[0].forEach((e,t)=>{A=(A=(A=A+\"\"+` `)+' ')+`${j(o.chartColors[t+1>o.chartColors.length?Math.floor(Math.random()*o.chartColors.length):t])}`,o.dataBorder&&(A+=`${j(o.dataBorder.color)}`),A=(A+=T(o.shadow,l))+\" \"}),A+=\"\",r.labels[0].forEach((e,t)=>{A=(A=(A=(A=(A=(A=(A=A+\"\"+` `)+` `+\" \")+\" \")+` `)+\" \"+j(o.dataLabelColor||d)+\"\")+` `+\" \")+\" \",a===w.PIE&&o.dataLabelPosition&&(A+=``),A=(A=(A=(A=(A=(A+=' ')+' ')+' ')+' ')+' ')+' '}),A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=(A=A+` `+\" \")+\" \"+\" \")+\" \"+\" \")+` `+' ')+\" \"+\" \")+\" \"+\" \")+(a===w.PIE?'':\"\"))+' '+' ')+' '+' ')+' '+' ')+` `+\"\")+\"\"+\" \")+` Sheet1!$A$2:$A$${r.labels[0].length+1}`+\" \")+` `,r.labels[0].forEach((e,t)=>{A+=`${O(e)}`}),A=(A=(A=(A=(A+=\" \")+\" \"+\"\")+\" \"+\" \")+` Sheet1!$B$2:$B$${r.labels[0].length+1}`+\" \")+` `,r.values.forEach((e,t)=>{A+=`${e||0===e?e:\"\"}`}),A=(A=(A=A+\" \"+\" \")+\" \"+\" \")+` `,a===w.DOUGHNUT&&(A+=``),A+=\"\";break;default:A+=\"\"}return A}function ve(t,e,r){let a=\"\";return t._type===w.SCATTER||t._type===w.BUBBLE||t._type===w.BUBBLE3D?a+=\"\":a+=\"\",a=(a=a+(' ')+\" \")+(''),!t.catAxisMaxVal&&0!==t.catAxisMaxVal||(a+=``),!t.catAxisMinVal&&0!==t.catAxisMinVal||(a+=``),a=(a=(a=(a+=\"\")+(' '))+(' '))+(\"none\"!==t.catGridLine.style?we(t.catGridLine):\"\"),t.showCatAxisTitle&&(a+=be({color:t.catAxisTitleColor,fontFace:t.catAxisTitleFontFace,fontSize:t.catAxisTitleFontSize,titleRotate:t.catAxisTitleRotate,title:t.catAxisTitle||\"Axis Title\"})),t._type===w.SCATTER||t._type===w.BUBBLE||t._type===w.BUBBLE3D?a+=' ':a+=' ',a=t._type===w.SCATTER?(a+=' ')+' ':(a=(a+=' ')+' ')+' ',a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a+=\" \")+` `)+(t.catAxisLineShow?\"\"+j(t.catAxisLineColor||f.color)+\"\":\"\"))+(' '))+\" \"+\" \")+\" \"+\" \")+(t.catAxisLabelRotate?``:\"\")+\" \")+\" \"+\" \")+` `)+(\" \"+j(t.catAxisLabelColor||d)+\"\"))+(' '))+\" \"+\" \")+(' ')+\" \")+\" \"+(' '))+` `)+' '+' ')+` `,t.catAxisLabelFrequency&&(a+=' '),(t.catLabelFormatCode||t._type===w.SCATTER||t._type===w.BUBBLE||t._type===w.BUBBLE3D)&&(t.catLabelFormatCode&&([\"catAxisBaseTimeUnit\",\"catAxisMajorTimeUnit\",\"catAxisMinorTimeUnit\"].forEach(e=>{!t[e]||\"string\"==typeof t[e]&&[\"days\",\"months\",\"years\"].includes(t[e].toLowerCase())||(console.warn(`\"${e}\" must be one of: 'days','months','years' !`),t[e]=null)}),t.catAxisBaseTimeUnit&&(a+=''),t.catAxisMajorTimeUnit&&(a+=''),t.catAxisMinorTimeUnit)&&(a+=''),t.catAxisMajorUnit&&(a+=``),t.catAxisMinorUnit)&&(a+=``),t._type===w.SCATTER||t._type===w.BUBBLE||t._type===w.BUBBLE3D?a+=\"\":a+=\"\",a}function ye(e,t){let r=t===h?\"col\"===e.barDir?\"l\":\"b\":\"col\"!==e.barDir?\"r\":\"t\";t===X&&(r=\"r\");var a=t===h?g:H;let n=\"\";return n=(n+=\"\")+(' ')+\" \",e.valAxisLogScaleBase&&(n+=``),n+='',!e.valAxisMaxVal&&0!==e.valAxisMaxVal||(n+=``),!e.valAxisMinVal&&0!==e.valAxisMinVal||(n+=``),n=(n=(n+=\" \")+` `)+(' '),\"none\"!==e.valGridLine.style&&(n+=we(e.valGridLine)),e.showValAxisTitle&&(n+=be({color:e.valAxisTitleColor,fontFace:e.valAxisTitleFontFace,fontSize:e.valAxisTitleFontSize,titleRotate:e.valAxisTitleRotate,title:e.valAxisTitle||\"Axis Title\"})),n+=``,n=e._type===w.SCATTER?(n+=' ')+' ':(n=(n+=' ')+' ')+' ',n=(n=(n=(n=(n=(n=(n=(n=(n=(n=(n=(n=(n=(n+=\" \")+` `)+(e.valAxisLineShow?\"\"+j(e.valAxisLineColor||f.color)+\"\":\"\"))+(' '))+\" \"+\" \")+\" \"+\" \")+` `+\" \")+\" \"+\" \")+` `)+(\" \"+j(e.valAxisLabelColor||d)+\"\"))+(' '))+\" \"+\" \")+(' ')+\" \")+\" \"+(' '),\"number\"==typeof e.catAxisCrossesAt?n+=` `:\"string\"==typeof e.catAxisCrossesAt?n+=' ':(t=\"r\"===r||\"t\"===r,n+=' '),n+=' e.type===w.AREA).length?\"midCat\":\"between\")+'\"/>',e.valAxisMajorUnit&&(n+=` `),e.valAxisDisplayUnit&&(n+=`${e.valAxisDisplayUnitLabel?\"\":\"\"}`),n+=\"\"}function be(r,a,n){var e=\"left\"===r.titleAlign||\"right\"===r.titleAlign?``:\"\",t=r.titleRotate?``:\"\",o=r.fontSize?`sz=\"${Math.round(100*r.fontSize)}\"`:\"\",i=r.titleBold?1:0;let s=\"\";if(r.titlePos&&\"number\"==typeof r.titlePos.x&&\"number\"==typeof r.titlePos.y){a=r.titlePos.x+a,n=r.titlePos.y+n;let e=0===a?0:a*(a/5)/10,t=(1<=e&&(e/=10),.1<=e&&(e/=10),0===n?0:n*(n/5)/10);1<=t&&(t/=10),.1<=t&&(t/=10),s=``}return`\n \n \n ${t}\n \n \n ${e}\n \n ${j(r.color||d)}\n \n \n \n \n \n ${j(r.color||d)}\n \n \n ${O(r.title)||\"\"}\n \n \n \n \n ${s}\n \n `}function E(e){let t=\"\";e-=1;return t=e<=25?r[e]:\"\"+r[Math.floor(e/r.length-1)]+r[e%r.length]}function T(e,t){var r,a,n,o,i,s;return e?\"object\"!=typeof e?(console.warn(\"`shadow` options must be an object. Ex: `{shadow: {type:'none'}}`\"),\"\"):(r=\"\",e=(t=Object.assign(Object.assign({},t),e)).type||\"outer\",a=z(t.blur),n=z(t.offset),o=Math.round(6e4*t.angle),i=t.color,s=Math.round(1e5*t.opacity),(r=(r+=``)+``+``)+``+\"\"):\"\"}function we(e){var t=\"\";return(t+=\" \")+` `+(' ')+(' ')+\" \"+\" \"+\"\"}function xe(e){if(e&&\"flat\"!==e){if(\"square\"===e)return\"sq\";if(\"round\"===e)return\"rnd\";throw new Error(\"Invalid chart line cap: \"+e)}return\"flat\"}function Ce(e){let t,r,a=\"undefined\"!=typeof process&&!(null==(t=process.versions)||!t.node)&&\"node\"===(null==(r=process.release)?void 0:r.name),o,i,s=a?()=>c(this,void 0,void 0,function*(){({default:o}=yield import(\"node:fs\")),{default:i}=yield import(\"node:https\")}):()=>c(this,void 0,void 0,function*(){}),A=(a&&s(),[]),l=e._relsMedia.filter(e=>!(\"online\"===e.type||e.data||e.path&&(e.path,e.path.includes(\"preencoded\")))),n=[];return l.forEach(e=>{n.includes(e.path)?e.isDuplicate=!0:(e.isDuplicate=!1,n.push(e.path))}),l.filter(e=>!e.isDuplicate).forEach(n=>{A.push(c(this,void 0,void 0,function*(){if(i||(yield s()),a&&o&&0!==n.path.indexOf(\"http\"))try{var e=o.readFileSync(n.path);return n.data=Buffer.from(e).toString(\"base64\"),l.filter(e=>e.isDuplicate&&e.path===n.path).forEach(e=>e.data=n.data),\"done\"}catch(e){throw n.data=P,l.filter(e=>e.isDuplicate&&e.path===n.path).forEach(e=>e.data=n.data),new Error(`ERROR: Unable to read media: \"${n.path}\"\n`+String(e))}return a&&i&&n.path.startsWith(\"http\")?yield new Promise((r,a)=>{i.get(n.path,e=>{let t=\"\";e.setEncoding(\"binary\"),e.on(\"data\",e=>t+=e),e.on(\"end\",()=>{n.data=Buffer.from(t,\"binary\").toString(\"base64\"),l.filter(e=>e.isDuplicate&&e.path===n.path).forEach(e=>e.data=n.data),r(\"done\")}),e.on(\"error\",()=>{n.data=P,l.filter(e=>e.isDuplicate&&e.path===n.path).forEach(e=>e.data=n.data),a(new Error(\"ERROR! Unable to load image (https.get): \"+n.path))})})}):yield new Promise((t,r)=>{let a=new XMLHttpRequest;a.onload=()=>{let e=new FileReader;e.onloadend=()=>{n.data=e.result,l.filter(e=>e.isDuplicate&&e.path===n.path).forEach(e=>e.data=n.data),n.isSvgPng?Pe(n).then(()=>t(\"done\")).catch(r):t(\"done\")},e.readAsDataURL(a.response)},a.onerror=()=>{n.data=P,l.filter(e=>e.isDuplicate&&e.path===n.path).forEach(e=>e.data=n.data),r(new Error(\"ERROR! Unable to load image (xhr.onerror): \"+n.path))},a.open(\"GET\",n.path),a.responseType=\"blob\",a.send()})}))}),e._relsMedia.filter(e=>e.isSvgPng&&e.data).forEach(e=>{c(this,void 0,void 0,function*(){a&&!o&&(yield s()),a&&o?(e.data=P,A.push(Promise.resolve(\"done\"))):A.push(Pe(e))})}),A}function Pe(n){return c(this,void 0,void 0,function*(){return yield new Promise((r,e)=>{let a=new Image;a.onload=()=>{a.width+a.height===0&&a.onerror(\"h/w=0\");let e=document.createElement(\"CANVAS\");var t=e.getContext(\"2d\");e.width=a.width,e.height=a.height,t.drawImage(a,0,0);try{n.data=e.toDataURL(n.type),r(\"done\")}catch(e){a.onerror(e.toString())}e=null},a.onerror=()=>{n.data=P,e(new Error(\"ERROR! Unable to load image (image.onerror): \"+n.path))},a.src=\"string\"==typeof n.data?n.data:P})})}let Se={cover:function(e,t){var e=e.h/e.w,r=e`},contain:function(e,t){var e=e.h/e.w,r=e`},crop:function(e,t){var r=t.x,a=e.w-(t.x+t.w),n=t.y,t=e.h-(t.y+t.h);return``}};function Le(k){let e,_=k._name?'':\"\",N=1;return k._bkgdImgRid?_+=``:null!=(e=k.background)&&e.color?_+=`${G(k.background)}`:!k.bkgd&&k._name&&k._name===t&&(_+=''),_=(_=_+\"\"+'')+''+'',k._slideObjects.forEach((a,e)=>{let t,r,n,o,i,s,A,l,c=0,p=0,u=R(\"75%\",\"X\",k._presLayout),f=0,d,h=\"\",g=null,m,v=0,y=0,b,w=null;var x,C,P,S,L=null==(t=a.options)?void 0:t.sizing,E=null==(r=a.options)?void 0:r.rounding;void 0!==k._slideLayout&&void 0!==k._slideLayout._slideObjects&&a.options&&a.options.placeholder&&(d=k._slideLayout._slideObjects.filter(e=>e.options.placeholder===a.options.placeholder)[0]),a.options=a.options||{},void 0!==a.options.x&&(c=R(a.options.x,\"X\",k._presLayout)),void 0!==a.options.y&&(p=R(a.options.y,\"Y\",k._presLayout)),void 0!==a.options.w&&(u=R(a.options.w,\"X\",k._presLayout)),void 0!==a.options.h&&(f=R(a.options.h,\"Y\",k._presLayout));let T=u,B=f;switch(d&&(!d.options.x&&0!==d.options.x||(c=R(d.options.x,\"X\",k._presLayout)),!d.options.y&&0!==d.options.y||(p=R(d.options.y,\"Y\",k._presLayout)),!d.options.w&&0!==d.options.w||(u=R(d.options.w,\"X\",k._presLayout)),!d.options.h&&0!==d.options.h||(f=R(d.options.h,\"Y\",k._presLayout))),a.options.flipH&&(h+=' flipH=\"1\"'),a.options.flipV&&(h+=' flipV=\"1\"'),a.options.rotate&&(h+=` rot=\"${U(a.options.rotate)}\"`),a._type){case I.table:if(g=a.arrTabRows,m=a.options,v=0,y=0,g[0].forEach(e=>{b=e.options||null,v+=null!==b&&(b,1)&&b.colspan?Number(b.colspan):1}),w=``,w=(w+=' ')+``+'',Array.isArray(m.colW)){w+=\"\";for(let t=0;t`}}else{y=m.colW||F,a.options.w&&!m.colW&&(y=Math.round((\"number\"==typeof a.options.w?a.options.w:1)/v)),w+=\"\";for(let e=0;e`}w+=\"\",g.forEach(r=>{for(let t=0;t({_type:I.tablecell,options:{rowspan:e},_hmerge:!0})),r.splice(t+1,0,...a),t+=n):t+=1}}),g.forEach((e,t)=>{let n=g[t+1];n&&e.forEach((e,t)=>{var r=e._rowContinue||(null==(r=e.options)?void 0:r.rowspan),a=null==(a=e.options)?void 0:a.colspan;r&&1{let r=0;Array.isArray(m.rowH)&&m.rowH[t]?r=M(Number(m.rowH[t])):m.rowH&&!isNaN(Number(m.rowH))?r=M(Number(m.rowH)):(a.options.cy||a.options.h)&&(r=Math.round((a.options.h?M(a.options.h):\"number\"==typeof a.options.cy?a.options.cy:1)/g.length)),w+=``,e.forEach(a=>{let t={rowSpan:1<(null==(o=a.options)?void 0:o.rowspan)?a.options.rowspan:void 0,gridSpan:1<(null==(o=a.options)?void 0:o.colspan)?a.options.colspan:void 0,vMerge:a._vmerge?1:void 0,hMerge:a._hmerge?1:void 0},n=Object.keys(t).map(e=>[e,t[e]]).filter(([,e])=>!!e).map(([e,t])=>`${String(e)}=\"${String(t)}\"`).join(\" \");if(n=n&&\" \"+n,a._hmerge||a._vmerge)w+=``;else{let t=a.options||{};a.options=t,[\"align\",\"bold\",\"border\",\"color\",\"fill\",\"fontFace\",\"fontSize\",\"margin\",\"textDirection\",\"underline\",\"valign\"].forEach(e=>{m[e]&&!t[e]&&0!==t[e]&&(t[e]=m[e])});var o=t.valign?` anchor=\"${t.valign.replace(/^c$/i,\"ctr\").replace(/^m$/i,\"ctr\").replace(\"center\",\"ctr\").replace(\"middle\",\"ctr\").replace(\"top\",\"t\").replace(\"btm\",\"b\").replace(\"bottom\",\"b\")}\"`:\"\",i=t.textDirection&&\"horz\"!==t.textDirection?` vert=\"${t.textDirection}\"`:\"\",s=(s=(null!=(s=null==(s=a._optImp)?void 0:s.fill)&&s.color?a._optImp.fill.color:null!=(s=a._optImp)&&s.fill&&\"string\"==typeof a._optImp.fill?a._optImp.fill:\"\")||t.fill?t.fill:\"\")?G(s):\"\";let e=0===t.margin||t.margin?t.margin:Q,r=(Array.isArray(e)||\"number\"!=typeof e||(e=[e,e,e,e]),\"\");r=1<=e[0]?` marL=\"${z(e[3])}\" marR=\"${z(e[1])}\" marT=\"${z(e[0])}\" marB=\"${z(e[2])}\"`:` marL=\"${M(e[3])}\" marR=\"${M(e[1])}\" marT=\"${M(e[0])}\" marB=\"${M(e[2])}\"`,w+=`${De(a)}`,t.border&&Array.isArray(t.border)&&[{idx:3,name:\"lnL\"},{idx:1,name:\"lnR\"},{idx:0,name:\"lnT\"},{idx:2,name:\"lnB\"}].forEach(e=>{\"none\"!==t.border[e.idx].type?w=(w=(w=(w+=``)+`${j(t.border[e.idx].color)}`)+``)+``:w+=``}),w=(w+=s)+\" \"+\" \"}}),w+=\"\"}),w=(w=w+\" \"+\" \")+\" \"+\"\",_+=w,N++;break;case I.text:case I.placeholder:if(a.options.line||0!==f||(f=.3*F),a.options._bodyProp||(a.options._bodyProp={}),a.options.margin&&Array.isArray(a.options.margin)?(a.options._bodyProp.lIns=z(a.options.margin[0]||0),a.options._bodyProp.rIns=z(a.options.margin[1]||0),a.options._bodyProp.bIns=z(a.options.margin[2]||0),a.options._bodyProp.tIns=z(a.options.margin[3]||0)):\"number\"==typeof a.options.margin&&(a.options._bodyProp.lIns=z(a.options.margin),a.options._bodyProp.rIns=z(a.options.margin),a.options._bodyProp.bIns=z(a.options.margin),a.options._bodyProp.tIns=z(a.options.margin)),_=(_+=\"\")+``,null!=(n=a.options.hyperlink)&&n.url&&(_+=``),null!=(o=a.options.hyperlink)&&o.slide&&(_+=``),_=(_=(_=(_=(_=(_+=\"\")+(\"':\"/>\")))+`${ke(\"placeholder\"===a._type?a:d)}`+\"\")+``)+``)+``,\"custGeom\"===a.shape)_=(_=(_=(_=(_+=\"\")+\"\")+\"\")+'')+``,null!=(s=a.options.points)&&s.forEach((e,t)=>{if(\"curve\"in e)switch(e.curve.type){case\"arc\":_+=``;break;case\"cubic\":_+=`\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t`;break;case\"quadratic\":_+=`\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t`}else\"close\"in e?_+=\"\":e.moveTo||0===t?_+=``:_+=``}),_=(_+=\"\")+\"\";else{if(_+='',a.options.rectRadius)_+=``;else if(a.options.angleRange){for(let e=0;e<2;e++){var D=a.options.angleRange[e];_+=``}a.options.arcThicknessRatio&&(_+=``)}_+=\"\"}_+=a.options.fill?G(a.options.fill):\"\",a.options.line&&(_+=a.options.line.width?``:\"\",a.options.line.color&&(_+=G(a.options.line)),a.options.line.dashType&&(_+=``),a.options.line.beginArrowType&&(_+=``),a.options.line.endArrowType&&(_+=``),_+=\"\"),a.options.shadow&&\"none\"!==a.options.shadow.type&&(a.options.shadow.type=a.options.shadow.type||\"outer\",a.options.shadow.blur=z(a.options.shadow.blur||8),a.options.shadow.offset=z(a.options.shadow.offset||4),a.options.shadow.angle=Math.round(6e4*(a.options.shadow.angle||270)),a.options.shadow.opacity=Math.round(1e5*(a.options.shadow.opacity||.75)),a.options.shadow.color=a.options.shadow.color||W.color,_=(_=(_=(_=(_+=\"\")+` `)+` `)+` `)+\" \"),_=(_+=\"\")+De(a)+\"\";break;case I.image:_=(_=_+\"\"+\" \")+``,null!=(A=a.hyperlink)&&A.url&&(_+=``),null!=(l=a.hyperlink)&&l.slide&&(_+=``),_=(_=(_=_+\" \"+' ')+(\" \"+ke(d)+\"\"))+\" \"+\"\",_=(k._relsMedia||[]).filter(e=>e.rId===a.imageRid)[0]&&\"svg\"===(k._relsMedia||[]).filter(e=>e.rId===a.imageRid)[0].extn?(_=(_=(_=(_+=``)+(a.options.transparency?` `:\"\"))+' ')+` `+\" \")+\" \":(_+=``)+(a.options.transparency?``:\"\")+\"\",null!=L&&L.type?(x=L.w?R(L.w,\"X\",k._presLayout):u,C=L.h?R(L.h,\"Y\",k._presLayout):f,P=R(L.x||0,\"X\",k._presLayout),S=R(L.y||0,\"Y\",k._presLayout),_+=Se[L.type]({w:T,h:B},{w:x,h:C,x:P,y:S}),T=x,B=C):_+=\" \",_=(_=(_=(_=(_=_+\"\"+\"\")+(\" \"))+` `)+` `)+\" \"+` `,a.options.shadow&&\"none\"!==a.options.shadow.type&&(a.options.shadow.type=a.options.shadow.type||\"outer\",a.options.shadow.blur=z(a.options.shadow.blur||8),a.options.shadow.offset=z(a.options.shadow.offset||4),a.options.shadow.angle=Math.round(6e4*(a.options.shadow.angle||270)),a.options.shadow.opacity=Math.round(1e5*(a.options.shadow.opacity||.75)),a.options.shadow.color=a.options.shadow.color||W.color,_=(_=(_=(_=(_+=\"\")+``)+``)+``)+``+\"\"),_=_+\"\"+\"\";break;case I.media:_=\"online\"===a.mtype?(_=(_=(_=(_=(_=(_=(_+=\" \")+``)+\" \")+` `)+\" \")+` `+\" \")+` `+' ')+\" \":(_=(_=(_=(_=(_=(_=(_=(_=(_=(_+=\" \")+``)+' ')+` `)+' ')+` `)+\" \")+\" \")+` `+\" \")+` `+' ')+\" \";break;case I.chart:_=(_=(_=(_=(_=(_=(_=_+\"\"+\" \")+` `+\" \")+` ${ke(d)}`+\" \")+` `)+' '+' ')+` `+\" \")+\" \"+\"\";break;default:_+=\"\"}}),k._slideNumberProps&&(k._slideNumberProps.align||(k._slideNumberProps.align=\"left\"),_=(_=(_=(_=(_+=\" \")+' ')+\" \")+\"\"+``+``+' ')+\" \",(k._slideNumberProps.fontFace||k._slideNumberProps.fontSize||k._slideNumberProps.color)&&(_+=``,k._slideNumberProps.color&&(_+=G(k._slideNumberProps.color)),k._slideNumberProps.fontFace&&(_+=``),_+=\"\"),_+=\"\",k._slideNumberProps.align.startsWith(\"l\")?_+='':k._slideNumberProps.align.startsWith(\"c\")?_+='':k._slideNumberProps.align.startsWith(\"r\")?_+='':_+='',_=(_+=``)+`${k._slideNum}`+\"\"),_=_+\"\"+\"\"}function Ee(e,t){let r=0,a=''+A+'';return e._rels.forEach(e=>{r=Math.max(r,e.rId),e.type.toLowerCase().includes(\"hyperlink\")?\"slide\"===e.data?a+=``:a+=``:e.type.toLowerCase().includes(\"notesSlide\")&&(a+=``)}),(e._relsChart||[]).forEach(e=>{r=Math.max(r,e.rId),a+=``}),(e._relsMedia||[]).forEach(e=>{var t=e.rId.toString();r=Math.max(r,e.rId),e.type.toLowerCase().includes(\"image\")?a+='':e.type.toLowerCase().includes(\"audio\")?a.includes(' Target=\"'+e.Target+'\"')?a+='':a+='':e.type.toLowerCase().includes(\"video\")?a.includes(' Target=\"'+e.Target+'\"')?a+='':a+='':e.type.toLowerCase().includes(\"online\")&&(a.includes(' Target=\"'+e.Target+'\"')?a+='':a+='')}),t.forEach((e,t)=>{a+=``}),a+=\"\"}function Te(t,e){let r,a,n=\"\",o=\"\",i=\"\",s=\"\";var A,l=e?\"a:lvl1pPr\":\"a:pPr\";let c=z(_),p=\"<\"+l+(t.options.rtlMode?' rtl=\"1\" ':\"\");if(t.options.align)switch(t.options.align){case\"left\":p+=' algn=\"l\"';break;case\"right\":p+=' algn=\"r\"';break;case\"center\":p+=' algn=\"ctr\"';break;case\"justify\":p+=' algn=\"just\"';break;default:p+=\"\"}if(t.options.lineSpacing?o=``:t.options.lineSpacingMultiple&&(o=``),t.options.indentLevel&&!isNaN(Number(t.options.indentLevel))&&0`),t.options.paraSpaceAfter&&!isNaN(Number(t.options.paraSpaceAfter))&&0`),\"object\"==typeof t.options.bullet)if(null!=(a=null==(r=null==t?void 0:t.options)?void 0:r.bullet)&&a.indent&&(c=z(t.options.bullet.indent)),t.options.bullet.type)\"number\"===t.options.bullet.type.toString().toLowerCase()&&(p+=` marL=\"${t.options.indentLevel&&0`);else if(t.options.bullet.characterCode){let e=`&#x${t.options.bullet.characterCode};`;/^[0-9A-Fa-f]{4}$/.test(t.options.bullet.characterCode)||(console.warn(\"Warning: `bullet.characterCode should be a 4-digit unicode charatcer (ex: 22AB)`!\"),e=C.DEFAULT),p+=` marL=\"${t.options.indentLevel&&0'}else if(t.options.bullet.code){let e=`&#x${t.options.bullet.code};`;/^[0-9A-Fa-f]{4}$/.test(t.options.bullet.code)||(console.warn(\"Warning: `bullet.code should be a 4-digit hex code (ex: 22AB)`!\"),e=C.DEFAULT),p+=` marL=\"${t.options.indentLevel&&0'}else p+=` marL=\"${t.options.indentLevel&&0`;else n=t.options.bullet?(p+=` marL=\"${t.options.indentLevel&&0`):(t.options.bullet,p+=' indent=\"0\" marL=\"0\"',\"\");return t.options.tabStops&&Array.isArray(t.options.tabStops)&&(A=t.options.tabStops.map(e=>``).join(\"\"),s=`${A}`),p+=\">\"+o+i+n+s,e&&(p+=Be(t.options,!0)),p+=\"\"}function Be(e,t){let r,a=\"\";var n,o,i,t=t?\"a:defRPr\":\"a:rPr\";if(a=(a=(a=(a=(a+=\"<\"+t+' lang=\"'+(e.lang||\"en-US\")+'\"'+(e.lang?' altLang=\"en-US\"':\"\"))+(e.fontSize?` sz=\"${Math.round(100*e.fontSize)}\"`:\"\"))+(null!=e&&e.bold?` b=\"${e.bold?\"1\":\"0\"}\"`:\"\"))+(null!=e&&e.italic?` i=\"${e.italic?\"1\":\"0\"}\"`:\"\"))+(null!=e&&e.strike?` strike=\"${\"string\"==typeof e.strike?e.strike:\"sngStrike\"}\"`:\"\"),\"object\"==typeof e.underline&&null!=(r=e.underline)&&r.style?a+=` u=\"${e.underline.style}\"`:\"string\"==typeof e.underline?a+=` u=\"${String(e.underline)}\"`:e.hyperlink&&(a+=' u=\"sng\"'),e.baseline?a+=` baseline=\"${Math.round(50*e.baseline)}\"`:e.subscript?a+=' baseline=\"-40000\"':e.superscript&&(a+=' baseline=\"30000\"'),a=a+(e.charSpacing?` spc=\"${Math.round(100*e.charSpacing)}\" kern=\"0\"`:\"\")+' dirty=\"0\">',(e.color||e.fontFace||e.outline||\"object\"==typeof e.underline&&e.underline.color)&&(e.outline&&\"object\"==typeof e.outline&&(a+=`${G(e.outline.color||\"FFFFFF\")}`),e.color&&(a+=G({color:e.color,transparency:e.transparency})),e.highlight&&(a+=`${j(e.highlight)}`),\"object\"==typeof e.underline&&e.underline.color&&(a+=`${G(e.underline.color)}`),e.glow&&(a+=`${n=e.glow,o=Y,i=\"\",o=Object.assign(Object.assign({},o),n),(i+=``)+j(o.color,``)+\"\"}`),e.fontFace)&&(a+=``),e.hyperlink){if(\"object\"!=typeof e.hyperlink)throw new Error(\"ERROR: text `hyperlink` option should be an object. Ex: `hyperlink:{url:'https://github.com'}` \");if(!e.hyperlink.url&&!e.hyperlink.slide)throw new Error(\"ERROR: 'hyperlink requires either `url` or `slide`'\");e.hyperlink.url?a+=`\":\"/>\"):e.hyperlink.slide&&(a+=`\":\"/>\")),e.color&&(a=(a=(a+=' ')+' ')+\" \")}return a+=``}function De(r){let o=r.options||{},e=[],a=[];if(o&&r._type!==I.tablecell&&null==r.text)return\"\";let i=r._type===I.tablecell?\"\":\"\",n=(i+=(e=>{let t=\"\",e.options.fit&&(\"none\"===e.options.fit?t+=\"\":\"shrink\"===e.options.fit?t+=\"\":\"resize\"===e.options.fit&&(t+=\"\")),e.options.shrinkText&&(t+=\"\"),t=t+(e.options._bodyProp.autoFit?\"\":\"\")+\"\"):t+=' wrap=\"square\" rtlCol=\"0\">',e._type===I.tablecell?\"\":t})(r),0===o.h&&o.line&&o.align?i+='':\"placeholder\"===r._type?i+=`${Te(r,!0)}`:i+=\"\",\"string\"==typeof r.text||\"number\"==typeof r.text?e.push({text:r.text.toString(),options:o||{}}):r.text&&!Array.isArray(r.text)&&\"object\"==typeof r.text&&Object.keys(r.text).includes(\"text\")?e.push({text:r.text||\"\",options:r.options||{}}):Array.isArray(r.text)&&(e=r.text.map(e=>({text:e.text,options:e.options}))),e.forEach((t,e)=>{t.text||(t.text=\"\"),t.options=t.options||o||{},0===e&&t.options&&!t.options.bullet&&o.bullet&&(t.options.bullet=o.bullet),\"string\"!=typeof t.text&&\"number\"!=typeof t.text||(t.text=t.text.toString().replace(/\\r*\\n/g,A)),t.text.includes(A)&&null===t.text.match(/\\n$/g)?t.text.split(A).forEach(e=>{t.options.breakLine=!0,a.push({text:e,options:t.options})}):a.push(t)}),[]),s=[];return a.forEach((e,t)=>{0{let t,a=!1,n=(i+=\"\",\"{0<(r.options._lineIdx=e)&&r.options.softBreakBefore&&(i+=\"\"),r.options.align=r.options.align||o.align,r.options.lineSpacing=r.options.lineSpacing||o.lineSpacing,r.options.lineSpacingMultiple=r.options.lineSpacingMultiple||o.lineSpacingMultiple,r.options.indentLevel=r.options.indentLevel||o.indentLevel,r.options.paraSpaceBefore=r.options.paraSpaceBefore||o.paraSpaceBefore,r.options.paraSpaceAfter=r.options.paraSpaceAfter||o.paraSpaceAfter,n=Te(r,!1),i+=n.replace(\"\",\"\"),Object.entries(o).filter(([e])=>!(r.options.hyperlink&&\"color\"===e)).forEach(([e,t])=>{\"bullet\"===e||r.options[e]||(r.options[e]=t)}),i+=(e=r).text?`${Be(e.options,!1)}${O(e.text)}`:\"\",(!r.text&&o.fontSize||r.options.fontSize)&&(a=!0,o.fontSize=o.fontSize||r.options.fontSize)}),r._type===I.tablecell&&(o.fontSize||o.fontFace)?o.fontFace?i=(i=(i=(i+=`')+``)+``)+``+\"\":i+=`':a?i+=`':i+=``,i+=\"\"}),-1===i.indexOf(\"\")&&(i+=\"\"),i+=r._type===I.tablecell?\"\":\"\"}function ke(e){var t,r;return e?(t=null!=(t=e.options)&&t._placeholderIdx?e.options._placeholderIdx:\"\",r=(r=null!=(r=e.options)&&r._placeholderType?e.options._placeholderType:\"\")&&re[r]?re[r].toString():\"\",``):\"\"}function _e(e){return`${A}${O((e=>{let t=\"\";return e._slideObjects.forEach(e=>{e._type===I.notes&&(t+=null!=e&&e.text&&e.text[0]?e.text[0].text:\"\")}),t.replace(/\\r*\\n/g,A)})(e))}${e._slideNum}`}function Ne(e,t,r){return Ee(e[r-1],[{target:`../slideLayouts/slideLayout${((t,r,a)=>{for(let e=0;e{var t=0e._slideNum===this.slides[this.slides.length-1]._slideNum).length;return e.sectionTitle=t?this.sections[this.sections.length-1].title:null,this.addSlide(e)},this.getSlide=t=>this.slides.filter(e=>e._slideNum===t)[0],this.setSlideNumber=e=>{this.masterSlide._slideNumberProps=e,this.slideLayouts.filter(e=>e._name===t)[0]._slideNumberProps=e},this.createChartMediaRels=(e,r,t)=>{e._relsChart.forEach(e=>t.push(ge(e,r))),e._relsMedia.forEach(t=>{if(\"online\"!==t.type&&\"hyperlink\"!==t.type){let e=t.data&&\"string\"==typeof t.data?t.data:\"\";(e.includes(\",\")||e.includes(\";\"))&&e.includes(\",\")?e.includes(\";\")||(e=\"image/png;\"+e):e=\"image/png;base64,\"+e,r.file(t.Target.replace(\"..\",\"ppt\"),e.split(\",\").pop(),{base64:!0})}})},this.writeFileToBrowser=(r,a)=>c(this,void 0,void 0,function*(){let t=document.createElement(\"a\");if(t.setAttribute(\"style\",\"display:none;\"),t.dataset.interception=\"off\",document.body.appendChild(t),window.URL.createObjectURL){let e=window.URL.createObjectURL(new Blob([a],{type:\"application/vnd.openxmlformats-officedocument.presentationml.presentation\"}));return t.href=e,t.download=r,t.click(),setTimeout(()=>{window.URL.revokeObjectURL(e),document.body.removeChild(t)},100),yield Promise.resolve(r)}}),this.exportPresentation=s=>c(this,void 0,void 0,function*(){let o=[],t=[],i=new B;return this.slides.forEach(e=>{t=t.concat(Ce(e))}),this.slideLayouts.forEach(e=>{t=t.concat(Ce(e))}),t=t.concat(Ce(this.masterSlide)),yield Promise.all(t).then(()=>c(this,void 0,void 0,function*(){var r,e,t,a,n;return this.slides.forEach(e=>{var r;e._slideLayout&&((r=e)._slideLayout._slideObjects||[]).forEach(t=>{t._type===I.placeholder&&0===r._slideObjects.filter(e=>e.options&&e.options.placeholder===t.options.placeholder).length&&fe(r,[{text:\"\"}],t.options,!1)})}),i.folder(\"_rels\"),i.folder(\"docProps\"),i.folder(\"ppt\").folder(\"_rels\"),i.folder(\"ppt/charts\").folder(\"_rels\"),i.folder(\"ppt/embeddings\"),i.folder(\"ppt/media\"),i.folder(\"ppt/slideLayouts\").folder(\"_rels\"),i.folder(\"ppt/slideMasters\").folder(\"_rels\"),i.folder(\"ppt/slides\").folder(\"_rels\"),i.folder(\"ppt/theme\"),i.folder(\"ppt/notesMasters\").folder(\"_rels\"),i.folder(\"ppt/notesSlides\").folder(\"_rels\"),i.file(\"[Content_Types].xml\",((e,t,r)=>{let a=''+A;return a=(a=(a=(a=(a=a+''+'')+''+'')+''+'')+''+'')+''+'',e.forEach(e=>{(e._relsMedia||[]).forEach(e=>{\"image\"===e.type||\"online\"===e.type||\"chart\"===e.type||\"m4v\"===e.extn||a.includes(e.type)||(a+='')})}),a=(a=a+''+'')+''+'',e.forEach((e,t)=>{a=a+``+``,e._relsChart.forEach(e=>{a+=``})}),a=(a=a+''+'')+''+'',t.forEach((e,t)=>{a+=``,(e._relsChart||[]).forEach(e=>{a+=' '})}),e.forEach((e,t)=>{a+=``}),r._relsChart.forEach(e=>{a+=' '}),r._relsMedia.forEach(e=>{\"image\"===e.type||\"online\"===e.type||\"chart\"===e.type||\"m4v\"===e.extn||a.includes(e.type)||(a+=' ')}),a=(a+=' ')+' '+\"\"})(this.slides,this.slideLayouts,this.masterSlide)),i.file(\"_rels/.rels\",`${A}\n\t\t\n\t\t\n\t\t\n\t\t`),i.file(\"docProps/app.xml\",(a=this.slides,n=this.company,`${A}\n\t0\n\t0\n\tMicrosoft Office PowerPoint\n\tOn-screen Show (16:9)\n\t0\n\t${a.length}\n\t${a.length}\n\t0\n\t0\n\tfalse\n\t\n\t\t\n\t\t\tFonts Used\n\t\t\t2\n\t\t\tTheme\n\t\t\t1\n\t\t\tSlide Titles\n\t\t\t${a.length}\n\t\t\n\t\n\t\n\t\t\n\t\t\tArial\n\t\t\tCalibri\n\t\t\tOffice Theme\n\t\t\t${a.map((e,t)=>`Slide ${t+1}`).join(\"\")}\n\t\t\n\t\n\t${n}\n\tfalse\n\tfalse\n\tfalse\n\t16.0000\n\t`)),i.file(\"docProps/core.xml\",(a=this.title,n=this.subject,e=this.author,t=this.revision,`\n\t\n\t\t${O(a)}\n\t\t${O(n)}\n\t\t${O(e)}\n\t\t${O(e)}\n\t\t${t}\n\t\t${(new Date).toISOString().replace(/\\.\\d\\d\\dZ/,\"Z\")}\n\t\t${(new Date).toISOString().replace(/\\.\\d\\d\\dZ/,\"Z\")}\n\t`)),i.file(\"ppt/_rels/presentation.xml.rels\",(t=>{let r=1,a=''+A;a+='';for(let e=1;e<=t.length;e++)a+=``;return r++,a+=``+``+``+``+``+\"\"})(this.slides)),i.file(\"ppt/theme/theme1.xml\",`${null!=(n=(a=this).theme)&&n.headFontFace?``:''}${null!=(n=a.theme)&&n.bodyFontFace?``:''}`),i.file(\"ppt/presentation.xml\",(e=>{let t=''+A+'`;t+='',e.slides.forEach(e=>t+=``),t=(t=(t=(t+=\"\")+``)+``)+``+\"\";for(let e=1;e<10;e++)t+=``+''+``;return t+=\"\",e.sections&&0',e.sections.forEach(e=>{t+=``,e._slides.forEach(e=>t+=``),t+=\"\"}),t=(t+=\"\")+''),t+=\"\"})(this)),i.file(\"ppt/presProps.xml\",`${A}`),i.file(\"ppt/tableStyles.xml\",`${A}`),i.file(\"ppt/viewProps.xml\",`${A}`),this.slideLayouts.forEach((e,t)=>{i.file(`ppt/slideLayouts/slideLayout${t+1}.xml`,`\n\t\t\n\t\t${Le(e)}\n\t\t`),i.file(`ppt/slideLayouts/_rels/slideLayout${t+1}.xml.rels`,(e=t+1,Ee(this.slideLayouts[e-1],[{target:\"../slideMasters/slideMaster1.xml\",type:\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideMaster\"}])))}),this.slides.forEach((e,t)=>{var r;i.file(`ppt/slides/slide${t+1}.xml`,(r=e,''+A+'`+Le(r)+\"\")),i.file(`ppt/slides/_rels/slide${t+1}.xml.rels`,Ne(this.slides,this.slideLayouts,t+1)),i.file(`ppt/notesSlides/notesSlide${t+1}.xml`,_e(e)),i.file(`ppt/notesSlides/_rels/notesSlide${t+1}.xml.rels`,`\n\t\t\n\t\t\t\n\t\t\t\n\t\t`)}),i.file(\"ppt/slideMasters/slideMaster1.xml\",(r=this.masterSlide,e=(e=this.slideLayouts).map((e,t)=>``),t=''+A,(t+='')+Le(r)+''+e.join(\"\")+' ')),i.file(\"ppt/slideMasters/_rels/slideMaster1.xml.rels\",(a=this.masterSlide,(n=(n=this.slideLayouts).map((e,t)=>({target:`../slideLayouts/slideLayout${t+1}.xml`,type:\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideLayout\"}))).push({target:\"../theme/theme1.xml\",type:\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme\"}),Ee(a,n))),i.file(\"ppt/notesMasters/notesMaster1.xml\",`${A}7/23/19Click to edit Master text stylesSecond levelThird levelFourth levelFifth level‹#›`),i.file(\"ppt/notesMasters/_rels/notesMaster1.xml.rels\",`${A}\n\t\t\n\t\t`),this.slideLayouts.forEach(e=>{this.createChartMediaRels(e,i,o)}),this.slides.forEach(e=>{this.createChartMediaRels(e,i,o)}),this.createChartMediaRels(this.masterSlide,i,o),yield Promise.all(o).then(()=>c(this,void 0,void 0,function*(){return\"STREAM\"===s.outputType?yield i.generateAsync({type:\"nodebuffer\",compression:s.compression?\"DEFLATE\":\"STORE\"}):s.outputType?yield i.generateAsync({type:s.outputType}):yield i.generateAsync({type:\"blob\",compression:s.compression?\"DEFLATE\":\"STORE\"})}))}))});this.LAYOUTS={LAYOUT_4x3:{name:\"screen4x3\",width:9144e3,height:6858e3},LAYOUT_16x9:{name:\"screen16x9\",width:9144e3,height:5143500},LAYOUT_16x10:{name:\"screen16x10\",width:9144e3,height:5715e3},LAYOUT_WIDE:{name:\"custom\",width:12192e3,height:6858e3}},this._author=\"PptxGenJS\",this._company=\"PptxGenJS\",this._revision=\"1\",this._subject=\"PptxGenJS Presentation\",this._title=\"PptxGenJS Presentation\",this._presLayout={name:this.LAYOUTS[o].name,_sizeW:this.LAYOUTS[o].width,_sizeH:this.LAYOUTS[o].height,width:this.LAYOUTS[o].width,height:this.LAYOUTS[o].height},this._rtlMode=!1,this._slideLayouts=[{_margin:y,_name:t,_presLayout:this._presLayout,_rels:[],_relsChart:[],_relsMedia:[],_slide:null,_slideNum:1e3,_slideNumberProps:null,_slideObjects:[]}],this._slides=[],this._sections=[],this._masterSlide={addChart:null,addImage:null,addMedia:null,addNotes:null,addShape:null,addTable:null,addText:null,_name:null,_presLayout:this._presLayout,_rId:null,_rels:[],_relsChart:[],_relsMedia:[],_slideId:null,_slideLayout:null,_slideNum:null,_slideNumberProps:null,_slideObjects:[]}}stream(e){return c(this,void 0,void 0,function*(){return yield this.exportPresentation({compression:null==e?void 0:e.compression,outputType:\"STREAM\"})})}write(r){return c(this,void 0,void 0,function*(){var e=\"object\"==typeof r&&null!=r&&r.outputType?r.outputType:r||null,t=!(\"object\"!=typeof r||null==r||!r.compression)&&r.compression;return yield this.exportPresentation({compression:t,outputType:e})})}writeFile(a){return c(this,void 0,void 0,function*(){var e=\"undefined\"!=typeof process&&!(null==(e=process.versions)||!e.node)&&\"node\"===(null==(e=process.release)?void 0:e.name),{fileName:t=\"Presentation.pptx\",compression:r=!1}=(\"string\"==typeof a&&(console.warn(\"[WARNING] writeFile(string) is deprecated - pass { fileName } instead.\"),a={fileName:a}),a),t=t.toLowerCase().endsWith(\".pptx\")?t:t+\".pptx\",r=yield this.exportPresentation({compression:r,outputType:e?\"nodebuffer\":null});return e?(e=(yield import(\"node:fs\")).promises,e=e.writeFile,yield e(t,r)):yield this.writeFileToBrowser(t,r),t})}addSection(e){e?e.title||console.warn(\"addSection requires a title\"):console.warn(\"addSection requires an argument\");var t={_type:\"user\",_slides:[],title:e.title};e.order?this.sections.splice(e.order,0,t):this._sections.push(t)}addSlide(t){let r=\"string\"==typeof t?t:null!=t&&t.masterName?t.masterName:\"\",e={_name:this.LAYOUTS[o].name,_presLayout:this.presLayout,_rels:[],_relsChart:[],_relsMedia:[],_slideNum:this.slides.length+1};r&&(n=this.slideLayouts.filter(e=>e._name===r)[0])&&(e=n);var a,n=new he({addSlide:this.addNewSlide,getSlide:this.getSlide,presLayout:this.presLayout,setSlideNum:this.setSlideNumber,slideId:this.slides.length+256,slideRId:this.slides.length+2,slideNumber:this.slides.length+1,slideLayout:e});return this._slides.push(n),null!=t&&t.sectionTitle?(a=this.sections.filter(e=>e.title===t.sectionTitle)[0])?a._slides.push(n):console.warn(`addSlide: unable to find section with title: \"${t.sectionTitle}\"`):this.sections&&0\"default\"===e._type).length+1),_type:\"default\",_slides:[n]})),n}defineLayout(e){e?e.name?e.width?e.height?\"number\"!=typeof e.height?console.warn(\"defineLayout `height` should be a number (inches)\"):\"number\"!=typeof e.width&&console.warn(\"defineLayout `width` should be a number (inches)\"):console.warn(\"defineLayout requires `height`\"):console.warn(\"defineLayout requires `width`\"):console.warn(\"defineLayout requires `name`\"):console.warn(\"defineLayout requires `{name, width, height}`\"),this.LAYOUTS[e.name]={name:e.name,_sizeW:Math.round(Number(e.width)*F),_sizeH:Math.round(Number(e.height)*F),width:Math.round(Number(e.width)*F),height:Math.round(Number(e.height)*F)}}defineSlideMaster(e){e=JSON.parse(JSON.stringify(e));if(!e.title)throw new Error(\"defineSlideMaster() object argument requires a `title` value. (https://gitbrent.github.io/PptxGenJS/docs/masters.html)\");var t,n,r={_margin:e.margin||y,_name:e.title,_presLayout:this.presLayout,_rels:[],_relsChart:[],_relsMedia:[],_slide:null,_slideNum:1e3+this.slideLayouts.length+1,_slideNumberProps:e.slideNumber||null,_slideObjects:[],background:e.background||null,bkgd:e.bkgd||null};n=r,(t=e).bkgd&&(n.bkgd=t.bkgd),t.objects&&Array.isArray(t.objects)&&0{var r=Object.keys(e)[0],a=n;x[r]&&\"chart\"===r?ce(a,e[r].type,e[r].data,e[r].opts):x[r]&&\"image\"===r?pe(a,e[r]):x[r]&&\"line\"===r?ue(a,b.LINE,e[r]):x[r]&&\"rect\"===r?ue(a,b.RECTANGLE,e[r]):x[r]&&\"text\"===r?fe(a,[{text:e[r].text}],e[r].options,!1):x[r]&&\"placeholder\"===r&&(e[r].options.placeholder=e[r].options.name,delete e[r].options.name,e[r].options._placeholderType=e[r].options.type,delete e[r].options.type,e[r].options._placeholderIdx=100+t,fe(a,[{text:e[r].text}],e[r].options,!0))}),t.slideNumber&&\"object\"==typeof t.slideNumber&&(n._slideNumberProps=t.slideNumber),this.slideLayouts.push(r),(e.background||e.bkgd)&&de(e.background,r),r._slideNumberProps&&!this.masterSlide._slideNumberProps&&(this.masterSlide._slideNumberProps=r._slideNumberProps)}tableToSlides(t,p={}){{var[u,f,t={},d]=[this,t,p,null!=p&&p.masterSlideName?this.slideLayouts.filter(e=>e._name===p.masterSlideName)[0]:null];let a=t||{},n=void(a.slideMargin=a.slideMargin||0===a.slideMargin?a.slideMargin:.5,a.w||u.presLayout.width),o=[],i=[],s=[],A=[],r=[],l=[.5,.5,.5,.5],c=0;if(!document.getElementById(f))throw new Error('tableToSlides: Table ID \"'+f+'\" does not exist!');null!=d&&d._margin?(Array.isArray(d._margin)?l=d._margin:isNaN(d._margin)||(l=[d._margin,d._margin,d._margin,d._margin]),a.slideMargin=l):null!=a&&a.slideMargin&&(Array.isArray(a.slideMargin)?l=a.slideMargin:isNaN(a.slideMargin)||(l=[a.slideMargin,a.slideMargin,a.slideMargin,a.slideMargin])),n=(a.w?M(a.w):u.presLayout.width)-M(l[1]+l[3]),a.verbose&&(console.log(\"[[VERBOSE MODE]]\"),console.log(\"|-- `tableToSlides` ----------------------------------------------------|\"),console.log(\"| tableProps.h .................................... = \"+a.h),console.log(\"| tableProps.w .................................... = \"+a.w),console.log(\"| pptx.presLayout.width ........................... = \"+(u.presLayout.width/F).toFixed(1)),console.log(\"| pptx.presLayout.height .......................... = \"+(u.presLayout.height/F).toFixed(1)),console.log(\"| emuSlideTabW .................................... = \"+(n/F).toFixed(1)));let e=document.querySelectorAll(`#${f} tr:first-child th`);(e=0===e.length?document.querySelectorAll(`#${f} tr:first-child td`):e).forEach(e=>{var t=e;if(t.getAttribute(\"colspan\"))for(let e=0;e{c+=e}),r.forEach((e,t)=>{e=Number((Number(n)*(e/c*100)/100/F).toFixed(2));let r=0;var a=document.querySelector(`#${f} thead tr:first-child th:nth-child(${t+1})`),a=(a&&(r=Number(a.getAttribute(\"data-pptx-min-width\"))),document.querySelector(`#${f} thead tr:first-child th:nth-child(${t+1})`));a&&(r=Number(a.getAttribute(\"data-pptx-width\"))),A.push(r>e?r:e)}),a.verbose&&console.log(`| arrColW ......................................... = [${A.join(\", \")}]`),[\"thead\",\"tbody\",\"tfoot\"].forEach(t=>{document.querySelectorAll(`#${f} ${t} tr`).forEach(e=>{let r=[];switch(Array.from(e.cells).forEach(a=>{var e=window.getComputedStyle(a).getPropertyValue(\"color\").replace(/\\s+/gi,\"\").replace(\"rgba(\",\"\").replace(\"rgb(\",\"\").replace(\")\",\"\").split(\",\");let t=window.getComputedStyle(a).getPropertyValue(\"background-color\").replace(/\\s+/gi,\"\").replace(\"rgba(\",\"\").replace(\"rgb(\",\"\").replace(\")\",\"\").split(\",\"),n=(\"rgba(0, 0, 0, 0)\"!==window.getComputedStyle(a).getPropertyValue(\"background-color\")&&!window.getComputedStyle(a).getPropertyValue(\"transparent\")||(t=[\"255\",\"255\",\"255\"]),{align:null,bold:!!(\"bold\"===window.getComputedStyle(a).getPropertyValue(\"font-weight\")||500<=Number(window.getComputedStyle(a).getPropertyValue(\"font-weight\"))),border:null,color:ie(Number(e[0]),Number(e[1]),Number(e[2])),fill:{color:ie(Number(t[0]),Number(t[1]),Number(t[2]))},fontFace:(window.getComputedStyle(a).getPropertyValue(\"font-family\")||\"\").split(\",\")[0].replace(/\"/g,\"\").replace(\"inherit\",\"\").replace(\"initial\",\"\")||null,fontSize:Number(window.getComputedStyle(a).getPropertyValue(\"font-size\").replace(/[a-z]/gi,\"\")),margin:null,colspan:Number(a.getAttribute(\"colspan\"))||null,rowspan:Number(a.getAttribute(\"rowspan\"))||null,valign:null});[\"left\",\"center\",\"right\",\"start\",\"end\"].includes(window.getComputedStyle(a).getPropertyValue(\"text-align\"))&&(e=window.getComputedStyle(a).getPropertyValue(\"text-align\").replace(\"start\",\"left\").replace(\"end\",\"right\"),n.align=\"center\"===e?\"center\":\"left\"===e?\"left\":\"right\"===e?\"right\":null),[\"top\",\"middle\",\"bottom\"].includes(window.getComputedStyle(a).getPropertyValue(\"vertical-align\"))&&(e=window.getComputedStyle(a).getPropertyValue(\"vertical-align\"),n.valign=\"top\"===e?\"top\":\"middle\"===e?\"middle\":\"bottom\"===e?\"bottom\":null),window.getComputedStyle(a).getPropertyValue(\"padding-left\")&&(n.margin=[0,0,0,0],[\"padding-top\",\"padding-right\",\"padding-bottom\",\"padding-left\"].forEach((e,t)=>{n.margin[t]=Math.round(Number(window.getComputedStyle(a).getPropertyValue(e).replace(/\\D/gi,\"\")))})),(window.getComputedStyle(a).getPropertyValue(\"border-top-width\")||window.getComputedStyle(a).getPropertyValue(\"border-right-width\")||window.getComputedStyle(a).getPropertyValue(\"border-bottom-width\")||window.getComputedStyle(a).getPropertyValue(\"border-left-width\"))&&(n.border=[null,null,null,null],[\"top\",\"right\",\"bottom\",\"left\"].forEach((e,t)=>{var r=Math.round(Number(window.getComputedStyle(a).getPropertyValue(\"border-\"+e+\"-width\").replace(\"px\",\"\"))),e=window.getComputedStyle(a).getPropertyValue(\"border-\"+e+\"-color\").replace(/\\s+/gi,\"\").replace(\"rgba(\",\"\").replace(\"rgb(\",\"\").replace(\")\",\"\").split(\",\"),e=ie(Number(e[0]),Number(e[1]),Number(e[2]));n.border[t]={pt:r,color:e}})),r.push({_type:I.tablecell,text:a.innerText,options:n})}),t){case\"thead\":o.push(r);break;case\"tbody\":i.push(r);break;case\"tfoot\":s.push(r);break;default:console.log(\"table parsing: unexpected table part: \"+t)}})}),a._arrObjTabHeadRows=o||null,a.colW=A,Ae([...o,...i,...s],a,u.presLayout,d).forEach((e,t)=>{var r=u.addSlide({masterName:a.masterSlideName||null});0===t&&(a.y=a.y||l[0]),0 opts.y = `+a.y),r.addTable(e.rows,{x:a.x||l[3],y:a.y,w:Number(n)/F,colW:A,autoPage:!1}),a.addImage&&(a.addImage.options=a.addImage.options||{},a.addImage.image&&(a.addImage.image.path||a.addImage.image.data)?r.addImage({path:a.addImage.image.path,data:a.addImage.image.data,x:a.addImage.options.x,y:a.addImage.options.y,w:a.addImage.options.w,h:a.addImage.options.h}):console.warn(\"Warning: tableToSlides.addImage requires either `path` or `data`\")),a.addShape&&r.addShape(a.addShape.shapeName,a.addShape.options||{}),a.addTable&&r.addTable(a.addTable.rows,a.addTable.options||{}),a.addText&&r.addText(a.addText.text,a.addText.options||{})})}}}return Fe})(JSZip);"],"file":"pptxgen.bundle.js"} \ No newline at end of file diff --git a/dist/pptxgen.cjs.js b/dist/pptxgen.cjs.js index 143dfa3e7..8d6da9a63 100644 --- a/dist/pptxgen.cjs.js +++ b/dist/pptxgen.cjs.js @@ -1,4 +1,3 @@ -/* PptxGenJS 4.0.1 @ 2025-06-25T23:35:35.096Z */ 'use strict'; var JSZip = require('jszip'); @@ -20,6 +19,18 @@ PERFORMANCE OF THIS SOFTWARE. /* global Reflect, Promise, SuppressedError, Symbol, Iterator */ +function __rest(s, e) { + var t = {}; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) + t[p] = s[p]; + if (s != null && typeof Object.getOwnPropertySymbols === "function") + for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { + if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) + t[p[i]] = s[p[i]]; + } + return t; +} + function __awaiter(thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { @@ -133,16 +144,29 @@ var OutputType; })(OutputType || (OutputType = {})); var ChartType; (function (ChartType) { + // Column category ChartType["area"] = "area"; + ChartType["area3d"] = "area3D"; ChartType["bar"] = "bar"; ChartType["bar3d"] = "bar3D"; ChartType["bubble"] = "bubble"; ChartType["bubble3d"] = "bubble3D"; ChartType["doughnut"] = "doughnut"; ChartType["line"] = "line"; + ChartType["line3d"] = "line3D"; ChartType["pie"] = "pie"; - ChartType["radar"] = "radar"; + ChartType["pie3d"] = "pie3D"; ChartType["scatter"] = "scatter"; + ChartType["stock"] = "stock"; + ChartType["ofPie"] = "ofPie"; + // ChartEx (Extended chart) types + ChartType["treemap"] = "treemap"; + ChartType["sunburst"] = "sunburst"; + ChartType["histogram"] = "histogram"; + ChartType["pareto"] = "pareto"; + ChartType["boxWhisker"] = "boxWhisker"; + ChartType["waterfallChartEx"] = "waterfallChartEx"; + ChartType["funnel"] = "funnel"; })(ChartType || (ChartType = {})); var ShapeType; (function (ShapeType) { @@ -543,18 +567,44 @@ var SHAPE_TYPE; SHAPE_TYPE["VERTICAL_SCROLL"] = "verticalScroll"; SHAPE_TYPE["WAVE"] = "wave"; })(SHAPE_TYPE || (SHAPE_TYPE = {})); +/** + * Chart types matching PowerPoint categories: + * - Column: BAR, BAR3D (use barDir for horizontal/vertical) + * - Line: LINE, LINE3D, AREA, AREA3D + * - Pie: PIE, PIE3D, DOUGHNUT, OFPIE + * - X Y (Scatter): SCATTER, BUBBLE + * - Waterfall: STOCK + * - ChartEx (Extended): TREEMAP, SUNBURST, HISTOGRAM, PARETO, BOXWHISKER, WATERFALL_CHARTEX, FUNNEL, REGION_MAP + */ var CHART_TYPE; (function (CHART_TYPE) { - CHART_TYPE["AREA"] = "area"; + // Column category CHART_TYPE["BAR"] = "bar"; CHART_TYPE["BAR3D"] = "bar3D"; - CHART_TYPE["BUBBLE"] = "bubble"; - CHART_TYPE["BUBBLE3D"] = "bubble3D"; - CHART_TYPE["DOUGHNUT"] = "doughnut"; + // Line category + CHART_TYPE["AREA"] = "area"; + CHART_TYPE["AREA3D"] = "area3D"; CHART_TYPE["LINE"] = "line"; + CHART_TYPE["LINE3D"] = "line3D"; + // Pie category CHART_TYPE["PIE"] = "pie"; - CHART_TYPE["RADAR"] = "radar"; + CHART_TYPE["PIE3D"] = "pie3D"; + CHART_TYPE["DOUGHNUT"] = "doughnut"; + CHART_TYPE["OFPIE"] = "ofPie"; + // X Y (Scatter) category CHART_TYPE["SCATTER"] = "scatter"; + CHART_TYPE["BUBBLE"] = "bubble"; + // Waterfall category + CHART_TYPE["STOCK"] = "stock"; + // ChartEx (Extended chart) types - use cx: namespace + CHART_TYPE["TREEMAP"] = "treemap"; + CHART_TYPE["SUNBURST"] = "sunburst"; + CHART_TYPE["HISTOGRAM"] = "histogram"; + CHART_TYPE["PARETO"] = "pareto"; + CHART_TYPE["BOXWHISKER"] = "boxWhisker"; + CHART_TYPE["WATERFALL_CHARTEX"] = "waterfallChartEx"; + CHART_TYPE["FUNNEL"] = "funnel"; + CHART_TYPE["REGION_MAP"] = "regionMap"; })(CHART_TYPE || (CHART_TYPE = {})); var SCHEME_COLOR_NAMES; (function (SCHEME_COLOR_NAMES) { @@ -577,15 +627,18 @@ var MASTER_OBJECTS; MASTER_OBJECTS["rect"] = "rect"; MASTER_OBJECTS["text"] = "text"; MASTER_OBJECTS["placeholder"] = "placeholder"; + MASTER_OBJECTS["picturePlaceholder"] = "picturePlaceholder"; })(MASTER_OBJECTS || (MASTER_OBJECTS = {})); var SLIDE_OBJECT_TYPES; (function (SLIDE_OBJECT_TYPES) { SLIDE_OBJECT_TYPES["chart"] = "chart"; + SLIDE_OBJECT_TYPES["group"] = "group"; SLIDE_OBJECT_TYPES["hyperlink"] = "hyperlink"; SLIDE_OBJECT_TYPES["image"] = "image"; SLIDE_OBJECT_TYPES["media"] = "media"; SLIDE_OBJECT_TYPES["online"] = "online"; SLIDE_OBJECT_TYPES["placeholder"] = "placeholder"; + SLIDE_OBJECT_TYPES["picturePlaceholder"] = "picturePlaceholder"; SLIDE_OBJECT_TYPES["table"] = "table"; SLIDE_OBJECT_TYPES["tablecell"] = "tablecell"; SLIDE_OBJECT_TYPES["text"] = "text"; @@ -599,6 +652,11 @@ var PLACEHOLDER_TYPES; PLACEHOLDER_TYPES["chart"] = "chart"; PLACEHOLDER_TYPES["table"] = "tbl"; PLACEHOLDER_TYPES["media"] = "media"; + // Extended placeholder types for roundtrip fidelity + PLACEHOLDER_TYPES["content"] = ""; + PLACEHOLDER_TYPES["clipArt"] = "clipArt"; + PLACEHOLDER_TYPES["diagram"] = "dgm"; + PLACEHOLDER_TYPES["cameo"] = "media"; })(PLACEHOLDER_TYPES || (PLACEHOLDER_TYPES = {})); /** * NOTE: 20170304: BULLET_TYPES: Only default is used so far. I'd like to combine the two pieces of code that use these before implementing these as options @@ -807,6 +865,51 @@ function genXmlColorSelection(props) { case 'solid': outText += `${createColorElement(colorVal, internalElements)}`; break; + case 'gradient': + // Handle gradient fills + if (typeof props === 'object' && 'gradient' in props && props.gradient) { + const gradient = props.gradient; + outText += ''; + outText += ''; + // Generate gradient stops + for (const stop of gradient.stops || []) { + // Position is 0-100, convert to 0-100000 for OOXML + const position = Math.round((stop.position || 0) * 1000); + outText += ``; + // Generate the color with optional transparency + let stopInternalElements = ''; + if (stop.transparency !== undefined && stop.transparency > 0) { + // transparency 0-100 maps to alpha 100000-0 + stopInternalElements += ``; + } + outText += createColorElement(stop.color || 'FFFFFF', stopInternalElements); + outText += ''; + } + outText += ''; + // Linear or radial gradient + if (gradient.type === 'radial') { + // Radial gradient - use path fill + const radPos = gradient.radialPosition || { x: 50, y: 50 }; + // Convert percentage to OOXML units (0-100000) + const left = Math.round(radPos.x * 1000); + const top = Math.round(radPos.y * 1000); + const right = Math.round((100 - radPos.x) * 1000); + const bottom = Math.round((100 - radPos.y) * 1000); + outText += ``; + } + else { + // Linear gradient (default) + const angle = gradient.angle !== undefined ? gradient.angle : 0; + // Convert degrees to PowerPoint angle units (60000 per degree) + const pptAngle = Math.round(angle * 60000); + outText += ``; + } + outText += ''; + } + break; + case 'none': + outText += ''; + break; default: // @note need a statement as having only "break" is removed by rollup, then tiggers "no-default" js-linter outText += ''; break; @@ -1585,6 +1688,7 @@ function createSlideMaster(props, target) { // STEP 2: Add all Slide Master objects in the order they were given if (props.objects && Array.isArray(props.objects) && props.objects.length > 0) { props.objects.forEach((object, idx) => { + var _a; const key = Object.keys(object)[0]; const tgt = target; if (MASTER_OBJECTS[key] && key === 'chart') @@ -1603,7 +1707,8 @@ function createSlideMaster(props, target) { delete object[key].options.name; // remap name for earier handling internally object[key].options._placeholderType = object[key].options.type; delete object[key].options.type; // remap name for earier handling internally - object[key].options._placeholderIdx = 100 + idx; + // Use provided idx if available (for preserving original PPTX indices), otherwise compute + object[key].options._placeholderIdx = object[key].options.idx !== undefined ? object[key].options.idx : (100 + idx); addTextDefinition(tgt, [{ text: object[key].text }], object[key].options, true); // TODO: ISSUE#599 - only text is suported now (add more below) // else if (object[key].image) addImageDefinition(tgt, object[key].image) @@ -1620,6 +1725,12 @@ function createSlideMaster(props, target) { */ } + else if (MASTER_OBJECTS[key] && key === 'picturePlaceholder') { + // NEW: Add native picture placeholder (creates element) + // Use provided idx if available (for preserving original PPTX indices), otherwise compute + const placeholderIdx = ((_a = object[key].options) === null || _a === void 0 ? void 0 : _a.idx) !== undefined ? object[key].options.idx : (100 + idx); + addPicturePlaceholderDefinition(tgt, object[key], placeholderIdx); + } }); } // STEP 3: Add Slide Numbers (NOTE: Do this last so numbers are not covered by objects!) @@ -1675,6 +1786,7 @@ function addChartDefinition(target, type, data, opt) { text: null, options: null, chartRid: null, + isChartEx: false, }; // DESIGN: `type` can an object (ex: `pptx.charts.DOUGHNUT`) or an array of chart objects // EX: addChartDefinition([ { type:pptx.charts.BAR, data:{name:'', labels:[], values[]} }, {} ]) @@ -1751,14 +1863,14 @@ function addChartDefinition(target, type, data, opt) { // Clean up and validate data label positions // REFERENCE: https://docs.microsoft.com/en-us/openspecs/office_standards/ms-oi29500/e2b1697c-7adc-463d-9081-3daef72f656f?redirectedfrom=MSDN if (options.dataLabelPosition) { - if (options._type === CHART_TYPE.AREA || options._type === CHART_TYPE.BAR3D || options._type === CHART_TYPE.DOUGHNUT || options._type === CHART_TYPE.RADAR) { + if (options._type === CHART_TYPE.AREA || options._type === CHART_TYPE.BAR3D || options._type === CHART_TYPE.DOUGHNUT) { delete options.dataLabelPosition; } - if (options._type === CHART_TYPE.PIE) { + if (options._type === CHART_TYPE.PIE || options._type === CHART_TYPE.PIE3D) { if (!['bestFit', 'ctr', 'inEnd', 'outEnd'].includes(options.dataLabelPosition)) delete options.dataLabelPosition; } - if (options._type === CHART_TYPE.BUBBLE || options._type === CHART_TYPE.BUBBLE3D || options._type === CHART_TYPE.LINE || options._type === CHART_TYPE.SCATTER) { + if (options._type === CHART_TYPE.BUBBLE || options._type === CHART_TYPE.LINE || options._type === CHART_TYPE.SCATTER) { if (!['b', 'ctr', 'l', 'r', 't'].includes(options.dataLabelPosition)) delete options.dataLabelPosition; } @@ -1785,8 +1897,6 @@ function addChartDefinition(target, type, data, opt) { options.lineDataSymbol = 'circle'; if (!['gap', 'span'].includes(options.displayBlanksAs || '')) options.displayBlanksAs = 'span'; - if (!['standard', 'marker', 'filled'].includes(options.radarStyle || '')) - options.radarStyle = 'standard'; options.lineDataSymbolSize = options.lineDataSymbolSize && !isNaN(options.lineDataSymbolSize) ? options.lineDataSymbolSize : 6; options.lineDataSymbolLineSize = options.lineDataSymbolLineSize && !isNaN(options.lineDataSymbolLineSize) ? valToPts(options.lineDataSymbolLineSize) : valToPts(0.75); // `layout` allows the override of PPT defaults to maximize space @@ -1831,7 +1941,7 @@ function addChartDefinition(target, type, data, opt) { options.barGapDepthPct = !isNaN(options.barGapDepthPct) && options.barGapDepthPct >= 0 && options.barGapDepthPct <= 1000 ? options.barGapDepthPct : 150; options.chartColors = Array.isArray(options.chartColors) ? options.chartColors - : options._type === CHART_TYPE.PIE || options._type === CHART_TYPE.DOUGHNUT + : options._type === CHART_TYPE.PIE || options._type === CHART_TYPE.PIE3D || options._type === CHART_TYPE.DOUGHNUT ? PIECHART_COLORS : BARCHART_COLORS; options.chartColorsOpacity = options.chartColorsOpacity && !isNaN(options.chartColorsOpacity) ? options.chartColorsOpacity : null; @@ -1878,7 +1988,7 @@ function addChartDefinition(target, type, data, opt) { // if (!options.dataLabelFormatCode && options._type === CHART_TYPE.SCATTER) options.dataLabelFormatCode = 'General'; - if (!options.dataLabelFormatCode && (options._type === CHART_TYPE.PIE || options._type === CHART_TYPE.DOUGHNUT)) { + if (!options.dataLabelFormatCode && (options._type === CHART_TYPE.PIE || options._type === CHART_TYPE.PIE3D || options._type === CHART_TYPE.DOUGHNUT)) { options.dataLabelFormatCode = options.showPercent ? '0%' : 'General'; } options.dataLabelFormatCode = options.dataLabelFormatCode && typeof options.dataLabelFormatCode === 'string' ? options.dataLabelFormatCode : '#,##0'; @@ -1895,10 +2005,25 @@ function addChartDefinition(target, type, data, opt) { else { delete options.catAxisMultiLevelLabels; } + // Check if this is a ChartEx type (treemap, sunburst, histogram, pareto, boxWhisker, regionMap, etc.) + const chartExTypes = [ + CHART_TYPE.TREEMAP, CHART_TYPE.SUNBURST, CHART_TYPE.HISTOGRAM, + CHART_TYPE.PARETO, CHART_TYPE.BOXWHISKER, CHART_TYPE.WATERFALL_CHARTEX, CHART_TYPE.FUNNEL, CHART_TYPE.REGION_MAP, + 'treemap', 'sunburst', 'histogram', 'pareto', 'boxWhisker', 'waterfallChartEx', 'funnel', 'regionMap' + ]; + const isChartEx = chartExTypes.includes(options._type); + // DEBUG: Log to stderr so it's not filtered + if (typeof process !== 'undefined' && process.stderr) { + process.stderr.write(`[PPTX] chartId=${chartId}, _type=${JSON.stringify(options._type)}, isChartEx=${isChartEx}\n`); + } + const chartFileName = isChartEx ? `chartEx${chartId}.xml` : `chart${chartId}.xml`; + // Use relative path from slide to charts folder + const chartTarget = isChartEx ? `../charts/chartEx${chartId}.xml` : `../charts/chart${chartId}.xml`; // STEP 4: Set props resultObject._type = 'chart'; resultObject.options = options; resultObject.chartRid = getNewRelId(target); + resultObject.isChartEx = isChartEx; // STEP 5: Add this chart to this Slide Rels (rId/rels count spans all slides! Count all images to get next rId) target._relsChart.push({ rId: getNewRelId(target), @@ -1906,8 +2031,11 @@ function addChartDefinition(target, type, data, opt) { opts: options, type: options._type, globalId: chartId, - fileName: `chart${chartId}.xml`, - Target: `/ppt/charts/chart${chartId}.xml`, + fileName: chartFileName, + Target: chartTarget, + isChartEx: isChartEx, + chartStyleXml: options.chartStyleXml, + chartColorsXml: options.chartColorsXml, }); target._slideObjects.push(resultObject); return resultObject; @@ -2208,6 +2336,8 @@ function addShapeDefinition(target, shapeName, opts) { dashType: options.line.dashType || 'solid', beginArrowType: options.line.beginArrowType || null, endArrowType: options.line.endArrowType || null, + // Preserve custom dash pattern if present + custDash: options.line.custDash || null, }; if (typeof options.line === 'object' && options.line.type !== 'none') options.line = newLineOpts; @@ -2233,7 +2363,19 @@ function addShapeDefinition(target, shapeName, opts) { options.line.beginArrowType = options.lineHead; // @deprecated (part of `ShapeLineProps` now) if (typeof options.lineTail === 'string') options.line.endArrowType = options.lineTail; // @deprecated (part of `ShapeLineProps` now) - // 4: Create hyperlink rels + // 4: Handle valign for shapes (set _bodyProp.anchor for XML generation) + // This is needed for shapes without text that still need anchor attribute preserved + if (options.valign) { + options._bodyProp = options._bodyProp || {}; + const valign = String(options.valign).toLowerCase(); + if (valign.indexOf('b') === 0) + options._bodyProp.anchor = TEXT_VALIGN.b; + else if (valign.indexOf('m') === 0) + options._bodyProp.anchor = TEXT_VALIGN.ctr; + else if (valign.indexOf('t') === 0) + options._bodyProp.anchor = TEXT_VALIGN.t; + } + // 5: Create hyperlink rels createHyperlinkRels(target, newObject); // LAST: Add object to slide target._slideObjects.push(newObject); @@ -2297,29 +2439,39 @@ function addTableDefinition(target, tableRows, options, slideLayout, presLayout, newCell.options = cell.options; } // C: Set cell borders - newCell.options.border = newCell.options.border || opt.border || [{ type: 'none' }, { type: 'none' }, { type: 'none' }, { type: 'none' }]; + // When using tableStyleId, don't default to 'none' borders - let table style provide them + const hasTableStyle = !!opt.tableStyleId; + if (!hasTableStyle) { + newCell.options.border = newCell.options.border || opt.border || [{ type: 'none' }, { type: 'none' }, { type: 'none' }, { type: 'none' }]; + } + else { + // Only use explicit cell border if set, don't inherit from table options + newCell.options.border = newCell.options.border || undefined; + } const cellBorder = newCell.options.border; // CASE 1: border interface is: BorderOptions | [BorderOptions, BorderOptions, BorderOptions, BorderOptions] - if (!Array.isArray(cellBorder) && typeof cellBorder === 'object') + if (cellBorder && !Array.isArray(cellBorder) && typeof cellBorder === 'object') newCell.options.border = [cellBorder, cellBorder, cellBorder, cellBorder]; // Handle: [null, null, {type:'solid'}, null] - if (!newCell.options.border[0]) - newCell.options.border[0] = { type: 'none' }; - if (!newCell.options.border[1]) - newCell.options.border[1] = { type: 'none' }; - if (!newCell.options.border[2]) - newCell.options.border[2] = { type: 'none' }; - if (!newCell.options.border[3]) - newCell.options.border[3] = { type: 'none' }; - // set complete BorderOptions for all sides - const arrSides = [0, 1, 2, 3]; - arrSides.forEach(idx => { - newCell.options.border[idx] = { - type: newCell.options.border[idx].type || DEF_CELL_BORDER.type, - color: newCell.options.border[idx].color || DEF_CELL_BORDER.color, - pt: typeof newCell.options.border[idx].pt === 'number' ? newCell.options.border[idx].pt : DEF_CELL_BORDER.pt, - }; - }); + if (newCell.options.border) { + if (!newCell.options.border[0]) + newCell.options.border[0] = { type: 'none' }; + if (!newCell.options.border[1]) + newCell.options.border[1] = { type: 'none' }; + if (!newCell.options.border[2]) + newCell.options.border[2] = { type: 'none' }; + if (!newCell.options.border[3]) + newCell.options.border[3] = { type: 'none' }; + // set complete BorderOptions for all sides + const arrSides = [0, 1, 2, 3]; + arrSides.forEach(idx => { + newCell.options.border[idx] = { + type: newCell.options.border[idx].type || DEF_CELL_BORDER.type, + color: newCell.options.border[idx].color || DEF_CELL_BORDER.color, + pt: typeof newCell.options.border[idx].pt === 'number' ? newCell.options.border[idx].pt : DEF_CELL_BORDER.pt, + }; + }); + } // LAST: newRow.push(newCell); }); @@ -2504,6 +2656,36 @@ function addTableDefinition(target, tableRows, options, slideLayout, presLayout, } return newAutoPagedSlides; } +/** + * Adds a picture placeholder object to a slide/layout definition. + * Creates a native element with empty that acts as an image placeholder. + * @param {PresSlide} target - slide/layout object that the placeholder should be added to + * @param {object} props - picture placeholder properties (x, y, w, h, name, idx) + * @param {number} placeholderIdx - the placeholder index + * @since: 1.0.6 + */ +function addPicturePlaceholderDefinition(target, props, placeholderIdx) { + var _a; + const objectName = props.name || `Picture Placeholder ${placeholderIdx}`; + const newObject = { + _type: SLIDE_OBJECT_TYPES.picturePlaceholder, + text: null, + options: { + x: props.x || 0, + y: props.y || 0, + w: props.w || 1, + h: props.h || 1, + objectName, + _placeholderIdx: (_a = props.idx) !== null && _a !== void 0 ? _a : placeholderIdx, + _placeholderType: 'image', // Will be mapped to 'pic' in XML generation + }, + image: null, + imageRid: null, + hyperlink: null, + }; + // Add the slide object + target._slideObjects.push(newObject); +} /** * Adds a text object to a slide definition. * @param {PresSlide} target - slide object that the text should be added to @@ -2523,18 +2705,27 @@ function addTextDefinition(target, text, opts, isPlaceholder) { // STEP 1: Set some options { // A.1: Color (placeholders should inherit their colors or override them, so don't default them) - if (!itemOpts.placeholder) { + // Check both the item itself AND the parent object - text runs inside placeholder content + // should also inherit color, not have a default applied + if (!itemOpts.placeholder && !newObject.options.placeholder && !isPlaceholder) { itemOpts.color = itemOpts.color || newObject.options.color || target.color || DEF_FONT_COLOR; } - // A.2: Placeholder should inherit their bullets or override them, so don't default them - if (itemOpts.placeholder || isPlaceholder) { - itemOpts.bullet = itemOpts.bullet || false; - } + // A.2: Placeholder should inherit their bullets from master/layout, don't set a default + // Note: When bullet is undefined, we leave it undefined so PowerPoint inherits from the layout + // Only when bullet is explicitly set (true/false or an object) do we use it + // (no code needed here - we simply don't default bullet for placeholders) // A.3: Text targeting a placeholder need to inherit the placeholders options (eg: margin, valign, etc.) (Issue #640) + // Note: We only inherit layout/positioning options, NOT font styling (fontFace, fontSize, color) + // Font styling should be defined in the layout placeholder and inherited by PowerPoint, not baked into the slide if (itemOpts.placeholder && target._slideLayout && target._slideLayout._slideObjects) { const placeHold = target._slideLayout._slideObjects.filter(item => item._type === 'placeholder' && item.options && item.options.placeholder && item.options.placeholder === itemOpts.placeholder)[0]; - if (placeHold === null || placeHold === void 0 ? void 0 : placeHold.options) - itemOpts = Object.assign(Object.assign({}, itemOpts), placeHold.options); + if (placeHold === null || placeHold === void 0 ? void 0 : placeHold.options) { + // Only inherit structural/layout options, not font styling + // This allows slide content to inherit font styling from the layout placeholder + // itemOpts comes AFTER layoutOptions so explicit overrides take precedence + const _a = placeHold.options, { fontFace, fontSize, color, bold, italic } = _a, layoutOptions = __rest(_a, ["fontFace", "fontSize", "color", "bold", "italic"]); + itemOpts = Object.assign(Object.assign({}, layoutOptions), itemOpts); + } } // A.4: Other options itemOpts.objectName = itemOpts.objectName @@ -2623,23 +2814,6 @@ function addTextDefinition(target, text, opts, isPlaceholder) { // LAST: Add object to Slide target._slideObjects.push(newObject); } -/** - * Adds placeholder objects to slide - * @param {PresSlide} slide - slide object containing layouts - */ -function addPlaceholdersToSlideLayouts(slide) { - // Add all placeholders on this Slide that dont already exist - (slide._slideLayout._slideObjects || []).forEach(slideLayoutObj => { - if (slideLayoutObj._type === SLIDE_OBJECT_TYPES.placeholder) { - // A: Search for this placeholder on Slide before we add - // NOTE: Check to ensure a placeholder does not already exist on the Slide - // They are created when they have been populated with text (ex: `slide.addText('Hi', { placeholder:'title' });`) - if (slide._slideObjects.filter(slideObj => slideObj.options && slideObj.options.placeholder === slideLayoutObj.options.placeholder).length === 0) { - addTextDefinition(slide, [{ text: '' }], slideLayoutObj.options, false); - } - } - }); -} /* -------------------------------------------------------------------------------- */ /** * Adds a background image or color to a slide definition. @@ -2749,6 +2923,77 @@ function createHyperlinkRels(target, text, options) { } }); } +// ================================================================================================= +// GROUPS +// ================================================================================================= +/** + * Adds a group object to the slide + * @param {PresSlide} target - slide to add group to + * @param {GroupProps} opts - group options including children + */ +function addGroupDefinition(target, opts) { + // Convert children to ISlideObject format + const groupChildren = []; + if (opts.children && Array.isArray(opts.children)) { + opts.children.forEach((child, idx) => { + var _a; + const childObject = { + _type: null, + options: child.options || {}, + }; + switch (child.type) { + case 'text': + childObject._type = SLIDE_OBJECT_TYPES.text; + childObject.shape = ((_a = child.options) === null || _a === void 0 ? void 0 : _a.shape) || SHAPE_TYPE.RECTANGLE; + childObject.text = typeof child.text === 'string' ? [{ text: child.text, options: null }] : (child.text || []); + break; + case 'shape': + childObject._type = SLIDE_OBJECT_TYPES.text; // shapes are text objects with shape property + childObject.shape = child.shapeName || SHAPE_TYPE.RECTANGLE; + // Support text inside shapes (e.g., TextBox inside groups) + childObject.text = child.text + ? (typeof child.text === 'string' ? [{ text: child.text, options: null }] : child.text) + : []; + break; + case 'image': + childObject._type = SLIDE_OBJECT_TYPES.image; + if (child.image) { + childObject.image = child.image.path || ''; + childObject.imageRid = 0; // Will be set during relationship processing + } + break; + } + if (!childObject.options.objectName) { + childObject.options.objectName = `GroupChild ${idx + 1}`; + } + groupChildren.push(childObject); + }); + } + // Create the group slide object + const newObject = { + _type: SLIDE_OBJECT_TYPES.group, + options: { + x: opts.x, + y: opts.y, + w: opts.w, + h: opts.h, + objectName: opts.objectName || `Group ${target._slideObjects.filter(obj => obj._type === SLIDE_OBJECT_TYPES.group).length + 1}`, + // Store child coordinate system info and transforms + _groupProps: { + chOffX: opts.chOffX, + chOffY: opts.chOffY, + chExtCx: opts.chExtCx, + chExtCy: opts.chExtCy, + rotate: opts.rotate, + flipH: opts.flipH, + flipV: opts.flipV, + }, + }, + groupChildren, + }; + // Add to slide objects + target._slideObjects.push(newObject); +} /** * PptxGenJS: Slide Class @@ -2837,6 +3082,15 @@ class Slide { addChartDefinition(this, type, data, options); return this; } + /** + * Add group to Slide + * @param {GroupProps} options - group options + * @return {Slide} this Slide + */ + addGroup(options) { + addGroupDefinition(this, options); + return this; + } /** * Add image to Slide * @param {ImageProps} options - image options @@ -2917,20 +3171,27 @@ function createExcelWorksheet(chartObject, zip) { return __awaiter(this, void 0, void 0, function* () { const data = chartObject.data; return yield new Promise((resolve, reject) => { - var _a, _b; + var _a, _b, _c, _d, _e, _f; const zipExcel = new JSZip(); const intBubbleCols = (data.length - 1) * 2 + 1; // 1 for "X-Values", then 2 for every Y-Axis const IS_MULTI_CAT_AXES = ((_b = (_a = data[0]) === null || _a === void 0 ? void 0 : _a.labels) === null || _b === void 0 ? void 0 : _b.length) > 1; + // Check if this is a ChartEx type - ChartEx charts don't need Excel tables + const chartType = chartObject.opts._type; + const isChartEx = isChartExType(chartType); // A: Add folders zipExcel.folder('_rels'); zipExcel.folder('docProps'); zipExcel.folder('xl/_rels'); - zipExcel.folder('xl/tables'); + if (!isChartEx) { + zipExcel.folder('xl/tables'); + zipExcel.folder('xl/worksheets/_rels'); + } zipExcel.folder('xl/theme'); zipExcel.folder('xl/worksheets'); - zipExcel.folder('xl/worksheets/_rels'); // B: Add core contents { + // Content types - ChartEx charts don't include table + const tableContentType = isChartEx ? '' : ' '; zipExcel.file('[Content_Types].xml', '' + ' ' + ' ' + @@ -2939,7 +3200,7 @@ function createExcelWorksheet(chartObject, zip) { ' ' + ' ' + ' ' + - ' ' + + tableContentType + ' ' + ' ' + '\n'); @@ -2985,16 +3246,49 @@ function createExcelWorksheet(chartObject, zip) { '' + '' + '\n'); - zipExcel.file('xl/worksheets/_rels/sheet1.xml.rels', '' + - '' + - '' + - '\n'); + // ChartEx charts don't need worksheet relationships (no table) + if (!isChartEx) { + zipExcel.file('xl/worksheets/_rels/sheet1.xml.rels', '' + + '' + + '' + + '\n'); + } } // sharedStrings.xml { // A: Start XML let strSharedStrings = ''; - if (chartObject.opts._type === CHART_TYPE.BUBBLE || chartObject.opts._type === CHART_TYPE.BUBBLE3D) { + if (isChartEx && IS_MULTI_CAT_AXES) { + // ChartEx hierarchical charts need unique strings for: + // - Series name (index 0) + // - All hierarchy labels (deduplicated) + const allLabels = []; + const seriesName = data[0].name || 'Series1'; + allLabels.push(seriesName); + // Collect all unique labels from all hierarchy levels + data[0].labels.forEach(labelsGroup => { + labelsGroup.forEach(label => { + if (label && !allLabels.includes(label)) { + allLabels.push(label); + } + }); + }); + strSharedStrings += ``; + allLabels.forEach(label => { + strSharedStrings += `${encodeXmlEntities(label)}`; + }); + } + else if (isChartEx) { + // ChartEx non-hierarchical charts (histogram, pareto, boxWhisker) - simple series name + const seriesName = data[0].name || 'Series1'; + const labels = ((_c = data[0].labels) === null || _c === void 0 ? void 0 : _c[0]) || []; + const allStrings = [seriesName, ...labels.filter((l) => l)]; + strSharedStrings += ``; + allStrings.forEach(str => { + strSharedStrings += `${encodeXmlEntities(str)}`; + }); + } + else if (chartObject.opts._type === CHART_TYPE.BUBBLE) { strSharedStrings += ``; } else if (chartObject.opts._type === CHART_TYPE.SCATTER) { @@ -3016,8 +3310,9 @@ function createExcelWorksheet(chartObject, zip) { // B: Add 'blank' for A1, B1, ..., of every label group inside data[n].labels strSharedStrings += ''; } - // C: Add `name`/Series - if (chartObject.opts._type === CHART_TYPE.BUBBLE || chartObject.opts._type === CHART_TYPE.BUBBLE3D) { + // C: Add `name`/Series (skip for ChartEx - already added above) + if (isChartEx && IS_MULTI_CAT_AXES) ; + else if (chartObject.opts._type === CHART_TYPE.BUBBLE) { data.forEach((objData, idx) => { if (idx === 0) strSharedStrings += 'X-Axis'; @@ -3032,8 +3327,10 @@ function createExcelWorksheet(chartObject, zip) { strSharedStrings += `${encodeXmlEntities((objData.name || ' ').replace('X-Axis', 'X-Values'))}`; }); } - // D: Add `labels`/Categories - if (chartObject.opts._type !== CHART_TYPE.BUBBLE && chartObject.opts._type !== CHART_TYPE.BUBBLE3D && chartObject.opts._type !== CHART_TYPE.SCATTER) { + // D: Add `labels`/Categories (skip for ChartEx - already added above) + if (isChartEx && IS_MULTI_CAT_AXES) ; + else if (isChartEx) ; + else if (chartObject.opts._type !== CHART_TYPE.BUBBLE && chartObject.opts._type !== CHART_TYPE.SCATTER && data[0].labels) { // Use forEach backwards & check for '' to support multi-cat axes data[0].labels .slice() @@ -3050,10 +3347,10 @@ function createExcelWorksheet(chartObject, zip) { strSharedStrings += '\n'; zipExcel.file('xl/sharedStrings.xml', strSharedStrings); } - // tables/table1.xml - { + // tables/table1.xml - ChartEx charts don't need tables + if (!isChartEx) { let strTableXml = ''; - if (chartObject.opts._type === CHART_TYPE.BUBBLE || chartObject.opts._type === CHART_TYPE.BUBBLE3D) { + if (chartObject.opts._type === CHART_TYPE.BUBBLE) { strTableXml += ``; strTableXml += ``; let idxColLtr = 1; @@ -3075,8 +3372,32 @@ function createExcelWorksheet(chartObject, zip) { strTableXml += ``; }); } + else if (isChartEx && !IS_MULTI_CAT_AXES) { + // ChartEx non-hierarchical charts (histogram, pareto, boxWhisker) - simple values only + strTableXml += + `
`; + strTableXml += ''; + strTableXml += ``; + } + else if (!data[0].labels) { + // Fallback for any chart type without labels - just values + strTableXml += + `
`; + strTableXml += ``; + data.forEach((obj, idx) => { + strTableXml += ``; + }); + } else { - strTableXml += `
`; + // Use the maximum of labels length and values length to ensure table covers all data rows + const labelCount = ((_d = data[0].labels[0]) === null || _d === void 0 ? void 0 : _d.length) || 0; + const maxValueCount = Math.max(...data.map(d => { var _a; return ((_a = d.values) === null || _a === void 0 ? void 0 : _a.length) || 0; })); + const tableRowCount = Math.max(labelCount, maxValueCount) + 1; // +1 for header row + strTableXml += + '
'; strTableXml += ``; data[0].labels.forEach((_labelsGroup, idx) => { strTableXml += ``; @@ -3095,18 +3416,71 @@ function createExcelWorksheet(chartObject, zip) { let strSheetXml = ''; strSheetXml += ''; - if (chartObject.opts._type === CHART_TYPE.BUBBLE || chartObject.opts._type === CHART_TYPE.BUBBLE3D) { + if (chartObject.opts._type === CHART_TYPE.BUBBLE) { strSheetXml += ``; } else if (chartObject.opts._type === CHART_TYPE.SCATTER) { strSheetXml += ``; } - else { + else if (!(isChartEx && IS_MULTI_CAT_AXES)) { + // Skip dimension here for ChartEx hierarchical - it's added in the ChartEx branch below strSheetXml += ``; } + // For ChartEx hierarchical, add dimension BEFORE sheetViews (required element order) + if (isChartEx && IS_MULTI_CAT_AXES) { + const numLevels = data[0].labels.length; + const numDataPoints = data[0].labels[0].length; + const valuesColumn = getExcelColName(numLevels + 1); + strSheetXml += ``; + } strSheetXml += ''; strSheetXml += ''; - if (chartObject.opts._type === CHART_TYPE.BUBBLE || chartObject.opts._type === CHART_TYPE.BUBBLE3D) { + if (isChartEx && IS_MULTI_CAT_AXES) { + // ChartEx hierarchical charts (treemap, sunburst) need special Excel format: + // Row 1: Header only in the last column (e.g., D1 = Series1) + // Rows 2+: Each column represents a hierarchy level, last column is value + // Example for 3-level hierarchy: + // | A | B | C | D | + // | | | |Series1| + // |Branch1| Stem1 | Leaf1 | 22 | + // |Branch1| Stem1 | Leaf2 | 12 | + const numLevels = data[0].labels.length; + const numDataPoints = data[0].labels[0].length; + const seriesName = data[0].name || 'Series1'; + const valuesColumn = getExcelColName(numLevels + 1); + // Build map of label strings to shared string indices (matching sharedStrings.xml) + const labelToIndex = new Map(); + labelToIndex.set(seriesName, 0); + let idx = 1; + data[0].labels.forEach(labelsGroup => { + labelsGroup.forEach(label => { + if (label && !labelToIndex.has(label)) { + labelToIndex.set(label, idx++); + } + }); + }); + // sheetData - dimension was already added before sheetViews + strSheetXml += ''; + // Row 1: Series name header in values column only + strSheetXml += ''; + strSheetXml += `0`; + strSheetXml += ''; + // Data rows: one row per data point with hierarchy levels and value + for (let rowIdx = 0; rowIdx < numDataPoints; rowIdx++) { + strSheetXml += ``; + // Hierarchy levels (reversed so outermost is first column A, innermost before values) + for (let lvl = numLevels - 1; lvl >= 0; lvl--) { + const colNum = numLevels - lvl; + const cellVal = data[0].labels[lvl][rowIdx]; + const strIdx = (_e = labelToIndex.get(cellVal)) !== null && _e !== void 0 ? _e : 0; + strSheetXml += `${strIdx}`; + } + // Value + strSheetXml += `${data[0].values[rowIdx] || 0}`; + strSheetXml += ''; + } + } + else if (chartObject.opts._type === CHART_TYPE.BUBBLE) { // UNUSED: strSheetXml += `` /* EX: INPUT: `data` [ @@ -3186,6 +3560,46 @@ function createExcelWorksheet(chartObject, zip) { strSheetXml += ''; }); } + else if (isChartEx && !IS_MULTI_CAT_AXES) { + // ChartEx non-hierarchical charts (histogram, pareto, boxWhisker) + // Simple format: one column header + values + // | A | + // |Series1| + // | 22 | + // | 12 | + data[0].name || 'Series1'; + const numValues = data[0].values.length; + strSheetXml += ''; + // Row 1: Series name header + strSheetXml += ''; + strSheetXml += '0'; + strSheetXml += ''; + // Data rows: one value per row + for (let rowIdx = 0; rowIdx < numValues; rowIdx++) { + strSheetXml += ``; + strSheetXml += `${data[0].values[rowIdx] || 0}`; + strSheetXml += ''; + } + } + else if (!data[0].labels) { + // Fallback for any chart type without labels - just values + strSheetXml += ''; + // Row 1: Series headers + strSheetXml += ``; + for (let idx = 0; idx < data.length; idx++) { + strSheetXml += `${idx}`; + } + strSheetXml += ''; + // Data rows + const numValues = data[0].values.length; + for (let rowIdx = 0; rowIdx < numValues; rowIdx++) { + strSheetXml += ``; + for (let serIdx = 0; serIdx < data.length; serIdx++) { + strSheetXml += `${data[serIdx].values[rowIdx] || 0}`; + } + strSheetXml += ''; + } + } else { // strSheetXml += '' strSheetXml += ''; @@ -3217,19 +3631,31 @@ function createExcelWorksheet(chartObject, zip) { } strSheetXml += ''; // B: Add data row(s) for each category - data[0].labels[0].forEach((_cat, idx) => { + // Use the maximum of labels length and values length to ensure all data is included + const labelCount = ((_f = data[0].labels[0]) === null || _f === void 0 ? void 0 : _f.length) || 0; + const maxValueCount = Math.max(...data.map(d => { var _a; return ((_a = d.values) === null || _a === void 0 ? void 0 : _a.length) || 0; })); + const rowCount = Math.max(labelCount, maxValueCount); + for (let idx = 0; idx < rowCount; idx++) { strSheetXml += ``; // Leading cols are reserved for the label groups + // Only add label cells if we have a label for this row (idx < labelCount) for (let idx2 = data[0].labels.length - 1; idx2 >= 0; idx2--) { - strSheetXml += ``; - strSheetXml += `${data.length + idx + 1}`; - strSheetXml += ''; + if (idx < labelCount) { + // Reference shared string for categories that exist + strSheetXml += ``; + strSheetXml += `${data.length + idx + 1}`; + strSheetXml += ''; + } + else { + // For extra value rows without labels, leave the label cell empty (no shared string reference) + strSheetXml += ``; + } } for (let idy = 0; idy < data.length; idy++) { strSheetXml += `${data[idy].values[idx] || ''}`; } strSheetXml += ''; - }); + } } else { // A: create header row @@ -3361,13 +3787,52 @@ function createExcelWorksheet(chartObject, zip) { .generateAsync({ type: 'base64' }) .then(content => { // 1: Create the embedded Excel worksheet with labels and data - zip.file(`ppt/embeddings/Microsoft_Excel_Worksheet${chartObject.globalId}.xlsx`, content, { base64: true }); + // PowerPoint convention: first Excel file has no number suffix, subsequent ones are numbered 2, 3, etc. + // e.g., Microsoft_Excel_Worksheet.xlsx, Microsoft_Excel_Worksheet2.xlsx, Microsoft_Excel_Worksheet3.xlsx + const excelSuffix = chartObject.globalId === 1 ? '' : String(chartObject.globalId); + zip.file(`ppt/embeddings/Microsoft_Excel_Worksheet${excelSuffix}.xlsx`, content, { base64: true }); // 2: Create the chart.xml and rel files - zip.file('ppt/charts/_rels/' + chartObject.fileName + '.rels', '' + - '' + - `` + - ''); - zip.file(`ppt/charts/${chartObject.fileName}`, makeXmlCharts(chartObject)); + // Check if this is a ChartEx type (treemap, sunburst, histogram, pareto, boxWhisker, etc.) + const chartType = chartObject.opts._type; + const isChartEx = isChartExType(chartType); + // fileName is already correctly set in gen-objects.ts (chartEx*.xml or chart*.xml) + const chartFileName = chartObject.fileName; + if (isChartEx) { + // ChartEx charts require style and colors files + const styleFileName = `style${chartObject.globalId}.xml`; + const colorsFileName = `colors${chartObject.globalId}.xml`; + // Create relationships file with style and colors refs + zip.file('ppt/charts/_rels/' + chartFileName + '.rels', '' + + '' + + `` + + `` + + `` + + ''); + // Create chart style file - use raw XML if available (lossless roundtrip), otherwise generate default + zip.file(`ppt/charts/${styleFileName}`, chartObject.chartStyleXml || makeChartExStyleXml()); + // Create chart colors file - use raw XML if available (lossless roundtrip), otherwise generate default + zip.file(`ppt/charts/${colorsFileName}`, chartObject.chartColorsXml || makeChartExColorsXml()); + // Generate ChartEx XML + zip.file(`ppt/charts/${chartFileName}`, makeXmlChartEx(chartObject)); + } + else { + // Regular charts also need style and colors files for proper rendering + const styleFileName = `style${chartObject.globalId}.xml`; + const colorsFileName = `colors${chartObject.globalId}.xml`; + // Create relationships file with style, colors, and Excel refs + // Note: Order matters - style=rId1, colors=rId2, package=rId3 to match PowerPoint's convention + zip.file('ppt/charts/_rels/' + chartFileName + '.rels', '' + + '' + + `` + + `` + + `` + + ''); + // Create chart style file - use raw XML if available (lossless roundtrip), otherwise generate default + zip.file(`ppt/charts/${styleFileName}`, chartObject.chartStyleXml || makeChartStyleXml()); + // Create chart colors file - use raw XML if available (lossless roundtrip), otherwise generate default + zip.file(`ppt/charts/${colorsFileName}`, chartObject.chartColorsXml || makeChartColorsXml()); + zip.file(`ppt/charts/${chartObject.fileName}`, makeXmlCharts(chartObject)); + } // 3: Done resolve(''); }) @@ -3416,8 +3881,12 @@ function makeXmlCharts(rel) { /** Add 3D view tag * @see: https://c-rex.net/projects/samples/ooxml/e1/Part4/OOXML_P4_DOCX_perspective_topic_ID0E6BUQB.html */ - if (rel.opts._type === CHART_TYPE.BAR3D) { + if (rel.opts._type === CHART_TYPE.BAR3D || rel.opts._type === CHART_TYPE.LINE3D || rel.opts._type === CHART_TYPE.AREA3D || rel.opts._type === CHART_TYPE.PIE3D) { strXml += ``; + // Add floor, sideWall, backWall for 3D charts (required for proper rendering) + strXml += ''; + strXml += ''; + strXml += ''; } strXml += ''; // IMPORTANT: Dont specify layout to enable auto-fit: PPT does a great job maximizing space with all 4 TRBL locations @@ -3440,7 +3909,7 @@ function makeXmlCharts(rel) { } // A: Create Chart XML ----------------------------------------------------------- if (Array.isArray(rel.opts._type)) { - rel.opts._type.forEach(type => { + rel.opts._type.forEach((type) => { // TODO: FIXME: theres `options` on chart rels?? const options = Object.assign(Object.assign({}, rel.opts), type.options); // let options: IChartOptsLib = { type: type.type, } @@ -3454,7 +3923,7 @@ function makeXmlCharts(rel) { strXml += makeChartType(rel.opts._type, rel.data, rel.opts, AXIS_ID_VALUE_PRIMARY, AXIS_ID_CATEGORY_PRIMARY); } // B: Axes ----------------------------------------------------------- - if (rel.opts._type !== CHART_TYPE.PIE && rel.opts._type !== CHART_TYPE.DOUGHNUT) { + if (rel.opts._type !== CHART_TYPE.PIE && rel.opts._type !== CHART_TYPE.PIE3D && rel.opts._type !== CHART_TYPE.DOUGHNUT && rel.opts._type !== CHART_TYPE.OFPIE) { // Param check if (rel.opts.valAxes && rel.opts.valAxes.length > 1 && !usesSecondaryValAxis) { throw new Error('Secondary axis must be used by one of the multiple charts'); @@ -3505,7 +3974,7 @@ function makeXmlCharts(rel) { strXml += ' '; strXml += ' '; strXml += ' '; - strXml += ` `; + strXml += ` `; strXml += ' '; strXml += ' '; strXml += ' '; @@ -3521,7 +3990,7 @@ function makeXmlCharts(rel) { // OPTION: Fill strXml += ((_c = rel.opts.plotArea.fill) === null || _c === void 0 ? void 0 : _c.color) ? genXmlColorSelection(rel.opts.plotArea.fill) : ''; // OPTION: Border - strXml += rel.opts.plotArea.border + strXml += rel.opts.plotArea.border && rel.opts.plotArea.border.color ? `${genXmlColorSelection(rel.opts.plotArea.border.color)}` : ''; // Close shapeProp/plotArea before Legend @@ -3570,9 +4039,9 @@ function makeXmlCharts(rel) { : ''; strXml += ' '; strXml += ''; - // E: DATA (Add relID) - strXml += ''; - // LAST: chartSpace end + // E: DATA (Add relID) - rId3 is the Excel package (rId1=style, rId2=colors) + strXml += ''; + // CHARTSPACE: END strXml += ''; return strXml; } @@ -3595,23 +4064,27 @@ function makeChartType(chartType, data, opts, valAxisId, catAxisId, isMultiTypeC let idxColLtr = 1; let optsChartData = null; let strXml = ''; + console.log(`[makeChartType] chartType=${chartType}, data length=${data === null || data === void 0 ? void 0 : data.length}, CHART_TYPE.PIE3D=${CHART_TYPE.PIE3D}`); switch (chartType) { case CHART_TYPE.AREA: + case CHART_TYPE.AREA3D: case CHART_TYPE.BAR: case CHART_TYPE.BAR3D: case CHART_TYPE.LINE: - case CHART_TYPE.RADAR: + case CHART_TYPE.LINE3D: // 1: Start Chart strXml += ``; - if (chartType === CHART_TYPE.AREA && opts.barGrouping === 'stacked') { - strXml += ''; + // AREA/AREA3D charts need grouping for all variants (standard, stacked, percentStacked) + if (chartType === CHART_TYPE.AREA || chartType === CHART_TYPE.AREA3D) { + strXml += ''; } if (chartType === CHART_TYPE.BAR || chartType === CHART_TYPE.BAR3D) { strXml += ''; strXml += ''; } - if (chartType === CHART_TYPE.RADAR) { - strXml += ''; + // LINE/LINE3D charts also need grouping for stacked/percentStacked variants + if (chartType === CHART_TYPE.LINE || chartType === CHART_TYPE.LINE3D) { + strXml += ''; } strXml += ''; // 2: "Series" block for every data row @@ -3674,7 +4147,7 @@ function makeChartType(chartType, data, opts, valAxisId, catAxisId, isMultiTypeC else { strXml += '' + createColorElement(seriesColor) + ''; } - if (chartType === CHART_TYPE.LINE || chartType === CHART_TYPE.RADAR) { + if (chartType === CHART_TYPE.LINE || chartType === CHART_TYPE.LINE3D) { if (opts.lineSize === 0) { strXml += ''; } @@ -3690,27 +4163,24 @@ function makeChartType(chartType, data, opts, valAxisId, catAxisId, isMultiTypeC strXml += ' '; strXml += ' '; // Data Labels per series - // NOTE: [20190117] Adding these to RADAR chart causes unrecoverable corruption! - if (chartType !== CHART_TYPE.RADAR) { - strXml += ''; - strXml += ``; - if (opts.dataLabelBkgrdColors) - strXml += `${createColorElement(seriesColor)}`; - strXml += ''; - strXml += ``; - strXml += `${createColorElement(opts.dataLabelColor || DEF_FONT_COLOR)}`; - strXml += ``; - strXml += ''; - if (opts.dataLabelPosition) - strXml += ``; - strXml += ''; - strXml += ``; - strXml += ``; - strXml += ``; - strXml += ''; - } + strXml += ''; + strXml += ``; + if (opts.dataLabelBkgrdColors) + strXml += `${createColorElement(seriesColor)}`; + strXml += ''; + strXml += ``; + strXml += `${createColorElement(opts.dataLabelColor || DEF_FONT_COLOR)}`; + strXml += ``; + strXml += ''; + if (opts.dataLabelPosition) + strXml += ``; + strXml += ''; + strXml += ``; + strXml += ``; + strXml += ``; + strXml += ''; // 'c:marker' tag: `lineDataSymbol` - if (chartType === CHART_TYPE.LINE || chartType === CHART_TYPE.RADAR) { + if (chartType === CHART_TYPE.LINE || chartType === CHART_TYPE.LINE3D) { strXml += ''; strXml += ' '; if (opts.lineDataSymbolSize) @@ -3770,7 +4240,8 @@ function makeChartType(chartType, data, opts, valAxisId, catAxisId, isMultiTypeC strXml += ' '; strXml += ' '; } - else { + else if (obj.labels.length > 1) { + // Multi-level labels: use multiLvlStrRef strXml += ' '; strXml += ` Sheet1!$A$2:$${getExcelColName(obj.labels.length)}$${obj.labels[0].length + 1}`; strXml += ' '; @@ -3783,23 +4254,33 @@ function makeChartType(chartType, data, opts, valAxisId, catAxisId, isMultiTypeC strXml += ' '; strXml += ' '; } + else { + // Single-level labels: use strRef (better compatibility with Keynote) + strXml += ' '; + strXml += ` Sheet1!$A$2:$A$${obj.labels[0].length + 1}`; + strXml += ' '; + strXml += ` `; + obj.labels[0].forEach((label, idx) => (strXml += `${encodeXmlEntities(label)}`)); + strXml += ' '; + strXml += ' '; + } strXml += ''; } // 3: "Values" { strXml += ''; strXml += ' '; - strXml += `Sheet1!$${getExcelColName(obj._dataIndex + obj.labels.length + 1)}$2:$${getExcelColName(obj._dataIndex + obj.labels.length + 1)}$${obj.labels[0].length + 1}`; + strXml += `Sheet1!$${getExcelColName(obj._dataIndex + obj.labels.length + 1)}$2:$${getExcelColName(obj._dataIndex + obj.labels.length + 1)}$${obj.values.length + 1}`; strXml += ' '; strXml += ' ' + (opts.valLabelFormatCode || opts.dataTableFormatCode || 'General') + ''; - strXml += ` `; + strXml += ` `; obj.values.forEach((value, idx) => (strXml += `${value || value === 0 ? value : ''}`)); strXml += ' '; strXml += ' '; strXml += ''; } // Option: `smooth` - if (chartType === CHART_TYPE.LINE) + if (chartType === CHART_TYPE.LINE || chartType === CHART_TYPE.LINE3D) strXml += ''; // 4: Close "SERIES" strXml += ''; @@ -3839,11 +4320,14 @@ function makeChartType(chartType, data, opts, valAxisId, catAxisId, isMultiTypeC strXml += ` `; strXml += ' '; } - else if (chartType === CHART_TYPE.LINE) { + else if (chartType === CHART_TYPE.LINE || chartType === CHART_TYPE.LINE3D) { strXml += ' '; } // 5: Add axisId (NOTE: order matters! (category comes first)) - strXml += ``; + strXml += ``; + if (chartType === CHART_TYPE.BAR3D) { + strXml += ``; + } // 6: Close Chart tag strXml += ``; // end switch @@ -3858,7 +4342,22 @@ function makeChartType(chartType, data, opts, valAxisId, catAxisId, isMultiTypeC */ // 1: Start Chart strXml += ''; - strXml += ''; + // Determine scatter style based on options: + // - lineSmooth + lineDataSymbol determine the correct scatterStyle + // - If scatterStyle is explicitly set, use it + let scatterStyleVal = opts.scatterStyle || 'lineMarker'; + if (!opts.scatterStyle) { + // Auto-determine from lineSmooth and lineDataSymbol + opts.lineDataSymbol !== 'none' || opts.lineSize !== undefined; + const hasMarkers = opts.lineDataSymbol && opts.lineDataSymbol !== 'none'; + if (opts.lineSmooth) { + scatterStyleVal = hasMarkers ? 'smoothMarker' : 'smooth'; + } + else { + scatterStyleVal = hasMarkers ? 'lineMarker' : 'lineMarker'; // Default + } + } + strXml += ``; strXml += ''; // 2: Series: (One for each Y-Axis) colorIndex = -1; @@ -4124,7 +4623,6 @@ function makeChartType(chartType, data, opts, valAxisId, catAxisId, isMultiTypeC // end switch break; case CHART_TYPE.BUBBLE: - case CHART_TYPE.BUBBLE3D: /* `data` = [ { name:'X-Axis', values:[1,2,3,4,5,6,7,8,9,10,11,12] }, @@ -4223,7 +4721,7 @@ function makeChartType(chartType, data, opts, valAxisId, catAxisId, isMultiTypeC strXml += ' '; strXml += ' '; strXml += ' '; - strXml += ' '; + strXml += ' '; // F: Close "SERIES" strXml += ''; }); @@ -4260,6 +4758,8 @@ function makeChartType(chartType, data, opts, valAxisId, catAxisId, isMultiTypeC break; case CHART_TYPE.DOUGHNUT: case CHART_TYPE.PIE: + case CHART_TYPE.PIE3D: + case CHART_TYPE.OFPIE: // Use the same let name so code blocks from barChart are interchangeable optsChartData = data[0]; /* EX: @@ -4273,6 +4773,10 @@ function makeChartType(chartType, data, opts, valAxisId, catAxisId, isMultiTypeC */ // 1: Start Chart strXml += ''; + // OFPIE charts need ofPieType element (pie = "Pie of Pie", bar = "Bar of Pie") + if (chartType === CHART_TYPE.OFPIE) { + strXml += ``; + } strXml += ' '; strXml += ''; strXml += ' '; @@ -4326,7 +4830,7 @@ function makeChartType(chartType, data, opts, valAxisId, catAxisId, isMultiTypeC strXml += ' '; strXml += ' '; strXml += ' '; - if (chartType === CHART_TYPE.PIE && opts.dataLabelPosition) + if ((chartType === CHART_TYPE.PIE || chartType === CHART_TYPE.PIE3D) && opts.dataLabelPosition) strXml += ``; strXml += ' '; strXml += ' '; @@ -4348,7 +4852,7 @@ function makeChartType(chartType, data, opts, valAxisId, catAxisId, isMultiTypeC strXml += ' '; strXml += ' '; strXml += ' '; - strXml += chartType === CHART_TYPE.PIE ? '' : ''; + strXml += (chartType === CHART_TYPE.PIE || chartType === CHART_TYPE.PIE3D) ? '' : ''; strXml += ' '; strXml += ' '; strXml += ' '; @@ -4372,9 +4876,9 @@ function makeChartType(chartType, data, opts, valAxisId, catAxisId, isMultiTypeC // 3: Create vals strXml += ' '; strXml += ' '; - strXml += ` Sheet1!$B$2:$B$${optsChartData.labels[0].length + 1}`; + strXml += ` Sheet1!$B$2:$B$${optsChartData.values.length + 1}`; strXml += ' '; - strXml += ` `; + strXml += ` `; optsChartData.values.forEach((value, idx) => { strXml += `${value || value === 0 ? value : ''}`; }); @@ -4389,6 +4893,170 @@ function makeChartType(chartType, data, opts, valAxisId, catAxisId, isMultiTypeC strXml += ''; // Done with Doughnut/Pie break; + case CHART_TYPE.STOCK: + // Stock charts have multiple series depending on type: + // - HLC: High, Low, Close (3 series) + // - OHLC: Open, High, Low, Close (4 series, with upDownBars) + // - Volume-HLC: Volume bar + High, Low, Close + // - Volume-OHLC: Volume bar + Open, High, Low, Close (with upDownBars) + const stockType = opts.stockType || 'hlc'; + const hasVolume = stockType === 'volumeHlc' || stockType === 'volumeOhlc'; + const hasOpen = stockType === 'ohlc' || stockType === 'volumeOhlc'; + // Stock series data is always the main data array + // Volume data is provided separately via opts.volumeData + const stockSeriesData = data; + const volumeSeriesData = opts.volumeData || null; + // Volume bar chart (if applicable) + if (hasVolume && volumeSeriesData) { + const volumeLabels = (Array.isArray(volumeSeriesData.labels[0]) ? volumeSeriesData.labels[0] : volumeSeriesData.labels); + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' Sheet1!$B$1'; + strXml += ' ' + encodeXmlEntities(volumeSeriesData.name) + ''; + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' Sheet1!$A$2:$A$' + (volumeLabels.length + 1) + ''; + strXml += ' '; + strXml += ' m/d/yy'; + strXml += ' '; + volumeLabels.forEach((label, labelIdx) => { + strXml += '' + encodeXmlEntities(String(label)) + ''; + }); + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' Sheet1!$B$2:$B$' + (volumeLabels.length + 1) + ''; + strXml += ' '; + strXml += ' General'; + strXml += ' '; + volumeSeriesData.values.forEach((value, valueIdx) => { + strXml += '' + (value || value === 0 ? value : '') + ''; + }); + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ``; + strXml += ''; + } + // Start stock chart + strXml += ''; + // Series for stock chart (High, Low, Close or Open, High, Low, Close) + const stockSeriesOffset = hasVolume ? 1 : 0; + stockSeriesData.forEach((obj, idx) => { + colorIndex++; + // Normalize labels to flat array (cast for TypeScript) + const labels = (Array.isArray(obj.labels[0]) ? obj.labels[0] : obj.labels); + const isLastSeries = idx === stockSeriesData.length - 1; + const seriesIdx = idx + stockSeriesOffset; + const colLetter = getExcelColName(seriesIdx + 2); // +2 because col A is categories, B is first series + strXml += ''; + strXml += ` `; + strXml += ' '; + strXml += ' '; + strXml += ' Sheet1!$' + colLetter + '$1'; + strXml += ' ' + encodeXmlEntities(obj.name) + ''; + strXml += ' '; + strXml += ' '; + // Stock chart series typically have no visible line (just markers) + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' '; + // Last series (Close) gets a visible marker, others get none + if (isLastSeries) { + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' '; + } + else { + strXml += ' '; + } + // Categories (dates) + strXml += ' '; + strXml += ' '; + strXml += ' Sheet1!$A$2:$A$' + (labels.length + 1) + ''; + strXml += ' '; + strXml += ' m/d/yy'; + strXml += ' '; + labels.forEach((label, labelIdx) => { + strXml += '' + encodeXmlEntities(String(label)) + ''; + }); + strXml += ' '; + strXml += ' '; + strXml += ' '; + // Values + strXml += ' '; + strXml += ' '; + strXml += ' Sheet1!$' + colLetter + '$2:$' + colLetter + '$' + (labels.length + 1) + ''; + strXml += ' '; + strXml += ' General'; + strXml += ' '; + obj.values.forEach((value, valueIdx) => { + strXml += '' + (value || value === 0 ? value : '') + ''; + }); + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ''; + }); + // 3: Add data labels + strXml += ''; + strXml += ' '; + strXml += ' '; + strXml += ''; + // 4: Add hiLowLines (this is what makes the stock chart visible!) + strXml += ''; + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ''; + // 5: Add upDownBars for OHLC types (shows open/close as bars) + if (hasOpen) { + strXml += ''; + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ''; + } + // 6: Add axis ids + strXml += ``; + // 7: Close Chart + strXml += ''; + break; default: strXml += ''; break; @@ -4406,7 +5074,7 @@ function makeCatAxis(opts, axisId, valAxisId) { let strXml = ''; // Build cat axis tag // NOTE: Scatter and Bubble chart need two Val axises as they display numbers on x axis - if (opts._type === CHART_TYPE.SCATTER || opts._type === CHART_TYPE.BUBBLE || opts._type === CHART_TYPE.BUBBLE3D) { + if (opts._type === CHART_TYPE.SCATTER || opts._type === CHART_TYPE.BUBBLE) { strXml += ''; } else { @@ -4434,7 +5102,7 @@ function makeCatAxis(opts, axisId, valAxisId) { }); } // NOTE: Adding Val Axis Formatting if scatter or bubble charts - if (opts._type === CHART_TYPE.SCATTER || opts._type === CHART_TYPE.BUBBLE || opts._type === CHART_TYPE.BUBBLE3D) { + if (opts._type === CHART_TYPE.SCATTER || opts._type === CHART_TYPE.BUBBLE) { strXml += ' '; } else { @@ -4485,7 +5153,7 @@ function makeCatAxis(opts, axisId, valAxisId) { strXml += ' '; // Issue#149: PPT will auto-adjust these as needed after calcing the date bounds, so we only include them when specified by user // Allow major and minor units to be set for double value axis charts - if (opts.catLabelFormatCode || opts._type === CHART_TYPE.SCATTER || opts._type === CHART_TYPE.BUBBLE || opts._type === CHART_TYPE.BUBBLE3D) { + if (opts.catLabelFormatCode || opts._type === CHART_TYPE.SCATTER || opts._type === CHART_TYPE.BUBBLE) { if (opts.catLabelFormatCode) { ['catAxisBaseTimeUnit', 'catAxisMajorTimeUnit', 'catAxisMinorTimeUnit'].forEach(opt => { // Validate input as poorly chosen/garbage options will cause chart corruption and it wont render at all! @@ -4508,7 +5176,7 @@ function makeCatAxis(opts, axisId, valAxisId) { } // Close cat axis tag // NOTE: Added closing tag of val or cat axis based on chart type - if (opts._type === CHART_TYPE.SCATTER || opts._type === CHART_TYPE.BUBBLE || opts._type === CHART_TYPE.BUBBLE3D) { + if (opts._type === CHART_TYPE.SCATTER || opts._type === CHART_TYPE.BUBBLE) { strXml += ''; } else { @@ -4598,7 +5266,7 @@ function makeValAxis(opts, valAxisId) { } strXml += ' '; if (opts.valAxisMajorUnit) strXml += ` `; @@ -4822,6 +5490,634 @@ function createLineCap(lineCap) { throw new Error(`Invalid chart line cap: ${neverLineCap}`); } } +// ============================================================================ +// ChartEx (Extended Chart) Support +// ============================================================================ +/** + * Check if a chart type is a ChartEx type + * @param {CHART_TYPE} chartType - the chart type to check + * @return {boolean} true if ChartEx type + */ +function isChartExType(chartType) { + const chartExTypes = [ + CHART_TYPE.TREEMAP, + CHART_TYPE.SUNBURST, + CHART_TYPE.HISTOGRAM, + CHART_TYPE.PARETO, + CHART_TYPE.BOXWHISKER, + CHART_TYPE.WATERFALL_CHARTEX, + CHART_TYPE.FUNNEL, + CHART_TYPE.REGION_MAP, + 'treemap', + 'sunburst', + 'histogram', + 'pareto', + 'boxWhisker', + 'waterfallChartEx', + 'funnel', + 'regionMap' + ]; + return chartExTypes.includes(chartType); +} +/** + * Get the ChartEx layoutId for a chart type + * @param {CHART_TYPE} chartType - the chart type + * @return {string} the layoutId + */ +function getChartExLayoutId(chartType) { + switch (chartType) { + case CHART_TYPE.TREEMAP: + case 'treemap': + return 'treemap'; + case CHART_TYPE.SUNBURST: + case 'sunburst': + return 'sunburst'; + case CHART_TYPE.HISTOGRAM: + case 'histogram': + return 'clusteredColumn'; + case CHART_TYPE.PARETO: + case 'pareto': + return 'clusteredColumn'; // Primary series is clusteredColumn, secondary is paretoLine + case CHART_TYPE.BOXWHISKER: + case 'boxWhisker': + return 'boxWhisker'; + case CHART_TYPE.WATERFALL_CHARTEX: + case 'waterfallChartEx': + return 'waterfall'; + case CHART_TYPE.FUNNEL: + case 'funnel': + return 'funnel'; + case CHART_TYPE.REGION_MAP: + case 'regionMap': + return 'regionMap'; + default: + return 'clusteredColumn'; + } +} +/** + * Generate ChartEx XML (for treemap, sunburst, histogram, pareto, boxWhisker, waterfall, funnel charts) + * @param {ISlideRelChart} rel - chart object + * @return {string} XML + */ +function makeXmlChartEx(rel) { + const opts = rel.opts; + const data = rel.data; + const chartType = opts._type; + const layoutId = getChartExLayoutId(chartType); + let strXml = ''; + strXml += '`; + // Generate data based on chart type + if (chartType === 'treemap' || chartType === 'sunburst' || chartType === CHART_TYPE.TREEMAP || chartType === CHART_TYPE.SUNBURST) { + strXml += makeChartExDataHierarchical(data, layoutId); + } + else if (chartType === 'histogram' || chartType === CHART_TYPE.HISTOGRAM) { + strXml += makeChartExDataHistogram(data); + } + else if (chartType === 'pareto' || chartType === CHART_TYPE.PARETO) { + strXml += makeChartExDataPareto(data); + } + else if (chartType === 'boxWhisker' || chartType === CHART_TYPE.BOXWHISKER) { + strXml += makeChartExDataBoxWhisker(data); + } + else if (chartType === 'regionMap' || chartType === CHART_TYPE.REGION_MAP) { + strXml += makeChartExDataRegionMap(data); + } + else { + // Default: simple data + strXml += makeChartExDataSimple(data); + } + strXml += ''; + // Chart element + strXml += ''; + // Title (always add for treemap/sunburst for compatibility) + if (opts.showTitle || chartType === 'treemap' || chartType === 'sunburst' || chartType === CHART_TYPE.TREEMAP || chartType === CHART_TYPE.SUNBURST) { + strXml += ''; + } + // Plot Area + strXml += ''; + strXml += ''; + // Series based on chart type + if (chartType === 'pareto' || chartType === CHART_TYPE.PARETO) { + strXml += makeChartExSeriesPareto(data, rel.globalId); + } + else if (chartType === 'boxWhisker' || chartType === CHART_TYPE.BOXWHISKER) { + strXml += makeChartExSeriesBoxWhisker(data, rel.globalId); + } + else { + strXml += makeChartExSeriesDefault(data, layoutId, rel.globalId, chartType, opts); + } + strXml += ''; + // Axes for certain chart types + if (chartType === 'histogram' || chartType === 'pareto' || chartType === 'boxWhisker' || + chartType === CHART_TYPE.HISTOGRAM || chartType === CHART_TYPE.PARETO || chartType === CHART_TYPE.BOXWHISKER) { + strXml += makeChartExAxes(chartType); + } + strXml += ''; + // Legend for treemap/sunburst (required for PowerPoint) + if (chartType === 'treemap' || chartType === 'sunburst' || chartType === CHART_TYPE.TREEMAP || chartType === CHART_TYPE.SUNBURST) { + strXml += ''; + } + // Legend for regionMap (color scale legend on right) + if (chartType === 'regionMap' || chartType === CHART_TYPE.REGION_MAP) { + strXml += ''; + } + strXml += ''; + strXml += ''; + return strXml; +} +/** + * Generate hierarchical data for treemap/sunburst charts + */ +function makeChartExDataHierarchical(data, layoutId) { + var _a; + let strXml = ''; + const seriesData = data[0] || { labels: [], values: [] }; + const rawLabels = seriesData.labels || []; + const values = seriesData.values || []; + // Normalize labels to 2D array - handle both string[] and string[][] + let categoryLabels; + if (rawLabels.length > 0 && Array.isArray(rawLabels[0])) { + // Already 2D array + categoryLabels = rawLabels; + } + else { + // 1D array - wrap in outer array for single level + categoryLabels = [rawLabels]; + } + const numLevels = categoryLabels.length; + const numPoints = ((_a = categoryLabels[0]) === null || _a === void 0 ? void 0 : _a.length) || values.length; + strXml += ''; + // String dimension (categories) - multi-level for hierarchy + strXml += ''; + // Column range for categories (A to A for single level, A to C for 3 levels) + const endCol = String.fromCharCode(64 + numLevels); + strXml += `Sheet1!$A$2:$${endCol}$${numPoints + 1}`; + // Each level of hierarchy is a separate cx:lvl + categoryLabels.forEach((levelLabels) => { + strXml += ``; + levelLabels.forEach((label, idx) => { + strXml += `${encodeXmlEntities(String(label || ''))}`; + }); + strXml += ''; + }); + strXml += ''; + // Numeric dimension + const numDimType = layoutId === 'sunburst' || layoutId === 'treemap' ? 'size' : 'val'; + const valCol = String.fromCharCode(65 + numLevels); + strXml += ``; + strXml += `Sheet1!$${valCol}$2:$${valCol}$${values.length + 1}`; + strXml += ``; + values.forEach((val, idx) => { + strXml += `${val}`; + }); + strXml += ''; + strXml += ''; + strXml += ''; + return strXml; +} +/** + * Generate histogram data + */ +function makeChartExDataHistogram(data) { + let strXml = ''; + const seriesData = data[0] || { values: [] }; + const values = seriesData.values || []; + strXml += ''; + strXml += ''; + strXml += `Sheet1!$A$2:$A$${values.length + 1}`; + strXml += ``; + values.forEach((val, idx) => { + strXml += `${val}`; + }); + strXml += ''; + strXml += ''; + strXml += ''; + return strXml; +} +/** + * Generate pareto data + */ +function makeChartExDataPareto(data) { + let strXml = ''; + const seriesData = data[0] || { labels: [], values: [] }; + const rawLabels = seriesData.labels || []; + // Handle both 1D and 2D label arrays + const categories = (Array.isArray(rawLabels[0]) ? rawLabels[0] : rawLabels); + const values = seriesData.values || []; + strXml += ''; + // String dimension (categories) + strXml += ''; + strXml += `Sheet1!$A$2:$A$${categories.length + 1}`; + strXml += ``; + categories.forEach((cat, idx) => { + strXml += `${encodeXmlEntities(String(cat || ''))}`; + }); + strXml += ''; + strXml += ''; + // Numeric dimension + strXml += ''; + strXml += `Sheet1!$B$2:$B$${values.length + 1}`; + strXml += ``; + values.forEach((val, idx) => { + strXml += `${val}`; + }); + strXml += ''; + strXml += ''; + strXml += ''; + return strXml; +} +/** + * Generate box and whisker data + */ +function makeChartExDataBoxWhisker(data) { + let strXml = ''; + data.forEach((series, seriesIdx) => { + const rawLabels = series.labels || []; + // Handle both 1D and 2D label arrays + const categories = (Array.isArray(rawLabels[0]) ? rawLabels[0] : rawLabels); + const values = series.values || []; + strXml += ``; + // String dimension (categories) + strXml += ''; + strXml += `Sheet1!$A$2:$A$${categories.length + 1}`; + strXml += ``; + categories.forEach((cat, idx) => { + strXml += `${encodeXmlEntities(String(cat || ''))}`; + }); + strXml += ''; + strXml += ''; + // Numeric dimension + const colLetter = String.fromCharCode(66 + seriesIdx); // B, C, D, ... + strXml += ''; + strXml += `Sheet1!$${colLetter}$2:$${colLetter}$${values.length + 1}`; + strXml += ``; + values.forEach((val, idx) => { + strXml += `${val}`; + }); + strXml += ''; + strXml += ''; + strXml += ''; + }); + return strXml; +} +/** + * Generate data for regionMap (Filled Map) charts + * Uses colorVal type for numeric dimension to color regions + */ +function makeChartExDataRegionMap(data) { + let strXml = ''; + const seriesData = data[0] || { labels: [], values: [] }; + const rawLabels = seriesData.labels || []; + // Handle both 1D and 2D label arrays - region names (locations) + const categories = (Array.isArray(rawLabels[0]) ? rawLabels[0] : rawLabels); + const values = seriesData.values || []; + strXml += ''; + // String dimension (category - region names) + strXml += ''; + strXml += `Sheet1!$A$2:$A$${categories.length + 1}`; + strXml += ``; + categories.forEach((cat, idx) => { + strXml += `${encodeXmlEntities(String(cat || ''))}`; + }); + strXml += ''; + strXml += ''; + // Numeric dimension with colorVal type (for coloring map regions) + strXml += ''; + strXml += `Sheet1!$B$2:$B$${values.length + 1}`; + strXml += ``; + values.forEach((val, idx) => { + strXml += `${val}`; + }); + strXml += ''; + strXml += ''; + strXml += ''; + return strXml; +} +/** + * Generate simple data for funnel/waterfall + */ +function makeChartExDataSimple(data) { + let strXml = ''; + const seriesData = data[0] || { labels: [], values: [] }; + const rawLabels = seriesData.labels || []; + // Handle both 1D and 2D label arrays + const categories = (Array.isArray(rawLabels[0]) ? rawLabels[0] : rawLabels); + const values = seriesData.values || []; + strXml += ''; + // String dimension (categories) + strXml += ''; + strXml += `Sheet1!$A$2:$A$${categories.length + 1}`; + strXml += ``; + categories.forEach((cat, idx) => { + strXml += `${encodeXmlEntities(String(cat || ''))}`; + }); + strXml += ''; + strXml += ''; + // Numeric dimension + strXml += ''; + strXml += `Sheet1!$B$2:$B$${values.length + 1}`; + strXml += ``; + values.forEach((val, idx) => { + strXml += `${val}`; + }); + strXml += ''; + strXml += ''; + strXml += ''; + return strXml; +} +/** + * Generate default series for ChartEx + */ +function makeChartExSeriesDefault(data, layoutId, globalId, chartType, opts) { + let strXml = ''; + const seriesData = data[0] || { name: 'Series1', labels: [] }; + const seriesName = seriesData.name || 'Series1'; + // Determine the series name column based on chart type and structure + let valuesCol = 'A'; // Default for simple charts (histogram) + const isHierarchical = layoutId === 'treemap' || layoutId === 'sunburst' || + chartType === 'treemap' || chartType === 'sunburst' || + chartType === CHART_TYPE.TREEMAP || chartType === CHART_TYPE.SUNBURST; + if (isHierarchical && seriesData.labels) { + const rawLabels = seriesData.labels || []; + const numLevels = Array.isArray(rawLabels[0]) ? rawLabels.length : 1; + valuesCol = String.fromCharCode(65 + numLevels); // A=65, so +3 levels = D + } + strXml += ``; + strXml += ''; + strXml += ''; + strXml += `Sheet1!$${valuesCol}$1`; + strXml += `${encodeXmlEntities(seriesName)}`; + strXml += ''; + strXml += ''; + // Data labels for treemap/sunburst + if (layoutId === 'treemap' || layoutId === 'sunburst') { + strXml += ''; + strXml += ''; + strXml += ''; + } + strXml += ''; + // Layout properties for histogram + if (layoutId === 'clusteredColumn') { + strXml += ''; + strXml += ''; + strXml += ''; + } + // Layout properties for waterfall (subtotals/totals) + if (layoutId === 'waterfall') { + strXml += ''; + // Add subtotals if provided (0-based indices) + const subtotalIndices = seriesData.subtotalIndices; + if (subtotalIndices && subtotalIndices.length > 0) { + strXml += ''; + subtotalIndices.forEach((idx) => { + strXml += ``; + }); + strXml += ''; + } + strXml += ''; + } + // Layout properties for treemap/sunburst (required for PowerPoint) + if (layoutId === 'treemap' || layoutId === 'sunburst') { + strXml += ''; + strXml += ''; + strXml += ''; + } + // Layout properties for regionMap (Filled Map) + if (layoutId === 'regionMap') { + strXml += ''; + strXml += ''; + strXml += ''; + // Include geoCache if available (required for map to display without internet connection) + if (opts === null || opts === void 0 ? void 0 : opts.geoCache) { + strXml += ''; + strXml += `${opts.geoCache}`; + strXml += ''; + } + strXml += ''; + strXml += ''; + } + strXml += ''; + return strXml; +} +/** + * Generate pareto series (column + line) + */ +function makeChartExSeriesPareto(data, globalId) { + let strXml = ''; + const seriesData = data[0] || { name: 'Series1' }; + const seriesName = seriesData.name || 'Series1'; + // Primary series: clusteredColumn + strXml += ``; + strXml += ''; + strXml += ''; + strXml += `Sheet1!$B$1`; + strXml += `${encodeXmlEntities(seriesName)}`; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + // Secondary series: paretoLine + strXml += ``; + strXml += ''; + strXml += ''; + return strXml; +} +/** + * Generate box and whisker series + */ +function makeChartExSeriesBoxWhisker(data, globalId) { + let strXml = ''; + data.forEach((series, seriesIdx) => { + const seriesName = series.name || `Series${seriesIdx + 1}`; + const colLetter = String.fromCharCode(66 + seriesIdx); // B, C, D, ... + strXml += ``; + strXml += ''; + strXml += ''; + strXml += `Sheet1!$${colLetter}$1`; + strXml += `${encodeXmlEntities(seriesName)}`; + strXml += ''; + strXml += ''; + strXml += ``; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + }); + return strXml; +} +/** + * Generate axes for ChartEx charts + */ +function makeChartExAxes(chartType) { + let strXml = ''; + // Category axis + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + // Primary value axis + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + // Secondary value axis for pareto + if (chartType === 'pareto' || chartType === CHART_TYPE.PARETO) { + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + } + return strXml; +} +/** + * Generate chart style XML for ChartEx charts + * This provides the styling definitions for chart elements + * Uses the complete style definition required by PowerPoint + */ +function makeChartExStyleXml() { + // Complete chart style that PowerPoint expects - includes all required elements + return '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + ''; +} +/** + * Generate chart color style XML for ChartEx charts + * This provides the color palette for the chart + */ +function makeChartExColorsXml() { + let strXml = ''; + strXml += ''; + // Use theme accent colors + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + // Color variations + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + return strXml; +} +/** + * Generate chart style XML for regular charts (bar, line, pie, etc.) + * This provides the styling definitions for chart elements + * Uses style id="201" which is standard for regular charts + */ +function makeChartStyleXml() { + return '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + ''; +} +/** + * Generate chart color style XML for regular charts + * This provides the color palette for the chart + */ +function makeChartColorsXml() { + let strXml = ''; + strXml += ''; + // Use theme accent colors + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + // Color variations + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + return strXml; +} /** * PptxGenJS: Media Methods @@ -5053,6 +6349,77 @@ function getSizeFromImage (inImgUrl: string): { width: number, height: number } /** * PptxGenJS: XML Generation */ +/** + * Calculate font scale for text shrink-to-fit functionality + * PowerPoint requires explicit fontScale value for immediate shrinking + * @param {ISlideObject} slideObject - slide object with text and dimensions + * @return {number} fontScale value (percentage * 1000, e.g., 85000 = 85%) + */ +function calculateFontScale(slideObject) { + var _a, _b, _c; + // Get text content and font size + let textContent = ''; + let fontSize = 18; // PowerPoint default font size in points + if (Array.isArray(slideObject.text)) { + slideObject.text.forEach(textItem => { + var _a; + if (typeof textItem === 'string') { + textContent += textItem; + } + else if (textItem.text) { + textContent += textItem.text; + if ((_a = textItem.options) === null || _a === void 0 ? void 0 : _a.fontSize) { + fontSize = textItem.options.fontSize; + } + } + }); + } + else if (typeof slideObject.text === 'string') { + textContent = slideObject.text; + } + // Get font size from main options if set + if ((_a = slideObject.options) === null || _a === void 0 ? void 0 : _a.fontSize) { + fontSize = slideObject.options.fontSize; + } + // Get box dimensions in EMU (slideObject dimensions are already in EMU after processing) + // Note: w and h could be in inches (number) or percentage (string) + const boxWidth = typeof ((_b = slideObject.options) === null || _b === void 0 ? void 0 : _b.w) === 'number' ? slideObject.options.w : 0; + const boxHeight = typeof ((_c = slideObject.options) === null || _c === void 0 ? void 0 : _c.h) === 'number' ? slideObject.options.h : 0; + // If we don't have enough info, return a reasonable default (75%) + if (!textContent || boxWidth === 0 || boxHeight === 0) { + return 75000; + } + // Convert to points if dimensions are in inches (1 inch = 72 points) + // Note: At this point, w/h are still in inches before EMU conversion + const boxWidthPts = boxWidth * 72; + const boxHeightPts = boxHeight * 72; + // Account for default margins (~0.1 inch on each side = ~7pt each) + const marginPts = 14; // ~7pt * 2 sides + const usableWidth = Math.max(boxWidthPts - marginPts, 10); + const usableHeight = Math.max(boxHeightPts - marginPts, 10); + // Estimate text dimensions + // Average character width is roughly 0.5-0.6 of font size for most fonts + const avgCharWidth = fontSize * 0.55; + const lineHeight = fontSize * 1.2; // Typical line height is 120% of font size + // Calculate how many characters fit per line + const charsPerLine = Math.max(Math.floor(usableWidth / avgCharWidth), 1); + // Calculate lines needed (accounting for word wrap) + const totalChars = textContent.length; + const linesNeeded = Math.ceil(totalChars / charsPerLine); + // Calculate height needed for all lines + const heightNeeded = linesNeeded * lineHeight; + // If text fits, use a moderate scale to still trigger shrink mode + if (heightNeeded <= usableHeight) { + return 95000; // 95% - text fits but we set slightly less to enable shrink mode + } + // Calculate scale needed to fit + const scaleFactor = usableHeight / heightNeeded; + // Convert to OOXML format (percentage * 1000) and clamp between 25% and 100% + // We use Math.sqrt to be less aggressive (text width also shrinks when font shrinks) + const adjustedScale = Math.sqrt(scaleFactor); + const fontScale = Math.max(25000, Math.min(100000, Math.round(adjustedScale * 100000))); + return fontScale; +} const ImageSizingXml = { cover: function (imgSize, boxDim) { const imgRatio = imgSize.h / imgSize.w; @@ -5086,6 +6453,158 @@ const ImageSizingXml = { return ``; }, }; +/** + * Generate XML for a child shape inside a group + * @param {ISlideObject} child - child slide object + * @param {number} childIdx - index of child in group + * @param {PresSlide|SlideLayout} slide - parent slide for layout info + * @return {string} XML string for the child element + */ +function genGroupChildXml(child, childIdx, slide) { + var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u; + let strXml = ''; + // Get child position and size - use _emu if available for precision + // Cast to any for _emu since it's passed through from converter but not in official interface + const childOpts = child.options; + const childX = ((_a = childOpts === null || childOpts === void 0 ? void 0 : childOpts._emu) === null || _a === void 0 ? void 0 : _a.x) !== undefined + ? childOpts._emu.x + : (typeof ((_b = child.options) === null || _b === void 0 ? void 0 : _b.x) === 'number' ? getSmartParseNumber(child.options.x, 'X', slide._presLayout) : 0); + const childY = ((_c = childOpts === null || childOpts === void 0 ? void 0 : childOpts._emu) === null || _c === void 0 ? void 0 : _c.y) !== undefined + ? childOpts._emu.y + : (typeof ((_d = child.options) === null || _d === void 0 ? void 0 : _d.y) === 'number' ? getSmartParseNumber(child.options.y, 'Y', slide._presLayout) : 0); + const childCx = ((_e = childOpts === null || childOpts === void 0 ? void 0 : childOpts._emu) === null || _e === void 0 ? void 0 : _e.cx) !== undefined + ? childOpts._emu.cx + : (typeof ((_f = child.options) === null || _f === void 0 ? void 0 : _f.w) === 'number' ? getSmartParseNumber(child.options.w, 'X', slide._presLayout) : 0); + const childCy = ((_g = childOpts === null || childOpts === void 0 ? void 0 : childOpts._emu) === null || _g === void 0 ? void 0 : _g.cy) !== undefined + ? childOpts._emu.cy + : (typeof ((_h = child.options) === null || _h === void 0 ? void 0 : _h.h) === 'number' ? getSmartParseNumber(child.options.h, 'Y', slide._presLayout) : 0); + // Build location attributes for rotation/flip + let locationAttr = ''; + if ((_j = child.options) === null || _j === void 0 ? void 0 : _j.rotate) + locationAttr += ` rot="${convertRotationDegrees(child.options.rotate)}"`; + if ((_k = child.options) === null || _k === void 0 ? void 0 : _k.flipH) + locationAttr += ' flipH="1"'; + if ((_l = child.options) === null || _l === void 0 ? void 0 : _l.flipV) + locationAttr += ' flipV="1"'; + switch (child._type) { + case SLIDE_OBJECT_TYPES.text: + // Generate shape XML for text/shape child + strXml += ''; + strXml += ''; + strXml += ``; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ``; + strXml += ``; + strXml += ``; + strXml += ''; + // Preset geometry + const shapeName = child.shape || 'rect'; + if (shapeName === 'custGeom' && ((_o = child.options) === null || _o === void 0 ? void 0 : _o.points)) { + strXml += ''; + strXml += ''; + // For paths with zero width or height (lines), only include non-zero dimensions + // PowerPoint requires omitting w="0" or h="0" for proper line rendering + const pathAttrs = []; + if (childCx > 0) + pathAttrs.push(`w="${childCx}"`); + if (childCy > 0) + pathAttrs.push(`h="${childCy}"`); + strXml += ` 0 ? ' ' + pathAttrs.join(' ') : ''}>`; + child.options.points.forEach((point, i) => { + if ('curve' in point) { + switch (point.curve.type) { + case 'arc': + strXml += ``; + break; + case 'cubic': + strXml += ``; + break; + case 'quadratic': + strXml += ``; + break; + } + } + else if ('close' in point) { + strXml += ''; + } + else if (point.moveTo || i === 0) { + strXml += ``; + } + else { + strXml += ``; + } + }); + strXml += ''; + } + else { + strXml += ``; + // Handle generic shapeAdjustments (raw values for any shape type) + if ((_p = child.options) === null || _p === void 0 ? void 0 : _p.shapeAdjustments) { + for (const [name, value] of Object.entries(child.options.shapeAdjustments)) { + strXml += ``; + } + } + else if ((_q = child.options) === null || _q === void 0 ? void 0 : _q.rectRadius) { + // Handle rectRadius for roundRect + strXml += ``; + } + else if ((_r = child.options) === null || _r === void 0 ? void 0 : _r.angleRange) { + // Handle angleRange for arc shapes + for (let i = 0; i < 2; i++) { + const angle = child.options.angleRange[i]; + strXml += ``; + } + } + strXml += ''; + } + // Fill + if ((_s = child.options) === null || _s === void 0 ? void 0 : _s.fill) { + strXml += genXmlColorSelection(child.options.fill); + } + else { + strXml += ''; + } + // Line/border + if ((_t = child.options) === null || _t === void 0 ? void 0 : _t.line) { + strXml += child.options.line.width ? `` : ''; + if (child.options.line.color) + strXml += genXmlColorSelection(child.options.line); + if (child.options.line.dashType) + strXml += ``; + strXml += ''; + } + strXml += ''; + // Text body + strXml += genXmlTextBody(child); + strXml += ''; + break; + case SLIDE_OBJECT_TYPES.image: + // Generate picture XML for image child + strXml += ''; + strXml += ''; + strXml += ``; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ``; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ``; + strXml += ``; + strXml += ``; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + break; + } + return strXml; +} /** * Transforms a slide or slideLayout to resulting XML string - Creates `ppt/slide*.xml` * @param {PresSlide|SlideLayout} slideObject - slide object created within createSlideObject @@ -5095,6 +6614,8 @@ function slideObjectToXml(slide) { var _a; let strSlideXml = slide._name ? '' : ''; let intTableNum = 1; + // Determine if this is a layout (SlideLayout doesn't have _slideId which PresSlide has) + const isLayoutPlaceholder = !('_slideId' in slide); // STEP 1: Add background color/image (ensure only a single `` tag is created, ex: when master-baskground has both `color` and `path`) if (slide._bkgdImgRid) { strSlideXml += ``; @@ -5113,7 +6634,7 @@ function slideObjectToXml(slide) { strSlideXml += ''; // STEP 3: Loop over all Slide.data objects and add them to this slide slide._slideObjects.forEach((slideItemObj, idx) => { - var _a, _b, _c, _d, _e, _f, _g, _h; + var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k; let x = 0; let y = 0; let cx = getSmartParseNumber('75%', 'X', slide._presLayout); @@ -5136,6 +6657,18 @@ function slideObjectToXml(slide) { } // A: Set option vars slideItemObj.options = slideItemObj.options || {}; + // If using a placeholder, first inherit its position as defaults + if (placeholderObj) { + if (placeholderObj.options.x || placeholderObj.options.x === 0) + x = getSmartParseNumber(placeholderObj.options.x, 'X', slide._presLayout); + if (placeholderObj.options.y || placeholderObj.options.y === 0) + y = getSmartParseNumber(placeholderObj.options.y, 'Y', slide._presLayout); + if (placeholderObj.options.w || placeholderObj.options.w === 0) + cx = getSmartParseNumber(placeholderObj.options.w, 'X', slide._presLayout); + if (placeholderObj.options.h || placeholderObj.options.h === 0) + cy = getSmartParseNumber(placeholderObj.options.h, 'Y', slide._presLayout); + } + // Then override with slide item's explicit position/size if provided if (typeof slideItemObj.options.x !== 'undefined') x = getSmartParseNumber(slideItemObj.options.x, 'X', slide._presLayout); if (typeof slideItemObj.options.y !== 'undefined') @@ -5147,17 +6680,6 @@ function slideObjectToXml(slide) { // Set w/h now that smart parse is done let imgWidth = cx; let imgHeight = cy; - // If using a placeholder then inherit it's position - if (placeholderObj) { - if (placeholderObj.options.x || placeholderObj.options.x === 0) - x = getSmartParseNumber(placeholderObj.options.x, 'X', slide._presLayout); - if (placeholderObj.options.y || placeholderObj.options.y === 0) - y = getSmartParseNumber(placeholderObj.options.y, 'Y', slide._presLayout); - if (placeholderObj.options.w || placeholderObj.options.w === 0) - cx = getSmartParseNumber(placeholderObj.options.w, 'X', slide._presLayout); - if (placeholderObj.options.h || placeholderObj.options.h === 0) - cy = getSmartParseNumber(placeholderObj.options.h, 'Y', slide._presLayout); - } // if (slideItemObj.options.flipH) locationAttr += ' flipH="1"'; @@ -5187,11 +6709,24 @@ function slideObjectToXml(slide) { ' ' + ''; strXml += ``; - strXml += ''; - // + ' '; - // TODO: Support banded rows, first/last row, etc. - // NOTE: Banding, etc. only shows when using a table style! (or set alt row color if banding) - // + // Build table properties with style support + const tblPrAttrs = []; + if (objTabOpts.firstRow) + tblPrAttrs.push('firstRow="1"'); + if (objTabOpts.lastRow) + tblPrAttrs.push('lastRow="1"'); + if (objTabOpts.firstCol) + tblPrAttrs.push('firstCol="1"'); + if (objTabOpts.lastCol) + tblPrAttrs.push('lastCol="1"'); + if (objTabOpts.bandRow) + tblPrAttrs.push('bandRow="1"'); + if (objTabOpts.bandCol) + tblPrAttrs.push('bandCol="1"'); + const tblPrAttrStr = tblPrAttrs.length > 0 ? ' ' + tblPrAttrs.join(' ') : ''; + const tableStyleIdXml = objTabOpts.tableStyleId ? `${objTabOpts.tableStyleId}` : ''; + const tblPrContent = tableStyleIdXml ? `${tableStyleIdXml}` : ``; + strXml += `${tblPrContent}`; // STEP 2: Set column widths // Evenly distribute cols/rows across size provided when applicable (calc them if only overall dimensions were provided) // A: Col widths provided? @@ -5340,6 +6875,8 @@ function slideObjectToXml(slide) { // FIXME: 20200525: ^^^ // // 5: Borders: Add any borders + // NOTE: When tableStyleId is set, skip outputting noFill borders - let table style provide borders + const hasTableStyle = !!objTabOpts.tableStyleId; if (cellOpts.border && Array.isArray(cellOpts.border)) { // NOTE: *** IMPORTANT! *** LRTB order matters! (Reorder a line below to watch the borders go wonky in MS-PPT-2013!!) [ @@ -5354,7 +6891,8 @@ function slideObjectToXml(slide) { strXml += ``; strXml += ``; } - else { + else if (!hasTableStyle) { + // Only output noFill borders if not using a table style strXml += ``; } }); @@ -5410,8 +6948,22 @@ function slideObjectToXml(slide) { } // strSlideXml += ''; - strSlideXml += '' : '/>'); - strSlideXml += `${slideItemObj._type === 'placeholder' ? genXmlPlaceholder(slideItemObj) : genXmlPlaceholder(placeholderObj)}`; + // NOTE: txBox="1" indicates this is a text box, which helps PowerPoint apply text-specific features + // Placeholder text shapes need txBox="1" and a:spLocks noGrp="1" to match PowerPoint's expectations + const isPlaceholderText = placeholderObj || slideItemObj._type === 'placeholder'; + const needsTxBox = ((_e = slideItemObj.options) === null || _e === void 0 ? void 0 : _e.isTextBox) || ((_f = slideItemObj.options) === null || _f === void 0 ? void 0 : _f.fit) === 'shrink' || ((_g = slideItemObj.options) === null || _g === void 0 ? void 0 : _g.shrinkText) || isPlaceholderText; + if (needsTxBox) { + strSlideXml += ''; + if (isPlaceholderText) { + strSlideXml += ''; + } + strSlideXml += ''; + } + else { + strSlideXml += ''; + } + // When using a layout placeholder (placeholderObj), pass slideItemObj.text to check for actual slide content + strSlideXml += `${slideItemObj._type === 'placeholder' ? genXmlPlaceholder(slideItemObj, isLayoutPlaceholder) : genXmlPlaceholder(placeholderObj, isLayoutPlaceholder, slideItemObj.text)}`; strSlideXml += ''; strSlideXml += ``; strSlideXml += ``; @@ -5425,8 +6977,15 @@ function slideObjectToXml(slide) { strSlideXml += ''; strSlideXml += ''; strSlideXml += ''; - strSlideXml += ``; - (_f = slideItemObj.options.points) === null || _f === void 0 ? void 0 : _f.forEach((point, i) => { + // For paths with zero width or height (lines), only include non-zero dimensions + // PowerPoint requires omitting w="0" or h="0" for proper line rendering + const pathAttrs = []; + if (cx > 0) + pathAttrs.push(`w="${cx}"`); + if (cy > 0) + pathAttrs.push(`h="${cy}"`); + strSlideXml += ` 0 ? ' ' + pathAttrs.join(' ') : ''}>`; + (_h = slideItemObj.options.points) === null || _h === void 0 ? void 0 : _h.forEach((point, i) => { if ('curve' in point) { switch (point.curve.type) { case 'arc': @@ -5461,9 +7020,20 @@ function slideObjectToXml(slide) { strSlideXml += ''; strSlideXml += ''; } + else if (slideItemObj.options.placeholder && slideItemObj._type !== SLIDE_OBJECT_TYPES.placeholder) { + // Slide content targeting a placeholder - output for text placeholders + // PowerPoint requires this for proper rendering, even though the shape inherits from layout + strSlideXml += ''; + } else { strSlideXml += ''; - if (slideItemObj.options.rectRadius) { + if (slideItemObj.options.shapeAdjustments) { + // Generic shape adjustments - pass raw values directly + for (const [name, value] of Object.entries(slideItemObj.options.shapeAdjustments)) { + strSlideXml += ``; + } + } + else if (slideItemObj.options.rectRadius) { strSlideXml += ``; } else if (slideItemObj.options.angleRange) { @@ -5478,9 +7048,24 @@ function slideObjectToXml(slide) { strSlideXml += ''; } // Option: FILL - strSlideXml += slideItemObj.options.fill ? genXmlColorSelection(slideItemObj.options.fill) : ''; + // For placeholder content (options.placeholder is set), skip fill to inherit from layout + if (slideItemObj.options.fill) { + strSlideXml += genXmlColorSelection(slideItemObj.options.fill); + } + else if (!slideItemObj.options.placeholder) { + // Only add noFill for non-placeholder shapes + strSlideXml += ''; + } + // When placeholder is set and no fill, we don't output anything - inherit from layout // shape Type: LINE: line color - if (slideItemObj.options.line) { + // Only output if there's actual line styling to apply + // Skip if line is empty object, or type is 'none', or for placeholder content (inherit from layout) + const hasLineStyle = slideItemObj.options.line && + (slideItemObj.options.line.color || slideItemObj.options.line.width || + slideItemObj.options.line.dashType || slideItemObj.options.line.beginArrowType || + slideItemObj.options.line.endArrowType) && + slideItemObj.options.line.type !== 'none'; + if (hasLineStyle) { strSlideXml += slideItemObj.options.line.width ? `` : ''; if (slideItemObj.options.line.color) strSlideXml += genXmlColorSelection(slideItemObj.options.line); @@ -5529,15 +7114,15 @@ function slideObjectToXml(slide) { strSlideXml += ''; strSlideXml += ' '; strSlideXml += ``; - if ((_g = slideItemObj.hyperlink) === null || _g === void 0 ? void 0 : _g.url) { + if ((_j = slideItemObj.hyperlink) === null || _j === void 0 ? void 0 : _j.url) { strSlideXml += ``; } - if ((_h = slideItemObj.hyperlink) === null || _h === void 0 ? void 0 : _h.slide) { + if ((_k = slideItemObj.hyperlink) === null || _k === void 0 ? void 0 : _k.slide) { strSlideXml += ``; } strSlideXml += ' '; strSlideXml += ' '; - strSlideXml += ' ' + genXmlPlaceholder(placeholderObj) + ''; + strSlideXml += ' ' + genXmlPlaceholder(placeholderObj, isLayoutPlaceholder) + ''; strSlideXml += ' '; strSlideXml += ''; // NOTE: This works for both cases: either `path` or `data` contains the SVG @@ -5637,19 +7222,78 @@ function slideObjectToXml(slide) { } break; case SLIDE_OBJECT_TYPES.chart: - strSlideXml += ''; - strSlideXml += ' '; - strSlideXml += ` `; - strSlideXml += ' '; - strSlideXml += ` ${genXmlPlaceholder(placeholderObj)}`; - strSlideXml += ' '; - strSlideXml += ` `; - strSlideXml += ' '; - strSlideXml += ' '; - strSlideXml += ` `; - strSlideXml += ' '; - strSlideXml += ' '; - strSlideXml += ''; + if (slideItemObj.isChartEx) { + // ChartEx uses different namespace and wrapper structure + strSlideXml += ''; + strSlideXml += ''; + strSlideXml += ''; + strSlideXml += ' '; + strSlideXml += ` `; + strSlideXml += ' '; + strSlideXml += ` ${genXmlPlaceholder(placeholderObj, isLayoutPlaceholder)}`; + strSlideXml += ' '; + strSlideXml += ` `; + strSlideXml += ' '; + strSlideXml += ' '; + strSlideXml += ` `; + strSlideXml += ' '; + strSlideXml += ' '; + strSlideXml += ''; + strSlideXml += ''; + strSlideXml += ''; + strSlideXml += ''; + } + else { + // Regular chart + strSlideXml += ''; + strSlideXml += ' '; + strSlideXml += ` `; + strSlideXml += ' '; + strSlideXml += ` ${genXmlPlaceholder(placeholderObj, isLayoutPlaceholder)}`; + strSlideXml += ' '; + strSlideXml += ` `; + strSlideXml += ' '; + strSlideXml += ' '; + strSlideXml += ` `; + strSlideXml += ' '; + strSlideXml += ' '; + strSlideXml += ''; + } + break; + case SLIDE_OBJECT_TYPES.group: + // Generate group shape XML + strSlideXml += ''; + // Non-visual properties for group + strSlideXml += ''; + strSlideXml += ``; + strSlideXml += ''; + strSlideXml += ''; + strSlideXml += ''; + // Group shape properties with transform + const groupProps = slideItemObj.options._groupProps || {}; + const grpRotation = groupProps.rotate ? ` rot="${convertRotationDegrees(groupProps.rotate)}"` : ''; + const grpFlipH = groupProps.flipH ? ' flipH="1"' : ''; + const grpFlipV = groupProps.flipV ? ' flipV="1"' : ''; + strSlideXml += ''; + strSlideXml += ``; + strSlideXml += ``; + strSlideXml += ``; + // Child offset and extent - use stored values or fall back to group position/size + const chOffX = groupProps.chOffX !== undefined ? groupProps.chOffX : x; + const chOffY = groupProps.chOffY !== undefined ? groupProps.chOffY : y; + const chExtCx = groupProps.chExtCx !== undefined ? groupProps.chExtCx : cx; + const chExtCy = groupProps.chExtCy !== undefined ? groupProps.chExtCy : cy; + strSlideXml += ``; + strSlideXml += ``; + strSlideXml += ''; + strSlideXml += ''; + // Generate child shapes + if (slideItemObj.groupChildren && Array.isArray(slideItemObj.groupChildren)) { + slideItemObj.groupChildren.forEach((child, childIdx) => { + strSlideXml += genGroupChildXml(child, childIdx, slide); + }); + } + strSlideXml += ''; break; default: strSlideXml += ''; @@ -5750,7 +7394,11 @@ function slideObjectRelationsToXml(slide, defaultRels) { }); (slide._relsChart || []).forEach((rel) => { lastRid = Math.max(lastRid, rel.rId); - strXml += ``; + // Use different relationship type for ChartEx charts + const relType = rel.isChartEx + ? 'http://schemas.microsoft.com/office/2014/relationships/chartEx' + : 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart'; + strXml += ``; }); (slide._relsMedia || []).forEach((rel) => { const relRid = rel.rId.toString(); @@ -5889,11 +7537,13 @@ function genXmlParagraphProperties(textObj, isDefault) { paragraphPropXml += ` marL="${textObj.options.indentLevel && textObj.options.indentLevel > 0 ? bulletMarL + bulletMarL * textObj.options.indentLevel : bulletMarL}" indent="-${bulletMarL}"`; strXmlBullet = ``; } - else if (!textObj.options.bullet) { - // We only add this when the user explicitely asks for no bullet, otherwise, it can override the master defaults! + else if (textObj.options.bullet === false) { + // We only add this when the user explicitly asks for no bullet (bullet: false) + // When bullet is undefined, we let it inherit from master/layout defaults paragraphPropXml += ' indent="0" marL="0"'; // FIX: ISSUE#589 - specify zero indent and marL or default will be hanging paragraph strXmlBullet = ''; } + // When bullet is undefined, we don't add anything - let it inherit from the placeholder/layout // OPTION: tabStops if (textObj.options.tabStops && Array.isArray(textObj.options.tabStops)) { const tabStopsXml = textObj.options.tabStops.map(stop => ``).join(''); @@ -6035,7 +7685,9 @@ function genXmlBodyProperties(slideObject) { if (slideObject && slideObject._type === SLIDE_OBJECT_TYPES.text && slideObject.options._bodyProp) { // PPT-2019 EX: // A: Enable or disable textwrapping none or square - bodyProperties += slideObject.options._bodyProp.wrap ? ' wrap="square"' : ' wrap="none"'; + // NOTE: wrap="square" is REQUIRED for normAutofit (shrink) to work + const needsWrapSquare = slideObject.options.fit === 'shrink' || slideObject.options.shrinkText; + bodyProperties += (slideObject.options._bodyProp.wrap || needsWrapSquare) ? ' wrap="square"' : ' wrap="none"'; // B: Textbox margins [padding] if (slideObject.options._bodyProp.lIns || slideObject.options._bodyProp.lIns === 0) bodyProperties += ` lIns="${slideObject.options._bodyProp.lIns}"`; @@ -6063,17 +7715,22 @@ function genXmlBodyProperties(slideObject) { // NOTE: Use of '' instead of '' causes issues in PPT-2013! if (slideObject.options.fit === 'none') bodyProperties += ''; - // NOTE: Shrink does not work automatically - PowerPoint calculates the `fontScale` value dynamically upon resize - // else if (slideObject.options.fit === 'shrink') bodyProperties += '' // MS-PPT > Format shape > Text Options: "Shrink text on overflow" - else if (slideObject.options.fit === 'shrink') - bodyProperties += ''; + else if (slideObject.options.fit === 'shrink') { + // PowerPoint requires explicit fontScale for immediate shrinking (without user interaction) + // Without fontScale, PowerPoint defaults to 100% (no shrink) until user edits the shape + const fontScale = calculateFontScale(slideObject); + const lnSpcReduction = 10000; // 10% line spacing reduction + bodyProperties += ``; + } else if (slideObject.options.fit === 'resize') bodyProperties += ''; } // // DEPRECATED: below (@deprecated v3.3.0) - if (slideObject.options.shrinkText) - bodyProperties += ''; // MS-PPT > Format shape > Text Options: "Shrink text on overflow" + if (slideObject.options.shrinkText) { + const fontScale = calculateFontScale(slideObject); + bodyProperties += ``; + } /* DEPRECATED: below (@deprecated v3.3.0) * MS-PPT > Format shape > Text Options: "Resize shape to fit text" [spAutoFit] * NOTE: Use of '' in lieu of '' below causes issues in PPT-2013 @@ -6237,8 +7894,13 @@ function genXmlTextBody(slideObj) { textObj.options.indentLevel = textObj.options.indentLevel || opts.indentLevel; textObj.options.paraSpaceBefore = textObj.options.paraSpaceBefore || opts.paraSpaceBefore; textObj.options.paraSpaceAfter = textObj.options.paraSpaceAfter || opts.paraSpaceAfter; - paragraphPropXml = genXmlParagraphProperties(textObj, false); - strSlideXml += paragraphPropXml.replace('', ''); // IMPORTANT: Empty "pPr" blocks will generate needs-repair/corrupt msg + // IMPORTANT: Only add paragraph properties () for the FIRST text run in a paragraph. + // In OOXML, should only appear once per , right after the opening tag. + // Adding it for every text run causes rendering issues (like unwanted line breaks after bold text). + if (idx === 0) { + paragraphPropXml = genXmlParagraphProperties(textObj, false); + strSlideXml += paragraphPropXml.replace('', ''); // IMPORTANT: Empty "pPr" blocks will generate needs-repair/corrupt msg + } // C: Inherit any main options (color, fontSize, etc.) // NOTE: We only pass the text.options to genXmlTextRun (not the Slide.options), // so the run building function cant just fallback to Slide.color, therefore, we need to do that here before passing options below. @@ -6303,18 +7965,35 @@ function genXmlTextBody(slideObj) { * @param {ISlideObject} placeholderObj * @returns XML */ -function genXmlPlaceholder(placeholderObj) { +function genXmlPlaceholder(placeholderObj, isLayoutPlaceholder = false, slideText) { var _a, _b; if (!placeholderObj) return ''; const placeholderIdx = ((_a = placeholderObj.options) === null || _a === void 0 ? void 0 : _a._placeholderIdx) ? placeholderObj.options._placeholderIdx : ''; const placeholderTyp = ((_b = placeholderObj.options) === null || _b === void 0 ? void 0 : _b._placeholderType) ? placeholderObj.options._placeholderType : ''; - const placeholderType = placeholderTyp && PLACEHOLDER_TYPES[placeholderTyp] ? (PLACEHOLDER_TYPES[placeholderTyp]).toString() : ''; - return ` 0 ? ' hasCustomPrompt="1"' : ''} - />`; + // Map the placeholder type to the PPTX value (e.g., 'image' → 'pic', 'content' → '') + // Note: PLACEHOLDER_TYPES['content'] = '' means content placeholders have no type attribute + const mappedType = placeholderTyp && placeholderTyp in PLACEHOLDER_TYPES ? PLACEHOLDER_TYPES[placeholderTyp] : ''; + const placeholderType = mappedType !== undefined ? mappedType.toString() : ''; + // Check if there's actual non-empty text content (not just empty text runs) + // hasCustomPrompt="1" tells PowerPoint to NOT show default placeholder text + // We only want this when: + // 1. There's actual custom text content, AND + // 2. This is NOT a layout placeholder (layouts should never have hasCustomPrompt) + // Layout placeholders have text like "Click to edit Master text styles" which is the prompt template + // When slideText is provided (for text referencing a layout placeholder), use that instead of placeholderObj.text + const textToCheck = slideText !== undefined ? slideText : placeholderObj.text; + const hasActualText = !isLayoutPlaceholder && textToCheck && textToCheck.length > 0 && + textToCheck.some(item => item.text && item.text.trim().length > 0); + // Build attributes without whitespace + const attrs = []; + if (placeholderIdx) + attrs.push(`idx="${placeholderIdx.toString()}"`); + if (placeholderType) + attrs.push(`type="${placeholderType}"`); + if (hasActualText) + attrs.push('hasCustomPrompt="1"'); + return ` 0 ? ' ' + attrs.join(' ') : ''}/>`; } // XML-GEN: First 6 functions create the base /ppt files /** @@ -6324,7 +8003,7 @@ function genXmlPlaceholder(placeholderObj) { * @param {PresSlide} masterSlide - master slide * @returns XML */ -function makeXmlContTypes(slides, slideLayouts, masterSlide) { +function makeXmlContTypes(slides, slideLayouts, masterSlide, embeddedFonts) { let strXml = '' + CRLF; strXml += ''; strXml += ''; @@ -6337,6 +8016,10 @@ function makeXmlContTypes(slides, slideLayouts, masterSlide) { strXml += ''; strXml += ''; // NOTE: Hard-Code this extension as it wont be created in loop below (as extn !== type) strXml += ''; // NOTE: Hard-Code this extension as it wont be created in loop below (as extn !== type) + // Add embedded font file type if any fonts are embedded + if (embeddedFonts && embeddedFonts.length > 0) { + strXml += ''; + } slides.forEach(slide => { (slide._relsMedia || []).forEach(rel => { if (rel.type !== 'image' && rel.type !== 'online' && rel.type !== 'chart' && rel.extn !== 'm4v' && !strXml.includes(rel.type)) { @@ -6349,12 +8032,23 @@ function makeXmlContTypes(slides, slideLayouts, masterSlide) { // STEP 2: Add presentation and slide master(s)/slide(s) strXml += ''; strXml += ''; + // Only one slideMaster is created by PptxGenJS + strXml += ''; slides.forEach((slide, idx) => { - strXml += ``; strXml += ``; // Add charts if any slide._relsChart.forEach(rel => { - strXml += ``; + // Convert relative path to absolute path for Content_Types.xml + // rel.Target is like "../charts/chart1.xml" or "../charts/chartEx32.xml" + const absolutePath = rel.Target.replace('../', '/ppt/'); + // Use different content type for ChartEx files + const contentType = rel.isChartEx + ? 'application/vnd.ms-office.chartex+xml' + : 'application/vnd.openxmlformats-officedocument.drawingml.chart+xml'; + strXml += ``; + // Add chart style and colors file content types + strXml += ``; + strXml += ``; }); }); // STEP 3: Core PPT @@ -6366,7 +8060,11 @@ function makeXmlContTypes(slides, slideLayouts, masterSlide) { slideLayouts.forEach((layout, idx) => { strXml += ``; (layout._relsChart || []).forEach(rel => { - strXml += ' '; + const absolutePath = rel.Target.replace('../', '/ppt/'); + const contentType = rel.isChartEx + ? 'application/vnd.ms-office.chartex+xml' + : 'application/vnd.openxmlformats-officedocument.drawingml.chart+xml'; + strXml += ` `; }); }); // STEP 5: Add notes slide(s) @@ -6375,7 +8073,11 @@ function makeXmlContTypes(slides, slideLayouts, masterSlide) { }); // STEP 6: Add rels masterSlide._relsChart.forEach(rel => { - strXml += ' '; + const absolutePath = rel.Target.replace('../', '/ppt/'); + const contentType = rel.isChartEx + ? 'application/vnd.ms-office.chartex+xml' + : 'application/vnd.openxmlformats-officedocument.drawingml.chart+xml'; + strXml += ` `; }); masterSlide._relsMedia.forEach(rel => { if (rel.type !== 'image' && rel.type !== 'online' && rel.type !== 'chart' && rel.extn !== 'm4v' && !strXml.includes(rel.type)) { @@ -6465,9 +8167,10 @@ function makeXmlCore(title, subject, author, revision) { /** * Creates `ppt/_rels/presentation.xml.rels` * @param {PresSlide[]} slides - Presenation Slides + * @param {EmbeddedFont[]} embeddedFonts - Embedded fonts (optional) * @returns XML */ -function makeXmlPresentationRels(slides) { +function makeXmlPresentationRels(slides, embeddedFonts) { let intRelNum = 1; let strXml = '' + CRLF; strXml += ''; @@ -6481,8 +8184,28 @@ function makeXmlPresentationRels(slides) { `` + `` + `` + - `` + - ''; + ``; + // Add embedded font relationships + let fontRelNum = intRelNum + 5; + if (embeddedFonts && embeddedFonts.length > 0) { + embeddedFonts.forEach(font => { + // Create safe filename from font name (remove spaces, etc.) + const safeFileName = font.fontName.replace(/\s+/g, ''); + if (font.regular) { + strXml += ``; + } + if (font.bold) { + strXml += ``; + } + if (font.italic) { + strXml += ``; + } + if (font.boldItalic) { + strXml += ``; + } + }); + } + strXml += ''; return strXml; } // XML-GEN: Functions that run 1-N times (once for each Slide) @@ -6675,13 +8398,36 @@ function getLayoutIdxForSlide(slides, slideLayouts, slideNumber) { // XML-GEN: Last 5 functions create root /ppt files /** * Creates `ppt/theme/theme1.xml` + * Supports custom theme colors via pres.theme.colorScheme * @return {string} XML */ function makeXmlTheme(pres) { - var _a, _b, _c, _d; + var _a, _b, _c, _d, _e; + // Debug: log the entire theme object const majorFont = ((_a = pres.theme) === null || _a === void 0 ? void 0 : _a.headFontFace) ? `` : ''; const minorFont = ((_c = pres.theme) === null || _c === void 0 ? void 0 : _c.bodyFontFace) ? `` : ''; - return `${majorFont}${minorFont}`; + // Build color scheme with custom colors or defaults + const cs = ((_e = pres.theme) === null || _e === void 0 ? void 0 : _e.colorScheme) || {}; + // dk1 and lt1 use system colors by default, but can be overridden with srgbClr + const dk1Xml = cs.dk1 + ? `` + : ''; + const lt1Xml = cs.lt1 + ? `` + : ''; + // Other colors use srgbClr + const dk2Xml = ``; + const lt2Xml = ``; + const accent1Xml = ``; + const accent2Xml = ``; + const accent3Xml = ``; + const accent4Xml = ``; + const accent5Xml = ``; + const accent6Xml = ``; + const hlinkXml = ``; + const folHlinkXml = ``; + const colorSchemeXml = `${dk1Xml}${lt1Xml}${dk2Xml}${lt2Xml}${accent1Xml}${accent2Xml}${accent3Xml}${accent4Xml}${accent5Xml}${accent6Xml}${hlinkXml}${folHlinkXml}`; + return `${colorSchemeXml}${majorFont}${minorFont}`; } /** * Create presentation file (`ppt/presentation.xml`) @@ -6691,9 +8437,11 @@ function makeXmlTheme(pres) { * @return {string} XML */ function makeXmlPresentation(pres) { + // Add embedTrueTypeFonts="1" if embedded fonts are present + const embedFontsAttr = pres.embeddedFonts && pres.embeddedFonts.length > 0 ? 'embedTrueTypeFonts="1" ' : ''; let strXml = `${CRLF}` + '`; + `xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main" ${pres.rtlMode ? 'rtl="1"' : ''} ${embedFontsAttr}saveSubsetFonts="1" autoCompressPictures="0">`; // STEP 1: Add slide master (SPEC: tag 1 under ) strXml += ''; // STEP 2: Add all Slides (SPEC: tag 3 under ) @@ -6706,9 +8454,34 @@ function makeXmlPresentation(pres) { // IMPORTANT: Placing this before `` causes warning in modern powerpoint! // IMPORTANT: Presentations open without warning Without this line, however, the pres isnt preview in Finder anymore or viewable in iOS! strXml += ``; - // STEP 4: Add sizes + // STEP 4: Add sizes (must come before embeddedFontLst per ECMA-376 spec) strXml += ``; strXml += ``; + // STEP 4.5: Add embedded fonts list (if any) - must come after notesSz per ECMA-376 spec + if (pres.embeddedFonts && pres.embeddedFonts.length > 0) { + // Calculate starting rId for fonts (after slides, notesMaster, presProps, viewProps, theme, tableStyles) + // rId1 = slideMaster, rId2..N+1 = slides, rIdN+2 = notesMaster, rIdN+3 = presProps, rIdN+4 = viewProps, rIdN+5 = theme, rIdN+6 = tableStyles + // Fonts start at rId(slides.length + 7) + let fontRelId = pres.slides.length + 7; + strXml += ''; + pres.embeddedFonts.forEach(font => { + strXml += ``; + if (font.regular) { + strXml += ``; + } + if (font.bold) { + strXml += ``; + } + if (font.italic) { + strXml += ``; + } + if (font.boldItalic) { + strXml += ``; + } + strXml += ''; + }); + strXml += ''; + } // STEP 5: Add text styles strXml += ''; for (let idy = 1; idy < 10; idy++) { @@ -6745,9 +8518,17 @@ function makeXmlPresProps() { /** * Create `ppt/tableStyles.xml` * @see: http://openxmldeveloper.org/discussions/formats/f/13/p/2398/8107.aspx + * @param {string} [customXml] - Custom table styles XML content (without XML declaration) * @return {string} XML */ -function makeXmlTableStyles() { +function makeXmlTableStyles(customXml) { + if (customXml) { + // Use custom table styles if provided + if (customXml.includes('${CRLF}${customXml}`; + } return `${CRLF}`; } /** @@ -6849,6 +8630,18 @@ class PptxGenJS { get rtlMode() { return this._rtlMode; } + get embeddedFonts() { + return this._embeddedFonts; + } + set embeddedFonts(value) { + this._embeddedFonts = value; + } + get tableStylesXml() { + return this._tableStylesXml; + } + set tableStylesXml(value) { + this._tableStylesXml = value; + } get masterSlide() { return this._masterSlide; } @@ -6896,6 +8689,8 @@ class PptxGenJS { * PptxGenJS Library Version */ this._version = VERSION; + /** Embedded fonts in the presentation */ + this._embeddedFonts = []; // Exposed class props this._alignH = AlignH; this._alignV = AlignV; @@ -7018,7 +8813,7 @@ class PptxGenJS { // A: Add empty placeholder objects to slides that don't already have them this.slides.forEach(slide => { if (slide._slideLayout) - addPlaceholdersToSlideLayouts(slide); + ; }); // B: Add all required folders and files zip.folder('_rels'); @@ -7033,16 +8828,38 @@ class PptxGenJS { zip.folder('ppt/theme'); zip.folder('ppt/notesMasters').folder('_rels'); zip.folder('ppt/notesSlides').folder('_rels'); - zip.file('[Content_Types].xml', makeXmlContTypes(this.slides, this.slideLayouts, this.masterSlide)); // TODO: pass only `this` like below! 20200206 + // Add fonts folder if there are embedded fonts + if (this._embeddedFonts && this._embeddedFonts.length > 0) { + zip.folder('ppt/fonts'); + } + zip.file('[Content_Types].xml', makeXmlContTypes(this.slides, this.slideLayouts, this.masterSlide, this._embeddedFonts)); zip.file('_rels/.rels', makeXmlRootRels()); zip.file('docProps/app.xml', makeXmlApp(this.slides, this.company)); // TODO: pass only `this` like below! 20200206 zip.file('docProps/core.xml', makeXmlCore(this.title, this.subject, this.author, this.revision)); // TODO: pass only `this` like below! 20200206 - zip.file('ppt/_rels/presentation.xml.rels', makeXmlPresentationRels(this.slides)); + zip.file('ppt/_rels/presentation.xml.rels', makeXmlPresentationRels(this.slides, this._embeddedFonts)); zip.file('ppt/theme/theme1.xml', makeXmlTheme(this)); zip.file('ppt/presentation.xml', makeXmlPresentation(this)); zip.file('ppt/presProps.xml', makeXmlPresProps()); - zip.file('ppt/tableStyles.xml', makeXmlTableStyles()); + zip.file('ppt/tableStyles.xml', makeXmlTableStyles(this._tableStylesXml)); zip.file('ppt/viewProps.xml', makeXmlViewProps()); + // B2: Add embedded font files + if (this._embeddedFonts && this._embeddedFonts.length > 0) { + this._embeddedFonts.forEach(font => { + const safeFileName = font.fontName.replace(/\s+/g, ''); + if (font.regular) { + zip.file(`ppt/fonts/${safeFileName}-regular.fntdata`, font.regular, { base64: true }); + } + if (font.bold) { + zip.file(`ppt/fonts/${safeFileName}-bold.fntdata`, font.bold, { base64: true }); + } + if (font.italic) { + zip.file(`ppt/fonts/${safeFileName}-italic.fntdata`, font.italic, { base64: true }); + } + if (font.boldItalic) { + zip.file(`ppt/fonts/${safeFileName}-boldItalic.fntdata`, font.boldItalic, { base64: true }); + } + }); + } // C: Create a Layout/Master/Rel/Slide file for each SlideLayout and Slide this.slideLayouts.forEach((layout, idx) => { zip.file(`ppt/slideLayouts/slideLayout${idx + 1}.xml`, makeXmlLayout(layout)); @@ -7129,6 +8946,7 @@ class PptxGenJS { this._sections = []; this._masterSlide = { addChart: null, + addGroup: null, addImage: null, addMedia: null, addNotes: null, diff --git a/dist/pptxgen.d.ts b/dist/pptxgen.d.ts new file mode 100644 index 000000000..36de550c5 --- /dev/null +++ b/dist/pptxgen.d.ts @@ -0,0 +1,236 @@ +/** + * :: pptxgen.ts :: + * + * JavaScript framework that creates PowerPoint (pptx) presentations + * https://github.com/gitbrent/PptxGenJS + * + * This framework is released under the MIT Public License (MIT) + * + * PptxGenJS (C) 2015-present Brent Ely -- https://github.com/gitbrent + * + * Some code derived from the OfficeGen project: + * github.com/Ziv-Barber/officegen/ (Copyright 2013 Ziv Barber) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +import { AlignH, AlignV, CHART_TYPE, ChartType, OutputType, SCHEME_COLOR_NAMES, SHAPE_TYPE, SchemeColor, ShapeType, WRITE_OUTPUT_TYPE } from './core-enums'; +import { AddSlideProps, EmbeddedFont, IPresentationProps, PresLayout, PresSlide, SectionProps, SlideLayout, SlideMasterProps, TableToSlidesProps, ThemeProps, WriteBaseProps, WriteFileProps, WriteProps } from './core-interfaces'; +export default class PptxGenJS implements IPresentationProps { + /** + * Presentation layout name + * Standard layouts: + * - 'LAYOUT_4x3' (10" x 7.5") + * - 'LAYOUT_16x9' (10" x 5.625") + * - 'LAYOUT_16x10' (10" x 6.25") + * - 'LAYOUT_WIDE' (13.33" x 7.5") + * Custom layouts: + * Use `pptx.defineLayout()` to create custom layouts (e.g.: 'A4') + * @type {string} + * @see https://support.office.com/en-us/article/Change-the-size-of-your-slides-040a811c-be43-40b9-8d04-0de5ed79987e + */ + private _layout; + set layout(value: string); + get layout(): string; + /** + * PptxGenJS Library Version + */ + private readonly _version; + get version(): string; + /** + * @type {string} + */ + private _author; + set author(value: string); + get author(): string; + /** + * @type {string} + */ + private _company; + set company(value: string); + get company(): string; + /** + * @type {string} + * @note the `revision` value must be a whole number only (without "." or "," - otherwise, PPT will throw errors upon opening!) + */ + private _revision; + set revision(value: string); + get revision(): string; + /** + * @type {string} + */ + private _subject; + set subject(value: string); + get subject(): string; + /** + * @type {ThemeProps} + */ + private _theme; + set theme(value: ThemeProps); + get theme(): ThemeProps; + /** + * @type {string} + */ + private _title; + set title(value: string); + get title(): string; + /** + * Whether Right-to-Left (RTL) mode is enabled + * @type {boolean} + */ + private _rtlMode; + set rtlMode(value: boolean); + get rtlMode(): boolean; + /** Embedded fonts in the presentation */ + private _embeddedFonts; + get embeddedFonts(): EmbeddedFont[]; + set embeddedFonts(value: EmbeddedFont[]); + /** Custom table styles XML (for roundtrip preservation) */ + private _tableStylesXml; + get tableStylesXml(): string | undefined; + set tableStylesXml(value: string | undefined); + /** master slide layout object */ + private readonly _masterSlide; + get masterSlide(): PresSlide; + /** this Presentation's Slide objects */ + private readonly _slides; + get slides(): PresSlide[]; + /** this Presentation's sections */ + private readonly _sections; + get sections(): SectionProps[]; + /** slide layout definition objects, used for generating slide layout files */ + private readonly _slideLayouts; + get slideLayouts(): SlideLayout[]; + private LAYOUTS; + private readonly _alignH; + get AlignH(): typeof AlignH; + private readonly _alignV; + get AlignV(): typeof AlignV; + private readonly _chartType; + get ChartType(): typeof ChartType; + private readonly _outputType; + get OutputType(): typeof OutputType; + private _presLayout; + get presLayout(): PresLayout; + private readonly _schemeColor; + get SchemeColor(): typeof SchemeColor; + private readonly _shapeType; + get ShapeType(): typeof ShapeType; + /** + * @depricated use `ChartType` + */ + private readonly _charts; + get charts(): typeof CHART_TYPE; + /** + * @depricated use `SchemeColor` + */ + private readonly _colors; + get colors(): typeof SCHEME_COLOR_NAMES; + /** + * @depricated use `ShapeType` + */ + private readonly _shapes; + get shapes(): typeof SHAPE_TYPE; + constructor(); + /** + * Provides an API for `addTableDefinition` to create slides as needed for auto-paging + * @param {AddSlideProps} options - slide masterName and/or sectionTitle + * @return {PresSlide} new Slide + */ + private readonly addNewSlide; + /** + * Provides an API for `addTableDefinition` to get slide reference by number + * @param {number} slideNum - slide number + * @return {PresSlide} Slide + * @since 3.0.0 + */ + private readonly getSlide; + /** + * Enables the `Slide` class to set PptxGenJS [Presentation] master/layout slidenumbers + * @param {SlideNumberProps} slideNum - slide number config + */ + private readonly setSlideNumber; + /** + * Create all chart and media rels for this Presentation + * @param {PresSlide | SlideLayout} slide - slide with rels + * @param {JSZip} zip - JSZip instance + * @param {Promise[]} chartPromises - promise array + */ + private readonly createChartMediaRels; + /** + * Create and export the .pptx file + * @param {string} exportName - output file type + * @param {Blob} blobContent - Blob content + * @return {Promise} Promise with file name + */ + private readonly writeFileToBrowser; + /** + * Create and export the .pptx file + * @param {WRITE_OUTPUT_TYPE} outputType - output file type + * @return {Promise} Promise with data or stream (node) or filename (browser) + */ + private readonly exportPresentation; + /** + * Export the current Presentation to stream + * @param {WriteBaseProps} props - output properties + * @returns {Promise} file stream + */ + stream(props?: WriteBaseProps): Promise; + /** + * Export the current Presentation as JSZip content with the selected type + * @param {WriteProps} props output properties + * @returns {Promise} file content in selected type + */ + write(props?: WriteProps | WRITE_OUTPUT_TYPE): Promise; + /** + * Export the current Presentation. + * Write the generated presentation to disk (Node) or trigger a download (browser). + * @param {WriteFileProps} props - output file properties + * @returns {Promise} the presentation name + */ + writeFile(props?: WriteFileProps | string): Promise; + /** + * Add a new Section to Presentation + * @param {ISectionProps} section - section properties + * @example pptx.addSection({ title:'Charts' }); + */ + addSection(section: SectionProps): void; + /** + * Add a new Slide to Presentation + * @param {AddSlideProps} options - slide options + * @returns {PresSlide} the new Slide + */ + addSlide(options?: AddSlideProps): PresSlide; + /** + * Create a custom Slide Layout in any size + * @param {PresLayout} layout - layout properties + * @example pptx.defineLayout({ name:'A3', width:16.5, height:11.7 }); + */ + defineLayout(layout: PresLayout): void; + /** + * Create a new slide master [layout] for the Presentation + * @param {SlideMasterProps} props - layout properties + */ + defineSlideMaster(props: SlideMasterProps): void; + /** + * Reproduces an HTML table as a PowerPoint table - including column widths, style, etc. - creates 1 or more slides as needed + * @param {string} eleId - table HTML element ID + * @param {TableToSlidesProps} options - generation options + */ + tableToSlides(eleId: string, options?: TableToSlidesProps): void; +} diff --git a/dist/pptxgen.es.js b/dist/pptxgen.es.js index 449038cbf..d5c289cbc 100644 --- a/dist/pptxgen.es.js +++ b/dist/pptxgen.es.js @@ -1,4 +1,3 @@ -/* PptxGenJS 4.0.1 @ 2025-06-25T23:35:35.098Z */ import JSZip from 'jszip'; /****************************************************************************** @@ -18,6 +17,18 @@ PERFORMANCE OF THIS SOFTWARE. /* global Reflect, Promise, SuppressedError, Symbol, Iterator */ +function __rest(s, e) { + var t = {}; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) + t[p] = s[p]; + if (s != null && typeof Object.getOwnPropertySymbols === "function") + for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { + if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) + t[p[i]] = s[p[i]]; + } + return t; +} + function __awaiter(thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { @@ -131,16 +142,29 @@ var OutputType; })(OutputType || (OutputType = {})); var ChartType; (function (ChartType) { + // Column category ChartType["area"] = "area"; + ChartType["area3d"] = "area3D"; ChartType["bar"] = "bar"; ChartType["bar3d"] = "bar3D"; ChartType["bubble"] = "bubble"; ChartType["bubble3d"] = "bubble3D"; ChartType["doughnut"] = "doughnut"; ChartType["line"] = "line"; + ChartType["line3d"] = "line3D"; ChartType["pie"] = "pie"; - ChartType["radar"] = "radar"; + ChartType["pie3d"] = "pie3D"; ChartType["scatter"] = "scatter"; + ChartType["stock"] = "stock"; + ChartType["ofPie"] = "ofPie"; + // ChartEx (Extended chart) types + ChartType["treemap"] = "treemap"; + ChartType["sunburst"] = "sunburst"; + ChartType["histogram"] = "histogram"; + ChartType["pareto"] = "pareto"; + ChartType["boxWhisker"] = "boxWhisker"; + ChartType["waterfallChartEx"] = "waterfallChartEx"; + ChartType["funnel"] = "funnel"; })(ChartType || (ChartType = {})); var ShapeType; (function (ShapeType) { @@ -541,18 +565,44 @@ var SHAPE_TYPE; SHAPE_TYPE["VERTICAL_SCROLL"] = "verticalScroll"; SHAPE_TYPE["WAVE"] = "wave"; })(SHAPE_TYPE || (SHAPE_TYPE = {})); +/** + * Chart types matching PowerPoint categories: + * - Column: BAR, BAR3D (use barDir for horizontal/vertical) + * - Line: LINE, LINE3D, AREA, AREA3D + * - Pie: PIE, PIE3D, DOUGHNUT, OFPIE + * - X Y (Scatter): SCATTER, BUBBLE + * - Waterfall: STOCK + * - ChartEx (Extended): TREEMAP, SUNBURST, HISTOGRAM, PARETO, BOXWHISKER, WATERFALL_CHARTEX, FUNNEL, REGION_MAP + */ var CHART_TYPE; (function (CHART_TYPE) { - CHART_TYPE["AREA"] = "area"; + // Column category CHART_TYPE["BAR"] = "bar"; CHART_TYPE["BAR3D"] = "bar3D"; - CHART_TYPE["BUBBLE"] = "bubble"; - CHART_TYPE["BUBBLE3D"] = "bubble3D"; - CHART_TYPE["DOUGHNUT"] = "doughnut"; + // Line category + CHART_TYPE["AREA"] = "area"; + CHART_TYPE["AREA3D"] = "area3D"; CHART_TYPE["LINE"] = "line"; + CHART_TYPE["LINE3D"] = "line3D"; + // Pie category CHART_TYPE["PIE"] = "pie"; - CHART_TYPE["RADAR"] = "radar"; + CHART_TYPE["PIE3D"] = "pie3D"; + CHART_TYPE["DOUGHNUT"] = "doughnut"; + CHART_TYPE["OFPIE"] = "ofPie"; + // X Y (Scatter) category CHART_TYPE["SCATTER"] = "scatter"; + CHART_TYPE["BUBBLE"] = "bubble"; + // Waterfall category + CHART_TYPE["STOCK"] = "stock"; + // ChartEx (Extended chart) types - use cx: namespace + CHART_TYPE["TREEMAP"] = "treemap"; + CHART_TYPE["SUNBURST"] = "sunburst"; + CHART_TYPE["HISTOGRAM"] = "histogram"; + CHART_TYPE["PARETO"] = "pareto"; + CHART_TYPE["BOXWHISKER"] = "boxWhisker"; + CHART_TYPE["WATERFALL_CHARTEX"] = "waterfallChartEx"; + CHART_TYPE["FUNNEL"] = "funnel"; + CHART_TYPE["REGION_MAP"] = "regionMap"; })(CHART_TYPE || (CHART_TYPE = {})); var SCHEME_COLOR_NAMES; (function (SCHEME_COLOR_NAMES) { @@ -575,15 +625,18 @@ var MASTER_OBJECTS; MASTER_OBJECTS["rect"] = "rect"; MASTER_OBJECTS["text"] = "text"; MASTER_OBJECTS["placeholder"] = "placeholder"; + MASTER_OBJECTS["picturePlaceholder"] = "picturePlaceholder"; })(MASTER_OBJECTS || (MASTER_OBJECTS = {})); var SLIDE_OBJECT_TYPES; (function (SLIDE_OBJECT_TYPES) { SLIDE_OBJECT_TYPES["chart"] = "chart"; + SLIDE_OBJECT_TYPES["group"] = "group"; SLIDE_OBJECT_TYPES["hyperlink"] = "hyperlink"; SLIDE_OBJECT_TYPES["image"] = "image"; SLIDE_OBJECT_TYPES["media"] = "media"; SLIDE_OBJECT_TYPES["online"] = "online"; SLIDE_OBJECT_TYPES["placeholder"] = "placeholder"; + SLIDE_OBJECT_TYPES["picturePlaceholder"] = "picturePlaceholder"; SLIDE_OBJECT_TYPES["table"] = "table"; SLIDE_OBJECT_TYPES["tablecell"] = "tablecell"; SLIDE_OBJECT_TYPES["text"] = "text"; @@ -597,6 +650,11 @@ var PLACEHOLDER_TYPES; PLACEHOLDER_TYPES["chart"] = "chart"; PLACEHOLDER_TYPES["table"] = "tbl"; PLACEHOLDER_TYPES["media"] = "media"; + // Extended placeholder types for roundtrip fidelity + PLACEHOLDER_TYPES["content"] = ""; + PLACEHOLDER_TYPES["clipArt"] = "clipArt"; + PLACEHOLDER_TYPES["diagram"] = "dgm"; + PLACEHOLDER_TYPES["cameo"] = "media"; })(PLACEHOLDER_TYPES || (PLACEHOLDER_TYPES = {})); /** * NOTE: 20170304: BULLET_TYPES: Only default is used so far. I'd like to combine the two pieces of code that use these before implementing these as options @@ -805,6 +863,51 @@ function genXmlColorSelection(props) { case 'solid': outText += `${createColorElement(colorVal, internalElements)}`; break; + case 'gradient': + // Handle gradient fills + if (typeof props === 'object' && 'gradient' in props && props.gradient) { + const gradient = props.gradient; + outText += ''; + outText += ''; + // Generate gradient stops + for (const stop of gradient.stops || []) { + // Position is 0-100, convert to 0-100000 for OOXML + const position = Math.round((stop.position || 0) * 1000); + outText += ``; + // Generate the color with optional transparency + let stopInternalElements = ''; + if (stop.transparency !== undefined && stop.transparency > 0) { + // transparency 0-100 maps to alpha 100000-0 + stopInternalElements += ``; + } + outText += createColorElement(stop.color || 'FFFFFF', stopInternalElements); + outText += ''; + } + outText += ''; + // Linear or radial gradient + if (gradient.type === 'radial') { + // Radial gradient - use path fill + const radPos = gradient.radialPosition || { x: 50, y: 50 }; + // Convert percentage to OOXML units (0-100000) + const left = Math.round(radPos.x * 1000); + const top = Math.round(radPos.y * 1000); + const right = Math.round((100 - radPos.x) * 1000); + const bottom = Math.round((100 - radPos.y) * 1000); + outText += ``; + } + else { + // Linear gradient (default) + const angle = gradient.angle !== undefined ? gradient.angle : 0; + // Convert degrees to PowerPoint angle units (60000 per degree) + const pptAngle = Math.round(angle * 60000); + outText += ``; + } + outText += ''; + } + break; + case 'none': + outText += ''; + break; default: // @note need a statement as having only "break" is removed by rollup, then tiggers "no-default" js-linter outText += ''; break; @@ -1583,6 +1686,7 @@ function createSlideMaster(props, target) { // STEP 2: Add all Slide Master objects in the order they were given if (props.objects && Array.isArray(props.objects) && props.objects.length > 0) { props.objects.forEach((object, idx) => { + var _a; const key = Object.keys(object)[0]; const tgt = target; if (MASTER_OBJECTS[key] && key === 'chart') @@ -1601,7 +1705,8 @@ function createSlideMaster(props, target) { delete object[key].options.name; // remap name for earier handling internally object[key].options._placeholderType = object[key].options.type; delete object[key].options.type; // remap name for earier handling internally - object[key].options._placeholderIdx = 100 + idx; + // Use provided idx if available (for preserving original PPTX indices), otherwise compute + object[key].options._placeholderIdx = object[key].options.idx !== undefined ? object[key].options.idx : (100 + idx); addTextDefinition(tgt, [{ text: object[key].text }], object[key].options, true); // TODO: ISSUE#599 - only text is suported now (add more below) // else if (object[key].image) addImageDefinition(tgt, object[key].image) @@ -1618,6 +1723,12 @@ function createSlideMaster(props, target) { */ } + else if (MASTER_OBJECTS[key] && key === 'picturePlaceholder') { + // NEW: Add native picture placeholder (creates element) + // Use provided idx if available (for preserving original PPTX indices), otherwise compute + const placeholderIdx = ((_a = object[key].options) === null || _a === void 0 ? void 0 : _a.idx) !== undefined ? object[key].options.idx : (100 + idx); + addPicturePlaceholderDefinition(tgt, object[key], placeholderIdx); + } }); } // STEP 3: Add Slide Numbers (NOTE: Do this last so numbers are not covered by objects!) @@ -1673,6 +1784,7 @@ function addChartDefinition(target, type, data, opt) { text: null, options: null, chartRid: null, + isChartEx: false, }; // DESIGN: `type` can an object (ex: `pptx.charts.DOUGHNUT`) or an array of chart objects // EX: addChartDefinition([ { type:pptx.charts.BAR, data:{name:'', labels:[], values[]} }, {} ]) @@ -1749,14 +1861,14 @@ function addChartDefinition(target, type, data, opt) { // Clean up and validate data label positions // REFERENCE: https://docs.microsoft.com/en-us/openspecs/office_standards/ms-oi29500/e2b1697c-7adc-463d-9081-3daef72f656f?redirectedfrom=MSDN if (options.dataLabelPosition) { - if (options._type === CHART_TYPE.AREA || options._type === CHART_TYPE.BAR3D || options._type === CHART_TYPE.DOUGHNUT || options._type === CHART_TYPE.RADAR) { + if (options._type === CHART_TYPE.AREA || options._type === CHART_TYPE.BAR3D || options._type === CHART_TYPE.DOUGHNUT) { delete options.dataLabelPosition; } - if (options._type === CHART_TYPE.PIE) { + if (options._type === CHART_TYPE.PIE || options._type === CHART_TYPE.PIE3D) { if (!['bestFit', 'ctr', 'inEnd', 'outEnd'].includes(options.dataLabelPosition)) delete options.dataLabelPosition; } - if (options._type === CHART_TYPE.BUBBLE || options._type === CHART_TYPE.BUBBLE3D || options._type === CHART_TYPE.LINE || options._type === CHART_TYPE.SCATTER) { + if (options._type === CHART_TYPE.BUBBLE || options._type === CHART_TYPE.LINE || options._type === CHART_TYPE.SCATTER) { if (!['b', 'ctr', 'l', 'r', 't'].includes(options.dataLabelPosition)) delete options.dataLabelPosition; } @@ -1783,8 +1895,6 @@ function addChartDefinition(target, type, data, opt) { options.lineDataSymbol = 'circle'; if (!['gap', 'span'].includes(options.displayBlanksAs || '')) options.displayBlanksAs = 'span'; - if (!['standard', 'marker', 'filled'].includes(options.radarStyle || '')) - options.radarStyle = 'standard'; options.lineDataSymbolSize = options.lineDataSymbolSize && !isNaN(options.lineDataSymbolSize) ? options.lineDataSymbolSize : 6; options.lineDataSymbolLineSize = options.lineDataSymbolLineSize && !isNaN(options.lineDataSymbolLineSize) ? valToPts(options.lineDataSymbolLineSize) : valToPts(0.75); // `layout` allows the override of PPT defaults to maximize space @@ -1829,7 +1939,7 @@ function addChartDefinition(target, type, data, opt) { options.barGapDepthPct = !isNaN(options.barGapDepthPct) && options.barGapDepthPct >= 0 && options.barGapDepthPct <= 1000 ? options.barGapDepthPct : 150; options.chartColors = Array.isArray(options.chartColors) ? options.chartColors - : options._type === CHART_TYPE.PIE || options._type === CHART_TYPE.DOUGHNUT + : options._type === CHART_TYPE.PIE || options._type === CHART_TYPE.PIE3D || options._type === CHART_TYPE.DOUGHNUT ? PIECHART_COLORS : BARCHART_COLORS; options.chartColorsOpacity = options.chartColorsOpacity && !isNaN(options.chartColorsOpacity) ? options.chartColorsOpacity : null; @@ -1876,7 +1986,7 @@ function addChartDefinition(target, type, data, opt) { // if (!options.dataLabelFormatCode && options._type === CHART_TYPE.SCATTER) options.dataLabelFormatCode = 'General'; - if (!options.dataLabelFormatCode && (options._type === CHART_TYPE.PIE || options._type === CHART_TYPE.DOUGHNUT)) { + if (!options.dataLabelFormatCode && (options._type === CHART_TYPE.PIE || options._type === CHART_TYPE.PIE3D || options._type === CHART_TYPE.DOUGHNUT)) { options.dataLabelFormatCode = options.showPercent ? '0%' : 'General'; } options.dataLabelFormatCode = options.dataLabelFormatCode && typeof options.dataLabelFormatCode === 'string' ? options.dataLabelFormatCode : '#,##0'; @@ -1893,10 +2003,25 @@ function addChartDefinition(target, type, data, opt) { else { delete options.catAxisMultiLevelLabels; } + // Check if this is a ChartEx type (treemap, sunburst, histogram, pareto, boxWhisker, regionMap, etc.) + const chartExTypes = [ + CHART_TYPE.TREEMAP, CHART_TYPE.SUNBURST, CHART_TYPE.HISTOGRAM, + CHART_TYPE.PARETO, CHART_TYPE.BOXWHISKER, CHART_TYPE.WATERFALL_CHARTEX, CHART_TYPE.FUNNEL, CHART_TYPE.REGION_MAP, + 'treemap', 'sunburst', 'histogram', 'pareto', 'boxWhisker', 'waterfallChartEx', 'funnel', 'regionMap' + ]; + const isChartEx = chartExTypes.includes(options._type); + // DEBUG: Log to stderr so it's not filtered + if (typeof process !== 'undefined' && process.stderr) { + process.stderr.write(`[PPTX] chartId=${chartId}, _type=${JSON.stringify(options._type)}, isChartEx=${isChartEx}\n`); + } + const chartFileName = isChartEx ? `chartEx${chartId}.xml` : `chart${chartId}.xml`; + // Use relative path from slide to charts folder + const chartTarget = isChartEx ? `../charts/chartEx${chartId}.xml` : `../charts/chart${chartId}.xml`; // STEP 4: Set props resultObject._type = 'chart'; resultObject.options = options; resultObject.chartRid = getNewRelId(target); + resultObject.isChartEx = isChartEx; // STEP 5: Add this chart to this Slide Rels (rId/rels count spans all slides! Count all images to get next rId) target._relsChart.push({ rId: getNewRelId(target), @@ -1904,8 +2029,11 @@ function addChartDefinition(target, type, data, opt) { opts: options, type: options._type, globalId: chartId, - fileName: `chart${chartId}.xml`, - Target: `/ppt/charts/chart${chartId}.xml`, + fileName: chartFileName, + Target: chartTarget, + isChartEx: isChartEx, + chartStyleXml: options.chartStyleXml, + chartColorsXml: options.chartColorsXml, }); target._slideObjects.push(resultObject); return resultObject; @@ -2206,6 +2334,8 @@ function addShapeDefinition(target, shapeName, opts) { dashType: options.line.dashType || 'solid', beginArrowType: options.line.beginArrowType || null, endArrowType: options.line.endArrowType || null, + // Preserve custom dash pattern if present + custDash: options.line.custDash || null, }; if (typeof options.line === 'object' && options.line.type !== 'none') options.line = newLineOpts; @@ -2231,7 +2361,19 @@ function addShapeDefinition(target, shapeName, opts) { options.line.beginArrowType = options.lineHead; // @deprecated (part of `ShapeLineProps` now) if (typeof options.lineTail === 'string') options.line.endArrowType = options.lineTail; // @deprecated (part of `ShapeLineProps` now) - // 4: Create hyperlink rels + // 4: Handle valign for shapes (set _bodyProp.anchor for XML generation) + // This is needed for shapes without text that still need anchor attribute preserved + if (options.valign) { + options._bodyProp = options._bodyProp || {}; + const valign = String(options.valign).toLowerCase(); + if (valign.indexOf('b') === 0) + options._bodyProp.anchor = TEXT_VALIGN.b; + else if (valign.indexOf('m') === 0) + options._bodyProp.anchor = TEXT_VALIGN.ctr; + else if (valign.indexOf('t') === 0) + options._bodyProp.anchor = TEXT_VALIGN.t; + } + // 5: Create hyperlink rels createHyperlinkRels(target, newObject); // LAST: Add object to slide target._slideObjects.push(newObject); @@ -2295,29 +2437,39 @@ function addTableDefinition(target, tableRows, options, slideLayout, presLayout, newCell.options = cell.options; } // C: Set cell borders - newCell.options.border = newCell.options.border || opt.border || [{ type: 'none' }, { type: 'none' }, { type: 'none' }, { type: 'none' }]; + // When using tableStyleId, don't default to 'none' borders - let table style provide them + const hasTableStyle = !!opt.tableStyleId; + if (!hasTableStyle) { + newCell.options.border = newCell.options.border || opt.border || [{ type: 'none' }, { type: 'none' }, { type: 'none' }, { type: 'none' }]; + } + else { + // Only use explicit cell border if set, don't inherit from table options + newCell.options.border = newCell.options.border || undefined; + } const cellBorder = newCell.options.border; // CASE 1: border interface is: BorderOptions | [BorderOptions, BorderOptions, BorderOptions, BorderOptions] - if (!Array.isArray(cellBorder) && typeof cellBorder === 'object') + if (cellBorder && !Array.isArray(cellBorder) && typeof cellBorder === 'object') newCell.options.border = [cellBorder, cellBorder, cellBorder, cellBorder]; // Handle: [null, null, {type:'solid'}, null] - if (!newCell.options.border[0]) - newCell.options.border[0] = { type: 'none' }; - if (!newCell.options.border[1]) - newCell.options.border[1] = { type: 'none' }; - if (!newCell.options.border[2]) - newCell.options.border[2] = { type: 'none' }; - if (!newCell.options.border[3]) - newCell.options.border[3] = { type: 'none' }; - // set complete BorderOptions for all sides - const arrSides = [0, 1, 2, 3]; - arrSides.forEach(idx => { - newCell.options.border[idx] = { - type: newCell.options.border[idx].type || DEF_CELL_BORDER.type, - color: newCell.options.border[idx].color || DEF_CELL_BORDER.color, - pt: typeof newCell.options.border[idx].pt === 'number' ? newCell.options.border[idx].pt : DEF_CELL_BORDER.pt, - }; - }); + if (newCell.options.border) { + if (!newCell.options.border[0]) + newCell.options.border[0] = { type: 'none' }; + if (!newCell.options.border[1]) + newCell.options.border[1] = { type: 'none' }; + if (!newCell.options.border[2]) + newCell.options.border[2] = { type: 'none' }; + if (!newCell.options.border[3]) + newCell.options.border[3] = { type: 'none' }; + // set complete BorderOptions for all sides + const arrSides = [0, 1, 2, 3]; + arrSides.forEach(idx => { + newCell.options.border[idx] = { + type: newCell.options.border[idx].type || DEF_CELL_BORDER.type, + color: newCell.options.border[idx].color || DEF_CELL_BORDER.color, + pt: typeof newCell.options.border[idx].pt === 'number' ? newCell.options.border[idx].pt : DEF_CELL_BORDER.pt, + }; + }); + } // LAST: newRow.push(newCell); }); @@ -2502,6 +2654,36 @@ function addTableDefinition(target, tableRows, options, slideLayout, presLayout, } return newAutoPagedSlides; } +/** + * Adds a picture placeholder object to a slide/layout definition. + * Creates a native element with empty that acts as an image placeholder. + * @param {PresSlide} target - slide/layout object that the placeholder should be added to + * @param {object} props - picture placeholder properties (x, y, w, h, name, idx) + * @param {number} placeholderIdx - the placeholder index + * @since: 1.0.6 + */ +function addPicturePlaceholderDefinition(target, props, placeholderIdx) { + var _a; + const objectName = props.name || `Picture Placeholder ${placeholderIdx}`; + const newObject = { + _type: SLIDE_OBJECT_TYPES.picturePlaceholder, + text: null, + options: { + x: props.x || 0, + y: props.y || 0, + w: props.w || 1, + h: props.h || 1, + objectName, + _placeholderIdx: (_a = props.idx) !== null && _a !== void 0 ? _a : placeholderIdx, + _placeholderType: 'image', // Will be mapped to 'pic' in XML generation + }, + image: null, + imageRid: null, + hyperlink: null, + }; + // Add the slide object + target._slideObjects.push(newObject); +} /** * Adds a text object to a slide definition. * @param {PresSlide} target - slide object that the text should be added to @@ -2521,18 +2703,27 @@ function addTextDefinition(target, text, opts, isPlaceholder) { // STEP 1: Set some options { // A.1: Color (placeholders should inherit their colors or override them, so don't default them) - if (!itemOpts.placeholder) { + // Check both the item itself AND the parent object - text runs inside placeholder content + // should also inherit color, not have a default applied + if (!itemOpts.placeholder && !newObject.options.placeholder && !isPlaceholder) { itemOpts.color = itemOpts.color || newObject.options.color || target.color || DEF_FONT_COLOR; } - // A.2: Placeholder should inherit their bullets or override them, so don't default them - if (itemOpts.placeholder || isPlaceholder) { - itemOpts.bullet = itemOpts.bullet || false; - } + // A.2: Placeholder should inherit their bullets from master/layout, don't set a default + // Note: When bullet is undefined, we leave it undefined so PowerPoint inherits from the layout + // Only when bullet is explicitly set (true/false or an object) do we use it + // (no code needed here - we simply don't default bullet for placeholders) // A.3: Text targeting a placeholder need to inherit the placeholders options (eg: margin, valign, etc.) (Issue #640) + // Note: We only inherit layout/positioning options, NOT font styling (fontFace, fontSize, color) + // Font styling should be defined in the layout placeholder and inherited by PowerPoint, not baked into the slide if (itemOpts.placeholder && target._slideLayout && target._slideLayout._slideObjects) { const placeHold = target._slideLayout._slideObjects.filter(item => item._type === 'placeholder' && item.options && item.options.placeholder && item.options.placeholder === itemOpts.placeholder)[0]; - if (placeHold === null || placeHold === void 0 ? void 0 : placeHold.options) - itemOpts = Object.assign(Object.assign({}, itemOpts), placeHold.options); + if (placeHold === null || placeHold === void 0 ? void 0 : placeHold.options) { + // Only inherit structural/layout options, not font styling + // This allows slide content to inherit font styling from the layout placeholder + // itemOpts comes AFTER layoutOptions so explicit overrides take precedence + const _a = placeHold.options, { fontFace, fontSize, color, bold, italic } = _a, layoutOptions = __rest(_a, ["fontFace", "fontSize", "color", "bold", "italic"]); + itemOpts = Object.assign(Object.assign({}, layoutOptions), itemOpts); + } } // A.4: Other options itemOpts.objectName = itemOpts.objectName @@ -2621,23 +2812,6 @@ function addTextDefinition(target, text, opts, isPlaceholder) { // LAST: Add object to Slide target._slideObjects.push(newObject); } -/** - * Adds placeholder objects to slide - * @param {PresSlide} slide - slide object containing layouts - */ -function addPlaceholdersToSlideLayouts(slide) { - // Add all placeholders on this Slide that dont already exist - (slide._slideLayout._slideObjects || []).forEach(slideLayoutObj => { - if (slideLayoutObj._type === SLIDE_OBJECT_TYPES.placeholder) { - // A: Search for this placeholder on Slide before we add - // NOTE: Check to ensure a placeholder does not already exist on the Slide - // They are created when they have been populated with text (ex: `slide.addText('Hi', { placeholder:'title' });`) - if (slide._slideObjects.filter(slideObj => slideObj.options && slideObj.options.placeholder === slideLayoutObj.options.placeholder).length === 0) { - addTextDefinition(slide, [{ text: '' }], slideLayoutObj.options, false); - } - } - }); -} /* -------------------------------------------------------------------------------- */ /** * Adds a background image or color to a slide definition. @@ -2747,6 +2921,77 @@ function createHyperlinkRels(target, text, options) { } }); } +// ================================================================================================= +// GROUPS +// ================================================================================================= +/** + * Adds a group object to the slide + * @param {PresSlide} target - slide to add group to + * @param {GroupProps} opts - group options including children + */ +function addGroupDefinition(target, opts) { + // Convert children to ISlideObject format + const groupChildren = []; + if (opts.children && Array.isArray(opts.children)) { + opts.children.forEach((child, idx) => { + var _a; + const childObject = { + _type: null, + options: child.options || {}, + }; + switch (child.type) { + case 'text': + childObject._type = SLIDE_OBJECT_TYPES.text; + childObject.shape = ((_a = child.options) === null || _a === void 0 ? void 0 : _a.shape) || SHAPE_TYPE.RECTANGLE; + childObject.text = typeof child.text === 'string' ? [{ text: child.text, options: null }] : (child.text || []); + break; + case 'shape': + childObject._type = SLIDE_OBJECT_TYPES.text; // shapes are text objects with shape property + childObject.shape = child.shapeName || SHAPE_TYPE.RECTANGLE; + // Support text inside shapes (e.g., TextBox inside groups) + childObject.text = child.text + ? (typeof child.text === 'string' ? [{ text: child.text, options: null }] : child.text) + : []; + break; + case 'image': + childObject._type = SLIDE_OBJECT_TYPES.image; + if (child.image) { + childObject.image = child.image.path || ''; + childObject.imageRid = 0; // Will be set during relationship processing + } + break; + } + if (!childObject.options.objectName) { + childObject.options.objectName = `GroupChild ${idx + 1}`; + } + groupChildren.push(childObject); + }); + } + // Create the group slide object + const newObject = { + _type: SLIDE_OBJECT_TYPES.group, + options: { + x: opts.x, + y: opts.y, + w: opts.w, + h: opts.h, + objectName: opts.objectName || `Group ${target._slideObjects.filter(obj => obj._type === SLIDE_OBJECT_TYPES.group).length + 1}`, + // Store child coordinate system info and transforms + _groupProps: { + chOffX: opts.chOffX, + chOffY: opts.chOffY, + chExtCx: opts.chExtCx, + chExtCy: opts.chExtCy, + rotate: opts.rotate, + flipH: opts.flipH, + flipV: opts.flipV, + }, + }, + groupChildren, + }; + // Add to slide objects + target._slideObjects.push(newObject); +} /** * PptxGenJS: Slide Class @@ -2835,6 +3080,15 @@ class Slide { addChartDefinition(this, type, data, options); return this; } + /** + * Add group to Slide + * @param {GroupProps} options - group options + * @return {Slide} this Slide + */ + addGroup(options) { + addGroupDefinition(this, options); + return this; + } /** * Add image to Slide * @param {ImageProps} options - image options @@ -2915,20 +3169,27 @@ function createExcelWorksheet(chartObject, zip) { return __awaiter(this, void 0, void 0, function* () { const data = chartObject.data; return yield new Promise((resolve, reject) => { - var _a, _b; + var _a, _b, _c, _d, _e, _f; const zipExcel = new JSZip(); const intBubbleCols = (data.length - 1) * 2 + 1; // 1 for "X-Values", then 2 for every Y-Axis const IS_MULTI_CAT_AXES = ((_b = (_a = data[0]) === null || _a === void 0 ? void 0 : _a.labels) === null || _b === void 0 ? void 0 : _b.length) > 1; + // Check if this is a ChartEx type - ChartEx charts don't need Excel tables + const chartType = chartObject.opts._type; + const isChartEx = isChartExType(chartType); // A: Add folders zipExcel.folder('_rels'); zipExcel.folder('docProps'); zipExcel.folder('xl/_rels'); - zipExcel.folder('xl/tables'); + if (!isChartEx) { + zipExcel.folder('xl/tables'); + zipExcel.folder('xl/worksheets/_rels'); + } zipExcel.folder('xl/theme'); zipExcel.folder('xl/worksheets'); - zipExcel.folder('xl/worksheets/_rels'); // B: Add core contents { + // Content types - ChartEx charts don't include table + const tableContentType = isChartEx ? '' : ' '; zipExcel.file('[Content_Types].xml', '' + ' ' + ' ' + @@ -2937,7 +3198,7 @@ function createExcelWorksheet(chartObject, zip) { ' ' + ' ' + ' ' + - ' ' + + tableContentType + ' ' + ' ' + '\n'); @@ -2983,16 +3244,49 @@ function createExcelWorksheet(chartObject, zip) { '' + '' + '\n'); - zipExcel.file('xl/worksheets/_rels/sheet1.xml.rels', '' + - '' + - '' + - '\n'); + // ChartEx charts don't need worksheet relationships (no table) + if (!isChartEx) { + zipExcel.file('xl/worksheets/_rels/sheet1.xml.rels', '' + + '' + + '' + + '\n'); + } } // sharedStrings.xml { // A: Start XML let strSharedStrings = ''; - if (chartObject.opts._type === CHART_TYPE.BUBBLE || chartObject.opts._type === CHART_TYPE.BUBBLE3D) { + if (isChartEx && IS_MULTI_CAT_AXES) { + // ChartEx hierarchical charts need unique strings for: + // - Series name (index 0) + // - All hierarchy labels (deduplicated) + const allLabels = []; + const seriesName = data[0].name || 'Series1'; + allLabels.push(seriesName); + // Collect all unique labels from all hierarchy levels + data[0].labels.forEach(labelsGroup => { + labelsGroup.forEach(label => { + if (label && !allLabels.includes(label)) { + allLabels.push(label); + } + }); + }); + strSharedStrings += ``; + allLabels.forEach(label => { + strSharedStrings += `${encodeXmlEntities(label)}`; + }); + } + else if (isChartEx) { + // ChartEx non-hierarchical charts (histogram, pareto, boxWhisker) - simple series name + const seriesName = data[0].name || 'Series1'; + const labels = ((_c = data[0].labels) === null || _c === void 0 ? void 0 : _c[0]) || []; + const allStrings = [seriesName, ...labels.filter((l) => l)]; + strSharedStrings += ``; + allStrings.forEach(str => { + strSharedStrings += `${encodeXmlEntities(str)}`; + }); + } + else if (chartObject.opts._type === CHART_TYPE.BUBBLE) { strSharedStrings += ``; } else if (chartObject.opts._type === CHART_TYPE.SCATTER) { @@ -3014,8 +3308,9 @@ function createExcelWorksheet(chartObject, zip) { // B: Add 'blank' for A1, B1, ..., of every label group inside data[n].labels strSharedStrings += ''; } - // C: Add `name`/Series - if (chartObject.opts._type === CHART_TYPE.BUBBLE || chartObject.opts._type === CHART_TYPE.BUBBLE3D) { + // C: Add `name`/Series (skip for ChartEx - already added above) + if (isChartEx && IS_MULTI_CAT_AXES) ; + else if (chartObject.opts._type === CHART_TYPE.BUBBLE) { data.forEach((objData, idx) => { if (idx === 0) strSharedStrings += 'X-Axis'; @@ -3030,8 +3325,10 @@ function createExcelWorksheet(chartObject, zip) { strSharedStrings += `${encodeXmlEntities((objData.name || ' ').replace('X-Axis', 'X-Values'))}`; }); } - // D: Add `labels`/Categories - if (chartObject.opts._type !== CHART_TYPE.BUBBLE && chartObject.opts._type !== CHART_TYPE.BUBBLE3D && chartObject.opts._type !== CHART_TYPE.SCATTER) { + // D: Add `labels`/Categories (skip for ChartEx - already added above) + if (isChartEx && IS_MULTI_CAT_AXES) ; + else if (isChartEx) ; + else if (chartObject.opts._type !== CHART_TYPE.BUBBLE && chartObject.opts._type !== CHART_TYPE.SCATTER && data[0].labels) { // Use forEach backwards & check for '' to support multi-cat axes data[0].labels .slice() @@ -3048,10 +3345,10 @@ function createExcelWorksheet(chartObject, zip) { strSharedStrings += '\n'; zipExcel.file('xl/sharedStrings.xml', strSharedStrings); } - // tables/table1.xml - { + // tables/table1.xml - ChartEx charts don't need tables + if (!isChartEx) { let strTableXml = ''; - if (chartObject.opts._type === CHART_TYPE.BUBBLE || chartObject.opts._type === CHART_TYPE.BUBBLE3D) { + if (chartObject.opts._type === CHART_TYPE.BUBBLE) { strTableXml += `
`; strTableXml += ``; let idxColLtr = 1; @@ -3073,8 +3370,32 @@ function createExcelWorksheet(chartObject, zip) { strTableXml += ``; }); } + else if (isChartEx && !IS_MULTI_CAT_AXES) { + // ChartEx non-hierarchical charts (histogram, pareto, boxWhisker) - simple values only + strTableXml += + `
`; + strTableXml += ''; + strTableXml += ``; + } + else if (!data[0].labels) { + // Fallback for any chart type without labels - just values + strTableXml += + `
`; + strTableXml += ``; + data.forEach((obj, idx) => { + strTableXml += ``; + }); + } else { - strTableXml += `
`; + // Use the maximum of labels length and values length to ensure table covers all data rows + const labelCount = ((_d = data[0].labels[0]) === null || _d === void 0 ? void 0 : _d.length) || 0; + const maxValueCount = Math.max(...data.map(d => { var _a; return ((_a = d.values) === null || _a === void 0 ? void 0 : _a.length) || 0; })); + const tableRowCount = Math.max(labelCount, maxValueCount) + 1; // +1 for header row + strTableXml += + '
'; strTableXml += ``; data[0].labels.forEach((_labelsGroup, idx) => { strTableXml += ``; @@ -3093,18 +3414,71 @@ function createExcelWorksheet(chartObject, zip) { let strSheetXml = ''; strSheetXml += ''; - if (chartObject.opts._type === CHART_TYPE.BUBBLE || chartObject.opts._type === CHART_TYPE.BUBBLE3D) { + if (chartObject.opts._type === CHART_TYPE.BUBBLE) { strSheetXml += ``; } else if (chartObject.opts._type === CHART_TYPE.SCATTER) { strSheetXml += ``; } - else { + else if (!(isChartEx && IS_MULTI_CAT_AXES)) { + // Skip dimension here for ChartEx hierarchical - it's added in the ChartEx branch below strSheetXml += ``; } + // For ChartEx hierarchical, add dimension BEFORE sheetViews (required element order) + if (isChartEx && IS_MULTI_CAT_AXES) { + const numLevels = data[0].labels.length; + const numDataPoints = data[0].labels[0].length; + const valuesColumn = getExcelColName(numLevels + 1); + strSheetXml += ``; + } strSheetXml += ''; strSheetXml += ''; - if (chartObject.opts._type === CHART_TYPE.BUBBLE || chartObject.opts._type === CHART_TYPE.BUBBLE3D) { + if (isChartEx && IS_MULTI_CAT_AXES) { + // ChartEx hierarchical charts (treemap, sunburst) need special Excel format: + // Row 1: Header only in the last column (e.g., D1 = Series1) + // Rows 2+: Each column represents a hierarchy level, last column is value + // Example for 3-level hierarchy: + // | A | B | C | D | + // | | | |Series1| + // |Branch1| Stem1 | Leaf1 | 22 | + // |Branch1| Stem1 | Leaf2 | 12 | + const numLevels = data[0].labels.length; + const numDataPoints = data[0].labels[0].length; + const seriesName = data[0].name || 'Series1'; + const valuesColumn = getExcelColName(numLevels + 1); + // Build map of label strings to shared string indices (matching sharedStrings.xml) + const labelToIndex = new Map(); + labelToIndex.set(seriesName, 0); + let idx = 1; + data[0].labels.forEach(labelsGroup => { + labelsGroup.forEach(label => { + if (label && !labelToIndex.has(label)) { + labelToIndex.set(label, idx++); + } + }); + }); + // sheetData - dimension was already added before sheetViews + strSheetXml += ''; + // Row 1: Series name header in values column only + strSheetXml += ''; + strSheetXml += `0`; + strSheetXml += ''; + // Data rows: one row per data point with hierarchy levels and value + for (let rowIdx = 0; rowIdx < numDataPoints; rowIdx++) { + strSheetXml += ``; + // Hierarchy levels (reversed so outermost is first column A, innermost before values) + for (let lvl = numLevels - 1; lvl >= 0; lvl--) { + const colNum = numLevels - lvl; + const cellVal = data[0].labels[lvl][rowIdx]; + const strIdx = (_e = labelToIndex.get(cellVal)) !== null && _e !== void 0 ? _e : 0; + strSheetXml += `${strIdx}`; + } + // Value + strSheetXml += `${data[0].values[rowIdx] || 0}`; + strSheetXml += ''; + } + } + else if (chartObject.opts._type === CHART_TYPE.BUBBLE) { // UNUSED: strSheetXml += `` /* EX: INPUT: `data` [ @@ -3184,6 +3558,46 @@ function createExcelWorksheet(chartObject, zip) { strSheetXml += ''; }); } + else if (isChartEx && !IS_MULTI_CAT_AXES) { + // ChartEx non-hierarchical charts (histogram, pareto, boxWhisker) + // Simple format: one column header + values + // | A | + // |Series1| + // | 22 | + // | 12 | + data[0].name || 'Series1'; + const numValues = data[0].values.length; + strSheetXml += ''; + // Row 1: Series name header + strSheetXml += ''; + strSheetXml += '0'; + strSheetXml += ''; + // Data rows: one value per row + for (let rowIdx = 0; rowIdx < numValues; rowIdx++) { + strSheetXml += ``; + strSheetXml += `${data[0].values[rowIdx] || 0}`; + strSheetXml += ''; + } + } + else if (!data[0].labels) { + // Fallback for any chart type without labels - just values + strSheetXml += ''; + // Row 1: Series headers + strSheetXml += ``; + for (let idx = 0; idx < data.length; idx++) { + strSheetXml += `${idx}`; + } + strSheetXml += ''; + // Data rows + const numValues = data[0].values.length; + for (let rowIdx = 0; rowIdx < numValues; rowIdx++) { + strSheetXml += ``; + for (let serIdx = 0; serIdx < data.length; serIdx++) { + strSheetXml += `${data[serIdx].values[rowIdx] || 0}`; + } + strSheetXml += ''; + } + } else { // strSheetXml += '' strSheetXml += ''; @@ -3215,19 +3629,31 @@ function createExcelWorksheet(chartObject, zip) { } strSheetXml += ''; // B: Add data row(s) for each category - data[0].labels[0].forEach((_cat, idx) => { + // Use the maximum of labels length and values length to ensure all data is included + const labelCount = ((_f = data[0].labels[0]) === null || _f === void 0 ? void 0 : _f.length) || 0; + const maxValueCount = Math.max(...data.map(d => { var _a; return ((_a = d.values) === null || _a === void 0 ? void 0 : _a.length) || 0; })); + const rowCount = Math.max(labelCount, maxValueCount); + for (let idx = 0; idx < rowCount; idx++) { strSheetXml += ``; // Leading cols are reserved for the label groups + // Only add label cells if we have a label for this row (idx < labelCount) for (let idx2 = data[0].labels.length - 1; idx2 >= 0; idx2--) { - strSheetXml += ``; - strSheetXml += `${data.length + idx + 1}`; - strSheetXml += ''; + if (idx < labelCount) { + // Reference shared string for categories that exist + strSheetXml += ``; + strSheetXml += `${data.length + idx + 1}`; + strSheetXml += ''; + } + else { + // For extra value rows without labels, leave the label cell empty (no shared string reference) + strSheetXml += ``; + } } for (let idy = 0; idy < data.length; idy++) { strSheetXml += `${data[idy].values[idx] || ''}`; } strSheetXml += ''; - }); + } } else { // A: create header row @@ -3359,13 +3785,52 @@ function createExcelWorksheet(chartObject, zip) { .generateAsync({ type: 'base64' }) .then(content => { // 1: Create the embedded Excel worksheet with labels and data - zip.file(`ppt/embeddings/Microsoft_Excel_Worksheet${chartObject.globalId}.xlsx`, content, { base64: true }); + // PowerPoint convention: first Excel file has no number suffix, subsequent ones are numbered 2, 3, etc. + // e.g., Microsoft_Excel_Worksheet.xlsx, Microsoft_Excel_Worksheet2.xlsx, Microsoft_Excel_Worksheet3.xlsx + const excelSuffix = chartObject.globalId === 1 ? '' : String(chartObject.globalId); + zip.file(`ppt/embeddings/Microsoft_Excel_Worksheet${excelSuffix}.xlsx`, content, { base64: true }); // 2: Create the chart.xml and rel files - zip.file('ppt/charts/_rels/' + chartObject.fileName + '.rels', '' + - '' + - `` + - ''); - zip.file(`ppt/charts/${chartObject.fileName}`, makeXmlCharts(chartObject)); + // Check if this is a ChartEx type (treemap, sunburst, histogram, pareto, boxWhisker, etc.) + const chartType = chartObject.opts._type; + const isChartEx = isChartExType(chartType); + // fileName is already correctly set in gen-objects.ts (chartEx*.xml or chart*.xml) + const chartFileName = chartObject.fileName; + if (isChartEx) { + // ChartEx charts require style and colors files + const styleFileName = `style${chartObject.globalId}.xml`; + const colorsFileName = `colors${chartObject.globalId}.xml`; + // Create relationships file with style and colors refs + zip.file('ppt/charts/_rels/' + chartFileName + '.rels', '' + + '' + + `` + + `` + + `` + + ''); + // Create chart style file - use raw XML if available (lossless roundtrip), otherwise generate default + zip.file(`ppt/charts/${styleFileName}`, chartObject.chartStyleXml || makeChartExStyleXml()); + // Create chart colors file - use raw XML if available (lossless roundtrip), otherwise generate default + zip.file(`ppt/charts/${colorsFileName}`, chartObject.chartColorsXml || makeChartExColorsXml()); + // Generate ChartEx XML + zip.file(`ppt/charts/${chartFileName}`, makeXmlChartEx(chartObject)); + } + else { + // Regular charts also need style and colors files for proper rendering + const styleFileName = `style${chartObject.globalId}.xml`; + const colorsFileName = `colors${chartObject.globalId}.xml`; + // Create relationships file with style, colors, and Excel refs + // Note: Order matters - style=rId1, colors=rId2, package=rId3 to match PowerPoint's convention + zip.file('ppt/charts/_rels/' + chartFileName + '.rels', '' + + '' + + `` + + `` + + `` + + ''); + // Create chart style file - use raw XML if available (lossless roundtrip), otherwise generate default + zip.file(`ppt/charts/${styleFileName}`, chartObject.chartStyleXml || makeChartStyleXml()); + // Create chart colors file - use raw XML if available (lossless roundtrip), otherwise generate default + zip.file(`ppt/charts/${colorsFileName}`, chartObject.chartColorsXml || makeChartColorsXml()); + zip.file(`ppt/charts/${chartObject.fileName}`, makeXmlCharts(chartObject)); + } // 3: Done resolve(''); }) @@ -3414,8 +3879,12 @@ function makeXmlCharts(rel) { /** Add 3D view tag * @see: https://c-rex.net/projects/samples/ooxml/e1/Part4/OOXML_P4_DOCX_perspective_topic_ID0E6BUQB.html */ - if (rel.opts._type === CHART_TYPE.BAR3D) { + if (rel.opts._type === CHART_TYPE.BAR3D || rel.opts._type === CHART_TYPE.LINE3D || rel.opts._type === CHART_TYPE.AREA3D || rel.opts._type === CHART_TYPE.PIE3D) { strXml += ``; + // Add floor, sideWall, backWall for 3D charts (required for proper rendering) + strXml += ''; + strXml += ''; + strXml += ''; } strXml += ''; // IMPORTANT: Dont specify layout to enable auto-fit: PPT does a great job maximizing space with all 4 TRBL locations @@ -3438,7 +3907,7 @@ function makeXmlCharts(rel) { } // A: Create Chart XML ----------------------------------------------------------- if (Array.isArray(rel.opts._type)) { - rel.opts._type.forEach(type => { + rel.opts._type.forEach((type) => { // TODO: FIXME: theres `options` on chart rels?? const options = Object.assign(Object.assign({}, rel.opts), type.options); // let options: IChartOptsLib = { type: type.type, } @@ -3452,7 +3921,7 @@ function makeXmlCharts(rel) { strXml += makeChartType(rel.opts._type, rel.data, rel.opts, AXIS_ID_VALUE_PRIMARY, AXIS_ID_CATEGORY_PRIMARY); } // B: Axes ----------------------------------------------------------- - if (rel.opts._type !== CHART_TYPE.PIE && rel.opts._type !== CHART_TYPE.DOUGHNUT) { + if (rel.opts._type !== CHART_TYPE.PIE && rel.opts._type !== CHART_TYPE.PIE3D && rel.opts._type !== CHART_TYPE.DOUGHNUT && rel.opts._type !== CHART_TYPE.OFPIE) { // Param check if (rel.opts.valAxes && rel.opts.valAxes.length > 1 && !usesSecondaryValAxis) { throw new Error('Secondary axis must be used by one of the multiple charts'); @@ -3503,7 +3972,7 @@ function makeXmlCharts(rel) { strXml += ' '; strXml += ' '; strXml += ' '; - strXml += ` `; + strXml += ` `; strXml += ' '; strXml += ' '; strXml += ' '; @@ -3519,7 +3988,7 @@ function makeXmlCharts(rel) { // OPTION: Fill strXml += ((_c = rel.opts.plotArea.fill) === null || _c === void 0 ? void 0 : _c.color) ? genXmlColorSelection(rel.opts.plotArea.fill) : ''; // OPTION: Border - strXml += rel.opts.plotArea.border + strXml += rel.opts.plotArea.border && rel.opts.plotArea.border.color ? `${genXmlColorSelection(rel.opts.plotArea.border.color)}` : ''; // Close shapeProp/plotArea before Legend @@ -3568,9 +4037,9 @@ function makeXmlCharts(rel) { : ''; strXml += ' '; strXml += ''; - // E: DATA (Add relID) - strXml += ''; - // LAST: chartSpace end + // E: DATA (Add relID) - rId3 is the Excel package (rId1=style, rId2=colors) + strXml += ''; + // CHARTSPACE: END strXml += ''; return strXml; } @@ -3593,23 +4062,27 @@ function makeChartType(chartType, data, opts, valAxisId, catAxisId, isMultiTypeC let idxColLtr = 1; let optsChartData = null; let strXml = ''; + console.log(`[makeChartType] chartType=${chartType}, data length=${data === null || data === void 0 ? void 0 : data.length}, CHART_TYPE.PIE3D=${CHART_TYPE.PIE3D}`); switch (chartType) { case CHART_TYPE.AREA: + case CHART_TYPE.AREA3D: case CHART_TYPE.BAR: case CHART_TYPE.BAR3D: case CHART_TYPE.LINE: - case CHART_TYPE.RADAR: + case CHART_TYPE.LINE3D: // 1: Start Chart strXml += ``; - if (chartType === CHART_TYPE.AREA && opts.barGrouping === 'stacked') { - strXml += ''; + // AREA/AREA3D charts need grouping for all variants (standard, stacked, percentStacked) + if (chartType === CHART_TYPE.AREA || chartType === CHART_TYPE.AREA3D) { + strXml += ''; } if (chartType === CHART_TYPE.BAR || chartType === CHART_TYPE.BAR3D) { strXml += ''; strXml += ''; } - if (chartType === CHART_TYPE.RADAR) { - strXml += ''; + // LINE/LINE3D charts also need grouping for stacked/percentStacked variants + if (chartType === CHART_TYPE.LINE || chartType === CHART_TYPE.LINE3D) { + strXml += ''; } strXml += ''; // 2: "Series" block for every data row @@ -3672,7 +4145,7 @@ function makeChartType(chartType, data, opts, valAxisId, catAxisId, isMultiTypeC else { strXml += '' + createColorElement(seriesColor) + ''; } - if (chartType === CHART_TYPE.LINE || chartType === CHART_TYPE.RADAR) { + if (chartType === CHART_TYPE.LINE || chartType === CHART_TYPE.LINE3D) { if (opts.lineSize === 0) { strXml += ''; } @@ -3688,27 +4161,24 @@ function makeChartType(chartType, data, opts, valAxisId, catAxisId, isMultiTypeC strXml += ' '; strXml += ' '; // Data Labels per series - // NOTE: [20190117] Adding these to RADAR chart causes unrecoverable corruption! - if (chartType !== CHART_TYPE.RADAR) { - strXml += ''; - strXml += ``; - if (opts.dataLabelBkgrdColors) - strXml += `${createColorElement(seriesColor)}`; - strXml += ''; - strXml += ``; - strXml += `${createColorElement(opts.dataLabelColor || DEF_FONT_COLOR)}`; - strXml += ``; - strXml += ''; - if (opts.dataLabelPosition) - strXml += ``; - strXml += ''; - strXml += ``; - strXml += ``; - strXml += ``; - strXml += ''; - } + strXml += ''; + strXml += ``; + if (opts.dataLabelBkgrdColors) + strXml += `${createColorElement(seriesColor)}`; + strXml += ''; + strXml += ``; + strXml += `${createColorElement(opts.dataLabelColor || DEF_FONT_COLOR)}`; + strXml += ``; + strXml += ''; + if (opts.dataLabelPosition) + strXml += ``; + strXml += ''; + strXml += ``; + strXml += ``; + strXml += ``; + strXml += ''; // 'c:marker' tag: `lineDataSymbol` - if (chartType === CHART_TYPE.LINE || chartType === CHART_TYPE.RADAR) { + if (chartType === CHART_TYPE.LINE || chartType === CHART_TYPE.LINE3D) { strXml += ''; strXml += ' '; if (opts.lineDataSymbolSize) @@ -3768,7 +4238,8 @@ function makeChartType(chartType, data, opts, valAxisId, catAxisId, isMultiTypeC strXml += ' '; strXml += ' '; } - else { + else if (obj.labels.length > 1) { + // Multi-level labels: use multiLvlStrRef strXml += ' '; strXml += ` Sheet1!$A$2:$${getExcelColName(obj.labels.length)}$${obj.labels[0].length + 1}`; strXml += ' '; @@ -3781,23 +4252,33 @@ function makeChartType(chartType, data, opts, valAxisId, catAxisId, isMultiTypeC strXml += ' '; strXml += ' '; } + else { + // Single-level labels: use strRef (better compatibility with Keynote) + strXml += ' '; + strXml += ` Sheet1!$A$2:$A$${obj.labels[0].length + 1}`; + strXml += ' '; + strXml += ` `; + obj.labels[0].forEach((label, idx) => (strXml += `${encodeXmlEntities(label)}`)); + strXml += ' '; + strXml += ' '; + } strXml += ''; } // 3: "Values" { strXml += ''; strXml += ' '; - strXml += `Sheet1!$${getExcelColName(obj._dataIndex + obj.labels.length + 1)}$2:$${getExcelColName(obj._dataIndex + obj.labels.length + 1)}$${obj.labels[0].length + 1}`; + strXml += `Sheet1!$${getExcelColName(obj._dataIndex + obj.labels.length + 1)}$2:$${getExcelColName(obj._dataIndex + obj.labels.length + 1)}$${obj.values.length + 1}`; strXml += ' '; strXml += ' ' + (opts.valLabelFormatCode || opts.dataTableFormatCode || 'General') + ''; - strXml += ` `; + strXml += ` `; obj.values.forEach((value, idx) => (strXml += `${value || value === 0 ? value : ''}`)); strXml += ' '; strXml += ' '; strXml += ''; } // Option: `smooth` - if (chartType === CHART_TYPE.LINE) + if (chartType === CHART_TYPE.LINE || chartType === CHART_TYPE.LINE3D) strXml += ''; // 4: Close "SERIES" strXml += ''; @@ -3837,11 +4318,14 @@ function makeChartType(chartType, data, opts, valAxisId, catAxisId, isMultiTypeC strXml += ` `; strXml += ' '; } - else if (chartType === CHART_TYPE.LINE) { + else if (chartType === CHART_TYPE.LINE || chartType === CHART_TYPE.LINE3D) { strXml += ' '; } // 5: Add axisId (NOTE: order matters! (category comes first)) - strXml += ``; + strXml += ``; + if (chartType === CHART_TYPE.BAR3D) { + strXml += ``; + } // 6: Close Chart tag strXml += ``; // end switch @@ -3856,7 +4340,22 @@ function makeChartType(chartType, data, opts, valAxisId, catAxisId, isMultiTypeC */ // 1: Start Chart strXml += ''; - strXml += ''; + // Determine scatter style based on options: + // - lineSmooth + lineDataSymbol determine the correct scatterStyle + // - If scatterStyle is explicitly set, use it + let scatterStyleVal = opts.scatterStyle || 'lineMarker'; + if (!opts.scatterStyle) { + // Auto-determine from lineSmooth and lineDataSymbol + opts.lineDataSymbol !== 'none' || opts.lineSize !== undefined; + const hasMarkers = opts.lineDataSymbol && opts.lineDataSymbol !== 'none'; + if (opts.lineSmooth) { + scatterStyleVal = hasMarkers ? 'smoothMarker' : 'smooth'; + } + else { + scatterStyleVal = hasMarkers ? 'lineMarker' : 'lineMarker'; // Default + } + } + strXml += ``; strXml += ''; // 2: Series: (One for each Y-Axis) colorIndex = -1; @@ -4122,7 +4621,6 @@ function makeChartType(chartType, data, opts, valAxisId, catAxisId, isMultiTypeC // end switch break; case CHART_TYPE.BUBBLE: - case CHART_TYPE.BUBBLE3D: /* `data` = [ { name:'X-Axis', values:[1,2,3,4,5,6,7,8,9,10,11,12] }, @@ -4221,7 +4719,7 @@ function makeChartType(chartType, data, opts, valAxisId, catAxisId, isMultiTypeC strXml += ' '; strXml += ' '; strXml += ' '; - strXml += ' '; + strXml += ' '; // F: Close "SERIES" strXml += ''; }); @@ -4258,6 +4756,8 @@ function makeChartType(chartType, data, opts, valAxisId, catAxisId, isMultiTypeC break; case CHART_TYPE.DOUGHNUT: case CHART_TYPE.PIE: + case CHART_TYPE.PIE3D: + case CHART_TYPE.OFPIE: // Use the same let name so code blocks from barChart are interchangeable optsChartData = data[0]; /* EX: @@ -4271,6 +4771,10 @@ function makeChartType(chartType, data, opts, valAxisId, catAxisId, isMultiTypeC */ // 1: Start Chart strXml += ''; + // OFPIE charts need ofPieType element (pie = "Pie of Pie", bar = "Bar of Pie") + if (chartType === CHART_TYPE.OFPIE) { + strXml += ``; + } strXml += ' '; strXml += ''; strXml += ' '; @@ -4324,7 +4828,7 @@ function makeChartType(chartType, data, opts, valAxisId, catAxisId, isMultiTypeC strXml += ' '; strXml += ' '; strXml += ' '; - if (chartType === CHART_TYPE.PIE && opts.dataLabelPosition) + if ((chartType === CHART_TYPE.PIE || chartType === CHART_TYPE.PIE3D) && opts.dataLabelPosition) strXml += ``; strXml += ' '; strXml += ' '; @@ -4346,7 +4850,7 @@ function makeChartType(chartType, data, opts, valAxisId, catAxisId, isMultiTypeC strXml += ' '; strXml += ' '; strXml += ' '; - strXml += chartType === CHART_TYPE.PIE ? '' : ''; + strXml += (chartType === CHART_TYPE.PIE || chartType === CHART_TYPE.PIE3D) ? '' : ''; strXml += ' '; strXml += ' '; strXml += ' '; @@ -4370,9 +4874,9 @@ function makeChartType(chartType, data, opts, valAxisId, catAxisId, isMultiTypeC // 3: Create vals strXml += ' '; strXml += ' '; - strXml += ` Sheet1!$B$2:$B$${optsChartData.labels[0].length + 1}`; + strXml += ` Sheet1!$B$2:$B$${optsChartData.values.length + 1}`; strXml += ' '; - strXml += ` `; + strXml += ` `; optsChartData.values.forEach((value, idx) => { strXml += `${value || value === 0 ? value : ''}`; }); @@ -4387,6 +4891,170 @@ function makeChartType(chartType, data, opts, valAxisId, catAxisId, isMultiTypeC strXml += ''; // Done with Doughnut/Pie break; + case CHART_TYPE.STOCK: + // Stock charts have multiple series depending on type: + // - HLC: High, Low, Close (3 series) + // - OHLC: Open, High, Low, Close (4 series, with upDownBars) + // - Volume-HLC: Volume bar + High, Low, Close + // - Volume-OHLC: Volume bar + Open, High, Low, Close (with upDownBars) + const stockType = opts.stockType || 'hlc'; + const hasVolume = stockType === 'volumeHlc' || stockType === 'volumeOhlc'; + const hasOpen = stockType === 'ohlc' || stockType === 'volumeOhlc'; + // Stock series data is always the main data array + // Volume data is provided separately via opts.volumeData + const stockSeriesData = data; + const volumeSeriesData = opts.volumeData || null; + // Volume bar chart (if applicable) + if (hasVolume && volumeSeriesData) { + const volumeLabels = (Array.isArray(volumeSeriesData.labels[0]) ? volumeSeriesData.labels[0] : volumeSeriesData.labels); + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' Sheet1!$B$1'; + strXml += ' ' + encodeXmlEntities(volumeSeriesData.name) + ''; + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' Sheet1!$A$2:$A$' + (volumeLabels.length + 1) + ''; + strXml += ' '; + strXml += ' m/d/yy'; + strXml += ' '; + volumeLabels.forEach((label, labelIdx) => { + strXml += '' + encodeXmlEntities(String(label)) + ''; + }); + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' Sheet1!$B$2:$B$' + (volumeLabels.length + 1) + ''; + strXml += ' '; + strXml += ' General'; + strXml += ' '; + volumeSeriesData.values.forEach((value, valueIdx) => { + strXml += '' + (value || value === 0 ? value : '') + ''; + }); + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ``; + strXml += ''; + } + // Start stock chart + strXml += ''; + // Series for stock chart (High, Low, Close or Open, High, Low, Close) + const stockSeriesOffset = hasVolume ? 1 : 0; + stockSeriesData.forEach((obj, idx) => { + colorIndex++; + // Normalize labels to flat array (cast for TypeScript) + const labels = (Array.isArray(obj.labels[0]) ? obj.labels[0] : obj.labels); + const isLastSeries = idx === stockSeriesData.length - 1; + const seriesIdx = idx + stockSeriesOffset; + const colLetter = getExcelColName(seriesIdx + 2); // +2 because col A is categories, B is first series + strXml += ''; + strXml += ` `; + strXml += ' '; + strXml += ' '; + strXml += ' Sheet1!$' + colLetter + '$1'; + strXml += ' ' + encodeXmlEntities(obj.name) + ''; + strXml += ' '; + strXml += ' '; + // Stock chart series typically have no visible line (just markers) + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' '; + // Last series (Close) gets a visible marker, others get none + if (isLastSeries) { + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' '; + } + else { + strXml += ' '; + } + // Categories (dates) + strXml += ' '; + strXml += ' '; + strXml += ' Sheet1!$A$2:$A$' + (labels.length + 1) + ''; + strXml += ' '; + strXml += ' m/d/yy'; + strXml += ' '; + labels.forEach((label, labelIdx) => { + strXml += '' + encodeXmlEntities(String(label)) + ''; + }); + strXml += ' '; + strXml += ' '; + strXml += ' '; + // Values + strXml += ' '; + strXml += ' '; + strXml += ' Sheet1!$' + colLetter + '$2:$' + colLetter + '$' + (labels.length + 1) + ''; + strXml += ' '; + strXml += ' General'; + strXml += ' '; + obj.values.forEach((value, valueIdx) => { + strXml += '' + (value || value === 0 ? value : '') + ''; + }); + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ''; + }); + // 3: Add data labels + strXml += ''; + strXml += ' '; + strXml += ' '; + strXml += ''; + // 4: Add hiLowLines (this is what makes the stock chart visible!) + strXml += ''; + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ''; + // 5: Add upDownBars for OHLC types (shows open/close as bars) + if (hasOpen) { + strXml += ''; + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ' '; + strXml += ''; + } + // 6: Add axis ids + strXml += ``; + // 7: Close Chart + strXml += ''; + break; default: strXml += ''; break; @@ -4404,7 +5072,7 @@ function makeCatAxis(opts, axisId, valAxisId) { let strXml = ''; // Build cat axis tag // NOTE: Scatter and Bubble chart need two Val axises as they display numbers on x axis - if (opts._type === CHART_TYPE.SCATTER || opts._type === CHART_TYPE.BUBBLE || opts._type === CHART_TYPE.BUBBLE3D) { + if (opts._type === CHART_TYPE.SCATTER || opts._type === CHART_TYPE.BUBBLE) { strXml += ''; } else { @@ -4432,7 +5100,7 @@ function makeCatAxis(opts, axisId, valAxisId) { }); } // NOTE: Adding Val Axis Formatting if scatter or bubble charts - if (opts._type === CHART_TYPE.SCATTER || opts._type === CHART_TYPE.BUBBLE || opts._type === CHART_TYPE.BUBBLE3D) { + if (opts._type === CHART_TYPE.SCATTER || opts._type === CHART_TYPE.BUBBLE) { strXml += ' '; } else { @@ -4483,7 +5151,7 @@ function makeCatAxis(opts, axisId, valAxisId) { strXml += ' '; // Issue#149: PPT will auto-adjust these as needed after calcing the date bounds, so we only include them when specified by user // Allow major and minor units to be set for double value axis charts - if (opts.catLabelFormatCode || opts._type === CHART_TYPE.SCATTER || opts._type === CHART_TYPE.BUBBLE || opts._type === CHART_TYPE.BUBBLE3D) { + if (opts.catLabelFormatCode || opts._type === CHART_TYPE.SCATTER || opts._type === CHART_TYPE.BUBBLE) { if (opts.catLabelFormatCode) { ['catAxisBaseTimeUnit', 'catAxisMajorTimeUnit', 'catAxisMinorTimeUnit'].forEach(opt => { // Validate input as poorly chosen/garbage options will cause chart corruption and it wont render at all! @@ -4506,7 +5174,7 @@ function makeCatAxis(opts, axisId, valAxisId) { } // Close cat axis tag // NOTE: Added closing tag of val or cat axis based on chart type - if (opts._type === CHART_TYPE.SCATTER || opts._type === CHART_TYPE.BUBBLE || opts._type === CHART_TYPE.BUBBLE3D) { + if (opts._type === CHART_TYPE.SCATTER || opts._type === CHART_TYPE.BUBBLE) { strXml += ''; } else { @@ -4596,7 +5264,7 @@ function makeValAxis(opts, valAxisId) { } strXml += ' '; if (opts.valAxisMajorUnit) strXml += ` `; @@ -4820,6 +5488,634 @@ function createLineCap(lineCap) { throw new Error(`Invalid chart line cap: ${neverLineCap}`); } } +// ============================================================================ +// ChartEx (Extended Chart) Support +// ============================================================================ +/** + * Check if a chart type is a ChartEx type + * @param {CHART_TYPE} chartType - the chart type to check + * @return {boolean} true if ChartEx type + */ +function isChartExType(chartType) { + const chartExTypes = [ + CHART_TYPE.TREEMAP, + CHART_TYPE.SUNBURST, + CHART_TYPE.HISTOGRAM, + CHART_TYPE.PARETO, + CHART_TYPE.BOXWHISKER, + CHART_TYPE.WATERFALL_CHARTEX, + CHART_TYPE.FUNNEL, + CHART_TYPE.REGION_MAP, + 'treemap', + 'sunburst', + 'histogram', + 'pareto', + 'boxWhisker', + 'waterfallChartEx', + 'funnel', + 'regionMap' + ]; + return chartExTypes.includes(chartType); +} +/** + * Get the ChartEx layoutId for a chart type + * @param {CHART_TYPE} chartType - the chart type + * @return {string} the layoutId + */ +function getChartExLayoutId(chartType) { + switch (chartType) { + case CHART_TYPE.TREEMAP: + case 'treemap': + return 'treemap'; + case CHART_TYPE.SUNBURST: + case 'sunburst': + return 'sunburst'; + case CHART_TYPE.HISTOGRAM: + case 'histogram': + return 'clusteredColumn'; + case CHART_TYPE.PARETO: + case 'pareto': + return 'clusteredColumn'; // Primary series is clusteredColumn, secondary is paretoLine + case CHART_TYPE.BOXWHISKER: + case 'boxWhisker': + return 'boxWhisker'; + case CHART_TYPE.WATERFALL_CHARTEX: + case 'waterfallChartEx': + return 'waterfall'; + case CHART_TYPE.FUNNEL: + case 'funnel': + return 'funnel'; + case CHART_TYPE.REGION_MAP: + case 'regionMap': + return 'regionMap'; + default: + return 'clusteredColumn'; + } +} +/** + * Generate ChartEx XML (for treemap, sunburst, histogram, pareto, boxWhisker, waterfall, funnel charts) + * @param {ISlideRelChart} rel - chart object + * @return {string} XML + */ +function makeXmlChartEx(rel) { + const opts = rel.opts; + const data = rel.data; + const chartType = opts._type; + const layoutId = getChartExLayoutId(chartType); + let strXml = ''; + strXml += '`; + // Generate data based on chart type + if (chartType === 'treemap' || chartType === 'sunburst' || chartType === CHART_TYPE.TREEMAP || chartType === CHART_TYPE.SUNBURST) { + strXml += makeChartExDataHierarchical(data, layoutId); + } + else if (chartType === 'histogram' || chartType === CHART_TYPE.HISTOGRAM) { + strXml += makeChartExDataHistogram(data); + } + else if (chartType === 'pareto' || chartType === CHART_TYPE.PARETO) { + strXml += makeChartExDataPareto(data); + } + else if (chartType === 'boxWhisker' || chartType === CHART_TYPE.BOXWHISKER) { + strXml += makeChartExDataBoxWhisker(data); + } + else if (chartType === 'regionMap' || chartType === CHART_TYPE.REGION_MAP) { + strXml += makeChartExDataRegionMap(data); + } + else { + // Default: simple data + strXml += makeChartExDataSimple(data); + } + strXml += ''; + // Chart element + strXml += ''; + // Title (always add for treemap/sunburst for compatibility) + if (opts.showTitle || chartType === 'treemap' || chartType === 'sunburst' || chartType === CHART_TYPE.TREEMAP || chartType === CHART_TYPE.SUNBURST) { + strXml += ''; + } + // Plot Area + strXml += ''; + strXml += ''; + // Series based on chart type + if (chartType === 'pareto' || chartType === CHART_TYPE.PARETO) { + strXml += makeChartExSeriesPareto(data, rel.globalId); + } + else if (chartType === 'boxWhisker' || chartType === CHART_TYPE.BOXWHISKER) { + strXml += makeChartExSeriesBoxWhisker(data, rel.globalId); + } + else { + strXml += makeChartExSeriesDefault(data, layoutId, rel.globalId, chartType, opts); + } + strXml += ''; + // Axes for certain chart types + if (chartType === 'histogram' || chartType === 'pareto' || chartType === 'boxWhisker' || + chartType === CHART_TYPE.HISTOGRAM || chartType === CHART_TYPE.PARETO || chartType === CHART_TYPE.BOXWHISKER) { + strXml += makeChartExAxes(chartType); + } + strXml += ''; + // Legend for treemap/sunburst (required for PowerPoint) + if (chartType === 'treemap' || chartType === 'sunburst' || chartType === CHART_TYPE.TREEMAP || chartType === CHART_TYPE.SUNBURST) { + strXml += ''; + } + // Legend for regionMap (color scale legend on right) + if (chartType === 'regionMap' || chartType === CHART_TYPE.REGION_MAP) { + strXml += ''; + } + strXml += ''; + strXml += ''; + return strXml; +} +/** + * Generate hierarchical data for treemap/sunburst charts + */ +function makeChartExDataHierarchical(data, layoutId) { + var _a; + let strXml = ''; + const seriesData = data[0] || { labels: [], values: [] }; + const rawLabels = seriesData.labels || []; + const values = seriesData.values || []; + // Normalize labels to 2D array - handle both string[] and string[][] + let categoryLabels; + if (rawLabels.length > 0 && Array.isArray(rawLabels[0])) { + // Already 2D array + categoryLabels = rawLabels; + } + else { + // 1D array - wrap in outer array for single level + categoryLabels = [rawLabels]; + } + const numLevels = categoryLabels.length; + const numPoints = ((_a = categoryLabels[0]) === null || _a === void 0 ? void 0 : _a.length) || values.length; + strXml += ''; + // String dimension (categories) - multi-level for hierarchy + strXml += ''; + // Column range for categories (A to A for single level, A to C for 3 levels) + const endCol = String.fromCharCode(64 + numLevels); + strXml += `Sheet1!$A$2:$${endCol}$${numPoints + 1}`; + // Each level of hierarchy is a separate cx:lvl + categoryLabels.forEach((levelLabels) => { + strXml += ``; + levelLabels.forEach((label, idx) => { + strXml += `${encodeXmlEntities(String(label || ''))}`; + }); + strXml += ''; + }); + strXml += ''; + // Numeric dimension + const numDimType = layoutId === 'sunburst' || layoutId === 'treemap' ? 'size' : 'val'; + const valCol = String.fromCharCode(65 + numLevels); + strXml += ``; + strXml += `Sheet1!$${valCol}$2:$${valCol}$${values.length + 1}`; + strXml += ``; + values.forEach((val, idx) => { + strXml += `${val}`; + }); + strXml += ''; + strXml += ''; + strXml += ''; + return strXml; +} +/** + * Generate histogram data + */ +function makeChartExDataHistogram(data) { + let strXml = ''; + const seriesData = data[0] || { values: [] }; + const values = seriesData.values || []; + strXml += ''; + strXml += ''; + strXml += `Sheet1!$A$2:$A$${values.length + 1}`; + strXml += ``; + values.forEach((val, idx) => { + strXml += `${val}`; + }); + strXml += ''; + strXml += ''; + strXml += ''; + return strXml; +} +/** + * Generate pareto data + */ +function makeChartExDataPareto(data) { + let strXml = ''; + const seriesData = data[0] || { labels: [], values: [] }; + const rawLabels = seriesData.labels || []; + // Handle both 1D and 2D label arrays + const categories = (Array.isArray(rawLabels[0]) ? rawLabels[0] : rawLabels); + const values = seriesData.values || []; + strXml += ''; + // String dimension (categories) + strXml += ''; + strXml += `Sheet1!$A$2:$A$${categories.length + 1}`; + strXml += ``; + categories.forEach((cat, idx) => { + strXml += `${encodeXmlEntities(String(cat || ''))}`; + }); + strXml += ''; + strXml += ''; + // Numeric dimension + strXml += ''; + strXml += `Sheet1!$B$2:$B$${values.length + 1}`; + strXml += ``; + values.forEach((val, idx) => { + strXml += `${val}`; + }); + strXml += ''; + strXml += ''; + strXml += ''; + return strXml; +} +/** + * Generate box and whisker data + */ +function makeChartExDataBoxWhisker(data) { + let strXml = ''; + data.forEach((series, seriesIdx) => { + const rawLabels = series.labels || []; + // Handle both 1D and 2D label arrays + const categories = (Array.isArray(rawLabels[0]) ? rawLabels[0] : rawLabels); + const values = series.values || []; + strXml += ``; + // String dimension (categories) + strXml += ''; + strXml += `Sheet1!$A$2:$A$${categories.length + 1}`; + strXml += ``; + categories.forEach((cat, idx) => { + strXml += `${encodeXmlEntities(String(cat || ''))}`; + }); + strXml += ''; + strXml += ''; + // Numeric dimension + const colLetter = String.fromCharCode(66 + seriesIdx); // B, C, D, ... + strXml += ''; + strXml += `Sheet1!$${colLetter}$2:$${colLetter}$${values.length + 1}`; + strXml += ``; + values.forEach((val, idx) => { + strXml += `${val}`; + }); + strXml += ''; + strXml += ''; + strXml += ''; + }); + return strXml; +} +/** + * Generate data for regionMap (Filled Map) charts + * Uses colorVal type for numeric dimension to color regions + */ +function makeChartExDataRegionMap(data) { + let strXml = ''; + const seriesData = data[0] || { labels: [], values: [] }; + const rawLabels = seriesData.labels || []; + // Handle both 1D and 2D label arrays - region names (locations) + const categories = (Array.isArray(rawLabels[0]) ? rawLabels[0] : rawLabels); + const values = seriesData.values || []; + strXml += ''; + // String dimension (category - region names) + strXml += ''; + strXml += `Sheet1!$A$2:$A$${categories.length + 1}`; + strXml += ``; + categories.forEach((cat, idx) => { + strXml += `${encodeXmlEntities(String(cat || ''))}`; + }); + strXml += ''; + strXml += ''; + // Numeric dimension with colorVal type (for coloring map regions) + strXml += ''; + strXml += `Sheet1!$B$2:$B$${values.length + 1}`; + strXml += ``; + values.forEach((val, idx) => { + strXml += `${val}`; + }); + strXml += ''; + strXml += ''; + strXml += ''; + return strXml; +} +/** + * Generate simple data for funnel/waterfall + */ +function makeChartExDataSimple(data) { + let strXml = ''; + const seriesData = data[0] || { labels: [], values: [] }; + const rawLabels = seriesData.labels || []; + // Handle both 1D and 2D label arrays + const categories = (Array.isArray(rawLabels[0]) ? rawLabels[0] : rawLabels); + const values = seriesData.values || []; + strXml += ''; + // String dimension (categories) + strXml += ''; + strXml += `Sheet1!$A$2:$A$${categories.length + 1}`; + strXml += ``; + categories.forEach((cat, idx) => { + strXml += `${encodeXmlEntities(String(cat || ''))}`; + }); + strXml += ''; + strXml += ''; + // Numeric dimension + strXml += ''; + strXml += `Sheet1!$B$2:$B$${values.length + 1}`; + strXml += ``; + values.forEach((val, idx) => { + strXml += `${val}`; + }); + strXml += ''; + strXml += ''; + strXml += ''; + return strXml; +} +/** + * Generate default series for ChartEx + */ +function makeChartExSeriesDefault(data, layoutId, globalId, chartType, opts) { + let strXml = ''; + const seriesData = data[0] || { name: 'Series1', labels: [] }; + const seriesName = seriesData.name || 'Series1'; + // Determine the series name column based on chart type and structure + let valuesCol = 'A'; // Default for simple charts (histogram) + const isHierarchical = layoutId === 'treemap' || layoutId === 'sunburst' || + chartType === 'treemap' || chartType === 'sunburst' || + chartType === CHART_TYPE.TREEMAP || chartType === CHART_TYPE.SUNBURST; + if (isHierarchical && seriesData.labels) { + const rawLabels = seriesData.labels || []; + const numLevels = Array.isArray(rawLabels[0]) ? rawLabels.length : 1; + valuesCol = String.fromCharCode(65 + numLevels); // A=65, so +3 levels = D + } + strXml += ``; + strXml += ''; + strXml += ''; + strXml += `Sheet1!$${valuesCol}$1`; + strXml += `${encodeXmlEntities(seriesName)}`; + strXml += ''; + strXml += ''; + // Data labels for treemap/sunburst + if (layoutId === 'treemap' || layoutId === 'sunburst') { + strXml += ''; + strXml += ''; + strXml += ''; + } + strXml += ''; + // Layout properties for histogram + if (layoutId === 'clusteredColumn') { + strXml += ''; + strXml += ''; + strXml += ''; + } + // Layout properties for waterfall (subtotals/totals) + if (layoutId === 'waterfall') { + strXml += ''; + // Add subtotals if provided (0-based indices) + const subtotalIndices = seriesData.subtotalIndices; + if (subtotalIndices && subtotalIndices.length > 0) { + strXml += ''; + subtotalIndices.forEach((idx) => { + strXml += ``; + }); + strXml += ''; + } + strXml += ''; + } + // Layout properties for treemap/sunburst (required for PowerPoint) + if (layoutId === 'treemap' || layoutId === 'sunburst') { + strXml += ''; + strXml += ''; + strXml += ''; + } + // Layout properties for regionMap (Filled Map) + if (layoutId === 'regionMap') { + strXml += ''; + strXml += ''; + strXml += ''; + // Include geoCache if available (required for map to display without internet connection) + if (opts === null || opts === void 0 ? void 0 : opts.geoCache) { + strXml += ''; + strXml += `${opts.geoCache}`; + strXml += ''; + } + strXml += ''; + strXml += ''; + } + strXml += ''; + return strXml; +} +/** + * Generate pareto series (column + line) + */ +function makeChartExSeriesPareto(data, globalId) { + let strXml = ''; + const seriesData = data[0] || { name: 'Series1' }; + const seriesName = seriesData.name || 'Series1'; + // Primary series: clusteredColumn + strXml += ``; + strXml += ''; + strXml += ''; + strXml += `Sheet1!$B$1`; + strXml += `${encodeXmlEntities(seriesName)}`; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + // Secondary series: paretoLine + strXml += ``; + strXml += ''; + strXml += ''; + return strXml; +} +/** + * Generate box and whisker series + */ +function makeChartExSeriesBoxWhisker(data, globalId) { + let strXml = ''; + data.forEach((series, seriesIdx) => { + const seriesName = series.name || `Series${seriesIdx + 1}`; + const colLetter = String.fromCharCode(66 + seriesIdx); // B, C, D, ... + strXml += ``; + strXml += ''; + strXml += ''; + strXml += `Sheet1!$${colLetter}$1`; + strXml += `${encodeXmlEntities(seriesName)}`; + strXml += ''; + strXml += ''; + strXml += ``; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + }); + return strXml; +} +/** + * Generate axes for ChartEx charts + */ +function makeChartExAxes(chartType) { + let strXml = ''; + // Category axis + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + // Primary value axis + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + // Secondary value axis for pareto + if (chartType === 'pareto' || chartType === CHART_TYPE.PARETO) { + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + } + return strXml; +} +/** + * Generate chart style XML for ChartEx charts + * This provides the styling definitions for chart elements + * Uses the complete style definition required by PowerPoint + */ +function makeChartExStyleXml() { + // Complete chart style that PowerPoint expects - includes all required elements + return '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + ''; +} +/** + * Generate chart color style XML for ChartEx charts + * This provides the color palette for the chart + */ +function makeChartExColorsXml() { + let strXml = ''; + strXml += ''; + // Use theme accent colors + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + // Color variations + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + return strXml; +} +/** + * Generate chart style XML for regular charts (bar, line, pie, etc.) + * This provides the styling definitions for chart elements + * Uses style id="201" which is standard for regular charts + */ +function makeChartStyleXml() { + return '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + ''; +} +/** + * Generate chart color style XML for regular charts + * This provides the color palette for the chart + */ +function makeChartColorsXml() { + let strXml = ''; + strXml += ''; + // Use theme accent colors + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + // Color variations + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + return strXml; +} /** * PptxGenJS: Media Methods @@ -5051,6 +6347,77 @@ function getSizeFromImage (inImgUrl: string): { width: number, height: number } /** * PptxGenJS: XML Generation */ +/** + * Calculate font scale for text shrink-to-fit functionality + * PowerPoint requires explicit fontScale value for immediate shrinking + * @param {ISlideObject} slideObject - slide object with text and dimensions + * @return {number} fontScale value (percentage * 1000, e.g., 85000 = 85%) + */ +function calculateFontScale(slideObject) { + var _a, _b, _c; + // Get text content and font size + let textContent = ''; + let fontSize = 18; // PowerPoint default font size in points + if (Array.isArray(slideObject.text)) { + slideObject.text.forEach(textItem => { + var _a; + if (typeof textItem === 'string') { + textContent += textItem; + } + else if (textItem.text) { + textContent += textItem.text; + if ((_a = textItem.options) === null || _a === void 0 ? void 0 : _a.fontSize) { + fontSize = textItem.options.fontSize; + } + } + }); + } + else if (typeof slideObject.text === 'string') { + textContent = slideObject.text; + } + // Get font size from main options if set + if ((_a = slideObject.options) === null || _a === void 0 ? void 0 : _a.fontSize) { + fontSize = slideObject.options.fontSize; + } + // Get box dimensions in EMU (slideObject dimensions are already in EMU after processing) + // Note: w and h could be in inches (number) or percentage (string) + const boxWidth = typeof ((_b = slideObject.options) === null || _b === void 0 ? void 0 : _b.w) === 'number' ? slideObject.options.w : 0; + const boxHeight = typeof ((_c = slideObject.options) === null || _c === void 0 ? void 0 : _c.h) === 'number' ? slideObject.options.h : 0; + // If we don't have enough info, return a reasonable default (75%) + if (!textContent || boxWidth === 0 || boxHeight === 0) { + return 75000; + } + // Convert to points if dimensions are in inches (1 inch = 72 points) + // Note: At this point, w/h are still in inches before EMU conversion + const boxWidthPts = boxWidth * 72; + const boxHeightPts = boxHeight * 72; + // Account for default margins (~0.1 inch on each side = ~7pt each) + const marginPts = 14; // ~7pt * 2 sides + const usableWidth = Math.max(boxWidthPts - marginPts, 10); + const usableHeight = Math.max(boxHeightPts - marginPts, 10); + // Estimate text dimensions + // Average character width is roughly 0.5-0.6 of font size for most fonts + const avgCharWidth = fontSize * 0.55; + const lineHeight = fontSize * 1.2; // Typical line height is 120% of font size + // Calculate how many characters fit per line + const charsPerLine = Math.max(Math.floor(usableWidth / avgCharWidth), 1); + // Calculate lines needed (accounting for word wrap) + const totalChars = textContent.length; + const linesNeeded = Math.ceil(totalChars / charsPerLine); + // Calculate height needed for all lines + const heightNeeded = linesNeeded * lineHeight; + // If text fits, use a moderate scale to still trigger shrink mode + if (heightNeeded <= usableHeight) { + return 95000; // 95% - text fits but we set slightly less to enable shrink mode + } + // Calculate scale needed to fit + const scaleFactor = usableHeight / heightNeeded; + // Convert to OOXML format (percentage * 1000) and clamp between 25% and 100% + // We use Math.sqrt to be less aggressive (text width also shrinks when font shrinks) + const adjustedScale = Math.sqrt(scaleFactor); + const fontScale = Math.max(25000, Math.min(100000, Math.round(adjustedScale * 100000))); + return fontScale; +} const ImageSizingXml = { cover: function (imgSize, boxDim) { const imgRatio = imgSize.h / imgSize.w; @@ -5084,6 +6451,158 @@ const ImageSizingXml = { return ``; }, }; +/** + * Generate XML for a child shape inside a group + * @param {ISlideObject} child - child slide object + * @param {number} childIdx - index of child in group + * @param {PresSlide|SlideLayout} slide - parent slide for layout info + * @return {string} XML string for the child element + */ +function genGroupChildXml(child, childIdx, slide) { + var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u; + let strXml = ''; + // Get child position and size - use _emu if available for precision + // Cast to any for _emu since it's passed through from converter but not in official interface + const childOpts = child.options; + const childX = ((_a = childOpts === null || childOpts === void 0 ? void 0 : childOpts._emu) === null || _a === void 0 ? void 0 : _a.x) !== undefined + ? childOpts._emu.x + : (typeof ((_b = child.options) === null || _b === void 0 ? void 0 : _b.x) === 'number' ? getSmartParseNumber(child.options.x, 'X', slide._presLayout) : 0); + const childY = ((_c = childOpts === null || childOpts === void 0 ? void 0 : childOpts._emu) === null || _c === void 0 ? void 0 : _c.y) !== undefined + ? childOpts._emu.y + : (typeof ((_d = child.options) === null || _d === void 0 ? void 0 : _d.y) === 'number' ? getSmartParseNumber(child.options.y, 'Y', slide._presLayout) : 0); + const childCx = ((_e = childOpts === null || childOpts === void 0 ? void 0 : childOpts._emu) === null || _e === void 0 ? void 0 : _e.cx) !== undefined + ? childOpts._emu.cx + : (typeof ((_f = child.options) === null || _f === void 0 ? void 0 : _f.w) === 'number' ? getSmartParseNumber(child.options.w, 'X', slide._presLayout) : 0); + const childCy = ((_g = childOpts === null || childOpts === void 0 ? void 0 : childOpts._emu) === null || _g === void 0 ? void 0 : _g.cy) !== undefined + ? childOpts._emu.cy + : (typeof ((_h = child.options) === null || _h === void 0 ? void 0 : _h.h) === 'number' ? getSmartParseNumber(child.options.h, 'Y', slide._presLayout) : 0); + // Build location attributes for rotation/flip + let locationAttr = ''; + if ((_j = child.options) === null || _j === void 0 ? void 0 : _j.rotate) + locationAttr += ` rot="${convertRotationDegrees(child.options.rotate)}"`; + if ((_k = child.options) === null || _k === void 0 ? void 0 : _k.flipH) + locationAttr += ' flipH="1"'; + if ((_l = child.options) === null || _l === void 0 ? void 0 : _l.flipV) + locationAttr += ' flipV="1"'; + switch (child._type) { + case SLIDE_OBJECT_TYPES.text: + // Generate shape XML for text/shape child + strXml += ''; + strXml += ''; + strXml += ``; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ``; + strXml += ``; + strXml += ``; + strXml += ''; + // Preset geometry + const shapeName = child.shape || 'rect'; + if (shapeName === 'custGeom' && ((_o = child.options) === null || _o === void 0 ? void 0 : _o.points)) { + strXml += ''; + strXml += ''; + // For paths with zero width or height (lines), only include non-zero dimensions + // PowerPoint requires omitting w="0" or h="0" for proper line rendering + const pathAttrs = []; + if (childCx > 0) + pathAttrs.push(`w="${childCx}"`); + if (childCy > 0) + pathAttrs.push(`h="${childCy}"`); + strXml += ` 0 ? ' ' + pathAttrs.join(' ') : ''}>`; + child.options.points.forEach((point, i) => { + if ('curve' in point) { + switch (point.curve.type) { + case 'arc': + strXml += ``; + break; + case 'cubic': + strXml += ``; + break; + case 'quadratic': + strXml += ``; + break; + } + } + else if ('close' in point) { + strXml += ''; + } + else if (point.moveTo || i === 0) { + strXml += ``; + } + else { + strXml += ``; + } + }); + strXml += ''; + } + else { + strXml += ``; + // Handle generic shapeAdjustments (raw values for any shape type) + if ((_p = child.options) === null || _p === void 0 ? void 0 : _p.shapeAdjustments) { + for (const [name, value] of Object.entries(child.options.shapeAdjustments)) { + strXml += ``; + } + } + else if ((_q = child.options) === null || _q === void 0 ? void 0 : _q.rectRadius) { + // Handle rectRadius for roundRect + strXml += ``; + } + else if ((_r = child.options) === null || _r === void 0 ? void 0 : _r.angleRange) { + // Handle angleRange for arc shapes + for (let i = 0; i < 2; i++) { + const angle = child.options.angleRange[i]; + strXml += ``; + } + } + strXml += ''; + } + // Fill + if ((_s = child.options) === null || _s === void 0 ? void 0 : _s.fill) { + strXml += genXmlColorSelection(child.options.fill); + } + else { + strXml += ''; + } + // Line/border + if ((_t = child.options) === null || _t === void 0 ? void 0 : _t.line) { + strXml += child.options.line.width ? `` : ''; + if (child.options.line.color) + strXml += genXmlColorSelection(child.options.line); + if (child.options.line.dashType) + strXml += ``; + strXml += ''; + } + strXml += ''; + // Text body + strXml += genXmlTextBody(child); + strXml += ''; + break; + case SLIDE_OBJECT_TYPES.image: + // Generate picture XML for image child + strXml += ''; + strXml += ''; + strXml += ``; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ``; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ``; + strXml += ``; + strXml += ``; + strXml += ''; + strXml += ''; + strXml += ''; + strXml += ''; + break; + } + return strXml; +} /** * Transforms a slide or slideLayout to resulting XML string - Creates `ppt/slide*.xml` * @param {PresSlide|SlideLayout} slideObject - slide object created within createSlideObject @@ -5093,6 +6612,8 @@ function slideObjectToXml(slide) { var _a; let strSlideXml = slide._name ? '' : ''; let intTableNum = 1; + // Determine if this is a layout (SlideLayout doesn't have _slideId which PresSlide has) + const isLayoutPlaceholder = !('_slideId' in slide); // STEP 1: Add background color/image (ensure only a single `` tag is created, ex: when master-baskground has both `color` and `path`) if (slide._bkgdImgRid) { strSlideXml += ``; @@ -5111,7 +6632,7 @@ function slideObjectToXml(slide) { strSlideXml += ''; // STEP 3: Loop over all Slide.data objects and add them to this slide slide._slideObjects.forEach((slideItemObj, idx) => { - var _a, _b, _c, _d, _e, _f, _g, _h; + var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k; let x = 0; let y = 0; let cx = getSmartParseNumber('75%', 'X', slide._presLayout); @@ -5134,6 +6655,18 @@ function slideObjectToXml(slide) { } // A: Set option vars slideItemObj.options = slideItemObj.options || {}; + // If using a placeholder, first inherit its position as defaults + if (placeholderObj) { + if (placeholderObj.options.x || placeholderObj.options.x === 0) + x = getSmartParseNumber(placeholderObj.options.x, 'X', slide._presLayout); + if (placeholderObj.options.y || placeholderObj.options.y === 0) + y = getSmartParseNumber(placeholderObj.options.y, 'Y', slide._presLayout); + if (placeholderObj.options.w || placeholderObj.options.w === 0) + cx = getSmartParseNumber(placeholderObj.options.w, 'X', slide._presLayout); + if (placeholderObj.options.h || placeholderObj.options.h === 0) + cy = getSmartParseNumber(placeholderObj.options.h, 'Y', slide._presLayout); + } + // Then override with slide item's explicit position/size if provided if (typeof slideItemObj.options.x !== 'undefined') x = getSmartParseNumber(slideItemObj.options.x, 'X', slide._presLayout); if (typeof slideItemObj.options.y !== 'undefined') @@ -5145,17 +6678,6 @@ function slideObjectToXml(slide) { // Set w/h now that smart parse is done let imgWidth = cx; let imgHeight = cy; - // If using a placeholder then inherit it's position - if (placeholderObj) { - if (placeholderObj.options.x || placeholderObj.options.x === 0) - x = getSmartParseNumber(placeholderObj.options.x, 'X', slide._presLayout); - if (placeholderObj.options.y || placeholderObj.options.y === 0) - y = getSmartParseNumber(placeholderObj.options.y, 'Y', slide._presLayout); - if (placeholderObj.options.w || placeholderObj.options.w === 0) - cx = getSmartParseNumber(placeholderObj.options.w, 'X', slide._presLayout); - if (placeholderObj.options.h || placeholderObj.options.h === 0) - cy = getSmartParseNumber(placeholderObj.options.h, 'Y', slide._presLayout); - } // if (slideItemObj.options.flipH) locationAttr += ' flipH="1"'; @@ -5185,11 +6707,24 @@ function slideObjectToXml(slide) { ' ' + ''; strXml += ``; - strXml += ''; - // + ' '; - // TODO: Support banded rows, first/last row, etc. - // NOTE: Banding, etc. only shows when using a table style! (or set alt row color if banding) - // + // Build table properties with style support + const tblPrAttrs = []; + if (objTabOpts.firstRow) + tblPrAttrs.push('firstRow="1"'); + if (objTabOpts.lastRow) + tblPrAttrs.push('lastRow="1"'); + if (objTabOpts.firstCol) + tblPrAttrs.push('firstCol="1"'); + if (objTabOpts.lastCol) + tblPrAttrs.push('lastCol="1"'); + if (objTabOpts.bandRow) + tblPrAttrs.push('bandRow="1"'); + if (objTabOpts.bandCol) + tblPrAttrs.push('bandCol="1"'); + const tblPrAttrStr = tblPrAttrs.length > 0 ? ' ' + tblPrAttrs.join(' ') : ''; + const tableStyleIdXml = objTabOpts.tableStyleId ? `${objTabOpts.tableStyleId}` : ''; + const tblPrContent = tableStyleIdXml ? `${tableStyleIdXml}` : ``; + strXml += `${tblPrContent}`; // STEP 2: Set column widths // Evenly distribute cols/rows across size provided when applicable (calc them if only overall dimensions were provided) // A: Col widths provided? @@ -5338,6 +6873,8 @@ function slideObjectToXml(slide) { // FIXME: 20200525: ^^^ // // 5: Borders: Add any borders + // NOTE: When tableStyleId is set, skip outputting noFill borders - let table style provide borders + const hasTableStyle = !!objTabOpts.tableStyleId; if (cellOpts.border && Array.isArray(cellOpts.border)) { // NOTE: *** IMPORTANT! *** LRTB order matters! (Reorder a line below to watch the borders go wonky in MS-PPT-2013!!) [ @@ -5352,7 +6889,8 @@ function slideObjectToXml(slide) { strXml += ``; strXml += ``; } - else { + else if (!hasTableStyle) { + // Only output noFill borders if not using a table style strXml += ``; } }); @@ -5408,8 +6946,22 @@ function slideObjectToXml(slide) { } // strSlideXml += ''; - strSlideXml += '' : '/>'); - strSlideXml += `${slideItemObj._type === 'placeholder' ? genXmlPlaceholder(slideItemObj) : genXmlPlaceholder(placeholderObj)}`; + // NOTE: txBox="1" indicates this is a text box, which helps PowerPoint apply text-specific features + // Placeholder text shapes need txBox="1" and a:spLocks noGrp="1" to match PowerPoint's expectations + const isPlaceholderText = placeholderObj || slideItemObj._type === 'placeholder'; + const needsTxBox = ((_e = slideItemObj.options) === null || _e === void 0 ? void 0 : _e.isTextBox) || ((_f = slideItemObj.options) === null || _f === void 0 ? void 0 : _f.fit) === 'shrink' || ((_g = slideItemObj.options) === null || _g === void 0 ? void 0 : _g.shrinkText) || isPlaceholderText; + if (needsTxBox) { + strSlideXml += ''; + if (isPlaceholderText) { + strSlideXml += ''; + } + strSlideXml += ''; + } + else { + strSlideXml += ''; + } + // When using a layout placeholder (placeholderObj), pass slideItemObj.text to check for actual slide content + strSlideXml += `${slideItemObj._type === 'placeholder' ? genXmlPlaceholder(slideItemObj, isLayoutPlaceholder) : genXmlPlaceholder(placeholderObj, isLayoutPlaceholder, slideItemObj.text)}`; strSlideXml += ''; strSlideXml += ``; strSlideXml += ``; @@ -5423,8 +6975,15 @@ function slideObjectToXml(slide) { strSlideXml += ''; strSlideXml += ''; strSlideXml += ''; - strSlideXml += ``; - (_f = slideItemObj.options.points) === null || _f === void 0 ? void 0 : _f.forEach((point, i) => { + // For paths with zero width or height (lines), only include non-zero dimensions + // PowerPoint requires omitting w="0" or h="0" for proper line rendering + const pathAttrs = []; + if (cx > 0) + pathAttrs.push(`w="${cx}"`); + if (cy > 0) + pathAttrs.push(`h="${cy}"`); + strSlideXml += ` 0 ? ' ' + pathAttrs.join(' ') : ''}>`; + (_h = slideItemObj.options.points) === null || _h === void 0 ? void 0 : _h.forEach((point, i) => { if ('curve' in point) { switch (point.curve.type) { case 'arc': @@ -5459,9 +7018,20 @@ function slideObjectToXml(slide) { strSlideXml += ''; strSlideXml += ''; } + else if (slideItemObj.options.placeholder && slideItemObj._type !== SLIDE_OBJECT_TYPES.placeholder) { + // Slide content targeting a placeholder - output for text placeholders + // PowerPoint requires this for proper rendering, even though the shape inherits from layout + strSlideXml += ''; + } else { strSlideXml += ''; - if (slideItemObj.options.rectRadius) { + if (slideItemObj.options.shapeAdjustments) { + // Generic shape adjustments - pass raw values directly + for (const [name, value] of Object.entries(slideItemObj.options.shapeAdjustments)) { + strSlideXml += ``; + } + } + else if (slideItemObj.options.rectRadius) { strSlideXml += ``; } else if (slideItemObj.options.angleRange) { @@ -5476,9 +7046,24 @@ function slideObjectToXml(slide) { strSlideXml += ''; } // Option: FILL - strSlideXml += slideItemObj.options.fill ? genXmlColorSelection(slideItemObj.options.fill) : ''; + // For placeholder content (options.placeholder is set), skip fill to inherit from layout + if (slideItemObj.options.fill) { + strSlideXml += genXmlColorSelection(slideItemObj.options.fill); + } + else if (!slideItemObj.options.placeholder) { + // Only add noFill for non-placeholder shapes + strSlideXml += ''; + } + // When placeholder is set and no fill, we don't output anything - inherit from layout // shape Type: LINE: line color - if (slideItemObj.options.line) { + // Only output if there's actual line styling to apply + // Skip if line is empty object, or type is 'none', or for placeholder content (inherit from layout) + const hasLineStyle = slideItemObj.options.line && + (slideItemObj.options.line.color || slideItemObj.options.line.width || + slideItemObj.options.line.dashType || slideItemObj.options.line.beginArrowType || + slideItemObj.options.line.endArrowType) && + slideItemObj.options.line.type !== 'none'; + if (hasLineStyle) { strSlideXml += slideItemObj.options.line.width ? `` : ''; if (slideItemObj.options.line.color) strSlideXml += genXmlColorSelection(slideItemObj.options.line); @@ -5527,15 +7112,15 @@ function slideObjectToXml(slide) { strSlideXml += ''; strSlideXml += ' '; strSlideXml += ``; - if ((_g = slideItemObj.hyperlink) === null || _g === void 0 ? void 0 : _g.url) { + if ((_j = slideItemObj.hyperlink) === null || _j === void 0 ? void 0 : _j.url) { strSlideXml += ``; } - if ((_h = slideItemObj.hyperlink) === null || _h === void 0 ? void 0 : _h.slide) { + if ((_k = slideItemObj.hyperlink) === null || _k === void 0 ? void 0 : _k.slide) { strSlideXml += ``; } strSlideXml += ' '; strSlideXml += ' '; - strSlideXml += ' ' + genXmlPlaceholder(placeholderObj) + ''; + strSlideXml += ' ' + genXmlPlaceholder(placeholderObj, isLayoutPlaceholder) + ''; strSlideXml += ' '; strSlideXml += ''; // NOTE: This works for both cases: either `path` or `data` contains the SVG @@ -5635,19 +7220,78 @@ function slideObjectToXml(slide) { } break; case SLIDE_OBJECT_TYPES.chart: - strSlideXml += ''; - strSlideXml += ' '; - strSlideXml += ` `; - strSlideXml += ' '; - strSlideXml += ` ${genXmlPlaceholder(placeholderObj)}`; - strSlideXml += ' '; - strSlideXml += ` `; - strSlideXml += ' '; - strSlideXml += ' '; - strSlideXml += ` `; - strSlideXml += ' '; - strSlideXml += ' '; - strSlideXml += ''; + if (slideItemObj.isChartEx) { + // ChartEx uses different namespace and wrapper structure + strSlideXml += ''; + strSlideXml += ''; + strSlideXml += ''; + strSlideXml += ' '; + strSlideXml += ` `; + strSlideXml += ' '; + strSlideXml += ` ${genXmlPlaceholder(placeholderObj, isLayoutPlaceholder)}`; + strSlideXml += ' '; + strSlideXml += ` `; + strSlideXml += ' '; + strSlideXml += ' '; + strSlideXml += ` `; + strSlideXml += ' '; + strSlideXml += ' '; + strSlideXml += ''; + strSlideXml += ''; + strSlideXml += ''; + strSlideXml += ''; + } + else { + // Regular chart + strSlideXml += ''; + strSlideXml += ' '; + strSlideXml += ` `; + strSlideXml += ' '; + strSlideXml += ` ${genXmlPlaceholder(placeholderObj, isLayoutPlaceholder)}`; + strSlideXml += ' '; + strSlideXml += ` `; + strSlideXml += ' '; + strSlideXml += ' '; + strSlideXml += ` `; + strSlideXml += ' '; + strSlideXml += ' '; + strSlideXml += ''; + } + break; + case SLIDE_OBJECT_TYPES.group: + // Generate group shape XML + strSlideXml += ''; + // Non-visual properties for group + strSlideXml += ''; + strSlideXml += ``; + strSlideXml += ''; + strSlideXml += ''; + strSlideXml += ''; + // Group shape properties with transform + const groupProps = slideItemObj.options._groupProps || {}; + const grpRotation = groupProps.rotate ? ` rot="${convertRotationDegrees(groupProps.rotate)}"` : ''; + const grpFlipH = groupProps.flipH ? ' flipH="1"' : ''; + const grpFlipV = groupProps.flipV ? ' flipV="1"' : ''; + strSlideXml += ''; + strSlideXml += ``; + strSlideXml += ``; + strSlideXml += ``; + // Child offset and extent - use stored values or fall back to group position/size + const chOffX = groupProps.chOffX !== undefined ? groupProps.chOffX : x; + const chOffY = groupProps.chOffY !== undefined ? groupProps.chOffY : y; + const chExtCx = groupProps.chExtCx !== undefined ? groupProps.chExtCx : cx; + const chExtCy = groupProps.chExtCy !== undefined ? groupProps.chExtCy : cy; + strSlideXml += ``; + strSlideXml += ``; + strSlideXml += ''; + strSlideXml += ''; + // Generate child shapes + if (slideItemObj.groupChildren && Array.isArray(slideItemObj.groupChildren)) { + slideItemObj.groupChildren.forEach((child, childIdx) => { + strSlideXml += genGroupChildXml(child, childIdx, slide); + }); + } + strSlideXml += ''; break; default: strSlideXml += ''; @@ -5748,7 +7392,11 @@ function slideObjectRelationsToXml(slide, defaultRels) { }); (slide._relsChart || []).forEach((rel) => { lastRid = Math.max(lastRid, rel.rId); - strXml += ``; + // Use different relationship type for ChartEx charts + const relType = rel.isChartEx + ? 'http://schemas.microsoft.com/office/2014/relationships/chartEx' + : 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart'; + strXml += ``; }); (slide._relsMedia || []).forEach((rel) => { const relRid = rel.rId.toString(); @@ -5887,11 +7535,13 @@ function genXmlParagraphProperties(textObj, isDefault) { paragraphPropXml += ` marL="${textObj.options.indentLevel && textObj.options.indentLevel > 0 ? bulletMarL + bulletMarL * textObj.options.indentLevel : bulletMarL}" indent="-${bulletMarL}"`; strXmlBullet = ``; } - else if (!textObj.options.bullet) { - // We only add this when the user explicitely asks for no bullet, otherwise, it can override the master defaults! + else if (textObj.options.bullet === false) { + // We only add this when the user explicitly asks for no bullet (bullet: false) + // When bullet is undefined, we let it inherit from master/layout defaults paragraphPropXml += ' indent="0" marL="0"'; // FIX: ISSUE#589 - specify zero indent and marL or default will be hanging paragraph strXmlBullet = ''; } + // When bullet is undefined, we don't add anything - let it inherit from the placeholder/layout // OPTION: tabStops if (textObj.options.tabStops && Array.isArray(textObj.options.tabStops)) { const tabStopsXml = textObj.options.tabStops.map(stop => ``).join(''); @@ -6033,7 +7683,9 @@ function genXmlBodyProperties(slideObject) { if (slideObject && slideObject._type === SLIDE_OBJECT_TYPES.text && slideObject.options._bodyProp) { // PPT-2019 EX: // A: Enable or disable textwrapping none or square - bodyProperties += slideObject.options._bodyProp.wrap ? ' wrap="square"' : ' wrap="none"'; + // NOTE: wrap="square" is REQUIRED for normAutofit (shrink) to work + const needsWrapSquare = slideObject.options.fit === 'shrink' || slideObject.options.shrinkText; + bodyProperties += (slideObject.options._bodyProp.wrap || needsWrapSquare) ? ' wrap="square"' : ' wrap="none"'; // B: Textbox margins [padding] if (slideObject.options._bodyProp.lIns || slideObject.options._bodyProp.lIns === 0) bodyProperties += ` lIns="${slideObject.options._bodyProp.lIns}"`; @@ -6061,17 +7713,22 @@ function genXmlBodyProperties(slideObject) { // NOTE: Use of '' instead of '' causes issues in PPT-2013! if (slideObject.options.fit === 'none') bodyProperties += ''; - // NOTE: Shrink does not work automatically - PowerPoint calculates the `fontScale` value dynamically upon resize - // else if (slideObject.options.fit === 'shrink') bodyProperties += '' // MS-PPT > Format shape > Text Options: "Shrink text on overflow" - else if (slideObject.options.fit === 'shrink') - bodyProperties += ''; + else if (slideObject.options.fit === 'shrink') { + // PowerPoint requires explicit fontScale for immediate shrinking (without user interaction) + // Without fontScale, PowerPoint defaults to 100% (no shrink) until user edits the shape + const fontScale = calculateFontScale(slideObject); + const lnSpcReduction = 10000; // 10% line spacing reduction + bodyProperties += ``; + } else if (slideObject.options.fit === 'resize') bodyProperties += ''; } // // DEPRECATED: below (@deprecated v3.3.0) - if (slideObject.options.shrinkText) - bodyProperties += ''; // MS-PPT > Format shape > Text Options: "Shrink text on overflow" + if (slideObject.options.shrinkText) { + const fontScale = calculateFontScale(slideObject); + bodyProperties += ``; + } /* DEPRECATED: below (@deprecated v3.3.0) * MS-PPT > Format shape > Text Options: "Resize shape to fit text" [spAutoFit] * NOTE: Use of '' in lieu of '' below causes issues in PPT-2013 @@ -6235,8 +7892,13 @@ function genXmlTextBody(slideObj) { textObj.options.indentLevel = textObj.options.indentLevel || opts.indentLevel; textObj.options.paraSpaceBefore = textObj.options.paraSpaceBefore || opts.paraSpaceBefore; textObj.options.paraSpaceAfter = textObj.options.paraSpaceAfter || opts.paraSpaceAfter; - paragraphPropXml = genXmlParagraphProperties(textObj, false); - strSlideXml += paragraphPropXml.replace('', ''); // IMPORTANT: Empty "pPr" blocks will generate needs-repair/corrupt msg + // IMPORTANT: Only add paragraph properties () for the FIRST text run in a paragraph. + // In OOXML, should only appear once per , right after the opening tag. + // Adding it for every text run causes rendering issues (like unwanted line breaks after bold text). + if (idx === 0) { + paragraphPropXml = genXmlParagraphProperties(textObj, false); + strSlideXml += paragraphPropXml.replace('', ''); // IMPORTANT: Empty "pPr" blocks will generate needs-repair/corrupt msg + } // C: Inherit any main options (color, fontSize, etc.) // NOTE: We only pass the text.options to genXmlTextRun (not the Slide.options), // so the run building function cant just fallback to Slide.color, therefore, we need to do that here before passing options below. @@ -6301,18 +7963,35 @@ function genXmlTextBody(slideObj) { * @param {ISlideObject} placeholderObj * @returns XML */ -function genXmlPlaceholder(placeholderObj) { +function genXmlPlaceholder(placeholderObj, isLayoutPlaceholder = false, slideText) { var _a, _b; if (!placeholderObj) return ''; const placeholderIdx = ((_a = placeholderObj.options) === null || _a === void 0 ? void 0 : _a._placeholderIdx) ? placeholderObj.options._placeholderIdx : ''; const placeholderTyp = ((_b = placeholderObj.options) === null || _b === void 0 ? void 0 : _b._placeholderType) ? placeholderObj.options._placeholderType : ''; - const placeholderType = placeholderTyp && PLACEHOLDER_TYPES[placeholderTyp] ? (PLACEHOLDER_TYPES[placeholderTyp]).toString() : ''; - return ` 0 ? ' hasCustomPrompt="1"' : ''} - />`; + // Map the placeholder type to the PPTX value (e.g., 'image' → 'pic', 'content' → '') + // Note: PLACEHOLDER_TYPES['content'] = '' means content placeholders have no type attribute + const mappedType = placeholderTyp && placeholderTyp in PLACEHOLDER_TYPES ? PLACEHOLDER_TYPES[placeholderTyp] : ''; + const placeholderType = mappedType !== undefined ? mappedType.toString() : ''; + // Check if there's actual non-empty text content (not just empty text runs) + // hasCustomPrompt="1" tells PowerPoint to NOT show default placeholder text + // We only want this when: + // 1. There's actual custom text content, AND + // 2. This is NOT a layout placeholder (layouts should never have hasCustomPrompt) + // Layout placeholders have text like "Click to edit Master text styles" which is the prompt template + // When slideText is provided (for text referencing a layout placeholder), use that instead of placeholderObj.text + const textToCheck = slideText !== undefined ? slideText : placeholderObj.text; + const hasActualText = !isLayoutPlaceholder && textToCheck && textToCheck.length > 0 && + textToCheck.some(item => item.text && item.text.trim().length > 0); + // Build attributes without whitespace + const attrs = []; + if (placeholderIdx) + attrs.push(`idx="${placeholderIdx.toString()}"`); + if (placeholderType) + attrs.push(`type="${placeholderType}"`); + if (hasActualText) + attrs.push('hasCustomPrompt="1"'); + return ` 0 ? ' ' + attrs.join(' ') : ''}/>`; } // XML-GEN: First 6 functions create the base /ppt files /** @@ -6322,7 +8001,7 @@ function genXmlPlaceholder(placeholderObj) { * @param {PresSlide} masterSlide - master slide * @returns XML */ -function makeXmlContTypes(slides, slideLayouts, masterSlide) { +function makeXmlContTypes(slides, slideLayouts, masterSlide, embeddedFonts) { let strXml = '' + CRLF; strXml += ''; strXml += ''; @@ -6335,6 +8014,10 @@ function makeXmlContTypes(slides, slideLayouts, masterSlide) { strXml += ''; strXml += ''; // NOTE: Hard-Code this extension as it wont be created in loop below (as extn !== type) strXml += ''; // NOTE: Hard-Code this extension as it wont be created in loop below (as extn !== type) + // Add embedded font file type if any fonts are embedded + if (embeddedFonts && embeddedFonts.length > 0) { + strXml += ''; + } slides.forEach(slide => { (slide._relsMedia || []).forEach(rel => { if (rel.type !== 'image' && rel.type !== 'online' && rel.type !== 'chart' && rel.extn !== 'm4v' && !strXml.includes(rel.type)) { @@ -6347,12 +8030,23 @@ function makeXmlContTypes(slides, slideLayouts, masterSlide) { // STEP 2: Add presentation and slide master(s)/slide(s) strXml += ''; strXml += ''; + // Only one slideMaster is created by PptxGenJS + strXml += ''; slides.forEach((slide, idx) => { - strXml += ``; strXml += ``; // Add charts if any slide._relsChart.forEach(rel => { - strXml += ``; + // Convert relative path to absolute path for Content_Types.xml + // rel.Target is like "../charts/chart1.xml" or "../charts/chartEx32.xml" + const absolutePath = rel.Target.replace('../', '/ppt/'); + // Use different content type for ChartEx files + const contentType = rel.isChartEx + ? 'application/vnd.ms-office.chartex+xml' + : 'application/vnd.openxmlformats-officedocument.drawingml.chart+xml'; + strXml += ``; + // Add chart style and colors file content types + strXml += ``; + strXml += ``; }); }); // STEP 3: Core PPT @@ -6364,7 +8058,11 @@ function makeXmlContTypes(slides, slideLayouts, masterSlide) { slideLayouts.forEach((layout, idx) => { strXml += ``; (layout._relsChart || []).forEach(rel => { - strXml += ' '; + const absolutePath = rel.Target.replace('../', '/ppt/'); + const contentType = rel.isChartEx + ? 'application/vnd.ms-office.chartex+xml' + : 'application/vnd.openxmlformats-officedocument.drawingml.chart+xml'; + strXml += ` `; }); }); // STEP 5: Add notes slide(s) @@ -6373,7 +8071,11 @@ function makeXmlContTypes(slides, slideLayouts, masterSlide) { }); // STEP 6: Add rels masterSlide._relsChart.forEach(rel => { - strXml += ' '; + const absolutePath = rel.Target.replace('../', '/ppt/'); + const contentType = rel.isChartEx + ? 'application/vnd.ms-office.chartex+xml' + : 'application/vnd.openxmlformats-officedocument.drawingml.chart+xml'; + strXml += ` `; }); masterSlide._relsMedia.forEach(rel => { if (rel.type !== 'image' && rel.type !== 'online' && rel.type !== 'chart' && rel.extn !== 'm4v' && !strXml.includes(rel.type)) { @@ -6463,9 +8165,10 @@ function makeXmlCore(title, subject, author, revision) { /** * Creates `ppt/_rels/presentation.xml.rels` * @param {PresSlide[]} slides - Presenation Slides + * @param {EmbeddedFont[]} embeddedFonts - Embedded fonts (optional) * @returns XML */ -function makeXmlPresentationRels(slides) { +function makeXmlPresentationRels(slides, embeddedFonts) { let intRelNum = 1; let strXml = '' + CRLF; strXml += ''; @@ -6479,8 +8182,28 @@ function makeXmlPresentationRels(slides) { `` + `` + `` + - `` + - ''; + ``; + // Add embedded font relationships + let fontRelNum = intRelNum + 5; + if (embeddedFonts && embeddedFonts.length > 0) { + embeddedFonts.forEach(font => { + // Create safe filename from font name (remove spaces, etc.) + const safeFileName = font.fontName.replace(/\s+/g, ''); + if (font.regular) { + strXml += ``; + } + if (font.bold) { + strXml += ``; + } + if (font.italic) { + strXml += ``; + } + if (font.boldItalic) { + strXml += ``; + } + }); + } + strXml += ''; return strXml; } // XML-GEN: Functions that run 1-N times (once for each Slide) @@ -6673,13 +8396,36 @@ function getLayoutIdxForSlide(slides, slideLayouts, slideNumber) { // XML-GEN: Last 5 functions create root /ppt files /** * Creates `ppt/theme/theme1.xml` + * Supports custom theme colors via pres.theme.colorScheme * @return {string} XML */ function makeXmlTheme(pres) { - var _a, _b, _c, _d; + var _a, _b, _c, _d, _e; + // Debug: log the entire theme object const majorFont = ((_a = pres.theme) === null || _a === void 0 ? void 0 : _a.headFontFace) ? `` : ''; const minorFont = ((_c = pres.theme) === null || _c === void 0 ? void 0 : _c.bodyFontFace) ? `` : ''; - return `${majorFont}${minorFont}`; + // Build color scheme with custom colors or defaults + const cs = ((_e = pres.theme) === null || _e === void 0 ? void 0 : _e.colorScheme) || {}; + // dk1 and lt1 use system colors by default, but can be overridden with srgbClr + const dk1Xml = cs.dk1 + ? `` + : ''; + const lt1Xml = cs.lt1 + ? `` + : ''; + // Other colors use srgbClr + const dk2Xml = ``; + const lt2Xml = ``; + const accent1Xml = ``; + const accent2Xml = ``; + const accent3Xml = ``; + const accent4Xml = ``; + const accent5Xml = ``; + const accent6Xml = ``; + const hlinkXml = ``; + const folHlinkXml = ``; + const colorSchemeXml = `${dk1Xml}${lt1Xml}${dk2Xml}${lt2Xml}${accent1Xml}${accent2Xml}${accent3Xml}${accent4Xml}${accent5Xml}${accent6Xml}${hlinkXml}${folHlinkXml}`; + return `${colorSchemeXml}${majorFont}${minorFont}`; } /** * Create presentation file (`ppt/presentation.xml`) @@ -6689,9 +8435,11 @@ function makeXmlTheme(pres) { * @return {string} XML */ function makeXmlPresentation(pres) { + // Add embedTrueTypeFonts="1" if embedded fonts are present + const embedFontsAttr = pres.embeddedFonts && pres.embeddedFonts.length > 0 ? 'embedTrueTypeFonts="1" ' : ''; let strXml = `${CRLF}` + '`; + `xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main" ${pres.rtlMode ? 'rtl="1"' : ''} ${embedFontsAttr}saveSubsetFonts="1" autoCompressPictures="0">`; // STEP 1: Add slide master (SPEC: tag 1 under ) strXml += ''; // STEP 2: Add all Slides (SPEC: tag 3 under ) @@ -6704,9 +8452,34 @@ function makeXmlPresentation(pres) { // IMPORTANT: Placing this before `` causes warning in modern powerpoint! // IMPORTANT: Presentations open without warning Without this line, however, the pres isnt preview in Finder anymore or viewable in iOS! strXml += ``; - // STEP 4: Add sizes + // STEP 4: Add sizes (must come before embeddedFontLst per ECMA-376 spec) strXml += ``; strXml += ``; + // STEP 4.5: Add embedded fonts list (if any) - must come after notesSz per ECMA-376 spec + if (pres.embeddedFonts && pres.embeddedFonts.length > 0) { + // Calculate starting rId for fonts (after slides, notesMaster, presProps, viewProps, theme, tableStyles) + // rId1 = slideMaster, rId2..N+1 = slides, rIdN+2 = notesMaster, rIdN+3 = presProps, rIdN+4 = viewProps, rIdN+5 = theme, rIdN+6 = tableStyles + // Fonts start at rId(slides.length + 7) + let fontRelId = pres.slides.length + 7; + strXml += ''; + pres.embeddedFonts.forEach(font => { + strXml += ``; + if (font.regular) { + strXml += ``; + } + if (font.bold) { + strXml += ``; + } + if (font.italic) { + strXml += ``; + } + if (font.boldItalic) { + strXml += ``; + } + strXml += ''; + }); + strXml += ''; + } // STEP 5: Add text styles strXml += ''; for (let idy = 1; idy < 10; idy++) { @@ -6743,9 +8516,17 @@ function makeXmlPresProps() { /** * Create `ppt/tableStyles.xml` * @see: http://openxmldeveloper.org/discussions/formats/f/13/p/2398/8107.aspx + * @param {string} [customXml] - Custom table styles XML content (without XML declaration) * @return {string} XML */ -function makeXmlTableStyles() { +function makeXmlTableStyles(customXml) { + if (customXml) { + // Use custom table styles if provided + if (customXml.includes('${CRLF}${customXml}`; + } return `${CRLF}`; } /** @@ -6847,6 +8628,18 @@ class PptxGenJS { get rtlMode() { return this._rtlMode; } + get embeddedFonts() { + return this._embeddedFonts; + } + set embeddedFonts(value) { + this._embeddedFonts = value; + } + get tableStylesXml() { + return this._tableStylesXml; + } + set tableStylesXml(value) { + this._tableStylesXml = value; + } get masterSlide() { return this._masterSlide; } @@ -6894,6 +8687,8 @@ class PptxGenJS { * PptxGenJS Library Version */ this._version = VERSION; + /** Embedded fonts in the presentation */ + this._embeddedFonts = []; // Exposed class props this._alignH = AlignH; this._alignV = AlignV; @@ -7016,7 +8811,7 @@ class PptxGenJS { // A: Add empty placeholder objects to slides that don't already have them this.slides.forEach(slide => { if (slide._slideLayout) - addPlaceholdersToSlideLayouts(slide); + ; }); // B: Add all required folders and files zip.folder('_rels'); @@ -7031,16 +8826,38 @@ class PptxGenJS { zip.folder('ppt/theme'); zip.folder('ppt/notesMasters').folder('_rels'); zip.folder('ppt/notesSlides').folder('_rels'); - zip.file('[Content_Types].xml', makeXmlContTypes(this.slides, this.slideLayouts, this.masterSlide)); // TODO: pass only `this` like below! 20200206 + // Add fonts folder if there are embedded fonts + if (this._embeddedFonts && this._embeddedFonts.length > 0) { + zip.folder('ppt/fonts'); + } + zip.file('[Content_Types].xml', makeXmlContTypes(this.slides, this.slideLayouts, this.masterSlide, this._embeddedFonts)); zip.file('_rels/.rels', makeXmlRootRels()); zip.file('docProps/app.xml', makeXmlApp(this.slides, this.company)); // TODO: pass only `this` like below! 20200206 zip.file('docProps/core.xml', makeXmlCore(this.title, this.subject, this.author, this.revision)); // TODO: pass only `this` like below! 20200206 - zip.file('ppt/_rels/presentation.xml.rels', makeXmlPresentationRels(this.slides)); + zip.file('ppt/_rels/presentation.xml.rels', makeXmlPresentationRels(this.slides, this._embeddedFonts)); zip.file('ppt/theme/theme1.xml', makeXmlTheme(this)); zip.file('ppt/presentation.xml', makeXmlPresentation(this)); zip.file('ppt/presProps.xml', makeXmlPresProps()); - zip.file('ppt/tableStyles.xml', makeXmlTableStyles()); + zip.file('ppt/tableStyles.xml', makeXmlTableStyles(this._tableStylesXml)); zip.file('ppt/viewProps.xml', makeXmlViewProps()); + // B2: Add embedded font files + if (this._embeddedFonts && this._embeddedFonts.length > 0) { + this._embeddedFonts.forEach(font => { + const safeFileName = font.fontName.replace(/\s+/g, ''); + if (font.regular) { + zip.file(`ppt/fonts/${safeFileName}-regular.fntdata`, font.regular, { base64: true }); + } + if (font.bold) { + zip.file(`ppt/fonts/${safeFileName}-bold.fntdata`, font.bold, { base64: true }); + } + if (font.italic) { + zip.file(`ppt/fonts/${safeFileName}-italic.fntdata`, font.italic, { base64: true }); + } + if (font.boldItalic) { + zip.file(`ppt/fonts/${safeFileName}-boldItalic.fntdata`, font.boldItalic, { base64: true }); + } + }); + } // C: Create a Layout/Master/Rel/Slide file for each SlideLayout and Slide this.slideLayouts.forEach((layout, idx) => { zip.file(`ppt/slideLayouts/slideLayout${idx + 1}.xml`, makeXmlLayout(layout)); @@ -7127,6 +8944,7 @@ class PptxGenJS { this._sections = []; this._masterSlide = { addChart: null, + addGroup: null, addImage: null, addMedia: null, addNotes: null, diff --git a/dist/pptxgen.js b/dist/pptxgen.js new file mode 100644 index 000000000..eae8810fb --- /dev/null +++ b/dist/pptxgen.js @@ -0,0 +1,9189 @@ +var PptxGenJS = (function (JSZip) { + 'use strict'; + + /****************************************************************************** + Copyright (c) Microsoft Corporation. + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH + REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, + INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + PERFORMANCE OF THIS SOFTWARE. + ***************************************************************************** */ + /* global Reflect, Promise, SuppressedError, Symbol, Iterator */ + + + function __rest(s, e) { + var t = {}; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) + t[p] = s[p]; + if (s != null && typeof Object.getOwnPropertySymbols === "function") + for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { + if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) + t[p[i]] = s[p[i]]; + } + return t; + } + + function __awaiter(thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + } + + typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) { + var e = new Error(message); + return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; + }; + + /** + * PptxGenJS Enums + * NOTE: `enum` wont work for objects, so use `Object.freeze` + */ + // CONST + const EMU = 914400; // One (1) inch (OfficeXML measures in EMU (English Metric Units)) + const ONEPT = 12700; // One (1) point (pt) + const CRLF = '\r\n'; // AKA: Chr(13) & Chr(10) + const LAYOUT_IDX_SERIES_BASE = 2147483649; + const REGEX_HEX_COLOR = /^[0-9a-fA-F]{6}$/; + const LINEH_MODIFIER = 1.67; // AKA: Golden Ratio Typography + const DEF_BULLET_MARGIN = 27; + const DEF_CELL_BORDER = { type: 'solid', color: '666666', pt: 1 }; + const DEF_CELL_MARGIN_IN = [0.05, 0.1, 0.05, 0.1]; // "Normal" margins in PPT-2021 ("Narrow" is `0.05` for all 4) + const DEF_CHART_BORDER = { color: '363636', pt: 1 }; + const DEF_CHART_GRIDLINE = { color: '888888', style: 'solid', size: 1, cap: 'flat' }; + const DEF_FONT_COLOR = '000000'; + const DEF_FONT_SIZE = 12; + const DEF_FONT_TITLE_SIZE = 18; + const DEF_PRES_LAYOUT = 'LAYOUT_16x9'; + const DEF_PRES_LAYOUT_NAME = 'DEFAULT'; + const DEF_SHAPE_LINE_COLOR = '333333'; + const DEF_SHAPE_SHADOW = { type: 'outer', blur: 3, offset: 23000 / 12700, angle: 90, color: '000000', opacity: 0.35, rotateWithShape: true }; + const DEF_SLIDE_MARGIN_IN = [0.5, 0.5, 0.5, 0.5]; // TRBL-style + const DEF_TEXT_SHADOW = { color: '000000'}; + const DEF_TEXT_GLOW = { size: 8, color: 'FFFFFF', opacity: 0.75 }; + const AXIS_ID_VALUE_PRIMARY = '2094734552'; + const AXIS_ID_VALUE_SECONDARY = '2094734553'; + const AXIS_ID_CATEGORY_PRIMARY = '2094734554'; + const AXIS_ID_CATEGORY_SECONDARY = '2094734555'; + const AXIS_ID_SERIES_PRIMARY = '2094734556'; + const LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split(''); + const BARCHART_COLORS = [ + 'C0504D', + '4F81BD', + '9BBB59', + '8064A2', + '4BACC6', + 'F79646', + '628FC6', + 'C86360', + 'C0504D', + '4F81BD', + '9BBB59', + '8064A2', + '4BACC6', + 'F79646', + '628FC6', + 'C86360' + ]; + const PIECHART_COLORS = [ + '5DA5DA', + 'FAA43A', + '60BD68', + 'F17CB0', + 'B2912F', + 'B276B2', + 'DECF3F', + 'F15854', + 'A7A7A7', + '5DA5DA', + 'FAA43A', + '60BD68', + 'F17CB0', + 'B2912F', + 'B276B2', + 'DECF3F', + 'F15854', + 'A7A7A7', + ]; + var TEXT_HALIGN; + (function (TEXT_HALIGN) { + TEXT_HALIGN["left"] = "left"; + TEXT_HALIGN["center"] = "center"; + TEXT_HALIGN["right"] = "right"; + TEXT_HALIGN["justify"] = "justify"; + })(TEXT_HALIGN || (TEXT_HALIGN = {})); + var TEXT_VALIGN; + (function (TEXT_VALIGN) { + TEXT_VALIGN["b"] = "b"; + TEXT_VALIGN["ctr"] = "ctr"; + TEXT_VALIGN["t"] = "t"; + })(TEXT_VALIGN || (TEXT_VALIGN = {})); + const SLDNUMFLDID = '{F7021451-1387-4CA6-816F-3879F97B5CBC}'; + // ENUM + // TODO: 3.5 or v4.0: rationalize ts-def exported enum names/case! + // NOTE: First tsdef enum named correctly (shapes -> 'Shape', colors -> 'Color'), etc. + var OutputType; + (function (OutputType) { + OutputType["arraybuffer"] = "arraybuffer"; + OutputType["base64"] = "base64"; + OutputType["binarystring"] = "binarystring"; + OutputType["blob"] = "blob"; + OutputType["nodebuffer"] = "nodebuffer"; + OutputType["uint8array"] = "uint8array"; + })(OutputType || (OutputType = {})); + var ChartType; + (function (ChartType) { + // Column category + ChartType["area"] = "area"; + ChartType["area3d"] = "area3D"; + ChartType["bar"] = "bar"; + ChartType["bar3d"] = "bar3D"; + ChartType["bubble"] = "bubble"; + ChartType["bubble3d"] = "bubble3D"; + ChartType["doughnut"] = "doughnut"; + ChartType["line"] = "line"; + ChartType["line3d"] = "line3D"; + ChartType["pie"] = "pie"; + ChartType["pie3d"] = "pie3D"; + ChartType["scatter"] = "scatter"; + ChartType["stock"] = "stock"; + ChartType["ofPie"] = "ofPie"; + // ChartEx (Extended chart) types + ChartType["treemap"] = "treemap"; + ChartType["sunburst"] = "sunburst"; + ChartType["histogram"] = "histogram"; + ChartType["pareto"] = "pareto"; + ChartType["boxWhisker"] = "boxWhisker"; + ChartType["waterfallChartEx"] = "waterfallChartEx"; + ChartType["funnel"] = "funnel"; + })(ChartType || (ChartType = {})); + var ShapeType; + (function (ShapeType) { + ShapeType["accentBorderCallout1"] = "accentBorderCallout1"; + ShapeType["accentBorderCallout2"] = "accentBorderCallout2"; + ShapeType["accentBorderCallout3"] = "accentBorderCallout3"; + ShapeType["accentCallout1"] = "accentCallout1"; + ShapeType["accentCallout2"] = "accentCallout2"; + ShapeType["accentCallout3"] = "accentCallout3"; + ShapeType["actionButtonBackPrevious"] = "actionButtonBackPrevious"; + ShapeType["actionButtonBeginning"] = "actionButtonBeginning"; + ShapeType["actionButtonBlank"] = "actionButtonBlank"; + ShapeType["actionButtonDocument"] = "actionButtonDocument"; + ShapeType["actionButtonEnd"] = "actionButtonEnd"; + ShapeType["actionButtonForwardNext"] = "actionButtonForwardNext"; + ShapeType["actionButtonHelp"] = "actionButtonHelp"; + ShapeType["actionButtonHome"] = "actionButtonHome"; + ShapeType["actionButtonInformation"] = "actionButtonInformation"; + ShapeType["actionButtonMovie"] = "actionButtonMovie"; + ShapeType["actionButtonReturn"] = "actionButtonReturn"; + ShapeType["actionButtonSound"] = "actionButtonSound"; + ShapeType["arc"] = "arc"; + ShapeType["bentArrow"] = "bentArrow"; + ShapeType["bentUpArrow"] = "bentUpArrow"; + ShapeType["bevel"] = "bevel"; + ShapeType["blockArc"] = "blockArc"; + ShapeType["borderCallout1"] = "borderCallout1"; + ShapeType["borderCallout2"] = "borderCallout2"; + ShapeType["borderCallout3"] = "borderCallout3"; + ShapeType["bracePair"] = "bracePair"; + ShapeType["bracketPair"] = "bracketPair"; + ShapeType["callout1"] = "callout1"; + ShapeType["callout2"] = "callout2"; + ShapeType["callout3"] = "callout3"; + ShapeType["can"] = "can"; + ShapeType["chartPlus"] = "chartPlus"; + ShapeType["chartStar"] = "chartStar"; + ShapeType["chartX"] = "chartX"; + ShapeType["chevron"] = "chevron"; + ShapeType["chord"] = "chord"; + ShapeType["circularArrow"] = "circularArrow"; + ShapeType["cloud"] = "cloud"; + ShapeType["cloudCallout"] = "cloudCallout"; + ShapeType["corner"] = "corner"; + ShapeType["cornerTabs"] = "cornerTabs"; + ShapeType["cube"] = "cube"; + ShapeType["curvedDownArrow"] = "curvedDownArrow"; + ShapeType["curvedLeftArrow"] = "curvedLeftArrow"; + ShapeType["curvedRightArrow"] = "curvedRightArrow"; + ShapeType["curvedUpArrow"] = "curvedUpArrow"; + ShapeType["custGeom"] = "custGeom"; + ShapeType["decagon"] = "decagon"; + ShapeType["diagStripe"] = "diagStripe"; + ShapeType["diamond"] = "diamond"; + ShapeType["dodecagon"] = "dodecagon"; + ShapeType["donut"] = "donut"; + ShapeType["doubleWave"] = "doubleWave"; + ShapeType["downArrow"] = "downArrow"; + ShapeType["downArrowCallout"] = "downArrowCallout"; + ShapeType["ellipse"] = "ellipse"; + ShapeType["ellipseRibbon"] = "ellipseRibbon"; + ShapeType["ellipseRibbon2"] = "ellipseRibbon2"; + ShapeType["flowChartAlternateProcess"] = "flowChartAlternateProcess"; + ShapeType["flowChartCollate"] = "flowChartCollate"; + ShapeType["flowChartConnector"] = "flowChartConnector"; + ShapeType["flowChartDecision"] = "flowChartDecision"; + ShapeType["flowChartDelay"] = "flowChartDelay"; + ShapeType["flowChartDisplay"] = "flowChartDisplay"; + ShapeType["flowChartDocument"] = "flowChartDocument"; + ShapeType["flowChartExtract"] = "flowChartExtract"; + ShapeType["flowChartInputOutput"] = "flowChartInputOutput"; + ShapeType["flowChartInternalStorage"] = "flowChartInternalStorage"; + ShapeType["flowChartMagneticDisk"] = "flowChartMagneticDisk"; + ShapeType["flowChartMagneticDrum"] = "flowChartMagneticDrum"; + ShapeType["flowChartMagneticTape"] = "flowChartMagneticTape"; + ShapeType["flowChartManualInput"] = "flowChartManualInput"; + ShapeType["flowChartManualOperation"] = "flowChartManualOperation"; + ShapeType["flowChartMerge"] = "flowChartMerge"; + ShapeType["flowChartMultidocument"] = "flowChartMultidocument"; + ShapeType["flowChartOfflineStorage"] = "flowChartOfflineStorage"; + ShapeType["flowChartOffpageConnector"] = "flowChartOffpageConnector"; + ShapeType["flowChartOnlineStorage"] = "flowChartOnlineStorage"; + ShapeType["flowChartOr"] = "flowChartOr"; + ShapeType["flowChartPredefinedProcess"] = "flowChartPredefinedProcess"; + ShapeType["flowChartPreparation"] = "flowChartPreparation"; + ShapeType["flowChartProcess"] = "flowChartProcess"; + ShapeType["flowChartPunchedCard"] = "flowChartPunchedCard"; + ShapeType["flowChartPunchedTape"] = "flowChartPunchedTape"; + ShapeType["flowChartSort"] = "flowChartSort"; + ShapeType["flowChartSummingJunction"] = "flowChartSummingJunction"; + ShapeType["flowChartTerminator"] = "flowChartTerminator"; + ShapeType["folderCorner"] = "folderCorner"; + ShapeType["frame"] = "frame"; + ShapeType["funnel"] = "funnel"; + ShapeType["gear6"] = "gear6"; + ShapeType["gear9"] = "gear9"; + ShapeType["halfFrame"] = "halfFrame"; + ShapeType["heart"] = "heart"; + ShapeType["heptagon"] = "heptagon"; + ShapeType["hexagon"] = "hexagon"; + ShapeType["homePlate"] = "homePlate"; + ShapeType["horizontalScroll"] = "horizontalScroll"; + ShapeType["irregularSeal1"] = "irregularSeal1"; + ShapeType["irregularSeal2"] = "irregularSeal2"; + ShapeType["leftArrow"] = "leftArrow"; + ShapeType["leftArrowCallout"] = "leftArrowCallout"; + ShapeType["leftBrace"] = "leftBrace"; + ShapeType["leftBracket"] = "leftBracket"; + ShapeType["leftCircularArrow"] = "leftCircularArrow"; + ShapeType["leftRightArrow"] = "leftRightArrow"; + ShapeType["leftRightArrowCallout"] = "leftRightArrowCallout"; + ShapeType["leftRightCircularArrow"] = "leftRightCircularArrow"; + ShapeType["leftRightRibbon"] = "leftRightRibbon"; + ShapeType["leftRightUpArrow"] = "leftRightUpArrow"; + ShapeType["leftUpArrow"] = "leftUpArrow"; + ShapeType["lightningBolt"] = "lightningBolt"; + ShapeType["line"] = "line"; + ShapeType["lineInv"] = "lineInv"; + ShapeType["mathDivide"] = "mathDivide"; + ShapeType["mathEqual"] = "mathEqual"; + ShapeType["mathMinus"] = "mathMinus"; + ShapeType["mathMultiply"] = "mathMultiply"; + ShapeType["mathNotEqual"] = "mathNotEqual"; + ShapeType["mathPlus"] = "mathPlus"; + ShapeType["moon"] = "moon"; + ShapeType["noSmoking"] = "noSmoking"; + ShapeType["nonIsoscelesTrapezoid"] = "nonIsoscelesTrapezoid"; + ShapeType["notchedRightArrow"] = "notchedRightArrow"; + ShapeType["octagon"] = "octagon"; + ShapeType["parallelogram"] = "parallelogram"; + ShapeType["pentagon"] = "pentagon"; + ShapeType["pie"] = "pie"; + ShapeType["pieWedge"] = "pieWedge"; + ShapeType["plaque"] = "plaque"; + ShapeType["plaqueTabs"] = "plaqueTabs"; + ShapeType["plus"] = "plus"; + ShapeType["quadArrow"] = "quadArrow"; + ShapeType["quadArrowCallout"] = "quadArrowCallout"; + ShapeType["rect"] = "rect"; + ShapeType["ribbon"] = "ribbon"; + ShapeType["ribbon2"] = "ribbon2"; + ShapeType["rightArrow"] = "rightArrow"; + ShapeType["rightArrowCallout"] = "rightArrowCallout"; + ShapeType["rightBrace"] = "rightBrace"; + ShapeType["rightBracket"] = "rightBracket"; + ShapeType["round1Rect"] = "round1Rect"; + ShapeType["round2DiagRect"] = "round2DiagRect"; + ShapeType["round2SameRect"] = "round2SameRect"; + ShapeType["roundRect"] = "roundRect"; + ShapeType["rtTriangle"] = "rtTriangle"; + ShapeType["smileyFace"] = "smileyFace"; + ShapeType["snip1Rect"] = "snip1Rect"; + ShapeType["snip2DiagRect"] = "snip2DiagRect"; + ShapeType["snip2SameRect"] = "snip2SameRect"; + ShapeType["snipRoundRect"] = "snipRoundRect"; + ShapeType["squareTabs"] = "squareTabs"; + ShapeType["star10"] = "star10"; + ShapeType["star12"] = "star12"; + ShapeType["star16"] = "star16"; + ShapeType["star24"] = "star24"; + ShapeType["star32"] = "star32"; + ShapeType["star4"] = "star4"; + ShapeType["star5"] = "star5"; + ShapeType["star6"] = "star6"; + ShapeType["star7"] = "star7"; + ShapeType["star8"] = "star8"; + ShapeType["stripedRightArrow"] = "stripedRightArrow"; + ShapeType["sun"] = "sun"; + ShapeType["swooshArrow"] = "swooshArrow"; + ShapeType["teardrop"] = "teardrop"; + ShapeType["trapezoid"] = "trapezoid"; + ShapeType["triangle"] = "triangle"; + ShapeType["upArrow"] = "upArrow"; + ShapeType["upArrowCallout"] = "upArrowCallout"; + ShapeType["upDownArrow"] = "upDownArrow"; + ShapeType["upDownArrowCallout"] = "upDownArrowCallout"; + ShapeType["uturnArrow"] = "uturnArrow"; + ShapeType["verticalScroll"] = "verticalScroll"; + ShapeType["wave"] = "wave"; + ShapeType["wedgeEllipseCallout"] = "wedgeEllipseCallout"; + ShapeType["wedgeRectCallout"] = "wedgeRectCallout"; + ShapeType["wedgeRoundRectCallout"] = "wedgeRoundRectCallout"; + })(ShapeType || (ShapeType = {})); + /** + * TODO: FUTURE: v4.0: rename to `ThemeColor` + */ + var SchemeColor; + (function (SchemeColor) { + SchemeColor["text1"] = "tx1"; + SchemeColor["text2"] = "tx2"; + SchemeColor["background1"] = "bg1"; + SchemeColor["background2"] = "bg2"; + SchemeColor["accent1"] = "accent1"; + SchemeColor["accent2"] = "accent2"; + SchemeColor["accent3"] = "accent3"; + SchemeColor["accent4"] = "accent4"; + SchemeColor["accent5"] = "accent5"; + SchemeColor["accent6"] = "accent6"; + })(SchemeColor || (SchemeColor = {})); + var AlignH; + (function (AlignH) { + AlignH["left"] = "left"; + AlignH["center"] = "center"; + AlignH["right"] = "right"; + AlignH["justify"] = "justify"; + })(AlignH || (AlignH = {})); + var AlignV; + (function (AlignV) { + AlignV["top"] = "top"; + AlignV["middle"] = "middle"; + AlignV["bottom"] = "bottom"; + })(AlignV || (AlignV = {})); + var SHAPE_TYPE; + (function (SHAPE_TYPE) { + SHAPE_TYPE["ACTION_BUTTON_BACK_OR_PREVIOUS"] = "actionButtonBackPrevious"; + SHAPE_TYPE["ACTION_BUTTON_BEGINNING"] = "actionButtonBeginning"; + SHAPE_TYPE["ACTION_BUTTON_CUSTOM"] = "actionButtonBlank"; + SHAPE_TYPE["ACTION_BUTTON_DOCUMENT"] = "actionButtonDocument"; + SHAPE_TYPE["ACTION_BUTTON_END"] = "actionButtonEnd"; + SHAPE_TYPE["ACTION_BUTTON_FORWARD_OR_NEXT"] = "actionButtonForwardNext"; + SHAPE_TYPE["ACTION_BUTTON_HELP"] = "actionButtonHelp"; + SHAPE_TYPE["ACTION_BUTTON_HOME"] = "actionButtonHome"; + SHAPE_TYPE["ACTION_BUTTON_INFORMATION"] = "actionButtonInformation"; + SHAPE_TYPE["ACTION_BUTTON_MOVIE"] = "actionButtonMovie"; + SHAPE_TYPE["ACTION_BUTTON_RETURN"] = "actionButtonReturn"; + SHAPE_TYPE["ACTION_BUTTON_SOUND"] = "actionButtonSound"; + SHAPE_TYPE["ARC"] = "arc"; + SHAPE_TYPE["BALLOON"] = "wedgeRoundRectCallout"; + SHAPE_TYPE["BENT_ARROW"] = "bentArrow"; + SHAPE_TYPE["BENT_UP_ARROW"] = "bentUpArrow"; + SHAPE_TYPE["BEVEL"] = "bevel"; + SHAPE_TYPE["BLOCK_ARC"] = "blockArc"; + SHAPE_TYPE["CAN"] = "can"; + SHAPE_TYPE["CHART_PLUS"] = "chartPlus"; + SHAPE_TYPE["CHART_STAR"] = "chartStar"; + SHAPE_TYPE["CHART_X"] = "chartX"; + SHAPE_TYPE["CHEVRON"] = "chevron"; + SHAPE_TYPE["CHORD"] = "chord"; + SHAPE_TYPE["CIRCULAR_ARROW"] = "circularArrow"; + SHAPE_TYPE["CLOUD"] = "cloud"; + SHAPE_TYPE["CLOUD_CALLOUT"] = "cloudCallout"; + SHAPE_TYPE["CORNER"] = "corner"; + SHAPE_TYPE["CORNER_TABS"] = "cornerTabs"; + SHAPE_TYPE["CROSS"] = "plus"; + SHAPE_TYPE["CUBE"] = "cube"; + SHAPE_TYPE["CURVED_DOWN_ARROW"] = "curvedDownArrow"; + SHAPE_TYPE["CURVED_DOWN_RIBBON"] = "ellipseRibbon"; + SHAPE_TYPE["CURVED_LEFT_ARROW"] = "curvedLeftArrow"; + SHAPE_TYPE["CURVED_RIGHT_ARROW"] = "curvedRightArrow"; + SHAPE_TYPE["CURVED_UP_ARROW"] = "curvedUpArrow"; + SHAPE_TYPE["CURVED_UP_RIBBON"] = "ellipseRibbon2"; + SHAPE_TYPE["CUSTOM_GEOMETRY"] = "custGeom"; + SHAPE_TYPE["DECAGON"] = "decagon"; + SHAPE_TYPE["DIAGONAL_STRIPE"] = "diagStripe"; + SHAPE_TYPE["DIAMOND"] = "diamond"; + SHAPE_TYPE["DODECAGON"] = "dodecagon"; + SHAPE_TYPE["DONUT"] = "donut"; + SHAPE_TYPE["DOUBLE_BRACE"] = "bracePair"; + SHAPE_TYPE["DOUBLE_BRACKET"] = "bracketPair"; + SHAPE_TYPE["DOUBLE_WAVE"] = "doubleWave"; + SHAPE_TYPE["DOWN_ARROW"] = "downArrow"; + SHAPE_TYPE["DOWN_ARROW_CALLOUT"] = "downArrowCallout"; + SHAPE_TYPE["DOWN_RIBBON"] = "ribbon"; + SHAPE_TYPE["EXPLOSION1"] = "irregularSeal1"; + SHAPE_TYPE["EXPLOSION2"] = "irregularSeal2"; + SHAPE_TYPE["FLOWCHART_ALTERNATE_PROCESS"] = "flowChartAlternateProcess"; + SHAPE_TYPE["FLOWCHART_CARD"] = "flowChartPunchedCard"; + SHAPE_TYPE["FLOWCHART_COLLATE"] = "flowChartCollate"; + SHAPE_TYPE["FLOWCHART_CONNECTOR"] = "flowChartConnector"; + SHAPE_TYPE["FLOWCHART_DATA"] = "flowChartInputOutput"; + SHAPE_TYPE["FLOWCHART_DECISION"] = "flowChartDecision"; + SHAPE_TYPE["FLOWCHART_DELAY"] = "flowChartDelay"; + SHAPE_TYPE["FLOWCHART_DIRECT_ACCESS_STORAGE"] = "flowChartMagneticDrum"; + SHAPE_TYPE["FLOWCHART_DISPLAY"] = "flowChartDisplay"; + SHAPE_TYPE["FLOWCHART_DOCUMENT"] = "flowChartDocument"; + SHAPE_TYPE["FLOWCHART_EXTRACT"] = "flowChartExtract"; + SHAPE_TYPE["FLOWCHART_INTERNAL_STORAGE"] = "flowChartInternalStorage"; + SHAPE_TYPE["FLOWCHART_MAGNETIC_DISK"] = "flowChartMagneticDisk"; + SHAPE_TYPE["FLOWCHART_MANUAL_INPUT"] = "flowChartManualInput"; + SHAPE_TYPE["FLOWCHART_MANUAL_OPERATION"] = "flowChartManualOperation"; + SHAPE_TYPE["FLOWCHART_MERGE"] = "flowChartMerge"; + SHAPE_TYPE["FLOWCHART_MULTIDOCUMENT"] = "flowChartMultidocument"; + SHAPE_TYPE["FLOWCHART_OFFLINE_STORAGE"] = "flowChartOfflineStorage"; + SHAPE_TYPE["FLOWCHART_OFFPAGE_CONNECTOR"] = "flowChartOffpageConnector"; + SHAPE_TYPE["FLOWCHART_OR"] = "flowChartOr"; + SHAPE_TYPE["FLOWCHART_PREDEFINED_PROCESS"] = "flowChartPredefinedProcess"; + SHAPE_TYPE["FLOWCHART_PREPARATION"] = "flowChartPreparation"; + SHAPE_TYPE["FLOWCHART_PROCESS"] = "flowChartProcess"; + SHAPE_TYPE["FLOWCHART_PUNCHED_TAPE"] = "flowChartPunchedTape"; + SHAPE_TYPE["FLOWCHART_SEQUENTIAL_ACCESS_STORAGE"] = "flowChartMagneticTape"; + SHAPE_TYPE["FLOWCHART_SORT"] = "flowChartSort"; + SHAPE_TYPE["FLOWCHART_STORED_DATA"] = "flowChartOnlineStorage"; + SHAPE_TYPE["FLOWCHART_SUMMING_JUNCTION"] = "flowChartSummingJunction"; + SHAPE_TYPE["FLOWCHART_TERMINATOR"] = "flowChartTerminator"; + SHAPE_TYPE["FOLDED_CORNER"] = "folderCorner"; + SHAPE_TYPE["FRAME"] = "frame"; + SHAPE_TYPE["FUNNEL"] = "funnel"; + SHAPE_TYPE["GEAR_6"] = "gear6"; + SHAPE_TYPE["GEAR_9"] = "gear9"; + SHAPE_TYPE["HALF_FRAME"] = "halfFrame"; + SHAPE_TYPE["HEART"] = "heart"; + SHAPE_TYPE["HEPTAGON"] = "heptagon"; + SHAPE_TYPE["HEXAGON"] = "hexagon"; + SHAPE_TYPE["HORIZONTAL_SCROLL"] = "horizontalScroll"; + SHAPE_TYPE["ISOSCELES_TRIANGLE"] = "triangle"; + SHAPE_TYPE["LEFT_ARROW"] = "leftArrow"; + SHAPE_TYPE["LEFT_ARROW_CALLOUT"] = "leftArrowCallout"; + SHAPE_TYPE["LEFT_BRACE"] = "leftBrace"; + SHAPE_TYPE["LEFT_BRACKET"] = "leftBracket"; + SHAPE_TYPE["LEFT_CIRCULAR_ARROW"] = "leftCircularArrow"; + SHAPE_TYPE["LEFT_RIGHT_ARROW"] = "leftRightArrow"; + SHAPE_TYPE["LEFT_RIGHT_ARROW_CALLOUT"] = "leftRightArrowCallout"; + SHAPE_TYPE["LEFT_RIGHT_CIRCULAR_ARROW"] = "leftRightCircularArrow"; + SHAPE_TYPE["LEFT_RIGHT_RIBBON"] = "leftRightRibbon"; + SHAPE_TYPE["LEFT_RIGHT_UP_ARROW"] = "leftRightUpArrow"; + SHAPE_TYPE["LEFT_UP_ARROW"] = "leftUpArrow"; + SHAPE_TYPE["LIGHTNING_BOLT"] = "lightningBolt"; + SHAPE_TYPE["LINE_CALLOUT_1"] = "borderCallout1"; + SHAPE_TYPE["LINE_CALLOUT_1_ACCENT_BAR"] = "accentCallout1"; + SHAPE_TYPE["LINE_CALLOUT_1_BORDER_AND_ACCENT_BAR"] = "accentBorderCallout1"; + SHAPE_TYPE["LINE_CALLOUT_1_NO_BORDER"] = "callout1"; + SHAPE_TYPE["LINE_CALLOUT_2"] = "borderCallout2"; + SHAPE_TYPE["LINE_CALLOUT_2_ACCENT_BAR"] = "accentCallout2"; + SHAPE_TYPE["LINE_CALLOUT_2_BORDER_AND_ACCENT_BAR"] = "accentBorderCallout2"; + SHAPE_TYPE["LINE_CALLOUT_2_NO_BORDER"] = "callout2"; + SHAPE_TYPE["LINE_CALLOUT_3"] = "borderCallout3"; + SHAPE_TYPE["LINE_CALLOUT_3_ACCENT_BAR"] = "accentCallout3"; + SHAPE_TYPE["LINE_CALLOUT_3_BORDER_AND_ACCENT_BAR"] = "accentBorderCallout3"; + SHAPE_TYPE["LINE_CALLOUT_3_NO_BORDER"] = "callout3"; + SHAPE_TYPE["LINE_CALLOUT_4"] = "borderCallout4"; + SHAPE_TYPE["LINE_CALLOUT_4_ACCENT_BAR"] = "accentCallout3=4"; + SHAPE_TYPE["LINE_CALLOUT_4_BORDER_AND_ACCENT_BAR"] = "accentBorderCallout4"; + SHAPE_TYPE["LINE_CALLOUT_4_NO_BORDER"] = "callout4"; + SHAPE_TYPE["LINE"] = "line"; + SHAPE_TYPE["LINE_INVERSE"] = "lineInv"; + SHAPE_TYPE["MATH_DIVIDE"] = "mathDivide"; + SHAPE_TYPE["MATH_EQUAL"] = "mathEqual"; + SHAPE_TYPE["MATH_MINUS"] = "mathMinus"; + SHAPE_TYPE["MATH_MULTIPLY"] = "mathMultiply"; + SHAPE_TYPE["MATH_NOT_EQUAL"] = "mathNotEqual"; + SHAPE_TYPE["MATH_PLUS"] = "mathPlus"; + SHAPE_TYPE["MOON"] = "moon"; + SHAPE_TYPE["NON_ISOSCELES_TRAPEZOID"] = "nonIsoscelesTrapezoid"; + SHAPE_TYPE["NOTCHED_RIGHT_ARROW"] = "notchedRightArrow"; + SHAPE_TYPE["NO_SYMBOL"] = "noSmoking"; + SHAPE_TYPE["OCTAGON"] = "octagon"; + SHAPE_TYPE["OVAL"] = "ellipse"; + SHAPE_TYPE["OVAL_CALLOUT"] = "wedgeEllipseCallout"; + SHAPE_TYPE["PARALLELOGRAM"] = "parallelogram"; + SHAPE_TYPE["PENTAGON"] = "homePlate"; + SHAPE_TYPE["PIE"] = "pie"; + SHAPE_TYPE["PIE_WEDGE"] = "pieWedge"; + SHAPE_TYPE["PLAQUE"] = "plaque"; + SHAPE_TYPE["PLAQUE_TABS"] = "plaqueTabs"; + SHAPE_TYPE["QUAD_ARROW"] = "quadArrow"; + SHAPE_TYPE["QUAD_ARROW_CALLOUT"] = "quadArrowCallout"; + SHAPE_TYPE["RECTANGLE"] = "rect"; + SHAPE_TYPE["RECTANGULAR_CALLOUT"] = "wedgeRectCallout"; + SHAPE_TYPE["REGULAR_PENTAGON"] = "pentagon"; + SHAPE_TYPE["RIGHT_ARROW"] = "rightArrow"; + SHAPE_TYPE["RIGHT_ARROW_CALLOUT"] = "rightArrowCallout"; + SHAPE_TYPE["RIGHT_BRACE"] = "rightBrace"; + SHAPE_TYPE["RIGHT_BRACKET"] = "rightBracket"; + SHAPE_TYPE["RIGHT_TRIANGLE"] = "rtTriangle"; + SHAPE_TYPE["ROUNDED_RECTANGLE"] = "roundRect"; + // eslint-disable-next-line @typescript-eslint/no-duplicate-enum-values + SHAPE_TYPE["ROUNDED_RECTANGULAR_CALLOUT"] = "wedgeRoundRectCallout"; + SHAPE_TYPE["ROUND_1_RECTANGLE"] = "round1Rect"; + SHAPE_TYPE["ROUND_2_DIAG_RECTANGLE"] = "round2DiagRect"; + SHAPE_TYPE["ROUND_2_SAME_RECTANGLE"] = "round2SameRect"; + SHAPE_TYPE["SMILEY_FACE"] = "smileyFace"; + SHAPE_TYPE["SNIP_1_RECTANGLE"] = "snip1Rect"; + SHAPE_TYPE["SNIP_2_DIAG_RECTANGLE"] = "snip2DiagRect"; + SHAPE_TYPE["SNIP_2_SAME_RECTANGLE"] = "snip2SameRect"; + SHAPE_TYPE["SNIP_ROUND_RECTANGLE"] = "snipRoundRect"; + SHAPE_TYPE["SQUARE_TABS"] = "squareTabs"; + SHAPE_TYPE["STAR_10_POINT"] = "star10"; + SHAPE_TYPE["STAR_12_POINT"] = "star12"; + SHAPE_TYPE["STAR_16_POINT"] = "star16"; + SHAPE_TYPE["STAR_24_POINT"] = "star24"; + SHAPE_TYPE["STAR_32_POINT"] = "star32"; + SHAPE_TYPE["STAR_4_POINT"] = "star4"; + SHAPE_TYPE["STAR_5_POINT"] = "star5"; + SHAPE_TYPE["STAR_6_POINT"] = "star6"; + SHAPE_TYPE["STAR_7_POINT"] = "star7"; + SHAPE_TYPE["STAR_8_POINT"] = "star8"; + SHAPE_TYPE["STRIPED_RIGHT_ARROW"] = "stripedRightArrow"; + SHAPE_TYPE["SUN"] = "sun"; + SHAPE_TYPE["SWOOSH_ARROW"] = "swooshArrow"; + SHAPE_TYPE["TEAR"] = "teardrop"; + SHAPE_TYPE["TRAPEZOID"] = "trapezoid"; + SHAPE_TYPE["UP_ARROW"] = "upArrow"; + SHAPE_TYPE["UP_ARROW_CALLOUT"] = "upArrowCallout"; + SHAPE_TYPE["UP_DOWN_ARROW"] = "upDownArrow"; + SHAPE_TYPE["UP_DOWN_ARROW_CALLOUT"] = "upDownArrowCallout"; + SHAPE_TYPE["UP_RIBBON"] = "ribbon2"; + SHAPE_TYPE["U_TURN_ARROW"] = "uturnArrow"; + SHAPE_TYPE["VERTICAL_SCROLL"] = "verticalScroll"; + SHAPE_TYPE["WAVE"] = "wave"; + })(SHAPE_TYPE || (SHAPE_TYPE = {})); + /** + * Chart types matching PowerPoint categories: + * - Column: BAR, BAR3D (use barDir for horizontal/vertical) + * - Line: LINE, LINE3D, AREA, AREA3D + * - Pie: PIE, PIE3D, DOUGHNUT, OFPIE + * - X Y (Scatter): SCATTER, BUBBLE + * - Waterfall: STOCK + * - ChartEx (Extended): TREEMAP, SUNBURST, HISTOGRAM, PARETO, BOXWHISKER, WATERFALL_CHARTEX, FUNNEL, REGION_MAP + */ + var CHART_TYPE; + (function (CHART_TYPE) { + // Column category + CHART_TYPE["BAR"] = "bar"; + CHART_TYPE["BAR3D"] = "bar3D"; + // Line category + CHART_TYPE["AREA"] = "area"; + CHART_TYPE["AREA3D"] = "area3D"; + CHART_TYPE["LINE"] = "line"; + CHART_TYPE["LINE3D"] = "line3D"; + // Pie category + CHART_TYPE["PIE"] = "pie"; + CHART_TYPE["PIE3D"] = "pie3D"; + CHART_TYPE["DOUGHNUT"] = "doughnut"; + CHART_TYPE["OFPIE"] = "ofPie"; + // X Y (Scatter) category + CHART_TYPE["SCATTER"] = "scatter"; + CHART_TYPE["BUBBLE"] = "bubble"; + // Waterfall category + CHART_TYPE["STOCK"] = "stock"; + // ChartEx (Extended chart) types - use cx: namespace + CHART_TYPE["TREEMAP"] = "treemap"; + CHART_TYPE["SUNBURST"] = "sunburst"; + CHART_TYPE["HISTOGRAM"] = "histogram"; + CHART_TYPE["PARETO"] = "pareto"; + CHART_TYPE["BOXWHISKER"] = "boxWhisker"; + CHART_TYPE["WATERFALL_CHARTEX"] = "waterfallChartEx"; + CHART_TYPE["FUNNEL"] = "funnel"; + CHART_TYPE["REGION_MAP"] = "regionMap"; + })(CHART_TYPE || (CHART_TYPE = {})); + var SCHEME_COLOR_NAMES; + (function (SCHEME_COLOR_NAMES) { + SCHEME_COLOR_NAMES["TEXT1"] = "tx1"; + SCHEME_COLOR_NAMES["TEXT2"] = "tx2"; + SCHEME_COLOR_NAMES["BACKGROUND1"] = "bg1"; + SCHEME_COLOR_NAMES["BACKGROUND2"] = "bg2"; + SCHEME_COLOR_NAMES["ACCENT1"] = "accent1"; + SCHEME_COLOR_NAMES["ACCENT2"] = "accent2"; + SCHEME_COLOR_NAMES["ACCENT3"] = "accent3"; + SCHEME_COLOR_NAMES["ACCENT4"] = "accent4"; + SCHEME_COLOR_NAMES["ACCENT5"] = "accent5"; + SCHEME_COLOR_NAMES["ACCENT6"] = "accent6"; + })(SCHEME_COLOR_NAMES || (SCHEME_COLOR_NAMES = {})); + var MASTER_OBJECTS; + (function (MASTER_OBJECTS) { + MASTER_OBJECTS["chart"] = "chart"; + MASTER_OBJECTS["image"] = "image"; + MASTER_OBJECTS["line"] = "line"; + MASTER_OBJECTS["rect"] = "rect"; + MASTER_OBJECTS["text"] = "text"; + MASTER_OBJECTS["placeholder"] = "placeholder"; + MASTER_OBJECTS["picturePlaceholder"] = "picturePlaceholder"; + })(MASTER_OBJECTS || (MASTER_OBJECTS = {})); + var SLIDE_OBJECT_TYPES; + (function (SLIDE_OBJECT_TYPES) { + SLIDE_OBJECT_TYPES["chart"] = "chart"; + SLIDE_OBJECT_TYPES["group"] = "group"; + SLIDE_OBJECT_TYPES["hyperlink"] = "hyperlink"; + SLIDE_OBJECT_TYPES["image"] = "image"; + SLIDE_OBJECT_TYPES["media"] = "media"; + SLIDE_OBJECT_TYPES["online"] = "online"; + SLIDE_OBJECT_TYPES["placeholder"] = "placeholder"; + SLIDE_OBJECT_TYPES["picturePlaceholder"] = "picturePlaceholder"; + SLIDE_OBJECT_TYPES["table"] = "table"; + SLIDE_OBJECT_TYPES["tablecell"] = "tablecell"; + SLIDE_OBJECT_TYPES["text"] = "text"; + SLIDE_OBJECT_TYPES["notes"] = "notes"; + })(SLIDE_OBJECT_TYPES || (SLIDE_OBJECT_TYPES = {})); + var PLACEHOLDER_TYPES; + (function (PLACEHOLDER_TYPES) { + PLACEHOLDER_TYPES["title"] = "title"; + PLACEHOLDER_TYPES["body"] = "body"; + PLACEHOLDER_TYPES["image"] = "pic"; + PLACEHOLDER_TYPES["chart"] = "chart"; + PLACEHOLDER_TYPES["table"] = "tbl"; + PLACEHOLDER_TYPES["media"] = "media"; + // Extended placeholder types for roundtrip fidelity + PLACEHOLDER_TYPES["content"] = ""; + PLACEHOLDER_TYPES["clipArt"] = "clipArt"; + PLACEHOLDER_TYPES["diagram"] = "dgm"; + PLACEHOLDER_TYPES["cameo"] = "media"; + })(PLACEHOLDER_TYPES || (PLACEHOLDER_TYPES = {})); + /** + * NOTE: 20170304: BULLET_TYPES: Only default is used so far. I'd like to combine the two pieces of code that use these before implementing these as options + * Since we close

within the text object bullets, its slightly more difficult than combining into a func and calling to get the paraProp + * and i'm not sure if anyone will even use these... so, skipping for now. + */ + var BULLET_TYPES; + (function (BULLET_TYPES) { + BULLET_TYPES["DEFAULT"] = "•"; + BULLET_TYPES["CHECK"] = "✓"; + BULLET_TYPES["STAR"] = "★"; + BULLET_TYPES["TRIANGLE"] = "▶"; + })(BULLET_TYPES || (BULLET_TYPES = {})); + // IMAGES (base64) + const IMG_BROKEN = 'data:image/png;base64,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'; + const IMG_PLAYBTN = 'data:image/png;base64,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AAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKREkRUAAACwrUpLSwuGDRvWfMCAAS26du3avKysrLiioqKkZcuWzZs1a1bcvHnz0tLS0rJsNtusuLi4ebNmzUoLCgo+8/eijY2N9Zs3b66pra2tqqur21xTU1NdVVVVs2nTptqNGzdWbdiwoeYvf/nL5hUrVlQtWLBgw6xZs6pqamoaJQYAAEDaKYABAACIiIghQ4aUHnTQQW379u3bql27dq3at2/fpkWLFq2bN29eWVpa2qpZs2bNCwsLm2ez2fLCwsLyoqKi8sLCwtKknK+hoaG6vr6+qqGh4S91dXV/aWhoqNq8eXNVTU3NuqqqqvUbNmxYu2rVqjWrV69e99Zbb6177rnnPpgzZ06NTwYAAABJogAGAADIA8OGDWt+xBFHdBwwYECnLl26dGjdunXHFi1adCgtLe1YUlLSvlmzZq0KCgqK07yDwsLCssLCwrKIaPdp/zuNjY21mzdvXrdp06ZVNTU172/YsGHl2rVr31+2bNnKBQsWrHjyySffnzVrVpVPGAAAAE1Fpuexsd9HfaF+ZcSal0ptCAAAIAE6deqUPf744zvtueeeXbp3796lbdu2XSorKzuXlpZ2KS0t7VBYWFhhSztGQ0PDxpqampU1NTXL169fv+yDDz5Y9s477yybPXv2sj/96U8rVqxYUWdLAAAAbE9t9q6Jog4f/TUFMAAAQEJks9nMt7/97Y4jRozo1bdv397t2rXrXl5e3rWsrKxzcXFx+4gosKUmp7G2tnZVTU3Nso0bNy5btWrV0tdff/2tJ598cvG999672noAAADYFgpgAACAhPne977X6a9Fb/v27Xu1bNmyV1lZWa8kvXOXLauvr9/wl7/8ZdG6desWL1u2bNHChQsX/fGPf1w8derUjbYDAADAliiAAQAAmqhsNps59dRTuxx66KH9+/Tp87n27dv3Ly8v719UVOSRzXlq06ZNKzZu3Pj6+++//8abb775xqOPPvrG3XffvcpmAAAA+CsFMAAAQBNx6qmndvniF784qHfv3v3btWv3uYqKis8VFhaW2wxbUl9fv37Dhg1vfPDBB68vXrz4jccee2z+jTfeuNxmAAAA8pMCGAAAYBc45phjWn/rW9/aq3///kPatGnTv6Kiop9HOLO9NDQ0VG/cuPGtNWvWLFy4cOGcO+6445WHHnporc0AAACknwIYAABgJzjjjDO6f+lLX9qrV69eg1u3bj2orKysR0RkbIadJFddXb103bp18xcvXjz30UcffeXqq69+x1oAAADSRwEMAACwnZWWlhb86le/2u3QQw8d1r17931btmw5qLCwsMxmaEoaGhqqP/zww/nvvPPOzGeeeWbW2LFj36ipqWm0GQAAgGRTAAMAAGwHP/7xj7t+9atf3bdXr15D27Ztu1c2m21jKyRJXV3dmg8++OCVRYsWvfznP/95xh/+8IdltgIAAJA8CmAAAIBtcOKJJ7Y75ZRTDujXr9+w1q1bD81ms61shTSpq6tbt3bt2pfffPPNWbfccsvUe++9d7WtAAAANH0KYAAAgE+hoqKi4IILLhg0YsSI/bp27bpfy5YtB2YymUKbIR/kcrmGDz/8cP6777474/nnn59x4YUXvrZx40aPiwYAAGiCFMAAAAAf4/jjj2/7/e9//8D+/fsf2Lp1630KCgpKbAUiGhsbN61fv37eW2+9NeWGG2545u67715lKwAAAE2DAhgAAOB/ZLPZzAUXXPC5I4888sDu3bsfWFFRsVtEFNgMbFl1dfWSd999d8qsWbNmnnvuuS+vW7euwVYAAAB2DQUwAACQ10pLSwsuvfTSQYcccsjBXbt2HVFWVtbDVmDb1dbWrnr//fdfmDp16uRf/vKXL65evbreVgAAAHYeBTAAAJB3Bg0aVHrBBRd8fs899zywQ4cOBxQVFbWwFdj+Ghsba9euXTtrzpw5T59//vmTX3755WpbAQAA2LEUwAAAQF4YNmxY8/POO+/gIUOGHOZ9vrDz/W0ZfNFFFz07a9asKlsBAADY/hTAAABAarVq1arwyiuv3HfEiBEjO3TocFBhYWGZrcCu19DQUP3+++8/O2XKlIk/+clPZm7cuLHRVgAAALYPBTAAAJAqrVq1Kvztb3+7/3777Xd4x44dRxQWFpbbCjRdDQ0NG99///0pM2bMeOqHP/zhC8pgAACAz0YBDAAApMJZZ53V45vf/OaRvXr1GllaWtrVRiB5ampq3l28ePHEO++8c9LVV1/9jo0AAABsPQUwAACQWMOHDy+/6KKLvjB48OCjW7RoMdBGID0+/PDDV+fNmzfhvPPOe3L69Ol/sREAAIBPRwEMAAAkSqtWrQpvuOGGQ/bbb79/atOmzX6ZTCZrK5BeuVyubs2aNTNmzJjx2JgxYyavW7euwVYAAAA+ngIYAABIhB//+Mddv/e9732lZ8+e/1RcXNzWRiD/1NbWfvD2228/dssttzz029/+9l0bAQAA+L8UwAAAQJNVUVFRcO21137+4IMPPrZ169b7ZTKZAlsBIqJxzZo1M59//vnxp5122hR3BQMAAPx/CmAAAKDJOeWUUzqefvrpx/bu3ftL2Wy2jY0AH6e+vn7j0qVLH/vd7373x+uvv36ZjQAAAPlOAQwAADQJ2Ww2c+uttx5wyCGHnNC6deu9I8LdvsDWaFy7du1L06ZN+/OPfvSjZ1evXl1vJQAAQD5SAAMAALtU//79S6655pp/2nPPPY8tLy/vayPAZ1VTU7NswYIF488999wHp06dutFGAACAfKIABgAAdomf//znPU855ZQTu3btemRhYWGZjQDbW2NjY92KFSuevOWWW+689NJLF9kIAACQDxTAAADATuMxz8Cusn79+rlPP/30f5188slT6+rqcjYCAACklQIYAADY4fr27Vv8hz/84a+Pee5nI8CuUlNT8+68efPu/8EPfvDgwoULN9kIAACQNgpgAABghxkyZEjpNddc89XBgwefWFxc3MFGgKaitrZ21dy5c+/5yU9+8uc5c+bU2AgAAJAWWyqAPYoNAADYJqNHj+4wb968n06ZMuXRYcOGnaH8BZqa4uLi9sOGDTtjypQpj86bN++nJ510UntbAQAA0s4dwAAAwFY599xze33/+9//dufOnY/IZDJZGwGSIpfL1S1fvvzJG2644fbLLrvsbRsBAACSyiOgAQCAz+y8887r+53vfOfbHTt2PDyTyRTaCJBUuVyuYcWKFU/cdNNN//XrX/96sY0AAABJowAGAAC22WWXXTboG9/4xg9at249zDaAtFm7du2su++++9pzzjnnNdsAAACSQgEMAABsNcUvkE8UwQAAQJIogAEAgE9N8Qvks7Vr18665557rvv5z38+3zYAAICmaksFcGHlwOj6UV9orIqoWZG1PQAAyBO/+MUvet9xxx3nHHrooT8pLS3tYiNAPiotLe2y7777HvP973+/X1lZ2ZIpU6assxUAAKCpKetcHwXlH/01BTAAAOS5M844o/u99957zpe//OWflZeX94qIjK0AeS5TXl7e8+CDDx71/e9/v3dEvDVjxowPrQUAAGgqFMAAAMD/ceKJJ7a77777fjJq1Kh/KS8v7xOKX4B/lCkvL+99+OGHj/rWt77VfvXq1Qvnz59fbS0AAMCutqUC2DuAAQAgzwwdOrTs+uuvP6l///4nFRYWltkI20NjY2Ns2rQpqquro6amJurr62PTpk2xefPmqK+vj+rq6qivr4/NmzfHpk2boqGhYZv/fxUWFkZJSUk0a9YsioqKoqysLIqKiqJZs2ZRUlISRUVFUVpa+r9/FRQUCIjtoqGhoeq11167a8yYMffMmTOnxkYAAIBdZUvvAFYAAwBAnujUqVP2nnvuGbXXXnudnM1mK22Ej9PQ0BAbN26MDRs2/J+/Nm7cGBs3boyamprYtGlTbNq0KWpqaqK2trbJnqe4uDhKSkqitLT0f/9eUVERFRUV0aJFi//zV0VFRRQWFvog8LHq6urWvvjii7eceOKJf169enW9jQAAADubAhgAAPLcXXfdddAXv/jF00tLS7vZRn7L5XKxYcOGWLt2baxbty7Wrl37d3+tW7cuNmzYkPd7atGiRbRu3TpatWoVrVu3jjZt2vzvf27dunW0aNHCh4morq5e+sgjj1zzne98Z6ptAAAAO5MCGAAA8tTVV189+MQTTzyzoqJioG3kj8bGxli5cmUsX748Pvjgg1i9evX//n3t2rXR2NhoSZ9RYWFhtGrVKtq1axdt27b937937tw5OnTo4LHTeWbDhg3z77333qvOPPPMebYBAADsDApgAADIM1/72tfaXHrppad27979qIjQRKVUQ0NDrFq1KlasWBHvv//+//595cqVTfqRzGlXXFwcHTp0iI4dO0bnzp2jY8eO0alTp2jXrp1HS6dYLpdrfOeddx76+c9/fv2ECRPW2QgAALAjKYABACBP9OrVq9ldd931jT322OM7hYWFZTaSHh9++GG88847sXTp0njvvfdixYoVsXr16mhoaLCchCgsLIz27dtHp06dolu3btG9e/fo3r27x0mnTENDQ9W8efNu++Y3v/nHJUuWbLYRAABgR1AAAwBAHrjrrrtG/NM//dOZJSUlXWwj2davXx9Lly6Nd955539L3w8//NBiUqqysvJ/y+C//tWqVSuLSbiamppljz322G9Gjx49xTYAAIDtTQEMAAAp9qtf/arPD3/4w5+1atVqL9tIno0bN8aSJUvirbfeikWLFsV7770XmzZtspg8V1JSEl27do0+ffpE3759o3fv3lFeXm4xCbRu3bqXr7322ivGjh27yDYAAIDtRQEMAAApNGjQoNI77rjju7vttttJBQUFWRtJhtWrV8ebb74ZixcvjiVLlsTy5cujsbHRYtiigoKC6Ny5c/Tu3Tt69+4d/fr1i7Zt21pMQjQ2Nta98cYbd33rW9+6ff78+TU2AgAAfFYKYAAASJHS0tKCBx988Jj99tvvn7PZbBsbaboaGhri7bffjrfeeisWLFgQS5YscXcv201FRUX06tUr+vbtG3379o2ePXtGYWGhxTRhdXV1a2bMmHHjV77ylYdqamr85gcAALDNFMAAAJASp59+erdf/vKX51ZWVu5jG03T6tWr47XXXouFCxfGm2++GRs3brQUdooWLVpE3759Y8CAATFw4EB3CDdh69evf/E//uM//vPqq69+xzYAAIBtoQAGAICEGzRoUOm99977w969ex+byWTc4teErF+/PubNmxcLFiyIN954Q+FLk9GiRYvo169fDBgwIPbYY4+orKy0lCYkl8s1LF68eNyJJ554rcdCAwAAW0sBDAAACXbNNdcMOemkk35RVlbWyzZ2vVwuF++++27MnTs3XnvttViyZIl3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B7lcrm7y5Mm//vKXv/yIbQAAwK63pXcAK4ABAMg7paWlBTNnzjyzT58+x9vG39uwYUOMGzcuZsyY4VHPQF7KZDKx3377xde//vWoqKiwkH+waNGiP+27775X1dTUeCwEAADsQgpgAAD4H926dctOnjz5V506dRppG/9fLpeLqVOnxp///OfYuHGjhQB5r6KiIkaNGhX777+/x0L/g+XLlz9+6KGHXvLuu+/W2QYAAOwaWyqAvQMYAIC8MXz48PInnnjiynbt2o2wjf/vnXfeiWuvvTaee+652Lx5s4UARMTmzZtjzpw58dprr0XPnj2jRYsWlvI/Kioq+n7rW98aMnXq1Ofee+89f3AAAMAusKV3ACuAAQDIC9/+9rc73n777X9o0aLFANv4b1VVVXHXXXfFvffeG+vXr7cQgI+wbt26eP7552P9+vWx2267RVFRkaVERElJSefjjjvuoA8++GDKK6+88hcbAQCAnUsBDABAXjv//PP7XXzxxX8oKSnpbBv/bfr06XHttdfGokWLLAPgU3jnnXdi2rRp0bp16+jc2R8nERHZbLbyC1/4whElJSUvTp48eY2NAADAzqMABgAgb/3ud7/b60c/+tFVRUVFrWwjYs2aNXHzzTfHpEmTora21kIAtkJtbW289NJL8c4770Tfvn2jtLQ073dSWFhYNnz48C/26dNn4UMPPbTMpwQAAHYOBTAAAHnp1ltv3f+b3/zmfxYWFjbP913kcrl4/vnn4/rrr4/ly5f7cAB8BitXroxp06ZFRUVFdOvWLTKZTF7vo6CgIDto0KBDBw0atOiBBx54xycEAAB2vC0VwJmex8Z+H/WF+pURa17ym6wAACTTww8//KXDDjvsXzKZTN6/rPGDDz6I22+/Pd544w0fDIDtbMCAAfGtb30r2rRpk/e7yOVyjVOmTPn1yJEjH/LJAACAHavN3jVR1OGjv6YABgAgdV555ZXTPve5z30r3/fQ0NAQjz32WDz++ONRV1fngwGwg2Sz2Tj66KPjC1/4QhQUFOT9Pl5//fU79tprr9/7ZAAAwI6jAAYAIC9ks9nMyy+/fFafPn2Oz/ddvPvuu3HbbbfFe++954MBsJN069YtvvOd70S3bt3yfhdLliy5f5999rmypqam0ScDAAC2PwUwAACpV1paWjBr1qyzevfufVw+7yGXy8WTTz4ZDz74oLt+AXaBbDYbxxxzTBxxxBF5fzfw0qVLHxg6dOjlSmAAANj+FMAAAKRar169mk2ePHlsu3btDsrnPaxcuTJuueWWePvtt30oAHaxnj17ximnnBIdOnTI6z2sXr16yiGHHPIvS5Ys2exTAQAA28+WCuDCyoHR9aO+0FgVUbMia3sAADRpQ4cOLXvqqacub9Omzf75uoNcLhfPPPNMXH/99bF27VofCoAmYP369TFlypQoKSmJnj17RiaTycs9NG/evPtJJ500ZPLkyc+sWLHCoykAAGA7KetcHwXlH/01BTAAAIk1ZMiQ0kceeeSKVq1a7Z2vO6iuro7bb789nnjiiWhs9IRNgKaksbEx5s+fH++//34MGDAgstn8/DlLaWlpp6997WuDn3rqqadXrlxZ75MBAACfnQIYAIDUOfTQQ1s8+OCDv2/ZsuUe+bqDOXPmxNVXX+2RzwBN3PLly+OFF16Ijh075u0joUtLSzudcMIJ+7/00ktPv/3227U+FQAA8NkogAEASJVhw4Y1v++++37TsmXLQfl4/vr6+hg/fnz88Y9/jNpaP0MHSILNmzfHiy++GJs3b47ddtstCgoK8m4HxcXFbY866qg9n3vuuaeXL1/ucdAAAPAZKIABAEiNI488snLcuHG/b9GixcB8PP97770XV111VcyZM8eHASCBFi1aFC+//HL069cvWrRokXfnLykp6XDcccftP2fOnGcWLVq0yScCAAC2jQIYAIBUOPLIIyvvvPPO35aXl++Wj+d/+umn48Ybb4wPP/zQhwEgwf7yl7/ECy+8ECUlJdGrV6+8O3+zZs3aHHXUUfspgQEAYNspgAEASLxjjz227W233faH5s2b98m3s1dVVcXNN98cTz31VDQ2NvowAKRAY2NjzJ8/P5YtWxYDBgyIZs2a5dX5mzVr1uaYY4458M0333xm4cKFNT4RAACwdRTAAAAk2qGHHtritttuuzofy9+33347rrnmmli8eLEPAkAKvf/++/HKK69Enz59orKyMq/Ons1mK4888sh9Zs6c+dTSpUs3+zQAAMCnpwAGACCxjjjiiJb33nvvteXl5f3y6dy5XC4mTZoUN998c1RVVfkgAKRYVVVVTJ06NbLZbPTp0ycymUzenL24uLjtV7/61c+/8sorTy1evLjWpwEAAD4dBTAAAIl06KGHtrj33nt/l2/lb3V1ddx0000xefLkyOVyPggAeSCXy8WCBQvi3Xffjd133z2y2fz5mUyzZs1aH3300fvNmDHjSXcCAwDAp6MABgAgcYYOHVo2fvz4qysqKgbk07mXLVsWV111lUc+A+SplStXxiuvvBKf+9znoqKiIm/O3axZszZHH3300GeeeebJFStW1PkkAADAlimAAQBIlCFDhpQ++uij17Rs2XL3fDr31KlT49prr42NGzf6EADksaqqqpg+fXq0bds2unTpkjfnLikpaT9q1KihTz755JMrV66s90kAAICPt6UCuMB6AABoSjp16pSdMGHCv1dWVu6RL2dubGyMcePGxR133BF1dW56AiCitrY2br755hg/fnw0NjbmzbkrKyv3mDBhwr9369bNXQkAALCNFMAAADQZrVq1Kpw+ffolbdq02T9fzlxdXR2/+93vYtKkSd73C8DfyeVy8fjjj8fvf//7qK6uzptzt2nTZv8pU6Zc0qpVq0KfAgAA2HoKYAAAmoSKioqC2bNnX9KuXbuD8uXMS5cujYsuuijmz5/vAwDAx3r11VfjoosuiqVLl+bNmdu1a3fQ7Nmz/72iosLPrgAAYCu5iAYAoEmYOXPmz9q1a3dIvpz35ZdfjiuuuCLWrVsnfAA+0bp16+KKK66Il19+OW/O3K5du4Nnzpz5M+kDAMDWUQADALDLvfjii2N69OgxKh/Omsvl4oEHHogbbrghamtrhQ/Ap1ZbWxs33HBDPPDAA3nz2oAePXqMevHFF8dIHwAAPj0FMAAAu9SkSZO+NnDgwFPy4ax1dXVx8803x8SJE73vF4BtksvlYuLEiXHLLbdEXV1dXpx54MCBJ0+aNOlr0gcAgE9HAQwAwC7z6KOPHnXggQeekw9nXbduXfz617+OWbNmCR6Az2zmzJnx61//Ol9eJZA58MADz3n00UePkjwAAHyywsqB0fWjvtBYFVGzImtDAADsEDfeeOO+Rx999EWZTKYw7Wddvnx5XHXVVbFy5UrBA7DdbNiwIWbPnh0DBw6MioqKtB8307179/179uz56sMPP7xc+gAA5LuyzvVRUP7RX1MAAwCw011xxRV7fPe7372qoKCgWdrPOmfOnPjtb38bGzduFDwA2111dXVMmzYtOnfuHB07dkz1WTOZTOHuu+9+eJs2bV6aNGnSKukDAJDPFMAAADQZZ5xxRvef/exnvy0sLCxP+1knTJgQd999d9TX1wsegB2moaEhXnrppchms9G3b99UnzWTyRTttddeB/3lL395dubMmRukDwBAvlIAAwDQJBx00EEVf/jDH64pLi7ulOZz5nK5eOCBB+Kxxx4TOgA77c+eBQsWRF1dXfTv3z8ymUxqz1pQUFBywAEHDJs+ffqkpUuXbpY+AAD5aEsFcIH1AACwMwwaNKj0vvvuu7qsrKxXms9ZV1cX1113XUyaNEnoAOx0EydOjOuvvz7q6upSfc6ysrJef/rTn67u379/idQBAODvKYABANjhKioqCh577LGLKyoqBqb5nNXV1XHNNdfE7NmzhQ7ALvPKK6/ElVdeGVVVVak+Z4sWLQZOnDhxbEVFhZ9vAQDA33CBDADADjdz5syftW3b9sA0n3HdunVx2WWXxRtvvCFwAHa5xYsXx2WXXRZr165N9TnbtWt34MyZM38mcQAA+P8UwAAA7FBPPvnkqB49eoxK8xlXrVoVV1xxRSxfvlzgADQZK1asiCuuuCJWrlyZ6nP26NFj1KRJk0ZJHAAA/lth5cDo+lFfaKyKqFmRtSEAALbZjTfeuO+XvvSlCzOZTGp/8fDdd9+NK6+8MtatWydwAJqc6urqmDVrVvTv3z8qKytTe85u3boN79mz57yHH37Yb2MBAJAXyjrXR0H5R39NAQwAwA5x3nnn9T311FOvLigoKE7rGV977bW45pprorq6WuAANFmbN2+OGTNmRI8ePaJ9+/apPGMmkykYNGjQIYWFhVOee+45v5UFAEDqKYABANipjjrqqFb/8R//8YdmzZq1SusZX3755bj++uujrq5O4AA0eQ0NDfHSSy9Fp06dolOnTqk8Y0FBQXbYsGGfnz9//qQ33nhjk9QBAEizLRXA3gEMAMB21a1bt+wNN9zwnyUlJR3TesYpU6bEjTfeGPX19QIHIDHq6+vjxhtvjKlTp6b2jCUlJZ1uuOGG/+jWrZu7GgAAyFsKYAAAtqunn376XyorK/dI6/kmTZoUd955ZzQ2NgobgMRpbGyMO+64I5588snUnrGysnLw008//UtpAwCQrxTAAABsN88///w3unTp8k9pPd/EiRNj3LhxkcvlhA1AYuVyubj//vtTXQJ36dLlS88+++yJ0gYAIB95BzAAANvFTTfdNPzII488L5PJZNJ4vsceeyzGjx8vaABS47XXXotmzZpF3759U3m+zp0779urV695Dz/88DJpAwCQNlt6B7ACGACAz+wXv/hF7x/+8IdXFxQUNEvj+R544IF45JFHBA1A6ixYsCDq6upiwIABqTtbJpPJDBo06ODGxsbnpk6dul7aAACkiQIYAIAd5oADDqj43e9+99tmzZq1TeP5xo0bF5MmTRI0AKm1aNGi2Lx5cwwcODB1ZysoKMjut99+w5577rnH33vvvc3SBgAgLbZUAHsHMAAA2yybzWbuvPPOfyktLe2exvNNmDBB+QtAXpg0aVI89NBDqTxbaWlpj3vuuedfstlsRtIAAOQDBTAAANvs+eef/06HDh0OTePZHn744Xj44YeFDEDeeOSRR+LPf/5zKs/WoUOHw5599tlvSxkAgHygAAYAYJvcd999hw8ePPjUNJ7t/vvvjwkTJggZgLzz2GOPxX333ZfKs+25554/+NOf/nSYlAEASDvvAAYAYKudccYZ3ceMGXN5QUFBcdrONnHixHjkkUeEDEDeWrx4cWSz2ejbt2/ajpbp06fPvn/5y18mz5w5c4OkAQBIsi29A1gBDADAVhk2bFjzG2+88Q/NmjVrl7azPfroo6l99CUAbI2FCxdGUVFR9OvXL1XnKigoKD7wwAP3e/LJJx9dsWJFnaQBAEiqLRXAHgENAMBWuffee39ZWlraPW3nevzxx+PBBx8UMAD8jz//+c8xceLE1J2rtLS0x3333fdLCQMAkFYKYAAAPrVJkyaN6tSp0xEpPFeMHz9ewADwD8aPHx+TJ09O3bk6der0hUmTJn1VwgAApJFHQAMA8Kmcd955fU888cR/z2QyRWk618yZM+Puu+8WMAB8jNdeey06duwYnTt3TtW5unbtuk9BQcHzzz333DopAwCQNN4BDADAZ3LEEUe0vOKKK67NZrOVaTrXyy+/HDfffHPkcjkhA8DHyOVyMXv27OjSpUt06tQpNefKZDJF++yzz/CpU6c+9u67726WNAAASeIdwAAAbLNsNpu55ZZb/q2kpKRjms61YMGCuPnmm6OxsVHIAPAJGhsb4+abb44333wzVecqLS3tcvfdd5+fzWYzUgYAIC0UwAAAbNGkSZO+3rZt2wPTdKZly5bFDTfcEPX19QIGgE+prq4urr322li+fHmqztWuXbsDH3/88VESBgAgLTwCGgCAj3XZZZcN+upXvzo2k8mk5hcH33///bjyyiujqqpKwACwlerq6uLll1+OIUOGRHl5eWrO1aVLl31LS0unPvPMM2ukDABAEngENAAAW61///4lJ5988q8ymUxRWs60YcOG+P3vfx8bN24UMABso40bN8bvfve7VP15WlBQkP3hD394ft++fYslDABA4q9vrQAAgI/y4IMPnl1WVtYrLeeprq6O3/zmN7Fq1SrhAsBntGrVqrjyyiujuro6NWcqKyvr8/DDD58lXQAAkk4BDADA/zF+/Pgju3XrdnRazlNfX5/KdxYCwK60fPnyuO6666K+vj41Z+rRo8dXx40bd4R0AQBIMgUwAAB/53vf+16nI4444py0nCeXy8Vtt90Wb7zxhnABYDt7/fXX47bbbotcLpeaMx155JHnfvvb3+4oXQAAkkoBDADA/6qoqCi4+OKLLywsLCxPy5nGjx8fs2bNEi4A7CCzZs2Khx56KDXnKSwsrPj1r399QUVFhZ+bAQCQSC5kAQD4XxMnThxdWVk5OC3nef7552PixImCBYAd7LHHHosXXnghNeeprKzc89FHHz1RsgAAJFFh5cDo+lFfaKyKqFmRtSEAgDxxwQUX7DZq1KgLM5lMYRrO8+qrr8Ytt9ySqkdSAkBT/7O3d+/e0a5du1Scp2PHjkNzudxzU6ZMWSddAACamrLO9VHwMc/wcwcwAADRt2/f4h//+McXZzKZVPwG4HvvvRc33HBDNDY2ChcAdpKGhoa47rrrYtmyZak4T0FBQfbss88e27dv32LpAgCQqGtZKwAAYPz48T8qKyvrkYazbNiwIX7/+99HbW2tYAFgJ9u0aVP8/ve/j40bN6biPGVlZb3GjRs3RrIAACSJAhgAIM/ddNNNw/v06XN8Gs5SX18f1157baxdu1awALCLrFmzJq699tqor69PxXn69ev3jd///vdDJQsAQFIogAEA8thBBx1Uceyxx/5rRGTScJ477rgjFi9eLFgA2MUWLVoUd955Z1qOU/CNb3zj34YNG9ZcsgAAJOIC1goAAPLXzTfffFZxcXG7NJxl4sSJMX36dKECQBMxbdq0mDRpUirOUlJS0unOO+88Q6oAACSBAhgAIE/913/914FdunT5UhrO8tprr8Wf//xnoQJAEzN+/PhYsGBBKs7SrVu3o2+66abhUgUAoKlTAAMA5KEvfelLlV/5yld+lYazrFixIq6//vpobGwULAA0MY2NjXHdddfFihUr0nCczHHHHfergw46qEKyAAA0ZQpgAIA8dPXVV5+ezWYrk36OmpqauPbaa2PTpk1CBYAmatOmTXHttddGTU1N4s+SzWbb3njjjT+RKgAATZkCGAAgz9x6663Du3Tp8uWknyOXy8Utt9wSK1euFCoANHErV66MW2+9NXK5XOLP4lHQAAA0dQpgAIA8MnTo0LKvfvWrv0jDWSZMmBBz584VKgAkxJw5c+Kxxx5LxVlGjRr1i6FDh5ZJFQCApkgBDACQR+64444fFRcXd0z6OV5++eV45JFHBAoACfPQQw+l4he4SkpKOt5xxx0/lCgAAE2RAhgAIE9cfvnlu/fs2XNU0s/xwQcfxB133JGKR0gCQL7J5XJx2223xZo1axJ/lp49ex57+eWX7y5VAACaGgUwAEAe6NatW/a73/3uv2YymURf/9XX18cNN9wQ1dXVQgWAhKqqqoobb7wx6uvrE32OTCZT8N3vfvdX3bp1y0oVAICmRAEMAJAHxo8ff0pZWVmvpJ/jnnvuiaVLlwoUABJuyZIlcd999yX+HGVlZT3Hjx9/ikQBAGhKFMAAACn385//vOeAAQNGJ/0c06dPjylTpggUAFJi8uTJMWPGjMSfY8CAAaN//vOf95QoAABNhQIYACDFstls5qyzzjo3k8kk+tGEK1asiLvvvlugAJAyd911V6xYsSLRZ8hkMtmzzjrr3Gw2m5EoAABNgQIYACDFxo0b98XKysq9knyG2trauOGGG6K2tlagAJAyf/1zfvPmzYk+R2Vl5V7jxo0bKVEAAJoCBTAAQEoNHz68/OCDDz4t6ee4//77Y/ny5QIFgJRavnx5jBs3LvHnGDFixI+HDRvWXKIAAOxqCmAAgJS69dZbT8tms22TfIYZM2bEc889J0wASLnJkyfHzJkzE32G4uLitrfffvtp0gQAYFdTAAMApNBVV121R48ePb6S5DOsXLky7rrrLmECQJ64++6744MPPkj0GXr27PnVK664Yg9pAgCwKymAAQBSprS0tOAb3/jGT5N8rdfY2Bi333679/4CQB6pqamJ2267LRobG5N8jIJvfvObZ5aWlvqZGwAAu+6i1AoAANJlwoQJX6uoqBiQ5DOMHz8+Fi1aJEwAyDNvvvlmPPjgg4k+Q4sWLQY9+OCDx0gTAIBdRQEMAJAiRx55ZOWwYcN+kOQzzJ07N5544glhAkCemjhxYixYsCDRZxg+fPiPjjjiiJbSBABgV1AAAwCkyBVXXHFyUVFRRVLnr6qqijvvvDNyuZwwASBP5XK5uP3226O6ujqxZygqKmrxm9/85mRpAgCwKyiAAQBS4vzzz+/Xu3fv45J8httvvz0+/PBDYQJAnlu3bl3cfvvtiT5D7969jz///PP7SRMAgJ1NAQwAkALZbDZz6qmn/jyTyST2+m769OkxZ84cYQIAERExe/bsmDFjRmLnz2QyBaeeeurPs9lsRpoAAOxMCmAAgBT44x//eERlZeXgpM6/du3auPfeewUJAPyde+65J9atW5fY+SsrKwf/6U9/+oIkAQDYmRTAAAAJ17dv3+JDDjnkR0k+w9133x01NTXCBAD+Tk1NTdx9992JPsPBBx/8o759+xZLEwCAnUUBDACQcHfdddc3S0pKOiV1/smTJ8e8efMECQB8pLlz58azzz6b2PlLSko63nPPPd+SJAAAO4sCGAAgwb70pS9VDhw48KSkzr9mzZoYP368IAGALXrggQdizZo1iZ2/f//+Jx111FGtJAkAwM6gAAYASLArrrji1MLCwvIkzp7L5eK2226LTZs2CRIA2KJNmzbFbbfdFrlcLpHzFxYWll1++eU/kCQAADuDAhgAIKF+8Ytf9O7evftXkjr/s88+G2+88YYgAYBP5Y033ojnn38+sfN369bt6F/96ld9JAkAwI6mAAYASKgf/vCHP8pkMom8nvvggw/igQceECIAsFXGjRsX69atS+TsmUym4NRTT/2xFAEA2NEUwAAACXTdddcNa9eu3YFJnD2Xy8Udd9wRtbW1ggQAtsqmTZvizjvvTOz8bdq02f+mm27aT5IAAOxICmAAgIQpLS0t+NrXvnZ6Uud/4YUXYuHChYIEALbJq6++GjNmzEjs/Mccc8zpFRUVfiYHAMAO42ITACBhbr/99oMrKip2S+LsGzZsiHHjxgkRAPhM7r///qiqqkrk7OXl5X3/67/+6wgpAgCwoyiAAQASpKKiouCwww47Nanz33vvvYn9YS0A0HRs2LAh7r///sTOf9BBB/1zq1atCiUJAMCOoAAGAEiQ+++//+iysrKeSZx9zpw58dJLLwkRANguXnjhhViwYEEiZy8tLe32xz/+8StSBABgR1AAAwAkRN++fYv33Xfff07i7LW1tXHvvfcKEQDYru6+++6oq6tL5Oz77bffKf379y+RIgAA25sCGAAgIW6++eZRxcXFbZM4+yOPPBJr164VIgCwXa1atSoee+yxRM6ezWbb3njjjV+TIgAA25sCGAAgAYYOHVq21157fSeJs7/33nvxxBNPCBEA2CEmTpwYK1asSOTsQ4YM+c7QoUPLpAgAwPakAAYASIBrr732xKKiosqkzZ3L5eKee+6JxsZGIQIAO0R9fX3cddddkcvlEjd7UVFR5bXXXnuCFAEA2J4UwAAATdwBBxxQMWDAgG8kcfYZM2bEW2+9JUQAYId6880348UXX0zk7AMGDPjG8OHDy6UIAMD2ogAGAGjirrrqqhOKiooqkjb3pk2b4oEHHhAgALBT3H///VFbW5u4uYuKilpcffXV7gIGAGC7UQADADRhBx10UEX//v0Teffvww8/HB9++KEQAYCdYv369TFhwoREzj5w4MBvHHDAARVSBABge1AAAwA0Yf/5n/95bGFhYfOkzb1q1aqYPHmyAAGAnerpp5+O1atXJ27uwsLC8ssuu2yUBAEA2B4UwAAATdQBBxxQMWjQoNFJnP3uu++O+vp6IQIAO1V9fX3cddddiZx99913/+bQoUPLpAgAwGelAAYAaKIuv/zyYwsLC8uTNvfcuXNjwYIFAgQAdokFCxbE3LlzEzd3UVFRi9/97ndflyAAAJ+VAhgAoAkaOnRo2aBBgxL37t+6urr405/+JEAAYJf605/+FHV1dYmbe/fdd//mkCFDSiUIAMBnoQAGAGiCfvOb33ylqKioZdLmfu655xL53j0AIF1Wr14dzz33XOLmLioqann11VcfLUEAAD4LBTAAQBPTq1evZoMHD/5m0uaurq6ORx55RIAAQJPwyCOPRHV1deLmHjJkyLe6deuWlSAAANtKAQwA0MTcdNNNxxQXF7dN2twTJkyIqqoqAQIATUJVVVUifzmtuLi43a233uouYAAAtpkCGACgCWnVqlXhXnvtdVLS5l61alU8++yzAgQAmpTJkyfHqlWrEjf30KFDR7dq1apQggAAbAsFMABAE3LLLbccXlJS0jlpcz/44INRX18vQACgSamvr48HH3wwcXOXlJR0vummmw6VIAAA20IBDADQRGSz2cwBBxzw7aTNvWjRonjppZcECAA0SS+99FIsXrw4cXOPGDHiO9lsNiNBAAC2lgIYAKCJuOaaa/YuLy/vm7S5H3roocjlcgIEAJqkXC6XyLuAy8vL+1111VV7SRAAgK2lAAYAaCK+8pWvfDdpM8+bNy8WLlwoPACgSVu4cGG8+uqrrg8BAMgLCmAAgCbgsssuG1RZWblPkmbO5XIxfvx44QEAifDAAw8k7qklrVu33veSSy7pLz0AALaGAhgAoAkYNWrUCUmbefbs2bFs2TLhAQCJsGzZsnjllVcSN/cJJ5xwovQAANgaCmAAgF3sn//5nzt37NjxiCTN3NjYGA888IDwAIBEGT9+fDQ0NCRq5k6dOn1h9OjRHaQHAMCnpQAGANjFfvSjH30tk8kk6rps2rRpsWrVKuEBAImyatWqeOGFFxI1cyaTKfzpT386SnoAAHxaCmAAgF1o0KBBpX369Plqkmaur6+PCRMmCA8ASKQJEyZEXV1dombu27fvV/r27VssPQAAPg0FMADALnTZZZcdXlRUVJGkmadOnRpr164VHgCQSOvXr48pU6YkauaioqLK3/zmN0dIDwCAT0MBDACwi2Sz2cy+++57UpJmrqurc/cvAJB4jz76aOLuAt5///1PymazGekBAPBJFMAAALvI1VdfPbSsrKx3kmaeMmVKbNiwQXgAQKJt2LAhnn/++UTNXFZW1ueqq67aS3oAAHwSBTAAwC7y5S9/+bgkzVtfXx8TJ04UHACQCo8//nji7gL+0pe+dLzkAAD4JApgAIBdYPTo0R3atm07IkkzT5s2LdatWyc8ACAVPvzww5g+fXqiZm7fvv2I0aNHd5AeAABbogAGANgFfvrTn47KZDKFSZm3vr4+HnnkEcEBAKnyyCOPRH19fWLmzWQyhT/96U+/JjkAALZEAQwAsJN16tQp26dPn6OTNLO7fwGANFq3bl1MmzYtUTP36dPnmE6dOmWlBwDAx1EAAwDsZFddddUB2Wy2dVLmbWxsjEmTJgmOVOvYsWN06OCJmgD5aNKkSdHY2JiYebPZbOurrrrqAMkBAPBxFMAAADvZiBEjvp6keV988cVYtWqV4Ei1Ll26xIUXXhinnXZadO3a1UIA8siqVavipZdecj0JAEBqKIABAHaiM844o3tlZeXeSZk3l8vFxIkTBUdeyGQyMXjw4PjVr34VY8aMcUcwQB55/PHHI5fLJWbeysrKvc8444zukgMA4KMogAEAdqJTTjnlqxGRScq8CxYsiPfee09w5JVMJhN77713XHjhhTFmzJho3769pQCk3HvvvRcLFy5M1B9X/3NdCQAA/4cCGABgJ+nVq1ezXr16fTlJM3v3L/nsr0XwBRdcECeffHK0bdvWUgBSLGnXPb169fpyr169mkkOAIB/pAAGANhJrrjiioOLiopaJmXeBN4JAztEYWFhDB8+PC688MIYPXp0VFZWWgpACi1YsCCWLVuWmHmLiopaXnnllYdIDgCAf6QABgDYSYYPH/6VJM2btHfhwY5WVFQUI0aMiEsuuSRGjx4dLVu2tBSAFMnlcvH4448naub99tvvK5IDAOAfKYABAHaC0aNHd6isrByalHnXrl0bL7/8suDgI/y1CL744ovjhBNOiBYtWlgKQEq89NJLsW7dusTMW1lZudfo0aM7SA4AgL+lAAYA2AlOP/30o5J07fXMM89EQ0OD4GALiouL47DDDouxY8fGqFGjoqyszFIAEq6hoSGeeeaZJI1c8D/XmQAA8P8vEq0AAGDHymazmX79+n05KfPW1tbGlClTBAefUnFxcYwcOTIuvfTSGDVqVJSWlloKQII9//zzUVtbm5h5+/Xr9+VsNpuRHAAAf6UABgDYwX7zm9/sWVJS0jkp886YMSOqq6sFB1uppKQkRo4cGZdcckkcffTRUVJSYikACVRdXR0zZ85M0p8/na+44orBkgMA4K8UwAAAO9gXvvCFLyVl1lwuF08//bTQ4DNo3rx5HHXUUXHJJZfEyJEjI5vNWgpAwjz11FORy+USM++RRx75ZakBAPBXCmAAgB1oyJAhpZ07dz4iKfO+/vrrsWLFCsHBdlBeXh6jRo2KSy+9VBEMkDArVqyI119/PTHzdunS5fD+/ft79AQAABGhAAYA2KHGjh17aGFhYWJeCOruX9j+KioqYtSoUXHxxRfH4YcfHkVFRZYC4LpouyosLGz+H//xHwdLDQCACAUwAMAOteeeex6ZlFnXrl0b8+bNExrsIK1atYrjjz8+LrroohgxYkQUFPh2DKApmzdvXqxZsyYx8+61115HSg0AgAgFMADADnPMMce0bt269b5Jmfe5556LxsZGwcEO1qZNmxg9enRcfPHFimCAJqyxsTGee+65JP35MvyYY45pLTkAAPykAQBgBznzzDMPz2Qyibje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FpafffbZvaQFAJA+CmAAgE9p//3375+EOV9//XVhAXmjvLw8Ro0aFf/+7/8eI0eOjGw2aymA67FP6fOf//xAaQEApI8CGADgU+rRo8fuTX3G2traePvtt4UF5J2KiooYNWpUXHzxxXH44Yc3+XdvAum2ePHiRLySo1evXoOkBQCQPgpgAIBPqXXr1k3+DoklS5ZEQ0ODsIC81apVqzj++OPj4osvjhEjRkRBgW97gZ2voaEhlixZ0uTnbNOmjQIYACCFfCcMAPApDBkypLR58+a9m/qcb775prAAIqJ169YxevToGDt2rCIYcF32MZo3b95n0KBBpdICAEgX3wEDAHwKp556av9MJtPkr53eeustYQH8jTZt2sTo0aPjvPPOi+HDhyuCAddlfyOTyRT84Ac/+Jy0AADSxXe+AACfwuDBg5v84/Hq6+tj0aJFwgL4CJ06dYqTTz45/u3f/i323nvvyGQylgLsUIsXL07Eqzn23HPPgdICAEgXBTAAwKfQpUuXAU19xnfeeSfq6uqEBbAFnTt3jjFjxiiCgR2utrY23n333SRc53oPMABAyiiAAQA+hZYtW/Zv6jN6/DPAp9elS5cYM2ZMnHvuuTF48GALAfL2+iwJ17kAAGwdBTAAwCcYPnx4eUlJSeemPqfHPwNsvV69esVpp50W55xzTvTvrwMB8u/6rLS0tPPw4cPLpQUAkB4KYACAT/Ctb31rt4ho8s8IXbx4sbAAtlGfPn3irLPOinPOOSd22203CwG2i4T8gl7m29/+dj9pAQCkhwIYAOAT7L777k2+CVi7dm1s2LBBWACfUZ8+feLss8+OM888M3r27GkhwGfy4Ycfxrp165r8nAMHDlQAAwCkSJEVAABsWadOnZr8D8TefvttQQFsRwMGDIgBAwbEggULYvz48bF06VJLAbb5Oq1Vq1audwEA2GkUwAAAn6CyslIBDJCnBgwYEP3794958+bFQw89FO+++66lAFtlyZIlsddeezX1613PvgcASBEFMADAFnTq1CnbvHnzXk19ziVLlggLYAfJZDIxePDg2GOPPeLll1+OBx98MFauXGkxQGqu05o3b967Xbt2RatXr66XGABA8nkHMADAFowZM6ZnJpPJNuUZGxsbPZoUYCfIZDKx9957x4UXXhhjxoyJ9u3bWwrwiZYuXRqNjY1NesaCgoLsqaee2kNaAADp4A5gAIAt2Hvvvfs29RlXrlwZtbW1wgLYSf5aBO+5554xa9asmDBhQqxevdpigI9UW1sb77//fnTu3LlJzzls2LC+EbFIYgAAyecOYACALejRo0eTL4DfeecdQQHsAoWFhTF8+PC48MILY/To0VFZWWkpQGKv15Jw3QsAwKejAAYA2ILWrVs3+ff/vvvuu4IC2IUKCwtjxIgRcckll8To0aOjZcuWlgIk7notCde9AAB8Oh4BDQCwBc2bN+/Z1GdUAAM0kW+wi4pixIgRsd9++8WUKVPiscceiw0bNlgMEO+9914SrnsVwAAAKeEOYACAj9G/f/+SkpKSjk19TgUwQNPSrFmzOOyww2Ls2LExatSoKCsrsxTIc0m4XistLe3Ut2/fYmkBACSfAhgA4GOccMIJ3Zr69dK6deuiqqpKWABNUHFxcYwcOTJ+/etfK4Ihz1VVVcX69eub+pgF3/zmN7tLCwAg+RTAAAAfY8iQIT2b+oxJeJwgQL77axE8duzYOProo6OkpMRSIA8l4botCde/AAB8MgUwAMDH6N69e8+mPqPHPwMkR/PmzeOoo46KSy65JEaOHBnNmjWzFMgjSbhuS8L1LwAAn0wBDADwMVq1atWjqc+4bNkyQQEkTHl5eYwaNSr+/d//PUaOHBnZbNZSIA8k4botCde/AAB8MgUwAMDHqKio6NXUZ1y+fLmgAJL750yMGjUqLr744jj88MOjqKjIUiDFknDd1rJly16SAgBIPgUwAMBHyGazmbKysq5NecbGxsZYtWqVsAASrlWrVnH88cfHxRdfHCNGjIiCAt+qQxqtWrUqGhsbm/SMJSUlXbPZbEZaAADJ5rtKAICPcNxxx7UrKCgobsozrl69Ourr64UFkBKtW7eO0aNHx9ixYxXBkEJ1dXXxwQcfNOkZCwoKio877rh20gIASDbfTQIAfITPf/7zXZr6jO+//76gAFKoTZs2MXr06Dj//PNj+PDhimBIkRUrVrgOBgBgh/NdJP+PvTuPr7I888d/nSwEkhD2HUQEUVRAoIiouCtq64Jabd1arVorbqO2tlXbaavTOu38Rqffdmpbu9rWpYogsqgFRXCttAIKArJDgAAJBLKQ5JzfH8WO4+DOcp6T9/v18jWvTv657ut6hNvnk/t+AICd2G+//bL+xVcSXiAC8PF17do1Lr300rj99ttj2LBhkUq5lRWSLgn7tyTsgwEAeH8FWgAA8H917txZAAxAVujevXtceeWVsXr16njiiSdi9uzZkclkNAYSKAn7tyTsgwEAeH8CYACAnWjXrp0roAHIKj169Igrr7wyli5dGpMmTYo5c+ZoCiRMEvZvSdgHAwDw/gTAAAA7UVxc3D3baxQAAzRPffr0ibFjx8aSJUti/PjxsWDBAk2BhEjC/i0J+2AAAN6fbwADAOxESUlJz2yur7q6Ourq6gwKoBnbb7/94l/+5V/ia1/7WhxwwAEaAglQV1cX1dXV9sEAAOxWAmAAgHc5/PDDSwsKCtpmc40VFRUGBUBERPTt2zduvPHGuOGGG2LffffVEMhy2b6PKygoaDt8+PASkwIASC4BMADAu5x44oldsr3GDRs2GBQA/8uAAQPiG9/4Rtxwww3Ru3dvDQH7uE+yH+5qUgAAyeUbwAAA79KvX7+sD4DXr19vUADs1IABA+LAAw+MuXPnxoQJE2LlypWaAlkkCTe5HHDAAV0i4i3TAgBIJgEwAMC7dO/evXO21+gEMADvJ5VKxaBBg2LgwIExe/bsGD9+fKxbt05jwD4uZ/bDAAC8NwEwAMC7tG/fvlO21ygABuDDSKVSMWzYsBg6dGjMnj07HnvsMbdIwF6WhBPASdgPAwDw3gTAAADv0rp166w/8ZCEF4cAZI+3g+BDDz00XnnllZg4caK/S8A+LtH7YQAA3psAGADgXUpKSrL6xENjY2Ns3rzZoAD4yPLz8+Pwww+P4cOHx/PPPx8TJ06MqqoqjYE9aPPmzdHY2BgFBdn7Wi7b98MAALw/ATAAwLu0bNmySzbXV1lZGZlMxqAA+Njy8/Nj1KhRMXLkyHjhhRcEwbAHZTKZqKqqio4dO9oPAwCwWwiAAQDepaioKKuvvKusrDQkAHaJgoKCGDVqVIwYMSJmzpwZkydPji1btmgM7IH9XDYHwNm+HwYA4P3laQEAwP8YPnx4SX5+fkk21ygABmBXa9GiRRx//PFxxx13xNlnnx0lJSWaAs14P5efn18yfPhwfxAAACSUABgA4B2OOOKIDtleo+//ArC7FBUVxejRo+P73/9+nH322VFcXKwpsBsk4cr1JOyLAQDYOQEwAMA79O3bt1221+gEMAC729tB8B133BGnn356tGrVSlOgme3n9ttvv7YmBQCQTAJgAIB36NSpkwAYAHYoKSmJz3zmM3HnnXfG6NGjo0WLFpoCzWQ/l4R9MQAAOycABgB4hw4dOrTN9hqTcGUgALmlpKQkzj777PjOd74To0aNivz8fE2BHN/PJWFfDADAzgmAAQDeoaysrG221ygABmBvad++fVx00UVx5513xgknnBCFhYWaAjm6nysrK3MCGAAgoQTAAADvUFJS0j6b68tkMlFdXW1QAOxV7dq1i/POOy+++93vxqhRoyIvz+sF+CiSsJ8rLS0VAAMAJJT/QgMAeIfi4uK22VxfXV1dNDY2GhQAWeHtE8F33HGHIBg+gsbGxqirq7MvBgBgt/BfZgAA79CqVausPung9C8A2ahDhw5x0UUXxbe//e04/PDDBcGQA/u6oqIiJ4ABABLKf5EBALxDQUGBABgAPqauXbvGpZdeGt/61rdi2LBhkUqlNAUSuq9r0aJFW1MCAEimAi0AAPgfhYWFZdlc39atWw0JgKzXrVu3uPLKK2P16tXxxBNPxOzZsyOTyWgMJGhfl+37YgAA3psAGADgnZujgoLW2VyfE8AAJEmPHj3iyiuvjKVLl8akSZNizpw5mgIJ2ddl+74YAID35gpoAIAdWrdunZefn98ym2sUAAOQRH369ImxY8fGLbfcEgMGDNAQSMC+Lj8/v1WrVq28OwQASCCbOACAHQYNGlQSEVn9scJt27YZFACJtd9++8UNN9wQX/va1+KAAw7QEJq1BOzr8gYPHlxsUgAAySMABgDY4YADDijJ9hpramoMCoDE69u3b9x4441xww03xL777qshNEu1tbVZX2P//v1LTQoAIHl8AxgAYIeePXtm/QuuJLwoBIAPa8CAATFgwICYP39+jBs3LpYvX64pNBtJ2Nf16NGjxKQAAJJHAAwAsEOnTp0EwACwFwwYMCAOPPDAmDt3bkyYMCFWrlypKeS8JOzrunbtKgAGAEggATAAwA5lZWVZ/4Krrq7OoADISalUKgYNGhQDBw6M2bNnx4QJE2Lt2rUaQ85KQgDcpk0bV0ADACSQABgAYIeysjIngAFgL0ulUjFs2LAYOnRozJ49O8aPHx/r1q3TGHKOABgAgN1FAAwAsENJSUlxttfoBDAAzcXbQfCQIUPi5ZdfjokTJ0ZFRYXGkDOSEAAnYX8MAMD/JQAGANihqKioKNtrrKmpMSgAmpW8vLw4/PDDY/jw4fH888/HE088EZWVlRpD4iUhAG7RokWRSQEAJI8AGABgh8LCwhbZXF86nY7t27cbFADNUn5+fowaNSpGjhwZL7zwQkycODGqqqo0hsTavn17ZDKZSKVSWVtjixYtWpgUAEDyCIABAHbI9gC4oaHBkABo9goKCmLUqFExYsSImDlzZkyePDm2bNmiMSROJpOJhoaGyOaMtbCw0AlgAIAk/neTFgAA7NgYFRRk9QuuxsZGQwKAHVq0aBHHH398HHnkkfHMM8/E1KlTY9u2bRpDomR7AJzt+2MAAN5jH6cFAAA7NkZZ/oLL9c8A8H8VFRXF6NGj49hjj41nnnkmpkyZEjU1NRpDImT7DS8FBQWugAYASCABMADA2xujLH/B5QpoAHhvbwfBRx11VEyfPj2efvrpqK2t1RiymgAYAIDdIU8LAAD+QQAMAMlXUlISn/nMZ+LOO++M0aNHZ/X1uiAABgBgdxAAAwDskO1XQAuAAeDDKykpibPPPjv+7d/+LUaPHh2FhYWagv3dR5Sfn9/SlAAAkkcADADw9sYoL88JYADIMa1bt46zzz47vve978UJJ5wgCMb+7iPIz8/3LwwAQAIJgAEAdkilUlm9N2psbDQkAPiY2rVrF+edd15897vfjRNOOCEKCgo0Bfu7D94f55sSAEDyCIABAHbI9gA4nU4bEgB8Qu3bt/9nEDxq1KjIy/NqBPu799kfp0wJACB5/FcOAMAOXnABQPPRoUOHuOiii+J73/ueIJi9JpPJZHuJ/sUAAEggmzgAgP+R1QFwAl4QAkDidOzYMS666KL41re+FYcffnj4fTDs796xOc7yG3IAANg5mzgAgITsjQTAALD7dOvWLS699NL41re+FcOGDRMEs0dk+xXQeXl5/kUAAEigAi0AAPiHbH/BJQAGgN2ve/fuceWVV8ayZcviiSeeiDlz5mgKzXl/5/AIAEACCYABAHbIZDJOAAMAERGx7777xtixY2PJkiUxYcKEmD9/vqZgfwwAQCIIgAEA/ocr7gCA/2W//faLG264Id56660YP358vPnmm5rCLpPtV0Cn3IUOAJBIAmAAgB2y/QVXtr8gBIBc1rdv37jxxhvjrbfeinHjxsWiRYs0hU/MFdAAANjEAQDsXln9Bs4BDADY+/r27Rs333xz3HDDDdG7d28NIdf3d75BAgCQQE4AAwDskO0nMATAAJA9BgwYEAMGDIj58+fHI488EitXrtQUcnF/5woaAIAEcgIYAGCHVCqVzvL6DAkAssyAAQPi1ltvjbFjx0bPnj01hJza32UScEc1AAD/lxPAAAD/QwAMAHysv6MHDRoUBx98cDz//PMxadKk2LRpk8aQ+P1dtv+CJAAAO+cEMADADul0dr/fEgADQHarr6+PioqK2LZtm2aQE/u7dDrtBDAAQAI5AQwA8D+cAAYAPrK6urp4+umnY9q0acJfcm1/5wQwAEACCYABAP6HEw4AwIfW0NAQ06ZNiyeffDK2bt2qIXxkCfgGsAAYACCBBMAAADtkMpmsDoDz8ny9AwCywdvB71NPPRXV1dUaQs7u7wTAAADJJAAGANgh219wCYABYO9qbGyMGTNmxJNPPhmVlZUawieWn5+f9VtkUwIASB4BMADADplMpiGb6yssLDQkANgL0ul0zJo1KyZPnhwbN27UEHaZgoLsfjXX1NTUaEoAAAncZ2oBAMA/NDY2bs/m+gTAALBnpdPpePnll2Py5Mmxdu1aDWGXa9GiRbb/O1BvSgAAySMABgDYoampSQAMAEQmk4nZs2fH448/HuXl5RpCs93fNTY2CoABABJIAAwAsENDQ0NWv+ASAAPA7vV28PvEE0/E6tWrNYTdLtuvgM72G3IAAHiPfaYWAAD8gyugAaD5mjNnTkyaNCmWLl2qGewx2X4FtAAYACCZBMAAADs0NTU5AQwAzcyCBQtiwoQJ8dZbb2kG9nfv0tDQIAAGAEggATAAwA7Z/oJLAAwAu87ChQtj/PjxsXjxYs1gr8n2K6Cz/RckAQB4j32mFgAA/EO2B8AFBQWRl5cX6XTasADgY1q+fHmMGzcu5s+frxnsVXl5eVkfAG/fvt0JYACABBIAAwDs0NDQkPUnHFq1ahXbtm0zLAD4iFauXBmPPPKI4Jes2tclYH8sAAYASCABMADADrW1tXXZXqMAGAA+mnXr1sX48eNj9uzZkclkNISs2tdlu7q6ulqTAgBIHgEwAMAOW7du3ZrtNSbhRSEAZIP169fHY489JvjFvu4TqK6u3mpSAADJIwAGANihqqpKAAwACbdhw4Z4/PHH45VXXommpiYNwb7uE6isrHT1DABAAgmAAQB22LRpU9a/4GrZsqVBAcBOVFVVxcSJE+OFF16IxsZGDSHrJSEA3rRpkxPAAAAJJAAGANhh3bp1WR8AOwEMAP/bli1bYsKECYJfEicJ+7ry8nIBMABAAgmAAQB2WLZsmSugASAhqqurY/LkyTFz5syor6/XEBInCfu6pUuXCoABABJIAAwAsMP8+fOz/gRwcXGxQQHQrNXU1MSUKVPimWeeEfySaEnY173++uu+AQwAkEACYACAHRYsWFCXyWQaUqlUYbbW2Lp1a4MCoFmqq6uLp59+OqZNmxbbtsmkSL5s39el0+mGpUuXbjcpAIDkEQADALxDU1PTtoKCgrbZWp8AGIDmZvv27TF9+vR48sknY+tWt9GSO7J9X9fU1ORfOACAhBIAAwC8Q0NDw9ZsDoBLS0sNCYDm8ndyTJs2LZ566qmorq7WEHJOtu/rGhsb/YsHAJBQAmAAgHeor6+vbNWqVc9src8JYAByXWNjY8yYMSOefPLJqKys1BByVrbv6+rr66tMCQAgmQTAAADv0NDQkNVvmgXAAOSqdDods2bNismTJ8fGjRs1hJyX7fu6bN8XAwDw3gTAAADvUFdXV5XN9ZWWlkYqlYpMJmNYAOSETCYTr732Wjz++OOxatUqDaFZSKVSUVJSktU11tbWVpkUAEAyCYABAN5h27Ztm7K5vvz8/GjVqlXU1NQYFgCJlslkYvbs2fH4449HeXm5htCstGrVKvLz87O6xq1btzoBDACQUAJgAIB3qK6u3pztNZaVlQmAAUist4PfiRMnxpo1azSEZqmsrCzra9y2bVuVSQEAJJMAGADgHaqqqjZle43t2rWLtWvXGhYAiTNnzpyYNGlSLF26VDNo1tq1a5f1NW7atMkJYACALNbQWBgFjQ0REZFKRSavMJre/pkAGADgHSoqKqqyvcYkvDAEgHdasGBBTJgwId566y3NgITs5zZs2CAABgDIYoUFDf9MejMRqab0/+S+AmAAgHdYtWpV1r/oatu2rUEBkAgLFy6M8ePHx+LFizUD3iEJAfDq1aurTAoAIJkEwAAA77BgwYKsD4CdAAYg2y1fvjzGjRsX8+fP1wzYiST8Ql8S9sUAAOycABgA4B2eeOKJjZlMpimVSuVna41OAAOQrVauXBmPPPKI4Bc+QLb/Ql8mk2l64oknNpoUAEAyCYABAN6huro6vX379g1FRUVdsrVGJ4AByDZr166NCRMmxOzZsyOTyWgIJHw/t3379g3V1dVpkwIASCYBMADAu9TV1a0XAAPAB1u/fn089thjgl/Isf1cXV3delMCAEguATAAwLvU1dVVtGnTJmvrKykpiRYtWsT27dsNC4C9oqKiIiZOnBivvPJKNDU1aQh8BEVFRVFcXJz1+2GTAgBILgEwAMC7bN26dV2XLll7ADhSqVR07Ngx1qxZY1gA7FFVVVUxceLEeP755wW/8DF17NgxUqlU1u+HTQoAILkEwAAA71JVVZX1Jx46deokAAZgj9m8eXM8/vjj8cILL0RjY6OGwCfcx9kPAwCwOwmAAQDeZf369Vn/zbMkvDgEIPm2bNkSU6ZMiZkzZ0Z9fb2GwC7QsWNH+2EAAHYrATAAwLusXr066088JOHFIQDJVVNTE1OmTIlnnnlG8Au7WBJ+kW/VqlUCYACABBMAAwC8y9///ves/+aZABiA3aG2tjYmT54czz77bNTV1WkINNN93KuvvioABgBIMAEwAMC7PPzww+t//OMfN6RSqcJsrbFz584GBcAus3379pg+fXpMnTo1tm3bpiGwG2X7CeB0Ot3w8MMPC4ABABJMAAwA8C7V1dXpurq68latWu2TrTV26NAh8vLyIp1OGxgAH1tDQ0NMmzYtnnrqqaiurtYQ2M3y8vKiQ4cOWV1jfX39mtraWptMAIAEEwADAOxEbW3tmmwOgAsKCqJdu3axceNGwwLgI2tsbIwZM2bEk08+GZWVlRoCe0j79u2joCC7X8fV1NSUmxQAQLIJgAEAdmLz5s2r2rdvn9U1duvWTQAMwEeSTqdj1qxZMXnyZH+HwF7av2W7LVu2rDQpAIBkEwADAOzEpk2bVvfp0yera+zWrVvMmzfPsAD4QG8Hv1OmTIkNGzZoCOzF/Vu227BhwxqTAgBINgEwAMBOrFixYvWwYcOyusYkvEAEYO/KZDLx0ksvxZQpU6K83K2usLd17do162tctWrVKpMCAEg2ATAAwE7Mnz9/9ZgxY7K6xiS8QARg78hkMjF79uyYOHFirFnjMB9kiyT8At+8efP8oQEAkHACYACAnRg3btyab37zm5mISGVrjU4AA7Azc+bMiSeeeCKWLVumGZBlEvALfJlx48atNikAgGQTAAMA7MTrr79e29DQsKmwsLBDttZYXFwcZWVlsWXLFgMDIBYsWBDjx4+PJUuWaAZkobKysiguLs7qGhsaGjYuWLCgzrQAAJJNAAwA8B62bt26vF27dh2yucauXbsKgAGauYULF8b48eNj8eLFmgFZLAm3t2zbtm25SQEAJJ8AGADgPVRVVS1t167d0GyusWfPnrFw4ULDAmiGli1bFo899ljMnz9fMyABevbsmfU1VlZWLjUpAIDkEwADALyHdevWLevTp09W15iEF4kA7ForVqyIRx99VPALCZOEfdvatWuXmRQAQPIJgAEA3sPChQuXHX744VldY69evQwKoJlYtWpVjB8/PubOnRuZTEZDIGGSsG9buHDhMpMCAEg+ATAAwHuYNm3a0ksuuSSra+zevXvk5+dHU1OTgQHkqHXr1sX48eNj9uzZgl9IqIKCgkR8A/jpp59eZloAADmw/9QCAICde+ihhzbcd999W/Pz80uzdjNXUBBdunSJNWvWGBhAjqmoqIiJEyfGyy+/HOl0WkMgwbp27RoFBdn9Gq6xsbH6kUce2WBaAADJJwAGAHgf27ZtW15WVnZwNtfYq1cvATBADqmqqoqJEyfG888/74YHyBFJ+P7vtm3blpsUAEBuEAADALyPLVu2LMv2ALhnz57x0ksvGRZAwm3evDkef/zxeOGFF6KxsVFDIIck4fu/W7ZsWWpSAAC5QQAMAPA+1q9fvyzbT2z06NHDoAASbMuWLTFlypSYOXNm1NfXawjkoCTs19avX7/MpAAAcoMAGADgfSxYsGDh0KFDs7rGfffdN1KpVGQyGQMDSJCampqYMmVKPPPMM4JfyGGpVCr23XffrK9z/vz5C00LACA3CIABAN7Ho48++uYFF1yQ1TWWlJRE586dY926dQYGkAC1tbUxefLkePbZZ6Ourk5DIMd17do1WrVqlfV1/vnPf15kWgAAuUEADADwPiZNmlRVX1+/oaioqGM217nvvvsKgAGy3Pbt22P69OkxderU2LZtm4ZAM9GnT5+sr7G+vr7iySefrDItAIDcIAAGAPgAW7duXZTtAXCfPn3ipZdeMiyALNTQ0BDTpk2Lp556KqqrqzUEmpkkXP+8detWp38BAHKIABgA4ANUVFQs7NChw8hsrjEJLxYBmpvGxsaYMWNGPPnkk1FZWakh0EwlYZ9WUVHh+78AADlEAAwA8AGWLl266MADD8zqGnv16hUFBQXR2NhoYAB7WTqdjlmzZsWkSZNi06ZNGgLNWGFhYfTs2TMR+13TAgDIHQJgAIAPMHPmzEWnnnpqdm/qCgqiZ8+esWzZMgMD2EveDn4nT54cGzdu1BAg9tlnn8jPz0/CfnexaQEA5I48LQAAeH+//OUvV6bT6bpsr7NPnz6GBbAXZDKZePHFF+O73/1u3H///cJf4J+ScP1zOp2u++Uvf7nStAAAcocTwAAAH6C6ujpdXV29uE2bNodkc539+vWL6dOnGxjAHpLJZGL27NkxceLEWLNmjYYAO92fJWCvu7i6ujptWgAAuUMADADwIWzYsGFetgfA/fv3NyiAPeTVV1+NSZMmxapVqzQD2KlUKpWI/dmGDRvmmhYAQG4RAAMAfAiLFy9+o2/fvlldY1lZWXTu3DnWr19vYAC7yYIFC2L8+PGxZMkSzQDeV5cuXaK0tDQJ+9z5pgUAkFsEwAAAH8JTTz31+ujRo7O+zv33318ADLAbLFy4MMaPHx+LFy/WDOBD78uSYMqUKa+bFgBAbsnTAgCAD/aLX/xiTWNjY1W215mUF40ASbFs2bK4++674z/+4z+Ev8BHkoTv/zY0NFTee++9q00LACC3OAEMAPAhNDQ0ZDZv3jy/Q4cOI7O5TgEwwK6xYsWKePTRR2P+fDejArm7L9uyZYs/5AAAcpAAGADgQ1q3bl3WB8AdO3aMNm3axObNmw0M4GNYtWpVjB8/PubOnRuZTEZDgI+lbdu20aFDh0Tsb00LACD3CIABAD6kefPmzTvooIOyvs4DDzwwXnrpJQMD+AjWrVsX48ePj9mzZwt+gV2yH0uCuXPnzjMtAIDcIwAGAPiQ/vznP88/77zzsr7OAw44QAAM8CFVVFTEuHHjBL/ALt+PJcHDDz/sBDAAQA4SAAMAfEgTJ06srK2tXdGqVat9srnOgw8+2LAAPkBVVVVMnDgxnn/++WhqatIQYJdKwq0xNTU1yydNmlRlWgAAuUcADADwEWzYsOHvvXr1yuoAuG3bttG1a9dYu3atgQG8y+bNm+Pxxx+PF154IRobGzUE2OW6desWbdu2TcS+1rQAAHKTABgA4CNYuHDha7169Toj2+scMGCAABjgHbZs2RJTpkyJ5557LrZv364hwG6TlO//Lly48O+mBQCQmwTAAAAfwcSJE/9+wgknZH2dBx54YEyfPt3AgGavpqYmpkyZEs8880zU19drCLDbDRgwIBF1jh8//u+mBQCQmwTAAAAfwb333rv6Bz/4wfqioqLO2VznAQccEHl5eZFOpw0NaJZqa2tj8uTJ8eyzz0ZdXZ2GAHtEXl5e9O/fP+vrrK+vX3ffffeVmxgAQG4SAAMAfESVlZVzu3btmtXHgFu1ahX77LNPLFu2zMCAZqWuri6efvrpmDZtWmzbtk1DgD1qn332iVatWmV9nZs2bZpjWgAAuUsADADwES1dunR2tgfAERGDBg0SAAPNRkNDQ0ybNi2eeuqpqK6u1hBgr+2/kuCtt976m2kBAOQuATAAwEc0ffr0v48cOTLr6xw4cGBMmDDBwICc1tDQEM8991w8+eSTUVlZqSHAXt9/JcG0adP+bloAALlLAAwA8BH9x3/8x9JbbrmlOj8/v3U219mrV68oKyuLLVu2GBqQc9LpdMyaNSsmTZoUmzZt0hBgrysrK4tevXplfZ2NjY1b7rnnnmUmBgCQuwTAAAAfUW1tbXrDhg1/7dKly3HZXGcqlYqBAwfGrFmzDA3IGW8Hv5MnT46NGzdqCJA1Bg4cGKlUKuvr3Lhx4yu1tbVpEwMAyF0CYACAj+Gtt956JdsD4IgQAAM5I51Ox8svvxxTpkyJ8vJyDQGyct+VBIsWLXrFtAAAcpsAGADgYxg/fvwrRxxxRNbXedBBB0VBQUE0NjYaGpBImUwmZs+eHRMnTow1a9ZoCJCVCgoK4qCDDkpErY888ogAGAAgx+VpAQDAR/fjH/94ZX19/fpsr7OoqCj69etnYEAivfrqq3HHHXfEz3/+c+EvkNX69esXRUVFWV9nXV1d+b333rvaxAAAcpsTwAAAH9OGDRte6dGjx6ezvc5BgwbFggULDAxIjCVLlsSECRNi/vz5mgEkwuDBgxNR5/r1653+BQBoBgTAAAAf07x5815OQgA8bNiwePjhhyOTyRgakNXefPPNmDBhQixevFgzgMRIpVIxdOjQRNQ6d+7cl0wMACD3CYABAD6m++677+XRo0dnIiKVzXW2bds2evfuHcuWLTM0ICstW7YsHnvsMSd+gUTq06dPtG3bNgmlpu+9996/mhgAQO4TAAMAfEwTJ06s3Lp165LS0tK+2V7rkCFDBMBA1lmxYkU8+uijgl8g0YYMGZKIOqurqxc+/fTTm00MACD3CYABAD6B8vLyl/fff/+sD4AHDx4c48aNMzAgK6xcuTImTJgQc+fOdT09kHhJ+f7vmjVrfP8XAKCZEAADAHwCM2fOfG7//ff/fLbX2a1bt+jWrVuUl5cbGrDXrFu3LsaPHx+zZ88W/AI5oWfPntGlS5dE1DpjxoznTAwAoHkQAAMAfAK33Xbba5dcckl1fn5+62yvdciQIQJgYK9Yv359PPbYY4JfIOck5frnxsbGzbfddts8EwMAaB4EwAAAn0BlZWXThg0b/tqlS5fjsr3WQw89NCZNmmRowJ78MzKeeOKJeP7556OpqUlDgJxz6KGHJqLOioqKV6qrq9MmBgDQPAiAAQA+oXnz5s1MQgDcu3dv10ADe0RVVVVMnDgxXnjhhWhsbNQQICd17949evbsmZT9quufAQCakTwtAAD4ZP77v/97VkQk4kTFpz71KQMDdpstW7bEQw89FLfffns899xzwl8gpw0fPjwRdWYymfTdd9/9gokBADQfTgADAHxCkyZNqtqyZcuCsrKyg7K91uHDh8fjjz9uaMAuVVNTE1OmTIlnnnkm6uvrNQTIealUKg477LBE1Lply5bXp0+fvsXUAACaDwEwAMAusHz58lkDBw7M+gC4S5cu0atXr1i5cqWhAZ9YbW1tTJ48OZ599tmoq6vTEKDZ6N27d3Ts2DEx+1QTAwBoXgTAAAC7wLPPPvvCwIEDr0hCrcOGDRMAA59IXV1dPP300zFt2rTYtm2bhgDNzrBhwxJT61/+8pcXTQwAoHnxDWAAgF3g1ltvnV9fX782CbUefvjhkUqlDA34yBoaGmLq1Klx6623xuOPPy78BZqlJF3/XFdXt/rWW29dYGoAAM2LE8AAALtAQ0NDZs2aNc/16dPns9lea7t27aJPnz6xZMkSgwM+7J9xMW3atHjqqaeiurpaQ4Bmbb/99ou2bdsmotbVq1fPNDEAgOZHAAwAsIs8++yz05IQAEdEHHHEEQJg4AOl0+mYNWtWTJo0KTZt2qQhABFx5JFHJqbW6dOnTzMxAIDmxxXQAAC7yC233PJaQ0NDZRJqHT58eLRo0cLQgJ1Kp9Px3HPPxW233Rb333+/8Bdgh6KiovjUpz6ViFobGho23HLLLXNNDQCg+XECGABgF6murk6Xl5c/t88++5yR7bW2bNkyDj300Hj55ZcNDvindDodL7/8ckyZMiXKy8s1BOBdhgwZEkVFRYmodc2aNc/V1tamTQ0AoPkRAAMA7EIvvvjiM0kIgCMiRo4cKQAGIiIik8nE7NmzY+LEibFmzRoNAXif/VNSzJo161kTAwBongTAAAC70O233/7KOeecszU/P78022sdMGBAtG/f3tWu0My9+uqrMWnSpFi1apVmALyPjh07xgEHHJCIWhsbG6u/8Y1v/NXUAACaJwEwAMAutHLlyob169fP6tat2+hsrzWVSsXhhx8ekyZNMjhohubMmROTJ0+OJUuWaAbAh3D44YdHKpVKRK3r16+fVVFR0WhqAADNU54WAADsWq+++mpirts77LDDDAyamTfffDP+/d//PX7yk58IfwE+pFQqFSNGjEhMva+88sozpgYA0Hw5AQwAsIvddNNNz5166qnV+fn5rbO91m7dukX//v1j4cKFBgc5btmyZfHYY4/F/PnzNQPgIzrggAOic+fOiai1sbFxy4033jjL1AAAmi8BMADALrZy5cqG8vLyGT179vx0Euo9+uijBcCQw5YvXx7jxo0T/AJ8wv1SUpSXlz9TXl7eYGoAAM2XABgAYDeYMWPGUxdccEEiAuAhQ4ZE69ato7q62uAgh6xcuTImTJgQc+fOjUwmoyEAH1ObNm3i0EMPTUy9zz777FOmBgDQvPkGMADAbvDVr371lYaGhk1JqLWgoCCOOOIIQ4McsW7duvj5z38ed955Z8yZM0f4C/AJjRw5MvLz8xNRa0NDw8abbrrpVVMDAGjenAAGANgNKisrm1atWjW9T58+5ySh3qOPPjqefPJJQREk2Pr16+Oxxx6L2bNn+3cZYBdJpVIxatSoxNS7cuXKadXV1WmTAwBo3pwABgDYTaZNm5aY6/c6duwYAwYMMDRIoA0bNsSvf/3r+Nd//dd49dVXhb8Au9CAAQOiY8eOian36aefftLUAAAQAAMA7CZf+9rX5tTX11ckpd6jjjrK0CBBqqqq4v77749vf/vb8eKLL0ZTU5OmAOxiRx55ZGJqra+vX/eNb3zjdVMDAMAV0AAAu0ltbW16xYoVT++///6fT0K9hx56aLRt2zaqqqoMD7LYli1bYsqUKfHcc8/F9u3bNQRgN2nbtm0MGTIkMfUuX778qdraWtc/AwDgBDAAwO70xz/+cUJSas3Pz4/jjjvO0CBL1dTUxKOPPhq33XZb/OUvfxH+Auxmxx57bOTn5yel3Myvf/3rCaYGAECEABgAYLe66667llZXV89PSr1HH310tGjRwuAgi7wd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qATAAABZ4umnn968fPnyxF3xN3r06GjXrp0BAgBZqUOHDnH88ccnru5ly5ZNmD59+hYTBADgoxIAAwBkkbvvvvtPmUymKUk1FxYWxumnn254AEBWOvPMMxP3yYpMJtN41113/dH0AAD4OATAAABZ5Be/+MWatWvXTkta3UcccUT06tXLAAGArNK7d+847LDDEld3eXn5X+6///51JggAwMchAAYAyDIPP/zwn5JWcyqVijPPPNPwAICsMmbMmEilUomr+8EHH/yT6QEA8HEJgAEAsszXv/71NzZs2DAraXUPHDgwDj74YAMEALLCoEGDYsCAAYmru6KiYuatt966wAQBAPi4BMAAAFlo3Lhxv01i3WPGjIm8PFtMAGDvysvLizFjxiSy9j//+c+/NUEAAD7RflgLAACyz/XXXz+nqqrqr0mru1evXnHUUUcZIACwVx1zzDHRvXv3xNW9adOmV2666aa5JggAwCchAAYAyFJ/+tOf7k1i3WPGjInS0lIDBAD2ijZt2sRZZ52VyNofeOCBe00QAIBPSgAMAJClbrrpprlJPAVcXFwcZ555pgECAHvFWWedFS1btkxc3Zs2bXrl5ptvnmeCAAB8UgJgAIAsNm7cuF8lse5Ro0ZF7969DRAA2KP69OkTI0eOTGTtjz322K9MEACAXUEADACQxcaOHTu7qqrqb0mrO5VKxfnnnx+pVMoQAYA9tv/4/Oc/n8j9R2Vl5d+uueaav5kiAAC7ggAYACDLTZ069bdJrLtv374xZMgQAwQA9ojDDjsssTeQTJ48+TcmCADAriIABgDIcpdeeumLVVVVryax9s9//vNRXFxsiADAblVaWhrnn39+Imuvqqr66+WXX/6SKQIAsKsIgAEAEuChhx76WRLrLisri9NPP90AAYDd6qyzzoqSkpIklp753e9+91MTBABgVxIAAwAkwA033DB3w4YNs5JY+3HHHRd9+vQxRABgt+jbt28cddRRiay9oqJi1te//vU3TBEAgF1JAAwAkBA///nPfxoR6aTVnUql4vOf/3zk5dl6AgC7Vn5+flx00UWRSqWSWH76F7/4xX+bIgAAu5q3cAAACXHHHXe8tW7duulJrL13795xzDHHGCIAsEudcMIJ0b1790TWXl5e/pc77rjjLVMEAGBXEwADACTI3XfffW8mk2lKYu1nnXVWtG3b1hAB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onv37vEv//IvccABBzSrdWcymaYnnnji9s997nPPeAoAAODDEQADAJBYDz/88NJjjjlmY+/evY+KiGZzFKq0tDSGDx8eq1evjvXr13sQAHLcwIED45prrol27do1t6VnZsyY8YOzzjprqqcAAAA+PAEwAACJdv/99795zDHHVO6zzz5HRDMKgVu0aBGHHXZYtGzZMhYuXBjpdNrDAJBjCgoK4pxzzonzzz8/WrRo0dyWn37uuefuOuWUUyZ4EgAA4KMRAAMAkHi///3v5w8bNmxF3759j2lO10GnUqno27dvDB06NBYvXhxbtmzxMADkiJ49e8YNN9wQgwcPblbf+434x7XPU6ZM+fbpp58+2ZMAAAAfnQAYAICc8OCDDy4ZNmzYin79+jWrEDgionXr1nHEEUdEfX19LF261MMAkGCpVCpOOOGEuOKKK6JNmzbNbv07wt9vnXPOOX/xNAAAwMcjAAYAIGc89NBDS4YNG7a8X79+xza3EDg/Pz8OPvjg6NWrV8yfPz8aGho8EAAJU1JSEpdffnmccMIJkZ+f3+zWn8lkGp944olvffazn53maQAAgI9PAAwAQE556KGHlo4cOXJdnz59RqWa252ZEdG1a9cYNmxYLFu2LCorKz0QAAnRt2/fuO6662K//fZrluvPZDLpp59++rvnnHPO054GAAD4ZATAAADknD/96U+LDj300KX7779/s7sOOiKiuLg4jjzyyCgpKYk333wz0um0hwIgSxUUFMRnP/vZuPDCC6OkpKRZ9iCdTjc88sgjt5x//vnTPREAAPDJCYABAMhJDz/88NId3wQelUqlmt09mqlUKvr06RMHH3xwLFy4MLZt2+ahAMgynTt3jrFjx8bQoUOjGV5aERH/CH+feOKJ2y+88MLnPBEAALBrCIABAMhZDz300JIePXq8NmjQoGPz8vJaNMcetG3bNkaNGhVNTU2xZMkSDwVAFkilUjF69Oi48soro0OHDs22D01NTdt++9vf/stll132oqcCAAB2HQEwAAA5bdKkSeXdu3efM3jw4GYbAufn58eAAQOiV69esWDBgti+fbsHA2Avad26dVx66aVx/PHHR35+frPtQ2NjY/WvfvWrf7nuuute81QAAMCuJQAGACDnTZ48eW1jY+OMI4444uiCgoKS5tqHrl27xqhRo2Lbtm2xcuVKDwbAHpRKpWLUqFExduzY6NWrV7PuRX19/fo77rjjK9/61rcWejIAAGDXEwADANAsPP/881UbNmx45rjjjjuqsLCwrLn2obCwMAYNGhT77bdfLF68OGpraz0cALtZ+/bt44orrogTTzwxCgub9/uU2tralTfffPPVP/nJT1Z7MgAAYPcQAAMA0Gz87W9/27p27doZJ5xwwsjCwsK2zbkXnTp1ipEjR0Z1dbXTwAC70ciRI+Pqq6+OHj16NPte1NTULL/hhhuu/e1vf7vOkwEAALuPABgAgGbltdde2zpv3rynTznllKFFRUWdmnMvCgsL49BDD4399tsvFi1a5DQwwC709qnfk08+udmf+o2I2Lx587yLL774unHjxm30dAAAwO71fgFwat9zYsTOftC4LmLjq610DwCAxOrVq1fhs88++69du3Y9QTciGhoaYurUqTF58uRobGzUEICPqaCgIE499dQYPXq04HeH8vLyp4499tjvrly5skE3AABg9+swrDYKuuz8ZwJgAAByWuvWrfNeeumlm/fdd9+zdeMfVq9eHffff38sWbJEMwA+ov322y8uuugi1z2/w8KFC38/fPjwnzY0NGR0AwAA9gwBMAAAzd7zzz9/8aGHHnp1RKR0IyKTycTMmTPjz3/+c9TV1WkIwAcoKSmJ8847L0aMGBGplL9Kdki//PLL9xx77LEPagUAAOxZ7xcA+wYwAADNwn333Tfn+OOP39yrV6/DQwgcqVQqevfuHcOHD49169ZFRUWFhwTgPRxyyCExduzY6N+/v/B3h0wm0/jMM8/828knnzxONwAAYM97v28AC4ABAGg2fve7370xePDgJf369Ts6lUrl60hEcXFxjBgxInr06BFLly6N2tpaTQHYoUOHDvGFL3whzjzzzCguLtaQHZqammoeeOCBWz73uc9N1w0AANg7BMAAALDDww8/vKygoOC54cOHH1FQUFCqI//QrVu3OO6446K0tDQWL14cTU1NmgI0Wy1btoxzzjknLr300ujevbuGvENtbe2K22677arbbrvtDd0AAIC9RwAMAADv8Oyzz25avHjx0yeddNKQoqKiTjryD3l5edGnT58YOXJkbN26NVatWqUpQLNz+OGHx1e+8pUYMGBA5OXlacg7VFVV/e3CCy+8/oEHHvDdAAAA2MsEwAAA8C7z58+vefbZZ58+44wz+hcX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OigOOOCAKCoq0pQs0djYuGXmzJk/PvPMMyc2NDS4XgAAAPjQBMAAAJADjjzyyNY/+9nPrujbt++5EZGnI9mluro6Fi5cGPPnz4958+ZFZWWlprBXtGvXLg455JAYMGBA9O/fP1q39nsjWSj91ltv/fmqq676xaxZs6q1AwAA+KgEwAAAkEN++ctfjhgzZsyNrVq16q0b2SmdTsfKlStj0aJFsXDhwli8eHFs27ZNY9gtSkpKol+/ftG/f//Yf//9o1evXpGX53dEslVNTc3yRx999EdXXnnlK7oBAAB8XAJgAADIMd26dSt8+OGHPzd48ODL8vPzbdyzXCaTiTVr1sTChQtj0aJFsWjRotiyZYvG8LGUlZVF//79/xn6du/ePVKplMZkuaampprXXnvtV2PGjHmgoqKiUUcAAIBPQgAMAAA56rjjjiv7r//6r8tdC508mzdvjuXLl8eKFSti+fLlsXjx4qipqdEY/pfi4uLo169f9O7dO/bZZ5/Yd999o6ysTGMSJJPJpJcsWfLn66677pfTp0/3mx8AAMAuIQAGAIAc99Of/nTIueeee3NpaWlf3UimxsbGWLlyZSxdujSWLVsWy5cvj3Xr1kUmk9GcZiKVSkWXLl1in332iT59+kSfPn2iV69eUVBQoDkJtXXr1sUPPvjgj6699tq/6wYAALArCYABAKAZaNeuXf64cePOGTp06BUFBQWtdST56uvrY+XKlf88KbxixYpYu3ZtpNNpzUm4vLy86Nq1a+yzzz7//KdXr17RsmVLzckBjY2NW/7617/+4pxzznm0srKySUcAAIBdTQAMAADNyIknntjmnnvuuXzfffcdk0qlHB3MMdu3b481a9bEmjVrYu3atbF27dooLy+PDRs2CIazUF5eXnTs2DG6desWXbt2jW7dukW3bt2iR48eUVhYqEE5JpPJNC5ZsuRR1z0DAAC7mwAYAACaoa9+9av7Xnfdddd16NDhCN3IfY2Njf8MhNetWxfr1q2LioqKWLduXWzbtk2DdrPS0tLo3LnzP//p0qVLdO3aNbp27eoK52Ziw4YNM//rv/7rxz/60Y+W6wYAALC7CYABAKAZ++UvfznirLPOuq64uNj3gZupmpqaWL9+/T//qaioiMrKyqisrIxNmzZFY2OjJn2AgoKCaN++fbRr1y7at28fHTt2jC5dukSnTp2ic+fOUVxcrEnN1NatW98aP378PVdcccXLugEAAOwpAmAAAGjm2rVrl//ggw+eOWLEiCsLCwvb6gjvtHnz5n+GwZs2bYrKysqorq6OLVu2xJYtW6K6ujqqq6sjk8nk3NpTqVS0bt06WrduHWVlZdGmTZsoLS39X2Fvu3btok2bNh4U/peGhobKl1566efnnHPO+OrqavevAwAAe5QAGAAAiIiIoUOHFt97770XHHjggRfk5+c7ssiHlk6n/xkEV1dXR01Nzfv+k8lkora2NtLpdNTX10dTU1PU1dXt0u8U5+XlRcuWLSM/Pz+KiooiLy8vWrVqFalUKoqLi3f6T0lJSbRq1eqfgW9paWnk5eUZMB9aU1NTzYIFC/745S9/+Y+zZ8+u0REAAGBvEAADAAD/y2mnndb2rrvuurRPnz5n5+XlFeoIe9LbgfDbtm/f/r7XUBcUFESLFi3++b/fDnxhT8pkMg1LliwZd8stt/xq0qRJVToCAADsTQJgAABgp0477bS2d95554X777//5wTBAP9XJpNpWLhw4QO33nrrHwS/AABAtni/ADi/7UHRc2c/SG+LqC33/gcAAHLZokWL6u69995X0un0swcddFCnkpKS3roC8A8VFRUz/7//7/+77aKLLpq6aNGiOh0BAACyRXH3xsgr3fnPBMAAAEDMnDmz8u67736qqalpWr9+/Ypbt27dN5VKpXQGaG4ymUx6zZo1U+65555/Peeccx6cOXNmpa4AAADZRgAMAAB8KDNnzqz88Y9//Gw6nZ4uCAaak7eD37vvvvtfzz///McEvwAAQDYTAAMAAB+JIBhoLgS/AABAEgmAAQCAj+XtILisrOyFvn37diwuLu4VEYJgIBdkKioqnrv33nu/PWbMmEcEvwAAQJK8XwCc2vecGLGzHzSui9j4aivdAwAA/unqq6/u8ZWvfOX8Pn36nJWXl9dCR4CkSafT9UuXLh3/X//1Xw/84he/WKMjAABAEnUYVhsFXXb+MwEwAADwkZ1xxhntb7/99rMPPPDA8/Pz81vrCJDtmpqaqhcsWPDgd77znUcmTpzotC8AAJBoAmAAAGC3GD58eMkPf/jDzwwePPjioqKijjoCZJv6+voNr7322u9vvPHGx2fPnl2jIwAAQC4QAAMAALvV0KFDi++5556zDjnkkPOKioq66giwt9XV1a19/fXXH7z++uvHC34BAIBcIwAGAAD2iFatWuXdc889w0455ZTzO3bseJSOAHtYZsOGDbOmTJny4PXXX/9qbW1tWksAAIBcJAAGAAD2uH/913/tf/7555/dq1ev0/Ly8lroCLC7pNPp+pUrV05+4IEHHvnOd76zSEcAAIBcJwAGAAD2mjPOOKP97bfffvYBBxzw2YKCgjY6AuwqjY2NVW+++eafv/e97z06YcKETToCAAA0FwJgAABgrxs+fHjJ97///dGDBg0aU1paur+OAB9XdXX1wtdee+3Rr371q1Nfe+21Wh0BAACaGwEwAACQVb761a/ue8EFF3y6b9++ZxUUFLTWEeCDNDY2bnnrrbfG/+EPf5j4ox/9aLmOAAAAzZkAGAAAyEpDhw4t/sEPfnDy4MGDz27dunV/HQHerbq6+s2XX375weuuu+7ppUuXbtcRAAAAATAAAJDlCgsLU3ffffeQ0aNHn9G1a9fj8vLyinQFmq90Ol1XXl4+bcqUKROuvfbav+sIAADA/yYABgAAEqNPnz4t/v3f/33UyJEjz2rfvv2nIiKlK9AsZDZt2vTXF1544bGvfe1rzzntCwAA8N4EwAAAQCJddNFFXa6++uqTDzzwwLNbtmzZTUcg99TV1a1ZsGDBuJ/+9KdP3n///et0BAAA4IMJgAEAgETr1q1b4d13333k4YcffmqHDh2OyMvLK9QVSK50Ot2wcePGWbNmzZp8/fXXz6qoqGjUFQAAgA9PAAwAAOSMo48+uvWtt956/CGHHHJKu3btBkdEnq5AIqQrKytfmzdv3uQ777xz+owZM6q1BAAA4OMRAAMAADnpuOOOK/vGN75x/CGHHHJa27ZtB4bvBUO2yVRVVc2dN2/epO9///vTpk+fvkVLAAAAPjkBMAAAkPNuu+22vmedddZJffr0Oa5Vq1a9dQT2ntra2uXLly+f/uijjz51xx13vKUjAAAAu5YAGAAAaFa+9KUvdbv44ouP7t+//wlOBsMekamqqpq7cOHCv/z+97+fcd9995VrCQAAwO4jAAYAAJqtSy65pOtll112jDAYdrl0VVXVvIULF/7lV7/61bO/+93v1moJAADAniEABgAAiIirr766x/nnnz9q//33P7JNmzZDUqlUga7Ah5fJZBoqKyv/vnjx4uf+9Kc/zbr33ntX6woAAMCeJwAGAAB4l379+hV97WtfGzRy5MhRPXv2PLaoqKizrsD/VV9fv37VqlXPvPDCC8/9+7//+5zFixfX6woAAMDeJQAGAAB4H61bt8678847Bx599NFHde/efURpaen+4apomq/M1q1bF69Zs+bF5557btY3v/nNOdXV1WltAQAAyB4CYAAAgI9g8ODBrcaOHXvI8OHDD+vevfvw1q1bHxACYXJXprq6+s01a9a88sorr7z8k5/8ZN5rr71Wqy0AAADZSwAMAADwCVx//fX7nHHGGYf169dvePv27Yfm5+e31hWSrLGxsXrjxo2vvvXWWy+PHz/+lR//+McrdQUAACA5BMAAAAC70Je//OUe55xzzvA+ffoM7tix45CioqKuukI2q6+vX7t27doXFy9ePGfixImv3Xvvvat1BQAAILkEwAAAALvRl7/85R6f+cxnBvfr129Qly5dDm/ZsqVAmL2qrq5u7bp16wS+AAAAOUoADAAAsIe0atUq75prrtnn2GOPPXi//fY7uH379oeUlpb2TaVS+brDbpKuqalZtnHjxnlvvfXW3GeffXbef/3Xfy2vra1Naw0AAEBuEgADAADsRQceeGDLq6+++oAhQ4Yc3LNnz4Pbtm17sGuj+biampqqq6qqXi8vL583Z86ceb/85S/nvfjii1t1BgAAoPkQAAMAAGSZoUOHFn/xi1/cf9CgQQf26NHjwHbt2h3YqlWr3qlUKk932CFdU1OzvLKycsHq1asXzJkzZ8Gf//znJTNmzKjWGgAAgOZNAAwAAJAAxx13XNkFF1xw4MEHH3xA165dDywtLd23pKRkn1QqVag7uS2TyTRs27ZtRXV19dJ169YtfOONNxZOmDBh4YQJEzbpDgAAAO8mAAYAAEiw8847r+OJJ57Yp3///vt16dKlT5s2bfZr3bp1v/z8/GLdSZampqaa6urqxZs3b16ybt26pQsXLlzy9NNPL33ooYc26A4AAAAflgAYAAAgx7Rr1y7/kksu6TFkyJCe++67b89OnTr1Kisr61VcXNyzZcuW3VKpVL4u7R2ZTKaprq6uvKamZtWWLVtWVlRUrFy6dOnK2bNnr7r//vvXVFZWNukSAAAAn4QAGAAAoBnp1KlTwec+97luQ4cO7bnPPvv0aNeuXafWrVt3Li4u7tqyZcvORUVFnfLy8lro1MeTTqe319fXr6+rq6uoqalZW11dvb6y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AACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoMY3JP//9K8My551lzpAk293a7QAAAAAAAAD8iIw3r+SL7TpPxuSt4/ibJJuz20QDBgAAAAAAAHhzrJPp6NvHYcyyjLl7dJTPbl/Jp6sPLufSsM+5ec7q5YOrF0OeP/SVaAAAAAAAAIA3weH7u6zfm79dWDIMSw6225w785vsx3XyzasOby5ssz69c4sAAAAAAAAAr9n69C6bC9sT93a7rKdnORin5Otxynzi1JQcfiwCAwAAAAAAALxO69O7HH68TaaT98cp85R8vbp3Nfszv8q0LHn7xMF1sjk/ZzUPmZ/MmWefhAYAAAAAAAD4oayPdjn7223Gn7x6ZrXPnetX8mBKkpv3cufDd/Pufn5FL56SzcVtNheT3dNt8tQlAwAAAAAAAHyv1sm0ySv/9XtsNWZ3I/lHkgzHi7/4XY7WYz5yiwAAAAAAAAA/Ivtcv/3nPEyS1fHa42t5+vNLyX7JoRsCAAAAAAAAePPt1/nbV3/KvePn1Xc371/NYxEYAAAAAAAA4M0yTHk2rvNo2WdzvHZqzN9v/SF3vju3evng/at5fPDLPDu1yuGyZHSVAAAAAAAAAK/XOGe4ueSvZ4e8M8xZbVe5ceuPufvy3Oqkw4+v5emDX+fuuTlLhhwsEYIBAAAAAAAAXpclGR8OuXP0TR4cPM/9z/+SRyfNDf/1TZezOp/87KdjzizJZkhO7edMy/w/nAUAAAAAAADg/zaMWcZkP8/ZLsmLacr2/MV8+cnvs/tP5/4FmLjAq1ifcioAAAAASUVORK5CYII='; + + /** + * PptxGenJS: Utility Methods + */ + /** + * Translates any type of `x`/`y`/`w`/`h` prop to EMU + * - guaranteed to return a result regardless of undefined, null, etc. (0) + * - {number} - 12800 (EMU) + * - {number} - 0.5 (inches) + * - {string} - "75%" + * @param {number|string} size - numeric ("5.5") or percentage ("90%") + * @param {'X' | 'Y'} xyDir - direction + * @param {PresLayout} layout - presentation layout + * @returns {number} calculated size + */ + function getSmartParseNumber(size, xyDir, layout) { + // FIRST: Convert string numeric value if reqd + if (typeof size === 'string' && !isNaN(Number(size))) + size = Number(size); + // CASE 1: Number in inches + // Assume any number less than 100 is inches + if (typeof size === 'number' && size < 100) + return inch2Emu(size); + // CASE 2: Number is already converted to something other than inches + // Assume any number greater than 100 sure isnt inches! Just return it (assume value is EMU already). + if (typeof size === 'number' && size >= 100) + return size; + // CASE 3: Percentage (ex: '50%') + if (typeof size === 'string' && size.includes('%')) { + if (xyDir && xyDir === 'X') + return Math.round((parseFloat(size) / 100) * layout.width); + if (xyDir && xyDir === 'Y') + return Math.round((parseFloat(size) / 100) * layout.height); + // Default: Assume width (x/cx) + return Math.round((parseFloat(size) / 100) * layout.width); + } + // LAST: Default value + return 0; + } + /** + * Basic UUID Generator Adapted + * @link https://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript#answer-2117523 + * @param {string} uuidFormat - UUID format + * @returns {string} UUID + */ + function getUuid(uuidFormat) { + return uuidFormat.replace(/[xy]/g, function (c) { + const r = (Math.random() * 16) | 0; + const v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } + /** + * Replace special XML characters with HTML-encoded strings + * @param {string} xml - XML string to encode + * @returns {string} escaped XML + */ + function encodeXmlEntities(xml) { + // NOTE: Dont use short-circuit eval here as value c/b "0" (zero) etc.! + if (typeof xml === 'undefined' || xml == null) + return ''; + return xml.toString().replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"').replace(/'/g, '''); + } + /** + * Convert inches into EMU + * @param {number|string} inches - as string or number + * @returns {number} EMU value + */ + function inch2Emu(inches) { + // NOTE: Provide Caller Safety: Numbers may get conv<->conv during flight, so be kind and do some simple checks to ensure inches were passed + // Any value over 100 damn sure isnt inches, so lets assume its in EMU already, therefore, just return the same value + if (typeof inches === 'number' && inches > 100) + return inches; + if (typeof inches === 'string') + inches = Number(inches.replace(/in*/gi, '')); + return Math.round(EMU * inches); + } + /** + * Convert `pt` into points (using `ONEPT`) + * @param {number|string} pt + * @returns {number} value in points (`ONEPT`) + */ + function valToPts(pt) { + const points = Number(pt) || 0; + return isNaN(points) ? 0 : Math.round(points * ONEPT); + } + /** + * Convert degrees (0..360) to PowerPoint `rot` value + * @param {number} d degrees + * @returns {number} calculated `rot` value + */ + function convertRotationDegrees(d) { + d = d || 0; + return Math.round((d > 360 ? d - 360 : d) * 60000); + } + /** + * Converts component value to hex value + * @param {number} c - component color + * @returns {string} hex string + */ + function componentToHex(c) { + const hex = c.toString(16); + return hex.length === 1 ? '0' + hex : hex; + } + /** + * Converts RGB colors from css selectors to Hex for Presentation colors + * @param {number} r - red value + * @param {number} g - green value + * @param {number} b - blue value + * @returns {string} XML string + */ + function rgbToHex(r, g, b) { + return (componentToHex(r) + componentToHex(g) + componentToHex(b)).toUpperCase(); + } + /** TODO: FUTURE: TODO-4.0: + * @date 2022-04-10 + * @tldr this s/b a private method with all current calls switched to `genXmlColorSelection()` + * @desc lots of code calls this method + * @example [gen-charts.tx] `strXml += '' + createColorElement(seriesColor, ``) + ''` + * Thi sis wrong. We s/b calling `genXmlColorSelection()` instead as it returns `BLAH`!! + */ + /** + * Create either a `a:schemeClr` - (scheme color) or `a:srgbClr` (hexa representation). + * @param {string|SCHEME_COLORS} colorStr - hexa representation (eg. "FFFF00") or a scheme color constant (eg. pptx.SchemeColor.ACCENT1) + * @param {string} innerElements - additional elements that adjust the color and are enclosed by the color element + * @returns {string} XML string + */ + function createColorElement(colorStr, innerElements) { + let colorVal = (colorStr || '').replace('#', ''); + if (!REGEX_HEX_COLOR.test(colorVal) && + colorVal !== SchemeColor.background1 && + colorVal !== SchemeColor.background2 && + colorVal !== SchemeColor.text1 && + colorVal !== SchemeColor.text2 && + colorVal !== SchemeColor.accent1 && + colorVal !== SchemeColor.accent2 && + colorVal !== SchemeColor.accent3 && + colorVal !== SchemeColor.accent4 && + colorVal !== SchemeColor.accent5 && + colorVal !== SchemeColor.accent6) { + console.warn(`"${colorVal}" is not a valid scheme color or hex RGB! "${DEF_FONT_COLOR}" used instead. Only provide 6-digit RGB or 'pptx.SchemeColor' values!`); + colorVal = DEF_FONT_COLOR; + } + const tagName = REGEX_HEX_COLOR.test(colorVal) ? 'srgbClr' : 'schemeClr'; + const colorAttr = 'val="' + (REGEX_HEX_COLOR.test(colorVal) ? colorVal.toUpperCase() : colorVal) + '"'; + return innerElements ? `${innerElements}` : ``; + } + /** + * Creates `a:glow` element + * @param {TextGlowProps} options glow properties + * @param {TextGlowProps} defaults defaults for unspecified properties in `opts` + * @see http://officeopenxml.com/drwSp-effects.php + * { size: 8, color: 'FFFFFF', opacity: 0.75 }; + */ + function createGlowElement(options, defaults) { + let strXml = ''; + const opts = Object.assign(Object.assign({}, defaults), options); + const size = Math.round(opts.size * ONEPT); + const color = opts.color; + const opacity = Math.round(opts.opacity * 100000); + strXml += ``; + strXml += createColorElement(color, ``); + strXml += ''; + return strXml; + } + /** + * Create color selection + * @param {Color | ShapeFillProps | ShapeLineProps} props fill props + * @returns XML string + */ + function genXmlColorSelection(props) { + let fillType = 'solid'; + let colorVal = ''; + let internalElements = ''; + let outText = ''; + if (props) { + if (typeof props === 'string') + colorVal = props; + else { + if (props.type) + fillType = props.type; + if (props.color) + colorVal = props.color; + if (props.alpha) + internalElements += ``; // DEPRECATED: @deprecated v3.3.0 + if (props.transparency) + internalElements += ``; + } + switch (fillType) { + case 'solid': + outText += `${createColorElement(colorVal, internalElements)}`; + break; + case 'gradient': + // Handle gradient fills + if (typeof props === 'object' && 'gradient' in props && props.gradient) { + const gradient = props.gradient; + outText += ''; + outText += ''; + // Generate gradient stops + for (const stop of gradient.stops || []) { + // Position is 0-100, convert to 0-100000 for OOXML + const position = Math.round((stop.position || 0) * 1000); + outText += ``; + // Generate the color with optional transparency + let stopInternalElements = ''; + if (stop.transparency !== undefined && stop.transparency > 0) { + // transparency 0-100 maps to alpha 100000-0 + stopInternalElements += ``; + } + outText += createColorElement(stop.color || 'FFFFFF', stopInternalElements); + outText += ''; + } + outText += ''; + // Linear or radial gradient + if (gradient.type === 'radial') { + // Radial gradient - use path fill + const radPos = gradient.radialPosition || { x: 50, y: 50 }; + // Convert percentage to OOXML units (0-100000) + const left = Math.round(radPos.x * 1000); + const top = Math.round(radPos.y * 1000); + const right = Math.round((100 - radPos.x) * 1000); + const bottom = Math.round((100 - radPos.y) * 1000); + outText += ``; + } + else { + // Linear gradient (default) + const angle = gradient.angle !== undefined ? gradient.angle : 0; + // Convert degrees to PowerPoint angle units (60000 per degree) + const pptAngle = Math.round(angle * 60000); + outText += ``; + } + outText += ''; + } + break; + case 'none': + outText += ''; + break; + default: // @note need a statement as having only "break" is removed by rollup, then tiggers "no-default" js-linter + outText += ''; + break; + } + } + return outText; + } + /** + * Get a new rel ID (rId) for charts, media, etc. + * @param {PresSlide} target - the slide to use + * @returns {number} count of all current rels plus 1 for the caller to use as its "rId" + */ + function getNewRelId(target) { + return target._rels.length + target._relsChart.length + target._relsMedia.length + 1; + } + /** + * Checks shadow options passed by user and performs corrections if needed. + * @param {ShadowProps} ShadowProps - shadow options + */ + function correctShadowOptions(ShadowProps) { + if (!ShadowProps || typeof ShadowProps !== 'object') { + // console.warn("`shadow` options must be an object. Ex: `{shadow: {type:'none'}}`") + return; + } + // OPT: `type` + if (ShadowProps.type !== 'outer' && ShadowProps.type !== 'inner' && ShadowProps.type !== 'none') { + console.warn('Warning: shadow.type options are `outer`, `inner` or `none`.'); + ShadowProps.type = 'outer'; + } + // OPT: `angle` + if (ShadowProps.angle) { + // A: REALITY-CHECK + if (isNaN(Number(ShadowProps.angle)) || ShadowProps.angle < 0 || ShadowProps.angle > 359) { + console.warn('Warning: shadow.angle can only be 0-359'); + ShadowProps.angle = 270; + } + // B: ROBUST: Cast any type of valid arg to int: '12', 12.3, etc. -> 12 + ShadowProps.angle = Math.round(Number(ShadowProps.angle)); + } + // OPT: `opacity` + if (ShadowProps.opacity) { + // A: REALITY-CHECK + if (isNaN(Number(ShadowProps.opacity)) || ShadowProps.opacity < 0 || ShadowProps.opacity > 1) { + console.warn('Warning: shadow.opacity can only be 0-1'); + ShadowProps.opacity = 0.75; + } + // B: ROBUST: Cast any type of valid arg to int: '12', 12.3, etc. -> 12 + ShadowProps.opacity = Number(ShadowProps.opacity); + } + // OPT: `color` + if (ShadowProps.color) { + // INCORRECT FORMAT + if (ShadowProps.color.startsWith('#')) { + console.warn('Warning: shadow.color should not include hash (#) character, , e.g. "FF0000"'); + ShadowProps.color = ShadowProps.color.replace('#', ''); + } + } + return ShadowProps; + } + + /** + * PptxGenJS: Table Generation + */ + /** + * Break cell text into lines based upon table column width (e.g.: Magic Happens Here(tm)) + * @param {TableCell} cell - table cell + * @param {number} colWidth - table column width (inches) + * @return {TableRow[]} - cell's text objects grouped into lines + */ + function parseTextToLines(cell, colWidth, verbose) { + var _a, _b; + // FYI: CPL = Width / (font-size / font-constant) + // FYI: CHAR:2.3, colWidth:10, fontSize:12 => CPL=138, (actual chars per line in PPT)=145 [14.5 CPI] + // FYI: CHAR:2.3, colWidth:7 , fontSize:12 => CPL= 97, (actual chars per line in PPT)=100 [14.3 CPI] + // FYI: CHAR:2.3, colWidth:9 , fontSize:16 => CPL= 96, (actual chars per line in PPT)=84 [ 9.3 CPI] + const FOCO = 2.3 + (((_a = cell.options) === null || _a === void 0 ? void 0 : _a.autoPageCharWeight) ? cell.options.autoPageCharWeight : 0); // Character Constant + const CPL = Math.floor((colWidth / ONEPT) * EMU) / ((((_b = cell.options) === null || _b === void 0 ? void 0 : _b.fontSize) ? cell.options.fontSize : DEF_FONT_SIZE) / FOCO); // Chars-Per-Line + const parsedLines = []; + let inputCells = []; + const inputLines1 = []; + const inputLines2 = []; + /* + if (cell.options && cell.options.autoPageCharWeight) { + let CHR1 = 2.3 + (cell.options && cell.options.autoPageCharWeight ? cell.options.autoPageCharWeight : 0) // Character Constant + let CPL1 = ((colWidth / ONEPT) * EMU) / ((cell.options && cell.options.fontSize ? cell.options.fontSize : DEF_FONT_SIZE) / CHR1) // Chars-Per-Line + console.log(`cell.options.autoPageCharWeight: '${cell.options.autoPageCharWeight}' => CPL: ${CPL1}`) + let CHR2 = 2.3 + 0 + let CPL2 = ((colWidth / ONEPT) * EMU) / ((cell.options && cell.options.fontSize ? cell.options.fontSize : DEF_FONT_SIZE) / CHR2) // Chars-Per-Line + console.log(`cell.options.autoPageCharWeight: '0' => CPL: ${CPL2}`) + } + */ + /** + * EX INPUTS: `cell.text` + * - string....: "Account Name Column" + * - object....: { text:"Account Name Column" } + * - object[]..: [{ text:"Account Name", options:{ bold:true } }, { text:" Column" }] + * - object[]..: [{ text:"Account Name", options:{ breakLine:true } }, { text:"Input" }] + */ + /** + * EX OUTPUTS: + * - string....: [{ text:"Account Name Column" }] + * - object....: [{ text:"Account Name Column" }] + * - object[]..: [{ text:"Account Name", options:{ breakLine:true } }, { text:"Input" }] + * - object[]..: [{ text:"Account Name", options:{ breakLine:true } }, { text:"Input" }] + */ + // STEP 1: Ensure inputCells is an array of TableCells + if (cell.text && cell.text.toString().trim().length === 0) { + // Allow a single space/whitespace as cell text (user-requested feature) + inputCells.push({ _type: SLIDE_OBJECT_TYPES.tablecell, text: ' ' }); + } + else if (typeof cell.text === 'number' || typeof cell.text === 'string') { + inputCells.push({ _type: SLIDE_OBJECT_TYPES.tablecell, text: (cell.text || '').toString().trim() }); + } + else if (Array.isArray(cell.text)) { + inputCells = cell.text; + } + // STEP 2: Group table cells into lines based on "\n" or `breakLine` prop + /** + * - EX: `[{ text:"Input Output" }, { text:"Extra" }]` == 1 line + * - EX: `[{ text:"Input" }, { text:"Output", options:{ breakLine:true } }]` == 1 line + * - EX: `[{ text:"Input\nOutput" }]` == 2 lines + * - EX: `[{ text:"Input", options:{ breakLine:true } }, { text:"Output" }]` == 2 lines + */ + let newLine = []; + inputCells.forEach(cell => { + var _a; + // (this is always true, we just constructed them above, but we need to tell typescript b/c type is still string||Cell[]) + if (typeof cell.text === 'string') { + if (cell.text.split('\n').length > 1) { + cell.text.split('\n').forEach(textLine => { + newLine.push({ + _type: SLIDE_OBJECT_TYPES.tablecell, + text: textLine, + options: Object.assign(Object.assign({}, cell.options), { breakLine: true }), + }); + }); + } + else { + newLine.push({ + _type: SLIDE_OBJECT_TYPES.tablecell, + text: cell.text.trim(), + options: cell.options, + }); + } + if ((_a = cell.options) === null || _a === void 0 ? void 0 : _a.breakLine) { + inputLines1.push(newLine); + newLine = []; + } + } + // Flush buffer + if (newLine.length > 0) { + inputLines1.push(newLine); + newLine = []; + } + }); + // STEP 3: Tokenize every text object into words (then it's really easy to assemble lines below without having to break text, add its `options`, etc.) + inputLines1.forEach(line => { + line.forEach(cell => { + const lineCells = []; + const cellTextStr = String(cell.text); // force convert to string (compiled JS is better with this than a cast) + const lineWords = cellTextStr.split(' '); + lineWords.forEach((word, idx) => { + const cellProps = Object.assign({}, cell.options); + // IMPORTANT: Handle `breakLine` prop - we cannot apply to each word - only apply to very last word! + if (cellProps === null || cellProps === void 0 ? void 0 : cellProps.breakLine) + cellProps.breakLine = idx + 1 === lineWords.length; + lineCells.push({ _type: SLIDE_OBJECT_TYPES.tablecell, text: word + (idx + 1 < lineWords.length ? ' ' : ''), options: cellProps }); + }); + inputLines2.push(lineCells); + }); + }); + // STEP 4: Group cells/words into lines based upon space consumed by word letters + inputLines2.forEach(line => { + let lineCells = []; + let strCurrLine = ''; + line.forEach(word => { + // A: create new line when horizontal space is exhausted + if (strCurrLine.length + word.text.length > CPL) { + // if (verbose) console.log(`STEP 4: New line added: (${strCurrLine.length} + ${word.text.length} > ${CPL})`); + parsedLines.push(lineCells); + lineCells = []; + strCurrLine = ''; + } + // B: add current word to line cells + lineCells.push(word); + // C: add current word to `strCurrLine` which we use to keep track of line's char length + strCurrLine += word.text.toString(); + }); + // Flush buffer: Only create a line when there's text to avoid empty row + if (lineCells.length > 0) + parsedLines.push(lineCells); + }); + // Done: + return parsedLines; + } + /** + * Takes an array of table rows and breaks into an array of slides, which contain the calculated amount of table rows that fit on that slide + * @param {TableCell[][]} tableRows - table rows + * @param {TableToSlidesProps} tableProps - table2slides properties + * @param {PresLayout} presLayout - presentation layout + * @param {SlideLayout} masterSlide - master slide + * @return {TableRowSlide[]} array of table rows + */ + function getSlidesForTableRows(tableRows = [], tableProps = {}, presLayout, masterSlide) { + let arrInchMargins = DEF_SLIDE_MARGIN_IN; + let emuSlideTabW = EMU * 1; + let emuSlideTabH = EMU * 1; + let emuTabCurrH = 0; + let numCols = 0; + const tableRowSlides = []; + const tablePropX = getSmartParseNumber(tableProps.x, 'X', presLayout); + const tablePropY = getSmartParseNumber(tableProps.y, 'Y', presLayout); + const tablePropW = getSmartParseNumber(tableProps.w, 'X', presLayout); + const tablePropH = getSmartParseNumber(tableProps.h, 'Y', presLayout); + let tableCalcW = tablePropW; + function calcSlideTabH() { + let emuStartY = 0; + if (tableRowSlides.length === 0) + emuStartY = tablePropY || inch2Emu(arrInchMargins[0]); + if (tableRowSlides.length > 0) + emuStartY = inch2Emu(tableProps.autoPageSlideStartY || tableProps.newSlideStartY || arrInchMargins[0]); + emuSlideTabH = (tablePropH || presLayout.height) - emuStartY - inch2Emu(arrInchMargins[2]); + // console.log(`| startY .......................................... = ${(emuStartY / EMU).toFixed(1)}`) + // console.log(`| emuSlideTabH .................................... = ${(emuSlideTabH / EMU).toFixed(1)}`) + if (tableRowSlides.length > 1) { + // D: RULE: Use margins for starting point after the initial Slide, not `opt.y` (ISSUE #43, ISSUE #47, ISSUE #48) + if (typeof tableProps.autoPageSlideStartY === 'number') { + emuSlideTabH = (tablePropH || presLayout.height) - inch2Emu(tableProps.autoPageSlideStartY + arrInchMargins[2]); + } + else if (typeof tableProps.newSlideStartY === 'number') { + // @deprecated v3.3.0 + emuSlideTabH = (tablePropH || presLayout.height) - inch2Emu(tableProps.newSlideStartY + arrInchMargins[2]); + } + else if (tablePropY) { + emuSlideTabH = (tablePropH || presLayout.height) - inch2Emu((tablePropY / EMU < arrInchMargins[0] ? tablePropY / EMU : arrInchMargins[0]) + arrInchMargins[2]); + // Use whichever is greater: area between margins or the table H provided (dont shrink usable area - the whole point of over-riding Y on paging is to *increase* usable space) + if (emuSlideTabH < tablePropH) + emuSlideTabH = tablePropH; + } + } + } + if (tableProps.verbose) { + console.log('[[VERBOSE MODE]]'); + console.log('|-- TABLE PROPS --------------------------------------------------------|'); + console.log(`| presLayout.width ................................ = ${(presLayout.width / EMU).toFixed(1)}`); + console.log(`| presLayout.height ............................... = ${(presLayout.height / EMU).toFixed(1)}`); + console.log(`| tableProps.x .................................... = ${typeof tableProps.x === 'number' ? (tableProps.x / EMU).toFixed(1) : tableProps.x}`); + console.log(`| tableProps.y .................................... = ${typeof tableProps.y === 'number' ? (tableProps.y / EMU).toFixed(1) : tableProps.y}`); + console.log(`| tableProps.w .................................... = ${typeof tableProps.w === 'number' ? (tableProps.w / EMU).toFixed(1) : tableProps.w}`); + console.log(`| tableProps.h .................................... = ${typeof tableProps.h === 'number' ? (tableProps.h / EMU).toFixed(1) : tableProps.h}`); + console.log(`| tableProps.slideMargin .......................... = ${tableProps.slideMargin ? String(tableProps.slideMargin) : ''}`); + console.log(`| tableProps.margin ............................... = ${String(tableProps.margin)}`); + console.log(`| tableProps.colW ................................. = ${String(tableProps.colW)}`); + console.log(`| tableProps.autoPageSlideStartY .................. = ${tableProps.autoPageSlideStartY}`); + console.log(`| tableProps.autoPageCharWeight ................... = ${tableProps.autoPageCharWeight}`); + console.log('|-- CALCULATIONS -------------------------------------------------------|'); + console.log(`| tablePropX ...................................... = ${tablePropX / EMU}`); + console.log(`| tablePropY ...................................... = ${tablePropY / EMU}`); + console.log(`| tablePropW ...................................... = ${tablePropW / EMU}`); + console.log(`| tablePropH ...................................... = ${tablePropH / EMU}`); + console.log(`| tableCalcW ...................................... = ${tableCalcW / EMU}`); + } + // STEP 1: Calculate margins + { + // Important: Use default size as zero cell margin is causing our tables to be too large and touch bottom of slide! + if (!tableProps.slideMargin && tableProps.slideMargin !== 0) + tableProps.slideMargin = DEF_SLIDE_MARGIN_IN[0]; + if (masterSlide && typeof masterSlide._margin !== 'undefined') { + if (Array.isArray(masterSlide._margin)) + arrInchMargins = masterSlide._margin; + else if (!isNaN(Number(masterSlide._margin))) { + arrInchMargins = [Number(masterSlide._margin), Number(masterSlide._margin), Number(masterSlide._margin), Number(masterSlide._margin)]; + } + } + else if (tableProps.slideMargin || tableProps.slideMargin === 0) { + if (Array.isArray(tableProps.slideMargin)) + arrInchMargins = tableProps.slideMargin; + else if (!isNaN(tableProps.slideMargin)) + arrInchMargins = [tableProps.slideMargin, tableProps.slideMargin, tableProps.slideMargin, tableProps.slideMargin]; + } + if (tableProps.verbose) + console.log(`| arrInchMargins .................................. = [${arrInchMargins.join(', ')}]`); + } + // STEP 2: Calculate number of columns + { + // NOTE: Cells may have a colspan, so merely taking the length of the [0] (or any other) row is not + // ....: sufficient to determine column count. Therefore, check each cell for a colspan and total cols as reqd + const firstRow = tableRows[0] || []; + firstRow.forEach(cell => { + if (!cell) + cell = { _type: SLIDE_OBJECT_TYPES.tablecell }; + const cellOpts = cell.options || null; + numCols += Number((cellOpts === null || cellOpts === void 0 ? void 0 : cellOpts.colspan) ? cellOpts.colspan : 1); + }); + if (tableProps.verbose) + console.log(`| numCols ......................................... = ${numCols}`); + } + // STEP 3: Calculate width using tableProps.colW if possible + if (!tablePropW && tableProps.colW) { + tableCalcW = Array.isArray(tableProps.colW) ? tableProps.colW.reduce((p, n) => p + n) * EMU : tableProps.colW * numCols || 0; + if (tableProps.verbose) + console.log(`| tableCalcW ...................................... = ${tableCalcW / EMU}`); + } + // STEP 4: Calculate usable width now that total usable space is known (`emuSlideTabW`) + { + emuSlideTabW = tableCalcW || inch2Emu((tablePropX ? tablePropX / EMU : arrInchMargins[1]) + arrInchMargins[3]); + if (tableProps.verbose) + console.log(`| emuSlideTabW .................................... = ${(emuSlideTabW / EMU).toFixed(1)}`); + } + // STEP 5: Calculate column widths if not provided (emuSlideTabW will be used below to determine lines-per-col) + if (!tableProps.colW || !Array.isArray(tableProps.colW)) { + if (tableProps.colW && !isNaN(Number(tableProps.colW))) { + const arrColW = []; + const firstRow = tableRows[0] || []; + firstRow.forEach(() => arrColW.push(tableProps.colW)); + tableProps.colW = []; + arrColW.forEach(val => { + if (Array.isArray(tableProps.colW)) + tableProps.colW.push(val); + }); + } + else { + // No column widths provided? Then distribute cols. + tableProps.colW = []; + for (let iCol = 0; iCol < numCols; iCol++) { + tableProps.colW.push(emuSlideTabW / EMU / numCols); + } + } + } + // STEP 6: **MAIN** Iterate over rows, add table content, create new slides as rows overflow + let newTableRowSlide = { rows: [] }; + tableRows.forEach((row, iRow) => { + // A: Row variables + const rowCellLines = []; + let maxCellMarTopEmu = 0; + let maxCellMarBtmEmu = 0; + // B: Create new row in data model, calc `maxCellMar*` + let currTableRow = []; + row.forEach(cell => { + var _a, _b, _c, _d; + currTableRow.push({ + _type: SLIDE_OBJECT_TYPES.tablecell, + text: [], + options: cell.options, + }); + /** FUTURE: DEPRECATED: + * - Backwards-Compat: Oops! Discovered we were still using points for cell margin before v3.8.0 (UGH!) + * - We cant introduce a breaking change before v4.0, so... + */ + if (cell.options.margin && cell.options.margin[0] >= 1) { + if (((_a = cell.options) === null || _a === void 0 ? void 0 : _a.margin) && cell.options.margin[0] && valToPts(cell.options.margin[0]) > maxCellMarTopEmu) + maxCellMarTopEmu = valToPts(cell.options.margin[0]); + else if ((tableProps === null || tableProps === void 0 ? void 0 : tableProps.margin) && tableProps.margin[0] && valToPts(tableProps.margin[0]) > maxCellMarTopEmu) + maxCellMarTopEmu = valToPts(tableProps.margin[0]); + if (((_b = cell.options) === null || _b === void 0 ? void 0 : _b.margin) && cell.options.margin[2] && valToPts(cell.options.margin[2]) > maxCellMarBtmEmu) + maxCellMarBtmEmu = valToPts(cell.options.margin[2]); + else if ((tableProps === null || tableProps === void 0 ? void 0 : tableProps.margin) && tableProps.margin[2] && valToPts(tableProps.margin[2]) > maxCellMarBtmEmu) + maxCellMarBtmEmu = valToPts(tableProps.margin[2]); + } + else { + if (((_c = cell.options) === null || _c === void 0 ? void 0 : _c.margin) && cell.options.margin[0] && inch2Emu(cell.options.margin[0]) > maxCellMarTopEmu) + maxCellMarTopEmu = inch2Emu(cell.options.margin[0]); + else if ((tableProps === null || tableProps === void 0 ? void 0 : tableProps.margin) && tableProps.margin[0] && inch2Emu(tableProps.margin[0]) > maxCellMarTopEmu) + maxCellMarTopEmu = inch2Emu(tableProps.margin[0]); + if (((_d = cell.options) === null || _d === void 0 ? void 0 : _d.margin) && cell.options.margin[2] && inch2Emu(cell.options.margin[2]) > maxCellMarBtmEmu) + maxCellMarBtmEmu = inch2Emu(cell.options.margin[2]); + else if ((tableProps === null || tableProps === void 0 ? void 0 : tableProps.margin) && tableProps.margin[2] && inch2Emu(tableProps.margin[2]) > maxCellMarBtmEmu) + maxCellMarBtmEmu = inch2Emu(tableProps.margin[2]); + } + }); + // C: Calc usable vertical space/table height. Set default value first, adjust below when necessary. + calcSlideTabH(); + emuTabCurrH += maxCellMarTopEmu + maxCellMarBtmEmu; // Start row height with margins + if (tableProps.verbose && iRow === 0) + console.log(`| SLIDE [${tableRowSlides.length}]: emuSlideTabH ...... = ${(emuSlideTabH / EMU).toFixed(1)} `); + // D: --==[[ BUILD DATA SET ]]==-- (iterate over cells: split text into lines[], set `lineHeight`) + row.forEach((cell, iCell) => { + var _a; + const newCell = { + _type: SLIDE_OBJECT_TYPES.tablecell, + _lines: null, + _lineHeight: inch2Emu(((((_a = cell.options) === null || _a === void 0 ? void 0 : _a.fontSize) ? cell.options.fontSize : tableProps.fontSize ? tableProps.fontSize : DEF_FONT_SIZE) * + (LINEH_MODIFIER + (tableProps.autoPageLineWeight ? tableProps.autoPageLineWeight : 0))) / + 100), + text: [], + options: cell.options, + }; + // E-1: Exempt cells with `rowspan` from increasing lineHeight (or we could create a new slide when unecessary!) + if (newCell.options.rowspan) + newCell._lineHeight = 0; + // E-2: The parseTextToLines method uses `autoPageCharWeight`, so inherit from table options + newCell.options.autoPageCharWeight = tableProps.autoPageCharWeight ? tableProps.autoPageCharWeight : null; + // E-3: **MAIN** Parse cell contents into lines based upon col width, font, etc + let totalColW = tableProps.colW[iCell]; + if (cell.options.colspan && Array.isArray(tableProps.colW)) { + totalColW = tableProps.colW.filter((_cell, idx) => idx >= iCell && idx < idx + cell.options.colspan).reduce((prev, curr) => prev + curr); + } + // E-4: Create lines based upon available column width + newCell._lines = parseTextToLines(cell, totalColW); + // E-5: Add cell to array + rowCellLines.push(newCell); + }); + /** E: --==[[ PAGE DATA SET ]]==-- + * Add text one-line-a-time to this row's cells until: lines are exhausted OR table height limit is hit + * + * Design: + * - Building cells L-to-R/loop style wont work as one could be 100 lines and another 1 line + * - Therefore, build the whole row, one-line-at-a-time, across each table columns + * - Then, when the vertical size limit is hit is by any of the cells, make a new slide and continue adding any remaining lines + * + * Implementation: + * - `rowCellLines` is an array of cells, one for each column in the table, with each cell containing an array of lines + * + * Sample Data: + * - `rowCellLines` ..: [ TableCell, TableCell, TableCell ] + * - `TableCell` .....: { _type: 'tablecell', _lines: TableCell[], _lineHeight: 10 } + * - `_lines` ........: [ {_type: 'tablecell', text: 'cell-1,line-1', options: {…}}, {_type: 'tablecell', text: 'cell-1,line-2', options: {…}} } + * - `_lines` is TableCell[] (the 1-N words in the line) + * { + * _lines: [{ text:'cell-1,line-1' }, { text:'cell-1,line-2' }], // TOTAL-CELL-HEIGHT = 2 + * _lines: [{ text:'cell-2,line-1' }, { text:'cell-2,line-2' }], // TOTAL-CELL-HEIGHT = 2 + * _lines: [{ text:'cell-3,line-1' }, { text:'cell-3,line-2' }, { text:'cell-3,line-3' }, { text:'cell-3,line-4' }], // TOTAL-CELL-HEIGHT = 4 + * } + * + * Example: 2 rows, with the firstrow overflowing onto a new slide + * SLIDE 1: + * |--------|--------|--------|--------| + * | line-1 | line-1 | line-1 | line-1 | + * | | | line-2 | | + * | | | line-3 | | + * |--------|--------|--------|--------| + * + * SLIDE 2: + * |--------|--------|--------|--------| + * | | | line-4 | | + * |--------|--------|--------|--------| + * | line-1 | line-1 | line-1 | line-1 | + * |--------|--------|--------|--------| + */ + if (tableProps.verbose) + console.log(`\n| SLIDE [${tableRowSlides.length}]: ROW [${iRow}]: START...`); + let currCellIdx = 0; + let emuLineMaxH = 0; + let isDone = false; + while (!isDone) { + const srcCell = rowCellLines[currCellIdx]; + let tgtCell = currTableRow[currCellIdx]; // NOTE: may be redefined below (a new row may be created, thus changing this value) + // 1: calc emuLineMaxH + rowCellLines.forEach(cell => { + if (cell._lineHeight >= emuLineMaxH) + emuLineMaxH = cell._lineHeight; + }); + // 2: create a new slide if there is insufficient room for the current row + if (emuTabCurrH + emuLineMaxH > emuSlideTabH) { + if (tableProps.verbose) { + console.log('\n|-----------------------------------------------------------------------|'); + // prettier-ignore + console.log(`|-- NEW SLIDE CREATED (currTabH+currLineH > maxH) => ${(emuTabCurrH / EMU).toFixed(2)} + ${(srcCell._lineHeight / EMU).toFixed(2)} > ${emuSlideTabH / EMU}`); + console.log('|-----------------------------------------------------------------------|\n\n'); + } + // A: add current row slide or it will be lost (only if it has rows and text) + if (currTableRow.length > 0 && currTableRow.map(cell => cell.text.length).reduce((p, n) => p + n) > 0) + newTableRowSlide.rows.push(currTableRow); + // B: add current slide to Slides array + tableRowSlides.push(newTableRowSlide); + // C: reset working/curr slide to hold rows as they're created + const newRows = []; + newTableRowSlide = { rows: newRows }; + // D: reset working/curr row + currTableRow = []; + row.forEach(cell => currTableRow.push({ _type: SLIDE_OBJECT_TYPES.tablecell, text: [], options: cell.options })); + // E: Calc usable vertical space/table height now as we may still be in the same row and code above ("C: Calc usable vertical space/table height.") calc may now be invalid + calcSlideTabH(); + emuTabCurrH += maxCellMarTopEmu + maxCellMarBtmEmu; // Start row height with margins + if (tableProps.verbose) + console.log(`| SLIDE [${tableRowSlides.length}]: emuSlideTabH ...... = ${(emuSlideTabH / EMU).toFixed(1)} `); + // F: reset current table height for this new Slide + emuTabCurrH = 0; + // G: handle repeat headers option /or/ Add new empty row to continue current lines into + if ((tableProps.addHeaderToEach || tableProps.autoPageRepeatHeader) && tableProps._arrObjTabHeadRows) { + tableProps._arrObjTabHeadRows.forEach(row => { + const newHeadRow = []; + let maxLineHeight = 0; + row.forEach(cell => { + newHeadRow.push(cell); + if (cell._lineHeight > maxLineHeight) + maxLineHeight = cell._lineHeight; + }); + newTableRowSlide.rows.push(newHeadRow); + emuTabCurrH += maxLineHeight; // TODO: what about margins? dont we need to include cell margin in line height? + }); + } + // WIP: NEW: TEST THIS!! + tgtCell = currTableRow[currCellIdx]; + } + // 3: set array of words that comprise this line + const currLine = srcCell._lines.shift(); + // 4: create new line by adding all words from curr line (or add empty if there are no words to avoid "needs repair" issue triggered when cells have null content) + if (Array.isArray(tgtCell.text)) { + if (currLine) + tgtCell.text = tgtCell.text.concat(currLine); + else if (tgtCell.text.length === 0) + tgtCell.text = tgtCell.text.concat({ _type: SLIDE_OBJECT_TYPES.tablecell, text: '' }); + // IMPORTANT: ^^^ add empty if there are no words to avoid "needs repair" issue triggered when cells have null content + } + // 5: increase table height by the curr line height (if we're on the last column) + if (currCellIdx === rowCellLines.length - 1) + emuTabCurrH += emuLineMaxH; + // 6: advance column/cell index (or circle back to first one to continue adding lines) + currCellIdx = currCellIdx < rowCellLines.length - 1 ? currCellIdx + 1 : 0; + // 7: WIP: done? + const brent = rowCellLines.map(cell => cell._lines.length).reduce((prev, next) => prev + next); + if (brent === 0) + isDone = true; + } + // F: Flush/capture row buffer before it resets at the top of this loop + if (currTableRow.length > 0) + newTableRowSlide.rows.push(currTableRow); + if (tableProps.verbose) { + console.log(`- SLIDE [${tableRowSlides.length}]: ROW [${iRow}]: ...COMPLETE ...... emuTabCurrH = ${(emuTabCurrH / EMU).toFixed(2)} ( emuSlideTabH = ${(emuSlideTabH / EMU).toFixed(2)} )`); + } + }); + // STEP 7: Flush buffer / add final slide + tableRowSlides.push(newTableRowSlide); + if (tableProps.verbose) { + console.log('\n|================================================|'); + console.log(`| FINAL: tableRowSlides.length = ${tableRowSlides.length}`); + tableRowSlides.forEach(slide => console.log(slide)); + console.log('|================================================|\n\n'); + } + // LAST: + return tableRowSlides; + } + /** + * Reproduces an HTML table as a PowerPoint table - including column widths, style, etc. - creates 1 or more slides as needed + * @param {PptxGenJS} pptx - pptxgenjs instance + * @param {string} tabEleId - HTMLElementID of the table + * @param {ITableToSlidesOpts} options - array of options (e.g.: tabsize) + * @param {SlideLayout} masterSlide - masterSlide + */ + function genTableToSlides(pptx, tabEleId, options = {}, masterSlide) { + const opts = options || {}; + opts.slideMargin = opts.slideMargin || opts.slideMargin === 0 ? opts.slideMargin : 0.5; + let emuSlideTabW = opts.w || pptx.presLayout.width; + const arrObjTabHeadRows = []; + const arrObjTabBodyRows = []; + const arrObjTabFootRows = []; + const arrColW = []; + const arrTabColW = []; + let arrInchMargins = [0.5, 0.5, 0.5, 0.5]; // TRBL-style + let intTabW = 0; + // REALITY-CHECK: + if (!document.getElementById(tabEleId)) + throw new Error('tableToSlides: Table ID "' + tabEleId + '" does not exist!'); + // STEP 1: Set margins + if (masterSlide === null || masterSlide === void 0 ? void 0 : masterSlide._margin) { + if (Array.isArray(masterSlide._margin)) + arrInchMargins = masterSlide._margin; + else if (!isNaN(masterSlide._margin)) + arrInchMargins = [masterSlide._margin, masterSlide._margin, masterSlide._margin, masterSlide._margin]; + opts.slideMargin = arrInchMargins; + } + else if (opts === null || opts === void 0 ? void 0 : opts.slideMargin) { + if (Array.isArray(opts.slideMargin)) + arrInchMargins = opts.slideMargin; + else if (!isNaN(opts.slideMargin)) + arrInchMargins = [opts.slideMargin, opts.slideMargin, opts.slideMargin, opts.slideMargin]; + } + emuSlideTabW = (opts.w ? inch2Emu(opts.w) : pptx.presLayout.width) - inch2Emu(arrInchMargins[1] + arrInchMargins[3]); + if (opts.verbose) { + console.log('[[VERBOSE MODE]]'); + console.log('|-- `tableToSlides` ----------------------------------------------------|'); + console.log(`| tableProps.h .................................... = ${opts.h}`); + console.log(`| tableProps.w .................................... = ${opts.w}`); + console.log(`| pptx.presLayout.width ........................... = ${(pptx.presLayout.width / EMU).toFixed(1)}`); + console.log(`| pptx.presLayout.height .......................... = ${(pptx.presLayout.height / EMU).toFixed(1)}`); + console.log(`| emuSlideTabW .................................... = ${(emuSlideTabW / EMU).toFixed(1)}`); + } + // STEP 2: Grab table col widths - just find the first availble row, either thead/tbody/tfoot, others may have colspans, who cares, we only need col widths from 1 + let firstRowCells = document.querySelectorAll(`#${tabEleId} tr:first-child th`); + if (firstRowCells.length === 0) + firstRowCells = document.querySelectorAll(`#${tabEleId} tr:first-child td`); + firstRowCells.forEach((cellEle) => { + const cell = cellEle; + if (cell.getAttribute('colspan')) { + // Guesstimate (divide evenly) col widths + // NOTE: both j$query and vanilla selectors return {0} when table is not visible) + for (let idxc = 0; idxc < Number(cell.getAttribute('colspan')); idxc++) { + arrTabColW.push(Math.round(cell.offsetWidth / Number(cell.getAttribute('colspan')))); + } + } + else { + arrTabColW.push(cell.offsetWidth); + } + }); + arrTabColW.forEach(colW => { + intTabW += colW; + }); + // STEP 3: Calc/Set column widths by using same column width percent from HTML table + arrTabColW.forEach((colW, idxW) => { + const intCalcWidth = Number(((Number(emuSlideTabW) * ((colW / intTabW) * 100)) / 100 / EMU).toFixed(2)); + let intMinWidth = 0; + const colSelectorMin = document.querySelector(`#${tabEleId} thead tr:first-child th:nth-child(${idxW + 1})`); + if (colSelectorMin) + intMinWidth = Number(colSelectorMin.getAttribute('data-pptx-min-width')); + const colSelectorSet = document.querySelector(`#${tabEleId} thead tr:first-child th:nth-child(${idxW + 1})`); + if (colSelectorSet) + intMinWidth = Number(colSelectorSet.getAttribute('data-pptx-width')); + arrColW.push((intMinWidth > intCalcWidth ? intMinWidth : intCalcWidth)); + }); + if (opts.verbose) { + console.log(`| arrColW ......................................... = [${arrColW.join(', ')}]`); + } + // STEP 4: Iterate over each table element and create data arrays (text and opts) + // NOTE: We create 3 arrays instead of one so we can loop over body then show header/footer rows on first and last page + const tableParts = ['thead', 'tbody', 'tfoot']; + tableParts.forEach(part => { + document.querySelectorAll(`#${tabEleId} ${part} tr`).forEach((row) => { + const htmlRow = row; + const arrObjTabCells = []; + Array.from(htmlRow.cells).forEach(cell => { + // A: Get RGB text/bkgd colors + const arrRGB1 = window.getComputedStyle(cell).getPropertyValue('color').replace(/\s+/gi, '').replace('rgba(', '').replace('rgb(', '').replace(')', '').split(','); + let arrRGB2 = window + .getComputedStyle(cell) + .getPropertyValue('background-color') + .replace(/\s+/gi, '') + .replace('rgba(', '') + .replace('rgb(', '') + .replace(')', '') + .split(','); + if ( + // NOTE: (ISSUE#57): Default for unstyled tables is black bkgd, so use white instead + window.getComputedStyle(cell).getPropertyValue('background-color') === 'rgba(0, 0, 0, 0)' || + window.getComputedStyle(cell).getPropertyValue('transparent')) { + arrRGB2 = ['255', '255', '255']; + } + // B: Create option object + const cellOpts = { + align: null, + bold: !!(window.getComputedStyle(cell).getPropertyValue('font-weight') === 'bold' || + Number(window.getComputedStyle(cell).getPropertyValue('font-weight')) >= 500), + border: null, + color: rgbToHex(Number(arrRGB1[0]), Number(arrRGB1[1]), Number(arrRGB1[2])), + fill: { color: rgbToHex(Number(arrRGB2[0]), Number(arrRGB2[1]), Number(arrRGB2[2])) }, + fontFace: (window.getComputedStyle(cell).getPropertyValue('font-family') || '').split(',')[0].replace(/"/g, '').replace('inherit', '').replace('initial', '') || + null, + fontSize: Number(window.getComputedStyle(cell).getPropertyValue('font-size').replace(/[a-z]/gi, '')), + margin: null, + colspan: Number(cell.getAttribute('colspan')) || null, + rowspan: Number(cell.getAttribute('rowspan')) || null, + valign: null, + }; + if (['left', 'center', 'right', 'start', 'end'].includes(window.getComputedStyle(cell).getPropertyValue('text-align'))) { + const align = window.getComputedStyle(cell).getPropertyValue('text-align').replace('start', 'left').replace('end', 'right'); + cellOpts.align = align === 'center' ? 'center' : align === 'left' ? 'left' : align === 'right' ? 'right' : null; + } + if (['top', 'middle', 'bottom'].includes(window.getComputedStyle(cell).getPropertyValue('vertical-align'))) { + const valign = window.getComputedStyle(cell).getPropertyValue('vertical-align'); + cellOpts.valign = valign === 'top' ? 'top' : valign === 'middle' ? 'middle' : valign === 'bottom' ? 'bottom' : null; + } + // C: Add padding [margin] (if any) + // NOTE: Margins translate: px->pt 1:1 (e.g.: a 20px padded cell looks the same in PPTX as 20pt Text Inset/Padding) + if (window.getComputedStyle(cell).getPropertyValue('padding-left')) { + cellOpts.margin = [0, 0, 0, 0]; + const sidesPad = ['padding-top', 'padding-right', 'padding-bottom', 'padding-left']; + sidesPad.forEach((val, idxs) => { + cellOpts.margin[idxs] = Math.round(Number(window.getComputedStyle(cell).getPropertyValue(val).replace(/\D/gi, ''))); + }); + } + // D: Add border (if any) + if (window.getComputedStyle(cell).getPropertyValue('border-top-width') || + window.getComputedStyle(cell).getPropertyValue('border-right-width') || + window.getComputedStyle(cell).getPropertyValue('border-bottom-width') || + window.getComputedStyle(cell).getPropertyValue('border-left-width')) { + cellOpts.border = [null, null, null, null]; + const sidesBor = ['top', 'right', 'bottom', 'left']; + sidesBor.forEach((val, idxb) => { + const intBorderW = Math.round(Number(window + .getComputedStyle(cell) + .getPropertyValue('border-' + val + '-width') + .replace('px', ''))); + let arrRGB = []; + arrRGB = window + .getComputedStyle(cell) + .getPropertyValue('border-' + val + '-color') + .replace(/\s+/gi, '') + .replace('rgba(', '') + .replace('rgb(', '') + .replace(')', '') + .split(','); + const strBorderC = rgbToHex(Number(arrRGB[0]), Number(arrRGB[1]), Number(arrRGB[2])); + cellOpts.border[idxb] = { pt: intBorderW, color: strBorderC }; + }); + } + // LAST: Add cell + arrObjTabCells.push({ + _type: SLIDE_OBJECT_TYPES.tablecell, + text: cell.innerText, // `innerText` returns
as "\n", so linebreak etc. work later! + options: cellOpts, + }); + }); + switch (part) { + case 'thead': + arrObjTabHeadRows.push(arrObjTabCells); + break; + case 'tbody': + arrObjTabBodyRows.push(arrObjTabCells); + break; + case 'tfoot': + arrObjTabFootRows.push(arrObjTabCells); + break; + default: + console.log(`table parsing: unexpected table part: ${part}`); + break; + } + }); + }); + // STEP 5: Break table into Slides as needed + // Pass head-rows as there is an option to add to each table and the parse func needs this data to fulfill that option + opts._arrObjTabHeadRows = arrObjTabHeadRows || null; + opts.colW = arrColW; + getSlidesForTableRows([...arrObjTabHeadRows, ...arrObjTabBodyRows, ...arrObjTabFootRows], opts, pptx.presLayout, masterSlide).forEach((slide, idxTr) => { + // A: Create new Slide + const newSlide = pptx.addSlide({ masterName: opts.masterSlideName || null }); + // B: DESIGN: Reset `y` to startY or margin after first Slide (ISSUE#43, ISSUE#47, ISSUE#48) + if (idxTr === 0) + opts.y = opts.y || arrInchMargins[0]; + if (idxTr > 0) + opts.y = opts.autoPageSlideStartY || opts.newSlideStartY || arrInchMargins[0]; + if (opts.verbose) + console.log(`| opts.autoPageSlideStartY: ${opts.autoPageSlideStartY} / arrInchMargins[0]: ${arrInchMargins[0]} => opts.y = ${opts.y}`); + // C: Add table to Slide + newSlide.addTable(slide.rows, { x: opts.x || arrInchMargins[3], y: opts.y, w: Number(emuSlideTabW) / EMU, colW: arrColW, autoPage: false }); + // D: Add any additional objects + if (opts.addImage) { + opts.addImage.options = opts.addImage.options || {}; + if (!opts.addImage.image || (!opts.addImage.image.path && !opts.addImage.image.data)) { + console.warn('Warning: tableToSlides.addImage requires either `path` or `data`'); + } + else { + newSlide.addImage({ + path: opts.addImage.image.path, + data: opts.addImage.image.data, + x: opts.addImage.options.x, + y: opts.addImage.options.y, + w: opts.addImage.options.w, + h: opts.addImage.options.h, + }); + } + } + if (opts.addShape) + newSlide.addShape(opts.addShape.shapeName, opts.addShape.options || {}); + if (opts.addTable) + newSlide.addTable(opts.addTable.rows, opts.addTable.options || {}); + if (opts.addText) + newSlide.addText(opts.addText.text, opts.addText.options || {}); + }); + } + + /** + * PptxGenJS: Slide Object Generators + */ + /** counter for included charts (used for index in their filenames) */ + let _chartCounter = 0; + /** + * Transforms a slide definition to a slide object that is then passed to the XML transformation process. + * @param {SlideMasterProps} props - slide definition + * @param {PresSlide|SlideLayout} target - empty slide object that should be updated by the passed definition + */ + function createSlideMaster(props, target) { + // STEP 1: Add background if either the slide or layout has background props + // if (props.background || target.background) addBackgroundDefinition(props.background, target) + if (props.bkgd) + target.bkgd = props.bkgd; // DEPRECATED: (remove in v4.0.0) + // STEP 2: Add all Slide Master objects in the order they were given + if (props.objects && Array.isArray(props.objects) && props.objects.length > 0) { + props.objects.forEach((object, idx) => { + var _a; + const key = Object.keys(object)[0]; + const tgt = target; + if (MASTER_OBJECTS[key] && key === 'chart') + addChartDefinition(tgt, object[key].type, object[key].data, object[key].opts); + else if (MASTER_OBJECTS[key] && key === 'image') + addImageDefinition(tgt, object[key]); + else if (MASTER_OBJECTS[key] && key === 'line') + addShapeDefinition(tgt, SHAPE_TYPE.LINE, object[key]); + else if (MASTER_OBJECTS[key] && key === 'rect') + addShapeDefinition(tgt, SHAPE_TYPE.RECTANGLE, object[key]); + else if (MASTER_OBJECTS[key] && key === 'text') + addTextDefinition(tgt, [{ text: object[key].text }], object[key].options, false); + else if (MASTER_OBJECTS[key] && key === 'placeholder') { + // TODO: 20180820: Check for existing `name`? + object[key].options.placeholder = object[key].options.name; + delete object[key].options.name; // remap name for earier handling internally + object[key].options._placeholderType = object[key].options.type; + delete object[key].options.type; // remap name for earier handling internally + // Use provided idx if available (for preserving original PPTX indices), otherwise compute + object[key].options._placeholderIdx = object[key].options.idx !== undefined ? object[key].options.idx : (100 + idx); + addTextDefinition(tgt, [{ text: object[key].text }], object[key].options, true); + // TODO: ISSUE#599 - only text is suported now (add more below) + // else if (object[key].image) addImageDefinition(tgt, object[key].image) + /* 20200120: So... image placeholders go into the "slideLayoutN.xml" file and addImage doesnt do this yet... + + + + + + + + + + + */ + } + else if (MASTER_OBJECTS[key] && key === 'picturePlaceholder') { + // NEW: Add native picture placeholder (creates element) + // Use provided idx if available (for preserving original PPTX indices), otherwise compute + const placeholderIdx = ((_a = object[key].options) === null || _a === void 0 ? void 0 : _a.idx) !== undefined ? object[key].options.idx : (100 + idx); + addPicturePlaceholderDefinition(tgt, object[key], placeholderIdx); + } + }); + } + // STEP 3: Add Slide Numbers (NOTE: Do this last so numbers are not covered by objects!) + if (props.slideNumber && typeof props.slideNumber === 'object') + target._slideNumberProps = props.slideNumber; + } + /** + * Generate the chart based on input data. + * OOXML Chart Spec: ISO/IEC 29500-1:2016(E) + * + * @param {CHART_NAME | IChartMulti[]} `type` should belong to: 'column', 'pie' + * @param {[]} `data` a JSON object with follow the following format + * @param {IChartOptsLib} `opt` chart options + * @param {PresSlide} `target` slide object that the chart will be added to + * @return {object} chart object + * { + * title: 'eSurvey chart', + * data: [ + * { + * name: 'Income', + * labels: ['2005', '2006', '2007', '2008', '2009'], + * values: [23.5, 26.2, 30.1, 29.5, 24.6] + * }, + * { + * name: 'Expense', + * labels: ['2005', '2006', '2007', '2008', '2009'], + * values: [18.1, 22.8, 23.9, 25.1, 25] + * } + * ] + * } + */ + function addChartDefinition(target, type, data, opt) { + var _a; + function correctGridLineOptions(glOpts) { + if (!glOpts || glOpts.style === 'none') + return; + if (glOpts.size !== undefined && (isNaN(Number(glOpts.size)) || glOpts.size <= 0)) { + console.warn('Warning: chart.gridLine.size must be greater than 0.'); + delete glOpts.size; // delete prop to used defaults + } + if (glOpts.style && !['solid', 'dash', 'dot'].includes(glOpts.style)) { + console.warn('Warning: chart.gridLine.style options: `solid`, `dash`, `dot`.'); + delete glOpts.style; + } + if (glOpts.cap && !['flat', 'square', 'round'].includes(glOpts.cap)) { + console.warn('Warning: chart.gridLine.cap options: `flat`, `square`, `round`.'); + delete glOpts.cap; + } + } + const chartId = ++_chartCounter; + const resultObject = { + _type: null, + text: null, + options: null, + chartRid: null, + isChartEx: false, + }; + // DESIGN: `type` can an object (ex: `pptx.charts.DOUGHNUT`) or an array of chart objects + // EX: addChartDefinition([ { type:pptx.charts.BAR, data:{name:'', labels:[], values[]} }, {} ]) + // Multi-Type Charts + let tmpOpt = null; + let tmpData = []; + if (Array.isArray(type)) { + // For multi-type charts there needs to be data for each type, + // as well as a single data source for non-series operations. + // The data is indexed below to keep the data in order when segmented + // into types. + type.forEach(obj => { + tmpData = tmpData.concat(obj.data); + }); + tmpOpt = data || opt; + } + else { + tmpData = data; + tmpOpt = opt; + } + tmpData.forEach((item, i) => { + item._dataIndex = i; + // Converts the 'labels' array from string[] to string[][] (or the respective primitive type), if needed + if (item.labels !== undefined && !Array.isArray(item.labels[0])) { + item.labels = [item.labels]; + } + }); + const options = tmpOpt && typeof tmpOpt === 'object' ? tmpOpt : {}; + // STEP 1: TODO: check for reqd fields, correct type, etc + // `type` exists in CHART_TYPE + // Array.isArray(data) + /* + if ( Array.isArray(rel.data) && rel.data.length > 0 && typeof rel.data[0] === 'object' + && rel.data[0].labels && Array.isArray(rel.data[0].labels) + && rel.data[0].values && Array.isArray(rel.data[0].values) ) { + obj = rel.data[0]; + } + else { + console.warn("USAGE: addChart( 'pie', [ {name:'Sales', labels:['Jan','Feb'], values:[10,20]} ], {x:1, y:1} )"); + return; + } + */ + // STEP 2: Set default options/decode user options + // A: Core + options._type = type; + options.x = typeof options.x !== 'undefined' && options.x != null && !isNaN(Number(options.x)) ? options.x : 1; + options.y = typeof options.y !== 'undefined' && options.y != null && !isNaN(Number(options.y)) ? options.y : 1; + options.w = options.w || '50%'; + options.h = options.h || '50%'; + options.objectName = options.objectName + ? encodeXmlEntities(options.objectName) + : `Chart ${target._slideObjects.filter(obj => obj._type === SLIDE_OBJECT_TYPES.chart).length}`; + // B: Options: misc + if (!['bar', 'col'].includes(options.barDir || '')) + options.barDir = 'col'; + // barGrouping: "21.2.3.17 ST_Grouping (Grouping)" + // barGrouping must be handled before data label validation as it can affect valid label positioning + if (options._type === CHART_TYPE.AREA) { + if (!['stacked', 'standard', 'percentStacked'].includes(options.barGrouping || '')) + options.barGrouping = 'standard'; + } + if (options._type === CHART_TYPE.BAR) { + if (!['clustered', 'stacked', 'percentStacked'].includes(options.barGrouping || '')) + options.barGrouping = 'clustered'; + } + if (options._type === CHART_TYPE.BAR3D) { + if (!['clustered', 'stacked', 'standard', 'percentStacked'].includes(options.barGrouping || '')) + options.barGrouping = 'standard'; + } + if ((_a = options.barGrouping) === null || _a === void 0 ? void 0 : _a.includes('tacked')) { + if (!options.barGapWidthPct) + options.barGapWidthPct = 50; + } + // Clean up and validate data label positions + // REFERENCE: https://docs.microsoft.com/en-us/openspecs/office_standards/ms-oi29500/e2b1697c-7adc-463d-9081-3daef72f656f?redirectedfrom=MSDN + if (options.dataLabelPosition) { + if (options._type === CHART_TYPE.AREA || options._type === CHART_TYPE.BAR3D || options._type === CHART_TYPE.DOUGHNUT) { + delete options.dataLabelPosition; + } + if (options._type === CHART_TYPE.PIE || options._type === CHART_TYPE.PIE3D) { + if (!['bestFit', 'ctr', 'inEnd', 'outEnd'].includes(options.dataLabelPosition)) + delete options.dataLabelPosition; + } + if (options._type === CHART_TYPE.BUBBLE || options._type === CHART_TYPE.LINE || options._type === CHART_TYPE.SCATTER) { + if (!['b', 'ctr', 'l', 'r', 't'].includes(options.dataLabelPosition)) + delete options.dataLabelPosition; + } + if (options._type === CHART_TYPE.BAR) { + if (!['stacked', 'percentStacked'].includes(options.barGrouping || '')) { + if (!['ctr', 'inBase', 'inEnd'].includes(options.dataLabelPosition)) + delete options.dataLabelPosition; + } + if (!['clustered'].includes(options.barGrouping || '')) { + if (!['ctr', 'inBase', 'inEnd', 'outEnd'].includes(options.dataLabelPosition)) + delete options.dataLabelPosition; + } + } + } + options.dataLabelBkgrdColors = options.dataLabelBkgrdColors || !options.dataLabelBkgrdColors ? options.dataLabelBkgrdColors : false; + if (!['b', 'l', 'r', 't', 'tr'].includes(options.legendPos || '')) + options.legendPos = 'r'; + // 3D bar: ST_Shape + if (!['cone', 'coneToMax', 'box', 'cylinder', 'pyramid', 'pyramidToMax'].includes(options.bar3DShape || '')) + options.bar3DShape = 'box'; + // lineDataSymbol: http://www.datypic.com/sc/ooxml/a-val-32.html + // Spec has [plus,star,x] however neither PPT2013 nor PPT-Online support them + if (!['circle', 'dash', 'diamond', 'dot', 'none', 'square', 'triangle'].includes(options.lineDataSymbol || '')) + options.lineDataSymbol = 'circle'; + if (!['gap', 'span'].includes(options.displayBlanksAs || '')) + options.displayBlanksAs = 'span'; + options.lineDataSymbolSize = options.lineDataSymbolSize && !isNaN(options.lineDataSymbolSize) ? options.lineDataSymbolSize : 6; + options.lineDataSymbolLineSize = options.lineDataSymbolLineSize && !isNaN(options.lineDataSymbolLineSize) ? valToPts(options.lineDataSymbolLineSize) : valToPts(0.75); + // `layout` allows the override of PPT defaults to maximize space + if (options.layout) { + ['x', 'y', 'w', 'h'].forEach(key => { + const val = options.layout[key]; + if (isNaN(Number(val)) || val < 0 || val > 1) { + console.warn('Warning: chart.layout.' + key + ' can only be 0-1'); + delete options.layout[key]; // remove invalid value so that default will be used + } + }); + } + // Set gridline defaults + options.catGridLine = options.catGridLine || (options._type === CHART_TYPE.SCATTER ? { color: 'D9D9D9', size: 1 } : { style: 'none' }); + options.valGridLine = options.valGridLine || (options._type === CHART_TYPE.SCATTER ? { color: 'D9D9D9', size: 1 } : {}); + options.serGridLine = options.serGridLine || (options._type === CHART_TYPE.SCATTER ? { color: 'D9D9D9', size: 1 } : { style: 'none' }); + correctGridLineOptions(options.catGridLine); + correctGridLineOptions(options.valGridLine); + correctGridLineOptions(options.serGridLine); + correctShadowOptions(options.shadow); + // C: Options: plotArea + options.showDataTable = options.showDataTable || !options.showDataTable ? options.showDataTable : false; + options.showDataTableHorzBorder = options.showDataTableHorzBorder || !options.showDataTableHorzBorder ? options.showDataTableHorzBorder : true; + options.showDataTableVertBorder = options.showDataTableVertBorder || !options.showDataTableVertBorder ? options.showDataTableVertBorder : true; + options.showDataTableOutline = options.showDataTableOutline || !options.showDataTableOutline ? options.showDataTableOutline : true; + options.showDataTableKeys = options.showDataTableKeys || !options.showDataTableKeys ? options.showDataTableKeys : true; + options.showLabel = options.showLabel || !options.showLabel ? options.showLabel : false; + options.showLegend = options.showLegend || !options.showLegend ? options.showLegend : false; + options.showPercent = options.showPercent || !options.showPercent ? options.showPercent : true; + options.showTitle = options.showTitle || !options.showTitle ? options.showTitle : false; + options.showValue = options.showValue || !options.showValue ? options.showValue : false; + options.showLeaderLines = options.showLeaderLines || !options.showLeaderLines ? options.showLeaderLines : false; + options.catAxisLineShow = typeof options.catAxisLineShow !== 'undefined' ? options.catAxisLineShow : true; + options.valAxisLineShow = typeof options.valAxisLineShow !== 'undefined' ? options.valAxisLineShow : true; + options.serAxisLineShow = typeof options.serAxisLineShow !== 'undefined' ? options.serAxisLineShow : true; + options.v3DRotX = !isNaN(options.v3DRotX) && options.v3DRotX >= -90 && options.v3DRotX <= 90 ? options.v3DRotX : 30; + options.v3DRotY = !isNaN(options.v3DRotY) && options.v3DRotY >= 0 && options.v3DRotY <= 360 ? options.v3DRotY : 30; + options.v3DRAngAx = options.v3DRAngAx || !options.v3DRAngAx ? options.v3DRAngAx : true; + options.v3DPerspective = !isNaN(options.v3DPerspective) && options.v3DPerspective >= 0 && options.v3DPerspective <= 240 ? options.v3DPerspective : 30; + // D: Options: chart + options.barGapWidthPct = !isNaN(options.barGapWidthPct) && options.barGapWidthPct >= 0 && options.barGapWidthPct <= 1000 ? options.barGapWidthPct : 150; + options.barGapDepthPct = !isNaN(options.barGapDepthPct) && options.barGapDepthPct >= 0 && options.barGapDepthPct <= 1000 ? options.barGapDepthPct : 150; + options.chartColors = Array.isArray(options.chartColors) + ? options.chartColors + : options._type === CHART_TYPE.PIE || options._type === CHART_TYPE.PIE3D || options._type === CHART_TYPE.DOUGHNUT + ? PIECHART_COLORS + : BARCHART_COLORS; + options.chartColorsOpacity = options.chartColorsOpacity && !isNaN(options.chartColorsOpacity) ? options.chartColorsOpacity : null; + // DEPRECATED: v3.11.0 - use `plotArea.border` vvv + options.border = options.border && typeof options.border === 'object' ? options.border : null; + if (options.border && (!options.border.pt || isNaN(options.border.pt))) + options.border.pt = DEF_CHART_BORDER.pt; + if (options.border && (!options.border.color || typeof options.border.color !== 'string')) + options.border.color = DEF_CHART_BORDER.color; + // DEPRECATED: (remove above in v4.0) ^^^ + options.plotArea = options.plotArea || {}; + options.plotArea.border = options.plotArea.border && typeof options.plotArea.border === 'object' ? options.plotArea.border : null; + if (options.plotArea.border && (!options.plotArea.border.pt || isNaN(options.plotArea.border.pt))) + options.plotArea.border.pt = DEF_CHART_BORDER.pt; + if (options.plotArea.border && (!options.plotArea.border.color || typeof options.plotArea.border.color !== 'string')) { + options.plotArea.border.color = DEF_CHART_BORDER.color; + } + if (options.border) + options.plotArea.border = options.border; // @deprecated [[remove in v4.0]] + options.plotArea.fill = options.plotArea.fill || { color: null, transparency: null }; + if (options.fill) + options.plotArea.fill.color = options.fill; // @deprecated [[remove in v4.0]] + // + options.chartArea = options.chartArea || {}; + options.chartArea.border = options.chartArea.border && typeof options.chartArea.border === 'object' ? options.chartArea.border : null; + if (options.chartArea.border) { + options.chartArea.border = { + color: options.chartArea.border.color || DEF_CHART_BORDER.color, + pt: options.chartArea.border.pt || DEF_CHART_BORDER.pt, + }; + } + options.chartArea.roundedCorners = typeof options.chartArea.roundedCorners === 'boolean' ? options.chartArea.roundedCorners : true; + // + options.dataBorder = options.dataBorder && typeof options.dataBorder === 'object' ? options.dataBorder : null; + if (options.dataBorder && (!options.dataBorder.pt || isNaN(options.dataBorder.pt))) + options.dataBorder.pt = 0.75; + if (options.dataBorder && options.dataBorder.color) { + const isHexColor = typeof options.dataBorder.color === 'string' && options.dataBorder.color.length === 6 && /^[0-9A-Fa-f]{6}$/.test(options.dataBorder.color); + const isSchemeColor = Object.values(SCHEME_COLOR_NAMES).includes(options.dataBorder.color); + if (!isHexColor && !isSchemeColor) { + options.dataBorder.color = 'F9F9F9'; // Fallback if neither hex nor scheme color + } + } + // + if (!options.dataLabelFormatCode && options._type === CHART_TYPE.SCATTER) + options.dataLabelFormatCode = 'General'; + if (!options.dataLabelFormatCode && (options._type === CHART_TYPE.PIE || options._type === CHART_TYPE.PIE3D || options._type === CHART_TYPE.DOUGHNUT)) { + options.dataLabelFormatCode = options.showPercent ? '0%' : 'General'; + } + options.dataLabelFormatCode = options.dataLabelFormatCode && typeof options.dataLabelFormatCode === 'string' ? options.dataLabelFormatCode : '#,##0'; + // + // Set default format for Scatter chart labels to custom string if not defined + if (!options.dataLabelFormatScatter && options._type === CHART_TYPE.SCATTER) + options.dataLabelFormatScatter = 'custom'; + // + options.lineSize = typeof options.lineSize === 'number' ? options.lineSize : 2; + options.valAxisMajorUnit = typeof options.valAxisMajorUnit === 'number' ? options.valAxisMajorUnit : null; + if (options._type === CHART_TYPE.AREA || options._type === CHART_TYPE.BAR || options._type === CHART_TYPE.BAR3D || options._type === CHART_TYPE.LINE) { + options.catAxisMultiLevelLabels = !!options.catAxisMultiLevelLabels; + } + else { + delete options.catAxisMultiLevelLabels; + } + // Check if this is a ChartEx type (treemap, sunburst, histogram, pareto, boxWhisker, regionMap, etc.) + const chartExTypes = [ + CHART_TYPE.TREEMAP, CHART_TYPE.SUNBURST, CHART_TYPE.HISTOGRAM, + CHART_TYPE.PARETO, CHART_TYPE.BOXWHISKER, CHART_TYPE.WATERFALL_CHARTEX, CHART_TYPE.FUNNEL, CHART_TYPE.REGION_MAP, + 'treemap', 'sunburst', 'histogram', 'pareto', 'boxWhisker', 'waterfallChartEx', 'funnel', 'regionMap' + ]; + const isChartEx = chartExTypes.includes(options._type); + // DEBUG: Log to stderr so it's not filtered + if (typeof process !== 'undefined' && process.stderr) { + process.stderr.write(`[PPTX] chartId=${chartId}, _type=${JSON.stringify(options._type)}, isChartEx=${isChartEx}\n`); + } + const chartFileName = isChartEx ? `chartEx${chartId}.xml` : `chart${chartId}.xml`; + // Use relative path from slide to charts folder + const chartTarget = isChartEx ? `../charts/chartEx${chartId}.xml` : `../charts/chart${chartId}.xml`; + // STEP 4: Set props + resultObject._type = 'chart'; + resultObject.options = options; + resultObject.chartRid = getNewRelId(target); + resultObject.isChartEx = isChartEx; + // STEP 5: Add this chart to this Slide Rels (rId/rels count spans all slides! Count all images to get next rId) + target._relsChart.push({ + rId: getNewRelId(target), + data: tmpData, + opts: options, + type: options._type, + globalId: chartId, + fileName: chartFileName, + Target: chartTarget, + isChartEx: isChartEx, + chartStyleXml: options.chartStyleXml, + chartColorsXml: options.chartColorsXml, + }); + target._slideObjects.push(resultObject); + return resultObject; + } + /** + * Adds an image object to a slide definition. + * This method can be called with only two args (opt, target) - this is supposed to be the only way in future. + * @param {ImageProps} `opt` - object containing `path`/`data`, `x`, `y`, etc. + * @param {PresSlide} `target` - slide that the image should be added to (if not specified as the 2nd arg) + * @note: Remote images (eg: "http://whatev.com/blah"/from web and/or remote server arent supported yet - we'd need to create an , load it, then send to canvas + * @see: https://stackoverflow.com/questions/164181/how-to-fetch-a-remote-image-to-display-in-a-canvas) + */ + function addImageDefinition(target, opt) { + const newObject = { + _type: null, + text: null, + options: null, + image: null, + imageRid: null, + hyperlink: null, + }; + // FIRST: Set vars for this image (object param replaces positional args in 1.1.0) + const intPosX = opt.x || 0; + const intPosY = opt.y || 0; + const intWidth = opt.w || 0; + const intHeight = opt.h || 0; + const sizing = opt.sizing || null; + const objHyperlink = opt.hyperlink || ''; + const strImageData = opt.data || ''; + const strImagePath = opt.path || ''; + let imageRelId = getNewRelId(target); + const objectName = opt.objectName ? encodeXmlEntities(opt.objectName) : `Image ${target._slideObjects.filter(obj => obj._type === SLIDE_OBJECT_TYPES.image).length}`; + // REALITY-CHECK: + if (!strImagePath && !strImageData) { + console.error('ERROR: addImage() requires either \'data\' or \'path\' parameter!'); + return null; + } + else if (strImagePath && typeof strImagePath !== 'string') { + console.error(`ERROR: addImage() 'path' should be a string, ex: {path:'/img/sample.png'} - you sent ${String(strImagePath)}`); + return null; + } + else if (strImageData && typeof strImageData !== 'string') { + console.error(`ERROR: addImage() 'data' should be a string, ex: {data:'image/png;base64,NMP[...]'} - you sent ${String(strImageData)}`); + return null; + } + else if (strImageData && typeof strImageData === 'string' && !strImageData.toLowerCase().includes('base64,')) { + console.error('ERROR: Image `data` value lacks a base64 header! Ex: \'image/png;base64,NMP[...]\')'); + return null; + } + // STEP 1: Set extension + // NOTE: Split to address URLs with params (eg: `path/brent.jpg?someParam=true`) + let strImgExtn = (strImagePath + .substring(strImagePath.lastIndexOf('/') + 1) + .split('?')[0] + .split('.') + .pop() + .split('#')[0] || 'png').toLowerCase(); + // However, pre-encoded images can be whatever mime-type they want (and good for them!) + if (strImageData && /image\/(\w+);/.exec(strImageData) && /image\/(\w+);/.exec(strImageData).length > 0) { + strImgExtn = /image\/(\w+);/.exec(strImageData)[1]; + } + else if (strImageData === null || strImageData === void 0 ? void 0 : strImageData.toLowerCase().includes('image/svg+xml')) { + strImgExtn = 'svg'; + } + // STEP 2: Set type/path + newObject._type = SLIDE_OBJECT_TYPES.image; + newObject.image = strImagePath || 'preencoded.png'; + // STEP 3: Set image properties & options + // FIXME: Measure actual image when no intWidth/intHeight params passed + // ....: This is an async process: we need to make getSizeFromImage use callback, then set H/W... + // if ( !intWidth || !intHeight ) { var imgObj = getSizeFromImage(strImagePath); + newObject.options = { + x: intPosX || 0, + y: intPosY || 0, + w: intWidth || 1, + h: intHeight || 1, + altText: opt.altText || '', + rounding: typeof opt.rounding === 'boolean' ? opt.rounding : false, + sizing, + placeholder: opt.placeholder, + rotate: opt.rotate || 0, + flipV: opt.flipV || false, + flipH: opt.flipH || false, + transparency: opt.transparency || 0, + objectName, + shadow: correctShadowOptions(opt.shadow), + }; + // STEP 4: Add this image to this Slide Rels (rId/rels count spans all slides! Count all images to get next rId) + if (strImgExtn === 'svg') { + // SVG files consume *TWO* rId's: (a png version and the svg image) + // + // + target._relsMedia.push({ + path: strImagePath || strImageData + 'png', + type: 'image/png', + extn: 'png', + data: strImageData || '', + rId: imageRelId, + Target: `../media/image-${target._slideNum}-${target._relsMedia.length + 1}.png`, + isSvgPng: true, + svgSize: { w: getSmartParseNumber(newObject.options.w, 'X', target._presLayout), h: getSmartParseNumber(newObject.options.h, 'Y', target._presLayout) }, + }); + newObject.imageRid = imageRelId; + target._relsMedia.push({ + path: strImagePath || strImageData, + type: 'image/svg+xml', + extn: strImgExtn, + data: strImageData || '', + rId: imageRelId + 1, + Target: `../media/image-${target._slideNum}-${target._relsMedia.length + 1}.${strImgExtn}`, + }); + newObject.imageRid = imageRelId + 1; + } + else { + // PERF: Duplicate media should reuse existing `Target` value and not create an additional copy + const dupeItem = target._relsMedia.filter(item => item.path && item.path === strImagePath && item.type === 'image/' + strImgExtn && !item.isDuplicate)[0]; + target._relsMedia.push({ + path: strImagePath || 'preencoded.' + strImgExtn, + type: 'image/' + strImgExtn, + extn: strImgExtn, + data: strImageData || '', + rId: imageRelId, + isDuplicate: !!(dupeItem === null || dupeItem === void 0 ? void 0 : dupeItem.Target), + Target: (dupeItem === null || dupeItem === void 0 ? void 0 : dupeItem.Target) ? dupeItem.Target : `../media/image-${target._slideNum}-${target._relsMedia.length + 1}.${strImgExtn}`, + }); + newObject.imageRid = imageRelId; + } + // STEP 5: Hyperlink support + if (typeof objHyperlink === 'object') { + if (!objHyperlink.url && !objHyperlink.slide) + throw new Error('ERROR: `hyperlink` option requires either: `url` or `slide`'); + else { + imageRelId++; + target._rels.push({ + type: SLIDE_OBJECT_TYPES.hyperlink, + data: objHyperlink.slide ? 'slide' : 'dummy', + rId: imageRelId, + Target: objHyperlink.url || objHyperlink.slide.toString(), + }); + objHyperlink._rId = imageRelId; + newObject.hyperlink = objHyperlink; + } + } + // STEP 6: Add object to slide + target._slideObjects.push(newObject); + } + /** + * Adds a media object to a slide definition. + * @param {PresSlide} `target` - slide object that the media will be added to + * @param {MediaProps} `opt` - media options + */ + function addMediaDefinition(target, opt) { + const intPosX = opt.x || 0; + const intPosY = opt.y || 0; + const intSizeX = opt.w || 2; + const intSizeY = opt.h || 2; + const strData = opt.data || ''; + const strLink = opt.link || ''; + const strPath = opt.path || ''; + const strType = opt.type || 'audio'; + let strExtn = ''; + const strCover = opt.cover || IMG_PLAYBTN; + const objectName = opt.objectName ? encodeXmlEntities(opt.objectName) : `Media ${target._slideObjects.filter(obj => obj._type === SLIDE_OBJECT_TYPES.media).length}`; + const slideData = { _type: SLIDE_OBJECT_TYPES.media }; + // STEP 1: REALITY-CHECK + if (!strPath && !strData && strType !== 'online') { + throw new Error('addMedia() error: either `data` or `path` are required!'); + } + else if (strData && !strData.toLowerCase().includes('base64,')) { + throw new Error('addMedia() error: `data` value lacks a base64 header! Ex: \'video/mpeg;base64,NMP[...]\')'); + } + else if (!strCover.toLowerCase().includes('base64,')) { + throw new Error('addMedia() error: `cover` value lacks a base64 header! Ex: \'data:image/png;base64,iV[...]\')'); + } + // Online Video: requires `link` + if (strType === 'online' && !strLink) { + throw new Error('addMedia() error: online videos require `link` value'); + } + // FIXME: 20190707 + // strType = strData ? strData.split(';')[0].split('/')[0] : strType + strExtn = opt.extn || (strData ? strData.split(';')[0].split('/')[1] : strPath.split('.').pop()) || 'mp3'; + // STEP 2: Set type, media + slideData.mtype = strType; + slideData.media = strPath || 'preencoded.mov'; + slideData.options = {}; + // STEP 3: Set media properties & options + slideData.options.x = intPosX; + slideData.options.y = intPosY; + slideData.options.w = intSizeX; + slideData.options.h = intSizeY; + slideData.options.objectName = objectName; + // STEP 4: Add this media to this Slide Rels (rId/rels count spans all slides! Count all media to get next rId) + /** + * NOTE: + * - rId starts at 2 (hence the intRels+1 below) as slideLayout.xml is rId=1! + * + * NOTE: + * - Audio/Video files consume *TWO* rId's: + * + * + */ + if (strType === 'online') { + const relId1 = getNewRelId(target); + // A: Add video + target._relsMedia.push({ + path: strPath || 'preencoded' + strExtn, + data: 'dummy', + type: 'online', + extn: strExtn, + rId: relId1, + Target: strLink, + }); + slideData.mediaRid = relId1; + // B: Add cover (preview/overlay) image + target._relsMedia.push({ + path: 'preencoded.png', + data: strCover, + type: 'image/png', + extn: 'png', + rId: getNewRelId(target), + Target: `../media/image-${target._slideNum}-${target._relsMedia.length + 1}.png`, + }); + } + else { + // PERF: Duplicate media should reuse existing `Target` value and not create an additional copy + const dupeItem = target._relsMedia.filter(item => item.path && item.path === strPath && item.type === strType + '/' + strExtn && !item.isDuplicate)[0]; + // A: "relationships/video" + const relId1 = getNewRelId(target); + target._relsMedia.push({ + path: strPath || 'preencoded' + strExtn, + type: strType + '/' + strExtn, + extn: strExtn, + data: strData || '', + rId: relId1, + isDuplicate: !!(dupeItem === null || dupeItem === void 0 ? void 0 : dupeItem.Target), + Target: (dupeItem === null || dupeItem === void 0 ? void 0 : dupeItem.Target) ? dupeItem.Target : `../media/media-${target._slideNum}-${target._relsMedia.length + 1}.${strExtn}`, + }); + slideData.mediaRid = relId1; + // B: "relationships/media" + target._relsMedia.push({ + path: strPath || 'preencoded' + strExtn, + type: strType + '/' + strExtn, + extn: strExtn, + data: strData || '', + rId: getNewRelId(target), + isDuplicate: !!(dupeItem === null || dupeItem === void 0 ? void 0 : dupeItem.Target), + Target: (dupeItem === null || dupeItem === void 0 ? void 0 : dupeItem.Target) ? dupeItem.Target : `../media/media-${target._slideNum}-${target._relsMedia.length + 0}.${strExtn}`, + }); + // C: Add cover (preview/overlay) image + target._relsMedia.push({ + path: 'preencoded.png', + type: 'image/png', + extn: 'png', + data: strCover, + rId: getNewRelId(target), + Target: `../media/image-${target._slideNum}-${target._relsMedia.length + 1}.png`, + }); + } + // LAST + target._slideObjects.push(slideData); + } + /** + * Adds Notes to a slide. + * @param {PresSlide} `target` slide object + * @param {string} `notes` + * @since 2.3.0 + */ + function addNotesDefinition(target, notes) { + target._slideObjects.push({ + _type: SLIDE_OBJECT_TYPES.notes, + text: [{ text: notes }], + }); + } + /** + * Adds a shape object to a slide definition. + * @param {PresSlide} target slide object that the shape should be added to + * @param {SHAPE_NAME} shapeName shape name + * @param {ShapeProps} opts shape options + */ + function addShapeDefinition(target, shapeName, opts) { + const options = typeof opts === 'object' ? opts : {}; + options.line = options.line || { type: 'none' }; + const newObject = { + _type: SLIDE_OBJECT_TYPES.text, + shape: shapeName || SHAPE_TYPE.RECTANGLE, + options, + text: null, + }; + // Reality check + if (!shapeName) + throw new Error('Missing/Invalid shape parameter! Example: `addShape(pptxgen.shapes.LINE, {x:1, y:1, w:1, h:1});`'); + // 1: ShapeLineProps defaults + const newLineOpts = { + type: options.line.type || 'solid', + color: options.line.color || DEF_SHAPE_LINE_COLOR, + transparency: options.line.transparency || 0, + width: options.line.width || 1, + dashType: options.line.dashType || 'solid', + beginArrowType: options.line.beginArrowType || null, + endArrowType: options.line.endArrowType || null, + // Preserve custom dash pattern if present + custDash: options.line.custDash || null, + }; + if (typeof options.line === 'object' && options.line.type !== 'none') + options.line = newLineOpts; + // 2: Set options defaults + options.x = options.x || (options.x === 0 ? 0 : 1); + options.y = options.y || (options.y === 0 ? 0 : 1); + options.w = options.w || (options.w === 0 ? 0 : 1); + options.h = options.h || (options.h === 0 ? 0 : 1); + options.objectName = options.objectName + ? encodeXmlEntities(options.objectName) + : `Shape ${target._slideObjects.filter(obj => obj._type === SLIDE_OBJECT_TYPES.text).length}`; + // 3: Handle line (lots of deprecated opts) + if (typeof options.line === 'string') { + const tmpOpts = newLineOpts; + tmpOpts.color = String(options.line); // @deprecated `options.line` string (was line color) + options.line = tmpOpts; + } + if (typeof options.lineSize === 'number') + options.line.width = options.lineSize; // @deprecated (part of `ShapeLineProps` now) + if (typeof options.lineDash === 'string') + options.line.dashType = options.lineDash; // @deprecated (part of `ShapeLineProps` now) + if (typeof options.lineHead === 'string') + options.line.beginArrowType = options.lineHead; // @deprecated (part of `ShapeLineProps` now) + if (typeof options.lineTail === 'string') + options.line.endArrowType = options.lineTail; // @deprecated (part of `ShapeLineProps` now) + // 4: Handle valign for shapes (set _bodyProp.anchor for XML generation) + // This is needed for shapes without text that still need anchor attribute preserved + if (options.valign) { + options._bodyProp = options._bodyProp || {}; + const valign = String(options.valign).toLowerCase(); + if (valign.indexOf('b') === 0) + options._bodyProp.anchor = TEXT_VALIGN.b; + else if (valign.indexOf('m') === 0) + options._bodyProp.anchor = TEXT_VALIGN.ctr; + else if (valign.indexOf('t') === 0) + options._bodyProp.anchor = TEXT_VALIGN.t; + } + // 5: Create hyperlink rels + createHyperlinkRels(target, newObject); + // LAST: Add object to slide + target._slideObjects.push(newObject); + } + /** + * Adds a table object to a slide definition. + * @param {PresSlide} target - slide object that the table should be added to + * @param {TableRow[]} tableRows - table data + * @param {TableProps} options - table options + * @param {SlideLayout} slideLayout - Slide layout + * @param {PresLayout} presLayout - Presentation layout + * @param {Function} addSlide - method + * @param {Function} getSlide - method + */ + function addTableDefinition(target, tableRows, options, slideLayout, presLayout, addSlide, getSlide) { + const slides = [target]; // Create array of Slides as more may be added by auto-paging + const opt = options && typeof options === 'object' ? options : {}; + opt.objectName = opt.objectName ? encodeXmlEntities(opt.objectName) : `Table ${target._slideObjects.filter(obj => obj._type === SLIDE_OBJECT_TYPES.table).length}`; + // STEP 1: REALITY-CHECK + { + // A: check for empty + if (tableRows === null || tableRows.length === 0 || !Array.isArray(tableRows)) { + throw new Error('addTable: Array expected! EX: \'slide.addTable( [rows], {options} );\' (https://gitbrent.github.io/PptxGenJS/docs/api-tables.html)'); + } + // B: check for non-well-formatted array (ex: rows=['a','b'] instead of [['a','b']]) + if (!tableRows[0] || !Array.isArray(tableRows[0])) { + throw new Error('addTable: \'rows\' should be an array of cells! EX: \'slide.addTable( [ [\'A\'], [\'B\'], {text:\'C\',options:{align:\'center\'}} ] );\' (https://gitbrent.github.io/PptxGenJS/docs/api-tables.html)'); + } + // TODO: FUTURE: This is wacky and wont function right (shows .w value when there is none from demo.js?!) 20191219 + /* + if (opt.w && opt.colW) { + console.warn('addTable: please use either `colW` or `w` - not both (table will use `colW` and ignore `w`)') + console.log(`${opt.w} ${opt.colW}`) + } + */ + } + // STEP 2: Transform `tableRows` into well-formatted TableCell's + // tableRows can be object or plain text array: `[{text:'cell 1'}, {text:'cell 2', options:{color:'ff0000'}}]` | `["cell 1", "cell 2"]` + const arrRows = []; + tableRows.forEach(row => { + const newRow = []; + if (Array.isArray(row)) { + row.forEach((cell) => { + // A: + const newCell = { + _type: SLIDE_OBJECT_TYPES.tablecell, + text: '', + options: typeof cell === 'object' && cell.options ? cell.options : {}, + }; + // B: + if (typeof cell === 'string' || typeof cell === 'number') + newCell.text = cell.toString(); + else if (cell.text) { + // Cell can contain complex text type, or string, or number + if (typeof cell.text === 'string' || typeof cell.text === 'number') + newCell.text = cell.text.toString(); + else if (cell.text) + newCell.text = cell.text; + // Capture options + if (cell.options && typeof cell.options === 'object') + newCell.options = cell.options; + } + // C: Set cell borders + // When using tableStyleId, don't default to 'none' borders - let table style provide them + const hasTableStyle = !!opt.tableStyleId; + if (!hasTableStyle) { + newCell.options.border = newCell.options.border || opt.border || [{ type: 'none' }, { type: 'none' }, { type: 'none' }, { type: 'none' }]; + } + else { + // Only use explicit cell border if set, don't inherit from table options + newCell.options.border = newCell.options.border || undefined; + } + const cellBorder = newCell.options.border; + // CASE 1: border interface is: BorderOptions | [BorderOptions, BorderOptions, BorderOptions, BorderOptions] + if (cellBorder && !Array.isArray(cellBorder) && typeof cellBorder === 'object') + newCell.options.border = [cellBorder, cellBorder, cellBorder, cellBorder]; + // Handle: [null, null, {type:'solid'}, null] + if (newCell.options.border) { + if (!newCell.options.border[0]) + newCell.options.border[0] = { type: 'none' }; + if (!newCell.options.border[1]) + newCell.options.border[1] = { type: 'none' }; + if (!newCell.options.border[2]) + newCell.options.border[2] = { type: 'none' }; + if (!newCell.options.border[3]) + newCell.options.border[3] = { type: 'none' }; + // set complete BorderOptions for all sides + const arrSides = [0, 1, 2, 3]; + arrSides.forEach(idx => { + newCell.options.border[idx] = { + type: newCell.options.border[idx].type || DEF_CELL_BORDER.type, + color: newCell.options.border[idx].color || DEF_CELL_BORDER.color, + pt: typeof newCell.options.border[idx].pt === 'number' ? newCell.options.border[idx].pt : DEF_CELL_BORDER.pt, + }; + }); + } + // LAST: + newRow.push(newCell); + }); + } + else { + console.log('addTable: tableRows has a bad row. A row should be an array of cells. You provided:'); + console.log(row); + } + arrRows.push(newRow); + }); + // STEP 3: Set options + opt.x = getSmartParseNumber(opt.x || (opt.x === 0 ? 0 : EMU / 2), 'X', presLayout); + opt.y = getSmartParseNumber(opt.y || (opt.y === 0 ? 0 : EMU / 2), 'Y', presLayout); + if (opt.h) + opt.h = getSmartParseNumber(opt.h, 'Y', presLayout); // NOTE: Dont set default `h` - leaving it null triggers auto-rowH in `makeXMLSlide()` + opt.fontSize = opt.fontSize || DEF_FONT_SIZE; + opt.margin = opt.margin === 0 || opt.margin ? opt.margin : DEF_CELL_MARGIN_IN; + if (typeof opt.margin === 'number') + opt.margin = [Number(opt.margin), Number(opt.margin), Number(opt.margin), Number(opt.margin)]; + // NOTE: dont add default color on tables with hyperlinks! (it causes any textObj's with hyperlinks to have subsequent words to be black) + if (JSON.stringify({ arrRows: arrRows }).indexOf('hyperlink') === -1) { + if (!opt.color) + opt.color = opt.color || DEF_FONT_COLOR; // Set default color if needed (table option > inherit from Slide > default to black) + } + if (typeof opt.border === 'string') { + console.warn('addTable `border` option must be an object. Ex: `{border: {type:\'none\'}}`'); + opt.border = null; + } + else if (Array.isArray(opt.border)) { + [0, 1, 2, 3].forEach(idx => { + opt.border[idx] = opt.border[idx] + ? { type: opt.border[idx].type || DEF_CELL_BORDER.type, color: opt.border[idx].color || DEF_CELL_BORDER.color, pt: opt.border[idx].pt || DEF_CELL_BORDER.pt } + : { type: 'none' }; + }); + } + opt.autoPage = typeof opt.autoPage === 'boolean' ? opt.autoPage : false; + opt.autoPageRepeatHeader = typeof opt.autoPageRepeatHeader === 'boolean' ? opt.autoPageRepeatHeader : false; + opt.autoPageHeaderRows = typeof opt.autoPageHeaderRows !== 'undefined' && !isNaN(Number(opt.autoPageHeaderRows)) ? Number(opt.autoPageHeaderRows) : 1; + opt.autoPageLineWeight = typeof opt.autoPageLineWeight !== 'undefined' && !isNaN(Number(opt.autoPageLineWeight)) ? Number(opt.autoPageLineWeight) : 0; + if (opt.autoPageLineWeight) { + if (opt.autoPageLineWeight > 1) + opt.autoPageLineWeight = 1; + else if (opt.autoPageLineWeight < -1) + opt.autoPageLineWeight = -1; + } + // autoPage ^^^ + // Set/Calc table width + // Get slide margins - start with default values, then adjust if master or slide margins exist + let arrTableMargin = DEF_SLIDE_MARGIN_IN; + // Case 1: Master margins + if (slideLayout && typeof slideLayout._margin !== 'undefined') { + if (Array.isArray(slideLayout._margin)) + arrTableMargin = slideLayout._margin; + else if (!isNaN(Number(slideLayout._margin))) { + arrTableMargin = [Number(slideLayout._margin), Number(slideLayout._margin), Number(slideLayout._margin), Number(slideLayout._margin)]; + } + } + // Case 2: Table margins + /* FIXME: add `_margin` option to slide options + else if ( addNewSlide._margin ) { + if ( Array.isArray(addNewSlide._margin) ) arrTableMargin = addNewSlide._margin; + else if ( !isNaN(Number(addNewSlide._margin)) ) arrTableMargin = [Number(addNewSlide._margin), Number(addNewSlide._margin), Number(addNewSlide._margin), Number(addNewSlide._margin)]; + } + */ + /** + * Calc table width depending upon what data we have - several scenarios exist (including bad data, eg: colW doesnt match col count) + * The API does not require a `w` value, but XML generation does, hence, code to calc a width below using colW value(s) + */ + if (opt.colW) { + const firstRowColCnt = arrRows[0].reduce((totalLen, c) => { + var _a; + if (((_a = c === null || c === void 0 ? void 0 : c.options) === null || _a === void 0 ? void 0 : _a.colspan) && typeof c.options.colspan === 'number') { + totalLen += c.options.colspan; + } + else { + totalLen += 1; + } + return totalLen; + }, 0); + if (typeof opt.colW === 'string' || typeof opt.colW === 'number') { + // Ex: `colW = 3` or `colW = '3'` + opt.w = Math.floor(Number(opt.colW) * firstRowColCnt); + opt.colW = null; // IMPORTANT: Unset `colW` so table is created using `opt.w`, which will evenly divide cols + } + else if (opt.colW && Array.isArray(opt.colW) && opt.colW.length === 1 && firstRowColCnt > 1) { + // Ex: `colW=[3]` but with >1 cols (same as above, user is saying "use this width for all") + opt.w = Math.floor(Number(opt.colW) * firstRowColCnt); + opt.colW = null; // IMPORTANT: Unset `colW` so table is created using `opt.w`, which will evenly divide cols + } + else if (opt.colW && Array.isArray(opt.colW) && opt.colW.length !== firstRowColCnt) { + // Err: Mismatched colW and cols count + console.warn('addTable: mismatch: (colW.length != data.length) Therefore, defaulting to evenly distributed col widths.'); + opt.colW = null; + } + } + else if (opt.w) { + opt.w = getSmartParseNumber(opt.w, 'X', presLayout); + } + else { + opt.w = Math.floor(presLayout._sizeW / EMU - arrTableMargin[1] - arrTableMargin[3]); + } + // STEP 4: Convert units to EMU now (we use different logic in makeSlide->table - smartCalc is not used) + if (opt.x && opt.x < 20) + opt.x = inch2Emu(opt.x); + if (opt.y && opt.y < 20) + opt.y = inch2Emu(opt.y); + if (opt.w && typeof opt.w === 'number' && opt.w < 20) + opt.w = inch2Emu(opt.w); + if (opt.h && typeof opt.h === 'number' && opt.h < 20) + opt.h = inch2Emu(opt.h); + // STEP 5: Loop over cells: transform each to ITableCell; check to see whether to unset `autoPage` while here + arrRows.forEach(row => { + row.forEach((cell, idy) => { + // A: Transform cell data if needed + /* Table rows can be an object or plain text - transform into object when needed + // EX: + var arrTabRows1 = [ + [ { text:'A1\nA2', options:{rowspan:2, fill:'99FFCC'} } ] + ,[ 'B2', 'C2', 'D2', 'E2' ] + ] + */ + if (typeof cell === 'number' || typeof cell === 'string') { + // Grab table formatting `opts` to use here so text style/format inherits as it should + row[idy] = { _type: SLIDE_OBJECT_TYPES.tablecell, text: String(row[idy]), options: opt }; + } + else if (typeof cell === 'object') { + // ARG0: `text` + if (typeof cell.text === 'number') + row[idy].text = row[idy].text.toString(); + else if (typeof cell.text === 'undefined' || cell.text === null) + row[idy].text = ''; + // ARG1: `options`: ensure options exists + row[idy].options = cell.options || {}; + // Set type to tabelcell + row[idy]._type = SLIDE_OBJECT_TYPES.tablecell; + } + // B: Check for fine-grained formatting, disable auto-page when found + // Since genXmlTextBody already checks for text array ( text:[{},..{}] ) we're done! + // Text in individual cells will be formatted as they are added by calls to genXmlTextBody within table builder + // if (cell.text && Array.isArray(cell.text)) opt.autoPage = false + // TODO: FIXME: WIP: 20210807: We cant do this anymore + }); + }); + // If autoPage = true, we need to return references to newly created slides if any + const newAutoPagedSlides = []; + // STEP 6: Auto-Paging: (via {options} and used internally) + // (used internally by `tableToSlides()` to not engage recursion - we've already paged the table data, just add this one) + if (opt && !opt.autoPage) { + // Create hyperlink rels (IMPORTANT: Wait until table has been shredded across Slides or all rels will end-up on Slide 1!) + createHyperlinkRels(target, arrRows); + // Add slideObjects (NOTE: Use `extend` to avoid mutation) + target._slideObjects.push({ + _type: SLIDE_OBJECT_TYPES.table, + arrTabRows: arrRows, + options: Object.assign({}, opt), + }); + } + else { + if (opt.autoPageRepeatHeader) + opt._arrObjTabHeadRows = arrRows.filter((_row, idx) => idx < opt.autoPageHeaderRows); + // Loop over rows and create 1-N tables as needed (ISSUE#21) + getSlidesForTableRows(arrRows, opt, presLayout, slideLayout).forEach((slide, idx) => { + // A: Create new Slide when needed, otherwise, use existing (NOTE: More than 1 table can be on a Slide, so we will go up AND down the Slide chain) + if (!getSlide(target._slideNum + idx)) + slides.push(addSlide({ masterName: (slideLayout === null || slideLayout === void 0 ? void 0 : slideLayout._name) || null })); + // B: Reset opt.y to `option`/`margin` after first Slide (ISSUE#43, ISSUE#47, ISSUE#48) + if (idx > 0) + opt.y = inch2Emu(opt.autoPageSlideStartY || opt.newSlideStartY || arrTableMargin[0]); + // C: Add this table to new Slide + { + const newSlide = getSlide(target._slideNum + idx); + opt.autoPage = false; + // Create hyperlink rels (IMPORTANT: Wait until table has been shredded across Slides or all rels will end-up on Slide 1!) + createHyperlinkRels(newSlide, slide.rows); + // Add rows to new slide + newSlide.addTable(slide.rows, Object.assign({}, opt)); + // Add reference to the new slide so it can be returned, but don't add the first one because the user already has a reference to that one. + if (idx > 0) + newAutoPagedSlides.push(newSlide); + } + }); + } + return newAutoPagedSlides; + } + /** + * Adds a picture placeholder object to a slide/layout definition. + * Creates a native element with empty that acts as an image placeholder. + * @param {PresSlide} target - slide/layout object that the placeholder should be added to + * @param {object} props - picture placeholder properties (x, y, w, h, name, idx) + * @param {number} placeholderIdx - the placeholder index + * @since: 1.0.6 + */ + function addPicturePlaceholderDefinition(target, props, placeholderIdx) { + var _a; + const objectName = props.name || `Picture Placeholder ${placeholderIdx}`; + const newObject = { + _type: SLIDE_OBJECT_TYPES.picturePlaceholder, + text: null, + options: { + x: props.x || 0, + y: props.y || 0, + w: props.w || 1, + h: props.h || 1, + objectName, + _placeholderIdx: (_a = props.idx) !== null && _a !== void 0 ? _a : placeholderIdx, + _placeholderType: 'image', // Will be mapped to 'pic' in XML generation + }, + image: null, + imageRid: null, + hyperlink: null, + }; + // Add the slide object + target._slideObjects.push(newObject); + } + /** + * Adds a text object to a slide definition. + * @param {PresSlide} target - slide object that the text should be added to + * @param {string|TextProps[]} text text string or object + * @param {TextPropsOptions} opts text options + * @param {boolean} isPlaceholder whether this a placeholder object + * @since: 1.0.0 + */ + function addTextDefinition(target, text, opts, isPlaceholder) { + const newObject = { + _type: isPlaceholder ? SLIDE_OBJECT_TYPES.placeholder : SLIDE_OBJECT_TYPES.text, + shape: (opts === null || opts === void 0 ? void 0 : opts.shape) || SHAPE_TYPE.RECTANGLE, + text: !text || text.length === 0 ? [{ text: '', options: null }] : text, + options: opts || {}, + }; + function cleanOpts(itemOpts) { + // STEP 1: Set some options + { + // A.1: Color (placeholders should inherit their colors or override them, so don't default them) + // Check both the item itself AND the parent object - text runs inside placeholder content + // should also inherit color, not have a default applied + if (!itemOpts.placeholder && !newObject.options.placeholder && !isPlaceholder) { + itemOpts.color = itemOpts.color || newObject.options.color || target.color || DEF_FONT_COLOR; + } + // A.2: Placeholder should inherit their bullets from master/layout, don't set a default + // Note: When bullet is undefined, we leave it undefined so PowerPoint inherits from the layout + // Only when bullet is explicitly set (true/false or an object) do we use it + // (no code needed here - we simply don't default bullet for placeholders) + // A.3: Text targeting a placeholder need to inherit the placeholders options (eg: margin, valign, etc.) (Issue #640) + // Note: We only inherit layout/positioning options, NOT font styling (fontFace, fontSize, color) + // Font styling should be defined in the layout placeholder and inherited by PowerPoint, not baked into the slide + if (itemOpts.placeholder && target._slideLayout && target._slideLayout._slideObjects) { + const placeHold = target._slideLayout._slideObjects.filter(item => item._type === 'placeholder' && item.options && item.options.placeholder && item.options.placeholder === itemOpts.placeholder)[0]; + if (placeHold === null || placeHold === void 0 ? void 0 : placeHold.options) { + // Only inherit structural/layout options, not font styling + // This allows slide content to inherit font styling from the layout placeholder + // itemOpts comes AFTER layoutOptions so explicit overrides take precedence + const _a = placeHold.options, { fontFace, fontSize, color, bold, italic } = _a, layoutOptions = __rest(_a, ["fontFace", "fontSize", "color", "bold", "italic"]); + itemOpts = Object.assign(Object.assign({}, layoutOptions), itemOpts); + } + } + // A.4: Other options + itemOpts.objectName = itemOpts.objectName + ? encodeXmlEntities(itemOpts.objectName) + : `Text ${target._slideObjects.filter(obj => obj._type === SLIDE_OBJECT_TYPES.text).length}`; + // B: + if (itemOpts.shape === SHAPE_TYPE.LINE) { + // ShapeLineProps defaults + const newLineOpts = { + type: itemOpts.line.type || 'solid', + color: itemOpts.line.color || DEF_SHAPE_LINE_COLOR, + transparency: itemOpts.line.transparency || 0, + width: itemOpts.line.width || 1, + dashType: itemOpts.line.dashType || 'solid', + beginArrowType: itemOpts.line.beginArrowType || null, + endArrowType: itemOpts.line.endArrowType || null, + }; + if (typeof itemOpts.line === 'object') + itemOpts.line = newLineOpts; + // 3: Handle line (lots of deprecated opts) + if (typeof itemOpts.line === 'string') { + const tmpOpts = newLineOpts; + if (typeof itemOpts.line === 'string') + tmpOpts.color = itemOpts.line; // @deprecated [remove in v4.0] + // tmpOpts.color = itemOpts.line!.toString() // @deprecated `itemOpts.line`:[string] (was line color) + itemOpts.line = tmpOpts; + } + if (typeof itemOpts.lineSize === 'number') + itemOpts.line.width = itemOpts.lineSize; // @deprecated (part of `ShapeLineProps` now) + if (typeof itemOpts.lineDash === 'string') + itemOpts.line.dashType = itemOpts.lineDash; // @deprecated (part of `ShapeLineProps` now) + if (typeof itemOpts.lineHead === 'string') + itemOpts.line.beginArrowType = itemOpts.lineHead; // @deprecated (part of `ShapeLineProps` now) + if (typeof itemOpts.lineTail === 'string') + itemOpts.line.endArrowType = itemOpts.lineTail; // @deprecated (part of `ShapeLineProps` now) + } + // C: Line opts + itemOpts.line = itemOpts.line || {}; + itemOpts.lineSpacing = itemOpts.lineSpacing && !isNaN(itemOpts.lineSpacing) ? itemOpts.lineSpacing : null; + itemOpts.lineSpacingMultiple = itemOpts.lineSpacingMultiple && !isNaN(itemOpts.lineSpacingMultiple) ? itemOpts.lineSpacingMultiple : null; + // D: Transform text options to bodyProperties as thats how we build XML + itemOpts._bodyProp = itemOpts._bodyProp || {}; + itemOpts._bodyProp.autoFit = itemOpts.autoFit || false; // DEPRECATED: (3.3.0) If true, shape will collapse to text size (Fit To shape) + itemOpts._bodyProp.anchor = !itemOpts.placeholder ? TEXT_VALIGN.ctr : null; // VALS: [t,ctr,b] + itemOpts._bodyProp.vert = itemOpts.vert || null; // VALS: [eaVert,horz,mongolianVert,vert,vert270,wordArtVert,wordArtVertRtl] + itemOpts._bodyProp.wrap = typeof itemOpts.wrap === 'boolean' ? itemOpts.wrap : true; + // E: Inset + // @deprecated 3.10.0 (`inset` - use `margin`) + if ((itemOpts.inset && !isNaN(Number(itemOpts.inset))) || itemOpts.inset === 0) { + itemOpts._bodyProp.lIns = inch2Emu(itemOpts.inset); + itemOpts._bodyProp.rIns = inch2Emu(itemOpts.inset); + itemOpts._bodyProp.tIns = inch2Emu(itemOpts.inset); + itemOpts._bodyProp.bIns = inch2Emu(itemOpts.inset); + } + // F: Transform @deprecated props + if (typeof itemOpts.underline === 'boolean' && itemOpts.underline === true) + itemOpts.underline = { style: 'sng' }; + } + // STEP 2: Transform `align`/`valign` to XML values, store in _bodyProp for XML gen + { + if ((itemOpts.align || '').toLowerCase().indexOf('c') === 0) + itemOpts._bodyProp.align = TEXT_HALIGN.center; + else if ((itemOpts.align || '').toLowerCase().indexOf('l') === 0) + itemOpts._bodyProp.align = TEXT_HALIGN.left; + else if ((itemOpts.align || '').toLowerCase().indexOf('r') === 0) + itemOpts._bodyProp.align = TEXT_HALIGN.right; + else if ((itemOpts.align || '').toLowerCase().indexOf('j') === 0) + itemOpts._bodyProp.align = TEXT_HALIGN.justify; + if ((itemOpts.valign || '').toLowerCase().indexOf('b') === 0) + itemOpts._bodyProp.anchor = TEXT_VALIGN.b; + else if ((itemOpts.valign || '').toLowerCase().indexOf('m') === 0) + itemOpts._bodyProp.anchor = TEXT_VALIGN.ctr; + else if ((itemOpts.valign || '').toLowerCase().indexOf('t') === 0) + itemOpts._bodyProp.anchor = TEXT_VALIGN.t; + } + // STEP 3: ROBUST: Set rational values for some shadow props if needed + correctShadowOptions(itemOpts.shadow); + return itemOpts; + } + // STEP 1: Create/Clean object options + newObject.options = cleanOpts(newObject.options); + // STEP 2: Create/Clean text options + newObject.text.forEach(item => (item.options = cleanOpts(item.options || {}))); + // STEP 3: Create hyperlinks + createHyperlinkRels(target, newObject.text || ''); + // LAST: Add object to Slide + target._slideObjects.push(newObject); + } + /* -------------------------------------------------------------------------------- */ + /** + * Adds a background image or color to a slide definition. + * @param {BackgroundProps} props - color string or an object with image definition + * @param {PresSlide} target - slide object that the background is set to + */ + function addBackgroundDefinition(props, target) { + var _a; + // A: @deprecated + if (target.bkgd) { + if (!target.background) + target.background = {}; + if (typeof target.bkgd === 'string') + target.background.color = target.bkgd; + else { + if (target.bkgd.data) + target.background.data = target.bkgd.data; + if (target.bkgd.path) + target.background.path = target.bkgd.path; + if (target.bkgd.src) + target.background.path = target.bkgd.src; // @deprecated (drop in 4.x) + } + } + if ((_a = target.background) === null || _a === void 0 ? void 0 : _a.fill) + target.background.color = target.background.fill; + // B: Handle media + if (props && (props.path || props.data)) { + // Allow the use of only the data key (`path` isnt reqd) + props.path = props.path || 'preencoded.png'; + let strImgExtn = (props.path.split('.').pop() || 'png').split('?')[0]; // Handle "blah.jpg?width=540" etc. + if (strImgExtn === 'jpg') + strImgExtn = 'jpeg'; // base64-encoded jpg's come out as "data:image/jpeg;base64,/9j/[...]", so correct exttnesion to avoid content warnings at PPT startup + target._relsMedia = target._relsMedia || []; + const intRels = target._relsMedia.length + 1; + // NOTE: `Target` cannot have spaces (eg:"Slide 1-image-1.jpg") or a "presentation is corrupt" warning comes up + target._relsMedia.push({ + path: props.path, + type: SLIDE_OBJECT_TYPES.image, + extn: strImgExtn, + data: props.data || null, + rId: intRels, + Target: `../media/${(target._name || '').replace(/\s+/gi, '-')}-image-${target._relsMedia.length + 1}.${strImgExtn}`, + }); + target._bkgdImgRid = intRels; + } + } + /** + * Parses text/text-objects from `addText()` and `addTable()` methods; creates 'hyperlink'-type Slide Rels for each hyperlink found + * @param {PresSlide} target - slide object that any hyperlinks will be be added to + * @param {number | string | TextProps | TextProps[] | ITableCell[][]} text - text to parse + */ + function createHyperlinkRels(target, text, options) { + let textObjs = []; + // Only text objects can have hyperlinks, bail when text param is plain text + if (typeof text === 'string' || typeof text === 'number') + return; + // IMPORTANT: "else if" Array.isArray must come before typeof===object! Otherwise, code will exhaust recursion! + else if (Array.isArray(text)) + textObjs = text; + else if (typeof text === 'object') + textObjs = [text]; + textObjs.forEach((text, idx) => { + // IMPORTANT: `options` are lost due to recursion/copy! + if (options && options[idx] && options[idx].hyperlink) + text.options = Object.assign(Object.assign({}, text.options), options[idx]); + // NOTE: `text` can be an array of other `text` objects (table cell word-level formatting), continue parsing using recursion + if (Array.isArray(text)) { + const cellOpts = []; + text.forEach((tablecell) => { + if (tablecell.options && !tablecell.text.options) { + cellOpts.push(tablecell.options); + } + }); + createHyperlinkRels(target, text, cellOpts); + } + else if (Array.isArray(text.text)) { + createHyperlinkRels(target, text.text, options && options[idx] ? [options[idx]] : undefined); + } + else if (text && typeof text === 'object' && text.options && text.options.hyperlink && !text.options.hyperlink._rId) { + if (typeof text.options.hyperlink !== 'object') { + console.log('ERROR: text `hyperlink` option should be an object. Ex: `hyperlink: {url:\'https://github.com\'}` '); + } + else if (!text.options.hyperlink.url && !text.options.hyperlink.slide) { + console.log('ERROR: \'hyperlink requires either: `url` or `slide`\''); + } + else { + const relId = getNewRelId(target); + target._rels.push({ + type: SLIDE_OBJECT_TYPES.hyperlink, + data: text.options.hyperlink.slide ? 'slide' : 'dummy', + rId: relId, + Target: encodeXmlEntities(text.options.hyperlink.url) || text.options.hyperlink.slide.toString(), + }); + text.options.hyperlink._rId = relId; + } + } + else if (text && typeof text === 'object' && text.options && text.options.hyperlink && text.options.hyperlink._rId) { + // NOTE: auto-paging will create new slides, but skip above as _rId exists, BUT this is a new slide, so add rels! + if (target._rels.filter(rel => rel.rId === text.options.hyperlink._rId).length === 0) { + target._rels.push({ + type: SLIDE_OBJECT_TYPES.hyperlink, + data: text.options.hyperlink.slide ? 'slide' : 'dummy', + rId: text.options.hyperlink._rId, + Target: encodeXmlEntities(text.options.hyperlink.url) || text.options.hyperlink.slide.toString(), + }); + } + } + }); + } + // ================================================================================================= + // GROUPS + // ================================================================================================= + /** + * Adds a group object to the slide + * @param {PresSlide} target - slide to add group to + * @param {GroupProps} opts - group options including children + */ + function addGroupDefinition(target, opts) { + // Convert children to ISlideObject format + const groupChildren = []; + if (opts.children && Array.isArray(opts.children)) { + opts.children.forEach((child, idx) => { + var _a; + const childObject = { + _type: null, + options: child.options || {}, + }; + switch (child.type) { + case 'text': + childObject._type = SLIDE_OBJECT_TYPES.text; + childObject.shape = ((_a = child.options) === null || _a === void 0 ? void 0 : _a.shape) || SHAPE_TYPE.RECTANGLE; + childObject.text = typeof child.text === 'string' ? [{ text: child.text, options: null }] : (child.text || []); + break; + case 'shape': + childObject._type = SLIDE_OBJECT_TYPES.text; // shapes are text objects with shape property + childObject.shape = child.shapeName || SHAPE_TYPE.RECTANGLE; + // Support text inside shapes (e.g., TextBox inside groups) + childObject.text = child.text + ? (typeof child.text === 'string' ? [{ text: child.text, options: null }] : child.text) + : []; + break; + case 'image': + childObject._type = SLIDE_OBJECT_TYPES.image; + if (child.image) { + childObject.image = child.image.path || ''; + childObject.imageRid = 0; // Will be set during relationship processing + } + break; + } + if (!childObject.options.objectName) { + childObject.options.objectName = `GroupChild ${idx + 1}`; + } + groupChildren.push(childObject); + }); + } + // Create the group slide object + const newObject = { + _type: SLIDE_OBJECT_TYPES.group, + options: { + x: opts.x, + y: opts.y, + w: opts.w, + h: opts.h, + objectName: opts.objectName || `Group ${target._slideObjects.filter(obj => obj._type === SLIDE_OBJECT_TYPES.group).length + 1}`, + // Store child coordinate system info and transforms + _groupProps: { + chOffX: opts.chOffX, + chOffY: opts.chOffY, + chExtCx: opts.chExtCx, + chExtCy: opts.chExtCy, + rotate: opts.rotate, + flipH: opts.flipH, + flipV: opts.flipV, + }, + }, + groupChildren, + }; + // Add to slide objects + target._slideObjects.push(newObject); + } + + /** + * PptxGenJS: Slide Class + */ + class Slide { + constructor(params) { + var _a; + this.addSlide = params.addSlide; + this.getSlide = params.getSlide; + this._name = `Slide ${params.slideNumber}`; + this._presLayout = params.presLayout; + this._rId = params.slideRId; + this._rels = []; + this._relsChart = []; + this._relsMedia = []; + this._setSlideNum = params.setSlideNum; + this._slideId = params.slideId; + this._slideLayout = params.slideLayout || null; + this._slideNum = params.slideNumber; + this._slideObjects = []; + /** NOTE: Slide Numbers: In order for Slide Numbers to function they need to be in all 3 files: master/layout/slide + * `defineSlideMaster` and `addNewSlide.slideNumber` will add {slideNumber} to `this.masterSlide` and `this.slideLayouts` + * so, lastly, add to the Slide now. + */ + this._slideNumberProps = ((_a = this._slideLayout) === null || _a === void 0 ? void 0 : _a._slideNumberProps) ? this._slideLayout._slideNumberProps : null; + } + set bkgd(value) { + this._bkgd = value; + if (!this._background || !this._background.color) { + if (!this._background) + this._background = {}; + if (typeof value === 'string') + this._background.color = value; + } + } + get bkgd() { + return this._bkgd; + } + set background(props) { + this._background = props; + // Add background (image data/path must be captured before `exportPresentation()` is called) + if (props) + addBackgroundDefinition(props, this); + } + get background() { + return this._background; + } + set color(value) { + this._color = value; + } + get color() { + return this._color; + } + set hidden(value) { + this._hidden = value; + } + get hidden() { + return this._hidden; + } + /** + * @type {SlideNumberProps} + */ + set slideNumber(value) { + // NOTE: Slide Numbers: In order for Slide Numbers to function they need to be in all 3 files: master/layout/slide + this._slideNumberProps = value; + this._setSlideNum(value); + } + get slideNumber() { + return this._slideNumberProps; + } + get newAutoPagedSlides() { + return this._newAutoPagedSlides; + } + /** + * Add chart to Slide + * @param {CHART_NAME|IChartMulti[]} type - chart type + * @param {object[]} data - data object + * @param {IChartOpts} options - chart options + * @return {Slide} this Slide + */ + addChart(type, data, options) { + // FUTURE: TODO-VERSION-4: Remove first arg - only take data and opts, with "type" required on opts + // Set `_type` on IChartOptsLib as its what is used as object is passed around + const optionsWithType = options || {}; + optionsWithType._type = type; + addChartDefinition(this, type, data, options); + return this; + } + /** + * Add group to Slide + * @param {GroupProps} options - group options + * @return {Slide} this Slide + */ + addGroup(options) { + addGroupDefinition(this, options); + return this; + } + /** + * Add image to Slide + * @param {ImageProps} options - image options + * @return {Slide} this Slide + */ + addImage(options) { + addImageDefinition(this, options); + return this; + } + /** + * Add media (audio/video) to Slide + * @param {MediaProps} options - media options + * @return {Slide} this Slide + */ + addMedia(options) { + addMediaDefinition(this, options); + return this; + } + /** + * Add speaker notes to Slide + * @docs https://gitbrent.github.io/PptxGenJS/docs/speaker-notes.html + * @param {string} notes - notes to add to slide + * @return {Slide} this Slide + */ + addNotes(notes) { + addNotesDefinition(this, notes); + return this; + } + /** + * Add shape to Slide + * @param {SHAPE_NAME} shapeName - shape name + * @param {ShapeProps} options - shape options + * @return {Slide} this Slide + */ + addShape(shapeName, options) { + // NOTE: As of v3.1.0,