cosmicflows-deployer/assets/js/contour.bundle.js.map
2024-12-04 07:55:48 +01:00

1 line
No EOL
3.1 MiB
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{"version":3,"sources":["webpack:///./node_modules/vtk.js/Sources/macro.js","webpack:///./node_modules/vtk.js/Sources/Common/Core/Math/index.js","webpack:///./node_modules/jszip/lib/utils.js","webpack:///./node_modules/vtk.js/node_modules/gl-matrix/src/gl-matrix.js","webpack:///./node_modules/vtk.js/Sources/Common/Core/DataArray/index.js","webpack:///./node_modules/vtk.js/Sources/Rendering/SceneGraph/ViewNode/index.js","webpack:///(webpack)/buildin/amd-define.js","webpack:///./node_modules/jszip/lib/stream/GenericWorker.js","webpack:///./node_modules/vtk.js/Sources/Common/Core/DataArray/Constants.js","webpack:///./node_modules/vtk.js/Sources/Common/DataModel/PolyData/index.js","webpack:///./node_modules/vtk.js/node_modules/gl-matrix/src/gl-matrix/common.js","webpack:///./node_modules/vtk.js/Sources/Rendering/OpenGL/ShaderProgram/index.js","webpack:///./node_modules/pako/lib/utils/common.js","webpack:///./node_modules/jszip/lib/support.js","webpack:///./external_modules/helpers/helper.less","webpack:///./node_modules/readable-stream/lib/_stream_duplex.js","webpack:///./node_modules/vtk.js/Sources/vtk.js","webpack:///(webpack)/buildin/module.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///./node_modules/vtk.js/Sources/Rendering/Core/Property/Constants.js","webpack:///./node_modules/vtk.js/Sources/Rendering/OpenGL/Texture/index.js","webpack:///./node_modules/vtk.js/Sources/Rendering/Core/Mapper/index.js","webpack:///./node_modules/jszip/lib/utf8.js","webpack:///./node_modules/inherits/inherits_browser.js","webpack:///./external_modules/helpers/multimodal.js","webpack:///./external_modules/helpers/error.js","webpack:///./external_modules/helpers/params.js","webpack:///./node_modules/vtk.js/Sources/Rendering/OpenGL/BufferObject/Constants.js","webpack:///./node_modules/buffer/index.js","webpack:///./node_modules/core-util-is/lib/util.js","webpack:///./node_modules/jszip/lib/external.js","webpack:///./node_modules/vtk.js/Sources/Rendering/OpenGL/Texture/Constants.js","webpack:///./node_modules/vtk.js/Sources/Rendering/OpenGL/BufferObject/index.js","webpack:///./node_modules/vtk.js/Sources/Rendering/OpenGL/PolyDataMapper/index.js","webpack:///./node_modules/vtk.js/Sources/Rendering/OpenGL/Helper/index.js","webpack:///./node_modules/vtk.js/Sources/Rendering/OpenGL/glsl/vtkPolyDataFS.glsl","webpack:///./node_modules/pako/index.js","webpack:///./node_modules/process-nextick-args/index.js","webpack:///./node_modules/safe-buffer/index.js","webpack:///./node_modules/jszip/lib/nodejsUtils.js","webpack:///./node_modules/jszip/node_modules/core-js/library/modules/_global.js","webpack:///./external_modules/helpers/ajax.js","webpack:///./external_modules/helpers/wait.js","webpack:///./node_modules/timers-browserify/main.js","webpack:///./node_modules/vtk.js/Sources/Rendering/Core/Actor/index.js","webpack:///./node_modules/vtk.js/Sources/Common/DataModel/BoundingBox/index.js","webpack:///./node_modules/vtk.js/Sources/Rendering/Core/Property/index.js","webpack:///./node_modules/vtk.js/Sources/Rendering/OpenGL/Framebuffer/index.js","webpack:///./node_modules/vtk.js/Sources/Common/DataModel/DataSet/index.js","webpack:///./node_modules/vtk.js/Sources/Common/DataModel/ImageData/index.js","webpack:///./node_modules/vtk.js/Sources/Common/Core/ScalarsToColors/Constants.js","webpack:///./node_modules/vtk.js/Sources/Common/Core/Points/index.js","webpack:///./node_modules/pako/lib/zlib/messages.js","webpack:///./node_modules/vtk.js/Sources/Common/Core/Endian/index.js","webpack:///./node_modules/readable-stream/readable-browser.js","webpack:///./node_modules/readable-stream/lib/_stream_writable.js","webpack:///./node_modules/jszip/node_modules/core-js/library/modules/_is-object.js","webpack:///./node_modules/jszip/node_modules/core-js/library/modules/_descriptors.js","webpack:///./node_modules/jszip/lib/compressedObject.js","webpack:///./node_modules/jszip/lib/crc32.js","webpack:///./node_modules/vtk.js/Sources/Common/Core/MatrixBuilder/index.js","webpack:///./node_modules/vtk.js/node_modules/gl-matrix/src/gl-matrix/mat3.js","webpack:///./node_modules/vtk.js/node_modules/gl-matrix/src/gl-matrix/mat4.js","webpack:///./node_modules/vtk.js/node_modules/gl-matrix/src/gl-matrix/quat.js","webpack:///./node_modules/vtk.js/node_modules/gl-matrix/src/gl-matrix/vec3.js","webpack:///./node_modules/vtk.js/node_modules/gl-matrix/src/gl-matrix/vec4.js","webpack:///./node_modules/vtk.js/Sources/Rendering/OpenGL/RenderWindow/index.js","webpack:///./node_modules/webworker-promise/lib/tiny-emitter.js","webpack:///./node_modules/vtk.js/Sources/Rendering/SceneGraph/RenderPass/index.js","webpack:///./node_modules/vtk.js/Sources/Rendering/OpenGL/HardwareSelector/index.js","webpack:///./node_modules/vtk.js/Sources/Common/DataModel/DataSetAttributes/Constants.js","webpack:///./node_modules/vtk.js/Sources/Rendering/OpenGL/VertexArrayObject/index.js","webpack:///./node_modules/vtk.js/Sources/Common/DataModel/StructuredData/Constants.js","webpack:///./node_modules/vtk.js/Sources/Rendering/Core/Mapper/Constants.js","webpack:///./node_modules/vtk.js/Sources/Rendering/OpenGL/glsl/vtkPolyDataVS.glsl","webpack:///./node_modules/vtk.js/Sources/Rendering/Core/Renderer/index.js","webpack:///./node_modules/vtk.js/Sources/Rendering/Core/RenderWindowInteractor/index.js","webpack:///./node_modules/vtk.js/Sources/Rendering/Core/InteractorStyle/Constants.js","webpack:///./node_modules/vtk.js/Sources/Rendering/Core/RenderWindowInteractor/Constants.js","webpack:///./node_modules/pako/lib/zlib/adler32.js","webpack:///./node_modules/pako/lib/zlib/crc32.js","webpack:///./node_modules/pako/lib/utils/strings.js","webpack:///./node_modules/pako/lib/zlib/zstream.js","webpack:///./node_modules/pako/lib/zlib/constants.js","webpack:///./node_modules/isarray/index.js","webpack:///./node_modules/jszip/lib/readable-stream-browser.js","webpack:///./node_modules/readable-stream/lib/_stream_readable.js","webpack:///./node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack:///./node_modules/readable-stream/lib/internal/streams/destroy.js","webpack:///./node_modules/string_decoder/lib/string_decoder.js","webpack:///./node_modules/readable-stream/lib/_stream_transform.js","webpack:///./node_modules/jszip/lib/base64.js","webpack:///./node_modules/jszip/node_modules/core-js/library/modules/_core.js","webpack:///./node_modules/jszip/node_modules/core-js/library/modules/_ctx.js","webpack:///./node_modules/jszip/node_modules/core-js/library/modules/_fails.js","webpack:///./node_modules/jszip/node_modules/core-js/library/modules/_dom-create.js","webpack:///./node_modules/jszip/lib/stream/StreamHelper.js","webpack:///./node_modules/jszip/lib/defaults.js","webpack:///./node_modules/jszip/lib/stream/DataWorker.js","webpack:///./node_modules/jszip/lib/stream/DataLengthProbe.js","webpack:///./node_modules/jszip/lib/stream/Crc32Probe.js","webpack:///./node_modules/jszip/lib/compressions.js","webpack:///./node_modules/jszip/lib/signature.js","webpack:///./node_modules/jszip/lib/reader/readerFor.js","webpack:///./node_modules/jszip/lib/reader/ArrayReader.js","webpack:///./node_modules/jszip/lib/reader/DataReader.js","webpack:///./node_modules/jszip/lib/reader/Uint8ArrayReader.js","webpack:///./node_modules/vtk.js/Sources/Filters/Sources/CubeSource/index.js","webpack:///./node_modules/vtk.js/Sources/Filters/Sources/ConeSource/index.js","webpack:///./app/contour_plot.js","webpack:///./node_modules/setimmediate/setImmediate.js","webpack:///./node_modules/seedrandom/index.js","webpack:///./node_modules/seedrandom/lib/alea.js","webpack:///./node_modules/seedrandom/lib/xor128.js","webpack:///./node_modules/seedrandom/lib/xorwow.js","webpack:///./node_modules/seedrandom/lib/xorshift7.js","webpack:///./node_modules/seedrandom/lib/xor4096.js","webpack:///./node_modules/seedrandom/lib/tychei.js","webpack:///./node_modules/seedrandom/seedrandom.js","webpack:///crypto (ignored)","webpack:///./node_modules/vtk.js/node_modules/gl-matrix/src/gl-matrix/mat2.js","webpack:///./node_modules/vtk.js/node_modules/gl-matrix/src/gl-matrix/mat2d.js","webpack:///./node_modules/vtk.js/node_modules/gl-matrix/src/gl-matrix/quat2.js","webpack:///./node_modules/vtk.js/node_modules/gl-matrix/src/gl-matrix/vec2.js","webpack:///./node_modules/vtk.js/Sources/Rendering/Core/Prop3D/index.js","webpack:///./node_modules/vtk.js/Sources/Common/DataModel/Plane/index.js","webpack:///./node_modules/vtk.js/Sources/Rendering/Core/Prop/index.js","webpack:///./node_modules/vtk.js/Sources/Rendering/Misc/FullScreenRenderWindow/index.js","webpack:///./node_modules/vtk.js/Sources/Rendering/OpenGL/ForwardPass/index.js","webpack:///./node_modules/webworker-promise/lib/index.js","webpack:///./node_modules/vtk.js/Sources/Rendering/OpenGL/Texture/ComputeGradients.worker.js","webpack:///./node_modules/webworker-promise/lib/register.js","webpack:///./node_modules/vtk.js/Sources/Rendering/OpenGL/ViewNodeFactory/index.js","webpack:///./node_modules/vtk.js/Sources/Rendering/SceneGraph/GenericWidgetRepresentation/index.js","webpack:///./node_modules/vtk.js/Sources/Rendering/SceneGraph/ViewNodeFactory/index.js","webpack:///./node_modules/vtk.js/Sources/Rendering/OpenGL/Actor/index.js","webpack:///./node_modules/vtk.js/Sources/Rendering/OpenGL/Actor2D/index.js","webpack:///./node_modules/vtk.js/Sources/Rendering/OpenGL/Camera/index.js","webpack:///./node_modules/vtk.js/Sources/Rendering/OpenGL/Glyph3DMapper/index.js","webpack:///./node_modules/vtk.js/Sources/Rendering/OpenGL/HardwareSelector/Constants.js","webpack:///./node_modules/vtk.js/Sources/Common/DataModel/SelectionNode/index.js","webpack:///./node_modules/vtk.js/Sources/Common/DataModel/SelectionNode/Constants.js","webpack:///./node_modules/vtk.js/Sources/Common/DataModel/DataSetAttributes/index.js","webpack:///./node_modules/vtk.js/Sources/Common/DataModel/DataSetAttributes/FieldData.js","webpack:///./node_modules/vtk.js/Sources/Common/DataModel/DataSet/Constants.js","webpack:///./node_modules/vtk.js/Sources/Rendering/OpenGL/CellArrayBufferObject/index.js","webpack:///./node_modules/vtk.js/Sources/Rendering/OpenGL/Shader/index.js","webpack:///./node_modules/vtk.js/Sources/Rendering/Core/AbstractMapper3D/index.js","webpack:///./node_modules/vtk.js/Sources/Rendering/Core/AbstractMapper/index.js","webpack:///./node_modules/vtk.js/Sources/Common/DataModel/StructuredData/index.js","webpack:///./node_modules/vtk.js/Sources/Common/Core/LookupTable/index.js","webpack:///./node_modules/vtk.js/Sources/Common/Core/ScalarsToColors/index.js","webpack:///./node_modules/vtk.js/Sources/Rendering/Core/Mapper/CoincidentTopologyHelper.js","webpack:///./node_modules/vtk.js/Sources/Rendering/Core/Mapper/Static.js","webpack:///./node_modules/vtk.js/Sources/Rendering/OpenGL/ImageMapper/index.js","webpack:///./node_modules/vtk.js/Sources/Rendering/Core/ImageMapper/Constants.js","webpack:///./node_modules/vtk.js/Sources/Rendering/Core/ImageProperty/Constants.js","webpack:///./node_modules/vtk.js/Sources/Rendering/OpenGL/ImageSlice/index.js","webpack:///./node_modules/vtk.js/Sources/Rendering/OpenGL/PixelSpaceCallbackMapper/index.js","webpack:///./node_modules/vtk.js/Sources/Rendering/OpenGL/Renderer/index.js","webpack:///./node_modules/vtk.js/Sources/Rendering/OpenGL/Skybox/index.js","webpack:///./node_modules/vtk.js/Sources/Rendering/OpenGL/SphereMapper/index.js","webpack:///./node_modules/vtk.js/Sources/Rendering/OpenGL/glsl/vtkSphereMapperVS.glsl","webpack:///./node_modules/vtk.js/Sources/Rendering/OpenGL/StickMapper/index.js","webpack:///./node_modules/vtk.js/Sources/Rendering/OpenGL/glsl/vtkStickMapperVS.glsl","webpack:///./node_modules/vtk.js/Sources/Rendering/OpenGL/Volume/index.js","webpack:///./node_modules/vtk.js/Sources/Rendering/OpenGL/VolumeMapper/index.js","webpack:///./node_modules/vtk.js/Sources/Rendering/Core/VolumeProperty/Constants.js","webpack:///./node_modules/vtk.js/Sources/Rendering/OpenGL/glsl/vtkVolumeVS.glsl","webpack:///./node_modules/vtk.js/Sources/Rendering/OpenGL/glsl/vtkVolumeFS.glsl","webpack:///./node_modules/vtk.js/Sources/Rendering/OpenGL/glsl/vtkVolumeFS2.glsl","webpack:///./node_modules/vtk.js/Sources/Rendering/OpenGL/ShaderCache/index.js","webpack:///./node_modules/blueimp-md5/js/md5.js","webpack:///./node_modules/vtk.js/Sources/Rendering/OpenGL/TextureUnitManager/index.js","webpack:///./node_modules/webvr-polyfill/build/webvr-polyfill.js","webpack:///./node_modules/vtk.js/Sources/Rendering/Core/Camera/index.js","webpack:///./node_modules/vtk.js/Sources/Rendering/Core/Light/index.js","webpack:///./node_modules/vtk.js/Sources/Rendering/Core/Viewport/index.js","webpack:///./node_modules/vtk.js/Sources/Rendering/Core/RenderWindow/index.js","webpack:///./node_modules/vtk.js/Sources/Interaction/Style/InteractorStyleTrackballCamera/index.js","webpack:///./node_modules/vtk.js/Sources/Rendering/Core/InteractorStyle/index.js","webpack:///./node_modules/vtk.js/Sources/Rendering/Core/InteractorObserver/index.js","webpack:///./node_modules/vtk.js/Sources/Common/Core/CellArray/index.js","webpack:///./node_modules/vtk.js/Sources/Common/DataModel/PointSet/index.js","webpack:///./node_modules/vtk.js/Sources/IO/Core/HttpDataSetReader/index.js","webpack:///./node_modules/vtk.js/Sources/IO/Core/DataAccessHelper/index.js","webpack:///./node_modules/vtk.js/Sources/IO/Core/DataAccessHelper/HtmlDataAccessHelper.js","webpack:///./node_modules/vtk.js/node_modules/base64-js/index.js","webpack:///./node_modules/pako/lib/deflate.js","webpack:///./node_modules/pako/lib/zlib/deflate.js","webpack:///./node_modules/pako/lib/zlib/trees.js","webpack:///./node_modules/pako/lib/inflate.js","webpack:///./node_modules/pako/lib/zlib/inflate.js","webpack:///./node_modules/pako/lib/zlib/inffast.js","webpack:///./node_modules/pako/lib/zlib/inftrees.js","webpack:///./node_modules/pako/lib/zlib/gzheader.js","webpack:///./node_modules/vtk.js/Sources/IO/Core/DataAccessHelper/HttpDataAccessHelper.js","webpack:///./node_modules/vtk.js/Sources/IO/Core/DataAccessHelper/JSZipDataAccessHelper.js","webpack:///./node_modules/jszip/lib/index.js","webpack:///./node_modules/jszip/lib/object.js","webpack:///./node_modules/buffer/node_modules/base64-js/index.js","webpack:///./node_modules/ieee754/index.js","webpack:///./node_modules/stream-browserify/index.js","webpack:///util (ignored)","webpack:///./node_modules/readable-stream/lib/internal/streams/BufferList.js","webpack:///./node_modules/util-deprecate/browser.js","webpack:///./node_modules/readable-stream/lib/_stream_passthrough.js","webpack:///./node_modules/readable-stream/writable-browser.js","webpack:///./node_modules/readable-stream/duplex-browser.js","webpack:///./node_modules/readable-stream/transform.js","webpack:///./node_modules/readable-stream/passthrough.js","webpack:///./node_modules/jszip/node_modules/core-js/library/fn/set-immediate.js","webpack:///./node_modules/jszip/node_modules/core-js/library/modules/web.immediate.js","webpack:///./node_modules/jszip/node_modules/core-js/library/modules/_export.js","webpack:///./node_modules/jszip/node_modules/core-js/library/modules/_a-function.js","webpack:///./node_modules/jszip/node_modules/core-js/library/modules/_hide.js","webpack:///./node_modules/jszip/node_modules/core-js/library/modules/_object-dp.js","webpack:///./node_modules/jszip/node_modules/core-js/library/modules/_an-object.js","webpack:///./node_modules/jszip/node_modules/core-js/library/modules/_ie8-dom-define.js","webpack:///./node_modules/jszip/node_modules/core-js/library/modules/_to-primitive.js","webpack:///./node_modules/jszip/node_modules/core-js/library/modules/_property-desc.js","webpack:///./node_modules/jszip/node_modules/core-js/library/modules/_task.js","webpack:///./node_modules/jszip/node_modules/core-js/library/modules/_invoke.js","webpack:///./node_modules/jszip/node_modules/core-js/library/modules/_html.js","webpack:///./node_modules/jszip/node_modules/core-js/library/modules/_cof.js","webpack:///./node_modules/lie/lib/browser.js","webpack:///./node_modules/immediate/lib/browser.js","webpack:///./node_modules/jszip/lib/stream/ConvertWorker.js","webpack:///./node_modules/jszip/lib/nodejs/NodejsStreamOutputAdapter.js","webpack:///./node_modules/jszip/lib/zipObject.js","webpack:///./node_modules/jszip/lib/generate/index.js","webpack:///./node_modules/jszip/lib/flate.js","webpack:///./node_modules/jszip/lib/generate/ZipFileWorker.js","webpack:///./node_modules/jszip/lib/nodejs/NodejsStreamInputAdapter.js","webpack:///./node_modules/jszip/lib/load.js","webpack:///./node_modules/jszip/lib/zipEntries.js","webpack:///./node_modules/jszip/lib/reader/StringReader.js","webpack:///./node_modules/jszip/lib/reader/NodeBufferReader.js","webpack:///./node_modules/jszip/lib/zipEntry.js","webpack:///./node_modules/vtk.js/Sources/Common/Core/StringArray/index.js","webpack:///./node_modules/vtk.js/Sources/Filters/General/ImageMarchingCubes/index.js","webpack:///./node_modules/vtk.js/Sources/Filters/General/ImageMarchingCubes/caseTable.js","webpack:///./node_modules/vtk.js/Sources/Rendering/Core/Glyph3DMapper/index.js","webpack:///./node_modules/vtk.js/Sources/Rendering/Core/Glyph3DMapper/Constants.js","webpack:///./node_modules/vtk.js/Sources/Filters/Sources/ArrowSource/index.js","webpack:///./node_modules/vtk.js/Sources/Filters/General/AppendPolyData/index.js","webpack:///./node_modules/vtk.js/Sources/Filters/Sources/CylinderSource/index.js","webpack:///./node_modules/vtk.js/Sources/Rendering/Core/PixelSpaceCallbackMapper/index.js","webpack:///./node_modules/vtk.js/Sources/Interaction/Widgets/OrientationMarkerWidget/index.js","webpack:///./node_modules/vtk.js/Sources/Interaction/Widgets/OrientationMarkerWidget/Constants.js","webpack:///./node_modules/vtk.js/Sources/Rendering/Core/AnnotatedCubeActor/index.js","webpack:///./node_modules/vtk.js/Sources/Rendering/Core/Texture/index.js","webpack:///./node_modules/vtk.js/Sources/Common/Core/ImageHelper/index.js","webpack:///./external_modules/helpers/lss.js","webpack:///./external_modules/vtk_plus/RandomSources/index.js","webpack:///./external_modules/vtk_plus/InterpolationFilter/index.js","webpack:///./node_modules/vtk.js/Sources/Filters/General/ImageStreamline/index.js","webpack:///./app/style.mcss","webpack:///./app/style.mcss?3a9e","webpack:///./node_modules/bootstrap-colorpicker/dist/js/bootstrap-colorpicker.js","webpack:///./node_modules/bootstrap-colorpicker/src/sass/_colorpicker.scss"],"names":["setLoggerFunction","vtkLogMacro","vtkInfoMacro","vtkDebugMacro","vtkErrorMacro","vtkWarningMacro","vtkOnceErrorMacro","capitalize","uncapitalize","formatBytesToProperUnit","formatNumbersWithThousandSeparator","obj","get","set","setGet","getArray","setArray","setGetArray","algo","event","newInstance","chain","isVtkObject","traverseInstanceTree","debounce","throttle","keystore","proxy","proxyPropertyMapping","proxyPropertyState","normalizeWheel","globalMTime","VOID","Symbol","getCurrentGlobalMTime","fakeConsole","noOp","consoleMethods","forEach","methodName","global","console","hasOwnProperty","loggerFunctions","debug","error","info","log","warn","name","fn","ERROR_ONCE_MAP","str","TYPED_ARRAYS","Float32Array","Float64Array","Uint8Array","Int8Array","Uint16Array","Int16Array","Uint32Array","Int32Array","charAt","toUpperCase","slice","toLowerCase","size","precision","chunkSize","units","value","Number","currentUnit","pop","toFixed","n","separator","sections","push","Math","floor","reverse","join","safeArrays","model","Object","keys","key","Array","isArray","concat","enumToString","e","find","getStateArrayMapFunc","item","isA","getState","publicAPI","callbacks","isInteger","mtime","classHierarchy","off","index","on","unsubscribe","freeze","isDeleted","deleted","modified","otherMTime","getMTime","callback","onModified","length","className","count","getClassName","depth","map","noWarning","noFunction","ret","indexOf","list","subset","getReferenceByName","val","delete","field","el","jsonArchive","assign","vtkClass","keyName","undefined","sortedObj","sort","shallowCopy","other","Error","otherModel","keyList","otherKeyList","keyIdx","splice","fieldNames","objectSetterMap","enum","RangeError","TypeError","findSetter","type","getSetter","setter","fields","defaultVal","args","array","changeDetected","otherArray","target","v","i","numberOfInputs","numberOfOutputs","inputData","inputConnection","output","inputArrayToProcess","setInputData","dataset","port","msg","getInputData","setInputConnection","outputPort","getInputConnection","addInputConnection","addInputData","getOutputData","shouldUpdate","update","localMTime","minOutputMTime","Infinity","mt","filter","getOutputPort","outputPortAccess","ins","requestData","getNumberOfInputPorts","getNumberOfOutputPorts","getInputArrayToProcess","inputPort","arrayDesc","ds","fieldAssociation","arrayName","setInputArrayToProcess","attributeType","EVENT_ABORT","eventName","previousDelete","curCallbackID","callbackID","cbID","invoke","currentCallbacks","cb","priority","setTimeout","apply","continueNext","cb1","cb2","extend","constructor","initialValues","register","instance","extractFunction","accumulator","visitedInstances","result","modelObj","subObj","func","wait","immediate","timeout","context","later","callNow","clearTimeout","delay","isThrottled","argsToUse","next","wrapper","initialKeystore","setKey","getKey","getAllKeys","deleteKey","clearKeystore","nextProxyId","ROOT_GROUP_NAME","parentDelete","proxyId","ui","JSON","parse","stringify","propertyMap","groupChildrenNames","registerProperties","descriptionList","currentGroupName","childrenNames","children","updateUI","k","listProxyProperties","gName","updateProxyProperty","propertyName","propUI","prop","activate","proxyManager","setActiveMethod","getProxyGroup","propertyLinkSubscribers","registerPropertyLinkForGC","otherLink","gcPropertyLinks","subscribers","unbind","propertyLinkMap","getPropertyLink","id","persistent","links","updateInProgress","source","force","needUpdate","sourceLink","link","newValue","linkToUpdate","indexToDelete","subscription","bind","updateMe","linkHandler","getProperties","groupName","values","propertyNames","method","listPropertyNames","p","getPropertyByName","getPropertyDomainByName","domain","getProxySection","proxyGroup","properties","registerLinks","property","updateOnBind","sLink","setImmediate","subscriptions","modelKey","methodSrc","methodDst","state","defaults","this","applyState","modelKeys","mapping","propValues","PIXEL_STEP","LINE_HEIGHT","PAGE_HEIGHT","wheelEvent","sX","sY","pX","pY","detail","wheelDelta","wheelDeltaY","wheelDeltaX","axis","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","randomSeedValue","VTK_MAX_ROTATIONS","VTK_SMALL_NUMBER","notImplemented","vtkSwapVectors3","v1","v2","tmp","createArray","Pi","PI","radiansFromDegrees","deg","degreesFromRadians","rad","round","ceil","min","max","arrayMin","arr","minValue","len","arrayMax","maxValue","ceilLog2","factorial","nearestPowerOfTwo","xi","isPowerOfTwo","x","binomial","m","r","beginCombination","nextCombination","status","j","randomSeed","seed","getSeed","random","delta","gaussian","add","a","b","out","subtract","multiplyScalar","vec","scalar","multiplyScalar2D","dot","y","outer","out_3x3","cross","Zx","Zy","Zz","norm","abs","sqrt","sum","normalize","den","perpendiculars","z","theta","x2","y2","z2","dx","dy","dz","c","sintheta","sin","costheta","cos","projectVector","projection","bSquared","scale","dot2D","projectVector2D","distance2BetweenPoints","angleBetweenVectors","crossVect","atan2","gaussianAmplitude","mean","variance","position","distanceFromMean","exp","gaussianWeight","outer2D","out_2x2","norm2D","x2D","normalize2D","determinant2x2","NaN","LUFactor3x3","mat_3x3","index_3","maxI","largest","LUSolve3x3","x_3","linearSolve3x3","y_3","a1","b1","c1","a2","b2","c2","a3","b3","c3","d1","d2","d3","e1","e2","e3","f1","f2","f3","det","v3","multiply3x3_vect3","in_3","out_3","multiply3x3_mat3","a_3x3","b_3x3","multiplyMatrix","rowA","colA","rowB","colB","out_rowXcol","transpose3x3","in_3x3","outT_3x3","invert3x3","outI_3x3","identity3x3","determinant3x3","quaternionToMatrix3x3","quat_4","ww","wx","wy","wz","xx","yy","zz","xy","xz","yz","rr","f","s","areMatricesEqual","matA","matB","isEqual","element","every","jacobiN","w","iq","ip","numPos","tresh","t","tau","sm","h","g","vtkROTATE","aa","ii","jj","kk","ll","ceil_half_n","matrix3x3ToQuaternion","eigenvectors","eigenvalues","NTemp","eigenvectorsTemp","multiplyQuaternion","quat_1","quat_2","quat_out","xw","yw","yx","zw","zx","zy","orthogonalize3x3","x1","x3","y3","flip","quat","diagonalize3x3","w_3","v_3x3","maxVal","C","ATemp","VTemp","singularValueDecomposition3x3","u_3x3","vT_3x3","B","d","luFactorLinearSystem","A","temp1","temp2","luSolveLinearSystem","idx","solveLinearSystem","invertMatrix","AI","column","tmp1Size","tmp2Size","estimateMatrixCondition","MAX_VALUE","jacobi","solveHomogeneousLeastSquares","numberOfSamples","xt","xOrder","XXt","eigenvals","eigenvecs","solveLeastSquares","yt","yOrder","checkHomogeneous","homogenFlags","allHomogeneous","hmt","homogRC","someHomogeneous","XXtI","XYt","successFlag","hex2float","hexStr","outFloatArray","parseInt","substr","rgb2hsv","rgb","hsv","onethird","onesixth","twothird","cmax","cmin","hsv2rgb","fivesixth","lab2xyz","lab","xyz","L","var_Y","var_X","var_Z","ref_X","ref_Y","ref_Z","xyz2lab","xyz2rgb","rgb2xyz","rgb2lab","lab2rgb","uninitializeBounds","bounds","areBoundsInitialized","clampValue","clampAndNormalizeValue","range","getScalarTypeFittingRange","getAdjustedScalarRange","extentIsWithinOtherExtent","extent1","extent2","boundsIsWithinOtherBounds","bounds1_6","bounds2_6","delta_3","pointIsWithinBounds","point_3","bounds_6","solve3PointCircle","p1","p2","p3","center","v21","v32","v13","v12","v23","v31","norm12","norm23","norm13","crossv21v32","normCross","radius","normCross22","alpha","beta","gamma","inf","negInf","isInf","isFinite","isNaN","createUninitializedBounds","getMajorAxisIndex","vector","axisIndex","isNan","glMatrix","mat2","mat2d","mat3","mat4","quat2","vec2","vec3","vec4","DefaultDataType","TUPLE_HOLDER","createRangeHelper","getRange","computeRange","component","numberOfComponents","helper","offset","ensureRangeSize","rangeArray","ranges","getDataType","typedArray","prototype","toString","call","split","getMaxNorm","normArray","numComps","getNumberOfComponents","maxNorm","getNumberOfTuples","getTuple","STATIC","vtkDataArray","dataChange","getElementComponentSize","BYTES_PER_ELEMENT","getComponent","tupleIdx","compIdx","setComponent","getData","componentIndex","rangeIdx","rangeTuple","setTuple","tuple","tupleToFill","getTupleLocation","getNumberOfValues","dataType","newClone","empty","getName","setData","from","buffer","DEFAULT_VALUES","window","PASS_TYPES","vtkViewNode","build","prepass","render","traverse","renderPass","passTraversal","getTraverseOperation","customRenderPass","getOperation","getViewNodeFor","dataObject","renderable","child","vn","getFirstAncestorOfType","parent","addMissingNode","dobj","renderableChildMap","setVisited","newNode","createViewNode","setParent","addMissingNodes","dataObjs","prepareNodes","visited","removeUnusedNodes","getVisited","getRenderable","includes","dataObj","myFactory","createNode","setRenderable","Map","DataTypeByteSize","Uint8ClampedArray","VtkDataTypes","CHAR","SIGNED_CHAR","UNSIGNED_CHAR","SHORT","UNSIGNED_SHORT","INT","UNSIGNED_INT","FLOAT","DOUBLE","POLYDATA_FIELDS","vtkPolyData","camelize","replace","letter","getNumberOfCells","reduce","num","cellType","setMatrixArrayType","toRadian","equals","EPSILON","ARRAY_TYPE","RANDOM","degree","substitute","search","all","replaceStr","replaced","gflag","regex","RegExp","resultstr","vtkShaderProgram","compileShader","vertexShader","compile","getSource","line","getError","fragmentShader","attachShader","setCompiled","cleanup","shaderType","handle","deleteShader","linked","useProgram","setBound","isBound","bound","release","setContext","ctx","geometryShader","inked","uniformLocs","linkProgram","isCompiled","getProgramParameter","LINK_STATUS","lastError","getProgramInfoLog","setLinked","attributeLocs","setUniformMatrix","location","findUniform","uniformMatrix4fv","setUniformMatrix3x3","uniformMatrix3fv","setUniformf","uniform1f","setUniformfv","uniform1fv","setUniformi","uniform1i","setUniformiv","uniform1iv","setUniform2f","uniform2f","setUniform2fv","uniform2fv","setUniform2i","uniform2i","setUniform2iv","uniform2iv","setUniform3f","uniform3f","setUniform3fArray","setUniform3fv","uniform3fv","setUniform3i","uniform3i","setUniform3iv","uniform3iv","setUniform4f","uniform4f","setUniform4fv","uniform4fv","setUniform4i","uniform4i","setUniform4iv","uniform4iv","loc","getUniformLocation","isUniformUsed","isAttributeUsed","getAttribLocation","shader","getHandle","getShaderType","thandle","createProgram","vertexShaderHandle","comntext","detachShader","fragmentShaderHandle","errror","setLastCameraMTime","lastCameraMTime","geometryShaderHandle","compiled","attributesLocs","md5Hash","setShaderType","vtk","factoryMapping","vtkObject","newInst","vtkClassName","Shading","FLAT","GOURAUD","PHONG","Representation","POINTS","WIREFRAME","SURFACE","Interpolation","Wrap","Filter","vtkOpenGLTexture","renWin","openGLRenderWindow","openGLRenderer","getParent","getContext","getInterpolate","generateMipmap","setMinificationFilter","LINEAR_MIPMAP_LINEAR","LINEAR","setMagnificationFilter","NEAREST","getRepeat","setWrapR","REPEAT","setWrapS","setWrapT","setImage","textureBuildTime","getImage","getImageLoaded","create2DFromImage","sendParameters","input","getPointData","getScalars","ext","getExtent","inScalars","data","indata","scalars","createCubeFromRaw","create2DFromRaw","destroyTexture","deactivate","deleteTexture","numberOfDimensions","components","width","height","resetFormatAndType","createTexture","bindTexture","texParameteri","TEXTURE_MIN_FILTER","getOpenGLFilterMode","minificationFilter","TEXTURE_MAG_FILTER","magnificationFilter","TEXTURE_WRAP_S","getOpenGLWrapMode","wrapS","TEXTURE_WRAP_T","wrapT","getTextureUnit","getTextureUnitForTexture","activateTexture","deactivateTexture","releaseGraphicsResources","rwin","internalFormat","format","openGLDataType","shaderProgram","autoParameters","sendParametersTime","TEXTURE_2D","TEXTURE_BINDING_2D","oid","getIntegerv","getWebgl2","TEXTURE_WRAP_R","wrapR","TEXTURE_BASE_LEVEL","baseLevel","TEXTURE_MAX_LEVEL","maxLevel","getInternalFormat","vtktype","getDefaultInternalFormat","getDefaultTextureInternalFormat","setInternalFormat","iFormat","InternalFormat","getFormat","getDefaultFormat","RED","RG","RGB","RGBA","LUMINANCE","LUMINANCE_ALPHA","getDefaultDataType","vtkScalarType","UNSIGNED_BYTE","getExtension","getOpenGLDataType","getShiftAndScale","shift","BYTE","emode","NEAREST_MIPMAP_NEAREST","NEAREST_MIPMAP_LINEAR","LINEAR_MIPMAP_NEAREST","CLAMP_TO_EDGE","MIRRORED_REPEAT","updateArrayDataType","pixData","pixCount","newArray","scaleTextureToHighestPowerOfTwo","newWidth","newHeight","jFactor","iFactor","joff","jidx","jlow","jhi","jmix","jmix1","ioff","iidx","ilow","ihi","imix","dataArray","scaledData","pixelStorei","UNPACK_ALIGNMENT","texImage2D","TEXTURE_CUBE_MAP","invertedData","widthLevel","heightLevel","row1","row2","TEXTURE_CUBE_MAP_POSITIVE_X","createDepthFromRaw","DEPTH_COMPONENT","image","needNearestPowerOfTwo","canvas","document","createElement","translate","drawImage","safeImage","create3DFromRaw","TEXTURE_3D","texImage3D","create3DOneComponentFromRaw","numPixelsIn","volumeInfo","volCopyData","outArray","outIdx","inValue","smin","smax","dataTypeToUse","numCompsToUse","encodedScalars","fval","maxTexDim","getParameter","MAX_TEXTURE_SIZE","xstride","ystride","targetWidth","xreps","yreps","targetHeight","yRep","xrepsThisRow","outXContIncr","inY","xRep","inOffset","inX","create3DLighting","scalarTexture","spacing","computedGradients","vinfo","getVolumeInfo","haveWebgl2","reformatGradientsFunction","workerResults","numVoxelsIn","reformattedGradients","maxMag","subGradients","subMagnitudes","subMinMag","subMaxMag","subDepthStart","subDepthEnd","inIdx","inMagIdx","numWorkerVoxels","vp","getWidth","getHeight","zpin","zyout","zxout","ypout","ypin","xpin","maxNumberOfWorkers","depthStride","workerPromises","workers","depthIndex","worker","workerPromise","depthStart","depthEnd","subData","postMessage","Promise","then","terminate","minMag","gradientsBuildTime","setOpenGLRenderWindow","rw","getMaximumTextureSize","isCurrent","minLOD","maxLOD","ColorMode","ScalarMode","GetArray","VectorMode","staticOffsetModel","Polygon","factor","Line","Point","staticOffsetAPI","addCoincidentTopologyMethods","CATEGORIES","vtkMapper","getBounds","static","setForceCompileOnly","forceCompileOnly","createDefaultLookupTable","lookupTable","getColorModeAsString","colorMode","setColorModeToDefault","setColorMode","setColorModeToMapScalars","setColorModeToDirectScalars","getScalarModeAsString","scalarMode","setScalarModeToDefault","setScalarMode","setScalarModeToUsePointData","setScalarModeToUseCellData","setScalarModeToUsePointFieldData","setScalarModeToUseCellFieldData","setScalarModeToUseFieldData","topologyOffset","getCoincidentTopologyPolygonOffsetParameters","globalValue","getResolveCoincidentTopologyPolygonOffsetParameters","localValue","getRelativeCoincidentTopologyPolygonOffsetParameters","getCoincidentTopologyLineOffsetParameters","getResolveCoincidentTopologyLineOffsetParameters","getRelativeCoincidentTopologyLineOffsetParameters","getCoincidentTopologyPointOffsetParameter","getResolveCoincidentTopologyPointOffsetParameters","getRelativeCoincidentTopologyPointOffsetParameters","getAbstractScalars","arrayAccessMode","arrayId","scalarVisibility","DEFAULT","getCellData","USE_POINT_DATA","USE_CELL_DATA","USE_POINT_FIELD_DATA","pd","BY_ID","getArrayByIndex","getArrayByName","USE_CELL_FIELD_DATA","cd","USE_FIELD_DATA","fd","getFieldData","mapScalars","colorByArrayName","colorCoordinates","colorTextureMap","colorMapColors","useLookupTableScalarRange","getLookupTable","setRange","scalarRange","canUseTextureMapForColoring","mapScalarsToTexture","lut","scalarToTextureCoordinate","scalarValue","rangeMin","invRangeWidth","texCoordS","texCoordT","createColorTextureCoordinates","numScalars","tableRange","tableNumberOfColors","useLogScale","scalarTexelWidth","paddedRange","outputV","inputV","outputCount","scalarIdx","magnitude","applyLogScale","outputs","inputValue","usingLogScale","getLogRange","origAlpha","getAlpha","setAlpha","numberOfColors","getNumberOfAvailableColors","setExtent","setScalars","scalarComponent","getVectorComponent","getVectorMode","MAGNITUDE","getIsOpaque","isOpaque","interpolateScalarsBeforeMapping","getIndexedLookup","clearColorArrays","time","getPrimitiveCount","pcount","points","getPoints","verts","getVerts","lines","getLines","triangles","getPolys","acquireInvertibleLookupTable","valueToColor","colorToValue","useInvertibleColorFor","clearInvertibleColor","renderTime","fieldDataTupleId","useInvertibleColors","invertibleScalars","resolveCoincidentTopology","viewSpecificProperties","ensure","end","dlg","do_show","hide_func","body","removeClass","hasClass","addClass","css","not","modal","show","hide","multi","code","errorDialog","text","$","self","queryString","paramsArray","params","param","decodeURIComponent","addNewState","history","pushState","ObjectType","ARRAY_BUFFER","ELEMENT_ARRAY_BUFFER","TEXTURE_BUFFER","vtkOpenGLBufferObject","convertType","internalType","internalHandle","dirty","getType","setType","isReady","generateBuffer","objectTypeGL","createBuffer","upload","alreadyGenerated","bindBuffer","bufferData","STATIC_DRAW","deleteBuffer","objectType","primTypes","Start","Points","Lines","Tris","TriStrips","TrisEdges","TriStripsEdges","End","PassTypes","StartEvent","EndEvent","vtkOpenGLPolyDataMapper","buildPass","openGLActor","openGLCamera","getActiveCamera","translucentPass","opaqueZBufferPass","haveSeenDepthRequest","renderDepth","opaquePass","primitives","actor","ren","renderPiece","buildShaders","shaders","getShaderTemplate","openGLSpec","getViewSpecificProperties","OpenGL","shaderReplacements","ShaderReplacements","currReplacement","replaceFirst","ssrc","substituteRes","originalValue","replacementValue","replaceAll","replaceShaderValues","openGLSpecProp","vertexShaderCode","vertexSpecProp","VertexShaderCode","Vertex","fragmentShaderCode","fragmentSpecProp","FragmentShaderCode","Fragment","geometryShaderCode","geometrySpecProp","GeometryShaderCode","Geometry","replaceShaderColor","VSSource","GSSource","FSSource","lastLightComplexity","lastBoundBO","colorDec","colorImpl","getCABO","getColorComponents","drawingEdges","getInterpolateScalarsBeforeMapping","getColorCoordinates","replaceShaderLight","shadowFactor","lastLightCount","sstring","lc","replaceShaderNormal","getNormalOffset","haveCellNormals","getOpenGLMode","getProperty","getRepresentation","getPrimitiveType","LINES","replaceShaderPositionVC","getPointSize","replaceShaderTCoord","getTCoordOffset","tus","getActiveTextures","tNumComp","tcdim","getComponents","getTarget","getColorTextureMap","replaceShaderClip","getNumberOfClippingPlanes","numClipPlanes","getCoincidentParameters","cp","getResolveCoincidentTopology","getEdgeVisibility","primType","replaceShaderCoincidentOffset","replaceShaderPicking","getSelector","getCurrentPass","ID_LOW24","getNeedToRebuildShaders","cellBO","lightComplexity","numberOfLights","needLighting","poly","currentInput","getInterpolation","getNormals","haveNormals","getLighting","lights","getLightsByReference","light","getSwitch","getIntensity","lightTypeIsHeadLight","getPositional","needRebuild","selector","selectionPass","lastSelectionPass","lastHaveSeenDepthRequest","getProgram","getShaderSourceTime","updateShaders","newShader","getShaderCache","readyShaderProgramArray","setProgram","getVAO","readyShaderProgram","setMapperShaderParameters","setPropertyShaderParameters","setCameraShaderParameters","setLightingShaderParameters","listCallbacks","ShadersCallbacks","object","userData","primitiveIDOffset","getElementCount","VBOBuildTime","getAttributeUpdateTime","addAttributeArray","getVertexOffset","getStride","removeAttributeArray","getTCoordComponents","getColorBO","getColorOffset","getColorBOStride","planeEquations","planeEquation","getClippingPlaneInDataCoords","getMatrix","internalColorTexture","tex","texUnit","tname","getPropColorValue","program","dColor","getColorByReference","intensity","lightColor","ld","getDirection","lightDirection","lightHalfAngle","cam","viewTF","getViewMatrix","transpose","lp","getTransformedPosition","np","fromValues","transformMat4","getAttenuationValuesByReference","getExponent","getConeAngle","keyMats","getKeyMatrices","camm","getKeyMatrixTime","progm","getLastCameraMTime","getIsIdentity","wcdc","wcvc","normalMatrix","getParallelProjection","actMats","anorms","create","multiply","identity","tmpMat4","mcwc","ppty","opacity","getOpacity","aColor","getEdgeColorByReference","getAmbientColorByReference","getAmbient","getDiffuseColorByReference","getDiffuse","sColor","getSpecularColorByReference","getSpecular","getSpecularPower","renderPieceStart","renderProp","updateBufferObjects","renderPieceDraw","representation","gl","drawSurfaceWithEdges","cabo","mode","drawArrays","stride","rep","TRIANGLES","renderPieceFinish","LastBoundBO","invokeEvent","getStatic","backfaceCulling","getBackfaceCulling","frontfaceCulling","getFrontfaceCulling","disableCullFace","enableCullFace","cullFace","FRONT","BACK","computeBounds","getInput","getNeedToRebuildBufferObjects","buildBufferObjects","vmtime","getColorMapColors","haveCellScalars","getScalarMode","getScalarVisibility","tcoords","getTCoords","VBOBuildString","options","normals","colors","cellOffset","createVBO","getStrips","shaderRebuildString","ambientColor","diffuseColor","specularColor","setPrimitiveType","vtkOpenGLHelper","win","VAO","CABO","oglwin","setElementCount","shaderSourceTime","attributeUpdateTime","primitiveType","module","exports","request","uri","url","contentType","accepts","cache","error_cb","fe","success","failure","done","req","ajax","fail","process_msg","pleaseWaitDiv","pleaseWaitDivInit","recurse","showInit","hideInit","vtkActor","superClass","getActors","forceOpaque","forceTranslucent","texture","isTranslucent","mapper","hasTranslucentPolygonalGeometry","setProperty","makeProperty","bds","mapperBounds","boundsMTime","bbox","computeMatrix","tmp4","matrix","pt","backfaceProperty","getRedrawMTime","getInputAlgorithm","getSupportsSelection","INIT_BOUNDS","isValid","getCenter","getLength","getLengths","getXRange","getYRange","getZRange","getMaxLength","l","getDiagonalLength","oppositeSign","getCorners","corners","ix","iy","iz","vtkBoundingBox","clone","setMinPoint","xMin","xMax","yMin","yMax","zMin","zMax","setMaxPoint","addPoint","addBounds","_xMin","_xMax","_yMin","_yMax","_zMin","_zMax","addBox","intersect","newBounds","bBounds","intersects","MaxPnt","MinPnt","intersectPlane","origin","normal","evaluate","dir","sign","ti","containsPoint","getMinPoint","getMaxPoint","getBound","contains","reset","setBounds","inflate","sx","sy","sz","vtkProperty","setColor","color","setDiffuseColor","setAmbientColor","setSpecularColor","computeCompositeColor","getColor","ambient","diffuse","specular","addShaderVariable","setInterpolationToFlat","setInterpolation","setInterpolationToGouraud","setInterpolationToPhong","getInterpolationAsString","interpolation","setRepresentationToWireframe","setRepresentation","setRepresentationToSurface","setRepresentationToPoints","getRepresentationAsString","edgeColor","specularPower","edgeVisibility","pointSize","lineWidth","lighting","shading","materialName","macro","vtkFramebuffer","getBothMode","FRAMEBUFFER","saveCurrentBindingsAndBuffers","modeIn","saveCurrentBindings","saveCurrentBuffers","previousDrawBinding","FRAMEBUFFER_BINDING","previousActiveFramebuffer","getActiveFramebuffer","restorePreviousBindingsAndBuffers","restorePreviousBindings","restorePreviousBuffers","bindFramebuffer","setActiveFramebuffer","glFramebuffer","colorTexture","createFramebuffer","setColorBuffer","framebufferTexture2D","COLOR_ATTACHMENT0","getGLFramebuffer","deleteFramebuffer","depthTexture","getSize","populateFramebuffer","createRenderbuffer","bindRenderbuffer","RENDERBUFFER","renderbufferStorage","DEPTH_COMPONENT16","framebufferRenderbuffer","DEPTH_ATTACHMENT","previousReadBinding","previousDrawBuffer","previousReadBuffer","DATASET_FIELDS","vtkDataSet","fieldName","vtkImageData","inExtent","extent","dataDescription","getDataDescriptionFromExtent","setDimensions","getDimensions","dims","nCells","getNumberOfPoints","getPoint","ijk","coords","EMPTY","SINGLE_POINT","X_LINE","Y_LINE","Z_LINE","XY_PLANE","YZ_PLANE","XZ_PLANE","XYZ_GRID","vout","indexToWorldVec3","copy","extentToBounds","ex","computeTransforms","rotq","fromMat3","direction","trans","fromRotationTranslationScale","indexToWorld","invert","worldToIndex","setDirection","vin","ain","aout","worldToIndexVec3","dvals","COMPONENT","RGBCOLORS","ScalarMappingTarget","INVALID_BOUNDS","vtkPoints","setNumberOfPoints","nbPoints","dimension","setNumberOfComponents","setPoint","xRange","yRange","zRange","getEndianness","swapBytes","ArrayBuffer","ENDIANNESS","wordSize","bytes","tempBuffer","NoOp","IDENTITY","Transform","useDegre","angleConv","originDirection","targetDirection","src","dst","transf","cosAlpha","fromRotation","acos","angle","rotate","rotateX","rotateY","rotateZ","nbIterations","mat4x4","buildFromDegree","buildFromRadian","fromMat4","adjoint","determinant","fromTranslation","fromScaling","fromMat2d","fromQuat","normalFromMat4","frob","multiplyScalarAndAdd","exactEquals","m00","m01","m02","m10","m11","m12","m20","m21","m22","a01","a02","a12","a00","a10","a11","a20","a21","a22","b01","b11","b21","b00","b02","b10","b12","b20","b22","q","a03","a13","a23","a30","a31","a32","a33","b03","b04","b05","b06","b07","b08","b09","pow","a0","a4","a5","a6","a7","a8","b0","b4","b5","b6","b7","b8","mul","sub","fromXRotation","fromYRotation","fromZRotation","fromRotationTranslation","fromQuat2","getTranslation","getScaling","getRotation","fromRotationTranslationScaleOrigin","frustum","perspective","perspectiveFromFieldOfView","ortho","lookAt","targetTo","m03","m13","m23","m30","m31","m32","m33","translation","bx","by","bz","bw","ax","ay","az","aw","mat","trace","S","o","ox","oy","oz","out0","out1","out2","out4","out5","out6","out8","out9","out10","left","right","bottom","top","near","far","rl","tb","nf","fovy","aspect","tan","fov","upTan","upDegrees","downTan","downDegrees","leftTan","leftDegrees","rightTan","rightDegrees","xScale","yScale","lr","bt","eye","up","x0","y0","y1","z0","z1","eyex","eyey","eyez","upx","upy","upz","centerx","centery","centerz","a9","a14","a15","b9","b13","b14","b15","setAxisAngle","getAxisAngle","calculateW","slerp","conjugate","fromEuler","out_axis","omega","cosom","sinom","scale0","scale1","invDot","fTrace","fRoot","halfToRad","cx","cy","cz","lerp","squaredLength","sqrLen","rotationTo","tmpvec3","xUnitVec3","yUnitVec3","sqlerp","setAxes","matr","view","divide","scaleAndAdd","distance","squaredDistance","negate","inverse","hermite","bezier","transformMat3","transformQuat","factorTimes2","factor1","factor2","factor3","factor4","inverseFactor","inverseFactorTimesTwo","zScale","qx","qy","qz","qw","uvx","uvy","uvz","uuvx","uuvy","uuvz","w2","tempA","tempB","cosine","div","dist","sqrDist","arg","vectorScale","iw","checkRenderTargetSupport","framebuffer","checkFramebufferStatus","FRAMEBUFFER_COMPLETE","vtkOpenGLRenderWindow","updateWindow","setAttribute","style","display","useOffScreen","cursor","cursorVisibility","getRenderersByReference","initialize","initialized","get3DContext","textureUnitManager","shaderCache","blendFuncSeparate","SRC_ALPHA","ONE_MINUS_SRC_ALPHA","ONE","depthFunc","LEQUAL","enable","BLEND","makeCurrent","setContainer","parentNode","removeChild","appendChild","getFramebufferSize","activeFramebuffer","isInViewport","viewport","vCoords","getViewportByReference","getViewportSize","getViewportCenter","displayToNormalizedDisplay","normalizedDisplayToDisplay","worldToView","renderer","viewToWorld","worldToDisplay","val2","viewToNormalizedDisplay","displayToWorld","normalizedDisplayToView","normalizedDisplayToViewport","viewportToNormalizedViewport","normalizedViewportToViewport","displayToLocalDisplay","viewportToNormalizedDisplay","getPixelData","pixels","readPixels","get2DContext","preserveDrawingBuffer","webgl2Supported","WebGL2RenderingContext","webgl2","defaultToWebgl2","polyfill","PROVIDE_MOBILE_VRDISPLAY","DIRTY_SUBMIT_FRAME_BINDINGS","BUFFER_SCALE","navigator","getVRDisplays","displays","vrDisplay","depthNear","depthFar","invokeHaveVRDisplay","addEventListener","preventDefault","restoreContext","startVR","capabilities","canPresent","requestPresent","oldCanvasSize","hasExternalDisplay","queryVRSize","leftEye","getEyeParameters","rightEye","renderWidth","renderHeight","setSize","vrResolution","getRenderers","resetCamera","vrFrameData","VRFrameData","getInteractor","switchToVRAnimation","vrRender","catch","stopVR","returnFromVRAnimation","exitPresent","cancelAnimationFrame","vrSceneFrame","setProjectionMatrix","setViewport","traverseAllPasses","updateGamepads","displayId","requestAnimationFrame","getFrameData","computeViewParametersFromPhysicalMatrix","leftViewMatrix","leftProjectionMatrix","rightViewMatrix","rightProjectionMatrix","submitFrame","rp","setCurrentOperation","textureResourceIds","activeTexture","TEXTURE0","activeUnit","getTextureUnitManager","allocate","free","useFloat","R8","RG8","RGB8","RGBA8","R16F","RG16F","RGB16F","RGBA16F","getCanvasDataURL","imageFormat","toDataURL","captureNextImage","previous","notifyImageReady","resolve","reject","onImageReady","imageURL","getGLInformations","glTextureFloat","glTextureHalfFloat","glDebugRendererInfo","glDrawBuffers","glAnisotropic","MAX_VERTEX_ATTRIBS","MAX_VARYING_VECTORS","MAX_VERTEX_UNIFORM_VECTORS","MAX_FRAGMENT_UNIFORM_VECTORS","MAX_TEXTURE_IMAGE_UNITS","MAX_VERTEX_TEXTURE_IMAGE_UNITS","MAX_COMBINED_TEXTURE_IMAGE_UNITS","MAX_CUBE_MAP_TEXTURE_SIZE","MAX_TEXTURE_MAX_ANISOTROPY_EXT","ALIASED_POINT_SIZE_RANGE","ALIASED_LINE_WIDTH_RANGE","MAX_VIEWPORT_DIMS","MAX_RENDERBUFFER_SIZE","RED_BITS","GREEN_BITS","BLUE_BITS","ALPHA_BITS","DEPTH_BITS","STENCIL_BITS","SUBPIXEL_BITS","SAMPLES","SAMPLE_BUFFERS","ALPHA","HALF_FLOAT_OES","MAX_DRAW_BUFFERS_WEBGL","getShaderPrecisionFormat","VERTEX_SHADER","HIGH_FLOAT","rangeMax","MEDIUM_FLOAT","LOW_FLOAT","FRAGMENT_SHADER","HIGH_INT","MEDIUM_INT","LOW_INT","getSupportedExtensions","RENDERER","VENDOR","VERSION","SHADING_LANGUAGE_VERSION","UNMASKED_RENDERER_WEBGL","UNMASKED_VENDOR_WEBGL","label","renderPasses","invokeImageReady","disableDepthMask","depthMaskEnabled","depthMask","enableDepthMask","cullFaceEnabled","disable","CULL_FACE","vtkRenderPass","currentOperation","currentTraverseOperation","viewNode","currentParent","preDelegateOperations","delegates","postDelegateOperations","SelectionContent","SelectionField","FieldAssociations","vtkOpenGLHardwareSelector","releasePixBuffers","pixBuffer","beginSelection","maxAttributeId","clear","setSelector","hitProps","props","endSelection","preCapturePass","postCapturePass","select","sel","captureBuffers","generateSelection","area","originalBackground","getBackgroundByReference","setBackground","currentPass","MIN_KNOWN_PASS","MAX_KNOWN_PASS","passRequired","savePixelBuffer","pass","passNo","ACTOR_PASS","buildPropHitList","pixelbuffer","convert","setPropColorValueFromInt","idOffset","renderCompositeIndex","COMPOSITE_INDEX_PASS","renderAttributeId","attribid","getPropFromID","passTypeToString","isPropHit","hasKey","pb","propColorValue","getPixelInformation","inDisplayPosition","maxDistance","outSelectedPosition","maxDist","displayPosition","actorid","valid","propID","compositeID","dispPos","curPos","convertSelection","fieldassociation","dataMap","setContentType","INDICES","FIELD_ASSOCIATION_CELLS","setFieldType","CELL","FIELD_ASSOCIATION_POINTS","POINT","pixelCount","setSelectionList","attributeIDs","getInfoHash","pos","hash","has","attributeID","attach","AttributeTypes","SCALARS","VECTORS","NORMALS","TCOORDS","TENSORS","GLOBALIDS","PEDIGREEIDS","EDGEFLAG","NUM_ATTRIBUTES","AttributeLimitTypes","MAX","EXACT","NOLIMIT","CellGhostTypes","DUPLICATECELL","HIGHCONNECTIVITYCELL","LOWCONNECTIVITYCELL","REFINEDCELL","EXTERIORCELL","HIDDENCELL","PointGhostTypes","DUPLICATEPOINT","HIDDENPOINT","AttributeCopyOperations","COPYTUPLE","INTERPOLATE","PASSDATA","ALLCOPY","ghostArrayName","DesiredOutputPrecision","SINGLE","vtkOpenGLVertexArrayObject","exposedMethod","instancingExtension","forceEmulation","extension","supported","handleVAO","createVertexArray","createVertexArrayOES","bindVertexArrayOES","bindVertexArray","ibuff","buffers","buff","iatt","attributes","attrIt","matrixCount","isMatrix","enableVertexAttribArray","vertexAttribPointer","divisor","vertexAttribDivisorANGLE","vertexAttribDivisor","disableVertexAttribArray","shaderProgramChanged","deleteVertexArrayOES","deleteVertexArray","handleProgram","elementType","elementTupleSize","addAttributeArrayWithDivisor","attribs","Index","buffFound","found","addAttributeMatrixWithDivisor","StructuredType","UNCHANGED","MAP_SCALARS","DIRECT_SCALARS","BY_NAME","vtkRenderer","background","COMPUTE_VISIBLE_PROP_BOUNDS_EVENT","RESET_CAMERA_CLIPPING_RANGE_EVENT","RESET_CAMERA_EVENT","updateCamera","activeCamera","getActiveCameraAndResetIfCreated","updateLightsGeometryToFollowCamera","camera","lightTypeIsSceneLight","setPositionFrom","getPositionByReference","setFocalPointFrom","getFocalPointByReference","lightTypeIsCameraLight","updateLightGeometry","lightFollowCamera","allocateTime","updateGeometry","getVTKWindow","renderWindow","setLayer","layer","setPreserveColorBuffer","setActiveCamera","makeCamera","addActor","addViewProp","addVolume","removeActor","actors","removeViewProp","removeVolume","volume","volumes","addLight","getVolumes","removeLight","removeAllLights","setLightCollection","makeLight","createLight","automaticLightCreation","createdLight","setLightTypeToHeadLight","setPosition","getPosition","setFocalPoint","getFocalPoint","normalizedDisplayToWorld","vpd","worldToNormalizedDisplay","getCompositeProjectionMatrix","computeVisiblePropBounds","allBounds","nothingVisible","getVisibility","getUseBounds","boundsToUse","getViewPlaneNormal","setViewAngle","w1","w3","getViewAngle","parallelScale","vup","getViewUp","setViewUp","resetCameraClippingRange","setParallelScale","setPhysicalScale","setPhysicalTranslation","computeClippingRange","minGap","getParallelScale","clippingRangeExpansion","nearClippingPlaneTolerance","setClippingRange","setRenderWindow","vtkWindow","visibleActorCount","visibleVolumeCount","m1","m2","m3","getTransparent","preserveColorBuffer","isActiveCameraCreated","pickedProp","allocatedRenderTime","timeFactor","twoSidedLighting","lastRenderTimeInSeconds","numberOfPropsRendered","propArray","pathArray","preserveDepthBuffer","interactive","erase","draw","useShadows","useDepthPeeling","occlusionRatio","maximumNumberOfPeels","delegate","texturedBackground","backgroundTexture","Device","Input","deviceInputMap","TrackPad","Trigger","Grip","ApplicationMenu","handledEvents","stopPropagation","vtkRenderWindowInteractor","animationRequesters","Set","start","startEventLoop","aren","setInteractorStyle","interactorStyle","setInteractor","setEnabled","updateCurrentRenderer","currentRenderer","findPokedRenderer","getCurrentRenderer","getScreenEventPositionFor","container","getBoundingClientRect","getCanvas","scaleX","scaleY","clientX","clientY","getTouchEventPositionsFor","touches","positions","touch","identifier","getModifierKeysFor","controlKey","ctrlKey","altKey","shiftKey","getKeysFor","modifierKeys","keyCode","charCode","interactionRegistration","addListeners","rootElm","querySelector","invMethod","handleMouseMove","handleMouseUp","handleTouchEnd","handleTouchMove","bindEvents","handleWheel","handleMouseDown","handleKeyPress","handleKeyDown","handleKeyUp","handleTouchStart","unbindEvents","removeEventListener","keyPressEvent","keyDownEvent","keyUpEvent","callData","which","leftButtonPressEvent","middleButtonPressEvent","rightButtonPressEvent","forceRender","enabled","enableRender","inRender","invokeRenderEvent","requestAnimation","requestor","lastFrameTime","lastFrameStart","Date","now","animationRequest","handleAnimation","startAnimationEvent","isAnimating","vrAnimation","cancelAnimation","skipWarning","requestStr","endAnimationEvent","gamepads","getGamepads","gp","lastGamepadValues","buttons","pressed","button3DEvent","gamepad","pose","orientation","device","hand","LeftController","RightController","move3DEvent","moveTimeoutID","startMouseMoveEvent","mouseMoveEvent","endMouseMoveEvent","currTime","FrameTime","animationEvent","wheelTimeoutID","startMouseWheelEvent","mouseWheelEvent","endMouseWheelEvent","leftButtonReleaseEvent","middleButtonReleaseEvent","rightButtonReleaseEvent","recognizeGestures","recognizeGesture","changedTouches","setView","rc","interactiveren","viewportren","getInteractive","lowerFirst","pokedRenderer","startingEventPositions","currentGesture","endPinchEvent","endRotateEvent","endPanEvent","posVals","startVals","originalDistance","newDistance","originalAngle","newAngle","angleDeviation","thresh","clientWidth","clientHeight","pinchDistance","rotateDistance","panDistance","startPinchEvent","rotation","startRotateEvent","startPanEvent","rotateEvent","pinchEvent","panEvent","picker","pickingManager","desiredUpdateRate","stillUpdateRate","States","IS_START","IS_NONE","IS_ROTATE","IS_PAN","IS_SPIN","IS_DOLLY","IS_CAMERA_POSE","IS_WINDOW_LEVEL","IS_SLICE","Unknown","vtkCubeSource","inData","outData","polyData","numberOfPolys","numberOfPoints","pointType","normalArray","setNormals","generate3DTextureCoordinates","textureCoords","setTCoords","tc","pointIndex","xLength","yLength","zLength","rotations","polys","polyIndex","boundsArray","vtkConeSource","resolution","xbot","cellArraySize","pointIdx","cellLocation","capping","rotateFromDirections","ko","require","setupCube","cubeSource","actor_property","setLighting","setAmbient","setDiffuse","setOpacity","setScale","setMapper","setupOrientationActor","axes","setDefaultStyle","fontStyle","fontFamily","fontColor","fontSizeScale","res","faceColor","edgeThickness","setXMinusFaceProperty","setYPlusFaceProperty","setYMinusFaceProperty","setZPlusFaceProperty","setZMinusFaceProperty","ControlView","fullScreenRenderWindow","rootContainer","getElementById","containerStyle","margin","overflow","getRenderWindow","getRenderer","setupIsoSurface","isoActor","marchingCube","reader","fetchGzip","progressCallback","ev","loadIndicator","orientationWidget","interactor","textCanvas","classList","getContainer","textCtx","textActor","psMapper","names","centerPos","setCallback","coordsList","font","textAlign","textBaseline","setTransform","clearRect","mw","width_txt","measureText","fillStyle","fillRect","fillText","setResizeCallback","newDims","progressBar","observable","test_control","progressPct","minDataRange","maxDataRange","isoValue","specBright","useNormals","baseColor","addSpecular","autoRefresh","ready","setupArrows","firstTime","subscribe","setUrl","loadData","pointData","dataRange","setContourValue","viewUp","setViewportCorner","Corners","BOTTOM_LEFT","setViewportSize","setSpecularPower","activeNormals","setComputeNormals","setSpecular","hexToRgb","colorpicker","contourValue","mergePoints","computeNormals","coneSource","tipRadius","shaftRadius","tipLength","vecSource","interpolationFilter","randPoints","setMinBox","setMaxBox","setNumPoints","setScaleModeToScaleByComponents","setOrientationModeToRotation","setScalarRange","setScaleFactor","arrays","getArrays","setVectors","counter","arrowRefreshActive","arrowRefresh","refresh","clearInterval","setInterval","setupStreamline","sline","setIntegrationStep","setMaximumNumberOfSteps","slineMapper","slineActor","fid","pe","lengthComputable","total","loaded","cutHex","substring","applyBindings","LDU","v0","D","U","tx","ty","ab","ac","ad","atx","aty","fromRotationTranslationValues","getDual","setDual","rotateByQuatAppend","rotateByQuatPrepend","rotateAroundAxis","dq","getReal","setReal","ax1","ay1","az1","aw1","bx1","by1","bz1","ax2","ay2","az2","aw2","axisLength","ax0","ay0","az0","aw0","bw1","bx0","by0","bz0","bw0","sqlen","transformMat2","transformMat2d","vtkProp3D","addPosition","deltaXYZ","getOrientationWXYZ","oaxis","rotateWXYZ","degrees","quatMat","setUserMatrix","userMatrix","matrixMTime","isIdentity","getUserMatrix","updateIdentityFlag","userMatrixMTime","cachedProp3D","transform","vtkPlane","PLANE_TOLERANCE","distanceToPlane","projectPoint","xproj","xo","vproj","n2","generalizedProjectPoint","intersectWithLine","outObj","intersection","p21","fabsden","fabstolerance","evaluateFunction","evaluateGradient","retVal","vtkProp","textures","getNestedProps","getActors2D","pick","setEstimatedRenderTime","estimatedRenderTime","savedEstimatedRenderTime","restoreEstimatedRenderTime","addEstimatedRenderTime","setAllocatedRenderTime","getTextures","hasTexture","addTexture","removeTexture","newTextureList","removeAllTextures","visibility","pickable","dragable","useBounds","renderTimeMultiplier","paths","STYLE_CONTAINER","padding","STYLE_CONTROL_PANEL","backgroundColor","borderRadius","listStyle","border","maxWidth","maxHeight","applyStyle","vtkFullScreenRenderWindow","addRenderer","addView","removeController","controlContainer","setControllerVisibility","visible","controllerVisibility","toggleControllerVisibility","addController","html","controlPanelStyle","innerHTML","String","fromCharCode","addRepresentation","removeRepresentation","resize","devicePixelRatio","resizeCallback","listenWindowResize","vtkForwardPass","renderers","getChildren","renNode","opaqueActorCount","translucentActorCount","volumeCount","depthRequested","fbSize","getZBufferTexture","getColorTexture","incrementOpaqueActorCount","incrementTranslucentActorCount","incrementVolumeCount","message","emit","depthLength","gradients","gradientMagnitudes","sliceSize","inPtr","outPtr","grad","zedge","yedge","edge","mag","arrayMinMag","arrayMaxMag","TransferableResponse","vtkOpenGLViewNodeFactory","registerOverride","vtkGenericWidgetRepresentation","vtkViewNodeFactory","overrides","cpt","isObject","setMyFactory","vtkOpenGLActor","getMapper","ogltextures","activeTextures","oglmapper","traverseOpaqueZBufferPass","traverseOpaquePass","traverseTranslucentPass","activateTextures","queryPass","keyMatrixTime","keyMatrices","vtkOpenGLActor2D","vtkOpenGLCamera","tsize","getTiledSizeAndOrigin","lowerLeftU","lowerLeftV","usize","vsize","scissor","volumePass","lastRenderer","aspectRatio","getAspectRatio","vcdc","getProjectionMatrix","vtkOpenGLGlyph3DMapper","hardwareSupport","multiply4x4WithOffset","getColorArray","updateGlyphShaderParameters","normalMatrixUsed","mcvcMatrixUsed","carray","garray","narray","ofs","tmpMat3","mcdcMatrix","mcvcMatrix","cdata","tmpColor","getMatrixArray","getNormalArray","numPts","compositePass","drawArraysInstancedANGLE","drawArraysInstanced","glyphBOBuildTime","matrixBuffer","normalBuffer","colorBuffer","pickBuffer","buildArrays","getBuildTime","parray","mcwcMatrix","vtkSelectionNode","fieldType","selectionList","VALUES","FRUSTUM","LOCATIONS","THRESHOLDS","BLOCKS","QUERY","FIELD","VERTEX","EDGE","ROW","vtkDataSetAttributes","attrTypes","cleanAttributeType","attType","cleanAttType","ee","checkNumberOfComponents","uncleanAttType","currentAttribute","removeArrayByIndex","addArray","setActiveAttributeByName","setActiveAttributeByIndex","getArrayWithIndex","arrayIdx","getActiveAttribute","removeAllArrays","removeArray","entry","activeVal","da","copyAttributeFlags","op","attCopyOp","dataArrays","ref","activeScalars","activeVectors","activeTensors","activeTCoords","activeGlobalIds","activePedigreeIds","vtkFieldData","superGetState","initializeFields","copyAllOn","clearFieldFlags","copyFieldFlags","copyStructure","getCopyFieldFlags","getNumberOfArrays","getNumberOfActiveArrays","arraySpec","hasArray","getArrayName","getFlag","passData","fromId","toId","copyFlag","doCopyAllOff","destArr","ncomps","newSize","tId","copyFieldOn","copyFieldOff","doCopyAllOn","copyAllOff","deepCopy","arrNew","copyFlags","FieldDataTypes","UNIFORM","DATA_OBJECT_FIELD","COORDINATE","POINT_DATA","POINT_FIELD_DATA","CELL_FIELD_DATA","VERTEX_FIELD_DATA","EDGE_FIELD_DATA","ROW_DATA","FIELD_ASSOCIATION_NONE","FIELD_ASSOCIATION_POINTS_THEN_CELLS","FIELD_ASSOCIATION_VERTICES","FIELD_ASSOCIATION_EDGES","FIELD_ASSOCIATION_ROWS","NUMBER_OF_ASSOCIATIONS","vtkOpenGLCellArrayBufferObject","cellArray","inRep","outRep","elementCount","blockSize","vertexOffset","normalOffset","tCoordOffset","tCoordComponents","colorComponents","colorOffset","normalData","tcoordData","colorData","textureComponents","colorBO","normalIdx","tcoordIdx","colorIdx","cellCount","addAPoint","cellBuilders","anythingToPoints","numPoints","cellPts","linesToWireframe","polysToWireframe","stripsToWireframe","polysToSurface","npts","stripsToSurface","cellCounters","countFunc","caboCount","packedUCVBO","packedVBO","vboidx","ucidx","addAPointFunc","colorBOStride","setCoordShiftAndScaleMethod","shiftScaleMethod","setCoordShift","shiftArray","setCoordScale","scaleArray","tcoordBO","vtkShader","stype","createShader","shaderSource","getShaderParameter","COMPILE_STATUS","getShaderInfoLog","vtkAbstractMapper3D","diff","propMatrix","hnormal","clipPlanes","clippingPlanes","plane","getNormal","getOrigin","v4","vtkAbstractMapper","addClippingPlane","removeAllClippingPlanes","removeClippingPlane","getClippingPlanes","setClippingPlanes","planes","nbPlanes","inExt","dataDim","BELOW_RANGE_COLOR_INDEX","ABOVE_RANGE_COLOR_INDEX","NAN_COLOR_INDEX","vtkLookupTable","opaqueFlagBuildTime","opaque","nanColor","useBelowRangeColor","belowRangeColor","useAboveRangeColor","aboveRangeColor","table","opaqueFlag","linearIndexLookup","dIndex","maxIndex","linearLookup","indexedLookupFunction","getAnnotatedValueIndexInternal","lookupShiftAndScale","mapScalarsThroughTable","outFormat","inputOffset","lookupFunc","indexedLookup","trange","getMappingRange","getNumberOfColors","inIncr","cptr","forceBuild","hinc","sinc","vinc","ainc","hueRange","saturationRange","valueRange","alphaRange","rgba","buildSpecialColors","buildTime","tptr","base","intColorToUChar","floatColorToUChar","vtkScalarsToColors","setVectorModeToMagnitude","setVectorMode","setVectorModeToComponent","setVectorModeToRGBColors","setAnnotations","annotations","annotationArray","annotation","updateAnnotatedValueMap","setAnnotation","checkForAnnotatedValue","getNumberOfAnnotatedValues","getAnnotatedValue","getAnnotation","getAnnotatedValueIndex","removeAnnotation","needToRemove","resetAnnotations","annotatedValueMap","getAnnotationColor","getIndexedColor","parseFloat","na","componentIn","newColors","convertToRGBA","newscalars","mapVectorsThroughTable","mapVectorsToMagnitude","compsToUse","outputFormat","vectorComponentIn","vectorSizeIn","vectorMode","vectorSize","vectorComponent","inComponents","getVectorSize","magValues","luminanceToRGBA","convtFun","newValues","luminanceAlphaToRGBA","rGBToRGBA","rGBAToRGBA","numComp","numTuples","setMappingRange","mappingRange","nameList","unit","getResolveCoincidentTopologyPolygonOffsetFaces","setResolveCoincidentTopologyPolygonOffsetFaces","setResolveCoincidentTopology","setResolveCoincidentTopologyToDefault","setResolveCoincidentTopologyToOff","setResolveCoincidentTopologyToPolygonOffset","getResolveCoincidentTopologyAsString","resolveCoincidentTopologyPolygonOffsetFaces","RESOLVE_COINCIDENT_TOPOLOGY_MODE","SlicingMode","vtkOpenGLImageMapper","openGLImageSlice","tris","openGLTexture","getSliceAtFocalPoint","setSliceFromCamera","lastTextureComponents","FALSE","cw","getColorWindow","cl","getColorLevel","cfun","getRGBTransferFunction","cRange","oglShiftScale","texColorUnit","i2wmat4","getIndexToWorld","imagemat","iType","getInterpolationType","cWidth","cTable","cfunToString","colorTextureString","cfTable","getTable","getClosestIJKAxis","ijkMode","nSlice","getSlice","getSlicingMode","getSliceAtPosition","sliceOffset","I","J","K","NONE","numComponents","setGenerateMipmap","ptsArray","tcoordArray","basicScalars","subarray","setName","cells","X","Y","Z","InterpolationType","vtkOpenGLImageSlice","vtkOpenGLPixelSpaceCallbackMapper","texels","getUseZValues","zbt","fb","getFramebuffer","invokeCallback","setDepthRequested","vtkOpenGLRenderer","updateLights","getViewPropsWithNestedProps","clearMask","clearColor","COLOR_BUFFER_BIT","getPreserveDepthBuffer","clearDepth","DEPTH_BUFFER_BIT","ts","SCISSOR_TEST","colorMask","DEPTH_TEST","cameraPass","getSizeByReference","vport","tileViewPort","vpu","vpv","ndvp","vpu2","vpv2","ndvp2","vtkOpenGLSkybox","imat","camPos","tmaps","vtkOpenGLSphereMapper","replacement","fragString","vbo","pointArray","scales","getScaleArray","setColorOffset","setColorBOStride","setColorBO","setColorComponents","setStride","cos30","vboIdx","ucIdx","getRadius","vtkOpenGLStickMapper","picking","orientationArray","getOrientationArray","verticesArray","vtkOpenGLVolume","traverseVolumePass","MCWCMatrix","vtkOpenGLVolumeMapper","zBufferTexture","opacityTexture","lightingTexture","jitterTexture","openGLVolume","gopacity","getUseGradientOpacity","getComputedGradients","volInfo","spc","getSpacing","maxSamples","getSampleDistance","lightNum","getLights","getShade","lastZBufferTexture","getGradientsBuildTime","getRenderTargetSize","crange","getClippingRange","dcxmin","dcxmax","dcymin","dcymax","idxToView","idxNormalMatrix","getMaximumSamplesPerRay","vctoijk","pos2","dcvc","camDOP","getDirectionOfProjection","lightDir","halfAngle","sscale","vprop","ofun","getScalarOpacity","oRange","lightingInfo","gomin","getGradientOpacityMinimumOpacity","gomax","getGradientOpacityMaximumOpacity","goRange","getGradientOpacityMinimumValue","getGradientOpacityMaximumValue","lastXYF","fvp","getAutoAdjustSampleDistances","rwi","rft","getLastFrameTime","avgFrameTime","avgWindowArea","txyf","getDesiredUpdateRate","targetXYF","getStillUpdateRate","getImageSampleDistance","xyf","computedGradientsRenderTimeout","lightingActivatedInvoked","invokeLightingActivated","copyShader","copyVAO","Bounds","bounnds","oTable","opacityFactor","getScalarOpacityUnitDistance","opacityTextureString","oWidth","ofTable","scalarTextureString","lightingTextureString","colortextureString","fullViewportTime","FAST_LINEAR","SET_GET_FIELDS","vtkShaderCache","nFSSource","gl2","fragDepthString","version","nVSSource","nGSSource","vertexCode","fragmentCode","geometryCode","getShaderProgram","getCompiled","bindShader","hashInput","shaderPrograms","sps","getVertexShader","setSource","getFragmentShader","getGeometryShader","setMd5Hash","releaseCurrentShader","sp","astShaderBound","lastShaderBound","vtkOpenGLTextureUnitManager","deleteTable","numberOfTextureUnits","textureUnits","isAllocated","allocateUnit","textureUnitId","vtkCamera","viewMatrix","projectionMatrix","w2pMatrix","dopbasis","upbasis","tmpvec1","tmpvec2","rotateMatrix","newPosition","newFocalPoint","orthogonalizeViewUp","vt","computeDistance","focalPoint","setDistance","directionOfProjection","computeViewPlaneNormal","viewPlaneNormal","dolly","amount","setRoll","roll","getRoll","at","viewUpVec4","viewDir","azimuth","fp","yaw","elevation","pitch","zoom","parallelProjection","viewAngle","setThickness","thickness","setObliqueAngles","physicalOrientationToWorldDirection","ori","getPhysicalToWorldMatrix","oriq","coriq","qdir","getWorldToPhysicalMatrix","physicalScale","physicalTranslation","physVRight","physicalViewNorth","physicalViewUp","phystoworld","computeViewParametersFromViewMatrix","oldDist","setDirectionOfProjection","setViewMatrix","nearz","farz","clippingRange","xmin","windowCenter","xmax","ymin","ymax","useOffAxisProjection","useHorizontalViewAngle","znear","zfar","vMat","pMat","getFrustumPlanes","getOrientation","setDeviceAngles","screen","rotmat","dop","setOrientationWXYZ","toMat4","newdop","newvup","screenBottomLeft","screenBottomRight","screenTopRight","freezeFocalPoint","useScissor","LIGHT_TYPES","vtkLight","transformMatrix","getTransformedFocalPoint","directionMTime","setDirectionAngle","elevationRadians","azimuthRadians","setPositional","setLightType","setLightTypeToCameraLight","setLightTypeToSceneLight","setTransformMatrix","lightType","switch","positional","exponent","coneAngle","attenuationValues","shadowAttenuation","vtkViewport","getViewProps","hasViewProp","newPropList","removeAllViewProps","allprops","addActor2D","removeActor2D","actors2D","displayToView","viewToDisplay","nvp","normalizedDisplayToNormalizedViewport","normalizedViewportToView","viewToNormalizedViewport","normalizedViewportToNormalizedDisplay","PickPropFrom","background2","gradientBackground","pixelAspect","vtkRenderWindow","hasRenderer","removeRenderer","hasView","views","removeView","getStatistics","results","propCount","invisiblePropCount","mpr","captureImages","neverRendered","numberOfLayers","vtkInteractorStyleTrackballCamera","handleMouseRotate","invokeInteractionEvent","handleMousePan","handleMouseDolly","handleMouseSpin","previousPosition","handleButton3D","ed","startCameraPose","endCameraPose","handleMove3D","updateCameraPose","oldTrans","getPhysicalTranslation","speed","pscale","getPhysicalScale","handleLeftButtonPress","startDolly","startPan","startSpin","startRotate","handleLeftButtonRelease","endDolly","endPan","endSpin","endRotate","handleStartMouseWheel","handleMouseWheel","handleEndMouseWheel","handleStartPinch","previousScale","handleEndPinch","handleStartRotate","previousRotation","handleEndRotate","handleStartPan","previousTranslation","handleEndPan","handlePinch","dollyByFactor","handlePan","viewFocus","computeWorldToDisplay","focalDepth","lastTrans","newPickPoint","computeDisplayToWorld","oldPickPoint","motionVector","viewPoint","getLightFollowCamera","handleRotate","getView","deltaElevation","deltaAzimuth","rxf","motionFactor","ryf","autoAdjustCameraClippingRange","oldAngle","dyf","stateNames","Rotate","Pan","Spin","Dolly","CameraPose","WindowLevel","Slice","vtkInteractorStyle","invokeStartInteractionEvent","invokeEndInteractionEvent","anActor","handleObservers","getViews","vtkInteractorObserver","unsubscribeFromEvents","subscribedEvents","subscribeToEvents","extractCellSizes","currentIdx","vtkCellArray","recompute","numberOfCells","cellSizes","getCellSizes","vtkPointSet","fieldDataLocations","HTTP_DATA_ACCESS","ARRAY_BUILDERS","vtkStringArray","GEOMETRY_ARRAYS","arrayToDownload","cellName","vtkUnstructuredGrid","cellTypes","vtkRectilinearGrid","xCoordinates","yCoordinates","zCoordinates","processDataSet","fetchArray","enableArray","registration","pendingPromises","compression","err","vtkHttpDataSetReader","dataAccessHelper","baseURL","updateMetadata","fetchBinary","zipContent","zip","fetchJSON","fullpath","path","datasetObj","arrayToFecth","processNext","metaArray","activeArray","isBusy","requestCount","TYPE_MAPPING","http","getContent","removeLeadingSlash","fetchText","txt","basepath","bText","atob","to","uint8array","encode","invokeBusy","byteLength","toByteArray","fromByteArray","lookup","revLookup","Arr","charCodeAt","placeHoldersCount","b64","placeHolders","tripletToBase64","encodeChunk","uint8","extraBytes","parts","maxChunkLength","len2","xhr","XMLHttpRequest","onreadystatechange","readyState","response","open","responseType","send","pending","responseText","handleUint8Array","handleString","string","handlers","createOptions","zipRoot","loadAsync","metaFiles","relativePath","zipEntry","fullRootPath","dirName","folder","doneCleanUp","asyncType","asyncCallback","file","async","vtkImageMarchingCubes","ids","voxelScalars","voxelGradients","voxelPts","edgeMap","getVoxelScalars","getVoxelPoints","getPointGradient","getVoxelGradients","produceTriangles","cVal","CASE_MASK","VERT_MAP","pId","voxelTris","getCase","eid","edgeVerts","getEdge","n0","n1","pBuffer","tBuffer","nBuffer","polydata","nData","timeEnd","MARCHING_CUBE_CASES","EDGES","OrientationModes","ScaleModes","vtkGlyph3DMapper","getOrientationModeAsString","orientationMode","setOrientationModeToDirection","setOrientationMode","DIRECTION","ROTATION","getOrientationArrayData","idata","getVectors","getScaleModeAsString","scaleMode","setScaleModeToScaleByMagnitude","setScaleMode","SCALE_BY_MAGNITUDE","SCALE_BY_COMPONENTS","setScaleModeToScaleByConstant","SCALE_BY_CONSTANT","getScaleArrayData","gdata","pts","sArray","sData","numSComp","scaling","gbounds","tcorner","oArray","matrixArray","mbuff","nbuff","vMag","vNew","scaleFactor","colorArray","glyph","mult","orient","boundsTime","vtkArrowSource","cylinder","setResolution","shaftResolution","setRadius","setHeight","setCenter","cylinderPD","cylinderPts","cylinderNormals","cone","tipResolution","conePD","conePts","append","appendPD","appendPts","offsetCellArray","appendCellData","dest","ptOffset","vtkAppendPolyData","ttype","firstType","numVerts","numLines","numStrips","numPolys","hasPtNormals","hasPtTCoords","hasPtScalars","dsNumPts","ptD","outputPointsPrecision","vertData","lineData","stripData","newPtNormals","newPtTCoords","newPtScalars","lds","dsNormals","numberOfTuples","dsTCoords","dsScalars","dsPD","ptNorms","ptTCoords","ptScalars","setPoints","vtkCylinderSource","normalsData","tcData","nbot","ntop","xtop","tcbot","tctop","botIdx","topIdx","vtkPixelSpaceCallbackMapper","windowSize","depthValues","dataPoints","hw","hh","pidx","point","coord","linIdx","useZValues","vtkOrientationMarkerWidget","previousCameraInput","selfRenderer","interactorUnsubscribe","viewUnsubscribe","computeViewport","viewXSize","viewYSize","minViewSize","pixelSize","viewportSize","minPixelSize","maxPixelSize","xFrac","yFrac","viewportCorner","TOP_LEFT","TOP_RIGHT","BOTTOM_RIGHT","updateViewport","updateMarkerOrientation","currentCamera","enabling","getNumberOfLayers","setNumberOfLayers","setInteractive","setVisibility","onAnimation","corner","sizeFactor","setActor","previousState","FACE_TO_INDEX","xPlus","xMinus","yPlus","yMinus","zPlus","zMinus","vtkAnnotatedCubeActor","xPlusFaceProperty","xMinusFaceProperty","yPlusFaceProperty","yMinusFaceProperty","zPlusFaceProperty","zMinusFaceProperty","setInterpolate","updateFaceTexture","faceName","newProp","defaultStyle","ctxt","strokeStyle","strokeRect","save","faceRotation","textSize","restore","vtkImage","canvasToImageData","updateAllFaceTextures","setXPlusFaceProperty","vtkTexture","imageLoaded","complete","repeat","interpolate","edgeClamp","boundingBox","getImageData","imageData","setOrigin","setSpacing","imageToImageData","flipX","flipY","setupLSS","lss","lssSource","lssStructure","phi","lon","lat","cos_theta","sin_theta","cos_phi","sin_phi","buildLSS","newLSSInstance","vtkImageStreamline","indices","paramCoords","weights","voxelIndices","dimensions","velAt","xtmp","interpolationFunctions","pcoords","sf","rm","tm","computeStructuredCoordinates","tol2","isInBounds","doubleLoc","tmpInBounds","minExt","maxExt","getVoxelIndices","vectorAt","velArray","velAtArg","vel","computeNextStep","delT","streamIntegrate","maxSteps","maximumNumberOfSteps","integrationStep","pointsBuffer","step","seeds","seedPts","nSeeds","datas","vectors","cellArrayLength","pointArrayLength","offset2","content","insertInto","locals","hot","accept","newContent","dispose"],"mappings":"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WAAWO,UAAUhN,KAAV,CAAjB;AACAjC,YAAM0O,QAAN,EAAgBjT,GAAhB,CAAoB2G,IAAIsM,QAAJ,CAApB;AACD;AACF;;AAED,MAAMO,YAAYhP,OAAOC,IAAP,CAAY4O,QAAZ,CAAlB;AACA,MAAI7M,QAAQgN,UAAUlN,MAAtB;;AAbA;AAeE;AACA,QAAM5B,MAAM8O,UAAUhN,KAAV,CAAZ;AACAjC,UAAMG,GAAN,IAAa2O,SAAS3O,GAAT,CAAb;;AAEA;AACA,QAAM+O,UAAUL,MAAM1O,GAAN,CAAhB;AACAW,sBAAgB3F,WAAWgF,GAAX,CAAhB,IAAqC,UAACjB,KAAD,EAAW;AAC9C,UAAIA,UAAUc,MAAMG,GAAN,CAAd,EAA0B;AACxBH,cAAMG,GAAN,IAAajB,KAAb;AACA,YAAMiQ,aAAaD,QAAQhQ,KAAR,CAAnB;AACA8P,mBAAWG,UAAX;AACArO,kBAAUY,QAAV;AACD;AACF,KAPD;AArBF;;AAcA,SAAOO,OAAP,EAAgB;AAAA;AAef;;AAED;AACA,MAAIgN,UAAUlN,MAAd,EAAsB;AACpBvG,QAAIsF,SAAJ,EAAed,KAAf,EAAsBiP,SAAtB;AACD;AACF;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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AkB;AACxC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,WAAW,oCAAoC;AAC/C,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA,WAAW,oCAAoC;AAC/C,WAAW,oCAAoC;AAC/C,YAAY,oCAAoC;AAChD;AACA;AACA,mBAAmB,sBAAsB;AACzC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,2CAA2C;AACtD,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,8BAA8B;;AAE9B;AACA;AACA,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA,eAAe,wBAAwB;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,UAAU;AACrB,YAAY,OAAO;AACnB;AACA;AACA,mBAAmB;AACnB,eAAe,sBAAsB,OAAO;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,YAAY,QAAQ;AACpB;AACA;;AAEA;AACA;;;AAGA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;;;;;;;;;;;;;;;ACjcA;;IAAYI,Q;;AACZ;;IAAYC,I;;AACZ;;IAAYC,K;;AACZ;;IAAYC,I;;AACZ;;IAAYC,I;;AACZ;;IAAYlI,I;;AACZ;;IAAYmI,K;;AACZ;;IAAYC,I;;AACZ;;IAAYC,I;;AACZ;;IAAYC,I;;;;AArCZ;;;;;;;AAOA;;;;;;;;;;;;;;;;;;;AAmBA;;QAcER,Q,GAAAA,Q;QACAC,I,GAAAA,I;QAAMC,K,GAAA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CAAC,UAAD,CAAjC;;AAEA;AACAypB,cAAY3oB,SAAZ,EAAuBd,KAAvB;AACD;;AAED;;AAEA,IAAMhE,cAAc,gBAAMA,WAAN,CAAkBsM,MAAlB,EAA0B,aAA1B,CAApB;;AAEA;;kBAEe,EAAEtM,wBAAF,EAAesM,cAAf,EAAuBkhB,sBAAvB,E;;;;;;;;;ACzMf;AACA;AACA;;;;;;;;ACFA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,gBAAgB,QAAQ;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,MAAM;AACrB,gBAAgB,QAAQ;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,gBAAgB,cAAc;AAC9B;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA;AACA;AACA,0BAA0B,kCAAkC;AAC5D;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,OAAO;AACtB,gBAAgB,OAAO;AACvB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AA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CA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAkB,UAAU;;AAE5B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA,4BAA4B,YAAY;AACxC,qBAAqB,8BAA8B;AACnD;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,SAAS;AAC5B;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,kCAAkC,OAAO;AACzC;AACA;;AAEA;AACA;AACA;AACA,kCAAkC,OAAO;AACzC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,SAAS;AAC5B;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;8CCxGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;;;;;;;;;;;;;ACrCA;;;;;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA,eAAe,iBAAiB;AAChC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,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;;AAEA;AACA,2BAA2B,kBAAkB;;AAE7C;AACA;AACA,oDAAoD,OAAO;;AAE3D;AACA;AACA,kBAAkB,YAAY;;AAE9B;AACA;AACA,oBAAoB,YAAY;;AAEhC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,oBAAoB,OAAO;AAC3B;AACA;AACA,uBAAuB,qBAAqB,UAAU;;AAEtD;AACA;AACA,wBAAwB,0BAA0B,cAAc,UAAU;;AAE1E;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wBAAwB,0BAA0B,UAAU;;AAE5D;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;;;AAGA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,wBAAwB;AACpC;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,wBAAwB;AACnC,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;;;;;;AClRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;QCjBgBgI,M,GAAAA,M;QAuCAC,G,GAAAA,G;;AA5ChB;;;;AACA;;;;AAEA,oBAAgB,EAAhB;;AAEO,SAASD,MAAT,CAAgBE,GAAhB,EAAqBC,OAArB,EAA8BpjC,SAA9B,EAAyCqjC,SAAzC,EAAoD;AACzD,wBAAEF,GAAF,EAAOjrC,EAAP,CAAU,iBAAV,EAA6B,UAAStF,KAAT,EAAgB;AAC3C,QAAI0wC,OAAO,sBAAE,MAAF,CAAX;;AAEA,0BAAE,IAAF,EAAQC,WAAR,CAAoB,gBAApB;AACAD,SAAK1V,IAAL,CAAU,gBAAV,EAA4B0V,KAAK1V,IAAL,CAAU,gBAAV,IAA8B,CAA1D;AACD,GALD;;AAOA,wBAAEuV,GAAF,EAAOjrC,EAAP,CAAU,gBAAV,EAA4B,UAAStF,KAAT,EAAgB;AAC1C,QAAI0wC,OAAO,sBAAE,MAAF,CAAX;;AAEA,QAAI,OAAOA,KAAK1V,IAAL,CAAU,gBAAV,CAAP,IAAsC,WAA1C,EACE0V,KAAK1V,IAAL,CAAU,gBAAV,EAA4B,CAA5B;;AAEF,QAAI,sBAAE,IAAF,EAAQ4V,QAAR,CAAiB,gBAAjB,CAAJ,EAAwC;;AAExC,0BAAE,IAAF,EAAQC,QAAR,CAAiB,gBAAjB;AACAH,SAAK1V,IAAL,CAAU,gBAAV,EAA4B0V,KAAK1V,IAAL,CAAU,gBAAV,IAA8B,CAA1D;AACA,0BAAE,IAAF,EAAQ8V,GAAR,CAAY,SAAZ,EAAuB,OAAO,KAAKJ,KAAK1V,IAAL,CAAU,gBAAV,CAAnC;;AAEA,0BAAE,iBAAF,EACG+V,GADH,CACO,iBADP,EAEGD,GAFH,CAEO,SAFP,EAEkB,OAAO,KAAKJ,KAAK1V,IAAL,CAAU,gBAAV,CAF9B,EAGG6V,QAHH,CAGY,gBAHZ;AAID,GAhBD;;AAkBA,MAAInjC,QAAQN,YAAY,CAAZ,GAAgB,GAA5B;AACAmjC,MAAIvV,IAAJ,CACE,cADF,EAEE9uB,WAAW,YAAW;AACpBskC;AACD,GAFD,EAEG9iC,KAFH,CAFF;AAMA6iC,MAAIvV,IAAJ,CAAS,qBAAT,EAAgC,YAAW;AACzC,QAAIyV,SAAJ,EAAeA,YAAf,KACKF,IAAIS,KAAJ,CAAU,MAAV;AACN,GAHD;AAID;;AAEM,SAASV,GAAT,CAAaC,GAAb,EAAkB;AACvB9iC,eAAa8iC,IAAIvV,IAAJ,CAAS,cAAT,CAAb;AACAuV,MAAIvV,IAAJ,CAAS,qBAAT;AACD,C;;;;;;;;;;;;QCtBeiW,I,GAAAA,I;QAQAC,I,GAAAA,I;;AAjChB;;;;AACA;;AACA;;IAAYC,K;;;;;;AAEZ,oBAAgB,EAAhB;;AAEA,IAAIC,OAAO,CACT,oDADS,EAET,4CAFS,EAGT,6BAHS,EAIT,4BAJS,EAKT,8HALS,EAMT,gBANS,EAOT,QAPS,EAQT,8DARS,EAST,QATS,EAUT,4BAVS,EAWT,qEAXS,EAYT,QAZS,EAaT,QAbS,EAcT,QAdS,EAeT,QAfS,EAgBTrtC,IAhBS,CAgBJ,EAhBI,CAAX;AAiBA,IAAIstC,cAAc,sBAAED,IAAF,CAAlB;;AAEO,SAASH,IAAT,CAActnC,GAAd,EAAmB;AACxBrI,UAAQM,GAAR,CAAY,4BAA4B+H,GAAxC;AACA,wBAAE,aAAF,EAAiB0nC,WAAjB,EAA8BC,IAA9B,CAAmC3nC,GAAnC;AACAwnC,QAAMd,MAAN,CAAagB,WAAb,EAA0B,YAAW;AACnCA,gBAAYL,KAAZ;AACD,GAFD;AAGD;;AAEM,SAASE,IAAT,GAAgB;AACrBC,QAAMb,GAAN,CAAUe,WAAV;AACAA,cAAYL,KAAZ,CAAkB,MAAlB;AACD,C;;;;;;;;;ACpCD,iCAAO,CAAC,sBAAD,CAAP,mCAAmB,UAASO,CAAT,EAAY;AAC7B,MAAIC,OAAO,IAAX;;AAEAA,OAAKC,WAAL,GAAoB,UAASC,WAAT,EAAsB;AACxC,QAAIC,SAAS,EAAb;;AAEA,SAAK,IAAI1oC,IAAI,CAAb,EAAgBA,IAAIyoC,YAAY1rC,MAAhC,EAAwC,EAAEiD,CAA1C,EAA6C;AAC3C,UAAI2oC,QAAQF,YAAYzoC,CAAZ,EAAeqiB,KAAf,CAAqB,GAArB,EAA0B,CAA1B,CAAZ;;AAEA,UAAIsmB,MAAM5rC,MAAN,KAAiB,CAArB,EAAwB;;AAExB2rC,aAAOC,MAAM,CAAN,CAAP,IAAmBC,mBAAmBD,MAAM,CAAN,EAAS9gB,OAAT,CAAiB,KAAjB,EAAwB,GAAxB,CAAnB,CAAnB;AACD;;AAED,WAAO6gB,MAAP;AACD,GAZkB,CAYhBnkB,OAAO8G,QAAP,CAAgB1C,MAAhB,CAAuB3M,MAAvB,CAA8B,CAA9B,EAAiCqG,KAAjC,CAAuC,GAAvC,CAZgB,CAAnB;;AAcAkmB,OAAKM,WAAL,GAAmB,YAAW;AAC5BxwC,YAAQM,GAAR,CAAY4vC,KAAKC,WAAjB;AACAM,YAAQC,SAAR,CAAkB,EAAlB,EAAsB,EAAtB,EAA0B,MAAMT,EAAEK,KAAF,CAAQJ,KAAKC,WAAb,CAAhC;AACD,GAHD;;AAKA,SAAOD,IAAP;AACD,CAvBD;AAAA,qG;;;;;;;;;;;;;;;;;;;;;ACAO,IAAMS,kCAAa;AACxBC,gBAAc,CADU;AAExBC,wBAAsB,CAFE;AAGxBC,kBAAgB;AAHQ,CAAnB;;kBAMQ;AACbH;AADa,C;;;;;;;ACNf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,mDAAmD;AACxE;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA,uCAAuC,SAAS;AAChD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC;AACA;AACA;;AAEA;AACA;AACA,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gDAAgD,EAAE;AAClD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAwB,eAAe;AACvC;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,wBAAwB,QAAQ;AAChC;AACA,qBAAqB,eAAe;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,mBAAmB,cAAc;AACjC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uDAAuD,OAAO;AAC9D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA,uDAAuD,OAAO;AAC9D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,qBAAqB,QAAQ;AAC7B;AACA;AACA,GAAG;AACH;AACA,eAAe,SAAS;AACxB;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,mBAAmB,SAAS;AAC5B;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,YAAY;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,gBAAgB;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;AC5vDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;;;;;;;;AC1GA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;;AAEA;AACA;AAC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AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,GAAG;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH,CAAC;AACD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,iCAAiC;;AAEjC;;AAEA,2CAA2C;AAC3C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,oDAAoD;AACpD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,E;;;;;;;ACvpBA;AACA;AACA,E;;;;;;ACFA;AACA;AACA,iCAAiC,QAAQ,gBAAgB,UAAU,GAAG;AACtE,CAAC,E;;;;;;;ACHD;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,qCAAqC;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAgB,cAAc;AAC9B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA,gBAAgB,cAAc;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,cAAc;AACzB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY,cAAc;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;AC1EA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB,SAAS;AAC1B;AACA,qBAAqB,OAAO;AAC5B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;;AAEA;;AAEA,qBAAqB,SAAS;AAC9B;AACA;;AAEA,wBAAwB;AACxB;;AAEA;;AAEA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A;;;AAGA;AACA;AACA;;AAEA;;AAEA,mBAAmB,SAAS;AAC5B;AACA;;AAEA,sBAAsB;AACtB;;;AAGA;;;;;;;;AC1DA;AACA;;;AAGA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,KAAK,wCAAwC,EAAE,aAAa,sBAAsB;AAClF,KAAK,oDAAoD,EAAE,aAAa,0BAA0B;;;AAGlG;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA;AACA,kCAAkC;;;AAGlC;AACA;AACA;;AAEA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,wBAAwB,aAAa;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,mCAAmC,SAAS;AAC5C;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,sBAAsB,SAAS;AAC/B;AACA;AACA,mBAAmB,qBAAqB,UAAU;;AAElD;AACA;AACA,oBAAoB,0BAA0B,gBAAgB,UAAU;;AAExE;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oBAAoB,0BAA0B,UAAU;;AAExD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB,kBAAkB;;AAE3C;AACA;AACA,kDAAkD,OAAO;;AAEzD;AACA;AACA,gBAAgB,YAAY;;AAE5B;AACA;AACA,kBAAkB,YAAY;;AAE9B;AACA;;;;;;;;ACxLA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;AC9CA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;ACnEA,iBAAiB;;AAEjB;AACA;AACA;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,2EAA2E,6EAA6E;AACxJ;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,kGAAkG;AAClG,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA,4FAA4F;AAC5F,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,gDAAgD;;AAEhD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4EAA4E;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sCAAsC;;AAEtC;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D;AAC3D;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,+CAA+C;;AAE/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oBAAoB;;AAEpB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,SAAS;AAC5B;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA,4EAA4E;;AAE5E;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA,iBAAiB,yBAAyB;AAC1C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mDAAmD;AACnD;AACA,mDAAmD,iEAAiE;AACpH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA,uCAAuC;AACvC,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gCAAgC,OAAO;AACvC;AACA;AACA;;AAEA;AACA,gCAAgC,OAAO;AACvC;AACA;AACA;AACA,C;;;;;;;AC9+BA;;;;;;;;ACAA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,E;;;;;;;ACvEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,6BAA6B,sCAAsC,sCAAsC;AACzG;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,C;;;;;;;AC/QA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,YAAY;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK,EAAE;AACP,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,C;;;;;;;ACrNA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,2BAA2B,yBAAyB,aAAa;AACjE;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;;;;;;ACzGA,6BAA6B;AAC7B,qCAAqC,gC;;;;;;ACDrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;;;;;;ACnBA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,E;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA,E;;;;;;;8CCNA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,WAAW,yBAAyB;AACpC,WAAW,OAAO;AAClB,YAAY,0CAA0C;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,YAAY,yBAAyB;AACrC;AACA;AACA;AACA;AACA,cAAc,sBAAsB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,sBAAsB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,gBAAgB,aAAa;AAC7B;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,aAAa;AACb;AACA;AACA,KAAK;AACL;AACA;AACA,gBAAgB,aAAa;AAC7B;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,gBAAgB,aAAa;AAC7B;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,SAAS;AACxB,gBAAgB,0BAA0B;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;;AAGA;;;;;;;;;AC1NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACVA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;;;;;;;ACnHA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC3BA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvBA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACNA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,qCAAqC;AAChD,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3BA;AACA;AACA;;AAEA;AACA;AACA,eAAe,sBAAsB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,QAAQ;AACzC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxDA;AACA;;AAEA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,gBAAgB,MAAM;AACtB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,OAAO;AACtB,gBAAgB,MAAM;AACtB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,OAAO;AACtB,gBAAgB,MAAM;AACtB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,OAAO;AACtB,gBAAgB,MAAM;AACtB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,OAAO;AACtB,gBAAgB,OAAO;AACvB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,OAAO;AACtB,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA,uCAAuC,iBAAiB;AACxD;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,OAAO;AACtB,gBAAgB,OAAO;AACvB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,OAAO;AACtB,gBAAgB,OAAO;AACvB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,OAAO;AACtB,gBAAgB,OAAO;AACvB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,OAAO;AACtB,gBAAgB,QAAQ;AACxB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,gBAAgB,KAAK;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;;;;;;;;ACnHA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;QCiQgBv0E,M,GAAAA,M;;AAtRhB;;;;AACA;;;;AACA;;;;AACA;;;;;;;;AAEA;AACA;AACA;;AAEA,SAASg/E,aAAT,CAAuBxmF,SAAvB,EAAkCd,KAAlC,EAAyC;AACvC;AACAA,QAAMkB,cAAN,CAAqBxB,IAArB,CAA0B,eAA1B;;AAEA,WAASkH,WAAT,CAAqB2gF,MAArB,EAA6BC,OAA7B,EAAsC;AAAA;;AACpC,QAAIxnF,MAAMyB,OAAV,EAAmB;AACjB;AACD;;AAED,QAAMgmF,WAAW,mBAAYzrF,WAAZ,EAAjB;AACAwrF,YAAQ,CAAR,IAAaC,QAAb;;AAEA,QAAMC,gBAAgB,CAAtB;AACA,QAAMC,iBAAiB,EAAvB;;AAEA;AACA,QAAM18C,SAAS,IAAI1hB,OAAOvpB,MAAM4nF,SAAb,CAAJ,CA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ACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,0CAA0C,sBAAsB,EAAE;AAClE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA;;AAEA,KAAK;AACL;AACA;;AAEA,KAAK;AACL;AACA;;AAEA,KAAK;AACL;AACA;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,CAAC;;;;;;;;ACzLD;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,oBAAoB;AACpB,0BAA0B;;AAE1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;8CC3DA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;;AAEA;AACA;;AAEA;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,YAAY;AAC9B;AACA,kBAAkB,YAAY;AAC9B;AACA,kBAAkB,YAAY;AAC9B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,2BAA2B,sCAAsC;AACjE;AACA,qEAAqE;AACrE;AACA;AACA;AACA;AACA,6BAA6B,mBAAmB,EAAE;AAClD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA,8CAA8C;AAC9C;;AAEA;AACA;;;AAGA;AACA;AACA,CAAC;AACD,iDAAqB,aAAa,EAAE;AAAA;AACpC,CAAC;AACD;AACA;;AAEA,CAAC;AACD;AACA;AACA;AACA;;;;;;;;;;8CC/GA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA,iBAAiB,yBAAyB;AAC1C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB,wCAAwC;AACjE;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,mBAAmB,EAAE;AAClD;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD,iDAAqB,aAAa,EAAE;AAAA;AACpC,CAAC;AACD;AACA;;AAEA,CAAC;AACD;AACA;AACA;AACA;;;;;;;;;;8CC9EA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,gBAAgB,aAAa,aAAa;AAC1C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA,iBAAiB,yBAAyB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB,wCAAwC;AACjE;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,mBAAmB,EAAE;AAClD;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD,iDAAqB,aAAa,EAAE;AAAA;AACpC,CAAC;AACD;AACA;;AAEA,CAAC;AACD;AACA;AACA;AACA;;;;;;;;;;8CCnFA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,gBAAgB;AAC7B,uBAAuB;AACvB,uBAAuB;AACvB,uBAAuB;AACvB,uBAAuB,mBAAmB;AAC1C;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,qBAAqB;AACpC,8BAA8B;;AAE9B;AACA;;AAEA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yBAAyB,wCAAwC;AACjE;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,mBAAmB,EAAE;AAClD;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD,iDAAqB,aAAa,EAAE;AAAA;AACpC,CAAC;AACD;AACA;;AAEA,CAAC;AACD;AACA;AACA;AACA;;;;;;;;;8CC/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB,8CAA8C;AAC9C,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC,oCAAoC;AACpC,iCAAiC;AACjC;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yBAAyB,wCAAwC;AACjE;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,mBAAmB,EAAE;AAClD;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD,iDAAqB,aAAa,EAAE;AAAA;AACpC,CAAC;AACD;AACA;;AAEA,CAAC;AACD;AACA;AACA;AACA;;;;;;;;8CCjJA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA,iBAAiB,yBAAyB;AAC1C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB,wCAAwC;AACjE;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,mBAAmB,EAAE;AAClD;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD,iDAAqB,aAAa,EAAE;AAAA;AACpC,CAAC;AACD;AACA;;AAEA,CAAC;AACD;AACA;AACA;AACA;;;;;;;;;;ACpGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;;AAEf;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,gBAAgB,iBAAiB;;AAElE;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,8BAA8B;AAC9B,0BAA0B;AAC1B,iBAAiB;AACjB,oBAAoB;AACpB;AACA,2BAA2B;AAC3B,aAAa;AACb,aAAa;AACb,eAAe;AACf;AACA,uBAAuB;AACvB;;AAEA,2BAA2B,sBAAsB;AACjD,2BAA2B,gCAAgC;AAC3D;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA,mCAAmC,qBAAqB,EAAE;AAC1D;;AAEA;AACA;AACA,2BAA2B,sBAAsB,aAAa;;AAE9D;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,kBAAkB;;AAElC;AACA;AACA;AACA;AACA,aAAa,WAAW;AACxB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,4CAA4C,EAAE;AACzD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;AACD,iDAAqB,mBAAmB,EAAE;AAAA;AAC1C;;AAEA;AACA,CAAC;AACD;AACA;AACA;;;;;;;ACtPA,e;;;;;;;;;;;;;QCgCgB/uC,M,GAAAA,M;QAeA2I,K,GAAAA,K;QAgBA0I,I,GAAAA,I;QAcAnR,Q,GAAAA,Q;QAiBApB,U,GAAAA,U;QAmBAn/C,G,GAAAA,G;QAeA++C,S,GAAAA,S;QAwBAqT,M,GAAAA,M;QA0BAmD,O,GAAAA,O;QAiBAC,W,GAAAA,W;QAYAlV,Q,GAAAA,Q;QAkBAwU,M,GAAAA,M;QAmBA16C,K,GAAAA,K;QAqBAu6C,Y,GAAAA,Y;QAqBAe,W,GAAAA,W;QAcAnzD,G,GAAAA,G;QAUAuzD,I,GAAAA,I;QAYAwgC,G,GAAAA,G;QAgBA1+E,G,GAAAA,G;QAgBAI,Q,GAAAA,Q;QAeAg+C,W,GAAAA,W;QAWApkC,M,GAAAA,M;QAiBA3Z,c,GAAAA,c;QAiBA89C,oB,GAAAA,oB;;AA1YhB;;IAAY7rC,Q;;;;AAEZ;;;;;AAKA;;;;;AAKO,SAASm2B,MAAT,GAAkB;AACvB,MAAItoC,MAAM,IAAImS,SAAS4H,UAAb,CAAwB,CAAxB,CAAV;AACA/Z,MAAI,CAAJ,IAAS,CAAT;AACAA,MAAI,CAAJ,IAAS,CAAT;AACAA,MAAI,CAAJ,IAAS,CAAT;AACAA,MAAI,CAAJ,IAAS,CAAT;AACA,SAAOA,GAAP;AACD;;AAED;;;;;;AAzCA;;;;;;;;;;;;;;;;;;;;AA+CO,SAASixC,KAAT,CAAenxC,CAAf,EAAkB;AACvB,MAAIE,MAAM,IAAImS,SAAS4H,UAAb,CAAwB,CAAxB,CAAV;AACA/Z,MAAI,CAAJ,IAASF,EAAE,CAAF,CAAT;AACAE,MAAI,CAAJ,IAASF,EAAE,CAAF,CAAT;AACAE,MAAI,CAAJ,IAASF,EAAE,CAAF,CAAT;AACAE,MAAI,CAAJ,IAASF,EAAE,CAAF,CAAT;AACA,SAAOE,GAAP;AACD;;AAED;;;;;;;AAOO,SAAS25C,IAAT,CAAc35C,GAAd,EAAmBF,CAAnB,EAAsB;AAC3BE,MAAI,CAAJ,IAASF,EAAE,CAAF,CAAT;AACAE,MAAI,CAAJ,IAASF,EAAE,CAAF,CAAT;AACAE,MAAI,CAAJ,IAASF,EAAE,CAAF,CAAT;AACAE,MAAI,CAAJ,IAASF,EAAE,CAAF,CAAT;AACA,SAAOE,GAAP;AACD;;AAED;;;;;;AAMO,SAASwoC,QAAT,CAAkBxoC,GAAlB,EAAuB;AAC5BA,MAAI,CAAJ,IAAS,CAAT;AACAA,MAAI,CAAJ,IAAS,CAAT;AACAA,MAAI,CAAJ,IAAS,CAAT;AACAA,MAAI,CAAJ,IAAS,CAAT;AACA,SAAOA,GAAP;AACD;;AAED;;;;;;;;;AASO,SAASonC,UAAT,CAAoB8W,GAApB,EAAyBC,GAAzB,EAA8BE,GAA9B,EAAmCC,GAAnC,EAAwC;AAC7C,MAAIt+C,MAAM,IAAImS,SAAS4H,UAAb,CAAwB,CAAxB,CAAV;AACA/Z,MAAI,CAAJ,IAASk+C,GAAT;AACAl+C,MAAI,CAAJ,IAASm+C,GAAT;AACAn+C,MAAI,CAAJ,IAASq+C,GAAT;AACAr+C,MAAI,CAAJ,IAASs+C,GAAT;AACA,SAAOt+C,GAAP;AACD;;AAED;;;;;;;;;;AAUO,SAAS/X,GAAT,CAAa+X,GAAb,EAAkBk+C,GAAlB,EAAuBC,GAAvB,EAA4BE,GAA5B,EAAiCC,GAAjC,EAAsC;AAC3Ct+C,MAAI,CAAJ,IAASk+C,GAAT;AACAl+C,MAAI,CAAJ,IAASm+C,GAAT;AACAn+C,MAAI,CAAJ,IAASq+C,GAAT;AACAr+C,MAAI,CAAJ,IAASs+C,GAAT;AACA,SAAOt+C,GAAP;AACD;;AAED;;;;;;;AAOO,SAASgnC,SAAT,CAAmBhnC,GAAnB,EAAwBF,CAAxB,EAA2B;AAChC;AACA;AACA,MAAIE,QAAQF,CAAZ,EAAe;AACb,QAAIqE,KAAKrE,EAAE,CAAF,CAAT;AACAE,QAAI,CAAJ,IAASF,EAAE,CAAF,CAAT;AACAE,QAAI,CAAJ,IAASmE,EAAT;AACD,GAJD,MAIO;AACLnE,QAAI,CAAJ,IAASF,EAAE,CAAF,CAAT;AACAE,QAAI,CAAJ,IAASF,EAAE,CAAF,CAAT;AACAE,QAAI,CAAJ,IAASF,EAAE,CAAF,CAAT;AACAE,QAAI,CAAJ,IAASF,EAAE,CAAF,CAAT;AACD;;AAED,SAAOE,GAAP;AACD;;AAED;;;;;;;AAOO,SAASq6C,MAAT,CAAgBr6C,GAAhB,EAAqBF,CAArB,EAAwB;AAC7B,MAAI+gD,KAAK/gD,EAAE,CAAF,CAAT;AAAA,MAAeqE,KAAKrE,EAAE,CAAF,CAApB;AAAA,MAA0BwE,KAAKxE,EAAE,CAAF,CAA/B;AAAA,MAAqC2E,KAAK3E,EAAE,CAAF,CAA1C;;AAEA;AACA,MAAIuF,MAAMw7C,KAAKp8C,EAAL,GAAUH,KAAKH,EAAzB;;AAEA,MAAI,CAACkB,GAAL,EAAU;AACR,WAAO,IAAP;AACD;AACDA,QAAM,MAAMA,GAAZ;;AAEArF,MAAI,CAAJ,IAAUyE,KAAKY,GAAf;AACArF,MAAI,CAAJ,IAAS,CAACmE,EAAD,GAAMkB,GAAf;AACArF,MAAI,CAAJ,IAAS,CAACsE,EAAD,GAAMe,GAAf;AACArF,MAAI,CAAJ,IAAU6gD,KAAKx7C,GAAf;;AAEA,SAAOrF,GAAP;AACD;;AAED;;;;;;;AAOO,SAASw9C,OAAT,CAAiBx9C,GAAjB,EAAsBF,CAAtB,EAAyB;AAC9B;AACA,MAAI+gD,KAAK/gD,EAAE,CAAF,CAAT;AACAE,MAAI,CAAJ,IAAUF,EAAE,CAAF,CAAV;AACAE,MAAI,CAAJ,IAAS,CAACF,EAAE,CAAF,CAAV;AACAE,MAAI,CAAJ,IAAS,CAACF,EAAE,CAAF,CAAV;AACAE,MAAI,CAAJ,IAAU6gD,EAAV;;AAEA,SAAO7gD,GAAP;AACD;;AAED;;;;;;AAMO,SAASy9C,WAAT,CAAqB39C,CAArB,EAAwB;AAC7B,SAAOA,EAAE,CAAF,IAAOA,EAAE,CAAF,CAAP,GAAcA,EAAE,CAAF,IAAOA,EAAE,CAAF,CAA5B;AACD;;AAED;;;;;;;;AAQO,SAASyoC,QAAT,CAAkBvoC,GAAlB,EAAuBF,CAAvB,EAA0BC,CAA1B,EAA6B;AAClC,MAAI8gD,KAAK/gD,EAAE,CAAF,CAAT;AAAA,MAAeqE,KAAKrE,EAAE,CAAF,CAApB;AAAA,MAA0BwE,KAAKxE,EAAE,CAAF,CAA/B;AAAA,MAAqC2E,KAAK3E,EAAE,CAAF,CAA1C;AACA,MAAIqhD,KAAKphD,EAAE,CAAF,CAAT;AAAA,MAAeqE,KAAKrE,EAAE,CAAF,CAApB;AAAA,MAA0BwE,KAAKxE,EAAE,CAAF,CAA/B;AAAA,MAAqC2E,KAAK3E,EAAE,CAAF,CAA1C;AACAC,MAAI,CAAJ,IAAS6gD,KAAKM,EAAL,GAAU78C,KAAKF,EAAxB;AACApE,MAAI,CAAJ,IAASmE,KAAKg9C,EAAL,GAAU18C,KAAKL,EAAxB;AACApE,MAAI,CAAJ,IAAS6gD,KAAKt8C,EAAL,GAAUD,KAAKI,EAAxB;AACA1E,MAAI,CAAJ,IAASmE,KAAKI,EAAL,GAAUE,KAAKC,EAAxB;AACA,SAAO1E,GAAP;AACD;;AAED;;;;;;;;AAQO,SAAS+8C,MAAT,CAAgB/8C,GAAhB,EAAqBF,CAArB,EAAwB/B,GAAxB,EAA6B;AAClC,MAAI8iD,KAAK/gD,EAAE,CAAF,CAAT;AAAA,MAAeqE,KAAKrE,EAAE,CAAF,CAApB;AAAA,MAA0BwE,KAAKxE,EAAE,CAAF,CAA/B;AAAA,MAAqC2E,KAAK3E,EAAE,CAAF,CAA1C;AACA,MAAI0H,IAAIrb,KAAK4V,GAAL,CAAShE,GAAT,CAAR;AACA,MAAI8D,IAAI1V,KAAK8V,GAAL,CAASlE,GAAT,CAAR;AACAiC,MAAI,CAAJ,IAAS6gD,KAAMh/C,CAAN,GAAUyC,KAAKkD,CAAxB;AACAxH,MAAI,CAAJ,IAASmE,KAAMtC,CAAN,GAAU4C,KAAK+C,CAAxB;AACAxH,MAAI,CAAJ,IAAS6gD,KAAK,CAACr5C,CAAN,GAAUlD,KAAKzC,CAAxB;AACA7B,MAAI,CAAJ,IAASmE,KAAK,CAACqD,CAAN,GAAU/C,KAAK5C,CAAxB;AACA,SAAO7B,GAAP;AACD;;AAED;;;;;;;;AAQO,SAASqC,KAAT,CAAerC,GAAf,EAAoBF,CAApB,EAAuBvO,CAAvB,EAA0B;AAC/B,MAAIsvD,KAAK/gD,EAAE,CAAF,CAAT;AAAA,MAAeqE,KAAKrE,EAAE,CAAF,CAApB;AAAA,MAA0BwE,KAAKxE,EAAE,CAAF,CAA/B;AAAA,MAAqC2E,KAAK3E,EAAE,CAAF,CAA1C;AACA,MAAI0+E,KAAKjtF,EAAE,CAAF,CAAT;AAAA,MAAe+L,KAAK/L,EAAE,CAAF,CAApB;AACAyO,MAAI,CAAJ,IAAS6gD,KAAK29B,EAAd;AACAx+E,MAAI,CAAJ,IAASmE,KAAKq6E,EAAd;AACAx+E,MAAI,CAAJ,IAASsE,KAAKhH,EAAd;AACA0C,MAAI,CAAJ,IAASyE,KAAKnH,EAAd;AACA,SAAO0C,GAAP;AACD;;AAED;;;;;;;;;;;AAWO,SAAS48C,YAAT,CAAsB58C,GAAtB,EAA2BjC,GAA3B,EAAgC;AACrC,MAAIyJ,IAAIrb,KAAK4V,GAAL,CAAShE,GAAT,CAAR;AACA,MAAI8D,IAAI1V,KAAK8V,GAAL,CAASlE,GAAT,CAAR;AACAiC,MAAI,CAAJ,IAAS6B,CAAT;AACA7B,MAAI,CAAJ,IAASwH,CAAT;AACAxH,MAAI,CAAJ,IAAS,CAACwH,CAAV;AACAxH,MAAI,CAAJ,IAAS6B,CAAT;AACA,SAAO7B,GAAP;AACD;;AAED;;;;;;;;;;;AAWO,SAAS29C,WAAT,CAAqB39C,GAArB,EAA0BzO,CAA1B,EAA6B;AAClCyO,MAAI,CAAJ,IAASzO,EAAE,CAAF,CAAT;AACAyO,MAAI,CAAJ,IAAS,CAAT;AACAA,MAAI,CAAJ,IAAS,CAAT;AACAA,MAAI,CAAJ,IAASzO,EAAE,CAAF,CAAT;AACA,SAAOyO,GAAP;AACD;;AAED;;;;;;AAMO,SAASxV,GAAT,CAAasV,CAAb,EAAgB;AACrB,SAAO,UAAUA,EAAE,CAAF,CAAV,GAAiB,IAAjB,GAAwBA,EAAE,CAAF,CAAxB,GAA+B,IAA/B,GAAsCA,EAAE,CAAF,CAAtC,GAA6C,IAA7C,GAAoDA,EAAE,CAAF,CAApD,GAA2D,GAAlE;AACD;;AAED;;;;;;AAMO,SAASi+C,IAAT,CAAcj+C,CAAd,EAAiB;AACtB,SAAO3T,KAAK6U,IAAL,CAAU7U,KAAKy0D,GAAL,CAAS9gD,EAAE,CAAF,CAAT,EAAe,CAAf,IAAoB3T,KAAKy0D,GAAL,CAAS9gD,EAAE,CAAF,CAAT,EAAe,CAAf,CAApB,GAAwC3T,KAAKy0D,GAAL,CAAS9gD,EAAE,CAAF,CAAT,EAAe,CAAf,CAAxC,GAA4D3T,KAAKy0D,GAAL,CAAS9gD,EAAE,CAAF,CAAT,EAAe,CAAf,CAAtE,CAAP;AACD;;AAED;;;;;;;;AAQO,SAASy+E,GAAT,CAAajwE,CAAb,EAAgBmwE,CAAhB,EAAmBC,CAAnB,EAAsB5+E,CAAtB,EAAyB;AAC9BwO,IAAE,CAAF,IAAOxO,EAAE,CAAF,IAAKA,EAAE,CAAF,CAAZ;AACA4+E,IAAE,CAAF,IAAO5+E,EAAE,CAAF,CAAP;AACA4+E,IAAE,CAAF,IAAO5+E,EAAE,CAAF,CAAP;AACA4+E,IAAE,CAAF,IAAO5+E,EAAE,CAAF,IAAOwO,EAAE,CAAF,IAAOowE,EAAE,CAAF,CAArB;AACA,SAAO,CAACpwE,CAAD,EAAImwE,CAAJ,EAAOC,CAAP,CAAP;AACD;;AAED;;;;;;;;AAQO,SAAS7+E,GAAT,CAAaG,GAAb,EAAkBF,CAAlB,EAAqBC,CAArB,EAAwB;AAC7BC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,EAAE,CAAF,CAAhB;AACAC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,EAAE,CAAF,CAAhB;AACAC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,EAAE,CAAF,CAAhB;AACAC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,EAAE,CAAF,CAAhB;AACA,SAAOC,GAAP;AACD;;AAED;;;;;;;;AAQO,SAASC,QAAT,CAAkBD,GAAlB,EAAuBF,CAAvB,EAA0BC,CAA1B,EAA6B;AAClCC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,EAAE,CAAF,CAAhB;AACAC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,EAAE,CAAF,CAAhB;AACAC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,EAAE,CAAF,CAAhB;AACAC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,EAAE,CAAF,CAAhB;AACA,SAAOC,GAAP;AACD;;AAED;;;;;;;AAOO,SAASi+C,WAAT,CAAqBn+C,CAArB,EAAwBC,CAAxB,EAA2B;AAChC,SAAOD,EAAE,CAAF,MAASC,EAAE,CAAF,CAAT,IAAiBD,EAAE,CAAF,MAASC,EAAE,CAAF,CAA1B,IAAkCD,EAAE,CAAF,MAASC,EAAE,CAAF,CAA3C,IAAmDD,EAAE,CAAF,MAASC,EAAE,CAAF,CAAnE;AACD;;AAED;;;;;;;AAOO,SAAS8Z,MAAT,CAAgB/Z,CAAhB,EAAmBC,CAAnB,EAAsB;AAC3B,MAAI8gD,KAAK/gD,EAAE,CAAF,CAAT;AAAA,MAAeqE,KAAKrE,EAAE,CAAF,CAApB;AAAA,MAA0BwE,KAAKxE,EAAE,CAAF,CAA/B;AAAA,MAAqC2E,KAAK3E,EAAE,CAAF,CAA1C;AACA,MAAIqhD,KAAKphD,EAAE,CAAF,CAAT;AAAA,MAAeqE,KAAKrE,EAAE,CAAF,CAApB;AAAA,MAA0BwE,KAAKxE,EAAE,CAAF,CAA/B;AAAA,MAAqC2E,KAAK3E,EAAE,CAAF,CAA1C;AACA,SAAQ5T,KAAK4U,GAAL,CAAS8/C,KAAKM,EAAd,KAAqBhvC,SAAS2H,OAAT,GAAiB3tB,KAAKgS,GAAL,CAAS,GAAT,EAAchS,KAAK4U,GAAL,CAAS8/C,EAAT,CAAd,EAA4B10D,KAAK4U,GAAL,CAASogD,EAAT,CAA5B,CAAtC,IACAh1D,KAAK4U,GAAL,CAASoD,KAAKC,EAAd,KAAqB+N,SAAS2H,OAAT,GAAiB3tB,KAAKgS,GAAL,CAAS,GAAT,EAAchS,KAAK4U,GAAL,CAASoD,EAAT,CAAd,EAA4BhY,KAAK4U,GAAL,CAASqD,EAAT,CAA5B,CADtC,IAEAjY,KAAK4U,GAAL,CAASuD,KAAKC,EAAd,KAAqB4N,SAAS2H,OAAT,GAAiB3tB,KAAKgS,GAAL,CAAS,GAAT,EAAchS,KAAK4U,GAAL,CAASuD,EAAT,CAAd,EAA4BnY,KAAK4U,GAAL,CAASwD,EAAT,CAA5B,CAFtC,IAGApY,KAAK4U,GAAL,CAAS0D,KAAKC,EAAd,KAAqByN,SAAS2H,OAAT,GAAiB3tB,KAAKgS,GAAL,CAAS,GAAT,EAAchS,KAAK4U,GAAL,CAAS0D,EAAT,CAAd,EAA4BtY,KAAK4U,GAAL,CAAS2D,EAAT,CAA5B,CAH9C;AAID;;AAED;;;;;;;;AAQO,SAASxE,cAAT,CAAwBF,GAAxB,EAA6BF,CAA7B,EAAgCC,CAAhC,EAAmC;AACxCC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,CAAhB;AACAC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,CAAhB;AACAC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,CAAhB;AACAC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,CAAhB;AACA,SAAOC,GAAP;AACD;;AAED;;;;;;;;;AASO,SAASg+C,oBAAT,CAA8Bh+C,GAA9B,EAAmCF,CAAnC,EAAsCC,CAAtC,EAAyCsC,KAAzC,EAAgD;AACrDrC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAQC,EAAE,CAAF,IAAOsC,KAAxB;AACArC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAQC,EAAE,CAAF,IAAOsC,KAAxB;AACArC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAQC,EAAE,CAAF,IAAOsC,KAAxB;AACArC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAQC,EAAE,CAAF,IAAOsC,KAAxB;AACA,SAAOrC,GAAP;AACD;;AAED;;;;AAIO,IAAMyhD,oBAAMlZ,QAAZ;;AAEP;;;;AAIO,IAAMmZ,oBAAMzhD,QAAZ,C;;;;;;;;;;;;;QClYSqoC,M,GAAAA,M;QAiBA2I,K,GAAAA,K;QAkBA0I,I,GAAAA,I;QAgBAnR,Q,GAAAA,Q;QAqBApB,U,GAAAA,U;QAuBAn/C,G,GAAAA,G;QAiBAoyD,M,GAAAA,M;QAyBAoD,W,GAAAA,W;QAYAlV,Q,GAAAA,Q;QAoBAwU,M,GAAAA,M;QAqBA16C,K,GAAAA,K;QAoBAuoB,S,GAAAA,S;QAuBAgyB,Y,GAAAA,Y;QAsBAe,W,GAAAA,W;QAqBAD,e,GAAAA,e;QAgBAlzD,G,GAAAA,G;QAWAuzD,I,GAAAA,I;QAYAl+C,G,GAAAA,G;QAkBAI,Q,GAAAA,Q;QAkBAC,c,GAAAA,c;QAmBA89C,oB,GAAAA,oB;QAiBAC,W,GAAAA,W;QAWApkC,M,GAAAA,M;;AAxahB;;IAAY1H,Q;;;;AAEZ;;;;;;;;;;;;;;;;;;;AAmBA;;;;;AAKO,SAASm2B,MAAT,GAAkB;AACvB,MAAItoC,MAAM,IAAImS,SAAS4H,UAAb,CAAwB,CAAxB,CAAV;AACA/Z,MAAI,CAAJ,IAAS,CAAT;AACAA,MAAI,CAAJ,IAAS,CAAT;AACAA,MAAI,CAAJ,IAAS,CAAT;AACAA,MAAI,CAAJ,IAAS,CAAT;AACAA,MAAI,CAAJ,IAAS,CAAT;AACAA,MAAI,CAAJ,IAAS,CAAT;AACA,SAAOA,GAAP;AACD;;AAED;;;;;;AAzDA;;;;;;;;;;;;;;;;;;;;AA+DO,SAASixC,KAAT,CAAenxC,CAAf,EAAkB;AACvB,MAAIE,MAAM,IAAImS,SAAS4H,UAAb,CAAwB,CAAxB,CAAV;AACA/Z,MAAI,CAAJ,IAASF,EAAE,CAAF,CAAT;AACAE,MAAI,CAAJ,IAASF,EAAE,CAAF,CAAT;AACAE,MAAI,CAAJ,IAASF,EAAE,CAAF,CAAT;AACAE,MAAI,CAAJ,IAASF,EAAE,CAAF,CAAT;AACAE,MAAI,CAAJ,IAASF,EAAE,CAAF,CAAT;AACAE,MAAI,CAAJ,IAASF,EAAE,CAAF,CAAT;AACA,SAAOE,GAAP;AACD;;AAED;;;;;;;AAOO,SAAS25C,IAAT,CAAc35C,GAAd,EAAmBF,CAAnB,EAAsB;AAC3BE,MAAI,CAAJ,IAASF,EAAE,CAAF,CAAT;AACAE,MAAI,CAAJ,IAASF,EAAE,CAAF,CAAT;AACAE,MAAI,CAAJ,IAASF,EAAE,CAAF,CAAT;AACAE,MAAI,CAAJ,IAASF,EAAE,CAAF,CAAT;AACAE,MAAI,CAAJ,IAASF,EAAE,CAAF,CAAT;AACAE,MAAI,CAAJ,IAASF,EAAE,CAAF,CAAT;AACA,SAAOE,GAAP;AACD;;AAED;;;;;;AAMO,SAASwoC,QAAT,CAAkBxoC,GAAlB,EAAuB;AAC5BA,MAAI,CAAJ,IAAS,CAAT;AACAA,MAAI,CAAJ,IAAS,CAAT;AACAA,MAAI,CAAJ,IAAS,CAAT;AACAA,MAAI,CAAJ,IAAS,CAAT;AACAA,MAAI,CAAJ,IAAS,CAAT;AACAA,MAAI,CAAJ,IAAS,CAAT;AACA,SAAOA,GAAP;AACD;;AAED;;;;;;;;;;;AAWO,SAASonC,UAAT,CAAoBtnC,CAApB,EAAuBC,CAAvB,EAA0B8B,CAA1B,EAA6BoJ,CAA7B,EAAgC0zE,EAAhC,EAAoCC,EAApC,EAAwC;AAC7C,MAAI5+E,MAAM,IAAImS,SAAS4H,UAAb,CAAwB,CAAxB,CAAV;AACA/Z,MAAI,CAAJ,IAASF,CAAT;AACAE,MAAI,CAAJ,IAASD,CAAT;AACAC,MAAI,CAAJ,IAAS6B,CAAT;AACA7B,MAAI,CAAJ,IAASiL,CAAT;AACAjL,MAAI,CAAJ,IAAS2+E,EAAT;AACA3+E,MAAI,CAAJ,IAAS4+E,EAAT;AACA,SAAO5+E,GAAP;AACD;;AAED;;;;;;;;;;;;AAYO,SAAS/X,GAAT,CAAa+X,GAAb,EAAkBF,CAAlB,EAAqBC,CAArB,EAAwB8B,CAAxB,EAA2BoJ,CAA3B,EAA8B0zE,EAA9B,EAAkCC,EAAlC,EAAsC;AAC3C5+E,MAAI,CAAJ,IAASF,CAAT;AACAE,MAAI,CAAJ,IAASD,CAAT;AACAC,MAAI,CAAJ,IAAS6B,CAAT;AACA7B,MAAI,CAAJ,IAASiL,CAAT;AACAjL,MAAI,CAAJ,IAAS2+E,EAAT;AACA3+E,MAAI,CAAJ,IAAS4+E,EAAT;AACA,SAAO5+E,GAAP;AACD;;AAED;;;;;;;AAOO,SAASq6C,MAAT,CAAgBr6C,GAAhB,EAAqBF,CAArB,EAAwB;AAC7B,MAAI6I,KAAK7I,EAAE,CAAF,CAAT;AAAA,MAAe++E,KAAK/+E,EAAE,CAAF,CAApB;AAAA,MAA0Bg/E,KAAKh/E,EAAE,CAAF,CAA/B;AAAA,MAAqCi/E,KAAKj/E,EAAE,CAAF,CAA1C;AACA,MAAIk/E,MAAMl/E,EAAE,CAAF,CAAV;AAAA,MAAgBm/E,MAAMn/E,EAAE,CAAF,CAAtB;;AAEA,MAAIuF,MAAMsD,KAAKo2E,EAAL,GAAUF,KAAKC,EAAzB;AACA,MAAG,CAACz5E,GAAJ,EAAQ;AACN,WAAO,IAAP;AACD;AACDA,QAAM,MAAMA,GAAZ;;AAEArF,MAAI,CAAJ,IAAS++E,KAAK15E,GAAd;AACArF,MAAI,CAAJ,IAAS,CAAC6+E,EAAD,GAAMx5E,GAAf;AACArF,MAAI,CAAJ,IAAS,CAAC8+E,EAAD,GAAMz5E,GAAf;AACArF,MAAI,CAAJ,IAAS2I,KAAKtD,GAAd;AACArF,MAAI,CAAJ,IAAS,CAAC8+E,KAAKG,GAAL,GAAWF,KAAKC,GAAjB,IAAwB35E,GAAjC;AACArF,MAAI,CAAJ,IAAS,CAAC6+E,KAAKG,GAAL,GAAWr2E,KAAKs2E,GAAjB,IAAwB55E,GAAjC;AACA,SAAOrF,GAAP;AACD;;AAED;;;;;;AAMO,SAASy9C,WAAT,CAAqB39C,CAArB,EAAwB;AAC7B,SAAOA,EAAE,CAAF,IAAOA,EAAE,CAAF,CAAP,GAAcA,EAAE,CAAF,IAAOA,EAAE,CAAF,CAA5B;AACD;;AAED;;;;;;;;AAQO,SAASyoC,QAAT,CAAkBvoC,GAAlB,EAAuBF,CAAvB,EAA0BC,CAA1B,EAA6B;AAClC,MAAI8gD,KAAK/gD,EAAE,CAAF,CAAT;AAAA,MAAeqE,KAAKrE,EAAE,CAAF,CAApB;AAAA,MAA0BwE,KAAKxE,EAAE,CAAF,CAA/B;AAAA,MAAqC2E,KAAK3E,EAAE,CAAF,CAA1C;AAAA,MAAgDghD,KAAKhhD,EAAE,CAAF,CAArD;AAAA,MAA2DihD,KAAKjhD,EAAE,CAAF,CAAhE;AACA,MAAIqhD,KAAKphD,EAAE,CAAF,CAAT;AAAA,MAAeqE,KAAKrE,EAAE,CAAF,CAApB;AAAA,MAA0BwE,KAAKxE,EAAE,CAAF,CAA/B;AAAA,MAAqC2E,KAAK3E,EAAE,CAAF,CAA1C;AAAA,MAAgDqhD,KAAKrhD,EAAE,CAAF,CAArD;AAAA,MAA2DshD,KAAKthD,EAAE,CAAF,CAAhE;AACAC,MAAI,CAAJ,IAAS6gD,KAAKM,EAAL,GAAU78C,KAAKF,EAAxB;AACApE,MAAI,CAAJ,IAASmE,KAAKg9C,EAAL,GAAU18C,KAAKL,EAAxB;AACApE,MAAI,CAAJ,IAAS6gD,KAAKt8C,EAAL,GAAUD,KAAKI,EAAxB;AACA1E,MAAI,CAAJ,IAASmE,KAAKI,EAAL,GAAUE,KAAKC,EAAxB;AACA1E,MAAI,CAAJ,IAAS6gD,KAAKO,EAAL,GAAU98C,KAAK+8C,EAAf,GAAoBP,EAA7B;AACA9gD,MAAI,CAAJ,IAASmE,KAAKi9C,EAAL,GAAU38C,KAAK48C,EAAf,GAAoBN,EAA7B;AACA,SAAO/gD,GAAP;AACD;;AAED;;;;;;;;AAQO,SAAS+8C,MAAT,CAAgB/8C,GAAhB,EAAqBF,CAArB,EAAwB/B,GAAxB,EAA6B;AAClC,MAAI8iD,KAAK/gD,EAAE,CAAF,CAAT;AAAA,MAAeqE,KAAKrE,EAAE,CAAF,CAApB;AAAA,MAA0BwE,KAAKxE,EAAE,CAAF,CAA/B;AAAA,MAAqC2E,KAAK3E,EAAE,CAAF,CAA1C;AAAA,MAAgDghD,KAAKhhD,EAAE,CAAF,CAArD;AAAA,MAA2DihD,KAAKjhD,EAAE,CAAF,CAAhE;AACA,MAAI0H,IAAIrb,KAAK4V,GAAL,CAAShE,GAAT,CAAR;AACA,MAAI8D,IAAI1V,KAAK8V,GAAL,CAASlE,GAAT,CAAR;AACAiC,MAAI,CAAJ,IAAS6gD,KAAMh/C,CAAN,GAAUyC,KAAKkD,CAAxB;AACAxH,MAAI,CAAJ,IAASmE,KAAMtC,CAAN,GAAU4C,KAAK+C,CAAxB;AACAxH,MAAI,CAAJ,IAAS6gD,KAAK,CAACr5C,CAAN,GAAUlD,KAAKzC,CAAxB;AACA7B,MAAI,CAAJ,IAASmE,KAAK,CAACqD,CAAN,GAAU/C,KAAK5C,CAAxB;AACA7B,MAAI,CAAJ,IAAS8gD,EAAT;AACA9gD,MAAI,CAAJ,IAAS+gD,EAAT;AACA,SAAO/gD,GAAP;AACD;;AAED;;;;;;;;AAQO,SAASqC,KAAT,CAAerC,GAAf,EAAoBF,CAApB,EAAuBvO,CAAvB,EAA0B;AAC/B,MAAIsvD,KAAK/gD,EAAE,CAAF,CAAT;AAAA,MAAeqE,KAAKrE,EAAE,CAAF,CAApB;AAAA,MAA0BwE,KAAKxE,EAAE,CAAF,CAA/B;AAAA,MAAqC2E,KAAK3E,EAAE,CAAF,CAA1C;AAAA,MAAgDghD,KAAKhhD,EAAE,CAAF,CAArD;AAAA,MAA2DihD,KAAKjhD,EAAE,CAAF,CAAhE;AACA,MAAI0+E,KAAKjtF,EAAE,CAAF,CAAT;AAAA,MAAe+L,KAAK/L,EAAE,CAAF,CAApB;AACAyO,MAAI,CAAJ,IAAS6gD,KAAK29B,EAAd;AACAx+E,MAAI,CAAJ,IAASmE,KAAKq6E,EAAd;AACAx+E,MAAI,CAAJ,IAASsE,KAAKhH,EAAd;AACA0C,MAAI,CAAJ,IAASyE,KAAKnH,EAAd;AACA0C,MAAI,CAAJ,IAAS8gD,EAAT;AACA9gD,MAAI,CAAJ,IAAS+gD,EAAT;AACA,SAAO/gD,GAAP;AACD;;AAED;;;;;;;;AAQO,SAAS4qB,SAAT,CAAmB5qB,GAAnB,EAAwBF,CAAxB,EAA2BvO,CAA3B,EAA8B;AACnC,MAAIsvD,KAAK/gD,EAAE,CAAF,CAAT;AAAA,MAAeqE,KAAKrE,EAAE,CAAF,CAApB;AAAA,MAA0BwE,KAAKxE,EAAE,CAAF,CAA/B;AAAA,MAAqC2E,KAAK3E,EAAE,CAAF,CAA1C;AAAA,MAAgDghD,KAAKhhD,EAAE,CAAF,CAArD;AAAA,MAA2DihD,KAAKjhD,EAAE,CAAF,CAAhE;AACA,MAAI0+E,KAAKjtF,EAAE,CAAF,CAAT;AAAA,MAAe+L,KAAK/L,EAAE,CAAF,CAApB;AACAyO,MAAI,CAAJ,IAAS6gD,EAAT;AACA7gD,MAAI,CAAJ,IAASmE,EAAT;AACAnE,MAAI,CAAJ,IAASsE,EAAT;AACAtE,MAAI,CAAJ,IAASyE,EAAT;AACAzE,MAAI,CAAJ,IAAS6gD,KAAK29B,EAAL,GAAUl6E,KAAKhH,EAAf,GAAoBwjD,EAA7B;AACA9gD,MAAI,CAAJ,IAASmE,KAAKq6E,EAAL,GAAU/5E,KAAKnH,EAAf,GAAoByjD,EAA7B;AACA,SAAO/gD,GAAP;AACD;;AAED;;;;;;;;;;;AAWO,SAAS48C,YAAT,CAAsB58C,GAAtB,EAA2BjC,GAA3B,EAAgC;AACrC,MAAIyJ,IAAIrb,KAAK4V,GAAL,CAAShE,GAAT,CAAR;AAAA,MAAuB8D,IAAI1V,KAAK8V,GAAL,CAASlE,GAAT,CAA3B;AACAiC,MAAI,CAAJ,IAAS6B,CAAT;AACA7B,MAAI,CAAJ,IAASwH,CAAT;AACAxH,MAAI,CAAJ,IAAS,CAACwH,CAAV;AACAxH,MAAI,CAAJ,IAAS6B,CAAT;AACA7B,MAAI,CAAJ,IAAS,CAAT;AACAA,MAAI,CAAJ,IAAS,CAAT;AACA,SAAOA,GAAP;AACD;;AAED;;;;;;;;;;;AAWO,SAAS29C,WAAT,CAAqB39C,GAArB,EAA0BzO,CAA1B,EAA6B;AAClCyO,MAAI,CAAJ,IAASzO,EAAE,CAAF,CAAT;AACAyO,MAAI,CAAJ,IAAS,CAAT;AACAA,MAAI,CAAJ,IAAS,CAAT;AACAA,MAAI,CAAJ,IAASzO,EAAE,CAAF,CAAT;AACAyO,MAAI,CAAJ,IAAS,CAAT;AACAA,MAAI,CAAJ,IAAS,CAAT;AACA,SAAOA,GAAP;AACD;;AAED;;;;;;;;;;;AAWO,SAAS09C,eAAT,CAAyB19C,GAAzB,EAA8BzO,CAA9B,EAAiC;AACtCyO,MAAI,CAAJ,IAAS,CAAT;AACAA,MAAI,CAAJ,IAAS,CAAT;AACAA,MAAI,CAAJ,IAAS,CAAT;AACAA,MAAI,CAAJ,IAAS,CAAT;AACAA,MAAI,CAAJ,IAASzO,EAAE,CAAF,CAAT;AACAyO,MAAI,CAAJ,IAASzO,EAAE,CAAF,CAAT;AACA,SAAOyO,GAAP;AACD;;AAED;;;;;;AAMO,SAASxV,GAAT,CAAasV,CAAb,EAAgB;AACrB,SAAO,WAAWA,EAAE,CAAF,CAAX,GAAkB,IAAlB,GAAyBA,EAAE,CAAF,CAAzB,GAAgC,IAAhC,GAAuCA,EAAE,CAAF,CAAvC,GAA8C,IAA9C,GACCA,EAAE,CAAF,CADD,GACQ,IADR,GACeA,EAAE,CAAF,CADf,GACsB,IADtB,GAC6BA,EAAE,CAAF,CAD7B,GACoC,GAD3C;AAED;;AAED;;;;;;AAMO,SAASi+C,IAAT,CAAcj+C,CAAd,EAAiB;AACtB,SAAO3T,KAAK6U,IAAL,CAAU7U,KAAKy0D,GAAL,CAAS9gD,EAAE,CAAF,CAAT,EAAe,CAAf,IAAoB3T,KAAKy0D,GAAL,CAAS9gD,EAAE,CAAF,CAAT,EAAe,CAAf,CAApB,GAAwC3T,KAAKy0D,GAAL,CAAS9gD,EAAE,CAAF,CAAT,EAAe,CAAf,CAAxC,GAA4D3T,KAAKy0D,GAAL,CAAS9gD,EAAE,CAAF,CAAT,EAAe,CAAf,CAA5D,GAAgF3T,KAAKy0D,GAAL,CAAS9gD,EAAE,CAAF,CAAT,EAAe,CAAf,CAAhF,GAAoG3T,KAAKy0D,GAAL,CAAS9gD,EAAE,CAAF,CAAT,EAAe,CAAf,CAApG,GAAwH,CAAlI,CAAP;AACD;;AAED;;;;;;;;AAQO,SAASD,GAAT,CAAaG,GAAb,EAAkBF,CAAlB,EAAqBC,CAArB,EAAwB;AAC7BC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,EAAE,CAAF,CAAhB;AACAC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,EAAE,CAAF,CAAhB;AACAC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,EAAE,CAAF,CAAhB;AACAC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,EAAE,CAAF,CAAhB;AACAC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,EAAE,CAAF,CAAhB;AACAC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,EAAE,CAAF,CAAhB;AACA,SAAOC,GAAP;AACD;;AAED;;;;;;;;AAQO,SAASC,QAAT,CAAkBD,GAAlB,EAAuBF,CAAvB,EAA0BC,CAA1B,EAA6B;AAClCC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,EAAE,CAAF,CAAhB;AACAC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,EAAE,CAAF,CAAhB;AACAC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,EAAE,CAAF,CAAhB;AACAC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,EAAE,CAAF,CAAhB;AACAC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,EAAE,CAAF,CAAhB;AACAC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,EAAE,CAAF,CAAhB;AACA,SAAOC,GAAP;AACD;;AAED;;;;;;;;AAQO,SAASE,cAAT,CAAwBF,GAAxB,EAA6BF,CAA7B,EAAgCC,CAAhC,EAAmC;AACxCC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,CAAhB;AACAC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,CAAhB;AACAC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,CAAhB;AACAC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,CAAhB;AACAC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,CAAhB;AACAC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,CAAhB;AACA,SAAOC,GAAP;AACD;;AAED;;;;;;;;;AASO,SAASg+C,oBAAT,CAA8Bh+C,GAA9B,EAAmCF,CAAnC,EAAsCC,CAAtC,EAAyCsC,KAAzC,EAAgD;AACrDrC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAQC,EAAE,CAAF,IAAOsC,KAAxB;AACArC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAQC,EAAE,CAAF,IAAOsC,KAAxB;AACArC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAQC,EAAE,CAAF,IAAOsC,KAAxB;AACArC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAQC,EAAE,CAAF,IAAOsC,KAAxB;AACArC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAQC,EAAE,CAAF,IAAOsC,KAAxB;AACArC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAQC,EAAE,CAAF,IAAOsC,KAAxB;AACA,SAAOrC,GAAP;AACD;;AAED;;;;;;;AAOO,SAASi+C,WAAT,CAAqBn+C,CAArB,EAAwBC,CAAxB,EAA2B;AAChC,SAAOD,EAAE,CAAF,MAASC,EAAE,CAAF,CAAT,IAAiBD,EAAE,CAAF,MAASC,EAAE,CAAF,CAA1B,IAAkCD,EAAE,CAAF,MAASC,EAAE,CAAF,CAA3C,IAAmDD,EAAE,CAAF,MAASC,EAAE,CAAF,CAA5D,IAAoED,EAAE,CAAF,MAASC,EAAE,CAAF,CAA7E,IAAqFD,EAAE,CAAF,MAASC,EAAE,CAAF,CAArG;AACD;;AAED;;;;;;;AAOO,SAAS8Z,MAAT,CAAgB/Z,CAAhB,EAAmBC,CAAnB,EAAsB;AAC3B,MAAI8gD,KAAK/gD,EAAE,CAAF,CAAT;AAAA,MAAeqE,KAAKrE,EAAE,CAAF,CAApB;AAAA,MAA0BwE,KAAKxE,EAAE,CAAF,CAA/B;AAAA,MAAqC2E,KAAK3E,EAAE,CAAF,CAA1C;AAAA,MAAgDghD,KAAKhhD,EAAE,CAAF,CAArD;AAAA,MAA2DihD,KAAKjhD,EAAE,CAAF,CAAhE;AACA,MAAIqhD,KAAKphD,EAAE,CAAF,CAAT;AAAA,MAAeqE,KAAKrE,EAAE,CAAF,CAApB;AAAA,MAA0BwE,KAAKxE,EAAE,CAAF,CAA/B;AAAA,MAAqC2E,KAAK3E,EAAE,CAAF,CAA1C;AAAA,MAAgDqhD,KAAKrhD,EAAE,CAAF,CAArD;AAAA,MAA2DshD,KAAKthD,EAAE,CAAF,CAAhE;AACA,SAAQ5T,KAAK4U,GAAL,CAAS8/C,KAAKM,EAAd,KAAqBhvC,SAAS2H,OAAT,GAAiB3tB,KAAKgS,GAAL,CAAS,GAAT,EAAchS,KAAK4U,GAAL,CAAS8/C,EAAT,CAAd,EAA4B10D,KAAK4U,GAAL,CAASogD,EAAT,CAA5B,CAAtC,IACAh1D,KAAK4U,GAAL,CAASoD,KAAKC,EAAd,KAAqB+N,SAAS2H,OAAT,GAAiB3tB,KAAKgS,GAAL,CAAS,GAAT,EAAchS,KAAK4U,GAAL,CAASoD,EAAT,CAAd,EAA4BhY,KAAK4U,GAAL,CAASqD,EAAT,CAA5B,CADtC,IAEAjY,KAAK4U,GAAL,CAASuD,KAAKC,EAAd,KAAqB4N,SAAS2H,OAAT,GAAiB3tB,KAAKgS,GAAL,CAAS,GAAT,EAAchS,KAAK4U,GAAL,CAASuD,EAAT,CAAd,EAA4BnY,KAAK4U,GAAL,CAASwD,EAAT,CAA5B,CAFtC,IAGApY,KAAK4U,GAAL,CAAS0D,KAAKC,EAAd,KAAqByN,SAAS2H,OAAT,GAAiB3tB,KAAKgS,GAAL,CAAS,GAAT,EAAchS,KAAK4U,GAAL,CAAS0D,EAAT,CAAd,EAA4BtY,KAAK4U,GAAL,CAAS2D,EAAT,CAA5B,CAHtC,IAIAvY,KAAK4U,GAAL,CAAS+/C,KAAKM,EAAd,KAAqBjvC,SAAS2H,OAAT,GAAiB3tB,KAAKgS,GAAL,CAAS,GAAT,EAAchS,KAAK4U,GAAL,CAAS+/C,EAAT,CAAd,EAA4B30D,KAAK4U,GAAL,CAASqgD,EAAT,CAA5B,CAJtC,IAKAj1D,KAAK4U,GAAL,CAASggD,KAAKM,EAAd,KAAqBlvC,SAAS2H,OAAT,GAAiB3tB,KAAKgS,GAAL,CAAS,GAAT,EAAchS,KAAK4U,GAAL,CAASggD,EAAT,CAAd,EAA4B50D,KAAK4U,GAAL,CAASsgD,EAAT,CAA5B,CAL9C;AAMD;;AAED;;;;AAIO,IAAMI,oBAAMlZ,QAAZ;;AAEP;;;;AAIO,IAAMmZ,oBAAMzhD,QAAZ,C;;;;;;;;;;;;;QC1aSqoC,M,GAAAA,M;QAoBA2I,K,GAAAA,K;QA2BA7J,U,GAAAA,U;QA0BA83C,6B,GAAAA,6B;QAyBAp9B,uB,GAAAA,uB;QA2BApE,e,GAAAA,e;QAoBAd,Y,GAAAA,Y;QAoBAW,Q,GAAAA,Q;QAkBA5D,I,GAAAA,I;QAkBAnR,Q,GAAAA,Q;QA2BAvgD,G,GAAAA,G;QA2BAk3F,O,GAAAA,O;QA0BAC,O,GAAAA,O;QAcAp9B,c,GAAAA,c;QAuBAp3B,S,GAAAA,S;QA+BAoyB,O,GAAAA,O;QAiCAC,O,GAAAA,O;QAiCAC,O,GAAAA,O;QAiCAmiC,kB,GAAAA,kB;QAiCAC,mB,GAAAA,mB;QAkCAC,gB,GAAAA,gB;QA4CA1/E,G,GAAAA,G;QAoBA0oC,Q,GAAAA,Q;QA2CAlmC,K,GAAAA,K;QAgCAwmD,I,GAAAA,I;QAuBAxO,M,GAAAA,M;QAqBAyN,S,GAAAA,S;QAkDA5mD,S,GAAAA,S;QAsBA1W,G,GAAAA,G;QAYAyzD,W,GAAAA,W;QAYApkC,M,GAAAA,M;;AA5yBhB;;IAAY1H,Q;;AACZ;;IAAY9H,I;;AACZ;;IAAYkI,I;;;;AAEZ;;;;;;;;AASA;;;;;AAKO,SAAS+1B,MAAT,GAAkB;AACvB,MAAIk3C,KAAK,IAAIrtE,SAAS4H,UAAb,CAAwB,CAAxB,CAAT;AACAylE,KAAG,CAAH,IAAQ,CAAR;AACAA,KAAG,CAAH,IAAQ,CAAR;AACAA,KAAG,CAAH,IAAQ,CAAR;AACAA,KAAG,CAAH,IAAQ,CAAR;AACAA,KAAG,CAAH,IAAQ,CAAR;AACAA,KAAG,CAAH,IAAQ,CAAR;AACAA,KAAG,CAAH,IAAQ,CAAR;AACAA,KAAG,CAAH,IAAQ,CAAR;AACA,SAAOA,EAAP;AACD;;AAED;;;;;;;AApDA;;;;;;;;;;;;;;;;;;;;AA2DO,SAASvuC,KAAT,CAAenxC,CAAf,EAAkB;AACvB,MAAI0/E,KAAK,IAAIrtE,SAAS4H,UAAb,CAAwB,CAAxB,CAAT;AACAylE,KAAG,CAAH,IAAQ1/E,EAAE,CAAF,CAAR;AACA0/E,KAAG,CAAH,IAAQ1/E,EAAE,CAAF,CAAR;AACA0/E,KAAG,CAAH,IAAQ1/E,EAAE,CAAF,CAAR;AACA0/E,KAAG,CAAH,IAAQ1/E,EAAE,CAAF,CAAR;AACA0/E,KAAG,CAAH,IAAQ1/E,EAAE,CAAF,CAAR;AACA0/E,KAAG,CAAH,IAAQ1/E,EAAE,CAAF,CAAR;AACA0/E,KAAG,CAAH,IAAQ1/E,EAAE,CAAF,CAAR;AACA0/E,KAAG,CAAH,IAAQ1/E,EAAE,CAAF,CAAR;AACA,SAAO0/E,EAAP;AACD;;AAED;;;;;;;;;;;;;;AAcO,SAASp4C,UAAT,CAAoBn9B,EAApB,EAAwBs8C,EAAxB,EAA4BE,EAA5B,EAAgC6f,EAAhC,EAAoC/kE,EAApC,EAAwCC,EAAxC,EAA4CC,EAA5C,EAAgD2pD,EAAhD,EAAoD;AACzD,MAAIo0B,KAAK,IAAIrtE,SAAS4H,UAAb,CAAwB,CAAxB,CAAT;AACAylE,KAAG,CAAH,IAAQv1E,EAAR;AACAu1E,KAAG,CAAH,IAAQj5B,EAAR;AACAi5B,KAAG,CAAH,IAAQ/4B,EAAR;AACA+4B,KAAG,CAAH,IAAQlZ,EAAR;AACAkZ,KAAG,CAAH,IAAQj+E,EAAR;AACAi+E,KAAG,CAAH,IAAQh+E,EAAR;AACAg+E,KAAG,CAAH,IAAQ/9E,EAAR;AACA+9E,KAAG,CAAH,IAAQp0B,EAAR;AACA,SAAOo0B,EAAP;AACD;;AAED;;;;;;;;;;;;;AAaO,SAASN,6BAAT,CAAuCj1E,EAAvC,EAA2Cs8C,EAA3C,EAA+CE,EAA/C,EAAmD6f,EAAnD,EAAuD/kE,EAAvD,EAA2DC,EAA3D,EAA+DC,EAA/D,EAAmE;AACxE,MAAI+9E,KAAK,IAAIrtE,SAAS4H,UAAb,CAAwB,CAAxB,CAAT;AACAylE,KAAG,CAAH,IAAQv1E,EAAR;AACAu1E,KAAG,CAAH,IAAQj5B,EAAR;AACAi5B,KAAG,CAAH,IAAQ/4B,EAAR;AACA+4B,KAAG,CAAH,IAAQlZ,EAAR;AACA,MAAIhjB,KAAK/hD,KAAK,GAAd;AAAA,MACEgiD,KAAK/hD,KAAK,GADZ;AAAA,MAEEgiD,KAAK/hD,KAAK,GAFZ;AAGA+9E,KAAG,CAAH,IAAQl8B,KAAKgjB,EAAL,GAAU/iB,KAAKkD,EAAf,GAAoBjD,KAAK+C,EAAjC;AACAi5B,KAAG,CAAH,IAAQj8B,KAAK+iB,EAAL,GAAU9iB,KAAKv5C,EAAf,GAAoBq5C,KAAKmD,EAAjC;AACA+4B,KAAG,CAAH,IAAQh8B,KAAK8iB,EAAL,GAAUhjB,KAAKiD,EAAf,GAAoBhD,KAAKt5C,EAAjC;AACAu1E,KAAG,CAAH,IAAQ,CAACl8B,EAAD,GAAMr5C,EAAN,GAAWs5C,KAAKgD,EAAhB,GAAqB/C,KAAKiD,EAAlC;AACA,SAAO+4B,EAAP;AACD;;AAED;;;;;;;;;AASO,SAAS19B,uBAAT,CAAiC9hD,GAAjC,EAAsC6/C,CAAtC,EAAyCx3C,CAAzC,EAA4C;AACjD,MAAIi7C,KAAKj7C,EAAE,CAAF,IAAO,GAAhB;AAAA,MACEk7C,KAAKl7C,EAAE,CAAF,IAAO,GADd;AAAA,MAEEm7C,KAAKn7C,EAAE,CAAF,IAAO,GAFd;AAAA,MAGE66C,KAAKrD,EAAE,CAAF,CAHP;AAAA,MAIEsD,KAAKtD,EAAE,CAAF,CAJP;AAAA,MAKEuD,KAAKvD,EAAE,CAAF,CALP;AAAA,MAMEwD,KAAKxD,EAAE,CAAF,CANP;AAOA7/C,MAAI,CAAJ,IAASkjD,EAAT;AACAljD,MAAI,CAAJ,IAASmjD,EAAT;AACAnjD,MAAI,CAAJ,IAASojD,EAAT;AACApjD,MAAI,CAAJ,IAASqjD,EAAT;AACArjD,MAAI,CAAJ,IAASsjD,KAAKD,EAAL,GAAUE,KAAKH,EAAf,GAAoBI,KAAKL,EAAlC;AACAnjD,MAAI,CAAJ,IAASujD,KAAKF,EAAL,GAAUG,KAAKN,EAAf,GAAoBI,KAAKF,EAAlC;AACApjD,MAAI,CAAJ,IAASwjD,KAAKH,EAAL,GAAUC,KAAKH,EAAf,GAAoBI,KAAKL,EAAlC;AACAljD,MAAI,CAAJ,IAAS,CAACsjD,EAAD,GAAMJ,EAAN,GAAWK,KAAKJ,EAAhB,GAAqBK,KAAKJ,EAAnC;AACA,SAAOpjD,GAAP;AACD;;AAED;;;;;;;;AAQO,SAAS09C,eAAT,CAAyB19C,GAAzB,EAA8BqI,CAA9B,EAAiC;AACtCrI,MAAI,CAAJ,IAAS,CAAT;AACAA,MAAI,CAAJ,IAAS,CAAT;AACAA,MAAI,CAAJ,IAAS,CAAT;AACAA,MAAI,CAAJ,IAAS,CAAT;AACAA,MAAI,CAAJ,IAASqI,EAAE,CAAF,IAAO,GAAhB;AACArI,MAAI,CAAJ,IAASqI,EAAE,CAAF,IAAO,GAAhB;AACArI,MAAI,CAAJ,IAASqI,EAAE,CAAF,IAAO,GAAhB;AACArI,MAAI,CAAJ,IAAS,CAAT;AACA,SAAOA,GAAP;AACD;;AAED;;;;;;;;AAQO,SAAS48C,YAAT,CAAsB58C,GAAtB,EAA2B6/C,CAA3B,EAA8B;AACnC7/C,MAAI,CAAJ,IAAS6/C,EAAE,CAAF,CAAT;AACA7/C,MAAI,CAAJ,IAAS6/C,EAAE,CAAF,CAAT;AACA7/C,MAAI,CAAJ,IAAS6/C,EAAE,CAAF,CAAT;AACA7/C,MAAI,CAAJ,IAAS6/C,EAAE,CAAF,CAAT;AACA7/C,MAAI,CAAJ,IAAS,CAAT;AACAA,MAAI,CAAJ,IAAS,CAAT;AACAA,MAAI,CAAJ,IAAS,CAAT;AACAA,MAAI,CAAJ,IAAS,CAAT;AACA,SAAOA,GAAP;AACD;;AAED;;;;;;;;AAQO,SAASu9C,QAAT,CAAkBv9C,GAAlB,EAAuBF,CAAvB,EAA0B;AAC/B;AACA,MAAIU,QAAQ6J,KAAKi+B,MAAL,EAAZ;AACA/1B,OAAK2vC,WAAL,CAAiB1hD,KAAjB,EAAwBV,CAAxB;AACA,MAAIuI,IAAI,IAAI8J,SAAS4H,UAAb,CAAwB,CAAxB,CAAR;AACAxH,OAAKyvC,cAAL,CAAoB35C,CAApB,EAAuBvI,CAAvB;AACAgiD,0BAAwB9hD,GAAxB,EAA6BQ,KAA7B,EAAoC6H,CAApC;AACA,SAAOrI,GAAP;AACD;;AAED;;;;;;;;AAQO,SAAS25C,IAAT,CAAc35C,GAAd,EAAmBF,CAAnB,EAAsB;AAC3BE,MAAI,CAAJ,IAASF,EAAE,CAAF,CAAT;AACAE,MAAI,CAAJ,IAASF,EAAE,CAAF,CAAT;AACAE,MAAI,CAAJ,IAASF,EAAE,CAAF,CAAT;AACAE,MAAI,CAAJ,IAASF,EAAE,CAAF,CAAT;AACAE,MAAI,CAAJ,IAASF,EAAE,CAAF,CAAT;AACAE,MAAI,CAAJ,IAASF,EAAE,CAAF,CAAT;AACAE,MAAI,CAAJ,IAASF,EAAE,CAAF,CAAT;AACAE,MAAI,CAAJ,IAASF,EAAE,CAAF,CAAT;AACA,SAAOE,GAAP;AACD;;AAED;;;;;;AAMO,SAASwoC,QAAT,CAAkBxoC,GAAlB,EAAuB;AAC5BA,MAAI,CAAJ,IAAS,CAAT;AACAA,MAAI,CAAJ,IAAS,CAAT;AACAA,MAAI,CAAJ,IAAS,CAAT;AACAA,MAAI,CAAJ,IAAS,CAAT;AACAA,MAAI,CAAJ,IAAS,CAAT;AACAA,MAAI,CAAJ,IAAS,CAAT;AACAA,MAAI,CAAJ,IAAS,CAAT;AACAA,MAAI,CAAJ,IAAS,CAAT;AACA,SAAOA,GAAP;AACD;;AAED;;;;;;;;;;;;;;;AAeO,SAAS/X,GAAT,CAAa+X,GAAb,EAAkBiK,EAAlB,EAAsBs8C,EAAtB,EAA0BE,EAA1B,EAA8B6f,EAA9B,EAAkC/kE,EAAlC,EAAsCC,EAAtC,EAA0CC,EAA1C,EAA8C2pD,EAA9C,EAAkD;AACvDprD,MAAI,CAAJ,IAASiK,EAAT;AACAjK,MAAI,CAAJ,IAASumD,EAAT;AACAvmD,MAAI,CAAJ,IAASymD,EAAT;AACAzmD,MAAI,CAAJ,IAASsmE,EAAT;;AAEAtmE,MAAI,CAAJ,IAASuB,EAAT;AACAvB,MAAI,CAAJ,IAASwB,EAAT;AACAxB,MAAI,CAAJ,IAASyB,EAAT;AACAzB,MAAI,CAAJ,IAASorD,EAAT;AACA,SAAOprD,GAAP;AACD;;AAED;;;;;;AAMO,IAAMy/E,4BAAUp1E,KAAKsvC,IAArB;;AAEP;;;;;;AAMO,SAASwlC,OAAT,CAAiBn/E,GAAjB,EAAsBF,CAAtB,EAAyB;AAC9BE,MAAI,CAAJ,IAASF,EAAE,CAAF,CAAT;AACAE,MAAI,CAAJ,IAASF,EAAE,CAAF,CAAT;AACAE,MAAI,CAAJ,IAASF,EAAE,CAAF,CAAT;AACAE,MAAI,CAAJ,IAASF,EAAE,CAAF,CAAT;AACA,SAAOE,GAAP;AACD;;AAED;;;;;;;;AAQO,IAAM0/E,4BAAUr1E,KAAKsvC,IAArB;;AAEP;;;;;;;;AAQO,SAASylC,OAAT,CAAiBp/E,GAAjB,EAAsB6/C,CAAtB,EAAyB;AAC9B7/C,MAAI,CAAJ,IAAS6/C,EAAE,CAAF,CAAT;AACA7/C,MAAI,CAAJ,IAAS6/C,EAAE,CAAF,CAAT;AACA7/C,MAAI,CAAJ,IAAS6/C,EAAE,CAAF,CAAT;AACA7/C,MAAI,CAAJ,IAAS6/C,EAAE,CAAF,CAAT;AACA,SAAO7/C,GAAP;AACD;;AAED;;;;;;AAMO,SAASgiD,cAAT,CAAwBhiD,GAAxB,EAA6BF,CAA7B,EAAgC;AACrC,MAAIwjD,KAAKxjD,EAAE,CAAF,CAAT;AAAA,MACEyjD,KAAKzjD,EAAE,CAAF,CADP;AAAA,MAEE0jD,KAAK1jD,EAAE,CAAF,CAFP;AAAA,MAGE2jD,KAAK3jD,EAAE,CAAF,CAHP;AAAA,MAIEojD,KAAK,CAACpjD,EAAE,CAAF,CAJR;AAAA,MAKEqjD,KAAK,CAACrjD,EAAE,CAAF,CALR;AAAA,MAMEsjD,KAAK,CAACtjD,EAAE,CAAF,CANR;AAAA,MAOEujD,KAAKvjD,EAAE,CAAF,CAPP;AAQAE,MAAI,CAAJ,IAAS,CAACsjD,KAAKD,EAAL,GAAUI,KAAKP,EAAf,GAAoBK,KAAKH,EAAzB,GAA8BI,KAAKL,EAApC,IAA0C,CAAnD;AACAnjD,MAAI,CAAJ,IAAS,CAACujD,KAAKF,EAAL,GAAUI,KAAKN,EAAf,GAAoBK,KAAKN,EAAzB,GAA8BI,KAAKF,EAApC,IAA0C,CAAnD;AACApjD,MAAI,CAAJ,IAAS,CAACwjD,KAAKH,EAAL,GAAUI,KAAKL,EAAf,GAAoBE,KAAKH,EAAzB,GAA8BI,KAAKL,EAApC,IAA0C,CAAnD;AACA,SAAOljD,GAAP;AACD;;AAED;;;;;;;;AAQO,SAAS4qB,SAAT,CAAmB5qB,GAAnB,EAAwBF,CAAxB,EAA2BvO,CAA3B,EAA8B;AACnC,MAAIouF,MAAM7/E,EAAE,CAAF,CAAV;AAAA,MACE8/E,MAAM9/E,EAAE,CAAF,CADR;AAAA,MAEE+/E,MAAM//E,EAAE,CAAF,CAFR;AAAA,MAGEggF,MAAMhgF,EAAE,CAAF,CAHR;AAAA,MAIEigF,MAAMxuF,EAAE,CAAF,IAAO,GAJf;AAAA,MAKEyuF,MAAMzuF,EAAE,CAAF,IAAO,GALf;AAAA,MAME0uF,MAAM1uF,EAAE,CAAF,IAAO,GANf;AAAA,MAOE2uF,MAAMpgF,EAAE,CAAF,CAPR;AAAA,MAQEqgF,MAAMrgF,EAAE,CAAF,CARR;AAAA,MASEsgF,MAAMtgF,EAAE,CAAF,CATR;AAAA,MAUEugF,MAAMvgF,EAAE,CAAF,CAVR;AAWAE,MAAI,CAAJ,IAAS2/E,GAAT;AACA3/E,MAAI,CAAJ,IAAS4/E,GAAT;AACA5/E,MAAI,CAAJ,IAAS6/E,GAAT;AACA7/E,MAAI,CAAJ,IAAS8/E,GAAT;AACA9/E,MAAI,CAAJ,IAAS8/E,MAAMC,GAAN,GAAYH,MAAMK,GAAlB,GAAwBJ,MAAMG,GAA9B,GAAoCE,GAA7C;AACAlgF,MAAI,CAAJ,IAAS8/E,MAAME,GAAN,GAAYH,MAAME,GAAlB,GAAwBJ,MAAMM,GAA9B,GAAoCE,GAA7C;AACAngF,MAAI,CAAJ,IAAS8/E,MAAMG,GAAN,GAAYN,MAAMK,GAAlB,GAAwBJ,MAAMG,GAA9B,GAAoCK,GAA7C;AACApgF,MAAI,CAAJ,IAAS,CAAC2/E,GAAD,GAAOI,GAAP,GAAaH,MAAMI,GAAnB,GAAyBH,MAAMI,GAA/B,GAAqCI,GAA9C;AACA,SAAOrgF,GAAP;AACD;;AAED;;;;;;;;AAQO,SAASg9C,OAAT,CAAiBh9C,GAAjB,EAAsBF,CAAtB,EAAyB/B,GAAzB,EAA8B;AACnC,MAAImlD,KAAK,CAACpjD,EAAE,CAAF,CAAV;AAAA,MACEqjD,KAAK,CAACrjD,EAAE,CAAF,CADR;AAAA,MAEEsjD,KAAK,CAACtjD,EAAE,CAAF,CAFR;AAAA,MAGEujD,KAAKvjD,EAAE,CAAF,CAHP;AAAA,MAIEwjD,KAAKxjD,EAAE,CAAF,CAJP;AAAA,MAKEyjD,KAAKzjD,EAAE,CAAF,CALP;AAAA,MAME0jD,KAAK1jD,EAAE,CAAF,CANP;AAAA,MAOE2jD,KAAK3jD,EAAE,CAAF,CAPP;AAAA,MAQE6/E,MAAMr8B,KAAKD,EAAL,GAAUI,KAAKP,EAAf,GAAoBK,KAAKH,EAAzB,GAA8BI,KAAKL,EAR3C;AAAA,MASEy8B,MAAMr8B,KAAKF,EAAL,GAAUI,KAAKN,EAAf,GAAoBK,KAAKN,EAAzB,GAA8BI,KAAKF,EAT3C;AAAA,MAUEy8B,MAAMr8B,KAAKH,EAAL,GAAUI,KAAKL,EAAf,GAAoBE,KAAKH,EAAzB,GAA8BI,KAAKL,EAV3C;AAAA,MAWE48B,MAAMr8B,KAAKJ,EAAL,GAAUC,KAAKJ,EAAf,GAAoBK,KAAKJ,EAAzB,GAA8BK,KAAKJ,EAX3C;AAYA/4C,OAAK2yC,OAAL,CAAah9C,GAAb,EAAkBF,CAAlB,EAAqB/B,GAArB;AACAmlD,OAAKljD,IAAI,CAAJ,CAAL;AACAmjD,OAAKnjD,IAAI,CAAJ,CAAL;AACAojD,OAAKpjD,IAAI,CAAJ,CAAL;AACAqjD,OAAKrjD,IAAI,CAAJ,CAAL;AACAA,MAAI,CAAJ,IAAS2/E,MAAMt8B,EAAN,GAAWy8B,MAAM58B,EAAjB,GAAsB08B,MAAMx8B,EAA5B,GAAiCy8B,MAAM18B,EAAhD;AACAnjD,MAAI,CAAJ,IAAS4/E,MAAMv8B,EAAN,GAAWy8B,MAAM38B,EAAjB,GAAsB08B,MAAM38B,EAA5B,GAAiCy8B,MAAMv8B,EAAhD;AACApjD,MAAI,CAAJ,IAAS6/E,MAAMx8B,EAAN,GAAWy8B,MAAM18B,EAAjB,GAAsBu8B,MAAMx8B,EAA5B,GAAiCy8B,MAAM18B,EAAhD;AACAljD,MAAI,CAAJ,IAAS8/E,MAAMz8B,EAAN,GAAWs8B,MAAMz8B,EAAjB,GAAsB08B,MAAMz8B,EAA5B,GAAiC08B,MAAMz8B,EAAhD;AACA,SAAOpjD,GAAP;AACD;;AAED;;;;;;;;AAQO,SAASi9C,OAAT,CAAiBj9C,GAAjB,EAAsBF,CAAtB,EAAyB/B,GAAzB,EAA8B;AACnC,MAAImlD,KAAK,CAACpjD,EAAE,CAAF,CAAV;AAAA,MACEqjD,KAAK,CAACrjD,EAAE,CAAF,CADR;AAAA,MAEEsjD,KAAK,CAACtjD,EAAE,CAAF,CAFR;AAAA,MAGEujD,KAAKvjD,EAAE,CAAF,CAHP;AAAA,MAIEwjD,KAAKxjD,EAAE,CAAF,CAJP;AAAA,MAKEyjD,KAAKzjD,EAAE,CAAF,CALP;AAAA,MAME0jD,KAAK1jD,EAAE,CAAF,CANP;AAAA,MAOE2jD,KAAK3jD,EAAE,CAAF,CAPP;AAAA,MAQE6/E,MAAMr8B,KAAKD,EAAL,GAAUI,KAAKP,EAAf,GAAoBK,KAAKH,EAAzB,GAA8BI,KAAKL,EAR3C;AAAA,MASEy8B,MAAMr8B,KAAKF,EAAL,GAAUI,KAAKN,EAAf,GAAoBK,KAAKN,EAAzB,GAA8BI,KAAKF,EAT3C;AAAA,MAUEy8B,MAAMr8B,KAAKH,EAAL,GAAUI,KAAKL,EAAf,GAAoBE,KAAKH,EAAzB,GAA8BI,KAAKL,EAV3C;AAAA,MAWE48B,MAAMr8B,KAAKJ,EAAL,GAAUC,KAAKJ,EAAf,GAAoBK,KAAKJ,EAAzB,GAA8BK,KAAKJ,EAX3C;AAYA/4C,OAAK4yC,OAAL,CAAaj9C,GAAb,EAAkBF,CAAlB,EAAqB/B,GAArB;AACAmlD,OAAKljD,IAAI,CAAJ,CAAL;AACAmjD,OAAKnjD,IAAI,CAAJ,CAAL;AACAojD,OAAKpjD,IAAI,CAAJ,CAAL;AACAqjD,OAAKrjD,IAAI,CAAJ,CAAL;AACAA,MAAI,CAAJ,IAAS2/E,MAAMt8B,EAAN,GAAWy8B,MAAM58B,EAAjB,GAAsB08B,MAAMx8B,EAA5B,GAAiCy8B,MAAM18B,EAAhD;AACAnjD,MAAI,CAAJ,IAAS4/E,MAAMv8B,EAAN,GAAWy8B,MAAM38B,EAAjB,GAAsB08B,MAAM38B,EAA5B,GAAiCy8B,MAAMv8B,EAAhD;AACApjD,MAAI,CAAJ,IAAS6/E,MAAMx8B,EAAN,GAAWy8B,MAAM18B,EAAjB,GAAsBu8B,MAAMx8B,EAA5B,GAAiCy8B,MAAM18B,EAAhD;AACAljD,MAAI,CAAJ,IAAS8/E,MAAMz8B,EAAN,GAAWs8B,MAAMz8B,EAAjB,GAAsB08B,MAAMz8B,EAA5B,GAAiC08B,MAAMz8B,EAAhD;AACA,SAAOpjD,GAAP;AACD;;AAED;;;;;;;;AAQO,SAASk9C,OAAT,CAAiBl9C,GAAjB,EAAsBF,CAAtB,EAAyB/B,GAAzB,EAA8B;AACnC,MAAImlD,KAAK,CAACpjD,EAAE,CAAF,CAAV;AAAA,MACEqjD,KAAK,CAACrjD,EAAE,CAAF,CADR;AAAA,MAEEsjD,KAAK,CAACtjD,EAAE,CAAF,CAFR;AAAA,MAGEujD,KAAKvjD,EAAE,CAAF,CAHP;AAAA,MAIEwjD,KAAKxjD,EAAE,CAAF,CAJP;AAAA,MAKEyjD,KAAKzjD,EAAE,CAAF,CALP;AAAA,MAME0jD,KAAK1jD,EAAE,CAAF,CANP;AAAA,MAOE2jD,KAAK3jD,EAAE,CAAF,CAPP;AAAA,MAQE6/E,MAAMr8B,KAAKD,EAAL,GAAUI,KAAKP,EAAf,GAAoBK,KAAKH,EAAzB,GAA8BI,KAAKL,EAR3C;AAAA,MASEy8B,MAAMr8B,KAAKF,EAAL,GAAUI,KAAKN,EAAf,GAAoBK,KAAKN,EAAzB,GAA8BI,KAAKF,EAT3C;AAAA,MAUEy8B,MAAMr8B,KAAKH,EAAL,GAAUI,KAAKL,EAAf,GAAoBE,KAAKH,EAAzB,GAA8BI,KAAKL,EAV3C;AAAA,MAWE48B,MAAMr8B,KAAKJ,EAAL,GAAUC,KAAKJ,EAAf,GAAoBK,KAAKJ,EAAzB,GAA8BK,KAAKJ,EAX3C;AAYA/4C,OAAK6yC,OAAL,CAAal9C,GAAb,EAAkBF,CAAlB,EAAqB/B,GAArB;AACAmlD,OAAKljD,IAAI,CAAJ,CAAL;AACAmjD,OAAKnjD,IAAI,CAAJ,CAAL;AACAojD,OAAKpjD,IAAI,CAAJ,CAAL;AACAqjD,OAAKrjD,IAAI,CAAJ,CAAL;AACAA,MAAI,CAAJ,IAAS2/E,MAAMt8B,EAAN,GAAWy8B,MAAM58B,EAAjB,GAAsB08B,MAAMx8B,EAA5B,GAAiCy8B,MAAM18B,EAAhD;AACAnjD,MAAI,CAAJ,IAAS4/E,MAAMv8B,EAAN,GAAWy8B,MAAM38B,EAAjB,GAAsB08B,MAAM38B,EAA5B,GAAiCy8B,MAAMv8B,EAAhD;AACApjD,MAAI,CAAJ,IAAS6/E,MAAMx8B,EAAN,GAAWy8B,MAAM18B,EAAjB,GAAsBu8B,MAAMx8B,EAA5B,GAAiCy8B,MAAM18B,EAAhD;AACAljD,MAAI,CAAJ,IAAS8/E,MAAMz8B,EAAN,GAAWs8B,MAAMz8B,EAAjB,GAAsB08B,MAAMz8B,EAA5B,GAAiC08B,MAAMz8B,EAAhD;AACA,SAAOpjD,GAAP;AACD;;AAED;;;;;;;;AAQO,SAASq/E,kBAAT,CAA4Br/E,GAA5B,EAAiCF,CAAjC,EAAoC+/C,CAApC,EAAuC;AAC5C,MAAI6K,KAAK7K,EAAE,CAAF,CAAT;AAAA,MACE8K,KAAK9K,EAAE,CAAF,CADP;AAAA,MAEE+K,KAAK/K,EAAE,CAAF,CAFP;AAAA,MAGEgL,KAAKhL,EAAE,CAAF,CAHP;AAAA,MAIEyD,KAAKxjD,EAAE,CAAF,CAJP;AAAA,MAKEyjD,KAAKzjD,EAAE,CAAF,CALP;AAAA,MAME0jD,KAAK1jD,EAAE,CAAF,CANP;AAAA,MAOE2jD,KAAK3jD,EAAE,CAAF,CAPP;;AASAE,MAAI,CAAJ,IAASsjD,KAAKuH,EAAL,GAAUpH,KAAKiH,EAAf,GAAoBnH,KAAKqH,EAAzB,GAA8BpH,KAAKmH,EAA5C;AACA3qD,MAAI,CAAJ,IAASujD,KAAKsH,EAAL,GAAUpH,KAAKkH,EAAf,GAAoBnH,KAAKkH,EAAzB,GAA8BpH,KAAKsH,EAA5C;AACA5qD,MAAI,CAAJ,IAASwjD,KAAKqH,EAAL,GAAUpH,KAAKmH,EAAf,GAAoBtH,KAAKqH,EAAzB,GAA8BpH,KAAKmH,EAA5C;AACA1qD,MAAI,CAAJ,IAASyjD,KAAKoH,EAAL,GAAUvH,KAAKoH,EAAf,GAAoBnH,KAAKoH,EAAzB,GAA8BnH,KAAKoH,EAA5C;AACAtH,OAAKxjD,EAAE,CAAF,CAAL;AACAyjD,OAAKzjD,EAAE,CAAF,CAAL;AACA0jD,OAAK1jD,EAAE,CAAF,CAAL;AACA2jD,OAAK3jD,EAAE,CAAF,CAAL;AACAE,MAAI,CAAJ,IAASsjD,KAAKuH,EAAL,GAAUpH,KAAKiH,EAAf,GAAoBnH,KAAKqH,EAAzB,GAA8BpH,KAAKmH,EAA5C;AACA3qD,MAAI,CAAJ,IAASujD,KAAKsH,EAAL,GAAUpH,KAAKkH,EAAf,GAAoBnH,KAAKkH,EAAzB,GAA8BpH,KAAKsH,EAA5C;AACA5qD,MAAI,CAAJ,IAASwjD,KAAKqH,EAAL,GAAUpH,KAAKmH,EAAf,GAAoBtH,KAAKqH,EAAzB,GAA8BpH,KAAKmH,EAA5C;AACA1qD,MAAI,CAAJ,IAASyjD,KAAKoH,EAAL,GAAUvH,KAAKoH,EAAf,GAAoBnH,KAAKoH,EAAzB,GAA8BnH,KAAKoH,EAA5C;AACA,SAAO5qD,GAAP;AACD;;AAED;;;;;;;;AAQO,SAASs/E,mBAAT,CAA6Bt/E,GAA7B,EAAkC6/C,CAAlC,EAAqC//C,CAArC,EAAwC;AAC7C,MAAI4qD,KAAK7K,EAAE,CAAF,CAAT;AAAA,MACE8K,KAAK9K,EAAE,CAAF,CADP;AAAA,MAEE+K,KAAK/K,EAAE,CAAF,CAFP;AAAA,MAGEgL,KAAKhL,EAAE,CAAF,CAHP;AAAA,MAIEqD,KAAKpjD,EAAE,CAAF,CAJP;AAAA,MAKEqjD,KAAKrjD,EAAE,CAAF,CALP;AAAA,MAMEsjD,KAAKtjD,EAAE,CAAF,CANP;AAAA,MAOEujD,KAAKvjD,EAAE,CAAF,CAPP;;AASAE,MAAI,CAAJ,IAAS0qD,KAAKrH,EAAL,GAAUwH,KAAK3H,EAAf,GAAoByH,KAAKvH,EAAzB,GAA8BwH,KAAKzH,EAA5C;AACAnjD,MAAI,CAAJ,IAAS2qD,KAAKtH,EAAL,GAAUwH,KAAK1H,EAAf,GAAoByH,KAAK1H,EAAzB,GAA8BwH,KAAKtH,EAA5C;AACApjD,MAAI,CAAJ,IAAS4qD,KAAKvH,EAAL,GAAUwH,KAAKzH,EAAf,GAAoBsH,KAAKvH,EAAzB,GAA8BwH,KAAKzH,EAA5C;AACAljD,MAAI,CAAJ,IAAS6qD,KAAKxH,EAAL,GAAUqH,KAAKxH,EAAf,GAAoByH,KAAKxH,EAAzB,GAA8ByH,KAAKxH,EAA5C;AACAF,OAAKpjD,EAAE,CAAF,CAAL;AACAqjD,OAAKrjD,EAAE,CAAF,CAAL;AACAsjD,OAAKtjD,EAAE,CAAF,CAAL;AACAujD,OAAKvjD,EAAE,CAAF,CAAL;AACAE,MAAI,CAAJ,IAAS0qD,KAAKrH,EAAL,GAAUwH,KAAK3H,EAAf,GAAoByH,KAAKvH,EAAzB,GAA8BwH,KAAKzH,EAA5C;AACAnjD,MAAI,CAAJ,IAAS2qD,KAAKtH,EAAL,GAAUwH,KAAK1H,EAAf,GAAoByH,KAAK1H,EAAzB,GAA8BwH,KAAKtH,EAA5C;AACApjD,MAAI,CAAJ,IAAS4qD,KAAKvH,EAAL,GAAUwH,KAAKzH,EAAf,GAAoBsH,KAAKvH,EAAzB,GAA8BwH,KAAKzH,EAA5C;AACAljD,MAAI,CAAJ,IAAS6qD,KAAKxH,EAAL,GAAUqH,KAAKxH,EAAf,GAAoByH,KAAKxH,EAAzB,GAA8ByH,KAAKxH,EAA5C;AACA,SAAOpjD,GAAP;AACD;;AAED;;;;;;;;;AASO,SAASu/E,gBAAT,CAA0Bv/E,GAA1B,EAA+BF,CAA/B,EAAkCtD,IAAlC,EAAwCuB,GAAxC,EAA6C;AAClD;AACA,MAAI5R,KAAK4U,GAAL,CAAShD,GAAT,IAAgBoU,SAAS2H,OAA7B,EAAsC;AACpC,WAAO6/B,KAAK35C,GAAL,EAAUF,CAAV,CAAP;AACD;AACD,MAAIwgF,aAAan0F,KAAK6U,IAAL,CAAUxE,KAAK,CAAL,IAAUA,KAAK,CAAL,CAAV,GAAoBA,KAAK,CAAL,IAAUA,KAAK,CAAL,CAA9B,GAAwCA,KAAK,CAAL,IAAUA,KAAK,CAAL,CAA5D,CAAjB;;AAEAuB,QAAMA,MAAM,GAAZ;AACA,MAAIyJ,IAAIrb,KAAK4V,GAAL,CAAShE,GAAT,CAAR;AACA,MAAImlD,KAAK17C,IAAIhL,KAAK,CAAL,CAAJ,GAAc8jF,UAAvB;AACA,MAAIn9B,KAAK37C,IAAIhL,KAAK,CAAL,CAAJ,GAAc8jF,UAAvB;AACA,MAAIl9B,KAAK57C,IAAIhL,KAAK,CAAL,CAAJ,GAAc8jF,UAAvB;AACA,MAAIj9B,KAAKl3D,KAAK8V,GAAL,CAASlE,GAAT,CAAT;;AAEA,MAAI4hF,MAAM7/E,EAAE,CAAF,CAAV;AAAA,MACE8/E,MAAM9/E,EAAE,CAAF,CADR;AAAA,MAEE+/E,MAAM//E,EAAE,CAAF,CAFR;AAAA,MAGEggF,MAAMhgF,EAAE,CAAF,CAHR;AAIAE,MAAI,CAAJ,IAAS2/E,MAAMt8B,EAAN,GAAWy8B,MAAM58B,EAAjB,GAAsB08B,MAAMx8B,EAA5B,GAAiCy8B,MAAM18B,EAAhD;AACAnjD,MAAI,CAAJ,IAAS4/E,MAAMv8B,EAAN,GAAWy8B,MAAM38B,EAAjB,GAAsB08B,MAAM38B,EAA5B,GAAiCy8B,MAAMv8B,EAAhD;AACApjD,MAAI,CAAJ,IAAS6/E,MAAMx8B,EAAN,GAAWy8B,MAAM18B,EAAjB,GAAsBu8B,MAAMx8B,EAA5B,GAAiCy8B,MAAM18B,EAAhD;AACAljD,MAAI,CAAJ,IAAS8/E,MAAMz8B,EAAN,GAAWs8B,MAAMz8B,EAAjB,GAAsB08B,MAAMz8B,EAA5B,GAAiC08B,MAAMz8B,EAAhD;;AAEA,MAAIE,KAAKxjD,EAAE,CAAF,CAAT;AAAA,MACEyjD,KAAKzjD,EAAE,CAAF,CADP;AAAA,MAEE0jD,KAAK1jD,EAAE,CAAF,CAFP;AAAA,MAGE2jD,KAAK3jD,EAAE,CAAF,CAHP;AAIAE,MAAI,CAAJ,IAASsjD,KAAKD,EAAL,GAAUI,KAAKP,EAAf,GAAoBK,KAAKH,EAAzB,GAA8BI,KAAKL,EAA5C;AACAnjD,MAAI,CAAJ,IAASujD,KAAKF,EAAL,GAAUI,KAAKN,EAAf,GAAoBK,KAAKN,EAAzB,GAA8BI,KAAKF,EAA5C;AACApjD,MAAI,CAAJ,IAASwjD,KAAKH,EAAL,GAAUI,KAAKL,EAAf,GAAoBE,KAAKH,EAAzB,GAA8BI,KAAKL,EAA5C;AACAljD,MAAI,CAAJ,IAASyjD,KAAKJ,EAAL,GAAUC,KAAKJ,EAAf,GAAoBK,KAAKJ,EAAzB,GAA8BK,KAAKJ,EAA5C;;AAEA,SAAOpjD,GAAP;AACD;;AAED;;;;;;;;;AASO,SAASH,GAAT,CAAaG,GAAb,EAAkBF,CAAlB,EAAqBC,CAArB,EAAwB;AAC7BC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,EAAE,CAAF,CAAhB;AACAC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,EAAE,CAAF,CAAhB;AACAC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,EAAE,CAAF,CAAhB;AACAC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,EAAE,CAAF,CAAhB;AACAC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,EAAE,CAAF,CAAhB;AACAC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,EAAE,CAAF,CAAhB;AACAC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,EAAE,CAAF,CAAhB;AACAC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,EAAE,CAAF,CAAhB;AACA,SAAOC,GAAP;AACD;;AAED;;;;;;;;AAQO,SAASuoC,QAAT,CAAkBvoC,GAAlB,EAAuBF,CAAvB,EAA0BC,CAA1B,EAA6B;AAClC,MAAIwgF,MAAMzgF,EAAE,CAAF,CAAV;AAAA,MACE0gF,MAAM1gF,EAAE,CAAF,CADR;AAAA,MAEE2gF,MAAM3gF,EAAE,CAAF,CAFR;AAAA,MAGE4gF,MAAM5gF,EAAE,CAAF,CAHR;AAAA,MAIEigF,MAAMhgF,EAAE,CAAF,CAJR;AAAA,MAKEigF,MAAMjgF,EAAE,CAAF,CALR;AAAA,MAMEkgF,MAAMlgF,EAAE,CAAF,CANR;AAAA,MAOE4gF,MAAM5gF,EAAE,CAAF,CAPR;AAAA,MAQE4/E,MAAM7/E,EAAE,CAAF,CARR;AAAA,MASE8/E,MAAM9/E,EAAE,CAAF,CATR;AAAA,MAUE+/E,MAAM//E,EAAE,CAAF,CAVR;AAAA,MAWEggF,MAAMhgF,EAAE,CAAF,CAXR;AAAA,MAYE8gF,MAAM7gF,EAAE,CAAF,CAZR;AAAA,MAaE8gF,MAAM9gF,EAAE,CAAF,CAbR;AAAA,MAcE+gF,MAAM/gF,EAAE,CAAF,CAdR;AAAA,MAeEghF,MAAMhhF,EAAE,CAAF,CAfR;AAgBAC,MAAI,CAAJ,IAASugF,MAAMQ,GAAN,GAAYL,MAAME,GAAlB,GAAwBJ,MAAMM,GAA9B,GAAoCL,MAAMI,GAAnD;AACA7gF,MAAI,CAAJ,IAASwgF,MAAMO,GAAN,GAAYL,MAAMG,GAAlB,GAAwBJ,MAAMG,GAA9B,GAAoCL,MAAMO,GAAnD;AACA9gF,MAAI,CAAJ,IAASygF,MAAMM,GAAN,GAAYL,MAAMI,GAAlB,GAAwBP,MAAMM,GAA9B,GAAoCL,MAAMI,GAAnD;AACA5gF,MAAI,CAAJ,IAAS0gF,MAAMK,GAAN,GAAYR,MAAMK,GAAlB,GAAwBJ,MAAMK,GAA9B,GAAoCJ,MAAMK,GAAnD;AACA9gF,MAAI,CAAJ,IAASugF,MAAMI,GAAN,GAAYD,MAAMX,GAAlB,GAAwBS,MAAMP,GAA9B,GAAoCQ,MAAMT,GAA1C,GAAgDL,MAAMoB,GAAtD,GAA4DjB,MAAMc,GAAlE,GAAwEhB,MAAMkB,GAA9E,GAAoFjB,MAAMgB,GAAnG;AACA7gF,MAAI,CAAJ,IAASwgF,MAAMG,GAAN,GAAYD,MAAMV,GAAlB,GAAwBS,MAAMV,GAA9B,GAAoCQ,MAAMN,GAA1C,GAAgDL,MAAMmB,GAAtD,GAA4DjB,MAAMe,GAAlE,GAAwEhB,MAAMe,GAA9E,GAAoFjB,MAAMmB,GAAnG;AACA9gF,MAAI,CAAJ,IAASygF,MAAME,GAAN,GAAYD,MAAMT,GAAlB,GAAwBM,MAAMP,GAA9B,GAAoCQ,MAAMT,GAA1C,GAAgDF,MAAMkB,GAAtD,GAA4DjB,MAAMgB,GAAlE,GAAwEnB,MAAMkB,GAA9E,GAAoFjB,MAAMgB,GAAnG;AACA5gF,MAAI,CAAJ,IAAS0gF,MAAMC,GAAN,GAAYJ,MAAMR,GAAlB,GAAwBS,MAAMR,GAA9B,GAAoCS,MAAMR,GAA1C,GAAgDH,MAAMiB,GAAtD,GAA4DpB,MAAMiB,GAAlE,GAAwEhB,MAAMiB,GAA9E,GAAoFhB,MAAMiB,GAAnG;AACA,SAAO9gF,GAAP;AACD;;AAED;;;;AAIO,IAAMyhD,oBAAMlZ,QAAZ;;AAEP;;;;;;;;;AASO,SAASlmC,KAAT,CAAerC,GAAf,EAAoBF,CAApB,EAAuBC,CAAvB,EAA0B;AAC/BC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,CAAhB;AACAC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,CAAhB;AACAC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,CAAhB;AACAC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,CAAhB;AACAC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,CAAhB;AACAC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,CAAhB;AACAC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,CAAhB;AACAC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,CAAhB;AACA,SAAOC,GAAP;AACD;;AAED;;;;;;;;AAQO,IAAMM,oBAAM+J,KAAK/J,GAAjB;;AAEP;;;;;;;;;;AAUO,SAASuoD,IAAT,CAAc7oD,GAAd,EAAmBF,CAAnB,EAAsBC,CAAtB,EAAyBsI,CAAzB,EAA4B;AACjC,MAAItV,KAAK,IAAIsV,CAAb;AACA,MAAI/H,IAAIR,CAAJ,EAAOC,CAAP,IAAY,CAAhB,EAAmBsI,IAAI,CAACA,CAAL;;AAEnBrI,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAO/M,EAAP,GAAYgN,EAAE,CAAF,IAAOsI,CAA5B;AACArI,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAO/M,EAAP,GAAYgN,EAAE,CAAF,IAAOsI,CAA5B;AACArI,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAO/M,EAAP,GAAYgN,EAAE,CAAF,IAAOsI,CAA5B;AACArI,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAO/M,EAAP,GAAYgN,EAAE,CAAF,IAAOsI,CAA5B;AACArI,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAO/M,EAAP,GAAYgN,EAAE,CAAF,IAAOsI,CAA5B;AACArI,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAO/M,EAAP,GAAYgN,EAAE,CAAF,IAAOsI,CAA5B;AACArI,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAO/M,EAAP,GAAYgN,EAAE,CAAF,IAAOsI,CAA5B;AACArI,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAO/M,EAAP,GAAYgN,EAAE,CAAF,IAAOsI,CAA5B;;AAEA,SAAOrI,GAAP;AACD;;AAED;;;;;;;AAOO,SAASq6C,MAAT,CAAgBr6C,GAAhB,EAAqBF,CAArB,EAAwB;AAC7B,MAAIkhF,QAAQl4B,cAAchpD,CAAd,CAAZ;AACAE,MAAI,CAAJ,IAAS,CAACF,EAAE,CAAF,CAAD,GAAQkhF,KAAjB;AACAhhF,MAAI,CAAJ,IAAS,CAACF,EAAE,CAAF,CAAD,GAAQkhF,KAAjB;AACAhhF,MAAI,CAAJ,IAAS,CAACF,EAAE,CAAF,CAAD,GAAQkhF,KAAjB;AACAhhF,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOkhF,KAAhB;AACAhhF,MAAI,CAAJ,IAAS,CAACF,EAAE,CAAF,CAAD,GAAQkhF,KAAjB;AACAhhF,MAAI,CAAJ,IAAS,CAACF,EAAE,CAAF,CAAD,GAAQkhF,KAAjB;AACAhhF,MAAI,CAAJ,IAAS,CAACF,EAAE,CAAF,CAAD,GAAQkhF,KAAjB;AACAhhF,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOkhF,KAAhB;AACA,SAAOhhF,GAAP;AACD;;AAED;;;;;;;;AAQO,SAAS8nD,SAAT,CAAmB9nD,GAAnB,EAAwBF,CAAxB,EAA2B;AAChCE,MAAI,CAAJ,IAAS,CAACF,EAAE,CAAF,CAAV;AACAE,MAAI,CAAJ,IAAS,CAACF,EAAE,CAAF,CAAV;AACAE,MAAI,CAAJ,IAAS,CAACF,EAAE,CAAF,CAAV;AACAE,MAAI,CAAJ,IAASF,EAAE,CAAF,CAAT;AACAE,MAAI,CAAJ,IAAS,CAACF,EAAE,CAAF,CAAV;AACAE,MAAI,CAAJ,IAAS,CAACF,EAAE,CAAF,CAAV;AACAE,MAAI,CAAJ,IAAS,CAACF,EAAE,CAAF,CAAV;AACAE,MAAI,CAAJ,IAASF,EAAE,CAAF,CAAT;AACA,SAAOE,GAAP;AACD;;AAED;;;;;;;AAOO,IAAMzR,0BAAS8b,KAAK9b,MAApB;;AAEP;;;;AAIO,IAAMgQ,oBAAMhQ,MAAZ;;AAEP;;;;;;;AAOO,IAAMu6D,wCAAgBz+C,KAAKy+C,aAA3B;;AAEP;;;;AAIO,IAAMC,0BAASD,aAAf;;AAEP;;;;;;;;AAQO,SAAS5nD,SAAT,CAAmBlB,GAAnB,EAAwBF,CAAxB,EAA2B;AAChC,MAAIk2B,YAAY8yB,cAAchpD,CAAd,CAAhB;AACA,MAAIk2B,YAAY,CAAhB,EAAmB;AACjBA,gBAAY7pC,KAAK6U,IAAL,CAAUg1B,SAAV,CAAZ;AACAh2B,QAAI,CAAJ,IAASF,EAAE,CAAF,IAAOk2B,SAAhB;AACAh2B,QAAI,CAAJ,IAASF,EAAE,CAAF,IAAOk2B,SAAhB;AACAh2B,QAAI,CAAJ,IAASF,EAAE,CAAF,IAAOk2B,SAAhB;AACAh2B,QAAI,CAAJ,IAASF,EAAE,CAAF,IAAOk2B,SAAhB;AACAh2B,QAAI,CAAJ,IAASF,EAAE,CAAF,IAAOk2B,SAAhB;AACAh2B,QAAI,CAAJ,IAASF,EAAE,CAAF,IAAOk2B,SAAhB;AACAh2B,QAAI,CAAJ,IAASF,EAAE,CAAF,IAAOk2B,SAAhB;AACAh2B,QAAI,CAAJ,IAASF,EAAE,CAAF,IAAOk2B,SAAhB;AACD;AACD,SAAOh2B,GAAP;AACD;;AAED;;;;;;AAMO,SAASxV,GAAT,CAAasV,CAAb,EAAgB;AACrB,SAAO,WAAWA,EAAE,CAAF,CAAX,GAAkB,IAAlB,GAAyBA,EAAE,CAAF,CAAzB,GAAgC,IAAhC,GAAuCA,EAAE,CAAF,CAAvC,GAA8C,IAA9C,GAAqDA,EAAE,CAAF,CAArD,GAA4D,IAA5D,GACLA,EAAE,CAAF,CADK,GACE,IADF,GACSA,EAAE,CAAF,CADT,GACgB,IADhB,GACuBA,EAAE,CAAF,CADvB,GAC8B,IAD9B,GACqCA,EAAE,CAAF,CADrC,GAC4C,GADnD;AAED;;AAED;;;;;;;AAOO,SAASm+C,WAAT,CAAqBn+C,CAArB,EAAwBC,CAAxB,EAA2B;AAChC,SAAOD,EAAE,CAAF,MAASC,EAAE,CAAF,CAAT,IAAiBD,EAAE,CAAF,MAASC,EAAE,CAAF,CAA1B,IAAkCD,EAAE,CAAF,MAASC,EAAE,CAAF,CAA3C,IAAmDD,EAAE,CAAF,MAASC,EAAE,CAAF,CAA5D,IACLD,EAAE,CAAF,MAASC,EAAE,CAAF,CADJ,IACYD,EAAE,CAAF,MAASC,EAAE,CAAF,CADrB,IAC6BD,EAAE,CAAF,MAASC,EAAE,CAAF,CADtC,IAC8CD,EAAE,CAAF,MAASC,EAAE,CAAF,CAD9D;AAED;;AAED;;;;;;;AAOO,SAAS8Z,MAAT,CAAgB/Z,CAAhB,EAAmBC,CAAnB,EAAsB;AAC3B,MAAI8gD,KAAK/gD,EAAE,CAAF,CAAT;AAAA,MACEqE,KAAKrE,EAAE,CAAF,CADP;AAAA,MAEEwE,KAAKxE,EAAE,CAAF,CAFP;AAAA,MAGE2E,KAAK3E,EAAE,CAAF,CAHP;AAAA,MAIEghD,KAAKhhD,EAAE,CAAF,CAJP;AAAA,MAKEihD,KAAKjhD,EAAE,CAAF,CALP;AAAA,MAMEkhD,KAAKlhD,EAAE,CAAF,CANP;AAAA,MAOEmhD,KAAKnhD,EAAE,CAAF,CAPP;AAQA,MAAIqhD,KAAKphD,EAAE,CAAF,CAAT;AAAA,MACEqE,KAAKrE,EAAE,CAAF,CADP;AAAA,MAEEwE,KAAKxE,EAAE,CAAF,CAFP;AAAA,MAGE2E,KAAK3E,EAAE,CAAF,CAHP;AAAA,MAIEqhD,KAAKrhD,EAAE,CAAF,CAJP;AAAA,MAKEshD,KAAKthD,EAAE,CAAF,CALP;AAAA,MAMEuhD,KAAKvhD,EAAE,CAAF,CANP;AAAA,MAOEwhD,KAAKxhD,EAAE,CAAF,CAPP;AAQA,SAAQ5T,KAAK4U,GAAL,CAAS8/C,KAAKM,EAAd,KAAqBhvC,SAAS2H,OAAT,GAAmB3tB,KAAKgS,GAAL,CAAS,GAAT,EAAchS,KAAK4U,GAAL,CAAS8/C,EAAT,CAAd,EAA4B10D,KAAK4U,GAAL,CAASogD,EAAT,CAA5B,CAAxC,IACNh1D,KAAK4U,GAAL,CAASoD,KAAKC,EAAd,KAAqB+N,SAAS2H,OAAT,GAAmB3tB,KAAKgS,GAAL,CAAS,GAAT,EAAchS,KAAK4U,GAAL,CAASoD,EAAT,CAAd,EAA4BhY,KAAK4U,GAAL,CAASqD,EAAT,CAA5B,CADlC,IAENjY,KAAK4U,GAAL,CAASuD,KAAKC,EAAd,KAAqB4N,SAAS2H,OAAT,GAAmB3tB,KAAKgS,GAAL,CAAS,GAAT,EAAchS,KAAK4U,GAAL,CAASuD,EAAT,CAAd,EAA4BnY,KAAK4U,GAAL,CAASwD,EAAT,CAA5B,CAFlC,IAGNpY,KAAK4U,GAAL,CAAS0D,KAAKC,EAAd,KAAqByN,SAAS2H,OAAT,GAAmB3tB,KAAKgS,GAAL,CAAS,GAAT,EAAchS,KAAK4U,GAAL,CAAS0D,EAAT,CAAd,EAA4BtY,KAAK4U,GAAL,CAAS2D,EAAT,CAA5B,CAHlC,IAINvY,KAAK4U,GAAL,CAAS+/C,KAAKM,EAAd,KAAqBjvC,SAAS2H,OAAT,GAAmB3tB,KAAKgS,GAAL,CAAS,GAAT,EAAchS,KAAK4U,GAAL,CAAS+/C,EAAT,CAAd,EAA4B30D,KAAK4U,GAAL,CAASqgD,EAAT,CAA5B,CAJlC,IAKNj1D,KAAK4U,GAAL,CAASggD,KAAKM,EAAd,KAAqBlvC,SAAS2H,OAAT,GAAmB3tB,KAAKgS,GAAL,CAAS,GAAT,EAAchS,KAAK4U,GAAL,CAASggD,EAAT,CAAd,EAA4B50D,KAAK4U,GAAL,CAASsgD,EAAT,CAA5B,CALlC,IAMNl1D,KAAK4U,GAAL,CAASigD,KAAKM,EAAd,KAAqBnvC,SAAS2H,OAAT,GAAmB3tB,KAAKgS,GAAL,CAAS,GAAT,EAAchS,KAAK4U,GAAL,CAASigD,EAAT,CAAd,EAA4B70D,KAAK4U,GAAL,CAASugD,EAAT,CAA5B,CANlC,IAONn1D,KAAK4U,GAAL,CAASkgD,KAAKM,EAAd,KAAqBpvC,SAAS2H,OAAT,GAAmB3tB,KAAKgS,GAAL,CAAS,GAAT,EAAchS,KAAK4U,GAAL,CAASkgD,EAAT,CAAd,EAA4B90D,KAAK4U,GAAL,CAASwgD,EAAT,CAA5B,CAP1C;AAQD,C;;;;;;;;;;;;;QC1zBejZ,M,GAAAA,M;QAaA2I,K,GAAAA,K;QAcA7J,U,GAAAA,U;QAcAuS,I,GAAAA,I;QAcA1xD,G,GAAAA,G;QAcA4X,G,GAAAA,G;QAcAI,Q,GAAAA,Q;QAcAsoC,Q,GAAAA,Q;QAcAihB,M,GAAAA,M;QAaAvrD,I,GAAAA,I;QAaA7R,K,GAAAA,K;QAcA8R,G,GAAAA,G;QAcAC,G,GAAAA,G;QAaAH,K,GAAAA,K;QAcAqE,K,GAAAA,K;QAeAonD,W,GAAAA,W;QAaAC,Q,GAAAA,Q;QAaAC,e,GAAAA,e;QAYAp7D,M,GAAAA,M;QAYAu6D,a,GAAAA,a;QAaAc,M,GAAAA,M;QAaAC,O,GAAAA,O;QAaA3oD,S,GAAAA,S;QAoBAZ,G,GAAAA,G;QAaAI,K,GAAAA,K;QAgBAmoD,I,GAAAA,I;QAeAnpD,M,GAAAA,M;QAgBAuhF,a,GAAAA,a;QAgBAC,c,GAAAA,c;QAiBAl3B,a,GAAAA,a;QAkBA3iB,a,GAAAA,a;QAcA78C,G,GAAAA,G;QAWAyzD,W,GAAAA,W;QAWApkC,M,GAAAA,M;;AA3dhB;;IAAY1H,Q;;;;AAEZ;;;;;AAKA;;;;;AAKO,SAASm2B,MAAT,GAAkB;AACvB,MAAItoC,MAAM,IAAImS,SAAS4H,UAAb,CAAwB,CAAxB,CAAV;AACA/Z,MAAI,CAAJ,IAAS,CAAT;AACAA,MAAI,CAAJ,IAAS,CAAT;AACA,SAAOA,GAAP;AACD;;AAED;;;;;;AAvCA;;;;;;;;;;;;;;;;;;;;AA6CO,SAASixC,KAAT,CAAenxC,CAAf,EAAkB;AACvB,MAAIE,MAAM,IAAImS,SAAS4H,UAAb,CAAwB,CAAxB,CAAV;AACA/Z,MAAI,CAAJ,IAASF,EAAE,CAAF,CAAT;AACAE,MAAI,CAAJ,IAASF,EAAE,CAAF,CAAT;AACA,SAAOE,GAAP;AACD;;AAED;;;;;;;AAOO,SAASonC,UAAT,CAAoBroC,CAApB,EAAuBwB,CAAvB,EAA0B;AAC/B,MAAIP,MAAM,IAAImS,SAAS4H,UAAb,CAAwB,CAAxB,CAAV;AACA/Z,MAAI,CAAJ,IAASjB,CAAT;AACAiB,MAAI,CAAJ,IAASO,CAAT;AACA,SAAOP,GAAP;AACD;;AAED;;;;;;;AAOO,SAAS25C,IAAT,CAAc35C,GAAd,EAAmBF,CAAnB,EAAsB;AAC3BE,MAAI,CAAJ,IAASF,EAAE,CAAF,CAAT;AACAE,MAAI,CAAJ,IAASF,EAAE,CAAF,CAAT;AACA,SAAOE,GAAP;AACD;;AAED;;;;;;;;AAQO,SAAS/X,GAAT,CAAa+X,GAAb,EAAkBjB,CAAlB,EAAqBwB,CAArB,EAAwB;AAC7BP,MAAI,CAAJ,IAASjB,CAAT;AACAiB,MAAI,CAAJ,IAASO,CAAT;AACA,SAAOP,GAAP;AACD;;AAED;;;;;;;;AAQO,SAASH,GAAT,CAAaG,GAAb,EAAkBF,CAAlB,EAAqBC,CAArB,EAAwB;AAC7BC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,EAAE,CAAF,CAAhB;AACAC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,EAAE,CAAF,CAAhB;AACA,SAAOC,GAAP;AACD;;AAED;;;;;;;;AAQO,SAASC,QAAT,CAAkBD,GAAlB,EAAuBF,CAAvB,EAA0BC,CAA1B,EAA6B;AAClCC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,EAAE,CAAF,CAAhB;AACAC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,EAAE,CAAF,CAAhB;AACA,SAAOC,GAAP;AACD;;AAED;;;;;;;;AAQO,SAASuoC,QAAT,CAAkBvoC,GAAlB,EAAuBF,CAAvB,EAA0BC,CAA1B,EAA6B;AAClCC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,EAAE,CAAF,CAAhB;AACAC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,EAAE,CAAF,CAAhB;AACA,SAAOC,GAAP;AACD;;AAED;;;;;;;;AAQO,SAASwpD,MAAT,CAAgBxpD,GAAhB,EAAqBF,CAArB,EAAwBC,CAAxB,EAA2B;AAChCC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,EAAE,CAAF,CAAhB;AACAC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,EAAE,CAAF,CAAhB;AACA,SAAOC,GAAP;AACD;;AAED;;;;;;;AAOO,SAAS/B,IAAT,CAAc+B,GAAd,EAAmBF,CAAnB,EAAsB;AAC3BE,MAAI,CAAJ,IAAS7T,KAAK8R,IAAL,CAAU6B,EAAE,CAAF,CAAV,CAAT;AACAE,MAAI,CAAJ,IAAS7T,KAAK8R,IAAL,CAAU6B,EAAE,CAAF,CAAV,CAAT;AACA,SAAOE,GAAP;AACD;;AAED;;;;;;;AAOO,SAAS5T,KAAT,CAAe4T,GAAf,EAAoBF,CAApB,EAAuB;AAC5BE,MAAI,CAAJ,IAAS7T,KAAKC,KAAL,CAAW0T,EAAE,CAAF,CAAX,CAAT;AACAE,MAAI,CAAJ,IAAS7T,KAAKC,KAAL,CAAW0T,EAAE,CAAF,CAAX,CAAT;AACA,SAAOE,GAAP;AACD;;AAED;;;;;;;;AAQO,SAAS9B,GAAT,CAAa8B,GAAb,EAAkBF,CAAlB,EAAqBC,CAArB,EAAwB;AAC7BC,MAAI,CAAJ,IAAS7T,KAAK+R,GAAL,CAAS4B,EAAE,CAAF,CAAT,EAAeC,EAAE,CAAF,CAAf,CAAT;AACAC,MAAI,CAAJ,IAAS7T,KAAK+R,GAAL,CAAS4B,EAAE,CAAF,CAAT,EAAeC,EAAE,CAAF,CAAf,CAAT;AACA,SAAOC,GAAP;AACD;;AAED;;;;;;;;AAQO,SAAS7B,GAAT,CAAa6B,GAAb,EAAkBF,CAAlB,EAAqBC,CAArB,EAAwB;AAC7BC,MAAI,CAAJ,IAAS7T,KAAKgS,GAAL,CAAS2B,EAAE,CAAF,CAAT,EAAeC,EAAE,CAAF,CAAf,CAAT;AACAC,MAAI,CAAJ,IAAS7T,KAAKgS,GAAL,CAAS2B,EAAE,CAAF,CAAT,EAAeC,EAAE,CAAF,CAAf,CAAT;AACA,SAAOC,GAAP;AACD;;AAED;;;;;;;AAOO,SAAShC,KAAT,CAAgBgC,GAAhB,EAAqBF,CAArB,EAAwB;AAC7BE,MAAI,CAAJ,IAAS7T,KAAK6R,KAAL,CAAW8B,EAAE,CAAF,CAAX,CAAT;AACAE,MAAI,CAAJ,IAAS7T,KAAK6R,KAAL,CAAW8B,EAAE,CAAF,CAAX,CAAT;AACA,SAAOE,GAAP;AACD;;AAED;;;;;;;;AAQO,SAASqC,KAAT,CAAerC,GAAf,EAAoBF,CAApB,EAAuBC,CAAvB,EAA0B;AAC/BC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,CAAhB;AACAC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,CAAhB;AACA,SAAOC,GAAP;AACD;;AAED;;;;;;;;;AASO,SAASypD,WAAT,CAAqBzpD,GAArB,EAA0BF,CAA1B,EAA6BC,CAA7B,EAAgCsC,KAAhC,EAAuC;AAC5CrC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAQC,EAAE,CAAF,IAAOsC,KAAxB;AACArC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAQC,EAAE,CAAF,IAAOsC,KAAxB;AACA,SAAOrC,GAAP;AACD;;AAED;;;;;;;AAOO,SAAS0pD,QAAT,CAAkB5pD,CAAlB,EAAqBC,CAArB,EAAwB;AAC7B,MAAIhB,IAAIgB,EAAE,CAAF,IAAOD,EAAE,CAAF,CAAf;AAAA,MACES,IAAIR,EAAE,CAAF,IAAOD,EAAE,CAAF,CADb;AAEA,SAAO3T,KAAK6U,IAAL,CAAUjC,IAAEA,CAAF,GAAMwB,IAAEA,CAAlB,CAAP;AACD;;AAED;;;;;;;AAOO,SAASopD,eAAT,CAAyB7pD,CAAzB,EAA4BC,CAA5B,EAA+B;AACpC,MAAIhB,IAAIgB,EAAE,CAAF,IAAOD,EAAE,CAAF,CAAf;AAAA,MACES,IAAIR,EAAE,CAAF,IAAOD,EAAE,CAAF,CADb;AAEA,SAAOf,IAAEA,CAAF,GAAMwB,IAAEA,CAAf;AACD;;AAED;;;;;;AAMO,SAAShS,MAAT,CAAgBuR,CAAhB,EAAmB;AACxB,MAAIf,IAAIe,EAAE,CAAF,CAAR;AAAA,MACES,IAAIT,EAAE,CAAF,CADN;AAEA,SAAO3T,KAAK6U,IAAL,CAAUjC,IAAEA,CAAF,GAAMwB,IAAEA,CAAlB,CAAP;AACD;;AAED;;;;;;AAMO,SAASuoD,aAAT,CAAwBhpD,CAAxB,EAA2B;AAChC,MAAIf,IAAIe,EAAE,CAAF,CAAR;AAAA,MACES,IAAIT,EAAE,CAAF,CADN;AAEA,SAAOf,IAAEA,CAAF,GAAMwB,IAAEA,CAAf;AACD;;AAED;;;;;;;AAOO,SAASqpD,MAAT,CAAgB5pD,GAAhB,EAAqBF,CAArB,EAAwB;AAC7BE,MAAI,CAAJ,IAAS,CAACF,EAAE,CAAF,CAAV;AACAE,MAAI,CAAJ,IAAS,CAACF,EAAE,CAAF,CAAV;AACA,SAAOE,GAAP;AACD;;AAED;;;;;;;AAOO,SAAS6pD,OAAT,CAAiB7pD,GAAjB,EAAsBF,CAAtB,EAAyB;AAC9BE,MAAI,CAAJ,IAAS,MAAMF,EAAE,CAAF,CAAf;AACAE,MAAI,CAAJ,IAAS,MAAMF,EAAE,CAAF,CAAf;AACA,SAAOE,GAAP;AACD;;AAED;;;;;;;AAOO,SAASkB,SAAT,CAAmBlB,GAAnB,EAAwBF,CAAxB,EAA2B;AAChC,MAAIf,IAAIe,EAAE,CAAF,CAAR;AAAA,MACES,IAAIT,EAAE,CAAF,CADN;AAEA,MAAIvB,MAAMQ,IAAEA,CAAF,GAAMwB,IAAEA,CAAlB;AACA,MAAIhC,MAAM,CAAV,EAAa;AACX;AACAA,UAAM,IAAIpS,KAAK6U,IAAL,CAAUzC,GAAV,CAAV;AACAyB,QAAI,CAAJ,IAASF,EAAE,CAAF,IAAOvB,GAAhB;AACAyB,QAAI,CAAJ,IAASF,EAAE,CAAF,IAAOvB,GAAhB;AACD;AACD,SAAOyB,GAAP;AACD;;AAED;;;;;;;AAOO,SAASM,GAAT,CAAaR,CAAb,EAAgBC,CAAhB,EAAmB;AACxB,SAAOD,EAAE,CAAF,IAAOC,EAAE,CAAF,CAAP,GAAcD,EAAE,CAAF,IAAOC,EAAE,CAAF,CAA5B;AACD;;AAED;;;;;;;;;AASO,SAASW,KAAT,CAAeV,GAAf,EAAoBF,CAApB,EAAuBC,CAAvB,EAA0B;AAC/B,MAAIsB,IAAIvB,EAAE,CAAF,IAAOC,EAAE,CAAF,CAAP,GAAcD,EAAE,CAAF,IAAOC,EAAE,CAAF,CAA7B;AACAC,MAAI,CAAJ,IAASA,IAAI,CAAJ,IAAS,CAAlB;AACAA,MAAI,CAAJ,IAASqB,CAAT;AACA,SAAOrB,GAAP;AACD;;AAED;;;;;;;;;AASO,SAAS6oD,IAAT,CAAc7oD,GAAd,EAAmBF,CAAnB,EAAsBC,CAAtB,EAAyBsI,CAAzB,EAA4B;AACjC,MAAIi7C,KAAKxjD,EAAE,CAAF,CAAT;AAAA,MACEyjD,KAAKzjD,EAAE,CAAF,CADP;AAEAE,MAAI,CAAJ,IAASsjD,KAAKj7C,KAAKtI,EAAE,CAAF,IAAOujD,EAAZ,CAAd;AACAtjD,MAAI,CAAJ,IAASujD,KAAKl7C,KAAKtI,EAAE,CAAF,IAAOwjD,EAAZ,CAAd;AACA,SAAOvjD,GAAP;AACD;;AAED;;;;;;;AAOO,SAASN,MAAT,CAAgBM,GAAhB,EAAqBqC,KAArB,EAA4B;AACjCA,UAAQA,SAAS,GAAjB;AACA,MAAInD,IAAIiT,SAAS6H,MAAT,KAAoB,GAApB,GAA0B7tB,KAAKwR,EAAvC;AACAqC,MAAI,CAAJ,IAAS7T,KAAK8V,GAAL,CAAS/C,CAAT,IAAcmD,KAAvB;AACArC,MAAI,CAAJ,IAAS7T,KAAK4V,GAAL,CAAS7C,CAAT,IAAcmD,KAAvB;AACA,SAAOrC,GAAP;AACD;;AAED;;;;;;;;AAQO,SAASihF,aAAT,CAAuBjhF,GAAvB,EAA4BF,CAA5B,EAA+Bb,CAA/B,EAAkC;AACvC,MAAIF,IAAIe,EAAE,CAAF,CAAR;AAAA,MACES,IAAIT,EAAE,CAAF,CADN;AAEAE,MAAI,CAAJ,IAASf,EAAE,CAAF,IAAOF,CAAP,GAAWE,EAAE,CAAF,IAAOsB,CAA3B;AACAP,MAAI,CAAJ,IAASf,EAAE,CAAF,IAAOF,CAAP,GAAWE,EAAE,CAAF,IAAOsB,CAA3B;AACA,SAAOP,GAAP;AACD;;AAED;;;;;;;;AAQO,SAASkhF,cAAT,CAAwBlhF,GAAxB,EAA6BF,CAA7B,EAAgCb,CAAhC,EAAmC;AACxC,MAAIF,IAAIe,EAAE,CAAF,CAAR;AAAA,MACES,IAAIT,EAAE,CAAF,CADN;AAEAE,MAAI,CAAJ,IAASf,EAAE,CAAF,IAAOF,CAAP,GAAWE,EAAE,CAAF,IAAOsB,CAAlB,GAAsBtB,EAAE,CAAF,CAA/B;AACAe,MAAI,CAAJ,IAASf,EAAE,CAAF,IAAOF,CAAP,GAAWE,EAAE,CAAF,IAAOsB,CAAlB,GAAsBtB,EAAE,CAAF,CAA/B;AACA,SAAOe,GAAP;AACD;;AAED;;;;;;;;;AASO,SAASgqD,aAAT,CAAuBhqD,GAAvB,EAA4BF,CAA5B,EAA+Bb,CAA/B,EAAkC;AACvC,MAAIF,IAAIe,EAAE,CAAF,CAAR;AAAA,MACES,IAAIT,EAAE,CAAF,CADN;AAEAE,MAAI,CAAJ,IAASf,EAAE,CAAF,IAAOF,CAAP,GAAWE,EAAE,CAAF,IAAOsB,CAAlB,GAAsBtB,EAAE,CAAF,CAA/B;AACAe,MAAI,CAAJ,IAASf,EAAE,CAAF,IAAOF,CAAP,GAAWE,EAAE,CAAF,IAAOsB,CAAlB,GAAsBtB,EAAE,CAAF,CAA/B;AACA,SAAOe,GAAP;AACD;;AAED;;;;;;;;;;AAUO,SAASqnC,aAAT,CAAuBrnC,GAAvB,EAA4BF,CAA5B,EAA+Bb,CAA/B,EAAkC;AACvC,MAAIF,IAAIe,EAAE,CAAF,CAAR;AACA,MAAIS,IAAIT,EAAE,CAAF,CAAR;AACAE,MAAI,CAAJ,IAASf,EAAE,CAAF,IAAOF,CAAP,GAAWE,EAAE,CAAF,IAAOsB,CAAlB,GAAsBtB,EAAE,EAAF,CAA/B;AACAe,MAAI,CAAJ,IAASf,EAAE,CAAF,IAAOF,CAAP,GAAWE,EAAE,CAAF,IAAOsB,CAAlB,GAAsBtB,EAAE,EAAF,CAA/B;AACA,SAAOe,GAAP;AACD;;AAED;;;;;;AAMO,SAASxV,GAAT,CAAasV,CAAb,EAAgB;AACrB,SAAO,UAAUA,EAAE,CAAF,CAAV,GAAiB,IAAjB,GAAwBA,EAAE,CAAF,CAAxB,GAA+B,GAAtC;AACD;;AAED;;;;;;;AAOO,SAASm+C,WAAT,CAAqBn+C,CAArB,EAAwBC,CAAxB,EAA2B;AAChC,SAAOD,EAAE,CAAF,MAASC,EAAE,CAAF,CAAT,IAAiBD,EAAE,CAAF,MAASC,EAAE,CAAF,CAAjC;AACD;;AAED;;;;;;;AAOO,SAAS8Z,MAAT,CAAgB/Z,CAAhB,EAAmBC,CAAnB,EAAsB;AAC3B,MAAI8gD,KAAK/gD,EAAE,CAAF,CAAT;AAAA,MAAeqE,KAAKrE,EAAE,CAAF,CAApB;AACA,MAAIqhD,KAAKphD,EAAE,CAAF,CAAT;AAAA,MAAeqE,KAAKrE,EAAE,CAAF,CAApB;AACA,SAAQ5T,KAAK4U,GAAL,CAAS8/C,KAAKM,EAAd,KAAqBhvC,SAAS2H,OAAT,GAAiB3tB,KAAKgS,GAAL,CAAS,GAAT,EAAchS,KAAK4U,GAAL,CAAS8/C,EAAT,CAAd,EAA4B10D,KAAK4U,GAAL,CAASogD,EAAT,CAA5B,CAAtC,IACAh1D,KAAK4U,GAAL,CAASoD,KAAKC,EAAd,KAAqB+N,SAAS2H,OAAT,GAAiB3tB,KAAKgS,GAAL,CAAS,GAAT,EAAchS,KAAK4U,GAAL,CAASoD,EAAT,CAAd,EAA4BhY,KAAK4U,GAAL,CAASqD,EAAT,CAA5B,CAD9C;AAED;;AAED;;;;AAIO,IAAM7F,oBAAMhQ,MAAZ;;AAEP;;;;AAIO,IAAMmzD,oBAAMzhD,QAAZ;;AAEP;;;;AAIO,IAAMwhD,oBAAMlZ,QAAZ;;AAEP;;;;AAIO,IAAMijB,oBAAMhC,MAAZ;;AAEP;;;;AAIO,IAAMiC,sBAAO/B,QAAb;;AAEP;;;;AAIO,IAAMgC,4BAAU/B,eAAhB;;AAEP;;;;AAIO,IAAMZ,0BAASD,aAAf;;AAEP;;;;;;;;;;;;AAYO,IAAMp/D,4BAAW,YAAW;AACjC,MAAIyW,MAAMmoC,QAAV;;AAEA,SAAO,UAASxoC,CAAT,EAAYoqC,MAAZ,EAAoB92B,MAApB,EAA4B3kB,KAA5B,EAAmCnE,EAAnC,EAAuCqhE,GAAvC,EAA4C;AACjD,QAAIn6D,UAAJ;AAAA,QAAOg/C,UAAP;AACA,QAAG,CAACtG,MAAJ,EAAY;AACVA,eAAS,CAAT;AACD;;AAED,QAAG,CAAC92B,MAAJ,EAAY;AACVA,eAAS,CAAT;AACD;;AAED,QAAG3kB,KAAH,EAAU;AACR+hD,UAAIrkD,KAAK+R,GAAL,CAAUzP,QAAQy7C,MAAT,GAAmB92B,MAA5B,EAAoCtT,EAAEvR,MAAtC,CAAJ;AACD,KAFD,MAEO;AACLiiD,UAAI1wC,EAAEvR,MAAN;AACD;;AAED,SAAIiD,IAAI4hB,MAAR,EAAgB5hB,IAAIg/C,CAApB,EAAuBh/C,KAAK04C,MAA5B,EAAoC;AAClC/pC,UAAI,CAAJ,IAASL,EAAEtO,CAAF,CAAT,CAAe2O,IAAI,CAAJ,IAASL,EAAEtO,IAAE,CAAJ,CAAT;AACflH,SAAG6V,GAAH,EAAQA,GAAR,EAAawrD,GAAb;AACA7rD,QAAEtO,CAAF,IAAO2O,IAAI,CAAJ,CAAP,CAAeL,EAAEtO,IAAE,CAAJ,IAAS2O,IAAI,CAAJ,CAAT;AAChB;;AAED,WAAOL,CAAP;AACD,GAvBD;AAwBD,CA3BsB,EAAhB,C;;;;;;;;;;;;;QC5YShL,M,GAAAA,M;;AAhKhB;;AAEA;;;;AACA;;;;AACA;;;;AACA;;;;;;AAEA;AACA;AACA;;AAEA,SAASqsF,SAAT,CAAmB7zF,SAAnB,EAA8Bd,KAA9B,EAAqC;AACnC;AACAA,QAAMkB,cAAN,CAAqBxB,IAArB,CAA0B,WAA1B;;AAEAoB,YAAU8zF,WAAV,GAAwB,UAACC,QAAD,EAAc;AACpC70F,UAAMuW,QAAN,GAAiBvW,MAAMuW,QAAN,CAAenU,GAAf,CACf,UAAClD,KAAD,EAAQkC,KAAR;AAAA,aAAkBlC,QAAQ21F,SAASzzF,KAAT,CAA1B;AAAA,KADe,CAAjB;AAGAN,cAAUY,QAAV;AACD,GALD;;AAOAZ,YAAUg0F,kBAAV,GAA+B,YAAM;AACnC,QAAMzhC,IAAI,eAAKvX,MAAL,EAAV;AACA,mBAAK4Z,WAAL,CAAiBrC,CAAjB,EAAoBrzD,MAAMimF,QAA1B;AACA,QAAM8O,QAAQ,eAAKj5C,MAAL,EAAd;AACA,QAAMtgC,IAAI,eAAK2/C,YAAL,CAAkB45B,KAAlB,EAAyB1hC,CAAzB,CAAV;AACA,WAAO,CAAC,eAAQ/hD,kBAAR,CAA2BkK,CAA3B,CAAD,EAAgCu5E,MAAM,CAAN,CAAhC,EAA0CA,MAAM,CAAN,CAA1C,EAAoDA,MAAM,CAAN,CAApD,CAAP;AACD,GAND;;AAQAj0F,YAAU0vD,OAAV,GAAoB,UAAC5tD,GAAD,EAAS;AAC3B,QAAIA,QAAQ,GAAZ,EAAiB;AACf;AACD;AACD,mBAAK4tD,OAAL,CACExwD,MAAMimF,QADR,EAEEjmF,MAAMimF,QAFR,EAGE,eAAQ70E,kBAAR,CAA2BxO,GAA3B,CAHF;AAKA9B,cAAUY,QAAV;AACD,GAVD;;AAYAZ,YAAU2vD,OAAV,GAAoB,UAAC7tD,GAAD,EAAS;AAC3B,QAAIA,QAAQ,GAAZ,EAAiB;AACf;AACD;AACD,mBAAK6tD,OAAL,CACEzwD,MAAMimF,QADR,EAEEjmF,MAAMimF,QAFR,EAGE,eAAQ70E,kBAAR,CAA2BxO,GAA3B,CAHF;AAKA9B,cAAUY,QAAV;AACD,GAVD;;AAYAZ,YAAU4vD,OAAV,GAAoB,UAAC9tD,GAAD,EAAS;AAC3B,QAAIA,QAAQ,GAAZ,EAAiB;AACf;AACD;AACD,mBAAK8tD,OAAL,CACE1wD,MAAMimF,QADR,EAEEjmF,MAAMimF,QAFR,EAGE,eAAQ70E,kBAAR,CAA2BxO,GAA3B,CAHF;AAKA9B,cAAUY,QAAV;AACD,GAVD;;AAYAZ,YAAUk0F,UAAV,GAAuB,UAACC,OAAD,EAAU1iF,CAAV,EAAawB,CAAb,EAAgBc,CAAhB,EAAsB;AAC3C,QAAIogF,YAAY,GAAZ,IAAoB1iF,MAAM,GAAN,IAAawB,MAAM,GAAnB,IAA0Bc,MAAM,GAAxD,EAA8D;AAC5D;AACD;;AAED;AACA,QAAMy7C,QAAQ,eAAQl/C,kBAAR,CAA2B6jF,OAA3B,CAAd;;AAEA,QAAM5hC,IAAI,eAAKvX,MAAL,EAAV;AACA,mBAAKof,YAAL,CAAkB7H,CAAlB,EAAqB,CAAC9gD,CAAD,EAAIwB,CAAJ,EAAOc,CAAP,CAArB,EAAgCy7C,KAAhC;;AAEA,QAAM4kC,UAAU,eAAKp5C,MAAL,EAAhB;AACA,mBAAKuV,QAAL,CAAc6jC,OAAd,EAAuB7hC,CAAvB;AACA,mBAAKtX,QAAL,CAAc/7C,MAAMimF,QAApB,EAA8BjmF,MAAMimF,QAApC,EAA8CiP,OAA9C;AACAp0F,cAAUY,QAAV;AACD,GAfD;;AAiBAZ,YAAUq0F,aAAV,GAA0B,UAAClyC,MAAD,EAAY;AACpC,mBAAKkK,IAAL,CAAUntD,MAAMo1F,UAAhB,EAA4BnyC,MAA5B;AACAniD,cAAUY,QAAV;AACD,GAHD;;AAKAZ,YAAUw4C,SAAV,GAAsB,YAAM;AAC1Bx4C,cAAUiiD,aAAV;AACA,WAAO/iD,MAAMijD,MAAb;AACD,GAHD;;AAKAniD,YAAUiiD,aAAV,GAA0B,YAAM;AAC9B;AACA,QAAIjiD,UAAUc,QAAV,KAAuB5B,MAAMq1F,WAAN,CAAkBzzF,QAAlB,EAA3B,EAAyD;AACvD,qBAAKo6C,QAAL,CAAch8C,MAAMijD,MAApB;AACA,UAAIjjD,MAAMo1F,UAAV,EAAsB;AACpB,uBAAKr5C,QAAL,CAAc/7C,MAAMijD,MAApB,EAA4BjjD,MAAMijD,MAAlC,EAA0CjjD,MAAMo1F,UAAhD;AACD;AACD,qBAAKh3D,SAAL,CAAep+B,MAAMijD,MAArB,EAA6BjjD,MAAMijD,MAAnC,EAA2CjjD,MAAMkmD,MAAjD;AACA,qBAAK9nB,SAAL,CAAep+B,MAAMijD,MAArB,EAA6BjjD,MAAMijD,MAAnC,EAA2CjjD,MAAMuW,QAAjD;AACA,qBAAKwlC,QAAL,CAAc/7C,MAAMijD,MAApB,EAA4BjjD,MAAMijD,MAAlC,EAA0CjjD,MAAMimF,QAAhD;AACA,qBAAKpwE,KAAL,CAAW7V,MAAMijD,MAAjB,EAAyBjjD,MAAMijD,MAA/B,EAAuCjjD,MAAM6V,KAA7C;AACA,qBAAKuoB,SAAL,CAAep+B,MAAMijD,MAArB,EAA6BjjD,MAAMijD,MAAnC,EAA2C,CACzC,CAACjjD,MAAMkmD,MAAN,CAAa,CAAb,CADwC,EAEzC,CAAClmD,MAAMkmD,MAAN,CAAa,CAAb,CAFwC,EAGzC,CAAClmD,MAAMkmD,MAAN,CAAa,CAAb,CAHwC,CAA3C;AAKA,qBAAK1L,SAAL,CAAex6C,MAAMijD,MAArB,EAA6BjjD,MAAMijD,MAAnC;;AAEA;AACAjjD,YAAMs1F,UAAN,GAAmB,IAAnB;AACA,WAAK,IAAItwF,IAAI,CAAb,EAAgBA,IAAI,CAApB,EAAuB,EAAEA,CAAzB,EAA4B;AAC1B,aAAK,IAAI8N,IAAI,CAAb,EAAgBA,IAAI,CAApB,EAAuB,EAAEA,CAAzB,EAA4B;AAC1B,cAAI,CAAC9N,MAAM8N,CAAN,GAAU,GAAV,GAAgB,GAAjB,MAA0B9S,MAAMijD,MAAN,CAAaj+C,IAAI8N,IAAI,CAArB,CAA9B,EAAuD;AACrD9S,kBAAMs1F,UAAN,GAAmB,KAAnB;AACD;AACF;AACF;AACDt1F,YAAMq1F,WAAN,CAAkB3zF,QAAlB;AACD;AACF,GA7BD;;AA+BAZ,YAAU2iD,SAAV,GAAsB;AAAA,WAAM,sBAAeA,SAAf,CAAyBzjD,MAAM2iB,MAA/B,CAAN;AAAA,GAAtB;AACA7hB,YAAU4iD,SAAV,GAAsB;AAAA,WAAM,sBAAeA,SAAf,CAAyB1jD,MAAM2iB,MAA/B,CAAN;AAAA,GAAtB;AACA7hB,YAAU8iD,SAAV,GAAsB;AAAA,WAAM,sBAAeA,SAAf,CAAyB5jD,MAAM2iB,MAA/B,CAAN;AAAA,GAAtB;AACA7hB,YAAU+iD,SAAV,GAAsB;AAAA,WAAM,sBAAeA,SAAf,CAAyB7jD,MAAM2iB,MAA/B,CAAN;AAAA,GAAtB;AACA7hB,YAAUgjD,SAAV,GAAsB;AAAA,WAAM,sBAAeA,SAAf,CAAyB9jD,MAAM2iB,MAA/B,CAAN;AAAA,GAAtB;;AAEA7hB,YAAUy0F,aAAV,GAA0B;AAAA,WAAMv1F,MAAMo1F,UAAZ;AAAA,GAA1B;;AAEA,WAASI,kBAAT,GAA8B;AAC5B10F,cAAUiiD,aAAV;AACD;;AAEDjiD,YAAUgB,UAAV,CAAqB0zF,kBAArB;AACD;;AAED;AACA;AACA;;AAEA,IAAMlsE,iBAAiB;AACrB48B,UAAQ,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CADa;AAErB3vC,YAAU,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAFW;AAGrB0vE,YAAU,IAHW;AAIrBpwE,SAAO,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAJc;AAKrB8M,UAAQ,CAAC,CAAD,EAAI,CAAC,CAAL,EAAQ,CAAR,EAAW,CAAC,CAAZ,EAAe,CAAf,EAAkB,CAAC,CAAnB,CALa;;AAOrByyE,cAAY,IAPS;AAQrBK,mBAAiB,IARI;;AAUrBC,gBAAc,IAVO;AAWrBJ,cAAY,IAXS;AAYrBD,eAAa;AAZQ,CAAvB;;AAeA;;AAEO,SAAS/sF,MAAT,CAAgBxH,SAAhB,EAA2Bd,KAA3B,EAAsD;AAAA,MAApBwI,aAAoB,uEAAJ,EAAI;;AAC3DvI,SAAOgD,MAAP,CAAcjD,KAAd,EAAqBspB,cAArB,EAAqC9gB,aAArC;;AAEA;AACA,iBAAQF,MAAR,CAAexH,SAAf,EAA0Bd,KAA1B,EAAiCwI,aAAjC;;AAEAxI,QAAMq1F,WAAN,GAAoB,EAApB;AACA,kBAAM95F,GAAN,CAAUyE,MAAMq1F,WAAhB;;AAEA;AACA,kBAAM75F,GAAN,CAAUsF,SAAV,EAAqBd,KAArB,EAA4B,CAAC,QAAD,EAAW,YAAX,CAA5B;AACA,kBAAMnE,WAAN,CACEiF,SADF,EAEEd,KAFF,EAGE,CAAC,QAAD,EAAW,UAAX,EAAuB,aAAvB,EAAsC,OAAtC,CAHF,EAIE,CAJF;;AAOA;AACAA,QAAMijD,MAAN,GAAe,eAAKnH,MAAL,EAAf;AACA97C,QAAMimF,QAAN,GAAiB,eAAKnqC,MAAL,EAAjB;AACA97C,QAAMo1F,UAAN,GAAmB,eAAKt5C,MAAL,EAAnB;AACA97C,QAAM21F,SAAN,GAAkB,IAAlB,CAtB2D,CAsBnC;;AAExB;AACAhB,YAAU7zF,SAAV,EAAqBd,KAArB;AACD;;AAED;;AAEO,IAAMhE,oCAAc,gBAAMA,WAAN,CAAkBsM,MAAlB,EAA0B,WAA1B,CAApB;;AAEP;;kBAEe,EAAEtM,wBAAF,EAAesM,cAAf,E;;;;;;;;;;;;;QCnECstF,Q,GAAAA,Q;QA+DAttF,M,GAAAA,M;;AA9LhB;;;;AACA;;;;;;AAEA,IAAMutF,kBAAkB,MAAxB;;AAEA;AACA;AACA;;AAEA,SAASzvC,QAAT,CAAkBD,MAAlB,EAA0BD,MAA1B,EAAkC3zC,CAAlC,EAAqC;AACnC,SACE4zC,OAAO,CAAP,KAAa5zC,EAAE,CAAF,IAAO2zC,OAAO,CAAP,CAApB,IACAC,OAAO,CAAP,KAAa5zC,EAAE,CAAF,IAAO2zC,OAAO,CAAP,CAApB,CADA,GAEAC,OAAO,CAAP,KAAa5zC,EAAE,CAAF,IAAO2zC,OAAO,CAAP,CAApB,CAHF;AAKD;;AAED,SAAS4vC,eAAT,CAAyBvjF,CAAzB,EAA4B2zC,MAA5B,EAAoCC,MAApC,EAA4C;AAC1C,MAAM+W,WACJ/W,OAAO,CAAP,KAAa5zC,EAAE,CAAF,IAAO2zC,OAAO,CAAP,CAApB,IACAC,OAAO,CAAP,KAAa5zC,EAAE,CAAF,IAAO2zC,OAAO,CAAP,CAApB,CADA,GAEAC,OAAO,CAAP,KAAa5zC,EAAE,CAAF,IAAO2zC,OAAO,CAAP,CAApB,CAHF;;AAKA,SAAOvmD,KAAK4U,GAAL,CAAS2oD,QAAT,CAAP;AACD;;AAED,SAAS64B,YAAT,CAAsBxjF,CAAtB,EAAyB2zC,MAAzB,EAAiCC,MAAjC,EAAyC6vC,KAAzC,EAAgD;AAC9C,MAAMC,KAAK,EAAX;AACA,iBAAQxiF,QAAR,CAAiBlB,CAAjB,EAAoB2zC,MAApB,EAA4B+vC,EAA5B;;AAEA,MAAMp6E,IAAI,eAAQ/H,GAAR,CAAYqyC,MAAZ,EAAoB8vC,EAApB,CAAV;;AAEAD,QAAM,CAAN,IAAWzjF,EAAE,CAAF,IAAOsJ,IAAIsqC,OAAO,CAAP,CAAtB;AACA6vC,QAAM,CAAN,IAAWzjF,EAAE,CAAF,IAAOsJ,IAAIsqC,OAAO,CAAP,CAAtB;AACA6vC,QAAM,CAAN,IAAWzjF,EAAE,CAAF,IAAOsJ,IAAIsqC,OAAO,CAAP,CAAtB;AACD;;AAED,SAASzwC,aAAT,CAAuB3Q,CAAvB,EAA0BohD,MAA1B,EAAkC+vC,KAAlC,EAAyC;AACvC,MAAMr6E,IAAI,eAAQ/H,GAAR,CAAY/O,CAAZ,EAAeohD,MAAf,CAAV;;AAEA,MAAIgwC,KAAK,eAAQriF,GAAR,CAAYqyC,MAAZ,EAAoBA,MAApB,CAAT;AACA,MAAIgwC,OAAO,CAAX,EAAc;AACZA,SAAK,GAAL;AACD;;AAEDD,QAAM,CAAN,IAAWnxF,EAAE,CAAF,IAAO8W,IAAIsqC,OAAO,CAAP,CAAJ,GAAgBgwC,EAAlC;AACAD,QAAM,CAAN,IAAWnxF,EAAE,CAAF,IAAO8W,IAAIsqC,OAAO,CAAP,CAAJ,GAAgBgwC,EAAlC;AACAD,QAAM,CAAN,IAAWnxF,EAAE,CAAF,IAAO8W,IAAIsqC,OAAO,CAAP,CAAJ,GAAgBgwC,EAAlC;AACD;;AAED,SAASC,uBAAT,CAAiC7jF,CAAjC,EAAoC2zC,MAApC,EAA4CC,MAA5C,EAAoD6vC,KAApD,EAA2D;AACzD,MAAMC,KAAK,EAAX;AACA,iBAAQxiF,QAAR,CAAiBlB,CAAjB,EAAoB2zC,MAApB,EAA4B+vC,EAA5B;;AAEA,MAAMp6E,IAAI,eAAQ/H,GAAR,CAAYqyC,MAAZ,EAAoB8vC,EAApB,CAAV;AACA,MAAME,KAAK,eAAQriF,GAAR,CAAYqyC,MAAZ,EAAoBA,MAApB,CAAX;;AAEA,MAAIgwC,OAAO,CAAX,EAAc;AACZH,UAAM,CAAN,IAAWzjF,EAAE,CAAF,IAAOsJ,IAAIsqC,OAAO,CAAP,CAAJ,GAAgBgwC,EAAlC;AACAH,UAAM,CAAN,IAAWzjF,EAAE,CAAF,IAAOsJ,IAAIsqC,OAAO,CAAP,CAAJ,GAAgBgwC,EAAlC;AACAH,UAAM,CAAN,IAAWzjF,EAAE,CAAF,IAAOsJ,IAAIsqC,OAAO,CAAP,CAAJ,GAAgBgwC,EAAlC;AACD,GAJD,MAIO;AACLH,UAAM,CAAN,IAAWzjF,EAAE,CAAF,CAAX;AACAyjF,UAAM,CAAN,IAAWzjF,EAAE,CAAF,CAAX;AACAyjF,UAAM,CAAN,IAAWzjF,EAAE,CAAF,CAAX;AACD;AACF;;AAED,SAAS8jF,iBAAT,CAA2BxyE,EAA3B,EAA+BC,EAA/B,EAAmCoiC,MAAnC,EAA2CC,MAA3C,EAAmD;AACjD,MAAMmwC,SAAS,EAAEC,cAAc,KAAhB,EAAuB16E,GAAG1c,OAAOogB,SAAjC,EAA4ChN,GAAG,EAA/C,EAAf;;AAEA,MAAMikF,MAAM,EAAZ;AACA;AACA,iBAAQ/iF,QAAR,CAAiBqQ,EAAjB,EAAqBD,EAArB,EAAyB2yE,GAAzB;;AAEA;AACA,MAAMvpE,MAAM,eAAQnZ,GAAR,CAAYqyC,MAAZ,EAAoBD,MAApB,IAA8B,eAAQpyC,GAAR,CAAYqyC,MAAZ,EAAoBtiC,EAApB,CAA1C;AACA,MAAMlP,MAAM,eAAQb,GAAR,CAAYqyC,MAAZ,EAAoBqwC,GAApB,CAAZ;;AAEA;AACA;AACA,MAAIC,gBAAJ;AACA,MAAIC,sBAAJ;;AAEA;AACA,MAAI/hF,MAAM,GAAV,EAAe;AACb8hF,cAAU,CAAC9hF,GAAX;AACD,GAFD,MAEO;AACL8hF,cAAU9hF,GAAV;AACD;AACD,MAAIsY,MAAM,GAAV,EAAe;AACbypE,oBAAgB,CAACzpE,GAAD,GAAO4oE,eAAvB;AACD,GAFD,MAEO;AACLa,oBAAgBzpE,MAAM4oE,eAAtB;AACD;AACD,MAAIY,WAAWC,aAAf,EAA8B;AAC5B,WAAOJ,MAAP;AACD;;AAED;AACAA,SAAOz6E,CAAP,GAAWoR,MAAMtY,GAAjB;;AAEA2hF,SAAO/jF,CAAP,CAAS,CAAT,IAAcsR,GAAG,CAAH,IAAQyyE,OAAOz6E,CAAP,GAAW26E,IAAI,CAAJ,CAAjC;AACAF,SAAO/jF,CAAP,CAAS,CAAT,IAAcsR,GAAG,CAAH,IAAQyyE,OAAOz6E,CAAP,GAAW26E,IAAI,CAAJ,CAAjC;AACAF,SAAO/jF,CAAP,CAAS,CAAT,IAAcsR,GAAG,CAAH,IAAQyyE,OAAOz6E,CAAP,GAAW26E,IAAI,CAAJ,CAAjC;;AAEAF,SAAOC,YAAP,GAAsBD,OAAOz6E,CAAP,IAAY,GAAZ,IAAmBy6E,OAAOz6E,CAAP,IAAY,GAArD;AACA,SAAOy6E,MAAP;AACD;;AAED;AACA;AACA;;AAEO,IAAMzuE,0BAAS;AACpBu+B,oBADoB;AAEpB0vC,kCAFoB;AAGpBC,4BAHoB;AAIpBrgF,8BAJoB;AAKpB0gF,kDALoB;AAMpBC;AANoB,CAAf;;AASP;AACA;AACA;;AAEO,SAAST,QAAT,CAAkB90F,SAAlB,EAA6Bd,KAA7B,EAAoC;AACzC;AACAA,QAAMkB,cAAN,CAAqBxB,IAArB,CAA0B,UAA1B;;AAEAoB,YAAUg1F,eAAV,GAA4B,UAACvjF,CAAD;AAAA,WAC1BujF,gBAAgBvjF,CAAhB,EAAmBvS,MAAMkmD,MAAzB,EAAiClmD,MAAMmmD,MAAvC,CAD0B;AAAA,GAA5B;;AAGArlD,YAAUi1F,YAAV,GAAyB,UAACxjF,CAAD,EAAIyjF,KAAJ,EAAc;AACrCD,iBAAaxjF,CAAb,EAAgBvS,MAAMkmD,MAAtB,EAA8BlmD,MAAMmmD,MAApC,EAA4C6vC,KAA5C;AACD,GAFD;;AAIAl1F,YAAU4U,aAAV,GAA0B,UAAC3Q,CAAD,EAAImxF,KAAJ,EAAc;AACtCxgF,kBAAc3Q,CAAd,EAAiB/E,MAAMmmD,MAAvB,EAA+B+vC,KAA/B;AACD,GAFD;;AAIAp1F,YAAUpB,IAAV,GAAiB,UAACw9D,QAAD,EAAc;AAC7B,QAAIA,aAAa,GAAjB,EAAsB;AACpB;AACD;AACD,SAAK,IAAIl4D,IAAI,CAAb,EAAgBA,IAAI,CAApB,EAAuBA,GAAvB,EAA4B;AAC1BhF,YAAMkmD,MAAN,CAAalhD,CAAb,KAAmBk4D,WAAWl9D,MAAMmmD,MAAN,CAAanhD,CAAb,CAA9B;AACD;AACF,GAPD;;AASAlE,YAAUs1F,uBAAV,GAAoC,UAAC7jF,CAAD,EAAIyjF,KAAJ,EAAc;AAChDI,4BAAwB7jF,CAAxB,EAA2BvS,MAAMkmD,MAAjC,EAAyClmD,MAAMmmD,MAA/C,EAAuD6vC,KAAvD;AACD,GAFD;;AAIAl1F,YAAU61F,gBAAV,GAA6B,UAACpkF,CAAD,EAAIwB,CAAJ,EAAOc,CAAP,EAAa;AACxC,QAAI,CAACzU,MAAMC,OAAN,CAAckS,CAAd,CAAL,EAAuB;AACrB,aACEvS,MAAMmmD,MAAN,CAAa,CAAb,KAAmB5zC,IAAIvS,MAAMkmD,MAAN,CAAa,CAAb,CAAvB,IACAlmD,MAAMmmD,MAAN,CAAa,CAAb,KAAmBpyC,IAAI/T,MAAMkmD,MAAN,CAAa,CAAb,CAAvB,CADA,GAEAlmD,MAAMmmD,MAAN,CAAa,CAAb,KAAmBtxC,IAAI7U,MAAMkmD,MAAN,CAAa,CAAb,CAAvB,CAHF;AAKD;AACD,WACElmD,MAAMmmD,MAAN,CAAa,CAAb,KAAmB5zC,EAAE,CAAF,IAAOvS,MAAMkmD,MAAN,CAAa,CAAb,CAA1B,IACAlmD,MAAMmmD,MAAN,CAAa,CAAb,KAAmB5zC,EAAE,CAAF,IAAOvS,MAAMkmD,MAAN,CAAa,CAAb,CAA1B,CADA,GAEAlmD,MAAMmmD,MAAN,CAAa,CAAb,KAAmB5zC,EAAE,CAAF,IAAOvS,MAAMkmD,MAAN,CAAa,CAAb,CAA1B,CAHF;AAKD,GAbD;;AAeAplD,YAAU81F,gBAAV,GAA6B,UAAC/0E,GAAD,EAAS;AACpC,QAAMg1E,SAAS,CAAC72F,MAAMmmD,MAAN,CAAa,CAAb,CAAD,EAAkBnmD,MAAMmmD,MAAN,CAAa,CAAb,CAAlB,EAAmCnmD,MAAMmmD,MAAN,CAAa,CAAb,CAAnC,CAAf;AACA,WAAO0wC,MAAP;AACD,GAHD;;AAKA/1F,YAAUu1F,iBAAV,GAA8B,UAACxyE,EAAD,EAAKC,EAAL;AAAA,WAC5BuyE,kBAAkBxyE,EAAlB,EAAsBC,EAAtB,EAA0B9jB,MAAMkmD,MAAhC,EAAwClmD,MAAMmmD,MAA9C,CAD4B;AAAA,GAA9B;AAED;;AAED;AACA;AACA;;AAEA,IAAM78B,iBAAiB;AACrB68B,UAAQ,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,CADa;AAErBD,UAAQ,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX;AAFa,CAAvB;;AAKA;;AAEO,SAAS59C,MAAT,CAAgBxH,SAAhB,EAA2Bd,KAA3B,EAAsD;AAAA,MAApBwI,aAAoB,uEAAJ,EAAI;;AAC3DvI,SAAOgD,MAAP,CAAcjD,KAAd,EAAqBspB,cAArB,EAAqC9gB,aAArC;;AAEA;AACA,kBAAMjN,GAAN,CAAUuF,SAAV,EAAqBd,KAArB;;AAEA,kBAAMnE,WAAN,CAAkBiF,SAAlB,EAA6Bd,KAA7B,EAAoC,CAAC,QAAD,EAAW,QAAX,CAApC,EAA0D,CAA1D;;AAEA41F,WAAS90F,SAAT,EAAoBd,KAApB;AACD;;AAED;;AAEO,IAAMhE,oCAAc,gBAAMA,WAAN,CAAkBsM,MAAlB,EAA0B,UAA1B,CAApB;;AAEP;;kBAEerI,OAAOgD,MAAP,CAAc,EAAEjH,wBAAF,EAAesM,cAAf,EAAd,EAAuCuf,MAAvC,C;;;;;;;;;;;;;QC7GCvf,M,GAAAA,M;;AAlGhB;;;;;;AAEA,SAASsI,cAAT,CAAwBjD,MAAxB,EAAgC;AAC9B,SAAO;AAAA,WAAM,gBAAM3S,aAAN,eAAgC2S,MAAhC,wBAAN;AAAA,GAAP;AACD;;AAED;AACA;AACA;;AAEA,SAASmpF,OAAT,CAAiBh2F,SAAjB,EAA4Bd,KAA5B,EAAmC;AACjC;AACAA,QAAMkB,cAAN,CAAqBxB,IAArB,CAA0B,SAA1B;;AAEAoB,YAAUc,QAAV,GAAqB,YAAM;AACzB,QAAIu5E,KAAKn7E,MAAMiB,KAAf;AACA,SAAK,IAAIG,QAAQ,CAAjB,EAAoBA,QAAQpB,MAAM+2F,QAAN,CAAeh1F,MAA3C,EAAmD,EAAEX,KAArD,EAA4D;AAC1D,UAAMg6E,KAAKp7E,MAAM+2F,QAAN,CAAe31F,KAAf,EAAsBQ,QAAtB,EAAX;AACA,UAAIw5E,KAAKD,EAAT,EAAa;AACXA,aAAKC,EAAL;AACD;AACF;AACD,WAAOD,EAAP;AACD,GATD;;AAWAr6E,YAAUk2F,cAAV,GAA2B;AAAA,WAAM,IAAN;AAAA,GAA3B;AACAl2F,YAAUohD,SAAV,GAAsB;AAAA,WAAM,IAAN;AAAA,GAAtB;AACAphD,YAAUm2F,WAAV,GAAwB;AAAA,WAAM,IAAN;AAAA,GAAxB;AACAn2F,YAAUu3E,UAAV,GAAuB;AAAA,WAAM,IAAN;AAAA,GAAvB;;AAEAv3E,YAAUo2F,IAAV,GAAiBtmF,eAAe,MAAf,CAAjB;AACA9P,YAAUsuE,MAAV,GAAmBx+D,eAAe,QAAf,CAAnB;;AAEA9P,YAAUsiD,cAAV,GAA2B;AAAA,WAAMpjD,MAAMiB,KAAZ;AAAA,GAA3B;;AAEAH,YAAUq2F,sBAAV,GAAmC,UAACt7E,CAAD,EAAO;AACxC7b,UAAMo3F,mBAAN,GAA4Bv7E,CAA5B;AACA7b,UAAMq3F,wBAAN,GAAiCx7E,CAAjC;AACD,GAHD;;AAKA/a,YAAUw2F,0BAAV,GAAuC,YAAM;AAC3Ct3F,UAAMo3F,mBAAN,GAA4Bp3F,MAAMq3F,wBAAlC;AACD,GAFD;;AAIAv2F,YAAUy2F,sBAAV,GAAmC,UAAC17E,CAAD,EAAO;AACxC7b,UAAMo3F,mBAAN,IAA6Bv7E,CAA7B;AACD,GAFD;;AAIA/a,YAAU02F,sBAAV,GAAmC,UAAC37E,CAAD,EAAO;AACxC7b,UAAM07E,mBAAN,GAA4B7/D,CAA5B;AACA7b,UAAMq3F,wBAAN,GAAiCr3F,MAAMo3F,mBAAvC;AACAp3F,UAAMo3F,mBAAN,GAA4B,CAA5B;AACD,GAJD;;AAMAt2F,YAAUwiD,oBAAV,GAAiC;AAAA,WAAM,KAAN;AAAA,GAAjC;;AAEAxiD,YAAU22F,WAAV,GAAwB;AAAA,WAAMz3F,MAAM+2F,QAAZ;AAAA,GAAxB;AACAj2F,YAAU42F,UAAV,GAAuB,UAACr1C,OAAD;AAAA,WAAariD,MAAM+2F,QAAN,CAAev0F,OAAf,CAAuB6/C,OAAvB,MAAoC,CAAC,CAAlD;AAAA,GAAvB;AACAvhD,YAAU62F,UAAV,GAAuB,UAACt1C,OAAD,EAAa;AAClC,QAAIA,WAAW,CAACvhD,UAAU42F,UAAV,CAAqBr1C,OAArB,CAAhB,EAA+C;AAC7CriD,YAAM+2F,QAAN,GAAiB/2F,MAAM+2F,QAAN,CAAez2F,MAAf,CAAsB+hD,OAAtB,CAAjB;AACAvhD,gBAAUY,QAAV;AACD;AACF,GALD;;AAOAZ,YAAU82F,aAAV,GAA0B,UAACv1C,OAAD,EAAa;AACrC,QAAMw1C,iBAAiB73F,MAAM+2F,QAAN,CAAevwF,MAAf,CAAsB,UAAC7F,IAAD;AAAA,aAAUA,SAAS0hD,OAAnB;AAAA,KAAtB,CAAvB;AACA,QAAIriD,MAAM+2F,QAAN,CAAeh1F,MAAf,KAA0B81F,eAAe91F,MAA7C,EAAqD;AACnD/B,YAAM+2F,QAAN,GAAiBc,cAAjB;AACA/2F,gBAAUY,QAAV;AACD;AACF,GAND;;AAQAZ,YAAUg3F,iBAAV,GAA8B,YAAM;AAClC93F,UAAM+2F,QAAN,GAAiB,EAAjB;AACAj2F,cAAUY,QAAV;AACD,GAHD;AAID;;AAED;AACA;AACA;;AAEA,IAAM4nB,iBAAiB;AACrByuE,cAAY,IADS;AAErBC,YAAU,IAFW;AAGrBC,YAAU,IAHW;AAIrBC,aAAW,IAJU;AAKrBxc,uBAAqB,EALA;AAMrB0b,uBAAqB,CANA;AAOrBC,4BAA0B,CAPL;AAQrBc,wBAAsB,CARD;AASrBC,SAAO,IATc;AAUrBrB,YAAU;AAVW,CAAvB;;AAaA;;AAEO,SAASzuF,MAAT,CAAgBxH,SAAhB,EAA2Bd,KAA3B,EAAsD;AAAA,MAApBwI,aAAoB,uEAAJ,EAAI;;AAC3DvI,SAAOgD,MAAP,CAAcjD,KAAd,EAAqBspB,cAArB,EAAqC9gB,aAArC;;AAEA;AACA,kBAAMjN,GAAN,CAAUuF,SAAV,EAAqBd,KAArB;AACA,kBAAMxE,GAAN,CAAUsF,SAAV,EAAqBd,KAArB,EAA4B,CAAC,qBAAD,EAAwB,qBAAxB,CAA5B;AACA,kBAAMtE,MAAN,CAAaoF,SAAb,EAAwBd,KAAxB,EAA+B,CAC7B,YAD6B,EAE7B,UAF6B,EAG7B,UAH6B,EAI7B,WAJ6B,EAK7B,sBAL6B,CAA/B;;AAQA;AACA82F,UAAQh2F,SAAR,EAAmBd,KAAnB;AACD;;AAED;;AAEO,IAAMhE,oCAAc,gBAAMA,WAAN,CAAkBsM,MAAlB,EAA0B,SAA1B,CAApB;;AAEP;;kBAEe,EAAEtM,wBAAF,EAAesM,cAAf,E;;;;;;;;;;;;;QCkDCA,M,GAAAA,M;;AA5KhB;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AAGA;;AACA;;AACA;;AACA;;AACA;;;;;;AALA;;;AAOA,IAAM+vF,kBAAkB;AACtBnN,UAAQ,GADc;AAEtBoN,WAAS,GAFa;AAGtB/hF,YAAU,UAHY;AAItB8hD,OAAK,GAJiB;AAKtBH,QAAM,GALgB;AAMtBzgC,SAAO,OANe;AAOtBC,UAAQ,OAPc;AAQtByzD,YAAU;AARY,CAAxB;;AAWA,IAAMoN,sBAAsB;AAC1BhiF,YAAU,UADgB;AAE1B2hD,QAAM,MAFoB;AAG1BG,OAAK,MAHqB;AAI1BmgC,mBAAiB,OAJS;AAK1BC,gBAAc,KALY;AAM1BC,aAAW,MANe;AAO1BJ,WAAS,UAPiB;AAQ1BpN,UAAQ,GARkB;AAS1BprB,WAAS,OATiB;AAU1B64B,UAAQ,iBAVkB;AAW1BC,YAAU,oBAXgB;AAY1BC,aAAW,oBAZe;AAa1B1N,YAAU;AAbgB,CAA5B;;AAgBA,SAAS2N,UAAT,CAAoB/1F,EAApB,EAAwB88D,KAAxB,EAA+B;AAC7B5/D,SAAOC,IAAP,CAAY2/D,KAAZ,EAAmB3iE,OAAnB,CAA2B,UAACiD,GAAD,EAAS;AAClC4C,OAAG88D,KAAH,CAAS1/D,GAAT,IAAgB0/D,MAAM1/D,GAAN,CAAhB;AACD,GAFD;AAGD;;AAED,SAAS44F,yBAAT,CAAmCj4F,SAAnC,EAA8Cd,KAA9C,EAAqD;AACnD;AACA,MAAI,CAACA,MAAM+qF,aAAX,EAA0B;AACxB/qF,UAAM+qF,aAAN,GAAsB7sD,SAAS0hD,aAAT,CAAuB,MAAvB,CAAtB;AACD;;AAED,MAAI,CAAC5/E,MAAMo+E,SAAX,EAAsB;AACpBp+E,UAAMo+E,SAAN,GAAkBlgD,SAASC,aAAT,CAAuB,KAAvB,CAAlB;AACA26D,eAAW94F,MAAMo+E,SAAjB,EAA4Bp+E,MAAMirF,cAAN,IAAwBoN,eAApD;AACAr4F,UAAM+qF,aAAN,CAAoB3pB,WAApB,CAAgCphE,MAAMo+E,SAAtC;AACD;;AAED;AACAp+E,QAAMq3E,YAAN,GAAqB,uBAAgBr7E,WAAhB,EAArB;AACAgE,QAAMgiE,QAAN,GAAiB,mBAAYhmE,WAAZ,EAAjB;AACAgE,QAAMq3E,YAAN,CAAmB2hB,WAAnB,CAA+Bh5F,MAAMgiE,QAArC;;AAEA;AACAhiE,QAAMm1B,kBAAN,GAA2B,uBAAsBn5B,WAAtB,EAA3B;AACAgE,QAAMm1B,kBAAN,CAAyB8rC,YAAzB,CAAsCjhE,MAAMo+E,SAA5C;AACAp+E,QAAMq3E,YAAN,CAAmB4hB,OAAnB,CAA2Bj5F,MAAMm1B,kBAAjC;;AAEA;AACAn1B,QAAM+rF,UAAN,GAAmB,iCAA0B/vF,WAA1B,EAAnB;AACAgE,QAAM+rF,UAAN,CAAiBxH,OAAjB,CAAyBvkF,MAAMm1B,kBAA/B;AACAn1B,QAAM+rF,UAAN,CAAiB5rB,UAAjB;AACAngE,QAAM+rF,UAAN,CAAiB7L,UAAjB,CAA4BlgF,MAAMo+E,SAAlC;;AAEA;AACAt9E,YAAUitE,aAAV,GAA0B/tE,MAAMgiE,QAAN,CAAe+L,aAAzC;;AAEAjtE,YAAUo4F,gBAAV,GAA6B,YAAM;AACjC,QAAMn2F,KAAK/C,MAAMm5F,gBAAjB;AACA,QAAIp2F,EAAJ,EAAQ;AACNA,SAAGm+D,UAAH,CAAcC,WAAd,CAA0Bp+D,EAA1B;AACD;AACF,GALD;;AAOAjC,YAAUs4F,uBAAV,GAAoC,UAACC,OAAD,EAAa;AAC/Cr5F,UAAMs5F,oBAAN,GAA6BD,OAA7B;AACA,QAAIr5F,MAAMm5F,gBAAV,EAA4B;AAC1B,UAAIE,OAAJ,EAAa;AACXr5F,cAAMm5F,gBAAN,CAAuBt5B,KAAvB,CAA6BC,OAA7B,GAAuC,OAAvC;AACD,OAFD,MAEO;AACL9/D,cAAMm5F,gBAAN,CAAuBt5B,KAAvB,CAA6BC,OAA7B,GAAuC,MAAvC;AACD;AACF;AACF,GATD;;AAWAh/D,YAAUy4F,0BAAV,GAAuC,YAAM;AAC3Cz4F,cAAUs4F,uBAAV,CAAkC,CAACp5F,MAAMs5F,oBAAzC;AACD,GAFD;;AAIAx4F,YAAU04F,aAAV,GAA0B,UAACC,IAAD,EAAU;AAClCz5F,UAAMm5F,gBAAN,GAAyBj7D,SAASC,aAAT,CAAuB,KAAvB,CAAzB;AACA26D,eACE94F,MAAMm5F,gBADR,EAEEn5F,MAAM05F,iBAAN,IAA2BnB,mBAF7B;AAIAv4F,UAAM+qF,aAAN,CAAoB3pB,WAApB,CAAgCphE,MAAMm5F,gBAAtC;AACAn5F,UAAMm5F,gBAAN,CAAuBQ,SAAvB,GAAmCF,IAAnC;;AAEA34F,cAAUs4F,uBAAV,CAAkCp5F,MAAMs5F,oBAAxC;;AAEAt5F,UAAM+qF,aAAN,CAAoB/mB,gBAApB,CAAqC,UAArC,EAAiD,UAACxjE,CAAD,EAAO;AACtD,UAAIo5F,OAAOC,YAAP,CAAoBr5F,EAAEg/E,QAAtB,MAAoC,GAAxC,EAA6C;AAC3C1+E,kBAAUy4F,0BAAV;AACD;AACF,KAJD;AAKD,GAhBD;;AAkBA;AACAz4F,YAAUitE,aAAV,qCAA2B/tE,MAAMi2E,UAAjC;;AAEA;AACAn1E,YAAUg5F,iBAAV,GAA8B,UAAC18C,cAAD,EAAoB;AAChDA,mBAAe8E,SAAf,GAA2BhlD,OAA3B,CAAmC,UAAC2zC,KAAD,EAAW;AAC5C7wC,YAAMgiE,QAAN,CAAe2V,QAAf,CAAwB9mC,KAAxB;AACD,KAFD;AAGD,GAJD;AAKA/vC,YAAUi5F,oBAAV,GAAiC,UAAC38C,cAAD,EAAoB;AACnDA,mBACG8E,SADH,GAEGhlD,OAFH,CAEW,UAAC2zC,KAAD;AAAA,aAAW7wC,MAAMgiE,QAAN,CAAe8V,WAAf,CAA2BjnC,KAA3B,CAAX;AAAA,KAFX;AAGD,GAJD;;AAMA;AACA/vC,YAAUk5F,MAAV,GAAmB,YAAM;AACvB,QAAM9tC,OAAOlsD,MAAMo+E,SAAN,CAAgBC,qBAAhB,EAAb;AACA,QAAM4b,mBAAmB1wE,OAAO0wE,gBAAP,IAA2B,CAApD;AACAj6F,UAAMm1B,kBAAN,CAAyB4vC,OAAzB,CACEplE,KAAKC,KAAL,CAAWssD,KAAKz0B,KAAL,GAAawiE,gBAAxB,CADF,EAEEt6F,KAAKC,KAAL,CAAWssD,KAAKx0B,MAAL,GAAcuiE,gBAAzB,CAFF;AAIA,QAAIj6F,MAAMk6F,cAAV,EAA0B;AACxBl6F,YAAMk6F,cAAN,CAAqBhuC,IAArB;AACD;AACDlsD,UAAMq3E,YAAN,CAAmBztD,MAAnB;AACD,GAXD;;AAaA9oB,YAAUusF,iBAAV,GAA8B,UAACtlF,EAAD,EAAQ;AACpC/H,UAAMk6F,cAAN,GAAuBnyF,EAAvB;AACAjH,cAAUk5F,MAAV;AACD,GAHD;;AAKA,MAAIh6F,MAAMm6F,kBAAV,EAA8B;AAC5B5wE,WAAOy6C,gBAAP,CAAwB,QAAxB,EAAkCljE,UAAUk5F,MAA5C;AACD;AACDl5F,YAAUk5F,MAAV;AACD;;AAED;AACA;AACA;;AAEA,IAAM1wE,iBAAiB;AACrB2sD,cAAY,CAAC,IAAD,EAAO,IAAP,EAAa,IAAb,CADS;AAErBgV,kBAAgB,IAFK;AAGrByO,qBAAmB,IAHE;AAIrBS,sBAAoB,IAJC;AAKrBD,kBAAgB,IALK;AAMrBZ,wBAAsB;AAND,CAAvB;;AASA;;AAEO,SAAShxF,MAAT,CAAgBxH,SAAhB,EAA2Bd,KAA3B,EAAsD;AAAA,MAApBwI,aAAoB,uEAAJ,EAAI;;AAC3DvI,SAAOgD,MAAP,CAAcjD,KAAd,EAAqBspB,cAArB,EAAqC9gB,aAArC;;AAEA;AACA,kBAAMjN,GAAN,CAAUuF,SAAV,EAAqBd,KAArB;AACA,kBAAMxE,GAAN,CAAUsF,SAAV,EAAqBd,KAArB,EAA4B,CAC1B,cAD0B,EAE1B,UAF0B,EAG1B,oBAH0B,EAI1B,YAJ0B,EAK1B,eAL0B,EAM1B,WAN0B,EAO1B,kBAP0B,CAA5B;;AAUA;AACA+4F,4BAA0Bj4F,SAA1B,EAAqCd,KAArC;AACD;;AAED;;AAEO,IAAMhE,oCAAc,gBAAMA,WAAN,CAAkBsM,MAAlB,CAApB;;AAEP;;kBAEe,EAAEtM,wBAAF,EAAesM,cAAf,E;;;;;;;;;;;;;QC3FCA,M,GAAAA,M;;AA1GhB;;;;AACA;;;;AACA;;;;;;AAEA;;AAEA,SAAS8xF,cAAT,CAAwBt5F,SAAxB,EAAmCd,KAAnC,EAA0C;AACxC;AACAA,QAAMkB,cAAN,CAAqBxB,IAArB,CAA0B,gBAA1B;;AAEA;AACA;AACA;AACA;AACAoB,YAAU+oB,QAAV,GAAqB,UAACuiD,QAAD,EAA6B;AAAA,QAAlB3hD,MAAkB,uEAAT,IAAS;;AAChD,QAAIzqB,MAAMyB,OAAV,EAAmB;AACjB;AACD;;AAED;AACAzB,UAAMqsE,aAAN,GAAsB5hD,MAAtB;;AAEA;AACA3pB,cAAU8lE,mBAAV,CAA8B,WAA9B;AACAwF,aAASviD,QAAT,CAAkB/oB,SAAlB;;AAEA;AACA,QAAMu5F,YAAYjuB,SAASkuB,WAAT,EAAlB;AACA,SAAK,IAAIl5F,QAAQ,CAAjB,EAAoBA,QAAQi5F,UAAUt4F,MAAtC,EAA8CX,OAA9C,EAAuD;AACrD,UAAMm5F,UAAUF,UAAUj5F,KAAV,CAAhB;;AAEA;AACApB,YAAMw6F,gBAAN,GAAyB,CAAzB;AACAx6F,YAAMy6F,qBAAN,GAA8B,CAA9B;AACAz6F,YAAM06F,WAAN,GAAoB,CAApB;AACA55F,gBAAU8lE,mBAAV,CAA8B,WAA9B;;AAEA2zB,cAAQ1wE,QAAR,CAAiB/oB,SAAjB;;AAEA;AACA,UACGd,MAAMw6F,gBAAN,GAAyB,CAAzB,IAA8Bx6F,MAAM06F,WAAN,GAAoB,CAAnD,IACA16F,MAAM26F,cAFR,EAGE;AACA,YAAM77F,OAAOstE,SAAS/K,kBAAT,EAAb;AACA;AACA,YAAIrhE,MAAMu/D,WAAN,KAAsB,IAA1B,EAAgC;AAC9Bv/D,gBAAMu/D,WAAN,GAAoB,sBAAqBvjE,WAArB,EAApB;AACD;AACDgE,cAAMu/D,WAAN,CAAkBl8B,qBAAlB,CAAwC+oC,QAAxC;AACApsE,cAAMu/D,WAAN,CAAkBjW,6BAAlB;AACA,YAAMsxC,SAAS56F,MAAMu/D,WAAN,CAAkB3U,OAAlB,EAAf;AACA,YAAIgwC,WAAW,IAAX,IAAmBA,OAAO,CAAP,MAAc97F,KAAK,CAAL,CAAjC,IAA4C87F,OAAO,CAAP,MAAc97F,KAAK,CAAL,CAA9D,EAAuE;AACrEkB,gBAAMu/D,WAAN,CAAkBzjB,MAAlB,CAAyBh9C,KAAK,CAAL,CAAzB,EAAkCA,KAAK,CAAL,CAAlC;AACAkB,gBAAMu/D,WAAN,CAAkB1U,mBAAlB;AACD;AACD7qD,cAAMu/D,WAAN,CAAkBnyD,IAAlB;AACAtM,kBAAU8lE,mBAAV,CAA8B,mBAA9B;AACA2zB,gBAAQ1wE,QAAR,CAAiB/oB,SAAjB;AACAd,cAAMu/D,WAAN,CAAkBzV,iCAAlB;AACD;;AAEDhpD,gBAAU8lE,mBAAV,CAA8B,YAA9B;AACA2zB,cAAQ1wE,QAAR,CAAiB/oB,SAAjB;AACA,UAAId,MAAMw6F,gBAAN,GAAyB,CAA7B,EAAgC;AAC9B15F,kBAAU8lE,mBAAV,CAA8B,YAA9B;AACA2zB,gBAAQ1wE,QAAR,CAAiB/oB,SAAjB;AACD;AACD,UAAId,MAAMy6F,qBAAN,GAA8B,CAAlC,EAAqC;AACnC35F,kBAAU8lE,mBAAV,CAA8B,iBAA9B;AACA2zB,gBAAQ1wE,QAAR,CAAiB/oB,SAAjB;AACD;AACD,UAAId,MAAM06F,WAAN,GAAoB,CAAxB,EAA2B;AACzB55F,kBAAU8lE,mBAAV,CAA8B,YAA9B;AACA2zB,gBAAQ1wE,QAAR,CAAiB/oB,SAAjB;AACD;AACF;AACF,GA/DD;;AAiEAA,YAAU+5F,iBAAV,GAA8B,YAAM;AAClC,QAAI76F,MAAMu/D,WAAV,EAAuB;AACrB,aAAOv/D,MAAMu/D,WAAN,CAAkBu7B,eAAlB,EAAP;AACD;AACD,WAAO,IAAP;AACD,GALD;;AAOAh6F,YAAUi6F,yBAAV,GAAsC;AAAA,WAAM/6F,MAAMw6F,gBAAN,EAAN;AAAA,GAAtC;AACA15F,YAAUk6F,8BAAV,GAA2C;AAAA,WACzCh7F,MAAMy6F,qBAAN,EADyC;AAAA,GAA3C;AAEA35F,YAAUm6F,oBAAV,GAAiC;AAAA,WAAMj7F,MAAM06F,WAAN,EAAN;AAAA,GAAjC;AACD;;AAED;AACA;AACA;;AAEA,IAAMpxE,iBAAiB;AACrBkxE,oBAAkB,CADG;AAErBC,yBAAuB,CAFF;AAGrBC,eAAa,CAHQ;AAIrBn7B,eAAa,IAJQ;AAKrBo7B,kBAAgB;AALK,CAAvB;;AAQA;;AAEO,SAASryF,MAAT,CAAgBxH,SAAhB,EAA2Bd,KAA3B,EAAsD;AAAA,MAApBwI,aAAoB,uEAAJ,EAAI;;AAC3DvI,SAAOgD,MAAP,CAAcjD,KAAd,EAAqBspB,cAArB,EAAqC9gB,aAArC;;AAEA;AACA,uBAAcF,MAAd,CAAqBxH,SAArB,EAAgCd,KAAhC,EAAuCwI,aAAvC;;AAEA,kBAAMhN,GAAN,CAAUsF,SAAV,EAAqBd,KAArB,EAA4B,CAAC,aAAD,CAA5B;AACA,kBAAMtE,MAAN,CAAaoF,SAAb,EAAwBd,KAAxB,EAA+B,CAAC,gBAAD,CAA/B;;AAEA;AACAo6F,iBAAet5F,SAAf,EAA0Bd,KAA1B;AACD;;AAED;;AAEO,IAAMhE,oCAAc,gBAAMA,WAAN,CAAkBsM,MAAlB,EAA0B,gBAA1B,CAApB;;AAEP;;kBAEe,EAAEtM,wBAAF,EAAesM,cAAf,E;;;;;;;AC7Hf;;AAEA,kCAAkC,iCAAiC,eAAe,eAAe,gBAAgB,oBAAoB,MAAM,0CAA0C,+BAA+B,aAAa,qBAAqB,mCAAmC,EAAE,EAAE,cAAc,WAAW,UAAU,EAAE,UAAU,MAAM,yCAAyC,EAAE,UAAU,kBAAkB,EAAE,EAAE,aAAa,EAAE,2BAA2B,0BAA0B,YAAY,EAAE,2CAA2C,8BAA8B,EAAE,OAAO,6EAA6E,EAAE,GAAG,EAAE;;AAErpB,gCAAgC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEjjB,qDAAqD,kDAAkD,8DAA8D,0BAA0B,4CAA4C,uBAAuB,kBAAkB,EAAE,OAAO,wCAAwC,EAAE,EAAE,4BAA4B,mBAAmB,EAAE,OAAO,uBAAuB,4BAA4B,kBAAkB,EAAE,8BAA8B,EAAE;;AAExe,wBAAwB,mDAAmD;;AAE3E,kCAAkC,0BAA0B,0CAA0C,gBAAgB,OAAO,kBAAkB,EAAE,aAAa,EAAE,OAAO,wBAAwB,EAAE;;AAEjM,iDAAiD,0CAA0C,0DAA0D,EAAE;;AAEvJ,iDAAiD,aAAa,uFAAuF,EAAE,uFAAuF;;AAE9O,0CAA0C,+DAA+D,qGAAqG,EAAE,yEAAyE,eAAe,yEAAyE,EAAE,EAAE,uHAAuH;;AAE5e;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB;AACjB;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA,wFAAwF,aAAa;AACrG;AACA;;AAEA,gCAAgC,mCAAmC;AACnE;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,sFAAsF,uFAAuF;AAC7K;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,CAAC;;AAED,wB;;;;;;;;;AC3KA;;AACA;;;;AAEA;;;;;;AAEA;AACA;AACA,wBACE,UACE4yF,OADF,EAEEC,IAFF,EAGE;AACA;AACA;AACA,MAAI1jE,QAAQyjE,QAAQzjE,KAApB;AACA,MAAIC,SAASwjE,QAAQxjE,MAArB;AACA,MAAIv1B,QAAQ+4F,QAAQ/4F,KAApB;AACA,MAAIs+B,UAAUy6D,QAAQz6D,OAAtB;AACA,MAAI1J,OAAOmkE,QAAQnkE,IAAnB;AACA,MAAI8J,aAAaq6D,QAAQr6D,UAAzB;AACA,MAAI+B,aAAas4D,QAAQt4D,UAAzB;AACA,MAAIC,WAAWq4D,QAAQr4D,QAAvB;;AAEA;AACA;AACA,MAAIA,aAAa1gC,QAAQ,CAAzB,EAA4B;AAC1B0gC;AACD;AACD,MAAIu4D,cAAcv4D,WAAWD,UAAX,GAAwB,CAA1C;AACA,MAAIy4D,YAAY,IAAIj9F,UAAJ,CAAeq5B,QAAQC,MAAR,GAAiB0jE,WAAjB,GAA+B,CAA9C,CAAhB;AACA,MAAIE,qBAAqB,IAAIp9F,YAAJ,CAAiBu5B,QAAQC,MAAR,GAAiB0jE,WAAlC,CAAzB;;AAEA,MAAIG,YAAY9jE,QAAQC,MAAxB;AACA,MAAI8jE,QAAQ,CAAZ;AACA,MAAIC,SAAS,CAAb;AACA,MAAIC,OAAO,eAAK5/C,MAAL,EAAX;AACA,iBAAKrgD,GAAL,CACEigG,IADF,EAEE,CAAC3kE,KAAKykE,QAAQ,CAAb,IAAkBzkE,KAAKykE,KAAL,CAAnB,IAAkC/6D,QAAQ,CAAR,CAFpC,EAGE,CAAC1J,KAAKykE,QAAQ/jE,KAAb,IAAsBV,KAAKykE,KAAL,CAAvB,IAAsC/6D,QAAQ,CAAR,CAHxC,EAIE,CAAC1J,KAAKykE,QAAQD,SAAb,IAA0BxkE,KAAKykE,KAAL,CAA3B,IAA0C/6D,QAAQ,CAAR,CAJ5C;AAMA,MAAI0C,SAAS,eAAKphC,MAAL,CAAY25F,IAAZ,CAAb;AACA,MAAIx6D,SAAS,CAAC,GAAd;AACA,OAAK,IAAIrsB,IAAI+tB,UAAb,EAAyB/tB,KAAKguB,QAA9B,EAAwC,EAAEhuB,CAA1C,EAA6C;AAC3C,QAAI8mF,QAAQ,CAAZ;AACA,QAAI9mF,MAAM1S,QAAQ,CAAlB,EAAqB;AACnBw5F,cAAQ,CAACJ,SAAT;AACD;AACD,SAAK,IAAIxnF,IAAI,CAAb,EAAgBA,IAAI2jB,MAApB,EAA4B,EAAE3jB,CAA9B,EAAiC;AAC/B,UAAI6nF,QAAQ,CAAZ;AACA,UAAI7nF,MAAM2jB,SAAS,CAAnB,EAAsB;AACpBkkE,gBAAQ,CAACnkE,KAAT;AACD;AACD,WAAK,IAAIllB,IAAI,CAAb,EAAgBA,IAAIklB,KAApB,EAA2B,EAAEllB,CAA7B,EAAgC;AAC9B,YAAIspF,OAAOL,QAAQG,KAAR,GAAgBC,KAA3B;AACA,YAAIrpF,MAAMklB,QAAQ,CAAlB,EAAqB;AACnBokE;AACD;AACD,uBAAKpgG,GAAL,CACEigG,IADF,EAEE,CAAC3kE,KAAK8kE,OAAO,CAAZ,IAAiB9kE,KAAK8kE,IAAL,CAAlB,IAAgCp7D,QAAQ,CAAR,CAFlC,EAGE,CAAC1J,KAAK8kE,OAAOpkE,KAAZ,IAAqBV,KAAK8kE,IAAL,CAAtB,IAAoCp7D,QAAQ,CAAR,CAHtC,EAIE,CAAC1J,KAAK8kE,OAAON,SAAZ,IAAyBxkE,KAAK8kE,IAAL,CAA1B,IAAwCp7D,QAAQ,CAAR,CAJ1C;;AAOA,YAAIq7D,MAAM,eAAK/5F,MAAL,CAAY25F,IAAZ,CAAV;AACA,uBAAKhnF,SAAL,CAAegnF,IAAf,EAAqBA,IAArB;AACA;AACAL,kBAAUI,QAAV,IAAsB,QAAQ,QAAQC,KAAK,CAAL,CAAtC;AACAL,kBAAUI,QAAV,IAAsB,QAAQ,QAAQC,KAAK,CAAL,CAAtC;AACAL,kBAAUI,QAAV,IAAsB,QAAQ,QAAQC,KAAK,CAAL,CAAtC;AACAJ,2BAAmBE,OAAnB,IAA8BM,GAA9B;AACD;AACF;AACF;AACD,MAAIC,cAAc,eAAQnqF,QAAR,CAAiB0pF,kBAAjB,CAAlB;AACA,MAAIU,cAAc,eAAQhqF,QAAR,CAAiBspF,kBAAjB,CAAlB;AACAn4D,WAASxjC,KAAK+R,GAAL,CAASqqF,WAAT,EAAsB54D,MAAtB,CAAT;AACAjC,WAASvhC,KAAKgS,GAAL,CAASqqF,WAAT,EAAsB96D,MAAtB,CAAT;;AAEA,MAAIp4B,SAAS;AACXq4B,kBAAck6D,SADH;AAEXj6D,mBAAek6D,kBAFJ;AAGXj6D,eAAW8B,MAHA;AAIX7B,eAAWJ,MAJA;AAKXK,mBAAeqB,UALJ;AAMXpB,iBAAaqB;AANF,GAAb;AAQA,SAAOG,QAAQmlC,OAAR,CACL,IAAI,mBAAkB8zB,oBAAtB,CACEnzF,MADF,EAEE,CAACA,OAAOq4B,YAAP,CAAoB9X,MAArB,EAA6BvgB,OAAOs4B,aAAP,CAAqB/X,MAAlD,CAFF,CADK,CAAP;AAMD,CAxFH,E;;;;;;;ACPA;;AAEA,gCAAgC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEjjB,qDAAqD,kDAAkD,8DAA8D,0BAA0B,4CAA4C,uBAAuB,kBAAkB,EAAE,OAAO,wCAAwC,EAAE,EAAE,4BAA4B,mBAAmB,EAAE,OAAO,uBAAuB,4BAA4B,kBAAkB,EAAE,8BAA8B,EAAE;;AAExe,oGAAoG,mBAAmB,EAAE,mBAAmB,8HAA8H;;AAE1Q,kCAAkC,0BAA0B,0CAA0C,gBAAgB,OAAO,kBAAkB,EAAE,aAAa,EAAE,OAAO,wBAAwB,EAAE;;AAEjM,iDAAiD,0CAA0C,0DAA0D,EAAE;;AAEvJ,iDAAiD,aAAa,uFAAuF,EAAE,uFAAuF;;AAE9O,0CAA0C,+DAA+D,qGAAqG,EAAE,yEAAyE,eAAe,yEAAyE,EAAE,EAAE,uHAAuH;;AAE5e,2CAA2C,kBAAkB,kCAAkC,qEAAqE,EAAE,EAAE,OAAO,kBAAkB,EAAE,YAAY;;AAE/M;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,mCAAmC;AACnC;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,0FAA0F,aAAa;AACvG;AACA;;AAEA,yBAAyB,mCAAmC;AAC5D;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,8FAA8F,eAAe;AAC7G;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,2D;;;;;;;;;;;;;QC/GgB/gB,M,GAAAA,M;;AArChB;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;;;AAEA;AACA;AACA;;AAEA,SAAS4zF,wBAAT,CAAkCp7F,SAAlC,EAA6Cd,KAA7C,EAAoD;AAClD;AACAA,QAAMkB,cAAN,CAAqBxB,IAArB,CAA0B,0BAA1B;AACD;;AAED;AACA;AACA;;AAEA,IAAM4pB,iBAAiB,EAAvB;;AAEA;;AAEO,SAAShhB,MAAT,CAAgBxH,SAAhB,EAA2Bd,KAA3B,EAAsD;AAAA,MAApBwI,aAAoB,uEAAJ,EAAI;;AAC3DvI,SAAOgD,MAAP,CAAcjD,KAAd,EAAqBspB,cAArB,EAAqC9gB,aAArC;;AAEA;AACA,4BAAmBF,MAAnB,CAA0BxH,SAA1B,EAAqCd,KAArC,EAA4CwI,aAA5C;;AAEA;AACA0zF,2BAAyBp7F,SAAzB,EAAoCd,KAApC;;AAEA;AACAc,YAAUq7F,gBAAV,CAA2B,UAA3B,EAAuC,gBAAengG,WAAtD;AACA8E,YAAUq7F,gBAAV,CAA2B,YAA3B,EAAyC,kBAAiBngG,WAA1D;AACA8E,YAAUq7F,gBAAV,CAA2B,WAA3B,EAAwC,iBAAgBngG,WAAxD;AACA8E,YAAUq7F,gBAAV,CACE,kBADF,EAEE,wBAAuBngG,WAFzB;AAIA8E,YAAUq7F,gBAAV,CACE,gBADF,EAEE,sBAAqBngG,WAFvB;AAIA8E,YAAUq7F,gBAAV,CAA2B,eAA3B,EAA4C,qBAAoBngG,WAAhE;AACA8E,YAAUq7F,gBAAV,CAA2B,WAA3B,EAAwC,yBAAwBngG,WAAhE;AACA8E,YAAUq7F,gBAAV,CACE,6BADF,EAEE,mCAAkCngG,WAFpC;AAIA8E,YAAUq7F,gBAAV,CACE,iBADF,EAEE,uBAAsBngG,WAFxB;AAIA8E,YAAUq7F,gBAAV,CAA2B,aAA3B,EAA0C,mBAAkBngG,WAA5D;AACA8E,YAAUq7F,gBAAV,CAA2B,WAA3B,EAAwC,iBAAgBngG,WAAxD;AACA8E,YAAUq7F,gBAAV,CACE,iBADF,EAEE,uBAAsBngG,WAFxB;AAIA8E,YAAUq7F,gBAAV,CACE,gBADF,EAEE,sBAAqBngG,WAFvB;AAIA8E,YAAUq7F,gBAAV,CAA2B,YAA3B,EAAyC,kBAAiBngG,WAA1D;AACA8E,YAAUq7F,gBAAV,CAA2B,WAA3B,EAAwC,iBAAgBngG,WAAxD;AACA8E,YAAUq7F,gBAAV,CACE,iBADF,EAEE,uBAAsBngG,WAFxB;AAIA8E,YAAUq7F,gBAAV,CACE,yBADF,EAEE,sCAA+BngG,WAFjC;AAID;;AAED;;AAEO,IAAMA,oCAAc,gBAAMA,WAAN,CACzBsM,MADyB,EAEzB,0BAFyB,CAApB;;AAKP;;kBAEe,EAAEtM,wBAAF,EAAesM,cAAf,E;;;;;;;;;;;;;QC/ECA,M,GAAAA,M;;AApBhB;;;;AACA;;;;;;AAEA;AACA;AACA;;AAEA,SAAS8zF,8BAAT,CAAwCt7F,SAAxC,EAAmDd,KAAnD,EAA0D;AACxD;AACAA,QAAMkB,cAAN,CAAqBxB,IAArB,CAA0B,gCAA1B;AACD;;AAED;AACA;AACA;;AAEA,IAAM4pB,iBAAiB,EAAvB;;AAEA;;AAEO,SAAShhB,MAAT,CAAgBxH,SAAhB,EAA2Bd,KAA3B,EAAsD;AAAA,MAApBwI,aAAoB,uEAAJ,EAAI;;AAC3DvI,SAAOgD,MAAP,CAAcjD,KAAd,EAAqBspB,cAArB,EAAqC9gB,aAArC;;AAEA;AACA,qBAAYF,MAAZ,CAAmBxH,SAAnB,EAA8Bd,KAA9B,EAAqCwI,aAArC;;AAEA;AACA4zF,iCAA+Bt7F,SAA/B,EAA0Cd,KAA1C;AACD;;AAED;;AAEO,IAAMhE,oCAAc,gBAAMA,WAAN,CAAkBsM,MAAlB,CAApB;;AAEP;;kBAEe,EAAEtM,wBAAF,EAAesM,cAAf,E;;;;;;;;;;;;;QCiBCA,M,GAAAA,M;;AArDhB;;;;;;AAEA;AACA;AACA;;AAEA,SAAS+zF,kBAAT,CAA4Bv7F,SAA5B,EAAuCd,KAAvC,EAA8C;AAC5C;AACAA,QAAMs8F,SAAN,GAAkB,EAAlB;;AAEA;AACAt8F,QAAMkB,cAAN,CAAqBxB,IAArB,CAA0B,oBAA1B;;AAEAoB,YAAU6qB,UAAV,GAAuB,UAACvB,UAAD,EAAgB;AACrC,QAAIA,WAAW5oB,SAAX,EAAJ,EAA4B;AAC1B,aAAO,IAAP;AACD;;AAED,QAAI+6F,MAAM,CAAV;AACA,QAAIv6F,YAAYooB,WAAWloB,YAAX,CAAwBq6F,KAAxB,CAAhB;AACA,QAAIC,WAAW,KAAf;AACA,QAAMt8F,OAAOD,OAAOC,IAAP,CAAYF,MAAMs8F,SAAlB,CAAb;AACA,WAAOt6F,aAAa,CAACw6F,QAArB,EAA+B;AAC7B,UAAIt8F,KAAKsC,OAAL,CAAaR,SAAb,MAA4B,CAAC,CAAjC,EAAoC;AAClCw6F,mBAAW,IAAX;AACD,OAFD,MAEO;AACLx6F,oBAAYooB,WAAWloB,YAAX,CAAwBq6F,KAAxB,CAAZ;AACD;AACF;;AAED,QAAI,CAACC,QAAL,EAAe;AACb,aAAO,IAAP;AACD;AACD,QAAMjyE,KAAKvqB,MAAMs8F,SAAN,CAAgBt6F,SAAhB,GAAX;AACAuoB,OAAGkyE,YAAH,CAAgB37F,SAAhB;AACA,WAAOypB,EAAP;AACD,GAvBD;;AAyBAzpB,YAAUq7F,gBAAV,GAA6B,UAACn6F,SAAD,EAAYiH,IAAZ,EAAqB;AAChDjJ,UAAMs8F,SAAN,CAAgBt6F,SAAhB,IAA6BiH,IAA7B;AACD,GAFD;AAGD;;AAED;AACA;AACA;;AAEA,IAAMqgB,iBAAiB;AACrB;AADqB,CAAvB;;AAIA;;AAEO,SAAShhB,MAAT,CAAgBxH,SAAhB,EAA2Bd,KAA3B,EAAsD;AAAA,MAApBwI,aAAoB,uEAAJ,EAAI;;AAC3DvI,SAAOgD,MAAP,CAAcjD,KAAd,EAAqBspB,cAArB,EAAqC9gB,aAArC;;AAEA;AACA,kBAAMjN,GAAN,CAAUuF,SAAV,EAAqBd,KAArB;;AAEA;AACAq8F,qBAAmBv7F,SAAnB,EAA8Bd,KAA9B;AACD;;AAED;;AAEO,IAAMhE,oCAAc,gBAAMA,WAAN,CAAkBsM,MAAlB,EAA0B,oBAA1B,CAApB;;AAEP;;kBAEe,EAAEtM,wBAAF,EAAesM,cAAf,E;;;;;;;;;;;;;QCsGCA,M,GAAAA,M;;AA3KhB;;AAEA;;;;AACA;;;;;;AAEA;AACA;AACA;;AAEA,SAASo0F,cAAT,CAAwB57F,SAAxB,EAAmCd,KAAnC,EAA0C;AACxC;AACAA,QAAMkB,cAAN,CAAqBxB,IAArB,CAA0B,gBAA1B;;AAEA;AACAoB,YAAUqvC,SAAV,GAAsB,UAACxmB,OAAD,EAAa;AACjC,QAAIA,OAAJ,EAAa;AACX3pB,YAAMm1B,kBAAN,GAA2Br0B,UAAU0pB,sBAAV,CACzB,uBADyB,CAA3B;AAGAxqB,YAAMqJ,OAAN,GAAgBrJ,MAAMm1B,kBAAN,CAAyBG,UAAzB,EAAhB;AACAx0B,gBAAUqqB,YAAV;AACArqB,gBAAUmqB,eAAV,CAA0BjrB,MAAMqqB,UAAN,CAAiBotE,WAAjB,EAA1B;AACA32F,gBAAU4pB,cAAV,CAAyB1qB,MAAMqqB,UAAN,CAAiBsyE,SAAjB,EAAzB;AACA77F,gBAAUuqB,iBAAV;;AAEA;AACArrB,YAAM48F,WAAN,GAAoB,IAApB;AACA58F,YAAM68F,cAAN,GAAuB,IAAvB;AACA,WAAK,IAAIz7F,QAAQ,CAAjB,EAAoBA,QAAQpB,MAAMkL,QAAN,CAAenJ,MAA3C,EAAmDX,OAAnD,EAA4D;AAC1D,YAAMkpB,QAAQtqB,MAAMkL,QAAN,CAAe9J,KAAf,CAAd;AACA,YAAIkpB,MAAM1pB,GAAN,CAAU,kBAAV,CAAJ,EAAmC;AACjC,cAAI,CAACZ,MAAM48F,WAAX,EAAwB;AACtB58F,kBAAM48F,WAAN,GAAoB,EAApB;AACD;AACD58F,gBAAM48F,WAAN,CAAkBl9F,IAAlB,CAAuB4qB,KAAvB;AACD,SALD,MAKO;AACLtqB,gBAAM88F,SAAN,GAAkBxyE,KAAlB;AACD;AACF;AACF;AACF,GA1BD;;AA4BAxpB,YAAUi8F,yBAAV,GAAsC,UAACjzE,UAAD,EAAgB;AACpDhpB,cAAUk8F,kBAAV,CAA6BlzE,UAA7B;AACD,GAFD;;AAIA;AACAhpB,YAAUk8F,kBAAV,GAA+B,UAAClzE,UAAD,EAAgB;AAC7C,QACE,CAAC9pB,MAAMqqB,UAAP,IACA,CAACrqB,MAAMqqB,UAAN,CAAiBovD,aAAjB,EADD,IAEA,CAACz5E,MAAMqqB,UAAN,CAAiBogB,WAAjB,EAHH,EAIE;AACA;AACD;;AAED3pC,cAAUoH,KAAV,CAAgB4hB,UAAhB,EAA4B,IAA5B;;AAEA9pB,UAAM88F,SAAN,CAAgBjzE,QAAhB,CAAyBC,UAAzB;;AAEAhpB,cAAUoH,KAAV,CAAgB4hB,UAAhB,EAA4B,KAA5B;AACD,GAdD;;AAgBA;AACAhpB,YAAUm8F,uBAAV,GAAoC,UAACnzE,UAAD,EAAgB;AAClD,QACE,CAAC9pB,MAAMqqB,UAAP,IACA,CAACrqB,MAAMqqB,UAAN,CAAiBovD,aAAjB,EADD,IAEAz5E,MAAMqqB,UAAN,CAAiBogB,WAAjB,EAHF,EAIE;AACA;AACD;;AAED3pC,cAAUoH,KAAV,CAAgB4hB,UAAhB,EAA4B,IAA5B;;AAEA9pB,UAAM88F,SAAN,CAAgBjzE,QAAhB,CAAyBC,UAAzB;;AAEAhpB,cAAUoH,KAAV,CAAgB4hB,UAAhB,EAA4B,KAA5B;AACD,GAdD;;AAgBAhpB,YAAUo8F,gBAAV,GAA6B,YAAM;AACjC;AACA,QAAI,CAACl9F,MAAM48F,WAAX,EAAwB;AACtB;AACD;;AAED58F,UAAM68F,cAAN,GAAuB,EAAvB;AACA,SAAK,IAAIz7F,QAAQ,CAAjB,EAAoBA,QAAQpB,MAAM48F,WAAN,CAAkB76F,MAA9C,EAAsDX,OAAtD,EAA+D;AAC7D,UAAMkpB,QAAQtqB,MAAM48F,WAAN,CAAkBx7F,KAAlB,CAAd;AACAkpB,YAAMV,MAAN;AACA,UAAIU,MAAM2I,SAAN,EAAJ,EAAuB;AACrBjzB,cAAM68F,cAAN,CAAqBn9F,IAArB,CAA0B4qB,KAA1B;AACD;AACF;AACF,GAdD;;AAgBAxpB,YAAUq8F,SAAV,GAAsB,UAACxzE,OAAD,EAAUG,UAAV,EAAyB;AAC7C,QAAIH,OAAJ,EAAa;AACX,UAAI,CAAC3pB,MAAMqqB,UAAP,IAAqB,CAACrqB,MAAMqqB,UAAN,CAAiBovD,aAAjB,EAA1B,EAA4D;AAC1D;AACD;AACD,UAAIz5E,MAAMqqB,UAAN,CAAiBogB,WAAjB,EAAJ,EAAoC;AAClC3gB,mBAAWixE,yBAAX;AACD,OAFD,MAEO;AACLjxE,mBAAWkxE,8BAAX;AACD;AACF;AACF,GAXD;;AAaAl6F,YAAU0vC,iBAAV,GAA8B,UAAC7mB,OAAD,EAAUG,UAAV;AAAA,WAC5BhpB,UAAU6vC,UAAV,CAAqBhnB,OAArB,EAA8BG,UAA9B,CAD4B;AAAA,GAA9B;;AAGAhpB,YAAU6vC,UAAV,GAAuB,UAAChnB,OAAD,EAAUG,UAAV,EAAyB;AAC9C,QAAIH,OAAJ,EAAa;AACX3pB,YAAMm1B,kBAAN,CAAyB02C,eAAzB;AACA/qE,gBAAUo8F,gBAAV;AACD,KAHD,MAGO,IAAIl9F,MAAM68F,cAAV,EAA0B;AAC/B,WAAK,IAAIz7F,QAAQ,CAAjB,EAAoBA,QAAQpB,MAAM68F,cAAN,CAAqB96F,MAAjD,EAAyDX,OAAzD,EAAkE;AAChEpB,cAAM68F,cAAN,CAAqBz7F,KAArB,EAA4Bi2B,UAA5B;AACD;AACF;AACF,GATD;;AAWA;AACAv2B,YAAUyvC,eAAV,GAA4B,UAAC5mB,OAAD,EAAUG,UAAV,EAAyB;AACnD,QAAIH,OAAJ,EAAa;AACX3pB,YAAMm1B,kBAAN,CAAyBu2C,gBAAzB;AACA5qE,gBAAUo8F,gBAAV;AACD,KAHD,MAGO,IAAIl9F,MAAM68F,cAAV,EAA0B;AAC/B,WAAK,IAAIz7F,QAAQ,CAAjB,EAAoBA,QAAQpB,MAAM68F,cAAN,CAAqB96F,MAAjD,EAAyDX,OAAzD,EAAkE;AAChEpB,cAAM68F,cAAN,CAAqBz7F,KAArB,EAA4Bi2B,UAA5B;AACD;AACF;AACF,GATD;;AAWAv2B,YAAUo6C,cAAV,GAA2B,YAAM;AAC/B;AACA,QAAIl7C,MAAMqqB,UAAN,CAAiBzoB,QAAjB,KAA8B5B,MAAMo9F,aAAN,CAAoBx7F,QAApB,EAAlC,EAAkE;AAChE5B,YAAMqqB,UAAN,CAAiB04B,aAAjB;AACA,qBAAKoK,IAAL,CAAUntD,MAAMq9F,WAAN,CAAkBnhD,IAA5B,EAAkCl8C,MAAMqqB,UAAN,CAAiBivB,SAAjB,EAAlC;AACA,qBAAKkB,SAAL,CAAex6C,MAAMq9F,WAAN,CAAkBnhD,IAAjC,EAAuCl8C,MAAMq9F,WAAN,CAAkBnhD,IAAzD;;AAEA,UAAIl8C,MAAMqqB,UAAN,CAAiBkxB,aAAjB,EAAJ,EAAsC;AACpC,uBAAKS,QAAL,CAAch8C,MAAMq9F,WAAN,CAAkB3hD,YAAhC;AACD,OAFD,MAEO;AACL,uBAAKqV,QAAL,CAAc/wD,MAAMq9F,WAAN,CAAkB3hD,YAAhC,EAA8C17C,MAAMq9F,WAAN,CAAkBnhD,IAAhE;AACA,uBAAK2R,MAAL,CACE7tD,MAAMq9F,WAAN,CAAkB3hD,YADpB,EAEE17C,MAAMq9F,WAAN,CAAkB3hD,YAFpB;AAID;AACD17C,YAAMo9F,aAAN,CAAoB17F,QAApB;AACD;;AAED,WAAO1B,MAAMq9F,WAAb;AACD,GApBD;AAqBD;;AAED;AACA;AACA;;AAEA,IAAM/zE,iBAAiB;AACrBjgB,WAAS,IADY;AAErB+zF,iBAAe,IAFM;AAGrBC,eAAa,IAHQ;AAIrBR,kBAAgB;AAJK,CAAvB;;AAOA;;AAEO,SAASv0F,MAAT,CAAgBxH,SAAhB,EAA2Bd,KAA3B,EAAsD;AAAA,MAApBwI,aAAoB,uEAAJ,EAAI;;AAC3DvI,SAAOgD,MAAP,CAAcjD,KAAd,EAAqBspB,cAArB,EAAqC9gB,aAArC;;AAEA;AACA,qBAAYF,MAAZ,CAAmBxH,SAAnB,EAA8Bd,KAA9B,EAAqCwI,aAArC;;AAEAxI,QAAMo9F,aAAN,GAAsB,EAAtB;AACA,kBAAM7hG,GAAN,CAAUyE,MAAMo9F,aAAhB,EAA+B,EAAEn8F,OAAO,CAAT,EAA/B;AACAjB,QAAMq9F,WAAN,GAAoB;AAClB3hD,kBAAc,eAAKI,MAAL,EADI;AAElBI,UAAM,eAAKJ,MAAL;AAFY,GAApB;;AAKA;AACA,kBAAMpgD,MAAN,CAAaoF,SAAb,EAAwBd,KAAxB,EAA+B,CAAC,SAAD,CAA/B;;AAEA,kBAAMxE,GAAN,CAAUsF,SAAV,EAAqBd,KAArB,EAA4B,CAAC,gBAAD,CAA5B;;AAEA;AACA08F,iBAAe57F,SAAf,EAA0Bd,KAA1B;AACD;;AAED;;AAEO,IAAMhE,oCAAc,gBAAMA,WAAN,CAAkBsM,MAAlB,CAApB;;AAEP;;kBAEe,EAAEtM,wBAAF,EAAesM,cAAf,E;;;;;;;;;;;;;QC9ECA,M,GAAAA,M;;AAzHhB;;IAAY4gD,K;;AACZ;;;;;;;;AAEA;AACA;AACA;;AAEA,SAASo0C,gBAAT,CAA0Bx8F,SAA1B,EAAqCd,KAArC,EAA4C;AAC1C;AACAA,QAAMkB,cAAN,CAAqBxB,IAArB,CAA0B,kBAA1B;;AAEA;AACAoB,YAAUqvC,SAAV,GAAsB,UAACxmB,OAAD,EAAa;AACjC,QAAIA,OAAJ,EAAa;AACX,UAAI,CAAC3pB,MAAMqqB,UAAX,EAAuB;AACrB;AACD;;AAEDvpB,gBAAUqqB,YAAV;AACArqB,gBAAUmqB,eAAV,CAA0BjrB,MAAMqqB,UAAN,CAAiBotE,WAAjB,EAA1B;AACA32F,gBAAU4pB,cAAV,CAAyB1qB,MAAMqqB,UAAN,CAAiBsyE,SAAjB,EAAzB;AACA77F,gBAAUuqB,iBAAV;AACD;AACF,GAXD;;AAaA;AACAvqB,YAAUk8F,kBAAV,GAA+B,UAAClzE,UAAD,EAAgB;AAC7C,QACE,CAAC9pB,MAAMqqB,UAAP,IACA,CAACrqB,MAAMqqB,UAAN,CAAiBovD,aAAjB,EADD,IAEA,CAACz5E,MAAMqqB,UAAN,CAAiBogB,WAAjB,EAHH,EAIE;AACA;AACD;;AAED3pC,cAAUoH,KAAV,CAAgB4hB,UAAhB,EAA4B,IAA5B;AACA9pB,UAAMkL,QAAN,CAAehO,OAAf,CAAuB,UAACotB,KAAD,EAAW;AAChC,UAAI,CAACA,MAAM1pB,GAAN,CAAU,kBAAV,CAAL,EAAoC;AAClC0pB,cAAMT,QAAN,CAAeC,UAAf;AACD;AACF,KAJD;AAKAhpB,cAAUoH,KAAV,CAAgB4hB,UAAhB,EAA4B,KAA5B;AACD,GAhBD;;AAkBA;AACAhpB,YAAUm8F,uBAAV,GAAoC,UAACnzE,UAAD,EAAgB;AAClD,QACE,CAAC9pB,MAAMqqB,UAAP,IACA,CAACrqB,MAAMqqB,UAAN,CAAiBovD,aAAjB,EADD,IAEAz5E,MAAMqqB,UAAN,CAAiBogB,WAAjB,EAHF,EAIE;AACA;AACD;;AAED3pC,cAAUoH,KAAV,CAAgB4hB,UAAhB,EAA4B,IAA5B;AACA9pB,UAAMkL,QAAN,CAAehO,OAAf,CAAuB,UAACotB,KAAD,EAAW;AAChC,UAAI,CAACA,MAAM1pB,GAAN,CAAU,kBAAV,CAAL,EAAoC;AAClC0pB,cAAMT,QAAN,CAAeC,UAAf;AACD;AACF,KAJD;AAKAhpB,cAAUoH,KAAV,CAAgB4hB,UAAhB,EAA4B,KAA5B;AACD,GAhBD;;AAkBAhpB,YAAUo8F,gBAAV,GAA6B,YAAM;AACjC;AACAl9F,UAAM68F,cAAN,GAAuB,EAAvB;AACA78F,UAAMkL,QAAN,CAAehO,OAAf,CAAuB,UAACotB,KAAD,EAAW;AAChC,UAAIA,MAAM1pB,GAAN,CAAU,kBAAV,CAAJ,EAAmC;AACjC0pB,cAAMV,MAAN;AACA,YAAIU,MAAM2I,SAAN,EAAJ,EAAuB;AACrBjzB,gBAAM68F,cAAN,CAAqBn9F,IAArB,CAA0B4qB,KAA1B;AACD;AACF;AACF,KAPD;AAQD,GAXD;;AAaA;AACAxpB,YAAU6vC,UAAV,GAAuB,UAAChnB,OAAD,EAAUG,UAAV,EAAyB;AAC9C,QAAIH,OAAJ,EAAa;AACX3pB,YAAMqJ,OAAN,GAAgBvI,UACb0pB,sBADa,CACU,uBADV,EAEb8K,UAFa,EAAhB;AAGAt1B,YAAMqJ,OAAN,CAAcuiE,SAAd,CAAwB,IAAxB;AACA9qE,gBAAUo8F,gBAAV;AACD,KAND,MAMO;AACL;AACAl9F,YAAM68F,cAAN,CAAqB3/F,OAArB,CAA6B,UAACotB,KAAD,EAAW;AACtCA,cAAM+M,UAAN;AACD,OAFD;AAGD;AACF,GAbD;;AAeA;AACAv2B,YAAUyvC,eAAV,GAA4B,UAAC5mB,OAAD,EAAUG,UAAV,EAAyB;AACnD,QAAIH,OAAJ,EAAa;AACX3pB,YAAMqJ,OAAN,GAAgBvI,UACb0pB,sBADa,CACU,uBADV,EAEb8K,UAFa,EAAhB;AAGAt1B,YAAMqJ,OAAN,CAAcuiE,SAAd,CAAwB,KAAxB;AACA9qE,gBAAUo8F,gBAAV;AACD,KAND,MAMO;AACL;AACAl9F,YAAM68F,cAAN,CAAqB3/F,OAArB,CAA6B,UAACotB,KAAD,EAAW;AACtCA,cAAM+M,UAAN;AACD,OAFD;AAGAr3B,YAAMqJ,OAAN,CAAcuiE,SAAd,CAAwB,IAAxB;AACD;AACF,GAdD;AAeD;;AAED;AACA;AACA;;AAEA,IAAMtiD,iBAAiB;AACrBjgB,WAAS,IADY;AAErBwzF,kBAAgB;AAFK,CAAvB;;AAKA;;AAEO,SAASv0F,MAAT,CAAgBxH,SAAhB,EAA2Bd,KAA3B,EAAsD;AAAA,MAApBwI,aAAoB,uEAAJ,EAAI;;AAC3DvI,SAAOgD,MAAP,CAAcjD,KAAd,EAAqBspB,cAArB,EAAqC9gB,aAArC;;AAEA;AACA,qBAAYF,MAAZ,CAAmBxH,SAAnB,EAA8Bd,KAA9B,EAAqCwI,aAArC;;AAEA;AACA0gD,QAAMxtD,MAAN,CAAaoF,SAAb,EAAwBd,KAAxB,EAA+B,CAAC,SAAD,CAA/B;;AAEAkpD,QAAM1tD,GAAN,CAAUsF,SAAV,EAAqBd,KAArB,EAA4B,CAAC,gBAAD,CAA5B;;AAEA;AACAs9F,mBAAiBx8F,SAAjB,EAA4Bd,KAA5B;AACD;;AAED;;AAEO,IAAMhE,oCAAcktD,MAAMltD,WAAN,CAAkBsM,MAAlB,CAApB;;AAEP;;kBAEe,EAAEtM,wBAAF,EAAesM,cAAf,E;;;;;;;;;;;;;QC7CCA,M,GAAAA,M;;AAjGhB;;AAEA;;IAAY4gD,K;;AACZ;;;;;;;;AAEA;AACA;AACA;;AAEA,SAASq0C,eAAT,CAAyBz8F,SAAzB,EAAoCd,KAApC,EAA2C;AACzC;AACAA,QAAMkB,cAAN,CAAqBxB,IAArB,CAA0B,iBAA1B;;AAEAoB,YAAUqvC,SAAV,GAAsB,UAACxmB,OAAD,EAAa;AACjC,QAAIA,OAAJ,EAAa;AACX3pB,YAAMo1B,cAAN,GAAuBt0B,UAAU0pB,sBAAV,CACrB,mBADqB,CAAvB;AAGAxqB,YAAMm1B,kBAAN,GAA2Bn1B,MAAMo1B,cAAN,CAAqBC,SAArB,EAA3B;AACAr1B,YAAMqJ,OAAN,GAAgBrJ,MAAMm1B,kBAAN,CAAyBG,UAAzB,EAAhB;AACD;AACF,GARD;;AAUA;AACAx0B,YAAU6vC,UAAV,GAAuB,UAAChnB,OAAD,EAAa;AAClC,QAAIA,OAAJ,EAAa;AACX,UAAM6zE,QAAQx9F,MAAMo1B,cAAN,CAAqBqoE,qBAArB,EAAd;AACAz9F,YAAMqJ,OAAN,CAAcm4D,QAAd,CACEg8B,MAAME,UADR,EAEEF,MAAMG,UAFR,EAGEH,MAAMI,KAHR,EAIEJ,MAAMK,KAJR;AAMA79F,YAAMqJ,OAAN,CAAcy0F,OAAd,CACEN,MAAME,UADR,EAEEF,MAAMG,UAFR,EAGEH,MAAMI,KAHR,EAIEJ,MAAMK,KAJR;AAMD;AACF,GAhBD;AAiBA/8F,YAAUyvC,eAAV,GAA4BzvC,UAAU6vC,UAAtC;AACA7vC,YAAU0vC,iBAAV,GAA8B1vC,UAAU6vC,UAAxC;AACA7vC,YAAUi9F,UAAV,GAAuBj9F,UAAU6vC,UAAjC;;AAEA7vC,YAAUo6C,cAAV,GAA2B,UAACpK,GAAD,EAAS;AAClC;AACA,QACEA,QAAQ9wC,MAAMg+F,YAAd,IACAh+F,MAAMm1B,kBAAN,CAAyBvzB,QAAzB,KAAsC5B,MAAMo9F,aAAN,CAAoBx7F,QAApB,EADtC,IAEAd,UAAUc,QAAV,KAAuB5B,MAAMo9F,aAAN,CAAoBx7F,QAApB,EAFvB,IAGAkvC,IAAIlvC,QAAJ,KAAiB5B,MAAMo9F,aAAN,CAAoBx7F,QAApB,EAJnB,EAKE;AACA,qBAAKurD,IAAL,CAAUntD,MAAMq9F,WAAN,CAAkB5hD,IAA5B,EAAkCz7C,MAAMqqB,UAAN,CAAiBkwB,aAAjB,EAAlC;;AAEA,qBAAKwW,QAAL,CAAc/wD,MAAMq9F,WAAN,CAAkB3hD,YAAhC,EAA8C17C,MAAMq9F,WAAN,CAAkB5hD,IAAhE;AACA,qBAAKoS,MAAL,CACE7tD,MAAMq9F,WAAN,CAAkB3hD,YADpB,EAEE17C,MAAMq9F,WAAN,CAAkB3hD,YAFpB;AAIA,qBAAKlB,SAAL,CAAex6C,MAAMq9F,WAAN,CAAkB5hD,IAAjC,EAAuCz7C,MAAMq9F,WAAN,CAAkB5hD,IAAzD;;AAEA,UAAMwiD,cAAcj+F,MAAMo1B,cAAN,CAAqB8oE,cAArB,EAApB;;AAEA,qBAAK/wC,IAAL,CACEntD,MAAMq9F,WAAN,CAAkBc,IADpB,EAEEn+F,MAAMqqB,UAAN,CAAiB+zE,mBAAjB,CAAqCH,WAArC,EAAkD,CAAC,CAAnD,EAAsD,CAAtD,CAFF;AAIA,qBAAKzjD,SAAL,CAAex6C,MAAMq9F,WAAN,CAAkBc,IAAjC,EAAuCn+F,MAAMq9F,WAAN,CAAkBc,IAAzD;;AAEA,qBAAKpiD,QAAL,CACE/7C,MAAMq9F,WAAN,CAAkB7hD,IADpB,EAEEx7C,MAAMq9F,WAAN,CAAkBc,IAFpB,EAGEn+F,MAAMq9F,WAAN,CAAkB5hD,IAHpB;;AAMAz7C,YAAMo9F,aAAN,CAAoB17F,QAApB;AACA1B,YAAMg+F,YAAN,GAAqBltD,GAArB;AACD;;AAED,WAAO9wC,MAAMq9F,WAAb;AACD,GApCD;AAqCD;;AAED;AACA;AACA;;AAEA,IAAM/zE,iBAAiB;AACrBjgB,WAAS,IADY;AAErB20F,gBAAc,IAFO;AAGrBZ,iBAAe,IAHM;AAIrBC,eAAa;AAJQ,CAAvB;;AAOA;;AAEO,SAAS/0F,MAAT,CAAgBxH,SAAhB,EAA2Bd,KAA3B,EAAsD;AAAA,MAApBwI,aAAoB,uEAAJ,EAAI;;AAC3DvI,SAAOgD,MAAP,CAAcjD,KAAd,EAAqBspB,cAArB,EAAqC9gB,aAArC;;AAEA;AACA,qBAAYF,MAAZ,CAAmBxH,SAAnB,EAA8Bd,KAA9B,EAAqCwI,aAArC;;AAEAxI,QAAMo9F,aAAN,GAAsB,EAAtB;AACAl0C,QAAM3tD,GAAN,CAAUyE,MAAMo9F,aAAhB;;AAEAp9F,QAAMq9F,WAAN,GAAoB;AAClB3hD,kBAAc,eAAKI,MAAL,EADI;AAElBqiD,UAAM,eAAKriD,MAAL,EAFY;AAGlBL,UAAM,eAAKK,MAAL,EAHY;AAIlBN,UAAM,eAAKM,MAAL;AAJY,GAApB;;AAOA;AACAoN,QAAMxtD,MAAN,CAAaoF,SAAb,EAAwBd,KAAxB,EAA+B,CAAC,SAAD,EAAY,eAAZ,CAA/B;;AAEA;AACAu9F,kBAAgBz8F,SAAhB,EAA2Bd,KAA3B;AACD;;AAED;;AAEO,IAAMhE,oCAAcktD,MAAMltD,WAAN,CAAkBsM,MAAlB,CAApB;;AAEP;;kBAEe,EAAEtM,wBAAF,EAAesM,cAAf,E;;;;;;;;;;;;;QCykBCA,M,GAAAA,M;;AAvsBhB;;AAEA;;;;AAEA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;;;IAEQtN,a,mBAAAA,a;IACA05B,c,sBAAAA,c;IACAsZ,U,0BAAAA,U;IACA+B,S,8BAAAA,S;;;AAER,IAAMC,aAAa,EAAE3rC,MAAM,YAAR,EAAnB;AACA,IAAM4rC,WAAW,EAAE5rC,MAAM,UAAR,EAAjB;;AAEA;AACA;AACA;;AAEA,SAASg6F,sBAAT,CAAgCv9F,SAAhC,EAA2Cd,KAA3C,EAAkD;AAChD;AACAA,QAAMkB,cAAN,CAAqBxB,IAArB,CAA0B,wBAA1B;;AAEA;AACA,MAAMuiD,aAAahiD,OAAOgD,MAAP,CAAc,EAAd,EAAkBnC,SAAlB,CAAnB;;AAEAA,YAAUiwC,WAAV,GAAwB,UAACD,GAAD,EAAMD,KAAN,EAAgB;AACtC/vC,cAAUi9C,WAAV,CAAsB/N,UAAtB;AACA,QAAI,CAAChwC,MAAMqqB,UAAN,CAAiB2zB,SAAjB,EAAL,EAAmC;AACjCh+C,YAAMqqB,UAAN,CAAiBlkB,MAAjB;AACD;AACDnG,UAAMq2C,YAAN,GAAqBr2C,MAAMqqB,UAAN,CAAiB1kB,YAAjB,CAA8B,CAA9B,CAArB;AACA7E,cAAUi9C,WAAV,CAAsB9N,QAAtB;;AAEA,QAAI,CAACjwC,MAAMq2C,YAAX,EAAyB;AACvBr7C,oBAAc,WAAd;AACA;AACD;;AAED;AACA,QACE,CAACgF,MAAMq2C,YAAN,CAAmBnL,SAApB,IACA,CAAClrC,MAAMq2C,YAAN,CAAmBnL,SAAnB,GAA+BpiB,iBAA/B,EAFH,EAGE;AACA;AACD;;AAED;AACA,QAAMu0B,KAAKr9C,MAAMqJ,OAAjB;AACA,QAAIrJ,MAAMm1B,kBAAN,CAAyBsE,SAAzB,EAAJ,EAA0C;AACxCz5B,YAAMs+F,eAAN,GAAwB,IAAxB;AACAt+F,YAAM0zE,SAAN,GAAkB,IAAlB;AACD,KAHD,MAGO,IAAI,CAAC1zE,MAAM0zE,SAAX,EAAsB;AAC3B1zE,YAAM0zE,SAAN,GAAkB1zE,MAAMqJ,OAAN,CAAc6xB,YAAd,CAA2B,wBAA3B,CAAlB;AACAl7B,YAAMs+F,eAAN,GAAwB,CAAC,CAACt+F,MAAM0zE,SAAhC;AACD;AACD;AACA;AACA;;AAEA,QAAMz1B,kBAAkBpN,MAAMsD,WAAN,GAAoB+J,kBAApB,EAAxB;AACA,QAAMC,mBAAmBtN,MAAMsD,WAAN,GAAoBiK,mBAApB,EAAzB;AACA,QAAI,CAACH,eAAD,IAAoB,CAACE,gBAAzB,EAA2C;AACzCn+C,YAAMm1B,kBAAN,CAAyBkpB,eAAzB;AACD,KAFD,MAEO,IAAIF,gBAAJ,EAAsB;AAC3Bn+C,YAAMm1B,kBAAN,CAAyBmpB,cAAzB;AACAjB,SAAGkB,QAAH,CAAYlB,GAAGmB,KAAf;AACD,KAHM,MAGA;AACLx+C,YAAMm1B,kBAAN,CAAyBmpB,cAAzB;AACAjB,SAAGkB,QAAH,CAAYlB,GAAGoB,IAAf;AACD;;AAED39C,cAAUk8C,gBAAV,CAA2BlM,GAA3B,EAAgCD,KAAhC;AACA/vC,cAAUq8C,eAAV,CAA0BrM,GAA1B,EAA+BD,KAA/B;AACA/vC,cAAU+8C,iBAAV,CAA4B/M,GAA5B,EAAiCD,KAAjC;AACD,GAjDD;;AAmDA/vC,YAAUy9F,qBAAV,GAAkC,UAAC/qF,GAAD,EAAMF,CAAN,EAASC,CAAT,EAAYpS,GAAZ,EAAoB;AACpD,QAAMmxD,MAAMh/C,EAAE,CAAF,CAAZ;AACA,QAAM6+C,MAAM7+C,EAAE,CAAF,CAAZ;AACA,QAAM8+C,MAAM9+C,EAAE,CAAF,CAAZ;AACA,QAAMggD,MAAMhgD,EAAE,CAAF,CAAZ;AACA,QAAMi/C,MAAMj/C,EAAE,CAAF,CAAZ;AACA,QAAMk/C,MAAMl/C,EAAE,CAAF,CAAZ;AACA,QAAM++C,MAAM/+C,EAAE,CAAF,CAAZ;AACA,QAAMigD,MAAMjgD,EAAE,CAAF,CAAZ;AACA,QAAMm/C,MAAMn/C,EAAE,CAAF,CAAZ;AACA,QAAMo/C,MAAMp/C,EAAE,CAAF,CAAZ;AACA,QAAMq/C,MAAMr/C,EAAE,EAAF,CAAZ;AACA,QAAMkgD,MAAMlgD,EAAE,EAAF,CAAZ;AACA,QAAMmgD,MAAMngD,EAAE,EAAF,CAAZ;AACA,QAAMogD,MAAMpgD,EAAE,EAAF,CAAZ;AACA,QAAMqgD,MAAMrgD,EAAE,EAAF,CAAZ;AACA,QAAMsgD,MAAMtgD,EAAE,EAAF,CAAZ;;AAEA;AACA,QAAIqhD,KAAKphD,EAAEpS,GAAF,CAAT;AACA,QAAIyW,KAAKrE,EAAEpS,MAAM,CAAR,CAAT;AACA,QAAI4W,KAAKxE,EAAEpS,MAAM,CAAR,CAAT;AACA,QAAI+W,KAAK3E,EAAEpS,MAAM,CAAR,CAAT;AACAqS,QAAI,CAAJ,IAASmhD,KAAKrC,GAAL,GAAW16C,KAAK26C,GAAhB,GAAsBx6C,KAAK06C,GAA3B,GAAiCv6C,KAAKu7C,GAA/C;AACAjgD,QAAI,CAAJ,IAASmhD,KAAKxC,GAAL,GAAWv6C,KAAK46C,GAAhB,GAAsBz6C,KAAK26C,GAA3B,GAAiCx6C,KAAKw7C,GAA/C;AACAlgD,QAAI,CAAJ,IAASmhD,KAAKvC,GAAL,GAAWx6C,KAAKy6C,GAAhB,GAAsBt6C,KAAK46C,GAA3B,GAAiCz6C,KAAKy7C,GAA/C;AACAngD,QAAI,CAAJ,IAASmhD,KAAKrB,GAAL,GAAW17C,KAAK27C,GAAhB,GAAsBx7C,KAAKy7C,GAA3B,GAAiCt7C,KAAK07C,GAA/C;;AAEAe,SAAKphD,EAAEpS,MAAM,CAAR,CAAL;AACAyW,SAAKrE,EAAEpS,MAAM,CAAR,CAAL;AACA4W,SAAKxE,EAAEpS,MAAM,CAAR,CAAL;AACA+W,SAAK3E,EAAEpS,MAAM,CAAR,CAAL;AACAqS,QAAI,CAAJ,IAASmhD,KAAKrC,GAAL,GAAW16C,KAAK26C,GAAhB,GAAsBx6C,KAAK06C,GAA3B,GAAiCv6C,KAAKu7C,GAA/C;AACAjgD,QAAI,CAAJ,IAASmhD,KAAKxC,GAAL,GAAWv6C,KAAK46C,GAAhB,GAAsBz6C,KAAK26C,GAA3B,GAAiCx6C,KAAKw7C,GAA/C;AACAlgD,QAAI,CAAJ,IAASmhD,KAAKvC,GAAL,GAAWx6C,KAAKy6C,GAAhB,GAAsBt6C,KAAK46C,GAA3B,GAAiCz6C,KAAKy7C,GAA/C;AACAngD,QAAI,CAAJ,IAASmhD,KAAKrB,GAAL,GAAW17C,KAAK27C,GAAhB,GAAsBx7C,KAAKy7C,GAA3B,GAAiCt7C,KAAK07C,GAA/C;;AAEAe,SAAKphD,EAAEpS,MAAM,CAAR,CAAL;AACAyW,SAAKrE,EAAEpS,MAAM,CAAR,CAAL;AACA4W,SAAKxE,EAAEpS,MAAM,EAAR,CAAL;AACA+W,SAAK3E,EAAEpS,MAAM,EAAR,CAAL;AACAqS,QAAI,CAAJ,IAASmhD,KAAKrC,GAAL,GAAW16C,KAAK26C,GAAhB,GAAsBx6C,KAAK06C,GAA3B,GAAiCv6C,KAAKu7C,GAA/C;AACAjgD,QAAI,CAAJ,IAASmhD,KAAKxC,GAAL,GAAWv6C,KAAK46C,GAAhB,GAAsBz6C,KAAK26C,GAA3B,GAAiCx6C,KAAKw7C,GAA/C;AACAlgD,QAAI,EAAJ,IAAUmhD,KAAKvC,GAAL,GAAWx6C,KAAKy6C,GAAhB,GAAsBt6C,KAAK46C,GAA3B,GAAiCz6C,KAAKy7C,GAAhD;AACAngD,QAAI,EAAJ,IAAUmhD,KAAKrB,GAAL,GAAW17C,KAAK27C,GAAhB,GAAsBx7C,KAAKy7C,GAA3B,GAAiCt7C,KAAK07C,GAAhD;;AAEAe,SAAKphD,EAAEpS,MAAM,EAAR,CAAL;AACAyW,SAAKrE,EAAEpS,MAAM,EAAR,CAAL;AACA4W,SAAKxE,EAAEpS,MAAM,EAAR,CAAL;AACA+W,SAAK3E,EAAEpS,MAAM,EAAR,CAAL;AACAqS,QAAI,EAAJ,IAAUmhD,KAAKrC,GAAL,GAAW16C,KAAK26C,GAAhB,GAAsBx6C,KAAK06C,GAA3B,GAAiCv6C,KAAKu7C,GAAhD;AACAjgD,QAAI,EAAJ,IAAUmhD,KAAKxC,GAAL,GAAWv6C,KAAK46C,GAAhB,GAAsBz6C,KAAK26C,GAA3B,GAAiCx6C,KAAKw7C,GAAhD;AACAlgD,QAAI,EAAJ,IAAUmhD,KAAKvC,GAAL,GAAWx6C,KAAKy6C,GAAhB,GAAsBt6C,KAAK46C,GAA3B,GAAiCz6C,KAAKy7C,GAAhD;AACAngD,QAAI,EAAJ,IAAUmhD,KAAKrB,GAAL,GAAW17C,KAAK27C,GAAhB,GAAsBx7C,KAAKy7C,GAA3B,GAAiCt7C,KAAK07C,GAAhD;AACD,GAtDD;;AAwDA9yD,YAAUizC,mBAAV,GAAgC,UAAC9C,OAAD,EAAUH,GAAV,EAAeD,KAAf,EAAyB;AACvD,QAAI7wC,MAAMs+F,eAAV,EAA2B;AACzB,UAAMrrD,sBAAsBjzC,MAAMkzC,WAAN,CAAkBvwC,kBAAlB,CAC1B,qBAD0B,CAA5B;;AAIA,UAAIswC,sBAAsB,CAA1B,EAA6B;AAC3B,YAAIH,WAAW7B,QAAQmB,MAAvB;;AAEA,YAAIpyC,MAAMkzC,WAAN,CAAkBG,OAAlB,GAA4BW,eAA5B,EAAJ,EAAmD;AACjDlB,qBAAW,wBAAiBplB,UAAjB,CACTolB,QADS,EAET,oBAFS,EAGT,CACE,0BADF,EAEE,yBAFF,EAGE,4BAHF,EAIE,gCAJF,CAHS,EASThqC,MATF;AAUAgqC,qBAAW,wBAAiBplB,UAAjB,CACTolB,QADS,EAET,qBAFS,EAGT,CAAC,uDAAD,CAHS,EAIThqC,MAJF;AAKD;AACDmoC,gBAAQmB,MAAR,GAAiBU,QAAjB;AACD;AACF;AACDmP,eAAWlO,mBAAX,CAA+B9C,OAA/B,EAAwCH,GAAxC,EAA6CD,KAA7C;AACD,GA9BD;;AAgCA/vC,YAAU+xC,kBAAV,GAA+B,UAAC5B,OAAD,EAAUH,GAAV,EAAeD,KAAf,EAAyB;AACtD,QAAI7wC,MAAMs+F,eAAN,IAAyBt+F,MAAMqqB,UAAN,CAAiBm0E,aAAjB,EAA7B,EAA+D;AAC7D,UAAI1rD,WAAW7B,QAAQmB,MAAvB;AACA,UAAIW,WAAW9B,QAAQ2B,QAAvB;AACA,UAAII,WAAW/B,QAAQuB,QAAvB;;AAEA,UAAMS,sBAAsBjzC,MAAMkzC,WAAN,CAAkBvwC,kBAAlB,CAC1B,qBAD0B,CAA5B;;AAIA;AACA;AACA,UAAIwwC,WAAW,CACb,wBADa,EAEb,wBAFa,EAGb,yBAHa,EAIb,uDAJa,CAAf;AAMA;AACA,UAAIF,mBAAJ,EAAyB;AACvBE,mBAAWA,SAAS7yC,MAAT,CAAgB,CACzB,oCADyB,EAEzB,qCAFyB,CAAhB,CAAX;AAID;;AAED;AACA;AACA;AACA,UAAI8yC,YAAY,CACd,oBADc,EAEd,sBAFc,EAGd,kBAHc,CAAhB;AAKA,UAAIH,mBAAJ,EAAyB;AACvBG,oBAAYA,UAAU9yC,MAAV,CAAiB,CAC3B,uBAD2B,EAE3B,wBAF2B,CAAjB,CAAZ;AAID;AACD8yC,kBAAYA,UAAU9yC,MAAV,CAAiB,CAAC,6BAAD,CAAjB,CAAZ;AACA,UAAI2yC,mBAAJ,EAAyB;AACvBG,oBAAYA,UAAU9yC,MAAV,CAAiB,CAC3B,yCAD2B,EAE3B,yCAF2B,CAAjB,CAAZ;AAID;;AAED,UAAI,CAACN,MAAMuzC,YAAX,EAAyB;AACvBJ,mBAAWA,SAAS7yC,MAAT,CAAgB,CAAC,mCAAD,CAAhB,CAAX;AACAwyC,mBAAW,wBAAiBplB,UAAjB,CAA4BolB,QAA5B,EAAsC,mBAAtC,EAA2D,CACpE,wBADoE,EAEpE,mCAFoE,CAA3D,EAGRhqC,MAHH;AAIAgqC,mBAAW,wBAAiBplB,UAAjB,CAA4BolB,QAA5B,EAAsC,oBAAtC,EAA4D,CACrE,+BADqE,CAA5D,EAERhqC,MAFH;AAGAiqC,mBAAW,wBAAiBrlB,UAAjB,CAA4BqlB,QAA5B,EAAsC,mBAAtC,EAA2D,CACpE,gCADoE,EAEpE,+BAFoE,CAA3D,EAGRjqC,MAHH;AAIAiqC,mBAAW,wBAAiBrlB,UAAjB,CAA4BqlB,QAA5B,EAAsC,oBAAtC,EAA4D,CACrE,+CADqE,CAA5D,EAERjqC,MAFH;;AAIAsqC,oBAAYA,UAAU9yC,MAAV,CAAiB,CAC3B,2CAD2B,EAE3B,2CAF2B,EAG3B,4CAH2B,CAAjB,CAAZ;AAKD;;AAED0yC,iBAAW,wBAAiBtlB,UAAjB,CACTslB,QADS,EAET,oBAFS,EAGTI,SAHS,EAITtqC,MAJF;;AAMAkqC,iBAAW,wBAAiBtlB,UAAjB,CACTslB,QADS,EAET,mBAFS,EAGTG,QAHS,EAITrqC,MAJF;;AAMAmoC,cAAQmB,MAAR,GAAiBU,QAAjB;AACA7B,cAAQ2B,QAAR,GAAmBG,QAAnB;AACA9B,cAAQuB,QAAR,GAAmBQ,QAAnB;AACD;AACDiP,eAAWpP,kBAAX,CAA8B5B,OAA9B,EAAuCH,GAAvC,EAA4CD,KAA5C;AACD,GAzFD;;AA2FA/vC,YAAUyzC,uBAAV,GAAoC,UAACtD,OAAD,EAAUH,GAAV,EAAeD,KAAf,EAAyB;AAC3D,QAAI7wC,MAAMs+F,eAAV,EAA2B;AACzB,UAAIxrD,WAAW7B,QAAQmB,MAAvB;;AAEA;AACA,UAAMa,sBAAsBjzC,MAAMkzC,WAAN,CAAkBvwC,kBAAlB,CAC1B,qBAD0B,CAA5B;AAGA,UAAIswC,sBAAsB,CAA1B,EAA6B;AAC3BH,mBAAW,wBAAiBplB,UAAjB,CACTolB,QADS,EAET,yBAFS,EAGT,CACE,sCADF,EAEE,4CAFF,EAGE,yCAHF,CAHS,EAQThqC,MARF;AASAgqC,mBAAW,wBAAiBplB,UAAjB,CAA4BolB,QAA5B,EAAsC,oBAAtC,EAA4D,CACrE,yBADqE,EAErE,0BAFqE,EAGrE,0BAHqE,CAA5D,EAIRhqC,MAJH;AAKD,OAfD,MAeO;AACLgqC,mBAAW,wBAAiBplB,UAAjB,CAA4BolB,QAA5B,EAAsC,oBAAtC,EAA4D,CACrE,yBADqE,EAErE,0BAFqE,CAA5D,EAGRhqC,MAHH;AAIAgqC,mBAAW,wBAAiBplB,UAAjB,CACTolB,QADS,EAET,yBAFS,EAGT,CACE,sCADF,EAEE,yCAFF,CAHS,EAOThqC,MAPF;AAQD;AACDmoC,cAAQmB,MAAR,GAAiBU,QAAjB;AACD;AACDmP,eAAW1N,uBAAX,CAAmCtD,OAAnC,EAA4CH,GAA5C,EAAiDD,KAAjD;AACD,GAxCD;;AA0CA/vC,YAAU60C,oBAAV,GAAiC,UAAC1E,OAAD,EAAUH,GAAV,EAAeD,KAAf,EAAyB;AACxD,QAAI7wC,MAAMo1B,cAAN,CAAqBwgB,WAArB,EAAJ,EAAwC;AACtC,UAAI5C,WAAW/B,QAAQuB,QAAvB;AACA,cAAQxyC,MAAMo1B,cAAN,CAAqBwgB,WAArB,GAAmCC,cAAnC,EAAR;AACE,aAAK9F,UAAU+F,QAAf;AACE;AACF,aAAK/F,UAAU++B,oBAAf;AACE,cAAI9uE,MAAMs+F,eAAV,EAA2B;AACzB,gBAAIxrD,WAAW7B,QAAQmB,MAAvB;AACAU,uBAAW,wBAAiBplB,UAAjB,CACTolB,QADS,EAET,qBAFS,EAGT,CACE,+BADF,EAEE,mCAFF,CAHS,EAOThqC,MAPF;AAQAgqC,uBAAW,wBAAiBplB,UAAjB,CACTolB,QADS,EAET,sBAFS,EAGT,wCAHS,EAIThqC,MAJF;AAKAmoC,oBAAQmB,MAAR,GAAiBU,QAAjB;AACAE,uBAAW,wBAAiBtlB,UAAjB,CACTslB,QADS,EAET,qBAFS,EAGT,mCAHS,EAITlqC,MAJF;AAKAkqC,uBAAW,wBAAiBtlB,UAAjB,CACTslB,QADS,EAET,sBAFS,EAGT,mDAHS,EAITlqC,MAJF;AAKD,WA1BD,MA0BO;AACLkqC,uBAAW,wBAAiBtlB,UAAjB,CACTslB,QADS,EAET,qBAFS,EAGT,2BAHS,EAITlqC,MAJF;AAKAkqC,uBAAW,wBAAiBtlB,UAAjB,CACTslB,QADS,EAET,sBAFS,EAGT,2CAHS,EAITlqC,MAJF;AAKD;AACD;AACF;AACEkqC,qBAAW,wBAAiBtlB,UAAjB,CACTslB,QADS,EAET,qBAFS,EAGT,2BAHS,EAITlqC,MAJF;AAKAkqC,qBAAW,wBAAiBtlB,UAAjB,CACTslB,QADS,EAET,sBAFS,EAGT,2CAHS,EAITlqC,MAJF;AAjDJ;AAuDAmoC,cAAQuB,QAAR,GAAmBQ,QAAnB;AACD;AACF,GA5DD;;AA8DAlyC,YAAU29F,2BAAV,GAAwC,UACtCC,gBADsC,EAEtCC,cAFsC,EAGtC3oD,MAHsC,EAItC4oD,MAJsC,EAKtCC,MALsC,EAMtCC,MANsC,EAOtCjxF,CAPsC,EAQtCqpC,QARsC,EASnC;AACH,QAAM0C,UAAU5D,OAAOsB,UAAP,EAAhB;;AAEA,QAAIonD,gBAAJ,EAAsB;AACpB,UAAMprF,IAAItT,MAAM07C,YAAhB;AACA,UAAMnoC,IAAIurF,MAAV;AACA,UAAMC,MAAMlxF,IAAI,CAAhB;AACA,UAAM2F,MAAMxT,MAAMg/F,OAAlB;;AAEA,UAAM1sC,MAAMh/C,EAAE,CAAF,CAAZ;AACA,UAAM6+C,MAAM7+C,EAAE,CAAF,CAAZ;AACA,UAAM8+C,MAAM9+C,EAAE,CAAF,CAAZ;AACA,UAAMi/C,MAAMj/C,EAAE,CAAF,CAAZ;AACA,UAAMk/C,MAAMl/C,EAAE,CAAF,CAAZ;AACA,UAAM++C,MAAM/+C,EAAE,CAAF,CAAZ;AACA,UAAMm/C,MAAMn/C,EAAE,CAAF,CAAZ;AACA,UAAMo/C,MAAMp/C,EAAE,CAAF,CAAZ;AACA,UAAMq/C,MAAMr/C,EAAE,CAAF,CAAZ;;AAEA,UAAMy/C,MAAMx/C,EAAEwrF,GAAF,CAAZ;AACA,UAAMnsC,MAAMr/C,EAAEwrF,MAAM,CAAR,CAAZ;AACA,UAAM/rC,MAAMz/C,EAAEwrF,MAAM,CAAR,CAAZ;AACA,UAAM9rC,MAAM1/C,EAAEwrF,MAAM,CAAR,CAAZ;AACA,UAAMlsC,MAAMt/C,EAAEwrF,MAAM,CAAR,CAAZ;AACA,UAAM7rC,MAAM3/C,EAAEwrF,MAAM,CAAR,CAAZ;AACA,UAAM5rC,MAAM5/C,EAAEwrF,MAAM,CAAR,CAAZ;AACA,UAAMjsC,MAAMv/C,EAAEwrF,MAAM,CAAR,CAAZ;AACA,UAAM3rC,MAAM7/C,EAAEwrF,MAAM,CAAR,CAAZ;;AAEAvrF,UAAI,CAAJ,IAASu/C,MAAMT,GAAN,GAAYM,MAAML,GAAlB,GAAwBS,MAAMP,GAAvC;AACAj/C,UAAI,CAAJ,IAASu/C,MAAMZ,GAAN,GAAYS,MAAMJ,GAAlB,GAAwBQ,MAAMN,GAAvC;AACAl/C,UAAI,CAAJ,IAASu/C,MAAMX,GAAN,GAAYQ,MAAMP,GAAlB,GAAwBW,MAAML,GAAvC;;AAEAn/C,UAAI,CAAJ,IAASy/C,MAAMX,GAAN,GAAYO,MAAMN,GAAlB,GAAwBW,MAAMT,GAAvC;AACAj/C,UAAI,CAAJ,IAASy/C,MAAMd,GAAN,GAAYU,MAAML,GAAlB,GAAwBU,MAAMR,GAAvC;AACAl/C,UAAI,CAAJ,IAASy/C,MAAMb,GAAN,GAAYS,MAAMR,GAAlB,GAAwBa,MAAMP,GAAvC;;AAEAn/C,UAAI,CAAJ,IAAS2/C,MAAMb,GAAN,GAAYQ,MAAMP,GAAlB,GAAwBa,MAAMX,GAAvC;AACAj/C,UAAI,CAAJ,IAAS2/C,MAAMhB,GAAN,GAAYW,MAAMN,GAAlB,GAAwBY,MAAMV,GAAvC;AACAl/C,UAAI,CAAJ,IAAS2/C,MAAMf,GAAN,GAAYU,MAAMT,GAAlB,GAAwBe,MAAMT,GAAvC;;AAEA/Y,cAAQppB,mBAAR,CAA4B,cAA5B,EAA4CxwB,MAAMg/F,OAAlD;AACD;AACDl+F,cAAUy9F,qBAAV,CACEv+F,MAAMi8C,OADR,EAEEj8C,MAAMi/F,UAFR,EAGEJ,MAHF,EAIEhxF,IAAI,EAJN;AAMA+rC,YAAQxpB,gBAAR,CAAyB,YAAzB,EAAuCpwB,MAAMi8C,OAA7C;AACA,QAAI0iD,cAAJ,EAAoB;AAClB79F,gBAAUy9F,qBAAV,CACEv+F,MAAMi8C,OADR,EAEEj8C,MAAMk/F,UAFR,EAGEL,MAHF,EAIEhxF,IAAI,EAJN;AAMA+rC,cAAQxpB,gBAAR,CAAyB,YAAzB,EAAuCpwB,MAAMi8C,OAA7C;AACD;;AAED;AACA,QAAI2iD,MAAJ,EAAY;AACV,UAAMO,QAAQP,OAAOt2E,OAAP,EAAd;AACAtoB,YAAMo/F,QAAN,CAAe,CAAf,IAAoBD,MAAMtxF,IAAI,CAAV,IAAe,KAAnC;AACA7N,YAAMo/F,QAAN,CAAe,CAAf,IAAoBD,MAAMtxF,IAAI,CAAJ,GAAQ,CAAd,IAAmB,KAAvC;AACA7N,YAAMo/F,QAAN,CAAe,CAAf,IAAoBD,MAAMtxF,IAAI,CAAJ,GAAQ,CAAd,IAAmB,KAAvC;AACA+rC,cAAQhoB,iBAAR,CAA0B,qBAA1B,EAAiD5xB,MAAMo/F,QAAvD;AACAxlD,cAAQhoB,iBAAR,CAA0B,qBAA1B,EAAiD5xB,MAAMo/F,QAAvD;AACD;;AAED,QAAIloD,QAAJ,EAAc;AACZ0C,cAAQhoB,iBAAR,CAA0B,aAA1B,EAAyCslB,SAASyC,iBAAT,EAAzC;AACD;AACF,GAlFD;;AAoFA74C,YAAUq8C,eAAV,GAA4B,UAACrM,GAAD,EAAMD,KAAN,EAAgB;AAC1C,QAAMuM,iBAAiBvM,MAAMsD,WAAN,GAAoBC,iBAApB,EAAvB;;AAEA,QAAMiJ,KAAKr9C,MAAMqJ,OAAjB;;AAEA,QAAMi0C,uBACJzM,MAAMsD,WAAN,GAAoBqB,iBAApB,MACA4H,mBAAmB1oB,eAAeG,OAFpC;;AAIA;AACA;AACA,QAAMomB,UAAUj7C,MAAMqwC,YAAN,CAAmB6K,cAAnB,CAAkCpK,GAAlC,CAAhB;AACA,QAAM8K,UAAU57C,MAAMowC,WAAN,CAAkB8K,cAAlB,EAAhB;;AAEA;AACA,mBAAKa,QAAL,CACE/7C,MAAM07C,YADR,EAEET,QAAQS,YAFV,EAGEE,QAAQF,YAHV;AAKA,mBAAKK,QAAL,CAAc/7C,MAAMi/F,UAApB,EAAgChkD,QAAQO,IAAxC,EAA8CI,QAAQM,IAAtD;AACA,mBAAKH,QAAL,CAAc/7C,MAAMk/F,UAApB,EAAgCjkD,QAAQQ,IAAxC,EAA8CG,QAAQM,IAAtD;;AAEA,QAAM2iD,SAAS7+F,MAAMqqB,UAAN,CAAiBg1E,cAAjB,EAAf;AACA,QAAMP,SAAS9+F,MAAMqqB,UAAN,CAAiBi1E,cAAjB,EAAf;AACA,QAAMV,SAAS5+F,MAAMqqB,UAAN,CAAiBm0E,aAAjB,EAAf;AACA,QAAMe,SAASV,OAAO98F,MAAP,GAAgB,EAA/B;;AAEA,QAAIy9F,gBAAgB,KAApB;AACA,QAAIx/F,MAAMo1B,cAAN,CAAqBwgB,WAArB,EAAJ,EAAwC;AACtC,UACE51C,MAAMo1B,cAAN,CAAqBwgB,WAArB,GAAmCC,cAAnC,OACA9F,UAAU++B,oBAFZ,EAGE;AACA0wB,wBAAgB,IAAhB;AACD;AACF;;AAED;AACA,SAAK,IAAIx6F,IAAIhF,MAAMsvC,SAAN,CAAgBC,KAA7B,EAAoCvqC,IAAIhF,MAAMsvC,SAAN,CAAgBQ,GAAxD,EAA6D9qC,GAA7D,EAAkE;AAChE;AACA,UAAMu4C,OAAOv9C,MAAM4wC,UAAN,CAAiB5rC,CAAjB,EAAoBquC,OAApB,EAAb;AACA,UAAIkK,KAAK/E,eAAL,EAAJ,EAA4B;AAC1B;AACAx4C,cAAMuzC,YAAN,GACE+J,yBACCt4C,MAAMhF,MAAMsvC,SAAN,CAAgBM,SAAtB,IACC5qC,MAAMhF,MAAMsvC,SAAN,CAAgBO,cAFxB,CADF;AAIA/uC,kBAAU02C,aAAV,CAAwBx3C,MAAM4wC,UAAN,CAAiB5rC,CAAjB,CAAxB,EAA6C8rC,GAA7C,EAAkDD,KAAlD;AACA,YAAM+I,UAAU55C,MAAM4wC,UAAN,CAAiB5rC,CAAjB,EAAoBsyC,UAApB,EAAhB;;AAEA,YAAMkG,OAAO18C,UAAUozC,aAAV,CAAwBkJ,cAAxB,EAAwCp4C,CAAxC,CAAb;AACA,YAAM05F,mBAAmB9kD,QAAQ/mB,aAAR,CAAsB,cAAtB,CAAzB;AACA,YAAM8rE,iBAAiB/kD,QAAQ/mB,aAAR,CAAsB,YAAtB,CAAvB;;AAEA,YAAI7yB,MAAMs+F,eAAV,EAA2B;AACzB,cAAIt+F,MAAM0zE,SAAV,EAAqB;AACnB1zE,kBAAM0zE,SAAN,CAAgB+rB,wBAAhB,CACEjiD,IADF,EAEE,CAFF,EAGED,KAAK/E,eAAL,EAHF,EAIE+mD,MAJF;AAMD,WAPD,MAOO;AACLliD,eAAGqiD,mBAAH,CAAuBliD,IAAvB,EAA6B,CAA7B,EAAgCD,KAAK/E,eAAL,EAAhC,EAAwD+mD,MAAxD;AACD;AACF,SAXD,MAWO;AACL;AACA,eAAK,IAAI1xF,IAAI,CAAb,EAAgBA,IAAI0xF,MAApB,EAA4B,EAAE1xF,CAA9B,EAAiC;AAC/B,gBAAI2xF,aAAJ,EAAmB;AACjBx/F,oBAAMo1B,cAAN,CAAqBwgB,WAArB,GAAmCi5B,oBAAnC,CAAwDhhE,CAAxD;AACD;AACD/M,sBAAU29F,2BAAV,CACEC,gBADF,EAEEC,cAFF,EAGE3+F,MAAM4wC,UAAN,CAAiB5rC,CAAjB,CAHF,EAIE45F,MAJF,EAKEC,MALF,EAMEC,MANF,EAOEjxF,CAPF,EAQE2xF,gBAAgBx/F,MAAMo1B,cAAN,CAAqBwgB,WAArB,EAAhB,GAAqD,IARvD;AAUAyH,eAAGI,UAAH,CAAcD,IAAd,EAAoB,CAApB,EAAuBD,KAAK/E,eAAL,EAAvB;AACD;AACF;AACF;AACF;AACF,GAvFD;;AAyFA13C,YAAUi3C,yBAAV,GAAsC,UAAC/B,MAAD,EAASlF,GAAT,EAAcD,KAAd,EAAwB;AAC5D,QACEmF,OAAO3C,OAAP,GAAiBmF,eAAjB,OACCx4C,MAAM2/F,gBAAN,CAAuB/9F,QAAvB,KACCo0C,OAAO0C,sBAAP,GAAgC92C,QAAhC,EADD,IAECo0C,OAAOuB,mBAAP,GAA6B31C,QAA7B,KACEo0C,OAAO0C,sBAAP,GAAgC92C,QAAhC,EAJJ,CADF,EAME;AACA,UAAIo0C,OAAOsB,UAAP,GAAoBxkB,eAApB,CAAoC,SAApC,CAAJ,EAAoD;AAClD,YACE,CAACkjB,OACE6B,MADF,GAEE69B,6BAFF,CAGG1/B,OAAOsB,UAAP,EAHH,EAIGt3C,MAAM4/F,YAJT,EAKG,SALH,EAMG,CANH,EAOG,EAPH,EAQG5/F,MAAMqJ,OAAN,CAAcmjB,KARjB,EASG,CATH,EAUG,KAVH,EAWG,CAXH,CADH,EAcE;AACAxxB,wBAAc,sCAAd;AACD;AACF,OAlBD,MAkBO;AACLg7C,eAAO6B,MAAP,GAAgBiB,oBAAhB,CAAqC,SAArC;AACD;AACD,UAAI9C,OAAOsB,UAAP,GAAoBxkB,eAApB,CAAoC,SAApC,CAAJ,EAAoD;AAClD,YACE,CAACkjB,OACE6B,MADF,GAEE69B,6BAFF,CAGG1/B,OAAOsB,UAAP,EAHH,EAIGt3C,MAAM6/F,YAJT,EAKG,SALH,EAMG,CANH,EAOG,EAPH,EAQG7/F,MAAMqJ,OAAN,CAAcmjB,KARjB,EASG,CATH,EAUG,KAVH,EAWG,CAXH,CADH,EAcE;AACAxxB,wBAAc,sCAAd;AACD;AACF,OAlBD,MAkBO;AACLg7C,eAAO6B,MAAP,GAAgBiB,oBAAhB,CAAqC,SAArC;AACD;AACD,UAAI9C,OAAOsB,UAAP,GAAoBxkB,eAApB,CAAoC,QAApC,CAAJ,EAAmD;AACjD,YACE,CAACkjB,OACE6B,MADF,GAEEw9B,4BAFF,CAGGr/B,OAAOsB,UAAP,EAHH,EAIGt3C,MAAM8/F,WAJT,EAKG,QALH,EAMG,CANH,EAOG,CAPH,EAQG9/F,MAAMqJ,OAAN,CAAc4xB,aARjB,EASG,CATH,EAUG,IAVH,EAWG,CAXH,EAYG,KAZH,CADH,EAeE;AACAjgC,wBAAc,qCAAd;AACD;AACF,OAnBD,MAmBO;AACLg7C,eAAO6B,MAAP,GAAgBiB,oBAAhB,CAAqC,QAArC;AACD;AACD,UAAI9C,OAAOsB,UAAP,GAAoBxkB,eAApB,CAAoC,eAApC,CAAJ,EAA0D;AACxD,YACE,CAACkjB,OACE6B,MADF,GAEEw9B,4BAFF,CAGGr/B,OAAOsB,UAAP,EAHH,EAIGt3C,MAAM+/F,UAJT,EAKG,eALH,EAMG,CANH,EAOG,CAPH,EAQG//F,MAAMqJ,OAAN,CAAc4xB,aARjB,EASG,CATH,EAUG,IAVH,EAWG,CAXH,EAYG,KAZH,CADH,EAeE;AACAjgC,wBAAc,4CAAd;AACD;AACF,OAnBD,MAmBO;AACLg7C,eAAO6B,MAAP,GAAgBiB,oBAAhB,CAAqC,eAArC;AACD;AACDmJ,iBAAWlK,yBAAX,CAAqC/B,MAArC,EAA6ClF,GAA7C,EAAkDD,KAAlD;AACAmF,aAAO0C,sBAAP,GAAgCh3C,QAAhC;AACA;AACD;;AAEDugD,eAAWlK,yBAAX,CAAqC/B,MAArC,EAA6ClF,GAA7C,EAAkDD,KAAlD;AACD,GApGD;;AAsGA/vC,YAAU89C,6BAAV,GAA0C,UAAC9N,GAAD,EAAMD,KAAN,EAAgB;AACxD7wC,UAAMqqB,UAAN,CAAiB21E,WAAjB;;AAEA;AACA;AACA,QAAMlhD,SAAS9+C,MAAMy4C,YAAN,CAAmB72C,QAAnB,EAAf;AACA,QAAIk9C,SAAS9+C,MAAMqqB,UAAN,CAAiB41E,YAAjB,GAAgCr+F,QAAhC,EAAb,EAAyD;AACvD,aAAO,IAAP;AACD;AACD,WAAOqgD,WAAWrD,6BAAX,CAAyC9N,GAAzC,EAA8CD,KAA9C,CAAP;AACD,GAVD;;AAYA/vC,YAAU+9C,kBAAV,GAA+B,UAAC/N,GAAD,EAAMD,KAAN,EAAgB;AAC7C,QAAI7wC,MAAMs+F,eAAV,EAA2B;AACzB;AACA,UAAMO,SAAS7+F,MAAMqqB,UAAN,CAAiBg1E,cAAjB,EAAf;AACA,UAAMP,SAAS9+F,MAAMqqB,UAAN,CAAiBi1E,cAAjB,EAAf;AACA,UAAMV,SAAS5+F,MAAMqqB,UAAN,CAAiBm0E,aAAjB,EAAf;AACA,UAAI,CAACx+F,MAAM4/F,YAAX,EAAyB;AACvB5/F,cAAM4/F,YAAN,GAAqB,uBAAgB5jG,WAAhB,EAArB;AACAgE,cAAM4/F,YAAN,CAAmBv8D,qBAAnB,CAAyCrjC,MAAMm1B,kBAA/C;AACAn1B,cAAM6/F,YAAN,GAAqB,uBAAgB7jG,WAAhB,EAArB;AACAgE,cAAM6/F,YAAN,CAAmBx8D,qBAAnB,CAAyCrjC,MAAMm1B,kBAA/C;AACAn1B,cAAM8/F,WAAN,GAAoB,uBAAgB9jG,WAAhB,EAApB;AACAgE,cAAM8/F,WAAN,CAAkBz8D,qBAAlB,CAAwCrjC,MAAMm1B,kBAA9C;AACAn1B,cAAM+/F,UAAN,GAAmB,uBAAgB/jG,WAAhB,EAAnB;AACAgE,cAAM+/F,UAAN,CAAiB18D,qBAAjB,CAAuCrjC,MAAMm1B,kBAA7C;AACD;AACD,UACEn1B,MAAMqqB,UAAN,CAAiB41E,YAAjB,GAAgCr+F,QAAhC,KACA5B,MAAM2/F,gBAAN,CAAuB/9F,QAAvB,EAFF,EAGE;AACA5B,cAAM4/F,YAAN,CAAmB7wD,MAAnB,CAA0B8vD,MAA1B,EAAkC7wD,WAAWC,YAA7C;AACAjuC,cAAM6/F,YAAN,CAAmB9wD,MAAnB,CAA0B+vD,MAA1B,EAAkC9wD,WAAWC,YAA7C;AACA,YAAI2wD,MAAJ,EAAY;AACV5+F,gBAAM8/F,WAAN,CAAkB/wD,MAAlB,CAAyB6vD,OAAOt2E,OAAP,EAAzB,EAA2C0lB,WAAWC,YAAtD;AACD,SAFD,MAEO;AACLjuC,gBAAM8/F,WAAN,CAAkBjnE,wBAAlB;AACD;AACD,YAAM0mE,SAASV,OAAO98F,MAAP,GAAgB,EAA/B;AACA,YAAMm+F,SAAS,IAAI9hG,UAAJ,CAAe,IAAImhG,MAAnB,CAAf;AACA,aAAK,IAAIv6F,IAAI,CAAb,EAAgBA,IAAIu6F,MAApB,EAA4B,EAAEv6F,CAA9B,EAAiC;AAC/B,cAAI9F,QAAQ8F,IAAI,CAAhB;AACA,cAAM4hB,SAAS5hB,IAAI,CAAnB;AACAk7F,iBAAOt5E,MAAP,IAAiB1nB,QAAQ,GAAzB;AACAA,mBAASghG,OAAOt5E,MAAP,CAAT;AACA1nB,mBAAS,GAAT;AACAghG,iBAAOt5E,SAAS,CAAhB,IAAqB1nB,QAAQ,GAA7B;AACAA,mBAASghG,OAAOt5E,SAAS,CAAhB,CAAT;AACA1nB,mBAAS,GAAT;AACAghG,iBAAOt5E,SAAS,CAAhB,IAAqB1nB,QAAQ,GAA7B;AACAghG,iBAAOt5E,SAAS,CAAhB,IAAqB,GAArB;AACD;AACD5mB,cAAM+/F,UAAN,CAAiBhxD,MAAjB,CAAwBmxD,MAAxB,EAAgClyD,WAAWC,YAA3C;AACAjuC,cAAM2/F,gBAAN,CAAuBj+F,QAAvB;AACD;AACF;AACD,WAAOugD,WAAWpD,kBAAX,CAA8B/N,GAA9B,EAAmCD,KAAnC,CAAP;AACD,GA9CD;AA+CD;;AAED;AACA;AACA;;AAEA,IAAMvnB,iBAAiB;AACrBoyB,gBAAc,IADO;AAErBujD,cAAY,IAFS;AAGrBkB,cAAY;AAHS,CAAvB;;AAMA;;AAEO,SAAS73F,MAAT,CAAgBxH,SAAhB,EAA2Bd,KAA3B,EAAsD;AAAA,MAApBwI,aAAoB,uEAAJ,EAAI;;AAC3DvI,SAAOgD,MAAP,CAAcjD,KAAd,EAAqBspB,cAArB,EAAqC9gB,aAArC;;AAEA;AACA,2BAAwBF,MAAxB,CAA+BxH,SAA/B,EAA0Cd,KAA1C,EAAiDwI,aAAjD;;AAEAxI,QAAMg/F,OAAN,GAAgB,eAAKljD,MAAL,EAAhB;AACA97C,QAAM07C,YAAN,GAAqB,eAAKI,MAAL,EAArB;AACA97C,QAAMi/F,UAAN,GAAmB,eAAKnjD,MAAL,EAAnB;AACA97C,QAAMk/F,UAAN,GAAmB,eAAKpjD,MAAL,EAAnB;AACA97C,QAAMo/F,QAAN,GAAiB,EAAjB;;AAEAp/F,QAAM2/F,gBAAN,GAAyB,EAAzB;AACA,kBAAMpkG,GAAN,CAAUyE,MAAM2/F,gBAAhB,EAAkC,EAAE1+F,OAAO,CAAT,EAAlC;;AAEA;AACAo9F,yBAAuBv9F,SAAvB,EAAkCd,KAAlC;AACD;;AAED;;AAEO,IAAMhE,oCAAc,gBAAMA,WAAN,CAAkBsM,MAAlB,EAA0B,wBAA1B,CAApB;;AAEP;;kBAEe,EAAEtM,wBAAF,EAAesM,cAAf,E;;;;;;;;;;;;AChuBR,IAAMynC,gCAAY;AACvBk+B,kBAAgB,CADO;AAEvBM,cAAY,CAFW;AAGvBO,wBAAsB,CAHC;AAIvBh5B,YAAU,CAJa;AAKvBo4B,kBAAgB;AALO,CAAlB;;kBAQQ;AACbn+B;AADa,C;;;;;;;;;;;;;QCmBCznC,M,GAAAA,M;;AA3BhB;;;;AACA;;;;;;AAEA;AACA;AACA;;AAEA,SAAS83F,gBAAT,CAA0Bt/F,SAA1B,EAAqCd,KAArC,EAA4C;AAC1C;AACAA,QAAMkB,cAAN,CAAqBxB,IAArB,CAA0B,kBAA1B;;AAEAoB,YAAU0jC,SAAV,GAAsB;AAAA,WAAMxkC,MAAMirC,MAAN,CAAazG,SAAb,EAAN;AAAA,GAAtB;AACD;;AAED;AACA;AACA;;AAEA,IAAMlb,iBAAiB;AACrBy3B,eAAa,CAAC,CADO;AAErBs/C,aAAW,CAAC,CAFS;AAGrBlyF,cAAY,IAHS;AAIrBmyF,iBAAe;AAJM,CAAvB;;AAOA;;AAEO,SAASh4F,MAAT,CAAgBxH,SAAhB,EAA2Bd,KAA3B,EAAsD;AAAA,MAApBwI,aAAoB,uEAAJ,EAAI;;AAC3DvI,SAAOgD,MAAP,CAAcjD,KAAd,EAAqBspB,cAArB,EAAqC9gB,aAArC;;AAEA;AACA,kBAAMjN,GAAN,CAAUuF,SAAV,EAAqBd,KAArB;AACAA,QAAMmO,UAAN,GAAmB,EAAnB;AACA,kBAAMzS,MAAN,CAAaoF,SAAb,EAAwBd,KAAxB,EAA+B,CAC7B,aAD6B,EAE7B,WAF6B,EAG7B,YAH6B,EAI7B,eAJ6B,CAA/B;;AAOA;AACAogG,mBAAiBt/F,SAAjB,EAA4Bd,KAA5B;AACD;;AAED;;AAEO,IAAMhE,oCAAc,gBAAMA,WAAN,CAAkBsM,MAAlB,EAA0B,kBAA1B,CAApB;;AAEP;;kBAEerI,OAAOgD,MAAP,CAAc,EAAEjH,wBAAF,EAAesM,cAAf,EAAd,sB;;;;;;;;;;;;AClDf;;;;;;;;;;;;;;;;;AAiBA;AACO,IAAMmkE,8CAAmB;AAC9BmF,aAAW,CADmB;AAE9BC,eAAa,CAFiB;AAG9B0uB,UAAQ,CAHsB;AAI9BhwB,WAAS,CAJqB;AAK9BiwB,WAAS,CALqB;AAM9BC,aAAW,CANmB;AAO9BC,cAAY,CAPkB;AAQ9BC,UAAQ,CARsB;AAS9BC,SAAO;AATuB,CAAzB;;AAYA,IAAMl0B,0CAAiB;AAC5BgE,QAAM,CADsB;AAE5BE,SAAO,CAFqB;AAG5BiwB,SAAO,CAHqB;AAI5BC,UAAQ,CAJoB;AAK5BC,QAAM,CALsB;AAM5BC,OAAK;AANuB,CAAvB;;kBASQ;AACbv0B,oCADa;AAEbC;AAFa,C;;;;;;;;;;;;;QC+LCpkE,M,GAAAA,M;;AAtOhB;;;;AACA;;;;AACA;;;;AACA;;;;;;IAEQgpE,c,uBAAAA,c;IAAgBwB,uB,uBAAAA,uB;IAChB73E,e,mBAAAA,e;;AAER;AACA;AACA;;AAEA,SAASgmG,oBAAT,CAA8BngG,SAA9B,EAAyCd,KAAzC,EAAgD;AAC9C,MAAMkhG,YAAY,CAChB,SADgB,EAEhB,SAFgB,EAGhB,SAHgB,EAIhB,SAJgB,EAKhB,SALgB,EAMhB,WANgB,EAOhB,aAPgB,CAAlB;;AAUA,WAASC,kBAAT,CAA4BC,OAA5B,EAAqC;AACnC;AACA;AACA;AACA,QAAIC,eAAeH,UAAUzgG,IAAV,CACjB,UAAC6gG,EAAD;AAAA,aACEhwB,eAAegwB,GAAG3iG,WAAH,EAAf,MAAqCyiG,OAArC,IACC,OAAOA,OAAP,KAAmB,QAAnB,IACCE,GAAGziG,WAAH,OAAqBuiG,QAAQviG,WAAR,EAHzB;AAAA,KADiB,CAAnB;AAMA,QAAI,OAAOwiG,YAAP,KAAwB,WAA5B,EAAyC;AACvCA,qBAAe,IAAf;AACD;AACD,WAAOA,YAAP;AACD;;AAED;AACArhG,QAAMkB,cAAN,CAAqBxB,IAArB,CAA0B,sBAA1B;;AAEAoB,YAAUygG,uBAAV,GAAoC,UAAChvF,CAAD;AAAA,WAAO,IAAP;AAAA,GAApC,CA9B8C,CA8BG;;AAEjDzR,YAAU8+D,YAAV,GAAyB,UAAC/tD,GAAD,EAAM2vF,cAAN,EAAyB;AAChD,QAAMJ,UAAUD,mBAAmBK,cAAnB,CAAhB;AACA,QACE3vF,OACAuvF,QAAQziG,WAAR,OAA0B,aAD1B,IAEA,CAACkT,IAAIjR,GAAJ,CAAQ,cAAR,CAHH,EAIE;AACA3F,gDAC0BmmG,OAD1B;AAGA,aAAO,CAAC,CAAR;AACD;AACD,QAAIvvF,OAAO,CAAC/Q,UAAUygG,uBAAV,CAAkC1vF,GAAlC,EAAuCuvF,OAAvC,CAAZ,EAA6D;AAC3DnmG,gDAC0BmmG,OAD1B;AAGA,aAAO,CAAC,CAAR;AACD;AACD,QAAIK,mBAAmBzhG,iBAAeohG,OAAf,CAAvB;AACA,QAAIK,oBAAoB,CAApB,IAAyBA,mBAAmBzhG,MAAMwwF,MAAN,CAAazuF,MAA7D,EAAqE;AACnE,UAAI/B,MAAMwwF,MAAN,CAAaiR,gBAAb,MAAmC5vF,GAAvC,EAA4C;AAC1C,eAAO4vF,gBAAP;AACD;AACD3gG,gBAAU4gG,kBAAV,CAA6BD,gBAA7B;AACD;;AAED,QAAI5vF,GAAJ,EAAS;AACP4vF,yBAAmB3gG,UAAU6gG,QAAV,CAAmB9vF,GAAnB,CAAnB;AACA7R,uBAAeohG,OAAf,IAA4BK,gBAA5B;AACD,KAHD,MAGO;AACLzhG,uBAAeohG,OAAf,IAA4B,CAAC,CAA7B;AACD;AACDtgG,cAAUY,QAAV;AACA,WAAO1B,iBAAeohG,OAAf,CAAP;AACD,GAlCD;;AAoCAtgG,YAAU8gG,wBAAV,GAAqC,UAACx6F,SAAD,EAAYg6F,OAAZ;AAAA,WACnCtgG,UAAU+gG,yBAAV,CACE/gG,UAAUghG,iBAAV,CAA4B16F,SAA5B,EAAuChG,KADzC,EAEEggG,OAFF,CADmC;AAAA,GAArC;;AAMAtgG,YAAU+gG,yBAAV,GAAsC,UAACE,QAAD,EAAWP,cAAX,EAA8B;AAClE,QAAMJ,UAAUD,mBAAmBK,cAAnB,CAAhB;AACA,QAAIO,YAAY,CAAZ,IAAiBA,WAAW/hG,MAAMwwF,MAAN,CAAazuF,MAA7C,EAAqD;AACnD,UAAIq/F,QAAQziG,WAAR,OAA0B,aAA9B,EAA6C;AAC3C,YAAMkT,MAAM/Q,UAAUsmC,eAAV,CAA0B26D,QAA1B,CAAZ;AACA,YAAI,CAAClwF,IAAIjR,GAAJ,CAAQ,cAAR,CAAL,EAA8B;AAC5B3F,oDAC0BmmG,OAD1B;AAGA,iBAAO,CAAC,CAAR;AACD;AACD,YAAI,CAACtgG,UAAUygG,uBAAV,CAAkC1vF,GAAlC,EAAuCuvF,OAAvC,CAAL,EAAsD;AACpDnmG,oDAC0BmmG,OAD1B;AAGA,iBAAO,CAAC,CAAR;AACD;AACF;AACDphG,uBAAeohG,OAAf,IAA4BW,QAA5B;AACAjhG,gBAAUY,QAAV;AACA,aAAOqgG,QAAP;AACD,KAnBD,MAmBO,IAAIA,aAAa,CAAC,CAAlB,EAAqB;AAC1B/hG,uBAAeohG,OAAf,IAA4BW,QAA5B;AACAjhG,gBAAUY,QAAV;AACD;AACD,WAAO,CAAC,CAAR;AACD,GA1BD;;AA4BAZ,YAAUkhG,kBAAV,GAA+B,UAACZ,OAAD,EAAa;AAC1C;AACA;AACA,QAAMC,eAAeF,mBAAmBC,OAAnB,CAArB;AACA,WAAOtgG,kBAAgBugG,YAAhB,GAAP;AACD,GALD;;AAOA;AACAvgG,YAAUmhG,eAAV,GAA4B,YAAM;AAChCjiG,UAAMwwF,MAAN,GAAe,EAAf;AACA0Q,cAAUhkG,OAAV,CAAkB,UAACkkG,OAAD,EAAa;AAC7BphG,uBAAeohG,OAAf,IAA4B,CAAC,CAA7B;AACD,KAFD;AAGD,GALD;;AAOA;AACAtgG,YAAUohG,WAAV,GAAwB,UAAC96F,SAAD,EAAe;AACrCpH,UAAMwwF,MAAN,GAAexwF,MAAMwwF,MAAN,CAAahqF,MAAb,CAAoB,UAAC27F,KAAD,EAAQpjF,GAAR,EAAgB;AACjD,UAAI3X,cAAc+6F,MAAMprE,IAAN,CAAW7N,OAAX,EAAlB,EAAwC;AACtC;AACAg4E,kBAAUhkG,OAAV,CAAkB,UAACkkG,OAAD,EAAa;AAC7B,cAAIriF,QAAQ/e,iBAAeohG,OAAf,CAAZ,EAAuC;AACrCphG,6BAAeohG,OAAf,IAA4B,CAAC,CAA7B;AACD;AACF,SAJD;AAKA,eAAO,KAAP;AACD;AACD,aAAO,IAAP;AACD,KAXc,CAAf;AAYD,GAbD;;AAeA;AACAtgG,YAAU4gG,kBAAV,GAA+B,UAACK,QAAD,EAAc;AAC3C/hG,UAAMwwF,MAAN,GAAexwF,MAAMwwF,MAAN,CAAahqF,MAAb,CAAoB,UAAC27F,KAAD,EAAQpjF,GAAR;AAAA,aAAgBA,QAAQgjF,QAAxB;AAAA,KAApB,CAAf;AACAb,cAAUhkG,OAAV,CAAkB,UAACkkG,OAAD,EAAa;AAC7B,UAAIW,aAAa/hG,iBAAeohG,OAAf,CAAjB,EAA4C;AAC1CphG,yBAAeohG,OAAf,IAA4B,CAAC,CAA7B;AACD;AACF,KAJD;AAKD,GAPD;;AASAF,YAAUhkG,OAAV,CAAkB,UAACgC,KAAD,EAAW;AAC3B,QAAMkjG,uBAAqBljG,KAA3B;AACA4B,sBAAgB5B,KAAhB,IAA2B;AAAA,aACzB4B,UAAUsmC,eAAV,CAA0BpnC,MAAMoiG,SAAN,CAA1B,CADyB;AAAA,KAA3B;AAEAthG,sBAAgB5B,KAAhB,IAA2B,UAACmjG,EAAD;AAAA,aAAQvhG,UAAU8+D,YAAV,CAAuByiC,EAAvB,EAA2BnjG,KAA3B,CAAR;AAAA,KAA3B;AACA4B,4BAAsB5B,KAAtB,IAAiC,UAACkI,SAAD;AAAA,aAC/BtG,UAAU+gG,yBAAV,CACE/gG,UAAUghG,iBAAV,CAA4B16F,SAA5B,EAAuChG,KADzC,EAEElC,KAFF,CAD+B;AAAA,KAAjC;AAKA4B,uBAAiB5B,KAAjB,YAA+B,YAAM;AACnC4B,gBAAUq/D,UAAV;AACA,UAAMihC,UAAUliG,MAAMP,WAAN,EAAhB;AACAqB,YAAMsiG,kBAAN,CAAyBxvB,wBAAwBG,QAAjD,EACE3B,eAAe8vB,OAAf,CADF,IAEI,KAFJ;AAGD,KAND;AAOD,GAjBD;;AAmBAtgG,YAAUq/D,UAAV,GAAuB,gBAAMlkE,KAAN,CAAY6E,UAAUq/D,UAAtB,EAAkC,YAAM;AAC7D;AACAngE,UAAMsiG,kBAAN,GAA2B,EAA3B;AACAriG,WAAOC,IAAP,CAAY4yE,uBAAZ,EACGtsE,MADH,CACU,UAAC+7F,EAAD;AAAA,aAAQA,OAAO,SAAf;AAAA,KADV,EAEGrlG,OAFH,CAEW,UAACslG,SAAD,EAAe;AACtBxiG,YAAMsiG,kBAAN,CACExvB,wBAAwB0vB,SAAxB,CADF,IAEIviG,OAAOC,IAAP,CAAYoxE,cAAZ,EACD9qE,MADC,CACM,UAAC4rF,EAAD;AAAA,eAAQA,OAAO,gBAAf;AAAA,OADN,EAEDplE,MAFC,CAEM,UAAC1Z,CAAD,EAAIC,CAAJ,EAAU;AAChBD,UAAEg+D,eAAe/9D,CAAf,CAAF,IAAuB,IAAvB;AACA,eAAOD,CAAP;AACD,OALC,EAKC,EALD,CAFJ;AAQD,KAXH;AAYA;AACAtT,UAAMsiG,kBAAN,CAAyBxvB,wBAAwBC,SAAjD,EACEzB,eAAeM,SADjB,IAEI,KAFJ;AAGA5xE,UAAMsiG,kBAAN,CAAyBxvB,wBAAwBE,WAAjD,EACE1B,eAAeM,SADjB,IAEI,KAFJ;AAGA5xE,UAAMsiG,kBAAN,CAAyBxvB,wBAAwBC,SAAjD,EACEzB,eAAeO,WADjB,IAEI,KAFJ;AAGD,GAzBsB,CAAvB;;AA2BA;AACA,MAAI7xE,MAAMyiG,UAAN,IAAoBxiG,OAAOC,IAAP,CAAYF,MAAMyiG,UAAlB,EAA8B1gG,MAAtD,EAA8D;AAC5D9B,WAAOC,IAAP,CAAYF,MAAMyiG,UAAlB,EAA8BvlG,OAA9B,CAAsC,UAACW,IAAD,EAAU;AAC9C,UACE,CAACmC,MAAMyiG,UAAN,CAAiB5kG,IAAjB,EAAuB6kG,GAAxB,IACA1iG,MAAMyiG,UAAN,CAAiB5kG,IAAjB,EAAuBwG,IAAvB,KAAgC,cAFlC,EAGE;AACAvD,kBAAU6gG,QAAV,CAAmB,oBAAa3lG,WAAb,CAAyBgE,MAAMyiG,UAAN,CAAiB5kG,IAAjB,CAAzB,CAAnB;AACD;AACF,KAPD;AAQD;AACF;;AAED;AACA;AACA;;AAEA,IAAMyrB,iBAAiB;AACrBq5E,iBAAe,CAAC,CADK;AAErBC,iBAAe,CAAC,CAFK;AAGrBC,iBAAe,CAAC,CAHK;AAIrB3T,iBAAe,CAAC,CAJK;AAKrB4T,iBAAe,CAAC,CALK;AAMrBC,mBAAiB,CAAC,CANG;AAOrBC,qBAAmB,CAAC;AAPC,CAAvB;;AAUA;;AAEO,SAAS16F,MAAT,CAAgBxH,SAAhB,EAA2Bd,KAA3B,EAAsD;AAAA,MAApBwI,aAAoB,uEAAJ,EAAI;;AAC3DvI,SAAOgD,MAAP,CAAcjD,KAAd,EAAqBspB,cAArB,EAAqC9gB,aAArC;;AAEA;AACA,sBAAaF,MAAb,CAAoBxH,SAApB,EAA+Bd,KAA/B,EAAsCwI,aAAtC;AACA,kBAAM9M,MAAN,CAAaoF,SAAb,EAAwBd,KAAxB,EAA+B,CAC7B,eAD6B,EAE7B,eAF6B,EAG7B,eAH6B,EAI7B,eAJ6B,EAK7B,eAL6B,EAM7B,iBAN6B,EAO7B,mBAP6B,CAA/B;;AAUA,MAAI,CAACA,MAAMwwF,MAAX,EAAmB;AACjBxwF,UAAMwwF,MAAN,GAAe,EAAf;AACD;;AAED;AACAyQ,uBAAqBngG,SAArB,EAAgCd,KAAhC;AACD;;AAED;;AAEO,IAAMhE,oCAAc,gBAAMA,WAAN,CAAkBsM,MAAlB,EAA0B,sBAA1B,CAApB;;AAEP;;kBAEerI,OAAOgD,MAAP,CAAc,EAAEjH,wBAAF,EAAesM,cAAf,EAAd,sB;;;;;;;;;;;;;QCvECA,M,GAAAA,M;;AA5LhB;;;;AACA;;;;AACA;;;;;;AAEA;AACA;AACA;;AAEA,SAAS26F,YAAT,CAAsBniG,SAAtB,EAAiCd,KAAjC,EAAwC;AACtCA,QAAMkB,cAAN,CAAqBxB,IAArB,CAA0B,cAA1B;AACA,MAAMwjG,gBAAgBpiG,UAAUD,QAAhC;;AAEA;AACA,MAAIb,MAAMwwF,MAAV,EAAkB;AAChBxwF,UAAMwwF,MAAN,GAAexwF,MAAMwwF,MAAN,CAAapuF,GAAb,CAAiB,UAACzB,IAAD;AAAA,aAAW,EAAEo2B,MAAM,mBAAIp2B,KAAKo2B,IAAT,CAAR,EAAX;AAAA,KAAjB,CAAf;AACD;;AAEDj2B,YAAUq/D,UAAV,GAAuB,YAAM;AAC3Br/D,cAAUqiG,gBAAV;AACAriG,cAAUsiG,SAAV;AACAtiG,cAAUuiG,eAAV;AACD,GAJD;;AAMAviG,YAAUqiG,gBAAV,GAA6B,YAAM;AACjCnjG,UAAMwwF,MAAN,GAAe,EAAf;AACAxwF,UAAMsjG,cAAN,GAAuB,EAAvB;AACAxiG,cAAUY,QAAV;AACD,GAJD;;AAMAZ,YAAUyiG,aAAV,GAA0B,UAAC//F,KAAD,EAAW;AACnC1C,cAAUqiG,gBAAV;AACAnjG,UAAMsjG,cAAN,GAAuB9/F,MAAMggG,iBAAN,GAA0BphG,GAA1B,CAA8B,UAACmQ,CAAD;AAAA,aAAOA,CAAP;AAAA,KAA9B,CAAvB,CAFmC,CAE6B;AAChEvS,UAAMwwF,MAAN,GAAehtF,MAAMgtF,MAAN,GAAepuF,GAAf,CAAmB,UAACmQ,CAAD;AAAA,aAAQ,EAAE5N,OAAO4N,CAAT,EAAR;AAAA,KAAnB,CAAf,CAHmC,CAGuB;AAC1D;AACD,GALD;;AAOAzR,YAAU2iG,iBAAV,GAA8B;AAAA,WAAMzjG,MAAMwwF,MAAN,CAAazuF,MAAnB;AAAA,GAA9B;AACAjB,YAAU4iG,uBAAV,GAAoC;AAAA,WAAM1jG,MAAMwwF,MAAN,CAAazuF,MAAnB;AAAA,GAApC;AACAjB,YAAU6gG,QAAV,GAAqB,UAAC9vF,GAAD,EAAS;AAC5B7R,UAAMwwF,MAAN,GAAe,GAAGlwF,MAAH,CAAUN,MAAMwwF,MAAhB,EAAwB,EAAEz5D,MAAMllB,GAAR,EAAxB,CAAf;AACA,WAAO7R,MAAMwwF,MAAN,CAAazuF,MAAb,GAAsB,CAA7B;AACD,GAHD;AAIAjB,YAAUmhG,eAAV,GAA4B,YAAM;AAChCjiG,UAAMwwF,MAAN,GAAe,EAAf;AACD,GAFD;AAGA1vF,YAAUohG,WAAV,GAAwB,UAAC96F,SAAD,EAAe;AACrCpH,UAAMwwF,MAAN,GAAexwF,MAAMwwF,MAAN,CAAahqF,MAAb,CACb,UAAC27F,KAAD;AAAA,aAAW/6F,cAAc+6F,MAAMprE,IAAN,CAAW7N,OAAX,EAAzB;AAAA,KADa,CAAf;AAGD,GAJD;AAKApoB,YAAU4gG,kBAAV,GAA+B,UAACK,QAAD,EAAc;AAC3C/hG,UAAMwwF,MAAN,GAAexwF,MAAMwwF,MAAN,CAAahqF,MAAb,CAAoB,UAAC27F,KAAD,EAAQpjF,GAAR;AAAA,aAAgBA,QAAQgjF,QAAxB;AAAA,KAApB,CAAf;AACD,GAFD;AAGAjhG,YAAU2vF,SAAV,GAAsB;AAAA,WAAMzwF,MAAMwwF,MAAN,CAAapuF,GAAb,CAAiB,UAAC+/F,KAAD;AAAA,aAAWA,MAAMprE,IAAjB;AAAA,KAAjB,CAAN;AAAA,GAAtB;AACAj2B,YAAUnF,QAAV,GAAqB,UAACgoG,SAAD;AAAA,WACnB,OAAOA,SAAP,KAAqB,QAArB,GACI7iG,UAAUsmC,eAAV,CAA0Bu8D,SAA1B,CADJ,GAEI7iG,UAAUumC,cAAV,CAAyBs8D,SAAzB,CAHe;AAAA,GAArB;AAIA7iG,YAAUumC,cAAV,GAA2B,UAACjgC,SAAD;AAAA,WACzBpH,MAAMwwF,MAAN,CAAaxjE,MAAb,CACE,UAAC1Z,CAAD,EAAIC,CAAJ,EAAOvO,CAAP;AAAA,aAAcuO,EAAEwjB,IAAF,CAAO7N,OAAP,OAAqB9hB,SAArB,GAAiCmM,EAAEwjB,IAAnC,GAA0CzjB,CAAxD;AAAA,KADF,EAEE,IAFF,CADyB;AAAA,GAA3B;AAKAxS,YAAUghG,iBAAV,GAA8B,UAAC16F,SAAD;AAAA,WAC5BpH,MAAMwwF,MAAN,CAAaxjE,MAAb,CACE,UAAC1Z,CAAD,EAAIC,CAAJ,EAAOvO,CAAP;AAAA,aACEuO,EAAEwjB,IAAF,IAAUxjB,EAAEwjB,IAAF,CAAO7N,OAAP,OAAqB9hB,SAA/B,GACI,EAAEzC,OAAO4O,EAAEwjB,IAAX,EAAiB31B,OAAO4D,CAAxB,EADJ,GAEIsO,CAHN;AAAA,KADF,EAKE,EAAE3O,OAAO,IAAT,EAAevD,OAAO,CAAC,CAAvB,EALF,CAD4B;AAAA,GAA9B;AAQAN,YAAUsmC,eAAV,GAA4B,UAACroB,GAAD;AAAA,WAC1BA,OAAO,CAAP,IAAYA,MAAM/e,MAAMwwF,MAAN,CAAazuF,MAA/B,GAAwC/B,MAAMwwF,MAAN,CAAazxE,GAAb,EAAkBgY,IAA1D,GAAiE,IADvC;AAAA,GAA5B;AAEAj2B,YAAU8iG,QAAV,GAAqB,UAACx8F,SAAD;AAAA,WACnBtG,UAAUghG,iBAAV,CAA4B16F,SAA5B,EAAuChG,KAAvC,IAAgD,CAD7B;AAAA,GAArB;AAEAN,YAAU+iG,YAAV,GAAyB,UAAC9kF,GAAD,EAAS;AAChC,QAAMlN,MAAM7R,MAAMwwF,MAAN,CAAazxE,GAAb,CAAZ;AACA,WAAOlN,MAAMA,IAAIklB,IAAJ,CAAS7N,OAAT,EAAN,GAA2B,EAAlC;AACD,GAHD;AAIApoB,YAAU0iG,iBAAV,GAA8B;AAAA,WAAMxjG,MAAMsjG,cAAZ;AAAA,GAA9B;AACAxiG,YAAUgjG,OAAV,GAAoB,UAAC18F,SAAD;AAAA,WAAepH,MAAMsjG,cAAN,CAAqBl8F,SAArB,CAAf;AAAA,GAApB;AACAtG,YAAUijG,QAAV,GAAqB,UAACvgG,KAAD,EAAmC;AAAA,QAA3BwgG,MAA2B,uEAAlB,CAAC,CAAiB;AAAA,QAAdC,IAAc,uEAAP,CAAC,CAAM;;AACtDzgG,UAAMitF,SAAN,GAAkBvzF,OAAlB,CAA0B,UAAC2U,GAAD,EAAS;AACjC,UAAMqyF,WAAWpjG,UAAUgjG,OAAV,CAAkBjyF,IAAIqX,OAAJ,EAAlB,CAAjB;AACA,UACEg7E,aAAa,KAAb,IACA,EAAElkG,MAAMmkG,YAAN,IAAsBD,aAAa,IAArC,CADA,IAEAryF,GAHF,EAIE;AACA,YAAIuyF,UAAUtjG,UAAUumC,cAAV,CAAyBx1B,IAAIqX,OAAJ,EAAzB,CAAd;AACA,YAAI,CAACk7E,OAAL,EAAc;AACZ,cAAIJ,SAAS,CAAT,IAAcA,SAASnyF,IAAI8V,iBAAJ,EAA3B,EAAoD;AAClD7mB,sBAAU6gG,QAAV,CAAmB9vF,GAAnB;AACD,WAFD,MAEO;AACL,gBAAMwyF,SAASxyF,IAAI4V,qBAAJ,EAAf;AACA,gBAAI68E,UAAUzyF,IAAIiX,iBAAJ,EAAd;AACA,gBAAMy7E,MAAMN,OAAO,CAAC,CAAR,GAAYA,IAAZ,GAAmBD,MAA/B;AACA,gBAAIM,UAAUC,MAAMF,MAApB,EAA4B;AAC1BC,wBAAU,CAACC,MAAM,CAAP,IAAYF,MAAtB;AACD;AACDD,sBAAU,oBAAapoG,WAAb,CAAyB;AACjC6B,oBAAMgU,IAAIqX,OAAJ,EAD2B;AAEjCH,wBAAUlX,IAAImV,WAAJ,EAFuB;AAGjCN,kCAAoB7U,IAAI4V,qBAAJ,EAHa;AAIjC3oB,oBAAMwlG;AAJ2B,aAAzB,CAAV;AAMAF,oBAAQ17E,QAAR,CAAiB67E,GAAjB,EAAsB1yF,IAAI+V,QAAJ,CAAao8E,MAAb,CAAtB;AACAljG,sBAAU6gG,QAAV,CAAmByC,OAAnB;AACD;AACF,SAnBD,MAmBO,IACLvyF,IAAI4V,qBAAJ,OAAgC28E,QAAQ38E,qBAAR,EAD3B,EAEL;AACA,cAAIu8E,SAAS,CAAC,CAAV,IAAeA,SAASnyF,IAAI8V,iBAAJ,EAA5B,EAAqD;AACnD,gBAAM48E,OAAMN,OAAO,CAAC,CAAR,GAAYA,IAAZ,GAAmBD,MAA/B;AACAI,oBAAQ17E,QAAR,CAAiB67E,IAAjB,EAAsB1yF,IAAI+V,QAAJ,CAAao8E,MAAb,CAAtB;AACD,WAHD,MAGO;AACL;AACA;AACA,iBAAK,IAAIh/F,IAAI,CAAb,EAAgBA,IAAI6M,IAAI8V,iBAAJ,EAApB,EAA6C,EAAE3iB,CAA/C,EAAkD;AAChDo/F,sBAAQ17E,QAAR,CAAiB1jB,CAAjB,EAAoB6M,IAAI+V,QAAJ,CAAa5iB,CAAb,CAApB;AACD;AACF;AACF;AACF;AACF,KA1CD;AA2CD,GA5CD;AA6CAlE,YAAU0jG,WAAV,GAAwB,UAACp9F,SAAD,EAAe;AACrCpH,UAAMsjG,cAAN,CAAqBl8F,SAArB,IAAkC,IAAlC;AACD,GAFD;AAGAtG,YAAU2jG,YAAV,GAAyB,UAACr9F,SAAD,EAAe;AACtCpH,UAAMsjG,cAAN,CAAqBl8F,SAArB,IAAkC,KAAlC;AACD,GAFD;AAGAtG,YAAUsiG,SAAV,GAAsB,YAAM;AAC1B,QAAI,CAACpjG,MAAM0kG,WAAP,IAAsB1kG,MAAMmkG,YAAhC,EAA8C;AAC5CnkG,YAAM0kG,WAAN,GAAoB,IAApB;AACA1kG,YAAMmkG,YAAN,GAAqB,KAArB;AACArjG,gBAAUY,QAAV;AACD;AACF,GAND;AAOAZ,YAAU6jG,UAAV,GAAuB,YAAM;AAC3B,QAAI3kG,MAAM0kG,WAAN,IAAqB,CAAC1kG,MAAMmkG,YAAhC,EAA8C;AAC5CnkG,YAAM0kG,WAAN,GAAoB,KAApB;AACA1kG,YAAMmkG,YAAN,GAAqB,IAArB;AACArjG,gBAAUY,QAAV;AACD;AACF,GAND;AAOAZ,YAAUuiG,eAAV,GAA4B,YAAM;AAChCrjG,UAAMsjG,cAAN,GAAuB,EAAvB;AACD,GAFD;AAGAxiG,YAAU8jG,QAAV,GAAqB,UAACphG,KAAD,EAAW;AAC9BxD,UAAMwwF,MAAN,GAAehtF,MAAMitF,SAAN,GAAkBruF,GAAlB,CAAsB,UAACyP,GAAD,EAAS;AAC5C,UAAMgzF,SAAShzF,IAAImX,QAAJ,EAAf;AACA67E,aAAOD,QAAP,CAAgB/yF,GAAhB;AACA,aAAO,EAAEklB,MAAM8tE,MAAR,EAAP;AACD,KAJc,CAAf;AAKD,GAND;AAOA/jG,YAAUgkG,SAAV,GAAsB,UAACthG,KAAD;AAAA,WAAWA,MAAMggG,iBAAN,GAA0BphG,GAA1B,CAA8B,UAACmQ,CAAD;AAAA,aAAOA,CAAP;AAAA,KAA9B,CAAX;AAAA,GAAtB;AACA;AACAzR,YAAU+lD,KAAV,GAAkB;AAAA,WAAM7mD,MAAMwwF,MAAN,CAAatzF,OAAb,CAAqB,UAACilG,KAAD;AAAA,aAAWA,MAAMprE,IAAN,CAAW8vB,KAAX,EAAX;AAAA,KAArB,CAAN;AAAA,GAAlB;AACA;AACA/lD,YAAUc,QAAV,GAAqB;AAAA,WACnB5B,MAAMwwF,MAAN,CAAaxjE,MAAb,CACE,UAAC1Z,CAAD,EAAIC,CAAJ;AAAA,aAAWA,EAAEwjB,IAAF,CAAOn1B,QAAP,KAAoB0R,CAApB,GAAwBC,EAAEwjB,IAAF,CAAOn1B,QAAP,EAAxB,GAA4C0R,CAAvD;AAAA,KADF,EAEEtT,MAAMiB,KAFR,CADmB;AAAA,GAArB;AAKA;AACA;AACAH,YAAU2mB,qBAAV,GAAkC;AAAA,WAChCznB,MAAMwwF,MAAN,CAAaxjE,MAAb,CAAoB,UAAC1Z,CAAD,EAAIC,CAAJ;AAAA,aAAUD,IAAIC,EAAEwjB,IAAF,CAAOtP,qBAAP,EAAd;AAAA,KAApB,EAAkE,CAAlE,CADgC;AAAA,GAAlC;AAEA3mB,YAAU6mB,iBAAV,GAA8B;AAAA,WAC5B3nB,MAAMwwF,MAAN,CAAazuF,MAAb,GAAsB,CAAtB,GAA0B/B,MAAMwwF,MAAN,CAAa,CAAb,EAAgB7oE,iBAAhB,EAA1B,GAAgE,CADpC;AAAA,GAA9B;;AAGA7mB,YAAUD,QAAV,GAAqB,YAAM;AACzB,QAAMiI,SAASo6F,eAAf;AACAp6F,WAAO0nF,MAAP,GAAgBxwF,MAAMwwF,MAAN,CAAapuF,GAAb,CAAiB,UAACzB,IAAD;AAAA,aAAW;AAC1Co2B,cAAMp2B,KAAKo2B,IAAL,CAAUl2B,QAAV;AADoC,OAAX;AAAA,KAAjB,CAAhB;AAGA,WAAOiI,MAAP;AACD,GAND;AAOD;;AAED,IAAMwgB,iBAAiB;AACrBknE,UAAQ,EADa;AAErB8S,kBAAgB,EAFK,EAED;AACpBoB,eAAa,IAHQ;AAIrBP,gBAAc;AAJO,CAAvB;;AAOO,SAAS77F,MAAT,CAAgBxH,SAAhB,EAA2Bd,KAA3B,EAAsD;AAAA,MAApBwI,aAAoB,uEAAJ,EAAI;;AAC3DvI,SAAOgD,MAAP,CAAcjD,KAAd,EAAqBspB,cAArB,EAAqC9gB,aAArC;;AAEA,kBAAMjN,GAAN,CAAUuF,SAAV,EAAqBd,KAArB;;AAEAijG,eAAaniG,SAAb,EAAwBd,KAAxB;AACD;;AAED;;AAEO,IAAMhE,oCAAc,gBAAMA,WAAN,CAAkBsM,MAAlB,EAA0B,cAA1B,CAApB;;AAEP;;kBAEe,EAAEtM,wBAAF,EAAesM,cAAf,E;;;;;;;;;;;;AC1Mf;AACO,IAAMy8F,0CAAiB;AAC5BC,WAAS,CADmB,EAChB;AACZC,qBAAmB,CAFS,EAEN;;AAEtBC,cAAY,CAJgB,EAIb;AACfC,cAAY,CALgB,EAKb;;AAEfv0B,SAAO,CAPqB,EAOlB;AACVw0B,oBAAkB,CARU,EAQP;;AAErB10B,QAAM,CAVsB,EAUnB;AACT20B,mBAAiB,CAXW,EAWR;;AAEpBvE,UAAQ,CAboB,EAajB;AACXwE,qBAAmB,CAdS,EAcN;;AAEtBvE,QAAM,CAhBsB,EAgBnB;AACTwE,mBAAiB,CAjBW,EAiBR;;AAEpBvE,OAAK,CAnBuB,EAmBpB;AACRwE,YAAU,CApBkB,CAoBf;AApBe,CAAvB;;AAuBA,IAAM74B,gDAAoB;AAC/BgE,4BAA0B,CADK;AAE/BH,2BAAyB,CAFM;AAG/Bi1B,0BAAwB,CAHO;AAI/BC,uCAAqC,CAJN;AAK/BC,8BAA4B,CALG;AAM/BC,2BAAyB,CANM;AAO/BC,0BAAwB,CAPO;AAQ/BC,0BAAwB;AARO,CAA1B;;kBAWQ;AACbf,gCADa;AAEbp4B;AAFa,C;;;;;;;;;;;;;QC6OCrkE,M,GAAAA,M;;AAhRhB;;;;AACA;;;;AACA;;AACA;;;;IAEQvN,a,mBAAAA,a;IAAeC,a,mBAAAA,a;;AAEvB;AACA;AACA;;AAEA,SAAS+qG,8BAAT,CAAwCjlG,SAAxC,EAAmDd,KAAnD,EAA0D;AACxD;AACAA,QAAMkB,cAAN,CAAqBxB,IAArB,CAA0B,gCAA1B;;AAEAoB,YAAU4tC,OAAV,CAAkB,sBAAWT,YAA7B;;AAEAntC,YAAU4+C,SAAV,GAAsB,UAACsmD,SAAD,EAAYC,KAAZ,EAAmBC,MAAnB,EAA2B5mD,OAA3B,EAAuC;AAC3D,QAAI,CAAC0mD,UAAU19E,OAAV,EAAD,IAAwB,CAAC09E,UAAU19E,OAAV,GAAoBvmB,MAAjD,EAAyD;AACvD/B,YAAMmmG,YAAN,GAAqB,CAArB;AACA,aAAO,CAAP;AACD;;AAED;AACAnmG,UAAMomG,SAAN,GAAkB,CAAlB;AACApmG,UAAMqmG,YAAN,GAAqB,CAArB;AACArmG,UAAMsmG,YAAN,GAAqB,CAArB;AACAtmG,UAAMumG,YAAN,GAAqB,CAArB;AACAvmG,UAAMwmG,gBAAN,GAAyB,CAAzB;AACAxmG,UAAMymG,eAAN,GAAwB,CAAxB;AACAzmG,UAAM0mG,WAAN,GAAoB,CAApB;;AAEA,QAAMjY,YAAYnvC,QAAQrU,MAAR,CAAe3iB,OAAf,EAAlB;AACA,QAAIq+E,aAAa,IAAjB;AACA,QAAIC,aAAa,IAAjB;AACA,QAAIC,YAAY,IAAhB;;AAEA,QAAMJ,kBAAkBnnD,QAAQE,MAAR,GACpBF,QAAQE,MAAR,CAAe/3B,qBAAf,EADoB,GAEpB,CAFJ;AAGA,QAAMq/E,oBAAoBxnD,QAAQH,OAAR,GACtBG,QAAQH,OAAR,CAAgB13B,qBAAhB,EADsB,GAEtB,CAFJ;;AAIA;;AAEA,QAAI63B,QAAQC,OAAZ,EAAqB;AACnBv/C,YAAMsmG,YAAN,GAAqB,IAAItmG,MAAMomG,SAA/B;AACApmG,YAAMomG,SAAN,IAAmB,CAAnB;AACAO,mBAAarnD,QAAQC,OAAR,CAAgBj3B,OAAhB,EAAb;AACD;;AAED,QAAIg3B,QAAQH,OAAZ,EAAqB;AACnBn/C,YAAMumG,YAAN,GAAqB,IAAIvmG,MAAMomG,SAA/B;AACApmG,YAAMwmG,gBAAN,GAAyBM,iBAAzB;AACA9mG,YAAMomG,SAAN,IAAmBU,iBAAnB;AACAF,mBAAatnD,QAAQH,OAAR,CAAgB72B,OAAhB,EAAb;AACD;;AAED,QAAIg3B,QAAQE,MAAZ,EAAoB;AAClBx/C,YAAMymG,eAAN,GAAwBnnD,QAAQE,MAAR,CAAe/3B,qBAAf,EAAxB;AACAznB,YAAM0mG,WAAN,GAAoB,CAApB;AACAG,kBAAYvnD,QAAQE,MAAR,CAAel3B,OAAf,EAAZ;AACA,UAAI,CAACtoB,MAAM+mG,OAAX,EAAoB;AAClB/mG,cAAM+mG,OAAN,GAAgB,uBAAgB/qG,WAAhB,EAAhB;AACD;AACDgE,YAAM+mG,OAAN,CAAc1jE,qBAAd,CAAoCrjC,MAAMm1B,kBAA1C;AACD,KARD,MAQO;AACLn1B,YAAM+mG,OAAN,GAAgB,IAAhB;AACD;AACD/mG,UAAM09C,MAAN,GAAe,IAAI19C,MAAMomG,SAAzB;;AAEA,QAAIrd,WAAW,CAAf;AACA,QAAIie,YAAY,CAAhB;AACA,QAAIC,YAAY,CAAhB;AACA,QAAIC,WAAW,CAAf;AACA,QAAIC,YAAY,CAAhB;AACA,QAAIC,kBAAJ;;AAEA,QAAMC,eAAe;AACnB;AACAC,sBAFmB,4BAEFC,SAFE,EAESC,OAFT,EAEkB5gF,MAFlB,EAE0B;AAC3C,aAAK,IAAI5hB,IAAI,CAAb,EAAgBA,IAAIuiG,SAApB,EAA+B,EAAEviG,CAAjC,EAAoC;AAClCoiG,oBAAUI,QAAQ5gF,SAAS5hB,CAAjB,CAAV;AACD;AACF,OANkB;AAOnByiG,sBAPmB,4BAOFF,SAPE,EAOSC,OAPT,EAOkB5gF,MAPlB,EAO0B;AAC3C;AACA,aAAK,IAAI5hB,IAAI,CAAb,EAAgBA,IAAIuiG,YAAY,CAAhC,EAAmC,EAAEviG,CAArC,EAAwC;AACtCoiG,oBAAUI,QAAQ5gF,SAAS5hB,CAAjB,CAAV;AACAoiG,oBAAUI,QAAQ5gF,SAAS5hB,CAAT,GAAa,CAArB,CAAV;AACD;AACF,OAbkB;AAcnB0iG,sBAdmB,4BAcFH,SAdE,EAcSC,OAdT,EAckB5gF,MAdlB,EAc0B;AAC3C;AACA,aAAK,IAAI5hB,IAAI,CAAb,EAAgBA,IAAIuiG,SAApB,EAA+B,EAAEviG,CAAjC,EAAoC;AAClCoiG,oBAAUI,QAAQ5gF,SAAS5hB,CAAjB,CAAV;AACAoiG,oBAAUI,QAAQ5gF,SAAS,CAAC5hB,IAAI,CAAL,IAAUuiG,SAA3B,CAAV;AACD;AACF,OApBkB;AAqBnBI,uBArBmB,6BAqBDJ,SArBC,EAqBUC,OArBV,EAqBmB5gF,MArBnB,EAqB2B;AAC5C;AACA,aAAK,IAAI5hB,IAAI,CAAb,EAAgBA,IAAIuiG,YAAY,CAAhC,EAAmC,EAAEviG,CAArC,EAAwC;AACtCoiG,oBAAUI,QAAQ5gF,SAAS5hB,CAAjB,CAAV;AACAoiG,oBAAUI,QAAQ5gF,SAAS5hB,CAAT,GAAa,CAArB,CAAV;AACD;AACD,aAAK,IAAIA,KAAI,CAAb,EAAgBA,KAAIuiG,YAAY,CAAhC,EAAmCviG,IAAnC,EAAwC;AACtCoiG,oBAAUI,QAAQ5gF,SAAS5hB,EAAjB,CAAV;AACAoiG,oBAAUI,QAAQ5gF,SAAS5hB,EAAT,GAAa,CAArB,CAAV;AACD;AACF,OA/BkB;AAgCnB4iG,oBAhCmB,0BAgCJC,IAhCI,EAgCEL,OAhCF,EAgCW5gF,MAhCX,EAgCmB;AACpC,YAAIihF,OAAO,CAAX,EAAc;AACZ;AACA9sG,wBAAc,8BAAd;AACD,SAHD,MAGO;AACL,eAAK,IAAIiK,IAAI,CAAb,EAAgBA,IAAI6iG,OAAO,CAA3B,EAA8B7iG,GAA9B,EAAmC;AACjCoiG,sBAAUI,QAAQ5gF,SAAS,CAAjB,CAAV;AACAwgF,sBAAUI,QAAQ5gF,SAAS5hB,CAAT,GAAa,CAArB,CAAV;AACAoiG,sBAAUI,QAAQ5gF,SAAS5hB,CAAT,GAAa,CAArB,CAAV;AACD;AACF;AACF,OA3CkB;AA4CnB8iG,qBA5CmB,2BA4CHD,IA5CG,EA4CGL,OA5CH,EA4CY5gF,MA5CZ,EA4CoB;AACrC,aAAK,IAAI5hB,IAAI,CAAb,EAAgBA,IAAI6iG,OAAO,CAA3B,EAA8B7iG,GAA9B,EAAmC;AACjCoiG,oBAAUI,QAAQ5gF,SAAS5hB,CAAjB,CAAV;AACAoiG,oBAAUI,QAAQ5gF,SAAS5hB,CAAT,GAAa,CAAb,GAAiBA,IAAI,CAA7B,CAAV;AACAoiG,oBAAUI,QAAQ5gF,SAAS5hB,CAAT,GAAa,CAAb,GAAiB,CAACA,IAAI,CAAL,IAAU,CAAnC,CAAV;AACD;AACF;AAlDkB,KAArB;;AAqDA,QAAM+iG,eAAe;AACnB;AACAT,sBAFmB,4BAEFC,SAFE,EAESC,OAFT,EAEkB;AACnC,eAAOD,SAAP;AACD,OAJkB;AAKnBE,sBALmB,4BAKFF,SALE,EAKSC,OALT,EAKkB;AACnC,eAAO,CAACD,YAAY,CAAb,IAAkB,CAAzB;AACD,OAPkB;AAQnBG,sBARmB,4BAQFH,SARE,EAQSC,OART,EAQkB;AACnC,eAAOD,YAAY,CAAnB;AACD,OAVkB;AAWnBI,uBAXmB,6BAWDJ,SAXC,EAWUC,OAXV,EAWmB;AACpC,eAAOD,YAAY,CAAZ,GAAgB,CAAvB;AACD,OAbkB;AAcnBK,oBAdmB,0BAcJC,IAdI,EAcEL,OAdF,EAcW;AAC5B,YAAIK,OAAO,CAAX,EAAc;AACZ,iBAAO,CAAP;AACD;AACD,eAAO,CAACA,OAAO,CAAR,IAAa,CAApB;AACD,OAnBkB;AAoBnBC,qBApBmB,2BAoBHD,IApBG,EAoBGL,OApBH,EAoBY5gF,MApBZ,EAoBoB;AACrC,eAAO,CAACihF,OAAO,CAAR,IAAa,CAApB;AACD;AAtBkB,KAArB;;AAyBA,QAAI5+F,OAAO,IAAX;AACA,QAAI++F,YAAY,IAAhB;AACA,QAAI9B,WAAW,2BAAevxE,MAA1B,IAAoCsxE,UAAU,OAAlD,EAA2D;AACzDh9F,aAAOo+F,aAAaC,gBAApB;AACAU,kBAAYD,aAAaT,gBAAzB;AACD,KAHD,MAGO,IAAIpB,WAAW,2BAAetxE,SAA1B,IAAuCqxE,UAAU,OAArD,EAA8D;AACnEh9F,aAAOo+F,aAAgBpB,KAAhB,iBAAP;AACA+B,kBAAYD,aAAgB9B,KAAhB,iBAAZ;AACD,KAHM,MAGA;AACLh9F,aAAOo+F,aAAgBpB,KAAhB,eAAP;AACA+B,kBAAYD,aAAgB9B,KAAhB,eAAZ;AACD;;AAED,QAAMthG,QAAQqhG,UAAU19E,OAAV,EAAd;AACA,QAAMxpB,OAAO6F,MAAM5C,MAAnB;AACA,QAAIkmG,YAAY,CAAhB;AACA,SAAK,IAAI7mG,QAAQ,CAAjB,EAAoBA,QAAQtC,IAA5B,GAAoC;AAClCmpG,mBAAaD,UAAUrjG,MAAMvD,KAAN,CAAV,EAAwBuD,KAAxB,CAAb;AACAvD,eAASuD,MAAMvD,KAAN,IAAe,CAAxB;AACD;;AAED,QAAI8mG,cAAc,IAAlB;AACA,QAAMC,YAAY,IAAIjqG,YAAJ,CAAiB+pG,YAAYjoG,MAAMomG,SAAnC,CAAlB;AACA,QAAIS,SAAJ,EAAe;AACbqB,oBAAc,IAAI9pG,UAAJ,CAAe6pG,YAAY,CAA3B,CAAd;AACD;AACD,QAAIG,SAAS,CAAb;AACA,QAAIC,QAAQ,CAAZ;;AAEAjB,gBAAY,SAASkB,aAAT,CAAuBtjG,CAAvB,EAA0B;AACpC;AACA+jF,iBAAW/jF,IAAI,CAAf;;AAEAmjG,gBAAUC,QAAV,IAAsB3Z,UAAU1F,UAAV,CAAtB;AACAof,gBAAUC,QAAV,IAAsB3Z,UAAU1F,UAAV,CAAtB;AACAof,gBAAUC,QAAV,IAAsB3Z,UAAU1F,UAAV,CAAtB;;AAEA,UAAI4d,eAAe,IAAnB,EAAyB;AACvB,YAAIrnD,QAAQrL,eAAZ,EAA6B;AAC3B+yD,sBAAY,CAACG,YAAY7nD,QAAQG,UAArB,IAAmC,CAA/C;AACD,SAFD,MAEO;AACLunD,sBAAYhiG,IAAI,CAAhB;AACD;AACDmjG,kBAAUC,QAAV,IAAsBzB,WAAWK,WAAX,CAAtB;AACAmB,kBAAUC,QAAV,IAAsBzB,WAAWK,WAAX,CAAtB;AACAmB,kBAAUC,QAAV,IAAsBzB,WAAWK,WAAX,CAAtB;AACD;;AAED,UAAIJ,eAAe,IAAnB,EAAyB;AACvBK,oBAAYjiG,IAAI8hG,iBAAhB;AACA,aAAK,IAAIh0F,IAAI,CAAb,EAAgBA,IAAIg0F,iBAApB,EAAuC,EAAEh0F,CAAzC,EAA4C;AAC1Cq1F,oBAAUC,QAAV,IAAsBxB,WAAWK,WAAX,CAAtB;AACD;AACF;;AAED,UAAIJ,cAAc,IAAlB,EAAwB;AACtB,YAAIvnD,QAAQN,eAAZ,EAA6B;AAC3BkoD,qBAAW,CAACC,YAAY7nD,QAAQG,UAArB,IAAmCgnD,eAA9C;AACD,SAFD,MAEO;AACLS,qBAAWliG,IAAIyhG,eAAf;AACD;AACDyB,oBAAYG,OAAZ,IAAuBxB,UAAUK,UAAV,CAAvB;AACAgB,oBAAYG,OAAZ,IAAuBxB,UAAUK,UAAV,CAAvB;AACAgB,oBAAYG,OAAZ,IAAuBxB,UAAUK,UAAV,CAAvB;AACAgB,oBAAYG,OAAZ,IACE5B,oBAAoB,CAApB,GAAwBI,UAAUK,UAAV,CAAxB,GAAgD,GADlD;AAED;AACF,KAtCD;;AAwCA,SAAK,IAAI9lG,SAAQ,CAAjB,EAAoBA,SAAQtC,IAA5B,GAAoC;AAClCmK,WAAKtE,MAAMvD,MAAN,CAAL,EAAmBuD,KAAnB,EAA0BvD,SAAQ,CAAlC;AACAA,gBAASuD,MAAMvD,MAAN,IAAe,CAAxB;AACA+lG;AACD;AACDnnG,UAAMmmG,YAAN,GAAqB8B,SAArB;AACAnnG,cAAUiuC,MAAV,CAAiBo5D,SAAjB,EAA4B,sBAAWl6D,YAAvC;AACA,QAAIjuC,MAAM+mG,OAAV,EAAmB;AACjB/mG,YAAMuoG,aAAN,GAAsB,CAAtB;AACAvoG,YAAM+mG,OAAN,CAAch4D,MAAd,CAAqBm5D,WAArB,EAAkC,sBAAWj6D,YAA7C;AACD;AACD,WAAOk5D,SAAP;AACD,GA7ND;;AA+NArmG,YAAU0nG,2BAAV,GAAwC,UAACC,gBAAD,EAAsB;AAC5DztG,kBAAc,gDAAd;AACD,GAFD;;AAIA8F,YAAU4nG,aAAV,GAA0B,UAACC,UAAD,EAAgB;AACxC3tG,kBAAc,gDAAd;AACD,GAFD;;AAIA8F,YAAU8nG,aAAV,GAA0B,UAACC,UAAD,EAAgB;AACxC7tG,kBAAc,gDAAd;AACD,GAFD;AAGD;;AAED;AACA;AACA;;AAEA,IAAMsuB,iBAAiB;AACrB68E,gBAAc,CADO;AAErBzoD,UAAQ,CAFa;AAGrB6qD,iBAAe,CAHM;AAIrBlC,gBAAc,CAJO;AAKrBC,gBAAc,CALO;AAMrBC,gBAAc,CANO;AAOrBC,oBAAkB,CAPG;AAQrBE,eAAa,CARQ;AASrBD,mBAAiB,CATI;AAUrBqC,YAAU;AAVW,CAAvB;;AAaA;;AAEO,SAASxgG,MAAT,CAAgBxH,SAAhB,EAA2Bd,KAA3B,EAAsD;AAAA,MAApBwI,aAAoB,uEAAJ,EAAI;;AAC3DvI,SAAOgD,MAAP,CAAcjD,KAAd,EAAqBspB,cAArB,EAAqC9gB,aAArC;;AAEA;AACA,yBAAgBF,MAAhB,CAAuBxH,SAAvB,EAAkCd,KAAlC,EAAyCwI,aAAzC;;AAEA,kBAAM9M,MAAN,CAAaoF,SAAb,EAAwBd,KAAxB,EAA+B,CAC7B,SAD6B,EAE7B,cAF6B,EAG7B,QAH6B,EAI7B,eAJ6B,EAK7B,cAL6B,EAM7B,cAN6B,EAO7B,cAP6B,EAQ7B,kBAR6B,EAS7B,aAT6B,EAU7B,iBAV6B,CAA/B;;AAaA;AACA+lG,iCAA+BjlG,SAA/B,EAA0Cd,KAA1C;AACD;;AAED;;AAEO,IAAMhE,oCAAc,gBAAMA,WAAN,CAAkBsM,MAAlB,CAApB;;AAEP;;kBAEe,EAAEtM,wBAAF,EAAesM,cAAf,E;;;;;;;;;;;;;QCpNCA,M,GAAAA,M;;AAzFhB;;;;;;IAEQtN,a,mBAAAA,a;;AAER;;AAEA;AACA;AACA;;AAEA,SAAS+tG,SAAT,CAAmBjoG,SAAnB,EAA8Bd,KAA9B,EAAqC;AACnC;AACAA,QAAMkB,cAAN,CAAqBxB,IAArB,CAA0B,WAA1B;;AAEAoB,YAAUwtB,OAAV,GAAoB,YAAM;AACxB,QAAI06E,QAAQhpG,MAAMqJ,OAAN,CAAckhE,aAA1B;;AAEA,QACE,CAACvqE,MAAM2M,MAAP,IACA,CAAC3M,MAAM2M,MAAN,CAAa5K,MADd,IAEA/B,MAAM8uB,UAAN,KAAqB,SAHvB,EAIE;AACA,aAAO,KAAP;AACD;;AAED;AACA,QAAI9uB,MAAM+uB,MAAN,KAAiB,CAArB,EAAwB;AACtB/uB,YAAMqJ,OAAN,CAAc2lB,YAAd,CAA2BhvB,MAAM+uB,MAAjC;AACA/uB,YAAM+uB,MAAN,GAAe,CAAf;AACD;;AAED,YAAQ/uB,MAAM8uB,UAAd;AACE;AACA;AACA;AACA,WAAK,UAAL;AACEk6E,gBAAQhpG,MAAMqJ,OAAN,CAAcuhE,eAAtB;AACA;AACF,WAAK,QAAL;AACA;AACEo+B,gBAAQhpG,MAAMqJ,OAAN,CAAckhE,aAAtB;AACA;AAVJ;;AAaAvqE,UAAM+uB,MAAN,GAAe/uB,MAAMqJ,OAAN,CAAc4/F,YAAd,CAA2BD,KAA3B,CAAf;AACAhpG,UAAMqJ,OAAN,CAAc6/F,YAAd,CAA2BlpG,MAAM+uB,MAAjC,EAAyC/uB,MAAM2M,MAA/C;AACA3M,UAAMqJ,OAAN,CAAc+kB,aAAd,CAA4BpuB,MAAM+uB,MAAlC;AACA,QAAMc,aAAa7vB,MAAMqJ,OAAN,CAAc8/F,kBAAd,CACjBnpG,MAAM+uB,MADW,EAEjB/uB,MAAMqJ,OAAN,CAAc+/F,cAFG,CAAnB;AAIA,QAAI,CAACv5E,UAAL,EAAiB;AACf,UAAMG,YAAYhwB,MAAMqJ,OAAN,CAAcggG,gBAAd,CAA+BrpG,MAAM+uB,MAArC,CAAlB;AACA/zB,kDAAyCgF,MAAM2M,MAA/C,YAA2DqjB,SAA3D;AACAhwB,YAAMqJ,OAAN,CAAc2lB,YAAd,CAA2BhvB,MAAM+uB,MAAjC;AACA/uB,YAAM+uB,MAAN,GAAe,CAAf;AACA,aAAO,KAAP;AACD;;AAED;AACA,WAAO,IAAP;AACD,GA/CD;;AAiDAjuB,YAAU+tB,OAAV,GAAoB,YAAM;AACxB,QAAI7uB,MAAM8uB,UAAN,KAAqB,SAArB,IAAkC9uB,MAAM+uB,MAAN,KAAiB,CAAvD,EAA0D;AACxD;AACD;;AAED/uB,UAAMqJ,OAAN,CAAc2lB,YAAd,CAA2BhvB,MAAM+uB,MAAjC;AACA/uB,UAAM+uB,MAAN,GAAe,CAAf;AACA/uB,UAAMwuC,KAAN,GAAc,IAAd;AACD,GARD;AASD;;AAED;AACA;AACA;;AAEA,IAAMllB,iBAAiB;AACrBwF,cAAY,SADS;AAErBniB,UAAQ,EAFa;AAGrBlP,SAAO,EAHc;AAIrBsxB,UAAQ,CAJa;AAKrByf,SAAO,KALc;AAMrBnlC,WAAS;AANY,CAAvB;;AASA;;AAEO,SAASf,MAAT,CAAgBxH,SAAhB,EAA2Bd,KAA3B,EAAsD;AAAA,MAApBwI,aAAoB,uEAAJ,EAAI;;AAC3DvI,SAAOgD,MAAP,CAAcjD,KAAd,EAAqBspB,cAArB,EAAqC9gB,aAArC;;AAEA;AACA,kBAAMjN,GAAN,CAAUuF,SAAV,EAAqBd,KAArB;AACA,kBAAMtE,MAAN,CAAaoF,SAAb,EAAwBd,KAAxB,EAA+B,CAC7B,YAD6B,EAE7B,QAF6B,EAG7B,OAH6B,EAI7B,QAJ6B,EAK7B,SAL6B,CAA/B;;AAQA;AACA+oG,YAAUjoG,SAAV,EAAqBd,KAArB;AACD;;AAED;;AAEO,IAAMhE,oCAAc,gBAAMA,WAAN,CAAkBsM,MAAlB,EAA0B,WAA1B,CAApB;;AAEP;;kBAEe,EAAEtM,wBAAF,EAAesM,cAAf,E;;;;;;;;;;;;QC7BCA,M,GAAAA,M;;AAnFhB;;;;AAEA;;;;AACA;;;;;;AACA;AACA;AACA;;AAEA,SAASghG,mBAAT,CAA6BxoG,SAA7B,EAAwCd,KAAxC,EAA+C;AAC7Cc,YAAU0jC,SAAV,GAAsB;AAAA,WAAM,CAAN;AAAA,GAAtB;;AAEA1jC,YAAU0jC,SAAV,GAAsB,UAAC7hB,MAAD,EAAY;AAChC7hB,cAAU0jC,SAAV;AACA,SAAK,IAAIx/B,IAAI,CAAb,EAAgBA,IAAI,CAApB,EAAuBA,GAAvB,EAA4B;AAC1B2d,aAAO3d,CAAP,IAAYhF,MAAM2iB,MAAN,CAAa3d,CAAb,CAAZ;AACD;AACF,GALD;;AAOAlE,YAAU2iD,SAAV,GAAsB,YAAe;AAAA,sCAAXz/B,MAAW;AAAXA,YAAW;AAAA;;AACnCljB,cAAU0jC,SAAV;AACA,SAAK,IAAIx/B,IAAI,CAAb,EAAgBA,IAAI,CAApB,EAAuBA,GAAvB,EAA4B;AAC1BhF,YAAMgkB,MAAN,CAAahf,CAAb,IAAkB,CAAChF,MAAM2iB,MAAN,CAAa,IAAI3d,CAAJ,GAAQ,CAArB,IAA0BhF,MAAM2iB,MAAN,CAAa,IAAI3d,CAAjB,CAA3B,IAAkD,GAApE;AACD;AACD,QAAI5E,MAAMC,OAAN,CAAc2jB,OAAO,CAAP,CAAd,CAAJ,EAA8B;AAC5BA,aAAO,CAAP,IAAYhkB,MAAMgkB,MAAN,CAAalgB,MAAb,CAAoB,CAApB,CAAZ;AACD;AACD,WAAO9D,MAAMgkB,MAAb;AACD,GATD;;AAWAljB,YAAU4iD,SAAV,GAAsB,YAAM;AAC1B,QAAI6lD,OAAO,GAAX;AACA,QAAIvlD,IAAI,GAAR;AACAljD,cAAU0jC,SAAV;AACA,SAAK,IAAIx/B,IAAI,CAAb,EAAgBA,IAAI,CAApB,EAAuBA,GAAvB,EAA4B;AAC1BukG,aAAOvpG,MAAM2iB,MAAN,CAAa,IAAI3d,CAAJ,GAAQ,CAArB,IAA0BhF,MAAM2iB,MAAN,CAAa,IAAI3d,CAAjB,CAAjC;AACAg/C,WAAKulD,OAAOA,IAAZ;AACD;;AAED,WAAO5pG,KAAK6U,IAAL,CAAUwvC,CAAV,CAAP;AACD,GAVD;;AAYAljD,YAAUu4C,4BAAV,GAAyC,UAACmwD,UAAD,EAAaxkG,CAAb,EAAgBykG,OAAhB,EAA4B;AACnE,QAAMC,aAAa1pG,MAAM2pG,cAAzB;AACA,QAAMzyC,MAAMsyC,UAAZ;;AAEA,QAAIE,UAAJ,EAAgB;AACd,UAAMnqG,IAAImqG,WAAW3nG,MAArB;AACA,UAAIiD,KAAK,CAAL,IAAUA,IAAIzF,CAAlB,EAAqB;AACnB;AACA,YAAMqqG,QAAQF,WAAW1kG,CAAX,CAAd;AACA,YAAMmhD,SAASyjD,MAAMC,SAAN,EAAf;AACA,YAAM3jD,SAAS0jD,MAAME,SAAN,EAAf;;AAEA;AACA,YAAMh5F,KAAKq1C,OAAO,CAAP,CAAX;AACA,YAAMp1C,KAAKo1C,OAAO,CAAP,CAAX;AACA,YAAMrtC,KAAKqtC,OAAO,CAAP,CAAX;AACA,YAAM4jD,KAAK,EAAEj5F,KAAKo1C,OAAO,CAAP,CAAL,GAAiBn1C,KAAKm1C,OAAO,CAAP,CAAtB,GAAkCptC,KAAKotC,OAAO,CAAP,CAAzC,CAAX;;AAEA;AACAujD,gBAAQ,CAAR,IAAa34F,KAAKomD,IAAI,CAAJ,CAAL,GAAcnmD,KAAKmmD,IAAI,CAAJ,CAAnB,GAA4Bp+C,KAAKo+C,IAAI,CAAJ,CAAjC,GAA0C6yC,KAAK7yC,IAAI,EAAJ,CAA5D;AACAuyC,gBAAQ,CAAR,IAAa34F,KAAKomD,IAAI,CAAJ,CAAL,GAAcnmD,KAAKmmD,IAAI,CAAJ,CAAnB,GAA4Bp+C,KAAKo+C,IAAI,CAAJ,CAAjC,GAA0C6yC,KAAK7yC,IAAI,EAAJ,CAA5D;AACAuyC,gBAAQ,CAAR,IAAa34F,KAAKomD,IAAI,CAAJ,CAAL,GAAcnmD,KAAKmmD,IAAI,CAAJ,CAAnB,GAA4Bp+C,KAAKo+C,IAAI,EAAJ,CAAjC,GAA2C6yC,KAAK7yC,IAAI,EAAJ,CAA7D;AACAuyC,gBAAQ,CAAR,IAAa34F,KAAKomD,IAAI,CAAJ,CAAL,GAAcnmD,KAAKmmD,IAAI,CAAJ,CAAnB,GAA4Bp+C,KAAKo+C,IAAI,EAAJ,CAAjC,GAA2C6yC,KAAK7yC,IAAI,EAAJ,CAA7D;;AAEA;AACD;AACF;AACD,oBAAMl8D,aAAN,2BAA4CgK,CAA5C;AACD,GA5BD;AA6BD;;AAED;AACA;AACA;;AAEA,IAAMskB,iBAAiB;AACrB3G,UAAQ,CAAC,CAAD,EAAI,CAAC,CAAL,EAAQ,CAAR,EAAW,CAAC,CAAZ,EAAe,CAAf,EAAkB,CAAC,CAAnB,CADa;AAErBqB,UAAQ,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP;AAFa,CAAvB;;AAKA;;AAEO,SAAS1b,MAAT,CAAgBxH,SAAhB,EAA2Bd,KAA3B,EAAsD;AAAA,MAApBwI,aAAoB,uEAAJ,EAAI;;AAC3DvI,SAAOgD,MAAP,CAAcjD,KAAd,EAAqBspB,cAArB,EAAqC9gB,aAArC;AACA;AACA,2BAAkBF,MAAlB,CAAyBxH,SAAzB,EAAoCd,KAApC,EAA2CwI,aAA3C;;AAEA,MAAI,CAACxI,MAAM2iB,MAAX,EAAmB;AACjB,mBAAQD,kBAAR,CAA2B1iB,MAAM2iB,MAAjC;AACD;;AAED,MAAI,CAAC3iB,MAAMgkB,MAAX,EAAmB;AACjBhkB,UAAMgkB,MAAN,GAAe,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,CAAf;AACD;;AAEDslF,sBAAoBxoG,SAApB,EAA+Bd,KAA/B;AACD;;AAED;;kBAEe,EAAEsI,cAAF,E;;;;;;;;;;;;QC3CCA,M,GAAAA,M;;AA1DhB;;;;;;AAEA;AACA;AACA;;AAEA,SAAS0hG,iBAAT,CAA2BlpG,SAA3B,EAAsCd,KAAtC,EAA6C;AAC3Cc,YAAUqF,MAAV,GAAmB,YAAM;AACvBrF,cAAU6E,YAAV;AACD,GAFD;;AAIA7E,YAAUmpG,gBAAV,GAA6B,UAACL,KAAD,EAAW;AACtC,QAAIA,MAAM1nG,YAAN,OAAyB,UAA7B,EAAyC;AACvC;AACD;AACDlC,UAAM2pG,cAAN,CAAqBjqG,IAArB,CAA0BkqG,KAA1B;AACD,GALD;;AAOA9oG,YAAUq0C,yBAAV,GAAsC;AAAA,WAAMn1C,MAAM2pG,cAAN,CAAqB5nG,MAA3B;AAAA,GAAtC;;AAEAjB,YAAUopG,uBAAV,GAAoC,YAAM;AACxClqG,UAAM2pG,cAAN,CAAqB5nG,MAArB,GAA8B,CAA9B;AACD,GAFD;;AAIAjB,YAAUqpG,mBAAV,GAAgC,UAACnlG,CAAD,EAAO;AACrC,QAAIA,IAAI,CAAJ,IAASA,KAAK,CAAlB,EAAqB;AACnB;AACD;AACDhF,UAAM2pG,cAAN,CAAqB7lG,MAArB,CAA4BkB,CAA5B,EAA+B,CAA/B;AACD,GALD;;AAOAlE,YAAUspG,iBAAV,GAA8B;AAAA,WAAMpqG,MAAM2pG,cAAZ;AAAA,GAA9B;;AAEA7oG,YAAUupG,iBAAV,GAA8B,UAACC,MAAD,EAAY;AACxC,QAAI,CAACA,MAAL,EAAa;AACX;AACD;AACD,QAAI,CAAClqG,MAAMC,OAAN,CAAciqG,MAAd,CAAL,EAA4B;AAC1BxpG,gBAAUmpG,gBAAV,CAA2BK,MAA3B;AACD,KAFD,MAEO;AACL,UAAMC,WAAWD,OAAOvoG,MAAxB;AACA,WAAK,IAAIiD,IAAI,CAAb,EAAgBA,IAAIulG,QAAJ,IAAgBvlG,IAAI,CAApC,EAAuCA,GAAvC,EAA4C;AAC1ClE,kBAAUmpG,gBAAV,CAA2BK,OAAOtlG,CAAP,CAA3B;AACD;AACF;AACF,GAZD;AAaD;;AAED;AACA;AACA;;AAEA,IAAMskB,iBAAiB;AACrBqgF,kBAAgB;AADK,CAAvB;;AAIA;;AAEO,SAASrhG,MAAT,CAAgBxH,SAAhB,EAA2Bd,KAA3B,EAAsD;AAAA,MAApBwI,aAAoB,uEAAJ,EAAI;;AAC3DvI,SAAOgD,MAAP,CAAcjD,KAAd,EAAqBspB,cAArB,EAAqC9gB,aAArC;;AAEA;AACA,kBAAMjN,GAAN,CAAUuF,SAAV,EAAqBd,KAArB;AACA,kBAAMlE,IAAN,CAAWgF,SAAX,EAAsBd,KAAtB,EAA6B,CAA7B,EAAgC,CAAhC;;AAEA,MAAI,CAACA,MAAM2pG,cAAX,EAA2B;AACzB3pG,UAAM2pG,cAAN,GAAuB,EAAvB;AACD;;AAEDK,oBAAkBlpG,SAAlB,EAA6Bd,KAA7B;AACD;;AAED;kBACe,EAAEsI,cAAF,E;;;;;;;;;;;;QCrECyjD,4B,GAAAA,4B;;AAJhB;;;;;;IAEQ4pB,c,uBAAAA,c;AAED,SAAS5pB,4BAAT,CAAsCy+C,KAAtC,EAA6C;AAClD,MAAIC,UAAU,CAAd;AACA,OAAK,IAAIzlG,IAAI,CAAb,EAAgBA,IAAI,CAApB,EAAuB,EAAEA,CAAzB,EAA4B;AAC1B,QAAIwlG,MAAMxlG,IAAI,CAAV,IAAewlG,MAAMxlG,IAAI,CAAJ,GAAQ,CAAd,CAAnB,EAAqC;AACnCylG;AACD;AACF;;AAED,MAAID,MAAM,CAAN,IAAWA,MAAM,CAAN,CAAX,IAAuBA,MAAM,CAAN,IAAWA,MAAM,CAAN,CAAlC,IAA8CA,MAAM,CAAN,IAAWA,MAAM,CAAN,CAA7D,EAAuE;AACrE,WAAO70B,eAAenpB,KAAtB;AACD;;AAED,MAAIi+C,YAAY,CAAhB,EAAmB;AACjB,WAAO90B,eAAe3oB,QAAtB;AACD,GAFD,MAEO,IAAIy9C,YAAY,CAAhB,EAAmB;AACxB,QAAID,MAAM,CAAN,MAAaA,MAAM,CAAN,CAAjB,EAA2B;AACzB,aAAO70B,eAAe7oB,QAAtB;AACD,KAFD,MAEO,IAAI09C,MAAM,CAAN,MAAaA,MAAM,CAAN,CAAjB,EAA2B;AAChC,aAAO70B,eAAe5oB,QAAtB;AACD;AACD,WAAO4oB,eAAe9oB,QAAtB;AACD,GAPM,MAOA,IAAI49C,YAAY,CAAhB,EAAmB;AACxB,QAAID,MAAM,CAAN,IAAWA,MAAM,CAAN,CAAf,EAAyB;AACvB,aAAO70B,eAAejpB,MAAtB;AACD,KAFD,MAEO,IAAI89C,MAAM,CAAN,IAAWA,MAAM,CAAN,CAAf,EAAyB;AAC9B,aAAO70B,eAAehpB,MAAtB;AACD;AACD,WAAOgpB,eAAe/oB,MAAtB;AACD;;AAED,SAAO+oB,eAAelpB,YAAtB;AACD;;kBAEcxsD,OAAOgD,MAAP,CAAc,EAAE8oD,0DAAF,EAAd,sB;;;;;;;;;;;;;QCiQCzjD,M,GAAAA,M;;AAtShB;;;;AACA;;;;AACA;;;;AACA;;;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,IAAMoiG,0BAA0B,CAAhC;AACA,IAAMC,0BAA0B,CAAhC;AACA,IAAMC,kBAAkB,CAAxB;;AAEA;AACA;AACA;;AAEA,SAASC,cAAT,CAAwB/pG,SAAxB,EAAmCd,KAAnC,EAA0C;AACxC;AACAA,QAAMkB,cAAN,CAAqBxB,IAArB,CAA0B,gBAA1B;;AAEA;AACA;AACA;AACA;AACAoB,YAAU4pC,QAAV,GAAqB,YAAM;AACzB,QAAI1qC,MAAM8qG,mBAAN,CAA0BlpG,QAA1B,KAAuCd,UAAUc,QAAV,EAA3C,EAAiE;AAC/D,UAAImpG,SAAS,IAAb;AACA,UAAI/qG,MAAMgrG,QAAN,CAAe,CAAf,IAAoB,GAAxB,EAA6B;AAC3BD,iBAAS,CAAT;AACD;AACD,UAAI/qG,MAAMirG,kBAAN,IAA4BjrG,MAAMkrG,eAAN,CAAsB,CAAtB,IAA2B,GAA3D,EAAgE;AAC9DH,iBAAS,CAAT;AACD;AACD,UAAI/qG,MAAMmrG,kBAAN,IAA4BnrG,MAAMorG,eAAN,CAAsB,CAAtB,IAA2B,GAA3D,EAAgE;AAC9DL,iBAAS,CAAT;AACD;AACD,WAAK,IAAI/lG,IAAI,CAAb,EAAgBA,IAAIhF,MAAMqrG,KAAN,CAAYtpG,MAAhB,IAA0BgpG,MAA1C,EAAkD/lG,KAAK,CAAvD,EAA0D;AACxD,YAAIhF,MAAMqrG,KAAN,CAAYrmG,CAAZ,IAAiB,GAArB,EAA0B;AACxB+lG,mBAAS,KAAT;AACD;AACF;AACD/qG,YAAMsrG,UAAN,GAAmBP,MAAnB;AACA/qG,YAAM8qG,mBAAN,CAA0BppG,QAA1B;AACD;;AAED,WAAO1B,MAAMsrG,UAAb;AACD,GAtBD;;AAwBAxqG,YAAU8oC,aAAV,GAA0B;AAAA,WAAM,KAAN;AAAA,GAA1B;;AAEA;AACA9oC,YAAUopC,0BAAV,GAAuC;AAAA,WAAMlqC,MAAMqrG,KAAN,CAAYtpG,MAAlB;AAAA,GAAvC;;AAEA;AACA;AACAjB,YAAUyqG,iBAAV,GAA8B,UAACxmG,CAAD,EAAI8I,CAAJ,EAAU;AACtC,QAAI29F,SAAS,CAAb;;AAEA,QAAIzmG,IAAI8I,EAAEkV,KAAF,CAAQ,CAAR,CAAR,EAAoB;AAClByoF,eAAS39F,EAAE49F,QAAF,GAAaf,uBAAb,GAAuC,GAAhD;AACD,KAFD,MAEO,IAAI3lG,IAAI8I,EAAEkV,KAAF,CAAQ,CAAR,CAAR,EAAoB;AACzByoF,eAAS39F,EAAE49F,QAAF,GAAad,uBAAb,GAAuC,GAAhD;AACD,KAFM,MAEA;AACLa,eAAS,CAACzmG,IAAI8I,EAAEwtB,KAAP,IAAgBxtB,EAAEgI,KAA3B;;AAEA;AACA;AACA;AACA21F,eAASA,SAAS39F,EAAE49F,QAAX,GAAsBD,MAAtB,GAA+B39F,EAAE49F,QAA1C;AACD;;AAED,WAAO9rG,KAAKC,KAAL,CAAW4rG,MAAX,CAAP;AACD,GAjBD;;AAmBA1qG,YAAU4qG,YAAV,GAAyB,UAAC3mG,CAAD,EAAIsmG,KAAJ,EAAWx9F,CAAX,EAAiB;AACxC,QAAIzM,QAAQ,CAAZ;AACA,QAAI,eAAQskB,KAAR,CAAc3gB,CAAd,CAAJ,EAAsB;AACpB3D,cAAQzB,KAAKC,KAAL,CAAWiO,EAAE49F,QAAF,GAAa,GAAb,GAAmBb,eAA9B,CAAR;AACD,KAFD,MAEO;AACLxpG,cAAQN,UAAUyqG,iBAAV,CAA4BxmG,CAA5B,EAA+B8I,CAA/B,CAAR;AACD;AACD,WAAO,CACLw9F,MAAM,IAAIjqG,KAAV,CADK,EAELiqG,MAAM,IAAIjqG,KAAJ,GAAY,CAAlB,CAFK,EAGLiqG,MAAM,IAAIjqG,KAAJ,GAAY,CAAlB,CAHK,EAILiqG,MAAM,IAAIjqG,KAAJ,GAAY,CAAlB,CAJK,CAAP;AAMD,GAbD;;AAeAN,YAAU6qG,qBAAV,GAAkC,UAAC5mG,CAAD,EAAIsmG,KAAJ,EAAWx9F,CAAX,EAAiB;AACjD,QAAMzM,QAAQN,UAAU8qG,8BAAV,CAAyC7mG,CAAzC,CAAd;AACA,WAAO,CACLsmG,MAAM,IAAIjqG,KAAV,CADK,EAELiqG,MAAM,IAAIjqG,KAAJ,GAAY,CAAlB,CAFK,EAGLiqG,MAAM,IAAIjqG,KAAJ,GAAY,CAAlB,CAHK,EAILiqG,MAAM,IAAIjqG,KAAJ,GAAY,CAAlB,CAJK,CAAP;AAMD,GARD;;AAUA;AACAN,YAAU+qG,mBAAV,GAAgC,UAAC9oF,KAAD,EAAQlV,CAAR,EAAc;AAC5CA,MAAEwtB,KAAF,GAAU,CAACtY,MAAM,CAAN,CAAX;AACAlV,MAAEgI,KAAF,GAAU1W,OAAOogB,SAAjB;AACA,QAAIwD,MAAM,CAAN,IAAWA,MAAM,CAAN,CAAf,EAAyB;AACvBlV,QAAEgI,KAAF,GAAU,CAAChI,EAAE49F,QAAF,GAAa,CAAd,KAAoB1oF,MAAM,CAAN,IAAWA,MAAM,CAAN,CAA/B,CAAV;AACD;AACF,GAND;;AAQA;AACAjiB,YAAUgrG,sBAAV,GAAmC,UACjCr1E,KADiC,EAEjCpxB,MAFiC,EAGjC0mG,SAHiC,EAIjCC,WAJiC,EAK9B;AACH,QAAIC,aAAanrG,UAAU4qG,YAA3B;AACA,QAAI1rG,MAAMksG,aAAV,EAAyB;AACvBD,mBAAanrG,UAAU6qG,qBAAvB;AACD;;AAED,QAAMQ,SAASrrG,UAAUsrG,eAAV,EAAf;;AAEA,QAAMv+F,IAAI;AACR49F,gBAAU3qG,UAAUurG,iBAAV,KAAgC,CADlC;AAERtpF,aAAOopF,MAFC;AAGR9wE,aAAO,GAHC;AAIRxlB,aAAO;AAJC,KAAV;AAMA/U,cAAU+qG,mBAAV,CAA8BM,MAA9B,EAAsCt+F,CAAtC;;AAEA,QAAMiX,QAAQhkB,UAAUipC,QAAV,EAAd;AACA,QAAMhoC,SAAS00B,MAAM9O,iBAAN,EAAf;AACA,QAAM2kF,SAAS71E,MAAMhP,qBAAN,EAAf;;AAEA,QAAM2hB,UAAU/jC,OAAOijB,OAAP,EAAhB;AACA,QAAM+gB,SAAS5S,MAAMnO,OAAN,EAAf;;AAEA,QAAIxD,SAAS,GAAb,EAAkB;AAChB,UAAIinF,cAAc,+BAAoBnxE,IAAtC,EAA4C;AAC1C,aAAK,IAAI51B,IAAI,CAAb,EAAgBA,IAAIjD,MAApB,EAA4BiD,GAA5B,EAAiC;AAC/B,cAAMunG,OAAON,WACX5iE,OAAOrkC,IAAIsnG,MAAJ,GAAaN,WAApB,CADW,EAEXhsG,MAAMqrG,KAFK,EAGXx9F,CAHW,CAAb;AAKAu7B,kBAAQpkC,IAAI,CAAZ,IAAiBunG,KAAK,CAAL,CAAjB;AACAnjE,kBAAQpkC,IAAI,CAAJ,GAAQ,CAAhB,IAAqBunG,KAAK,CAAL,CAArB;AACAnjE,kBAAQpkC,IAAI,CAAJ,GAAQ,CAAhB,IAAqBunG,KAAK,CAAL,CAArB;AACAnjE,kBAAQpkC,IAAI,CAAJ,GAAQ,CAAhB,IAAqBunG,KAAK,CAAL,CAArB;AACD;AACF;AACF,KAdD,MAcO;AACL;AACA,UAAIR,cAAc,+BAAoBnxE,IAAtC,EAA4C;AAC1C,aAAK,IAAI51B,KAAI,CAAb,EAAgBA,KAAIjD,MAApB,EAA4BiD,IAA5B,EAAiC;AAC/B,cAAMunG,QAAON,WACX5iE,OAAOrkC,KAAIsnG,MAAJ,GAAaN,WAApB,CADW,EAEXhsG,MAAMqrG,KAFK,EAGXx9F,CAHW,CAAb;AAKAu7B,kBAAQpkC,KAAI,CAAZ,IAAiBunG,MAAK,CAAL,CAAjB;AACAnjE,kBAAQpkC,KAAI,CAAJ,GAAQ,CAAhB,IAAqBunG,MAAK,CAAL,CAArB;AACAnjE,kBAAQpkC,KAAI,CAAJ,GAAQ,CAAhB,IAAqBunG,MAAK,CAAL,CAArB;AACAnjE,kBAAQpkC,KAAI,CAAJ,GAAQ,CAAhB,IAAqBrF,KAAKC,KAAL,CAAW2sG,MAAK,CAAL,IAAUznF,KAAV,GAAkB,GAA7B,CAArB;AACD;AACF;AACF,KApDE,CAoDD;AACH,GA1DD;;AA4DAhkB,YAAU0rG,UAAV,GAAuB,YAAM;AAC3B,QAAIC,OAAO,GAAX;AACA,QAAIC,OAAO,GAAX;AACA,QAAIC,OAAO,GAAX;AACA,QAAIC,OAAO,GAAX;;AAEA,QAAMnB,WAAWzrG,MAAMiqC,cAAN,GAAuB,CAAxC;;AAEA,QAAIwhE,QAAJ,EAAc;AACZgB,aAAO,CAACzsG,MAAM6sG,QAAN,CAAe,CAAf,IAAoB7sG,MAAM6sG,QAAN,CAAe,CAAf,CAArB,IAA0CpB,QAAjD;AACAiB,aAAO,CAAC1sG,MAAM8sG,eAAN,CAAsB,CAAtB,IAA2B9sG,MAAM8sG,eAAN,CAAsB,CAAtB,CAA5B,IAAwDrB,QAA/D;AACAkB,aAAO,CAAC3sG,MAAM+sG,UAAN,CAAiB,CAAjB,IAAsB/sG,MAAM+sG,UAAN,CAAiB,CAAjB,CAAvB,IAA8CtB,QAArD;AACAmB,aAAO,CAAC5sG,MAAMgtG,UAAN,CAAiB,CAAjB,IAAsBhtG,MAAMgtG,UAAN,CAAiB,CAAjB,CAAvB,IAA8CvB,QAArD;AACD;;AAED,QAAMtqF,MAAM,EAAZ;AACA,QAAM8rF,OAAO,EAAb;AACA,SAAK,IAAIjoG,IAAI,CAAb,EAAgBA,KAAKymG,QAArB,EAA+BzmG,GAA/B,EAAoC;AAClCmc,UAAI,CAAJ,IAASnhB,MAAM6sG,QAAN,CAAe,CAAf,IAAoB7nG,IAAIynG,IAAjC;AACAtrF,UAAI,CAAJ,IAASnhB,MAAM8sG,eAAN,CAAsB,CAAtB,IAA2B9nG,IAAI0nG,IAAxC;AACAvrF,UAAI,CAAJ,IAASnhB,MAAM+sG,UAAN,CAAiB,CAAjB,IAAsB/nG,IAAI2nG,IAAnC;;AAEA,qBAAQlrF,OAAR,CAAgBN,GAAhB,EAAqB8rF,IAArB;AACAA,WAAK,CAAL,IAAUjtG,MAAMgtG,UAAN,CAAiB,CAAjB,IAAsBhoG,IAAI4nG,IAApC;;AAEA;AACA5sG,YAAMqrG,KAAN,CAAYrmG,IAAI,CAAhB,IAAqBioG,KAAK,CAAL,IAAU,KAAV,GAAkB,GAAvC;AACAjtG,YAAMqrG,KAAN,CAAYrmG,IAAI,CAAJ,GAAQ,CAApB,IAAyBioG,KAAK,CAAL,IAAU,KAAV,GAAkB,GAA3C;AACAjtG,YAAMqrG,KAAN,CAAYrmG,IAAI,CAAJ,GAAQ,CAApB,IAAyBioG,KAAK,CAAL,IAAU,KAAV,GAAkB,GAA3C;AACAjtG,YAAMqrG,KAAN,CAAYrmG,IAAI,CAAJ,GAAQ,CAApB,IAAyBioG,KAAK,CAAL,IAAU,KAAV,GAAkB,GAA3C;AACD;;AAEDnsG,cAAUosG,kBAAV;;AAEAltG,UAAMmtG,SAAN,CAAgBzrG,QAAhB;AACD,GAnCD;;AAqCAZ,YAAUosG,kBAAV,GAA+B,YAAM;AACnC;AADmC,QAE3BjjE,cAF2B,GAERjqC,KAFQ,CAE3BiqC,cAF2B;;;AAInC,QAAMmjE,OAAOptG,MAAMqrG,KAAnB;AACA,QAAIgC,OAAO,CAACrtG,MAAMiqC,cAAN,GAAuBygE,uBAAxB,IAAmD,CAA9D;;AAEA;AACA,QAAI1qG,MAAMirG,kBAAN,IAA4BhhE,mBAAmB,CAAnD,EAAsD;AACpDmjE,WAAKC,IAAL,IAAartG,MAAMkrG,eAAN,CAAsB,CAAtB,IAA2B,KAA3B,GAAmC,GAAhD;AACAkC,WAAKC,OAAO,CAAZ,IAAiBrtG,MAAMkrG,eAAN,CAAsB,CAAtB,IAA2B,KAA3B,GAAmC,GAApD;AACAkC,WAAKC,OAAO,CAAZ,IAAiBrtG,MAAMkrG,eAAN,CAAsB,CAAtB,IAA2B,KAA3B,GAAmC,GAApD;AACAkC,WAAKC,OAAO,CAAZ,IAAiBrtG,MAAMkrG,eAAN,CAAsB,CAAtB,IAA2B,KAA3B,GAAmC,GAApD;AACD,KALD,MAKO;AACL;AACAkC,WAAKC,IAAL,IAAaD,KAAK,CAAL,CAAb;AACAA,WAAKC,OAAO,CAAZ,IAAiBD,KAAK,CAAL,CAAjB;AACAA,WAAKC,OAAO,CAAZ,IAAiBD,KAAK,CAAL,CAAjB;AACAA,WAAKC,OAAO,CAAZ,IAAiBD,KAAK,CAAL,CAAjB;AACD;;AAED;AACAC,WAAO,CAACrtG,MAAMiqC,cAAN,GAAuB0gE,uBAAxB,IAAmD,CAA1D;AACA,QAAI3qG,MAAMmrG,kBAAN,IAA4BlhE,mBAAmB,CAAnD,EAAsD;AACpDmjE,WAAKC,IAAL,IAAartG,MAAMorG,eAAN,CAAsB,CAAtB,IAA2B,KAA3B,GAAmC,GAAhD;AACAgC,WAAKC,OAAO,CAAZ,IAAiBrtG,MAAMorG,eAAN,CAAsB,CAAtB,IAA2B,KAA3B,GAAmC,GAApD;AACAgC,WAAKC,OAAO,CAAZ,IAAiBrtG,MAAMorG,eAAN,CAAsB,CAAtB,IAA2B,KAA3B,GAAmC,GAApD;AACAgC,WAAKC,OAAO,CAAZ,IAAiBrtG,MAAMorG,eAAN,CAAsB,CAAtB,IAA2B,KAA3B,GAAmC,GAApD;AACD,KALD,MAKO;AACL;AACAgC,WAAKC,IAAL,IAAaD,KAAK,KAAKnjE,iBAAiB,CAAtB,IAA2B,CAAhC,CAAb;AACAmjE,WAAKC,OAAO,CAAZ,IAAiBD,KAAK,KAAKnjE,iBAAiB,CAAtB,IAA2B,CAAhC,CAAjB;AACAmjE,WAAKC,OAAO,CAAZ,IAAiBD,KAAK,KAAKnjE,iBAAiB,CAAtB,IAA2B,CAAhC,CAAjB;AACAmjE,WAAKC,OAAO,CAAZ,IAAiBD,KAAK,KAAKnjE,iBAAiB,CAAtB,IAA2B,CAAhC,CAAjB;AACD;;AAED;AACAojE,WAAO,CAACrtG,MAAMiqC,cAAN,GAAuB2gE,eAAxB,IAA2C,CAAlD;AACAwC,SAAKC,IAAL,IAAartG,MAAMgrG,QAAN,CAAe,CAAf,IAAoB,KAApB,GAA4B,GAAzC;AACAoC,SAAKC,OAAO,CAAZ,IAAiBrtG,MAAMgrG,QAAN,CAAe,CAAf,IAAoB,KAApB,GAA4B,GAA7C;AACAoC,SAAKC,OAAO,CAAZ,IAAiBrtG,MAAMgrG,QAAN,CAAe,CAAf,IAAoB,KAApB,GAA4B,GAA7C;AACAoC,SAAKC,OAAO,CAAZ,IAAiBrtG,MAAMgrG,QAAN,CAAe,CAAf,IAAoB,KAApB,GAA4B,GAA7C;AACD,GA1CD;;AA4CAlqG,YAAU4oB,KAAV,GAAkB,YAAM;AACtB,QACE1pB,MAAMqrG,KAAN,CAAYtpG,MAAZ,GAAqB,CAArB,IACAjB,UAAUc,QAAV,KAAuB5B,MAAMmtG,SAAN,CAAgBvrG,QAAhB,EAFzB,EAGE;AACAd,gBAAU0rG,UAAV;AACD;AACF,GAPD;AAQD;;AAED;AACA;AACA;;AAEA,IAAMljF,iBAAiB;AACrB2gB,kBAAgB,GADK;AAErB;;AAEA4iE,YAAU,CAAC,GAAD,EAAM,OAAN,CAJW;AAKrBC,mBAAiB,CAAC,GAAD,EAAM,GAAN,CALI;AAMrBC,cAAY,CAAC,GAAD,EAAM,GAAN,CANS;AAOrBC,cAAY,CAAC,GAAD,EAAM,GAAN,CAPS;;AASrBhC,YAAU,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,GAAhB,CATW;AAUrBE,mBAAiB,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,GAAhB,CAVI;AAWrBE,mBAAiB,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,GAAhB,CAXI;AAYrBD,sBAAoB,KAZC;AAarBF,sBAAoB,KAbC;;AAerBnmF,SAAO;AACP;AACA;AAjBqB,CAAvB;;AAoBA;;AAEO,SAASxc,MAAT,CAAgBxH,SAAhB,EAA2Bd,KAA3B,EAAsD;AAAA,MAApBwI,aAAoB,uEAAJ,EAAI;;AAC3DvI,SAAOgD,MAAP,CAAcjD,KAAd,EAAqBspB,cAArB,EAAqC9gB,aAArC;;AAEA;AACA,4BAAmBF,MAAnB,CAA0BxH,SAA1B,EAAqCd,KAArC,EAA4CwI,aAA5C;;AAEA;AACA,MAAI,CAACxI,MAAMqrG,KAAX,EAAkB;AAChBrrG,UAAMqrG,KAAN,GAAc,EAAd;AACD;;AAEDrrG,QAAMmtG,SAAN,GAAkB,EAAlB;AACA,kBAAM5xG,GAAN,CAAUyE,MAAMmtG,SAAhB;;AAEAntG,QAAM8qG,mBAAN,GAA4B,EAA5B;AACA,kBAAMvvG,GAAN,CAAUyE,MAAM8qG,mBAAhB,EAAqC,EAAE7pG,OAAO,CAAT,EAArC;;AAEA;AACA,kBAAMzF,GAAN,CAAUsF,SAAV,EAAqBd,KAArB,EAA4B,CAAC,WAAD,CAA5B;;AAEA;AACA,kBAAMtE,MAAN,CAAaoF,SAAb,EAAwBd,KAAxB,EAA+B,CAC7B,gBAD6B,EAE7B,oBAF6B,EAG7B,oBAH6B,CAA/B;;AAMA;AACA,kBAAMpE,QAAN,CACEkF,SADF,EAEEd,KAFF,EAGE,CAAC,YAAD,EAAe,UAAf,EAA2B,iBAA3B,EAA8C,YAA9C,CAHF,EAIE,CAJF;;AAOA,kBAAMpE,QAAN,CACEkF,SADF,EAEEd,KAFF,EAGE,CAAC,UAAD,EAAa,iBAAb,EAAgC,iBAAhC,CAHF,EAIE,CAJF;;AAOA;AACA,kBAAMrE,QAAN,CAAemF,SAAf,EAA0Bd,KAA1B,EAAiC,CAC/B,UAD+B,EAE/B,iBAF+B,EAG/B,YAH+B,EAI/B,YAJ+B,EAK/B,UAL+B,EAM/B,iBAN+B,EAO/B,iBAP+B,CAAjC;;AAUA;;AAEA;AACA6qG,iBAAe/pG,SAAf,EAA0Bd,KAA1B;AACD;;AAED;;AAEO,IAAMhE,oCAAc,gBAAMA,WAAN,CAAkBsM,MAAlB,EAA0B,gBAA1B,CAApB;;AAEP;;kBAEerI,OAAOgD,MAAP,CAAc,EAAEjH,wBAAF,EAAesM,cAAf,EAAd,C;;;;;;;;;;;;;QC8KCA,M,GAAAA,M;;AArhBhB;;;;AACA;;;;AACA;;;;AACA;;;;;;AAAwE;;IAEhEimD,mB,uBAAAA,mB;IAAqBzqB,U,uBAAAA,U;IACrB9X,Y,uBAAAA,Y;IACA2X,S,uBAAAA,S;IACA3oC,a,mBAAAA,a;;AAER;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,SAASsyG,eAAT,CAAyBj4F,CAAzB,EAA4B;AAC1B,SAAOA,CAAP;AACD;AACD,SAASk4F,iBAAT,CAA2Bl4F,CAA3B,EAA8B;AAC5B,SAAO1V,KAAKC,KAAL,CAAWyV,IAAI,KAAJ,GAAY,GAAvB,CAAP;AACD;;AAED;AACA;AACA;;AAEA,SAASm4F,kBAAT,CAA4B1sG,SAA5B,EAAuCd,KAAvC,EAA8C;AAC5C;AACAA,QAAMkB,cAAN,CAAqBxB,IAArB,CAA0B,oBAA1B;;AAEAoB,YAAU2sG,wBAAV,GAAqC;AAAA,WACnC3sG,UAAU4sG,aAAV,CAAwB5pE,WAAW0G,SAAnC,CADmC;AAAA,GAArC;AAEA1pC,YAAU6sG,wBAAV,GAAqC;AAAA,WACnC7sG,UAAU4sG,aAAV,CAAwB5pE,WAAWuqB,SAAnC,CADmC;AAAA,GAArC;AAEAvtD,YAAU8sG,wBAAV,GAAqC;AAAA,WACnC9sG,UAAU4sG,aAAV,CAAwB5pE,WAAWwqB,SAAnC,CADmC;AAAA,GAArC;;AAGAxtD,YAAU4oB,KAAV,GAAkB,YAAM,CAAE,CAA1B;;AAEA5oB,YAAU4pC,QAAV,GAAqB;AAAA,WAAM,IAAN;AAAA,GAArB;;AAEA;AACA5pC,YAAU+sG,cAAV,GAA2B,UAACpgG,MAAD,EAASqgG,WAAT,EAAyB;AAClD,QAAKrgG,UAAU,CAACqgG,WAAZ,IAA6B,CAACrgG,MAAD,IAAWqgG,WAA5C,EAA0D;AACxD;AACD;;AAED,QACErgG,UACAqgG,WADA,IAEArgG,OAAOka,iBAAP,OAA+BmmF,YAAYnmF,iBAAZ,EAHjC,EAIE;AACA3sB,oBACE,0EADF;AAGA;AACD;;AAEDgF,UAAM+tG,eAAN,GAAwB,EAAxB;;AAEA,QAAID,eAAergG,MAAnB,EAA2B;AACzB,UAAMwf,MAAM6gF,YAAYnmF,iBAAZ,EAAZ;AACA,WAAK,IAAI3iB,IAAI,CAAb,EAAgBA,IAAIioB,GAApB,EAAyBjoB,GAAzB,EAA8B;AAC5BhF,cAAM+tG,eAAN,CAAsBruG,IAAtB,CAA2B;AACzBR,iBAAOuO,OAAOzI,CAAP,CADkB;AAEzBgpG,sBAAYF,YAAY9oG,CAAZ;AAFa,SAA3B;AAID;AACF;;AAEDlE,cAAUmtG,uBAAV;AACAntG,cAAUY,QAAV;AACD,GA9BD;;AAgCA;AACAZ,YAAUotG,aAAV,GAA0B,UAAChvG,KAAD,EAAQ8uG,UAAR,EAAuB;AAC/C,QAAIhpG,IAAIlE,UAAUqtG,sBAAV,CAAiCjvG,KAAjC,CAAR;AACA,QAAIwC,WAAW,KAAf;AACA,QAAIsD,KAAK,CAAT,EAAY;AACV,UAAIhF,MAAM+tG,eAAN,CAAsB/oG,CAAtB,EAAyBgpG,UAAzB,KAAwCA,UAA5C,EAAwD;AACtDhuG,cAAM+tG,eAAN,CAAsB/oG,CAAtB,EAAyBgpG,UAAzB,GAAsCA,UAAtC;AACAtsG,mBAAW,IAAX;AACD;AACF,KALD,MAKO;AACL1B,YAAM+tG,eAAN,CAAsBruG,IAAtB,CAA2B,EAAER,YAAF,EAAS8uG,sBAAT,EAA3B;AACAhpG,UAAIhF,MAAM+tG,eAAN,CAAsBhsG,MAAtB,GAA+B,CAAnC;AACAL,iBAAW,IAAX;AACD;AACD,QAAIA,QAAJ,EAAc;AACZZ,gBAAUmtG,uBAAV;AACAntG,gBAAUY,QAAV;AACD;AACD,WAAOsD,CAAP;AACD,GAlBD;;AAoBA;AACAlE,YAAUstG,0BAAV,GAAuC;AAAA,WAAMpuG,MAAM+tG,eAAN,CAAsBhsG,MAA5B;AAAA,GAAvC;;AAEA;AACAjB,YAAUutG,iBAAV,GAA8B,UAACtvF,GAAD,EAAS;AACrC,QAAIA,MAAM,CAAN,IAAWA,OAAO/e,MAAM+tG,eAAN,CAAsBhsG,MAA5C,EAAoD;AAClD,aAAO,IAAP;AACD;AACD,WAAO/B,MAAM+tG,eAAN,CAAsBhvF,GAAtB,EAA2B7f,KAAlC;AACD,GALD;;AAOA;AACA4B,YAAUwtG,aAAV,GAA0B,UAACvvF,GAAD,EAAS;AACjC,QAAI/e,MAAM+tG,eAAN,CAAsBhvF,GAAtB,MAA+B3b,SAAnC,EAA8C;AAC5C,aAAO,IAAP;AACD;AACD,WAAOpD,MAAM+tG,eAAN,CAAsBhvF,GAAtB,EAA2BivF,UAAlC;AACD,GALD;;AAOA;AACAltG,YAAUytG,sBAAV,GAAmC,UAAC3rG,GAAD;AAAA,WACjC5C,MAAM+tG,eAAN,CAAsBhsG,MAAtB,GAA+BjB,UAAUqtG,sBAAV,CAAiCvrG,GAAjC,CAA/B,GAAuE,CAAC,CADvC;AAAA,GAAnC;;AAGA;AACA9B,YAAU0tG,gBAAV,GAA6B,UAACtvG,KAAD,EAAW;AACtC,QAAM8F,IAAIlE,UAAUqtG,sBAAV,CAAiCjvG,KAAjC,CAAV;AACA,QAAMuvG,eAAezpG,KAAK,CAA1B;AACA,QAAIypG,YAAJ,EAAkB;AAChBzuG,YAAM+tG,eAAN,CAAsBjqG,MAAtB,CAA6BkB,CAA7B,EAAgC,CAAhC;AACAlE,gBAAUmtG,uBAAV;AACAntG,gBAAUY,QAAV;AACD;AACD,WAAO+sG,YAAP;AACD,GATD;;AAWA;AACA3tG,YAAU4tG,gBAAV,GAA6B,YAAM;AACjC1uG,UAAM+tG,eAAN,GAAwB,EAAxB;AACA/tG,UAAM2uG,iBAAN,GAA0B,EAA1B;AACA7tG,cAAUY,QAAV;AACD,GAJD;;AAMA;AACAZ,YAAU8tG,kBAAV,GAA+B,UAAChsG,GAAD,EAAMqqG,IAAN,EAAe;AAC5C,QAAIjtG,MAAMksG,aAAV,EAAyB;AACvB,UAAMlnG,IAAIlE,UAAUytG,sBAAV,CAAiC3rG,GAAjC,CAAV;AACA9B,gBAAU+tG,eAAV,CAA0B7pG,CAA1B,EAA6BioG,IAA7B;AACD,KAHD,MAGO;AACLnsG,gBAAU4mD,QAAV,CAAmBonD,WAAWlsG,GAAX,CAAnB,EAAoCqqG,IAApC;AACAA,WAAK,CAAL,IAAU,GAAV;AACD;AACF,GARD;;AAUA;AACAnsG,YAAUqtG,sBAAV,GAAmC,UAACjvG,KAAD;AAAA,WACjC4B,UAAU8qG,8BAAV,CAAyC1sG,KAAzC,CADiC;AAAA,GAAnC;;AAGA;AACA;AACA;AACA4B,YAAU8qG,8BAAV,GAA2C,UAAC1sG,KAAD,EAAW;AACpD,QAAIc,MAAM2uG,iBAAN,CAAwBzvG,KAAxB,MAAmCkE,SAAvC,EAAkD;AAChD,UAAM2rG,KAAK/uG,MAAM+tG,eAAN,CAAsBhsG,MAAjC;AACA,aAAO/B,MAAM2uG,iBAAN,CAAwBzvG,KAAxB,IAAiC6vG,EAAxC;AACD;AACD,WAAO,CAAC,CAAR;AACD,GAND;;AAQA;AACAjuG,YAAU+tG,eAAV,GAA4B,UAACjsG,GAAD,EAAMqqG,IAAN,EAAe;AACzCA,SAAK,CAAL,IAAU,GAAV;AACAA,SAAK,CAAL,IAAU,GAAV;AACAA,SAAK,CAAL,IAAU,GAAV;AACAA,SAAK,CAAL,IAAU,GAAV;AACD,GALD;;AAOA;AACAnsG,YAAUmtG,uBAAV,GAAoC,YAAM;AACxCjuG,UAAM2uG,iBAAN,GAA0B,EAA1B;;AAEA,QAAMI,KAAK/uG,MAAM+tG,eAAN,CAAsBhsG,MAAjC;AACA,SAAK,IAAIiD,IAAI,CAAb,EAAgBA,IAAI+pG,EAApB,EAAwB,EAAE/pG,CAA1B,EAA6B;AAC3BhF,YAAM2uG,iBAAN,CAAwB3uG,MAAM+tG,eAAN,CAAsB/oG,CAAtB,EAAyB9F,KAAjD,IAA0D8F,CAA1D;AACD;AACF,GAPD;;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAlE,YAAU6mC,UAAV,GAAuB,UAAC1Q,OAAD,EAAU8N,SAAV,EAAqBiqE,WAArB,EAAqC;AAC1D,QAAMtoF,qBAAqBuQ,QAAQxP,qBAAR,EAA3B;;AAEA,QAAIwnF,YAAY,IAAhB;;AAEA;AACA,QACGlqE,cAAcpB,UAAUkD,OAAxB,IACC5P,QAAQjQ,WAAR,OAA0BgF,aAAaG,aADzC,IAEC4Y,cAAcpB,UAAUmyC,cAAxB,IAA0C7+C,OAH7C,EAIE;AACAg4E,kBAAYnuG,UAAUouG,aAAV,CACVj4E,OADU,EAEVvQ,kBAFU,EAGVuQ,QAAQtP,iBAAR,EAHU,CAAZ;AAKD,KAVD,MAUO;AACL,UAAMwnF,aAAa;AACjB9qG,cAAM,cADW;AAEjBxG,cAAM,MAFW;AAGjB6oB,4BAAoB,CAHH;AAIjBqC,kBAAUiD,aAAaG;AAJN,OAAnB;;AAOA,UAAMnR,IAAI,IAAIuO,OAAO4lF,WAAWpmF,QAAlB,CAAJ,CACR,IAAIkO,QAAQtP,iBAAR,EADI,CAAV;AAGAwnF,iBAAW1hG,MAAX,GAAoBuN,CAApB;AACAm0F,iBAAWrwG,IAAX,GAAkBkc,EAAEjZ,MAApB;AACAktG,kBAAY,oBAAajzG,WAAb,CAAyBmzG,UAAzB,CAAZ;;AAEA,UAAI1oF,YAAYuoF,WAAhB;;AAEA;AACA,UAAIvoF,YAAY,CAAZ,IAAiBC,qBAAqB,CAA1C,EAA6C;AAC3C5lB,kBAAUsuG,sBAAV,CACEn4E,OADF,EAEEg4E,SAFF,EAGE1gD,oBAAoB3zB,IAHtB,EAIE,CAAC,CAJH,EAKE,CAAC,CALH;AAOD,OARD,MAQO;AACL,YAAInU,YAAY,CAAhB,EAAmB;AACjBA,sBAAY,CAAZ;AACD;AACD,YAAIA,aAAaC,kBAAjB,EAAqC;AACnCD,sBAAYC,qBAAqB,CAAjC;AACD;;AAED;AACA5lB,kBAAUgrG,sBAAV,CACE70E,OADF,EAEEg4E,SAFF,EAGE1gD,oBAAoB3zB,IAHtB,EAIEnU,SAJF;AAMD;AACF;;AAED,WAAOwoF,SAAP;AACD,GA7DD;;AA+DAnuG,YAAUuuG,qBAAV,GAAkC,UAAC54E,KAAD,EAAQpxB,MAAR,EAAgBiqG,UAAhB,EAA+B;AAC/D,QAAMvtG,SAAS00B,MAAM9O,iBAAN,EAAf;AACA,QAAM2kF,SAAS71E,MAAMhP,qBAAN,EAAf;;AAEA,QAAM2hB,UAAU/jC,OAAOijB,OAAP,EAAhB;AACA,QAAM+gB,SAAS5S,MAAMnO,OAAN,EAAf;;AAEA,SAAK,IAAItjB,IAAI,CAAb,EAAgBA,IAAIjD,MAApB,EAA4BiD,GAA5B,EAAiC;AAC/B,UAAIyP,MAAM,GAAV;AACA,WAAK,IAAI3B,IAAI,CAAb,EAAgBA,IAAIw8F,UAApB,EAAgCx8F,GAAhC,EAAqC;AACnC2B,eAAO40B,OAAOrkC,IAAIsnG,MAAJ,GAAax5F,CAApB,IAAyBu2B,OAAOrkC,IAAIsnG,MAAJ,GAAax5F,CAApB,CAAhC;AACD;AACDs2B,cAAQpkC,CAAR,IAAarF,KAAK6U,IAAL,CAAUC,GAAV,CAAb;AACD;AACF,GAdD;;AAgBA;AACA;AACA3T,YAAUsuG,sBAAV,GAAmC,UACjC34E,KADiC,EAEjCpxB,MAFiC,EAGjCkqG,YAHiC,EAIjCC,iBAJiC,EAKjCC,YALiC,EAM9B;AACH,QAAIC,aAAa5uG,UAAUypC,aAAV,EAAjB;AACA,QAAIolE,aAAaF,YAAjB;AACA,QAAIG,kBAAkBJ,iBAAtB;AACA,QAAMK,eAAep5E,MAAMhP,qBAAN,EAArB;;AAEA,QAAIioF,eAAe5rE,WAAWuqB,SAA9B,EAAyC;AACvC;AACA,UAAIuhD,oBAAoB,CAAC,CAAzB,EAA4B;AAC1B;AACAA,0BAAkB9uG,UAAUwpC,kBAAV,EAAlB;AACD;AACD,UAAIslE,kBAAkB,CAAtB,EAAyB;AACvBA,0BAAkB,CAAlB;AACD;AACD,UAAIA,mBAAmBC,YAAvB,EAAqC;AACnCD,0BAAkBC,eAAe,CAAjC;AACD;AACF,KAZD,MAYO;AACL;AACA,UAAIF,eAAe,CAAC,CAApB,EAAuB;AACrB;AACAA,qBAAa7uG,UAAUgvG,aAAV,EAAb;AACD;AACD,UAAIH,cAAc,CAAlB,EAAqB;AACnBC,0BAAkB,CAAlB;AACAD,qBAAaE,YAAb;AACD,OAHD,MAGO;AACL,YAAID,kBAAkB,CAAtB,EAAyB;AACvBA,4BAAkB,CAAlB;AACD;AACD,YAAIA,mBAAmBC,YAAvB,EAAqC;AACnCD,4BAAkBC,eAAe,CAAjC;AACD;AACD,YAAID,kBAAkBD,UAAlB,GAA+BE,YAAnC,EAAiD;AAC/CF,uBAAaE,eAAeD,eAA5B;AACD;AACF;;AAED,UACEF,eAAe5rE,WAAW0G,SAA1B,KACCqlE,iBAAiB,CAAjB,IAAsBF,eAAe,CADtC,CADF,EAGE;AACAD,qBAAa5rE,WAAWuqB,SAAxB;AACD;AACF;;AAED;AACA,QAAI29C,cAAc,CAAlB;AACA,QAAI4D,kBAAkB,CAAtB,EAAyB;AACvB5D,oBAAc4D,eAAd;AACD;;AAED;AACA,YAAQF,UAAR;AACE,WAAK5rE,WAAWuqB,SAAhB;AAA2B;AACzBvtD,oBAAUgrG,sBAAV,CACEr1E,KADF,EAEEpxB,MAFF,EAGEkqG,YAHF,EAIEvD,WAJF;AAMA;AACD;;AAED;AACA,WAAKloE,WAAW0G,SAAhB;AAA2B;AACzB,cAAMulE,YAAY,oBAAa/zG,WAAb,CAAyB;AACzC0qB,gCAAoB,CADqB;AAEzCjZ,oBAAQ,IAAIvP,YAAJ,CAAiBu4B,MAAM9O,iBAAN,EAAjB;AAFiC,WAAzB,CAAlB;;AAKA7mB,oBAAUuuG,qBAAV,CAAgC54E,KAAhC,EAAuCs5E,SAAvC,EAAkDJ,UAAlD;AACA7uG,oBAAUgrG,sBAAV,CAAiCiE,SAAjC,EAA4C1qG,MAA5C,EAAoDkqG,YAApD,EAAkE,CAAlE;AACA;AACD;;AAED,WAAKzrE,WAAWwqB,SAAhB;AAA2B;AACzB;AACA;AACA;AACA;AACD;AA5BH;AA8BD,GA1FD;;AA4FAxtD,YAAUkvG,eAAV,GAA4B,UAACf,SAAD,EAAYzvD,MAAZ,EAAoB16B,KAApB,EAA2BmrF,QAA3B,EAAwC;AAClE,QAAM38F,IAAI28F,SAASnrF,KAAT,CAAV;;AAEA,QAAMrX,SAAS+xC,OAAOl3B,OAAP,EAAf;AACA,QAAM4nF,YAAYjB,UAAU3mF,OAAV,EAAlB;AACA,QAAMxpB,OAAO2O,OAAO1L,MAApB;AACA,QAAM0kB,YAAY,CAAlB;AACA,QAAMkC,QAAQ,CAAd;;AAEA,QAAI1mB,QAAQ,CAAZ;AACA,SAAK,IAAI+C,IAAIyhB,SAAb,EAAwBzhB,IAAIlG,IAA5B,EAAkCkG,KAAK2jB,KAAvC,EAA8C;AAC5C,UAAMq7B,IAAIisD,SAASxiG,OAAOzI,CAAP,CAAT,CAAV;AACAkrG,gBAAUjuG,QAAQ,CAAlB,IAAuB+hD,CAAvB;AACAksD,gBAAUjuG,QAAQ,CAAR,GAAY,CAAtB,IAA2B+hD,CAA3B;AACAksD,gBAAUjuG,QAAQ,CAAR,GAAY,CAAtB,IAA2B+hD,CAA3B;AACAksD,gBAAUjuG,QAAQ,CAAR,GAAY,CAAtB,IAA2BqR,CAA3B;AACArR;AACD;AACF,GAlBD;;AAoBAnB,YAAUqvG,oBAAV,GAAiC,UAAClB,SAAD,EAAYzvD,MAAZ,EAAoB16B,KAApB,EAA2BmrF,QAA3B,EAAwC;AACvE,QAAMxiG,SAAS+xC,OAAOl3B,OAAP,EAAf;AACA,QAAM4nF,YAAYjB,UAAU3mF,OAAV,EAAlB;AACA,QAAMxpB,OAAO2O,OAAO1L,MAApB;AACA,QAAM0kB,YAAY,CAAlB;AACA,QAAMkC,QAAQ,CAAd;;AAEA,QAAI1mB,QAAQ,CAAZ;AACA,SAAK,IAAI+C,IAAIyhB,SAAb,EAAwBzhB,IAAIlG,IAA5B,EAAkCkG,KAAK2jB,KAAvC,EAA8C;AAC5C,UAAMq7B,IAAIisD,SAASxiG,OAAOzI,CAAP,CAAT,CAAV;AACAkrG,gBAAUjuG,KAAV,IAAmB+hD,CAAnB;AACAksD,gBAAUjuG,QAAQ,CAAlB,IAAuB+hD,CAAvB;AACAksD,gBAAUjuG,QAAQ,CAAlB,IAAuB+hD,CAAvB;AACAksD,gBAAUjuG,QAAQ,CAAlB,IAAuBguG,SAASxiG,OAAOzI,IAAI,CAAX,CAAT,IAA0B8f,KAAjD;AACA7iB,eAAS,CAAT;AACD;AACF,GAhBD;;AAkBAnB,YAAUsvG,SAAV,GAAsB,UAACnB,SAAD,EAAYzvD,MAAZ,EAAoB16B,KAApB,EAA2BmrF,QAA3B,EAAwC;AAC5D,QAAM38F,IAAIi6F,kBAAkBzoF,KAAlB,CAAV;;AAEA,QAAMrX,SAAS+xC,OAAOl3B,OAAP,EAAf;AACA,QAAM4nF,YAAYjB,UAAU3mF,OAAV,EAAlB;AACA,QAAMxpB,OAAO2O,OAAO1L,MAApB;AACA,QAAM0kB,YAAY,CAAlB;AACA,QAAMkC,QAAQ,CAAd;;AAEA,QAAI1mB,QAAQ,CAAZ;AACA,SAAK,IAAI+C,IAAIyhB,SAAb,EAAwBzhB,IAAIlG,IAA5B,EAAkCkG,KAAK2jB,KAAvC,EAA8C;AAC5CunF,gBAAUjuG,QAAQ,CAAlB,IAAuBguG,SAASxiG,OAAOzI,CAAP,CAAT,CAAvB;AACAkrG,gBAAUjuG,QAAQ,CAAR,GAAY,CAAtB,IAA2BguG,SAASxiG,OAAOzI,IAAI,CAAX,CAAT,CAA3B;AACAkrG,gBAAUjuG,QAAQ,CAAR,GAAY,CAAtB,IAA2BguG,SAASxiG,OAAOzI,IAAI,CAAX,CAAT,CAA3B;AACAkrG,gBAAUjuG,QAAQ,CAAR,GAAY,CAAtB,IAA2BqR,CAA3B;AACArR;AACD;AACF,GAjBD;;AAmBAnB,YAAUuvG,UAAV,GAAuB,UAACpB,SAAD,EAAYzvD,MAAZ,EAAoB16B,KAApB,EAA2BmrF,QAA3B,EAAwC;AAC7D,QAAMxiG,SAAS+xC,OAAOl3B,OAAP,EAAf;AACA,QAAM4nF,YAAYjB,UAAU3mF,OAAV,EAAlB;AACA,QAAMxpB,OAAO2O,OAAO1L,MAApB;AACA,QAAM0kB,YAAY,CAAlB;AACA,QAAMkC,QAAQ,CAAd;;AAEA,QAAI1mB,QAAQ,CAAZ;AACA,SAAK,IAAI+C,IAAIyhB,SAAb,EAAwBzhB,IAAIlG,IAA5B,EAAkCkG,KAAK2jB,KAAvC,EAA8C;AAC5CunF,gBAAUjuG,QAAQ,CAAlB,IAAuBguG,SAASxiG,OAAOzI,CAAP,CAAT,CAAvB;AACAkrG,gBAAUjuG,QAAQ,CAAR,GAAY,CAAtB,IAA2BguG,SAASxiG,OAAOzI,IAAI,CAAX,CAAT,CAA3B;AACAkrG,gBAAUjuG,QAAQ,CAAR,GAAY,CAAtB,IAA2BguG,SAASxiG,OAAOzI,IAAI,CAAX,CAAT,CAA3B;AACAiqG,gBAAUhtG,QAAQ,CAAR,GAAY,CAAtB,IAA2BguG,SAASxiG,OAAOzI,IAAI,CAAX,CAAT,IAA0B8f,KAArD;AACA7iB;AACD;AACF,GAfD;;AAiBA;AACAnB,YAAUouG,aAAV,GAA0B,UAAC1vD,MAAD,EAAS8wD,OAAT,EAAkBC,SAAlB,EAAgC;AAAA,QAClDzrF,KADkD,GACxC9kB,KADwC,CAClD8kB,KADkD;;AAExD,QACEwrF,YAAY,CAAZ,IACAxrF,SAAS,GADT,IAEA06B,OAAOx4B,WAAP,OAAyBgF,aAAaG,aAHxC,EAIE;AACA,aAAOqzB,MAAP;AACD;;AAED,QAAMyvD,YAAY,oBAAajzG,WAAb,CAAyB;AACzC0qB,0BAAoB,CADqB;AAEzCuC,aAAO,IAFkC;AAGzCnqB,YAAM,IAAIyxG,SAH+B;AAIzCxnF,gBAAUiD,aAAaG;AAJkB,KAAzB,CAAlB;;AAOA,QAAIokF,aAAa,CAAjB,EAAoB;AAClB,aAAOtB,SAAP;AACD;;AAEDnqF,YAAQA,QAAQ,CAAR,GAAYA,KAAZ,GAAoB,CAA5B;AACAA,YAAQA,QAAQ,CAAR,GAAYA,KAAZ,GAAoB,CAA5B;;AAEA,QAAImrF,WAAW3C,eAAf;AACA,QACE9tD,OAAOx4B,WAAP,OAAyBgF,aAAaQ,KAAtC,IACAgzB,OAAOx4B,WAAP,OAAyBgF,aAAaS,MAFxC,EAGE;AACAwjF,iBAAW1C,iBAAX;AACD;;AAED,YAAQ+C,OAAR;AACE,WAAK,CAAL;AACExvG,kBAAUkvG,eAAV,CAA0Bf,SAA1B,EAAqCzvD,MAArC,EAA6C16B,KAA7C,EAAoDmrF,QAApD;AACA;;AAEF,WAAK,CAAL;AACEnvG,kBAAUqvG,oBAAV,CAA+BlB,SAA/B,EAA0CzvD,MAA1C,EAAkDywD,QAAlD;AACA;;AAEF,WAAK,CAAL;AACEnvG,kBAAUsvG,SAAV,CAAoBnB,SAApB,EAA+BzvD,MAA/B,EAAuC16B,KAAvC,EAA8CmrF,QAA9C;AACA;;AAEF,WAAK,CAAL;AACEnvG,kBAAUuvG,UAAV,CAAqBpB,SAArB,EAAgCzvD,MAAhC,EAAwC16B,KAAxC,EAA+CmrF,QAA/C;AACA;;AAEF;AACEj1G,sBAAc,uBAAd;AACA,eAAO,IAAP;AAnBJ;;AAsBA,WAAOi0G,SAAP;AACD,GAvDD;;AAyDAnuG,YAAU8oC,aAAV,GAA0B;AAAA,WAAM,KAAN;AAAA,GAA1B;;AAEA9oC,YAAUopC,0BAAV,GAAuC;AAAA,WAAM,MAAM,GAAN,GAAY,GAAlB;AAAA,GAAvC;;AAEAppC,YAAUonC,QAAV,GAAqB,UAACx2B,GAAD,EAAMC,GAAN;AAAA,WAAc7Q,UAAU0vG,eAAV,CAA0B9+F,GAA1B,EAA+BC,GAA/B,CAAd;AAAA,GAArB;AACA7Q,YAAUylB,QAAV,GAAqB,UAAC7U,GAAD,EAAMC,GAAN;AAAA,WAAc7Q,UAAUsrG,eAAV,EAAd;AAAA,GAArB;AACD;;AAED;AACA;AACA;;AAEA,IAAM9iF,iBAAiB;AACrBxE,SAAO,GADc;AAErB8qF,mBAAiB,CAFI;AAGrBD,cAAY,CAAC,CAHQ;AAIrBD,cAAY5rE,WAAWuqB,SAJF;AAKrBoiD,gBAAc,IALO;AAMrB1C,mBAAiB,IANI;AAOrBY,qBAAmB,IAPE;AAQrBzC,iBAAe;AARM,CAAvB;;AAWA;;AAEO,SAAS5jG,MAAT,CAAgBxH,SAAhB,EAA2Bd,KAA3B,EAAsD;AAAA,MAApBwI,aAAoB,uEAAJ,EAAI;;AAC3DvI,SAAOgD,MAAP,CAAcjD,KAAd,EAAqBspB,cAArB,EAAqC9gB,aAArC;;AAEA;AACA,kBAAMjN,GAAN,CAAUuF,SAAV,EAAqBd,KAArB;;AAEAA,QAAMywG,YAAN,GAAqB,CAAC,CAAD,EAAI,GAAJ,CAArB;AACAzwG,QAAM+tG,eAAN,GAAwB,EAAxB;AACA/tG,QAAM2uG,iBAAN,GAA0B,EAA1B;;AAEA;AACA,kBAAMjzG,MAAN,CAAaoF,SAAb,EAAwBd,KAAxB,EAA+B,CAC7B,YAD6B,EAE7B,iBAF6B,EAG7B,YAH6B,EAI7B,OAJ6B,EAK7B,eAL6B,CAA/B;;AAQA;AACA,kBAAMpE,QAAN,CAAekF,SAAf,EAA0Bd,KAA1B,EAAiC,CAAC,cAAD,CAAjC,EAAmD,CAAnD;;AAEA;AACA,kBAAMrE,QAAN,CAAemF,SAAf,EAA0Bd,KAA1B,EAAiC,CAAC,cAAD,CAAjC;;AAEA;;AAEA;AACAwtG,qBAAmB1sG,SAAnB,EAA8Bd,KAA9B;AACD;;AAED;;AAEO,IAAMhE,oCAAc,gBAAMA,WAAN,CAAkBsM,MAAlB,EAA0B,oBAA1B,CAApB;;AAEP;;kBAEerI,OAAOgD,MAAP,CAAc,EAAEjH,wBAAF,EAAesM,cAAf,EAAd,sB;;;;;;;;;;;;QC1jBC+7B,4B,GAAAA,4B;AAAT,SAASA,4BAAT,CAAsCvjC,SAAtC,EAAiDd,KAAjD,EAAwD0wG,QAAxD,EAAkE;AACvEA,WAASxzG,OAAT,CAAiB,UAACyD,IAAD,EAAU;AACzBG,sBAAgBH,KAAKgN,MAArB,IAAiC;AAAA,aAAM3N,MAAMW,KAAKR,GAAX,CAAN;AAAA,KAAjC;AACAW,sBAAgBH,KAAKgN,MAArB,IAAiC,UAACs2B,MAAD,EAAS0sE,IAAT,EAAkB;AACjD3wG,YAAMW,KAAKR,GAAX,IAAkB,EAAE8jC,cAAF,EAAU0sE,UAAV,EAAlB;AACD,KAFD;AAGD,GALD;AAMD;;AAEM,IAAMrsE,kCAAa,CAAC,SAAD,EAAY,MAAZ,EAAoB,OAApB,CAAnB;;kBAEQ;AACbD,4DADa;AAEbC;AAFa,C;;;;;;;;;;;;QCHCssE,8C,GAAAA,8C;QAIAC,8C,GAAAA,8C;QAIAt7D,4B,GAAAA,4B;QAIAu7D,4B,GAAAA,4B;QAIAC,qC,GAAAA,qC;QAIAC,iC,GAAAA,iC;QAIAC,2C,GAAAA,2C;QAIAC,oC,GAAAA,oC;AApChB,IAAIC,8CAA8C,CAAlD;AACA,IAAIjlE,4BAA4B,CAAhC;;AAEO,IAAMklE,8EAAmC,CAC9C,iBAD8C,EAE9C,4BAF8C,CAAzC;;AAKA,SAASR,8CAAT,GAA0D;AAC/D,SAAOO,2CAAP;AACD;;AAEM,SAASN,8CAAT,CAAwD3xG,KAAxD,EAA+D;AACpEiyG,gDAA8CjyG,KAA9C;AACD;;AAEM,SAASq2C,4BAAT,GAAwC;AAC7C,SAAOrJ,yBAAP;AACD;;AAEM,SAAS4kE,4BAAT,GAAgD;AAAA,MAAVtzD,IAAU,uEAAH,CAAG;;AACrDtR,8BAA4BsR,IAA5B;AACD;;AAEM,SAASuzD,qCAAT,GAAiD;AACtDD,+BAA6B,CAA7B,EADsD,CACrB;AAClC;;AAEM,SAASE,iCAAT,GAA6C;AAClDF,+BAA6B,CAA7B,EADkD,CACjB;AAClC;;AAEM,SAASG,2CAAT,GAAuD;AAC5DH,+BAA6B,CAA7B,EAD4D,CAC3B;AAClC;;AAEM,SAASI,oCAAT,GAAgD;AACrD,SAAOE,iCAAiCllE,yBAAjC,CAAP;AACD;;kBAEc;AACbglE,4EADa;AAEbN,gGAFa;AAGbE,4DAHa;AAIbD,gGAJa;AAKbE,8EALa;AAMbC,sEANa;AAObC;AAPa,C;;;;;;;;;;;;;QC+oBC3oG,M,GAAAA,M;;AAvrBhB;;AACA;;;;AACA;;;;AACA;;;;AACA;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;AACA;;AAIA;;AAEA;;;;AACA;;;;;;IAEQtN,a,mBAAAA,a;IAEAq2G,W,uBAAAA,W;;AAER;AACA;AACA;;AAEA,SAASC,oBAAT,CAA8BxwG,SAA9B,EAAyCd,KAAzC,EAAgD;AAC9C;AACAA,QAAMkB,cAAN,CAAqBxB,IAArB,CAA0B,sBAA1B;;AAEAoB,YAAUqvC,SAAV,GAAsB,UAACxmB,OAAD,EAAa;AACjC,QAAIA,OAAJ,EAAa;AACX3pB,YAAMuxG,gBAAN,GAAyBzwG,UAAU0pB,sBAAV,CACvB,qBADuB,CAAzB;AAGAxqB,YAAMo1B,cAAN,GAAuBt0B,UAAU0pB,sBAAV,CACrB,mBADqB,CAAvB;AAGAxqB,YAAMm1B,kBAAN,GAA2Bn1B,MAAMo1B,cAAN,CAAqBC,SAArB,EAA3B;AACAr1B,YAAMqJ,OAAN,GAAgBrJ,MAAMm1B,kBAAN,CAAyBG,UAAzB,EAAhB;AACAt1B,YAAMwxG,IAAN,CAAWnuE,qBAAX,CAAiCrjC,MAAMm1B,kBAAvC;AACAn1B,YAAMyxG,aAAN,CAAoBpuE,qBAApB,CAA0CrjC,MAAMm1B,kBAAhD;AACAn1B,YAAMoqD,YAAN,CAAmB/mB,qBAAnB,CAAyCrjC,MAAMm1B,kBAA/C;AACA,UAAM2b,MAAM9wC,MAAMo1B,cAAN,CAAqB7J,aAArB,EAAZ;AACAvrB,YAAMqwC,YAAN,GAAqBrwC,MAAMo1B,cAAN,CAAqBjL,cAArB,CACnB2mB,IAAIR,eAAJ,EADmB,CAArB;AAGA;AACA,UAAItwC,MAAMqqB,UAAN,CAAiBqnF,oBAAjB,EAAJ,EAA6C;AAC3C1xG,cAAMqqB,UAAN,CAAiBsnF,kBAAjB,CAAoC7gE,IAAIR,eAAJ,EAApC;AACD;AACF;AACF,GAtBD;;AAwBAxvC,YAAUyvC,eAAV,GAA4B,UAAC5mB,OAAD,EAAa;AACvC,QAAIA,OAAJ,EAAa;AACX7oB,gBAAU8oB,MAAV;AACD;AACF,GAJD;;AAMA9oB,YAAU0vC,iBAAV,GAA8B,UAAC7mB,OAAD,EAAa;AACzC,QAAIA,OAAJ,EAAa;AACX3pB,YAAMywC,oBAAN,GAA6B,IAA7B;AACAzwC,YAAM0wC,WAAN,GAAoB,IAApB;AACA5vC,gBAAU8oB,MAAV;AACA5pB,YAAM0wC,WAAN,GAAoB,KAApB;AACD;AACF,GAPD;;AASA5vC,YAAU6vC,UAAV,GAAuB,UAAChnB,OAAD,EAAa;AAClC,QAAIA,OAAJ,EAAa;AACX7oB,gBAAU8oB,MAAV;AACD;AACF,GAJD;;AAMA;AACA9oB,YAAU8oB,MAAV,GAAmB,YAAM;AACvB,QAAMinB,QAAQ7wC,MAAMuxG,gBAAN,CAAuBhmF,aAAvB,EAAd;AACA,QAAMulB,MAAM9wC,MAAMo1B,cAAN,CAAqB7J,aAArB,EAAZ;AACAzqB,cAAUiwC,WAAV,CAAsBD,GAAtB,EAA2BD,KAA3B;AACD,GAJD;;AAMA/vC,YAAUkwC,YAAV,GAAyB,UAACC,OAAD,EAAUH,GAAV,EAAeD,KAAf,EAAyB;AAChD/vC,cAAUowC,iBAAV,CAA4BD,OAA5B,EAAqCH,GAArC,EAA0CD,KAA1C;AACA/vC,cAAUixC,mBAAV,CAA8Bd,OAA9B,EAAuCH,GAAvC,EAA4CD,KAA5C;AACD,GAHD;;AAKA/vC,YAAUowC,iBAAV,GAA8B,UAACD,OAAD,EAAUH,GAAV,EAAeD,KAAf,EAAyB;AACrDI,YAAQmB,MAAR;AACAnB,YAAQuB,QAAR;AACAvB,YAAQ2B,QAAR,GAAmB,EAAnB;AACD,GAJD;;AAMA9xC,YAAUixC,mBAAV,GAAgC,UAACd,OAAD,EAAUH,GAAV,EAAeD,KAAf,EAAyB;AACvD,QAAIiC,WAAW7B,QAAQmB,MAAvB;AACA,QAAIY,WAAW/B,QAAQuB,QAAvB;;AAEAM,eAAW,wBAAiBplB,UAAjB,CAA4BolB,QAA5B,EAAsC,oBAAtC,EAA4D,CACrE,0BADqE,CAA5D,EAERhqC,MAFH;AAGAgqC,eAAW,wBAAiBplB,UAAjB,CACTolB,QADS,EAET,yBAFS,EAGT,CAAC,wCAAD,CAHS,EAIThqC,MAJF;;AAMAgqC,eAAW,wBAAiBplB,UAAjB,CACTolB,QADS,EAET,qBAFS,EAGT,8BAHS,EAIThqC,MAJF;;AAMA,QAAM+rC,WAAW70C,MAAMyxG,aAAN,CAAoB18D,aAApB,EAAjB;;AAEAjC,eAAW,wBAAiBplB,UAAjB,CACTolB,QADS,EAET,oBAFS,EAGT,yDAHS,EAIThqC,MAJF;;AAMAkqC,eAAW,wBAAiBtlB,UAAjB,CAA4BslB,QAA5B,EAAsC,oBAAtC,EAA4D,CACrE,gCADqE,EAErE,sBAFqE,EAGrE,sBAHqE,EAIrE,6BAJqE,EAKrE,kCALqE,CAA5D,EAMRlqC,MANH;AAOA,YAAQ+rC,QAAR;AACE,WAAK,CAAL;AACE7B,mBAAW,wBAAiBtlB,UAAjB,CACTslB,QADS,EAET,qBAFS,EAGT,CACE,0EADF,EAEE,kEAFF,CAHS,EAOTlqC,MAPF;AAQA;AACF,WAAK,CAAL;AACEkqC,mBAAW,wBAAiBtlB,UAAjB,CACTslB,QADS,EAET,qBAFS,EAGT,CACE,sDADF,EAEE,2CAFF,EAGE,gGAHF,CAHS,EAQTlqC,MARF;AASA;AACF;AACEkqC,mBAAW,wBAAiBtlB,UAAjB,CACTslB,QADS,EAET,qBAFS,EAGT,CACE,uEADF,EAEE,uEAFF,EAGE,mDAHF,EAIE,8DAJF,CAHS,EASTlqC,MATF;AAvBJ;;AAmCA,QAAI9I,MAAMywC,oBAAV,EAAgC;AAC9BuC,iBAAW,wBAAiBtlB,UAAjB,CACTslB,QADS,EAET,qBAFS,EAGT,2BAHS,EAITlqC,MAJF;AAKAkqC,iBAAW,wBAAiBtlB,UAAjB,CAA4BslB,QAA5B,EAAsC,sBAAtC,EAA8D,CACvE,0BADuE,EAEvE,iDAFuE,EAGvE,mCAHuE,EAIvE,iCAJuE,EAKvE,4CALuE,CAA9D,EAMRlqC,MANH;AAOD;;AAEDmoC,YAAQmB,MAAR,GAAiBU,QAAjB;AACA7B,YAAQuB,QAAR,GAAmBQ,QAAnB;AACD,GAtFD;;AAwFAlyC,YAAUi1C,uBAAV,GAAoC,UAACC,MAAD,EAASlF,GAAT,EAAcD,KAAd,EAAwB;AAC1D;AACA;AACA;AACA;AACA;;AAEA,QAAMgE,WAAW70C,MAAMyxG,aAAN,CAAoB18D,aAApB,EAAjB;;AAEA,QACE/0C,MAAMq3C,wBAAN,KAAmCr3C,MAAMywC,oBAAzC,IACAuF,OAAOsB,UAAP,OAAwB,CADxB,IAEAt3C,MAAM4xG,qBAAN,KAAgC/8D,QAHlC,EAIE;AACA70C,YAAMq3C,wBAAN,GAAiCr3C,MAAMywC,oBAAvC;AACAzwC,YAAM4xG,qBAAN,GAA8B/8D,QAA9B;AACA,aAAO,IAAP;AACD;;AAED,WAAO,KAAP;AACD,GApBD;;AAsBA/zC,YAAU02C,aAAV,GAA0B,UAACxB,MAAD,EAASlF,GAAT,EAAcD,KAAd,EAAwB;AAChD7wC,UAAMkzC,WAAN,GAAoB8C,MAApB;;AAEA;AACA,QAAIl1C,UAAUi1C,uBAAV,CAAkCC,MAAlC,EAA0ClF,GAA1C,EAA+CD,KAA/C,CAAJ,EAA2D;AACzD,UAAMI,UAAU,EAAEmB,QAAQ,IAAV,EAAgBI,UAAU,IAA1B,EAAgCI,UAAU,IAA1C,EAAhB;;AAEA9xC,gBAAUkwC,YAAV,CAAuBC,OAAvB,EAAgCH,GAAhC,EAAqCD,KAArC;;AAEA;AACA,UAAM4G,YAAYz3C,MAAMm1B,kBAAN,CACfuiB,cADe,GAEfC,uBAFe,CAGd1G,QAAQmB,MAHM,EAIdnB,QAAQuB,QAJM,EAKdvB,QAAQ2B,QALM,CAAlB;;AAQA;AACA,UAAI6E,cAAczB,OAAOsB,UAAP,EAAlB,EAAuC;AACrCtB,eAAO4B,UAAP,CAAkBH,SAAlB;AACA;AACAzB,eAAO6B,MAAP,GAAgBhf,wBAAhB;AACD;;AAEDmd,aAAOuB,mBAAP,GAA6B71C,QAA7B;AACD,KAtBD,MAsBO;AACL1B,YAAMm1B,kBAAN,CACGuiB,cADH,GAEGI,kBAFH,CAEsB9B,OAAOsB,UAAP,EAFtB;AAGD;;AAEDtB,WAAO6B,MAAP,GAAgBzqC,IAAhB;AACAtM,cAAUi3C,yBAAV,CAAoC/B,MAApC,EAA4ClF,GAA5C,EAAiDD,KAAjD;AACA/vC,cAAUm3C,yBAAV,CAAoCjC,MAApC,EAA4ClF,GAA5C,EAAiDD,KAAjD;AACA/vC,cAAUk3C,2BAAV,CAAsChC,MAAtC,EAA8ClF,GAA9C,EAAmDD,KAAnD;AACD,GApCD;;AAsCA/vC,YAAUi3C,yBAAV,GAAsC,UAAC/B,MAAD,EAASlF,GAAT,EAAcD,KAAd,EAAwB;AAC5D;;AAEA,QACEmF,OAAO3C,OAAP,GAAiBmF,eAAjB,OACCx4C,MAAMy4C,YAAN,GAAqBzC,OAAO0C,sBAAP,GAAgC92C,QAAhC,EAArB,IACCo0C,OAAOuB,mBAAP,GAA6B31C,QAA7B,KACEo0C,OAAO0C,sBAAP,GAAgC92C,QAAhC,EAHJ,CADF,EAKE;AACA,UAAIo0C,OAAOsB,UAAP,GAAoBxkB,eAApB,CAAoC,UAApC,CAAJ,EAAqD;AACnD,YACE,CAACkjB,OACE6B,MADF,GAEEc,iBAFF,CAGG3C,OAAOsB,UAAP,EAHH,EAIGtB,OAAO3C,OAAP,EAJH,EAKG,UALH,EAMG2C,OAAO3C,OAAP,GAAiBuF,eAAjB,EANH,EAOG5C,OAAO3C,OAAP,GAAiBwF,SAAjB,EAPH,EAQG74C,MAAMqJ,OAAN,CAAcmjB,KARjB,EASG,CATH,EAUGxsB,MAAMqJ,OAAN,CAAcwoG,KAVjB,CADH,EAaE;AACA72G,wBAAc,uCAAd;AACD;AACF;AACD,UACEg7C,OAAOsB,UAAP,GAAoBxkB,eAApB,CAAoC,UAApC,KACAkjB,OAAO3C,OAAP,GAAiBqB,eAAjB,EAFF,EAGE;AACA,YACE,CAACsB,OACE6B,MADF,GAEEc,iBAFF,CAGG3C,OAAOsB,UAAP,EAHH,EAIGtB,OAAO3C,OAAP,EAJH,EAKG,UALH,EAMG2C,OAAO3C,OAAP,GAAiBqB,eAAjB,EANH,EAOGsB,OAAO3C,OAAP,GAAiBwF,SAAjB,EAPH,EAQG74C,MAAMqJ,OAAN,CAAcmjB,KARjB,EASGwpB,OAAO3C,OAAP,GAAiB0F,mBAAjB,EATH,EAUG/4C,MAAMqJ,OAAN,CAAcwoG,KAVjB,CADH,EAaE;AACA72G,wBAAc,uCAAd;AACD;AACF;AACDg7C,aAAO0C,sBAAP,GAAgCh3C,QAAhC;AACD;;AAED,QAAM+3C,UAAUz5C,MAAMyxG,aAAN,CAAoBh5E,cAApB,EAAhB;AACAud,WAAOsB,UAAP,GAAoBxmB,WAApB,CAAgC,UAAhC,EAA4C2oB,OAA5C;;AAEA,QAAIq4D,KAAKjhE,MAAMsD,WAAN,GAAoB49D,cAApB,EAAT;AACA,QAAIC,KAAKnhE,MAAMsD,WAAN,GAAoB89D,aAApB,EAAT;AACA,QAAMC,OAAOrhE,MAAMsD,WAAN,GAAoBg+D,sBAApB,EAAb;AACA,QAAID,IAAJ,EAAU;AACR,UAAME,SAASF,KAAK3rF,QAAL,EAAf;AACAurF,WAAKM,OAAO,CAAP,IAAYA,OAAO,CAAP,CAAjB;AACAJ,WAAK,OAAOI,OAAO,CAAP,IAAYA,OAAO,CAAP,CAAnB,CAAL;AACD;AACD,QAAMC,gBAAgBryG,MAAMyxG,aAAN,CAAoBr2E,gBAApB,EAAtB;;AAEA,QAAMvlB,QAAQw8F,cAAcx8F,KAAd,GAAsBi8F,EAApC;AACA,QAAMz2E,QAAQ,CAACg3E,cAAch3E,KAAd,GAAsB22E,EAAvB,IAA6BF,EAA7B,GAAkC,GAAhD;;AAEA,QAAI9xG,MAAMywC,oBAAV,EAAgC;AAC9BuF,aACGsB,UADH,GAEGxmB,WAFH,CAEe,cAFf,EAE+B9wB,MAAM0wC,WAAN,GAAoB,CAApB,GAAwB,CAFvD;AAGD;;AAEDsF,WAAOsB,UAAP,GAAoB5mB,WAApB,CAAgC,OAAhC,EAAyC2K,KAAzC;AACA2a,WAAOsB,UAAP,GAAoB5mB,WAApB,CAAgC,OAAhC,EAAyC7a,KAAzC;;AAEA,QAAMy8F,eAAetyG,MAAMoqD,YAAN,CAAmB3xB,cAAnB,EAArB;AACAud,WAAOsB,UAAP,GAAoBxmB,WAApB,CAAgC,eAAhC,EAAiDwhF,YAAjD;AACD,GA9ED;;AAgFAxxG,YAAUm3C,yBAAV,GAAsC,UAACjC,MAAD,EAASlF,GAAT,EAAcD,KAAd,EAAwB;AAC5D,QAAM+I,UAAU5D,OAAOsB,UAAP,EAAhB;;AAEA,QAAMsE,UAAU57C,MAAMuxG,gBAAN,CAAuBr2D,cAAvB,EAAhB;AACA,QAAMnd,QAAQ/9B,MAAMq2C,YAApB;AACA,QAAMk8D,UAAUx0E,MAAMy0E,eAAN,EAAhB;AACA,mBAAKz2D,QAAL,CAAc/7C,MAAMyyG,QAApB,EAA8B72D,QAAQM,IAAtC,EAA4Cq2D,OAA5C;;AAEA,QAAMt3D,UAAUj7C,MAAMqwC,YAAN,CAAmB6K,cAAnB,CAAkCpK,GAAlC,CAAhB;AACA,mBAAKiL,QAAL,CAAc/7C,MAAMyyG,QAApB,EAA8Bx3D,QAAQO,IAAtC,EAA4Cx7C,MAAMyyG,QAAlD;;AAEA74D,YAAQxpB,gBAAR,CAAyB,YAAzB,EAAuCpwB,MAAMyyG,QAA7C;AACD,GAZD;;AAcA3xG,YAAUk3C,2BAAV,GAAwC,UAAChC,MAAD,EAASlF,GAAT,EAAcD,KAAd,EAAwB;AAC9D,QAAM+I,UAAU5D,OAAOsB,UAAP,EAAhB;;AAEA,QAAM6E,OAAOtL,MAAMsD,WAAN,EAAb;;AAEA,QAAMiI,UAAUD,KAAKE,UAAL,EAAhB;AACAzC,YAAQlpB,WAAR,CAAoB,gBAApB,EAAsC0rB,OAAtC;AACD,GAPD;;AASAt7C,YAAUk8C,gBAAV,GAA6B,UAAClM,GAAD,EAAMD,KAAN,EAAgB;AAC3C;AACA/vC,cAAUo8C,mBAAV,CAA8BpM,GAA9B,EAAmCD,KAAnC;;AAEA;AACA7wC,UAAMkzC,WAAN,GAAoB,IAApB;AACD,GAND;;AAQApyC,YAAUq8C,eAAV,GAA4B,UAACrM,GAAD,EAAMD,KAAN,EAAgB;AAC1C,QAAMwM,KAAKr9C,MAAMqJ,OAAjB;;AAEA;AACArJ,UAAMyxG,aAAN,CAAoB9lG,QAApB;AACA3L,UAAMoqD,YAAN,CAAmBz+C,QAAnB;;AAEA;AACA,QAAI3L,MAAMwxG,IAAN,CAAWn+D,OAAX,GAAqBmF,eAArB,EAAJ,EAA4C;AAC1C;AACA13C,gBAAU02C,aAAV,CAAwBx3C,MAAMwxG,IAA9B,EAAoC1gE,GAApC,EAAyCD,KAAzC;AACAwM,SAAGI,UAAH,CAAcJ,GAAGO,SAAjB,EAA4B,CAA5B,EAA+B59C,MAAMwxG,IAAN,CAAWn+D,OAAX,GAAqBmF,eAArB,EAA/B;AACAx4C,YAAMwxG,IAAN,CAAW35D,MAAX,GAAoBvoB,OAApB;AACD;;AAEDtvB,UAAMyxG,aAAN,CAAoBp6E,UAApB;AACAr3B,UAAMoqD,YAAN,CAAmB/yB,UAAnB;AACD,GAjBD;;AAmBAv2B,YAAU+8C,iBAAV,GAA8B,UAAC/M,GAAD,EAAMD,KAAN,EAAgB,CAAE,CAAhD;;AAEA/vC,YAAUiwC,WAAV,GAAwB,UAACD,GAAD,EAAMD,KAAN,EAAgB;AACtC;AACA;AACA;AACA;;AAEA/vC,cAAUi9C,WAAV,CAAsB,EAAE15C,MAAM,YAAR,EAAtB;AACArE,UAAMqqB,UAAN,CAAiBlkB,MAAjB;AACAnG,UAAMq2C,YAAN,GAAqBr2C,MAAMqqB,UAAN,CAAiB1kB,YAAjB,EAArB;AACA7E,cAAUi9C,WAAV,CAAsB,EAAE15C,MAAM,UAAR,EAAtB;;AAEA,QAAI,CAACrE,MAAMq2C,YAAX,EAAyB;AACvBr7C,oBAAc,WAAd;AACA;AACD;;AAED8F,cAAUk8C,gBAAV,CAA2BlM,GAA3B,EAAgCD,KAAhC;AACA/vC,cAAUq8C,eAAV,CAA0BrM,GAA1B,EAA+BD,KAA/B;AACA/vC,cAAU+8C,iBAAV,CAA4B/M,GAA5B,EAAiCD,KAAjC;AACD,GAnBD;;AAqBA/vC,YAAU49C,aAAV,GAA0B,UAAC5N,GAAD,EAAMD,KAAN,EAAgB;AACxC,QAAI,CAAC/vC,UAAU69C,QAAV,EAAL,EAA2B;AACzB,qBAAQj8B,kBAAR,CAA2B1iB,MAAM2iB,MAAjC;AACA;AACD;AACD3iB,UAAM2iB,MAAN,GAAe7hB,UAAU69C,QAAV,GAAqBna,SAArB,EAAf;AACD,GAND;;AAQA1jC,YAAUo8C,mBAAV,GAAgC,UAACpM,GAAD,EAAMD,KAAN,EAAgB;AAC9C;AACA,QAAI/vC,UAAU89C,6BAAV,CAAwC9N,GAAxC,EAA6CD,KAA7C,CAAJ,EAAyD;AACvD/vC,gBAAU+9C,kBAAV,CAA6B/N,GAA7B,EAAkCD,KAAlC;AACD;AACF,GALD;;AAOA/vC,YAAU89C,6BAAV,GAA0C,UAAC9N,GAAD,EAAMD,KAAN,EAAgB;AACxD;AACA,QACE7wC,MAAMy4C,YAAN,CAAmB72C,QAAnB,KAAgCd,UAAUc,QAAV,EAAhC,IACA5B,MAAMy4C,YAAN,CAAmB72C,QAAnB,KAAgCivC,MAAMjvC,QAAN,EADhC,IAEA5B,MAAMy4C,YAAN,CAAmB72C,QAAnB,KAAgC5B,MAAMqqB,UAAN,CAAiBzoB,QAAjB,EAFhC,IAGA5B,MAAMy4C,YAAN,CAAmB72C,QAAnB,KAAgCivC,MAAMsD,WAAN,GAAoBvyC,QAApB,EAHhC,IAIA5B,MAAMy4C,YAAN,CAAmB72C,QAAnB,KAAgC5B,MAAMq2C,YAAN,CAAmBz0C,QAAnB,EALlC,EAME;AACA,aAAO,IAAP;AACD;AACD,WAAO,KAAP;AACD,GAZD;;AAcAd,YAAU+9C,kBAAV,GAA+B,UAAC/N,GAAD,EAAMD,KAAN,EAAgB;AAC7C,QAAM9S,QAAQ/9B,MAAMq2C,YAApB;;AAEA,QAAItY,UAAU,IAAd,EAAoB;AAClB;AACD;;AAED;AACA,QAAM20E,QAAQ7hE,MAAMsD,WAAN,GAAoBw+D,oBAApB,EAAd;AACA,QAAID,UAAU,8BAAkB78E,OAAhC,EAAyC;AACvC71B,YAAMoqD,YAAN,CAAmB30B,qBAAnB,CAAyC,mBAAOI,OAAhD;AACA71B,YAAMoqD,YAAN,CAAmBx0B,sBAAnB,CAA0C,mBAAOC,OAAjD;AACD,KAHD,MAGO;AACL71B,YAAMoqD,YAAN,CAAmB30B,qBAAnB,CAAyC,mBAAOE,MAAhD;AACA31B,YAAMoqD,YAAN,CAAmBx0B,sBAAnB,CAA0C,mBAAOD,MAAjD;AACD;;AAED,QAAMi9E,SAAS,IAAf;AACA,QAAMC,SAAS,IAAIz0G,UAAJ,CAAew0G,SAAS,CAAxB,CAAf;AACA,QAAMV,OAAOrhE,MAAMsD,WAAN,GAAoBg+D,sBAApB,EAAb;AACA,QAAID,IAAJ,EAAU;AACR,UAAMY,oBAAkBZ,KAAKtwG,QAAL,EAAxB;AACA,UAAI5B,MAAM+yG,kBAAN,KAA6BD,YAAjC,EAA+C;AAC7C,YAAMV,SAASF,KAAK3rF,QAAL,EAAf;AACA,YAAMysF,UAAU,IAAI90G,YAAJ,CAAiB00G,SAAS,CAA1B,CAAhB;AACAV,aAAKe,QAAL,CAAcb,OAAO,CAAP,CAAd,EAAyBA,OAAO,CAAP,CAAzB,EAAoCQ,MAApC,EAA4CI,OAA5C,EAAqD,CAArD;AACA,aAAK,IAAIhuG,IAAI,CAAb,EAAgBA,IAAI4tG,SAAS,CAA7B,EAAgC,EAAE5tG,CAAlC,EAAqC;AACnC6tG,iBAAO7tG,CAAP,IAAY,QAAQguG,QAAQhuG,CAAR,CAApB;AACD;AACDhF,cAAM+yG,kBAAN,GAA2BD,YAA3B;AACA9yG,cAAMoqD,YAAN,CAAmBjzB,eAAnB,CACEy7E,MADF,EAEE,CAFF,EAGE,CAHF,EAIE,yBAAazmF,aAJf,EAKE0mF,MALF;AAOD;AACF,KAlBD,MAkBO;AACL,UAAMC,gBAAe,GAArB;AACA,UAAI9yG,MAAM+yG,kBAAN,KAA6BD,aAAjC,EAA+C;AAC7C,aAAK,IAAI9tG,KAAI,CAAb,EAAgBA,KAAI4tG,SAAS,CAA7B,EAAgC,EAAE5tG,EAAlC,EAAqC;AACnC6tG,iBAAO7tG,EAAP,IAAY,QAAQA,EAAR,IAAa,CAAC4tG,SAAS,CAAV,IAAe,CAA5B,CAAZ;AACAC,iBAAO7tG,KAAI,CAAX,IAAgB,QAAQA,EAAR,IAAa,CAAC4tG,SAAS,CAAV,IAAe,CAA5B,CAAhB;AACAC,iBAAO7tG,KAAI,CAAX,IAAgB,QAAQA,EAAR,IAAa,CAAC4tG,SAAS,CAAV,IAAe,CAA5B,CAAhB;AACD;AACD5yG,cAAM+yG,kBAAN,GAA2BD,aAA3B;AACA9yG,cAAMoqD,YAAN,CAAmBjzB,eAAnB,CACEy7E,MADF,EAEE,CAFF,EAGE,CAHF,EAIE,yBAAazmF,aAJf,EAKE0mF,MALF;AAOD;AACF;;AAED;;AAzD6C,gCA0DzB7yG,MAAMqqB,UAAN,CAAiB6oF,iBAAjB,EA1DyB;AAAA,QA0DrCC,OA1DqC,yBA0DrCA,OA1DqC;;AA4D7C;;;AACA,QAAIC,SAASpzG,MAAMqqB,UAAN,CAAiBgpF,QAAjB,EAAb;AACA,QAAIF,YAAYnzG,MAAMqqB,UAAN,CAAiBipF,cAAjB,EAAhB,EAAmD;AACjD;AACAF,eAASpzG,MAAMqqB,UAAN,CAAiBkpF,kBAAjB,CAAoCH,MAApC,CAAT;AACD;;AAED;AACA,QAAMx8E,MAAMmH,MAAMlH,SAAN,EAAZ;AACA,QAAI28E,oBAAJ;AACA,QAAIL,YAAY9B,YAAYoC,CAA5B,EAA+B;AAC7BD,oBAAcJ,SAASx8E,IAAI,CAAJ,CAAvB;AACD;AACD,QAAIu8E,YAAY9B,YAAYqC,CAA5B,EAA+B;AAC7BF,oBAAcJ,SAASx8E,IAAI,CAAJ,CAAvB;AACD;AACD,QAAIu8E,YAAY9B,YAAYsC,CAAxB,IAA6BR,YAAY9B,YAAYuC,IAAzD,EAA+D;AAC7DJ,oBAAcJ,SAASx8E,IAAI,CAAJ,CAAvB;AACD;;AAED;AACA,QAAMzP,WAAcisF,MAAd,SAAwBr1E,MAAMn8B,QAAN,EAAxB,SAA4Cm8B,MAC/CrH,YAD+C,GAE/CC,UAF+C,GAG/C/0B,QAH+C,EAA5C,SAGWd,UAAUc,QAAV,EAHX,SAGmC5B,MAAMqqB,UAAN,CAAiBipF,cAAjB,EAHnC,SAGwEziE,MAC3EsD,WAD2E,GAE3EvyC,QAF2E,EAH9E;AAMA,QAAI5B,MAAMq/C,cAAN,KAAyBl4B,QAA7B,EAAuC;AACrC;AACA,UAAM+kC,OAAOnuB,MAAMkuB,aAAN,EAAb;AACA,UAAM4nD,gBAAgB91E,MACnBrH,YADmB,GAEnBC,UAFmB,GAGnBlP,qBAHmB,EAAtB;AAIA,UAAIirF,UAAU,8BAAkB78E,OAAhC,EAAyC;AACvC,YAAIg+E,kBAAkB,CAAtB,EAAyB;AACvB7zG,gBAAMyxG,aAAN,CAAoBqC,iBAApB,CAAsC,IAAtC;AACA9zG,gBAAMyxG,aAAN,CAAoBh8E,qBAApB,CAA0C,mBAAOI,OAAjD;AACD,SAHD,MAGO;AACL71B,gBAAMyxG,aAAN,CAAoBh8E,qBAApB,CAA0C,mBAAOI,OAAjD;AACD;AACD71B,cAAMyxG,aAAN,CAAoB77E,sBAApB,CAA2C,mBAAOC,OAAlD;AACD,OARD,MAQO;AACL,YAAIg+E,kBAAkB,CAAtB,EAAyB;AACvB7zG,gBAAMyxG,aAAN,CAAoBqC,iBAApB,CAAsC,IAAtC;AACA9zG,gBAAMyxG,aAAN,CAAoBh8E,qBAApB,CACE,mBAAOC,oBADT;AAGD,SALD,MAKO;AACL11B,gBAAMyxG,aAAN,CAAoBh8E,qBAApB,CAA0C,mBAAOE,MAAjD;AACD;AACD31B,cAAMyxG,aAAN,CAAoB77E,sBAApB,CAA2C,mBAAOD,MAAlD;AACD;AACD31B,YAAMyxG,aAAN,CAAoBx7E,QAApB,CAA6B,iBAAK0F,aAAlC;AACA37B,YAAMyxG,aAAN,CAAoBv7E,QAApB,CAA6B,iBAAKyF,aAAlC;AACA,UAAM20E,UAAUvyE,MACbrH,YADa,GAEbC,UAFa,GAGblP,qBAHa,EAAhB;AAIA,UAAM8zE,YAAYrvC,KAAK,CAAL,IAAUA,KAAK,CAAL,CAAV,GAAoBokD,OAAtC;;AAEA,UAAMyD,WAAW,IAAI71G,YAAJ,CAAiB,EAAjB,CAAjB;AACA,UAAM81G,cAAc,IAAI91G,YAAJ,CAAiB,CAAjB,CAApB;AACA,WAAK,IAAI8G,MAAI,CAAb,EAAgBA,MAAI,CAApB,EAAuBA,KAAvB,EAA4B;AAC1BgvG,oBAAYhvG,MAAI,CAAhB,IAAqBA,MAAI,CAAJ,GAAQ,GAAR,GAAc,GAAnC;AACAgvG,oBAAYhvG,MAAI,CAAJ,GAAQ,CAApB,IAAyBA,MAAI,CAAJ,GAAQ,GAAR,GAAc,GAAvC;AACD;;AAED,UAAMivG,eAAel2E,MAClBrH,YADkB,GAElBC,UAFkB,GAGlBrO,OAHkB,EAArB;AAIA,UAAI2O,UAAU,IAAd;AACA;AACA,UAAIk8E,YAAY9B,YAAYoC,CAA5B,EAA+B;AAC7Bx8E,kBAAU,IAAIg9E,aAAa1rG,WAAjB,CAA6B2jD,KAAK,CAAL,IAAUA,KAAK,CAAL,CAAvC,CAAV;AACA,YAAI3/C,KAAK,CAAT;AACA,aAAK,IAAInB,IAAI,CAAb,EAAgBA,IAAI8gD,KAAK,CAAL,CAApB,EAA6B9gD,GAA7B,EAAkC;AAChC,eAAK,IAAI0H,IAAI,CAAb,EAAgBA,IAAIo5C,KAAK,CAAL,CAApB,EAA6Bp5C,GAA7B,EAAkC;AAChCvG,iBAAKnB,IAAI8gD,KAAK,CAAL,CAAJ,GAAcp5C,CAAnB;AACAmkB,oBAAQ1qB,EAAR,IACE0nG,aAAaT,cAAc1gG,IAAIo5C,KAAK,CAAL,CAAlB,GAA4B9gD,IAAI8gD,KAAK,CAAL,CAAJ,GAAcA,KAAK,CAAL,CAAvD,CADF;AAED;AACF;AACDA,aAAK,CAAL,IAAUA,KAAK,CAAL,CAAV;AACAA,aAAK,CAAL,IAAUA,KAAK,CAAL,CAAV;AACA6nD,iBAAS,CAAT,IAAcX,MAAd;AACAW,iBAAS,CAAT,IAAcn9E,IAAI,CAAJ,CAAd;AACAm9E,iBAAS,CAAT,IAAcn9E,IAAI,CAAJ,CAAd;AACAm9E,iBAAS,CAAT,IAAcX,MAAd;AACAW,iBAAS,CAAT,IAAcn9E,IAAI,CAAJ,CAAd;AACAm9E,iBAAS,CAAT,IAAcn9E,IAAI,CAAJ,CAAd;AACAm9E,iBAAS,CAAT,IAAcX,MAAd;AACAW,iBAAS,CAAT,IAAcn9E,IAAI,CAAJ,CAAd;AACAm9E,iBAAS,CAAT,IAAcn9E,IAAI,CAAJ,CAAd;AACAm9E,iBAAS,CAAT,IAAcX,MAAd;AACAW,iBAAS,EAAT,IAAen9E,IAAI,CAAJ,CAAf;AACAm9E,iBAAS,EAAT,IAAen9E,IAAI,CAAJ,CAAf;AACD,OAxBD,MAwBO,IAAIu8E,YAAY9B,YAAYqC,CAA5B,EAA+B;AACpCz8E,kBAAU,IAAIg9E,aAAa1rG,WAAjB,CAA6B2jD,KAAK,CAAL,IAAUA,KAAK,CAAL,CAAvC,CAAV;AACA,YAAI3/C,MAAK,CAAT;AACA,aAAK,IAAInB,KAAI,CAAb,EAAgBA,KAAI8gD,KAAK,CAAL,CAApB,EAA6B9gD,IAA7B,EAAkC;AAChC,eAAK,IAAIpG,MAAI,CAAb,EAAgBA,MAAIknD,KAAK,CAAL,CAApB,EAA6BlnD,KAA7B,EAAkC;AAChCuH,kBAAKnB,KAAI8gD,KAAK,CAAL,CAAJ,GAAclnD,GAAnB;AACAiyB,oBAAQ1qB,GAAR,IACE0nG,aAAajvG,MAAIwuG,cAActnD,KAAK,CAAL,CAAlB,GAA4B9gD,KAAI8gD,KAAK,CAAL,CAAJ,GAAcA,KAAK,CAAL,CAAvD,CADF;AAED;AACF;AACDA,aAAK,CAAL,IAAUA,KAAK,CAAL,CAAV;AACA6nD,iBAAS,CAAT,IAAcn9E,IAAI,CAAJ,CAAd;AACAm9E,iBAAS,CAAT,IAAcX,MAAd;AACAW,iBAAS,CAAT,IAAcn9E,IAAI,CAAJ,CAAd;AACAm9E,iBAAS,CAAT,IAAcn9E,IAAI,CAAJ,CAAd;AACAm9E,iBAAS,CAAT,IAAcX,MAAd;AACAW,iBAAS,CAAT,IAAcn9E,IAAI,CAAJ,CAAd;AACAm9E,iBAAS,CAAT,IAAcn9E,IAAI,CAAJ,CAAd;AACAm9E,iBAAS,CAAT,IAAcX,MAAd;AACAW,iBAAS,CAAT,IAAcn9E,IAAI,CAAJ,CAAd;AACAm9E,iBAAS,CAAT,IAAcn9E,IAAI,CAAJ,CAAd;AACAm9E,iBAAS,EAAT,IAAeX,MAAf;AACAW,iBAAS,EAAT,IAAen9E,IAAI,CAAJ,CAAf;AACD,OAvBM,MAuBA,IAAIu8E,YAAY9B,YAAYsC,CAAxB,IAA6BR,YAAY9B,YAAYuC,IAAzD,EAA+D;AACpE38E,kBAAUg9E,aAAaC,QAAb,CACRV,cAAcjY,SADN,EAER,CAACiY,cAAc,CAAf,IAAoBjY,SAFZ,CAAV;AAIAwY,iBAAS,CAAT,IAAcn9E,IAAI,CAAJ,CAAd;AACAm9E,iBAAS,CAAT,IAAcn9E,IAAI,CAAJ,CAAd;AACAm9E,iBAAS,CAAT,IAAcX,MAAd;AACAW,iBAAS,CAAT,IAAcn9E,IAAI,CAAJ,CAAd;AACAm9E,iBAAS,CAAT,IAAcn9E,IAAI,CAAJ,CAAd;AACAm9E,iBAAS,CAAT,IAAcX,MAAd;AACAW,iBAAS,CAAT,IAAcn9E,IAAI,CAAJ,CAAd;AACAm9E,iBAAS,CAAT,IAAcn9E,IAAI,CAAJ,CAAd;AACAm9E,iBAAS,CAAT,IAAcX,MAAd;AACAW,iBAAS,CAAT,IAAcn9E,IAAI,CAAJ,CAAd;AACAm9E,iBAAS,EAAT,IAAen9E,IAAI,CAAJ,CAAf;AACAm9E,iBAAS,EAAT,IAAeX,MAAf;AACD,OAjBM,MAiBA;AACLp4G,sBAAc,qCAAd;AACD;;AAEDgF,YAAMyxG,aAAN,CAAoBt6E,eAApB,CACE+0B,KAAK,CAAL,CADF,EAEEA,KAAK,CAAL,CAFF,EAGEokD,OAHF,EAIEvyE,MACGrH,YADH,GAEGC,UAFH,GAGG3P,WAHH,EAJF,EAQEiQ,OARF;AAUAj3B,YAAMyxG,aAAN,CAAoB9lG,QAApB;AACA3L,YAAMyxG,aAAN,CAAoBj7E,cAApB;AACAx2B,YAAMyxG,aAAN,CAAoBp6E,UAApB;;AAEA,UAAM4T,SAAS,oBAAajvC,WAAb,CAAyB;AACtC0qB,4BAAoB,CADkB;AAEtCjZ,gBAAQsmG;AAF8B,OAAzB,CAAf;AAIA9oE,aAAOkpE,OAAP,CAAe,QAAf;AACA,UAAMh1D,UAAU,oBAAanjD,WAAb,CAAyB;AACvC0qB,4BAAoB,CADmB;AAEvCjZ,gBAAQumG;AAF+B,OAAzB,CAAhB;AAIA70D,cAAQg1D,OAAR,CAAgB,SAAhB;;AAEA,UAAMnO,YAAY,IAAI1nG,WAAJ,CAAgB,CAAhB,CAAlB;AACA0nG,gBAAU,CAAV,IAAe,CAAf;AACAA,gBAAU,CAAV,IAAe,CAAf;AACAA,gBAAU,CAAV,IAAe,CAAf;AACAA,gBAAU,CAAV,IAAe,CAAf;AACAA,gBAAU,CAAV,IAAe,CAAf;AACAA,gBAAU,CAAV,IAAe,CAAf;AACAA,gBAAU,CAAV,IAAe,CAAf;AACAA,gBAAU,CAAV,IAAe,CAAf;AACA,UAAMoO,QAAQ,oBAAap4G,WAAb,CAAyB;AACrC0qB,4BAAoB,CADiB;AAErCjZ,gBAAQu4F;AAF6B,OAAzB,CAAd;;AAKAhmG,YAAMwxG,IAAN,CAAWn+D,OAAX,GAAqBqM,SAArB,CAA+B00D,KAA/B,EAAsC,OAAtC,EAA+C,2BAAev/E,OAA9D,EAAuE;AACrEoW,sBADqE;AAErEkU,wBAFqE;AAGrEM,oBAAY;AAHyD,OAAvE;AAKAz/C,YAAMy4C,YAAN,CAAmB/2C,QAAnB;AACA1B,YAAMq/C,cAAN,GAAuBl4B,QAAvB;AACD;AACF,GAzPD;AA0PD;;AAED;AACA;AACA;;AAEA,IAAMmC,iBAAiB;AACrBmvB,gBAAc,CADO;AAErB4G,kBAAgB,IAFK;AAGrBoyD,iBAAe,IAHM;AAIrBD,QAAM,IAJe;AAKrBiB,YAAU,IALW;AAMrBroD,gBAAc,IANO;AAOrB/S,4BAA0B,KAPL;AAQrB5G,wBAAsB,KARD;AASrBmhE,yBAAuB;AATF,CAAvB;;AAYA;;AAEO,SAAStpG,MAAT,CAAgBxH,SAAhB,EAA2Bd,KAA3B,EAAsD;AAAA,MAApBwI,aAAoB,uEAAJ,EAAI;;AAC3DvI,SAAOgD,MAAP,CAAcjD,KAAd,EAAqBspB,cAArB,EAAqC9gB,aAArC;;AAEA;AACA,qBAAYF,MAAZ,CAAmBxH,SAAnB,EAA8Bd,KAA9B,EAAqCwI,aAArC;;AAEAxI,QAAMwxG,IAAN,GAAa,iBAAUx1G,WAAV,EAAb;AACAgE,QAAMyxG,aAAN,GAAsB,kBAAiBz1G,WAAjB,EAAtB;AACAgE,QAAMoqD,YAAN,GAAqB,kBAAiBpuD,WAAjB,EAArB;;AAEAgE,QAAMyyG,QAAN,GAAiB,eAAK32D,MAAL,EAAjB;;AAEA;AACA,kBAAMpgD,MAAN,CAAaoF,SAAb,EAAwBd,KAAxB,EAA+B,EAA/B;;AAEAA,QAAMy4C,YAAN,GAAqB,EAArB;AACA,kBAAMl9C,GAAN,CAAUyE,MAAMy4C,YAAhB;;AAEA;AACA64D,uBAAqBxwG,SAArB,EAAgCd,KAAhC;AACD;;AAED;;AAEO,IAAMhE,oCAAc,gBAAMA,WAAN,CAAkBsM,MAAlB,EAA0B,sBAA1B,CAApB;;AAEP;;kBAEe,EAAEtM,wBAAF,EAAesM,cAAf,E;;;;;;;;;;;;ACntBR,IAAM+oG,oCAAc;AACzBuC,QAAM,CAAC,CADkB;AAEzBH,KAAG,CAFsB;AAGzBC,KAAG,CAHsB;AAIzBC,KAAG,CAJsB;AAKzBU,KAAG,CALsB;AAMzBC,KAAG,CANsB;AAOzBC,KAAG;AAPsB,CAApB;;kBAUQ;AACblD;AADa,C;;;;;;;;;;;;ACVR,IAAMmD,gDAAoB;AAC/B3+E,WAAS,CADsB;AAE/BF,UAAQ;AAFuB,CAA1B;;kBAKQ;AACb6+E;AADa,C;;;;;;;;;;;;;QC4HClsG,M,GAAAA,M;;AAjIhB;;AAEA;;;;AACA;;;;;;AAEA;AACA;AACA;;AAEA,SAASmsG,mBAAT,CAA6B3zG,SAA7B,EAAwCd,KAAxC,EAA+C;AAC7C;AACAA,QAAMkB,cAAN,CAAqBxB,IAArB,CAA0B,qBAA1B;;AAEA;AACAoB,YAAUqvC,SAAV,GAAsB,UAACxmB,OAAD,EAAa;AACjC,QAAI,CAAC3pB,MAAMqqB,UAAP,IAAqB,CAACrqB,MAAMqqB,UAAN,CAAiBovD,aAAjB,EAA1B,EAA4D;AAC1D;AACD;AACD,QAAI9vD,OAAJ,EAAa;AACX,UAAI,CAAC3pB,MAAMqqB,UAAX,EAAuB;AACrB;AACD;;AAEDvpB,gBAAUqqB,YAAV;AACArqB,gBAAU4pB,cAAV,CAAyB1qB,MAAMqqB,UAAN,CAAiBsyE,SAAjB,EAAzB;AACA77F,gBAAUuqB,iBAAV;AACD;AACF,GAbD;;AAeAvqB,YAAUi8F,yBAAV,GAAsC,UAACjzE,UAAD,EAAgB;AACpDhpB,cAAUk8F,kBAAV,CAA6BlzE,UAA7B;AACD,GAFD;;AAIA;AACAhpB,YAAUk8F,kBAAV,GAA+B,UAAClzE,UAAD,EAAgB;AAC7C,QACE,CAAC9pB,MAAMqqB,UAAP,IACA,CAACrqB,MAAMqqB,UAAN,CAAiBovD,aAAjB,EADD,IAEA,CAACz5E,MAAMqqB,UAAN,CAAiBogB,WAAjB,EAHH,EAIE;AACA;AACD;;AAED3pC,cAAUoH,KAAV,CAAgB4hB,UAAhB,EAA4B,IAA5B;AACA9pB,UAAMkL,QAAN,CAAehO,OAAf,CAAuB,UAACotB,KAAD,EAAW;AAChCA,YAAMT,QAAN,CAAeC,UAAf;AACD,KAFD;AAGAhpB,cAAUoH,KAAV,CAAgB4hB,UAAhB,EAA4B,KAA5B;AACD,GAdD;;AAgBA;AACAhpB,YAAUm8F,uBAAV,GAAoC,UAACnzE,UAAD,EAAgB;AAClD,QACE,CAAC9pB,MAAMqqB,UAAP,IACA,CAACrqB,MAAMqqB,UAAN,CAAiBovD,aAAjB,EADD,IAEAz5E,MAAMqqB,UAAN,CAAiBogB,WAAjB,EAHF,EAIE;AACA;AACD;;AAED3pC,cAAUoH,KAAV,CAAgB4hB,UAAhB,EAA4B,IAA5B;AACA9pB,UAAMkL,QAAN,CAAehO,OAAf,CAAuB,UAACotB,KAAD,EAAW;AAChCA,YAAMT,QAAN,CAAeC,UAAf;AACD,KAFD;AAGAhpB,cAAUoH,KAAV,CAAgB4hB,UAAhB,EAA4B,KAA5B;AACD,GAdD;;AAgBAhpB,YAAUq8F,SAAV,GAAsB,UAACxzE,OAAD,EAAUG,UAAV,EAAyB;AAC7C,QAAIH,OAAJ,EAAa;AACX,UAAI,CAAC3pB,MAAMqqB,UAAP,IAAqB,CAACrqB,MAAMqqB,UAAN,CAAiBovD,aAAjB,EAA1B,EAA4D;AAC1D;AACD;AACD,UAAIz5E,MAAMqqB,UAAN,CAAiBogB,WAAjB,EAAJ,EAAoC;AAClC3gB,mBAAWixE,yBAAX;AACD,OAFD,MAEO;AACLjxE,mBAAWkxE,8BAAX;AACD;AACF;AACF,GAXD;;AAaAl6F,YAAU0vC,iBAAV,GAA8B,UAAC7mB,OAAD,EAAUG,UAAV;AAAA,WAC5BhpB,UAAU6vC,UAAV,CAAqBhnB,OAArB,EAA8BG,UAA9B,CAD4B;AAAA,GAA9B;;AAGA;AACAhpB,YAAU6vC,UAAV,GAAuB,UAAChnB,OAAD,EAAUG,UAAV,EAAyB;AAC9C,QAAIH,OAAJ,EAAa;AACX3pB,YAAMqJ,OAAN,GAAgBvI,UACb0pB,sBADa,CACU,uBADV,EAEb8K,UAFa,EAAhB;AAGAt1B,YAAMqJ,OAAN,CAAcuiE,SAAd,CAAwB,IAAxB;AACD;AACF,GAPD;;AASA;AACA9qE,YAAUyvC,eAAV,GAA4B,UAAC5mB,OAAD,EAAUG,UAAV,EAAyB;AACnD,QAAIH,OAAJ,EAAa;AACX3pB,YAAMqJ,OAAN,GAAgBvI,UACb0pB,sBADa,CACU,uBADV,EAEb8K,UAFa,EAAhB;AAGAt1B,YAAMqJ,OAAN,CAAcuiE,SAAd,CAAwB,KAAxB;AACD,KALD,MAKO;AACL5rE,YAAMqJ,OAAN,CAAcuiE,SAAd,CAAwB,IAAxB;AACD;AACF,GATD;;AAWA9qE,YAAUo6C,cAAV,GAA2B,YAAM;AAC/B;AACA,QAAIl7C,MAAMqqB,UAAN,CAAiBzoB,QAAjB,KAA8B5B,MAAMo9F,aAAN,CAAoBx7F,QAApB,EAAlC,EAAkE;AAChE,qBAAKurD,IAAL,CAAUntD,MAAMq9F,WAAN,CAAkBnhD,IAA5B,EAAkCl8C,MAAMqqB,UAAN,CAAiBivB,SAAjB,EAAlC;AACA,qBAAKkB,SAAL,CAAex6C,MAAMq9F,WAAN,CAAkBnhD,IAAjC,EAAuCl8C,MAAMq9F,WAAN,CAAkBnhD,IAAzD;AACAl8C,YAAMo9F,aAAN,CAAoB17F,QAApB;AACD;;AAED,WAAO1B,MAAMq9F,WAAb;AACD,GATD;AAUD;;AAED;AACA;AACA;;AAEA,IAAM/zE,iBAAiB;AACrBjgB,WAAS,IADY;AAErB+zF,iBAAe,IAFM;AAGrBC,eAAa;AAHQ,CAAvB;;AAMA;;AAEO,SAAS/0F,MAAT,CAAgBxH,SAAhB,EAA2Bd,KAA3B,EAAsD;AAAA,MAApBwI,aAAoB,uEAAJ,EAAI;;AAC3DvI,SAAOgD,MAAP,CAAcjD,KAAd,EAAqBspB,cAArB,EAAqC9gB,aAArC;;AAEA;AACA,qBAAYF,MAAZ,CAAmBxH,SAAnB,EAA8Bd,KAA9B,EAAqCwI,aAArC;;AAEAxI,QAAMo9F,aAAN,GAAsB,EAAtB;AACA,kBAAM7hG,GAAN,CAAUyE,MAAMo9F,aAAhB,EAA+B,EAAEn8F,OAAO,CAAT,EAA/B;AACAjB,QAAMq9F,WAAN,GAAoB;AAClBnhD,UAAM,eAAKJ,MAAL;AADY,GAApB;;AAIA;AACA,kBAAMpgD,MAAN,CAAaoF,SAAb,EAAwBd,KAAxB,EAA+B,CAAC,SAAD,CAA/B;;AAEA;AACAy0G,sBAAoB3zG,SAApB,EAA+Bd,KAA/B;AACD;;AAED;;AAEO,IAAMhE,oCAAc,gBAAMA,WAAN,CAAkBsM,MAAlB,EAA0B,qBAA1B,CAApB;;AAEP;;kBAEe,EAAEtM,wBAAF,EAAesM,cAAf,E;;;;;;;;;;;;;QCzDCA,M,GAAAA,M;;AA/FhB;;;;AACA;;;;;;AAHA;;IAKQvN,a,mBAAAA,a;;AAER;AACA;AACA;;AAEA,SAAS25G,iCAAT,CAA2C5zG,SAA3C,EAAsDd,KAAtD,EAA6D;AAC3DA,QAAMkB,cAAN,CAAqBxB,IAArB,CAA0B,mCAA1B;;AAEAoB,YAAU6vC,UAAV,GAAuB,UAAChnB,OAAD,EAAUG,UAAV,EAAyB;AAC9C9pB,UAAMo1B,cAAN,GAAuBt0B,UAAU0pB,sBAAV,CACrB,mBADqB,CAAvB;AAGAxqB,UAAMm1B,kBAAN,GAA2Bn1B,MAAMo1B,cAAN,CAAqBC,SAArB,EAA3B;AACA,QAAM4oE,cAAcj+F,MAAMo1B,cAAN,CAAqB8oE,cAArB,EAApB;AACA,QAAMznB,SAASz2E,MAAMo1B,cAAN,GACXp1B,MAAMo1B,cAAN,CAAqB7J,aAArB,GAAqC+kB,eAArC,EADW,GAEX,IAFJ;AAGA,QAAMktD,QAAQx9F,MAAMo1B,cAAN,CAAqBqoE,qBAArB,EAAd;AACA,QAAIkX,SAAS,IAAb;;AAEA,QAAI30G,MAAMqqB,UAAN,CAAiBuqF,aAAjB,EAAJ,EAAsC;AACpC,UAAMC,MAAM/qF,WAAW+wE,iBAAX,EAAZ;AACA,UAAMpjE,QAAQ93B,KAAKC,KAAL,CAAWi1G,IAAIhzE,QAAJ,EAAX,CAAd;AACA,UAAMnK,SAAS/3B,KAAKC,KAAL,CAAWi1G,IAAI/yE,SAAJ,EAAX,CAAf;;AAEA,UAAMub,KAAKr9C,MAAMm1B,kBAAN,CAAyBG,UAAzB,EAAX;AACAu/E,UAAIznG,IAAJ;;AAEA;AACA,UAAM0nG,KAAKhrF,WAAWirF,cAAX,EAAX;AACA,UAAI,CAACD,EAAL,EAAS;AACP/5G,sBAAc,gCAAd;AACD,OAFD,MAEO;AACL;AACA+5G,WAAGxrD,6BAAH;AACD;;AAED,UAAMiW,cAAcliB,GAAGgN,iBAAH,EAApB;AACAhN,SAAG4M,eAAH,CAAmB5M,GAAGgM,WAAtB,EAAmCkW,WAAnC;AACAliB,SAAGkN,oBAAH,CACElN,GAAGgM,WADL,EAEEhM,GAAGmN,iBAFL,EAGEnN,GAAGhkB,UAHL,EAIEw7E,IAAI5hF,SAAJ,EAJF,EAKE,CALF;;AAQA,UACEoqB,GAAGmiB,sBAAH,CAA0BniB,GAAGgM,WAA7B,MAA8ChM,GAAGoiB,oBADnD,EAEE;AACAk1C,iBAAS,IAAIv2G,UAAJ,CAAeq5B,QAAQC,MAAR,GAAiB,CAAhC,CAAT;AACA2lB,WAAGmkB,QAAH,CAAY,CAAZ,EAAe,CAAf,EAAkB/pC,KAAlB,EAAyBC,MAAzB;AACA2lB,WAAGylB,UAAH,CAAc,CAAd,EAAiB,CAAjB,EAAoBrrC,KAApB,EAA2BC,MAA3B,EAAmC2lB,GAAGziB,IAAtC,EAA4CyiB,GAAGpiB,aAA/C,EAA8D05E,MAA9D;AACD;;AAED;AACA,UAAIG,EAAJ,EAAQ;AACNA,WAAGhrD,iCAAH;AACD;;AAEDzM,SAAGqN,iBAAH,CAAqB6U,WAArB;AACD;;AAEDv/D,UAAMqqB,UAAN,CAAiB2qF,cAAjB,CACEh1G,MAAMqqB,UAAN,CAAiB1kB,YAAjB,EADF,EAEE8wE,MAFF,EAGEwnB,WAHF,EAIET,KAJF,EAKEmX,MALF;AAOD,GA9DD;;AAgEA7zG,YAAUq8F,SAAV,GAAsB,UAACxzE,OAAD,EAAUG,UAAV,EAAyB;AAC7C,QAAIH,OAAJ,EAAa;AACX,UAAI3pB,MAAMqqB,UAAN,CAAiBuqF,aAAjB,EAAJ,EAAsC;AACpC9qF,mBAAWmrF,iBAAX,CAA6B,IAA7B;AACD,OAFD,MAEO;AACLnrF,mBAAWmrF,iBAAX,CAA6B,IAA7B;AACD;AACF;AACF,GARD;AASD;;AAED;AACA;AACA;;AAEA,IAAM3rF,iBAAiB,EAAvB;;AAEA;;AAEO,SAAShhB,MAAT,CAAgBxH,SAAhB,EAA2Bd,KAA3B,EAAsD;AAAA,MAApBwI,aAAoB,uEAAJ,EAAI;;AAC3DvI,SAAOgD,MAAP,CAAcjD,KAAd,EAAqBspB,cAArB,EAAqC9gB,aAArC;;AAEA;AACA,qBAAYF,MAAZ,CAAmBxH,SAAnB,EAA8Bd,KAA9B,EAAqCwI,aAArC;;AAEA;AACAksG,oCAAkC5zG,SAAlC,EAA6Cd,KAA7C;AACD;;AAED;;AAEO,IAAMhE,oCAAc,gBAAMA,WAAN,CACzBsM,MADyB,EAEzB,mCAFyB,CAApB;;AAKP;;kBAEe,EAAEtM,wBAAF,EAAesM,cAAf,E;;;;;;;;;;;;;QC0FCA,M,GAAAA,M;;AA9MhB;;;;AACA;;;;AACA;;;;;;IAEQvN,a,mBAAAA,a;;AAER;AACA;AACA;AACA;;AAEA,SAASm6G,iBAAT,CAA2Bp0G,SAA3B,EAAsCd,KAAtC,EAA6C;AAC3C;AACAA,QAAMkB,cAAN,CAAqBxB,IAArB,CAA0B,mBAA1B;;AAEA;AACAoB,YAAUqvC,SAAV,GAAsB,UAACxmB,OAAD,EAAa;AACjC,QAAIA,OAAJ,EAAa;AACX,UAAI,CAAC3pB,MAAMqqB,UAAX,EAAuB;AACrB;AACD;;AAED;AACA,UAAI,CAACrqB,MAAMqqB,UAAN,CAAiBmxD,qBAAjB,EAAL,EAA+C;AAC7Cx7E,cAAMqqB,UAAN,CAAiB66C,WAAjB;AACD;AACDpkE,gBAAUq0G,YAAV;AACAr0G,gBAAUqqB,YAAV;AACArqB,gBAAU4pB,cAAV,CAAyB1qB,MAAMqqB,UAAN,CAAiBimB,eAAjB,EAAzB;AACAxvC,gBAAUmqB,eAAV,CAA0BjrB,MAAMqqB,UAAN,CAAiB+qF,2BAAjB,EAA1B;AACAt0G,gBAAUuqB,iBAAV;AACD;AACF,GAhBD;;AAkBAvqB,YAAUq0G,YAAV,GAAyB,YAAM;AAC7B,QAAIlzG,QAAQ,CAAZ;;AAEA,QAAMy0C,SAAS12C,MAAMqqB,UAAN,CAAiBssB,oBAAjB,EAAf;AACA,SAAK,IAAIv1C,QAAQ,CAAjB,EAAoBA,QAAQs1C,OAAO30C,MAAnC,EAA2C,EAAEX,KAA7C,EAAoD;AAClD,UAAIs1C,OAAOt1C,KAAP,EAAcy1C,SAAd,KAA4B,GAAhC,EAAqC;AACnC50C;AACD;AACF;;AAED,QAAI,CAACA,KAAL,EAAY;AACVlH,oBAAc,iCAAd;AACAiF,YAAMqqB,UAAN,CAAiBquD,WAAjB;AACD;;AAED,WAAOz2E,KAAP;AACD,GAhBD;;AAkBAnB,YAAU0vC,iBAAV,GAA8B,UAAC7mB,OAAD,EAAa;AACzC,QAAIA,OAAJ,EAAa;AACX,UAAI0rF,YAAY,CAAhB;AACA,UAAMh4D,KAAKr9C,MAAMqJ,OAAjB;AACA,UAAI,CAACrJ,MAAMqqB,UAAN,CAAiBixD,cAAjB,EAAL,EAAwC;AACtCt7E,cAAMqJ,OAAN,CAAcisG,UAAd,CAAyB,GAAzB,EAA8B,GAA9B,EAAmC,GAAnC,EAAwC,GAAxC;AACAD,qBAAah4D,GAAGk4D,gBAAhB;AACD;;AAED,UAAI,CAACv1G,MAAMqqB,UAAN,CAAiBmrF,sBAAjB,EAAL,EAAgD;AAC9Cn4D,WAAGo4D,UAAH,CAAc,GAAd;AACAJ,qBAAah4D,GAAGq4D,gBAAhB;AACAr4D,WAAGuuB,SAAH,CAAa,IAAb;AACD;;AAED,UAAM+pC,KAAK70G,UAAU28F,qBAAV,EAAX;AACApgD,SAAGyjB,MAAH,CAAUzjB,GAAGu4D,YAAb;AACAv4D,SAAGygD,OAAH,CAAW6X,GAAGjY,UAAd,EAA0BiY,GAAGhY,UAA7B,EAAyCgY,GAAG/X,KAA5C,EAAmD+X,GAAG9X,KAAtD;AACAxgD,SAAGmkB,QAAH,CAAYm0C,GAAGjY,UAAf,EAA2BiY,GAAGhY,UAA9B,EAA0CgY,GAAG/X,KAA7C,EAAoD+X,GAAG9X,KAAvD;;AAEAxgD,SAAGw4D,SAAH,CAAa,IAAb,EAAmB,IAAnB,EAAyB,IAAzB,EAA+B,IAA/B;AACAx4D,SAAG4vB,KAAH,CAASooC,SAAT;;AAEAh4D,SAAGyjB,MAAH,CAAUzjB,GAAGy4D,UAAb;AACD;AACF,GAzBD;;AA2BA;AACAh1G,YAAUi1G,UAAV,GAAuB,UAACpsF,OAAD,EAAa;AAClC,QAAIA,OAAJ,EAAa;AACX7oB,gBAAUmsE,KAAV;AACD;AACF,GAJD;;AAMAnsE,YAAUo9F,cAAV,GAA2B,YAAM;AAC/B,QAAMp/F,OAAOkB,MAAMyqB,MAAN,CAAaurF,kBAAb,EAAb;AACA,QAAMx0C,WAAWxhE,MAAMqqB,UAAN,CAAiBq3C,sBAAjB,EAAjB;AACA,WACE5iE,KAAK,CAAL,KACC0iE,SAAS,CAAT,IAAcA,SAAS,CAAT,CADf,KAEC,CAACA,SAAS,CAAT,IAAcA,SAAS,CAAT,CAAf,IAA8B1iE,KAAK,CAAL,CAF/B,CADF;AAKD,GARD;;AAUAgC,YAAU28F,qBAAV,GAAkC,YAAM;AACtC,QAAMwY,QAAQj2G,MAAMqqB,UAAN,CAAiBq3C,sBAAjB,EAAd;;AAEA;AACA,QAAMw0C,eAAe,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,GAAhB,CAArB;;AAEA;AACA;AACA,QAAMC,MAAM,eAAQtzF,UAAR,CAAmBozF,MAAM,CAAN,IAAWC,aAAa,CAAb,CAA9B,EAA+C,GAA/C,EAAoD,GAApD,CAAZ;AACA,QAAME,MAAM,eAAQvzF,UAAR,CAAmBozF,MAAM,CAAN,IAAWC,aAAa,CAAb,CAA9B,EAA+C,GAA/C,EAAoD,GAApD,CAAZ;;AAEA;AACA,QAAMG,OAAOr2G,MAAMyqB,MAAN,CAAaq3C,0BAAb,CAAwCq0C,GAAxC,EAA6CC,GAA7C,CAAb;AACA,QAAM1Y,aAAa/9F,KAAK6R,KAAL,CAAW6kG,KAAK,CAAL,CAAX,CAAnB;AACA,QAAM1Y,aAAah+F,KAAK6R,KAAL,CAAW6kG,KAAK,CAAL,CAAX,CAAnB;;AAEA;AACA;AACA,QAAIC,OAAO,eAAQzzF,UAAR,CAAmBozF,MAAM,CAAN,IAAWC,aAAa,CAAb,CAA9B,EAA+C,GAA/C,EAAoD,GAApD,CAAX;AACA,QAAIK,OAAO,eAAQ1zF,UAAR,CAAmBozF,MAAM,CAAN,IAAWC,aAAa,CAAb,CAA9B,EAA+C,GAA/C,EAAoD,GAApD,CAAX;AACA;AACA,QAAII,OAAOJ,aAAa,CAAb,IAAkBA,aAAa,CAAb,CAA7B,EAA8C;AAC5CI,aAAOJ,aAAa,CAAb,IAAkBA,aAAa,CAAb,CAAzB;AACD;AACD,QAAIK,OAAOL,aAAa,CAAb,IAAkBA,aAAa,CAAb,CAA7B,EAA8C;AAC5CK,aAAOL,aAAa,CAAb,IAAkBA,aAAa,CAAb,CAAzB;AACD;AACD,QAAMM,QAAQx2G,MAAMyqB,MAAN,CAAaq3C,0BAAb,CAAwCw0C,IAAxC,EAA8CC,IAA9C,CAAd;;AAEA;AACA;AACA,QAAI3Y,QAAQj+F,KAAK6R,KAAL,CAAWglG,MAAM,CAAN,CAAX,IAAuB9Y,UAAnC;AACA,QAAIG,QAAQl+F,KAAK6R,KAAL,CAAWglG,MAAM,CAAN,CAAX,IAAuB7Y,UAAnC;;AAEA,QAAIC,QAAQ,CAAZ,EAAe;AACbA,cAAQ,CAAR;AACD;AACD,QAAIC,QAAQ,CAAZ,EAAe;AACbA,cAAQ,CAAR;AACD;;AAED,WAAO,EAAED,YAAF,EAASC,YAAT,EAAgBH,sBAAhB,EAA4BC,sBAA5B,EAAP;AACD,GA1CD;;AA4CA78F,YAAUmsE,KAAV,GAAkB,YAAM;AACtB,QAAIooC,YAAY,CAAhB;AACA,QAAMh4D,KAAKr9C,MAAMqJ,OAAjB;;AAEA,QAAI,CAACrJ,MAAMqqB,UAAN,CAAiBixD,cAAjB,EAAL,EAAwC;AACtC,UAAMrF,aAAaj2E,MAAMqqB,UAAN,CAAiByjD,wBAAjB,EAAnB;AACA;AACA9tE,YAAMqJ,OAAN,CAAcisG,UAAd,CACEr/B,WAAW,CAAX,CADF,EAEEA,WAAW,CAAX,CAFF,EAGEA,WAAW,CAAX,CAHF,EAIEA,WAAW,CAAX,CAJF;AAMAo/B,mBAAah4D,GAAGk4D,gBAAhB;AACD;;AAED,QAAI,CAACv1G,MAAMqqB,UAAN,CAAiBmrF,sBAAjB,EAAL,EAAgD;AAC9Cn4D,SAAGo4D,UAAH,CAAc,GAAd;AACAJ,mBAAah4D,GAAGq4D,gBAAhB;AACAr4D,SAAGuuB,SAAH,CAAa,IAAb;AACD;;AAEDvuB,OAAGw4D,SAAH,CAAa,IAAb,EAAmB,IAAnB,EAAyB,IAAzB,EAA+B,IAA/B;;AAEA,QAAMF,KAAK70G,UAAU28F,qBAAV,EAAX;AACApgD,OAAGyjB,MAAH,CAAUzjB,GAAGu4D,YAAb;AACAv4D,OAAGygD,OAAH,CAAW6X,GAAGjY,UAAd,EAA0BiY,GAAGhY,UAA7B,EAAyCgY,GAAG/X,KAA5C,EAAmD+X,GAAG9X,KAAtD;AACAxgD,OAAGmkB,QAAH,CAAYm0C,GAAGjY,UAAf,EAA2BiY,GAAGhY,UAA9B,EAA0CgY,GAAG/X,KAA7C,EAAoD+X,GAAG9X,KAAvD;;AAEAxgD,OAAG4vB,KAAH,CAASooC,SAAT;;AAEAh4D,OAAGyjB,MAAH,CAAUzjB,GAAGy4D,UAAb;AACA;AACD,GAjCD;;AAmCAh1G,YAAU+3B,wBAAV,GAAqC,YAAM;AACzC,QAAI74B,MAAMk3C,QAAN,KAAmB,IAAvB,EAA6B;AAC3Bl3C,YAAMk3C,QAAN,CAAere,wBAAf;AACD;AACF,GAJD;;AAMA/3B,YAAUuiC,qBAAV,GAAkC,UAACC,EAAD,EAAQ;AACxC,QAAItjC,MAAMm1B,kBAAN,KAA6BmO,EAAjC,EAAqC;AACnC;AACD;AACDxiC,cAAU+3B,wBAAV;AACA74B,UAAMm1B,kBAAN,GAA2BmO,EAA3B;AACAtjC,UAAMqJ,OAAN,GAAgB,IAAhB;AACA,QAAIi6B,EAAJ,EAAQ;AACNtjC,YAAMqJ,OAAN,GAAgBrJ,MAAMm1B,kBAAN,CAAyBG,UAAzB,EAAhB;AACD;AACF,GAVD;AAWD;;AAED;AACA;AACA;;AAEA,IAAMhM,iBAAiB;AACrBjgB,WAAS,IADY;AAErB8rB,sBAAoB,IAFC;AAGrB+hB,YAAU;AAHW,CAAvB;;AAMA;;AAEO,SAAS5uC,MAAT,CAAgBxH,SAAhB,EAA2Bd,KAA3B,EAAsD;AAAA,MAApBwI,aAAoB,uEAAJ,EAAI;;AAC3DvI,SAAOgD,MAAP,CAAcjD,KAAd,EAAqBspB,cAArB,EAAqC9gB,aAArC;;AAEA;AACA,qBAAYF,MAAZ,CAAmBxH,SAAnB,EAA8Bd,KAA9B,EAAqCwI,aAArC;;AAEA;AACA,kBAAMhN,GAAN,CAAUsF,SAAV,EAAqBd,KAArB,EAA4B,CAAC,aAAD,CAA5B;;AAEA,kBAAMtE,MAAN,CAAaoF,SAAb,EAAwBd,KAAxB,EAA+B,CAAC,UAAD,CAA/B;;AAEA;AACAk1G,oBAAkBp0G,SAAlB,EAA6Bd,KAA7B;AACD;;AAED;;AAEO,IAAMhE,oCAAc,gBAAMA,WAAN,CAAkBsM,MAAlB,EAA0B,mBAA1B,CAApB;;AAEP;;kBAEe,EAAEtM,wBAAF,EAAesM,cAAf,E;;;;;;;;;;;;;QChBCA,M,GAAAA,M;;AAnNhB;;AAEA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AAEA;;;;IAEQtN,a,mBAAAA,a;;AAER;AACA;AACA;;AAEA,SAASy7G,eAAT,CAAyB31G,SAAzB,EAAoCd,KAApC,EAA2C;AACzC;AACAA,QAAMkB,cAAN,CAAqBxB,IAArB,CAA0B,iBAA1B;;AAEA;AACAoB,YAAUqvC,SAAV,GAAsB,UAACxmB,OAAD,EAAa;AACjC,QAAIA,OAAJ,EAAa;AACX3pB,YAAMo1B,cAAN,GAAuBt0B,UAAU0pB,sBAAV,CACrB,mBADqB,CAAvB;AAGAxqB,YAAMm1B,kBAAN,GAA2Bn1B,MAAMo1B,cAAN,CAAqBC,SAArB,EAA3B;AACAr1B,YAAMqJ,OAAN,GAAgBrJ,MAAMm1B,kBAAN,CAAyBG,UAAzB,EAAhB;AACAt1B,YAAMwxG,IAAN,CAAWnuE,qBAAX,CAAiCrjC,MAAMm1B,kBAAvC;AACAn1B,YAAMyxG,aAAN,CAAoBpuE,qBAApB,CAA0CrjC,MAAMm1B,kBAAhD;AACA,UAAM2b,MAAM9wC,MAAMo1B,cAAN,CAAqB7J,aAArB,EAAZ;AACAvrB,YAAMqwC,YAAN,GAAqBrwC,MAAMo1B,cAAN,CAAqBjL,cAArB,CACnB2mB,IAAIR,eAAJ,EADmB,CAArB;AAGD;AACF,GAdD;;AAgBAxvC,YAAUq8F,SAAV,GAAsB,UAACxzE,OAAD,EAAUG,UAAV,EAAyB;AAC7C,QAAIH,OAAJ,EAAa;AACX,UAAI,CAAC3pB,MAAMqqB,UAAP,IAAqB,CAACrqB,MAAMqqB,UAAN,CAAiBovD,aAAjB,EAA1B,EAA4D;AAC1D;AACD;AACD3vD,iBAAWixE,yBAAX;AACD;AACF,GAPD;;AASAj6F,YAAU6vC,UAAV,GAAuB,UAAChnB,OAAD,EAAUG,UAAV,EAAyB;AAC9C,QAAIH,OAAJ,EAAa;AACX7oB,gBAAUo8C,mBAAV;;AAEAl9C,YAAMm1B,kBAAN,CAAyB02C,eAAzB;;AAEA7rE,YAAMm1B,kBAAN,CACGuiB,cADH,GAEGI,kBAFH,CAEsB93C,MAAMwxG,IAAN,CAAWl6D,UAAX,EAFtB;;AAIAt3C,YAAMyxG,aAAN,CAAoB7nF,MAApB,CAA2B5pB,MAAMm1B,kBAAjC;;AAEA,UAAMskB,UAAUz5C,MAAMyxG,aAAN,CAAoBh5E,cAApB,EAAhB;AACAz4B,YAAMwxG,IAAN,CAAWl6D,UAAX,GAAwBxmB,WAAxB,CAAoC,WAApC,EAAiD2oB,OAAjD;;AAEA,UAAM3I,MAAM9wC,MAAMo1B,cAAN,CAAqB7J,aAArB,EAAZ;;AAEA,UAAM0vB,UAAUj7C,MAAMqwC,YAAN,CAAmB6K,cAAnB,CAAkCpK,GAAlC,CAAhB;AACA,UAAM4lE,OAAO,eAAK56D,MAAL,EAAb;AACA,qBAAK+R,MAAL,CAAY6oD,IAAZ,EAAkBz7D,QAAQO,IAA1B;AACAx7C,YAAMwxG,IAAN,CAAWl6D,UAAX,GAAwBlnB,gBAAxB,CAAyC,aAAzC,EAAwDsmF,IAAxD;;AAEA,UAAMC,SAAS7lE,IAAIR,eAAJ,GAAsByoC,WAAtB,EAAf;AACA/4E,YAAMwxG,IAAN,CACGl6D,UADH,GAEG5lB,YAFH,CAEgB,QAFhB,EAE0BilF,OAAO,CAAP,CAF1B,EAEqCA,OAAO,CAAP,CAFrC,EAEgDA,OAAO,CAAP,CAFhD;AAGA32G,YAAMwxG,IAAN,CAAW35D,MAAX,GAAoBzqC,IAApB;;AAEA;AACApN,YAAMqJ,OAAN,CAAco0C,UAAd,CACEz9C,MAAMqJ,OAAN,CAAcu0C,SADhB,EAEE,CAFF,EAGE59C,MAAMwxG,IAAN,CAAWn+D,OAAX,GAAqBmF,eAArB,EAHF;AAKAx4C,YAAMwxG,IAAN,CAAW35D,MAAX,GAAoBvoB,OAApB;;AAEAtvB,YAAMyxG,aAAN,CAAoBp6E,UAApB;AACD;AACF,GAtCD;;AAwCAv2B,YAAUo8C,mBAAV,GAAgC,YAAM;AACpC;AACA,QAAI,CAACl9C,MAAMwxG,IAAN,CAAWn+D,OAAX,GAAqBmF,eAArB,EAAL,EAA6C;AAC3C,UAAMu7D,WAAW,IAAI71G,YAAJ,CAAiB,EAAjB,CAAjB;AACA,WAAK,IAAI8G,IAAI,CAAb,EAAgBA,IAAI,CAApB,EAAuBA,GAAvB,EAA4B;AAC1B+uG,iBAAS/uG,IAAI,CAAb,IAAmBA,IAAI,CAAL,GAAU,CAAV,GAAc,GAAhC;AACA+uG,iBAAS/uG,IAAI,CAAJ,GAAQ,CAAjB,IAAsBA,IAAI,CAAJ,GAAQ,GAAR,GAAc,CAAC,GAArC;AACA+uG,iBAAS/uG,IAAI,CAAJ,GAAQ,CAAjB,IAAsB,GAAtB;AACD;AACD,UAAMimC,SAAS,oBAAajvC,WAAb,CAAyB;AACtC0qB,4BAAoB,CADkB;AAEtCjZ,gBAAQsmG;AAF8B,OAAzB,CAAf;AAIA9oE,aAAOkpE,OAAP,CAAe,QAAf;;AAEA,UAAMnO,YAAY,IAAI1nG,WAAJ,CAAgB,CAAhB,CAAlB;AACA0nG,gBAAU,CAAV,IAAe,CAAf;AACAA,gBAAU,CAAV,IAAe,CAAf;AACAA,gBAAU,CAAV,IAAe,CAAf;AACAA,gBAAU,CAAV,IAAe,CAAf;AACAA,gBAAU,CAAV,IAAe,CAAf;AACAA,gBAAU,CAAV,IAAe,CAAf;AACAA,gBAAU,CAAV,IAAe,CAAf;AACAA,gBAAU,CAAV,IAAe,CAAf;AACA,UAAMoO,QAAQ,oBAAap4G,WAAb,CAAyB;AACrC0qB,4BAAoB,CADiB;AAErCjZ,gBAAQu4F;AAF6B,OAAzB,CAAd;;AAKAhmG,YAAMwxG,IAAN,CAAWn+D,OAAX,GAAqBqM,SAArB,CAA+B00D,KAA/B,EAAsC,OAAtC,EAA+C,0BAAev/E,OAA9D,EAAuE;AACrEoW,sBADqE;AAErEwU,oBAAY;AAFyD,OAAvE;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAz/C,YAAMwxG,IAAN,CAAW55D,UAAX,CACE53C,MAAMm1B,kBAAN,CAAyBuiB,cAAzB,GAA0CC,uBAA1C,whCA+BE,EA/BF,CADF;;AAoCA33C,YAAMwxG,IAAN,CAAWj6D,mBAAX,GAAiC71C,QAAjC;;AAEA1B,YAAMwxG,IAAN,CAAW35D,MAAX,GAAoBzqC,IAApB;;AAEA,UACE,CAACpN,MAAMwxG,IAAN,CACE35D,MADF,GAEEc,iBAFF,CAGG34C,MAAMwxG,IAAN,CAAWl6D,UAAX,EAHH,EAIGt3C,MAAMwxG,IAAN,CAAWn+D,OAAX,EAJH,EAKG,UALH,EAMGrzC,MAAMwxG,IAAN,CAAWn+D,OAAX,GAAqBuF,eAArB,EANH,EAOG54C,MAAMwxG,IAAN,CAAWn+D,OAAX,GAAqBwF,SAArB,EAPH,EAQG74C,MAAMqJ,OAAN,CAAcmjB,KARjB,EASG,CATH,EAUGxsB,MAAMqJ,OAAN,CAAcwoG,KAVjB,CADH,EAaE;AACA72G,sBAAc,uCAAd;AACD;AACF;;AAED;AACA,QAAM47G,QAAQ52G,MAAMqqB,UAAN,CAAiBotE,WAAjB,EAAd;AACA,QAAI,CAACmf,MAAM70G,MAAX,EAAmB;AACjB/G,oBAAc,kCAAd;AACD;AACD,QAAIgF,MAAMyxG,aAAN,CAAoBlmF,aAApB,OAAwCqrF,MAAM,CAAN,CAA5C,EAAsD;AACpD52G,YAAMyxG,aAAN,CAAoB54E,wBAApB,CAA6C74B,MAAMm1B,kBAAnD;AACAn1B,YAAMyxG,aAAN,CAAoB7lF,aAApB,CAAkCgrF,MAAM,CAAN,CAAlC;AACD;AACF,GAhHD;AAiHD;;AAED;AACA;AACA;;AAEA,IAAMttF,iBAAiB;AACrBjgB,WAAS;AADY,CAAvB;;AAIA;;AAEO,SAASf,MAAT,CAAgBxH,SAAhB,EAA2Bd,KAA3B,EAAsD;AAAA,MAApBwI,aAAoB,uEAAJ,EAAI;;AAC3DvI,SAAOgD,MAAP,CAAcjD,KAAd,EAAqBspB,cAArB,EAAqC9gB,aAArC;;AAEA;AACA,qBAAYF,MAAZ,CAAmBxH,SAAnB,EAA8Bd,KAA9B,EAAqCwI,aAArC;;AAEAxI,QAAMyxG,aAAN,GAAsB,kBAAiBz1G,WAAjB,EAAtB;AACAgE,QAAMwxG,IAAN,GAAa,iBAAUx1G,WAAV,EAAb;;AAEAgE,QAAMo9F,aAAN,GAAsB,EAAtB;AACA,kBAAM7hG,GAAN,CAAUyE,MAAMo9F,aAAhB,EAA+B,EAAEn8F,OAAO,CAAT,EAA/B;AACAjB,QAAMq9F,WAAN,GAAoB;AAClB3hD,kBAAc,eAAKI,MAAL,EADI;AAElBI,UAAM,eAAKJ,MAAL;AAFY,GAApB;;AAKA;AACA,kBAAMpgD,MAAN,CAAaoF,SAAb,EAAwBd,KAAxB,EAA+B,CAAC,SAAD,CAA/B;;AAEA,kBAAMxE,GAAN,CAAUsF,SAAV,EAAqBd,KAArB,EAA4B,CAAC,gBAAD,CAA5B;;AAEA;AACAy2G,kBAAgB31G,SAAhB,EAA2Bd,KAA3B;AACD;;AAED;;AAEO,IAAMhE,oCAAc,gBAAMA,WAAN,CAAkBsM,MAAlB,CAApB;;AAEP;;kBAEe,EAAEtM,wBAAF,EAAesM,cAAf,E;;;;;;;;;;;;;QCqFCA,M,GAAAA,M;;AAvUhB;;AACA;;AAEA;;;;AAEA;;;;AACA;;;;AAEA;;;;AACA;;;;AAEA;;;;AACA;;;;;;IAEQtN,a,mBAAAA,a;;AAER;AACA;AACA;;AAEA,SAAS67G,qBAAT,CAA+B/1G,SAA/B,EAA0Cd,KAA1C,EAAiD;AAC/C;AACAA,QAAMkB,cAAN,CAAqBxB,IAArB,CAA0B,uBAA1B;;AAEA;AACA,MAAMuiD,aAAahiD,OAAOgD,MAAP,CAAc,EAAd,EAAkBnC,SAAlB,CAAnB;;AAEAA,YAAUowC,iBAAV,GAA8B,UAACD,OAAD,EAAUH,GAAV,EAAeD,KAAf,EAAyB;AACrDI,YAAQmB,MAAR;AACAnB,YAAQuB,QAAR;AACAvB,YAAQ2B,QAAR,GAAmB,EAAnB;AACD,GAJD;;AAMA9xC,YAAUixC,mBAAV,GAAgC,UAACd,OAAD,EAAUH,GAAV,EAAeD,KAAf,EAAyB;AACvD,QAAIiC,WAAW7B,QAAQmB,MAAvB;AACA,QAAIY,WAAW/B,QAAQuB,QAAvB;;AAEAM,eAAW,wBAAiBplB,UAAjB,CAA4BolB,QAA5B,EAAsC,oBAAtC,EAA4D,CACrE,4BADqE,EAErE,0BAFqE,CAA5D,EAGRhqC,MAHH;;AAKAkqC,eAAW,wBAAiBtlB,UAAjB,CAA4BslB,QAA5B,EAAsC,wBAAtC,EAAgE,CACzE,gCADyE,CAAhE,EAERlqC,MAFH;;AAIA;AACA;AACAkqC,eAAW,wBAAiBtlB,UAAjB,CACTslB,QADS,EAET,yBAFS,EAGT,CAAC,qCAAD,CAHS,EAITlqC,MAJF;;AAMA;AACA;AACA,QAAMguG,cAAc,CAClB,gCADkB,EAElB,+BAFkB,EAGlB,mCAHkB,EAIlB,kCAJkB,EAKlB,4BALkB,CAApB;AAOA9jE,eAAW,wBAAiBtlB,UAAjB,CACTslB,QADS,EAET,oBAFS,EAGT8jE,WAHS,EAIThuG,MAJF;;AAMA,QAAIiuG,aAAa,EAAjB;AACA,QAAI/2G,MAAMqJ,OAAN,CAAc6xB,YAAd,CAA2B,gBAA3B,CAAJ,EAAkD;AAChD67E,mBAAa,kDAAb;AACD;AACD,QAAI/2G,MAAMm1B,kBAAN,CAAyBsE,SAAzB,EAAJ,EAA0C;AACxCs9E,mBAAa,+CAAb;AACD;AACD/jE,eAAW,wBAAiBtlB,UAAjB,CAA4BslB,QAA5B,EAAsC,oBAAtC,EAA4D;AACrE;AACA,sBAFqE,EAGrE,kBAHqE,EAIrE,gCAJqE,EAKrE,iFALqE,EAMrE,sCANqE,EAOrE,YAPqE,EAQrE,8BARqE,EASrE,mCATqE,EAUrE,wCAVqE,EAWrE,mCAXqE;AAYrE;AACA;AACA,kDAdqE,EAerE,gEAfqE,EAgBrE,SAhBqE;;AAkBrE;AACA,6CAnBqE;AAoBrE;AACA,2CArBqE;AAsBrE;AACA,2CAvBqE,EAwBrE,yCAxBqE,EAyBrE,4BAzBqE,EA0BrE,gDA1BqE,EA2BrE,+BA3BqE,EA4BrE,YA5BqE,EA6BrE,mDA7BqE;;AA+BrE;AACA;AACA,0EAjCqE;AAkCrE;AACA,gFAnCqE,EAoCrE,SApCqE;AAqCrE;AACA;AACA,2CAvCqE,EAwCrE+jE,UAxCqE,CAA5D,EAyCRjuG,MAzCH;;AA2CA;AACAkqC,eAAW,wBAAiBtlB,UAAjB,CAA4BslB,QAA5B,EAAsC,qBAAtC,EAA6D,EAA7D,EACRlqC,MADH;;AAGA,QAAI9I,MAAMywC,oBAAV,EAAgC;AAC9B;AACAuC,iBAAW,wBAAiBtlB,UAAjB,CAA4BslB,QAA5B,EAAsC,sBAAtC,EAA8D,CACvE,0BADuE,EAEvE,gDAFuE,EAGvE,8CAHuE,EAIvE,mCAJuE,EAKvE,iCALuE,EAMvE,4CANuE,CAA9D,EAORlqC,MAPH;AAQD;;AAEDmoC,YAAQmB,MAAR,GAAiBU,QAAjB;AACA7B,YAAQuB,QAAR,GAAmBQ,QAAnB;;AAEAiP,eAAWlQ,mBAAX,CAA+Bd,OAA/B,EAAwCH,GAAxC,EAA6CD,KAA7C;AACD,GA1GD;;AA4GA/vC,YAAUi3C,yBAAV,GAAsC,UAAC/B,MAAD,EAASlF,GAAT,EAAcD,KAAd,EAAwB;AAC5D,QACEmF,OAAO3C,OAAP,GAAiBmF,eAAjB,OACCx4C,MAAMy4C,YAAN,GAAqBzC,OAAO0C,sBAAP,GAAgC92C,QAAhC,EAArB,IACCo0C,OAAOuB,mBAAP,GAA6B31C,QAA7B,KACEo0C,OAAO0C,sBAAP,GAAgC92C,QAAhC,EAHJ,KAIAo0C,OAAOsB,UAAP,GAAoBxkB,eAApB,CAAoC,UAApC,CALF,EAME;AACA,UACE,CAACkjB,OAAO6B,MAAP,GAAgBc,iBAAhB,CACC3C,OAAOsB,UAAP,EADD,EAECtB,OAAO3C,OAAP,EAFD,EAGC,UAHD,EAIC,EAJD,EAIK;AACJ2C,aAAO3C,OAAP,GAAiBwF,SAAjB,EALD,EAMC74C,MAAMqJ,OAAN,CAAcmjB,KANf,EAOC,CAPD,EAQC,KARD,CADH,EAWE;AACAxxB,sBAAc,yCAAd;AACD;AACF;;AAED,QAAIg7C,OAAOsB,UAAP,GAAoBzkB,aAApB,CAAkC,eAAlC,CAAJ,EAAwD;AACtDmjB,aACGsB,UADH,GAEG5mB,WAFH,CAEe,eAFf,EAEgC1wB,MAAM6tD,MAAN,GAAe,CAAC,GAAhB,GAAsB,GAFtD;AAGD;;AAED5L,eAAWlK,yBAAX,CAAqC/B,MAArC,EAA6ClF,GAA7C,EAAkDD,KAAlD;AACD,GA/BD;;AAiCA/vC,YAAUm3C,yBAAV,GAAsC,UAACjC,MAAD,EAASlF,GAAT,EAAcD,KAAd,EAAwB;AAC5D,QAAM+I,UAAU5D,OAAOsB,UAAP,EAAhB;;AAEA,QAAM+C,MAAMvJ,IAAIR,eAAJ,EAAZ;AACA,QAAM2K,UAAUj7C,MAAMqwC,YAAN,CAAmB6K,cAAnB,CAAkCpK,GAAlC,CAAhB;;AAEA,QAAI8I,QAAQ/mB,aAAR,CAAsB,YAAtB,CAAJ,EAAyC;AACvC+mB,cAAQxpB,gBAAR,CAAyB,YAAzB,EAAuC6qB,QAAQkjD,IAA/C;AACD;;AAED,QAAIvkD,QAAQ/mB,aAAR,CAAsB,YAAtB,CAAJ,EAAyC;AACvC,UAAI,CAACge,MAAM0K,aAAN,EAAL,EAA4B;AAC1B,YAAMK,UAAU57C,MAAMowC,WAAN,CAAkB8K,cAAlB,EAAhB;AACA,YAAM8H,OAAO,eAAKlH,MAAL,EAAb;AACA,uBAAKC,QAAL,CAAciH,IAAd,EAAoB/H,QAAQQ,IAA5B,EAAkCG,QAAQM,IAA1C;AACAtC,gBAAQxpB,gBAAR,CAAyB,YAAzB,EAAuC4yB,IAAvC;AACD,OALD,MAKO;AACLpJ,gBAAQxpB,gBAAR,CAAyB,YAAzB,EAAuC6qB,QAAQQ,IAA/C;AACD;AACF;;AAED,QAAI7B,QAAQ/mB,aAAR,CAAsB,gBAAtB,CAAJ,EAA6C;AAC3CmjB,aACGsB,UADH,GAEGxmB,WAFH,CAEe,gBAFf,EAEiCupB,IAAIsB,qBAAJ,EAFjC;AAGD;AACF,GA1BD;;AA4BA76C,YAAUozC,aAAV,GAA0B,UAACyJ,GAAD,EAAMt5C,IAAN;AAAA,WAAerE,MAAMqJ,OAAN,CAAcu0C,SAA7B;AAAA,GAA1B;;AAEA98C,YAAU+9C,kBAAV,GAA+B,UAAC/N,GAAD,EAAMD,KAAN,EAAgB;AAC7C,QAAMuF,OAAOp2C,MAAMq2C,YAAnB;;AAEA,QAAID,SAAS,IAAb,EAAmB;AACjB;AACD;;AAEDp2C,UAAMqqB,UAAN,CAAiBsd,UAAjB,CAA4ByO,IAA5B,EAAkC,GAAlC;AACA,QAAM/gC,IAAIrV,MAAMqqB,UAAN,CAAiB00B,iBAAjB,EAAV;;AAEA,QAAMi4D,MAAMh3G,MAAM4wC,UAAN,CAAiB5wC,MAAMsvC,SAAN,CAAgBI,IAAjC,EAAuC2D,OAAvC,EAAZ;;AAEA,QAAMo7C,YAAYr4C,KAAK1f,YAAL,EAAlB;AACA,QAAMuU,SAASmL,KAAKlL,SAAL,EAAf;AACA,QAAMq8D,YAAYt8D,OAAOmhB,iBAAP,EAAlB;AACA,QAAM6qD,aAAahsE,OAAO3iB,OAAP,EAAnB;;AAEA,QAAMugC,YAAY,CAAlB,CAjB6C,CAiBxB;AACrB,QAAIquD,SAAS,IAAb;;AAEA,QACEl3G,MAAMqqB,UAAN,CAAiB8sF,aAAjB,MAAoC,IAApC,IACA1oB,UAAUmV,QAAV,CAAmB5jG,MAAMqqB,UAAN,CAAiB8sF,aAAjB,EAAnB,CAFF,EAGE;AACAD,eAASzoB,UAAU9yF,QAAV,CAAmBqE,MAAMqqB,UAAN,CAAiB8sF,aAAjB,EAAnB,EAAqD7uF,OAArD,EAAT;AACD;;AAED,QAAIu+E,YAAY,IAAhB;AACA,QAAIJ,kBAAkB,CAAtB;AACA,QAAIyB,cAAc,IAAlB;AACA,QAAI7yF,CAAJ,EAAO;AACLoxF,wBAAkBpxF,EAAEoS,qBAAF,EAAlB;AACAuvF,UAAII,cAAJ,CAAmB,CAAnB;AACAJ,UAAIK,gBAAJ,CAAqB,CAArB;AACAxQ,kBAAYxxF,EAAEiT,OAAF,EAAZ;AACA4/E,oBAAc,IAAI9pG,UAAJ,CAAe,IAAImpG,SAAJ,GAAgB,CAA/B,CAAd;AACA,UAAI,CAACyP,IAAIh+D,UAAJ,EAAL,EAAuB;AACrBg+D,YAAIM,UAAJ,CAAe,uBAAgBt7G,WAAhB,EAAf;AACD;AACDg7G,UAAIh+D,UAAJ,GAAiB3V,qBAAjB,CAAuCrjC,MAAMm1B,kBAA7C;AACD,KAVD,MAUO,IAAI6hF,IAAIh+D,UAAJ,EAAJ,EAAsB;AAC3Bg+D,UAAIM,UAAJ,CAAe,IAAf;AACD;AACDN,QAAIO,kBAAJ,CAAuB9Q,eAAvB;;AAEA,QAAM0B,YAAY,IAAIjqG,YAAJ,CAAiB2qD,YAAY0+C,SAAZ,GAAwB,CAAzC,CAAlB;;AAEAyP,QAAIQ,SAAJ,CAAc3uD,YAAY,CAA1B;;AAEA,QAAM4uD,QAAQ93G,KAAK8V,GAAL,CAAS,eAAQrE,kBAAR,CAA2B,IAA3B,CAAT,CAAd;AACA,QAAI23E,WAAW,CAAf;AACA,QAAIme,WAAW,CAAf;;AAEA;AACA;AACA;AACA,QAAIwQ,SAAS,CAAb;AACA,QAAIC,QAAQ,CAAZ;AACA,SAAK,IAAI3yG,IAAI,CAAb,EAAgBA,IAAIuiG,SAApB,EAA+B,EAAEviG,CAAjC,EAAoC;AAClC,UAAI4f,SAAS5kB,MAAMqqB,UAAN,CAAiButF,SAAjB,EAAb;AACA,UAAIV,MAAJ,EAAY;AACVtyF,iBAASsyF,OAAOlyG,CAAP,CAAT;AACD;;AAED+jF,iBAAW/jF,IAAI,CAAf;AACAmjG,gBAAUuP,QAAV,IAAsBT,WAAWluB,UAAX,CAAtB;AACAof,gBAAUuP,QAAV,IAAsBT,WAAWluB,UAAX,CAAtB;AACAof,gBAAUuP,QAAV,IAAsBT,WAAWluB,UAAX,CAAtB;AACAof,gBAAUuP,QAAV,IAAsB,CAAC,GAAD,GAAO9yF,MAAP,GAAgB6yF,KAAtC;AACAtP,gBAAUuP,QAAV,IAAsB,CAAC9yF,MAAvB;AACA,UAAIiiF,SAAJ,EAAe;AACbK,mBAAWliG,IAAIyhG,eAAf;AACAyB,oBAAYyP,OAAZ,IAAuB9Q,UAAUK,QAAV,CAAvB;AACAgB,oBAAYyP,OAAZ,IAAuB9Q,UAAUK,WAAW,CAArB,CAAvB;AACAgB,oBAAYyP,OAAZ,IAAuB9Q,UAAUK,WAAW,CAArB,CAAvB;AACAgB,oBAAYyP,OAAZ,IAAuB9Q,UAAUK,WAAW,CAArB,CAAvB;AACD;;AAEDne,iBAAW/jF,IAAI,CAAf;AACAmjG,gBAAUuP,QAAV,IAAsBT,WAAWluB,UAAX,CAAtB;AACAof,gBAAUuP,QAAV,IAAsBT,WAAWluB,UAAX,CAAtB;AACAof,gBAAUuP,QAAV,IAAsBT,WAAWluB,UAAX,CAAtB;AACAof,gBAAUuP,QAAV,IAAsB,MAAM9yF,MAAN,GAAe6yF,KAArC;AACAtP,gBAAUuP,QAAV,IAAsB,CAAC9yF,MAAvB;AACA,UAAIiiF,SAAJ,EAAe;AACbqB,oBAAYyP,OAAZ,IAAuB9Q,UAAUK,QAAV,CAAvB;AACAgB,oBAAYyP,OAAZ,IAAuB9Q,UAAUK,WAAW,CAArB,CAAvB;AACAgB,oBAAYyP,OAAZ,IAAuB9Q,UAAUK,WAAW,CAArB,CAAvB;AACAgB,oBAAYyP,OAAZ,IAAuB9Q,UAAUK,WAAW,CAArB,CAAvB;AACD;;AAEDne,iBAAW/jF,IAAI,CAAf;AACAmjG,gBAAUuP,QAAV,IAAsBT,WAAWluB,UAAX,CAAtB;AACAof,gBAAUuP,QAAV,IAAsBT,WAAWluB,UAAX,CAAtB;AACAof,gBAAUuP,QAAV,IAAsBT,WAAWluB,UAAX,CAAtB;AACAof,gBAAUuP,QAAV,IAAsB,GAAtB;AACAvP,gBAAUuP,QAAV,IAAsB,MAAM9yF,MAA5B;AACA,UAAIiiF,SAAJ,EAAe;AACbqB,oBAAYyP,OAAZ,IAAuB9Q,UAAUK,QAAV,CAAvB;AACAgB,oBAAYyP,OAAZ,IAAuB9Q,UAAUK,WAAW,CAArB,CAAvB;AACAgB,oBAAYyP,OAAZ,IAAuB9Q,UAAUK,WAAW,CAArB,CAAvB;AACAgB,oBAAYyP,OAAZ,IAAuB9Q,UAAUK,WAAW,CAArB,CAAvB;AACD;AACF;;AAED8P,QAAI12D,eAAJ,CAAoBo3D,SAAS7uD,SAA7B;AACAmuD,QAAIjoE,MAAJ,CAAWo5D,SAAX,EAAsB,sBAAWl6D,YAAjC;AACA,QAAI54B,CAAJ,EAAO;AACL2hG,UAAIh+D,UAAJ,GAAiBjK,MAAjB,CAAwBm5D,WAAxB,EAAqC,sBAAWj6D,YAAhD;AACD;;AAEDjuC,UAAMy4C,YAAN,CAAmB/2C,QAAnB;AACD,GAhHD;AAiHD;;AAED;AACA;AACA;;AAEA,IAAM4nB,iBAAiB,EAAvB;;AAEA;;AAEO,SAAShhB,MAAT,CAAgBxH,SAAhB,EAA2Bd,KAA3B,EAAsD;AAAA,MAApBwI,aAAoB,uEAAJ,EAAI;;AAC3DvI,SAAOgD,MAAP,CAAcjD,KAAd,EAAqBspB,cAArB,EAAqC9gB,aAArC;;AAEA;AACA,2BAAwBF,MAAxB,CAA+BxH,SAA/B,EAA0Cd,KAA1C,EAAiDwI,aAAjD;;AAEA;AACAquG,wBAAsB/1G,SAAtB,EAAiCd,KAAjC;AACD;;AAED;;AAEO,IAAMhE,oCAAc,gBAAMA,WAAN,CAAkBsM,MAAlB,EAA0B,uBAA1B,CAApB;;AAEP;;kBAEe,EAAEtM,wBAAF,EAAesM,cAAf,E;;;;;;;;;ACvVfo4C,OAAOC,OAAP,GAAiB,+7DAAjB,C;;;;;;;;;;;;;QCyfgBr4C,M,GAAAA,M;;AAzfhB;;AACA;;AAEA;;IAAY4gD,K;;AAEZ;;;;AACA;;;;AACA;;;;AAEA;;;;AACA;;;;;;;;IAEQluD,a,GAAkBkuD,K,CAAlBluD,a;;AAER;AACA;AACA;;AAEA,SAAS68G,oBAAT,CAA8B/2G,SAA9B,EAAyCd,KAAzC,EAAgD;AAC9C;AACAA,QAAMkB,cAAN,CAAqBxB,IAArB,CAA0B,sBAA1B;;AAEA;AACA,MAAMuiD,aAAahiD,OAAOgD,MAAP,CAAc,EAAd,EAAkBnC,SAAlB,CAAnB;;AAEAA,YAAUowC,iBAAV,GAA8B,UAACD,OAAD,EAAUH,GAAV,EAAeD,KAAf,EAAyB;AACrDI,YAAQmB,MAAR;AACAnB,YAAQuB,QAAR;AACAvB,YAAQ2B,QAAR,GAAmB,EAAnB;AACD,GAJD;;AAMA9xC,YAAUixC,mBAAV,GAAgC,UAACd,OAAD,EAAUH,GAAV,EAAeD,KAAf,EAAyB;AACvD,QAAIiC,WAAW7B,QAAQmB,MAAvB;AACA,QAAIY,WAAW/B,QAAQuB,QAAvB;;AAEAM,eAAW,wBAAiBplB,UAAjB,CAA4BolB,QAA5B,EAAsC,oBAAtC,EAA4D,CACrE,4BADqE,EAErE,0BAFqE,CAA5D,EAGRhqC,MAHH;;AAKAkqC,eAAW,wBAAiBtlB,UAAjB,CACTslB,QADS,EAET,wBAFS,EAGT,gCAHS,EAITlqC,MAJF;;AAMA;AACA;AACAkqC,eAAW,wBAAiBtlB,UAAjB,CACTslB,QADS,EAET,yBAFS,EAGT,uCAHS,EAITlqC,MAJF;;AAMA;AACA;AACA,QAAMguG,cAAc,CAClB,+BADkB,EAElB,mCAFkB,EAGlB,kCAHkB,EAIlB,mCAJkB,EAKlB,kCALkB,EAMlB,4BANkB,CAApB;AAQA9jE,eAAW,wBAAiBtlB,UAAjB,CACTslB,QADS,EAET,oBAFS,EAGT8jE,WAHS,EAIThuG,MAJF;;AAMA,QAAIiuG,aAAa,EAAjB;AACA,QAAI/2G,MAAMqJ,OAAN,CAAc6xB,YAAd,CAA2B,gBAA3B,CAAJ,EAAkD;AAChD67E,mBAAa,oDAAb;AACD;AACD,QAAI/2G,MAAMm1B,kBAAN,CAAyBsE,SAAzB,EAAJ,EAA0C;AACxCs9E,mBAAa,+CAAb;AACD;AACD;AACA/jE,eAAW,wBAAiBtlB,UAAjB,CAA4BslB,QAA5B,EAAsC,oBAAtC,EAA4D;AACrE;AACA,sBAFqE,EAGrE,kBAHqE,EAIrE,gCAJqE,EAKrE,iFALqE,EAMrE,sCANqE,EAOrE,YAPqE,EAQrE,8BARqE,EASrE,mCATqE,EAUrE,wCAVqE,EAWrE,mCAXqE;AAYrE;AACA;AACA,kDAdqE,EAerE,gEAfqE,EAgBrE,SAhBqE;;AAkBrE;AACA,6CAnBqE;;AAqBrE;AACA;AACA,qBAvBqE,EAwBrE,2CAxBqE,EAyBrE,uEAzBqE,EA0BrE,YA1BqE,EA2BrE,uEA3BqE,EA4BrE,iDA5BqE,EA6BrE,sFA7BqE,EA8BrE,sFA9BqE;;AAgCrE;AACA,2CAjCqE;;AAmCrE;AACA,0DApCqE,EAqCrE,4DArCqE,EAsCrE,4DAtCqE,EAuCrE,8BAvCqE,EAwCrE,gDAxCqE,EAyCrE,+BAzCqE,EA0CrE,YA1CqE,EA2CrE,0CA3CqE,EA4CrE,yCA5CqE,EA6CrE,wCA7CqE,EA8CrE,oEA9CqE;AA+CrE;AACA,gDAhDqE,EAiDrE,6CAjDqE,EAkDrE,sHAlDqE,EAmDrE,gBAnDqE,EAoDrE,gDApDqE,EAqDrE,mFArDqE,EAsDrE,wCAtDqE,EAuDrE,6HAvDqE,EAwDrE,aAxDqE,EAyDrE,WAzDqE,EA0DrE,cA1DqE;AA2DrE;AACA,iEA5DqE;AA6DrE;AACA,gHA9DqE,EA+DrE,WA/DqE,EAgErE,SAhEqE;;AAkErE;AACA;AACA,2CApEqE,EAqErE+jE,UArEqE,CAA5D,EAsERjuG,MAtEH;;AAwEA;AACAkqC,eAAW,wBAAiBtlB,UAAjB,CAA4BslB,QAA5B,EAAsC,qBAAtC,EAA6D,EAA7D,EACRlqC,MADH;;AAGA,QAAMouC,WAAWpG,IAAI8E,WAAJ,EAAjB;AACA,QAAMkiE,UAAU,KAAhB,CA5HuD,CA4HhC;AACvBf,iBAAa,EAAb;AACA,QAAIe,OAAJ,EAAa;AACX,UACE,CAAC5gE,QADH,CACY;;AADZ,QAGE;AACApE,qBAAW,wBAAiBplB,UAAjB,CACTolB,QADS,EAET,qBAFS,EAGT,CAAC,+BAAD,EAAkC,mCAAlC,CAHS,EAIThqC,MAJF;AAKAgqC,qBAAW,wBAAiBplB,UAAjB,CACTolB,QADS,EAET,sBAFS,EAGT,oCAHS,EAIThqC,MAJF;AAKAkqC,qBAAW,wBAAiBtlB,UAAjB,CACTslB,QADS,EAET,qBAFS,EAGT,mCAHS,EAITlqC,MAJF;;AAMA,cAAI9I,MAAMqJ,OAAN,CAAc6xB,YAAd,CAA2B,gBAA3B,CAAJ,EAAkD;AAChD67E,yBACE,4DADF;AAED;AACD/jE,qBAAW,wBAAiBtlB,UAAjB,CACTslB,QADS,EAET,sBAFS,EAGT+jE,UAHS,EAITjuG,MAJF;AAKD,SA7BD,MA6BO;AACLkqC,mBAAW,wBAAiBtlB,UAAjB,CACTslB,QADS,EAET,qBAFS,EAGT,2BAHS,EAITlqC,MAJF;;AAMA,YAAI9I,MAAMqJ,OAAN,CAAc6xB,YAAd,CAA2B,gBAA3B,CAAJ,EAAkD;AAChD67E,uBAAa,6CAAb;AACD;AACD/jE,mBAAW,wBAAiBtlB,UAAjB,CACTslB,QADS,EAET,sBAFS,EAGT+jE,UAHS,EAITjuG,MAJF;AAKD;AACF;;AAED,QAAI9I,MAAMywC,oBAAV,EAAgC;AAC9B;AACAuC,iBAAW,wBAAiBtlB,UAAjB,CAA4BslB,QAA5B,EAAsC,sBAAtC,EAA8D,CACvE,0BADuE,EAEvE,gDAFuE,EAGvE,8CAHuE,EAIvE,mCAJuE,EAKvE,iCALuE,EAMvE,4CANuE,CAA9D,EAORlqC,MAPH;AAQD;;AAEDmoC,YAAQmB,MAAR,GAAiBU,QAAjB;AACA7B,YAAQuB,QAAR,GAAmBQ,QAAnB;;AAEAiP,eAAWlQ,mBAAX,CAA+Bd,OAA/B,EAAwCH,GAAxC,EAA6CD,KAA7C;AACD,GA9LD;;AAgMA/vC,YAAUi3C,yBAAV,GAAsC,UAAC/B,MAAD,EAASlF,GAAT,EAAcD,KAAd,EAAwB;AAC5D,QACEmF,OAAO3C,OAAP,GAAiBmF,eAAjB,OACCx4C,MAAMy4C,YAAN,GAAqBzC,OAAO0C,sBAAP,GAAgC92C,QAAhC,EAArB,IACCo0C,OAAOuB,mBAAP,GAA6B31C,QAA7B,KACEo0C,OAAO0C,sBAAP,GAAgC92C,QAAhC,EAHJ,CADF,EAKE;AACA,UAAMs1C,WAAWpG,IAAI8E,WAAJ,EAAjB;AACA,UAAMkiE,UAAU,KAAhB,CAFA,CAEuB;;AAEvB,UAAI9hE,OAAOsB,UAAP,GAAoBxkB,eAApB,CAAoC,UAApC,CAAJ,EAAqD;AACnD,YACE,CAACkjB,OAAO6B,MAAP,GAAgBc,iBAAhB,CACC3C,OAAOsB,UAAP,EADD,EAECtB,OAAO3C,OAAP,EAFD,EAGC,UAHD,EAIC,EAJD,EAIK;AACJ2C,eAAO3C,OAAP,GAAiBwF,SAAjB,EALD,EAMC74C,MAAMqJ,OAAN,CAAcmjB,KANf,EAOC,CAPD,EAQC,KARD,CADH,EAWE;AACAxxB,wBAAc,yCAAd;AACD;AACF;AACD,UAAIg7C,OAAOsB,UAAP,GAAoBxkB,eAApB,CAAoC,UAApC,CAAJ,EAAqD;AACnD,YACE,CAACkjB,OACE6B,MADF,GAEEc,iBAFF,CAGG3C,OAAOsB,UAAP,EAHH,EAIGtB,OAAO3C,OAAP,GAAiB2F,UAAjB,EAJH,EAKG,UALH,EAMG,CANH,EAOGhD,OAAO3C,OAAP,GAAiB6F,gBAAjB,EAPH,EAQGl5C,MAAMqJ,OAAN,CAAc4xB,aARjB,EASG,CATH,EAUG,IAVH,CADH,EAaE;AACAjgC,wBAAc,yCAAd;AACD;AACF;AACD,UAAIg7C,OAAOsB,UAAP,GAAoBxkB,eAApB,CAAoC,UAApC,CAAJ,EAAqD;AACnD,YACE,CAACkjB,OAAO6B,MAAP,GAAgBc,iBAAhB,CACC3C,OAAOsB,UAAP,EADD,EAECtB,OAAO3C,OAAP,EAFD,EAGC,UAHD,EAIC,EAJD,EAIK;AACJ2C,eAAO3C,OAAP,GAAiBwF,SAAjB,EALD,EAMC74C,MAAMqJ,OAAN,CAAcmjB,KANf,EAOC,CAPD,EAQC,KARD,CADH,EAWE;AACAxxB,wBAAc,yCAAd;AACD;AACF;AACD,UACE88G,WACA,CAAC5gE,QADD,CACU;6FADV,IAGAlB,OAAOsB,UAAP,GAAoBxkB,eAApB,CAAoC,aAApC,CAJF,EAKE;AACA,YACE,CAACkjB,OACE6B,MADF,GAEEc,iBAFF,CAGG3C,OAAOsB,UAAP,EAHH,EAIGtB,OAAO3C,OAAP,EAJH,EAKG,aALH,EAMG2C,OAAO3C,OAAP,GAAiB4F,cAAjB,EANH,EAOGjD,OAAO3C,OAAP,GAAiB6F,gBAAjB,EAPH,EAQGl5C,MAAMqJ,OAAN,CAAc8iB,aARjB,EASG,CATH,EAUG,IAVH,CADH,EAaE;AACAnxB,wBAAc,4CAAd;AACD;AACF,OAtBD,MAsBO;AACLg7C,eAAO6B,MAAP,GAAgBiB,oBAAhB,CAAqC,aAArC;AACD;AACF;;AAEDmJ,eAAWlK,yBAAX,CAAqC/B,MAArC,EAA6ClF,GAA7C,EAAkDD,KAAlD;AACD,GAxFD;;AA0FA/vC,YAAUm3C,yBAAV,GAAsC,UAACjC,MAAD,EAASlF,GAAT,EAAcD,KAAd,EAAwB;AAC5D,QAAM+I,UAAU5D,OAAOsB,UAAP,EAAhB;;AAEA,QAAM+C,MAAMvJ,IAAIR,eAAJ,EAAZ;AACA,QAAM2K,UAAUj7C,MAAMqwC,YAAN,CAAmB6K,cAAnB,CAAkCpK,GAAlC,CAAhB;;AAEA,QAAI8I,QAAQ/mB,aAAR,CAAsB,YAAtB,CAAJ,EAAyC;AACvC+mB,cAAQxpB,gBAAR,CAAyB,YAAzB,EAAuC6qB,QAAQkjD,IAA/C;AACD;;AAED,QAAI,CAACttD,MAAM0K,aAAN,EAAL,EAA4B;AAC1B,UAAMK,UAAU57C,MAAMowC,WAAN,CAAkB8K,cAAlB,EAAhB;AACA,UAAM8H,OAAO,eAAKlH,MAAL,EAAb;;AAEA,UAAIlC,QAAQ/mB,aAAR,CAAsB,YAAtB,CAAJ,EAAyC;AACvC,uBAAKkpB,QAAL,CAAciH,IAAd,EAAoB/H,QAAQQ,IAA5B,EAAkCG,QAAQM,IAA1C;AACAtC,gBAAQxpB,gBAAR,CAAyB,YAAzB,EAAuC4yB,IAAvC;AACD;AACD,UAAIpJ,QAAQ/mB,aAAR,CAAsB,cAAtB,CAAJ,EAA2C;AACzC,YAAMgpB,SAAS,eAAKC,MAAL,EAAf;AACA,uBAAKC,QAAL,CAAcF,MAAd,EAAsBZ,QAAQS,YAA9B,EAA4CE,QAAQF,YAApD;AACA9B,gBAAQppB,mBAAR,CAA4B,cAA5B,EAA4CqrB,MAA5C;AACD;AACF,KAbD,MAaO;AACL,UAAIjC,QAAQ/mB,aAAR,CAAsB,YAAtB,CAAJ,EAAyC;AACvC+mB,gBAAQxpB,gBAAR,CAAyB,YAAzB,EAAuC6qB,QAAQQ,IAA/C;AACD;AACD,UAAI7B,QAAQ/mB,aAAR,CAAsB,cAAtB,CAAJ,EAA2C;AACzC+mB,gBAAQppB,mBAAR,CAA4B,cAA5B,EAA4CyqB,QAAQS,YAApD;AACD;AACF;;AAED,QAAI9B,QAAQ/mB,aAAR,CAAsB,gBAAtB,CAAJ,EAA6C;AAC3CmjB,aACGsB,UADH,GAEGxmB,WAFH,CAEe,gBAFf,EAEiCupB,IAAIsB,qBAAJ,EAFjC;AAGD;AACF,GArCD;;AAuCA76C,YAAUozC,aAAV,GAA0B,UAACyJ,GAAD,EAAMt5C,IAAN;AAAA,WAAerE,MAAMqJ,OAAN,CAAcu0C,SAA7B;AAAA,GAA1B;;AAEA98C,YAAU+9C,kBAAV,GAA+B,UAAC/N,GAAD,EAAMD,KAAN,EAAgB;AAC7C,QAAMuF,OAAOp2C,MAAMq2C,YAAnB;;AAEA,QAAID,SAAS,IAAb,EAAmB;AACjB;AACD;;AAEDp2C,UAAMqqB,UAAN,CAAiBsd,UAAjB,CAA4ByO,IAA5B,EAAkC,GAAlC;AACA,QAAM/gC,IAAIrV,MAAMqqB,UAAN,CAAiB00B,iBAAjB,EAAV;;AAEA,QAAMi4D,MAAMh3G,MAAM4wC,UAAN,CAAiB5wC,MAAMsvC,SAAN,CAAgBI,IAAjC,EAAuC2D,OAAvC,EAAZ;;AAEA,QAAMo7C,YAAYr4C,KAAK1f,YAAL,EAAlB;AACA,QAAMuU,SAASmL,KAAKlL,SAAL,EAAf;AACA,QAAMq8D,YAAYt8D,OAAOmhB,iBAAP,EAAlB;AACA,QAAM6qD,aAAahsE,OAAO3iB,OAAP,EAAnB;AACA,QAAIugC,YAAY,CAAhB,CAhB6C,CAgB1B;;AAEnB;AACAA,iBAAa,CAAb;;AAEA,QAAIg+C,YAAY,IAAhB;AACA,QAAIJ,kBAAkB,CAAtB;AACAuQ,QAAIK,gBAAJ,CAAqB,CAArB;;AAEA,QAAI,CAACL,IAAIh+D,UAAJ,EAAL,EAAuB;AACrBg+D,UAAIM,UAAJ,CAAe,uBAAgBt7G,WAAhB,EAAf;AACD;AACDg7G,QAAIh+D,UAAJ,GAAiB3V,qBAAjB,CAAuCrjC,MAAMm1B,kBAA7C;AACA,QAAI9f,CAAJ,EAAO;AACLoxF,wBAAkBpxF,EAAEoS,qBAAF,EAAlB;AACAuvF,UAAII,cAAJ,CAAmB,CAAnB;AACAvQ,kBAAYxxF,EAAEiT,OAAF,EAAZ;AACA0uF,UAAIK,gBAAJ,CAAqB,CAArB;AACD;AACDL,QAAIO,kBAAJ,CAAuB9Q,eAAvB;;AAEAuQ,QAAIQ,SAAJ,CAAc3uD,YAAY,CAA1B;;AAEA;AACA,QAAMs/C,YAAY,IAAIjqG,YAAJ,CAAiB2qD,YAAY0+C,SAAZ,GAAwB,EAAzC,CAAlB;AACA,QAAMW,cAAc,IAAI9pG,UAAJ,CAAe,KAAKmpG,SAAL,IAAkBV,YAAY,CAAZ,GAAgB,CAAlC,CAAf,CAApB;;AAEA,QAAIqQ,SAAS,IAAb;AACA,QAAIa,mBAAmB,IAAvB;AACA;AACA;AACA;AACA,QACE/3G,MAAMqqB,UAAN,CAAiB8sF,aAAjB,MAAoC,IAApC,IACA1oB,UAAUmV,QAAV,CAAmB5jG,MAAMqqB,UAAN,CAAiB8sF,aAAjB,EAAnB,CAFF,EAGE;AACAD,eAASzoB,UAAU9yF,QAAV,CAAmBqE,MAAMqqB,UAAN,CAAiB8sF,aAAjB,EAAnB,EAAqD7uF,OAArD,EAAT;AACD;;AAED,QACEtoB,MAAMqqB,UAAN,CAAiB2tF,mBAAjB,MAA0C,IAA1C,IACAvpB,UAAUmV,QAAV,CAAmB5jG,MAAMqqB,UAAN,CAAiB2tF,mBAAjB,EAAnB,CAFF,EAGE;AACAD,yBAAmBtpB,UAChB9yF,QADgB,CACPqE,MAAMqqB,UAAN,CAAiB2tF,mBAAjB,EADO,EAEhB1vF,OAFgB,EAAnB;AAGD,KAPD,MAOO;AACLttB,oBAAc,CACZ,mCADY,EAEZ,2CAFY,CAAd;AAID;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAMi9G,gBAAgB,CACpB,CADoB,EACjB,CADiB,EACd,CADc,EAEpB,CAFoB,EAEjB,CAFiB,EAEd,CAFc,EAGpB,CAHoB,EAGjB,CAHiB,EAGd,CAHc,EAIpB,CAJoB,EAIjB,CAJiB,EAId,CAJc,CAAtB;;AAOA,QAAIlvB,WAAW,CAAf;AACA,QAAIme,WAAW,CAAf;AACA,QAAIwQ,SAAS,CAAb;AACA,QAAIC,QAAQ,CAAZ;;AAEA,SAAK,IAAI3yG,IAAI,CAAb,EAAgBA,IAAIuiG,SAApB,EAA+B,EAAEviG,CAAjC,EAAoC;AAClC,UAAIjD,SAAS/B,MAAMqqB,UAAN,CAAiBq5B,SAAjB,EAAb;AACA,UAAI9+B,SAAS5kB,MAAMqqB,UAAN,CAAiButF,SAAjB,EAAb;AACA,UAAIV,MAAJ,EAAY;AACVn1G,iBAASm1G,OAAOlyG,IAAI,CAAX,CAAT;AACA4f,iBAASsyF,OAAOlyG,IAAI,CAAJ,GAAQ,CAAf,CAAT;AACD;;AAED,WAAK,IAAI8N,IAAI,CAAb,EAAgBA,IAAImlG,cAAcl2G,MAAlC,EAA0C,EAAE+Q,CAA5C,EAA+C;AAC7Ci2E,mBAAW/jF,IAAI,CAAf;AACAmjG,kBAAUuP,QAAV,IAAsBT,WAAWluB,UAAX,CAAtB;AACAof,kBAAUuP,QAAV,IAAsBT,WAAWluB,UAAX,CAAtB;AACAof,kBAAUuP,QAAV,IAAsBT,WAAWluB,UAAX,CAAtB;AACAA,mBAAW/jF,IAAI,CAAf;AACAmjG,kBAAUuP,QAAV,IAAsBK,iBAAiBhvB,UAAjB,IAA+BhnF,MAArD;AACAomG,kBAAUuP,QAAV,IAAsBK,iBAAiBhvB,UAAjB,IAA+BhnF,MAArD;AACAomG,kBAAUuP,QAAV,IAAsBK,iBAAiBhvB,UAAjB,IAA+BhnF,MAArD;AACAomG,kBAAUuP,QAAV,IAAsB9yF,MAAtB;;AAEAsjF,oBAAYyP,OAAZ,IAAuB,OAAOM,cAAcnlG,CAAd,IAAmB,CAA1B,CAAvB;AACAo1F,oBAAYyP,OAAZ,IAAuBM,cAAcnlG,CAAd,KAAoB,CAApB,GAAwB,GAAxB,GAA8B,CAArD;AACAo1F,oBAAYyP,OAAZ,IAAuBM,cAAcnlG,CAAd,KAAoB,CAApB,GAAwB,GAAxB,GAA8B,CAArD;AACAo1F,oBAAYyP,OAAZ,IAAuB,GAAvB;;AAEAzQ,mBAAWliG,IAAIyhG,eAAf;AACA,YAAII,SAAJ,EAAe;AACbqB,sBAAYyP,OAAZ,IAAuB9Q,UAAUK,QAAV,CAAvB;AACAgB,sBAAYyP,OAAZ,IAAuB9Q,UAAUK,WAAW,CAArB,CAAvB;AACAgB,sBAAYyP,OAAZ,IAAuB9Q,UAAUK,WAAW,CAArB,CAAvB;AACAgB,sBAAYyP,OAAZ,IAAuB9Q,UAAUK,WAAW,CAArB,CAAvB;AACD;AACF;AACF;AACD8P,QAAI12D,eAAJ,CAAoBo3D,SAAS7uD,SAA7B;AACAmuD,QAAIjoE,MAAJ,CAAWo5D,SAAX,EAAsB,sBAAWl6D,YAAjC;AACA+oE,QAAIh+D,UAAJ,GAAiBjK,MAAjB,CAAwBm5D,WAAxB,EAAqC,sBAAWj6D,YAAhD;AACAjuC,UAAMy4C,YAAN,CAAmB/2C,QAAnB;AACD,GA5ID;AA6ID;;AAED;AACA;AACA;;AAEA,IAAM4nB,iBAAiB,EAAvB;;AAEA;;AAEO,SAAShhB,MAAT,CAAgBxH,SAAhB,EAA2Bd,KAA3B,EAAsD;AAAA,MAApBwI,aAAoB,uEAAJ,EAAI;;AAC3DvI,SAAOgD,MAAP,CAAcjD,KAAd,EAAqBspB,cAArB,EAAqC9gB,aAArC;;AAEA;AACA,2BAAwBF,MAAxB,CAA+BxH,SAA/B,EAA0Cd,KAA1C,EAAiDwI,aAAjD;;AAEA;AACAqvG,uBAAqB/2G,SAArB,EAAgCd,KAAhC;AACD;;AAED;;AAEO,IAAMhE,oCAAcktD,MAAMltD,WAAN,CAAkBsM,MAAlB,EAA0B,sBAA1B,CAApB;;AAEP;;kBAEe,EAAEtM,wBAAF,EAAesM,cAAf,E;;;;;;;;;ACzgBfo4C,OAAOC,OAAP,GAAiB,miFAAjB,C;;;;;;;;;;;;;QC8FgBr4C,M,GAAAA,M;;AA9FhB;;AAEA;;;;AACA;;;;;;AAEA;AACA;AACA;;AAEA,SAAS4vG,eAAT,CAAyBp3G,SAAzB,EAAoCd,KAApC,EAA2C;AACzC;AACAA,QAAMkB,cAAN,CAAqBxB,IAArB,CAA0B,iBAA1B;;AAEA;AACAoB,YAAUqvC,SAAV,GAAsB,UAACxmB,OAAD,EAAa;AACjC,QAAI,CAAC3pB,MAAMqqB,UAAP,IAAqB,CAACrqB,MAAMqqB,UAAN,CAAiBovD,aAAjB,EAA1B,EAA4D;AAC1D;AACD;AACD,QAAI9vD,OAAJ,EAAa;AACX7oB,gBAAUqqB,YAAV;AACArqB,gBAAU4pB,cAAV,CAAyB1qB,MAAMqqB,UAAN,CAAiBsyE,SAAjB,EAAzB;AACA77F,gBAAUuqB,iBAAV;AACD;AACF,GATD;;AAWAvqB,YAAUq8F,SAAV,GAAsB,UAACxzE,OAAD,EAAUG,UAAV,EAAyB;AAC7C,QAAIH,OAAJ,EAAa;AACX,UAAI,CAAC3pB,MAAMqqB,UAAP,IAAqB,CAACrqB,MAAMqqB,UAAN,CAAiBovD,aAAjB,EAA1B,EAA4D;AAC1D;AACD;AACD3vD,iBAAWmxE,oBAAX;AACD;AACF,GAPD;;AASAn6F,YAAUq3G,kBAAV,GAA+B,UAACruF,UAAD,EAAgB;AAC7C,QAAI,CAAC9pB,MAAMqqB,UAAP,IAAqB,CAACrqB,MAAMqqB,UAAN,CAAiBovD,aAAjB,EAA1B,EAA4D;AAC1D;AACD;;AAED34E,cAAUoH,KAAV,CAAgB4hB,UAAhB,EAA4B,IAA5B;;AAEA9pB,UAAMkL,QAAN,CAAe,CAAf,EAAkB2e,QAAlB,CAA2BC,UAA3B;;AAEAhpB,cAAUoH,KAAV,CAAgB4hB,UAAhB,EAA4B,KAA5B;AACD,GAVD;;AAYA;AACAhpB,YAAUi9F,UAAV,GAAuB,UAACp0E,OAAD,EAAa;AAClC,QAAI,CAAC3pB,MAAMqqB,UAAP,IAAqB,CAACrqB,MAAMqqB,UAAN,CAAiBovD,aAAjB,EAA1B,EAA4D;AAC1D;AACD;AACD,QAAI9vD,OAAJ,EAAa;AACX3pB,YAAMqJ,OAAN,GAAgBvI,UACb0pB,sBADa,CACU,uBADV,EAEb8K,UAFa,EAAhB;AAGAt1B,YAAMqJ,OAAN,CAAcuiE,SAAd,CAAwB,KAAxB;AACD,KALD,MAKO;AACL5rE,YAAMqJ,OAAN,CAAcuiE,SAAd,CAAwB,IAAxB;AACD;AACF,GAZD;;AAcA9qE,YAAUo6C,cAAV,GAA2B,YAAM;AAC/B;AACA,QAAIl7C,MAAMqqB,UAAN,CAAiBzoB,QAAjB,KAA8B5B,MAAMo9F,aAAN,CAAoBx7F,QAApB,EAAlC,EAAkE;AAChE5B,YAAMqqB,UAAN,CAAiB04B,aAAjB;AACA,qBAAKoK,IAAL,CAAUntD,MAAMo4G,UAAhB,EAA4Bp4G,MAAMqqB,UAAN,CAAiBivB,SAAjB,EAA5B;AACA,qBAAKkB,SAAL,CAAex6C,MAAMo4G,UAArB,EAAiCp4G,MAAMo4G,UAAvC;;AAEA,UAAIp4G,MAAMqqB,UAAN,CAAiBkxB,aAAjB,EAAJ,EAAsC;AACpC,uBAAKS,QAAL,CAAch8C,MAAM07C,YAApB;AACD,OAFD,MAEO;AACL,uBAAKqV,QAAL,CAAc/wD,MAAM07C,YAApB,EAAkC17C,MAAMo4G,UAAxC;AACA,uBAAKvqD,MAAL,CAAY7tD,MAAM07C,YAAlB,EAAgC17C,MAAM07C,YAAtC;AACD;AACD17C,YAAMo9F,aAAN,CAAoB17F,QAApB;AACD;;AAED,WAAO,EAAEw6C,MAAMl8C,MAAMo4G,UAAd,EAA0B18D,cAAc17C,MAAM07C,YAA9C,EAAP;AACD,GAjBD;AAkBD;;AAED;AACA;AACA;;AAEA,IAAMpyB,iBAAiB;AACrB;AACA;AACA;AACA;AAJqB,CAAvB;;AAOA;;AAEO,SAAShhB,MAAT,CAAgBxH,SAAhB,EAA2Bd,KAA3B,EAAsD;AAAA,MAApBwI,aAAoB,uEAAJ,EAAI;;AAC3DvI,SAAOgD,MAAP,CAAcjD,KAAd,EAAqBspB,cAArB,EAAqC9gB,aAArC;;AAEA;AACA,qBAAYF,MAAZ,CAAmBxH,SAAnB,EAA8Bd,KAA9B,EAAqCwI,aAArC;;AAEAxI,QAAMo9F,aAAN,GAAsB,EAAtB;AACA,kBAAM7hG,GAAN,CAAUyE,MAAMo9F,aAAhB;AACAp9F,QAAM07C,YAAN,GAAqB,eAAKI,MAAL,EAArB;AACA97C,QAAMo4G,UAAN,GAAmB,eAAKt8D,MAAL,EAAnB;;AAEA;AACA,kBAAMpgD,MAAN,CAAaoF,SAAb,EAAwBd,KAAxB,EAA+B,CAAC,SAAD,CAA/B;;AAEA;AACAk4G,kBAAgBp3G,SAAhB,EAA2Bd,KAA3B;AACD;;AAED;;AAEO,IAAMhE,oCAAc,gBAAMA,WAAN,CAAkBsM,MAAlB,EAA0B,iBAA1B,CAApB;;AAEP;;kBAEe,EAAEtM,wBAAF,EAAesM,cAAf,E;;;;;;;;;;;;;QCwrCCA,M,GAAAA,M;;AA9yChB;;;;AACA;;AAEA;;;;AACA;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;AACA;;AAIA;;AAEA;;;;AACA;;;;AACA;;;;;;IAEQrN,e,mBAAAA,e;IAAiBD,a,mBAAAA,a;;AAEzB;AACA;AACA;;AAzBA;;AA2BA,SAASq9G,qBAAT,CAA+Bv3G,SAA/B,EAA0Cd,KAA1C,EAAiD;AAC/C;AACAA,QAAMkB,cAAN,CAAqBxB,IAArB,CAA0B,uBAA1B;;AAEAoB,YAAUqvC,SAAV,GAAsB,YAAM;AAC1BnwC,UAAMs4G,cAAN,GAAuB,IAAvB;AACD,GAFD;;AAIA;AACA;AACAx3G,YAAU0vC,iBAAV,GAA8B,UAAC7mB,OAAD,EAAUG,UAAV,EAAyB;AACrD,QAAIH,OAAJ,EAAa;AACX,UAAMkrF,MAAM/qF,WAAW+wE,iBAAX,EAAZ;AACA,UAAIga,QAAQ70G,MAAMs4G,cAAlB,EAAkC;AAChCt4G,cAAMs4G,cAAN,GAAuBzD,GAAvB;AACD;AACF;AACF,GAPD;;AASA;AACA/zG,YAAUi9F,UAAV,GAAuB,UAACp0E,OAAD,EAAUG,UAAV,EAAyB;AAC9C,QAAIH,OAAJ,EAAa;AACX3pB,YAAMm1B,kBAAN,GAA2Br0B,UAAU0pB,sBAAV,CACzB,uBADyB,CAA3B;AAGAxqB,YAAMqJ,OAAN,GAAgBrJ,MAAMm1B,kBAAN,CAAyBG,UAAzB,EAAhB;AACAt1B,YAAMwxG,IAAN,CAAWnuE,qBAAX,CAAiCrjC,MAAMm1B,kBAAvC;AACAn1B,YAAMwgC,aAAN,CAAoB6C,qBAApB,CAA0CrjC,MAAMm1B,kBAAhD;AACAn1B,YAAMoqD,YAAN,CAAmB/mB,qBAAnB,CAAyCrjC,MAAMm1B,kBAA/C;AACAn1B,YAAMu4G,cAAN,CAAqBl1E,qBAArB,CAA2CrjC,MAAMm1B,kBAAjD;AACAn1B,YAAMw4G,eAAN,CAAsBn1E,qBAAtB,CAA4CrjC,MAAMm1B,kBAAlD;AACAn1B,YAAMy4G,aAAN,CAAoBp1E,qBAApB,CAA0CrjC,MAAMm1B,kBAAhD;AACAn1B,YAAMu/D,WAAN,CAAkBl8B,qBAAlB,CAAwCrjC,MAAMm1B,kBAA9C;;AAEAn1B,YAAM04G,YAAN,GAAqB53G,UAAU0pB,sBAAV,CAAiC,iBAAjC,CAArB;AACA,UAAMqmB,QAAQ7wC,MAAM04G,YAAN,CAAmBntF,aAAnB,EAAd;AACAvrB,YAAMo1B,cAAN,GAAuBt0B,UAAU0pB,sBAAV,CACrB,mBADqB,CAAvB;AAGA,UAAMsmB,MAAM9wC,MAAMo1B,cAAN,CAAqB7J,aAArB,EAAZ;AACAvrB,YAAMqwC,YAAN,GAAqBrwC,MAAMo1B,cAAN,CAAqBjL,cAArB,CACnB2mB,IAAIR,eAAJ,EADmB,CAArB;AAGAxvC,gBAAUiwC,WAAV,CAAsBD,GAAtB,EAA2BD,KAA3B;AACD;AACF,GAzBD;;AA2BA/vC,YAAUkwC,YAAV,GAAyB,UAACC,OAAD,EAAUH,GAAV,EAAeD,KAAf,EAAyB;AAChD/vC,cAAUowC,iBAAV,CAA4BD,OAA5B,EAAqCH,GAArC,EAA0CD,KAA1C;AACA/vC,cAAUixC,mBAAV,CAA8Bd,OAA9B,EAAuCH,GAAvC,EAA4CD,KAA5C;AACD,GAHD;;AAKA/vC,YAAUowC,iBAAV,GAA8B,UAACD,OAAD,EAAUH,GAAV,EAAeD,KAAf,EAAyB;AACrDI,YAAQmB,MAAR;AACA,QAAIpyC,MAAMm1B,kBAAN,CAAyBsE,SAAzB,EAAJ,EAA0C;AACxCwX,cAAQuB,QAAR;AACD,KAFD,MAEO;AACLvB,cAAQuB,QAAR;AACD;AACDvB,YAAQ2B,QAAR,GAAmB,EAAnB;AACD,GARD;;AAUA9xC,YAAUixC,mBAAV,GAAgC,UAACd,OAAD,EAAUH,GAAV,EAAeD,KAAf,EAAyB;AACvD,QAAImC,WAAW/B,QAAQuB,QAAvB;;AAEA,QAAMkgE,QAAQ7hE,MAAMsD,WAAN,GAAoBw+D,oBAApB,EAAd;AACA,QAAMgG,WACJ9nE,MAAMsD,WAAN,GAAoBykE,qBAApB,CAA0C,CAA1C,KACA54G,MAAMw4G,eAAN,CAAsBK,oBAAtB,EAFF;AAGA,QAAMC,UAAU94G,MAAMwgC,aAAN,CAAoBI,aAApB,EAAhB;;AAEA;AACA,QAAI5gC,MAAMm1B,kBAAN,CAAyBsE,SAAzB,EAAJ,EAA0C;AACxC;AACA;AACA,UAAIk/E,YAAY34G,MAAMizC,mBAAN,GAA4B,CAA5C,EAA+C;AAC7CD,mBAAW,wBAAiBtlB,UAAjB,CAA4BslB,QAA5B,EAAsC,oBAAtC,EAA4D,CACrE,wCADqE,CAA5D,EAERlqC,MAFH;AAGAkqC,mBAAW,wBAAiBtlB,UAAjB,CACTslB,QADS,EAET,qBAFS,EAGT,CAAC,4CAAD,CAHS,EAITlqC,MAJF;AAKD;AACD,UAAM8tB,MAAM52B,MAAMq2C,YAAN,CAAmBxf,SAAnB,EAAZ;AACA,UAAMkiF,MAAM/4G,MAAMq2C,YAAN,CAAmB2iE,UAAnB,EAAZ;AACA,UAAMnb,QAAQ,eAAK/hD,MAAL,EAAd;AACA,qBAAKrgD,GAAL,CACEoiG,KADF,EAEE,CAACjnE,IAAI,CAAJ,IAASA,IAAI,CAAJ,CAAV,IAAoBmiF,IAAI,CAAJ,CAFtB,EAGE,CAACniF,IAAI,CAAJ,IAASA,IAAI,CAAJ,CAAV,IAAoBmiF,IAAI,CAAJ,CAHtB,EAIE,CAACniF,IAAI,CAAJ,IAASA,IAAI,CAAJ,CAAV,IAAoBmiF,IAAI,CAAJ,CAJtB;AAMA,UAAME,aACJ,eAAKl3G,MAAL,CAAY87F,KAAZ,IAAqB79F,MAAMqqB,UAAN,CAAiB6uF,iBAAjB,EADvB;AAEAlmE,iBAAW,wBAAiBtlB,UAAjB,CACTslB,QADS,EAET,4BAFS,OAGNrzC,KAAK8R,IAAL,CAAUwnG,UAAV,CAHM,EAITnwG,MAJF;AAKD,KA7BD,MA6BO;AACL;AACA;AACA,UAAI4pG,UAAU,8BAAkB/8E,MAAhC,EAAwC;AACtCqd,mBAAW,wBAAiBtlB,UAAjB,CACTslB,QADS,EAET,uBAFS,EAGT,CACE,wCADF,EAEE,yCAFF,EAGE,oCAHF,CAHS,EAQTlqC,MARF;AASD,OAVD,MAUO;AACLkqC,mBAAW,wBAAiBtlB,UAAjB,CACTslB,QADS,EAET,uBAFS,EAGT,CAAC,wCAAD,CAHS,EAITlqC,MAJF;AAKD;;AAED;AACA,UAAI4pG,UAAU,8BAAkB/8E,MAAhC,EAAwC;AACtCqd,mBAAW,wBAAiBtlB,UAAjB,CACTslB,QADS,EAET,uBAFS,EAGT,CACE,gCADF,EAEE,wCAFF,EAGE,sCAHF,CAHS,EAQTlqC,MARF;AASD,OAVD,MAUO;AACLkqC,mBAAW,wBAAiBtlB,UAAjB,CACTslB,QADS,EAET,uBAFS,EAGT,CAAC,gCAAD,CAHS,EAITlqC,MAJF;AAKD;;AAED;AACA;AACA,UAAI6vG,YAAY34G,MAAMizC,mBAAN,GAA4B,CAA5C,EAA+C;AAC7CD,mBAAW,wBAAiBtlB,UAAjB,CAA4BslB,QAA5B,EAAsC,oBAAtC,EAA4D,CACrE,kCADqE,CAA5D,EAERlqC,MAFH;AAGA,YAAI4pG,UAAU,8BAAkB/8E,MAAhC,EAAwC;AACtCqd,qBAAW,wBAAiBtlB,UAAjB,CACTslB,QADS,EAET,qBAFS,EAGT,CACE,+CADF,EAEE,iDAFF,EAGE,sCAHF,CAHS,EAQTlqC,MARF;AASD,SAVD,MAUO;AACLkqC,qBAAW,wBAAiBtlB,UAAjB,CACTslB,QADS,EAET,qBAFS,EAGT,CAAC,8CAAD,CAHS,EAITlqC,MAJF;AAKD;AACF;;AAED;AACA;AACA;AACA,UAAIgwG,QAAQz5E,cAAZ,EAA4B;AAC1B2T,mBAAW,wBAAiBtlB,UAAjB,CACTslB,QADS,EAET,kCAFS,EAGT,CACE,+CADF,EAEE,qEAFF,CAHS,EAOTlqC,MAPF;AAQD,OATD,MASO;AACLkqC,mBAAW,wBAAiBtlB,UAAjB,CACTslB,QADS,EAET,kCAFS,EAGT,qCAHS,EAITlqC,MAJF;AAKD;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAM8tB,OAAM52B,MAAMq2C,YAAN,CAAmBxf,SAAnB,EAAZ;AACA,UAAMkiF,OAAM/4G,MAAMq2C,YAAN,CAAmB2iE,UAAnB,EAAZ;AACA,UAAMnb,SAAQ,eAAK/hD,MAAL,EAAd;AACA,qBAAKrgD,GAAL,CACEoiG,MADF,EAEE,CAACjnE,KAAI,CAAJ,IAASA,KAAI,CAAJ,CAAV,IAAoBmiF,KAAI,CAAJ,CAFtB,EAGE,CAACniF,KAAI,CAAJ,IAASA,KAAI,CAAJ,CAAV,IAAoBmiF,KAAI,CAAJ,CAHtB,EAIE,CAACniF,KAAI,CAAJ,IAASA,KAAI,CAAJ,CAAV,IAAoBmiF,KAAI,CAAJ,CAJtB;AAMA,UAAME,cACJ,eAAKl3G,MAAL,CAAY87F,MAAZ,IAAqB79F,MAAMqqB,UAAN,CAAiB6uF,iBAAjB,EADvB;;AAGAlmE,iBAAW,wBAAiBtlB,UAAjB,CACTslB,QADS,EAET,4BAFS,OAGNrzC,KAAK8R,IAAL,CAAUwnG,WAAV,CAHM,EAITnwG,MAJF;AAKD;;AAED;AACA,QAAI6vG,QAAJ,EAAc;AACZ3lE,iBAAW,wBAAiBtlB,UAAjB,CACTslB,QADS,EAET,6BAFS,EAGT,CACE,wBADF,EAEE,wBAFF,EAGE,sBAHF,EAIE,sBAJF,CAHS,EASTlqC,MATF;AAUAkqC,iBAAW,wBAAiBtlB,UAAjB,CACTslB,QADS,EAET,8BAFS,EAGT,CACE,+EADF,CAHS,EAMTlqC,MANF;AAOD;;AAED;AACA,QAAI9I,MAAMs4G,cAAN,KAAyB,IAA7B,EAAmC;AACjCtlE,iBAAW,wBAAiBtlB,UAAjB,CAA4BslB,QAA5B,EAAsC,qBAAtC,EAA6D,CACtE,mCADsE,EAEtE,wBAFsE,EAGtE,yBAHsE,CAA7D,EAIRlqC,MAJH;AAKAkqC,iBAAW,wBAAiBtlB,UAAjB,CAA4BslB,QAA5B,EAAsC,sBAAtC,EAA8D,CACvE,qGADuE,EAEvE,uDAFuE,EAGvE,8BAHuE,EAIvE,0FAJuE,EAKvE,4BALuE,EAMvE,oCANuE,CAA9D,EAORlqC,MAPH;AAQD;;AAEDmoC,YAAQuB,QAAR,GAAmBQ,QAAnB;;AAEAlyC,cAAU4yC,kBAAV,CAA6BzC,OAA7B,EAAsCH,GAAtC,EAA2CD,KAA3C;AACD,GA/LD;;AAiMA/vC,YAAU4yC,kBAAV,GAA+B,UAACzC,OAAD,EAAUH,GAAV,EAAeD,KAAf,EAAyB;AACtD,QAAImC,WAAW/B,QAAQuB,QAAvB;;AAEA;AACA,QAAMmB,eAAe,EAArB;;AAEA,YAAQ3zC,MAAMizC,mBAAd;AACE;AACA,WAAK,CAAL;AAAQ;AACN;;AAEF,WAAK,CAAL,CALF,CAKU;AACR,WAAK,CAAL,CANF,CAMU;AACR,WAAK,CAAL;AAAQ;AACN;AACAD,qBAAW,wBAAiBtlB,UAAjB,CACTslB,QADS,EAET,mBAFS,EAGT,CACE,+BADF,EAEE,yBAFF,EAGE,yBAHF,EAIE,0BAJF,EAKE,mBALF,CAHS,EAUT,KAVS,EAWTlqC,MAXF;AAYAkqC,qBAAW,wBAAiBtlB,UAAjB,CACTslB,QADS,EAET,oBAFS,EAGT,CACE,wCADF,EAEE,uCAFF,EAGE,wCAHF,EAIE,sBAJF,EAKE,+EALF,CAHS,EAUT,KAVS,EAWTlqC,MAXF;AAYA,cAAIqwG,WAAW,CAAf;AACAroE,cAAIsoE,SAAJ,GAAgBl8G,OAAhB,CAAwB,UAAC05C,KAAD,EAAW;AACjC,gBAAM/jC,SAAS+jC,MAAMC,SAAN,EAAf;AACA,gBAAIhkC,SAAS,CAAb,EAAgB;AACdmgC,yBAAW,wBAAiBtlB,UAAjB,CACTslB,QADS,EAET,mBAFS,EAGT;AACE;AADF,0CAE4BmmE,QAF5B,0CAGkCA,QAHlC,wDAIkCA,QAJlC,sBAKE,mBALF,CAHS,EAUT,KAVS,EAWTrwG,MAXF;AAYAkqC,yBAAW,wBAAiBtlB,UAAjB,CACTslB,QADS,EAET,oBAFS,EAGT;AACE;AADF,qEAEuDmmE,QAFvD,gCAGsBxlE,YAHtB,sBAGmDwlE,QAHnD;AAIE;AACA;AACA;AANF,+DAOiDA,QAPjD,+DAQyBxlE,YARzB,sBAQsDwlE,QARtD;AASE;AACA,oCAVF,CAHS,EAeT,KAfS,EAgBTrwG,MAhBF;AAiBAqwG;AACD;AACF,WAlCD;AAmCD;AArEH;;AAwEAloE,YAAQuB,QAAR,GAAmBQ,QAAnB;AACD,GA/ED;;AAiFAlyC,YAAUi1C,uBAAV,GAAoC,UAACC,MAAD,EAASlF,GAAT,EAAcD,KAAd,EAAwB;AAC1D;AACA,QAAIoF,kBAAkB,CAAtB;AACA,QAAIpF,MAAMsD,WAAN,GAAoBklE,QAApB,EAAJ,EAAoC;AAClC;AACA;AACApjE,wBAAkB,CAAlB;AACAj2C,YAAMk2C,cAAN,GAAuB,CAAvB;;AAEApF,UAAIsoE,SAAJ,GAAgBl8G,OAAhB,CAAwB,UAAC05C,KAAD,EAAW;AACjC,YAAM/jC,SAAS+jC,MAAMC,SAAN,EAAf;AACA,YAAIhkC,SAAS,CAAb,EAAgB;AACd7S,gBAAMk2C,cAAN;AACA,cAAID,oBAAoB,CAAxB,EAA2B;AACzBA,8BAAkB,CAAlB;AACD;AACF;;AAED,YACEA,oBAAoB,CAApB,KACCj2C,MAAMk2C,cAAN,GAAuB,CAAvB,IACCU,MAAME,YAAN,OAAyB,GAD1B,IAEC,CAACF,MAAMG,oBAAN,EAHH,CADF,EAKE;AACAd,4BAAkB,CAAlB;AACD;AACD,YAAIA,kBAAkB,CAAlB,IAAuBW,MAAMI,aAAN,EAA3B,EAAkD;AAChDf,4BAAkB,CAAlB;AACD;AACF,OApBD;AAqBD;;AAED,QAAIgB,cAAc,KAAlB;AACA,QAAIj3C,MAAMizC,mBAAN,KAA8BgD,eAAlC,EAAmD;AACjDj2C,YAAMizC,mBAAN,GAA4BgD,eAA5B;AACAgB,oBAAc,IAAd;AACD;;AAED;AACA,QACEjB,OAAOsB,UAAP,OAAwB,CAAxB,IACAL,WADA,IAEAj3C,MAAMq3C,wBAAN,KAAmCr3C,MAAMywC,oBAFzC,IAGA,CAAC,CAACzwC,MAAMs5G,kBAAR,KAA+B,CAAC,CAACt5G,MAAMs4G,cAHvC,IAIAtiE,OAAOuB,mBAAP,GAA6B31C,QAA7B,KAA0Cd,UAAUc,QAAV,EAJ1C,IAKAo0C,OAAOuB,mBAAP,GAA6B31C,QAA7B,KAA0CivC,MAAMjvC,QAAN,EAL1C,IAMAo0C,OAAOuB,mBAAP,GAA6B31C,QAA7B,KAA0C5B,MAAMqqB,UAAN,CAAiBzoB,QAAjB,EAN1C,IAOAo0C,OAAOuB,mBAAP,GAA6B31C,QAA7B,KAA0C5B,MAAMq2C,YAAN,CAAmBz0C,QAAnB,EAP1C,IAQAo0C,OAAOuB,mBAAP,GAA6B31C,QAA7B,KACE5B,MAAMw4G,eAAN,CAAsBe,qBAAtB,GAA8C33G,QAA9C,EAVJ,EAWE;AACA5B,YAAMs5G,kBAAN,GAA2Bt5G,MAAMs4G,cAAjC;AACA,aAAO,IAAP;AACD;;AAED,WAAO,KAAP;AACD,GAxDD;;AA0DAx3G,YAAU02C,aAAV,GAA0B,UAACxB,MAAD,EAASlF,GAAT,EAAcD,KAAd,EAAwB;AAChD7wC,UAAMkzC,WAAN,GAAoB8C,MAApB;;AAEA;AACA,QAAIl1C,UAAUi1C,uBAAV,CAAkCC,MAAlC,EAA0ClF,GAA1C,EAA+CD,KAA/C,CAAJ,EAA2D;AACzD,UAAMI,UAAU,EAAEmB,QAAQ,IAAV,EAAgBI,UAAU,IAA1B,EAAgCI,UAAU,IAA1C,EAAhB;;AAEA9xC,gBAAUkwC,YAAV,CAAuBC,OAAvB,EAAgCH,GAAhC,EAAqCD,KAArC;;AAEA;AACA,UAAM4G,YAAYz3C,MAAMm1B,kBAAN,CACfuiB,cADe,GAEfC,uBAFe,CAGd1G,QAAQmB,MAHM,EAIdnB,QAAQuB,QAJM,EAKdvB,QAAQ2B,QALM,CAAlB;;AAQA;AACA,UAAI6E,cAAczB,OAAOsB,UAAP,EAAlB,EAAuC;AACrCtB,eAAO4B,UAAP,CAAkBH,SAAlB;AACA;AACAzB,eAAO6B,MAAP,GAAgBhf,wBAAhB;AACD;;AAEDmd,aAAOuB,mBAAP,GAA6B71C,QAA7B;AACD,KAtBD,MAsBO;AACL1B,YAAMm1B,kBAAN,CACGuiB,cADH,GAEGI,kBAFH,CAEsB9B,OAAOsB,UAAP,EAFtB;AAGD;;AAEDtB,WAAO6B,MAAP,GAAgBzqC,IAAhB;AACAtM,cAAUi3C,yBAAV,CAAoC/B,MAApC,EAA4ClF,GAA5C,EAAiDD,KAAjD;AACA/vC,cAAUm3C,yBAAV,CAAoCjC,MAApC,EAA4ClF,GAA5C,EAAiDD,KAAjD;AACA/vC,cAAUk3C,2BAAV,CAAsChC,MAAtC,EAA8ClF,GAA9C,EAAmDD,KAAnD;AACD,GApCD;;AAsCA/vC,YAAUi3C,yBAAV,GAAsC,UAAC/B,MAAD,EAASlF,GAAT,EAAcD,KAAd,EAAwB;AAC5D;AACA,QAAM+I,UAAU5D,OAAOsB,UAAP,EAAhB;;AAEA,QACEtB,OAAO3C,OAAP,GAAiBmF,eAAjB,OACCx4C,MAAMy4C,YAAN,CAAmB72C,QAAnB,KACCo0C,OAAO0C,sBAAP,GAAgC92C,QAAhC,EADD,IAECo0C,OAAOuB,mBAAP,GAA6B31C,QAA7B,KACEo0C,OAAO0C,sBAAP,GAAgC92C,QAAhC,EAJJ,CADF,EAME;AACA,UAAIg4C,QAAQ9mB,eAAR,CAAwB,UAAxB,CAAJ,EAAyC;AACvC,YACE,CAACkjB,OACE6B,MADF,GAEEc,iBAFF,CAGGiB,OAHH,EAIG5D,OAAO3C,OAAP,EAJH,EAKG,UALH,EAMG2C,OAAO3C,OAAP,GAAiBuF,eAAjB,EANH,EAOG5C,OAAO3C,OAAP,GAAiBwF,SAAjB,EAPH,EAQG74C,MAAMqJ,OAAN,CAAcmjB,KARjB,EASG,CATH,EAUGxsB,MAAMqJ,OAAN,CAAcwoG,KAVjB,CADH,EAaE;AACA72G,wBAAc,uCAAd;AACD;AACF;AACDg7C,aAAO0C,sBAAP,GAAgCh3C,QAAhC;AACD;;AAEDk4C,YAAQ9oB,WAAR,CAAoB,UAApB,EAAgC9wB,MAAMwgC,aAAN,CAAoB/H,cAApB,EAAhC;AACAmhB,YAAQlpB,WAAR,CAAoB,gBAApB,EAAsC1wB,MAAMqqB,UAAN,CAAiB6uF,iBAAjB,EAAtC;;AAEA;AACA,QAAIl5G,MAAMs4G,cAAN,KAAyB,IAA7B,EAAmC;AACjC1+D,cAAQ9oB,WAAR,CACE,gBADF,EAEE9wB,MAAMs4G,cAAN,CAAqB7/E,cAArB,EAFF;AAIA,UAAM35B,OAAOgC,UAAU04G,mBAAV,EAAb;AACA5/D,cAAQlpB,WAAR,CAAoB,SAApB,EAA+B5xB,KAAK,CAAL,CAA/B;AACA86C,cAAQlpB,WAAR,CAAoB,UAApB,EAAgC5xB,KAAK,CAAL,CAAhC;AACD;AACF,GA7CD;;AA+CAgC,YAAUm3C,yBAAV,GAAsC,UAACjC,MAAD,EAASlF,GAAT,EAAcD,KAAd,EAAwB;AAC5D;AACA;AACA,QAAMoK,UAAUj7C,MAAMqwC,YAAN,CAAmB6K,cAAnB,CAAkCpK,GAAlC,CAAhB;;AAEA,QAAM8I,UAAU5D,OAAOsB,UAAP,EAAhB;;AAEA,QAAM+C,MAAMr6C,MAAMqwC,YAAN,CAAmB9kB,aAAnB,EAAZ;AACA,QAAMkuF,SAASp/D,IAAIq/D,gBAAJ,EAAf;AACA9/D,YAAQlpB,WAAR,CAAoB,UAApB,EAAgC+oF,OAAO,CAAP,IAAYA,OAAO,CAAP,CAA5C;AACA7/D,YAAQlpB,WAAR,CAAoB,SAApB,EAA+B+oF,OAAO,CAAP,CAA/B;AACA7/D,YAAQlpB,WAAR,CAAoB,QAApB,EAA8B+oF,OAAO,CAAP,CAA9B;;AAEA,QAAM92F,SAAS3iB,MAAMq2C,YAAN,CAAmB7R,SAAnB,EAAf;AACA,QAAM0nB,OAAOlsD,MAAMq2C,YAAN,CAAmB4V,aAAnB,EAAb;;AAEA;AACA;AACA,QAAMglB,MAAM,eAAKn1B,MAAL,EAAZ;AACA,QAAMuK,MAAM,eAAKvK,MAAL,EAAZ;AACA,QAAI69D,SAAS,GAAb;AACA,QAAIC,SAAS,CAAC,GAAd;AACA,QAAIC,SAAS,GAAb;AACA,QAAIC,SAAS,CAAC,GAAd;AACA,SAAK,IAAI90G,IAAI,CAAb,EAAgBA,IAAI,CAApB,EAAuB,EAAEA,CAAzB,EAA4B;AAC1B,qBAAKvJ,GAAL,CACEw1E,GADF,EAEEtuD,OAAO3d,IAAI,CAAX,CAFF,EAGE2d,OAAO,IAAIhjB,KAAKC,KAAL,CAAWoF,IAAI,CAAf,IAAoB,CAA/B,CAHF,EAIE2d,OAAO,IAAIhjB,KAAKC,KAAL,CAAWoF,IAAI,CAAf,CAAX,CAJF;AAMA,qBAAK61C,aAAL,CAAmBo2B,GAAnB,EAAwBA,GAAxB,EAA6Bh2B,QAAQQ,IAArC;AACA,qBAAK/mC,SAAL,CAAe2xC,GAAf,EAAoB4qB,GAApB;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAMp1D,IAAI,CAAC49F,OAAO,CAAP,CAAD,GAAaxoC,IAAI,CAAJ,CAAvB;AACA,qBAAKp7D,KAAL,CAAWo7D,GAAX,EAAgB5qB,GAAhB,EAAqBxqC,CAArB;;AAEA;AACA,qBAAKg/B,aAAL,CAAmBo2B,GAAnB,EAAwBA,GAAxB,EAA6Bh2B,QAAQkjD,IAArC;;AAEAwb,eAASh6G,KAAK+R,GAAL,CAASu/D,IAAI,CAAJ,CAAT,EAAiB0oC,MAAjB,CAAT;AACAC,eAASj6G,KAAKgS,GAAL,CAASs/D,IAAI,CAAJ,CAAT,EAAiB2oC,MAAjB,CAAT;AACAC,eAASl6G,KAAK+R,GAAL,CAASu/D,IAAI,CAAJ,CAAT,EAAiB4oC,MAAjB,CAAT;AACAC,eAASn6G,KAAKgS,GAAL,CAASs/D,IAAI,CAAJ,CAAT,EAAiB6oC,MAAjB,CAAT;AACD;AACDlgE,YAAQlpB,WAAR,CAAoB,QAApB,EAA8BipF,MAA9B;AACA//D,YAAQlpB,WAAR,CAAoB,QAApB,EAA8BkpF,MAA9B;AACAhgE,YAAQlpB,WAAR,CAAoB,QAApB,EAA8BmpF,MAA9B;AACAjgE,YAAQlpB,WAAR,CAAoB,QAApB,EAA8BopF,MAA9B;;AAEA,QAAMljF,MAAM52B,MAAMq2C,YAAN,CAAmBxf,SAAnB,EAAZ;AACA,QAAMkiF,MAAM/4G,MAAMq2C,YAAN,CAAmB2iE,UAAnB,EAAZ;AACA,QAAMnb,QAAQ,eAAK/hD,MAAL,EAAd;AACA,mBAAKrgD,GAAL,CACEoiG,KADF,EAEE,CAACjnE,IAAI,CAAJ,IAASA,IAAI,CAAJ,CAAV,IAAoBmiF,IAAI,CAAJ,CAFtB,EAGE,CAACniF,IAAI,CAAJ,IAASA,IAAI,CAAJ,CAAV,IAAoBmiF,IAAI,CAAJ,CAHtB,EAIE,CAACniF,IAAI,CAAJ,IAASA,IAAI,CAAJ,CAAV,IAAoBmiF,IAAI,CAAJ,CAJtB;AAMAn/D,YAAQloB,YAAR,CAAqB,OAArB,EAA8BmsE,MAAM,CAAN,CAA9B,EAAwCA,MAAM,CAAN,CAAxC,EAAkDA,MAAM,CAAN,CAAlD;;AAEA,mBAAKpiG,GAAL,CAASw1E,GAAT,EAAcr6C,IAAI,CAAJ,CAAd,EAAsBA,IAAI,CAAJ,CAAtB,EAA8BA,IAAI,CAAJ,CAA9B;AACA52B,UAAMq2C,YAAN,CAAmB6W,gBAAnB,CAAoC+jB,GAApC,EAAyCA,GAAzC;;AAEA,mBAAKp2B,aAAL,CAAmBo2B,GAAnB,EAAwBA,GAAxB,EAA6Bh2B,QAAQQ,IAArC;AACA7B,YAAQloB,YAAR,CAAqB,WAArB,EAAkCu/C,IAAI,CAAJ,CAAlC,EAA0CA,IAAI,CAAJ,CAA1C,EAAkDA,IAAI,CAAJ,CAAlD;;AAEA;AACA,QAAMshC,UAAUvyG,MAAMq2C,YAAN,CAAmBm8D,eAAnB,EAAhB;AACA,mBAAKz2D,QAAL,CAAc/7C,MAAM+5G,SAApB,EAA+B9+D,QAAQQ,IAAvC,EAA6C82D,OAA7C;;AAEA,mBAAKplD,IAAL,CAAUntD,MAAMg6G,eAAhB,EAAiCh6G,MAAMq2C,YAAN,CAAmB6D,YAAnB,EAAjC;AACA,mBAAK6B,QAAL,CACE/7C,MAAMg6G,eADR,EAEE/+D,QAAQS,YAFV,EAGE17C,MAAMg6G,eAHR;;AAMA,QAAMf,aACJ,eAAKl3G,MAAL,CAAY87F,KAAZ,IAAqB79F,MAAMqqB,UAAN,CAAiB6uF,iBAAjB,EADvB;AAEA,QAAID,aAAaj5G,MAAMqqB,UAAN,CAAiB4vF,uBAAjB,EAAjB,EAA6D;AAC3Dh/G,wDAAgD0E,KAAK8R,IAAL,CAC9CwnG,UAD8C,CAAhD,uEAGsCj5G,MAAMqqB,UAAN,CAAiB4vF,uBAAjB,EAHtC;AAMD;AACD,QAAMC,UAAU,eAAKp+D,MAAL,EAAhB;AACA,QAAI97C,MAAMm1B,kBAAN,CAAyBsE,SAAzB,EAAJ,EAA0C;AACxC,qBAAKh+B,GAAL,CAASy+G,OAAT,EAAkB,GAAlB,EAAuB,GAAvB,EAA4B,GAA5B;AACD,KAFD,MAEO;AACL,qBAAKz+G,GAAL,CAASy+G,OAAT,EAAkBhuD,KAAK,CAAL,IAAU,GAA5B,EAAiCA,KAAK,CAAL,IAAU,GAA3C,EAAgDA,KAAK,CAAL,IAAU,GAA1D;AACD;AACD,mBAAK8Q,MAAL,CAAYk9C,OAAZ,EAAqBA,OAArB,EAA8Brc,KAA9B;AACAjkD,YAAQloB,YAAR,CAAqB,UAArB,EAAiCwoF,QAAQ,CAAR,CAAjC,EAA6CA,QAAQ,CAAR,CAA7C,EAAyDA,QAAQ,CAAR,CAAzD;;AAEA,QAAI,CAACl6G,MAAMm1B,kBAAN,CAAyBsE,SAAzB,EAAL,EAA2C;AACzC,UAAMq/E,UAAU94G,MAAMwgC,aAAN,CAAoBI,aAApB,EAAhB;AACAgZ,cAAQlpB,WAAR,CAAoB,UAApB,EAAgC1wB,MAAMwgC,aAAN,CAAoBqB,QAApB,EAAhC;AACA+X,cAAQlpB,WAAR,CAAoB,WAApB,EAAiC1wB,MAAMwgC,aAAN,CAAoBsB,SAApB,EAAjC;AACA8X,cAAQ9oB,WAAR,CAAoB,OAApB,EAA6BgoF,QAAQj5E,KAArC;AACA+Z,cAAQlpB,WAAR,CAAoB,SAApB,EAA+BooF,QAAQp5E,OAAvC;AACAka,cAAQlpB,WAAR,CAAoB,SAApB,EAA+BooF,QAAQn5E,OAAvC;AACAia,cAAQ9oB,WAAR,CAAoB,UAApB,EAAgCgoF,QAAQrhF,KAAxC;AACAmiB,cAAQ9oB,WAAR,CAAoB,WAApB,EAAiCgoF,QAAQphF,MAAzC;AACAkiB,cAAQ9oB,WAAR,CAAoB,UAApB,EAAgCo7B,KAAK,CAAL,CAAhC;AACD;;AAED;AACA;AACA,QAAM/F,SAAS,eAAKrK,MAAL,EAAf;AACA,QAAMq+D,OAAO,eAAKr+D,MAAL,EAAb;AACA,SAAK,IAAI92C,KAAI,CAAb,EAAgBA,KAAI,CAApB,EAAuB,EAAEA,EAAzB,EAA4B;AAC1B,cAAQA,EAAR;AACE;AACA,aAAK,CAAL;AACE,yBAAKvJ,GAAL,CAAS0qD,MAAT,EAAiB,GAAjB,EAAsB,GAAtB,EAA2B,GAA3B;AACA,yBAAK1qD,GAAL,CAAS0+G,IAAT,EAAevjF,IAAI,CAAJ,CAAf,EAAuBA,IAAI,CAAJ,CAAvB,EAA+BA,IAAI,CAAJ,CAA/B;AACA;AACF,aAAK,CAAL;AACE,yBAAKn7B,GAAL,CAAS0qD,MAAT,EAAiB,CAAC,GAAlB,EAAuB,GAAvB,EAA4B,GAA5B;AACA,yBAAK1qD,GAAL,CAAS0+G,IAAT,EAAevjF,IAAI,CAAJ,CAAf,EAAuBA,IAAI,CAAJ,CAAvB,EAA+BA,IAAI,CAAJ,CAA/B;AACA;AACF,aAAK,CAAL;AACE,yBAAKn7B,GAAL,CAAS0qD,MAAT,EAAiB,GAAjB,EAAsB,GAAtB,EAA2B,GAA3B;AACA,yBAAK1qD,GAAL,CAAS0+G,IAAT,EAAevjF,IAAI,CAAJ,CAAf,EAAuBA,IAAI,CAAJ,CAAvB,EAA+BA,IAAI,CAAJ,CAA/B;AACA;AACF,aAAK,CAAL;AACE,yBAAKn7B,GAAL,CAAS0qD,MAAT,EAAiB,GAAjB,EAAsB,CAAC,GAAvB,EAA4B,GAA5B;AACA,yBAAK1qD,GAAL,CAAS0+G,IAAT,EAAevjF,IAAI,CAAJ,CAAf,EAAuBA,IAAI,CAAJ,CAAvB,EAA+BA,IAAI,CAAJ,CAA/B;AACA;AACF,aAAK,CAAL;AACE,yBAAKn7B,GAAL,CAAS0qD,MAAT,EAAiB,GAAjB,EAAsB,GAAtB,EAA2B,GAA3B;AACA,yBAAK1qD,GAAL,CAAS0+G,IAAT,EAAevjF,IAAI,CAAJ,CAAf,EAAuBA,IAAI,CAAJ,CAAvB,EAA+BA,IAAI,CAAJ,CAA/B;AACA;AACF,aAAK,CAAL;AACE,yBAAKn7B,GAAL,CAAS0qD,MAAT,EAAiB,GAAjB,EAAsB,GAAtB,EAA2B,CAAC,GAA5B;AACA,yBAAK1qD,GAAL,CAAS0+G,IAAT,EAAevjF,IAAI,CAAJ,CAAf,EAAuBA,IAAI,CAAJ,CAAvB,EAA+BA,IAAI,CAAJ,CAA/B;AACA;AAzBJ;AA2BA,qBAAK4mC,aAAL,CAAmBrX,MAAnB,EAA2BA,MAA3B,EAAmCnmD,MAAMg6G,eAAzC;AACA,qBAAKn/D,aAAL,CAAmBs/D,IAAnB,EAAyBA,IAAzB,EAA+Bn6G,MAAM+5G,SAArC;AACA,UAAM96C,OAAO,CAAC,GAAD,GAAO,eAAKnrD,GAAL,CAASqmG,IAAT,EAAeh0D,MAAf,CAApB;;AAEA;AACA;AACAvM,cAAQloB,YAAR,kBAAoC1sB,EAApC,EAAyCmhD,OAAO,CAAP,CAAzC,EAAoDA,OAAO,CAAP,CAApD,EAA+DA,OAAO,CAAP,CAA/D;AACAvM,cAAQlpB,WAAR,oBAAqC1rB,EAArC,EAA0Ci6D,IAA1C;AACD;;AAED,QAAMm7C,OAAO,eAAKt+D,MAAL,EAAb;AACA,mBAAK+R,MAAL,CAAYusD,IAAZ,EAAkBn/D,QAAQkjD,IAA1B;AACAvkD,YAAQxpB,gBAAR,CAAyB,YAAzB,EAAuCgqF,IAAvC;;AAEA;AACA,YAAQp6G,MAAMizC,mBAAd;AACE;AACA,WAAK,CAAL;AAAQ;AACN;;AAEF,WAAK,CAAL,CALF,CAKU;AACR,WAAK,CAAL,CANF,CAMU;AACR,WAAK,CAAL;AAAQ;AACN;AACA,cAAIkmE,WAAW,CAAf;AACA,cAAMkB,SAAShgE,IAAIigE,wBAAJ,EAAf;AACA,cAAMtgE,aAAa,EAAnB;AACAlJ,cAAIsoE,SAAJ,GAAgBl8G,OAAhB,CAAwB,UAAC05C,KAAD,EAAW;AACjC,gBAAM/jC,SAAS+jC,MAAMC,SAAN,EAAf;AACA,gBAAIhkC,SAAS,CAAb,EAAgB;AACd,kBAAMgnC,SAASjD,MAAM8Q,QAAN,EAAf;AACA,kBAAM3N,YAAYnD,MAAME,YAAN,EAAlB;AACAkD,yBAAW,CAAX,IAAgBH,OAAO,CAAP,IAAYE,SAA5B;AACAC,yBAAW,CAAX,IAAgBH,OAAO,CAAP,IAAYE,SAA5B;AACAC,yBAAW,CAAX,IAAgBH,OAAO,CAAP,IAAYE,SAA5B;AACAH,sBAAQhoB,iBAAR,gBAAuCunF,QAAvC,EAAmDn/D,UAAnD;AACA,kBAAMugE,WAAW3jE,MAAMsD,YAAN,EAAjB;AACAN,sBAAQhoB,iBAAR,sBAA6CunF,QAA7C,EAAyDoB,QAAzD;AACA,kBAAMC,YAAY,CAChB,CAAC,GAAD,IAAQD,SAAS,CAAT,IAAcF,OAAO,CAAP,CAAtB,CADgB,EAEhB,CAAC,GAAD,IAAQE,SAAS,CAAT,IAAcF,OAAO,CAAP,CAAtB,CAFgB,EAGhB,CAAC,GAAD,IAAQE,SAAS,CAAT,IAAcF,OAAO,CAAP,CAAtB,CAHgB,CAAlB;AAKAzgE,sBAAQhoB,iBAAR,sBAA6CunF,QAA7C,EAAyDqB,SAAzD;AACArB;AACD;AACF,WAnBD;AAoBD;AAhCH;AAkCD,GAnMD;;AAqMAr4G,YAAUk3C,2BAAV,GAAwC,UAAChC,MAAD,EAASlF,GAAT,EAAcD,KAAd,EAAwB;AAC9D,QAAM+I,UAAU5D,OAAOsB,UAAP,EAAhB;;AAEAsC,YAAQ9oB,WAAR,CAAoB,UAApB,EAAgC9wB,MAAMoqD,YAAN,CAAmB3xB,cAAnB,EAAhC;AACAmhB,YAAQ9oB,WAAR,CAAoB,UAApB,EAAgC9wB,MAAMu4G,cAAN,CAAqB9/E,cAArB,EAAhC;AACAmhB,YAAQ9oB,WAAR,CAAoB,UAApB,EAAgC9wB,MAAMy4G,aAAN,CAAoBhgF,cAApB,EAAhC;;AAEA,QAAMqgF,UAAU94G,MAAMwgC,aAAN,CAAoBI,aAApB,EAAhB;AACA,QAAM65E,SAAS3B,QAAQnnG,GAAR,GAAcmnG,QAAQpnG,GAArC;;AAEA,QAAMgpG,QAAQ7pE,MAAMsD,WAAN,EAAd;AACA,QAAMwmE,OAAOD,MAAME,gBAAN,CAAuB,CAAvB,CAAb;AACA,QAAMC,SAASF,KAAKp0F,QAAL,EAAf;AACAqzB,YAAQlpB,WAAR,CACE,QADF,EAEE,CAACooF,QAAQpnG,GAAR,GAAcmpG,OAAO,CAAP,CAAf,KAA6BA,OAAO,CAAP,IAAYA,OAAO,CAAP,CAAzC,CAFF;AAIAjhE,YAAQlpB,WAAR,CAAoB,QAApB,EAA8B+pF,UAAUI,OAAO,CAAP,IAAYA,OAAO,CAAP,CAAtB,CAA9B;;AAEA,QAAM3I,OAAOwI,MAAMvI,sBAAN,CAA6B,CAA7B,CAAb;AACA,QAAMC,SAASF,KAAK3rF,QAAL,EAAf;AACAqzB,YAAQlpB,WAAR,CACE,QADF,EAEE,CAACooF,QAAQpnG,GAAR,GAAc0gG,OAAO,CAAP,CAAf,KAA6BA,OAAO,CAAP,IAAYA,OAAO,CAAP,CAAzC,CAFF;AAIAx4D,YAAQlpB,WAAR,CAAoB,QAApB,EAA8B+pF,UAAUrI,OAAO,CAAP,IAAYA,OAAO,CAAP,CAAtB,CAA9B;;AAEA,QAAM1xE,oBAAoB1gC,MAAMw4G,eAAN,CAAsBK,oBAAtB,EAA1B;AACA,QAAI6B,MAAM9B,qBAAN,CAA4B,CAA5B,KAAkCl4E,iBAAtC,EAAyD;AACvD,UAAMo6E,eAAe96G,MAAMw4G,eAAN,CAAsB53E,aAAtB,EAArB;AACA,UAAMm6E,QAAQL,MAAMM,gCAAN,CAAuC,CAAvC,CAAd;AACA,UAAMC,QAAQP,MAAMQ,gCAAN,CAAuC,CAAvC,CAAd;AACAthE,cAAQlpB,WAAR,CAAoB,OAApB,EAA6BqqF,KAA7B;AACAnhE,cAAQlpB,WAAR,CAAoB,OAApB,EAA6BuqF,KAA7B;AACA,UAAME,UAAU,CACdT,MAAMU,8BAAN,CAAqC,CAArC,CADc,EAEdV,MAAMW,8BAAN,CAAqC,CAArC,CAFc,CAAhB;AAIAzhE,cAAQlpB,WAAR,CACE,SADF,EAEEoqF,aAAanpG,GAAb,IAAoBspG,QAAQF,KAA5B,KAAsCI,QAAQ,CAAR,IAAaA,QAAQ,CAAR,CAAnD,CAFF;AAIAvhE,cAAQlpB,WAAR,CACE,SADF,EAEE,CAACyqF,QAAQ,CAAR,CAAD,IAAeF,QAAQF,KAAvB,KAAiCI,QAAQ,CAAR,IAAaA,QAAQ,CAAR,CAA9C,IAA4DJ,KAF9D;AAID;;AAED,QACE,CAAC/6G,MAAMizC,mBAAN,GAA4B,CAA5B,IAAiCynE,MAAM9B,qBAAN,CAA4B,CAA5B,CAAlC,KACAl4E,iBAFF,EAGE;AACAkZ,cAAQ9oB,WAAR,CACE,eADF,EAEE9wB,MAAMw4G,eAAN,CAAsB//E,cAAtB,EAFF;AAID;;AAED,QAAIz4B,MAAMizC,mBAAN,GAA4B,CAAhC,EAAmC;AACjC2G,cAAQlpB,WAAR,CAAoB,UAApB,EAAgCgqF,MAAMj+D,UAAN,EAAhC;AACA7C,cAAQlpB,WAAR,CAAoB,UAApB,EAAgCgqF,MAAM/9D,UAAN,EAAhC;AACA/C,cAAQlpB,WAAR,CAAoB,WAApB,EAAiCgqF,MAAM59D,WAAN,EAAjC;AACAlD,cAAQlpB,WAAR,CAAoB,gBAApB,EAAsCgqF,MAAM39D,gBAAN,EAAtC;AACD;AACF,GAhED;;AAkEAj8C,YAAU04G,mBAAV,GAAgC,YAAM;AACpC,QAAIx5G,MAAMs7G,OAAN,GAAgB,IAApB,EAA0B;AACxB,UAAMp0D,KAAKlnD,MAAMu/D,WAAN,CAAkB3U,OAAlB,EAAX;AACA,aAAO,CAAC5qD,MAAMu7G,GAAN,CAAU,CAAV,IAAer0D,GAAG,CAAH,CAAhB,EAAuBlnD,MAAMu7G,GAAN,CAAU,CAAV,IAAer0D,GAAG,CAAH,CAAtC,CAAP;AACD;AACD,WAAOlnD,MAAMm1B,kBAAN,CAAyBksC,kBAAzB,EAAP;AACD,GAND;;AAQAvgE,YAAUk8C,gBAAV,GAA6B,UAAClM,GAAD,EAAMD,KAAN,EAAgB;AAC3C,QAAI7wC,MAAMqqB,UAAN,CAAiBmxF,4BAAjB,EAAJ,EAAqD;AACnD,UAAMC,MAAM3qE,IAAIsmC,YAAJ,GAAmB/R,aAAnB,EAAZ;AACA,UAAMq2C,MAAMD,IAAIE,gBAAJ,EAAZ;AACA;;AAEA;AACA;AACA;AACA37G,YAAM47G,YAAN,GAAqB,OAAO57G,MAAM47G,YAAb,GAA4B,OAAOF,GAAxD;AACA17G,YAAM67G,aAAN,GACE,OAAO77G,MAAM67G,aAAb,GAA6B,QAAQ77G,MAAMs7G,OAAN,GAAgBt7G,MAAMs7G,OAA9B,CAD/B;;AAGA,UACExqE,IACGsmC,YADH,GAEG/R,aAFH,GAGG4c,WAHH,EADF,EAKE;AACA;AACA,YAAI65B,OAAOn8G,KAAK6U,IAAL,CACTxU,MAAM47G,YAAN,GAAqBH,IAAIM,oBAAJ,EAArB,GAAkD/7G,MAAM67G,aAD/C,CAAX;;AAIA;AACA,YAAIC,OAAO,IAAX,EAAiB;AACfA,iBAAO,IAAP;AACD;;AAED97G,cAAMg8G,SAAN,GAAkBF,IAAlB;AACD,OAjBD,MAiBO;AACL97G,cAAMg8G,SAAN,GAAkBr8G,KAAK6U,IAAL,CAChBxU,MAAM47G,YAAN,GAAqBH,IAAIQ,kBAAJ,EAArB,GAAgDj8G,MAAM67G,aADtC,CAAlB;AAGD;;AAED;AACA,UAAI77G,MAAMg8G,SAAN,GAAkB,IAAlB,IAA0Bh8G,MAAMg8G,SAAN,GAAkB,IAAhD,EAAsD;AACpDh8G,cAAMg8G,SAAN,GAAkBh8G,MAAMs7G,OAAxB;AACD;;AAED;AACA,UAAI37G,KAAK4U,GAAL,CAAS,MAAMvU,MAAMg8G,SAAN,GAAkBh8G,MAAMs7G,OAAvC,IAAkD,GAAtD,EAA2D;AACzDt7G,cAAMg8G,SAAN,GAAkBh8G,MAAMs7G,OAAxB;AACD;AACDt7G,YAAMs7G,OAAN,GAAgBt7G,MAAMg8G,SAAtB;AACD,KA7CD,MA6CO;AACLh8G,YAAMs7G,OAAN,GAAgBt7G,MAAMqqB,UAAN,CAAiB6xF,sBAAjB,EAAhB;AACD;;AAED;AACA,QAAIl8G,MAAMs7G,OAAN,IAAiB,IAArB,EAA2B;AACzBt7G,YAAMs7G,OAAN,GAAgB,GAAhB;AACD;;AAED;AACA;AACA,QAAMa,MAAMn8G,MAAMs7G,OAAlB;;AAEA,QAAMx8G,OAAOkB,MAAMm1B,kBAAN,CAAyBksC,kBAAzB,EAAb;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAI86C,MAAM,IAAV,EAAgB;AACdn8G,YAAMu/D,WAAN,CAAkBjW,6BAAlB;;AAEA,UAAItpD,MAAMu/D,WAAN,CAAkB9U,gBAAlB,OAAyC,IAA7C,EAAmD;AACjDzqD,cAAMu/D,WAAN,CAAkBzjB,MAAlB,CACEn8C,KAAKC,KAAL,CAAWd,KAAK,CAAL,IAAU,GAArB,CADF,EAEEa,KAAKC,KAAL,CAAWd,KAAK,CAAL,IAAU,GAArB,CAFF;AAIAkB,cAAMu/D,WAAN,CAAkB1U,mBAAlB;AACD,OAND,MAMO;AACL,YAAM+vC,SAAS56F,MAAMu/D,WAAN,CAAkB3U,OAAlB,EAAf;AACA,YACEgwC,OAAO,CAAP,MAAcj7F,KAAKC,KAAL,CAAWd,KAAK,CAAL,IAAU,GAArB,CAAd,IACA87F,OAAO,CAAP,MAAcj7F,KAAKC,KAAL,CAAWd,KAAK,CAAL,IAAU,GAArB,CAFhB,EAGE;AACAzB,kBAAQM,GAAR,CAAY,UAAZ;AACAqC,gBAAMu/D,WAAN,CAAkBzjB,MAAlB,CACEn8C,KAAKC,KAAL,CAAWd,KAAK,CAAL,IAAU,GAArB,CADF,EAEEa,KAAKC,KAAL,CAAWd,KAAK,CAAL,IAAU,GAArB,CAFF;AAIAkB,gBAAMu/D,WAAN,CAAkB1U,mBAAlB;AACD;AACF;AACD7qD,YAAMu/D,WAAN,CAAkBnyD,IAAlB;AACA,UAAMiwC,KAAKr9C,MAAMqJ,OAAjB;AACAg0C,SAAGi4D,UAAH,CAAc,GAAd,EAAmB,GAAnB,EAAwB,GAAxB,EAA6B,GAA7B;AACAj4D,SAAGw4D,SAAH,CAAa,IAAb,EAAmB,IAAnB,EAAyB,IAAzB,EAA+B,IAA/B;AACAx4D,SAAG4vB,KAAH,CAAS5vB,GAAGk4D,gBAAZ;AACAl4D,SAAGmkB,QAAH,CAAY,CAAZ,EAAe,CAAf,EAAkB1iE,KAAK,CAAL,IAAUq9G,GAA5B,EAAiCr9G,KAAK,CAAL,IAAUq9G,GAA3C;AACAn8G,YAAMu7G,GAAN,GAAY,CACV57G,KAAKC,KAAL,CAAWd,KAAK,CAAL,IAAUq9G,GAArB,IAA4Bx8G,KAAKC,KAAL,CAAWd,KAAK,CAAL,IAAU,GAArB,CADlB,EAEVa,KAAKC,KAAL,CAAWd,KAAK,CAAL,IAAUq9G,GAArB,IAA4Bx8G,KAAKC,KAAL,CAAWd,KAAK,CAAL,IAAU,GAArB,CAFlB,CAAZ;AAID;AACDkB,UAAMqJ,OAAN,CAAc0iE,OAAd,CAAsB/rE,MAAMqJ,OAAN,CAAcysG,UAApC;;AAEA;AACAh1G,cAAUo8C,mBAAV,CAA8BpM,GAA9B,EAAmCD,KAAnC;;AAEA;AACA,QAAM6hE,QAAQ7hE,MAAMsD,WAAN,GAAoBw+D,oBAApB,EAAd;AACA,QAAID,UAAU,8BAAkB78E,OAAhC,EAAyC;AACvC71B,YAAMwgC,aAAN,CAAoB/K,qBAApB,CAA0C,mBAAOI,OAAjD;AACA71B,YAAMwgC,aAAN,CAAoB5K,sBAApB,CAA2C,mBAAOC,OAAlD;AACA71B,YAAMw4G,eAAN,CAAsB/iF,qBAAtB,CAA4C,mBAAOI,OAAnD;AACA71B,YAAMw4G,eAAN,CAAsB5iF,sBAAtB,CAA6C,mBAAOC,OAApD;AACD,KALD,MAKO;AACL71B,YAAMwgC,aAAN,CAAoB/K,qBAApB,CAA0C,mBAAOE,MAAjD;AACA31B,YAAMwgC,aAAN,CAAoB5K,sBAApB,CAA2C,mBAAOD,MAAlD;AACA31B,YAAMw4G,eAAN,CAAsB/iF,qBAAtB,CAA4C,mBAAOE,MAAnD;AACA31B,YAAMw4G,eAAN,CAAsB5iF,sBAAtB,CAA6C,mBAAOD,MAApD;AACD;;AAED;AACA31B,UAAMkzC,WAAN,GAAoB,IAApB;;AAEA;AACA,QAAIlzC,MAAMs4G,cAAN,KAAyB,IAA7B,EAAmC;AACjCt4G,YAAMs4G,cAAN,CAAqB3sG,QAArB;AACD;AACF,GA1ID;;AA4IA,MAAIywG,iCAAiC,IAArC;AACA,MAAIC,2BAA2B,KAA/B;AACAv7G,YAAUq8C,eAAV,GAA4B,UAACrM,GAAD,EAAMD,KAAN,EAAgB;AAC1C,QAAMwM,KAAKr9C,MAAMqJ,OAAjB;;AAEA;AACArJ,UAAMwgC,aAAN,CAAoB70B,QAApB;AACA3L,UAAMu4G,cAAN,CAAqB5sG,QAArB;AACA3L,UAAMoqD,YAAN,CAAmBz+C,QAAnB;AACA3L,UAAMy4G,aAAN,CAAoB9sG,QAApB;AACA,QACEklC,MAAMsD,WAAN,GAAoBklE,QAApB,MACAxoE,MAAMsD,WAAN,GAAoBykE,qBAApB,CAA0C,CAA1C,CAFF,EAGE;AACA;AACA,UAAI54G,MAAMw4G,eAAN,CAAsBK,oBAAtB,EAAJ,EAAkD;AAChD74G,cAAMw4G,eAAN,CAAsB7sG,QAAtB;AACA,YAAI,CAAC0wG,wBAAL,EAA+B;AAC7B;AACAA,qCAA2B,IAA3B;AACAr8G,gBAAMqqB,UAAN,CAAiBiyF,uBAAjB;AACD;AACF,OAPD,MAOO;AACL;AACA;AACA,YAAIF,mCAAmC,IAAvC,EAA6C;AAC3C5yG,uBAAa4yG,8BAAb;AACD;AACDA,yCAAiCn0G,WAAW,YAAM;AAChDjI,gBAAMm1B,kBAAN,CAAyBzzB,QAAzB;AACD,SAFgC,EAE9B,EAF8B,CAAjC;AAGA26G,mCAA2B,KAA3B;AACD;AACF;;AAEDv7G,cAAU02C,aAAV,CAAwBx3C,MAAMwxG,IAA9B,EAAoC1gE,GAApC,EAAyCD,KAAzC;;AAEA;AACA;AACA;AACA;AACAwM,OAAGI,UAAH,CAAcJ,GAAGO,SAAjB,EAA4B,CAA5B,EAA+B59C,MAAMwxG,IAAN,CAAWn+D,OAAX,GAAqBmF,eAArB,EAA/B;AACAx4C,UAAMwxG,IAAN,CAAW35D,MAAX,GAAoBvoB,OAApB;;AAEAtvB,UAAMwgC,aAAN,CAAoBnJ,UAApB;AACAr3B,UAAMoqD,YAAN,CAAmB/yB,UAAnB;AACAr3B,UAAMu4G,cAAN,CAAqBlhF,UAArB;AACAr3B,UAAMy4G,aAAN,CAAoBphF,UAApB;AACA,QACEwZ,MAAMsD,WAAN,GAAoBklE,QAApB,MACAxoE,MAAMsD,WAAN,GAAoBykE,qBAApB,CAA0C,CAA1C,CAFF,EAGE;AACA54G,YAAMw4G,eAAN,CAAsBnhF,UAAtB;AACD;AACF,GApDD;;AAsDAv2B,YAAU+8C,iBAAV,GAA8B,UAAC/M,GAAD,EAAMD,KAAN,EAAgB;AAC5C;AACA,QAAI7wC,MAAMs4G,cAAN,KAAyB,IAA7B,EAAmC;AACjCt4G,YAAMs4G,cAAN,CAAqBjhF,UAArB;AACD;;AAED,QAAIr3B,MAAMs7G,OAAN,GAAgB,IAApB,EAA0B;AACxB;AACA;AACAt7G,YAAMu/D,WAAN,CAAkBzV,iCAAlB;;AAEA,UAAI9pD,MAAMu8G,UAAN,KAAqB,IAAzB,EAA+B;AAC7Bv8G,cAAMu8G,UAAN,GAAmBv8G,MAAMm1B,kBAAN,CAChBuiB,cADgB,GAEhBC,uBAFgB,CAGf,CACE,oBADF,EAEE,0BAFF,EAGE,uBAHF,EAIE,sBAJF,EAKE,8GALF,EAME73C,IANF,CAMO,IANP,CAHe,EAUf,CACE,oBADF,EAEE,oBAFF,EAGE,6BAHF,EAIE,sBAJF,EAKE,8DALF,EAMEA,IANF,CAMO,IANP,CAVe,EAiBf,EAjBe,CAAnB;AAmBA,YAAM85C,UAAU55C,MAAMu8G,UAAtB;;AAEAv8G,cAAMw8G,OAAN,GAAgB,4BAAqBxgH,WAArB,EAAhB;AACAgE,cAAMw8G,OAAN,CAAcn5E,qBAAd,CAAoCrjC,MAAMm1B,kBAA1C;;AAEAn1B,cAAMwxG,IAAN,CAAWn+D,OAAX,GAAqBjmC,IAArB;AACA,YACE,CAACpN,MAAMw8G,OAAN,CAAc7jE,iBAAd,CACCiB,OADD,EAEC55C,MAAMwxG,IAAN,CAAWn+D,OAAX,EAFD,EAGC,UAHD,EAICrzC,MAAMwxG,IAAN,CAAWn+D,OAAX,GAAqBuF,eAArB,EAJD,EAKC54C,MAAMwxG,IAAN,CAAWn+D,OAAX,GAAqBwF,SAArB,EALD,EAMC74C,MAAMqJ,OAAN,CAAcmjB,KANf,EAOC,CAPD,EAQCxsB,MAAMqJ,OAAN,CAAcwoG,KARf,CADH,EAWE;AACA72G,wBAAc,4CAAd;AACD;AACF,OAxCD,MAwCO;AACLgF,cAAMm1B,kBAAN,CACGuiB,cADH,GAEGI,kBAFH,CAEsB93C,MAAMu8G,UAF5B;AAGD;;AAED,UAAMz9G,OAAOkB,MAAMm1B,kBAAN,CAAyBksC,kBAAzB,EAAb;AACArhE,YAAMqJ,OAAN,CAAcm4D,QAAd,CAAuB,CAAvB,EAA0B,CAA1B,EAA6B1iE,KAAK,CAAL,CAA7B,EAAsCA,KAAK,CAAL,CAAtC;;AAEA;AACA,UAAM06C,MAAMx5C,MAAMu/D,WAAN,CAAkBu7B,eAAlB,EAAZ;AACAthD,UAAI7tC,QAAJ;AACA3L,YAAMu8G,UAAN,CAAiBzrF,WAAjB,CAA6B,SAA7B,EAAwC0oB,IAAI/gB,cAAJ,EAAxC;;AAEAz4B,YAAMu8G,UAAN,CAAiBrrF,YAAjB,CAA8B,SAA9B,EAAyClxB,MAAMu7G,GAAN,CAAU,CAAV,CAAzC,EAAuDv7G,MAAMu7G,GAAN,CAAU,CAAV,CAAvD;;AAEA,UAAMl+D,KAAKr9C,MAAMqJ,OAAjB;AACAg0C,SAAGmjB,iBAAH,CACEnjB,GAAGsjB,GADL,EAEEtjB,GAAGqjB,mBAFL,EAGErjB,GAAGsjB,GAHL,EAIEtjB,GAAGqjB,mBAJL;;AAOA;AACA1gE,YAAMqJ,OAAN,CAAco0C,UAAd,CACEz9C,MAAMqJ,OAAN,CAAcu0C,SADhB,EAEE,CAFF,EAGE59C,MAAMwxG,IAAN,CAAWn+D,OAAX,GAAqBmF,eAArB,EAHF;AAKAgB,UAAIniB,UAAJ;;AAEAgmB,SAAGmjB,iBAAH,CACEnjB,GAAGojB,SADL,EAEEpjB,GAAGqjB,mBAFL,EAGErjB,GAAGsjB,GAHL,EAIEtjB,GAAGqjB,mBAJL;AAMD;AACF,GA1FD;;AA4FA5/D,YAAUiwC,WAAV,GAAwB,UAACD,GAAD,EAAMD,KAAN,EAAgB;AACtC/vC,cAAUi9C,WAAV,CAAsB,EAAE15C,MAAM,YAAR,EAAtB;AACArE,UAAMqqB,UAAN,CAAiBlkB,MAAjB;AACAnG,UAAMq2C,YAAN,GAAqBr2C,MAAMqqB,UAAN,CAAiB1kB,YAAjB,EAArB;AACA7E,cAAUi9C,WAAV,CAAsB,EAAE15C,MAAM,UAAR,EAAtB;;AAEA,QAAI,CAACrE,MAAMq2C,YAAX,EAAyB;AACvBr7C,oBAAc,WAAd;AACA;AACD;;AAED8F,cAAUk8C,gBAAV,CAA2BlM,GAA3B,EAAgCD,KAAhC;AACA/vC,cAAUq8C,eAAV,CAA0BrM,GAA1B,EAA+BD,KAA/B;AACA/vC,cAAU+8C,iBAAV,CAA4B/M,GAA5B,EAAiCD,KAAjC;AACD,GAdD;;AAgBA/vC,YAAU49C,aAAV,GAA0B,UAAC5N,GAAD,EAAMD,KAAN,EAAgB;AACxC,QAAI,CAAC/vC,UAAU69C,QAAV,EAAL,EAA2B;AACzB,qBAAQj8B,kBAAR,CAA2B1iB,MAAMy8G,MAAjC;AACA;AACD;AACDz8G,UAAM08G,OAAN,GAAgB57G,UAAU69C,QAAV,GAAqBna,SAArB,EAAhB;AACD,GAND;;AAQA1jC,YAAUo8C,mBAAV,GAAgC,UAACpM,GAAD,EAAMD,KAAN,EAAgB;AAC9C;AACA,QAAI/vC,UAAU89C,6BAAV,CAAwC9N,GAAxC,EAA6CD,KAA7C,CAAJ,EAAyD;AACvD/vC,gBAAU+9C,kBAAV,CAA6B/N,GAA7B,EAAkCD,KAAlC;AACD;AACF,GALD;;AAOA/vC,YAAU89C,6BAAV,GAA0C,UAAC9N,GAAD,EAAMD,KAAN,EAAgB;AACxD;AACA,QACE7wC,MAAMy4C,YAAN,CAAmB72C,QAAnB,KAAgCd,UAAUc,QAAV,EAAhC,IACA5B,MAAMy4C,YAAN,CAAmB72C,QAAnB,KAAgCivC,MAAMjvC,QAAN,EADhC,IAEA5B,MAAMy4C,YAAN,CAAmB72C,QAAnB,KAAgC5B,MAAMqqB,UAAN,CAAiBzoB,QAAjB,EAFhC,IAGA5B,MAAMy4C,YAAN,CAAmB72C,QAAnB,KAAgCivC,MAAMsD,WAAN,GAAoBvyC,QAApB,EAHhC,IAIA5B,MAAMy4C,YAAN,CAAmB72C,QAAnB,KAAgC5B,MAAMq2C,YAAN,CAAmBz0C,QAAnB,EALlC,EAME;AACA,aAAO,IAAP;AACD;AACD,WAAO,KAAP;AACD,GAZD;;AAcAd,YAAU+9C,kBAAV,GAA+B,UAAC/N,GAAD,EAAMD,KAAN,EAAgB;AAC7C,QAAM9S,QAAQ/9B,MAAMq2C,YAApB;;AAEA,QAAItY,UAAU,IAAd,EAAoB;AAClB;AACD;;AAED,QAAM28E,QAAQ7pE,MAAMsD,WAAN,EAAd;;AAEA,QAAI,CAACn0C,MAAMy4G,aAAN,CAAoBxlF,SAApB,EAAL,EAAsC;AACpC,UAAM0pF,SAAS,IAAIv+G,UAAJ,CAAe,KAAK,EAApB,CAAf;AACA,WAAK,IAAI4G,IAAI,CAAb,EAAgBA,IAAI,KAAK,EAAzB,EAA6B,EAAEA,CAA/B,EAAkC;AAChC23G,eAAO33G,CAAP,IAAY,QAAQrF,KAAKuT,MAAL,EAApB;AACD;AACDlT,YAAMy4G,aAAN,CAAoBhjF,qBAApB,CAA0C,mBAAOE,MAAjD;AACA31B,YAAMy4G,aAAN,CAAoB7iF,sBAApB,CAA2C,mBAAOD,MAAlD;AACA31B,YAAMy4G,aAAN,CAAoBthF,eAApB,CACE,EADF,EAEE,EAFF,EAGE,CAHF,EAIE,wBAAahL,aAJf,EAKEwwF,MALF;AAOD;;AAED;AACA,QAAMhC,OAAOD,MAAME,gBAAN,CAAuB,CAAvB,CAAb;AACA,QAAMgC,gBACJ58G,MAAMqqB,UAAN,CAAiB6uF,iBAAjB,KACAwB,MAAMmC,4BAAN,CAAmC,CAAnC,CAFF;AAGA,QAAI11F,WAAcwzF,KAAK/4G,QAAL,EAAd,SAAiCg7G,aAArC;AACA,QAAI58G,MAAM88G,oBAAN,KAA+B31F,QAAnC,EAA6C;AAC3C,UAAM0zF,SAASF,KAAKp0F,QAAL,EAAf;AACA,UAAMw2F,SAAS,IAAf;AACA,UAAMC,UAAU,IAAI9+G,YAAJ,CAAiB6+G,MAAjB,CAAhB;AACApC,WAAK1H,QAAL,CAAc4H,OAAO,CAAP,CAAd,EAAyBA,OAAO,CAAP,CAAzB,EAAoCkC,MAApC,EAA4CC,OAA5C,EAAqD,CAArD;AACA,UAAML,UAAS,IAAIv+G,UAAJ,CAAe2+G,MAAf,CAAf;AACA,WAAK,IAAI/3G,MAAI,CAAb,EAAgBA,MAAI+3G,MAApB,EAA4B,EAAE/3G,GAA9B,EAAiC;AAC/B23G,gBAAO33G,GAAP,IAAY,SAAS,eAAO,MAAMg4G,QAAQh4G,GAAR,CAAb,EAA4B43G,aAA5B,CAAT,CAAZ;AACD;AACD58G,YAAMu4G,cAAN,CAAqB9iF,qBAArB,CAA2C,mBAAOE,MAAlD;AACA31B,YAAMu4G,cAAN,CAAqB3iF,sBAArB,CAA4C,mBAAOD,MAAnD;AACA31B,YAAMu4G,cAAN,CAAqBphF,eAArB,CACE4lF,MADF,EAEE,CAFF,EAGE,CAHF,EAIE,wBAAa5wF,aAJf,EAKEwwF,OALF;AAOA38G,YAAM88G,oBAAN,GAA6B31F,QAA7B;AACD;;AAED;AACA,QAAM+qF,OAAOwI,MAAMvI,sBAAN,CAA6B,CAA7B,CAAb;AACAhrF,oBAAc+qF,KAAKtwG,QAAL,EAAd;AACA,QAAI5B,MAAM+yG,kBAAN,KAA6B5rF,QAAjC,EAA2C;AACzC,UAAMirF,SAASF,KAAK3rF,QAAL,EAAf;AACA,UAAMqsF,SAAS,IAAf;AACA,UAAMI,UAAU,IAAI90G,YAAJ,CAAiB00G,SAAS,CAA1B,CAAhB;AACAV,WAAKe,QAAL,CAAcb,OAAO,CAAP,CAAd,EAAyBA,OAAO,CAAP,CAAzB,EAAoCQ,MAApC,EAA4CI,OAA5C,EAAqD,CAArD;AACA,UAAMH,SAAS,IAAIz0G,UAAJ,CAAew0G,SAAS,CAAxB,CAAf;AACA,WAAK,IAAI5tG,MAAI,CAAb,EAAgBA,MAAI4tG,SAAS,CAA7B,EAAgC,EAAE5tG,GAAlC,EAAqC;AACnC6tG,eAAO7tG,GAAP,IAAY,QAAQguG,QAAQhuG,GAAR,CAApB;AACD;AACDhF,YAAMoqD,YAAN,CAAmB30B,qBAAnB,CAAyC,mBAAOE,MAAhD;AACA31B,YAAMoqD,YAAN,CAAmBx0B,sBAAnB,CAA0C,mBAAOD,MAAjD;AACA31B,YAAMoqD,YAAN,CAAmBjzB,eAAnB,CACEy7E,MADF,EAEE,CAFF,EAGE,CAHF,EAIE,wBAAazmF,aAJf,EAKE0mF,MALF;AAOA7yG,YAAM+yG,kBAAN,GAA2B5rF,QAA3B;AACD;;AAED;AACAA,oBAAc4W,MAAMn8B,QAAN,EAAd;AACA,QAAI5B,MAAMi9G,mBAAN,KAA8B91F,QAAlC,EAA4C;AAC1C;AACA,UAAM+kC,OAAOnuB,MAAMkuB,aAAN,EAAb;AACAjsD,YAAMwgC,aAAN,CAAoB7I,kBAApB;AACA33B,YAAMwgC,aAAN,CAAoB9B,2BAApB,CACEwtB,KAAK,CAAL,CADF,EAEEA,KAAK,CAAL,CAFF,EAGEA,KAAK,CAAL,CAHF,EAIEnuB,MACGrH,YADH,GAEGC,UAFH,GAGG3P,WAHH,EAJF,EAQE+W,MACGrH,YADH,GAEGC,UAFH,GAGGrO,OAHH,EARF;AAaAtoB,YAAMi9G,mBAAN,GAA4B91F,QAA5B;AACD;;AAED;AACA,QAAM6hC,UAAU0xD,MAAMrB,QAAN,EAAhB;AACA,QAAMV,WAAW+B,MAAM9B,qBAAN,CAA4B,CAA5B,CAAjB;AACA;AACAzxF,oBAAc4W,MAAMn8B,QAAN,EAAd;AACA,QAAI,CAAConD,WAAW2vD,QAAZ,KAAyB34G,MAAMk9G,qBAAN,KAAgC/1F,QAA7D,EAAuE;AACrEnnB,YAAMw4G,eAAN,CAAsB7gF,kBAAtB;AACA33B,YAAMw4G,eAAN,CAAsBj4E,gBAAtB,CACEvgC,MAAMwgC,aADR,EAEEzC,MACGrH,YADH,GAEGC,UAFH,GAGGrO,OAHH,EAFF,EAMEyV,MAAMi7E,UAAN,EANF;AAQAh5G,YAAMk9G,qBAAN,GAA8B/1F,QAA9B;AACD;;AAED,QAAI,CAACnnB,MAAMwxG,IAAN,CAAWn+D,OAAX,GAAqBmF,eAArB,EAAL,EAA6C;AAC3C;AACA,UAAMu7D,WAAW,IAAI71G,YAAJ,CAAiB,EAAjB,CAAjB;AACA,WAAK,IAAI8G,MAAI,CAAb,EAAgBA,MAAI,CAApB,EAAuBA,KAAvB,EAA4B;AAC1B+uG,iBAAS/uG,MAAI,CAAb,IAAmBA,MAAI,CAAL,GAAU,CAAV,GAAc,GAAhC;AACA+uG,iBAAS/uG,MAAI,CAAJ,GAAQ,CAAjB,IAAsBA,MAAI,CAAJ,GAAQ,GAAR,GAAc,CAAC,GAArC;AACA+uG,iBAAS/uG,MAAI,CAAJ,GAAQ,CAAjB,IAAsB,CAAC,GAAvB;AACD;;AAED,UAAMghG,YAAY,IAAI1nG,WAAJ,CAAgB,CAAhB,CAAlB;AACA0nG,gBAAU,CAAV,IAAe,CAAf;AACAA,gBAAU,CAAV,IAAe,CAAf;AACAA,gBAAU,CAAV,IAAe,CAAf;AACAA,gBAAU,CAAV,IAAe,CAAf;AACAA,gBAAU,CAAV,IAAe,CAAf;AACAA,gBAAU,CAAV,IAAe,CAAf;AACAA,gBAAU,CAAV,IAAe,CAAf;AACAA,gBAAU,CAAV,IAAe,CAAf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAM/6D,SAAS,oBAAajvC,WAAb,CAAyB;AACtC0qB,4BAAoB,CADkB;AAEtCjZ,gBAAQsmG;AAF8B,OAAzB,CAAf;AAIA9oE,aAAOkpE,OAAP,CAAe,QAAf;AACA,UAAMC,QAAQ,oBAAap4G,WAAb,CAAyB;AACrC0qB,4BAAoB,CADiB;AAErCjZ,gBAAQu4F;AAF6B,OAAzB,CAAd;AAIAhmG,YAAMwxG,IAAN,CAAWn+D,OAAX,GAAqBqM,SAArB,CAA+B00D,KAA/B,EAAsC,OAAtC,EAA+C,2BAAev/E,OAA9D,EAAuE;AACrEoW,sBADqE;AAErEwU,oBAAY;AAFyD,OAAvE;AAID;;AAEDz/C,UAAMy4C,YAAN,CAAmB/2C,QAAnB;AACD,GAjLD;AAkLD;;AAED;AACA;AACA;;AAEA,IAAM4nB,iBAAiB;AACrBjgB,WAAS,IADY;AAErBovC,gBAAc,IAFO;AAGrBjY,iBAAe,IAHM;AAIrBy8E,uBAAqB,IAJA;AAKrB1E,kBAAgB,IALK;AAMrBuE,wBAAsB,IAND;AAOrB1yD,gBAAc,IAPO;AAQrB+yD,sBAAoB,IARC;AASrB3E,mBAAiB,IATI;AAUrB0E,yBAAuB,IAVF;AAWrBzE,iBAAe,IAXM;AAYrBjH,QAAM,IAZe;AAarBjyC,eAAa,IAbQ;AAcrBg9C,cAAY,IAdS;AAerBC,WAAS,IAfY;AAgBrBlB,WAAS,GAhBY;AAiBrBU,aAAW,GAjBU;AAkBrB1D,kBAAgB,IAlBK;AAmBrBgB,sBAAoB,IAnBC;AAoBrBrmE,uBAAqB,CApBA;AAqBrBmqE,oBAAkB,GArBG;AAsBrBrD,aAAW,IAtBU;AAuBrBC,mBAAiB,IAvBI;AAwBrB6B,iBAAe,GAxBM;AAyBrBD,gBAAc;AAzBO,CAAvB;;AA4BA;;AAEO,SAAStzG,MAAT,CAAgBxH,SAAhB,EAA2Bd,KAA3B,EAAsD;AAAA,MAApBwI,aAAoB,uEAAJ,EAAI;;AAC3DvI,SAAOgD,MAAP,CAAcjD,KAAd,EAAqBspB,cAArB,EAAqC9gB,aAArC;;AAEA;AACA,qBAAYF,MAAZ,CAAmBxH,SAAnB,EAA8Bd,KAA9B,EAAqCwI,aAArC;;AAEAxI,QAAMy4C,YAAN,GAAqB,EAArB;AACA,kBAAMl9C,GAAN,CAAUyE,MAAMy4C,YAAhB,EAA8B,EAAEx3C,OAAO,CAAT,EAA9B;;AAEAjB,QAAMwxG,IAAN,GAAa,iBAAUx1G,WAAV,EAAb;AACAgE,QAAMwgC,aAAN,GAAsB,kBAAiBxkC,WAAjB,EAAtB;AACAgE,QAAMu4G,cAAN,GAAuB,kBAAiBv8G,WAAjB,EAAvB;AACAgE,QAAMoqD,YAAN,GAAqB,kBAAiBpuD,WAAjB,EAArB;AACAgE,QAAMw4G,eAAN,GAAwB,kBAAiBx8G,WAAjB,EAAxB;AACAgE,QAAMy4G,aAAN,GAAsB,kBAAiBz8G,WAAjB,EAAtB;AACAgE,QAAMy4G,aAAN,CAAoBxiF,QAApB,CAA6B,iBAAKD,MAAlC;AACAh2B,QAAMy4G,aAAN,CAAoBviF,QAApB,CAA6B,iBAAKF,MAAlC;AACAh2B,QAAMu/D,WAAN,GAAoB,sBAAqBvjE,WAArB,EAApB;;AAEAgE,QAAM+5G,SAAN,GAAkB,eAAKj+D,MAAL,EAAlB;AACA97C,QAAMg6G,eAAN,GAAwB,eAAKl+D,MAAL,EAAxB;;AAEA;AACA,kBAAMpgD,MAAN,CAAaoF,SAAb,EAAwBd,KAAxB,EAA+B,CAAC,SAAD,CAA/B;;AAEA;AACAq4G,wBAAsBv3G,SAAtB,EAAiCd,KAAjC;AACD;;AAED;;AAEO,IAAMhE,oCAAc,gBAAMA,WAAN,CAAkBsM,MAAlB,EAA0B,uBAA1B,CAApB;;AAEP;;kBAEe,EAAEtM,wBAAF,EAAesM,cAAf,E;;;;;;;;;;;;ACj1CR,IAAMksG,gDAAoB;AAC/B3+E,WAAS,CADsB;AAE/BF,UAAQ,CAFuB;AAG/B0nF,eAAa;AAHkB,CAA1B;;kBAMQ;AACb7I;AADa,C;;;;;;;;;ACNf9zD,OAAOC,OAAP,GAAiB,+qCAAjB,C;;;;;;;;;ACAAD,OAAOC,OAAP,GAAiB,+kPAAjB,C;;;;;;;;;ACAAD,OAAOC,OAAP,GAAiB,oyOAAjB,C;;;;;;;;;;;;;QC6NgBr4C,M,GAAAA,M;;AA7NhB;;;;AAEA;;;;AACA;;;;;;AAEA;;AAEA,IAAMg1G,iBAAiB,CAAC,iBAAD,EAAoB,SAApB,EAA+B,oBAA/B,CAAvB;;AAEA;AACA;AACA;;AAEA,SAASC,cAAT,CAAwBz8G,SAAxB,EAAmCd,KAAnC,EAA0C;AACxC;AACAA,QAAMkB,cAAN,CAAqBxB,IAArB,CAA0B,gBAA1B;;AAEAoB,YAAUixC,mBAAV,GAAgC,UAACe,QAAD,EAAWE,QAAX,EAAqBD,QAArB,EAAkC;AAChE;AACA;AACA;AACA;AACA;;AAEA,QAAIyqE,YAAYxqE,QAAhB;AACA,QAAID,SAAShxC,MAAT,GAAkB,CAAtB,EAAyB;AACvBy7G,kBAAY,wBAAiB9vF,UAAjB,CAA4B8vF,SAA5B,EAAuC,OAAvC,EAAgD,OAAhD,EACT10G,MADH;AAED;;AAED,QAAM20G,MAAMz9G,MAAMm1B,kBAAN,CAAyBsE,SAAzB,EAAZ;;AAEA,QAAIikF,kBAAkB,IAAtB;;AAEA,QAAIC,UAAU,gBAAd;AACA,QAAIF,GAAJ,EAAS;AACPE,gBACE,sBACA,wBADA,GAEA,+BAFA,GAGA,6BAJF;AAKD,KAND,MAMO;AACL39G,YAAMqJ,OAAN,CAAc6xB,YAAd,CAA2B,0BAA3B;AACA,UAAIl7B,MAAMqJ,OAAN,CAAc6xB,YAAd,CAA2B,gBAA3B,CAAJ,EAAkD;AAChDwiF,0BAAkB,yCAAlB;AACD;AACF;;AAEDF,gBAAY,wBAAiB9vF,UAAjB,CAA4B8vF,SAA5B,EAAuC,oBAAvC,EAA6D,CACpEG,OADoE,SAEvEF,MAAM,EAAN,GAAW,mDAF4D,EAGvEC,eAHuE,EAIvE,mCAJuE,EAKvE,wBALuE,EAMvE,sBANuE,EAOvE,OAPuE,EAQvE,0BARuE,EASvE,wBATuE,EAUvE,QAVuE,CAA7D,EAWT50G,MAXH;;AAaA,QAAI80G,YAAY,wBAAiBlwF,UAAjB,CACdolB,QADc,EAEd,oBAFc,EAGd,CACK6qE,OADL,SAEE,mCAFF,EAGE,wBAHF,EAIE,sBAJF,EAKE,OALF,EAME,0BANF,EAOE,wBAPF,EAQE,QARF,CAHc,EAad70G,MAbF;;AAeA,QAAI20G,GAAJ,EAAS;AACPG,kBAAY,wBAAiBlwF,UAAjB,CAA4BkwF,SAA5B,EAAuC,SAAvC,EAAkD,KAAlD,EACT90G,MADH;AAEA00G,kBAAY,wBAAiB9vF,UAAjB,CAA4B8vF,SAA5B,EAAuC,SAAvC,EAAkD,IAAlD,EACT10G,MADH;AAEA00G,kBAAY,wBAAiB9vF,UAAjB,CACV8vF,SADU,EAEV,oBAFU,EAGV,aAHU,EAIV10G,MAJF;AAKA00G,kBAAY,wBAAiB9vF,UAAjB,CACV8vF,SADU,EAEV,oBAFU,EAGV,4CAHU,EAIV10G,MAJF;AAKD;;AAED;AACA;;AAEA,QAAM+0G,YAAY,wBAAiBnwF,UAAjB,CAChBqlB,QADgB,EAEhB,oBAFgB,EAGhB4qE,OAHgB,EAIhB70G,MAJF;;AAMA,WAAO,EAAEgqC,UAAU8qE,SAAZ,EAAuB5qE,UAAUwqE,SAAjC,EAA4CzqE,UAAU8qE,SAAtD,EAAP;AACD,GAtFD;;AAwFA;AACA/8G,YAAU62C,uBAAV,GAAoC,UAClCmmE,UADkC,EAElCC,YAFkC,EAGlCC,YAHkC,EAI/B;AACH,QAAMjnF,OAAOj2B,UAAUixC,mBAAV,CACX+rE,UADW,EAEXC,YAFW,EAGXC,YAHW,CAAb;;AAMA,QAAMhrF,SAASlyB,UAAUm9G,gBAAV,CACblnF,KAAK+b,QADQ,EAEb/b,KAAKic,QAFQ,EAGbjc,KAAKgc,QAHQ,CAAf;;AAMA,WAAOjyC,UAAUg3C,kBAAV,CAA6B9kB,MAA7B,CAAP;AACD,GAlBD;;AAoBAlyB,YAAUg3C,kBAAV,GAA+B,UAAC9kB,MAAD,EAAY;AACzC,QAAI,CAACA,MAAL,EAAa;AACX,aAAO,IAAP;AACD;;AAED;AACA,QAAI,CAACA,OAAOkrF,WAAP,EAAD,IAAyB,CAAClrF,OAAO5E,aAAP,EAA9B,EAAsD;AACpD,aAAO,IAAP;AACD;;AAED;AACA,QAAI,CAACttB,UAAUq9G,UAAV,CAAqBnrF,MAArB,CAAL,EAAmC;AACjC,aAAO,IAAP;AACD;;AAED,WAAOA,MAAP;AACD,GAhBD;;AAkBAlyB,YAAUm9G,gBAAV,GAA6B,UAACH,UAAD,EAAaC,YAAb,EAA2BC,YAA3B,EAA4C;AACvE;AACA,QAAMI,iBAAeN,UAAf,GAA4BC,YAA5B,GAA2CC,YAAjD;AACA,QAAMl1G,SAAS,yBAAIs1G,SAAJ,CAAf;;AAEA;AACA,QAAMzrF,MAAM1yB,OAAOC,IAAP,CAAYF,MAAMq+G,cAAlB,EAAkC77G,OAAlC,CAA0CsG,MAA1C,CAAZ;;AAEA,QAAI6pB,QAAQ,CAAC,CAAb,EAAgB;AACd;AACA,UAAM2rF,MAAM,wBAAiBtiH,WAAjB,EAAZ;AACAsiH,UAAI/uF,UAAJ,CAAevvB,MAAMqJ,OAArB;AACAi1G,UAAIC,eAAJ,GAAsBC,SAAtB,CAAgCV,UAAhC;AACAQ,UAAIG,iBAAJ,GAAwBD,SAAxB,CAAkCT,YAAlC;AACA,UAAIC,YAAJ,EAAkB;AAChBM,YAAII,iBAAJ,GAAwBF,SAAxB,CAAkCR,YAAlC;AACD;AACDM,UAAIK,UAAJ,CAAe71G,MAAf;AACA9I,YAAMq+G,cAAN,CAAqBv1G,MAArB,IAA+Bw1G,GAA/B;AACA,aAAOA,GAAP;AACD;;AAED,WAAOt+G,MAAMq+G,cAAN,CAAqBv1G,MAArB,CAAP;AACD,GAvBD;;AAyBAhI,YAAU+3B,wBAAV,GAAqC,UAACqnB,GAAD,EAAS;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEAp/C,cAAU89G,oBAAV;;AAEA3+G,WAAOC,IAAP,CAAYF,MAAMq+G,cAAlB,EACGj8G,GADH,CACO,UAACjC,GAAD;AAAA,aAASH,MAAMq+G,cAAN,CAAqBl+G,GAArB,CAAT;AAAA,KADP,EAEGjD,OAFH,CAEW,UAAC2hH,EAAD;AAAA,aAAQA,GAAGhmF,wBAAH,CAA4BqnB,GAA5B,CAAR;AAAA,KAFX;AAGD,GAdD;;AAgBAp/C,YAAU+3B,wBAAV,GAAqC,YAAM;AACzC;AACA,QAAI74B,MAAM8+G,cAAV,EAA0B;AACxB9+G,YAAM++G,eAAN,CAAsBzvF,OAAtB;AACAtvB,YAAM++G,eAAN,GAAwB,IAAxB;AACD;AACF,GAND;;AAQAj+G,YAAUq9G,UAAV,GAAuB,UAACnrF,MAAD,EAAY;AACjC,QAAIhzB,MAAM++G,eAAN,KAA0B/rF,MAA9B,EAAsC;AACpC,aAAO,CAAP;AACD;;AAED;AACA,QAAIhzB,MAAM++G,eAAV,EAA2B;AACzB/+G,YAAM++G,eAAN,CAAsBzvF,OAAtB;AACD;AACD0D,WAAO5lB,IAAP;AACApN,UAAM++G,eAAN,GAAwB/rF,MAAxB;AACA,WAAO,CAAP;AACD,GAZD;AAaD;;AAED;AACA;AACA;;AAEA,IAAM1J,iBAAiB;AACrBy1F,mBAAiB,IADI;AAErBV,kBAAgB,IAFK;AAGrBh1G,WAAS,IAHY;AAIrB8rB,sBAAoB;AAJC,CAAvB;;AAOA;;AAEO,SAAS7sB,MAAT,CAAgBxH,SAAhB,EAA2Bd,KAA3B,EAAsD;AAAA,MAApBwI,aAAoB,uEAAJ,EAAI;;AAC3DvI,SAAOgD,MAAP,CAAcjD,KAAd,EAAqBspB,cAArB,EAAqC9gB,aAArC;;AAEA;AACAxI,QAAMq+G,cAAN,GAAuB,EAAvB;;AAEA;AACA,kBAAM9iH,GAAN,CAAUuF,SAAV,EAAqBd,KAArB;AACA,kBAAMtE,MAAN,CAAaoF,SAAb,EAAwBd,KAAxB,EAA+Bs9G,cAA/B;;AAEA;AACAC,iBAAez8G,SAAf,EAA0Bd,KAA1B;;AAEA,SAAOC,OAAOsB,MAAP,CAAcT,SAAd,CAAP;AACD;;AAED;;AAEO,IAAM9E,oCAAc,gBAAMA,WAAN,CAAkBsM,MAAlB,EAA0B,gBAA1B,CAApB;;AAEP;;kBAEe,EAAEtM,wBAAF,EAAesM,cAAf,E;;;;;;ACnPf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;AACD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,cAAc;AAC7B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,cAAc;AAC7B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,mBAAmB;AAClC;AACA;AACA;AACA,eAAe,aAAa;AAC5B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,kBAAkB;AACjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AAAA;AACL,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,CAAC;;;;;;;;;;;;;;QCpLeA,M,GAAAA,M;;AAnGhB;;;;;;IAEQtN,a,mBAAAA,a;;AAER;AACA;AACA;;AAEA,SAASgkH,2BAAT,CAAqCl+G,SAArC,EAAgDd,KAAhD,EAAuD;AACrD;AACAA,QAAMkB,cAAN,CAAqBxB,IAArB,CAA0B,6BAA1B;;AAEA;AACA;AACA;AACA;AACAoB,YAAUm+G,WAAV,GAAwB,YAAM;AAC5B,SAAK,IAAIj6G,IAAI,CAAb,EAAgBA,IAAIhF,MAAMk/G,oBAA1B,EAAgD,EAAEl6G,CAAlD,EAAqD;AACnD,UAAIhF,MAAMm/G,YAAN,CAAmBn6G,CAAnB,MAA0B,IAA9B,EAAoC;AAClChK,sBAAc,gDAAd;AACD;AACF;AACDgF,UAAMm/G,YAAN,GAAqB,EAArB;AACAn/G,UAAMk/G,oBAAN,GAA6B,CAA7B;AACD,GARD;;AAUA;AACAp+G,YAAUyuB,UAAV,GAAuB,UAACC,GAAD,EAAS;AAC9B,QAAIxvB,MAAMqJ,OAAN,KAAkBmmB,GAAtB,EAA2B;AACzB,UAAIxvB,MAAMqJ,OAAN,KAAkB,CAAtB,EAAyB;AACvBvI,kBAAUm+G,WAAV;AACD;AACDj/G,YAAMqJ,OAAN,GAAgBmmB,GAAhB;AACA,UAAIxvB,MAAMqJ,OAAV,EAAmB;AACjBrJ,cAAMk/G,oBAAN,GAA6B1vF,IAAIgQ,YAAJ,CAC3BhQ,IAAIy5C,uBADuB,CAA7B;AAGA,aAAK,IAAIjkE,IAAI,CAAb,EAAgBA,IAAIhF,MAAMk/G,oBAA1B,EAAgD,EAAEl6G,CAAlD,EAAqD;AACnDhF,gBAAMm/G,YAAN,CAAmBn6G,CAAnB,IAAwB,KAAxB;AACD;AACF;AACDlE,gBAAUY,QAAV;AACD;AACF,GAhBD;;AAkBA;AACA;AACA;AACA;AACA;AACA;AACA;AACAZ,YAAUomE,QAAV,GAAqB,YAAM;AACzB,SAAK,IAAIliE,IAAI,CAAb,EAAgBA,IAAIhF,MAAMk/G,oBAA1B,EAAgDl6G,GAAhD,EAAqD;AACnD,UAAI,CAAClE,UAAUs+G,WAAV,CAAsBp6G,CAAtB,CAAL,EAA+B;AAC7BhF,cAAMm/G,YAAN,CAAmBn6G,CAAnB,IAAwB,IAAxB;AACA,eAAOA,CAAP;AACD;AACF;AACD,WAAO,CAAC,CAAR;AACD,GARD;;AAUAlE,YAAUu+G,YAAV,GAAyB,UAAC1O,IAAD,EAAU;AACjC,QAAI7vG,UAAUs+G,WAAV,CAAsBzO,IAAtB,CAAJ,EAAiC;AAC/B,aAAO,CAAC,CAAR;AACD;;AAED3wG,UAAMm/G,YAAN,CAAmBxO,IAAnB,IAA2B,IAA3B;AACA,WAAOA,IAAP;AACD,GAPD;;AASA;AACA;AACA;AACA;AACA7vG,YAAUs+G,WAAV,GAAwB,UAACE,aAAD;AAAA,WAAmBt/G,MAAMm/G,YAAN,CAAmBG,aAAnB,CAAnB;AAAA,GAAxB;;AAEA;AACA;AACA;AACA;AACA;AACAx+G,YAAUqmE,IAAV,GAAiB,UAACvkE,GAAD,EAAS;AACxB5C,UAAMm/G,YAAN,CAAmBv8G,GAAnB,IAA0B,KAA1B;AACD,GAFD;AAGD;;AAED;AACA;AACA;;AAEA,IAAM0mB,iBAAiB;AACrBjgB,WAAS,IADY;AAErB61G,wBAAsB,CAFD;AAGrBC,gBAAc;AAHO,CAAvB;;AAMA;;AAEO,SAAS72G,MAAT,CAAgBxH,SAAhB,EAA2Bd,KAA3B,EAAsD;AAAA,MAApBwI,aAAoB,uEAAJ,EAAI;;AAC3DvI,SAAOgD,MAAP,CAAcjD,KAAd,EAAqBspB,cAArB,EAAqC9gB,aAArC;;AAEA,kBAAMjN,GAAN,CAAUuF,SAAV,EAAqBd,KAArB;;AAEAA,QAAMm/G,YAAN,GAAqB,EAArB;;AAEA;AACA,kBAAM3jH,GAAN,CAAUsF,SAAV,EAAqBd,KAArB,EAA4B,CAAC,sBAAD,CAA5B;;AAEA,kBAAMtE,MAAN,CAAaoF,SAAb,EAAwBd,KAAxB,EAA+B,CAAC,SAAD,CAA/B;;AAEA;AACAg/G,8BAA4Bl+G,SAA5B,EAAuCd,KAAvC;AACD;;AAED;;AAEO,IAAMhE,oCAAc,gBAAMA,WAAN,CACzBsM,MADyB,EAEzB,6BAFyB,CAApB;;AAKP;;kBAEe,EAAEtM,wBAAF,EAAesM,cAAf,E;;;;;;AC5Hf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC,qBAAqB;;AAEtB;;;;AAIA;AACA;AACA;;AAEA;AACA,kBAAkB,YAAY,EAAE;AAChC;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,qBAAqB;AACxC;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,+BAA+B;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,+BAA+B;AAC9E;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,iBAAiB,WAAW,WAAW;AACvC,iBAAiB,WAAW,WAAW;AACvC,iBAAiB,WAAW,YAAY;AACxC,mBAAmB,aAAa,aAAa;AAC7C,mBAAmB,aAAa,aAAa;AAC7C,mBAAmB,aAAa,cAAc;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,qBAAqB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,qBAAqB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,4BAA4B,2BAA2B,wCAAwC,iBAAiB,2DAA2D,4DAA4D,+CAA+C,KAAK;AACxU,6CAA6C,8BAA8B,2BAA2B,iBAAiB,mDAAmD,KAAK;AAC/K;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,8BAA8B;AAC9B;AACA,0BAA0B;AAC1B;AACA,gCAAgC;AAChC;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA,+BAA+B;AAC/B;AACA,2BAA2B;AAC3B;AACA,iCAAiC;AACjC;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,mBAAmB,YAAY;AAC/B,qBAAqB,WAAW;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,mBAAmB,YAAY;AAC/B,qBAAqB,WAAW;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,+BAA+B,iBAAiB,gEAAgE,KAAK;AAC1J,qCAAqC,uBAAuB,iBAAiB,2BAA2B,KAAK;AAC7G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,8BAA8B;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC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gB,0CAA0C,EAAE,2BAA2B,8BAA8B,EAAE,gBAAgB,0CAA0C,EAAE,2BAA2B,wBAAwB,EAAE,aAAa,sCAAsC,EAAE,2BAA2B,wBAAwB,EAAE,aAAa,uCAAuC,EAAE,2BAA2B,wBAAwB,EAAE,aAAa,uCAAuC,EAAE,2BAA2B,wBAAwB,EAAE,aAAa,uCAAuC,EAAE,2BAA2B,yBAAyB,EAAE,cAAc,sCAAsC,EAAE,2BAA2B,0CAA0C,EAAE,gCAAgC,qCAAqC,EAAE,2BAA2B,0BAA0B,EAAE,gBAAgB,qCAAqC,EAAE,2BAA2B,wBAAwB,EAAE,cAAc,+BAA+B,EAAE,2BAA2B,8BAA8B,EAAE,oBAAoB,4BAA4B,EAAE,2BAA2B,0BAA0B,EAAE,aAAa,4BAA4B,EAAE,uBAAuB,gBAAgB,uCAAuC,EAAE,uBAAuB,iBAAiB,uCAAuC,EAAE,uBAAuB,iBAAiB,+BAA+B,EAAE,uBAAuB,kBAAkB,uCAAuC,EAAE,uBAAuB,kBAAkB,uCAAuC,EAAE,uBAAuB,kBAAkB,6BAA6B;AACplW;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uBAAuB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,yBAAyB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,6CAA6C;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,8BAA8B;AAC9E;AACA,OAAO;AACP;AACA;AACA;AACA,qEAAqE;AACrE;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,oCAAoC;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,YAAY,EAAE;AAChC;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,mCAAmC,0BAA0B,EAAE;AAC/D,yCAAyC,eAAe;AACxD;AACA;AACA;AACA,8DAA8D,+DAA+D;AAC7H;AACA;AACA,UAAU;AACV;AACA;AACA,gCAAgC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;AACjjB,iDAAiD,0CAA0C,0DAA0D,EAAE;AACvJ;AACA,oFAAoF,IAAI,QAAQ,IAAI;AACpG;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;AACD;AACA,OAAO;AACP;AACA,iCAAiC;AACjC,OAAO;AACP;AACA,CAAC;AACD,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uEAAuE,QAAQ;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uEAAuE,QAAQ;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,UAAU,gBAAgB,EAAE;AACrF;AACA;AACA;AACA,mDAAmD,UAAU,gBAAgB,EAAE;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B,8CAA8C;AAC9C;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,QAAQ;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,CAAC;AACD;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;;AAGA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;;;;;;;;;;;;QC1rFeA,M,GAAAA,M;;AA9uBhB;;AAEA;;;;AACA;;;;;;IAEQvN,a,mBAAAA,a;;AAER;;AAEA;;;;;AAKA;AACA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GAAa,IAApB,CAAV;AACA3L,cAAU,IAAV;AACD,GALD,MAKO,IAAIosH,eAAe,CAAnB,EAAsB;AAC3BzgH,UAAM,CAACwgH,MAAMz/G,MAAM,CAAZ,KAAkB,CAAnB,IAAyBy/G,MAAMz/G,MAAM,CAAZ,CAA/B;AACA1M,cAAU0rH,OAAO//G,OAAO,EAAd,CAAV;AACA3L,cAAU0rH,OAAQ//G,OAAO,CAAR,GAAa,IAApB,CAAV;AACA3L,cAAU0rH,OAAQ//G,OAAO,CAAR,GAAa,IAApB,CAAV;AACA3L,cAAU,GAAV;AACD;;AAEDqsH,QAAMhyH,IAAN,CAAW2F,MAAX;;AAEA,SAAOqsH,MAAM5xH,IAAN,CAAW,EAAX,CAAP;AACD,C;;;;;;;ACjHD;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,UAAU;AAC7C;AACA;AACA,8BAA8B;AAC9B;AACA,qBAAqB,8BAA8B;AACnD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,eAAe;;AAElB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,kBAAkB;AAClB,mBAAmB;AACnB,sBAAsB;AACtB,mBAAmB;;AAEnB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,cAAc;;AAEjC;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;;AAE/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,qBAAqB,yCAAyC;;AAE9D;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;;;;;;;AC/YA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gCAAgC;AAChC;;;AAGA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,0BAA0B;AAC1B,0BAA0B;AAC1B,0BAA0B;AAC1B,0BAA0B;;AAE1B,mBAAmB;;AAEnB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,oBAAoB,sBAAsB,qBAAqB,cAAc,EAAE;;;AAG/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB,QAAQ;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,YAAY;AAC/B,kBAAkB,UAAU;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC,wBAAwB;AACxB,YAAY;AACZ,UAAU;AACV,+BAA+B;AAC/B,gCAAgC;AAChC;AACA;;AAEA,sBAAsB;;AAEtB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,0BAA0B;;AAE3D;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA,kEAAkE;AAClE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB,aAAa;;AAEb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE;;AAEnE;AACA,yDAAyD;AACzD;;AAEA;;AAEA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,uDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,2DAA2D;AAC3D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,0DAA0D;AAC1D;;AAEA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB,aAAa;;AAEb;;AAEA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,OAAO,EAAE;AACvC;;AAEA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,4DAA4D;AAC5D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;;AAEA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,WAAW;AACX,mBAAmB;;AAEnB;;AAEA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,OAAO,EAAE;AACvC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,oEAAoE;AACpE;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,0DAA0D;AAC1D;;AAEA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA,qBAAqB;AACrB,eAAe;;AAEf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA,mBAAmB;AACnB,kBAAkB;AAClB,0BAA0B;AAC1B,4BAA4B;AAC5B,uBAAuB;AACvB,mBAAmB;AACnB,gBAAgB;AAChB,qBAAqB;AACrB,mBAAmB;AACnB,2BAA2B;AAC3B,uBAAuB;;AAEvB,kBAAkB;AAClB,kBAAkB;AAClB,kBAAkB;;AAElB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB;;AAEnB,iBAAiB;AACjB,qBAAqB;AACrB,qBAAqB;AACrB,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,wBAAwB;AACxB,sBAAsB;AACtB,2BAA2B;AAC3B,oBAAoB;AACpB,uBAAuB;AACvB,qBAAqB;;AAErB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB;AACjB,oBAAoB;;AAEpB;AACA;;AAEA,sBAAsB;;AAEtB;;AAEA;;AAEA,2CAA2C;AAC3C,6CAA6C;AAC7C,4CAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB;AACvB,uBAAuB;AACvB,uBAAuB;;AAEvB;AACA;AACA;;AAEA,0BAA0B;AAC1B,+CAA+C;AAC/C;;AAEA,oBAAoB;AACpB,oBAAoB;AACpB;AACA;AACA;;AAEA,gDAAgD;AAChD;AACA;AACA;;AAEA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB;;AAEpB;AACA;AACA;AACA;AACA;;AAEA,mBAAmB;AACnB,sBAAsB;AACtB,mBAAmB;AACnB,kBAAkB;;;AAGlB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA,6BAA6B,uBAAuB;AACpD,8BAA8B,uBAAuB;AACrD;AACA;AACA;;;AAGA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;;AAEA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA,aAAa;AACb;AACA;;;AAGA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,qBAAqB;;AAErB,sCAAsC;;AAEtC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA,eAAe;;AAEf;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB;AAChB;AACA;;AAEA;AACA;;AAEA,uBAAuB;AACvB,qBAAqB;AACrB;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA,6BAA6B,uBAAuB;AACpD;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;;AAEA;AACA;AACA;AACA,sBAAsB;;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;;AAEnC;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B,uBAAuB;;AAEvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA,8BAA8B;;AAE9B,2BAA2B,aAAa;AACxC,oBAAoB,qBAAqB;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,oDAAoD;AACpD;AACA;;AAEA,aAAa;;AAEb;AACA;AACA,qBAAqB;AACrB,yBAAyB;AACzB,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE;AAChE;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACj1DA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,8BAA8B;AAC9B;;AAEA;;;AAGA,oBAAoB,sBAAsB,qBAAqB,cAAc,EAAE;;AAE/E;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,wBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;;AAEA,kCAAkC;AAClC,iCAAiC;AACjC,iCAAiC;AACjC,4BAA4B;AAC5B,iCAAiC;;AAEjC;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA,2BAA2B;AAC3B,oBAAoB;AACpB,6BAA6B;AAC7B;;;;AAIA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR,WAAW;AACX,WAAW;AACX,YAAY;AACZ,QAAQ;AACR,mBAAmB;;AAEnB,gBAAgB,kBAAkB;AAClC;AACA;;AAEA;AACA;AACA;AACA,+CAA+C;;AAE/C,0BAA0B,eAAe;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,UAAU,EAAE;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,QAAQ;;AAE/B;AACA;;AAEA;AACA;AACA;AACA,oCAAoC,QAAQ;AAC5C,uBAAuB;AACvB,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,yBAAyB,YAAY;AACrC;AACA;AACA;AACA,yBAAyB,UAAU;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,mBAAmB;AACnB,qBAAqB;AACrB;AACA,0CAA0C;AAC1C,eAAe;AACf,WAAW;AACX,QAAQ;;AAER;AACA;AACA;AACA,gBAAgB,kBAAkB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa,gBAAgB;AAC7B;AACA,oBAAoB,UAAU;AAC9B;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,QAAQ;AACR,WAAW;AACX,aAAa;AACb,WAAW;AACX,WAAW;AACX;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,yBAAyB;AACzC;AACA,eAAe,8BAA8B;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,WAAW;AAC3B;AACA,eAAe,8BAA8B;AAC7C;AACA;AACA;AACA;AACA,aAAa;AACb,QAAQ,gBAAgB;AACxB;AACA,eAAe,oCAAoC;AACnD;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,kBAAkB;AAClC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,aAAa;AAC1B;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA,QAAQ;;AAER;AACA,aAAa,aAAa,QAAQ,iCAAiC;AACnE,aAAa,aAAa,QAAQ,iCAAiC;AACnE,aAAa,cAAc,OAAO,+BAA+B;;AAEjE;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB,eAAe;AACf,kBAAkB;AAClB;AACA,eAAe;;AAEf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,YAAY;AACZ;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,OAAO;;AAEtD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B,2BAA2B;AAC3B;AACA,WAAW;AACX,SAAS;AACT,aAAa;AACb,WAAW;AACX,YAAY;;AAEZ;AACA;AACA;AACA;AACA;;AAEA;AACA,gCAAgC;AAChC;AACA,OAAO;AACP;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA,kCAAkC;AAClC;AACA,eAAe;AACf;AACA;;AAEA,kCAAkC;AAClC;AACA;AACA;AACA,oCAAoC;AACpC;AACA,OAAO;;AAEP;AACA;AACA;;AAEA,KAAK;AACL;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,oBAAoB;AACpB,WAAW;;AAEX;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa,WAAW;AACxB;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uCAAuC,QAAQ,OAAO,wBAAwB;;AAE9E;AACA;AACA;AACA,eAAe;AACf;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;;AAEA,8BAA8B;;AAE9B,6BAA6B;AAC7B;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,mBAAmB;AACnB;AACA,QAAQ;AACR,mBAAmB;AACnB,aAAa;;AAEb,wCAAwC;;AAExC,gBAAgB;AAChB,oBAAoB;AACpB,oBAAoB;;AAEpB;AACA;AACA;AACA;AACA,gDAAgD;;AAEhD,aAAa,eAAe;AAC5B;AACA;;AAEA;AACA;;AAEA,KAAK;AACL;;AAEA,KAAK;;AAEL,+BAA+B,kCAAkC;AACjE;;AAEA,KAAK;AACL;;AAEA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,KAAK;AACL;AACA;;AAEA,KAAK;AACL;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,mBAAmB;AACnB;AACA,QAAQ;AACR,mBAAmB;AACnB,aAAa;;AAEb,wCAAwC;;AAExC,gBAAgB;AAChB,oBAAoB;AACpB,oBAAoB;;AAEpB,+BAA+B;AAC/B;AACA;AACA;AACA;;AAEA,aAAa,eAAe;AAC5B;AACA;;AAEA;AACA;;AAEA,KAAK;AACL,UAAU,iCAAiC,EAAE;;AAE7C,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;;AAEA,KAAK;AACL;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,kBAAkB;;AAElB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kCAAkC,kBAAkB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA,WAAW;;AAEX;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA,gCAAgC;AAChC,gBAAgB,gBAAgB;AAChC;AACA;AACA;AACA;;AAEA,wCAAwC;AACxC;;AAEA,wCAAwC;AACxC;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,IAAI,MAAM,GAAG,MAAM,GAAG;AAChD;AACA;AACA;AACA,SAAS,IAAI,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,IAAI,MAAM,IAAI;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc,cAAc;AAC5B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,iBAAiB;AACjB,WAAW;AACX;AACA,wDAAwD;AACxD,uCAAuC;AACvC;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,iBAAiB;AACjB,WAAW;AACX;AACA,4BAA4B;AAC5B,sBAAsB;;AAEtB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,kCAAkC,wBAAwB;;AAE1D,GAAG;AACH;AACA,4CAA4C;AAC5C;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,GAAG;;AAEH;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,kBAAkB;AAClB;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,iBAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;ACnsCA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,UAAU;AAC7C;AACA;AACA,8BAA8B;AAC9B;AACA,qBAAqB,8BAA8B;AACnD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG,eAAe;;AAElB;;AAEA;AACA;AACA;AACA;AACA,+BAA+B,sBAAsB;AACrD;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB,mBAAmB;AACnB,sBAAsB;AACtB,mBAAmB;;AAEnB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,mBAAmB,cAAc;AACjC;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,sDAAsD;;AAEtD;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,kEAAkE;;AAEvF;;AAEA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,qBAAqB,yCAAyC;;AAE9D;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;;;;;;;ACjaA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;;;AAGA,gBAAgB;AAChB,iBAAiB;AACjB,gBAAgB;AAChB,cAAc;AACd,iBAAiB;AACjB,iBAAiB;AACjB,gBAAgB;AAChB,mBAAmB;AACnB,gBAAgB;AAChB,mBAAmB;AACnB,iBAAiB;AACjB,qBAAqB;AACrB,uBAAuB;AACvB,uBAAuB;AACvB,sBAAsB;AACtB,qBAAqB;AACrB,sBAAsB;AACtB,wBAAwB;AACxB,yBAAyB;AACzB,yBAAyB;AACzB,wBAAwB;AACxB,2BAA2B;AAC3B,yBAAyB;AACzB,4BAA4B;AAC5B,0BAA0B;AAC1B,wBAAwB;AACxB,kBAAkB;AAClB,mBAAmB;AACnB,iBAAiB;AACjB,gBAAgB;AAChB,gBAAgB;AAChB,iBAAiB;;AAEjB;;;;AAIA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA,gBAAgB;AAChB,oBAAoB;AACpB,gBAAgB;AAChB,wBAAwB;AACxB,iBAAiB;AACjB,gBAAgB;AAChB,iBAAiB;AACjB,iBAAiB;AACjB;AACA,mBAAmB;;AAEnB;AACA,iBAAiB;AACjB,iBAAiB;AACjB,iBAAiB;AACjB,iBAAiB;AACjB,qBAAqB;;AAErB;AACA,gBAAgB;AAChB,gBAAgB;;AAEhB;AACA,kBAAkB;AAClB,kBAAkB;;AAElB;AACA,iBAAiB;;AAEjB;AACA,sBAAsB;AACtB,uBAAuB;AACvB,mBAAmB;AACnB,oBAAoB;;AAEpB;AACA,iBAAiB;AACjB,gBAAgB;AAChB,iBAAiB;AACjB,gBAAgB;AAChB,mBAAmB;;AAEnB,mCAAmC;AACnC,mCAAmC;;AAEnC;AACA;AACA;AACA;AACA,yCAAyC;AACzC,qBAAqB;AACrB,sBAAsB;AACtB,gBAAgB;AAChB,gBAAgB;AAChB,eAAe;AACf;;AAEA;AACA;;AAEA,6BAA6B,uBAAuB;AACpD;AACA;AACA,gBAAgB;AAChB,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,6BAA6B,uBAAuB;AACpD;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,6BAA6B,uBAAuB;AACpD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,cAAc,uBAAuB;AACrC,sBAAsB;;AAEtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB;;AAEpB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,uBAAuB,uBAAuB;AAC9C,uBAAuB,uBAAuB;AAC9C,uBAAuB,uBAAuB;AAC9C,uBAAuB,uBAAuB;;AAE9C,uEAAuE,UAAU;;AAEjF;AACA;AACA,sBAAsB,uBAAuB;;AAE7C,uEAAuE,UAAU;;AAEjF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,iBAAiB;AACzD,sCAAsC,qBAAqB;AAC3D;AACA;AACA;AACA;;AAEA;AACA;AACA,oBAAoB;AACpB,WAAW;AACX,UAAU;AACV,iBAAiB;AACjB,WAAW;AACX,WAAW;AACX,gBAAgB;AAChB,WAAW;AACX,WAAW;AACX;AACA,eAAe;AACf,mCAAmC;AACnC,aAAa;AACb,mCAAmC;AACnC,UAAU;AACV,UAAU;AACV,+BAA+B;AAC/B;;AAEA,QAAQ;;AAER;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA,4BAA4B,qBAAqB,EAAE;;;AAGnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B,iBAAiB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,aAAa;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,iBAAiB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA;AACA;AACA,oBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,oBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B,iBAAiB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,iBAAiB;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,iBAAiB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,aAAa;AACzC,4BAA4B,aAAa;AACzC,2BAA2B,iBAAiB;AAC5C,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,iBAAiB;AAC9C;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB;AAChB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,oEAAoE;AACpE;AACA;AACA;;AAEA,sCAAsC,OAAO;AAC7C;AACA,6BAA6B,iBAAiB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,iBAAiB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,iBAAiB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,iBAAiB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iCAAiC,OAAO;;AAExC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,iBAAiB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf,kEAAkE;AAClE;AACA;AACA;;AAEA,kCAAkC,OAAO;AACzC;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA,kDAAkD,OAAO;AACzD;AACA,6BAA6B,iBAAiB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,iBAAiB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf,oEAAoE;AACpE;AACA;AACA;;AAEA,oCAAoC,OAAO;AAC3C;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA,kDAAkD,OAAO;AACzD;AACA,6BAA6B,iBAAiB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,iBAAiB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,iBAAiB;AAC1C;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,qBAAqB;AAC3D,8BAA8B,aAAa;AAC3C;AACA;AACA;AACA;AACA,aAAa;AACb,qCAAqC,kBAAkB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,qBAAqB;AACzD;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,0BAA0B,aAAa;AACvC;AACA;AACA;AACA;AACA,SAAS;AACT,iCAAiC,kBAAkB;AACnD;AACA;AACA,yBAAyB,iBAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,iBAAiB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,iBAAiB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iFAAiF;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,6BAA6B,uBAAuB;AACpD;AACA,+BAA+B,uBAAuB;;AAEtD;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,6DAA6D,uBAAuB;AACpF;;AAEA;AACA;AACA;;AAEA;AACA;AACA,eAAe;AACf,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnhDA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa;AACb,cAAc;;AAEd;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV,WAAW;AACX,WAAW;AACX,UAAU;AACV,UAAU;AACV;AACA,WAAW;AACX;AACA,YAAY;AACZ,YAAY;AACZ,YAAY;AACZ;AACA,eAAe;AACf,WAAW;AACX,WAAW;AACX,YAAY;AACZ,YAAY;AACZ,YAAY;AACZ,YAAY;AACZ,WAAW;AACX,SAAS;AACT;AACA,UAAU;AACV,WAAW;AACX,WAAW;AACX;;;AAGA,oBAAoB;;AAEpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;;AAEA,wBAAwB;AACxB;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B,4BAA4B;AAC5B,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA,gCAAgC;AAChC;AACA,+BAA+B;AAC/B;AACA;AACA;AACA,mBAAmB;AACnB,qCAAqC;AACrC;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA,mBAAmB;AACnB;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA,qBAAqB;AACrB,uCAAuC;AACvC;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA,+BAA+B;AAC/B;AACA;AACA;AACA,mBAAmB;AACnB,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC,kBAAkB;AAClB;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB;AAChB;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,YAAY;AACZ;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxVA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB;;AAEzB,cAAc;AACd,cAAc;AACd,uBAAuB;AACvB,eAAe;AACf,eAAe;AACf,eAAe;AACf,eAAe;AACf,eAAe;AACf,eAAe;AACf,WAAW;AACX,WAAW;AACX,UAAU;AACV,WAAW;AACX,WAAW;AACX,kBAAkB;AAClB;AACA,iBAAiB;AACjB,UAAU;AACV,2CAA2C,eAAe;AAC1D,0CAA0C,eAAe;AACzD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe,gBAAgB;AAC/B;AACA;AACA,eAAe,aAAa;AAC5B;AACA;;AAEA;AACA;AACA,qBAAqB,UAAU;AAC/B,2BAA2B,OAAO;AAClC;AACA;AACA;AACA;AACA,kBAAkB;AAClB,sCAAsC,2BAA2B;AACjE,uCAAuC;AACvC,wCAAwC;AACxC;;;AAGA;AACA;AACA;AACA;;AAEA;AACA,aAAa;AACb;AACA,eAAe,WAAW;AAC1B,2BAA2B,OAAO;AAClC;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,cAAc;AACd;;AAEA;AACA;AACA,eAAe,eAAe;AAC9B;AACA;;AAEA;AACA,eAAe,aAAa;AAC5B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA,GAAG,OAAO;AACV;AACA;AACA;AACA;;AAEA;AACA,WAAW;AACX,UAAU;AACV,YAAY;AACZ,qBAAqB;AACrB,cAAc;AACd,WAAW;AACX,WAAW;AACX,mBAAmB;AACnB,kBAAkB;;AAElB;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,wBAAwB,OAAO;AAC/B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB;;AAElB;AACA;AACA;AACA;AACA;AACA,wBAAwB,OAAO;AAC/B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;ACtVA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;;ACzDA;;;;AAEA;;;;AACA;;;;AACA;;;;IAEQ9E,a,mBAAAA,a;IAAeD,a,mBAAAA,a;;AAEvB;;AAEA,IAAI+0H,eAAe,CAAnB;;AAEA,SAASZ,WAAT,CAAqBpuE,GAArB,EAAwC;AAAA,MAAdxB,OAAc,uEAAJ,EAAI;;AACtC,SAAO,IAAItc,OAAJ,CAAY,UAACmlC,OAAD,EAAUC,MAAV,EAAqB;AACtC,QAAMypD,MA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ACjlC,GAAD;AAAA,eAASglC,QAAQmlC,OAAR,CAAgBnqE,GAAhB,CAAT;AAAA,OAHD,CAAP;AAID;AA/FI,GAAP;AAiGD;;kBAEc;AACb89C;AADa,C;;;;;;;ACtMf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB,IAAI;AAC1B,8BAA8B;AAC9B;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,qCAAqC;AAChD,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA,8CAA8C;AAC9C;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB;AACA,YAAY,OAAO;AACnB;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA,eAAe,SAAS;AACxB,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oFAAoF;AACpF,uCAAuC;AACvC;AACA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,SAAS;AACxB,sCAAsC;AACtC;AACA,gBAAgB,MAAM;AACtB;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;;AAEA,SAAS;AACT;AACA,KAAK;;AAEL;AACA;AACA,iBAAiB,cAAc;AAC/B;AACA,iBAAiB,qCAAqC;AACtD,iBAAiB,OAAO;AACxB,iBAAiB,mBAAmB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,kBAAkB;AAClB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,iBAAiB,cAAc;AAC/B,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB,gBAAgB,MAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,2BAA2B,iBAAiB;AAC5C;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA,gBAAgB,0CAA0C;AAC1D;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA,gBAAgB,aAAa;AAC7B;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpYA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,kCAAkC,SAAS;AAC3C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0CAA0C,UAAU;AACpD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;ACtJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,QAAQ,WAAW;;AAEnB;AACA;AACA;AACA,QAAQ,WAAW;;AAEnB;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,QAAQ,WAAW;;AAEnB;AACA;AACA,QAAQ,UAAU;;AAElB;AACA;;;;;;;ACnFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;AAIA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;;;;;;AC9HA,e;;;;;;;ACAA;;AAEA;;AAEA,iDAAiD,0CAA0C,0DAA0D,EAAE;;AAEvJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB;AACjB,gDAAgD;AAChD;AACA;AACA;;AAEA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC,G;;;;;;;ACxED;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,SAAS;AACtB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,E;;;;;;AC9CA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;AACA,uD;;;;;;ACDA;AACA;AACA;AACA;AACA;AACA,CAAC,E;;;;;;ACLD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE;AACnE;AACA,qFAAqF;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,eAAe;AACf,eAAe;AACf,eAAe;AACf,gBAAgB;AAChB,yB;;;;;;AC5DA;AACA;AACA;AACA,E;;;;;;ACHA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,E;;;;;;ACPA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,UAAU;AACb;AACA;AACA;AACA,E;;;;;;ACfA;AACA;AACA;AACA;AACA,E;;;;;;ACJA;AACA,sEAAsE,gBAAgB,UAAU,GAAG;AACnG,CAAC,E;;;;;;ACFD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;;;;;;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,E;;;;;;ACfA,+E;;;;;;ACAA,iBAAiB;;AAEjB;AACA;AACA,E;;;;;;;ACJA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;;;;;;;8CC5PA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA,mCAAmC;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;;;;;;;ACzBA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU,aAAa;AACvB,UAAU,OAAO;AACjB,UAAU,SAAS;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;;;AAGA;AACA;AACA;;AAEA;;;;;;;;ACzCA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,qCAAqC;AAChD,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,cAAc,2BAA2B;AACzC;AACA;AACA;;;;;;;;AC3HA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;;AAEA;AACA;;;;;;;;ACxDA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;;;;;;;;ACpFA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA,eAAe,WAAW;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA,KAAK,OAAO;AACZ,+BAA+B;AAC/B;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,YAAY,OAAO;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA,WAAW,QAAQ;AACnB;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA,oBAAoB;AACpB,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB,4BAA4B;AAC9C;AACA;AACA,oBAAoB;AACpB,SAAS;AACT;AACA;;AAEA;;AAEA;AACA;AACA,gBAAgB;AAChB,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,oBAAoB;AACtC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,oBAAoB;AACtC;AACA;AACA;;AAEA;;;;;;;;AC3hBA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;;;;;;;;ACzEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,SAAS;AACpB,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;;AAEA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,2BAA2B,kBAAkB;AAC7C;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;;;;;;;;ACjFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,gBAAgB,MAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,gBAAgB,QAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gDAAgD;AAChD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,qCAAqC;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;;;;;;;;ACrQA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrCA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,YAAY;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,QAAQ;AACxB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,gBAAgB,QAAQ;AACxB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,WAAW;AAC1B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,mCAAmC;AACnC;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,WAAW;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,WAAW;AAC1B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,WAAW;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;QCrMgBxzC,M,GAAAA,M;;AA9FhB;;;;;;AAEA,IAAM+d,eAAe,EAArB;;AAEA;AACA;AACA;;AAEA,SAASwnG,cAAT,CAAwB/sH,SAAxB,EAAmCd,KAAnC,EAA0C;AACxC;AACAA,QAAMkB,cAAN,CAAqBxB,IAArB,CAA0B,gBAA1B;;AAEA;AACA;AACA;AACAoB,YAAUonB,YAAV,GAAyB,UAACC,QAAD;AAAA,QAAWC,OAAX,uEAAqB,CAArB;AAAA,WACvBpoB,MAAMyN,MAAN,CAAa0a,WAAWnoB,MAAM0mB,kBAAjB,GAAsC0B,OAAnD,CADuB;AAAA,GAAzB;;AAGA;AACA;AACA;AACA;AACA;AACA;AACAtnB,YAAUunB,YAAV,GAAyB,UAACF,QAAD,EAAWC,OAAX,EAAoBlpB,KAApB,EAA8B;AACrD,QAAIA,UAAUc,MAAMyN,MAAN,CAAa0a,WAAWnoB,MAAM0mB,kB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,KAVO,CAAV;AAWA3mB,YAAQM,GAAR,CAAY01D,CAAZ;AACAA,MAAE5R,IAAF,CAAO,YAAM;AACTA;AACD,KAFH;AAGD,GAhBM,CAAP;AAiBD,C;;;;;;;;;;;;;;;ACnFD;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,mBAAmB,YAAY;AAC/B;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,aAAa;AAChC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,0DAA0D;AAC1D;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AAAA;AAAA;;AAEA,gEAAgB;;;;;;;;;;;;;;;;;AClEhB;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,wBAAwB;AACxB,8BAA8B;AAC9B,wBAAwB;AACxB,wCAAwC;AACxC,wBAAwB;AACxB,8BAA8B;AAC9B,wBAAwB;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;A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CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd,wBAAwB;AACxB;AACA,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB;AACpB,KAAK;AACL;AACA;AACA,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,uBAAuB,IAAI,YAAY,IAAI,YAAY,IAAI;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,wBAAwB,IAAI,YAAY,IAAI,YAAY,IAAI;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,0BAA0B,EAAE,cAAc,EAAE,cAAc,EAAE;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,cAAc;AAC3B,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;;AAEA,KAAK;AACL,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C,SAAS;AACT,0CAA0C;AAC1C,SAAS;AACT,0CAA0C;AAC1C,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,6DAA6D;;AAE7D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS,OAAO;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA,CAAC;;;;;;;AC9yCD,yC","file":"contour.bundle.js","sourcesContent":["import vtk from './vtk';\n\nlet globalMTime = 0;\n\nexport const VOID = Symbol('void');\n\nfunction getCurrentGlobalMTime() {\n return globalMTime;\n}\n\n// ----------------------------------------------------------------------------\n// Logging function calls\n// ----------------------------------------------------------------------------\n/* eslint-disable no-prototype-builtins */\n\nconst fakeConsole = {};\n\nfunction noOp() {}\n\nconst consoleMethods = [\n 'log',\n 'debug',\n 'info',\n 'warn',\n 'error',\n 'time',\n 'timeEnd',\n 'group',\n 'groupEnd',\n];\nconsoleMethods.forEach((methodName) => {\n fakeConsole[methodName] = noOp;\n});\n\nglobal.console = console.hasOwnProperty('log') ? console : fakeConsole;\n\nconst loggerFunctions = {\n debug: noOp, // Don't print debug by default\n error: global.console.error || noOp,\n info: global.console.info || noOp,\n log: global.console.log || noOp,\n warn: global.console.warn || noOp,\n};\n\nexport function setLoggerFunction(name, fn) {\n if (loggerFunctions[name]) {\n loggerFunctions[name] = fn || noOp;\n }\n}\n\nexport function vtkLogMacro(...args) {\n loggerFunctions.log(...args);\n}\n\nexport function vtkInfoMacro(...args) {\n loggerFunctions.info(...args);\n}\n\nexport function vtkDebugMacro(...args) {\n loggerFunctions.debug(...args);\n}\n\nexport function vtkErrorMacro(...args) {\n loggerFunctions.error(...args);\n}\n\nexport function vtkWarningMacro(...args) {\n loggerFunctions.warn(...args);\n}\n\nconst ERROR_ONCE_MAP = {};\nexport function vtkOnceErrorMacro(str) {\n if (!ERROR_ONCE_MAP[str]) {\n loggerFunctions.error(str);\n ERROR_ONCE_MAP[str] = true;\n }\n}\n\n// ----------------------------------------------------------------------------\n// TypedArray\n// ----------------------------------------------------------------------------\n\nexport const TYPED_ARRAYS = {\n Float32Array,\n Float64Array,\n Uint8Array,\n Int8Array,\n Uint16Array,\n Int16Array,\n Uint32Array,\n Int32Array,\n};\n\n// ----------------------------------------------------------------------------\n// capitilze provided string\n// ----------------------------------------------------------------------------\n\nexport function capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\nexport function uncapitalize(str) {\n return str.charAt(0).toLowerCase() + str.slice(1);\n}\n\n// ----------------------------------------------------------------------------\n// Convert byte size into a well formatted string\n// ----------------------------------------------------------------------------\n\nexport function formatBytesToProperUnit(size, precision = 2, chunkSize = 1000) {\n const units = ['TB', 'GB', 'MB', 'KB'];\n let value = Number(size);\n let currentUnit = 'B';\n while (value > chunkSize) {\n value /= chunkSize;\n currentUnit = units.pop();\n }\n return `${value.toFixed(precision)} ${currentUnit}`;\n}\n// ----------------------------------------------------------------------------\n// Convert thousand number with proper seperator\n// ----------------------------------------------------------------------------\n\nexport function formatNumbersWithThousandSeparator(n, separator = ' ') {\n const sections = [];\n let size = n;\n while (size > 1000) {\n sections.push(`000${size % 1000}`.slice(-3));\n size = Math.floor(size / 1000);\n }\n if (size > 0) {\n sections.push(size);\n }\n sections.reverse();\n return sections.join(separator);\n}\n\n// ----------------------------------------------------------------------------\n// Array helper\n// ----------------------------------------------------------------------------\n\nfunction safeArrays(model) {\n Object.keys(model).forEach((key) => {\n if (Array.isArray(model[key])) {\n model[key] = [].concat(model[key]);\n }\n });\n}\n\n// ----------------------------------------------------------------------------\n\nfunction enumToString(e, value) {\n return Object.keys(e).find((key) => e[key] === value);\n}\n\nfunction getStateArrayMapFunc(item) {\n if (item.isA) {\n return item.getState();\n }\n return item;\n}\n\n// ----------------------------------------------------------------------------\n// vtkObject: modified(), onModified(callback), delete()\n// ----------------------------------------------------------------------------\n\nexport function obj(publicAPI = {}, model = {}) {\n // Ensure each instance as a unique ref of array\n safeArrays(model);\n\n const callbacks = [];\n if (!Number.isInteger(model.mtime)) {\n model.mtime = ++globalMTime;\n }\n model.classHierarchy = ['vtkObject'];\n\n function off(index) {\n callbacks[index] = null;\n }\n\n function on(index) {\n function unsubscribe() {\n off(index);\n }\n return Object.freeze({\n unsubscribe,\n });\n }\n\n publicAPI.isDeleted = () => !!model.deleted;\n\n publicAPI.modified = (otherMTime) => {\n if (model.deleted) {\n vtkErrorMacro('instance deleted - cannot call any method');\n return;\n }\n\n if (otherMTime && otherMTime < publicAPI.getMTime()) {\n return;\n }\n\n model.mtime = ++globalMTime;\n callbacks.forEach((callback) => callback && callback(publicAPI));\n };\n\n publicAPI.onModified = (callback) => {\n if (model.deleted) {\n vtkErrorMacro('instance deleted - cannot call any method');\n return null;\n }\n\n const index = callbacks.length;\n callbacks.push(callback);\n return on(index);\n };\n\n publicAPI.getMTime = () => model.mtime;\n\n publicAPI.isA = (className) => {\n let count = model.classHierarchy.length;\n // we go backwards as that is more likely for\n // early termination\n while (count--) {\n if (model.classHierarchy[count] === className) {\n return true;\n }\n }\n return false;\n };\n\n publicAPI.getClassName = (depth = 0) =>\n model.classHierarchy[model.classHierarchy.length - 1 - depth];\n\n publicAPI.set = (map = {}, noWarning = false, noFunction = false) => {\n let ret = false;\n Object.keys(map).forEach((name) => {\n const fn = noFunction ? null : publicAPI[`set${capitalize(name)}`];\n if (fn && Array.isArray(map[name]) && fn.length > 1) {\n ret = fn(...map[name]) || ret;\n } else if (fn) {\n ret = fn(map[name]) || ret;\n } else {\n // Set data on model directly\n if (['mtime'].indexOf(name) === -1 && !noWarning) {\n vtkWarningMacro(\n `Warning: Set value to model directly ${name}, ${map[name]}`\n );\n }\n model[name] = map[name];\n ret = true;\n }\n });\n return ret;\n };\n\n publicAPI.get = (...list) => {\n if (!list.length) {\n return model;\n }\n const subset = {};\n list.forEach((name) => {\n subset[name] = model[name];\n });\n return subset;\n };\n\n publicAPI.getReferenceByName = (val) => model[val];\n\n publicAPI.delete = () => {\n Object.keys(model).forEach((field) => delete model[field]);\n callbacks.forEach((el, index) => off(index));\n\n // Flag the instance being deleted\n model.deleted = true;\n };\n\n // Add serialization support\n publicAPI.getState = () => {\n const jsonArchive = Object.assign({}, model, {\n vtkClass: publicAPI.getClassName(),\n });\n\n // Convert every vtkObject to its serializable form\n Object.keys(jsonArchive).forEach((keyName) => {\n if (jsonArchive[keyName] === null || jsonArchive[keyName] === undefined) {\n delete jsonArchive[keyName];\n } else if (jsonArchive[keyName].isA) {\n jsonArchive[keyName] = jsonArchive[keyName].getState();\n } else if (Array.isArray(jsonArchive[keyName])) {\n jsonArchive[keyName] = jsonArchive[keyName].map(getStateArrayMapFunc);\n }\n });\n\n // Sort resulting object by key name\n const sortedObj = {};\n Object.keys(jsonArchive)\n .sort()\n .forEach((name) => {\n sortedObj[name] = jsonArchive[name];\n });\n\n // Remove mtime\n if (sortedObj.mtime) {\n delete sortedObj.mtime;\n }\n\n return sortedObj;\n };\n\n // Add shallowCopy(otherInstance) support\n publicAPI.shallowCopy = (other, debug = false) => {\n if (other.getClassName() !== publicAPI.getClassName()) {\n throw new Error(\n `Cannot ShallowCopy ${other.getClassName()} into ${publicAPI.getClassName()}`\n );\n }\n const otherModel = other.get();\n\n const keyList = Object.keys(model).sort();\n const otherKeyList = Object.keys(otherModel).sort();\n\n otherKeyList.forEach((key) => {\n const keyIdx = keyList.indexOf(key);\n if (keyIdx === -1) {\n if (debug) {\n vtkDebugMacro(`add ${key} in shallowCopy`);\n }\n } else {\n keyList.splice(keyIdx, 1);\n }\n model[key] = otherModel[key];\n });\n if (keyList.length && debug) {\n vtkDebugMacro(`Untouched keys: ${keyList.join(', ')}`);\n }\n\n publicAPI.modified();\n };\n\n // Allow usage as decorator\n return publicAPI;\n}\n\n// ----------------------------------------------------------------------------\n// getXXX: add getters\n// ----------------------------------------------------------------------------\n\nexport function get(publicAPI, model, fieldNames) {\n fieldNames.forEach((field) => {\n if (typeof field === 'object') {\n publicAPI[`get${capitalize(field.name)}`] = () => model[field.name];\n } else {\n publicAPI[`get${capitalize(field)}`] = () => model[field];\n }\n });\n}\n\n// ----------------------------------------------------------------------------\n// setXXX: add setters\n// ----------------------------------------------------------------------------\n\nconst objectSetterMap = {\n enum(publicAPI, model, field) {\n return (value) => {\n if (typeof value === 'string') {\n if (field.enum[value] !== undefined) {\n if (model[field.name] !== field.enum[value]) {\n model[field.name] = field.enum[value];\n publicAPI.modified();\n return true;\n }\n return false;\n }\n vtkErrorMacro(`Set Enum with invalid argument ${field}, ${value}`);\n throw new RangeError('Set Enum with invalid string argument');\n }\n if (typeof value === 'number') {\n if (model[field.name] !== value) {\n if (\n Object.keys(field.enum)\n .map((key) => field.enum[key])\n .indexOf(value) !== -1\n ) {\n model[field.name] = value;\n publicAPI.modified();\n return true;\n }\n vtkErrorMacro(`Set Enum outside numeric range ${field}, ${value}`);\n throw new RangeError('Set Enum outside numeric range');\n }\n return false;\n }\n vtkErrorMacro(\n `Set Enum with invalid argument (String/Number) ${field}, ${value}`\n );\n throw new TypeError('Set Enum with invalid argument (String/Number)');\n };\n },\n};\n\nfunction findSetter(field) {\n if (typeof field === 'object') {\n const fn = objectSetterMap[field.type];\n if (fn) {\n return (publicAPI, model) => fn(publicAPI, model, field);\n }\n\n vtkErrorMacro(`No setter for field ${field}`);\n throw new TypeError('No setter for field');\n }\n return function getSetter(publicAPI, model) {\n return function setter(value) {\n if (model.deleted) {\n vtkErrorMacro('instance deleted - cannot call any method');\n return false;\n }\n\n if (model[field] !== value) {\n model[field] = value;\n publicAPI.modified();\n return true;\n }\n return false;\n };\n };\n}\n\nexport function set(publicAPI, model, fields) {\n fields.forEach((field) => {\n if (typeof field === 'object') {\n publicAPI[`set${capitalize(field.name)}`] = findSetter(field)(\n publicAPI,\n model\n );\n } else {\n publicAPI[`set${capitalize(field)}`] = findSetter(field)(\n publicAPI,\n model\n );\n }\n });\n}\n\n// ----------------------------------------------------------------------------\n// set/get XXX: add both setters and getters\n// ----------------------------------------------------------------------------\n\nexport function setGet(publicAPI, model, fieldNames) {\n get(publicAPI, model, fieldNames);\n set(publicAPI, model, fieldNames);\n}\n\n// ----------------------------------------------------------------------------\n// getXXX: add getters for object of type array with copy to be safe\n// getXXXByReference: add getters for object of type array without copy\n// ----------------------------------------------------------------------------\n\nexport function getArray(publicAPI, model, fieldNames) {\n fieldNames.forEach((field) => {\n publicAPI[`get${capitalize(field)}`] = () => [].concat(model[field]);\n publicAPI[`get${capitalize(field)}ByReference`] = () => model[field];\n });\n}\n\n// ----------------------------------------------------------------------------\n// setXXX: add setter for object of type array\n// if 'defaultVal' is supplied, shorter arrays will be padded to 'size' with 'defaultVal'\n// set...From: fast path to copy the content of an array to the current one without call to modified.\n// ----------------------------------------------------------------------------\n\nexport function setArray(\n publicAPI,\n model,\n fieldNames,\n size,\n defaultVal = undefined\n) {\n fieldNames.forEach((field) => {\n publicAPI[`set${capitalize(field)}`] = (...args) => {\n if (model.deleted) {\n vtkErrorMacro('instance deleted - cannot call any method');\n return false;\n }\n\n let array = args;\n // allow an array passed as a single arg.\n if (array.length === 1 && Array.isArray(array[0])) {\n /* eslint-disable prefer-destructuring */\n array = array[0];\n /* eslint-enable prefer-destructuring */\n }\n\n if (array.length !== size) {\n if (array.length < size && defaultVal !== undefined) {\n array = [].concat(array);\n while (array.length < size) array.push(defaultVal);\n } else {\n throw new RangeError('Invalid number of values for array setter');\n }\n }\n let changeDetected = false;\n model[field].forEach((item, index) => {\n if (item !== array[index]) {\n if (changeDetected) {\n return;\n }\n changeDetected = true;\n }\n });\n\n if (changeDetected || model[field].length !== array.length) {\n model[field] = [].concat(array);\n publicAPI.modified();\n }\n return true;\n };\n\n publicAPI[`set${capitalize(field)}From`] = (otherArray) => {\n const target = model[field];\n otherArray.forEach((v, i) => {\n target[i] = v;\n });\n };\n });\n}\n\n// ----------------------------------------------------------------------------\n// set/get XXX: add setter and getter for object of type array\n// ----------------------------------------------------------------------------\n\nexport function setGetArray(\n publicAPI,\n model,\n fieldNames,\n size,\n defaultVal = undefined\n) {\n getArray(publicAPI, model, fieldNames);\n setArray(publicAPI, model, fieldNames, size, defaultVal);\n}\n\n// ----------------------------------------------------------------------------\n// vtkAlgorithm: setInputData(), setInputConnection(), getOutputData(), getOutputPort()\n// ----------------------------------------------------------------------------\n\nexport function algo(publicAPI, model, numberOfInputs, numberOfOutputs) {\n if (model.inputData) {\n model.inputData = model.inputData.map(vtk);\n } else {\n model.inputData = [];\n }\n\n if (model.inputConnection) {\n model.inputConnection = model.inputConnection.map(vtk);\n } else {\n model.inputConnection = [];\n }\n\n if (model.output) {\n model.output = model.output.map(vtk);\n } else {\n model.output = [];\n }\n\n if (model.inputArrayToProcess) {\n model.inputArrayToProcess = model.inputArrayToProcess.map(vtk);\n } else {\n model.inputArrayToProcess = [];\n }\n\n // Cache the argument for later manipulation\n model.numberOfInputs = numberOfInputs;\n\n // Methods\n function setInputData(dataset, port = 0) {\n if (model.deleted) {\n vtkErrorMacro('instance deleted - cannot call any method');\n return;\n }\n if (port >= model.numberOfInputs) {\n let msg = `algorithm ${publicAPI.getClassName()} only has `;\n msg += `${model.numberOfInputs}`;\n msg += ' input ports. To add more input ports, use addInputData()';\n vtkErrorMacro(msg);\n return;\n }\n if (model.inputData[port] !== dataset || model.inputConnection[port]) {\n model.inputData[port] = dataset;\n model.inputConnection[port] = null;\n if (publicAPI.modified) {\n publicAPI.modified();\n }\n }\n }\n\n function getInputData(port = 0) {\n if (model.inputConnection[port]) {\n model.inputData[port] = model.inputConnection[port]();\n }\n return model.inputData[port];\n }\n\n function setInputConnection(outputPort, port = 0) {\n if (model.deleted) {\n vtkErrorMacro('instance deleted - cannot call any method');\n return;\n }\n if (port >= model.numberOfInputs) {\n let msg = `algorithm ${publicAPI.getClassName()} only has `;\n msg += `${model.numberOfInputs}`;\n msg += ' input ports. To add more input ports, use addInputConnection()';\n vtkErrorMacro(msg);\n return;\n }\n model.inputData[port] = null;\n model.inputConnection[port] = outputPort;\n }\n\n function getInputConnection(port = 0) {\n return model.inputConnection[port];\n }\n\n function addInputConnection(outputPort) {\n if (model.deleted) {\n vtkErrorMacro('instance deleted - cannot call any method');\n return;\n }\n model.numberOfInputs++;\n setInputConnection(outputPort, model.numberOfInputs - 1);\n }\n\n function addInputData(dataset) {\n if (model.deleted) {\n vtkErrorMacro('instance deleted - cannot call any method');\n return;\n }\n model.numberOfInputs++;\n setInputData(dataset, model.numberOfInputs - 1);\n }\n\n function getOutputData(port = 0) {\n if (model.deleted) {\n vtkErrorMacro('instance deleted - cannot call any method');\n return null;\n }\n if (publicAPI.shouldUpdate()) {\n publicAPI.update();\n }\n return model.output[port];\n }\n\n publicAPI.shouldUpdate = () => {\n const localMTime = publicAPI.getMTime();\n let count = numberOfOutputs;\n let minOutputMTime = Infinity;\n while (count--) {\n if (!model.output[count]) {\n return true;\n }\n const mt = model.output[count].getMTime();\n if (mt < localMTime) {\n return true;\n }\n if (mt < minOutputMTime) {\n minOutputMTime = mt;\n }\n }\n\n count = model.numberOfInputs;\n while (count--) {\n if (\n model.inputConnection[count] &&\n model.inputConnection[count].filter.shouldUpdate()\n ) {\n return true;\n }\n }\n\n count = model.numberOfInputs;\n while (count--) {\n if (\n publicAPI.getInputData(count) &&\n publicAPI.getInputData(count).getMTime() > minOutputMTime\n ) {\n return true;\n }\n }\n return false;\n };\n\n function getOutputPort(port = 0) {\n const outputPortAccess = () => getOutputData(port);\n // Add reference to filter\n outputPortAccess.filter = publicAPI;\n return outputPortAccess;\n }\n\n // Handle input if needed\n if (model.numberOfInputs) {\n // Reserve inputs\n let count = model.numberOfInputs;\n while (count--) {\n model.inputData.push(null);\n model.inputConnection.push(null);\n }\n\n // Expose public methods\n publicAPI.setInputData = setInputData;\n publicAPI.setInputConnection = setInputConnection;\n publicAPI.addInputData = addInputData;\n publicAPI.addInputConnection = addInputConnection;\n publicAPI.getInputData = getInputData;\n publicAPI.getInputConnection = getInputConnection;\n }\n\n if (numberOfOutputs) {\n publicAPI.getOutputData = getOutputData;\n publicAPI.getOutputPort = getOutputPort;\n }\n\n publicAPI.update = () => {\n const ins = [];\n if (model.numberOfInputs) {\n let count = 0;\n while (count < model.numberOfInputs) {\n ins[count] = publicAPI.getInputData(count);\n count++;\n }\n }\n if (publicAPI.shouldUpdate() && publicAPI.requestData) {\n publicAPI.requestData(ins, model.output);\n }\n };\n\n publicAPI.getNumberOfInputPorts = () => model.numberOfInputs;\n publicAPI.getNumberOfOutputPorts = () => numberOfOutputs;\n\n publicAPI.getInputArrayToProcess = (inputPort) => {\n const arrayDesc = model.inputArrayToProcess[inputPort];\n const ds = model.inputData[inputPort];\n if (arrayDesc && ds) {\n return ds[`get${arrayDesc.fieldAssociation}`]().getArray(\n arrayDesc.arrayName\n );\n }\n return null;\n };\n publicAPI.setInputArrayToProcess = (\n inputPort,\n arrayName,\n fieldAssociation,\n attributeType = 'Scalars'\n ) => {\n while (model.inputArrayToProcess.length < inputPort) {\n model.inputArrayToProcess.push(null);\n }\n model.inputArrayToProcess[inputPort] = {\n arrayName,\n fieldAssociation,\n attributeType,\n };\n };\n}\n\n// ----------------------------------------------------------------------------\n// Event handling: onXXX(callback), invokeXXX(args...)\n// ----------------------------------------------------------------------------\n\nexport const EVENT_ABORT = Symbol('Event abort');\n\nexport function event(publicAPI, model, eventName) {\n const callbacks = [];\n const previousDelete = publicAPI.delete;\n let curCallbackID = 1;\n\n function off(callbackID) {\n for (let i = 0; i < callbacks.length; ++i) {\n const [cbID] = callbacks[i];\n if (cbID === callbackID) {\n callbacks.splice(i, 1);\n return;\n }\n }\n }\n\n function on(callbackID) {\n function unsubscribe() {\n off(callbackID);\n }\n return Object.freeze({\n unsubscribe,\n });\n }\n\n function invoke() {\n if (model.deleted) {\n vtkErrorMacro('instance deleted - cannot call any method');\n return;\n }\n /* eslint-disable prefer-rest-params */\n // Go through a copy of the callbacks array in case new callbacks\n // get prepended within previous callbacks\n const currentCallbacks = callbacks.slice();\n for (let index = 0; index < currentCallbacks.length; ++index) {\n const [, cb, priority] = currentCallbacks[index];\n if (priority < 0) {\n setTimeout(() => cb.apply(publicAPI, arguments), 1 - priority);\n } else if (cb) {\n // Abort only if the callback explicitly returns false\n const continueNext = cb.apply(publicAPI, arguments);\n if (continueNext === EVENT_ABORT) {\n break;\n }\n }\n }\n /* eslint-enable prefer-rest-params */\n }\n\n publicAPI[`invoke${capitalize(eventName)}`] = invoke;\n\n publicAPI[`on${capitalize(eventName)}`] = (callback, priority = 0.0) => {\n if (model.deleted) {\n vtkErrorMacro('instance deleted - cannot call any method');\n return null;\n }\n\n const callbackID = curCallbackID++;\n callbacks.push([callbackID, callback, priority]);\n callbacks.sort((cb1, cb2) => cb2[2] - cb1[2]);\n return on(callbackID);\n };\n\n publicAPI.delete = () => {\n previousDelete();\n callbacks.forEach(([cbID]) => off(cbID));\n };\n}\n\n// ----------------------------------------------------------------------------\n// newInstance\n// ----------------------------------------------------------------------------\n\nexport function newInstance(extend, className) {\n const constructor = (initialValues = {}) => {\n const model = {};\n const publicAPI = {};\n extend(publicAPI, model, initialValues);\n return Object.freeze(publicAPI);\n };\n\n // Register constructor to factory\n if (className) {\n vtk.register(className, constructor);\n }\n\n return constructor;\n}\n\n// ----------------------------------------------------------------------------\n// Chain function calls\n// ----------------------------------------------------------------------------\n\nexport function chain(...fn) {\n return (...args) => fn.filter((i) => !!i).forEach((i) => i(...args));\n}\n\n// ----------------------------------------------------------------------------\n// Some utility methods for vtk objects\n// ----------------------------------------------------------------------------\n\nexport function isVtkObject(instance) {\n return instance && instance.isA && instance.isA('vtkObject');\n}\n\nexport function traverseInstanceTree(\n instance,\n extractFunction,\n accumulator = [],\n visitedInstances = []\n) {\n if (isVtkObject(instance)) {\n if (visitedInstances.indexOf(instance) >= 0) {\n // avoid cycles\n return accumulator;\n }\n\n visitedInstances.push(instance);\n const result = extractFunction(instance);\n if (result !== undefined) {\n accumulator.push(result);\n }\n\n // Now go through this instance's model\n const model = instance.get();\n Object.keys(model).forEach((key) => {\n const modelObj = model[key];\n if (Array.isArray(modelObj)) {\n modelObj.forEach((subObj) => {\n traverseInstanceTree(\n subObj,\n extractFunction,\n accumulator,\n visitedInstances\n );\n });\n } else {\n traverseInstanceTree(\n modelObj,\n extractFunction,\n accumulator,\n visitedInstances\n );\n }\n });\n }\n\n return accumulator;\n}\n\n// ----------------------------------------------------------------------------\n// Returns a function, that, as long as it continues to be invoked, will not\n// be triggered. The function will be called after it stops being called for\n// N milliseconds. If `immediate` is passed, trigger the function on the\n// leading edge, instead of the trailing.\n\nexport function debounce(func, wait, immediate) {\n let timeout;\n return (...args) => {\n const context = this;\n const later = () => {\n timeout = null;\n if (!immediate) {\n func.apply(context, args);\n }\n };\n const callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) {\n func.apply(context, args);\n }\n };\n}\n\n// ----------------------------------------------------------------------------\n// Creates a throttled function that only invokes `func` at most once per\n// every `wait` milliseconds.\n\nexport function throttle(callback, delay) {\n let isThrottled = false;\n let argsToUse = null;\n\n function next() {\n isThrottled = false;\n if (argsToUse !== null) {\n wrapper(...argsToUse); // eslint-disable-line\n argsToUse = null;\n }\n }\n\n function wrapper(...args) {\n if (isThrottled) {\n argsToUse = args;\n return;\n }\n isThrottled = true;\n callback(...args);\n setTimeout(next, delay);\n }\n\n return wrapper;\n}\n\n// ----------------------------------------------------------------------------\n// keystore(publicAPI, model, initialKeystore)\n//\n// - initialKeystore: Initial keystore. This can be either a Map or an\n// object.\n//\n// Generated API\n// setKey(key, value) : mixed (returns value)\n// getKey(key) : mixed\n// getAllKeys() : [mixed]\n// deleteKey(key) : Boolean\n// ----------------------------------------------------------------------------\n\nexport function keystore(publicAPI, model, initialKeystore = {}) {\n model.keystore = Object.assign(model.keystore || {}, initialKeystore);\n\n publicAPI.setKey = (key, value) => {\n model.keystore[key] = value;\n };\n publicAPI.getKey = (key, value) => model.keystore[key];\n publicAPI.getAllKeys = (key, value) => Object.keys(model.keystore);\n publicAPI.deleteKey = (key, value) => delete model.keystore[key];\n publicAPI.clearKeystore = () =>\n publicAPI.getAllKeys().forEach((key) => delete model.keystore[key]);\n}\n\n// ----------------------------------------------------------------------------\n// proxy(publicAPI, model, sectionName, propertyUI)\n//\n// - sectionName: Name of the section for UI\n// - propertyUI: List of props with their UI description\n//\n// Generated API\n// getProxyId() : String\n// listProxyProperties() : [string]\n// updateProxyProperty(name, prop)\n// getProxySection() => List of properties for UI generation\n// ----------------------------------------------------------------------------\nlet nextProxyId = 1;\nconst ROOT_GROUP_NAME = '__root__';\n\nexport function proxy(publicAPI, model) {\n // Proxies are keystores\n keystore(publicAPI, model);\n\n const parentDelete = publicAPI.delete;\n\n // getProxyId\n model.proxyId = `${nextProxyId++}`;\n\n // ui handling\n model.ui = JSON.parse(JSON.stringify(model.ui || [])); // deep copy\n get(publicAPI, model, ['proxyId', 'proxyGroup', 'proxyName']);\n setGet(publicAPI, model, ['proxyManager']);\n\n // group properties\n const propertyMap = {};\n const groupChildrenNames = {};\n\n function registerProperties(descriptionList, currentGroupName) {\n if (!groupChildrenNames[currentGroupName]) {\n groupChildrenNames[currentGroupName] = [];\n }\n const childrenNames = groupChildrenNames[currentGroupName];\n\n for (let i = 0; i < descriptionList.length; i++) {\n childrenNames.push(descriptionList[i].name);\n propertyMap[descriptionList[i].name] = descriptionList[i];\n if (descriptionList[i].children && descriptionList[i].children.length) {\n registerProperties(\n descriptionList[i].children,\n descriptionList[i].name\n );\n }\n }\n }\n registerProperties(model.ui, ROOT_GROUP_NAME);\n\n publicAPI.updateUI = (ui) => {\n model.ui = JSON.parse(JSON.stringify(ui || [])); // deep copy\n Object.keys(propertyMap).forEach((k) => delete propertyMap[k]);\n Object.keys(groupChildrenNames).forEach(\n (k) => delete groupChildrenNames[k]\n );\n registerProperties(model.ui, ROOT_GROUP_NAME);\n publicAPI.modified();\n };\n\n function listProxyProperties(gName = ROOT_GROUP_NAME) {\n return groupChildrenNames[gName];\n }\n\n publicAPI.updateProxyProperty = (propertyName, propUI) => {\n const prop = propertyMap[propertyName];\n if (prop) {\n Object.assign(prop, propUI);\n } else {\n propertyMap[propertyName] = Object.assign({}, propUI);\n }\n };\n\n publicAPI.activate = () => {\n if (model.proxyManager) {\n const setActiveMethod = `setActive${capitalize(\n publicAPI.getProxyGroup().slice(0, -1)\n )}`;\n if (model.proxyManager[setActiveMethod]) {\n model.proxyManager[setActiveMethod](publicAPI);\n }\n }\n };\n\n // property link\n model.propertyLinkSubscribers = {};\n publicAPI.registerPropertyLinkForGC = (otherLink, type) => {\n if (!(type in model.propertyLinkSubscribers)) {\n model.propertyLinkSubscribers[type] = [];\n }\n model.propertyLinkSubscribers[type].push(otherLink);\n };\n\n publicAPI.gcPropertyLinks = (type) => {\n const subscribers = model.propertyLinkSubscribers[type] || [];\n while (subscribers.length) {\n subscribers.pop().unbind(publicAPI);\n }\n };\n\n model.propertyLinkMap = {};\n publicAPI.getPropertyLink = (id, persistent = false) => {\n if (model.propertyLinkMap[id]) {\n return model.propertyLinkMap[id];\n }\n let value = null;\n const links = [];\n let count = 0;\n let updateInProgress = false;\n\n function update(source, force = false) {\n if (updateInProgress) {\n return null;\n }\n\n const needUpdate = [];\n let sourceLink = null;\n count = links.length;\n while (count--) {\n const link = links[count];\n if (link.instance === source) {\n sourceLink = link;\n } else {\n needUpdate.push(link);\n }\n }\n\n if (!sourceLink) {\n return null;\n }\n\n const newValue = sourceLink.instance[\n `get${capitalize(sourceLink.propertyName)}`\n ]();\n if (newValue !== value || force) {\n value = newValue;\n updateInProgress = true;\n while (needUpdate.length) {\n const linkToUpdate = needUpdate.pop();\n linkToUpdate.instance.set({\n [linkToUpdate.propertyName]: value,\n });\n }\n updateInProgress = false;\n }\n\n if (model.propertyLinkMap[id].persistent) {\n model.propertyLinkMap[id].value = newValue;\n }\n\n return newValue;\n }\n\n function unbind(instance, propertyName) {\n const indexToDelete = [];\n count = links.length;\n while (count--) {\n const link = links[count];\n if (\n link.instance === instance &&\n (link.propertyName === propertyName || propertyName === undefined)\n ) {\n link.subscription.unsubscribe();\n indexToDelete.push(count);\n }\n }\n while (indexToDelete.length) {\n links.splice(indexToDelete.pop(), 1);\n }\n }\n\n function bind(instance, propertyName, updateMe = false) {\n const subscription = instance.onModified(update);\n const other = links[0];\n links.push({\n instance,\n propertyName,\n subscription,\n });\n if (updateMe) {\n if (\n model.propertyLinkMap[id].persistent &&\n model.propertyLinkMap[id].value !== undefined\n ) {\n instance.set({\n [propertyName]: model.propertyLinkMap[id].value,\n });\n } else if (other) {\n update(other.instance, true);\n }\n }\n return {\n unsubscribe: () => unbind(instance, propertyName),\n };\n }\n\n function unsubscribe() {\n while (links.length) {\n links.pop().subscription.unsubscribe();\n }\n }\n\n const linkHandler = {\n bind,\n unbind,\n unsubscribe,\n persistent,\n };\n model.propertyLinkMap[id] = linkHandler;\n return linkHandler;\n };\n\n // extract values\n function getProperties(groupName = ROOT_GROUP_NAME) {\n const values = [];\n const id = model.proxyId;\n const propertyNames = listProxyProperties(groupName) || [];\n for (let i = 0; i < propertyNames.length; i++) {\n const name = propertyNames[i];\n const method = publicAPI[`get${capitalize(name)}`];\n const value = method ? method() : undefined;\n const prop = {\n id,\n name,\n value,\n };\n const children = getProperties(name);\n if (children.length) {\n prop.children = children;\n }\n values.push(prop);\n }\n return values;\n }\n\n publicAPI.listPropertyNames = () => getProperties().map((p) => p.name);\n\n publicAPI.getPropertyByName = (name) =>\n getProperties().find((p) => p.name === name);\n\n publicAPI.getPropertyDomainByName = (name) => propertyMap[name].domain;\n\n // ui section\n publicAPI.getProxySection = () => ({\n id: model.proxyId,\n name: model.proxyGroup,\n ui: model.ui,\n properties: getProperties(),\n });\n\n // free resources\n publicAPI.delete = () => {\n const list = Object.keys(model.propertyLinkMap);\n let count = list.length;\n while (count--) {\n model.propertyLinkMap[list[count]].unsubscribe();\n }\n Object.keys(model.propertyLinkSubscribers).forEach(\n publicAPI.gcPropertyLinks\n );\n parentDelete();\n };\n\n function registerLinks() {\n // Allow dynamic registration of links at the application level\n if (model.links) {\n for (let i = 0; i < model.links.length; i++) {\n const { link, property, persistent, updateOnBind, type } = model.links[\n i\n ];\n if (type === 'application') {\n const sLink = model.proxyManager.getPropertyLink(link, persistent);\n publicAPI.registerPropertyLinkForGC(sLink, 'application');\n sLink.bind(publicAPI, property, updateOnBind);\n }\n }\n }\n }\n setImmediate(registerLinks);\n}\n\n// ----------------------------------------------------------------------------\n// proxyPropertyMapping(publicAPI, model, map)\n//\n// map = {\n// opacity: { modelKey: 'property', property: 'opacity' },\n// }\n//\n// Generated API:\n// Elevate set/get methods from internal object stored in the model to current one\n// ----------------------------------------------------------------------------\n\nexport function proxyPropertyMapping(publicAPI, model, map) {\n const parentDelete = publicAPI.delete;\n const subscriptions = [];\n\n const propertyNames = Object.keys(map);\n let count = propertyNames.length;\n while (count--) {\n const propertyName = propertyNames[count];\n const { modelKey, property, modified = true } = map[propertyName];\n const methodSrc = capitalize(property);\n const methodDst = capitalize(propertyName);\n publicAPI[`get${methodDst}`] = model[modelKey][`get${methodSrc}`];\n publicAPI[`set${methodDst}`] = model[modelKey][`set${methodSrc}`];\n if (modified) {\n subscriptions.push(model[modelKey].onModified(publicAPI.modified));\n }\n }\n\n publicAPI.delete = () => {\n while (subscriptions.length) {\n subscriptions.pop().unsubscribe();\n }\n parentDelete();\n };\n}\n\n// ----------------------------------------------------------------------------\n// proxyPropertyState(publicAPI, model, state, defaults)\n//\n// state = {\n// representation: {\n// 'Surface with edges': { property: { edgeVisibility: true, representation: 2 } },\n// Surface: { property: { edgeVisibility: false, representation: 2 } },\n// Wireframe: { property: { edgeVisibility: false, representation: 1 } },\n// Points: { property: { edgeVisibility: false, representation: 0 } },\n// },\n// }\n//\n// defaults = {\n// representation: 'Surface',\n// }\n//\n// Generated API\n// get / set Representation ( string ) => push state to various internal objects\n// ----------------------------------------------------------------------------\n\nexport function proxyPropertyState(\n publicAPI,\n model,\n state = {},\n defaults = {}\n) {\n model.this = publicAPI;\n\n function applyState(map) {\n const modelKeys = Object.keys(map);\n let count = modelKeys.length;\n while (count--) {\n const modelKey = modelKeys[count];\n model[modelKey].set(map[modelKey]);\n }\n }\n\n const modelKeys = Object.keys(defaults);\n let count = modelKeys.length;\n while (count--) {\n // Add default\n const key = modelKeys[count];\n model[key] = defaults[key];\n\n // Add set method\n const mapping = state[key];\n publicAPI[`set${capitalize(key)}`] = (value) => {\n if (value !== model[key]) {\n model[key] = value;\n const propValues = mapping[value];\n applyState(propValues);\n publicAPI.modified();\n }\n };\n }\n\n // Add getter\n if (modelKeys.length) {\n get(publicAPI, model, modelKeys);\n }\n}\n\n// ----------------------------------------------------------------------------\n// From : https://github.com/facebookarchive/fixed-data-table/blob/master/src/vendor_upstream/dom/normalizeWheel.js\n//\n//\n// Copyright (c) 2015, Facebook, Inc.\n// All rights reserved.\n//\n// This source code is licensed under the BSD-style license found in the\n// LICENSE file in the root directory of this source tree. An additional grant\n// of patent rights can be found in the PATENTS file in the same directory.\n//\n//\n// Mouse wheel (and 2-finger trackpad) support on the web sucks. It is\n// complicated, thus this doc is long and (hopefully) detailed enough to answer\n// your questions.\n//\n// If you need to react to the mouse wheel in a predictable way, this code is\n// like your bestest friend.// hugs//\n//\n// As of today, there are 4 DOM event types you can listen to:\n//\n// 'wheel' -- Chrome(31+), FF(17+), IE(9+)\n// 'mousewheel' -- Chrome, IE(6+), Opera, Safari\n// 'MozMousePixelScroll' -- FF(3.5 only!) (2010-2013) -- don't bother!\n// 'DOMMouseScroll' -- FF(0.9.7+) since 2003\n//\n// So what to do? The is the best:\n//\n// normalizeWheel.getEventType();\n//\n// In your event callback, use this code to get sane interpretation of the\n// deltas. This code will return an object with properties:\n//\n// spinX -- normalized spin speed (use for zoom) - x plane\n// spinY -- \" - y plane\n// pixelX -- normalized distance (to pixels) - x plane\n// pixelY -- \" - y plane\n//\n// Wheel values are provided by the browser assuming you are using the wheel to\n// scroll a web page by a number of lines or pixels (or pages). Values can vary\n// significantly on different platforms and browsers, forgetting that you can\n// scroll at different speeds. Some devices (like trackpads) emit more events\n// at smaller increments with fine granularity, and some emit massive jumps with\n// linear speed or acceleration.\n//\n// This code does its best to normalize the deltas for you:\n//\n// - spin is trying to normalize how far the wheel was spun (or trackpad\n// dragged). This is super useful for zoom support where you want to\n// throw away the chunky scroll steps on the PC and make those equal to\n// the slow and smooth tiny steps on the Mac. Key data: This code tries to\n// resolve a single slow step on a wheel to 1.\n//\n// - pixel is normalizing the desired scroll delta in pixel units. You'll\n// get the crazy differences between browsers, but at least it'll be in\n// pixels!\n//\n// - positive value indicates scrolling DOWN/RIGHT, negative UP/LEFT. This\n// should translate to positive value zooming IN, negative zooming OUT.\n// This matches the newer 'wheel' event.\n//\n// Why are there spinX, spinY (or pixels)?\n//\n// - spinX is a 2-finger side drag on the trackpad, and a shift + wheel turn\n// with a mouse. It results in side-scrolling in the browser by default.\n//\n// - spinY is what you expect -- it's the classic axis of a mouse wheel.\n//\n// - I dropped spinZ/pixelZ. It is supported by the DOM 3 'wheel' event and\n// probably is by browsers in conjunction with fancy 3D controllers .. but\n// you know.\n//\n// Implementation info:\n//\n// Examples of 'wheel' event if you scroll slowly (down) by one step with an\n// average mouse:\n//\n// OS X + Chrome (mouse) - 4 pixel delta (wheelDelta -120)\n// OS X + Safari (mouse) - N/A pixel delta (wheelDelta -12)\n// OS X + Firefox (mouse) - 0.1 line delta (wheelDelta N/A)\n// Win8 + Chrome (mouse) - 100 pixel delta (wheelDelta -120)\n// Win8 + Firefox (mouse) - 3 line delta (wheelDelta -120)\n//\n// On the trackpad:\n//\n// OS X + Chrome (trackpad) - 2 pixel delta (wheelDelta -6)\n// OS X + Firefox (trackpad) - 1 pixel delta (wheelDelta N/A)\n//\n// On other/older browsers.. it's more complicated as there can be multiple and\n// also missing delta values.\n//\n// The 'wheel' event is more standard:\n//\n// http://www.w3.org/TR/DOM-Level-3-Events/#events-wheelevents\n//\n// The basics is that it includes a unit, deltaMode (pixels, lines, pages), and\n// deltaX, deltaY and deltaZ. Some browsers provide other values to maintain\n// backward compatibility with older events. Those other values help us\n// better normalize spin speed. Example of what the browsers provide:\n//\n// | event.wheelDelta | event.detail\n// ------------------+------------------+--------------\n// Safari v5/OS X | -120 | 0\n// Safari v5/Win7 | -120 | 0\n// Chrome v17/OS X | -120 | 0\n// Chrome v17/Win7 | -120 | 0\n// IE9/Win7 | -120 | undefined\n// Firefox v4/OS X | undefined | 1\n// Firefox v4/Win7 | undefined | 3\n//\n// ----------------------------------------------------------------------------\n\n// Reasonable defaults\nconst PIXEL_STEP = 10;\nconst LINE_HEIGHT = 40;\nconst PAGE_HEIGHT = 800;\n\nexport function normalizeWheel(wheelEvent) {\n let sX = 0; // spinX\n let sY = 0; // spinY\n let pX = 0; // pixelX\n let pY = 0; // pixelY\n\n // Legacy\n if ('detail' in wheelEvent) {\n sY = wheelEvent.detail;\n }\n if ('wheelDelta' in wheelEvent) {\n sY = -wheelEvent.wheelDelta / 120;\n }\n if ('wheelDeltaY' in wheelEvent) {\n sY = -wheelEvent.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in wheelEvent) {\n sX = -wheelEvent.wheelDeltaX / 120;\n }\n\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in wheelEvent && wheelEvent.axis === wheelEvent.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n\n if ('deltaY' in wheelEvent) {\n pY = wheelEvent.deltaY;\n }\n if ('deltaX' in wheelEvent) {\n pX = wheelEvent.deltaX;\n }\n\n if ((pX || pY) && wheelEvent.deltaMode) {\n if (wheelEvent.deltaMode === 1) {\n // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else {\n // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = pX < 1 ? -1 : 1;\n }\n if (pY && !sY) {\n sY = pY < 1 ? -1 : 1;\n }\n\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY,\n };\n}\n\n// ----------------------------------------------------------------------------\n// Default export\n// ----------------------------------------------------------------------------\n\nexport default {\n EVENT_ABORT,\n VOID,\n TYPED_ARRAYS,\n algo,\n capitalize,\n uncapitalize,\n chain,\n enumToString,\n event,\n get,\n getArray,\n getCurrentGlobalMTime,\n getStateArrayMapFunc,\n isVtkObject,\n keystore,\n newInstance,\n obj,\n safeArrays,\n set,\n setArray,\n setGet,\n setGetArray,\n setLoggerFunction,\n traverseInstanceTree,\n vtkDebugMacro,\n vtkErrorMacro,\n vtkOnceErrorMacro,\n vtkInfoMacro,\n vtkLogMacro,\n vtkWarningMacro,\n debounce,\n throttle,\n proxy,\n proxyPropertyMapping,\n proxyPropertyState,\n formatBytesToProperUnit,\n formatNumbersWithThousandSeparator,\n normalizeWheel,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/macro.js","import seedrandom from 'seedrandom';\nimport macro from 'vtk.js/Sources/macro';\n\nconst { vtkErrorMacro, vtkWarningMacro } = macro;\n\n// ----------------------------------------------------------------------------\n/* eslint-disable camelcase */\n/* eslint-disable no-cond-assign */\n/* eslint-disable no-bitwise */\n/* eslint-disable no-multi-assign */\n// ----------------------------------------------------------------------------\nlet randomSeedValue = 0;\nconst VTK_MAX_ROTATIONS = 20;\nconst VTK_SMALL_NUMBER = 1.0e-12;\n\nfunction notImplemented(method) {\n return () => vtkErrorMacro(`vtkMath::${method} - NOT IMPLEMENTED`);\n}\n\nfunction vtkSwapVectors3(v1, v2) {\n for (let i = 0; i < 3; i++) {\n const tmp = v1[i];\n v1[i] = v2[i];\n v2[i] = tmp;\n }\n}\n\nfunction createArray(size = 3) {\n const array = [];\n while (array.length < size) {\n array.push(0);\n }\n return array;\n}\n\n// ----------------------------------------------------------------------------\n// Global methods\n// ----------------------------------------------------------------------------\n\nconst Pi = () => Math.PI;\nconst radiansFromDegrees = (deg) => deg / 180 * Math.PI;\nconst degreesFromRadians = (rad) => rad * 180 / Math.PI;\nconst { round, floor, ceil, min, max } = Math;\n\nfunction arrayMin(arr) {\n let minValue = Infinity;\n for (let i = 0, len = arr.length; i < len; ++i) {\n if (arr[i] < minValue) {\n minValue = arr[i];\n }\n }\n\n return minValue;\n}\n\nfunction arrayMax(arr) {\n let maxValue = -Infinity;\n for (let i = 0, len = arr.length; i < len; ++i) {\n if (maxValue < arr[i]) {\n maxValue = arr[i];\n }\n }\n\n return maxValue;\n}\n\nconst ceilLog2 = notImplemented('ceilLog2');\nconst factorial = notImplemented('factorial');\n\nfunction nearestPowerOfTwo(xi) {\n let v = 1;\n while (v < xi) {\n v *= 2;\n }\n return v;\n}\n\nfunction isPowerOfTwo(x) {\n return x === nearestPowerOfTwo(x);\n}\n\nfunction binomial(m, n) {\n let r = 1;\n for (let i = 1; i <= n; ++i) {\n r *= (m - i + 1) / i;\n }\n return Math.floor(r);\n}\n\nfunction beginCombination(m, n) {\n if (m < n) {\n return 0;\n }\n\n const r = createArray(n);\n for (let i = 0; i < n; ++i) {\n r[i] = i;\n }\n return r;\n}\n\nfunction nextCombination(m, n, r) {\n let status = 0;\n for (let i = n - 1; i >= 0; --i) {\n if (r[i] < m - n + i) {\n let j = r[i] + 1;\n while (i < n) {\n r[i++] = j++;\n }\n status = 1;\n break;\n }\n }\n return status;\n}\n\nconst randomSeed = (seed) => {\n seedrandom(`${seed}`, { global: true });\n randomSeedValue = seed;\n};\n\nconst getSeed = () => randomSeedValue;\n\nfunction random(minValue = 0, maxValue = 1) {\n const delta = maxValue - minValue;\n return minValue + delta * Math.random();\n}\n\nconst gaussian = notImplemented('gaussian');\n\n// Vect3 operations\nfunction add(a, b, out) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n}\n\nfunction subtract(a, b, out) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n}\n\nfunction multiplyScalar(vec, scalar) {\n vec[0] *= scalar;\n vec[1] *= scalar;\n vec[2] *= scalar;\n}\n\nfunction multiplyScalar2D(vec, scalar) {\n vec[0] *= scalar;\n vec[1] *= scalar;\n}\n\nfunction dot(x, y) {\n return x[0] * y[0] + x[1] * y[1] + x[2] * y[2];\n}\n\nfunction outer(x, y, out_3x3) {\n for (let i = 0; i < 3; i++) {\n for (let j = 0; j < 3; j++) {\n out_3x3[i][j] = x[i] * y[j];\n }\n }\n}\n\nfunction cross(x, y, out) {\n const Zx = x[1] * y[2] - x[2] * y[1];\n const Zy = x[2] * y[0] - x[0] * y[2];\n const Zz = x[0] * y[1] - x[1] * y[0];\n out[0] = Zx;\n out[1] = Zy;\n out[2] = Zz;\n}\n\nfunction norm(x, n = 3) {\n switch (n) {\n case 1:\n return Math.abs(x);\n case 2:\n return Math.sqrt(x[0] * x[0] + x[1] * x[1]);\n case 3:\n return Math.sqrt(x[0] * x[0] + x[1] * x[1] + x[2] * x[2]);\n default: {\n let sum = 0;\n for (let i = 0; i < n; i++) {\n sum += x[i] * x[i];\n }\n return Math.sqrt(sum);\n }\n }\n}\n\nfunction normalize(x) {\n const den = norm(x);\n if (den !== 0.0) {\n x[0] /= den;\n x[1] /= den;\n x[2] /= den;\n }\n return den;\n}\n\nfunction perpendiculars(x, y, z, theta) {\n const x2 = x[0] * x[0];\n const y2 = x[1] * x[1];\n const z2 = x[2] * x[2];\n const r = Math.sqrt(x2 + y2 + z2);\n\n let dx;\n let dy;\n let dz;\n\n // transpose the vector to avoid divide-by-zero error\n if (x2 > y2 && x2 > z2) {\n dx = 0;\n dy = 1;\n dz = 2;\n } else if (y2 > z2) {\n dx = 1;\n dy = 2;\n dz = 0;\n } else {\n dx = 2;\n dy = 0;\n dz = 1;\n }\n\n const a = x[dx] / r;\n const b = x[dy] / r;\n const c = x[dz] / r;\n const tmp = Math.sqrt(a * a + c * c);\n\n if (theta !== 0) {\n const sintheta = Math.sin(theta);\n const costheta = Math.cos(theta);\n\n if (y) {\n y[dx] = (c * costheta - a * b * sintheta) / tmp;\n y[dy] = sintheta * tmp;\n y[dz] = (-(a * costheta) - b * c * sintheta) / tmp;\n }\n\n if (z) {\n z[dx] = (-(c * sintheta) - a * b * costheta) / tmp;\n z[dy] = costheta * tmp;\n z[dz] = (a * sintheta - b * c * costheta) / tmp;\n }\n } else {\n if (y) {\n y[dx] = c / tmp;\n y[dy] = 0;\n y[dz] = -a / tmp;\n }\n\n if (z) {\n z[dx] = -a * b / tmp;\n z[dy] = tmp;\n z[dz] = -b * c / tmp;\n }\n }\n}\n\nfunction projectVector(a, b, projection) {\n const bSquared = dot(b, b);\n\n if (bSquared === 0) {\n projection[0] = 0;\n projection[1] = 0;\n projection[2] = 0;\n return false;\n }\n\n const scale = dot(a, b) / bSquared;\n\n for (let i = 0; i < 3; i++) {\n projection[i] = b[i];\n }\n multiplyScalar(projection, scale);\n\n return true;\n}\n\nfunction dot2D(x, y) {\n return x[0] * y[0] + x[1] * y[1];\n}\n\nfunction projectVector2D(a, b, projection) {\n const bSquared = dot2D(b, b);\n\n if (bSquared === 0) {\n projection[0] = 0;\n projection[1] = 0;\n return false;\n }\n\n const scale = dot2D(a, b) / bSquared;\n\n for (let i = 0; i < 2; i++) {\n projection[i] = b[i];\n }\n multiplyScalar2D(projection, scale);\n\n return true;\n}\n\nfunction distance2BetweenPoints(x, y) {\n return (\n (x[0] - y[0]) * (x[0] - y[0]) +\n (x[1] - y[1]) * (x[1] - y[1]) +\n (x[2] - y[2]) * (x[2] - y[2])\n );\n}\n\nfunction angleBetweenVectors(v1, v2) {\n const crossVect = [0, 0, 0];\n cross(v1, v2, crossVect);\n return Math.atan2(norm(crossVect), dot(v1, v2));\n}\n\nfunction gaussianAmplitude(mean, variance, position) {\n const distanceFromMean = Math.abs(mean - position);\n return (\n 1 /\n Math.sqrt(2 * Math.PI * variance) *\n Math.exp(-(distanceFromMean ** 2) / (2 * variance))\n );\n}\n\nfunction gaussianWeight(mean, variance, position) {\n const distanceFromMean = Math.abs(mean - position);\n return Math.exp(-(distanceFromMean ** 2) / (2 * variance));\n}\n\nfunction outer2D(x, y, out_2x2) {\n for (let i = 0; i < 2; i++) {\n for (let j = 0; j < 2; j++) {\n out_2x2[i][j] = x[i] * y[j];\n }\n }\n}\n\nfunction norm2D(x2D) {\n return Math.sqrt(x2D[0] * x2D[0] + x2D[1] * x2D[1]);\n}\n\nfunction normalize2D(x) {\n const den = norm2D(x);\n if (den !== 0.0) {\n x[0] /= den;\n x[1] /= den;\n }\n return den;\n}\n\nfunction determinant2x2(...args) {\n if (args.length === 2) {\n return args[0][0] * args[1][1] - args[1][0] * args[0][1];\n }\n if (args.length === 4) {\n return args[0] * args[3] - args[1] * args[2];\n }\n return Number.NaN;\n}\n\nfunction LUFactor3x3(mat_3x3, index_3) {\n let maxI;\n let tmp;\n let largest;\n const scale = [0, 0, 0];\n\n // Loop over rows to get implicit scaling information\n for (let i = 0; i < 3; i++) {\n largest = Math.abs(mat_3x3[i][0]);\n if ((tmp = Math.abs(mat_3x3[i][1])) > largest) {\n largest = tmp;\n }\n if ((tmp = Math.abs(mat_3x3[i][2])) > largest) {\n largest = tmp;\n }\n scale[i] = 1 / largest;\n }\n\n // Loop over all columns using Crout's method\n\n // first column\n largest = scale[0] * Math.abs(mat_3x3[0][0]);\n maxI = 0;\n if ((tmp = scale[1] * Math.abs(mat_3x3[1][0])) >= largest) {\n largest = tmp;\n maxI = 1;\n }\n if ((tmp = scale[2] * Math.abs(mat_3x3[2][0])) >= largest) {\n maxI = 2;\n }\n if (maxI !== 0) {\n vtkSwapVectors3(mat_3x3[maxI], mat_3x3[0]);\n scale[maxI] = scale[0];\n }\n index_3[0] = maxI;\n\n mat_3x3[1][0] /= mat_3x3[0][0];\n mat_3x3[2][0] /= mat_3x3[0][0];\n\n // second column\n mat_3x3[1][1] -= mat_3x3[1][0] * mat_3x3[0][1];\n mat_3x3[2][1] -= mat_3x3[2][0] * mat_3x3[0][1];\n largest = scale[1] * Math.abs(mat_3x3[1][1]);\n maxI = 1;\n if ((tmp = scale[2] * Math.abs(mat_3x3[2][1])) >= largest) {\n maxI = 2;\n vtkSwapVectors3(mat_3x3[2], mat_3x3[1]);\n scale[2] = scale[1];\n }\n index_3[1] = maxI;\n mat_3x3[2][1] /= mat_3x3[1][1];\n\n // third column\n mat_3x3[1][2] -= mat_3x3[1][0] * mat_3x3[0][2];\n mat_3x3[2][2] -=\n mat_3x3[2][0] * mat_3x3[0][2] + mat_3x3[2][1] * mat_3x3[1][2];\n index_3[2] = 2;\n}\n\nfunction LUSolve3x3(mat_3x3, index_3, x_3) {\n // forward substitution\n let sum = x_3[index_3[0]];\n x_3[index_3[0]] = x_3[0];\n x_3[0] = sum;\n\n sum = x_3[index_3[1]];\n x_3[index_3[1]] = x_3[1];\n x_3[1] = sum - mat_3x3[1][0] * x_3[0];\n\n sum = x_3[index_3[2]];\n x_3[index_3[2]] = x_3[2];\n x_3[2] = sum - mat_3x3[2][0] * x_3[0] - mat_3x3[2][1] * x_3[1];\n\n // back substitution\n x_3[2] /= mat_3x3[2][2];\n x_3[1] = (x_3[1] - mat_3x3[1][2] * x_3[2]) / mat_3x3[1][1];\n x_3[0] =\n (x_3[0] - mat_3x3[0][1] * x_3[1] - mat_3x3[0][2] * x_3[2]) / mat_3x3[0][0];\n}\n\nfunction linearSolve3x3(mat_3x3, x_3, y_3) {\n const a1 = mat_3x3[0][0];\n const b1 = mat_3x3[0][1];\n const c1 = mat_3x3[0][2];\n const a2 = mat_3x3[1][0];\n const b2 = mat_3x3[1][1];\n const c2 = mat_3x3[1][2];\n const a3 = mat_3x3[2][0];\n const b3 = mat_3x3[2][1];\n const c3 = mat_3x3[2][2];\n\n // Compute the adjoint\n const d1 = +determinant2x2(b2, b3, c2, c3);\n const d2 = -determinant2x2(a2, a3, c2, c3);\n const d3 = +determinant2x2(a2, a3, b2, b3);\n\n const e1 = -determinant2x2(b1, b3, c1, c3);\n const e2 = +determinant2x2(a1, a3, c1, c3);\n const e3 = -determinant2x2(a1, a3, b1, b3);\n\n const f1 = +determinant2x2(b1, b2, c1, c2);\n const f2 = -determinant2x2(a1, a2, c1, c2);\n const f3 = +determinant2x2(a1, a2, b1, b2);\n\n // Compute the determinant\n const det = a1 * d1 + b1 * d2 + c1 * d3;\n\n // Multiply by the adjoint\n const v1 = d1 * x_3[0] + e1 * x_3[1] + f1 * x_3[2];\n const v2 = d2 * x_3[0] + e2 * x_3[1] + f2 * x_3[2];\n const v3 = d3 * x_3[0] + e3 * x_3[1] + f3 * x_3[2];\n\n // Divide by the determinant\n y_3[0] = v1 / det;\n y_3[1] = v2 / det;\n y_3[2] = v3 / det;\n}\n\nfunction multiply3x3_vect3(mat_3x3, in_3, out_3) {\n const x =\n mat_3x3[0][0] * in_3[0] + mat_3x3[0][1] * in_3[1] + mat_3x3[0][2] * in_3[2];\n const y =\n mat_3x3[1][0] * in_3[0] + mat_3x3[1][1] * in_3[1] + mat_3x3[1][2] * in_3[2];\n const z =\n mat_3x3[2][0] * in_3[0] + mat_3x3[2][1] * in_3[1] + mat_3x3[2][2] * in_3[2];\n\n out_3[0] = x;\n out_3[1] = y;\n out_3[2] = z;\n}\n\nfunction multiply3x3_mat3(a_3x3, b_3x3, out_3x3) {\n const tmp = [[0, 0, 0], [0, 0, 0], [0, 0, 0]];\n\n for (let i = 0; i < 3; i++) {\n tmp[0][i] =\n a_3x3[0][0] * b_3x3[0][i] +\n a_3x3[0][1] * b_3x3[1][i] +\n a_3x3[0][2] * b_3x3[2][i];\n tmp[1][i] =\n a_3x3[1][0] * b_3x3[0][i] +\n a_3x3[1][1] * b_3x3[1][i] +\n a_3x3[1][2] * b_3x3[2][i];\n tmp[2][i] =\n a_3x3[2][0] * b_3x3[0][i] +\n a_3x3[2][1] * b_3x3[1][i] +\n a_3x3[2][2] * b_3x3[2][i];\n }\n\n for (let j = 0; j < 3; j++) {\n out_3x3[j][0] = tmp[j][0];\n out_3x3[j][1] = tmp[j][1];\n out_3x3[j][2] = tmp[j][2];\n }\n}\n\nfunction multiplyMatrix(a, b, rowA, colA, rowB, colB, out_rowXcol) {\n // we need colA == rowB\n if (colA !== rowB) {\n vtkErrorMacro('Number of columns of A must match number of rows of B.');\n }\n\n // output matrix is rowA*colB\n // output row\n for (let i = 0; i < rowA; i++) {\n // output col\n for (let j = 0; j < colB; j++) {\n out_rowXcol[i][j] = 0;\n // sum for this point\n for (let k = 0; k < colA; k++) {\n out_rowXcol[i][j] += a[i][k] * b[k][j];\n }\n }\n }\n}\n\nfunction transpose3x3(in_3x3, outT_3x3) {\n let tmp;\n tmp = in_3x3[1][0];\n outT_3x3[1][0] = in_3x3[0][1];\n outT_3x3[0][1] = tmp;\n tmp = in_3x3[2][0];\n outT_3x3[2][0] = in_3x3[0][2];\n outT_3x3[0][2] = tmp;\n tmp = in_3x3[2][1];\n outT_3x3[2][1] = in_3x3[1][2];\n outT_3x3[1][2] = tmp;\n\n outT_3x3[0][0] = in_3x3[0][0];\n outT_3x3[1][1] = in_3x3[1][1];\n outT_3x3[2][2] = in_3x3[2][2];\n}\n\nfunction invert3x3(in_3x3, outI_3x3) {\n const a1 = in_3x3[0][0];\n const b1 = in_3x3[0][1];\n const c1 = in_3x3[0][2];\n const a2 = in_3x3[1][0];\n const b2 = in_3x3[1][1];\n const c2 = in_3x3[1][2];\n const a3 = in_3x3[2][0];\n const b3 = in_3x3[2][1];\n const c3 = in_3x3[2][2];\n\n // Compute the adjoint\n const d1 = +determinant2x2(b2, b3, c2, c3);\n const d2 = -determinant2x2(a2, a3, c2, c3);\n const d3 = +determinant2x2(a2, a3, b2, b3);\n\n const e1 = -determinant2x2(b1, b3, c1, c3);\n const e2 = +determinant2x2(a1, a3, c1, c3);\n const e3 = -determinant2x2(a1, a3, b1, b3);\n\n const f1 = +determinant2x2(b1, b2, c1, c2);\n const f2 = -determinant2x2(a1, a2, c1, c2);\n const f3 = +determinant2x2(a1, a2, b1, b2);\n\n // Divide by the determinant\n const det = a1 * d1 + b1 * d2 + c1 * d3;\n\n outI_3x3[0][0] = d1 / det;\n outI_3x3[1][0] = d2 / det;\n outI_3x3[2][0] = d3 / det;\n\n outI_3x3[0][1] = e1 / det;\n outI_3x3[1][1] = e2 / det;\n outI_3x3[2][1] = e3 / det;\n\n outI_3x3[0][2] = f1 / det;\n outI_3x3[1][2] = f2 / det;\n outI_3x3[2][2] = f3 / det;\n}\n\nfunction identity3x3(mat_3x3) {\n for (let i = 0; i < 3; i++) {\n mat_3x3[i][0] = mat_3x3[i][1] = mat_3x3[i][2] = 0;\n mat_3x3[i][i] = 1;\n }\n}\n\nfunction determinant3x3(mat_3x3) {\n return (\n mat_3x3[0][0] * mat_3x3[1][1] * mat_3x3[2][2] +\n mat_3x3[1][0] * mat_3x3[2][1] * mat_3x3[0][2] +\n mat_3x3[2][0] * mat_3x3[0][1] * mat_3x3[1][2] -\n mat_3x3[0][0] * mat_3x3[2][1] * mat_3x3[1][2] -\n mat_3x3[1][0] * mat_3x3[0][1] * mat_3x3[2][2] -\n mat_3x3[2][0] * mat_3x3[1][1] * mat_3x3[0][2]\n );\n}\n\nfunction quaternionToMatrix3x3(quat_4, mat_3x3) {\n const ww = quat_4[0] * quat_4[0];\n const wx = quat_4[0] * quat_4[1];\n const wy = quat_4[0] * quat_4[2];\n const wz = quat_4[0] * quat_4[3];\n\n const xx = quat_4[1] * quat_4[1];\n const yy = quat_4[2] * quat_4[2];\n const zz = quat_4[3] * quat_4[3];\n\n const xy = quat_4[1] * quat_4[2];\n const xz = quat_4[1] * quat_4[3];\n const yz = quat_4[2] * quat_4[3];\n\n const rr = xx + yy + zz;\n // normalization factor, just in case quaternion was not normalized\n let f = 1 / (ww + rr);\n const s = (ww - rr) * f;\n f *= 2;\n\n mat_3x3[0][0] = xx * f + s;\n mat_3x3[1][0] = (xy + wz) * f;\n mat_3x3[2][0] = (xz - wy) * f;\n\n mat_3x3[0][1] = (xy - wz) * f;\n mat_3x3[1][1] = yy * f + s;\n mat_3x3[2][1] = (yz + wx) * f;\n\n mat_3x3[0][2] = (xz + wy) * f;\n mat_3x3[1][2] = (yz - wx) * f;\n mat_3x3[2][2] = zz * f + s;\n}\n\nfunction areMatricesEqual(matA, matB) {\n if (!matA.length === matB.length) {\n return false;\n }\n\n function isEqual(element, index) {\n return element === matB[index];\n }\n return matA.every(isEqual);\n}\n\nfunction jacobiN(a, n, w, v) {\n let i;\n let j;\n let k;\n let iq;\n let ip;\n let numPos;\n let tresh;\n let theta;\n let t;\n let tau;\n let sm;\n let s;\n let h;\n let g;\n let c;\n let tmp;\n const b = createArray(n);\n const z = createArray(n);\n\n const vtkROTATE = (aa, ii, jj, kk, ll) => {\n g = aa[ii][jj];\n h = aa[kk][ll];\n aa[ii][jj] = g - s * (h + g * tau);\n aa[kk][ll] = h + s * (g - h * tau);\n };\n\n // initialize\n for (ip = 0; ip < n; ip++) {\n for (iq = 0; iq < n; iq++) {\n v[ip][iq] = 0.0;\n }\n v[ip][ip] = 1.0;\n }\n for (ip = 0; ip < n; ip++) {\n b[ip] = w[ip] = a[ip][ip];\n z[ip] = 0.0;\n }\n\n // begin rotation sequence\n for (i = 0; i < VTK_MAX_ROTATIONS; i++) {\n sm = 0.0;\n for (ip = 0; ip < n - 1; ip++) {\n for (iq = ip + 1; iq < n; iq++) {\n sm += Math.abs(a[ip][iq]);\n }\n }\n if (sm === 0.0) {\n break;\n }\n\n // first 3 sweeps\n if (i < 3) {\n tresh = 0.2 * sm / (n * n);\n } else {\n tresh = 0.0;\n }\n\n for (ip = 0; ip < n - 1; ip++) {\n for (iq = ip + 1; iq < n; iq++) {\n g = 100.0 * Math.abs(a[ip][iq]);\n\n // after 4 sweeps\n if (\n i > 3 &&\n Math.abs(w[ip]) + g === Math.abs(w[ip]) &&\n Math.abs(w[iq]) + g === Math.abs(w[iq])\n ) {\n a[ip][iq] = 0.0;\n } else if (Math.abs(a[ip][iq]) > tresh) {\n h = w[iq] - w[ip];\n if (Math.abs(h) + g === Math.abs(h)) {\n t = a[ip][iq] / h;\n } else {\n theta = 0.5 * h / a[ip][iq];\n t = 1.0 / (Math.abs(theta) + Math.sqrt(1.0 + theta * theta));\n if (theta < 0.0) {\n t = -t;\n }\n }\n c = 1.0 / Math.sqrt(1 + t * t);\n s = t * c;\n tau = s / (1.0 + c);\n h = t * a[ip][iq];\n z[ip] -= h;\n z[iq] += h;\n w[ip] -= h;\n w[iq] += h;\n a[ip][iq] = 0.0;\n\n // ip already shifted left by 1 unit\n for (j = 0; j <= ip - 1; j++) {\n vtkROTATE(a, j, ip, j, iq);\n }\n // ip and iq already shifted left by 1 unit\n for (j = ip + 1; j <= iq - 1; j++) {\n vtkROTATE(a, ip, j, j, iq);\n }\n // iq already shifted left by 1 unit\n for (j = iq + 1; j < n; j++) {\n vtkROTATE(a, ip, j, iq, j);\n }\n for (j = 0; j < n; j++) {\n vtkROTATE(v, j, ip, j, iq);\n }\n }\n }\n }\n\n for (ip = 0; ip < n; ip++) {\n b[ip] += z[ip];\n w[ip] = b[ip];\n z[ip] = 0.0;\n }\n }\n\n // this is NEVER called\n if (i >= VTK_MAX_ROTATIONS) {\n vtkWarningMacro('vtkMath::Jacobi: Error extracting eigenfunctions');\n return 0;\n }\n\n // sort eigenfunctions: these changes do not affect accuracy\n for (j = 0; j < n - 1; j++) {\n // boundary incorrect\n k = j;\n tmp = w[k];\n for (i = j + 1; i < n; i++) {\n // boundary incorrect, shifted already\n if (w[i] >= tmp) {\n // why exchange if same?\n k = i;\n tmp = w[k];\n }\n }\n if (k !== j) {\n w[k] = w[j];\n w[j] = tmp;\n for (i = 0; i < n; i++) {\n tmp = v[i][j];\n v[i][j] = v[i][k];\n v[i][k] = tmp;\n }\n }\n }\n // ensure eigenvector consistency (i.e., Jacobi can compute vectors that\n // are negative of one another (.707,.707,0) and (-.707,-.707,0). This can\n // reek havoc in hyperstreamline/other stuff. We will select the most\n // positive eigenvector.\n const ceil_half_n = (n >> 1) + (n & 1);\n for (j = 0; j < n; j++) {\n for (numPos = 0, i = 0; i < n; i++) {\n if (v[i][j] >= 0.0) {\n numPos++;\n }\n }\n // if ( numPos < ceil(double(n)/double(2.0)) )\n if (numPos < ceil_half_n) {\n for (i = 0; i < n; i++) {\n v[i][j] *= -1.0;\n }\n }\n }\n return 1;\n}\n\nfunction matrix3x3ToQuaternion(mat_3x3, quat_4) {\n const tmp = [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]];\n\n // on-diagonal elements\n tmp[0][0] = mat_3x3[0][0] + mat_3x3[1][1] + mat_3x3[2][2];\n tmp[1][1] = mat_3x3[0][0] - mat_3x3[1][1] - mat_3x3[2][2];\n tmp[2][2] = -mat_3x3[0][0] + mat_3x3[1][1] - mat_3x3[2][2];\n tmp[3][3] = -mat_3x3[0][0] - mat_3x3[1][1] + mat_3x3[2][2];\n\n // off-diagonal elements\n tmp[0][1] = tmp[1][0] = mat_3x3[2][1] - mat_3x3[1][2];\n tmp[0][2] = tmp[2][0] = mat_3x3[0][2] - mat_3x3[2][0];\n tmp[0][3] = tmp[3][0] = mat_3x3[1][0] - mat_3x3[0][1];\n\n tmp[1][2] = tmp[2][1] = mat_3x3[1][0] + mat_3x3[0][1];\n tmp[1][3] = tmp[3][1] = mat_3x3[0][2] + mat_3x3[2][0];\n tmp[2][3] = tmp[3][2] = mat_3x3[2][1] + mat_3x3[1][2];\n\n const eigenvectors = [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]];\n const eigenvalues = [0, 0, 0, 0];\n\n // convert into format that JacobiN can use,\n // then use Jacobi to find eigenvalues and eigenvectors\n const NTemp = [0, 0, 0, 0];\n const eigenvectorsTemp = [0, 0, 0, 0];\n for (let i = 0; i < 4; i++) {\n NTemp[i] = tmp[i];\n eigenvectorsTemp[i] = eigenvectors[i];\n }\n jacobiN(NTemp, 4, eigenvalues, eigenvectorsTemp);\n\n // the first eigenvector is the one we want\n quat_4[0] = eigenvectors[0][0];\n quat_4[1] = eigenvectors[1][0];\n quat_4[2] = eigenvectors[2][0];\n quat_4[3] = eigenvectors[3][0];\n}\n\nfunction multiplyQuaternion(quat_1, quat_2, quat_out) {\n const ww = quat_1[0] * quat_2[0];\n const wx = quat_1[0] * quat_2[1];\n const wy = quat_1[0] * quat_2[2];\n const wz = quat_1[0] * quat_2[3];\n\n const xw = quat_1[1] * quat_2[0];\n const xx = quat_1[1] * quat_2[1];\n const xy = quat_1[1] * quat_2[2];\n const xz = quat_1[1] * quat_2[3];\n\n const yw = quat_1[2] * quat_2[0];\n const yx = quat_1[2] * quat_2[1];\n const yy = quat_1[2] * quat_2[2];\n const yz = quat_1[2] * quat_2[3];\n\n const zw = quat_1[3] * quat_2[0];\n const zx = quat_1[3] * quat_2[1];\n const zy = quat_1[3] * quat_2[2];\n const zz = quat_1[3] * quat_2[3];\n\n quat_out[0] = ww - xx - yy - zz;\n quat_out[1] = wx + xw + yz - zy;\n quat_out[2] = wy - xz + yw + zx;\n quat_out[3] = wz + xy - yx + zw;\n}\n\nfunction orthogonalize3x3(a_3x3, out_3x3) {\n // copy the matrix\n for (let i = 0; i < 3; i++) {\n out_3x3[0][i] = a_3x3[0][i];\n out_3x3[1][i] = a_3x3[1][i];\n out_3x3[2][i] = a_3x3[2][i];\n }\n\n // Pivot the matrix to improve accuracy\n const scale = createArray(3);\n const index = createArray(3);\n let largest;\n\n // Loop over rows to get implicit scaling information\n for (let i = 0; i < 3; i++) {\n const x1 = Math.abs(out_3x3[i][0]);\n const x2 = Math.abs(out_3x3[i][1]);\n const x3 = Math.abs(out_3x3[i][2]);\n largest = x2 > x1 ? x2 : x1;\n largest = x3 > largest ? x3 : largest;\n scale[i] = 1;\n if (largest !== 0) {\n scale[i] /= largest;\n }\n }\n\n // first column\n const x1 = Math.abs(out_3x3[0][0]) * scale[0];\n const x2 = Math.abs(out_3x3[1][0]) * scale[1];\n const x3 = Math.abs(out_3x3[2][0]) * scale[2];\n index[0] = 0;\n largest = x1;\n if (x2 >= largest) {\n largest = x2;\n index[0] = 1;\n }\n if (x3 >= largest) {\n index[0] = 2;\n }\n if (index[0] !== 0) {\n vtkSwapVectors3(out_3x3[index[0]], out_3x3[0]);\n scale[index[0]] = scale[0];\n }\n\n // second column\n const y2 = Math.abs(out_3x3[1][1]) * scale[1];\n const y3 = Math.abs(out_3x3[2][1]) * scale[2];\n index[1] = 1;\n largest = y2;\n if (y3 >= largest) {\n index[1] = 2;\n vtkSwapVectors3(out_3x3[2], out_3x3[1]);\n }\n\n // third column\n index[2] = 2;\n\n // A quaternion can only describe a pure rotation, not\n // a rotation with a flip, therefore the flip must be\n // removed before the matrix is converted to a quaternion.\n let flip = 0;\n if (determinant3x3(out_3x3) < 0) {\n flip = 1;\n for (let i = 0; i < 3; i++) {\n out_3x3[0][i] = -out_3x3[0][i];\n out_3x3[1][i] = -out_3x3[1][i];\n out_3x3[2][i] = -out_3x3[2][i];\n }\n }\n\n // Do orthogonalization using a quaternion intermediate\n // (this, essentially, does the orthogonalization via\n // diagonalization of an appropriately constructed symmetric\n // 4x4 matrix rather than by doing SVD of the 3x3 matrix)\n const quat = createArray(4);\n matrix3x3ToQuaternion(out_3x3, quat);\n quaternionToMatrix3x3(quat, out_3x3);\n\n // Put the flip back into the orthogonalized matrix.\n if (flip) {\n for (let i = 0; i < 3; i++) {\n out_3x3[0][i] = -out_3x3[0][i];\n out_3x3[1][i] = -out_3x3[1][i];\n out_3x3[2][i] = -out_3x3[2][i];\n }\n }\n\n // Undo the pivoting\n if (index[1] !== 1) {\n vtkSwapVectors3(out_3x3[index[1]], out_3x3[1]);\n }\n if (index[0] !== 0) {\n vtkSwapVectors3(out_3x3[index[0]], out_3x3[0]);\n }\n}\n\nfunction diagonalize3x3(a_3x3, w_3, v_3x3) {\n let i;\n let j;\n let k;\n let maxI;\n let tmp;\n let maxVal;\n\n // do the matrix[3][3] to **matrix conversion for Jacobi\n const C = [createArray(3), createArray(3), createArray(3)];\n const ATemp = createArray(3);\n const VTemp = createArray(3);\n for (i = 0; i < 3; i++) {\n C[i][0] = a_3x3[i][0];\n C[i][1] = a_3x3[i][1];\n C[i][2] = a_3x3[i][2];\n ATemp[i] = C[i];\n VTemp[i] = v_3x3[i];\n }\n\n // diagonalize using Jacobi\n jacobiN(ATemp, 3, w_3, VTemp);\n\n // if all the eigenvalues are the same, return identity matrix\n if (w_3[0] === w_3[1] && w_3[0] === w_3[2]) {\n identity3x3(v_3x3);\n return;\n }\n\n // transpose temporarily, it makes it easier to sort the eigenvectors\n transpose3x3(v_3x3, v_3x3);\n\n // if two eigenvalues are the same, re-orthogonalize to optimally line\n // up the eigenvectors with the x, y, and z axes\n for (i = 0; i < 3; i++) {\n // two eigenvalues are the same\n if (w_3[(i + 1) % 3] === w_3[(i + 2) % 3]) {\n // find maximum element of the independent eigenvector\n maxVal = Math.abs(v_3x3[i][0]);\n maxI = 0;\n for (j = 1; j < 3; j++) {\n if (maxVal < (tmp = Math.abs(v_3x3[i][j]))) {\n maxVal = tmp;\n maxI = j;\n }\n }\n // swap the eigenvector into its proper position\n if (maxI !== i) {\n tmp = w_3[maxI];\n w_3[maxI] = w_3[i];\n w_3[i] = tmp;\n vtkSwapVectors3(v_3x3[i], v_3x3[maxI]);\n }\n // maximum element of eigenvector should be positive\n if (v_3x3[maxI][maxI] < 0) {\n v_3x3[maxI][0] = -v_3x3[maxI][0];\n v_3x3[maxI][1] = -v_3x3[maxI][1];\n v_3x3[maxI][2] = -v_3x3[maxI][2];\n }\n\n // re-orthogonalize the other two eigenvectors\n j = (maxI + 1) % 3;\n k = (maxI + 2) % 3;\n\n v_3x3[j][0] = 0.0;\n v_3x3[j][1] = 0.0;\n v_3x3[j][2] = 0.0;\n v_3x3[j][j] = 1.0;\n cross(v_3x3[maxI], v_3x3[j], v_3x3[k]);\n normalize(v_3x3[k]);\n cross(v_3x3[k], v_3x3[maxI], v_3x3[j]);\n\n // transpose vectors back to columns\n transpose3x3(v_3x3, v_3x3);\n return;\n }\n }\n\n // the three eigenvalues are different, just sort the eigenvectors\n // to align them with the x, y, and z axes\n\n // find the vector with the largest x element, make that vector\n // the first vector\n maxVal = Math.abs(v_3x3[0][0]);\n maxI = 0;\n for (i = 1; i < 3; i++) {\n if (maxVal < (tmp = Math.abs(v_3x3[i][0]))) {\n maxVal = tmp;\n maxI = i;\n }\n }\n // swap eigenvalue and eigenvector\n if (maxI !== 0) {\n tmp = w_3[maxI];\n w_3[maxI] = w_3[0];\n w_3[0] = tmp;\n vtkSwapVectors3(v_3x3[maxI], v_3x3[0]);\n }\n // do the same for the y element\n if (Math.abs(v_3x3[1][1]) < Math.abs(v_3x3[2][1])) {\n tmp = w_3[2];\n w_3[2] = w_3[1];\n w_3[1] = tmp;\n vtkSwapVectors3(v_3x3[2], v_3x3[1]);\n }\n\n // ensure that the sign of the eigenvectors is correct\n for (i = 0; i < 2; i++) {\n if (v_3x3[i][i] < 0) {\n v_3x3[i][0] = -v_3x3[i][0];\n v_3x3[i][1] = -v_3x3[i][1];\n v_3x3[i][2] = -v_3x3[i][2];\n }\n }\n // set sign of final eigenvector to ensure that determinant is positive\n if (determinant3x3(v_3x3) < 0) {\n v_3x3[2][0] = -v_3x3[2][0];\n v_3x3[2][1] = -v_3x3[2][1];\n v_3x3[2][2] = -v_3x3[2][2];\n }\n\n // transpose the eigenvectors back again\n transpose3x3(v_3x3, v_3x3);\n}\n\nfunction singularValueDecomposition3x3(a_3x3, u_3x3, w_3, vT_3x3) {\n let i;\n const B = [createArray(3), createArray(3), createArray(3)];\n\n // copy so that A can be used for U or VT without risk\n for (i = 0; i < 3; i++) {\n B[0][i] = a_3x3[0][i];\n B[1][i] = a_3x3[1][i];\n B[2][i] = a_3x3[2][i];\n }\n\n // temporarily flip if determinant is negative\n const d = determinant3x3(B);\n if (d < 0) {\n for (i = 0; i < 3; i++) {\n B[0][i] = -B[0][i];\n B[1][i] = -B[1][i];\n B[2][i] = -B[2][i];\n }\n }\n\n // orthogonalize, diagonalize, etc.\n orthogonalize3x3(B, u_3x3);\n transpose3x3(B, B);\n multiply3x3_mat3(B, u_3x3, vT_3x3);\n diagonalize3x3(vT_3x3, w_3, vT_3x3);\n multiply3x3_mat3(u_3x3, vT_3x3, u_3x3);\n transpose3x3(vT_3x3, vT_3x3);\n\n // re-create the flip\n if (d < 0) {\n w_3[0] = -w_3[0];\n w_3[1] = -w_3[1];\n w_3[2] = -w_3[2];\n }\n}\n\nfunction luFactorLinearSystem(A, index, size) {\n let i;\n let j;\n let k;\n let largest;\n let maxI = 0;\n let sum;\n let temp1;\n let temp2;\n const scale = createArray(size);\n\n //\n // Loop over rows to get implicit scaling information\n //\n for (i = 0; i < size; i++) {\n for (largest = 0.0, j = 0; j < size; j++) {\n if ((temp2 = Math.abs(A[i][j])) > largest) {\n largest = temp2;\n }\n }\n\n if (largest === 0.0) {\n vtkWarningMacro('Unable to factor linear system');\n return 0;\n }\n scale[i] = 1.0 / largest;\n }\n //\n // Loop over all columns using Crout's method\n //\n for (j = 0; j < size; j++) {\n for (i = 0; i < j; i++) {\n sum = A[i][j];\n for (k = 0; k < i; k++) {\n sum -= A[i][k] * A[k][j];\n }\n A[i][j] = sum;\n }\n //\n // Begin search for largest pivot element\n //\n for (largest = 0.0, i = j; i < size; i++) {\n sum = A[i][j];\n for (k = 0; k < j; k++) {\n sum -= A[i][k] * A[k][j];\n }\n A[i][j] = sum;\n\n if ((temp1 = scale[i] * Math.abs(sum)) >= largest) {\n largest = temp1;\n maxI = i;\n }\n }\n //\n // Check for row interchange\n //\n if (j !== maxI) {\n for (k = 0; k < size; k++) {\n temp1 = A[maxI][k];\n A[maxI][k] = A[j][k];\n A[j][k] = temp1;\n }\n scale[maxI] = scale[j];\n }\n //\n // Divide by pivot element and perform elimination\n //\n index[j] = maxI;\n\n if (Math.abs(A[j][j]) <= VTK_SMALL_NUMBER) {\n vtkWarningMacro('Unable to factor linear system');\n return 0;\n }\n\n if (j !== size - 1) {\n temp1 = 1.0 / A[j][j];\n for (i = j + 1; i < size; i++) {\n A[i][j] *= temp1;\n }\n }\n }\n return 1;\n}\n\nfunction luSolveLinearSystem(A, index, x, size) {\n let i;\n let j;\n let ii;\n let idx;\n let sum;\n //\n // Proceed with forward and backsubstitution for L and U\n // matrices. First, forward substitution.\n //\n for (ii = -1, i = 0; i < size; i++) {\n idx = index[i];\n sum = x[idx];\n x[idx] = x[i];\n\n if (ii >= 0) {\n for (j = ii; j <= i - 1; j++) {\n sum -= A[i][j] * x[j];\n }\n } else if (sum !== 0.0) {\n ii = i;\n }\n\n x[i] = sum;\n }\n //\n // Now, back substitution\n //\n for (i = size - 1; i >= 0; i--) {\n sum = x[i];\n for (j = i + 1; j < size; j++) {\n sum -= A[i][j] * x[j];\n }\n x[i] = sum / A[i][i];\n }\n}\n\nfunction solveLinearSystem(A, x, size) {\n // if we solving something simple, just solve it\n if (size === 2) {\n const y = createArray(2);\n const det = determinant2x2(A[0][0], A[0][1], A[1][0], A[1][1]);\n\n if (det === 0.0) {\n // Unable to solve linear system\n return 0;\n }\n\n y[0] = (A[1][1] * x[0] - A[0][1] * x[1]) / det;\n y[1] = (-(A[1][0] * x[0]) + A[0][0] * x[1]) / det;\n\n x[0] = y[0];\n x[1] = y[1];\n return 1;\n } else if (size === 1) {\n if (A[0][0] === 0.0) {\n // Unable to solve linear system\n return 0;\n }\n\n x[0] /= A[0][0];\n return 1;\n }\n\n //\n // System of equations is not trivial, use Crout's method\n //\n\n // Check on allocation of working vectors\n const index = createArray(size);\n\n // Factor and solve matrix\n if (luFactorLinearSystem(A, index, size) === 0) {\n return 0;\n }\n luSolveLinearSystem(A, index, x, size);\n\n return 1;\n}\n\nfunction invertMatrix(A, AI, size, index = null, column = null) {\n const tmp1Size = index || createArray(size);\n const tmp2Size = column || createArray(size);\n\n // Factor matrix; then begin solving for inverse one column at a time.\n // Note: tmp1Size returned value is used later, tmp2Size is just working\n // memory whose values are not used in LUSolveLinearSystem\n if (luFactorLinearSystem(A, tmp1Size, size, tmp2Size) === 0) {\n return 0;\n }\n\n for (let j = 0; j < size; j++) {\n for (let i = 0; i < size; i++) {\n tmp2Size[i] = 0.0;\n }\n tmp2Size[j] = 1.0;\n\n luSolveLinearSystem(A, tmp1Size, tmp2Size, size);\n\n for (let i = 0; i < size; i++) {\n AI[i][j] = tmp2Size[i];\n }\n }\n\n return 1;\n}\n\nfunction estimateMatrixCondition(A, size) {\n let minValue = +Number.MAX_VALUE;\n let maxValue = -Number.MAX_VALUE;\n\n // find the maximum value\n for (let i = 0; i < size; i++) {\n for (let j = i; j < size; j++) {\n if (Math.abs(A[i][j]) > max) {\n maxValue = Math.abs(A[i][j]);\n }\n }\n }\n\n // find the minimum diagonal value\n for (let i = 0; i < size; i++) {\n if (Math.abs(A[i][i]) < min) {\n minValue = Math.abs(A[i][i]);\n }\n }\n\n if (minValue === 0.0) {\n return Number.MAX_VALUE;\n }\n return maxValue / minValue;\n}\n\nfunction jacobi(a_3x3, w, v) {\n return jacobiN(a_3x3, 3, w, v);\n}\n\nfunction solveHomogeneousLeastSquares(numberOfSamples, xt, xOrder, mt) {\n // check dimensional consistency\n if (numberOfSamples < xOrder) {\n vtkWarningMacro('Insufficient number of samples. Underdetermined.');\n return 0;\n }\n\n let i;\n let j;\n let k;\n\n // set up intermediate variables\n // Allocate matrix to hold X times transpose of X\n const XXt = createArray(xOrder); // size x by x\n // Allocate the array of eigenvalues and eigenvectors\n const eigenvals = createArray(xOrder);\n const eigenvecs = createArray(xOrder);\n\n // Clear the upper triangular region (and btw, allocate the eigenvecs as well)\n for (i = 0; i < xOrder; i++) {\n eigenvecs[i] = createArray(xOrder);\n XXt[i] = createArray(xOrder);\n for (j = 0; j < xOrder; j++) {\n XXt[i][j] = 0.0;\n }\n }\n\n // Calculate XXt upper half only, due to symmetry\n for (k = 0; k < numberOfSamples; k++) {\n for (i = 0; i < xOrder; i++) {\n for (j = i; j < xOrder; j++) {\n XXt[i][j] += xt[k][i] * xt[k][j];\n }\n }\n }\n\n // now fill in the lower half of the XXt matrix\n for (i = 0; i < xOrder; i++) {\n for (j = 0; j < i; j++) {\n XXt[i][j] = XXt[j][i];\n }\n }\n\n // Compute the eigenvectors and eigenvalues\n jacobiN(XXt, xOrder, eigenvals, eigenvecs);\n\n // Smallest eigenval is at the end of the list (xOrder-1), and solution is\n // corresponding eigenvec.\n for (i = 0; i < xOrder; i++) {\n mt[i][0] = eigenvecs[i][xOrder - 1];\n }\n\n return 1;\n}\n\nfunction solveLeastSquares(\n numberOfSamples,\n xt,\n xOrder,\n yt,\n yOrder,\n mt,\n checkHomogeneous = true\n) {\n // check dimensional consistency\n if (numberOfSamples < xOrder || numberOfSamples < yOrder) {\n vtkWarningMacro('Insufficient number of samples. Underdetermined.');\n return 0;\n }\n\n const homogenFlags = createArray(yOrder);\n let allHomogeneous = 1;\n let hmt;\n let homogRC = 0;\n let i;\n let j;\n let k;\n let someHomogeneous = 0;\n\n // Ok, first init some flags check and see if all the systems are homogeneous\n if (checkHomogeneous) {\n // If Y' is zero, it's a homogeneous system and can't be solved via\n // the pseudoinverse method. Detect this case, warn the user, and\n // invoke SolveHomogeneousLeastSquares instead. Note that it doesn't\n // really make much sense for yOrder to be greater than one in this case,\n // since that's just yOrder occurrences of a 0 vector on the RHS, but\n // we allow it anyway. N\n\n // Initialize homogeneous flags on a per-right-hand-side basis\n for (j = 0; j < yOrder; j++) {\n homogenFlags[j] = 1;\n }\n for (i = 0; i < numberOfSamples; i++) {\n for (j = 0; j < yOrder; j++) {\n if (Math.abs(yt[i][j]) > VTK_SMALL_NUMBER) {\n allHomogeneous = 0;\n homogenFlags[j] = 0;\n }\n }\n }\n\n // If we've got one system, and it's homogeneous, do it and bail out quickly.\n if (allHomogeneous && yOrder === 1) {\n vtkWarningMacro(\n 'Detected homogeneous system (Y=0), calling SolveHomogeneousLeastSquares()'\n );\n return solveHomogeneousLeastSquares(numberOfSamples, xt, xOrder, mt);\n }\n\n // Ok, we've got more than one system of equations.\n // Figure out if we need to calculate the homogeneous equation solution for\n // any of them.\n if (allHomogeneous) {\n someHomogeneous = 1;\n } else {\n for (j = 0; j < yOrder; j++) {\n if (homogenFlags[j]) {\n someHomogeneous = 1;\n }\n }\n }\n }\n\n // If necessary, solve the homogeneous problem\n if (someHomogeneous) {\n // hmt is the homogeneous equation version of mt, the general solution.\n hmt = createArray(xOrder);\n for (j = 0; j < xOrder; j++) {\n // Only allocate 1 here, not yOrder, because here we're going to solve\n // just the one homogeneous equation subset of the entire problem\n hmt[j] = [0];\n }\n\n // Ok, solve the homogeneous problem\n homogRC = solveHomogeneousLeastSquares(numberOfSamples, xt, xOrder, hmt);\n }\n\n // set up intermediate variables\n const XXt = createArray(xOrder); // size x by x\n const XXtI = createArray(xOrder); // size x by x\n const XYt = createArray(xOrder); // size x by y\n for (i = 0; i < xOrder; i++) {\n XXt[i] = createArray(xOrder);\n XXtI[i] = createArray(xOrder);\n\n for (j = 0; j < xOrder; j++) {\n XXt[i][j] = 0.0;\n XXtI[i][j] = 0.0;\n }\n\n XYt[i] = createArray(yOrder);\n for (j = 0; j < yOrder; j++) {\n XYt[i][j] = 0.0;\n }\n }\n\n // first find the pseudoinverse matrix\n for (k = 0; k < numberOfSamples; k++) {\n for (i = 0; i < xOrder; i++) {\n // first calculate the XXt matrix, only do the upper half (symmetrical)\n for (j = i; j < xOrder; j++) {\n XXt[i][j] += xt[k][i] * xt[k][j];\n }\n\n // now calculate the XYt matrix\n for (j = 0; j < yOrder; j++) {\n XYt[i][j] += xt[k][i] * yt[k][j];\n }\n }\n }\n\n // now fill in the lower half of the XXt matrix\n for (i = 0; i < xOrder; i++) {\n for (j = 0; j < i; j++) {\n XXt[i][j] = XXt[j][i];\n }\n }\n\n const successFlag = invertMatrix(XXt, XXtI, xOrder);\n\n // next get the inverse of XXt\n if (successFlag) {\n for (i = 0; i < xOrder; i++) {\n for (j = 0; j < yOrder; j++) {\n mt[i][j] = 0.0;\n for (k = 0; k < xOrder; k++) {\n mt[i][j] += XXtI[i][k] * XYt[k][j];\n }\n }\n }\n }\n\n // Fix up any of the solutions that correspond to the homogeneous equation\n // problem.\n if (someHomogeneous) {\n for (j = 0; j < yOrder; j++) {\n if (homogenFlags[j]) {\n // Fix this one\n for (i = 0; i < xOrder; i++) {\n mt[i][j] = hmt[i][0];\n }\n }\n }\n }\n\n if (someHomogeneous) {\n return homogRC && successFlag;\n }\n\n return successFlag;\n}\n\nfunction hex2float(hexStr, outFloatArray = [0, 0.5, 1]) {\n switch (hexStr.length) {\n case 3: // abc => #aabbcc\n outFloatArray[0] = parseInt(hexStr[0], 16) * 17 / 255;\n outFloatArray[1] = parseInt(hexStr[1], 16) * 17 / 255;\n outFloatArray[2] = parseInt(hexStr[2], 16) * 17 / 255;\n return outFloatArray;\n case 4: // #abc => #aabbcc\n outFloatArray[0] = parseInt(hexStr[1], 16) * 17 / 255;\n outFloatArray[1] = parseInt(hexStr[2], 16) * 17 / 255;\n outFloatArray[2] = parseInt(hexStr[3], 16) * 17 / 255;\n return outFloatArray;\n case 6: // ab01df => #ab01df\n outFloatArray[0] = parseInt(hexStr.substr(0, 2), 16) / 255;\n outFloatArray[1] = parseInt(hexStr.substr(2, 2), 16) / 255;\n outFloatArray[2] = parseInt(hexStr.substr(4, 2), 16) / 255;\n return outFloatArray;\n case 7: // #ab01df\n outFloatArray[0] = parseInt(hexStr.substr(1, 2), 16) / 255;\n outFloatArray[1] = parseInt(hexStr.substr(3, 2), 16) / 255;\n outFloatArray[2] = parseInt(hexStr.substr(5, 2), 16) / 255;\n return outFloatArray;\n case 9: // #ab01df00\n outFloatArray[0] = parseInt(hexStr.substr(1, 2), 16) / 255;\n outFloatArray[1] = parseInt(hexStr.substr(3, 2), 16) / 255;\n outFloatArray[2] = parseInt(hexStr.substr(5, 2), 16) / 255;\n outFloatArray[3] = parseInt(hexStr.substr(7, 2), 16) / 255;\n return outFloatArray;\n default:\n return outFloatArray;\n }\n}\n\nfunction rgb2hsv(rgb, hsv) {\n let h;\n let s;\n const [r, g, b] = rgb;\n const onethird = 1.0 / 3.0;\n const onesixth = 1.0 / 6.0;\n const twothird = 2.0 / 3.0;\n\n let cmax = r;\n let cmin = r;\n\n if (g > cmax) {\n cmax = g;\n } else if (g < cmin) {\n cmin = g;\n }\n if (b > cmax) {\n cmax = b;\n } else if (b < cmin) {\n cmin = b;\n }\n const v = cmax;\n\n if (v > 0.0) {\n s = (cmax - cmin) / cmax;\n } else {\n s = 0.0;\n }\n if (s > 0) {\n if (r === cmax) {\n h = onesixth * (g - b) / (cmax - cmin);\n } else if (g === cmax) {\n h = onethird + onesixth * (b - r) / (cmax - cmin);\n } else {\n h = twothird + onesixth * (r - g) / (cmax - cmin);\n }\n if (h < 0.0) {\n h += 1.0;\n }\n } else {\n h = 0.0;\n }\n\n // Set the values back to the array\n hsv[0] = h;\n hsv[1] = s;\n hsv[2] = v;\n}\n\nfunction hsv2rgb(hsv, rgb) {\n const [h, s, v] = hsv;\n const onethird = 1.0 / 3.0;\n const onesixth = 1.0 / 6.0;\n const twothird = 2.0 / 3.0;\n const fivesixth = 5.0 / 6.0;\n let r;\n let g;\n let b;\n\n // compute RGB from HSV\n if (h > onesixth && h <= onethird) {\n // green/red\n g = 1.0;\n r = (onethird - h) / onesixth;\n b = 0.0;\n } else if (h > onethird && h <= 0.5) {\n // green/blue\n g = 1.0;\n b = (h - onethird) / onesixth;\n r = 0.0;\n } else if (h > 0.5 && h <= twothird) {\n // blue/green\n b = 1.0;\n g = (twothird - h) / onesixth;\n r = 0.0;\n } else if (h > twothird && h <= fivesixth) {\n // blue/red\n b = 1.0;\n r = (h - twothird) / onesixth;\n g = 0.0;\n } else if (h > fivesixth && h <= 1.0) {\n // red/blue\n r = 1.0;\n b = (1.0 - h) / onesixth;\n g = 0.0;\n } else {\n // red/green\n r = 1.0;\n g = h / onesixth;\n b = 0.0;\n }\n\n // add Saturation to the equation.\n r = s * r + (1.0 - s);\n g = s * g + (1.0 - s);\n b = s * b + (1.0 - s);\n\n r *= v;\n g *= v;\n b *= v;\n\n // Assign back to the array\n rgb[0] = r;\n rgb[1] = g;\n rgb[2] = b;\n}\n\nfunction lab2xyz(lab, xyz) {\n // LAB to XYZ\n const [L, a, b] = lab;\n let var_Y = (L + 16) / 116;\n let var_X = a / 500 + var_Y;\n let var_Z = var_Y - b / 200;\n\n if (var_Y ** 3 > 0.008856) {\n var_Y **= 3;\n } else {\n var_Y = (var_Y - 16.0 / 116.0) / 7.787;\n }\n\n if (var_X ** 3 > 0.008856) {\n var_X **= 3;\n } else {\n var_X = (var_X - 16.0 / 116.0) / 7.787;\n }\n\n if (var_Z ** 3 > 0.008856) {\n var_Z **= 3;\n } else {\n var_Z = (var_Z - 16.0 / 116.0) / 7.787;\n }\n const ref_X = 0.9505;\n const ref_Y = 1.0;\n const ref_Z = 1.089;\n xyz[0] = ref_X * var_X; // ref_X = 0.9505 Observer= 2 deg Illuminant= D65\n xyz[1] = ref_Y * var_Y; // ref_Y = 1.000\n xyz[2] = ref_Z * var_Z; // ref_Z = 1.089\n}\n\nfunction xyz2lab(xyz, lab) {\n const [x, y, z] = xyz;\n const ref_X = 0.9505;\n const ref_Y = 1.0;\n const ref_Z = 1.089;\n let var_X = x / ref_X; // ref_X = 0.9505 Observer= 2 deg, Illuminant= D65\n let var_Y = y / ref_Y; // ref_Y = 1.000\n let var_Z = z / ref_Z; // ref_Z = 1.089\n\n if (var_X > 0.008856) var_X **= 1.0 / 3.0;\n else var_X = 7.787 * var_X + 16.0 / 116.0;\n if (var_Y > 0.008856) var_Y **= 1.0 / 3.0;\n else var_Y = 7.787 * var_Y + 16.0 / 116.0;\n if (var_Z > 0.008856) var_Z **= 1.0 / 3.0;\n else var_Z = 7.787 * var_Z + 16.0 / 116.0;\n\n lab[0] = 116 * var_Y - 16;\n lab[1] = 500 * (var_X - var_Y);\n lab[2] = 200 * (var_Y - var_Z);\n}\n\nfunction xyz2rgb(xyz, rgb) {\n const [x, y, z] = xyz;\n let r = x * 3.2406 + y * -1.5372 + z * -0.4986;\n let g = x * -0.9689 + y * 1.8758 + z * 0.0415;\n let b = x * 0.0557 + y * -0.204 + z * 1.057;\n\n // The following performs a \"gamma correction\" specified by the sRGB color\n // space. sRGB is defined by a canonical definition of a display monitor and\n // has been standardized by the International Electrotechnical Commission (IEC\n // 61966-2-1). The nonlinearity of the correction is designed to make the\n // colors more perceptually uniform. This color space has been adopted by\n // several applications including Adobe Photoshop and Microsoft Windows color\n // management. OpenGL is agnostic on its RGB color space, but it is reasonable\n // to assume it is close to this one.\n if (r > 0.0031308) r = 1.055 * r ** (1 / 2.4) - 0.055;\n else r *= 12.92;\n if (g > 0.0031308) g = 1.055 * g ** (1 / 2.4) - 0.055;\n else g *= 12.92;\n if (b > 0.0031308) b = 1.055 * b ** (1 / 2.4) - 0.055;\n else b *= 12.92;\n\n // Clip colors. ideally we would do something that is perceptually closest\n // (since we can see colors outside of the display gamut), but this seems to\n // work well enough.\n let maxVal = r;\n if (maxVal < g) maxVal = g;\n if (maxVal < b) maxVal = b;\n if (maxVal > 1.0) {\n r /= maxVal;\n g /= maxVal;\n b /= maxVal;\n }\n if (r < 0) r = 0;\n if (g < 0) g = 0;\n if (b < 0) b = 0;\n\n // Push values back to array\n rgb[0] = r;\n rgb[1] = g;\n rgb[2] = b;\n}\n\nfunction rgb2xyz(rgb, xyz) {\n let [r, g, b] = rgb;\n // The following performs a \"gamma correction\" specified by the sRGB color\n // space. sRGB is defined by a canonical definition of a display monitor and\n // has been standardized by the International Electrotechnical Commission (IEC\n // 61966-2-1). The nonlinearity of the correction is designed to make the\n // colors more perceptually uniform. This color space has been adopted by\n // several applications including Adobe Photoshop and Microsoft Windows color\n // management. OpenGL is agnostic on its RGB color space, but it is reasonable\n // to assume it is close to this one.\n if (r > 0.04045) r = ((r + 0.055) / 1.055) ** 2.4;\n else r /= 12.92;\n if (g > 0.04045) g = ((g + 0.055) / 1.055) ** 2.4;\n else g /= 12.92;\n if (b > 0.04045) b = ((b + 0.055) / 1.055) ** 2.4;\n else b /= 12.92;\n\n // Observer. = 2 deg, Illuminant = D65\n xyz[0] = r * 0.4124 + g * 0.3576 + b * 0.1805;\n xyz[1] = r * 0.2126 + g * 0.7152 + b * 0.0722;\n xyz[2] = r * 0.0193 + g * 0.1192 + b * 0.9505;\n}\n\nfunction rgb2lab(rgb, lab) {\n const xyz = [0, 0, 0];\n rgb2xyz(rgb, xyz);\n xyz2lab(xyz, lab);\n}\n\nfunction lab2rgb(lab, rgb) {\n const xyz = [0, 0, 0];\n lab2xyz(lab, xyz);\n xyz2rgb(xyz, rgb);\n}\n\nfunction uninitializeBounds(bounds) {\n bounds[0] = 1.0;\n bounds[1] = -1.0;\n bounds[2] = 1.0;\n bounds[3] = -1.0;\n bounds[4] = 1.0;\n bounds[5] = -1.0;\n}\n\nfunction areBoundsInitialized(bounds) {\n return !(bounds[1] - bounds[0] < 0.0);\n}\n\nfunction clampValue(value, minValue, maxValue) {\n if (value < minValue) {\n return minValue;\n }\n if (value > maxValue) {\n return maxValue;\n }\n return value;\n}\n\nfunction clampAndNormalizeValue(value, range) {\n let result = 0;\n if (range[0] !== range[1]) {\n // clamp\n if (value < range[0]) {\n result = range[0];\n } else if (value > range[1]) {\n result = range[1];\n } else {\n result = value;\n }\n // normalize\n result = (result - range[0]) / (range[1] - range[0]);\n }\n\n return result;\n}\n\nconst getScalarTypeFittingRange = notImplemented('GetScalarTypeFittingRange');\nconst getAdjustedScalarRange = notImplemented('GetAdjustedScalarRange');\n\nfunction extentIsWithinOtherExtent(extent1, extent2) {\n if (!extent1 || !extent2) {\n return 0;\n }\n\n for (let i = 0; i < 6; i += 2) {\n if (\n extent1[i] < extent2[i] ||\n extent1[i] > extent2[i + 1] ||\n extent1[i + 1] < extent2[i] ||\n extent1[i + 1] > extent2[i + 1]\n ) {\n return 0;\n }\n }\n\n return 1;\n}\n\nfunction boundsIsWithinOtherBounds(bounds1_6, bounds2_6, delta_3) {\n if (!bounds1_6 || !bounds2_6) {\n return 0;\n }\n for (let i = 0; i < 6; i += 2) {\n if (\n bounds1_6[i] + delta_3[i / 2] < bounds2_6[i] ||\n bounds1_6[i] - delta_3[i / 2] > bounds2_6[i + 1] ||\n bounds1_6[i + 1] + delta_3[i / 2] < bounds2_6[i] ||\n bounds1_6[i + 1] - delta_3[i / 2] > bounds2_6[i + 1]\n ) {\n return 0;\n }\n }\n return 1;\n}\n\nfunction pointIsWithinBounds(point_3, bounds_6, delta_3) {\n if (!point_3 || !bounds_6 || !delta_3) {\n return 0;\n }\n for (let i = 0; i < 3; i++) {\n if (\n point_3[i] + delta_3[i] < bounds_6[2 * i] ||\n point_3[i] - delta_3[i] > bounds_6[2 * i + 1]\n ) {\n return 0;\n }\n }\n return 1;\n}\n\nfunction solve3PointCircle(p1, p2, p3, center) {\n const v21 = createArray(3);\n const v32 = createArray(3);\n const v13 = createArray(3);\n const v12 = createArray(3);\n const v23 = createArray(3);\n const v31 = createArray(3);\n\n for (let i = 0; i < 3; ++i) {\n v21[i] = p1[i] - p2[i];\n v32[i] = p2[i] - p3[i];\n v13[i] = p3[i] - p1[i];\n v12[i] = -v21[i];\n v23[i] = -v32[i];\n v31[i] = -v13[i];\n }\n\n const norm12 = norm(v12);\n const norm23 = norm(v23);\n const norm13 = norm(v13);\n\n const crossv21v32 = createArray(3);\n cross(v21, v32, crossv21v32);\n const normCross = norm(crossv21v32);\n\n const radius = norm12 * norm23 * norm13 / (2 * normCross);\n\n const normCross22 = 2 * normCross * normCross;\n const alpha = norm23 * norm23 * dot(v21, v31) / normCross22;\n const beta = norm13 * norm13 * dot(v12, v32) / normCross22;\n const gamma = norm12 * norm12 * dot(v13, v23) / normCross22;\n\n for (let i = 0; i < 3; ++i) {\n center[i] = alpha * p1[i] + beta * p2[i] + gamma * p3[i];\n }\n return radius;\n}\n\nconst inf = Infinity;\nconst negInf = -Infinity;\n\nconst isInf = (value) => !Number.isFinite(value);\nconst { isFinite, isNaN } = Number;\n\n// JavaScript - add-on ----------------------\n\nfunction createUninitializedBounds() {\n return [].concat([\n Number.MAX_VALUE,\n -Number.MAX_VALUE, // X\n Number.MAX_VALUE,\n -Number.MAX_VALUE, // Y\n Number.MAX_VALUE,\n -Number.MAX_VALUE, // Z\n ]);\n}\n\nfunction getMajorAxisIndex(vector) {\n let maxValue = -1;\n let axisIndex = -1;\n for (let i = 0; i < vector.length; i++) {\n const value = Math.abs(vector[i]);\n if (value > maxValue) {\n axisIndex = i;\n maxValue = value;\n }\n }\n\n return axisIndex;\n}\n\n// ----------------------------------------------------------------------------\n// Only Static API\n// ----------------------------------------------------------------------------\n\nexport default {\n Pi,\n radiansFromDegrees,\n degreesFromRadians,\n round,\n floor,\n ceil,\n ceilLog2,\n min,\n max,\n arrayMin,\n arrayMax,\n isPowerOfTwo,\n nearestPowerOfTwo,\n factorial,\n binomial,\n beginCombination,\n nextCombination,\n randomSeed,\n getSeed,\n random,\n gaussian,\n add,\n subtract,\n multiplyScalar,\n multiplyScalar2D,\n dot,\n outer,\n cross,\n norm,\n normalize,\n perpendiculars,\n projectVector,\n projectVector2D,\n distance2BetweenPoints,\n angleBetweenVectors,\n gaussianAmplitude,\n gaussianWeight,\n dot2D,\n outer2D,\n norm2D,\n normalize2D,\n determinant2x2,\n LUFactor3x3,\n LUSolve3x3,\n linearSolve3x3,\n multiply3x3_vect3,\n multiply3x3_mat3,\n multiplyMatrix,\n transpose3x3,\n invert3x3,\n identity3x3,\n determinant3x3,\n quaternionToMatrix3x3,\n areMatricesEqual,\n matrix3x3ToQuaternion,\n multiplyQuaternion,\n orthogonalize3x3,\n diagonalize3x3,\n singularValueDecomposition3x3,\n solveLinearSystem,\n invertMatrix,\n luFactorLinearSystem,\n luSolveLinearSystem,\n estimateMatrixCondition,\n jacobi,\n jacobiN,\n solveHomogeneousLeastSquares,\n solveLeastSquares,\n hex2float,\n rgb2hsv,\n hsv2rgb,\n lab2xyz,\n xyz2lab,\n xyz2rgb,\n rgb2xyz,\n rgb2lab,\n lab2rgb,\n uninitializeBounds,\n areBoundsInitialized,\n clampValue,\n clampAndNormalizeValue,\n getScalarTypeFittingRange,\n getAdjustedScalarRange,\n extentIsWithinOtherExtent,\n boundsIsWithinOtherBounds,\n pointIsWithinBounds,\n solve3PointCircle,\n inf,\n negInf,\n isInf,\n isNan: isNaN,\n isNaN,\n isFinite,\n\n // JS add-on\n createUninitializedBounds,\n getMajorAxisIndex,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Common/Core/Math/index.js","'use strict';\n\nvar support = require('./support');\nvar base64 = require('./base64');\nvar nodejsUtils = require('./nodejsUtils');\nvar setImmediate = require('core-js/library/fn/set-immediate');\nvar external = require(\"./external\");\n\n\n/**\n * Convert a string that pass as a \"binary string\": it should represent a byte\n * array but may have > 255 char codes. Be sure to take only the first byte\n * and returns the byte array.\n * @param {String} str the string to transform.\n * @return {Array|Uint8Array} the string in a binary format.\n */\nfunction string2binary(str) {\n var result = null;\n if (support.uint8array) {\n result = new Uint8Array(str.length);\n } else {\n result = new Array(str.length);\n }\n return stringToArrayLike(str, result);\n}\n\n/**\n * Create a new blob with the given content and the given type.\n * @param {Array[String|ArrayBuffer]} parts the content to put in the blob. DO NOT use\n * an Uint8Array because the stock browser of android 4 won't accept it (it\n * will be silently converted to a string, \"[object Uint8Array]\").\n * @param {String} type the mime type of the blob.\n * @return {Blob} the created blob.\n */\nexports.newBlob = function(parts, type) {\n exports.checkSupport(\"blob\");\n\n try {\n // Blob constructor\n return new Blob(parts, {\n type: type\n });\n }\n catch (e) {\n\n try {\n // deprecated, browser only, old way\n var Builder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder;\n var builder = new Builder();\n for (var i = 0; i < parts.length; i++) {\n builder.append(parts[i]);\n }\n return builder.getBlob(type);\n }\n catch (e) {\n\n // well, fuck ?!\n throw new Error(\"Bug : can't construct the Blob.\");\n }\n }\n\n\n};\n/**\n * The identity function.\n * @param {Object} input the input.\n * @return {Object} the same input.\n */\nfunction identity(input) {\n return input;\n}\n\n/**\n * Fill in an array with a string.\n * @param {String} str the string to use.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to fill in (will be mutated).\n * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated array.\n */\nfunction stringToArrayLike(str, array) {\n for (var i = 0; i < str.length; ++i) {\n array[i] = str.charCodeAt(i) & 0xFF;\n }\n return array;\n}\n\n/**\n * An helper for the function arrayLikeToString.\n * This contains static informations and functions that\n * can be optimized by the browser JIT compiler.\n */\nvar arrayToStringHelper = {\n /**\n * Transform an array of int into a string, chunk by chunk.\n * See the performances notes on arrayLikeToString.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.\n * @param {String} type the type of the array.\n * @param {Integer} chunk the chunk size.\n * @return {String} the resulting string.\n * @throws Error if the chunk is too big for the stack.\n */\n stringifyByChunk: function(array, type, chunk) {\n var result = [], k = 0, len = array.length;\n // shortcut\n if (len <= chunk) {\n return String.fromCharCode.apply(null, array);\n }\n while (k < len) {\n if (type === \"array\" || type === \"nodebuffer\") {\n result.push(String.fromCharCode.apply(null, array.slice(k, Math.min(k + chunk, len))));\n }\n else {\n result.push(String.fromCharCode.apply(null, array.subarray(k, Math.min(k + chunk, len))));\n }\n k += chunk;\n }\n return result.join(\"\");\n },\n /**\n * Call String.fromCharCode on every item in the array.\n * This is the naive implementation, which generate A LOT of intermediate string.\n * This should be used when everything else fail.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.\n * @return {String} the result.\n */\n stringifyByChar: function(array){\n var resultStr = \"\";\n for(var i = 0; i < array.length; i++) {\n resultStr += String.fromCharCode(array[i]);\n }\n return resultStr;\n },\n applyCanBeUsed : {\n /**\n * true if the browser accepts to use String.fromCharCode on Uint8Array\n */\n uint8array : (function () {\n try {\n return support.uint8array && String.fromCharCode.apply(null, new Uint8Array(1)).length === 1;\n } catch (e) {\n return false;\n }\n })(),\n /**\n * true if the browser accepts to use String.fromCharCode on nodejs Buffer.\n */\n nodebuffer : (function () {\n try {\n return support.nodebuffer && String.fromCharCode.apply(null, nodejsUtils.newBuffer(1)).length === 1;\n } catch (e) {\n return false;\n }\n })()\n }\n};\n\n/**\n * Transform an array-like object to a string.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.\n * @return {String} the result.\n */\nfunction arrayLikeToString(array) {\n // Performances notes :\n // --------------------\n // String.fromCharCode.apply(null, array) is the fastest, see\n // see http://jsperf.com/converting-a-uint8array-to-a-string/2\n // but the stack is limited (and we can get huge arrays !).\n //\n // result += String.fromCharCode(array[i]); generate too many strings !\n //\n // This code is inspired by http://jsperf.com/arraybuffer-to-string-apply-performance/2\n // TODO : we now have workers that split the work. Do we still need that ?\n var chunk = 65536,\n type = exports.getTypeOf(array),\n canUseApply = true;\n if (type === \"uint8array\") {\n canUseApply = arrayToStringHelper.applyCanBeUsed.uint8array;\n } else if (type === \"nodebuffer\") {\n canUseApply = arrayToStringHelper.applyCanBeUsed.nodebuffer;\n }\n\n if (canUseApply) {\n while (chunk > 1) {\n try {\n return arrayToStringHelper.stringifyByChunk(array, type, chunk);\n } catch (e) {\n chunk = Math.floor(chunk / 2);\n }\n }\n }\n\n // no apply or chunk error : slow and painful algorithm\n // default browser on android 4.*\n return arrayToStringHelper.stringifyByChar(array);\n}\n\nexports.applyFromCharCode = arrayLikeToString;\n\n\n/**\n * Copy the data from an array-like to an other array-like.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayFrom the origin array.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayTo the destination array which will be mutated.\n * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated destination array.\n */\nfunction arrayLikeToArrayLike(arrayFrom, arrayTo) {\n for (var i = 0; i < arrayFrom.length; i++) {\n arrayTo[i] = arrayFrom[i];\n }\n return arrayTo;\n}\n\n// a matrix containing functions to transform everything into everything.\nvar transform = {};\n\n// string to ?\ntransform[\"string\"] = {\n \"string\": identity,\n \"array\": function(input) {\n return stringToArrayLike(input, new Array(input.length));\n },\n \"arraybuffer\": function(input) {\n return transform[\"string\"][\"uint8array\"](input).buffer;\n },\n \"uint8array\": function(input) {\n return stringToArrayLike(input, new Uint8Array(input.length));\n },\n \"nodebuffer\": function(input) {\n return stringToArrayLike(input, nodejsUtils.newBuffer(input.length));\n }\n};\n\n// array to ?\ntransform[\"array\"] = {\n \"string\": arrayLikeToString,\n \"array\": identity,\n \"arraybuffer\": function(input) {\n return (new Uint8Array(input)).buffer;\n },\n \"uint8array\": function(input) {\n return new Uint8Array(input);\n },\n \"nodebuffer\": function(input) {\n return nodejsUtils.newBuffer(input);\n }\n};\n\n// arraybuffer to ?\ntransform[\"arraybuffer\"] = {\n \"string\": function(input) {\n return arrayLikeToString(new Uint8Array(input));\n },\n \"array\": function(input) {\n return arrayLikeToArrayLike(new Uint8Array(input), new Array(input.byteLength));\n },\n \"arraybuffer\": identity,\n \"uint8array\": function(input) {\n return new Uint8Array(input);\n },\n \"nodebuffer\": function(input) {\n return nodejsUtils.newBuffer(new Uint8Array(input));\n }\n};\n\n// uint8array to ?\ntransform[\"uint8array\"] = {\n \"string\": arrayLikeToString,\n \"array\": function(input) {\n return arrayLikeToArrayLike(input, new Array(input.length));\n },\n \"arraybuffer\": function(input) {\n // copy the uint8array: DO NOT propagate the original ArrayBuffer, it\n // can be way larger (the whole zip file for example).\n var copy = new Uint8Array(input.length);\n if (input.length) {\n copy.set(input, 0);\n }\n return copy.buffer;\n },\n \"uint8array\": identity,\n \"nodebuffer\": function(input) {\n return nodejsUtils.newBuffer(input);\n }\n};\n\n// nodebuffer to ?\ntransform[\"nodebuffer\"] = {\n \"string\": arrayLikeToString,\n \"array\": function(input) {\n return arrayLikeToArrayLike(input, new Array(input.length));\n },\n \"arraybuffer\": function(input) {\n return transform[\"nodebuffer\"][\"uint8array\"](input).buffer;\n },\n \"uint8array\": function(input) {\n return arrayLikeToArrayLike(input, new Uint8Array(input.length));\n },\n \"nodebuffer\": identity\n};\n\n/**\n * Transform an input into any type.\n * The supported output type are : string, array, uint8array, arraybuffer, nodebuffer.\n * If no output type is specified, the unmodified input will be returned.\n * @param {String} outputType the output type.\n * @param {String|Array|ArrayBuffer|Uint8Array|Buffer} input the input to convert.\n * @throws {Error} an Error if the browser doesn't support the requested output type.\n */\nexports.transformTo = function(outputType, input) {\n if (!input) {\n // undefined, null, etc\n // an empty string won't harm.\n input = \"\";\n }\n if (!outputType) {\n return input;\n }\n exports.checkSupport(outputType);\n var inputType = exports.getTypeOf(input);\n var result = transform[inputType][outputType](input);\n return result;\n};\n\n/**\n * Return the type of the input.\n * The type will be in a format valid for JSZip.utils.transformTo : string, array, uint8array, arraybuffer.\n * @param {Object} input the input to identify.\n * @return {String} the (lowercase) type of the input.\n */\nexports.getTypeOf = function(input) {\n if (typeof input === \"string\") {\n return \"string\";\n }\n if (Object.prototype.toString.call(input) === \"[object Array]\") {\n return \"array\";\n }\n if (support.nodebuffer && nodejsUtils.isBuffer(input)) {\n return \"nodebuffer\";\n }\n if (support.uint8array && input instanceof Uint8Array) {\n return \"uint8array\";\n }\n if (support.arraybuffer && input instanceof ArrayBuffer) {\n return \"arraybuffer\";\n }\n};\n\n/**\n * Throw an exception if the type is not supported.\n * @param {String} type the type to check.\n * @throws {Error} an Error if the browser doesn't support the requested type.\n */\nexports.checkSupport = function(type) {\n var supported = support[type.toLowerCase()];\n if (!supported) {\n throw new Error(type + \" is not supported by this platform\");\n }\n};\n\nexports.MAX_VALUE_16BITS = 65535;\nexports.MAX_VALUE_32BITS = -1; // well, \"\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\" is parsed as -1\n\n/**\n * Prettify a string read as binary.\n * @param {string} str the string to prettify.\n * @return {string} a pretty string.\n */\nexports.pretty = function(str) {\n var res = '',\n code, i;\n for (i = 0; i < (str || \"\").length; i++) {\n code = str.charCodeAt(i);\n res += '\\\\x' + (code < 16 ? \"0\" : \"\") + code.toString(16).toUpperCase();\n }\n return res;\n};\n\n/**\n * Defer the call of a function.\n * @param {Function} callback the function to call asynchronously.\n * @param {Array} args the arguments to give to the callback.\n */\nexports.delay = function(callback, args, self) {\n setImmediate(function () {\n callback.apply(self || null, args || []);\n });\n};\n\n/**\n * Extends a prototype with an other, without calling a constructor with\n * side effects. Inspired by nodejs' `utils.inherits`\n * @param {Function} ctor the constructor to augment\n * @param {Function} superCtor the parent constructor to use\n */\nexports.inherits = function (ctor, superCtor) {\n var Obj = function() {};\n Obj.prototype = superCtor.prototype;\n ctor.prototype = new Obj();\n};\n\n/**\n * Merge the objects passed as parameters into a new one.\n * @private\n * @param {...Object} var_args All objects to merge.\n * @return {Object} a new object with the data of the others.\n */\nexports.extend = function() {\n var result = {}, i, attr;\n for (i = 0; i < arguments.length; i++) { // arguments is not enumerable in some browsers\n for (attr in arguments[i]) {\n if (arguments[i].hasOwnProperty(attr) && typeof result[attr] === \"undefined\") {\n result[attr] = arguments[i][attr];\n }\n }\n }\n return result;\n};\n\n/**\n * Transform arbitrary content into a Promise.\n * @param {String} name a name for the content being processed.\n * @param {Object} inputData the content to process.\n * @param {Boolean} isBinary true if the content is not an unicode string\n * @param {Boolean} isOptimizedBinaryString true if the string content only has one byte per character.\n * @param {Boolean} isBase64 true if the string content is encoded with base64.\n * @return {Promise} a promise in a format usable by JSZip.\n */\nexports.prepareContent = function(name, inputData, isBinary, isOptimizedBinaryString, isBase64) {\n\n // if inputData is already a promise, this flatten it.\n var promise = external.Promise.resolve(inputData).then(function(data) {\n \n \n var isBlob = support.blob && (data instanceof Blob || ['[object File]', '[object Blob]'].indexOf(Object.prototype.toString.call(data)) !== -1);\n\n if (isBlob && typeof FileReader !== \"undefined\") {\n return new external.Promise(function (resolve, reject) {\n var reader = new FileReader();\n\n reader.onload = function(e) {\n resolve(e.target.result);\n };\n reader.onerror = function(e) {\n reject(e.target.error);\n };\n reader.readAsArrayBuffer(data);\n });\n } else {\n return data;\n }\n });\n\n return promise.then(function(data) {\n var dataType = exports.getTypeOf(data);\n\n if (!dataType) {\n return external.Promise.reject(\n new Error(\"The data of '\" + name + \"' is in an unsupported format !\")\n );\n }\n // special case : it's way easier to work with Uint8Array than with ArrayBuffer\n if (dataType === \"arraybuffer\") {\n data = exports.transformTo(\"uint8array\", data);\n } else if (dataType === \"string\") {\n if (isBase64) {\n data = base64.decode(data);\n }\n else if (isBinary) {\n // optimizedBinaryString === true means that the file has already been filtered with a 0xFF mask\n if (isOptimizedBinaryString !== true) {\n // this is a string, not in a base64 format.\n // Be sure that this is a correct \"binary string\"\n data = string2binary(data);\n }\n }\n }\n return data;\n });\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/lib/utils.js\n// module id = 11\n// module chunks = 1","/**\r\n * @fileoverview gl-matrix - High performance matrix and vector operations\r\n * @author Brandon Jones\r\n * @author Colin MacKenzie IV\r\n * @version 2.4.0\r\n */\r\n\r\n/* Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV.\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy\r\nof this software and associated documentation files (the \"Software\"), to deal\r\nin the Software without restriction, including without limitation the rights\r\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the Software is\r\nfurnished to do so, subject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be included in\r\nall copies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\nTHE SOFTWARE. */\r\n// END HEADER\r\n\r\nimport * as glMatrix from \"./gl-matrix/common.js\";\r\nimport * as mat2 from \"./gl-matrix/mat2.js\";\r\nimport * as mat2d from \"./gl-matrix/mat2d.js\";\r\nimport * as mat3 from \"./gl-matrix/mat3.js\";\r\nimport * as mat4 from \"./gl-matrix/mat4.js\";\r\nimport * as quat from \"./gl-matrix/quat.js\";\r\nimport * as quat2 from \"./gl-matrix/quat2.js\";\r\nimport * as vec2 from \"./gl-matrix/vec2.js\";\r\nimport * as vec3 from \"./gl-matrix/vec3.js\";\r\nimport * as vec4 from \"./gl-matrix/vec4.js\";\r\n\r\nexport {\r\n glMatrix,\r\n mat2, mat2d, mat3, mat4,\r\n quat, quat2,\r\n vec2, vec3, vec4,\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/node_modules/gl-matrix/src/gl-matrix.js","import Constants from 'vtk.js/Sources/Common/Core/DataArray/Constants';\nimport macro from 'vtk.js/Sources/macro';\nimport vtkMath from 'vtk.js/Sources/Common/Core/Math';\n\nconst { DefaultDataType } = Constants;\nconst TUPLE_HOLDER = [];\n\n// ----------------------------------------------------------------------------\n// Global methods\n// ----------------------------------------------------------------------------\n\nfunction createRangeHelper() {\n let min = Number.MAX_VALUE;\n let max = -Number.MAX_VALUE;\n let count = 0;\n let sum = 0;\n\n return {\n add(value) {\n if (min > value) {\n min = value;\n }\n if (max < value) {\n max = value;\n }\n count++;\n sum += value;\n },\n get() {\n return { min, max, count, sum, mean: sum / count };\n },\n getRange() {\n return { min, max };\n },\n };\n}\n\nfunction computeRange(values, component = 0, numberOfComponents = 1) {\n const helper = createRangeHelper();\n const size = values.length;\n let value = 0;\n\n if (component < 0 && numberOfComponents > 1) {\n // Compute magnitude\n for (let i = 0; i < size; i += numberOfComponents) {\n value = 0;\n for (let j = 0; j < numberOfComponents; j++) {\n value += values[i + j] * values[i + j];\n }\n value **= 0.5;\n helper.add(value);\n }\n return helper.getRange();\n }\n\n const offset = component < 0 ? 0 : component;\n for (let i = offset; i < size; i += numberOfComponents) {\n helper.add(values[i]);\n }\n\n return helper.getRange();\n}\n\nfunction ensureRangeSize(rangeArray, size = 0) {\n const ranges = rangeArray || [];\n // Pad ranges with null value to get the\n while (ranges.length <= size) {\n ranges.push(null);\n }\n return ranges;\n}\n\nfunction getDataType(typedArray) {\n return Object.prototype.toString\n .call(typedArray)\n .split(' ')[1]\n .slice(0, -1);\n}\n\nfunction getMaxNorm(normArray) {\n const numComps = normArray.getNumberOfComponents();\n let maxNorm = 0.0;\n for (let i = 0; i < normArray.getNumberOfTuples(); ++i) {\n const norm = vtkMath.norm(normArray.getTuple(i), numComps);\n if (norm > maxNorm) {\n maxNorm = norm;\n }\n }\n return maxNorm;\n}\n\n// ----------------------------------------------------------------------------\n// Static API\n// ----------------------------------------------------------------------------\n\nexport const STATIC = {\n computeRange,\n createRangeHelper,\n getDataType,\n getMaxNorm,\n};\n\n// ----------------------------------------------------------------------------\n// vtkDataArray methods\n// ----------------------------------------------------------------------------\n\nfunction vtkDataArray(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkDataArray');\n\n function dataChange() {\n model.ranges = null;\n publicAPI.modified();\n }\n\n publicAPI.getElementComponentSize = () => model.values.BYTES_PER_ELEMENT;\n\n // Description:\n // Return the data component at the location specified by tupleIdx and\n // compIdx.\n publicAPI.getComponent = (tupleIdx, compIdx = 0) =>\n model.values[tupleIdx * model.numberOfComponents + compIdx];\n\n // Description:\n // Set the data component at the location specified by tupleIdx and compIdx\n // to value.\n // Note that i is less than NumberOfTuples and j is less than\n // NumberOfComponents. Make sure enough memory has been allocated\n // (use SetNumberOfTuples() and SetNumberOfComponents()).\n publicAPI.setComponent = (tupleIdx, compIdx, value) => {\n if (value !== model.values[tupleIdx * model.numberOfComponents + compIdx]) {\n model.values[tupleIdx * model.numberOfComponents + compIdx] = value;\n dataChange();\n }\n };\n\n publicAPI.getData = () => model.values;\n\n publicAPI.getRange = (componentIndex = -1) => {\n const rangeIdx =\n componentIndex < 0 ? model.numberOfComponents : componentIndex;\n let range = null;\n\n if (!model.ranges) {\n model.ranges = ensureRangeSize(model.ranges, model.numberOfComponents);\n }\n range = model.ranges[rangeIdx];\n\n if (range) {\n model.rangeTuple[0] = range.min;\n model.rangeTuple[1] = range.max;\n return model.rangeTuple;\n }\n\n // Need to compute ranges...\n range = computeRange(\n model.values,\n componentIndex,\n model.numberOfComponents\n );\n model.ranges[rangeIdx] = range;\n model.rangeTuple[0] = range.min;\n model.rangeTuple[1] = range.max;\n return model.rangeTuple;\n };\n\n publicAPI.setTuple = (idx, tuple) => {\n const offset = idx * model.numberOfComponents;\n for (let i = 0; i < model.numberOfComponents; i++) {\n model.values[offset + i] = tuple[i];\n }\n };\n\n publicAPI.getTuple = (idx, tupleToFill = TUPLE_HOLDER) => {\n const numberOfComponents = model.numberOfComponents || 1;\n if (tupleToFill.length !== numberOfComponents) {\n tupleToFill.length = numberOfComponents;\n }\n const offset = idx * numberOfComponents;\n // Check most common component sizes first\n // to avoid doing a for loop if possible\n if (numberOfComponents === 1) {\n tupleToFill[0] = model.values[offset];\n } else if (numberOfComponents === 2) {\n tupleToFill[0] = model.values[offset];\n tupleToFill[1] = model.values[offset + 1];\n } else if (numberOfComponents === 3) {\n tupleToFill[0] = model.values[offset];\n tupleToFill[1] = model.values[offset + 1];\n tupleToFill[2] = model.values[offset + 2];\n } else if (numberOfComponents === 4) {\n tupleToFill[0] = model.values[offset];\n tupleToFill[1] = model.values[offset + 1];\n tupleToFill[2] = model.values[offset + 2];\n tupleToFill[3] = model.values[offset + 3];\n } else {\n for (let i = 0; i < numberOfComponents; i++) {\n tupleToFill[i] = model.values[offset + i];\n }\n }\n return tupleToFill;\n };\n\n publicAPI.getTupleLocation = (idx = 1) => idx * model.numberOfComponents;\n publicAPI.getNumberOfComponents = () => model.numberOfComponents;\n publicAPI.getNumberOfValues = () => model.values.length;\n publicAPI.getNumberOfTuples = () =>\n model.values.length / model.numberOfComponents;\n publicAPI.getDataType = () => model.dataType;\n /* eslint-disable no-use-before-define */\n publicAPI.newClone = () =>\n newInstance({\n empty: true,\n name: model.name,\n dataType: model.dataType,\n numberOfComponents: model.numberOfComponents,\n });\n /* eslint-enable no-use-before-define */\n\n publicAPI.getName = () => {\n if (!model.name) {\n publicAPI.modified();\n model.name = `vtkDataArray${publicAPI.getMTime()}`;\n }\n return model.name;\n };\n\n publicAPI.setData = (typedArray, numberOfComponents) => {\n model.values = typedArray;\n model.size = typedArray.length;\n model.dataType = getDataType(typedArray);\n if (numberOfComponents) {\n model.numberOfComponents = numberOfComponents;\n }\n if (model.size % model.numberOfComponents !== 0) {\n model.numberOfComponents = 1;\n }\n dataChange();\n };\n\n /* eslint-disable no-use-before-define */\n publicAPI.shallowCopy = () => newInstance(Object.assign({}, model));\n /* eslint-enable no-use-before-define */\n\n // Override serialization support\n publicAPI.getState = () => {\n const jsonArchive = Object.assign({}, model, {\n vtkClass: publicAPI.getClassName(),\n });\n\n // Convert typed array to regular array\n jsonArchive.values = Array.from(jsonArchive.values);\n delete jsonArchive.buffer;\n\n // Clean any empty data\n Object.keys(jsonArchive).forEach((keyName) => {\n if (!jsonArchive[keyName]) {\n delete jsonArchive[keyName];\n }\n });\n\n // Sort resulting object by key name\n const sortedObj = {};\n Object.keys(jsonArchive)\n .sort()\n .forEach((name) => {\n sortedObj[name] = jsonArchive[name];\n });\n\n // Remove mtime\n if (sortedObj.mtime) {\n delete sortedObj.mtime;\n }\n\n return sortedObj;\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n name: '',\n numberOfComponents: 1,\n size: 0,\n dataType: DefaultDataType,\n rangeTuple: [0, 0],\n // values: null,\n // ranges: null,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n if (!model.empty && !model.values && !model.size) {\n throw new TypeError(\n 'Cannot create vtkDataArray object without: size > 0, values'\n );\n }\n\n if (!model.values) {\n model.values = new window[model.dataType](model.size);\n } else if (Array.isArray(model.values)) {\n model.values = window[model.dataType].from(model.values);\n }\n\n if (model.values) {\n model.size = model.values.length;\n model.dataType = getDataType(model.values);\n }\n\n // Object methods\n macro.obj(publicAPI, model);\n macro.set(publicAPI, model, ['name', 'numberOfComponents']);\n\n // Object specific methods\n vtkDataArray(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkDataArray');\n\n// ----------------------------------------------------------------------------\n\nexport default Object.assign({ newInstance, extend }, STATIC, Constants);\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Common/Core/DataArray/index.js","import macro from 'vtk.js/Sources/macro';\n\nconst { vtkErrorMacro } = macro;\n\nconst PASS_TYPES = ['Build', 'Render'];\n\n// ----------------------------------------------------------------------------\n// vtkViewNode methods\n// ----------------------------------------------------------------------------\n\nfunction vtkViewNode(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkViewNode');\n\n // Builds myself.\n publicAPI.build = (prepass) => {};\n\n // Renders myself\n publicAPI.render = (prepass) => {};\n\n publicAPI.traverse = (renderPass) => {\n // we can choose to do special\n // traversal here based on pass\n const passTraversal = renderPass.getTraverseOperation();\n const fn = publicAPI[passTraversal];\n if (fn) {\n fn(renderPass);\n return;\n }\n\n // default traversal\n publicAPI.apply(renderPass, true);\n\n for (let index = 0; index < model.children.length; index++) {\n model.children[index].traverse(renderPass);\n }\n\n publicAPI.apply(renderPass, false);\n };\n\n publicAPI.apply = (renderPass, prepass) => {\n const customRenderPass = publicAPI[renderPass.getOperation()];\n if (customRenderPass) {\n customRenderPass(prepass, renderPass);\n }\n };\n\n publicAPI.getViewNodeFor = (dataObject) => {\n if (model.renderable === dataObject) {\n return publicAPI;\n }\n\n for (let index = 0; index < model.children.length; ++index) {\n const child = model.children[index];\n const vn = child.getViewNodeFor(dataObject);\n if (vn) {\n return vn;\n }\n }\n return undefined;\n };\n\n publicAPI.getFirstAncestorOfType = (type) => {\n if (!model.parent) {\n return null;\n }\n if (model.parent.isA(type)) {\n return model.parent;\n }\n return model.parent.getFirstAncestorOfType(type);\n };\n\n publicAPI.addMissingNode = (dobj) => {\n if (!dobj) {\n return;\n }\n const result = model.renderableChildMap.get(dobj);\n // if found just mark as visited\n if (result !== undefined) {\n result.setVisited(true);\n } else {\n // otherwise create a node\n const newNode = publicAPI.createViewNode(dobj);\n if (newNode) {\n newNode.setParent(publicAPI);\n newNode.setVisited(true);\n model.renderableChildMap.set(dobj, newNode);\n model.children.push(newNode);\n }\n }\n };\n\n publicAPI.addMissingNodes = (dataObjs) => {\n if (!dataObjs || !dataObjs.length) {\n return;\n }\n\n for (let index = 0; index < dataObjs.length; ++index) {\n const dobj = dataObjs[index];\n const result = model.renderableChildMap.get(dobj);\n // if found just mark as visited\n if (result !== undefined) {\n result.setVisited(true);\n } else {\n // otherwise create a node\n const newNode = publicAPI.createViewNode(dobj);\n if (newNode) {\n newNode.setParent(publicAPI);\n newNode.setVisited(true);\n model.renderableChildMap.set(dobj, newNode);\n model.children.push(newNode);\n }\n }\n }\n };\n\n publicAPI.prepareNodes = () => {\n for (let index = 0; index < model.children.length; ++index) {\n model.children[index].setVisited(false);\n }\n };\n\n publicAPI.setVisited = (val) => {\n model.visited = val;\n };\n\n publicAPI.removeUnusedNodes = () => {\n let deleted = null;\n for (let index = 0; index < model.children.length; ++index) {\n const child = model.children[index];\n const visited = child.getVisited();\n if (!visited) {\n const renderable = child.getRenderable();\n if (renderable) {\n model.renderableChildMap.delete(renderable);\n }\n if (!deleted) {\n deleted = [];\n }\n deleted.push(child);\n } else {\n child.setVisited(false);\n }\n }\n\n if (deleted) {\n // slow does alloc but not as common\n model.children = model.children.filter((el) => !deleted.includes(el));\n }\n };\n\n publicAPI.createViewNode = (dataObj) => {\n if (!model.myFactory) {\n vtkErrorMacro('Cannot create view nodes without my own factory');\n return null;\n }\n const ret = model.myFactory.createNode(dataObj);\n if (ret) {\n ret.setRenderable(dataObj);\n }\n return ret;\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n parent: null,\n renderable: null,\n myFactory: null,\n children: [],\n visited: false,\n};\n\n// ----------------------------------------------------------------------------\n\nfunction extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Build VTK API\n macro.obj(publicAPI, model);\n macro.event(publicAPI, model, 'event');\n\n model.renderableChildMap = new Map();\n\n macro.get(publicAPI, model, ['visited']);\n macro.setGet(publicAPI, model, ['parent', 'renderable', 'myFactory']);\n macro.getArray(publicAPI, model, ['children']);\n\n // Object methods\n vtkViewNode(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nconst newInstance = macro.newInstance(extend, 'vtkViewNode');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend, PASS_TYPES };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/SceneGraph/ViewNode/index.js","module.exports = function() {\r\n\tthrow new Error(\"define cannot be used indirect\");\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/amd-define.js\n// module id = 28\n// module chunks = 1","'use strict';\n\n/**\n * A worker that does nothing but passing chunks to the next one. This is like\n * a nodejs stream but with some differences. On the good side :\n * - it works on IE 6-9 without any issue / polyfill\n * - it weights less than the full dependencies bundled with browserify\n * - it forwards errors (no need to declare an error handler EVERYWHERE)\n *\n * A chunk is an object with 2 attributes : `meta` and `data`. The former is an\n * object containing anything (`percent` for example), see each worker for more\n * details. The latter is the real data (String, Uint8Array, etc).\n *\n * @constructor\n * @param {String} name the name of the stream (mainly used for debugging purposes)\n */\nfunction GenericWorker(name) {\n // the name of the worker\n this.name = name || \"default\";\n // an object containing metadata about the workers chain\n this.streamInfo = {};\n // an error which happened when the worker was paused\n this.generatedError = null;\n // an object containing metadata to be merged by this worker into the general metadata\n this.extraStreamInfo = {};\n // true if the stream is paused (and should not do anything), false otherwise\n this.isPaused = true;\n // true if the stream is finished (and should not do anything), false otherwise\n this.isFinished = false;\n // true if the stream is locked to prevent further structure updates (pipe), false otherwise\n this.isLocked = false;\n // the event listeners\n this._listeners = {\n 'data':[],\n 'end':[],\n 'error':[]\n };\n // the previous worker, if any\n this.previous = null;\n}\n\nGenericWorker.prototype = {\n /**\n * Push a chunk to the next workers.\n * @param {Object} chunk the chunk to push\n */\n push : function (chunk) {\n this.emit(\"data\", chunk);\n },\n /**\n * End the stream.\n * @return {Boolean} true if this call ended the worker, false otherwise.\n */\n end : function () {\n if (this.isFinished) {\n return false;\n }\n\n this.flush();\n try {\n this.emit(\"end\");\n this.cleanUp();\n this.isFinished = true;\n } catch (e) {\n this.emit(\"error\", e);\n }\n return true;\n },\n /**\n * End the stream with an error.\n * @param {Error} e the error which caused the premature end.\n * @return {Boolean} true if this call ended the worker with an error, false otherwise.\n */\n error : function (e) {\n if (this.isFinished) {\n return false;\n }\n\n if(this.isPaused) {\n this.generatedError = e;\n } else {\n this.isFinished = true;\n\n this.emit(\"error\", e);\n\n // in the workers chain exploded in the middle of the chain,\n // the error event will go downward but we also need to notify\n // workers upward that there has been an error.\n if(this.previous) {\n this.previous.error(e);\n }\n\n this.cleanUp();\n }\n return true;\n },\n /**\n * Add a callback on an event.\n * @param {String} name the name of the event (data, end, error)\n * @param {Function} listener the function to call when the event is triggered\n * @return {GenericWorker} the current object for chainability\n */\n on : function (name, listener) {\n this._listeners[name].push(listener);\n return this;\n },\n /**\n * Clean any references when a worker is ending.\n */\n cleanUp : function () {\n this.streamInfo = this.generatedError = this.extraStreamInfo = null;\n this._listeners = [];\n },\n /**\n * Trigger an event. This will call registered callback with the provided arg.\n * @param {String} name the name of the event (data, end, error)\n * @param {Object} arg the argument to call the callback with.\n */\n emit : function (name, arg) {\n if (this._listeners[name]) {\n for(var i = 0; i < this._listeners[name].length; i++) {\n this._listeners[name][i].call(this, arg);\n }\n }\n },\n /**\n * Chain a worker with an other.\n * @param {Worker} next the worker receiving events from the current one.\n * @return {worker} the next worker for chainability\n */\n pipe : function (next) {\n return next.registerPrevious(this);\n },\n /**\n * Same as `pipe` in the other direction.\n * Using an API with `pipe(next)` is very easy.\n * Implementing the API with the point of view of the next one registering\n * a source is easier, see the ZipFileWorker.\n * @param {Worker} previous the previous worker, sending events to this one\n * @return {Worker} the current worker for chainability\n */\n registerPrevious : function (previous) {\n if (this.isLocked) {\n throw new Error(\"The stream '\" + this + \"' has already been used.\");\n }\n\n // sharing the streamInfo...\n this.streamInfo = previous.streamInfo;\n // ... and adding our own bits\n this.mergeStreamInfo();\n this.previous = previous;\n var self = this;\n previous.on('data', function (chunk) {\n self.processChunk(chunk);\n });\n previous.on('end', function () {\n self.end();\n });\n previous.on('error', function (e) {\n self.error(e);\n });\n return this;\n },\n /**\n * Pause the stream so it doesn't send events anymore.\n * @return {Boolean} true if this call paused the worker, false otherwise.\n */\n pause : function () {\n if(this.isPaused || this.isFinished) {\n return false;\n }\n this.isPaused = true;\n\n if(this.previous) {\n this.previous.pause();\n }\n return true;\n },\n /**\n * Resume a paused stream.\n * @return {Boolean} true if this call resumed the worker, false otherwise.\n */\n resume : function () {\n if(!this.isPaused || this.isFinished) {\n return false;\n }\n this.isPaused = false;\n\n // if true, the worker tried to resume but failed\n var withError = false;\n if(this.generatedError) {\n this.error(this.generatedError);\n withError = true;\n }\n if(this.previous) {\n this.previous.resume();\n }\n\n return !withError;\n },\n /**\n * Flush any remaining bytes as the stream is ending.\n */\n flush : function () {},\n /**\n * Process a chunk. This is usually the method overridden.\n * @param {Object} chunk the chunk to process.\n */\n processChunk : function(chunk) {\n this.push(chunk);\n },\n /**\n * Add a key/value to be added in the workers chain streamInfo once activated.\n * @param {String} key the key to use\n * @param {Object} value the associated value\n * @return {Worker} the current worker for chainability\n */\n withStreamInfo : function (key, value) {\n this.extraStreamInfo[key] = value;\n this.mergeStreamInfo();\n return this;\n },\n /**\n * Merge this worker's streamInfo into the chain's streamInfo.\n */\n mergeStreamInfo : function () {\n for(var key in this.extraStreamInfo) {\n if (!this.extraStreamInfo.hasOwnProperty(key)) {\n continue;\n }\n this.streamInfo[key] = this.extraStreamInfo[key];\n }\n },\n\n /**\n * Lock the stream to prevent further updates on the workers chain.\n * After calling this method, all calls to pipe will fail.\n */\n lock: function () {\n if (this.isLocked) {\n throw new Error(\"The stream '\" + this + \"' has already been used.\");\n }\n this.isLocked = true;\n if (this.previous) {\n this.previous.lock();\n }\n },\n\n /**\n *\n * Pretty print the workers chain.\n */\n toString : function () {\n var me = \"Worker \" + this.name;\n if (this.previous) {\n return this.previous + \" -> \" + me;\n } else {\n return me;\n }\n }\n};\n\nmodule.exports = GenericWorker;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/lib/stream/GenericWorker.js\n// module id = 29\n// module chunks = 1","export const DataTypeByteSize = {\n Int8Array: 1,\n Uint8Array: 1,\n Uint8ClampedArray: 1,\n Int16Array: 2,\n Uint16Array: 2,\n Int32Array: 4,\n Uint32Array: 4,\n Float32Array: 4,\n Float64Array: 8,\n};\n\nexport const VtkDataTypes = {\n VOID: '', // not sure to know what that shoud be\n CHAR: 'Int8Array',\n SIGNED_CHAR: 'Int8Array',\n UNSIGNED_CHAR: 'Uint8Array',\n SHORT: 'Int16Array',\n UNSIGNED_SHORT: 'Uint16Array',\n INT: 'Int32Array',\n UNSIGNED_INT: 'Uint32Array',\n FLOAT: 'Float32Array',\n DOUBLE: 'Float64Array',\n};\n\nexport const DefaultDataType = VtkDataTypes.FLOAT;\n\nexport default {\n DefaultDataType,\n DataTypeByteSize,\n VtkDataTypes,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Common/Core/DataArray/Constants.js","import macro from 'vtk.js/Sources/macro';\nimport vtk from 'vtk.js/Sources/vtk';\nimport vtkCellArray from 'vtk.js/Sources/Common/Core/CellArray';\nimport vtkPointSet from 'vtk.js/Sources/Common/DataModel/PointSet';\n\nconst POLYDATA_FIELDS = ['verts', 'lines', 'polys', 'strips'];\n\n// ----------------------------------------------------------------------------\n// vtkPolyData methods\n// ----------------------------------------------------------------------------\n\nfunction vtkPolyData(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkPolyData');\n\n function camelize(str) {\n return str\n .replace(/(?:^\\w|[A-Z]|\\b\\w)/g, (letter) => letter.toUpperCase())\n .replace(/\\s+/g, '');\n }\n\n // build empty cell arrays and set methods\n POLYDATA_FIELDS.forEach((type) => {\n publicAPI[`getNumberOf${camelize(type)}`] = () =>\n model[type].getNumberOfCells();\n if (!model[type]) {\n model[type] = vtkCellArray.newInstance();\n } else {\n model[type] = vtk(model[type]);\n }\n });\n\n publicAPI.getNumberOfCells = () =>\n POLYDATA_FIELDS.reduce(\n (num, cellType) => num + model[cellType].getNumberOfCells(),\n 0\n );\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n // verts: null,\n // lines: null,\n // polys: null,\n // strips: null,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkPointSet.extend(publicAPI, model, initialValues);\n macro.setGet(publicAPI, model, ['verts', 'lines', 'polys', 'strips']);\n\n // Object specific methods\n vtkPolyData(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkPolyData');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Common/DataModel/PolyData/index.js","/* Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV.\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy\r\nof this software and associated documentation files (the \"Software\"), to deal\r\nin the Software without restriction, including without limitation the rights\r\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the Software is\r\nfurnished to do so, subject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be included in\r\nall copies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\nTHE SOFTWARE. */\r\n\r\n/**\r\n * Common utilities\r\n * @module glMatrix\r\n */\r\n\r\n// Configuration Constants\r\nexport const EPSILON = 0.000001;\r\nexport let ARRAY_TYPE = (typeof Float32Array !== 'undefined') ? Float32Array : Array;\r\nexport const RANDOM = Math.random;\r\n\r\n/**\r\n * Sets the type of array used when creating new vectors and matrices\r\n *\r\n * @param {Type} type Array type, such as Float32Array or Array\r\n */\r\nexport function setMatrixArrayType(type) {\r\n ARRAY_TYPE = type;\r\n}\r\n\r\nconst degree = Math.PI / 180;\r\n\r\n/**\r\n * Convert Degree To Radian\r\n *\r\n * @param {Number} a Angle in Degrees\r\n */\r\nexport function toRadian(a) {\r\n return a * degree;\r\n}\r\n\r\n/**\r\n * Tests whether or not the arguments have approximately the same value, within an absolute\r\n * or relative tolerance of glMatrix.EPSILON (an absolute tolerance is used for values less\r\n * than or equal to 1.0, and a relative tolerance is used for larger values)\r\n *\r\n * @param {Number} a The first number to test.\r\n * @param {Number} b The second number to test.\r\n * @returns {Boolean} True if the numbers are approximately equal, false otherwise.\r\n */\r\nexport function equals(a, b) {\r\n return Math.abs(a - b) <= EPSILON*Math.max(1.0, Math.abs(a), Math.abs(b));\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/node_modules/gl-matrix/src/gl-matrix/common.js","import macro from 'vtk.js/Sources/macro';\nimport vtkShader from 'vtk.js/Sources/Rendering/OpenGL/Shader';\n\nconst { vtkErrorMacro } = macro;\n\n// perform in place string substitutions, indicate if a substitution was done\n// this is useful for building up shader strings which typically involve\n// lots of string substitutions. Return true if a substitution was done.\nfunction substitute(source, search, replace, all = true) {\n const replaceStr = Array.isArray(replace) ? replace.join('\\n') : replace;\n let replaced = false;\n if (source.search(search) !== -1) {\n replaced = true;\n }\n let gflag = '';\n if (all) {\n gflag = 'g';\n }\n const regex = new RegExp(search, gflag);\n const resultstr = source.replace(regex, replaceStr);\n return { replace: replaced, result: resultstr };\n}\n\n// ----------------------------------------------------------------------------\n// vtkShaderProgram methods\n// ----------------------------------------------------------------------------\n\nfunction vtkShaderProgram(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkShaderProgram');\n\n publicAPI.compileShader = () => {\n if (!model.vertexShader.compile()) {\n vtkErrorMacro(\n model.vertexShader\n .getSource()\n .split('\\n')\n .map((line, index) => `${index}: ${line}`)\n .join('\\n')\n );\n vtkErrorMacro(model.vertexShader.getError());\n return 0;\n }\n if (!model.fragmentShader.compile()) {\n vtkErrorMacro(\n model.fragmentShader\n .getSource()\n .split('\\n')\n .map((line, index) => `${index}: ${line}`)\n .join('\\n')\n );\n vtkErrorMacro(model.fragmentShader.getError());\n return 0;\n }\n // skip geometry for now\n if (!publicAPI.attachShader(model.vertexShader)) {\n vtkErrorMacro(model.error);\n return 0;\n }\n if (!publicAPI.attachShader(model.fragmentShader)) {\n vtkErrorMacro(model.error);\n return 0;\n }\n\n if (!publicAPI.link()) {\n vtkErrorMacro(`Links failed: ${model.error}`);\n return 0;\n }\n\n publicAPI.setCompiled(true);\n return 1;\n };\n\n publicAPI.cleanup = () => {\n if (model.shaderType === 'Unknown' || model.handle === 0) {\n return;\n }\n\n model.context.deleteShader(model.handle);\n model.handle = 0;\n };\n\n publicAPI.bind = () => {\n if (!model.linked && !model.link()) {\n return false;\n }\n\n model.context.useProgram(model.handle);\n publicAPI.setBound(true);\n return true;\n };\n\n publicAPI.isBound = () => !!model.bound;\n\n publicAPI.release = () => {\n model.context.useProgram(null);\n publicAPI.setBound(false);\n };\n\n publicAPI.setContext = (ctx) => {\n model.vertexShader.setContext(ctx);\n model.fragmentShader.setContext(ctx);\n model.geometryShader.setContext(ctx);\n };\n\n publicAPI.link = () => {\n if (model.inked) {\n return true;\n }\n\n if (model.handle === 0) {\n model.error =\n 'Program has not been initialized, and/or does not have shaders.';\n return false;\n }\n\n // clear out the list of uniforms used\n model.uniformLocs = {};\n\n model.context.linkProgram(model.handle);\n const isCompiled = model.context.getProgramParameter(\n model.handle,\n model.context.LINK_STATUS\n );\n if (!isCompiled) {\n const lastError = model.context.getProgramInfoLog(model.handle);\n vtkErrorMacro(`Error linking shader ${lastError}`);\n model.handle = 0;\n return false;\n }\n\n publicAPI.setLinked(true);\n model.attributeLocs = {};\n return true;\n };\n\n publicAPI.setUniformMatrix = (name, v) => {\n const location = publicAPI.findUniform(name);\n if (location === -1) {\n model.error = `Could not set uniform ${name} . No such uniform.`;\n return false;\n }\n model.context.uniformMatrix4fv(location, false, v);\n return true;\n };\n\n publicAPI.setUniformMatrix3x3 = (name, v) => {\n const location = publicAPI.findUniform(name);\n if (location === -1) {\n model.error = `Could not set uniform ${name} . No such uniform.`;\n return false;\n }\n model.context.uniformMatrix3fv(location, false, v);\n return true;\n };\n\n publicAPI.setUniformf = (name, v) => {\n const location = publicAPI.findUniform(name);\n if (location === -1) {\n model.error = `Could not set uniform ${name} . No such uniform.`;\n return false;\n }\n model.context.uniform1f(location, v);\n return true;\n };\n\n publicAPI.setUniformfv = (name, v) => {\n const location = publicAPI.findUniform(name);\n if (location === -1) {\n model.error = `Could not set uniform ${name} . No such uniform.`;\n return false;\n }\n model.context.uniform1fv(location, v);\n return true;\n };\n\n publicAPI.setUniformi = (name, v) => {\n const location = publicAPI.findUniform(name);\n if (location === -1) {\n model.error = `Could not set uniform ${name} . No such uniform.`;\n return false;\n }\n model.context.uniform1i(location, v);\n return true;\n };\n\n publicAPI.setUniformiv = (name, v) => {\n const location = publicAPI.findUniform(name);\n if (location === -1) {\n model.error = `Could not set uniform ${name} . No such uniform.`;\n return false;\n }\n model.context.uniform1iv(location, v);\n return true;\n };\n\n publicAPI.setUniform2f = (name, v1, v2) => {\n const location = publicAPI.findUniform(name);\n if (location === -1) {\n model.error = `Could not set uniform ${name} . No such uniform.`;\n return false;\n }\n if (v2 === undefined) {\n throw new RangeError('Invalid number of values for array');\n }\n model.context.uniform2f(location, v1, v2);\n return true;\n };\n\n publicAPI.setUniform2fv = (name, v) => {\n const location = publicAPI.findUniform(name);\n if (location === -1) {\n model.error = `Could not set uniform ${name} . No such uniform.`;\n return false;\n }\n model.context.uniform2fv(location, v);\n return true;\n };\n\n publicAPI.setUniform2i = (name, v1, v2) => {\n const location = publicAPI.findUniform(name);\n if (location === -1) {\n model.error = `Could not set uniform ${name} . No such uniform.`;\n return false;\n }\n if (v2 === undefined) {\n throw new RangeError('Invalid number of values for array');\n }\n model.context.uniform2i(location, v1, v2);\n return true;\n };\n\n publicAPI.setUniform2iv = (name, v) => {\n const location = publicAPI.findUniform(name);\n if (location === -1) {\n model.error = `Could not set uniform ${name} . No such uniform.`;\n return false;\n }\n model.context.uniform2iv(location, v);\n return true;\n };\n\n publicAPI.setUniform3f = (name, a1, a2, a3) => {\n const location = publicAPI.findUniform(name);\n if (location === -1) {\n model.error = `Could not set uniform ${name} . No such uniform.`;\n return false;\n }\n if (a3 === undefined) {\n throw new RangeError('Invalid number of values for array');\n }\n model.context.uniform3f(location, a1, a2, a3);\n return true;\n };\n\n publicAPI.setUniform3fArray = (name, a) => {\n const location = publicAPI.findUniform(name);\n if (location === -1) {\n model.error = `Could not set uniform ${name} . No such uniform.`;\n return false;\n }\n if (!Array.isArray(a) || a.length !== 3) {\n throw new RangeError('Invalid number of values for array');\n }\n model.context.uniform3f(location, a[0], a[1], a[2]);\n return true;\n };\n\n publicAPI.setUniform3fv = (name, v) => {\n const location = publicAPI.findUniform(name);\n if (location === -1) {\n model.error = `Could not set uniform ${name} . No such uniform.`;\n return false;\n }\n model.context.uniform3fv(location, v);\n return true;\n };\n\n publicAPI.setUniform3i = (name, ...args) => {\n const location = publicAPI.findUniform(name);\n if (location === -1) {\n model.error = `Could not set uniform ${name} . No such uniform.`;\n return false;\n }\n let array = args;\n // allow an array passed as a single argument\n if (array.length === 1 && Array.isArray(array[0])) {\n array = array[0];\n }\n if (array.length !== 3) {\n throw new RangeError('Invalid number of values for array');\n }\n model.context.uniform3i(location, array[0], array[1], array[2]);\n return true;\n };\n\n publicAPI.setUniform3iv = (name, v) => {\n const location = publicAPI.findUniform(name);\n if (location === -1) {\n model.error = `Could not set uniform ${name} . No such uniform.`;\n return false;\n }\n model.context.uniform3iv(location, v);\n return true;\n };\n\n publicAPI.setUniform4f = (name, ...args) => {\n const location = publicAPI.findUniform(name);\n if (location === -1) {\n model.error = `Could not set uniform ${name} . No such uniform.`;\n return false;\n }\n let array = args;\n // allow an array passed as a single argument\n if (array.length === 1 && Array.isArray(array[0])) {\n array = array[0];\n }\n if (array.length !== 4) {\n throw new RangeError('Invalid number of values for array');\n }\n model.context.uniform4f(location, array[0], array[1], array[2], array[3]);\n return true;\n };\n\n publicAPI.setUniform4fv = (name, v) => {\n const location = publicAPI.findUniform(name);\n if (location === -1) {\n model.error = `Could not set uniform ${name} . No such uniform.`;\n return false;\n }\n model.context.uniform4fv(location, v);\n return true;\n };\n\n publicAPI.setUniform4i = (name, ...args) => {\n const location = publicAPI.findUniform(name);\n if (location === -1) {\n model.error = `Could not set uniform ${name} . No such uniform.`;\n return false;\n }\n let array = args;\n // allow an array passed as a single argument\n if (array.length === 1 && Array.isArray(array[0])) {\n array = array[0];\n }\n if (array.length !== 4) {\n throw new RangeError('Invalid number of values for array');\n }\n model.context.uniform4i(location, array[0], array[1], array[2], array[3]);\n return true;\n };\n\n publicAPI.setUniform4iv = (name, v) => {\n const location = publicAPI.findUniform(name);\n if (location === -1) {\n model.error = `Could not set uniform ${name} . No such uniform.`;\n return false;\n }\n model.context.uniform4iv(location, v);\n return true;\n };\n\n publicAPI.setUniform4fv = (name, count, v) => {\n const location = publicAPI.findUniform(name);\n if (location === -1) {\n model.error = `Could not set uniform ${name} . No such uniform.`;\n return false;\n }\n model.context.uniform4fv(location, v);\n return true;\n };\n\n publicAPI.findUniform = (name) => {\n if (!name || !model.linked) {\n return -1;\n }\n\n // see if we have cached the result\n let loc = model.uniformLocs[name];\n if (loc !== undefined) {\n return loc;\n }\n\n loc = model.context.getUniformLocation(model.handle, name);\n if (loc === null) {\n model.error = `Uniform ${name} not found in current shader program.`;\n model.uniformLocs[name] = -1;\n return -1;\n }\n\n model.uniformLocs[name] = loc;\n return loc;\n };\n\n publicAPI.isUniformUsed = (name) => {\n if (!name) {\n return false;\n }\n\n // see if we have cached the result\n let loc = model.uniformLocs[name];\n if (loc !== undefined) {\n return loc !== null;\n }\n\n if (!model.linked) {\n vtkErrorMacro(\n 'attempt to find uniform when the shader program is not linked'\n );\n return false;\n }\n\n loc = model.context.getUniformLocation(model.handle, name);\n model.uniformLocs[name] = loc;\n\n if (loc === null) {\n return false;\n }\n\n return true;\n };\n\n publicAPI.isAttributeUsed = (name) => {\n if (!name) {\n return false;\n }\n\n // see if we have cached the result\n let loc = Object.keys(model.attributeLocs).indexOf(name);\n if (loc !== -1) {\n return true;\n }\n\n if (!model.linked) {\n vtkErrorMacro(\n 'attempt to find uniform when the shader program is not linked'\n );\n return false;\n }\n\n loc = model.context.getAttribLocation(model.handle, name);\n if (loc === -1) {\n return false;\n }\n model.attributeLocs[name] = loc;\n\n return true;\n };\n\n publicAPI.attachShader = (shader) => {\n if (shader.getHandle() === 0) {\n model.error = 'Shader object was not initialized, cannot attach it.';\n return false;\n }\n if (shader.getShaderType() === 'Unknown') {\n model.error = 'Shader object is of type Unknown and cannot be used.';\n return false;\n }\n\n if (model.handle === 0) {\n const thandle = model.context.createProgram();\n if (thandle === 0) {\n model.error = 'Could not create shader program.';\n return false;\n }\n model.handle = thandle;\n model.linked = false;\n }\n\n if (shader.getShaderType() === 'Vertex') {\n if (model.vertexShaderHandle !== 0) {\n model.comntext.detachShader(model.handle, model.vertexShaderHandle);\n }\n model.vertexShaderHandle = shader.getHandle();\n }\n if (shader.getShaderType() === 'Fragment') {\n if (model.fragmentShaderHandle !== 0) {\n model.context.detachShader(model.handle, model.fragmentShaderHandle);\n }\n model.fragmentShaderHandle = shader.getHandle();\n }\n\n model.context.attachShader(model.handle, shader.getHandle());\n publicAPI.setLinked(false);\n return true;\n };\n\n publicAPI.detachShader = (shader) => {\n if (shader.getHandle() === 0) {\n model.error = 'shader object was not initialized, cannot attach it.';\n return false;\n }\n if (shader.getShaderType() === 'Unknown') {\n model.error = 'Shader object is of type Unknown and cannot be used.';\n return false;\n }\n if (model.handle === 0) {\n model.errror = 'This shader prorgram has not been initialized yet.';\n }\n\n switch (shader.getShaderType()) {\n case 'Vertex':\n if (model.vertexShaderHandle !== shader.getHandle()) {\n model.error = 'The supplied shader was not attached to this program.';\n return false;\n }\n model.context.detachShader(model.handle, shader.getHandle());\n model.vertexShaderHandle = 0;\n model.linked = false;\n return true;\n case 'Fragment':\n if (model.fragmentShaderHandle !== shader.getHandle()) {\n model.error = 'The supplied shader was not attached to this program.';\n return false;\n }\n model.context.detachShader(model.handle, shader.getHandle());\n model.fragmentShaderHandle = 0;\n model.linked = false;\n return true;\n default:\n return false;\n }\n };\n\n publicAPI.setContext = (ctx) => {\n model.context = ctx;\n model.vertexShader.setContext(ctx);\n model.fragmentShader.setContext(ctx);\n model.geometryShader.setContext(ctx);\n };\n\n publicAPI.setLastCameraMTime = (mtime) => {\n model.lastCameraMTime = mtime;\n };\n\n // publicAPI.enableAttributeArray = (name) => {\n // const location = publicAPI.findAttributeArray(name);\n // if (location === -1) {\n // model.error = `Could not enable attribute ${name} No such attribute.`;\n // return false;\n // }\n // model.context.enableVertexAttribArray(location);\n // return true;\n // };\n\n // publicAPI.disableAttributeArray = (name) => {\n // const location = publicAPI.findAttributeArray(name);\n // if (location === -1) {\n // model.error = `Could not enable attribute ${name} No such attribute.`;\n // return false;\n // }\n // model.context.disableVertexAttribArray(location);\n // return true;\n // };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n vertexShaderHandle: 0,\n fragmentShaderHandle: 0,\n geometryShaderHandle: 0,\n vertexShader: null,\n fragmentShader: null,\n geometryShader: null,\n\n linked: false,\n bound: false,\n compiled: false,\n error: '',\n handle: 0,\n numberOfOutputs: 0,\n attributesLocs: null,\n uniformLocs: null,\n md5Hash: 0,\n context: null,\n lastCameraMTime: null,\n};\n\n// ----------------------------------------------------------------------------\n\nfunction extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Instanciate internal objects\n model.attributesLocs = {};\n model.uniformLocs = {};\n model.vertexShader = vtkShader.newInstance();\n model.vertexShader.setShaderType('Vertex');\n model.fragmentShader = vtkShader.newInstance();\n model.fragmentShader.setShaderType('Fragment');\n model.geometryShader = vtkShader.newInstance();\n model.geometryShader.setShaderType('Geometry');\n\n // Build VTK API\n macro.obj(publicAPI, model);\n macro.get(publicAPI, model, ['lastCameraMTime']);\n macro.setGet(publicAPI, model, [\n 'error',\n 'handle',\n 'compiled',\n 'bound',\n 'md5Hash',\n 'vertexShader',\n 'fragmentShader',\n 'geometryShader',\n 'linked',\n ]);\n\n // Object methods\n vtkShaderProgram(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nconst newInstance = macro.newInstance(extend, 'vtkShaderProgram');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend, substitute };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/OpenGL/ShaderProgram/index.js","'use strict';\n\n\nvar TYPED_OK = (typeof Uint8Array !== 'undefined') &&\n (typeof Uint16Array !== 'undefined') &&\n (typeof Int32Array !== 'undefined');\n\nfunction _has(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nexports.assign = function (obj /*from1, from2, from3, ...*/) {\n var sources = Array.prototype.slice.call(arguments, 1);\n while (sources.length) {\n var source = sources.shift();\n if (!source) { continue; }\n\n if (typeof source !== 'object') {\n throw new TypeError(source + 'must be non-object');\n }\n\n for (var p in source) {\n if (_has(source, p)) {\n obj[p] = source[p];\n }\n }\n }\n\n return obj;\n};\n\n\n// reduce buffer size, avoiding mem copy\nexports.shrinkBuf = function (buf, size) {\n if (buf.length === size) { return buf; }\n if (buf.subarray) { return buf.subarray(0, size); }\n buf.length = size;\n return buf;\n};\n\n\nvar fnTyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n if (src.subarray && dest.subarray) {\n dest.set(src.subarray(src_offs, src_offs + len), dest_offs);\n return;\n }\n // Fallback to ordinary array\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function (chunks) {\n var i, l, len, pos, chunk, result;\n\n // calculate data length\n len = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n len += chunks[i].length;\n }\n\n // join chunks\n result = new Uint8Array(len);\n pos = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n chunk = chunks[i];\n result.set(chunk, pos);\n pos += chunk.length;\n }\n\n return result;\n }\n};\n\nvar fnUntyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function (chunks) {\n return [].concat.apply([], chunks);\n }\n};\n\n\n// Enable/Disable typed arrays use, for testing\n//\nexports.setTyped = function (on) {\n if (on) {\n exports.Buf8 = Uint8Array;\n exports.Buf16 = Uint16Array;\n exports.Buf32 = Int32Array;\n exports.assign(exports, fnTyped);\n } else {\n exports.Buf8 = Array;\n exports.Buf16 = Array;\n exports.Buf32 = Array;\n exports.assign(exports, fnUntyped);\n }\n};\n\nexports.setTyped(TYPED_OK);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/pako/lib/utils/common.js\n// module id = 43\n// module chunks = 1","'use strict';\n\nexports.base64 = true;\nexports.array = true;\nexports.string = true;\nexports.arraybuffer = typeof ArrayBuffer !== \"undefined\" && typeof Uint8Array !== \"undefined\";\nexports.nodebuffer = typeof Buffer !== \"undefined\";\n// contains true if JSZip can read/generate Uint8Array, false otherwise.\nexports.uint8array = typeof Uint8Array !== \"undefined\";\n\nif (typeof ArrayBuffer === \"undefined\") {\n exports.blob = false;\n}\nelse {\n var buffer = new ArrayBuffer(0);\n try {\n exports.blob = new Blob([buffer], {\n type: \"application/zip\"\n }).size === 0;\n }\n catch (e) {\n try {\n var Builder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder;\n var builder = new Builder();\n builder.append(buffer);\n exports.blob = builder.getBlob('application/zip').size === 0;\n }\n catch (e) {\n exports.blob = false;\n }\n }\n}\n\ntry {\n exports.nodestream = !!require('readable-stream').Readable;\n} catch(e) {\n exports.nodestream = false;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/lib/support.js\n// module id = 44\n// module chunks = 1","// removed by extract-text-webpack-plugin\n\n\n// WEBPACK FOOTER //\n// ./external_modules/helpers/helper.less","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/*<replacement>*/\n\nvar processNextTick = require('process-nextick-args');\n/*</replacement>*/\n\n/*<replacement>*/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n keys.push(key);\n }return keys;\n};\n/*</replacement>*/\n\nmodule.exports = Duplex;\n\n/*<replacement>*/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\n\nutil.inherits(Duplex, Readable);\n\nvar keys = objectKeys(Writable.prototype);\nfor (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n\n Readable.call(this, options);\n Writable.call(this, options);\n\n if (options && options.readable === false) this.readable = false;\n\n if (options && options.writable === false) this.writable = false;\n\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n\n this.once('end', onend);\n}\n\n// the no-half-open enforcer\nfunction onend() {\n // if we allow half-open state, or if the writable side ended,\n // then we're ok.\n if (this.allowHalfOpen || this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n processNextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});\n\nDuplex.prototype._destroy = function (err, cb) {\n this.push(null);\n this.end();\n\n processNextTick(cb, err);\n};\n\nfunction forEach(xs, f) {\n for (var i = 0, l = xs.length; i < l; i++) {\n f(xs[i], i);\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/readable-stream/lib/_stream_duplex.js\n// module id = 53\n// module chunks = 1","const factoryMapping = {\n vtkObject: () => null,\n};\n\nexport default function vtk(obj) {\n if (obj === null || obj === undefined) {\n return obj;\n }\n if (obj.isA) {\n return obj;\n }\n if (!obj.vtkClass) {\n if (global.console && global.console.error) {\n global.console.error('Invalid VTK object');\n }\n return null;\n }\n const constructor = factoryMapping[obj.vtkClass];\n if (!constructor) {\n if (global.console && global.console.error) {\n global.console.error(\n `No vtk class found for Object of type ${obj.vtkClass}`\n );\n }\n return null;\n }\n\n // Shallow copy object\n const model = Object.assign({}, obj);\n\n // Convert into vtkObject any nested key\n Object.keys(model).forEach((keyName) => {\n if (\n model[keyName] &&\n typeof model[keyName] === 'object' &&\n model[keyName].vtkClass\n ) {\n model[keyName] = vtk(model[keyName]);\n }\n });\n\n // Return the root\n const newInst = constructor(model);\n if (newInst && newInst.modified) {\n newInst.modified();\n }\n return newInst;\n}\n\nfunction register(vtkClassName, constructor) {\n factoryMapping[vtkClassName] = constructor;\n}\n\n// Nest register method under the vtk function\nvtk.register = register;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/vtk.js","module.exports = function(module) {\r\n\tif(!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tif(!module.children) module.children = [];\r\n\t\tObject.defineProperty(module, \"loaded\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.l;\r\n\t\t\t}\r\n\t\t});\r\n\t\tObject.defineProperty(module, \"id\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.i;\r\n\t\t\t}\r\n\t\t});\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/module.js\n// module id = 64\n// module chunks = 1","/* globals __webpack_amd_options__ */\r\nmodule.exports = __webpack_amd_options__;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/amd-options.js\n// module id = 65\n// module chunks = 1","export const Shading = {\n FLAT: 0,\n GOURAUD: 1,\n PHONG: 2,\n};\n\nexport const Representation = {\n POINTS: 0,\n WIREFRAME: 1,\n SURFACE: 2,\n};\n\nexport const Interpolation = Shading;\n\nexport default {\n Shading,\n Representation,\n Interpolation,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/Core/Property/Constants.js","import WebworkerPromise from 'webworker-promise';\n\nimport Constants from 'vtk.js/Sources/Rendering/OpenGL/Texture/Constants';\nimport macro from 'vtk.js/Sources/macro';\nimport vtkDataArray from 'vtk.js/Sources/Common/Core/DataArray';\nimport vtkMath from 'vtk.js/Sources/Common/Core/Math';\nimport vtkViewNode from 'vtk.js/Sources/Rendering/SceneGraph/ViewNode';\n\nimport ComputeGradientsWorker from './ComputeGradients.worker';\n\nconst { Wrap, Filter } = Constants;\nconst { VtkDataTypes } = vtkDataArray;\nconst { vtkDebugMacro, vtkErrorMacro, vtkWarningMacro } = macro;\n\n// ----------------------------------------------------------------------------\n// vtkOpenGLTexture methods\n// ----------------------------------------------------------------------------\n\nfunction vtkOpenGLTexture(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkOpenGLTexture');\n // Renders myself\n publicAPI.render = (renWin = null) => {\n if (renWin) {\n model.openGLRenderWindow = renWin;\n } else {\n model.openGLRenderer = publicAPI.getFirstAncestorOfType(\n 'vtkOpenGLRenderer'\n );\n // sync renderable properties\n model.openGLRenderWindow = model.openGLRenderer.getParent();\n }\n model.context = model.openGLRenderWindow.getContext();\n if (model.renderable.getInterpolate()) {\n if (model.generateMipmap) {\n publicAPI.setMinificationFilter(Filter.LINEAR_MIPMAP_LINEAR);\n } else {\n publicAPI.setMinificationFilter(Filter.LINEAR);\n }\n publicAPI.setMagnificationFilter(Filter.LINEAR);\n } else {\n publicAPI.setMinificationFilter(Filter.NEAREST);\n publicAPI.setMagnificationFilter(Filter.NEAREST);\n }\n if (model.renderable.getRepeat()) {\n publicAPI.setWrapR(Wrap.REPEAT);\n publicAPI.setWrapS(Wrap.REPEAT);\n publicAPI.setWrapT(Wrap.REPEAT);\n }\n // clear image if input data is set\n if (model.renderable.getInputData()) {\n model.renderable.setImage(null);\n }\n // create the texture if it is not done already\n if (\n !model.handle ||\n model.renderable.getMTime() > model.textureBuildTime.getMTime()\n ) {\n // if we have an Image\n if (model.renderable.getImage() !== null) {\n if (model.renderable.getInterpolate()) {\n model.generateMipmap = true;\n publicAPI.setMinificationFilter(Filter.LINEAR_MIPMAP_LINEAR);\n }\n // Have an Image which may not be complete\n if (model.renderable.getImage() && model.renderable.getImageLoaded()) {\n publicAPI.create2DFromImage(model.renderable.getImage());\n publicAPI.activate();\n publicAPI.sendParameters();\n model.textureBuildTime.modified();\n }\n }\n // if we have Inputdata\n const input = model.renderable.getInputData(0);\n if (input && input.getPointData().getScalars()) {\n const ext = input.getExtent();\n const inScalars = input.getPointData().getScalars();\n\n // do we have a cube map? Six inputs\n const data = [];\n for (let i = 0; i < model.renderable.getNumberOfInputPorts(); ++i) {\n const indata = model.renderable.getInputData(i);\n const scalars = indata\n ? indata\n .getPointData()\n .getScalars()\n .getData()\n : null;\n if (scalars) {\n data.push(scalars);\n }\n }\n if (\n model.renderable.getInterpolate() &&\n inScalars.getNumberOfComponents() === 4\n ) {\n model.generateMipmap = true;\n publicAPI.setMinificationFilter(Filter.LINEAR_MIPMAP_LINEAR);\n }\n if (data.length % 6 === 0) {\n publicAPI.createCubeFromRaw(\n ext[1] - ext[0] + 1,\n ext[3] - ext[2] + 1,\n inScalars.getNumberOfComponents(),\n inScalars.getDataType(),\n data\n );\n } else {\n publicAPI.create2DFromRaw(\n ext[1] - ext[0] + 1,\n ext[3] - ext[2] + 1,\n inScalars.getNumberOfComponents(),\n inScalars.getDataType(),\n inScalars.getData()\n );\n }\n publicAPI.activate();\n publicAPI.sendParameters();\n model.textureBuildTime.modified();\n }\n }\n if (model.handle) {\n publicAPI.activate();\n }\n };\n\n //----------------------------------------------------------------------------\n publicAPI.destroyTexture = () => {\n // deactivate it first\n publicAPI.deactivate();\n\n if (model.context && model.handle) {\n model.context.deleteTexture(model.handle);\n }\n model.handle = 0;\n model.numberOfDimensions = 0;\n model.target = 0;\n model.components = 0;\n model.width = 0;\n model.height = 0;\n model.depth = 0;\n publicAPI.resetFormatAndType();\n };\n\n //----------------------------------------------------------------------------\n publicAPI.createTexture = () => {\n // reuse the existing handle if we have one\n if (!model.handle) {\n model.handle = model.context.createTexture();\n\n if (model.target) {\n model.context.bindTexture(model.target, model.handle);\n\n // See: http://www.openmodel.context..org/wiki/Common_Mistakes#Creating_a_complete_texture\n // turn off mip map filter or set the base and max level correctly. here\n // both are done.\n model.context.texParameteri(\n model.target,\n model.context.TEXTURE_MIN_FILTER,\n publicAPI.getOpenGLFilterMode(model.minificationFilter)\n );\n model.context.texParameteri(\n model.target,\n model.context.TEXTURE_MAG_FILTER,\n publicAPI.getOpenGLFilterMode(model.magnificationFilter)\n );\n\n model.context.texParameteri(\n model.target,\n model.context.TEXTURE_WRAP_S,\n publicAPI.getOpenGLWrapMode(model.wrapS)\n );\n model.context.texParameteri(\n model.target,\n model.context.TEXTURE_WRAP_T,\n publicAPI.getOpenGLWrapMode(model.wrapT)\n );\n\n model.context.bindTexture(model.target, null);\n }\n }\n };\n\n //---------------------------------------------------------------------------\n publicAPI.getTextureUnit = () => {\n if (model.openGLRenderWindow) {\n return model.openGLRenderWindow.getTextureUnitForTexture(publicAPI);\n }\n return -1;\n };\n\n //---------------------------------------------------------------------------\n publicAPI.activate = () => {\n // activate a free texture unit for this texture\n model.openGLRenderWindow.activateTexture(publicAPI);\n publicAPI.bind();\n };\n\n //---------------------------------------------------------------------------\n publicAPI.deactivate = () => {\n if (model.openGLRenderWindow) {\n model.openGLRenderWindow.deactivateTexture(publicAPI);\n }\n };\n\n //---------------------------------------------------------------------------\n publicAPI.releaseGraphicsResources = (rwin) => {\n if (rwin && model.handle) {\n rwin.activateTexture(publicAPI);\n rwin.deactivateTexture(publicAPI);\n model.context.deleteTexture(model.handle);\n model.handle = 0;\n model.numberOfDimensions = 0;\n model.target = 0;\n model.internalFormat = 0;\n model.format = 0;\n model.openGLDataType = 0;\n model.components = 0;\n model.width = 0;\n model.height = 0;\n model.depth = 0;\n }\n if (model.shaderProgram) {\n model.shaderProgram.releaseGraphicsResources(rwin);\n model.shaderProgram = null;\n }\n };\n\n //----------------------------------------------------------------------------\n publicAPI.bind = () => {\n model.context.bindTexture(model.target, model.handle);\n if (\n model.autoParameters &&\n publicAPI.getMTime() > model.sendParametersTime.getMTime()\n ) {\n publicAPI.sendParameters();\n }\n };\n\n //----------------------------------------------------------------------------\n publicAPI.isBound = () => {\n let result = false;\n if (model.context && model.handle) {\n let target = 0;\n switch (model.target) {\n case model.context.TEXTURE_2D:\n target = model.context.TEXTURE_BINDING_2D;\n break;\n default:\n vtkWarningMacro('impossible case');\n break;\n }\n const oid = model.context.getIntegerv(target);\n result = oid === model.handle;\n }\n return result;\n };\n\n //----------------------------------------------------------------------------\n publicAPI.sendParameters = () => {\n model.context.texParameteri(\n model.target,\n model.context.TEXTURE_WRAP_S,\n publicAPI.getOpenGLWrapMode(model.wrapS)\n );\n model.context.texParameteri(\n model.target,\n model.context.TEXTURE_WRAP_T,\n publicAPI.getOpenGLWrapMode(model.wrapT)\n );\n if (model.openGLRenderWindow.getWebgl2()) {\n model.context.texParameteri(\n model.target,\n model.context.TEXTURE_WRAP_R,\n publicAPI.getOpenGLWrapMode(model.wrapR)\n );\n }\n\n model.context.texParameteri(\n model.target,\n model.context.TEXTURE_MIN_FILTER,\n publicAPI.getOpenGLFilterMode(model.minificationFilter)\n );\n\n model.context.texParameteri(\n model.target,\n model.context.TEXTURE_MAG_FILTER,\n publicAPI.getOpenGLFilterMode(model.magnificationFilter)\n );\n\n model.context.texParameteri(\n model.target,\n model.context.TEXTURE_BASE_LEVEL,\n model.baseLevel\n );\n\n model.context.texParameteri(\n model.target,\n model.context.TEXTURE_MAX_LEVEL,\n model.maxLevel\n );\n\n // model.context.texParameterf(model.target, model.context.TEXTURE_MIN_LOD, model.minLOD);\n // model.context.texParameterf(model.target, model.context.TEXTURE_MAX_LOD, model.maxLOD);\n\n model.sendParametersTime.modified();\n };\n\n //----------------------------------------------------------------------------\n publicAPI.getInternalFormat = (vtktype, numComps) => {\n if (model.internalFormat) {\n return model.internalFormat;\n }\n\n model.internalFormat = publicAPI.getDefaultInternalFormat(\n vtktype,\n numComps\n );\n\n if (!model.internalFormat) {\n vtkDebugMacro(\n `Unable to find suitable internal format for T=${vtktype} NC= ${numComps}`\n );\n }\n\n return model.internalFormat;\n };\n\n //----------------------------------------------------------------------------\n publicAPI.getDefaultInternalFormat = (vtktype, numComps) => {\n let result = 0;\n\n // try default next\n result = model.openGLRenderWindow.getDefaultTextureInternalFormat(\n vtktype,\n numComps,\n false\n );\n if (result) {\n return result;\n }\n\n // try floating point\n result = this.openGLRenderWindow.getDefaultTextureInternalFormat(\n vtktype,\n numComps,\n true\n );\n\n if (!result) {\n vtkDebugMacro('Unsupported internal texture type!');\n vtkDebugMacro(\n `Unable to find suitable internal format for T=${vtktype} NC= ${numComps}`\n );\n }\n\n return result;\n };\n\n //----------------------------------------------------------------------------\n publicAPI.setInternalFormat = (iFormat) => {\n if (iFormat !== model.context.InternalFormat) {\n model.internalFormat = iFormat;\n publicAPI.modified();\n }\n };\n\n //----------------------------------------------------------------------------\n publicAPI.getFormat = (vtktype, numComps) => {\n if (!model.format) {\n model.format = publicAPI.getDefaultFormat(vtktype, numComps);\n }\n return model.format;\n };\n\n //----------------------------------------------------------------------------\n publicAPI.getDefaultFormat = (vtktype, numComps) => {\n if (model.openGLRenderWindow.getWebgl2()) {\n switch (numComps) {\n case 1:\n return model.context.RED;\n case 2:\n return model.context.RG;\n case 3:\n return model.context.RGB;\n case 4:\n return model.context.RGBA;\n default:\n return model.context.RGB;\n }\n } else {\n switch (numComps) {\n case 1:\n return model.context.LUMINANCE;\n case 2:\n return model.context.LUMINANCE_ALPHA;\n case 3:\n return model.context.RGB;\n case 4:\n return model.context.RGBA;\n default:\n return model.context.RGB;\n }\n }\n };\n\n //----------------------------------------------------------------------------\n publicAPI.resetFormatAndType = () => {\n model.format = 0;\n model.internalFormat = 0;\n model.openGLDataType = 0;\n };\n\n //----------------------------------------------------------------------------\n publicAPI.getDefaultDataType = (vtkScalarType) => {\n // DON'T DEAL with VTK_CHAR as this is platform dependent.\n if (model.openGLRenderWindow.getWebgl2()) {\n switch (vtkScalarType) {\n // case VtkDataTypes.SIGNED_CHAR:\n // return model.context.BYTE;\n case VtkDataTypes.UNSIGNED_CHAR:\n return model.context.UNSIGNED_BYTE;\n // case VtkDataTypes.SHORT:\n // return model.context.SHORT;\n // case VtkDataTypes.UNSIGNED_SHORT:\n // return model.context.UNSIGNED_SHORT;\n // case VtkDataTypes.INT:\n // return model.context.INT;\n // case VtkDataTypes.UNSIGNED_INT:\n // return model.context.UNSIGNED_INT;\n case VtkDataTypes.FLOAT:\n case VtkDataTypes.VOID: // used for depth component textures.\n default:\n return model.context.FLOAT;\n }\n }\n\n switch (vtkScalarType) {\n // case VtkDataTypes.SIGNED_CHAR:\n // return model.context.BYTE;\n case VtkDataTypes.UNSIGNED_CHAR:\n return model.context.UNSIGNED_BYTE;\n // case VtkDataTypes.SHORT:\n // return model.context.SHORT;\n // case VtkDataTypes.UNSIGNED_SHORT:\n // return model.context.UNSIGNED_SHORT;\n // case VtkDataTypes.INT:\n // return model.context.INT;\n // case VtkDataTypes.UNSIGNED_INT:\n // return model.context.UNSIGNED_INT;\n case VtkDataTypes.FLOAT:\n case VtkDataTypes.VOID: // used for depth component textures.\n default:\n if (\n model.context.getExtension('OES_texture_float') &&\n model.context.getExtension('OES_texture_float_linear')\n ) {\n return model.context.FLOAT;\n }\n return model.context.UNSIGNED_BYTE;\n }\n };\n\n //----------------------------------------------------------------------------\n publicAPI.getOpenGLDataType = (vtkScalarType) => {\n if (!model.openGLDataType) {\n model.openGLDataType = publicAPI.getDefaultDataType(vtkScalarType);\n }\n\n return model.openGLDataType;\n };\n\n publicAPI.getShiftAndScale = () => {\n let shift = 0.0;\n let scale = 1.0;\n\n // for all float type internal formats\n switch (model.openGLDataType) {\n case model.context.BYTE:\n scale = 127.5;\n shift = scale - 128.0;\n break;\n case model.context.UNSIGNED_BYTE:\n scale = 255.0;\n shift = 0.0;\n break;\n case model.context.SHORT:\n scale = 32767.5;\n shift = scale - 32768.0;\n break;\n case model.context.UNSIGNED_SHORT:\n scale = 65536.0;\n shift = 0.0;\n break;\n case model.context.INT:\n scale = 2147483647.5;\n shift = scale - 2147483648.0;\n break;\n case model.context.UNSIGNED_INT:\n scale = 4294967295.0;\n shift = 0.0;\n break;\n case model.context.FLOAT:\n default:\n break;\n }\n return { shift, scale };\n };\n\n //----------------------------------------------------------------------------\n publicAPI.getOpenGLFilterMode = (emode) => {\n switch (emode) {\n case Filter.NEAREST:\n return model.context.NEAREST;\n case Filter.LINEAR:\n return model.context.LINEAR;\n case Filter.NEAREST_MIPMAP_NEAREST:\n return model.context.NEAREST_MIPMAP_NEAREST;\n case Filter.NEAREST_MIPMAP_LINEAR:\n return model.context.NEAREST_MIPMAP_LINEAR;\n case Filter.LINEAR_MIPMAP_NEAREST:\n return model.context.LINEAR_MIPMAP_NEAREST;\n case Filter.LINEAR_MIPMAP_LINEAR:\n return model.context.LINEAR_MIPMAP_LINEAR;\n default:\n return model.context.NEAREST;\n }\n };\n\n //----------------------------------------------------------------------------\n publicAPI.getOpenGLWrapMode = (vtktype) => {\n switch (vtktype) {\n case Wrap.CLAMP_TO_EDGE:\n return model.context.CLAMP_TO_EDGE;\n case Wrap.REPEAT:\n return model.context.REPEAT;\n case Wrap.MIRRORED_REPEAT:\n return model.context.MIRRORED_REPEAT;\n default:\n return model.context.CLAMP_TO_EDGE;\n }\n };\n\n //----------------------------------------------------------------------------\n function updateArrayDataType(dataType, data) {\n const pixData = [];\n // if the opengl data type is float\n // then the data array must be float\n if (\n dataType !== VtkDataTypes.FLOAT &&\n model.openGLDataType === model.context.FLOAT\n ) {\n const pixCount = model.width * model.height * model.components;\n for (let idx = 0; idx < data.length; idx++) {\n const newArray = new Float32Array(pixCount);\n for (let i = 0; i < pixCount; i++) {\n newArray[i] = data[idx][i];\n }\n pixData.push(newArray);\n }\n }\n\n // if the opengl data type is ubyte\n // then the data array must be u8, we currently simply truncate the data\n if (\n dataType !== VtkDataTypes.UNSIGNED_CHAR &&\n model.openGLDataType === model.context.UNSIGNED_BYTE\n ) {\n const pixCount = model.width * model.height * model.components;\n for (let idx = 0; idx < data.length; idx++) {\n const newArray = new Uint8Array(pixCount);\n for (let i = 0; i < pixCount; i++) {\n newArray[i] = data[idx][i];\n }\n pixData.push(newArray);\n }\n }\n\n // The output has to be filled\n if (pixData.length === 0) {\n for (let i = 0; i < data.length; i++) {\n pixData.push(data[i]);\n }\n }\n\n return pixData;\n }\n\n //----------------------------------------------------------------------------\n function scaleTextureToHighestPowerOfTwo(data) {\n if (model.openGLRenderWindow.getWebgl2()) {\n // No need if webGL2\n return data;\n }\n const pixData = [];\n const width = model.width;\n const height = model.height;\n const numComps = model.components;\n if (\n data &&\n (!vtkMath.isPowerOfTwo(width) || !vtkMath.isPowerOfTwo(height))\n ) {\n // Scale up the texture to the next highest power of two dimensions.\n const newWidth = vtkMath.nearestPowerOfTwo(width);\n const newHeight = vtkMath.nearestPowerOfTwo(height);\n const pixCount = newWidth * newHeight * model.components;\n for (let idx = 0; idx < data.length; idx++) {\n if (data[idx] !== null) {\n let newArray = null;\n switch (model.openGLDataType) {\n case model.context.FLOAT:\n newArray = new Float32Array(pixCount);\n break;\n default:\n case model.context.UNSIGNED_BYTE:\n newArray = new Uint8Array(pixCount);\n break;\n }\n const jFactor = height / newHeight;\n const iFactor = width / newWidth;\n for (let j = 0; j < newHeight; j++) {\n const joff = j * newWidth * numComps;\n const jidx = j * jFactor;\n let jlow = Math.floor(jidx);\n let jhi = Math.ceil(jidx);\n if (jhi >= height) {\n jhi = height - 1;\n }\n const jmix = jidx - jlow;\n const jmix1 = 1.0 - jmix;\n jlow = jlow * width * numComps;\n jhi = jhi * width * numComps;\n for (let i = 0; i < newWidth; i++) {\n const ioff = i * numComps;\n const iidx = i * iFactor;\n let ilow = Math.floor(iidx);\n let ihi = Math.ceil(iidx);\n if (ihi >= width) {\n ihi = width - 1;\n }\n const imix = iidx - ilow;\n ilow *= numComps;\n ihi *= numComps;\n for (let c = 0; c < numComps; c++) {\n newArray[joff + ioff + c] =\n data[idx][jlow + ilow + c] * jmix1 * (1.0 - imix) +\n data[idx][jlow + ihi + c] * jmix1 * imix +\n data[idx][jhi + ilow + c] * jmix * (1.0 - imix) +\n data[idx][jhi + ihi + c] * jmix * imix;\n }\n }\n }\n pixData.push(newArray);\n model.width = newWidth;\n model.height = newHeight;\n } else {\n pixData.push(null);\n }\n }\n }\n\n // The output has to be filled\n if (pixData.length === 0) {\n for (let i = 0; i < data.length; i++) {\n pixData.push(data[i]);\n }\n }\n\n return pixData;\n }\n\n //----------------------------------------------------------------------------\n publicAPI.create2DFromRaw = (width, height, numComps, dataType, data) => {\n // Now determine the texture parameters using the arguments.\n publicAPI.getOpenGLDataType(dataType);\n publicAPI.getInternalFormat(dataType, numComps);\n publicAPI.getFormat(dataType, numComps);\n\n if (!model.internalFormat || !model.format || !model.openGLDataType) {\n vtkErrorMacro('Failed to determine texture parameters.');\n return false;\n }\n\n model.target = model.context.TEXTURE_2D;\n model.components = numComps;\n model.width = width;\n model.height = height;\n model.depth = 1;\n model.numberOfDimensions = 2;\n model.openGLRenderWindow.activateTexture(publicAPI);\n publicAPI.createTexture();\n publicAPI.bind();\n\n // Create an array of texture with one texture\n const dataArray = [data];\n const pixData = updateArrayDataType(dataType, dataArray);\n const scaledData = scaleTextureToHighestPowerOfTwo(pixData);\n\n // Source texture data from the PBO.\n // model.context.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true);\n model.context.pixelStorei(model.context.UNPACK_ALIGNMENT, 1);\n\n model.context.texImage2D(\n model.target,\n 0,\n model.internalFormat,\n model.width,\n model.height,\n 0,\n model.format,\n model.openGLDataType,\n scaledData[0]\n );\n\n if (model.generateMipmap) {\n model.context.generateMipmap(model.target);\n }\n\n publicAPI.deactivate();\n return true;\n };\n\n //----------------------------------------------------------------------------\n publicAPI.createCubeFromRaw = (width, height, numComps, dataType, data) => {\n // Now determine the texture parameters using the arguments.\n publicAPI.getOpenGLDataType(dataType);\n publicAPI.getInternalFormat(dataType, numComps);\n publicAPI.getFormat(dataType, numComps);\n\n if (!model.internalFormat || !model.format || !model.openGLDataType) {\n vtkErrorMacro('Failed to determine texture parameters.');\n return false;\n }\n\n model.target = model.context.TEXTURE_CUBE_MAP;\n model.components = numComps;\n model.width = width;\n model.height = height;\n model.depth = 1;\n model.numberOfDimensions = 2;\n model.openGLRenderWindow.activateTexture(publicAPI);\n model.maxLevel = data.length / 6 - 1;\n publicAPI.createTexture();\n publicAPI.bind();\n\n const pixData = updateArrayDataType(dataType, data);\n const scaledData = scaleTextureToHighestPowerOfTwo(pixData);\n\n // invert the data because opengl is messed up with cube maps\n // and uses the old renderman standard with Y going down\n // even though it is completely at odds with OpenGL standards\n const invertedData = [];\n let widthLevel = model.width;\n let heightLevel = model.height;\n for (let i = 0; i < scaledData.length; i++) {\n if (i % 6 === 0 && i !== 0) {\n widthLevel /= 2;\n heightLevel /= 2;\n }\n invertedData[i] = new window[dataType](\n heightLevel * widthLevel * model.components\n );\n for (let y = 0; y < heightLevel; ++y) {\n const row1 = y * widthLevel * model.components;\n const row2 = (heightLevel - y - 1) * widthLevel * model.components;\n invertedData[i].set(\n scaledData[i].slice(row2, row2 + widthLevel * model.components),\n row1\n );\n }\n }\n\n // Source texture data from the PBO.\n model.context.pixelStorei(model.context.UNPACK_ALIGNMENT, 1);\n\n // We get the 6 images\n for (let i = 0; i < 6; i++) {\n // For each mipmap level\n for (let j = 0; j <= model.maxLevel; j++) {\n if (invertedData[6 * j + i]) {\n const w = model.width / 2 ** j;\n const h = model.height / 2 ** j;\n model.context.texImage2D(\n model.context.TEXTURE_CUBE_MAP_POSITIVE_X + i,\n j,\n model.internalFormat,\n w,\n h,\n 0,\n model.format,\n model.openGLDataType,\n invertedData[6 * j + i]\n );\n }\n }\n }\n\n // generateMipmap must not be called here because we manually upload all levels\n // if it is called, all levels will be overwritten\n\n publicAPI.deactivate();\n return true;\n };\n\n //----------------------------------------------------------------------------\n publicAPI.createDepthFromRaw = (width, height, dataType, data) => {\n // Now determine the texture parameters using the arguments.\n publicAPI.getOpenGLDataType(dataType);\n model.format = model.context.DEPTH_COMPONENT;\n model.internalFormat = model.context.DEPTH_COMPONENT;\n\n if (!model.internalFormat || !model.format || !model.openGLDataType) {\n vtkErrorMacro('Failed to determine texture parameters.');\n return false;\n }\n\n model.target = model.context.TEXTURE_2D;\n model.components = 1;\n model.width = width;\n model.height = height;\n model.depth = 1;\n model.numberOfDimensions = 2;\n model.openGLRenderWindow.activateTexture(publicAPI);\n publicAPI.createTexture();\n publicAPI.bind();\n\n // Source texture data from the PBO.\n // model.context.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true);\n model.context.pixelStorei(model.context.UNPACK_ALIGNMENT, 1);\n\n model.context.texImage2D(\n model.target,\n 0,\n model.internalFormat,\n model.width,\n model.height,\n 0,\n model.format,\n model.openGLDataType,\n data\n );\n\n if (model.generateMipmap) {\n model.context.generateMipmap(model.target);\n }\n\n publicAPI.deactivate();\n return true;\n };\n\n //----------------------------------------------------------------------------\n publicAPI.create2DFromImage = (image) => {\n // Now determine the texture parameters using the arguments.\n publicAPI.getOpenGLDataType(VtkDataTypes.UNSIGNED_CHAR);\n publicAPI.getInternalFormat(VtkDataTypes.UNSIGNED_CHAR, 4);\n publicAPI.getFormat(VtkDataTypes.UNSIGNED_CHAR, 4);\n\n if (!model.internalFormat || !model.format || !model.openGLDataType) {\n vtkErrorMacro('Failed to determine texture parameters.');\n return false;\n }\n\n model.target = model.context.TEXTURE_2D;\n model.components = 4;\n model.width = image.width;\n model.height = image.height;\n model.depth = 1;\n model.numberOfDimensions = 2;\n model.openGLRenderWindow.activateTexture(publicAPI);\n publicAPI.createTexture();\n publicAPI.bind();\n\n // Source texture data from the PBO.\n // model.context.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true);\n model.context.pixelStorei(model.context.UNPACK_ALIGNMENT, 1);\n\n // Scale up the texture to the next highest power of two dimensions (if needed) and flip y.\n const needNearestPowerOfTwo =\n !vtkMath.isPowerOfTwo(image.width) || !vtkMath.isPowerOfTwo(image.height);\n const canvas = document.createElement('canvas');\n canvas.width = needNearestPowerOfTwo\n ? vtkMath.nearestPowerOfTwo(image.width)\n : image.width;\n canvas.height = needNearestPowerOfTwo\n ? vtkMath.nearestPowerOfTwo(image.height)\n : image.height;\n const ctx = canvas.getContext('2d');\n ctx.translate(0, canvas.height);\n ctx.scale(1, -1);\n ctx.drawImage(\n image,\n 0,\n 0,\n image.width,\n image.height,\n 0,\n 0,\n canvas.width,\n canvas.height\n );\n const safeImage = canvas;\n\n model.context.texImage2D(\n model.target,\n 0,\n model.internalFormat,\n model.format,\n model.openGLDataType,\n safeImage\n );\n\n if (model.generateMipmap) {\n model.context.generateMipmap(model.target);\n }\n\n publicAPI.deactivate();\n return true;\n };\n\n //----------------------------------------------------------------------------\n publicAPI.create3DFromRaw = (\n width,\n height,\n depth,\n numComps,\n dataType,\n data\n ) => {\n // Now determine the texture parameters using the arguments.\n publicAPI.getOpenGLDataType(dataType);\n publicAPI.getInternalFormat(dataType, numComps);\n publicAPI.getFormat(dataType, numComps);\n\n if (!model.internalFormat || !model.format || !model.openGLDataType) {\n vtkErrorMacro('Failed to determine texture parameters.');\n return false;\n }\n\n model.target = model.context.TEXTURE_3D;\n model.components = numComps;\n model.width = width;\n model.height = height;\n model.depth = depth;\n model.numberOfDimensions = 3;\n model.openGLRenderWindow.activateTexture(publicAPI);\n publicAPI.createTexture();\n publicAPI.bind();\n\n // Source texture data from the PBO.\n // model.context.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true);\n // model.context.pixelStorei(model.context.UNPACK_ALIGNMENT, 1);\n\n model.context.texImage3D(\n model.target,\n 0,\n model.internalFormat,\n model.width,\n model.height,\n model.depth,\n 0,\n model.format,\n model.openGLDataType,\n data\n );\n\n if (model.generateMipmap) {\n model.context.generateMipmap(model.target);\n }\n\n publicAPI.deactivate();\n return true;\n };\n\n //----------------------------------------------------------------------------\n // This method simulates a 3D texture using 2D\n publicAPI.create3DOneComponentFromRaw = (\n width,\n height,\n depth,\n dataType,\n data\n ) => {\n const numPixelsIn = width * height * depth;\n\n // compute min and max values\n const min = vtkMath.arrayMin(data);\n let max = vtkMath.arrayMax(data);\n if (min === max) {\n max = min + 1.0;\n }\n\n // store the information, we will need it later\n model.volumeInfo = { min, max, width, height, depth };\n\n let volCopyData = (outArray, outIdx, inValue, smin, smax) => {\n outArray[outIdx] = inValue;\n };\n let dataTypeToUse = VtkDataTypes.UNSIGNED_CHAR;\n let numCompsToUse = 1;\n let encodedScalars = false;\n if (dataType === VtkDataTypes.UNSIGNED_CHAR) {\n model.volumeInfo.min = 0.0;\n model.volumeInfo.max = 255.0;\n } else if (\n model.openGLRenderWindow.getWebgl2() ||\n (model.context.getExtension('OES_texture_float') &&\n model.context.getExtension('OES_texture_float_linear'))\n ) {\n dataTypeToUse = VtkDataTypes.FLOAT;\n volCopyData = (outArray, outIdx, inValue, smin, smax) => {\n outArray[outIdx] = (inValue - smin) / (smax - smin);\n };\n } else {\n encodedScalars = true;\n dataTypeToUse = VtkDataTypes.UNSIGNED_CHAR;\n numCompsToUse = 4;\n volCopyData = (outArray, outIdx, inValue, smin, smax) => {\n let fval = (inValue - smin) / (smax - smin);\n const r = Math.floor(fval * 255.0);\n fval = fval * 255.0 - r;\n outArray[outIdx] = r;\n const g = Math.floor(fval * 255.0);\n fval = fval * 255.0 - g;\n outArray[outIdx + 1] = g;\n const b = Math.floor(fval * 255.0);\n outArray[outIdx + 2] = b;\n };\n }\n\n // WebGL2\n if (model.openGLRenderWindow.getWebgl2()) {\n if (dataType !== VtkDataTypes.UNSIGNED_CHAR) {\n const newArray = new Float32Array(numPixelsIn);\n for (let i = 0; i < numPixelsIn; ++i) {\n newArray[i] = (data[i] - min) / (max - min);\n }\n return publicAPI.create3DFromRaw(\n width,\n height,\n depth,\n 1,\n VtkDataTypes.FLOAT,\n newArray\n );\n }\n return publicAPI.create3DFromRaw(width, height, depth, 1, dataType, data);\n }\n\n // WebGL1\n // Now determine the texture parameters using the arguments.\n publicAPI.getOpenGLDataType(dataTypeToUse);\n publicAPI.getInternalFormat(dataTypeToUse, numCompsToUse);\n publicAPI.getFormat(dataTypeToUse, numCompsToUse);\n\n if (!model.internalFormat || !model.format || !model.openGLDataType) {\n vtkErrorMacro('Failed to determine texture parameters.');\n return false;\n }\n\n // have to pack this 3D texture into pot 2D texture\n model.target = model.context.TEXTURE_2D;\n model.components = numCompsToUse;\n model.depth = 1;\n model.numberOfDimensions = 2;\n\n // MAX_TEXTURE_SIZE gives the max dimensions that can be supported by the GPU,\n // but it doesn't mean it will fit in memory. If we have to use a float data type\n // or 4 components, there are good chances that the texture size will blow up\n // and could not fit in the GPU memory. Use a smaller texture size in that case,\n // which will force a downsampling of the dataset.\n // That problem does not occur when using webGL2 since we can pack the data in\n // denser textures based on our data type.\n // TODO: try to fit in the biggest supported texture, catch the gl error if it\n // does not fix (OUT_OF_MEMORY), then attempt with smaller texture\n let maxTexDim = model.context.getParameter(model.context.MAX_TEXTURE_SIZE);\n if (\n maxTexDim > 4096 &&\n (dataTypeToUse === VtkDataTypes.FLOAT || numCompsToUse === 4)\n ) {\n maxTexDim = 4096;\n }\n\n // compute estimate for XY subsample\n let xstride = 1;\n let ystride = 1;\n if (numPixelsIn > maxTexDim * maxTexDim) {\n xstride = Math.ceil(Math.sqrt(numPixelsIn / (maxTexDim * maxTexDim)));\n ystride = xstride;\n }\n let targetWidth = Math.sqrt(numPixelsIn) / xstride;\n targetWidth = vtkMath.nearestPowerOfTwo(targetWidth);\n // determine X reps\n const xreps = Math.floor(targetWidth * xstride / width);\n const yreps = Math.ceil(depth / xreps);\n const targetHeight = vtkMath.nearestPowerOfTwo(height * yreps / ystride);\n\n model.width = targetWidth;\n model.height = targetHeight;\n model.openGLRenderWindow.activateTexture(publicAPI);\n publicAPI.createTexture();\n publicAPI.bind();\n\n // store the information, we will need it later\n model.volumeInfo = {\n encodedScalars,\n min,\n max,\n width,\n height,\n depth,\n xreps,\n yreps,\n xstride,\n ystride,\n };\n\n // OK stuff the data into the 2d TEXTURE\n\n // first allocate the new texture\n let newArray;\n const pixCount = targetWidth * targetHeight * numCompsToUse;\n if (dataTypeToUse === VtkDataTypes.FLOAT) {\n newArray = new Float32Array(pixCount);\n } else {\n newArray = new Uint8Array(pixCount);\n }\n\n // then stuff the data into it, nothing fancy right now\n // for stride\n let outIdx = 0;\n\n for (let yRep = 0; yRep < yreps; yRep++) {\n const xrepsThisRow = Math.min(xreps, depth - yRep * xreps);\n const outXContIncr =\n model.width - xrepsThisRow * Math.floor(width / xstride);\n for (let inY = 0; inY < height; inY += ystride) {\n for (let xRep = 0; xRep < xrepsThisRow; xRep++) {\n const inOffset = (yRep * xreps + xRep) * width * height + inY * width;\n for (let inX = 0; inX < width; inX += xstride) {\n // copy value\n volCopyData(newArray, outIdx, data[inOffset + inX], min, max);\n outIdx += numCompsToUse;\n }\n }\n outIdx += outXContIncr * numCompsToUse;\n }\n }\n\n // Source texture data from the PBO.\n // model.context.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true);\n model.context.pixelStorei(model.context.UNPACK_ALIGNMENT, 1);\n\n model.context.texImage2D(\n model.target,\n 0,\n model.internalFormat,\n model.width,\n model.height,\n 0,\n model.format,\n model.openGLDataType,\n newArray\n );\n\n publicAPI.deactivate();\n return true;\n };\n\n //----------------------------------------------------------------------------\n // This method creates a normal/gradient texture for 3D volume\n // rendering\n publicAPI.create3DLighting = (scalarTexture, data, spacing) => {\n model.computedGradients = false;\n const vinfo = scalarTexture.getVolumeInfo();\n\n const width = vinfo.width;\n const height = vinfo.height;\n const depth = vinfo.depth;\n\n const haveWebgl2 = model.openGLRenderWindow.getWebgl2();\n\n let reformatGradientsFunction;\n if (haveWebgl2) {\n reformatGradientsFunction = (workerResults) => {\n const numVoxelsIn = width * height * depth;\n const reformattedGradients = new Uint8Array(numVoxelsIn * 4);\n const maxMag = model.volumeInfo.max;\n\n workerResults.forEach(\n ({\n subGradients,\n subMagnitudes,\n subMinMag,\n subMaxMag,\n subDepthStart,\n subDepthEnd,\n }) => {\n let inIdx = 0;\n let inMagIdx = 0;\n let outIdx = subDepthStart * width * height * 4;\n // start and end depths are inclusive\n const numWorkerVoxels =\n width * height * (subDepthEnd - subDepthStart + 1);\n for (let vp = 0; vp < numWorkerVoxels; ++vp) {\n reformattedGradients[outIdx++] = subGradients[inIdx++];\n reformattedGradients[outIdx++] = subGradients[inIdx++];\n reformattedGradients[outIdx++] = subGradients[inIdx++];\n reformattedGradients[outIdx++] =\n 255.0 * Math.sqrt(subMagnitudes[inMagIdx++] / maxMag);\n }\n }\n );\n\n return publicAPI.create3DFromRaw(\n width,\n height,\n depth,\n 4,\n VtkDataTypes.UNSIGNED_CHAR,\n reformattedGradients\n );\n };\n } else {\n // Now determine the texture parameters using the arguments.\n publicAPI.getOpenGLDataType(VtkDataTypes.UNSIGNED_CHAR);\n publicAPI.getInternalFormat(VtkDataTypes.UNSIGNED_CHAR, 4);\n publicAPI.getFormat(VtkDataTypes.UNSIGNED_CHAR, 4);\n\n if (!model.internalFormat || !model.format || !model.openGLDataType) {\n vtkErrorMacro('Failed to determine texture parameters.');\n return;\n }\n\n model.target = model.context.TEXTURE_2D;\n model.components = 4;\n model.depth = 1;\n model.numberOfDimensions = 2;\n model.width = scalarTexture.getWidth();\n model.height = scalarTexture.getHeight();\n\n reformatGradientsFunction = (workerResults) => {\n // now store the computed values into the packed 2D\n // texture using the same packing as volumeInfo\n const reformattedGradients = new Uint8Array(\n model.width * model.height * 4\n );\n const maxMag = model.volumeInfo.max;\n\n workerResults.forEach(\n ({\n subGradients,\n subMagnitudes,\n subMinMag,\n subMaxMag,\n subDepthStart,\n subDepthEnd,\n }) => {\n // start and end depths are inclusive\n for (let zpin = subDepthStart; zpin <= subDepthEnd; ++zpin) {\n // map xyz to 2d x y\n let zyout = Math.floor(zpin / vinfo.xreps); // y offset in reps\n let zxout = zpin - zyout * vinfo.xreps; // x offset in reps\n zxout *= Math.floor(width / vinfo.xstride); // in pixels\n zyout *= Math.floor(height / vinfo.ystride); // in pixels\n let ypout = zyout;\n for (\n let ypin = 0;\n ypin < height;\n ypin += vinfo.ystride, ypout++\n ) {\n let outIdx = (ypout * model.width + zxout) * 4;\n let inMagIdx = ((zpin - subDepthStart) * height + ypin) * width;\n let inIdx = inMagIdx * 3;\n for (let xpin = 0; xpin < width; xpin += vinfo.xstride) {\n reformattedGradients[outIdx++] = subGradients[inIdx];\n reformattedGradients[outIdx++] = subGradients[inIdx + 1];\n reformattedGradients[outIdx++] = subGradients[inIdx + 2];\n reformattedGradients[outIdx++] =\n 255.0 * Math.sqrt(subMagnitudes[inMagIdx] / maxMag);\n inMagIdx += vinfo.xstride;\n inIdx += 3 * vinfo.xstride;\n }\n }\n }\n }\n );\n\n model.openGLRenderWindow.activateTexture(publicAPI);\n publicAPI.createTexture();\n publicAPI.bind();\n\n // Source texture data from the PBO.\n // model.context.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true);\n model.context.pixelStorei(model.context.UNPACK_ALIGNMENT, 1);\n\n model.context.texImage2D(\n model.target,\n 0,\n model.internalFormat,\n model.width,\n model.height,\n 0,\n model.format,\n model.openGLDataType,\n reformattedGradients\n );\n\n publicAPI.deactivate();\n return true;\n };\n }\n\n const maxNumberOfWorkers = 4;\n const depthStride = Math.ceil(depth / maxNumberOfWorkers);\n const workerPromises = [];\n const workers = [];\n let depthIndex = 0;\n while (depthIndex < depth - 1) {\n const worker = new ComputeGradientsWorker();\n const workerPromise = new WebworkerPromise(worker);\n const depthStart = depthIndex;\n let depthEnd = depthIndex + depthStride; // no -1 to include one more slice to compute gradient\n depthEnd = Math.min(depthEnd, depth - 1);\n const subData = new data.constructor(\n data.slice(depthStart * width * height, (depthEnd + 1) * width * height) // +1 to include data from slice at depthEnd\n );\n workers.push(worker);\n workerPromises.push(\n workerPromise.postMessage(\n {\n width,\n height,\n depth,\n spacing,\n data: subData,\n haveWebgl2,\n depthStart,\n depthEnd,\n },\n [subData.buffer]\n )\n );\n depthIndex += depthStride;\n }\n Promise.all(workerPromises).then((workerResults) => {\n // close workers\n workers.forEach((worker) => worker.terminate());\n\n // compute min/max across all workers\n let minMag = Infinity;\n let maxMag = -Infinity;\n workerResults.forEach(\n ({\n subGradients,\n subMagnitudes,\n subMinMag,\n subMaxMag,\n subDepthStart,\n subDepthEnd,\n }) => {\n minMag = Math.min(subMinMag, minMag);\n maxMag = Math.max(subMaxMag, maxMag);\n }\n );\n\n // store the information, we will need it later\n model.volumeInfo = { min: minMag, max: maxMag };\n\n // copy the data and create the texture\n model.computedGradients = reformatGradientsFunction(workerResults);\n if (model.computedGradients) {\n model.gradientsBuildTime.modified();\n }\n return model.computedGradients;\n });\n };\n\n publicAPI.setOpenGLRenderWindow = (rw) => {\n if (model.openGLRenderWindow === rw) {\n return;\n }\n publicAPI.releaseGraphicsResources();\n model.openGLRenderWindow = rw;\n model.context = null;\n if (rw) {\n model.context = model.openGLRenderWindow.getContext();\n }\n };\n\n //----------------------------------------------------------------------------\n publicAPI.getMaximumTextureSize = (ctx) => {\n if (ctx && ctx.isCurrent()) {\n return ctx.getIntegerv(ctx.MAX_TEXTURE_SIZE);\n }\n\n return -1;\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n openGLRenderWindow: null,\n context: null,\n handle: 0,\n sendParametersTime: null,\n textureBuildTime: null,\n numberOfDimensions: 0,\n target: 0,\n format: 0,\n openGLDataType: 0,\n components: 0,\n width: 0,\n height: 0,\n depth: 0,\n autoParameters: true,\n wrapS: Wrap.CLAMP_TO_EDGE,\n wrapT: Wrap.CLAMP_TO_EDGE,\n wrapR: Wrap.CLAMP_TO_EDGE,\n minificationFilter: Filter.NEAREST,\n magnificationFilter: Filter.NEAREST,\n minLOD: -1000.0,\n maxLOD: 1000.0,\n baseLevel: 0,\n maxLevel: 1000,\n generateMipmap: false,\n computedGradients: false,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkViewNode.extend(publicAPI, model, initialValues);\n\n model.sendParametersTime = {};\n macro.obj(model.sendParametersTime, { mtime: 0 });\n\n model.textureBuildTime = {};\n macro.obj(model.textureBuildTime, { mtime: 0 });\n\n model.gradientsBuildTime = {};\n macro.obj(model.gradientsBuildTime, { mtime: 0 });\n\n // Build VTK API\n macro.set(publicAPI, model, ['format', 'openGLDataType']);\n\n macro.setGet(publicAPI, model, [\n 'keyMatrixTime',\n 'minificationFilter',\n 'magnificationFilter',\n 'wrapS',\n 'wrapT',\n 'wrapR',\n 'generateMipmap',\n ]);\n\n macro.get(publicAPI, model, [\n 'width',\n 'height',\n 'volumeInfo',\n 'components',\n 'handle',\n 'target',\n 'computedGradients',\n 'gradientsBuildTime',\n ]);\n\n // Object methods\n vtkOpenGLTexture(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkOpenGLTexture');\n\n// ----------------------------------------------------------------------------\n\nexport default Object.assign({ newInstance, extend }, Constants);\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/OpenGL/Texture/index.js","import macro from 'vtk.js/Sources/macro';\nimport vtkAbstractMapper3D from 'vtk.js/Sources/Rendering/Core/AbstractMapper3D';\nimport vtkDataArray from 'vtk.js/Sources/Common/Core/DataArray';\nimport vtkImageData from 'vtk.js/Sources/Common/DataModel/ImageData';\nimport vtkLookupTable from 'vtk.js/Sources/Common/Core/LookupTable';\nimport vtkMath from 'vtk.js/Sources/Common/Core/Math';\nimport vtkScalarsToColors from 'vtk.js/Sources/Common/Core/ScalarsToColors/Constants'; // Need to go inside Constants otherwise dependency loop\n\nimport CoincidentTopologyHelper from 'vtk.js/Sources/Rendering/Core/Mapper/CoincidentTopologyHelper';\nimport otherStaticMethods from 'vtk.js/Sources/Rendering/Core/Mapper/Static';\nimport Constants from 'vtk.js/Sources/Rendering/Core/Mapper/Constants';\n\nconst { ColorMode, ScalarMode, GetArray } = Constants;\nconst { VectorMode } = vtkScalarsToColors;\n\n// ----------------------------------------------------------------------------\n\nfunction notImplemented(method) {\n return () => macro.vtkErrorMacro(`vtkMapper::${method} - NOT IMPLEMENTED`);\n}\n\n// CoincidentTopology static methods ------------------------------------------\n/* eslint-disable arrow-body-style */\n\nconst staticOffsetModel = {\n Polygon: { factor: 2, offset: 0 },\n Line: { factor: 1, offset: -1 },\n Point: { factor: 0, offset: -2 },\n};\nconst staticOffsetAPI = {};\n\nCoincidentTopologyHelper.addCoincidentTopologyMethods(\n staticOffsetAPI,\n staticOffsetModel,\n CoincidentTopologyHelper.CATEGORIES.map((key) => ({\n key,\n method: `ResolveCoincidentTopology${key}OffsetParameters`,\n }))\n);\n\n// ----------------------------------------------------------------------------\n// vtkMapper methods\n// ----------------------------------------------------------------------------\n\nfunction vtkMapper(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkMapper');\n\n publicAPI.getBounds = () => {\n const input = publicAPI.getInputData();\n if (!input) {\n model.bounds = vtkMath.createUninitializedBounds();\n } else {\n if (!model.static) {\n publicAPI.update();\n }\n model.bounds = input.getBounds();\n }\n return model.bounds;\n };\n\n publicAPI.setForceCompileOnly = (v) => {\n model.forceCompileOnly = v;\n // make sure we do NOT call modified()\n };\n\n publicAPI.createDefaultLookupTable = () => {\n model.lookupTable = vtkLookupTable.newInstance();\n };\n\n publicAPI.getColorModeAsString = () =>\n macro.enumToString(ColorMode, model.colorMode);\n\n publicAPI.setColorModeToDefault = () => publicAPI.setColorMode(0);\n publicAPI.setColorModeToMapScalars = () => publicAPI.setColorMode(1);\n publicAPI.setColorModeToDirectScalars = () => publicAPI.setColorMode(2);\n\n publicAPI.getScalarModeAsString = () =>\n macro.enumToString(ScalarMode, model.scalarMode);\n\n publicAPI.setScalarModeToDefault = () => publicAPI.setScalarMode(0);\n publicAPI.setScalarModeToUsePointData = () => publicAPI.setScalarMode(1);\n publicAPI.setScalarModeToUseCellData = () => publicAPI.setScalarMode(2);\n publicAPI.setScalarModeToUsePointFieldData = () => publicAPI.setScalarMode(3);\n publicAPI.setScalarModeToUseCellFieldData = () => publicAPI.setScalarMode(4);\n publicAPI.setScalarModeToUseFieldData = () => publicAPI.setScalarMode(5);\n\n // Add Static methods to our instance\n Object.keys(otherStaticMethods).forEach((methodName) => {\n publicAPI[methodName] = otherStaticMethods[methodName];\n });\n Object.keys(staticOffsetAPI).forEach((methodName) => {\n publicAPI[methodName] = staticOffsetAPI[methodName];\n });\n\n // Relative metods\n /* eslint-disable arrow-body-style */\n model.topologyOffset = {\n Polygon: { factor: 0, offset: 0 },\n Line: { factor: 0, offset: 0 },\n Point: { factor: 0, offset: 0 },\n };\n CoincidentTopologyHelper.addCoincidentTopologyMethods(\n publicAPI,\n model.topologyOffset,\n CoincidentTopologyHelper.CATEGORIES.map((key) => ({\n key,\n method: `RelativeCoincidentTopology${key}OffsetParameters`,\n }))\n );\n /* eslint-enable arrow-body-style */\n\n publicAPI.getCoincidentTopologyPolygonOffsetParameters = () => {\n const globalValue = staticOffsetAPI.getResolveCoincidentTopologyPolygonOffsetParameters();\n const localValue = publicAPI.getRelativeCoincidentTopologyPolygonOffsetParameters();\n return {\n factor: globalValue.factor + localValue.factor,\n offset: globalValue.offset + localValue.offset,\n };\n };\n\n publicAPI.getCoincidentTopologyLineOffsetParameters = () => {\n const globalValue = staticOffsetAPI.getResolveCoincidentTopologyLineOffsetParameters();\n const localValue = publicAPI.getRelativeCoincidentTopologyLineOffsetParameters();\n return {\n factor: globalValue.factor + localValue.factor,\n offset: globalValue.offset + localValue.offset,\n };\n };\n\n publicAPI.getCoincidentTopologyPointOffsetParameter = () => {\n const globalValue = staticOffsetAPI.getResolveCoincidentTopologyPointOffsetParameters();\n const localValue = publicAPI.getRelativeCoincidentTopologyPointOffsetParameters();\n return {\n factor: globalValue.factor + localValue.factor,\n offset: globalValue.offset + localValue.offset,\n };\n };\n\n publicAPI.getAbstractScalars = (\n input,\n scalarMode,\n arrayAccessMode,\n arrayId,\n arrayName\n ) => {\n // make sure we have an input\n if (!input || !model.scalarVisibility) {\n return null;\n }\n\n let scalars = null;\n\n // get and scalar data according to scalar mode\n if (scalarMode === ScalarMode.DEFAULT) {\n scalars = input.getPointData().getScalars();\n if (!scalars) {\n scalars = input.getCellData().getScalars();\n }\n } else if (scalarMode === ScalarMode.USE_POINT_DATA) {\n scalars = input.getPointData().getScalars();\n } else if (scalarMode === ScalarMode.USE_CELL_DATA) {\n scalars = input.getCellData().getScalars();\n } else if (scalarMode === ScalarMode.USE_POINT_FIELD_DATA) {\n const pd = input.getPointData();\n if (arrayAccessMode === GetArray.BY_ID) {\n scalars = pd.getArrayByIndex(arrayId);\n } else {\n scalars = pd.getArrayByName(arrayName);\n }\n } else if (scalarMode === ScalarMode.USE_CELL_FIELD_DATA) {\n const cd = input.getCellData();\n if (arrayAccessMode === GetArray.BY_ID) {\n scalars = cd.getArrayByIndex(arrayId);\n } else {\n scalars = cd.getArrayByName(arrayName);\n }\n } else if (scalarMode === ScalarMode.USE_FIELD_DATA) {\n const fd = input.getFieldData();\n if (arrayAccessMode === GetArray.BY_ID) {\n scalars = fd.getArrayByIndex(arrayId);\n } else {\n scalars = fd.getArrayByName(arrayName);\n }\n }\n\n return scalars;\n };\n\n publicAPI.mapScalars = (input, alpha) => {\n const scalars = publicAPI.getAbstractScalars(\n input,\n model.scalarMode,\n model.arrayAccessMode,\n model.arrayId,\n model.colorByArrayName\n );\n\n if (!scalars) {\n model.colorCoordinates = null;\n model.colorTextureMap = null;\n model.colorMapColors = null;\n return;\n }\n\n if (!model.useLookupTableScalarRange) {\n publicAPI\n .getLookupTable()\n .setRange(model.scalarRange[0], model.scalarRange[1]);\n }\n\n // Decide betweeen texture color or vertex color.\n // Cell data always uses vertex color.\n // Only point data can use both texture and vertex coloring.\n if (publicAPI.canUseTextureMapForColoring(input)) {\n publicAPI.mapScalarsToTexture(scalars, alpha);\n return;\n }\n\n model.colorCoordinates = null;\n model.colorTextureMap = null;\n\n const lut = publicAPI.getLookupTable();\n if (lut) {\n // Ensure that the lookup table is built\n lut.build();\n model.colorMapColors = lut.mapScalars(scalars, model.colorMode, 0);\n }\n };\n\n //-----------------------------------------------------------------------------\n publicAPI.scalarToTextureCoordinate = (\n scalarValue, // Input scalar\n rangeMin, // range[0]\n invRangeWidth\n ) => {\n // 1/(range[1]-range[0])\n let texCoordS = 0.5; // Scalar value is arbitrary when NaN\n let texCoordT = 1.0; // 1.0 in t coordinate means NaN\n if (!vtkMath.isNan(scalarValue)) {\n // 0.0 in t coordinate means not NaN. So why am I setting it to 0.49?\n // Because when you are mapping scalars and you have a NaN adjacent to\n // anything else, the interpolation everywhere should be NaN. Thus, I\n // want the NaN color everywhere except right on the non-NaN neighbors.\n // To simulate this, I set the t coord for the real numbers close to\n // the threshold so that the interpolation almost immediately looks up\n // the NaN value.\n texCoordT = 0.49;\n\n texCoordS = (scalarValue - rangeMin) * invRangeWidth;\n\n // Some implementations apparently don't handle relatively large\n // numbers (compared to the range [0.0, 1.0]) very well. In fact,\n // values above 1122.0f appear to cause texture wrap-around on\n // some systems even when edge clamping is enabled. Why 1122.0f? I\n // don't know. For safety, we'll clamp at +/- 1000. This will\n // result in incorrect images when the texture value should be\n // above or below 1000, but I don't have a better solution.\n if (texCoordS > 1000.0) {\n texCoordS = 1000.0;\n } else if (texCoordS < -1000.0) {\n texCoordS = -1000.0;\n }\n }\n return { texCoordS, texCoordT };\n };\n\n //-----------------------------------------------------------------------------\n publicAPI.createColorTextureCoordinates = (\n input,\n output,\n numScalars,\n numComps,\n component,\n range,\n tableRange,\n tableNumberOfColors,\n useLogScale\n ) => {\n // We have to change the range used for computing texture\n // coordinates slightly to accomodate the special above- and\n // below-range colors that are the first and last texels,\n // respectively.\n const scalarTexelWidth = (range[1] - range[0]) / tableNumberOfColors;\n\n const paddedRange = [];\n paddedRange[0] = range[0] - scalarTexelWidth;\n paddedRange[1] = range[1] + scalarTexelWidth;\n const invRangeWidth = 1.0 / (paddedRange[1] - paddedRange[0]);\n\n const outputV = output.getData();\n const inputV = input.getData();\n\n let count = 0;\n let outputCount = 0;\n if (component < 0 || component >= numComps) {\n for (let scalarIdx = 0; scalarIdx < numScalars; ++scalarIdx) {\n let sum = 0;\n for (let compIdx = 0; compIdx < numComps; ++compIdx) {\n sum += inputV[count] * inputV[count];\n count++;\n }\n let magnitude = Math.sqrt(sum);\n if (useLogScale) {\n magnitude = vtkLookupTable.applyLogScale(\n magnitude,\n tableRange,\n range\n );\n }\n const outputs = publicAPI.scalarToTextureCoordinate(\n magnitude,\n paddedRange[0],\n invRangeWidth\n );\n outputV[outputCount] = outputs.texCoordS;\n outputV[outputCount + 1] = outputs.texCoordT;\n outputCount += 2;\n }\n } else {\n count += component;\n for (let scalarIdx = 0; scalarIdx < numScalars; ++scalarIdx) {\n let inputValue = inputV[count];\n if (useLogScale) {\n inputValue = vtkLookupTable.applyLogScale(\n inputValue,\n tableRange,\n range\n );\n }\n const outputs = publicAPI.scalarToTextureCoordinate(\n inputValue,\n paddedRange[0],\n invRangeWidth\n );\n outputV[outputCount] = outputs.texCoordS;\n outputV[outputCount + 1] = outputs.texCoordT;\n outputCount += 2;\n count += numComps;\n }\n }\n };\n\n publicAPI.mapScalarsToTexture = (scalars, alpha) => {\n const range = model.lookupTable.getRange();\n const useLogScale = model.lookupTable.usingLogScale();\n if (useLogScale) {\n // convert range to log.\n vtkLookupTable.getLogRange(range, range);\n }\n\n const origAlpha = model.lookupTable.getAlpha();\n\n // Get rid of vertex color array. Only texture or vertex coloring\n // can be active at one time. The existence of the array is the\n // signal to use that technique.\n model.colorMapColors = null;\n\n // If the lookup table has changed, then recreate the color texture map.\n // Set a new lookup table changes this->MTime.\n if (\n model.colorTextureMap == null ||\n publicAPI.getMTime() > model.colorTextureMap.getMTime() ||\n model.lookupTable.getMTime() > model.colorTextureMap.getMTime() ||\n model.lookupTable.getAlpha() !== alpha\n ) {\n model.lookupTable.setAlpha(alpha);\n model.colorTextureMap = null;\n\n // Get the texture map from the lookup table.\n // Create a dummy ramp of scalars.\n // In the future, we could extend vtkScalarsToColors.\n model.lookupTable.build();\n let numberOfColors = model.lookupTable.getNumberOfAvailableColors();\n if (numberOfColors > 4094) {\n numberOfColors = 4094;\n }\n numberOfColors += 2;\n const k = (range[1] - range[0]) / (numberOfColors - 1 - 2);\n\n const newArray = new Float64Array(numberOfColors * 2);\n\n for (let i = 0; i < numberOfColors; ++i) {\n newArray[i] = range[0] + i * k - k; // minus k to start at below range color\n if (useLogScale) {\n newArray[i] = 10.0 ** newArray[i];\n }\n }\n // Dimension on NaN.\n for (let i = 0; i < numberOfColors; ++i) {\n newArray[i + numberOfColors] = NaN;\n }\n\n model.colorTextureMap = vtkImageData.newInstance();\n model.colorTextureMap.setExtent(0, numberOfColors - 1, 0, 1, 0, 0);\n\n const tmp = vtkDataArray.newInstance({\n numberOfComponents: 1,\n values: newArray,\n });\n\n model.colorTextureMap\n .getPointData()\n .setScalars(model.lookupTable.mapScalars(tmp, model.colorMode, 0));\n model.lookupTable.setAlpha(origAlpha);\n }\n\n // Create new coordinates if necessary.\n // Need to compare lookup table incase the range has changed.\n if (\n !model.colorCoordinates ||\n publicAPI.getMTime() > model.colorCoordinates.getMTime() ||\n publicAPI.getInputData(0).getMTime() >\n model.colorCoordinates.getMTime() ||\n model.lookupTable.getMTime() > model.colorCoordinates.getMTime()\n ) {\n // Get rid of old colors\n model.colorCoordinates = null;\n\n // Now create the color texture coordinates.\n const numComps = scalars.getNumberOfComponents();\n const num = scalars.getNumberOfTuples();\n\n // const fArray = new FloatArray(num * 2);\n model.colorCoordinates = vtkDataArray.newInstance({\n numberOfComponents: 2,\n values: new Float32Array(num * 2),\n });\n\n let scalarComponent = model.lookupTable.getVectorComponent();\n // Although I like the feature of applying magnitude to single component\n // scalars, it is not how the old MapScalars for vertex coloring works.\n if (\n model.lookupTable.getVectorMode() === VectorMode.MAGNITUDE &&\n scalars.getNumberOfComponents() > 1\n ) {\n scalarComponent = -1;\n }\n\n publicAPI.createColorTextureCoordinates(\n scalars,\n model.colorCoordinates,\n num,\n numComps,\n scalarComponent,\n range,\n model.lookupTable.getRange(),\n model.colorTextureMap\n .getPointData()\n .getScalars()\n .getNumberOfTuples() /\n 2 -\n 2,\n useLogScale\n );\n }\n };\n\n publicAPI.getIsOpaque = () => {\n const lut = publicAPI.getLookupTable();\n if (lut) {\n // Ensure that the lookup table is built\n lut.build();\n return lut.isOpaque();\n }\n return true;\n };\n\n publicAPI.canUseTextureMapForColoring = (input) => {\n if (!model.interpolateScalarsBeforeMapping) {\n return false; // user doesn't want us to use texture maps at all.\n }\n\n // index color does not use textures\n if (model.lookupTable && model.lookupTable.getIndexedLookup()) {\n return false;\n }\n\n return true;\n };\n\n publicAPI.clearColorArrays = () => {\n model.colorMapColors = null;\n model.colorCoordinates = null;\n model.colorTextureMap = null;\n };\n\n publicAPI.getLookupTable = () => {\n if (!model.lookupTable) {\n publicAPI.createDefaultLookupTable();\n }\n return model.lookupTable;\n };\n\n publicAPI.getMTime = () => {\n let mt = model.mtime;\n if (model.lookupTable !== null) {\n const time = model.lookupTable.getMTime();\n mt = time > mt ? time : mt;\n }\n return mt;\n };\n\n publicAPI.getPrimitiveCount = () => {\n const input = publicAPI.getInputData();\n const pcount = {\n points: input.getPoints().getNumberOfValues() / 3,\n verts:\n input.getVerts().getNumberOfValues() -\n input.getVerts().getNumberOfCells(),\n lines:\n input.getLines().getNumberOfValues() -\n 2 * input.getLines().getNumberOfCells(),\n triangles:\n input.getPolys().getNumberOfValues() -\n 3 * input.getLines().getNumberOfCells(),\n };\n return pcount;\n };\n\n publicAPI.acquireInvertibleLookupTable = notImplemented(\n 'AcquireInvertibleLookupTable'\n );\n publicAPI.valueToColor = notImplemented('ValueToColor');\n publicAPI.colorToValue = notImplemented('ColorToValue');\n publicAPI.useInvertibleColorFor = notImplemented('UseInvertibleColorFor');\n publicAPI.clearInvertibleColor = notImplemented('ClearInvertibleColor');\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n colorMapColors: null, // Same as this->Colors\n\n static: false,\n lookupTable: null,\n\n scalarVisibility: true,\n scalarRange: [0, 1],\n useLookupTableScalarRange: false,\n\n colorMode: 0,\n scalarMode: 0,\n arrayAccessMode: 1, // By_NAME\n\n renderTime: 0,\n\n colorByArrayName: null,\n\n fieldDataTupleId: -1,\n\n interpolateScalarsBeforeMapping: false,\n colorCoordinates: null,\n colorTextureMap: null,\n\n forceCompileOnly: 0,\n\n useInvertibleColors: false,\n invertibleScalars: null,\n resolveCoincidentTopology: false,\n\n viewSpecificProperties: null,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkAbstractMapper3D.extend(publicAPI, model, initialValues);\n\n macro.get(publicAPI, model, [\n 'colorCoordinates',\n 'colorMapColors',\n 'colorTextureMap',\n ]);\n macro.setGet(publicAPI, model, [\n 'colorByArrayName',\n 'arrayAccessMode',\n 'colorMode',\n 'fieldDataTupleId',\n 'interpolateScalarsBeforeMapping',\n 'lookupTable',\n 'renderTime',\n 'resolveCoincidentTopology',\n 'scalarMode',\n 'scalarVisibility',\n 'static',\n 'useLookupTableScalarRange',\n 'viewSpecificProperties',\n ]);\n macro.setGetArray(publicAPI, model, ['scalarRange'], 2);\n\n if (!model.viewSpecificProperties) {\n model.viewSpecificProperties = {};\n }\n\n // Object methods\n vtkMapper(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkMapper');\n\n// ----------------------------------------------------------------------------\n\nexport default Object.assign(\n { newInstance, extend },\n staticOffsetAPI,\n otherStaticMethods,\n Constants\n);\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/Core/Mapper/index.js","'use strict';\n\nvar utils = require('./utils');\nvar support = require('./support');\nvar nodejsUtils = require('./nodejsUtils');\nvar GenericWorker = require('./stream/GenericWorker');\n\n/**\n * The following functions come from pako, from pako/lib/utils/strings\n * released under the MIT license, see pako https://github.com/nodeca/pako/\n */\n\n// Table with utf8 lengths (calculated by first byte of sequence)\n// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n// because max possible codepoint is 0x10ffff\nvar _utf8len = new Array(256);\nfor (var i=0; i<256; i++) {\n _utf8len[i] = (i >= 252 ? 6 : i >= 248 ? 5 : i >= 240 ? 4 : i >= 224 ? 3 : i >= 192 ? 2 : 1);\n}\n_utf8len[254]=_utf8len[254]=1; // Invalid sequence start\n\n// convert string to array (typed, when possible)\nvar string2buf = function (str) {\n var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n // count binary size\n for (m_pos = 0; m_pos < str_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {\n c2 = str.charCodeAt(m_pos+1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n }\n\n // allocate buffer\n if (support.uint8array) {\n buf = new Uint8Array(buf_len);\n } else {\n buf = new Array(buf_len);\n }\n\n // convert\n for (i=0, m_pos = 0; i < buf_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {\n c2 = str.charCodeAt(m_pos+1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n if (c < 0x80) {\n /* one byte */\n buf[i++] = c;\n } else if (c < 0x800) {\n /* two bytes */\n buf[i++] = 0xC0 | (c >>> 6);\n buf[i++] = 0x80 | (c & 0x3f);\n } else if (c < 0x10000) {\n /* three bytes */\n buf[i++] = 0xE0 | (c >>> 12);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n } else {\n /* four bytes */\n buf[i++] = 0xf0 | (c >>> 18);\n buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n }\n }\n\n return buf;\n};\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max - length limit (mandatory);\nvar utf8border = function(buf, max) {\n var pos;\n\n max = max || buf.length;\n if (max > buf.length) { max = buf.length; }\n\n // go back from last position, until start of sequence found\n pos = max-1;\n while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n // Fuckup - very small and broken sequence,\n // return max, because we should return something anyway.\n if (pos < 0) { return max; }\n\n // If we came to start of buffer - that means vuffer is too small,\n // return max too.\n if (pos === 0) { return max; }\n\n return (pos + _utf8len[buf[pos]] > max) ? pos : max;\n};\n\n// convert array to string\nvar buf2string = function (buf) {\n var str, i, out, c, c_len;\n var len = buf.length;\n\n // Reserve max possible length (2 words per char)\n // NB: by unknown reasons, Array is significantly faster for\n // String.fromCharCode.apply than Uint16Array.\n var utf16buf = new Array(len*2);\n\n for (out=0, i=0; i<len;) {\n c = buf[i++];\n // quick process ascii\n if (c < 0x80) { utf16buf[out++] = c; continue; }\n\n c_len = _utf8len[c];\n // skip 5 & 6 byte codes\n if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len-1; continue; }\n\n // apply mask on first byte\n c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n // join the rest\n while (c_len > 1 && i < len) {\n c = (c << 6) | (buf[i++] & 0x3f);\n c_len--;\n }\n\n // terminated by end of string?\n if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n if (c < 0x10000) {\n utf16buf[out++] = c;\n } else {\n c -= 0x10000;\n utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n }\n }\n\n // shrinkBuf(utf16buf, out)\n if (utf16buf.length !== out) {\n if(utf16buf.subarray) {\n utf16buf = utf16buf.subarray(0, out);\n } else {\n utf16buf.length = out;\n }\n }\n\n // return String.fromCharCode.apply(null, utf16buf);\n return utils.applyFromCharCode(utf16buf);\n};\n\n\n// That's all for the pako functions.\n\n\n/**\n * Transform a javascript string into an array (typed if possible) of bytes,\n * UTF-8 encoded.\n * @param {String} str the string to encode\n * @return {Array|Uint8Array|Buffer} the UTF-8 encoded string.\n */\nexports.utf8encode = function utf8encode(str) {\n if (support.nodebuffer) {\n return nodejsUtils.newBuffer(str, \"utf-8\");\n }\n\n return string2buf(str);\n};\n\n\n/**\n * Transform a bytes array (or a representation) representing an UTF-8 encoded\n * string into a javascript string.\n * @param {Array|Uint8Array|Buffer} buf the data de decode\n * @return {String} the decoded string.\n */\nexports.utf8decode = function utf8decode(buf) {\n if (support.nodebuffer) {\n return utils.transformTo(\"nodebuffer\", buf).toString(\"utf-8\");\n }\n\n buf = utils.transformTo(support.uint8array ? \"uint8array\" : \"array\", buf);\n\n return buf2string(buf);\n};\n\n/**\n * A worker to decode utf8 encoded binary chunks into string chunks.\n * @constructor\n */\nfunction Utf8DecodeWorker() {\n GenericWorker.call(this, \"utf-8 decode\");\n // the last bytes if a chunk didn't end with a complete codepoint.\n this.leftOver = null;\n}\nutils.inherits(Utf8DecodeWorker, GenericWorker);\n\n/**\n * @see GenericWorker.processChunk\n */\nUtf8DecodeWorker.prototype.processChunk = function (chunk) {\n\n var data = utils.transformTo(support.uint8array ? \"uint8array\" : \"array\", chunk.data);\n\n // 1st step, re-use what's left of the previous chunk\n if (this.leftOver && this.leftOver.length) {\n if(support.uint8array) {\n var previousData = data;\n data = new Uint8Array(previousData.length + this.leftOver.length);\n data.set(this.leftOver, 0);\n data.set(previousData, this.leftOver.length);\n } else {\n data = this.leftOver.concat(data);\n }\n this.leftOver = null;\n }\n\n var nextBoundary = utf8border(data);\n var usableData = data;\n if (nextBoundary !== data.length) {\n if (support.uint8array) {\n usableData = data.subarray(0, nextBoundary);\n this.leftOver = data.subarray(nextBoundary, data.length);\n } else {\n usableData = data.slice(0, nextBoundary);\n this.leftOver = data.slice(nextBoundary, data.length);\n }\n }\n\n this.push({\n data : exports.utf8decode(usableData),\n meta : chunk.meta\n });\n};\n\n/**\n * @see GenericWorker.flush\n */\nUtf8DecodeWorker.prototype.flush = function () {\n if(this.leftOver && this.leftOver.length) {\n this.push({\n data : exports.utf8decode(this.leftOver),\n meta : {}\n });\n this.leftOver = null;\n }\n};\nexports.Utf8DecodeWorker = Utf8DecodeWorker;\n\n/**\n * A worker to endcode string chunks into utf8 encoded binary chunks.\n * @constructor\n */\nfunction Utf8EncodeWorker() {\n GenericWorker.call(this, \"utf-8 encode\");\n}\nutils.inherits(Utf8EncodeWorker, GenericWorker);\n\n/**\n * @see GenericWorker.processChunk\n */\nUtf8EncodeWorker.prototype.processChunk = function (chunk) {\n this.push({\n data : exports.utf8encode(chunk.data),\n meta : chunk.meta\n });\n};\nexports.Utf8EncodeWorker = Utf8EncodeWorker;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/lib/utf8.js\n// module id = 69\n// module chunks = 1","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/inherits/inherits_browser.js\n// module id = 70\n// module chunks = 1","import $ from 'jquery';\nimport 'bootstrap';\n\nrequire.resolve('./helper.less');\n\nexport function ensure(dlg, do_show, immediate, hide_func) {\n $(dlg).on('hidden.bs.modal', function(event) {\n var body = $('body');\n\n $(this).removeClass('fv-modal-stack');\n body.data('fv_open_modals', body.data('fv_open_modals') - 1);\n });\n\n $(dlg).on('shown.bs.modal', function(event) {\n var body = $('body');\n\n if (typeof body.data('fv_open_modals') == 'undefined')\n body.data('fv_open_modals', 0);\n\n if ($(this).hasClass('fv-modal-stack')) return;\n\n $(this).addClass('fv-modal-stack');\n body.data('fv_open_modals', body.data('fv_open_modals') + 1);\n $(this).css('z-index', 1040 + 10 * body.data('fv_open_modals'));\n\n $('.modal-backdrop')\n .not('.fv-modal-stack')\n .css('z-index', 1039 + 10 * body.data('fv_open_modals'))\n .addClass('fv-modal-stack');\n });\n\n var delay = immediate ? 0 : 500;\n dlg.data(\n 'timed-dialog',\n setTimeout(function() {\n do_show();\n }, delay)\n );\n dlg.data('multi-hide-function', function() {\n if (hide_func) hide_func();\n else dlg.modal('hide');\n });\n}\n\nexport function end(dlg) {\n clearTimeout(dlg.data('timed-dialog'));\n dlg.data('multi-hide-function')();\n}\n\n\n\n// WEBPACK FOOTER //\n// ./external_modules/helpers/multimodal.js","import $ from 'jquery';\nimport 'bootstrap';\nimport * as multi from 'helpers/multimodal';\n\nrequire.resolve('./helper.less');\n\nlet code = [\n '<div class=\"modal\" role=\"dialog\" id=\"errorDialog\">',\n '<div class=\"modal-dialog\" role=\"document\">',\n '<div class=\"modal-content\">',\n '<div class=\"modal-header\">',\n '<button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\"><span aria-hidden=\"true\">&times;</span></button>',\n '<h4>Error</h4>',\n '</div>',\n '<div class=\"modal-body\" style=\"color:red;font-weight:bold;\">',\n '</div>',\n '<div class=\"modal-footer\">',\n '<button class=\"btn btn-primary\" data-dismiss=\"modal\">Close</button>',\n '</div>',\n '</div>',\n '</div>',\n '</div>',\n].join('');\nlet errorDialog = $(code);\n\nexport function show(msg) {\n console.log('Show error dialog with ' + msg);\n $('.modal-body', errorDialog).text(msg);\n multi.ensure(errorDialog, function() {\n errorDialog.modal();\n });\n}\n\nexport function hide() {\n multi.end(errorDialog);\n errorDialog.modal('hide');\n}\n\n\n\n// WEBPACK FOOTER //\n// ./external_modules/helpers/error.js","define(['jquery'], function($) {\n var self = this;\n\n self.queryString = (function(paramsArray) {\n let params = {};\n\n for (let i = 0; i < paramsArray.length; ++i) {\n let param = paramsArray[i].split('=', 2);\n\n if (param.length !== 2) continue;\n\n params[param[0]] = decodeURIComponent(param[1].replace(/\\+/g, ' '));\n }\n\n return params;\n })(window.location.search.substr(1).split('&'));\n\n self.addNewState = function() {\n console.log(self.queryString);\n history.pushState({}, '', '?' + $.param(self.queryString));\n };\n\n return self;\n});\n\n\n\n// WEBPACK FOOTER //\n// ./external_modules/helpers/params.js","export const ObjectType = {\n ARRAY_BUFFER: 0,\n ELEMENT_ARRAY_BUFFER: 1,\n TEXTURE_BUFFER: 2,\n};\n\nexport default {\n ObjectType,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/OpenGL/BufferObject/Constants.js","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return '<Buffer ' + str + '>'\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/buffer/index.js\n// module id = 89\n// module chunks = 1","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\n\nfunction isArray(arg) {\n if (Array.isArray) {\n return Array.isArray(arg);\n }\n return objectToString(arg) === '[object Array]';\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = Buffer.isBuffer;\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-util-is/lib/util.js\n// module id = 90\n// module chunks = 1","/* global Promise */\n'use strict';\n\n// load the global object first:\n// - it should be better integrated in the system (unhandledRejection in node)\n// - the environment may have a custom Promise implementation (see zone.js)\nvar ES6Promise = null;\nif (typeof Promise !== \"undefined\") {\n ES6Promise = Promise;\n} else {\n ES6Promise = require(\"lie\");\n}\n\n/**\n * Let the user use/change some implementations.\n */\nmodule.exports = {\n Promise: ES6Promise\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/lib/external.js\n// module id = 91\n// module chunks = 1","export const Wrap = {\n CLAMP_TO_EDGE: 0,\n REPEAT: 1,\n MIRRORED_REPEAT: 2,\n};\n\nexport const Filter = {\n NEAREST: 0,\n LINEAR: 1,\n NEAREST_MIPMAP_NEAREST: 2,\n NEAREST_MIPMAP_LINEAR: 3,\n LINEAR_MIPMAP_NEAREST: 4,\n LINEAR_MIPMAP_LINEAR: 5,\n};\n\nexport default {\n Wrap,\n Filter,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/OpenGL/Texture/Constants.js","import macro from 'vtk.js/Sources/macro';\nimport Constants from 'vtk.js/Sources/Rendering/OpenGL/BufferObject/Constants';\n\nconst { ObjectType } = Constants;\n\n// ----------------------------------------------------------------------------\n// Global methods\n// ----------------------------------------------------------------------------\n\n// ----------------------------------------------------------------------------\n// Static API\n// ----------------------------------------------------------------------------\n\nexport const STATIC = {};\n\n// ----------------------------------------------------------------------------\n// vtkOpenGLBufferObject methods\n// ----------------------------------------------------------------------------\n\nfunction vtkOpenGLBufferObject(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkOpenGLBufferObject');\n\n // Class-specific private functions\n function convertType(type) {\n switch (type) {\n case ObjectType.ELEMENT_ARRAY_BUFFER:\n return model.context.ELEMENT_ARRAY_BUFFER;\n case ObjectType.TEXTURE_BUFFER:\n if ('TEXTURE_BUFFER' in model.context) {\n return model.context.TEXTURE_BUFFER;\n }\n /* eslint-disable no-fallthrough */\n // Intentional fallthrough in case there is no TEXTURE_BUFFER in WebGL\n default:\n /* eslint-enable no-fallthrough */\n case ObjectType.ARRAY_BUFFER:\n return model.context.ARRAY_BUFFER;\n }\n }\n\n let internalType = null;\n let internalHandle = null;\n let dirty = true;\n let error = '';\n\n // Public API methods\n publicAPI.getType = () => internalType;\n\n publicAPI.setType = (value) => {\n internalType = value;\n };\n\n publicAPI.getHandle = () => internalHandle;\n publicAPI.isReady = () => dirty === false;\n\n publicAPI.generateBuffer = (type) => {\n const objectTypeGL = convertType(type);\n if (internalHandle === null) {\n internalHandle = model.context.createBuffer();\n internalType = type;\n }\n return convertType(internalType) === objectTypeGL;\n };\n\n publicAPI.upload = (data, type) => {\n // buffer, size, type\n const alreadyGenerated = publicAPI.generateBuffer(type);\n if (!alreadyGenerated) {\n error = 'Trying to upload array buffer to incompatible buffer.';\n return false;\n }\n model.context.bindBuffer(convertType(internalType), internalHandle);\n model.context.bufferData(\n convertType(internalType),\n data,\n model.context.STATIC_DRAW\n );\n dirty = false;\n return true;\n };\n\n publicAPI.bind = () => {\n if (!internalHandle) {\n return false;\n }\n model.context.bindBuffer(convertType(internalType), internalHandle);\n return true;\n };\n\n publicAPI.release = () => {\n if (!internalHandle) {\n return false;\n }\n model.context.bindBuffer(convertType(internalType), null);\n return true;\n };\n\n publicAPI.releaseGraphicsResources = () => {\n if (internalHandle !== null) {\n model.context.bindBuffer(convertType(internalType), null);\n model.context.deleteBuffer(internalHandle);\n internalHandle = null;\n }\n };\n\n publicAPI.setOpenGLRenderWindow = (rw) => {\n if (model.openGLRenderWindow === rw) {\n return;\n }\n publicAPI.releaseGraphicsResources();\n model.openGLRenderWindow = rw;\n model.context = null;\n if (rw) {\n model.context = model.openGLRenderWindow.getContext();\n }\n };\n\n publicAPI.getError = () => error;\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n objectType: ObjectType.ARRAY_BUFFER,\n openGLRenderWindow: null,\n context: null,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Object methods\n macro.obj(publicAPI, model);\n\n macro.get(publicAPI, model, ['openGLRenderWindow']);\n\n vtkOpenGLBufferObject(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend);\n\n// ----------------------------------------------------------------------------\n\nexport default Object.assign({ newInstance, extend }, STATIC, Constants);\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/OpenGL/BufferObject/index.js","import { mat3, mat4, vec3 } from 'gl-matrix';\n\nimport macro from 'vtk.js/Sources/macro';\nimport vtkHardwareSelector from 'vtk.js/Sources/Rendering/OpenGL/HardwareSelector';\nimport vtkHelper from 'vtk.js/Sources/Rendering/OpenGL/Helper';\nimport vtkMapper from 'vtk.js/Sources/Rendering/Core/Mapper';\nimport vtkMath from 'vtk.js/Sources/Common/Core/Math';\nimport vtkOpenGLTexture from 'vtk.js/Sources/Rendering/OpenGL/Texture';\nimport vtkProperty from 'vtk.js/Sources/Rendering/Core/Property';\nimport vtkShaderProgram from 'vtk.js/Sources/Rendering/OpenGL/ShaderProgram';\nimport vtkViewNode from 'vtk.js/Sources/Rendering/SceneGraph/ViewNode';\n\nimport vtkPolyDataVS from 'vtk.js/Sources/Rendering/OpenGL/glsl/vtkPolyDataVS.glsl';\nimport vtkPolyDataFS from 'vtk.js/Sources/Rendering/OpenGL/glsl/vtkPolyDataFS.glsl';\n\n/* eslint-disable no-lonely-if */\n\nconst primTypes = {\n Start: 0,\n Points: 0,\n Lines: 1,\n Tris: 2,\n TriStrips: 3,\n TrisEdges: 4,\n TriStripsEdges: 5,\n End: 6,\n};\n\nconst { Representation, Shading } = vtkProperty;\nconst { ScalarMode } = vtkMapper;\nconst { Filter, Wrap } = vtkOpenGLTexture;\nconst { PassTypes } = vtkHardwareSelector;\nconst { vtkErrorMacro } = macro;\n\nconst StartEvent = { type: 'StartEvent' };\nconst EndEvent = { type: 'EndEvent' };\n\n// ----------------------------------------------------------------------------\n// vtkOpenGLPolyDataMapper methods\n// ----------------------------------------------------------------------------\n\nfunction vtkOpenGLPolyDataMapper(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkOpenGLPolyDataMapper');\n\n publicAPI.buildPass = (prepass) => {\n if (prepass) {\n model.openGLActor = publicAPI.getFirstAncestorOfType('vtkOpenGLActor');\n model.openGLRenderer = model.openGLActor.getFirstAncestorOfType(\n 'vtkOpenGLRenderer'\n );\n model.openGLRenderWindow = model.openGLRenderer.getParent();\n model.openGLCamera = model.openGLRenderer.getViewNodeFor(\n model.openGLRenderer.getRenderable().getActiveCamera()\n );\n }\n };\n\n // Renders myself\n publicAPI.translucentPass = (prepass) => {\n if (prepass) {\n publicAPI.render();\n }\n };\n\n publicAPI.opaqueZBufferPass = (prepass) => {\n if (prepass) {\n model.haveSeenDepthRequest = true;\n model.renderDepth = true;\n publicAPI.render();\n model.renderDepth = false;\n }\n };\n\n publicAPI.opaquePass = (prepass) => {\n if (prepass) {\n publicAPI.render();\n }\n };\n\n publicAPI.render = () => {\n const ctx = model.openGLRenderWindow.getContext();\n if (model.context !== ctx) {\n model.context = ctx;\n for (let i = primTypes.Start; i < primTypes.End; i++) {\n model.primitives[i].setOpenGLRenderWindow(model.openGLRenderWindow);\n }\n }\n const actor = model.openGLActor.getRenderable();\n const ren = model.openGLRenderer.getRenderable();\n publicAPI.renderPiece(ren, actor);\n };\n\n publicAPI.buildShaders = (shaders, ren, actor) => {\n publicAPI.getShaderTemplate(shaders, ren, actor);\n\n // user specified pre replacements\n const openGLSpec = model.renderable.getViewSpecificProperties().OpenGL;\n let shaderReplacements = null;\n if (openGLSpec) {\n shaderReplacements = openGLSpec.ShaderReplacements;\n }\n\n if (shaderReplacements) {\n for (let i = 0; i < shaderReplacements.length; i++) {\n const currReplacement = shaderReplacements[i];\n if (currReplacement.replaceFirst) {\n const shaderType = currReplacement.shaderType;\n const ssrc = shaders[shaderType];\n const substituteRes = vtkShaderProgram.substitute(\n ssrc,\n currReplacement.originalValue,\n currReplacement.replacementValue,\n currReplacement.replaceAll\n );\n shaders[shaderType] = substituteRes.result;\n }\n }\n }\n\n publicAPI.replaceShaderValues(shaders, ren, actor);\n\n // user specified post replacements\n if (shaderReplacements) {\n for (let i = 0; i < shaderReplacements.length; i++) {\n const currReplacement = shaderReplacements[i];\n if (!currReplacement.replaceFirst) {\n const shaderType = currReplacement.shaderType;\n const ssrc = shaders[shaderType];\n const substituteRes = vtkShaderProgram.substitute(\n ssrc,\n currReplacement.originalValue,\n currReplacement.replacementValue,\n currReplacement.replaceAll\n );\n shaders[shaderType] = substituteRes.result;\n }\n }\n }\n };\n\n publicAPI.getShaderTemplate = (shaders, ren, actor) => {\n const openGLSpecProp = model.renderable.getViewSpecificProperties().OpenGL;\n\n let vertexShaderCode = vtkPolyDataVS;\n if (openGLSpecProp) {\n const vertexSpecProp = openGLSpecProp.VertexShaderCode;\n if (vertexSpecProp !== undefined && vertexSpecProp !== '') {\n vertexShaderCode = vertexSpecProp;\n }\n }\n shaders.Vertex = vertexShaderCode;\n\n let fragmentShaderCode = vtkPolyDataFS;\n if (openGLSpecProp) {\n const fragmentSpecProp = openGLSpecProp.FragmentShaderCode;\n if (fragmentSpecProp !== undefined && fragmentSpecProp !== '') {\n fragmentShaderCode = fragmentSpecProp;\n }\n }\n shaders.Fragment = fragmentShaderCode;\n\n let geometryShaderCode = '';\n if (openGLSpecProp) {\n const geometrySpecProp = openGLSpecProp.GeometryShaderCode;\n if (geometrySpecProp !== undefined) {\n geometryShaderCode = geometrySpecProp;\n }\n }\n shaders.Geometry = geometryShaderCode;\n };\n\n publicAPI.replaceShaderColor = (shaders, ren, actor) => {\n let VSSource = shaders.Vertex;\n let GSSource = shaders.Geometry;\n let FSSource = shaders.Fragment;\n\n const lastLightComplexity = model.lastBoundBO.getReferenceByName(\n 'lastLightComplexity'\n );\n\n // create the material/color property declarations, and VS implementation\n // these are always defined\n let colorDec = [\n 'uniform float ambient;',\n 'uniform float diffuse;',\n 'uniform float specular;',\n 'uniform float opacityUniform; // the fragment opacity',\n 'uniform vec3 ambientColorUniform;',\n 'uniform vec3 diffuseColorUniform;',\n ];\n // add more for specular\n if (lastLightComplexity) {\n colorDec = colorDec.concat([\n 'uniform vec3 specularColorUniform;',\n 'uniform float specularPowerUniform;',\n ]);\n }\n\n // now handle the more complex fragment shader implementation\n // the following are always defined variables. We start\n // by assiging a default value from the uniform\n let colorImpl = [\n 'vec3 ambientColor;',\n ' vec3 diffuseColor;',\n ' float opacity;',\n ];\n if (lastLightComplexity) {\n colorImpl = colorImpl.concat([\n ' vec3 specularColor;',\n ' float specularPower;',\n ]);\n }\n colorImpl = colorImpl.concat([\n ' ambientColor = ambientColorUniform;',\n ' diffuseColor = diffuseColorUniform;',\n ' opacity = opacityUniform;',\n ]);\n if (lastLightComplexity) {\n colorImpl = colorImpl.concat([\n ' specularColor = specularColorUniform;',\n ' specularPower = specularPowerUniform;',\n ]);\n }\n\n // add scalar vertex coloring\n if (\n model.lastBoundBO.getCABO().getColorComponents() !== 0 &&\n !model.drawingEdges\n ) {\n colorDec = colorDec.concat(['varying vec4 vertexColorVSOutput;']);\n VSSource = vtkShaderProgram.substitute(VSSource, '//VTK::Color::Dec', [\n 'attribute vec4 scalarColor;',\n 'varying vec4 vertexColorVSOutput;',\n ]).result;\n VSSource = vtkShaderProgram.substitute(VSSource, '//VTK::Color::Impl', [\n 'vertexColorVSOutput = scalarColor;',\n ]).result;\n GSSource = vtkShaderProgram.substitute(GSSource, '//VTK::Color::Dec', [\n 'in vec4 vertexColorVSOutput[];',\n 'out vec4 vertexColorGSOutput;',\n ]).result;\n GSSource = vtkShaderProgram.substitute(GSSource, '//VTK::Color::Impl', [\n 'vertexColorGSOutput = vertexColorVSOutput[i];',\n ]).result;\n }\n\n if (\n model.lastBoundBO.getCABO().getColorComponents() !== 0 &&\n !model.drawingEdges\n ) {\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Color::Impl',\n colorImpl.concat([\n ' diffuseColor = vertexColorVSOutput.rgb;',\n ' ambientColor = vertexColorVSOutput.rgb;',\n ' opacity = opacity*vertexColorVSOutput.a;',\n ])\n ).result;\n } else {\n if (\n model.renderable.getInterpolateScalarsBeforeMapping() &&\n model.renderable.getColorCoordinates() &&\n !model.drawingEdges\n ) {\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Color::Impl',\n colorImpl.concat([\n ' vec4 texColor = texture2D(texture1, tcoordVCVSOutput.st);',\n ' diffuseColor = texColor.rgb;',\n ' ambientColor = texColor.rgb;',\n ' opacity = opacity*texColor.a;',\n ])\n ).result;\n } else {\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Color::Impl',\n colorImpl\n ).result;\n }\n }\n\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Color::Dec',\n colorDec\n ).result;\n\n shaders.Vertex = VSSource;\n shaders.Geometry = GSSource;\n shaders.Fragment = FSSource;\n };\n\n publicAPI.replaceShaderLight = (shaders, ren, actor) => {\n let FSSource = shaders.Fragment;\n\n // check for shadow maps\n const shadowFactor = '';\n\n const lastLightComplexity = model.lastBoundBO.getReferenceByName(\n 'lastLightComplexity'\n );\n\n const lastLightCount = model.lastBoundBO.getReferenceByName(\n 'lastLightCount'\n );\n\n let sstring = [];\n\n switch (lastLightComplexity) {\n case 0: // no lighting or RENDER_VALUES\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Light::Impl',\n [\n ' gl_FragData[0] = vec4(ambientColor * ambient + diffuseColor * diffuse, opacity);',\n ' //VTK::Light::Impl',\n ],\n false\n ).result;\n break;\n\n case 1: // headlight\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Light::Impl',\n [\n ' float df = max(0.0, normalVCVSOutput.z);',\n ' float sf = pow(df, specularPower);',\n ' vec3 diffuseL = df * diffuseColor;',\n ' vec3 specularL = sf * specularColor;',\n ' gl_FragData[0] = vec4(ambientColor * ambient + diffuseL * diffuse + specularL * specular, opacity);',\n ' //VTK::Light::Impl',\n ],\n false\n ).result;\n break;\n\n case 2: // light kit\n for (let lc = 0; lc < lastLightCount; ++lc) {\n sstring = sstring.concat([\n `uniform vec3 lightColor${lc};`,\n `uniform vec3 lightDirectionVC${lc}; // normalized`,\n `uniform vec3 lightHalfAngleVC${lc}; // normalized`,\n ]);\n }\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Light::Dec',\n sstring\n ).result;\n\n sstring = [\n 'vec3 diffuseL = vec3(0,0,0);',\n ' vec3 specularL = vec3(0,0,0);',\n ' float df;',\n ];\n for (let lc = 0; lc < lastLightCount; ++lc) {\n sstring = sstring.concat([\n ` df = max(0.0, dot(normalVCVSOutput, -lightDirectionVC${lc}));`,\n ` diffuseL += ((df${shadowFactor}) * lightColor${lc});`,\n ` if (dot(normalVCVSOutput, lightDirectionVC${lc}) < 0.0)`,\n ' {',\n ` float sf = pow( max(0.0, dot(lightHalfAngleVC${lc},normalVCVSOutput)), specularPower);`,\n ` specularL += ((sf${shadowFactor}) * lightColor${lc});`,\n ' }',\n ]);\n }\n sstring = sstring.concat([\n ' diffuseL = diffuseL * diffuseColor;',\n ' specularL = specularL * specularColor;',\n ' gl_FragData[0] = vec4(ambientColor * ambient + diffuseL * diffuse + specularL * specular, opacity);',\n ' //VTK::Light::Impl',\n ]);\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Light::Impl',\n sstring,\n false\n ).result;\n break;\n\n case 3: // positional\n for (let lc = 0; lc < lastLightCount; ++lc) {\n sstring = sstring.concat([\n `uniform vec3 lightColor${lc};`,\n `uniform vec3 lightDirectionVC${lc}; // normalized`,\n `uniform vec3 lightHalfAngleVC${lc}; // normalized`,\n `uniform vec3 lightPositionVC${lc};`,\n `uniform vec3 lightAttenuation${lc};`,\n `uniform float lightConeAngle${lc};`,\n `uniform float lightExponent${lc};`,\n `uniform int lightPositional${lc};`,\n ]);\n }\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Light::Dec',\n sstring\n ).result;\n\n sstring = [\n 'vec3 diffuseL = vec3(0,0,0);',\n ' vec3 specularL = vec3(0,0,0);',\n ' vec3 vertLightDirectionVC;',\n ' float attenuation;',\n ' float df;',\n ];\n for (let lc = 0; lc < lastLightCount; ++lc) {\n sstring = sstring.concat([\n ' attenuation = 1.0;',\n ` if (lightPositional${lc} == 0)`,\n ' {',\n ` vertLightDirectionVC = lightDirectionVC${lc};`,\n ' }',\n ' else',\n ' {',\n ` vertLightDirectionVC = vertexVC.xyz - lightPositionVC${lc};`,\n ' float distanceVC = length(vertLightDirectionVC);',\n ' vertLightDirectionVC = normalize(vertLightDirectionVC);',\n ' attenuation = 1.0 /',\n ` (lightAttenuation${lc}.x`,\n ` + lightAttenuation${lc}.y * distanceVC`,\n ` + lightAttenuation${lc}.z * distanceVC * distanceVC);`,\n ' // per OpenGL standard cone angle is 90 or less for a spot light',\n ` if (lightConeAngle${lc} <= 90.0)`,\n ' {',\n ` float coneDot = dot(vertLightDirectionVC, lightDirectionVC${lc});`,\n ' // if inside the cone',\n ` if (coneDot >= cos(radians(lightConeAngle${lc})))`,\n ' {',\n ` attenuation = attenuation * pow(coneDot, lightExponent${lc});`,\n ' }',\n ' else',\n ' {',\n ' attenuation = 0.0;',\n ' }',\n ' }',\n ' }',\n ' df = max(0.0, attenuation*dot(normalVCVSOutput, -vertLightDirectionVC));',\n ` diffuseL += ((df${shadowFactor}) * lightColor${lc});`,\n ' if (dot(normalVCVSOutput, vertLightDirectionVC) < 0.0)',\n ' {',\n ` float sf = attenuation*pow( max(0.0, dot(lightHalfAngleVC${lc},normalVCVSOutput)), specularPower);`,\n ` specularL += ((sf${shadowFactor}) * lightColor${lc});`,\n ' }',\n ]);\n }\n sstring = sstring.concat([\n ' diffuseL = diffuseL * diffuseColor;',\n ' specularL = specularL * specularColor;',\n ' gl_FragData[0] = vec4(ambientColor * ambient + diffuseL * diffuse + specularL * specular, opacity);',\n ' //VTK::Light::Impl',\n ]);\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Light::Impl',\n sstring,\n false\n ).result;\n break;\n default:\n vtkErrorMacro('bad light complexity');\n }\n\n shaders.Fragment = FSSource;\n };\n\n publicAPI.replaceShaderNormal = (shaders, ren, actor) => {\n const lastLightComplexity = model.lastBoundBO.getReferenceByName(\n 'lastLightComplexity'\n );\n\n if (lastLightComplexity > 0) {\n let VSSource = shaders.Vertex;\n let GSSource = shaders.Geometry;\n let FSSource = shaders.Fragment;\n\n if (model.lastBoundBO.getCABO().getNormalOffset()) {\n VSSource = vtkShaderProgram.substitute(VSSource, '//VTK::Normal::Dec', [\n 'attribute vec3 normalMC;',\n 'uniform mat3 normalMatrix;',\n 'varying vec3 normalVCVSOutput;',\n ]).result;\n VSSource = vtkShaderProgram.substitute(\n VSSource,\n '//VTK::Normal::Impl',\n ['normalVCVSOutput = normalMatrix * normalMC;']\n ).result;\n GSSource = vtkShaderProgram.substitute(GSSource, '//VTK::Normal::Dec', [\n 'in vec3 normalVCVSOutput[];',\n 'out vec3 normalVCGSOutput;',\n ]).result;\n GSSource = vtkShaderProgram.substitute(\n GSSource,\n '//VTK::Normal::Impl',\n ['normalVCGSOutput = normalVCVSOutput[i];']\n ).result;\n FSSource = vtkShaderProgram.substitute(FSSource, '//VTK::Normal::Dec', [\n 'varying vec3 normalVCVSOutput;',\n ]).result;\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Normal::Impl',\n [\n 'vec3 normalVCVSOutput = normalize(normalVCVSOutput);',\n // if (!gl_FrontFacing) does not work in intel hd4000 mac\n // if (int(gl_FrontFacing) == 0) does not work on mesa\n ' if (gl_FrontFacing == false) { normalVCVSOutput = -normalVCVSOutput; }',\n ]\n ).result;\n } else {\n if (model.haveCellNormals) {\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Normal::Dec',\n ['uniform mat3 normalMatrix;', 'uniform samplerBuffer textureN;']\n ).result;\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Normal::Impl',\n [\n 'vec3 normalVCVSOutput = normalize(normalMatrix *',\n ' texelFetchBuffer(textureN, gl_PrimitiveID + PrimitiveIDOffset).xyz);',\n ' if (gl_FrontFacing == false) { normalVCVSOutput = -normalVCVSOutput; }',\n ]\n ).result;\n } else {\n if (\n publicAPI.getOpenGLMode(\n actor.getProperty().getRepresentation(),\n model.lastBoundBO.getPrimitiveType()\n ) === model.context.LINES\n ) {\n // generate a normal for lines, it will be perpendicular to the line\n // and maximally aligned with the camera view direction\n // no clue if this is the best way to do this.\n // the code below has been optimized a bit so what follows is\n // an explanation of the basic approach. Compute the gradient of the line\n // with respect to x and y, the the larger of the two\n // cross that with the camera view direction. That gives a vector\n // orthogonal to the camera view and the line. Note that the line and the camera\n // view are probably not orthogonal. Which is why when we cross result that with\n // the line gradient again we get a reasonable normal. It will be othogonal to\n // the line (which is a plane but maximally aligned with the camera view.\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::UniformFlow::Impl',\n [\n ' vec3 fdx = vec3(dFdx(vertexVC.x),dFdx(vertexVC.y),dFdx(vertexVC.z));',\n ' vec3 fdy = vec3(dFdy(vertexVC.x),dFdy(vertexVC.y),dFdy(vertexVC.z));',\n ' //VTK::UniformFlow::Impl',\n ] // For further replacements\n ).result;\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Normal::Impl',\n [\n 'vec3 normalVCVSOutput;',\n ' fdx = normalize(fdx);',\n ' fdy = normalize(fdy);',\n ' if (abs(fdx.x) > 0.0)',\n ' { normalVCVSOutput = normalize(cross(vec3(fdx.y, -fdx.x, 0.0), fdx)); }',\n ' else { normalVCVSOutput = normalize(cross(vec3(fdy.y, -fdy.x, 0.0), fdy));}',\n ]\n ).result;\n } else {\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Normal::Dec',\n ['uniform int cameraParallel;']\n ).result;\n\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::UniformFlow::Impl',\n [\n // ' vec3 fdx = vec3(dFdx(vertexVC.x),dFdx(vertexVC.y),dFdx(vertexVC.z));',\n // ' vec3 fdy = vec3(dFdy(vertexVC.x),dFdy(vertexVC.y),dFdy(vertexVC.z));',\n ' vec3 fdx = dFdx(vertexVC.xyz);',\n ' vec3 fdy = dFdy(vertexVC.xyz);',\n ' //VTK::UniformFlow::Impl',\n ] // For further replacements\n ).result;\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Normal::Impl',\n [\n ' fdx = normalize(fdx);',\n ' fdy = normalize(fdy);',\n ' vec3 normalVCVSOutput = normalize(cross(fdx,fdy));',\n // the code below is faster, but does not work on some devices\n // 'vec3 normalVC = normalize(cross(dFdx(vertexVC.xyz), dFdy(vertexVC.xyz)));',\n ' if (cameraParallel == 1 && normalVCVSOutput.z < 0.0) { normalVCVSOutput = -1.0*normalVCVSOutput; }',\n ' if (cameraParallel == 0 && dot(normalVCVSOutput,vertexVC.xyz) > 0.0) { normalVCVSOutput = -1.0*normalVCVSOutput; }',\n ]\n ).result;\n }\n }\n }\n shaders.Vertex = VSSource;\n shaders.Geometry = GSSource;\n shaders.Fragment = FSSource;\n }\n };\n\n publicAPI.replaceShaderPositionVC = (shaders, ren, actor) => {\n let VSSource = shaders.Vertex;\n let GSSource = shaders.Geometry;\n let FSSource = shaders.Fragment;\n\n // for points make sure to add in the point size\n if (\n actor.getProperty().getRepresentation() === Representation.POINTS ||\n model.lastBoundBO.getPrimitiveType() === primTypes.Points\n ) {\n VSSource = vtkShaderProgram.substitute(\n VSSource,\n '//VTK::PositionVC::Impl',\n [\n '//VTK::PositionVC::Impl',\n ` gl_PointSize = ${actor.getProperty().getPointSize()}.0;`,\n ],\n false\n ).result;\n }\n\n // do we need the vertex in the shader in View Coordinates\n const lastLightComplexity = model.lastBoundBO.getReferenceByName(\n 'lastLightComplexity'\n );\n if (lastLightComplexity > 0) {\n VSSource = vtkShaderProgram.substitute(\n VSSource,\n '//VTK::PositionVC::Dec',\n ['varying vec4 vertexVCVSOutput;']\n ).result;\n VSSource = vtkShaderProgram.substitute(\n VSSource,\n '//VTK::PositionVC::Impl',\n [\n 'vertexVCVSOutput = MCVCMatrix * vertexMC;',\n ' gl_Position = MCDCMatrix * vertexMC;',\n ]\n ).result;\n VSSource = vtkShaderProgram.substitute(VSSource, '//VTK::Camera::Dec', [\n 'uniform mat4 MCDCMatrix;',\n 'uniform mat4 MCVCMatrix;',\n ]).result;\n GSSource = vtkShaderProgram.substitute(\n GSSource,\n '//VTK::PositionVC::Dec',\n ['in vec4 vertexVCVSOutput[];', 'out vec4 vertexVCGSOutput;']\n ).result;\n GSSource = vtkShaderProgram.substitute(\n GSSource,\n '//VTK::PositionVC::Impl',\n ['vertexVCGSOutput = vertexVCVSOutput[i];']\n ).result;\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::PositionVC::Dec',\n ['varying vec4 vertexVCVSOutput;']\n ).result;\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::PositionVC::Impl',\n ['vec4 vertexVC = vertexVCVSOutput;']\n ).result;\n } else {\n VSSource = vtkShaderProgram.substitute(VSSource, '//VTK::Camera::Dec', [\n 'uniform mat4 MCDCMatrix;',\n ]).result;\n VSSource = vtkShaderProgram.substitute(\n VSSource,\n '//VTK::PositionVC::Impl',\n [' gl_Position = MCDCMatrix * vertexMC;']\n ).result;\n }\n shaders.Vertex = VSSource;\n shaders.Geometry = GSSource;\n shaders.Fragment = FSSource;\n };\n\n publicAPI.replaceShaderTCoord = (shaders, ren, actor) => {\n if (model.lastBoundBO.getCABO().getTCoordOffset()) {\n let VSSource = shaders.Vertex;\n let GSSource = shaders.Geometry;\n let FSSource = shaders.Fragment;\n\n if (model.drawingEdges) {\n return;\n }\n\n VSSource = vtkShaderProgram.substitute(\n VSSource,\n '//VTK::TCoord::Impl',\n 'tcoordVCVSOutput = tcoordMC;'\n ).result;\n\n // we only handle the first texture by default\n // additional textures are activated and we set the uniform\n // for the texture unit they are assigned to, but you have to\n // add in the shader code to do something with them\n const tus = model.openGLActor.getActiveTextures();\n let tNumComp = 2;\n let tcdim = 2;\n if (tus && tus.length > 0) {\n tNumComp = tus[0].getComponents();\n if (tus[0].getTarget() === model.context.TEXTURE_CUBE_MAP) {\n tcdim = 3;\n }\n }\n if (model.renderable.getColorTextureMap()) {\n tNumComp = model.renderable\n .getColorTextureMap()\n .getPointData()\n .getScalars()\n .getNumberOfComponents();\n tcdim = 2;\n }\n\n if (tcdim === 2) {\n VSSource = vtkShaderProgram.substitute(\n VSSource,\n '//VTK::TCoord::Dec',\n 'attribute vec2 tcoordMC; varying vec2 tcoordVCVSOutput;'\n ).result;\n GSSource = vtkShaderProgram.substitute(GSSource, '//VTK::TCoord::Dec', [\n 'in vec2 tcoordVCVSOutput[];',\n 'out vec2 tcoordVCGSOutput;',\n ]).result;\n GSSource = vtkShaderProgram.substitute(\n GSSource,\n '//VTK::TCoord::Impl',\n 'tcoordVCGSOutput = tcoordVCVSOutput[i];'\n ).result;\n FSSource = vtkShaderProgram.substitute(FSSource, '//VTK::TCoord::Dec', [\n 'varying vec2 tcoordVCVSOutput;',\n 'uniform sampler2D texture1;',\n ]).result;\n switch (tNumComp) {\n case 1:\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::TCoord::Impl',\n [\n 'vec4 tcolor = texture2D(texture1, tcoordVCVSOutput);',\n 'gl_FragData[0] = clamp(gl_FragData[0],0.0,1.0)*',\n ' vec4(tcolor.r,tcolor.r,tcolor.r,1.0);',\n ]\n ).result;\n break;\n case 2:\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::TCoord::Impl',\n [\n 'vec4 tcolor = texture2D(texture1, tcoordVCVSOutput);',\n 'gl_FragData[0] = clamp(gl_FragData[0],0.0,1.0)*',\n ' vec4(tcolor.r,tcolor.r,tcolor.r,tcolor.g);',\n ]\n ).result;\n break;\n default:\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::TCoord::Impl',\n 'gl_FragData[0] = clamp(gl_FragData[0],0.0,1.0)*texture2D(texture1, tcoordVCVSOutput.st);'\n ).result;\n }\n } else {\n VSSource = vtkShaderProgram.substitute(\n VSSource,\n '//VTK::TCoord::Dec',\n 'attribute vec3 tcoordMC; varying vec3 tcoordVCVSOutput;'\n ).result;\n GSSource = vtkShaderProgram.substitute(GSSource, '//VTK::TCoord::Dec', [\n 'in vec3 tcoordVCVSOutput[];',\n 'out vec3 tcoordVCGSOutput;',\n ]).result;\n GSSource = vtkShaderProgram.substitute(\n GSSource,\n '//VTK::TCoord::Impl',\n 'tcoordVCGSOutput = tcoordVCVSOutput[i];'\n ).result;\n FSSource = vtkShaderProgram.substitute(FSSource, '//VTK::TCoord::Dec', [\n 'varying vec3 tcoordVCVSOutput;',\n 'uniform samplerCube texture1;',\n ]).result;\n switch (tNumComp) {\n case 1:\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::TCoord::Impl',\n [\n 'vec4 tcolor = textureCube(texture1, tcoordVCVSOutput);',\n 'gl_FragData[0] = clamp(gl_FragData[0],0.0,1.0)*',\n ' vec4(tcolor.r,tcolor.r,tcolor.r,1.0);',\n ]\n ).result;\n break;\n case 2:\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::TCoord::Impl',\n [\n 'vec4 tcolor = textureCube(texture1, tcoordVCVSOutput);',\n 'gl_FragData[0] = clamp(gl_FragData[0],0.0,1.0)*',\n ' vec4(tcolor.r,tcolor.r,tcolor.r,tcolor.g);',\n ]\n ).result;\n break;\n default:\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::TCoord::Impl',\n 'gl_FragData[0] = clamp(gl_FragData[0],0.0,1.0)*textureCube(texture1, tcoordVCVSOutput);'\n ).result;\n }\n }\n shaders.Vertex = VSSource;\n shaders.Geometry = GSSource;\n shaders.Fragment = FSSource;\n }\n };\n\n publicAPI.replaceShaderClip = (shaders, ren, actor) => {\n let VSSource = shaders.Vertex;\n let FSSource = shaders.Fragment;\n\n if (model.renderable.getNumberOfClippingPlanes()) {\n let numClipPlanes = model.renderable.getNumberOfClippingPlanes();\n if (numClipPlanes > 6) {\n macro.vtkErrorMacro('OpenGL has a limit of 6 clipping planes');\n numClipPlanes = 6;\n }\n VSSource = vtkShaderProgram.substitute(VSSource, '//VTK::Clip::Dec', [\n 'uniform int numClipPlanes;',\n 'uniform vec4 clipPlanes[6];',\n 'varying float clipDistancesVSOutput[6];',\n ]).result;\n\n VSSource = vtkShaderProgram.substitute(VSSource, '//VTK::Clip::Impl', [\n 'for (int planeNum = 0; planeNum < 6; planeNum++)',\n ' {',\n ' if (planeNum >= numClipPlanes)',\n ' {',\n ' break;',\n ' }',\n ' clipDistancesVSOutput[planeNum] = dot(clipPlanes[planeNum], vertexMC);',\n ' }',\n ]).result;\n FSSource = vtkShaderProgram.substitute(FSSource, '//VTK::Clip::Dec', [\n 'uniform int numClipPlanes;',\n 'varying float clipDistancesVSOutput[6];',\n ]).result;\n\n FSSource = vtkShaderProgram.substitute(FSSource, '//VTK::Clip::Impl', [\n 'for (int planeNum = 0; planeNum < 6; planeNum++)',\n ' {',\n ' if (planeNum >= numClipPlanes)',\n ' {',\n ' break;',\n ' }',\n ' if (clipDistancesVSOutput[planeNum] < 0.0) discard;',\n ' }',\n ]).result;\n }\n shaders.Vertex = VSSource;\n shaders.Fragment = FSSource;\n };\n\n publicAPI.getCoincidentParameters = (ren, actor) => {\n // 1. ResolveCoincidentTopology is On and non zero for this primitive\n // type\n let cp = null;\n const prop = actor.getProperty();\n if (\n model.renderable.getResolveCoincidentTopology() ||\n (prop.getEdgeVisibility() &&\n prop.getRepresentation() === Representation.SURFACE)\n ) {\n const primType = model.lastBoundBO.getPrimitiveType();\n if (\n primType === primTypes.Points ||\n prop.getRepresentation() === Representation.POINTS\n ) {\n cp = model.renderable.getCoincidentTopologyPointOffsetParameter();\n } else if (\n primType === primTypes.Lines ||\n prop.getRepresentation() === Representation.WIREFRAME\n ) {\n cp = model.renderable.getCoincidentTopologyLineOffsetParameters();\n } else if (\n primType === primTypes.Tris ||\n primType === primTypes.TriStrips\n ) {\n cp = model.renderable.getCoincidentTopologyPolygonOffsetParameters();\n }\n if (\n primType === primTypes.TrisEdges ||\n primType === primTypes.TriStripsEdges\n ) {\n cp = model.renderable.getCoincidentTopologyPolygonOffsetParameters();\n cp.factor /= 2.0;\n cp.offset /= 2.0;\n }\n }\n\n // hardware picking always offset due to saved zbuffer\n // This gets you above the saved surface depth buffer.\n // vtkHardwareSelector* selector = ren->GetSelector();\n // if (selector &&\n // selector->GetFieldAssociation() == vtkDataObject::FIELD_ASSOCIATION_POINTS)\n // {\n // offset -= 2.0;\n // return;\n // }\n return cp;\n };\n\n publicAPI.replaceShaderCoincidentOffset = (shaders, ren, actor) => {\n const cp = publicAPI.getCoincidentParameters(ren, actor);\n\n // if we need an offset handle it here\n // The value of .000016 is suitable for depth buffers\n // of at least 16 bit depth. We do not query the depth\n // right now because we would need some mechanism to\n // cache the result taking into account FBO changes etc.\n if (cp && (cp.factor !== 0.0 || cp.offset !== 0.0)) {\n let FSSource = shaders.Fragment;\n\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Coincident::Dec',\n ['uniform float cfactor;', 'uniform float coffset;']\n ).result;\n\n if (model.context.getExtension('EXT_frag_depth')) {\n if (cp.factor !== 0.0) {\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::UniformFlow::Impl',\n [\n 'float cscale = length(vec2(dFdx(gl_FragCoord.z),dFdy(gl_FragCoord.z)));',\n '//VTK::UniformFlow::Impl',\n ],\n false\n ).result;\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Depth::Impl',\n 'gl_FragDepthEXT = gl_FragCoord.z + cfactor*cscale + 0.000016*coffset;'\n ).result;\n } else {\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Depth::Impl',\n 'gl_FragDepthEXT = gl_FragCoord.z + 0.000016*coffset;'\n ).result;\n }\n }\n if (model.openGLRenderWindow.getWebgl2()) {\n if (cp.factor !== 0.0) {\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::UniformFlow::Impl',\n [\n 'float cscale = length(vec2(dFdx(gl_FragCoord.z),dFdy(gl_FragCoord.z)));',\n '//VTK::UniformFlow::Impl',\n ],\n false\n ).result;\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Depth::Impl',\n 'gl_FragDepth = gl_FragCoord.z + cfactor*cscale + 0.000016*coffset;'\n ).result;\n } else {\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Depth::Impl',\n 'gl_FragDepth = gl_FragCoord.z + 0.000016*coffset;'\n ).result;\n }\n }\n shaders.Fragment = FSSource;\n }\n };\n\n publicAPI.replaceShaderPicking = (shaders, ren, actor) => {\n if (model.openGLRenderer.getSelector()) {\n let FSSource = shaders.Fragment;\n switch (model.openGLRenderer.getSelector().getCurrentPass()) {\n case PassTypes.ID_LOW24:\n // FSSource = vtkShaderProgram.substitute(FSSource,\n // '//VTK::Picking::Impl', [\n // ' int idx = gl_PrimitiveID + 1 + PrimitiveIDOffset;',\n // ' gl_FragData[0] = vec4(float(idx%256)/255.0, float((idx/256)%256)/255.0, float((idx/65536)%256)/255.0, 1.0);',\n // ], false).result;\n break;\n default:\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Picking::Dec',\n 'uniform vec3 mapperIndex;'\n ).result;\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Picking::Impl',\n ' gl_FragData[0] = vec4(mapperIndex,1.0);'\n ).result;\n }\n shaders.Fragment = FSSource;\n }\n };\n\n publicAPI.replaceShaderValues = (shaders, ren, actor) => {\n publicAPI.replaceShaderColor(shaders, ren, actor);\n publicAPI.replaceShaderNormal(shaders, ren, actor);\n publicAPI.replaceShaderLight(shaders, ren, actor);\n publicAPI.replaceShaderTCoord(shaders, ren, actor);\n publicAPI.replaceShaderPicking(shaders, ren, actor);\n publicAPI.replaceShaderClip(shaders, ren, actor);\n publicAPI.replaceShaderCoincidentOffset(shaders, ren, actor);\n publicAPI.replaceShaderPositionVC(shaders, ren, actor);\n\n if (model.haveSeenDepthRequest) {\n let FSSource = shaders.Fragment;\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::ZBuffer::Dec',\n 'uniform int depthRequest;'\n ).result;\n FSSource = vtkShaderProgram.substitute(FSSource, '//VTK::ZBuffer::Impl', [\n 'if (depthRequest == 1) {',\n 'float iz = floor(gl_FragCoord.z*65535.0 + 0.1);',\n 'float rf = floor(iz/256.0)/255.0;',\n 'float gf = mod(iz,256.0)/255.0;',\n 'gl_FragData[0] = vec4(rf, gf, 0.0, 1.0); }',\n ]).result;\n shaders.Fragment = FSSource;\n }\n };\n\n publicAPI.getNeedToRebuildShaders = (cellBO, ren, actor) => {\n let lightComplexity = 0;\n let numberOfLights = 0;\n\n const primType = cellBO.getPrimitiveType();\n\n let needLighting = true;\n\n const poly = model.currentInput;\n\n let n =\n actor.getProperty().getInterpolation() !== Shading.FLAT\n ? poly.getPointData().getNormals()\n : null;\n if (n === null && poly.getCellData().getNormals()) {\n n = poly.getCellData().getNormals();\n }\n\n const haveNormals = n !== null;\n\n if (\n actor.getProperty().getRepresentation() === Representation.POINTS ||\n primType === primTypes.Points\n ) {\n needLighting = haveNormals;\n }\n\n // do we need lighting?\n if (actor.getProperty().getLighting() && needLighting) {\n // consider the lighting complexity to determine which case applies\n // simple headlight, Light Kit, the whole feature set of VTK\n lightComplexity = 0;\n const lights = ren.getLightsByReference();\n for (let index = 0; index < lights.length; ++index) {\n const light = lights[index];\n const status = light.getSwitch();\n if (status > 0) {\n numberOfLights++;\n if (lightComplexity === 0) {\n lightComplexity = 1;\n }\n }\n\n if (\n lightComplexity === 1 &&\n (numberOfLights > 1 ||\n light.getIntensity() !== 1.0 ||\n !light.lightTypeIsHeadLight())\n ) {\n lightComplexity = 2;\n }\n if (lightComplexity < 3 && light.getPositional()) {\n lightComplexity = 3;\n }\n }\n }\n\n let needRebuild = false;\n const lastLightComplexity = model.lastBoundBO.getReferenceByName(\n 'lastLightComplexity'\n );\n const lastLightCount = model.lastBoundBO.getReferenceByName(\n 'lastLightCount'\n );\n if (\n lastLightComplexity !== lightComplexity ||\n lastLightCount !== numberOfLights\n ) {\n model.lastBoundBO.set({ lastLightComplexity: lightComplexity }, true);\n model.lastBoundBO.set({ lastLightCount: numberOfLights }, true);\n needRebuild = true;\n }\n\n const selector = model.openGLRenderer.getSelector();\n const selectionPass = selector === null ? -1 : selector.getCurrentPass();\n if (\n model.lastBoundBO.getReferenceByName('lastSelectionPass') !==\n selectionPass\n ) {\n model.lastBoundBO.set({ lastSelectionPass: selectionPass }, true);\n needRebuild = true;\n }\n\n // has something changed that would require us to recreate the shader?\n // candidates are\n // property modified (representation interpolation and lighting)\n // input modified\n // light complexity changed\n if (\n model.lastHaveSeenDepthRequest !== model.haveSeenDepthRequest ||\n cellBO.getProgram() === 0 ||\n cellBO.getShaderSourceTime().getMTime() < publicAPI.getMTime() ||\n cellBO.getShaderSourceTime().getMTime() < actor.getMTime() ||\n cellBO.getShaderSourceTime().getMTime() < model.renderable.getMTime() ||\n cellBO.getShaderSourceTime().getMTime() < model.currentInput.getMTime() ||\n needRebuild\n ) {\n model.lastHaveSeenDepthRequest = model.haveSeenDepthRequest;\n return true;\n }\n\n return false;\n };\n\n publicAPI.updateShaders = (cellBO, ren, actor) => {\n model.lastBoundBO = cellBO;\n\n // has something changed that would require us to recreate the shader?\n if (publicAPI.getNeedToRebuildShaders(cellBO, ren, actor)) {\n const shaders = { Vertex: null, Fragment: null, Geometry: null };\n publicAPI.buildShaders(shaders, ren, actor);\n\n // compile and bind the program if needed\n const newShader = model.openGLRenderWindow\n .getShaderCache()\n .readyShaderProgramArray(\n shaders.Vertex,\n shaders.Fragment,\n shaders.Geometry\n );\n\n // if the shader changed reinitialize the VAO\n if (newShader !== cellBO.getProgram()) {\n cellBO.setProgram(newShader);\n // reset the VAO as the shader has changed\n cellBO.getVAO().releaseGraphicsResources();\n }\n\n cellBO.getShaderSourceTime().modified();\n } else {\n model.openGLRenderWindow\n .getShaderCache()\n .readyShaderProgram(cellBO.getProgram());\n }\n\n cellBO.getVAO().bind();\n\n publicAPI.setMapperShaderParameters(cellBO, ren, actor);\n publicAPI.setPropertyShaderParameters(cellBO, ren, actor);\n publicAPI.setCameraShaderParameters(cellBO, ren, actor);\n publicAPI.setLightingShaderParameters(cellBO, ren, actor);\n\n const listCallbacks = model.renderable.getViewSpecificProperties()\n .ShadersCallbacks;\n if (listCallbacks) {\n listCallbacks.forEach((object) => {\n object.callback(object.userData, cellBO, ren, actor);\n });\n }\n };\n\n publicAPI.setMapperShaderParameters = (cellBO, ren, actor) => {\n // Now to update the VAO too, if necessary.\n if (cellBO.getProgram().isUniformUsed('PrimitiveIDOffset')) {\n cellBO\n .getProgram()\n .setUniformi('PrimitiveIDOffset', model.primitiveIDOffset);\n }\n\n if (\n cellBO.getCABO().getElementCount() &&\n (model.VBOBuildTime.getMTime() >\n cellBO.getAttributeUpdateTime().getMTime() ||\n cellBO.getShaderSourceTime().getMTime() >\n cellBO.getAttributeUpdateTime().getMTime())\n ) {\n const lastLightComplexity = model.lastBoundBO.getReferenceByName(\n 'lastLightComplexity'\n );\n\n if (cellBO.getProgram().isAttributeUsed('vertexMC')) {\n if (\n !cellBO\n .getVAO()\n .addAttributeArray(\n cellBO.getProgram(),\n cellBO.getCABO(),\n 'vertexMC',\n cellBO.getCABO().getVertexOffset(),\n cellBO.getCABO().getStride(),\n model.context.FLOAT,\n 3,\n false\n )\n ) {\n vtkErrorMacro('Error setting vertexMC in shader VAO.');\n }\n }\n if (\n cellBO.getProgram().isAttributeUsed('normalMC') &&\n cellBO.getCABO().getNormalOffset() &&\n lastLightComplexity > 0\n ) {\n if (\n !cellBO\n .getVAO()\n .addAttributeArray(\n cellBO.getProgram(),\n cellBO.getCABO(),\n 'normalMC',\n cellBO.getCABO().getNormalOffset(),\n cellBO.getCABO().getStride(),\n model.context.FLOAT,\n 3,\n false\n )\n ) {\n vtkErrorMacro('Error setting normalMC in shader VAO.');\n }\n } else {\n cellBO.getVAO().removeAttributeArray('normalMC');\n }\n if (\n cellBO.getProgram().isAttributeUsed('tcoordMC') &&\n cellBO.getCABO().getTCoordOffset()\n ) {\n if (\n !cellBO\n .getVAO()\n .addAttributeArray(\n cellBO.getProgram(),\n cellBO.getCABO(),\n 'tcoordMC',\n cellBO.getCABO().getTCoordOffset(),\n cellBO.getCABO().getStride(),\n model.context.FLOAT,\n cellBO.getCABO().getTCoordComponents(),\n false\n )\n ) {\n vtkErrorMacro('Error setting tcoordMC in shader VAO.');\n }\n } else {\n cellBO.getVAO().removeAttributeArray('tcoordMC');\n }\n if (\n cellBO.getProgram().isAttributeUsed('scalarColor') &&\n cellBO.getCABO().getColorComponents()\n ) {\n if (\n !cellBO\n .getVAO()\n .addAttributeArray(\n cellBO.getProgram(),\n cellBO.getCABO().getColorBO(),\n 'scalarColor',\n cellBO.getCABO().getColorOffset(),\n cellBO.getCABO().getColorBOStride(),\n model.context.UNSIGNED_BYTE,\n 4,\n true\n )\n ) {\n vtkErrorMacro('Error setting scalarColor in shader VAO.');\n }\n } else {\n cellBO.getVAO().removeAttributeArray('scalarColor');\n }\n\n cellBO.getAttributeUpdateTime().modified();\n }\n\n if (model.renderable.getNumberOfClippingPlanes()) {\n // add all the clipping planes\n let numClipPlanes = model.renderable.getNumberOfClippingPlanes();\n if (numClipPlanes > 6) {\n macro.vtkErrorMacro('OpenGL has a limit of 6 clipping planes');\n numClipPlanes = 6;\n }\n const planeEquations = [];\n for (let i = 0; i < numClipPlanes; i++) {\n const planeEquation = [];\n model.renderable.getClippingPlaneInDataCoords(\n actor.getMatrix(),\n i,\n planeEquation\n );\n\n for (let j = 0; j < 4; j++) {\n planeEquations.push(planeEquation[j]);\n }\n }\n cellBO.getProgram().setUniformi('numClipPlanes', numClipPlanes);\n cellBO.getProgram().setUniform4fv('clipPlanes', 6, planeEquations);\n }\n\n if (\n model.internalColorTexture &&\n cellBO.getProgram().isUniformUsed('texture1')\n ) {\n cellBO\n .getProgram()\n .setUniformi('texture1', model.internalColorTexture.getTextureUnit());\n }\n const tus = model.openGLActor.getActiveTextures();\n if (tus) {\n for (let index = 0; index < tus.length; ++index) {\n const tex = tus[index];\n const texUnit = tex.getTextureUnit();\n const tname = `texture${texUnit + 1}`;\n if (cellBO.getProgram().isUniformUsed(tname)) {\n cellBO.getProgram().setUniformi(tname, texUnit);\n }\n }\n }\n\n // handle depth requests\n if (model.haveSeenDepthRequest) {\n cellBO\n .getProgram()\n .setUniformi('depthRequest', model.renderDepth ? 1 : 0);\n }\n\n // handle coincident\n if (cellBO.getProgram().isUniformUsed('coffset')) {\n const cp = publicAPI.getCoincidentParameters(ren, actor);\n cellBO.getProgram().setUniformf('coffset', cp.offset);\n // cfactor isn't always used when coffset is.\n if (cellBO.getProgram().isUniformUsed('cfactor')) {\n cellBO.getProgram().setUniformf('cfactor', cp.factor);\n }\n }\n\n const selector = model.openGLRenderer.getSelector();\n if (selector && cellBO.getProgram().isUniformUsed('mapperIndex')) {\n if (selector.getCurrentPass() < PassTypes.ID_LOW24) {\n cellBO\n .getProgram()\n .setUniform3fArray('mapperIndex', selector.getPropColorValue());\n }\n }\n };\n\n publicAPI.setLightingShaderParameters = (cellBO, ren, actor) => {\n // for unlit and headlight there are no lighting parameters\n const lastLightComplexity = model.lastBoundBO.getReferenceByName(\n 'lastLightComplexity'\n );\n if (lastLightComplexity < 2) {\n return;\n }\n\n const program = cellBO.getProgram();\n\n // bind some light settings\n let numberOfLights = 0;\n\n const lights = ren.getLightsByReference();\n for (let index = 0; index < lights.length; ++index) {\n const light = lights[index];\n const status = light.getSwitch();\n if (status > 0.0) {\n const dColor = light.getColorByReference();\n const intensity = light.getIntensity();\n model.lightColor[0] = dColor[0] * intensity;\n model.lightColor[1] = dColor[1] * intensity;\n model.lightColor[2] = dColor[2] * intensity;\n // get required info from light\n const ld = light.getDirection();\n model.lightDirection[0] = ld[0];\n model.lightDirection[1] = ld[1];\n model.lightDirection[2] = ld[2];\n model.lightHalfAngle[0] = -model.lightDirection[0];\n model.lightHalfAngle[1] = -model.lightDirection[1];\n model.lightHalfAngle[2] = -model.lightDirection[2] + 1.0;\n vtkMath.normalize(model.lightDirection);\n program.setUniform3fArray(\n `lightColor${numberOfLights}`,\n model.lightColor\n );\n program.setUniform3fArray(\n `lightDirectionVC${numberOfLights}`,\n model.lightDirection\n );\n program.setUniform3fArray(\n `lightHalfAngleVC${numberOfLights}`,\n model.lightHalfAngle\n );\n numberOfLights++;\n }\n }\n\n // we are done unless we have positional lights\n if (lastLightComplexity < 3) {\n return;\n }\n\n // for lightkit case there are some parameters to set\n const cam = ren.getActiveCamera();\n const viewTF = cam.getViewMatrix();\n mat4.transpose(viewTF, viewTF);\n\n numberOfLights = 0;\n\n for (let index = 0; index < lights.length; ++index) {\n const light = lights[index];\n const status = light.getSwitch();\n if (status > 0.0) {\n const lp = light.getTransformedPosition();\n const np = vec3.fromValues(lp[0], lp[1], lp[2]);\n vec3.transformMat4(np, np, viewTF);\n program.setUniform3fArray(\n `lightAttenuation${numberOfLights}`,\n light.getAttenuationValuesByReference()\n );\n program.setUniformi(\n `lightPositional${numberOfLights}`,\n light.getPositional()\n );\n program.setUniformf(\n `lightExponent${numberOfLights}`,\n light.getExponent()\n );\n program.setUniformf(\n `lightConeAngle${numberOfLights}`,\n light.getConeAngle()\n );\n program.setUniform3fArray(`lightPositionVC${numberOfLights}`, [\n np[0],\n np[1],\n np[2],\n ]);\n numberOfLights++;\n }\n }\n };\n\n publicAPI.setCameraShaderParameters = (cellBO, ren, actor) => {\n const program = cellBO.getProgram();\n\n // // [WMVD]C == {world, model, view, display} coordinates\n // // E.g., WCDC == world to display coordinate transformation\n const keyMats = model.openGLCamera.getKeyMatrices(ren);\n const cam = ren.getActiveCamera();\n\n const camm = model.openGLCamera.getKeyMatrixTime().getMTime();\n const progm = program.getLastCameraMTime();\n\n if (progm !== camm) {\n if (actor.getIsIdentity()) {\n program.setUniformMatrix('MCDCMatrix', keyMats.wcdc);\n if (program.isUniformUsed('MCVCMatrix')) {\n program.setUniformMatrix('MCVCMatrix', keyMats.wcvc);\n }\n if (program.isUniformUsed('normalMatrix')) {\n program.setUniformMatrix3x3('normalMatrix', keyMats.normalMatrix);\n }\n }\n if (program.isUniformUsed('cameraParallel')) {\n program.setUniformi('cameraParallel', cam.getParallelProjection());\n }\n program.setLastCameraMTime(camm);\n }\n\n if (!actor.getIsIdentity()) {\n const actMats = model.openGLActor.getKeyMatrices();\n if (program.isUniformUsed('normalMatrix')) {\n const anorms = mat3.create();\n mat3.multiply(anorms, keyMats.normalMatrix, actMats.normalMatrix);\n program.setUniformMatrix3x3('normalMatrix', anorms);\n }\n mat4.identity(model.tmpMat4);\n mat4.multiply(model.tmpMat4, keyMats.wcdc, actMats.mcwc);\n program.setUniformMatrix('MCDCMatrix', model.tmpMat4);\n if (program.isUniformUsed('MCVCMatrix')) {\n mat4.multiply(model.tmpMat4, keyMats.wcvc, actMats.mcwc);\n program.setUniformMatrix('MCVCMatrix', model.tmpMat4);\n }\n // reset the cam mtime as actor modified the shader values\n program.setLastCameraMTime(0);\n }\n };\n\n publicAPI.setPropertyShaderParameters = (cellBO, ren, actor) => {\n const program = cellBO.getProgram();\n\n const ppty = actor.getProperty();\n\n const opacity = ppty.getOpacity();\n program.setUniformf('opacityUniform', opacity);\n\n const aColor = model.drawingEdges\n ? ppty.getEdgeColorByReference()\n : ppty.getAmbientColorByReference();\n program.setUniform3fArray('ambientColorUniform', aColor);\n program.setUniformf('ambient', ppty.getAmbient());\n\n const dColor = model.drawingEdges\n ? ppty.getEdgeColorByReference()\n : ppty.getDiffuseColorByReference();\n program.setUniform3fArray('diffuseColorUniform', dColor);\n program.setUniformf('diffuse', ppty.getDiffuse());\n\n // we are done unless we have lighting\n const lastLightComplexity = model.lastBoundBO.getReferenceByName(\n 'lastLightComplexity'\n );\n if (lastLightComplexity < 1) {\n return;\n }\n const sColor = ppty.getSpecularColorByReference();\n program.setUniform3fArray('specularColorUniform', sColor);\n program.setUniformf('specular', ppty.getSpecular());\n program.setUniformf('specularPowerUniform', ppty.getSpecularPower());\n\n // // now set the backface properties if we have them\n // if (actor.getBackfaceProperty() && !model.DrawingEdges)\n // {\n // ppty = actor.getBackfaceProperty();\n\n // let opacity = static_cast<float>(ppty.getOpacity());\n // double *aColor = ppty.getAmbientColor();\n // double aIntensity = ppty.getAmbient(); // ignoring renderer ambient\n // let ambientColor[3] = {static_cast<float>(aColor[0] * aIntensity),\n // static_cast<float>(aColor[1] * aIntensity),\n // static_cast<float>(aColor[2] * aIntensity)};\n // double *dColor = ppty.getDiffuseColor();\n // double dIntensity = ppty.getDiffuse();\n // let diffuseColor[3] = {static_cast<float>(dColor[0] * dIntensity),\n // static_cast<float>(dColor[1] * dIntensity),\n // static_cast<float>(dColor[2] * dIntensity)};\n // double *sColor = ppty.getSpecularColor();\n // double sIntensity = ppty.getSpecular();\n // let specularColor[3] = {static_cast<float>(sColor[0] * sIntensity),\n // static_cast<float>(sColor[1] * sIntensity),\n // static_cast<float>(sColor[2] * sIntensity)};\n // double specularPower = ppty.getSpecularPower();\n\n // program.SetUniformf('opacityUniformBF', opacity);\n // program.SetUniform3f('ambientColorUniformBF', ambientColor);\n // program.SetUniform3f('diffuseColorUniformBF', diffuseColor);\n // // we are done unless we have lighting\n // if (model.LastLightComplexity[&cellBO] < 1)\n // {\n // return;\n // }\n // program.SetUniform3f('specularColorUniformBF', specularColor);\n // program.SetUniformf('specularPowerUniformBF', specularPower);\n // }\n };\n\n publicAPI.renderPieceStart = (ren, actor) => {\n model.primitiveIDOffset = 0;\n\n if (model.openGLRenderer.getSelector()) {\n switch (model.openGLRenderer.getSelector().getCurrentPass()) {\n default:\n model.openGLRenderer.getSelector().renderProp(actor);\n }\n }\n\n // make sure the BOs are up to date\n publicAPI.updateBufferObjects(ren, actor);\n\n // If we are coloring by texture, then load the texture map.\n // Use Map as indicator, because texture hangs around.\n if (model.renderable.getColorTextureMap()) {\n model.internalColorTexture.activate();\n }\n\n // Bind the OpenGL, this is shared between the different primitive/cell types.\n model.lastBoundBO = null;\n };\n\n publicAPI.renderPieceDraw = (ren, actor) => {\n const representation = actor.getProperty().getRepresentation();\n\n const gl = model.context;\n\n const drawSurfaceWithEdges =\n actor.getProperty().getEdgeVisibility() &&\n representation === Representation.SURFACE;\n\n // for every primitive type\n for (let i = primTypes.Start; i < primTypes.End; i++) {\n // if there are entries\n const cabo = model.primitives[i].getCABO();\n if (cabo.getElementCount()) {\n // are we drawing edges\n model.drawingEdges =\n drawSurfaceWithEdges &&\n (i === primTypes.TrisEdges || i === primTypes.TriStripsEdges);\n publicAPI.updateShaders(model.primitives[i], ren, actor);\n const mode = publicAPI.getOpenGLMode(representation, i);\n gl.drawArrays(mode, 0, cabo.getElementCount());\n\n const stride =\n (mode === gl.POINTS ? 1 : 0) || (mode === gl.LINES ? 2 : 3);\n model.primitiveIDOffset += cabo.getElementCount() / stride;\n }\n }\n };\n\n publicAPI.getOpenGLMode = (rep, type) => {\n if (rep === Representation.POINTS || type === primTypes.Points) {\n return model.context.POINTS;\n }\n if (\n rep === Representation.WIREFRAME ||\n type === primTypes.Lines ||\n type === primTypes.TrisEdges ||\n type === primTypes.TriStripsEdges\n ) {\n return model.context.LINES;\n }\n return model.context.TRIANGLES;\n };\n\n publicAPI.renderPieceFinish = (ren, actor) => {\n if (model.LastBoundBO) {\n model.LastBoundBO.getVAO().release();\n }\n if (model.renderable.getColorTextureMap()) {\n model.internalColorTexture.deactivate();\n }\n };\n\n publicAPI.renderPiece = (ren, actor) => {\n // Make sure that we have been properly initialized.\n // if (ren.getRenderWindow().checkAbortStatus()) {\n // return;\n // }\n\n publicAPI.invokeEvent(StartEvent);\n if (!model.renderable.getStatic()) {\n model.renderable.update();\n }\n model.currentInput = model.renderable.getInputData();\n publicAPI.invokeEvent(EndEvent);\n\n if (!model.currentInput) {\n vtkErrorMacro('No input!');\n return;\n }\n\n // if there are no points then we are done\n if (\n !model.currentInput.getPoints ||\n !model.currentInput.getPoints().getNumberOfValues()\n ) {\n return;\n }\n\n // apply faceCulling\n const gl = model.context;\n const backfaceCulling = actor.getProperty().getBackfaceCulling();\n const frontfaceCulling = actor.getProperty().getFrontfaceCulling();\n if (!backfaceCulling && !frontfaceCulling) {\n model.openGLRenderWindow.disableCullFace();\n } else if (frontfaceCulling) {\n model.openGLRenderWindow.enableCullFace();\n gl.cullFace(gl.FRONT);\n } else {\n model.openGLRenderWindow.enableCullFace();\n gl.cullFace(gl.BACK);\n }\n\n publicAPI.renderPieceStart(ren, actor);\n publicAPI.renderPieceDraw(ren, actor);\n publicAPI.renderPieceFinish(ren, actor);\n };\n\n publicAPI.computeBounds = (ren, actor) => {\n if (!publicAPI.getInput()) {\n vtkMath.uninitializeBounds(model.bounds);\n return;\n }\n model.bounds = publicAPI.getInput().getBounds();\n };\n\n publicAPI.updateBufferObjects = (ren, actor) => {\n // Rebuild buffers if needed\n if (publicAPI.getNeedToRebuildBufferObjects(ren, actor)) {\n publicAPI.buildBufferObjects(ren, actor);\n }\n };\n\n publicAPI.getNeedToRebuildBufferObjects = (ren, actor) => {\n // first do a coarse check\n // Note that the actor's mtime includes it's properties mtime\n const vmtime = model.VBOBuildTime.getMTime();\n if (\n vmtime < publicAPI.getMTime() ||\n vmtime < model.renderable.getMTime() ||\n vmtime < actor.getMTime() ||\n vmtime < model.currentInput.getMTime()\n ) {\n return true;\n }\n return false;\n };\n\n publicAPI.buildBufferObjects = (ren, actor) => {\n const poly = model.currentInput;\n\n if (poly === null) {\n return;\n }\n\n model.renderable.mapScalars(poly, 1.0);\n const c = model.renderable.getColorMapColors();\n\n model.haveCellScalars = false;\n const scalarMode = model.renderable.getScalarMode();\n if (model.renderable.getScalarVisibility()) {\n // We must figure out how the scalars should be mapped to the polydata.\n if (\n (scalarMode === ScalarMode.USE_CELL_DATA ||\n scalarMode === ScalarMode.USE_CELL_FIELD_DATA ||\n scalarMode === ScalarMode.USE_FIELD_DATA ||\n !poly.getPointData().getScalars()) &&\n scalarMode !== ScalarMode.USE_POINT_FIELD_DATA &&\n c\n ) {\n model.haveCellScalars = true;\n }\n }\n\n // Do we have normals?\n let n =\n actor.getProperty().getInterpolation() !== Shading.FLAT\n ? poly.getPointData().getNormals()\n : null;\n if (n === null && poly.getCellData().getNormals()) {\n model.haveCellNormals = true;\n n = poly.getCellData().getNormals();\n }\n\n // rebuild the VBO if the data has changed we create a string for the VBO what\n // can change the VBO? points normals tcoords colors so what can change those?\n // the input data is clearly one as it can change all four items tcoords may\n // haveTextures or not colors may change based on quite a few mapping\n // parameters in the mapper\n\n const representation = actor.getProperty().getRepresentation();\n\n let tcoords = poly.getPointData().getTCoords();\n if (!model.openGLActor.getActiveTextures()) {\n tcoords = null;\n }\n\n // handle color mapping via texture\n if (model.renderable.getColorCoordinates()) {\n tcoords = model.renderable.getColorCoordinates();\n if (!model.internalColorTexture) {\n model.internalColorTexture = vtkOpenGLTexture.newInstance();\n }\n const tex = model.internalColorTexture;\n // the following 4 lines allow for NPOT textures\n tex.setMinificationFilter(Filter.NEAREST);\n tex.setMagnificationFilter(Filter.NEAREST);\n tex.setWrapS(Wrap.CLAMP_TO_EDGE);\n tex.setWrapT(Wrap.CLAMP_TO_EDGE);\n tex.setOpenGLRenderWindow(model.openGLRenderWindow);\n\n const input = model.renderable.getColorTextureMap();\n const ext = input.getExtent();\n const inScalars = input.getPointData().getScalars();\n tex.create2DFromRaw(\n ext[1] - ext[0] + 1,\n ext[3] - ext[2] + 1,\n inScalars.getNumberOfComponents(),\n inScalars.getDataType(),\n inScalars.getData()\n );\n tex.activate();\n tex.sendParameters();\n tex.deactivate();\n }\n\n const toString =\n `${poly.getMTime()}A${representation}B${poly.getMTime()}` +\n `C${n ? n.getMTime() : 1}D${c ? c.getMTime() : 1}` +\n `E${actor.getProperty().getEdgeVisibility()}` +\n `F${tcoords ? tcoords.getMTime() : 1}`;\n if (model.VBOBuildString !== toString) {\n // Build the VBOs\n const points = poly.getPoints();\n const options = {\n points,\n normals: n,\n tcoords,\n colors: c,\n cellOffset: 0,\n haveCellScalars: model.haveCellScalars,\n haveCellNormals: model.haveCellNormals,\n };\n options.cellOffset += model.primitives[primTypes.Points]\n .getCABO()\n .createVBO(poly.getVerts(), 'verts', representation, options);\n options.cellOffset += model.primitives[primTypes.Lines]\n .getCABO()\n .createVBO(poly.getLines(), 'lines', representation, options);\n options.cellOffset += model.primitives[primTypes.Tris]\n .getCABO()\n .createVBO(poly.getPolys(), 'polys', representation, options);\n options.cellOffset += model.primitives[primTypes.TriStrips]\n .getCABO()\n .createVBO(poly.getStrips(), 'strips', representation, options);\n\n const drawSurfaceWithEdges =\n actor.getProperty().getEdgeVisibility() &&\n representation === Representation.SURFACE;\n\n // if we have edge visibility build the edge VBOs\n if (drawSurfaceWithEdges) {\n model.primitives[primTypes.TrisEdges]\n .getCABO()\n .createVBO(poly.getPolys(), 'polys', Representation.WIREFRAME, {\n points,\n normals: n,\n tcoords: null,\n colors: null,\n cellOffset: 0,\n haveCellScalars: false,\n haveCellNormals: false,\n });\n model.primitives[primTypes.TriStripsEdges]\n .getCABO()\n .createVBO(poly.getStrips(), 'strips', Representation.WIREFRAME, {\n points,\n normals: n,\n tcoords: null,\n colors: null,\n cellOffset: 0,\n haveCellScalars: false,\n haveCellNormals: false,\n });\n } else {\n // otherwise free them\n model.primitives[primTypes.TrisEdges].releaseGraphicsResources(\n model.openGLRenderWindow\n );\n model.primitives[primTypes.TriStripsEdges].releaseGraphicsResources(\n model.openGLRenderWindow\n );\n }\n\n model.VBOBuildTime.modified();\n model.VBOBuildString = toString;\n }\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n context: null,\n VBOBuildTime: 0,\n VBOBuildString: null,\n primitives: null,\n primTypes: null,\n shaderRebuildString: null,\n tmpMat4: null,\n ambientColor: [], // used internally\n diffuseColor: [], // used internally\n specularColor: [], // used internally\n lightColor: [], // used internally\n lightHalfAngle: [], // used internally\n lightDirection: [], // used internally\n lastHaveSeenDepthRequest: false,\n haveSeenDepthRequest: false,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkViewNode.extend(publicAPI, model, initialValues);\n\n model.primitives = [];\n model.primTypes = primTypes;\n\n model.tmpMat4 = mat4.create();\n\n for (let i = primTypes.Start; i < primTypes.End; i++) {\n model.primitives[i] = vtkHelper.newInstance();\n model.primitives[i].setPrimitiveType(i);\n model.primitives[i].set(\n { lastLightComplexity: 0, lastLightCount: 0, lastSelectionPass: -1 },\n true\n );\n }\n\n // Build VTK API\n macro.setGet(publicAPI, model, ['context']);\n\n model.VBOBuildTime = {};\n macro.obj(model.VBOBuildTime, { mtime: 0 });\n\n // Object methods\n vtkOpenGLPolyDataMapper(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkOpenGLPolyDataMapper');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/OpenGL/PolyDataMapper/index.js","import macro from 'vtk.js/Sources/macro';\nimport vtkCellArrayBufferObject from 'vtk.js/Sources/Rendering/OpenGL/CellArrayBufferObject';\nimport vtkShaderProgram from 'vtk.js/Sources/Rendering/OpenGL/ShaderProgram';\nimport vtkVertexArrayObject from 'vtk.js/Sources/Rendering/OpenGL/VertexArrayObject';\n\n// ----------------------------------------------------------------------------\n// vtkOpenGLHelper methods\n// ----------------------------------------------------------------------------\n\nfunction vtkOpenGLHelper(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkOpenGLHelper');\n\n publicAPI.setOpenGLRenderWindow = (win) => {\n model.program.setContext(win.getContext());\n model.VAO.setOpenGLRenderWindow(win);\n model.CABO.setOpenGLRenderWindow(win);\n };\n\n publicAPI.releaseGraphicsResources = (oglwin) => {\n model.VAO.releaseGraphicsResources();\n model.CABO.releaseGraphicsResources();\n model.CABO.setElementCount(0);\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n program: null,\n shaderSourceTime: null,\n VAO: null,\n attributeUpdateTime: null,\n CABO: null,\n primitiveType: 0,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Build VTK API\n macro.obj(publicAPI, model);\n\n model.shaderSourceTime = {};\n macro.obj(model.shaderSourceTime);\n\n model.attributeUpdateTime = {};\n macro.obj(model.attributeUpdateTime);\n\n macro.setGet(publicAPI, model, [\n 'program',\n 'shaderSourceTime',\n 'VAO',\n 'attributeUpdateTime',\n 'CABO',\n 'primitiveType',\n ]);\n\n model.program = vtkShaderProgram.newInstance();\n model.VAO = vtkVertexArrayObject.newInstance();\n model.CABO = vtkCellArrayBufferObject.newInstance();\n\n // Object methods\n vtkOpenGLHelper(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend);\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/OpenGL/Helper/index.js","module.exports = \"//VTK::System::Dec\\n\\n/*=========================================================================\\n\\n Program: Visualization Toolkit\\n Module: vtkPolyDataFS.glsl\\n\\n Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen\\n All rights reserved.\\n See Copyright.txt or http://www.kitware.com/Copyright.htm for details.\\n\\n This software is distributed WITHOUT ANY WARRANTY; without even\\n the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR\\n PURPOSE. See the above copyright notice for more information.\\n\\n=========================================================================*/\\n// Template for the polydata mappers fragment shader\\n\\nuniform int PrimitiveIDOffset;\\n\\n// VC position of this fragment\\n//VTK::PositionVC::Dec\\n\\n// optional color passed in from the vertex shader, vertexColor\\n//VTK::Color::Dec\\n\\n// optional surface normal declaration\\n//VTK::Normal::Dec\\n\\n// extra lighting parameters\\n//VTK::Light::Dec\\n\\n// Texture coordinates\\n//VTK::TCoord::Dec\\n\\n// picking support\\n//VTK::Picking::Dec\\n\\n// Depth Peeling Support\\n//VTK::DepthPeeling::Dec\\n\\n// clipping plane vars\\n//VTK::Clip::Dec\\n\\n// the output of this shader\\n//VTK::Output::Dec\\n\\n// Apple Bug\\n//VTK::PrimID::Dec\\n\\n// handle coincident offsets\\n//VTK::Coincident::Dec\\n\\n//VTK::ZBuffer::Dec\\n\\nvoid main()\\n{\\n // VC position of this fragment. This should not branch/return/discard.\\n //VTK::PositionVC::Impl\\n\\n // Place any calls that require uniform flow (e.g. dFdx) here.\\n //VTK::UniformFlow::Impl\\n\\n // Set gl_FragDepth here (gl_FragCoord.z by default)\\n //VTK::Depth::Impl\\n\\n // Early depth peeling abort:\\n //VTK::DepthPeeling::PreColor\\n\\n // Apple Bug\\n //VTK::PrimID::Impl\\n\\n //VTK::Clip::Impl\\n\\n //VTK::Color::Impl\\n\\n // Generate the normal if we are not passed in one\\n //VTK::Normal::Impl\\n\\n //VTK::Light::Impl\\n\\n //VTK::TCoord::Impl\\n\\n if (gl_FragData[0].a <= 0.0)\\n {\\n discard;\\n }\\n\\n //VTK::DepthPeeling::Impl\\n\\n //VTK::Picking::Impl\\n\\n // handle coincident offsets\\n //VTK::Coincident::Impl\\n\\n //VTK::ZBuffer::Impl\\n}\\n\"\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/OpenGL/glsl/vtkPolyDataFS.glsl","// Top level file is just a mixin of submodules & constants\n'use strict';\n\nvar assign = require('./lib/utils/common').assign;\n\nvar deflate = require('./lib/deflate');\nvar inflate = require('./lib/inflate');\nvar constants = require('./lib/zlib/constants');\n\nvar pako = {};\n\nassign(pako, deflate, inflate, constants);\n\nmodule.exports = pako;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/pako/index.js\n// module id = 108\n// module chunks = 1","'use strict';\n\nif (!process.version ||\n process.version.indexOf('v0.') === 0 ||\n process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\n module.exports = nextTick;\n} else {\n module.exports = process.nextTick;\n}\n\nfunction nextTick(fn, arg1, arg2, arg3) {\n if (typeof fn !== 'function') {\n throw new TypeError('\"callback\" argument must be a function');\n }\n var len = arguments.length;\n var args, i;\n switch (len) {\n case 0:\n case 1:\n return process.nextTick(fn);\n case 2:\n return process.nextTick(function afterTickOne() {\n fn.call(null, arg1);\n });\n case 3:\n return process.nextTick(function afterTickTwo() {\n fn.call(null, arg1, arg2);\n });\n case 4:\n return process.nextTick(function afterTickThree() {\n fn.call(null, arg1, arg2, arg3);\n });\n default:\n args = new Array(len - 1);\n i = 0;\n while (i < args.length) {\n args[i++] = arguments[i];\n }\n return process.nextTick(function afterTick() {\n fn.apply(null, args);\n });\n }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/process-nextick-args/index.js\n// module id = 109\n// module chunks = 1","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/safe-buffer/index.js\n// module id = 110\n// module chunks = 1","'use strict';\n\nmodule.exports = {\n /**\n * True if this is running in Nodejs, will be undefined in a browser.\n * In a browser, browserify won't include this file and the whole module\n * will be resolved an empty object.\n */\n isNode : typeof Buffer !== \"undefined\",\n /**\n * Create a new nodejs Buffer.\n * @param {Object} data the data to pass to the constructor.\n * @param {String} encoding the encoding to use.\n * @return {Buffer} a new Buffer.\n */\n newBuffer : function(data, encoding){\n return new Buffer(data, encoding);\n },\n /**\n * Find out if an object is a Buffer.\n * @param {Object} b the object to test.\n * @return {Boolean} true if the object is a Buffer, false otherwise.\n */\n isBuffer : function(b){\n return Buffer.isBuffer(b);\n },\n\n isStream : function (obj) {\n return obj &&\n typeof obj.on === \"function\" &&\n typeof obj.pause === \"function\" &&\n typeof obj.resume === \"function\";\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/lib/nodejsUtils.js\n// module id = 111\n// module chunks = 1","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();\nif(typeof __g == 'number')__g = global; // eslint-disable-line no-undef\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/node_modules/core-js/library/modules/_global.js\n// module id = 112\n// module chunks = 1","import * as wait from 'helpers/wait';\nimport * as error from 'helpers/error';\n\nexport function request(uri, method, data, options) {\n var request = {\n url: uri,\n type: method,\n contentType: 'application/json',\n accepts: 'application/json',\n cache: false,\n dataType: 'json',\n data: JSON.stringify(data),\n };\n\n var d = { cb: [], error_cb: [], fd: false, fe: false, d: null };\n console.log(request);\n\n if (options) {\n if (options.cache) request.cache = options.cache;\n }\n\n function success(data) {\n wait.hide();\n if (data.error !== undefined && data.error != 'none') {\n error.show(data.error);\n return;\n }\n for (var i in d.cb) {\n d.cb[i](data);\n }\n d.d = data;\n }\n\n function failure() {\n d.fe = true;\n console.log('Got a failure');\n wait.hide();\n console.log(d.error_cb);\n for (var i in d.error_cb) {\n d.error_cb[i]();\n }\n }\n\n request.error = failure;\n\n d.done = function(cb) {\n if (d.fd) {\n cb(d.d);\n return;\n }\n d.cb.push(cb);\n };\n\n d.error = function(cb) {\n if (d.fe) {\n cb();\n }\n d.error_cb.push(cb);\n };\n\n wait.show();\n let req = $.ajax(request);\n\n req.done(success);\n req.fail(failure);\n\n return d;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./external_modules/helpers/ajax.js","import sprintf from 'sprintf';\nimport 'bootstrap';\n\nimport * as multi from 'helpers/multimodal';\n\nrequire.resolve('./helper.less');\n\nvar code = [\n '<div class=\"modal\" role=\"dialog\" data-backdrop=\"static\" data-keyboard=\"false\" id=\"pleaseWaitDialog\">',\n '<div class=\"modal-dialog\" role=\"document\"><div class=\"modal-content\">',\n '<div class=\"modal-header\">',\n '<h1>%(process_msg)s</h1>',\n '</div>',\n '<div class=\"modal-body\">',\n '<div class=\"progress\">',\n '<div class=\"progress-bar progress-bar-striped active\" style=\"width: 100%%;\"></div>',\n '</div>',\n '</div>',\n '<div class=\"modal-footer\"></div>',\n '</div>',\n '</div></div>',\n].join('');\n\ncode = sprintf(code, { process_msg: 'Processing...' });\nvar pleaseWaitDiv = $(code);\nvar pleaseWaitDivInit = $(code);\nvar recurse = 0;\n\nfunction show(immediate) {\n if (recurse > 0) {\n recurse++;\n return;\n }\n recurse = 1;\n multi.ensure(\n pleaseWaitDiv,\n function() {\n pleaseWaitDiv.modal();\n },\n immediate,\n function() {\n pleaseWaitDiv.modal('hide');\n recurse--;\n }\n );\n}\n\nfunction hide(force) {\n multi.end(pleaseWaitDiv);\n}\n\nfunction showInit(immediate) {\n multi.ensure(\n pleaseWaitDivInit,\n function() {\n pleaseWaitDivInit.modal();\n },\n immediate\n );\n}\n\nfunction hideInit(force) {\n multi.end(pleaseWaitDivInit);\n}\n\nexport { show, hide, showInit, hideInit };\n\n\n\n// WEBPACK FOOTER //\n// ./external_modules/helpers/wait.js","var scope = (typeof global !== \"undefined\" && global) ||\n (typeof self !== \"undefined\" && self) ||\n window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\nrequire(\"setimmediate\");\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n (typeof global !== \"undefined\" && global.setImmediate) ||\n (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n (typeof global !== \"undefined\" && global.clearImmediate) ||\n (this && this.clearImmediate);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/timers-browserify/main.js\n// module id = 165\n// module chunks = 1","import { vec3, mat4 } from 'gl-matrix';\nimport macro from 'vtk.js/Sources/macro';\nimport vtkProp3D from 'vtk.js/Sources/Rendering/Core/Prop3D';\nimport vtkProperty from 'vtk.js/Sources/Rendering/Core/Property';\n\nconst { vtkDebugMacro } = macro;\n\n// ----------------------------------------------------------------------------\n// vtkActor methods\n// ----------------------------------------------------------------------------\n\nfunction vtkActor(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkActor');\n\n // Capture 'parentClass' api for internal use\n const superClass = Object.assign({}, publicAPI);\n\n publicAPI.getActors = () => publicAPI;\n\n publicAPI.getIsOpaque = () => {\n if (model.forceOpaque) {\n return true;\n }\n if (model.forceTranslucent) {\n return false;\n }\n // make sure we have a property\n if (!model.property) {\n // force creation of a property\n publicAPI.getProperty();\n }\n\n let isOpaque = model.property.getOpacity() >= 1.0;\n\n // are we using an opaque texture, if any?\n isOpaque = isOpaque && (!model.texture || !model.texture.isTranslucent());\n\n // are we using an opaque scalar array, if any?\n isOpaque = isOpaque && (!model.mapper || model.mapper.getIsOpaque());\n\n return isOpaque;\n };\n\n publicAPI.hasTranslucentPolygonalGeometry = () => {\n if (model.mapper === null) {\n return false;\n }\n // make sure we have a property\n if (model.property === null) {\n // force creation of a property\n publicAPI.setProperty(publicAPI.makeProperty());\n }\n\n // is this actor opaque ?\n return !publicAPI.getIsOpaque();\n };\n\n publicAPI.makeProperty = vtkProperty.newInstance;\n\n publicAPI.getProperty = () => {\n if (model.property === null) {\n model.property = publicAPI.makeProperty();\n }\n return model.property;\n };\n\n publicAPI.getBounds = () => {\n if (model.mapper === null) {\n return model.bounds;\n }\n\n // Check for the special case when the mapper's bounds are unknown\n const bds = model.mapper.getBounds();\n if (!bds || bds.length !== 6) {\n return bds;\n }\n\n // Check for the special case when the actor is empty.\n if (bds[0] > bds[1]) {\n model.mapperBounds = bds.concat(); // copy the mapper's bounds\n model.bounds = [1, -1, 1, -1, 1, -1];\n model.boundsMTime.modified();\n return bds;\n }\n\n // Check if we have cached values for these bounds - we cache the\n // values returned by model.mapper.getBounds() and we store the time\n // of caching. If the values returned this time are different, or\n // the modified time of this class is newer than the cached time,\n // then we need to rebuild.\n if (\n !model.mapperBounds ||\n bds[0] !== model.mapperBounds[0] ||\n bds[1] !== model.mapperBounds[1] ||\n bds[2] !== model.mapperBounds[2] ||\n bds[3] !== model.mapperBounds[3] ||\n bds[4] !== model.mapperBounds[4] ||\n bds[5] !== model.mapperBounds[5] ||\n publicAPI.getMTime() > model.boundsMTime.getMTime()\n ) {\n vtkDebugMacro('Recomputing bounds...');\n model.mapperBounds = bds.concat(); // copy the mapper's bounds\n const bbox = [\n vec3.fromValues(bds[1], bds[3], bds[5]),\n vec3.fromValues(bds[1], bds[2], bds[5]),\n vec3.fromValues(bds[0], bds[2], bds[5]),\n vec3.fromValues(bds[0], bds[3], bds[5]),\n vec3.fromValues(bds[1], bds[3], bds[4]),\n vec3.fromValues(bds[1], bds[2], bds[4]),\n vec3.fromValues(bds[0], bds[2], bds[4]),\n vec3.fromValues(bds[0], bds[3], bds[4]),\n ];\n\n publicAPI.computeMatrix();\n const tmp4 = mat4.create();\n mat4.transpose(tmp4, model.matrix);\n bbox.forEach((pt) => vec3.transformMat4(pt, pt, tmp4));\n\n /* eslint-disable no-multi-assign */\n model.bounds[0] = model.bounds[2] = model.bounds[4] = Number.MAX_VALUE;\n model.bounds[1] = model.bounds[3] = model.bounds[5] = -Number.MAX_VALUE;\n /* eslint-enable no-multi-assign */\n\n model.bounds = model.bounds.map(\n (d, i) =>\n i % 2 === 0\n ? bbox.reduce((a, b) => (a > b[i / 2] ? b[i / 2] : a), d)\n : bbox.reduce(\n (a, b) => (a < b[(i - 1) / 2] ? b[(i - 1) / 2] : a),\n d\n )\n );\n\n model.boundsMTime.modified();\n }\n return model.bounds;\n };\n\n publicAPI.getMTime = () => {\n let mt = superClass.getMTime();\n if (model.property !== null) {\n const time = model.property.getMTime();\n mt = time > mt ? time : mt;\n }\n\n if (model.backfaceProperty !== null) {\n const time = model.backfaceProperty.getMTime();\n mt = time > mt ? time : mt;\n }\n\n return mt;\n };\n\n publicAPI.getRedrawMTime = () => {\n let mt = model.mtime;\n if (model.mapper !== null) {\n let time = model.mapper.getMTime();\n mt = time > mt ? time : mt;\n if (model.mapper.getInput() !== null) {\n // FIXME !!! getInputAlgorithm / getInput\n model.mapper.getInputAlgorithm().update();\n time = model.mapper.getInput().getMTime();\n mt = time > mt ? time : mt;\n }\n }\n return mt;\n };\n\n publicAPI.getSupportsSelection = () =>\n model.mapper ? model.mapper.getSupportsSelection() : false;\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n mapper: null,\n property: null,\n backfaceProperty: null,\n\n forceOpaque: false,\n forceTranslucent: false,\n\n bounds: [1, -1, 1, -1, 1, -1],\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkProp3D.extend(publicAPI, model, initialValues);\n\n // vtkTimeStamp\n model.boundsMTime = {};\n macro.obj(model.boundsMTime);\n\n // Build VTK API\n macro.set(publicAPI, model, ['property']);\n macro.setGet(publicAPI, model, [\n 'backfaceProperty',\n 'forceOpaque',\n 'forceTranslucent',\n 'mapper',\n ]);\n\n // Object methods\n vtkActor(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkActor');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/Core/Actor/index.js","import macro from 'vtk.js/Sources/macro';\nimport vtkPlane from 'vtk.js/Sources/Common/DataModel/Plane';\n\nconst INIT_BOUNDS = [\n Number.MAX_VALUE,\n -Number.MAX_VALUE, // X\n Number.MAX_VALUE,\n -Number.MAX_VALUE, // Y\n Number.MAX_VALUE,\n -Number.MAX_VALUE, // Z\n];\n\n// ----------------------------------------------------------------------------\n// Global methods\n// ----------------------------------------------------------------------------\n\nfunction isValid(bounds) {\n return (\n bounds[0] <= bounds[1] && bounds[2] <= bounds[3] && bounds[4] <= bounds[5]\n );\n}\n\nfunction getCenter(bounds) {\n return [\n 0.5 * (bounds[0] + bounds[1]),\n 0.5 * (bounds[2] + bounds[3]),\n 0.5 * (bounds[4] + bounds[5]),\n ];\n}\n\nfunction getLength(bounds, index) {\n return bounds[index * 2 + 1] - bounds[index * 2];\n}\n\nfunction getLengths(bounds) {\n return [getLength(bounds, 0), getLength(bounds, 1), getLength(bounds, 2)];\n}\n\nfunction getXRange(bounds) {\n return bounds.slice(0, 2);\n}\n\nfunction getYRange(bounds) {\n return bounds.slice(2, 4);\n}\n\nfunction getZRange(bounds) {\n return bounds.slice(4, 6);\n}\n\nfunction getMaxLength(bounds) {\n const l = getLengths(bounds);\n if (l[0] > l[1]) {\n if (l[0] > l[2]) {\n return l[0];\n }\n return l[2];\n } else if (l[1] > l[2]) {\n return l[1];\n }\n return l[2];\n}\n\nfunction getDiagonalLength(bounds) {\n if (isValid(bounds)) {\n const l = getLengths(bounds);\n return Math.sqrt(l[0] * l[0] + l[1] * l[1] + l[2] * l[2]);\n }\n return null;\n}\n\nfunction oppositeSign(a, b) {\n return (a <= 0 && b >= 0) || (a >= 0 && b <= 0);\n}\n\nfunction getCorners(bounds, corners) {\n let count = 0;\n for (let ix = 0; ix < 2; ix++) {\n for (let iy = 2; iy < 4; iy++) {\n for (let iz = 4; iz < 6; iz++) {\n corners[count] = [bounds[ix], bounds[iy], bounds[iz]];\n count++;\n }\n }\n }\n}\n\n// ----------------------------------------------------------------------------\n// Static API\n// ----------------------------------------------------------------------------\n\nexport const STATIC = {\n isValid,\n getCenter,\n getLength,\n getLengths,\n getMaxLength,\n getDiagonalLength,\n getXRange,\n getYRange,\n getZRange,\n getCorners,\n INIT_BOUNDS,\n};\n\n// ----------------------------------------------------------------------------\n// vtkBoundingBox methods\n// ----------------------------------------------------------------------------\n\nfunction vtkBoundingBox(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkBoundingBox');\n\n publicAPI.clone = () => {\n const bounds = [].concat(model.bounds);\n /* eslint-disable no-use-before-define */\n return newInstance({ bounds });\n /* eslint-enable no-use-before-define */\n };\n\n publicAPI.equals = (other) => {\n const a = model.bounds;\n const b = other.getBounds();\n return (\n a[0] === b[0] &&\n a[1] === b[1] &&\n a[2] === b[2] &&\n a[3] === b[3] &&\n a[4] === b[4] &&\n a[5] === b[5]\n );\n };\n\n publicAPI.setMinPoint = (x, y, z) => {\n const [xMin, xMax, yMin, yMax, zMin, zMax] = model.bounds;\n model.bounds = [\n x,\n x > xMax ? x : xMax,\n y,\n y > yMax ? y : yMax,\n z,\n z > zMax ? z : zMax,\n ];\n\n return xMin !== x || yMin !== y || zMin !== z;\n };\n\n publicAPI.setMaxPoint = (x, y, z) => {\n const [xMin, xMax, yMin, yMax, zMin, zMax] = model.bounds;\n model.bounds = [\n x < xMin ? x : xMin,\n x,\n y < yMin ? y : yMin,\n y,\n z < zMin ? z : zMin,\n z,\n ];\n\n return xMax !== x || yMax !== y || zMax !== z;\n };\n\n publicAPI.addPoint = (...xyz) => {\n model.bounds = model.bounds.map((value, index) => {\n if (index % 2 === 0) {\n const idx = index / 2;\n return value < xyz[idx] ? value : xyz[idx];\n }\n const idx = (index - 1) / 2;\n return value > xyz[idx] ? value : xyz[idx];\n });\n };\n\n publicAPI.addBounds = (xMin, xMax, yMin, yMax, zMin, zMax) => {\n const [_xMin, _xMax, _yMin, _yMax, _zMin, _zMax] = model.bounds;\n model.bounds = [\n Math.min(xMin, _xMin),\n Math.max(xMax, _xMax),\n Math.min(yMin, _yMin),\n Math.max(yMax, _yMax),\n Math.min(zMin, _zMin),\n Math.max(zMax, _zMax),\n ];\n };\n\n publicAPI.addBox = (other) => {\n publicAPI.addBounds(...other.getBounds());\n };\n\n publicAPI.isValid = () => isValid(model.bounds);\n\n publicAPI.intersect = (bbox) => {\n if (!(publicAPI.isValid() && bbox.isValid())) {\n return false;\n }\n\n const newBounds = [0, 0, 0, 0, 0, 0];\n const bBounds = bbox.getBounds();\n let intersects;\n for (let i = 0; i < 3; i++) {\n intersects = false;\n if (\n bBounds[i * 2] >= model.bounds[i * 2] &&\n bBounds[i * 2] <= model.bounds[i * 2 + 1]\n ) {\n intersects = true;\n newBounds[i * 2] = bBounds[i * 2];\n } else if (\n model.bounds[i * 2] >= bBounds[i * 2] &&\n model.bounds[i * 2] <= bBounds[i * 2 + 1]\n ) {\n intersects = true;\n newBounds[i * 2] = model.bounds[i * 2];\n }\n\n if (\n bBounds[i * 2 + 1] >= model.bounds[i * 2] &&\n bBounds[i * 2 + 1] <= model.bounds[i * 2 + 1]\n ) {\n intersects = true;\n newBounds[i * 2 + 1] = bbox.MaxPnt[i];\n } else if (\n model.bounds[i * 2 + 1] >= bbox.MinPnt[i * 2] &&\n model.bounds[i * 2 + 1] <= bbox.MaxPnt[i * 2 + 1]\n ) {\n intersects = true;\n newBounds[i * 2 + 1] = model.bounds[i * 2 + 1];\n }\n\n if (!intersects) {\n return false;\n }\n }\n\n // OK they did intersect - set the box to be the result\n model.bounds = newBounds;\n return true;\n };\n\n publicAPI.intersects = (bbox) => {\n if (!(publicAPI.isValid() && bbox.isValid())) {\n return false;\n }\n const bBounds = bbox.getBounds();\n /* eslint-disable no-continue */\n for (let i = 0; i < 3; i++) {\n if (\n bBounds[i * 2] >= model.bounds[i * 2] &&\n bBounds[i * 2] <= model.bounds[i * 2 + 1]\n ) {\n continue;\n } else if (\n model.bounds[i * 2] >= bBounds[i * 2] &&\n model.bounds[i * 2] <= bBounds[i * 2 + 1]\n ) {\n continue;\n }\n\n if (\n bBounds[i * 2 + 1] >= model.bounds[i * 2] &&\n bBounds[i * 2 + 1] <= model.bounds[i * 2 + 1]\n ) {\n continue;\n } else if (\n model.bounds[i * 2 + 1] >= bbox.MinPnt[i * 2] &&\n model.bounds[i * 2 + 1] <= bbox.MaxPnt[i * 2 + 1]\n ) {\n continue;\n }\n return false;\n }\n /* eslint-enable no-continue */\n\n return true;\n };\n\n publicAPI.intersectPlane = (origin, normal) => {\n // Index[0..2] represents the order of traversing the corners of a cube\n // in (x,y,z), (y,x,z) and (z,x,y) ordering, respectively\n const index = [\n [0, 1, 2, 3, 4, 5, 6, 7],\n [0, 1, 4, 5, 2, 3, 6, 7],\n [0, 2, 4, 6, 1, 3, 5, 7],\n ];\n\n // stores the signed distance to a plane\n const d = [0, 0, 0, 0, 0, 0, 0, 0];\n let idx = 0;\n for (let ix = 0; ix < 2; ix++) {\n for (let iy = 2; iy < 4; iy++) {\n for (let iz = 4; iz < 6; iz++) {\n const x = [model.bounds[ix], model.bounds[iy], model.bounds[iz]];\n d[idx++] = vtkPlane.evaluate(normal, origin, x);\n }\n }\n }\n\n let dir = 2;\n while (dir--) {\n // in each direction, we test if the vertices of two orthogonal faces\n // are on either side of the plane\n if (\n oppositeSign(d[index[dir][0]], d[index[dir][4]]) &&\n oppositeSign(d[index[dir][1]], d[index[dir][5]]) &&\n oppositeSign(d[index[dir][2]], d[index[dir][6]]) &&\n oppositeSign(d[index[dir][3]], d[index[dir][7]])\n ) {\n break;\n }\n }\n\n if (dir < 0) {\n return false;\n }\n\n const sign = Math.sign(normal[dir]);\n const size = Math.abs(\n (model.bounds[dir * 2 + 1] - model.bounds[dir * 2]) * normal[dir]\n );\n let t = sign > 0 ? 1 : 0;\n /* eslint-disable no-continue */\n for (let i = 0; i < 4; i++) {\n if (size === 0) {\n continue; // shouldn't happen\n }\n const ti = Math.abs(d[index[dir][i]]) / size;\n if (sign > 0 && ti < t) {\n t = ti;\n }\n\n if (sign < 0 && ti > t) {\n t = ti;\n }\n }\n /* eslint-enable no-continue */\n const bound =\n (1.0 - t) * model.bounds[dir * 2] + t * model.bounds[dir * 2 + 1];\n\n if (sign > 0) {\n model.bounds[dir * 2] = bound;\n } else {\n model.bounds[dir * 2 + 1] = bound;\n }\n\n return true;\n };\n\n publicAPI.containsPoint = (x, y, z) => {\n if (x < model.bounds[0] || x > model.bounds[1]) {\n return false;\n }\n\n if (y < model.bounds[2] || y > model.bounds[3]) {\n return false;\n }\n\n if (z < model.bounds[4] || z > model.bounds[5]) {\n return false;\n }\n\n return true;\n };\n\n publicAPI.getMinPoint = () => [\n model.bounds[0],\n model.bounds[2],\n model.bounds[4],\n ];\n publicAPI.getMaxPoint = () => [\n model.bounds[1],\n model.bounds[3],\n model.bounds[5],\n ];\n publicAPI.getBound = (index) => model.bound[index];\n\n publicAPI.contains = (bbox) => {\n // if either box is not valid or they don't intersect\n if (!publicAPI.intersects(bbox)) {\n return false;\n }\n\n if (!publicAPI.containsPoint(...bbox.getMinPoint())) {\n return false;\n }\n\n if (!publicAPI.containsPoint(...bbox.getMaxPoint())) {\n return 0;\n }\n\n return true;\n };\n\n publicAPI.getCenter = () => getCenter(model.bounds);\n publicAPI.getLength = (index) => getLength(model.bounds, index);\n publicAPI.getLengths = () => getLengths(model.bounds);\n publicAPI.getMaxLength = () => getMaxLength(model.bounds);\n publicAPI.getDiagonalLength = () => getDiagonalLength(model.bounds);\n\n publicAPI.reset = () => publicAPI.setBounds([].concat(INIT_BOUNDS));\n\n publicAPI.inflate = (delta) => {\n model.bounds = model.bounds.map((value, index) => {\n if (index % 2 === 0) {\n return value - delta;\n }\n return value + delta;\n });\n };\n\n publicAPI.getCorners = () => {\n getCorners(model.bounds, model.corners);\n return model.corners;\n };\n\n publicAPI.scale = (sx, sy, sz) => {\n if (publicAPI.isValid()) {\n const newBounds = [].concat(model.bounds);\n if (sx >= 0.0) {\n newBounds[0] *= sx;\n newBounds[1] *= sx;\n } else {\n newBounds[0] = sx * model.bounds[1];\n newBounds[1] = sx * model.bounds[0];\n }\n\n if (sy >= 0.0) {\n newBounds[2] *= sy;\n newBounds[3] *= sy;\n } else {\n newBounds[2] = sy * model.bounds[3];\n newBounds[3] = sy * model.bounds[2];\n }\n\n if (sz >= 0.0) {\n newBounds[4] *= sz;\n newBounds[5] *= sz;\n } else {\n newBounds[4] = sz * model.bounds[5];\n newBounds[5] = sz * model.bounds[4];\n }\n\n model.bounds = newBounds;\n return true;\n }\n return false;\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n type: 'vtkBoundingBox',\n bounds: [].concat(INIT_BOUNDS),\n corners: [],\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Object methods\n macro.obj(publicAPI, model);\n macro.setGet(publicAPI, model, ['bounds']);\n vtkBoundingBox(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkBoundingBox');\n\n// ----------------------------------------------------------------------------\n\nexport default Object.assign({ newInstance, extend }, STATIC);\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Common/DataModel/BoundingBox/index.js","import macro from 'vtk.js/Sources/macro';\nimport Constants from 'vtk.js/Sources/Rendering/Core/Property/Constants';\n\nconst { Representation, Interpolation } = Constants;\n\nfunction notImplemented(method) {\n return () => macro.vtkErrorMacro(`vtkProperty::${method} - NOT IMPLEMENTED`);\n}\n\n// ----------------------------------------------------------------------------\n// vtkProperty methods\n// ----------------------------------------------------------------------------\n\nfunction vtkProperty(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkProperty');\n\n publicAPI.setColor = (r, g, b) => {\n if (model.color[0] !== r || model.color[1] !== g || model.color[2] !== b) {\n model.color[0] = r;\n model.color[1] = g;\n model.color[2] = b;\n publicAPI.modified();\n }\n\n publicAPI.setDiffuseColor(model.color);\n publicAPI.setAmbientColor(model.color);\n publicAPI.setSpecularColor(model.color);\n };\n\n publicAPI.computeCompositeColor = notImplemented('ComputeCompositeColor');\n publicAPI.getColor = () => {\n // Inline computeCompositeColor\n let norm = 0.0;\n if (model.ambient + model.diffuse + model.specular > 0) {\n norm = 1.0 / (model.ambient + model.diffuse + model.specular);\n }\n\n for (let i = 0; i < 3; i++) {\n model.color[i] =\n norm *\n (model.ambient * model.ambientColor[i] +\n model.diffuse * model.diffuseColor[i] +\n model.specular * model.specularColor[i]);\n }\n\n return [].concat(model.color);\n };\n\n publicAPI.addShaderVariable = notImplemented('AddShaderVariable');\n\n publicAPI.setInterpolationToFlat = () =>\n publicAPI.setInterpolation(Interpolation.FLAT);\n publicAPI.setInterpolationToGouraud = () =>\n publicAPI.setInterpolation(Interpolation.GOURAUD);\n publicAPI.setInterpolationToPhong = () =>\n publicAPI.setInterpolation(Interpolation.PHONG);\n publicAPI.getInterpolationAsString = () =>\n macro.enumToString(Interpolation, model.interpolation);\n\n publicAPI.setRepresentationToWireframe = () =>\n publicAPI.setRepresentation(Representation.WIREFRAME);\n publicAPI.setRepresentationToSurface = () =>\n publicAPI.setRepresentation(Representation.SURFACE);\n publicAPI.setRepresentationToPoints = () =>\n publicAPI.setRepresentation(Representation.POINTS);\n publicAPI.getRepresentationAsString = () =>\n macro.enumToString(Representation, model.representation);\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n color: [1, 1, 1],\n ambientColor: [1, 1, 1],\n diffuseColor: [1, 1, 1],\n specularColor: [1, 1, 1],\n edgeColor: [0, 0, 0],\n\n ambient: 0,\n diffuse: 1,\n specular: 0,\n specularPower: 1,\n opacity: 1,\n interpolation: Interpolation.GOURAUD,\n representation: Representation.SURFACE,\n edgeVisibility: false,\n backfaceCulling: false,\n frontfaceCulling: false,\n pointSize: 1,\n lineWidth: 1,\n lighting: true,\n\n shading: false,\n materialName: null,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Build VTK API\n macro.obj(publicAPI, model);\n\n macro.setGet(publicAPI, model, [\n 'lighting',\n 'interpolation',\n 'ambient',\n 'diffuse',\n 'specular',\n 'specularPower',\n 'opacity',\n 'edgeVisibility',\n 'lineWidth',\n 'pointSize',\n 'backfaceCulling',\n 'frontfaceCulling',\n 'representation',\n ]);\n macro.setGetArray(\n publicAPI,\n model,\n ['ambientColor', 'specularColor', 'diffuseColor', 'edgeColor'],\n 3\n );\n\n // Object methods\n vtkProperty(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkProperty');\n\n// ----------------------------------------------------------------------------\n\nexport default Object.assign({ newInstance, extend }, Constants);\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/Core/Property/index.js","import * as macro from 'vtk.js/Sources/macro';\nimport vtkOpenGLTexture from 'vtk.js/Sources/Rendering/OpenGL/Texture';\nimport { VtkDataTypes } from 'vtk.js/Sources/Common/Core/DataArray/Constants';\nimport { Filter } from 'vtk.js/Sources/Rendering/OpenGL/Texture/Constants';\n\n// ----------------------------------------------------------------------------\n// vtkFramebuffer methods\n// ----------------------------------------------------------------------------\nfunction vtkFramebuffer(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkFramebuffer');\n\n publicAPI.getBothMode = () => model.context.FRAMEBUFFER;\n // publicAPI.getDrawMode = () => model.context.DRAW_FRAMEBUFFER;\n // publicAPI.getReadMode = () => model.context.READ_FRAMEBUFFER;\n\n publicAPI.saveCurrentBindingsAndBuffers = (modeIn) => {\n const mode =\n typeof modeIn !== 'undefined' ? modeIn : publicAPI.getBothMode();\n publicAPI.saveCurrentBindings(mode);\n publicAPI.saveCurrentBuffers(mode);\n };\n\n publicAPI.saveCurrentBindings = (modeIn) => {\n const gl = model.context;\n model.previousDrawBinding = gl.getParameter(\n model.context.FRAMEBUFFER_BINDING\n );\n model.previousActiveFramebuffer = model.openGLRenderWindow.getActiveFramebuffer();\n };\n\n publicAPI.saveCurrentBuffers = (modeIn) => {\n // noop on webgl 1\n };\n\n publicAPI.restorePreviousBindingsAndBuffers = (modeIn) => {\n const mode =\n typeof modeIn !== 'undefined' ? modeIn : publicAPI.getBothMode();\n publicAPI.restorePreviousBindings(mode);\n publicAPI.restorePreviousBuffers(mode);\n };\n\n publicAPI.restorePreviousBindings = (modeIn) => {\n const gl = model.context;\n gl.bindFramebuffer(gl.FRAMEBUFFER, model.previousDrawBinding);\n model.openGLRenderWindow.setActiveFramebuffer(\n model.previousActiveFramebuffer\n );\n };\n\n publicAPI.restorePreviousBuffers = (modeIn) => {\n // currently a noop on webgl1\n };\n\n publicAPI.bind = () => {\n model.context.bindFramebuffer(\n model.context.FRAMEBUFFER,\n model.glFramebuffer\n );\n if (model.colorTexture) {\n model.colorTexture.bind();\n }\n model.openGLRenderWindow.setActiveFramebuffer(publicAPI);\n };\n\n publicAPI.create = (width, height) => {\n model.glFramebuffer = model.context.createFramebuffer();\n model.glFramebuffer.width = width;\n model.glFramebuffer.height = height;\n };\n\n publicAPI.setColorBuffer = (texture, mode) => {\n const gl = model.context;\n model.colorTexture = texture;\n gl.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0,\n gl.TEXTURE_2D,\n texture.getHandle(),\n 0\n );\n };\n\n // publicAPI.setDepthBuffer = (texture, mode) => {\n // const gl = model.context;\n // gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.TEXTURE_2D, texture.getHandle(), 0);\n // };\n\n publicAPI.getGLFramebuffer = () => model.glFramebuffer;\n\n publicAPI.setOpenGLRenderWindow = (rw) => {\n if (model.openGLRenderWindow === rw) {\n return;\n }\n publicAPI.releaseGraphicsResources();\n model.openGLRenderWindow = rw;\n model.context = null;\n if (rw) {\n model.context = model.openGLRenderWindow.getContext();\n }\n };\n\n publicAPI.releaseGraphicsResources = () => {\n if (model.glFramebuffer) {\n model.context.deleteFramebuffer(model.glFramebuffer);\n }\n if (model.depthTexture) {\n model.depthTexture.releaseGraphicsResources();\n }\n if (model.colorTexture) {\n model.colorTexture.releaseGraphicsResources();\n }\n };\n\n publicAPI.getSize = () => {\n const size = [0, 0];\n if (model.glFramebuffer !== null) {\n size[0] = model.glFramebuffer.width;\n size[1] = model.glFramebuffer.height;\n }\n return size;\n };\n\n publicAPI.populateFramebuffer = () => {\n publicAPI.bind();\n const gl = model.context;\n\n const texture = vtkOpenGLTexture.newInstance();\n texture.setOpenGLRenderWindow(model.openGLRenderWindow);\n texture.setMinificationFilter(Filter.LINEAR);\n texture.setMagnificationFilter(Filter.LINEAR);\n texture.create2DFromRaw(\n model.glFramebuffer.width,\n model.glFramebuffer.height,\n 4,\n VtkDataTypes.UNSIGNED_CHAR,\n null\n );\n publicAPI.setColorBuffer(texture);\n\n // for now do not count of having a depth buffer texture\n // as they are not standard webgl 1\n model.depthTexture = gl.createRenderbuffer();\n gl.bindRenderbuffer(gl.RENDERBUFFER, model.depthTexture);\n gl.renderbufferStorage(\n gl.RENDERBUFFER,\n gl.DEPTH_COMPONENT16,\n model.glFramebuffer.width,\n model.glFramebuffer.height\n );\n gl.framebufferRenderbuffer(\n gl.FRAMEBUFFER,\n gl.DEPTH_ATTACHMENT,\n gl.RENDERBUFFER,\n model.depthTexture\n );\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\nconst DEFAULT_VALUES = {\n openGLRenderWindow: null,\n glFramebuffer: null,\n colorTexture: null,\n depthTexture: null,\n previousDrawBinding: 0,\n previousReadBinding: 0,\n previousDrawBuffer: 0,\n previousReadBuffer: 0,\n previousActiveFramebuffer: null,\n};\n\n// ----------------------------------------------------------------------------\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Build VTK API\n macro.obj(publicAPI, model);\n\n macro.setGet(publicAPI, model, ['colorTexture']);\n\n // For more macro methods, see \"Sources/macro.js\"\n // Object specific methods\n vtkFramebuffer(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\nexport const newInstance = macro.newInstance(extend, 'vtkFramebuffer');\n\n// ----------------------------------------------------------------------------\nexport default Object.assign({ newInstance, extend });\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/OpenGL/Framebuffer/index.js","import macro from 'vtk.js/Sources/macro';\nimport vtk from 'vtk.js/Sources/vtk';\nimport vtkDataSetAttributes from 'vtk.js/Sources/Common/DataModel/DataSetAttributes';\nimport Constants from 'vtk.js/Sources/Common/DataModel/DataSet/Constants';\n\n// import vtkBoundingBox from '../BoundingBox';\n// import vtkMath from '../../Core/Math';\n//\n// function getBounds(dataset) {\n// if (dataset.bounds) {\n// return dataset.bounds;\n// }\n// if (dataset.type && dataset[dataset.type]) {\n// const ds = dataset[dataset.type];\n// if (ds.bounds) {\n// return ds.bounds;\n// }\n// if (ds.Points && ds.Points.bounds) {\n// return ds.Points.bounds;\n// }\n\n// if (ds.Points && ds.Points.values) {\n// const array = ds.Points.values;\n// const bbox = vtkBoundingBox.newInstance();\n// const size = array.length;\n// const delta = ds.Points.numberOfComponents ? ds.Points.numberOfComponents : 3;\n// for (let idx = 0; idx < size; idx += delta) {\n// bbox.addPoint(array[idx * delta], array[(idx * delta) + 1], array[(idx * delta) + 2]);\n// }\n// ds.Points.bounds = bbox.getBounds();\n// return ds.Points.bounds;\n// }\n// }\n// return vtkMath.createUninitializedBounds();\n// }\n\n// ----------------------------------------------------------------------------\n// Global methods\n// ----------------------------------------------------------------------------\n\nconst DATASET_FIELDS = ['pointData', 'cellData', 'fieldData'];\n\n// ----------------------------------------------------------------------------\n// vtkDataSet methods\n// ----------------------------------------------------------------------------\n\nfunction vtkDataSet(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkDataSet');\n\n // Add dataset attributes\n DATASET_FIELDS.forEach((fieldName) => {\n if (!model[fieldName]) {\n model[fieldName] = vtkDataSetAttributes.newInstance();\n } else {\n model[fieldName] = vtk(model[fieldName]);\n }\n });\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n // pointData: null,\n // cellData: null,\n // fieldData: null,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Object methods\n macro.obj(publicAPI, model);\n macro.setGet(publicAPI, model, DATASET_FIELDS);\n\n // Object specific methods\n vtkDataSet(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkDataSet');\n\n// ----------------------------------------------------------------------------\n\nexport default Object.assign({ newInstance, extend }, Constants);\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Common/DataModel/DataSet/index.js","import macro from 'vtk.js/Sources/macro';\nimport vtkDataSet from 'vtk.js/Sources/Common/DataModel/DataSet';\nimport vtkStructuredData from 'vtk.js/Sources/Common/DataModel/StructuredData';\nimport { StructuredType } from 'vtk.js/Sources/Common/DataModel/StructuredData/Constants';\nimport { quat, vec3, mat3, mat4 } from 'gl-matrix';\n\nconst { vtkErrorMacro } = macro;\n\n// ----------------------------------------------------------------------------\n// vtkImageData methods\n// ----------------------------------------------------------------------------\n\nfunction vtkImageData(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkImageData');\n\n publicAPI.setExtent = (...inExtent) => {\n if (model.deleted) {\n vtkErrorMacro('instance deleted - cannot call any method');\n return;\n }\n\n if (!inExtent || inExtent.length !== 6) {\n return;\n }\n\n let changeDetected = false;\n model.extent.forEach((item, index) => {\n if (item !== inExtent[index]) {\n if (changeDetected) {\n return;\n }\n changeDetected = true;\n }\n });\n\n if (changeDetected) {\n model.extent = [].concat(inExtent);\n model.dataDescription = vtkStructuredData.getDataDescriptionFromExtent(\n model.extent\n );\n publicAPI.modified();\n }\n };\n\n publicAPI.setDimensions = (...dims) => {\n let i;\n let j;\n let k;\n\n if (model.deleted) {\n vtkErrorMacro('instance deleted - cannot call any method');\n return;\n }\n\n if (dims.length === 1) {\n const array = dims[0];\n i = array[0];\n j = array[1];\n k = array[2];\n } else if (dims.length === 3) {\n i = dims[0];\n j = dims[1];\n k = dims[2];\n } else {\n vtkErrorMacro('Bad dimension specification');\n return;\n }\n\n publicAPI.setExtent(0, i - 1, 0, j - 1, 0, k - 1);\n };\n\n publicAPI.getDimensions = () => [\n model.extent[1] - model.extent[0] + 1,\n model.extent[3] - model.extent[2] + 1,\n model.extent[5] - model.extent[4] + 1,\n ];\n\n publicAPI.getNumberOfCells = () => {\n const dims = publicAPI.getDimensions();\n let nCells = 1;\n\n for (let i = 0; i < 3; i++) {\n if (dims[i] === 0) {\n return 0;\n }\n if (dims[i] > 1) {\n nCells *= dims[i] - 1;\n }\n }\n\n return nCells;\n };\n\n publicAPI.getNumberOfPoints = () => {\n const dims = publicAPI.getDimensions();\n return dims[0] * dims[1] * dims[2];\n };\n\n publicAPI.getPoint = (index) => {\n const dims = publicAPI.getDimensions();\n const ijk = vec3.fromValues(0, 0, 0);\n const coords = [0, 0, 0];\n\n if (dims[0] === 0 || dims[1] === 0 || dims[2] === 0) {\n vtkErrorMacro('Requesting a point from an empty image.');\n return null;\n }\n\n switch (model.dataDescription) {\n case StructuredType.EMPTY:\n return null;\n\n case StructuredType.SINGLE_POINT:\n break;\n\n case StructuredType.X_LINE:\n ijk[0] = index;\n break;\n\n case StructuredType.Y_LINE:\n ijk[1] = index;\n break;\n\n case StructuredType.Z_LINE:\n ijk[2] = index;\n break;\n\n case StructuredType.XY_PLANE:\n ijk[0] = index % dims[0];\n ijk[1] = index / dims[0];\n break;\n\n case StructuredType.YZ_PLANE:\n ijk[1] = index % dims[1];\n ijk[2] = index / dims[1];\n break;\n\n case StructuredType.XZ_PLANE:\n ijk[0] = index % dims[0];\n ijk[2] = index / dims[0];\n break;\n\n case StructuredType.XYZ_GRID:\n ijk[0] = index % dims[0];\n ijk[1] = (index / dims[0]) % dims[1];\n ijk[2] = index / (dims[0] * dims[1]);\n break;\n\n default:\n vtkErrorMacro('Invalid dataDescription');\n break;\n }\n\n const vout = vec3.create();\n publicAPI.indexToWorldVec3(ijk, vout);\n vec3.copy(coords, vout);\n return coords;\n };\n\n // vtkCell *GetCell(vtkIdType cellId) VTK_OVERRIDE;\n // void GetCell(vtkIdType cellId, vtkGenericCell *cell) VTK_OVERRIDE;\n // void GetCellBounds(vtkIdType cellId, double bounds[6]) VTK_OVERRIDE;\n // virtual vtkIdType FindPoint(double x, double y, double z)\n // {\n // return this->vtkDataSet::FindPoint(x, y, z);\n // }\n // vtkIdType FindPoint(double x[3]) VTK_OVERRIDE;\n // vtkIdType FindCell(\n // double x[3], vtkCell *cell, vtkIdType cellId, double tol2,\n // int& subId, double pcoords[3], double *weights) VTK_OVERRIDE;\n // vtkIdType FindCell(\n // double x[3], vtkCell *cell, vtkGenericCell *gencell,\n // vtkIdType cellId, double tol2, int& subId,\n // double pcoords[3], double *weights) VTK_OVERRIDE;\n // vtkCell *FindAndGetCell(double x[3], vtkCell *cell, vtkIdType cellId,\n // double tol2, int& subId, double pcoords[3],\n // double *weights) VTK_OVERRIDE;\n // int GetCellType(vtkIdType cellId) VTK_OVERRIDE;\n // void GetCellPoints(vtkIdType cellId, vtkIdList *ptIds) VTK_OVERRIDE\n // {vtkStructuredData::GetCellPoints(cellId,ptIds,this->DataDescription,\n // this->GetDimensions());}\n // void GetPointCells(vtkIdType ptId, vtkIdList *cellIds) VTK_OVERRIDE\n // {vtkStructuredData::GetPointCells(ptId,cellIds,this->GetDimensions());}\n // void ComputeBounds() VTK_OVERRIDE;\n // int GetMaxCellSize() VTK_OVERRIDE {return 8;}; //voxel is the largest\n\n publicAPI.getBounds = () => publicAPI.extentToBounds(model.extent);\n\n publicAPI.extentToBounds = (ex) => {\n // prettier-ignore\n const corners = [\n ex[0], ex[2], ex[4],\n ex[1], ex[2], ex[4],\n ex[0], ex[3], ex[4],\n ex[1], ex[3], ex[4],\n ex[0], ex[2], ex[5],\n ex[1], ex[2], ex[5],\n ex[0], ex[3], ex[5],\n ex[1], ex[3], ex[5]];\n\n const idx = vec3.fromValues(corners[0], corners[1], corners[2]);\n const vout = vec3.create();\n publicAPI.indexToWorldVec3(idx, vout);\n const bounds = [vout[0], vout[0], vout[1], vout[1], vout[2], vout[2]];\n for (let i = 3; i < 24; i += 3) {\n vec3.set(idx, corners[i], corners[i + 1], corners[i + 2]);\n publicAPI.indexToWorldVec3(idx, vout);\n if (vout[0] < bounds[0]) {\n bounds[0] = vout[0];\n }\n if (vout[1] < bounds[2]) {\n bounds[2] = vout[1];\n }\n if (vout[2] < bounds[4]) {\n bounds[4] = vout[2];\n }\n if (vout[0] > bounds[1]) {\n bounds[1] = vout[0];\n }\n if (vout[1] > bounds[3]) {\n bounds[3] = vout[1];\n }\n if (vout[2] > bounds[5]) {\n bounds[5] = vout[2];\n }\n }\n\n return bounds;\n };\n\n publicAPI.computeTransforms = () => {\n const rotq = quat.create();\n quat.fromMat3(rotq, model.direction);\n const trans = vec3.fromValues(\n model.origin[0],\n model.origin[1],\n model.origin[2]\n );\n const scale = vec3.fromValues(\n model.spacing[0],\n model.spacing[1],\n model.spacing[2]\n );\n mat4.fromRotationTranslationScale(model.indexToWorld, rotq, trans, scale);\n mat4.invert(model.worldToIndex, model.indexToWorld);\n };\n\n //\n // The direction matrix is a 3x3 basis for the I, J, K axes\n // of the image. The rows of the matrix correspond to the\n // axes directions in world coordinates. Direction must\n // form an orthonormal basis, results are undefined if\n // it is not.\n //\n publicAPI.setDirection = (...args) => {\n if (model.deleted) {\n vtkErrorMacro('instance deleted - cannot call any method');\n return false;\n }\n\n let array = args;\n // allow an array passed as a single arg.\n if (array.length === 1 && Array.isArray(array[0])) {\n array = array[0];\n }\n\n if (array.length !== 9) {\n throw new RangeError('Invalid number of values for array setter');\n }\n let changeDetected = false;\n model.direction.forEach((item, index) => {\n if (item !== array[index]) {\n if (changeDetected) {\n return;\n }\n changeDetected = true;\n }\n });\n\n if (changeDetected) {\n for (let i = 0; i < 9; ++i) {\n model.direction[i] = array[i];\n }\n publicAPI.modified();\n }\n return true;\n };\n\n // this is the fast version, requires vec3 arguments\n publicAPI.indexToWorldVec3 = (vin, vout) => {\n vec3.transformMat4(vout, vin, model.indexToWorld);\n };\n\n // slow version for generic arrays\n publicAPI.indexToWorld = (ain, aout) => {\n const vin = vec3.fromValues(ain[0], ain[1], ain[2]);\n const vout = vec3.create();\n vec3.transformMat4(vout, vin, model.indexToWorld);\n vec3.copy(aout, vout);\n };\n\n // this is the fast version, requires vec3 arguments\n publicAPI.worldToIndexVec3 = (vin, vout) => {\n vec3.transformMat4(vout, vin, model.worldToIndex);\n };\n\n // slow version for generic arrays\n publicAPI.worldToIndex = (ain, aout) => {\n const vin = vec3.fromValues(ain[0], ain[1], ain[2]);\n const vout = vec3.create();\n vec3.transformMat4(vout, vin, model.worldToIndex);\n vec3.copy(aout, vout);\n };\n\n // Make sure the transform is correct\n publicAPI.onModified(publicAPI.computeTransforms);\n publicAPI.computeTransforms();\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n direction: null, // a mat3\n indexToWorld: null, // a mat4\n worldToIndex: null, // a mat4\n spacing: [1.0, 1.0, 1.0],\n origin: [0.0, 0.0, 0.0],\n extent: [0, -1, 0, -1, 0, -1],\n dataDescription: StructuredType.EMPTY,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkDataSet.extend(publicAPI, model, initialValues);\n\n if (!model.direction) {\n model.direction = mat3.create();\n } else if (Array.isArray(model.direction)) {\n const dvals = model.direction.slice(0);\n model.direction = mat3.create();\n for (let i = 0; i < 9; ++i) {\n model.direction[i] = dvals[i];\n }\n }\n\n model.indexToWorld = mat4.create();\n model.worldToIndex = mat4.create();\n\n // Set/Get methods\n macro.get(publicAPI, model, ['direction', 'indexToWorld', 'worldToIndex']);\n macro.setGetArray(publicAPI, model, ['origin', 'spacing'], 3);\n macro.getArray(publicAPI, model, ['extent'], 6);\n\n // Object specific methods\n vtkImageData(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkImageData');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Common/DataModel/ImageData/index.js","export const VectorMode = {\n MAGNITUDE: 0,\n COMPONENT: 1,\n RGBCOLORS: 2,\n};\n\nexport const ScalarMappingTarget = {\n LUMINANCE: 1,\n LUMINANCE_ALPHA: 2,\n RGB: 3,\n RGBA: 4,\n};\n\nexport default {\n VectorMode,\n ScalarMappingTarget,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Common/Core/ScalarsToColors/Constants.js","import macro from 'vtk.js/Sources/macro';\nimport vtkDataArray from 'vtk.js/Sources/Common/Core/DataArray';\nimport { VtkDataTypes } from 'vtk.js/Sources/Common/Core/DataArray/Constants';\n\nconst { vtkErrorMacro } = macro;\n\nconst INVALID_BOUNDS = [1, -1, 1, -1, 1, -1];\n\n// ----------------------------------------------------------------------------\n// vtkPoints methods\n// ----------------------------------------------------------------------------\n\nfunction vtkPoints(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkPoints');\n\n // Forwarding methods\n publicAPI.getNumberOfPoints = publicAPI.getNumberOfTuples;\n\n publicAPI.setNumberOfPoints = (nbPoints, dimension = 3) => {\n if (publicAPI.getNumberOfPoints() !== nbPoints) {\n model.size = nbPoints * dimension;\n model.values = new window[model.dataType](model.size);\n publicAPI.setNumberOfComponents(dimension);\n publicAPI.modified();\n }\n };\n\n publicAPI.setPoint = (idx, ...xyz) => {\n const offset = idx * model.numberOfComponents;\n for (let i = 0; i < model.numberOfComponents; i++) {\n model.values[offset + i] = xyz[i];\n }\n };\n\n publicAPI.getPoint = publicAPI.getTuple;\n\n publicAPI.getBounds = () => {\n if (publicAPI.getNumberOfComponents() === 3) {\n const xRange = publicAPI.getRange(0);\n model.bounds[0] = xRange[0];\n model.bounds[1] = xRange[1];\n const yRange = publicAPI.getRange(1);\n model.bounds[2] = yRange[0];\n model.bounds[3] = yRange[1];\n const zRange = publicAPI.getRange(2);\n model.bounds[4] = zRange[0];\n model.bounds[5] = zRange[1];\n return model.bounds;\n }\n\n if (publicAPI.getNumberOfComponents() !== 2) {\n vtkErrorMacro(`getBounds called on an array with components of\n ${publicAPI.getNumberOfComponents()}`);\n return INVALID_BOUNDS;\n }\n\n const xRange = publicAPI.getRange(0);\n model.bounds[0] = xRange[0];\n model.bounds[1] = xRange[1];\n const yRange = publicAPI.getRange(1);\n model.bounds[2] = yRange[0];\n model.bounds[3] = yRange[1];\n model.bounds[4] = 0;\n model.bounds[5] = 0;\n\n return model.bounds;\n };\n\n // Trigger the computation of bounds\n publicAPI.computeBounds = publicAPI.getBounds;\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n empty: true,\n numberOfComponents: 3,\n dataType: VtkDataTypes.FLOAT,\n bounds: [1, -1, 1, -1, 1, -1],\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n vtkDataArray.extend(publicAPI, model, initialValues);\n vtkPoints(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkPoints');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Common/Core/Points/index.js","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n 2: 'need dictionary', /* Z_NEED_DICT 2 */\n 1: 'stream end', /* Z_STREAM_END 1 */\n 0: '', /* Z_OK 0 */\n '-1': 'file error', /* Z_ERRNO (-1) */\n '-2': 'stream error', /* Z_STREAM_ERROR (-2) */\n '-3': 'data error', /* Z_DATA_ERROR (-3) */\n '-4': 'insufficient memory', /* Z_MEM_ERROR (-4) */\n '-5': 'buffer error', /* Z_BUF_ERROR (-5) */\n '-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/pako/lib/zlib/messages.js\n// module id = 174\n// module chunks = 1","export function getEndianness() {\n const a = new ArrayBuffer(4);\n const b = new Uint8Array(a);\n const c = new Uint32Array(a);\n b[0] = 0xa1;\n b[1] = 0xb2;\n b[2] = 0xc3;\n b[3] = 0xd4;\n if (c[0] === 0xd4c3b2a1) return 'LittleEndian';\n if (c[0] === 0xa1b2c3d4) return 'BigEndian';\n return null;\n}\n\nexport const ENDIANNESS = getEndianness();\n\nexport function swapBytes(buffer, wordSize) {\n if (wordSize < 2) {\n return;\n }\n\n const bytes = new Int8Array(buffer);\n const size = bytes.length;\n const tempBuffer = [];\n\n for (let i = 0; i < size; i += wordSize) {\n for (let j = 0; j < wordSize; j++) {\n tempBuffer.push(bytes[i + j]);\n }\n for (let j = 0; j < wordSize; j++) {\n bytes[i + j] = tempBuffer.pop();\n }\n }\n}\n\nexport default {\n ENDIANNESS,\n getEndianness,\n swapBytes,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Common/Core/Endian/index.js","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/readable-stream/readable-browser.js\n// module id = 176\n// module chunks = 1","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\n/*<replacement>*/\n\nvar processNextTick = require('process-nextick-args');\n/*</replacement>*/\n\nmodule.exports = Writable;\n\n/* <replacement> */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* </replacement> */\n\n/*<replacement>*/\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick;\n/*</replacement>*/\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n\n/*<replacement>*/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/*</replacement>*/\n\n/*<replacement>*/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n/*<replacement>*/\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/*</replacement>*/\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nutil.inherits(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n\n if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n var hwm = options.highWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function () {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function (object) {\n if (realHasInstance.call(this, object)) return true;\n\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function (object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n return new Writable(options);\n }\n\n this._writableState = new WritableState(options, this);\n\n // legacy.\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n\n if (typeof options.writev === 'function') this._writev = options.writev;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new Error('write after end');\n // TODO: defer error events consistently everywhere, not just the cb\n stream.emit('error', er);\n processNextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n var er = false;\n\n if (chunk === null) {\n er = new TypeError('May not write null values to stream');\n } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n if (er) {\n stream.emit('error', er);\n processNextTick(cb, er);\n valid = false;\n }\n return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = _isUint8Array(chunk) && !state.objectMode;\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n\n if (typeof cb !== 'function') cb = nop;\n\n if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n\n return ret;\n};\n\nWritable.prototype.cork = function () {\n var state = this._writableState;\n\n state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n\n if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n\n state.length += len;\n\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n processNextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n processNextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n\n onwriteStateUpdate(state);\n\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state);\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n /*<replacement>*/\n asyncWrite(afterWrite, stream, state, finished, cb);\n /*</replacement>*/\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequestCount = 0;\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new Error('_write() is not implemented'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending && !state.finished) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n stream.emit('error', err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function') {\n state.pendingcb++;\n state.finalCalled = true;\n processNextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n }\n }\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) processNextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n if (state.corkedRequestsFree) {\n state.corkedRequestsFree.next = corkReq;\n } else {\n state.corkedRequestsFree = corkReq;\n }\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n get: function () {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\n\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n this.end();\n cb(err);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/readable-stream/lib/_stream_writable.js\n// module id = 177\n// module chunks = 1","module.exports = function(it){\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/node_modules/core-js/library/modules/_is-object.js\n// module id = 178\n// module chunks = 1","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function(){\n return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 7;\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/node_modules/core-js/library/modules/_descriptors.js\n// module id = 179\n// module chunks = 1","'use strict';\n\nvar external = require(\"./external\");\nvar DataWorker = require('./stream/DataWorker');\nvar DataLengthProbe = require('./stream/DataLengthProbe');\nvar Crc32Probe = require('./stream/Crc32Probe');\nvar DataLengthProbe = require('./stream/DataLengthProbe');\n\n/**\n * Represent a compressed object, with everything needed to decompress it.\n * @constructor\n * @param {number} compressedSize the size of the data compressed.\n * @param {number} uncompressedSize the size of the data after decompression.\n * @param {number} crc32 the crc32 of the decompressed file.\n * @param {object} compression the type of compression, see lib/compressions.js.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the compressed data.\n */\nfunction CompressedObject(compressedSize, uncompressedSize, crc32, compression, data) {\n this.compressedSize = compressedSize;\n this.uncompressedSize = uncompressedSize;\n this.crc32 = crc32;\n this.compression = compression;\n this.compressedContent = data;\n}\n\nCompressedObject.prototype = {\n /**\n * Create a worker to get the uncompressed content.\n * @return {GenericWorker} the worker.\n */\n getContentWorker : function () {\n var worker = new DataWorker(external.Promise.resolve(this.compressedContent))\n .pipe(this.compression.uncompressWorker())\n .pipe(new DataLengthProbe(\"data_length\"));\n\n var that = this;\n worker.on(\"end\", function () {\n if(this.streamInfo['data_length'] !== that.uncompressedSize) {\n throw new Error(\"Bug : uncompressed data size mismatch\");\n }\n });\n return worker;\n },\n /**\n * Create a worker to get the compressed content.\n * @return {GenericWorker} the worker.\n */\n getCompressedWorker : function () {\n return new DataWorker(external.Promise.resolve(this.compressedContent))\n .withStreamInfo(\"compressedSize\", this.compressedSize)\n .withStreamInfo(\"uncompressedSize\", this.uncompressedSize)\n .withStreamInfo(\"crc32\", this.crc32)\n .withStreamInfo(\"compression\", this.compression)\n ;\n }\n};\n\n/**\n * Chain the given worker with other workers to compress the content with the\n * given compresion.\n * @param {GenericWorker} uncompressedWorker the worker to pipe.\n * @param {Object} compression the compression object.\n * @param {Object} compressionOptions the options to use when compressing.\n * @return {GenericWorker} the new worker compressing the content.\n */\nCompressedObject.createWorkerFrom = function (uncompressedWorker, compression, compressionOptions) {\n return uncompressedWorker\n .pipe(new Crc32Probe())\n .pipe(new DataLengthProbe(\"uncompressedSize\"))\n .pipe(compression.compressWorker(compressionOptions))\n .pipe(new DataLengthProbe(\"compressedSize\"))\n .withStreamInfo(\"compression\", compression);\n};\n\nmodule.exports = CompressedObject;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/lib/compressedObject.js\n// module id = 180\n// module chunks = 1","'use strict';\n\nvar utils = require('./utils');\n\n/**\n * The following functions come from pako, from pako/lib/zlib/crc32.js\n * released under the MIT license, see pako https://github.com/nodeca/pako/\n */\n\n// Use ordinary array, since untyped makes no boost here\nfunction makeTable() {\n var c, table = [];\n\n for(var n =0; n < 256; n++){\n c = n;\n for(var k =0; k < 8; k++){\n c = ((c&1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n }\n table[n] = c;\n }\n\n return table;\n}\n\n// Create table on load. Just 255 signed longs. Not a problem.\nvar crcTable = makeTable();\n\n\nfunction crc32(crc, buf, len, pos) {\n var t = crcTable, end = pos + len;\n\n crc = crc ^ (-1);\n\n for (var i = pos; i < end; i++ ) {\n crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n}\n\n// That's all for the pako functions.\n\n/**\n * Compute the crc32 of a string.\n * This is almost the same as the function crc32, but for strings. Using the\n * same function for the two use cases leads to horrible performances.\n * @param {Number} crc the starting value of the crc.\n * @param {String} str the string to use.\n * @param {Number} len the length of the string.\n * @param {Number} pos the starting position for the crc32 computation.\n * @return {Number} the computed crc32.\n */\nfunction crc32str(crc, str, len, pos) {\n var t = crcTable, end = pos + len;\n\n crc = crc ^ (-1);\n\n for (var i = pos; i < end; i++ ) {\n crc = (crc >>> 8) ^ t[(crc ^ str.charCodeAt(i)) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n}\n\nmodule.exports = function crc32wrapper(input, crc) {\n if (typeof input === \"undefined\" || !input.length) {\n return 0;\n }\n\n var isArray = utils.getTypeOf(input) !== \"string\";\n\n if(isArray) {\n return crc32(crc|0, input, input.length, 0);\n } else {\n return crc32str(crc|0, input, input.length, 0);\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/lib/crc32.js\n// module id = 181\n// module chunks = 1","import { vec3, mat4, glMatrix } from 'gl-matrix';\n\nconst NoOp = (v) => v;\n\nconst IDENTITY = new Float64Array(16);\nmat4.identity(IDENTITY);\n\nclass Transform {\n constructor(useDegre = false) {\n this.matrix = new Float64Array(16);\n mat4.identity(this.matrix);\n this.tmp = new Float64Array(3);\n this.angleConv = useDegre ? glMatrix.toRadian : NoOp;\n }\n\n rotateFromDirections(originDirection, targetDirection) {\n const src = new Float64Array(3);\n const dst = new Float64Array(3);\n const transf = new Float64Array(16);\n\n vec3.set(src, originDirection[0], originDirection[1], originDirection[2]);\n vec3.set(dst, targetDirection[0], targetDirection[1], targetDirection[2]);\n vec3.normalize(src, src);\n vec3.normalize(dst, dst);\n const cosAlpha = vec3.dot(src, dst);\n if (cosAlpha >= 1) {\n return this;\n }\n\n vec3.cross(this.tmp, src, dst);\n mat4.fromRotation(transf, Math.acos(cosAlpha), this.tmp);\n mat4.multiply(this.matrix, this.matrix, transf);\n\n return this;\n }\n\n rotate(angle, axis) {\n vec3.set(this.tmp, ...axis);\n vec3.normalize(this.tmp, this.tmp);\n mat4.rotate(this.matrix, this.matrix, this.angleConv(angle), this.tmp);\n return this;\n }\n\n rotateX(angle) {\n mat4.rotateX(this.matrix, this.matrix, this.angleConv(angle));\n return this;\n }\n\n rotateY(angle) {\n mat4.rotateY(this.matrix, this.matrix, this.angleConv(angle));\n return this;\n }\n\n rotateZ(angle) {\n mat4.rotateZ(this.matrix, this.matrix, this.angleConv(angle));\n return this;\n }\n\n translate(x, y, z) {\n vec3.set(this.tmp, x, y, z);\n mat4.translate(this.matrix, this.matrix, this.tmp);\n return this;\n }\n\n scale(sx, sy, sz) {\n vec3.set(this.tmp, sx, sy, sz);\n mat4.scale(this.matrix, this.matrix, this.tmp);\n return this;\n }\n\n apply(typedArray, offset = 0, nbIterations = -1) {\n if (\n IDENTITY[0] === this.matrix[0] &&\n IDENTITY[1] === this.matrix[1] &&\n IDENTITY[2] === this.matrix[2] &&\n IDENTITY[3] === this.matrix[3] &&\n IDENTITY[4] === this.matrix[4] &&\n IDENTITY[5] === this.matrix[5] &&\n IDENTITY[6] === this.matrix[6] &&\n IDENTITY[7] === this.matrix[7] &&\n IDENTITY[8] === this.matrix[8] &&\n IDENTITY[9] === this.matrix[9] &&\n IDENTITY[10] === this.matrix[10] &&\n IDENTITY[11] === this.matrix[11] &&\n IDENTITY[12] === this.matrix[12] &&\n IDENTITY[13] === this.matrix[13] &&\n IDENTITY[14] === this.matrix[14] &&\n IDENTITY[15] === this.matrix[15]\n ) {\n // Make sure we can chain apply...\n return this;\n }\n\n const size =\n nbIterations === -1 ? typedArray.length : offset + nbIterations * 3;\n for (let i = offset; i < size; i += 3) {\n vec3.set(this.tmp, typedArray[i], typedArray[i + 1], typedArray[i + 2]);\n vec3.transformMat4(this.tmp, this.tmp, this.matrix);\n typedArray[i] = this.tmp[0];\n typedArray[i + 1] = this.tmp[1];\n typedArray[i + 2] = this.tmp[2];\n }\n\n // Make sure we can chain apply...\n return this;\n }\n\n getMatrix() {\n return this.matrix;\n }\n\n setMatrix(mat4x4) {\n if (!!mat4x4 && mat4x4.length === 16) {\n this.matrix[0] = mat4x4[0];\n this.matrix[1] = mat4x4[1];\n this.matrix[2] = mat4x4[2];\n this.matrix[3] = mat4x4[3];\n this.matrix[4] = mat4x4[4];\n this.matrix[5] = mat4x4[5];\n this.matrix[6] = mat4x4[6];\n this.matrix[7] = mat4x4[7];\n this.matrix[8] = mat4x4[8];\n this.matrix[9] = mat4x4[9];\n this.matrix[10] = mat4x4[10];\n this.matrix[11] = mat4x4[11];\n this.matrix[12] = mat4x4[12];\n this.matrix[13] = mat4x4[13];\n this.matrix[14] = mat4x4[14];\n this.matrix[15] = mat4x4[15];\n }\n return this;\n }\n\n identity() {\n mat4.identity(this.matrix);\n return this;\n }\n}\n\nfunction buildFromDegree() {\n return new Transform(true);\n}\n\nfunction buildFromRadian() {\n return new Transform(false);\n}\n\nexport default {\n buildFromDegree,\n buildFromRadian,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Common/Core/MatrixBuilder/index.js","/* Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV.\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy\r\nof this software and associated documentation files (the \"Software\"), to deal\r\nin the Software without restriction, including without limitation the rights\r\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the Software is\r\nfurnished to do so, subject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be included in\r\nall copies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\nTHE SOFTWARE. */\r\n\r\nimport * as glMatrix from \"./common.js\";\r\n\r\n/**\r\n * 3x3 Matrix\r\n * @module mat3\r\n */\r\n\r\n/**\r\n * Creates a new identity mat3\r\n *\r\n * @returns {mat3} a new 3x3 matrix\r\n */\r\nexport function create() {\r\n let out = new glMatrix.ARRAY_TYPE(9);\r\n out[0] = 1;\r\n out[1] = 0;\r\n out[2] = 0;\r\n out[3] = 0;\r\n out[4] = 1;\r\n out[5] = 0;\r\n out[6] = 0;\r\n out[7] = 0;\r\n out[8] = 1;\r\n return out;\r\n}\r\n\r\n/**\r\n * Copies the upper-left 3x3 values into the given mat3.\r\n *\r\n * @param {mat3} out the receiving 3x3 matrix\r\n * @param {mat4} a the source 4x4 matrix\r\n * @returns {mat3} out\r\n */\r\nexport function fromMat4(out, a) {\r\n out[0] = a[0];\r\n out[1] = a[1];\r\n out[2] = a[2];\r\n out[3] = a[4];\r\n out[4] = a[5];\r\n out[5] = a[6];\r\n out[6] = a[8];\r\n out[7] = a[9];\r\n out[8] = a[10];\r\n return out;\r\n}\r\n\r\n/**\r\n * Creates a new mat3 initialized with values from an existing matrix\r\n *\r\n * @param {mat3} a matrix to clone\r\n * @returns {mat3} a new 3x3 matrix\r\n */\r\nexport function clone(a) {\r\n let out = new glMatrix.ARRAY_TYPE(9);\r\n out[0] = a[0];\r\n out[1] = a[1];\r\n out[2] = a[2];\r\n out[3] = a[3];\r\n out[4] = a[4];\r\n out[5] = a[5];\r\n out[6] = a[6];\r\n out[7] = a[7];\r\n out[8] = a[8];\r\n return out;\r\n}\r\n\r\n/**\r\n * Copy the values from one mat3 to another\r\n *\r\n * @param {mat3} out the receiving matrix\r\n * @param {mat3} a the source matrix\r\n * @returns {mat3} out\r\n */\r\nexport function copy(out, a) {\r\n out[0] = a[0];\r\n out[1] = a[1];\r\n out[2] = a[2];\r\n out[3] = a[3];\r\n out[4] = a[4];\r\n out[5] = a[5];\r\n out[6] = a[6];\r\n out[7] = a[7];\r\n out[8] = a[8];\r\n return out;\r\n}\r\n\r\n/**\r\n * Create a new mat3 with the given values\r\n *\r\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\r\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\r\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\r\n * @param {Number} m10 Component in column 1, row 0 position (index 3)\r\n * @param {Number} m11 Component in column 1, row 1 position (index 4)\r\n * @param {Number} m12 Component in column 1, row 2 position (index 5)\r\n * @param {Number} m20 Component in column 2, row 0 position (index 6)\r\n * @param {Number} m21 Component in column 2, row 1 position (index 7)\r\n * @param {Number} m22 Component in column 2, row 2 position (index 8)\r\n * @returns {mat3} A new mat3\r\n */\r\nexport function fromValues(m00, m01, m02, m10, m11, m12, m20, m21, m22) {\r\n let out = new glMatrix.ARRAY_TYPE(9);\r\n out[0] = m00;\r\n out[1] = m01;\r\n out[2] = m02;\r\n out[3] = m10;\r\n out[4] = m11;\r\n out[5] = m12;\r\n out[6] = m20;\r\n out[7] = m21;\r\n out[8] = m22;\r\n return out;\r\n}\r\n\r\n/**\r\n * Set the components of a mat3 to the given values\r\n *\r\n * @param {mat3} out the receiving matrix\r\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\r\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\r\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\r\n * @param {Number} m10 Component in column 1, row 0 position (index 3)\r\n * @param {Number} m11 Component in column 1, row 1 position (index 4)\r\n * @param {Number} m12 Component in column 1, row 2 position (index 5)\r\n * @param {Number} m20 Component in column 2, row 0 position (index 6)\r\n * @param {Number} m21 Component in column 2, row 1 position (index 7)\r\n * @param {Number} m22 Component in column 2, row 2 position (index 8)\r\n * @returns {mat3} out\r\n */\r\nexport function set(out, m00, m01, m02, m10, m11, m12, m20, m21, m22) {\r\n out[0] = m00;\r\n out[1] = m01;\r\n out[2] = m02;\r\n out[3] = m10;\r\n out[4] = m11;\r\n out[5] = m12;\r\n out[6] = m20;\r\n out[7] = m21;\r\n out[8] = m22;\r\n return out;\r\n}\r\n\r\n/**\r\n * Set a mat3 to the identity matrix\r\n *\r\n * @param {mat3} out the receiving matrix\r\n * @returns {mat3} out\r\n */\r\nexport function identity(out) {\r\n out[0] = 1;\r\n out[1] = 0;\r\n out[2] = 0;\r\n out[3] = 0;\r\n out[4] = 1;\r\n out[5] = 0;\r\n out[6] = 0;\r\n out[7] = 0;\r\n out[8] = 1;\r\n return out;\r\n}\r\n\r\n/**\r\n * Transpose the values of a mat3\r\n *\r\n * @param {mat3} out the receiving matrix\r\n * @param {mat3} a the source matrix\r\n * @returns {mat3} out\r\n */\r\nexport function transpose(out, a) {\r\n // If we are transposing ourselves we can skip a few steps but have to cache some values\r\n if (out === a) {\r\n let a01 = a[1], a02 = a[2], a12 = a[5];\r\n out[1] = a[3];\r\n out[2] = a[6];\r\n out[3] = a01;\r\n out[5] = a[7];\r\n out[6] = a02;\r\n out[7] = a12;\r\n } else {\r\n out[0] = a[0];\r\n out[1] = a[3];\r\n out[2] = a[6];\r\n out[3] = a[1];\r\n out[4] = a[4];\r\n out[5] = a[7];\r\n out[6] = a[2];\r\n out[7] = a[5];\r\n out[8] = a[8];\r\n }\r\n\r\n return out;\r\n}\r\n\r\n/**\r\n * Inverts a mat3\r\n *\r\n * @param {mat3} out the receiving matrix\r\n * @param {mat3} a the source matrix\r\n * @returns {mat3} out\r\n */\r\nexport function invert(out, a) {\r\n let a00 = a[0], a01 = a[1], a02 = a[2];\r\n let a10 = a[3], a11 = a[4], a12 = a[5];\r\n let a20 = a[6], a21 = a[7], a22 = a[8];\r\n\r\n let b01 = a22 * a11 - a12 * a21;\r\n let b11 = -a22 * a10 + a12 * a20;\r\n let b21 = a21 * a10 - a11 * a20;\r\n\r\n // Calculate the determinant\r\n let det = a00 * b01 + a01 * b11 + a02 * b21;\r\n\r\n if (!det) {\r\n return null;\r\n }\r\n det = 1.0 / det;\r\n\r\n out[0] = b01 * det;\r\n out[1] = (-a22 * a01 + a02 * a21) * det;\r\n out[2] = (a12 * a01 - a02 * a11) * det;\r\n out[3] = b11 * det;\r\n out[4] = (a22 * a00 - a02 * a20) * det;\r\n out[5] = (-a12 * a00 + a02 * a10) * det;\r\n out[6] = b21 * det;\r\n out[7] = (-a21 * a00 + a01 * a20) * det;\r\n out[8] = (a11 * a00 - a01 * a10) * det;\r\n return out;\r\n}\r\n\r\n/**\r\n * Calculates the adjugate of a mat3\r\n *\r\n * @param {mat3} out the receiving matrix\r\n * @param {mat3} a the source matrix\r\n * @returns {mat3} out\r\n */\r\nexport function adjoint(out, a) {\r\n let a00 = a[0], a01 = a[1], a02 = a[2];\r\n let a10 = a[3], a11 = a[4], a12 = a[5];\r\n let a20 = a[6], a21 = a[7], a22 = a[8];\r\n\r\n out[0] = (a11 * a22 - a12 * a21);\r\n out[1] = (a02 * a21 - a01 * a22);\r\n out[2] = (a01 * a12 - a02 * a11);\r\n out[3] = (a12 * a20 - a10 * a22);\r\n out[4] = (a00 * a22 - a02 * a20);\r\n out[5] = (a02 * a10 - a00 * a12);\r\n out[6] = (a10 * a21 - a11 * a20);\r\n out[7] = (a01 * a20 - a00 * a21);\r\n out[8] = (a00 * a11 - a01 * a10);\r\n return out;\r\n}\r\n\r\n/**\r\n * Calculates the determinant of a mat3\r\n *\r\n * @param {mat3} a the source matrix\r\n * @returns {Number} determinant of a\r\n */\r\nexport function determinant(a) {\r\n let a00 = a[0], a01 = a[1], a02 = a[2];\r\n let a10 = a[3], a11 = a[4], a12 = a[5];\r\n let a20 = a[6], a21 = a[7], a22 = a[8];\r\n\r\n return a00 * (a22 * a11 - a12 * a21) + a01 * (-a22 * a10 + a12 * a20) + a02 * (a21 * a10 - a11 * a20);\r\n}\r\n\r\n/**\r\n * Multiplies two mat3's\r\n *\r\n * @param {mat3} out the receiving matrix\r\n * @param {mat3} a the first operand\r\n * @param {mat3} b the second operand\r\n * @returns {mat3} out\r\n */\r\nexport function multiply(out, a, b) {\r\n let a00 = a[0], a01 = a[1], a02 = a[2];\r\n let a10 = a[3], a11 = a[4], a12 = a[5];\r\n let a20 = a[6], a21 = a[7], a22 = a[8];\r\n\r\n let b00 = b[0], b01 = b[1], b02 = b[2];\r\n let b10 = b[3], b11 = b[4], b12 = b[5];\r\n let b20 = b[6], b21 = b[7], b22 = b[8];\r\n\r\n out[0] = b00 * a00 + b01 * a10 + b02 * a20;\r\n out[1] = b00 * a01 + b01 * a11 + b02 * a21;\r\n out[2] = b00 * a02 + b01 * a12 + b02 * a22;\r\n\r\n out[3] = b10 * a00 + b11 * a10 + b12 * a20;\r\n out[4] = b10 * a01 + b11 * a11 + b12 * a21;\r\n out[5] = b10 * a02 + b11 * a12 + b12 * a22;\r\n\r\n out[6] = b20 * a00 + b21 * a10 + b22 * a20;\r\n out[7] = b20 * a01 + b21 * a11 + b22 * a21;\r\n out[8] = b20 * a02 + b21 * a12 + b22 * a22;\r\n return out;\r\n}\r\n\r\n/**\r\n * Translate a mat3 by the given vector\r\n *\r\n * @param {mat3} out the receiving matrix\r\n * @param {mat3} a the matrix to translate\r\n * @param {vec2} v vector to translate by\r\n * @returns {mat3} out\r\n */\r\nexport function translate(out, a, v) {\r\n let a00 = a[0], a01 = a[1], a02 = a[2],\r\n a10 = a[3], a11 = a[4], a12 = a[5],\r\n a20 = a[6], a21 = a[7], a22 = a[8],\r\n x = v[0], y = v[1];\r\n\r\n out[0] = a00;\r\n out[1] = a01;\r\n out[2] = a02;\r\n\r\n out[3] = a10;\r\n out[4] = a11;\r\n out[5] = a12;\r\n\r\n out[6] = x * a00 + y * a10 + a20;\r\n out[7] = x * a01 + y * a11 + a21;\r\n out[8] = x * a02 + y * a12 + a22;\r\n return out;\r\n}\r\n\r\n/**\r\n * Rotates a mat3 by the given angle\r\n *\r\n * @param {mat3} out the receiving matrix\r\n * @param {mat3} a the matrix to rotate\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat3} out\r\n */\r\nexport function rotate(out, a, rad) {\r\n let a00 = a[0], a01 = a[1], a02 = a[2],\r\n a10 = a[3], a11 = a[4], a12 = a[5],\r\n a20 = a[6], a21 = a[7], a22 = a[8],\r\n\r\n s = Math.sin(rad),\r\n c = Math.cos(rad);\r\n\r\n out[0] = c * a00 + s * a10;\r\n out[1] = c * a01 + s * a11;\r\n out[2] = c * a02 + s * a12;\r\n\r\n out[3] = c * a10 - s * a00;\r\n out[4] = c * a11 - s * a01;\r\n out[5] = c * a12 - s * a02;\r\n\r\n out[6] = a20;\r\n out[7] = a21;\r\n out[8] = a22;\r\n return out;\r\n};\r\n\r\n/**\r\n * Scales the mat3 by the dimensions in the given vec2\r\n *\r\n * @param {mat3} out the receiving matrix\r\n * @param {mat3} a the matrix to rotate\r\n * @param {vec2} v the vec2 to scale the matrix by\r\n * @returns {mat3} out\r\n **/\r\nexport function scale(out, a, v) {\r\n let x = v[0], y = v[1];\r\n\r\n out[0] = x * a[0];\r\n out[1] = x * a[1];\r\n out[2] = x * a[2];\r\n\r\n out[3] = y * a[3];\r\n out[4] = y * a[4];\r\n out[5] = y * a[5];\r\n\r\n out[6] = a[6];\r\n out[7] = a[7];\r\n out[8] = a[8];\r\n return out;\r\n}\r\n\r\n/**\r\n * Creates a matrix from a vector translation\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat3.identity(dest);\r\n * mat3.translate(dest, dest, vec);\r\n *\r\n * @param {mat3} out mat3 receiving operation result\r\n * @param {vec2} v Translation vector\r\n * @returns {mat3} out\r\n */\r\nexport function fromTranslation(out, v) {\r\n out[0] = 1;\r\n out[1] = 0;\r\n out[2] = 0;\r\n out[3] = 0;\r\n out[4] = 1;\r\n out[5] = 0;\r\n out[6] = v[0];\r\n out[7] = v[1];\r\n out[8] = 1;\r\n return out;\r\n}\r\n\r\n/**\r\n * Creates a matrix from a given angle\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat3.identity(dest);\r\n * mat3.rotate(dest, dest, rad);\r\n *\r\n * @param {mat3} out mat3 receiving operation result\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat3} out\r\n */\r\nexport function fromRotation(out, rad) {\r\n let s = Math.sin(rad), c = Math.cos(rad);\r\n\r\n out[0] = c;\r\n out[1] = s;\r\n out[2] = 0;\r\n\r\n out[3] = -s;\r\n out[4] = c;\r\n out[5] = 0;\r\n\r\n out[6] = 0;\r\n out[7] = 0;\r\n out[8] = 1;\r\n return out;\r\n}\r\n\r\n/**\r\n * Creates a matrix from a vector scaling\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat3.identity(dest);\r\n * mat3.scale(dest, dest, vec);\r\n *\r\n * @param {mat3} out mat3 receiving operation result\r\n * @param {vec2} v Scaling vector\r\n * @returns {mat3} out\r\n */\r\nexport function fromScaling(out, v) {\r\n out[0] = v[0];\r\n out[1] = 0;\r\n out[2] = 0;\r\n\r\n out[3] = 0;\r\n out[4] = v[1];\r\n out[5] = 0;\r\n\r\n out[6] = 0;\r\n out[7] = 0;\r\n out[8] = 1;\r\n return out;\r\n}\r\n\r\n/**\r\n * Copies the values from a mat2d into a mat3\r\n *\r\n * @param {mat3} out the receiving matrix\r\n * @param {mat2d} a the matrix to copy\r\n * @returns {mat3} out\r\n **/\r\nexport function fromMat2d(out, a) {\r\n out[0] = a[0];\r\n out[1] = a[1];\r\n out[2] = 0;\r\n\r\n out[3] = a[2];\r\n out[4] = a[3];\r\n out[5] = 0;\r\n\r\n out[6] = a[4];\r\n out[7] = a[5];\r\n out[8] = 1;\r\n return out;\r\n}\r\n\r\n/**\r\n* Calculates a 3x3 matrix from the given quaternion\r\n*\r\n* @param {mat3} out mat3 receiving operation result\r\n* @param {quat} q Quaternion to create matrix from\r\n*\r\n* @returns {mat3} out\r\n*/\r\nexport function fromQuat(out, q) {\r\n let x = q[0], y = q[1], z = q[2], w = q[3];\r\n let x2 = x + x;\r\n let y2 = y + y;\r\n let z2 = z + z;\r\n\r\n let xx = x * x2;\r\n let yx = y * x2;\r\n let yy = y * y2;\r\n let zx = z * x2;\r\n let zy = z * y2;\r\n let zz = z * z2;\r\n let wx = w * x2;\r\n let wy = w * y2;\r\n let wz = w * z2;\r\n\r\n out[0] = 1 - yy - zz;\r\n out[3] = yx - wz;\r\n out[6] = zx + wy;\r\n\r\n out[1] = yx + wz;\r\n out[4] = 1 - xx - zz;\r\n out[7] = zy - wx;\r\n\r\n out[2] = zx - wy;\r\n out[5] = zy + wx;\r\n out[8] = 1 - xx - yy;\r\n\r\n return out;\r\n}\r\n\r\n/**\r\n* Calculates a 3x3 normal matrix (transpose inverse) from the 4x4 matrix\r\n*\r\n* @param {mat3} out mat3 receiving operation result\r\n* @param {mat4} a Mat4 to derive the normal matrix from\r\n*\r\n* @returns {mat3} out\r\n*/\r\nexport function normalFromMat4(out, a) {\r\n let a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3];\r\n let a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];\r\n let a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11];\r\n let a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];\r\n\r\n let b00 = a00 * a11 - a01 * a10;\r\n let b01 = a00 * a12 - a02 * a10;\r\n let b02 = a00 * a13 - a03 * a10;\r\n let b03 = a01 * a12 - a02 * a11;\r\n let b04 = a01 * a13 - a03 * a11;\r\n let b05 = a02 * a13 - a03 * a12;\r\n let b06 = a20 * a31 - a21 * a30;\r\n let b07 = a20 * a32 - a22 * a30;\r\n let b08 = a20 * a33 - a23 * a30;\r\n let b09 = a21 * a32 - a22 * a31;\r\n let b10 = a21 * a33 - a23 * a31;\r\n let b11 = a22 * a33 - a23 * a32;\r\n\r\n // Calculate the determinant\r\n let det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\r\n\r\n if (!det) {\r\n return null;\r\n }\r\n det = 1.0 / det;\r\n\r\n out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\r\n out[1] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\r\n out[2] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\r\n\r\n out[3] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\r\n out[4] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\r\n out[5] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\r\n\r\n out[6] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\r\n out[7] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\r\n out[8] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\r\n\r\n return out;\r\n}\r\n\r\n/**\r\n * Generates a 2D projection matrix with the given bounds\r\n *\r\n * @param {mat3} out mat3 frustum matrix will be written into\r\n * @param {number} width Width of your gl context\r\n * @param {number} height Height of gl context\r\n * @returns {mat3} out\r\n */\r\nexport function projection(out, width, height) {\r\n out[0] = 2 / width;\r\n out[1] = 0;\r\n out[2] = 0;\r\n out[3] = 0;\r\n out[4] = -2 / height;\r\n out[5] = 0;\r\n out[6] = -1;\r\n out[7] = 1;\r\n out[8] = 1;\r\n return out;\r\n}\r\n\r\n/**\r\n * Returns a string representation of a mat3\r\n *\r\n * @param {mat3} a matrix to represent as a string\r\n * @returns {String} string representation of the matrix\r\n */\r\nexport function str(a) {\r\n return 'mat3(' + a[0] + ', ' + a[1] + ', ' + a[2] + ', ' +\r\n a[3] + ', ' + a[4] + ', ' + a[5] + ', ' +\r\n a[6] + ', ' + a[7] + ', ' + a[8] + ')';\r\n}\r\n\r\n/**\r\n * Returns Frobenius norm of a mat3\r\n *\r\n * @param {mat3} a the matrix to calculate Frobenius norm of\r\n * @returns {Number} Frobenius norm\r\n */\r\nexport function frob(a) {\r\n return(Math.sqrt(Math.pow(a[0], 2) + Math.pow(a[1], 2) + Math.pow(a[2], 2) + Math.pow(a[3], 2) + Math.pow(a[4], 2) + Math.pow(a[5], 2) + Math.pow(a[6], 2) + Math.pow(a[7], 2) + Math.pow(a[8], 2)))\r\n}\r\n\r\n/**\r\n * Adds two mat3's\r\n *\r\n * @param {mat3} out the receiving matrix\r\n * @param {mat3} a the first operand\r\n * @param {mat3} b the second operand\r\n * @returns {mat3} out\r\n */\r\nexport function add(out, a, b) {\r\n out[0] = a[0] + b[0];\r\n out[1] = a[1] + b[1];\r\n out[2] = a[2] + b[2];\r\n out[3] = a[3] + b[3];\r\n out[4] = a[4] + b[4];\r\n out[5] = a[5] + b[5];\r\n out[6] = a[6] + b[6];\r\n out[7] = a[7] + b[7];\r\n out[8] = a[8] + b[8];\r\n return out;\r\n}\r\n\r\n/**\r\n * Subtracts matrix b from matrix a\r\n *\r\n * @param {mat3} out the receiving matrix\r\n * @param {mat3} a the first operand\r\n * @param {mat3} b the second operand\r\n * @returns {mat3} out\r\n */\r\nexport function subtract(out, a, b) {\r\n out[0] = a[0] - b[0];\r\n out[1] = a[1] - b[1];\r\n out[2] = a[2] - b[2];\r\n out[3] = a[3] - b[3];\r\n out[4] = a[4] - b[4];\r\n out[5] = a[5] - b[5];\r\n out[6] = a[6] - b[6];\r\n out[7] = a[7] - b[7];\r\n out[8] = a[8] - b[8];\r\n return out;\r\n}\r\n\r\n\r\n\r\n/**\r\n * Multiply each element of the matrix by a scalar.\r\n *\r\n * @param {mat3} out the receiving matrix\r\n * @param {mat3} a the matrix to scale\r\n * @param {Number} b amount to scale the matrix's elements by\r\n * @returns {mat3} out\r\n */\r\nexport function multiplyScalar(out, a, b) {\r\n out[0] = a[0] * b;\r\n out[1] = a[1] * b;\r\n out[2] = a[2] * b;\r\n out[3] = a[3] * b;\r\n out[4] = a[4] * b;\r\n out[5] = a[5] * b;\r\n out[6] = a[6] * b;\r\n out[7] = a[7] * b;\r\n out[8] = a[8] * b;\r\n return out;\r\n}\r\n\r\n/**\r\n * Adds two mat3's after multiplying each element of the second operand by a scalar value.\r\n *\r\n * @param {mat3} out the receiving vector\r\n * @param {mat3} a the first operand\r\n * @param {mat3} b the second operand\r\n * @param {Number} scale the amount to scale b's elements by before adding\r\n * @returns {mat3} out\r\n */\r\nexport function multiplyScalarAndAdd(out, a, b, scale) {\r\n out[0] = a[0] + (b[0] * scale);\r\n out[1] = a[1] + (b[1] * scale);\r\n out[2] = a[2] + (b[2] * scale);\r\n out[3] = a[3] + (b[3] * scale);\r\n out[4] = a[4] + (b[4] * scale);\r\n out[5] = a[5] + (b[5] * scale);\r\n out[6] = a[6] + (b[6] * scale);\r\n out[7] = a[7] + (b[7] * scale);\r\n out[8] = a[8] + (b[8] * scale);\r\n return out;\r\n}\r\n\r\n/**\r\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\r\n *\r\n * @param {mat3} a The first matrix.\r\n * @param {mat3} b The second matrix.\r\n * @returns {Boolean} True if the matrices are equal, false otherwise.\r\n */\r\nexport function exactEquals(a, b) {\r\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] &&\r\n a[3] === b[3] && a[4] === b[4] && a[5] === b[5] &&\r\n a[6] === b[6] && a[7] === b[7] && a[8] === b[8];\r\n}\r\n\r\n/**\r\n * Returns whether or not the matrices have approximately the same elements in the same position.\r\n *\r\n * @param {mat3} a The first matrix.\r\n * @param {mat3} b The second matrix.\r\n * @returns {Boolean} True if the matrices are equal, false otherwise.\r\n */\r\nexport function equals(a, b) {\r\n let a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5], a6 = a[6], a7 = a[7], a8 = a[8];\r\n let b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7], b8 = b[8];\r\n return (Math.abs(a0 - b0) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a0), Math.abs(b0)) &&\r\n Math.abs(a1 - b1) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a1), Math.abs(b1)) &&\r\n Math.abs(a2 - b2) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a2), Math.abs(b2)) &&\r\n Math.abs(a3 - b3) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a3), Math.abs(b3)) &&\r\n Math.abs(a4 - b4) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a4), Math.abs(b4)) &&\r\n Math.abs(a5 - b5) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a5), Math.abs(b5)) &&\r\n Math.abs(a6 - b6) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a6), Math.abs(b6)) &&\r\n Math.abs(a7 - b7) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a7), Math.abs(b7)) &&\r\n Math.abs(a8 - b8) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a8), Math.abs(b8)));\r\n}\r\n\r\n/**\r\n * Alias for {@link mat3.multiply}\r\n * @function\r\n */\r\nexport const mul = multiply;\r\n\r\n/**\r\n * Alias for {@link mat3.subtract}\r\n * @function\r\n */\r\nexport const sub = subtract;\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/node_modules/gl-matrix/src/gl-matrix/mat3.js","/* Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV.\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy\r\nof this software and associated documentation files (the \"Software\"), to deal\r\nin the Software without restriction, including without limitation the rights\r\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the Software is\r\nfurnished to do so, subject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be included in\r\nall copies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\nTHE SOFTWARE. */\r\n\r\nimport * as glMatrix from \"./common.js\";\r\n\r\n/**\r\n * @class 4x4 Matrix<br>Format: column-major, when typed out it looks like row-major<br>The matrices are being post multiplied.\r\n * @name mat4\r\n */\r\n\r\n/**\r\n * Creates a new identity mat4\r\n *\r\n * @returns {mat4} a new 4x4 matrix\r\n */\r\nexport function create() {\r\n let out = new glMatrix.ARRAY_TYPE(16);\r\n out[0] = 1;\r\n out[1] = 0;\r\n out[2] = 0;\r\n out[3] = 0;\r\n out[4] = 0;\r\n out[5] = 1;\r\n out[6] = 0;\r\n out[7] = 0;\r\n out[8] = 0;\r\n out[9] = 0;\r\n out[10] = 1;\r\n out[11] = 0;\r\n out[12] = 0;\r\n out[13] = 0;\r\n out[14] = 0;\r\n out[15] = 1;\r\n return out;\r\n}\r\n\r\n/**\r\n * Creates a new mat4 initialized with values from an existing matrix\r\n *\r\n * @param {mat4} a matrix to clone\r\n * @returns {mat4} a new 4x4 matrix\r\n */\r\nexport function clone(a) {\r\n let out = new glMatrix.ARRAY_TYPE(16);\r\n out[0] = a[0];\r\n out[1] = a[1];\r\n out[2] = a[2];\r\n out[3] = a[3];\r\n out[4] = a[4];\r\n out[5] = a[5];\r\n out[6] = a[6];\r\n out[7] = a[7];\r\n out[8] = a[8];\r\n out[9] = a[9];\r\n out[10] = a[10];\r\n out[11] = a[11];\r\n out[12] = a[12];\r\n out[13] = a[13];\r\n out[14] = a[14];\r\n out[15] = a[15];\r\n return out;\r\n}\r\n\r\n/**\r\n * Copy the values from one mat4 to another\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the source matrix\r\n * @returns {mat4} out\r\n */\r\nexport function copy(out, a) {\r\n out[0] = a[0];\r\n out[1] = a[1];\r\n out[2] = a[2];\r\n out[3] = a[3];\r\n out[4] = a[4];\r\n out[5] = a[5];\r\n out[6] = a[6];\r\n out[7] = a[7];\r\n out[8] = a[8];\r\n out[9] = a[9];\r\n out[10] = a[10];\r\n out[11] = a[11];\r\n out[12] = a[12];\r\n out[13] = a[13];\r\n out[14] = a[14];\r\n out[15] = a[15];\r\n return out;\r\n}\r\n\r\n/**\r\n * Create a new mat4 with the given values\r\n *\r\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\r\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\r\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\r\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\r\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\r\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\r\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\r\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\r\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\r\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\r\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\r\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\r\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\r\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\r\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\r\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\r\n * @returns {mat4} A new mat4\r\n */\r\nexport function fromValues(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\r\n let out = new glMatrix.ARRAY_TYPE(16);\r\n out[0] = m00;\r\n out[1] = m01;\r\n out[2] = m02;\r\n out[3] = m03;\r\n out[4] = m10;\r\n out[5] = m11;\r\n out[6] = m12;\r\n out[7] = m13;\r\n out[8] = m20;\r\n out[9] = m21;\r\n out[10] = m22;\r\n out[11] = m23;\r\n out[12] = m30;\r\n out[13] = m31;\r\n out[14] = m32;\r\n out[15] = m33;\r\n return out;\r\n}\r\n\r\n/**\r\n * Set the components of a mat4 to the given values\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\r\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\r\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\r\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\r\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\r\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\r\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\r\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\r\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\r\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\r\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\r\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\r\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\r\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\r\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\r\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\r\n * @returns {mat4} out\r\n */\r\nexport function set(out, m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\r\n out[0] = m00;\r\n out[1] = m01;\r\n out[2] = m02;\r\n out[3] = m03;\r\n out[4] = m10;\r\n out[5] = m11;\r\n out[6] = m12;\r\n out[7] = m13;\r\n out[8] = m20;\r\n out[9] = m21;\r\n out[10] = m22;\r\n out[11] = m23;\r\n out[12] = m30;\r\n out[13] = m31;\r\n out[14] = m32;\r\n out[15] = m33;\r\n return out;\r\n}\r\n\r\n\r\n/**\r\n * Set a mat4 to the identity matrix\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @returns {mat4} out\r\n */\r\nexport function identity(out) {\r\n out[0] = 1;\r\n out[1] = 0;\r\n out[2] = 0;\r\n out[3] = 0;\r\n out[4] = 0;\r\n out[5] = 1;\r\n out[6] = 0;\r\n out[7] = 0;\r\n out[8] = 0;\r\n out[9] = 0;\r\n out[10] = 1;\r\n out[11] = 0;\r\n out[12] = 0;\r\n out[13] = 0;\r\n out[14] = 0;\r\n out[15] = 1;\r\n return out;\r\n}\r\n\r\n/**\r\n * Transpose the values of a mat4\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the source matrix\r\n * @returns {mat4} out\r\n */\r\nexport function transpose(out, a) {\r\n // If we are transposing ourselves we can skip a few steps but have to cache some values\r\n if (out === a) {\r\n let a01 = a[1], a02 = a[2], a03 = a[3];\r\n let a12 = a[6], a13 = a[7];\r\n let a23 = a[11];\r\n\r\n out[1] = a[4];\r\n out[2] = a[8];\r\n out[3] = a[12];\r\n out[4] = a01;\r\n out[6] = a[9];\r\n out[7] = a[13];\r\n out[8] = a02;\r\n out[9] = a12;\r\n out[11] = a[14];\r\n out[12] = a03;\r\n out[13] = a13;\r\n out[14] = a23;\r\n } else {\r\n out[0] = a[0];\r\n out[1] = a[4];\r\n out[2] = a[8];\r\n out[3] = a[12];\r\n out[4] = a[1];\r\n out[5] = a[5];\r\n out[6] = a[9];\r\n out[7] = a[13];\r\n out[8] = a[2];\r\n out[9] = a[6];\r\n out[10] = a[10];\r\n out[11] = a[14];\r\n out[12] = a[3];\r\n out[13] = a[7];\r\n out[14] = a[11];\r\n out[15] = a[15];\r\n }\r\n\r\n return out;\r\n}\r\n\r\n/**\r\n * Inverts a mat4\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the source matrix\r\n * @returns {mat4} out\r\n */\r\nexport function invert(out, a) {\r\n let a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3];\r\n let a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];\r\n let a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11];\r\n let a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];\r\n\r\n let b00 = a00 * a11 - a01 * a10;\r\n let b01 = a00 * a12 - a02 * a10;\r\n let b02 = a00 * a13 - a03 * a10;\r\n let b03 = a01 * a12 - a02 * a11;\r\n let b04 = a01 * a13 - a03 * a11;\r\n let b05 = a02 * a13 - a03 * a12;\r\n let b06 = a20 * a31 - a21 * a30;\r\n let b07 = a20 * a32 - a22 * a30;\r\n let b08 = a20 * a33 - a23 * a30;\r\n let b09 = a21 * a32 - a22 * a31;\r\n let b10 = a21 * a33 - a23 * a31;\r\n let b11 = a22 * a33 - a23 * a32;\r\n\r\n // Calculate the determinant\r\n let det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\r\n\r\n if (!det) {\r\n return null;\r\n }\r\n det = 1.0 / det;\r\n\r\n out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\r\n out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\r\n out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\r\n out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det;\r\n out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\r\n out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\r\n out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\r\n out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det;\r\n out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\r\n out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\r\n out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\r\n out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det;\r\n out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det;\r\n out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det;\r\n out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det;\r\n out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det;\r\n\r\n return out;\r\n}\r\n\r\n/**\r\n * Calculates the adjugate of a mat4\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the source matrix\r\n * @returns {mat4} out\r\n */\r\nexport function adjoint(out, a) {\r\n let a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3];\r\n let a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];\r\n let a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11];\r\n let a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];\r\n\r\n out[0] = (a11 * (a22 * a33 - a23 * a32) - a21 * (a12 * a33 - a13 * a32) + a31 * (a12 * a23 - a13 * a22));\r\n out[1] = -(a01 * (a22 * a33 - a23 * a32) - a21 * (a02 * a33 - a03 * a32) + a31 * (a02 * a23 - a03 * a22));\r\n out[2] = (a01 * (a12 * a33 - a13 * a32) - a11 * (a02 * a33 - a03 * a32) + a31 * (a02 * a13 - a03 * a12));\r\n out[3] = -(a01 * (a12 * a23 - a13 * a22) - a11 * (a02 * a23 - a03 * a22) + a21 * (a02 * a13 - a03 * a12));\r\n out[4] = -(a10 * (a22 * a33 - a23 * a32) - a20 * (a12 * a33 - a13 * a32) + a30 * (a12 * a23 - a13 * a22));\r\n out[5] = (a00 * (a22 * a33 - a23 * a32) - a20 * (a02 * a33 - a03 * a32) + a30 * (a02 * a23 - a03 * a22));\r\n out[6] = -(a00 * (a12 * a33 - a13 * a32) - a10 * (a02 * a33 - a03 * a32) + a30 * (a02 * a13 - a03 * a12));\r\n out[7] = (a00 * (a12 * a23 - a13 * a22) - a10 * (a02 * a23 - a03 * a22) + a20 * (a02 * a13 - a03 * a12));\r\n out[8] = (a10 * (a21 * a33 - a23 * a31) - a20 * (a11 * a33 - a13 * a31) + a30 * (a11 * a23 - a13 * a21));\r\n out[9] = -(a00 * (a21 * a33 - a23 * a31) - a20 * (a01 * a33 - a03 * a31) + a30 * (a01 * a23 - a03 * a21));\r\n out[10] = (a00 * (a11 * a33 - a13 * a31) - a10 * (a01 * a33 - a03 * a31) + a30 * (a01 * a13 - a03 * a11));\r\n out[11] = -(a00 * (a11 * a23 - a13 * a21) - a10 * (a01 * a23 - a03 * a21) + a20 * (a01 * a13 - a03 * a11));\r\n out[12] = -(a10 * (a21 * a32 - a22 * a31) - a20 * (a11 * a32 - a12 * a31) + a30 * (a11 * a22 - a12 * a21));\r\n out[13] = (a00 * (a21 * a32 - a22 * a31) - a20 * (a01 * a32 - a02 * a31) + a30 * (a01 * a22 - a02 * a21));\r\n out[14] = -(a00 * (a11 * a32 - a12 * a31) - a10 * (a01 * a32 - a02 * a31) + a30 * (a01 * a12 - a02 * a11));\r\n out[15] = (a00 * (a11 * a22 - a12 * a21) - a10 * (a01 * a22 - a02 * a21) + a20 * (a01 * a12 - a02 * a11));\r\n return out;\r\n}\r\n\r\n/**\r\n * Calculates the determinant of a mat4\r\n *\r\n * @param {mat4} a the source matrix\r\n * @returns {Number} determinant of a\r\n */\r\nexport function determinant(a) {\r\n let a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3];\r\n let a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];\r\n let a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11];\r\n let a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];\r\n\r\n let b00 = a00 * a11 - a01 * a10;\r\n let b01 = a00 * a12 - a02 * a10;\r\n let b02 = a00 * a13 - a03 * a10;\r\n let b03 = a01 * a12 - a02 * a11;\r\n let b04 = a01 * a13 - a03 * a11;\r\n let b05 = a02 * a13 - a03 * a12;\r\n let b06 = a20 * a31 - a21 * a30;\r\n let b07 = a20 * a32 - a22 * a30;\r\n let b08 = a20 * a33 - a23 * a30;\r\n let b09 = a21 * a32 - a22 * a31;\r\n let b10 = a21 * a33 - a23 * a31;\r\n let b11 = a22 * a33 - a23 * a32;\r\n\r\n // Calculate the determinant\r\n return b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\r\n}\r\n\r\n/**\r\n * Multiplies two mat4s\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the first operand\r\n * @param {mat4} b the second operand\r\n * @returns {mat4} out\r\n */\r\nexport function multiply(out, a, b) {\r\n let a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3];\r\n let a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];\r\n let a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11];\r\n let a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];\r\n\r\n // Cache only the current line of the second matrix\r\n let b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3];\r\n out[0] = b0*a00 + b1*a10 + b2*a20 + b3*a30;\r\n out[1] = b0*a01 + b1*a11 + b2*a21 + b3*a31;\r\n out[2] = b0*a02 + b1*a12 + b2*a22 + b3*a32;\r\n out[3] = b0*a03 + b1*a13 + b2*a23 + b3*a33;\r\n\r\n b0 = b[4]; b1 = b[5]; b2 = b[6]; b3 = b[7];\r\n out[4] = b0*a00 + b1*a10 + b2*a20 + b3*a30;\r\n out[5] = b0*a01 + b1*a11 + b2*a21 + b3*a31;\r\n out[6] = b0*a02 + b1*a12 + b2*a22 + b3*a32;\r\n out[7] = b0*a03 + b1*a13 + b2*a23 + b3*a33;\r\n\r\n b0 = b[8]; b1 = b[9]; b2 = b[10]; b3 = b[11];\r\n out[8] = b0*a00 + b1*a10 + b2*a20 + b3*a30;\r\n out[9] = b0*a01 + b1*a11 + b2*a21 + b3*a31;\r\n out[10] = b0*a02 + b1*a12 + b2*a22 + b3*a32;\r\n out[11] = b0*a03 + b1*a13 + b2*a23 + b3*a33;\r\n\r\n b0 = b[12]; b1 = b[13]; b2 = b[14]; b3 = b[15];\r\n out[12] = b0*a00 + b1*a10 + b2*a20 + b3*a30;\r\n out[13] = b0*a01 + b1*a11 + b2*a21 + b3*a31;\r\n out[14] = b0*a02 + b1*a12 + b2*a22 + b3*a32;\r\n out[15] = b0*a03 + b1*a13 + b2*a23 + b3*a33;\r\n return out;\r\n}\r\n\r\n/**\r\n * Translate a mat4 by the given vector\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the matrix to translate\r\n * @param {vec3} v vector to translate by\r\n * @returns {mat4} out\r\n */\r\nexport function translate(out, a, v) {\r\n let x = v[0], y = v[1], z = v[2];\r\n let a00, a01, a02, a03;\r\n let a10, a11, a12, a13;\r\n let a20, a21, a22, a23;\r\n\r\n if (a === out) {\r\n out[12] = a[0] * x + a[4] * y + a[8] * z + a[12];\r\n out[13] = a[1] * x + a[5] * y + a[9] * z + a[13];\r\n out[14] = a[2] * x + a[6] * y + a[10] * z + a[14];\r\n out[15] = a[3] * x + a[7] * y + a[11] * z + a[15];\r\n } else {\r\n a00 = a[0]; a01 = a[1]; a02 = a[2]; a03 = a[3];\r\n a10 = a[4]; a11 = a[5]; a12 = a[6]; a13 = a[7];\r\n a20 = a[8]; a21 = a[9]; a22 = a[10]; a23 = a[11];\r\n\r\n out[0] = a00; out[1] = a01; out[2] = a02; out[3] = a03;\r\n out[4] = a10; out[5] = a11; out[6] = a12; out[7] = a13;\r\n out[8] = a20; out[9] = a21; out[10] = a22; out[11] = a23;\r\n\r\n out[12] = a00 * x + a10 * y + a20 * z + a[12];\r\n out[13] = a01 * x + a11 * y + a21 * z + a[13];\r\n out[14] = a02 * x + a12 * y + a22 * z + a[14];\r\n out[15] = a03 * x + a13 * y + a23 * z + a[15];\r\n }\r\n\r\n return out;\r\n}\r\n\r\n/**\r\n * Scales the mat4 by the dimensions in the given vec3 not using vectorization\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the matrix to scale\r\n * @param {vec3} v the vec3 to scale the matrix by\r\n * @returns {mat4} out\r\n **/\r\nexport function scale(out, a, v) {\r\n let x = v[0], y = v[1], z = v[2];\r\n\r\n out[0] = a[0] * x;\r\n out[1] = a[1] * x;\r\n out[2] = a[2] * x;\r\n out[3] = a[3] * x;\r\n out[4] = a[4] * y;\r\n out[5] = a[5] * y;\r\n out[6] = a[6] * y;\r\n out[7] = a[7] * y;\r\n out[8] = a[8] * z;\r\n out[9] = a[9] * z;\r\n out[10] = a[10] * z;\r\n out[11] = a[11] * z;\r\n out[12] = a[12];\r\n out[13] = a[13];\r\n out[14] = a[14];\r\n out[15] = a[15];\r\n return out;\r\n}\r\n\r\n/**\r\n * Rotates a mat4 by the given angle around the given axis\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the matrix to rotate\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @param {vec3} axis the axis to rotate around\r\n * @returns {mat4} out\r\n */\r\nexport function rotate(out, a, rad, axis) {\r\n let x = axis[0], y = axis[1], z = axis[2];\r\n let len = Math.sqrt(x * x + y * y + z * z);\r\n let s, c, t;\r\n let a00, a01, a02, a03;\r\n let a10, a11, a12, a13;\r\n let a20, a21, a22, a23;\r\n let b00, b01, b02;\r\n let b10, b11, b12;\r\n let b20, b21, b22;\r\n\r\n if (Math.abs(len) < glMatrix.EPSILON) { return null; }\r\n\r\n len = 1 / len;\r\n x *= len;\r\n y *= len;\r\n z *= len;\r\n\r\n s = Math.sin(rad);\r\n c = Math.cos(rad);\r\n t = 1 - c;\r\n\r\n a00 = a[0]; a01 = a[1]; a02 = a[2]; a03 = a[3];\r\n a10 = a[4]; a11 = a[5]; a12 = a[6]; a13 = a[7];\r\n a20 = a[8]; a21 = a[9]; a22 = a[10]; a23 = a[11];\r\n\r\n // Construct the elements of the rotation matrix\r\n b00 = x * x * t + c; b01 = y * x * t + z * s; b02 = z * x * t - y * s;\r\n b10 = x * y * t - z * s; b11 = y * y * t + c; b12 = z * y * t + x * s;\r\n b20 = x * z * t + y * s; b21 = y * z * t - x * s; b22 = z * z * t + c;\r\n\r\n // Perform rotation-specific matrix multiplication\r\n out[0] = a00 * b00 + a10 * b01 + a20 * b02;\r\n out[1] = a01 * b00 + a11 * b01 + a21 * b02;\r\n out[2] = a02 * b00 + a12 * b01 + a22 * b02;\r\n out[3] = a03 * b00 + a13 * b01 + a23 * b02;\r\n out[4] = a00 * b10 + a10 * b11 + a20 * b12;\r\n out[5] = a01 * b10 + a11 * b11 + a21 * b12;\r\n out[6] = a02 * b10 + a12 * b11 + a22 * b12;\r\n out[7] = a03 * b10 + a13 * b11 + a23 * b12;\r\n out[8] = a00 * b20 + a10 * b21 + a20 * b22;\r\n out[9] = a01 * b20 + a11 * b21 + a21 * b22;\r\n out[10] = a02 * b20 + a12 * b21 + a22 * b22;\r\n out[11] = a03 * b20 + a13 * b21 + a23 * b22;\r\n\r\n if (a !== out) { // If the source and destination differ, copy the unchanged last row\r\n out[12] = a[12];\r\n out[13] = a[13];\r\n out[14] = a[14];\r\n out[15] = a[15];\r\n }\r\n return out;\r\n}\r\n\r\n/**\r\n * Rotates a matrix by the given angle around the X axis\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the matrix to rotate\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat4} out\r\n */\r\nexport function rotateX(out, a, rad) {\r\n let s = Math.sin(rad);\r\n let c = Math.cos(rad);\r\n let a10 = a[4];\r\n let a11 = a[5];\r\n let a12 = a[6];\r\n let a13 = a[7];\r\n let a20 = a[8];\r\n let a21 = a[9];\r\n let a22 = a[10];\r\n let a23 = a[11];\r\n\r\n if (a !== out) { // If the source and destination differ, copy the unchanged rows\r\n out[0] = a[0];\r\n out[1] = a[1];\r\n out[2] = a[2];\r\n out[3] = a[3];\r\n out[12] = a[12];\r\n out[13] = a[13];\r\n out[14] = a[14];\r\n out[15] = a[15];\r\n }\r\n\r\n // Perform axis-specific matrix multiplication\r\n out[4] = a10 * c + a20 * s;\r\n out[5] = a11 * c + a21 * s;\r\n out[6] = a12 * c + a22 * s;\r\n out[7] = a13 * c + a23 * s;\r\n out[8] = a20 * c - a10 * s;\r\n out[9] = a21 * c - a11 * s;\r\n out[10] = a22 * c - a12 * s;\r\n out[11] = a23 * c - a13 * s;\r\n return out;\r\n}\r\n\r\n/**\r\n * Rotates a matrix by the given angle around the Y axis\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the matrix to rotate\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat4} out\r\n */\r\nexport function rotateY(out, a, rad) {\r\n let s = Math.sin(rad);\r\n let c = Math.cos(rad);\r\n let a00 = a[0];\r\n let a01 = a[1];\r\n let a02 = a[2];\r\n let a03 = a[3];\r\n let a20 = a[8];\r\n let a21 = a[9];\r\n let a22 = a[10];\r\n let a23 = a[11];\r\n\r\n if (a !== out) { // If the source and destination differ, copy the unchanged rows\r\n out[4] = a[4];\r\n out[5] = a[5];\r\n out[6] = a[6];\r\n out[7] = a[7];\r\n out[12] = a[12];\r\n out[13] = a[13];\r\n out[14] = a[14];\r\n out[15] = a[15];\r\n }\r\n\r\n // Perform axis-specific matrix multiplication\r\n out[0] = a00 * c - a20 * s;\r\n out[1] = a01 * c - a21 * s;\r\n out[2] = a02 * c - a22 * s;\r\n out[3] = a03 * c - a23 * s;\r\n out[8] = a00 * s + a20 * c;\r\n out[9] = a01 * s + a21 * c;\r\n out[10] = a02 * s + a22 * c;\r\n out[11] = a03 * s + a23 * c;\r\n return out;\r\n}\r\n\r\n/**\r\n * Rotates a matrix by the given angle around the Z axis\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the matrix to rotate\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat4} out\r\n */\r\nexport function rotateZ(out, a, rad) {\r\n let s = Math.sin(rad);\r\n let c = Math.cos(rad);\r\n let a00 = a[0];\r\n let a01 = a[1];\r\n let a02 = a[2];\r\n let a03 = a[3];\r\n let a10 = a[4];\r\n let a11 = a[5];\r\n let a12 = a[6];\r\n let a13 = a[7];\r\n\r\n if (a !== out) { // If the source and destination differ, copy the unchanged last row\r\n out[8] = a[8];\r\n out[9] = a[9];\r\n out[10] = a[10];\r\n out[11] = a[11];\r\n out[12] = a[12];\r\n out[13] = a[13];\r\n out[14] = a[14];\r\n out[15] = a[15];\r\n }\r\n\r\n // Perform axis-specific matrix multiplication\r\n out[0] = a00 * c + a10 * s;\r\n out[1] = a01 * c + a11 * s;\r\n out[2] = a02 * c + a12 * s;\r\n out[3] = a03 * c + a13 * s;\r\n out[4] = a10 * c - a00 * s;\r\n out[5] = a11 * c - a01 * s;\r\n out[6] = a12 * c - a02 * s;\r\n out[7] = a13 * c - a03 * s;\r\n return out;\r\n}\r\n\r\n/**\r\n * Creates a matrix from a vector translation\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.translate(dest, dest, vec);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {vec3} v Translation vector\r\n * @returns {mat4} out\r\n */\r\nexport function fromTranslation(out, v) {\r\n out[0] = 1;\r\n out[1] = 0;\r\n out[2] = 0;\r\n out[3] = 0;\r\n out[4] = 0;\r\n out[5] = 1;\r\n out[6] = 0;\r\n out[7] = 0;\r\n out[8] = 0;\r\n out[9] = 0;\r\n out[10] = 1;\r\n out[11] = 0;\r\n out[12] = v[0];\r\n out[13] = v[1];\r\n out[14] = v[2];\r\n out[15] = 1;\r\n return out;\r\n}\r\n\r\n/**\r\n * Creates a matrix from a vector scaling\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.scale(dest, dest, vec);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {vec3} v Scaling vector\r\n * @returns {mat4} out\r\n */\r\nexport function fromScaling(out, v) {\r\n out[0] = v[0];\r\n out[1] = 0;\r\n out[2] = 0;\r\n out[3] = 0;\r\n out[4] = 0;\r\n out[5] = v[1];\r\n out[6] = 0;\r\n out[7] = 0;\r\n out[8] = 0;\r\n out[9] = 0;\r\n out[10] = v[2];\r\n out[11] = 0;\r\n out[12] = 0;\r\n out[13] = 0;\r\n out[14] = 0;\r\n out[15] = 1;\r\n return out;\r\n}\r\n\r\n/**\r\n * Creates a matrix from a given angle around a given axis\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.rotate(dest, dest, rad, axis);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @param {vec3} axis the axis to rotate around\r\n * @returns {mat4} out\r\n */\r\nexport function fromRotation(out, rad, axis) {\r\n let x = axis[0], y = axis[1], z = axis[2];\r\n let len = Math.sqrt(x * x + y * y + z * z);\r\n let s, c, t;\r\n\r\n if (Math.abs(len) < glMatrix.EPSILON) { return null; }\r\n\r\n len = 1 / len;\r\n x *= len;\r\n y *= len;\r\n z *= len;\r\n\r\n s = Math.sin(rad);\r\n c = Math.cos(rad);\r\n t = 1 - c;\r\n\r\n // Perform rotation-specific matrix multiplication\r\n out[0] = x * x * t + c;\r\n out[1] = y * x * t + z * s;\r\n out[2] = z * x * t - y * s;\r\n out[3] = 0;\r\n out[4] = x * y * t - z * s;\r\n out[5] = y * y * t + c;\r\n out[6] = z * y * t + x * s;\r\n out[7] = 0;\r\n out[8] = x * z * t + y * s;\r\n out[9] = y * z * t - x * s;\r\n out[10] = z * z * t + c;\r\n out[11] = 0;\r\n out[12] = 0;\r\n out[13] = 0;\r\n out[14] = 0;\r\n out[15] = 1;\r\n return out;\r\n}\r\n\r\n/**\r\n * Creates a matrix from the given angle around the X axis\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.rotateX(dest, dest, rad);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat4} out\r\n */\r\nexport function fromXRotation(out, rad) {\r\n let s = Math.sin(rad);\r\n let c = Math.cos(rad);\r\n\r\n // Perform axis-specific matrix multiplication\r\n out[0] = 1;\r\n out[1] = 0;\r\n out[2] = 0;\r\n out[3] = 0;\r\n out[4] = 0;\r\n out[5] = c;\r\n out[6] = s;\r\n out[7] = 0;\r\n out[8] = 0;\r\n out[9] = -s;\r\n out[10] = c;\r\n out[11] = 0;\r\n out[12] = 0;\r\n out[13] = 0;\r\n out[14] = 0;\r\n out[15] = 1;\r\n return out;\r\n}\r\n\r\n/**\r\n * Creates a matrix from the given angle around the Y axis\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.rotateY(dest, dest, rad);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat4} out\r\n */\r\nexport function fromYRotation(out, rad) {\r\n let s = Math.sin(rad);\r\n let c = Math.cos(rad);\r\n\r\n // Perform axis-specific matrix multiplication\r\n out[0] = c;\r\n out[1] = 0;\r\n out[2] = -s;\r\n out[3] = 0;\r\n out[4] = 0;\r\n out[5] = 1;\r\n out[6] = 0;\r\n out[7] = 0;\r\n out[8] = s;\r\n out[9] = 0;\r\n out[10] = c;\r\n out[11] = 0;\r\n out[12] = 0;\r\n out[13] = 0;\r\n out[14] = 0;\r\n out[15] = 1;\r\n return out;\r\n}\r\n\r\n/**\r\n * Creates a matrix from the given angle around the Z axis\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.rotateZ(dest, dest, rad);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat4} out\r\n */\r\nexport function fromZRotation(out, rad) {\r\n let s = Math.sin(rad);\r\n let c = Math.cos(rad);\r\n\r\n // Perform axis-specific matrix multiplication\r\n out[0] = c;\r\n out[1] = s;\r\n out[2] = 0;\r\n out[3] = 0;\r\n out[4] = -s;\r\n out[5] = c;\r\n out[6] = 0;\r\n out[7] = 0;\r\n out[8] = 0;\r\n out[9] = 0;\r\n out[10] = 1;\r\n out[11] = 0;\r\n out[12] = 0;\r\n out[13] = 0;\r\n out[14] = 0;\r\n out[15] = 1;\r\n return out;\r\n}\r\n\r\n/**\r\n * Creates a matrix from a quaternion rotation and vector translation\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.translate(dest, vec);\r\n * let quatMat = mat4.create();\r\n * quat4.toMat4(quat, quatMat);\r\n * mat4.multiply(dest, quatMat);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {quat4} q Rotation quaternion\r\n * @param {vec3} v Translation vector\r\n * @returns {mat4} out\r\n */\r\nexport function fromRotationTranslation(out, q, v) {\r\n // Quaternion math\r\n let x = q[0], y = q[1], z = q[2], w = q[3];\r\n let x2 = x + x;\r\n let y2 = y + y;\r\n let z2 = z + z;\r\n\r\n let xx = x * x2;\r\n let xy = x * y2;\r\n let xz = x * z2;\r\n let yy = y * y2;\r\n let yz = y * z2;\r\n let zz = z * z2;\r\n let wx = w * x2;\r\n let wy = w * y2;\r\n let wz = w * z2;\r\n\r\n out[0] = 1 - (yy + zz);\r\n out[1] = xy + wz;\r\n out[2] = xz - wy;\r\n out[3] = 0;\r\n out[4] = xy - wz;\r\n out[5] = 1 - (xx + zz);\r\n out[6] = yz + wx;\r\n out[7] = 0;\r\n out[8] = xz + wy;\r\n out[9] = yz - wx;\r\n out[10] = 1 - (xx + yy);\r\n out[11] = 0;\r\n out[12] = v[0];\r\n out[13] = v[1];\r\n out[14] = v[2];\r\n out[15] = 1;\r\n\r\n return out;\r\n}\r\n\r\n/**\r\n * Creates a new mat4 from a dual quat.\r\n *\r\n * @param {mat4} out Matrix\r\n * @param {quat2} a Dual Quaternion\r\n * @returns {mat4} mat4 receiving operation result\r\n */\r\nexport function fromQuat2(out, a) {\r\n let translation = new glMatrix.ARRAY_TYPE(3);\r\n let bx = -a[0], by = -a[1], bz = -a[2], bw = a[3],\r\n ax = a[4], ay = a[5], az = a[6], aw = a[7];\r\n \r\n let magnitude = bx * bx + by * by + bz * bz + bw * bw;\r\n //Only scale if it makes sense\r\n if (magnitude > 0) {\r\n translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2 / magnitude;\r\n translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2 / magnitude;\r\n translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2 / magnitude;\r\n } else {\r\n translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2;\r\n translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2;\r\n translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2;\r\n }\r\n fromRotationTranslation(out, a, translation);\r\n return out;\r\n}\r\n\r\n/**\r\n * Returns the translation vector component of a transformation\r\n * matrix. If a matrix is built with fromRotationTranslation,\r\n * the returned vector will be the same as the translation vector\r\n * originally supplied.\r\n * @param {vec3} out Vector to receive translation component\r\n * @param {mat4} mat Matrix to be decomposed (input)\r\n * @return {vec3} out\r\n */\r\nexport function getTranslation(out, mat) {\r\n out[0] = mat[12];\r\n out[1] = mat[13];\r\n out[2] = mat[14];\r\n\r\n return out;\r\n}\r\n\r\n/**\r\n * Returns the scaling factor component of a transformation\r\n * matrix. If a matrix is built with fromRotationTranslationScale\r\n * with a normalized Quaternion paramter, the returned vector will be\r\n * the same as the scaling vector\r\n * originally supplied.\r\n * @param {vec3} out Vector to receive scaling factor component\r\n * @param {mat4} mat Matrix to be decomposed (input)\r\n * @return {vec3} out\r\n */\r\nexport function getScaling(out, mat) {\r\n let m11 = mat[0];\r\n let m12 = mat[1];\r\n let m13 = mat[2];\r\n let m21 = mat[4];\r\n let m22 = mat[5];\r\n let m23 = mat[6];\r\n let m31 = mat[8];\r\n let m32 = mat[9];\r\n let m33 = mat[10];\r\n\r\n out[0] = Math.sqrt(m11 * m11 + m12 * m12 + m13 * m13);\r\n out[1] = Math.sqrt(m21 * m21 + m22 * m22 + m23 * m23);\r\n out[2] = Math.sqrt(m31 * m31 + m32 * m32 + m33 * m33);\r\n\r\n return out;\r\n}\r\n\r\n/**\r\n * Returns a quaternion representing the rotational component\r\n * of a transformation matrix. If a matrix is built with\r\n * fromRotationTranslation, the returned quaternion will be the\r\n * same as the quaternion originally supplied.\r\n * @param {quat} out Quaternion to receive the rotation component\r\n * @param {mat4} mat Matrix to be decomposed (input)\r\n * @return {quat} out\r\n */\r\nexport function getRotation(out, mat) {\r\n // Algorithm taken from http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\r\n let trace = mat[0] + mat[5] + mat[10];\r\n let S = 0;\r\n\r\n if (trace > 0) {\r\n S = Math.sqrt(trace + 1.0) * 2;\r\n out[3] = 0.25 * S;\r\n out[0] = (mat[6] - mat[9]) / S;\r\n out[1] = (mat[8] - mat[2]) / S;\r\n out[2] = (mat[1] - mat[4]) / S;\r\n } else if ((mat[0] > mat[5]) && (mat[0] > mat[10])) {\r\n S = Math.sqrt(1.0 + mat[0] - mat[5] - mat[10]) * 2;\r\n out[3] = (mat[6] - mat[9]) / S;\r\n out[0] = 0.25 * S;\r\n out[1] = (mat[1] + mat[4]) / S;\r\n out[2] = (mat[8] + mat[2]) / S;\r\n } else if (mat[5] > mat[10]) {\r\n S = Math.sqrt(1.0 + mat[5] - mat[0] - mat[10]) * 2;\r\n out[3] = (mat[8] - mat[2]) / S;\r\n out[0] = (mat[1] + mat[4]) / S;\r\n out[1] = 0.25 * S;\r\n out[2] = (mat[6] + mat[9]) / S;\r\n } else {\r\n S = Math.sqrt(1.0 + mat[10] - mat[0] - mat[5]) * 2;\r\n out[3] = (mat[1] - mat[4]) / S;\r\n out[0] = (mat[8] + mat[2]) / S;\r\n out[1] = (mat[6] + mat[9]) / S;\r\n out[2] = 0.25 * S;\r\n }\r\n\r\n return out;\r\n}\r\n\r\n/**\r\n * Creates a matrix from a quaternion rotation, vector translation and vector scale\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.translate(dest, vec);\r\n * let quatMat = mat4.create();\r\n * quat4.toMat4(quat, quatMat);\r\n * mat4.multiply(dest, quatMat);\r\n * mat4.scale(dest, scale)\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {quat4} q Rotation quaternion\r\n * @param {vec3} v Translation vector\r\n * @param {vec3} s Scaling vector\r\n * @returns {mat4} out\r\n */\r\nexport function fromRotationTranslationScale(out, q, v, s) {\r\n // Quaternion math\r\n let x = q[0], y = q[1], z = q[2], w = q[3];\r\n let x2 = x + x;\r\n let y2 = y + y;\r\n let z2 = z + z;\r\n\r\n let xx = x * x2;\r\n let xy = x * y2;\r\n let xz = x * z2;\r\n let yy = y * y2;\r\n let yz = y * z2;\r\n let zz = z * z2;\r\n let wx = w * x2;\r\n let wy = w * y2;\r\n let wz = w * z2;\r\n let sx = s[0];\r\n let sy = s[1];\r\n let sz = s[2];\r\n\r\n out[0] = (1 - (yy + zz)) * sx;\r\n out[1] = (xy + wz) * sx;\r\n out[2] = (xz - wy) * sx;\r\n out[3] = 0;\r\n out[4] = (xy - wz) * sy;\r\n out[5] = (1 - (xx + zz)) * sy;\r\n out[6] = (yz + wx) * sy;\r\n out[7] = 0;\r\n out[8] = (xz + wy) * sz;\r\n out[9] = (yz - wx) * sz;\r\n out[10] = (1 - (xx + yy)) * sz;\r\n out[11] = 0;\r\n out[12] = v[0];\r\n out[13] = v[1];\r\n out[14] = v[2];\r\n out[15] = 1;\r\n\r\n return out;\r\n}\r\n\r\n/**\r\n * Creates a matrix from a quaternion rotation, vector translation and vector scale, rotating and scaling around the given origin\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.translate(dest, vec);\r\n * mat4.translate(dest, origin);\r\n * let quatMat = mat4.create();\r\n * quat4.toMat4(quat, quatMat);\r\n * mat4.multiply(dest, quatMat);\r\n * mat4.scale(dest, scale)\r\n * mat4.translate(dest, negativeOrigin);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {quat4} q Rotation quaternion\r\n * @param {vec3} v Translation vector\r\n * @param {vec3} s Scaling vector\r\n * @param {vec3} o The origin vector around which to scale and rotate\r\n * @returns {mat4} out\r\n */\r\nexport function fromRotationTranslationScaleOrigin(out, q, v, s, o) {\r\n // Quaternion math\r\n let x = q[0], y = q[1], z = q[2], w = q[3];\r\n let x2 = x + x;\r\n let y2 = y + y;\r\n let z2 = z + z;\r\n\r\n let xx = x * x2;\r\n let xy = x * y2;\r\n let xz = x * z2;\r\n let yy = y * y2;\r\n let yz = y * z2;\r\n let zz = z * z2;\r\n let wx = w * x2;\r\n let wy = w * y2;\r\n let wz = w * z2;\r\n\r\n let sx = s[0];\r\n let sy = s[1];\r\n let sz = s[2];\r\n\r\n let ox = o[0];\r\n let oy = o[1];\r\n let oz = o[2];\r\n\r\n let out0 = (1 - (yy + zz)) * sx;\r\n let out1 = (xy + wz) * sx;\r\n let out2 = (xz - wy) * sx;\r\n let out4 = (xy - wz) * sy;\r\n let out5 = (1 - (xx + zz)) * sy;\r\n let out6 = (yz + wx) * sy;\r\n let out8 = (xz + wy) * sz;\r\n let out9 = (yz - wx) * sz;\r\n let out10 = (1 - (xx + yy)) * sz;\r\n\r\n out[0] = out0;\r\n out[1] = out1;\r\n out[2] = out2;\r\n out[3] = 0;\r\n out[4] = out4;\r\n out[5] = out5;\r\n out[6] = out6;\r\n out[7] = 0;\r\n out[8] = out8;\r\n out[9] = out9;\r\n out[10] = out10;\r\n out[11] = 0;\r\n out[12] = v[0] + ox - (out0 * ox + out4 * oy + out8 * oz);\r\n out[13] = v[1] + oy - (out1 * ox + out5 * oy + out9 * oz);\r\n out[14] = v[2] + oz - (out2 * ox + out6 * oy + out10 * oz);\r\n out[15] = 1;\r\n\r\n return out;\r\n}\r\n\r\n/**\r\n * Calculates a 4x4 matrix from the given quaternion\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {quat} q Quaternion to create matrix from\r\n *\r\n * @returns {mat4} out\r\n */\r\nexport function fromQuat(out, q) {\r\n let x = q[0], y = q[1], z = q[2], w = q[3];\r\n let x2 = x + x;\r\n let y2 = y + y;\r\n let z2 = z + z;\r\n\r\n let xx = x * x2;\r\n let yx = y * x2;\r\n let yy = y * y2;\r\n let zx = z * x2;\r\n let zy = z * y2;\r\n let zz = z * z2;\r\n let wx = w * x2;\r\n let wy = w * y2;\r\n let wz = w * z2;\r\n\r\n out[0] = 1 - yy - zz;\r\n out[1] = yx + wz;\r\n out[2] = zx - wy;\r\n out[3] = 0;\r\n\r\n out[4] = yx - wz;\r\n out[5] = 1 - xx - zz;\r\n out[6] = zy + wx;\r\n out[7] = 0;\r\n\r\n out[8] = zx + wy;\r\n out[9] = zy - wx;\r\n out[10] = 1 - xx - yy;\r\n out[11] = 0;\r\n\r\n out[12] = 0;\r\n out[13] = 0;\r\n out[14] = 0;\r\n out[15] = 1;\r\n\r\n return out;\r\n}\r\n\r\n/**\r\n * Generates a frustum matrix with the given bounds\r\n *\r\n * @param {mat4} out mat4 frustum matrix will be written into\r\n * @param {Number} left Left bound of the frustum\r\n * @param {Number} right Right bound of the frustum\r\n * @param {Number} bottom Bottom bound of the frustum\r\n * @param {Number} top Top bound of the frustum\r\n * @param {Number} near Near bound of the frustum\r\n * @param {Number} far Far bound of the frustum\r\n * @returns {mat4} out\r\n */\r\nexport function frustum(out, left, right, bottom, top, near, far) {\r\n let rl = 1 / (right - left);\r\n let tb = 1 / (top - bottom);\r\n let nf = 1 / (near - far);\r\n out[0] = (near * 2) * rl;\r\n out[1] = 0;\r\n out[2] = 0;\r\n out[3] = 0;\r\n out[4] = 0;\r\n out[5] = (near * 2) * tb;\r\n out[6] = 0;\r\n out[7] = 0;\r\n out[8] = (right + left) * rl;\r\n out[9] = (top + bottom) * tb;\r\n out[10] = (far + near) * nf;\r\n out[11] = -1;\r\n out[12] = 0;\r\n out[13] = 0;\r\n out[14] = (far * near * 2) * nf;\r\n out[15] = 0;\r\n return out;\r\n}\r\n\r\n/**\r\n * Generates a perspective projection matrix with the given bounds\r\n *\r\n * @param {mat4} out mat4 frustum matrix will be written into\r\n * @param {number} fovy Vertical field of view in radians\r\n * @param {number} aspect Aspect ratio. typically viewport width/height\r\n * @param {number} near Near bound of the frustum\r\n * @param {number} far Far bound of the frustum\r\n * @returns {mat4} out\r\n */\r\nexport function perspective(out, fovy, aspect, near, far) {\r\n let f = 1.0 / Math.tan(fovy / 2);\r\n let nf = 1 / (near - far);\r\n out[0] = f / aspect;\r\n out[1] = 0;\r\n out[2] = 0;\r\n out[3] = 0;\r\n out[4] = 0;\r\n out[5] = f;\r\n out[6] = 0;\r\n out[7] = 0;\r\n out[8] = 0;\r\n out[9] = 0;\r\n out[10] = (far + near) * nf;\r\n out[11] = -1;\r\n out[12] = 0;\r\n out[13] = 0;\r\n out[14] = (2 * far * near) * nf;\r\n out[15] = 0;\r\n return out;\r\n}\r\n\r\n/**\r\n * Generates a perspective projection matrix with the given field of view.\r\n * This is primarily useful for generating projection matrices to be used\r\n * with the still experiemental WebVR API.\r\n *\r\n * @param {mat4} out mat4 frustum matrix will be written into\r\n * @param {Object} fov Object containing the following values: upDegrees, downDegrees, leftDegrees, rightDegrees\r\n * @param {number} near Near bound of the frustum\r\n * @param {number} far Far bound of the frustum\r\n * @returns {mat4} out\r\n */\r\nexport function perspectiveFromFieldOfView(out, fov, near, far) {\r\n let upTan = Math.tan(fov.upDegrees * Math.PI/180.0);\r\n let downTan = Math.tan(fov.downDegrees * Math.PI/180.0);\r\n let leftTan = Math.tan(fov.leftDegrees * Math.PI/180.0);\r\n let rightTan = Math.tan(fov.rightDegrees * Math.PI/180.0);\r\n let xScale = 2.0 / (leftTan + rightTan);\r\n let yScale = 2.0 / (upTan + downTan);\r\n\r\n out[0] = xScale;\r\n out[1] = 0.0;\r\n out[2] = 0.0;\r\n out[3] = 0.0;\r\n out[4] = 0.0;\r\n out[5] = yScale;\r\n out[6] = 0.0;\r\n out[7] = 0.0;\r\n out[8] = -((leftTan - rightTan) * xScale * 0.5);\r\n out[9] = ((upTan - downTan) * yScale * 0.5);\r\n out[10] = far / (near - far);\r\n out[11] = -1.0;\r\n out[12] = 0.0;\r\n out[13] = 0.0;\r\n out[14] = (far * near) / (near - far);\r\n out[15] = 0.0;\r\n return out;\r\n}\r\n\r\n/**\r\n * Generates a orthogonal projection matrix with the given bounds\r\n *\r\n * @param {mat4} out mat4 frustum matrix will be written into\r\n * @param {number} left Left bound of the frustum\r\n * @param {number} right Right bound of the frustum\r\n * @param {number} bottom Bottom bound of the frustum\r\n * @param {number} top Top bound of the frustum\r\n * @param {number} near Near bound of the frustum\r\n * @param {number} far Far bound of the frustum\r\n * @returns {mat4} out\r\n */\r\nexport function ortho(out, left, right, bottom, top, near, far) {\r\n let lr = 1 / (left - right);\r\n let bt = 1 / (bottom - top);\r\n let nf = 1 / (near - far);\r\n out[0] = -2 * lr;\r\n out[1] = 0;\r\n out[2] = 0;\r\n out[3] = 0;\r\n out[4] = 0;\r\n out[5] = -2 * bt;\r\n out[6] = 0;\r\n out[7] = 0;\r\n out[8] = 0;\r\n out[9] = 0;\r\n out[10] = 2 * nf;\r\n out[11] = 0;\r\n out[12] = (left + right) * lr;\r\n out[13] = (top + bottom) * bt;\r\n out[14] = (far + near) * nf;\r\n out[15] = 1;\r\n return out;\r\n}\r\n\r\n/**\r\n * Generates a look-at matrix with the given eye position, focal point, and up axis. \r\n * If you want a matrix that actually makes an object look at another object, you should use targetTo instead.\r\n *\r\n * @param {mat4} out mat4 frustum matrix will be written into\r\n * @param {vec3} eye Position of the viewer\r\n * @param {vec3} center Point the viewer is looking at\r\n * @param {vec3} up vec3 pointing up\r\n * @returns {mat4} out\r\n */\r\nexport function lookAt(out, eye, center, up) {\r\n let x0, x1, x2, y0, y1, y2, z0, z1, z2, len;\r\n let eyex = eye[0];\r\n let eyey = eye[1];\r\n let eyez = eye[2];\r\n let upx = up[0];\r\n let upy = up[1];\r\n let upz = up[2];\r\n let centerx = center[0];\r\n let centery = center[1];\r\n let centerz = center[2];\r\n\r\n if (Math.abs(eyex - centerx) < glMatrix.EPSILON &&\r\n Math.abs(eyey - centery) < glMatrix.EPSILON &&\r\n Math.abs(eyez - centerz) < glMatrix.EPSILON) {\r\n return identity(out);\r\n }\r\n\r\n z0 = eyex - centerx;\r\n z1 = eyey - centery;\r\n z2 = eyez - centerz;\r\n\r\n len = 1 / Math.sqrt(z0 * z0 + z1 * z1 + z2 * z2);\r\n z0 *= len;\r\n z1 *= len;\r\n z2 *= len;\r\n\r\n x0 = upy * z2 - upz * z1;\r\n x1 = upz * z0 - upx * z2;\r\n x2 = upx * z1 - upy * z0;\r\n len = Math.sqrt(x0 * x0 + x1 * x1 + x2 * x2);\r\n if (!len) {\r\n x0 = 0;\r\n x1 = 0;\r\n x2 = 0;\r\n } else {\r\n len = 1 / len;\r\n x0 *= len;\r\n x1 *= len;\r\n x2 *= len;\r\n }\r\n\r\n y0 = z1 * x2 - z2 * x1;\r\n y1 = z2 * x0 - z0 * x2;\r\n y2 = z0 * x1 - z1 * x0;\r\n\r\n len = Math.sqrt(y0 * y0 + y1 * y1 + y2 * y2);\r\n if (!len) {\r\n y0 = 0;\r\n y1 = 0;\r\n y2 = 0;\r\n } else {\r\n len = 1 / len;\r\n y0 *= len;\r\n y1 *= len;\r\n y2 *= len;\r\n }\r\n\r\n out[0] = x0;\r\n out[1] = y0;\r\n out[2] = z0;\r\n out[3] = 0;\r\n out[4] = x1;\r\n out[5] = y1;\r\n out[6] = z1;\r\n out[7] = 0;\r\n out[8] = x2;\r\n out[9] = y2;\r\n out[10] = z2;\r\n out[11] = 0;\r\n out[12] = -(x0 * eyex + x1 * eyey + x2 * eyez);\r\n out[13] = -(y0 * eyex + y1 * eyey + y2 * eyez);\r\n out[14] = -(z0 * eyex + z1 * eyey + z2 * eyez);\r\n out[15] = 1;\r\n\r\n return out;\r\n}\r\n\r\n/**\r\n * Generates a matrix that makes something look at something else.\r\n *\r\n * @param {mat4} out mat4 frustum matrix will be written into\r\n * @param {vec3} eye Position of the viewer\r\n * @param {vec3} center Point the viewer is looking at\r\n * @param {vec3} up vec3 pointing up\r\n * @returns {mat4} out\r\n */\r\nexport function targetTo(out, eye, target, up) {\r\n let eyex = eye[0],\r\n eyey = eye[1],\r\n eyez = eye[2],\r\n upx = up[0],\r\n upy = up[1],\r\n upz = up[2];\r\n\r\n let z0 = eyex - target[0],\r\n z1 = eyey - target[1],\r\n z2 = eyez - target[2];\r\n\r\n let len = z0*z0 + z1*z1 + z2*z2;\r\n if (len > 0) {\r\n len = 1 / Math.sqrt(len);\r\n z0 *= len;\r\n z1 *= len;\r\n z2 *= len;\r\n }\r\n\r\n let x0 = upy * z2 - upz * z1,\r\n x1 = upz * z0 - upx * z2,\r\n x2 = upx * z1 - upy * z0;\r\n\r\n len = x0*x0 + x1*x1 + x2*x2;\r\n if (len > 0) {\r\n len = 1 / Math.sqrt(len);\r\n x0 *= len;\r\n x1 *= len;\r\n x2 *= len;\r\n }\r\n\r\n out[0] = x0;\r\n out[1] = x1;\r\n out[2] = x2;\r\n out[3] = 0;\r\n out[4] = z1 * x2 - z2 * x1;\r\n out[5] = z2 * x0 - z0 * x2;\r\n out[6] = z0 * x1 - z1 * x0;\r\n out[7] = 0;\r\n out[8] = z0;\r\n out[9] = z1;\r\n out[10] = z2;\r\n out[11] = 0;\r\n out[12] = eyex;\r\n out[13] = eyey;\r\n out[14] = eyez;\r\n out[15] = 1;\r\n return out;\r\n};\r\n\r\n/**\r\n * Returns a string representation of a mat4\r\n *\r\n * @param {mat4} a matrix to represent as a string\r\n * @returns {String} string representation of the matrix\r\n */\r\nexport function str(a) {\r\n return 'mat4(' + a[0] + ', ' + a[1] + ', ' + a[2] + ', ' + a[3] + ', ' +\r\n a[4] + ', ' + a[5] + ', ' + a[6] + ', ' + a[7] + ', ' +\r\n a[8] + ', ' + a[9] + ', ' + a[10] + ', ' + a[11] + ', ' +\r\n a[12] + ', ' + a[13] + ', ' + a[14] + ', ' + a[15] + ')';\r\n}\r\n\r\n/**\r\n * Returns Frobenius norm of a mat4\r\n *\r\n * @param {mat4} a the matrix to calculate Frobenius norm of\r\n * @returns {Number} Frobenius norm\r\n */\r\nexport function frob(a) {\r\n return(Math.sqrt(Math.pow(a[0], 2) + Math.pow(a[1], 2) + Math.pow(a[2], 2) + Math.pow(a[3], 2) + Math.pow(a[4], 2) + Math.pow(a[5], 2) + Math.pow(a[6], 2) + Math.pow(a[7], 2) + Math.pow(a[8], 2) + Math.pow(a[9], 2) + Math.pow(a[10], 2) + Math.pow(a[11], 2) + Math.pow(a[12], 2) + Math.pow(a[13], 2) + Math.pow(a[14], 2) + Math.pow(a[15], 2) ))\r\n}\r\n\r\n/**\r\n * Adds two mat4's\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the first operand\r\n * @param {mat4} b the second operand\r\n * @returns {mat4} out\r\n */\r\nexport function add(out, a, b) {\r\n out[0] = a[0] + b[0];\r\n out[1] = a[1] + b[1];\r\n out[2] = a[2] + b[2];\r\n out[3] = a[3] + b[3];\r\n out[4] = a[4] + b[4];\r\n out[5] = a[5] + b[5];\r\n out[6] = a[6] + b[6];\r\n out[7] = a[7] + b[7];\r\n out[8] = a[8] + b[8];\r\n out[9] = a[9] + b[9];\r\n out[10] = a[10] + b[10];\r\n out[11] = a[11] + b[11];\r\n out[12] = a[12] + b[12];\r\n out[13] = a[13] + b[13];\r\n out[14] = a[14] + b[14];\r\n out[15] = a[15] + b[15];\r\n return out;\r\n}\r\n\r\n/**\r\n * Subtracts matrix b from matrix a\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the first operand\r\n * @param {mat4} b the second operand\r\n * @returns {mat4} out\r\n */\r\nexport function subtract(out, a, b) {\r\n out[0] = a[0] - b[0];\r\n out[1] = a[1] - b[1];\r\n out[2] = a[2] - b[2];\r\n out[3] = a[3] - b[3];\r\n out[4] = a[4] - b[4];\r\n out[5] = a[5] - b[5];\r\n out[6] = a[6] - b[6];\r\n out[7] = a[7] - b[7];\r\n out[8] = a[8] - b[8];\r\n out[9] = a[9] - b[9];\r\n out[10] = a[10] - b[10];\r\n out[11] = a[11] - b[11];\r\n out[12] = a[12] - b[12];\r\n out[13] = a[13] - b[13];\r\n out[14] = a[14] - b[14];\r\n out[15] = a[15] - b[15];\r\n return out;\r\n}\r\n\r\n/**\r\n * Multiply each element of the matrix by a scalar.\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the matrix to scale\r\n * @param {Number} b amount to scale the matrix's elements by\r\n * @returns {mat4} out\r\n */\r\nexport function multiplyScalar(out, a, b) {\r\n out[0] = a[0] * b;\r\n out[1] = a[1] * b;\r\n out[2] = a[2] * b;\r\n out[3] = a[3] * b;\r\n out[4] = a[4] * b;\r\n out[5] = a[5] * b;\r\n out[6] = a[6] * b;\r\n out[7] = a[7] * b;\r\n out[8] = a[8] * b;\r\n out[9] = a[9] * b;\r\n out[10] = a[10] * b;\r\n out[11] = a[11] * b;\r\n out[12] = a[12] * b;\r\n out[13] = a[13] * b;\r\n out[14] = a[14] * b;\r\n out[15] = a[15] * b;\r\n return out;\r\n}\r\n\r\n/**\r\n * Adds two mat4's after multiplying each element of the second operand by a scalar value.\r\n *\r\n * @param {mat4} out the receiving vector\r\n * @param {mat4} a the first operand\r\n * @param {mat4} b the second operand\r\n * @param {Number} scale the amount to scale b's elements by before adding\r\n * @returns {mat4} out\r\n */\r\nexport function multiplyScalarAndAdd(out, a, b, scale) {\r\n out[0] = a[0] + (b[0] * scale);\r\n out[1] = a[1] + (b[1] * scale);\r\n out[2] = a[2] + (b[2] * scale);\r\n out[3] = a[3] + (b[3] * scale);\r\n out[4] = a[4] + (b[4] * scale);\r\n out[5] = a[5] + (b[5] * scale);\r\n out[6] = a[6] + (b[6] * scale);\r\n out[7] = a[7] + (b[7] * scale);\r\n out[8] = a[8] + (b[8] * scale);\r\n out[9] = a[9] + (b[9] * scale);\r\n out[10] = a[10] + (b[10] * scale);\r\n out[11] = a[11] + (b[11] * scale);\r\n out[12] = a[12] + (b[12] * scale);\r\n out[13] = a[13] + (b[13] * scale);\r\n out[14] = a[14] + (b[14] * scale);\r\n out[15] = a[15] + (b[15] * scale);\r\n return out;\r\n}\r\n\r\n/**\r\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\r\n *\r\n * @param {mat4} a The first matrix.\r\n * @param {mat4} b The second matrix.\r\n * @returns {Boolean} True if the matrices are equal, false otherwise.\r\n */\r\nexport function exactEquals(a, b) {\r\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] &&\r\n a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] &&\r\n a[8] === b[8] && a[9] === b[9] && a[10] === b[10] && a[11] === b[11] &&\r\n a[12] === b[12] && a[13] === b[13] && a[14] === b[14] && a[15] === b[15];\r\n}\r\n\r\n/**\r\n * Returns whether or not the matrices have approximately the same elements in the same position.\r\n *\r\n * @param {mat4} a The first matrix.\r\n * @param {mat4} b The second matrix.\r\n * @returns {Boolean} True if the matrices are equal, false otherwise.\r\n */\r\nexport function equals(a, b) {\r\n let a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3];\r\n let a4 = a[4], a5 = a[5], a6 = a[6], a7 = a[7];\r\n let a8 = a[8], a9 = a[9], a10 = a[10], a11 = a[11];\r\n let a12 = a[12], a13 = a[13], a14 = a[14], a15 = a[15];\r\n\r\n let b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3];\r\n let b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7];\r\n let b8 = b[8], b9 = b[9], b10 = b[10], b11 = b[11];\r\n let b12 = b[12], b13 = b[13], b14 = b[14], b15 = b[15];\r\n\r\n return (Math.abs(a0 - b0) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a0), Math.abs(b0)) &&\r\n Math.abs(a1 - b1) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a1), Math.abs(b1)) &&\r\n Math.abs(a2 - b2) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a2), Math.abs(b2)) &&\r\n Math.abs(a3 - b3) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a3), Math.abs(b3)) &&\r\n Math.abs(a4 - b4) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a4), Math.abs(b4)) &&\r\n Math.abs(a5 - b5) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a5), Math.abs(b5)) &&\r\n Math.abs(a6 - b6) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a6), Math.abs(b6)) &&\r\n Math.abs(a7 - b7) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a7), Math.abs(b7)) &&\r\n Math.abs(a8 - b8) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a8), Math.abs(b8)) &&\r\n Math.abs(a9 - b9) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a9), Math.abs(b9)) &&\r\n Math.abs(a10 - b10) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a10), Math.abs(b10)) &&\r\n Math.abs(a11 - b11) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a11), Math.abs(b11)) &&\r\n Math.abs(a12 - b12) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a12), Math.abs(b12)) &&\r\n Math.abs(a13 - b13) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a13), Math.abs(b13)) &&\r\n Math.abs(a14 - b14) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a14), Math.abs(b14)) &&\r\n Math.abs(a15 - b15) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a15), Math.abs(b15)));\r\n}\r\n\r\n/**\r\n * Alias for {@link mat4.multiply}\r\n * @function\r\n */\r\nexport const mul = multiply;\r\n\r\n/**\r\n * Alias for {@link mat4.subtract}\r\n * @function\r\n */\r\nexport const sub = subtract;\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/node_modules/gl-matrix/src/gl-matrix/mat4.js","/* Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV.\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy\r\nof this software and associated documentation files (the \"Software\"), to deal\r\nin the Software without restriction, including without limitation the rights\r\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the Software is\r\nfurnished to do so, subject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be included in\r\nall copies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\nTHE SOFTWARE. */\r\n\r\nimport * as glMatrix from \"./common.js\"\r\nimport * as mat3 from \"./mat3.js\"\r\nimport * as vec3 from \"./vec3.js\"\r\nimport * as vec4 from \"./vec4.js\"\r\n\r\n/**\r\n * Quaternion\r\n * @module quat\r\n */\r\n\r\n/**\r\n * Creates a new identity quat\r\n *\r\n * @returns {quat} a new quaternion\r\n */\r\nexport function create() {\r\n let out = new glMatrix.ARRAY_TYPE(4);\r\n out[0] = 0;\r\n out[1] = 0;\r\n out[2] = 0;\r\n out[3] = 1;\r\n return out;\r\n}\r\n\r\n/**\r\n * Set a quat to the identity quaternion\r\n *\r\n * @param {quat} out the receiving quaternion\r\n * @returns {quat} out\r\n */\r\nexport function identity(out) {\r\n out[0] = 0;\r\n out[1] = 0;\r\n out[2] = 0;\r\n out[3] = 1;\r\n return out;\r\n}\r\n\r\n/**\r\n * Sets a quat from the given angle and rotation axis,\r\n * then returns it.\r\n *\r\n * @param {quat} out the receiving quaternion\r\n * @param {vec3} axis the axis around which to rotate\r\n * @param {Number} rad the angle in radians\r\n * @returns {quat} out\r\n **/\r\nexport function setAxisAngle(out, axis, rad) {\r\n rad = rad * 0.5;\r\n let s = Math.sin(rad);\r\n out[0] = s * axis[0];\r\n out[1] = s * axis[1];\r\n out[2] = s * axis[2];\r\n out[3] = Math.cos(rad);\r\n return out;\r\n}\r\n\r\n/**\r\n * Gets the rotation axis and angle for a given\r\n * quaternion. If a quaternion is created with\r\n * setAxisAngle, this method will return the same\r\n * values as providied in the original parameter list\r\n * OR functionally equivalent values.\r\n * Example: The quaternion formed by axis [0, 0, 1] and\r\n * angle -90 is the same as the quaternion formed by\r\n * [0, 0, 1] and 270. This method favors the latter.\r\n * @param {vec3} out_axis Vector receiving the axis of rotation\r\n * @param {quat} q Quaternion to be decomposed\r\n * @return {Number} Angle, in radians, of the rotation\r\n */\r\nexport function getAxisAngle(out_axis, q) {\r\n let rad = Math.acos(q[3]) * 2.0;\r\n let s = Math.sin(rad / 2.0);\r\n if (s != 0.0) {\r\n out_axis[0] = q[0] / s;\r\n out_axis[1] = q[1] / s;\r\n out_axis[2] = q[2] / s;\r\n } else {\r\n // If s is zero, return any axis (no rotation - axis does not matter)\r\n out_axis[0] = 1;\r\n out_axis[1] = 0;\r\n out_axis[2] = 0;\r\n }\r\n return rad;\r\n}\r\n\r\n/**\r\n * Multiplies two quat's\r\n *\r\n * @param {quat} out the receiving quaternion\r\n * @param {quat} a the first operand\r\n * @param {quat} b the second operand\r\n * @returns {quat} out\r\n */\r\nexport function multiply(out, a, b) {\r\n let ax = a[0], ay = a[1], az = a[2], aw = a[3];\r\n let bx = b[0], by = b[1], bz = b[2], bw = b[3];\r\n\r\n out[0] = ax * bw + aw * bx + ay * bz - az * by;\r\n out[1] = ay * bw + aw * by + az * bx - ax * bz;\r\n out[2] = az * bw + aw * bz + ax * by - ay * bx;\r\n out[3] = aw * bw - ax * bx - ay * by - az * bz;\r\n return out;\r\n}\r\n\r\n/**\r\n * Rotates a quaternion by the given angle about the X axis\r\n *\r\n * @param {quat} out quat receiving operation result\r\n * @param {quat} a quat to rotate\r\n * @param {number} rad angle (in radians) to rotate\r\n * @returns {quat} out\r\n */\r\nexport function rotateX(out, a, rad) {\r\n rad *= 0.5;\r\n\r\n let ax = a[0], ay = a[1], az = a[2], aw = a[3];\r\n let bx = Math.sin(rad), bw = Math.cos(rad);\r\n\r\n out[0] = ax * bw + aw * bx;\r\n out[1] = ay * bw + az * bx;\r\n out[2] = az * bw - ay * bx;\r\n out[3] = aw * bw - ax * bx;\r\n return out;\r\n}\r\n\r\n/**\r\n * Rotates a quaternion by the given angle about the Y axis\r\n *\r\n * @param {quat} out quat receiving operation result\r\n * @param {quat} a quat to rotate\r\n * @param {number} rad angle (in radians) to rotate\r\n * @returns {quat} out\r\n */\r\nexport function rotateY(out, a, rad) {\r\n rad *= 0.5;\r\n\r\n let ax = a[0], ay = a[1], az = a[2], aw = a[3];\r\n let by = Math.sin(rad), bw = Math.cos(rad);\r\n\r\n out[0] = ax * bw - az * by;\r\n out[1] = ay * bw + aw * by;\r\n out[2] = az * bw + ax * by;\r\n out[3] = aw * bw - ay * by;\r\n return out;\r\n}\r\n\r\n/**\r\n * Rotates a quaternion by the given angle about the Z axis\r\n *\r\n * @param {quat} out quat receiving operation result\r\n * @param {quat} a quat to rotate\r\n * @param {number} rad angle (in radians) to rotate\r\n * @returns {quat} out\r\n */\r\nexport function rotateZ(out, a, rad) {\r\n rad *= 0.5;\r\n\r\n let ax = a[0], ay = a[1], az = a[2], aw = a[3];\r\n let bz = Math.sin(rad), bw = Math.cos(rad);\r\n\r\n out[0] = ax * bw + ay * bz;\r\n out[1] = ay * bw - ax * bz;\r\n out[2] = az * bw + aw * bz;\r\n out[3] = aw * bw - az * bz;\r\n return out;\r\n}\r\n\r\n/**\r\n * Calculates the W component of a quat from the X, Y, and Z components.\r\n * Assumes that quaternion is 1 unit in length.\r\n * Any existing W component will be ignored.\r\n *\r\n * @param {quat} out the receiving quaternion\r\n * @param {quat} a quat to calculate W component of\r\n * @returns {quat} out\r\n */\r\nexport function calculateW(out, a) {\r\n let x = a[0], y = a[1], z = a[2];\r\n\r\n out[0] = x;\r\n out[1] = y;\r\n out[2] = z;\r\n out[3] = Math.sqrt(Math.abs(1.0 - x * x - y * y - z * z));\r\n return out;\r\n}\r\n\r\n/**\r\n * Performs a spherical linear interpolation between two quat\r\n *\r\n * @param {quat} out the receiving quaternion\r\n * @param {quat} a the first operand\r\n * @param {quat} b the second operand\r\n * @param {Number} t interpolation amount between the two inputs\r\n * @returns {quat} out\r\n */\r\nexport function slerp(out, a, b, t) {\r\n // benchmarks:\r\n // http://jsperf.com/quaternion-slerp-implementations\r\n let ax = a[0], ay = a[1], az = a[2], aw = a[3];\r\n let bx = b[0], by = b[1], bz = b[2], bw = b[3];\r\n\r\n let omega, cosom, sinom, scale0, scale1;\r\n\r\n // calc cosine\r\n cosom = ax * bx + ay * by + az * bz + aw * bw;\r\n // adjust signs (if necessary)\r\n if ( cosom < 0.0 ) {\r\n cosom = -cosom;\r\n bx = - bx;\r\n by = - by;\r\n bz = - bz;\r\n bw = - bw;\r\n }\r\n // calculate coefficients\r\n if ( (1.0 - cosom) > 0.000001 ) {\r\n // standard case (slerp)\r\n omega = Math.acos(cosom);\r\n sinom = Math.sin(omega);\r\n scale0 = Math.sin((1.0 - t) * omega) / sinom;\r\n scale1 = Math.sin(t * omega) / sinom;\r\n } else {\r\n // \"from\" and \"to\" quaternions are very close\r\n // ... so we can do a linear interpolation\r\n scale0 = 1.0 - t;\r\n scale1 = t;\r\n }\r\n // calculate final values\r\n out[0] = scale0 * ax + scale1 * bx;\r\n out[1] = scale0 * ay + scale1 * by;\r\n out[2] = scale0 * az + scale1 * bz;\r\n out[3] = scale0 * aw + scale1 * bw;\r\n\r\n return out;\r\n}\r\n\r\n/**\r\n * Calculates the inverse of a quat\r\n *\r\n * @param {quat} out the receiving quaternion\r\n * @param {quat} a quat to calculate inverse of\r\n * @returns {quat} out\r\n */\r\nexport function invert(out, a) {\r\n let a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3];\r\n let dot = a0*a0 + a1*a1 + a2*a2 + a3*a3;\r\n let invDot = dot ? 1.0/dot : 0;\r\n\r\n // TODO: Would be faster to return [0,0,0,0] immediately if dot == 0\r\n\r\n out[0] = -a0*invDot;\r\n out[1] = -a1*invDot;\r\n out[2] = -a2*invDot;\r\n out[3] = a3*invDot;\r\n return out;\r\n}\r\n\r\n/**\r\n * Calculates the conjugate of a quat\r\n * If the quaternion is normalized, this function is faster than quat.inverse and produces the same result.\r\n *\r\n * @param {quat} out the receiving quaternion\r\n * @param {quat} a quat to calculate conjugate of\r\n * @returns {quat} out\r\n */\r\nexport function conjugate(out, a) {\r\n out[0] = -a[0];\r\n out[1] = -a[1];\r\n out[2] = -a[2];\r\n out[3] = a[3];\r\n return out;\r\n}\r\n\r\n/**\r\n * Creates a quaternion from the given 3x3 rotation matrix.\r\n *\r\n * NOTE: The resultant quaternion is not normalized, so you should be sure\r\n * to renormalize the quaternion yourself where necessary.\r\n *\r\n * @param {quat} out the receiving quaternion\r\n * @param {mat3} m rotation matrix\r\n * @returns {quat} out\r\n * @function\r\n */\r\nexport function fromMat3(out, m) {\r\n // Algorithm in Ken Shoemake's article in 1987 SIGGRAPH course notes\r\n // article \"Quaternion Calculus and Fast Animation\".\r\n let fTrace = m[0] + m[4] + m[8];\r\n let fRoot;\r\n\r\n if ( fTrace > 0.0 ) {\r\n // |w| > 1/2, may as well choose w > 1/2\r\n fRoot = Math.sqrt(fTrace + 1.0); // 2w\r\n out[3] = 0.5 * fRoot;\r\n fRoot = 0.5/fRoot; // 1/(4w)\r\n out[0] = (m[5]-m[7])*fRoot;\r\n out[1] = (m[6]-m[2])*fRoot;\r\n out[2] = (m[1]-m[3])*fRoot;\r\n } else {\r\n // |w| <= 1/2\r\n let i = 0;\r\n if ( m[4] > m[0] )\r\n i = 1;\r\n if ( m[8] > m[i*3+i] )\r\n i = 2;\r\n let j = (i+1)%3;\r\n let k = (i+2)%3;\r\n\r\n fRoot = Math.sqrt(m[i*3+i]-m[j*3+j]-m[k*3+k] + 1.0);\r\n out[i] = 0.5 * fRoot;\r\n fRoot = 0.5 / fRoot;\r\n out[3] = (m[j*3+k] - m[k*3+j]) * fRoot;\r\n out[j] = (m[j*3+i] + m[i*3+j]) * fRoot;\r\n out[k] = (m[k*3+i] + m[i*3+k]) * fRoot;\r\n }\r\n\r\n return out;\r\n}\r\n\r\n/**\r\n * Creates a quaternion from the given euler angle x, y, z.\r\n *\r\n * @param {quat} out the receiving quaternion\r\n * @param {x} Angle to rotate around X axis in degrees.\r\n * @param {y} Angle to rotate around Y axis in degrees.\r\n * @param {z} Angle to rotate around Z axis in degrees.\r\n * @returns {quat} out\r\n * @function\r\n */\r\nexport function fromEuler(out, x, y, z) {\r\n let halfToRad = 0.5 * Math.PI / 180.0;\r\n x *= halfToRad;\r\n y *= halfToRad;\r\n z *= halfToRad;\r\n\r\n let sx = Math.sin(x);\r\n let cx = Math.cos(x);\r\n let sy = Math.sin(y);\r\n let cy = Math.cos(y);\r\n let sz = Math.sin(z);\r\n let cz = Math.cos(z);\r\n\r\n out[0] = sx * cy * cz - cx * sy * sz;\r\n out[1] = cx * sy * cz + sx * cy * sz;\r\n out[2] = cx * cy * sz - sx * sy * cz;\r\n out[3] = cx * cy * cz + sx * sy * sz;\r\n\r\n return out;\r\n}\r\n\r\n/**\r\n * Returns a string representation of a quatenion\r\n *\r\n * @param {quat} a vector to represent as a string\r\n * @returns {String} string representation of the vector\r\n */\r\nexport function str(a) {\r\n return 'quat(' + a[0] + ', ' + a[1] + ', ' + a[2] + ', ' + a[3] + ')';\r\n}\r\n\r\n/**\r\n * Creates a new quat initialized with values from an existing quaternion\r\n *\r\n * @param {quat} a quaternion to clone\r\n * @returns {quat} a new quaternion\r\n * @function\r\n */\r\nexport const clone = vec4.clone;\r\n\r\n/**\r\n * Creates a new quat initialized with the given values\r\n *\r\n * @param {Number} x X component\r\n * @param {Number} y Y component\r\n * @param {Number} z Z component\r\n * @param {Number} w W component\r\n * @returns {quat} a new quaternion\r\n * @function\r\n */\r\nexport const fromValues = vec4.fromValues;\r\n\r\n/**\r\n * Copy the values from one quat to another\r\n *\r\n * @param {quat} out the receiving quaternion\r\n * @param {quat} a the source quaternion\r\n * @returns {quat} out\r\n * @function\r\n */\r\nexport const copy = vec4.copy;\r\n\r\n/**\r\n * Set the components of a quat to the given values\r\n *\r\n * @param {quat} out the receiving quaternion\r\n * @param {Number} x X component\r\n * @param {Number} y Y component\r\n * @param {Number} z Z component\r\n * @param {Number} w W component\r\n * @returns {quat} out\r\n * @function\r\n */\r\nexport const set = vec4.set;\r\n\r\n/**\r\n * Adds two quat's\r\n *\r\n * @param {quat} out the receiving quaternion\r\n * @param {quat} a the first operand\r\n * @param {quat} b the second operand\r\n * @returns {quat} out\r\n * @function\r\n */\r\nexport const add = vec4.add;\r\n\r\n/**\r\n * Alias for {@link quat.multiply}\r\n * @function\r\n */\r\nexport const mul = multiply;\r\n\r\n/**\r\n * Scales a quat by a scalar number\r\n *\r\n * @param {quat} out the receiving vector\r\n * @param {quat} a the vector to scale\r\n * @param {Number} b amount to scale the vector by\r\n * @returns {quat} out\r\n * @function\r\n */\r\nexport const scale = vec4.scale;\r\n\r\n/**\r\n * Calculates the dot product of two quat's\r\n *\r\n * @param {quat} a the first operand\r\n * @param {quat} b the second operand\r\n * @returns {Number} dot product of a and b\r\n * @function\r\n */\r\nexport const dot = vec4.dot;\r\n\r\n/**\r\n * Performs a linear interpolation between two quat's\r\n *\r\n * @param {quat} out the receiving quaternion\r\n * @param {quat} a the first operand\r\n * @param {quat} b the second operand\r\n * @param {Number} t interpolation amount between the two inputs\r\n * @returns {quat} out\r\n * @function\r\n */\r\nexport const lerp = vec4.lerp;\r\n\r\n/**\r\n * Calculates the length of a quat\r\n *\r\n * @param {quat} a vector to calculate length of\r\n * @returns {Number} length of a\r\n */\r\nexport const length = vec4.length;\r\n\r\n/**\r\n * Alias for {@link quat.length}\r\n * @function\r\n */\r\nexport const len = length;\r\n\r\n/**\r\n * Calculates the squared length of a quat\r\n *\r\n * @param {quat} a vector to calculate squared length of\r\n * @returns {Number} squared length of a\r\n * @function\r\n */\r\nexport const squaredLength = vec4.squaredLength;\r\n\r\n/**\r\n * Alias for {@link quat.squaredLength}\r\n * @function\r\n */\r\nexport const sqrLen = squaredLength;\r\n\r\n/**\r\n * Normalize a quat\r\n *\r\n * @param {quat} out the receiving quaternion\r\n * @param {quat} a quaternion to normalize\r\n * @returns {quat} out\r\n * @function\r\n */\r\nexport const normalize = vec4.normalize;\r\n\r\n/**\r\n * Returns whether or not the quaternions have exactly the same elements in the same position (when compared with ===)\r\n *\r\n * @param {quat} a The first quaternion.\r\n * @param {quat} b The second quaternion.\r\n * @returns {Boolean} True if the vectors are equal, false otherwise.\r\n */\r\nexport const exactEquals = vec4.exactEquals;\r\n\r\n/**\r\n * Returns whether or not the quaternions have approximately the same elements in the same position.\r\n *\r\n * @param {quat} a The first vector.\r\n * @param {quat} b The second vector.\r\n * @returns {Boolean} True if the vectors are equal, false otherwise.\r\n */\r\nexport const equals = vec4.equals;\r\n\r\n/**\r\n * Sets a quaternion to represent the shortest rotation from one\r\n * vector to another.\r\n *\r\n * Both vectors are assumed to be unit length.\r\n *\r\n * @param {quat} out the receiving quaternion.\r\n * @param {vec3} a the initial vector\r\n * @param {vec3} b the destination vector\r\n * @returns {quat} out\r\n */\r\nexport const rotationTo = (function() {\r\n let tmpvec3 = vec3.create();\r\n let xUnitVec3 = vec3.fromValues(1,0,0);\r\n let yUnitVec3 = vec3.fromValues(0,1,0);\r\n\r\n return function(out, a, b) {\r\n let dot = vec3.dot(a, b);\r\n if (dot < -0.999999) {\r\n vec3.cross(tmpvec3, xUnitVec3, a);\r\n if (vec3.len(tmpvec3) < 0.000001)\r\n vec3.cross(tmpvec3, yUnitVec3, a);\r\n vec3.normalize(tmpvec3, tmpvec3);\r\n setAxisAngle(out, tmpvec3, Math.PI);\r\n return out;\r\n } else if (dot > 0.999999) {\r\n out[0] = 0;\r\n out[1] = 0;\r\n out[2] = 0;\r\n out[3] = 1;\r\n return out;\r\n } else {\r\n vec3.cross(tmpvec3, a, b);\r\n out[0] = tmpvec3[0];\r\n out[1] = tmpvec3[1];\r\n out[2] = tmpvec3[2];\r\n out[3] = 1 + dot;\r\n return normalize(out, out);\r\n }\r\n };\r\n})();\r\n\r\n/**\r\n * Performs a spherical linear interpolation with two control points\r\n *\r\n * @param {quat} out the receiving quaternion\r\n * @param {quat} a the first operand\r\n * @param {quat} b the second operand\r\n * @param {quat} c the third operand\r\n * @param {quat} d the fourth operand\r\n * @param {Number} t interpolation amount\r\n * @returns {quat} out\r\n */\r\nexport const sqlerp = (function () {\r\n let temp1 = create();\r\n let temp2 = create();\r\n\r\n return function (out, a, b, c, d, t) {\r\n slerp(temp1, a, d, t);\r\n slerp(temp2, b, c, t);\r\n slerp(out, temp1, temp2, 2 * t * (1 - t));\r\n\r\n return out;\r\n };\r\n}());\r\n\r\n/**\r\n * Sets the specified quaternion with values corresponding to the given\r\n * axes. Each axis is a vec3 and is expected to be unit length and\r\n * perpendicular to all other specified axes.\r\n *\r\n * @param {vec3} view the vector representing the viewing direction\r\n * @param {vec3} right the vector representing the local \"right\" direction\r\n * @param {vec3} up the vector representing the local \"up\" direction\r\n * @returns {quat} out\r\n */\r\nexport const setAxes = (function() {\r\n let matr = mat3.create();\r\n\r\n return function(out, view, right, up) {\r\n matr[0] = right[0];\r\n matr[3] = right[1];\r\n matr[6] = right[2];\r\n\r\n matr[1] = up[0];\r\n matr[4] = up[1];\r\n matr[7] = up[2];\r\n\r\n matr[2] = -view[0];\r\n matr[5] = -view[1];\r\n matr[8] = -view[2];\r\n\r\n return normalize(out, fromMat3(out, matr));\r\n };\r\n})();\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/node_modules/gl-matrix/src/gl-matrix/quat.js","/* Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV.\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy\r\nof this software and associated documentation files (the \"Software\"), to deal\r\nin the Software without restriction, including without limitation the rights\r\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the Software is\r\nfurnished to do so, subject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be included in\r\nall copies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\nTHE SOFTWARE. */\r\n\r\nimport * as glMatrix from \"./common.js\";\r\n\r\n/**\r\n * 3 Dimensional Vector\r\n * @module vec3\r\n */\r\n\r\n/**\r\n * Creates a new, empty vec3\r\n *\r\n * @returns {vec3} a new 3D vector\r\n */\r\nexport function create() {\r\n let out = new glMatrix.ARRAY_TYPE(3);\r\n out[0] = 0;\r\n out[1] = 0;\r\n out[2] = 0;\r\n return out;\r\n}\r\n\r\n/**\r\n * Creates a new vec3 initialized with values from an existing vector\r\n *\r\n * @param {vec3} a vector to clone\r\n * @returns {vec3} a new 3D vector\r\n */\r\nexport function clone(a) {\r\n var out = new glMatrix.ARRAY_TYPE(3);\r\n out[0] = a[0];\r\n out[1] = a[1];\r\n out[2] = a[2];\r\n return out;\r\n}\r\n\r\n/**\r\n * Calculates the length of a vec3\r\n *\r\n * @param {vec3} a vector to calculate length of\r\n * @returns {Number} length of a\r\n */\r\nexport function length(a) {\r\n let x = a[0];\r\n let y = a[1];\r\n let z = a[2];\r\n return Math.sqrt(x*x + y*y + z*z);\r\n}\r\n\r\n/**\r\n * Creates a new vec3 initialized with the given values\r\n *\r\n * @param {Number} x X component\r\n * @param {Number} y Y component\r\n * @param {Number} z Z component\r\n * @returns {vec3} a new 3D vector\r\n */\r\nexport function fromValues(x, y, z) {\r\n let out = new glMatrix.ARRAY_TYPE(3);\r\n out[0] = x;\r\n out[1] = y;\r\n out[2] = z;\r\n return out;\r\n}\r\n\r\n/**\r\n * Copy the values from one vec3 to another\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the source vector\r\n * @returns {vec3} out\r\n */\r\nexport function copy(out, a) {\r\n out[0] = a[0];\r\n out[1] = a[1];\r\n out[2] = a[2];\r\n return out;\r\n}\r\n\r\n/**\r\n * Set the components of a vec3 to the given values\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {Number} x X component\r\n * @param {Number} y Y component\r\n * @param {Number} z Z component\r\n * @returns {vec3} out\r\n */\r\nexport function set(out, x, y, z) {\r\n out[0] = x;\r\n out[1] = y;\r\n out[2] = z;\r\n return out;\r\n}\r\n\r\n/**\r\n * Adds two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @returns {vec3} out\r\n */\r\nexport function add(out, a, b) {\r\n out[0] = a[0] + b[0];\r\n out[1] = a[1] + b[1];\r\n out[2] = a[2] + b[2];\r\n return out;\r\n}\r\n\r\n/**\r\n * Subtracts vector b from vector a\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @returns {vec3} out\r\n */\r\nexport function subtract(out, a, b) {\r\n out[0] = a[0] - b[0];\r\n out[1] = a[1] - b[1];\r\n out[2] = a[2] - b[2];\r\n return out;\r\n}\r\n\r\n/**\r\n * Multiplies two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @returns {vec3} out\r\n */\r\nexport function multiply(out, a, b) {\r\n out[0] = a[0] * b[0];\r\n out[1] = a[1] * b[1];\r\n out[2] = a[2] * b[2];\r\n return out;\r\n}\r\n\r\n/**\r\n * Divides two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @returns {vec3} out\r\n */\r\nexport function divide(out, a, b) {\r\n out[0] = a[0] / b[0];\r\n out[1] = a[1] / b[1];\r\n out[2] = a[2] / b[2];\r\n return out;\r\n}\r\n\r\n/**\r\n * Math.ceil the components of a vec3\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a vector to ceil\r\n * @returns {vec3} out\r\n */\r\nexport function ceil(out, a) {\r\n out[0] = Math.ceil(a[0]);\r\n out[1] = Math.ceil(a[1]);\r\n out[2] = Math.ceil(a[2]);\r\n return out;\r\n}\r\n\r\n/**\r\n * Math.floor the components of a vec3\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a vector to floor\r\n * @returns {vec3} out\r\n */\r\nexport function floor(out, a) {\r\n out[0] = Math.floor(a[0]);\r\n out[1] = Math.floor(a[1]);\r\n out[2] = Math.floor(a[2]);\r\n return out;\r\n}\r\n\r\n/**\r\n * Returns the minimum of two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @returns {vec3} out\r\n */\r\nexport function min(out, a, b) {\r\n out[0] = Math.min(a[0], b[0]);\r\n out[1] = Math.min(a[1], b[1]);\r\n out[2] = Math.min(a[2], b[2]);\r\n return out;\r\n}\r\n\r\n/**\r\n * Returns the maximum of two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @returns {vec3} out\r\n */\r\nexport function max(out, a, b) {\r\n out[0] = Math.max(a[0], b[0]);\r\n out[1] = Math.max(a[1], b[1]);\r\n out[2] = Math.max(a[2], b[2]);\r\n return out;\r\n}\r\n\r\n/**\r\n * Math.round the components of a vec3\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a vector to round\r\n * @returns {vec3} out\r\n */\r\nexport function round(out, a) {\r\n out[0] = Math.round(a[0]);\r\n out[1] = Math.round(a[1]);\r\n out[2] = Math.round(a[2]);\r\n return out;\r\n}\r\n\r\n/**\r\n * Scales a vec3 by a scalar number\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the vector to scale\r\n * @param {Number} b amount to scale the vector by\r\n * @returns {vec3} out\r\n */\r\nexport function scale(out, a, b) {\r\n out[0] = a[0] * b;\r\n out[1] = a[1] * b;\r\n out[2] = a[2] * b;\r\n return out;\r\n}\r\n\r\n/**\r\n * Adds two vec3's after scaling the second operand by a scalar value\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @param {Number} scale the amount to scale b by before adding\r\n * @returns {vec3} out\r\n */\r\nexport function scaleAndAdd(out, a, b, scale) {\r\n out[0] = a[0] + (b[0] * scale);\r\n out[1] = a[1] + (b[1] * scale);\r\n out[2] = a[2] + (b[2] * scale);\r\n return out;\r\n}\r\n\r\n/**\r\n * Calculates the euclidian distance between two vec3's\r\n *\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @returns {Number} distance between a and b\r\n */\r\nexport function distance(a, b) {\r\n let x = b[0] - a[0];\r\n let y = b[1] - a[1];\r\n let z = b[2] - a[2];\r\n return Math.sqrt(x*x + y*y + z*z);\r\n}\r\n\r\n/**\r\n * Calculates the squared euclidian distance between two vec3's\r\n *\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @returns {Number} squared distance between a and b\r\n */\r\nexport function squaredDistance(a, b) {\r\n let x = b[0] - a[0];\r\n let y = b[1] - a[1];\r\n let z = b[2] - a[2];\r\n return x*x + y*y + z*z;\r\n}\r\n\r\n/**\r\n * Calculates the squared length of a vec3\r\n *\r\n * @param {vec3} a vector to calculate squared length of\r\n * @returns {Number} squared length of a\r\n */\r\nexport function squaredLength(a) {\r\n let x = a[0];\r\n let y = a[1];\r\n let z = a[2];\r\n return x*x + y*y + z*z;\r\n}\r\n\r\n/**\r\n * Negates the components of a vec3\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a vector to negate\r\n * @returns {vec3} out\r\n */\r\nexport function negate(out, a) {\r\n out[0] = -a[0];\r\n out[1] = -a[1];\r\n out[2] = -a[2];\r\n return out;\r\n}\r\n\r\n/**\r\n * Returns the inverse of the components of a vec3\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a vector to invert\r\n * @returns {vec3} out\r\n */\r\nexport function inverse(out, a) {\r\n out[0] = 1.0 / a[0];\r\n out[1] = 1.0 / a[1];\r\n out[2] = 1.0 / a[2];\r\n return out;\r\n}\r\n\r\n/**\r\n * Normalize a vec3\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a vector to normalize\r\n * @returns {vec3} out\r\n */\r\nexport function normalize(out, a) {\r\n let x = a[0];\r\n let y = a[1];\r\n let z = a[2];\r\n let len = x*x + y*y + z*z;\r\n if (len > 0) {\r\n //TODO: evaluate use of glm_invsqrt here?\r\n len = 1 / Math.sqrt(len);\r\n out[0] = a[0] * len;\r\n out[1] = a[1] * len;\r\n out[2] = a[2] * len;\r\n }\r\n return out;\r\n}\r\n\r\n/**\r\n * Calculates the dot product of two vec3's\r\n *\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @returns {Number} dot product of a and b\r\n */\r\nexport function dot(a, b) {\r\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\r\n}\r\n\r\n/**\r\n * Computes the cross product of two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @returns {vec3} out\r\n */\r\nexport function cross(out, a, b) {\r\n let ax = a[0], ay = a[1], az = a[2];\r\n let bx = b[0], by = b[1], bz = b[2];\r\n\r\n out[0] = ay * bz - az * by;\r\n out[1] = az * bx - ax * bz;\r\n out[2] = ax * by - ay * bx;\r\n return out;\r\n}\r\n\r\n/**\r\n * Performs a linear interpolation between two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @param {Number} t interpolation amount between the two inputs\r\n * @returns {vec3} out\r\n */\r\nexport function lerp(out, a, b, t) {\r\n let ax = a[0];\r\n let ay = a[1];\r\n let az = a[2];\r\n out[0] = ax + t * (b[0] - ax);\r\n out[1] = ay + t * (b[1] - ay);\r\n out[2] = az + t * (b[2] - az);\r\n return out;\r\n}\r\n\r\n/**\r\n * Performs a hermite interpolation with two control points\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @param {vec3} c the third operand\r\n * @param {vec3} d the fourth operand\r\n * @param {Number} t interpolation amount between the two inputs\r\n * @returns {vec3} out\r\n */\r\nexport function hermite(out, a, b, c, d, t) {\r\n let factorTimes2 = t * t;\r\n let factor1 = factorTimes2 * (2 * t - 3) + 1;\r\n let factor2 = factorTimes2 * (t - 2) + t;\r\n let factor3 = factorTimes2 * (t - 1);\r\n let factor4 = factorTimes2 * (3 - 2 * t);\r\n\r\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\r\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\r\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\r\n\r\n return out;\r\n}\r\n\r\n/**\r\n * Performs a bezier interpolation with two control points\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @param {vec3} c the third operand\r\n * @param {vec3} d the fourth operand\r\n * @param {Number} t interpolation amount between the two inputs\r\n * @returns {vec3} out\r\n */\r\nexport function bezier(out, a, b, c, d, t) {\r\n let inverseFactor = 1 - t;\r\n let inverseFactorTimesTwo = inverseFactor * inverseFactor;\r\n let factorTimes2 = t * t;\r\n let factor1 = inverseFactorTimesTwo * inverseFactor;\r\n let factor2 = 3 * t * inverseFactorTimesTwo;\r\n let factor3 = 3 * factorTimes2 * inverseFactor;\r\n let factor4 = factorTimes2 * t;\r\n\r\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\r\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\r\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\r\n\r\n return out;\r\n}\r\n\r\n/**\r\n * Generates a random vector with the given scale\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\r\n * @returns {vec3} out\r\n */\r\nexport function random(out, scale) {\r\n scale = scale || 1.0;\r\n\r\n let r = glMatrix.RANDOM() * 2.0 * Math.PI;\r\n let z = (glMatrix.RANDOM() * 2.0) - 1.0;\r\n let zScale = Math.sqrt(1.0-z*z) * scale;\r\n\r\n out[0] = Math.cos(r) * zScale;\r\n out[1] = Math.sin(r) * zScale;\r\n out[2] = z * scale;\r\n return out;\r\n}\r\n\r\n/**\r\n * Transforms the vec3 with a mat4.\r\n * 4th vector component is implicitly '1'\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the vector to transform\r\n * @param {mat4} m matrix to transform with\r\n * @returns {vec3} out\r\n */\r\nexport function transformMat4(out, a, m) {\r\n let x = a[0], y = a[1], z = a[2];\r\n let w = m[3] * x + m[7] * y + m[11] * z + m[15];\r\n w = w || 1.0;\r\n out[0] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w;\r\n out[1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w;\r\n out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w;\r\n return out;\r\n}\r\n\r\n/**\r\n * Transforms the vec3 with a mat3.\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the vector to transform\r\n * @param {mat3} m the 3x3 matrix to transform with\r\n * @returns {vec3} out\r\n */\r\nexport function transformMat3(out, a, m) {\r\n let x = a[0], y = a[1], z = a[2];\r\n out[0] = x * m[0] + y * m[3] + z * m[6];\r\n out[1] = x * m[1] + y * m[4] + z * m[7];\r\n out[2] = x * m[2] + y * m[5] + z * m[8];\r\n return out;\r\n}\r\n\r\n/**\r\n * Transforms the vec3 with a quat\r\n * Can also be used for dual quaternions. (Multiply it with the real part)\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the vector to transform\r\n * @param {quat} q quaternion to transform with\r\n * @returns {vec3} out\r\n */\r\nexport function transformQuat(out, a, q) {\r\n // benchmarks: https://jsperf.com/quaternion-transform-vec3-implementations-fixed\r\n let qx = q[0], qy = q[1], qz = q[2], qw = q[3];\r\n let x = a[0], y = a[1], z = a[2];\r\n // var qvec = [qx, qy, qz];\r\n // var uv = vec3.cross([], qvec, a);\r\n let uvx = qy * z - qz * y,\r\n uvy = qz * x - qx * z,\r\n uvz = qx * y - qy * x;\r\n // var uuv = vec3.cross([], qvec, uv);\r\n let uuvx = qy * uvz - qz * uvy,\r\n uuvy = qz * uvx - qx * uvz,\r\n uuvz = qx * uvy - qy * uvx;\r\n // vec3.scale(uv, uv, 2 * w);\r\n let w2 = qw * 2;\r\n uvx *= w2;\r\n uvy *= w2;\r\n uvz *= w2;\r\n // vec3.scale(uuv, uuv, 2);\r\n uuvx *= 2;\r\n uuvy *= 2;\r\n uuvz *= 2;\r\n // return vec3.add(out, a, vec3.add(out, uv, uuv));\r\n out[0] = x + uvx + uuvx;\r\n out[1] = y + uvy + uuvy;\r\n out[2] = z + uvz + uuvz;\r\n return out;\r\n}\r\n\r\n/**\r\n * Rotate a 3D vector around the x-axis\r\n * @param {vec3} out The receiving vec3\r\n * @param {vec3} a The vec3 point to rotate\r\n * @param {vec3} b The origin of the rotation\r\n * @param {Number} c The angle of rotation\r\n * @returns {vec3} out\r\n */\r\nexport function rotateX(out, a, b, c){\r\n let p = [], r=[];\r\n //Translate point to the origin\r\n p[0] = a[0] - b[0];\r\n p[1] = a[1] - b[1];\r\n p[2] = a[2] - b[2];\r\n\r\n //perform rotation\r\n r[0] = p[0];\r\n r[1] = p[1]*Math.cos(c) - p[2]*Math.sin(c);\r\n r[2] = p[1]*Math.sin(c) + p[2]*Math.cos(c);\r\n\r\n //translate to correct position\r\n out[0] = r[0] + b[0];\r\n out[1] = r[1] + b[1];\r\n out[2] = r[2] + b[2];\r\n\r\n return out;\r\n}\r\n\r\n/**\r\n * Rotate a 3D vector around the y-axis\r\n * @param {vec3} out The receiving vec3\r\n * @param {vec3} a The vec3 point to rotate\r\n * @param {vec3} b The origin of the rotation\r\n * @param {Number} c The angle of rotation\r\n * @returns {vec3} out\r\n */\r\nexport function rotateY(out, a, b, c){\r\n let p = [], r=[];\r\n //Translate point to the origin\r\n p[0] = a[0] - b[0];\r\n p[1] = a[1] - b[1];\r\n p[2] = a[2] - b[2];\r\n\r\n //perform rotation\r\n r[0] = p[2]*Math.sin(c) + p[0]*Math.cos(c);\r\n r[1] = p[1];\r\n r[2] = p[2]*Math.cos(c) - p[0]*Math.sin(c);\r\n\r\n //translate to correct position\r\n out[0] = r[0] + b[0];\r\n out[1] = r[1] + b[1];\r\n out[2] = r[2] + b[2];\r\n\r\n return out;\r\n}\r\n\r\n/**\r\n * Rotate a 3D vector around the z-axis\r\n * @param {vec3} out The receiving vec3\r\n * @param {vec3} a The vec3 point to rotate\r\n * @param {vec3} b The origin of the rotation\r\n * @param {Number} c The angle of rotation\r\n * @returns {vec3} out\r\n */\r\nexport function rotateZ(out, a, b, c){\r\n let p = [], r=[];\r\n //Translate point to the origin\r\n p[0] = a[0] - b[0];\r\n p[1] = a[1] - b[1];\r\n p[2] = a[2] - b[2];\r\n\r\n //perform rotation\r\n r[0] = p[0]*Math.cos(c) - p[1]*Math.sin(c);\r\n r[1] = p[0]*Math.sin(c) + p[1]*Math.cos(c);\r\n r[2] = p[2];\r\n\r\n //translate to correct position\r\n out[0] = r[0] + b[0];\r\n out[1] = r[1] + b[1];\r\n out[2] = r[2] + b[2];\r\n\r\n return out;\r\n}\r\n\r\n/**\r\n * Get the angle between two 3D vectors\r\n * @param {vec3} a The first operand\r\n * @param {vec3} b The second operand\r\n * @returns {Number} The angle in radians\r\n */\r\nexport function angle(a, b) {\r\n let tempA = fromValues(a[0], a[1], a[2]);\r\n let tempB = fromValues(b[0], b[1], b[2]);\r\n\r\n normalize(tempA, tempA);\r\n normalize(tempB, tempB);\r\n\r\n let cosine = dot(tempA, tempB);\r\n\r\n if(cosine > 1.0) {\r\n return 0;\r\n }\r\n else if(cosine < -1.0) {\r\n return Math.PI;\r\n } else {\r\n return Math.acos(cosine);\r\n }\r\n}\r\n\r\n/**\r\n * Returns a string representation of a vector\r\n *\r\n * @param {vec3} a vector to represent as a string\r\n * @returns {String} string representation of the vector\r\n */\r\nexport function str(a) {\r\n return 'vec3(' + a[0] + ', ' + a[1] + ', ' + a[2] + ')';\r\n}\r\n\r\n/**\r\n * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\r\n *\r\n * @param {vec3} a The first vector.\r\n * @param {vec3} b The second vector.\r\n * @returns {Boolean} True if the vectors are equal, false otherwise.\r\n */\r\nexport function exactEquals(a, b) {\r\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2];\r\n}\r\n\r\n/**\r\n * Returns whether or not the vectors have approximately the same elements in the same position.\r\n *\r\n * @param {vec3} a The first vector.\r\n * @param {vec3} b The second vector.\r\n * @returns {Boolean} True if the vectors are equal, false otherwise.\r\n */\r\nexport function equals(a, b) {\r\n let a0 = a[0], a1 = a[1], a2 = a[2];\r\n let b0 = b[0], b1 = b[1], b2 = b[2];\r\n return (Math.abs(a0 - b0) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a0), Math.abs(b0)) &&\r\n Math.abs(a1 - b1) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a1), Math.abs(b1)) &&\r\n Math.abs(a2 - b2) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a2), Math.abs(b2)));\r\n}\r\n\r\n/**\r\n * Alias for {@link vec3.subtract}\r\n * @function\r\n */\r\nexport const sub = subtract;\r\n\r\n/**\r\n * Alias for {@link vec3.multiply}\r\n * @function\r\n */\r\nexport const mul = multiply;\r\n\r\n/**\r\n * Alias for {@link vec3.divide}\r\n * @function\r\n */\r\nexport const div = divide;\r\n\r\n/**\r\n * Alias for {@link vec3.distance}\r\n * @function\r\n */\r\nexport const dist = distance;\r\n\r\n/**\r\n * Alias for {@link vec3.squaredDistance}\r\n * @function\r\n */\r\nexport const sqrDist = squaredDistance;\r\n\r\n/**\r\n * Alias for {@link vec3.length}\r\n * @function\r\n */\r\nexport const len = length;\r\n\r\n/**\r\n * Alias for {@link vec3.squaredLength}\r\n * @function\r\n */\r\nexport const sqrLen = squaredLength;\r\n\r\n/**\r\n * Perform some operation over an array of vec3s.\r\n *\r\n * @param {Array} a the array of vectors to iterate over\r\n * @param {Number} stride Number of elements between the start of each vec3. If 0 assumes tightly packed\r\n * @param {Number} offset Number of elements to skip at the beginning of the array\r\n * @param {Number} count Number of vec3s to iterate over. If 0 iterates over entire array\r\n * @param {Function} fn Function to call for each vector in the array\r\n * @param {Object} [arg] additional argument to pass to fn\r\n * @returns {Array} a\r\n * @function\r\n */\r\nexport const forEach = (function() {\r\n let vec = create();\r\n\r\n return function(a, stride, offset, count, fn, arg) {\r\n let i, l;\r\n if(!stride) {\r\n stride = 3;\r\n }\r\n\r\n if(!offset) {\r\n offset = 0;\r\n }\r\n\r\n if(count) {\r\n l = Math.min((count * stride) + offset, a.length);\r\n } else {\r\n l = a.length;\r\n }\r\n\r\n for(i = offset; i < l; i += stride) {\r\n vec[0] = a[i]; vec[1] = a[i+1]; vec[2] = a[i+2];\r\n fn(vec, vec, arg);\r\n a[i] = vec[0]; a[i+1] = vec[1]; a[i+2] = vec[2];\r\n }\r\n\r\n return a;\r\n };\r\n})();\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/node_modules/gl-matrix/src/gl-matrix/vec3.js","/* Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV.\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy\r\nof this software and associated documentation files (the \"Software\"), to deal\r\nin the Software without restriction, including without limitation the rights\r\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the Software is\r\nfurnished to do so, subject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be included in\r\nall copies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\nTHE SOFTWARE. */\r\n\r\nimport * as glMatrix from \"./common.js\";\r\n\r\n/**\r\n * 4 Dimensional Vector\r\n * @module vec4\r\n */\r\n\r\n/**\r\n * Creates a new, empty vec4\r\n *\r\n * @returns {vec4} a new 4D vector\r\n */\r\nexport function create() {\r\n let out = new glMatrix.ARRAY_TYPE(4);\r\n out[0] = 0;\r\n out[1] = 0;\r\n out[2] = 0;\r\n out[3] = 0;\r\n return out;\r\n}\r\n\r\n/**\r\n * Creates a new vec4 initialized with values from an existing vector\r\n *\r\n * @param {vec4} a vector to clone\r\n * @returns {vec4} a new 4D vector\r\n */\r\nexport function clone(a) {\r\n let out = new glMatrix.ARRAY_TYPE(4);\r\n out[0] = a[0];\r\n out[1] = a[1];\r\n out[2] = a[2];\r\n out[3] = a[3];\r\n return out;\r\n}\r\n\r\n/**\r\n * Creates a new vec4 initialized with the given values\r\n *\r\n * @param {Number} x X component\r\n * @param {Number} y Y component\r\n * @param {Number} z Z component\r\n * @param {Number} w W component\r\n * @returns {vec4} a new 4D vector\r\n */\r\nexport function fromValues(x, y, z, w) {\r\n let out = new glMatrix.ARRAY_TYPE(4);\r\n out[0] = x;\r\n out[1] = y;\r\n out[2] = z;\r\n out[3] = w;\r\n return out;\r\n}\r\n\r\n/**\r\n * Copy the values from one vec4 to another\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the source vector\r\n * @returns {vec4} out\r\n */\r\nexport function copy(out, a) {\r\n out[0] = a[0];\r\n out[1] = a[1];\r\n out[2] = a[2];\r\n out[3] = a[3];\r\n return out;\r\n}\r\n\r\n/**\r\n * Set the components of a vec4 to the given values\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {Number} x X component\r\n * @param {Number} y Y component\r\n * @param {Number} z Z component\r\n * @param {Number} w W component\r\n * @returns {vec4} out\r\n */\r\nexport function set(out, x, y, z, w) {\r\n out[0] = x;\r\n out[1] = y;\r\n out[2] = z;\r\n out[3] = w;\r\n return out;\r\n}\r\n\r\n/**\r\n * Adds two vec4's\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the first operand\r\n * @param {vec4} b the second operand\r\n * @returns {vec4} out\r\n */\r\nexport function add(out, a, b) {\r\n out[0] = a[0] + b[0];\r\n out[1] = a[1] + b[1];\r\n out[2] = a[2] + b[2];\r\n out[3] = a[3] + b[3];\r\n return out;\r\n}\r\n\r\n/**\r\n * Subtracts vector b from vector a\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the first operand\r\n * @param {vec4} b the second operand\r\n * @returns {vec4} out\r\n */\r\nexport function subtract(out, a, b) {\r\n out[0] = a[0] - b[0];\r\n out[1] = a[1] - b[1];\r\n out[2] = a[2] - b[2];\r\n out[3] = a[3] - b[3];\r\n return out;\r\n}\r\n\r\n/**\r\n * Multiplies two vec4's\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the first operand\r\n * @param {vec4} b the second operand\r\n * @returns {vec4} out\r\n */\r\nexport function multiply(out, a, b) {\r\n out[0] = a[0] * b[0];\r\n out[1] = a[1] * b[1];\r\n out[2] = a[2] * b[2];\r\n out[3] = a[3] * b[3];\r\n return out;\r\n}\r\n\r\n/**\r\n * Divides two vec4's\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the first operand\r\n * @param {vec4} b the second operand\r\n * @returns {vec4} out\r\n */\r\nexport function divide(out, a, b) {\r\n out[0] = a[0] / b[0];\r\n out[1] = a[1] / b[1];\r\n out[2] = a[2] / b[2];\r\n out[3] = a[3] / b[3];\r\n return out;\r\n}\r\n\r\n/**\r\n * Math.ceil the components of a vec4\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a vector to ceil\r\n * @returns {vec4} out\r\n */\r\nexport function ceil(out, a) {\r\n out[0] = Math.ceil(a[0]);\r\n out[1] = Math.ceil(a[1]);\r\n out[2] = Math.ceil(a[2]);\r\n out[3] = Math.ceil(a[3]);\r\n return out;\r\n}\r\n\r\n/**\r\n * Math.floor the components of a vec4\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a vector to floor\r\n * @returns {vec4} out\r\n */\r\nexport function floor(out, a) {\r\n out[0] = Math.floor(a[0]);\r\n out[1] = Math.floor(a[1]);\r\n out[2] = Math.floor(a[2]);\r\n out[3] = Math.floor(a[3]);\r\n return out;\r\n}\r\n\r\n/**\r\n * Returns the minimum of two vec4's\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the first operand\r\n * @param {vec4} b the second operand\r\n * @returns {vec4} out\r\n */\r\nexport function min(out, a, b) {\r\n out[0] = Math.min(a[0], b[0]);\r\n out[1] = Math.min(a[1], b[1]);\r\n out[2] = Math.min(a[2], b[2]);\r\n out[3] = Math.min(a[3], b[3]);\r\n return out;\r\n}\r\n\r\n/**\r\n * Returns the maximum of two vec4's\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the first operand\r\n * @param {vec4} b the second operand\r\n * @returns {vec4} out\r\n */\r\nexport function max(out, a, b) {\r\n out[0] = Math.max(a[0], b[0]);\r\n out[1] = Math.max(a[1], b[1]);\r\n out[2] = Math.max(a[2], b[2]);\r\n out[3] = Math.max(a[3], b[3]);\r\n return out;\r\n}\r\n\r\n/**\r\n * Math.round the components of a vec4\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a vector to round\r\n * @returns {vec4} out\r\n */\r\nexport function round(out, a) {\r\n out[0] = Math.round(a[0]);\r\n out[1] = Math.round(a[1]);\r\n out[2] = Math.round(a[2]);\r\n out[3] = Math.round(a[3]);\r\n return out;\r\n}\r\n\r\n/**\r\n * Scales a vec4 by a scalar number\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the vector to scale\r\n * @param {Number} b amount to scale the vector by\r\n * @returns {vec4} out\r\n */\r\nexport function scale(out, a, b) {\r\n out[0] = a[0] * b;\r\n out[1] = a[1] * b;\r\n out[2] = a[2] * b;\r\n out[3] = a[3] * b;\r\n return out;\r\n}\r\n\r\n/**\r\n * Adds two vec4's after scaling the second operand by a scalar value\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the first operand\r\n * @param {vec4} b the second operand\r\n * @param {Number} scale the amount to scale b by before adding\r\n * @returns {vec4} out\r\n */\r\nexport function scaleAndAdd(out, a, b, scale) {\r\n out[0] = a[0] + (b[0] * scale);\r\n out[1] = a[1] + (b[1] * scale);\r\n out[2] = a[2] + (b[2] * scale);\r\n out[3] = a[3] + (b[3] * scale);\r\n return out;\r\n}\r\n\r\n/**\r\n * Calculates the euclidian distance between two vec4's\r\n *\r\n * @param {vec4} a the first operand\r\n * @param {vec4} b the second operand\r\n * @returns {Number} distance between a and b\r\n */\r\nexport function distance(a, b) {\r\n let x = b[0] - a[0];\r\n let y = b[1] - a[1];\r\n let z = b[2] - a[2];\r\n let w = b[3] - a[3];\r\n return Math.sqrt(x*x + y*y + z*z + w*w);\r\n}\r\n\r\n/**\r\n * Calculates the squared euclidian distance between two vec4's\r\n *\r\n * @param {vec4} a the first operand\r\n * @param {vec4} b the second operand\r\n * @returns {Number} squared distance between a and b\r\n */\r\nexport function squaredDistance(a, b) {\r\n let x = b[0] - a[0];\r\n let y = b[1] - a[1];\r\n let z = b[2] - a[2];\r\n let w = b[3] - a[3];\r\n return x*x + y*y + z*z + w*w;\r\n}\r\n\r\n/**\r\n * Calculates the length of a vec4\r\n *\r\n * @param {vec4} a vector to calculate length of\r\n * @returns {Number} length of a\r\n */\r\nexport function length(a) {\r\n let x = a[0];\r\n let y = a[1];\r\n let z = a[2];\r\n let w = a[3];\r\n return Math.sqrt(x*x + y*y + z*z + w*w);\r\n}\r\n\r\n/**\r\n * Calculates the squared length of a vec4\r\n *\r\n * @param {vec4} a vector to calculate squared length of\r\n * @returns {Number} squared length of a\r\n */\r\nexport function squaredLength(a) {\r\n let x = a[0];\r\n let y = a[1];\r\n let z = a[2];\r\n let w = a[3];\r\n return x*x + y*y + z*z + w*w;\r\n}\r\n\r\n/**\r\n * Negates the components of a vec4\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a vector to negate\r\n * @returns {vec4} out\r\n */\r\nexport function negate(out, a) {\r\n out[0] = -a[0];\r\n out[1] = -a[1];\r\n out[2] = -a[2];\r\n out[3] = -a[3];\r\n return out;\r\n}\r\n\r\n/**\r\n * Returns the inverse of the components of a vec4\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a vector to invert\r\n * @returns {vec4} out\r\n */\r\nexport function inverse(out, a) {\r\n out[0] = 1.0 / a[0];\r\n out[1] = 1.0 / a[1];\r\n out[2] = 1.0 / a[2];\r\n out[3] = 1.0 / a[3];\r\n return out;\r\n}\r\n\r\n/**\r\n * Normalize a vec4\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a vector to normalize\r\n * @returns {vec4} out\r\n */\r\nexport function normalize(out, a) {\r\n let x = a[0];\r\n let y = a[1];\r\n let z = a[2];\r\n let w = a[3];\r\n let len = x*x + y*y + z*z + w*w;\r\n if (len > 0) {\r\n len = 1 / Math.sqrt(len);\r\n out[0] = x * len;\r\n out[1] = y * len;\r\n out[2] = z * len;\r\n out[3] = w * len;\r\n }\r\n return out;\r\n}\r\n\r\n/**\r\n * Calculates the dot product of two vec4's\r\n *\r\n * @param {vec4} a the first operand\r\n * @param {vec4} b the second operand\r\n * @returns {Number} dot product of a and b\r\n */\r\nexport function dot(a, b) {\r\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\r\n}\r\n\r\n/**\r\n * Performs a linear interpolation between two vec4's\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the first operand\r\n * @param {vec4} b the second operand\r\n * @param {Number} t interpolation amount between the two inputs\r\n * @returns {vec4} out\r\n */\r\nexport function lerp(out, a, b, t) {\r\n let ax = a[0];\r\n let ay = a[1];\r\n let az = a[2];\r\n let aw = a[3];\r\n out[0] = ax + t * (b[0] - ax);\r\n out[1] = ay + t * (b[1] - ay);\r\n out[2] = az + t * (b[2] - az);\r\n out[3] = aw + t * (b[3] - aw);\r\n return out;\r\n}\r\n\r\n/**\r\n * Generates a random vector with the given scale\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\r\n * @returns {vec4} out\r\n */\r\nexport function random(out, vectorScale) {\r\n vectorScale = vectorScale || 1.0;\r\n\r\n //TODO: This is a pretty awful way of doing this. Find something better.\r\n out[0] = glMatrix.RANDOM();\r\n out[1] = glMatrix.RANDOM();\r\n out[2] = glMatrix.RANDOM();\r\n out[3] = glMatrix.RANDOM();\r\n normalize(out, out);\r\n scale(out, out, vectorScale);\r\n return out;\r\n}\r\n\r\n/**\r\n * Transforms the vec4 with a mat4.\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the vector to transform\r\n * @param {mat4} m matrix to transform with\r\n * @returns {vec4} out\r\n */\r\nexport function transformMat4(out, a, m) {\r\n let x = a[0], y = a[1], z = a[2], w = a[3];\r\n out[0] = m[0] * x + m[4] * y + m[8] * z + m[12] * w;\r\n out[1] = m[1] * x + m[5] * y + m[9] * z + m[13] * w;\r\n out[2] = m[2] * x + m[6] * y + m[10] * z + m[14] * w;\r\n out[3] = m[3] * x + m[7] * y + m[11] * z + m[15] * w;\r\n return out;\r\n}\r\n\r\n/**\r\n * Transforms the vec4 with a quat\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the vector to transform\r\n * @param {quat} q quaternion to transform with\r\n * @returns {vec4} out\r\n */\r\nexport function transformQuat(out, a, q) {\r\n let x = a[0], y = a[1], z = a[2];\r\n let qx = q[0], qy = q[1], qz = q[2], qw = q[3];\r\n\r\n // calculate quat * vec\r\n let ix = qw * x + qy * z - qz * y;\r\n let iy = qw * y + qz * x - qx * z;\r\n let iz = qw * z + qx * y - qy * x;\r\n let iw = -qx * x - qy * y - qz * z;\r\n\r\n // calculate result * inverse quat\r\n out[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy;\r\n out[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz;\r\n out[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx;\r\n out[3] = a[3];\r\n return out;\r\n}\r\n\r\n/**\r\n * Returns a string representation of a vector\r\n *\r\n * @param {vec4} a vector to represent as a string\r\n * @returns {String} string representation of the vector\r\n */\r\nexport function str(a) {\r\n return 'vec4(' + a[0] + ', ' + a[1] + ', ' + a[2] + ', ' + a[3] + ')';\r\n}\r\n\r\n/**\r\n * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\r\n *\r\n * @param {vec4} a The first vector.\r\n * @param {vec4} b The second vector.\r\n * @returns {Boolean} True if the vectors are equal, false otherwise.\r\n */\r\nexport function exactEquals(a, b) {\r\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3];\r\n}\r\n\r\n/**\r\n * Returns whether or not the vectors have approximately the same elements in the same position.\r\n *\r\n * @param {vec4} a The first vector.\r\n * @param {vec4} b The second vector.\r\n * @returns {Boolean} True if the vectors are equal, false otherwise.\r\n */\r\nexport function equals(a, b) {\r\n let a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3];\r\n let b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3];\r\n return (Math.abs(a0 - b0) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a0), Math.abs(b0)) &&\r\n Math.abs(a1 - b1) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a1), Math.abs(b1)) &&\r\n Math.abs(a2 - b2) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a2), Math.abs(b2)) &&\r\n Math.abs(a3 - b3) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a3), Math.abs(b3)));\r\n}\r\n\r\n/**\r\n * Alias for {@link vec4.subtract}\r\n * @function\r\n */\r\nexport const sub = subtract;\r\n\r\n/**\r\n * Alias for {@link vec4.multiply}\r\n * @function\r\n */\r\nexport const mul = multiply;\r\n\r\n/**\r\n * Alias for {@link vec4.divide}\r\n * @function\r\n */\r\nexport const div = divide;\r\n\r\n/**\r\n * Alias for {@link vec4.distance}\r\n * @function\r\n */\r\nexport const dist = distance;\r\n\r\n/**\r\n * Alias for {@link vec4.squaredDistance}\r\n * @function\r\n */\r\nexport const sqrDist = squaredDistance;\r\n\r\n/**\r\n * Alias for {@link vec4.length}\r\n * @function\r\n */\r\nexport const len = length;\r\n\r\n/**\r\n * Alias for {@link vec4.squaredLength}\r\n * @function\r\n */\r\nexport const sqrLen = squaredLength;\r\n\r\n/**\r\n * Perform some operation over an array of vec4s.\r\n *\r\n * @param {Array} a the array of vectors to iterate over\r\n * @param {Number} stride Number of elements between the start of each vec4. If 0 assumes tightly packed\r\n * @param {Number} offset Number of elements to skip at the beginning of the array\r\n * @param {Number} count Number of vec4s to iterate over. If 0 iterates over entire array\r\n * @param {Function} fn Function to call for each vector in the array\r\n * @param {Object} [arg] additional argument to pass to fn\r\n * @returns {Array} a\r\n * @function\r\n */\r\nexport const forEach = (function() {\r\n let vec = create();\r\n\r\n return function(a, stride, offset, count, fn, arg) {\r\n let i, l;\r\n if(!stride) {\r\n stride = 4;\r\n }\r\n\r\n if(!offset) {\r\n offset = 0;\r\n }\r\n\r\n if(count) {\r\n l = Math.min((count * stride) + offset, a.length);\r\n } else {\r\n l = a.length;\r\n }\r\n\r\n for(i = offset; i < l; i += stride) {\r\n vec[0] = a[i]; vec[1] = a[i+1]; vec[2] = a[i+2]; vec[3] = a[i+3];\r\n fn(vec, vec, arg);\r\n a[i] = vec[0]; a[i+1] = vec[1]; a[i+2] = vec[2]; a[i+3] = vec[3];\r\n }\r\n\r\n return a;\r\n };\r\n})();\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/node_modules/gl-matrix/src/gl-matrix/vec4.js","import macro from 'vtk.js/Sources/macro';\nimport vtkForwardPass from 'vtk.js/Sources/Rendering/OpenGL/ForwardPass';\nimport vtkOpenGLViewNodeFactory from 'vtk.js/Sources/Rendering/OpenGL/ViewNodeFactory';\nimport vtkRenderPass from 'vtk.js/Sources/Rendering/SceneGraph/RenderPass';\nimport vtkShaderCache from 'vtk.js/Sources/Rendering/OpenGL/ShaderCache';\nimport vtkViewNode from 'vtk.js/Sources/Rendering/SceneGraph/ViewNode';\nimport vtkOpenGLTextureUnitManager from 'vtk.js/Sources/Rendering/OpenGL/TextureUnitManager';\nimport { VtkDataTypes } from 'vtk.js/Sources/Common/Core/DataArray/Constants';\nimport WebVRPolyfill from 'webvr-polyfill';\n\nconst { vtkDebugMacro, vtkErrorMacro } = macro;\n\nfunction checkRenderTargetSupport(gl, format, type) {\n // create temporary frame buffer and texture\n const framebuffer = gl.createFramebuffer();\n const texture = gl.createTexture();\n\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texImage2D(gl.TEXTURE_2D, 0, format, 2, 2, 0, format, type, null);\n\n gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);\n gl.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0,\n gl.TEXTURE_2D,\n texture,\n 0\n );\n\n // check frame buffer status\n const status = gl.checkFramebufferStatus(gl.FRAMEBUFFER);\n\n // clean up\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n gl.bindTexture(gl.TEXTURE_2D, null);\n\n return status === gl.FRAMEBUFFER_COMPLETE;\n}\n\n// ----------------------------------------------------------------------------\n// vtkOpenGLRenderWindow methods\n// ----------------------------------------------------------------------------\n\nfunction vtkOpenGLRenderWindow(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkOpenGLRenderWindow');\n\n // Auto update style\n function updateWindow() {\n // Canvas size\n if (model.renderable) {\n model.canvas.setAttribute('width', model.size[0]);\n model.canvas.setAttribute('height', model.size[1]);\n }\n // Offscreen ?\n model.canvas.style.display = model.useOffScreen ? 'none' : 'block';\n\n // Cursor type\n if (model.el) {\n model.el.style.cursor = model.cursorVisibility ? model.cursor : 'none';\n }\n }\n publicAPI.onModified(updateWindow);\n\n // Builds myself.\n publicAPI.buildPass = (prepass) => {\n if (prepass) {\n if (!model.renderable) {\n return;\n }\n\n publicAPI.prepareNodes();\n publicAPI.addMissingNodes(model.renderable.getRenderersByReference());\n publicAPI.removeUnusedNodes();\n\n publicAPI.initialize();\n model.children.forEach((child) => {\n child.setOpenGLRenderWindow(publicAPI);\n });\n }\n };\n\n publicAPI.initialize = () => {\n if (!model.initialized) {\n model.context = publicAPI.get3DContext();\n model.textureUnitManager = vtkOpenGLTextureUnitManager.newInstance();\n model.textureUnitManager.setContext(model.context);\n model.shaderCache.setContext(model.context);\n // initialize blending for transparency\n const gl = model.context;\n gl.blendFuncSeparate(\n gl.SRC_ALPHA,\n gl.ONE_MINUS_SRC_ALPHA,\n gl.ONE,\n gl.ONE_MINUS_SRC_ALPHA\n );\n gl.depthFunc(gl.LEQUAL);\n gl.enable(gl.BLEND);\n model.initialized = true;\n }\n };\n\n publicAPI.makeCurrent = () => {\n model.context.makeCurrent();\n };\n\n publicAPI.setContainer = (el) => {\n if (model.el && model.el !== el) {\n // Remove canvas from previous container\n if (model.canvas.parentNode === model.el) {\n model.el.removeChild(model.canvas);\n } else {\n vtkErrorMacro('Error: canvas parent node does not match container');\n }\n }\n\n if (model.el !== el) {\n model.el = el;\n if (model.el) {\n model.el.appendChild(model.canvas);\n }\n\n // Trigger modified()\n publicAPI.modified();\n }\n };\n\n publicAPI.getFramebufferSize = () => {\n if (model.activeFramebuffer) {\n return model.activeFramebuffer.getSize();\n }\n return model.size;\n };\n\n publicAPI.isInViewport = (x, y, viewport) => {\n const vCoords = viewport.getViewportByReference();\n const size = publicAPI.getFramebufferSize();\n if (\n vCoords[0] * size[0] <= x &&\n vCoords[2] * size[0] >= x &&\n vCoords[1] * size[1] <= y &&\n vCoords[3] * size[1] >= y\n ) {\n return true;\n }\n return false;\n };\n\n publicAPI.getViewportSize = (viewport) => {\n const vCoords = viewport.getViewportByReference();\n const size = publicAPI.getFramebufferSize();\n return [\n (vCoords[2] - vCoords[0]) * size[0],\n (vCoords[3] - vCoords[1]) * size[1],\n ];\n };\n\n publicAPI.getViewportCenter = (viewport) => {\n const size = publicAPI.getViewportSize(viewport);\n return [size[0] * 0.5, size[1] * 0.5];\n };\n\n publicAPI.displayToNormalizedDisplay = (x, y, z) => {\n const size = publicAPI.getFramebufferSize();\n return [x / size[0], y / size[1], z];\n };\n\n publicAPI.normalizedDisplayToDisplay = (x, y, z) => {\n const size = publicAPI.getFramebufferSize();\n return [x * size[0], y * size[1], z];\n };\n\n publicAPI.worldToView = (x, y, z, renderer) => {\n const dims = publicAPI.getViewportSize(renderer);\n return renderer.worldToView(x, y, z, dims[0] / dims[1]);\n };\n\n publicAPI.viewToWorld = (x, y, z, renderer) => {\n const dims = publicAPI.getViewportSize(renderer);\n return renderer.viewToWorld(x, y, z, dims[0] / dims[1]);\n };\n\n publicAPI.worldToDisplay = (x, y, z, renderer) => {\n const val = publicAPI.worldToView(x, y, z, renderer);\n const val2 = renderer.viewToNormalizedDisplay(val[0], val[1], val[2]);\n return publicAPI.normalizedDisplayToDisplay(val2[0], val2[1], val2[2]);\n };\n\n publicAPI.displayToWorld = (x, y, z, renderer) => {\n const val = publicAPI.displayToNormalizedDisplay(x, y, z);\n const val2 = renderer.normalizedDisplayToView(val[0], val[1], val[2]);\n return publicAPI.viewToWorld(val2[0], val2[1], val2[2], renderer);\n };\n\n publicAPI.normalizedDisplayToViewport = (x, y, z, renderer) => {\n let vCoords = renderer.getViewportByReference();\n vCoords = publicAPI.normalizedDisplayToDisplay(vCoords[0], vCoords[1], 0.0);\n const coords = publicAPI.normalizedDisplayToDisplay(x, y, z);\n return [coords[0] - vCoords[0] - 0.5, coords[1] - vCoords[1] - 0.5, z];\n };\n\n publicAPI.viewportToNormalizedViewport = (x, y, z, renderer) => {\n const size = publicAPI.getViewportSize(renderer);\n if (size && size[0] !== 0 && size[1] !== 0) {\n return [x / (size[0] - 1.0), y / (size[1] - 1.0), z];\n }\n return [x, y, z];\n };\n\n publicAPI.normalizedViewportToViewport = (x, y, z) => {\n const size = publicAPI.getFramebufferSize();\n return [x * (size[0] - 1.0), y * (size[1] - 1.0), z];\n };\n\n publicAPI.displayToLocalDisplay = (x, y, z) => {\n const size = publicAPI.getFramebufferSize();\n return [x, size[1] - y - 1, z];\n };\n\n publicAPI.viewportToNormalizedDisplay = (x, y, z, renderer) => {\n let vCoords = renderer.getViewportByReference();\n vCoords = publicAPI.normalizedDisplayToDisplay(vCoords[0], vCoords[1], 0.0);\n const x2 = x + vCoords[0] + 0.5;\n const y2 = y + vCoords[1] + 0.5;\n return publicAPI.displayToNormalizedDisplay(x2, y2, z);\n };\n\n publicAPI.getPixelData = (x1, y1, x2, y2) => {\n const pixels = new Uint8Array((x2 - x1 + 1) * (y2 - y1 + 1) * 4);\n model.context.readPixels(\n x1,\n y1,\n x2 - x1 + 1,\n y2 - y1 + 1,\n model.context.RGBA,\n model.context.UNSIGNED_BYTE,\n pixels\n );\n return pixels;\n };\n\n publicAPI.get2DContext = () => model.canvas.getContext('2d');\n\n publicAPI.get3DContext = (\n options = { preserveDrawingBuffer: false, depth: true, alpha: true }\n ) => {\n let result = null;\n\n const webgl2Supported = typeof WebGL2RenderingContext !== 'undefined';\n model.webgl2 = false;\n if (model.defaultToWebgl2 && webgl2Supported) {\n result = model.canvas.getContext('webgl2'); // , options);\n if (result) {\n model.webgl2 = true;\n vtkDebugMacro('using webgl2');\n }\n }\n if (!result) {\n vtkDebugMacro('using webgl1');\n result =\n model.canvas.getContext('webgl', options) ||\n model.canvas.getContext('experimental-webgl', options);\n }\n\n /* eslint-disable */\n const polyfill = new WebVRPolyfill({\n // Ensures the polyfill is always active on mobile, due to providing\n // a polyfilled CardboardVRDisplay when no native API is available,\n // and also polyfilling even when the native API is available, due to\n // providing a CardboardVRDisplay when no native VRDisplays exist.\n PROVIDE_MOBILE_VRDISPLAY: true,\n // Polyfill optimizations\n DIRTY_SUBMIT_FRAME_BINDINGS: false,\n BUFFER_SCALE: 0.75,\n });\n /* eslint-enable */\n\n // Do we have webvr support\n if (navigator.getVRDisplays) {\n navigator.getVRDisplays().then((displays) => {\n if (displays.length > 0) {\n // take the first display for now\n model.vrDisplay = displays[0];\n // set the clipping ranges\n model.vrDisplay.depthNear = 0.01; // meters\n model.vrDisplay.depthFar = 100.0; // meters\n publicAPI.invokeHaveVRDisplay();\n }\n });\n }\n\n // prevent default context lost handler\n model.canvas.addEventListener(\n 'webglcontextlost',\n (event) => {\n event.preventDefault();\n },\n false\n );\n\n model.canvas.addEventListener(\n 'webglcontextrestored',\n publicAPI.restoreContext,\n false\n );\n\n return result;\n };\n\n publicAPI.startVR = () => {\n if (model.vrDisplay.capabilities.canPresent) {\n model.vrDisplay\n .requestPresent([{ source: model.canvas }])\n .then(() => {\n model.oldCanvasSize = model.size.slice();\n\n if (model.el && model.vrDisplay.capabilities.hasExternalDisplay) {\n model.el.style.display = 'none';\n }\n if (model.queryVRSize) {\n const leftEye = model.vrDisplay.getEyeParameters('left');\n const rightEye = model.vrDisplay.getEyeParameters('right');\n const width = Math.floor(\n leftEye.renderWidth + rightEye.renderWidth\n );\n const height = Math.floor(\n Math.max(leftEye.renderHeight, rightEye.renderHeight)\n );\n publicAPI.setSize(width, height);\n } else {\n publicAPI.setSize(model.vrResolution);\n }\n\n const ren = model.renderable.getRenderers()[0];\n ren.resetCamera();\n model.vrFrameData = new VRFrameData();\n model.renderable.getInteractor().switchToVRAnimation();\n\n publicAPI.vrRender();\n })\n .catch(() => {\n console.log('failed to requestPresent');\n });\n } else {\n vtkErrorMacro('vrDisplay is not connected');\n }\n };\n\n publicAPI.stopVR = () => {\n model.renderable.getInteractor().returnFromVRAnimation();\n model.vrDisplay.exitPresent();\n model.vrDisplay.cancelAnimationFrame(model.vrSceneFrame);\n\n publicAPI.setSize(...model.oldCanvasSize);\n if (model.el && model.vrDisplay.capabilities.hasExternalDisplay) {\n model.el.style.display = 'block';\n }\n\n const ren = model.renderable.getRenderers()[0];\n ren.getActiveCamera().setProjectionMatrix(null);\n\n ren.setViewport(0.0, 0, 1.0, 1.0);\n publicAPI.traverseAllPasses();\n };\n\n publicAPI.vrRender = () => {\n model.renderable.getInteractor().updateGamepads(model.vrDisplay.displayId);\n model.vrSceneFrame = model.vrDisplay.requestAnimationFrame(\n publicAPI.vrRender\n );\n model.vrDisplay.getFrameData(model.vrFrameData);\n\n // get the first renderer\n const ren = model.renderable.getRenderers()[0];\n\n // do the left eye\n ren.setViewport(0, 0, 0.5, 1.0);\n ren\n .getActiveCamera()\n .computeViewParametersFromPhysicalMatrix(\n model.vrFrameData.leftViewMatrix\n );\n ren\n .getActiveCamera()\n .setProjectionMatrix(model.vrFrameData.leftProjectionMatrix);\n publicAPI.traverseAllPasses();\n\n ren.setViewport(0.5, 0, 1.0, 1.0);\n ren\n .getActiveCamera()\n .computeViewParametersFromPhysicalMatrix(\n model.vrFrameData.rightViewMatrix\n );\n ren\n .getActiveCamera()\n .setProjectionMatrix(model.vrFrameData.rightProjectionMatrix);\n publicAPI.traverseAllPasses();\n\n model.vrDisplay.submitFrame();\n };\n\n publicAPI.restoreContext = () => {\n const rp = vtkRenderPass.newInstance();\n rp.setCurrentOperation('Release');\n rp.traverse(publicAPI, null);\n };\n\n publicAPI.activateTexture = (texture) => {\n // Only add if it isn't already there\n const result = model.textureResourceIds.get(texture);\n if (result !== undefined) {\n model.context.activeTexture(model.context.TEXTURE0 + result);\n return;\n }\n\n const activeUnit = publicAPI.getTextureUnitManager().allocate();\n if (activeUnit < 0) {\n vtkErrorMacro(\n 'Hardware does not support the number of textures defined.'\n );\n return;\n }\n\n model.textureResourceIds.set(texture, activeUnit);\n model.context.activeTexture(model.context.TEXTURE0 + activeUnit);\n };\n\n publicAPI.deactivateTexture = (texture) => {\n // Only deactivate if it isn't already there\n const result = model.textureResourceIds.get(texture);\n if (result !== undefined) {\n publicAPI.getTextureUnitManager().free(result);\n delete model.textureResourceIds.delete(texture);\n }\n };\n\n publicAPI.getTextureUnitForTexture = (texture) => {\n const result = model.textureResourceIds.get(texture);\n if (result !== undefined) {\n return result;\n }\n return -1;\n };\n\n publicAPI.getDefaultTextureInternalFormat = (vtktype, numComps, useFloat) => {\n if (model.webgl2) {\n switch (vtktype) {\n case VtkDataTypes.UNSIGNED_CHAR:\n switch (numComps) {\n case 1:\n return model.context.R8;\n case 2:\n return model.context.RG8;\n case 3:\n return model.context.RGB8;\n case 4:\n default:\n return model.context.RGBA8;\n }\n default:\n case VtkDataTypes.FLOAT:\n switch (numComps) {\n case 1:\n return model.context.R16F;\n case 2:\n return model.context.RG16F;\n case 3:\n return model.context.RGB16F;\n case 4:\n default:\n return model.context.RGBA16F;\n }\n }\n }\n\n // webgl1 only supports four types\n switch (numComps) {\n case 1:\n return model.context.LUMINANCE;\n case 2:\n return model.context.LUMINANCE_ALPHA;\n case 3:\n return model.context.RGB;\n case 4:\n default:\n return model.context.RGBA;\n }\n };\n\n function getCanvasDataURL(format = model.imageFormat) {\n return model.canvas.toDataURL(format);\n }\n\n publicAPI.captureNextImage = (format = 'image/png') => {\n if (model.deleted) {\n return null;\n }\n model.imageFormat = format;\n const previous = model.notifyImageReady;\n model.notifyImageReady = true;\n\n return new Promise((resolve, reject) => {\n const subscription = publicAPI.onImageReady((imageURL) => {\n model.notifyImageReady = previous;\n subscription.unsubscribe();\n resolve(imageURL);\n });\n });\n };\n\n publicAPI.getGLInformations = () => {\n const gl = publicAPI.get3DContext();\n\n const glTextureFloat = gl.getExtension('OES_texture_float');\n const glTextureHalfFloat = gl.getExtension('OES_texture_half_float');\n const glDebugRendererInfo = gl.getExtension('WEBGL_debug_renderer_info');\n const glDrawBuffers = gl.getExtension('WEBGL_draw_buffers');\n const glAnisotropic =\n gl.getExtension('EXT_texture_filter_anisotropic') ||\n gl.getExtension('WEBKIT_EXT_texture_filter_anisotropic');\n\n const params = [\n [\n 'Max Vertex Attributes',\n 'MAX_VERTEX_ATTRIBS',\n gl.getParameter(gl.MAX_VERTEX_ATTRIBS),\n ],\n [\n 'Max Varying Vectors',\n 'MAX_VARYING_VECTORS',\n gl.getParameter(gl.MAX_VARYING_VECTORS),\n ],\n [\n 'Max Vertex Uniform Vectors',\n 'MAX_VERTEX_UNIFORM_VECTORS',\n gl.getParameter(gl.MAX_VERTEX_UNIFORM_VECTORS),\n ],\n [\n 'Max Fragment Uniform Vectors',\n 'MAX_FRAGMENT_UNIFORM_VECTORS',\n gl.getParameter(gl.MAX_FRAGMENT_UNIFORM_VECTORS),\n ],\n [\n 'Max Fragment Texture Image Units',\n 'MAX_TEXTURE_IMAGE_UNITS',\n gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS),\n ],\n [\n 'Max Vertex Texture Image Units',\n 'MAX_VERTEX_TEXTURE_IMAGE_UNITS',\n gl.getParameter(gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS),\n ],\n [\n 'Max Combined Texture Image Units',\n 'MAX_COMBINED_TEXTURE_IMAGE_UNITS',\n gl.getParameter(gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS),\n ],\n [\n 'Max 2D Texture Size',\n 'MAX_TEXTURE_SIZE',\n gl.getParameter(gl.MAX_TEXTURE_SIZE),\n ],\n [\n 'Max Cube Texture Size',\n 'MAX_CUBE_MAP_TEXTURE_SIZE',\n gl.getParameter(gl.MAX_CUBE_MAP_TEXTURE_SIZE),\n ],\n [\n 'Max Texture Anisotropy',\n 'MAX_TEXTURE_MAX_ANISOTROPY_EXT',\n glAnisotropic &&\n gl.getParameter(glAnisotropic.MAX_TEXTURE_MAX_ANISOTROPY_EXT),\n ],\n [\n 'Point Size Range',\n 'ALIASED_POINT_SIZE_RANGE',\n gl.getParameter(gl.ALIASED_POINT_SIZE_RANGE).join(' - '),\n ],\n [\n 'Line Width Range',\n 'ALIASED_LINE_WIDTH_RANGE',\n gl.getParameter(gl.ALIASED_LINE_WIDTH_RANGE).join(' - '),\n ],\n [\n 'Max Viewport Dimensions',\n 'MAX_VIEWPORT_DIMS',\n gl.getParameter(gl.MAX_VIEWPORT_DIMS).join(' - '),\n ],\n [\n 'Max Renderbuffer Size',\n 'MAX_RENDERBUFFER_SIZE',\n gl.getParameter(gl.MAX_RENDERBUFFER_SIZE),\n ],\n ['Framebuffer Red Bits', 'RED_BITS', gl.getParameter(gl.RED_BITS)],\n ['Framebuffer Green Bits', 'GREEN_BITS', gl.getParameter(gl.GREEN_BITS)],\n ['Framebuffer Blue Bits', 'BLUE_BITS', gl.getParameter(gl.BLUE_BITS)],\n ['Framebuffer Alpha Bits', 'ALPHA_BITS', gl.getParameter(gl.ALPHA_BITS)],\n ['Framebuffer Depth Bits', 'DEPTH_BITS', gl.getParameter(gl.DEPTH_BITS)],\n [\n 'Framebuffer Stencil Bits',\n 'STENCIL_BITS',\n gl.getParameter(gl.STENCIL_BITS),\n ],\n [\n 'Framebuffer Subpixel Bits',\n 'SUBPIXEL_BITS',\n gl.getParameter(gl.SUBPIXEL_BITS),\n ],\n ['MSAA Samples', 'SAMPLES', gl.getParameter(gl.SAMPLES)],\n [\n 'MSAA Sample Buffers',\n 'SAMPLE_BUFFERS',\n gl.getParameter(gl.SAMPLE_BUFFERS),\n ],\n [\n 'Supported Formats for UByte Render Targets ',\n 'UNSIGNED_BYTE RENDER TARGET FORMATS',\n [\n glTextureFloat &&\n checkRenderTargetSupport(gl, gl.RGBA, gl.UNSIGNED_BYTE)\n ? 'RGBA'\n : '',\n glTextureFloat &&\n checkRenderTargetSupport(gl, gl.RGB, gl.UNSIGNED_BYTE)\n ? 'RGB'\n : '',\n glTextureFloat &&\n checkRenderTargetSupport(gl, gl.LUMINANCE, gl.UNSIGNED_BYTE)\n ? 'LUMINANCE'\n : '',\n glTextureFloat &&\n checkRenderTargetSupport(gl, gl.ALPHA, gl.UNSIGNED_BYTE)\n ? 'ALPHA'\n : '',\n glTextureFloat &&\n checkRenderTargetSupport(gl, gl.LUMINANCE_ALPHA, gl.UNSIGNED_BYTE)\n ? 'LUMINANCE_ALPHA'\n : '',\n ].join(' '),\n ],\n [\n 'Supported Formats for Half Float Render Targets',\n 'HALF FLOAT RENDER TARGET FORMATS',\n [\n glTextureHalfFloat &&\n checkRenderTargetSupport(\n gl,\n gl.RGBA,\n glTextureHalfFloat.HALF_FLOAT_OES\n )\n ? 'RGBA'\n : '',\n glTextureHalfFloat &&\n checkRenderTargetSupport(\n gl,\n gl.RGB,\n glTextureHalfFloat.HALF_FLOAT_OES\n )\n ? 'RGB'\n : '',\n glTextureHalfFloat &&\n checkRenderTargetSupport(\n gl,\n gl.LUMINANCE,\n glTextureHalfFloat.HALF_FLOAT_OES\n )\n ? 'LUMINANCE'\n : '',\n glTextureHalfFloat &&\n checkRenderTargetSupport(\n gl,\n gl.ALPHA,\n glTextureHalfFloat.HALF_FLOAT_OES\n )\n ? 'ALPHA'\n : '',\n glTextureHalfFloat &&\n checkRenderTargetSupport(\n gl,\n gl.LUMINANCE_ALPHA,\n glTextureHalfFloat.HALF_FLOAT_OES\n )\n ? 'LUMINANCE_ALPHA'\n : '',\n ].join(' '),\n ],\n [\n 'Supported Formats for Full Float Render Targets',\n 'FLOAT RENDER TARGET FORMATS',\n [\n glTextureFloat && checkRenderTargetSupport(gl, gl.RGBA, gl.FLOAT)\n ? 'RGBA'\n : '',\n glTextureFloat && checkRenderTargetSupport(gl, gl.RGB, gl.FLOAT)\n ? 'RGB'\n : '',\n glTextureFloat && checkRenderTargetSupport(gl, gl.LUMINANCE, gl.FLOAT)\n ? 'LUMINANCE'\n : '',\n glTextureFloat && checkRenderTargetSupport(gl, gl.ALPHA, gl.FLOAT)\n ? 'ALPHA'\n : '',\n glTextureFloat &&\n checkRenderTargetSupport(gl, gl.LUMINANCE_ALPHA, gl.FLOAT)\n ? 'LUMINANCE_ALPHA'\n : '',\n ].join(' '),\n ],\n [\n 'Max Multiple Render Targets Buffers',\n 'MAX_DRAW_BUFFERS_WEBGL',\n glDrawBuffers\n ? gl.getParameter(glDrawBuffers.MAX_DRAW_BUFFERS_WEBGL)\n : 0,\n ],\n [\n 'High Float Precision in Vertex Shader',\n 'HIGH_FLOAT VERTEX_SHADER',\n [\n gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.HIGH_FLOAT)\n .precision,\n ' (-2<sup>',\n gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.HIGH_FLOAT).rangeMin,\n '</sup> - 2<sup>',\n gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.HIGH_FLOAT).rangeMax,\n '</sup>)',\n ].join(''),\n ],\n [\n 'Medium Float Precision in Vertex Shader',\n 'MEDIUM_FLOAT VERTEX_SHADER',\n [\n gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.MEDIUM_FLOAT)\n .precision,\n ' (-2<sup>',\n gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.MEDIUM_FLOAT)\n .rangeMin,\n '</sup> - 2<sup>',\n gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.MEDIUM_FLOAT)\n .rangeMax,\n '</sup>)',\n ].join(''),\n ],\n [\n 'Low Float Precision in Vertex Shader',\n 'LOW_FLOAT VERTEX_SHADER',\n [\n gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.LOW_FLOAT).precision,\n ' (-2<sup>',\n gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.LOW_FLOAT).rangeMin,\n '</sup> - 2<sup>',\n gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.LOW_FLOAT).rangeMax,\n '</sup>)',\n ].join(''),\n ],\n [\n 'High Float Precision in Fragment Shader',\n 'HIGH_FLOAT FRAGMENT_SHADER',\n [\n gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_FLOAT)\n .precision,\n ' (-2<sup>',\n gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_FLOAT)\n .rangeMin,\n '</sup> - 2<sup>',\n gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_FLOAT)\n .rangeMax,\n '</sup>)',\n ].join(''),\n ],\n [\n 'Medium Float Precision in Fragment Shader',\n 'MEDIUM_FLOAT FRAGMENT_SHADER',\n [\n gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.MEDIUM_FLOAT)\n .precision,\n ' (-2<sup>',\n gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.MEDIUM_FLOAT)\n .rangeMin,\n '</sup> - 2<sup>',\n gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.MEDIUM_FLOAT)\n .rangeMax,\n '</sup>)',\n ].join(''),\n ],\n [\n 'Low Float Precision in Fragment Shader',\n 'LOW_FLOAT FRAGMENT_SHADER',\n [\n gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.LOW_FLOAT)\n .precision,\n ' (-2<sup>',\n gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.LOW_FLOAT)\n .rangeMin,\n '</sup> - 2<sup>',\n gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.LOW_FLOAT)\n .rangeMax,\n '</sup>)',\n ].join(''),\n ],\n [\n 'High Int Precision in Vertex Shader',\n 'HIGH_INT VERTEX_SHADER',\n [\n gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.HIGH_INT).precision,\n ' (-2<sup>',\n gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.HIGH_INT).rangeMin,\n '</sup> - 2<sup>',\n gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.HIGH_INT).rangeMax,\n '</sup>)',\n ].join(''),\n ],\n [\n 'Medium Int Precision in Vertex Shader',\n 'MEDIUM_INT VERTEX_SHADER',\n [\n gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.MEDIUM_INT)\n .precision,\n ' (-2<sup>',\n gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.MEDIUM_INT).rangeMin,\n '</sup> - 2<sup>',\n gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.MEDIUM_INT).rangeMax,\n '</sup>)',\n ].join(''),\n ],\n [\n 'Low Int Precision in Vertex Shader',\n 'LOW_INT VERTEX_SHADER',\n [\n gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.LOW_INT).precision,\n ' (-2<sup>',\n gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.LOW_INT).rangeMin,\n '</sup> - 2<sup>',\n gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.LOW_INT).rangeMax,\n '</sup>)',\n ].join(''),\n ],\n [\n 'High Int Precision in Fragment Shader',\n 'HIGH_INT FRAGMENT_SHADER',\n [\n gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_INT)\n .precision,\n ' (-2<sup>',\n gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_INT).rangeMin,\n '</sup> - 2<sup>',\n gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_INT).rangeMax,\n '</sup>)',\n ].join(''),\n ],\n [\n 'Medium Int Precision in Fragment Shader',\n 'MEDIUM_INT FRAGMENT_SHADER',\n [\n gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.MEDIUM_INT)\n .precision,\n ' (-2<sup>',\n gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.MEDIUM_INT)\n .rangeMin,\n '</sup> - 2<sup>',\n gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.MEDIUM_INT)\n .rangeMax,\n '</sup>)',\n ].join(''),\n ],\n [\n 'Low Int Precision in Fragment Shader',\n 'LOW_INT FRAGMENT_SHADER',\n [\n gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.LOW_INT).precision,\n ' (-2<sup>',\n gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.LOW_INT).rangeMin,\n '</sup> - 2<sup>',\n gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.LOW_INT).rangeMax,\n '</sup>)',\n ].join(''),\n ],\n [\n 'Supported Extensions',\n 'EXTENSIONS',\n gl.getSupportedExtensions().join('<br/>\\t\\t\\t\\t\\t '),\n ],\n ['WebGL Renderer', 'RENDERER', gl.getParameter(gl.RENDERER)],\n ['WebGL Vendor', 'VENDOR', gl.getParameter(gl.VENDOR)],\n ['WebGL Version', 'VERSION', gl.getParameter(gl.VERSION)],\n [\n 'Shading Language Version',\n 'SHADING_LANGUAGE_VERSION',\n gl.getParameter(gl.SHADING_LANGUAGE_VERSION),\n ],\n [\n 'Unmasked Renderer',\n 'UNMASKED_RENDERER',\n glDebugRendererInfo &&\n gl.getParameter(glDebugRendererInfo.UNMASKED_RENDERER_WEBGL),\n ],\n [\n 'Unmasked Vendor',\n 'UNMASKED_VENDOR',\n glDebugRendererInfo &&\n gl.getParameter(glDebugRendererInfo.UNMASKED_VENDOR_WEBGL),\n ],\n ['WebGL Version', 'WEBGL_VERSION', model.webgl2 ? 2 : 1],\n ];\n\n const result = {};\n while (params.length) {\n const [label, key, value] = params.pop();\n if (key) {\n result[key] = { label, value };\n }\n }\n return result;\n };\n\n publicAPI.traverseAllPasses = () => {\n if (model.renderPasses) {\n for (let index = 0; index < model.renderPasses.length; ++index) {\n model.renderPasses[index].traverse(publicAPI, null);\n }\n }\n if (model.notifyImageReady) {\n publicAPI.invokeImageReady(getCanvasDataURL());\n }\n };\n\n publicAPI.disableDepthMask = () => {\n if (model.depthMaskEnabled) {\n model.context.depthMask(false);\n model.depthMaskEnabled = false;\n }\n };\n\n publicAPI.enableDepthMask = () => {\n if (!model.depthMaskEnabled) {\n model.context.depthMask(true);\n model.depthMaskEnabled = true;\n }\n };\n\n publicAPI.disableCullFace = () => {\n if (model.cullFaceEnabled) {\n model.context.disable(model.context.CULL_FACE);\n model.cullFaceEnabled = false;\n }\n };\n\n publicAPI.enableCullFace = () => {\n if (!model.cullFaceEnabled) {\n model.context.enable(model.context.CULL_FACE);\n model.cullFaceEnabled = true;\n }\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n cullFaceEnabled: false,\n depthMaskEnabled: true,\n shaderCache: null,\n initialized: false,\n context: null,\n canvas: null,\n size: [300, 300],\n cursorVisibility: true,\n cursor: 'pointer',\n textureUnitManager: null,\n textureResourceIds: null,\n renderPasses: [],\n notifyImageReady: false,\n webgl2: false,\n defaultToWebgl2: true, // attempt webgl2 on by default\n vrResolution: [2160, 1200],\n queryVRSize: false,\n activeFramebuffer: null,\n vrDisplay: null,\n imageFormat: 'image/png',\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Create internal instances\n model.canvas = document.createElement('canvas');\n model.canvas.style.width = '100%';\n\n model.textureResourceIds = new Map();\n\n // Inheritance\n vtkViewNode.extend(publicAPI, model, initialValues);\n\n model.myFactory = vtkOpenGLViewNodeFactory.newInstance();\n model.shaderCache = vtkShaderCache.newInstance();\n model.shaderCache.setOpenGLRenderWindow(publicAPI);\n\n // setup default forward pass rendering\n model.renderPasses[0] = vtkForwardPass.newInstance();\n\n macro.event(publicAPI, model, 'imageReady');\n macro.event(publicAPI, model, 'haveVRDisplay');\n\n // Build VTK API\n macro.get(publicAPI, model, [\n 'shaderCache',\n 'textureUnitManager',\n 'webgl2',\n 'vrDisplay',\n ]);\n\n macro.setGet(publicAPI, model, [\n 'initialized',\n 'context',\n 'canvas',\n 'renderPasses',\n 'notifyImageReady',\n 'defaultToWebgl2',\n 'cursor',\n 'queryVRSize',\n // might want to make this not call modified as\n // we change the active framebuffer a lot. Or maybe\n // only mark modified if the size or depth\n // of the buffer has changed\n 'activeFramebuffer',\n ]);\n\n macro.setGetArray(publicAPI, model, ['size', 'vrResolution'], 2);\n\n // Object methods\n vtkOpenGLRenderWindow(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkOpenGLRenderWindow');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/OpenGL/RenderWindow/index.js","'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar TinyEmitter = function () {\n function TinyEmitter() {\n _classCallCheck(this, TinyEmitter);\n\n Object.defineProperty(this, '__listeners', {\n value: {},\n enumerable: false,\n writable: false\n });\n }\n\n _createClass(TinyEmitter, [{\n key: 'emit',\n value: function emit(eventName) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = this.__listeners[eventName][Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var handler = _step.value;\n\n handler.apply(undefined, args);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return this;\n }\n }, {\n key: 'once',\n value: function once(eventName, handler) {\n var _this = this;\n\n var once = function once() {\n _this.off(eventName, once);\n handler.apply(undefined, arguments);\n };\n\n return this.on(eventName, once);\n }\n }, {\n key: 'on',\n value: function on(eventName, handler) {\n if (!this.__listeners[eventName]) this.__listeners[eventName] = [];\n\n this.__listeners[eventName].push(handler);\n\n return this;\n }\n }, {\n key: 'off',\n value: function off(eventName, handler) {\n if (handler) this.__listeners[eventName] = this.__listeners[eventName].filter(function (h) {\n return h !== handler;\n });else this.__listeners[eventName] = [];\n\n return this;\n }\n }]);\n\n return TinyEmitter;\n}();\n\nmodule.exports = TinyEmitter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/webworker-promise/lib/tiny-emitter.js\n// module id = 272\n// module chunks = 1","import macro from 'vtk.js/Sources/macro';\n\n// ----------------------------------------------------------------------------\n\nfunction vtkRenderPass(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkRenderPass');\n\n publicAPI.getOperation = () => model.currentOperation;\n\n publicAPI.setCurrentOperation = (val) => {\n model.currentOperation = val;\n model.currentTraverseOperation = `traverse${macro.capitalize(\n model.currentOperation\n )}`;\n };\n\n publicAPI.getTraverseOperation = () => model.currentTraverseOperation;\n\n // by default this class will traverse all of its\n // preDelegateOperations, then call its delegate render passes\n // the traverse all of its postDelegateOperations\n // any of those three arrays can be empty\n publicAPI.traverse = (viewNode, parent = null) => {\n if (model.deleted) {\n return;\n }\n\n // we just render our delegates in order\n model.currentParent = parent;\n\n model.preDelegateOperations.forEach((val) => {\n publicAPI.setCurrentOperation(val);\n viewNode.traverse(publicAPI);\n });\n model.delegates.forEach((val) => {\n val.traverse(viewNode, publicAPI);\n });\n model.postDelegateOperations.forEach((val) => {\n publicAPI.setCurrentOperation(val);\n viewNode.traverse(publicAPI);\n });\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n delegates: [],\n currentOperation: null,\n preDelegateOperations: [],\n postDelegateOperations: [],\n currentParent: null,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Build VTK API\n macro.obj(publicAPI, model);\n macro.get(publicAPI, model, ['currentOperation']);\n macro.setGet(publicAPI, model, [\n 'delegates',\n 'currentParent',\n 'preDelegateOperations',\n 'postDelegateOperations',\n ]);\n\n // Object methods\n vtkRenderPass(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkRenderPass');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/SceneGraph/RenderPass/index.js","import macro from 'vtk.js/Sources/macro';\nimport Constants from 'vtk.js/Sources/Rendering/OpenGL/HardwareSelector/Constants';\nimport vtkOpenGLFramebuffer from 'vtk.js/Sources/Rendering/OpenGL/Framebuffer';\nimport vtkSelectionNode from 'vtk.js/Sources/Common/DataModel/SelectionNode';\nimport vtkDataSet from 'vtk.js/Sources/Common/DataModel/DataSet';\n\nconst { PassTypes } = Constants;\nconst { SelectionContent, SelectionField } = vtkSelectionNode;\nconst { FieldAssociations } = vtkDataSet;\nconst { vtkErrorMacro } = macro;\n\n// ----------------------------------------------------------------------------\n// vtkOpenGLHardwareSelector methods\n// ----------------------------------------------------------------------------\n\nfunction vtkOpenGLHardwareSelector(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkOpenGLHardwareSelector');\n\n //----------------------------------------------------------------------------\n publicAPI.releasePixBuffers = () => {\n model.pixBuffer = [];\n };\n\n //----------------------------------------------------------------------------\n publicAPI.beginSelection = () => {\n model.openGLRenderer = model.openGLRenderWindow.getViewNodeFor(\n model.renderer\n );\n model.maxAttributeId = 0;\n\n model.framebuffer = vtkOpenGLFramebuffer.newInstance();\n model.framebuffer.setOpenGLRenderWindow(model.openGLRenderWindow);\n model.framebuffer.saveCurrentBindingsAndBuffers();\n const size = model.openGLRenderWindow.getSize();\n model.framebuffer.create(size[0], size[1]);\n model.framebuffer.populateFramebuffer();\n\n model.openGLRenderer.clear();\n model.openGLRenderer.setSelector(publicAPI);\n model.hitProps = [];\n model.props = [];\n publicAPI.releasePixBuffers();\n };\n\n //----------------------------------------------------------------------------\n publicAPI.endSelection = () => {\n model.hitProps = [];\n model.openGLRenderer.setSelector(null);\n model.framebuffer.restorePreviousBindingsAndBuffers();\n };\n\n publicAPI.preCapturePass = () => {};\n\n publicAPI.postCapturePass = () => {};\n\n //----------------------------------------------------------------------------\n publicAPI.select = () => {\n let sel = null;\n if (publicAPI.captureBuffers()) {\n sel = publicAPI.generateSelection(\n model.area[0],\n model.area[1],\n model.area[2],\n model.area[3]\n );\n publicAPI.releasePixBuffers();\n }\n return sel;\n };\n\n //----------------------------------------------------------------------------\n publicAPI.captureBuffers = () => {\n if (!model.renderer || !model.openGLRenderWindow) {\n vtkErrorMacro('Renderer and view must be set before calling Select.');\n return false;\n }\n\n model.openGLRenderer = model.openGLRenderWindow.getViewNodeFor(\n model.renderer\n );\n\n // int rgba[4];\n // rwin.getColorBufferSizes(rgba);\n // if (rgba[0] < 8 || rgba[1] < 8 || rgba[2] < 8) {\n // vtkErrorMacro(\"Color buffer depth must be atleast 8 bit. \"\n // \"Currently: \" << rgba[0] << \", \" << rgba[1] << \", \" <<rgba[2]);\n // return false;\n // }\n publicAPI.invokeEvent({ type: 'StartEvent' });\n\n // Initialize renderer for selection.\n // change the renderer's background to black, which will indicate a miss\n model.originalBackground = model.renderer.getBackgroundByReference();\n model.renderer.setBackground(0.0, 0.0, 0.0);\n\n publicAPI.beginSelection();\n for (\n model.currentPass = PassTypes.MIN_KNOWN_PASS;\n model.currentPass <= PassTypes.MAX_KNOWN_PASS;\n model.currentPass++\n ) {\n if (publicAPI.passRequired(model.currentPass)) {\n publicAPI.preCapturePass(model.currentPass);\n model.openGLRenderWindow.traverseAllPasses();\n publicAPI.postCapturePass(model.currentPass);\n\n publicAPI.savePixelBuffer(model.currentPass);\n }\n }\n publicAPI.endSelection();\n\n // restore original background\n model.renderer.setBackground(model.originalBackground);\n publicAPI.invokeEvent({ type: 'EndEvent' });\n\n // restore image\n model.openGLRenderWindow.traverseAllPasses();\n return true;\n };\n\n //----------------------------------------------------------------------------\n publicAPI.passRequired = (pass) => true;\n\n //----------------------------------------------------------------------------\n publicAPI.savePixelBuffer = (passNo) => {\n model.pixBuffer[passNo] = model.openGLRenderWindow.getPixelData(\n model.area[0],\n model.area[1],\n model.area[2],\n model.area[3]\n );\n if (passNo === PassTypes.ACTOR_PASS) {\n publicAPI.buildPropHitList(model.pixBuffer[passNo]);\n }\n };\n\n //----------------------------------------------------------------------------\n publicAPI.buildPropHitList = (pixelbuffer) => {\n for (let yy = 0; yy <= model.area[3] - model.area[1]; yy++) {\n for (let xx = 0; xx <= model.area[2] - model.area[0]; xx++) {\n let val = publicAPI.convert(xx, yy, pixelbuffer);\n if (val > 0) {\n val--;\n if (model.hitProps.indexOf(val) === -1) {\n model.hitProps.push(val);\n }\n }\n }\n }\n };\n\n //----------------------------------------------------------------------------\n publicAPI.renderProp = (prop) => {\n if (model.currentPass === PassTypes.ACTOR_PASS) {\n publicAPI.setPropColorValueFromInt(model.props.length + model.idOffset);\n model.props.push(prop);\n }\n };\n\n //----------------------------------------------------------------------------\n publicAPI.renderCompositeIndex = (index) => {\n if (model.currentPass === PassTypes.COMPOSITE_INDEX_PASS) {\n publicAPI.setPropColorValueFromInt(index + model.idOffset);\n }\n };\n\n //----------------------------------------------------------------------------\n // TODO: make inline\n publicAPI.renderAttributeId = (attribid) => {\n if (attribid < 0) {\n // negative attribid is valid. It happens when rendering higher order\n // elements where new points are added for rendering smooth surfaces.\n return;\n }\n\n model.maxAttributeId =\n attribid > model.maxAttributeId ? attribid : model.maxAttributeId;\n\n // if (model.currentPass < PassTypes.ID_LOW24) {\n // return; // useless...\n // }\n };\n\n //----------------------------------------------------------------------------\n publicAPI.getPropFromID = (id) => {\n if (id >= 0 && id < model.props.length) {\n return model.props[id];\n }\n return null;\n };\n\n //----------------------------------------------------------------------------\n publicAPI.passTypeToString = (type) => macro.enumToString(PassTypes, type);\n\n //----------------------------------------------------------------------------\n publicAPI.isPropHit = (id) => model.hitProps.hasKey(id);\n\n publicAPI.convert = (xx, yy, pb) => {\n if (!pb) {\n return 0;\n }\n const offset = (yy * (model.area[2] - model.area[0] + 1) + xx) * 4;\n const rgb = [];\n rgb[0] = pb[offset];\n rgb[1] = pb[offset + 1];\n rgb[2] = pb[offset + 2];\n let val = rgb[2];\n val *= 256;\n val += rgb[1];\n val *= 256;\n val += rgb[0];\n return val;\n };\n\n publicAPI.setPropColorValueFromInt = (val) => {\n model.propColorValue[0] = (val % 256) / 255.0;\n model.propColorValue[1] = ((val / 256) % 256) / 255.0;\n model.propColorValue[2] = ((val / 65536) % 256) / 255.0;\n };\n\n // info has\n // valid\n // propId\n // prop\n // compositeID\n // attributeID\n\n //----------------------------------------------------------------------------\n publicAPI.getPixelInformation = (\n inDisplayPosition,\n maxDistance,\n outSelectedPosition\n ) => {\n // Base case\n const maxDist = maxDistance < 0 ? 0 : maxDistance;\n if (maxDist === 0) {\n outSelectedPosition[0] = inDisplayPosition[0];\n outSelectedPosition[1] = inDisplayPosition[1];\n if (\n inDisplayPosition[0] < model.area[0] ||\n inDisplayPosition[0] > model.area[2] ||\n inDisplayPosition[1] < model.area[1] ||\n inDisplayPosition[1] > model.area[3]\n ) {\n return null;\n }\n\n // offset inDisplayPosition based on the lower-left-corner of the Area.\n const displayPosition = [\n inDisplayPosition[0] - model.area[0],\n inDisplayPosition[1] - model.area[1],\n ];\n\n const actorid = publicAPI.convert(\n displayPosition[0],\n displayPosition[1],\n model.pixBuffer[PassTypes.ACTOR_PASS]\n );\n if (actorid <= 0) {\n // the pixel did not hit any actor.\n return null;\n }\n\n const info = {};\n info.valid = true;\n\n info.propID = actorid - model.idOffset;\n info.prop = publicAPI.getPropFromID(info.propID);\n\n let compositeID = publicAPI.convert(\n displayPosition[0],\n displayPosition[1],\n model.pixBuffer[PassTypes.COMPOSITE_INDEX_PASS]\n );\n if (compositeID < 0 || compositeID > 0xffffff) {\n compositeID = 0;\n }\n info.compositeID = compositeID - model.idOffset;\n\n // const low24 = publicAPI.convert(\n // displayPosition[0], displayPosition[1], model.pixBuffer[PassTypes.ID_LOW24]);\n\n // // id 0 is reserved for nothing present.\n // info.attributeID = low24 - model.idOffset;\n // if (info.attributeID < 0) {\n // // the pixel did not hit any cell.\n // return null;\n // }\n return info;\n }\n\n // Iterate over successively growing boxes.\n // They recursively call the base case to handle single pixels.\n const dispPos = [inDisplayPosition[0], inDisplayPosition[1]];\n const curPos = [0, 0];\n let info = publicAPI.getPixelInformation(\n inDisplayPosition,\n 0,\n outSelectedPosition\n );\n if (info && info.valid) {\n return info;\n }\n for (let dist = 1; dist < maxDist; ++dist) {\n // Vertical sides of box.\n for (\n let y = dispPos[1] > dist ? dispPos[1] - dist : 0;\n y <= dispPos[1] + dist;\n ++y\n ) {\n curPos[1] = y;\n if (dispPos[0] >= dist) {\n curPos[0] = dispPos[0] - dist;\n info = publicAPI.getPixelInformation(curPos, 0, outSelectedPosition);\n if (info && info.valid) {\n return info;\n }\n }\n curPos[0] = dispPos[0] + dist;\n info = publicAPI.getPixelInformation(curPos, 0, outSelectedPosition);\n if (info && info.valid) {\n return info;\n }\n }\n // Horizontal sides of box.\n for (\n let x = dispPos[0] >= dist ? dispPos[0] - (dist - 1) : 0;\n x <= dispPos[0] + (dist - 1);\n ++x\n ) {\n curPos[0] = x;\n if (dispPos[1] >= dist) {\n curPos[1] = dispPos[1] - dist;\n info = publicAPI.getPixelInformation(curPos, 0, outSelectedPosition);\n if (info && info.valid) {\n return info;\n }\n }\n curPos[1] = dispPos[1] + dist;\n info = publicAPI.getPixelInformation(curPos, 0, outSelectedPosition);\n if (info && info.valid) {\n return info;\n }\n }\n }\n\n // nothing hit.\n outSelectedPosition[0] = inDisplayPosition[0];\n outSelectedPosition[1] = inDisplayPosition[1];\n return null;\n };\n\n //-----------------------------------------------------------------------------\n publicAPI.convertSelection = (fieldassociation, dataMap) => {\n const sel = [];\n\n let count = 0;\n dataMap.forEach((value, key) => {\n const child = vtkSelectionNode.newInstance();\n child.setContentType(SelectionContent.INDICES);\n switch (fieldassociation) {\n case FieldAssociations.FIELD_ASSOCIATION_CELLS:\n child.setFieldType(SelectionField.CELL);\n break;\n case FieldAssociations.FIELD_ASSOCIATION_POINTS:\n child.setFieldType(SelectionField.POINT);\n break;\n default:\n vtkErrorMacro('Unknown field association');\n }\n child.getProperties().propID = value.info.propID;\n child.getProperties().prop = value.info.prop;\n child.getProperties().compositeID = value.info.compositeID;\n child.getProperties().pixelCount = value.pixelCount;\n\n child.setSelectionList(value.attributeIDs);\n sel[count] = child;\n count++;\n });\n\n return sel;\n };\n\n publicAPI.getInfoHash = (info) => `${info.propID} ${info.compositeID}`;\n\n //----------------------------------------------------------------------------\n publicAPI.generateSelection = (x1, y1, x2, y2) => {\n const dataMap = new Map();\n\n const outSelectedPosition = [0, 0];\n\n for (let yy = y1; yy <= y2; yy++) {\n for (let xx = x1; xx <= x2; xx++) {\n const pos = [xx, yy];\n const info = publicAPI.getPixelInformation(pos, 0, outSelectedPosition);\n if (info && info.valid) {\n const hash = publicAPI.getInfoHash(info);\n if (!dataMap.has(hash)) {\n dataMap.set(hash, {\n info,\n pixelCount: 1,\n attributeIDs: [info.attributeID],\n });\n } else {\n dataMap.get(hash).pixelCount++;\n if (\n dataMap.get(hash).attributeIDs.indexOf(info.attributeID) === -1\n ) {\n dataMap.get(hash).attributeIDs.push(info.attributeID);\n }\n }\n }\n }\n }\n return publicAPI.convertSelection(model.fieldAssociation, dataMap);\n };\n\n publicAPI.attach = (w, r) => {\n model.openGLRenderWindow = w;\n model.renderer = r;\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n fieldAssociation: FieldAssociations.FIELD_ASSOCIATION_CELLS,\n renderer: null,\n area: null,\n openGLRenderWindow: null,\n openGLRenderer: null,\n currentPass: -1,\n propColorValue: null,\n props: null,\n idOffset: 1,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Build VTK API\n macro.obj(publicAPI, model);\n\n model.area = [0, 0, 0, 0];\n model.propColorValue = [0, 0, 0];\n model.props = [];\n\n macro.setGet(publicAPI, model, [\n 'fieldAssociation',\n 'renderer',\n 'currentPass',\n ]);\n\n macro.setGetArray(publicAPI, model, ['area'], 4);\n macro.setGetArray(publicAPI, model, ['propColorValue'], 3);\n macro.event(publicAPI, model, 'event');\n\n // Object methods\n vtkOpenGLHardwareSelector(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(\n extend,\n 'vtkOpenGLHardwareSelector'\n);\n\n// ----------------------------------------------------------------------------\n\nexport default Object.assign({ newInstance, extend }, Constants);\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/OpenGL/HardwareSelector/index.js","export const AttributeTypes = {\n SCALARS: 0,\n VECTORS: 1,\n NORMALS: 2,\n TCOORDS: 3,\n TENSORS: 4,\n GLOBALIDS: 5,\n PEDIGREEIDS: 6,\n EDGEFLAG: 7,\n NUM_ATTRIBUTES: 8,\n};\n\nexport const AttributeLimitTypes = {\n MAX: 0,\n EXACT: 1,\n NOLIMIT: 2,\n};\n\nexport const CellGhostTypes = {\n DUPLICATECELL: 1, // the cell is present on multiple processors\n HIGHCONNECTIVITYCELL: 2, // the cell has more neighbors than in a regular mesh\n LOWCONNECTIVITYCELL: 4, // the cell has less neighbors than in a regular mesh\n REFINEDCELL: 8, // other cells are present that refines it.\n EXTERIORCELL: 16, // the cell is on the exterior of the data set\n HIDDENCELL: 32, // the cell is needed to maintain connectivity, but the data values should be ignored.\n};\n\nexport const PointGhostTypes = {\n DUPLICATEPOINT: 1, // the cell is present on multiple processors\n HIDDENPOINT: 2, // the point is needed to maintain connectivity, but the data values should be ignored.\n};\n\nexport const AttributeCopyOperations = {\n COPYTUPLE: 0,\n INTERPOLATE: 1,\n PASSDATA: 2,\n ALLCOPY: 3, // all of the above\n};\n\nexport const ghostArrayName = 'vtkGhostType';\n\nexport const DesiredOutputPrecision = {\n DEFAULT: 0, // use the point type that does not truncate any data\n SINGLE: 1, // use Float32Array\n DOUBLE: 2, // use Float64Array\n};\n\nexport default {\n AttributeCopyOperations,\n AttributeLimitTypes,\n AttributeTypes,\n CellGhostTypes,\n DesiredOutputPrecision,\n PointGhostTypes,\n ghostArrayName,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Common/DataModel/DataSetAttributes/Constants.js","import macro from 'vtk.js/Sources/macro';\nimport { ObjectType } from 'vtk.js/Sources/Rendering/OpenGL/BufferObject/Constants';\n\n// ----------------------------------------------------------------------------\n// vtkOpenGLVertexArrayObject methods\n// ----------------------------------------------------------------------------\n\nfunction vtkOpenGLVertexArrayObject(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkOpenGLVertexArrayObject');\n\n // Public API methods\n publicAPI.exposedMethod = () => {\n // This is a publicly exposed method of this object\n };\n\n publicAPI.initialize = () => {\n model.instancingExtension = null;\n if (!model.openGLRenderWindow.getWebgl2()) {\n model.instancingExtension = model.context.getExtension(\n 'ANGLE_instanced_arrays'\n );\n }\n if (\n !model.forceEmulation &&\n model.openGLRenderWindow &&\n model.openGLRenderWindow.getWebgl2()\n ) {\n model.extension = null;\n model.supported = true;\n model.handleVAO = model.context.createVertexArray();\n } else {\n model.extension = model.context.getExtension('OES_vertex_array_object');\n // Start setting up VAO\n if (!model.forceEmulation && model.extension) {\n model.supported = true;\n model.handleVAO = model.extension.createVertexArrayOES();\n } else {\n model.supported = false;\n }\n }\n };\n\n publicAPI.isReady = () =>\n // We either probed and allocated a VAO, or are falling back as the current\n // hardware does not support VAOs.\n model.handleVAO !== 0 || model.supported === false;\n\n publicAPI.bind = () => {\n // Either simply bind the VAO, or emulate behavior by binding all attributes.\n if (!publicAPI.isReady()) {\n publicAPI.initialize();\n }\n if (publicAPI.isReady() && model.supported) {\n if (model.extension) {\n model.extension.bindVertexArrayOES(model.handleVAO);\n } else {\n model.context.bindVertexArray(model.handleVAO);\n }\n } else if (publicAPI.isReady()) {\n const gl = model.context;\n for (let ibuff = 0; ibuff < model.buffers.length; ++ibuff) {\n const buff = model.buffers[ibuff];\n model.context.bindBuffer(gl.ARRAY_BUFFER, buff.buffer);\n for (let iatt = 0; iatt < buff.attributes.length; ++iatt) {\n const attrIt = buff.attributes[iatt];\n const matrixCount = attrIt.isMatrix ? attrIt.size : 1;\n for (let i = 0; i < matrixCount; ++i) {\n gl.enableVertexAttribArray(attrIt.index + i);\n gl.vertexAttribPointer(\n attrIt.index + i,\n attrIt.size,\n attrIt.type,\n attrIt.normalize,\n attrIt.stride,\n attrIt.offset + attrIt.stride * i / attrIt.size\n );\n if (attrIt.divisor > 0) {\n if (model.instancingExtension) {\n model.instancingExtension.vertexAttribDivisorANGLE(\n attrIt.index + i,\n 1\n );\n } else {\n gl.vertexAttribDivisor(attrIt.index + i, 1);\n }\n }\n }\n }\n }\n }\n };\n\n publicAPI.release = () => {\n // Either simply release the VAO, or emulate behavior by releasing all attributes.\n if (publicAPI.isReady() && model.supported) {\n if (model.extension) {\n model.extension.bindVertexArrayOES(null);\n } else {\n model.context.bindVertexArray(null);\n }\n } else if (publicAPI.isReady()) {\n const gl = model.context;\n for (let ibuff = 0; ibuff < model.buffers.length; ++ibuff) {\n const buff = model.buffers[ibuff];\n model.context.bindBuffer(gl.ARRAY_BUFFER, buff.buffer);\n for (let iatt = 0; iatt < buff.attributes.length; ++iatt) {\n const attrIt = buff.attributes[iatt];\n const matrixCount = attrIt.isMatrix ? attrIt.size : 1;\n for (let i = 0; i < matrixCount; ++i) {\n gl.enableVertexAttribArray(attrIt.index + i);\n gl.vertexAttribPointer(\n attrIt.index + i,\n attrIt.size,\n attrIt.type,\n attrIt.normalize,\n attrIt.stride,\n attrIt.offset + attrIt.stride * i / attrIt.size\n );\n if (attrIt.divisor > 0) {\n if (model.instancingExtension) {\n model.instancingExtension.vertexAttribDivisorANGLE(\n attrIt.index + i,\n 0\n );\n } else {\n gl.vertexAttribDivisor(attrIt.index + i, 0);\n }\n }\n gl.disableVertexAttribArray(attrIt.index + i);\n }\n }\n }\n }\n };\n\n publicAPI.shaderProgramChanged = () => {\n publicAPI.release();\n if (model.handleVAO) {\n if (model.extension) {\n model.extension.deleteVertexArrayOES(model.handleVAO);\n } else {\n model.context.deleteVertexArray(model.handleVAO);\n }\n }\n model.handleVAO = 0;\n model.handleProgram = 0;\n };\n\n publicAPI.releaseGraphicsResources = () => {\n publicAPI.shaderProgramChanged();\n if (model.handleVAO) {\n if (model.extension) {\n model.extension.deleteVertexArrayOES(model.handleVAO);\n } else {\n model.context.deleteVertexArray(model.handleVAO);\n }\n }\n model.handleVAO = 0;\n model.supported = true;\n model.handleProgram = 0;\n };\n\n publicAPI.addAttributeArray = (\n program,\n buffer,\n name,\n offset,\n stride,\n elementType,\n elementTupleSize,\n normalize\n ) =>\n publicAPI.addAttributeArrayWithDivisor(\n program,\n buffer,\n name,\n offset,\n stride,\n elementType,\n elementTupleSize,\n normalize,\n 0,\n false\n );\n\n publicAPI.addAttributeArrayWithDivisor = (\n program,\n buffer,\n name,\n offset,\n stride,\n elementType,\n elementTupleSize,\n normalize,\n divisor,\n isMatrix\n ) => {\n if (!program) {\n return false;\n }\n\n // Check the program is bound, and the buffer is valid.\n if (\n !program.isBound() ||\n buffer.getHandle() === 0 ||\n buffer.getType() !== ObjectType.ARRAY_BUFFER\n ) {\n return false;\n }\n\n // Perform initalization if necessary, ensure program matches VAOs.\n if (model.handleProgram === 0) {\n model.handleProgram = program.getHandle();\n }\n if (!publicAPI.isReady()) {\n publicAPI.initialize();\n }\n if (!publicAPI.isReady() || model.handleProgram !== program.getHandle()) {\n return false;\n }\n\n const gl = model.context;\n\n const attribs = {};\n attribs.name = name;\n attribs.index = gl.getAttribLocation(model.handleProgram, name);\n attribs.offset = offset;\n attribs.stride = stride;\n attribs.type = elementType;\n attribs.size = elementTupleSize;\n attribs.normalize = normalize;\n attribs.isMatrix = isMatrix;\n attribs.divisor = divisor;\n\n if (attribs.Index === -1) {\n return false;\n }\n\n // Always make the call as even the first use wants the attrib pointer setting\n // up when we are emulating.\n buffer.bind();\n gl.enableVertexAttribArray(attribs.index);\n gl.vertexAttribPointer(\n attribs.index,\n attribs.size,\n attribs.type,\n attribs.normalize,\n attribs.stride,\n attribs.offset\n );\n\n if (divisor > 0) {\n if (model.instancingExtension) {\n model.instancingExtension.vertexAttribDivisorANGLE(attribs.index, 1);\n } else {\n gl.vertexAttribDivisor(attribs.index, 1);\n }\n }\n\n attribs.buffer = buffer.getHandle();\n\n // If vertex array objects are not supported then build up our list.\n if (!model.supported) {\n // find the buffer\n let buffFound = false;\n for (let ibuff = 0; ibuff < model.buffers.length; ++ibuff) {\n const buff = model.buffers[ibuff];\n if (buff.buffer === attribs.buffer) {\n buffFound = true;\n let found = false;\n for (let iatt = 0; iatt < buff.attributes.length; ++iatt) {\n const attrIt = buff.attributes[iatt];\n if (attrIt.name === name) {\n found = true;\n buff.attributes[iatt] = attribs;\n }\n }\n if (!found) {\n buff.attributes.push(attribs);\n }\n }\n }\n if (!buffFound) {\n model.buffers.push({ buffer: attribs.buffer, attributes: [attribs] });\n }\n }\n return true;\n };\n\n publicAPI.addAttributeMatrixWithDivisor = (\n program,\n buffer,\n name,\n offset,\n stride,\n elementType,\n elementTupleSize,\n normalize,\n divisor\n ) => {\n // bind the first row of values\n const result = publicAPI.addAttributeArrayWithDivisor(\n program,\n buffer,\n name,\n offset,\n stride,\n elementType,\n elementTupleSize,\n normalize,\n divisor,\n true\n );\n\n if (!result) {\n return result;\n }\n\n const gl = model.context;\n\n const index = gl.getAttribLocation(model.handleProgram, name);\n\n for (let i = 1; i < elementTupleSize; i++) {\n gl.enableVertexAttribArray(index + i);\n gl.vertexAttribPointer(\n index + i,\n elementTupleSize,\n elementType,\n normalize,\n stride,\n offset + stride * i / elementTupleSize\n );\n if (divisor > 0) {\n if (model.instancingExtension) {\n model.instancingExtension.vertexAttribDivisorANGLE(index + i, 1);\n } else {\n gl.vertexAttribDivisor(index + i, 1);\n }\n }\n }\n\n return true;\n };\n\n publicAPI.removeAttributeArray = (name) => {\n if (!publicAPI.isReady() || model.handleProgram === 0) {\n return false;\n }\n\n // If we don't have real VAOs find the entry and remove it too.\n if (!model.supported) {\n for (let ibuff = 0; ibuff < model.buffers.length; ++ibuff) {\n const buff = model.buffers[ibuff];\n for (let iatt = 0; iatt < buff.attributes.length; ++iatt) {\n const attrIt = buff.attributes[iatt];\n if (attrIt.name === name) {\n buff.attributes.splice(iatt, 1);\n if (!buff.attributes.length) {\n model.buffers.splice(ibuff, 1);\n }\n return true;\n }\n }\n }\n }\n\n return true;\n };\n\n publicAPI.setOpenGLRenderWindow = (rw) => {\n if (model.openGLRenderWindow === rw) {\n return;\n }\n publicAPI.releaseGraphicsResources();\n model.openGLRenderWindow = rw;\n model.context = null;\n if (rw) {\n model.context = model.openGLRenderWindow.getContext();\n }\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n forceEmulation: false,\n handleVAO: 0,\n handleProgram: 0,\n supported: true,\n buffers: null,\n context: null,\n openGLRenderWindow: null,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Internal objects initialization\n model.buffers = [];\n\n // Object methods\n macro.obj(publicAPI, model);\n\n // Create get-only macros\n macro.get(publicAPI, model, ['supported']);\n\n // Create get-set macros\n macro.setGet(publicAPI, model, ['forceEmulation']);\n\n // For more macro methods, see \"Sources/macro.js\"\n\n // Object specific methods\n vtkOpenGLVertexArrayObject(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(\n extend,\n 'vtkOpenGLVertexArrayObject'\n);\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/OpenGL/VertexArrayObject/index.js","export const StructuredType = {\n UNCHANGED: 0,\n SINGLE_POINT: 1,\n X_LINE: 2,\n Y_LINE: 3,\n Z_LINE: 4,\n XY_PLANE: 5,\n YZ_PLANE: 6,\n XZ_PLANE: 7,\n XYZ_GRID: 8,\n EMPTY: 9,\n};\n\nexport default {\n StructuredType,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Common/DataModel/StructuredData/Constants.js","export const ColorMode = {\n DEFAULT: 0,\n MAP_SCALARS: 1,\n DIRECT_SCALARS: 2,\n};\n\nexport const ScalarMode = {\n DEFAULT: 0,\n USE_POINT_DATA: 1,\n USE_CELL_DATA: 2,\n USE_POINT_FIELD_DATA: 3,\n USE_CELL_FIELD_DATA: 4,\n USE_FIELD_DATA: 5,\n};\n\nexport const GetArray = {\n BY_ID: 0,\n BY_NAME: 1,\n};\n\nexport default {\n ColorMode,\n GetArray,\n ScalarMode,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/Core/Mapper/Constants.js","module.exports = \"//VTK::System::Dec\\n\\n/*=========================================================================\\n\\n Program: Visualization Toolkit\\n Module: vtkPolyDataVS.glsl\\n\\n Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen\\n All rights reserved.\\n See Copyright.txt or http://www.kitware.com/Copyright.htm for details.\\n\\n This software is distributed WITHOUT ANY WARRANTY; without even\\n the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR\\n PURPOSE. See the above copyright notice for more information.\\n\\n=========================================================================*/\\n\\nattribute vec4 vertexMC;\\n\\n// frag position in VC\\n//VTK::PositionVC::Dec\\n\\n// optional normal declaration\\n//VTK::Normal::Dec\\n\\n// extra lighting parameters\\n//VTK::Light::Dec\\n\\n// Texture coordinates\\n//VTK::TCoord::Dec\\n\\n// material property values\\n//VTK::Color::Dec\\n\\n// clipping plane vars\\n//VTK::Clip::Dec\\n\\n// camera and actor matrix values\\n//VTK::Camera::Dec\\n\\n// Apple Bug\\n//VTK::PrimID::Dec\\n\\n// picking support\\n//VTK::Picking::Dec\\n\\nvoid main()\\n{\\n //VTK::Color::Impl\\n\\n //VTK::Normal::Impl\\n\\n //VTK::TCoord::Impl\\n\\n //VTK::Clip::Impl\\n\\n //VTK::PrimID::Impl\\n\\n //VTK::PositionVC::Impl\\n\\n //VTK::Light::Impl\\n\\n //VTK::Picking::Impl\\n}\\n\"\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/OpenGL/glsl/vtkPolyDataVS.glsl","import { mat4, vec3 } from 'gl-matrix';\n\nimport macro from 'vtk.js/Sources/macro';\nimport vtkCamera from 'vtk.js/Sources/Rendering/Core/Camera';\nimport vtkLight from 'vtk.js/Sources/Rendering/Core/Light';\nimport vtkMath from 'vtk.js/Sources/Common/Core/Math';\nimport vtkViewport from 'vtk.js/Sources/Rendering/Core/Viewport';\nimport vtkBoundingBox from 'vtk.js/Sources/Common/DataModel/BoundingBox';\n\nconst { vtkDebugMacro, vtkErrorMacro, vtkWarningMacro } = macro;\n\nfunction notImplemented(method) {\n return () => vtkErrorMacro(`vtkRenderer::${method} - NOT IMPLEMENTED`);\n}\n\n// ----------------------------------------------------------------------------\n// vtkRenderer methods\n// ----------------------------------------------------------------------------\n\nfunction vtkRenderer(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkRenderer');\n\n // make sure background has 4 entries. Default to opaque black\n if (!model.background) model.background = [0, 0, 0, 1];\n while (model.background.length < 3) model.background.push(0);\n if (model.background.length === 3) model.background.push(1);\n\n // Events\n const COMPUTE_VISIBLE_PROP_BOUNDS_EVENT = {\n type: 'ComputeVisiblePropBoundsEvent',\n renderer: publicAPI,\n };\n const RESET_CAMERA_CLIPPING_RANGE_EVENT = {\n type: 'ResetCameraClippingRangeEvent',\n renderer: publicAPI,\n };\n const RESET_CAMERA_EVENT = {\n type: 'ResetCameraEvent',\n renderer: publicAPI,\n };\n\n publicAPI.updateCamera = () => {\n if (!model.activeCamera) {\n vtkDebugMacro('No cameras are on, creating one.');\n // the get method will automagically create a camera\n // and reset it since one hasn't been specified yet.\n publicAPI.getActiveCameraAndResetIfCreated();\n }\n\n // update the viewing transformation\n model.activeCamera.render(publicAPI);\n\n return true;\n };\n\n publicAPI.updateLightsGeometryToFollowCamera = () => {\n // only update the light's geometry if this Renderer is tracking\n // this lights. That allows one renderer to view the lights that\n // another renderer is setting up.\n const camera = publicAPI.getActiveCameraAndResetIfCreated();\n\n model.lights.forEach((light) => {\n if (light.lightTypeIsSceneLight()) {\n // Do nothing. Don't reset the transform matrix because applications\n // may have set a custom matrix. Only reset the transform matrix in\n // vtkLight::SetLightTypeToSceneLight()\n } else if (light.lightTypeIsHeadLight()) {\n // update position and orientation of light to match camera.\n light.setPositionFrom(camera.getPositionByReference());\n light.setFocalPointFrom(camera.getFocalPointByReference());\n light.modified(camera.getMTime());\n } else if (light.lightTypeIsCameraLight()) {\n vtkErrorMacro('camera lights not supported yet', light.get());\n } else {\n vtkErrorMacro('light has unknown light type', light.get());\n }\n });\n };\n\n publicAPI.updateLightGeometry = () => {\n if (model.lightFollowCamera) {\n // only update the light's geometry if this Renderer is tracking\n // this lights. That allows one renderer to view the lights that\n // another renderer is setting up.\n return publicAPI.updateLightsGeometryToFollowCamera();\n }\n return true;\n };\n\n publicAPI.allocateTime = notImplemented('allocateTime');\n publicAPI.updateGeometry = notImplemented('updateGeometry');\n\n publicAPI.getVTKWindow = () => model.renderWindow;\n\n publicAPI.setLayer = (layer) => {\n vtkDebugMacro(\n publicAPI.getClassName(),\n publicAPI,\n 'setting Layer to ',\n layer\n );\n if (model.layer !== layer) {\n model.layer = layer;\n publicAPI.modified();\n }\n publicAPI.setPreserveColorBuffer(!!layer);\n };\n\n publicAPI.setActiveCamera = (camera) => {\n if (model.activeCamera === camera) {\n return false;\n }\n\n model.activeCamera = camera;\n publicAPI.modified();\n publicAPI.invokeEvent({ type: 'ActiveCameraEvent', camera });\n return true;\n };\n\n publicAPI.makeCamera = () => {\n const camera = vtkCamera.newInstance();\n publicAPI.invokeEvent({ type: 'CreateCameraEvent', camera });\n return camera;\n };\n\n // Replace the set/get macro method\n publicAPI.getActiveCamera = () => {\n if (!model.activeCamera) {\n model.activeCamera = publicAPI.makeCamera();\n }\n\n return model.activeCamera;\n };\n\n publicAPI.getActiveCameraAndResetIfCreated = () => {\n if (!model.activeCamera) {\n publicAPI.getActiveCamera();\n publicAPI.resetCamera();\n }\n\n return model.activeCamera;\n };\n\n publicAPI.addActor = publicAPI.addViewProp;\n publicAPI.addVolume = publicAPI.addViewProp;\n\n publicAPI.removeActor = (actor) => {\n model.actors = model.actors.filter((a) => a !== actor);\n publicAPI.removeViewProp(actor);\n };\n\n publicAPI.removeVolume = (volume) => {\n model.volumes = model.volumes.filter((v) => v !== volume);\n publicAPI.removeViewProp(volume);\n };\n\n publicAPI.addLight = (light) => {\n model.lights = [].concat(model.lights, light);\n publicAPI.modified();\n };\n\n publicAPI.getActors = () => {\n model.actors = [];\n model.props.forEach((prop) => {\n model.actors = model.actors.concat(prop.getActors());\n });\n return model.actors;\n };\n\n publicAPI.getVolumes = () => {\n model.volumes = [];\n model.props.forEach((prop) => {\n model.volumes = model.volumes.concat(prop.getVolumes());\n });\n return model.volumes;\n };\n\n publicAPI.removeLight = (light) => {\n model.lights = model.lights.filter((l) => l !== light);\n publicAPI.modified();\n };\n\n publicAPI.removeAllLights = () => {\n model.lights = [];\n };\n\n publicAPI.setLightCollection = (lights) => {\n model.lights = lights;\n publicAPI.modified();\n };\n\n publicAPI.makeLight = vtkLight.newInstance;\n\n publicAPI.createLight = () => {\n if (!model.automaticLightCreation) {\n return;\n }\n\n if (model.createdLight) {\n publicAPI.removeLight(model.createdLight);\n model.createdLight.delete();\n model.createdLight = null;\n }\n\n model.createdLight = publicAPI.makeLight();\n publicAPI.addLight(model.createdLight);\n\n model.createdLight.setLightTypeToHeadLight();\n\n // set these values just to have a good default should LightFollowCamera\n // be turned off.\n model.createdLight.setPosition(publicAPI.getActiveCamera().getPosition());\n model.createdLight.setFocalPoint(\n publicAPI.getActiveCamera().getFocalPoint()\n );\n };\n\n // requires the aspect ratio of the viewport as X/Y\n publicAPI.normalizedDisplayToWorld = (x, y, z, aspect) => {\n const vpd = publicAPI.normalizedDisplayToView(x, y, z);\n\n return publicAPI.viewToWorld(vpd[0], vpd[1], vpd[2], aspect);\n };\n\n // requires the aspect ratio of the viewport as X/Y\n publicAPI.worldToNormalizedDisplay = (x, y, z, aspect) => {\n const vpd = publicAPI.worldToView(x, y, z);\n\n return publicAPI.viewToNormalizedDisplay(vpd[0], vpd[1], vpd[2], aspect);\n };\n\n // requires the aspect ratio of the viewport as X/Y\n publicAPI.viewToWorld = (x, y, z, aspect) => {\n if (model.activeCamera === null) {\n vtkErrorMacro(\n 'ViewToWorld: no active camera, cannot compute view to world, returning 0,0,0'\n );\n return [0, 0, 0];\n }\n\n // get the perspective transformation from the active camera\n const matrix = model.activeCamera.getCompositeProjectionMatrix(\n aspect,\n -1.0,\n 1.0\n );\n\n mat4.invert(matrix, matrix);\n mat4.transpose(matrix, matrix);\n\n // Transform point to world coordinates\n const result = vec3.fromValues(x, y, z);\n vec3.transformMat4(result, result, matrix);\n return [result[0], result[1], result[2]];\n };\n\n // Convert world point coordinates to view coordinates.\n // requires the aspect ratio of the viewport as X/Y\n publicAPI.worldToView = (x, y, z, aspect) => {\n if (model.activeCamera === null) {\n vtkErrorMacro(\n 'ViewToWorld: no active camera, cannot compute view to world, returning 0,0,0'\n );\n return [0, 0, 0];\n }\n\n // get the perspective transformation from the active camera\n const matrix = model.activeCamera.getCompositeProjectionMatrix(\n aspect,\n -1.0,\n 1.0\n );\n mat4.transpose(matrix, matrix);\n\n const result = vec3.fromValues(x, y, z);\n vec3.transformMat4(result, result, matrix);\n return [result[0], result[1], result[2]];\n };\n\n publicAPI.computeVisiblePropBounds = () => {\n model.allBounds[0] = vtkBoundingBox.INIT_BOUNDS[0];\n model.allBounds[1] = vtkBoundingBox.INIT_BOUNDS[1];\n model.allBounds[2] = vtkBoundingBox.INIT_BOUNDS[2];\n model.allBounds[3] = vtkBoundingBox.INIT_BOUNDS[3];\n model.allBounds[4] = vtkBoundingBox.INIT_BOUNDS[4];\n model.allBounds[5] = vtkBoundingBox.INIT_BOUNDS[5];\n let nothingVisible = true;\n\n publicAPI.invokeEvent(COMPUTE_VISIBLE_PROP_BOUNDS_EVENT);\n\n // loop through all props\n for (let index = 0; index < model.props.length; ++index) {\n const prop = model.props[index];\n if (prop.getVisibility() && prop.getUseBounds()) {\n const bounds = prop.getBounds();\n if (bounds && vtkMath.areBoundsInitialized(bounds)) {\n nothingVisible = false;\n\n if (bounds[0] < model.allBounds[0]) {\n model.allBounds[0] = bounds[0];\n }\n if (bounds[1] > model.allBounds[1]) {\n model.allBounds[1] = bounds[1];\n }\n if (bounds[2] < model.allBounds[2]) {\n model.allBounds[2] = bounds[2];\n }\n if (bounds[3] > model.allBounds[3]) {\n model.allBounds[3] = bounds[3];\n }\n if (bounds[4] < model.allBounds[4]) {\n model.allBounds[4] = bounds[4];\n }\n if (bounds[5] > model.allBounds[5]) {\n model.allBounds[5] = bounds[5];\n }\n }\n }\n }\n\n if (nothingVisible) {\n vtkMath.uninitializeBounds(model.allBounds);\n vtkDebugMacro(\"Can't compute bounds, no 3D props are visible\");\n }\n\n return model.allBounds;\n };\n\n publicAPI.resetCamera = (bounds = null) => {\n const boundsToUse = bounds || publicAPI.computeVisiblePropBounds();\n const center = [0, 0, 0];\n\n if (!vtkMath.areBoundsInitialized(boundsToUse)) {\n vtkDebugMacro('Cannot reset camera!');\n return false;\n }\n\n let vn = null;\n\n if (publicAPI.getActiveCamera()) {\n vn = model.activeCamera.getViewPlaneNormal();\n } else {\n vtkErrorMacro('Trying to reset non-existant camera');\n return false;\n }\n\n // Reset the perspective zoom factors, otherwise subsequent zooms will cause\n // the view angle to become very small and cause bad depth sorting.\n model.activeCamera.setViewAngle(30.0);\n\n center[0] = (boundsToUse[0] + boundsToUse[1]) / 2.0;\n center[1] = (boundsToUse[2] + boundsToUse[3]) / 2.0;\n center[2] = (boundsToUse[4] + boundsToUse[5]) / 2.0;\n\n let w1 = boundsToUse[1] - boundsToUse[0];\n let w2 = boundsToUse[3] - boundsToUse[2];\n let w3 = boundsToUse[5] - boundsToUse[4];\n w1 *= w1;\n w2 *= w2;\n w3 *= w3;\n let radius = w1 + w2 + w3;\n\n // If we have just a single point, pick a radius of 1.0\n radius = radius === 0 ? 1.0 : radius;\n\n // compute the radius of the enclosing sphere\n radius = Math.sqrt(radius) * 0.5;\n\n // default so that the bounding sphere fits within the view fustrum\n\n // compute the distance from the intersection of the view frustum with the\n // bounding sphere. Basically in 2D draw a circle representing the bounding\n // sphere in 2D then draw a horizontal line going out from the center of\n // the circle. That is the camera view. Then draw a line from the camera\n // position to the point where it intersects the circle. (it will be tangent\n // to the circle at this point, this is important, only go to the tangent\n // point, do not draw all the way to the view plane). Then draw the radius\n // from the tangent point to the center of the circle. You will note that\n // this forms a right triangle with one side being the radius, another being\n // the target distance for the camera, then just find the target dist using\n // a sin.\n const angle = vtkMath.radiansFromDegrees(model.activeCamera.getViewAngle());\n const parallelScale = radius;\n const distance = radius / Math.sin(angle * 0.5);\n\n // check view-up vector against view plane normal\n const vup = model.activeCamera.getViewUp();\n if (Math.abs(vtkMath.dot(vup, vn)) > 0.999) {\n vtkWarningMacro('Resetting view-up since view plane normal is parallel');\n model.activeCamera.setViewUp(-vup[2], vup[0], vup[1]);\n }\n\n // update the camera\n model.activeCamera.setFocalPoint(center[0], center[1], center[2]);\n model.activeCamera.setPosition(\n center[0] + distance * vn[0],\n center[1] + distance * vn[1],\n center[2] + distance * vn[2]\n );\n\n publicAPI.resetCameraClippingRange(boundsToUse);\n\n // setup default parallel scale\n model.activeCamera.setParallelScale(parallelScale);\n\n // update reasonable world to physical values\n model.activeCamera.setPhysicalScale(1.0 / radius);\n model.activeCamera.setPhysicalTranslation(\n -center[0],\n -center[1],\n -center[2]\n );\n\n // Here to let parallel/distributed compositing intercept\n // and do the right thing.\n publicAPI.invokeEvent(RESET_CAMERA_EVENT);\n\n return true;\n };\n\n publicAPI.resetCameraClippingRange = (bounds = null) => {\n const boundsToUse = bounds || publicAPI.computeVisiblePropBounds();\n\n if (!vtkMath.areBoundsInitialized(boundsToUse)) {\n vtkDebugMacro('Cannot reset camera clipping range!');\n return false;\n }\n\n // Make sure we have an active camera\n publicAPI.getActiveCameraAndResetIfCreated();\n if (!model.activeCamera) {\n vtkErrorMacro('Trying to reset clipping range of non-existant camera');\n return false;\n }\n\n // Get the exact range for the bounds\n const range = model.activeCamera.computeClippingRange(boundsToUse);\n\n // do not let far - near be less than 0.1 of the window height\n // this is for cases such as 2D images which may have zero range\n let minGap = 0.0;\n if (model.activeCamera.getParallelProjection()) {\n minGap = 0.1 * model.activeCamera.getParallelScale();\n } else {\n const angle = vtkMath.radiansFromDegrees(\n model.activeCamera.getViewAngle()\n );\n minGap = 0.2 * Math.tan(angle / 2.0) * range[1];\n }\n\n if (range[1] - range[0] < minGap) {\n minGap = minGap - range[1] + range[0];\n range[1] += minGap / 2.0;\n range[0] -= minGap / 2.0;\n }\n\n // Do not let the range behind the camera throw off the calculation.\n if (range[0] < 0.0) {\n range[0] = 0.0;\n }\n\n // Give ourselves a little breathing room\n range[0] =\n 0.99 * range[0] - (range[1] - range[0]) * model.clippingRangeExpansion;\n range[1] =\n 1.01 * range[1] + (range[1] - range[0]) * model.clippingRangeExpansion;\n\n // Make sure near is not bigger than far\n range[0] = range[0] >= range[1] ? 0.01 * range[1] : range[0];\n\n // Make sure near is at least some fraction of far - this prevents near\n // from being behind the camera or too close in front. How close is too\n // close depends on the resolution of the depth buffer\n if (!model.nearClippingPlaneTolerance) {\n model.nearClippingPlaneTolerance = 0.01;\n }\n\n // make sure the front clipping range is not too far from the far clippnig\n // range, this is to make sure that the zbuffer resolution is effectively\n // used\n if (range[0] < model.nearClippingPlaneTolerance * range[1]) {\n range[0] = model.nearClippingPlaneTolerance * range[1];\n }\n model.activeCamera.setClippingRange(range[0], range[1]);\n\n // Here to let parallel/distributed compositing intercept\n // and do the right thing.\n publicAPI.invokeEvent(RESET_CAMERA_CLIPPING_RANGE_EVENT);\n return false;\n };\n\n publicAPI.setRenderWindow = (renderWindow) => {\n if (renderWindow !== model.renderWindow) {\n model.vtkWindow = renderWindow;\n model.renderWindow = renderWindow;\n }\n };\n\n publicAPI.visibleActorCount = () =>\n model.props.filter((prop) => prop.getVisibility()).length;\n publicAPI.visibleVolumeCount = publicAPI.visibleActorCount;\n\n publicAPI.getMTime = () => {\n let m1 = model.mtime;\n const m2 = model.activeCamera ? model.activeCamera.getMTime() : 0;\n if (m2 > m1) {\n m1 = m2;\n }\n const m3 = model.createdLight ? model.createdLight.getMTime() : 0;\n if (m3 > m1) {\n m1 = m3;\n }\n return m1;\n };\n\n publicAPI.getTransparent = () => !!model.preserveColorBuffer;\n\n publicAPI.isActiveCameraCreated = () => !!model.activeCamera;\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n pickedProp: null,\n activeCamera: null,\n\n allBounds: [],\n ambient: [1, 1, 1],\n\n allocatedRenderTime: 100,\n timeFactor: 1,\n\n createdLight: null,\n automaticLightCreation: true,\n\n twoSidedLighting: true,\n lastRenderTimeInSeconds: -1,\n\n renderWindow: null,\n lights: [],\n actors: [],\n volumes: [],\n\n lightFollowCamera: true,\n\n numberOfPropsRendered: 0,\n\n propArray: null,\n\n pathArray: null,\n\n layer: 1,\n preserveColorBuffer: false,\n preserveDepthBuffer: false,\n\n computeVisiblePropBounds: vtkMath.createUninitializedBounds(),\n\n interactive: true,\n\n nearClippingPlaneTolerance: 0,\n clippingRangeExpansion: 0.05,\n\n erase: true,\n draw: true,\n\n useShadows: false,\n\n useDepthPeeling: false,\n occlusionRatio: 0,\n maximumNumberOfPeels: 4,\n\n selector: null,\n delegate: null,\n\n texturedBackground: false,\n backgroundTexture: null,\n\n pass: 0,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkViewport.extend(publicAPI, model, initialValues);\n\n // Build VTK API\n macro.get(publicAPI, model, [\n 'renderWindow',\n\n 'allocatedRenderTime',\n 'timeFactor',\n\n 'lastRenderTimeInSeconds',\n 'numberOfPropsRendered',\n 'lastRenderingUsedDepthPeeling',\n\n 'selector',\n ]);\n macro.setGet(publicAPI, model, [\n 'twoSidedLighting',\n 'lightFollowCamera',\n 'automaticLightCreation',\n 'erase',\n 'draw',\n 'nearClippingPlaneTolerance',\n 'clippingRangeExpansion',\n 'backingStore',\n 'interactive',\n 'layer',\n 'preserveColorBuffer',\n 'preserveDepthBuffer',\n 'useDepthPeeling',\n 'occlusionRatio',\n 'maximumNumberOfPeels',\n 'delegate',\n 'backgroundTexture',\n 'texturedBackground',\n 'useShadows',\n 'pass',\n ]);\n macro.getArray(publicAPI, model, ['actors', 'volumes', 'lights']);\n macro.setGetArray(publicAPI, model, ['background'], 4, 1.0);\n\n // Object methods\n vtkRenderer(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkRenderer');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/Core/Renderer/index.js","import macro from 'vtk.js/Sources/macro';\nimport vtkMath from 'vtk.js/Sources/Common/Core/Math';\nimport vtkInteractorStyleTrackballCamera from 'vtk.js/Sources/Interaction/Style/InteractorStyleTrackballCamera';\nimport Constants from 'vtk.js/Sources/Rendering/Core/RenderWindowInteractor/Constants';\n\nconst { Device, Input } = Constants;\nconst {\n vtkWarningMacro,\n vtkErrorMacro,\n normalizeWheel,\n vtkOnceErrorMacro,\n} = macro;\n\n// ----------------------------------------------------------------------------\n// Global methods\n// ----------------------------------------------------------------------------\n\nconst deviceInputMap = {\n 'OpenVR Gamepad': [\n Input.TrackPad,\n Input.Trigger,\n Input.Grip,\n Input.ApplicationMenu,\n ],\n};\n\nconst handledEvents = [\n 'StartAnimation',\n 'Animation',\n 'EndAnimation',\n 'StartMouseMove',\n 'MouseMove',\n 'EndMouseMove',\n 'LeftButtonPress',\n 'LeftButtonRelease',\n 'MiddleButtonPress',\n 'MiddleButtonRelease',\n 'RightButtonPress',\n 'RightButtonRelease',\n 'KeyPress',\n 'KeyDown',\n 'KeyUp',\n 'StartMouseWheel',\n 'MouseWheel',\n 'EndMouseWheel',\n 'StartPinch',\n 'Pinch',\n 'EndPinch',\n 'StartPan',\n 'Pan',\n 'EndPan',\n 'StartRotate',\n 'Rotate',\n 'EndRotate',\n 'Button3D',\n 'Move3D',\n];\n\nfunction preventDefault(event) {\n event.stopPropagation();\n event.preventDefault();\n return false;\n}\n\n// ----------------------------------------------------------------------------\n// vtkRenderWindowInteractor methods\n// ----------------------------------------------------------------------------\n\nfunction vtkRenderWindowInteractor(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkRenderWindowInteractor');\n\n // Initialize list of requesters\n const animationRequesters = new Set();\n\n // Public API methods\n\n //----------------------------------------------------------------------\n publicAPI.start = () => {\n // Let the compositing handle the event loop if it wants to.\n // if (publicAPI.HasObserver(vtkCommand::StartEvent) && !publicAPI.HandleEventLoop) {\n // publicAPI.invokeEvent({ type: 'StartEvent' });\n // return;\n // }\n\n // As a convenience, initialize if we aren't initialized yet.\n if (!model.initialized) {\n publicAPI.initialize();\n if (!model.initialized) {\n return;\n }\n }\n // Pass execution to the subclass which will run the event loop,\n // this will not return until TerminateApp is called.\n publicAPI.startEventLoop();\n };\n\n //----------------------------------------------------------------------\n publicAPI.setRenderWindow = (aren) => {\n vtkErrorMacro(\n 'you want to call setView(view) instead of setRenderWindow on a vtk.js interactor'\n );\n };\n\n //----------------------------------------------------------------------\n publicAPI.setInteractorStyle = (style) => {\n if (model.interactorStyle !== style) {\n if (model.interactorStyle != null) {\n model.interactorStyle.setInteractor(null);\n }\n model.interactorStyle = style;\n if (model.interactorStyle != null) {\n if (model.interactorStyle.getInteractor() !== publicAPI) {\n model.interactorStyle.setInteractor(publicAPI);\n }\n }\n }\n };\n\n //---------------------------------------------------------------------\n publicAPI.initialize = () => {\n model.initialized = true;\n publicAPI.enable();\n publicAPI.render();\n };\n\n publicAPI.enable = () => publicAPI.setEnabled(true);\n\n publicAPI.disable = () => publicAPI.setEnabled(false);\n\n publicAPI.startEventLoop = () => vtkWarningMacro('empty event loop');\n\n function updateCurrentRenderer(x, y) {\n model.currentRenderer = publicAPI.findPokedRenderer(x, y);\n }\n\n publicAPI.getCurrentRenderer = () => {\n if (model.currentRenderer) {\n return model.currentRenderer;\n }\n updateCurrentRenderer(0, 0);\n return model.currentRenderer;\n };\n\n function getScreenEventPositionFor(source) {\n const bounds = model.container.getBoundingClientRect();\n const canvas = model.view.getCanvas();\n const scaleX = canvas.width / bounds.width;\n const scaleY = canvas.height / bounds.height;\n const position = {\n x: scaleX * (source.clientX - bounds.left),\n y: scaleY * (bounds.height - source.clientY + bounds.top),\n z: 0,\n };\n updateCurrentRenderer(position.x, position.y);\n return position;\n }\n\n function getTouchEventPositionsFor(touches) {\n const positions = {};\n for (let i = 0; i < touches.length; i++) {\n const touch = touches[i];\n positions[touch.identifier] = getScreenEventPositionFor(touch);\n }\n return positions;\n }\n\n function getModifierKeysFor(event) {\n return {\n controlKey: event.ctrlKey,\n altKey: event.altKey,\n shiftKey: event.shiftKey,\n };\n }\n\n function getKeysFor(event) {\n const modifierKeys = getModifierKeysFor(event);\n const keys = {\n key: event.key,\n keyCode: event.charCode,\n };\n Object.assign(keys, modifierKeys);\n return keys;\n }\n\n function interactionRegistration(addListeners) {\n const rootElm = document.querySelector('body');\n const method = addListeners ? 'addEventListener' : 'removeEventListener';\n const invMethod = addListeners ? 'removeEventListener' : 'addEventListener';\n\n if (model.container) {\n model.container[invMethod]('mousemove', publicAPI.handleMouseMove);\n }\n\n rootElm[method]('mouseup', publicAPI.handleMouseUp);\n rootElm[method]('mousemove', publicAPI.handleMouseMove);\n rootElm[method]('touchend', publicAPI.handleTouchEnd, false);\n rootElm[method]('touchcancel', publicAPI.handleTouchEnd, false);\n rootElm[method]('touchmove', publicAPI.handleTouchMove, false);\n }\n\n publicAPI.bindEvents = (container) => {\n model.container = container;\n container.addEventListener('contextmenu', preventDefault);\n // container.addEventListener('click', preventDefault); // Avoid stopping event propagation\n container.addEventListener('wheel', publicAPI.handleWheel);\n container.addEventListener('DOMMouseScroll', publicAPI.handleWheel);\n container.addEventListener('mousemove', publicAPI.handleMouseMove);\n container.addEventListener('mousedown', publicAPI.handleMouseDown);\n document\n .querySelector('body')\n .addEventListener('keypress', publicAPI.handleKeyPress);\n document\n .querySelector('body')\n .addEventListener('keydown', publicAPI.handleKeyDown);\n document\n .querySelector('body')\n .addEventListener('keyup', publicAPI.handleKeyUp);\n\n container.addEventListener('touchstart', publicAPI.handleTouchStart, false);\n };\n\n publicAPI.unbindEvents = () => {\n interactionRegistration(false);\n model.container.removeEventListener('contextmenu', preventDefault);\n // model.container.removeEventListener('click', preventDefault); // Avoid stopping event propagation\n model.container.removeEventListener('wheel', publicAPI.handleWheel);\n model.container.removeEventListener(\n 'DOMMouseScroll',\n publicAPI.handleWheel\n );\n model.container.removeEventListener('mousemove', publicAPI.handleMouseMove);\n model.container.removeEventListener('mousedown', publicAPI.handleMouseDown);\n document\n .querySelector('body')\n .removeEventListener('keypress', publicAPI.handleKeyPress);\n document\n .querySelector('body')\n .removeEventListener('keydown', publicAPI.handleKeyDown);\n document\n .querySelector('body')\n .removeEventListener('keyup', publicAPI.handleKeyUp);\n model.container.removeEventListener(\n 'touchstart',\n publicAPI.handleTouchStart\n );\n model.container = null;\n };\n\n publicAPI.handleKeyPress = (event) => {\n const data = getKeysFor(event);\n publicAPI.keyPressEvent(data);\n };\n\n publicAPI.handleKeyDown = (event) => {\n const data = getKeysFor(event);\n publicAPI.keyDownEvent(data);\n };\n\n publicAPI.handleKeyUp = (event) => {\n const data = getKeysFor(event);\n publicAPI.keyUpEvent(data);\n };\n\n publicAPI.handleMouseDown = (event) => {\n interactionRegistration(true);\n event.stopPropagation();\n event.preventDefault();\n\n const callData = {\n position: getScreenEventPositionFor(event),\n };\n const keys = getModifierKeysFor(event);\n Object.assign(callData, keys);\n switch (event.which) {\n case 1:\n publicAPI.leftButtonPressEvent(callData);\n break;\n case 2:\n publicAPI.middleButtonPressEvent(callData);\n break;\n case 3:\n publicAPI.rightButtonPressEvent(callData);\n break;\n default:\n vtkErrorMacro(`Unknown mouse button pressed: ${event.which}`);\n break;\n }\n };\n\n //----------------------------------------------------------------------\n function forceRender() {\n if (model.view && model.enabled && model.enableRender) {\n model.inRender = true;\n model.view.traverseAllPasses();\n model.inRender = false;\n }\n // outside the above test so that third-party code can redirect\n // the render to the appropriate class\n publicAPI.invokeRenderEvent();\n }\n\n publicAPI.requestAnimation = (requestor) => {\n if (requestor === undefined) {\n vtkErrorMacro(`undefined requester, can not start animating`);\n return;\n }\n if (animationRequesters.has(requestor)) {\n vtkWarningMacro(`requester is already registered for animating`);\n return;\n }\n animationRequesters.add(requestor);\n if (animationRequesters.size === 1) {\n model.lastFrameTime = 0.1;\n model.lastFrameStart = Date.now();\n model.animationRequest = requestAnimationFrame(publicAPI.handleAnimation);\n publicAPI.startAnimationEvent();\n }\n };\n\n publicAPI.isAnimating = () =>\n model.vrAnimation || model.animationRequest !== null;\n\n publicAPI.cancelAnimation = (requestor, skipWarning = false) => {\n if (!animationRequesters.has(requestor)) {\n if (!skipWarning) {\n const requestStr =\n requestor && requestor.getClassName\n ? requestor.getClassName()\n : requestor;\n vtkWarningMacro(`${requestStr} did not request an animation`);\n }\n\n return;\n }\n animationRequesters.delete(requestor);\n if (model.animationRequest && animationRequesters.size === 0) {\n cancelAnimationFrame(model.animationRequest);\n model.animationRequest = null;\n publicAPI.endAnimationEvent();\n publicAPI.render();\n }\n };\n\n publicAPI.switchToVRAnimation = () => {\n // cancel existing animation if any\n if (model.animationRequest) {\n cancelAnimationFrame(model.animationRequest);\n model.animationRequest = null;\n }\n model.vrAnimation = true;\n };\n\n publicAPI.returnFromVRAnimation = () => {\n model.vrAnimation = false;\n };\n\n publicAPI.updateGamepads = (displayId) => {\n const gamepads = navigator.getGamepads();\n\n // watch for when buttons change state and fire events\n for (let i = 0; i < gamepads.length; ++i) {\n const gp = gamepads[i];\n if (gp && gp.displayId === displayId) {\n if (!(gp.index in model.lastGamepadValues)) {\n model.lastGamepadValues[gp.index] = { buttons: {} };\n }\n for (let b = 0; b < gp.buttons.length; ++b) {\n if (!(b in model.lastGamepadValues[gp.index].buttons)) {\n model.lastGamepadValues[gp.index].buttons[b] = false;\n }\n if (\n model.lastGamepadValues[gp.index].buttons[b] !==\n gp.buttons[b].pressed\n ) {\n publicAPI.button3DEvent({\n gamepad: gp,\n position: gp.pose.position,\n orientation: gp.pose.orientation,\n pressed: gp.buttons[b].pressed,\n device:\n gp.hand === 'left'\n ? Device.LeftController\n : Device.RightController,\n input:\n deviceInputMap[gp.id] && deviceInputMap[gp.id][b]\n ? deviceInputMap[gp.id][b]\n : Input.Trigger,\n });\n model.lastGamepadValues[gp.index].buttons[b] =\n gp.buttons[b].pressed;\n }\n if (model.lastGamepadValues[gp.index].buttons[b]) {\n publicAPI.move3DEvent({\n gamepad: gp,\n position: gp.pose.position,\n orientation: gp.pose.orientation,\n device:\n gp.hand === 'left'\n ? Device.LeftController\n : Device.RightController,\n });\n }\n }\n }\n }\n };\n\n publicAPI.handleMouseMove = (event) => {\n // Do not consume event for move\n // event.stopPropagation();\n // event.preventDefault();\n\n const callData = {\n position: getScreenEventPositionFor(event),\n };\n const keys = getModifierKeysFor(event);\n Object.assign(callData, keys);\n\n if (model.moveTimeoutID === 0) {\n publicAPI.startMouseMoveEvent(callData);\n } else {\n publicAPI.mouseMoveEvent(callData);\n clearTimeout(model.moveTimeoutID);\n }\n\n // start a timer to keep us animating while we get mouse move events\n model.moveTimeoutID = setTimeout(() => {\n publicAPI.endMouseMoveEvent();\n model.moveTimeoutID = 0;\n }, 200);\n };\n\n publicAPI.handleAnimation = () => {\n const currTime = Date.now();\n if (model.FrameTime === -1.0) {\n model.lastFrameTime = 0.1;\n } else {\n model.lastFrameTime = (currTime - model.lastFrameStart) / 1000.0;\n }\n model.lastFrameTime = Math.max(0.01, model.lastFrameTime);\n model.lastFrameStart = currTime;\n publicAPI.animationEvent();\n forceRender();\n model.animationRequest = requestAnimationFrame(publicAPI.handleAnimation);\n };\n\n publicAPI.handleWheel = (event) => {\n event.stopPropagation();\n event.preventDefault();\n\n /**\n * wheel event values can vary significantly across browsers, platforms\n * and devices [1]. `normalizeWheel` uses facebook's solution from their\n * fixed-data-table repository [2].\n *\n * [1] https://developer.mozilla.org/en-US/docs/Web/Events/mousewheel\n * [2] https://github.com/facebookarchive/fixed-data-table/blob/master/src/vendor_upstream/dom/normalizeWheel.js\n *\n * This code will return an object with properties:\n *\n * spinX -- normalized spin speed (use for zoom) - x plane\n * spinY -- \" - y plane\n * pixelX -- normalized distance (to pixels) - x plane\n * pixelY -- \" - y plane\n *\n */\n const callData = normalizeWheel(event);\n\n if (model.wheelTimeoutID === 0) {\n publicAPI.startMouseWheelEvent(callData);\n } else {\n publicAPI.mouseWheelEvent(callData);\n clearTimeout(model.wheelTimeoutID);\n }\n\n // start a timer to keep us animating while we get wheel events\n model.wheelTimeoutID = setTimeout(() => {\n publicAPI.endMouseWheelEvent();\n model.wheelTimeoutID = 0;\n }, 200);\n };\n\n publicAPI.handleMouseUp = (event) => {\n interactionRegistration(false);\n event.stopPropagation();\n event.preventDefault();\n\n const callData = {\n position: getScreenEventPositionFor(event),\n };\n const keys = getModifierKeysFor(event);\n Object.assign(callData, keys);\n switch (event.which) {\n case 1:\n publicAPI.leftButtonReleaseEvent(callData);\n break;\n case 2:\n publicAPI.middleButtonReleaseEvent(callData);\n break;\n case 3:\n publicAPI.rightButtonReleaseEvent(callData);\n break;\n default:\n vtkErrorMacro(`Unknown mouse button released: ${event.which}`);\n break;\n }\n };\n\n publicAPI.handleTouchStart = (event) => {\n interactionRegistration(true);\n event.stopPropagation();\n event.preventDefault();\n\n // If multitouch\n if (model.recognizeGestures && event.touches.length > 1) {\n const positions = getTouchEventPositionsFor(event.touches);\n // did we just transition to multitouch?\n if (event.touches.length === 2) {\n const touch = event.touches[0];\n const callData = {\n position: getScreenEventPositionFor(touch),\n shiftKey: false,\n altKey: false,\n controlKey: false,\n };\n publicAPI.leftButtonReleaseEvent(callData);\n }\n // handle the gesture\n publicAPI.recognizeGesture('TouchStart', positions);\n } else {\n const touch = event.touches[0];\n const callData = {\n position: getScreenEventPositionFor(touch),\n shiftKey: false,\n altKey: false,\n controlKey: false,\n };\n publicAPI.leftButtonPressEvent(callData);\n }\n };\n\n publicAPI.handleTouchMove = (event) => {\n event.stopPropagation();\n event.preventDefault();\n\n if (model.recognizeGestures && event.touches.length > 1) {\n const positions = getTouchEventPositionsFor(event.touches);\n publicAPI.recognizeGesture('TouchMove', positions);\n } else {\n const touch = event.touches[0];\n const callData = {\n position: getScreenEventPositionFor(touch),\n shiftKey: false,\n altKey: false,\n controlKey: false,\n };\n publicAPI.mouseMoveEvent(callData);\n }\n };\n\n publicAPI.handleTouchEnd = (event) => {\n event.stopPropagation();\n event.preventDefault();\n\n if (model.recognizeGestures) {\n // No more fingers down\n if (event.touches.length === 0) {\n // If just one finger released, consider as left button\n if (event.changedTouches.length === 1) {\n const touch = event.changedTouches[0];\n const callData = {\n position: getScreenEventPositionFor(touch),\n shiftKey: false,\n altKey: false,\n controlKey: false,\n };\n publicAPI.leftButtonReleaseEvent(callData);\n interactionRegistration(false);\n } else {\n // If more than one finger released, recognize touchend\n const positions = getTouchEventPositionsFor(event.changedTouches);\n publicAPI.recognizeGesture('TouchEnd', positions);\n interactionRegistration(false);\n }\n } else if (event.touches.length === 1) {\n // If one finger left, end touch and start button press\n const positions = getTouchEventPositionsFor(event.changedTouches);\n publicAPI.recognizeGesture('TouchEnd', positions);\n const touch = event.touches[0];\n const callData = {\n position: getScreenEventPositionFor(touch),\n shiftKey: false,\n altKey: false,\n controlKey: false,\n };\n publicAPI.leftButtonPressEvent(callData);\n } else {\n // If more than one finger left, keep touch move\n const positions = getTouchEventPositionsFor(event.touches);\n publicAPI.recognizeGesture('TouchMove', positions);\n }\n } else {\n const touch = event.changedTouches[0];\n const callData = {\n position: getScreenEventPositionFor(touch),\n shiftKey: false,\n altKey: false,\n controlKey: false,\n };\n publicAPI.leftButtonReleaseEvent(callData);\n interactionRegistration(false);\n }\n };\n\n publicAPI.setView = (val) => {\n if (model.view === val) {\n return;\n }\n model.view = val;\n model.view.getRenderable().setInteractor(publicAPI);\n publicAPI.modified();\n };\n\n publicAPI.findPokedRenderer = (x = 0, y = 0) => {\n if (!model.view) {\n return null;\n }\n const rc = model.view.getRenderable().getRenderersByReference();\n let interactiveren = null;\n let viewportren = null;\n let currentRenderer = null;\n\n let count = rc.length;\n while (count--) {\n const aren = rc[count];\n if (model.view.isInViewport(x, y, aren) && aren.getInteractive()) {\n currentRenderer = aren;\n }\n\n if (interactiveren === null && aren.getInteractive()) {\n // Save this renderer in case we can't find one in the viewport that\n // is interactive.\n interactiveren = aren;\n }\n if (viewportren === null && model.view.isInViewport(x, y, aren)) {\n // Save this renderer in case we can't find one in the viewport that\n // is interactive.\n viewportren = aren;\n }\n }\n\n // We must have a value. If we found an interactive renderer before, that's\n // better than a non-interactive renderer.\n if (currentRenderer === null) {\n currentRenderer = interactiveren;\n }\n\n // We must have a value. If we found a renderer that is in the viewport,\n // that is better than any old viewport (but not as good as an interactive\n // one).\n if (currentRenderer === null) {\n currentRenderer = viewportren;\n }\n\n // We must have a value - take anything.\n if (currentRenderer == null) {\n currentRenderer = rc[0];\n }\n\n return currentRenderer;\n };\n\n // only render if we are not animating. If we are animating\n // then renders will happen naturally anyhow and we definitely\n // do not want extra renders as the make the apparent interaction\n // rate slower.\n publicAPI.render = () => {\n if (model.animationRequest === null && !model.inRender) {\n forceRender();\n }\n };\n\n // create the generic Event methods\n handledEvents.forEach((eventName) => {\n const lowerFirst = eventName.charAt(0).toLowerCase() + eventName.slice(1);\n publicAPI[`${lowerFirst}Event`] = (arg) => {\n // Check that interactor enabled\n if (!model.enabled) {\n return;\n }\n\n // Check that a poked renderer exists\n const renderer = publicAPI.getCurrentRenderer();\n if (!renderer) {\n vtkOnceErrorMacro(`\n Can not forward events without a current renderer on the interactor.\n `);\n return;\n }\n\n // Pass the eventName and the poked renderer\n const callData = {\n type: eventName,\n pokedRenderer: model.currentRenderer,\n };\n\n // Add the arguments to the call data\n Object.assign(callData, arg);\n\n // Call invoke\n publicAPI[`invoke${eventName}`](callData);\n };\n });\n\n // we know we are in multitouch now, so start recognizing\n publicAPI.recognizeGesture = (event, positions) => {\n // more than two pointers we ignore\n if (Object.keys(positions).length > 2) {\n return;\n }\n\n if (!model.startingEventPositions) {\n model.startingEventPositions = {};\n }\n\n // store the initial positions\n if (event === 'TouchStart') {\n Object.keys(positions).forEach((key) => {\n model.startingEventPositions[key] = positions[key];\n });\n // we do not know what the gesture is yet\n model.currentGesture = 'Start';\n return;\n }\n\n // end the gesture if needed\n if (event === 'TouchEnd') {\n if (model.currentGesture === 'Pinch') {\n publicAPI.render();\n publicAPI.endPinchEvent();\n }\n if (model.currentGesture === 'Rotate') {\n publicAPI.render();\n publicAPI.endRotateEvent();\n }\n if (model.currentGesture === 'Pan') {\n publicAPI.render();\n publicAPI.endPanEvent();\n }\n model.currentGesture = 'Start';\n model.startingEventPositions = {};\n return;\n }\n\n // what are the two pointers we are working with\n let count = 0;\n const posVals = [];\n const startVals = [];\n Object.keys(positions).forEach((key) => {\n posVals[count] = positions[key];\n startVals[count] = model.startingEventPositions[key];\n count++;\n });\n\n // The meat of the algorithm\n // on move events we analyze them to determine what type\n // of movement it is and then deal with it.\n // calculate the distances\n const originalDistance = Math.sqrt(\n (startVals[0].x - startVals[1].x) * (startVals[0].x - startVals[1].x) +\n (startVals[0].y - startVals[1].y) * (startVals[0].y - startVals[1].y)\n );\n const newDistance = Math.sqrt(\n (posVals[0].x - posVals[1].x) * (posVals[0].x - posVals[1].x) +\n (posVals[0].y - posVals[1].y) * (posVals[0].y - posVals[1].y)\n );\n\n // calculate rotations\n let originalAngle = vtkMath.degreesFromRadians(\n Math.atan2(\n startVals[1].y - startVals[0].y,\n startVals[1].x - startVals[0].x\n )\n );\n let newAngle = vtkMath.degreesFromRadians(\n Math.atan2(posVals[1].y - posVals[0].y, posVals[1].x - posVals[0].x)\n );\n\n // angles are cyclic so watch for that, 1 and 359 are only 2 apart :)\n let angleDeviation = newAngle - originalAngle;\n newAngle = newAngle + 180.0 >= 360.0 ? newAngle - 180.0 : newAngle + 180.0;\n originalAngle =\n originalAngle + 180.0 >= 360.0\n ? originalAngle - 180.0\n : originalAngle + 180.0;\n if (Math.abs(newAngle - originalAngle) < Math.abs(angleDeviation)) {\n angleDeviation = newAngle - originalAngle;\n }\n\n // calculate the translations\n const trans = [];\n trans[0] =\n (posVals[0].x - startVals[0].x + posVals[1].x - startVals[1].x) / 2.0;\n trans[1] =\n (posVals[0].y - startVals[0].y + posVals[1].y - startVals[1].y) / 2.0;\n\n if (event === 'TouchMove') {\n // OK we want to\n // - immediately respond to the user\n // - allow the user to zoom without panning (saves focal point)\n // - allow the user to rotate without panning (saves focal point)\n\n // do we know what gesture we are doing yet? If not\n // see if we can figure it out\n if (model.currentGesture === 'Start') {\n // pinch is a move to/from the center point\n // rotate is a move along the circumference\n // pan is a move of the center point\n // compute the distance along each of these axes in pixels\n // the first to break thresh wins\n let thresh =\n 0.01 *\n Math.sqrt(\n model.container.clientWidth * model.container.clientWidth +\n model.container.clientHeight * model.container.clientHeight\n );\n if (thresh < 15.0) {\n thresh = 15.0;\n }\n const pinchDistance = Math.abs(newDistance - originalDistance);\n const rotateDistance =\n newDistance * 3.1415926 * Math.abs(angleDeviation) / 360.0;\n const panDistance = Math.sqrt(\n trans[0] * trans[0] + trans[1] * trans[1]\n );\n if (\n pinchDistance > thresh &&\n pinchDistance > rotateDistance &&\n pinchDistance > panDistance\n ) {\n model.currentGesture = 'Pinch';\n const callData = {\n scale: 1.0,\n touches: positions,\n };\n publicAPI.startPinchEvent(callData);\n } else if (rotateDistance > thresh && rotateDistance > panDistance) {\n model.currentGesture = 'Rotate';\n const callData = {\n rotation: 0.0,\n touches: positions,\n };\n publicAPI.startRotateEvent(callData);\n } else if (panDistance > thresh) {\n model.currentGesture = 'Pan';\n const callData = {\n translation: [0, 0],\n touches: positions,\n };\n publicAPI.startPanEvent(callData);\n }\n } else {\n // if we have found a specific type of movement then\n // handle it\n if (model.currentGesture === 'Rotate') {\n const callData = {\n rotation: angleDeviation,\n touches: positions,\n };\n publicAPI.rotateEvent(callData);\n }\n\n if (model.currentGesture === 'Pinch') {\n const callData = {\n scale: newDistance / originalDistance,\n touches: positions,\n };\n publicAPI.pinchEvent(callData);\n }\n\n if (model.currentGesture === 'Pan') {\n const callData = {\n translation: trans,\n touches: positions,\n };\n publicAPI.panEvent(callData);\n }\n }\n }\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n renderWindow: null,\n interactorStyle: null,\n picker: null,\n pickingManager: null,\n initialized: false,\n enabled: false,\n enableRender: true,\n currentRenderer: null,\n lightFollowCamera: true,\n desiredUpdateRate: 30.0,\n stillUpdateRate: 2.0,\n container: null,\n view: null,\n recognizeGestures: true,\n currentGesture: 'Start',\n animationRequest: null,\n lastFrameTime: 0.1,\n wheelTimeoutID: 0,\n moveTimeoutID: 0,\n lastGamepadValues: {},\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Object methods\n macro.obj(publicAPI, model);\n\n macro.event(publicAPI, model, 'RenderEvent');\n handledEvents.forEach((eventName) =>\n macro.event(publicAPI, model, eventName)\n );\n\n // Create get-only macros\n macro.get(publicAPI, model, [\n 'initialized',\n 'container',\n 'enabled',\n 'enableRender',\n 'interactorStyle',\n 'lastFrameTime',\n 'view',\n ]);\n\n // Create get-set macros\n macro.setGet(publicAPI, model, [\n 'lightFollowCamera',\n 'enabled',\n 'recognizeGestures',\n 'desiredUpdateRate',\n 'stillUpdateRate',\n 'picker',\n ]);\n\n // For more macro methods, see \"Sources/macro.js\"\n\n // Object specific methods\n vtkRenderWindowInteractor(publicAPI, model);\n\n publicAPI.setInteractorStyle(vtkInteractorStyleTrackballCamera.newInstance());\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(\n extend,\n 'vtkRenderWindowInteractor'\n);\n\n// ----------------------------------------------------------------------------\n\nexport default Object.assign({ newInstance, extend, handledEvents }, Constants);\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/Core/RenderWindowInteractor/index.js","export const States = {\n IS_START: 0,\n IS_NONE: 0,\n\n IS_ROTATE: 1,\n IS_PAN: 2,\n IS_SPIN: 3,\n IS_DOLLY: 4,\n\n IS_CAMERA_POSE: 11,\n\n IS_WINDOW_LEVEL: 1024,\n IS_SLICE: 1025,\n};\n\nexport default {\n States,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/Core/InteractorStyle/Constants.js","export const Device = {\n Unknown: 0,\n LeftController: 1,\n RightController: 2,\n};\n\nexport const Input = {\n Unknown: 0,\n Trigger: 1,\n TrackPad: 2,\n Grip: 3,\n ApplicationMenu: 4,\n};\n\nexport default {\n Device,\n Input,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/Core/RenderWindowInteractor/Constants.js","'use strict';\n\n// Note: adler32 takes 12% for level 0 and 2% for level 6.\n// It isn't worth it to make additional optimizations as in original.\n// Small size is preferable.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction adler32(adler, buf, len, pos) {\n var s1 = (adler & 0xffff) |0,\n s2 = ((adler >>> 16) & 0xffff) |0,\n n = 0;\n\n while (len !== 0) {\n // Set limit ~ twice less than 5552, to keep\n // s2 in 31-bits, because we force signed ints.\n // in other case %= will fail.\n n = len > 2000 ? 2000 : len;\n len -= n;\n\n do {\n s1 = (s1 + buf[pos++]) |0;\n s2 = (s2 + s1) |0;\n } while (--n);\n\n s1 %= 65521;\n s2 %= 65521;\n }\n\n return (s1 | (s2 << 16)) |0;\n}\n\n\nmodule.exports = adler32;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/pako/lib/zlib/adler32.js\n// module id = 284\n// module chunks = 1","'use strict';\n\n// Note: we can't get significant speed boost here.\n// So write code to minimize size - no pregenerated tables\n// and array tools dependencies.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// Use ordinary array, since untyped makes no boost here\nfunction makeTable() {\n var c, table = [];\n\n for (var n = 0; n < 256; n++) {\n c = n;\n for (var k = 0; k < 8; k++) {\n c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n }\n table[n] = c;\n }\n\n return table;\n}\n\n// Create table on load. Just 255 signed longs. Not a problem.\nvar crcTable = makeTable();\n\n\nfunction crc32(crc, buf, len, pos) {\n var t = crcTable,\n end = pos + len;\n\n crc ^= -1;\n\n for (var i = pos; i < end; i++) {\n crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n}\n\n\nmodule.exports = crc32;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/pako/lib/zlib/crc32.js\n// module id = 285\n// module chunks = 1","// String encode/decode helpers\n'use strict';\n\n\nvar utils = require('./common');\n\n\n// Quick check if we can use fast array to bin string conversion\n//\n// - apply(Array) can fail on Android 2.2\n// - apply(Uint8Array) can fail on iOS 5.1 Safari\n//\nvar STR_APPLY_OK = true;\nvar STR_APPLY_UIA_OK = true;\n\ntry { String.fromCharCode.apply(null, [ 0 ]); } catch (__) { STR_APPLY_OK = false; }\ntry { String.fromCharCode.apply(null, new Uint8Array(1)); } catch (__) { STR_APPLY_UIA_OK = false; }\n\n\n// Table with utf8 lengths (calculated by first byte of sequence)\n// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n// because max possible codepoint is 0x10ffff\nvar _utf8len = new utils.Buf8(256);\nfor (var q = 0; q < 256; q++) {\n _utf8len[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1);\n}\n_utf8len[254] = _utf8len[254] = 1; // Invalid sequence start\n\n\n// convert string to array (typed, when possible)\nexports.string2buf = function (str) {\n var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n // count binary size\n for (m_pos = 0; m_pos < str_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n }\n\n // allocate buffer\n buf = new utils.Buf8(buf_len);\n\n // convert\n for (i = 0, m_pos = 0; i < buf_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n if (c < 0x80) {\n /* one byte */\n buf[i++] = c;\n } else if (c < 0x800) {\n /* two bytes */\n buf[i++] = 0xC0 | (c >>> 6);\n buf[i++] = 0x80 | (c & 0x3f);\n } else if (c < 0x10000) {\n /* three bytes */\n buf[i++] = 0xE0 | (c >>> 12);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n } else {\n /* four bytes */\n buf[i++] = 0xf0 | (c >>> 18);\n buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n }\n }\n\n return buf;\n};\n\n// Helper (used in 2 places)\nfunction buf2binstring(buf, len) {\n // use fallback for big arrays to avoid stack overflow\n if (len < 65537) {\n if ((buf.subarray && STR_APPLY_UIA_OK) || (!buf.subarray && STR_APPLY_OK)) {\n return String.fromCharCode.apply(null, utils.shrinkBuf(buf, len));\n }\n }\n\n var result = '';\n for (var i = 0; i < len; i++) {\n result += String.fromCharCode(buf[i]);\n }\n return result;\n}\n\n\n// Convert byte array to binary string\nexports.buf2binstring = function (buf) {\n return buf2binstring(buf, buf.length);\n};\n\n\n// Convert binary string (typed, when possible)\nexports.binstring2buf = function (str) {\n var buf = new utils.Buf8(str.length);\n for (var i = 0, len = buf.length; i < len; i++) {\n buf[i] = str.charCodeAt(i);\n }\n return buf;\n};\n\n\n// convert array to string\nexports.buf2string = function (buf, max) {\n var i, out, c, c_len;\n var len = max || buf.length;\n\n // Reserve max possible length (2 words per char)\n // NB: by unknown reasons, Array is significantly faster for\n // String.fromCharCode.apply than Uint16Array.\n var utf16buf = new Array(len * 2);\n\n for (out = 0, i = 0; i < len;) {\n c = buf[i++];\n // quick process ascii\n if (c < 0x80) { utf16buf[out++] = c; continue; }\n\n c_len = _utf8len[c];\n // skip 5 & 6 byte codes\n if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; }\n\n // apply mask on first byte\n c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n // join the rest\n while (c_len > 1 && i < len) {\n c = (c << 6) | (buf[i++] & 0x3f);\n c_len--;\n }\n\n // terminated by end of string?\n if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n if (c < 0x10000) {\n utf16buf[out++] = c;\n } else {\n c -= 0x10000;\n utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n }\n }\n\n return buf2binstring(utf16buf, out);\n};\n\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max - length limit (mandatory);\nexports.utf8border = function (buf, max) {\n var pos;\n\n max = max || buf.length;\n if (max > buf.length) { max = buf.length; }\n\n // go back from last position, until start of sequence found\n pos = max - 1;\n while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n // Very small and broken sequence,\n // return max, because we should return something anyway.\n if (pos < 0) { return max; }\n\n // If we came to start of buffer - that means buffer is too small,\n // return max too.\n if (pos === 0) { return max; }\n\n return (pos + _utf8len[buf[pos]] > max) ? pos : max;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/pako/lib/utils/strings.js\n// module id = 286\n// module chunks = 1","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction ZStream() {\n /* next input byte */\n this.input = null; // JS specific, because we have no pointers\n this.next_in = 0;\n /* number of bytes available at input */\n this.avail_in = 0;\n /* total number of input bytes read so far */\n this.total_in = 0;\n /* next output byte should be put there */\n this.output = null; // JS specific, because we have no pointers\n this.next_out = 0;\n /* remaining free space at output */\n this.avail_out = 0;\n /* total number of bytes output so far */\n this.total_out = 0;\n /* last error message, NULL if no error */\n this.msg = ''/*Z_NULL*/;\n /* not visible by applications */\n this.state = null;\n /* best guess about the data type: binary or text */\n this.data_type = 2/*Z_UNKNOWN*/;\n /* adler32 value of the uncompressed data */\n this.adler = 0;\n}\n\nmodule.exports = ZStream;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/pako/lib/zlib/zstream.js\n// module id = 287\n// module chunks = 1","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n\n /* Allowed flush values; see deflate() and inflate() below for details */\n Z_NO_FLUSH: 0,\n Z_PARTIAL_FLUSH: 1,\n Z_SYNC_FLUSH: 2,\n Z_FULL_FLUSH: 3,\n Z_FINISH: 4,\n Z_BLOCK: 5,\n Z_TREES: 6,\n\n /* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\n Z_OK: 0,\n Z_STREAM_END: 1,\n Z_NEED_DICT: 2,\n Z_ERRNO: -1,\n Z_STREAM_ERROR: -2,\n Z_DATA_ERROR: -3,\n //Z_MEM_ERROR: -4,\n Z_BUF_ERROR: -5,\n //Z_VERSION_ERROR: -6,\n\n /* compression levels */\n Z_NO_COMPRESSION: 0,\n Z_BEST_SPEED: 1,\n Z_BEST_COMPRESSION: 9,\n Z_DEFAULT_COMPRESSION: -1,\n\n\n Z_FILTERED: 1,\n Z_HUFFMAN_ONLY: 2,\n Z_RLE: 3,\n Z_FIXED: 4,\n Z_DEFAULT_STRATEGY: 0,\n\n /* Possible values of the data_type field (though see inflate()) */\n Z_BINARY: 0,\n Z_TEXT: 1,\n //Z_ASCII: 1, // = Z_TEXT (deprecated)\n Z_UNKNOWN: 2,\n\n /* The deflate compression method */\n Z_DEFLATED: 8\n //Z_NULL: null // Use -1 or null inline, depending on var type\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/pako/lib/zlib/constants.js\n// module id = 288\n// module chunks = 1","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/isarray/index.js\n// module id = 289\n// module chunks = 1","/*\n * This file is used by module bundlers (browserify/webpack/etc) when\n * including a stream implementation. We use \"readable-stream\" to get a\n * consistent behavior between nodejs versions but bundlers often have a shim\n * for \"stream\". Using this shim greatly improve the compatibility and greatly\n * reduce the final size of the bundle (only one stream implementation, not\n * two).\n */\nmodule.exports = require(\"stream\");\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/lib/readable-stream-browser.js\n// module id = 290\n// module chunks = 1","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/*<replacement>*/\n\nvar processNextTick = require('process-nextick-args');\n/*</replacement>*/\n\nmodule.exports = Readable;\n\n/*<replacement>*/\nvar isArray = require('isarray');\n/*</replacement>*/\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n\n/*<replacement>*/\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function (emitter, type) {\n return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n// TODO(bmeurer): Change this back to const once hole checks are\n// properly optimized away early in Ignition+TurboFan.\n/*<replacement>*/\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/*</replacement>*/\n\n/*<replacement>*/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/*</replacement>*/\n\n/*<replacement>*/\nvar debugUtil = require('util');\nvar debug = void 0;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function () {};\n}\n/*</replacement>*/\n\nvar BufferList = require('./internal/streams/BufferList');\nvar destroyImpl = require('./internal/streams/destroy');\nvar StringDecoder;\n\nutil.inherits(Readable, Stream);\n\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') {\n return emitter.prependListener(event, fn);\n } else {\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n }\n}\n\nfunction ReadableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n\n if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n var hwm = options.highWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n if (!(this instanceof Readable)) return new Readable(options);\n\n this._readableState = new ReadableState(options, this);\n\n // legacy\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\n\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n this.push(null);\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n stream.emit('error', new Error('stream.push() after EOF'));\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n }\n\n return needMoreData(state);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n stream.emit('data', chunk);\n stream.read(0);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n}\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n return this;\n};\n\n// Don't raise the hwm > 8MB\nvar MAX_HWM = 0x800000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n } else {\n state.length -= n;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n\n // emit 'readable' now to make sure it gets picked up.\n emitReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream);\n }\n}\n\nfunction emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n processNextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;else len = state.length;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n this.emit('error', new Error('_read() is not implemented'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn);\n\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n // If the user pushes more data while we're writing to dest then we'll end up\n // in ondata again. However, we only want to increase awaitDrain once because\n // dest will only emit one 'drain' event for the multiple writes.\n // => Introduce a guard on increasing awaitDrain.\n var increasedAwaitDrain = false;\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n increasedAwaitDrain = false;\n var ret = dest.write(chunk);\n if (false === ret && !increasedAwaitDrain) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', src._readableState.awaitDrain);\n src._readableState.awaitDrain++;\n increasedAwaitDrain = true;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function () {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = { hasUnpiped: false };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, unpipeInfo);\n }return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n\n dest.emit('unpipe', this, unpipeInfo);\n\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n\n if (ev === 'data') {\n // Start flowing on next tick if stream isn't explicitly paused\n if (this._readableState.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n var state = this._readableState;\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.emittedReadable = false;\n if (!state.reading) {\n processNextTick(nReadingNextTick, this);\n } else if (state.length) {\n emitReadable(this);\n }\n }\n }\n\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n state.flowing = true;\n resume(this, state);\n }\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n processNextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n if (!state.reading) {\n debug('resume read 0');\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n state.awaitDrain = 0;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null) {}\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var state = this._readableState;\n var paused = false;\n\n var self = this;\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) self.push(chunk);\n }\n\n self.push(null);\n });\n\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = self.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function (method) {\n return function () {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], self.emit.bind(self, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n self._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return self;\n};\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = fromListPartial(n, state.buffer, state.decoder);\n }\n\n return ret;\n}\n\n// Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromListPartial(n, list, hasStrings) {\n var ret;\n if (n < list.head.data.length) {\n // slice is the same for buffers and strings\n ret = list.head.data.slice(0, n);\n list.head.data = list.head.data.slice(n);\n } else if (n === list.head.data.length) {\n // first chunk is a perfect match\n ret = list.shift();\n } else {\n // result spans more than one buffer\n ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n }\n return ret;\n}\n\n// Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBufferString(n, list) {\n var p = list.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\n// Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBuffer(n, list) {\n var ret = Buffer.allocUnsafe(n);\n var p = list.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n\n // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n if (!state.endEmitted) {\n state.ended = true;\n processNextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n}\n\nfunction forEach(xs, f) {\n for (var i = 0, l = xs.length; i < l; i++) {\n f(xs[i], i);\n }\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/readable-stream/lib/_stream_readable.js\n// module id = 291\n// module chunks = 1","module.exports = require('events').EventEmitter;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/readable-stream/lib/internal/streams/stream-browser.js\n// module id = 292\n// module chunks = 1","'use strict';\n\n/*<replacement>*/\n\nvar processNextTick = require('process-nextick-args');\n/*</replacement>*/\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {\n processNextTick(emitErrorNT, this, err);\n }\n return;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n processNextTick(emitErrorNT, _this, err);\n if (_this._writableState) {\n _this._writableState.errorEmitted = true;\n }\n } else if (cb) {\n cb(err);\n }\n });\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/readable-stream/lib/internal/streams/destroy.js\n// module id = 293\n// module chunks = 1","'use strict';\n\nvar Buffer = require('safe-buffer').Buffer;\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return -1;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// UTF-8 replacement characters ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd'.repeat(p);\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd'.repeat(p + 1);\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd'.repeat(p + 2);\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character for each buffered byte of a (partial)\n// character needs to be added to the output.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd'.repeat(this.lastTotal - this.lastNeed);\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/string_decoder/lib/string_decoder.js\n// module id = 294\n// module chunks = 1","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n\n/*<replacement>*/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nutil.inherits(Transform, Duplex);\n\nfunction TransformState(stream) {\n this.afterTransform = function (er, data) {\n return afterTransform(stream, er, data);\n };\n\n this.needTransform = false;\n this.transforming = false;\n this.writecb = null;\n this.writechunk = null;\n this.writeencoding = null;\n}\n\nfunction afterTransform(stream, er, data) {\n var ts = stream._transformState;\n ts.transforming = false;\n\n var cb = ts.writecb;\n\n if (!cb) {\n return stream.emit('error', new Error('write callback called multiple times'));\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n\n if (data !== null && data !== undefined) stream.push(data);\n\n cb(er);\n\n var rs = stream._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n stream._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n\n Duplex.call(this, options);\n\n this._transformState = new TransformState(this);\n\n var stream = this;\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.once('prefinish', function () {\n if (typeof this._flush === 'function') this._flush(function (er, data) {\n done(stream, er, data);\n });else done(stream);\n });\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n throw new Error('_transform() is not implemented');\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n var _this = this;\n\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n _this.emit('close');\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n\n if (data !== null && data !== undefined) stream.push(data);\n\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n var ws = stream._writableState;\n var ts = stream._transformState;\n\n if (ws.length) throw new Error('Calling transform done when ws.length != 0');\n\n if (ts.transforming) throw new Error('Calling transform done when still transforming');\n\n return stream.push(null);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/readable-stream/lib/_stream_transform.js\n// module id = 295\n// module chunks = 1","'use strict';\nvar utils = require('./utils');\nvar support = require('./support');\n// private property\nvar _keyStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\n\n// public method for encoding\nexports.encode = function(input) {\n var output = [];\n var chr1, chr2, chr3, enc1, enc2, enc3, enc4;\n var i = 0, len = input.length, remainingBytes = len;\n\n var isArray = utils.getTypeOf(input) !== \"string\";\n while (i < input.length) {\n remainingBytes = len - i;\n\n if (!isArray) {\n chr1 = input.charCodeAt(i++);\n chr2 = i < len ? input.charCodeAt(i++) : 0;\n chr3 = i < len ? input.charCodeAt(i++) : 0;\n } else {\n chr1 = input[i++];\n chr2 = i < len ? input[i++] : 0;\n chr3 = i < len ? input[i++] : 0;\n }\n\n enc1 = chr1 >> 2;\n enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n enc3 = remainingBytes > 1 ? (((chr2 & 15) << 2) | (chr3 >> 6)) : 64;\n enc4 = remainingBytes > 2 ? (chr3 & 63) : 64;\n\n output.push(_keyStr.charAt(enc1) + _keyStr.charAt(enc2) + _keyStr.charAt(enc3) + _keyStr.charAt(enc4));\n\n }\n\n return output.join(\"\");\n};\n\n// public method for decoding\nexports.decode = function(input) {\n var chr1, chr2, chr3;\n var enc1, enc2, enc3, enc4;\n var i = 0, resultIndex = 0;\n\n var dataUrlPrefix = \"data:\";\n\n if (input.substr(0, dataUrlPrefix.length) === dataUrlPrefix) {\n // This is a common error: people give a data url\n // (data:image/png;base64,iVBOR...) with a {base64: true} and\n // wonders why things don't work.\n // We can detect that the string input looks like a data url but we\n // *can't* be sure it is one: removing everything up to the comma would\n // be too dangerous.\n throw new Error(\"Invalid base64 input, it looks like a data url.\");\n }\n\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\");\n\n var totalLength = input.length * 3 / 4;\n if(input.charAt(input.length - 1) === _keyStr.charAt(64)) {\n totalLength--;\n }\n if(input.charAt(input.length - 2) === _keyStr.charAt(64)) {\n totalLength--;\n }\n if (totalLength % 1 !== 0) {\n // totalLength is not an integer, the length does not match a valid\n // base64 content. That can happen if:\n // - the input is not a base64 content\n // - the input is *almost* a base64 content, with a extra chars at the\n // beginning or at the end\n // - the input uses a base64 variant (base64url for example)\n throw new Error(\"Invalid base64 input, bad content length.\");\n }\n var output;\n if (support.uint8array) {\n output = new Uint8Array(totalLength|0);\n } else {\n output = new Array(totalLength|0);\n }\n\n while (i < input.length) {\n\n enc1 = _keyStr.indexOf(input.charAt(i++));\n enc2 = _keyStr.indexOf(input.charAt(i++));\n enc3 = _keyStr.indexOf(input.charAt(i++));\n enc4 = _keyStr.indexOf(input.charAt(i++));\n\n chr1 = (enc1 << 2) | (enc2 >> 4);\n chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);\n chr3 = ((enc3 & 3) << 6) | enc4;\n\n output[resultIndex++] = chr1;\n\n if (enc3 !== 64) {\n output[resultIndex++] = chr2;\n }\n if (enc4 !== 64) {\n output[resultIndex++] = chr3;\n }\n\n }\n\n return output;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/lib/base64.js\n// module id = 296\n// module chunks = 1","var core = module.exports = {version: '2.3.0'};\nif(typeof __e == 'number')__e = core; // eslint-disable-line no-undef\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/node_modules/core-js/library/modules/_core.js\n// module id = 297\n// module chunks = 1","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function(fn, that, length){\n aFunction(fn);\n if(that === undefined)return fn;\n switch(length){\n case 1: return function(a){\n return fn.call(that, a);\n };\n case 2: return function(a, b){\n return fn.call(that, a, b);\n };\n case 3: return function(a, b, c){\n return fn.call(that, a, b, c);\n };\n }\n return function(/* ...args */){\n return fn.apply(that, arguments);\n };\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/node_modules/core-js/library/modules/_ctx.js\n// module id = 298\n// module chunks = 1","module.exports = function(exec){\n try {\n return !!exec();\n } catch(e){\n return true;\n }\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/node_modules/core-js/library/modules/_fails.js\n// module id = 299\n// module chunks = 1","var isObject = require('./_is-object')\n , document = require('./_global').document\n // in old IE typeof document.createElement is 'object'\n , is = isObject(document) && isObject(document.createElement);\nmodule.exports = function(it){\n return is ? document.createElement(it) : {};\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/node_modules/core-js/library/modules/_dom-create.js\n// module id = 300\n// module chunks = 1","'use strict';\n\nvar utils = require('../utils');\nvar ConvertWorker = require('./ConvertWorker');\nvar GenericWorker = require('./GenericWorker');\nvar base64 = require('../base64');\nvar support = require(\"../support\");\nvar external = require(\"../external\");\n\nvar NodejsStreamOutputAdapter = null;\nif (support.nodestream) {\n try {\n NodejsStreamOutputAdapter = require('../nodejs/NodejsStreamOutputAdapter');\n } catch(e) {}\n}\n\n/**\n * Apply the final transformation of the data. If the user wants a Blob for\n * example, it's easier to work with an U8intArray and finally do the\n * ArrayBuffer/Blob conversion.\n * @param {String} resultType the name of the final type\n * @param {String} chunkType the type of the data in the given array.\n * @param {Array} dataArray the array containing the data chunks to concatenate\n * @param {String|Uint8Array|Buffer} content the content to transform\n * @param {String} mimeType the mime type of the content, if applicable.\n * @return {String|Uint8Array|ArrayBuffer|Buffer|Blob} the content in the right format.\n */\nfunction transformZipOutput(resultType, chunkType, dataArray, mimeType) {\n var content = null;\n switch(resultType) {\n case \"blob\" :\n return utils.newBlob(dataArray, mimeType);\n case \"base64\" :\n content = concat(chunkType, dataArray);\n return base64.encode(content);\n default :\n content = concat(chunkType, dataArray);\n return utils.transformTo(resultType, content);\n }\n}\n\n/**\n * Concatenate an array of data of the given type.\n * @param {String} type the type of the data in the given array.\n * @param {Array} dataArray the array containing the data chunks to concatenate\n * @return {String|Uint8Array|Buffer} the concatenated data\n * @throws Error if the asked type is unsupported\n */\nfunction concat (type, dataArray) {\n var i, index = 0, res = null, totalLength = 0;\n for(i = 0; i < dataArray.length; i++) {\n totalLength += dataArray[i].length;\n }\n switch(type) {\n case \"string\":\n return dataArray.join(\"\");\n case \"array\":\n return Array.prototype.concat.apply([], dataArray);\n case \"uint8array\":\n res = new Uint8Array(totalLength);\n for(i = 0; i < dataArray.length; i++) {\n res.set(dataArray[i], index);\n index += dataArray[i].length;\n }\n return res;\n case \"nodebuffer\":\n return Buffer.concat(dataArray);\n default:\n throw new Error(\"concat : unsupported type '\" + type + \"'\");\n }\n}\n\n/**\n * Listen a StreamHelper, accumulate its content and concatenate it into a\n * complete block.\n * @param {StreamHelper} helper the helper to use.\n * @param {Function} updateCallback a callback called on each update. Called\n * with one arg :\n * - the metadata linked to the update received.\n * @return Promise the promise for the accumulation.\n */\nfunction accumulate(helper, updateCallback) {\n return new external.Promise(function (resolve, reject){\n var dataArray = [];\n var chunkType = helper._internalType,\n resultType = helper._outputType,\n mimeType = helper._mimeType;\n helper\n .on('data', function (data, meta) {\n dataArray.push(data);\n if(updateCallback) {\n updateCallback(meta);\n }\n })\n .on('error', function(err) {\n dataArray = [];\n reject(err);\n })\n .on('end', function (){\n try {\n var result = transformZipOutput(resultType, chunkType, dataArray, mimeType);\n resolve(result);\n } catch (e) {\n reject(e);\n }\n dataArray = [];\n })\n .resume();\n });\n}\n\n/**\n * An helper to easily use workers outside of JSZip.\n * @constructor\n * @param {Worker} worker the worker to wrap\n * @param {String} outputType the type of data expected by the use\n * @param {String} mimeType the mime type of the content, if applicable.\n */\nfunction StreamHelper(worker, outputType, mimeType) {\n var internalType = outputType;\n switch(outputType) {\n case \"blob\":\n internalType = \"arraybuffer\";\n break;\n case \"arraybuffer\":\n internalType = \"uint8array\";\n break;\n case \"base64\":\n internalType = \"string\";\n break;\n }\n\n try {\n // the type used internally\n this._internalType = internalType;\n // the type used to output results\n this._outputType = outputType;\n // the mime type\n this._mimeType = mimeType;\n utils.checkSupport(internalType);\n this._worker = worker.pipe(new ConvertWorker(internalType));\n // the last workers can be rewired without issues but we need to\n // prevent any updates on previous workers.\n worker.lock();\n } catch(e) {\n this._worker = new GenericWorker(\"error\");\n this._worker.error(e);\n }\n}\n\nStreamHelper.prototype = {\n /**\n * Listen a StreamHelper, accumulate its content and concatenate it into a\n * complete block.\n * @param {Function} updateCb the update callback.\n * @return Promise the promise for the accumulation.\n */\n accumulate : function (updateCb) {\n return accumulate(this, updateCb);\n },\n /**\n * Add a listener on an event triggered on a stream.\n * @param {String} evt the name of the event\n * @param {Function} fn the listener\n * @return {StreamHelper} the current helper.\n */\n on : function (evt, fn) {\n var self = this;\n\n if(evt === \"data\") {\n this._worker.on(evt, function (chunk) {\n fn.call(self, chunk.data, chunk.meta);\n });\n } else {\n this._worker.on(evt, function () {\n utils.delay(fn, arguments, self);\n });\n }\n return this;\n },\n /**\n * Resume the flow of chunks.\n * @return {StreamHelper} the current helper.\n */\n resume : function () {\n utils.delay(this._worker.resume, [], this._worker);\n return this;\n },\n /**\n * Pause the flow of chunks.\n * @return {StreamHelper} the current helper.\n */\n pause : function () {\n this._worker.pause();\n return this;\n },\n /**\n * Return a nodejs stream for this helper.\n * @param {Function} updateCb the update callback.\n * @return {NodejsStreamOutputAdapter} the nodejs stream.\n */\n toNodejsStream : function (updateCb) {\n utils.checkSupport(\"nodestream\");\n if (this._outputType !== \"nodebuffer\") {\n // an object stream containing blob/arraybuffer/uint8array/string\n // is strange and I don't know if it would be useful.\n // I you find this comment and have a good usecase, please open a\n // bug report !\n throw new Error(this._outputType + \" is not supported by this method\");\n }\n\n return new NodejsStreamOutputAdapter(this, {\n objectMode : this._outputType !== \"nodebuffer\"\n }, updateCb);\n }\n};\n\n\nmodule.exports = StreamHelper;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/lib/stream/StreamHelper.js\n// module id = 301\n// module chunks = 1","'use strict';\nexports.base64 = false;\nexports.binary = false;\nexports.dir = false;\nexports.createFolders = true;\nexports.date = null;\nexports.compression = null;\nexports.compressionOptions = null;\nexports.comment = null;\nexports.unixPermissions = null;\nexports.dosPermissions = null;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/lib/defaults.js\n// module id = 302\n// module chunks = 1","'use strict';\n\nvar utils = require('../utils');\nvar GenericWorker = require('./GenericWorker');\n\n// the size of the generated chunks\n// TODO expose this as a public variable\nvar DEFAULT_BLOCK_SIZE = 16 * 1024;\n\n/**\n * A worker that reads a content and emits chunks.\n * @constructor\n * @param {Promise} dataP the promise of the data to split\n */\nfunction DataWorker(dataP) {\n GenericWorker.call(this, \"DataWorker\");\n var self = this;\n this.dataIsReady = false;\n this.index = 0;\n this.max = 0;\n this.data = null;\n this.type = \"\";\n\n this._tickScheduled = false;\n\n dataP.then(function (data) {\n self.dataIsReady = true;\n self.data = data;\n self.max = data && data.length || 0;\n self.type = utils.getTypeOf(data);\n if(!self.isPaused) {\n self._tickAndRepeat();\n }\n }, function (e) {\n self.error(e);\n });\n}\n\nutils.inherits(DataWorker, GenericWorker);\n\n/**\n * @see GenericWorker.cleanUp\n */\nDataWorker.prototype.cleanUp = function () {\n GenericWorker.prototype.cleanUp.call(this);\n this.data = null;\n};\n\n/**\n * @see GenericWorker.resume\n */\nDataWorker.prototype.resume = function () {\n if(!GenericWorker.prototype.resume.call(this)) {\n return false;\n }\n\n if (!this._tickScheduled && this.dataIsReady) {\n this._tickScheduled = true;\n utils.delay(this._tickAndRepeat, [], this);\n }\n return true;\n};\n\n/**\n * Trigger a tick a schedule an other call to this function.\n */\nDataWorker.prototype._tickAndRepeat = function() {\n this._tickScheduled = false;\n if(this.isPaused || this.isFinished) {\n return;\n }\n this._tick();\n if(!this.isFinished) {\n utils.delay(this._tickAndRepeat, [], this);\n this._tickScheduled = true;\n }\n};\n\n/**\n * Read and push a chunk.\n */\nDataWorker.prototype._tick = function() {\n\n if(this.isPaused || this.isFinished) {\n return false;\n }\n\n var size = DEFAULT_BLOCK_SIZE;\n var data = null, nextIndex = Math.min(this.max, this.index + size);\n if (this.index >= this.max) {\n // EOF\n return this.end();\n } else {\n switch(this.type) {\n case \"string\":\n data = this.data.substring(this.index, nextIndex);\n break;\n case \"uint8array\":\n data = this.data.subarray(this.index, nextIndex);\n break;\n case \"array\":\n case \"nodebuffer\":\n data = this.data.slice(this.index, nextIndex);\n break;\n }\n this.index = nextIndex;\n return this.push({\n data : data,\n meta : {\n percent : this.max ? this.index / this.max * 100 : 0\n }\n });\n }\n};\n\nmodule.exports = DataWorker;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/lib/stream/DataWorker.js\n// module id = 303\n// module chunks = 1","'use strict';\n\nvar utils = require('../utils');\nvar GenericWorker = require('./GenericWorker');\n\n/**\n * A worker which calculate the total length of the data flowing through.\n * @constructor\n * @param {String} propName the name used to expose the length\n */\nfunction DataLengthProbe(propName) {\n GenericWorker.call(this, \"DataLengthProbe for \" + propName);\n this.propName = propName;\n this.withStreamInfo(propName, 0);\n}\nutils.inherits(DataLengthProbe, GenericWorker);\n\n/**\n * @see GenericWorker.processChunk\n */\nDataLengthProbe.prototype.processChunk = function (chunk) {\n if(chunk) {\n var length = this.streamInfo[this.propName] || 0;\n this.streamInfo[this.propName] = length + chunk.data.length;\n }\n GenericWorker.prototype.processChunk.call(this, chunk);\n};\nmodule.exports = DataLengthProbe;\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/lib/stream/DataLengthProbe.js\n// module id = 304\n// module chunks = 1","'use strict';\n\nvar GenericWorker = require('./GenericWorker');\nvar crc32 = require('../crc32');\nvar utils = require('../utils');\n\n/**\n * A worker which calculate the crc32 of the data flowing through.\n * @constructor\n */\nfunction Crc32Probe() {\n GenericWorker.call(this, \"Crc32Probe\");\n this.withStreamInfo(\"crc32\", 0);\n}\nutils.inherits(Crc32Probe, GenericWorker);\n\n/**\n * @see GenericWorker.processChunk\n */\nCrc32Probe.prototype.processChunk = function (chunk) {\n this.streamInfo.crc32 = crc32(chunk.data, this.streamInfo.crc32 || 0);\n this.push(chunk);\n};\nmodule.exports = Crc32Probe;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/lib/stream/Crc32Probe.js\n// module id = 305\n// module chunks = 1","'use strict';\n\nvar GenericWorker = require(\"./stream/GenericWorker\");\n\nexports.STORE = {\n magic: \"\\x00\\x00\",\n compressWorker : function (compressionOptions) {\n return new GenericWorker(\"STORE compression\");\n },\n uncompressWorker : function () {\n return new GenericWorker(\"STORE decompression\");\n }\n};\nexports.DEFLATE = require('./flate');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/lib/compressions.js\n// module id = 306\n// module chunks = 1","'use strict';\nexports.LOCAL_FILE_HEADER = \"PK\\x03\\x04\";\nexports.CENTRAL_FILE_HEADER = \"PK\\x01\\x02\";\nexports.CENTRAL_DIRECTORY_END = \"PK\\x05\\x06\";\nexports.ZIP64_CENTRAL_DIRECTORY_LOCATOR = \"PK\\x06\\x07\";\nexports.ZIP64_CENTRAL_DIRECTORY_END = \"PK\\x06\\x06\";\nexports.DATA_DESCRIPTOR = \"PK\\x07\\x08\";\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/lib/signature.js\n// module id = 307\n// module chunks = 1","'use strict';\n\nvar utils = require('../utils');\nvar support = require('../support');\nvar ArrayReader = require('./ArrayReader');\nvar StringReader = require('./StringReader');\nvar NodeBufferReader = require('./NodeBufferReader');\nvar Uint8ArrayReader = require('./Uint8ArrayReader');\n\n/**\n * Create a reader adapted to the data.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data to read.\n * @return {DataReader} the data reader.\n */\nmodule.exports = function (data) {\n var type = utils.getTypeOf(data);\n utils.checkSupport(type);\n if (type === \"string\" && !support.uint8array) {\n return new StringReader(data);\n }\n if (type === \"nodebuffer\") {\n return new NodeBufferReader(data);\n }\n if (support.uint8array) {\n return new Uint8ArrayReader(utils.transformTo(\"uint8array\", data));\n }\n return new ArrayReader(utils.transformTo(\"array\", data));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/lib/reader/readerFor.js\n// module id = 308\n// module chunks = 1","'use strict';\nvar DataReader = require('./DataReader');\nvar utils = require('../utils');\n\nfunction ArrayReader(data) {\n DataReader.call(this, data);\n\tfor(var i = 0; i < this.data.length; i++) {\n\t\tdata[i] = data[i] & 0xFF;\n\t}\n}\nutils.inherits(ArrayReader, DataReader);\n/**\n * @see DataReader.byteAt\n */\nArrayReader.prototype.byteAt = function(i) {\n return this.data[this.zero + i];\n};\n/**\n * @see DataReader.lastIndexOfSignature\n */\nArrayReader.prototype.lastIndexOfSignature = function(sig) {\n var sig0 = sig.charCodeAt(0),\n sig1 = sig.charCodeAt(1),\n sig2 = sig.charCodeAt(2),\n sig3 = sig.charCodeAt(3);\n for (var i = this.length - 4; i >= 0; --i) {\n if (this.data[i] === sig0 && this.data[i + 1] === sig1 && this.data[i + 2] === sig2 && this.data[i + 3] === sig3) {\n return i - this.zero;\n }\n }\n\n return -1;\n};\n/**\n * @see DataReader.readAndCheckSignature\n */\nArrayReader.prototype.readAndCheckSignature = function (sig) {\n var sig0 = sig.charCodeAt(0),\n sig1 = sig.charCodeAt(1),\n sig2 = sig.charCodeAt(2),\n sig3 = sig.charCodeAt(3),\n data = this.readData(4);\n return sig0 === data[0] && sig1 === data[1] && sig2 === data[2] && sig3 === data[3];\n};\n/**\n * @see DataReader.readData\n */\nArrayReader.prototype.readData = function(size) {\n this.checkOffset(size);\n if(size === 0) {\n return [];\n }\n var result = this.data.slice(this.zero + this.index, this.zero + this.index + size);\n this.index += size;\n return result;\n};\nmodule.exports = ArrayReader;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/lib/reader/ArrayReader.js\n// module id = 309\n// module chunks = 1","'use strict';\nvar utils = require('../utils');\n\nfunction DataReader(data) {\n this.data = data; // type : see implementation\n this.length = data.length;\n this.index = 0;\n this.zero = 0;\n}\nDataReader.prototype = {\n /**\n * Check that the offset will not go too far.\n * @param {string} offset the additional offset to check.\n * @throws {Error} an Error if the offset is out of bounds.\n */\n checkOffset: function(offset) {\n this.checkIndex(this.index + offset);\n },\n /**\n * Check that the specifed index will not be too far.\n * @param {string} newIndex the index to check.\n * @throws {Error} an Error if the index is out of bounds.\n */\n checkIndex: function(newIndex) {\n if (this.length < this.zero + newIndex || newIndex < 0) {\n throw new Error(\"End of data reached (data length = \" + this.length + \", asked index = \" + (newIndex) + \"). Corrupted zip ?\");\n }\n },\n /**\n * Change the index.\n * @param {number} newIndex The new index.\n * @throws {Error} if the new index is out of the data.\n */\n setIndex: function(newIndex) {\n this.checkIndex(newIndex);\n this.index = newIndex;\n },\n /**\n * Skip the next n bytes.\n * @param {number} n the number of bytes to skip.\n * @throws {Error} if the new index is out of the data.\n */\n skip: function(n) {\n this.setIndex(this.index + n);\n },\n /**\n * Get the byte at the specified index.\n * @param {number} i the index to use.\n * @return {number} a byte.\n */\n byteAt: function(i) {\n // see implementations\n },\n /**\n * Get the next number with a given byte size.\n * @param {number} size the number of bytes to read.\n * @return {number} the corresponding number.\n */\n readInt: function(size) {\n var result = 0,\n i;\n this.checkOffset(size);\n for (i = this.index + size - 1; i >= this.index; i--) {\n result = (result << 8) + this.byteAt(i);\n }\n this.index += size;\n return result;\n },\n /**\n * Get the next string with a given byte size.\n * @param {number} size the number of bytes to read.\n * @return {string} the corresponding string.\n */\n readString: function(size) {\n return utils.transformTo(\"string\", this.readData(size));\n },\n /**\n * Get raw data without conversion, <size> bytes.\n * @param {number} size the number of bytes to read.\n * @return {Object} the raw data, implementation specific.\n */\n readData: function(size) {\n // see implementations\n },\n /**\n * Find the last occurence of a zip signature (4 bytes).\n * @param {string} sig the signature to find.\n * @return {number} the index of the last occurence, -1 if not found.\n */\n lastIndexOfSignature: function(sig) {\n // see implementations\n },\n /**\n * Read the signature (4 bytes) at the current position and compare it with sig.\n * @param {string} sig the expected signature\n * @return {boolean} true if the signature matches, false otherwise.\n */\n readAndCheckSignature: function(sig) {\n // see implementations\n },\n /**\n * Get the next date.\n * @return {Date} the date.\n */\n readDate: function() {\n var dostime = this.readInt(4);\n return new Date(Date.UTC(\n ((dostime >> 25) & 0x7f) + 1980, // year\n ((dostime >> 21) & 0x0f) - 1, // month\n (dostime >> 16) & 0x1f, // day\n (dostime >> 11) & 0x1f, // hour\n (dostime >> 5) & 0x3f, // minute\n (dostime & 0x1f) << 1)); // second\n }\n};\nmodule.exports = DataReader;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/lib/reader/DataReader.js\n// module id = 310\n// module chunks = 1","'use strict';\nvar ArrayReader = require('./ArrayReader');\nvar utils = require('../utils');\n\nfunction Uint8ArrayReader(data) {\n ArrayReader.call(this, data);\n}\nutils.inherits(Uint8ArrayReader, ArrayReader);\n/**\n * @see DataReader.readData\n */\nUint8ArrayReader.prototype.readData = function(size) {\n this.checkOffset(size);\n if(size === 0) {\n // in IE10, when using subarray(idx, idx), we get the array [0x00] instead of [].\n return new Uint8Array(0);\n }\n var result = this.data.subarray(this.zero + this.index, this.zero + this.index + size);\n this.index += size;\n return result;\n};\nmodule.exports = Uint8ArrayReader;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/lib/reader/Uint8ArrayReader.js\n// module id = 311\n// module chunks = 1","import macro from 'vtk.js/Sources/macro';\nimport vtkDataArray from 'vtk.js/Sources/Common/Core/DataArray';\nimport vtkPolyData from 'vtk.js/Sources/Common/DataModel/PolyData';\nimport vtkMatrixBuilder from 'vtk.js/Sources/Common/Core/MatrixBuilder';\n\n// ----------------------------------------------------------------------------\n// vtkCubeSource methods\n// ----------------------------------------------------------------------------\n\nfunction vtkCubeSource(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkCubeSource');\n\n function requestData(inData, outData) {\n if (model.deleted) {\n return;\n }\n\n const polyData = vtkPolyData.newInstance();\n outData[0] = polyData;\n\n const numberOfPolys = 6;\n const numberOfPoints = 24;\n\n // Define points\n const points = new window[model.pointType](numberOfPoints * 3);\n polyData.getPoints().setData(points, 3);\n\n const normals = new window[model.pointType](numberOfPoints * 3);\n const normalArray = vtkDataArray.newInstance({\n name: 'Normals',\n values: normals,\n numberOfComponents: 3,\n });\n polyData.getPointData().setNormals(normalArray);\n\n let tcdim = 2;\n if (model.generate3DTextureCoordinates === true) {\n tcdim = 3;\n }\n\n const textureCoords = new window[model.pointType](numberOfPoints * tcdim);\n const tcoords = vtkDataArray.newInstance({\n name: 'TextureCoordinates',\n values: textureCoords,\n numberOfComponents: tcdim,\n });\n polyData.getPointData().setTCoords(tcoords);\n\n const x = [0.0, 0.0, 0.0];\n const n = [0.0, 0.0, 0.0];\n const tc = [0.0, 0.0];\n\n let pointIndex = 0;\n\n x[0] = -model.xLength / 2.0;\n n[0] = -1.0;\n n[1] = 0.0;\n n[2] = 0.0;\n for (let i = 0; i < 2; i++) {\n x[1] = -model.yLength / 2.0;\n\n for (let j = 0; j < 2; j++) {\n tc[1] = x[1] + 0.5;\n x[2] = -model.zLength / 2.0;\n\n for (let k = 0; k < 2; k++) {\n tc[0] = (x[2] + 0.5) * (1 - 2 * i);\n points[pointIndex * 3] = x[0];\n points[pointIndex * 3 + 1] = x[1];\n points[pointIndex * 3 + 2] = x[2];\n\n normals[pointIndex * 3] = n[0];\n normals[pointIndex * 3 + 1] = n[1];\n normals[pointIndex * 3 + 2] = n[2];\n\n if (tcdim === 2) {\n textureCoords[pointIndex * tcdim] = tc[0];\n textureCoords[pointIndex * tcdim + 1] = tc[1];\n } else {\n textureCoords[pointIndex * tcdim] = 2 * i - 1;\n textureCoords[pointIndex * tcdim + 1] = 2 * j - 1;\n textureCoords[pointIndex * tcdim + 2] = 2 * k - 1;\n }\n\n pointIndex++;\n\n x[2] += model.zLength;\n }\n x[1] += model.yLength;\n }\n x[0] += model.xLength;\n n[0] += 2.0;\n }\n\n x[1] = -model.yLength / 2.0;\n n[1] = -1.0;\n n[0] = 0.0;\n n[2] = 0.0;\n for (let i = 0; i < 2; i++) {\n x[0] = -model.xLength / 2.0;\n\n for (let j = 0; j < 2; j++) {\n tc[0] = (x[0] + 0.5) * (2 * i - 1);\n x[2] = -model.zLength / 2.0;\n\n for (let k = 0; k < 2; k++) {\n tc[1] = (x[2] + 0.5) * -1;\n\n points[pointIndex * 3] = x[0];\n points[pointIndex * 3 + 1] = x[1];\n points[pointIndex * 3 + 2] = x[2];\n\n normals[pointIndex * 3] = n[0];\n normals[pointIndex * 3 + 1] = n[1];\n normals[pointIndex * 3 + 2] = n[2];\n\n if (tcdim === 2) {\n textureCoords[pointIndex * tcdim] = tc[0];\n textureCoords[pointIndex * tcdim + 1] = tc[1];\n } else {\n textureCoords[pointIndex * tcdim] = 2 * j - 1;\n textureCoords[pointIndex * tcdim + 1] = 2 * i - 1;\n textureCoords[pointIndex * tcdim + 2] = 2 * k - 1;\n }\n\n pointIndex++;\n x[2] += model.zLength;\n }\n x[0] += model.xLength;\n }\n x[1] += model.yLength;\n n[1] += 2.0;\n }\n\n x[2] = -model.zLength / 2.0;\n n[2] = -1.0;\n n[0] = 0.0;\n n[1] = 0.0;\n for (let i = 0; i < 2; i++) {\n x[1] = -model.yLength / 2.0;\n\n for (let j = 0; j < 2; j++) {\n tc[1] = x[1] + 0.5;\n x[0] = -model.xLength / 2.0;\n\n for (let k = 0; k < 2; k++) {\n tc[0] = (x[0] + 0.5) * (2 * i - 1);\n\n points[pointIndex * 3] = x[0];\n points[pointIndex * 3 + 1] = x[1];\n points[pointIndex * 3 + 2] = x[2];\n\n normals[pointIndex * 3] = n[0];\n normals[pointIndex * 3 + 1] = n[1];\n normals[pointIndex * 3 + 2] = n[2];\n\n if (tcdim === 2) {\n textureCoords[pointIndex * tcdim] = tc[0];\n textureCoords[pointIndex * tcdim + 1] = tc[1];\n } else {\n textureCoords[pointIndex * tcdim] = 2 * k - 1;\n textureCoords[pointIndex * tcdim + 1] = 2 * j - 1;\n textureCoords[pointIndex * tcdim + 2] = 2 * i - 1;\n }\n\n pointIndex++;\n x[0] += model.xLength;\n }\n x[1] += model.yLength;\n }\n x[2] += model.zLength;\n n[2] += 2.0;\n }\n\n // Apply rotation to the points coordinates and normals\n vtkMatrixBuilder\n .buildFromDegree()\n .rotateX(model.rotations[0])\n .rotateY(model.rotations[1])\n .rotateZ(model.rotations[2])\n .apply(points)\n .apply(normals);\n\n // Apply transformation to the points coordinates\n vtkMatrixBuilder\n .buildFromRadian()\n .translate(...model.center)\n .apply(points);\n\n // Define quads\n const polys = new window[model.pointType](numberOfPolys * 5);\n polyData.getPolys().setData(polys, 1);\n\n let polyIndex = 0;\n\n polys[polyIndex++] = 4;\n polys[polyIndex++] = 0;\n polys[polyIndex++] = 1;\n polys[polyIndex++] = 3;\n polys[polyIndex++] = 2;\n\n polys[polyIndex++] = 4;\n polys[polyIndex++] = 4;\n polys[polyIndex++] = 6;\n polys[polyIndex++] = 7;\n polys[polyIndex++] = 5;\n\n polys[polyIndex++] = 4;\n polys[polyIndex++] = 8;\n polys[polyIndex++] = 10;\n polys[polyIndex++] = 11;\n polys[polyIndex++] = 9;\n\n polys[polyIndex++] = 4;\n polys[polyIndex++] = 12;\n polys[polyIndex++] = 13;\n polys[polyIndex++] = 15;\n polys[polyIndex++] = 14;\n\n polys[polyIndex++] = 4;\n polys[polyIndex++] = 16;\n polys[polyIndex++] = 18;\n polys[polyIndex++] = 19;\n polys[polyIndex++] = 17;\n\n polys[polyIndex++] = 4;\n polys[polyIndex++] = 20;\n polys[polyIndex++] = 21;\n polys[polyIndex++] = 23;\n polys[polyIndex] = 22;\n }\n\n publicAPI.setBounds = (...bounds) => {\n let boundsArray = [];\n\n if (Array.isArray(bounds[0])) {\n boundsArray = bounds[0];\n } else {\n for (let i = 0; i < bounds.length; i++) {\n boundsArray.push(bounds[i]);\n }\n }\n\n if (boundsArray.length !== 6) {\n return;\n }\n\n model.xLength = boundsArray[1] - boundsArray[0];\n model.yLength = boundsArray[3] - boundsArray[2];\n model.zLength = boundsArray[5] - boundsArray[4];\n model.center = [\n (boundsArray[0] + boundsArray[1]) / 2.0,\n (boundsArray[2] + boundsArray[3]) / 2.0,\n (boundsArray[4] + boundsArray[5]) / 2.0,\n ];\n };\n\n // Expose methods\n publicAPI.requestData = requestData;\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n xLength: 1.0,\n yLength: 1.0,\n zLength: 1.0,\n center: [0.0, 0.0, 0.0],\n rotations: [0.0, 0.0, 0.0],\n pointType: 'Float32Array',\n generate3DTextureCoordinates: false,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Build VTK API\n macro.obj(publicAPI, model);\n macro.setGet(publicAPI, model, [\n 'xLength',\n 'yLength',\n 'zLength',\n 'generate3DTextureCoordinates',\n ]);\n macro.setGetArray(publicAPI, model, ['center', 'rotations'], 3);\n\n macro.algo(publicAPI, model, 0, 1);\n vtkCubeSource(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkCubeSource');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Filters/Sources/CubeSource/index.js","import macro from 'vtk.js/Sources/macro';\nimport vtkPolyData from 'vtk.js/Sources/Common/DataModel/PolyData';\nimport vtkMatrixBuilder from 'vtk.js/Sources/Common/Core/MatrixBuilder';\n\n// ----------------------------------------------------------------------------\n// vtkConeSource methods\n// ----------------------------------------------------------------------------\n\nfunction vtkConeSource(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkConeSource');\n\n function requestData(inData, outData) {\n if (model.deleted) {\n return;\n }\n\n let dataset = outData[0];\n\n const angle = 2 * Math.PI / model.resolution;\n const xbot = -model.height / 2.0;\n const numberOfPoints = model.resolution + 1;\n const cellArraySize = 4 * model.resolution + 1 + model.resolution;\n\n // Points\n let pointIdx = 0;\n const points = new window[model.pointType](numberOfPoints * 3);\n\n // Cells\n let cellLocation = 0;\n const polys = new Uint32Array(cellArraySize);\n\n // Add summit point\n points[0] = model.height / 2.0;\n points[1] = 0.0;\n points[2] = 0.0;\n\n // Create bottom cell\n if (model.capping) {\n polys[cellLocation++] = model.resolution;\n }\n\n // Add all points\n for (let i = 0; i < model.resolution; i++) {\n pointIdx++;\n points[pointIdx * 3 + 0] = xbot;\n points[pointIdx * 3 + 1] = model.radius * Math.cos(i * angle);\n points[pointIdx * 3 + 2] = model.radius * Math.sin(i * angle);\n\n // Add points to bottom cell in reverse order\n if (model.capping) {\n polys[model.resolution - cellLocation++ + 1] = pointIdx;\n }\n }\n\n // Add all triangle cells\n for (let i = 0; i < model.resolution; i++) {\n polys[cellLocation++] = 3;\n polys[cellLocation++] = 0;\n polys[cellLocation++] = i + 1;\n polys[cellLocation++] = i + 2 > model.resolution ? 1 : i + 2;\n }\n\n // Apply tranformation to the points coordinates\n vtkMatrixBuilder\n .buildFromRadian()\n .translate(...model.center)\n .rotateFromDirections([1, 0, 0], model.direction)\n .apply(points);\n\n dataset = vtkPolyData.newInstance();\n dataset.getPoints().setData(points, 3);\n dataset.getPolys().setData(polys, 1);\n\n // Update output\n outData[0] = dataset;\n }\n\n // Expose methods\n publicAPI.requestData = requestData;\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n height: 1.0,\n radius: 0.5,\n resolution: 6,\n center: [0, 0, 0],\n direction: [1.0, 0.0, 0.0],\n capping: true,\n pointType: 'Float32Array',\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Build VTK API\n macro.obj(publicAPI, model);\n macro.setGet(publicAPI, model, ['height', 'radius', 'resolution', 'capping']);\n macro.setGetArray(publicAPI, model, ['center', 'direction'], 3);\n macro.algo(publicAPI, model, 0, 1);\n vtkConeSource(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkConeSource');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Filters/Sources/ConeSource/index.js","/*\n * Management application for showing isosurfaces of the local universe\n * and interactivity with several datasets.\n *\n * Copyright(C) 2017-2018 Guilhem Lavaux. Inspired from VTK Examples.\n */\n'use strict';\nimport { request as ajax } from 'helpers/ajax';\nimport { queryString, addNewState } from 'helpers/params';\nimport * as error from 'helpers/error';\nimport * as ko from 'knockout';\n\nrequire('bootstrap-colorpicker');\nrequire.resolve('bootstrap-colorpicker/src/sass/_colorpicker.scss');\n\nimport vtkDataArray from 'vtk.js/Sources/Common/Core/DataArray';\nimport vtkActor from 'vtk.js/Sources/Rendering/Core/Actor';\nimport vtkFullScreenRenderWindow from 'vtk.js/Sources/Rendering/Misc/FullScreenRenderWindow';\nimport vtkHttpDataSetReader from 'vtk.js/Sources/IO/Core/HttpDataSetReader';\nimport vtkImageMarchingCubes from 'vtk.js/Sources/Filters/General/ImageMarchingCubes';\nimport vtkMapper from 'vtk.js/Sources/Rendering/Core/Mapper';\nimport vtkGlyph3DMapper from 'vtk.js/Sources/Rendering/Core/Glyph3DMapper';\nimport vtkCubeSource from 'vtk.js/Sources/Filters/Sources/CubeSource';\nimport vtkConeSource from 'vtk.js/Sources/Filters/Sources/ConeSource';\nimport vtkArrowSource from 'vtk.js/Sources/Filters/Sources/ArrowSource';\nimport vtkPixelSpaceCallbackMapper from 'vtk.js/Sources/Rendering/Core/PixelSpaceCallbackMapper';\nimport vtkOrientationMarkerWidget from 'vtk.js/Sources/Interaction/Widgets/OrientationMarkerWidget';\nimport vtkAnnotatedCubeActor from 'vtk.js/Sources/Rendering/Core/AnnotatedCubeActor';\nimport { Representation } from 'vtk.js/Sources/Rendering/Core/Property/Constants.js';\n\nimport { setupLSS } from 'helpers/lss';\n\nimport lssRandomSources from 'vtk_plus/RandomSources';\nimport lssInterpolationFilter from 'vtk_plus/InterpolationFilter';\n\nimport vtkImageStreamline from 'vtk.js/Sources/Filters/General/ImageStreamline';\n\nimport style from './style.mcss';\n\n/*\n * This function sets up a cube to show the current scale. The cube\n * is 400 Mpc/h wide, centered on the observer.\n */\nfunction setupCube(renderer) {\n const actor = vtkActor.newInstance();\n const mapper = vtkMapper.newInstance();\n const cubeSource = vtkCubeSource.newInstance({\n xLength: 1,\n yLength: 1,\n zLength: 1,\n center: [0, 0, 0],\n });\n\n const actor_property = actor.getProperty();\n\n actor_property.setRepresentationToWireframe();\n actor_property.setColor(1, 1, 1);\n\n actor_property.setAmbientColor(1, 1, 1);\n actor_property.setInterpolationToFlat();\n actor_property.setLighting(false);\n actor_property.setAmbient(1);\n actor_property.setDiffuse(0);\n actor_property.setOpacity(0.5);\n\n actor.setScale([400, 400, 400]);\n actor.setMapper(mapper);\n mapper.setInputConnection(cubeSource.getOutputPort());\n renderer.addActor(actor);\n}\n\n/*\n * This functions sets up the auxiliary actor to show the orientation\n * of the camera, each side has a different color and label.\n */\nfunction setupOrientationActor() {\n const axes = vtkAnnotatedCubeActor.newInstance();\n axes.setDefaultStyle({\n text: '+X',\n fontStyle: 'bold',\n fontFamily: 'Arial',\n fontColor: 'black',\n fontSizeScale: (res) => res / 2,\n faceColor: '#0000ff',\n edgeThickness: 0.1,\n edgeColor: 'black',\n resolution: 400,\n });\n // axes.setXPlusFaceProperty({ text: '+X' });\n axes.setXMinusFaceProperty({\n text: '-X',\n faceColor: '#ffff00',\n fontStyle: 'italic',\n });\n axes.setYPlusFaceProperty({\n text: '+Y',\n faceColor: '#00ff00',\n fontSizeScale: (res) => res / 4,\n });\n axes.setYMinusFaceProperty({\n text: '-Y',\n faceColor: '#00ffff',\n fontColor: 'white',\n });\n axes.setZPlusFaceProperty({ text: '+Z', edgeColor: 'yellow' });\n axes.setZMinusFaceProperty({ text: '-Z', edgeThickness: 0 });\n\n return axes;\n}\n\n\n/*\n * This function is the constructor the view object used\n * by knockout to answer to change in the state of buttons/text inputs...\n */\nfunction ControlView() {\n let self = this;\n\n // First initialize the render window and attach it to the\n // adequate DOM entry.\n const fullScreenRenderWindow = vtkFullScreenRenderWindow.newInstance({\n background: [0, 0, 0],\n rootContainer: document.getElementById('placeholder'),\n containerStyle: {\n margin: '0',\n display: 'inline-block',\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n width: '100%',\n height: '100%',\n overflow: 'hidden',\n },\n });\n\n const renderWindow = fullScreenRenderWindow.getRenderWindow();\n const renderer = fullScreenRenderWindow.getRenderer();\n\n global.renderer = renderer;\n\n\n // -----------------------------------------------------------------\n // Iso-surface setup\n // Create the iso-surface generator.\n const [isoActor, marchingCube] = setupIsoSurface();\n\n\n\n const reader = vtkHttpDataSetReader.newInstance({\n fetchGzip: true,\n progressCallback: (ev)=> { loadIndicator(0, ev); }\n });\n marchingCube.setInputConnection(reader.getOutputPort());\n\n // -----------------------------------------------------------------\n // -----------------------------------------------------------------\n // Now prepare the streamline part\n //const streamline = setupStreamline();\n\n // Arrow vector part\n\n\n/* slineActor.getProperty().set({\n representation: Representation.POINTS,\n pointSize: 1\n });*/\n // -----------------------------------------------------------------\n\n // Create the small orientation actor to show what is the status\n // of the camera.\n\n const orientationWidget = vtkOrientationMarkerWidget.newInstance({\n actor: setupOrientationActor(),\n interactor: renderWindow.getInteractor(),\n });\n\n // Add the empty cube\n setupCube(renderer);\n\n // -----------------------------------------------------------------\n // Manage the names on top of the 3d representation\n\n // Create a canvas\n const textCanvas = document.createElement('canvas');\n // Add adequate class style\n textCanvas.classList.add(style.container, 'textCanvas');\n // Add the DOM element.\n fullScreenRenderWindow.getContainer().appendChild(textCanvas);\n\n const textCtx = textCanvas.getContext('2d');\n let dims = null;\n const textActor = vtkActor.newInstance();\n const psMapper = vtkPixelSpaceCallbackMapper.newInstance();\n\n setupLSS().then((args) => {\n const names = args.names;\n const polyData = args.poly;\n const centerPos = args.center;\n psMapper.setInputConnection(polyData.getOutputPort());\n psMapper.setCallback((coordsList) => {\n if (textCtx && dims) {\n // textCtx.strokeStyle = \"#fff\";\n textCtx.font = '12px serif';\n textCtx.textAlign = 'center';\n textCtx.textBaseline = 'middle';\n textCtx.setTransform(1, 0, 0, 1, 0, 0);\n textCtx.clearRect(0, 0, dims.width, dims.height);\n\n const mw = coordsList[centerPos];\n\n coordsList.forEach((xy, idx) => {\n if (idx == centerPos) {\n return;\n }\n\n const name = names[idx];\n const x = xy[0];\n const y = dims.height - xy[1];\n\n textCtx.setTransform(\n 1.2 - 1 * (xy[2] - mw[2]),\n 0,\n 0,\n 1.2 - 1 * (xy[2] - mw[2]),\n x,\n y\n );\n\n const width_txt = textCtx.measureText(name).width;\n textCtx.fillStyle = 'rgba(10,0,60,0.3)';\n textCtx.fillRect(-0.6 * width_txt, -10, 1.2 * width_txt, 20);\n textCtx.fillStyle = '#f00';\n textCtx.fillText(name, 0, 0);\n });\n }\n });\n textActor.setMapper(psMapper);\n renderer.addActor(textActor);\n // -----------------------------------------------------------------\n });\n\n // Handle window resize\n fullScreenRenderWindow.setResizeCallback((newDims) => {\n dims = newDims;\n textCanvas.setAttribute('width', dims.width);\n textCanvas.setAttribute('height', dims.height);\n });\n\n\n self.progressBar = ko.observable(false);\n global.test_control = self;\n\n self.progressPct = ko.observable(0);\n self.minDataRange = ko.observable(-1);\n self.maxDataRange = ko.observable(1);\n self.isoValue = ko.observable(1);\n self.specBright = ko.observable(0.5);\n self.useNormals = ko.observable(true);\n self.baseColor = ko.observable('#ff0000');\n self.addSpecular = ko.observable(true);\n self.dataset = ko.observable();\n self.autoRefresh = ko.observable(false);\n\n // Delay the trigger of the loading to the moment the whole page is ready.\n $(document).ready(() => {\n self.dataset('twompp_10.vtp');\n\n // Construction of arrows too.\n console.log(\"Go arrows\");\n setupArrows();\n\n });\n\n self.firstTime = true;\n\n self.dataset.subscribe(() => {\n const name = self.dataset();\n self.progressPct(0);\n self.progressBar(true);\n self.autoRefresh(false);\n reader.setUrl('/data/' + name, { loadData: true }).then(() => {\n const data = reader.getOutputData();\n const pointData = data.getPointData();\n const scalars = pointData.getScalars();\n const dataRange = scalars.getRange();\n\n self.minDataRange(-1); //dataRange[0]);\n self.maxDataRange(2); //dataRange[1]);\n\n self.progressBar(false);\n marchingCube.setContourValue(self.isoValue());\n\n if (self.firstTime) {\n renderer.addActor(isoActor);\n renderer\n .getActiveCamera()\n .set({ position: [1, 1, 1], viewUp: [0, 0, 1] });\n\n orientationWidget.setEnabled(true);\n orientationWidget.setViewportCorner(\n vtkOrientationMarkerWidget.Corners.BOTTOM_LEFT\n );\n orientationWidget.setViewportSize(0.15);\n\n renderer.resetCamera();\n self.firstTime = false;\n }\n\n renderWindow.render();\n self.autoRefresh(true);\n });\n });\n\n self.isoValue.subscribe((value) => {\n marchingCube.setContourValue(Number(value));\n renderWindow.render();\n });\n\n self.specBright.subscribe((value) => {\n const specBright = Number(value);\n isoActor.getProperty().setSpecularPower(value);\n renderWindow.render();\n });\n\n self.useNormals.subscribe((activeNormals) => {\n marchingCube.setComputeNormals(activeNormals);\n renderWindow.render();\n });\n\n self.addSpecular.subscribe((value) => {\n isoActor.getProperty().setSpecular(value);\n renderWindow.render();\n });\n\n self.baseColor.subscribe((color) => {\n let c = hexToRgb(color);\n isoActor.getProperty().setDiffuseColor(c.r / 255.0, c.g / 255.0, c.b / 255.0);\n renderWindow.render();\n });\n\n $(() => {\n $('.surface_color').colorpicker();\n });\n\n return self;\n\n function setupIsoSurface() {\n const actor = vtkActor.newInstance();\n const mapper = vtkMapper.newInstance();\n const marchingCube = vtkImageMarchingCubes.newInstance({\n contourValue: 0.0,\n mergePoints: true,\n computeNormals: true,\n });\n const actor_property = actor.getProperty();\n\n actor_property.setColor(1, 1, 1);\n actor_property.setDiffuseColor(1, 0, 1);\n actor_property.setAmbientColor(0.1, 0.1, 0.1);\n actor_property.setSpecularColor(1, 1, 1);\n actor_property.setSpecular(true);\n\n// actor.setScale([1,1,1]);\n// actor.setPosition([-200, -200, -200]);\n actor.setMapper(mapper);\n mapper.setInputConnection(marchingCube.getOutputPort());\n\n return [actor, marchingCube];\n }\n\n function setupArrows() {\n const mapper = vtkGlyph3DMapper.newInstance();\n const actor = vtkActor .newInstance();\n const coneSource = vtkArrowSource.newInstance({tipRadius:0.2, shaftRadius:0.02, tipLength:0.4});\n\n const vecSource = vtkHttpDataSetReader.newInstance({\n fetchGzip:true\n });\n\n const interpolationFilter = lssInterpolationFilter.newInstance();\n const randPoints = lssRandomSources.newInstance();\n randPoints.setMinBox(0.);\n randPoints.setMaxBox(32.);\n randPoints.setNumPoints(6000);\n\n interpolationFilter.setInputConnection(randPoints.getOutputPort(), 0);\n mapper.setInputConnection(interpolationFilter.getOutputPort(), 0);\n mapper.setInputConnection(coneSource.getOutputPort(), 1);\n mapper.setScaleModeToScaleByComponents();\n mapper.setOrientationModeToRotation();\n mapper.setScalarRange(0.0, 3000.0);\n\n mapper.setScaleFactor(3e-3);\n\n //coneSource.setResolution(12);\n\n actor.setScale([400 / 31, 400 / 31, 400 / 31]);\n actor.setPosition([-200, -200, -200]);\n// actor.getProperty().setOpacity(0.3);\n actor.setMapper(mapper);\n\n console.log(\"Set callbacks for arrows.\");\n\n vecSource.setUrl('/data_vec/vfield.vtp', { loadData: true }).then(\n () => {\n console.log(\"Got data\");\n\n const arrays = vecSource.getArrays().filter((a) => { return a.name == \"vectors\"; });\n\n vecSource.getOutputData().getPointData().setVectors(\n vtkDataArray.newInstance(arrays[0].array)\n );\n interpolationFilter.setInputConnection(vecSource.getOutputPort(), 1);\n\n// actor.setScale([10,10,10]);\n\n console.log(\"Actor added\");\n renderer.addActor(actor);\n renderWindow.render();\n\n let counter = 0;\n\tvar arrowRefreshActive = false, arrowRefresh = null; \n\tself.autoRefresh.subscribe(\n\t ()=> {\n\t const refresh = self.autoRefresh();\n\t console.log(\"Refresh state change to \", refresh);\n\t if (refresh) {\n\t if (arrowRefreshActive)\n\t\tclearInterval(arrowRefresh);\n arrowRefresh = setInterval(\n ()=> {\n mapper.setScaleFactor(3e-3*counter/40);\n counter = (counter + 1) % 40;\n renderWindow.render();\n },\n 100\n );\n arrowRefreshActive = true;\n } else\n\t if (arrowRefreshActive)\n\t\tclearInterval(arrowRefresh);\n\t }\n\t);\n }\n );\n }\n\n\n function setupStreamline() {\n const sline = vtkImageStreamline.newInstance();\n\n const vecSource = vtkHttpDataSetReader.newInstance({\n fetchGzip:true\n });\n\n const randPoints = lssRandomSources.newInstance();\n randPoints.setMinBox(0.);\n randPoints.setMaxBox(32.);\n randPoints.setNumPoints(600);\n sline.setInputConnection(randPoints.getOutputPort(), 1);\n\n\n sline.setIntegrationStep(0.001);\n sline.setMaximumNumberOfSteps(20);\n vecSource.setUrl('/data_vec/vfield.vtp', { loadData: true }).then(\n () => {\n const arrays = vecSource.getArrays().filter((a) => { return a.name == \"vectors\"; });\n\n vecSource.getOutputData().getPointData().setVectors(vtkDataArray.newInstance(arrays[0].array));\n\n sline.setInputConnection(vecSource.getOutputPort());\n\n const slineMapper = vtkMapper.newInstance();\n const slineActor = vtkActor.newInstance();\n slineMapper.setInputConnection(sline.getOutputPort());\n slineActor.setMapper(slineMapper);\n slineActor.setScale([400 / 31, 400 / 31, 400 / 31]);\n slineActor.setPosition([-200, -200, -200]);\n\n renderer.addActor(slineActor);\n renderWindow.render();\n }\n );\n return sline;\n }\n\n function loadIndicator(fid, pe) {\n if (pe.lengthComputable) {\n if (pe.total > 0) {\n self.progressPct(parseInt(pe.loaded * 100 / pe.total));\n } else self.progressPct(0);\n }\n }\n\n function hexToRgb(h) {\n var r = parseInt(cutHex(h).substring(0, 2), 16),\n g = parseInt(cutHex(h).substring(2, 4), 16),\n b = parseInt(cutHex(h).substring(4, 6), 16);\n return { r: r, g: g, b: b };\n }\n\n function cutHex(h) {\n return h.charAt(0) == '#' ? h.substring(1, 7) : h;\n }\n}\n\nko.applyBindings(new ControlView());\n\n\n\n// WEBPACK FOOTER //\n// ./app/contour_plot.js","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var script = doc.createElement(\"script\");\n script.onreadystatechange = function () {\n runIfPresent(handle);\n script.onreadystatechange = null;\n html.removeChild(script);\n script = null;\n };\n html.appendChild(script);\n };\n }\n\n function installSetTimeoutImplementation() {\n registerImmediate = function(handle) {\n setTimeout(runIfPresent, 0, handle);\n };\n }\n\n // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n // Don't get fooled by e.g. browserify environments.\n if ({}.toString.call(global.process) === \"[object process]\") {\n // For Node.js before 0.9\n installNextTickImplementation();\n\n } else if (canUsePostMessage()) {\n // For non-IE10 modern browsers\n installPostMessageImplementation();\n\n } else if (global.MessageChannel) {\n // For web workers, where supported\n installMessageChannelImplementation();\n\n } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n // For IE 68\n installReadyStateChangeImplementation();\n\n } else {\n // For older browsers\n installSetTimeoutImplementation();\n }\n\n attachTo.setImmediate = setImmediate;\n attachTo.clearImmediate = clearImmediate;\n}(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/setimmediate/setImmediate.js\n// module id = 529\n// module chunks = 1","// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baagøe.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by François Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/seedrandom/index.js\n// module id = 530\n// module chunks = 1","// A port of an algorithm by Johannes Baagøe <baagoe@baagoe.com>, 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baagøe <baagoe@baagoe.org>\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/seedrandom/lib/alea.js\n// module id = 531\n// module chunks = 1","// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/seedrandom/lib/xor128.js\n// module id = 532\n// module chunks = 1","// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/seedrandom/lib/xorwow.js\n// module id = 533\n// module chunks = 1","// A Javascript implementaion of the \"xorshift7\" algorithm by\n// François Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/seedrandom/lib/xorshift7.js\n// module id = 534\n// module chunks = 1","// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/seedrandom/lib/xor4096.js\n// module id = 535\n// module chunks = 1","// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/seedrandom/lib/tychei.js\n// module id = 536\n// module chunks = 1","/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/seedrandom/seedrandom.js\n// module id = 537\n// module chunks = 1","/* (ignored) */\n\n\n//////////////////\n// WEBPACK FOOTER\n// crypto (ignored)\n// module id = 538\n// module chunks = 1","/* Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV.\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy\r\nof this software and associated documentation files (the \"Software\"), to deal\r\nin the Software without restriction, including without limitation the rights\r\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the Software is\r\nfurnished to do so, subject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be included in\r\nall copies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\nTHE SOFTWARE. */\r\n\r\nimport * as glMatrix from \"./common.js\"\r\n\r\n/**\r\n * 2x2 Matrix\r\n * @module mat2\r\n */\r\n\r\n/**\r\n * Creates a new identity mat2\r\n *\r\n * @returns {mat2} a new 2x2 matrix\r\n */\r\nexport function create() {\r\n let out = new glMatrix.ARRAY_TYPE(4);\r\n out[0] = 1;\r\n out[1] = 0;\r\n out[2] = 0;\r\n out[3] = 1;\r\n return out;\r\n}\r\n\r\n/**\r\n * Creates a new mat2 initialized with values from an existing matrix\r\n *\r\n * @param {mat2} a matrix to clone\r\n * @returns {mat2} a new 2x2 matrix\r\n */\r\nexport function clone(a) {\r\n let out = new glMatrix.ARRAY_TYPE(4);\r\n out[0] = a[0];\r\n out[1] = a[1];\r\n out[2] = a[2];\r\n out[3] = a[3];\r\n return out;\r\n}\r\n\r\n/**\r\n * Copy the values from one mat2 to another\r\n *\r\n * @param {mat2} out the receiving matrix\r\n * @param {mat2} a the source matrix\r\n * @returns {mat2} out\r\n */\r\nexport function copy(out, a) {\r\n out[0] = a[0];\r\n out[1] = a[1];\r\n out[2] = a[2];\r\n out[3] = a[3];\r\n return out;\r\n}\r\n\r\n/**\r\n * Set a mat2 to the identity matrix\r\n *\r\n * @param {mat2} out the receiving matrix\r\n * @returns {mat2} out\r\n */\r\nexport function identity(out) {\r\n out[0] = 1;\r\n out[1] = 0;\r\n out[2] = 0;\r\n out[3] = 1;\r\n return out;\r\n}\r\n\r\n/**\r\n * Create a new mat2 with the given values\r\n *\r\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\r\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\r\n * @param {Number} m10 Component in column 1, row 0 position (index 2)\r\n * @param {Number} m11 Component in column 1, row 1 position (index 3)\r\n * @returns {mat2} out A new 2x2 matrix\r\n */\r\nexport function fromValues(m00, m01, m10, m11) {\r\n let out = new glMatrix.ARRAY_TYPE(4);\r\n out[0] = m00;\r\n out[1] = m01;\r\n out[2] = m10;\r\n out[3] = m11;\r\n return out;\r\n}\r\n\r\n/**\r\n * Set the components of a mat2 to the given values\r\n *\r\n * @param {mat2} out the receiving matrix\r\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\r\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\r\n * @param {Number} m10 Component in column 1, row 0 position (index 2)\r\n * @param {Number} m11 Component in column 1, row 1 position (index 3)\r\n * @returns {mat2} out\r\n */\r\nexport function set(out, m00, m01, m10, m11) {\r\n out[0] = m00;\r\n out[1] = m01;\r\n out[2] = m10;\r\n out[3] = m11;\r\n return out;\r\n}\r\n\r\n/**\r\n * Transpose the values of a mat2\r\n *\r\n * @param {mat2} out the receiving matrix\r\n * @param {mat2} a the source matrix\r\n * @returns {mat2} out\r\n */\r\nexport function transpose(out, a) {\r\n // If we are transposing ourselves we can skip a few steps but have to cache\r\n // some values\r\n if (out === a) {\r\n let a1 = a[1];\r\n out[1] = a[2];\r\n out[2] = a1;\r\n } else {\r\n out[0] = a[0];\r\n out[1] = a[2];\r\n out[2] = a[1];\r\n out[3] = a[3];\r\n }\r\n\r\n return out;\r\n}\r\n\r\n/**\r\n * Inverts a mat2\r\n *\r\n * @param {mat2} out the receiving matrix\r\n * @param {mat2} a the source matrix\r\n * @returns {mat2} out\r\n */\r\nexport function invert(out, a) {\r\n let a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3];\r\n\r\n // Calculate the determinant\r\n let det = a0 * a3 - a2 * a1;\r\n\r\n if (!det) {\r\n return null;\r\n }\r\n det = 1.0 / det;\r\n\r\n out[0] = a3 * det;\r\n out[1] = -a1 * det;\r\n out[2] = -a2 * det;\r\n out[3] = a0 * det;\r\n\r\n return out;\r\n}\r\n\r\n/**\r\n * Calculates the adjugate of a mat2\r\n *\r\n * @param {mat2} out the receiving matrix\r\n * @param {mat2} a the source matrix\r\n * @returns {mat2} out\r\n */\r\nexport function adjoint(out, a) {\r\n // Caching this value is nessecary if out == a\r\n let a0 = a[0];\r\n out[0] = a[3];\r\n out[1] = -a[1];\r\n out[2] = -a[2];\r\n out[3] = a0;\r\n\r\n return out;\r\n}\r\n\r\n/**\r\n * Calculates the determinant of a mat2\r\n *\r\n * @param {mat2} a the source matrix\r\n * @returns {Number} determinant of a\r\n */\r\nexport function determinant(a) {\r\n return a[0] * a[3] - a[2] * a[1];\r\n}\r\n\r\n/**\r\n * Multiplies two mat2's\r\n *\r\n * @param {mat2} out the receiving matrix\r\n * @param {mat2} a the first operand\r\n * @param {mat2} b the second operand\r\n * @returns {mat2} out\r\n */\r\nexport function multiply(out, a, b) {\r\n let a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3];\r\n let b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3];\r\n out[0] = a0 * b0 + a2 * b1;\r\n out[1] = a1 * b0 + a3 * b1;\r\n out[2] = a0 * b2 + a2 * b3;\r\n out[3] = a1 * b2 + a3 * b3;\r\n return out;\r\n}\r\n\r\n/**\r\n * Rotates a mat2 by the given angle\r\n *\r\n * @param {mat2} out the receiving matrix\r\n * @param {mat2} a the matrix to rotate\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat2} out\r\n */\r\nexport function rotate(out, a, rad) {\r\n let a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3];\r\n let s = Math.sin(rad);\r\n let c = Math.cos(rad);\r\n out[0] = a0 * c + a2 * s;\r\n out[1] = a1 * c + a3 * s;\r\n out[2] = a0 * -s + a2 * c;\r\n out[3] = a1 * -s + a3 * c;\r\n return out;\r\n}\r\n\r\n/**\r\n * Scales the mat2 by the dimensions in the given vec2\r\n *\r\n * @param {mat2} out the receiving matrix\r\n * @param {mat2} a the matrix to rotate\r\n * @param {vec2} v the vec2 to scale the matrix by\r\n * @returns {mat2} out\r\n **/\r\nexport function scale(out, a, v) {\r\n let a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3];\r\n let v0 = v[0], v1 = v[1];\r\n out[0] = a0 * v0;\r\n out[1] = a1 * v0;\r\n out[2] = a2 * v1;\r\n out[3] = a3 * v1;\r\n return out;\r\n}\r\n\r\n/**\r\n * Creates a matrix from a given angle\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat2.identity(dest);\r\n * mat2.rotate(dest, dest, rad);\r\n *\r\n * @param {mat2} out mat2 receiving operation result\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat2} out\r\n */\r\nexport function fromRotation(out, rad) {\r\n let s = Math.sin(rad);\r\n let c = Math.cos(rad);\r\n out[0] = c;\r\n out[1] = s;\r\n out[2] = -s;\r\n out[3] = c;\r\n return out;\r\n}\r\n\r\n/**\r\n * Creates a matrix from a vector scaling\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat2.identity(dest);\r\n * mat2.scale(dest, dest, vec);\r\n *\r\n * @param {mat2} out mat2 receiving operation result\r\n * @param {vec2} v Scaling vector\r\n * @returns {mat2} out\r\n */\r\nexport function fromScaling(out, v) {\r\n out[0] = v[0];\r\n out[1] = 0;\r\n out[2] = 0;\r\n out[3] = v[1];\r\n return out;\r\n}\r\n\r\n/**\r\n * Returns a string representation of a mat2\r\n *\r\n * @param {mat2} a matrix to represent as a string\r\n * @returns {String} string representation of the matrix\r\n */\r\nexport function str(a) {\r\n return 'mat2(' + a[0] + ', ' + a[1] + ', ' + a[2] + ', ' + a[3] + ')';\r\n}\r\n\r\n/**\r\n * Returns Frobenius norm of a mat2\r\n *\r\n * @param {mat2} a the matrix to calculate Frobenius norm of\r\n * @returns {Number} Frobenius norm\r\n */\r\nexport function frob(a) {\r\n return(Math.sqrt(Math.pow(a[0], 2) + Math.pow(a[1], 2) + Math.pow(a[2], 2) + Math.pow(a[3], 2)))\r\n}\r\n\r\n/**\r\n * Returns L, D and U matrices (Lower triangular, Diagonal and Upper triangular) by factorizing the input matrix\r\n * @param {mat2} L the lower triangular matrix\r\n * @param {mat2} D the diagonal matrix\r\n * @param {mat2} U the upper triangular matrix\r\n * @param {mat2} a the input matrix to factorize\r\n */\r\n\r\nexport function LDU(L, D, U, a) {\r\n L[2] = a[2]/a[0];\r\n U[0] = a[0];\r\n U[1] = a[1];\r\n U[3] = a[3] - L[2] * U[1];\r\n return [L, D, U];\r\n}\r\n\r\n/**\r\n * Adds two mat2's\r\n *\r\n * @param {mat2} out the receiving matrix\r\n * @param {mat2} a the first operand\r\n * @param {mat2} b the second operand\r\n * @returns {mat2} out\r\n */\r\nexport function add(out, a, b) {\r\n out[0] = a[0] + b[0];\r\n out[1] = a[1] + b[1];\r\n out[2] = a[2] + b[2];\r\n out[3] = a[3] + b[3];\r\n return out;\r\n}\r\n\r\n/**\r\n * Subtracts matrix b from matrix a\r\n *\r\n * @param {mat2} out the receiving matrix\r\n * @param {mat2} a the first operand\r\n * @param {mat2} b the second operand\r\n * @returns {mat2} out\r\n */\r\nexport function subtract(out, a, b) {\r\n out[0] = a[0] - b[0];\r\n out[1] = a[1] - b[1];\r\n out[2] = a[2] - b[2];\r\n out[3] = a[3] - b[3];\r\n return out;\r\n}\r\n\r\n/**\r\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\r\n *\r\n * @param {mat2} a The first matrix.\r\n * @param {mat2} b The second matrix.\r\n * @returns {Boolean} True if the matrices are equal, false otherwise.\r\n */\r\nexport function exactEquals(a, b) {\r\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3];\r\n}\r\n\r\n/**\r\n * Returns whether or not the matrices have approximately the same elements in the same position.\r\n *\r\n * @param {mat2} a The first matrix.\r\n * @param {mat2} b The second matrix.\r\n * @returns {Boolean} True if the matrices are equal, false otherwise.\r\n */\r\nexport function equals(a, b) {\r\n let a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3];\r\n let b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3];\r\n return (Math.abs(a0 - b0) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a0), Math.abs(b0)) &&\r\n Math.abs(a1 - b1) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a1), Math.abs(b1)) &&\r\n Math.abs(a2 - b2) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a2), Math.abs(b2)) &&\r\n Math.abs(a3 - b3) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a3), Math.abs(b3)));\r\n}\r\n\r\n/**\r\n * Multiply each element of the matrix by a scalar.\r\n *\r\n * @param {mat2} out the receiving matrix\r\n * @param {mat2} a the matrix to scale\r\n * @param {Number} b amount to scale the matrix's elements by\r\n * @returns {mat2} out\r\n */\r\nexport function multiplyScalar(out, a, b) {\r\n out[0] = a[0] * b;\r\n out[1] = a[1] * b;\r\n out[2] = a[2] * b;\r\n out[3] = a[3] * b;\r\n return out;\r\n}\r\n\r\n/**\r\n * Adds two mat2's after multiplying each element of the second operand by a scalar value.\r\n *\r\n * @param {mat2} out the receiving vector\r\n * @param {mat2} a the first operand\r\n * @param {mat2} b the second operand\r\n * @param {Number} scale the amount to scale b's elements by before adding\r\n * @returns {mat2} out\r\n */\r\nexport function multiplyScalarAndAdd(out, a, b, scale) {\r\n out[0] = a[0] + (b[0] * scale);\r\n out[1] = a[1] + (b[1] * scale);\r\n out[2] = a[2] + (b[2] * scale);\r\n out[3] = a[3] + (b[3] * scale);\r\n return out;\r\n}\r\n\r\n/**\r\n * Alias for {@link mat2.multiply}\r\n * @function\r\n */\r\nexport const mul = multiply;\r\n\r\n/**\r\n * Alias for {@link mat2.subtract}\r\n * @function\r\n */\r\nexport const sub = subtract;\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/node_modules/gl-matrix/src/gl-matrix/mat2.js","/* Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV.\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy\r\nof this software and associated documentation files (the \"Software\"), to deal\r\nin the Software without restriction, including without limitation the rights\r\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the Software is\r\nfurnished to do so, subject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be included in\r\nall copies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\nTHE SOFTWARE. */\r\n\r\nimport * as glMatrix from \"./common.js\";\r\n\r\n/**\r\n * 2x3 Matrix\r\n * @module mat2d\r\n *\r\n * @description\r\n * A mat2d contains six elements defined as:\r\n * <pre>\r\n * [a, c, tx,\r\n * b, d, ty]\r\n * </pre>\r\n * This is a short form for the 3x3 matrix:\r\n * <pre>\r\n * [a, c, tx,\r\n * b, d, ty,\r\n * 0, 0, 1]\r\n * </pre>\r\n * The last row is ignored so the array is shorter and operations are faster.\r\n */\r\n\r\n/**\r\n * Creates a new identity mat2d\r\n *\r\n * @returns {mat2d} a new 2x3 matrix\r\n */\r\nexport function create() {\r\n let out = new glMatrix.ARRAY_TYPE(6);\r\n out[0] = 1;\r\n out[1] = 0;\r\n out[2] = 0;\r\n out[3] = 1;\r\n out[4] = 0;\r\n out[5] = 0;\r\n return out;\r\n}\r\n\r\n/**\r\n * Creates a new mat2d initialized with values from an existing matrix\r\n *\r\n * @param {mat2d} a matrix to clone\r\n * @returns {mat2d} a new 2x3 matrix\r\n */\r\nexport function clone(a) {\r\n let out = new glMatrix.ARRAY_TYPE(6);\r\n out[0] = a[0];\r\n out[1] = a[1];\r\n out[2] = a[2];\r\n out[3] = a[3];\r\n out[4] = a[4];\r\n out[5] = a[5];\r\n return out;\r\n}\r\n\r\n/**\r\n * Copy the values from one mat2d to another\r\n *\r\n * @param {mat2d} out the receiving matrix\r\n * @param {mat2d} a the source matrix\r\n * @returns {mat2d} out\r\n */\r\nexport function copy(out, a) {\r\n out[0] = a[0];\r\n out[1] = a[1];\r\n out[2] = a[2];\r\n out[3] = a[3];\r\n out[4] = a[4];\r\n out[5] = a[5];\r\n return out;\r\n}\r\n\r\n/**\r\n * Set a mat2d to the identity matrix\r\n *\r\n * @param {mat2d} out the receiving matrix\r\n * @returns {mat2d} out\r\n */\r\nexport function identity(out) {\r\n out[0] = 1;\r\n out[1] = 0;\r\n out[2] = 0;\r\n out[3] = 1;\r\n out[4] = 0;\r\n out[5] = 0;\r\n return out;\r\n}\r\n\r\n/**\r\n * Create a new mat2d with the given values\r\n *\r\n * @param {Number} a Component A (index 0)\r\n * @param {Number} b Component B (index 1)\r\n * @param {Number} c Component C (index 2)\r\n * @param {Number} d Component D (index 3)\r\n * @param {Number} tx Component TX (index 4)\r\n * @param {Number} ty Component TY (index 5)\r\n * @returns {mat2d} A new mat2d\r\n */\r\nexport function fromValues(a, b, c, d, tx, ty) {\r\n let out = new glMatrix.ARRAY_TYPE(6);\r\n out[0] = a;\r\n out[1] = b;\r\n out[2] = c;\r\n out[3] = d;\r\n out[4] = tx;\r\n out[5] = ty;\r\n return out;\r\n}\r\n\r\n/**\r\n * Set the components of a mat2d to the given values\r\n *\r\n * @param {mat2d} out the receiving matrix\r\n * @param {Number} a Component A (index 0)\r\n * @param {Number} b Component B (index 1)\r\n * @param {Number} c Component C (index 2)\r\n * @param {Number} d Component D (index 3)\r\n * @param {Number} tx Component TX (index 4)\r\n * @param {Number} ty Component TY (index 5)\r\n * @returns {mat2d} out\r\n */\r\nexport function set(out, a, b, c, d, tx, ty) {\r\n out[0] = a;\r\n out[1] = b;\r\n out[2] = c;\r\n out[3] = d;\r\n out[4] = tx;\r\n out[5] = ty;\r\n return out;\r\n}\r\n\r\n/**\r\n * Inverts a mat2d\r\n *\r\n * @param {mat2d} out the receiving matrix\r\n * @param {mat2d} a the source matrix\r\n * @returns {mat2d} out\r\n */\r\nexport function invert(out, a) {\r\n let aa = a[0], ab = a[1], ac = a[2], ad = a[3];\r\n let atx = a[4], aty = a[5];\r\n\r\n let det = aa * ad - ab * ac;\r\n if(!det){\r\n return null;\r\n }\r\n det = 1.0 / det;\r\n\r\n out[0] = ad * det;\r\n out[1] = -ab * det;\r\n out[2] = -ac * det;\r\n out[3] = aa * det;\r\n out[4] = (ac * aty - ad * atx) * det;\r\n out[5] = (ab * atx - aa * aty) * det;\r\n return out;\r\n}\r\n\r\n/**\r\n * Calculates the determinant of a mat2d\r\n *\r\n * @param {mat2d} a the source matrix\r\n * @returns {Number} determinant of a\r\n */\r\nexport function determinant(a) {\r\n return a[0] * a[3] - a[1] * a[2];\r\n}\r\n\r\n/**\r\n * Multiplies two mat2d's\r\n *\r\n * @param {mat2d} out the receiving matrix\r\n * @param {mat2d} a the first operand\r\n * @param {mat2d} b the second operand\r\n * @returns {mat2d} out\r\n */\r\nexport function multiply(out, a, b) {\r\n let a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5];\r\n let b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5];\r\n out[0] = a0 * b0 + a2 * b1;\r\n out[1] = a1 * b0 + a3 * b1;\r\n out[2] = a0 * b2 + a2 * b3;\r\n out[3] = a1 * b2 + a3 * b3;\r\n out[4] = a0 * b4 + a2 * b5 + a4;\r\n out[5] = a1 * b4 + a3 * b5 + a5;\r\n return out;\r\n}\r\n\r\n/**\r\n * Rotates a mat2d by the given angle\r\n *\r\n * @param {mat2d} out the receiving matrix\r\n * @param {mat2d} a the matrix to rotate\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat2d} out\r\n */\r\nexport function rotate(out, a, rad) {\r\n let a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5];\r\n let s = Math.sin(rad);\r\n let c = Math.cos(rad);\r\n out[0] = a0 * c + a2 * s;\r\n out[1] = a1 * c + a3 * s;\r\n out[2] = a0 * -s + a2 * c;\r\n out[3] = a1 * -s + a3 * c;\r\n out[4] = a4;\r\n out[5] = a5;\r\n return out;\r\n}\r\n\r\n/**\r\n * Scales the mat2d by the dimensions in the given vec2\r\n *\r\n * @param {mat2d} out the receiving matrix\r\n * @param {mat2d} a the matrix to translate\r\n * @param {vec2} v the vec2 to scale the matrix by\r\n * @returns {mat2d} out\r\n **/\r\nexport function scale(out, a, v) {\r\n let a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5];\r\n let v0 = v[0], v1 = v[1];\r\n out[0] = a0 * v0;\r\n out[1] = a1 * v0;\r\n out[2] = a2 * v1;\r\n out[3] = a3 * v1;\r\n out[4] = a4;\r\n out[5] = a5;\r\n return out;\r\n}\r\n\r\n/**\r\n * Translates the mat2d by the dimensions in the given vec2\r\n *\r\n * @param {mat2d} out the receiving matrix\r\n * @param {mat2d} a the matrix to translate\r\n * @param {vec2} v the vec2 to translate the matrix by\r\n * @returns {mat2d} out\r\n **/\r\nexport function translate(out, a, v) {\r\n let a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5];\r\n let v0 = v[0], v1 = v[1];\r\n out[0] = a0;\r\n out[1] = a1;\r\n out[2] = a2;\r\n out[3] = a3;\r\n out[4] = a0 * v0 + a2 * v1 + a4;\r\n out[5] = a1 * v0 + a3 * v1 + a5;\r\n return out;\r\n}\r\n\r\n/**\r\n * Creates a matrix from a given angle\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat2d.identity(dest);\r\n * mat2d.rotate(dest, dest, rad);\r\n *\r\n * @param {mat2d} out mat2d receiving operation result\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat2d} out\r\n */\r\nexport function fromRotation(out, rad) {\r\n let s = Math.sin(rad), c = Math.cos(rad);\r\n out[0] = c;\r\n out[1] = s;\r\n out[2] = -s;\r\n out[3] = c;\r\n out[4] = 0;\r\n out[5] = 0;\r\n return out;\r\n}\r\n\r\n/**\r\n * Creates a matrix from a vector scaling\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat2d.identity(dest);\r\n * mat2d.scale(dest, dest, vec);\r\n *\r\n * @param {mat2d} out mat2d receiving operation result\r\n * @param {vec2} v Scaling vector\r\n * @returns {mat2d} out\r\n */\r\nexport function fromScaling(out, v) {\r\n out[0] = v[0];\r\n out[1] = 0;\r\n out[2] = 0;\r\n out[3] = v[1];\r\n out[4] = 0;\r\n out[5] = 0;\r\n return out;\r\n}\r\n\r\n/**\r\n * Creates a matrix from a vector translation\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat2d.identity(dest);\r\n * mat2d.translate(dest, dest, vec);\r\n *\r\n * @param {mat2d} out mat2d receiving operation result\r\n * @param {vec2} v Translation vector\r\n * @returns {mat2d} out\r\n */\r\nexport function fromTranslation(out, v) {\r\n out[0] = 1;\r\n out[1] = 0;\r\n out[2] = 0;\r\n out[3] = 1;\r\n out[4] = v[0];\r\n out[5] = v[1];\r\n return out;\r\n}\r\n\r\n/**\r\n * Returns a string representation of a mat2d\r\n *\r\n * @param {mat2d} a matrix to represent as a string\r\n * @returns {String} string representation of the matrix\r\n */\r\nexport function str(a) {\r\n return 'mat2d(' + a[0] + ', ' + a[1] + ', ' + a[2] + ', ' +\r\n a[3] + ', ' + a[4] + ', ' + a[5] + ')';\r\n}\r\n\r\n/**\r\n * Returns Frobenius norm of a mat2d\r\n *\r\n * @param {mat2d} a the matrix to calculate Frobenius norm of\r\n * @returns {Number} Frobenius norm\r\n */\r\nexport function frob(a) {\r\n return(Math.sqrt(Math.pow(a[0], 2) + Math.pow(a[1], 2) + Math.pow(a[2], 2) + Math.pow(a[3], 2) + Math.pow(a[4], 2) + Math.pow(a[5], 2) + 1))\r\n}\r\n\r\n/**\r\n * Adds two mat2d's\r\n *\r\n * @param {mat2d} out the receiving matrix\r\n * @param {mat2d} a the first operand\r\n * @param {mat2d} b the second operand\r\n * @returns {mat2d} out\r\n */\r\nexport function add(out, a, b) {\r\n out[0] = a[0] + b[0];\r\n out[1] = a[1] + b[1];\r\n out[2] = a[2] + b[2];\r\n out[3] = a[3] + b[3];\r\n out[4] = a[4] + b[4];\r\n out[5] = a[5] + b[5];\r\n return out;\r\n}\r\n\r\n/**\r\n * Subtracts matrix b from matrix a\r\n *\r\n * @param {mat2d} out the receiving matrix\r\n * @param {mat2d} a the first operand\r\n * @param {mat2d} b the second operand\r\n * @returns {mat2d} out\r\n */\r\nexport function subtract(out, a, b) {\r\n out[0] = a[0] - b[0];\r\n out[1] = a[1] - b[1];\r\n out[2] = a[2] - b[2];\r\n out[3] = a[3] - b[3];\r\n out[4] = a[4] - b[4];\r\n out[5] = a[5] - b[5];\r\n return out;\r\n}\r\n\r\n/**\r\n * Multiply each element of the matrix by a scalar.\r\n *\r\n * @param {mat2d} out the receiving matrix\r\n * @param {mat2d} a the matrix to scale\r\n * @param {Number} b amount to scale the matrix's elements by\r\n * @returns {mat2d} out\r\n */\r\nexport function multiplyScalar(out, a, b) {\r\n out[0] = a[0] * b;\r\n out[1] = a[1] * b;\r\n out[2] = a[2] * b;\r\n out[3] = a[3] * b;\r\n out[4] = a[4] * b;\r\n out[5] = a[5] * b;\r\n return out;\r\n}\r\n\r\n/**\r\n * Adds two mat2d's after multiplying each element of the second operand by a scalar value.\r\n *\r\n * @param {mat2d} out the receiving vector\r\n * @param {mat2d} a the first operand\r\n * @param {mat2d} b the second operand\r\n * @param {Number} scale the amount to scale b's elements by before adding\r\n * @returns {mat2d} out\r\n */\r\nexport function multiplyScalarAndAdd(out, a, b, scale) {\r\n out[0] = a[0] + (b[0] * scale);\r\n out[1] = a[1] + (b[1] * scale);\r\n out[2] = a[2] + (b[2] * scale);\r\n out[3] = a[3] + (b[3] * scale);\r\n out[4] = a[4] + (b[4] * scale);\r\n out[5] = a[5] + (b[5] * scale);\r\n return out;\r\n}\r\n\r\n/**\r\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\r\n *\r\n * @param {mat2d} a The first matrix.\r\n * @param {mat2d} b The second matrix.\r\n * @returns {Boolean} True if the matrices are equal, false otherwise.\r\n */\r\nexport function exactEquals(a, b) {\r\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5];\r\n}\r\n\r\n/**\r\n * Returns whether or not the matrices have approximately the same elements in the same position.\r\n *\r\n * @param {mat2d} a The first matrix.\r\n * @param {mat2d} b The second matrix.\r\n * @returns {Boolean} True if the matrices are equal, false otherwise.\r\n */\r\nexport function equals(a, b) {\r\n let a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5];\r\n let b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5];\r\n return (Math.abs(a0 - b0) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a0), Math.abs(b0)) &&\r\n Math.abs(a1 - b1) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a1), Math.abs(b1)) &&\r\n Math.abs(a2 - b2) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a2), Math.abs(b2)) &&\r\n Math.abs(a3 - b3) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a3), Math.abs(b3)) &&\r\n Math.abs(a4 - b4) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a4), Math.abs(b4)) &&\r\n Math.abs(a5 - b5) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a5), Math.abs(b5)));\r\n}\r\n\r\n/**\r\n * Alias for {@link mat2d.multiply}\r\n * @function\r\n */\r\nexport const mul = multiply;\r\n\r\n/**\r\n * Alias for {@link mat2d.subtract}\r\n * @function\r\n */\r\nexport const sub = subtract;\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/node_modules/gl-matrix/src/gl-matrix/mat2d.js","/* Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV.\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy\r\nof this software and associated documentation files (the \"Software\"), to deal\r\nin the Software without restriction, including without limitation the rights\r\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the Software is\r\nfurnished to do so, subject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be included in\r\nall copies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\nTHE SOFTWARE. */\r\n\r\n\r\nimport * as glMatrix from \"./common.js\";\r\nimport * as quat from \"./quat.js\";\r\nimport * as mat4 from \"./mat4.js\";\r\n\r\n/**\r\n * Dual Quaternion<br>\r\n * Format: [real, dual]<br>\r\n * Quaternion format: XYZW<br>\r\n * Make sure to have normalized dual quaternions, otherwise the functions may not work as intended.<br>\r\n * @module quat2\r\n */\r\n\r\n\r\n/**\r\n * Creates a new identity dual quat\r\n *\r\n * @returns {quat2} a new dual quaternion [real -> rotation, dual -> translation]\r\n */\r\nexport function create() {\r\n let dq = new glMatrix.ARRAY_TYPE(8);\r\n dq[0] = 0;\r\n dq[1] = 0;\r\n dq[2] = 0;\r\n dq[3] = 1;\r\n dq[4] = 0;\r\n dq[5] = 0;\r\n dq[6] = 0;\r\n dq[7] = 0;\r\n return dq;\r\n}\r\n\r\n/**\r\n * Creates a new quat initialized with values from an existing quaternion\r\n *\r\n * @param {quat2} a dual quaternion to clone\r\n * @returns {quat2} new dual quaternion\r\n * @function\r\n */\r\nexport function clone(a) {\r\n let dq = new glMatrix.ARRAY_TYPE(8);\r\n dq[0] = a[0];\r\n dq[1] = a[1];\r\n dq[2] = a[2];\r\n dq[3] = a[3];\r\n dq[4] = a[4];\r\n dq[5] = a[5];\r\n dq[6] = a[6];\r\n dq[7] = a[7];\r\n return dq;\r\n}\r\n\r\n/**\r\n * Creates a new dual quat initialized with the given values\r\n *\r\n * @param {Number} x1 X component\r\n * @param {Number} y1 Y component\r\n * @param {Number} z1 Z component\r\n * @param {Number} w1 W component\r\n * @param {Number} x2 X component\r\n * @param {Number} y2 Y component\r\n * @param {Number} z2 Z component\r\n * @param {Number} w2 W component\r\n * @returns {quat2} new dual quaternion\r\n * @function\r\n */\r\nexport function fromValues(x1, y1, z1, w1, x2, y2, z2, w2) {\r\n let dq = new glMatrix.ARRAY_TYPE(8);\r\n dq[0] = x1;\r\n dq[1] = y1;\r\n dq[2] = z1;\r\n dq[3] = w1;\r\n dq[4] = x2;\r\n dq[5] = y2;\r\n dq[6] = z2;\r\n dq[7] = w2;\r\n return dq;\r\n}\r\n\r\n/**\r\n * Creates a new dual quat from the given values (quat and translation)\r\n *\r\n * @param {Number} x1 X component\r\n * @param {Number} y1 Y component\r\n * @param {Number} z1 Z component\r\n * @param {Number} w1 W component\r\n * @param {Number} x2 X component (translation)\r\n * @param {Number} y2 Y component (translation)\r\n * @param {Number} z2 Z component (translation)\r\n * @returns {quat2} new dual quaternion\r\n * @function\r\n */\r\nexport function fromRotationTranslationValues(x1, y1, z1, w1, x2, y2, z2) {\r\n let dq = new glMatrix.ARRAY_TYPE(8);\r\n dq[0] = x1;\r\n dq[1] = y1;\r\n dq[2] = z1;\r\n dq[3] = w1;\r\n let ax = x2 * 0.5,\r\n ay = y2 * 0.5,\r\n az = z2 * 0.5;\r\n dq[4] = ax * w1 + ay * z1 - az * y1;\r\n dq[5] = ay * w1 + az * x1 - ax * z1;\r\n dq[6] = az * w1 + ax * y1 - ay * x1;\r\n dq[7] = -ax * x1 - ay * y1 - az * z1;\r\n return dq;\r\n}\r\n\r\n/**\r\n * Creates a dual quat from a quaternion and a translation\r\n *\r\n * @param {quat2} dual quaternion receiving operation result\r\n * @param {quat} q quaternion\r\n * @param {vec3} t tranlation vector\r\n * @returns {quat2} dual quaternion receiving operation result\r\n * @function\r\n */\r\nexport function fromRotationTranslation(out, q, t) {\r\n let ax = t[0] * 0.5,\r\n ay = t[1] * 0.5,\r\n az = t[2] * 0.5,\r\n bx = q[0],\r\n by = q[1],\r\n bz = q[2],\r\n bw = q[3];\r\n out[0] = bx;\r\n out[1] = by;\r\n out[2] = bz;\r\n out[3] = bw;\r\n out[4] = ax * bw + ay * bz - az * by;\r\n out[5] = ay * bw + az * bx - ax * bz;\r\n out[6] = az * bw + ax * by - ay * bx;\r\n out[7] = -ax * bx - ay * by - az * bz;\r\n return out;\r\n}\r\n\r\n/**\r\n * Creates a dual quat from a translation\r\n *\r\n * @param {quat2} dual quaternion receiving operation result\r\n * @param {vec3} t translation vector\r\n * @returns {quat2} dual quaternion receiving operation result\r\n * @function\r\n */\r\nexport function fromTranslation(out, t) {\r\n out[0] = 0;\r\n out[1] = 0;\r\n out[2] = 0;\r\n out[3] = 1;\r\n out[4] = t[0] * 0.5;\r\n out[5] = t[1] * 0.5;\r\n out[6] = t[2] * 0.5;\r\n out[7] = 0;\r\n return out;\r\n}\r\n\r\n/**\r\n * Creates a dual quat from a quaternion\r\n *\r\n * @param {quat2} dual quaternion receiving operation result\r\n * @param {quat} q the quaternion\r\n * @returns {quat2} dual quaternion receiving operation result\r\n * @function\r\n */\r\nexport function fromRotation(out, q) {\r\n out[0] = q[0];\r\n out[1] = q[1];\r\n out[2] = q[2];\r\n out[3] = q[3];\r\n out[4] = 0;\r\n out[5] = 0;\r\n out[6] = 0;\r\n out[7] = 0;\r\n return out;\r\n}\r\n\r\n/**\r\n * Creates a new dual quat from a matrix (4x4)\r\n * \r\n * @param {quat2} out the dual quaternion\r\n * @param {mat4} a the matrix\r\n * @returns {quat2} dual quat receiving operation result\r\n * @function\r\n */\r\nexport function fromMat4(out, a) {\r\n //TODO Optimize this \r\n let outer = quat.create();\r\n mat4.getRotation(outer, a);\r\n let t = new glMatrix.ARRAY_TYPE(3);\r\n mat4.getTranslation(t, a);\r\n fromRotationTranslation(out, outer, t);\r\n return out;\r\n}\r\n\r\n/**\r\n * Copy the values from one dual quat to another\r\n *\r\n * @param {quat2} out the receiving dual quaternion\r\n * @param {quat2} a the source dual quaternion\r\n * @returns {quat2} out\r\n * @function\r\n */\r\nexport function copy(out, a) {\r\n out[0] = a[0];\r\n out[1] = a[1];\r\n out[2] = a[2];\r\n out[3] = a[3];\r\n out[4] = a[4];\r\n out[5] = a[5];\r\n out[6] = a[6];\r\n out[7] = a[7];\r\n return out;\r\n}\r\n\r\n/**\r\n * Set a dual quat to the identity dual quaternion\r\n *\r\n * @param {quat2} out the receiving quaternion\r\n * @returns {quat2} out\r\n */\r\nexport function identity(out) {\r\n out[0] = 0;\r\n out[1] = 0;\r\n out[2] = 0;\r\n out[3] = 1;\r\n out[4] = 0;\r\n out[5] = 0;\r\n out[6] = 0;\r\n out[7] = 0;\r\n return out;\r\n}\r\n\r\n/**\r\n * Set the components of a dual quat to the given values\r\n *\r\n * @param {quat2} out the receiving quaternion\r\n * @param {Number} x1 X component\r\n * @param {Number} y1 Y component\r\n * @param {Number} z1 Z component\r\n * @param {Number} w1 W component\r\n * @param {Number} x2 X component\r\n * @param {Number} y2 Y component\r\n * @param {Number} z2 Z component\r\n * @param {Number} w2 W component\r\n * @returns {quat2} out\r\n * @function\r\n */\r\nexport function set(out, x1, y1, z1, w1, x2, y2, z2, w2) {\r\n out[0] = x1;\r\n out[1] = y1;\r\n out[2] = z1;\r\n out[3] = w1;\r\n\r\n out[4] = x2;\r\n out[5] = y2;\r\n out[6] = z2;\r\n out[7] = w2;\r\n return out;\r\n}\r\n\r\n/**\r\n * Gets the real part of a dual quat\r\n * @param {quat} out real part\r\n * @param {quat2} a Dual Quaternion\r\n * @return {quat} real part\r\n */\r\nexport const getReal = quat.copy;\r\n\r\n/**\r\n * Gets the dual part of a dual quat\r\n * @param {quat} out dual part\r\n * @param {quat2} a Dual Quaternion\r\n * @return {quat} dual part\r\n */\r\nexport function getDual(out, a) {\r\n out[0] = a[4];\r\n out[1] = a[5];\r\n out[2] = a[6];\r\n out[3] = a[7];\r\n return out;\r\n}\r\n\r\n/**\r\n * Set the real component of a dual quat to the given quaternion\r\n *\r\n * @param {quat2} out the receiving quaternion\r\n * @param {quat} q a quaternion representing the real part\r\n * @returns {quat2} out\r\n * @function\r\n */\r\nexport const setReal = quat.copy;\r\n\r\n/**\r\n * Set the dual component of a dual quat to the given quaternion\r\n *\r\n * @param {quat2} out the receiving quaternion\r\n * @param {quat} q a quaternion representing the dual part\r\n * @returns {quat2} out\r\n * @function\r\n */\r\nexport function setDual(out, q) {\r\n out[4] = q[0];\r\n out[5] = q[1];\r\n out[6] = q[2];\r\n out[7] = q[3];\r\n return out;\r\n}\r\n\r\n/**\r\n * Gets the translation of a normalized dual quat\r\n * @param {vec3} out translation\r\n * @param {quat2} a Dual Quaternion to be decomposed\r\n * @return {vec3} translation\r\n */\r\nexport function getTranslation(out, a) {\r\n let ax = a[4],\r\n ay = a[5],\r\n az = a[6],\r\n aw = a[7],\r\n bx = -a[0],\r\n by = -a[1],\r\n bz = -a[2],\r\n bw = a[3];\r\n out[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2;\r\n out[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2;\r\n out[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2;\r\n return out;\r\n}\r\n\r\n/**\r\n * Translates a dual quat by the given vector\r\n *\r\n * @param {quat2} out the receiving dual quaternion\r\n * @param {quat2} a the dual quaternion to translate\r\n * @param {vec3} v vector to translate by\r\n * @returns {quat2} out\r\n */\r\nexport function translate(out, a, v) {\r\n let ax1 = a[0],\r\n ay1 = a[1],\r\n az1 = a[2],\r\n aw1 = a[3],\r\n bx1 = v[0] * 0.5,\r\n by1 = v[1] * 0.5,\r\n bz1 = v[2] * 0.5,\r\n ax2 = a[4],\r\n ay2 = a[5],\r\n az2 = a[6],\r\n aw2 = a[7];\r\n out[0] = ax1;\r\n out[1] = ay1;\r\n out[2] = az1;\r\n out[3] = aw1;\r\n out[4] = aw1 * bx1 + ay1 * bz1 - az1 * by1 + ax2;\r\n out[5] = aw1 * by1 + az1 * bx1 - ax1 * bz1 + ay2;\r\n out[6] = aw1 * bz1 + ax1 * by1 - ay1 * bx1 + az2;\r\n out[7] = -ax1 * bx1 - ay1 * by1 - az1 * bz1 + aw2;\r\n return out;\r\n}\r\n\r\n/**\r\n * Rotates a dual quat around the X axis\r\n *\r\n * @param {quat2} out the receiving dual quaternion\r\n * @param {quat2} a the dual quaternion to rotate\r\n * @param {number} rad how far should the rotation be\r\n * @returns {quat2} out\r\n */\r\nexport function rotateX(out, a, rad) {\r\n let bx = -a[0],\r\n by = -a[1],\r\n bz = -a[2],\r\n bw = a[3],\r\n ax = a[4],\r\n ay = a[5],\r\n az = a[6],\r\n aw = a[7],\r\n ax1 = ax * bw + aw * bx + ay * bz - az * by,\r\n ay1 = ay * bw + aw * by + az * bx - ax * bz,\r\n az1 = az * bw + aw * bz + ax * by - ay * bx,\r\n aw1 = aw * bw - ax * bx - ay * by - az * bz;\r\n quat.rotateX(out, a, rad);\r\n bx = out[0];\r\n by = out[1];\r\n bz = out[2];\r\n bw = out[3];\r\n out[4] = ax1 * bw + aw1 * bx + ay1 * bz - az1 * by;\r\n out[5] = ay1 * bw + aw1 * by + az1 * bx - ax1 * bz;\r\n out[6] = az1 * bw + aw1 * bz + ax1 * by - ay1 * bx;\r\n out[7] = aw1 * bw - ax1 * bx - ay1 * by - az1 * bz;\r\n return out;\r\n}\r\n\r\n/**\r\n * Rotates a dual quat around the Y axis\r\n *\r\n * @param {quat2} out the receiving dual quaternion\r\n * @param {quat2} a the dual quaternion to rotate\r\n * @param {number} rad how far should the rotation be\r\n * @returns {quat2} out\r\n */\r\nexport function rotateY(out, a, rad) {\r\n let bx = -a[0],\r\n by = -a[1],\r\n bz = -a[2],\r\n bw = a[3],\r\n ax = a[4],\r\n ay = a[5],\r\n az = a[6],\r\n aw = a[7],\r\n ax1 = ax * bw + aw * bx + ay * bz - az * by,\r\n ay1 = ay * bw + aw * by + az * bx - ax * bz,\r\n az1 = az * bw + aw * bz + ax * by - ay * bx,\r\n aw1 = aw * bw - ax * bx - ay * by - az * bz;\r\n quat.rotateY(out, a, rad);\r\n bx = out[0];\r\n by = out[1];\r\n bz = out[2];\r\n bw = out[3];\r\n out[4] = ax1 * bw + aw1 * bx + ay1 * bz - az1 * by;\r\n out[5] = ay1 * bw + aw1 * by + az1 * bx - ax1 * bz;\r\n out[6] = az1 * bw + aw1 * bz + ax1 * by - ay1 * bx;\r\n out[7] = aw1 * bw - ax1 * bx - ay1 * by - az1 * bz;\r\n return out;\r\n}\r\n\r\n/**\r\n * Rotates a dual quat around the Z axis\r\n *\r\n * @param {quat2} out the receiving dual quaternion\r\n * @param {quat2} a the dual quaternion to rotate\r\n * @param {number} rad how far should the rotation be\r\n * @returns {quat2} out\r\n */\r\nexport function rotateZ(out, a, rad) {\r\n let bx = -a[0],\r\n by = -a[1],\r\n bz = -a[2],\r\n bw = a[3],\r\n ax = a[4],\r\n ay = a[5],\r\n az = a[6],\r\n aw = a[7],\r\n ax1 = ax * bw + aw * bx + ay * bz - az * by,\r\n ay1 = ay * bw + aw * by + az * bx - ax * bz,\r\n az1 = az * bw + aw * bz + ax * by - ay * bx,\r\n aw1 = aw * bw - ax * bx - ay * by - az * bz;\r\n quat.rotateZ(out, a, rad);\r\n bx = out[0];\r\n by = out[1];\r\n bz = out[2];\r\n bw = out[3];\r\n out[4] = ax1 * bw + aw1 * bx + ay1 * bz - az1 * by;\r\n out[5] = ay1 * bw + aw1 * by + az1 * bx - ax1 * bz;\r\n out[6] = az1 * bw + aw1 * bz + ax1 * by - ay1 * bx;\r\n out[7] = aw1 * bw - ax1 * bx - ay1 * by - az1 * bz;\r\n return out;\r\n}\r\n\r\n/**\r\n * Rotates a dual quat by a given quaternion (a * q)\r\n *\r\n * @param {quat2} out the receiving dual quaternion\r\n * @param {quat2} a the dual quaternion to rotate\r\n * @param {quat} q quaternion to rotate by\r\n * @returns {quat2} out\r\n */\r\nexport function rotateByQuatAppend(out, a, q) {\r\n let qx = q[0],\r\n qy = q[1],\r\n qz = q[2],\r\n qw = q[3],\r\n ax = a[0],\r\n ay = a[1],\r\n az = a[2],\r\n aw = a[3];\r\n\r\n out[0] = ax * qw + aw * qx + ay * qz - az * qy;\r\n out[1] = ay * qw + aw * qy + az * qx - ax * qz;\r\n out[2] = az * qw + aw * qz + ax * qy - ay * qx;\r\n out[3] = aw * qw - ax * qx - ay * qy - az * qz;\r\n ax = a[4];\r\n ay = a[5];\r\n az = a[6];\r\n aw = a[7];\r\n out[4] = ax * qw + aw * qx + ay * qz - az * qy;\r\n out[5] = ay * qw + aw * qy + az * qx - ax * qz;\r\n out[6] = az * qw + aw * qz + ax * qy - ay * qx;\r\n out[7] = aw * qw - ax * qx - ay * qy - az * qz;\r\n return out;\r\n}\r\n\r\n/**\r\n * Rotates a dual quat by a given quaternion (q * a)\r\n *\r\n * @param {quat2} out the receiving dual quaternion\r\n * @param {quat} q quaternion to rotate by\r\n * @param {quat2} a the dual quaternion to rotate\r\n * @returns {quat2} out\r\n */\r\nexport function rotateByQuatPrepend(out, q, a) {\r\n let qx = q[0],\r\n qy = q[1],\r\n qz = q[2],\r\n qw = q[3],\r\n bx = a[0],\r\n by = a[1],\r\n bz = a[2],\r\n bw = a[3];\r\n\r\n out[0] = qx * bw + qw * bx + qy * bz - qz * by;\r\n out[1] = qy * bw + qw * by + qz * bx - qx * bz;\r\n out[2] = qz * bw + qw * bz + qx * by - qy * bx;\r\n out[3] = qw * bw - qx * bx - qy * by - qz * bz;\r\n bx = a[4];\r\n by = a[5];\r\n bz = a[6];\r\n bw = a[7];\r\n out[4] = qx * bw + qw * bx + qy * bz - qz * by;\r\n out[5] = qy * bw + qw * by + qz * bx - qx * bz;\r\n out[6] = qz * bw + qw * bz + qx * by - qy * bx;\r\n out[7] = qw * bw - qx * bx - qy * by - qz * bz;\r\n return out;\r\n}\r\n\r\n/**\r\n * Rotates a dual quat around a given axis. Does the normalisation automatically\r\n *\r\n * @param {quat2} out the receiving dual quaternion\r\n * @param {quat2} a the dual quaternion to rotate\r\n * @param {vec3} axis the axis to rotate around\r\n * @param {Number} rad how far the rotation should be\r\n * @returns {quat2} out\r\n */\r\nexport function rotateAroundAxis(out, a, axis, rad) {\r\n //Special case for rad = 0\r\n if (Math.abs(rad) < glMatrix.EPSILON) {\r\n return copy(out, a);\r\n }\r\n let axisLength = Math.sqrt(axis[0] * axis[0] + axis[1] * axis[1] + axis[2] * axis[2]);\r\n\r\n rad = rad * 0.5;\r\n let s = Math.sin(rad);\r\n let bx = s * axis[0] / axisLength;\r\n let by = s * axis[1] / axisLength;\r\n let bz = s * axis[2] / axisLength;\r\n let bw = Math.cos(rad);\r\n\r\n let ax1 = a[0],\r\n ay1 = a[1],\r\n az1 = a[2],\r\n aw1 = a[3];\r\n out[0] = ax1 * bw + aw1 * bx + ay1 * bz - az1 * by;\r\n out[1] = ay1 * bw + aw1 * by + az1 * bx - ax1 * bz;\r\n out[2] = az1 * bw + aw1 * bz + ax1 * by - ay1 * bx;\r\n out[3] = aw1 * bw - ax1 * bx - ay1 * by - az1 * bz;\r\n\r\n let ax = a[4],\r\n ay = a[5],\r\n az = a[6],\r\n aw = a[7];\r\n out[4] = ax * bw + aw * bx + ay * bz - az * by;\r\n out[5] = ay * bw + aw * by + az * bx - ax * bz;\r\n out[6] = az * bw + aw * bz + ax * by - ay * bx;\r\n out[7] = aw * bw - ax * bx - ay * by - az * bz;\r\n\r\n return out;\r\n}\r\n\r\n/**\r\n * Adds two dual quat's\r\n *\r\n * @param {quat2} out the receiving dual quaternion\r\n * @param {quat2} a the first operand\r\n * @param {quat2} b the second operand\r\n * @returns {quat2} out\r\n * @function\r\n */\r\nexport function add(out, a, b) {\r\n out[0] = a[0] + b[0];\r\n out[1] = a[1] + b[1];\r\n out[2] = a[2] + b[2];\r\n out[3] = a[3] + b[3];\r\n out[4] = a[4] + b[4];\r\n out[5] = a[5] + b[5];\r\n out[6] = a[6] + b[6];\r\n out[7] = a[7] + b[7];\r\n return out;\r\n}\r\n\r\n/**\r\n * Multiplies two dual quat's\r\n *\r\n * @param {quat2} out the receiving dual quaternion\r\n * @param {quat2} a the first operand\r\n * @param {quat2} b the second operand\r\n * @returns {quat2} out\r\n */\r\nexport function multiply(out, a, b) {\r\n let ax0 = a[0],\r\n ay0 = a[1],\r\n az0 = a[2],\r\n aw0 = a[3],\r\n bx1 = b[4],\r\n by1 = b[5],\r\n bz1 = b[6],\r\n bw1 = b[7],\r\n ax1 = a[4],\r\n ay1 = a[5],\r\n az1 = a[6],\r\n aw1 = a[7],\r\n bx0 = b[0],\r\n by0 = b[1],\r\n bz0 = b[2],\r\n bw0 = b[3];\r\n out[0] = ax0 * bw0 + aw0 * bx0 + ay0 * bz0 - az0 * by0;\r\n out[1] = ay0 * bw0 + aw0 * by0 + az0 * bx0 - ax0 * bz0;\r\n out[2] = az0 * bw0 + aw0 * bz0 + ax0 * by0 - ay0 * bx0;\r\n out[3] = aw0 * bw0 - ax0 * bx0 - ay0 * by0 - az0 * bz0;\r\n out[4] = ax0 * bw1 + aw0 * bx1 + ay0 * bz1 - az0 * by1 + ax1 * bw0 + aw1 * bx0 + ay1 * bz0 - az1 * by0;\r\n out[5] = ay0 * bw1 + aw0 * by1 + az0 * bx1 - ax0 * bz1 + ay1 * bw0 + aw1 * by0 + az1 * bx0 - ax1 * bz0;\r\n out[6] = az0 * bw1 + aw0 * bz1 + ax0 * by1 - ay0 * bx1 + az1 * bw0 + aw1 * bz0 + ax1 * by0 - ay1 * bx0;\r\n out[7] = aw0 * bw1 - ax0 * bx1 - ay0 * by1 - az0 * bz1 + aw1 * bw0 - ax1 * bx0 - ay1 * by0 - az1 * bz0;\r\n return out;\r\n}\r\n\r\n/**\r\n * Alias for {@link quat2.multiply}\r\n * @function\r\n */\r\nexport const mul = multiply;\r\n\r\n/**\r\n * Scales a dual quat by a scalar number\r\n *\r\n * @param {quat2} out the receiving dual quat\r\n * @param {quat2} a the dual quat to scale\r\n * @param {Number} b amount to scale the dual quat by\r\n * @returns {quat2} out\r\n * @function\r\n */\r\nexport function scale(out, a, b) {\r\n out[0] = a[0] * b;\r\n out[1] = a[1] * b;\r\n out[2] = a[2] * b;\r\n out[3] = a[3] * b;\r\n out[4] = a[4] * b;\r\n out[5] = a[5] * b;\r\n out[6] = a[6] * b;\r\n out[7] = a[7] * b;\r\n return out;\r\n}\r\n\r\n/**\r\n * Calculates the dot product of two dual quat's (The dot product of the real parts)\r\n *\r\n * @param {quat2} a the first operand\r\n * @param {quat2} b the second operand\r\n * @returns {Number} dot product of a and b\r\n * @function\r\n */\r\nexport const dot = quat.dot;\r\n\r\n/**\r\n * Performs a linear interpolation between two dual quats's\r\n * NOTE: The resulting dual quaternions won't always be normalized (The error is most noticeable when t = 0.5)\r\n *\r\n * @param {quat2} out the receiving dual quat\r\n * @param {quat2} a the first operand\r\n * @param {quat2} b the second operand\r\n * @param {Number} t interpolation amount between the two inputs\r\n * @returns {quat2} out\r\n */\r\nexport function lerp(out, a, b, t) {\r\n let mt = 1 - t;\r\n if (dot(a, b) < 0) t = -t;\r\n\r\n out[0] = a[0] * mt + b[0] * t;\r\n out[1] = a[1] * mt + b[1] * t;\r\n out[2] = a[2] * mt + b[2] * t;\r\n out[3] = a[3] * mt + b[3] * t;\r\n out[4] = a[4] * mt + b[4] * t;\r\n out[5] = a[5] * mt + b[5] * t;\r\n out[6] = a[6] * mt + b[6] * t;\r\n out[7] = a[7] * mt + b[7] * t;\r\n\r\n return out;\r\n}\r\n\r\n/**\r\n * Calculates the inverse of a dual quat. If they are normalized, conjugate is cheaper\r\n *\r\n * @param {quat2} out the receiving dual quaternion\r\n * @param {quat2} a dual quat to calculate inverse of\r\n * @returns {quat2} out\r\n */\r\nexport function invert(out, a) {\r\n let sqlen = squaredLength(a);\r\n out[0] = -a[0] / sqlen;\r\n out[1] = -a[1] / sqlen;\r\n out[2] = -a[2] / sqlen;\r\n out[3] = a[3] / sqlen;\r\n out[4] = -a[4] / sqlen;\r\n out[5] = -a[5] / sqlen;\r\n out[6] = -a[6] / sqlen;\r\n out[7] = a[7] / sqlen;\r\n return out;\r\n}\r\n\r\n/**\r\n * Calculates the conjugate of a dual quat\r\n * If the dual quaternion is normalized, this function is faster than quat2.inverse and produces the same result.\r\n *\r\n * @param {quat2} out the receiving quaternion\r\n * @param {quat2} a quat to calculate conjugate of\r\n * @returns {quat2} out\r\n */\r\nexport function conjugate(out, a) {\r\n out[0] = -a[0];\r\n out[1] = -a[1];\r\n out[2] = -a[2];\r\n out[3] = a[3];\r\n out[4] = -a[4];\r\n out[5] = -a[5];\r\n out[6] = -a[6];\r\n out[7] = a[7];\r\n return out;\r\n}\r\n\r\n/**\r\n * Calculates the length of a dual quat\r\n *\r\n * @param {quat2} a dual quat to calculate length of\r\n * @returns {Number} length of a\r\n * @function\r\n */\r\nexport const length = quat.length;\r\n\r\n/**\r\n * Alias for {@link quat2.length}\r\n * @function\r\n */\r\nexport const len = length;\r\n\r\n/**\r\n * Calculates the squared length of a dual quat\r\n *\r\n * @param {quat2} a dual quat to calculate squared length of\r\n * @returns {Number} squared length of a\r\n * @function\r\n */\r\nexport const squaredLength = quat.squaredLength;\r\n\r\n/**\r\n * Alias for {@link quat2.squaredLength}\r\n * @function\r\n */\r\nexport const sqrLen = squaredLength;\r\n\r\n/**\r\n * Normalize a dual quat\r\n *\r\n * @param {quat2} out the receiving dual quaternion\r\n * @param {quat2} a dual quaternion to normalize\r\n * @returns {quat2} out\r\n * @function\r\n */\r\nexport function normalize(out, a) {\r\n let magnitude = squaredLength(a);\r\n if (magnitude > 0) {\r\n magnitude = Math.sqrt(magnitude);\r\n out[0] = a[0] / magnitude;\r\n out[1] = a[1] / magnitude;\r\n out[2] = a[2] / magnitude;\r\n out[3] = a[3] / magnitude;\r\n out[4] = a[4] / magnitude;\r\n out[5] = a[5] / magnitude;\r\n out[6] = a[6] / magnitude;\r\n out[7] = a[7] / magnitude;\r\n }\r\n return out;\r\n}\r\n\r\n/**\r\n * Returns a string representation of a dual quatenion\r\n *\r\n * @param {quat2} a dual quaternion to represent as a string\r\n * @returns {String} string representation of the dual quat\r\n */\r\nexport function str(a) {\r\n return 'quat2(' + a[0] + ', ' + a[1] + ', ' + a[2] + ', ' + a[3] + ', ' +\r\n a[4] + ', ' + a[5] + ', ' + a[6] + ', ' + a[7] + ')';\r\n}\r\n\r\n/**\r\n * Returns whether or not the dual quaternions have exactly the same elements in the same position (when compared with ===)\r\n *\r\n * @param {quat2} a the first dual quaternion.\r\n * @param {quat2} b the second dual quaternion.\r\n * @returns {Boolean} true if the dual quaternions are equal, false otherwise.\r\n */\r\nexport function exactEquals(a, b) {\r\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] &&\r\n a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7];\r\n}\r\n\r\n/**\r\n * Returns whether or not the dual quaternions have approximately the same elements in the same position.\r\n *\r\n * @param {quat2} a the first dual quat.\r\n * @param {quat2} b the second dual quat.\r\n * @returns {Boolean} true if the dual quats are equal, false otherwise.\r\n */\r\nexport function equals(a, b) {\r\n let a0 = a[0],\r\n a1 = a[1],\r\n a2 = a[2],\r\n a3 = a[3],\r\n a4 = a[4],\r\n a5 = a[5],\r\n a6 = a[6],\r\n a7 = a[7];\r\n let b0 = b[0],\r\n b1 = b[1],\r\n b2 = b[2],\r\n b3 = b[3],\r\n b4 = b[4],\r\n b5 = b[5],\r\n b6 = b[6],\r\n b7 = b[7];\r\n return (Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) &&\r\n Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) &&\r\n Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) &&\r\n Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) &&\r\n Math.abs(a4 - b4) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) &&\r\n Math.abs(a5 - b5) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) &&\r\n Math.abs(a6 - b6) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) &&\r\n Math.abs(a7 - b7) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7)));\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/node_modules/gl-matrix/src/gl-matrix/quat2.js","/* Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV.\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy\r\nof this software and associated documentation files (the \"Software\"), to deal\r\nin the Software without restriction, including without limitation the rights\r\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the Software is\r\nfurnished to do so, subject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be included in\r\nall copies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\nTHE SOFTWARE. */\r\n\r\nimport * as glMatrix from \"./common.js\";\r\n\r\n/**\r\n * 2 Dimensional Vector\r\n * @module vec2\r\n */\r\n\r\n/**\r\n * Creates a new, empty vec2\r\n *\r\n * @returns {vec2} a new 2D vector\r\n */\r\nexport function create() {\r\n let out = new glMatrix.ARRAY_TYPE(2);\r\n out[0] = 0;\r\n out[1] = 0;\r\n return out;\r\n}\r\n\r\n/**\r\n * Creates a new vec2 initialized with values from an existing vector\r\n *\r\n * @param {vec2} a vector to clone\r\n * @returns {vec2} a new 2D vector\r\n */\r\nexport function clone(a) {\r\n let out = new glMatrix.ARRAY_TYPE(2);\r\n out[0] = a[0];\r\n out[1] = a[1];\r\n return out;\r\n}\r\n\r\n/**\r\n * Creates a new vec2 initialized with the given values\r\n *\r\n * @param {Number} x X component\r\n * @param {Number} y Y component\r\n * @returns {vec2} a new 2D vector\r\n */\r\nexport function fromValues(x, y) {\r\n let out = new glMatrix.ARRAY_TYPE(2);\r\n out[0] = x;\r\n out[1] = y;\r\n return out;\r\n}\r\n\r\n/**\r\n * Copy the values from one vec2 to another\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the source vector\r\n * @returns {vec2} out\r\n */\r\nexport function copy(out, a) {\r\n out[0] = a[0];\r\n out[1] = a[1];\r\n return out;\r\n}\r\n\r\n/**\r\n * Set the components of a vec2 to the given values\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {Number} x X component\r\n * @param {Number} y Y component\r\n * @returns {vec2} out\r\n */\r\nexport function set(out, x, y) {\r\n out[0] = x;\r\n out[1] = y;\r\n return out;\r\n}\r\n\r\n/**\r\n * Adds two vec2's\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @returns {vec2} out\r\n */\r\nexport function add(out, a, b) {\r\n out[0] = a[0] + b[0];\r\n out[1] = a[1] + b[1];\r\n return out;\r\n}\r\n\r\n/**\r\n * Subtracts vector b from vector a\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @returns {vec2} out\r\n */\r\nexport function subtract(out, a, b) {\r\n out[0] = a[0] - b[0];\r\n out[1] = a[1] - b[1];\r\n return out;\r\n}\r\n\r\n/**\r\n * Multiplies two vec2's\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @returns {vec2} out\r\n */\r\nexport function multiply(out, a, b) {\r\n out[0] = a[0] * b[0];\r\n out[1] = a[1] * b[1];\r\n return out;\r\n};\r\n\r\n/**\r\n * Divides two vec2's\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @returns {vec2} out\r\n */\r\nexport function divide(out, a, b) {\r\n out[0] = a[0] / b[0];\r\n out[1] = a[1] / b[1];\r\n return out;\r\n};\r\n\r\n/**\r\n * Math.ceil the components of a vec2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a vector to ceil\r\n * @returns {vec2} out\r\n */\r\nexport function ceil(out, a) {\r\n out[0] = Math.ceil(a[0]);\r\n out[1] = Math.ceil(a[1]);\r\n return out;\r\n};\r\n\r\n/**\r\n * Math.floor the components of a vec2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a vector to floor\r\n * @returns {vec2} out\r\n */\r\nexport function floor(out, a) {\r\n out[0] = Math.floor(a[0]);\r\n out[1] = Math.floor(a[1]);\r\n return out;\r\n};\r\n\r\n/**\r\n * Returns the minimum of two vec2's\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @returns {vec2} out\r\n */\r\nexport function min(out, a, b) {\r\n out[0] = Math.min(a[0], b[0]);\r\n out[1] = Math.min(a[1], b[1]);\r\n return out;\r\n};\r\n\r\n/**\r\n * Returns the maximum of two vec2's\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @returns {vec2} out\r\n */\r\nexport function max(out, a, b) {\r\n out[0] = Math.max(a[0], b[0]);\r\n out[1] = Math.max(a[1], b[1]);\r\n return out;\r\n};\r\n\r\n/**\r\n * Math.round the components of a vec2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a vector to round\r\n * @returns {vec2} out\r\n */\r\nexport function round (out, a) {\r\n out[0] = Math.round(a[0]);\r\n out[1] = Math.round(a[1]);\r\n return out;\r\n};\r\n\r\n/**\r\n * Scales a vec2 by a scalar number\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the vector to scale\r\n * @param {Number} b amount to scale the vector by\r\n * @returns {vec2} out\r\n */\r\nexport function scale(out, a, b) {\r\n out[0] = a[0] * b;\r\n out[1] = a[1] * b;\r\n return out;\r\n};\r\n\r\n/**\r\n * Adds two vec2's after scaling the second operand by a scalar value\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @param {Number} scale the amount to scale b by before adding\r\n * @returns {vec2} out\r\n */\r\nexport function scaleAndAdd(out, a, b, scale) {\r\n out[0] = a[0] + (b[0] * scale);\r\n out[1] = a[1] + (b[1] * scale);\r\n return out;\r\n};\r\n\r\n/**\r\n * Calculates the euclidian distance between two vec2's\r\n *\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @returns {Number} distance between a and b\r\n */\r\nexport function distance(a, b) {\r\n var x = b[0] - a[0],\r\n y = b[1] - a[1];\r\n return Math.sqrt(x*x + y*y);\r\n};\r\n\r\n/**\r\n * Calculates the squared euclidian distance between two vec2's\r\n *\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @returns {Number} squared distance between a and b\r\n */\r\nexport function squaredDistance(a, b) {\r\n var x = b[0] - a[0],\r\n y = b[1] - a[1];\r\n return x*x + y*y;\r\n};\r\n\r\n/**\r\n * Calculates the length of a vec2\r\n *\r\n * @param {vec2} a vector to calculate length of\r\n * @returns {Number} length of a\r\n */\r\nexport function length(a) {\r\n var x = a[0],\r\n y = a[1];\r\n return Math.sqrt(x*x + y*y);\r\n};\r\n\r\n/**\r\n * Calculates the squared length of a vec2\r\n *\r\n * @param {vec2} a vector to calculate squared length of\r\n * @returns {Number} squared length of a\r\n */\r\nexport function squaredLength (a) {\r\n var x = a[0],\r\n y = a[1];\r\n return x*x + y*y;\r\n};\r\n\r\n/**\r\n * Negates the components of a vec2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a vector to negate\r\n * @returns {vec2} out\r\n */\r\nexport function negate(out, a) {\r\n out[0] = -a[0];\r\n out[1] = -a[1];\r\n return out;\r\n};\r\n\r\n/**\r\n * Returns the inverse of the components of a vec2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a vector to invert\r\n * @returns {vec2} out\r\n */\r\nexport function inverse(out, a) {\r\n out[0] = 1.0 / a[0];\r\n out[1] = 1.0 / a[1];\r\n return out;\r\n};\r\n\r\n/**\r\n * Normalize a vec2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a vector to normalize\r\n * @returns {vec2} out\r\n */\r\nexport function normalize(out, a) {\r\n var x = a[0],\r\n y = a[1];\r\n var len = x*x + y*y;\r\n if (len > 0) {\r\n //TODO: evaluate use of glm_invsqrt here?\r\n len = 1 / Math.sqrt(len);\r\n out[0] = a[0] * len;\r\n out[1] = a[1] * len;\r\n }\r\n return out;\r\n};\r\n\r\n/**\r\n * Calculates the dot product of two vec2's\r\n *\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @returns {Number} dot product of a and b\r\n */\r\nexport function dot(a, b) {\r\n return a[0] * b[0] + a[1] * b[1];\r\n};\r\n\r\n/**\r\n * Computes the cross product of two vec2's\r\n * Note that the cross product must by definition produce a 3D vector\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @returns {vec3} out\r\n */\r\nexport function cross(out, a, b) {\r\n var z = a[0] * b[1] - a[1] * b[0];\r\n out[0] = out[1] = 0;\r\n out[2] = z;\r\n return out;\r\n};\r\n\r\n/**\r\n * Performs a linear interpolation between two vec2's\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @param {Number} t interpolation amount between the two inputs\r\n * @returns {vec2} out\r\n */\r\nexport function lerp(out, a, b, t) {\r\n var ax = a[0],\r\n ay = a[1];\r\n out[0] = ax + t * (b[0] - ax);\r\n out[1] = ay + t * (b[1] - ay);\r\n return out;\r\n};\r\n\r\n/**\r\n * Generates a random vector with the given scale\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\r\n * @returns {vec2} out\r\n */\r\nexport function random(out, scale) {\r\n scale = scale || 1.0;\r\n var r = glMatrix.RANDOM() * 2.0 * Math.PI;\r\n out[0] = Math.cos(r) * scale;\r\n out[1] = Math.sin(r) * scale;\r\n return out;\r\n};\r\n\r\n/**\r\n * Transforms the vec2 with a mat2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the vector to transform\r\n * @param {mat2} m matrix to transform with\r\n * @returns {vec2} out\r\n */\r\nexport function transformMat2(out, a, m) {\r\n var x = a[0],\r\n y = a[1];\r\n out[0] = m[0] * x + m[2] * y;\r\n out[1] = m[1] * x + m[3] * y;\r\n return out;\r\n};\r\n\r\n/**\r\n * Transforms the vec2 with a mat2d\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the vector to transform\r\n * @param {mat2d} m matrix to transform with\r\n * @returns {vec2} out\r\n */\r\nexport function transformMat2d(out, a, m) {\r\n var x = a[0],\r\n y = a[1];\r\n out[0] = m[0] * x + m[2] * y + m[4];\r\n out[1] = m[1] * x + m[3] * y + m[5];\r\n return out;\r\n};\r\n\r\n/**\r\n * Transforms the vec2 with a mat3\r\n * 3rd vector component is implicitly '1'\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the vector to transform\r\n * @param {mat3} m matrix to transform with\r\n * @returns {vec2} out\r\n */\r\nexport function transformMat3(out, a, m) {\r\n var x = a[0],\r\n y = a[1];\r\n out[0] = m[0] * x + m[3] * y + m[6];\r\n out[1] = m[1] * x + m[4] * y + m[7];\r\n return out;\r\n};\r\n\r\n/**\r\n * Transforms the vec2 with a mat4\r\n * 3rd vector component is implicitly '0'\r\n * 4th vector component is implicitly '1'\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the vector to transform\r\n * @param {mat4} m matrix to transform with\r\n * @returns {vec2} out\r\n */\r\nexport function transformMat4(out, a, m) {\r\n let x = a[0];\r\n let y = a[1];\r\n out[0] = m[0] * x + m[4] * y + m[12];\r\n out[1] = m[1] * x + m[5] * y + m[13];\r\n return out;\r\n}\r\n\r\n/**\r\n * Returns a string representation of a vector\r\n *\r\n * @param {vec2} a vector to represent as a string\r\n * @returns {String} string representation of the vector\r\n */\r\nexport function str(a) {\r\n return 'vec2(' + a[0] + ', ' + a[1] + ')';\r\n}\r\n\r\n/**\r\n * Returns whether or not the vectors exactly have the same elements in the same position (when compared with ===)\r\n *\r\n * @param {vec2} a The first vector.\r\n * @param {vec2} b The second vector.\r\n * @returns {Boolean} True if the vectors are equal, false otherwise.\r\n */\r\nexport function exactEquals(a, b) {\r\n return a[0] === b[0] && a[1] === b[1];\r\n}\r\n\r\n/**\r\n * Returns whether or not the vectors have approximately the same elements in the same position.\r\n *\r\n * @param {vec2} a The first vector.\r\n * @param {vec2} b The second vector.\r\n * @returns {Boolean} True if the vectors are equal, false otherwise.\r\n */\r\nexport function equals(a, b) {\r\n let a0 = a[0], a1 = a[1];\r\n let b0 = b[0], b1 = b[1];\r\n return (Math.abs(a0 - b0) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a0), Math.abs(b0)) &&\r\n Math.abs(a1 - b1) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a1), Math.abs(b1)));\r\n}\r\n\r\n/**\r\n * Alias for {@link vec2.length}\r\n * @function\r\n */\r\nexport const len = length;\r\n\r\n/**\r\n * Alias for {@link vec2.subtract}\r\n * @function\r\n */\r\nexport const sub = subtract;\r\n\r\n/**\r\n * Alias for {@link vec2.multiply}\r\n * @function\r\n */\r\nexport const mul = multiply;\r\n\r\n/**\r\n * Alias for {@link vec2.divide}\r\n * @function\r\n */\r\nexport const div = divide;\r\n\r\n/**\r\n * Alias for {@link vec2.distance}\r\n * @function\r\n */\r\nexport const dist = distance;\r\n\r\n/**\r\n * Alias for {@link vec2.squaredDistance}\r\n * @function\r\n */\r\nexport const sqrDist = squaredDistance;\r\n\r\n/**\r\n * Alias for {@link vec2.squaredLength}\r\n * @function\r\n */\r\nexport const sqrLen = squaredLength;\r\n\r\n/**\r\n * Perform some operation over an array of vec2s.\r\n *\r\n * @param {Array} a the array of vectors to iterate over\r\n * @param {Number} stride Number of elements between the start of each vec2. If 0 assumes tightly packed\r\n * @param {Number} offset Number of elements to skip at the beginning of the array\r\n * @param {Number} count Number of vec2s to iterate over. If 0 iterates over entire array\r\n * @param {Function} fn Function to call for each vector in the array\r\n * @param {Object} [arg] additional argument to pass to fn\r\n * @returns {Array} a\r\n * @function\r\n */\r\nexport const forEach = (function() {\r\n let vec = create();\r\n\r\n return function(a, stride, offset, count, fn, arg) {\r\n let i, l;\r\n if(!stride) {\r\n stride = 2;\r\n }\r\n\r\n if(!offset) {\r\n offset = 0;\r\n }\r\n\r\n if(count) {\r\n l = Math.min((count * stride) + offset, a.length);\r\n } else {\r\n l = a.length;\r\n }\r\n\r\n for(i = offset; i < l; i += stride) {\r\n vec[0] = a[i]; vec[1] = a[i+1];\r\n fn(vec, vec, arg);\r\n a[i] = vec[0]; a[i+1] = vec[1];\r\n }\r\n\r\n return a;\r\n };\r\n})();\r\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/node_modules/gl-matrix/src/gl-matrix/vec2.js","import { vec3, quat, mat4 } from 'gl-matrix';\n\nimport macro from 'vtk.js/Sources/macro';\nimport vtkBoundingBox from 'vtk.js/Sources/Common/DataModel/BoundingBox';\nimport vtkMath from 'vtk.js/Sources/Common/Core/Math';\nimport vtkProp from 'vtk.js/Sources/Rendering/Core/Prop';\n\n// ----------------------------------------------------------------------------\n// vtkProp3D methods\n// ----------------------------------------------------------------------------\n\nfunction vtkProp3D(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkProp3D');\n\n publicAPI.addPosition = (deltaXYZ) => {\n model.position = model.position.map(\n (value, index) => value + deltaXYZ[index]\n );\n publicAPI.modified();\n };\n\n publicAPI.getOrientationWXYZ = () => {\n const q = quat.create();\n mat4.getRotation(q, model.rotation);\n const oaxis = vec3.create();\n const w = quat.getAxisAngle(oaxis, q);\n return [vtkMath.degreesFromRadians(w), oaxis[0], oaxis[1], oaxis[2]];\n };\n\n publicAPI.rotateX = (val) => {\n if (val === 0.0) {\n return;\n }\n mat4.rotateX(\n model.rotation,\n model.rotation,\n vtkMath.radiansFromDegrees(val)\n );\n publicAPI.modified();\n };\n\n publicAPI.rotateY = (val) => {\n if (val === 0.0) {\n return;\n }\n mat4.rotateY(\n model.rotation,\n model.rotation,\n vtkMath.radiansFromDegrees(val)\n );\n publicAPI.modified();\n };\n\n publicAPI.rotateZ = (val) => {\n if (val === 0.0) {\n return;\n }\n mat4.rotateZ(\n model.rotation,\n model.rotation,\n vtkMath.radiansFromDegrees(val)\n );\n publicAPI.modified();\n };\n\n publicAPI.rotateWXYZ = (degrees, x, y, z) => {\n if (degrees === 0.0 || (x === 0.0 && y === 0.0 && z === 0.0)) {\n return;\n }\n\n // convert to radians\n const angle = vtkMath.radiansFromDegrees(degrees);\n\n const q = quat.create();\n quat.setAxisAngle(q, [x, y, z], angle);\n\n const quatMat = mat4.create();\n mat4.fromQuat(quatMat, q);\n mat4.multiply(model.rotation, model.rotation, quatMat);\n publicAPI.modified();\n };\n\n publicAPI.setUserMatrix = (matrix) => {\n mat4.copy(model.userMatrix, matrix);\n publicAPI.modified();\n };\n\n publicAPI.getMatrix = () => {\n publicAPI.computeMatrix();\n return model.matrix;\n };\n\n publicAPI.computeMatrix = () => {\n // check whether or not need to rebuild the matrix\n if (publicAPI.getMTime() > model.matrixMTime.getMTime()) {\n mat4.identity(model.matrix);\n if (model.userMatrix) {\n mat4.multiply(model.matrix, model.matrix, model.userMatrix);\n }\n mat4.translate(model.matrix, model.matrix, model.origin);\n mat4.translate(model.matrix, model.matrix, model.position);\n mat4.multiply(model.matrix, model.matrix, model.rotation);\n mat4.scale(model.matrix, model.matrix, model.scale);\n mat4.translate(model.matrix, model.matrix, [\n -model.origin[0],\n -model.origin[1],\n -model.origin[2],\n ]);\n mat4.transpose(model.matrix, model.matrix);\n\n // check for identity\n model.isIdentity = true;\n for (let i = 0; i < 4; ++i) {\n for (let j = 0; j < 4; ++j) {\n if ((i === j ? 1.0 : 0.0) !== model.matrix[i + j * 4]) {\n model.isIdentity = false;\n }\n }\n }\n model.matrixMTime.modified();\n }\n };\n\n publicAPI.getCenter = () => vtkBoundingBox.getCenter(model.bounds);\n publicAPI.getLength = () => vtkBoundingBox.getLength(model.bounds);\n publicAPI.getXRange = () => vtkBoundingBox.getXRange(model.bounds);\n publicAPI.getYRange = () => vtkBoundingBox.getYRange(model.bounds);\n publicAPI.getZRange = () => vtkBoundingBox.getZRange(model.bounds);\n\n publicAPI.getUserMatrix = () => model.userMatrix;\n\n function updateIdentityFlag() {\n publicAPI.computeMatrix();\n }\n\n publicAPI.onModified(updateIdentityFlag);\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n origin: [0, 0, 0],\n position: [0, 0, 0],\n rotation: null,\n scale: [1, 1, 1],\n bounds: [1, -1, 1, -1, 1, -1],\n\n userMatrix: null,\n userMatrixMTime: null,\n\n cachedProp3D: null,\n isIdentity: true,\n matrixMTime: null,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkProp.extend(publicAPI, model, initialValues);\n\n model.matrixMTime = {};\n macro.obj(model.matrixMTime);\n\n // Build VTK API\n macro.get(publicAPI, model, ['bounds', 'isIdentity']);\n macro.setGetArray(\n publicAPI,\n model,\n ['origin', 'position', 'orientation', 'scale'],\n 3\n );\n\n // Object internal instance\n model.matrix = mat4.create();\n model.rotation = mat4.create();\n model.userMatrix = mat4.create();\n model.transform = null; // FIXME\n\n // Object methods\n vtkProp3D(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkProp3D');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/Core/Prop3D/index.js","import vtkMath from 'vtk.js/Sources/Common/Core/Math';\nimport macro from 'vtk.js/Sources/macro';\n\nconst PLANE_TOLERANCE = 1.0e-6;\n\n// ----------------------------------------------------------------------------\n// Global methods\n// ----------------------------------------------------------------------------\n\nfunction evaluate(normal, origin, x) {\n return (\n normal[0] * (x[0] - origin[0]) +\n normal[1] * (x[1] - origin[1]) +\n normal[2] * (x[2] - origin[2])\n );\n}\n\nfunction distanceToPlane(x, origin, normal) {\n const distance =\n normal[0] * (x[0] - origin[0]) +\n normal[1] * (x[1] - origin[1]) +\n normal[2] * (x[2] - origin[2]);\n\n return Math.abs(distance);\n}\n\nfunction projectPoint(x, origin, normal, xproj) {\n const xo = [];\n vtkMath.subtract(x, origin, xo);\n\n const t = vtkMath.dot(normal, xo);\n\n xproj[0] = x[0] - t * normal[0];\n xproj[1] = x[1] - t * normal[1];\n xproj[2] = x[2] - t * normal[2];\n}\n\nfunction projectVector(v, normal, vproj) {\n const t = vtkMath.dot(v, normal);\n\n let n2 = vtkMath.dot(normal, normal);\n if (n2 === 0) {\n n2 = 1.0;\n }\n\n vproj[0] = v[0] - t * normal[0] / n2;\n vproj[1] = v[1] - t * normal[1] / n2;\n vproj[2] = v[2] - t * normal[2] / n2;\n}\n\nfunction generalizedProjectPoint(x, origin, normal, xproj) {\n const xo = [];\n vtkMath.subtract(x, origin, xo);\n\n const t = vtkMath.dot(normal, xo);\n const n2 = vtkMath.dot(normal, normal);\n\n if (n2 !== 0) {\n xproj[0] = x[0] - t * normal[0] / n2;\n xproj[1] = x[1] - t * normal[1] / n2;\n xproj[2] = x[2] - t * normal[2] / n2;\n } else {\n xproj[0] = x[0];\n xproj[1] = x[1];\n xproj[2] = x[2];\n }\n}\n\nfunction intersectWithLine(p1, p2, origin, normal) {\n const outObj = { intersection: false, t: Number.MAX_VALUE, x: [] };\n\n const p21 = [];\n // Compute line vector\n vtkMath.subtract(p2, p1, p21);\n\n // Compute denominator. If ~0, line and plane are parallel.\n const num = vtkMath.dot(normal, origin) - vtkMath.dot(normal, p1);\n const den = vtkMath.dot(normal, p21);\n\n // If denominator with respect to numerator is \"zero\", then the line and\n // plane are considered parallel.\n let fabsden;\n let fabstolerance;\n\n // Trying to avoid an expensive call to fabs()\n if (den < 0.0) {\n fabsden = -den;\n } else {\n fabsden = den;\n }\n if (num < 0.0) {\n fabstolerance = -num * PLANE_TOLERANCE;\n } else {\n fabstolerance = num * PLANE_TOLERANCE;\n }\n if (fabsden <= fabstolerance) {\n return outObj;\n }\n\n // Valid intersection\n outObj.t = num / den;\n\n outObj.x[0] = p1[0] + outObj.t * p21[0];\n outObj.x[1] = p1[1] + outObj.t * p21[1];\n outObj.x[2] = p1[2] + outObj.t * p21[2];\n\n outObj.intersection = outObj.t >= 0.0 && outObj.t <= 1.0;\n return outObj;\n}\n\n// ----------------------------------------------------------------------------\n// Static API\n// ----------------------------------------------------------------------------\n\nexport const STATIC = {\n evaluate,\n distanceToPlane,\n projectPoint,\n projectVector,\n generalizedProjectPoint,\n intersectWithLine,\n};\n\n// ----------------------------------------------------------------------------\n// vtkPlane methods\n// ----------------------------------------------------------------------------\n\nexport function vtkPlane(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkPlane');\n\n publicAPI.distanceToPlane = (x) =>\n distanceToPlane(x, model.origin, model.normal);\n\n publicAPI.projectPoint = (x, xproj) => {\n projectPoint(x, model.origin, model.normal, xproj);\n };\n\n publicAPI.projectVector = (v, vproj) => {\n projectVector(v, model.normal, vproj);\n };\n\n publicAPI.push = (distance) => {\n if (distance === 0.0) {\n return;\n }\n for (let i = 0; i < 3; i++) {\n model.origin[i] += distance * model.normal[i];\n }\n };\n\n publicAPI.generalizedProjectPoint = (x, xproj) => {\n generalizedProjectPoint(x, model.origin, model.normal, xproj);\n };\n\n publicAPI.evaluateFunction = (x, y, z) => {\n if (!Array.isArray(x)) {\n return (\n model.normal[0] * (x - model.origin[0]) +\n model.normal[1] * (y - model.origin[1]) +\n model.normal[2] * (z - model.origin[2])\n );\n }\n return (\n model.normal[0] * (x[0] - model.origin[0]) +\n model.normal[1] * (x[1] - model.origin[1]) +\n model.normal[2] * (x[2] - model.origin[2])\n );\n };\n\n publicAPI.evaluateGradient = (xyz) => {\n const retVal = [model.normal[0], model.normal[1], model.normal[2]];\n return retVal;\n };\n\n publicAPI.intersectWithLine = (p1, p2) =>\n intersectWithLine(p1, p2, model.origin, model.normal);\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n normal: [0.0, 0.0, 1.0],\n origin: [0.0, 0.0, 0.0],\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Object methods\n macro.obj(publicAPI, model);\n\n macro.setGetArray(publicAPI, model, ['normal', 'origin'], 3);\n\n vtkPlane(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkPlane');\n\n// ----------------------------------------------------------------------------\n\nexport default Object.assign({ newInstance, extend }, STATIC);\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Common/DataModel/Plane/index.js","import macro from 'vtk.js/Sources/macro';\n\nfunction notImplemented(method) {\n return () => macro.vtkErrorMacro(`vtkProp::${method} - NOT IMPLEMENTED`);\n}\n\n// ----------------------------------------------------------------------------\n// vtkProp methods\n// ----------------------------------------------------------------------------\n\nfunction vtkProp(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkProp');\n\n publicAPI.getMTime = () => {\n let m1 = model.mtime;\n for (let index = 0; index < model.textures.length; ++index) {\n const m2 = model.textures[index].getMTime();\n if (m2 > m1) {\n m1 = m2;\n }\n }\n return m1;\n };\n\n publicAPI.getNestedProps = () => null;\n publicAPI.getActors = () => null;\n publicAPI.getActors2D = () => null;\n publicAPI.getVolumes = () => null;\n\n publicAPI.pick = notImplemented('pick');\n publicAPI.hasKey = notImplemented('hasKey');\n\n publicAPI.getRedrawMTime = () => model.mtime;\n\n publicAPI.setEstimatedRenderTime = (t) => {\n model.estimatedRenderTime = t;\n model.savedEstimatedRenderTime = t;\n };\n\n publicAPI.restoreEstimatedRenderTime = () => {\n model.estimatedRenderTime = model.savedEstimatedRenderTime;\n };\n\n publicAPI.addEstimatedRenderTime = (t) => {\n model.estimatedRenderTime += t;\n };\n\n publicAPI.setAllocatedRenderTime = (t) => {\n model.allocatedRenderTime = t;\n model.savedEstimatedRenderTime = model.estimatedRenderTime;\n model.estimatedRenderTime = 0;\n };\n\n publicAPI.getSupportsSelection = () => false;\n\n publicAPI.getTextures = () => model.textures;\n publicAPI.hasTexture = (texture) => model.textures.indexOf(texture) !== -1;\n publicAPI.addTexture = (texture) => {\n if (texture && !publicAPI.hasTexture(texture)) {\n model.textures = model.textures.concat(texture);\n publicAPI.modified();\n }\n };\n\n publicAPI.removeTexture = (texture) => {\n const newTextureList = model.textures.filter((item) => item !== texture);\n if (model.textures.length !== newTextureList.length) {\n model.textures = newTextureList;\n publicAPI.modified();\n }\n };\n\n publicAPI.removeAllTextures = () => {\n model.textures = [];\n publicAPI.modified();\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n visibility: true,\n pickable: true,\n dragable: true,\n useBounds: true,\n allocatedRenderTime: 10,\n estimatedRenderTime: 0,\n savedEstimatedRenderTime: 0,\n renderTimeMultiplier: 1,\n paths: null,\n textures: [],\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Build VTK API\n macro.obj(publicAPI, model);\n macro.get(publicAPI, model, ['estimatedRenderTime', 'allocatedRenderTime']);\n macro.setGet(publicAPI, model, [\n 'visibility',\n 'pickable',\n 'dragable',\n 'useBounds',\n 'renderTimeMultiplier',\n ]);\n\n // Object methods\n vtkProp(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkProp');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/Core/Prop/index.js","import macro from 'vtk.js/Sources/macro';\nimport vtkOpenGLRenderWindow from 'vtk.js/Sources/Rendering/OpenGL/RenderWindow';\nimport vtkRenderer from 'vtk.js/Sources/Rendering/Core/Renderer';\nimport vtkRenderWindow from 'vtk.js/Sources/Rendering/Core/RenderWindow';\nimport vtkRenderWindowInteractor from 'vtk.js/Sources/Rendering/Core/RenderWindowInteractor';\n\n// Load basic classes for vtk() factory\nimport 'vtk.js/Sources/Common/Core/Points';\nimport 'vtk.js/Sources/Common/Core/DataArray';\nimport 'vtk.js/Sources/Common/DataModel/PolyData';\nimport 'vtk.js/Sources/Rendering/Core/Actor';\nimport 'vtk.js/Sources/Rendering/Core/Mapper';\n\nconst STYLE_CONTAINER = {\n margin: '0',\n padding: '0',\n position: 'absolute',\n top: '0',\n left: '0',\n width: '100vw',\n height: '100vh',\n overflow: 'hidden',\n};\n\nconst STYLE_CONTROL_PANEL = {\n position: 'absolute',\n left: '25px',\n top: '25px',\n backgroundColor: 'white',\n borderRadius: '5px',\n listStyle: 'none',\n padding: '5px 10px',\n margin: '0',\n display: 'block',\n border: 'solid 1px black',\n maxWidth: 'calc(100vw - 70px)',\n maxHeight: 'calc(100vh - 60px)',\n overflow: 'auto',\n};\n\nfunction applyStyle(el, style) {\n Object.keys(style).forEach((key) => {\n el.style[key] = style[key];\n });\n}\n\nfunction vtkFullScreenRenderWindow(publicAPI, model) {\n // Full screen DOM handler\n if (!model.rootContainer) {\n model.rootContainer = document.querySelector('body');\n }\n\n if (!model.container) {\n model.container = document.createElement('div');\n applyStyle(model.container, model.containerStyle || STYLE_CONTAINER);\n model.rootContainer.appendChild(model.container);\n }\n\n // VTK renderWindow/renderer\n model.renderWindow = vtkRenderWindow.newInstance();\n model.renderer = vtkRenderer.newInstance();\n model.renderWindow.addRenderer(model.renderer);\n\n // OpenGlRenderWindow\n model.openGLRenderWindow = vtkOpenGLRenderWindow.newInstance();\n model.openGLRenderWindow.setContainer(model.container);\n model.renderWindow.addView(model.openGLRenderWindow);\n\n // Interactor\n model.interactor = vtkRenderWindowInteractor.newInstance();\n model.interactor.setView(model.openGLRenderWindow);\n model.interactor.initialize();\n model.interactor.bindEvents(model.container);\n\n // Expose background\n publicAPI.setBackground = model.renderer.setBackground;\n\n publicAPI.removeController = () => {\n const el = model.controlContainer;\n if (el) {\n el.parentNode.removeChild(el);\n }\n };\n\n publicAPI.setControllerVisibility = (visible) => {\n model.controllerVisibility = visible;\n if (model.controlContainer) {\n if (visible) {\n model.controlContainer.style.display = 'block';\n } else {\n model.controlContainer.style.display = 'none';\n }\n }\n };\n\n publicAPI.toggleControllerVisibility = () => {\n publicAPI.setControllerVisibility(!model.controllerVisibility);\n };\n\n publicAPI.addController = (html) => {\n model.controlContainer = document.createElement('div');\n applyStyle(\n model.controlContainer,\n model.controlPanelStyle || STYLE_CONTROL_PANEL\n );\n model.rootContainer.appendChild(model.controlContainer);\n model.controlContainer.innerHTML = html;\n\n publicAPI.setControllerVisibility(model.controllerVisibility);\n\n model.rootContainer.addEventListener('keypress', (e) => {\n if (String.fromCharCode(e.charCode) === 'c') {\n publicAPI.toggleControllerVisibility();\n }\n });\n };\n\n // Update BG color\n publicAPI.setBackground(...model.background);\n\n // Representation API\n publicAPI.addRepresentation = (representation) => {\n representation.getActors().forEach((actor) => {\n model.renderer.addActor(actor);\n });\n };\n publicAPI.removeRepresentation = (representation) => {\n representation\n .getActors()\n .forEach((actor) => model.renderer.removeActor(actor));\n };\n\n // Handle window resize\n publicAPI.resize = () => {\n const dims = model.container.getBoundingClientRect();\n const devicePixelRatio = window.devicePixelRatio || 1;\n model.openGLRenderWindow.setSize(\n Math.floor(dims.width * devicePixelRatio),\n Math.floor(dims.height * devicePixelRatio)\n );\n if (model.resizeCallback) {\n model.resizeCallback(dims);\n }\n model.renderWindow.render();\n };\n\n publicAPI.setResizeCallback = (cb) => {\n model.resizeCallback = cb;\n publicAPI.resize();\n };\n\n if (model.listenWindowResize) {\n window.addEventListener('resize', publicAPI.resize);\n }\n publicAPI.resize();\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n background: [0.32, 0.34, 0.43],\n containerStyle: null,\n controlPanelStyle: null,\n listenWindowResize: true,\n resizeCallback: null,\n controllerVisibility: true,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Object methods\n macro.obj(publicAPI, model);\n macro.get(publicAPI, model, [\n 'renderWindow',\n 'renderer',\n 'openGLRenderWindow',\n 'interactor',\n 'rootContainer',\n 'container',\n 'controlContainer',\n ]);\n\n // Object specific methods\n vtkFullScreenRenderWindow(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend);\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/Misc/FullScreenRenderWindow/index.js","import macro from 'vtk.js/Sources/macro';\nimport vtkOpenGLFramebuffer from 'vtk.js/Sources/Rendering/OpenGL/Framebuffer';\nimport vtkRenderPass from 'vtk.js/Sources/Rendering/SceneGraph/RenderPass';\n\n// ----------------------------------------------------------------------------\n\nfunction vtkForwardPass(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkForwardPass');\n\n // this pass implements a forward rendering pipeline\n // if both volumes and opaque geometry are present\n // it will mix the two together by capturing a zbuffer\n // first\n publicAPI.traverse = (viewNode, parent = null) => {\n if (model.deleted) {\n return;\n }\n\n // we just render our delegates in order\n model.currentParent = parent;\n\n // build\n publicAPI.setCurrentOperation('buildPass');\n viewNode.traverse(publicAPI);\n\n // iterate over renderers\n const renderers = viewNode.getChildren();\n for (let index = 0; index < renderers.length; index++) {\n const renNode = renderers[index];\n\n // check for both opaque and volume actors\n model.opaqueActorCount = 0;\n model.translucentActorCount = 0;\n model.volumeCount = 0;\n publicAPI.setCurrentOperation('queryPass');\n\n renNode.traverse(publicAPI);\n\n // do we need to capture a zbuffer?\n if (\n (model.opaqueActorCount > 0 && model.volumeCount > 0) ||\n model.depthRequested\n ) {\n const size = viewNode.getFramebufferSize();\n // make sure the framebuffer is setup\n if (model.framebuffer === null) {\n model.framebuffer = vtkOpenGLFramebuffer.newInstance();\n }\n model.framebuffer.setOpenGLRenderWindow(viewNode);\n model.framebuffer.saveCurrentBindingsAndBuffers();\n const fbSize = model.framebuffer.getSize();\n if (fbSize === null || fbSize[0] !== size[0] || fbSize[1] !== size[1]) {\n model.framebuffer.create(size[0], size[1]);\n model.framebuffer.populateFramebuffer();\n }\n model.framebuffer.bind();\n publicAPI.setCurrentOperation('opaqueZBufferPass');\n renNode.traverse(publicAPI);\n model.framebuffer.restorePreviousBindingsAndBuffers();\n }\n\n publicAPI.setCurrentOperation('cameraPass');\n renNode.traverse(publicAPI);\n if (model.opaqueActorCount > 0) {\n publicAPI.setCurrentOperation('opaquePass');\n renNode.traverse(publicAPI);\n }\n if (model.translucentActorCount > 0) {\n publicAPI.setCurrentOperation('translucentPass');\n renNode.traverse(publicAPI);\n }\n if (model.volumeCount > 0) {\n publicAPI.setCurrentOperation('volumePass');\n renNode.traverse(publicAPI);\n }\n }\n };\n\n publicAPI.getZBufferTexture = () => {\n if (model.framebuffer) {\n return model.framebuffer.getColorTexture();\n }\n return null;\n };\n\n publicAPI.incrementOpaqueActorCount = () => model.opaqueActorCount++;\n publicAPI.incrementTranslucentActorCount = () =>\n model.translucentActorCount++;\n publicAPI.incrementVolumeCount = () => model.volumeCount++;\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n opaqueActorCount: 0,\n translucentActorCount: 0,\n volumeCount: 0,\n framebuffer: null,\n depthRequested: false,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Build VTK API\n vtkRenderPass.extend(publicAPI, model, initialValues);\n\n macro.get(publicAPI, model, ['framebuffer']);\n macro.setGet(publicAPI, model, ['depthRequested']);\n\n // Object methods\n vtkForwardPass(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkForwardPass');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/OpenGL/ForwardPass/index.js","'use strict';\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nfunction _toArray(arr) { return Array.isArray(arr) ? arr : Array.from(arr); }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar TinyEmitter = require('./tiny-emitter');\n\nvar MESSAGE_RESULT = 0;\nvar MESSAGE_EVENT = 1;\n\nvar RESULT_ERROR = 0;\nvar RESULT_SUCCESS = 1;\n\nvar Worker = function (_TinyEmitter) {\n _inherits(Worker, _TinyEmitter);\n\n /**\n *\n * @param worker {Worker}\n */\n function Worker(worker) {\n _classCallCheck(this, Worker);\n\n var _this = _possibleConstructorReturn(this, (Worker.__proto__ || Object.getPrototypeOf(Worker)).call(this));\n\n _this._messageId = 1;\n _this._messages = new Map();\n\n _this._worker = worker;\n _this._worker.onmessage = _this._onMessage.bind(_this);\n _this._id = Math.ceil(Math.random() * 10000000);\n return _this;\n }\n\n _createClass(Worker, [{\n key: 'terminate',\n value: function terminate() {\n this._worker.terminate();\n }\n\n /**\n * return true if there is no unresolved jobs\n * @returns {boolean}\n */\n\n }, {\n key: 'isFree',\n value: function isFree() {\n return this._messages.size === 0;\n }\n }, {\n key: 'jobsLength',\n value: function jobsLength() {\n return this._messages.size;\n }\n\n /**\n * @param operationName string\n * @param data any\n * @param transferable array\n * @param onEvent function\n * @returns {Promise}\n */\n\n }, {\n key: 'exec',\n value: function exec(operationName) {\n var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n var _this2 = this;\n\n var transferable = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n var onEvent = arguments[3];\n\n return new Promise(function (res, rej) {\n var messageId = _this2._messageId++;\n _this2._messages.set(messageId, [res, rej, onEvent]);\n _this2._worker.postMessage([messageId, data, operationName], transferable || []);\n });\n }\n\n /**\n *\n * @param data any\n * @param transferable array\n * @param onEvent function\n * @returns {Promise}\n */\n\n }, {\n key: 'postMessage',\n value: function postMessage() {\n var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\n var _this3 = this;\n\n var transferable = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var onEvent = arguments[2];\n\n return new Promise(function (res, rej) {\n var messageId = _this3._messageId++;\n _this3._messages.set(messageId, [res, rej, onEvent]);\n _this3._worker.postMessage([messageId, data], transferable || []);\n });\n }\n }, {\n key: 'emit',\n value: function emit(eventName) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n this._worker.postMessage({ eventName: eventName, args: args });\n }\n }, {\n key: '_onMessage',\n value: function _onMessage(e) {\n //if we got usual event, just emit it locally\n if (!Array.isArray(e.data) && e.data.eventName) {\n var _get2;\n\n return (_get2 = _get(Worker.prototype.__proto__ || Object.getPrototypeOf(Worker.prototype), 'emit', this)).call.apply(_get2, [this, e.data.eventName].concat(_toConsumableArray(e.data.args)));\n }\n\n var _e$data = _toArray(e.data),\n type = _e$data[0],\n args = _e$data.slice(1);\n\n if (type === MESSAGE_EVENT) this._onEvent.apply(this, _toConsumableArray(args));else if (type === MESSAGE_RESULT) this._onResult.apply(this, _toConsumableArray(args));else throw new Error('Wrong message type \\'' + type + '\\'');\n }\n }, {\n key: '_onResult',\n value: function _onResult(messageId, success, payload) {\n var _messages$get = this._messages.get(messageId),\n _messages$get2 = _slicedToArray(_messages$get, 2),\n res = _messages$get2[0],\n rej = _messages$get2[1];\n\n this._messages.delete(messageId);\n\n return success === RESULT_SUCCESS ? res(payload) : rej(payload);\n }\n }, {\n key: '_onEvent',\n value: function _onEvent(messageId, eventName, data) {\n var _messages$get3 = this._messages.get(messageId),\n _messages$get4 = _slicedToArray(_messages$get3, 3),\n onEvent = _messages$get4[2];\n\n if (onEvent) {\n onEvent(eventName, data);\n }\n }\n }]);\n\n return Worker;\n}(TinyEmitter);\n\nmodule.exports = Worker;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/webworker-promise/lib/index.js\n// module id = 548\n// module chunks = 1","import { vec3 } from 'gl-matrix';\nimport registerWebworker from 'webworker-promise/lib/register';\n\nimport vtkMath from 'vtk.js/Sources/Common/Core/Math';\n\n/* eslint-disable */\n// prettier-ignore\nregisterWebworker(\n function (\n message,\n emit\n ) {\n // have to compute the gradient to get the normal\n // and magnitude\n var width = message.width;\n var height = message.height;\n var depth = message.depth;\n var spacing = message.spacing;\n var data = message.data;\n var haveWebgl2 = message.haveWebgl2;\n var depthStart = message.depthStart;\n var depthEnd = message.depthEnd;\n\n // only compute gradient for last slice of the web worker\n // if it is the last slice of the volume data\n if (depthEnd !== depth - 1) {\n depthEnd--;\n }\n var depthLength = depthEnd - depthStart + 1;\n var gradients = new Uint8Array(width * height * depthLength * 3);\n var gradientMagnitudes = new Float32Array(width * height * depthLength);\n\n var sliceSize = width * height;\n var inPtr = 0;\n var outPtr = 0;\n var grad = vec3.create();\n vec3.set(\n grad,\n (data[inPtr + 1] - data[inPtr]) / spacing[0],\n (data[inPtr + width] - data[inPtr]) / spacing[1],\n (data[inPtr + sliceSize] - data[inPtr]) / spacing[2]\n );\n var minMag = vec3.length(grad);\n var maxMag = -1.0;\n for (var z = depthStart; z <= depthEnd; ++z) {\n var zedge = 0;\n if (z === depth - 1) {\n zedge = -sliceSize;\n }\n for (var y = 0; y < height; ++y) {\n var yedge = 0;\n if (y === height - 1) {\n yedge = -width;\n }\n for (var x = 0; x < width; ++x) {\n var edge = inPtr + zedge + yedge;\n if (x === width - 1) {\n edge--;\n }\n vec3.set(\n grad,\n (data[edge + 1] - data[edge]) / spacing[0],\n (data[edge + width] - data[edge]) / spacing[1],\n (data[edge + sliceSize] - data[edge]) / spacing[2]\n );\n\n var mag = vec3.length(grad);\n vec3.normalize(grad, grad);\n // Compact normal encoding (from [-1.0, 1.0] to [0, 255])\n gradients[outPtr++] = 127.5 + 127.5 * grad[0];\n gradients[outPtr++] = 127.5 + 127.5 * grad[1];\n gradients[outPtr++] = 127.5 + 127.5 * grad[2];\n gradientMagnitudes[inPtr++] = mag;\n }\n }\n }\n var arrayMinMag = vtkMath.arrayMin(gradientMagnitudes);\n var arrayMaxMag = vtkMath.arrayMax(gradientMagnitudes);\n minMag = Math.min(arrayMinMag, minMag);\n maxMag = Math.max(arrayMaxMag, maxMag);\n\n var result = {\n subGradients: gradients,\n subMagnitudes: gradientMagnitudes,\n subMinMag: minMag,\n subMaxMag: maxMag,\n subDepthStart: depthStart,\n subDepthEnd: depthEnd,\n };\n return Promise.resolve(\n new registerWebworker.TransferableResponse(\n result,\n [result.subGradients.buffer, result.subMagnitudes.buffer]\n )\n );\n }\n);\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/OpenGL/Texture/ComputeGradients.worker.js","'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar TinyEmitter = require('./tiny-emitter');\n\nvar MESSAGE_RESULT = 0;\nvar MESSAGE_EVENT = 1;\n\nvar RESULT_ERROR = 0;\nvar RESULT_SUCCESS = 1;\n\nvar DEFAULT_HANDLER = 'main';\n\nvar isPromise = function isPromise(o) {\n return (typeof o === 'undefined' ? 'undefined' : _typeof(o)) === 'object' && typeof o.then === 'function' && typeof o.catch === 'function';\n};\n\nfunction RegisterPromise(fn) {\n var handlers = _defineProperty({}, DEFAULT_HANDLER, fn);\n var sendPostMessage = self.postMessage.bind(self);\n\n var server = new (function (_TinyEmitter) {\n _inherits(WorkerRegister, _TinyEmitter);\n\n function WorkerRegister() {\n _classCallCheck(this, WorkerRegister);\n\n return _possibleConstructorReturn(this, (WorkerRegister.__proto__ || Object.getPrototypeOf(WorkerRegister)).apply(this, arguments));\n }\n\n _createClass(WorkerRegister, [{\n key: 'emit',\n value: function emit(eventName) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n sendPostMessage({ eventName: eventName, args: args });\n return this;\n }\n }, {\n key: 'emitLocally',\n value: function emitLocally(eventName) {\n var _get2;\n\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n (_get2 = _get(WorkerRegister.prototype.__proto__ || Object.getPrototypeOf(WorkerRegister.prototype), 'emit', this)).call.apply(_get2, [this, eventName].concat(args));\n }\n }, {\n key: 'operation',\n value: function operation(name, handler) {\n handlers[name] = handler;\n return this;\n }\n }]);\n\n return WorkerRegister;\n }(TinyEmitter))();\n\n var run = function run(messageId, payload, handlerName) {\n\n var onSuccess = function onSuccess(result) {\n if (result && result instanceof TransferableResponse) {\n sendResult(messageId, RESULT_SUCCESS, result.payload, result.transferable);\n } else {\n sendResult(messageId, RESULT_SUCCESS, result);\n }\n };\n\n var onError = function onError(e) {\n sendResult(messageId, RESULT_ERROR, {\n message: e.message,\n stack: e.stack\n });\n };\n\n try {\n var result = runFn(messageId, payload, handlerName);\n if (isPromise(result)) {\n result.then(onSuccess).catch(onError);\n } else {\n onSuccess(result);\n }\n } catch (e) {\n onError(e);\n }\n };\n\n var runFn = function runFn(messageId, payload, handlerName) {\n var handler = handlers[handlerName || DEFAULT_HANDLER];\n if (!handler) throw new Error('Not found handler for this request');\n\n return handler(payload, sendEvent.bind(null, messageId));\n };\n\n var sendResult = function sendResult(messageId, success, payload) {\n var transferable = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];\n\n sendPostMessage([MESSAGE_RESULT, messageId, success, payload], transferable);\n };\n\n var sendEvent = function sendEvent(messageId, eventName, payload) {\n if (!eventName) throw new Error('eventName is required');\n\n if (typeof eventName !== 'string') throw new Error('eventName should be string');\n\n sendPostMessage([MESSAGE_EVENT, messageId, eventName, payload]);\n };\n\n self.addEventListener('message', function (_ref) {\n var data = _ref.data;\n\n if (Array.isArray(data)) {\n run.apply(undefined, _toConsumableArray(data));\n } else if (data && data.eventName) {\n server.emitLocally.apply(server, [data.eventName].concat(_toConsumableArray(data.args)));\n }\n });\n\n return server;\n}\n\nvar TransferableResponse = function TransferableResponse(payload, transferable) {\n _classCallCheck(this, TransferableResponse);\n\n this.payload = payload;\n this.transferable = transferable;\n};\n\nmodule.exports = RegisterPromise;\nmodule.exports.TransferableResponse = TransferableResponse;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/webworker-promise/lib/register.js\n// module id = 550\n// module chunks = 1","import macro from 'vtk.js/Sources/macro';\nimport vtkGenericWidgetRepresentation from 'vtk.js/Sources/Rendering/SceneGraph/GenericWidgetRepresentation';\nimport vtkViewNodeFactory from 'vtk.js/Sources/Rendering/SceneGraph/ViewNodeFactory';\nimport vtkOpenGLActor from 'vtk.js/Sources/Rendering/OpenGL/Actor';\nimport vtkOpenGLActor2D from 'vtk.js/Sources/Rendering/OpenGL/Actor2D';\nimport vtkOpenGLCamera from 'vtk.js/Sources/Rendering/OpenGL/Camera';\nimport vtkOpenGLGlyph3DMapper from 'vtk.js/Sources/Rendering/OpenGL/Glyph3DMapper';\nimport vtkOpenGLImageMapper from 'vtk.js/Sources/Rendering/OpenGL/ImageMapper';\nimport vtkOpenGLImageSlice from 'vtk.js/Sources/Rendering/OpenGL/ImageSlice';\nimport vtkOpenGLPixelSpaceCallbackMapper from 'vtk.js/Sources/Rendering/OpenGL/PixelSpaceCallbackMapper';\nimport vtkOpenGLPolyDataMapper from 'vtk.js/Sources/Rendering/OpenGL/PolyDataMapper';\nimport vtkOpenGLRenderWindow from 'vtk.js/Sources/Rendering/OpenGL/RenderWindow';\nimport vtkOpenGLRenderer from 'vtk.js/Sources/Rendering/OpenGL/Renderer';\nimport vtkOpenGLSkybox from 'vtk.js/Sources/Rendering/OpenGL/Skybox';\nimport vtkOpenGLSphereMapper from 'vtk.js/Sources/Rendering/OpenGL/SphereMapper';\nimport vtkOpenGLStickMapper from 'vtk.js/Sources/Rendering/OpenGL/StickMapper';\nimport vtkOpenGLTexture from 'vtk.js/Sources/Rendering/OpenGL/Texture';\nimport vtkOpenGLVolume from 'vtk.js/Sources/Rendering/OpenGL/Volume';\nimport vtkOpenGLVolumeMapper from 'vtk.js/Sources/Rendering/OpenGL/VolumeMapper';\n\n// ----------------------------------------------------------------------------\n// vtkOpenGLViewNodeFactory methods\n// ----------------------------------------------------------------------------\n\nfunction vtkOpenGLViewNodeFactory(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkOpenGLViewNodeFactory');\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkViewNodeFactory.extend(publicAPI, model, initialValues);\n\n // Object methods\n vtkOpenGLViewNodeFactory(publicAPI, model);\n\n // Initialization\n publicAPI.registerOverride('vtkActor', vtkOpenGLActor.newInstance);\n publicAPI.registerOverride('vtkActor2D', vtkOpenGLActor2D.newInstance);\n publicAPI.registerOverride('vtkCamera', vtkOpenGLCamera.newInstance);\n publicAPI.registerOverride(\n 'vtkGlyph3DMapper',\n vtkOpenGLGlyph3DMapper.newInstance\n );\n publicAPI.registerOverride(\n 'vtkImageMapper',\n vtkOpenGLImageMapper.newInstance\n );\n publicAPI.registerOverride('vtkImageSlice', vtkOpenGLImageSlice.newInstance);\n publicAPI.registerOverride('vtkMapper', vtkOpenGLPolyDataMapper.newInstance);\n publicAPI.registerOverride(\n 'vtkPixelSpaceCallbackMapper',\n vtkOpenGLPixelSpaceCallbackMapper.newInstance\n );\n publicAPI.registerOverride(\n 'vtkRenderWindow',\n vtkOpenGLRenderWindow.newInstance\n );\n publicAPI.registerOverride('vtkRenderer', vtkOpenGLRenderer.newInstance);\n publicAPI.registerOverride('vtkSkybox', vtkOpenGLSkybox.newInstance);\n publicAPI.registerOverride(\n 'vtkSphereMapper',\n vtkOpenGLSphereMapper.newInstance\n );\n publicAPI.registerOverride(\n 'vtkStickMapper',\n vtkOpenGLStickMapper.newInstance\n );\n publicAPI.registerOverride('vtkTexture', vtkOpenGLTexture.newInstance);\n publicAPI.registerOverride('vtkVolume', vtkOpenGLVolume.newInstance);\n publicAPI.registerOverride(\n 'vtkVolumeMapper',\n vtkOpenGLVolumeMapper.newInstance\n );\n publicAPI.registerOverride(\n 'vtkWidgetRepresentation',\n vtkGenericWidgetRepresentation.newInstance\n );\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(\n extend,\n 'vtkOpenGLViewNodeFactory'\n);\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/OpenGL/ViewNodeFactory/index.js","import macro from 'vtk.js/Sources/macro';\nimport vtkViewNode from 'vtk.js/Sources/Rendering/SceneGraph/ViewNode';\n\n// ----------------------------------------------------------------------------\n// vtkOpenGLActor methods\n// ----------------------------------------------------------------------------\n\nfunction vtkGenericWidgetRepresentation(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkGenericWidgetRepresentation');\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkViewNode.extend(publicAPI, model, initialValues);\n\n // Object methods\n vtkGenericWidgetRepresentation(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend);\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/SceneGraph/GenericWidgetRepresentation/index.js","import macro from 'vtk.js/Sources/macro';\n\n// ----------------------------------------------------------------------------\n// vtkViewNodeFactory methods\n// ----------------------------------------------------------------------------\n\nfunction vtkViewNodeFactory(publicAPI, model) {\n // Make sure our overrides is just for our instance not shared with everyone...\n model.overrides = {};\n\n // Set our className\n model.classHierarchy.push('vtkViewNodeFactory');\n\n publicAPI.createNode = (dataObject) => {\n if (dataObject.isDeleted()) {\n return null;\n }\n\n let cpt = 0;\n let className = dataObject.getClassName(cpt++);\n let isObject = false;\n const keys = Object.keys(model.overrides);\n while (className && !isObject) {\n if (keys.indexOf(className) !== -1) {\n isObject = true;\n } else {\n className = dataObject.getClassName(cpt++);\n }\n }\n\n if (!isObject) {\n return null;\n }\n const vn = model.overrides[className]();\n vn.setMyFactory(publicAPI);\n return vn;\n };\n\n publicAPI.registerOverride = (className, func) => {\n model.overrides[className] = func;\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n // overrides: {},\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Build VTK API\n macro.obj(publicAPI, model);\n\n // Object methods\n vtkViewNodeFactory(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkViewNodeFactory');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/SceneGraph/ViewNodeFactory/index.js","import { mat3, mat4 } from 'gl-matrix';\n\nimport macro from 'vtk.js/Sources/macro';\nimport vtkViewNode from 'vtk.js/Sources/Rendering/SceneGraph/ViewNode';\n\n// ----------------------------------------------------------------------------\n// vtkOpenGLActor methods\n// ----------------------------------------------------------------------------\n\nfunction vtkOpenGLActor(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkOpenGLActor');\n\n // Builds myself.\n publicAPI.buildPass = (prepass) => {\n if (prepass) {\n model.openGLRenderWindow = publicAPI.getFirstAncestorOfType(\n 'vtkOpenGLRenderWindow'\n );\n model.context = model.openGLRenderWindow.getContext();\n publicAPI.prepareNodes();\n publicAPI.addMissingNodes(model.renderable.getTextures());\n publicAPI.addMissingNode(model.renderable.getMapper());\n publicAPI.removeUnusedNodes();\n\n // we store textures and mapper\n model.ogltextures = null;\n model.activeTextures = null;\n for (let index = 0; index < model.children.length; index++) {\n const child = model.children[index];\n if (child.isA('vtkOpenGLTexture')) {\n if (!model.ogltextures) {\n model.ogltextures = [];\n }\n model.ogltextures.push(child);\n } else {\n model.oglmapper = child;\n }\n }\n }\n };\n\n publicAPI.traverseOpaqueZBufferPass = (renderPass) => {\n publicAPI.traverseOpaquePass(renderPass);\n };\n\n // we draw textures, then mapper, then post pass textures\n publicAPI.traverseOpaquePass = (renderPass) => {\n if (\n !model.renderable ||\n !model.renderable.getVisibility() ||\n !model.renderable.getIsOpaque()\n ) {\n return;\n }\n\n publicAPI.apply(renderPass, true);\n\n model.oglmapper.traverse(renderPass);\n\n publicAPI.apply(renderPass, false);\n };\n\n // we draw textures, then mapper, then post pass textures\n publicAPI.traverseTranslucentPass = (renderPass) => {\n if (\n !model.renderable ||\n !model.renderable.getVisibility() ||\n model.renderable.getIsOpaque()\n ) {\n return;\n }\n\n publicAPI.apply(renderPass, true);\n\n model.oglmapper.traverse(renderPass);\n\n publicAPI.apply(renderPass, false);\n };\n\n publicAPI.activateTextures = () => {\n // always traverse textures first, then mapper\n if (!model.ogltextures) {\n return;\n }\n\n model.activeTextures = [];\n for (let index = 0; index < model.ogltextures.length; index++) {\n const child = model.ogltextures[index];\n child.render();\n if (child.getHandle()) {\n model.activeTextures.push(child);\n }\n }\n };\n\n publicAPI.queryPass = (prepass, renderPass) => {\n if (prepass) {\n if (!model.renderable || !model.renderable.getVisibility()) {\n return;\n }\n if (model.renderable.getIsOpaque()) {\n renderPass.incrementOpaqueActorCount();\n } else {\n renderPass.incrementTranslucentActorCount();\n }\n }\n };\n\n publicAPI.opaqueZBufferPass = (prepass, renderPass) =>\n publicAPI.opaquePass(prepass, renderPass);\n\n publicAPI.opaquePass = (prepass, renderPass) => {\n if (prepass) {\n model.openGLRenderWindow.enableDepthMask();\n publicAPI.activateTextures();\n } else if (model.activeTextures) {\n for (let index = 0; index < model.activeTextures.length; index++) {\n model.activeTextures[index].deactivate();\n }\n }\n };\n\n // Renders myself\n publicAPI.translucentPass = (prepass, renderPass) => {\n if (prepass) {\n model.openGLRenderWindow.disableDepthMask();\n publicAPI.activateTextures();\n } else if (model.activeTextures) {\n for (let index = 0; index < model.activeTextures.length; index++) {\n model.activeTextures[index].deactivate();\n }\n }\n };\n\n publicAPI.getKeyMatrices = () => {\n // has the actor changed?\n if (model.renderable.getMTime() > model.keyMatrixTime.getMTime()) {\n model.renderable.computeMatrix();\n mat4.copy(model.keyMatrices.mcwc, model.renderable.getMatrix());\n mat4.transpose(model.keyMatrices.mcwc, model.keyMatrices.mcwc);\n\n if (model.renderable.getIsIdentity()) {\n mat3.identity(model.keyMatrices.normalMatrix);\n } else {\n mat3.fromMat4(model.keyMatrices.normalMatrix, model.keyMatrices.mcwc);\n mat3.invert(\n model.keyMatrices.normalMatrix,\n model.keyMatrices.normalMatrix\n );\n }\n model.keyMatrixTime.modified();\n }\n\n return model.keyMatrices;\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n context: null,\n keyMatrixTime: null,\n keyMatrices: null,\n activeTextures: null,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkViewNode.extend(publicAPI, model, initialValues);\n\n model.keyMatrixTime = {};\n macro.obj(model.keyMatrixTime, { mtime: 0 });\n model.keyMatrices = {\n normalMatrix: mat3.create(),\n mcwc: mat4.create(),\n };\n\n // Build VTK API\n macro.setGet(publicAPI, model, ['context']);\n\n macro.get(publicAPI, model, ['activeTextures']);\n\n // Object methods\n vtkOpenGLActor(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend);\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/OpenGL/Actor/index.js","import * as macro from '../../../macro';\nimport vtkViewNode from '../../SceneGraph/ViewNode';\n\n// ----------------------------------------------------------------------------\n// vtkOpenGLActor methods\n// ----------------------------------------------------------------------------\n\nfunction vtkOpenGLActor2D(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkOpenGLActor2D');\n\n // Builds myself.\n publicAPI.buildPass = (prepass) => {\n if (prepass) {\n if (!model.renderable) {\n return;\n }\n\n publicAPI.prepareNodes();\n publicAPI.addMissingNodes(model.renderable.getTextures());\n publicAPI.addMissingNode(model.renderable.getMapper());\n publicAPI.removeUnusedNodes();\n }\n };\n\n // we draw textures, then mapper, then post pass textures\n publicAPI.traverseOpaquePass = (renderPass) => {\n if (\n !model.renderable ||\n !model.renderable.getVisibility() ||\n !model.renderable.getIsOpaque()\n ) {\n return;\n }\n\n publicAPI.apply(renderPass, true);\n model.children.forEach((child) => {\n if (!child.isA('vtkOpenGLTexture')) {\n child.traverse(renderPass);\n }\n });\n publicAPI.apply(renderPass, false);\n };\n\n // we draw textures, then mapper, then post pass textures\n publicAPI.traverseTranslucentPass = (renderPass) => {\n if (\n !model.renderable ||\n !model.renderable.getVisibility() ||\n model.renderable.getIsOpaque()\n ) {\n return;\n }\n\n publicAPI.apply(renderPass, true);\n model.children.forEach((child) => {\n if (!child.isA('vtkOpenGLTexture')) {\n child.traverse(renderPass);\n }\n });\n publicAPI.apply(renderPass, false);\n };\n\n publicAPI.activateTextures = () => {\n // always traverse textures first, then mapper\n model.activeTextures = [];\n model.children.forEach((child) => {\n if (child.isA('vtkOpenGLTexture')) {\n child.render();\n if (child.getHandle()) {\n model.activeTextures.push(child);\n }\n }\n });\n };\n\n // Renders myself\n publicAPI.opaquePass = (prepass, renderPass) => {\n if (prepass) {\n model.context = publicAPI\n .getFirstAncestorOfType('vtkOpenGLRenderWindow')\n .getContext();\n model.context.depthMask(true);\n publicAPI.activateTextures();\n } else {\n // deactivate textures\n model.activeTextures.forEach((child) => {\n child.deactivate();\n });\n }\n };\n\n // Renders myself\n publicAPI.translucentPass = (prepass, renderPass) => {\n if (prepass) {\n model.context = publicAPI\n .getFirstAncestorOfType('vtkOpenGLRenderWindow')\n .getContext();\n model.context.depthMask(false);\n publicAPI.activateTextures();\n } else {\n // deactivate textures\n model.activeTextures.forEach((child) => {\n child.deactivate();\n });\n model.context.depthMask(true);\n }\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n context: null,\n activeTextures: [],\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkViewNode.extend(publicAPI, model, initialValues);\n\n // Build VTK API\n macro.setGet(publicAPI, model, ['context']);\n\n macro.get(publicAPI, model, ['activeTextures']);\n\n // Object methods\n vtkOpenGLActor2D(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend);\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/OpenGL/Actor2D/index.js","import { mat3, mat4 } from 'gl-matrix';\n\nimport * as macro from '../../../macro';\nimport vtkViewNode from '../../SceneGraph/ViewNode';\n\n// ----------------------------------------------------------------------------\n// vtkOpenGLCamera methods\n// ----------------------------------------------------------------------------\n\nfunction vtkOpenGLCamera(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkOpenGLCamera');\n\n publicAPI.buildPass = (prepass) => {\n if (prepass) {\n model.openGLRenderer = publicAPI.getFirstAncestorOfType(\n 'vtkOpenGLRenderer'\n );\n model.openGLRenderWindow = model.openGLRenderer.getParent();\n model.context = model.openGLRenderWindow.getContext();\n }\n };\n\n // Renders myself\n publicAPI.opaquePass = (prepass) => {\n if (prepass) {\n const tsize = model.openGLRenderer.getTiledSizeAndOrigin();\n model.context.viewport(\n tsize.lowerLeftU,\n tsize.lowerLeftV,\n tsize.usize,\n tsize.vsize\n );\n model.context.scissor(\n tsize.lowerLeftU,\n tsize.lowerLeftV,\n tsize.usize,\n tsize.vsize\n );\n }\n };\n publicAPI.translucentPass = publicAPI.opaquePass;\n publicAPI.opaqueZBufferPass = publicAPI.opaquePass;\n publicAPI.volumePass = publicAPI.opaquePass;\n\n publicAPI.getKeyMatrices = (ren) => {\n // has the camera changed?\n if (\n ren !== model.lastRenderer ||\n model.openGLRenderWindow.getMTime() > model.keyMatrixTime.getMTime() ||\n publicAPI.getMTime() > model.keyMatrixTime.getMTime() ||\n ren.getMTime() > model.keyMatrixTime.getMTime()\n ) {\n mat4.copy(model.keyMatrices.wcvc, model.renderable.getViewMatrix());\n\n mat3.fromMat4(model.keyMatrices.normalMatrix, model.keyMatrices.wcvc);\n mat3.invert(\n model.keyMatrices.normalMatrix,\n model.keyMatrices.normalMatrix\n );\n mat4.transpose(model.keyMatrices.wcvc, model.keyMatrices.wcvc);\n\n const aspectRatio = model.openGLRenderer.getAspectRatio();\n\n mat4.copy(\n model.keyMatrices.vcdc,\n model.renderable.getProjectionMatrix(aspectRatio, -1, 1)\n );\n mat4.transpose(model.keyMatrices.vcdc, model.keyMatrices.vcdc);\n\n mat4.multiply(\n model.keyMatrices.wcdc,\n model.keyMatrices.vcdc,\n model.keyMatrices.wcvc\n );\n\n model.keyMatrixTime.modified();\n model.lastRenderer = ren;\n }\n\n return model.keyMatrices;\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n context: null,\n lastRenderer: null,\n keyMatrixTime: null,\n keyMatrices: null,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkViewNode.extend(publicAPI, model, initialValues);\n\n model.keyMatrixTime = {};\n macro.obj(model.keyMatrixTime);\n\n model.keyMatrices = {\n normalMatrix: mat3.create(),\n vcdc: mat4.create(),\n wcvc: mat4.create(),\n wcdc: mat4.create(),\n };\n\n // Build VTK API\n macro.setGet(publicAPI, model, ['context', 'keyMatrixTime']);\n\n // Object methods\n vtkOpenGLCamera(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend);\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/OpenGL/Camera/index.js","import { mat3, mat4 } from 'gl-matrix';\n\nimport macro from 'vtk.js/Sources/macro';\n\nimport vtkBufferObject from 'vtk.js/Sources/Rendering/OpenGL/BufferObject';\nimport vtkHardwareSelector from 'vtk.js/Sources/Rendering/OpenGL/HardwareSelector';\nimport vtkProperty from 'vtk.js/Sources/Rendering/Core/Property';\nimport vtkOpenGLPolyDataMapper from 'vtk.js/Sources/Rendering/OpenGL/PolyDataMapper';\nimport vtkShaderProgram from 'vtk.js/Sources/Rendering/OpenGL/ShaderProgram';\n\nconst { vtkErrorMacro } = macro;\nconst { Representation } = vtkProperty;\nconst { ObjectType } = vtkBufferObject;\nconst { PassTypes } = vtkHardwareSelector;\n\nconst StartEvent = { type: 'StartEvent' };\nconst EndEvent = { type: 'EndEvent' };\n\n// ----------------------------------------------------------------------------\n// vtkOpenGLSphereMapper methods\n// ----------------------------------------------------------------------------\n\nfunction vtkOpenGLGlyph3DMapper(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkOpenGLGlyph3DMapper');\n\n // Capture 'parentClass' api for internal use\n const superClass = Object.assign({}, publicAPI);\n\n publicAPI.renderPiece = (ren, actor) => {\n publicAPI.invokeEvent(StartEvent);\n if (!model.renderable.getStatic()) {\n model.renderable.update();\n }\n model.currentInput = model.renderable.getInputData(1);\n publicAPI.invokeEvent(EndEvent);\n\n if (!model.currentInput) {\n vtkErrorMacro('No input!');\n return;\n }\n\n // if there are no points then we are done\n if (\n !model.currentInput.getPoints ||\n !model.currentInput.getPoints().getNumberOfValues()\n ) {\n return;\n }\n\n // apply faceCulling\n const gl = model.context;\n if (model.openGLRenderWindow.getWebgl2()) {\n model.hardwareSupport = true;\n model.extension = null;\n } else if (!model.extension) {\n model.extension = model.context.getExtension('ANGLE_instanced_arrays');\n model.hardwareSupport = !!model.extension;\n }\n // to test without extension support uncomment the next two lines\n // model.extension = null;\n // model.hardwareSupport = !!model.extension;\n\n const backfaceCulling = actor.getProperty().getBackfaceCulling();\n const frontfaceCulling = actor.getProperty().getFrontfaceCulling();\n if (!backfaceCulling && !frontfaceCulling) {\n model.openGLRenderWindow.disableCullFace();\n } else if (frontfaceCulling) {\n model.openGLRenderWindow.enableCullFace();\n gl.cullFace(gl.FRONT);\n } else {\n model.openGLRenderWindow.enableCullFace();\n gl.cullFace(gl.BACK);\n }\n\n publicAPI.renderPieceStart(ren, actor);\n publicAPI.renderPieceDraw(ren, actor);\n publicAPI.renderPieceFinish(ren, actor);\n };\n\n publicAPI.multiply4x4WithOffset = (out, a, b, off) => {\n const a00 = a[0];\n const a01 = a[1];\n const a02 = a[2];\n const a03 = a[3];\n const a10 = a[4];\n const a11 = a[5];\n const a12 = a[6];\n const a13 = a[7];\n const a20 = a[8];\n const a21 = a[9];\n const a22 = a[10];\n const a23 = a[11];\n const a30 = a[12];\n const a31 = a[13];\n const a32 = a[14];\n const a33 = a[15];\n\n // Cache only the current line of the second matrix\n let b0 = b[off];\n let b1 = b[off + 1];\n let b2 = b[off + 2];\n let b3 = b[off + 3];\n out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n\n b0 = b[off + 4];\n b1 = b[off + 5];\n b2 = b[off + 6];\n b3 = b[off + 7];\n out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n\n b0 = b[off + 8];\n b1 = b[off + 9];\n b2 = b[off + 10];\n b3 = b[off + 11];\n out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n\n b0 = b[off + 12];\n b1 = b[off + 13];\n b2 = b[off + 14];\n b3 = b[off + 15];\n out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n };\n\n publicAPI.replaceShaderNormal = (shaders, ren, actor) => {\n if (model.hardwareSupport) {\n const lastLightComplexity = model.lastBoundBO.getReferenceByName(\n 'lastLightComplexity'\n );\n\n if (lastLightComplexity > 0) {\n let VSSource = shaders.Vertex;\n\n if (model.lastBoundBO.getCABO().getNormalOffset()) {\n VSSource = vtkShaderProgram.substitute(\n VSSource,\n '//VTK::Normal::Dec',\n [\n 'attribute vec3 normalMC;',\n 'attribute mat3 gNormal;',\n 'uniform mat3 normalMatrix;',\n 'varying vec3 normalVCVSOutput;',\n ]\n ).result;\n VSSource = vtkShaderProgram.substitute(\n VSSource,\n '//VTK::Normal::Impl',\n ['normalVCVSOutput = normalMatrix * gNormal * normalMC;']\n ).result;\n }\n shaders.Vertex = VSSource;\n }\n }\n superClass.replaceShaderNormal(shaders, ren, actor);\n };\n\n publicAPI.replaceShaderColor = (shaders, ren, actor) => {\n if (model.hardwareSupport && model.renderable.getColorArray()) {\n let VSSource = shaders.Vertex;\n let GSSource = shaders.Geometry;\n let FSSource = shaders.Fragment;\n\n const lastLightComplexity = model.lastBoundBO.getReferenceByName(\n 'lastLightComplexity'\n );\n\n // create the material/color property declarations, and VS implementation\n // these are always defined\n let colorDec = [\n 'uniform float ambient;',\n 'uniform float diffuse;',\n 'uniform float specular;',\n 'uniform float opacityUniform; // the fragment opacity',\n ];\n // add more for specular\n if (lastLightComplexity) {\n colorDec = colorDec.concat([\n 'uniform vec3 specularColorUniform;',\n 'uniform float specularPowerUniform;',\n ]);\n }\n\n // now handle the more complex fragment shader implementation\n // the following are always defined variables. We start\n // by assiging a default value from the uniform\n let colorImpl = [\n 'vec3 ambientColor;',\n ' vec3 diffuseColor;',\n ' float opacity;',\n ];\n if (lastLightComplexity) {\n colorImpl = colorImpl.concat([\n ' vec3 specularColor;',\n ' float specularPower;',\n ]);\n }\n colorImpl = colorImpl.concat([' opacity = opacityUniform;']);\n if (lastLightComplexity) {\n colorImpl = colorImpl.concat([\n ' specularColor = specularColorUniform;',\n ' specularPower = specularPowerUniform;',\n ]);\n }\n\n if (!model.drawingEdges) {\n colorDec = colorDec.concat(['varying vec4 vertexColorVSOutput;']);\n VSSource = vtkShaderProgram.substitute(VSSource, '//VTK::Color::Dec', [\n 'attribute vec4 gColor;',\n 'varying vec4 vertexColorVSOutput;',\n ]).result;\n VSSource = vtkShaderProgram.substitute(VSSource, '//VTK::Color::Impl', [\n 'vertexColorVSOutput = gColor;',\n ]).result;\n GSSource = vtkShaderProgram.substitute(GSSource, '//VTK::Color::Dec', [\n 'in vec4 vertexColorVSOutput[];',\n 'out vec4 vertexColorGSOutput;',\n ]).result;\n GSSource = vtkShaderProgram.substitute(GSSource, '//VTK::Color::Impl', [\n 'vertexColorGSOutput = vertexColorVSOutput[i];',\n ]).result;\n\n colorImpl = colorImpl.concat([\n ' diffuseColor = vertexColorVSOutput.rgb;',\n ' ambientColor = vertexColorVSOutput.rgb;',\n ' opacity = opacity*vertexColorVSOutput.a;',\n ]);\n }\n\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Color::Impl',\n colorImpl\n ).result;\n\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Color::Dec',\n colorDec\n ).result;\n\n shaders.Vertex = VSSource;\n shaders.Geometry = GSSource;\n shaders.Fragment = FSSource;\n }\n superClass.replaceShaderColor(shaders, ren, actor);\n };\n\n publicAPI.replaceShaderPositionVC = (shaders, ren, actor) => {\n if (model.hardwareSupport) {\n let VSSource = shaders.Vertex;\n\n // do we need the vertex in the shader in View Coordinates\n const lastLightComplexity = model.lastBoundBO.getReferenceByName(\n 'lastLightComplexity'\n );\n if (lastLightComplexity > 0) {\n VSSource = vtkShaderProgram.substitute(\n VSSource,\n '//VTK::PositionVC::Impl',\n [\n 'vec4 gVertexMC = gMatrix * vertexMC;',\n 'vertexVCVSOutput = MCVCMatrix * gVertexMC;',\n ' gl_Position = MCDCMatrix * gVertexMC;',\n ]\n ).result;\n VSSource = vtkShaderProgram.substitute(VSSource, '//VTK::Camera::Dec', [\n 'attribute mat4 gMatrix;',\n 'uniform mat4 MCDCMatrix;',\n 'uniform mat4 MCVCMatrix;',\n ]).result;\n } else {\n VSSource = vtkShaderProgram.substitute(VSSource, '//VTK::Camera::Dec', [\n 'attribute mat4 gMatrix;',\n 'uniform mat4 MCDCMatrix;',\n ]).result;\n VSSource = vtkShaderProgram.substitute(\n VSSource,\n '//VTK::PositionVC::Impl',\n [\n 'vec4 gVertexMC = gMatrix * vertexMC;',\n ' gl_Position = MCDCMatrix * gVertexMC;',\n ]\n ).result;\n }\n shaders.Vertex = VSSource;\n }\n superClass.replaceShaderPositionVC(shaders, ren, actor);\n };\n\n publicAPI.replaceShaderPicking = (shaders, ren, actor) => {\n if (model.openGLRenderer.getSelector()) {\n let FSSource = shaders.Fragment;\n switch (model.openGLRenderer.getSelector().getCurrentPass()) {\n case PassTypes.ID_LOW24:\n break;\n case PassTypes.COMPOSITE_INDEX_PASS:\n if (model.hardwareSupport) {\n let VSSource = shaders.Vertex;\n VSSource = vtkShaderProgram.substitute(\n VSSource,\n '//VTK::Picking::Dec',\n [\n 'attribute vec3 mapperIndexVS;',\n 'varying vec3 mapperIndexVSOutput;',\n ]\n ).result;\n VSSource = vtkShaderProgram.substitute(\n VSSource,\n '//VTK::Picking::Impl',\n ' mapperIndexVSOutput = mapperIndexVS;'\n ).result;\n shaders.Vertex = VSSource;\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Picking::Dec',\n 'varying vec3 mapperIndexVSOutput;'\n ).result;\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Picking::Impl',\n ' gl_FragData[0] = vec4(mapperIndexVSOutput,1.0);'\n ).result;\n } else {\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Picking::Dec',\n 'uniform vec3 mapperIndex;'\n ).result;\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Picking::Impl',\n ' gl_FragData[0] = vec4(mapperIndex,1.0);'\n ).result;\n }\n break;\n default:\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Picking::Dec',\n 'uniform vec3 mapperIndex;'\n ).result;\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Picking::Impl',\n ' gl_FragData[0] = vec4(mapperIndex,1.0);'\n ).result;\n }\n shaders.Fragment = FSSource;\n }\n };\n\n publicAPI.updateGlyphShaderParameters = (\n normalMatrixUsed,\n mcvcMatrixUsed,\n cellBO,\n carray,\n garray,\n narray,\n p,\n selector\n ) => {\n const program = cellBO.getProgram();\n\n if (normalMatrixUsed) {\n const a = model.normalMatrix;\n const b = narray;\n const ofs = p * 9;\n const out = model.tmpMat3;\n\n const a00 = a[0];\n const a01 = a[1];\n const a02 = a[2];\n const a10 = a[3];\n const a11 = a[4];\n const a12 = a[5];\n const a20 = a[6];\n const a21 = a[7];\n const a22 = a[8];\n\n const b00 = b[ofs];\n const b01 = b[ofs + 1];\n const b02 = b[ofs + 2];\n const b10 = b[ofs + 3];\n const b11 = b[ofs + 4];\n const b12 = b[ofs + 5];\n const b20 = b[ofs + 6];\n const b21 = b[ofs + 7];\n const b22 = b[ofs + 8];\n\n out[0] = b00 * a00 + b01 * a10 + b02 * a20;\n out[1] = b00 * a01 + b01 * a11 + b02 * a21;\n out[2] = b00 * a02 + b01 * a12 + b02 * a22;\n\n out[3] = b10 * a00 + b11 * a10 + b12 * a20;\n out[4] = b10 * a01 + b11 * a11 + b12 * a21;\n out[5] = b10 * a02 + b11 * a12 + b12 * a22;\n\n out[6] = b20 * a00 + b21 * a10 + b22 * a20;\n out[7] = b20 * a01 + b21 * a11 + b22 * a21;\n out[8] = b20 * a02 + b21 * a12 + b22 * a22;\n\n program.setUniformMatrix3x3('normalMatrix', model.tmpMat3);\n }\n publicAPI.multiply4x4WithOffset(\n model.tmpMat4,\n model.mcdcMatrix,\n garray,\n p * 16\n );\n program.setUniformMatrix('MCDCMatrix', model.tmpMat4);\n if (mcvcMatrixUsed) {\n publicAPI.multiply4x4WithOffset(\n model.tmpMat4,\n model.mcvcMatrix,\n garray,\n p * 16\n );\n program.setUniformMatrix('MCVCMatrix', model.tmpMat4);\n }\n\n // set color\n if (carray) {\n const cdata = carray.getData();\n model.tmpColor[0] = cdata[p * 4] / 255.0;\n model.tmpColor[1] = cdata[p * 4 + 1] / 255.0;\n model.tmpColor[2] = cdata[p * 4 + 2] / 255.0;\n program.setUniform3fArray('ambientColorUniform', model.tmpColor);\n program.setUniform3fArray('diffuseColorUniform', model.tmpColor);\n }\n\n if (selector) {\n program.setUniform3fArray('mapperIndex', selector.getPropColorValue());\n }\n };\n\n publicAPI.renderPieceDraw = (ren, actor) => {\n const representation = actor.getProperty().getRepresentation();\n\n const gl = model.context;\n\n const drawSurfaceWithEdges =\n actor.getProperty().getEdgeVisibility() &&\n representation === Representation.SURFACE;\n\n // // [WMVD]C == {world, model, view, display} coordinates\n // // E.g., WCDC == world to display coordinate transformation\n const keyMats = model.openGLCamera.getKeyMatrices(ren);\n const actMats = model.openGLActor.getKeyMatrices();\n\n // precompute the actor+camera mats once\n mat3.multiply(\n model.normalMatrix,\n keyMats.normalMatrix,\n actMats.normalMatrix\n );\n mat4.multiply(model.mcdcMatrix, keyMats.wcdc, actMats.mcwc);\n mat4.multiply(model.mcvcMatrix, keyMats.wcvc, actMats.mcwc);\n\n const garray = model.renderable.getMatrixArray();\n const narray = model.renderable.getNormalArray();\n const carray = model.renderable.getColorArray();\n const numPts = garray.length / 16;\n\n let compositePass = false;\n if (model.openGLRenderer.getSelector()) {\n if (\n model.openGLRenderer.getSelector().getCurrentPass() ===\n PassTypes.COMPOSITE_INDEX_PASS\n ) {\n compositePass = true;\n }\n }\n\n // for every primitive type\n for (let i = model.primTypes.Start; i < model.primTypes.End; i++) {\n // if there are entries\n const cabo = model.primitives[i].getCABO();\n if (cabo.getElementCount()) {\n // are we drawing edges\n model.drawingEdges =\n drawSurfaceWithEdges &&\n (i === model.primTypes.TrisEdges ||\n i === model.primTypes.TriStripsEdges);\n publicAPI.updateShaders(model.primitives[i], ren, actor);\n const program = model.primitives[i].getProgram();\n\n const mode = publicAPI.getOpenGLMode(representation, i);\n const normalMatrixUsed = program.isUniformUsed('normalMatrix');\n const mcvcMatrixUsed = program.isUniformUsed('MCVCMatrix');\n\n if (model.hardwareSupport) {\n if (model.extension) {\n model.extension.drawArraysInstancedANGLE(\n mode,\n 0,\n cabo.getElementCount(),\n numPts\n );\n } else {\n gl.drawArraysInstanced(mode, 0, cabo.getElementCount(), numPts);\n }\n } else {\n // draw the array multiple times with different cam matrix\n for (let p = 0; p < numPts; ++p) {\n if (compositePass) {\n model.openGLRenderer.getSelector().renderCompositeIndex(p);\n }\n publicAPI.updateGlyphShaderParameters(\n normalMatrixUsed,\n mcvcMatrixUsed,\n model.primitives[i],\n carray,\n garray,\n narray,\n p,\n compositePass ? model.openGLRenderer.getSelector() : null\n );\n gl.drawArrays(mode, 0, cabo.getElementCount());\n }\n }\n }\n }\n };\n\n publicAPI.setMapperShaderParameters = (cellBO, ren, actor) => {\n if (\n cellBO.getCABO().getElementCount() &&\n (model.glyphBOBuildTime.getMTime() >\n cellBO.getAttributeUpdateTime().getMTime() ||\n cellBO.getShaderSourceTime().getMTime() >\n cellBO.getAttributeUpdateTime().getMTime())\n ) {\n if (cellBO.getProgram().isAttributeUsed('gMatrix')) {\n if (\n !cellBO\n .getVAO()\n .addAttributeMatrixWithDivisor(\n cellBO.getProgram(),\n model.matrixBuffer,\n 'gMatrix',\n 0,\n 64,\n model.context.FLOAT,\n 4,\n false,\n 1\n )\n ) {\n vtkErrorMacro('Error setting gMatrix in shader VAO.');\n }\n } else {\n cellBO.getVAO().removeAttributeArray('gMatrix');\n }\n if (cellBO.getProgram().isAttributeUsed('gNormal')) {\n if (\n !cellBO\n .getVAO()\n .addAttributeMatrixWithDivisor(\n cellBO.getProgram(),\n model.normalBuffer,\n 'gNormal',\n 0,\n 36,\n model.context.FLOAT,\n 3,\n false,\n 1\n )\n ) {\n vtkErrorMacro('Error setting gNormal in shader VAO.');\n }\n } else {\n cellBO.getVAO().removeAttributeArray('gNormal');\n }\n if (cellBO.getProgram().isAttributeUsed('gColor')) {\n if (\n !cellBO\n .getVAO()\n .addAttributeArrayWithDivisor(\n cellBO.getProgram(),\n model.colorBuffer,\n 'gColor',\n 0,\n 4,\n model.context.UNSIGNED_BYTE,\n 4,\n true,\n 1,\n false\n )\n ) {\n vtkErrorMacro('Error setting gColor in shader VAO.');\n }\n } else {\n cellBO.getVAO().removeAttributeArray('gColor');\n }\n if (cellBO.getProgram().isAttributeUsed('mapperIndexVS')) {\n if (\n !cellBO\n .getVAO()\n .addAttributeArrayWithDivisor(\n cellBO.getProgram(),\n model.pickBuffer,\n 'mapperIndexVS',\n 0,\n 4,\n model.context.UNSIGNED_BYTE,\n 4,\n true,\n 1,\n false\n )\n ) {\n vtkErrorMacro('Error setting mapperIndexVS in shader VAO.');\n }\n } else {\n cellBO.getVAO().removeAttributeArray('mapperIndexVS');\n }\n superClass.setMapperShaderParameters(cellBO, ren, actor);\n cellBO.getAttributeUpdateTime().modified();\n return;\n }\n\n superClass.setMapperShaderParameters(cellBO, ren, actor);\n };\n\n publicAPI.getNeedToRebuildBufferObjects = (ren, actor) => {\n model.renderable.buildArrays();\n\n // first do a coarse check\n // Note that the actor's mtime includes it's properties mtime\n const vmtime = model.VBOBuildTime.getMTime();\n if (vmtime < model.renderable.getBuildTime().getMTime()) {\n return true;\n }\n return superClass.getNeedToRebuildBufferObjects(ren, actor);\n };\n\n publicAPI.buildBufferObjects = (ren, actor) => {\n if (model.hardwareSupport) {\n // update the buffer objects if needed\n const garray = model.renderable.getMatrixArray();\n const narray = model.renderable.getNormalArray();\n const carray = model.renderable.getColorArray();\n if (!model.matrixBuffer) {\n model.matrixBuffer = vtkBufferObject.newInstance();\n model.matrixBuffer.setOpenGLRenderWindow(model.openGLRenderWindow);\n model.normalBuffer = vtkBufferObject.newInstance();\n model.normalBuffer.setOpenGLRenderWindow(model.openGLRenderWindow);\n model.colorBuffer = vtkBufferObject.newInstance();\n model.colorBuffer.setOpenGLRenderWindow(model.openGLRenderWindow);\n model.pickBuffer = vtkBufferObject.newInstance();\n model.pickBuffer.setOpenGLRenderWindow(model.openGLRenderWindow);\n }\n if (\n model.renderable.getBuildTime().getMTime() >\n model.glyphBOBuildTime.getMTime()\n ) {\n model.matrixBuffer.upload(garray, ObjectType.ARRAY_BUFFER);\n model.normalBuffer.upload(narray, ObjectType.ARRAY_BUFFER);\n if (carray) {\n model.colorBuffer.upload(carray.getData(), ObjectType.ARRAY_BUFFER);\n } else {\n model.colorBuffer.releaseGraphicsResources();\n }\n const numPts = garray.length / 16;\n const parray = new Uint8Array(4 * numPts);\n for (let i = 0; i < numPts; ++i) {\n let value = i + 1;\n const offset = i * 4;\n parray[offset] = value % 256;\n value -= parray[offset];\n value /= 256;\n parray[offset + 1] = value % 256;\n value -= parray[offset + 1];\n value /= 256;\n parray[offset + 2] = value % 256;\n parray[offset + 3] = 255;\n }\n model.pickBuffer.upload(parray, ObjectType.ARRAY_BUFFER);\n model.glyphBOBuildTime.modified();\n }\n }\n return superClass.buildBufferObjects(ren, actor);\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n normalMatrix: null,\n mcdcMatrix: null,\n mcwcMatrix: null,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkOpenGLPolyDataMapper.extend(publicAPI, model, initialValues);\n\n model.tmpMat3 = mat3.create();\n model.normalMatrix = mat3.create();\n model.mcdcMatrix = mat4.create();\n model.mcvcMatrix = mat4.create();\n model.tmpColor = [];\n\n model.glyphBOBuildTime = {};\n macro.obj(model.glyphBOBuildTime, { mtime: 0 });\n\n // Object methods\n vtkOpenGLGlyph3DMapper(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkOpenGLGlyph3DMapper');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/OpenGL/Glyph3DMapper/index.js","export const PassTypes = {\n MIN_KNOWN_PASS: 0,\n ACTOR_PASS: 0,\n COMPOSITE_INDEX_PASS: 1,\n ID_LOW24: 2,\n MAX_KNOWN_PASS: 2,\n};\n\nexport default {\n PassTypes,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/OpenGL/HardwareSelector/Constants.js","import macro from 'vtk.js/Sources/macro';\nimport Constants from 'vtk.js/Sources/Common/DataModel/SelectionNode/Constants';\n\n// ----------------------------------------------------------------------------\n// vtkSelectionNode methods\n// ----------------------------------------------------------------------------\n\nfunction vtkSelectionNode(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkSelectionNode');\n\n publicAPI.getBounds = () => model.points.getBounds();\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n contentType: -1,\n fieldType: -1,\n properties: null,\n selectionList: [],\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n macro.obj(publicAPI, model);\n model.properties = {};\n macro.setGet(publicAPI, model, [\n 'contentType',\n 'fieldType',\n 'properties',\n 'selectionList',\n ]);\n\n // Object specific methods\n vtkSelectionNode(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkSelectionNode');\n\n// ----------------------------------------------------------------------------\n\nexport default Object.assign({ newInstance, extend }, Constants);\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Common/DataModel/SelectionNode/index.js","/**\n * The (primary) property that describes the content of a selection\n * node's data. Other auxiliary description properties follow.\n * GLOBALIDS means that the selection list contains values from the\n * vtkDataSetAttribute array of the same name.\n * PEDIGREEIDS means that the selection list contains values from the\n * vtkDataSetAttribute array of the same name.\n * VALUES means the the selection list contains values from an\n * arbitrary attribute array (ignores any globalids attribute)\n * INDICES means that the selection list contains indexes into the\n * cell or point arrays.\n * FRUSTUM means the set of points and cells inside a frustum\n * LOCATIONS means the set of points and cells near a set of positions\n * THRESHOLDS means the points and cells with values within a set of ranges\n * getContentType() returns -1 if the content type is not set.\n */\n\n// Specify how data arrays can be used by data objects\nexport const SelectionContent = {\n GLOBALIDS: 0,\n PEDIGREEIDS: 1,\n VALUES: 2,\n INDICES: 3,\n FRUSTUM: 4,\n LOCATIONS: 5,\n THRESHOLDS: 6,\n BLOCKS: 7,\n QUERY: 8,\n};\n\nexport const SelectionField = {\n CELL: 0,\n POINT: 1,\n FIELD: 2,\n VERTEX: 3,\n EDGE: 4,\n ROW: 5,\n};\n\nexport default {\n SelectionContent,\n SelectionField,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Common/DataModel/SelectionNode/Constants.js","import macro from 'vtk.js/Sources/macro';\nimport vtkFieldData from 'vtk.js/Sources/Common/DataModel/DataSetAttributes/FieldData';\nimport Constants from 'vtk.js/Sources/Common/DataModel/DataSetAttributes/Constants';\nimport vtkDataArray from 'vtk.js/Sources/Common/Core/DataArray';\n\nconst { AttributeTypes, AttributeCopyOperations } = Constants;\nconst { vtkWarningMacro } = macro;\n\n// ----------------------------------------------------------------------------\n// vtkDataSetAttributes methods\n// ----------------------------------------------------------------------------\n\nfunction vtkDataSetAttributes(publicAPI, model) {\n const attrTypes = [\n 'Scalars',\n 'Vectors',\n 'Normals',\n 'TCoords',\n 'Tensors',\n 'GlobalIds',\n 'PedigreeIds',\n ];\n\n function cleanAttributeType(attType) {\n // Given an integer or string, convert the result to one of the\n // strings in the \"attrTypes\" array above or null (if\n // no match is found)\n let cleanAttType = attrTypes.find(\n (ee) =>\n AttributeTypes[ee.toUpperCase()] === attType ||\n (typeof attType !== 'number' &&\n ee.toLowerCase() === attType.toLowerCase())\n );\n if (typeof cleanAttType === 'undefined') {\n cleanAttType = null;\n }\n return cleanAttType;\n }\n\n // Set our className\n model.classHierarchy.push('vtkDataSetAttributes');\n\n publicAPI.checkNumberOfComponents = (x) => true; // TODO\n\n publicAPI.setAttribute = (arr, uncleanAttType) => {\n const attType = cleanAttributeType(uncleanAttType);\n if (\n arr &&\n attType.toUpperCase() === 'PEDIGREEIDS' &&\n !arr.isA('vtkDataArray')\n ) {\n vtkWarningMacro(\n `Cannot set attribute ${attType}. The attribute must be a vtkDataArray.`\n );\n return -1;\n }\n if (arr && !publicAPI.checkNumberOfComponents(arr, attType)) {\n vtkWarningMacro(\n `Cannot set attribute ${attType}. Incorrect number of components.`\n );\n return -1;\n }\n let currentAttribute = model[`active${attType}`];\n if (currentAttribute >= 0 && currentAttribute < model.arrays.length) {\n if (model.arrays[currentAttribute] === arr) {\n return currentAttribute;\n }\n publicAPI.removeArrayByIndex(currentAttribute);\n }\n\n if (arr) {\n currentAttribute = publicAPI.addArray(arr);\n model[`active${attType}`] = currentAttribute;\n } else {\n model[`active${attType}`] = -1;\n }\n publicAPI.modified();\n return model[`active${attType}`];\n };\n\n publicAPI.setActiveAttributeByName = (arrayName, attType) =>\n publicAPI.setActiveAttributeByIndex(\n publicAPI.getArrayWithIndex(arrayName).index,\n attType\n );\n\n publicAPI.setActiveAttributeByIndex = (arrayIdx, uncleanAttType) => {\n const attType = cleanAttributeType(uncleanAttType);\n if (arrayIdx >= 0 && arrayIdx < model.arrays.length) {\n if (attType.toUpperCase() !== 'PEDIGREEIDS') {\n const arr = publicAPI.getArrayByIndex(arrayIdx);\n if (!arr.isA('vtkDataArray')) {\n vtkWarningMacro(\n `Cannot set attribute ${attType}. Only vtkDataArray subclasses can be set as active attributes.`\n );\n return -1;\n }\n if (!publicAPI.checkNumberOfComponents(arr, attType)) {\n vtkWarningMacro(\n `Cannot set attribute ${attType}. Incorrect number of components.`\n );\n return -1;\n }\n }\n model[`active${attType}`] = arrayIdx;\n publicAPI.modified();\n return arrayIdx;\n } else if (arrayIdx === -1) {\n model[`active${attType}`] = arrayIdx;\n publicAPI.modified();\n }\n return -1;\n };\n\n publicAPI.getActiveAttribute = (attType) => {\n // Given an integer enum value or a string (with random capitalization),\n // find the matching string in attrTypes.\n const cleanAttType = cleanAttributeType(attType);\n return publicAPI[`get${cleanAttType}`]();\n };\n\n // Override to allow proper handling of active attributes\n publicAPI.removeAllArrays = () => {\n model.arrays = [];\n attrTypes.forEach((attType) => {\n model[`active${attType}`] = -1;\n });\n };\n\n // Override to allow proper handling of active attributes\n publicAPI.removeArray = (arrayName) => {\n model.arrays = model.arrays.filter((entry, idx) => {\n if (arrayName === entry.data.getName()) {\n // Found the array to remove, but is it an active attribute?\n attrTypes.forEach((attType) => {\n if (idx === model[`active${attType}`]) {\n model[`active${attType}`] = -1;\n }\n });\n return false;\n }\n return true;\n });\n };\n\n // Override to allow proper handling of active attributes\n publicAPI.removeArrayByIndex = (arrayIdx) => {\n model.arrays = model.arrays.filter((entry, idx) => idx !== arrayIdx);\n attrTypes.forEach((attType) => {\n if (arrayIdx === model[`active${attType}`]) {\n model[`active${attType}`] = -1;\n }\n });\n };\n\n attrTypes.forEach((value) => {\n const activeVal = `active${value}`;\n publicAPI[`get${value}`] = () =>\n publicAPI.getArrayByIndex(model[activeVal]);\n publicAPI[`set${value}`] = (da) => publicAPI.setAttribute(da, value);\n publicAPI[`setActive${value}`] = (arrayName) =>\n publicAPI.setActiveAttributeByIndex(\n publicAPI.getArrayWithIndex(arrayName).index,\n value\n );\n publicAPI[`copy${value}Off`] = () => {\n publicAPI.initialize();\n const attType = value.toUpperCase();\n model.copyAttributeFlags[AttributeCopyOperations.PASSDATA][\n AttributeTypes[attType]\n ] = false;\n };\n });\n\n publicAPI.initialize = macro.chain(publicAPI.initialize, () => {\n // Default to copying all attributes in every circumstance:\n model.copyAttributeFlags = [];\n Object.keys(AttributeCopyOperations)\n .filter((op) => op !== 'ALLCOPY')\n .forEach((attCopyOp) => {\n model.copyAttributeFlags[\n AttributeCopyOperations[attCopyOp]\n ] = Object.keys(AttributeTypes)\n .filter((ty) => ty !== 'NUM_ATTRIBUTES')\n .reduce((a, b) => {\n a[AttributeTypes[b]] = true;\n return a;\n }, []);\n });\n // Override some operations where we don't want to copy:\n model.copyAttributeFlags[AttributeCopyOperations.COPYTUPLE][\n AttributeTypes.GLOBALIDS\n ] = false;\n model.copyAttributeFlags[AttributeCopyOperations.INTERPOLATE][\n AttributeTypes.GLOBALIDS\n ] = false;\n model.copyAttributeFlags[AttributeCopyOperations.COPYTUPLE][\n AttributeTypes.PEDIGREEIDS\n ] = false;\n });\n\n // Process dataArrays if any\n if (model.dataArrays && Object.keys(model.dataArrays).length) {\n Object.keys(model.dataArrays).forEach((name) => {\n if (\n !model.dataArrays[name].ref &&\n model.dataArrays[name].type === 'vtkDataArray'\n ) {\n publicAPI.addArray(vtkDataArray.newInstance(model.dataArrays[name]));\n }\n });\n }\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n activeScalars: -1,\n activeVectors: -1,\n activeTensors: -1,\n activeNormals: -1,\n activeTCoords: -1,\n activeGlobalIds: -1,\n activePedigreeIds: -1,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Object methods\n vtkFieldData.extend(publicAPI, model, initialValues);\n macro.setGet(publicAPI, model, [\n 'activeScalars',\n 'activeNormals',\n 'activeTCoords',\n 'activeVectors',\n 'activeTensors',\n 'activeGlobalIds',\n 'activePedigreeIds',\n ]);\n\n if (!model.arrays) {\n model.arrays = {};\n }\n\n // Object specific methods\n vtkDataSetAttributes(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkDataSetAttributes');\n\n// ----------------------------------------------------------------------------\n\nexport default Object.assign({ newInstance, extend }, Constants);\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Common/DataModel/DataSetAttributes/index.js","import vtk from 'vtk.js/Sources/vtk';\nimport macro from 'vtk.js/Sources/macro';\nimport vtkDataArray from 'vtk.js/Sources/Common/Core/DataArray';\n\n// ----------------------------------------------------------------------------\n// vtkFieldData methods\n// ----------------------------------------------------------------------------\n\nfunction vtkFieldData(publicAPI, model) {\n model.classHierarchy.push('vtkFieldData');\n const superGetState = publicAPI.getState;\n\n // Decode serialized data if any\n if (model.arrays) {\n model.arrays = model.arrays.map((item) => ({ data: vtk(item.data) }));\n }\n\n publicAPI.initialize = () => {\n publicAPI.initializeFields();\n publicAPI.copyAllOn();\n publicAPI.clearFieldFlags();\n };\n\n publicAPI.initializeFields = () => {\n model.arrays = [];\n model.copyFieldFlags = {};\n publicAPI.modified();\n };\n\n publicAPI.copyStructure = (other) => {\n publicAPI.initializeFields();\n model.copyFieldFlags = other.getCopyFieldFlags().map((x) => x); // Deep-copy\n model.arrays = other.arrays().map((x) => ({ array: x })); // Deep-copy\n // TODO: Copy array information objects (once we support information objects)\n };\n\n publicAPI.getNumberOfArrays = () => model.arrays.length;\n publicAPI.getNumberOfActiveArrays = () => model.arrays.length;\n publicAPI.addArray = (arr) => {\n model.arrays = [].concat(model.arrays, { data: arr });\n return model.arrays.length - 1;\n };\n publicAPI.removeAllArrays = () => {\n model.arrays = [];\n };\n publicAPI.removeArray = (arrayName) => {\n model.arrays = model.arrays.filter(\n (entry) => arrayName !== entry.data.getName()\n );\n };\n publicAPI.removeArrayByIndex = (arrayIdx) => {\n model.arrays = model.arrays.filter((entry, idx) => idx !== arrayIdx);\n };\n publicAPI.getArrays = () => model.arrays.map((entry) => entry.data);\n publicAPI.getArray = (arraySpec) =>\n typeof arraySpec === 'number'\n ? publicAPI.getArrayByIndex(arraySpec)\n : publicAPI.getArrayByName(arraySpec);\n publicAPI.getArrayByName = (arrayName) =>\n model.arrays.reduce(\n (a, b, i) => (b.data.getName() === arrayName ? b.data : a),\n null\n );\n publicAPI.getArrayWithIndex = (arrayName) =>\n model.arrays.reduce(\n (a, b, i) =>\n b.data && b.data.getName() === arrayName\n ? { array: b.data, index: i }\n : a,\n { array: null, index: -1 }\n );\n publicAPI.getArrayByIndex = (idx) =>\n idx >= 0 && idx < model.arrays.length ? model.arrays[idx].data : null;\n publicAPI.hasArray = (arrayName) =>\n publicAPI.getArrayWithIndex(arrayName).index >= 0;\n publicAPI.getArrayName = (idx) => {\n const arr = model.arrays[idx];\n return arr ? arr.data.getName() : '';\n };\n publicAPI.getCopyFieldFlags = () => model.copyFieldFlags;\n publicAPI.getFlag = (arrayName) => model.copyFieldFlags[arrayName];\n publicAPI.passData = (other, fromId = -1, toId = -1) => {\n other.getArrays().forEach((arr) => {\n const copyFlag = publicAPI.getFlag(arr.getName());\n if (\n copyFlag !== false &&\n !(model.doCopyAllOff && copyFlag !== true) &&\n arr\n ) {\n let destArr = publicAPI.getArrayByName(arr.getName());\n if (!destArr) {\n if (fromId < 0 || fromId > arr.getNumberOfTuples()) {\n publicAPI.addArray(arr);\n } else {\n const ncomps = arr.getNumberOfComponents();\n let newSize = arr.getNumberOfValues();\n const tId = toId > -1 ? toId : fromId;\n if (newSize < tId * ncomps) {\n newSize = (tId + 1) * ncomps;\n }\n destArr = vtkDataArray.newInstance({\n name: arr.getName(),\n dataType: arr.getDataType(),\n numberOfComponents: arr.getNumberOfComponents(),\n size: newSize,\n });\n destArr.setTuple(tId, arr.getTuple(fromId));\n publicAPI.addArray(destArr);\n }\n } else if (\n arr.getNumberOfComponents() === destArr.getNumberOfComponents()\n ) {\n if (fromId > -1 && fromId < arr.getNumberOfTuples()) {\n const tId = toId > -1 ? toId : fromId;\n destArr.setTuple(tId, arr.getTuple(fromId));\n } else {\n // if fromId and not provided, just copy all (or as much possible)\n // of arr to destArr.\n for (let i = 0; i < arr.getNumberOfTuples(); ++i) {\n destArr.setTuple(i, arr.getTuple(i));\n }\n }\n }\n }\n });\n };\n publicAPI.copyFieldOn = (arrayName) => {\n model.copyFieldFlags[arrayName] = true;\n };\n publicAPI.copyFieldOff = (arrayName) => {\n model.copyFieldFlags[arrayName] = false;\n };\n publicAPI.copyAllOn = () => {\n if (!model.doCopyAllOn || model.doCopyAllOff) {\n model.doCopyAllOn = true;\n model.doCopyAllOff = false;\n publicAPI.modified();\n }\n };\n publicAPI.copyAllOff = () => {\n if (model.doCopyAllOn || !model.doCopyAllOff) {\n model.doCopyAllOn = false;\n model.doCopyAllOff = true;\n publicAPI.modified();\n }\n };\n publicAPI.clearFieldFlags = () => {\n model.copyFieldFlags = {};\n };\n publicAPI.deepCopy = (other) => {\n model.arrays = other.getArrays().map((arr) => {\n const arrNew = arr.newClone();\n arrNew.deepCopy(arr);\n return { data: arrNew };\n });\n };\n publicAPI.copyFlags = (other) => other.getCopyFieldFlags().map((x) => x);\n // TODO: publicAPI.squeeze = () => model.arrays.forEach(entry => entry.data.squeeze());\n publicAPI.reset = () => model.arrays.forEach((entry) => entry.data.reset());\n // TODO: getActualMemorySize\n publicAPI.getMTime = () =>\n model.arrays.reduce(\n (a, b) => (b.data.getMTime() > a ? b.data.getMTime() : a),\n model.mtime\n );\n // TODO: publicAPI.getField = (ids, other) => { copy ids from other into this model's arrays }\n // TODO: publicAPI.getArrayContainingComponent = (component) => ...\n publicAPI.getNumberOfComponents = () =>\n model.arrays.reduce((a, b) => a + b.data.getNumberOfComponents(), 0);\n publicAPI.getNumberOfTuples = () =>\n model.arrays.length > 0 ? model.arrays[0].getNumberOfTuples() : 0;\n\n publicAPI.getState = () => {\n const result = superGetState();\n result.arrays = model.arrays.map((item) => ({\n data: item.data.getState(),\n }));\n return result;\n };\n}\n\nconst DEFAULT_VALUES = {\n arrays: [],\n copyFieldFlags: [], // fields not to copy\n doCopyAllOn: true,\n doCopyAllOff: false,\n};\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n macro.obj(publicAPI, model);\n\n vtkFieldData(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkFieldData');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Common/DataModel/DataSetAttributes/FieldData.js","// Specify how data arrays can be used by data objects\nexport const FieldDataTypes = {\n UNIFORM: 0, // data that does not vary over points/cells/etc.\n DATA_OBJECT_FIELD: 0, // to match VTK\n\n COORDINATE: 1, // data that specifies the location of each point\n POINT_DATA: 1, // to match VTK\n\n POINT: 2, // data defined at each point, but that does not specify the point location\n POINT_FIELD_DATA: 2, // to match VTK\n\n CELL: 3, // data defined at each cell, but that does not specify the cell\n CELL_FIELD_DATA: 3, // to match VTK\n\n VERTEX: 4, // data defined at each graph vertex, but that does not specify the graph vertex\n VERTEX_FIELD_DATA: 4, // to match VTK\n\n EDGE: 5, // data defined at each graph edge, but that does not specify the graph edge\n EDGE_FIELD_DATA: 5, // to match VTK\n\n ROW: 6, // data specifying a table row\n ROW_DATA: 6, // to match VTK\n};\n\nexport const FieldAssociations = {\n FIELD_ASSOCIATION_POINTS: 0,\n FIELD_ASSOCIATION_CELLS: 1,\n FIELD_ASSOCIATION_NONE: 2,\n FIELD_ASSOCIATION_POINTS_THEN_CELLS: 3,\n FIELD_ASSOCIATION_VERTICES: 4,\n FIELD_ASSOCIATION_EDGES: 5,\n FIELD_ASSOCIATION_ROWS: 6,\n NUMBER_OF_ASSOCIATIONS: 7,\n};\n\nexport default {\n FieldDataTypes,\n FieldAssociations,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Common/DataModel/DataSet/Constants.js","import macro from 'vtk.js/Sources/macro';\nimport vtkBufferObject from 'vtk.js/Sources/Rendering/OpenGL/BufferObject';\nimport { ObjectType } from 'vtk.js/Sources/Rendering/OpenGL/BufferObject/Constants';\nimport { Representation } from 'vtk.js/Sources/Rendering/Core/Property/Constants';\n\nconst { vtkDebugMacro, vtkErrorMacro } = macro;\n\n// ----------------------------------------------------------------------------\n// vtkOpenGLCellArrayBufferObject methods\n// ----------------------------------------------------------------------------\n\nfunction vtkOpenGLCellArrayBufferObject(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkOpenGLCellArrayBufferObject');\n\n publicAPI.setType(ObjectType.ARRAY_BUFFER);\n\n publicAPI.createVBO = (cellArray, inRep, outRep, options) => {\n if (!cellArray.getData() || !cellArray.getData().length) {\n model.elementCount = 0;\n return 0;\n }\n\n // Figure out how big each block will be, currently 6 or 7 floats.\n model.blockSize = 3;\n model.vertexOffset = 0;\n model.normalOffset = 0;\n model.tCoordOffset = 0;\n model.tCoordComponents = 0;\n model.colorComponents = 0;\n model.colorOffset = 0;\n\n const pointData = options.points.getData();\n let normalData = null;\n let tcoordData = null;\n let colorData = null;\n\n const colorComponents = options.colors\n ? options.colors.getNumberOfComponents()\n : 0;\n const textureComponents = options.tcoords\n ? options.tcoords.getNumberOfComponents()\n : 0;\n\n // the values of 4 below are because floats are 4 bytes\n\n if (options.normals) {\n model.normalOffset = 4 * model.blockSize;\n model.blockSize += 3;\n normalData = options.normals.getData();\n }\n\n if (options.tcoords) {\n model.tCoordOffset = 4 * model.blockSize;\n model.tCoordComponents = textureComponents;\n model.blockSize += textureComponents;\n tcoordData = options.tcoords.getData();\n }\n\n if (options.colors) {\n model.colorComponents = options.colors.getNumberOfComponents();\n model.colorOffset = 0;\n colorData = options.colors.getData();\n if (!model.colorBO) {\n model.colorBO = vtkBufferObject.newInstance();\n }\n model.colorBO.setOpenGLRenderWindow(model.openGLRenderWindow);\n } else {\n model.colorBO = null;\n }\n model.stride = 4 * model.blockSize;\n\n let pointIdx = 0;\n let normalIdx = 0;\n let tcoordIdx = 0;\n let colorIdx = 0;\n let cellCount = 0;\n let addAPoint;\n\n const cellBuilders = {\n // easy, every input point becomes an output point\n anythingToPoints(numPoints, cellPts, offset) {\n for (let i = 0; i < numPoints; ++i) {\n addAPoint(cellPts[offset + i]);\n }\n },\n linesToWireframe(numPoints, cellPts, offset) {\n // for lines we add a bunch of segments\n for (let i = 0; i < numPoints - 1; ++i) {\n addAPoint(cellPts[offset + i]);\n addAPoint(cellPts[offset + i + 1]);\n }\n },\n polysToWireframe(numPoints, cellPts, offset) {\n // for polys we add a bunch of segments and close it\n for (let i = 0; i < numPoints; ++i) {\n addAPoint(cellPts[offset + i]);\n addAPoint(cellPts[offset + (i + 1) % numPoints]);\n }\n },\n stripsToWireframe(numPoints, cellPts, offset) {\n // for strips we add a bunch of segments and close it\n for (let i = 0; i < numPoints - 1; ++i) {\n addAPoint(cellPts[offset + i]);\n addAPoint(cellPts[offset + i + 1]);\n }\n for (let i = 0; i < numPoints - 2; i++) {\n addAPoint(cellPts[offset + i]);\n addAPoint(cellPts[offset + i + 2]);\n }\n },\n polysToSurface(npts, cellPts, offset) {\n if (npts < 3) {\n // ignore degenerate triangles\n vtkDebugMacro('skipping degenerate triangle');\n } else {\n for (let i = 0; i < npts - 2; i++) {\n addAPoint(cellPts[offset + 0]);\n addAPoint(cellPts[offset + i + 1]);\n addAPoint(cellPts[offset + i + 2]);\n }\n }\n },\n stripsToSurface(npts, cellPts, offset) {\n for (let i = 0; i < npts - 2; i++) {\n addAPoint(cellPts[offset + i]);\n addAPoint(cellPts[offset + i + 1 + i % 2]);\n addAPoint(cellPts[offset + i + 1 + (i + 1) % 2]);\n }\n },\n };\n\n const cellCounters = {\n // easy, every input point becomes an output point\n anythingToPoints(numPoints, cellPts) {\n return numPoints;\n },\n linesToWireframe(numPoints, cellPts) {\n return (numPoints - 1) * 2;\n },\n polysToWireframe(numPoints, cellPts) {\n return numPoints * 2;\n },\n stripsToWireframe(numPoints, cellPts) {\n return numPoints * 4 - 6;\n },\n polysToSurface(npts, cellPts) {\n if (npts < 3) {\n return 0;\n }\n return (npts - 2) * 3;\n },\n stripsToSurface(npts, cellPts, offset) {\n return (npts - 2) * 3;\n },\n };\n\n let func = null;\n let countFunc = null;\n if (outRep === Representation.POINTS || inRep === 'verts') {\n func = cellBuilders.anythingToPoints;\n countFunc = cellCounters.anythingToPoints;\n } else if (outRep === Representation.WIREFRAME || inRep === 'lines') {\n func = cellBuilders[`${inRep}ToWireframe`];\n countFunc = cellCounters[`${inRep}ToWireframe`];\n } else {\n func = cellBuilders[`${inRep}ToSurface`];\n countFunc = cellCounters[`${inRep}ToSurface`];\n }\n\n const array = cellArray.getData();\n const size = array.length;\n let caboCount = 0;\n for (let index = 0; index < size; ) {\n caboCount += countFunc(array[index], array);\n index += array[index] + 1;\n }\n\n let packedUCVBO = null;\n const packedVBO = new Float32Array(caboCount * model.blockSize);\n if (colorData) {\n packedUCVBO = new Uint8Array(caboCount * 4);\n }\n let vboidx = 0;\n let ucidx = 0;\n\n addAPoint = function addAPointFunc(i) {\n // Vertices\n pointIdx = i * 3;\n\n packedVBO[vboidx++] = pointData[pointIdx++];\n packedVBO[vboidx++] = pointData[pointIdx++];\n packedVBO[vboidx++] = pointData[pointIdx++];\n\n if (normalData !== null) {\n if (options.haveCellNormals) {\n normalIdx = (cellCount + options.cellOffset) * 3;\n } else {\n normalIdx = i * 3;\n }\n packedVBO[vboidx++] = normalData[normalIdx++];\n packedVBO[vboidx++] = normalData[normalIdx++];\n packedVBO[vboidx++] = normalData[normalIdx++];\n }\n\n if (tcoordData !== null) {\n tcoordIdx = i * textureComponents;\n for (let j = 0; j < textureComponents; ++j) {\n packedVBO[vboidx++] = tcoordData[tcoordIdx++];\n }\n }\n\n if (colorData !== null) {\n if (options.haveCellScalars) {\n colorIdx = (cellCount + options.cellOffset) * colorComponents;\n } else {\n colorIdx = i * colorComponents;\n }\n packedUCVBO[ucidx++] = colorData[colorIdx++];\n packedUCVBO[ucidx++] = colorData[colorIdx++];\n packedUCVBO[ucidx++] = colorData[colorIdx++];\n packedUCVBO[ucidx++] =\n colorComponents === 4 ? colorData[colorIdx++] : 255;\n }\n };\n\n for (let index = 0; index < size; ) {\n func(array[index], array, index + 1);\n index += array[index] + 1;\n cellCount++;\n }\n model.elementCount = caboCount;\n publicAPI.upload(packedVBO, ObjectType.ARRAY_BUFFER);\n if (model.colorBO) {\n model.colorBOStride = 4;\n model.colorBO.upload(packedUCVBO, ObjectType.ARRAY_BUFFER);\n }\n return cellCount;\n };\n\n publicAPI.setCoordShiftAndScaleMethod = (shiftScaleMethod) => {\n vtkErrorMacro('coordinate shift and scale not yet implemented');\n };\n\n publicAPI.setCoordShift = (shiftArray) => {\n vtkErrorMacro('coordinate shift and scale not yet implemented');\n };\n\n publicAPI.setCoordScale = (scaleArray) => {\n vtkErrorMacro('coordinate shift and scale not yet implemented');\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n elementCount: 0,\n stride: 0,\n colorBOStride: 0,\n vertexOffset: 0,\n normalOffset: 0,\n tCoordOffset: 0,\n tCoordComponents: 0,\n colorOffset: 0,\n colorComponents: 0,\n tcoordBO: null,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkBufferObject.extend(publicAPI, model, initialValues);\n\n macro.setGet(publicAPI, model, [\n 'colorBO',\n 'elementCount',\n 'stride',\n 'colorBOStride',\n 'vertexOffset',\n 'normalOffset',\n 'tCoordOffset',\n 'tCoordComponents',\n 'colorOffset',\n 'colorComponents',\n ]);\n\n // Object specific methods\n vtkOpenGLCellArrayBufferObject(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend);\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/OpenGL/CellArrayBufferObject/index.js","import macro from 'vtk.js/Sources/macro';\n\nconst { vtkErrorMacro } = macro;\n\n// export const SHADER_TYPES = ['Vertex', 'Fragment', 'Geometry', 'Unknown'];\n\n// ----------------------------------------------------------------------------\n// vtkShader methods\n// ----------------------------------------------------------------------------\n\nfunction vtkShader(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkShader');\n\n publicAPI.compile = () => {\n let stype = model.context.VERTEX_SHADER;\n\n if (\n !model.source ||\n !model.source.length ||\n model.shaderType === 'Unknown'\n ) {\n return false;\n }\n\n // Ensure we delete the previous shader if necessary.\n if (model.handle !== 0) {\n model.context.deleteShader(model.handle);\n model.handle = 0;\n }\n\n switch (model.shaderType) {\n // case vtkShader::Geometry:\n // type = GL_GEOMETRY_SHADER;\n // break;\n case 'Fragment':\n stype = model.context.FRAGMENT_SHADER;\n break;\n case 'Vertex':\n default:\n stype = model.context.VERTEX_SHADER;\n break;\n }\n\n model.handle = model.context.createShader(stype);\n model.context.shaderSource(model.handle, model.source);\n model.context.compileShader(model.handle);\n const isCompiled = model.context.getShaderParameter(\n model.handle,\n model.context.COMPILE_STATUS\n );\n if (!isCompiled) {\n const lastError = model.context.getShaderInfoLog(model.handle);\n vtkErrorMacro(`Error compiling shader '${model.source}': ${lastError}`);\n model.context.deleteShader(model.handle);\n model.handle = 0;\n return false;\n }\n\n // The shader compiled, store its handle and return success.\n return true;\n };\n\n publicAPI.cleanup = () => {\n if (model.shaderType === 'Unknown' || model.handle === 0) {\n return;\n }\n\n model.context.deleteShader(model.handle);\n model.handle = 0;\n model.dirty = true;\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n shaderType: 'Unknown',\n source: '',\n error: '',\n handle: 0,\n dirty: false,\n context: null,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Build VTK API\n macro.obj(publicAPI, model);\n macro.setGet(publicAPI, model, [\n 'shaderType',\n 'source',\n 'error',\n 'handle',\n 'context',\n ]);\n\n // Object methods\n vtkShader(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkShader');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/OpenGL/Shader/index.js","import macro from 'vtk.js/Sources/macro';\n\nimport vtkAbstractMapper from 'vtk.js/Sources/Rendering/Core/AbstractMapper';\nimport vtkMath from 'vtk.js/Sources/Common/Core/Math';\n// ----------------------------------------------------------------------------\n// vtkAbstractMapper methods\n// ----------------------------------------------------------------------------\n\nfunction vtkAbstractMapper3D(publicAPI, model) {\n publicAPI.getBounds = () => 0;\n\n publicAPI.getBounds = (bounds) => {\n publicAPI.getBounds();\n for (let i = 0; i < 6; i++) {\n bounds[i] = model.bounds[i];\n }\n };\n\n publicAPI.getCenter = (...center) => {\n publicAPI.getBounds();\n for (let i = 0; i < 3; i++) {\n model.center[i] = (model.bounds[2 * i + 1] + model.bounds[2 * i]) / 2.0;\n }\n if (Array.isArray(center[0])) {\n center[0] = model.center.splice(0);\n }\n return model.center;\n };\n\n publicAPI.getLength = () => {\n let diff = 0.0;\n let l = 0.0;\n publicAPI.getBounds();\n for (let i = 0; i < 3; i++) {\n diff = model.bounds[2 * i + 1] - model.bounds[2 * i];\n l += diff * diff;\n }\n\n return Math.sqrt(l);\n };\n\n publicAPI.getClippingPlaneInDataCoords = (propMatrix, i, hnormal) => {\n const clipPlanes = model.clippingPlanes;\n const mat = propMatrix;\n\n if (clipPlanes) {\n const n = clipPlanes.length;\n if (i >= 0 && i < n) {\n // Get the plane\n const plane = clipPlanes[i];\n const normal = plane.getNormal();\n const origin = plane.getOrigin();\n\n // Compute the plane equation\n const v1 = normal[0];\n const v2 = normal[1];\n const v3 = normal[2];\n const v4 = -(v1 * origin[0] + v2 * origin[1] + v3 * origin[2]);\n\n // Transform normal from world to data coords\n hnormal[0] = v1 * mat[0] + v2 * mat[4] + v3 * mat[8] + v4 * mat[12];\n hnormal[1] = v1 * mat[1] + v2 * mat[5] + v3 * mat[9] + v4 * mat[13];\n hnormal[2] = v1 * mat[2] + v2 * mat[6] + v3 * mat[10] + v4 * mat[14];\n hnormal[3] = v1 * mat[3] + v2 * mat[7] + v3 * mat[11] + v4 * mat[15];\n\n return;\n }\n }\n macro.vtkErrorMacro(`Clipping plane index ${i} is out of range.`);\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n bounds: [1, -1, 1, -1, 1, -1],\n center: [0, 0, 0],\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n // Inheritance\n vtkAbstractMapper.extend(publicAPI, model, initialValues);\n\n if (!model.bounds) {\n vtkMath.uninitializeBounds(model.bounds);\n }\n\n if (!model.center) {\n model.center = [0.0, 0.0, 0.0];\n }\n\n vtkAbstractMapper3D(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport default { extend };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/Core/AbstractMapper3D/index.js","import macro from 'vtk.js/Sources/macro';\n\n// ----------------------------------------------------------------------------\n// vtkAbstractMapper methods\n// ----------------------------------------------------------------------------\n\nfunction vtkAbstractMapper(publicAPI, model) {\n publicAPI.update = () => {\n publicAPI.getInputData();\n };\n\n publicAPI.addClippingPlane = (plane) => {\n if (plane.getClassName() !== 'vtkPlane') {\n return;\n }\n model.clippingPlanes.push(plane);\n };\n\n publicAPI.getNumberOfClippingPlanes = () => model.clippingPlanes.length;\n\n publicAPI.removeAllClippingPlanes = () => {\n model.clippingPlanes.length = 0;\n };\n\n publicAPI.removeClippingPlane = (i) => {\n if (i < 0 || i >= 6) {\n return;\n }\n model.clippingPlanes.splice(i, 1);\n };\n\n publicAPI.getClippingPlanes = () => model.clippingPlanes;\n\n publicAPI.setClippingPlanes = (planes) => {\n if (!planes) {\n return;\n }\n if (!Array.isArray(planes)) {\n publicAPI.addClippingPlane(planes);\n } else {\n const nbPlanes = planes.length;\n for (let i = 0; i < nbPlanes && i < 6; i++) {\n publicAPI.addClippingPlane(planes[i]);\n }\n }\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n clippingPlanes: [],\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Object methods\n macro.obj(publicAPI, model);\n macro.algo(publicAPI, model, 1, 0);\n\n if (!model.clippingPlanes) {\n model.clippingPlanes = [];\n }\n\n vtkAbstractMapper(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\nexport default { extend };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/Core/AbstractMapper/index.js","import Constants from 'vtk.js/Sources/Common/DataModel/StructuredData/Constants';\n\nconst { StructuredType } = Constants;\n\nexport function getDataDescriptionFromExtent(inExt) {\n let dataDim = 0;\n for (let i = 0; i < 3; ++i) {\n if (inExt[i * 2] < inExt[i * 2 + 1]) {\n dataDim++;\n }\n }\n\n if (inExt[0] > inExt[1] || inExt[2] > inExt[3] || inExt[4] > inExt[5]) {\n return StructuredType.EMPTY;\n }\n\n if (dataDim === 3) {\n return StructuredType.XYZ_GRID;\n } else if (dataDim === 2) {\n if (inExt[0] === inExt[1]) {\n return StructuredType.YZ_PLANE;\n } else if (inExt[2] === inExt[3]) {\n return StructuredType.XZ_PLANE;\n }\n return StructuredType.XY_PLANE;\n } else if (dataDim === 1) {\n if (inExt[0] < inExt[1]) {\n return StructuredType.X_LINE;\n } else if (inExt[2] < inExt[3]) {\n return StructuredType.Y_LINE;\n }\n return StructuredType.Z_LINE;\n }\n\n return StructuredType.SINGLE_POINT;\n}\n\nexport default Object.assign({ getDataDescriptionFromExtent }, Constants);\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Common/DataModel/StructuredData/index.js","import macro from 'vtk.js/Sources/macro';\nimport vtkMath from 'vtk.js/Sources/Common/Core/Math';\nimport vtkScalarsToColors from 'vtk.js/Sources/Common/Core/ScalarsToColors';\nimport { ScalarMappingTarget } from 'vtk.js/Sources/Common/Core/ScalarsToColors/Constants';\n\n// ----------------------------------------------------------------------------\n// Global methods\n// ----------------------------------------------------------------------------\n\n// Add module-level functions or api that you want to expose statically via\n// the next section...\n\n// ----------------------------------------------------------------------------\n// Static API\n// ----------------------------------------------------------------------------\n\nconst BELOW_RANGE_COLOR_INDEX = 0;\nconst ABOVE_RANGE_COLOR_INDEX = 1;\nconst NAN_COLOR_INDEX = 2;\n\n// ----------------------------------------------------------------------------\n// vtkMyClass methods\n// ----------------------------------------------------------------------------\n\nfunction vtkLookupTable(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkLookupTable');\n\n //----------------------------------------------------------------------------\n // Description:\n // Return true if all of the values defining the mapping have an opacity\n // equal to 1. Default implementation return true.\n publicAPI.isOpaque = () => {\n if (model.opaqueFlagBuildTime.getMTime() < publicAPI.getMTime()) {\n let opaque = true;\n if (model.nanColor[3] < 1.0) {\n opaque = 0;\n }\n if (model.useBelowRangeColor && model.belowRangeColor[3] < 1.0) {\n opaque = 0;\n }\n if (model.useAboveRangeColor && model.aboveRangeColor[3] < 1.0) {\n opaque = 0;\n }\n for (let i = 3; i < model.table.length && opaque; i += 4) {\n if (model.table[i] < 255) {\n opaque = false;\n }\n }\n model.opaqueFlag = opaque;\n model.opaqueFlagBuildTime.modified();\n }\n\n return model.opaqueFlag;\n };\n\n publicAPI.usingLogScale = () => false;\n\n //----------------------------------------------------------------------------\n publicAPI.getNumberOfAvailableColors = () => model.table.length;\n\n //----------------------------------------------------------------------------\n // Apply shift/scale to the scalar value v and return the index.\n publicAPI.linearIndexLookup = (v, p) => {\n let dIndex = 0;\n\n if (v < p.range[0]) {\n dIndex = p.maxIndex + BELOW_RANGE_COLOR_INDEX + 1.5;\n } else if (v > p.range[1]) {\n dIndex = p.maxIndex + ABOVE_RANGE_COLOR_INDEX + 1.5;\n } else {\n dIndex = (v + p.shift) * p.scale;\n\n // This conditional is needed because when v is very close to\n // p.Range[1], it may map above p.MaxIndex in the linear mapping\n // above.\n dIndex = dIndex < p.maxIndex ? dIndex : p.maxIndex;\n }\n\n return Math.floor(dIndex);\n };\n\n publicAPI.linearLookup = (v, table, p) => {\n let index = 0;\n if (vtkMath.isNan(v)) {\n index = Math.floor(p.maxIndex + 1.5 + NAN_COLOR_INDEX);\n } else {\n index = publicAPI.linearIndexLookup(v, p);\n }\n return [\n table[4 * index],\n table[4 * index + 1],\n table[4 * index + 2],\n table[4 * index + 3],\n ];\n };\n\n publicAPI.indexedLookupFunction = (v, table, p) => {\n const index = publicAPI.getAnnotatedValueIndexInternal(v);\n return [\n table[4 * index],\n table[4 * index + 1],\n table[4 * index + 2],\n table[4 * index + 3],\n ];\n };\n\n //----------------------------------------------------------------------------\n publicAPI.lookupShiftAndScale = (range, p) => {\n p.shift = -range[0];\n p.scale = Number.MAX_VALUE;\n if (range[1] > range[0]) {\n p.scale = (p.maxIndex + 1) / (range[1] - range[0]);\n }\n };\n\n // Public API methods\n publicAPI.mapScalarsThroughTable = (\n input,\n output,\n outFormat,\n inputOffset\n ) => {\n let lookupFunc = publicAPI.linearLookup;\n if (model.indexedLookup) {\n lookupFunc = publicAPI.indexedLookupFunction;\n }\n\n const trange = publicAPI.getMappingRange();\n\n const p = {\n maxIndex: publicAPI.getNumberOfColors() - 1,\n range: trange,\n shift: 0.0,\n scale: 0.0,\n };\n publicAPI.lookupShiftAndScale(trange, p);\n\n const alpha = publicAPI.getAlpha();\n const length = input.getNumberOfTuples();\n const inIncr = input.getNumberOfComponents();\n\n const outputV = output.getData();\n const inputV = input.getData();\n\n if (alpha >= 1.0) {\n if (outFormat === ScalarMappingTarget.RGBA) {\n for (let i = 0; i < length; i++) {\n const cptr = lookupFunc(\n inputV[i * inIncr + inputOffset],\n model.table,\n p\n );\n outputV[i * 4] = cptr[0];\n outputV[i * 4 + 1] = cptr[1];\n outputV[i * 4 + 2] = cptr[2];\n outputV[i * 4 + 3] = cptr[3];\n }\n }\n } else {\n /* eslint-disable no-lonely-if */\n if (outFormat === ScalarMappingTarget.RGBA) {\n for (let i = 0; i < length; i++) {\n const cptr = lookupFunc(\n inputV[i * inIncr + inputOffset],\n model.table,\n p\n );\n outputV[i * 4] = cptr[0];\n outputV[i * 4 + 1] = cptr[1];\n outputV[i * 4 + 2] = cptr[2];\n outputV[i * 4 + 3] = Math.floor(cptr[3] * alpha + 0.5);\n }\n }\n } // alpha blending\n };\n\n publicAPI.forceBuild = () => {\n let hinc = 0.0;\n let sinc = 0.0;\n let vinc = 0.0;\n let ainc = 0.0;\n\n const maxIndex = model.numberOfColors - 1;\n\n if (maxIndex) {\n hinc = (model.hueRange[1] - model.hueRange[0]) / maxIndex;\n sinc = (model.saturationRange[1] - model.saturationRange[0]) / maxIndex;\n vinc = (model.valueRange[1] - model.valueRange[0]) / maxIndex;\n ainc = (model.alphaRange[1] - model.alphaRange[0]) / maxIndex;\n }\n\n const hsv = [];\n const rgba = [];\n for (let i = 0; i <= maxIndex; i++) {\n hsv[0] = model.hueRange[0] + i * hinc;\n hsv[1] = model.saturationRange[0] + i * sinc;\n hsv[2] = model.valueRange[0] + i * vinc;\n\n vtkMath.hsv2rgb(hsv, rgba);\n rgba[3] = model.alphaRange[0] + i * ainc;\n\n // case VTK_RAMP_LINEAR:\n model.table[i * 4] = rgba[0] * 255.0 + 0.5;\n model.table[i * 4 + 1] = rgba[1] * 255.0 + 0.5;\n model.table[i * 4 + 2] = rgba[2] * 255.0 + 0.5;\n model.table[i * 4 + 3] = rgba[3] * 255.0 + 0.5;\n }\n\n publicAPI.buildSpecialColors();\n\n model.buildTime.modified();\n };\n\n publicAPI.buildSpecialColors = () => {\n // Add \"special\" colors (NaN, below range, above range) to table here.\n const { numberOfColors } = model;\n\n const tptr = model.table;\n let base = (model.numberOfColors + BELOW_RANGE_COLOR_INDEX) * 4;\n\n // Below range color\n if (model.useBelowRangeColor || numberOfColors === 0) {\n tptr[base] = model.belowRangeColor[0] * 255.0 + 0.5;\n tptr[base + 1] = model.belowRangeColor[1] * 255.0 + 0.5;\n tptr[base + 2] = model.belowRangeColor[2] * 255.0 + 0.5;\n tptr[base + 3] = model.belowRangeColor[3] * 255.0 + 0.5;\n } else {\n // Duplicate the first color in the table.\n tptr[base] = tptr[0];\n tptr[base + 1] = tptr[1];\n tptr[base + 2] = tptr[2];\n tptr[base + 3] = tptr[3];\n }\n\n // Above range color\n base = (model.numberOfColors + ABOVE_RANGE_COLOR_INDEX) * 4;\n if (model.useAboveRangeColor || numberOfColors === 0) {\n tptr[base] = model.aboveRangeColor[0] * 255.0 + 0.5;\n tptr[base + 1] = model.aboveRangeColor[1] * 255.0 + 0.5;\n tptr[base + 2] = model.aboveRangeColor[2] * 255.0 + 0.5;\n tptr[base + 3] = model.aboveRangeColor[3] * 255.0 + 0.5;\n } else {\n // Duplicate the last color in the table.\n tptr[base] = tptr[4 * (numberOfColors - 1) + 0];\n tptr[base + 1] = tptr[4 * (numberOfColors - 1) + 1];\n tptr[base + 2] = tptr[4 * (numberOfColors - 1) + 2];\n tptr[base + 3] = tptr[4 * (numberOfColors - 1) + 3];\n }\n\n // Always use NanColor\n base = (model.numberOfColors + NAN_COLOR_INDEX) * 4;\n tptr[base] = model.nanColor[0] * 255.0 + 0.5;\n tptr[base + 1] = model.nanColor[1] * 255.0 + 0.5;\n tptr[base + 2] = model.nanColor[2] * 255.0 + 0.5;\n tptr[base + 3] = model.nanColor[3] * 255.0 + 0.5;\n };\n\n publicAPI.build = () => {\n if (\n model.table.length < 1 ||\n publicAPI.getMTime() > model.buildTime.getMTime()\n ) {\n publicAPI.forceBuild();\n }\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n numberOfColors: 256,\n // table: null,\n\n hueRange: [0.0, 0.66667],\n saturationRange: [1.0, 1.0],\n valueRange: [1.0, 1.0],\n alphaRange: [1.0, 1.0],\n\n nanColor: [0.5, 0.0, 0.0, 1.0],\n belowRangeColor: [0.0, 0.0, 0.0, 1.0],\n aboveRangeColor: [1.0, 1.0, 1.0, 1.0],\n useAboveRangeColor: false,\n useBelowRangeColor: false,\n\n alpha: 1.0,\n // buildTime: null,\n // opaqueFlagBuildTime: null,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkScalarsToColors.extend(publicAPI, model, initialValues);\n\n // Internal objects initialization\n if (!model.table) {\n model.table = [];\n }\n\n model.buildTime = {};\n macro.obj(model.buildTime);\n\n model.opaqueFlagBuildTime = {};\n macro.obj(model.opaqueFlagBuildTime, { mtime: 0 });\n\n // Create get-only macros\n macro.get(publicAPI, model, ['buildTime']);\n\n // Create get-set macros\n macro.setGet(publicAPI, model, [\n 'numberOfColors',\n 'useAboveRangeColor',\n 'useBelowRangeColor',\n ]);\n\n // Create set macros for array (needs to know size)\n macro.setArray(\n publicAPI,\n model,\n ['alphaRange', 'hueRange', 'saturationRange', 'valueRange'],\n 2\n );\n\n macro.setArray(\n publicAPI,\n model,\n ['nanColor', 'belowRangeColor', 'aboveRangeColor'],\n 4\n );\n\n // Create get macros for array\n macro.getArray(publicAPI, model, [\n 'hueRange',\n 'saturationRange',\n 'valueRange',\n 'alphaRange',\n 'nanColor',\n 'belowRangeColor',\n 'aboveRangeColor',\n ]);\n\n // For more macro methods, see \"Sources/macro.js\"\n\n // Object specific methods\n vtkLookupTable(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkLookupTable');\n\n// ----------------------------------------------------------------------------\n\nexport default Object.assign({ newInstance, extend });\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Common/Core/LookupTable/index.js","import macro from 'vtk.js/Sources/macro';\nimport vtkDataArray from 'vtk.js/Sources/Common/Core/DataArray';\nimport Constants from 'vtk.js/Sources/Common/Core/ScalarsToColors/Constants';\nimport vtkMapper from 'vtk.js/Sources/Rendering/Core/Mapper/Constants'; // Need to go inside Constants otherwise dependency loop\n\nconst { ScalarMappingTarget, VectorMode } = Constants;\nconst { VtkDataTypes } = vtkDataArray;\nconst { ColorMode } = vtkMapper;\nconst { vtkErrorMacro } = macro;\n\n// ----------------------------------------------------------------------------\n// Global methods\n// ----------------------------------------------------------------------------\n\n// Add module-level functions or api that you want to expose statically via\n// the next section...\n\n// ----------------------------------------------------------------------------\n// Static API\n// ----------------------------------------------------------------------------\n\nfunction intColorToUChar(c) {\n return c;\n}\nfunction floatColorToUChar(c) {\n return Math.floor(c * 255.0 + 0.5);\n}\n\n// ----------------------------------------------------------------------------\n// vtkScalarsToColors methods\n// ----------------------------------------------------------------------------\n\nfunction vtkScalarsToColors(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkScalarsToColors');\n\n publicAPI.setVectorModeToMagnitude = () =>\n publicAPI.setVectorMode(VectorMode.MAGNITUDE);\n publicAPI.setVectorModeToComponent = () =>\n publicAPI.setVectorMode(VectorMode.COMPONENT);\n publicAPI.setVectorModeToRGBColors = () =>\n publicAPI.setVectorMode(VectorMode.RGBCOLORS);\n\n publicAPI.build = () => {};\n\n publicAPI.isOpaque = () => true;\n\n //----------------------------------------------------------------------------\n publicAPI.setAnnotations = (values, annotations) => {\n if ((values && !annotations) || (!values && annotations)) {\n return;\n }\n\n if (\n values &&\n annotations &&\n values.getNumberOfTuples() !== annotations.getNumberOfTuples()\n ) {\n vtkErrorMacro(\n 'Values and annotations do not have the same number of tuples so ignoring'\n );\n return;\n }\n\n model.annotationArray = [];\n\n if (annotations && values) {\n const num = annotations.getNumberOfTuples();\n for (let i = 0; i < num; i++) {\n model.annotationArray.push({\n value: values[i],\n annotation: annotations[i],\n });\n }\n }\n\n publicAPI.updateAnnotatedValueMap();\n publicAPI.modified();\n };\n\n //----------------------------------------------------------------------------\n publicAPI.setAnnotation = (value, annotation) => {\n let i = publicAPI.checkForAnnotatedValue(value);\n let modified = false;\n if (i >= 0) {\n if (model.annotationArray[i].annotation !== annotation) {\n model.annotationArray[i].annotation = annotation;\n modified = true;\n }\n } else {\n model.annotationArray.push({ value, annotation });\n i = model.annotationArray.length - 1;\n modified = true;\n }\n if (modified) {\n publicAPI.updateAnnotatedValueMap();\n publicAPI.modified();\n }\n return i;\n };\n\n //----------------------------------------------------------------------------\n publicAPI.getNumberOfAnnotatedValues = () => model.annotationArray.length;\n\n //----------------------------------------------------------------------------\n publicAPI.getAnnotatedValue = (idx) => {\n if (idx < 0 || idx >= model.annotationArray.length) {\n return null;\n }\n return model.annotationArray[idx].value;\n };\n\n //----------------------------------------------------------------------------\n publicAPI.getAnnotation = (idx) => {\n if (model.annotationArray[idx] === undefined) {\n return null;\n }\n return model.annotationArray[idx].annotation;\n };\n\n //----------------------------------------------------------------------------\n publicAPI.getAnnotatedValueIndex = (val) =>\n model.annotationArray.length ? publicAPI.checkForAnnotatedValue(val) : -1;\n\n //----------------------------------------------------------------------------\n publicAPI.removeAnnotation = (value) => {\n const i = publicAPI.checkForAnnotatedValue(value);\n const needToRemove = i >= 0;\n if (needToRemove) {\n model.annotationArray.splice(i, 1);\n publicAPI.updateAnnotatedValueMap();\n publicAPI.modified();\n }\n return needToRemove;\n };\n\n //----------------------------------------------------------------------------\n publicAPI.resetAnnotations = () => {\n model.annotationArray = [];\n model.annotatedValueMap = [];\n publicAPI.modified();\n };\n\n //----------------------------------------------------------------------------\n publicAPI.getAnnotationColor = (val, rgba) => {\n if (model.indexedLookup) {\n const i = publicAPI.getAnnotatedValueIndex(val);\n publicAPI.getIndexedColor(i, rgba);\n } else {\n publicAPI.getColor(parseFloat(val), rgba);\n rgba[3] = 1.0;\n }\n };\n\n //----------------------------------------------------------------------------\n publicAPI.checkForAnnotatedValue = (value) =>\n publicAPI.getAnnotatedValueIndexInternal(value);\n\n //----------------------------------------------------------------------------\n // An unsafe version of vtkScalarsToColors::CheckForAnnotatedValue for\n // internal use (no pointer checks performed)\n publicAPI.getAnnotatedValueIndexInternal = (value) => {\n if (model.annotatedValueMap[value] !== undefined) {\n const na = model.annotationArray.length;\n return model.annotatedValueMap[value] % na;\n }\n return -1;\n };\n\n //----------------------------------------------------------------------------\n publicAPI.getIndexedColor = (val, rgba) => {\n rgba[0] = 0.0;\n rgba[1] = 0.0;\n rgba[2] = 0.0;\n rgba[3] = 0.0;\n };\n\n //----------------------------------------------------------------------------\n publicAPI.updateAnnotatedValueMap = () => {\n model.annotatedValueMap = [];\n\n const na = model.annotationArray.length;\n for (let i = 0; i < na; ++i) {\n model.annotatedValueMap[model.annotationArray[i].value] = i;\n }\n };\n\n // Description:\n // Internal methods that map a data array into a 4-component,\n // unsigned char RGBA array. The color mode determines the behavior\n // of mapping. If ColorMode.DEFAULT is set, then unsigned char\n // data arrays are treated as colors (and converted to RGBA if\n // necessary); If ColorMode.DIRECT_SCALARS is set, then all arrays\n // are treated as colors (integer types are clamped in the range 0-255,\n // floating point arrays are clamped in the range 0.0-1.0. Note 'char' does\n // not have enough values to represent a color so mapping this type is\n // considered an error);\n // otherwise, the data is mapped through this instance\n // of ScalarsToColors. The component argument is used for data\n // arrays with more than one component; it indicates which component\n // to use to do the blending. When the component argument is -1,\n // then the this object uses its own selected technique to change a\n // vector into a scalar to map.\n publicAPI.mapScalars = (scalars, colorMode, componentIn) => {\n const numberOfComponents = scalars.getNumberOfComponents();\n\n let newColors = null;\n\n // map scalars through lookup table only if needed\n if (\n (colorMode === ColorMode.DEFAULT &&\n scalars.getDataType() === VtkDataTypes.UNSIGNED_CHAR) ||\n (colorMode === ColorMode.DIRECT_SCALARS && scalars)\n ) {\n newColors = publicAPI.convertToRGBA(\n scalars,\n numberOfComponents,\n scalars.getNumberOfTuples()\n );\n } else {\n const newscalars = {\n type: 'vtkDataArray',\n name: 'temp',\n numberOfComponents: 4,\n dataType: VtkDataTypes.UNSIGNED_CHAR,\n };\n\n const s = new window[newscalars.dataType](\n 4 * scalars.getNumberOfTuples()\n );\n newscalars.values = s;\n newscalars.size = s.length;\n newColors = vtkDataArray.newInstance(newscalars);\n\n let component = componentIn;\n\n // If mapper did not specify a component, use the VectorMode\n if (component < 0 && numberOfComponents > 1) {\n publicAPI.mapVectorsThroughTable(\n scalars,\n newColors,\n ScalarMappingTarget.RGBA,\n -1,\n -1\n );\n } else {\n if (component < 0) {\n component = 0;\n }\n if (component >= numberOfComponents) {\n component = numberOfComponents - 1;\n }\n\n // Map the scalars to colors\n publicAPI.mapScalarsThroughTable(\n scalars,\n newColors,\n ScalarMappingTarget.RGBA,\n component\n );\n }\n }\n\n return newColors;\n };\n\n publicAPI.mapVectorsToMagnitude = (input, output, compsToUse) => {\n const length = input.getNumberOfTuples();\n const inIncr = input.getNumberOfComponents();\n\n const outputV = output.getData();\n const inputV = input.getData();\n\n for (let i = 0; i < length; i++) {\n let sum = 0.0;\n for (let j = 0; j < compsToUse; j++) {\n sum += inputV[i * inIncr + j] * inputV[i * inIncr + j];\n }\n outputV[i] = Math.sqrt(sum);\n }\n };\n\n //----------------------------------------------------------------------------\n // Map a set of vector values through the table\n publicAPI.mapVectorsThroughTable = (\n input,\n output,\n outputFormat,\n vectorComponentIn,\n vectorSizeIn\n ) => {\n let vectorMode = publicAPI.getVectorMode();\n let vectorSize = vectorSizeIn;\n let vectorComponent = vectorComponentIn;\n const inComponents = input.getNumberOfComponents();\n\n if (vectorMode === VectorMode.COMPONENT) {\n // make sure vectorComponent is within allowed range\n if (vectorComponent === -1) {\n // if set to -1, use default value provided by table\n vectorComponent = publicAPI.getVectorComponent();\n }\n if (vectorComponent < 0) {\n vectorComponent = 0;\n }\n if (vectorComponent >= inComponents) {\n vectorComponent = inComponents - 1;\n }\n } else {\n // make sure vectorSize is within allowed range\n if (vectorSize === -1) {\n // if set to -1, use default value provided by table\n vectorSize = publicAPI.getVectorSize();\n }\n if (vectorSize <= 0) {\n vectorComponent = 0;\n vectorSize = inComponents;\n } else {\n if (vectorComponent < 0) {\n vectorComponent = 0;\n }\n if (vectorComponent >= inComponents) {\n vectorComponent = inComponents - 1;\n }\n if (vectorComponent + vectorSize > inComponents) {\n vectorSize = inComponents - vectorComponent;\n }\n }\n\n if (\n vectorMode === VectorMode.MAGNITUDE &&\n (inComponents === 1 || vectorSize === 1)\n ) {\n vectorMode = VectorMode.COMPONENT;\n }\n }\n\n // increment input pointer to the first component to map\n let inputOffset = 0;\n if (vectorComponent > 0) {\n inputOffset = vectorComponent;\n }\n\n // map according to the current vector mode\n switch (vectorMode) {\n case VectorMode.COMPONENT: {\n publicAPI.mapScalarsThroughTable(\n input,\n output,\n outputFormat,\n inputOffset\n );\n break;\n }\n\n default:\n case VectorMode.MAGNITUDE: {\n const magValues = vtkDataArray.newInstance({\n numberOfComponents: 1,\n values: new Float32Array(input.getNumberOfTuples()),\n });\n\n publicAPI.mapVectorsToMagnitude(input, magValues, vectorSize);\n publicAPI.mapScalarsThroughTable(magValues, output, outputFormat, 0);\n break;\n }\n\n case VectorMode.RGBCOLORS: {\n // publicAPI.mapColorsToColors(\n // input, output, inComponents, vectorSize,\n // outputFormat);\n break;\n }\n }\n };\n\n publicAPI.luminanceToRGBA = (newColors, colors, alpha, convtFun) => {\n const a = convtFun(alpha);\n\n const values = colors.getData();\n const newValues = newColors.getData();\n const size = values.length;\n const component = 0;\n const tuple = 1;\n\n let count = 0;\n for (let i = component; i < size; i += tuple) {\n const l = convtFun(values[i]);\n newValues[count * 4] = l;\n newValues[count * 4 + 1] = l;\n newValues[count * 4 + 2] = l;\n newValues[count * 4 + 3] = a;\n count++;\n }\n };\n\n publicAPI.luminanceAlphaToRGBA = (newColors, colors, alpha, convtFun) => {\n const values = colors.getData();\n const newValues = newColors.getData();\n const size = values.length;\n const component = 0;\n const tuple = 2;\n\n let count = 0;\n for (let i = component; i < size; i += tuple) {\n const l = convtFun(values[i]);\n newValues[count] = l;\n newValues[count + 1] = l;\n newValues[count + 2] = l;\n newValues[count + 3] = convtFun(values[i + 1]) * alpha;\n count += 4;\n }\n };\n\n publicAPI.rGBToRGBA = (newColors, colors, alpha, convtFun) => {\n const a = floatColorToUChar(alpha);\n\n const values = colors.getData();\n const newValues = newColors.getData();\n const size = values.length;\n const component = 0;\n const tuple = 3;\n\n let count = 0;\n for (let i = component; i < size; i += tuple) {\n newValues[count * 4] = convtFun(values[i]);\n newValues[count * 4 + 1] = convtFun(values[i + 1]);\n newValues[count * 4 + 2] = convtFun(values[i + 2]);\n newValues[count * 4 + 3] = a;\n count++;\n }\n };\n\n publicAPI.rGBAToRGBA = (newColors, colors, alpha, convtFun) => {\n const values = colors.getData();\n const newValues = newColors.getData();\n const size = values.length;\n const component = 0;\n const tuple = 4;\n\n let count = 0;\n for (let i = component; i < size; i += tuple) {\n newValues[count * 4] = convtFun(values[i]);\n newValues[count * 4 + 1] = convtFun(values[i + 1]);\n newValues[count * 4 + 2] = convtFun(values[i + 2]);\n newColors[count * 4 + 3] = convtFun(values[i + 3]) * alpha;\n count++;\n }\n };\n\n //----------------------------------------------------------------------------\n publicAPI.convertToRGBA = (colors, numComp, numTuples) => {\n let { alpha } = model;\n if (\n numComp === 4 &&\n alpha >= 1.0 &&\n colors.getDataType() === VtkDataTypes.UNSIGNED_CHAR\n ) {\n return colors;\n }\n\n const newColors = vtkDataArray.newInstance({\n numberOfComponents: 4,\n empty: true,\n size: 4 * numTuples,\n dataType: VtkDataTypes.UNSIGNED_CHAR,\n });\n\n if (numTuples <= 0) {\n return newColors;\n }\n\n alpha = alpha > 0 ? alpha : 0;\n alpha = alpha < 1 ? alpha : 1;\n\n let convtFun = intColorToUChar;\n if (\n colors.getDataType() === VtkDataTypes.FLOAT ||\n colors.getDataType() === VtkDataTypes.DOUBLE\n ) {\n convtFun = floatColorToUChar;\n }\n\n switch (numComp) {\n case 1:\n publicAPI.luminanceToRGBA(newColors, colors, alpha, convtFun);\n break;\n\n case 2:\n publicAPI.luminanceAlphaToRGBA(newColors, colors, convtFun);\n break;\n\n case 3:\n publicAPI.rGBToRGBA(newColors, colors, alpha, convtFun);\n break;\n\n case 4:\n publicAPI.rGBAToRGBA(newColors, colors, alpha, convtFun);\n break;\n\n default:\n vtkErrorMacro('Cannot convert colors');\n return null;\n }\n\n return newColors;\n };\n\n publicAPI.usingLogScale = () => false;\n\n publicAPI.getNumberOfAvailableColors = () => 256 * 256 * 256;\n\n publicAPI.setRange = (min, max) => publicAPI.setMappingRange(min, max);\n publicAPI.getRange = (min, max) => publicAPI.getMappingRange();\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n alpha: 1.0,\n vectorComponent: 0,\n vectorSize: -1,\n vectorMode: VectorMode.COMPONENT,\n mappingRange: null,\n annotationArray: null,\n annotatedValueMap: null,\n indexedLookup: false,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Object methods\n macro.obj(publicAPI, model);\n\n model.mappingRange = [0, 255];\n model.annotationArray = [];\n model.annotatedValueMap = [];\n\n // Create get-set macros\n macro.setGet(publicAPI, model, [\n 'vectorSize',\n 'vectorComponent',\n 'vectorMode',\n 'alpha',\n 'indexedLookup',\n ]);\n\n // Create set macros for array (needs to know size)\n macro.setArray(publicAPI, model, ['mappingRange'], 2);\n\n // Create get macros for array\n macro.getArray(publicAPI, model, ['mappingRange']);\n\n // For more macro methods, see \"Sources/macro.js\"\n\n // Object specific methods\n vtkScalarsToColors(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkScalarsToColors');\n\n// ----------------------------------------------------------------------------\n\nexport default Object.assign({ newInstance, extend }, Constants);\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Common/Core/ScalarsToColors/index.js","export function addCoincidentTopologyMethods(publicAPI, model, nameList) {\n nameList.forEach((item) => {\n publicAPI[`get${item.method}`] = () => model[item.key];\n publicAPI[`set${item.method}`] = (factor, unit) => {\n model[item.key] = { factor, unit };\n };\n });\n}\n\nexport const CATEGORIES = ['Polygon', 'Line', 'Point'];\n\nexport default {\n addCoincidentTopologyMethods,\n CATEGORIES,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/Core/Mapper/CoincidentTopologyHelper.js","let resolveCoincidentTopologyPolygonOffsetFaces = 1;\nlet resolveCoincidentTopology = 0;\n\nexport const RESOLVE_COINCIDENT_TOPOLOGY_MODE = [\n 'VTK_RESOLVE_OFF',\n 'VTK_RESOLVE_POLYGON_OFFSET',\n];\n\nexport function getResolveCoincidentTopologyPolygonOffsetFaces() {\n return resolveCoincidentTopologyPolygonOffsetFaces;\n}\n\nexport function setResolveCoincidentTopologyPolygonOffsetFaces(value) {\n resolveCoincidentTopologyPolygonOffsetFaces = value;\n}\n\nexport function getResolveCoincidentTopology() {\n return resolveCoincidentTopology;\n}\n\nexport function setResolveCoincidentTopology(mode = 0) {\n resolveCoincidentTopology = mode;\n}\n\nexport function setResolveCoincidentTopologyToDefault() {\n setResolveCoincidentTopology(0); // VTK_RESOLVE_OFF\n}\n\nexport function setResolveCoincidentTopologyToOff() {\n setResolveCoincidentTopology(0); // VTK_RESOLVE_OFF\n}\n\nexport function setResolveCoincidentTopologyToPolygonOffset() {\n setResolveCoincidentTopology(1); // VTK_RESOLVE_POLYGON_OFFSET\n}\n\nexport function getResolveCoincidentTopologyAsString() {\n return RESOLVE_COINCIDENT_TOPOLOGY_MODE[resolveCoincidentTopology];\n}\n\nexport default {\n getResolveCoincidentTopologyAsString,\n getResolveCoincidentTopologyPolygonOffsetFaces,\n setResolveCoincidentTopology,\n setResolveCoincidentTopologyPolygonOffsetFaces,\n setResolveCoincidentTopologyToDefault,\n setResolveCoincidentTopologyToOff,\n setResolveCoincidentTopologyToPolygonOffset,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/Core/Mapper/Static.js","import { mat4 } from 'gl-matrix';\nimport Constants from 'vtk.js/Sources/Rendering/Core/ImageMapper/Constants';\nimport macro from 'vtk.js/Sources/macro';\nimport vtkDataArray from 'vtk.js/Sources/Common/Core/DataArray';\nimport { VtkDataTypes } from 'vtk.js/Sources/Common/Core/DataArray/Constants';\nimport vtkHelper from 'vtk.js/Sources/Rendering/OpenGL/Helper';\nimport vtkMath from 'vtk.js/Sources/Common/Core/Math';\nimport vtkOpenGLTexture from 'vtk.js/Sources/Rendering/OpenGL/Texture';\nimport vtkShaderProgram from 'vtk.js/Sources/Rendering/OpenGL/ShaderProgram';\nimport vtkViewNode from 'vtk.js/Sources/Rendering/SceneGraph/ViewNode';\nimport { Representation } from 'vtk.js/Sources/Rendering/Core/Property/Constants';\nimport {\n Wrap,\n Filter,\n} from 'vtk.js/Sources/Rendering/OpenGL/Texture/Constants';\nimport { InterpolationType } from 'vtk.js/Sources/Rendering/Core/ImageProperty/Constants';\n\nimport vtkPolyDataVS from 'vtk.js/Sources/Rendering/OpenGL/glsl/vtkPolyDataVS.glsl';\nimport vtkPolyDataFS from 'vtk.js/Sources/Rendering/OpenGL/glsl/vtkPolyDataFS.glsl';\n\nconst { vtkErrorMacro } = macro;\n\nconst { SlicingMode } = Constants;\n\n// ----------------------------------------------------------------------------\n// vtkOpenGLImageMapper methods\n// ----------------------------------------------------------------------------\n\nfunction vtkOpenGLImageMapper(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkOpenGLImageMapper');\n\n publicAPI.buildPass = (prepass) => {\n if (prepass) {\n model.openGLImageSlice = publicAPI.getFirstAncestorOfType(\n 'vtkOpenGLImageSlice'\n );\n model.openGLRenderer = publicAPI.getFirstAncestorOfType(\n 'vtkOpenGLRenderer'\n );\n model.openGLRenderWindow = model.openGLRenderer.getParent();\n model.context = model.openGLRenderWindow.getContext();\n model.tris.setOpenGLRenderWindow(model.openGLRenderWindow);\n model.openGLTexture.setOpenGLRenderWindow(model.openGLRenderWindow);\n model.colorTexture.setOpenGLRenderWindow(model.openGLRenderWindow);\n const ren = model.openGLRenderer.getRenderable();\n model.openGLCamera = model.openGLRenderer.getViewNodeFor(\n ren.getActiveCamera()\n );\n // is slice set by the camera\n if (model.renderable.getSliceAtFocalPoint()) {\n model.renderable.setSliceFromCamera(ren.getActiveCamera());\n }\n }\n };\n\n publicAPI.translucentPass = (prepass) => {\n if (prepass) {\n publicAPI.render();\n }\n };\n\n publicAPI.opaqueZBufferPass = (prepass) => {\n if (prepass) {\n model.haveSeenDepthRequest = true;\n model.renderDepth = true;\n publicAPI.render();\n model.renderDepth = false;\n }\n };\n\n publicAPI.opaquePass = (prepass) => {\n if (prepass) {\n publicAPI.render();\n }\n };\n\n // Renders myself\n publicAPI.render = () => {\n const actor = model.openGLImageSlice.getRenderable();\n const ren = model.openGLRenderer.getRenderable();\n publicAPI.renderPiece(ren, actor);\n };\n\n publicAPI.buildShaders = (shaders, ren, actor) => {\n publicAPI.getShaderTemplate(shaders, ren, actor);\n publicAPI.replaceShaderValues(shaders, ren, actor);\n };\n\n publicAPI.getShaderTemplate = (shaders, ren, actor) => {\n shaders.Vertex = vtkPolyDataVS;\n shaders.Fragment = vtkPolyDataFS;\n shaders.Geometry = '';\n };\n\n publicAPI.replaceShaderValues = (shaders, ren, actor) => {\n let VSSource = shaders.Vertex;\n let FSSource = shaders.Fragment;\n\n VSSource = vtkShaderProgram.substitute(VSSource, '//VTK::Camera::Dec', [\n 'uniform mat4 MCDCMatrix;',\n ]).result;\n VSSource = vtkShaderProgram.substitute(\n VSSource,\n '//VTK::PositionVC::Impl',\n [' gl_Position = MCDCMatrix * vertexMC;']\n ).result;\n\n VSSource = vtkShaderProgram.substitute(\n VSSource,\n '//VTK::TCoord::Impl',\n 'tcoordVCVSOutput = tcoordMC;'\n ).result;\n\n const tNumComp = model.openGLTexture.getComponents();\n\n VSSource = vtkShaderProgram.substitute(\n VSSource,\n '//VTK::TCoord::Dec',\n 'attribute vec2 tcoordMC; varying vec2 tcoordVCVSOutput;'\n ).result;\n\n FSSource = vtkShaderProgram.substitute(FSSource, '//VTK::TCoord::Dec', [\n 'varying vec2 tcoordVCVSOutput;',\n 'uniform float shift;',\n 'uniform float scale;',\n 'uniform sampler2D texture1;',\n 'uniform sampler2D colorTexture1;',\n ]).result;\n switch (tNumComp) {\n case 1:\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::TCoord::Impl',\n [\n 'float intensity = texture2D(texture1, tcoordVCVSOutput).r*scale + shift;',\n 'gl_FragData[0] = texture2D(colorTexture1, vec2(intensity, 0.5));',\n ]\n ).result;\n break;\n case 2:\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::TCoord::Impl',\n [\n 'vec4 tcolor = texture2D(texture1, tcoordVCVSOutput);',\n 'float intensity = tcolor.r*scale + shift;',\n 'gl_FragData[0] = vec4(texture2D(colorTexture1, vec2(intensity, 0.5)), scale*tcolor.g + shift);',\n ]\n ).result;\n break;\n default:\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::TCoord::Impl',\n [\n 'vec4 tcolor = scale*texture2D(texture1, tcoordVCVSOutput.st) + shift;',\n 'gl_FragData[0] = vec4(texture2D(colorTexture1, vec2(tcolor.r,0.5)).r,',\n ' texture2D(colorTexture1, vec2(tcolor.g,0.5)).r,',\n ' texture2D(colorTexture1, vec2(tcolor.b,0.5)).r, tcolor.a);',\n ]\n ).result;\n }\n\n if (model.haveSeenDepthRequest) {\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::ZBuffer::Dec',\n 'uniform int depthRequest;'\n ).result;\n FSSource = vtkShaderProgram.substitute(FSSource, '//VTK::ZBuffer::Impl', [\n 'if (depthRequest == 1) {',\n 'float iz = floor(gl_FragCoord.z*65535.0 + 0.1);',\n 'float rf = floor(iz/256.0)/255.0;',\n 'float gf = mod(iz,256.0)/255.0;',\n 'gl_FragData[0] = vec4(rf, gf, 0.0, 1.0); }',\n ]).result;\n }\n\n shaders.Vertex = VSSource;\n shaders.Fragment = FSSource;\n };\n\n publicAPI.getNeedToRebuildShaders = (cellBO, ren, actor) => {\n // has something changed that would require us to recreate the shader?\n // candidates are\n // property modified (representation interpolation and lighting)\n // input modified\n // light complexity changed\n\n const tNumComp = model.openGLTexture.getComponents();\n\n if (\n model.lastHaveSeenDepthRequest !== model.haveSeenDepthRequest ||\n cellBO.getProgram() === 0 ||\n model.lastTextureComponents !== tNumComp\n ) {\n model.lastHaveSeenDepthRequest = model.haveSeenDepthRequest;\n model.lastTextureComponents = tNumComp;\n return true;\n }\n\n return false;\n };\n\n publicAPI.updateShaders = (cellBO, ren, actor) => {\n model.lastBoundBO = cellBO;\n\n // has something changed that would require us to recreate the shader?\n if (publicAPI.getNeedToRebuildShaders(cellBO, ren, actor)) {\n const shaders = { Vertex: null, Fragment: null, Geometry: null };\n\n publicAPI.buildShaders(shaders, ren, actor);\n\n // compile and bind the program if needed\n const newShader = model.openGLRenderWindow\n .getShaderCache()\n .readyShaderProgramArray(\n shaders.Vertex,\n shaders.Fragment,\n shaders.Geometry\n );\n\n // if the shader changed reinitialize the VAO\n if (newShader !== cellBO.getProgram()) {\n cellBO.setProgram(newShader);\n // reset the VAO as the shader has changed\n cellBO.getVAO().releaseGraphicsResources();\n }\n\n cellBO.getShaderSourceTime().modified();\n } else {\n model.openGLRenderWindow\n .getShaderCache()\n .readyShaderProgram(cellBO.getProgram());\n }\n\n cellBO.getVAO().bind();\n publicAPI.setMapperShaderParameters(cellBO, ren, actor);\n publicAPI.setCameraShaderParameters(cellBO, ren, actor);\n publicAPI.setPropertyShaderParameters(cellBO, ren, actor);\n };\n\n publicAPI.setMapperShaderParameters = (cellBO, ren, actor) => {\n // Now to update the VAO too, if necessary.\n\n if (\n cellBO.getCABO().getElementCount() &&\n (model.VBOBuildTime > cellBO.getAttributeUpdateTime().getMTime() ||\n cellBO.getShaderSourceTime().getMTime() >\n cellBO.getAttributeUpdateTime().getMTime())\n ) {\n if (cellBO.getProgram().isAttributeUsed('vertexMC')) {\n if (\n !cellBO\n .getVAO()\n .addAttributeArray(\n cellBO.getProgram(),\n cellBO.getCABO(),\n 'vertexMC',\n cellBO.getCABO().getVertexOffset(),\n cellBO.getCABO().getStride(),\n model.context.FLOAT,\n 3,\n model.context.FALSE\n )\n ) {\n vtkErrorMacro('Error setting vertexMC in shader VAO.');\n }\n }\n if (\n cellBO.getProgram().isAttributeUsed('tcoordMC') &&\n cellBO.getCABO().getTCoordOffset()\n ) {\n if (\n !cellBO\n .getVAO()\n .addAttributeArray(\n cellBO.getProgram(),\n cellBO.getCABO(),\n 'tcoordMC',\n cellBO.getCABO().getTCoordOffset(),\n cellBO.getCABO().getStride(),\n model.context.FLOAT,\n cellBO.getCABO().getTCoordComponents(),\n model.context.FALSE\n )\n ) {\n vtkErrorMacro('Error setting tcoordMC in shader VAO.');\n }\n }\n cellBO.getAttributeUpdateTime().modified();\n }\n\n const texUnit = model.openGLTexture.getTextureUnit();\n cellBO.getProgram().setUniformi('texture1', texUnit);\n\n let cw = actor.getProperty().getColorWindow();\n let cl = actor.getProperty().getColorLevel();\n const cfun = actor.getProperty().getRGBTransferFunction();\n if (cfun) {\n const cRange = cfun.getRange();\n cw = cRange[1] - cRange[0];\n cl = 0.5 * (cRange[1] + cRange[0]);\n }\n const oglShiftScale = model.openGLTexture.getShiftAndScale();\n\n const scale = oglShiftScale.scale / cw;\n const shift = (oglShiftScale.shift - cl) / cw + 0.5;\n\n if (model.haveSeenDepthRequest) {\n cellBO\n .getProgram()\n .setUniformi('depthRequest', model.renderDepth ? 1 : 0);\n }\n\n cellBO.getProgram().setUniformf('shift', shift);\n cellBO.getProgram().setUniformf('scale', scale);\n\n const texColorUnit = model.colorTexture.getTextureUnit();\n cellBO.getProgram().setUniformi('colorTexture1', texColorUnit);\n };\n\n publicAPI.setCameraShaderParameters = (cellBO, ren, actor) => {\n const program = cellBO.getProgram();\n\n const actMats = model.openGLImageSlice.getKeyMatrices();\n const image = model.currentInput;\n const i2wmat4 = image.getIndexToWorld();\n mat4.multiply(model.imagemat, actMats.mcwc, i2wmat4);\n\n const keyMats = model.openGLCamera.getKeyMatrices(ren);\n mat4.multiply(model.imagemat, keyMats.wcdc, model.imagemat);\n\n program.setUniformMatrix('MCDCMatrix', model.imagemat);\n };\n\n publicAPI.setPropertyShaderParameters = (cellBO, ren, actor) => {\n const program = cellBO.getProgram();\n\n const ppty = actor.getProperty();\n\n const opacity = ppty.getOpacity();\n program.setUniformf('opacityUniform', opacity);\n };\n\n publicAPI.renderPieceStart = (ren, actor) => {\n // make sure the BOs are up to date\n publicAPI.updateBufferObjects(ren, actor);\n\n // Bind the OpenGL, this is shared between the different primitive/cell types.\n model.lastBoundBO = null;\n };\n\n publicAPI.renderPieceDraw = (ren, actor) => {\n const gl = model.context;\n\n // activate the texture\n model.openGLTexture.activate();\n model.colorTexture.activate();\n\n // draw polygons\n if (model.tris.getCABO().getElementCount()) {\n // First we do the triangles, update the shader, set uniforms, etc.\n publicAPI.updateShaders(model.tris, ren, actor);\n gl.drawArrays(gl.TRIANGLES, 0, model.tris.getCABO().getElementCount());\n model.tris.getVAO().release();\n }\n\n model.openGLTexture.deactivate();\n model.colorTexture.deactivate();\n };\n\n publicAPI.renderPieceFinish = (ren, actor) => {};\n\n publicAPI.renderPiece = (ren, actor) => {\n // Make sure that we have been properly initialized.\n // if (ren.getRenderWindow().checkAbortStatus()) {\n // return;\n // }\n\n publicAPI.invokeEvent({ type: 'StartEvent' });\n model.renderable.update();\n model.currentInput = model.renderable.getInputData();\n publicAPI.invokeEvent({ type: 'EndEvent' });\n\n if (!model.currentInput) {\n vtkErrorMacro('No input!');\n return;\n }\n\n publicAPI.renderPieceStart(ren, actor);\n publicAPI.renderPieceDraw(ren, actor);\n publicAPI.renderPieceFinish(ren, actor);\n };\n\n publicAPI.computeBounds = (ren, actor) => {\n if (!publicAPI.getInput()) {\n vtkMath.uninitializeBounds(model.bounds);\n return;\n }\n model.bounds = publicAPI.getInput().getBounds();\n };\n\n publicAPI.updateBufferObjects = (ren, actor) => {\n // Rebuild buffers if needed\n if (publicAPI.getNeedToRebuildBufferObjects(ren, actor)) {\n publicAPI.buildBufferObjects(ren, actor);\n }\n };\n\n publicAPI.getNeedToRebuildBufferObjects = (ren, actor) => {\n // first do a coarse check\n if (\n model.VBOBuildTime.getMTime() < publicAPI.getMTime() ||\n model.VBOBuildTime.getMTime() < actor.getMTime() ||\n model.VBOBuildTime.getMTime() < model.renderable.getMTime() ||\n model.VBOBuildTime.getMTime() < actor.getProperty().getMTime() ||\n model.VBOBuildTime.getMTime() < model.currentInput.getMTime()\n ) {\n return true;\n }\n return false;\n };\n\n publicAPI.buildBufferObjects = (ren, actor) => {\n const image = model.currentInput;\n\n if (image === null) {\n return;\n }\n\n // set interpolation on the texture based on property setting\n const iType = actor.getProperty().getInterpolationType();\n if (iType === InterpolationType.NEAREST) {\n model.colorTexture.setMinificationFilter(Filter.NEAREST);\n model.colorTexture.setMagnificationFilter(Filter.NEAREST);\n } else {\n model.colorTexture.setMinificationFilter(Filter.LINEAR);\n model.colorTexture.setMagnificationFilter(Filter.LINEAR);\n }\n\n const cWidth = 1024;\n const cTable = new Uint8Array(cWidth * 3);\n const cfun = actor.getProperty().getRGBTransferFunction();\n if (cfun) {\n const cfunToString = `${cfun.getMTime()}`;\n if (model.colorTextureString !== cfunToString) {\n const cRange = cfun.getRange();\n const cfTable = new Float32Array(cWidth * 3);\n cfun.getTable(cRange[0], cRange[1], cWidth, cfTable, 1);\n for (let i = 0; i < cWidth * 3; ++i) {\n cTable[i] = 255.0 * cfTable[i];\n }\n model.colorTextureString = cfunToString;\n model.colorTexture.create2DFromRaw(\n cWidth,\n 1,\n 3,\n VtkDataTypes.UNSIGNED_CHAR,\n cTable\n );\n }\n } else {\n const cfunToString = '0';\n if (model.colorTextureString !== cfunToString) {\n for (let i = 0; i < cWidth * 3; ++i) {\n cTable[i] = 255.0 * i / ((cWidth - 1) * 3);\n cTable[i + 1] = 255.0 * i / ((cWidth - 1) * 3);\n cTable[i + 2] = 255.0 * i / ((cWidth - 1) * 3);\n }\n model.colorTextureString = cfunToString;\n model.colorTexture.create2DFromRaw(\n cWidth,\n 1,\n 3,\n VtkDataTypes.UNSIGNED_CHAR,\n cTable\n );\n }\n }\n\n // Find what IJK axis and what direction to slice along\n const { ijkMode } = model.renderable.getClosestIJKAxis();\n\n // Find the IJK slice\n let nSlice = model.renderable.getSlice();\n if (ijkMode !== model.renderable.getSlicingMode()) {\n // If not IJK slicing, get the IJK slice from the XYZ position/slice\n nSlice = model.renderable.getSliceAtPosition(nSlice);\n }\n\n // Find sliceOffset\n const ext = image.getExtent();\n let sliceOffset;\n if (ijkMode === SlicingMode.I) {\n sliceOffset = nSlice - ext[0];\n }\n if (ijkMode === SlicingMode.J) {\n sliceOffset = nSlice - ext[2];\n }\n if (ijkMode === SlicingMode.K || ijkMode === SlicingMode.NONE) {\n sliceOffset = nSlice - ext[4];\n }\n\n // rebuild the VBO if the data has changed\n const toString = `${nSlice}A${image.getMTime()}A${image\n .getPointData()\n .getScalars()\n .getMTime()}B${publicAPI.getMTime()}C${model.renderable.getSlicingMode()}D${actor\n .getProperty()\n .getMTime()}`;\n if (model.VBOBuildString !== toString) {\n // Build the VBOs\n const dims = image.getDimensions();\n const numComponents = image\n .getPointData()\n .getScalars()\n .getNumberOfComponents();\n if (iType === InterpolationType.NEAREST) {\n if (numComponents === 4) {\n model.openGLTexture.setGenerateMipmap(true);\n model.openGLTexture.setMinificationFilter(Filter.NEAREST);\n } else {\n model.openGLTexture.setMinificationFilter(Filter.NEAREST);\n }\n model.openGLTexture.setMagnificationFilter(Filter.NEAREST);\n } else {\n if (numComponents === 4) {\n model.openGLTexture.setGenerateMipmap(true);\n model.openGLTexture.setMinificationFilter(\n Filter.LINEAR_MIPMAP_LINEAR\n );\n } else {\n model.openGLTexture.setMinificationFilter(Filter.LINEAR);\n }\n model.openGLTexture.setMagnificationFilter(Filter.LINEAR);\n }\n model.openGLTexture.setWrapS(Wrap.CLAMP_TO_EDGE);\n model.openGLTexture.setWrapT(Wrap.CLAMP_TO_EDGE);\n const numComp = image\n .getPointData()\n .getScalars()\n .getNumberOfComponents();\n const sliceSize = dims[0] * dims[1] * numComp;\n\n const ptsArray = new Float32Array(12);\n const tcoordArray = new Float32Array(8);\n for (let i = 0; i < 4; i++) {\n tcoordArray[i * 2] = i % 2 ? 1.0 : 0.0;\n tcoordArray[i * 2 + 1] = i > 1 ? 1.0 : 0.0;\n }\n\n const basicScalars = image\n .getPointData()\n .getScalars()\n .getData();\n let scalars = null;\n // Get right scalars according to slicing mode\n if (ijkMode === SlicingMode.I) {\n scalars = new basicScalars.constructor(dims[2] * dims[1]);\n let id = 0;\n for (let k = 0; k < dims[2]; k++) {\n for (let j = 0; j < dims[1]; j++) {\n id = k * dims[1] + j;\n scalars[id] =\n basicScalars[sliceOffset + j * dims[0] + k * dims[0] * dims[1]];\n }\n }\n dims[0] = dims[1];\n dims[1] = dims[2];\n ptsArray[0] = nSlice;\n ptsArray[1] = ext[2];\n ptsArray[2] = ext[4];\n ptsArray[3] = nSlice;\n ptsArray[4] = ext[3];\n ptsArray[5] = ext[4];\n ptsArray[6] = nSlice;\n ptsArray[7] = ext[2];\n ptsArray[8] = ext[5];\n ptsArray[9] = nSlice;\n ptsArray[10] = ext[3];\n ptsArray[11] = ext[5];\n } else if (ijkMode === SlicingMode.J) {\n scalars = new basicScalars.constructor(dims[2] * dims[0]);\n let id = 0;\n for (let k = 0; k < dims[2]; k++) {\n for (let i = 0; i < dims[0]; i++) {\n id = k * dims[0] + i;\n scalars[id] =\n basicScalars[i + sliceOffset * dims[0] + k * dims[0] * dims[1]];\n }\n }\n dims[1] = dims[2];\n ptsArray[0] = ext[0];\n ptsArray[1] = nSlice;\n ptsArray[2] = ext[4];\n ptsArray[3] = ext[1];\n ptsArray[4] = nSlice;\n ptsArray[5] = ext[4];\n ptsArray[6] = ext[0];\n ptsArray[7] = nSlice;\n ptsArray[8] = ext[5];\n ptsArray[9] = ext[1];\n ptsArray[10] = nSlice;\n ptsArray[11] = ext[5];\n } else if (ijkMode === SlicingMode.K || ijkMode === SlicingMode.NONE) {\n scalars = basicScalars.subarray(\n sliceOffset * sliceSize,\n (sliceOffset + 1) * sliceSize\n );\n ptsArray[0] = ext[0];\n ptsArray[1] = ext[2];\n ptsArray[2] = nSlice;\n ptsArray[3] = ext[1];\n ptsArray[4] = ext[2];\n ptsArray[5] = nSlice;\n ptsArray[6] = ext[0];\n ptsArray[7] = ext[3];\n ptsArray[8] = nSlice;\n ptsArray[9] = ext[1];\n ptsArray[10] = ext[3];\n ptsArray[11] = nSlice;\n } else {\n vtkErrorMacro('Reformat slicing not yet supported.');\n }\n\n model.openGLTexture.create2DFromRaw(\n dims[0],\n dims[1],\n numComp,\n image\n .getPointData()\n .getScalars()\n .getDataType(),\n scalars\n );\n model.openGLTexture.activate();\n model.openGLTexture.sendParameters();\n model.openGLTexture.deactivate();\n\n const points = vtkDataArray.newInstance({\n numberOfComponents: 3,\n values: ptsArray,\n });\n points.setName('points');\n const tcoords = vtkDataArray.newInstance({\n numberOfComponents: 2,\n values: tcoordArray,\n });\n tcoords.setName('tcoords');\n\n const cellArray = new Uint16Array(8);\n cellArray[0] = 3;\n cellArray[1] = 0;\n cellArray[2] = 1;\n cellArray[3] = 3;\n cellArray[4] = 3;\n cellArray[5] = 0;\n cellArray[6] = 3;\n cellArray[7] = 2;\n const cells = vtkDataArray.newInstance({\n numberOfComponents: 1,\n values: cellArray,\n });\n\n model.tris.getCABO().createVBO(cells, 'polys', Representation.SURFACE, {\n points,\n tcoords,\n cellOffset: 0,\n });\n model.VBOBuildTime.modified();\n model.VBOBuildString = toString;\n }\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n VBOBuildTime: 0,\n VBOBuildString: null,\n openGLTexture: null,\n tris: null,\n imagemat: null,\n colorTexture: null,\n lastHaveSeenDepthRequest: false,\n haveSeenDepthRequest: false,\n lastTextureComponents: 0,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkViewNode.extend(publicAPI, model, initialValues);\n\n model.tris = vtkHelper.newInstance();\n model.openGLTexture = vtkOpenGLTexture.newInstance();\n model.colorTexture = vtkOpenGLTexture.newInstance();\n\n model.imagemat = mat4.create();\n\n // Build VTK API\n macro.setGet(publicAPI, model, []);\n\n model.VBOBuildTime = {};\n macro.obj(model.VBOBuildTime);\n\n // Object methods\n vtkOpenGLImageMapper(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkOpenGLImageMapper');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/OpenGL/ImageMapper/index.js","export const SlicingMode = {\n NONE: -1,\n I: 0,\n J: 1,\n K: 2,\n X: 3,\n Y: 4,\n Z: 5,\n};\n\nexport default {\n SlicingMode,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/Core/ImageMapper/Constants.js","export const InterpolationType = {\n NEAREST: 0,\n LINEAR: 1,\n};\n\nexport default {\n InterpolationType,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/Core/ImageProperty/Constants.js","import { mat4 } from 'gl-matrix';\n\nimport macro from 'vtk.js/Sources/macro';\nimport vtkViewNode from 'vtk.js/Sources/Rendering/SceneGraph/ViewNode';\n\n// ----------------------------------------------------------------------------\n// vtkOpenGLImageSlice methods\n// ----------------------------------------------------------------------------\n\nfunction vtkOpenGLImageSlice(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkOpenGLImageSlice');\n\n // Builds myself.\n publicAPI.buildPass = (prepass) => {\n if (!model.renderable || !model.renderable.getVisibility()) {\n return;\n }\n if (prepass) {\n if (!model.renderable) {\n return;\n }\n\n publicAPI.prepareNodes();\n publicAPI.addMissingNode(model.renderable.getMapper());\n publicAPI.removeUnusedNodes();\n }\n };\n\n publicAPI.traverseOpaqueZBufferPass = (renderPass) => {\n publicAPI.traverseOpaquePass(renderPass);\n };\n\n // we draw textures, then mapper, then post pass textures\n publicAPI.traverseOpaquePass = (renderPass) => {\n if (\n !model.renderable ||\n !model.renderable.getVisibility() ||\n !model.renderable.getIsOpaque()\n ) {\n return;\n }\n\n publicAPI.apply(renderPass, true);\n model.children.forEach((child) => {\n child.traverse(renderPass);\n });\n publicAPI.apply(renderPass, false);\n };\n\n // we draw textures, then mapper, then post pass textures\n publicAPI.traverseTranslucentPass = (renderPass) => {\n if (\n !model.renderable ||\n !model.renderable.getVisibility() ||\n model.renderable.getIsOpaque()\n ) {\n return;\n }\n\n publicAPI.apply(renderPass, true);\n model.children.forEach((child) => {\n child.traverse(renderPass);\n });\n publicAPI.apply(renderPass, false);\n };\n\n publicAPI.queryPass = (prepass, renderPass) => {\n if (prepass) {\n if (!model.renderable || !model.renderable.getVisibility()) {\n return;\n }\n if (model.renderable.getIsOpaque()) {\n renderPass.incrementOpaqueActorCount();\n } else {\n renderPass.incrementTranslucentActorCount();\n }\n }\n };\n\n publicAPI.opaqueZBufferPass = (prepass, renderPass) =>\n publicAPI.opaquePass(prepass, renderPass);\n\n // Renders myself\n publicAPI.opaquePass = (prepass, renderPass) => {\n if (prepass) {\n model.context = publicAPI\n .getFirstAncestorOfType('vtkOpenGLRenderWindow')\n .getContext();\n model.context.depthMask(true);\n }\n };\n\n // Renders myself\n publicAPI.translucentPass = (prepass, renderPass) => {\n if (prepass) {\n model.context = publicAPI\n .getFirstAncestorOfType('vtkOpenGLRenderWindow')\n .getContext();\n model.context.depthMask(false);\n } else {\n model.context.depthMask(true);\n }\n };\n\n publicAPI.getKeyMatrices = () => {\n // has the actor changed?\n if (model.renderable.getMTime() > model.keyMatrixTime.getMTime()) {\n mat4.copy(model.keyMatrices.mcwc, model.renderable.getMatrix());\n mat4.transpose(model.keyMatrices.mcwc, model.keyMatrices.mcwc);\n model.keyMatrixTime.modified();\n }\n\n return model.keyMatrices;\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n context: null,\n keyMatrixTime: null,\n keyMatrices: null,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkViewNode.extend(publicAPI, model, initialValues);\n\n model.keyMatrixTime = {};\n macro.obj(model.keyMatrixTime, { mtime: 0 });\n model.keyMatrices = {\n mcwc: mat4.create(),\n };\n\n // Build VTK API\n macro.setGet(publicAPI, model, ['context']);\n\n // Object methods\n vtkOpenGLImageSlice(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkOpenGLImageSlice');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/OpenGL/ImageSlice/index.js","// import { mat4, vec3 } from 'gl-matrix';\n\nimport macro from 'vtk.js/Sources/macro';\nimport vtkViewNode from 'vtk.js/Sources/Rendering/SceneGraph/ViewNode';\n\nconst { vtkDebugMacro } = macro;\n\n// ----------------------------------------------------------------------------\n// vtkOpenGLPixelSpaceCallbackMapper methods\n// ----------------------------------------------------------------------------\n\nfunction vtkOpenGLPixelSpaceCallbackMapper(publicAPI, model) {\n model.classHierarchy.push('vtkOpenGLPixelSpaceCallbackMapper');\n\n publicAPI.opaquePass = (prepass, renderPass) => {\n model.openGLRenderer = publicAPI.getFirstAncestorOfType(\n 'vtkOpenGLRenderer'\n );\n model.openGLRenderWindow = model.openGLRenderer.getParent();\n const aspectRatio = model.openGLRenderer.getAspectRatio();\n const camera = model.openGLRenderer\n ? model.openGLRenderer.getRenderable().getActiveCamera()\n : null;\n const tsize = model.openGLRenderer.getTiledSizeAndOrigin();\n let texels = null;\n\n if (model.renderable.getUseZValues()) {\n const zbt = renderPass.getZBufferTexture();\n const width = Math.floor(zbt.getWidth());\n const height = Math.floor(zbt.getHeight());\n\n const gl = model.openGLRenderWindow.getContext();\n zbt.bind();\n\n // Here we need to use vtkFramebuffer to save current settings (bindings/buffers)\n const fb = renderPass.getFramebuffer();\n if (!fb) {\n vtkDebugMacro('No framebuffer to save/restore');\n } else {\n // save framebuffer settings\n fb.saveCurrentBindingsAndBuffers();\n }\n\n const framebuffer = gl.createFramebuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);\n gl.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0,\n gl.TEXTURE_2D,\n zbt.getHandle(),\n 0\n );\n\n if (\n gl.checkFramebufferStatus(gl.FRAMEBUFFER) === gl.FRAMEBUFFER_COMPLETE\n ) {\n texels = new Uint8Array(width * height * 4);\n gl.viewport(0, 0, width, height);\n gl.readPixels(0, 0, width, height, gl.RGBA, gl.UNSIGNED_BYTE, texels);\n }\n\n // Now we need to restore framebuffer bindings/buffers\n if (fb) {\n fb.restorePreviousBindingsAndBuffers();\n }\n\n gl.deleteFramebuffer(framebuffer);\n }\n\n model.renderable.invokeCallback(\n model.renderable.getInputData(),\n camera,\n aspectRatio,\n tsize,\n texels\n );\n };\n\n publicAPI.queryPass = (prepass, renderPass) => {\n if (prepass) {\n if (model.renderable.getUseZValues()) {\n renderPass.setDepthRequested(true);\n } else {\n renderPass.setDepthRequested(true);\n }\n }\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkViewNode.extend(publicAPI, model, initialValues);\n\n // Object methods\n vtkOpenGLPixelSpaceCallbackMapper(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(\n extend,\n 'vtkOpenGLPixelSpaceCallbackMapper'\n);\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/OpenGL/PixelSpaceCallbackMapper/index.js","import macro from 'vtk.js/Sources/macro';\nimport vtkViewNode from 'vtk.js/Sources/Rendering/SceneGraph/ViewNode';\nimport vtkMath from 'vtk.js/Sources/Common/Core/Math';\n\nconst { vtkDebugMacro } = macro;\n\n// ----------------------------------------------------------------------------\n// vtkOpenGLRenderer methods\n// ----------------------------------------------------------------------------\n/* eslint-disable no-bitwise */\n\nfunction vtkOpenGLRenderer(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkOpenGLRenderer');\n\n // Builds myself.\n publicAPI.buildPass = (prepass) => {\n if (prepass) {\n if (!model.renderable) {\n return;\n }\n\n // make sure we have a camera\n if (!model.renderable.isActiveCameraCreated()) {\n model.renderable.resetCamera();\n }\n publicAPI.updateLights();\n publicAPI.prepareNodes();\n publicAPI.addMissingNode(model.renderable.getActiveCamera());\n publicAPI.addMissingNodes(model.renderable.getViewPropsWithNestedProps());\n publicAPI.removeUnusedNodes();\n }\n };\n\n publicAPI.updateLights = () => {\n let count = 0;\n\n const lights = model.renderable.getLightsByReference();\n for (let index = 0; index < lights.length; ++index) {\n if (lights[index].getSwitch() > 0.0) {\n count++;\n }\n }\n\n if (!count) {\n vtkDebugMacro('No lights are on, creating one.');\n model.renderable.createLight();\n }\n\n return count;\n };\n\n publicAPI.opaqueZBufferPass = (prepass) => {\n if (prepass) {\n let clearMask = 0;\n const gl = model.context;\n if (!model.renderable.getTransparent()) {\n model.context.clearColor(1.0, 0.0, 0.0, 1.0);\n clearMask |= gl.COLOR_BUFFER_BIT;\n }\n\n if (!model.renderable.getPreserveDepthBuffer()) {\n gl.clearDepth(1.0);\n clearMask |= gl.DEPTH_BUFFER_BIT;\n gl.depthMask(true);\n }\n\n const ts = publicAPI.getTiledSizeAndOrigin();\n gl.enable(gl.SCISSOR_TEST);\n gl.scissor(ts.lowerLeftU, ts.lowerLeftV, ts.usize, ts.vsize);\n gl.viewport(ts.lowerLeftU, ts.lowerLeftV, ts.usize, ts.vsize);\n\n gl.colorMask(true, true, true, true);\n gl.clear(clearMask);\n\n gl.enable(gl.DEPTH_TEST);\n }\n };\n\n // Renders myself\n publicAPI.cameraPass = (prepass) => {\n if (prepass) {\n publicAPI.clear();\n }\n };\n\n publicAPI.getAspectRatio = () => {\n const size = model.parent.getSizeByReference();\n const viewport = model.renderable.getViewportByReference();\n return (\n size[0] *\n (viewport[2] - viewport[0]) /\n ((viewport[3] - viewport[1]) * size[1])\n );\n };\n\n publicAPI.getTiledSizeAndOrigin = () => {\n const vport = model.renderable.getViewportByReference();\n\n // if there is no window assume 0 1\n const tileViewPort = [0.0, 0.0, 1.0, 1.0];\n\n // find the lower left corner of the viewport, taking into account the\n // lower left boundary of this tile\n const vpu = vtkMath.clampValue(vport[0] - tileViewPort[0], 0.0, 1.0);\n const vpv = vtkMath.clampValue(vport[1] - tileViewPort[1], 0.0, 1.0);\n\n // store the result as a pixel value\n const ndvp = model.parent.normalizedDisplayToDisplay(vpu, vpv);\n const lowerLeftU = Math.round(ndvp[0]);\n const lowerLeftV = Math.round(ndvp[1]);\n\n // find the upper right corner of the viewport, taking into account the\n // lower left boundary of this tile\n let vpu2 = vtkMath.clampValue(vport[2] - tileViewPort[0], 0.0, 1.0);\n let vpv2 = vtkMath.clampValue(vport[3] - tileViewPort[1], 0.0, 1.0);\n // also watch for the upper right boundary of the tile\n if (vpu2 > tileViewPort[2] - tileViewPort[0]) {\n vpu2 = tileViewPort[2] - tileViewPort[0];\n }\n if (vpv2 > tileViewPort[3] - tileViewPort[1]) {\n vpv2 = tileViewPort[3] - tileViewPort[1];\n }\n const ndvp2 = model.parent.normalizedDisplayToDisplay(vpu2, vpv2);\n\n // now compute the size of the intersection of the viewport with the\n // current tile\n let usize = Math.round(ndvp2[0]) - lowerLeftU;\n let vsize = Math.round(ndvp2[1]) - lowerLeftV;\n\n if (usize < 0) {\n usize = 0;\n }\n if (vsize < 0) {\n vsize = 0;\n }\n\n return { usize, vsize, lowerLeftU, lowerLeftV };\n };\n\n publicAPI.clear = () => {\n let clearMask = 0;\n const gl = model.context;\n\n if (!model.renderable.getTransparent()) {\n const background = model.renderable.getBackgroundByReference();\n // renderable ensures that background has 4 entries.\n model.context.clearColor(\n background[0],\n background[1],\n background[2],\n background[3]\n );\n clearMask |= gl.COLOR_BUFFER_BIT;\n }\n\n if (!model.renderable.getPreserveDepthBuffer()) {\n gl.clearDepth(1.0);\n clearMask |= gl.DEPTH_BUFFER_BIT;\n gl.depthMask(true);\n }\n\n gl.colorMask(true, true, true, true);\n\n const ts = publicAPI.getTiledSizeAndOrigin();\n gl.enable(gl.SCISSOR_TEST);\n gl.scissor(ts.lowerLeftU, ts.lowerLeftV, ts.usize, ts.vsize);\n gl.viewport(ts.lowerLeftU, ts.lowerLeftV, ts.usize, ts.vsize);\n\n gl.clear(clearMask);\n\n gl.enable(gl.DEPTH_TEST);\n /* eslint-enable no-bitwise */\n };\n\n publicAPI.releaseGraphicsResources = () => {\n if (model.selector !== null) {\n model.selector.releaseGraphicsResources();\n }\n };\n\n publicAPI.setOpenGLRenderWindow = (rw) => {\n if (model.openGLRenderWindow === rw) {\n return;\n }\n publicAPI.releaseGraphicsResources();\n model.openGLRenderWindow = rw;\n model.context = null;\n if (rw) {\n model.context = model.openGLRenderWindow.getContext();\n }\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n context: null,\n openGLRenderWindow: null,\n selector: null,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkViewNode.extend(publicAPI, model, initialValues);\n\n // Build VTK API\n macro.get(publicAPI, model, ['shaderCache']);\n\n macro.setGet(publicAPI, model, ['selector']);\n\n // Object methods\n vtkOpenGLRenderer(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkOpenGLRenderer');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/OpenGL/Renderer/index.js","import { mat3, mat4 } from 'gl-matrix';\n\nimport macro from 'vtk.js/Sources/macro';\nimport vtkDataArray from 'vtk.js/Sources/Common/Core/DataArray';\nimport vtkHelper from 'vtk.js/Sources/Rendering/OpenGL/Helper';\nimport vtkViewNode from 'vtk.js/Sources/Rendering/SceneGraph/ViewNode';\nimport vtkOpenGLTexture from 'vtk.js/Sources/Rendering/OpenGL/Texture';\n\nimport { Representation } from 'vtk.js/Sources/Rendering/Core/Property/Constants';\n\nconst { vtkErrorMacro } = macro;\n\n// ----------------------------------------------------------------------------\n// vtkOpenGLSkybox methods\n// ----------------------------------------------------------------------------\n\nfunction vtkOpenGLSkybox(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkOpenGLSkybox');\n\n // Builds myself.\n publicAPI.buildPass = (prepass) => {\n if (prepass) {\n model.openGLRenderer = publicAPI.getFirstAncestorOfType(\n 'vtkOpenGLRenderer'\n );\n model.openGLRenderWindow = model.openGLRenderer.getParent();\n model.context = model.openGLRenderWindow.getContext();\n model.tris.setOpenGLRenderWindow(model.openGLRenderWindow);\n model.openGLTexture.setOpenGLRenderWindow(model.openGLRenderWindow);\n const ren = model.openGLRenderer.getRenderable();\n model.openGLCamera = model.openGLRenderer.getViewNodeFor(\n ren.getActiveCamera()\n );\n }\n };\n\n publicAPI.queryPass = (prepass, renderPass) => {\n if (prepass) {\n if (!model.renderable || !model.renderable.getVisibility()) {\n return;\n }\n renderPass.incrementOpaqueActorCount();\n }\n };\n\n publicAPI.opaquePass = (prepass, renderPass) => {\n if (prepass) {\n publicAPI.updateBufferObjects();\n\n model.openGLRenderWindow.enableDepthMask();\n\n model.openGLRenderWindow\n .getShaderCache()\n .readyShaderProgram(model.tris.getProgram());\n\n model.openGLTexture.render(model.openGLRenderWindow);\n\n const texUnit = model.openGLTexture.getTextureUnit();\n model.tris.getProgram().setUniformi('sbtexture', texUnit);\n\n const ren = model.openGLRenderer.getRenderable();\n\n const keyMats = model.openGLCamera.getKeyMatrices(ren);\n const imat = mat4.create();\n mat4.invert(imat, keyMats.wcdc);\n model.tris.getProgram().setUniformMatrix('IMCDCMatrix', imat);\n\n const camPos = ren.getActiveCamera().getPosition();\n model.tris\n .getProgram()\n .setUniform3f('camPos', camPos[0], camPos[1], camPos[2]);\n model.tris.getVAO().bind();\n\n // draw polygons\n model.context.drawArrays(\n model.context.TRIANGLES,\n 0,\n model.tris.getCABO().getElementCount()\n );\n model.tris.getVAO().release();\n\n model.openGLTexture.deactivate();\n }\n };\n\n publicAPI.updateBufferObjects = () => {\n // build the VBO if needed, only happens once\n if (!model.tris.getCABO().getElementCount()) {\n const ptsArray = new Float32Array(12);\n for (let i = 0; i < 4; i++) {\n ptsArray[i * 3] = (i % 2) * 2 - 1.0;\n ptsArray[i * 3 + 1] = i > 1 ? 1.0 : -1.0;\n ptsArray[i * 3 + 2] = 1.0;\n }\n const points = vtkDataArray.newInstance({\n numberOfComponents: 3,\n values: ptsArray,\n });\n points.setName('points');\n\n const cellArray = new Uint16Array(8);\n cellArray[0] = 3;\n cellArray[1] = 0;\n cellArray[2] = 1;\n cellArray[3] = 3;\n cellArray[4] = 3;\n cellArray[5] = 0;\n cellArray[6] = 3;\n cellArray[7] = 2;\n const cells = vtkDataArray.newInstance({\n numberOfComponents: 1,\n values: cellArray,\n });\n\n model.tris.getCABO().createVBO(cells, 'polys', Representation.SURFACE, {\n points,\n cellOffset: 0,\n });\n\n // we invert Y below because opengl is messed up!\n // Cube Maps have been specified to follow the RenderMan\n // specification (for whatever reason), and RenderMan\n // assumes the images' origin being in the upper left,\n // contrary to the usual OpenGL behaviour of having the\n // image origin in the lower left. That's why things get\n // swapped in the Y direction. It totally breaks with the usual\n // OpenGL semantics and doesn't make sense at all.\n // But now we're stuck with it. From\n // https://stackoverflow.com/questions/11685608/convention-of-faces-in-opengl-cubemapping\n //\n model.tris.setProgram(\n model.openGLRenderWindow.getShaderCache().readyShaderProgramArray(\n `//VTK::System::Dec\n attribute vec3 vertexMC;\n uniform mat4 IMCDCMatrix;\n varying vec3 TexCoords;\n void main () {\n gl_Position = vec4(vertexMC.xyz, 1.0);\n vec4 wpos = IMCDCMatrix * gl_Position;\n TexCoords = wpos.xyz/wpos.w;\n }`,\n `//VTK::System::Dec\n //VTK::Output::Dec\n varying vec3 TexCoords;\n uniform samplerCube sbtexture;\n uniform vec3 camPos;\n void main () {\n // skybox looks from inside out\n // which means we have to adjust\n // our tcoords. Otherwise text would\n // be flipped\n vec3 tc = normalize(TexCoords - camPos);\n if (abs(tc.z) < max(abs(tc.x),abs(tc.y)))\n {\n tc = vec3(1.0, 1.0, -1.0) * tc;\n }\n else\n {\n tc = vec3(-1.0, 1.0, 1.0) * tc;\n }\n gl_FragData[0] = textureCube(sbtexture, tc);\n }`,\n ''\n )\n );\n\n model.tris.getShaderSourceTime().modified();\n\n model.tris.getVAO().bind();\n\n if (\n !model.tris\n .getVAO()\n .addAttributeArray(\n model.tris.getProgram(),\n model.tris.getCABO(),\n 'vertexMC',\n model.tris.getCABO().getVertexOffset(),\n model.tris.getCABO().getStride(),\n model.context.FLOAT,\n 3,\n model.context.FALSE\n )\n ) {\n vtkErrorMacro('Error setting vertexMC in shader VAO.');\n }\n }\n\n // set/update the texture map if needed\n const tmaps = model.renderable.getTextures();\n if (!tmaps.length) {\n vtkErrorMacro('vtkSkybox requires a texture map');\n }\n if (model.openGLTexture.getRenderable() !== tmaps[0]) {\n model.openGLTexture.releaseGraphicsResources(model.openGLRenderWindow);\n model.openGLTexture.setRenderable(tmaps[0]);\n }\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n context: null,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkViewNode.extend(publicAPI, model, initialValues);\n\n model.openGLTexture = vtkOpenGLTexture.newInstance();\n model.tris = vtkHelper.newInstance();\n\n model.keyMatrixTime = {};\n macro.obj(model.keyMatrixTime, { mtime: 0 });\n model.keyMatrices = {\n normalMatrix: mat3.create(),\n mcwc: mat4.create(),\n };\n\n // Build VTK API\n macro.setGet(publicAPI, model, ['context']);\n\n macro.get(publicAPI, model, ['activeTextures']);\n\n // Object methods\n vtkOpenGLSkybox(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend);\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/OpenGL/Skybox/index.js","import { mat4 } from 'gl-matrix';\nimport { ObjectType } from 'vtk.js/Sources/Rendering/OpenGL/BufferObject/Constants';\n\nimport macro from 'vtk.js/Sources/macro';\n\nimport vtkBufferObject from 'vtk.js/Sources/Rendering/OpenGL/BufferObject';\nimport vtkMath from 'vtk.js/Sources/Common/Core/Math';\n\nimport vtkShaderProgram from 'vtk.js/Sources/Rendering/OpenGL/ShaderProgram';\nimport vtkOpenGLPolyDataMapper from 'vtk.js/Sources/Rendering/OpenGL/PolyDataMapper';\n\nimport vtkSphereMapperVS from 'vtk.js/Sources/Rendering/OpenGL/glsl/vtkSphereMapperVS.glsl';\nimport vtkPolyDataFS from 'vtk.js/Sources/Rendering/OpenGL/glsl/vtkPolyDataFS.glsl';\n\nconst { vtkErrorMacro } = macro;\n\n// ----------------------------------------------------------------------------\n// vtkOpenGLSphereMapper methods\n// ----------------------------------------------------------------------------\n\nfunction vtkOpenGLSphereMapper(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkOpenGLSphereMapper');\n\n // Capture 'parentClass' api for internal use\n const superClass = Object.assign({}, publicAPI);\n\n publicAPI.getShaderTemplate = (shaders, ren, actor) => {\n shaders.Vertex = vtkSphereMapperVS;\n shaders.Fragment = vtkPolyDataFS;\n shaders.Geometry = '';\n };\n\n publicAPI.replaceShaderValues = (shaders, ren, actor) => {\n let VSSource = shaders.Vertex;\n let FSSource = shaders.Fragment;\n\n VSSource = vtkShaderProgram.substitute(VSSource, '//VTK::Camera::Dec', [\n 'uniform mat4 VCDCMatrix;\\n',\n 'uniform mat4 MCVCMatrix;',\n ]).result;\n\n FSSource = vtkShaderProgram.substitute(FSSource, '//VTK::PositionVC::Dec', [\n 'varying vec4 vertexVCVSOutput;',\n ]).result;\n\n // we create vertexVC below, so turn off the default\n // implementation\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::PositionVC::Impl',\n ['vec4 vertexVC = vertexVCVSOutput;\\n']\n ).result;\n\n // for lights kit and positional the VCDC matrix is already defined\n // so don't redefine it\n const replacement = [\n 'uniform float invertedDepth;\\n',\n 'uniform int cameraParallel;\\n',\n 'varying float radiusVCVSOutput;\\n',\n 'varying vec3 centerVCVSOutput;\\n',\n 'uniform mat4 VCDCMatrix;\\n',\n ];\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Normal::Dec',\n replacement\n ).result;\n\n let fragString = '';\n if (model.context.getExtension('EXT_frag_depth')) {\n fragString = 'gl_FragDepthEXT = (pos.z / pos.w + 1.0) / 2.0;\\n';\n }\n if (model.openGLRenderWindow.getWebgl2()) {\n fragString = 'gl_FragDepth = (pos.z / pos.w + 1.0) / 2.0;\\n';\n }\n FSSource = vtkShaderProgram.substitute(FSSource, '//VTK::Depth::Impl', [\n // compute the eye position and unit direction\n ' vec3 EyePos;\\n',\n ' vec3 EyeDir;\\n',\n ' if (cameraParallel != 0) {\\n',\n ' EyePos = vec3(vertexVC.x, vertexVC.y, vertexVC.z + 3.0*radiusVCVSOutput);\\n',\n ' EyeDir = vec3(0.0,0.0,-1.0); }\\n',\n ' else {\\n',\n ' EyeDir = vertexVC.xyz;\\n',\n ' EyePos = vec3(0.0,0.0,0.0);\\n',\n ' float lengthED = length(EyeDir);\\n',\n ' EyeDir = normalize(EyeDir);\\n',\n // we adjust the EyePos to be closer if it is too far away\n // to prevent floating point precision noise\n ' if (lengthED > radiusVCVSOutput*3.0) {\\n',\n ' EyePos = vertexVC.xyz - EyeDir*3.0*radiusVCVSOutput; }\\n',\n ' }\\n',\n\n // translate to Sphere center\n ' EyePos = EyePos - centerVCVSOutput;\\n',\n // scale to radius 1.0\n ' EyePos = EyePos/radiusVCVSOutput;\\n',\n // find the intersection\n ' float b = 2.0*dot(EyePos,EyeDir);\\n',\n ' float c = dot(EyePos,EyePos) - 1.0;\\n',\n ' float d = b*b - 4.0*c;\\n',\n ' vec3 normalVCVSOutput = vec3(0.0,0.0,1.0);\\n',\n ' if (d < 0.0) { discard; }\\n',\n ' else {\\n',\n ' float t = (-b - invertedDepth*sqrt(d))*0.5;\\n',\n\n // compute the normal, for unit sphere this is just\n // the intersection point\n ' normalVCVSOutput = invertedDepth*normalize(EyePos + t*EyeDir);\\n',\n // compute the intersection point in VC\n ' vertexVC.xyz = normalVCVSOutput*radiusVCVSOutput + centerVCVSOutput;\\n',\n ' }\\n',\n // compute the pixel's depth\n // ' normalVCVSOutput = vec3(0,0,1);\\n'\n ' vec4 pos = VCDCMatrix * vertexVC;\\n',\n fragString,\n ]).result;\n\n // Strip out the normal line -- the normal is computed as part of the depth\n FSSource = vtkShaderProgram.substitute(FSSource, '//VTK::Normal::Impl', '')\n .result;\n\n if (model.haveSeenDepthRequest) {\n // special depth impl\n FSSource = vtkShaderProgram.substitute(FSSource, '//VTK::ZBuffer::Impl', [\n 'if (depthRequest == 1) {',\n 'float computedZ = (pos.z / pos.w + 1.0) / 2.0;',\n 'float iz = floor(computedZ * 65535.0 + 0.1);',\n 'float rf = floor(iz/256.0)/255.0;',\n 'float gf = mod(iz,256.0)/255.0;',\n 'gl_FragData[0] = vec4(rf, gf, 0.0, 1.0); }',\n ]).result;\n }\n\n shaders.Vertex = VSSource;\n shaders.Fragment = FSSource;\n\n superClass.replaceShaderValues(shaders, ren, actor);\n };\n\n publicAPI.setMapperShaderParameters = (cellBO, ren, actor) => {\n if (\n cellBO.getCABO().getElementCount() &&\n (model.VBOBuildTime > cellBO.getAttributeUpdateTime().getMTime() ||\n cellBO.getShaderSourceTime().getMTime() >\n cellBO.getAttributeUpdateTime().getMTime()) &&\n cellBO.getProgram().isAttributeUsed('offsetMC')\n ) {\n if (\n !cellBO.getVAO().addAttributeArray(\n cellBO.getProgram(),\n cellBO.getCABO(),\n 'offsetMC',\n 12, // 12:this->VBO->ColorOffset+sizeof(float)\n cellBO.getCABO().getStride(),\n model.context.FLOAT,\n 2,\n false\n )\n ) {\n vtkErrorMacro(\"Error setting 'offsetMC' in shader VAO.\");\n }\n }\n\n if (cellBO.getProgram().isUniformUsed('invertedDepth')) {\n cellBO\n .getProgram()\n .setUniformf('invertedDepth', model.invert ? -1.0 : 1.0);\n }\n\n superClass.setMapperShaderParameters(cellBO, ren, actor);\n };\n\n publicAPI.setCameraShaderParameters = (cellBO, ren, actor) => {\n const program = cellBO.getProgram();\n\n const cam = ren.getActiveCamera();\n const keyMats = model.openGLCamera.getKeyMatrices(ren);\n\n if (program.isUniformUsed('VCDCMatrix')) {\n program.setUniformMatrix('VCDCMatrix', keyMats.vcdc);\n }\n\n if (program.isUniformUsed('MCVCMatrix')) {\n if (!actor.getIsIdentity()) {\n const actMats = model.openGLActor.getKeyMatrices();\n const tmp4 = mat4.create();\n mat4.multiply(tmp4, keyMats.wcvc, actMats.mcwc);\n program.setUniformMatrix('MCVCMatrix', tmp4);\n } else {\n program.setUniformMatrix('MCVCMatrix', keyMats.wcvc);\n }\n }\n\n if (program.isUniformUsed('cameraParallel')) {\n cellBO\n .getProgram()\n .setUniformi('cameraParallel', cam.getParallelProjection());\n }\n };\n\n publicAPI.getOpenGLMode = (rep, type) => model.context.TRIANGLES;\n\n publicAPI.buildBufferObjects = (ren, actor) => {\n const poly = model.currentInput;\n\n if (poly === null) {\n return;\n }\n\n model.renderable.mapScalars(poly, 1.0);\n const c = model.renderable.getColorMapColors();\n\n const vbo = model.primitives[model.primTypes.Tris].getCABO();\n\n const pointData = poly.getPointData();\n const points = poly.getPoints();\n const numPoints = points.getNumberOfPoints();\n const pointArray = points.getData();\n\n const pointSize = 5; // x,y,z,orientation1,orientation2\n let scales = null;\n\n if (\n model.renderable.getScaleArray() != null &&\n pointData.hasArray(model.renderable.getScaleArray())\n ) {\n scales = pointData.getArray(model.renderable.getScaleArray()).getData();\n }\n\n let colorData = null;\n let colorComponents = 0;\n let packedUCVBO = null;\n if (c) {\n colorComponents = c.getNumberOfComponents();\n vbo.setColorOffset(0);\n vbo.setColorBOStride(4);\n colorData = c.getData();\n packedUCVBO = new Uint8Array(3 * numPoints * 4);\n if (!vbo.getColorBO()) {\n vbo.setColorBO(vtkBufferObject.newInstance());\n }\n vbo.getColorBO().setOpenGLRenderWindow(model.openGLRenderWindow);\n } else if (vbo.getColorBO()) {\n vbo.setColorBO(null);\n }\n vbo.setColorComponents(colorComponents);\n\n const packedVBO = new Float32Array(pointSize * numPoints * 3);\n\n vbo.setStride(pointSize * 4);\n\n const cos30 = Math.cos(vtkMath.radiansFromDegrees(30.0));\n let pointIdx = 0;\n let colorIdx = 0;\n\n //\n // Generate points and point data for sides\n //\n let vboIdx = 0;\n let ucIdx = 0;\n for (let i = 0; i < numPoints; ++i) {\n let radius = model.renderable.getRadius();\n if (scales) {\n radius = scales[i];\n }\n\n pointIdx = i * 3;\n packedVBO[vboIdx++] = pointArray[pointIdx++];\n packedVBO[vboIdx++] = pointArray[pointIdx++];\n packedVBO[vboIdx++] = pointArray[pointIdx++];\n packedVBO[vboIdx++] = -2.0 * radius * cos30;\n packedVBO[vboIdx++] = -radius;\n if (colorData) {\n colorIdx = i * colorComponents;\n packedUCVBO[ucIdx++] = colorData[colorIdx];\n packedUCVBO[ucIdx++] = colorData[colorIdx + 1];\n packedUCVBO[ucIdx++] = colorData[colorIdx + 2];\n packedUCVBO[ucIdx++] = colorData[colorIdx + 3];\n }\n\n pointIdx = i * 3;\n packedVBO[vboIdx++] = pointArray[pointIdx++];\n packedVBO[vboIdx++] = pointArray[pointIdx++];\n packedVBO[vboIdx++] = pointArray[pointIdx++];\n packedVBO[vboIdx++] = 2.0 * radius * cos30;\n packedVBO[vboIdx++] = -radius;\n if (colorData) {\n packedUCVBO[ucIdx++] = colorData[colorIdx];\n packedUCVBO[ucIdx++] = colorData[colorIdx + 1];\n packedUCVBO[ucIdx++] = colorData[colorIdx + 2];\n packedUCVBO[ucIdx++] = colorData[colorIdx + 3];\n }\n\n pointIdx = i * 3;\n packedVBO[vboIdx++] = pointArray[pointIdx++];\n packedVBO[vboIdx++] = pointArray[pointIdx++];\n packedVBO[vboIdx++] = pointArray[pointIdx++];\n packedVBO[vboIdx++] = 0.0;\n packedVBO[vboIdx++] = 2.0 * radius;\n if (colorData) {\n packedUCVBO[ucIdx++] = colorData[colorIdx];\n packedUCVBO[ucIdx++] = colorData[colorIdx + 1];\n packedUCVBO[ucIdx++] = colorData[colorIdx + 2];\n packedUCVBO[ucIdx++] = colorData[colorIdx + 3];\n }\n }\n\n vbo.setElementCount(vboIdx / pointSize);\n vbo.upload(packedVBO, ObjectType.ARRAY_BUFFER);\n if (c) {\n vbo.getColorBO().upload(packedUCVBO, ObjectType.ARRAY_BUFFER);\n }\n\n model.VBOBuildTime.modified();\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkOpenGLPolyDataMapper.extend(publicAPI, model, initialValues);\n\n // Object methods\n vtkOpenGLSphereMapper(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkOpenGLSphereMapper');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/OpenGL/SphereMapper/index.js","module.exports = \"//VTK::System::Dec\\n\\n/*=========================================================================\\n\\n Program: Visualization Toolkit\\n Module: vtkSphereMapperVS.glsl\\n\\n Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen\\n All rights reserved.\\n See Copyright.txt or http://www.kitware.com/Copyright.htm for details.\\n\\n This software is distributed WITHOUT ANY WARRANTY; without even\\n the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR\\n PURPOSE. See the above copyright notice for more information.\\n\\n=========================================================================*/\\n// this shader implements imposters in OpenGL for Spheres\\n\\nattribute vec4 vertexMC;\\nattribute vec2 offsetMC;\\n\\n// optional normal declaration\\n//VTK::Normal::Dec\\n\\n// Texture coordinates\\n//VTK::TCoord::Dec\\n\\nuniform mat3 normalMatrix; // transform model coordinate directions to view coordinates\\n\\n// material property values\\n//VTK::Color::Dec\\n\\n// clipping plane vars\\n//VTK::Clip::Dec\\n\\n// camera and actor matrix values\\n//VTK::Camera::Dec\\n\\nvarying vec4 vertexVCVSOutput;\\nvarying float radiusVCVSOutput;\\nvarying vec3 centerVCVSOutput;\\n\\nuniform int cameraParallel;\\n\\nvoid main()\\n{\\n //VTK::Color::Impl\\n\\n //VTK::Normal::Impl\\n\\n //VTK::TCoord::Impl\\n\\n //VTK::Clip::Impl\\n\\n // compute the projected vertex position\\n vertexVCVSOutput = MCVCMatrix * vertexMC;\\n centerVCVSOutput = vertexVCVSOutput.xyz;\\n radiusVCVSOutput = length(offsetMC)*0.5;\\n\\n // make the triangle face the camera\\n if (cameraParallel == 0)\\n {\\n vec3 dir = normalize(-vertexVCVSOutput.xyz);\\n vec3 base2 = normalize(cross(dir,vec3(1.0,0.0,0.0)));\\n vec3 base1 = cross(base2,dir);\\n vertexVCVSOutput.xyz = vertexVCVSOutput.xyz + offsetMC.x*base1 + offsetMC.y*base2;\\n }\\n else\\n {\\n // add in the offset\\n vertexVCVSOutput.xy = vertexVCVSOutput.xy + offsetMC;\\n }\\n\\n gl_Position = VCDCMatrix * vertexVCVSOutput;\\n}\\n\"\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/OpenGL/glsl/vtkSphereMapperVS.glsl","import { mat3, mat4 } from 'gl-matrix';\nimport { ObjectType } from 'vtk.js/Sources/Rendering/OpenGL/BufferObject/Constants';\n\nimport * as macro from 'vtk.js/Sources/macro';\n\nimport vtkBufferObject from 'vtk.js/Sources/Rendering/OpenGL/BufferObject';\nimport vtkStickMapperVS from 'vtk.js/Sources/Rendering/OpenGL/glsl/vtkStickMapperVS.glsl';\nimport vtkPolyDataFS from 'vtk.js/Sources/Rendering/OpenGL/glsl/vtkPolyDataFS.glsl';\n\nimport vtkShaderProgram from 'vtk.js/Sources/Rendering/OpenGL/ShaderProgram';\nimport vtkOpenGLPolyDataMapper from 'vtk.js/Sources/Rendering/OpenGL/PolyDataMapper';\n\nconst { vtkErrorMacro } = macro;\n\n// ----------------------------------------------------------------------------\n// vtkOpenGLStickMapper methods\n// ----------------------------------------------------------------------------\n\nfunction vtkOpenGLStickMapper(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkOpenGLStickMapper');\n\n // Capture 'parentClass' api for internal use\n const superClass = Object.assign({}, publicAPI);\n\n publicAPI.getShaderTemplate = (shaders, ren, actor) => {\n shaders.Vertex = vtkStickMapperVS;\n shaders.Fragment = vtkPolyDataFS;\n shaders.Geometry = '';\n };\n\n publicAPI.replaceShaderValues = (shaders, ren, actor) => {\n let VSSource = shaders.Vertex;\n let FSSource = shaders.Fragment;\n\n VSSource = vtkShaderProgram.substitute(VSSource, '//VTK::Camera::Dec', [\n 'uniform mat4 VCDCMatrix;\\n',\n 'uniform mat4 MCVCMatrix;',\n ]).result;\n\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::PositionVC::Dec',\n 'varying vec4 vertexVCVSOutput;'\n ).result;\n\n // we create vertexVC below, so turn off the default\n // implementation\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::PositionVC::Impl',\n ' vec4 vertexVC = vertexVCVSOutput;\\n'\n ).result;\n\n // for lights kit and positional the VCDC matrix is already defined\n // so don't redefine it\n const replacement = [\n 'uniform int cameraParallel;\\n',\n 'varying float radiusVCVSOutput;\\n',\n 'varying vec3 orientVCVSOutput;\\n',\n 'varying float lengthVCVSOutput;\\n',\n 'varying vec3 centerVCVSOutput;\\n',\n 'uniform mat4 VCDCMatrix;\\n',\n ];\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Normal::Dec',\n replacement\n ).result;\n\n let fragString = '';\n if (model.context.getExtension('EXT_frag_depth')) {\n fragString = ' gl_FragDepthEXT = (pos.z / pos.w + 1.0) / 2.0;\\n';\n }\n if (model.openGLRenderWindow.getWebgl2()) {\n fragString = 'gl_FragDepth = (pos.z / pos.w + 1.0) / 2.0;\\n';\n }\n // see https://www.cl.cam.ac.uk/teaching/1999/AGraphHCI/SMAG/node2.html\n FSSource = vtkShaderProgram.substitute(FSSource, '//VTK::Depth::Impl', [\n // compute the eye position and unit direction\n ' vec3 EyePos;\\n',\n ' vec3 EyeDir;\\n',\n ' if (cameraParallel != 0) {\\n',\n ' EyePos = vec3(vertexVC.x, vertexVC.y, vertexVC.z + 3.0*radiusVCVSOutput);\\n',\n ' EyeDir = vec3(0.0,0.0,-1.0); }\\n',\n ' else {\\n',\n ' EyeDir = vertexVC.xyz;\\n',\n ' EyePos = vec3(0.0,0.0,0.0);\\n',\n ' float lengthED = length(EyeDir);\\n',\n ' EyeDir = normalize(EyeDir);\\n',\n // we adjust the EyePos to be closer if it is too far away\n // to prevent floating point precision noise\n ' if (lengthED > radiusVCVSOutput*3.0) {\\n',\n ' EyePos = vertexVC.xyz - EyeDir*3.0*radiusVCVSOutput; }\\n',\n ' }\\n',\n\n // translate to Stick center\n ' EyePos = EyePos - centerVCVSOutput;\\n',\n\n // rotate to new basis\n // base1, base2, orientVC\n ' vec3 base1;\\n',\n ' if (abs(orientVCVSOutput.z) < 0.99) {\\n',\n ' base1 = normalize(cross(orientVCVSOutput,vec3(0.0,0.0,1.0))); }\\n',\n ' else {\\n',\n ' base1 = normalize(cross(orientVCVSOutput,vec3(0.0,1.0,0.0))); }\\n',\n ' vec3 base2 = cross(orientVCVSOutput,base1);\\n',\n ' EyePos = vec3(dot(EyePos,base1),dot(EyePos,base2),dot(EyePos,orientVCVSOutput));\\n',\n ' EyeDir = vec3(dot(EyeDir,base1),dot(EyeDir,base2),dot(EyeDir,orientVCVSOutput));\\n',\n\n // scale by radius\n ' EyePos = EyePos/radiusVCVSOutput;\\n',\n\n // find the intersection\n ' float a = EyeDir.x*EyeDir.x + EyeDir.y*EyeDir.y;\\n',\n ' float b = 2.0*(EyePos.x*EyeDir.x + EyePos.y*EyeDir.y);\\n',\n ' float c = EyePos.x*EyePos.x + EyePos.y*EyePos.y - 1.0;\\n',\n ' float d = b*b - 4.0*a*c;\\n',\n ' vec3 normalVCVSOutput = vec3(0.0,0.0,1.0);\\n',\n ' if (d < 0.0) { discard; }\\n',\n ' else {\\n',\n ' float t = (-b - sqrt(d))/(2.0*a);\\n',\n ' float tz = EyePos.z + t*EyeDir.z;\\n',\n ' vec3 iPoint = EyePos + t*EyeDir;\\n',\n ' if (abs(iPoint.z)*radiusVCVSOutput > lengthVCVSOutput*0.5) {\\n',\n // test for end cap\n ' float t2 = (-b + sqrt(d))/(2.0*a);\\n',\n ' float tz2 = EyePos.z + t2*EyeDir.z;\\n',\n ' if (tz2*radiusVCVSOutput > lengthVCVSOutput*0.5 || tz*radiusVCVSOutput < -0.5*lengthVCVSOutput) { discard; }\\n',\n ' else {\\n',\n ' normalVCVSOutput = orientVCVSOutput;\\n',\n ' float t3 = (lengthVCVSOutput*0.5/radiusVCVSOutput - EyePos.z)/EyeDir.z;\\n',\n ' iPoint = EyePos + t3*EyeDir;\\n',\n ' vertexVC.xyz = radiusVCVSOutput*(iPoint.x*base1 + iPoint.y*base2 + iPoint.z*orientVCVSOutput) + centerVCVSOutput;\\n',\n ' }\\n',\n ' }\\n',\n ' else {\\n',\n // The normal is the iPoint.xy rotated back into VC\n ' normalVCVSOutput = iPoint.x*base1 + iPoint.y*base2;\\n',\n // rescale rerotate and translate\n ' vertexVC.xyz = radiusVCVSOutput*(normalVCVSOutput + iPoint.z*orientVCVSOutput) + centerVCVSOutput;\\n',\n ' }\\n',\n ' }\\n',\n\n // ' vec3 normalVC = vec3(0.0,0.0,1.0);\\n'\n // compute the pixel's depth\n ' vec4 pos = VCDCMatrix * vertexVC;\\n',\n fragString,\n ]).result;\n\n // Strip out the normal line -- the normal is computed as part of the depth\n FSSource = vtkShaderProgram.substitute(FSSource, '//VTK::Normal::Impl', '')\n .result;\n\n const selector = ren.getSelector();\n const picking = false; // (ren.getRenderWindow().getIsPicking() || selector != null);\n fragString = '';\n if (picking) {\n if (\n !selector /* ||\n (this->LastSelectionState >= vtkHardwareSelector::ID_LOW24) */\n ) {\n VSSource = vtkShaderProgram.substitute(\n VSSource,\n '//VTK::Picking::Dec',\n ['attribute vec4 selectionId;\\n', 'varying vec4 selectionIdVSOutput;']\n ).result;\n VSSource = vtkShaderProgram.substitute(\n VSSource,\n '//VTK::Picking::Impl',\n 'selectionIdVSOutput = selectionId;'\n ).result;\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Picking::Dec',\n 'varying vec4 selectionIdVSOutput;'\n ).result;\n\n if (model.context.getExtension('EXT_frag_depth')) {\n fragString =\n ' gl_FragData[0] = vec4(selectionIdVSOutput.rgb, 1.0);\\n';\n }\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Picking::Impl',\n fragString\n ).result;\n } else {\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Picking::Dec',\n 'uniform vec3 mapperIndex;'\n ).result;\n\n if (model.context.getExtension('EXT_frag_depth')) {\n fragString = ' gl_FragData[0] = vec4(mapperIndex,1.0);\\n';\n }\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Picking::Impl',\n fragString\n ).result;\n }\n }\n\n if (model.haveSeenDepthRequest) {\n // special depth impl\n FSSource = vtkShaderProgram.substitute(FSSource, '//VTK::ZBuffer::Impl', [\n 'if (depthRequest == 1) {',\n 'float computedZ = (pos.z / pos.w + 1.0) / 2.0;',\n 'float iz = floor(computedZ * 65535.0 + 0.1);',\n 'float rf = floor(iz/256.0)/255.0;',\n 'float gf = mod(iz,256.0)/255.0;',\n 'gl_FragData[0] = vec4(rf, gf, 0.0, 1.0); }',\n ]).result;\n }\n\n shaders.Vertex = VSSource;\n shaders.Fragment = FSSource;\n\n superClass.replaceShaderValues(shaders, ren, actor);\n };\n\n publicAPI.setMapperShaderParameters = (cellBO, ren, actor) => {\n if (\n cellBO.getCABO().getElementCount() &&\n (model.VBOBuildTime > cellBO.getAttributeUpdateTime().getMTime() ||\n cellBO.getShaderSourceTime().getMTime() >\n cellBO.getAttributeUpdateTime().getMTime())\n ) {\n const selector = ren.getSelector();\n const picking = false; // (ren.getRenderWindow().getIsPicking() || selector !== null);\n\n if (cellBO.getProgram().isAttributeUsed('orientMC')) {\n if (\n !cellBO.getVAO().addAttributeArray(\n cellBO.getProgram(),\n cellBO.getCABO(),\n 'orientMC',\n 12, // after X Y Z\n cellBO.getCABO().getStride(),\n model.context.FLOAT,\n 3,\n false\n )\n ) {\n vtkErrorMacro(\"Error setting 'orientMC' in shader VAO.\");\n }\n }\n if (cellBO.getProgram().isAttributeUsed('offsetMC')) {\n if (\n !cellBO\n .getVAO()\n .addAttributeArray(\n cellBO.getProgram(),\n cellBO.getCABO().getColorBO(),\n 'offsetMC',\n 0,\n cellBO.getCABO().getColorBOStride(),\n model.context.UNSIGNED_BYTE,\n 3,\n true\n )\n ) {\n vtkErrorMacro(\"Error setting 'offsetMC' in shader VAO.\");\n }\n }\n if (cellBO.getProgram().isAttributeUsed('radiusMC')) {\n if (\n !cellBO.getVAO().addAttributeArray(\n cellBO.getProgram(),\n cellBO.getCABO(),\n 'radiusMC',\n 24, // X Y Z OX OY OZ\n cellBO.getCABO().getStride(),\n model.context.FLOAT,\n 1,\n false\n )\n ) {\n vtkErrorMacro(\"Error setting 'radiusMC' in shader VAO.\");\n }\n }\n if (\n picking &&\n !selector /* ||\n (model.LastSelectionState >= vtkHardwareSelector::ID_LOW24) */ &&\n cellBO.getProgram().isAttributeUsed('selectionId')\n ) {\n if (\n !cellBO\n .getVAO()\n .addAttributeArray(\n cellBO.getProgram(),\n cellBO.getCABO(),\n 'selectionId',\n cellBO.getCABO().getColorOffset(),\n cellBO.getCABO().getColorBOStride(),\n model.context.UNSIGNED_CHAR,\n 4,\n true\n )\n ) {\n vtkErrorMacro(\"Error setting 'selectionId' in shader VAO.\");\n }\n } else {\n cellBO.getVAO().removeAttributeArray('selectionId');\n }\n }\n\n superClass.setMapperShaderParameters(cellBO, ren, actor);\n };\n\n publicAPI.setCameraShaderParameters = (cellBO, ren, actor) => {\n const program = cellBO.getProgram();\n\n const cam = ren.getActiveCamera();\n const keyMats = model.openGLCamera.getKeyMatrices(ren);\n\n if (program.isUniformUsed('VCDCMatrix')) {\n program.setUniformMatrix('VCDCMatrix', keyMats.vcdc);\n }\n\n if (!actor.getIsIdentity()) {\n const actMats = model.openGLActor.getKeyMatrices();\n const tmp4 = mat4.create();\n\n if (program.isUniformUsed('MCVCMatrix')) {\n mat4.multiply(tmp4, keyMats.wcvc, actMats.mcwc);\n program.setUniformMatrix('MCVCMatrix', tmp4);\n }\n if (program.isUniformUsed('normalMatrix')) {\n const anorms = mat3.create();\n mat3.multiply(anorms, keyMats.normalMatrix, actMats.normalMatrix);\n program.setUniformMatrix3x3('normalMatrix', anorms);\n }\n } else {\n if (program.isUniformUsed('MCVCMatrix')) {\n program.setUniformMatrix('MCVCMatrix', keyMats.wcvc);\n }\n if (program.isUniformUsed('normalMatrix')) {\n program.setUniformMatrix3x3('normalMatrix', keyMats.normalMatrix);\n }\n }\n\n if (program.isUniformUsed('cameraParallel')) {\n cellBO\n .getProgram()\n .setUniformi('cameraParallel', cam.getParallelProjection());\n }\n };\n\n publicAPI.getOpenGLMode = (rep, type) => model.context.TRIANGLES;\n\n publicAPI.buildBufferObjects = (ren, actor) => {\n const poly = model.currentInput;\n\n if (poly === null) {\n return;\n }\n\n model.renderable.mapScalars(poly, 1.0);\n const c = model.renderable.getColorMapColors();\n\n const vbo = model.primitives[model.primTypes.Tris].getCABO();\n\n const pointData = poly.getPointData();\n const points = poly.getPoints();\n const numPoints = points.getNumberOfPoints();\n const pointArray = points.getData();\n let pointSize = 3; // x,y,z\n\n // three more floats for orientation + 1 for radius\n pointSize += 4;\n\n let colorData = null;\n let colorComponents = 0;\n vbo.setColorBOStride(4);\n\n if (!vbo.getColorBO()) {\n vbo.setColorBO(vtkBufferObject.newInstance());\n }\n vbo.getColorBO().setOpenGLRenderWindow(model.openGLRenderWindow);\n if (c) {\n colorComponents = c.getNumberOfComponents();\n vbo.setColorOffset(4);\n colorData = c.getData();\n vbo.setColorBOStride(8);\n }\n vbo.setColorComponents(colorComponents);\n\n vbo.setStride(pointSize * 4);\n\n // Create a buffer, and copy the data over.\n const packedVBO = new Float32Array(pointSize * numPoints * 12);\n const packedUCVBO = new Uint8Array(12 * numPoints * (colorData ? 8 : 4));\n\n let scales = null;\n let orientationArray = null;\n //\n // Generate points and point data for sides\n //\n if (\n model.renderable.getScaleArray() != null &&\n pointData.hasArray(model.renderable.getScaleArray())\n ) {\n scales = pointData.getArray(model.renderable.getScaleArray()).getData();\n }\n\n if (\n model.renderable.getOrientationArray() != null &&\n pointData.hasArray(model.renderable.getOrientationArray())\n ) {\n orientationArray = pointData\n .getArray(model.renderable.getOrientationArray())\n .getData();\n } else {\n vtkErrorMacro([\n 'Error setting orientationArray.\\n',\n 'You have to specify the stick orientation',\n ]);\n }\n\n // Vertices\n // 013 - 032 - 324 - 453\n //\n // _.4---_.5\n // .-* .-*\n // 2-----3\n // | /|\n // | / |\n // | / |\n // | / |\n // |/ |\n // 0-----1\n //\n // coord for each points\n // 0: 000\n // 1: 100\n // 2: 001\n // 3: 101\n // 4: 011\n // 5: 111\n\n // prettier-ignore\n const verticesArray = [\n 0, 1, 3,\n 0, 3, 2,\n 2, 3, 5,\n 2, 5, 4,\n ];\n\n let pointIdx = 0;\n let colorIdx = 0;\n let vboIdx = 0;\n let ucIdx = 0;\n\n for (let i = 0; i < numPoints; ++i) {\n let length = model.renderable.getLength();\n let radius = model.renderable.getRadius();\n if (scales) {\n length = scales[i * 2];\n radius = scales[i * 2 + 1];\n }\n\n for (let j = 0; j < verticesArray.length; ++j) {\n pointIdx = i * 3;\n packedVBO[vboIdx++] = pointArray[pointIdx++];\n packedVBO[vboIdx++] = pointArray[pointIdx++];\n packedVBO[vboIdx++] = pointArray[pointIdx++];\n pointIdx = i * 3;\n packedVBO[vboIdx++] = orientationArray[pointIdx++] * length;\n packedVBO[vboIdx++] = orientationArray[pointIdx++] * length;\n packedVBO[vboIdx++] = orientationArray[pointIdx++] * length;\n packedVBO[vboIdx++] = radius;\n\n packedUCVBO[ucIdx++] = 255 * (verticesArray[j] % 2);\n packedUCVBO[ucIdx++] = verticesArray[j] >= 4 ? 255 : 0;\n packedUCVBO[ucIdx++] = verticesArray[j] >= 2 ? 255 : 0;\n packedUCVBO[ucIdx++] = 255;\n\n colorIdx = i * colorComponents;\n if (colorData) {\n packedUCVBO[ucIdx++] = colorData[colorIdx];\n packedUCVBO[ucIdx++] = colorData[colorIdx + 1];\n packedUCVBO[ucIdx++] = colorData[colorIdx + 2];\n packedUCVBO[ucIdx++] = colorData[colorIdx + 3];\n }\n }\n }\n vbo.setElementCount(vboIdx / pointSize);\n vbo.upload(packedVBO, ObjectType.ARRAY_BUFFER);\n vbo.getColorBO().upload(packedUCVBO, ObjectType.ARRAY_BUFFER);\n model.VBOBuildTime.modified();\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkOpenGLPolyDataMapper.extend(publicAPI, model, initialValues);\n\n // Object methods\n vtkOpenGLStickMapper(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkOpenGLStickMapper');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/OpenGL/StickMapper/index.js","module.exports = \"//VTK::System::Dec\\n\\n/*=========================================================================\\n\\n Program: Visualization Toolkit\\n Module: vtkStickMapperVS.glsl\\n\\n Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen\\n All rights reserved.\\n See Copyright.txt or http://www.kitware.com/Copyright.htm for details.\\n\\n This software is distributed WITHOUT ANY WARRANTY; without even\\n the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR\\n PURPOSE. See the above copyright notice for more information.\\n\\n=========================================================================*/\\n// this shader implements imposters in OpenGL for Sticks\\n\\nattribute vec4 vertexMC;\\nattribute vec3 orientMC;\\nattribute vec4 offsetMC;\\nattribute float radiusMC;\\n\\n// optional normal declaration\\n//VTK::Normal::Dec\\n\\n//VTK::Picking::Dec\\n\\n// Texture coordinates\\n//VTK::TCoord::Dec\\n\\nuniform mat3 normalMatrix; // transform model coordinate directions to view coordinates\\n\\n// material property values\\n//VTK::Color::Dec\\n\\n// clipping plane vars\\n//VTK::Clip::Dec\\n\\n// camera and actor matrix values\\n//VTK::Camera::Dec\\n\\nvarying vec4 vertexVCVSOutput;\\nvarying float radiusVCVSOutput;\\nvarying float lengthVCVSOutput;\\nvarying vec3 centerVCVSOutput;\\nvarying vec3 orientVCVSOutput;\\n\\nuniform int cameraParallel;\\n\\nvoid main()\\n{\\n //VTK::Picking::Impl\\n\\n //VTK::Color::Impl\\n\\n //VTK::Normal::Impl\\n\\n //VTK::TCoord::Impl\\n\\n //VTK::Clip::Impl\\n\\n vertexVCVSOutput = MCVCMatrix * vertexMC;\\n centerVCVSOutput = vertexVCVSOutput.xyz;\\n radiusVCVSOutput = radiusMC;\\n lengthVCVSOutput = length(orientMC);\\n orientVCVSOutput = normalMatrix * normalize(orientMC);\\n\\n // make sure it is pointing out of the screen\\n if (orientVCVSOutput.z < 0.0)\\n {\\n orientVCVSOutput = -orientVCVSOutput;\\n }\\n\\n // make the basis\\n vec3 xbase;\\n vec3 ybase;\\n vec3 dir = vec3(0.0,0.0,1.0);\\n if (cameraParallel == 0)\\n {\\n dir = normalize(-vertexVCVSOutput.xyz);\\n }\\n if (abs(dot(dir,orientVCVSOutput)) == 1.0)\\n {\\n xbase = normalize(cross(vec3(0.0,1.0,0.0),orientVCVSOutput));\\n ybase = cross(xbase,orientVCVSOutput);\\n }\\n else\\n {\\n xbase = normalize(cross(orientVCVSOutput,dir));\\n ybase = cross(orientVCVSOutput,xbase);\\n }\\n\\n vec3 offsets = offsetMC.xyz*2.0-1.0;\\n vertexVCVSOutput.xyz = vertexVCVSOutput.xyz +\\n radiusVCVSOutput*offsets.x*xbase +\\n radiusVCVSOutput*offsets.y*ybase +\\n 0.5*lengthVCVSOutput*offsets.z*orientVCVSOutput;\\n\\n gl_Position = VCDCMatrix * vertexVCVSOutput;\\n}\\n\"\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/OpenGL/glsl/vtkStickMapperVS.glsl","import { mat3, mat4 } from 'gl-matrix';\n\nimport macro from 'vtk.js/Sources/macro';\nimport vtkViewNode from 'vtk.js/Sources/Rendering/SceneGraph/ViewNode';\n\n// ----------------------------------------------------------------------------\n// vtkOpenGLVolume methods\n// ----------------------------------------------------------------------------\n\nfunction vtkOpenGLVolume(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkOpenGLVolume');\n\n // Builds myself.\n publicAPI.buildPass = (prepass) => {\n if (!model.renderable || !model.renderable.getVisibility()) {\n return;\n }\n if (prepass) {\n publicAPI.prepareNodes();\n publicAPI.addMissingNode(model.renderable.getMapper());\n publicAPI.removeUnusedNodes();\n }\n };\n\n publicAPI.queryPass = (prepass, renderPass) => {\n if (prepass) {\n if (!model.renderable || !model.renderable.getVisibility()) {\n return;\n }\n renderPass.incrementVolumeCount();\n }\n };\n\n publicAPI.traverseVolumePass = (renderPass) => {\n if (!model.renderable || !model.renderable.getVisibility()) {\n return;\n }\n\n publicAPI.apply(renderPass, true);\n\n model.children[0].traverse(renderPass);\n\n publicAPI.apply(renderPass, false);\n };\n\n // Renders myself\n publicAPI.volumePass = (prepass) => {\n if (!model.renderable || !model.renderable.getVisibility()) {\n return;\n }\n if (prepass) {\n model.context = publicAPI\n .getFirstAncestorOfType('vtkOpenGLRenderWindow')\n .getContext();\n model.context.depthMask(false);\n } else {\n model.context.depthMask(true);\n }\n };\n\n publicAPI.getKeyMatrices = () => {\n // has the actor changed?\n if (model.renderable.getMTime() > model.keyMatrixTime.getMTime()) {\n model.renderable.computeMatrix();\n mat4.copy(model.MCWCMatrix, model.renderable.getMatrix());\n mat4.transpose(model.MCWCMatrix, model.MCWCMatrix);\n\n if (model.renderable.getIsIdentity()) {\n mat3.identity(model.normalMatrix);\n } else {\n mat3.fromMat4(model.normalMatrix, model.MCWCMatrix);\n mat3.invert(model.normalMatrix, model.normalMatrix);\n }\n model.keyMatrixTime.modified();\n }\n\n return { mcwc: model.MCWCMatrix, normalMatrix: model.normalMatrix };\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n // context: null,\n // keyMatrixTime: null,\n // normalMatrix: null,\n // MCWCMatrix: null,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkViewNode.extend(publicAPI, model, initialValues);\n\n model.keyMatrixTime = {};\n macro.obj(model.keyMatrixTime);\n model.normalMatrix = mat3.create();\n model.MCWCMatrix = mat4.create();\n\n // Build VTK API\n macro.setGet(publicAPI, model, ['context']);\n\n // Object methods\n vtkOpenGLVolume(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkOpenGLVolume');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/OpenGL/Volume/index.js","import macro from 'vtk.js/Sources/macro';\nimport { vec3, mat3, mat4 } from 'gl-matrix';\n// import vtkBoundingBox from 'vtk.js/Sources/Common/DataModel/BoundingBox';\nimport vtkDataArray from 'vtk.js/Sources/Common/Core/DataArray';\nimport { VtkDataTypes } from 'vtk.js/Sources/Common/Core/DataArray/Constants';\nimport vtkHelper from 'vtk.js/Sources/Rendering/OpenGL/Helper';\nimport vtkMath from 'vtk.js/Sources/Common/Core/Math';\nimport vtkOpenGLFramebuffer from 'vtk.js/Sources/Rendering/OpenGL/Framebuffer';\nimport vtkOpenGLTexture from 'vtk.js/Sources/Rendering/OpenGL/Texture';\nimport vtkShaderProgram from 'vtk.js/Sources/Rendering/OpenGL/ShaderProgram';\nimport vtkVertexArrayObject from 'vtk.js/Sources/Rendering/OpenGL/VertexArrayObject';\nimport vtkViewNode from 'vtk.js/Sources/Rendering/SceneGraph/ViewNode';\nimport { Representation } from 'vtk.js/Sources/Rendering/Core/Property/Constants';\nimport {\n Wrap,\n Filter,\n} from 'vtk.js/Sources/Rendering/OpenGL/Texture/Constants';\nimport { InterpolationType } from 'vtk.js/Sources/Rendering/Core/VolumeProperty/Constants';\n\nimport vtkVolumeVS from 'vtk.js/Sources/Rendering/OpenGL/glsl/vtkVolumeVS.glsl';\nimport vtkVolumeFS from 'vtk.js/Sources/Rendering/OpenGL/glsl/vtkVolumeFS.glsl';\nimport vtkVolumeFS2 from 'vtk.js/Sources/Rendering/OpenGL/glsl/vtkVolumeFS2.glsl';\n\nconst { vtkWarningMacro, vtkErrorMacro } = macro;\n\n// ----------------------------------------------------------------------------\n// vtkOpenGLVolumeMapper methods\n// ----------------------------------------------------------------------------\n\nfunction vtkOpenGLVolumeMapper(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkOpenGLVolumeMapper');\n\n publicAPI.buildPass = () => {\n model.zBufferTexture = null;\n };\n\n // ohh someone is doing a zbuffer pass, use that for\n // intermixed volume rendering\n publicAPI.opaqueZBufferPass = (prepass, renderPass) => {\n if (prepass) {\n const zbt = renderPass.getZBufferTexture();\n if (zbt !== model.zBufferTexture) {\n model.zBufferTexture = zbt;\n }\n }\n };\n\n // Renders myself\n publicAPI.volumePass = (prepass, renderPass) => {\n if (prepass) {\n model.openGLRenderWindow = publicAPI.getFirstAncestorOfType(\n 'vtkOpenGLRenderWindow'\n );\n model.context = model.openGLRenderWindow.getContext();\n model.tris.setOpenGLRenderWindow(model.openGLRenderWindow);\n model.scalarTexture.setOpenGLRenderWindow(model.openGLRenderWindow);\n model.colorTexture.setOpenGLRenderWindow(model.openGLRenderWindow);\n model.opacityTexture.setOpenGLRenderWindow(model.openGLRenderWindow);\n model.lightingTexture.setOpenGLRenderWindow(model.openGLRenderWindow);\n model.jitterTexture.setOpenGLRenderWindow(model.openGLRenderWindow);\n model.framebuffer.setOpenGLRenderWindow(model.openGLRenderWindow);\n\n model.openGLVolume = publicAPI.getFirstAncestorOfType('vtkOpenGLVolume');\n const actor = model.openGLVolume.getRenderable();\n model.openGLRenderer = publicAPI.getFirstAncestorOfType(\n 'vtkOpenGLRenderer'\n );\n const ren = model.openGLRenderer.getRenderable();\n model.openGLCamera = model.openGLRenderer.getViewNodeFor(\n ren.getActiveCamera()\n );\n publicAPI.renderPiece(ren, actor);\n }\n };\n\n publicAPI.buildShaders = (shaders, ren, actor) => {\n publicAPI.getShaderTemplate(shaders, ren, actor);\n publicAPI.replaceShaderValues(shaders, ren, actor);\n };\n\n publicAPI.getShaderTemplate = (shaders, ren, actor) => {\n shaders.Vertex = vtkVolumeVS;\n if (model.openGLRenderWindow.getWebgl2()) {\n shaders.Fragment = vtkVolumeFS2;\n } else {\n shaders.Fragment = vtkVolumeFS;\n }\n shaders.Geometry = '';\n };\n\n publicAPI.replaceShaderValues = (shaders, ren, actor) => {\n let FSSource = shaders.Fragment;\n\n const iType = actor.getProperty().getInterpolationType();\n const gopacity =\n actor.getProperty().getUseGradientOpacity(0) &&\n model.lightingTexture.getComputedGradients();\n const volInfo = model.scalarTexture.getVolumeInfo();\n\n // WebGL2\n if (model.openGLRenderWindow.getWebgl2()) {\n // for lighting and gradient opacity we need the\n // normal texture\n if (gopacity || model.lastLightComplexity > 0) {\n FSSource = vtkShaderProgram.substitute(FSSource, '//VTK::Normal::Dec', [\n 'uniform highp sampler3D normalTexture;',\n ]).result;\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Normal::Impl',\n ['vec4 normal = texture(normalTexture, ijk);']\n ).result;\n }\n const ext = model.currentInput.getExtent();\n const spc = model.currentInput.getSpacing();\n const vsize = vec3.create();\n vec3.set(\n vsize,\n (ext[1] - ext[0]) * spc[0],\n (ext[3] - ext[2]) * spc[1],\n (ext[5] - ext[4]) * spc[2]\n );\n const maxSamples =\n vec3.length(vsize) / model.renderable.getSampleDistance();\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::MaximumSamplesValue',\n `${Math.ceil(maxSamples)}`\n ).result;\n } else {\n // WebGL1\n // compute the tcoords\n if (iType === InterpolationType.LINEAR) {\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::ComputeTCoords',\n [\n 'vec2 tpos = getTextureCoord(ijk, 0.0);',\n 'vec2 tpos2 = getTextureCoord(ijk, 1.0);',\n 'float zmix = ijk.z - floor(ijk.z);',\n ]\n ).result;\n } else {\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::ComputeTCoords',\n ['vec2 tpos = getTextureCoord(ijk, 0.5);']\n ).result;\n }\n\n // compute the scalar value\n if (iType === InterpolationType.LINEAR) {\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::ScalarFunction',\n [\n 'scalar = getScalarValue(tpos);',\n 'float scalar2 = getScalarValue(tpos2);',\n 'scalar = mix(scalar, scalar2, zmix);',\n ]\n ).result;\n } else {\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::ScalarFunction',\n ['scalar = getScalarValue(tpos);']\n ).result;\n }\n\n // for lighting and gradient opacity we need the\n // normal texture\n if (gopacity || model.lastLightComplexity > 0) {\n FSSource = vtkShaderProgram.substitute(FSSource, '//VTK::Normal::Dec', [\n 'uniform sampler2D normalTexture;',\n ]).result;\n if (iType === InterpolationType.LINEAR) {\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Normal::Impl',\n [\n 'vec4 normal = texture2D(normalTexture, tpos);',\n 'vec4 normal2 = texture2D(normalTexture, tpos2);',\n 'normal = mix(normal, normal2, zmix);',\n ]\n ).result;\n } else {\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Normal::Impl',\n ['vec4 normal = texture2D(normalTexture,tpos);']\n ).result;\n }\n }\n\n // if we had to encode the scalar values into\n // rgb then add the right call to decode them\n // otherwise the generic texture lookup\n if (volInfo.encodedScalars) {\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::ScalarValueFunction::Impl',\n [\n 'vec4 scalarComps = texture2D(texture1, tpos);',\n 'return scalarComps.r + scalarComps.g/255.0 + scalarComps.b/65025.0;',\n ]\n ).result;\n } else {\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::ScalarValueFunction::Impl',\n 'return texture2D(texture1, tpos).r;'\n ).result;\n }\n\n // WebGL only supports loops over constants\n // and does not support while loops so we\n // have to hard code how many steps/samples to take\n // We do a break so most systems will gracefully\n // early terminate, but it is always possible\n // a system will execute every step regardless\n\n const ext = model.currentInput.getExtent();\n const spc = model.currentInput.getSpacing();\n const vsize = vec3.create();\n vec3.set(\n vsize,\n (ext[1] - ext[0]) * spc[0],\n (ext[3] - ext[2]) * spc[1],\n (ext[5] - ext[4]) * spc[2]\n );\n const maxSamples =\n vec3.length(vsize) / model.renderable.getSampleDistance();\n\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::MaximumSamplesValue',\n `${Math.ceil(maxSamples)}`\n ).result;\n }\n\n // if using gradient opacity apply that\n if (gopacity) {\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::GradientOpacity::Dec',\n [\n 'uniform float goscale;',\n 'uniform float goshift;',\n 'uniform float gomin;',\n 'uniform float gomax;',\n ]\n ).result;\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::GradientOpacity::Impl',\n [\n 'tcolor.a = tcolor.a*clamp(normal.a*normal.a*goscale + goshift, gomin, gomax);',\n ]\n ).result;\n }\n\n // if we have a ztexture then declare it and use it\n if (model.zBufferTexture !== null) {\n FSSource = vtkShaderProgram.substitute(FSSource, '//VTK::ZBuffer::Dec', [\n 'uniform sampler2D zBufferTexture;',\n 'uniform float vpWidth;',\n 'uniform float vpHeight;',\n ]).result;\n FSSource = vtkShaderProgram.substitute(FSSource, '//VTK::ZBuffer::Impl', [\n 'vec4 depthVec = texture2D(zBufferTexture, vec2(gl_FragCoord.x / vpWidth, gl_FragCoord.y/vpHeight));',\n 'float zdepth = (depthVec.r*256.0 + depthVec.g)/257.0;',\n 'zdepth = zdepth * 2.0 - 1.0;',\n 'zdepth = -2.0 * camFar * camNear / (zdepth*(camFar-camNear)-(camFar+camNear)) - camNear;',\n 'zdepth = -zdepth/rayDir.z;',\n 'tbounds.y = min(zdepth,tbounds.y);',\n ]).result;\n }\n\n shaders.Fragment = FSSource;\n\n publicAPI.replaceShaderLight(shaders, ren, actor);\n };\n\n publicAPI.replaceShaderLight = (shaders, ren, actor) => {\n let FSSource = shaders.Fragment;\n\n // check for shadow maps\n const shadowFactor = '';\n\n switch (model.lastLightComplexity) {\n default:\n case 0: // no lighting, tcolor is fine as is\n break;\n\n case 1: // headlight\n case 2: // light kit\n case 3: {\n // positional not implemented fallback to directional\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Light::Dec',\n [\n 'uniform float vSpecularPower;',\n 'uniform float vAmbient;',\n 'uniform float vDiffuse;',\n 'uniform float vSpecular;',\n '//VTK::Light::Dec',\n ],\n false\n ).result;\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Light::Impl',\n [\n ' normal.rgb = 2.0*(normal.rgb - 0.5);',\n ' vec3 diffuse = vec3(0.0, 0.0, 0.0);',\n ' vec3 specular = vec3(0.0, 0.0, 0.0);',\n ' //VTK::Light::Impl',\n ' tcolor.rgb = tcolor.rgb*(diffuse*vDiffuse + vAmbient) + specular*vSpecular;',\n ],\n false\n ).result;\n let lightNum = 0;\n ren.getLights().forEach((light) => {\n const status = light.getSwitch();\n if (status > 0) {\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Light::Dec',\n [\n // intensity weighted color\n `uniform vec3 lightColor${lightNum};`,\n `uniform vec3 lightDirectionWC${lightNum}; // normalized`,\n `uniform vec3 lightHalfAngleWC${lightNum}; // normalized`,\n '//VTK::Light::Dec',\n ],\n false\n ).result;\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Light::Impl',\n [\n // ` float df = max(0.0, dot(normal.rgb, -lightDirectionWC${lightNum}));`,\n ` float df = abs(dot(normal.rgb, -lightDirectionWC${lightNum}));`,\n ` diffuse += ((df${shadowFactor}) * lightColor${lightNum});`,\n // ' if (df > 0.0)',\n // ' {',\n // ` float sf = pow( max(0.0, dot(lightHalfAngleWC${lightNum},normal.rgb)), specularPower);`,\n ` float sf = pow( abs(dot(lightHalfAngleWC${lightNum},normal.rgb)), vSpecularPower);`,\n ` specular += ((sf${shadowFactor}) * lightColor${lightNum});`,\n // ' }',\n ' //VTK::Light::Impl',\n ],\n false\n ).result;\n lightNum++;\n }\n });\n }\n }\n\n shaders.Fragment = FSSource;\n };\n\n publicAPI.getNeedToRebuildShaders = (cellBO, ren, actor) => {\n // do we need lighting?\n let lightComplexity = 0;\n if (actor.getProperty().getShade()) {\n // consider the lighting complexity to determine which case applies\n // simple headlight, Light Kit, the whole feature set of VTK\n lightComplexity = 0;\n model.numberOfLights = 0;\n\n ren.getLights().forEach((light) => {\n const status = light.getSwitch();\n if (status > 0) {\n model.numberOfLights++;\n if (lightComplexity === 0) {\n lightComplexity = 1;\n }\n }\n\n if (\n lightComplexity === 1 &&\n (model.numberOfLights > 1 ||\n light.getIntensity() !== 1.0 ||\n !light.lightTypeIsHeadLight())\n ) {\n lightComplexity = 2;\n }\n if (lightComplexity < 3 && light.getPositional()) {\n lightComplexity = 3;\n }\n });\n }\n\n let needRebuild = false;\n if (model.lastLightComplexity !== lightComplexity) {\n model.lastLightComplexity = lightComplexity;\n needRebuild = true;\n }\n\n // has something changed that would require us to recreate the shader?\n if (\n cellBO.getProgram() === 0 ||\n needRebuild ||\n model.lastHaveSeenDepthRequest !== model.haveSeenDepthRequest ||\n !!model.lastZBufferTexture !== !!model.zBufferTexture ||\n cellBO.getShaderSourceTime().getMTime() < publicAPI.getMTime() ||\n cellBO.getShaderSourceTime().getMTime() < actor.getMTime() ||\n cellBO.getShaderSourceTime().getMTime() < model.renderable.getMTime() ||\n cellBO.getShaderSourceTime().getMTime() < model.currentInput.getMTime() ||\n cellBO.getShaderSourceTime().getMTime() <\n model.lightingTexture.getGradientsBuildTime().getMTime()\n ) {\n model.lastZBufferTexture = model.zBufferTexture;\n return true;\n }\n\n return false;\n };\n\n publicAPI.updateShaders = (cellBO, ren, actor) => {\n model.lastBoundBO = cellBO;\n\n // has something changed that would require us to recreate the shader?\n if (publicAPI.getNeedToRebuildShaders(cellBO, ren, actor)) {\n const shaders = { Vertex: null, Fragment: null, Geometry: null };\n\n publicAPI.buildShaders(shaders, ren, actor);\n\n // compile and bind the program if needed\n const newShader = model.openGLRenderWindow\n .getShaderCache()\n .readyShaderProgramArray(\n shaders.Vertex,\n shaders.Fragment,\n shaders.Geometry\n );\n\n // if the shader changed reinitialize the VAO\n if (newShader !== cellBO.getProgram()) {\n cellBO.setProgram(newShader);\n // reset the VAO as the shader has changed\n cellBO.getVAO().releaseGraphicsResources();\n }\n\n cellBO.getShaderSourceTime().modified();\n } else {\n model.openGLRenderWindow\n .getShaderCache()\n .readyShaderProgram(cellBO.getProgram());\n }\n\n cellBO.getVAO().bind();\n publicAPI.setMapperShaderParameters(cellBO, ren, actor);\n publicAPI.setCameraShaderParameters(cellBO, ren, actor);\n publicAPI.setPropertyShaderParameters(cellBO, ren, actor);\n };\n\n publicAPI.setMapperShaderParameters = (cellBO, ren, actor) => {\n // Now to update the VAO too, if necessary.\n const program = cellBO.getProgram();\n\n if (\n cellBO.getCABO().getElementCount() &&\n (model.VBOBuildTime.getMTime() >\n cellBO.getAttributeUpdateTime().getMTime() ||\n cellBO.getShaderSourceTime().getMTime() >\n cellBO.getAttributeUpdateTime().getMTime())\n ) {\n if (program.isAttributeUsed('vertexDC')) {\n if (\n !cellBO\n .getVAO()\n .addAttributeArray(\n program,\n cellBO.getCABO(),\n 'vertexDC',\n cellBO.getCABO().getVertexOffset(),\n cellBO.getCABO().getStride(),\n model.context.FLOAT,\n 3,\n model.context.FALSE\n )\n ) {\n vtkErrorMacro('Error setting vertexDC in shader VAO.');\n }\n }\n cellBO.getAttributeUpdateTime().modified();\n }\n\n program.setUniformi('texture1', model.scalarTexture.getTextureUnit());\n program.setUniformf('sampleDistance', model.renderable.getSampleDistance());\n\n // if we have a zbuffer texture then set it\n if (model.zBufferTexture !== null) {\n program.setUniformi(\n 'zBufferTexture',\n model.zBufferTexture.getTextureUnit()\n );\n const size = publicAPI.getRenderTargetSize();\n program.setUniformf('vpWidth', size[0]);\n program.setUniformf('vpHeight', size[1]);\n }\n };\n\n publicAPI.setCameraShaderParameters = (cellBO, ren, actor) => {\n // // [WMVD]C == {world, model, view, display} coordinates\n // // E.g., WCDC == world to display coordinate transformation\n const keyMats = model.openGLCamera.getKeyMatrices(ren);\n\n const program = cellBO.getProgram();\n\n const cam = model.openGLCamera.getRenderable();\n const crange = cam.getClippingRange();\n program.setUniformf('camThick', crange[1] - crange[0]);\n program.setUniformf('camNear', crange[0]);\n program.setUniformf('camFar', crange[1]);\n\n const bounds = model.currentInput.getBounds();\n const dims = model.currentInput.getDimensions();\n\n // compute the viewport bounds of the volume\n // we will only render those fragments.\n const pos = vec3.create();\n const dir = vec3.create();\n let dcxmin = 1.0;\n let dcxmax = -1.0;\n let dcymin = 1.0;\n let dcymax = -1.0;\n for (let i = 0; i < 8; ++i) {\n vec3.set(\n pos,\n bounds[i % 2],\n bounds[2 + Math.floor(i / 2) % 2],\n bounds[4 + Math.floor(i / 4)]\n );\n vec3.transformMat4(pos, pos, keyMats.wcvc);\n vec3.normalize(dir, pos);\n\n // now find the projection of this point onto a\n // nearZ distance plane. Since the camera is at 0,0,0\n // in VC the ray is just t*pos and\n // t is -nearZ/dir.z\n // intersection becomes pos.x/pos.z\n const t = -crange[0] / pos[2];\n vec3.scale(pos, dir, t);\n\n // now convert to DC\n vec3.transformMat4(pos, pos, keyMats.vcdc);\n\n dcxmin = Math.min(pos[0], dcxmin);\n dcxmax = Math.max(pos[0], dcxmax);\n dcymin = Math.min(pos[1], dcymin);\n dcymax = Math.max(pos[1], dcymax);\n }\n program.setUniformf('dcxmin', dcxmin);\n program.setUniformf('dcxmax', dcxmax);\n program.setUniformf('dcymin', dcymin);\n program.setUniformf('dcymax', dcymax);\n\n const ext = model.currentInput.getExtent();\n const spc = model.currentInput.getSpacing();\n const vsize = vec3.create();\n vec3.set(\n vsize,\n (ext[1] - ext[0]) * spc[0],\n (ext[3] - ext[2]) * spc[1],\n (ext[5] - ext[4]) * spc[2]\n );\n program.setUniform3f('vSize', vsize[0], vsize[1], vsize[2]);\n\n vec3.set(pos, ext[0], ext[2], ext[4]);\n model.currentInput.indexToWorldVec3(pos, pos);\n\n vec3.transformMat4(pos, pos, keyMats.wcvc);\n program.setUniform3f('vOriginVC', pos[0], pos[1], pos[2]);\n\n // apply the image directions\n const i2wmat4 = model.currentInput.getIndexToWorld();\n mat4.multiply(model.idxToView, keyMats.wcvc, i2wmat4);\n\n mat3.copy(model.idxNormalMatrix, model.currentInput.getDirection());\n mat3.multiply(\n model.idxNormalMatrix,\n keyMats.normalMatrix,\n model.idxNormalMatrix\n );\n\n const maxSamples =\n vec3.length(vsize) / model.renderable.getSampleDistance();\n if (maxSamples > model.renderable.getMaximumSamplesPerRay()) {\n vtkWarningMacro(`The number of steps required ${Math.ceil(\n maxSamples\n )} is larger than the\n specified maximum number of steps ${model.renderable.getMaximumSamplesPerRay()}.\n Please either change the\n volumeMapper sampleDistance or its maximum number of samples.`);\n }\n const vctoijk = vec3.create();\n if (model.openGLRenderWindow.getWebgl2()) {\n vec3.set(vctoijk, 1.0, 1.0, 1.0);\n } else {\n vec3.set(vctoijk, dims[0] - 1.0, dims[1] - 1.0, dims[2] - 1.0);\n }\n vec3.divide(vctoijk, vctoijk, vsize);\n program.setUniform3f('vVCToIJK', vctoijk[0], vctoijk[1], vctoijk[2]);\n\n if (!model.openGLRenderWindow.getWebgl2()) {\n const volInfo = model.scalarTexture.getVolumeInfo();\n program.setUniformf('texWidth', model.scalarTexture.getWidth());\n program.setUniformf('texHeight', model.scalarTexture.getHeight());\n program.setUniformi('xreps', volInfo.xreps);\n program.setUniformf('xstride', volInfo.xstride);\n program.setUniformf('ystride', volInfo.ystride);\n program.setUniformi('repWidth', volInfo.width);\n program.setUniformi('repHeight', volInfo.height);\n program.setUniformi('repDepth', dims[2]);\n }\n\n // map normals through normal matrix\n // then use a point on the plane to compute the distance\n const normal = vec3.create();\n const pos2 = vec3.create();\n for (let i = 0; i < 6; ++i) {\n switch (i) {\n default:\n case 0:\n vec3.set(normal, 1.0, 0.0, 0.0);\n vec3.set(pos2, ext[1], ext[3], ext[5]);\n break;\n case 1:\n vec3.set(normal, -1.0, 0.0, 0.0);\n vec3.set(pos2, ext[0], ext[2], ext[4]);\n break;\n case 2:\n vec3.set(normal, 0.0, 1.0, 0.0);\n vec3.set(pos2, ext[1], ext[3], ext[5]);\n break;\n case 3:\n vec3.set(normal, 0.0, -1.0, 0.0);\n vec3.set(pos2, ext[0], ext[2], ext[4]);\n break;\n case 4:\n vec3.set(normal, 0.0, 0.0, 1.0);\n vec3.set(pos2, ext[1], ext[3], ext[5]);\n break;\n case 5:\n vec3.set(normal, 0.0, 0.0, -1.0);\n vec3.set(pos2, ext[0], ext[2], ext[4]);\n break;\n }\n vec3.transformMat3(normal, normal, model.idxNormalMatrix);\n vec3.transformMat4(pos2, pos2, model.idxToView);\n const dist = -1.0 * vec3.dot(pos2, normal);\n\n // we have the plane in view coordinates\n // specify the planes in view coordinates\n program.setUniform3f(`vPlaneNormal${i}`, normal[0], normal[1], normal[2]);\n program.setUniformf(`vPlaneDistance${i}`, dist);\n }\n\n const dcvc = mat4.create();\n mat4.invert(dcvc, keyMats.vcdc);\n program.setUniformMatrix('DCVCMatrix', dcvc);\n\n // handle lighting values\n switch (model.lastLightComplexity) {\n default:\n case 0: // no lighting, tcolor is fine as is\n break;\n\n case 1: // headlight\n case 2: // light kit\n case 3: {\n // positional not implemented fallback to directional\n let lightNum = 0;\n const camDOP = cam.getDirectionOfProjection();\n const lightColor = [];\n ren.getLights().forEach((light) => {\n const status = light.getSwitch();\n if (status > 0) {\n const dColor = light.getColor();\n const intensity = light.getIntensity();\n lightColor[0] = dColor[0] * intensity;\n lightColor[1] = dColor[1] * intensity;\n lightColor[2] = dColor[2] * intensity;\n program.setUniform3fArray(`lightColor${lightNum}`, lightColor);\n const lightDir = light.getDirection();\n program.setUniform3fArray(`lightDirectionWC${lightNum}`, lightDir);\n const halfAngle = [\n -0.5 * (lightDir[0] + camDOP[0]),\n -0.5 * (lightDir[1] + camDOP[1]),\n -0.5 * (lightDir[2] + camDOP[2]),\n ];\n program.setUniform3fArray(`lightHalfAngleWC${lightNum}`, halfAngle);\n lightNum++;\n }\n });\n }\n }\n };\n\n publicAPI.setPropertyShaderParameters = (cellBO, ren, actor) => {\n const program = cellBO.getProgram();\n\n program.setUniformi('ctexture', model.colorTexture.getTextureUnit());\n program.setUniformi('otexture', model.opacityTexture.getTextureUnit());\n program.setUniformi('jtexture', model.jitterTexture.getTextureUnit());\n\n const volInfo = model.scalarTexture.getVolumeInfo();\n const sscale = volInfo.max - volInfo.min;\n\n const vprop = actor.getProperty();\n const ofun = vprop.getScalarOpacity(0);\n const oRange = ofun.getRange();\n program.setUniformf(\n 'oshift',\n (volInfo.min - oRange[0]) / (oRange[1] - oRange[0])\n );\n program.setUniformf('oscale', sscale / (oRange[1] - oRange[0]));\n\n const cfun = vprop.getRGBTransferFunction(0);\n const cRange = cfun.getRange();\n program.setUniformf(\n 'cshift',\n (volInfo.min - cRange[0]) / (cRange[1] - cRange[0])\n );\n program.setUniformf('cscale', sscale / (cRange[1] - cRange[0]));\n\n const computedGradients = model.lightingTexture.getComputedGradients();\n if (vprop.getUseGradientOpacity(0) && computedGradients) {\n const lightingInfo = model.lightingTexture.getVolumeInfo();\n const gomin = vprop.getGradientOpacityMinimumOpacity(0);\n const gomax = vprop.getGradientOpacityMaximumOpacity(0);\n program.setUniformf('gomin', gomin);\n program.setUniformf('gomax', gomax);\n const goRange = [\n vprop.getGradientOpacityMinimumValue(0),\n vprop.getGradientOpacityMaximumValue(0),\n ];\n program.setUniformf(\n 'goscale',\n lightingInfo.max * (gomax - gomin) / (goRange[1] - goRange[0])\n );\n program.setUniformf(\n 'goshift',\n -goRange[0] * (gomax - gomin) / (goRange[1] - goRange[0]) + gomin\n );\n }\n\n if (\n (model.lastLightComplexity > 0 || vprop.getUseGradientOpacity(0)) &&\n computedGradients\n ) {\n program.setUniformi(\n 'normalTexture',\n model.lightingTexture.getTextureUnit()\n );\n }\n\n if (model.lastLightComplexity > 0) {\n program.setUniformf('vAmbient', vprop.getAmbient());\n program.setUniformf('vDiffuse', vprop.getDiffuse());\n program.setUniformf('vSpecular', vprop.getSpecular());\n program.setUniformf('vSpecularPower', vprop.getSpecularPower());\n }\n };\n\n publicAPI.getRenderTargetSize = () => {\n if (model.lastXYF > 1.43) {\n const sz = model.framebuffer.getSize();\n return [model.fvp[0] * sz[0], model.fvp[1] * sz[1]];\n }\n return model.openGLRenderWindow.getFramebufferSize();\n };\n\n publicAPI.renderPieceStart = (ren, actor) => {\n if (model.renderable.getAutoAdjustSampleDistances()) {\n const rwi = ren.getVTKWindow().getInteractor();\n const rft = rwi.getLastFrameTime();\n // console.log(`last frame time ${Math.floor(1.0 / rft)}`);\n\n // frame time is typically for a couple frames prior\n // which makes it messy, so keep long running averages\n // of frame times and pixels rendered\n model.avgFrameTime = 0.97 * model.avgFrameTime + 0.03 * rft;\n model.avgWindowArea =\n 0.97 * model.avgWindowArea + 0.03 / (model.lastXYF * model.lastXYF);\n\n if (\n ren\n .getVTKWindow()\n .getInteractor()\n .isAnimating()\n ) {\n // compute target xy factor\n let txyf = Math.sqrt(\n model.avgFrameTime * rwi.getDesiredUpdateRate() / model.avgWindowArea\n );\n\n // limit subsampling to a factor of 10\n if (txyf > 10.0) {\n txyf = 10.0;\n }\n\n model.targetXYF = txyf;\n } else {\n model.targetXYF = Math.sqrt(\n model.avgFrameTime * rwi.getStillUpdateRate() / model.avgWindowArea\n );\n }\n\n // have some inertia to change states around 1.43\n if (model.targetXYF < 1.53 && model.targetXYF > 1.33) {\n model.targetXYF = model.lastXYF;\n }\n\n // and add some inertia to change at all\n if (Math.abs(1.0 - model.targetXYF / model.lastXYF) < 0.1) {\n model.targetXYF = model.lastXYF;\n }\n model.lastXYF = model.targetXYF;\n } else {\n model.lastXYF = model.renderable.getImageSampleDistance();\n }\n\n // only use FBO beyond this value\n if (model.lastXYF <= 1.43) {\n model.lastXYF = 1.0;\n }\n\n // console.log(`last target ${model.lastXYF} ${model.targetXYF}`);\n // console.log(`awin aft ${model.avgWindowArea} ${model.avgFrameTime}`);\n const xyf = model.lastXYF;\n\n const size = model.openGLRenderWindow.getFramebufferSize();\n // const newSize = [\n // Math.floor((size[0] / xyf) + 0.5),\n // Math.floor((size[1] / xyf) + 0.5)];\n\n // const diag = vtkBoundingBox.getDiagonalLength(model.currentInput.getBounds());\n\n // // so what is the resulting sample size roughly\n // console.log(`sam size ${diag / newSize[0]} ${diag / newSize[1]} ${model.renderable.getImageSampleDistance()}`);\n\n // // if the sample distance is getting far from the image sample dist\n // if (2.0 * diag / (newSize[0] + newSize[1]) > 4 * model.renderable.getSampleDistance()) {\n // model.renderable.setSampleDistance(4.0 * model.renderable.getSampleDistance());\n // }\n // if (2.0 * diag / (newSize[0] + newSize[1]) < 0.25 * model.renderable.getSampleDistance()) {\n // model.renderable.setSampleDistance(0.25 * model.renderable.getSampleDistance());\n // }\n\n // create/resize framebuffer if needed\n if (xyf > 1.43) {\n model.framebuffer.saveCurrentBindingsAndBuffers();\n\n if (model.framebuffer.getGLFramebuffer() === null) {\n model.framebuffer.create(\n Math.floor(size[0] * 0.7),\n Math.floor(size[1] * 0.7)\n );\n model.framebuffer.populateFramebuffer();\n } else {\n const fbSize = model.framebuffer.getSize();\n if (\n fbSize[0] !== Math.floor(size[0] * 0.7) ||\n fbSize[1] !== Math.floor(size[1] * 0.7)\n ) {\n console.log('resizing');\n model.framebuffer.create(\n Math.floor(size[0] * 0.7),\n Math.floor(size[1] * 0.7)\n );\n model.framebuffer.populateFramebuffer();\n }\n }\n model.framebuffer.bind();\n const gl = model.context;\n gl.clearColor(0.0, 0.0, 0.0, 0.0);\n gl.colorMask(true, true, true, true);\n gl.clear(gl.COLOR_BUFFER_BIT);\n gl.viewport(0, 0, size[0] / xyf, size[1] / xyf);\n model.fvp = [\n Math.floor(size[0] / xyf) / Math.floor(size[0] * 0.7),\n Math.floor(size[1] / xyf) / Math.floor(size[1] * 0.7),\n ];\n }\n model.context.disable(model.context.DEPTH_TEST);\n\n // make sure the BOs are up to date\n publicAPI.updateBufferObjects(ren, actor);\n\n // set interpolation on the texture based on property setting\n const iType = actor.getProperty().getInterpolationType();\n if (iType === InterpolationType.NEAREST) {\n model.scalarTexture.setMinificationFilter(Filter.NEAREST);\n model.scalarTexture.setMagnificationFilter(Filter.NEAREST);\n model.lightingTexture.setMinificationFilter(Filter.NEAREST);\n model.lightingTexture.setMagnificationFilter(Filter.NEAREST);\n } else {\n model.scalarTexture.setMinificationFilter(Filter.LINEAR);\n model.scalarTexture.setMagnificationFilter(Filter.LINEAR);\n model.lightingTexture.setMinificationFilter(Filter.LINEAR);\n model.lightingTexture.setMagnificationFilter(Filter.LINEAR);\n }\n\n // Bind the OpenGL, this is shared between the different primitive/cell types.\n model.lastBoundBO = null;\n\n // if we have a zbuffer texture then activate it\n if (model.zBufferTexture !== null) {\n model.zBufferTexture.activate();\n }\n };\n\n let computedGradientsRenderTimeout = null;\n let lightingActivatedInvoked = false;\n publicAPI.renderPieceDraw = (ren, actor) => {\n const gl = model.context;\n\n // render the texture\n model.scalarTexture.activate();\n model.opacityTexture.activate();\n model.colorTexture.activate();\n model.jitterTexture.activate();\n if (\n actor.getProperty().getShade() ||\n actor.getProperty().getUseGradientOpacity(0)\n ) {\n // Only activate once volumeInfo has been populated.\n if (model.lightingTexture.getComputedGradients()) {\n model.lightingTexture.activate();\n if (!lightingActivatedInvoked) {\n // Break recursion\n lightingActivatedInvoked = true;\n model.renderable.invokeLightingActivated();\n }\n } else {\n // We wanted to render, but the gradients have not finished computing.\n // So, re-render later.\n if (computedGradientsRenderTimeout !== null) {\n clearTimeout(computedGradientsRenderTimeout);\n }\n computedGradientsRenderTimeout = setTimeout(() => {\n model.openGLRenderWindow.modified();\n }, 20);\n lightingActivatedInvoked = false;\n }\n }\n\n publicAPI.updateShaders(model.tris, ren, actor);\n\n // First we do the triangles, update the shader, set uniforms, etc.\n // for (let i = 0; i < 11; ++i) {\n // gl.drawArrays(gl.TRIANGLES, 66 * i, 66);\n // }\n gl.drawArrays(gl.TRIANGLES, 0, model.tris.getCABO().getElementCount());\n model.tris.getVAO().release();\n\n model.scalarTexture.deactivate();\n model.colorTexture.deactivate();\n model.opacityTexture.deactivate();\n model.jitterTexture.deactivate();\n if (\n actor.getProperty().getShade() ||\n actor.getProperty().getUseGradientOpacity(0)\n ) {\n model.lightingTexture.deactivate();\n }\n };\n\n publicAPI.renderPieceFinish = (ren, actor) => {\n // if we have a zbuffer texture then deactivate it\n if (model.zBufferTexture !== null) {\n model.zBufferTexture.deactivate();\n }\n\n if (model.lastXYF > 1.43) {\n // now copy the frambuffer with the volume into the\n // regular buffer\n model.framebuffer.restorePreviousBindingsAndBuffers();\n\n if (model.copyShader === null) {\n model.copyShader = model.openGLRenderWindow\n .getShaderCache()\n .readyShaderProgramArray(\n [\n '//VTK::System::Dec',\n 'attribute vec4 vertexDC;',\n 'uniform vec2 tfactor;',\n 'varying vec2 tcoord;',\n 'void main() { tcoord = vec2(vertexDC.x*0.5 + 0.5, vertexDC.y*0.5 + 0.5) * tfactor; gl_Position = vertexDC; }',\n ].join('\\n'),\n [\n '//VTK::System::Dec',\n '//VTK::Output::Dec',\n 'uniform sampler2D texture1;',\n 'varying vec2 tcoord;',\n 'void main() { gl_FragData[0] = texture2D(texture1,tcoord); }',\n ].join('\\n'),\n ''\n );\n const program = model.copyShader;\n\n model.copyVAO = vtkVertexArrayObject.newInstance();\n model.copyVAO.setOpenGLRenderWindow(model.openGLRenderWindow);\n\n model.tris.getCABO().bind();\n if (\n !model.copyVAO.addAttributeArray(\n program,\n model.tris.getCABO(),\n 'vertexDC',\n model.tris.getCABO().getVertexOffset(),\n model.tris.getCABO().getStride(),\n model.context.FLOAT,\n 3,\n model.context.FALSE\n )\n ) {\n vtkErrorMacro('Error setting vertexDC in copy shader VAO.');\n }\n } else {\n model.openGLRenderWindow\n .getShaderCache()\n .readyShaderProgram(model.copyShader);\n }\n\n const size = model.openGLRenderWindow.getFramebufferSize();\n model.context.viewport(0, 0, size[0], size[1]);\n\n // activate texture\n const tex = model.framebuffer.getColorTexture();\n tex.activate();\n model.copyShader.setUniformi('texture', tex.getTextureUnit());\n\n model.copyShader.setUniform2f('tfactor', model.fvp[0], model.fvp[1]);\n\n const gl = model.context;\n gl.blendFuncSeparate(\n gl.ONE,\n gl.ONE_MINUS_SRC_ALPHA,\n gl.ONE,\n gl.ONE_MINUS_SRC_ALPHA\n );\n\n // render quad\n model.context.drawArrays(\n model.context.TRIANGLES,\n 0,\n model.tris.getCABO().getElementCount()\n );\n tex.deactivate();\n\n gl.blendFuncSeparate(\n gl.SRC_ALPHA,\n gl.ONE_MINUS_SRC_ALPHA,\n gl.ONE,\n gl.ONE_MINUS_SRC_ALPHA\n );\n }\n };\n\n publicAPI.renderPiece = (ren, actor) => {\n publicAPI.invokeEvent({ type: 'StartEvent' });\n model.renderable.update();\n model.currentInput = model.renderable.getInputData();\n publicAPI.invokeEvent({ type: 'EndEvent' });\n\n if (!model.currentInput) {\n vtkErrorMacro('No input!');\n return;\n }\n\n publicAPI.renderPieceStart(ren, actor);\n publicAPI.renderPieceDraw(ren, actor);\n publicAPI.renderPieceFinish(ren, actor);\n };\n\n publicAPI.computeBounds = (ren, actor) => {\n if (!publicAPI.getInput()) {\n vtkMath.uninitializeBounds(model.Bounds);\n return;\n }\n model.bounnds = publicAPI.getInput().getBounds();\n };\n\n publicAPI.updateBufferObjects = (ren, actor) => {\n // Rebuild buffers if needed\n if (publicAPI.getNeedToRebuildBufferObjects(ren, actor)) {\n publicAPI.buildBufferObjects(ren, actor);\n }\n };\n\n publicAPI.getNeedToRebuildBufferObjects = (ren, actor) => {\n // first do a coarse check\n if (\n model.VBOBuildTime.getMTime() < publicAPI.getMTime() ||\n model.VBOBuildTime.getMTime() < actor.getMTime() ||\n model.VBOBuildTime.getMTime() < model.renderable.getMTime() ||\n model.VBOBuildTime.getMTime() < actor.getProperty().getMTime() ||\n model.VBOBuildTime.getMTime() < model.currentInput.getMTime()\n ) {\n return true;\n }\n return false;\n };\n\n publicAPI.buildBufferObjects = (ren, actor) => {\n const image = model.currentInput;\n\n if (image === null) {\n return;\n }\n\n const vprop = actor.getProperty();\n\n if (!model.jitterTexture.getHandle()) {\n const oTable = new Uint8Array(32 * 32);\n for (let i = 0; i < 32 * 32; ++i) {\n oTable[i] = 255.0 * Math.random();\n }\n model.jitterTexture.setMinificationFilter(Filter.LINEAR);\n model.jitterTexture.setMagnificationFilter(Filter.LINEAR);\n model.jitterTexture.create2DFromRaw(\n 32,\n 32,\n 1,\n VtkDataTypes.UNSIGNED_CHAR,\n oTable\n );\n }\n\n // rebuild opacity tfun?\n const ofun = vprop.getScalarOpacity(0);\n const opacityFactor =\n model.renderable.getSampleDistance() /\n vprop.getScalarOpacityUnitDistance(0);\n let toString = `${ofun.getMTime()}A${opacityFactor}`;\n if (model.opacityTextureString !== toString) {\n const oRange = ofun.getRange();\n const oWidth = 1024;\n const ofTable = new Float32Array(oWidth);\n ofun.getTable(oRange[0], oRange[1], oWidth, ofTable, 1);\n const oTable = new Uint8Array(oWidth);\n for (let i = 0; i < oWidth; ++i) {\n oTable[i] = 255.0 * (1.0 - (1.0 - ofTable[i]) ** opacityFactor);\n }\n model.opacityTexture.setMinificationFilter(Filter.LINEAR);\n model.opacityTexture.setMagnificationFilter(Filter.LINEAR);\n model.opacityTexture.create2DFromRaw(\n oWidth,\n 1,\n 1,\n VtkDataTypes.UNSIGNED_CHAR,\n oTable\n );\n model.opacityTextureString = toString;\n }\n\n // rebuild color tfun?\n const cfun = vprop.getRGBTransferFunction(0);\n toString = `${cfun.getMTime()}`;\n if (model.colorTextureString !== toString) {\n const cRange = cfun.getRange();\n const cWidth = 1024;\n const cfTable = new Float32Array(cWidth * 3);\n cfun.getTable(cRange[0], cRange[1], cWidth, cfTable, 1);\n const cTable = new Uint8Array(cWidth * 3);\n for (let i = 0; i < cWidth * 3; ++i) {\n cTable[i] = 255.0 * cfTable[i];\n }\n model.colorTexture.setMinificationFilter(Filter.LINEAR);\n model.colorTexture.setMagnificationFilter(Filter.LINEAR);\n model.colorTexture.create2DFromRaw(\n cWidth,\n 1,\n 3,\n VtkDataTypes.UNSIGNED_CHAR,\n cTable\n );\n model.colorTextureString = toString;\n }\n\n // rebuild the scalarTexture if the data has changed\n toString = `${image.getMTime()}`;\n if (model.scalarTextureString !== toString) {\n // Build the textures\n const dims = image.getDimensions();\n model.scalarTexture.resetFormatAndType();\n model.scalarTexture.create3DOneComponentFromRaw(\n dims[0],\n dims[1],\n dims[2],\n image\n .getPointData()\n .getScalars()\n .getDataType(),\n image\n .getPointData()\n .getScalars()\n .getData()\n );\n model.scalarTextureString = toString;\n }\n\n // rebuild lighting texture\n const shading = vprop.getShade();\n const gopacity = vprop.getUseGradientOpacity(0);\n // rebuild the lightingTexture if the data has changed\n toString = `${image.getMTime()}`;\n if ((shading || gopacity) && model.lightingTextureString !== toString) {\n model.lightingTexture.resetFormatAndType();\n model.lightingTexture.create3DLighting(\n model.scalarTexture,\n image\n .getPointData()\n .getScalars()\n .getData(),\n image.getSpacing()\n );\n model.lightingTextureString = toString;\n }\n\n if (!model.tris.getCABO().getElementCount()) {\n // build the CABO\n const ptsArray = new Float32Array(12);\n for (let i = 0; i < 4; i++) {\n ptsArray[i * 3] = (i % 2) * 2 - 1.0;\n ptsArray[i * 3 + 1] = i > 1 ? 1.0 : -1.0;\n ptsArray[i * 3 + 2] = -1.0;\n }\n\n const cellArray = new Uint16Array(8);\n cellArray[0] = 3;\n cellArray[1] = 0;\n cellArray[2] = 1;\n cellArray[3] = 3;\n cellArray[4] = 3;\n cellArray[5] = 0;\n cellArray[6] = 3;\n cellArray[7] = 2;\n\n // const dim = 12.0;\n // const ptsArray = new Float32Array(3 * dim * dim);\n // for (let i = 0; i < dim; i++) {\n // for (let j = 0; j < dim; j++) {\n // const offset = ((i * dim) + j) * 3;\n // ptsArray[offset] = (2.0 * (i / (dim - 1.0))) - 1.0;\n // ptsArray[offset + 1] = (2.0 * (j / (dim - 1.0))) - 1.0;\n // ptsArray[offset + 2] = -1.0;\n // }\n // }\n\n // const cellArray = new Uint16Array(8 * (dim - 1) * (dim - 1));\n // for (let i = 0; i < dim - 1; i++) {\n // for (let j = 0; j < dim - 1; j++) {\n // const offset = 8 * ((i * (dim - 1)) + j);\n // cellArray[offset] = 3;\n // cellArray[offset + 1] = (i * dim) + j;\n // cellArray[offset + 2] = (i * dim) + 1 + j;\n // cellArray[offset + 3] = ((i + 1) * dim) + 1 + j;\n // cellArray[offset + 4] = 3;\n // cellArray[offset + 5] = (i * dim) + j;\n // cellArray[offset + 6] = ((i + 1) * dim) + 1 + j;\n // cellArray[offset + 7] = ((i + 1) * dim) + j;\n // }\n // }\n\n const points = vtkDataArray.newInstance({\n numberOfComponents: 3,\n values: ptsArray,\n });\n points.setName('points');\n const cells = vtkDataArray.newInstance({\n numberOfComponents: 1,\n values: cellArray,\n });\n model.tris.getCABO().createVBO(cells, 'polys', Representation.SURFACE, {\n points,\n cellOffset: 0,\n });\n }\n\n model.VBOBuildTime.modified();\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n context: null,\n VBOBuildTime: null,\n scalarTexture: null,\n scalarTextureString: null,\n opacityTexture: null,\n opacityTextureString: null,\n colorTexture: null,\n colortextureString: null,\n lightingTexture: null,\n lightingTextureString: null,\n jitterTexture: null,\n tris: null,\n framebuffer: null,\n copyShader: null,\n copyVAO: null,\n lastXYF: 1.0,\n targetXYF: 1.0,\n zBufferTexture: null,\n lastZBufferTexture: null,\n lastLightComplexity: 0,\n fullViewportTime: 1.0,\n idxToView: null,\n idxNormalMatrix: null,\n avgWindowArea: 0.0,\n avgFrameTime: 0.0,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkViewNode.extend(publicAPI, model, initialValues);\n\n model.VBOBuildTime = {};\n macro.obj(model.VBOBuildTime, { mtime: 0 });\n\n model.tris = vtkHelper.newInstance();\n model.scalarTexture = vtkOpenGLTexture.newInstance();\n model.opacityTexture = vtkOpenGLTexture.newInstance();\n model.colorTexture = vtkOpenGLTexture.newInstance();\n model.lightingTexture = vtkOpenGLTexture.newInstance();\n model.jitterTexture = vtkOpenGLTexture.newInstance();\n model.jitterTexture.setWrapS(Wrap.REPEAT);\n model.jitterTexture.setWrapT(Wrap.REPEAT);\n model.framebuffer = vtkOpenGLFramebuffer.newInstance();\n\n model.idxToView = mat4.create();\n model.idxNormalMatrix = mat3.create();\n\n // Build VTK API\n macro.setGet(publicAPI, model, ['context']);\n\n // Object methods\n vtkOpenGLVolumeMapper(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkOpenGLVolumeMapper');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/OpenGL/VolumeMapper/index.js","export const InterpolationType = {\n NEAREST: 0,\n LINEAR: 1,\n FAST_LINEAR: 2,\n};\n\nexport default {\n InterpolationType,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/Core/VolumeProperty/Constants.js","module.exports = \"//VTK::System::Dec\\n\\n/*=========================================================================\\n\\n Program: Visualization Toolkit\\n Module: vtkPolyDataVS.glsl\\n\\n Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen\\n All rights reserved.\\n See Copyright.txt or http://www.kitware.com/Copyright.htm for details.\\n\\n This software is distributed WITHOUT ANY WARRANTY; without even\\n the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR\\n PURPOSE. See the above copyright notice for more information.\\n\\n=========================================================================*/\\n\\nattribute vec4 vertexDC;\\n\\nvarying vec3 vertexVCVSOutput;\\nuniform mat4 DCVCMatrix;\\n\\nuniform float dcxmin;\\nuniform float dcxmax;\\nuniform float dcymin;\\nuniform float dcymax;\\n\\nvoid main()\\n{\\n // dcsmall is the device coords reduced to the\\n // x y area covered by the volume\\n vec4 dcsmall = vec4(\\n dcxmin + 0.5 * (vertexDC.x + 1.0) * (dcxmax - dcxmin),\\n dcymin + 0.5 * (vertexDC.y + 1.0) * (dcymax - dcymin),\\n vertexDC.z,\\n vertexDC.w);\\n vec4 vcpos = DCVCMatrix * dcsmall;\\n vertexVCVSOutput = vcpos.xyz/vcpos.w;\\n gl_Position = dcsmall;\\n}\\n\"\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/OpenGL/glsl/vtkVolumeVS.glsl","module.exports = \"//VTK::System::Dec\\n\\n/*=========================================================================\\n\\n Program: Visualization Toolkit\\n Module: vtkPolyDataFS.glsl\\n\\n Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen\\n All rights reserved.\\n See Copyright.txt or http://www.kitware.com/Copyright.htm for details.\\n\\n This software is distributed WITHOUT ANY WARRANTY; without even\\n the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR\\n PURPOSE. See the above copyright notice for more information.\\n\\n=========================================================================*/\\n// Template for the polydata mappers fragment shader\\n\\n// the output of this shader\\n//VTK::Output::Dec\\n\\nvarying vec3 vertexVCVSOutput;\\n\\n// camera values\\nuniform float camThick;\\nuniform float camNear;\\nuniform float camFar;\\n\\n// values describing the volume geometry\\nuniform vec3 vOriginVC;\\nuniform vec3 vSize;\\nuniform vec3 vPlaneNormal0;\\nuniform float vPlaneDistance0;\\nuniform vec3 vPlaneNormal1;\\nuniform float vPlaneDistance1;\\nuniform vec3 vPlaneNormal2;\\nuniform float vPlaneDistance2;\\nuniform vec3 vPlaneNormal3;\\nuniform float vPlaneDistance3;\\nuniform vec3 vPlaneNormal4;\\nuniform float vPlaneDistance4;\\nuniform vec3 vPlaneNormal5;\\nuniform float vPlaneDistance5;\\n\\n// opacity and color textures\\nuniform sampler2D otexture;\\nuniform float oshift;\\nuniform float oscale;\\nuniform sampler2D ctexture;\\nuniform float cshift;\\nuniform float cscale;\\n\\n// jitter texture\\nuniform sampler2D jtexture;\\n\\n// some 3D texture values\\nuniform sampler2D texture1;\\nuniform float sampleDistance;\\nuniform vec3 vVCToIJK;\\nuniform float texWidth;\\nuniform float texHeight;\\nuniform int xreps;\\nuniform float xstride;\\nuniform float ystride;\\nuniform int repWidth;\\nuniform int repHeight;\\nuniform int repDepth;\\n\\n// declaration for intermixed geometry\\n//VTK::ZBuffer::Dec\\n\\n// Lighting values\\n//VTK::Light::Dec\\n\\n// normal calc\\n//VTK::Normal::Dec\\n\\n// gradient opacity\\n//VTK::GradientOpacity::Dec\\n\\nvec2 getTextureCoord(vec3 ijk, float offset)\\n{\\n // uncomment the following line to see the packed texture\\n // return vec2(ijk.x/float(repWidth), ijk.y/float(repHeight));\\n int z = int(ijk.z + offset);\\n int yz = z / xreps;\\n int xz = z - yz*xreps;\\n\\n float ni = (ijk.x + float(xz * repWidth))/xstride;\\n float nj = (ijk.y + float(yz * repHeight))/ystride;\\n\\n vec2 tpos = vec2(ni/texWidth, nj/texHeight);\\n\\n return tpos;\\n}\\n\\n// because scalars may be encoded\\n// this func will decode them as needed\\nfloat getScalarValue(vec2 tpos)\\n{\\n //VTK::ScalarValueFunction::Impl\\n}\\n\\nvec2 getRayPointIntersectionBounds(\\n vec3 rayPos, vec3 rayDir,\\n vec3 planeDir, float planeDist,\\n vec2 tbounds, vec3 vPlaneX, vec3 vPlaneY,\\n float vSize1, float vSize2)\\n{\\n float result = dot(rayDir, planeDir);\\n if (result == 0.0)\\n {\\n return tbounds;\\n }\\n result = -1.0 * (dot(rayPos, planeDir) + planeDist) / result;\\n vec3 xposVC = rayPos + rayDir*result;\\n vec3 vxpos = xposVC - vOriginVC;\\n vec2 vpos = vec2(\\n dot(vxpos, vPlaneX),\\n dot(vxpos, vPlaneY));\\n\\n // on some apple nvidia systems this does not work\\n // if (vpos.x < 0.0 || vpos.x > vSize1 ||\\n // vpos.y < 0.0 || vpos.y > vSize2)\\n // even just\\n // if (vpos.x < 0.0 || vpos.y < 0.0)\\n // fails\\n // so instead we compute a value that represents in and out\\n //and then compute the return using this value\\n float xcheck = max(0.0, vpos.x * (vpos.x - vSize1)); // 0 means in bounds\\n float check = sign(max(xcheck, vpos.y * (vpos.y - vSize2))); // 0 means in bounds, 1 = out\\n\\n return mix(\\n vec2(min(tbounds.x, result), max(tbounds.y, result)), // in value\\n tbounds, // out value\\n check); // 0 in 1 out\\n}\\n\\nvoid main()\\n{\\n float scalar;\\n vec4 scalarComps;\\n\\n // camera is at 0,0,0 so rayDir for perspective is just the vc coord\\n vec3 rayDir = normalize(vertexVCVSOutput);\\n vec2 tbounds = vec2(100.0*camFar, -1.0);\\n\\n // all this is in View Coordinates\\n tbounds = getRayPointIntersectionBounds(vertexVCVSOutput, rayDir,\\n vPlaneNormal0, vPlaneDistance0, tbounds, vPlaneNormal2, vPlaneNormal4,\\n vSize.y, vSize.z);\\n tbounds = getRayPointIntersectionBounds(vertexVCVSOutput, rayDir,\\n vPlaneNormal1, vPlaneDistance1, tbounds, vPlaneNormal2, vPlaneNormal4,\\n vSize.y, vSize.z);\\n tbounds = getRayPointIntersectionBounds(vertexVCVSOutput, rayDir,\\n vPlaneNormal2, vPlaneDistance2, tbounds, vPlaneNormal0, vPlaneNormal4,\\n vSize.x, vSize.z);\\n tbounds = getRayPointIntersectionBounds(vertexVCVSOutput, rayDir,\\n vPlaneNormal3, vPlaneDistance3, tbounds, vPlaneNormal0, vPlaneNormal4,\\n vSize.x, vSize.z);\\n tbounds = getRayPointIntersectionBounds(vertexVCVSOutput, rayDir,\\n vPlaneNormal4, vPlaneDistance4, tbounds, vPlaneNormal0, vPlaneNormal2,\\n vSize.x, vSize.y);\\n tbounds = getRayPointIntersectionBounds(vertexVCVSOutput, rayDir,\\n vPlaneNormal5, vPlaneDistance5, tbounds, vPlaneNormal0, vPlaneNormal2,\\n vSize.x, vSize.y);\\n\\n // do not go behind front clipping plane\\n tbounds.x = max(0.0,tbounds.x);\\n\\n // do not go PAST far clipping plane\\n float farDist = -camThick/rayDir.z;\\n tbounds.y = min(farDist,tbounds.y);\\n\\n // Do not go past the zbuffer value if set\\n // This is used for intermixing opaque geometry\\n //VTK::ZBuffer::Impl\\n\\n // do we need to composite?\\n if (tbounds.y > tbounds.x)\\n {\\n // compute starting and ending values in volume space\\n vec3 startVC = vertexVCVSOutput + tbounds.x*rayDir;\\n startVC = startVC - vOriginVC;\\n\\n // vpos and endvpos are in VolumeCoords not Index yet\\n vec3 vpos = vec3(\\n dot(startVC, vPlaneNormal0),\\n dot(startVC, vPlaneNormal2),\\n dot(startVC, vPlaneNormal4));\\n vec3 endVC = vertexVCVSOutput + tbounds.y*rayDir;\\n endVC = endVC - vOriginVC;\\n vec3 endvpos = vec3(\\n dot(endVC, vPlaneNormal0),\\n dot(endVC, vPlaneNormal2),\\n dot(endVC, vPlaneNormal4));\\n\\n // start slightly inside and apply some jitter\\n float jitter = texture2D(jtexture, gl_FragCoord.xy/32.0).r;\\n vec3 vdelta = endvpos - vpos;\\n vpos = vpos + normalize(vdelta)*(0.01 + 0.98*jitter)*sampleDistance;\\n\\n // update vdelta post jitter\\n vdelta = endvpos - vpos;\\n float numSteps = length(vdelta) / sampleDistance;\\n vdelta = vdelta / float(numSteps);\\n\\n vec4 color = vec4(0.0, 0.0, 0.0, 0.0);\\n int count = int(numSteps - 0.05); // end slightly inside\\n\\n vec3 ijk = vpos * vVCToIJK;\\n vdelta = vdelta * vVCToIJK;\\n for (int i = 0; i < //VTK::MaximumSamplesValue ; ++i)\\n {\\n // compute the 2d texture coordinate/s\\n //VTK::ComputeTCoords\\n\\n // compute the scalar\\n //VTK::ScalarFunction\\n\\n // now map through opacity and color\\n vec4 tcolor = texture2D(ctexture, vec2(scalar * cscale + cshift, 0.5));\\n tcolor.a = texture2D(otexture, vec2(scalar * oscale + oshift, 0.5)).r;\\n\\n // compute the normal if needed\\n //VTK::Normal::Impl\\n\\n // handle gradient opacity\\n //VTK::GradientOpacity::Impl\\n\\n // handle lighting\\n //VTK::Light::Impl\\n\\n float mix = (1.0 - color.a);\\n\\n // this line should not be needed but nvidia seems to not handle\\n // the break correctly on windows/chrome 58 angle\\n mix = mix * sign(max(float(count - i + 1), 0.0));\\n\\n color = color + vec4(tcolor.rgb*tcolor.a, tcolor.a)*mix;\\n if (i >= count) { break; }\\n if (color.a > 0.99) { color.a = 1.0; break; }\\n ijk += vdelta;\\n }\\n\\n gl_FragData[0] = vec4(color.rgb/color.a, color.a);\\n // gl_FragData[0] = vec4(tbounds.y/farDist, tbounds.x/farDist, color.b/color.a, 1.0);\\n }\\n else\\n {\\n discard;\\n }\\n}\\n\"\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/OpenGL/glsl/vtkVolumeFS.glsl","module.exports = \"//VTK::System::Dec\\n\\n/*=========================================================================\\n\\n Program: Visualization Toolkit\\n Module: vtkPolyDataFS.glsl\\n\\n Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen\\n All rights reserved.\\n See Copyright.txt or http://www.kitware.com/Copyright.htm for details.\\n\\n This software is distributed WITHOUT ANY WARRANTY; without even\\n the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR\\n PURPOSE. See the above copyright notice for more information.\\n\\n=========================================================================*/\\n// Template for the polydata mappers fragment shader\\n\\n// the output of this shader\\n//VTK::Output::Dec\\n\\nvarying vec3 vertexVCVSOutput;\\n\\n// camera values\\nuniform float camThick;\\nuniform float camNear;\\nuniform float camFar;\\n\\n// values describing the volume geometry\\nuniform vec3 vOriginVC;\\nuniform vec3 vSize;\\nuniform vec3 vPlaneNormal0;\\nuniform float vPlaneDistance0;\\nuniform vec3 vPlaneNormal1;\\nuniform float vPlaneDistance1;\\nuniform vec3 vPlaneNormal2;\\nuniform float vPlaneDistance2;\\nuniform vec3 vPlaneNormal3;\\nuniform float vPlaneDistance3;\\nuniform vec3 vPlaneNormal4;\\nuniform float vPlaneDistance4;\\nuniform vec3 vPlaneNormal5;\\nuniform float vPlaneDistance5;\\n\\n// opacity and color textures\\nuniform sampler2D otexture;\\nuniform float oshift;\\nuniform float oscale;\\nuniform sampler2D ctexture;\\nuniform float cshift;\\nuniform float cscale;\\n\\n// jitter texture\\nuniform sampler2D jtexture;\\n\\n// some 3D texture values\\nuniform highp sampler3D texture1;\\nuniform float sampleDistance;\\nuniform vec3 vVCToIJK;\\n\\n// declaration for intermixed geometry\\n//VTK::ZBuffer::Dec\\n\\n// Lighting values\\n//VTK::Light::Dec\\n\\n// normal calc\\n//VTK::Normal::Dec\\n\\n// gradient opacity\\n//VTK::GradientOpacity::Dec\\n\\nvec2 getRayPointIntersectionBounds(\\n vec3 rayPos, vec3 rayDir,\\n vec3 planeDir, float planeDist,\\n vec2 tbounds, vec3 vPlaneX, vec3 vPlaneY,\\n float vSize1, float vSize2)\\n{\\n float result = dot(rayDir, planeDir);\\n if (result == 0.0)\\n {\\n return tbounds;\\n }\\n result = -1.0 * (dot(rayPos, planeDir) + planeDist) / result;\\n vec3 xposVC = rayPos + rayDir*result;\\n vec3 vxpos = xposVC - vOriginVC;\\n vec2 vpos = vec2(\\n dot(vxpos, vPlaneX),\\n dot(vxpos, vPlaneY));\\n\\n // on some apple nvidia systems this does not work\\n // if (vpos.x < 0.0 || vpos.x > vSize1 ||\\n // vpos.y < 0.0 || vpos.y > vSize2)\\n // even just\\n // if (vpos.x < 0.0 || vpos.y < 0.0)\\n // fails\\n // so instead we compute a value that represents in and out\\n //and then compute the return using this value\\n float xcheck = max(0.0, vpos.x * (vpos.x - vSize1)); // 0 means in bounds\\n float check = sign(max(xcheck, vpos.y * (vpos.y - vSize2))); // 0 means in bounds, 1 = out\\n\\n return mix(\\n vec2(min(tbounds.x, result), max(tbounds.y, result)), // in value\\n tbounds, // out value\\n check); // 0 in 1 out\\n}\\n\\nvoid main()\\n{\\n float scalar;\\n vec4 scalarComps;\\n\\n // camera is at 0,0,0 so rayDir for perspective is just the vc coord\\n vec3 rayDir = normalize(vertexVCVSOutput);\\n vec2 tbounds = vec2(100.0*camFar, -1.0);\\n\\n // all this is in View Coordinates\\n tbounds = getRayPointIntersectionBounds(vertexVCVSOutput, rayDir,\\n vPlaneNormal0, vPlaneDistance0, tbounds, vPlaneNormal2, vPlaneNormal4,\\n vSize.y, vSize.z);\\n tbounds = getRayPointIntersectionBounds(vertexVCVSOutput, rayDir,\\n vPlaneNormal1, vPlaneDistance1, tbounds, vPlaneNormal2, vPlaneNormal4,\\n vSize.y, vSize.z);\\n tbounds = getRayPointIntersectionBounds(vertexVCVSOutput, rayDir,\\n vPlaneNormal2, vPlaneDistance2, tbounds, vPlaneNormal0, vPlaneNormal4,\\n vSize.x, vSize.z);\\n tbounds = getRayPointIntersectionBounds(vertexVCVSOutput, rayDir,\\n vPlaneNormal3, vPlaneDistance3, tbounds, vPlaneNormal0, vPlaneNormal4,\\n vSize.x, vSize.z);\\n tbounds = getRayPointIntersectionBounds(vertexVCVSOutput, rayDir,\\n vPlaneNormal4, vPlaneDistance4, tbounds, vPlaneNormal0, vPlaneNormal2,\\n vSize.x, vSize.y);\\n tbounds = getRayPointIntersectionBounds(vertexVCVSOutput, rayDir,\\n vPlaneNormal5, vPlaneDistance5, tbounds, vPlaneNormal0, vPlaneNormal2,\\n vSize.x, vSize.y);\\n\\n // do not go behind front clipping plane\\n tbounds.x = max(0.0,tbounds.x);\\n\\n // do not go PAST far clipping plane\\n float farDist = -camThick/rayDir.z;\\n tbounds.y = min(farDist,tbounds.y);\\n\\n // Do not go past the zbuffer value if set\\n // This is used for intermixing opaque geometry\\n //VTK::ZBuffer::Impl\\n\\n // do we need to composite?\\n if (tbounds.y > tbounds.x)\\n {\\n // compute starting and ending values in volume space\\n vec3 startVC = vertexVCVSOutput + tbounds.x*rayDir;\\n startVC = startVC - vOriginVC;\\n\\n // vpos and endvpos are in VolumeCoords not Index yet\\n vec3 vpos = vec3(\\n dot(startVC, vPlaneNormal0),\\n dot(startVC, vPlaneNormal2),\\n dot(startVC, vPlaneNormal4));\\n vec3 endVC = vertexVCVSOutput + tbounds.y*rayDir;\\n endVC = endVC - vOriginVC;\\n vec3 endvpos = vec3(\\n dot(endVC, vPlaneNormal0),\\n dot(endVC, vPlaneNormal2),\\n dot(endVC, vPlaneNormal4));\\n\\n // start slightly inside and apply some jitter\\n float jitter = texture2D(jtexture, gl_FragCoord.xy/32.0).r;\\n vec3 vdelta = endvpos - vpos;\\n vpos = vpos + normalize(vdelta)*(0.01 + 0.98*jitter)*sampleDistance;\\n\\n // update vdelta post jitter\\n vdelta = endvpos - vpos;\\n float numSteps = length(vdelta) / sampleDistance;\\n vdelta = vdelta / float(numSteps);\\n\\n vec4 color = vec4(0.0, 0.0, 0.0, 0.0);\\n\\n vec3 ijk = vpos * vVCToIJK;\\n vdelta = vdelta * vVCToIJK;\\n int count = int(numSteps - 0.05); // end slightly inside\\n for (int i = 0; i < //VTK::MaximumSamplesValue ; ++i)\\n {\\n // compute the scalar\\n scalar = texture(texture1, ijk).r;\\n\\n // now map through opacity and color\\n vec4 tcolor = texture2D(ctexture, vec2(scalar * cscale + cshift, 0.5));\\n tcolor.a = texture2D(otexture, vec2(scalar * oscale + oshift, 0.5)).r;\\n\\n // compute the normal if needed\\n //VTK::Normal::Impl\\n\\n // handle gradient opacity\\n //VTK::GradientOpacity::Impl\\n\\n // handle lighting\\n //VTK::Light::Impl\\n\\n float mix = (1.0 - color.a);\\n\\n color = color + vec4(tcolor.rgb*tcolor.a, tcolor.a)*mix;\\n if (color.a > 0.99) { color.a = 1.0; break; }\\n ijk += vdelta;\\n if (i >= count)\\n {\\n break;\\n }\\n }\\n\\n if (color.a < 0.99)\\n {\\n float residual = numSteps - float(count);\\n ijk += (residual - 1.0)*vdelta;\\n\\n // compute the scalar\\n scalar = texture(texture1, ijk).r;\\n\\n // now map through opacity and color\\n vec4 tcolor = texture2D(ctexture, vec2(scalar * cscale + cshift, 0.5));\\n tcolor.a = residual*texture2D(otexture, vec2(scalar * oscale + oshift, 0.5)).r;\\n\\n // compute the normal if needed\\n //VTK::Normal::Impl\\n\\n // handle gradient opacity\\n //VTK::GradientOpacity::Impl\\n\\n // handle lighting\\n //VTK::Light::Impl\\n\\n float mix = (1.0 - color.a);\\n color = color + vec4(tcolor.rgb*tcolor.a, tcolor.a)*mix;\\n }\\n\\n gl_FragData[0] = vec4(color.rgb/color.a, color.a);\\n // gl_FragData[0] = vec4(tbounds.y/farDist, tbounds.x/farDist, color.b/color.a, 1.0);\\n }\\n else\\n {\\n discard;\\n }\\n}\\n\"\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/OpenGL/glsl/vtkVolumeFS2.glsl","import md5 from 'blueimp-md5';\n\nimport macro from 'vtk.js/Sources/macro';\nimport vtkShaderProgram from 'vtk.js/Sources/Rendering/OpenGL/ShaderProgram';\n\n// ----------------------------------------------------------------------------\n\nconst SET_GET_FIELDS = ['lastShaderBound', 'context', 'openGLRenderWindow'];\n\n// ----------------------------------------------------------------------------\n// vtkShaderCache methods\n// ----------------------------------------------------------------------------\n\nfunction vtkShaderCache(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkShaderCache');\n\n publicAPI.replaceShaderValues = (VSSource, FSSource, GSSource) => {\n // first handle renaming any Fragment shader inputs\n // if we have a geometry shader. By deafult fragment shaders\n // assume their inputs come from a Vertex Shader. When we\n // have a Geometry shader we rename the frament shader inputs\n // to come from the geometry shader\n\n let nFSSource = FSSource;\n if (GSSource.length > 0) {\n nFSSource = vtkShaderProgram.substitute(nFSSource, 'VSOut', 'GSOut')\n .result;\n }\n\n const gl2 = model.openGLRenderWindow.getWebgl2();\n\n let fragDepthString = '\\n';\n\n let version = '#version 100\\n';\n if (gl2) {\n version =\n '#version 300 es\\n' +\n '#define attribute in\\n' +\n '#define textureCube texture\\n' +\n '#define texture2D texture\\n';\n } else {\n model.context.getExtension('OES_standard_derivatives');\n if (model.context.getExtension('EXT_frag_depth')) {\n fragDepthString = '#extension GL_EXT_frag_depth : enable\\n';\n }\n }\n\n nFSSource = vtkShaderProgram.substitute(nFSSource, '//VTK::System::Dec', [\n `${version}\\n`,\n gl2 ? '' : '#extension GL_OES_standard_derivatives : enable\\n',\n fragDepthString,\n '#ifdef GL_FRAGMENT_PRECISION_HIGH',\n 'precision highp float;',\n 'precision highp int;',\n '#else',\n 'precision mediump float;',\n 'precision mediump int;',\n '#endif',\n ]).result;\n\n let nVSSource = vtkShaderProgram.substitute(\n VSSource,\n '//VTK::System::Dec',\n [\n `${version}\\n`,\n '#ifdef GL_FRAGMENT_PRECISION_HIGH',\n 'precision highp float;',\n 'precision highp int;',\n '#else',\n 'precision mediump float;',\n 'precision mediump int;',\n '#endif',\n ]\n ).result;\n\n if (gl2) {\n nVSSource = vtkShaderProgram.substitute(nVSSource, 'varying', 'out')\n .result;\n nFSSource = vtkShaderProgram.substitute(nFSSource, 'varying', 'in')\n .result;\n nFSSource = vtkShaderProgram.substitute(\n nFSSource,\n 'gl_FragData\\\\[0\\\\]',\n 'fragOutput0'\n ).result;\n nFSSource = vtkShaderProgram.substitute(\n nFSSource,\n '//VTK::Output::Dec',\n 'layout(location = 0) out vec4 fragOutput0;'\n ).result;\n }\n\n // nFSSource = ShaderProgram.substitute(nFSSource, 'gl_FragData\\\\[0\\\\]',\n // 'gl_FragColor').result;\n\n const nGSSource = vtkShaderProgram.substitute(\n GSSource,\n '//VTK::System::Dec',\n version\n ).result;\n\n return { VSSource: nVSSource, FSSource: nFSSource, GSSource: nGSSource };\n };\n\n // return NULL if there is an issue\n publicAPI.readyShaderProgramArray = (\n vertexCode,\n fragmentCode,\n geometryCode\n ) => {\n const data = publicAPI.replaceShaderValues(\n vertexCode,\n fragmentCode,\n geometryCode\n );\n\n const shader = publicAPI.getShaderProgram(\n data.VSSource,\n data.FSSource,\n data.GSSource\n );\n\n return publicAPI.readyShaderProgram(shader);\n };\n\n publicAPI.readyShaderProgram = (shader) => {\n if (!shader) {\n return null;\n }\n\n // compile if needed\n if (!shader.getCompiled() && !shader.compileShader()) {\n return null;\n }\n\n // bind if needed\n if (!publicAPI.bindShader(shader)) {\n return null;\n }\n\n return shader;\n };\n\n publicAPI.getShaderProgram = (vertexCode, fragmentCode, geometryCode) => {\n // compute the MD5 and the check the map\n const hashInput = `${vertexCode}${fragmentCode}${geometryCode}`;\n const result = md5(hashInput);\n\n // does it already exist?\n const loc = Object.keys(model.shaderPrograms).indexOf(result);\n\n if (loc === -1) {\n // create one\n const sps = vtkShaderProgram.newInstance();\n sps.setContext(model.context);\n sps.getVertexShader().setSource(vertexCode);\n sps.getFragmentShader().setSource(fragmentCode);\n if (geometryCode) {\n sps.getGeometryShader().setSource(geometryCode);\n }\n sps.setMd5Hash(result);\n model.shaderPrograms[result] = sps;\n return sps;\n }\n\n return model.shaderPrograms[result];\n };\n\n publicAPI.releaseGraphicsResources = (win) => {\n // NOTE:\n // In the current implementation as of October 26th, if a shader\n // program is created by ShaderCache then it should make sure\n // that it releases the graphics resouces used by these programs.\n // It is not wisely for callers to do that since then they would\n // have to loop over all the programs were in use and invoke\n // release graphics resources individually.\n\n publicAPI.releaseCurrentShader();\n\n Object.keys(model.shaderPrograms)\n .map((key) => model.shaderPrograms[key])\n .forEach((sp) => sp.releaseGraphicsResources(win));\n };\n\n publicAPI.releaseGraphicsResources = () => {\n // release prior shader\n if (model.astShaderBound) {\n model.lastShaderBound.release();\n model.lastShaderBound = null;\n }\n };\n\n publicAPI.bindShader = (shader) => {\n if (model.lastShaderBound === shader) {\n return 1;\n }\n\n // release prior shader\n if (model.lastShaderBound) {\n model.lastShaderBound.release();\n }\n shader.bind();\n model.lastShaderBound = shader;\n return 1;\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n lastShaderBound: null,\n shaderPrograms: null,\n context: null,\n openGLRenderWindow: null,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Internal objects\n model.shaderPrograms = {};\n\n // Build VTK API\n macro.obj(publicAPI, model);\n macro.setGet(publicAPI, model, SET_GET_FIELDS);\n\n // Object methods\n vtkShaderCache(publicAPI, model);\n\n return Object.freeze(publicAPI);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkShaderCache');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/OpenGL/ShaderCache/index.js","/*\n * JavaScript MD5\n * https://github.com/blueimp/JavaScript-MD5\n *\n * Copyright 2011, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\n\n/* global define */\n\n;(function ($) {\n 'use strict'\n\n /*\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\n function safeAdd (x, y) {\n var lsw = (x & 0xffff) + (y & 0xffff)\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16)\n return (msw << 16) | (lsw & 0xffff)\n }\n\n /*\n * Bitwise rotate a 32-bit number to the left.\n */\n function bitRotateLeft (num, cnt) {\n return (num << cnt) | (num >>> (32 - cnt))\n }\n\n /*\n * These functions implement the four basic operations the algorithm uses.\n */\n function md5cmn (q, a, b, x, s, t) {\n return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b)\n }\n function md5ff (a, b, c, d, x, s, t) {\n return md5cmn((b & c) | (~b & d), a, b, x, s, t)\n }\n function md5gg (a, b, c, d, x, s, t) {\n return md5cmn((b & d) | (c & ~d), a, b, x, s, t)\n }\n function md5hh (a, b, c, d, x, s, t) {\n return md5cmn(b ^ c ^ d, a, b, x, s, t)\n }\n function md5ii (a, b, c, d, x, s, t) {\n return md5cmn(c ^ (b | ~d), a, b, x, s, t)\n }\n\n /*\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n */\n function binlMD5 (x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << (len % 32)\n x[((len + 64) >>> 9 << 4) + 14] = len\n\n var i\n var olda\n var oldb\n var oldc\n var oldd\n var a = 1732584193\n var b = -271733879\n var c = -1732584194\n var d = 271733878\n\n for (i = 0; i < x.length; i += 16) {\n olda = a\n oldb = b\n oldc = c\n oldd = d\n\n a = md5ff(a, b, c, d, x[i], 7, -680876936)\n d = md5ff(d, a, b, c, x[i + 1], 12, -389564586)\n c = md5ff(c, d, a, b, x[i + 2], 17, 606105819)\n b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330)\n a = md5ff(a, b, c, d, x[i + 4], 7, -176418897)\n d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426)\n c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341)\n b = md5ff(b, c, d, a, x[i + 7], 22, -45705983)\n a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416)\n d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417)\n c = md5ff(c, d, a, b, x[i + 10], 17, -42063)\n b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162)\n a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682)\n d = md5ff(d, a, b, c, x[i + 13], 12, -40341101)\n c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290)\n b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329)\n\n a = md5gg(a, b, c, d, x[i + 1], 5, -165796510)\n d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632)\n c = md5gg(c, d, a, b, x[i + 11], 14, 643717713)\n b = md5gg(b, c, d, a, x[i], 20, -373897302)\n a = md5gg(a, b, c, d, x[i + 5], 5, -701558691)\n d = md5gg(d, a, b, c, x[i + 10], 9, 38016083)\n c = md5gg(c, d, a, b, x[i + 15], 14, -660478335)\n b = md5gg(b, c, d, a, x[i + 4], 20, -405537848)\n a = md5gg(a, b, c, d, x[i + 9], 5, 568446438)\n d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690)\n c = md5gg(c, d, a, b, x[i + 3], 14, -187363961)\n b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501)\n a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467)\n d = md5gg(d, a, b, c, x[i + 2], 9, -51403784)\n c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473)\n b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734)\n\n a = md5hh(a, b, c, d, x[i + 5], 4, -378558)\n d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463)\n c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562)\n b = md5hh(b, c, d, a, x[i + 14], 23, -35309556)\n a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060)\n d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353)\n c = md5hh(c, d, a, b, x[i + 7], 16, -155497632)\n b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640)\n a = md5hh(a, b, c, d, x[i + 13], 4, 681279174)\n d = md5hh(d, a, b, c, x[i], 11, -358537222)\n c = md5hh(c, d, a, b, x[i + 3], 16, -722521979)\n b = md5hh(b, c, d, a, x[i + 6], 23, 76029189)\n a = md5hh(a, b, c, d, x[i + 9], 4, -640364487)\n d = md5hh(d, a, b, c, x[i + 12], 11, -421815835)\n c = md5hh(c, d, a, b, x[i + 15], 16, 530742520)\n b = md5hh(b, c, d, a, x[i + 2], 23, -995338651)\n\n a = md5ii(a, b, c, d, x[i], 6, -198630844)\n d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415)\n c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905)\n b = md5ii(b, c, d, a, x[i + 5], 21, -57434055)\n a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571)\n d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606)\n c = md5ii(c, d, a, b, x[i + 10], 15, -1051523)\n b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799)\n a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359)\n d = md5ii(d, a, b, c, x[i + 15], 10, -30611744)\n c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380)\n b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649)\n a = md5ii(a, b, c, d, x[i + 4], 6, -145523070)\n d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379)\n c = md5ii(c, d, a, b, x[i + 2], 15, 718787259)\n b = md5ii(b, c, d, a, x[i + 9], 21, -343485551)\n\n a = safeAdd(a, olda)\n b = safeAdd(b, oldb)\n c = safeAdd(c, oldc)\n d = safeAdd(d, oldd)\n }\n return [a, b, c, d]\n }\n\n /*\n * Convert an array of little-endian words to a string\n */\n function binl2rstr (input) {\n var i\n var output = ''\n var length32 = input.length * 32\n for (i = 0; i < length32; i += 8) {\n output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff)\n }\n return output\n }\n\n /*\n * Convert a raw string to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n */\n function rstr2binl (input) {\n var i\n var output = []\n output[(input.length >> 2) - 1] = undefined\n for (i = 0; i < output.length; i += 1) {\n output[i] = 0\n }\n var length8 = input.length * 8\n for (i = 0; i < length8; i += 8) {\n output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32)\n }\n return output\n }\n\n /*\n * Calculate the MD5 of a raw string\n */\n function rstrMD5 (s) {\n return binl2rstr(binlMD5(rstr2binl(s), s.length * 8))\n }\n\n /*\n * Calculate the HMAC-MD5, of a key and some data (raw strings)\n */\n function rstrHMACMD5 (key, data) {\n var i\n var bkey = rstr2binl(key)\n var ipad = []\n var opad = []\n var hash\n ipad[15] = opad[15] = undefined\n if (bkey.length > 16) {\n bkey = binlMD5(bkey, key.length * 8)\n }\n for (i = 0; i < 16; i += 1) {\n ipad[i] = bkey[i] ^ 0x36363636\n opad[i] = bkey[i] ^ 0x5c5c5c5c\n }\n hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8)\n return binl2rstr(binlMD5(opad.concat(hash), 512 + 128))\n }\n\n /*\n * Convert a raw string to a hex string\n */\n function rstr2hex (input) {\n var hexTab = '0123456789abcdef'\n var output = ''\n var x\n var i\n for (i = 0; i < input.length; i += 1) {\n x = input.charCodeAt(i)\n output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f)\n }\n return output\n }\n\n /*\n * Encode a string as utf-8\n */\n function str2rstrUTF8 (input) {\n return unescape(encodeURIComponent(input))\n }\n\n /*\n * Take string arguments and return either raw or hex encoded strings\n */\n function rawMD5 (s) {\n return rstrMD5(str2rstrUTF8(s))\n }\n function hexMD5 (s) {\n return rstr2hex(rawMD5(s))\n }\n function rawHMACMD5 (k, d) {\n return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d))\n }\n function hexHMACMD5 (k, d) {\n return rstr2hex(rawHMACMD5(k, d))\n }\n\n function md5 (string, key, raw) {\n if (!key) {\n if (!raw) {\n return hexMD5(string)\n }\n return rawMD5(string)\n }\n if (!raw) {\n return hexHMACMD5(key, string)\n }\n return rawHMACMD5(key, string)\n }\n\n if (typeof define === 'function' && define.amd) {\n define(function () {\n return md5\n })\n } else if (typeof module === 'object' && module.exports) {\n module.exports = md5\n } else {\n $.md5 = md5\n }\n})(this)\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/blueimp-md5/js/md5.js\n// module id = 591\n// module chunks = 1","import macro from 'vtk.js/Sources/macro';\n\nconst { vtkErrorMacro } = macro;\n\n// ----------------------------------------------------------------------------\n// vtkOpenGLTextureUnitManager methods\n// ----------------------------------------------------------------------------\n\nfunction vtkOpenGLTextureUnitManager(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkOpenGLTextureUnitManager');\n\n // ----------------------------------------------------------------------------\n // Description:\n // Delete the allocation table and check if it is not called before\n // all the texture units have been released.\n publicAPI.deleteTable = () => {\n for (let i = 0; i < model.numberOfTextureUnits; ++i) {\n if (model.textureUnits[i] === true) {\n vtkErrorMacro('some texture units were not properly released');\n }\n }\n model.textureUnits = [];\n model.numberOfTextureUnits = 0;\n };\n\n // ----------------------------------------------------------------------------\n publicAPI.setContext = (ctx) => {\n if (model.context !== ctx) {\n if (model.context !== 0) {\n publicAPI.deleteTable();\n }\n model.context = ctx;\n if (model.context) {\n model.numberOfTextureUnits = ctx.getParameter(\n ctx.MAX_TEXTURE_IMAGE_UNITS\n );\n for (let i = 0; i < model.numberOfTextureUnits; ++i) {\n model.textureUnits[i] = false;\n }\n }\n publicAPI.modified();\n }\n };\n\n // ----------------------------------------------------------------------------\n // Description:\n // Reserve a texture unit. It returns its number.\n // It returns -1 if the allocation failed (because there are no more\n // texture units left).\n // \\post valid_result: result==-1 || result>=0 && result<this->GetNumberOfTextureUnits())\n // \\post allocated: result==-1 || this->IsAllocated(result)\n publicAPI.allocate = () => {\n for (let i = 0; i < model.numberOfTextureUnits; i++) {\n if (!publicAPI.isAllocated(i)) {\n model.textureUnits[i] = true;\n return i;\n }\n }\n return -1;\n };\n\n publicAPI.allocateUnit = (unit) => {\n if (publicAPI.isAllocated(unit)) {\n return -1;\n }\n\n model.textureUnits[unit] = true;\n return unit;\n };\n\n // ----------------------------------------------------------------------------\n // Description:\n // Tell if texture unit `textureUnitId' is already allocated.\n // \\pre valid_id_range : textureUnitId>=0 && textureUnitId<this->GetNumberOfTextureUnits()\n publicAPI.isAllocated = (textureUnitId) => model.textureUnits[textureUnitId];\n\n // ----------------------------------------------------------------------------\n // Description:\n // Release a texture unit.\n // \\pre valid_id: textureUnitId>=0 && textureUnitId<this->GetNumberOfTextureUnits()\n // \\pre allocated_id: this->IsAllocated(textureUnitId)\n publicAPI.free = (val) => {\n model.textureUnits[val] = false;\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n context: null,\n numberOfTextureUnits: 0,\n textureUnits: 0,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n macro.obj(publicAPI, model);\n\n model.textureUnits = [];\n\n // Build VTK API\n macro.get(publicAPI, model, ['numberOfTextureUnits']);\n\n macro.setGet(publicAPI, model, ['context']);\n\n // Object methods\n vtkOpenGLTextureUnitManager(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(\n extend,\n 'vtkOpenGLTextureUnitManager'\n);\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/OpenGL/TextureUnitManager/index.js","/**\n * @license\n * webvr-polyfill\n * Copyright (c) 2015-2017 Google\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @license\n * cardboard-vr-display\n * Copyright (c) 2015-2017 Google\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @license\n * webvr-polyfill-dpdb \n * Copyright (c) 2017 Google\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @license\n * wglu-preserve-state\n * Copyright (c) 2016, Brandon Jones.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n/**\n * @license\n * nosleep.js\n * Copyright (c) 2017, Rich Tibbett\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.WebVRPolyfill = factory());\n}(this, (function () { 'use strict';\n\nvar commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\n\n\nfunction unwrapExports (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar race = function race(promises) {\n if (Promise.race) {\n return Promise.race(promises);\n }\n return new Promise(function (resolve, reject) {\n for (var i = 0; i < promises.length; i++) {\n promises[i].then(resolve, reject);\n }\n });\n};\n\nvar isMobile = function isMobile() {\n return (/Android/i.test(navigator.userAgent) || /iPhone|iPad|iPod/i.test(navigator.userAgent)\n );\n};\nvar copyArray = function copyArray(source, dest) {\n for (var i = 0, n = source.length; i < n; i++) {\n dest[i] = source[i];\n }\n};\nvar extend = function extend(dest, src) {\n for (var key in src) {\n if (src.hasOwnProperty(key)) {\n dest[key] = src[key];\n }\n }\n return dest;\n};\n\nvar cardboardVrDisplay = createCommonjsModule(function (module, exports) {\n/**\n * @license\n * cardboard-vr-display\n * Copyright (c) 2015-2017 Google\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @license\n * gl-preserve-state\n * Copyright (c) 2016, Brandon Jones.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n/**\n * @license\n * webvr-polyfill-dpdb\n * Copyright (c) 2015-2017 Google\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @license\n * nosleep.js\n * Copyright (c) 2017, Rich Tibbett\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n(function (global, factory) {\n\tmodule.exports = factory();\n}(commonjsGlobal, (function () { var classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\nvar slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();\nvar MIN_TIMESTEP = 0.001;\nvar MAX_TIMESTEP = 1;\nvar base64 = function base64(mimeType, _base) {\n return 'data:' + mimeType + ';base64,' + _base;\n};\nvar lerp = function lerp(a, b, t) {\n return a + (b - a) * t;\n};\nvar isIOS = function () {\n var isIOS = /iPad|iPhone|iPod/.test(navigator.platform);\n return function () {\n return isIOS;\n };\n}();\nvar isWebViewAndroid = function () {\n var isWebViewAndroid = navigator.userAgent.indexOf('Version') !== -1 && navigator.userAgent.indexOf('Android') !== -1 && navigator.userAgent.indexOf('Chrome') !== -1;\n return function () {\n return isWebViewAndroid;\n };\n}();\nvar isSafari = function () {\n var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n return function () {\n return isSafari;\n };\n}();\nvar isFirefoxAndroid = function () {\n var isFirefoxAndroid = navigator.userAgent.indexOf('Firefox') !== -1 && navigator.userAgent.indexOf('Android') !== -1;\n return function () {\n return isFirefoxAndroid;\n };\n}();\nvar getChromeVersion = function () {\n var match = navigator.userAgent.match(/.*Chrome\\/([0-9]+)/);\n var value = match ? parseInt(match[1], 10) : null;\n return function () {\n return value;\n };\n}();\nvar isChromeWithoutDeviceMotion = function () {\n var value = false;\n if (getChromeVersion() === 65) {\n var match = navigator.userAgent.match(/.*Chrome\\/([0-9\\.]*)/);\n if (match) {\n var _match$1$split = match[1].split('.'),\n _match$1$split2 = slicedToArray(_match$1$split, 4),\n major = _match$1$split2[0],\n minor = _match$1$split2[1],\n branch = _match$1$split2[2],\n build = _match$1$split2[3];\n value = parseInt(branch, 10) === 3325 && parseInt(build, 10) < 148;\n }\n }\n return function () {\n return value;\n };\n}();\nvar isR7 = function () {\n var isR7 = navigator.userAgent.indexOf('R7 Build') !== -1;\n return function () {\n return isR7;\n };\n}();\nvar isLandscapeMode = function isLandscapeMode() {\n var rtn = window.orientation == 90 || window.orientation == -90;\n return isR7() ? !rtn : rtn;\n};\nvar isTimestampDeltaValid = function isTimestampDeltaValid(timestampDeltaS) {\n if (isNaN(timestampDeltaS)) {\n return false;\n }\n if (timestampDeltaS <= MIN_TIMESTEP) {\n return false;\n }\n if (timestampDeltaS > MAX_TIMESTEP) {\n return false;\n }\n return true;\n};\nvar getScreenWidth = function getScreenWidth() {\n return Math.max(window.screen.width, window.screen.height) * window.devicePixelRatio;\n};\nvar getScreenHeight = function getScreenHeight() {\n return Math.min(window.screen.width, window.screen.height) * window.devicePixelRatio;\n};\nvar requestFullscreen = function requestFullscreen(element) {\n if (isWebViewAndroid()) {\n return false;\n }\n if (element.requestFullscreen) {\n element.requestFullscreen();\n } else if (element.webkitRequestFullscreen) {\n element.webkitRequestFullscreen();\n } else if (element.mozRequestFullScreen) {\n element.mozRequestFullScreen();\n } else if (element.msRequestFullscreen) {\n element.msRequestFullscreen();\n } else {\n return false;\n }\n return true;\n};\nvar exitFullscreen = function exitFullscreen() {\n if (document.exitFullscreen) {\n document.exitFullscreen();\n } else if (document.webkitExitFullscreen) {\n document.webkitExitFullscreen();\n } else if (document.mozCancelFullScreen) {\n document.mozCancelFullScreen();\n } else if (document.msExitFullscreen) {\n document.msExitFullscreen();\n } else {\n return false;\n }\n return true;\n};\nvar getFullscreenElement = function getFullscreenElement() {\n return document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement;\n};\nvar linkProgram = function linkProgram(gl, vertexSource, fragmentSource, attribLocationMap) {\n var vertexShader = gl.createShader(gl.VERTEX_SHADER);\n gl.shaderSource(vertexShader, vertexSource);\n gl.compileShader(vertexShader);\n var fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);\n gl.shaderSource(fragmentShader, fragmentSource);\n gl.compileShader(fragmentShader);\n var program = gl.createProgram();\n gl.attachShader(program, vertexShader);\n gl.attachShader(program, fragmentShader);\n for (var attribName in attribLocationMap) {\n gl.bindAttribLocation(program, attribLocationMap[attribName], attribName);\n }gl.linkProgram(program);\n gl.deleteShader(vertexShader);\n gl.deleteShader(fragmentShader);\n return program;\n};\nvar getProgramUniforms = function getProgramUniforms(gl, program) {\n var uniforms = {};\n var uniformCount = gl.getProgramParameter(program, gl.ACTIVE_UNIFORMS);\n var uniformName = '';\n for (var i = 0; i < uniformCount; i++) {\n var uniformInfo = gl.getActiveUniform(program, i);\n uniformName = uniformInfo.name.replace('[0]', '');\n uniforms[uniformName] = gl.getUniformLocation(program, uniformName);\n }\n return uniforms;\n};\nvar orthoMatrix = function orthoMatrix(out, left, right, bottom, top, near, far) {\n var lr = 1 / (left - right),\n bt = 1 / (bottom - top),\n nf = 1 / (near - far);\n out[0] = -2 * lr;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = -2 * bt;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 2 * nf;\n out[11] = 0;\n out[12] = (left + right) * lr;\n out[13] = (top + bottom) * bt;\n out[14] = (far + near) * nf;\n out[15] = 1;\n return out;\n};\nvar isMobile = function isMobile() {\n var check = false;\n (function (a) {\n if (/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(a.substr(0, 4))) check = true;\n })(navigator.userAgent || navigator.vendor || window.opera);\n return check;\n};\nvar extend = function extend(dest, src) {\n for (var key in src) {\n if (src.hasOwnProperty(key)) {\n dest[key] = src[key];\n }\n }\n return dest;\n};\nvar safariCssSizeWorkaround = function safariCssSizeWorkaround(canvas) {\n if (isIOS()) {\n var width = canvas.style.width;\n var height = canvas.style.height;\n canvas.style.width = parseInt(width) + 1 + 'px';\n canvas.style.height = parseInt(height) + 'px';\n setTimeout(function () {\n canvas.style.width = width;\n canvas.style.height = height;\n }, 100);\n }\n window.canvas = canvas;\n};\nvar frameDataFromPose = function () {\n var piOver180 = Math.PI / 180.0;\n var rad45 = Math.PI * 0.25;\n function mat4_perspectiveFromFieldOfView(out, fov, near, far) {\n var upTan = Math.tan(fov ? fov.upDegrees * piOver180 : rad45),\n downTan = Math.tan(fov ? fov.downDegrees * piOver180 : rad45),\n leftTan = Math.tan(fov ? fov.leftDegrees * piOver180 : rad45),\n rightTan = Math.tan(fov ? fov.rightDegrees * piOver180 : rad45),\n xScale = 2.0 / (leftTan + rightTan),\n yScale = 2.0 / (upTan + downTan);\n out[0] = xScale;\n out[1] = 0.0;\n out[2] = 0.0;\n out[3] = 0.0;\n out[4] = 0.0;\n out[5] = yScale;\n out[6] = 0.0;\n out[7] = 0.0;\n out[8] = -((leftTan - rightTan) * xScale * 0.5);\n out[9] = (upTan - downTan) * yScale * 0.5;\n out[10] = far / (near - far);\n out[11] = -1.0;\n out[12] = 0.0;\n out[13] = 0.0;\n out[14] = far * near / (near - far);\n out[15] = 0.0;\n return out;\n }\n function mat4_fromRotationTranslation(out, q, v) {\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3],\n x2 = x + x,\n y2 = y + y,\n z2 = z + z,\n xx = x * x2,\n xy = x * y2,\n xz = x * z2,\n yy = y * y2,\n yz = y * z2,\n zz = z * z2,\n wx = w * x2,\n wy = w * y2,\n wz = w * z2;\n out[0] = 1 - (yy + zz);\n out[1] = xy + wz;\n out[2] = xz - wy;\n out[3] = 0;\n out[4] = xy - wz;\n out[5] = 1 - (xx + zz);\n out[6] = yz + wx;\n out[7] = 0;\n out[8] = xz + wy;\n out[9] = yz - wx;\n out[10] = 1 - (xx + yy);\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n }\n function mat4_translate(out, a, v) {\n var x = v[0],\n y = v[1],\n z = v[2],\n a00,\n a01,\n a02,\n a03,\n a10,\n a11,\n a12,\n a13,\n a20,\n a21,\n a22,\n a23;\n if (a === out) {\n out[12] = a[0] * x + a[4] * y + a[8] * z + a[12];\n out[13] = a[1] * x + a[5] * y + a[9] * z + a[13];\n out[14] = a[2] * x + a[6] * y + a[10] * z + a[14];\n out[15] = a[3] * x + a[7] * y + a[11] * z + a[15];\n } else {\n a00 = a[0];a01 = a[1];a02 = a[2];a03 = a[3];\n a10 = a[4];a11 = a[5];a12 = a[6];a13 = a[7];\n a20 = a[8];a21 = a[9];a22 = a[10];a23 = a[11];\n out[0] = a00;out[1] = a01;out[2] = a02;out[3] = a03;\n out[4] = a10;out[5] = a11;out[6] = a12;out[7] = a13;\n out[8] = a20;out[9] = a21;out[10] = a22;out[11] = a23;\n out[12] = a00 * x + a10 * y + a20 * z + a[12];\n out[13] = a01 * x + a11 * y + a21 * z + a[13];\n out[14] = a02 * x + a12 * y + a22 * z + a[14];\n out[15] = a03 * x + a13 * y + a23 * z + a[15];\n }\n return out;\n }\n function mat4_invert(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3],\n a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7],\n a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11],\n a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15],\n b00 = a00 * a11 - a01 * a10,\n b01 = a00 * a12 - a02 * a10,\n b02 = a00 * a13 - a03 * a10,\n b03 = a01 * a12 - a02 * a11,\n b04 = a01 * a13 - a03 * a11,\n b05 = a02 * a13 - a03 * a12,\n b06 = a20 * a31 - a21 * a30,\n b07 = a20 * a32 - a22 * a30,\n b08 = a20 * a33 - a23 * a30,\n b09 = a21 * a32 - a22 * a31,\n b10 = a21 * a33 - a23 * a31,\n b11 = a22 * a33 - a23 * a32,\n det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n if (!det) {\n return null;\n }\n det = 1.0 / det;\n out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det;\n out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det;\n out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det;\n out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det;\n out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det;\n out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det;\n out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det;\n return out;\n }\n var defaultOrientation = new Float32Array([0, 0, 0, 1]);\n var defaultPosition = new Float32Array([0, 0, 0]);\n function updateEyeMatrices(projection, view, pose, fov, offset, vrDisplay) {\n mat4_perspectiveFromFieldOfView(projection, fov || null, vrDisplay.depthNear, vrDisplay.depthFar);\n var orientation = pose.orientation || defaultOrientation;\n var position = pose.position || defaultPosition;\n mat4_fromRotationTranslation(view, orientation, position);\n if (offset) mat4_translate(view, view, offset);\n mat4_invert(view, view);\n }\n return function (frameData, pose, vrDisplay) {\n if (!frameData || !pose) return false;\n frameData.pose = pose;\n frameData.timestamp = pose.timestamp;\n updateEyeMatrices(frameData.leftProjectionMatrix, frameData.leftViewMatrix, pose, vrDisplay._getFieldOfView(\"left\"), vrDisplay._getEyeOffset(\"left\"), vrDisplay);\n updateEyeMatrices(frameData.rightProjectionMatrix, frameData.rightViewMatrix, pose, vrDisplay._getFieldOfView(\"right\"), vrDisplay._getEyeOffset(\"right\"), vrDisplay);\n return true;\n };\n}();\nvar isInsideCrossOriginIFrame = function isInsideCrossOriginIFrame() {\n var isFramed = window.self !== window.top;\n var refOrigin = getOriginFromUrl(document.referrer);\n var thisOrigin = getOriginFromUrl(window.location.href);\n return isFramed && refOrigin !== thisOrigin;\n};\nvar getOriginFromUrl = function getOriginFromUrl(url) {\n var domainIdx;\n var protoSepIdx = url.indexOf(\"://\");\n if (protoSepIdx !== -1) {\n domainIdx = protoSepIdx + 3;\n } else {\n domainIdx = 0;\n }\n var domainEndIdx = url.indexOf('/', domainIdx);\n if (domainEndIdx === -1) {\n domainEndIdx = url.length;\n }\n return url.substring(0, domainEndIdx);\n};\nvar getQuaternionAngle = function getQuaternionAngle(quat) {\n if (quat.w > 1) {\n console.warn('getQuaternionAngle: w > 1');\n return 0;\n }\n var angle = 2 * Math.acos(quat.w);\n return angle;\n};\nvar warnOnce = function () {\n var observedWarnings = {};\n return function (key, message) {\n if (observedWarnings[key] === undefined) {\n console.warn('webvr-polyfill: ' + message);\n observedWarnings[key] = true;\n }\n };\n}();\nvar deprecateWarning = function deprecateWarning(deprecated, suggested) {\n var alternative = suggested ? 'Please use ' + suggested + ' instead.' : '';\n warnOnce(deprecated, deprecated + ' has been deprecated. ' + 'This may not work on native WebVR displays. ' + alternative);\n};\nfunction WGLUPreserveGLState(gl, bindings, callback) {\n if (!bindings) {\n callback(gl);\n return;\n }\n var boundValues = [];\n var activeTexture = null;\n for (var i = 0; i < bindings.length; ++i) {\n var binding = bindings[i];\n switch (binding) {\n case gl.TEXTURE_BINDING_2D:\n case gl.TEXTURE_BINDING_CUBE_MAP:\n var textureUnit = bindings[++i];\n if (textureUnit < gl.TEXTURE0 || textureUnit > gl.TEXTURE31) {\n console.error(\"TEXTURE_BINDING_2D or TEXTURE_BINDING_CUBE_MAP must be followed by a valid texture unit\");\n boundValues.push(null, null);\n break;\n }\n if (!activeTexture) {\n activeTexture = gl.getParameter(gl.ACTIVE_TEXTURE);\n }\n gl.activeTexture(textureUnit);\n boundValues.push(gl.getParameter(binding), null);\n break;\n case gl.ACTIVE_TEXTURE:\n activeTexture = gl.getParameter(gl.ACTIVE_TEXTURE);\n boundValues.push(null);\n break;\n default:\n boundValues.push(gl.getParameter(binding));\n break;\n }\n }\n callback(gl);\n for (var i = 0; i < bindings.length; ++i) {\n var binding = bindings[i];\n var boundValue = boundValues[i];\n switch (binding) {\n case gl.ACTIVE_TEXTURE:\n break;\n case gl.ARRAY_BUFFER_BINDING:\n gl.bindBuffer(gl.ARRAY_BUFFER, boundValue);\n break;\n case gl.COLOR_CLEAR_VALUE:\n gl.clearColor(boundValue[0], boundValue[1], boundValue[2], boundValue[3]);\n break;\n case gl.COLOR_WRITEMASK:\n gl.colorMask(boundValue[0], boundValue[1], boundValue[2], boundValue[3]);\n break;\n case gl.CURRENT_PROGRAM:\n gl.useProgram(boundValue);\n break;\n case gl.ELEMENT_ARRAY_BUFFER_BINDING:\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, boundValue);\n break;\n case gl.FRAMEBUFFER_BINDING:\n gl.bindFramebuffer(gl.FRAMEBUFFER, boundValue);\n break;\n case gl.RENDERBUFFER_BINDING:\n gl.bindRenderbuffer(gl.RENDERBUFFER, boundValue);\n break;\n case gl.TEXTURE_BINDING_2D:\n var textureUnit = bindings[++i];\n if (textureUnit < gl.TEXTURE0 || textureUnit > gl.TEXTURE31)\n break;\n gl.activeTexture(textureUnit);\n gl.bindTexture(gl.TEXTURE_2D, boundValue);\n break;\n case gl.TEXTURE_BINDING_CUBE_MAP:\n var textureUnit = bindings[++i];\n if (textureUnit < gl.TEXTURE0 || textureUnit > gl.TEXTURE31)\n break;\n gl.activeTexture(textureUnit);\n gl.bindTexture(gl.TEXTURE_CUBE_MAP, boundValue);\n break;\n case gl.VIEWPORT:\n gl.viewport(boundValue[0], boundValue[1], boundValue[2], boundValue[3]);\n break;\n case gl.BLEND:\n case gl.CULL_FACE:\n case gl.DEPTH_TEST:\n case gl.SCISSOR_TEST:\n case gl.STENCIL_TEST:\n if (boundValue) {\n gl.enable(binding);\n } else {\n gl.disable(binding);\n }\n break;\n default:\n console.log(\"No GL restore behavior for 0x\" + binding.toString(16));\n break;\n }\n if (activeTexture) {\n gl.activeTexture(activeTexture);\n }\n }\n}\nvar glPreserveState = WGLUPreserveGLState;\nvar distortionVS = ['attribute vec2 position;', 'attribute vec3 texCoord;', 'varying vec2 vTexCoord;', 'uniform vec4 viewportOffsetScale[2];', 'void main() {', ' vec4 viewport = viewportOffsetScale[int(texCoord.z)];', ' vTexCoord = (texCoord.xy * viewport.zw) + viewport.xy;', ' gl_Position = vec4( position, 1.0, 1.0 );', '}'].join('\\n');\nvar distortionFS = ['precision mediump float;', 'uniform sampler2D diffuse;', 'varying vec2 vTexCoord;', 'void main() {', ' gl_FragColor = texture2D(diffuse, vTexCoord);', '}'].join('\\n');\nfunction CardboardDistorter(gl, cardboardUI, bufferScale, dirtySubmitFrameBindings) {\n this.gl = gl;\n this.cardboardUI = cardboardUI;\n this.bufferScale = bufferScale;\n this.dirtySubmitFrameBindings = dirtySubmitFrameBindings;\n this.ctxAttribs = gl.getContextAttributes();\n this.meshWidth = 20;\n this.meshHeight = 20;\n this.bufferWidth = gl.drawingBufferWidth;\n this.bufferHeight = gl.drawingBufferHeight;\n this.realBindFramebuffer = gl.bindFramebuffer;\n this.realEnable = gl.enable;\n this.realDisable = gl.disable;\n this.realColorMask = gl.colorMask;\n this.realClearColor = gl.clearColor;\n this.realViewport = gl.viewport;\n if (!isIOS()) {\n this.realCanvasWidth = Object.getOwnPropertyDescriptor(gl.canvas.__proto__, 'width');\n this.realCanvasHeight = Object.getOwnPropertyDescriptor(gl.canvas.__proto__, 'height');\n }\n this.isPatched = false;\n this.lastBoundFramebuffer = null;\n this.cullFace = false;\n this.depthTest = false;\n this.blend = false;\n this.scissorTest = false;\n this.stencilTest = false;\n this.viewport = [0, 0, 0, 0];\n this.colorMask = [true, true, true, true];\n this.clearColor = [0, 0, 0, 0];\n this.attribs = {\n position: 0,\n texCoord: 1\n };\n this.program = linkProgram(gl, distortionVS, distortionFS, this.attribs);\n this.uniforms = getProgramUniforms(gl, this.program);\n this.viewportOffsetScale = new Float32Array(8);\n this.setTextureBounds();\n this.vertexBuffer = gl.createBuffer();\n this.indexBuffer = gl.createBuffer();\n this.indexCount = 0;\n this.renderTarget = gl.createTexture();\n this.framebuffer = gl.createFramebuffer();\n this.depthStencilBuffer = null;\n this.depthBuffer = null;\n this.stencilBuffer = null;\n if (this.ctxAttribs.depth && this.ctxAttribs.stencil) {\n this.depthStencilBuffer = gl.createRenderbuffer();\n } else if (this.ctxAttribs.depth) {\n this.depthBuffer = gl.createRenderbuffer();\n } else if (this.ctxAttribs.stencil) {\n this.stencilBuffer = gl.createRenderbuffer();\n }\n this.patch();\n this.onResize();\n}\nCardboardDistorter.prototype.destroy = function () {\n var gl = this.gl;\n this.unpatch();\n gl.deleteProgram(this.program);\n gl.deleteBuffer(this.vertexBuffer);\n gl.deleteBuffer(this.indexBuffer);\n gl.deleteTexture(this.renderTarget);\n gl.deleteFramebuffer(this.framebuffer);\n if (this.depthStencilBuffer) {\n gl.deleteRenderbuffer(this.depthStencilBuffer);\n }\n if (this.depthBuffer) {\n gl.deleteRenderbuffer(this.depthBuffer);\n }\n if (this.stencilBuffer) {\n gl.deleteRenderbuffer(this.stencilBuffer);\n }\n if (this.cardboardUI) {\n this.cardboardUI.destroy();\n }\n};\nCardboardDistorter.prototype.onResize = function () {\n var gl = this.gl;\n var self = this;\n var glState = [gl.RENDERBUFFER_BINDING, gl.TEXTURE_BINDING_2D, gl.TEXTURE0];\n glPreserveState(gl, glState, function (gl) {\n self.realBindFramebuffer.call(gl, gl.FRAMEBUFFER, null);\n if (self.scissorTest) {\n self.realDisable.call(gl, gl.SCISSOR_TEST);\n }\n self.realColorMask.call(gl, true, true, true, true);\n self.realViewport.call(gl, 0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);\n self.realClearColor.call(gl, 0, 0, 0, 1);\n gl.clear(gl.COLOR_BUFFER_BIT);\n self.realBindFramebuffer.call(gl, gl.FRAMEBUFFER, self.framebuffer);\n gl.bindTexture(gl.TEXTURE_2D, self.renderTarget);\n gl.texImage2D(gl.TEXTURE_2D, 0, self.ctxAttribs.alpha ? gl.RGBA : gl.RGB, self.bufferWidth, self.bufferHeight, 0, self.ctxAttribs.alpha ? gl.RGBA : gl.RGB, gl.UNSIGNED_BYTE, null);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, self.renderTarget, 0);\n if (self.ctxAttribs.depth && self.ctxAttribs.stencil) {\n gl.bindRenderbuffer(gl.RENDERBUFFER, self.depthStencilBuffer);\n gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_STENCIL, self.bufferWidth, self.bufferHeight);\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, gl.RENDERBUFFER, self.depthStencilBuffer);\n } else if (self.ctxAttribs.depth) {\n gl.bindRenderbuffer(gl.RENDERBUFFER, self.depthBuffer);\n gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_COMPONENT16, self.bufferWidth, self.bufferHeight);\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.RENDERBUFFER, self.depthBuffer);\n } else if (self.ctxAttribs.stencil) {\n gl.bindRenderbuffer(gl.RENDERBUFFER, self.stencilBuffer);\n gl.renderbufferStorage(gl.RENDERBUFFER, gl.STENCIL_INDEX8, self.bufferWidth, self.bufferHeight);\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.STENCIL_ATTACHMENT, gl.RENDERBUFFER, self.stencilBuffer);\n }\n if (!gl.checkFramebufferStatus(gl.FRAMEBUFFER) === gl.FRAMEBUFFER_COMPLETE) {\n console.error('Framebuffer incomplete!');\n }\n self.realBindFramebuffer.call(gl, gl.FRAMEBUFFER, self.lastBoundFramebuffer);\n if (self.scissorTest) {\n self.realEnable.call(gl, gl.SCISSOR_TEST);\n }\n self.realColorMask.apply(gl, self.colorMask);\n self.realViewport.apply(gl, self.viewport);\n self.realClearColor.apply(gl, self.clearColor);\n });\n if (this.cardboardUI) {\n this.cardboardUI.onResize();\n }\n};\nCardboardDistorter.prototype.patch = function () {\n if (this.isPatched) {\n return;\n }\n var self = this;\n var canvas = this.gl.canvas;\n var gl = this.gl;\n if (!isIOS()) {\n canvas.width = getScreenWidth() * this.bufferScale;\n canvas.height = getScreenHeight() * this.bufferScale;\n Object.defineProperty(canvas, 'width', {\n configurable: true,\n enumerable: true,\n get: function get() {\n return self.bufferWidth;\n },\n set: function set(value) {\n self.bufferWidth = value;\n self.realCanvasWidth.set.call(canvas, value);\n self.onResize();\n }\n });\n Object.defineProperty(canvas, 'height', {\n configurable: true,\n enumerable: true,\n get: function get() {\n return self.bufferHeight;\n },\n set: function set(value) {\n self.bufferHeight = value;\n self.realCanvasHeight.set.call(canvas, value);\n self.onResize();\n }\n });\n }\n this.lastBoundFramebuffer = gl.getParameter(gl.FRAMEBUFFER_BINDING);\n if (this.lastBoundFramebuffer == null) {\n this.lastBoundFramebuffer = this.framebuffer;\n this.gl.bindFramebuffer(gl.FRAMEBUFFER, this.framebuffer);\n }\n this.gl.bindFramebuffer = function (target, framebuffer) {\n self.lastBoundFramebuffer = framebuffer ? framebuffer : self.framebuffer;\n self.realBindFramebuffer.call(gl, target, self.lastBoundFramebuffer);\n };\n this.cullFace = gl.getParameter(gl.CULL_FACE);\n this.depthTest = gl.getParameter(gl.DEPTH_TEST);\n this.blend = gl.getParameter(gl.BLEND);\n this.scissorTest = gl.getParameter(gl.SCISSOR_TEST);\n this.stencilTest = gl.getParameter(gl.STENCIL_TEST);\n gl.enable = function (pname) {\n switch (pname) {\n case gl.CULL_FACE:\n self.cullFace = true;break;\n case gl.DEPTH_TEST:\n self.depthTest = true;break;\n case gl.BLEND:\n self.blend = true;break;\n case gl.SCISSOR_TEST:\n self.scissorTest = true;break;\n case gl.STENCIL_TEST:\n self.stencilTest = true;break;\n }\n self.realEnable.call(gl, pname);\n };\n gl.disable = function (pname) {\n switch (pname) {\n case gl.CULL_FACE:\n self.cullFace = false;break;\n case gl.DEPTH_TEST:\n self.depthTest = false;break;\n case gl.BLEND:\n self.blend = false;break;\n case gl.SCISSOR_TEST:\n self.scissorTest = false;break;\n case gl.STENCIL_TEST:\n self.stencilTest = false;break;\n }\n self.realDisable.call(gl, pname);\n };\n this.colorMask = gl.getParameter(gl.COLOR_WRITEMASK);\n gl.colorMask = function (r, g, b, a) {\n self.colorMask[0] = r;\n self.colorMask[1] = g;\n self.colorMask[2] = b;\n self.colorMask[3] = a;\n self.realColorMask.call(gl, r, g, b, a);\n };\n this.clearColor = gl.getParameter(gl.COLOR_CLEAR_VALUE);\n gl.clearColor = function (r, g, b, a) {\n self.clearColor[0] = r;\n self.clearColor[1] = g;\n self.clearColor[2] = b;\n self.clearColor[3] = a;\n self.realClearColor.call(gl, r, g, b, a);\n };\n this.viewport = gl.getParameter(gl.VIEWPORT);\n gl.viewport = function (x, y, w, h) {\n self.viewport[0] = x;\n self.viewport[1] = y;\n self.viewport[2] = w;\n self.viewport[3] = h;\n self.realViewport.call(gl, x, y, w, h);\n };\n this.isPatched = true;\n safariCssSizeWorkaround(canvas);\n};\nCardboardDistorter.prototype.unpatch = function () {\n if (!this.isPatched) {\n return;\n }\n var gl = this.gl;\n var canvas = this.gl.canvas;\n if (!isIOS()) {\n Object.defineProperty(canvas, 'width', this.realCanvasWidth);\n Object.defineProperty(canvas, 'height', this.realCanvasHeight);\n }\n canvas.width = this.bufferWidth;\n canvas.height = this.bufferHeight;\n gl.bindFramebuffer = this.realBindFramebuffer;\n gl.enable = this.realEnable;\n gl.disable = this.realDisable;\n gl.colorMask = this.realColorMask;\n gl.clearColor = this.realClearColor;\n gl.viewport = this.realViewport;\n if (this.lastBoundFramebuffer == this.framebuffer) {\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n }\n this.isPatched = false;\n setTimeout(function () {\n safariCssSizeWorkaround(canvas);\n }, 1);\n};\nCardboardDistorter.prototype.setTextureBounds = function (leftBounds, rightBounds) {\n if (!leftBounds) {\n leftBounds = [0, 0, 0.5, 1];\n }\n if (!rightBounds) {\n rightBounds = [0.5, 0, 0.5, 1];\n }\n this.viewportOffsetScale[0] = leftBounds[0];\n this.viewportOffsetScale[1] = leftBounds[1];\n this.viewportOffsetScale[2] = leftBounds[2];\n this.viewportOffsetScale[3] = leftBounds[3];\n this.viewportOffsetScale[4] = rightBounds[0];\n this.viewportOffsetScale[5] = rightBounds[1];\n this.viewportOffsetScale[6] = rightBounds[2];\n this.viewportOffsetScale[7] = rightBounds[3];\n};\nCardboardDistorter.prototype.submitFrame = function () {\n var gl = this.gl;\n var self = this;\n var glState = [];\n if (!this.dirtySubmitFrameBindings) {\n glState.push(gl.CURRENT_PROGRAM, gl.ARRAY_BUFFER_BINDING, gl.ELEMENT_ARRAY_BUFFER_BINDING, gl.TEXTURE_BINDING_2D, gl.TEXTURE0);\n }\n glPreserveState(gl, glState, function (gl) {\n self.realBindFramebuffer.call(gl, gl.FRAMEBUFFER, null);\n if (self.cullFace) {\n self.realDisable.call(gl, gl.CULL_FACE);\n }\n if (self.depthTest) {\n self.realDisable.call(gl, gl.DEPTH_TEST);\n }\n if (self.blend) {\n self.realDisable.call(gl, gl.BLEND);\n }\n if (self.scissorTest) {\n self.realDisable.call(gl, gl.SCISSOR_TEST);\n }\n if (self.stencilTest) {\n self.realDisable.call(gl, gl.STENCIL_TEST);\n }\n self.realColorMask.call(gl, true, true, true, true);\n self.realViewport.call(gl, 0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);\n if (self.ctxAttribs.alpha || isIOS()) {\n self.realClearColor.call(gl, 0, 0, 0, 1);\n gl.clear(gl.COLOR_BUFFER_BIT);\n }\n gl.useProgram(self.program);\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, self.indexBuffer);\n gl.bindBuffer(gl.ARRAY_BUFFER, self.vertexBuffer);\n gl.enableVertexAttribArray(self.attribs.position);\n gl.enableVertexAttribArray(self.attribs.texCoord);\n gl.vertexAttribPointer(self.attribs.position, 2, gl.FLOAT, false, 20, 0);\n gl.vertexAttribPointer(self.attribs.texCoord, 3, gl.FLOAT, false, 20, 8);\n gl.activeTexture(gl.TEXTURE0);\n gl.uniform1i(self.uniforms.diffuse, 0);\n gl.bindTexture(gl.TEXTURE_2D, self.renderTarget);\n gl.uniform4fv(self.uniforms.viewportOffsetScale, self.viewportOffsetScale);\n gl.drawElements(gl.TRIANGLES, self.indexCount, gl.UNSIGNED_SHORT, 0);\n if (self.cardboardUI) {\n self.cardboardUI.renderNoState();\n }\n self.realBindFramebuffer.call(self.gl, gl.FRAMEBUFFER, self.framebuffer);\n if (!self.ctxAttribs.preserveDrawingBuffer) {\n self.realClearColor.call(gl, 0, 0, 0, 0);\n gl.clear(gl.COLOR_BUFFER_BIT);\n }\n if (!self.dirtySubmitFrameBindings) {\n self.realBindFramebuffer.call(gl, gl.FRAMEBUFFER, self.lastBoundFramebuffer);\n }\n if (self.cullFace) {\n self.realEnable.call(gl, gl.CULL_FACE);\n }\n if (self.depthTest) {\n self.realEnable.call(gl, gl.DEPTH_TEST);\n }\n if (self.blend) {\n self.realEnable.call(gl, gl.BLEND);\n }\n if (self.scissorTest) {\n self.realEnable.call(gl, gl.SCISSOR_TEST);\n }\n if (self.stencilTest) {\n self.realEnable.call(gl, gl.STENCIL_TEST);\n }\n self.realColorMask.apply(gl, self.colorMask);\n self.realViewport.apply(gl, self.viewport);\n if (self.ctxAttribs.alpha || !self.ctxAttribs.preserveDrawingBuffer) {\n self.realClearColor.apply(gl, self.clearColor);\n }\n });\n if (isIOS()) {\n var canvas = gl.canvas;\n if (canvas.width != self.bufferWidth || canvas.height != self.bufferHeight) {\n self.bufferWidth = canvas.width;\n self.bufferHeight = canvas.height;\n self.onResize();\n }\n }\n};\nCardboardDistorter.prototype.updateDeviceInfo = function (deviceInfo) {\n var gl = this.gl;\n var self = this;\n var glState = [gl.ARRAY_BUFFER_BINDING, gl.ELEMENT_ARRAY_BUFFER_BINDING];\n glPreserveState(gl, glState, function (gl) {\n var vertices = self.computeMeshVertices_(self.meshWidth, self.meshHeight, deviceInfo);\n gl.bindBuffer(gl.ARRAY_BUFFER, self.vertexBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW);\n if (!self.indexCount) {\n var indices = self.computeMeshIndices_(self.meshWidth, self.meshHeight);\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, self.indexBuffer);\n gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, indices, gl.STATIC_DRAW);\n self.indexCount = indices.length;\n }\n });\n};\nCardboardDistorter.prototype.computeMeshVertices_ = function (width, height, deviceInfo) {\n var vertices = new Float32Array(2 * width * height * 5);\n var lensFrustum = deviceInfo.getLeftEyeVisibleTanAngles();\n var noLensFrustum = deviceInfo.getLeftEyeNoLensTanAngles();\n var viewport = deviceInfo.getLeftEyeVisibleScreenRect(noLensFrustum);\n var vidx = 0;\n for (var e = 0; e < 2; e++) {\n for (var j = 0; j < height; j++) {\n for (var i = 0; i < width; i++, vidx++) {\n var u = i / (width - 1);\n var v = j / (height - 1);\n var s = u;\n var t = v;\n var x = lerp(lensFrustum[0], lensFrustum[2], u);\n var y = lerp(lensFrustum[3], lensFrustum[1], v);\n var d = Math.sqrt(x * x + y * y);\n var r = deviceInfo.distortion.distortInverse(d);\n var p = x * r / d;\n var q = y * r / d;\n u = (p - noLensFrustum[0]) / (noLensFrustum[2] - noLensFrustum[0]);\n v = (q - noLensFrustum[3]) / (noLensFrustum[1] - noLensFrustum[3]);\n u = (viewport.x + u * viewport.width - 0.5) * 2.0;\n v = (viewport.y + v * viewport.height - 0.5) * 2.0;\n vertices[vidx * 5 + 0] = u;\n vertices[vidx * 5 + 1] = v;\n vertices[vidx * 5 + 2] = s;\n vertices[vidx * 5 + 3] = t;\n vertices[vidx * 5 + 4] = e;\n }\n }\n var w = lensFrustum[2] - lensFrustum[0];\n lensFrustum[0] = -(w + lensFrustum[0]);\n lensFrustum[2] = w - lensFrustum[2];\n w = noLensFrustum[2] - noLensFrustum[0];\n noLensFrustum[0] = -(w + noLensFrustum[0]);\n noLensFrustum[2] = w - noLensFrustum[2];\n viewport.x = 1 - (viewport.x + viewport.width);\n }\n return vertices;\n};\nCardboardDistorter.prototype.computeMeshIndices_ = function (width, height) {\n var indices = new Uint16Array(2 * (width - 1) * (height - 1) * 6);\n var halfwidth = width / 2;\n var halfheight = height / 2;\n var vidx = 0;\n var iidx = 0;\n for (var e = 0; e < 2; e++) {\n for (var j = 0; j < height; j++) {\n for (var i = 0; i < width; i++, vidx++) {\n if (i == 0 || j == 0) continue;\n if (i <= halfwidth == j <= halfheight) {\n indices[iidx++] = vidx;\n indices[iidx++] = vidx - width - 1;\n indices[iidx++] = vidx - width;\n indices[iidx++] = vidx - width - 1;\n indices[iidx++] = vidx;\n indices[iidx++] = vidx - 1;\n } else {\n indices[iidx++] = vidx - 1;\n indices[iidx++] = vidx - width;\n indices[iidx++] = vidx;\n indices[iidx++] = vidx - width;\n indices[iidx++] = vidx - 1;\n indices[iidx++] = vidx - width - 1;\n }\n }\n }\n }\n return indices;\n};\nCardboardDistorter.prototype.getOwnPropertyDescriptor_ = function (proto, attrName) {\n var descriptor = Object.getOwnPropertyDescriptor(proto, attrName);\n if (descriptor.get === undefined || descriptor.set === undefined) {\n descriptor.configurable = true;\n descriptor.enumerable = true;\n descriptor.get = function () {\n return this.getAttribute(attrName);\n };\n descriptor.set = function (val) {\n this.setAttribute(attrName, val);\n };\n }\n return descriptor;\n};\nvar uiVS = ['attribute vec2 position;', 'uniform mat4 projectionMat;', 'void main() {', ' gl_Position = projectionMat * vec4( position, -1.0, 1.0 );', '}'].join('\\n');\nvar uiFS = ['precision mediump float;', 'uniform vec4 color;', 'void main() {', ' gl_FragColor = color;', '}'].join('\\n');\nvar DEG2RAD = Math.PI / 180.0;\nvar kAnglePerGearSection = 60;\nvar kOuterRimEndAngle = 12;\nvar kInnerRimBeginAngle = 20;\nvar kOuterRadius = 1;\nvar kMiddleRadius = 0.75;\nvar kInnerRadius = 0.3125;\nvar kCenterLineThicknessDp = 4;\nvar kButtonWidthDp = 28;\nvar kTouchSlopFactor = 1.5;\nfunction CardboardUI(gl) {\n this.gl = gl;\n this.attribs = {\n position: 0\n };\n this.program = linkProgram(gl, uiVS, uiFS, this.attribs);\n this.uniforms = getProgramUniforms(gl, this.program);\n this.vertexBuffer = gl.createBuffer();\n this.gearOffset = 0;\n this.gearVertexCount = 0;\n this.arrowOffset = 0;\n this.arrowVertexCount = 0;\n this.projMat = new Float32Array(16);\n this.listener = null;\n this.onResize();\n}\nCardboardUI.prototype.destroy = function () {\n var gl = this.gl;\n if (this.listener) {\n gl.canvas.removeEventListener('click', this.listener, false);\n }\n gl.deleteProgram(this.program);\n gl.deleteBuffer(this.vertexBuffer);\n};\nCardboardUI.prototype.listen = function (optionsCallback, backCallback) {\n var canvas = this.gl.canvas;\n this.listener = function (event) {\n var midline = canvas.clientWidth / 2;\n var buttonSize = kButtonWidthDp * kTouchSlopFactor;\n if (event.clientX > midline - buttonSize && event.clientX < midline + buttonSize && event.clientY > canvas.clientHeight - buttonSize) {\n optionsCallback(event);\n }\n else if (event.clientX < buttonSize && event.clientY < buttonSize) {\n backCallback(event);\n }\n };\n canvas.addEventListener('click', this.listener, false);\n};\nCardboardUI.prototype.onResize = function () {\n var gl = this.gl;\n var self = this;\n var glState = [gl.ARRAY_BUFFER_BINDING];\n glPreserveState(gl, glState, function (gl) {\n var vertices = [];\n var midline = gl.drawingBufferWidth / 2;\n var physicalPixels = Math.max(screen.width, screen.height) * window.devicePixelRatio;\n var scalingRatio = gl.drawingBufferWidth / physicalPixels;\n var dps = scalingRatio * window.devicePixelRatio;\n var lineWidth = kCenterLineThicknessDp * dps / 2;\n var buttonSize = kButtonWidthDp * kTouchSlopFactor * dps;\n var buttonScale = kButtonWidthDp * dps / 2;\n var buttonBorder = (kButtonWidthDp * kTouchSlopFactor - kButtonWidthDp) * dps;\n vertices.push(midline - lineWidth, buttonSize);\n vertices.push(midline - lineWidth, gl.drawingBufferHeight);\n vertices.push(midline + lineWidth, buttonSize);\n vertices.push(midline + lineWidth, gl.drawingBufferHeight);\n self.gearOffset = vertices.length / 2;\n function addGearSegment(theta, r) {\n var angle = (90 - theta) * DEG2RAD;\n var x = Math.cos(angle);\n var y = Math.sin(angle);\n vertices.push(kInnerRadius * x * buttonScale + midline, kInnerRadius * y * buttonScale + buttonScale);\n vertices.push(r * x * buttonScale + midline, r * y * buttonScale + buttonScale);\n }\n for (var i = 0; i <= 6; i++) {\n var segmentTheta = i * kAnglePerGearSection;\n addGearSegment(segmentTheta, kOuterRadius);\n addGearSegment(segmentTheta + kOuterRimEndAngle, kOuterRadius);\n addGearSegment(segmentTheta + kInnerRimBeginAngle, kMiddleRadius);\n addGearSegment(segmentTheta + (kAnglePerGearSection - kInnerRimBeginAngle), kMiddleRadius);\n addGearSegment(segmentTheta + (kAnglePerGearSection - kOuterRimEndAngle), kOuterRadius);\n }\n self.gearVertexCount = vertices.length / 2 - self.gearOffset;\n self.arrowOffset = vertices.length / 2;\n function addArrowVertex(x, y) {\n vertices.push(buttonBorder + x, gl.drawingBufferHeight - buttonBorder - y);\n }\n var angledLineWidth = lineWidth / Math.sin(45 * DEG2RAD);\n addArrowVertex(0, buttonScale);\n addArrowVertex(buttonScale, 0);\n addArrowVertex(buttonScale + angledLineWidth, angledLineWidth);\n addArrowVertex(angledLineWidth, buttonScale + angledLineWidth);\n addArrowVertex(angledLineWidth, buttonScale - angledLineWidth);\n addArrowVertex(0, buttonScale);\n addArrowVertex(buttonScale, buttonScale * 2);\n addArrowVertex(buttonScale + angledLineWidth, buttonScale * 2 - angledLineWidth);\n addArrowVertex(angledLineWidth, buttonScale - angledLineWidth);\n addArrowVertex(0, buttonScale);\n addArrowVertex(angledLineWidth, buttonScale - lineWidth);\n addArrowVertex(kButtonWidthDp * dps, buttonScale - lineWidth);\n addArrowVertex(angledLineWidth, buttonScale + lineWidth);\n addArrowVertex(kButtonWidthDp * dps, buttonScale + lineWidth);\n self.arrowVertexCount = vertices.length / 2 - self.arrowOffset;\n gl.bindBuffer(gl.ARRAY_BUFFER, self.vertexBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertices), gl.STATIC_DRAW);\n });\n};\nCardboardUI.prototype.render = function () {\n var gl = this.gl;\n var self = this;\n var glState = [gl.CULL_FACE, gl.DEPTH_TEST, gl.BLEND, gl.SCISSOR_TEST, gl.STENCIL_TEST, gl.COLOR_WRITEMASK, gl.VIEWPORT, gl.CURRENT_PROGRAM, gl.ARRAY_BUFFER_BINDING];\n glPreserveState(gl, glState, function (gl) {\n gl.disable(gl.CULL_FACE);\n gl.disable(gl.DEPTH_TEST);\n gl.disable(gl.BLEND);\n gl.disable(gl.SCISSOR_TEST);\n gl.disable(gl.STENCIL_TEST);\n gl.colorMask(true, true, true, true);\n gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);\n self.renderNoState();\n });\n};\nCardboardUI.prototype.renderNoState = function () {\n var gl = this.gl;\n gl.useProgram(this.program);\n gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexBuffer);\n gl.enableVertexAttribArray(this.attribs.position);\n gl.vertexAttribPointer(this.attribs.position, 2, gl.FLOAT, false, 8, 0);\n gl.uniform4f(this.uniforms.color, 1.0, 1.0, 1.0, 1.0);\n orthoMatrix(this.projMat, 0, gl.drawingBufferWidth, 0, gl.drawingBufferHeight, 0.1, 1024.0);\n gl.uniformMatrix4fv(this.uniforms.projectionMat, false, this.projMat);\n gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);\n gl.drawArrays(gl.TRIANGLE_STRIP, this.gearOffset, this.gearVertexCount);\n gl.drawArrays(gl.TRIANGLE_STRIP, this.arrowOffset, this.arrowVertexCount);\n};\nfunction Distortion(coefficients) {\n this.coefficients = coefficients;\n}\nDistortion.prototype.distortInverse = function (radius) {\n var r0 = 0;\n var r1 = 1;\n var dr0 = radius - this.distort(r0);\n while (Math.abs(r1 - r0) > 0.0001 ) {\n var dr1 = radius - this.distort(r1);\n var r2 = r1 - dr1 * ((r1 - r0) / (dr1 - dr0));\n r0 = r1;\n r1 = r2;\n dr0 = dr1;\n }\n return r1;\n};\nDistortion.prototype.distort = function (radius) {\n var r2 = radius * radius;\n var ret = 0;\n for (var i = 0; i < this.coefficients.length; i++) {\n ret = r2 * (ret + this.coefficients[i]);\n }\n return (ret + 1) * radius;\n};\nvar degToRad = Math.PI / 180;\nvar radToDeg = 180 / Math.PI;\nvar Vector3 = function Vector3(x, y, z) {\n this.x = x || 0;\n this.y = y || 0;\n this.z = z || 0;\n};\nVector3.prototype = {\n constructor: Vector3,\n set: function set(x, y, z) {\n this.x = x;\n this.y = y;\n this.z = z;\n return this;\n },\n copy: function copy(v) {\n this.x = v.x;\n this.y = v.y;\n this.z = v.z;\n return this;\n },\n length: function length() {\n return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);\n },\n normalize: function normalize() {\n var scalar = this.length();\n if (scalar !== 0) {\n var invScalar = 1 / scalar;\n this.multiplyScalar(invScalar);\n } else {\n this.x = 0;\n this.y = 0;\n this.z = 0;\n }\n return this;\n },\n multiplyScalar: function multiplyScalar(scalar) {\n this.x *= scalar;\n this.y *= scalar;\n this.z *= scalar;\n },\n applyQuaternion: function applyQuaternion(q) {\n var x = this.x;\n var y = this.y;\n var z = this.z;\n var qx = q.x;\n var qy = q.y;\n var qz = q.z;\n var qw = q.w;\n var ix = qw * x + qy * z - qz * y;\n var iy = qw * y + qz * x - qx * z;\n var iz = qw * z + qx * y - qy * x;\n var iw = -qx * x - qy * y - qz * z;\n this.x = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n this.y = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n this.z = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n return this;\n },\n dot: function dot(v) {\n return this.x * v.x + this.y * v.y + this.z * v.z;\n },\n crossVectors: function crossVectors(a, b) {\n var ax = a.x,\n ay = a.y,\n az = a.z;\n var bx = b.x,\n by = b.y,\n bz = b.z;\n this.x = ay * bz - az * by;\n this.y = az * bx - ax * bz;\n this.z = ax * by - ay * bx;\n return this;\n }\n};\nvar Quaternion = function Quaternion(x, y, z, w) {\n this.x = x || 0;\n this.y = y || 0;\n this.z = z || 0;\n this.w = w !== undefined ? w : 1;\n};\nQuaternion.prototype = {\n constructor: Quaternion,\n set: function set(x, y, z, w) {\n this.x = x;\n this.y = y;\n this.z = z;\n this.w = w;\n return this;\n },\n copy: function copy(quaternion) {\n this.x = quaternion.x;\n this.y = quaternion.y;\n this.z = quaternion.z;\n this.w = quaternion.w;\n return this;\n },\n setFromEulerXYZ: function setFromEulerXYZ(x, y, z) {\n var c1 = Math.cos(x / 2);\n var c2 = Math.cos(y / 2);\n var c3 = Math.cos(z / 2);\n var s1 = Math.sin(x / 2);\n var s2 = Math.sin(y / 2);\n var s3 = Math.sin(z / 2);\n this.x = s1 * c2 * c3 + c1 * s2 * s3;\n this.y = c1 * s2 * c3 - s1 * c2 * s3;\n this.z = c1 * c2 * s3 + s1 * s2 * c3;\n this.w = c1 * c2 * c3 - s1 * s2 * s3;\n return this;\n },\n setFromEulerYXZ: function setFromEulerYXZ(x, y, z) {\n var c1 = Math.cos(x / 2);\n var c2 = Math.cos(y / 2);\n var c3 = Math.cos(z / 2);\n var s1 = Math.sin(x / 2);\n var s2 = Math.sin(y / 2);\n var s3 = Math.sin(z / 2);\n this.x = s1 * c2 * c3 + c1 * s2 * s3;\n this.y = c1 * s2 * c3 - s1 * c2 * s3;\n this.z = c1 * c2 * s3 - s1 * s2 * c3;\n this.w = c1 * c2 * c3 + s1 * s2 * s3;\n return this;\n },\n setFromAxisAngle: function setFromAxisAngle(axis, angle) {\n var halfAngle = angle / 2,\n s = Math.sin(halfAngle);\n this.x = axis.x * s;\n this.y = axis.y * s;\n this.z = axis.z * s;\n this.w = Math.cos(halfAngle);\n return this;\n },\n multiply: function multiply(q) {\n return this.multiplyQuaternions(this, q);\n },\n multiplyQuaternions: function multiplyQuaternions(a, b) {\n var qax = a.x,\n qay = a.y,\n qaz = a.z,\n qaw = a.w;\n var qbx = b.x,\n qby = b.y,\n qbz = b.z,\n qbw = b.w;\n this.x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n this.y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n this.z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n this.w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n return this;\n },\n inverse: function inverse() {\n this.x *= -1;\n this.y *= -1;\n this.z *= -1;\n this.normalize();\n return this;\n },\n normalize: function normalize() {\n var l = Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w);\n if (l === 0) {\n this.x = 0;\n this.y = 0;\n this.z = 0;\n this.w = 1;\n } else {\n l = 1 / l;\n this.x = this.x * l;\n this.y = this.y * l;\n this.z = this.z * l;\n this.w = this.w * l;\n }\n return this;\n },\n slerp: function slerp(qb, t) {\n if (t === 0) return this;\n if (t === 1) return this.copy(qb);\n var x = this.x,\n y = this.y,\n z = this.z,\n w = this.w;\n var cosHalfTheta = w * qb.w + x * qb.x + y * qb.y + z * qb.z;\n if (cosHalfTheta < 0) {\n this.w = -qb.w;\n this.x = -qb.x;\n this.y = -qb.y;\n this.z = -qb.z;\n cosHalfTheta = -cosHalfTheta;\n } else {\n this.copy(qb);\n }\n if (cosHalfTheta >= 1.0) {\n this.w = w;\n this.x = x;\n this.y = y;\n this.z = z;\n return this;\n }\n var halfTheta = Math.acos(cosHalfTheta);\n var sinHalfTheta = Math.sqrt(1.0 - cosHalfTheta * cosHalfTheta);\n if (Math.abs(sinHalfTheta) < 0.001) {\n this.w = 0.5 * (w + this.w);\n this.x = 0.5 * (x + this.x);\n this.y = 0.5 * (y + this.y);\n this.z = 0.5 * (z + this.z);\n return this;\n }\n var ratioA = Math.sin((1 - t) * halfTheta) / sinHalfTheta,\n ratioB = Math.sin(t * halfTheta) / sinHalfTheta;\n this.w = w * ratioA + this.w * ratioB;\n this.x = x * ratioA + this.x * ratioB;\n this.y = y * ratioA + this.y * ratioB;\n this.z = z * ratioA + this.z * ratioB;\n return this;\n },\n setFromUnitVectors: function () {\n var v1, r;\n var EPS = 0.000001;\n return function (vFrom, vTo) {\n if (v1 === undefined) v1 = new Vector3();\n r = vFrom.dot(vTo) + 1;\n if (r < EPS) {\n r = 0;\n if (Math.abs(vFrom.x) > Math.abs(vFrom.z)) {\n v1.set(-vFrom.y, vFrom.x, 0);\n } else {\n v1.set(0, -vFrom.z, vFrom.y);\n }\n } else {\n v1.crossVectors(vFrom, vTo);\n }\n this.x = v1.x;\n this.y = v1.y;\n this.z = v1.z;\n this.w = r;\n this.normalize();\n return this;\n };\n }()\n};\nfunction Device(params) {\n this.width = params.width || getScreenWidth();\n this.height = params.height || getScreenHeight();\n this.widthMeters = params.widthMeters;\n this.heightMeters = params.heightMeters;\n this.bevelMeters = params.bevelMeters;\n}\nvar DEFAULT_ANDROID = new Device({\n widthMeters: 0.110,\n heightMeters: 0.062,\n bevelMeters: 0.004\n});\nvar DEFAULT_IOS = new Device({\n widthMeters: 0.1038,\n heightMeters: 0.0584,\n bevelMeters: 0.004\n});\nvar Viewers = {\n CardboardV1: new CardboardViewer({\n id: 'CardboardV1',\n label: 'Cardboard I/O 2014',\n fov: 40,\n interLensDistance: 0.060,\n baselineLensDistance: 0.035,\n screenLensDistance: 0.042,\n distortionCoefficients: [0.441, 0.156],\n inverseCoefficients: [-0.4410035, 0.42756155, -0.4804439, 0.5460139, -0.58821183, 0.5733938, -0.48303202, 0.33299083, -0.17573841, 0.0651772, -0.01488963, 0.001559834]\n }),\n CardboardV2: new CardboardViewer({\n id: 'CardboardV2',\n label: 'Cardboard I/O 2015',\n fov: 60,\n interLensDistance: 0.064,\n baselineLensDistance: 0.035,\n screenLensDistance: 0.039,\n distortionCoefficients: [0.34, 0.55],\n inverseCoefficients: [-0.33836704, -0.18162185, 0.862655, -1.2462051, 1.0560602, -0.58208317, 0.21609078, -0.05444823, 0.009177956, -9.904169E-4, 6.183535E-5, -1.6981803E-6]\n })\n};\nfunction DeviceInfo(deviceParams) {\n this.viewer = Viewers.CardboardV2;\n this.updateDeviceParams(deviceParams);\n this.distortion = new Distortion(this.viewer.distortionCoefficients);\n}\nDeviceInfo.prototype.updateDeviceParams = function (deviceParams) {\n this.device = this.determineDevice_(deviceParams) || this.device;\n};\nDeviceInfo.prototype.getDevice = function () {\n return this.device;\n};\nDeviceInfo.prototype.setViewer = function (viewer) {\n this.viewer = viewer;\n this.distortion = new Distortion(this.viewer.distortionCoefficients);\n};\nDeviceInfo.prototype.determineDevice_ = function (deviceParams) {\n if (!deviceParams) {\n if (isIOS()) {\n console.warn('Using fallback iOS device measurements.');\n return DEFAULT_IOS;\n } else {\n console.warn('Using fallback Android device measurements.');\n return DEFAULT_ANDROID;\n }\n }\n var METERS_PER_INCH = 0.0254;\n var metersPerPixelX = METERS_PER_INCH / deviceParams.xdpi;\n var metersPerPixelY = METERS_PER_INCH / deviceParams.ydpi;\n var width = getScreenWidth();\n var height = getScreenHeight();\n return new Device({\n widthMeters: metersPerPixelX * width,\n heightMeters: metersPerPixelY * height,\n bevelMeters: deviceParams.bevelMm * 0.001\n });\n};\nDeviceInfo.prototype.getDistortedFieldOfViewLeftEye = function () {\n var viewer = this.viewer;\n var device = this.device;\n var distortion = this.distortion;\n var eyeToScreenDistance = viewer.screenLensDistance;\n var outerDist = (device.widthMeters - viewer.interLensDistance) / 2;\n var innerDist = viewer.interLensDistance / 2;\n var bottomDist = viewer.baselineLensDistance - device.bevelMeters;\n var topDist = device.heightMeters - bottomDist;\n var outerAngle = radToDeg * Math.atan(distortion.distort(outerDist / eyeToScreenDistance));\n var innerAngle = radToDeg * Math.atan(distortion.distort(innerDist / eyeToScreenDistance));\n var bottomAngle = radToDeg * Math.atan(distortion.distort(bottomDist / eyeToScreenDistance));\n var topAngle = radToDeg * Math.atan(distortion.distort(topDist / eyeToScreenDistance));\n return {\n leftDegrees: Math.min(outerAngle, viewer.fov),\n rightDegrees: Math.min(innerAngle, viewer.fov),\n downDegrees: Math.min(bottomAngle, viewer.fov),\n upDegrees: Math.min(topAngle, viewer.fov)\n };\n};\nDeviceInfo.prototype.getLeftEyeVisibleTanAngles = function () {\n var viewer = this.viewer;\n var device = this.device;\n var distortion = this.distortion;\n var fovLeft = Math.tan(-degToRad * viewer.fov);\n var fovTop = Math.tan(degToRad * viewer.fov);\n var fovRight = Math.tan(degToRad * viewer.fov);\n var fovBottom = Math.tan(-degToRad * viewer.fov);\n var halfWidth = device.widthMeters / 4;\n var halfHeight = device.heightMeters / 2;\n var verticalLensOffset = viewer.baselineLensDistance - device.bevelMeters - halfHeight;\n var centerX = viewer.interLensDistance / 2 - halfWidth;\n var centerY = -verticalLensOffset;\n var centerZ = viewer.screenLensDistance;\n var screenLeft = distortion.distort((centerX - halfWidth) / centerZ);\n var screenTop = distortion.distort((centerY + halfHeight) / centerZ);\n var screenRight = distortion.distort((centerX + halfWidth) / centerZ);\n var screenBottom = distortion.distort((centerY - halfHeight) / centerZ);\n var result = new Float32Array(4);\n result[0] = Math.max(fovLeft, screenLeft);\n result[1] = Math.min(fovTop, screenTop);\n result[2] = Math.min(fovRight, screenRight);\n result[3] = Math.max(fovBottom, screenBottom);\n return result;\n};\nDeviceInfo.prototype.getLeftEyeNoLensTanAngles = function () {\n var viewer = this.viewer;\n var device = this.device;\n var distortion = this.distortion;\n var result = new Float32Array(4);\n var fovLeft = distortion.distortInverse(Math.tan(-degToRad * viewer.fov));\n var fovTop = distortion.distortInverse(Math.tan(degToRad * viewer.fov));\n var fovRight = distortion.distortInverse(Math.tan(degToRad * viewer.fov));\n var fovBottom = distortion.distortInverse(Math.tan(-degToRad * viewer.fov));\n var halfWidth = device.widthMeters / 4;\n var halfHeight = device.heightMeters / 2;\n var verticalLensOffset = viewer.baselineLensDistance - device.bevelMeters - halfHeight;\n var centerX = viewer.interLensDistance / 2 - halfWidth;\n var centerY = -verticalLensOffset;\n var centerZ = viewer.screenLensDistance;\n var screenLeft = (centerX - halfWidth) / centerZ;\n var screenTop = (centerY + halfHeight) / centerZ;\n var screenRight = (centerX + halfWidth) / centerZ;\n var screenBottom = (centerY - halfHeight) / centerZ;\n result[0] = Math.max(fovLeft, screenLeft);\n result[1] = Math.min(fovTop, screenTop);\n result[2] = Math.min(fovRight, screenRight);\n result[3] = Math.max(fovBottom, screenBottom);\n return result;\n};\nDeviceInfo.prototype.getLeftEyeVisibleScreenRect = function (undistortedFrustum) {\n var viewer = this.viewer;\n var device = this.device;\n var dist = viewer.screenLensDistance;\n var eyeX = (device.widthMeters - viewer.interLensDistance) / 2;\n var eyeY = viewer.baselineLensDistance - device.bevelMeters;\n var left = (undistortedFrustum[0] * dist + eyeX) / device.widthMeters;\n var top = (undistortedFrustum[1] * dist + eyeY) / device.heightMeters;\n var right = (undistortedFrustum[2] * dist + eyeX) / device.widthMeters;\n var bottom = (undistortedFrustum[3] * dist + eyeY) / device.heightMeters;\n return {\n x: left,\n y: bottom,\n width: right - left,\n height: top - bottom\n };\n};\nDeviceInfo.prototype.getFieldOfViewLeftEye = function (opt_isUndistorted) {\n return opt_isUndistorted ? this.getUndistortedFieldOfViewLeftEye() : this.getDistortedFieldOfViewLeftEye();\n};\nDeviceInfo.prototype.getFieldOfViewRightEye = function (opt_isUndistorted) {\n var fov = this.getFieldOfViewLeftEye(opt_isUndistorted);\n return {\n leftDegrees: fov.rightDegrees,\n rightDegrees: fov.leftDegrees,\n upDegrees: fov.upDegrees,\n downDegrees: fov.downDegrees\n };\n};\nDeviceInfo.prototype.getUndistortedFieldOfViewLeftEye = function () {\n var p = this.getUndistortedParams_();\n return {\n leftDegrees: radToDeg * Math.atan(p.outerDist),\n rightDegrees: radToDeg * Math.atan(p.innerDist),\n downDegrees: radToDeg * Math.atan(p.bottomDist),\n upDegrees: radToDeg * Math.atan(p.topDist)\n };\n};\nDeviceInfo.prototype.getUndistortedViewportLeftEye = function () {\n var p = this.getUndistortedParams_();\n var viewer = this.viewer;\n var device = this.device;\n var eyeToScreenDistance = viewer.screenLensDistance;\n var screenWidth = device.widthMeters / eyeToScreenDistance;\n var screenHeight = device.heightMeters / eyeToScreenDistance;\n var xPxPerTanAngle = device.width / screenWidth;\n var yPxPerTanAngle = device.height / screenHeight;\n var x = Math.round((p.eyePosX - p.outerDist) * xPxPerTanAngle);\n var y = Math.round((p.eyePosY - p.bottomDist) * yPxPerTanAngle);\n return {\n x: x,\n y: y,\n width: Math.round((p.eyePosX + p.innerDist) * xPxPerTanAngle) - x,\n height: Math.round((p.eyePosY + p.topDist) * yPxPerTanAngle) - y\n };\n};\nDeviceInfo.prototype.getUndistortedParams_ = function () {\n var viewer = this.viewer;\n var device = this.device;\n var distortion = this.distortion;\n var eyeToScreenDistance = viewer.screenLensDistance;\n var halfLensDistance = viewer.interLensDistance / 2 / eyeToScreenDistance;\n var screenWidth = device.widthMeters / eyeToScreenDistance;\n var screenHeight = device.heightMeters / eyeToScreenDistance;\n var eyePosX = screenWidth / 2 - halfLensDistance;\n var eyePosY = (viewer.baselineLensDistance - device.bevelMeters) / eyeToScreenDistance;\n var maxFov = viewer.fov;\n var viewerMax = distortion.distortInverse(Math.tan(degToRad * maxFov));\n var outerDist = Math.min(eyePosX, viewerMax);\n var innerDist = Math.min(halfLensDistance, viewerMax);\n var bottomDist = Math.min(eyePosY, viewerMax);\n var topDist = Math.min(screenHeight - eyePosY, viewerMax);\n return {\n outerDist: outerDist,\n innerDist: innerDist,\n topDist: topDist,\n bottomDist: bottomDist,\n eyePosX: eyePosX,\n eyePosY: eyePosY\n };\n};\nfunction CardboardViewer(params) {\n this.id = params.id;\n this.label = params.label;\n this.fov = params.fov;\n this.interLensDistance = params.interLensDistance;\n this.baselineLensDistance = params.baselineLensDistance;\n this.screenLensDistance = params.screenLensDistance;\n this.distortionCoefficients = params.distortionCoefficients;\n this.inverseCoefficients = params.inverseCoefficients;\n}\nDeviceInfo.Viewers = Viewers;\nvar format = 1;\nvar last_updated = \"2018-02-20T22:55:10Z\";\nvar devices = [{\"type\":\"android\",\"rules\":[{\"mdmh\":\"asus/*/Nexus 7/*\"},{\"ua\":\"Nexus 7\"}],\"dpi\":[320.8,323],\"bw\":3,\"ac\":500},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"asus/*/ASUS_Z00AD/*\"},{\"ua\":\"ASUS_Z00AD\"}],\"dpi\":[403,404.6],\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"Google/*/Pixel XL/*\"},{\"ua\":\"Pixel XL\"}],\"dpi\":[537.9,533],\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"Google/*/Pixel/*\"},{\"ua\":\"Pixel\"}],\"dpi\":[432.6,436.7],\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"HTC/*/HTC6435LVW/*\"},{\"ua\":\"HTC6435LVW\"}],\"dpi\":[449.7,443.3],\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"HTC/*/HTC One XL/*\"},{\"ua\":\"HTC One XL\"}],\"dpi\":[315.3,314.6],\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"htc/*/Nexus 9/*\"},{\"ua\":\"Nexus 9\"}],\"dpi\":289,\"bw\":3,\"ac\":500},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"HTC/*/HTC One M9/*\"},{\"ua\":\"HTC One M9\"}],\"dpi\":[442.5,443.3],\"bw\":3,\"ac\":500},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"HTC/*/HTC One_M8/*\"},{\"ua\":\"HTC One_M8\"}],\"dpi\":[449.7,447.4],\"bw\":3,\"ac\":500},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"HTC/*/HTC One/*\"},{\"ua\":\"HTC One\"}],\"dpi\":472.8,\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"Huawei/*/Nexus 6P/*\"},{\"ua\":\"Nexus 6P\"}],\"dpi\":[515.1,518],\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"LENOVO/*/Lenovo PB2-690Y/*\"},{\"ua\":\"Lenovo PB2-690Y\"}],\"dpi\":[457.2,454.713],\"bw\":3,\"ac\":500},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"LGE/*/Nexus 5X/*\"},{\"ua\":\"Nexus 5X\"}],\"dpi\":[422,419.9],\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"LGE/*/LGMS345/*\"},{\"ua\":\"LGMS345\"}],\"dpi\":[221.7,219.1],\"bw\":3,\"ac\":500},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"LGE/*/LG-D800/*\"},{\"ua\":\"LG-D800\"}],\"dpi\":[422,424.1],\"bw\":3,\"ac\":500},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"LGE/*/LG-D850/*\"},{\"ua\":\"LG-D850\"}],\"dpi\":[537.9,541.9],\"bw\":3,\"ac\":500},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"LGE/*/VS985 4G/*\"},{\"ua\":\"VS985 4G\"}],\"dpi\":[537.9,535.6],\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"LGE/*/Nexus 5/*\"},{\"ua\":\"Nexus 5 B\"}],\"dpi\":[442.4,444.8],\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"LGE/*/Nexus 4/*\"},{\"ua\":\"Nexus 4\"}],\"dpi\":[319.8,318.4],\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"LGE/*/LG-P769/*\"},{\"ua\":\"LG-P769\"}],\"dpi\":[240.6,247.5],\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"LGE/*/LGMS323/*\"},{\"ua\":\"LGMS323\"}],\"dpi\":[206.6,204.6],\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"LGE/*/LGLS996/*\"},{\"ua\":\"LGLS996\"}],\"dpi\":[403.4,401.5],\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"Micromax/*/4560MMX/*\"},{\"ua\":\"4560MMX\"}],\"dpi\":[240,219.4],\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"Micromax/*/A250/*\"},{\"ua\":\"Micromax A250\"}],\"dpi\":[480,446.4],\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"Micromax/*/Micromax AQ4501/*\"},{\"ua\":\"Micromax AQ4501\"}],\"dpi\":240,\"bw\":3,\"ac\":500},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"motorola/*/G5/*\"},{\"ua\":\"Moto G (5) Plus\"}],\"dpi\":[403.4,403],\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"motorola/*/DROID RAZR/*\"},{\"ua\":\"DROID RAZR\"}],\"dpi\":[368.1,256.7],\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"motorola/*/XT830C/*\"},{\"ua\":\"XT830C\"}],\"dpi\":[254,255.9],\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"motorola/*/XT1021/*\"},{\"ua\":\"XT1021\"}],\"dpi\":[254,256.7],\"bw\":3,\"ac\":500},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"motorola/*/XT1023/*\"},{\"ua\":\"XT1023\"}],\"dpi\":[254,256.7],\"bw\":3,\"ac\":500},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"motorola/*/XT1028/*\"},{\"ua\":\"XT1028\"}],\"dpi\":[326.6,327.6],\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"motorola/*/XT1034/*\"},{\"ua\":\"XT1034\"}],\"dpi\":[326.6,328.4],\"bw\":3,\"ac\":500},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"motorola/*/XT1053/*\"},{\"ua\":\"XT1053\"}],\"dpi\":[315.3,316.1],\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"motorola/*/XT1562/*\"},{\"ua\":\"XT1562\"}],\"dpi\":[403.4,402.7],\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"motorola/*/Nexus 6/*\"},{\"ua\":\"Nexus 6 B\"}],\"dpi\":[494.3,489.7],\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"motorola/*/XT1063/*\"},{\"ua\":\"XT1063\"}],\"dpi\":[295,296.6],\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"motorola/*/XT1064/*\"},{\"ua\":\"XT1064\"}],\"dpi\":[295,295.6],\"bw\":3,\"ac\":500},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"motorola/*/XT1092/*\"},{\"ua\":\"XT1092\"}],\"dpi\":[422,424.1],\"bw\":3,\"ac\":500},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"motorola/*/XT1095/*\"},{\"ua\":\"XT1095\"}],\"dpi\":[422,423.4],\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"motorola/*/G4/*\"},{\"ua\":\"Moto G (4)\"}],\"dpi\":401,\"bw\":4,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"OnePlus/*/A0001/*\"},{\"ua\":\"A0001\"}],\"dpi\":[403.4,401],\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"OnePlus/*/ONE E1005/*\"},{\"ua\":\"ONE E1005\"}],\"dpi\":[442.4,441.4],\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"OnePlus/*/ONE A2005/*\"},{\"ua\":\"ONE A2005\"}],\"dpi\":[391.9,405.4],\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"OnePlus/*/ONEPLUS A5000/*\"},{\"ua\":\"ONEPLUS A5000 \"}],\"dpi\":[403.411,399.737],\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"OnePlus/*/ONE A5010/*\"},{\"ua\":\"ONEPLUS A5010\"}],\"dpi\":[403,400],\"bw\":2,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"OPPO/*/X909/*\"},{\"ua\":\"X909\"}],\"dpi\":[442.4,444.1],\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"samsung/*/GT-I9082/*\"},{\"ua\":\"GT-I9082\"}],\"dpi\":[184.7,185.4],\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"samsung/*/SM-G360P/*\"},{\"ua\":\"SM-G360P\"}],\"dpi\":[196.7,205.4],\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"samsung/*/Nexus S/*\"},{\"ua\":\"Nexus S\"}],\"dpi\":[234.5,229.8],\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"samsung/*/GT-I9300/*\"},{\"ua\":\"GT-I9300\"}],\"dpi\":[304.8,303.9],\"bw\":5,\"ac\":500},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"samsung/*/SM-T230NU/*\"},{\"ua\":\"SM-T230NU\"}],\"dpi\":216,\"bw\":3,\"ac\":500},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"samsung/*/SGH-T399/*\"},{\"ua\":\"SGH-T399\"}],\"dpi\":[217.7,231.4],\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"samsung/*/SGH-M919/*\"},{\"ua\":\"SGH-M919\"}],\"dpi\":[440.8,437.7],\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"samsung/*/SM-N9005/*\"},{\"ua\":\"SM-N9005\"}],\"dpi\":[386.4,387],\"bw\":3,\"ac\":500},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"samsung/*/SAMSUNG-SM-N900A/*\"},{\"ua\":\"SAMSUNG-SM-N900A\"}],\"dpi\":[386.4,387.7],\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"samsung/*/GT-I9500/*\"},{\"ua\":\"GT-I9500\"}],\"dpi\":[442.5,443.3],\"bw\":3,\"ac\":500},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"samsung/*/GT-I9505/*\"},{\"ua\":\"GT-I9505\"}],\"dpi\":439.4,\"bw\":4,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"samsung/*/SM-G900F/*\"},{\"ua\":\"SM-G900F\"}],\"dpi\":[415.6,431.6],\"bw\":5,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"samsung/*/SM-G900M/*\"},{\"ua\":\"SM-G900M\"}],\"dpi\":[415.6,431.6],\"bw\":5,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"samsung/*/SM-G800F/*\"},{\"ua\":\"SM-G800F\"}],\"dpi\":326.8,\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"samsung/*/SM-G906S/*\"},{\"ua\":\"SM-G906S\"}],\"dpi\":[562.7,572.4],\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"samsung/*/GT-I9300/*\"},{\"ua\":\"GT-I9300\"}],\"dpi\":[306.7,304.8],\"bw\":5,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"samsung/*/SM-T535/*\"},{\"ua\":\"SM-T535\"}],\"dpi\":[142.6,136.4],\"bw\":3,\"ac\":500},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"samsung/*/SM-N920C/*\"},{\"ua\":\"SM-N920C\"}],\"dpi\":[515.1,518.4],\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"samsung/*/SM-N920P/*\"},{\"ua\":\"SM-N920P\"}],\"dpi\":[386.3655,390.144],\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"samsung/*/SM-N920W8/*\"},{\"ua\":\"SM-N920W8\"}],\"dpi\":[515.1,518.4],\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"samsung/*/GT-I9300I/*\"},{\"ua\":\"GT-I9300I\"}],\"dpi\":[304.8,305.8],\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"samsung/*/GT-I9195/*\"},{\"ua\":\"GT-I9195\"}],\"dpi\":[249.4,256.7],\"bw\":3,\"ac\":500},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"samsung/*/SPH-L520/*\"},{\"ua\":\"SPH-L520\"}],\"dpi\":[249.4,255.9],\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"samsung/*/SAMSUNG-SGH-I717/*\"},{\"ua\":\"SAMSUNG-SGH-I717\"}],\"dpi\":285.8,\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"samsung/*/SPH-D710/*\"},{\"ua\":\"SPH-D710\"}],\"dpi\":[217.7,204.2],\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"samsung/*/GT-N7100/*\"},{\"ua\":\"GT-N7100\"}],\"dpi\":265.1,\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"samsung/*/SCH-I605/*\"},{\"ua\":\"SCH-I605\"}],\"dpi\":265.1,\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"samsung/*/Galaxy Nexus/*\"},{\"ua\":\"Galaxy Nexus\"}],\"dpi\":[315.3,314.2],\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"samsung/*/SM-N910H/*\"},{\"ua\":\"SM-N910H\"}],\"dpi\":[515.1,518],\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"samsung/*/SM-N910C/*\"},{\"ua\":\"SM-N910C\"}],\"dpi\":[515.2,520.2],\"bw\":3,\"ac\":500},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"samsung/*/SM-G130M/*\"},{\"ua\":\"SM-G130M\"}],\"dpi\":[165.9,164.8],\"bw\":3,\"ac\":500},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"samsung/*/SM-G928I/*\"},{\"ua\":\"SM-G928I\"}],\"dpi\":[515.1,518.4],\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"samsung/*/SM-G920F/*\"},{\"ua\":\"SM-G920F\"}],\"dpi\":580.6,\"bw\":3,\"ac\":500},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"samsung/*/SM-G920P/*\"},{\"ua\":\"SM-G920P\"}],\"dpi\":[522.5,577],\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"samsung/*/SM-G925F/*\"},{\"ua\":\"SM-G925F\"}],\"dpi\":580.6,\"bw\":3,\"ac\":500},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"samsung/*/SM-G925V/*\"},{\"ua\":\"SM-G925V\"}],\"dpi\":[522.5,576.6],\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"samsung/*/SM-G930F/*\"},{\"ua\":\"SM-G930F\"}],\"dpi\":576.6,\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"samsung/*/SM-G935F/*\"},{\"ua\":\"SM-G935F\"}],\"dpi\":533,\"bw\":3,\"ac\":500},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"samsung/*/SM-G950F/*\"},{\"ua\":\"SM-G950F\"}],\"dpi\":[562.707,565.293],\"bw\":3,\"ac\":500},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"samsung/*/SM-G955U/*\"},{\"ua\":\"SM-G955U\"}],\"dpi\":[522.514,525.762],\"bw\":3,\"ac\":500},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"Sony/*/C6903/*\"},{\"ua\":\"C6903\"}],\"dpi\":[442.5,443.3],\"bw\":3,\"ac\":500},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"Sony/*/D6653/*\"},{\"ua\":\"D6653\"}],\"dpi\":[428.6,427.6],\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"Sony/*/E6653/*\"},{\"ua\":\"E6653\"}],\"dpi\":[428.6,425.7],\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"Sony/*/E6853/*\"},{\"ua\":\"E6853\"}],\"dpi\":[403.4,401.9],\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"Sony/*/SGP321/*\"},{\"ua\":\"SGP321\"}],\"dpi\":[224.7,224.1],\"bw\":3,\"ac\":500},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"TCT/*/ALCATEL ONE TOUCH Fierce/*\"},{\"ua\":\"ALCATEL ONE TOUCH Fierce\"}],\"dpi\":[240,247.5],\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"THL/*/thl 5000/*\"},{\"ua\":\"thl 5000\"}],\"dpi\":[480,443.3],\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"Fly/*/IQ4412/*\"},{\"ua\":\"IQ4412\"}],\"dpi\":307.9,\"bw\":3,\"ac\":1000},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"ZTE/*/ZTE Blade L2/*\"},{\"ua\":\"ZTE Blade L2\"}],\"dpi\":240,\"bw\":3,\"ac\":500},{\"type\":\"android\",\"rules\":[{\"mdmh\":\"BENEVE/*/VR518/*\"},{\"ua\":\"VR518\"}],\"dpi\":480,\"bw\":3,\"ac\":500},{\"type\":\"ios\",\"rules\":[{\"res\":[640,960]}],\"dpi\":[325.1,328.4],\"bw\":4,\"ac\":1000},{\"type\":\"ios\",\"rules\":[{\"res\":[640,1136]}],\"dpi\":[317.1,320.2],\"bw\":3,\"ac\":1000},{\"type\":\"ios\",\"rules\":[{\"res\":[750,1334]}],\"dpi\":326.4,\"bw\":4,\"ac\":1000},{\"type\":\"ios\",\"rules\":[{\"res\":[1242,2208]}],\"dpi\":[453.6,458.4],\"bw\":4,\"ac\":1000},{\"type\":\"ios\",\"rules\":[{\"res\":[1125,2001]}],\"dpi\":[410.9,415.4],\"bw\":4,\"ac\":1000},{\"type\":\"ios\",\"rules\":[{\"res\":[1125,2436]}],\"dpi\":458,\"bw\":4,\"ac\":1000}];\nvar DPDB_CACHE = {\n\tformat: format,\n\tlast_updated: last_updated,\n\tdevices: devices\n};\nfunction Dpdb(url, onDeviceParamsUpdated) {\n this.dpdb = DPDB_CACHE;\n this.recalculateDeviceParams_();\n if (url) {\n this.onDeviceParamsUpdated = onDeviceParamsUpdated;\n var xhr = new XMLHttpRequest();\n var obj = this;\n xhr.open('GET', url, true);\n xhr.addEventListener('load', function () {\n obj.loading = false;\n if (xhr.status >= 200 && xhr.status <= 299) {\n obj.dpdb = JSON.parse(xhr.response);\n obj.recalculateDeviceParams_();\n } else {\n console.error('Error loading online DPDB!');\n }\n });\n xhr.send();\n }\n}\nDpdb.prototype.getDeviceParams = function () {\n return this.deviceParams;\n};\nDpdb.prototype.recalculateDeviceParams_ = function () {\n var newDeviceParams = this.calcDeviceParams_();\n if (newDeviceParams) {\n this.deviceParams = newDeviceParams;\n if (this.onDeviceParamsUpdated) {\n this.onDeviceParamsUpdated(this.deviceParams);\n }\n } else {\n console.error('Failed to recalculate device parameters.');\n }\n};\nDpdb.prototype.calcDeviceParams_ = function () {\n var db = this.dpdb;\n if (!db) {\n console.error('DPDB not available.');\n return null;\n }\n if (db.format != 1) {\n console.error('DPDB has unexpected format version.');\n return null;\n }\n if (!db.devices || !db.devices.length) {\n console.error('DPDB does not have a devices section.');\n return null;\n }\n var userAgent = navigator.userAgent || navigator.vendor || window.opera;\n var width = getScreenWidth();\n var height = getScreenHeight();\n if (!db.devices) {\n console.error('DPDB has no devices section.');\n return null;\n }\n for (var i = 0; i < db.devices.length; i++) {\n var device = db.devices[i];\n if (!device.rules) {\n console.warn('Device[' + i + '] has no rules section.');\n continue;\n }\n if (device.type != 'ios' && device.type != 'android') {\n console.warn('Device[' + i + '] has invalid type.');\n continue;\n }\n if (isIOS() != (device.type == 'ios')) continue;\n var matched = false;\n for (var j = 0; j < device.rules.length; j++) {\n var rule = device.rules[j];\n if (this.matchRule_(rule, userAgent, width, height)) {\n matched = true;\n break;\n }\n }\n if (!matched) continue;\n var xdpi = device.dpi[0] || device.dpi;\n var ydpi = device.dpi[1] || device.dpi;\n return new DeviceParams({ xdpi: xdpi, ydpi: ydpi, bevelMm: device.bw });\n }\n console.warn('No DPDB device match.');\n return null;\n};\nDpdb.prototype.matchRule_ = function (rule, ua, screenWidth, screenHeight) {\n if (!rule.ua && !rule.res) return false;\n if (rule.ua && ua.indexOf(rule.ua) < 0) return false;\n if (rule.res) {\n if (!rule.res[0] || !rule.res[1]) return false;\n var resX = rule.res[0];\n var resY = rule.res[1];\n if (Math.min(screenWidth, screenHeight) != Math.min(resX, resY) || Math.max(screenWidth, screenHeight) != Math.max(resX, resY)) {\n return false;\n }\n }\n return true;\n};\nfunction DeviceParams(params) {\n this.xdpi = params.xdpi;\n this.ydpi = params.ydpi;\n this.bevelMm = params.bevelMm;\n}\nfunction SensorSample(sample, timestampS) {\n this.set(sample, timestampS);\n}\nSensorSample.prototype.set = function (sample, timestampS) {\n this.sample = sample;\n this.timestampS = timestampS;\n};\nSensorSample.prototype.copy = function (sensorSample) {\n this.set(sensorSample.sample, sensorSample.timestampS);\n};\nfunction ComplementaryFilter(kFilter, isDebug) {\n this.kFilter = kFilter;\n this.isDebug = isDebug;\n this.currentAccelMeasurement = new SensorSample();\n this.currentGyroMeasurement = new SensorSample();\n this.previousGyroMeasurement = new SensorSample();\n if (isIOS()) {\n this.filterQ = new Quaternion(-1, 0, 0, 1);\n } else {\n this.filterQ = new Quaternion(1, 0, 0, 1);\n }\n this.previousFilterQ = new Quaternion();\n this.previousFilterQ.copy(this.filterQ);\n this.accelQ = new Quaternion();\n this.isOrientationInitialized = false;\n this.estimatedGravity = new Vector3();\n this.measuredGravity = new Vector3();\n this.gyroIntegralQ = new Quaternion();\n}\nComplementaryFilter.prototype.addAccelMeasurement = function (vector, timestampS) {\n this.currentAccelMeasurement.set(vector, timestampS);\n};\nComplementaryFilter.prototype.addGyroMeasurement = function (vector, timestampS) {\n this.currentGyroMeasurement.set(vector, timestampS);\n var deltaT = timestampS - this.previousGyroMeasurement.timestampS;\n if (isTimestampDeltaValid(deltaT)) {\n this.run_();\n }\n this.previousGyroMeasurement.copy(this.currentGyroMeasurement);\n};\nComplementaryFilter.prototype.run_ = function () {\n if (!this.isOrientationInitialized) {\n this.accelQ = this.accelToQuaternion_(this.currentAccelMeasurement.sample);\n this.previousFilterQ.copy(this.accelQ);\n this.isOrientationInitialized = true;\n return;\n }\n var deltaT = this.currentGyroMeasurement.timestampS - this.previousGyroMeasurement.timestampS;\n var gyroDeltaQ = this.gyroToQuaternionDelta_(this.currentGyroMeasurement.sample, deltaT);\n this.gyroIntegralQ.multiply(gyroDeltaQ);\n this.filterQ.copy(this.previousFilterQ);\n this.filterQ.multiply(gyroDeltaQ);\n var invFilterQ = new Quaternion();\n invFilterQ.copy(this.filterQ);\n invFilterQ.inverse();\n this.estimatedGravity.set(0, 0, -1);\n this.estimatedGravity.applyQuaternion(invFilterQ);\n this.estimatedGravity.normalize();\n this.measuredGravity.copy(this.currentAccelMeasurement.sample);\n this.measuredGravity.normalize();\n var deltaQ = new Quaternion();\n deltaQ.setFromUnitVectors(this.estimatedGravity, this.measuredGravity);\n deltaQ.inverse();\n if (this.isDebug) {\n console.log('Delta: %d deg, G_est: (%s, %s, %s), G_meas: (%s, %s, %s)', radToDeg * getQuaternionAngle(deltaQ), this.estimatedGravity.x.toFixed(1), this.estimatedGravity.y.toFixed(1), this.estimatedGravity.z.toFixed(1), this.measuredGravity.x.toFixed(1), this.measuredGravity.y.toFixed(1), this.measuredGravity.z.toFixed(1));\n }\n var targetQ = new Quaternion();\n targetQ.copy(this.filterQ);\n targetQ.multiply(deltaQ);\n this.filterQ.slerp(targetQ, 1 - this.kFilter);\n this.previousFilterQ.copy(this.filterQ);\n};\nComplementaryFilter.prototype.getOrientation = function () {\n return this.filterQ;\n};\nComplementaryFilter.prototype.accelToQuaternion_ = function (accel) {\n var normAccel = new Vector3();\n normAccel.copy(accel);\n normAccel.normalize();\n var quat = new Quaternion();\n quat.setFromUnitVectors(new Vector3(0, 0, -1), normAccel);\n quat.inverse();\n return quat;\n};\nComplementaryFilter.prototype.gyroToQuaternionDelta_ = function (gyro, dt) {\n var quat = new Quaternion();\n var axis = new Vector3();\n axis.copy(gyro);\n axis.normalize();\n quat.setFromAxisAngle(axis, gyro.length() * dt);\n return quat;\n};\nfunction PosePredictor(predictionTimeS, isDebug) {\n this.predictionTimeS = predictionTimeS;\n this.isDebug = isDebug;\n this.previousQ = new Quaternion();\n this.previousTimestampS = null;\n this.deltaQ = new Quaternion();\n this.outQ = new Quaternion();\n}\nPosePredictor.prototype.getPrediction = function (currentQ, gyro, timestampS) {\n if (!this.previousTimestampS) {\n this.previousQ.copy(currentQ);\n this.previousTimestampS = timestampS;\n return currentQ;\n }\n var axis = new Vector3();\n axis.copy(gyro);\n axis.normalize();\n var angularSpeed = gyro.length();\n if (angularSpeed < degToRad * 20) {\n if (this.isDebug) {\n console.log('Moving slowly, at %s deg/s: no prediction', (radToDeg * angularSpeed).toFixed(1));\n }\n this.outQ.copy(currentQ);\n this.previousQ.copy(currentQ);\n return this.outQ;\n }\n var predictAngle = angularSpeed * this.predictionTimeS;\n this.deltaQ.setFromAxisAngle(axis, predictAngle);\n this.outQ.copy(this.previousQ);\n this.outQ.multiply(this.deltaQ);\n this.previousQ.copy(currentQ);\n this.previousTimestampS = timestampS;\n return this.outQ;\n};\nfunction FusionPoseSensor(kFilter, predictionTime, yawOnly, isDebug) {\n this.yawOnly = yawOnly;\n this.accelerometer = new Vector3();\n this.gyroscope = new Vector3();\n this.filter = new ComplementaryFilter(kFilter, isDebug);\n this.posePredictor = new PosePredictor(predictionTime, isDebug);\n this.isFirefoxAndroid = isFirefoxAndroid();\n this.isIOS = isIOS();\n var chromeVersion = getChromeVersion();\n this.isDeviceMotionInRadians = !this.isIOS && chromeVersion && chromeVersion < 66;\n this.isWithoutDeviceMotion = isChromeWithoutDeviceMotion();\n this.filterToWorldQ = new Quaternion();\n if (isIOS()) {\n this.filterToWorldQ.setFromAxisAngle(new Vector3(1, 0, 0), Math.PI / 2);\n } else {\n this.filterToWorldQ.setFromAxisAngle(new Vector3(1, 0, 0), -Math.PI / 2);\n }\n this.inverseWorldToScreenQ = new Quaternion();\n this.worldToScreenQ = new Quaternion();\n this.originalPoseAdjustQ = new Quaternion();\n this.originalPoseAdjustQ.setFromAxisAngle(new Vector3(0, 0, 1), -window.orientation * Math.PI / 180);\n this.setScreenTransform_();\n if (isLandscapeMode()) {\n this.filterToWorldQ.multiply(this.inverseWorldToScreenQ);\n }\n this.resetQ = new Quaternion();\n this.orientationOut_ = new Float32Array(4);\n this.start();\n}\nFusionPoseSensor.prototype.getPosition = function () {\n return null;\n};\nFusionPoseSensor.prototype.getOrientation = function () {\n var orientation = void 0;\n if (this.isWithoutDeviceMotion && this._deviceOrientationQ) {\n this.deviceOrientationFixQ = this.deviceOrientationFixQ || function () {\n var z = new Quaternion().setFromAxisAngle(new Vector3(0, 0, -1), 0);\n var y = new Quaternion();\n if (window.orientation === -90) {\n y.setFromAxisAngle(new Vector3(0, 1, 0), Math.PI / -2);\n } else {\n y.setFromAxisAngle(new Vector3(0, 1, 0), Math.PI / 2);\n }\n return z.multiply(y);\n }();\n this.deviceOrientationFilterToWorldQ = this.deviceOrientationFilterToWorldQ || function () {\n var q = new Quaternion();\n q.setFromAxisAngle(new Vector3(1, 0, 0), -Math.PI / 2);\n return q;\n }();\n orientation = this._deviceOrientationQ;\n var out = new Quaternion();\n out.copy(orientation);\n out.multiply(this.deviceOrientationFilterToWorldQ);\n out.multiply(this.resetQ);\n out.multiply(this.worldToScreenQ);\n out.multiplyQuaternions(this.deviceOrientationFixQ, out);\n if (this.yawOnly) {\n out.x = 0;\n out.z = 0;\n out.normalize();\n }\n this.orientationOut_[0] = out.x;\n this.orientationOut_[1] = out.y;\n this.orientationOut_[2] = out.z;\n this.orientationOut_[3] = out.w;\n return this.orientationOut_;\n } else {\n var filterOrientation = this.filter.getOrientation();\n orientation = this.posePredictor.getPrediction(filterOrientation, this.gyroscope, this.previousTimestampS);\n }\n var out = new Quaternion();\n out.copy(this.filterToWorldQ);\n out.multiply(this.resetQ);\n out.multiply(orientation);\n out.multiply(this.worldToScreenQ);\n if (this.yawOnly) {\n out.x = 0;\n out.z = 0;\n out.normalize();\n }\n this.orientationOut_[0] = out.x;\n this.orientationOut_[1] = out.y;\n this.orientationOut_[2] = out.z;\n this.orientationOut_[3] = out.w;\n return this.orientationOut_;\n};\nFusionPoseSensor.prototype.resetPose = function () {\n this.resetQ.copy(this.filter.getOrientation());\n this.resetQ.x = 0;\n this.resetQ.y = 0;\n this.resetQ.z *= -1;\n this.resetQ.normalize();\n if (isLandscapeMode()) {\n this.resetQ.multiply(this.inverseWorldToScreenQ);\n }\n this.resetQ.multiply(this.originalPoseAdjustQ);\n};\nFusionPoseSensor.prototype.onDeviceOrientation_ = function (e) {\n this._deviceOrientationQ = this._deviceOrientationQ || new Quaternion();\n var alpha = e.alpha,\n beta = e.beta,\n gamma = e.gamma;\n alpha = (alpha || 0) * Math.PI / 180;\n beta = (beta || 0) * Math.PI / 180;\n gamma = (gamma || 0) * Math.PI / 180;\n this._deviceOrientationQ.setFromEulerYXZ(beta, alpha, -gamma);\n};\nFusionPoseSensor.prototype.onDeviceMotion_ = function (deviceMotion) {\n this.updateDeviceMotion_(deviceMotion);\n};\nFusionPoseSensor.prototype.updateDeviceMotion_ = function (deviceMotion) {\n var accGravity = deviceMotion.accelerationIncludingGravity;\n var rotRate = deviceMotion.rotationRate;\n var timestampS = deviceMotion.timeStamp / 1000;\n var deltaS = timestampS - this.previousTimestampS;\n if (deltaS < 0) {\n warnOnce('fusion-pose-sensor:invalid:non-monotonic', 'Invalid timestamps detected: non-monotonic timestamp from devicemotion');\n this.previousTimestampS = timestampS;\n return;\n } else if (deltaS <= MIN_TIMESTEP || deltaS > MAX_TIMESTEP) {\n warnOnce('fusion-pose-sensor:invalid:outside-threshold', 'Invalid timestamps detected: Timestamp from devicemotion outside expected range.');\n this.previousTimestampS = timestampS;\n return;\n }\n this.accelerometer.set(-accGravity.x, -accGravity.y, -accGravity.z);\n if (isR7()) {\n this.gyroscope.set(-rotRate.beta, rotRate.alpha, rotRate.gamma);\n } else {\n this.gyroscope.set(rotRate.alpha, rotRate.beta, rotRate.gamma);\n }\n if (!this.isDeviceMotionInRadians) {\n this.gyroscope.multiplyScalar(Math.PI / 180);\n }\n this.filter.addAccelMeasurement(this.accelerometer, timestampS);\n this.filter.addGyroMeasurement(this.gyroscope, timestampS);\n this.previousTimestampS = timestampS;\n};\nFusionPoseSensor.prototype.onOrientationChange_ = function (screenOrientation) {\n this.setScreenTransform_();\n};\nFusionPoseSensor.prototype.onMessage_ = function (event) {\n var message = event.data;\n if (!message || !message.type) {\n return;\n }\n var type = message.type.toLowerCase();\n if (type !== 'devicemotion') {\n return;\n }\n this.updateDeviceMotion_(message.deviceMotionEvent);\n};\nFusionPoseSensor.prototype.setScreenTransform_ = function () {\n this.worldToScreenQ.set(0, 0, 0, 1);\n switch (window.orientation) {\n case 0:\n break;\n case 90:\n this.worldToScreenQ.setFromAxisAngle(new Vector3(0, 0, 1), -Math.PI / 2);\n break;\n case -90:\n this.worldToScreenQ.setFromAxisAngle(new Vector3(0, 0, 1), Math.PI / 2);\n break;\n case 180:\n break;\n }\n this.inverseWorldToScreenQ.copy(this.worldToScreenQ);\n this.inverseWorldToScreenQ.inverse();\n};\nFusionPoseSensor.prototype.start = function () {\n this.onDeviceMotionCallback_ = this.onDeviceMotion_.bind(this);\n this.onOrientationChangeCallback_ = this.onOrientationChange_.bind(this);\n this.onMessageCallback_ = this.onMessage_.bind(this);\n this.onDeviceOrientationCallback_ = this.onDeviceOrientation_.bind(this);\n if (isIOS() && isInsideCrossOriginIFrame()) {\n window.addEventListener('message', this.onMessageCallback_);\n }\n window.addEventListener('orientationchange', this.onOrientationChangeCallback_);\n if (this.isWithoutDeviceMotion) {\n window.addEventListener('deviceorientation', this.onDeviceOrientationCallback_);\n } else {\n window.addEventListener('devicemotion', this.onDeviceMotionCallback_);\n }\n};\nFusionPoseSensor.prototype.stop = function () {\n window.removeEventListener('devicemotion', this.onDeviceMotionCallback_);\n window.removeEventListener('deviceorientation', this.onDeviceOrientationCallback_);\n window.removeEventListener('orientationchange', this.onOrientationChangeCallback_);\n window.removeEventListener('message', this.onMessageCallback_);\n};\nvar SENSOR_FREQUENCY = 60;\nvar X_AXIS = new Vector3(1, 0, 0);\nvar Z_AXIS = new Vector3(0, 0, 1);\nvar orientation = {};\nif (screen.orientation) {\n orientation = screen.orientation;\n} else if (screen.msOrientation) {\n orientation = screen.msOrientation;\n} else {\n Object.defineProperty(orientation, 'angle', {\n get: function get$$1() {\n return window.orientation || 0;\n }\n });\n}\nvar SENSOR_TO_VR = new Quaternion();\nSENSOR_TO_VR.setFromAxisAngle(X_AXIS, -Math.PI / 2);\nSENSOR_TO_VR.multiply(new Quaternion().setFromAxisAngle(Z_AXIS, Math.PI / 2));\nvar PoseSensor = function () {\n function PoseSensor(config) {\n classCallCheck(this, PoseSensor);\n this.config = config;\n this.sensor = null;\n this.fusionSensor = null;\n this._out = new Float32Array(4);\n this.api = null;\n this.errors = [];\n this._sensorQ = new Quaternion();\n this._worldToScreenQ = new Quaternion();\n this._outQ = new Quaternion();\n this._onSensorRead = this._onSensorRead.bind(this);\n this._onSensorError = this._onSensorError.bind(this);\n this._onOrientationChange = this._onOrientationChange.bind(this);\n this._onOrientationChange();\n this.init();\n }\n createClass(PoseSensor, [{\n key: 'init',\n value: function init() {\n var sensor = null;\n try {\n sensor = new RelativeOrientationSensor({ frequency: SENSOR_FREQUENCY });\n sensor.addEventListener('error', this._onSensorError);\n } catch (error) {\n this.errors.push(error);\n if (error.name === 'SecurityError') {\n console.error('Cannot construct sensors due to the Feature Policy');\n console.warn('Attempting to fall back using \"devicemotion\"; however this will ' + 'fail in the future without correct permissions.');\n this.useDeviceMotion();\n } else if (error.name === 'ReferenceError') {\n this.useDeviceMotion();\n } else {\n console.error(error);\n }\n }\n if (sensor) {\n this.api = 'sensor';\n this.sensor = sensor;\n this.sensor.addEventListener('reading', this._onSensorRead);\n this.sensor.start();\n }\n window.addEventListener('orientationchange', this._onOrientationChange);\n }\n }, {\n key: 'useDeviceMotion',\n value: function useDeviceMotion() {\n this.api = 'devicemotion';\n this.fusionSensor = new FusionPoseSensor(this.config.K_FILTER, this.config.PREDICTION_TIME_S, this.config.YAW_ONLY, this.config.DEBUG);\n }\n }, {\n key: 'getOrientation',\n value: function getOrientation() {\n if (this.fusionSensor) {\n return this.fusionSensor.getOrientation();\n }\n if (!this.sensor || !this.sensor.quaternion) {\n this._out[0] = this._out[1] = this._out[2] = 0;\n this._out[3] = 1;\n return this._out;\n }\n var q = this.sensor.quaternion;\n this._sensorQ.set(q[0], q[1], q[2], q[3]);\n var out = this._outQ;\n out.copy(SENSOR_TO_VR);\n out.multiply(this._sensorQ);\n out.multiply(this._worldToScreenQ);\n if (this.config.YAW_ONLY) {\n out.x = out.z = 0;\n out.normalize();\n }\n this._out[0] = out.x;\n this._out[1] = out.y;\n this._out[2] = out.z;\n this._out[3] = out.w;\n return this._out;\n }\n }, {\n key: '_onSensorError',\n value: function _onSensorError(event) {\n this.errors.push(event.error);\n if (event.error.name === 'NotAllowedError') {\n console.error('Permission to access sensor was denied');\n } else if (event.error.name === 'NotReadableError') {\n console.error('Sensor could not be read');\n } else {\n console.error(event.error);\n }\n }\n }, {\n key: '_onSensorRead',\n value: function _onSensorRead() {}\n }, {\n key: '_onOrientationChange',\n value: function _onOrientationChange() {\n var angle = -orientation.angle * Math.PI / 180;\n this._worldToScreenQ.setFromAxisAngle(Z_AXIS, angle);\n }\n }]);\n return PoseSensor;\n}();\nvar rotateInstructionsAsset = 'PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjE5OHB4IiBoZWlnaHQ9IjI0MHB4IiB2aWV3Qm94PSIwIDAgMTk4IDI0MCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWxuczpza2V0Y2g9Imh0dHA6Ly93d3cuYm9oZW1pYW5jb2RpbmcuY29tL3NrZXRjaC9ucyI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDMuMy4zICgxMjA4MSkgLSBodHRwOi8vd3d3LmJvaGVtaWFuY29kaW5nLmNvbS9za2V0Y2ggLS0+CiAgICA8dGl0bGU+dHJhbnNpdGlvbjwvdGl0bGU+CiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggU2tldGNoLjwvZGVzYz4KICAgIDxkZWZzPjwvZGVmcz4KICAgIDxnIGlkPSJQYWdlLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHNrZXRjaDp0eXBlPSJNU1BhZ2UiPgogICAgICAgIDxnIGlkPSJ0cmFuc2l0aW9uIiBza2V0Y2g6dHlwZT0iTVNBcnRib2FyZEdyb3VwIj4KICAgICAgICAgICAgPGcgaWQ9IkltcG9ydGVkLUxheWVycy1Db3B5LTQtKy1JbXBvcnRlZC1MYXllcnMtQ29weS0rLUltcG9ydGVkLUxheWVycy1Db3B5LTItQ29weSIgc2tldGNoOnR5cGU9Ik1TTGF5ZXJHcm91cCI+CiAgICAgICAgICAgICAgICA8ZyBpZD0iSW1wb3J0ZWQtTGF5ZXJzLUNvcHktNCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMDAwMDAsIDEwNy4wMDAwMDApIiBza2V0Y2g6dHlwZT0iTVNTaGFwZUdyb3VwIj4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTQ5LjYyNSwyLjUyNyBDMTQ5LjYyNSwyLjUyNyAxNTUuODA1LDYuMDk2IDE1Ni4zNjIsNi40MTggTDE1Ni4zNjIsNy4zMDQgQzE1Ni4zNjIsNy40ODEgMTU2LjM3NSw3LjY2NCAxNTYuNCw3Ljg1MyBDMTU2LjQxLDcuOTM0IDE1Ni40Miw4LjAxNSAxNTYuNDI3LDguMDk1IEMxNTYuNTY3LDkuNTEgMTU3LjQwMSwxMS4wOTMgMTU4LjUzMiwxMi4wOTQgTDE2NC4yNTIsMTcuMTU2IEwxNjQuMzMzLDE3LjA2NiBDMTY0LjMzMywxNy4wNjYgMTY4LjcxNSwxNC41MzYgMTY5LjU2OCwxNC4wNDIgQzE3MS4wMjUsMTQuODgzIDE5NS41MzgsMjkuMDM1IDE5NS41MzgsMjkuMDM1IEwxOTUuNTM4LDgzLjAzNiBDMTk1LjUzOCw4My44MDcgMTk1LjE1Miw4NC4yNTMgMTk0LjU5LDg0LjI1MyBDMTk0LjM1Nyw4NC4yNTMgMTk0LjA5NSw4NC4xNzcgMTkzLjgxOCw4NC4wMTcgTDE2OS44NTEsNzAuMTc5IEwxNjkuODM3LDcwLjIwMyBMMTQyLjUxNSw4NS45NzggTDE0MS42NjUsODQuNjU1IEMxMzYuOTM0LDgzLjEyNiAxMzEuOTE3LDgxLjkxNSAxMjYuNzE0LDgxLjA0NSBDMTI2LjcwOSw4MS4wNiAxMjYuNzA3LDgxLjA2OSAxMjYuNzA3LDgxLjA2OSBMMTIxLjY0LDk4LjAzIEwxMTMuNzQ5LDEwMi41ODYgTDExMy43MTIsMTAyLjUyMyBMMTEzLjcxMiwxMzAuMTEzIEMxMTMuNzEyLDEzMC44ODUgMTEzLjMyNiwxMzEuMzMgMTEyLjc2NCwxMzEuMzMgQzExMi41MzIsMTMxLjMzIDExMi4yNjksMTMxLjI1NCAxMTEuOTkyLDEzMS4wOTQgTDY5LjUxOSwxMDYuNTcyIEM2OC41NjksMTA2LjAyMyA2Ny43OTksMTA0LjY5NSA2Ny43OTksMTAzLjYwNSBMNjcuNzk5LDEwMi41NyBMNjcuNzc4LDEwMi42MTcgQzY3LjI3LDEwMi4zOTMgNjYuNjQ4LDEwMi4yNDkgNjUuOTYyLDEwMi4yMTggQzY1Ljg3NSwxMDIuMjE0IDY1Ljc4OCwxMDIuMjEyIDY1LjcwMSwxMDIuMjEyIEM2NS42MDYsMTAyLjIxMiA2NS41MTEsMTAyLjIxNSA2NS40MTYsMTAyLjIxOSBDNjUuMTk1LDEwMi4yMjkgNjQuOTc0LDEwMi4yMzUgNjQuNzU0LDEwMi4yMzUgQzY0LjMzMSwxMDIuMjM1IDYzLjkxMSwxMDIuMjE2IDYzLjQ5OCwxMDIuMTc4IEM2MS44NDMsMTAyLjAyNSA2MC4yOTgsMTAxLjU3OCA1OS4wOTQsMTAwLjg4MiBMMTIuNTE4LDczLjk5MiBMMTIuNTIzLDc0LjAwNCBMMi4yNDUsNTUuMjU0IEMxLjI0NCw1My40MjcgMi4wMDQsNTEuMDM4IDMuOTQzLDQ5LjkxOCBMNTkuOTU0LDE3LjU3MyBDNjAuNjI2LDE3LjE4NSA2MS4zNSwxNy4wMDEgNjIuMDUzLDE3LjAwMSBDNjMuMzc5LDE3LjAwMSA2NC42MjUsMTcuNjYgNjUuMjgsMTguODU0IEw2NS4yODUsMTguODUxIEw2NS41MTIsMTkuMjY0IEw2NS41MDYsMTkuMjY4IEM2NS45MDksMjAuMDAzIDY2LjQwNSwyMC42OCA2Ni45ODMsMjEuMjg2IEw2Ny4yNiwyMS41NTYgQzY5LjE3NCwyMy40MDYgNzEuNzI4LDI0LjM1NyA3NC4zNzMsMjQuMzU3IEM3Ni4zMjIsMjQuMzU3IDc4LjMyMSwyMy44NCA4MC4xNDgsMjIuNzg1IEM4MC4xNjEsMjIuNzg1IDg3LjQ2NywxOC41NjYgODcuNDY3LDE4LjU2NiBDODguMTM5LDE4LjE3OCA4OC44NjMsMTcuOTk0IDg5LjU2NiwxNy45OTQgQzkwLjg5MiwxNy45OTQgOTIuMTM4LDE4LjY1MiA5Mi43OTIsMTkuODQ3IEw5Ni4wNDIsMjUuNzc1IEw5Ni4wNjQsMjUuNzU3IEwxMDIuODQ5LDI5LjY3NCBMMTAyLjc0NCwyOS40OTIgTDE0OS42MjUsMi41MjcgTTE0OS42MjUsMC44OTIgQzE0OS4zNDMsMC44OTIgMTQ5LjA2MiwwLjk2NSAxNDguODEsMS4xMSBMMTAyLjY0MSwyNy42NjYgTDk3LjIzMSwyNC41NDIgTDk0LjIyNiwxOS4wNjEgQzkzLjMxMywxNy4zOTQgOTEuNTI3LDE2LjM1OSA4OS41NjYsMTYuMzU4IEM4OC41NTUsMTYuMzU4IDg3LjU0NiwxNi42MzIgODYuNjQ5LDE3LjE1IEM4My44NzgsMTguNzUgNzkuNjg3LDIxLjE2OSA3OS4zNzQsMjEuMzQ1IEM3OS4zNTksMjEuMzUzIDc5LjM0NSwyMS4zNjEgNzkuMzMsMjEuMzY5IEM3Ny43OTgsMjIuMjU0IDc2LjA4NCwyMi43MjIgNzQuMzczLDIyLjcyMiBDNzIuMDgxLDIyLjcyMiA2OS45NTksMjEuODkgNjguMzk3LDIwLjM4IEw2OC4xNDUsMjAuMTM1IEM2Ny43MDYsMTkuNjcyIDY3LjMyMywxOS4xNTYgNjcuMDA2LDE4LjYwMSBDNjYuOTg4LDE4LjU1OSA2Ni45NjgsMTguNTE5IDY2Ljk0NiwxOC40NzkgTDY2LjcxOSwxOC4wNjUgQzY2LjY5LDE4LjAxMiA2Ni42NTgsMTcuOTYgNjYuNjI0LDE3LjkxMSBDNjUuNjg2LDE2LjMzNyA2My45NTEsMTUuMzY2IDYyLjA1MywxNS4zNjYgQzYxLjA0MiwxNS4zNjYgNjAuMDMzLDE1LjY0IDU5LjEzNiwxNi4xNTggTDMuMTI1LDQ4LjUwMiBDMC40MjYsNTAuMDYxIC0wLjYxMyw1My40NDIgMC44MTEsNTYuMDQgTDExLjA4OSw3NC43OSBDMTEuMjY2LDc1LjExMyAxMS41MzcsNzUuMzUzIDExLjg1LDc1LjQ5NCBMNTguMjc2LDEwMi4yOTggQzU5LjY3OSwxMDMuMTA4IDYxLjQzMywxMDMuNjMgNjMuMzQ4LDEwMy44MDYgQzYzLjgxMiwxMDMuODQ4IDY0LjI4NSwxMDMuODcgNjQuNzU0LDEwMy44NyBDNjUsMTAzLjg3IDY1LjI0OSwxMDMuODY0IDY1LjQ5NCwxMDMuODUyIEM2NS41NjMsMTAzLjg0OSA2NS42MzIsMTAzLjg0NyA2NS43MDEsMTAzLjg0NyBDNjUuNzY0LDEwMy44NDcgNjUuODI4LDEwMy44NDkgNjUuODksMTAzLjg1MiBDNjUuOTg2LDEwMy44NTYgNjYuMDgsMTAzLjg2MyA2Ni4xNzMsMTAzLjg3NCBDNjYuMjgyLDEwNS40NjcgNjcuMzMyLDEwNy4xOTcgNjguNzAyLDEwNy45ODggTDExMS4xNzQsMTMyLjUxIEMxMTEuNjk4LDEzMi44MTIgMTEyLjIzMiwxMzIuOTY1IDExMi43NjQsMTMyLjk2NSBDMTE0LjI2MSwxMzIuOTY1IDExNS4zNDcsMTMxLjc2NSAxMTUuMzQ3LDEzMC4xMTMgTDExNS4zNDcsMTAzLjU1MSBMMTIyLjQ1OCw5OS40NDYgQzEyMi44MTksOTkuMjM3IDEyMy4wODcsOTguODk4IDEyMy4yMDcsOTguNDk4IEwxMjcuODY1LDgyLjkwNSBDMTMyLjI3OSw4My43MDIgMTM2LjU1Nyw4NC43NTMgMTQwLjYwNyw4Ni4wMzMgTDE0MS4xNCw4Ni44NjIgQzE0MS40NTEsODcuMzQ2IDE0MS45NzcsODcuNjEzIDE0Mi41MTYsODcuNjEzIEMxNDIuNzk0LDg3LjYxMyAxNDMuMDc2LDg3LjU0MiAxNDMuMzMzLDg3LjM5MyBMMTY5Ljg2NSw3Mi4wNzYgTDE5Myw4NS40MzMgQzE5My41MjMsODUuNzM1IDE5NC4wNTgsODUuODg4IDE5NC41OSw4NS44ODggQzE5Ni4wODcsODUuODg4IDE5Ny4xNzMsODQuNjg5IDE5Ny4xNzMsODMuMDM2IEwxOTcuMTczLDI5LjAzNSBDMTk3LjE3MywyOC40NTEgMTk2Ljg2MSwyNy45MTEgMTk2LjM1NSwyNy42MTkgQzE5Ni4zNTUsMjcuNjE5IDE3MS44NDMsMTMuNDY3IDE3MC4zODUsMTIuNjI2IEMxNzAuMTMyLDEyLjQ4IDE2OS44NSwxMi40MDcgMTY5LjU2OCwxMi40MDcgQzE2OS4yODUsMTIuNDA3IDE2OS4wMDIsMTIuNDgxIDE2OC43NDksMTIuNjI3IEMxNjguMTQzLDEyLjk3OCAxNjUuNzU2LDE0LjM1NyAxNjQuNDI0LDE1LjEyNSBMMTU5LjYxNSwxMC44NyBDMTU4Ljc5NiwxMC4xNDUgMTU4LjE1NCw4LjkzNyAxNTguMDU0LDcuOTM0IEMxNTguMDQ1LDcuODM3IDE1OC4wMzQsNy43MzkgMTU4LjAyMSw3LjY0IEMxNTguMDA1LDcuNTIzIDE1Ny45OTgsNy40MSAxNTcuOTk4LDcuMzA0IEwxNTcuOTk4LDYuNDE4IEMxNTcuOTk4LDUuODM0IDE1Ny42ODYsNS4yOTUgMTU3LjE4MSw1LjAwMiBDMTU2LjYyNCw0LjY4IDE1MC40NDIsMS4xMTEgMTUwLjQ0MiwxLjExMSBDMTUwLjE4OSwwLjk2NSAxNDkuOTA3LDAuODkyIDE0OS42MjUsMC44OTIiIGlkPSJGaWxsLTEiIGZpbGw9IiM0NTVBNjQiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOTYuMDI3LDI1LjYzNiBMMTQyLjYwMyw1Mi41MjcgQzE0My44MDcsNTMuMjIyIDE0NC41ODIsNTQuMTE0IDE0NC44NDUsNTUuMDY4IEwxNDQuODM1LDU1LjA3NSBMNjMuNDYxLDEwMi4wNTcgTDYzLjQ2LDEwMi4wNTcgQzYxLjgwNiwxMDEuOTA1IDYwLjI2MSwxMDEuNDU3IDU5LjA1NywxMDAuNzYyIEwxMi40ODEsNzMuODcxIEw5Ni4wMjcsMjUuNjM2IiBpZD0iRmlsbC0yIiBmaWxsPSIjRkFGQUZBIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTYzLjQ2MSwxMDIuMTc0IEM2My40NTMsMTAyLjE3NCA2My40NDYsMTAyLjE3NCA2My40MzksMTAyLjE3MiBDNjEuNzQ2LDEwMi4wMTYgNjAuMjExLDEwMS41NjMgNTguOTk4LDEwMC44NjMgTDEyLjQyMiw3My45NzMgQzEyLjM4Niw3My45NTIgMTIuMzY0LDczLjkxNCAxMi4zNjQsNzMuODcxIEMxMi4zNjQsNzMuODMgMTIuMzg2LDczLjc5MSAxMi40MjIsNzMuNzcgTDk1Ljk2OCwyNS41MzUgQzk2LjAwNCwyNS41MTQgOTYuMDQ5LDI1LjUxNCA5Ni4wODUsMjUuNTM1IEwxNDIuNjYxLDUyLjQyNiBDMTQzLjg4OCw1My4xMzQgMTQ0LjY4Miw1NC4wMzggMTQ0Ljk1Nyw1NS4wMzcgQzE0NC45Nyw1NS4wODMgMTQ0Ljk1Myw1NS4xMzMgMTQ0LjkxNSw1NS4xNjEgQzE0NC45MTEsNTUuMTY1IDE0NC44OTgsNTUuMTc0IDE0NC44OTQsNTUuMTc3IEw2My41MTksMTAyLjE1OCBDNjMuNTAxLDEwMi4xNjkgNjMuNDgxLDEwMi4xNzQgNjMuNDYxLDEwMi4xNzQgTDYzLjQ2MSwxMDIuMTc0IFogTTEyLjcxNCw3My44NzEgTDU5LjExNSwxMDAuNjYxIEM2MC4yOTMsMTAxLjM0MSA2MS43ODYsMTAxLjc4MiA2My40MzUsMTAxLjkzNyBMMTQ0LjcwNyw1NS4wMTUgQzE0NC40MjgsNTQuMTA4IDE0My42ODIsNTMuMjg1IDE0Mi41NDQsNTIuNjI4IEw5Ni4wMjcsMjUuNzcxIEwxMi43MTQsNzMuODcxIEwxMi43MTQsNzMuODcxIFoiIGlkPSJGaWxsLTMiIGZpbGw9IiM2MDdEOEIiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTQ4LjMyNyw1OC40NzEgQzE0OC4xNDUsNTguNDggMTQ3Ljk2Miw1OC40OCAxNDcuNzgxLDU4LjQ3MiBDMTQ1Ljg4Nyw1OC4zODkgMTQ0LjQ3OSw1Ny40MzQgMTQ0LjYzNiw1Ni4zNCBDMTQ0LjY4OSw1NS45NjcgMTQ0LjY2NCw1NS41OTcgMTQ0LjU2NCw1NS4yMzUgTDYzLjQ2MSwxMDIuMDU3IEM2NC4wODksMTAyLjExNSA2NC43MzMsMTAyLjEzIDY1LjM3OSwxMDIuMDk5IEM2NS41NjEsMTAyLjA5IDY1Ljc0MywxMDIuMDkgNjUuOTI1LDEwMi4wOTggQzY3LjgxOSwxMDIuMTgxIDY5LjIyNywxMDMuMTM2IDY5LjA3LDEwNC4yMyBMMTQ4LjMyNyw1OC40NzEiIGlkPSJGaWxsLTQiIGZpbGw9IiNGRkZGRkYiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNjkuMDcsMTA0LjM0NyBDNjkuMDQ4LDEwNC4zNDcgNjkuMDI1LDEwNC4zNCA2OS4wMDUsMTA0LjMyNyBDNjguOTY4LDEwNC4zMDEgNjguOTQ4LDEwNC4yNTcgNjguOTU1LDEwNC4yMTMgQzY5LDEwMy44OTYgNjguODk4LDEwMy41NzYgNjguNjU4LDEwMy4yODggQzY4LjE1MywxMDIuNjc4IDY3LjEwMywxMDIuMjY2IDY1LjkyLDEwMi4yMTQgQzY1Ljc0MiwxMDIuMjA2IDY1LjU2MywxMDIuMjA3IDY1LjM4NSwxMDIuMjE1IEM2NC43NDIsMTAyLjI0NiA2NC4wODcsMTAyLjIzMiA2My40NSwxMDIuMTc0IEM2My4zOTksMTAyLjE2OSA2My4zNTgsMTAyLjEzMiA2My4zNDcsMTAyLjA4MiBDNjMuMzM2LDEwMi4wMzMgNjMuMzU4LDEwMS45ODEgNjMuNDAyLDEwMS45NTYgTDE0NC41MDYsNTUuMTM0IEMxNDQuNTM3LDU1LjExNiAxNDQuNTc1LDU1LjExMyAxNDQuNjA5LDU1LjEyNyBDMTQ0LjY0Miw1NS4xNDEgMTQ0LjY2OCw1NS4xNyAxNDQuNjc3LDU1LjIwNCBDMTQ0Ljc4MSw1NS41ODUgMTQ0LjgwNiw1NS45NzIgMTQ0Ljc1MSw1Ni4zNTcgQzE0NC43MDYsNTYuNjczIDE0NC44MDgsNTYuOTk0IDE0NS4wNDcsNTcuMjgyIEMxNDUuNTUzLDU3Ljg5MiAxNDYuNjAyLDU4LjMwMyAxNDcuNzg2LDU4LjM1NSBDMTQ3Ljk2NCw1OC4zNjMgMTQ4LjE0Myw1OC4zNjMgMTQ4LjMyMSw1OC4zNTQgQzE0OC4zNzcsNTguMzUyIDE0OC40MjQsNTguMzg3IDE0OC40MzksNTguNDM4IEMxNDguNDU0LDU4LjQ5IDE0OC40MzIsNTguNTQ1IDE0OC4zODUsNTguNTcyIEw2OS4xMjksMTA0LjMzMSBDNjkuMTExLDEwNC4zNDIgNjkuMDksMTA0LjM0NyA2OS4wNywxMDQuMzQ3IEw2OS4wNywxMDQuMzQ3IFogTTY1LjY2NSwxMDEuOTc1IEM2NS43NTQsMTAxLjk3NSA2NS44NDIsMTAxLjk3NyA2NS45MywxMDEuOTgxIEM2Ny4xOTYsMTAyLjAzNyA2OC4yODMsMTAyLjQ2OSA2OC44MzgsMTAzLjEzOSBDNjkuMDY1LDEwMy40MTMgNjkuMTg4LDEwMy43MTQgNjkuMTk4LDEwNC4wMjEgTDE0Ny44ODMsNTguNTkyIEMxNDcuODQ3LDU4LjU5MiAxNDcuODExLDU4LjU5MSAxNDcuNzc2LDU4LjU4OSBDMTQ2LjUwOSw1OC41MzMgMTQ1LjQyMiw1OC4xIDE0NC44NjcsNTcuNDMxIEMxNDQuNTg1LDU3LjA5MSAxNDQuNDY1LDU2LjcwNyAxNDQuNTIsNTYuMzI0IEMxNDQuNTYzLDU2LjAyMSAxNDQuNTUyLDU1LjcxNiAxNDQuNDg4LDU1LjQxNCBMNjMuODQ2LDEwMS45NyBDNjQuMzUzLDEwMi4wMDIgNjQuODY3LDEwMi4wMDYgNjUuMzc0LDEwMS45ODIgQzY1LjQ3MSwxMDEuOTc3IDY1LjU2OCwxMDEuOTc1IDY1LjY2NSwxMDEuOTc1IEw2NS42NjUsMTAxLjk3NSBaIiBpZD0iRmlsbC01IiBmaWxsPSIjNjA3RDhCIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTIuMjA4LDU1LjEzNCBDMS4yMDcsNTMuMzA3IDEuOTY3LDUwLjkxNyAzLjkwNiw0OS43OTcgTDU5LjkxNywxNy40NTMgQzYxLjg1NiwxNi4zMzMgNjQuMjQxLDE2LjkwNyA2NS4yNDMsMTguNzM0IEw2NS40NzUsMTkuMTQ0IEM2NS44NzIsMTkuODgyIDY2LjM2OCwyMC41NiA2Ni45NDUsMjEuMTY1IEw2Ny4yMjMsMjEuNDM1IEM3MC41NDgsMjQuNjQ5IDc1LjgwNiwyNS4xNTEgODAuMTExLDIyLjY2NSBMODcuNDMsMTguNDQ1IEM4OS4zNywxNy4zMjYgOTEuNzU0LDE3Ljg5OSA5Mi43NTUsMTkuNzI3IEw5Ni4wMDUsMjUuNjU1IEwxMi40ODYsNzMuODg0IEwyLjIwOCw1NS4xMzQgWiIgaWQ9IkZpbGwtNiIgZmlsbD0iI0ZBRkFGQSI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMi40ODYsNzQuMDAxIEMxMi40NzYsNzQuMDAxIDEyLjQ2NSw3My45OTkgMTIuNDU1LDczLjk5NiBDMTIuNDI0LDczLjk4OCAxMi4zOTksNzMuOTY3IDEyLjM4NCw3My45NCBMMi4xMDYsNTUuMTkgQzEuMDc1LDUzLjMxIDEuODU3LDUwLjg0NSAzLjg0OCw0OS42OTYgTDU5Ljg1OCwxNy4zNTIgQzYwLjUyNSwxNi45NjcgNjEuMjcxLDE2Ljc2NCA2Mi4wMTYsMTYuNzY0IEM2My40MzEsMTYuNzY0IDY0LjY2NiwxNy40NjYgNjUuMzI3LDE4LjY0NiBDNjUuMzM3LDE4LjY1NCA2NS4zNDUsMTguNjYzIDY1LjM1MSwxOC42NzQgTDY1LjU3OCwxOS4wODggQzY1LjU4NCwxOS4xIDY1LjU4OSwxOS4xMTIgNjUuNTkxLDE5LjEyNiBDNjUuOTg1LDE5LjgzOCA2Ni40NjksMjAuNDk3IDY3LjAzLDIxLjA4NSBMNjcuMzA1LDIxLjM1MSBDNjkuMTUxLDIzLjEzNyA3MS42NDksMjQuMTIgNzQuMzM2LDI0LjEyIEM3Ni4zMTMsMjQuMTIgNzguMjksMjMuNTgyIDgwLjA1MywyMi41NjMgQzgwLjA2NCwyMi41NTcgODAuMDc2LDIyLjU1MyA4MC4wODgsMjIuNTUgTDg3LjM3MiwxOC4zNDQgQzg4LjAzOCwxNy45NTkgODguNzg0LDE3Ljc1NiA4OS41MjksMTcuNzU2IEM5MC45NTYsMTcuNzU2IDkyLjIwMSwxOC40NzIgOTIuODU4LDE5LjY3IEw5Ni4xMDcsMjUuNTk5IEM5Ni4xMzgsMjUuNjU0IDk2LjExOCwyNS43MjQgOTYuMDYzLDI1Ljc1NiBMMTIuNTQ1LDczLjk4NSBDMTIuNTI2LDczLjk5NiAxMi41MDYsNzQuMDAxIDEyLjQ4Niw3NC4wMDEgTDEyLjQ4Niw3NC4wMDEgWiBNNjIuMDE2LDE2Ljk5NyBDNjEuMzEyLDE2Ljk5NyA2MC42MDYsMTcuMTkgNTkuOTc1LDE3LjU1NCBMMy45NjUsNDkuODk5IEMyLjA4Myw1MC45ODUgMS4zNDEsNTMuMzA4IDIuMzEsNTUuMDc4IEwxMi41MzEsNzMuNzIzIEw5NS44NDgsMjUuNjExIEw5Mi42NTMsMTkuNzgyIEM5Mi4wMzgsMTguNjYgOTAuODcsMTcuOTkgODkuNTI5LDE3Ljk5IEM4OC44MjUsMTcuOTkgODguMTE5LDE4LjE4MiA4Ny40ODksMTguNTQ3IEw4MC4xNzIsMjIuNzcyIEM4MC4xNjEsMjIuNzc4IDgwLjE0OSwyMi43ODIgODAuMTM3LDIyLjc4NSBDNzguMzQ2LDIzLjgxMSA3Ni4zNDEsMjQuMzU0IDc0LjMzNiwyNC4zNTQgQzcxLjU4OCwyNC4zNTQgNjkuMDMzLDIzLjM0NyA2Ny4xNDIsMjEuNTE5IEw2Ni44NjQsMjEuMjQ5IEM2Ni4yNzcsMjAuNjM0IDY1Ljc3NCwxOS45NDcgNjUuMzY3LDE5LjIwMyBDNjUuMzYsMTkuMTkyIDY1LjM1NiwxOS4xNzkgNjUuMzU0LDE5LjE2NiBMNjUuMTYzLDE4LjgxOSBDNjUuMTU0LDE4LjgxMSA2NS4xNDYsMTguODAxIDY1LjE0LDE4Ljc5IEM2NC41MjUsMTcuNjY3IDYzLjM1NywxNi45OTcgNjIuMDE2LDE2Ljk5NyBMNjIuMDE2LDE2Ljk5NyBaIiBpZD0iRmlsbC03IiBmaWxsPSIjNjA3RDhCIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTQyLjQzNCw0OC44MDggTDQyLjQzNCw0OC44MDggQzM5LjkyNCw0OC44MDcgMzcuNzM3LDQ3LjU1IDM2LjU4Miw0NS40NDMgQzM0Ljc3MSw0Mi4xMzkgMzYuMTQ0LDM3LjgwOSAzOS42NDEsMzUuNzg5IEw1MS45MzIsMjguNjkxIEM1My4xMDMsMjguMDE1IDU0LjQxMywyNy42NTggNTUuNzIxLDI3LjY1OCBDNTguMjMxLDI3LjY1OCA2MC40MTgsMjguOTE2IDYxLjU3MywzMS4wMjMgQzYzLjM4NCwzNC4zMjcgNjIuMDEyLDM4LjY1NyA1OC41MTQsNDAuNjc3IEw0Ni4yMjMsNDcuNzc1IEM0NS4wNTMsNDguNDUgNDMuNzQyLDQ4LjgwOCA0Mi40MzQsNDguODA4IEw0Mi40MzQsNDguODA4IFogTTU1LjcyMSwyOC4xMjUgQzU0LjQ5NSwyOC4xMjUgNTMuMjY1LDI4LjQ2MSA1Mi4xNjYsMjkuMDk2IEwzOS44NzUsMzYuMTk0IEMzNi41OTYsMzguMDg3IDM1LjMwMiw0Mi4xMzYgMzYuOTkyLDQ1LjIxOCBDMzguMDYzLDQ3LjE3MyA0MC4wOTgsNDguMzQgNDIuNDM0LDQ4LjM0IEM0My42NjEsNDguMzQgNDQuODksNDguMDA1IDQ1Ljk5LDQ3LjM3IEw1OC4yODEsNDAuMjcyIEM2MS41NiwzOC4zNzkgNjIuODUzLDM0LjMzIDYxLjE2NCwzMS4yNDggQzYwLjA5MiwyOS4yOTMgNTguMDU4LDI4LjEyNSA1NS43MjEsMjguMTI1IEw1NS43MjEsMjguMTI1IFoiIGlkPSJGaWxsLTgiIGZpbGw9IiM2MDdEOEIiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTQ5LjU4OCwyLjQwNyBDMTQ5LjU4OCwyLjQwNyAxNTUuNzY4LDUuOTc1IDE1Ni4zMjUsNi4yOTcgTDE1Ni4zMjUsNy4xODQgQzE1Ni4zMjUsNy4zNiAxNTYuMzM4LDcuNTQ0IDE1Ni4zNjIsNy43MzMgQzE1Ni4zNzMsNy44MTQgMTU2LjM4Miw3Ljg5NCAxNTYuMzksNy45NzUgQzE1Ni41Myw5LjM5IDE1Ny4zNjMsMTAuOTczIDE1OC40OTUsMTEuOTc0IEwxNjUuODkxLDE4LjUxOSBDMTY2LjA2OCwxOC42NzUgMTY2LjI0OSwxOC44MTQgMTY2LjQzMiwxOC45MzQgQzE2OC4wMTEsMTkuOTc0IDE2OS4zODIsMTkuNCAxNjkuNDk0LDE3LjY1MiBDMTY5LjU0MywxNi44NjggMTY5LjU1MSwxNi4wNTcgMTY5LjUxNywxNS4yMjMgTDE2OS41MTQsMTUuMDYzIEwxNjkuNTE0LDEzLjkxMiBDMTcwLjc4LDE0LjY0MiAxOTUuNTAxLDI4LjkxNSAxOTUuNTAxLDI4LjkxNSBMMTk1LjUwMSw4Mi45MTUgQzE5NS41MDEsODQuMDA1IDE5NC43MzEsODQuNDQ1IDE5My43ODEsODMuODk3IEwxNTEuMzA4LDU5LjM3NCBDMTUwLjM1OCw1OC44MjYgMTQ5LjU4OCw1Ny40OTcgMTQ5LjU4OCw1Ni40MDggTDE0OS41ODgsMjIuMzc1IiBpZD0iRmlsbC05IiBmaWxsPSIjRkFGQUZBIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTE5NC41NTMsODQuMjUgQzE5NC4yOTYsODQuMjUgMTk0LjAxMyw4NC4xNjUgMTkzLjcyMiw4My45OTcgTDE1MS4yNSw1OS40NzYgQzE1MC4yNjksNTguOTA5IDE0OS40NzEsNTcuNTMzIDE0OS40NzEsNTYuNDA4IEwxNDkuNDcxLDIyLjM3NSBMMTQ5LjcwNSwyMi4zNzUgTDE0OS43MDUsNTYuNDA4IEMxNDkuNzA1LDU3LjQ1OSAxNTAuNDUsNTguNzQ0IDE1MS4zNjYsNTkuMjc0IEwxOTMuODM5LDgzLjc5NSBDMTk0LjI2Myw4NC4wNCAxOTQuNjU1LDg0LjA4MyAxOTQuOTQyLDgzLjkxNyBDMTk1LjIyNyw4My43NTMgMTk1LjM4NCw4My4zOTcgMTk1LjM4NCw4Mi45MTUgTDE5NS4zODQsMjguOTgyIEMxOTQuMTAyLDI4LjI0MiAxNzIuMTA0LDE1LjU0MiAxNjkuNjMxLDE0LjExNCBMMTY5LjYzNCwxNS4yMiBDMTY5LjY2OCwxNi4wNTIgMTY5LjY2LDE2Ljg3NCAxNjkuNjEsMTcuNjU5IEMxNjkuNTU2LDE4LjUwMyAxNjkuMjE0LDE5LjEyMyAxNjguNjQ3LDE5LjQwNSBDMTY4LjAyOCwxOS43MTQgMTY3LjE5NywxOS41NzggMTY2LjM2NywxOS4wMzIgQzE2Ni4xODEsMTguOTA5IDE2NS45OTUsMTguNzY2IDE2NS44MTQsMTguNjA2IEwxNTguNDE3LDEyLjA2MiBDMTU3LjI1OSwxMS4wMzYgMTU2LjQxOCw5LjQzNyAxNTYuMjc0LDcuOTg2IEMxNTYuMjY2LDcuOTA3IDE1Ni4yNTcsNy44MjcgMTU2LjI0Nyw3Ljc0OCBDMTU2LjIyMSw3LjU1NSAxNTYuMjA5LDcuMzY1IDE1Ni4yMDksNy4xODQgTDE1Ni4yMDksNi4zNjQgQzE1NS4zNzUsNS44ODMgMTQ5LjUyOSwyLjUwOCAxNDkuNTI5LDIuNTA4IEwxNDkuNjQ2LDIuMzA2IEMxNDkuNjQ2LDIuMzA2IDE1NS44MjcsNS44NzQgMTU2LjM4NCw2LjE5NiBMMTU2LjQ0Miw2LjIzIEwxNTYuNDQyLDcuMTg0IEMxNTYuNDQyLDcuMzU1IDE1Ni40NTQsNy41MzUgMTU2LjQ3OCw3LjcxNyBDMTU2LjQ4OSw3LjggMTU2LjQ5OSw3Ljg4MiAxNTYuNTA3LDcuOTYzIEMxNTYuNjQ1LDkuMzU4IDE1Ny40NTUsMTAuODk4IDE1OC41NzIsMTEuODg2IEwxNjUuOTY5LDE4LjQzMSBDMTY2LjE0MiwxOC41ODQgMTY2LjMxOSwxOC43MiAxNjYuNDk2LDE4LjgzNyBDMTY3LjI1NCwxOS4zMzYgMTY4LDE5LjQ2NyAxNjguNTQzLDE5LjE5NiBDMTY5LjAzMywxOC45NTMgMTY5LjMyOSwxOC40MDEgMTY5LjM3NywxNy42NDUgQzE2OS40MjcsMTYuODY3IDE2OS40MzQsMTYuMDU0IDE2OS40MDEsMTUuMjI4IEwxNjkuMzk3LDE1LjA2NSBMMTY5LjM5NywxMy43MSBMMTY5LjU3MiwxMy44MSBDMTcwLjgzOSwxNC41NDEgMTk1LjU1OSwyOC44MTQgMTk1LjU1OSwyOC44MTQgTDE5NS42MTgsMjguODQ3IEwxOTUuNjE4LDgyLjkxNSBDMTk1LjYxOCw4My40ODQgMTk1LjQyLDgzLjkxMSAxOTUuMDU5LDg0LjExOSBDMTk0LjkwOCw4NC4yMDYgMTk0LjczNyw4NC4yNSAxOTQuNTUzLDg0LjI1IiBpZD0iRmlsbC0xMCIgZmlsbD0iIzYwN0Q4QiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNDUuNjg1LDU2LjE2MSBMMTY5LjgsNzAuMDgzIEwxNDMuODIyLDg1LjA4MSBMMTQyLjM2LDg0Ljc3NCBDMTM1LjgyNiw4Mi42MDQgMTI4LjczMiw4MS4wNDYgMTIxLjM0MSw4MC4xNTggQzExNi45NzYsNzkuNjM0IDExMi42NzgsODEuMjU0IDExMS43NDMsODMuNzc4IEMxMTEuNTA2LDg0LjQxNCAxMTEuNTAzLDg1LjA3MSAxMTEuNzMyLDg1LjcwNiBDMTEzLjI3LDg5Ljk3MyAxMTUuOTY4LDk0LjA2OSAxMTkuNzI3LDk3Ljg0MSBMMTIwLjI1OSw5OC42ODYgQzEyMC4yNiw5OC42ODUgOTQuMjgyLDExMy42ODMgOTQuMjgyLDExMy42ODMgTDcwLjE2Nyw5OS43NjEgTDE0NS42ODUsNTYuMTYxIiBpZD0iRmlsbC0xMSIgZmlsbD0iI0ZGRkZGRiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik05NC4yODIsMTEzLjgxOCBMOTQuMjIzLDExMy43ODUgTDY5LjkzMyw5OS43NjEgTDcwLjEwOCw5OS42NiBMMTQ1LjY4NSw1Ni4wMjYgTDE0NS43NDMsNTYuMDU5IEwxNzAuMDMzLDcwLjA4MyBMMTQzLjg0Miw4NS4yMDUgTDE0My43OTcsODUuMTk1IEMxNDMuNzcyLDg1LjE5IDE0Mi4zMzYsODQuODg4IDE0Mi4zMzYsODQuODg4IEMxMzUuNzg3LDgyLjcxNCAxMjguNzIzLDgxLjE2MyAxMjEuMzI3LDgwLjI3NCBDMTIwLjc4OCw4MC4yMDkgMTIwLjIzNiw4MC4xNzcgMTE5LjY4OSw4MC4xNzcgQzExNS45MzEsODAuMTc3IDExMi42MzUsODEuNzA4IDExMS44NTIsODMuODE5IEMxMTEuNjI0LDg0LjQzMiAxMTEuNjIxLDg1LjA1MyAxMTEuODQyLDg1LjY2NyBDMTEzLjM3Nyw4OS45MjUgMTE2LjA1OCw5My45OTMgMTE5LjgxLDk3Ljc1OCBMMTE5LjgyNiw5Ny43NzkgTDEyMC4zNTIsOTguNjE0IEMxMjAuMzU0LDk4LjYxNyAxMjAuMzU2LDk4LjYyIDEyMC4zNTgsOTguNjI0IEwxMjAuNDIyLDk4LjcyNiBMMTIwLjMxNyw5OC43ODcgQzEyMC4yNjQsOTguODE4IDk0LjU5OSwxMTMuNjM1IDk0LjM0LDExMy43ODUgTDk0LjI4MiwxMTMuODE4IEw5NC4yODIsMTEzLjgxOCBaIE03MC40MDEsOTkuNzYxIEw5NC4yODIsMTEzLjU0OSBMMTE5LjA4NCw5OS4yMjkgQzExOS42Myw5OC45MTQgMTE5LjkzLDk4Ljc0IDEyMC4xMDEsOTguNjU0IEwxMTkuNjM1LDk3LjkxNCBDMTE1Ljg2NCw5NC4xMjcgMTEzLjE2OCw5MC4wMzMgMTExLjYyMiw4NS43NDYgQzExMS4zODIsODUuMDc5IDExMS4zODYsODQuNDA0IDExMS42MzMsODMuNzM4IEMxMTIuNDQ4LDgxLjUzOSAxMTUuODM2LDc5Ljk0MyAxMTkuNjg5LDc5Ljk0MyBDMTIwLjI0Niw3OS45NDMgMTIwLjgwNiw3OS45NzYgMTIxLjM1NSw4MC4wNDIgQzEyOC43NjcsODAuOTMzIDEzNS44NDYsODIuNDg3IDE0Mi4zOTYsODQuNjYzIEMxNDMuMjMyLDg0LjgzOCAxNDMuNjExLDg0LjkxNyAxNDMuNzg2LDg0Ljk2NyBMMTY5LjU2Niw3MC4wODMgTDE0NS42ODUsNTYuMjk1IEw3MC40MDEsOTkuNzYxIEw3MC40MDEsOTkuNzYxIFoiIGlkPSJGaWxsLTEyIiBmaWxsPSIjNjA3RDhCIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTE2Ny4yMywxOC45NzkgTDE2Ny4yMyw2OS44NSBMMTM5LjkwOSw4NS42MjMgTDEzMy40NDgsNzEuNDU2IEMxMzIuNTM4LDY5LjQ2IDEzMC4wMiw2OS43MTggMTI3LjgyNCw3Mi4wMyBDMTI2Ljc2OSw3My4xNCAxMjUuOTMxLDc0LjU4NSAxMjUuNDk0LDc2LjA0OCBMMTE5LjAzNCw5Ny42NzYgTDkxLjcxMiwxMTMuNDUgTDkxLjcxMiw2Mi41NzkgTDE2Ny4yMywxOC45NzkiIGlkPSJGaWxsLTEzIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTkxLjcxMiwxMTMuNTY3IEM5MS42OTIsMTEzLjU2NyA5MS42NzIsMTEzLjU2MSA5MS42NTMsMTEzLjU1MSBDOTEuNjE4LDExMy41MyA5MS41OTUsMTEzLjQ5MiA5MS41OTUsMTEzLjQ1IEw5MS41OTUsNjIuNTc5IEM5MS41OTUsNjIuNTM3IDkxLjYxOCw2Mi40OTkgOTEuNjUzLDYyLjQ3OCBMMTY3LjE3MiwxOC44NzggQzE2Ny4yMDgsMTguODU3IDE2Ny4yNTIsMTguODU3IDE2Ny4yODgsMTguODc4IEMxNjcuMzI0LDE4Ljg5OSAxNjcuMzQ3LDE4LjkzNyAxNjcuMzQ3LDE4Ljk3OSBMMTY3LjM0Nyw2OS44NSBDMTY3LjM0Nyw2OS44OTEgMTY3LjMyNCw2OS45MyAxNjcuMjg4LDY5Ljk1IEwxMzkuOTY3LDg1LjcyNSBDMTM5LjkzOSw4NS43NDEgMTM5LjkwNSw4NS43NDUgMTM5Ljg3Myw4NS43MzUgQzEzOS44NDIsODUuNzI1IDEzOS44MTYsODUuNzAyIDEzOS44MDIsODUuNjcyIEwxMzMuMzQyLDcxLjUwNCBDMTMyLjk2Nyw3MC42ODIgMTMyLjI4LDcwLjIyOSAxMzEuNDA4LDcwLjIyOSBDMTMwLjMxOSw3MC4yMjkgMTI5LjA0NCw3MC45MTUgMTI3LjkwOCw3Mi4xMSBDMTI2Ljg3NCw3My4yIDEyNi4wMzQsNzQuNjQ3IDEyNS42MDYsNzYuMDgyIEwxMTkuMTQ2LDk3LjcwOSBDMTE5LjEzNyw5Ny43MzggMTE5LjExOCw5Ny43NjIgMTE5LjA5Miw5Ny43NzcgTDkxLjc3LDExMy41NTEgQzkxLjc1MiwxMTMuNTYxIDkxLjczMiwxMTMuNTY3IDkxLjcxMiwxMTMuNTY3IEw5MS43MTIsMTEzLjU2NyBaIE05MS44MjksNjIuNjQ3IEw5MS44MjksMTEzLjI0OCBMMTE4LjkzNSw5Ny41OTggTDEyNS4zODIsNzYuMDE1IEMxMjUuODI3LDc0LjUyNSAxMjYuNjY0LDczLjA4MSAxMjcuNzM5LDcxLjk1IEMxMjguOTE5LDcwLjcwOCAxMzAuMjU2LDY5Ljk5NiAxMzEuNDA4LDY5Ljk5NiBDMTMyLjM3Nyw2OS45OTYgMTMzLjEzOSw3MC40OTcgMTMzLjU1NCw3MS40MDcgTDEzOS45NjEsODUuNDU4IEwxNjcuMTEzLDY5Ljc4MiBMMTY3LjExMywxOS4xODEgTDkxLjgyOSw2Mi42NDcgTDkxLjgyOSw2Mi42NDcgWiIgaWQ9IkZpbGwtMTQiIGZpbGw9IiM2MDdEOEIiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTY4LjU0MywxOS4yMTMgTDE2OC41NDMsNzAuMDgzIEwxNDEuMjIxLDg1Ljg1NyBMMTM0Ljc2MSw3MS42ODkgQzEzMy44NTEsNjkuNjk0IDEzMS4zMzMsNjkuOTUxIDEyOS4xMzcsNzIuMjYzIEMxMjguMDgyLDczLjM3NCAxMjcuMjQ0LDc0LjgxOSAxMjYuODA3LDc2LjI4MiBMMTIwLjM0Niw5Ny45MDkgTDkzLjAyNSwxMTMuNjgzIEw5My4wMjUsNjIuODEzIEwxNjguNTQzLDE5LjIxMyIgaWQ9IkZpbGwtMTUiIGZpbGw9IiNGRkZGRkYiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOTMuMDI1LDExMy44IEM5My4wMDUsMTEzLjggOTIuOTg0LDExMy43OTUgOTIuOTY2LDExMy43ODUgQzkyLjkzMSwxMTMuNzY0IDkyLjkwOCwxMTMuNzI1IDkyLjkwOCwxMTMuNjg0IEw5Mi45MDgsNjIuODEzIEM5Mi45MDgsNjIuNzcxIDkyLjkzMSw2Mi43MzMgOTIuOTY2LDYyLjcxMiBMMTY4LjQ4NCwxOS4xMTIgQzE2OC41MiwxOS4wOSAxNjguNTY1LDE5LjA5IDE2OC42MDEsMTkuMTEyIEMxNjguNjM3LDE5LjEzMiAxNjguNjYsMTkuMTcxIDE2OC42NiwxOS4yMTIgTDE2OC42Niw3MC4wODMgQzE2OC42Niw3MC4xMjUgMTY4LjYzNyw3MC4xNjQgMTY4LjYwMSw3MC4xODQgTDE0MS4yOCw4NS45NTggQzE0MS4yNTEsODUuOTc1IDE0MS4yMTcsODUuOTc5IDE0MS4xODYsODUuOTY4IEMxNDEuMTU0LDg1Ljk1OCAxNDEuMTI5LDg1LjkzNiAxNDEuMTE1LDg1LjkwNiBMMTM0LjY1NSw3MS43MzggQzEzNC4yOCw3MC45MTUgMTMzLjU5Myw3MC40NjMgMTMyLjcyLDcwLjQ2MyBDMTMxLjYzMiw3MC40NjMgMTMwLjM1Nyw3MS4xNDggMTI5LjIyMSw3Mi4zNDQgQzEyOC4xODYsNzMuNDMzIDEyNy4zNDcsNzQuODgxIDEyNi45MTksNzYuMzE1IEwxMjAuNDU4LDk3Ljk0MyBDMTIwLjQ1LDk3Ljk3MiAxMjAuNDMxLDk3Ljk5NiAxMjAuNDA1LDk4LjAxIEw5My4wODMsMTEzLjc4NSBDOTMuMDY1LDExMy43OTUgOTMuMDQ1LDExMy44IDkzLjAyNSwxMTMuOCBMOTMuMDI1LDExMy44IFogTTkzLjE0Miw2Mi44ODEgTDkzLjE0MiwxMTMuNDgxIEwxMjAuMjQ4LDk3LjgzMiBMMTI2LjY5NSw3Ni4yNDggQzEyNy4xNCw3NC43NTggMTI3Ljk3Nyw3My4zMTUgMTI5LjA1Miw3Mi4xODMgQzEzMC4yMzEsNzAuOTQyIDEzMS41NjgsNzAuMjI5IDEzMi43Miw3MC4yMjkgQzEzMy42ODksNzAuMjI5IDEzNC40NTIsNzAuNzMxIDEzNC44NjcsNzEuNjQxIEwxNDEuMjc0LDg1LjY5MiBMMTY4LjQyNiw3MC4wMTYgTDE2OC40MjYsMTkuNDE1IEw5My4xNDIsNjIuODgxIEw5My4xNDIsNjIuODgxIFoiIGlkPSJGaWxsLTE2IiBmaWxsPSIjNjA3RDhCIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTE2OS44LDcwLjA4MyBMMTQyLjQ3OCw4NS44NTcgTDEzNi4wMTgsNzEuNjg5IEMxMzUuMTA4LDY5LjY5NCAxMzIuNTksNjkuOTUxIDEzMC4zOTMsNzIuMjYzIEMxMjkuMzM5LDczLjM3NCAxMjguNSw3NC44MTkgMTI4LjA2NCw3Ni4yODIgTDEyMS42MDMsOTcuOTA5IEw5NC4yODIsMTEzLjY4MyBMOTQuMjgyLDYyLjgxMyBMMTY5LjgsMTkuMjEzIEwxNjkuOCw3MC4wODMgWiIgaWQ9IkZpbGwtMTciIGZpbGw9IiNGQUZBRkEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOTQuMjgyLDExMy45MTcgQzk0LjI0MSwxMTMuOTE3IDk0LjIwMSwxMTMuOTA3IDk0LjE2NSwxMTMuODg2IEM5NC4wOTMsMTEzLjg0NSA5NC4wNDgsMTEzLjc2NyA5NC4wNDgsMTEzLjY4NCBMOTQuMDQ4LDYyLjgxMyBDOTQuMDQ4LDYyLjczIDk0LjA5Myw2Mi42NTIgOTQuMTY1LDYyLjYxMSBMMTY5LjY4MywxOS4wMSBDMTY5Ljc1NSwxOC45NjkgMTY5Ljg0NCwxOC45NjkgMTY5LjkxNywxOS4wMSBDMTY5Ljk4OSwxOS4wNTIgMTcwLjAzMywxOS4xMjkgMTcwLjAzMywxOS4yMTIgTDE3MC4wMzMsNzAuMDgzIEMxNzAuMDMzLDcwLjE2NiAxNjkuOTg5LDcwLjI0NCAxNjkuOTE3LDcwLjI4NSBMMTQyLjU5NSw4Ni4wNiBDMTQyLjUzOCw4Ni4wOTIgMTQyLjQ2OSw4Ni4xIDE0Mi40MDcsODYuMDggQzE0Mi4zNDQsODYuMDYgMTQyLjI5Myw4Ni4wMTQgMTQyLjI2Niw4NS45NTQgTDEzNS44MDUsNzEuNzg2IEMxMzUuNDQ1LDcwLjk5NyAxMzQuODEzLDcwLjU4IDEzMy45NzcsNzAuNTggQzEzMi45MjEsNzAuNTggMTMxLjY3Niw3MS4yNTIgMTMwLjU2Miw3Mi40MjQgQzEyOS41NCw3My41MDEgMTI4LjcxMSw3NC45MzEgMTI4LjI4Nyw3Ni4zNDggTDEyMS44MjcsOTcuOTc2IEMxMjEuODEsOTguMDM0IDEyMS43NzEsOTguMDgyIDEyMS43Miw5OC4xMTIgTDk0LjM5OCwxMTMuODg2IEM5NC4zNjIsMTEzLjkwNyA5NC4zMjIsMTEzLjkxNyA5NC4yODIsMTEzLjkxNyBMOTQuMjgyLDExMy45MTcgWiBNOTQuNTE1LDYyLjk0OCBMOTQuNTE1LDExMy4yNzkgTDEyMS40MDYsOTcuNzU0IEwxMjcuODQsNzYuMjE1IEMxMjguMjksNzQuNzA4IDEyOS4xMzcsNzMuMjQ3IDEzMC4yMjQsNzIuMTAzIEMxMzEuNDI1LDcwLjgzOCAxMzIuNzkzLDcwLjExMiAxMzMuOTc3LDcwLjExMiBDMTM0Ljk5NSw3MC4xMTIgMTM1Ljc5NSw3MC42MzggMTM2LjIzLDcxLjU5MiBMMTQyLjU4NCw4NS41MjYgTDE2OS41NjYsNjkuOTQ4IEwxNjkuNTY2LDE5LjYxNyBMOTQuNTE1LDYyLjk0OCBMOTQuNTE1LDYyLjk0OCBaIiBpZD0iRmlsbC0xOCIgZmlsbD0iIzYwN0Q4QiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMDkuODk0LDkyLjk0MyBMMTA5Ljg5NCw5Mi45NDMgQzEwOC4xMiw5Mi45NDMgMTA2LjY1Myw5Mi4yMTggMTA1LjY1LDkwLjgyMyBDMTA1LjU4Myw5MC43MzEgMTA1LjU5Myw5MC42MSAxMDUuNjczLDkwLjUyOSBDMTA1Ljc1Myw5MC40NDggMTA1Ljg4LDkwLjQ0IDEwNS45NzQsOTAuNTA2IEMxMDYuNzU0LDkxLjA1MyAxMDcuNjc5LDkxLjMzMyAxMDguNzI0LDkxLjMzMyBDMTEwLjA0Nyw5MS4zMzMgMTExLjQ3OCw5MC44OTQgMTEyLjk4LDkwLjAyNyBDMTE4LjI5MSw4Ni45NiAxMjIuNjExLDc5LjUwOSAxMjIuNjExLDczLjQxNiBDMTIyLjYxMSw3MS40ODkgMTIyLjE2OSw2OS44NTYgMTIxLjMzMyw2OC42OTIgQzEyMS4yNjYsNjguNiAxMjEuMjc2LDY4LjQ3MyAxMjEuMzU2LDY4LjM5MiBDMTIxLjQzNiw2OC4zMTEgMTIxLjU2Myw2OC4yOTkgMTIxLjY1Niw2OC4zNjUgQzEyMy4zMjcsNjkuNTM3IDEyNC4yNDcsNzEuNzQ2IDEyNC4yNDcsNzQuNTg0IEMxMjQuMjQ3LDgwLjgyNiAxMTkuODIxLDg4LjQ0NyAxMTQuMzgyLDkxLjU4NyBDMTEyLjgwOCw5Mi40OTUgMTExLjI5OCw5Mi45NDMgMTA5Ljg5NCw5Mi45NDMgTDEwOS44OTQsOTIuOTQzIFogTTEwNi45MjUsOTEuNDAxIEMxMDcuNzM4LDkyLjA1MiAxMDguNzQ1LDkyLjI3OCAxMDkuODkzLDkyLjI3OCBMMTA5Ljg5NCw5Mi4yNzggQzExMS4yMTUsOTIuMjc4IDExMi42NDcsOTEuOTUxIDExNC4xNDgsOTEuMDg0IEMxMTkuNDU5LDg4LjAxNyAxMjMuNzgsODAuNjIxIDEyMy43OCw3NC41MjggQzEyMy43OCw3Mi41NDkgMTIzLjMxNyw3MC45MjkgMTIyLjQ1NCw2OS43NjcgQzEyMi44NjUsNzAuODAyIDEyMy4wNzksNzIuMDQyIDEyMy4wNzksNzMuNDAyIEMxMjMuMDc5LDc5LjY0NSAxMTguNjUzLDg3LjI4NSAxMTMuMjE0LDkwLjQyNSBDMTExLjY0LDkxLjMzNCAxMTAuMTMsOTEuNzQyIDEwOC43MjQsOTEuNzQyIEMxMDguMDgzLDkxLjc0MiAxMDcuNDgxLDkxLjU5MyAxMDYuOTI1LDkxLjQwMSBMMTA2LjkyNSw5MS40MDEgWiIgaWQ9IkZpbGwtMTkiIGZpbGw9IiM2MDdEOEIiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTEzLjA5Nyw5MC4yMyBDMTE4LjQ4MSw4Ny4xMjIgMTIyLjg0NSw3OS41OTQgMTIyLjg0NSw3My40MTYgQzEyMi44NDUsNzEuMzY1IDEyMi4zNjIsNjkuNzI0IDEyMS41MjIsNjguNTU2IEMxMTkuNzM4LDY3LjMwNCAxMTcuMTQ4LDY3LjM2MiAxMTQuMjY1LDY5LjAyNiBDMTA4Ljg4MSw3Mi4xMzQgMTA0LjUxNyw3OS42NjIgMTA0LjUxNyw4NS44NCBDMTA0LjUxNyw4Ny44OTEgMTA1LDg5LjUzMiAxMDUuODQsOTAuNyBDMTA3LjYyNCw5MS45NTIgMTEwLjIxNCw5MS44OTQgMTEzLjA5Nyw5MC4yMyIgaWQ9IkZpbGwtMjAiIGZpbGw9IiNGQUZBRkEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTA4LjcyNCw5MS42MTQgTDEwOC43MjQsOTEuNjE0IEMxMDcuNTgyLDkxLjYxNCAxMDYuNTY2LDkxLjQwMSAxMDUuNzA1LDkwLjc5NyBDMTA1LjY4NCw5MC43ODMgMTA1LjY2NSw5MC44MTEgMTA1LjY1LDkwLjc5IEMxMDQuNzU2LDg5LjU0NiAxMDQuMjgzLDg3Ljg0MiAxMDQuMjgzLDg1LjgxNyBDMTA0LjI4Myw3OS41NzUgMTA4LjcwOSw3MS45NTMgMTE0LjE0OCw2OC44MTIgQzExNS43MjIsNjcuOTA0IDExNy4yMzIsNjcuNDQ5IDExOC42MzgsNjcuNDQ5IEMxMTkuNzgsNjcuNDQ5IDEyMC43OTYsNjcuNzU4IDEyMS42NTYsNjguMzYyIEMxMjEuNjc4LDY4LjM3NyAxMjEuNjk3LDY4LjM5NyAxMjEuNzEyLDY4LjQxOCBDMTIyLjYwNiw2OS42NjIgMTIzLjA3OSw3MS4zOSAxMjMuMDc5LDczLjQxNSBDMTIzLjA3OSw3OS42NTggMTE4LjY1Myw4Ny4xOTggMTEzLjIxNCw5MC4zMzggQzExMS42NCw5MS4yNDcgMTEwLjEzLDkxLjYxNCAxMDguNzI0LDkxLjYxNCBMMTA4LjcyNCw5MS42MTQgWiBNMTA2LjAwNiw5MC41MDUgQzEwNi43OCw5MS4wMzcgMTA3LjY5NCw5MS4yODEgMTA4LjcyNCw5MS4yODEgQzExMC4wNDcsOTEuMjgxIDExMS40NzgsOTAuODY4IDExMi45OCw5MC4wMDEgQzExOC4yOTEsODYuOTM1IDEyMi42MTEsNzkuNDk2IDEyMi42MTEsNzMuNDAzIEMxMjIuNjExLDcxLjQ5NCAxMjIuMTc3LDY5Ljg4IDEyMS4zNTYsNjguNzE4IEMxMjAuNTgyLDY4LjE4NSAxMTkuNjY4LDY3LjkxOSAxMTguNjM4LDY3LjkxOSBDMTE3LjMxNSw2Ny45MTkgMTE1Ljg4Myw2OC4zNiAxMTQuMzgyLDY5LjIyNyBDMTA5LjA3MSw3Mi4yOTMgMTA0Ljc1MSw3OS43MzMgMTA0Ljc1MSw4NS44MjYgQzEwNC43NTEsODcuNzM1IDEwNS4xODUsODkuMzQzIDEwNi4wMDYsOTAuNTA1IEwxMDYuMDA2LDkwLjUwNSBaIiBpZD0iRmlsbC0yMSIgZmlsbD0iIzYwN0Q4QiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNDkuMzE4LDcuMjYyIEwxMzkuMzM0LDE2LjE0IEwxNTUuMjI3LDI3LjE3MSBMMTYwLjgxNiwyMS4wNTkgTDE0OS4zMTgsNy4yNjIiIGlkPSJGaWxsLTIyIiBmaWxsPSIjRkFGQUZBIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTE2OS42NzYsMTMuODQgTDE1OS45MjgsMTkuNDY3IEMxNTYuMjg2LDIxLjU3IDE1MC40LDIxLjU4IDE0Ni43ODEsMTkuNDkxIEMxNDMuMTYxLDE3LjQwMiAxNDMuMTgsMTQuMDAzIDE0Ni44MjIsMTEuOSBMMTU2LjMxNyw2LjI5MiBMMTQ5LjU4OCwyLjQwNyBMNjcuNzUyLDQ5LjQ3OCBMMTEzLjY3NSw3NS45OTIgTDExNi43NTYsNzQuMjEzIEMxMTcuMzg3LDczLjg0OCAxMTcuNjI1LDczLjMxNSAxMTcuMzc0LDcyLjgyMyBDMTE1LjAxNyw2OC4xOTEgMTE0Ljc4MSw2My4yNzcgMTE2LjY5MSw1OC41NjEgQzEyMi4zMjksNDQuNjQxIDE0MS4yLDMzLjc0NiAxNjUuMzA5LDMwLjQ5MSBDMTczLjQ3OCwyOS4zODggMTgxLjk4OSwyOS41MjQgMTkwLjAxMywzMC44ODUgQzE5MC44NjUsMzEuMDMgMTkxLjc4OSwzMC44OTMgMTkyLjQyLDMwLjUyOCBMMTk1LjUwMSwyOC43NSBMMTY5LjY3NiwxMy44NCIgaWQ9IkZpbGwtMjMiIGZpbGw9IiNGQUZBRkEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTEzLjY3NSw3Ni40NTkgQzExMy41OTQsNzYuNDU5IDExMy41MTQsNzYuNDM4IDExMy40NDIsNzYuMzk3IEw2Ny41MTgsNDkuODgyIEM2Ny4zNzQsNDkuNzk5IDY3LjI4NCw0OS42NDUgNjcuMjg1LDQ5LjQ3OCBDNjcuMjg1LDQ5LjMxMSA2Ny4zNzQsNDkuMTU3IDY3LjUxOSw0OS4wNzMgTDE0OS4zNTUsMi4wMDIgQzE0OS40OTksMS45MTkgMTQ5LjY3NywxLjkxOSAxNDkuODIxLDIuMDAyIEwxNTYuNTUsNS44ODcgQzE1Ni43NzQsNi4wMTcgMTU2Ljg1LDYuMzAyIDE1Ni43MjIsNi41MjYgQzE1Ni41OTIsNi43NDkgMTU2LjMwNyw2LjgyNiAxNTYuMDgzLDYuNjk2IEwxNDkuNTg3LDIuOTQ2IEw2OC42ODcsNDkuNDc5IEwxMTMuNjc1LDc1LjQ1MiBMMTE2LjUyMyw3My44MDggQzExNi43MTUsNzMuNjk3IDExNy4xNDMsNzMuMzk5IDExNi45NTgsNzMuMDM1IEMxMTQuNTQyLDY4LjI4NyAxMTQuMyw2My4yMjEgMTE2LjI1OCw1OC4zODUgQzExOS4wNjQsNTEuNDU4IDEyNS4xNDMsNDUuMTQzIDEzMy44NCw0MC4xMjIgQzE0Mi40OTcsMzUuMTI0IDE1My4zNTgsMzEuNjMzIDE2NS4yNDcsMzAuMDI4IEMxNzMuNDQ1LDI4LjkyMSAxODIuMDM3LDI5LjA1OCAxOTAuMDkxLDMwLjQyNSBDMTkwLjgzLDMwLjU1IDE5MS42NTIsMzAuNDMyIDE5Mi4xODYsMzAuMTI0IEwxOTQuNTY3LDI4Ljc1IEwxNjkuNDQyLDE0LjI0NCBDMTY5LjIxOSwxNC4xMTUgMTY5LjE0MiwxMy44MjkgMTY5LjI3MSwxMy42MDYgQzE2OS40LDEzLjM4MiAxNjkuNjg1LDEzLjMwNiAxNjkuOTA5LDEzLjQzNSBMMTk1LjczNCwyOC4zNDUgQzE5NS44NzksMjguNDI4IDE5NS45NjgsMjguNTgzIDE5NS45NjgsMjguNzUgQzE5NS45NjgsMjguOTE2IDE5NS44NzksMjkuMDcxIDE5NS43MzQsMjkuMTU0IEwxOTIuNjUzLDMwLjkzMyBDMTkxLjkzMiwzMS4zNSAxOTAuODksMzEuNTA4IDE4OS45MzUsMzEuMzQ2IEMxODEuOTcyLDI5Ljk5NSAxNzMuNDc4LDI5Ljg2IDE2NS4zNzIsMzAuOTU0IEMxNTMuNjAyLDMyLjU0MyAxNDIuODYsMzUuOTkzIDEzNC4zMDcsNDAuOTMxIEMxMjUuNzkzLDQ1Ljg0NyAxMTkuODUxLDUyLjAwNCAxMTcuMTI0LDU4LjczNiBDMTE1LjI3LDYzLjMxNCAxMTUuNTAxLDY4LjExMiAxMTcuNzksNzIuNjExIEMxMTguMTYsNzMuMzM2IDExNy44NDUsNzQuMTI0IDExNi45OSw3NC42MTcgTDExMy45MDksNzYuMzk3IEMxMTMuODM2LDc2LjQzOCAxMTMuNzU2LDc2LjQ1OSAxMTMuNjc1LDc2LjQ1OSIgaWQ9IkZpbGwtMjQiIGZpbGw9IiM0NTVBNjQiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTUzLjMxNiwyMS4yNzkgQzE1MC45MDMsMjEuMjc5IDE0OC40OTUsMjAuNzUxIDE0Ni42NjQsMTkuNjkzIEMxNDQuODQ2LDE4LjY0NCAxNDMuODQ0LDE3LjIzMiAxNDMuODQ0LDE1LjcxOCBDMTQzLjg0NCwxNC4xOTEgMTQ0Ljg2LDEyLjc2MyAxNDYuNzA1LDExLjY5OCBMMTU2LjE5OCw2LjA5MSBDMTU2LjMwOSw2LjAyNSAxNTYuNDUyLDYuMDYyIDE1Ni41MTgsNi4xNzMgQzE1Ni41ODMsNi4yODQgMTU2LjU0Nyw2LjQyNyAxNTYuNDM2LDYuNDkzIEwxNDYuOTQsMTIuMTAyIEMxNDUuMjQ0LDEzLjA4MSAxNDQuMzEyLDE0LjM2NSAxNDQuMzEyLDE1LjcxOCBDMTQ0LjMxMiwxNy4wNTggMTQ1LjIzLDE4LjMyNiAxNDYuODk3LDE5LjI4OSBDMTUwLjQ0NiwyMS4zMzggMTU2LjI0LDIxLjMyNyAxNTkuODExLDE5LjI2NSBMMTY5LjU1OSwxMy42MzcgQzE2OS42NywxMy41NzMgMTY5LjgxMywxMy42MTEgMTY5Ljg3OCwxMy43MjMgQzE2OS45NDMsMTMuODM0IDE2OS45MDQsMTMuOTc3IDE2OS43OTMsMTQuMDQyIEwxNjAuMDQ1LDE5LjY3IEMxNTguMTg3LDIwLjc0MiAxNTUuNzQ5LDIxLjI3OSAxNTMuMzE2LDIxLjI3OSIgaWQ9IkZpbGwtMjUiIGZpbGw9IiM2MDdEOEIiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTEzLjY3NSw3NS45OTIgTDY3Ljc2Miw0OS40ODQiIGlkPSJGaWxsLTI2IiBmaWxsPSIjNDU1QTY0Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTExMy42NzUsNzYuMzQyIEMxMTMuNjE1LDc2LjM0MiAxMTMuNTU1LDc2LjMyNyAxMTMuNSw3Ni4yOTUgTDY3LjU4Nyw0OS43ODcgQzY3LjQxOSw0OS42OSA2Ny4zNjIsNDkuNDc2IDY3LjQ1OSw0OS4zMDkgQzY3LjU1Niw0OS4xNDEgNjcuNzcsNDkuMDgzIDY3LjkzNyw0OS4xOCBMMTEzLjg1LDc1LjY4OCBDMTE0LjAxOCw3NS43ODUgMTE0LjA3NSw3NiAxMTMuOTc4LDc2LjE2NyBDMTEzLjkxNCw3Ni4yNzkgMTEzLjc5Niw3Ni4zNDIgMTEzLjY3NSw3Ni4zNDIiIGlkPSJGaWxsLTI3IiBmaWxsPSIjNDU1QTY0Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTY3Ljc2Miw0OS40ODQgTDY3Ljc2MiwxMDMuNDg1IEM2Ny43NjIsMTA0LjU3NSA2OC41MzIsMTA1LjkwMyA2OS40ODIsMTA2LjQ1MiBMMTExLjk1NSwxMzAuOTczIEMxMTIuOTA1LDEzMS41MjIgMTEzLjY3NSwxMzEuMDgzIDExMy42NzUsMTI5Ljk5MyBMMTEzLjY3NSw3NS45OTIiIGlkPSJGaWxsLTI4IiBmaWxsPSIjRkFGQUZBIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTExMi43MjcsMTMxLjU2MSBDMTEyLjQzLDEzMS41NjEgMTEyLjEwNywxMzEuNDY2IDExMS43OCwxMzEuMjc2IEw2OS4zMDcsMTA2Ljc1NSBDNjguMjQ0LDEwNi4xNDIgNjcuNDEyLDEwNC43MDUgNjcuNDEyLDEwMy40ODUgTDY3LjQxMiw0OS40ODQgQzY3LjQxMiw0OS4yOSA2Ny41NjksNDkuMTM0IDY3Ljc2Miw0OS4xMzQgQzY3Ljk1Niw0OS4xMzQgNjguMTEzLDQ5LjI5IDY4LjExMyw0OS40ODQgTDY4LjExMywxMDMuNDg1IEM2OC4xMTMsMTA0LjQ0NSA2OC44MiwxMDUuNjY1IDY5LjY1NywxMDYuMTQ4IEwxMTIuMTMsMTMwLjY3IEMxMTIuNDc0LDEzMC44NjggMTEyLjc5MSwxMzAuOTEzIDExMywxMzAuNzkyIEMxMTMuMjA2LDEzMC42NzMgMTEzLjMyNSwxMzAuMzgxIDExMy4zMjUsMTI5Ljk5MyBMMTEzLjMyNSw3NS45OTIgQzExMy4zMjUsNzUuNzk4IDExMy40ODIsNzUuNjQxIDExMy42NzUsNzUuNjQxIEMxMTMuODY5LDc1LjY0MSAxMTQuMDI1LDc1Ljc5OCAxMTQuMDI1LDc1Ljk5MiBMMTE0LjAyNSwxMjkuOTkzIEMxMTQuMDI1LDEzMC42NDggMTEzLjc4NiwxMzEuMTQ3IDExMy4zNSwxMzEuMzk5IEMxMTMuMTYyLDEzMS41MDcgMTEyLjk1MiwxMzEuNTYxIDExMi43MjcsMTMxLjU2MSIgaWQ9IkZpbGwtMjkiIGZpbGw9IiM0NTVBNjQiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTEyLjg2LDQwLjUxMiBDMTEyLjg2LDQwLjUxMiAxMTIuODYsNDAuNTEyIDExMi44NTksNDAuNTEyIEMxMTAuNTQxLDQwLjUxMiAxMDguMzYsMzkuOTkgMTA2LjcxNywzOS4wNDEgQzEwNS4wMTIsMzguMDU3IDEwNC4wNzQsMzYuNzI2IDEwNC4wNzQsMzUuMjkyIEMxMDQuMDc0LDMzLjg0NyAxMDUuMDI2LDMyLjUwMSAxMDYuNzU0LDMxLjUwNCBMMTE4Ljc5NSwyNC41NTEgQzEyMC40NjMsMjMuNTg5IDEyMi42NjksMjMuMDU4IDEyNS4wMDcsMjMuMDU4IEMxMjcuMzI1LDIzLjA1OCAxMjkuNTA2LDIzLjU4MSAxMzEuMTUsMjQuNTMgQzEzMi44NTQsMjUuNTE0IDEzMy43OTMsMjYuODQ1IDEzMy43OTMsMjguMjc4IEMxMzMuNzkzLDI5LjcyNCAxMzIuODQxLDMxLjA2OSAxMzEuMTEzLDMyLjA2NyBMMTE5LjA3MSwzOS4wMTkgQzExNy40MDMsMzkuOTgyIDExNS4xOTcsNDAuNTEyIDExMi44Niw0MC41MTIgTDExMi44Niw0MC41MTIgWiBNMTI1LjAwNywyMy43NTkgQzEyMi43OSwyMy43NTkgMTIwLjcwOSwyNC4yNTYgMTE5LjE0NiwyNS4xNTggTDEwNy4xMDQsMzIuMTEgQzEwNS42MDIsMzIuOTc4IDEwNC43NzQsMzQuMTA4IDEwNC43NzQsMzUuMjkyIEMxMDQuNzc0LDM2LjQ2NSAxMDUuNTg5LDM3LjU4MSAxMDcuMDY3LDM4LjQzNCBDMTA4LjYwNSwzOS4zMjMgMTEwLjY2MywzOS44MTIgMTEyLjg1OSwzOS44MTIgTDExMi44NiwzOS44MTIgQzExNS4wNzYsMzkuODEyIDExNy4xNTgsMzkuMzE1IDExOC43MjEsMzguNDEzIEwxMzAuNzYyLDMxLjQ2IEMxMzIuMjY0LDMwLjU5MyAxMzMuMDkyLDI5LjQ2MyAxMzMuMDkyLDI4LjI3OCBDMTMzLjA5MiwyNy4xMDYgMTMyLjI3OCwyNS45OSAxMzAuOCwyNS4xMzYgQzEyOS4yNjEsMjQuMjQ4IDEyNy4yMDQsMjMuNzU5IDEyNS4wMDcsMjMuNzU5IEwxMjUuMDA3LDIzLjc1OSBaIiBpZD0iRmlsbC0zMCIgZmlsbD0iIzYwN0Q4QiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNjUuNjMsMTYuMjE5IEwxNTkuODk2LDE5LjUzIEMxNTYuNzI5LDIxLjM1OCAxNTEuNjEsMjEuMzY3IDE0OC40NjMsMTkuNTUgQzE0NS4zMTYsMTcuNzMzIDE0NS4zMzIsMTQuNzc4IDE0OC40OTksMTIuOTQ5IEwxNTQuMjMzLDkuNjM5IEwxNjUuNjMsMTYuMjE5IiBpZD0iRmlsbC0zMSIgZmlsbD0iI0ZBRkFGQSI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNTQuMjMzLDEwLjQ0OCBMMTY0LjIyOCwxNi4yMTkgTDE1OS41NDYsMTguOTIzIEMxNTguMTEyLDE5Ljc1IDE1Ni4xOTQsMjAuMjA2IDE1NC4xNDcsMjAuMjA2IEMxNTIuMTE4LDIwLjIwNiAxNTAuMjI0LDE5Ljc1NyAxNDguODE0LDE4Ljk0MyBDMTQ3LjUyNCwxOC4xOTkgMTQ2LjgxNCwxNy4yNDkgMTQ2LjgxNCwxNi4yNjkgQzE0Ni44MTQsMTUuMjc4IDE0Ny41MzcsMTQuMzE0IDE0OC44NSwxMy41NTYgTDE1NC4yMzMsMTAuNDQ4IE0xNTQuMjMzLDkuNjM5IEwxNDguNDk5LDEyLjk0OSBDMTQ1LjMzMiwxNC43NzggMTQ1LjMxNiwxNy43MzMgMTQ4LjQ2MywxOS41NSBDMTUwLjAzMSwyMC40NTUgMTUyLjA4NiwyMC45MDcgMTU0LjE0NywyMC45MDcgQzE1Ni4yMjQsMjAuOTA3IDE1OC4zMDYsMjAuNDQ3IDE1OS44OTYsMTkuNTMgTDE2NS42MywxNi4yMTkgTDE1NC4yMzMsOS42MzkiIGlkPSJGaWxsLTMyIiBmaWxsPSIjNjA3RDhCIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTE0NS40NDUsNzIuNjY3IEwxNDUuNDQ1LDcyLjY2NyBDMTQzLjY3Miw3Mi42NjcgMTQyLjIwNCw3MS44MTcgMTQxLjIwMiw3MC40MjIgQzE0MS4xMzUsNzAuMzMgMTQxLjE0NSw3MC4xNDcgMTQxLjIyNSw3MC4wNjYgQzE0MS4zMDUsNjkuOTg1IDE0MS40MzIsNjkuOTQ2IDE0MS41MjUsNzAuMDExIEMxNDIuMzA2LDcwLjU1OSAxNDMuMjMxLDcwLjgyMyAxNDQuMjc2LDcwLjgyMiBDMTQ1LjU5OCw3MC44MjIgMTQ3LjAzLDcwLjM3NiAxNDguNTMyLDY5LjUwOSBDMTUzLjg0Miw2Ni40NDMgMTU4LjE2Myw1OC45ODcgMTU4LjE2Myw1Mi44OTQgQzE1OC4xNjMsNTAuOTY3IDE1Ny43MjEsNDkuMzMyIDE1Ni44ODQsNDguMTY4IEMxNTYuODE4LDQ4LjA3NiAxNTYuODI4LDQ3Ljk0OCAxNTYuOTA4LDQ3Ljg2NyBDMTU2Ljk4OCw0Ny43ODYgMTU3LjExNCw0Ny43NzQgMTU3LjIwOCw0Ny44NCBDMTU4Ljg3OCw0OS4wMTIgMTU5Ljc5OCw1MS4yMiAxNTkuNzk4LDU0LjA1OSBDMTU5Ljc5OCw2MC4zMDEgMTU1LjM3Myw2OC4wNDYgMTQ5LjkzMyw3MS4xODYgQzE0OC4zNiw3Mi4wOTQgMTQ2Ljg1LDcyLjY2NyAxNDUuNDQ1LDcyLjY2NyBMMTQ1LjQ0NSw3Mi42NjcgWiBNMTQyLjQ3Niw3MSBDMTQzLjI5LDcxLjY1MSAxNDQuMjk2LDcyLjAwMiAxNDUuNDQ1LDcyLjAwMiBDMTQ2Ljc2Nyw3Mi4wMDIgMTQ4LjE5OCw3MS41NSAxNDkuNyw3MC42ODIgQzE1NS4wMSw2Ny42MTcgMTU5LjMzMSw2MC4xNTkgMTU5LjMzMSw1NC4wNjUgQzE1OS4zMzEsNTIuMDg1IDE1OC44NjgsNTAuNDM1IDE1OC4wMDYsNDkuMjcyIEMxNTguNDE3LDUwLjMwNyAxNTguNjMsNTEuNTMyIDE1OC42Myw1Mi44OTIgQzE1OC42Myw1OS4xMzQgMTU0LjIwNSw2Ni43NjcgMTQ4Ljc2NSw2OS45MDcgQzE0Ny4xOTIsNzAuODE2IDE0NS42ODEsNzEuMjgzIDE0NC4yNzYsNzEuMjgzIEMxNDMuNjM0LDcxLjI4MyAxNDMuMDMzLDcxLjE5MiAxNDIuNDc2LDcxIEwxNDIuNDc2LDcxIFoiIGlkPSJGaWxsLTMzIiBmaWxsPSIjNjA3RDhCIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTE0OC42NDgsNjkuNzA0IEMxNTQuMDMyLDY2LjU5NiAxNTguMzk2LDU5LjA2OCAxNTguMzk2LDUyLjg5MSBDMTU4LjM5Niw1MC44MzkgMTU3LjkxMyw0OS4xOTggMTU3LjA3NCw0OC4wMyBDMTU1LjI4OSw0Ni43NzggMTUyLjY5OSw0Ni44MzYgMTQ5LjgxNiw0OC41MDEgQzE0NC40MzMsNTEuNjA5IDE0MC4wNjgsNTkuMTM3IDE0MC4wNjgsNjUuMzE0IEMxNDAuMDY4LDY3LjM2NSAxNDAuNTUyLDY5LjAwNiAxNDEuMzkxLDcwLjE3NCBDMTQzLjE3Niw3MS40MjcgMTQ1Ljc2NSw3MS4zNjkgMTQ4LjY0OCw2OS43MDQiIGlkPSJGaWxsLTM0IiBmaWxsPSIjRkFGQUZBIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTE0NC4yNzYsNzEuMjc2IEwxNDQuMjc2LDcxLjI3NiBDMTQzLjEzMyw3MS4yNzYgMTQyLjExOCw3MC45NjkgMTQxLjI1Nyw3MC4zNjUgQzE0MS4yMzYsNzAuMzUxIDE0MS4yMTcsNzAuMzMyIDE0MS4yMDIsNzAuMzExIEMxNDAuMzA3LDY5LjA2NyAxMzkuODM1LDY3LjMzOSAxMzkuODM1LDY1LjMxNCBDMTM5LjgzNSw1OS4wNzMgMTQ0LjI2LDUxLjQzOSAxNDkuNyw0OC4yOTggQzE1MS4yNzMsNDcuMzkgMTUyLjc4NCw0Ni45MjkgMTU0LjE4OSw0Ni45MjkgQzE1NS4zMzIsNDYuOTI5IDE1Ni4zNDcsNDcuMjM2IDE1Ny4yMDgsNDcuODM5IEMxNTcuMjI5LDQ3Ljg1NCAxNTcuMjQ4LDQ3Ljg3MyAxNTcuMjYzLDQ3Ljg5NCBDMTU4LjE1Nyw0OS4xMzggMTU4LjYzLDUwLjg2NSAxNTguNjMsNTIuODkxIEMxNTguNjMsNTkuMTMyIDE1NC4yMDUsNjYuNzY2IDE0OC43NjUsNjkuOTA3IEMxNDcuMTkyLDcwLjgxNSAxNDUuNjgxLDcxLjI3NiAxNDQuMjc2LDcxLjI3NiBMMTQ0LjI3Niw3MS4yNzYgWiBNMTQxLjU1OCw3MC4xMDQgQzE0Mi4zMzEsNzAuNjM3IDE0My4yNDUsNzEuMDA1IDE0NC4yNzYsNzEuMDA1IEMxNDUuNTk4LDcxLjAwNSAxNDcuMDMsNzAuNDY3IDE0OC41MzIsNjkuNiBDMTUzLjg0Miw2Ni41MzQgMTU4LjE2Myw1OS4wMzMgMTU4LjE2Myw1Mi45MzkgQzE1OC4xNjMsNTEuMDMxIDE1Ny43MjksNDkuMzg1IDE1Ni45MDcsNDguMjIzIEMxNTYuMTMzLDQ3LjY5MSAxNTUuMjE5LDQ3LjQwOSAxNTQuMTg5LDQ3LjQwOSBDMTUyLjg2Nyw0Ny40MDkgMTUxLjQzNSw0Ny44NDIgMTQ5LjkzMyw0OC43MDkgQzE0NC42MjMsNTEuNzc1IDE0MC4zMDIsNTkuMjczIDE0MC4zMDIsNjUuMzY2IEMxNDAuMzAyLDY3LjI3NiAxNDAuNzM2LDY4Ljk0MiAxNDEuNTU4LDcwLjEwNCBMMTQxLjU1OCw3MC4xMDQgWiIgaWQ9IkZpbGwtMzUiIGZpbGw9IiM2MDdEOEIiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTUwLjcyLDY1LjM2MSBMMTUwLjM1Nyw2NS4wNjYgQzE1MS4xNDcsNjQuMDkyIDE1MS44NjksNjMuMDQgMTUyLjUwNSw2MS45MzggQzE1My4zMTMsNjAuNTM5IDE1My45NzgsNTkuMDY3IDE1NC40ODIsNTcuNTYzIEwxNTQuOTI1LDU3LjcxMiBDMTU0LjQxMiw1OS4yNDUgMTUzLjczMyw2MC43NDUgMTUyLjkxLDYyLjE3MiBDMTUyLjI2Miw2My4yOTUgMTUxLjUyNSw2NC4zNjggMTUwLjcyLDY1LjM2MSIgaWQ9IkZpbGwtMzYiIGZpbGw9IiM2MDdEOEIiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTE1LjkxNyw4NC41MTQgTDExNS41NTQsODQuMjIgQzExNi4zNDQsODMuMjQ1IDExNy4wNjYsODIuMTk0IDExNy43MDIsODEuMDkyIEMxMTguNTEsNzkuNjkyIDExOS4xNzUsNzguMjIgMTE5LjY3OCw3Ni43MTcgTDEyMC4xMjEsNzYuODY1IEMxMTkuNjA4LDc4LjM5OCAxMTguOTMsNzkuODk5IDExOC4xMDYsODEuMzI2IEMxMTcuNDU4LDgyLjQ0OCAxMTYuNzIyLDgzLjUyMSAxMTUuOTE3LDg0LjUxNCIgaWQ9IkZpbGwtMzciIGZpbGw9IiM2MDdEOEIiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTE0LDEzMC40NzYgTDExNCwxMzAuMDA4IEwxMTQsNzYuMDUyIEwxMTQsNzUuNTg0IEwxMTQsNzYuMDUyIEwxMTQsMTMwLjAwOCBMMTE0LDEzMC40NzYiIGlkPSJGaWxsLTM4IiBmaWxsPSIjNjA3RDhCIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8ZyBpZD0iSW1wb3J0ZWQtTGF5ZXJzLUNvcHkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDYyLjAwMDAwMCwgMC4wMDAwMDApIiBza2V0Y2g6dHlwZT0iTVNTaGFwZUdyb3VwIj4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTkuODIyLDM3LjQ3NCBDMTkuODM5LDM3LjMzOSAxOS43NDcsMzcuMTk0IDE5LjU1NSwzNy4wODIgQzE5LjIyOCwzNi44OTQgMTguNzI5LDM2Ljg3MiAxOC40NDYsMzcuMDM3IEwxMi40MzQsNDAuNTA4IEMxMi4zMDMsNDAuNTg0IDEyLjI0LDQwLjY4NiAxMi4yNDMsNDAuNzkzIEMxMi4yNDUsNDAuOTI1IDEyLjI0NSw0MS4yNTQgMTIuMjQ1LDQxLjM3MSBMMTIuMjQ1LDQxLjQxNCBMMTIuMjM4LDQxLjU0MiBDOC4xNDgsNDMuODg3IDUuNjQ3LDQ1LjMyMSA1LjY0Nyw0NS4zMjEgQzUuNjQ2LDQ1LjMyMSAzLjU3LDQ2LjM2NyAyLjg2LDUwLjUxMyBDMi44Niw1MC41MTMgMS45NDgsNTcuNDc0IDEuOTYyLDcwLjI1OCBDMS45NzcsODIuODI4IDIuNTY4LDg3LjMyOCAzLjEyOSw5MS42MDkgQzMuMzQ5LDkzLjI5MyA2LjEzLDkzLjczNCA2LjEzLDkzLjczNCBDNi40NjEsOTMuNzc0IDYuODI4LDkzLjcwNyA3LjIxLDkzLjQ4NiBMODIuNDgzLDQ5LjkzNSBDODQuMjkxLDQ4Ljg2NiA4NS4xNSw0Ni4yMTYgODUuNTM5LDQzLjY1MSBDODYuNzUyLDM1LjY2MSA4Ny4yMTQsMTAuNjczIDg1LjI2NCwzLjc3MyBDODUuMDY4LDMuMDggODQuNzU0LDIuNjkgODQuMzk2LDIuNDkxIEw4Mi4zMSwxLjcwMSBDODEuNTgzLDEuNzI5IDgwLjg5NCwyLjE2OCA4MC43NzYsMi4yMzYgQzgwLjYzNiwyLjMxNyA0MS44MDcsMjQuNTg1IDIwLjAzMiwzNy4wNzIgTDE5LjgyMiwzNy40NzQiIGlkPSJGaWxsLTEiIGZpbGw9IiNGRkZGRkYiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNODIuMzExLDEuNzAxIEw4NC4zOTYsMi40OTEgQzg0Ljc1NCwyLjY5IDg1LjA2OCwzLjA4IDg1LjI2NCwzLjc3MyBDODcuMjEzLDEwLjY3MyA4Ni43NTEsMzUuNjYgODUuNTM5LDQzLjY1MSBDODUuMTQ5LDQ2LjIxNiA4NC4yOSw0OC44NjYgODIuNDgzLDQ5LjkzNSBMNy4yMSw5My40ODYgQzYuODk3LDkzLjY2NyA2LjU5NSw5My43NDQgNi4zMTQsOTMuNzQ0IEw2LjEzMSw5My43MzMgQzYuMTMxLDkzLjczNCAzLjM0OSw5My4yOTMgMy4xMjgsOTEuNjA5IEMyLjU2OCw4Ny4zMjcgMS45NzcsODIuODI4IDEuOTYzLDcwLjI1OCBDMS45NDgsNTcuNDc0IDIuODYsNTAuNTEzIDIuODYsNTAuNTEzIEMzLjU3LDQ2LjM2NyA1LjY0Nyw0NS4zMjEgNS42NDcsNDUuMzIxIEM1LjY0Nyw0NS4zMjEgOC4xNDgsNDMuODg3IDEyLjIzOCw0MS41NDIgTDEyLjI0NSw0MS40MTQgTDEyLjI0NSw0MS4zNzEgQzEyLjI0NSw0MS4yNTQgMTIuMjQ1LDQwLjkyNSAxMi4yNDMsNDAuNzkzIEMxMi4yNCw0MC42ODYgMTIuMzAyLDQwLjU4MyAxMi40MzQsNDAuNTA4IEwxOC40NDYsMzcuMDM2IEMxOC41NzQsMzYuOTYyIDE4Ljc0NiwzNi45MjYgMTguOTI3LDM2LjkyNiBDMTkuMTQ1LDM2LjkyNiAxOS4zNzYsMzYuOTc5IDE5LjU1NCwzNy4wODIgQzE5Ljc0NywzNy4xOTQgMTkuODM5LDM3LjM0IDE5LjgyMiwzNy40NzQgTDIwLjAzMywzNy4wNzIgQzQxLjgwNiwyNC41ODUgODAuNjM2LDIuMzE4IDgwLjc3NywyLjIzNiBDODAuODk0LDIuMTY4IDgxLjU4MywxLjcyOSA4Mi4zMTEsMS43MDEgTTgyLjMxMSwwLjcwNCBMODIuMjcyLDAuNzA1IEM4MS42NTQsMC43MjggODAuOTg5LDAuOTQ5IDgwLjI5OCwxLjM2MSBMODAuMjc3LDEuMzczIEM4MC4xMjksMS40NTggNTkuNzY4LDEzLjEzNSAxOS43NTgsMzYuMDc5IEMxOS41LDM1Ljk4MSAxOS4yMTQsMzUuOTI5IDE4LjkyNywzNS45MjkgQzE4LjU2MiwzNS45MjkgMTguMjIzLDM2LjAxMyAxNy45NDcsMzYuMTczIEwxMS45MzUsMzkuNjQ0IEMxMS40OTMsMzkuODk5IDExLjIzNiw0MC4zMzQgMTEuMjQ2LDQwLjgxIEwxMS4yNDcsNDAuOTYgTDUuMTY3LDQ0LjQ0NyBDNC43OTQsNDQuNjQ2IDIuNjI1LDQ1Ljk3OCAxLjg3Nyw1MC4zNDUgTDEuODcxLDUwLjM4NCBDMS44NjIsNTAuNDU0IDAuOTUxLDU3LjU1NyAwLjk2NSw3MC4yNTkgQzAuOTc5LDgyLjg3OSAxLjU2OCw4Ny4zNzUgMi4xMzcsOTEuNzI0IEwyLjEzOSw5MS43MzkgQzIuNDQ3LDk0LjA5NCA1LjYxNCw5NC42NjIgNS45NzUsOTQuNzE5IEw2LjAwOSw5NC43MjMgQzYuMTEsOTQuNzM2IDYuMjEzLDk0Ljc0MiA2LjMxNCw5NC43NDIgQzYuNzksOTQuNzQyIDcuMjYsOTQuNjEgNy43MSw5NC4zNSBMODIuOTgzLDUwLjc5OCBDODQuNzk0LDQ5LjcyNyA4NS45ODIsNDcuMzc1IDg2LjUyNSw0My44MDEgQzg3LjcxMSwzNS45ODcgODguMjU5LDEwLjcwNSA4Ni4yMjQsMy41MDIgQzg1Ljk3MSwyLjYwOSA4NS41MiwxLjk3NSA4NC44ODEsMS42MiBMODQuNzQ5LDEuNTU4IEw4Mi42NjQsMC43NjkgQzgyLjU1MSwwLjcyNSA4Mi40MzEsMC43MDQgODIuMzExLDAuNzA0IiBpZD0iRmlsbC0yIiBmaWxsPSIjNDU1QTY0Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTY2LjI2NywxMS41NjUgTDY3Ljc2MiwxMS45OTkgTDExLjQyMyw0NC4zMjUiIGlkPSJGaWxsLTMiIGZpbGw9IiNGRkZGRkYiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTIuMjAyLDkwLjU0NSBDMTIuMDI5LDkwLjU0NSAxMS44NjIsOTAuNDU1IDExLjc2OSw5MC4yOTUgQzExLjYzMiw5MC4wNTcgMTEuNzEzLDg5Ljc1MiAxMS45NTIsODkuNjE0IEwzMC4zODksNzguOTY5IEMzMC42MjgsNzguODMxIDMwLjkzMyw3OC45MTMgMzEuMDcxLDc5LjE1MiBDMzEuMjA4LDc5LjM5IDMxLjEyNyw3OS42OTYgMzAuODg4LDc5LjgzMyBMMTIuNDUxLDkwLjQ3OCBMMTIuMjAyLDkwLjU0NSIgaWQ9IkZpbGwtNCIgZmlsbD0iIzYwN0Q4QiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMy43NjQsNDIuNjU0IEwxMy42NTYsNDIuNTkyIEwxMy43MDIsNDIuNDIxIEwxOC44MzcsMzkuNDU3IEwxOS4wMDcsMzkuNTAyIEwxOC45NjIsMzkuNjczIEwxMy44MjcsNDIuNjM3IEwxMy43NjQsNDIuNjU0IiBpZD0iRmlsbC01IiBmaWxsPSIjNjA3RDhCIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTguNTIsOTAuMzc1IEw4LjUyLDQ2LjQyMSBMOC41ODMsNDYuMzg1IEw3NS44NCw3LjU1NCBMNzUuODQsNTEuNTA4IEw3NS43NzgsNTEuNTQ0IEw4LjUyLDkwLjM3NSBMOC41Miw5MC4zNzUgWiBNOC43Nyw0Ni41NjQgTDguNzcsODkuOTQ0IEw3NS41OTEsNTEuMzY1IEw3NS41OTEsNy45ODUgTDguNzcsNDYuNTY0IEw4Ljc3LDQ2LjU2NCBaIiBpZD0iRmlsbC02IiBmaWxsPSIjNjA3RDhCIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTI0Ljk4Niw4My4xODIgQzI0Ljc1Niw4My4zMzEgMjQuMzc0LDgzLjU2NiAyNC4xMzcsODMuNzA1IEwxMi42MzIsOTAuNDA2IEMxMi4zOTUsOTAuNTQ1IDEyLjQyNiw5MC42NTggMTIuNyw5MC42NTggTDEzLjI2NSw5MC42NTggQzEzLjU0LDkwLjY1OCAxMy45NTgsOTAuNTQ1IDE0LjE5NSw5MC40MDYgTDI1LjcsODMuNzA1IEMyNS45MzcsODMuNTY2IDI2LjEyOCw4My40NTIgMjYuMTI1LDgzLjQ0OSBDMjYuMTIyLDgzLjQ0NyAyNi4xMTksODMuMjIgMjYuMTE5LDgyLjk0NiBDMjYuMTE5LDgyLjY3MiAyNS45MzEsODIuNTY5IDI1LjcwMSw4Mi43MTkgTDI0Ljk4Niw4My4xODIiIGlkPSJGaWxsLTciIGZpbGw9IiM2MDdEOEIiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTMuMjY2LDkwLjc4MiBMMTIuNyw5MC43ODIgQzEyLjUsOTAuNzgyIDEyLjM4NCw5MC43MjYgMTIuMzU0LDkwLjYxNiBDMTIuMzI0LDkwLjUwNiAxMi4zOTcsOTAuMzk5IDEyLjU2OSw5MC4yOTkgTDI0LjA3NCw4My41OTcgQzI0LjMxLDgzLjQ1OSAyNC42ODksODMuMjI2IDI0LjkxOCw4My4wNzggTDI1LjYzMyw4Mi42MTQgQzI1LjcyMyw4Mi41NTUgMjUuODEzLDgyLjUyNSAyNS44OTksODIuNTI1IEMyNi4wNzEsODIuNTI1IDI2LjI0NCw4Mi42NTUgMjYuMjQ0LDgyLjk0NiBDMjYuMjQ0LDgzLjE2IDI2LjI0NSw4My4zMDkgMjYuMjQ3LDgzLjM4MyBMMjYuMjUzLDgzLjM4NyBMMjYuMjQ5LDgzLjQ1NiBDMjYuMjQ2LDgzLjUzMSAyNi4yNDYsODMuNTMxIDI1Ljc2Myw4My44MTIgTDE0LjI1OCw5MC41MTQgQzE0LDkwLjY2NSAxMy41NjQsOTAuNzgyIDEzLjI2Niw5MC43ODIgTDEzLjI2Niw5MC43ODIgWiBNMTIuNjY2LDkwLjUzMiBMMTIuNyw5MC41MzMgTDEzLjI2Niw5MC41MzMgQzEzLjUxOCw5MC41MzMgMTMuOTE1LDkwLjQyNSAxNC4xMzIsOTAuMjk5IEwyNS42MzcsODMuNTk3IEMyNS44MDUsODMuNDk5IDI1LjkzMSw4My40MjQgMjUuOTk4LDgzLjM4MyBDMjUuOTk0LDgzLjI5OSAyNS45OTQsODMuMTY1IDI1Ljk5NCw4Mi45NDYgTDI1Ljg5OSw4Mi43NzUgTDI1Ljc2OCw4Mi44MjQgTDI1LjA1NCw4My4yODcgQzI0LjgyMiw4My40MzcgMjQuNDM4LDgzLjY3MyAyNC4yLDgzLjgxMiBMMTIuNjk1LDkwLjUxNCBMMTIuNjY2LDkwLjUzMiBMMTIuNjY2LDkwLjUzMiBaIiBpZD0iRmlsbC04IiBmaWxsPSIjNjA3RDhCIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEzLjI2Niw4OS44NzEgTDEyLjcsODkuODcxIEMxMi41LDg5Ljg3MSAxMi4zODQsODkuODE1IDEyLjM1NCw4OS43MDUgQzEyLjMyNCw4OS41OTUgMTIuMzk3LDg5LjQ4OCAxMi41NjksODkuMzg4IEwyNC4wNzQsODIuNjg2IEMyNC4zMzIsODIuNTM1IDI0Ljc2OCw4Mi40MTggMjUuMDY3LDgyLjQxOCBMMjUuNjMyLDgyLjQxOCBDMjUuODMyLDgyLjQxOCAyNS45NDgsODIuNDc0IDI1Ljk3OCw4Mi41ODQgQzI2LjAwOCw4Mi42OTQgMjUuOTM1LDgyLjgwMSAyNS43NjMsODIuOTAxIEwxNC4yNTgsODkuNjAzIEMxNCw4OS43NTQgMTMuNTY0LDg5Ljg3MSAxMy4yNjYsODkuODcxIEwxMy4yNjYsODkuODcxIFogTTEyLjY2Niw4OS42MjEgTDEyLjcsODkuNjIyIEwxMy4yNjYsODkuNjIyIEMxMy41MTgsODkuNjIyIDEzLjkxNSw4OS41MTUgMTQuMTMyLDg5LjM4OCBMMjUuNjM3LDgyLjY4NiBMMjUuNjY3LDgyLjY2OCBMMjUuNjMyLDgyLjY2NyBMMjUuMDY3LDgyLjY2NyBDMjQuODE1LDgyLjY2NyAyNC40MTgsODIuNzc1IDI0LjIsODIuOTAxIEwxMi42OTUsODkuNjAzIEwxMi42NjYsODkuNjIxIEwxMi42NjYsODkuNjIxIFoiIGlkPSJGaWxsLTkiIGZpbGw9IiM2MDdEOEIiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTIuMzcsOTAuODAxIEwxMi4zNyw4OS41NTQgTDEyLjM3LDkwLjgwMSIgaWQ9IkZpbGwtMTAiIGZpbGw9IiM2MDdEOEIiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNi4xMyw5My45MDEgQzUuMzc5LDkzLjgwOCA0LjgxNiw5My4xNjQgNC42OTEsOTIuNTI1IEMzLjg2LDg4LjI4NyAzLjU0LDgzLjc0MyAzLjUyNiw3MS4xNzMgQzMuNTExLDU4LjM4OSA0LjQyMyw1MS40MjggNC40MjMsNTEuNDI4IEM1LjEzNCw0Ny4yODIgNy4yMSw0Ni4yMzYgNy4yMSw0Ni4yMzYgQzcuMjEsNDYuMjM2IDgxLjY2NywzLjI1IDgyLjA2OSwzLjAxNyBDODIuMjkyLDIuODg4IDg0LjU1NiwxLjQzMyA4NS4yNjQsMy45NCBDODcuMjE0LDEwLjg0IDg2Ljc1MiwzNS44MjcgODUuNTM5LDQzLjgxOCBDODUuMTUsNDYuMzgzIDg0LjI5MSw0OS4wMzMgODIuNDgzLDUwLjEwMSBMNy4yMSw5My42NTMgQzYuODI4LDkzLjg3NCA2LjQ2MSw5My45NDEgNi4xMyw5My45MDEgQzYuMTMsOTMuOTAxIDMuMzQ5LDkzLjQ2IDMuMTI5LDkxLjc3NiBDMi41NjgsODcuNDk1IDEuOTc3LDgyLjk5NSAxLjk2Miw3MC40MjUgQzEuOTQ4LDU3LjY0MSAyLjg2LDUwLjY4IDIuODYsNTAuNjggQzMuNTcsNDYuNTM0IDUuNjQ3LDQ1LjQ4OSA1LjY0Nyw0NS40ODkgQzUuNjQ2LDQ1LjQ4OSA4LjA2NSw0NC4wOTIgMTIuMjQ1LDQxLjY3OSBMMTMuMTE2LDQxLjU2IEwxOS43MTUsMzcuNzMgTDE5Ljc2MSwzNy4yNjkgTDYuMTMsOTMuOTAxIiBpZD0iRmlsbC0xMSIgZmlsbD0iI0ZBRkFGQSI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik02LjMxNyw5NC4xNjEgTDYuMTAyLDk0LjE0OCBMNi4xMDEsOTQuMTQ4IEw1Ljg1Nyw5NC4xMDEgQzUuMTM4LDkzLjk0NSAzLjA4NSw5My4zNjUgMi44ODEsOTEuODA5IEMyLjMxMyw4Ny40NjkgMS43MjcsODIuOTk2IDEuNzEzLDcwLjQyNSBDMS42OTksNTcuNzcxIDIuNjA0LDUwLjcxOCAyLjYxMyw1MC42NDggQzMuMzM4LDQ2LjQxNyA1LjQ0NSw0NS4zMSA1LjUzNSw0NS4yNjYgTDEyLjE2Myw0MS40MzkgTDEzLjAzMyw0MS4zMiBMMTkuNDc5LDM3LjU3OCBMMTkuNTEzLDM3LjI0NCBDMTkuNTI2LDM3LjEwNyAxOS42NDcsMzcuMDA4IDE5Ljc4NiwzNy4wMjEgQzE5LjkyMiwzNy4wMzQgMjAuMDIzLDM3LjE1NiAyMC4wMDksMzcuMjkzIEwxOS45NSwzNy44ODIgTDEzLjE5OCw0MS44MDEgTDEyLjMyOCw0MS45MTkgTDUuNzcyLDQ1LjcwNCBDNS43NDEsNDUuNzIgMy43ODIsNDYuNzcyIDMuMTA2LDUwLjcyMiBDMy4wOTksNTAuNzgyIDIuMTk4LDU3LjgwOCAyLjIxMiw3MC40MjQgQzIuMjI2LDgyLjk2MyAyLjgwOSw4Ny40MiAzLjM3Myw5MS43MjkgQzMuNDY0LDkyLjQyIDQuMDYyLDkyLjg4MyA0LjY4Miw5My4xODEgQzQuNTY2LDkyLjk4NCA0LjQ4Niw5Mi43NzYgNC40NDYsOTIuNTcyIEMzLjY2NSw4OC41ODggMy4yOTEsODQuMzcgMy4yNzYsNzEuMTczIEMzLjI2Miw1OC41MiA0LjE2Nyw1MS40NjYgNC4xNzYsNTEuMzk2IEM0LjkwMSw0Ny4xNjUgNy4wMDgsNDYuMDU5IDcuMDk4LDQ2LjAxNCBDNy4wOTQsNDYuMDE1IDgxLjU0MiwzLjAzNCA4MS45NDQsMi44MDIgTDgxLjk3MiwyLjc4NSBDODIuODc2LDIuMjQ3IDgzLjY5MiwyLjA5NyA4NC4zMzIsMi4zNTIgQzg0Ljg4NywyLjU3MyA4NS4yODEsMy4wODUgODUuNTA0LDMuODcyIEM4Ny41MTgsMTEgODYuOTY0LDM2LjA5MSA4NS43ODUsNDMuODU1IEM4NS4yNzgsNDcuMTk2IDg0LjIxLDQ5LjM3IDgyLjYxLDUwLjMxNyBMNy4zMzUsOTMuODY5IEM2Ljk5OSw5NC4wNjMgNi42NTgsOTQuMTYxIDYuMzE3LDk0LjE2MSBMNi4zMTcsOTQuMTYxIFogTTYuMTcsOTMuNjU0IEM2LjQ2Myw5My42OSA2Ljc3NCw5My42MTcgNy4wODUsOTMuNDM3IEw4Mi4zNTgsNDkuODg2IEM4NC4xODEsNDguODA4IDg0Ljk2LDQ1Ljk3MSA4NS4yOTIsNDMuNzggQzg2LjQ2NiwzNi4wNDkgODcuMDIzLDExLjA4NSA4NS4wMjQsNC4wMDggQzg0Ljg0NiwzLjM3NyA4NC41NTEsMi45NzYgODQuMTQ4LDIuODE2IEM4My42NjQsMi42MjMgODIuOTgyLDIuNzY0IDgyLjIyNywzLjIxMyBMODIuMTkzLDMuMjM0IEM4MS43OTEsMy40NjYgNy4zMzUsNDYuNDUyIDcuMzM1LDQ2LjQ1MiBDNy4zMDQsNDYuNDY5IDUuMzQ2LDQ3LjUyMSA0LjY2OSw1MS40NzEgQzQuNjYyLDUxLjUzIDMuNzYxLDU4LjU1NiAzLjc3NSw3MS4xNzMgQzMuNzksODQuMzI4IDQuMTYxLDg4LjUyNCA0LjkzNiw5Mi40NzYgQzUuMDI2LDkyLjkzNyA1LjQxMiw5My40NTkgNS45NzMsOTMuNjE1IEM2LjA4Nyw5My42NCA2LjE1OCw5My42NTIgNi4xNjksOTMuNjU0IEw2LjE3LDkzLjY1NCBMNi4xNyw5My42NTQgWiIgaWQ9IkZpbGwtMTIiIGZpbGw9IiM0NTVBNjQiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNy4zMTcsNjguOTgyIEM3LjgwNiw2OC43MDEgOC4yMDIsNjguOTI2IDguMjAyLDY5LjQ4NyBDOC4yMDIsNzAuMDQ3IDcuODA2LDcwLjczIDcuMzE3LDcxLjAxMiBDNi44MjksNzEuMjk0IDYuNDMzLDcxLjA2OSA2LjQzMyw3MC41MDggQzYuNDMzLDY5Ljk0OCA2LjgyOSw2OS4yNjUgNy4zMTcsNjguOTgyIiBpZD0iRmlsbC0xMyIgZmlsbD0iI0ZGRkZGRiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik02LjkyLDcxLjEzMyBDNi42MzEsNzEuMTMzIDYuNDMzLDcwLjkwNSA2LjQzMyw3MC41MDggQzYuNDMzLDY5Ljk0OCA2LjgyOSw2OS4yNjUgNy4zMTcsNjguOTgyIEM3LjQ2LDY4LjkgNy41OTUsNjguODYxIDcuNzE0LDY4Ljg2MSBDOC4wMDMsNjguODYxIDguMjAyLDY5LjA5IDguMjAyLDY5LjQ4NyBDOC4yMDIsNzAuMDQ3IDcuODA2LDcwLjczIDcuMzE3LDcxLjAxMiBDNy4xNzQsNzEuMDk0IDcuMDM5LDcxLjEzMyA2LjkyLDcxLjEzMyBNNy43MTQsNjguNjc0IEM3LjU1Nyw2OC42NzQgNy4zOTIsNjguNzIzIDcuMjI0LDY4LjgyMSBDNi42NzYsNjkuMTM4IDYuMjQ2LDY5Ljg3OSA2LjI0Niw3MC41MDggQzYuMjQ2LDcwLjk5NCA2LjUxNyw3MS4zMiA2LjkyLDcxLjMyIEM3LjA3OCw3MS4zMiA3LjI0Myw3MS4yNzEgNy40MTEsNzEuMTc0IEM3Ljk1OSw3MC44NTcgOC4zODksNzAuMTE3IDguMzg5LDY5LjQ4NyBDOC4zODksNjkuMDAxIDguMTE3LDY4LjY3NCA3LjcxNCw2OC42NzQiIGlkPSJGaWxsLTE0IiBmaWxsPSIjODA5N0EyIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTYuOTIsNzAuOTQ3IEM2LjY0OSw3MC45NDcgNi42MjEsNzAuNjQgNi42MjEsNzAuNTA4IEM2LjYyMSw3MC4wMTcgNi45ODIsNjkuMzkyIDcuNDExLDY5LjE0NSBDNy41MjEsNjkuMDgyIDcuNjI1LDY5LjA0OSA3LjcxNCw2OS4wNDkgQzcuOTg2LDY5LjA0OSA4LjAxNSw2OS4zNTUgOC4wMTUsNjkuNDg3IEM4LjAxNSw2OS45NzggNy42NTIsNzAuNjAzIDcuMjI0LDcwLjg1MSBDNy4xMTUsNzAuOTE0IDcuMDEsNzAuOTQ3IDYuOTIsNzAuOTQ3IE03LjcxNCw2OC44NjEgQzcuNTk1LDY4Ljg2MSA3LjQ2LDY4LjkgNy4zMTcsNjguOTgyIEM2LjgyOSw2OS4yNjUgNi40MzMsNjkuOTQ4IDYuNDMzLDcwLjUwOCBDNi40MzMsNzAuOTA1IDYuNjMxLDcxLjEzMyA2LjkyLDcxLjEzMyBDNy4wMzksNzEuMTMzIDcuMTc0LDcxLjA5NCA3LjMxNyw3MS4wMTIgQzcuODA2LDcwLjczIDguMjAyLDcwLjA0NyA4LjIwMiw2OS40ODcgQzguMjAyLDY5LjA5IDguMDAzLDY4Ljg2MSA3LjcxNCw2OC44NjEiIGlkPSJGaWxsLTE1IiBmaWxsPSIjODA5N0EyIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTcuNDQ0LDg1LjM1IEM3LjcwOCw4NS4xOTggNy45MjEsODUuMzE5IDcuOTIxLDg1LjYyMiBDNy45MjEsODUuOTI1IDcuNzA4LDg2LjI5MiA3LjQ0NCw4Ni40NDQgQzcuMTgxLDg2LjU5NyA2Ljk2Nyw4Ni40NzUgNi45NjcsODYuMTczIEM2Ljk2Nyw4NS44NzEgNy4xODEsODUuNTAyIDcuNDQ0LDg1LjM1IiBpZD0iRmlsbC0xNiIgZmlsbD0iI0ZGRkZGRiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik03LjIzLDg2LjUxIEM3LjA3NCw4Ni41MSA2Ljk2Nyw4Ni4zODcgNi45NjcsODYuMTczIEM2Ljk2Nyw4NS44NzEgNy4xODEsODUuNTAyIDcuNDQ0LDg1LjM1IEM3LjUyMSw4NS4zMDUgNy41OTQsODUuMjg0IDcuNjU4LDg1LjI4NCBDNy44MTQsODUuMjg0IDcuOTIxLDg1LjQwOCA3LjkyMSw4NS42MjIgQzcuOTIxLDg1LjkyNSA3LjcwOCw4Ni4yOTIgNy40NDQsODYuNDQ0IEM3LjM2Nyw4Ni40ODkgNy4yOTQsODYuNTEgNy4yMyw4Ni41MSBNNy42NTgsODUuMDk4IEM3LjU1OCw4NS4wOTggNy40NTUsODUuMTI3IDcuMzUxLDg1LjE4OCBDNy4wMzEsODUuMzczIDYuNzgxLDg1LjgwNiA2Ljc4MSw4Ni4xNzMgQzYuNzgxLDg2LjQ4MiA2Ljk2Niw4Ni42OTcgNy4yMyw4Ni42OTcgQzcuMzMsODYuNjk3IDcuNDMzLDg2LjY2NiA3LjUzOCw4Ni42MDcgQzcuODU4LDg2LjQyMiA4LjEwOCw4NS45ODkgOC4xMDgsODUuNjIyIEM4LjEwOCw4NS4zMTMgNy45MjMsODUuMDk4IDcuNjU4LDg1LjA5OCIgaWQ9IkZpbGwtMTciIGZpbGw9IiM4MDk3QTIiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNy4yMyw4Ni4zMjIgTDcuMTU0LDg2LjE3MyBDNy4xNTQsODUuOTM4IDcuMzMzLDg1LjYyOSA3LjUzOCw4NS41MTIgTDcuNjU4LDg1LjQ3MSBMNy43MzQsODUuNjIyIEM3LjczNCw4NS44NTYgNy41NTUsODYuMTY0IDcuMzUxLDg2LjI4MiBMNy4yMyw4Ni4zMjIgTTcuNjU4LDg1LjI4NCBDNy41OTQsODUuMjg0IDcuNTIxLDg1LjMwNSA3LjQ0NCw4NS4zNSBDNy4xODEsODUuNTAyIDYuOTY3LDg1Ljg3MSA2Ljk2Nyw4Ni4xNzMgQzYuOTY3LDg2LjM4NyA3LjA3NCw4Ni41MSA3LjIzLDg2LjUxIEM3LjI5NCw4Ni41MSA3LjM2Nyw4Ni40ODkgNy40NDQsODYuNDQ0IEM3LjcwOCw4Ni4yOTIgNy45MjEsODUuOTI1IDcuOTIxLDg1LjYyMiBDNy45MjEsODUuNDA4IDcuODE0LDg1LjI4NCA3LjY1OCw4NS4yODQiIGlkPSJGaWxsLTE4IiBmaWxsPSIjODA5N0EyIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTc3LjI3OCw3Ljc2OSBMNzcuMjc4LDUxLjQzNiBMMTAuMjA4LDkwLjE2IEwxMC4yMDgsNDYuNDkzIEw3Ny4yNzgsNy43NjkiIGlkPSJGaWxsLTE5IiBmaWxsPSIjNDU1QTY0Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEwLjA4Myw5MC4zNzUgTDEwLjA4Myw0Ni40MjEgTDEwLjE0Niw0Ni4zODUgTDc3LjQwMyw3LjU1NCBMNzcuNDAzLDUxLjUwOCBMNzcuMzQxLDUxLjU0NCBMMTAuMDgzLDkwLjM3NSBMMTAuMDgzLDkwLjM3NSBaIE0xMC4zMzMsNDYuNTY0IEwxMC4zMzMsODkuOTQ0IEw3Ny4xNTQsNTEuMzY1IEw3Ny4xNTQsNy45ODUgTDEwLjMzMyw0Ni41NjQgTDEwLjMzMyw0Ni41NjQgWiIgaWQ9IkZpbGwtMjAiIGZpbGw9IiM2MDdEOEIiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMjUuNzM3LDg4LjY0NyBMMTE4LjA5OCw5MS45ODEgTDExOC4wOTgsODQgTDEwNi42MzksODguNzEzIEwxMDYuNjM5LDk2Ljk4MiBMOTksMTAwLjMxNSBMMTEyLjM2OSwxMDMuOTYxIEwxMjUuNzM3LDg4LjY0NyIgaWQ9IkltcG9ydGVkLUxheWVycy1Db3B5LTIiIGZpbGw9IiM0NTVBNjQiIHNrZXRjaDp0eXBlPSJNU1NoYXBlR3JvdXAiPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+';\nfunction RotateInstructions() {\n this.loadIcon_();\n var overlay = document.createElement('div');\n var s = overlay.style;\n s.position = 'fixed';\n s.top = 0;\n s.right = 0;\n s.bottom = 0;\n s.left = 0;\n s.backgroundColor = 'gray';\n s.fontFamily = 'sans-serif';\n s.zIndex = 1000000;\n var img = document.createElement('img');\n img.src = this.icon;\n var s = img.style;\n s.marginLeft = '25%';\n s.marginTop = '25%';\n s.width = '50%';\n overlay.appendChild(img);\n var text = document.createElement('div');\n var s = text.style;\n s.textAlign = 'center';\n s.fontSize = '16px';\n s.lineHeight = '24px';\n s.margin = '24px 25%';\n s.width = '50%';\n text.innerHTML = 'Place your phone into your Cardboard viewer.';\n overlay.appendChild(text);\n var snackbar = document.createElement('div');\n var s = snackbar.style;\n s.backgroundColor = '#CFD8DC';\n s.position = 'fixed';\n s.bottom = 0;\n s.width = '100%';\n s.height = '48px';\n s.padding = '14px 24px';\n s.boxSizing = 'border-box';\n s.color = '#656A6B';\n overlay.appendChild(snackbar);\n var snackbarText = document.createElement('div');\n snackbarText.style.float = 'left';\n snackbarText.innerHTML = 'No Cardboard viewer?';\n var snackbarButton = document.createElement('a');\n snackbarButton.href = 'https://www.google.com/get/cardboard/get-cardboard/';\n snackbarButton.innerHTML = 'get one';\n snackbarButton.target = '_blank';\n var s = snackbarButton.style;\n s.float = 'right';\n s.fontWeight = 600;\n s.textTransform = 'uppercase';\n s.borderLeft = '1px solid gray';\n s.paddingLeft = '24px';\n s.textDecoration = 'none';\n s.color = '#656A6B';\n snackbar.appendChild(snackbarText);\n snackbar.appendChild(snackbarButton);\n this.overlay = overlay;\n this.text = text;\n this.hide();\n}\nRotateInstructions.prototype.show = function (parent) {\n if (!parent && !this.overlay.parentElement) {\n document.body.appendChild(this.overlay);\n } else if (parent) {\n if (this.overlay.parentElement && this.overlay.parentElement != parent) this.overlay.parentElement.removeChild(this.overlay);\n parent.appendChild(this.overlay);\n }\n this.overlay.style.display = 'block';\n var img = this.overlay.querySelector('img');\n var s = img.style;\n if (isLandscapeMode()) {\n s.width = '20%';\n s.marginLeft = '40%';\n s.marginTop = '3%';\n } else {\n s.width = '50%';\n s.marginLeft = '25%';\n s.marginTop = '25%';\n }\n};\nRotateInstructions.prototype.hide = function () {\n this.overlay.style.display = 'none';\n};\nRotateInstructions.prototype.showTemporarily = function (ms, parent) {\n this.show(parent);\n this.timer = setTimeout(this.hide.bind(this), ms);\n};\nRotateInstructions.prototype.disableShowTemporarily = function () {\n clearTimeout(this.timer);\n};\nRotateInstructions.prototype.update = function () {\n this.disableShowTemporarily();\n if (!isLandscapeMode() && isMobile()) {\n this.show();\n } else {\n this.hide();\n }\n};\nRotateInstructions.prototype.loadIcon_ = function () {\n this.icon = base64('image/svg+xml', rotateInstructionsAsset);\n};\nvar DEFAULT_VIEWER = 'CardboardV1';\nvar VIEWER_KEY = 'WEBVR_CARDBOARD_VIEWER';\nvar CLASS_NAME = 'webvr-polyfill-viewer-selector';\nfunction ViewerSelector() {\n try {\n this.selectedKey = localStorage.getItem(VIEWER_KEY);\n } catch (error) {\n console.error('Failed to load viewer profile: %s', error);\n }\n if (!this.selectedKey) {\n this.selectedKey = DEFAULT_VIEWER;\n }\n this.dialog = this.createDialog_(DeviceInfo.Viewers);\n this.root = null;\n this.onChangeCallbacks_ = [];\n}\nViewerSelector.prototype.show = function (root) {\n this.root = root;\n root.appendChild(this.dialog);\n var selected = this.dialog.querySelector('#' + this.selectedKey);\n selected.checked = true;\n this.dialog.style.display = 'block';\n};\nViewerSelector.prototype.hide = function () {\n if (this.root && this.root.contains(this.dialog)) {\n this.root.removeChild(this.dialog);\n }\n this.dialog.style.display = 'none';\n};\nViewerSelector.prototype.getCurrentViewer = function () {\n return DeviceInfo.Viewers[this.selectedKey];\n};\nViewerSelector.prototype.getSelectedKey_ = function () {\n var input = this.dialog.querySelector('input[name=field]:checked');\n if (input) {\n return input.id;\n }\n return null;\n};\nViewerSelector.prototype.onChange = function (cb) {\n this.onChangeCallbacks_.push(cb);\n};\nViewerSelector.prototype.fireOnChange_ = function (viewer) {\n for (var i = 0; i < this.onChangeCallbacks_.length; i++) {\n this.onChangeCallbacks_[i](viewer);\n }\n};\nViewerSelector.prototype.onSave_ = function () {\n this.selectedKey = this.getSelectedKey_();\n if (!this.selectedKey || !DeviceInfo.Viewers[this.selectedKey]) {\n console.error('ViewerSelector.onSave_: this should never happen!');\n return;\n }\n this.fireOnChange_(DeviceInfo.Viewers[this.selectedKey]);\n try {\n localStorage.setItem(VIEWER_KEY, this.selectedKey);\n } catch (error) {\n console.error('Failed to save viewer profile: %s', error);\n }\n this.hide();\n};\nViewerSelector.prototype.createDialog_ = function (options) {\n var container = document.createElement('div');\n container.classList.add(CLASS_NAME);\n container.style.display = 'none';\n var overlay = document.createElement('div');\n var s = overlay.style;\n s.position = 'fixed';\n s.left = 0;\n s.top = 0;\n s.width = '100%';\n s.height = '100%';\n s.background = 'rgba(0, 0, 0, 0.3)';\n overlay.addEventListener('click', this.hide.bind(this));\n var width = 280;\n var dialog = document.createElement('div');\n var s = dialog.style;\n s.boxSizing = 'border-box';\n s.position = 'fixed';\n s.top = '24px';\n s.left = '50%';\n s.marginLeft = -width / 2 + 'px';\n s.width = width + 'px';\n s.padding = '24px';\n s.overflow = 'hidden';\n s.background = '#fafafa';\n s.fontFamily = \"'Roboto', sans-serif\";\n s.boxShadow = '0px 5px 20px #666';\n dialog.appendChild(this.createH1_('Select your viewer'));\n for (var id in options) {\n dialog.appendChild(this.createChoice_(id, options[id].label));\n }\n dialog.appendChild(this.createButton_('Save', this.onSave_.bind(this)));\n container.appendChild(overlay);\n container.appendChild(dialog);\n return container;\n};\nViewerSelector.prototype.createH1_ = function (name) {\n var h1 = document.createElement('h1');\n var s = h1.style;\n s.color = 'black';\n s.fontSize = '20px';\n s.fontWeight = 'bold';\n s.marginTop = 0;\n s.marginBottom = '24px';\n h1.innerHTML = name;\n return h1;\n};\nViewerSelector.prototype.createChoice_ = function (id, name) {\n var div = document.createElement('div');\n div.style.marginTop = '8px';\n div.style.color = 'black';\n var input = document.createElement('input');\n input.style.fontSize = '30px';\n input.setAttribute('id', id);\n input.setAttribute('type', 'radio');\n input.setAttribute('value', id);\n input.setAttribute('name', 'field');\n var label = document.createElement('label');\n label.style.marginLeft = '4px';\n label.setAttribute('for', id);\n label.innerHTML = name;\n div.appendChild(input);\n div.appendChild(label);\n return div;\n};\nViewerSelector.prototype.createButton_ = function (label, onclick) {\n var button = document.createElement('button');\n button.innerHTML = label;\n var s = button.style;\n s.float = 'right';\n s.textTransform = 'uppercase';\n s.color = '#1094f7';\n s.fontSize = '14px';\n s.letterSpacing = 0;\n s.border = 0;\n s.background = 'none';\n s.marginTop = '16px';\n button.addEventListener('click', onclick);\n return button;\n};\nvar commonjsGlobal$$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {};\nfunction unwrapExports$$1 (x) {\n\treturn x && x.__esModule ? x['default'] : x;\n}\nfunction createCommonjsModule$$1(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\nvar NoSleep = createCommonjsModule$$1(function (module, exports) {\n(function webpackUniversalModuleDefinition(root, factory) {\n\tmodule.exports = factory();\n})(commonjsGlobal$$1, function() {\nreturn (function(modules) {\n \tvar installedModules = {};\n \tfunction __webpack_require__(moduleId) {\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n \t\tmodule.l = true;\n \t\treturn module.exports;\n \t}\n \t__webpack_require__.m = modules;\n \t__webpack_require__.c = installedModules;\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n \t__webpack_require__.p = \"\";\n \treturn __webpack_require__(__webpack_require__.s = 0);\n })\n ([\n (function(module, exports, __webpack_require__) {\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nvar mediaFile = __webpack_require__(1);\nvar oldIOS = typeof navigator !== 'undefined' && parseFloat(('' + (/CPU.*OS ([0-9_]{3,4})[0-9_]{0,1}|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent) || [0, ''])[1]).replace('undefined', '3_2').replace('_', '.').replace('_', '')) < 10 && !window.MSStream;\nvar NoSleep = function () {\n function NoSleep() {\n _classCallCheck(this, NoSleep);\n if (oldIOS) {\n this.noSleepTimer = null;\n } else {\n this.noSleepVideo = document.createElement('video');\n this.noSleepVideo.setAttribute('playsinline', '');\n this.noSleepVideo.setAttribute('src', mediaFile);\n this.noSleepVideo.addEventListener('timeupdate', function (e) {\n if (this.noSleepVideo.currentTime > 0.5) {\n this.noSleepVideo.currentTime = Math.random();\n }\n }.bind(this));\n }\n }\n _createClass(NoSleep, [{\n key: 'enable',\n value: function enable() {\n if (oldIOS) {\n this.disable();\n this.noSleepTimer = window.setInterval(function () {\n window.location.href = '/';\n window.setTimeout(window.stop, 0);\n }, 15000);\n } else {\n this.noSleepVideo.play();\n }\n }\n }, {\n key: 'disable',\n value: function disable() {\n if (oldIOS) {\n if (this.noSleepTimer) {\n window.clearInterval(this.noSleepTimer);\n this.noSleepTimer = null;\n }\n } else {\n this.noSleepVideo.pause();\n }\n }\n }]);\n return NoSleep;\n}();\nmodule.exports = NoSleep;\n }),\n (function(module, exports, __webpack_require__) {\nmodule.exports = 'data:video/mp4;base64,AAAAIGZ0eXBtcDQyAAACAGlzb21pc28yYXZjMW1wNDEAAAAIZnJlZQAACKBtZGF0AAAC8wYF///v3EXpvebZSLeWLNgg2SPu73gyNjQgLSBjb3JlIDE0MiByMjQ3OSBkZDc5YTYxIC0gSC4yNjQvTVBFRy00IEFWQyBjb2RlYyAtIENvcHlsZWZ0IDIwMDMtMjAxNCAtIGh0dHA6Ly93d3cudmlkZW9sYW4ub3JnL3gyNjQuaHRtbCAtIG9wdGlvbnM6IGNhYmFjPTEgcmVmPTEgZGVibG9jaz0xOjA6MCBhbmFseXNlPTB4MToweDExMSBtZT1oZXggc3VibWU9MiBwc3k9MSBwc3lfcmQ9MS4wMDowLjAwIG1peGVkX3JlZj0wIG1lX3JhbmdlPTE2IGNocm9tYV9tZT0xIHRyZWxsaXM9MCA4eDhkY3Q9MCBjcW09MCBkZWFkem9uZT0yMSwxMSBmYXN0X3Bza2lwPTEgY2hyb21hX3FwX29mZnNldD0wIHRocmVhZHM9NiBsb29rYWhlYWRfdGhyZWFkcz0xIHNsaWNlZF90aHJlYWRzPTAgbnI9MCBkZWNpbWF0ZT0xIGludGVybGFjZWQ9MCBibHVyYXlfY29tcGF0PTAgY29uc3RyYWluZWRfaW50cmE9MCBiZnJhbWVzPTMgYl9weXJhbWlkPTIgYl9hZGFwdD0xIGJfYmlhcz0wIGRpcmVjdD0xIHdlaWdodGI9MSBvcGVuX2dvcD0wIHdlaWdodHA9MSBrZXlpbnQ9MzAwIGtleWludF9taW49MzAgc2NlbmVjdXQ9NDAgaW50cmFfcmVmcmVzaD0wIHJjX2xvb2thaGVhZD0xMCByYz1jcmYgbWJ0cmVlPTEgY3JmPTIwLjAgcWNvbXA9MC42MCBxcG1pbj0wIHFwbWF4PTY5IHFwc3RlcD00IHZidl9tYXhyYXRlPTIwMDAwIHZidl9idWZzaXplPTI1MDAwIGNyZl9tYXg9MC4wIG5hbF9ocmQ9bm9uZSBmaWxsZXI9MCBpcF9yYXRpbz0xLjQwIGFxPTE6MS4wMACAAAAAOWWIhAA3//p+C7v8tDDSTjf97w55i3SbRPO4ZY+hkjD5hbkAkL3zpJ6h/LR1CAABzgB1kqqzUorlhQAAAAxBmiQYhn/+qZYADLgAAAAJQZ5CQhX/AAj5IQADQGgcIQADQGgcAAAACQGeYUQn/wALKCEAA0BoHAAAAAkBnmNEJ/8ACykhAANAaBwhAANAaBwAAAANQZpoNExDP/6plgAMuSEAA0BoHAAAAAtBnoZFESwr/wAI+SEAA0BoHCEAA0BoHAAAAAkBnqVEJ/8ACykhAANAaBwAAAAJAZ6nRCf/AAsoIQADQGgcIQADQGgcAAAADUGarDRMQz/+qZYADLghAANAaBwAAAALQZ7KRRUsK/8ACPkhAANAaBwAAAAJAZ7pRCf/AAsoIQADQGgcIQADQGgcAAAACQGe60Qn/wALKCEAA0BoHAAAAA1BmvA0TEM//qmWAAy5IQADQGgcIQADQGgcAAAAC0GfDkUVLCv/AAj5IQADQGgcAAAACQGfLUQn/wALKSEAA0BoHCEAA0BoHAAAAAkBny9EJ/8ACyghAANAaBwAAAANQZs0NExDP/6plgAMuCEAA0BoHAAAAAtBn1JFFSwr/wAI+SEAA0BoHCEAA0BoHAAAAAkBn3FEJ/8ACyghAANAaBwAAAAJAZ9zRCf/AAsoIQADQGgcIQADQGgcAAAADUGbeDRMQz/+qZYADLkhAANAaBwAAAALQZ+WRRUsK/8ACPghAANAaBwhAANAaBwAAAAJAZ+1RCf/AAspIQADQGgcAAAACQGft0Qn/wALKSEAA0BoHCEAA0BoHAAAAA1Bm7w0TEM//qmWAAy4IQADQGgcAAAAC0Gf2kUVLCv/AAj5IQADQGgcAAAACQGf+UQn/wALKCEAA0BoHCEAA0BoHAAAAAkBn/tEJ/8ACykhAANAaBwAAAANQZvgNExDP/6plgAMuSEAA0BoHCEAA0BoHAAAAAtBnh5FFSwr/wAI+CEAA0BoHAAAAAkBnj1EJ/8ACyghAANAaBwhAANAaBwAAAAJAZ4/RCf/AAspIQADQGgcAAAADUGaJDRMQz/+qZYADLghAANAaBwAAAALQZ5CRRUsK/8ACPkhAANAaBwhAANAaBwAAAAJAZ5hRCf/AAsoIQADQGgcAAAACQGeY0Qn/wALKSEAA0BoHCEAA0BoHAAAAA1Bmmg0TEM//qmWAAy5IQADQGgcAAAAC0GehkUVLCv/AAj5IQADQGgcIQADQGgcAAAACQGepUQn/wALKSEAA0BoHAAAAAkBnqdEJ/8ACyghAANAaBwAAAANQZqsNExDP/6plgAMuCEAA0BoHCEAA0BoHAAAAAtBnspFFSwr/wAI+SEAA0BoHAAAAAkBnulEJ/8ACyghAANAaBwhAANAaBwAAAAJAZ7rRCf/AAsoIQADQGgcAAAADUGa8DRMQz/+qZYADLkhAANAaBwhAANAaBwAAAALQZ8ORRUsK/8ACPkhAANAaBwAAAAJAZ8tRCf/AAspIQADQGgcIQADQGgcAAAACQGfL0Qn/wALKCEAA0BoHAAAAA1BmzQ0TEM//qmWAAy4IQADQGgcAAAAC0GfUkUVLCv/AAj5IQADQGgcIQADQGgcAAAACQGfcUQn/wALKCEAA0BoHAAAAAkBn3NEJ/8ACyghAANAaBwhAANAaBwAAAANQZt4NExC//6plgAMuSEAA0BoHAAAAAtBn5ZFFSwr/wAI+CEAA0BoHCEAA0BoHAAAAAkBn7VEJ/8ACykhAANAaBwAAAAJAZ+3RCf/AAspIQADQGgcAAAADUGbuzRMQn/+nhAAYsAhAANAaBwhAANAaBwAAAAJQZ/aQhP/AAspIQADQGgcAAAACQGf+UQn/wALKCEAA0BoHCEAA0BoHCEAA0BoHCEAA0BoHCEAA0BoHCEAA0BoHAAACiFtb292AAAAbG12aGQAAAAA1YCCX9WAgl8AAAPoAAAH/AABAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAGGlvZHMAAAAAEICAgAcAT////v7/AAAF+XRyYWsAAABcdGtoZAAAAAPVgIJf1YCCXwAAAAEAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAygAAAMoAAAAAACRlZHRzAAAAHGVsc3QAAAAAAAAAAQAAB9AAABdwAAEAAAAABXFtZGlhAAAAIG1kaGQAAAAA1YCCX9WAgl8AAV+QAAK/IFXEAAAAAAAtaGRscgAAAAAAAAAAdmlkZQAAAAAAAAAAAAAAAFZpZGVvSGFuZGxlcgAAAAUcbWluZgAAABR2bWhkAAAAAQAAAAAAAAAAAAAAJGRpbmYAAAAcZHJlZgAAAAAAAAABAAAADHVybCAAAAABAAAE3HN0YmwAAACYc3RzZAAAAAAAAAABAAAAiGF2YzEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAygDKAEgAAABIAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY//8AAAAyYXZjQwFNQCj/4QAbZ01AKOyho3ySTUBAQFAAAAMAEAAr8gDxgxlgAQAEaO+G8gAAABhzdHRzAAAAAAAAAAEAAAA8AAALuAAAABRzdHNzAAAAAAAAAAEAAAABAAAB8GN0dHMAAAAAAAAAPAAAAAEAABdwAAAAAQAAOpgAAAABAAAXcAAAAAEAAAAAAAAAAQAAC7gAAAABAAA6mAAAAAEAABdwAAAAAQAAAAAAAAABAAALuAAAAAEAADqYAAAAAQAAF3AAAAABAAAAAAAAAAEAAAu4AAAAAQAAOpgAAAABAAAXcAAAAAEAAAAAAAAAAQAAC7gAAAABAAA6mAAAAAEAABdwAAAAAQAAAAAAAAABAAALuAAAAAEAADqYAAAAAQAAF3AAAAABAAAAAAAAAAEAAAu4AAAAAQAAOpgAAAABAAAXcAAAAAEAAAAAAAAAAQAAC7gAAAABAAA6mAAAAAEAABdwAAAAAQAAAAAAAAABAAALuAAAAAEAADqYAAAAAQAAF3AAAAABAAAAAAAAAAEAAAu4AAAAAQAAOpgAAAABAAAXcAAAAAEAAAAAAAAAAQAAC7gAAAABAAA6mAAAAAEAABdwAAAAAQAAAAAAAAABAAALuAAAAAEAADqYAAAAAQAAF3AAAAABAAAAAAAAAAEAAAu4AAAAAQAAOpgAAAABAAAXcAAAAAEAAAAAAAAAAQAAC7gAAAABAAA6mAAAAAEAABdwAAAAAQAAAAAAAAABAAALuAAAAAEAAC7gAAAAAQAAF3AAAAABAAAAAAAAABxzdHNjAAAAAAAAAAEAAAABAAAAAQAAAAEAAAEEc3RzegAAAAAAAAAAAAAAPAAAAzQAAAAQAAAADQAAAA0AAAANAAAAEQAAAA8AAAANAAAADQAAABEAAAAPAAAADQAAAA0AAAARAAAADwAAAA0AAAANAAAAEQAAAA8AAAANAAAADQAAABEAAAAPAAAADQAAAA0AAAARAAAADwAAAA0AAAANAAAAEQAAAA8AAAANAAAADQAAABEAAAAPAAAADQAAAA0AAAARAAAADwAAAA0AAAANAAAAEQAAAA8AAAANAAAADQAAABEAAAAPAAAADQAAAA0AAAARAAAADwAAAA0AAAANAAAAEQAAAA8AAAANAAAADQAAABEAAAANAAAADQAAAQBzdGNvAAAAAAAAADwAAAAwAAADZAAAA3QAAAONAAADoAAAA7kAAAPQAAAD6wAAA/4AAAQXAAAELgAABEMAAARcAAAEbwAABIwAAAShAAAEugAABM0AAATkAAAE/wAABRIAAAUrAAAFQgAABV0AAAVwAAAFiQAABaAAAAW1AAAFzgAABeEAAAX+AAAGEwAABiwAAAY/AAAGVgAABnEAAAaEAAAGnQAABrQAAAbPAAAG4gAABvUAAAcSAAAHJwAAB0AAAAdTAAAHcAAAB4UAAAeeAAAHsQAAB8gAAAfjAAAH9gAACA8AAAgmAAAIQQAACFQAAAhnAAAIhAAACJcAAAMsdHJhawAAAFx0a2hkAAAAA9WAgl/VgIJfAAAAAgAAAAAAAAf8AAAAAAAAAAAAAAABAQAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAACsm1kaWEAAAAgbWRoZAAAAADVgIJf1YCCXwAArEQAAWAAVcQAAAAAACdoZGxyAAAAAAAAAABzb3VuAAAAAAAAAAAAAAAAU3RlcmVvAAAAAmNtaW5mAAAAEHNtaGQAAAAAAAAAAAAAACRkaW5mAAAAHGRyZWYAAAAAAAAAAQAAAAx1cmwgAAAAAQAAAidzdGJsAAAAZ3N0c2QAAAAAAAAAAQAAAFdtcDRhAAAAAAAAAAEAAAAAAAAAAAACABAAAAAArEQAAAAAADNlc2RzAAAAAAOAgIAiAAIABICAgBRAFQAAAAADDUAAAAAABYCAgAISEAaAgIABAgAAABhzdHRzAAAAAAAAAAEAAABYAAAEAAAAABxzdHNjAAAAAAAAAAEAAAABAAAAAQAAAAEAAAAUc3RzegAAAAAAAAAGAAAAWAAAAXBzdGNvAAAAAAAAAFgAAAOBAAADhwAAA5oAAAOtAAADswAAA8oAAAPfAAAD5QAAA/gAAAQLAAAEEQAABCgAAAQ9AAAEUAAABFYAAARpAAAEgAAABIYAAASbAAAErgAABLQAAATHAAAE3gAABPMAAAT5AAAFDAAABR8AAAUlAAAFPAAABVEAAAVXAAAFagAABX0AAAWDAAAFmgAABa8AAAXCAAAFyAAABdsAAAXyAAAF+AAABg0AAAYgAAAGJgAABjkAAAZQAAAGZQAABmsAAAZ+AAAGkQAABpcAAAauAAAGwwAABskAAAbcAAAG7wAABwYAAAcMAAAHIQAABzQAAAc6AAAHTQAAB2QAAAdqAAAHfwAAB5IAAAeYAAAHqwAAB8IAAAfXAAAH3QAAB/AAAAgDAAAICQAACCAAAAg1AAAIOwAACE4AAAhhAAAIeAAACH4AAAiRAAAIpAAACKoAAAiwAAAItgAACLwAAAjCAAAAFnVkdGEAAAAObmFtZVN0ZXJlbwAAAHB1ZHRhAAAAaG1ldGEAAAAAAAAAIWhkbHIAAAAAAAAAAG1kaXJhcHBsAAAAAAAAAAAAAAAAO2lsc3QAAAAzqXRvbwAAACtkYXRhAAAAAQAAAABIYW5kQnJha2UgMC4xMC4yIDIwMTUwNjExMDA=';\n })\n ]);\n});\n});\nvar NoSleep$1 = unwrapExports$$1(NoSleep);\nvar nextDisplayId = 1000;\nvar defaultLeftBounds = [0, 0, 0.5, 1];\nvar defaultRightBounds = [0.5, 0, 0.5, 1];\nvar raf = window.requestAnimationFrame;\nvar caf = window.cancelAnimationFrame;\nfunction VRFrameData() {\n this.leftProjectionMatrix = new Float32Array(16);\n this.leftViewMatrix = new Float32Array(16);\n this.rightProjectionMatrix = new Float32Array(16);\n this.rightViewMatrix = new Float32Array(16);\n this.pose = null;\n}\nfunction VRDisplayCapabilities(config) {\n Object.defineProperties(this, {\n hasPosition: {\n writable: false, enumerable: true, value: config.hasPosition\n },\n hasExternalDisplay: {\n writable: false, enumerable: true, value: config.hasExternalDisplay\n },\n canPresent: {\n writable: false, enumerable: true, value: config.canPresent\n },\n maxLayers: {\n writable: false, enumerable: true, value: config.maxLayers\n },\n hasOrientation: {\n enumerable: true, get: function get() {\n deprecateWarning('VRDisplayCapabilities.prototype.hasOrientation', 'VRDisplay.prototype.getFrameData');\n return config.hasOrientation;\n }\n }\n });\n}\nfunction VRDisplay(config) {\n config = config || {};\n var USE_WAKELOCK = 'wakelock' in config ? config.wakelock : true;\n this.isPolyfilled = true;\n this.displayId = nextDisplayId++;\n this.displayName = '';\n this.depthNear = 0.01;\n this.depthFar = 10000.0;\n this.isPresenting = false;\n Object.defineProperty(this, 'isConnected', {\n get: function get() {\n deprecateWarning('VRDisplay.prototype.isConnected', 'VRDisplayCapabilities.prototype.hasExternalDisplay');\n return false;\n }\n });\n this.capabilities = new VRDisplayCapabilities({\n hasPosition: false,\n hasOrientation: false,\n hasExternalDisplay: false,\n canPresent: false,\n maxLayers: 1\n });\n this.stageParameters = null;\n this.waitingForPresent_ = false;\n this.layer_ = null;\n this.originalParent_ = null;\n this.fullscreenElement_ = null;\n this.fullscreenWrapper_ = null;\n this.fullscreenElementCachedStyle_ = null;\n this.fullscreenEventTarget_ = null;\n this.fullscreenChangeHandler_ = null;\n this.fullscreenErrorHandler_ = null;\n if (USE_WAKELOCK && isMobile()) {\n this.wakelock_ = new NoSleep$1();\n }\n}\nVRDisplay.prototype.getFrameData = function (frameData) {\n return frameDataFromPose(frameData, this._getPose(), this);\n};\nVRDisplay.prototype.getPose = function () {\n deprecateWarning('VRDisplay.prototype.getPose', 'VRDisplay.prototype.getFrameData');\n return this._getPose();\n};\nVRDisplay.prototype.resetPose = function () {\n deprecateWarning('VRDisplay.prototype.resetPose');\n return this._resetPose();\n};\nVRDisplay.prototype.getImmediatePose = function () {\n deprecateWarning('VRDisplay.prototype.getImmediatePose', 'VRDisplay.prototype.getFrameData');\n return this._getPose();\n};\nVRDisplay.prototype.requestAnimationFrame = function (callback) {\n return raf(callback);\n};\nVRDisplay.prototype.cancelAnimationFrame = function (id) {\n return caf(id);\n};\nVRDisplay.prototype.wrapForFullscreen = function (element) {\n if (isIOS()) {\n return element;\n }\n if (!this.fullscreenWrapper_) {\n this.fullscreenWrapper_ = document.createElement('div');\n var cssProperties = ['height: ' + Math.min(screen.height, screen.width) + 'px !important', 'top: 0 !important', 'left: 0 !important', 'right: 0 !important', 'border: 0', 'margin: 0', 'padding: 0', 'z-index: 999999 !important', 'position: fixed'];\n this.fullscreenWrapper_.setAttribute('style', cssProperties.join('; ') + ';');\n this.fullscreenWrapper_.classList.add('webvr-polyfill-fullscreen-wrapper');\n }\n if (this.fullscreenElement_ == element) {\n return this.fullscreenWrapper_;\n }\n if (this.fullscreenElement_) {\n if (this.originalParent_) {\n this.originalParent_.appendChild(this.fullscreenElement_);\n } else {\n this.fullscreenElement_.parentElement.removeChild(this.fullscreenElement_);\n }\n }\n this.fullscreenElement_ = element;\n this.originalParent_ = element.parentElement;\n if (!this.originalParent_) {\n document.body.appendChild(element);\n }\n if (!this.fullscreenWrapper_.parentElement) {\n var parent = this.fullscreenElement_.parentElement;\n parent.insertBefore(this.fullscreenWrapper_, this.fullscreenElement_);\n parent.removeChild(this.fullscreenElement_);\n }\n this.fullscreenWrapper_.insertBefore(this.fullscreenElement_, this.fullscreenWrapper_.firstChild);\n this.fullscreenElementCachedStyle_ = this.fullscreenElement_.getAttribute('style');\n var self = this;\n function applyFullscreenElementStyle() {\n if (!self.fullscreenElement_) {\n return;\n }\n var cssProperties = ['position: absolute', 'top: 0', 'left: 0', 'width: ' + Math.max(screen.width, screen.height) + 'px', 'height: ' + Math.min(screen.height, screen.width) + 'px', 'border: 0', 'margin: 0', 'padding: 0'];\n self.fullscreenElement_.setAttribute('style', cssProperties.join('; ') + ';');\n }\n applyFullscreenElementStyle();\n return this.fullscreenWrapper_;\n};\nVRDisplay.prototype.removeFullscreenWrapper = function () {\n if (!this.fullscreenElement_) {\n return;\n }\n var element = this.fullscreenElement_;\n if (this.fullscreenElementCachedStyle_) {\n element.setAttribute('style', this.fullscreenElementCachedStyle_);\n } else {\n element.removeAttribute('style');\n }\n this.fullscreenElement_ = null;\n this.fullscreenElementCachedStyle_ = null;\n var parent = this.fullscreenWrapper_.parentElement;\n this.fullscreenWrapper_.removeChild(element);\n if (this.originalParent_ === parent) {\n parent.insertBefore(element, this.fullscreenWrapper_);\n }\n else if (this.originalParent_) {\n this.originalParent_.appendChild(element);\n }\n parent.removeChild(this.fullscreenWrapper_);\n return element;\n};\nVRDisplay.prototype.requestPresent = function (layers) {\n var wasPresenting = this.isPresenting;\n var self = this;\n if (!(layers instanceof Array)) {\n deprecateWarning('VRDisplay.prototype.requestPresent with non-array argument', 'an array of VRLayers as the first argument');\n layers = [layers];\n }\n return new Promise(function (resolve, reject) {\n if (!self.capabilities.canPresent) {\n reject(new Error('VRDisplay is not capable of presenting.'));\n return;\n }\n if (layers.length == 0 || layers.length > self.capabilities.maxLayers) {\n reject(new Error('Invalid number of layers.'));\n return;\n }\n var incomingLayer = layers[0];\n if (!incomingLayer.source) {\n resolve();\n return;\n }\n var leftBounds = incomingLayer.leftBounds || defaultLeftBounds;\n var rightBounds = incomingLayer.rightBounds || defaultRightBounds;\n if (wasPresenting) {\n var layer = self.layer_;\n if (layer.source !== incomingLayer.source) {\n layer.source = incomingLayer.source;\n }\n for (var i = 0; i < 4; i++) {\n layer.leftBounds[i] = leftBounds[i];\n layer.rightBounds[i] = rightBounds[i];\n }\n self.wrapForFullscreen(self.layer_.source);\n self.updatePresent_();\n resolve();\n return;\n }\n self.layer_ = {\n predistorted: incomingLayer.predistorted,\n source: incomingLayer.source,\n leftBounds: leftBounds.slice(0),\n rightBounds: rightBounds.slice(0)\n };\n self.waitingForPresent_ = false;\n if (self.layer_ && self.layer_.source) {\n var fullscreenElement = self.wrapForFullscreen(self.layer_.source);\n var onFullscreenChange = function onFullscreenChange() {\n var actualFullscreenElement = getFullscreenElement();\n self.isPresenting = fullscreenElement === actualFullscreenElement;\n if (self.isPresenting) {\n if (screen.orientation && screen.orientation.lock) {\n screen.orientation.lock('landscape-primary').catch(function (error) {\n console.error('screen.orientation.lock() failed due to', error.message);\n });\n }\n self.waitingForPresent_ = false;\n self.beginPresent_();\n resolve();\n } else {\n if (screen.orientation && screen.orientation.unlock) {\n screen.orientation.unlock();\n }\n self.removeFullscreenWrapper();\n self.disableWakeLock();\n self.endPresent_();\n self.removeFullscreenListeners_();\n }\n self.fireVRDisplayPresentChange_();\n };\n var onFullscreenError = function onFullscreenError() {\n if (!self.waitingForPresent_) {\n return;\n }\n self.removeFullscreenWrapper();\n self.removeFullscreenListeners_();\n self.disableWakeLock();\n self.waitingForPresent_ = false;\n self.isPresenting = false;\n reject(new Error('Unable to present.'));\n };\n self.addFullscreenListeners_(fullscreenElement, onFullscreenChange, onFullscreenError);\n if (requestFullscreen(fullscreenElement)) {\n self.enableWakeLock();\n self.waitingForPresent_ = true;\n } else if (isIOS() || isWebViewAndroid()) {\n self.enableWakeLock();\n self.isPresenting = true;\n self.beginPresent_();\n self.fireVRDisplayPresentChange_();\n resolve();\n }\n }\n if (!self.waitingForPresent_ && !isIOS()) {\n exitFullscreen();\n reject(new Error('Unable to present.'));\n }\n });\n};\nVRDisplay.prototype.exitPresent = function () {\n var wasPresenting = this.isPresenting;\n var self = this;\n this.isPresenting = false;\n this.layer_ = null;\n this.disableWakeLock();\n return new Promise(function (resolve, reject) {\n if (wasPresenting) {\n if (!exitFullscreen() && isIOS()) {\n self.endPresent_();\n self.fireVRDisplayPresentChange_();\n }\n if (isWebViewAndroid()) {\n self.removeFullscreenWrapper();\n self.removeFullscreenListeners_();\n self.endPresent_();\n self.fireVRDisplayPresentChange_();\n }\n resolve();\n } else {\n reject(new Error('Was not presenting to VRDisplay.'));\n }\n });\n};\nVRDisplay.prototype.getLayers = function () {\n if (this.layer_) {\n return [this.layer_];\n }\n return [];\n};\nVRDisplay.prototype.fireVRDisplayPresentChange_ = function () {\n var event = new CustomEvent('vrdisplaypresentchange', { detail: { display: this } });\n window.dispatchEvent(event);\n};\nVRDisplay.prototype.fireVRDisplayConnect_ = function () {\n var event = new CustomEvent('vrdisplayconnect', { detail: { display: this } });\n window.dispatchEvent(event);\n};\nVRDisplay.prototype.addFullscreenListeners_ = function (element, changeHandler, errorHandler) {\n this.removeFullscreenListeners_();\n this.fullscreenEventTarget_ = element;\n this.fullscreenChangeHandler_ = changeHandler;\n this.fullscreenErrorHandler_ = errorHandler;\n if (changeHandler) {\n if (document.fullscreenEnabled) {\n element.addEventListener('fullscreenchange', changeHandler, false);\n } else if (document.webkitFullscreenEnabled) {\n element.addEventListener('webkitfullscreenchange', changeHandler, false);\n } else if (document.mozFullScreenEnabled) {\n document.addEventListener('mozfullscreenchange', changeHandler, false);\n } else if (document.msFullscreenEnabled) {\n element.addEventListener('msfullscreenchange', changeHandler, false);\n }\n }\n if (errorHandler) {\n if (document.fullscreenEnabled) {\n element.addEventListener('fullscreenerror', errorHandler, false);\n } else if (document.webkitFullscreenEnabled) {\n element.addEventListener('webkitfullscreenerror', errorHandler, false);\n } else if (document.mozFullScreenEnabled) {\n document.addEventListener('mozfullscreenerror', errorHandler, false);\n } else if (document.msFullscreenEnabled) {\n element.addEventListener('msfullscreenerror', errorHandler, false);\n }\n }\n};\nVRDisplay.prototype.removeFullscreenListeners_ = function () {\n if (!this.fullscreenEventTarget_) return;\n var element = this.fullscreenEventTarget_;\n if (this.fullscreenChangeHandler_) {\n var changeHandler = this.fullscreenChangeHandler_;\n element.removeEventListener('fullscreenchange', changeHandler, false);\n element.removeEventListener('webkitfullscreenchange', changeHandler, false);\n document.removeEventListener('mozfullscreenchange', changeHandler, false);\n element.removeEventListener('msfullscreenchange', changeHandler, false);\n }\n if (this.fullscreenErrorHandler_) {\n var errorHandler = this.fullscreenErrorHandler_;\n element.removeEventListener('fullscreenerror', errorHandler, false);\n element.removeEventListener('webkitfullscreenerror', errorHandler, false);\n document.removeEventListener('mozfullscreenerror', errorHandler, false);\n element.removeEventListener('msfullscreenerror', errorHandler, false);\n }\n this.fullscreenEventTarget_ = null;\n this.fullscreenChangeHandler_ = null;\n this.fullscreenErrorHandler_ = null;\n};\nVRDisplay.prototype.enableWakeLock = function () {\n if (this.wakelock_) {\n this.wakelock_.enable();\n }\n};\nVRDisplay.prototype.disableWakeLock = function () {\n if (this.wakelock_) {\n this.wakelock_.disable();\n }\n};\nVRDisplay.prototype.beginPresent_ = function () {\n};\nVRDisplay.prototype.endPresent_ = function () {\n};\nVRDisplay.prototype.submitFrame = function (pose) {\n};\nVRDisplay.prototype.getEyeParameters = function (whichEye) {\n return null;\n};\nvar config = {\n MOBILE_WAKE_LOCK: true,\n DEBUG: false,\n DPDB_URL: 'https://dpdb.webvr.rocks/dpdb.json',\n K_FILTER: 0.98,\n PREDICTION_TIME_S: 0.040,\n CARDBOARD_UI_DISABLED: false,\n ROTATE_INSTRUCTIONS_DISABLED: false,\n YAW_ONLY: false,\n BUFFER_SCALE: 0.5,\n DIRTY_SUBMIT_FRAME_BINDINGS: false\n};\nvar Eye = {\n LEFT: 'left',\n RIGHT: 'right'\n};\nfunction CardboardVRDisplay(config$$1) {\n var defaults = extend({}, config);\n config$$1 = extend(defaults, config$$1 || {});\n VRDisplay.call(this, {\n wakelock: config$$1.MOBILE_WAKE_LOCK\n });\n this.config = config$$1;\n this.displayName = 'Cardboard VRDisplay';\n this.capabilities = new VRDisplayCapabilities({\n hasPosition: false,\n hasOrientation: true,\n hasExternalDisplay: false,\n canPresent: true,\n maxLayers: 1\n });\n this.stageParameters = null;\n this.bufferScale_ = this.config.BUFFER_SCALE;\n this.poseSensor_ = new PoseSensor(this.config);\n this.distorter_ = null;\n this.cardboardUI_ = null;\n this.dpdb_ = new Dpdb(this.config.DPDB_URL, this.onDeviceParamsUpdated_.bind(this));\n this.deviceInfo_ = new DeviceInfo(this.dpdb_.getDeviceParams());\n this.viewerSelector_ = new ViewerSelector();\n this.viewerSelector_.onChange(this.onViewerChanged_.bind(this));\n this.deviceInfo_.setViewer(this.viewerSelector_.getCurrentViewer());\n if (!this.config.ROTATE_INSTRUCTIONS_DISABLED) {\n this.rotateInstructions_ = new RotateInstructions();\n }\n if (isIOS()) {\n window.addEventListener('resize', this.onResize_.bind(this));\n }\n}\nCardboardVRDisplay.prototype = Object.create(VRDisplay.prototype);\nCardboardVRDisplay.prototype._getPose = function () {\n return {\n position: null,\n orientation: this.poseSensor_.getOrientation(),\n linearVelocity: null,\n linearAcceleration: null,\n angularVelocity: null,\n angularAcceleration: null\n };\n};\nCardboardVRDisplay.prototype._resetPose = function () {\n if (this.poseSensor_.resetPose) {\n this.poseSensor_.resetPose();\n }\n};\nCardboardVRDisplay.prototype._getFieldOfView = function (whichEye) {\n var fieldOfView;\n if (whichEye == Eye.LEFT) {\n fieldOfView = this.deviceInfo_.getFieldOfViewLeftEye();\n } else if (whichEye == Eye.RIGHT) {\n fieldOfView = this.deviceInfo_.getFieldOfViewRightEye();\n } else {\n console.error('Invalid eye provided: %s', whichEye);\n return null;\n }\n return fieldOfView;\n};\nCardboardVRDisplay.prototype._getEyeOffset = function (whichEye) {\n var offset;\n if (whichEye == Eye.LEFT) {\n offset = [-this.deviceInfo_.viewer.interLensDistance * 0.5, 0.0, 0.0];\n } else if (whichEye == Eye.RIGHT) {\n offset = [this.deviceInfo_.viewer.interLensDistance * 0.5, 0.0, 0.0];\n } else {\n console.error('Invalid eye provided: %s', whichEye);\n return null;\n }\n return offset;\n};\nCardboardVRDisplay.prototype.getEyeParameters = function (whichEye) {\n var offset = this._getEyeOffset(whichEye);\n var fieldOfView = this._getFieldOfView(whichEye);\n var eyeParams = {\n offset: offset,\n renderWidth: this.deviceInfo_.device.width * 0.5 * this.bufferScale_,\n renderHeight: this.deviceInfo_.device.height * this.bufferScale_\n };\n Object.defineProperty(eyeParams, 'fieldOfView', {\n enumerable: true,\n get: function get() {\n deprecateWarning('VRFieldOfView', 'VRFrameData\\'s projection matrices');\n return fieldOfView;\n }\n });\n return eyeParams;\n};\nCardboardVRDisplay.prototype.onDeviceParamsUpdated_ = function (newParams) {\n if (this.config.DEBUG) {\n console.log('DPDB reported that device params were updated.');\n }\n this.deviceInfo_.updateDeviceParams(newParams);\n if (this.distorter_) {\n this.distorter_.updateDeviceInfo(this.deviceInfo_);\n }\n};\nCardboardVRDisplay.prototype.updateBounds_ = function () {\n if (this.layer_ && this.distorter_ && (this.layer_.leftBounds || this.layer_.rightBounds)) {\n this.distorter_.setTextureBounds(this.layer_.leftBounds, this.layer_.rightBounds);\n }\n};\nCardboardVRDisplay.prototype.beginPresent_ = function () {\n var gl = this.layer_.source.getContext('webgl');\n if (!gl) gl = this.layer_.source.getContext('experimental-webgl');\n if (!gl) gl = this.layer_.source.getContext('webgl2');\n if (!gl) return;\n if (this.layer_.predistorted) {\n if (!this.config.CARDBOARD_UI_DISABLED) {\n gl.canvas.width = getScreenWidth() * this.bufferScale_;\n gl.canvas.height = getScreenHeight() * this.bufferScale_;\n this.cardboardUI_ = new CardboardUI(gl);\n }\n } else {\n if (!this.config.CARDBOARD_UI_DISABLED) {\n this.cardboardUI_ = new CardboardUI(gl);\n }\n this.distorter_ = new CardboardDistorter(gl, this.cardboardUI_, this.config.BUFFER_SCALE, this.config.DIRTY_SUBMIT_FRAME_BINDINGS);\n this.distorter_.updateDeviceInfo(this.deviceInfo_);\n }\n if (this.cardboardUI_) {\n this.cardboardUI_.listen(function (e) {\n this.viewerSelector_.show(this.layer_.source.parentElement);\n e.stopPropagation();\n e.preventDefault();\n }.bind(this), function (e) {\n this.exitPresent();\n e.stopPropagation();\n e.preventDefault();\n }.bind(this));\n }\n if (this.rotateInstructions_) {\n if (isLandscapeMode() && isMobile()) {\n this.rotateInstructions_.showTemporarily(3000, this.layer_.source.parentElement);\n } else {\n this.rotateInstructions_.update();\n }\n }\n this.orientationHandler = this.onOrientationChange_.bind(this);\n window.addEventListener('orientationchange', this.orientationHandler);\n this.vrdisplaypresentchangeHandler = this.updateBounds_.bind(this);\n window.addEventListener('vrdisplaypresentchange', this.vrdisplaypresentchangeHandler);\n this.fireVRDisplayDeviceParamsChange_();\n};\nCardboardVRDisplay.prototype.endPresent_ = function () {\n if (this.distorter_) {\n this.distorter_.destroy();\n this.distorter_ = null;\n }\n if (this.cardboardUI_) {\n this.cardboardUI_.destroy();\n this.cardboardUI_ = null;\n }\n if (this.rotateInstructions_) {\n this.rotateInstructions_.hide();\n }\n this.viewerSelector_.hide();\n window.removeEventListener('orientationchange', this.orientationHandler);\n window.removeEventListener('vrdisplaypresentchange', this.vrdisplaypresentchangeHandler);\n};\nCardboardVRDisplay.prototype.updatePresent_ = function () {\n this.endPresent_();\n this.beginPresent_();\n};\nCardboardVRDisplay.prototype.submitFrame = function (pose) {\n if (this.distorter_) {\n this.updateBounds_();\n this.distorter_.submitFrame();\n } else if (this.cardboardUI_ && this.layer_) {\n var canvas = this.layer_.source.getContext('webgl').canvas;\n if (canvas.width != this.lastWidth || canvas.height != this.lastHeight) {\n this.cardboardUI_.onResize();\n }\n this.lastWidth = canvas.width;\n this.lastHeight = canvas.height;\n this.cardboardUI_.render();\n }\n};\nCardboardVRDisplay.prototype.onOrientationChange_ = function (e) {\n this.viewerSelector_.hide();\n if (this.rotateInstructions_) {\n this.rotateInstructions_.update();\n }\n this.onResize_();\n};\nCardboardVRDisplay.prototype.onResize_ = function (e) {\n if (this.layer_) {\n var gl = this.layer_.source.getContext('webgl');\n var cssProperties = ['position: absolute', 'top: 0', 'left: 0',\n 'width: 100vw', 'height: 100vh', 'border: 0', 'margin: 0',\n 'padding: 0px', 'box-sizing: content-box'];\n gl.canvas.setAttribute('style', cssProperties.join('; ') + ';');\n safariCssSizeWorkaround(gl.canvas);\n }\n};\nCardboardVRDisplay.prototype.onViewerChanged_ = function (viewer) {\n this.deviceInfo_.setViewer(viewer);\n if (this.distorter_) {\n this.distorter_.updateDeviceInfo(this.deviceInfo_);\n }\n this.fireVRDisplayDeviceParamsChange_();\n};\nCardboardVRDisplay.prototype.fireVRDisplayDeviceParamsChange_ = function () {\n var event = new CustomEvent('vrdisplaydeviceparamschange', {\n detail: {\n vrdisplay: this,\n deviceInfo: this.deviceInfo_\n }\n });\n window.dispatchEvent(event);\n};\nCardboardVRDisplay.VRFrameData = VRFrameData;\nCardboardVRDisplay.VRDisplay = VRDisplay;\nreturn CardboardVRDisplay;\n})));\n});\nvar CardboardVRDisplay = unwrapExports(cardboardVrDisplay);\n\nvar version = \"0.10.5\";\n\nvar DefaultConfig = {\n PROVIDE_MOBILE_VRDISPLAY: true,\n GET_VR_DISPLAYS_TIMEOUT: 1000,\n MOBILE_WAKE_LOCK: true,\n DEBUG: false,\n DPDB_URL: 'https://dpdb.webvr.rocks/dpdb.json',\n K_FILTER: 0.98,\n PREDICTION_TIME_S: 0.040,\n TOUCH_PANNER_DISABLED: true,\n CARDBOARD_UI_DISABLED: false,\n ROTATE_INSTRUCTIONS_DISABLED: false,\n YAW_ONLY: false,\n BUFFER_SCALE: 0.5,\n DIRTY_SUBMIT_FRAME_BINDINGS: false\n};\n\nfunction WebVRPolyfill(config) {\n this.config = extend(extend({}, DefaultConfig), config);\n this.polyfillDisplays = [];\n this.enabled = false;\n this.hasNative = 'getVRDisplays' in navigator;\n this.native = {};\n this.native.getVRDisplays = navigator.getVRDisplays;\n this.native.VRFrameData = window.VRFrameData;\n this.native.VRDisplay = window.VRDisplay;\n if (!this.hasNative || this.config.PROVIDE_MOBILE_VRDISPLAY && isMobile()) {\n this.enable();\n this.getVRDisplays().then(function (displays) {\n if (displays && displays[0] && displays[0].fireVRDisplayConnect_) {\n displays[0].fireVRDisplayConnect_();\n }\n });\n }\n}\nWebVRPolyfill.prototype.getPolyfillDisplays = function () {\n if (this._polyfillDisplaysPopulated) {\n return this.polyfillDisplays;\n }\n if (isMobile()) {\n var vrDisplay = new CardboardVRDisplay({\n MOBILE_WAKE_LOCK: this.config.MOBILE_WAKE_LOCK,\n DEBUG: this.config.DEBUG,\n DPDB_URL: this.config.DPDB_URL,\n CARDBOARD_UI_DISABLED: this.config.CARDBOARD_UI_DISABLED,\n K_FILTER: this.config.K_FILTER,\n PREDICTION_TIME_S: this.config.PREDICTION_TIME_S,\n TOUCH_PANNER_DISABLED: this.config.TOUCH_PANNER_DISABLED,\n ROTATE_INSTRUCTIONS_DISABLED: this.config.ROTATE_INSTRUCTIONS_DISABLED,\n YAW_ONLY: this.config.YAW_ONLY,\n BUFFER_SCALE: this.config.BUFFER_SCALE,\n DIRTY_SUBMIT_FRAME_BINDINGS: this.config.DIRTY_SUBMIT_FRAME_BINDINGS\n });\n this.polyfillDisplays.push(vrDisplay);\n }\n this._polyfillDisplaysPopulated = true;\n return this.polyfillDisplays;\n};\nWebVRPolyfill.prototype.enable = function () {\n this.enabled = true;\n if (this.hasNative && this.native.VRFrameData) {\n var NativeVRFrameData = this.native.VRFrameData;\n var nativeFrameData = new this.native.VRFrameData();\n var nativeGetFrameData = this.native.VRDisplay.prototype.getFrameData;\n window.VRDisplay.prototype.getFrameData = function (frameData) {\n if (frameData instanceof NativeVRFrameData) {\n nativeGetFrameData.call(this, frameData);\n return;\n }\n nativeGetFrameData.call(this, nativeFrameData);\n frameData.pose = nativeFrameData.pose;\n copyArray(nativeFrameData.leftProjectionMatrix, frameData.leftProjectionMatrix);\n copyArray(nativeFrameData.rightProjectionMatrix, frameData.rightProjectionMatrix);\n copyArray(nativeFrameData.leftViewMatrix, frameData.leftViewMatrix);\n copyArray(nativeFrameData.rightViewMatrix, frameData.rightViewMatrix);\n };\n }\n navigator.getVRDisplays = this.getVRDisplays.bind(this);\n window.VRDisplay = CardboardVRDisplay.VRDisplay;\n window.VRFrameData = CardboardVRDisplay.VRFrameData;\n};\nWebVRPolyfill.prototype.getVRDisplays = function () {\n var _this = this;\n var config = this.config;\n if (!this.hasNative) {\n return Promise.resolve(this.getPolyfillDisplays());\n }\n var timeoutId;\n var vrDisplaysNative = this.native.getVRDisplays.call(navigator);\n var timeoutPromise = new Promise(function (resolve) {\n timeoutId = setTimeout(function () {\n console.warn('Native WebVR implementation detected, but `getVRDisplays()` failed to resolve. Falling back to polyfill.');\n resolve([]);\n }, config.GET_VR_DISPLAYS_TIMEOUT);\n });\n return race([vrDisplaysNative, timeoutPromise]).then(function (nativeDisplays) {\n clearTimeout(timeoutId);\n return nativeDisplays.length > 0 ? nativeDisplays : _this.getPolyfillDisplays();\n });\n};\nWebVRPolyfill.version = version;\nWebVRPolyfill.VRFrameData = CardboardVRDisplay.VRFrameData;\nWebVRPolyfill.VRDisplay = CardboardVRDisplay.VRDisplay;\n\n\nvar webvrPolyfill = Object.freeze({\n\tdefault: WebVRPolyfill\n});\n\nvar require$$0 = ( webvrPolyfill && WebVRPolyfill ) || webvrPolyfill;\n\nif (typeof commonjsGlobal !== 'undefined' && commonjsGlobal.window) {\n if (!commonjsGlobal.document) {\n commonjsGlobal.document = commonjsGlobal.window.document;\n }\n if (!commonjsGlobal.navigator) {\n commonjsGlobal.navigator = commonjsGlobal.window.navigator;\n }\n}\nvar src = require$$0;\n\nreturn src;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/webvr-polyfill/build/webvr-polyfill.js\n// module id = 593\n// module chunks = 1","import { quat, vec3, vec4, mat4 } from 'gl-matrix';\n\nimport macro from 'vtk.js/Sources/macro';\nimport vtkMath from 'vtk.js/Sources/Common/Core/Math';\n\nconst { vtkDebugMacro } = macro;\n\n/* eslint-disable new-cap */\n\n/*\n * Convenience function to access elements of a gl-matrix. If it turns\n * out I have rows and columns swapped everywhere, then I'll just change\n * the order of 'row' and 'col' parameters in this function\n */\n// function getMatrixElement(matrix, row, col) {\n// const idx = (row * 4) + col;\n// return matrix[idx];\n// }\n\n// ----------------------------------------------------------------------------\n// vtkCamera methods\n// ----------------------------------------------------------------------------\n\nfunction vtkCamera(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkCamera');\n\n // Set up private variables and methods\n const viewMatrix = mat4.create();\n const projectionMatrix = mat4.create();\n const w2pMatrix = mat4.create();\n const origin = vec3.create();\n const dopbasis = vec3.fromValues(0.0, 0.0, -1.0);\n const upbasis = vec3.fromValues(0.0, 1.0, 0.0);\n const tmpvec1 = vec3.create();\n const tmpvec2 = vec3.create();\n const tmpvec3 = vec3.create();\n\n const rotateMatrix = mat4.create();\n const trans = mat4.create();\n const newPosition = vec3.create();\n const newFocalPoint = vec3.create();\n\n publicAPI.orthogonalizeViewUp = () => {\n const vt = publicAPI.getViewMatrix();\n model.viewUp[0] = vt[4];\n model.viewUp[1] = vt[5];\n model.viewUp[2] = vt[6];\n\n publicAPI.modified();\n };\n\n publicAPI.setPosition = (x, y, z) => {\n if (\n x === model.position[0] &&\n y === model.position[1] &&\n z === model.position[2]\n ) {\n return;\n }\n\n model.position[0] = x;\n model.position[1] = y;\n model.position[2] = z;\n\n // recompute the focal distance\n publicAPI.computeDistance();\n\n publicAPI.modified();\n };\n\n publicAPI.setFocalPoint = (x, y, z) => {\n if (\n x === model.focalPoint[0] &&\n y === model.focalPoint[1] &&\n z === model.focalPoint[2]\n ) {\n return;\n }\n\n model.focalPoint[0] = x;\n model.focalPoint[1] = y;\n model.focalPoint[2] = z;\n\n // recompute the focal distance\n publicAPI.computeDistance();\n\n publicAPI.modified();\n };\n\n publicAPI.setDistance = (d) => {\n if (model.distance === d) {\n return;\n }\n\n model.distance = d;\n\n if (model.distance < 1e-20) {\n model.distance = 1e-20;\n vtkDebugMacro('Distance is set to minimum.');\n }\n\n // we want to keep the camera pointing in the same direction\n const vec = model.directionOfProjection;\n\n // recalculate FocalPoint\n model.focalPoint[0] = model.position[0] + vec[0] * model.distance;\n model.focalPoint[1] = model.position[1] + vec[1] * model.distance;\n model.focalPoint[2] = model.position[2] + vec[2] * model.distance;\n\n publicAPI.modified();\n };\n\n //----------------------------------------------------------------------------\n // This method must be called when the focal point or camera position changes\n publicAPI.computeDistance = () => {\n const dx = model.focalPoint[0] - model.position[0];\n const dy = model.focalPoint[1] - model.position[1];\n const dz = model.focalPoint[2] - model.position[2];\n\n model.distance = Math.sqrt(dx * dx + dy * dy + dz * dz);\n\n if (model.distance < 1e-20) {\n model.distance = 1e-20;\n vtkDebugMacro('Distance is set to minimum.');\n\n const vec = model.directionOfProjection;\n\n // recalculate FocalPoint\n model.focalPoint[0] = model.position[0] + vec[0] * model.distance;\n model.focalPoint[1] = model.position[1] + vec[1] * model.distance;\n model.focalPoint[2] = model.position[2] + vec[2] * model.distance;\n }\n\n model.directionOfProjection[0] = dx / model.distance;\n model.directionOfProjection[1] = dy / model.distance;\n model.directionOfProjection[2] = dz / model.distance;\n\n publicAPI.computeViewPlaneNormal();\n };\n\n //----------------------------------------------------------------------------\n publicAPI.computeViewPlaneNormal = () => {\n // VPN is -DOP\n model.viewPlaneNormal[0] = -model.directionOfProjection[0];\n model.viewPlaneNormal[1] = -model.directionOfProjection[1];\n model.viewPlaneNormal[2] = -model.directionOfProjection[2];\n };\n\n //----------------------------------------------------------------------------\n // Move the position of the camera along the view plane normal. Moving\n // towards the focal point (e.g., > 1) is a dolly-in, moving away\n // from the focal point (e.g., < 1) is a dolly-out.\n publicAPI.dolly = (amount) => {\n if (amount <= 0.0) {\n return;\n }\n\n // dolly moves the camera towards the focus\n const d = model.distance / amount;\n\n publicAPI.setPosition(\n model.focalPoint[0] - d * model.directionOfProjection[0],\n model.focalPoint[1] - d * model.directionOfProjection[1],\n model.focalPoint[2] - d * model.directionOfProjection[2]\n );\n };\n\n publicAPI.setRoll = (roll) => {};\n\n publicAPI.getRoll = () => {};\n\n publicAPI.roll = (angle) => {\n const eye = model.position;\n const at = model.focalPoint;\n const up = model.viewUp;\n const viewUpVec4 = vec4.fromValues(up[0], up[1], up[2], 0.0);\n\n mat4.identity(rotateMatrix);\n const viewDir = vec3.fromValues(\n at[0] - eye[0],\n at[1] - eye[1],\n at[2] - eye[2]\n );\n mat4.rotate(\n rotateMatrix,\n rotateMatrix,\n vtkMath.radiansFromDegrees(angle),\n viewDir\n );\n vec4.transformMat4(viewUpVec4, viewUpVec4, rotateMatrix);\n\n model.viewUp[0] = viewUpVec4[0];\n model.viewUp[1] = viewUpVec4[1];\n model.viewUp[2] = viewUpVec4[2];\n\n publicAPI.modified();\n };\n\n publicAPI.azimuth = (angle) => {\n const fp = model.focalPoint;\n\n mat4.identity(trans);\n\n // translate the focal point to the origin,\n // rotate about view up,\n // translate back again\n mat4.translate(trans, trans, vec3.fromValues(fp[0], fp[1], fp[2]));\n mat4.rotate(\n trans,\n trans,\n vtkMath.radiansFromDegrees(angle),\n vec3.fromValues(model.viewUp[0], model.viewUp[1], model.viewUp[2])\n );\n mat4.translate(trans, trans, vec3.fromValues(-fp[0], -fp[1], -fp[2]));\n\n // apply the transform to the position\n vec3.transformMat4(\n newPosition,\n vec3.fromValues(model.position[0], model.position[1], model.position[2]),\n trans\n );\n publicAPI.setPosition(newPosition[0], newPosition[1], newPosition[2]);\n };\n\n publicAPI.yaw = (angle) => {\n const position = model.position;\n\n mat4.identity(trans);\n\n // translate the camera to the origin,\n // rotate about axis,\n // translate back again\n mat4.translate(\n trans,\n trans,\n vec3.fromValues(position[0], position[1], position[2])\n );\n mat4.rotate(\n trans,\n trans,\n vtkMath.radiansFromDegrees(angle),\n vec3.fromValues(model.viewUp[0], model.viewUp[1], model.viewUp[2])\n );\n mat4.translate(\n trans,\n trans,\n vec3.fromValues(-position[0], -position[1], -position[2])\n );\n\n // apply the transform to the position\n vec3.transformMat4(\n newFocalPoint,\n vec3.fromValues(\n model.focalPoint[0],\n model.focalPoint[1],\n model.focalPoint[2]\n ),\n trans\n );\n publicAPI.setFocalPoint(\n newFocalPoint[0],\n newFocalPoint[1],\n newFocalPoint[2]\n );\n };\n\n publicAPI.elevation = (angle) => {\n const fp = model.focalPoint;\n\n const vt = publicAPI.getViewMatrix();\n const axis = [-vt[0], -vt[1], -vt[2]];\n\n mat4.identity(trans);\n\n // translate the focal point to the origin,\n // rotate about view up,\n // translate back again\n mat4.translate(trans, trans, vec3.fromValues(fp[0], fp[1], fp[2]));\n mat4.rotate(\n trans,\n trans,\n vtkMath.radiansFromDegrees(angle),\n vec3.fromValues(axis[0], axis[1], axis[2])\n );\n mat4.translate(trans, trans, vec3.fromValues(-fp[0], -fp[1], -fp[2]));\n\n // apply the transform to the position\n vec3.transformMat4(\n newPosition,\n vec3.fromValues(model.position[0], model.position[1], model.position[2]),\n trans\n );\n publicAPI.setPosition(newPosition[0], newPosition[1], newPosition[2]);\n };\n\n publicAPI.pitch = (angle) => {\n const position = model.position;\n\n const vt = publicAPI.getViewMatrix();\n const axis = [vt[0], vt[1], vt[2]];\n\n mat4.identity(trans);\n\n // translate the camera to the origin,\n // rotate about axis,\n // translate back again\n mat4.translate(\n trans,\n trans,\n vec3.fromValues(position[0], position[1], position[2])\n );\n mat4.rotate(\n trans,\n trans,\n vtkMath.radiansFromDegrees(angle),\n vec3.fromValues(axis[0], axis[1], axis[2])\n );\n mat4.translate(\n trans,\n trans,\n vec3.fromValues(-position[0], -position[1], -position[2])\n );\n\n // apply the transform to the position\n vec3.transformMat4(\n newFocalPoint,\n vec3.fromValues(\n model.focalPoint[0],\n model.focalPoint[1],\n model.focalPoint[2]\n ),\n trans\n );\n publicAPI.setFocalPoint(\n newFocalPoint[0],\n newFocalPoint[1],\n newFocalPoint[2]\n );\n };\n\n publicAPI.zoom = (factor) => {\n if (factor <= 0) {\n return;\n }\n if (model.parallelProjection) {\n model.parallelScale /= factor;\n } else {\n model.viewAngle /= factor;\n }\n publicAPI.modified();\n };\n\n publicAPI.setThickness = (thickness) => {};\n\n publicAPI.setObliqueAngles = (alpha, beta) => {};\n\n publicAPI.physicalOrientationToWorldDirection = (ori) => {\n // get the PhysicalToWorldMatrix\n publicAPI.getPhysicalToWorldMatrix(w2pMatrix);\n\n // push the x axis through the orientation quat\n const oriq = quat.fromValues(ori[0], ori[1], ori[2], ori[3]);\n const coriq = quat.create();\n const qdir = quat.fromValues(0.0, 0.0, 1.0, 0.0);\n quat.conjugate(coriq, oriq);\n\n // rotate the z axis by the quat\n quat.multiply(qdir, oriq, qdir);\n quat.multiply(qdir, qdir, coriq);\n\n // return the z axis in world coords\n return [qdir[0], qdir[1], qdir[2]];\n };\n\n publicAPI.getPhysicalToWorldMatrix = (result) => {\n publicAPI.getWorldToPhysicalMatrix(result);\n mat4.invert(result, result);\n };\n\n publicAPI.getWorldToPhysicalMatrix = (result) => {\n mat4.identity(w2pMatrix);\n vec3.set(\n tmpvec1,\n model.physicalScale,\n model.physicalScale,\n model.physicalScale\n );\n mat4.scale(w2pMatrix, w2pMatrix, tmpvec1);\n mat4.translate(w2pMatrix, w2pMatrix, model.physicalTranslation);\n\n // now the physical to vtk world rotation tform\n const physVRight = [3];\n vtkMath.cross(model.physicalViewNorth, model.physicalViewUp, physVRight);\n const phystoworld = mat4.create();\n phystoworld[0] = physVRight[0];\n phystoworld[1] = physVRight[1];\n phystoworld[2] = physVRight[2];\n phystoworld[4] = model.physicalViewUp[0];\n phystoworld[5] = model.physicalViewUp[1];\n phystoworld[6] = model.physicalViewUp[2];\n phystoworld[8] = -model.physicalViewNorth[0];\n phystoworld[9] = -model.physicalViewNorth[1];\n phystoworld[10] = -model.physicalViewNorth[2];\n mat4.transpose(phystoworld, phystoworld);\n mat4.multiply(result, w2pMatrix, phystoworld);\n };\n\n function computeViewParametersFromViewMatrix() {\n // then extract the params position, orientation\n // push 0,0,0 through to get a translation\n vec3.transformMat4(tmpvec1, origin, viewMatrix);\n publicAPI.computeDistance();\n const oldDist = model.distance;\n publicAPI.setPosition(tmpvec1[0], tmpvec1[1], tmpvec1[2]);\n\n // push basis vectors to get orientation\n vec3.transformMat4(tmpvec2, dopbasis, viewMatrix);\n vec3.subtract(tmpvec2, tmpvec2, tmpvec1);\n vec3.normalize(tmpvec2, tmpvec2);\n publicAPI.setDirectionOfProjection(tmpvec2[0], tmpvec2[1], tmpvec2[2]);\n vec3.transformMat4(tmpvec3, upbasis, viewMatrix);\n vec3.subtract(tmpvec3, tmpvec3, tmpvec1);\n publicAPI.setViewUp(tmpvec3[0], tmpvec3[1], tmpvec3[2]);\n\n publicAPI.setDistance(oldDist);\n }\n\n // the provided matrix should include\n // translation and orientation only\n publicAPI.computeViewParametersFromPhysicalMatrix = (mat) => {\n // get the WorldToPhysicalMatrix\n publicAPI.getWorldToPhysicalMatrix(w2pMatrix);\n\n // first convert the physical -> hmd matrix to be world -> hmd\n mat4.multiply(viewMatrix, mat, w2pMatrix);\n // invert to get hmd -> world\n mat4.invert(viewMatrix, viewMatrix);\n\n computeViewParametersFromViewMatrix();\n };\n\n publicAPI.setViewMatrix = (mat) => {\n model.viewMatrix = mat;\n if (model.viewMatrix) {\n mat4.copy(viewMatrix, model.viewMatrix);\n computeViewParametersFromViewMatrix();\n mat4.transpose(model.viewMatrix, model.viewMatrix);\n }\n };\n\n publicAPI.getViewMatrix = () => {\n if (model.viewMatrix) {\n return model.viewMatrix;\n }\n\n const result = mat4.create();\n const eye = model.position;\n const at = model.focalPoint;\n const up = model.viewUp;\n\n mat4.lookAt(\n viewMatrix,\n vec3.fromValues(eye[0], eye[1], eye[2]), // eye\n vec3.fromValues(at[0], at[1], at[2]), // at\n vec3.fromValues(up[0], up[1], up[2])\n ); // up\n\n mat4.transpose(viewMatrix, viewMatrix);\n\n mat4.copy(result, viewMatrix);\n return result;\n };\n\n publicAPI.setProjectionMatrix = (mat) => {\n model.projectionMatrix = mat;\n };\n\n publicAPI.getProjectionMatrix = (aspect, nearz, farz) => {\n const result = mat4.create();\n\n if (model.projectionMatrix) {\n vec3.set(\n tmpvec1,\n model.physicalScale,\n model.physicalScale,\n model.physicalScale\n );\n\n mat4.copy(result, model.projectionMatrix);\n mat4.scale(result, result, tmpvec1);\n mat4.transpose(result, result);\n return result;\n }\n\n mat4.identity(projectionMatrix);\n\n // FIXME: Not sure what to do about adjust z buffer here\n // adjust Z-buffer range\n // this->ProjectionTransform->AdjustZBuffer( -1, +1, nearz, farz );\n const cWidth = model.clippingRange[1] - model.clippingRange[0];\n const cRange = [\n model.clippingRange[0] + (nearz + 1) * cWidth / 2.0,\n model.clippingRange[0] + (farz + 1) * cWidth / 2.0,\n ];\n\n if (model.parallelProjection) {\n // set up a rectangular parallelipiped\n const width = model.parallelScale * aspect;\n const height = model.parallelScale;\n\n const xmin = (model.windowCenter[0] - 1.0) * width;\n const xmax = (model.windowCenter[0] + 1.0) * width;\n const ymin = (model.windowCenter[1] - 1.0) * height;\n const ymax = (model.windowCenter[1] + 1.0) * height;\n\n mat4.ortho(\n projectionMatrix,\n xmin,\n xmax,\n ymin,\n ymax,\n cRange[0],\n cRange[1]\n );\n mat4.transpose(projectionMatrix, projectionMatrix);\n } else if (model.useOffAxisProjection) {\n throw new Error('Off-Axis projection is not supported at this time');\n } else {\n const tmp = Math.tan(vtkMath.radiansFromDegrees(model.viewAngle) / 2.0);\n let width;\n let height;\n if (model.useHorizontalViewAngle === true) {\n width = model.clippingRange[0] * tmp;\n height = model.clippingRange[0] * tmp / aspect;\n } else {\n width = model.clippingRange[0] * tmp * aspect;\n height = model.clippingRange[0] * tmp;\n }\n\n const xmin = (model.windowCenter[0] - 1.0) * width;\n const xmax = (model.windowCenter[0] + 1.0) * width;\n const ymin = (model.windowCenter[1] - 1.0) * height;\n const ymax = (model.windowCenter[1] + 1.0) * height;\n const znear = cRange[0];\n const zfar = cRange[1];\n\n projectionMatrix[0] = 2.0 * znear / (xmax - xmin);\n projectionMatrix[5] = 2.0 * znear / (ymax - ymin);\n projectionMatrix[2] = (xmin + xmax) / (xmax - xmin);\n projectionMatrix[6] = (ymin + ymax) / (ymax - ymin);\n projectionMatrix[10] = -(znear + zfar) / (zfar - znear);\n projectionMatrix[14] = -1.0;\n projectionMatrix[11] = -2.0 * znear * zfar / (zfar - znear);\n projectionMatrix[15] = 0.0;\n }\n\n mat4.copy(result, projectionMatrix);\n\n return result;\n };\n\n publicAPI.getCompositeProjectionMatrix = (aspect, nearz, farz) => {\n const vMat = publicAPI.getViewMatrix();\n const pMat = publicAPI.getProjectionMatrix(aspect, nearz, farz);\n const result = mat4.create();\n mat4.multiply(result, vMat, pMat);\n return result;\n };\n\n publicAPI.getFrustumPlanes = (aspect) => {\n // Return array of 24 params (4 params for each of 6 plane equations)\n };\n\n publicAPI.getOrientation = () => {};\n\n publicAPI.getOrientationWXYZ = () => {};\n\n publicAPI.setDirectionOfProjection = (x, y, z) => {\n if (\n model.directionOfProjection[0] === x &&\n model.directionOfProjection[1] === y &&\n model.directionOfProjection[2] === z\n ) {\n return;\n }\n\n model.directionOfProjection[0] = x;\n model.directionOfProjection[1] = y;\n model.directionOfProjection[2] = z;\n\n const vec = model.directionOfProjection;\n\n // recalculate FocalPoint\n model.focalPoint[0] = model.position[0] + vec[0] * model.distance;\n model.focalPoint[1] = model.position[1] + vec[1] * model.distance;\n model.focalPoint[2] = model.position[2] + vec[2] * model.distance;\n publicAPI.computeViewPlaneNormal();\n };\n\n // used to handle convert js device orientation angles\n // when you use this method the camera will adjust to the\n // device orientation such that the physicalViewUp you set\n // in world coordinates looks up, and the physicalViewNorth\n // you set in world coorindates will (maybe) point north\n //\n // NOTE WARNING - much of the documentaiton out there on how\n // orientation works is seriously wrong. Even worse the Chrome\n // device orientation simulator is completely wrong and should\n // never be used. OMG it is so messed up.\n //\n // how it seems to work on iOS is that the device orientation\n // is specified in extrinsic angles with a alpha, beta, gamma\n // convention with axes of Z, X, Y (the code below substitutes\n // the physical coordinate system for these axes to get the right\n // modified coordinate system.\n publicAPI.setDeviceAngles = (alpha, beta, gamma, screen) => {\n const physVRight = [3];\n vtkMath.cross(model.physicalViewNorth, model.physicalViewUp, physVRight);\n\n const rotmat = mat4.create(); // phone to physical coordinates\n mat4.rotate(\n rotmat,\n rotmat,\n vtkMath.radiansFromDegrees(alpha),\n model.physicalViewUp\n );\n mat4.rotate(rotmat, rotmat, vtkMath.radiansFromDegrees(beta), physVRight);\n mat4.rotate(\n rotmat,\n rotmat,\n vtkMath.radiansFromDegrees(gamma),\n model.physicalViewNorth\n );\n\n mat4.rotate(\n rotmat,\n rotmat,\n vtkMath.radiansFromDegrees(-screen),\n model.physicalViewUp\n );\n\n const dop = vec3.fromValues(\n -model.physicalViewUp[0],\n -model.physicalViewUp[1],\n -model.physicalViewUp[2]\n );\n const vup = vec3.fromValues(\n model.physicalViewNorth[0],\n model.physicalViewNorth[1],\n model.physicalViewNorth[2]\n );\n vec3.transformMat4(dop, dop, rotmat);\n vec3.transformMat4(vup, vup, rotmat);\n\n publicAPI.setDirectionOfProjection(dop[0], dop[1], dop[2]);\n publicAPI.setViewUp(vup[0], vup[1], vup[2]);\n publicAPI.modified();\n };\n\n publicAPI.setOrientationWXYZ = (degrees, x, y, z) => {\n const quatMat = mat4.create();\n\n if (degrees !== 0.0 && (x !== 0.0 || y !== 0.0 || z !== 0.0)) {\n // convert to radians\n const angle = vtkMath.radiansFromDegrees(degrees);\n const q = quat.create();\n quat.setAxisAngle(q, [x, y, z], angle);\n quat.toMat4(q, quatMat);\n }\n\n const dop = vec3.fromValues(0.0, 0.0, -1.0);\n const newdop = vec3.create();\n vec3.transformMat4(newdop, dop, quatMat);\n\n const vup = vec3.fromValues(0.0, 1.0, 0.0);\n const newvup = vec3.create();\n vec3.transformMat4(newvup, vup, quatMat);\n\n publicAPI.setDirectionOfProjection(newdop[0], newdop[1], newdop[2]);\n publicAPI.setViewUp(newvup[0], newvup[1], newvup[2]);\n publicAPI.modified();\n };\n\n publicAPI.computeClippingRange = (bounds) => {\n let vn = null;\n let position = null;\n\n vn = model.viewPlaneNormal;\n position = model.position;\n\n const a = -vn[0];\n const b = -vn[1];\n const c = -vn[2];\n const d = -(a * position[0] + b * position[1] + c * position[2]);\n\n // Set the max near clipping plane and the min far clipping plane\n const range = [a * bounds[0] + b * bounds[2] + c * bounds[4] + d, 1e-18];\n\n // Find the closest / farthest bounding box vertex\n for (let k = 0; k < 2; k++) {\n for (let j = 0; j < 2; j++) {\n for (let i = 0; i < 2; i++) {\n const dist =\n a * bounds[i] + b * bounds[2 + j] + c * bounds[4 + k] + d;\n range[0] = dist < range[0] ? dist : range[0];\n range[1] = dist > range[1] ? dist : range[1];\n }\n }\n }\n\n return range;\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nexport const DEFAULT_VALUES = {\n position: [0, 0, 1],\n focalPoint: [0, 0, 0],\n viewUp: [0, 1, 0],\n directionOfProjection: [0, 0, -1],\n parallelProjection: false,\n useHorizontalViewAngle: false,\n viewAngle: 30,\n parallelScale: 1,\n clippingRange: [0.01, 1000.01],\n thickness: 1000,\n windowCenter: [0, 0],\n viewPlaneNormal: [0, 0, 1],\n useOffAxisProjection: false,\n screenBottomLeft: [-0.5, -0.5, -0.5],\n screenBottomRight: [0.5, -0.5, -0.5],\n screenTopRight: [0.5, 0.5, -0.5],\n freezeFocalPoint: false,\n useScissor: false,\n projectionMatrix: null,\n viewMatrix: null,\n\n // used for world to physical transformations\n physicalTranslation: [0, 0, 0],\n physicalScale: 1.0,\n physicalViewUp: [0, 1, 0],\n physicalViewNorth: [0, 0, -1],\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Build VTK API\n macro.obj(publicAPI, model);\n\n model.viewMatrix = macro.get(publicAPI, model, ['distance', 'thickness']);\n\n macro.setGet(publicAPI, model, [\n 'parallelProjection',\n 'useHorizontalViewAngle',\n 'viewAngle',\n 'parallelScale',\n 'useOffAxisProjection',\n 'freezeFocalPoint',\n 'useScissor',\n 'physicalScale',\n ]);\n\n macro.getArray(publicAPI, model, [\n 'directionOfProjection',\n 'viewPlaneNormal',\n 'position',\n 'focalPoint',\n ]);\n\n macro.setGetArray(publicAPI, model, ['clippingRange', 'windowCenter'], 2);\n\n macro.setGetArray(\n publicAPI,\n model,\n [\n 'viewUp',\n 'screenBottomLeft',\n 'screenBottomRight',\n 'screenTopRight',\n 'physicalTranslation',\n 'physicalViewUp',\n 'physicalViewNorth',\n ],\n 3\n );\n\n // Object methods\n vtkCamera(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkCamera');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/Core/Camera/index.js","import macro from 'vtk.js/Sources/macro';\nimport vtkMath from 'vtk.js/Sources/Common/Core/Math';\n\n// ----------------------------------------------------------------------------\n\nexport const LIGHT_TYPES = ['HeadLight', 'CameraLight', 'SceneLight'];\n\n// ----------------------------------------------------------------------------\n// vtkLight methods\n// ----------------------------------------------------------------------------\n\nfunction vtkLight(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkLight');\n\n publicAPI.getTransformedPosition = () => {\n if (model.transformMatrix) {\n return []; // FIXME !!!!\n }\n return [].concat(model.position);\n };\n\n publicAPI.getTransformedFocalPoint = () => {\n if (model.transformMatrix) {\n return []; // FIXME !!!!\n }\n return [].concat(model.focalPoint);\n };\n\n publicAPI.getDirection = () => {\n if (model.directionMTime < model.mtime) {\n model.direction[0] = model.focalPoint[0] - model.position[0];\n model.direction[1] = model.focalPoint[1] - model.position[1];\n model.direction[2] = model.focalPoint[2] - model.position[2];\n vtkMath.normalize(model.direction);\n model.directionMTime = model.mtime;\n }\n return model.direction;\n };\n\n publicAPI.setDirectionAngle = (elevation, azimuth) => {\n const elevationRadians = vtkMath.radiansFromDegrees(elevation);\n const azimuthRadians = vtkMath.radiansFromDegrees(azimuth);\n\n publicAPI.setPosition(\n Math.cos(elevationRadians) * Math.sin(azimuthRadians),\n Math.sin(elevationRadians),\n Math.cos(elevationRadians) * Math.cos(azimuthRadians)\n );\n\n publicAPI.setFocalPoint(0, 0, 0);\n publicAPI.setPositional(0);\n };\n\n publicAPI.setLightTypeToHeadLight = () => {\n publicAPI.setLightType('HeadLight');\n };\n\n publicAPI.setLightTypeToCameraLight = () => {\n publicAPI.setLightType('CameraLight');\n };\n\n publicAPI.setLightTypeToSceneLight = () => {\n publicAPI.setTransformMatrix(null);\n publicAPI.setLightType('SceneLight');\n };\n\n publicAPI.lightTypeIsHeadLight = () => model.lightType === 'HeadLight';\n\n publicAPI.lightTypeIsSceneLight = () => model.lightType === 'SceneLight';\n\n publicAPI.lightTypeIsCameraLight = () => model.lightType === 'CameraLight';\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n switch: true,\n intensity: 1,\n color: [1, 1, 1],\n position: [0, 0, 1],\n focalPoint: [0, 0, 0],\n positional: false,\n exponent: 1,\n coneAngle: 30,\n attenuationValues: [1, 0, 0],\n transformMatrix: null,\n lightType: 'SceneLight',\n shadowAttenuation: 1,\n direction: [0, 0, 0],\n directionMTime: 0,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Build VTK API\n macro.obj(publicAPI, model);\n macro.setGet(publicAPI, model, [\n 'intensity',\n 'switch',\n 'positional',\n 'exponent',\n 'coneAngle',\n 'transformMatrix',\n 'lightType',\n 'shadowAttenuation',\n ]);\n macro.setGetArray(\n publicAPI,\n model,\n ['color', 'position', 'focalPoint', 'attenuationValues'],\n 3\n );\n\n // Object methods\n vtkLight(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkLight');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend, LIGHT_TYPES };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/Core/Light/index.js","import macro from 'vtk.js/Sources/macro';\n\nconst { vtkErrorMacro } = macro;\n\nfunction notImplemented(method) {\n return () => vtkErrorMacro(`vtkViewport::${method} - NOT IMPLEMENTED`);\n}\n\n// ----------------------------------------------------------------------------\n// vtkViewport methods\n// ----------------------------------------------------------------------------\n\nfunction vtkViewport(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkViewport');\n\n // Public API methods\n publicAPI.getViewProps = () => model.props;\n publicAPI.hasViewProp = (prop) =>\n !!model.props.filter((item) => item === prop).length;\n publicAPI.addViewProp = (prop) => {\n if (prop && !publicAPI.hasViewProp(prop)) {\n model.props = model.props.concat(prop);\n }\n };\n\n publicAPI.removeViewProp = (prop) => {\n const newPropList = model.props.filter((item) => item !== prop);\n if (model.props.length !== newPropList.length) {\n model.props = newPropList;\n }\n };\n\n publicAPI.removeAllViewProps = () => {\n model.props = [];\n };\n\n // this method get all the props including any nested props\n publicAPI.getViewPropsWithNestedProps = () => {\n model.allprops = model.props;\n for (let index = 0; index < model.props.length; ++index) {\n const prop = model.props[index];\n if (prop.getNestedProps()) {\n model.allprops = model.allprops.concat(prop.getNestedProps());\n }\n }\n return model.allprops;\n };\n\n publicAPI.addActor2D = publicAPI.addViewProp;\n publicAPI.removeActor2D = (prop) => {\n // VTK way: model.actors2D.RemoveItem(prop);\n publicAPI.removeViewProp(prop);\n };\n\n publicAPI.getActors2D = () => {\n model.actors2D = [];\n model.props.forEach((prop) => {\n model.actors2D = model.actors2D.concat(prop.getActors2D());\n });\n return model.actors2D;\n };\n\n publicAPI.displayToView = () =>\n vtkErrorMacro('call displayToView on your view instead');\n publicAPI.viewToDisplay = () =>\n vtkErrorMacro('callviewtodisplay on your view instead');\n publicAPI.getSize = () => vtkErrorMacro('call getSize on your View instead');\n\n publicAPI.normalizedDisplayToView = (x, y, z) => {\n // first to normalized viewport\n const nvp = publicAPI.normalizedDisplayToNormalizedViewport(x, y, z);\n\n // then to view\n return publicAPI.normalizedViewportToView(nvp[0], nvp[1], nvp[2]);\n };\n\n publicAPI.normalizedDisplayToNormalizedViewport = (x, y, z) => {\n const scale = [\n model.viewport[2] - model.viewport[0],\n model.viewport[3] - model.viewport[1],\n ];\n return [\n (x - model.viewport[0]) / scale[0],\n (y - model.viewport[1]) / scale[1],\n z,\n ];\n };\n\n publicAPI.normalizedViewportToView = (x, y, z) => [\n x * 2.0 - 1.0,\n y * 2.0 - 1.0,\n z * 2.0 - 1.0,\n ];\n\n publicAPI.viewToNormalizedDisplay = (x, y, z) => {\n // first to nvp\n const nvp = publicAPI.viewToNormalizedViewport(x, y, z);\n\n // then to ndp\n return publicAPI.normalizedViewportToNormalizedDisplay(\n nvp[0],\n nvp[1],\n nvp[2]\n );\n };\n\n publicAPI.normalizedViewportToNormalizedDisplay = (x, y, z) => {\n const scale = [\n model.viewport[2] - model.viewport[0],\n model.viewport[3] - model.viewport[1],\n ];\n return [\n x * scale[0] + model.viewport[0],\n y * scale[1] + model.viewport[1],\n z,\n ];\n };\n\n publicAPI.viewToNormalizedViewport = (x, y, z) => [\n (x + 1.0) * 0.5,\n (y + 1.0) * 0.5,\n (z + 1.0) * 0.5,\n ];\n\n publicAPI.PickPropFrom = notImplemented('PickPropFrom');\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n vtkWindow: null,\n background: [0, 0, 0],\n background2: [0.2, 0.2, 0.2],\n gradientBackground: false,\n viewport: [0, 0, 1, 1],\n aspect: [1, 1],\n pixelAspect: [1, 1],\n props: [],\n actors2D: [],\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Build VTK API\n macro.obj(publicAPI, model);\n macro.event(publicAPI, model, 'event');\n\n macro.setGetArray(publicAPI, model, ['viewport'], 4);\n\n macro.setGetArray(publicAPI, model, ['background', 'background2'], 3);\n\n vtkViewport(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkViewport');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/Core/Viewport/index.js","import macro from 'vtk.js/Sources/macro';\n\n// ----------------------------------------------------------------------------\n// vtkRenderWindow methods\n// ----------------------------------------------------------------------------\n\nfunction vtkRenderWindow(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkRenderWindow');\n\n // Add renderer\n publicAPI.addRenderer = (renderer) => {\n if (publicAPI.hasRenderer(renderer)) {\n return;\n }\n renderer.setRenderWindow(publicAPI);\n model.renderers.push(renderer);\n\n // for (this->Renderers->InitTraversal(rsit);\n // (aren = this->Renderers->GetNextRenderer(rsit)); )\n // {\n // aren->SetAllocatedRenderTime\n // (1.0/(this->DesiredUpdateRate*this->Renderers->GetNumberOfItems()));\n // }\n\n publicAPI.modified();\n };\n\n // Remove renderer\n publicAPI.removeRenderer = (renderer) => {\n model.renderers = model.renderers.filter((r) => r !== renderer);\n publicAPI.modified();\n };\n\n publicAPI.hasRenderer = (ren) => model.renderers.indexOf(ren) !== -1;\n\n // Add renderer\n publicAPI.addView = (view) => {\n if (publicAPI.hasView(view)) {\n return;\n }\n view.setRenderable(publicAPI);\n model.views.push(view);\n publicAPI.modified();\n };\n\n // Remove renderer\n publicAPI.removeView = (view) => {\n model.views = model.views.filter((r) => r !== view);\n publicAPI.modified();\n };\n\n publicAPI.hasView = (view) => model.views.indexOf(view) !== -1;\n\n publicAPI.render = () => {\n if (model.interactor) {\n model.interactor.render();\n } else {\n model.views.forEach((view) => view.traverseAllPasses());\n }\n };\n\n publicAPI.getStatistics = () => {\n const results = { propCount: 0, invisiblePropCount: 0 };\n model.renderers.forEach((ren) => {\n const props = ren.getViewProps();\n props.forEach((prop) => {\n if (prop.getVisibility()) {\n results.propCount += 1;\n const mpr = prop.getMapper();\n if (mpr && mpr.getPrimitiveCount) {\n const pcount = mpr.getPrimitiveCount();\n Object.keys(pcount).forEach((keyName) => {\n if (!results[keyName]) {\n results[keyName] = 0;\n }\n results[keyName] += pcount[keyName];\n });\n }\n } else {\n results.invisiblePropCount += 1;\n }\n });\n });\n results.str = Object.keys(results)\n .map((keyName) => `${keyName}: ${results[keyName]}`)\n .join('\\n');\n\n return results;\n };\n\n publicAPI.captureImages = (format = 'image/png') => {\n setImmediate(publicAPI.render);\n return model.views\n .map(\n (view) =>\n view.captureNextImage ? view.captureNextImage(format) : undefined\n )\n .filter((i) => !!i);\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nexport const DEFAULT_VALUES = {\n renderers: [],\n views: [],\n interactor: null,\n neverRendered: true,\n numberOfLayers: 1,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Build VTK API\n macro.obj(publicAPI, model);\n macro.setGet(publicAPI, model, ['interactor', 'numberOfLayers', 'views']);\n macro.get(publicAPI, model, ['neverRendered']);\n macro.getArray(publicAPI, model, ['renderers']);\n macro.event(publicAPI, model, 'completion');\n\n // Object methods\n vtkRenderWindow(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkRenderWindow');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/Core/RenderWindow/index.js","import macro from 'vtk.js/Sources/macro';\nimport vtkInteractorStyle from 'vtk.js/Sources/Rendering/Core/InteractorStyle';\nimport vtkInteractorStyleConstants from 'vtk.js/Sources/Rendering/Core/InteractorStyle/Constants';\nimport vtkMath from 'vtk.js/Sources/Common/Core/Math';\nimport {\n Device,\n Input,\n} from 'vtk.js/Sources/Rendering/Core/RenderWindowInteractor/Constants';\n\nconst { States } = vtkInteractorStyleConstants;\n\n/* eslint-disable no-lonely-if */\n\n// ----------------------------------------------------------------------------\n// vtkInteractorStyleTrackballCamera methods\n// ----------------------------------------------------------------------------\n\nfunction vtkInteractorStyleTrackballCamera(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkInteractorStyleTrackballCamera');\n\n // Public API methods\n publicAPI.handleMouseMove = (callData) => {\n const pos = callData.position;\n const renderer = callData.pokedRenderer;\n\n switch (model.state) {\n case States.IS_ROTATE:\n publicAPI.handleMouseRotate(renderer, pos);\n publicAPI.invokeInteractionEvent({ type: 'InteractionEvent' });\n break;\n\n case States.IS_PAN:\n publicAPI.handleMousePan(renderer, pos);\n publicAPI.invokeInteractionEvent({ type: 'InteractionEvent' });\n break;\n\n case States.IS_DOLLY:\n publicAPI.handleMouseDolly(renderer, pos);\n publicAPI.invokeInteractionEvent({ type: 'InteractionEvent' });\n break;\n\n case States.IS_SPIN:\n publicAPI.handleMouseSpin(renderer, pos);\n publicAPI.invokeInteractionEvent({ type: 'InteractionEvent' });\n break;\n\n default:\n break;\n }\n\n model.previousPosition = pos;\n };\n\n //----------------------------------------------------------------------------\n publicAPI.handleButton3D = (ed) => {\n if (\n ed &&\n ed.pressed &&\n ed.device === Device.RightController &&\n ed.input === Input.TrackPad\n ) {\n publicAPI.startCameraPose();\n return;\n }\n if (\n ed &&\n !ed.pressed &&\n ed.device === Device.RightController &&\n ed.input === Input.TrackPad &&\n model.state === States.IS_CAMERA_POSE\n ) {\n publicAPI.endCameraPose();\n // return;\n }\n };\n\n publicAPI.handleMove3D = (ed) => {\n switch (model.state) {\n case States.IS_CAMERA_POSE:\n publicAPI.updateCameraPose(ed);\n break;\n default:\n }\n };\n\n publicAPI.updateCameraPose = (ed) => {\n // move the world in the direction of the\n // controller\n const camera = ed.pokedRenderer.getActiveCamera();\n const oldTrans = camera.getPhysicalTranslation();\n\n // look at the y axis to determine how fast / what direction to move\n const speed = ed.gamepad.axes[1];\n\n // 0.05 meters / frame movement\n const pscale = speed * 0.05 / camera.getPhysicalScale();\n\n // convert orientation to world coordinate direction\n const dir = camera.physicalOrientationToWorldDirection(ed.orientation);\n\n camera.setPhysicalTranslation(\n oldTrans[0] + dir[0] * pscale,\n oldTrans[1] + dir[1] * pscale,\n oldTrans[2] + dir[2] * pscale\n );\n };\n\n //----------------------------------------------------------------------------\n publicAPI.handleLeftButtonPress = (callData) => {\n const pos = callData.position;\n model.previousPosition = pos;\n\n if (callData.shiftKey) {\n if (callData.controlKey || callData.altKey) {\n publicAPI.startDolly();\n } else {\n publicAPI.startPan();\n }\n } else {\n if (callData.controlKey || callData.altKey) {\n publicAPI.startSpin();\n } else {\n publicAPI.startRotate();\n }\n }\n };\n\n //--------------------------------------------------------------------------\n publicAPI.handleLeftButtonRelease = () => {\n switch (model.state) {\n case States.IS_DOLLY:\n publicAPI.endDolly();\n break;\n case States.IS_PAN:\n publicAPI.endPan();\n break;\n case States.IS_SPIN:\n publicAPI.endSpin();\n break;\n case States.IS_ROTATE:\n publicAPI.endRotate();\n break;\n\n default:\n break;\n }\n };\n\n //----------------------------------------------------------------------------\n publicAPI.handleStartMouseWheel = (callData) => {\n publicAPI.startDolly();\n publicAPI.handleMouseWheel(callData);\n };\n\n //--------------------------------------------------------------------------\n publicAPI.handleEndMouseWheel = () => {\n publicAPI.endDolly();\n };\n\n //----------------------------------------------------------------------------\n publicAPI.handleStartPinch = (callData) => {\n model.previousScale = callData.scale;\n publicAPI.startDolly();\n };\n\n //--------------------------------------------------------------------------\n publicAPI.handleEndPinch = () => {\n publicAPI.endDolly();\n };\n\n //----------------------------------------------------------------------------\n publicAPI.handleStartRotate = (callData) => {\n model.previousRotation = callData.rotation;\n publicAPI.startRotate();\n };\n\n //--------------------------------------------------------------------------\n publicAPI.handleEndRotate = () => {\n publicAPI.endRotate();\n };\n\n //----------------------------------------------------------------------------\n publicAPI.handleStartPan = (callData) => {\n model.previousTranslation = callData.translation;\n publicAPI.startPan();\n };\n\n //--------------------------------------------------------------------------\n publicAPI.handleEndPan = () => {\n publicAPI.endPan();\n };\n\n //----------------------------------------------------------------------------\n publicAPI.handlePinch = (callData) => {\n publicAPI.dollyByFactor(\n callData.pokedRenderer,\n callData.scale / model.previousScale\n );\n model.previousScale = callData.scale;\n };\n\n //----------------------------------------------------------------------------\n publicAPI.handlePan = (callData) => {\n const camera = callData.pokedRenderer.getActiveCamera();\n\n // Calculate the focal depth since we'll be using it a lot\n let viewFocus = camera.getFocalPoint();\n\n viewFocus = publicAPI.computeWorldToDisplay(\n callData.pokedRenderer,\n viewFocus[0],\n viewFocus[1],\n viewFocus[2]\n );\n const focalDepth = viewFocus[2];\n\n const trans = callData.translation;\n const lastTrans = model.previousTranslation;\n const newPickPoint = publicAPI.computeDisplayToWorld(\n callData.pokedRenderer,\n viewFocus[0] + trans[0] - lastTrans[0],\n viewFocus[1] + trans[1] - lastTrans[1],\n focalDepth\n );\n\n // Has to recalc old mouse point since the viewport has moved,\n // so can't move it outside the loop\n const oldPickPoint = publicAPI.computeDisplayToWorld(\n callData.pokedRenderer,\n viewFocus[0],\n viewFocus[1],\n focalDepth\n );\n\n // Camera motion is reversed\n const motionVector = [];\n motionVector[0] = oldPickPoint[0] - newPickPoint[0];\n motionVector[1] = oldPickPoint[1] - newPickPoint[1];\n motionVector[2] = oldPickPoint[2] - newPickPoint[2];\n\n viewFocus = camera.getFocalPoint();\n const viewPoint = camera.getPosition();\n camera.setFocalPoint(\n motionVector[0] + viewFocus[0],\n motionVector[1] + viewFocus[1],\n motionVector[2] + viewFocus[2]\n );\n\n camera.setPosition(\n motionVector[0] + viewPoint[0],\n motionVector[1] + viewPoint[1],\n motionVector[2] + viewPoint[2]\n );\n\n if (model.interactor.getLightFollowCamera()) {\n callData.pokedRenderer.updateLightsGeometryToFollowCamera();\n }\n\n camera.orthogonalizeViewUp();\n\n model.previousTranslation = callData.translation;\n };\n\n //----------------------------------------------------------------------------\n publicAPI.handleRotate = (callData) => {\n const camera = callData.pokedRenderer.getActiveCamera();\n camera.roll(callData.rotation - model.previousRotation);\n camera.orthogonalizeViewUp();\n model.previousRotation = callData.rotation;\n };\n\n //--------------------------------------------------------------------------\n publicAPI.handleMouseRotate = (renderer, position) => {\n const rwi = model.interactor;\n\n const dx = position.x - model.previousPosition.x;\n const dy = position.y - model.previousPosition.y;\n\n const size = rwi.getView().getViewportSize(renderer);\n\n let deltaElevation = -0.1;\n let deltaAzimuth = -0.1;\n if (size[0] && size[1]) {\n deltaElevation = -20.0 / size[1];\n deltaAzimuth = -20.0 / size[0];\n }\n\n const rxf = dx * deltaAzimuth * model.motionFactor;\n const ryf = dy * deltaElevation * model.motionFactor;\n\n const camera = renderer.getActiveCamera();\n if (!Number.isNaN(rxf) && !Number.isNaN(ryf)) {\n camera.azimuth(rxf);\n camera.elevation(ryf);\n camera.orthogonalizeViewUp();\n }\n\n if (model.autoAdjustCameraClippingRange) {\n renderer.resetCameraClippingRange();\n }\n\n if (rwi.getLightFollowCamera()) {\n renderer.updateLightsGeometryToFollowCamera();\n }\n };\n\n //--------------------------------------------------------------------------\n publicAPI.handleMouseSpin = (renderer, position) => {\n const rwi = model.interactor;\n const camera = renderer.getActiveCamera();\n const center = rwi.getView().getViewportCenter(renderer);\n\n const oldAngle = vtkMath.degreesFromRadians(\n Math.atan2(\n model.previousPosition.y - center[1],\n model.previousPosition.x - center[0]\n )\n );\n const newAngle =\n vtkMath.degreesFromRadians(\n Math.atan2(position.y - center[1], position.x - center[0])\n ) - oldAngle;\n\n if (!Number.isNaN(newAngle)) {\n camera.roll(newAngle);\n camera.orthogonalizeViewUp();\n }\n };\n\n //--------------------------------------------------------------------------\n publicAPI.handleMousePan = (renderer, position) => {\n const camera = renderer.getActiveCamera();\n\n // Calculate the focal depth since we'll be using it a lot\n let viewFocus = camera.getFocalPoint();\n viewFocus = publicAPI.computeWorldToDisplay(\n renderer,\n viewFocus[0],\n viewFocus[1],\n viewFocus[2]\n );\n const focalDepth = viewFocus[2];\n\n const newPickPoint = publicAPI.computeDisplayToWorld(\n renderer,\n position.x,\n position.y,\n focalDepth\n );\n\n // Has to recalc old mouse point since the viewport has moved,\n // so can't move it outside the loop\n const oldPickPoint = publicAPI.computeDisplayToWorld(\n renderer,\n model.previousPosition.x,\n model.previousPosition.y,\n focalDepth\n );\n\n // Camera motion is reversed\n const motionVector = [];\n motionVector[0] = oldPickPoint[0] - newPickPoint[0];\n motionVector[1] = oldPickPoint[1] - newPickPoint[1];\n motionVector[2] = oldPickPoint[2] - newPickPoint[2];\n\n viewFocus = camera.getFocalPoint();\n const viewPoint = camera.getPosition();\n camera.setFocalPoint(\n motionVector[0] + viewFocus[0],\n motionVector[1] + viewFocus[1],\n motionVector[2] + viewFocus[2]\n );\n\n camera.setPosition(\n motionVector[0] + viewPoint[0],\n motionVector[1] + viewPoint[1],\n motionVector[2] + viewPoint[2]\n );\n\n if (model.interactor.getLightFollowCamera()) {\n renderer.updateLightsGeometryToFollowCamera();\n }\n };\n\n //----------------------------------------------------------------------------\n publicAPI.handleMouseDolly = (renderer, position) => {\n const dy = position.y - model.previousPosition.y;\n const rwi = model.interactor;\n const center = rwi.getView().getViewportCenter(renderer);\n const dyf = model.motionFactor * dy / center[1];\n\n publicAPI.dollyByFactor(renderer, 1.1 ** dyf);\n };\n\n //----------------------------------------------------------------------------\n publicAPI.handleMouseWheel = (callData) => {\n const dyf = 1 - callData.spinY / 10; // divide by 10 to lower the zoom factor\n publicAPI.dollyByFactor(callData.pokedRenderer, dyf);\n };\n\n //----------------------------------------------------------------------------\n publicAPI.dollyByFactor = (renderer, factor) => {\n if (Number.isNaN(factor)) {\n return;\n }\n\n const camera = renderer.getActiveCamera();\n if (camera.getParallelProjection()) {\n camera.setParallelScale(camera.getParallelScale() / factor);\n } else {\n camera.dolly(factor);\n if (model.autoAdjustCameraClippingRange) {\n renderer.resetCameraClippingRange();\n }\n }\n\n if (model.interactor.getLightFollowCamera()) {\n renderer.updateLightsGeometryToFollowCamera();\n }\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n motionFactor: 10.0,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkInteractorStyle.extend(publicAPI, model, initialValues);\n\n // Create get-set macros\n macro.setGet(publicAPI, model, ['motionFactor']);\n\n // For more macro methods, see \"Sources/macro.js\"\n\n // Object specific methods\n vtkInteractorStyleTrackballCamera(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(\n extend,\n 'vtkInteractorStyleTrackballCamera'\n);\n\n// ----------------------------------------------------------------------------\n\nexport default Object.assign({ newInstance, extend });\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Interaction/Style/InteractorStyleTrackballCamera/index.js","import macro from 'vtk.js/Sources/macro';\nimport vtkInteractorObserver from 'vtk.js/Sources/Rendering/Core/InteractorObserver';\nimport Constants from 'vtk.js/Sources/Rendering/Core/InteractorStyle/Constants';\n\nconst { States } = Constants;\n\n// ----------------------------------------------------------------------------\n// Global methods\n// ----------------------------------------------------------------------------\n\n// Add module-level functions or api that you want to expose statically via\n// the next section...\n\nconst stateNames = {\n Rotate: States.IS_ROTATE,\n Pan: States.IS_PAN,\n Spin: States.IS_SPIN,\n Dolly: States.IS_DOLLY,\n CameraPose: States.IS_CAMERA_POSE,\n WindowLevel: States.IS_WINDOW_LEVEL,\n Slice: States.IS_SLICE,\n};\n\n// ----------------------------------------------------------------------------\n// vtkInteractorStyle methods\n// ----------------------------------------------------------------------------\n\nfunction vtkInteractorStyle(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkInteractorStyle');\n\n // Public API methods\n // create bunch of Start/EndState methods\n Object.keys(stateNames).forEach((key) => {\n macro.event(publicAPI, model, `Start${key}Event`);\n publicAPI[`start${key}`] = () => {\n if (model.state !== States.IS_NONE) {\n return;\n }\n model.state = stateNames[key];\n model.interactor.requestAnimation(publicAPI);\n publicAPI.invokeStartInteractionEvent({ type: 'StartInteractionEvent' });\n publicAPI[`invokeStart${key}Event`]({ type: `Start${key}Event` });\n };\n macro.event(publicAPI, model, `End${key}Event`);\n publicAPI[`end${key}`] = () => {\n if (model.state !== stateNames[key]) {\n return;\n }\n model.state = States.IS_NONE;\n model.interactor.cancelAnimation(publicAPI);\n publicAPI.invokeEndInteractionEvent({ type: 'EndInteractionEvent' });\n publicAPI[`invokeEnd${key}Event`]({ type: `End${key}Event` });\n model.interactor.render();\n };\n });\n\n //----------------------------------------------------------------------------\n publicAPI.handleKeyPress = (callData) => {\n const rwi = model.interactor;\n let ac = null;\n switch (callData.key) {\n case 'r':\n case 'R':\n callData.pokedRenderer.resetCamera();\n rwi.render();\n break;\n\n case 'w':\n case 'W':\n ac = callData.pokedRenderer.getActors();\n ac.forEach((anActor) => {\n anActor.getProperty().setRepresentationToWireframe();\n });\n rwi.render();\n break;\n\n case 's':\n case 'S':\n ac = callData.pokedRenderer.getActors();\n ac.forEach((anActor) => {\n anActor.getProperty().setRepresentationToSurface();\n });\n rwi.render();\n break;\n\n case 'v':\n case 'V':\n ac = callData.pokedRenderer.getActors();\n ac.forEach((anActor) => {\n anActor.getProperty().setRepresentationToPoints();\n });\n rwi.render();\n break;\n\n default:\n break;\n }\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n state: States.IS_NONE,\n handleObservers: 1,\n autoAdjustCameraClippingRange: 1,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkInteractorObserver.extend(publicAPI, model, initialValues);\n\n // Object specific methods\n vtkInteractorStyle(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkInteractorStyle');\n\n// ----------------------------------------------------------------------------\n\nexport default Object.assign({ newInstance, extend }, Constants);\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/Core/InteractorStyle/index.js","import macro from 'vtk.js/Sources/macro';\nimport vtkRenderWindowInteractor from 'vtk.js/Sources/Rendering/Core/RenderWindowInteractor';\n\nconst { vtkErrorMacro } = macro;\n\n// ----------------------------------------------------------------------------\n// Global methods\n// ----------------------------------------------------------------------------\n\n//----------------------------------------------------------------------------\n// Description:\n// Transform from world to display coordinates.\nfunction computeWorldToDisplay(renderer, x, y, z) {\n const view = renderer.getRenderWindow().getViews()[0];\n return view.worldToDisplay(x, y, z, renderer);\n}\n\n//----------------------------------------------------------------------------\n// Description:\n// Transform from display to world coordinates.\nfunction computeDisplayToWorld(renderer, x, y, z) {\n const view = renderer.getRenderWindow().getViews()[0];\n return view.displayToWorld(x, y, z, renderer);\n}\n\n// ----------------------------------------------------------------------------\n// Static API\n// ----------------------------------------------------------------------------\nexport const STATIC = {\n computeWorldToDisplay,\n computeDisplayToWorld,\n};\n\n// ----------------------------------------------------------------------------\n// vtkInteractorObserver methods\n// ----------------------------------------------------------------------------\n\nfunction vtkInteractorObserver(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkInteractorObserver');\n\n //----------------------------------------------------------------------------\n function unsubscribeFromEvents() {\n while (model.subscribedEvents.length) {\n model.subscribedEvents.pop().unsubscribe();\n }\n }\n\n //----------------------------------------------------------------------------\n // Check what events we can handle and register callbacks\n function subscribeToEvents() {\n vtkRenderWindowInteractor.handledEvents.forEach((eventName) => {\n if (publicAPI[`handle${eventName}`]) {\n model.subscribedEvents.push(\n model.interactor[`on${eventName}`](\n publicAPI[`handle${eventName}`],\n model.priority\n )\n );\n }\n });\n }\n\n //----------------------------------------------------------------------------\n // Public API methods\n //----------------------------------------------------------------------------\n publicAPI.setInteractor = (i) => {\n if (i === model.interactor) {\n return;\n }\n\n unsubscribeFromEvents();\n\n model.interactor = i;\n\n if (i && model.enabled) {\n subscribeToEvents();\n }\n\n publicAPI.modified();\n };\n\n //----------------------------------------------------------------------------\n publicAPI.setEnabled = (enable) => {\n if (enable === model.enabled) {\n return;\n }\n\n unsubscribeFromEvents();\n\n if (enable) {\n if (model.interactor) {\n subscribeToEvents();\n } else {\n vtkErrorMacro(`\n The interactor must be set before subscribing to events\n `);\n }\n }\n\n model.enabled = enable;\n publicAPI.modified();\n };\n\n //----------------------------------------------------------------------------\n // Description:\n // Transform from display to world coordinates.\n publicAPI.computeDisplayToWorld = (renderer, x, y, z) => {\n if (!renderer) {\n return null;\n }\n\n return model.interactor.getView().displayToWorld(x, y, z, renderer);\n };\n\n //----------------------------------------------------------------------------\n // Description:\n // Transform from world to display coordinates.\n publicAPI.computeWorldToDisplay = (renderer, x, y, z) => {\n if (!renderer) {\n return null;\n }\n\n return model.interactor.getView().worldToDisplay(x, y, z, renderer);\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n enabled: true,\n interactor: null,\n priority: 0.0,\n subscribedEvents: [],\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Object methods\n macro.obj(publicAPI, model);\n\n macro.event(publicAPI, model, 'InteractionEvent');\n macro.event(publicAPI, model, 'StartInteractionEvent');\n macro.event(publicAPI, model, 'EndInteractionEvent');\n\n // Create get-only macros\n macro.get(publicAPI, model, ['interactor', 'enabled']);\n\n // Create get-set macros\n macro.setGet(publicAPI, model, ['priority']);\n\n // For more macro methods, see \"Sources/macro.js\"\n\n // Object specific methods\n vtkInteractorObserver(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkInteractorObserver');\n\n// ----------------------------------------------------------------------------\n\nexport default Object.assign({ newInstance, extend }, STATIC);\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/Core/InteractorObserver/index.js","import macro from 'vtk.js/Sources/macro';\nimport vtkDataArray from 'vtk.js/Sources/Common/Core/DataArray';\nimport { VtkDataTypes } from 'vtk.js/Sources/Common/Core/DataArray/Constants';\n\n// ----------------------------------------------------------------------------\n// Global methods\n// ----------------------------------------------------------------------------\n\nfunction extractCellSizes(cellArray) {\n let currentIdx = 0;\n return cellArray.filter((value, index) => {\n if (index === currentIdx) {\n currentIdx += value + 1;\n return true;\n }\n return false;\n });\n}\n\nfunction getNumberOfCells(cellArray) {\n return extractCellSizes(cellArray).length;\n}\n\n// ----------------------------------------------------------------------------\n// Static API\n// ----------------------------------------------------------------------------\n\nexport const STATIC = {\n extractCellSizes,\n getNumberOfCells,\n};\n\n// ----------------------------------------------------------------------------\n// vtkCellArray methods\n// ----------------------------------------------------------------------------\n\nfunction vtkCellArray(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkCellArray');\n\n publicAPI.getNumberOfCells = (recompute) => {\n if (model.numberOfCells !== undefined && !recompute) {\n return model.numberOfCells;\n }\n\n model.cellSizes = extractCellSizes(model.values);\n model.numberOfCells = model.cellSizes.length;\n return model.numberOfCells;\n };\n\n publicAPI.getCellSizes = (recompute) => {\n if (model.cellSizes !== undefined && !recompute) {\n return model.cellSizes;\n }\n\n model.cellSizes = extractCellSizes(model.values);\n return model.cellSizes;\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n empty: true,\n numberOfComponents: 1,\n dataType: VtkDataTypes.UNSIGNED_INT,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n vtkDataArray.extend(publicAPI, model, initialValues);\n vtkCellArray(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkCellArray');\n\n// ----------------------------------------------------------------------------\n\nexport default Object.assign({ newInstance, extend }, STATIC);\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Common/Core/CellArray/index.js","import vtk from 'vtk.js/Sources/vtk';\nimport macro from 'vtk.js/Sources/macro';\nimport vtkDataSet from 'vtk.js/Sources/Common/DataModel/DataSet';\nimport vtkPoints from 'vtk.js/Sources/Common/Core/Points';\n\n// ----------------------------------------------------------------------------\n// Global methods\n// ----------------------------------------------------------------------------\n\n// ----------------------------------------------------------------------------\n// vtkPointSet methods\n// ----------------------------------------------------------------------------\n\nfunction vtkPointSet(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkPointSet');\n\n // Create empty points\n if (!model.points) {\n model.points = vtkPoints.newInstance();\n } else {\n model.points = vtk(model.points);\n }\n\n publicAPI.getBounds = () => model.points.getBounds();\n\n publicAPI.computeBounds = () => {\n publicAPI.getBounds();\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n // points: null,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkDataSet.extend(publicAPI, model, initialValues);\n macro.setGet(publicAPI, model, ['points']);\n\n // Object specific methods\n vtkPointSet(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkPointSet');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Common/DataModel/PointSet/index.js","// For vtk factory\nimport 'vtk.js/Sources/Common/DataModel/ImageData';\nimport 'vtk.js/Sources/Common/DataModel/PolyData';\n\nimport vtk from 'vtk.js/Sources/vtk';\nimport macro from 'vtk.js/Sources/macro';\nimport DataAccessHelper from 'vtk.js/Sources/IO/Core/DataAccessHelper';\nimport vtkDataArray from 'vtk.js/Sources/Common/Core/DataArray';\nimport vtkStringArray from 'vtk.js/Sources/Common/Core/StringArray';\n\nconst fieldDataLocations = ['pointData', 'cellData', 'fieldData'];\nconst HTTP_DATA_ACCESS = DataAccessHelper.get('http');\nconst ARRAY_BUILDERS = {\n vtkDataArray,\n vtkStringArray,\n};\n\n// ----------------------------------------------------------------------------\n// Global methods\n// ----------------------------------------------------------------------------\n\nconst GEOMETRY_ARRAYS = {\n vtkPolyData(dataset) {\n const arrayToDownload = [];\n arrayToDownload.push(dataset.points);\n ['verts', 'lines', 'polys', 'strips'].forEach((cellName) => {\n if (dataset[cellName]) {\n arrayToDownload.push(dataset[cellName]);\n }\n });\n\n return arrayToDownload;\n },\n\n vtkImageData(dataset) {\n return [];\n },\n\n vtkUnstructuredGrid(dataset) {\n const arrayToDownload = [];\n arrayToDownload.push(dataset.points);\n arrayToDownload.push(dataset.cells);\n arrayToDownload.push(dataset.cellTypes);\n\n return arrayToDownload;\n },\n\n vtkRectilinearGrid(dataset) {\n const arrayToDownload = [];\n arrayToDownload.push(dataset.xCoordinates);\n arrayToDownload.push(dataset.yCoordinates);\n arrayToDownload.push(dataset.zCoordinates);\n\n return arrayToDownload;\n },\n};\n\nfunction processDataSet(\n publicAPI,\n model,\n dataset,\n fetchArray,\n resolve,\n reject,\n loadData\n) {\n const enable = model.enableArray;\n\n // Generate array list\n model.arrays = [];\n\n fieldDataLocations.forEach((location) => {\n if (dataset[location]) {\n dataset[location].arrays.map((i) => i.data).forEach((array) => {\n model.arrays.push({\n name: array.name,\n enable,\n location,\n array,\n registration: array.ref.registration || 'addArray',\n });\n });\n\n // Reset data arrays\n dataset[location].arrays = [];\n }\n });\n\n // Fetch geometry arrays\n const pendingPromises = [];\n const { progressCallback } = model;\n const compression = model.fetchGzip ? 'gz' : null;\n GEOMETRY_ARRAYS[dataset.vtkClass](dataset).forEach((array) => {\n pendingPromises.push(fetchArray(array, { compression, progressCallback }));\n });\n\n function success() {\n model.dataset = vtk(dataset);\n if (!loadData) {\n model.output[0] = model.dataset;\n resolve(publicAPI, model.output[0]);\n } else {\n publicAPI.loadData().then(() => {\n model.output[0] = model.dataset;\n resolve(publicAPI, model.output[0]);\n });\n }\n }\n\n // Wait for all geometry array to be fetched\n if (pendingPromises.length) {\n Promise.all(pendingPromises).then(success, (err) => {\n reject(err);\n });\n } else {\n success();\n }\n}\n\n// ----------------------------------------------------------------------------\n// vtkHttpDataSetReader methods\n// ----------------------------------------------------------------------------\n\nfunction vtkHttpDataSetReader(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkHttpDataSetReader');\n\n // Empty output by default\n model.output[0] = vtk({ vtkClass: 'vtkPolyData' });\n\n // Create default dataAccessHelper if not available\n if (!model.dataAccessHelper) {\n model.dataAccessHelper = HTTP_DATA_ACCESS;\n }\n\n // Internal method to fetch Array\n function fetchArray(array, options = {}) {\n return model.dataAccessHelper.fetchArray(\n publicAPI,\n model.baseURL,\n array,\n options\n );\n }\n\n // Fetch dataset (metadata)\n publicAPI.updateMetadata = (loadData = false) => {\n if (model.compression === 'zip') {\n return new Promise((resolve, reject) => {\n HTTP_DATA_ACCESS.fetchBinary(model.url).then(\n (zipContent) => {\n model.dataAccessHelper = DataAccessHelper.get('zip', {\n zipContent,\n callback: (zip) => {\n model.baseURL = '';\n model.dataAccessHelper.fetchJSON(publicAPI, 'index.json').then(\n (dataset) => {\n processDataSet(\n publicAPI,\n model,\n dataset,\n fetchArray,\n resolve,\n reject,\n loadData\n );\n },\n (error) => {\n reject(error);\n }\n );\n },\n });\n },\n (error) => {\n reject(error);\n }\n );\n });\n }\n\n return new Promise((resolve, reject) => {\n model.dataAccessHelper.fetchJSON(publicAPI, model.url).then(\n (dataset) => {\n processDataSet(\n publicAPI,\n model,\n dataset,\n fetchArray,\n resolve,\n reject,\n loadData\n );\n },\n (error) => {\n reject(error);\n }\n );\n });\n };\n\n // Set DataSet url\n publicAPI.setUrl = (url, options = {}) => {\n if (url.indexOf('index.json') === -1 && !options.fullpath) {\n model.baseURL = url;\n model.url = `${url}/index.json`;\n } else {\n model.url = url;\n\n // Remove the file in the URL\n const path = url.split('/');\n path.pop();\n model.baseURL = path.join('/');\n }\n\n model.compression = options.compression;\n\n // Fetch metadata\n return publicAPI.updateMetadata(!!options.loadData);\n };\n\n // Fetch the actual data arrays\n publicAPI.loadData = () => {\n const datasetObj = model.dataset;\n const arrayToFecth = model.arrays\n .filter((array) => array.enable)\n .filter((array) => array.array.ref)\n .map((array) => array.array);\n\n return new Promise((resolve, reject) => {\n const error = (e) => {\n reject(e);\n };\n\n const processNext = () => {\n if (arrayToFecth.length) {\n const { progressCallback } = model;\n const compression = model.fetchGzip ? 'gz' : null;\n fetchArray(arrayToFecth.pop(), {\n compression,\n progressCallback,\n }).then(processNext, error);\n } else if (datasetObj) {\n // Perform array registration\n model.arrays\n .filter((array) => array.registration)\n .forEach((metaArray) => {\n const newArray = ARRAY_BUILDERS[\n metaArray.array.vtkClass\n ].newInstance(metaArray.array);\n datasetObj[`get${macro.capitalize(metaArray.location)}`]()[\n metaArray.registration\n ](newArray);\n delete metaArray.registration;\n });\n datasetObj.modified();\n resolve(publicAPI, datasetObj);\n }\n };\n\n // Start processing queue\n processNext();\n });\n };\n\n publicAPI.requestData = (inData, outData) => {\n // do nothing loadData will eventually load up the data\n };\n\n // Toggle arrays to load\n publicAPI.enableArray = (location, name, enable = true) => {\n const activeArray = model.arrays.filter(\n (array) => array.name === name && array.location === location\n );\n if (activeArray.length === 1) {\n activeArray[0].enable = enable;\n }\n };\n\n // return Busy state\n publicAPI.isBusy = () => !!model.requestCount;\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n enableArray: true,\n fetchGzip: false,\n arrays: [],\n url: null,\n baseURL: null,\n requestCount: 0,\n // dataAccessHelper: null,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Build VTK API\n macro.obj(publicAPI, model);\n macro.get(publicAPI, model, [\n 'enableArray',\n 'fetchGzip',\n 'url',\n 'baseURL',\n 'dataAccessHelper',\n ]);\n macro.set(publicAPI, model, ['dataAccessHelper', 'progressCallback']);\n macro.getArray(publicAPI, model, ['arrays']);\n macro.algo(publicAPI, model, 0, 1);\n macro.event(publicAPI, model, 'busy');\n\n // Object methods\n vtkHttpDataSetReader(publicAPI, model);\n\n // Make sure we can destructuring progressCallback from model\n if (model.progressCallback === undefined) {\n model.progressCallback = null;\n }\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkHttpDataSetReader');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/IO/Core/HttpDataSetReader/index.js","import HtmlDataAccessHelper from './HtmlDataAccessHelper';\nimport HttpDataAccessHelper from './HttpDataAccessHelper';\nimport JSZipDataAccessHelper from './JSZipDataAccessHelper';\n\nconst TYPE_MAPPING = {\n http: (options) => HttpDataAccessHelper,\n zip: (options) => JSZipDataAccessHelper.create(options),\n html: (options) => HtmlDataAccessHelper,\n};\n\nfunction get(type = 'http', options = {}) {\n return TYPE_MAPPING[type](options);\n}\n\nexport default {\n get,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/IO/Core/DataAccessHelper/index.js","import { toByteArray } from 'base64-js';\nimport pako from 'pako';\n\nimport macro from 'vtk.js/Sources/macro';\nimport Endian from 'vtk.js/Sources/Common/Core/Endian';\nimport { DataTypeByteSize } from 'vtk.js/Sources/Common/Core/DataArray/Constants';\n\nconst { vtkErrorMacro, vtkDebugMacro } = macro;\n\nlet requestCount = 0;\n\nfunction getContent(url) {\n const el = document.querySelector(`.webResource[data-url=\"${url}\"]`);\n return el ? el.innerHTML : null;\n}\n\nfunction removeLeadingSlash(str) {\n return str[0] === '/' ? str.substr(1) : str;\n}\n\nfunction fetchText(instance = {}, url, options = {}) {\n return new Promise((resolve, reject) => {\n const txt = getContent(url);\n if (txt === null) {\n reject(new Error(`No such text ${url}`));\n } else {\n resolve(txt);\n }\n });\n}\n\nfunction fetchJSON(instance = {}, url, options = {}) {\n return new Promise((resolve, reject) => {\n const txt = getContent(removeLeadingSlash(url));\n if (txt === null) {\n reject(new Error(`No such JSON ${url}`));\n } else {\n resolve(JSON.parse(txt));\n }\n });\n}\n\nfunction fetchArray(instance = {}, baseURL, array, options = {}) {\n return new Promise((resolve, reject) => {\n const url = removeLeadingSlash(\n [\n baseURL,\n array.ref.basepath,\n options.compression ? `${array.ref.id}.gz` : array.ref.id,\n ].join('/')\n );\n\n const txt = getContent(url);\n if (txt === null) {\n reject(new Error(`No such array ${url}`));\n } else {\n if (array.dataType === 'string') {\n let bText = atob(txt);\n if (options.compression) {\n bText = pako.inflate(bText, { to: 'string' });\n }\n array.values = JSON.parse(bText);\n } else {\n const uint8array = toByteArray(txt);\n\n array.buffer = new ArrayBuffer(uint8array.length);\n\n // copy uint8array to buffer\n const view = new Uint8Array(array.buffer);\n view.set(uint8array);\n\n if (options.compression) {\n if (array.dataType === 'string' || array.dataType === 'JSON') {\n array.buffer = pako.inflate(new Uint8Array(array.buffer), {\n to: 'string',\n });\n } else {\n array.buffer = pako.inflate(new Uint8Array(array.buffer)).buffer;\n }\n }\n\n if (array.ref.encode === 'JSON') {\n array.values = JSON.parse(array.buffer);\n } else {\n if (Endian.ENDIANNESS !== array.ref.encode && Endian.ENDIANNESS) {\n // Need to swap bytes\n vtkDebugMacro(`Swap bytes of ${array.name}`);\n Endian.swapBytes(array.buffer, DataTypeByteSize[array.dataType]);\n }\n\n array.values = new window[array.dataType](array.buffer);\n }\n\n if (array.values.length !== array.size) {\n vtkErrorMacro(\n `Error in FetchArray: ${\n array.name\n } does not have the proper array size. Got ${\n array.values.length\n }, instead of ${array.size}`\n );\n }\n }\n\n // Done with the ref and work\n delete array.ref;\n if (--requestCount === 0 && instance.invokeBusy) {\n instance.invokeBusy(false);\n }\n if (instance.modified) {\n instance.modified();\n }\n\n resolve(array);\n }\n });\n}\n\n// Export fetch methods\nexport default {\n fetchJSON,\n fetchText,\n fetchArray,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/IO/Core/DataAccessHelper/HtmlDataAccessHelper.js","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction placeHoldersCount (b64) {\n var len = b64.length\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // the number of equal signs (place holders)\n // if there are two placeholders, than the two characters before it\n // represent one byte\n // if there is only one, then the three characters before it represent 2 bytes\n // this is just a cheap hack to not do indexOf twice\n return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0\n}\n\nfunction byteLength (b64) {\n // base64 is 4/3 + up to two characters of the original data\n return (b64.length * 3 / 4) - placeHoldersCount(b64)\n}\n\nfunction toByteArray (b64) {\n var i, l, tmp, placeHolders, arr\n var len = b64.length\n placeHolders = placeHoldersCount(b64)\n\n arr = new Arr((len * 3 / 4) - placeHolders)\n\n // if there are placeholders, only get up to the last complete 4 chars\n l = placeHolders > 0 ? len - 4 : len\n\n var L = 0\n\n for (i = 0; i < l; i += 4) {\n tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]\n arr[L++] = (tmp >> 16) & 0xFF\n arr[L++] = (tmp >> 8) & 0xFF\n arr[L++] = tmp & 0xFF\n }\n\n if (placeHolders === 2) {\n tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[L++] = tmp & 0xFF\n } else if (placeHolders === 1) {\n tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[L++] = (tmp >> 8) & 0xFF\n arr[L++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var output = ''\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n output += lookup[tmp >> 2]\n output += lookup[(tmp << 4) & 0x3F]\n output += '=='\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + (uint8[len - 1])\n output += lookup[tmp >> 10]\n output += lookup[(tmp >> 4) & 0x3F]\n output += lookup[(tmp << 2) & 0x3F]\n output += '='\n }\n\n parts.push(output)\n\n return parts.join('')\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/node_modules/base64-js/index.js","'use strict';\n\n\nvar zlib_deflate = require('./zlib/deflate');\nvar utils = require('./utils/common');\nvar strings = require('./utils/strings');\nvar msg = require('./zlib/messages');\nvar ZStream = require('./zlib/zstream');\n\nvar toString = Object.prototype.toString;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nvar Z_NO_FLUSH = 0;\nvar Z_FINISH = 4;\n\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\nvar Z_SYNC_FLUSH = 2;\n\nvar Z_DEFAULT_COMPRESSION = -1;\n\nvar Z_DEFAULT_STRATEGY = 0;\n\nvar Z_DEFLATED = 8;\n\n/* ===========================================================================*/\n\n\n/**\n * class Deflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[deflate]],\n * [[deflateRaw]] and [[gzip]].\n **/\n\n/* internal\n * Deflate.chunks -> Array\n *\n * Chunks of output data, if [[Deflate#onData]] not overridden.\n **/\n\n/**\n * Deflate.result -> Uint8Array|Array\n *\n * Compressed result, generated by default [[Deflate#onData]]\n * and [[Deflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Deflate#push]] with `Z_FINISH` / `true` param) or if you\n * push a chunk with explicit flush (call [[Deflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n/**\n * Deflate.err -> Number\n *\n * Error code after deflate finished. 0 (Z_OK) on success.\n * You will not need it in real life, because deflate errors\n * are possible only on wrong options or bad `onData` / `onEnd`\n * custom handlers.\n **/\n\n/**\n * Deflate.msg -> String\n *\n * Error message, if [[Deflate.err]] != 0\n **/\n\n\n/**\n * new Deflate(options)\n * - options (Object): zlib deflate options.\n *\n * Creates new deflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `level`\n * - `windowBits`\n * - `memLevel`\n * - `strategy`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw deflate\n * - `gzip` (Boolean) - create gzip wrapper\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n * (each char code [0..255])\n * - `header` (Object) - custom header for gzip\n * - `text` (Boolean) - true if compressed data believed to be text\n * - `time` (Number) - modification time, unix timestamp\n * - `os` (Number) - operation system code\n * - `extra` (Array) - array of bytes with extra data (max 65536)\n * - `name` (String) - file name (binary string)\n * - `comment` (String) - comment (binary string)\n * - `hcrc` (Boolean) - true if header crc should be added\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var deflate = new pako.Deflate({ level: 3});\n *\n * deflate.push(chunk1, false);\n * deflate.push(chunk2, true); // true -> last chunk\n *\n * if (deflate.err) { throw new Error(deflate.err); }\n *\n * console.log(deflate.result);\n * ```\n **/\nfunction Deflate(options) {\n if (!(this instanceof Deflate)) return new Deflate(options);\n\n this.options = utils.assign({\n level: Z_DEFAULT_COMPRESSION,\n method: Z_DEFLATED,\n chunkSize: 16384,\n windowBits: 15,\n memLevel: 8,\n strategy: Z_DEFAULT_STRATEGY,\n to: ''\n }, options || {});\n\n var opt = this.options;\n\n if (opt.raw && (opt.windowBits > 0)) {\n opt.windowBits = -opt.windowBits;\n }\n\n else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) {\n opt.windowBits += 16;\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new ZStream();\n this.strm.avail_out = 0;\n\n var status = zlib_deflate.deflateInit2(\n this.strm,\n opt.level,\n opt.method,\n opt.windowBits,\n opt.memLevel,\n opt.strategy\n );\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n if (opt.header) {\n zlib_deflate.deflateSetHeader(this.strm, opt.header);\n }\n\n if (opt.dictionary) {\n var dict;\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n // If we need to compress text, change encoding to utf8.\n dict = strings.string2buf(opt.dictionary);\n } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n dict = new Uint8Array(opt.dictionary);\n } else {\n dict = opt.dictionary;\n }\n\n status = zlib_deflate.deflateSetDictionary(this.strm, dict);\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n this._dict_set = true;\n }\n}\n\n/**\n * Deflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data. Strings will be\n * converted to utf8 byte sequence.\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with\n * new compressed chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Deflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the compression context.\n *\n * On fail call [[Deflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * array format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\nDeflate.prototype.push = function (data, mode) {\n var strm = this.strm;\n var chunkSize = this.options.chunkSize;\n var status, _mode;\n\n if (this.ended) { return false; }\n\n _mode = (mode === ~~mode) ? mode : ((mode === true) ? Z_FINISH : Z_NO_FLUSH);\n\n // Convert data if needed\n if (typeof data === 'string') {\n // If we need to compress text, change encoding to utf8.\n strm.input = strings.string2buf(data);\n } else if (toString.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n do {\n if (strm.avail_out === 0) {\n strm.output = new utils.Buf8(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n status = zlib_deflate.deflate(strm, _mode); /* no bad return value */\n\n if (status !== Z_STREAM_END && status !== Z_OK) {\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n if (strm.avail_out === 0 || (strm.avail_in === 0 && (_mode === Z_FINISH || _mode === Z_SYNC_FLUSH))) {\n if (this.options.to === 'string') {\n this.onData(strings.buf2binstring(utils.shrinkBuf(strm.output, strm.next_out)));\n } else {\n this.onData(utils.shrinkBuf(strm.output, strm.next_out));\n }\n }\n } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== Z_STREAM_END);\n\n // Finalize on the last chunk.\n if (_mode === Z_FINISH) {\n status = zlib_deflate.deflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === Z_OK;\n }\n\n // callback interim results if Z_SYNC_FLUSH.\n if (_mode === Z_SYNC_FLUSH) {\n this.onEnd(Z_OK);\n strm.avail_out = 0;\n return true;\n }\n\n return true;\n};\n\n\n/**\n * Deflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): output data. Type of array depends\n * on js engine support. When string output requested, each chunk\n * will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nDeflate.prototype.onData = function (chunk) {\n this.chunks.push(chunk);\n};\n\n\n/**\n * Deflate#onEnd(status) -> Void\n * - status (Number): deflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called once after you tell deflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nDeflate.prototype.onEnd = function (status) {\n // On success - join\n if (status === Z_OK) {\n if (this.options.to === 'string') {\n this.result = this.chunks.join('');\n } else {\n this.result = utils.flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n};\n\n\n/**\n * deflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * Compress `data` with deflate algorithm and `options`.\n *\n * Supported options are:\n *\n * - level\n * - windowBits\n * - memLevel\n * - strategy\n * - dictionary\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n * (each char code [0..255])\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , data = Uint8Array([1,2,3,4,5,6,7,8,9]);\n *\n * console.log(pako.deflate(data));\n * ```\n **/\nfunction deflate(input, options) {\n var deflator = new Deflate(options);\n\n deflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (deflator.err) { throw deflator.msg || msg[deflator.err]; }\n\n return deflator.result;\n}\n\n\n/**\n * deflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction deflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return deflate(input, options);\n}\n\n\n/**\n * gzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but create gzip wrapper instead of\n * deflate one.\n **/\nfunction gzip(input, options) {\n options = options || {};\n options.gzip = true;\n return deflate(input, options);\n}\n\n\nexports.Deflate = Deflate;\nexports.deflate = deflate;\nexports.deflateRaw = deflateRaw;\nexports.gzip = gzip;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/pako/lib/deflate.js\n// module id = 607\n// module chunks = 1","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = require('../utils/common');\nvar trees = require('./trees');\nvar adler32 = require('./adler32');\nvar crc32 = require('./crc32');\nvar msg = require('./messages');\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\nvar Z_NO_FLUSH = 0;\nvar Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH = 2;\nvar Z_FULL_FLUSH = 3;\nvar Z_FINISH = 4;\nvar Z_BLOCK = 5;\n//var Z_TREES = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\n//var Z_NEED_DICT = 2;\n//var Z_ERRNO = -1;\nvar Z_STREAM_ERROR = -2;\nvar Z_DATA_ERROR = -3;\n//var Z_MEM_ERROR = -4;\nvar Z_BUF_ERROR = -5;\n//var Z_VERSION_ERROR = -6;\n\n\n/* compression levels */\n//var Z_NO_COMPRESSION = 0;\n//var Z_BEST_SPEED = 1;\n//var Z_BEST_COMPRESSION = 9;\nvar Z_DEFAULT_COMPRESSION = -1;\n\n\nvar Z_FILTERED = 1;\nvar Z_HUFFMAN_ONLY = 2;\nvar Z_RLE = 3;\nvar Z_FIXED = 4;\nvar Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\n//var Z_BINARY = 0;\n//var Z_TEXT = 1;\n//var Z_ASCII = 1; // = Z_TEXT\nvar Z_UNKNOWN = 2;\n\n\n/* The deflate compression method */\nvar Z_DEFLATED = 8;\n\n/*============================================================================*/\n\n\nvar MAX_MEM_LEVEL = 9;\n/* Maximum value for memLevel in deflateInit2 */\nvar MAX_WBITS = 15;\n/* 32K LZ77 window */\nvar DEF_MEM_LEVEL = 8;\n\n\nvar LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\nvar LITERALS = 256;\n/* number of literal bytes 0..255 */\nvar L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\nvar D_CODES = 30;\n/* number of distance codes */\nvar BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\nvar HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\nvar MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar MIN_MATCH = 3;\nvar MAX_MATCH = 258;\nvar MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);\n\nvar PRESET_DICT = 0x20;\n\nvar INIT_STATE = 42;\nvar EXTRA_STATE = 69;\nvar NAME_STATE = 73;\nvar COMMENT_STATE = 91;\nvar HCRC_STATE = 103;\nvar BUSY_STATE = 113;\nvar FINISH_STATE = 666;\n\nvar BS_NEED_MORE = 1; /* block not completed, need more input or more output */\nvar BS_BLOCK_DONE = 2; /* block flush performed */\nvar BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */\nvar BS_FINISH_DONE = 4; /* finish done, accept no more input or output */\n\nvar OS_CODE = 0x03; // Unix :) . Don't detect, use this default.\n\nfunction err(strm, errorCode) {\n strm.msg = msg[errorCode];\n return errorCode;\n}\n\nfunction rank(f) {\n return ((f) << 1) - ((f) > 4 ? 9 : 0);\n}\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n\n/* =========================================================================\n * Flush as much pending output as possible. All deflate() output goes\n * through this function so some applications may wish to modify it\n * to avoid allocating a large strm->output buffer and copying into it.\n * (See also read_buf()).\n */\nfunction flush_pending(strm) {\n var s = strm.state;\n\n //_tr_flush_bits(s);\n var len = s.pending;\n if (len > strm.avail_out) {\n len = strm.avail_out;\n }\n if (len === 0) { return; }\n\n utils.arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out);\n strm.next_out += len;\n s.pending_out += len;\n strm.total_out += len;\n strm.avail_out -= len;\n s.pending -= len;\n if (s.pending === 0) {\n s.pending_out = 0;\n }\n}\n\n\nfunction flush_block_only(s, last) {\n trees._tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);\n s.block_start = s.strstart;\n flush_pending(s.strm);\n}\n\n\nfunction put_byte(s, b) {\n s.pending_buf[s.pending++] = b;\n}\n\n\n/* =========================================================================\n * Put a short in the pending buffer. The 16-bit value is put in MSB order.\n * IN assertion: the stream state is correct and there is enough room in\n * pending_buf.\n */\nfunction putShortMSB(s, b) {\n// put_byte(s, (Byte)(b >> 8));\n// put_byte(s, (Byte)(b & 0xff));\n s.pending_buf[s.pending++] = (b >>> 8) & 0xff;\n s.pending_buf[s.pending++] = b & 0xff;\n}\n\n\n/* ===========================================================================\n * Read a new buffer from the current input stream, update the adler32\n * and total number of bytes read. All deflate() input goes through\n * this function so some applications may wish to modify it to avoid\n * allocating a large strm->input buffer and copying from it.\n * (See also flush_pending()).\n */\nfunction read_buf(strm, buf, start, size) {\n var len = strm.avail_in;\n\n if (len > size) { len = size; }\n if (len === 0) { return 0; }\n\n strm.avail_in -= len;\n\n // zmemcpy(buf, strm->next_in, len);\n utils.arraySet(buf, strm.input, strm.next_in, len, start);\n if (strm.state.wrap === 1) {\n strm.adler = adler32(strm.adler, buf, len, start);\n }\n\n else if (strm.state.wrap === 2) {\n strm.adler = crc32(strm.adler, buf, len, start);\n }\n\n strm.next_in += len;\n strm.total_in += len;\n\n return len;\n}\n\n\n/* ===========================================================================\n * Set match_start to the longest match starting at the given string and\n * return its length. Matches shorter or equal to prev_length are discarded,\n * in which case the result is equal to prev_length and match_start is\n * garbage.\n * IN assertions: cur_match is the head of the hash chain for the current\n * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1\n * OUT assertion: the match length is not greater than s->lookahead.\n */\nfunction longest_match(s, cur_match) {\n var chain_length = s.max_chain_length; /* max hash chain length */\n var scan = s.strstart; /* current string */\n var match; /* matched string */\n var len; /* length of current match */\n var best_len = s.prev_length; /* best match length so far */\n var nice_match = s.nice_match; /* stop if match long enough */\n var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?\n s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;\n\n var _win = s.window; // shortcut\n\n var wmask = s.w_mask;\n var prev = s.prev;\n\n /* Stop when cur_match becomes <= limit. To simplify the code,\n * we prevent matches with the string of window index 0.\n */\n\n var strend = s.strstart + MAX_MATCH;\n var scan_end1 = _win[scan + best_len - 1];\n var scan_end = _win[scan + best_len];\n\n /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.\n * It is easy to get rid of this optimization if necessary.\n */\n // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, \"Code too clever\");\n\n /* Do not waste too much time if we already have a good match: */\n if (s.prev_length >= s.good_match) {\n chain_length >>= 2;\n }\n /* Do not look for matches beyond the end of the input. This is necessary\n * to make deflate deterministic.\n */\n if (nice_match > s.lookahead) { nice_match = s.lookahead; }\n\n // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, \"need lookahead\");\n\n do {\n // Assert(cur_match < s->strstart, \"no future\");\n match = cur_match;\n\n /* Skip to next match if the match length cannot increase\n * or if the match length is less than 2. Note that the checks below\n * for insufficient lookahead only occur occasionally for performance\n * reasons. Therefore uninitialized memory will be accessed, and\n * conditional jumps will be made that depend on those values.\n * However the length of the match is limited to the lookahead, so\n * the output of deflate is not affected by the uninitialized values.\n */\n\n if (_win[match + best_len] !== scan_end ||\n _win[match + best_len - 1] !== scan_end1 ||\n _win[match] !== _win[scan] ||\n _win[++match] !== _win[scan + 1]) {\n continue;\n }\n\n /* The check at best_len-1 can be removed because it will be made\n * again later. (This heuristic is not always a win.)\n * It is not necessary to compare scan[2] and match[2] since they\n * are always equal when the other bytes match, given that\n * the hash keys are equal and that HASH_BITS >= 8.\n */\n scan += 2;\n match++;\n // Assert(*scan == *match, \"match[2]?\");\n\n /* We check for insufficient lookahead only every 8th comparison;\n * the 256th check will be made at strstart+258.\n */\n do {\n /*jshint noempty:false*/\n } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n scan < strend);\n\n // Assert(scan <= s->window+(unsigned)(s->window_size-1), \"wild scan\");\n\n len = MAX_MATCH - (strend - scan);\n scan = strend - MAX_MATCH;\n\n if (len > best_len) {\n s.match_start = cur_match;\n best_len = len;\n if (len >= nice_match) {\n break;\n }\n scan_end1 = _win[scan + best_len - 1];\n scan_end = _win[scan + best_len];\n }\n } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);\n\n if (best_len <= s.lookahead) {\n return best_len;\n }\n return s.lookahead;\n}\n\n\n/* ===========================================================================\n * Fill the window when the lookahead becomes insufficient.\n * Updates strstart and lookahead.\n *\n * IN assertion: lookahead < MIN_LOOKAHEAD\n * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD\n * At least one byte has been read, or avail_in == 0; reads are\n * performed for at least two bytes (required for the zip translate_eol\n * option -- not supported here).\n */\nfunction fill_window(s) {\n var _w_size = s.w_size;\n var p, n, m, more, str;\n\n //Assert(s->lookahead < MIN_LOOKAHEAD, \"already enough lookahead\");\n\n do {\n more = s.window_size - s.lookahead - s.strstart;\n\n // JS ints have 32 bit, block below not needed\n /* Deal with !@#$% 64K limit: */\n //if (sizeof(int) <= 2) {\n // if (more == 0 && s->strstart == 0 && s->lookahead == 0) {\n // more = wsize;\n //\n // } else if (more == (unsigned)(-1)) {\n // /* Very unlikely, but possible on 16 bit machine if\n // * strstart == 0 && lookahead == 1 (input done a byte at time)\n // */\n // more--;\n // }\n //}\n\n\n /* If the window is almost full and there is insufficient lookahead,\n * move the upper half to the lower one to make room in the upper half.\n */\n if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {\n\n utils.arraySet(s.window, s.window, _w_size, _w_size, 0);\n s.match_start -= _w_size;\n s.strstart -= _w_size;\n /* we now have strstart >= MAX_DIST */\n s.block_start -= _w_size;\n\n /* Slide the hash table (could be avoided with 32 bit values\n at the expense of memory usage). We slide even when level == 0\n to keep the hash table consistent if we switch back to level > 0\n later. (Using level 0 permanently is not an optimal usage of\n zlib, so we don't care about this pathological case.)\n */\n\n n = s.hash_size;\n p = n;\n do {\n m = s.head[--p];\n s.head[p] = (m >= _w_size ? m - _w_size : 0);\n } while (--n);\n\n n = _w_size;\n p = n;\n do {\n m = s.prev[--p];\n s.prev[p] = (m >= _w_size ? m - _w_size : 0);\n /* If n is not on any hash chain, prev[n] is garbage but\n * its value will never be used.\n */\n } while (--n);\n\n more += _w_size;\n }\n if (s.strm.avail_in === 0) {\n break;\n }\n\n /* If there was no sliding:\n * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&\n * more == window_size - lookahead - strstart\n * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)\n * => more >= window_size - 2*WSIZE + 2\n * In the BIG_MEM or MMAP case (not yet supported),\n * window_size == input_size + MIN_LOOKAHEAD &&\n * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.\n * Otherwise, window_size == 2*WSIZE so more >= 2.\n * If there was sliding, more >= WSIZE. So in all cases, more >= 2.\n */\n //Assert(more >= 2, \"more < 2\");\n n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);\n s.lookahead += n;\n\n /* Initialize the hash value now that we have some input: */\n if (s.lookahead + s.insert >= MIN_MATCH) {\n str = s.strstart - s.insert;\n s.ins_h = s.window[str];\n\n /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask;\n//#if MIN_MATCH != 3\n// Call update_hash() MIN_MATCH-3 more times\n//#endif\n while (s.insert) {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = str;\n str++;\n s.insert--;\n if (s.lookahead + s.insert < MIN_MATCH) {\n break;\n }\n }\n }\n /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,\n * but this is not important since only literal bytes will be emitted.\n */\n\n } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);\n\n /* If the WIN_INIT bytes after the end of the current data have never been\n * written, then zero those bytes in order to avoid memory check reports of\n * the use of uninitialized (or uninitialised as Julian writes) bytes by\n * the longest match routines. Update the high water mark for the next\n * time through here. WIN_INIT is set to MAX_MATCH since the longest match\n * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.\n */\n// if (s.high_water < s.window_size) {\n// var curr = s.strstart + s.lookahead;\n// var init = 0;\n//\n// if (s.high_water < curr) {\n// /* Previous high water mark below current data -- zero WIN_INIT\n// * bytes or up to end of window, whichever is less.\n// */\n// init = s.window_size - curr;\n// if (init > WIN_INIT)\n// init = WIN_INIT;\n// zmemzero(s->window + curr, (unsigned)init);\n// s->high_water = curr + init;\n// }\n// else if (s->high_water < (ulg)curr + WIN_INIT) {\n// /* High water mark at or above current data, but below current data\n// * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up\n// * to end of window, whichever is less.\n// */\n// init = (ulg)curr + WIN_INIT - s->high_water;\n// if (init > s->window_size - s->high_water)\n// init = s->window_size - s->high_water;\n// zmemzero(s->window + s->high_water, (unsigned)init);\n// s->high_water += init;\n// }\n// }\n//\n// Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,\n// \"not enough room for search\");\n}\n\n/* ===========================================================================\n * Copy without compression as much as possible from the input stream, return\n * the current block state.\n * This function does not insert new strings in the dictionary since\n * uncompressible data is probably not useful. This function is used\n * only for the level=0 compression option.\n * NOTE: this function should be optimized to avoid extra copying from\n * window to pending_buf.\n */\nfunction deflate_stored(s, flush) {\n /* Stored blocks are limited to 0xffff bytes, pending_buf is limited\n * to pending_buf_size, and each stored block has a 5 byte header:\n */\n var max_block_size = 0xffff;\n\n if (max_block_size > s.pending_buf_size - 5) {\n max_block_size = s.pending_buf_size - 5;\n }\n\n /* Copy as much as possible from input to output: */\n for (;;) {\n /* Fill the window as much as possible: */\n if (s.lookahead <= 1) {\n\n //Assert(s->strstart < s->w_size+MAX_DIST(s) ||\n // s->block_start >= (long)s->w_size, \"slide too late\");\n// if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||\n// s.block_start >= s.w_size)) {\n// throw new Error(\"slide too late\");\n// }\n\n fill_window(s);\n if (s.lookahead === 0 && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n\n if (s.lookahead === 0) {\n break;\n }\n /* flush the current block */\n }\n //Assert(s->block_start >= 0L, \"block gone\");\n// if (s.block_start < 0) throw new Error(\"block gone\");\n\n s.strstart += s.lookahead;\n s.lookahead = 0;\n\n /* Emit a stored block if pending_buf will be full: */\n var max_start = s.block_start + max_block_size;\n\n if (s.strstart === 0 || s.strstart >= max_start) {\n /* strstart == 0 is possible when wraparound on 16-bit machine */\n s.lookahead = s.strstart - max_start;\n s.strstart = max_start;\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n\n\n }\n /* Flush if we may have to slide, otherwise block_start may become\n * negative and the data will be gone:\n */\n if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n\n s.insert = 0;\n\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n\n if (s.strstart > s.block_start) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_NEED_MORE;\n}\n\n/* ===========================================================================\n * Compress as much as possible from the input stream, return the current\n * block state.\n * This function does not perform lazy evaluation of matches and inserts\n * new strings in the dictionary only for unmatched strings or for short\n * matches. It is used only for the fast compression options.\n */\nfunction deflate_fast(s, flush) {\n var hash_head; /* head of the hash chain */\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) {\n break; /* flush the current block */\n }\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n * At this point we have always match_length < MIN_MATCH\n */\n if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n }\n if (s.match_length >= MIN_MATCH) {\n // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only\n\n /*** _tr_tally_dist(s, s.strstart - s.match_start,\n s.match_length - MIN_MATCH, bflush); ***/\n bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n\n /* Insert new strings in the hash table only if the match length\n * is not too large. This saves time but degrades compression.\n */\n if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) {\n s.match_length--; /* string at strstart already in table */\n do {\n s.strstart++;\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n /* strstart never exceeds WSIZE-MAX_MATCH, so there are\n * always MIN_MATCH bytes ahead.\n */\n } while (--s.match_length !== 0);\n s.strstart++;\n } else\n {\n s.strstart += s.match_length;\n s.match_length = 0;\n s.ins_h = s.window[s.strstart];\n /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask;\n\n//#if MIN_MATCH != 3\n// Call UPDATE_HASH() MIN_MATCH-3 more times\n//#endif\n /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not\n * matter since it will be recomputed at next deflate call.\n */\n }\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s.window[s.strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1);\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * Same as above, but achieves better compression. We use a lazy\n * evaluation for matches: a match is finally adopted only if there is\n * no better match at the next window position.\n */\nfunction deflate_slow(s, flush) {\n var hash_head; /* head of hash chain */\n var bflush; /* set if current block must be flushed */\n\n var max_insert;\n\n /* Process the input block. */\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n */\n s.prev_length = s.match_length;\n s.prev_match = s.match_start;\n s.match_length = MIN_MATCH - 1;\n\n if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&\n s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n\n if (s.match_length <= 5 &&\n (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {\n\n /* If prev_match is also MIN_MATCH, match_start is garbage\n * but we will ignore the current match anyway.\n */\n s.match_length = MIN_MATCH - 1;\n }\n }\n /* If there was a match at the previous step and the current\n * match is not better, output the previous match:\n */\n if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {\n max_insert = s.strstart + s.lookahead - MIN_MATCH;\n /* Do not insert strings in hash table beyond this. */\n\n //check_match(s, s.strstart-1, s.prev_match, s.prev_length);\n\n /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,\n s.prev_length - MIN_MATCH, bflush);***/\n bflush = trees._tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);\n /* Insert in hash table all strings up to the end of the match.\n * strstart-1 and strstart are already inserted. If there is not\n * enough lookahead, the last two strings are not inserted in\n * the hash table.\n */\n s.lookahead -= s.prev_length - 1;\n s.prev_length -= 2;\n do {\n if (++s.strstart <= max_insert) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n } while (--s.prev_length !== 0);\n s.match_available = 0;\n s.match_length = MIN_MATCH - 1;\n s.strstart++;\n\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n } else if (s.match_available) {\n /* If there was no match at the previous position, output a\n * single literal. If there was a match but the current match\n * is longer, truncate the previous match to a single literal.\n */\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n\n if (bflush) {\n /*** FLUSH_BLOCK_ONLY(s, 0) ***/\n flush_block_only(s, false);\n /***/\n }\n s.strstart++;\n s.lookahead--;\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n } else {\n /* There is no previous match to compare with, wait for\n * the next step to decide.\n */\n s.match_available = 1;\n s.strstart++;\n s.lookahead--;\n }\n }\n //Assert (flush != Z_NO_FLUSH, \"no flush?\");\n if (s.match_available) {\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n\n s.match_available = 0;\n }\n s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_BLOCK_DONE;\n}\n\n\n/* ===========================================================================\n * For Z_RLE, simply look for runs of bytes, generate matches only of distance\n * one. Do not maintain a hash table. (It will be regenerated if this run of\n * deflate switches away from Z_RLE.)\n */\nfunction deflate_rle(s, flush) {\n var bflush; /* set if current block must be flushed */\n var prev; /* byte at distance one to match */\n var scan, strend; /* scan goes up to strend for length of run */\n\n var _win = s.window;\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the longest run, plus one for the unrolled loop.\n */\n if (s.lookahead <= MAX_MATCH) {\n fill_window(s);\n if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* See how many times the previous byte repeats */\n s.match_length = 0;\n if (s.lookahead >= MIN_MATCH && s.strstart > 0) {\n scan = s.strstart - 1;\n prev = _win[scan];\n if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {\n strend = s.strstart + MAX_MATCH;\n do {\n /*jshint noempty:false*/\n } while (prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n scan < strend);\n s.match_length = MAX_MATCH - (strend - scan);\n if (s.match_length > s.lookahead) {\n s.match_length = s.lookahead;\n }\n }\n //Assert(scan <= s->window+(uInt)(s->window_size-1), \"wild scan\");\n }\n\n /* Emit match if have run of MIN_MATCH or longer, else emit literal */\n if (s.match_length >= MIN_MATCH) {\n //check_match(s, s.strstart, s.strstart - 1, s.match_length);\n\n /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/\n bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n s.strstart += s.match_length;\n s.match_length = 0;\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table.\n * (It will be regenerated if this run of deflate switches away from Huffman.)\n */\nfunction deflate_huff(s, flush) {\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we have a literal to write. */\n if (s.lookahead === 0) {\n fill_window(s);\n if (s.lookahead === 0) {\n if (flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n break; /* flush the current block */\n }\n }\n\n /* Output a literal byte */\n s.match_length = 0;\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n s.lookahead--;\n s.strstart++;\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* Values for max_lazy_match, good_match and max_chain_length, depending on\n * the desired pack level (0..9). The values given below have been tuned to\n * exclude worst case performance for pathological files. Better values may be\n * found for specific files.\n */\nfunction Config(good_length, max_lazy, nice_length, max_chain, func) {\n this.good_length = good_length;\n this.max_lazy = max_lazy;\n this.nice_length = nice_length;\n this.max_chain = max_chain;\n this.func = func;\n}\n\nvar configuration_table;\n\nconfiguration_table = [\n /* good lazy nice chain */\n new Config(0, 0, 0, 0, deflate_stored), /* 0 store only */\n new Config(4, 4, 8, 4, deflate_fast), /* 1 max speed, no lazy matches */\n new Config(4, 5, 16, 8, deflate_fast), /* 2 */\n new Config(4, 6, 32, 32, deflate_fast), /* 3 */\n\n new Config(4, 4, 16, 16, deflate_slow), /* 4 lazy matches */\n new Config(8, 16, 32, 32, deflate_slow), /* 5 */\n new Config(8, 16, 128, 128, deflate_slow), /* 6 */\n new Config(8, 32, 128, 256, deflate_slow), /* 7 */\n new Config(32, 128, 258, 1024, deflate_slow), /* 8 */\n new Config(32, 258, 258, 4096, deflate_slow) /* 9 max compression */\n];\n\n\n/* ===========================================================================\n * Initialize the \"longest match\" routines for a new zlib stream\n */\nfunction lm_init(s) {\n s.window_size = 2 * s.w_size;\n\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n\n /* Set the default configuration parameters:\n */\n s.max_lazy_match = configuration_table[s.level].max_lazy;\n s.good_match = configuration_table[s.level].good_length;\n s.nice_match = configuration_table[s.level].nice_length;\n s.max_chain_length = configuration_table[s.level].max_chain;\n\n s.strstart = 0;\n s.block_start = 0;\n s.lookahead = 0;\n s.insert = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n s.ins_h = 0;\n}\n\n\nfunction DeflateState() {\n this.strm = null; /* pointer back to this zlib stream */\n this.status = 0; /* as the name implies */\n this.pending_buf = null; /* output still pending */\n this.pending_buf_size = 0; /* size of pending_buf */\n this.pending_out = 0; /* next pending byte to output to the stream */\n this.pending = 0; /* nb of bytes in the pending buffer */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.gzhead = null; /* gzip header information to write */\n this.gzindex = 0; /* where in extra, name, or comment */\n this.method = Z_DEFLATED; /* can only be DEFLATED */\n this.last_flush = -1; /* value of flush param for previous deflate call */\n\n this.w_size = 0; /* LZ77 window size (32K by default) */\n this.w_bits = 0; /* log2(w_size) (8..16) */\n this.w_mask = 0; /* w_size - 1 */\n\n this.window = null;\n /* Sliding window. Input bytes are read into the second half of the window,\n * and move to the first half later to keep a dictionary of at least wSize\n * bytes. With this organization, matches are limited to a distance of\n * wSize-MAX_MATCH bytes, but this ensures that IO is always\n * performed with a length multiple of the block size.\n */\n\n this.window_size = 0;\n /* Actual size of window: 2*wSize, except when the user input buffer\n * is directly used as sliding window.\n */\n\n this.prev = null;\n /* Link to older string with same hash index. To limit the size of this\n * array to 64K, this link is maintained only for the last 32K strings.\n * An index in this array is thus a window index modulo 32K.\n */\n\n this.head = null; /* Heads of the hash chains or NIL. */\n\n this.ins_h = 0; /* hash index of string to be inserted */\n this.hash_size = 0; /* number of elements in hash table */\n this.hash_bits = 0; /* log2(hash_size) */\n this.hash_mask = 0; /* hash_size-1 */\n\n this.hash_shift = 0;\n /* Number of bits by which ins_h must be shifted at each input\n * step. It must be such that after MIN_MATCH steps, the oldest\n * byte no longer takes part in the hash key, that is:\n * hash_shift * MIN_MATCH >= hash_bits\n */\n\n this.block_start = 0;\n /* Window position at the beginning of the current output block. Gets\n * negative when the window is moved backwards.\n */\n\n this.match_length = 0; /* length of best match */\n this.prev_match = 0; /* previous match */\n this.match_available = 0; /* set if previous match exists */\n this.strstart = 0; /* start of string to insert */\n this.match_start = 0; /* start of matching string */\n this.lookahead = 0; /* number of valid bytes ahead in window */\n\n this.prev_length = 0;\n /* Length of the best match at previous step. Matches not greater than this\n * are discarded. This is used in the lazy match evaluation.\n */\n\n this.max_chain_length = 0;\n /* To speed up deflation, hash chains are never searched beyond this\n * length. A higher limit improves compression ratio but degrades the\n * speed.\n */\n\n this.max_lazy_match = 0;\n /* Attempt to find a better match only when the current match is strictly\n * smaller than this value. This mechanism is used only for compression\n * levels >= 4.\n */\n // That's alias to max_lazy_match, don't use directly\n //this.max_insert_length = 0;\n /* Insert new strings in the hash table only if the match length is not\n * greater than this length. This saves time but degrades compression.\n * max_insert_length is used only for compression levels <= 3.\n */\n\n this.level = 0; /* compression level (1..9) */\n this.strategy = 0; /* favor or force Huffman coding*/\n\n this.good_match = 0;\n /* Use a faster search when the previous match is longer than this */\n\n this.nice_match = 0; /* Stop searching when current match exceeds this */\n\n /* used by trees.c: */\n\n /* Didn't use ct_data typedef below to suppress compiler warning */\n\n // struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */\n // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */\n // struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */\n\n // Use flat array of DOUBLE size, with interleaved fata,\n // because JS does not support effective\n this.dyn_ltree = new utils.Buf16(HEAP_SIZE * 2);\n this.dyn_dtree = new utils.Buf16((2 * D_CODES + 1) * 2);\n this.bl_tree = new utils.Buf16((2 * BL_CODES + 1) * 2);\n zero(this.dyn_ltree);\n zero(this.dyn_dtree);\n zero(this.bl_tree);\n\n this.l_desc = null; /* desc. for literal tree */\n this.d_desc = null; /* desc. for distance tree */\n this.bl_desc = null; /* desc. for bit length tree */\n\n //ush bl_count[MAX_BITS+1];\n this.bl_count = new utils.Buf16(MAX_BITS + 1);\n /* number of codes at each bit length for an optimal tree */\n\n //int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */\n this.heap = new utils.Buf16(2 * L_CODES + 1); /* heap used to build the Huffman trees */\n zero(this.heap);\n\n this.heap_len = 0; /* number of elements in the heap */\n this.heap_max = 0; /* element of largest frequency */\n /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.\n * The same heap array is used to build all trees.\n */\n\n this.depth = new utils.Buf16(2 * L_CODES + 1); //uch depth[2*L_CODES+1];\n zero(this.depth);\n /* Depth of each subtree used as tie breaker for trees of equal frequency\n */\n\n this.l_buf = 0; /* buffer index for literals or lengths */\n\n this.lit_bufsize = 0;\n /* Size of match buffer for literals/lengths. There are 4 reasons for\n * limiting lit_bufsize to 64K:\n * - frequencies can be kept in 16 bit counters\n * - if compression is not successful for the first block, all input\n * data is still in the window so we can still emit a stored block even\n * when input comes from standard input. (This can also be done for\n * all blocks if lit_bufsize is not greater than 32K.)\n * - if compression is not successful for a file smaller than 64K, we can\n * even emit a stored file instead of a stored block (saving 5 bytes).\n * This is applicable only for zip (not gzip or zlib).\n * - creating new Huffman trees less frequently may not provide fast\n * adaptation to changes in the input data statistics. (Take for\n * example a binary file with poorly compressible code followed by\n * a highly compressible string table.) Smaller buffer sizes give\n * fast adaptation but have of course the overhead of transmitting\n * trees more frequently.\n * - I can't count above 4\n */\n\n this.last_lit = 0; /* running index in l_buf */\n\n this.d_buf = 0;\n /* Buffer index for distances. To simplify the code, d_buf and l_buf have\n * the same number of elements. To use different lengths, an extra flag\n * array would be necessary.\n */\n\n this.opt_len = 0; /* bit length of current block with optimal trees */\n this.static_len = 0; /* bit length of current block with static trees */\n this.matches = 0; /* number of string matches in current block */\n this.insert = 0; /* bytes at end of window left to insert */\n\n\n this.bi_buf = 0;\n /* Output buffer. bits are inserted starting at the bottom (least\n * significant bits).\n */\n this.bi_valid = 0;\n /* Number of valid bits in bi_buf. All bits above the last valid bit\n * are always zero.\n */\n\n // Used for window memory init. We safely ignore it for JS. That makes\n // sense only for pointers and memory check tools.\n //this.high_water = 0;\n /* High water mark offset in window for initialized bytes -- bytes above\n * this are set to zero in order to avoid memory check warnings when\n * longest match routines access bytes past the input. This is then\n * updated to the new high water mark.\n */\n}\n\n\nfunction deflateResetKeep(strm) {\n var s;\n\n if (!strm || !strm.state) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.total_in = strm.total_out = 0;\n strm.data_type = Z_UNKNOWN;\n\n s = strm.state;\n s.pending = 0;\n s.pending_out = 0;\n\n if (s.wrap < 0) {\n s.wrap = -s.wrap;\n /* was made negative by deflate(..., Z_FINISH); */\n }\n s.status = (s.wrap ? INIT_STATE : BUSY_STATE);\n strm.adler = (s.wrap === 2) ?\n 0 // crc32(0, Z_NULL, 0)\n :\n 1; // adler32(0, Z_NULL, 0)\n s.last_flush = Z_NO_FLUSH;\n trees._tr_init(s);\n return Z_OK;\n}\n\n\nfunction deflateReset(strm) {\n var ret = deflateResetKeep(strm);\n if (ret === Z_OK) {\n lm_init(strm.state);\n }\n return ret;\n}\n\n\nfunction deflateSetHeader(strm, head) {\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; }\n strm.state.gzhead = head;\n return Z_OK;\n}\n\n\nfunction deflateInit2(strm, level, method, windowBits, memLevel, strategy) {\n if (!strm) { // === Z_NULL\n return Z_STREAM_ERROR;\n }\n var wrap = 1;\n\n if (level === Z_DEFAULT_COMPRESSION) {\n level = 6;\n }\n\n if (windowBits < 0) { /* suppress zlib wrapper */\n wrap = 0;\n windowBits = -windowBits;\n }\n\n else if (windowBits > 15) {\n wrap = 2; /* write gzip wrapper instead */\n windowBits -= 16;\n }\n\n\n if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||\n windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||\n strategy < 0 || strategy > Z_FIXED) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n\n if (windowBits === 8) {\n windowBits = 9;\n }\n /* until 256-byte window bug fixed */\n\n var s = new DeflateState();\n\n strm.state = s;\n s.strm = strm;\n\n s.wrap = wrap;\n s.gzhead = null;\n s.w_bits = windowBits;\n s.w_size = 1 << s.w_bits;\n s.w_mask = s.w_size - 1;\n\n s.hash_bits = memLevel + 7;\n s.hash_size = 1 << s.hash_bits;\n s.hash_mask = s.hash_size - 1;\n s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);\n\n s.window = new utils.Buf8(s.w_size * 2);\n s.head = new utils.Buf16(s.hash_size);\n s.prev = new utils.Buf16(s.w_size);\n\n // Don't need mem init magic for JS.\n //s.high_water = 0; /* nothing written to s->window yet */\n\n s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */\n\n s.pending_buf_size = s.lit_bufsize * 4;\n\n //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);\n //s->pending_buf = (uchf *) overlay;\n s.pending_buf = new utils.Buf8(s.pending_buf_size);\n\n // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)\n //s->d_buf = overlay + s->lit_bufsize/sizeof(ush);\n s.d_buf = 1 * s.lit_bufsize;\n\n //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;\n s.l_buf = (1 + 2) * s.lit_bufsize;\n\n s.level = level;\n s.strategy = strategy;\n s.method = method;\n\n return deflateReset(strm);\n}\n\nfunction deflateInit(strm, level) {\n return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY);\n}\n\n\nfunction deflate(strm, flush) {\n var old_flush, s;\n var beg, val; // for gzip header write only\n\n if (!strm || !strm.state ||\n flush > Z_BLOCK || flush < 0) {\n return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;\n }\n\n s = strm.state;\n\n if (!strm.output ||\n (!strm.input && strm.avail_in !== 0) ||\n (s.status === FINISH_STATE && flush !== Z_FINISH)) {\n return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);\n }\n\n s.strm = strm; /* just in case */\n old_flush = s.last_flush;\n s.last_flush = flush;\n\n /* Write the header */\n if (s.status === INIT_STATE) {\n\n if (s.wrap === 2) { // GZIP header\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n put_byte(s, 31);\n put_byte(s, 139);\n put_byte(s, 8);\n if (!s.gzhead) { // s->gzhead == Z_NULL\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, OS_CODE);\n s.status = BUSY_STATE;\n }\n else {\n put_byte(s, (s.gzhead.text ? 1 : 0) +\n (s.gzhead.hcrc ? 2 : 0) +\n (!s.gzhead.extra ? 0 : 4) +\n (!s.gzhead.name ? 0 : 8) +\n (!s.gzhead.comment ? 0 : 16)\n );\n put_byte(s, s.gzhead.time & 0xff);\n put_byte(s, (s.gzhead.time >> 8) & 0xff);\n put_byte(s, (s.gzhead.time >> 16) & 0xff);\n put_byte(s, (s.gzhead.time >> 24) & 0xff);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, s.gzhead.os & 0xff);\n if (s.gzhead.extra && s.gzhead.extra.length) {\n put_byte(s, s.gzhead.extra.length & 0xff);\n put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);\n }\n if (s.gzhead.hcrc) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);\n }\n s.gzindex = 0;\n s.status = EXTRA_STATE;\n }\n }\n else // DEFLATE header\n {\n var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;\n var level_flags = -1;\n\n if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {\n level_flags = 0;\n } else if (s.level < 6) {\n level_flags = 1;\n } else if (s.level === 6) {\n level_flags = 2;\n } else {\n level_flags = 3;\n }\n header |= (level_flags << 6);\n if (s.strstart !== 0) { header |= PRESET_DICT; }\n header += 31 - (header % 31);\n\n s.status = BUSY_STATE;\n putShortMSB(s, header);\n\n /* Save the adler32 of the preset dictionary: */\n if (s.strstart !== 0) {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n strm.adler = 1; // adler32(0L, Z_NULL, 0);\n }\n }\n\n//#ifdef GZIP\n if (s.status === EXTRA_STATE) {\n if (s.gzhead.extra/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n\n while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n break;\n }\n }\n put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);\n s.gzindex++;\n }\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (s.gzindex === s.gzhead.extra.length) {\n s.gzindex = 0;\n s.status = NAME_STATE;\n }\n }\n else {\n s.status = NAME_STATE;\n }\n }\n if (s.status === NAME_STATE) {\n if (s.gzhead.name/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.name.length) {\n val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.gzindex = 0;\n s.status = COMMENT_STATE;\n }\n }\n else {\n s.status = COMMENT_STATE;\n }\n }\n if (s.status === COMMENT_STATE) {\n if (s.gzhead.comment/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.comment.length) {\n val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.status = HCRC_STATE;\n }\n }\n else {\n s.status = HCRC_STATE;\n }\n }\n if (s.status === HCRC_STATE) {\n if (s.gzhead.hcrc) {\n if (s.pending + 2 > s.pending_buf_size) {\n flush_pending(strm);\n }\n if (s.pending + 2 <= s.pending_buf_size) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n s.status = BUSY_STATE;\n }\n }\n else {\n s.status = BUSY_STATE;\n }\n }\n//#endif\n\n /* Flush as much pending output as possible */\n if (s.pending !== 0) {\n flush_pending(strm);\n if (strm.avail_out === 0) {\n /* Since avail_out is 0, deflate will be called again with\n * more output space, but possibly with both pending and\n * avail_in equal to zero. There won't be anything to do,\n * but this is not an error situation so make sure we\n * return OK instead of BUF_ERROR at next call of deflate:\n */\n s.last_flush = -1;\n return Z_OK;\n }\n\n /* Make sure there is something to do and avoid duplicate consecutive\n * flushes. For repeated and useless calls with Z_FINISH, we keep\n * returning Z_STREAM_END instead of Z_BUF_ERROR.\n */\n } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&\n flush !== Z_FINISH) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* User must not provide more input after the first FINISH: */\n if (s.status === FINISH_STATE && strm.avail_in !== 0) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* Start a new block or continue the current one.\n */\n if (strm.avail_in !== 0 || s.lookahead !== 0 ||\n (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {\n var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :\n (s.strategy === Z_RLE ? deflate_rle(s, flush) :\n configuration_table[s.level].func(s, flush));\n\n if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {\n s.status = FINISH_STATE;\n }\n if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {\n if (strm.avail_out === 0) {\n s.last_flush = -1;\n /* avoid BUF_ERROR next call, see above */\n }\n return Z_OK;\n /* If flush != Z_NO_FLUSH && avail_out == 0, the next call\n * of deflate should use the same flush parameter to make sure\n * that the flush is complete. So we don't have to output an\n * empty block here, this will be done at next call. This also\n * ensures that for a very small output buffer, we emit at most\n * one empty block.\n */\n }\n if (bstate === BS_BLOCK_DONE) {\n if (flush === Z_PARTIAL_FLUSH) {\n trees._tr_align(s);\n }\n else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */\n\n trees._tr_stored_block(s, 0, 0, false);\n /* For a full flush, this empty block will be recognized\n * as a special marker by inflate_sync().\n */\n if (flush === Z_FULL_FLUSH) {\n /*** CLEAR_HASH(s); ***/ /* forget history */\n zero(s.head); // Fill with NIL (= 0);\n\n if (s.lookahead === 0) {\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n }\n }\n flush_pending(strm);\n if (strm.avail_out === 0) {\n s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */\n return Z_OK;\n }\n }\n }\n //Assert(strm->avail_out > 0, \"bug2\");\n //if (strm.avail_out <= 0) { throw new Error(\"bug2\");}\n\n if (flush !== Z_FINISH) { return Z_OK; }\n if (s.wrap <= 0) { return Z_STREAM_END; }\n\n /* Write the trailer */\n if (s.wrap === 2) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n put_byte(s, (strm.adler >> 16) & 0xff);\n put_byte(s, (strm.adler >> 24) & 0xff);\n put_byte(s, strm.total_in & 0xff);\n put_byte(s, (strm.total_in >> 8) & 0xff);\n put_byte(s, (strm.total_in >> 16) & 0xff);\n put_byte(s, (strm.total_in >> 24) & 0xff);\n }\n else\n {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n\n flush_pending(strm);\n /* If avail_out is zero, the application will call deflate again\n * to flush the rest.\n */\n if (s.wrap > 0) { s.wrap = -s.wrap; }\n /* write the trailer only once! */\n return s.pending !== 0 ? Z_OK : Z_STREAM_END;\n}\n\nfunction deflateEnd(strm) {\n var status;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n status = strm.state.status;\n if (status !== INIT_STATE &&\n status !== EXTRA_STATE &&\n status !== NAME_STATE &&\n status !== COMMENT_STATE &&\n status !== HCRC_STATE &&\n status !== BUSY_STATE &&\n status !== FINISH_STATE\n ) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.state = null;\n\n return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;\n}\n\n\n/* =========================================================================\n * Initializes the compression dictionary from the given byte\n * sequence without producing any compressed output.\n */\nfunction deflateSetDictionary(strm, dictionary) {\n var dictLength = dictionary.length;\n\n var s;\n var str, n;\n var wrap;\n var avail;\n var next;\n var input;\n var tmpDict;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n s = strm.state;\n wrap = s.wrap;\n\n if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {\n return Z_STREAM_ERROR;\n }\n\n /* when using zlib wrappers, compute Adler-32 for provided dictionary */\n if (wrap === 1) {\n /* adler32(strm->adler, dictionary, dictLength); */\n strm.adler = adler32(strm.adler, dictionary, dictLength, 0);\n }\n\n s.wrap = 0; /* avoid computing Adler-32 in read_buf */\n\n /* if dictionary would fill window, just replace the history */\n if (dictLength >= s.w_size) {\n if (wrap === 0) { /* already empty otherwise */\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n /* use the tail */\n // dictionary = dictionary.slice(dictLength - s.w_size);\n tmpDict = new utils.Buf8(s.w_size);\n utils.arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0);\n dictionary = tmpDict;\n dictLength = s.w_size;\n }\n /* insert dictionary into window and hash */\n avail = strm.avail_in;\n next = strm.next_in;\n input = strm.input;\n strm.avail_in = dictLength;\n strm.next_in = 0;\n strm.input = dictionary;\n fill_window(s);\n while (s.lookahead >= MIN_MATCH) {\n str = s.strstart;\n n = s.lookahead - (MIN_MATCH - 1);\n do {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n\n s.head[s.ins_h] = str;\n str++;\n } while (--n);\n s.strstart = str;\n s.lookahead = MIN_MATCH - 1;\n fill_window(s);\n }\n s.strstart += s.lookahead;\n s.block_start = s.strstart;\n s.insert = s.lookahead;\n s.lookahead = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n strm.next_in = next;\n strm.input = input;\n strm.avail_in = avail;\n s.wrap = wrap;\n return Z_OK;\n}\n\n\nexports.deflateInit = deflateInit;\nexports.deflateInit2 = deflateInit2;\nexports.deflateReset = deflateReset;\nexports.deflateResetKeep = deflateResetKeep;\nexports.deflateSetHeader = deflateSetHeader;\nexports.deflate = deflate;\nexports.deflateEnd = deflateEnd;\nexports.deflateSetDictionary = deflateSetDictionary;\nexports.deflateInfo = 'pako deflate (from Nodeca project)';\n\n/* Not implemented\nexports.deflateBound = deflateBound;\nexports.deflateCopy = deflateCopy;\nexports.deflateParams = deflateParams;\nexports.deflatePending = deflatePending;\nexports.deflatePrime = deflatePrime;\nexports.deflateTune = deflateTune;\n*/\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/pako/lib/zlib/deflate.js\n// module id = 608\n// module chunks = 1","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = require('../utils/common');\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n//var Z_FILTERED = 1;\n//var Z_HUFFMAN_ONLY = 2;\n//var Z_RLE = 3;\nvar Z_FIXED = 4;\n//var Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\nvar Z_BINARY = 0;\nvar Z_TEXT = 1;\n//var Z_ASCII = 1; // = Z_TEXT\nvar Z_UNKNOWN = 2;\n\n/*============================================================================*/\n\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n// From zutil.h\n\nvar STORED_BLOCK = 0;\nvar STATIC_TREES = 1;\nvar DYN_TREES = 2;\n/* The three kinds of block type */\n\nvar MIN_MATCH = 3;\nvar MAX_MATCH = 258;\n/* The minimum and maximum match lengths */\n\n// From deflate.h\n/* ===========================================================================\n * Internal compression state.\n */\n\nvar LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\n\nvar LITERALS = 256;\n/* number of literal bytes 0..255 */\n\nvar L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\n\nvar D_CODES = 30;\n/* number of distance codes */\n\nvar BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\n\nvar HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\n\nvar MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar Buf_size = 16;\n/* size of bit buffer in bi_buf */\n\n\n/* ===========================================================================\n * Constants\n */\n\nvar MAX_BL_BITS = 7;\n/* Bit length codes must not exceed MAX_BL_BITS bits */\n\nvar END_BLOCK = 256;\n/* end of block literal code */\n\nvar REP_3_6 = 16;\n/* repeat previous bit length 3-6 times (2 bits of repeat count) */\n\nvar REPZ_3_10 = 17;\n/* repeat a zero length 3-10 times (3 bits of repeat count) */\n\nvar REPZ_11_138 = 18;\n/* repeat a zero length 11-138 times (7 bits of repeat count) */\n\n/* eslint-disable comma-spacing,array-bracket-spacing */\nvar extra_lbits = /* extra bits for each length code */\n [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];\n\nvar extra_dbits = /* extra bits for each distance code */\n [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];\n\nvar extra_blbits = /* extra bits for each bit length code */\n [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];\n\nvar bl_order =\n [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];\n/* eslint-enable comma-spacing,array-bracket-spacing */\n\n/* The lengths of the bit length codes are sent in order of decreasing\n * probability, to avoid transmitting the lengths for unused bit length codes.\n */\n\n/* ===========================================================================\n * Local data. These are initialized only once.\n */\n\n// We pre-fill arrays with 0 to avoid uninitialized gaps\n\nvar DIST_CODE_LEN = 512; /* see definition of array dist_code below */\n\n// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1\nvar static_ltree = new Array((L_CODES + 2) * 2);\nzero(static_ltree);\n/* The static literal tree. Since the bit lengths are imposed, there is no\n * need for the L_CODES extra codes used during heap construction. However\n * The codes 286 and 287 are needed to build a canonical tree (see _tr_init\n * below).\n */\n\nvar static_dtree = new Array(D_CODES * 2);\nzero(static_dtree);\n/* The static distance tree. (Actually a trivial tree since all codes use\n * 5 bits.)\n */\n\nvar _dist_code = new Array(DIST_CODE_LEN);\nzero(_dist_code);\n/* Distance codes. The first 256 values correspond to the distances\n * 3 .. 258, the last 256 values correspond to the top 8 bits of\n * the 15 bit distances.\n */\n\nvar _length_code = new Array(MAX_MATCH - MIN_MATCH + 1);\nzero(_length_code);\n/* length code for each normalized match length (0 == MIN_MATCH) */\n\nvar base_length = new Array(LENGTH_CODES);\nzero(base_length);\n/* First normalized length for each code (0 = MIN_MATCH) */\n\nvar base_dist = new Array(D_CODES);\nzero(base_dist);\n/* First normalized distance for each code (0 = distance of 1) */\n\n\nfunction StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {\n\n this.static_tree = static_tree; /* static tree or NULL */\n this.extra_bits = extra_bits; /* extra bits for each code or NULL */\n this.extra_base = extra_base; /* base index for extra_bits */\n this.elems = elems; /* max number of elements in the tree */\n this.max_length = max_length; /* max bit length for the codes */\n\n // show if `static_tree` has data or dummy - needed for monomorphic objects\n this.has_stree = static_tree && static_tree.length;\n}\n\n\nvar static_l_desc;\nvar static_d_desc;\nvar static_bl_desc;\n\n\nfunction TreeDesc(dyn_tree, stat_desc) {\n this.dyn_tree = dyn_tree; /* the dynamic tree */\n this.max_code = 0; /* largest code with non zero frequency */\n this.stat_desc = stat_desc; /* the corresponding static tree */\n}\n\n\n\nfunction d_code(dist) {\n return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];\n}\n\n\n/* ===========================================================================\n * Output a short LSB first on the stream.\n * IN assertion: there is enough room in pendingBuf.\n */\nfunction put_short(s, w) {\n// put_byte(s, (uch)((w) & 0xff));\n// put_byte(s, (uch)((ush)(w) >> 8));\n s.pending_buf[s.pending++] = (w) & 0xff;\n s.pending_buf[s.pending++] = (w >>> 8) & 0xff;\n}\n\n\n/* ===========================================================================\n * Send a value on a given number of bits.\n * IN assertion: length <= 16 and value fits in length bits.\n */\nfunction send_bits(s, value, length) {\n if (s.bi_valid > (Buf_size - length)) {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n put_short(s, s.bi_buf);\n s.bi_buf = value >> (Buf_size - s.bi_valid);\n s.bi_valid += length - Buf_size;\n } else {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n s.bi_valid += length;\n }\n}\n\n\nfunction send_code(s, c, tree) {\n send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);\n}\n\n\n/* ===========================================================================\n * Reverse the first len bits of a code, using straightforward code (a faster\n * method would use a table)\n * IN assertion: 1 <= len <= 15\n */\nfunction bi_reverse(code, len) {\n var res = 0;\n do {\n res |= code & 1;\n code >>>= 1;\n res <<= 1;\n } while (--len > 0);\n return res >>> 1;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer, keeping at most 7 bits in it.\n */\nfunction bi_flush(s) {\n if (s.bi_valid === 16) {\n put_short(s, s.bi_buf);\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n } else if (s.bi_valid >= 8) {\n s.pending_buf[s.pending++] = s.bi_buf & 0xff;\n s.bi_buf >>= 8;\n s.bi_valid -= 8;\n }\n}\n\n\n/* ===========================================================================\n * Compute the optimal bit lengths for a tree and update the total bit length\n * for the current block.\n * IN assertion: the fields freq and dad are set, heap[heap_max] and\n * above are the tree nodes sorted by increasing frequency.\n * OUT assertions: the field len is set to the optimal bit length, the\n * array bl_count contains the frequencies for each bit length.\n * The length opt_len is updated; static_len is also updated if stree is\n * not null.\n */\nfunction gen_bitlen(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var max_code = desc.max_code;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var extra = desc.stat_desc.extra_bits;\n var base = desc.stat_desc.extra_base;\n var max_length = desc.stat_desc.max_length;\n var h; /* heap index */\n var n, m; /* iterate over the tree elements */\n var bits; /* bit length */\n var xbits; /* extra bits */\n var f; /* frequency */\n var overflow = 0; /* number of elements with bit length too large */\n\n for (bits = 0; bits <= MAX_BITS; bits++) {\n s.bl_count[bits] = 0;\n }\n\n /* In a first pass, compute the optimal bit lengths (which may\n * overflow in the case of the bit length tree).\n */\n tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */\n\n for (h = s.heap_max + 1; h < HEAP_SIZE; h++) {\n n = s.heap[h];\n bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;\n if (bits > max_length) {\n bits = max_length;\n overflow++;\n }\n tree[n * 2 + 1]/*.Len*/ = bits;\n /* We overwrite tree[n].Dad which is no longer needed */\n\n if (n > max_code) { continue; } /* not a leaf node */\n\n s.bl_count[bits]++;\n xbits = 0;\n if (n >= base) {\n xbits = extra[n - base];\n }\n f = tree[n * 2]/*.Freq*/;\n s.opt_len += f * (bits + xbits);\n if (has_stree) {\n s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);\n }\n }\n if (overflow === 0) { return; }\n\n // Trace((stderr,\"\\nbit length overflow\\n\"));\n /* This happens for example on obj2 and pic of the Calgary corpus */\n\n /* Find the first bit length which could increase: */\n do {\n bits = max_length - 1;\n while (s.bl_count[bits] === 0) { bits--; }\n s.bl_count[bits]--; /* move one leaf down the tree */\n s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */\n s.bl_count[max_length]--;\n /* The brother of the overflow item also moves one step up,\n * but this does not affect bl_count[max_length]\n */\n overflow -= 2;\n } while (overflow > 0);\n\n /* Now recompute all bit lengths, scanning in increasing frequency.\n * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all\n * lengths instead of fixing only the wrong ones. This idea is taken\n * from 'ar' written by Haruhiko Okumura.)\n */\n for (bits = max_length; bits !== 0; bits--) {\n n = s.bl_count[bits];\n while (n !== 0) {\n m = s.heap[--h];\n if (m > max_code) { continue; }\n if (tree[m * 2 + 1]/*.Len*/ !== bits) {\n // Trace((stderr,\"code %d bits %d->%d\\n\", m, tree[m].Len, bits));\n s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;\n tree[m * 2 + 1]/*.Len*/ = bits;\n }\n n--;\n }\n }\n}\n\n\n/* ===========================================================================\n * Generate the codes for a given tree and bit counts (which need not be\n * optimal).\n * IN assertion: the array bl_count contains the bit length statistics for\n * the given tree and the field len is set for all tree elements.\n * OUT assertion: the field code is set for all tree elements of non\n * zero code length.\n */\nfunction gen_codes(tree, max_code, bl_count)\n// ct_data *tree; /* the tree to decorate */\n// int max_code; /* largest code with non zero frequency */\n// ushf *bl_count; /* number of codes at each bit length */\n{\n var next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */\n var code = 0; /* running code value */\n var bits; /* bit index */\n var n; /* code index */\n\n /* The distribution counts are first used to generate the code values\n * without bit reversal.\n */\n for (bits = 1; bits <= MAX_BITS; bits++) {\n next_code[bits] = code = (code + bl_count[bits - 1]) << 1;\n }\n /* Check that the bit counts in bl_count are consistent. The last code\n * must be all ones.\n */\n //Assert (code + bl_count[MAX_BITS]-1 == (1<<MAX_BITS)-1,\n // \"inconsistent bit counts\");\n //Tracev((stderr,\"\\ngen_codes: max_code %d \", max_code));\n\n for (n = 0; n <= max_code; n++) {\n var len = tree[n * 2 + 1]/*.Len*/;\n if (len === 0) { continue; }\n /* Now reverse the bits */\n tree[n * 2]/*.Code*/ = bi_reverse(next_code[len]++, len);\n\n //Tracecv(tree != static_ltree, (stderr,\"\\nn %3d %c l %2d c %4x (%x) \",\n // n, (isgraph(n) ? n : ' '), len, tree[n].Code, next_code[len]-1));\n }\n}\n\n\n/* ===========================================================================\n * Initialize the various 'constant' tables.\n */\nfunction tr_static_init() {\n var n; /* iterates over tree elements */\n var bits; /* bit counter */\n var length; /* length value */\n var code; /* code value */\n var dist; /* distance index */\n var bl_count = new Array(MAX_BITS + 1);\n /* number of codes at each bit length for an optimal tree */\n\n // do check in _tr_init()\n //if (static_init_done) return;\n\n /* For some embedded targets, global variables are not initialized: */\n/*#ifdef NO_INIT_GLOBAL_POINTERS\n static_l_desc.static_tree = static_ltree;\n static_l_desc.extra_bits = extra_lbits;\n static_d_desc.static_tree = static_dtree;\n static_d_desc.extra_bits = extra_dbits;\n static_bl_desc.extra_bits = extra_blbits;\n#endif*/\n\n /* Initialize the mapping length (0..255) -> length code (0..28) */\n length = 0;\n for (code = 0; code < LENGTH_CODES - 1; code++) {\n base_length[code] = length;\n for (n = 0; n < (1 << extra_lbits[code]); n++) {\n _length_code[length++] = code;\n }\n }\n //Assert (length == 256, \"tr_static_init: length != 256\");\n /* Note that the length 255 (match length 258) can be represented\n * in two different ways: code 284 + 5 bits or code 285, so we\n * overwrite length_code[255] to use the best encoding:\n */\n _length_code[length - 1] = code;\n\n /* Initialize the mapping dist (0..32K) -> dist code (0..29) */\n dist = 0;\n for (code = 0; code < 16; code++) {\n base_dist[code] = dist;\n for (n = 0; n < (1 << extra_dbits[code]); n++) {\n _dist_code[dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: dist != 256\");\n dist >>= 7; /* from now on, all distances are divided by 128 */\n for (; code < D_CODES; code++) {\n base_dist[code] = dist << 7;\n for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {\n _dist_code[256 + dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: 256+dist != 512\");\n\n /* Construct the codes of the static literal tree */\n for (bits = 0; bits <= MAX_BITS; bits++) {\n bl_count[bits] = 0;\n }\n\n n = 0;\n while (n <= 143) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n while (n <= 255) {\n static_ltree[n * 2 + 1]/*.Len*/ = 9;\n n++;\n bl_count[9]++;\n }\n while (n <= 279) {\n static_ltree[n * 2 + 1]/*.Len*/ = 7;\n n++;\n bl_count[7]++;\n }\n while (n <= 287) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n /* Codes 286 and 287 do not exist, but we must include them in the\n * tree construction to get a canonical Huffman tree (longest code\n * all ones)\n */\n gen_codes(static_ltree, L_CODES + 1, bl_count);\n\n /* The static distance tree is trivial: */\n for (n = 0; n < D_CODES; n++) {\n static_dtree[n * 2 + 1]/*.Len*/ = 5;\n static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);\n }\n\n // Now data ready and we can init static trees\n static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);\n static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES, MAX_BITS);\n static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES, MAX_BL_BITS);\n\n //static_init_done = true;\n}\n\n\n/* ===========================================================================\n * Initialize a new block.\n */\nfunction init_block(s) {\n var n; /* iterates over tree elements */\n\n /* Initialize the trees. */\n for (n = 0; n < L_CODES; n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < D_CODES; n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }\n\n s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;\n s.opt_len = s.static_len = 0;\n s.last_lit = s.matches = 0;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer and align the output on a byte boundary\n */\nfunction bi_windup(s)\n{\n if (s.bi_valid > 8) {\n put_short(s, s.bi_buf);\n } else if (s.bi_valid > 0) {\n //put_byte(s, (Byte)s->bi_buf);\n s.pending_buf[s.pending++] = s.bi_buf;\n }\n s.bi_buf = 0;\n s.bi_valid = 0;\n}\n\n/* ===========================================================================\n * Copy a stored block, storing first the length and its\n * one's complement if requested.\n */\nfunction copy_block(s, buf, len, header)\n//DeflateState *s;\n//charf *buf; /* the input data */\n//unsigned len; /* its length */\n//int header; /* true if block header must be written */\n{\n bi_windup(s); /* align on byte boundary */\n\n if (header) {\n put_short(s, len);\n put_short(s, ~len);\n }\n// while (len--) {\n// put_byte(s, *buf++);\n// }\n utils.arraySet(s.pending_buf, s.window, buf, len, s.pending);\n s.pending += len;\n}\n\n/* ===========================================================================\n * Compares to subtrees, using the tree depth as tie breaker when\n * the subtrees have equal frequency. This minimizes the worst case length.\n */\nfunction smaller(tree, n, m, depth) {\n var _n2 = n * 2;\n var _m2 = m * 2;\n return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||\n (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));\n}\n\n/* ===========================================================================\n * Restore the heap property by moving down the tree starting at node k,\n * exchanging a node with the smallest of its two sons if necessary, stopping\n * when the heap property is re-established (each father smaller than its\n * two sons).\n */\nfunction pqdownheap(s, tree, k)\n// deflate_state *s;\n// ct_data *tree; /* the tree to restore */\n// int k; /* node to move down */\n{\n var v = s.heap[k];\n var j = k << 1; /* left son of k */\n while (j <= s.heap_len) {\n /* Set j to the smallest of the two sons: */\n if (j < s.heap_len &&\n smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {\n j++;\n }\n /* Exit if v is smaller than both sons */\n if (smaller(tree, v, s.heap[j], s.depth)) { break; }\n\n /* Exchange v with the smallest son */\n s.heap[k] = s.heap[j];\n k = j;\n\n /* And continue down the tree, setting j to the left son of k */\n j <<= 1;\n }\n s.heap[k] = v;\n}\n\n\n// inlined manually\n// var SMALLEST = 1;\n\n/* ===========================================================================\n * Send the block data compressed using the given Huffman trees\n */\nfunction compress_block(s, ltree, dtree)\n// deflate_state *s;\n// const ct_data *ltree; /* literal tree */\n// const ct_data *dtree; /* distance tree */\n{\n var dist; /* distance of matched string */\n var lc; /* match length or unmatched char (if dist == 0) */\n var lx = 0; /* running index in l_buf */\n var code; /* the code to send */\n var extra; /* number of extra bits to send */\n\n if (s.last_lit !== 0) {\n do {\n dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]);\n lc = s.pending_buf[s.l_buf + lx];\n lx++;\n\n if (dist === 0) {\n send_code(s, lc, ltree); /* send a literal byte */\n //Tracecv(isgraph(lc), (stderr,\" '%c' \", lc));\n } else {\n /* Here, lc is the match length - MIN_MATCH */\n code = _length_code[lc];\n send_code(s, code + LITERALS + 1, ltree); /* send the length code */\n extra = extra_lbits[code];\n if (extra !== 0) {\n lc -= base_length[code];\n send_bits(s, lc, extra); /* send the extra length bits */\n }\n dist--; /* dist is now the match distance - 1 */\n code = d_code(dist);\n //Assert (code < D_CODES, \"bad d_code\");\n\n send_code(s, code, dtree); /* send the distance code */\n extra = extra_dbits[code];\n if (extra !== 0) {\n dist -= base_dist[code];\n send_bits(s, dist, extra); /* send the extra distance bits */\n }\n } /* literal or match pair ? */\n\n /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */\n //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,\n // \"pendingBuf overflow\");\n\n } while (lx < s.last_lit);\n }\n\n send_code(s, END_BLOCK, ltree);\n}\n\n\n/* ===========================================================================\n * Construct one Huffman tree and assigns the code bit strings and lengths.\n * Update the total bit length for the current block.\n * IN assertion: the field freq is set for all tree elements.\n * OUT assertions: the fields len and code are set to the optimal bit length\n * and corresponding code. The length opt_len is updated; static_len is\n * also updated if stree is not null. The field max_code is set.\n */\nfunction build_tree(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var elems = desc.stat_desc.elems;\n var n, m; /* iterate over heap elements */\n var max_code = -1; /* largest code with non zero frequency */\n var node; /* new node being created */\n\n /* Construct the initial heap, with least frequent element in\n * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].\n * heap[0] is not used.\n */\n s.heap_len = 0;\n s.heap_max = HEAP_SIZE;\n\n for (n = 0; n < elems; n++) {\n if (tree[n * 2]/*.Freq*/ !== 0) {\n s.heap[++s.heap_len] = max_code = n;\n s.depth[n] = 0;\n\n } else {\n tree[n * 2 + 1]/*.Len*/ = 0;\n }\n }\n\n /* The pkzip format requires that at least one distance code exists,\n * and that at least one bit should be sent even if there is only one\n * possible code. So to avoid special checks later on we force at least\n * two codes of non zero frequency.\n */\n while (s.heap_len < 2) {\n node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);\n tree[node * 2]/*.Freq*/ = 1;\n s.depth[node] = 0;\n s.opt_len--;\n\n if (has_stree) {\n s.static_len -= stree[node * 2 + 1]/*.Len*/;\n }\n /* node is 0 or 1 so it does not have extra bits */\n }\n desc.max_code = max_code;\n\n /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,\n * establish sub-heaps of increasing lengths:\n */\n for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }\n\n /* Construct the Huffman tree by repeatedly combining the least two\n * frequent nodes.\n */\n node = elems; /* next internal node of the tree */\n do {\n //pqremove(s, tree, n); /* n = node of least frequency */\n /*** pqremove ***/\n n = s.heap[1/*SMALLEST*/];\n s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];\n pqdownheap(s, tree, 1/*SMALLEST*/);\n /***/\n\n m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */\n\n s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */\n s.heap[--s.heap_max] = m;\n\n /* Create a new node father of n and m */\n tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;\n s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;\n tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;\n\n /* and insert the new node in the heap */\n s.heap[1/*SMALLEST*/] = node++;\n pqdownheap(s, tree, 1/*SMALLEST*/);\n\n } while (s.heap_len >= 2);\n\n s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];\n\n /* At this point, the fields freq and dad are set. We can now\n * generate the bit lengths.\n */\n gen_bitlen(s, desc);\n\n /* The field len is now set, we can generate the bit codes */\n gen_codes(tree, max_code, s.bl_count);\n}\n\n\n/* ===========================================================================\n * Scan a literal or distance tree to determine the frequencies of the codes\n * in the bit length tree.\n */\nfunction scan_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n s.bl_tree[curlen * 2]/*.Freq*/ += count;\n\n } else if (curlen !== 0) {\n\n if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }\n s.bl_tree[REP_3_6 * 2]/*.Freq*/++;\n\n } else if (count <= 10) {\n s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;\n\n } else {\n s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;\n }\n\n count = 0;\n prevlen = curlen;\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n\n/* ===========================================================================\n * Send a literal or distance tree in compressed form, using the codes in\n * bl_tree.\n */\nfunction send_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n /* tree[max_code+1].Len = -1; */ /* guard already set */\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);\n\n } else if (curlen !== 0) {\n if (curlen !== prevlen) {\n send_code(s, curlen, s.bl_tree);\n count--;\n }\n //Assert(count >= 3 && count <= 6, \" 3_6?\");\n send_code(s, REP_3_6, s.bl_tree);\n send_bits(s, count - 3, 2);\n\n } else if (count <= 10) {\n send_code(s, REPZ_3_10, s.bl_tree);\n send_bits(s, count - 3, 3);\n\n } else {\n send_code(s, REPZ_11_138, s.bl_tree);\n send_bits(s, count - 11, 7);\n }\n\n count = 0;\n prevlen = curlen;\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n\n/* ===========================================================================\n * Construct the Huffman tree for the bit lengths and return the index in\n * bl_order of the last bit length code to send.\n */\nfunction build_bl_tree(s) {\n var max_blindex; /* index of last bit length code of non zero freq */\n\n /* Determine the bit length frequencies for literal and distance trees */\n scan_tree(s, s.dyn_ltree, s.l_desc.max_code);\n scan_tree(s, s.dyn_dtree, s.d_desc.max_code);\n\n /* Build the bit length tree: */\n build_tree(s, s.bl_desc);\n /* opt_len now includes the length of the tree representations, except\n * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.\n */\n\n /* Determine the number of bit length codes to send. The pkzip format\n * requires that at least 4 bit length codes be sent. (appnote.txt says\n * 3 but the actual value used is 4.)\n */\n for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {\n if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {\n break;\n }\n }\n /* Update opt_len to include the bit length tree and counts */\n s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;\n //Tracev((stderr, \"\\ndyn trees: dyn %ld, stat %ld\",\n // s->opt_len, s->static_len));\n\n return max_blindex;\n}\n\n\n/* ===========================================================================\n * Send the header for a block using dynamic Huffman trees: the counts, the\n * lengths of the bit length codes, the literal tree and the distance tree.\n * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.\n */\nfunction send_all_trees(s, lcodes, dcodes, blcodes)\n// deflate_state *s;\n// int lcodes, dcodes, blcodes; /* number of codes for each tree */\n{\n var rank; /* index in bl_order */\n\n //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, \"not enough codes\");\n //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,\n // \"too many codes\");\n //Tracev((stderr, \"\\nbl counts: \"));\n send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */\n send_bits(s, dcodes - 1, 5);\n send_bits(s, blcodes - 4, 4); /* not -3 as stated in appnote.txt */\n for (rank = 0; rank < blcodes; rank++) {\n //Tracev((stderr, \"\\nbl code %2d \", bl_order[rank]));\n send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);\n }\n //Tracev((stderr, \"\\nbl tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */\n //Tracev((stderr, \"\\nlit tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */\n //Tracev((stderr, \"\\ndist tree: sent %ld\", s->bits_sent));\n}\n\n\n/* ===========================================================================\n * Check if the data type is TEXT or BINARY, using the following algorithm:\n * - TEXT if the two conditions below are satisfied:\n * a) There are no non-portable control characters belonging to the\n * \"black list\" (0..6, 14..25, 28..31).\n * b) There is at least one printable character belonging to the\n * \"white list\" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).\n * - BINARY otherwise.\n * - The following partially-portable control characters form a\n * \"gray list\" that is ignored in this detection algorithm:\n * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).\n * IN assertion: the fields Freq of dyn_ltree are set.\n */\nfunction detect_data_type(s) {\n /* black_mask is the bit mask of black-listed bytes\n * set bits 0..6, 14..25, and 28..31\n * 0xf3ffc07f = binary 11110011111111111100000001111111\n */\n var black_mask = 0xf3ffc07f;\n var n;\n\n /* Check for non-textual (\"black-listed\") bytes. */\n for (n = 0; n <= 31; n++, black_mask >>>= 1) {\n if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {\n return Z_BINARY;\n }\n }\n\n /* Check for textual (\"white-listed\") bytes. */\n if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||\n s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n for (n = 32; n < LITERALS; n++) {\n if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n }\n\n /* There are no \"black-listed\" or \"white-listed\" bytes:\n * this stream either is empty or has tolerated (\"gray-listed\") bytes only.\n */\n return Z_BINARY;\n}\n\n\nvar static_init_done = false;\n\n/* ===========================================================================\n * Initialize the tree data structures for a new zlib stream.\n */\nfunction _tr_init(s)\n{\n\n if (!static_init_done) {\n tr_static_init();\n static_init_done = true;\n }\n\n s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc);\n s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc);\n s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);\n\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n /* Initialize the first block of the first file: */\n init_block(s);\n}\n\n\n/* ===========================================================================\n * Send a stored block\n */\nfunction _tr_stored_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf; /* input block */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n{\n send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3); /* send block type */\n copy_block(s, buf, stored_len, true); /* with header */\n}\n\n\n/* ===========================================================================\n * Send one empty static block to give enough lookahead for inflate.\n * This takes 10 bits, of which 7 may remain in the bit buffer.\n */\nfunction _tr_align(s) {\n send_bits(s, STATIC_TREES << 1, 3);\n send_code(s, END_BLOCK, static_ltree);\n bi_flush(s);\n}\n\n\n/* ===========================================================================\n * Determine the best encoding for the current block: dynamic trees, static\n * trees or store, and output the encoded block to the zip file.\n */\nfunction _tr_flush_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf; /* input block, or NULL if too old */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n{\n var opt_lenb, static_lenb; /* opt_len and static_len in bytes */\n var max_blindex = 0; /* index of last bit length code of non zero freq */\n\n /* Build the Huffman trees unless a stored block is forced */\n if (s.level > 0) {\n\n /* Check if the file is binary or text */\n if (s.strm.data_type === Z_UNKNOWN) {\n s.strm.data_type = detect_data_type(s);\n }\n\n /* Construct the literal and distance trees */\n build_tree(s, s.l_desc);\n // Tracev((stderr, \"\\nlit data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n\n build_tree(s, s.d_desc);\n // Tracev((stderr, \"\\ndist data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n /* At this point, opt_len and static_len are the total bit lengths of\n * the compressed block data, excluding the tree representations.\n */\n\n /* Build the bit length tree for the above two trees, and get the index\n * in bl_order of the last bit length code to send.\n */\n max_blindex = build_bl_tree(s);\n\n /* Determine the best encoding. Compute the block lengths in bytes. */\n opt_lenb = (s.opt_len + 3 + 7) >>> 3;\n static_lenb = (s.static_len + 3 + 7) >>> 3;\n\n // Tracev((stderr, \"\\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u \",\n // opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,\n // s->last_lit));\n\n if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }\n\n } else {\n // Assert(buf != (char*)0, \"lost buf\");\n opt_lenb = static_lenb = stored_len + 5; /* force a stored block */\n }\n\n if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {\n /* 4: two words for the lengths */\n\n /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.\n * Otherwise we can't have processed more than WSIZE input bytes since\n * the last block flush, because compression would have been\n * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to\n * transform a block into a stored block.\n */\n _tr_stored_block(s, buf, stored_len, last);\n\n } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {\n\n send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);\n compress_block(s, static_ltree, static_dtree);\n\n } else {\n send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);\n send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);\n compress_block(s, s.dyn_ltree, s.dyn_dtree);\n }\n // Assert (s->compressed_len == s->bits_sent, \"bad compressed size\");\n /* The above check is made mod 2^32, for files larger than 512 MB\n * and uLong implemented on 32 bits.\n */\n init_block(s);\n\n if (last) {\n bi_windup(s);\n }\n // Tracev((stderr,\"\\ncomprlen %lu(%lu) \", s->compressed_len>>3,\n // s->compressed_len-7*last));\n}\n\n/* ===========================================================================\n * Save the match info and tally the frequency counts. Return true if\n * the current block must be flushed.\n */\nfunction _tr_tally(s, dist, lc)\n// deflate_state *s;\n// unsigned dist; /* distance of matched string */\n// unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */\n{\n //var out_length, in_length, dcode;\n\n s.pending_buf[s.d_buf + s.last_lit * 2] = (dist >>> 8) & 0xff;\n s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;\n\n s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;\n s.last_lit++;\n\n if (dist === 0) {\n /* lc is the unmatched char */\n s.dyn_ltree[lc * 2]/*.Freq*/++;\n } else {\n s.matches++;\n /* Here, lc is the match length - MIN_MATCH */\n dist--; /* dist = match distance - 1 */\n //Assert((ush)dist < (ush)MAX_DIST(s) &&\n // (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&\n // (ush)d_code(dist) < (ush)D_CODES, \"_tr_tally: bad match\");\n\n s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++;\n s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n\n//#ifdef TRUNCATE_BLOCK\n// /* Try to guess if it is profitable to stop the current block here */\n// if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {\n// /* Compute an upper bound for the compressed length */\n// out_length = s.last_lit*8;\n// in_length = s.strstart - s.block_start;\n//\n// for (dcode = 0; dcode < D_CODES; dcode++) {\n// out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);\n// }\n// out_length >>>= 3;\n// //Tracev((stderr,\"\\nlast_lit %u, in %ld, out ~%ld(%ld%%) \",\n// // s->last_lit, in_length, out_length,\n// // 100L - out_length*100L/in_length));\n// if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {\n// return true;\n// }\n// }\n//#endif\n\n return (s.last_lit === s.lit_bufsize - 1);\n /* We avoid equality with lit_bufsize because of wraparound at 64K\n * on 16 bit machines and because stored blocks are restricted to\n * 64K-1 bytes.\n */\n}\n\nexports._tr_init = _tr_init;\nexports._tr_stored_block = _tr_stored_block;\nexports._tr_flush_block = _tr_flush_block;\nexports._tr_tally = _tr_tally;\nexports._tr_align = _tr_align;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/pako/lib/zlib/trees.js\n// module id = 609\n// module chunks = 1","'use strict';\n\n\nvar zlib_inflate = require('./zlib/inflate');\nvar utils = require('./utils/common');\nvar strings = require('./utils/strings');\nvar c = require('./zlib/constants');\nvar msg = require('./zlib/messages');\nvar ZStream = require('./zlib/zstream');\nvar GZheader = require('./zlib/gzheader');\n\nvar toString = Object.prototype.toString;\n\n/**\n * class Inflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[inflate]]\n * and [[inflateRaw]].\n **/\n\n/* internal\n * inflate.chunks -> Array\n *\n * Chunks of output data, if [[Inflate#onData]] not overridden.\n **/\n\n/**\n * Inflate.result -> Uint8Array|Array|String\n *\n * Uncompressed result, generated by default [[Inflate#onData]]\n * and [[Inflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Inflate#push]] with `Z_FINISH` / `true` param) or if you\n * push a chunk with explicit flush (call [[Inflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n/**\n * Inflate.err -> Number\n *\n * Error code after inflate finished. 0 (Z_OK) on success.\n * Should be checked if broken data possible.\n **/\n\n/**\n * Inflate.msg -> String\n *\n * Error message, if [[Inflate.err]] != 0\n **/\n\n\n/**\n * new Inflate(options)\n * - options (Object): zlib inflate options.\n *\n * Creates new inflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `windowBits`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw inflate\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n * By default, when no options set, autodetect deflate/gzip data format via\n * wrapper header.\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var inflate = new pako.Inflate({ level: 3});\n *\n * inflate.push(chunk1, false);\n * inflate.push(chunk2, true); // true -> last chunk\n *\n * if (inflate.err) { throw new Error(inflate.err); }\n *\n * console.log(inflate.result);\n * ```\n **/\nfunction Inflate(options) {\n if (!(this instanceof Inflate)) return new Inflate(options);\n\n this.options = utils.assign({\n chunkSize: 16384,\n windowBits: 0,\n to: ''\n }, options || {});\n\n var opt = this.options;\n\n // Force window size for `raw` data, if not set directly,\n // because we have no header for autodetect.\n if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) {\n opt.windowBits = -opt.windowBits;\n if (opt.windowBits === 0) { opt.windowBits = -15; }\n }\n\n // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate\n if ((opt.windowBits >= 0) && (opt.windowBits < 16) &&\n !(options && options.windowBits)) {\n opt.windowBits += 32;\n }\n\n // Gzip header has no info about windows size, we can do autodetect only\n // for deflate. So, if window size not set, force it to max when gzip possible\n if ((opt.windowBits > 15) && (opt.windowBits < 48)) {\n // bit 3 (16) -> gzipped data\n // bit 4 (32) -> autodetect gzip/deflate\n if ((opt.windowBits & 15) === 0) {\n opt.windowBits |= 15;\n }\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new ZStream();\n this.strm.avail_out = 0;\n\n var status = zlib_inflate.inflateInit2(\n this.strm,\n opt.windowBits\n );\n\n if (status !== c.Z_OK) {\n throw new Error(msg[status]);\n }\n\n this.header = new GZheader();\n\n zlib_inflate.inflateGetHeader(this.strm, this.header);\n}\n\n/**\n * Inflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with\n * new output chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Inflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the decompression context.\n *\n * On fail call [[Inflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\nInflate.prototype.push = function (data, mode) {\n var strm = this.strm;\n var chunkSize = this.options.chunkSize;\n var dictionary = this.options.dictionary;\n var status, _mode;\n var next_out_utf8, tail, utf8str;\n var dict;\n\n // Flag to properly process Z_BUF_ERROR on testing inflate call\n // when we check that all output data was flushed.\n var allowBufError = false;\n\n if (this.ended) { return false; }\n _mode = (mode === ~~mode) ? mode : ((mode === true) ? c.Z_FINISH : c.Z_NO_FLUSH);\n\n // Convert data if needed\n if (typeof data === 'string') {\n // Only binary strings can be decompressed on practice\n strm.input = strings.binstring2buf(data);\n } else if (toString.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n do {\n if (strm.avail_out === 0) {\n strm.output = new utils.Buf8(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n\n status = zlib_inflate.inflate(strm, c.Z_NO_FLUSH); /* no bad return value */\n\n if (status === c.Z_NEED_DICT && dictionary) {\n // Convert data if needed\n if (typeof dictionary === 'string') {\n dict = strings.string2buf(dictionary);\n } else if (toString.call(dictionary) === '[object ArrayBuffer]') {\n dict = new Uint8Array(dictionary);\n } else {\n dict = dictionary;\n }\n\n status = zlib_inflate.inflateSetDictionary(this.strm, dict);\n\n }\n\n if (status === c.Z_BUF_ERROR && allowBufError === true) {\n status = c.Z_OK;\n allowBufError = false;\n }\n\n if (status !== c.Z_STREAM_END && status !== c.Z_OK) {\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n\n if (strm.next_out) {\n if (strm.avail_out === 0 || status === c.Z_STREAM_END || (strm.avail_in === 0 && (_mode === c.Z_FINISH || _mode === c.Z_SYNC_FLUSH))) {\n\n if (this.options.to === 'string') {\n\n next_out_utf8 = strings.utf8border(strm.output, strm.next_out);\n\n tail = strm.next_out - next_out_utf8;\n utf8str = strings.buf2string(strm.output, next_out_utf8);\n\n // move tail\n strm.next_out = tail;\n strm.avail_out = chunkSize - tail;\n if (tail) { utils.arraySet(strm.output, strm.output, next_out_utf8, tail, 0); }\n\n this.onData(utf8str);\n\n } else {\n this.onData(utils.shrinkBuf(strm.output, strm.next_out));\n }\n }\n }\n\n // When no more input data, we should check that internal inflate buffers\n // are flushed. The only way to do it when avail_out = 0 - run one more\n // inflate pass. But if output data not exists, inflate return Z_BUF_ERROR.\n // Here we set flag to process this error properly.\n //\n // NOTE. Deflate does not return error in this case and does not needs such\n // logic.\n if (strm.avail_in === 0 && strm.avail_out === 0) {\n allowBufError = true;\n }\n\n } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== c.Z_STREAM_END);\n\n if (status === c.Z_STREAM_END) {\n _mode = c.Z_FINISH;\n }\n\n // Finalize on the last chunk.\n if (_mode === c.Z_FINISH) {\n status = zlib_inflate.inflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === c.Z_OK;\n }\n\n // callback interim results if Z_SYNC_FLUSH.\n if (_mode === c.Z_SYNC_FLUSH) {\n this.onEnd(c.Z_OK);\n strm.avail_out = 0;\n return true;\n }\n\n return true;\n};\n\n\n/**\n * Inflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): output data. Type of array depends\n * on js engine support. When string output requested, each chunk\n * will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nInflate.prototype.onData = function (chunk) {\n this.chunks.push(chunk);\n};\n\n\n/**\n * Inflate#onEnd(status) -> Void\n * - status (Number): inflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called either after you tell inflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nInflate.prototype.onEnd = function (status) {\n // On success - join\n if (status === c.Z_OK) {\n if (this.options.to === 'string') {\n // Glue & convert here, until we teach pako to send\n // utf8 aligned strings to onData\n this.result = this.chunks.join('');\n } else {\n this.result = utils.flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n};\n\n\n/**\n * inflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Decompress `data` with inflate/ungzip and `options`. Autodetect\n * format via wrapper header by default. That's why we don't provide\n * separate `ungzip` method.\n *\n * Supported options are:\n *\n * - windowBits\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , input = pako.deflate([1,2,3,4,5,6,7,8,9])\n * , output;\n *\n * try {\n * output = pako.inflate(input);\n * } catch (err)\n * console.log(err);\n * }\n * ```\n **/\nfunction inflate(input, options) {\n var inflator = new Inflate(options);\n\n inflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (inflator.err) { throw inflator.msg || msg[inflator.err]; }\n\n return inflator.result;\n}\n\n\n/**\n * inflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * The same as [[inflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction inflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return inflate(input, options);\n}\n\n\n/**\n * ungzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Just shortcut to [[inflate]], because it autodetects format\n * by header.content. Done for convenience.\n **/\n\n\nexports.Inflate = Inflate;\nexports.inflate = inflate;\nexports.inflateRaw = inflateRaw;\nexports.ungzip = inflate;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/pako/lib/inflate.js\n// module id = 610\n// module chunks = 1","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = require('../utils/common');\nvar adler32 = require('./adler32');\nvar crc32 = require('./crc32');\nvar inflate_fast = require('./inffast');\nvar inflate_table = require('./inftrees');\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\n//var Z_NO_FLUSH = 0;\n//var Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH = 2;\n//var Z_FULL_FLUSH = 3;\nvar Z_FINISH = 4;\nvar Z_BLOCK = 5;\nvar Z_TREES = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\nvar Z_NEED_DICT = 2;\n//var Z_ERRNO = -1;\nvar Z_STREAM_ERROR = -2;\nvar Z_DATA_ERROR = -3;\nvar Z_MEM_ERROR = -4;\nvar Z_BUF_ERROR = -5;\n//var Z_VERSION_ERROR = -6;\n\n/* The deflate compression method */\nvar Z_DEFLATED = 8;\n\n\n/* STATES ====================================================================*/\n/* ===========================================================================*/\n\n\nvar HEAD = 1; /* i: waiting for magic header */\nvar FLAGS = 2; /* i: waiting for method and flags (gzip) */\nvar TIME = 3; /* i: waiting for modification time (gzip) */\nvar OS = 4; /* i: waiting for extra flags and operating system (gzip) */\nvar EXLEN = 5; /* i: waiting for extra length (gzip) */\nvar EXTRA = 6; /* i: waiting for extra bytes (gzip) */\nvar NAME = 7; /* i: waiting for end of file name (gzip) */\nvar COMMENT = 8; /* i: waiting for end of comment (gzip) */\nvar HCRC = 9; /* i: waiting for header crc (gzip) */\nvar DICTID = 10; /* i: waiting for dictionary check value */\nvar DICT = 11; /* waiting for inflateSetDictionary() call */\nvar TYPE = 12; /* i: waiting for type bits, including last-flag bit */\nvar TYPEDO = 13; /* i: same, but skip check to exit inflate on new block */\nvar STORED = 14; /* i: waiting for stored size (length and complement) */\nvar COPY_ = 15; /* i/o: same as COPY below, but only first time in */\nvar COPY = 16; /* i/o: waiting for input or output to copy stored block */\nvar TABLE = 17; /* i: waiting for dynamic block table lengths */\nvar LENLENS = 18; /* i: waiting for code length code lengths */\nvar CODELENS = 19; /* i: waiting for length/lit and distance code lengths */\nvar LEN_ = 20; /* i: same as LEN below, but only first time in */\nvar LEN = 21; /* i: waiting for length/lit/eob code */\nvar LENEXT = 22; /* i: waiting for length extra bits */\nvar DIST = 23; /* i: waiting for distance code */\nvar DISTEXT = 24; /* i: waiting for distance extra bits */\nvar MATCH = 25; /* o: waiting for output space to copy string */\nvar LIT = 26; /* o: waiting for output space to write literal */\nvar CHECK = 27; /* i: waiting for 32-bit check value */\nvar LENGTH = 28; /* i: waiting for 32-bit length (gzip) */\nvar DONE = 29; /* finished check, done -- remain here until reset */\nvar BAD = 30; /* got a data error -- remain here until reset */\nvar MEM = 31; /* got an inflate() memory error -- remain here until reset */\nvar SYNC = 32; /* looking for synchronization bytes to restart inflate() */\n\n/* ===========================================================================*/\n\n\n\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar MAX_WBITS = 15;\n/* 32K LZ77 window */\nvar DEF_WBITS = MAX_WBITS;\n\n\nfunction zswap32(q) {\n return (((q >>> 24) & 0xff) +\n ((q >>> 8) & 0xff00) +\n ((q & 0xff00) << 8) +\n ((q & 0xff) << 24));\n}\n\n\nfunction InflateState() {\n this.mode = 0; /* current inflate mode */\n this.last = false; /* true if processing last block */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.havedict = false; /* true if dictionary provided */\n this.flags = 0; /* gzip header method and flags (0 if zlib) */\n this.dmax = 0; /* zlib header max distance (INFLATE_STRICT) */\n this.check = 0; /* protected copy of check value */\n this.total = 0; /* protected copy of output count */\n // TODO: may be {}\n this.head = null; /* where to save gzip header information */\n\n /* sliding window */\n this.wbits = 0; /* log base 2 of requested window size */\n this.wsize = 0; /* window size or zero if not using window */\n this.whave = 0; /* valid bytes in the window */\n this.wnext = 0; /* window write index */\n this.window = null; /* allocated sliding window, if needed */\n\n /* bit accumulator */\n this.hold = 0; /* input bit accumulator */\n this.bits = 0; /* number of bits in \"in\" */\n\n /* for string and stored block copying */\n this.length = 0; /* literal or length of data to copy */\n this.offset = 0; /* distance back to copy string from */\n\n /* for table and code decoding */\n this.extra = 0; /* extra bits needed */\n\n /* fixed and dynamic code tables */\n this.lencode = null; /* starting table for length/literal codes */\n this.distcode = null; /* starting table for distance codes */\n this.lenbits = 0; /* index bits for lencode */\n this.distbits = 0; /* index bits for distcode */\n\n /* dynamic table building */\n this.ncode = 0; /* number of code length code lengths */\n this.nlen = 0; /* number of length code lengths */\n this.ndist = 0; /* number of distance code lengths */\n this.have = 0; /* number of code lengths in lens[] */\n this.next = null; /* next available space in codes[] */\n\n this.lens = new utils.Buf16(320); /* temporary storage for code lengths */\n this.work = new utils.Buf16(288); /* work area for code table building */\n\n /*\n because we don't have pointers in js, we use lencode and distcode directly\n as buffers so we don't need codes\n */\n //this.codes = new utils.Buf32(ENOUGH); /* space for code tables */\n this.lendyn = null; /* dynamic table for length/literal codes (JS specific) */\n this.distdyn = null; /* dynamic table for distance codes (JS specific) */\n this.sane = 0; /* if false, allow invalid distance too far */\n this.back = 0; /* bits back of last unprocessed length/lit */\n this.was = 0; /* initial length of match */\n}\n\nfunction inflateResetKeep(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n strm.total_in = strm.total_out = state.total = 0;\n strm.msg = ''; /*Z_NULL*/\n if (state.wrap) { /* to support ill-conceived Java test suite */\n strm.adler = state.wrap & 1;\n }\n state.mode = HEAD;\n state.last = 0;\n state.havedict = 0;\n state.dmax = 32768;\n state.head = null/*Z_NULL*/;\n state.hold = 0;\n state.bits = 0;\n //state.lencode = state.distcode = state.next = state.codes;\n state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS);\n state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS);\n\n state.sane = 1;\n state.back = -1;\n //Tracev((stderr, \"inflate: reset\\n\"));\n return Z_OK;\n}\n\nfunction inflateReset(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n state.wsize = 0;\n state.whave = 0;\n state.wnext = 0;\n return inflateResetKeep(strm);\n\n}\n\nfunction inflateReset2(strm, windowBits) {\n var wrap;\n var state;\n\n /* get the state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n\n /* extract wrap request from windowBits parameter */\n if (windowBits < 0) {\n wrap = 0;\n windowBits = -windowBits;\n }\n else {\n wrap = (windowBits >> 4) + 1;\n if (windowBits < 48) {\n windowBits &= 15;\n }\n }\n\n /* set number of window bits, free window if different */\n if (windowBits && (windowBits < 8 || windowBits > 15)) {\n return Z_STREAM_ERROR;\n }\n if (state.window !== null && state.wbits !== windowBits) {\n state.window = null;\n }\n\n /* update state and reset the rest of it */\n state.wrap = wrap;\n state.wbits = windowBits;\n return inflateReset(strm);\n}\n\nfunction inflateInit2(strm, windowBits) {\n var ret;\n var state;\n\n if (!strm) { return Z_STREAM_ERROR; }\n //strm.msg = Z_NULL; /* in case we return an error */\n\n state = new InflateState();\n\n //if (state === Z_NULL) return Z_MEM_ERROR;\n //Tracev((stderr, \"inflate: allocated\\n\"));\n strm.state = state;\n state.window = null/*Z_NULL*/;\n ret = inflateReset2(strm, windowBits);\n if (ret !== Z_OK) {\n strm.state = null/*Z_NULL*/;\n }\n return ret;\n}\n\nfunction inflateInit(strm) {\n return inflateInit2(strm, DEF_WBITS);\n}\n\n\n/*\n Return state with length and distance decoding tables and index sizes set to\n fixed code decoding. Normally this returns fixed tables from inffixed.h.\n If BUILDFIXED is defined, then instead this routine builds the tables the\n first time it's called, and returns those tables the first time and\n thereafter. This reduces the size of the code by about 2K bytes, in\n exchange for a little execution time. However, BUILDFIXED should not be\n used for threaded applications, since the rewriting of the tables and virgin\n may not be thread-safe.\n */\nvar virgin = true;\n\nvar lenfix, distfix; // We have no pointers in JS, so keep tables separate\n\nfunction fixedtables(state) {\n /* build fixed huffman tables if first call (may not be thread safe) */\n if (virgin) {\n var sym;\n\n lenfix = new utils.Buf32(512);\n distfix = new utils.Buf32(32);\n\n /* literal/length table */\n sym = 0;\n while (sym < 144) { state.lens[sym++] = 8; }\n while (sym < 256) { state.lens[sym++] = 9; }\n while (sym < 280) { state.lens[sym++] = 7; }\n while (sym < 288) { state.lens[sym++] = 8; }\n\n inflate_table(LENS, state.lens, 0, 288, lenfix, 0, state.work, { bits: 9 });\n\n /* distance table */\n sym = 0;\n while (sym < 32) { state.lens[sym++] = 5; }\n\n inflate_table(DISTS, state.lens, 0, 32, distfix, 0, state.work, { bits: 5 });\n\n /* do this just once */\n virgin = false;\n }\n\n state.lencode = lenfix;\n state.lenbits = 9;\n state.distcode = distfix;\n state.distbits = 5;\n}\n\n\n/*\n Update the window with the last wsize (normally 32K) bytes written before\n returning. If window does not exist yet, create it. This is only called\n when a window is already in use, or when output has been written during this\n inflate call, but the end of the deflate stream has not been reached yet.\n It is also called to create a window for dictionary data when a dictionary\n is loaded.\n\n Providing output buffers larger than 32K to inflate() should provide a speed\n advantage, since only the last 32K of output is copied to the sliding window\n upon return from inflate(), and since all distances after the first 32K of\n output will fall in the output data, making match copies simpler and faster.\n The advantage may be dependent on the size of the processor's data caches.\n */\nfunction updatewindow(strm, src, end, copy) {\n var dist;\n var state = strm.state;\n\n /* if it hasn't been done already, allocate space for the window */\n if (state.window === null) {\n state.wsize = 1 << state.wbits;\n state.wnext = 0;\n state.whave = 0;\n\n state.window = new utils.Buf8(state.wsize);\n }\n\n /* copy state->wsize or less output bytes into the circular window */\n if (copy >= state.wsize) {\n utils.arraySet(state.window, src, end - state.wsize, state.wsize, 0);\n state.wnext = 0;\n state.whave = state.wsize;\n }\n else {\n dist = state.wsize - state.wnext;\n if (dist > copy) {\n dist = copy;\n }\n //zmemcpy(state->window + state->wnext, end - copy, dist);\n utils.arraySet(state.window, src, end - copy, dist, state.wnext);\n copy -= dist;\n if (copy) {\n //zmemcpy(state->window, end - copy, copy);\n utils.arraySet(state.window, src, end - copy, copy, 0);\n state.wnext = copy;\n state.whave = state.wsize;\n }\n else {\n state.wnext += dist;\n if (state.wnext === state.wsize) { state.wnext = 0; }\n if (state.whave < state.wsize) { state.whave += dist; }\n }\n }\n return 0;\n}\n\nfunction inflate(strm, flush) {\n var state;\n var input, output; // input/output buffers\n var next; /* next input INDEX */\n var put; /* next output INDEX */\n var have, left; /* available input and output */\n var hold; /* bit buffer */\n var bits; /* bits in bit buffer */\n var _in, _out; /* save starting available input and output */\n var copy; /* number of stored or match bytes to copy */\n var from; /* where to copy match bytes from */\n var from_source;\n var here = 0; /* current decoding table entry */\n var here_bits, here_op, here_val; // paked \"here\" denormalized (JS specific)\n //var last; /* parent table entry */\n var last_bits, last_op, last_val; // paked \"last\" denormalized (JS specific)\n var len; /* length to copy for repeats, bits to drop */\n var ret; /* return code */\n var hbuf = new utils.Buf8(4); /* buffer for gzip header crc calculation */\n var opts;\n\n var n; // temporary var for NEED_BITS\n\n var order = /* permutation of code lengths */\n [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];\n\n\n if (!strm || !strm.state || !strm.output ||\n (!strm.input && strm.avail_in !== 0)) {\n return Z_STREAM_ERROR;\n }\n\n state = strm.state;\n if (state.mode === TYPE) { state.mode = TYPEDO; } /* skip check */\n\n\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n _in = have;\n _out = left;\n ret = Z_OK;\n\n inf_leave: // goto emulation\n for (;;) {\n switch (state.mode) {\n case HEAD:\n if (state.wrap === 0) {\n state.mode = TYPEDO;\n break;\n }\n //=== NEEDBITS(16);\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((state.wrap & 2) && hold === 0x8b1f) { /* gzip header */\n state.check = 0/*crc32(0L, Z_NULL, 0)*/;\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = FLAGS;\n break;\n }\n state.flags = 0; /* expect zlib header */\n if (state.head) {\n state.head.done = false;\n }\n if (!(state.wrap & 1) || /* check if zlib header allowed */\n (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {\n strm.msg = 'incorrect header check';\n state.mode = BAD;\n break;\n }\n if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n len = (hold & 0x0f)/*BITS(4)*/ + 8;\n if (state.wbits === 0) {\n state.wbits = len;\n }\n else if (len > state.wbits) {\n strm.msg = 'invalid window size';\n state.mode = BAD;\n break;\n }\n state.dmax = 1 << len;\n //Tracev((stderr, \"inflate: zlib header ok\\n\"));\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = hold & 0x200 ? DICTID : TYPE;\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n break;\n case FLAGS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.flags = hold;\n if ((state.flags & 0xff) !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n if (state.flags & 0xe000) {\n strm.msg = 'unknown header flags set';\n state.mode = BAD;\n break;\n }\n if (state.head) {\n state.head.text = ((hold >> 8) & 1);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = TIME;\n /* falls through */\n case TIME:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.time = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC4(state.check, hold)\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n hbuf[2] = (hold >>> 16) & 0xff;\n hbuf[3] = (hold >>> 24) & 0xff;\n state.check = crc32(state.check, hbuf, 4, 0);\n //===\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = OS;\n /* falls through */\n case OS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.xflags = (hold & 0xff);\n state.head.os = (hold >> 8);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = EXLEN;\n /* falls through */\n case EXLEN:\n if (state.flags & 0x0400) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length = hold;\n if (state.head) {\n state.head.extra_len = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n else if (state.head) {\n state.head.extra = null/*Z_NULL*/;\n }\n state.mode = EXTRA;\n /* falls through */\n case EXTRA:\n if (state.flags & 0x0400) {\n copy = state.length;\n if (copy > have) { copy = have; }\n if (copy) {\n if (state.head) {\n len = state.head.extra_len - state.length;\n if (!state.head.extra) {\n // Use untyped array for more convenient processing later\n state.head.extra = new Array(state.head.extra_len);\n }\n utils.arraySet(\n state.head.extra,\n input,\n next,\n // extra field is limited to 65536 bytes\n // - no need for additional size check\n copy,\n /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/\n len\n );\n //zmemcpy(state.head.extra + len, next,\n // len + copy > state.head.extra_max ?\n // state.head.extra_max - len : copy);\n }\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n state.length -= copy;\n }\n if (state.length) { break inf_leave; }\n }\n state.length = 0;\n state.mode = NAME;\n /* falls through */\n case NAME:\n if (state.flags & 0x0800) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n // TODO: 2 or 1 bytes?\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.name_max*/)) {\n state.head.name += String.fromCharCode(len);\n }\n } while (len && copy < have);\n\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.name = null;\n }\n state.length = 0;\n state.mode = COMMENT;\n /* falls through */\n case COMMENT:\n if (state.flags & 0x1000) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.comm_max*/)) {\n state.head.comment += String.fromCharCode(len);\n }\n } while (len && copy < have);\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.comment = null;\n }\n state.mode = HCRC;\n /* falls through */\n case HCRC:\n if (state.flags & 0x0200) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.check & 0xffff)) {\n strm.msg = 'header crc mismatch';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n if (state.head) {\n state.head.hcrc = ((state.flags >> 9) & 1);\n state.head.done = true;\n }\n strm.adler = state.check = 0;\n state.mode = TYPE;\n break;\n case DICTID:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n strm.adler = state.check = zswap32(hold);\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = DICT;\n /* falls through */\n case DICT:\n if (state.havedict === 0) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n return Z_NEED_DICT;\n }\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = TYPE;\n /* falls through */\n case TYPE:\n if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case TYPEDO:\n if (state.last) {\n //--- BYTEBITS() ---//\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n state.mode = CHECK;\n break;\n }\n //=== NEEDBITS(3); */\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.last = (hold & 0x01)/*BITS(1)*/;\n //--- DROPBITS(1) ---//\n hold >>>= 1;\n bits -= 1;\n //---//\n\n switch ((hold & 0x03)/*BITS(2)*/) {\n case 0: /* stored block */\n //Tracev((stderr, \"inflate: stored block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = STORED;\n break;\n case 1: /* fixed block */\n fixedtables(state);\n //Tracev((stderr, \"inflate: fixed codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = LEN_; /* decode codes */\n if (flush === Z_TREES) {\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break inf_leave;\n }\n break;\n case 2: /* dynamic block */\n //Tracev((stderr, \"inflate: dynamic codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = TABLE;\n break;\n case 3:\n strm.msg = 'invalid block type';\n state.mode = BAD;\n }\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break;\n case STORED:\n //--- BYTEBITS() ---// /* go to byte boundary */\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {\n strm.msg = 'invalid stored block lengths';\n state.mode = BAD;\n break;\n }\n state.length = hold & 0xffff;\n //Tracev((stderr, \"inflate: stored length %u\\n\",\n // state.length));\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = COPY_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case COPY_:\n state.mode = COPY;\n /* falls through */\n case COPY:\n copy = state.length;\n if (copy) {\n if (copy > have) { copy = have; }\n if (copy > left) { copy = left; }\n if (copy === 0) { break inf_leave; }\n //--- zmemcpy(put, next, copy); ---\n utils.arraySet(output, input, next, copy, put);\n //---//\n have -= copy;\n next += copy;\n left -= copy;\n put += copy;\n state.length -= copy;\n break;\n }\n //Tracev((stderr, \"inflate: stored end\\n\"));\n state.mode = TYPE;\n break;\n case TABLE:\n //=== NEEDBITS(14); */\n while (bits < 14) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n//#ifndef PKZIP_BUG_WORKAROUND\n if (state.nlen > 286 || state.ndist > 30) {\n strm.msg = 'too many length or distance symbols';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracev((stderr, \"inflate: table sizes ok\\n\"));\n state.have = 0;\n state.mode = LENLENS;\n /* falls through */\n case LENLENS:\n while (state.have < state.ncode) {\n //=== NEEDBITS(3);\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n while (state.have < 19) {\n state.lens[order[state.have++]] = 0;\n }\n // We have separate tables & no pointers. 2 commented lines below not needed.\n //state.next = state.codes;\n //state.lencode = state.next;\n // Switch to use dynamic table\n state.lencode = state.lendyn;\n state.lenbits = 7;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);\n state.lenbits = opts.bits;\n\n if (ret) {\n strm.msg = 'invalid code lengths set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, \"inflate: code lengths ok\\n\"));\n state.have = 0;\n state.mode = CODELENS;\n /* falls through */\n case CODELENS:\n while (state.have < state.nlen + state.ndist) {\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_val < 16) {\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.lens[state.have++] = here_val;\n }\n else {\n if (here_val === 16) {\n //=== NEEDBITS(here.bits + 2);\n n = here_bits + 2;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n if (state.have === 0) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n len = state.lens[state.have - 1];\n copy = 3 + (hold & 0x03);//BITS(2);\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n }\n else if (here_val === 17) {\n //=== NEEDBITS(here.bits + 3);\n n = here_bits + 3;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 3 + (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n else {\n //=== NEEDBITS(here.bits + 7);\n n = here_bits + 7;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 11 + (hold & 0x7f);//BITS(7);\n //--- DROPBITS(7) ---//\n hold >>>= 7;\n bits -= 7;\n //---//\n }\n if (state.have + copy > state.nlen + state.ndist) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n while (copy--) {\n state.lens[state.have++] = len;\n }\n }\n }\n\n /* handle error breaks in while */\n if (state.mode === BAD) { break; }\n\n /* check for end-of-block code (better have one) */\n if (state.lens[256] === 0) {\n strm.msg = 'invalid code -- missing end-of-block';\n state.mode = BAD;\n break;\n }\n\n /* build code tables -- note: do not change the lenbits or distbits\n values here (9 and 6) without reading the comments in inftrees.h\n concerning the ENOUGH constants, which depend on those values */\n state.lenbits = 9;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.lenbits = opts.bits;\n // state.lencode = state.next;\n\n if (ret) {\n strm.msg = 'invalid literal/lengths set';\n state.mode = BAD;\n break;\n }\n\n state.distbits = 6;\n //state.distcode.copy(state.codes);\n // Switch to use dynamic table\n state.distcode = state.distdyn;\n opts = { bits: state.distbits };\n ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.distbits = opts.bits;\n // state.distcode = state.next;\n\n if (ret) {\n strm.msg = 'invalid distances set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, 'inflate: codes ok\\n'));\n state.mode = LEN_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case LEN_:\n state.mode = LEN;\n /* falls through */\n case LEN:\n if (have >= 6 && left >= 258) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n inflate_fast(strm, _out);\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n if (state.mode === TYPE) {\n state.back = -1;\n }\n break;\n }\n state.back = 0;\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)]; /*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if (here_bits <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_op && (here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.lencode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n state.length = here_val;\n if (here_op === 0) {\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n state.mode = LIT;\n break;\n }\n if (here_op & 32) {\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.back = -1;\n state.mode = TYPE;\n break;\n }\n if (here_op & 64) {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break;\n }\n state.extra = here_op & 15;\n state.mode = LENEXT;\n /* falls through */\n case LENEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", state.length));\n state.was = state.length;\n state.mode = DIST;\n /* falls through */\n case DIST:\n for (;;) {\n here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if ((here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.distcode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n if (here_op & 64) {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break;\n }\n state.offset = here_val;\n state.extra = (here_op) & 15;\n state.mode = DISTEXT;\n /* falls through */\n case DISTEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n//#ifdef INFLATE_STRICT\n if (state.offset > state.dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracevv((stderr, \"inflate: distance %u\\n\", state.offset));\n state.mode = MATCH;\n /* falls through */\n case MATCH:\n if (left === 0) { break inf_leave; }\n copy = _out - left;\n if (state.offset > copy) { /* copy from window */\n copy = state.offset - copy;\n if (copy > state.whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// Trace((stderr, \"inflate.c too far\\n\"));\n// copy -= state.whave;\n// if (copy > state.length) { copy = state.length; }\n// if (copy > left) { copy = left; }\n// left -= copy;\n// state.length -= copy;\n// do {\n// output[put++] = 0;\n// } while (--copy);\n// if (state.length === 0) { state.mode = LEN; }\n// break;\n//#endif\n }\n if (copy > state.wnext) {\n copy -= state.wnext;\n from = state.wsize - copy;\n }\n else {\n from = state.wnext - copy;\n }\n if (copy > state.length) { copy = state.length; }\n from_source = state.window;\n }\n else { /* copy from output */\n from_source = output;\n from = put - state.offset;\n copy = state.length;\n }\n if (copy > left) { copy = left; }\n left -= copy;\n state.length -= copy;\n do {\n output[put++] = from_source[from++];\n } while (--copy);\n if (state.length === 0) { state.mode = LEN; }\n break;\n case LIT:\n if (left === 0) { break inf_leave; }\n output[put++] = state.length;\n left--;\n state.mode = LEN;\n break;\n case CHECK:\n if (state.wrap) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n // Use '|' instead of '+' to make sure that result is signed\n hold |= input[next++] << bits;\n bits += 8;\n }\n //===//\n _out -= left;\n strm.total_out += _out;\n state.total += _out;\n if (_out) {\n strm.adler = state.check =\n /*UPDATE(state.check, put - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out));\n\n }\n _out = left;\n // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too\n if ((state.flags ? hold : zswap32(hold)) !== state.check) {\n strm.msg = 'incorrect data check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: check matches trailer\\n\"));\n }\n state.mode = LENGTH;\n /* falls through */\n case LENGTH:\n if (state.wrap && state.flags) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.total & 0xffffffff)) {\n strm.msg = 'incorrect length check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: length matches trailer\\n\"));\n }\n state.mode = DONE;\n /* falls through */\n case DONE:\n ret = Z_STREAM_END;\n break inf_leave;\n case BAD:\n ret = Z_DATA_ERROR;\n break inf_leave;\n case MEM:\n return Z_MEM_ERROR;\n case SYNC:\n /* falls through */\n default:\n return Z_STREAM_ERROR;\n }\n }\n\n // inf_leave <- here is real place for \"goto inf_leave\", emulated via \"break inf_leave\"\n\n /*\n Return from inflate(), updating the total counts and the check value.\n If there was no progress during the inflate() call, return a buffer\n error. Call updatewindow() to create and/or update the window state.\n Note: a memory error from inflate() is non-recoverable.\n */\n\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n\n if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&\n (state.mode < CHECK || flush !== Z_FINISH))) {\n if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n }\n _in -= strm.avail_in;\n _out -= strm.avail_out;\n strm.total_in += _in;\n strm.total_out += _out;\n state.total += _out;\n if (state.wrap && _out) {\n strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out));\n }\n strm.data_type = state.bits + (state.last ? 64 : 0) +\n (state.mode === TYPE ? 128 : 0) +\n (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);\n if (((_in === 0 && _out === 0) || flush === Z_FINISH) && ret === Z_OK) {\n ret = Z_BUF_ERROR;\n }\n return ret;\n}\n\nfunction inflateEnd(strm) {\n\n if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {\n return Z_STREAM_ERROR;\n }\n\n var state = strm.state;\n if (state.window) {\n state.window = null;\n }\n strm.state = null;\n return Z_OK;\n}\n\nfunction inflateGetHeader(strm, head) {\n var state;\n\n /* check state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR; }\n\n /* save header structure */\n state.head = head;\n head.done = false;\n return Z_OK;\n}\n\nfunction inflateSetDictionary(strm, dictionary) {\n var dictLength = dictionary.length;\n\n var state;\n var dictid;\n var ret;\n\n /* check state */\n if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR; }\n state = strm.state;\n\n if (state.wrap !== 0 && state.mode !== DICT) {\n return Z_STREAM_ERROR;\n }\n\n /* check for correct dictionary identifier */\n if (state.mode === DICT) {\n dictid = 1; /* adler32(0, null, 0)*/\n /* dictid = adler32(dictid, dictionary, dictLength); */\n dictid = adler32(dictid, dictionary, dictLength, 0);\n if (dictid !== state.check) {\n return Z_DATA_ERROR;\n }\n }\n /* copy dictionary to window using updatewindow(), which will amend the\n existing dictionary if appropriate */\n ret = updatewindow(strm, dictionary, dictLength, dictLength);\n if (ret) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n state.havedict = 1;\n // Tracev((stderr, \"inflate: dictionary set\\n\"));\n return Z_OK;\n}\n\nexports.inflateReset = inflateReset;\nexports.inflateReset2 = inflateReset2;\nexports.inflateResetKeep = inflateResetKeep;\nexports.inflateInit = inflateInit;\nexports.inflateInit2 = inflateInit2;\nexports.inflate = inflate;\nexports.inflateEnd = inflateEnd;\nexports.inflateGetHeader = inflateGetHeader;\nexports.inflateSetDictionary = inflateSetDictionary;\nexports.inflateInfo = 'pako inflate (from Nodeca project)';\n\n/* Not implemented\nexports.inflateCopy = inflateCopy;\nexports.inflateGetDictionary = inflateGetDictionary;\nexports.inflateMark = inflateMark;\nexports.inflatePrime = inflatePrime;\nexports.inflateSync = inflateSync;\nexports.inflateSyncPoint = inflateSyncPoint;\nexports.inflateUndermine = inflateUndermine;\n*/\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/pako/lib/zlib/inflate.js\n// module id = 611\n// module chunks = 1","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// See state defs from inflate.js\nvar BAD = 30; /* got a data error -- remain here until reset */\nvar TYPE = 12; /* i: waiting for type bits, including last-flag bit */\n\n/*\n Decode literal, length, and distance codes and write out the resulting\n literal and match bytes until either not enough input or output is\n available, an end-of-block is encountered, or a data error is encountered.\n When large enough input and output buffers are supplied to inflate(), for\n example, a 16K input buffer and a 64K output buffer, more than 95% of the\n inflate execution time is spent in this routine.\n\n Entry assumptions:\n\n state.mode === LEN\n strm.avail_in >= 6\n strm.avail_out >= 258\n start >= strm.avail_out\n state.bits < 8\n\n On return, state.mode is one of:\n\n LEN -- ran out of enough output space or enough available input\n TYPE -- reached end of block code, inflate() to interpret next block\n BAD -- error in block data\n\n Notes:\n\n - The maximum input bits used by a length/distance pair is 15 bits for the\n length code, 5 bits for the length extra, 15 bits for the distance code,\n and 13 bits for the distance extra. This totals 48 bits, or six bytes.\n Therefore if strm.avail_in >= 6, then there is enough input to avoid\n checking for available input while decoding.\n\n - The maximum bytes that a single length/distance pair can output is 258\n bytes, which is the maximum length that can be coded. inflate_fast()\n requires strm.avail_out >= 258 for each loop to avoid checking for\n output space.\n */\nmodule.exports = function inflate_fast(strm, start) {\n var state;\n var _in; /* local strm.input */\n var last; /* have enough input while in < last */\n var _out; /* local strm.output */\n var beg; /* inflate()'s initial strm.output */\n var end; /* while out < end, enough space available */\n//#ifdef INFLATE_STRICT\n var dmax; /* maximum distance from zlib header */\n//#endif\n var wsize; /* window size or zero if not using window */\n var whave; /* valid bytes in the window */\n var wnext; /* window write index */\n // Use `s_window` instead `window`, avoid conflict with instrumentation tools\n var s_window; /* allocated sliding window, if wsize != 0 */\n var hold; /* local strm.hold */\n var bits; /* local strm.bits */\n var lcode; /* local strm.lencode */\n var dcode; /* local strm.distcode */\n var lmask; /* mask for first level of length codes */\n var dmask; /* mask for first level of distance codes */\n var here; /* retrieved table entry */\n var op; /* code bits, operation, extra bits, or */\n /* window position, window bytes to copy */\n var len; /* match length, unused bytes */\n var dist; /* match distance */\n var from; /* where to copy match from */\n var from_source;\n\n\n var input, output; // JS specific, because we have no pointers\n\n /* copy state to local variables */\n state = strm.state;\n //here = state.here;\n _in = strm.next_in;\n input = strm.input;\n last = _in + (strm.avail_in - 5);\n _out = strm.next_out;\n output = strm.output;\n beg = _out - (start - strm.avail_out);\n end = _out + (strm.avail_out - 257);\n//#ifdef INFLATE_STRICT\n dmax = state.dmax;\n//#endif\n wsize = state.wsize;\n whave = state.whave;\n wnext = state.wnext;\n s_window = state.window;\n hold = state.hold;\n bits = state.bits;\n lcode = state.lencode;\n dcode = state.distcode;\n lmask = (1 << state.lenbits) - 1;\n dmask = (1 << state.distbits) - 1;\n\n\n /* decode literals and length/distances until end-of-block or not enough\n input data or output space */\n\n top:\n do {\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n\n here = lcode[hold & lmask];\n\n dolen:\n for (;;) { // Goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n if (op === 0) { /* literal */\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n output[_out++] = here & 0xffff/*here.val*/;\n }\n else if (op & 16) { /* length base */\n len = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (op) {\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n len += hold & ((1 << op) - 1);\n hold >>>= op;\n bits -= op;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", len));\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n here = dcode[hold & dmask];\n\n dodist:\n for (;;) { // goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n\n if (op & 16) { /* distance base */\n dist = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n }\n dist += hold & ((1 << op) - 1);\n//#ifdef INFLATE_STRICT\n if (dist > dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n//#endif\n hold >>>= op;\n bits -= op;\n //Tracevv((stderr, \"inflate: distance %u\\n\", dist));\n op = _out - beg; /* max distance in output */\n if (dist > op) { /* see if copy from window */\n op = dist - op; /* distance back in window */\n if (op > whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// if (len <= op - whave) {\n// do {\n// output[_out++] = 0;\n// } while (--len);\n// continue top;\n// }\n// len -= op - whave;\n// do {\n// output[_out++] = 0;\n// } while (--op > whave);\n// if (op === 0) {\n// from = _out - dist;\n// do {\n// output[_out++] = output[from++];\n// } while (--len);\n// continue top;\n// }\n//#endif\n }\n from = 0; // window index\n from_source = s_window;\n if (wnext === 0) { /* very common case */\n from += wsize - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n else if (wnext < op) { /* wrap around window */\n from += wsize + wnext - op;\n op -= wnext;\n if (op < len) { /* some from end of window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = 0;\n if (wnext < len) { /* some from start of window */\n op = wnext;\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n }\n else { /* contiguous in window */\n from += wnext - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n while (len > 2) {\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n len -= 3;\n }\n if (len) {\n output[_out++] = from_source[from++];\n if (len > 1) {\n output[_out++] = from_source[from++];\n }\n }\n }\n else {\n from = _out - dist; /* copy direct from output */\n do { /* minimum length is three */\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n len -= 3;\n } while (len > 2);\n if (len) {\n output[_out++] = output[from++];\n if (len > 1) {\n output[_out++] = output[from++];\n }\n }\n }\n }\n else if ((op & 64) === 0) { /* 2nd level distance code */\n here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dodist;\n }\n else {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n }\n else if ((op & 64) === 0) { /* 2nd level length code */\n here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dolen;\n }\n else if (op & 32) { /* end-of-block */\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.mode = TYPE;\n break top;\n }\n else {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n } while (_in < last && _out < end);\n\n /* return unused bytes (on entry, bits < 8, so in won't go too far back) */\n len = bits >> 3;\n _in -= len;\n bits -= len << 3;\n hold &= (1 << bits) - 1;\n\n /* update state and return */\n strm.next_in = _in;\n strm.next_out = _out;\n strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));\n strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));\n state.hold = hold;\n state.bits = bits;\n return;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/pako/lib/zlib/inffast.js\n// module id = 612\n// module chunks = 1","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = require('../utils/common');\n\nvar MAXBITS = 15;\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\nvar lbase = [ /* Length codes 257..285 base */\n 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0\n];\n\nvar lext = [ /* Length codes 257..285 extra */\n 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,\n 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78\n];\n\nvar dbase = [ /* Distance codes 0..29 base */\n 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n 8193, 12289, 16385, 24577, 0, 0\n];\n\nvar dext = [ /* Distance codes 0..29 extra */\n 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,\n 23, 23, 24, 24, 25, 25, 26, 26, 27, 27,\n 28, 28, 29, 29, 64, 64\n];\n\nmodule.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts)\n{\n var bits = opts.bits;\n //here = opts.here; /* table entry for duplication */\n\n var len = 0; /* a code's length in bits */\n var sym = 0; /* index of code symbols */\n var min = 0, max = 0; /* minimum and maximum code lengths */\n var root = 0; /* number of index bits for root table */\n var curr = 0; /* number of index bits for current table */\n var drop = 0; /* code bits to drop for sub-table */\n var left = 0; /* number of prefix codes available */\n var used = 0; /* code entries in table used */\n var huff = 0; /* Huffman code */\n var incr; /* for incrementing code, index */\n var fill; /* index for replicating entries */\n var low; /* low bits for current root entry */\n var mask; /* mask for low root bits */\n var next; /* next available space in table */\n var base = null; /* base value table to use */\n var base_index = 0;\n// var shoextra; /* extra bits table to use */\n var end; /* use base and extra for symbol > end */\n var count = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1]; /* number of codes of each length */\n var offs = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1]; /* offsets in table for each length */\n var extra = null;\n var extra_index = 0;\n\n var here_bits, here_op, here_val;\n\n /*\n Process a set of code lengths to create a canonical Huffman code. The\n code lengths are lens[0..codes-1]. Each length corresponds to the\n symbols 0..codes-1. The Huffman code is generated by first sorting the\n symbols by length from short to long, and retaining the symbol order\n for codes with equal lengths. Then the code starts with all zero bits\n for the first code of the shortest length, and the codes are integer\n increments for the same length, and zeros are appended as the length\n increases. For the deflate format, these bits are stored backwards\n from their more natural integer increment ordering, and so when the\n decoding tables are built in the large loop below, the integer codes\n are incremented backwards.\n\n This routine assumes, but does not check, that all of the entries in\n lens[] are in the range 0..MAXBITS. The caller must assure this.\n 1..MAXBITS is interpreted as that code length. zero means that that\n symbol does not occur in this code.\n\n The codes are sorted by computing a count of codes for each length,\n creating from that a table of starting indices for each length in the\n sorted table, and then entering the symbols in order in the sorted\n table. The sorted table is work[], with that space being provided by\n the caller.\n\n The length counts are used for other purposes as well, i.e. finding\n the minimum and maximum length codes, determining if there are any\n codes at all, checking for a valid set of lengths, and looking ahead\n at length counts to determine sub-table sizes when building the\n decoding tables.\n */\n\n /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */\n for (len = 0; len <= MAXBITS; len++) {\n count[len] = 0;\n }\n for (sym = 0; sym < codes; sym++) {\n count[lens[lens_index + sym]]++;\n }\n\n /* bound code lengths, force root to be within code lengths */\n root = bits;\n for (max = MAXBITS; max >= 1; max--) {\n if (count[max] !== 0) { break; }\n }\n if (root > max) {\n root = max;\n }\n if (max === 0) { /* no symbols to code at all */\n //table.op[opts.table_index] = 64; //here.op = (var char)64; /* invalid code marker */\n //table.bits[opts.table_index] = 1; //here.bits = (var char)1;\n //table.val[opts.table_index++] = 0; //here.val = (var short)0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n\n //table.op[opts.table_index] = 64;\n //table.bits[opts.table_index] = 1;\n //table.val[opts.table_index++] = 0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n opts.bits = 1;\n return 0; /* no symbols, but wait for decoding to report error */\n }\n for (min = 1; min < max; min++) {\n if (count[min] !== 0) { break; }\n }\n if (root < min) {\n root = min;\n }\n\n /* check for an over-subscribed or incomplete set of lengths */\n left = 1;\n for (len = 1; len <= MAXBITS; len++) {\n left <<= 1;\n left -= count[len];\n if (left < 0) {\n return -1;\n } /* over-subscribed */\n }\n if (left > 0 && (type === CODES || max !== 1)) {\n return -1; /* incomplete set */\n }\n\n /* generate offsets into symbol table for each length for sorting */\n offs[1] = 0;\n for (len = 1; len < MAXBITS; len++) {\n offs[len + 1] = offs[len] + count[len];\n }\n\n /* sort symbols by length, by symbol order within each length */\n for (sym = 0; sym < codes; sym++) {\n if (lens[lens_index + sym] !== 0) {\n work[offs[lens[lens_index + sym]]++] = sym;\n }\n }\n\n /*\n Create and fill in decoding tables. In this loop, the table being\n filled is at next and has curr index bits. The code being used is huff\n with length len. That code is converted to an index by dropping drop\n bits off of the bottom. For codes where len is less than drop + curr,\n those top drop + curr - len bits are incremented through all values to\n fill the table with replicated entries.\n\n root is the number of index bits for the root table. When len exceeds\n root, sub-tables are created pointed to by the root entry with an index\n of the low root bits of huff. This is saved in low to check for when a\n new sub-table should be started. drop is zero when the root table is\n being filled, and drop is root when sub-tables are being filled.\n\n When a new sub-table is needed, it is necessary to look ahead in the\n code lengths to determine what size sub-table is needed. The length\n counts are used for this, and so count[] is decremented as codes are\n entered in the tables.\n\n used keeps track of how many table entries have been allocated from the\n provided *table space. It is checked for LENS and DIST tables against\n the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in\n the initial root table size constants. See the comments in inftrees.h\n for more information.\n\n sym increments through all symbols, and the loop terminates when\n all codes of length max, i.e. all codes, have been processed. This\n routine permits incomplete codes, so another loop after this one fills\n in the rest of the decoding tables with invalid code markers.\n */\n\n /* set up for code type */\n // poor man optimization - use if-else instead of switch,\n // to avoid deopts in old v8\n if (type === CODES) {\n base = extra = work; /* dummy value--not used */\n end = 19;\n\n } else if (type === LENS) {\n base = lbase;\n base_index -= 257;\n extra = lext;\n extra_index -= 257;\n end = 256;\n\n } else { /* DISTS */\n base = dbase;\n extra = dext;\n end = -1;\n }\n\n /* initialize opts for loop */\n huff = 0; /* starting code */\n sym = 0; /* starting code symbol */\n len = min; /* starting code length */\n next = table_index; /* current table to fill in */\n curr = root; /* current table index bits */\n drop = 0; /* current bits to drop from code for index */\n low = -1; /* trigger new sub-table when len > root */\n used = 1 << root; /* use root table entries */\n mask = used - 1; /* mask for comparing low */\n\n /* check available table space */\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* process all codes and make table entries */\n for (;;) {\n /* create table entry */\n here_bits = len - drop;\n if (work[sym] < end) {\n here_op = 0;\n here_val = work[sym];\n }\n else if (work[sym] > end) {\n here_op = extra[extra_index + work[sym]];\n here_val = base[base_index + work[sym]];\n }\n else {\n here_op = 32 + 64; /* end of block */\n here_val = 0;\n }\n\n /* replicate for those indices with low len bits equal to huff */\n incr = 1 << (len - drop);\n fill = 1 << curr;\n min = fill; /* save offset to next table */\n do {\n fill -= incr;\n table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;\n } while (fill !== 0);\n\n /* backwards increment the len-bit code huff */\n incr = 1 << (len - 1);\n while (huff & incr) {\n incr >>= 1;\n }\n if (incr !== 0) {\n huff &= incr - 1;\n huff += incr;\n } else {\n huff = 0;\n }\n\n /* go to next symbol, update count, len */\n sym++;\n if (--count[len] === 0) {\n if (len === max) { break; }\n len = lens[lens_index + work[sym]];\n }\n\n /* create new sub-table if needed */\n if (len > root && (huff & mask) !== low) {\n /* if first time, transition to sub-tables */\n if (drop === 0) {\n drop = root;\n }\n\n /* increment past last table */\n next += min; /* here min is 1 << curr */\n\n /* determine length of next table */\n curr = len - drop;\n left = 1 << curr;\n while (curr + drop < max) {\n left -= count[curr + drop];\n if (left <= 0) { break; }\n curr++;\n left <<= 1;\n }\n\n /* check for enough space */\n used += 1 << curr;\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* point entry in root table to sub-table */\n low = huff & mask;\n /*table.op[low] = curr;\n table.bits[low] = root;\n table.val[low] = next - opts.table_index;*/\n table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;\n }\n }\n\n /* fill in remaining table entry if code is incomplete (guaranteed to have\n at most one remaining entry, since if the code is incomplete, the\n maximum code length that was allowed to get this far is one bit) */\n if (huff !== 0) {\n //table.op[next + huff] = 64; /* invalid code marker */\n //table.bits[next + huff] = len - drop;\n //table.val[next + huff] = 0;\n table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;\n }\n\n /* set return parameters */\n //opts.table_index += used;\n opts.bits = root;\n return 0;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/pako/lib/zlib/inftrees.js\n// module id = 613\n// module chunks = 1","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction GZheader() {\n /* true if compressed data believed to be text */\n this.text = 0;\n /* modification time */\n this.time = 0;\n /* extra flags (not used when writing a gzip file) */\n this.xflags = 0;\n /* operating system */\n this.os = 0;\n /* pointer to extra field or Z_NULL if none */\n this.extra = null;\n /* extra field length (valid if extra != Z_NULL) */\n this.extra_len = 0; // Actually, we don't need it in JS,\n // but leave for few code modifications\n\n //\n // Setup limits is not necessary because in js we should not preallocate memory\n // for inflate use constant limit in 65536 bytes\n //\n\n /* space at extra (only when reading header) */\n // this.extra_max = 0;\n /* pointer to zero-terminated file name or Z_NULL */\n this.name = '';\n /* space at name (only when reading header) */\n // this.name_max = 0;\n /* pointer to zero-terminated comment or Z_NULL */\n this.comment = '';\n /* space at comment (only when reading header) */\n // this.comm_max = 0;\n /* true if there was or will be a header crc */\n this.hcrc = 0;\n /* true when done reading gzip header (not used when writing a gzip file) */\n this.done = false;\n}\n\nmodule.exports = GZheader;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/pako/lib/zlib/gzheader.js\n// module id = 614\n// module chunks = 1","import pako from 'pako';\n\nimport macro from 'vtk.js/Sources/macro';\nimport Endian from 'vtk.js/Sources/Common/Core/Endian';\nimport { DataTypeByteSize } from 'vtk.js/Sources/Common/Core/DataArray/Constants';\n\nconst { vtkErrorMacro, vtkDebugMacro } = macro;\n\n/* eslint-disable prefer-promise-reject-errors */\n\nlet requestCount = 0;\n\nfunction fetchBinary(url, options = {}) {\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n\n xhr.onreadystatechange = (e) => {\n if (xhr.readyState === 4) {\n if (xhr.status === 200 || xhr.status === 0) {\n resolve(xhr.response);\n } else {\n reject({ xhr, e });\n }\n }\n };\n\n if (options && options.progressCallback) {\n xhr.addEventListener('progress', options.progressCallback);\n }\n\n // Make request\n xhr.open('GET', url, true);\n xhr.responseType = 'arraybuffer';\n xhr.send();\n });\n}\n\nfunction fetchArray(instance = {}, baseURL, array, options = {}) {\n if (array.ref && !array.ref.pending) {\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n const url = [\n baseURL,\n array.ref.basepath,\n options.compression ? `${array.ref.id}.gz` : array.ref.id,\n ].join('/');\n\n xhr.onreadystatechange = (e) => {\n if (xhr.readyState === 1) {\n array.ref.pending = true;\n if (++requestCount === 1 && instance.invokeBusy) {\n instance.invokeBusy(true);\n }\n }\n if (xhr.readyState === 4) {\n array.ref.pending = false;\n if (xhr.status === 200 || xhr.status === 0) {\n array.buffer = xhr.response;\n\n if (options.compression) {\n if (array.dataType === 'string' || array.dataType === 'JSON') {\n array.buffer = pako.inflate(new Uint8Array(array.buffer), {\n to: 'string',\n });\n } else {\n array.buffer = pako.inflate(\n new Uint8Array(array.buffer)\n ).buffer;\n }\n }\n\n if (array.ref.encode === 'JSON') {\n array.values = JSON.parse(array.buffer);\n } else {\n if (Endian.ENDIANNESS !== array.ref.encode && Endian.ENDIANNESS) {\n // Need to swap bytes\n vtkDebugMacro(`Swap bytes of ${array.name}`);\n Endian.swapBytes(\n array.buffer,\n DataTypeByteSize[array.dataType]\n );\n }\n\n array.values = new window[array.dataType](array.buffer);\n }\n\n if (array.values.length !== array.size) {\n vtkErrorMacro(\n `Error in FetchArray: ${\n array.name\n }, does not have the proper array size. Got ${\n array.values.length\n }, instead of ${array.size}`\n );\n }\n\n // Done with the ref and work\n delete array.ref;\n if (--requestCount === 0 && instance.invokeBusy) {\n instance.invokeBusy(false);\n }\n if (instance.modified) {\n instance.modified();\n }\n resolve(array);\n } else {\n reject({ xhr, e });\n }\n }\n };\n\n if (options && options.progressCallback) {\n xhr.addEventListener('progress', options.progressCallback);\n }\n\n // Make request\n xhr.open('GET', url, true);\n xhr.responseType =\n options.compression || array.dataType !== 'string'\n ? 'arraybuffer'\n : 'text';\n xhr.send();\n });\n }\n\n return Promise.resolve(array);\n}\n\n// ----------------------------------------------------------------------------\n\nfunction fetchJSON(instance = {}, url, options = {}) {\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n\n xhr.onreadystatechange = (e) => {\n if (xhr.readyState === 1) {\n if (++requestCount === 1 && instance.invokeBusy) {\n instance.invokeBusy(true);\n }\n }\n if (xhr.readyState === 4) {\n if (--requestCount === 0 && instance.invokeBusy) {\n instance.invokeBusy(false);\n }\n if (xhr.status === 200 || xhr.status === 0) {\n if (options.compression) {\n resolve(\n JSON.parse(\n pako.inflate(new Uint8Array(xhr.response), { to: 'string' })\n )\n );\n } else {\n resolve(JSON.parse(xhr.responseText));\n }\n } else {\n reject({ xhr, e });\n }\n }\n };\n\n if (options && options.progressCallback) {\n xhr.addEventListener('progress', options.progressCallback);\n }\n\n // Make request\n xhr.open('GET', url, true);\n xhr.responseType = options.compression ? 'arraybuffer' : 'text';\n xhr.send();\n });\n}\n\n// ----------------------------------------------------------------------------\n\nfunction fetchText(instance = {}, url, options = {}) {\n if (options && options.compression && options.compression !== 'gz') {\n vtkErrorMacro('Supported algorithms are: [gz]');\n vtkErrorMacro(`Unkown compression algorithm: ${options.compression}`);\n }\n\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n\n xhr.onreadystatechange = (e) => {\n if (xhr.readyState === 1) {\n if (++requestCount === 1 && instance.invokeBusy) {\n instance.invokeBusy(true);\n }\n }\n if (xhr.readyState === 4) {\n if (--requestCount === 0 && instance.invokeBusy) {\n instance.invokeBusy(false);\n }\n if (xhr.status === 200 || xhr.status === 0) {\n if (options.compression) {\n resolve(\n pako.inflate(new Uint8Array(xhr.response), { to: 'string' })\n );\n } else {\n resolve(xhr.responseText);\n }\n } else {\n reject({ xhr, e });\n }\n }\n };\n\n if (options.progressCallback) {\n xhr.addEventListener('progress', options.progressCallback);\n }\n\n // Make request\n xhr.open('GET', url, true);\n xhr.responseType = options.compression ? 'arraybuffer' : 'text';\n xhr.send();\n });\n}\n\n// ----------------------------------------------------------------------------\n\nexport default {\n fetchArray,\n fetchJSON,\n fetchText,\n fetchBinary, // Only for HTTP\n};\n\n/* eslint-enable prefer-promise-reject-errors */\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/IO/Core/DataAccessHelper/HttpDataAccessHelper.js","import JSZip from 'jszip';\nimport pako from 'pako';\n\nimport macro from 'vtk.js/Sources/macro';\nimport Endian from 'vtk.js/Sources/Common/Core/Endian';\nimport { DataTypeByteSize } from 'vtk.js/Sources/Common/Core/DataArray/Constants';\n\nconst { vtkErrorMacro, vtkDebugMacro } = macro;\n\nfunction handleUint8Array(array, compression, done) {\n return (uint8array) => {\n array.buffer = new ArrayBuffer(uint8array.length);\n\n // copy uint8array to buffer\n const view = new Uint8Array(array.buffer);\n view.set(uint8array);\n\n if (compression) {\n if (array.dataType === 'string' || array.dataType === 'JSON') {\n array.buffer = pako.inflate(new Uint8Array(array.buffer), {\n to: 'string',\n });\n } else {\n array.buffer = pako.inflate(new Uint8Array(array.buffer)).buffer;\n }\n }\n\n if (array.ref.encode === 'JSON') {\n array.values = JSON.parse(array.buffer);\n } else {\n if (Endian.ENDIANNESS !== array.ref.encode && Endian.ENDIANNESS) {\n // Need to swap bytes\n vtkDebugMacro(`Swap bytes of ${array.name}`);\n Endian.swapBytes(array.buffer, DataTypeByteSize[array.dataType]);\n }\n\n array.values = new window[array.dataType](array.buffer);\n }\n\n if (array.values.length !== array.size) {\n vtkErrorMacro(\n `Error in FetchArray: ${\n array.name\n } does not have the proper array size. Got ${\n array.values.length\n }, instead of ${array.size}`\n );\n }\n\n done();\n };\n}\n\nfunction handleString(array, compression, done) {\n return (string) => {\n if (compression) {\n array.values = JSON.parse(pako.inflate(string, { to: 'string' }));\n } else {\n array.values = JSON.parse(string);\n }\n done();\n };\n}\n\nconst handlers = {\n uint8array: handleUint8Array,\n string: handleString,\n};\n\nfunction removeLeadingSlash(str) {\n return str[0] === '/' ? str.substr(1) : str;\n}\n\nfunction create(createOptions) {\n let ready = false;\n let requestCount = 0;\n const zip = new JSZip();\n let zipRoot = zip;\n zip.loadAsync(createOptions.zipContent).then(() => {\n ready = true;\n\n // Find root index.json\n const metaFiles = [];\n zip.forEach((relativePath, zipEntry) => {\n if (relativePath.indexOf('index.json') !== -1) {\n metaFiles.push(relativePath);\n }\n });\n metaFiles.sort((a, b) => a.length - b.length);\n const fullRootPath = metaFiles[0].split('/');\n while (fullRootPath.length > 1) {\n const dirName = fullRootPath.shift();\n zipRoot = zipRoot.folder(dirName);\n }\n\n if (createOptions.callback) {\n createOptions.callback(zip);\n }\n });\n return {\n fetchArray(instance = {}, baseURL, array, options = {}) {\n return new Promise((resolve, reject) => {\n if (!ready) {\n vtkErrorMacro('ERROR!!! zip not ready...');\n }\n const url = removeLeadingSlash(\n [\n baseURL,\n array.ref.basepath,\n options.compression ? `${array.ref.id}.gz` : array.ref.id,\n ].join('/')\n );\n\n if (++requestCount === 1 && instance.invokeBusy) {\n instance.invokeBusy(true);\n }\n\n function doneCleanUp() {\n // Done with the ref and work\n delete array.ref;\n if (--requestCount === 0 && instance.invokeBusy) {\n instance.invokeBusy(false);\n }\n if (instance.modified) {\n instance.modified();\n }\n resolve(array);\n }\n\n const asyncType =\n array.dataType === 'string' && !options.compression\n ? 'string'\n : 'uint8array';\n const asyncCallback = handlers[asyncType](\n array,\n options.compression,\n doneCleanUp\n );\n\n zipRoot\n .file(url)\n .async(asyncType)\n .then(asyncCallback);\n });\n },\n\n fetchJSON(instance = {}, url, options = {}) {\n const path = removeLeadingSlash(url);\n if (!ready) {\n vtkErrorMacro('ERROR!!! zip not ready...');\n }\n\n if (options.compression) {\n if (options.compression === 'gz') {\n return zipRoot\n .file(path)\n .async('uint8array')\n .then((uint8array) => {\n const str = pako.inflate(uint8array, { to: 'string' });\n return Promise.resolve(JSON.parse(str));\n });\n }\n return Promise.reject(new Error('Invalid compression'));\n }\n\n return zipRoot\n .file(path)\n .async('string')\n .then((str) => Promise.resolve(JSON.parse(str)));\n },\n\n fetchText(instance = {}, url, options = {}) {\n const path = removeLeadingSlash(url);\n if (!ready) {\n vtkErrorMacro('ERROR!!! zip not ready...');\n }\n\n if (options.compression) {\n if (options.compression === 'gz') {\n return zipRoot\n .file(path)\n .async('uint8array')\n .then((uint8array) => {\n const str = pako.inflate(uint8array, { to: 'string' });\n return Promise.resolve(str);\n });\n }\n return Promise.reject(new Error('Invalid compression'));\n }\n\n return zipRoot\n .file(path)\n .async('string')\n .then((str) => Promise.resolve(str));\n },\n };\n}\n\nexport default {\n create,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/IO/Core/DataAccessHelper/JSZipDataAccessHelper.js","'use strict';\n\n/**\n * Representation a of zip file in js\n * @constructor\n */\nfunction JSZip() {\n // if this constructor is used without `new`, it adds `new` before itself:\n if(!(this instanceof JSZip)) {\n return new JSZip();\n }\n\n if(arguments.length) {\n throw new Error(\"The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.\");\n }\n\n // object containing the files :\n // {\n // \"folder/\" : {...},\n // \"folder/data.txt\" : {...}\n // }\n this.files = {};\n\n this.comment = null;\n\n // Where we are in the hierarchy\n this.root = \"\";\n this.clone = function() {\n var newObj = new JSZip();\n for (var i in this) {\n if (typeof this[i] !== \"function\") {\n newObj[i] = this[i];\n }\n }\n return newObj;\n };\n}\nJSZip.prototype = require('./object');\nJSZip.prototype.loadAsync = require('./load');\nJSZip.support = require('./support');\nJSZip.defaults = require('./defaults');\n\n// TODO find a better way to handle this version,\n// a require('package.json').version doesn't work with webpack, see #327\nJSZip.version = \"3.1.4\";\n\nJSZip.loadAsync = function (content, options) {\n return new JSZip().loadAsync(content, options);\n};\n\nJSZip.external = require(\"./external\");\nmodule.exports = JSZip;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/lib/index.js\n// module id = 617\n// module chunks = 1","'use strict';\nvar utf8 = require('./utf8');\nvar utils = require('./utils');\nvar GenericWorker = require('./stream/GenericWorker');\nvar StreamHelper = require('./stream/StreamHelper');\nvar defaults = require('./defaults');\nvar CompressedObject = require('./compressedObject');\nvar ZipObject = require('./zipObject');\nvar generate = require(\"./generate\");\nvar nodejsUtils = require(\"./nodejsUtils\");\nvar NodejsStreamInputAdapter = require(\"./nodejs/NodejsStreamInputAdapter\");\n\n\n/**\n * Add a file in the current folder.\n * @private\n * @param {string} name the name of the file\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data of the file\n * @param {Object} originalOptions the options of the file\n * @return {Object} the new file.\n */\nvar fileAdd = function(name, data, originalOptions) {\n // be sure sub folders exist\n var dataType = utils.getTypeOf(data),\n parent;\n\n\n /*\n * Correct options.\n */\n\n var o = utils.extend(originalOptions || {}, defaults);\n o.date = o.date || new Date();\n if (o.compression !== null) {\n o.compression = o.compression.toUpperCase();\n }\n\n if (typeof o.unixPermissions === \"string\") {\n o.unixPermissions = parseInt(o.unixPermissions, 8);\n }\n\n // UNX_IFDIR 0040000 see zipinfo.c\n if (o.unixPermissions && (o.unixPermissions & 0x4000)) {\n o.dir = true;\n }\n // Bit 4 Directory\n if (o.dosPermissions && (o.dosPermissions & 0x0010)) {\n o.dir = true;\n }\n\n if (o.dir) {\n name = forceTrailingSlash(name);\n }\n if (o.createFolders && (parent = parentFolder(name))) {\n folderAdd.call(this, parent, true);\n }\n\n var isUnicodeString = dataType === \"string\" && o.binary === false && o.base64 === false;\n if (!originalOptions || typeof originalOptions.binary === \"undefined\") {\n o.binary = !isUnicodeString;\n }\n\n\n var isCompressedEmpty = (data instanceof CompressedObject) && data.uncompressedSize === 0;\n\n if (isCompressedEmpty || o.dir || !data || data.length === 0) {\n o.base64 = false;\n o.binary = true;\n data = \"\";\n o.compression = \"STORE\";\n dataType = \"string\";\n }\n\n /*\n * Convert content to fit.\n */\n\n var zipObjectContent = null;\n if (data instanceof CompressedObject || data instanceof GenericWorker) {\n zipObjectContent = data;\n } else if (nodejsUtils.isNode && nodejsUtils.isStream(data)) {\n zipObjectContent = new NodejsStreamInputAdapter(name, data);\n } else {\n zipObjectContent = utils.prepareContent(name, data, o.binary, o.optimizedBinaryString, o.base64);\n }\n\n var object = new ZipObject(name, zipObjectContent, o);\n this.files[name] = object;\n /*\n TODO: we can't throw an exception because we have async promises\n (we can have a promise of a Date() for example) but returning a\n promise is useless because file(name, data) returns the JSZip\n object for chaining. Should we break that to allow the user\n to catch the error ?\n\n return external.Promise.resolve(zipObjectContent)\n .then(function () {\n return object;\n });\n */\n};\n\n/**\n * Find the parent folder of the path.\n * @private\n * @param {string} path the path to use\n * @return {string} the parent folder, or \"\"\n */\nvar parentFolder = function (path) {\n if (path.slice(-1) === '/') {\n path = path.substring(0, path.length - 1);\n }\n var lastSlash = path.lastIndexOf('/');\n return (lastSlash > 0) ? path.substring(0, lastSlash) : \"\";\n};\n\n/**\n * Returns the path with a slash at the end.\n * @private\n * @param {String} path the path to check.\n * @return {String} the path with a trailing slash.\n */\nvar forceTrailingSlash = function(path) {\n // Check the name ends with a /\n if (path.slice(-1) !== \"/\") {\n path += \"/\"; // IE doesn't like substr(-1)\n }\n return path;\n};\n\n/**\n * Add a (sub) folder in the current folder.\n * @private\n * @param {string} name the folder's name\n * @param {boolean=} [createFolders] If true, automatically create sub\n * folders. Defaults to false.\n * @return {Object} the new folder.\n */\nvar folderAdd = function(name, createFolders) {\n createFolders = (typeof createFolders !== 'undefined') ? createFolders : defaults.createFolders;\n\n name = forceTrailingSlash(name);\n\n // Does this folder already exist?\n if (!this.files[name]) {\n fileAdd.call(this, name, null, {\n dir: true,\n createFolders: createFolders\n });\n }\n return this.files[name];\n};\n\n/**\n* Cross-window, cross-Node-context regular expression detection\n* @param {Object} object Anything\n* @return {Boolean} true if the object is a regular expression,\n* false otherwise\n*/\nfunction isRegExp(object) {\n return Object.prototype.toString.call(object) === \"[object RegExp]\";\n}\n\n// return the actual prototype of JSZip\nvar out = {\n /**\n * @see loadAsync\n */\n load: function() {\n throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\");\n },\n\n\n /**\n * Call a callback function for each entry at this folder level.\n * @param {Function} cb the callback function:\n * function (relativePath, file) {...}\n * It takes 2 arguments : the relative path and the file.\n */\n forEach: function(cb) {\n var filename, relativePath, file;\n for (filename in this.files) {\n if (!this.files.hasOwnProperty(filename)) {\n continue;\n }\n file = this.files[filename];\n relativePath = filename.slice(this.root.length, filename.length);\n if (relativePath && filename.slice(0, this.root.length) === this.root) { // the file is in the current root\n cb(relativePath, file); // TODO reverse the parameters ? need to be clean AND consistent with the filter search fn...\n }\n }\n },\n\n /**\n * Filter nested files/folders with the specified function.\n * @param {Function} search the predicate to use :\n * function (relativePath, file) {...}\n * It takes 2 arguments : the relative path and the file.\n * @return {Array} An array of matching elements.\n */\n filter: function(search) {\n var result = [];\n this.forEach(function (relativePath, entry) {\n if (search(relativePath, entry)) { // the file matches the function\n result.push(entry);\n }\n\n });\n return result;\n },\n\n /**\n * Add a file to the zip file, or search a file.\n * @param {string|RegExp} name The name of the file to add (if data is defined),\n * the name of the file to find (if no data) or a regex to match files.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data The file data, either raw or base64 encoded\n * @param {Object} o File options\n * @return {JSZip|Object|Array} this JSZip object (when adding a file),\n * a file (when searching by string) or an array of files (when searching by regex).\n */\n file: function(name, data, o) {\n if (arguments.length === 1) {\n if (isRegExp(name)) {\n var regexp = name;\n return this.filter(function(relativePath, file) {\n return !file.dir && regexp.test(relativePath);\n });\n }\n else { // text\n var obj = this.files[this.root + name];\n if (obj && !obj.dir) {\n return obj;\n } else {\n return null;\n }\n }\n }\n else { // more than one argument : we have data !\n name = this.root + name;\n fileAdd.call(this, name, data, o);\n }\n return this;\n },\n\n /**\n * Add a directory to the zip file, or search.\n * @param {String|RegExp} arg The name of the directory to add, or a regex to search folders.\n * @return {JSZip} an object with the new directory as the root, or an array containing matching folders.\n */\n folder: function(arg) {\n if (!arg) {\n return this;\n }\n\n if (isRegExp(arg)) {\n return this.filter(function(relativePath, file) {\n return file.dir && arg.test(relativePath);\n });\n }\n\n // else, name is a new folder\n var name = this.root + arg;\n var newFolder = folderAdd.call(this, name);\n\n // Allow chaining by returning a new object with this folder as the root\n var ret = this.clone();\n ret.root = newFolder.name;\n return ret;\n },\n\n /**\n * Delete a file, or a directory and all sub-files, from the zip\n * @param {string} name the name of the file to delete\n * @return {JSZip} this JSZip object\n */\n remove: function(name) {\n name = this.root + name;\n var file = this.files[name];\n if (!file) {\n // Look for any folders\n if (name.slice(-1) !== \"/\") {\n name += \"/\";\n }\n file = this.files[name];\n }\n\n if (file && !file.dir) {\n // file\n delete this.files[name];\n } else {\n // maybe a folder, delete recursively\n var kids = this.filter(function(relativePath, file) {\n return file.name.slice(0, name.length) === name;\n });\n for (var i = 0; i < kids.length; i++) {\n delete this.files[kids[i].name];\n }\n }\n\n return this;\n },\n\n /**\n * Generate the complete zip file\n * @param {Object} options the options to generate the zip file :\n * - compression, \"STORE\" by default.\n * - type, \"base64\" by default. Values are : string, base64, uint8array, arraybuffer, blob.\n * @return {String|Uint8Array|ArrayBuffer|Buffer|Blob} the zip file\n */\n generate: function(options) {\n throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\");\n },\n\n /**\n * Generate the complete zip file as an internal stream.\n * @param {Object} options the options to generate the zip file :\n * - compression, \"STORE\" by default.\n * - type, \"base64\" by default. Values are : string, base64, uint8array, arraybuffer, blob.\n * @return {StreamHelper} the streamed zip file.\n */\n generateInternalStream: function(options) {\n var worker, opts = {};\n try {\n opts = utils.extend(options || {}, {\n streamFiles: false,\n compression: \"STORE\",\n compressionOptions : null,\n type: \"\",\n platform: \"DOS\",\n comment: null,\n mimeType: 'application/zip',\n encodeFileName: utf8.utf8encode\n });\n\n opts.type = opts.type.toLowerCase();\n opts.compression = opts.compression.toUpperCase();\n\n // \"binarystring\" is prefered but the internals use \"string\".\n if(opts.type === \"binarystring\") {\n opts.type = \"string\";\n }\n\n if (!opts.type) {\n throw new Error(\"No output type specified.\");\n }\n\n utils.checkSupport(opts.type);\n\n // accept nodejs `process.platform`\n if(\n opts.platform === 'darwin' ||\n opts.platform === 'freebsd' ||\n opts.platform === 'linux' ||\n opts.platform === 'sunos'\n ) {\n opts.platform = \"UNIX\";\n }\n if (opts.platform === 'win32') {\n opts.platform = \"DOS\";\n }\n\n var comment = opts.comment || this.comment || \"\";\n worker = generate.generateWorker(this, opts, comment);\n } catch (e) {\n worker = new GenericWorker(\"error\");\n worker.error(e);\n }\n return new StreamHelper(worker, opts.type || \"string\", opts.mimeType);\n },\n /**\n * Generate the complete zip file asynchronously.\n * @see generateInternalStream\n */\n generateAsync: function(options, onUpdate) {\n return this.generateInternalStream(options).accumulate(onUpdate);\n },\n /**\n * Generate the complete zip file asynchronously.\n * @see generateInternalStream\n */\n generateNodeStream: function(options, onUpdate) {\n options = options || {};\n if (!options.type) {\n options.type = \"nodebuffer\";\n }\n return this.generateInternalStream(options).toNodejsStream(onUpdate);\n }\n};\nmodule.exports = out;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/lib/object.js\n// module id = 618\n// module chunks = 1","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n for (var i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(\n uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n ))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/buffer/node_modules/base64-js/index.js\n// module id = 619\n// module chunks = 1","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = nBytes * 8 - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = nBytes * 8 - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ieee754/index.js\n// module id = 620\n// module chunks = 1","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/readable.js');\nStream.Writable = require('readable-stream/writable.js');\nStream.Duplex = require('readable-stream/duplex.js');\nStream.Transform = require('readable-stream/transform.js');\nStream.PassThrough = require('readable-stream/passthrough.js');\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams. Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n dest.end();\n }\n\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (EE.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n\n dest.removeListener('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n\n dest.on('close', cleanup);\n\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/stream-browserify/index.js\n// module id = 621\n// module chunks = 1","/* (ignored) */\n\n\n//////////////////\n// WEBPACK FOOTER\n// util (ignored)\n// module id = 622\n// module chunks = 1","'use strict';\n\n/*<replacement>*/\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Buffer = require('safe-buffer').Buffer;\n/*</replacement>*/\n\nfunction copyBuffer(src, target, offset) {\n src.copy(target, offset);\n}\n\nmodule.exports = function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n BufferList.prototype.push = function push(v) {\n var entry = { data: v, next: null };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n };\n\n BufferList.prototype.unshift = function unshift(v) {\n var entry = { data: v, next: this.head };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n };\n\n BufferList.prototype.shift = function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n };\n\n BufferList.prototype.clear = function clear() {\n this.head = this.tail = null;\n this.length = 0;\n };\n\n BufferList.prototype.join = function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) {\n ret += s + p.data;\n }return ret;\n };\n\n BufferList.prototype.concat = function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n if (this.length === 1) return this.head.data;\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n };\n\n return BufferList;\n}();\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/readable-stream/lib/internal/streams/BufferList.js\n// module id = 623\n// module chunks = 1","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/util-deprecate/browser.js\n// module id = 624\n// module chunks = 1","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\n/*<replacement>*/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/readable-stream/lib/_stream_passthrough.js\n// module id = 625\n// module chunks = 1","module.exports = require('./lib/_stream_writable.js');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/readable-stream/writable-browser.js\n// module id = 626\n// module chunks = 1","module.exports = require('./lib/_stream_duplex.js');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/readable-stream/duplex-browser.js\n// module id = 627\n// module chunks = 1","module.exports = require('./readable').Transform\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/readable-stream/transform.js\n// module id = 628\n// module chunks = 1","module.exports = require('./readable').PassThrough\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/readable-stream/passthrough.js\n// module id = 629\n// module chunks = 1","require('../modules/web.immediate');\nmodule.exports = require('../modules/_core').setImmediate;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/node_modules/core-js/library/fn/set-immediate.js\n// module id = 630\n// module chunks = 1","var $export = require('./_export')\n , $task = require('./_task');\n$export($export.G + $export.B, {\n setImmediate: $task.set,\n clearImmediate: $task.clear\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/node_modules/core-js/library/modules/web.immediate.js\n// module id = 631\n// module chunks = 1","var global = require('./_global')\n , core = require('./_core')\n , ctx = require('./_ctx')\n , hide = require('./_hide')\n , PROTOTYPE = 'prototype';\n\nvar $export = function(type, name, source){\n var IS_FORCED = type & $export.F\n , IS_GLOBAL = type & $export.G\n , IS_STATIC = type & $export.S\n , IS_PROTO = type & $export.P\n , IS_BIND = type & $export.B\n , IS_WRAP = type & $export.W\n , exports = IS_GLOBAL ? core : core[name] || (core[name] = {})\n , expProto = exports[PROTOTYPE]\n , target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE]\n , key, own, out;\n if(IS_GLOBAL)source = name;\n for(key in source){\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if(own && key in exports)continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function(C){\n var F = function(a, b, c){\n if(this instanceof C){\n switch(arguments.length){\n case 0: return new C;\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if(IS_PROTO){\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if(type & $export.R && expProto && !expProto[key])hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library` \nmodule.exports = $export;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/node_modules/core-js/library/modules/_export.js\n// module id = 632\n// module chunks = 1","module.exports = function(it){\n if(typeof it != 'function')throw TypeError(it + ' is not a function!');\n return it;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/node_modules/core-js/library/modules/_a-function.js\n// module id = 633\n// module chunks = 1","var dP = require('./_object-dp')\n , createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function(object, key, value){\n return dP.f(object, key, createDesc(1, value));\n} : function(object, key, value){\n object[key] = value;\n return object;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/node_modules/core-js/library/modules/_hide.js\n// module id = 634\n// module chunks = 1","var anObject = require('./_an-object')\n , IE8_DOM_DEFINE = require('./_ie8-dom-define')\n , toPrimitive = require('./_to-primitive')\n , dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes){\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if(IE8_DOM_DEFINE)try {\n return dP(O, P, Attributes);\n } catch(e){ /* empty */ }\n if('get' in Attributes || 'set' in Attributes)throw TypeError('Accessors not supported!');\n if('value' in Attributes)O[P] = Attributes.value;\n return O;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/node_modules/core-js/library/modules/_object-dp.js\n// module id = 635\n// module chunks = 1","var isObject = require('./_is-object');\nmodule.exports = function(it){\n if(!isObject(it))throw TypeError(it + ' is not an object!');\n return it;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/node_modules/core-js/library/modules/_an-object.js\n// module id = 636\n// module chunks = 1","module.exports = !require('./_descriptors') && !require('./_fails')(function(){\r\n return Object.defineProperty(require('./_dom-create')('div'), 'a', {get: function(){ return 7; }}).a != 7;\r\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/node_modules/core-js/library/modules/_ie8-dom-define.js\n// module id = 637\n// module chunks = 1","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function(it, S){\n if(!isObject(it))return it;\n var fn, val;\n if(S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;\n if(typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it)))return val;\n if(!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/node_modules/core-js/library/modules/_to-primitive.js\n// module id = 638\n// module chunks = 1","module.exports = function(bitmap, value){\n return {\n enumerable : !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable : !(bitmap & 4),\n value : value\n };\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/node_modules/core-js/library/modules/_property-desc.js\n// module id = 639\n// module chunks = 1","var ctx = require('./_ctx')\n , invoke = require('./_invoke')\n , html = require('./_html')\n , cel = require('./_dom-create')\n , global = require('./_global')\n , process = global.process\n , setTask = global.setImmediate\n , clearTask = global.clearImmediate\n , MessageChannel = global.MessageChannel\n , counter = 0\n , queue = {}\n , ONREADYSTATECHANGE = 'onreadystatechange'\n , defer, channel, port;\nvar run = function(){\n var id = +this;\n if(queue.hasOwnProperty(id)){\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function(event){\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif(!setTask || !clearTask){\n setTask = function setImmediate(fn){\n var args = [], i = 1;\n while(arguments.length > i)args.push(arguments[i++]);\n queue[++counter] = function(){\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id){\n delete queue[id];\n };\n // Node.js 0.8-\n if(require('./_cof')(process) == 'process'){\n defer = function(id){\n process.nextTick(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if(MessageChannel){\n channel = new MessageChannel;\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if(global.addEventListener && typeof postMessage == 'function' && !global.importScripts){\n defer = function(id){\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if(ONREADYSTATECHANGE in cel('script')){\n defer = function(id){\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function(){\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function(id){\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/node_modules/core-js/library/modules/_task.js\n// module id = 640\n// module chunks = 1","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function(fn, args, that){\n var un = that === undefined;\n switch(args.length){\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/node_modules/core-js/library/modules/_invoke.js\n// module id = 641\n// module chunks = 1","module.exports = require('./_global').document && document.documentElement;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/node_modules/core-js/library/modules/_html.js\n// module id = 642\n// module chunks = 1","var toString = {}.toString;\n\nmodule.exports = function(it){\n return toString.call(it).slice(8, -1);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/node_modules/core-js/library/modules/_cof.js\n// module id = 643\n// module chunks = 1","'use strict';\nvar immediate = require('immediate');\n\n/* istanbul ignore next */\nfunction INTERNAL() {}\n\nvar handlers = {};\n\nvar REJECTED = ['REJECTED'];\nvar FULFILLED = ['FULFILLED'];\nvar PENDING = ['PENDING'];\n\nmodule.exports = Promise;\n\nfunction Promise(resolver) {\n if (typeof resolver !== 'function') {\n throw new TypeError('resolver must be a function');\n }\n this.state = PENDING;\n this.queue = [];\n this.outcome = void 0;\n if (resolver !== INTERNAL) {\n safelyResolveThenable(this, resolver);\n }\n}\n\nPromise.prototype[\"catch\"] = function (onRejected) {\n return this.then(null, onRejected);\n};\nPromise.prototype.then = function (onFulfilled, onRejected) {\n if (typeof onFulfilled !== 'function' && this.state === FULFILLED ||\n typeof onRejected !== 'function' && this.state === REJECTED) {\n return this;\n }\n var promise = new this.constructor(INTERNAL);\n if (this.state !== PENDING) {\n var resolver = this.state === FULFILLED ? onFulfilled : onRejected;\n unwrap(promise, resolver, this.outcome);\n } else {\n this.queue.push(new QueueItem(promise, onFulfilled, onRejected));\n }\n\n return promise;\n};\nfunction QueueItem(promise, onFulfilled, onRejected) {\n this.promise = promise;\n if (typeof onFulfilled === 'function') {\n this.onFulfilled = onFulfilled;\n this.callFulfilled = this.otherCallFulfilled;\n }\n if (typeof onRejected === 'function') {\n this.onRejected = onRejected;\n this.callRejected = this.otherCallRejected;\n }\n}\nQueueItem.prototype.callFulfilled = function (value) {\n handlers.resolve(this.promise, value);\n};\nQueueItem.prototype.otherCallFulfilled = function (value) {\n unwrap(this.promise, this.onFulfilled, value);\n};\nQueueItem.prototype.callRejected = function (value) {\n handlers.reject(this.promise, value);\n};\nQueueItem.prototype.otherCallRejected = function (value) {\n unwrap(this.promise, this.onRejected, value);\n};\n\nfunction unwrap(promise, func, value) {\n immediate(function () {\n var returnValue;\n try {\n returnValue = func(value);\n } catch (e) {\n return handlers.reject(promise, e);\n }\n if (returnValue === promise) {\n handlers.reject(promise, new TypeError('Cannot resolve promise with itself'));\n } else {\n handlers.resolve(promise, returnValue);\n }\n });\n}\n\nhandlers.resolve = function (self, value) {\n var result = tryCatch(getThen, value);\n if (result.status === 'error') {\n return handlers.reject(self, result.value);\n }\n var thenable = result.value;\n\n if (thenable) {\n safelyResolveThenable(self, thenable);\n } else {\n self.state = FULFILLED;\n self.outcome = value;\n var i = -1;\n var len = self.queue.length;\n while (++i < len) {\n self.queue[i].callFulfilled(value);\n }\n }\n return self;\n};\nhandlers.reject = function (self, error) {\n self.state = REJECTED;\n self.outcome = error;\n var i = -1;\n var len = self.queue.length;\n while (++i < len) {\n self.queue[i].callRejected(error);\n }\n return self;\n};\n\nfunction getThen(obj) {\n // Make sure we only access the accessor once as required by the spec\n var then = obj && obj.then;\n if (obj && (typeof obj === 'object' || typeof obj === 'function') && typeof then === 'function') {\n return function appyThen() {\n then.apply(obj, arguments);\n };\n }\n}\n\nfunction safelyResolveThenable(self, thenable) {\n // Either fulfill, reject or reject with error\n var called = false;\n function onError(value) {\n if (called) {\n return;\n }\n called = true;\n handlers.reject(self, value);\n }\n\n function onSuccess(value) {\n if (called) {\n return;\n }\n called = true;\n handlers.resolve(self, value);\n }\n\n function tryToUnwrap() {\n thenable(onSuccess, onError);\n }\n\n var result = tryCatch(tryToUnwrap);\n if (result.status === 'error') {\n onError(result.value);\n }\n}\n\nfunction tryCatch(func, value) {\n var out = {};\n try {\n out.value = func(value);\n out.status = 'success';\n } catch (e) {\n out.status = 'error';\n out.value = e;\n }\n return out;\n}\n\nPromise.resolve = resolve;\nfunction resolve(value) {\n if (value instanceof this) {\n return value;\n }\n return handlers.resolve(new this(INTERNAL), value);\n}\n\nPromise.reject = reject;\nfunction reject(reason) {\n var promise = new this(INTERNAL);\n return handlers.reject(promise, reason);\n}\n\nPromise.all = all;\nfunction all(iterable) {\n var self = this;\n if (Object.prototype.toString.call(iterable) !== '[object Array]') {\n return this.reject(new TypeError('must be an array'));\n }\n\n var len = iterable.length;\n var called = false;\n if (!len) {\n return this.resolve([]);\n }\n\n var values = new Array(len);\n var resolved = 0;\n var i = -1;\n var promise = new this(INTERNAL);\n\n while (++i < len) {\n allResolver(iterable[i], i);\n }\n return promise;\n function allResolver(value, i) {\n self.resolve(value).then(resolveFromAll, function (error) {\n if (!called) {\n called = true;\n handlers.reject(promise, error);\n }\n });\n function resolveFromAll(outValue) {\n values[i] = outValue;\n if (++resolved === len && !called) {\n called = true;\n handlers.resolve(promise, values);\n }\n }\n }\n}\n\nPromise.race = race;\nfunction race(iterable) {\n var self = this;\n if (Object.prototype.toString.call(iterable) !== '[object Array]') {\n return this.reject(new TypeError('must be an array'));\n }\n\n var len = iterable.length;\n var called = false;\n if (!len) {\n return this.resolve([]);\n }\n\n var i = -1;\n var promise = new this(INTERNAL);\n\n while (++i < len) {\n resolver(iterable[i]);\n }\n return promise;\n function resolver(value) {\n self.resolve(value).then(function (response) {\n if (!called) {\n called = true;\n handlers.resolve(promise, response);\n }\n }, function (error) {\n if (!called) {\n called = true;\n handlers.reject(promise, error);\n }\n });\n }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lie/lib/browser.js\n// module id = 644\n// module chunks = 1","'use strict';\nvar Mutation = global.MutationObserver || global.WebKitMutationObserver;\n\nvar scheduleDrain;\n\n{\n if (Mutation) {\n var called = 0;\n var observer = new Mutation(nextTick);\n var element = global.document.createTextNode('');\n observer.observe(element, {\n characterData: true\n });\n scheduleDrain = function () {\n element.data = (called = ++called % 2);\n };\n } else if (!global.setImmediate && typeof global.MessageChannel !== 'undefined') {\n var channel = new global.MessageChannel();\n channel.port1.onmessage = nextTick;\n scheduleDrain = function () {\n channel.port2.postMessage(0);\n };\n } else if ('document' in global && 'onreadystatechange' in global.document.createElement('script')) {\n scheduleDrain = function () {\n\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var scriptEl = global.document.createElement('script');\n scriptEl.onreadystatechange = function () {\n nextTick();\n\n scriptEl.onreadystatechange = null;\n scriptEl.parentNode.removeChild(scriptEl);\n scriptEl = null;\n };\n global.document.documentElement.appendChild(scriptEl);\n };\n } else {\n scheduleDrain = function () {\n setTimeout(nextTick, 0);\n };\n }\n}\n\nvar draining;\nvar queue = [];\n//named nextTick for less confusing stack traces\nfunction nextTick() {\n draining = true;\n var i, oldQueue;\n var len = queue.length;\n while (len) {\n oldQueue = queue;\n queue = [];\n i = -1;\n while (++i < len) {\n oldQueue[i]();\n }\n len = queue.length;\n }\n draining = false;\n}\n\nmodule.exports = immediate;\nfunction immediate(task) {\n if (queue.push(task) === 1 && !draining) {\n scheduleDrain();\n }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/immediate/lib/browser.js\n// module id = 645\n// module chunks = 1","'use strict';\n\nvar GenericWorker = require('./GenericWorker');\nvar utils = require('../utils');\n\n/**\n * A worker which convert chunks to a specified type.\n * @constructor\n * @param {String} destType the destination type.\n */\nfunction ConvertWorker(destType) {\n GenericWorker.call(this, \"ConvertWorker to \" + destType);\n this.destType = destType;\n}\nutils.inherits(ConvertWorker, GenericWorker);\n\n/**\n * @see GenericWorker.processChunk\n */\nConvertWorker.prototype.processChunk = function (chunk) {\n this.push({\n data : utils.transformTo(this.destType, chunk.data),\n meta : chunk.meta\n });\n};\nmodule.exports = ConvertWorker;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/lib/stream/ConvertWorker.js\n// module id = 646\n// module chunks = 1","'use strict';\n\nvar Readable = require('readable-stream').Readable;\n\nvar utils = require('../utils');\nutils.inherits(NodejsStreamOutputAdapter, Readable);\n\n/**\n* A nodejs stream using a worker as source.\n* @see the SourceWrapper in http://nodejs.org/api/stream.html\n* @constructor\n* @param {StreamHelper} helper the helper wrapping the worker\n* @param {Object} options the nodejs stream options\n* @param {Function} updateCb the update callback.\n*/\nfunction NodejsStreamOutputAdapter(helper, options, updateCb) {\n Readable.call(this, options);\n this._helper = helper;\n\n var self = this;\n helper.on(\"data\", function (data, meta) {\n if (!self.push(data)) {\n self._helper.pause();\n }\n if(updateCb) {\n updateCb(meta);\n }\n })\n .on(\"error\", function(e) {\n self.emit('error', e);\n })\n .on(\"end\", function () {\n self.push(null);\n });\n}\n\n\nNodejsStreamOutputAdapter.prototype._read = function() {\n this._helper.resume();\n};\n\nmodule.exports = NodejsStreamOutputAdapter;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/lib/nodejs/NodejsStreamOutputAdapter.js\n// module id = 647\n// module chunks = 1","'use strict';\n\nvar StreamHelper = require('./stream/StreamHelper');\nvar DataWorker = require('./stream/DataWorker');\nvar utf8 = require('./utf8');\nvar CompressedObject = require('./compressedObject');\nvar GenericWorker = require('./stream/GenericWorker');\n\n/**\n * A simple object representing a file in the zip file.\n * @constructor\n * @param {string} name the name of the file\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data\n * @param {Object} options the options of the file\n */\nvar ZipObject = function(name, data, options) {\n this.name = name;\n this.dir = options.dir;\n this.date = options.date;\n this.comment = options.comment;\n this.unixPermissions = options.unixPermissions;\n this.dosPermissions = options.dosPermissions;\n\n this._data = data;\n this._dataBinary = options.binary;\n // keep only the compression\n this.options = {\n compression : options.compression,\n compressionOptions : options.compressionOptions\n };\n};\n\nZipObject.prototype = {\n /**\n * Create an internal stream for the content of this object.\n * @param {String} type the type of each chunk.\n * @return StreamHelper the stream.\n */\n internalStream: function (type) {\n var outputType = type.toLowerCase();\n var askUnicodeString = outputType === \"string\" || outputType === \"text\";\n if (outputType === \"binarystring\" || outputType === \"text\") {\n outputType = \"string\";\n }\n var result = this._decompressWorker();\n\n var isUnicodeString = !this._dataBinary;\n\n if (isUnicodeString && !askUnicodeString) {\n result = result.pipe(new utf8.Utf8EncodeWorker());\n }\n if (!isUnicodeString && askUnicodeString) {\n result = result.pipe(new utf8.Utf8DecodeWorker());\n }\n\n return new StreamHelper(result, outputType, \"\");\n },\n\n /**\n * Prepare the content in the asked type.\n * @param {String} type the type of the result.\n * @param {Function} onUpdate a function to call on each internal update.\n * @return Promise the promise of the result.\n */\n async: function (type, onUpdate) {\n return this.internalStream(type).accumulate(onUpdate);\n },\n\n /**\n * Prepare the content as a nodejs stream.\n * @param {String} type the type of each chunk.\n * @param {Function} onUpdate a function to call on each internal update.\n * @return Stream the stream.\n */\n nodeStream: function (type, onUpdate) {\n return this.internalStream(type || \"nodebuffer\").toNodejsStream(onUpdate);\n },\n\n /**\n * Return a worker for the compressed content.\n * @private\n * @param {Object} compression the compression object to use.\n * @param {Object} compressionOptions the options to use when compressing.\n * @return Worker the worker.\n */\n _compressWorker: function (compression, compressionOptions) {\n if (\n this._data instanceof CompressedObject &&\n this._data.compression.magic === compression.magic\n ) {\n return this._data.getCompressedWorker();\n } else {\n var result = this._decompressWorker();\n if(!this._dataBinary) {\n result = result.pipe(new utf8.Utf8EncodeWorker());\n }\n return CompressedObject.createWorkerFrom(result, compression, compressionOptions);\n }\n },\n /**\n * Return a worker for the decompressed content.\n * @private\n * @return Worker the worker.\n */\n _decompressWorker : function () {\n if (this._data instanceof CompressedObject) {\n return this._data.getContentWorker();\n } else if (this._data instanceof GenericWorker) {\n return this._data;\n } else {\n return new DataWorker(this._data);\n }\n }\n};\n\nvar removedMethods = [\"asText\", \"asBinary\", \"asNodeBuffer\", \"asUint8Array\", \"asArrayBuffer\"];\nvar removedFn = function () {\n throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\");\n};\n\nfor(var i = 0; i < removedMethods.length; i++) {\n ZipObject.prototype[removedMethods[i]] = removedFn;\n}\nmodule.exports = ZipObject;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/lib/zipObject.js\n// module id = 648\n// module chunks = 1","'use strict';\n\nvar compressions = require('../compressions');\nvar ZipFileWorker = require('./ZipFileWorker');\n\n/**\n * Find the compression to use.\n * @param {String} fileCompression the compression defined at the file level, if any.\n * @param {String} zipCompression the compression defined at the load() level.\n * @return {Object} the compression object to use.\n */\nvar getCompression = function (fileCompression, zipCompression) {\n\n var compressionName = fileCompression || zipCompression;\n var compression = compressions[compressionName];\n if (!compression) {\n throw new Error(compressionName + \" is not a valid compression method !\");\n }\n return compression;\n};\n\n/**\n * Create a worker to generate a zip file.\n * @param {JSZip} zip the JSZip instance at the right root level.\n * @param {Object} options to generate the zip file.\n * @param {String} comment the comment to use.\n */\nexports.generateWorker = function (zip, options, comment) {\n\n var zipFileWorker = new ZipFileWorker(options.streamFiles, comment, options.platform, options.encodeFileName);\n var entriesCount = 0;\n try {\n\n zip.forEach(function (relativePath, file) {\n entriesCount++;\n var compression = getCompression(file.options.compression, options.compression);\n var compressionOptions = file.options.compressionOptions || options.compressionOptions || {};\n var dir = file.dir, date = file.date;\n\n file._compressWorker(compression, compressionOptions)\n .withStreamInfo(\"file\", {\n name : relativePath,\n dir : dir,\n date : date,\n comment : file.comment || \"\",\n unixPermissions : file.unixPermissions,\n dosPermissions : file.dosPermissions\n })\n .pipe(zipFileWorker);\n });\n zipFileWorker.entriesCount = entriesCount;\n } catch (e) {\n zipFileWorker.error(e);\n }\n\n return zipFileWorker;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/lib/generate/index.js\n// module id = 649\n// module chunks = 1","'use strict';\nvar USE_TYPEDARRAY = (typeof Uint8Array !== 'undefined') && (typeof Uint16Array !== 'undefined') && (typeof Uint32Array !== 'undefined');\n\nvar pako = require(\"pako\");\nvar utils = require(\"./utils\");\nvar GenericWorker = require(\"./stream/GenericWorker\");\n\nvar ARRAY_TYPE = USE_TYPEDARRAY ? \"uint8array\" : \"array\";\n\nexports.magic = \"\\x08\\x00\";\n\n/**\n * Create a worker that uses pako to inflate/deflate.\n * @constructor\n * @param {String} action the name of the pako function to call : either \"Deflate\" or \"Inflate\".\n * @param {Object} options the options to use when (de)compressing.\n */\nfunction FlateWorker(action, options) {\n GenericWorker.call(this, \"FlateWorker/\" + action);\n\n this._pako = null;\n this._pakoAction = action;\n this._pakoOptions = options;\n // the `meta` object from the last chunk received\n // this allow this worker to pass around metadata\n this.meta = {};\n}\n\nutils.inherits(FlateWorker, GenericWorker);\n\n/**\n * @see GenericWorker.processChunk\n */\nFlateWorker.prototype.processChunk = function (chunk) {\n this.meta = chunk.meta;\n if (this._pako === null) {\n this._createPako();\n }\n this._pako.push(utils.transformTo(ARRAY_TYPE, chunk.data), false);\n};\n\n/**\n * @see GenericWorker.flush\n */\nFlateWorker.prototype.flush = function () {\n GenericWorker.prototype.flush.call(this);\n if (this._pako === null) {\n this._createPako();\n }\n this._pako.push([], true);\n};\n/**\n * @see GenericWorker.cleanUp\n */\nFlateWorker.prototype.cleanUp = function () {\n GenericWorker.prototype.cleanUp.call(this);\n this._pako = null;\n};\n\n/**\n * Create the _pako object.\n * TODO: lazy-loading this object isn't the best solution but it's the\n * quickest. The best solution is to lazy-load the worker list. See also the\n * issue #446.\n */\nFlateWorker.prototype._createPako = function () {\n this._pako = new pako[this._pakoAction]({\n raw: true,\n level: this._pakoOptions.level || -1 // default compression\n });\n var self = this;\n this._pako.onData = function(data) {\n self.push({\n data : data,\n meta : self.meta\n });\n };\n};\n\nexports.compressWorker = function (compressionOptions) {\n return new FlateWorker(\"Deflate\", compressionOptions);\n};\nexports.uncompressWorker = function () {\n return new FlateWorker(\"Inflate\", {});\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/lib/flate.js\n// module id = 650\n// module chunks = 1","'use strict';\n\nvar utils = require('../utils');\nvar GenericWorker = require('../stream/GenericWorker');\nvar utf8 = require('../utf8');\nvar crc32 = require('../crc32');\nvar signature = require('../signature');\n\n/**\n * Transform an integer into a string in hexadecimal.\n * @private\n * @param {number} dec the number to convert.\n * @param {number} bytes the number of bytes to generate.\n * @returns {string} the result.\n */\nvar decToHex = function(dec, bytes) {\n var hex = \"\", i;\n for (i = 0; i < bytes; i++) {\n hex += String.fromCharCode(dec & 0xff);\n dec = dec >>> 8;\n }\n return hex;\n};\n\n/**\n * Generate the UNIX part of the external file attributes.\n * @param {Object} unixPermissions the unix permissions or null.\n * @param {Boolean} isDir true if the entry is a directory, false otherwise.\n * @return {Number} a 32 bit integer.\n *\n * adapted from http://unix.stackexchange.com/questions/14705/the-zip-formats-external-file-attribute :\n *\n * TTTTsstrwxrwxrwx0000000000ADVSHR\n * ^^^^____________________________ file type, see zipinfo.c (UNX_*)\n * ^^^_________________________ setuid, setgid, sticky\n * ^^^^^^^^^________________ permissions\n * ^^^^^^^^^^______ not used ?\n * ^^^^^^ DOS attribute bits : Archive, Directory, Volume label, System file, Hidden, Read only\n */\nvar generateUnixExternalFileAttr = function (unixPermissions, isDir) {\n\n var result = unixPermissions;\n if (!unixPermissions) {\n // I can't use octal values in strict mode, hence the hexa.\n // 040775 => 0x41fd\n // 0100664 => 0x81b4\n result = isDir ? 0x41fd : 0x81b4;\n }\n return (result & 0xFFFF) << 16;\n};\n\n/**\n * Generate the DOS part of the external file attributes.\n * @param {Object} dosPermissions the dos permissions or null.\n * @param {Boolean} isDir true if the entry is a directory, false otherwise.\n * @return {Number} a 32 bit integer.\n *\n * Bit 0 Read-Only\n * Bit 1 Hidden\n * Bit 2 System\n * Bit 3 Volume Label\n * Bit 4 Directory\n * Bit 5 Archive\n */\nvar generateDosExternalFileAttr = function (dosPermissions, isDir) {\n\n // the dir flag is already set for compatibility\n return (dosPermissions || 0) & 0x3F;\n};\n\n/**\n * Generate the various parts used in the construction of the final zip file.\n * @param {Object} streamInfo the hash with informations about the compressed file.\n * @param {Boolean} streamedContent is the content streamed ?\n * @param {Boolean} streamingEnded is the stream finished ?\n * @param {number} offset the current offset from the start of the zip file.\n * @param {String} platform let's pretend we are this platform (change platform dependents fields)\n * @param {Function} encodeFileName the function to encode the file name / comment.\n * @return {Object} the zip parts.\n */\nvar generateZipParts = function(streamInfo, streamedContent, streamingEnded, offset, platform, encodeFileName) {\n var file = streamInfo['file'],\n compression = streamInfo['compression'],\n useCustomEncoding = encodeFileName !== utf8.utf8encode,\n encodedFileName = utils.transformTo(\"string\", encodeFileName(file.name)),\n utfEncodedFileName = utils.transformTo(\"string\", utf8.utf8encode(file.name)),\n comment = file.comment,\n encodedComment = utils.transformTo(\"string\", encodeFileName(comment)),\n utfEncodedComment = utils.transformTo(\"string\", utf8.utf8encode(comment)),\n useUTF8ForFileName = utfEncodedFileName.length !== file.name.length,\n useUTF8ForComment = utfEncodedComment.length !== comment.length,\n dosTime,\n dosDate,\n extraFields = \"\",\n unicodePathExtraField = \"\",\n unicodeCommentExtraField = \"\",\n dir = file.dir,\n date = file.date;\n\n\n var dataInfo = {\n crc32 : 0,\n compressedSize : 0,\n uncompressedSize : 0\n };\n\n // if the content is streamed, the sizes/crc32 are only available AFTER\n // the end of the stream.\n if (!streamedContent || streamingEnded) {\n dataInfo.crc32 = streamInfo['crc32'];\n dataInfo.compressedSize = streamInfo['compressedSize'];\n dataInfo.uncompressedSize = streamInfo['uncompressedSize'];\n }\n\n var bitflag = 0;\n if (streamedContent) {\n // Bit 3: the sizes/crc32 are set to zero in the local header.\n // The correct values are put in the data descriptor immediately\n // following the compressed data.\n bitflag |= 0x0008;\n }\n if (!useCustomEncoding && (useUTF8ForFileName || useUTF8ForComment)) {\n // Bit 11: Language encoding flag (EFS).\n bitflag |= 0x0800;\n }\n\n\n var extFileAttr = 0;\n var versionMadeBy = 0;\n if (dir) {\n // dos or unix, we set the dos dir flag\n extFileAttr |= 0x00010;\n }\n if(platform === \"UNIX\") {\n versionMadeBy = 0x031E; // UNIX, version 3.0\n extFileAttr |= generateUnixExternalFileAttr(file.unixPermissions, dir);\n } else { // DOS or other, fallback to DOS\n versionMadeBy = 0x0014; // DOS, version 2.0\n extFileAttr |= generateDosExternalFileAttr(file.dosPermissions, dir);\n }\n\n // date\n // @see http://www.delorie.com/djgpp/doc/rbinter/it/52/13.html\n // @see http://www.delorie.com/djgpp/doc/rbinter/it/65/16.html\n // @see http://www.delorie.com/djgpp/doc/rbinter/it/66/16.html\n\n dosTime = date.getUTCHours();\n dosTime = dosTime << 6;\n dosTime = dosTime | date.getUTCMinutes();\n dosTime = dosTime << 5;\n dosTime = dosTime | date.getUTCSeconds() / 2;\n\n dosDate = date.getUTCFullYear() - 1980;\n dosDate = dosDate << 4;\n dosDate = dosDate | (date.getUTCMonth() + 1);\n dosDate = dosDate << 5;\n dosDate = dosDate | date.getUTCDate();\n\n if (useUTF8ForFileName) {\n // set the unicode path extra field. unzip needs at least one extra\n // field to correctly handle unicode path, so using the path is as good\n // as any other information. This could improve the situation with\n // other archive managers too.\n // This field is usually used without the utf8 flag, with a non\n // unicode path in the header (winrar, winzip). This helps (a bit)\n // with the messy Windows' default compressed folders feature but\n // breaks on p7zip which doesn't seek the unicode path extra field.\n // So for now, UTF-8 everywhere !\n unicodePathExtraField =\n // Version\n decToHex(1, 1) +\n // NameCRC32\n decToHex(crc32(encodedFileName), 4) +\n // UnicodeName\n utfEncodedFileName;\n\n extraFields +=\n // Info-ZIP Unicode Path Extra Field\n \"\\x75\\x70\" +\n // size\n decToHex(unicodePathExtraField.length, 2) +\n // content\n unicodePathExtraField;\n }\n\n if(useUTF8ForComment) {\n\n unicodeCommentExtraField =\n // Version\n decToHex(1, 1) +\n // CommentCRC32\n decToHex(crc32(encodedComment), 4) +\n // UnicodeName\n utfEncodedComment;\n\n extraFields +=\n // Info-ZIP Unicode Path Extra Field\n \"\\x75\\x63\" +\n // size\n decToHex(unicodeCommentExtraField.length, 2) +\n // content\n unicodeCommentExtraField;\n }\n\n var header = \"\";\n\n // version needed to extract\n header += \"\\x0A\\x00\";\n // general purpose bit flag\n header += decToHex(bitflag, 2);\n // compression method\n header += compression.magic;\n // last mod file time\n header += decToHex(dosTime, 2);\n // last mod file date\n header += decToHex(dosDate, 2);\n // crc-32\n header += decToHex(dataInfo.crc32, 4);\n // compressed size\n header += decToHex(dataInfo.compressedSize, 4);\n // uncompressed size\n header += decToHex(dataInfo.uncompressedSize, 4);\n // file name length\n header += decToHex(encodedFileName.length, 2);\n // extra field length\n header += decToHex(extraFields.length, 2);\n\n\n var fileRecord = signature.LOCAL_FILE_HEADER + header + encodedFileName + extraFields;\n\n var dirRecord = signature.CENTRAL_FILE_HEADER +\n // version made by (00: DOS)\n decToHex(versionMadeBy, 2) +\n // file header (common to file and central directory)\n header +\n // file comment length\n decToHex(encodedComment.length, 2) +\n // disk number start\n \"\\x00\\x00\" +\n // internal file attributes TODO\n \"\\x00\\x00\" +\n // external file attributes\n decToHex(extFileAttr, 4) +\n // relative offset of local header\n decToHex(offset, 4) +\n // file name\n encodedFileName +\n // extra field\n extraFields +\n // file comment\n encodedComment;\n\n return {\n fileRecord: fileRecord,\n dirRecord: dirRecord\n };\n};\n\n/**\n * Generate the EOCD record.\n * @param {Number} entriesCount the number of entries in the zip file.\n * @param {Number} centralDirLength the length (in bytes) of the central dir.\n * @param {Number} localDirLength the length (in bytes) of the local dir.\n * @param {String} comment the zip file comment as a binary string.\n * @param {Function} encodeFileName the function to encode the comment.\n * @return {String} the EOCD record.\n */\nvar generateCentralDirectoryEnd = function (entriesCount, centralDirLength, localDirLength, comment, encodeFileName) {\n var dirEnd = \"\";\n var encodedComment = utils.transformTo(\"string\", encodeFileName(comment));\n\n // end of central dir signature\n dirEnd = signature.CENTRAL_DIRECTORY_END +\n // number of this disk\n \"\\x00\\x00\" +\n // number of the disk with the start of the central directory\n \"\\x00\\x00\" +\n // total number of entries in the central directory on this disk\n decToHex(entriesCount, 2) +\n // total number of entries in the central directory\n decToHex(entriesCount, 2) +\n // size of the central directory 4 bytes\n decToHex(centralDirLength, 4) +\n // offset of start of central directory with respect to the starting disk number\n decToHex(localDirLength, 4) +\n // .ZIP file comment length\n decToHex(encodedComment.length, 2) +\n // .ZIP file comment\n encodedComment;\n\n return dirEnd;\n};\n\n/**\n * Generate data descriptors for a file entry.\n * @param {Object} streamInfo the hash generated by a worker, containing informations\n * on the file entry.\n * @return {String} the data descriptors.\n */\nvar generateDataDescriptors = function (streamInfo) {\n var descriptor = \"\";\n descriptor = signature.DATA_DESCRIPTOR +\n // crc-32 4 bytes\n decToHex(streamInfo['crc32'], 4) +\n // compressed size 4 bytes\n decToHex(streamInfo['compressedSize'], 4) +\n // uncompressed size 4 bytes\n decToHex(streamInfo['uncompressedSize'], 4);\n\n return descriptor;\n};\n\n\n/**\n * A worker to concatenate other workers to create a zip file.\n * @param {Boolean} streamFiles `true` to stream the content of the files,\n * `false` to accumulate it.\n * @param {String} comment the comment to use.\n * @param {String} platform the platform to use, \"UNIX\" or \"DOS\".\n * @param {Function} encodeFileName the function to encode file names and comments.\n */\nfunction ZipFileWorker(streamFiles, comment, platform, encodeFileName) {\n GenericWorker.call(this, \"ZipFileWorker\");\n // The number of bytes written so far. This doesn't count accumulated chunks.\n this.bytesWritten = 0;\n // The comment of the zip file\n this.zipComment = comment;\n // The platform \"generating\" the zip file.\n this.zipPlatform = platform;\n // the function to encode file names and comments.\n this.encodeFileName = encodeFileName;\n // Should we stream the content of the files ?\n this.streamFiles = streamFiles;\n // If `streamFiles` is false, we will need to accumulate the content of the\n // files to calculate sizes / crc32 (and write them *before* the content).\n // This boolean indicates if we are accumulating chunks (it will change a lot\n // during the lifetime of this worker).\n this.accumulate = false;\n // The buffer receiving chunks when accumulating content.\n this.contentBuffer = [];\n // The list of generated directory records.\n this.dirRecords = [];\n // The offset (in bytes) from the beginning of the zip file for the current source.\n this.currentSourceOffset = 0;\n // The total number of entries in this zip file.\n this.entriesCount = 0;\n // the name of the file currently being added, null when handling the end of the zip file.\n // Used for the emited metadata.\n this.currentFile = null;\n\n\n\n this._sources = [];\n}\nutils.inherits(ZipFileWorker, GenericWorker);\n\n/**\n * @see GenericWorker.push\n */\nZipFileWorker.prototype.push = function (chunk) {\n\n var currentFilePercent = chunk.meta.percent || 0;\n var entriesCount = this.entriesCount;\n var remainingFiles = this._sources.length;\n\n if(this.accumulate) {\n this.contentBuffer.push(chunk);\n } else {\n this.bytesWritten += chunk.data.length;\n\n GenericWorker.prototype.push.call(this, {\n data : chunk.data,\n meta : {\n currentFile : this.currentFile,\n percent : entriesCount ? (currentFilePercent + 100 * (entriesCount - remainingFiles - 1)) / entriesCount : 100\n }\n });\n }\n};\n\n/**\n * The worker started a new source (an other worker).\n * @param {Object} streamInfo the streamInfo object from the new source.\n */\nZipFileWorker.prototype.openedSource = function (streamInfo) {\n this.currentSourceOffset = this.bytesWritten;\n this.currentFile = streamInfo['file'].name;\n\n var streamedContent = this.streamFiles && !streamInfo['file'].dir;\n\n // don't stream folders (because they don't have any content)\n if(streamedContent) {\n var record = generateZipParts(streamInfo, streamedContent, false, this.currentSourceOffset, this.zipPlatform, this.encodeFileName);\n this.push({\n data : record.fileRecord,\n meta : {percent:0}\n });\n } else {\n // we need to wait for the whole file before pushing anything\n this.accumulate = true;\n }\n};\n\n/**\n * The worker finished a source (an other worker).\n * @param {Object} streamInfo the streamInfo object from the finished source.\n */\nZipFileWorker.prototype.closedSource = function (streamInfo) {\n this.accumulate = false;\n var streamedContent = this.streamFiles && !streamInfo['file'].dir;\n var record = generateZipParts(streamInfo, streamedContent, true, this.currentSourceOffset, this.zipPlatform, this.encodeFileName);\n\n this.dirRecords.push(record.dirRecord);\n if(streamedContent) {\n // after the streamed file, we put data descriptors\n this.push({\n data : generateDataDescriptors(streamInfo),\n meta : {percent:100}\n });\n } else {\n // the content wasn't streamed, we need to push everything now\n // first the file record, then the content\n this.push({\n data : record.fileRecord,\n meta : {percent:0}\n });\n while(this.contentBuffer.length) {\n this.push(this.contentBuffer.shift());\n }\n }\n this.currentFile = null;\n};\n\n/**\n * @see GenericWorker.flush\n */\nZipFileWorker.prototype.flush = function () {\n\n var localDirLength = this.bytesWritten;\n for(var i = 0; i < this.dirRecords.length; i++) {\n this.push({\n data : this.dirRecords[i],\n meta : {percent:100}\n });\n }\n var centralDirLength = this.bytesWritten - localDirLength;\n\n var dirEnd = generateCentralDirectoryEnd(this.dirRecords.length, centralDirLength, localDirLength, this.zipComment, this.encodeFileName);\n\n this.push({\n data : dirEnd,\n meta : {percent:100}\n });\n};\n\n/**\n * Prepare the next source to be read.\n */\nZipFileWorker.prototype.prepareNextSource = function () {\n this.previous = this._sources.shift();\n this.openedSource(this.previous.streamInfo);\n if (this.isPaused) {\n this.previous.pause();\n } else {\n this.previous.resume();\n }\n};\n\n/**\n * @see GenericWorker.registerPrevious\n */\nZipFileWorker.prototype.registerPrevious = function (previous) {\n this._sources.push(previous);\n var self = this;\n\n previous.on('data', function (chunk) {\n self.processChunk(chunk);\n });\n previous.on('end', function () {\n self.closedSource(self.previous.streamInfo);\n if(self._sources.length) {\n self.prepareNextSource();\n } else {\n self.end();\n }\n });\n previous.on('error', function (e) {\n self.error(e);\n });\n return this;\n};\n\n/**\n * @see GenericWorker.resume\n */\nZipFileWorker.prototype.resume = function () {\n if(!GenericWorker.prototype.resume.call(this)) {\n return false;\n }\n\n if (!this.previous && this._sources.length) {\n this.prepareNextSource();\n return true;\n }\n if (!this.previous && !this._sources.length && !this.generatedError) {\n this.end();\n return true;\n }\n};\n\n/**\n * @see GenericWorker.error\n */\nZipFileWorker.prototype.error = function (e) {\n var sources = this._sources;\n if(!GenericWorker.prototype.error.call(this, e)) {\n return false;\n }\n for(var i = 0; i < sources.length; i++) {\n try {\n sources[i].error(e);\n } catch(e) {\n // the `error` exploded, nothing to do\n }\n }\n return true;\n};\n\n/**\n * @see GenericWorker.lock\n */\nZipFileWorker.prototype.lock = function () {\n GenericWorker.prototype.lock.call(this);\n var sources = this._sources;\n for(var i = 0; i < sources.length; i++) {\n sources[i].lock();\n }\n};\n\nmodule.exports = ZipFileWorker;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/lib/generate/ZipFileWorker.js\n// module id = 651\n// module chunks = 1","\"use strict\";\n\nvar utils = require('../utils');\nvar GenericWorker = require('../stream/GenericWorker');\n\n/**\n * A worker that use a nodejs stream as source.\n * @constructor\n * @param {String} filename the name of the file entry for this stream.\n * @param {Readable} stream the nodejs stream.\n */\nfunction NodejsStreamInputAdapter(filename, stream) {\n GenericWorker.call(this, \"Nodejs stream input adapter for \" + filename);\n this._upstreamEnded = false;\n this._bindStream(stream);\n}\n\nutils.inherits(NodejsStreamInputAdapter, GenericWorker);\n\n/**\n * Prepare the stream and bind the callbacks on it.\n * Do this ASAP on node 0.10 ! A lazy binding doesn't always work.\n * @param {Stream} stream the nodejs stream to use.\n */\nNodejsStreamInputAdapter.prototype._bindStream = function (stream) {\n var self = this;\n this._stream = stream;\n stream.pause();\n stream\n .on(\"data\", function (chunk) {\n self.push({\n data: chunk,\n meta : {\n percent : 0\n }\n });\n })\n .on(\"error\", function (e) {\n if(self.isPaused) {\n this.generatedError = e;\n } else {\n self.error(e);\n }\n })\n .on(\"end\", function () {\n if(self.isPaused) {\n self._upstreamEnded = true;\n } else {\n self.end();\n }\n });\n};\nNodejsStreamInputAdapter.prototype.pause = function () {\n if(!GenericWorker.prototype.pause.call(this)) {\n return false;\n }\n this._stream.pause();\n return true;\n};\nNodejsStreamInputAdapter.prototype.resume = function () {\n if(!GenericWorker.prototype.resume.call(this)) {\n return false;\n }\n\n if(this._upstreamEnded) {\n this.end();\n } else {\n this._stream.resume();\n }\n\n return true;\n};\n\nmodule.exports = NodejsStreamInputAdapter;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/lib/nodejs/NodejsStreamInputAdapter.js\n// module id = 652\n// module chunks = 1","'use strict';\nvar utils = require('./utils');\nvar external = require(\"./external\");\nvar utf8 = require('./utf8');\nvar utils = require('./utils');\nvar ZipEntries = require('./zipEntries');\nvar Crc32Probe = require('./stream/Crc32Probe');\nvar nodejsUtils = require(\"./nodejsUtils\");\n\n/**\n * Check the CRC32 of an entry.\n * @param {ZipEntry} zipEntry the zip entry to check.\n * @return {Promise} the result.\n */\nfunction checkEntryCRC32(zipEntry) {\n return new external.Promise(function (resolve, reject) {\n var worker = zipEntry.decompressed.getContentWorker().pipe(new Crc32Probe());\n worker.on(\"error\", function (e) {\n reject(e);\n })\n .on(\"end\", function () {\n if (worker.streamInfo.crc32 !== zipEntry.decompressed.crc32) {\n reject(new Error(\"Corrupted zip : CRC32 mismatch\"));\n } else {\n resolve();\n }\n })\n .resume();\n });\n}\n\nmodule.exports = function(data, options) {\n var zip = this;\n options = utils.extend(options || {}, {\n base64: false,\n checkCRC32: false,\n optimizedBinaryString: false,\n createFolders: false,\n decodeFileName: utf8.utf8decode\n });\n\n if (nodejsUtils.isNode && nodejsUtils.isStream(data)) {\n return external.Promise.reject(new Error(\"JSZip can't accept a stream when loading a zip file.\"));\n }\n\n return utils.prepareContent(\"the loaded zip file\", data, true, options.optimizedBinaryString, options.base64)\n .then(function(data) {\n var zipEntries = new ZipEntries(options);\n zipEntries.load(data);\n return zipEntries;\n }).then(function checkCRC32(zipEntries) {\n var promises = [external.Promise.resolve(zipEntries)];\n var files = zipEntries.files;\n if (options.checkCRC32) {\n for (var i = 0; i < files.length; i++) {\n promises.push(checkEntryCRC32(files[i]));\n }\n }\n return external.Promise.all(promises);\n }).then(function addFiles(results) {\n var zipEntries = results.shift();\n var files = zipEntries.files;\n for (var i = 0; i < files.length; i++) {\n var input = files[i];\n zip.file(input.fileNameStr, input.decompressed, {\n binary: true,\n optimizedBinaryString: true,\n date: input.date,\n dir: input.dir,\n comment : input.fileCommentStr.length ? input.fileCommentStr : null,\n unixPermissions : input.unixPermissions,\n dosPermissions : input.dosPermissions,\n createFolders: options.createFolders\n });\n }\n if (zipEntries.zipComment.length) {\n zip.comment = zipEntries.zipComment;\n }\n\n return zip;\n });\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/lib/load.js\n// module id = 653\n// module chunks = 1","'use strict';\nvar readerFor = require('./reader/readerFor');\nvar utils = require('./utils');\nvar sig = require('./signature');\nvar ZipEntry = require('./zipEntry');\nvar utf8 = require('./utf8');\nvar support = require('./support');\n// class ZipEntries {{{\n/**\n * All the entries in the zip file.\n * @constructor\n * @param {Object} loadOptions Options for loading the stream.\n */\nfunction ZipEntries(loadOptions) {\n this.files = [];\n this.loadOptions = loadOptions;\n}\nZipEntries.prototype = {\n /**\n * Check that the reader is on the speficied signature.\n * @param {string} expectedSignature the expected signature.\n * @throws {Error} if it is an other signature.\n */\n checkSignature: function(expectedSignature) {\n if (!this.reader.readAndCheckSignature(expectedSignature)) {\n this.reader.index -= 4;\n var signature = this.reader.readString(4);\n throw new Error(\"Corrupted zip or bug: unexpected signature \" + \"(\" + utils.pretty(signature) + \", expected \" + utils.pretty(expectedSignature) + \")\");\n }\n },\n /**\n * Check if the given signature is at the given index.\n * @param {number} askedIndex the index to check.\n * @param {string} expectedSignature the signature to expect.\n * @return {boolean} true if the signature is here, false otherwise.\n */\n isSignature: function(askedIndex, expectedSignature) {\n var currentIndex = this.reader.index;\n this.reader.setIndex(askedIndex);\n var signature = this.reader.readString(4);\n var result = signature === expectedSignature;\n this.reader.setIndex(currentIndex);\n return result;\n },\n /**\n * Read the end of the central directory.\n */\n readBlockEndOfCentral: function() {\n this.diskNumber = this.reader.readInt(2);\n this.diskWithCentralDirStart = this.reader.readInt(2);\n this.centralDirRecordsOnThisDisk = this.reader.readInt(2);\n this.centralDirRecords = this.reader.readInt(2);\n this.centralDirSize = this.reader.readInt(4);\n this.centralDirOffset = this.reader.readInt(4);\n\n this.zipCommentLength = this.reader.readInt(2);\n // warning : the encoding depends of the system locale\n // On a linux machine with LANG=en_US.utf8, this field is utf8 encoded.\n // On a windows machine, this field is encoded with the localized windows code page.\n var zipComment = this.reader.readData(this.zipCommentLength);\n var decodeParamType = support.uint8array ? \"uint8array\" : \"array\";\n // To get consistent behavior with the generation part, we will assume that\n // this is utf8 encoded unless specified otherwise.\n var decodeContent = utils.transformTo(decodeParamType, zipComment);\n this.zipComment = this.loadOptions.decodeFileName(decodeContent);\n },\n /**\n * Read the end of the Zip 64 central directory.\n * Not merged with the method readEndOfCentral :\n * The end of central can coexist with its Zip64 brother,\n * I don't want to read the wrong number of bytes !\n */\n readBlockZip64EndOfCentral: function() {\n this.zip64EndOfCentralSize = this.reader.readInt(8);\n this.reader.skip(4);\n // this.versionMadeBy = this.reader.readString(2);\n // this.versionNeeded = this.reader.readInt(2);\n this.diskNumber = this.reader.readInt(4);\n this.diskWithCentralDirStart = this.reader.readInt(4);\n this.centralDirRecordsOnThisDisk = this.reader.readInt(8);\n this.centralDirRecords = this.reader.readInt(8);\n this.centralDirSize = this.reader.readInt(8);\n this.centralDirOffset = this.reader.readInt(8);\n\n this.zip64ExtensibleData = {};\n var extraDataSize = this.zip64EndOfCentralSize - 44,\n index = 0,\n extraFieldId,\n extraFieldLength,\n extraFieldValue;\n while (index < extraDataSize) {\n extraFieldId = this.reader.readInt(2);\n extraFieldLength = this.reader.readInt(4);\n extraFieldValue = this.reader.readData(extraFieldLength);\n this.zip64ExtensibleData[extraFieldId] = {\n id: extraFieldId,\n length: extraFieldLength,\n value: extraFieldValue\n };\n }\n },\n /**\n * Read the end of the Zip 64 central directory locator.\n */\n readBlockZip64EndOfCentralLocator: function() {\n this.diskWithZip64CentralDirStart = this.reader.readInt(4);\n this.relativeOffsetEndOfZip64CentralDir = this.reader.readInt(8);\n this.disksCount = this.reader.readInt(4);\n if (this.disksCount > 1) {\n throw new Error(\"Multi-volumes zip are not supported\");\n }\n },\n /**\n * Read the local files, based on the offset read in the central part.\n */\n readLocalFiles: function() {\n var i, file;\n for (i = 0; i < this.files.length; i++) {\n file = this.files[i];\n this.reader.setIndex(file.localHeaderOffset);\n this.checkSignature(sig.LOCAL_FILE_HEADER);\n file.readLocalPart(this.reader);\n file.handleUTF8();\n file.processAttributes();\n }\n },\n /**\n * Read the central directory.\n */\n readCentralDir: function() {\n var file;\n\n this.reader.setIndex(this.centralDirOffset);\n while (this.reader.readAndCheckSignature(sig.CENTRAL_FILE_HEADER)) {\n file = new ZipEntry({\n zip64: this.zip64\n }, this.loadOptions);\n file.readCentralPart(this.reader);\n this.files.push(file);\n }\n\n if (this.centralDirRecords !== this.files.length) {\n if (this.centralDirRecords !== 0 && this.files.length === 0) {\n // We expected some records but couldn't find ANY.\n // This is really suspicious, as if something went wrong.\n throw new Error(\"Corrupted zip or bug: expected \" + this.centralDirRecords + \" records in central dir, got \" + this.files.length);\n } else {\n // We found some records but not all.\n // Something is wrong but we got something for the user: no error here.\n // console.warn(\"expected\", this.centralDirRecords, \"records in central dir, got\", this.files.length);\n }\n }\n },\n /**\n * Read the end of central directory.\n */\n readEndOfCentral: function() {\n var offset = this.reader.lastIndexOfSignature(sig.CENTRAL_DIRECTORY_END);\n if (offset < 0) {\n // Check if the content is a truncated zip or complete garbage.\n // A \"LOCAL_FILE_HEADER\" is not required at the beginning (auto\n // extractible zip for example) but it can give a good hint.\n // If an ajax request was used without responseType, we will also\n // get unreadable data.\n var isGarbage = !this.isSignature(0, sig.LOCAL_FILE_HEADER);\n\n if (isGarbage) {\n throw new Error(\"Can't find end of central directory : is this a zip file ? \" +\n \"If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html\");\n } else {\n throw new Error(\"Corrupted zip: can't find end of central directory\");\n }\n\n }\n this.reader.setIndex(offset);\n var endOfCentralDirOffset = offset;\n this.checkSignature(sig.CENTRAL_DIRECTORY_END);\n this.readBlockEndOfCentral();\n\n\n /* extract from the zip spec :\n 4) If one of the fields in the end of central directory\n record is too small to hold required data, the field\n should be set to -1 (0xFFFF or 0xFFFFFFFF) and the\n ZIP64 format record should be created.\n 5) The end of central directory record and the\n Zip64 end of central directory locator record must\n reside on the same disk when splitting or spanning\n an archive.\n */\n if (this.diskNumber === utils.MAX_VALUE_16BITS || this.diskWithCentralDirStart === utils.MAX_VALUE_16BITS || this.centralDirRecordsOnThisDisk === utils.MAX_VALUE_16BITS || this.centralDirRecords === utils.MAX_VALUE_16BITS || this.centralDirSize === utils.MAX_VALUE_32BITS || this.centralDirOffset === utils.MAX_VALUE_32BITS) {\n this.zip64 = true;\n\n /*\n Warning : the zip64 extension is supported, but ONLY if the 64bits integer read from\n the zip file can fit into a 32bits integer. This cannot be solved : Javascript represents\n all numbers as 64-bit double precision IEEE 754 floating point numbers.\n So, we have 53bits for integers and bitwise operations treat everything as 32bits.\n see https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Bitwise_Operators\n and http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf section 8.5\n */\n\n // should look for a zip64 EOCD locator\n offset = this.reader.lastIndexOfSignature(sig.ZIP64_CENTRAL_DIRECTORY_LOCATOR);\n if (offset < 0) {\n throw new Error(\"Corrupted zip: can't find the ZIP64 end of central directory locator\");\n }\n this.reader.setIndex(offset);\n this.checkSignature(sig.ZIP64_CENTRAL_DIRECTORY_LOCATOR);\n this.readBlockZip64EndOfCentralLocator();\n\n // now the zip64 EOCD record\n if (!this.isSignature(this.relativeOffsetEndOfZip64CentralDir, sig.ZIP64_CENTRAL_DIRECTORY_END)) {\n // console.warn(\"ZIP64 end of central directory not where expected.\");\n this.relativeOffsetEndOfZip64CentralDir = this.reader.lastIndexOfSignature(sig.ZIP64_CENTRAL_DIRECTORY_END);\n if (this.relativeOffsetEndOfZip64CentralDir < 0) {\n throw new Error(\"Corrupted zip: can't find the ZIP64 end of central directory\");\n }\n }\n this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir);\n this.checkSignature(sig.ZIP64_CENTRAL_DIRECTORY_END);\n this.readBlockZip64EndOfCentral();\n }\n\n var expectedEndOfCentralDirOffset = this.centralDirOffset + this.centralDirSize;\n if (this.zip64) {\n expectedEndOfCentralDirOffset += 20; // end of central dir 64 locator\n expectedEndOfCentralDirOffset += 12 /* should not include the leading 12 bytes */ + this.zip64EndOfCentralSize;\n }\n\n var extraBytes = endOfCentralDirOffset - expectedEndOfCentralDirOffset;\n\n if (extraBytes > 0) {\n // console.warn(extraBytes, \"extra bytes at beginning or within zipfile\");\n if (this.isSignature(endOfCentralDirOffset, sig.CENTRAL_FILE_HEADER)) {\n // The offsets seem wrong, but we have something at the specified offset.\n // So… we keep it.\n } else {\n // the offset is wrong, update the \"zero\" of the reader\n // this happens if data has been prepended (crx files for example)\n this.reader.zero = extraBytes;\n }\n } else if (extraBytes < 0) {\n throw new Error(\"Corrupted zip: missing \" + Math.abs(extraBytes) + \" bytes.\");\n }\n },\n prepareReader: function(data) {\n this.reader = readerFor(data);\n },\n /**\n * Read a zip file and create ZipEntries.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the binary string representing a zip file.\n */\n load: function(data) {\n this.prepareReader(data);\n this.readEndOfCentral();\n this.readCentralDir();\n this.readLocalFiles();\n }\n};\n// }}} end of ZipEntries\nmodule.exports = ZipEntries;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/lib/zipEntries.js\n// module id = 654\n// module chunks = 1","'use strict';\nvar DataReader = require('./DataReader');\nvar utils = require('../utils');\n\nfunction StringReader(data) {\n DataReader.call(this, data);\n}\nutils.inherits(StringReader, DataReader);\n/**\n * @see DataReader.byteAt\n */\nStringReader.prototype.byteAt = function(i) {\n return this.data.charCodeAt(this.zero + i);\n};\n/**\n * @see DataReader.lastIndexOfSignature\n */\nStringReader.prototype.lastIndexOfSignature = function(sig) {\n return this.data.lastIndexOf(sig) - this.zero;\n};\n/**\n * @see DataReader.readAndCheckSignature\n */\nStringReader.prototype.readAndCheckSignature = function (sig) {\n var data = this.readData(4);\n return sig === data;\n};\n/**\n * @see DataReader.readData\n */\nStringReader.prototype.readData = function(size) {\n this.checkOffset(size);\n // this will work because the constructor applied the \"& 0xff\" mask.\n var result = this.data.slice(this.zero + this.index, this.zero + this.index + size);\n this.index += size;\n return result;\n};\nmodule.exports = StringReader;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/lib/reader/StringReader.js\n// module id = 655\n// module chunks = 1","'use strict';\nvar Uint8ArrayReader = require('./Uint8ArrayReader');\nvar utils = require('../utils');\n\nfunction NodeBufferReader(data) {\n Uint8ArrayReader.call(this, data);\n}\nutils.inherits(NodeBufferReader, Uint8ArrayReader);\n\n/**\n * @see DataReader.readData\n */\nNodeBufferReader.prototype.readData = function(size) {\n this.checkOffset(size);\n var result = this.data.slice(this.zero + this.index, this.zero + this.index + size);\n this.index += size;\n return result;\n};\nmodule.exports = NodeBufferReader;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/lib/reader/NodeBufferReader.js\n// module id = 656\n// module chunks = 1","'use strict';\nvar readerFor = require('./reader/readerFor');\nvar utils = require('./utils');\nvar CompressedObject = require('./compressedObject');\nvar crc32fn = require('./crc32');\nvar utf8 = require('./utf8');\nvar compressions = require('./compressions');\nvar support = require('./support');\n\nvar MADE_BY_DOS = 0x00;\nvar MADE_BY_UNIX = 0x03;\n\n/**\n * Find a compression registered in JSZip.\n * @param {string} compressionMethod the method magic to find.\n * @return {Object|null} the JSZip compression object, null if none found.\n */\nvar findCompression = function(compressionMethod) {\n for (var method in compressions) {\n if (!compressions.hasOwnProperty(method)) {\n continue;\n }\n if (compressions[method].magic === compressionMethod) {\n return compressions[method];\n }\n }\n return null;\n};\n\n// class ZipEntry {{{\n/**\n * An entry in the zip file.\n * @constructor\n * @param {Object} options Options of the current file.\n * @param {Object} loadOptions Options for loading the stream.\n */\nfunction ZipEntry(options, loadOptions) {\n this.options = options;\n this.loadOptions = loadOptions;\n}\nZipEntry.prototype = {\n /**\n * say if the file is encrypted.\n * @return {boolean} true if the file is encrypted, false otherwise.\n */\n isEncrypted: function() {\n // bit 1 is set\n return (this.bitFlag & 0x0001) === 0x0001;\n },\n /**\n * say if the file has utf-8 filename/comment.\n * @return {boolean} true if the filename/comment is in utf-8, false otherwise.\n */\n useUTF8: function() {\n // bit 11 is set\n return (this.bitFlag & 0x0800) === 0x0800;\n },\n /**\n * Read the local part of a zip file and add the info in this object.\n * @param {DataReader} reader the reader to use.\n */\n readLocalPart: function(reader) {\n var compression, localExtraFieldsLength;\n\n // we already know everything from the central dir !\n // If the central dir data are false, we are doomed.\n // On the bright side, the local part is scary : zip64, data descriptors, both, etc.\n // The less data we get here, the more reliable this should be.\n // Let's skip the whole header and dash to the data !\n reader.skip(22);\n // in some zip created on windows, the filename stored in the central dir contains \\ instead of /.\n // Strangely, the filename here is OK.\n // I would love to treat these zip files as corrupted (see http://www.info-zip.org/FAQ.html#backslashes\n // or APPNOTE#4.4.17.1, \"All slashes MUST be forward slashes '/'\") but there are a lot of bad zip generators...\n // Search \"unzip mismatching \"local\" filename continuing with \"central\" filename version\" on\n // the internet.\n //\n // I think I see the logic here : the central directory is used to display\n // content and the local directory is used to extract the files. Mixing / and \\\n // may be used to display \\ to windows users and use / when extracting the files.\n // Unfortunately, this lead also to some issues : http://seclists.org/fulldisclosure/2009/Sep/394\n this.fileNameLength = reader.readInt(2);\n localExtraFieldsLength = reader.readInt(2); // can't be sure this will be the same as the central dir\n // the fileName is stored as binary data, the handleUTF8 method will take care of the encoding.\n this.fileName = reader.readData(this.fileNameLength);\n reader.skip(localExtraFieldsLength);\n\n if (this.compressedSize === -1 || this.uncompressedSize === -1) {\n throw new Error(\"Bug or corrupted zip : didn't get enough informations from the central directory \" + \"(compressedSize === -1 || uncompressedSize === -1)\");\n }\n\n compression = findCompression(this.compressionMethod);\n if (compression === null) { // no compression found\n throw new Error(\"Corrupted zip : compression \" + utils.pretty(this.compressionMethod) + \" unknown (inner file : \" + utils.transformTo(\"string\", this.fileName) + \")\");\n }\n this.decompressed = new CompressedObject(this.compressedSize, this.uncompressedSize, this.crc32, compression, reader.readData(this.compressedSize));\n },\n\n /**\n * Read the central part of a zip file and add the info in this object.\n * @param {DataReader} reader the reader to use.\n */\n readCentralPart: function(reader) {\n this.versionMadeBy = reader.readInt(2);\n reader.skip(2);\n // this.versionNeeded = reader.readInt(2);\n this.bitFlag = reader.readInt(2);\n this.compressionMethod = reader.readString(2);\n this.date = reader.readDate();\n this.crc32 = reader.readInt(4);\n this.compressedSize = reader.readInt(4);\n this.uncompressedSize = reader.readInt(4);\n var fileNameLength = reader.readInt(2);\n this.extraFieldsLength = reader.readInt(2);\n this.fileCommentLength = reader.readInt(2);\n this.diskNumberStart = reader.readInt(2);\n this.internalFileAttributes = reader.readInt(2);\n this.externalFileAttributes = reader.readInt(4);\n this.localHeaderOffset = reader.readInt(4);\n\n if (this.isEncrypted()) {\n throw new Error(\"Encrypted zip are not supported\");\n }\n\n // will be read in the local part, see the comments there\n reader.skip(fileNameLength);\n this.readExtraFields(reader);\n this.parseZIP64ExtraField(reader);\n this.fileComment = reader.readData(this.fileCommentLength);\n },\n\n /**\n * Parse the external file attributes and get the unix/dos permissions.\n */\n processAttributes: function () {\n this.unixPermissions = null;\n this.dosPermissions = null;\n var madeBy = this.versionMadeBy >> 8;\n\n // Check if we have the DOS directory flag set.\n // We look for it in the DOS and UNIX permissions\n // but some unknown platform could set it as a compatibility flag.\n this.dir = this.externalFileAttributes & 0x0010 ? true : false;\n\n if(madeBy === MADE_BY_DOS) {\n // first 6 bits (0 to 5)\n this.dosPermissions = this.externalFileAttributes & 0x3F;\n }\n\n if(madeBy === MADE_BY_UNIX) {\n this.unixPermissions = (this.externalFileAttributes >> 16) & 0xFFFF;\n // the octal permissions are in (this.unixPermissions & 0x01FF).toString(8);\n }\n\n // fail safe : if the name ends with a / it probably means a folder\n if (!this.dir && this.fileNameStr.slice(-1) === '/') {\n this.dir = true;\n }\n },\n\n /**\n * Parse the ZIP64 extra field and merge the info in the current ZipEntry.\n * @param {DataReader} reader the reader to use.\n */\n parseZIP64ExtraField: function(reader) {\n\n if (!this.extraFields[0x0001]) {\n return;\n }\n\n // should be something, preparing the extra reader\n var extraReader = readerFor(this.extraFields[0x0001].value);\n\n // I really hope that these 64bits integer can fit in 32 bits integer, because js\n // won't let us have more.\n if (this.uncompressedSize === utils.MAX_VALUE_32BITS) {\n this.uncompressedSize = extraReader.readInt(8);\n }\n if (this.compressedSize === utils.MAX_VALUE_32BITS) {\n this.compressedSize = extraReader.readInt(8);\n }\n if (this.localHeaderOffset === utils.MAX_VALUE_32BITS) {\n this.localHeaderOffset = extraReader.readInt(8);\n }\n if (this.diskNumberStart === utils.MAX_VALUE_32BITS) {\n this.diskNumberStart = extraReader.readInt(4);\n }\n },\n /**\n * Read the central part of a zip file and add the info in this object.\n * @param {DataReader} reader the reader to use.\n */\n readExtraFields: function(reader) {\n var end = reader.index + this.extraFieldsLength,\n extraFieldId,\n extraFieldLength,\n extraFieldValue;\n\n if (!this.extraFields) {\n this.extraFields = {};\n }\n\n while (reader.index < end) {\n extraFieldId = reader.readInt(2);\n extraFieldLength = reader.readInt(2);\n extraFieldValue = reader.readData(extraFieldLength);\n\n this.extraFields[extraFieldId] = {\n id: extraFieldId,\n length: extraFieldLength,\n value: extraFieldValue\n };\n }\n },\n /**\n * Apply an UTF8 transformation if needed.\n */\n handleUTF8: function() {\n var decodeParamType = support.uint8array ? \"uint8array\" : \"array\";\n if (this.useUTF8()) {\n this.fileNameStr = utf8.utf8decode(this.fileName);\n this.fileCommentStr = utf8.utf8decode(this.fileComment);\n } else {\n var upath = this.findExtraFieldUnicodePath();\n if (upath !== null) {\n this.fileNameStr = upath;\n } else {\n // ASCII text or unsupported code page\n var fileNameByteArray = utils.transformTo(decodeParamType, this.fileName);\n this.fileNameStr = this.loadOptions.decodeFileName(fileNameByteArray);\n }\n\n var ucomment = this.findExtraFieldUnicodeComment();\n if (ucomment !== null) {\n this.fileCommentStr = ucomment;\n } else {\n // ASCII text or unsupported code page\n var commentByteArray = utils.transformTo(decodeParamType, this.fileComment);\n this.fileCommentStr = this.loadOptions.decodeFileName(commentByteArray);\n }\n }\n },\n\n /**\n * Find the unicode path declared in the extra field, if any.\n * @return {String} the unicode path, null otherwise.\n */\n findExtraFieldUnicodePath: function() {\n var upathField = this.extraFields[0x7075];\n if (upathField) {\n var extraReader = readerFor(upathField.value);\n\n // wrong version\n if (extraReader.readInt(1) !== 1) {\n return null;\n }\n\n // the crc of the filename changed, this field is out of date.\n if (crc32fn(this.fileName) !== extraReader.readInt(4)) {\n return null;\n }\n\n return utf8.utf8decode(extraReader.readData(upathField.length - 5));\n }\n return null;\n },\n\n /**\n * Find the unicode comment declared in the extra field, if any.\n * @return {String} the unicode comment, null otherwise.\n */\n findExtraFieldUnicodeComment: function() {\n var ucommentField = this.extraFields[0x6375];\n if (ucommentField) {\n var extraReader = readerFor(ucommentField.value);\n\n // wrong version\n if (extraReader.readInt(1) !== 1) {\n return null;\n }\n\n // the crc of the comment changed, this field is out of date.\n if (crc32fn(this.fileComment) !== extraReader.readInt(4)) {\n return null;\n }\n\n return utf8.utf8decode(extraReader.readData(ucommentField.length - 5));\n }\n return null;\n }\n};\nmodule.exports = ZipEntry;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jszip/lib/zipEntry.js\n// module id = 657\n// module chunks = 1","import macro from 'vtk.js/Sources/macro';\n\nconst TUPLE_HOLDER = [];\n\n// ----------------------------------------------------------------------------\n// vtkStringArray methods\n// ----------------------------------------------------------------------------\n\nfunction vtkStringArray(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkStringArray');\n\n // Description:\n // Return the data component at the location specified by tupleIdx and\n // compIdx.\n publicAPI.getComponent = (tupleIdx, compIdx = 0) =>\n model.values[tupleIdx * model.numberOfComponents + compIdx];\n\n // Description:\n // Set the data component at the location specified by tupleIdx and compIdx\n // to value.\n // Note that i is less than NumberOfTuples and j is less than\n // NumberOfComponents. Make sure enough memory has been allocated\n // (use SetNumberOfTuples() and SetNumberOfComponents()).\n publicAPI.setComponent = (tupleIdx, compIdx, value) => {\n if (value !== model.values[tupleIdx * model.numberOfComponents + compIdx]) {\n model.values[tupleIdx * model.numberOfComponents + compIdx] = value;\n publicAPI.modified();\n }\n };\n\n publicAPI.getData = () => model.values;\n\n publicAPI.getTuple = (idx, tupleToFill = TUPLE_HOLDER) => {\n const numberOfComponents = model.numberOfComponents || 1;\n if (tupleToFill.length) {\n tupleToFill.length = numberOfComponents;\n }\n const offset = idx * numberOfComponents;\n for (let i = 0; i < numberOfComponents; i++) {\n tupleToFill[i] = model.values[offset + i];\n }\n return tupleToFill;\n };\n\n publicAPI.getTupleLocation = (idx = 1) => idx * model.numberOfComponents;\n publicAPI.getNumberOfComponents = () => model.numberOfComponents;\n publicAPI.getNumberOfValues = () => model.values.length;\n publicAPI.getNumberOfTuples = () =>\n model.values.length / model.numberOfComponents;\n publicAPI.getDataType = () => model.dataType;\n /* eslint-disable no-use-before-define */\n publicAPI.newClone = () =>\n newInstance({\n name: model.name,\n numberOfComponents: model.numberOfComponents,\n });\n /* eslint-enable no-use-before-define */\n\n publicAPI.getName = () => {\n if (!model.name) {\n publicAPI.modified();\n model.name = `vtkStringArray${publicAPI.getMTime()}`;\n }\n return model.name;\n };\n\n publicAPI.setData = (array, numberOfComponents) => {\n model.values = array;\n model.size = array.length;\n if (numberOfComponents) {\n model.numberOfComponents = numberOfComponents;\n }\n if (model.size % model.numberOfComponents !== 0) {\n model.numberOfComponents = 1;\n }\n publicAPI.modified();\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n name: '',\n numberOfComponents: 1,\n size: 0,\n // values: null,\n dataType: 'string',\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n if (!model.empty && !model.values && !model.size) {\n throw new TypeError(\n 'Cannot create vtkStringArray object without: size > 0, values'\n );\n }\n\n if (!model.values) {\n model.values = [];\n } else if (Array.isArray(model.values)) {\n model.values = model.values;\n }\n\n if (model.values) {\n model.size = model.values.length;\n }\n\n // Object methods\n macro.obj(publicAPI, model);\n macro.set(publicAPI, model, ['name']);\n\n // Object specific methods\n vtkStringArray(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkStringArray');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Common/Core/StringArray/index.js","import macro from 'vtk.js/Sources/macro';\nimport vtkDataArray from 'vtk.js/Sources/Common/Core/DataArray';\nimport vtkPolyData from 'vtk.js/Sources/Common/DataModel/PolyData';\nimport vtkMath from 'vtk.js/Sources/Common/Core/Math';\n\nimport vtkCaseTable from './caseTable';\n\nconst { vtkErrorMacro, vtkDebugMacro } = macro;\n\n// ----------------------------------------------------------------------------\n// vtkImageMarchingCubes methods\n// ----------------------------------------------------------------------------\n\nfunction vtkImageMarchingCubes(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkImageMarchingCubes');\n\n const ids = [];\n const voxelScalars = [];\n const voxelGradients = [];\n const voxelPts = [];\n const edgeMap = new Map();\n\n // Retrieve scalars and voxel coordinates. i-j-k is origin of voxel.\n publicAPI.getVoxelScalars = (i, j, k, slice, dims, origin, spacing, s) => {\n // First get the indices for the voxel\n ids[0] = k * slice + j * dims[0] + i; // i, j, k\n ids[1] = ids[0] + 1; // i+1, j, k\n ids[2] = ids[0] + dims[0]; // i, j+1, k\n ids[3] = ids[2] + 1; // i+1, j+1, k\n ids[4] = ids[0] + slice; // i, j, k+1\n ids[5] = ids[4] + 1; // i+1, j, k+1\n ids[6] = ids[4] + dims[0]; // i, j+1, k+1\n ids[7] = ids[6] + 1; // i+1, j+1, k+1\n\n // Now retrieve the scalars\n for (let ii = 0; ii < 8; ++ii) {\n voxelScalars[ii] = s[ids[ii]];\n }\n };\n\n // Retrieve voxel coordinates. i-j-k is origin of voxel.\n publicAPI.getVoxelPoints = (i, j, k, dims, origin, spacing) => {\n // (i,i+1),(j,j+1),(k,k+1) - i varies fastest; then j; then k\n voxelPts[0] = origin[0] + i * spacing[0]; // 0\n voxelPts[1] = origin[1] + j * spacing[1];\n voxelPts[2] = origin[2] + k * spacing[2];\n voxelPts[3] = voxelPts[0] + spacing[0]; // 1\n voxelPts[4] = voxelPts[1];\n voxelPts[5] = voxelPts[2];\n voxelPts[6] = voxelPts[0]; // 2\n voxelPts[7] = voxelPts[1] + spacing[1];\n voxelPts[8] = voxelPts[2];\n voxelPts[9] = voxelPts[3]; // 3\n voxelPts[10] = voxelPts[7];\n voxelPts[11] = voxelPts[2];\n voxelPts[12] = voxelPts[0]; // 4\n voxelPts[13] = voxelPts[1];\n voxelPts[14] = voxelPts[2] + spacing[2];\n voxelPts[15] = voxelPts[3]; // 5\n voxelPts[16] = voxelPts[1];\n voxelPts[17] = voxelPts[14];\n voxelPts[18] = voxelPts[0]; // 6\n voxelPts[19] = voxelPts[7];\n voxelPts[20] = voxelPts[14];\n voxelPts[21] = voxelPts[3]; // 7\n voxelPts[22] = voxelPts[7];\n voxelPts[23] = voxelPts[14];\n };\n\n // Compute point gradient at i-j-k location\n publicAPI.getPointGradient = (i, j, k, dims, slice, spacing, s, g) => {\n let sp;\n let sm;\n\n // x-direction\n if (i === 0) {\n sp = s[i + 1 + j * dims[0] + k * slice];\n sm = s[i + j * dims[0] + k * slice];\n g[0] = (sm - sp) / spacing[0];\n } else if (i === dims[0] - 1) {\n sp = s[i + j * dims[0] + k * slice];\n sm = s[i - 1 + j * dims[0] + k * slice];\n g[0] = (sm - sp) / spacing[0];\n } else {\n sp = s[i + 1 + j * dims[0] + k * slice];\n sm = s[i - 1 + j * dims[0] + k * slice];\n g[0] = 0.5 * (sm - sp) / spacing[0];\n }\n\n // y-direction\n if (j === 0) {\n sp = s[i + (j + 1) * dims[0] + k * slice];\n sm = s[i + j * dims[0] + k * slice];\n g[1] = (sm - sp) / spacing[1];\n } else if (j === dims[1] - 1) {\n sp = s[i + j * dims[0] + k * slice];\n sm = s[i + (j - 1) * dims[0] + k * slice];\n g[1] = (sm - sp) / spacing[1];\n } else {\n sp = s[i + (j + 1) * dims[0] + k * slice];\n sm = s[i + (j - 1) * dims[0] + k * slice];\n g[1] = 0.5 * (sm - sp) / spacing[1];\n }\n\n // z-direction\n if (k === 0) {\n sp = s[i + j * dims[0] + (k + 1) * slice];\n sm = s[i + j * dims[0] + k * slice];\n g[2] = (sm - sp) / spacing[2];\n } else if (k === dims[2] - 1) {\n sp = s[i + j * dims[0] + k * slice];\n sm = s[i + j * dims[0] + (k - 1) * slice];\n g[2] = (sm - sp) / spacing[2];\n } else {\n sp = s[i + j * dims[0] + (k + 1) * slice];\n sm = s[i + j * dims[0] + (k - 1) * slice];\n g[2] = 0.5 * (sm - sp) / spacing[2];\n }\n };\n\n // Compute voxel gradient values. I-j-k is origin point of voxel.\n publicAPI.getVoxelGradients = (i, j, k, dims, slice, spacing, scalars) => {\n const g = [];\n\n publicAPI.getPointGradient(i, j, k, dims, slice, spacing, scalars, g);\n voxelGradients[0] = g[0];\n voxelGradients[1] = g[1];\n voxelGradients[2] = g[2];\n publicAPI.getPointGradient(i + 1, j, k, dims, slice, spacing, scalars, g);\n voxelGradients[3] = g[0];\n voxelGradients[4] = g[1];\n voxelGradients[5] = g[2];\n publicAPI.getPointGradient(i, j + 1, k, dims, slice, spacing, scalars, g);\n voxelGradients[6] = g[0];\n voxelGradients[7] = g[1];\n voxelGradients[8] = g[2];\n publicAPI.getPointGradient(\n i + 1,\n j + 1,\n k,\n dims,\n slice,\n spacing,\n scalars,\n g\n );\n voxelGradients[9] = g[0];\n voxelGradients[10] = g[1];\n voxelGradients[11] = g[2];\n publicAPI.getPointGradient(i, j, k + 1, dims, slice, spacing, scalars, g);\n voxelGradients[12] = g[0];\n voxelGradients[13] = g[1];\n voxelGradients[14] = g[2];\n publicAPI.getPointGradient(\n i + 1,\n j,\n k + 1,\n dims,\n slice,\n spacing,\n scalars,\n g\n );\n voxelGradients[15] = g[0];\n voxelGradients[16] = g[1];\n voxelGradients[17] = g[2];\n publicAPI.getPointGradient(\n i,\n j + 1,\n k + 1,\n dims,\n slice,\n spacing,\n scalars,\n g\n );\n voxelGradients[18] = g[0];\n voxelGradients[19] = g[1];\n voxelGradients[20] = g[2];\n publicAPI.getPointGradient(\n i + 1,\n j + 1,\n k + 1,\n dims,\n slice,\n spacing,\n scalars,\n g\n );\n voxelGradients[21] = g[0];\n voxelGradients[22] = g[1];\n voxelGradients[23] = g[2];\n };\n\n publicAPI.produceTriangles = (\n cVal,\n i,\n j,\n k,\n slice,\n dims,\n origin,\n spacing,\n scalars,\n points,\n tris,\n normals\n ) => {\n const CASE_MASK = [1, 2, 4, 8, 16, 32, 64, 128];\n const VERT_MAP = [0, 1, 3, 2, 4, 5, 7, 6];\n const xyz = [];\n const n = [];\n let pId;\n let tmp;\n const edge = [];\n\n publicAPI.getVoxelScalars(i, j, k, slice, dims, origin, spacing, scalars);\n\n let index = 0;\n for (let idx = 0; idx < 8; idx++) {\n if (voxelScalars[VERT_MAP[idx]] >= cVal) {\n index |= CASE_MASK[idx]; // eslint-disable-line no-bitwise\n }\n }\n\n const voxelTris = vtkCaseTable.getCase(index);\n if (voxelTris[0] < 0) {\n return; // don't get the voxel coordinates, nothing to do\n }\n\n publicAPI.getVoxelPoints(i, j, k, dims, origin, spacing);\n if (model.computeNormals) {\n publicAPI.getVoxelGradients(i, j, k, dims, slice, spacing, scalars);\n }\n\n for (let idx = 0; voxelTris[idx] >= 0; idx += 3) {\n tris.push(3);\n for (let eid = 0; eid < 3; eid++) {\n const edgeVerts = vtkCaseTable.getEdge(voxelTris[idx + eid]);\n pId = undefined;\n if (model.mergePoints) {\n edge[0] = ids[edgeVerts[0]];\n edge[1] = ids[edgeVerts[1]];\n if (edge[0] > edge[1]) {\n tmp = edge[0];\n edge[0] = edge[1];\n edge[1] = tmp;\n }\n pId = edgeMap.get(edge);\n }\n if (pId === undefined) {\n const t =\n (cVal - voxelScalars[edgeVerts[0]]) /\n (voxelScalars[edgeVerts[1]] - voxelScalars[edgeVerts[0]]);\n const x0 = voxelPts.slice(edgeVerts[0] * 3, (edgeVerts[0] + 1) * 3);\n const x1 = voxelPts.slice(edgeVerts[1] * 3, (edgeVerts[1] + 1) * 3);\n xyz[0] = x0[0] + t * (x1[0] - x0[0]);\n xyz[1] = x0[1] + t * (x1[1] - x0[1]);\n xyz[2] = x0[2] + t * (x1[2] - x0[2]);\n pId = points.length / 3;\n points.push(xyz[0], xyz[1], xyz[2]);\n\n if (model.computeNormals) {\n const n0 = voxelGradients.slice(\n edgeVerts[0] * 3,\n (edgeVerts[0] + 1) * 3\n );\n const n1 = voxelGradients.slice(\n edgeVerts[1] * 3,\n (edgeVerts[1] + 1) * 3\n );\n n[0] = n0[0] + t * (n1[0] - n0[0]);\n n[1] = n0[1] + t * (n1[1] - n0[1]);\n n[2] = n0[2] + t * (n1[2] - n0[2]);\n vtkMath.normalize(n);\n normals.push(n[0], n[1], n[2]);\n }\n\n if (model.mergePoints) {\n edge[0] = ids[edgeVerts[0]];\n edge[1] = ids[edgeVerts[1]];\n if (edge[0] > edge[1]) {\n tmp = edge[0];\n edge[0] = edge[1];\n edge[1] = tmp;\n }\n edgeMap[edge] = pId;\n }\n }\n tris.push(pId);\n }\n }\n };\n\n publicAPI.requestData = (inData, outData) => {\n // implement requestData\n const input = inData[0];\n\n if (!input) {\n vtkErrorMacro('Invalid or missing input');\n return;\n }\n\n console.time('mcubes');\n\n // Retrieve output and volume data\n const origin = input.getOrigin();\n const spacing = input.getSpacing();\n const dims = input.getDimensions();\n const s = input\n .getPointData()\n .getScalars()\n .getData();\n\n // Points - dynamic array\n const pBuffer = [];\n\n // Cells - dynamic array\n const tBuffer = [];\n\n // Normals\n const nBuffer = [];\n\n // Loop over all voxels, determine case and process\n const slice = dims[0] * dims[1];\n for (let k = 0; k < dims[2] - 1; ++k) {\n for (let j = 0; j < dims[1] - 1; ++j) {\n for (let i = 0; i < dims[0] - 1; ++i) {\n publicAPI.produceTriangles(\n model.contourValue,\n i,\n j,\n k,\n slice,\n dims,\n origin,\n spacing,\n s,\n pBuffer,\n tBuffer,\n nBuffer\n );\n }\n }\n }\n\n // Update output\n const polydata = vtkPolyData.newInstance();\n polydata.getPoints().setData(new Float32Array(pBuffer), 3);\n polydata.getPolys().setData(new Uint32Array(tBuffer));\n if (model.computeNormals) {\n const nData = new Float32Array(nBuffer);\n const normals = vtkDataArray.newInstance({\n numberOfComponents: 3,\n values: nData,\n name: 'Normals',\n });\n polydata.getPointData().setNormals(normals);\n }\n outData[0] = polydata;\n\n vtkDebugMacro('Produced output');\n console.timeEnd('mcubes');\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n contourValue: 0,\n computeNormals: false,\n mergePoints: false,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Make this a VTK object\n macro.obj(publicAPI, model);\n\n // Also make it an algorithm with one input and one output\n macro.algo(publicAPI, model, 1, 1);\n\n macro.setGet(publicAPI, model, [\n 'contourValue',\n 'computeNormals',\n 'mergePoints',\n ]);\n\n // Object specific methods\n macro.algo(publicAPI, model, 1, 1);\n vtkImageMarchingCubes(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkImageMarchingCubes');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Filters/General/ImageMarchingCubes/index.js","// ----------------------------------------------------------------------------\n// Marching cubes case functions (using triangles to complete tessellation).\n// For each case, a list of edge ids that form the triangles. A -1 marks the\n// end of the list of edges. Edges are taken three at a time to generate\n// triangle points.\n// ----------------------------------------------------------------------------\nconst MARCHING_CUBE_CASES = [\n [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 0 0 */,\n [0, 3, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 1 1 */,\n [0, 9, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 2 1 */,\n [1, 3, 8, 9, 1, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 3 2 */,\n [1, 11, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 4 1 */,\n [0, 3, 8, 1, 11, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 5 3 */,\n [9, 11, 2, 0, 9, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 6 2 */,\n [2, 3, 8, 2, 8, 11, 11, 8, 9, -1, -1, -1, -1, -1, -1, -1] /* 7 5 */,\n [3, 2, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 8 1 */,\n [0, 2, 10, 8, 0, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 9 2 */,\n [1, 0, 9, 2, 10, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 10 3 */,\n [1, 2, 10, 1, 10, 9, 9, 10, 8, -1, -1, -1, -1, -1, -1, -1] /* 11 5 */,\n [3, 1, 11, 10, 3, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 12 2 */,\n [0, 1, 11, 0, 11, 8, 8, 11, 10, -1, -1, -1, -1, -1, -1, -1] /* 13 5 */,\n [3, 0, 9, 3, 9, 10, 10, 9, 11, -1, -1, -1, -1, -1, -1, -1] /* 14 5 */,\n [9, 11, 8, 11, 10, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 15 8 */,\n [4, 8, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 16 1 */,\n [4, 0, 3, 7, 4, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 17 2 */,\n [0, 9, 1, 8, 7, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 18 3 */,\n [4, 9, 1, 4, 1, 7, 7, 1, 3, -1, -1, -1, -1, -1, -1, -1] /* 19 5 */,\n [1, 11, 2, 8, 7, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 20 4 */,\n [3, 7, 4, 3, 4, 0, 1, 11, 2, -1, -1, -1, -1, -1, -1, -1] /* 21 7 */,\n [9, 11, 2, 9, 2, 0, 8, 7, 4, -1, -1, -1, -1, -1, -1, -1] /* 22 7 */,\n [2, 9, 11, 2, 7, 9, 2, 3, 7, 7, 4, 9, -1, -1, -1, -1] /* 23 14 */,\n [8, 7, 4, 3, 2, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 24 3 */,\n [10, 7, 4, 10, 4, 2, 2, 4, 0, -1, -1, -1, -1, -1, -1, -1] /* 25 5 */,\n [9, 1, 0, 8, 7, 4, 2, 10, 3, -1, -1, -1, -1, -1, -1, -1] /* 26 6 */,\n [4, 10, 7, 9, 10, 4, 9, 2, 10, 9, 1, 2, -1, -1, -1, -1] /* 27 9 */,\n [3, 1, 11, 3, 11, 10, 7, 4, 8, -1, -1, -1, -1, -1, -1, -1] /* 28 7 */,\n [1, 11, 10, 1, 10, 4, 1, 4, 0, 7, 4, 10, -1, -1, -1, -1] /* 29 11 */,\n [4, 8, 7, 9, 10, 0, 9, 11, 10, 10, 3, 0, -1, -1, -1, -1] /* 30 12 */,\n [4, 10, 7, 4, 9, 10, 9, 11, 10, -1, -1, -1, -1, -1, -1, -1] /* 31 5 */,\n [9, 4, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 32 1 */,\n [9, 4, 5, 0, 3, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 33 3 */,\n [0, 4, 5, 1, 0, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 34 2 */,\n [8, 4, 5, 8, 5, 3, 3, 5, 1, -1, -1, -1, -1, -1, -1, -1] /* 35 5 */,\n [1, 11, 2, 9, 4, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 36 3 */,\n [3, 8, 0, 1, 11, 2, 4, 5, 9, -1, -1, -1, -1, -1, -1, -1] /* 37 6 */,\n [5, 11, 2, 5, 2, 4, 4, 2, 0, -1, -1, -1, -1, -1, -1, -1] /* 38 5 */,\n [2, 5, 11, 3, 5, 2, 3, 4, 5, 3, 8, 4, -1, -1, -1, -1] /* 39 9 */,\n [9, 4, 5, 2, 10, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 40 4 */,\n [0, 2, 10, 0, 10, 8, 4, 5, 9, -1, -1, -1, -1, -1, -1, -1] /* 41 7 */,\n [0, 4, 5, 0, 5, 1, 2, 10, 3, -1, -1, -1, -1, -1, -1, -1] /* 42 7 */,\n [2, 5, 1, 2, 8, 5, 2, 10, 8, 4, 5, 8, -1, -1, -1, -1] /* 43 11 */,\n [11, 10, 3, 11, 3, 1, 9, 4, 5, -1, -1, -1, -1, -1, -1, -1] /* 44 7 */,\n [4, 5, 9, 0, 1, 8, 8, 1, 11, 8, 11, 10, -1, -1, -1, -1] /* 45 12 */,\n [5, 0, 4, 5, 10, 0, 5, 11, 10, 10, 3, 0, -1, -1, -1, -1] /* 46 14 */,\n [5, 8, 4, 5, 11, 8, 11, 10, 8, -1, -1, -1, -1, -1, -1, -1] /* 47 5 */,\n [9, 8, 7, 5, 9, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 48 2 */,\n [9, 0, 3, 9, 3, 5, 5, 3, 7, -1, -1, -1, -1, -1, -1, -1] /* 49 5 */,\n [0, 8, 7, 0, 7, 1, 1, 7, 5, -1, -1, -1, -1, -1, -1, -1] /* 50 5 */,\n [1, 3, 5, 3, 7, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 51 8 */,\n [9, 8, 7, 9, 7, 5, 11, 2, 1, -1, -1, -1, -1, -1, -1, -1] /* 52 7 */,\n [11, 2, 1, 9, 0, 5, 5, 0, 3, 5, 3, 7, -1, -1, -1, -1] /* 53 12 */,\n [8, 2, 0, 8, 5, 2, 8, 7, 5, 11, 2, 5, -1, -1, -1, -1] /* 54 11 */,\n [2, 5, 11, 2, 3, 5, 3, 7, 5, -1, -1, -1, -1, -1, -1, -1] /* 55 5 */,\n [7, 5, 9, 7, 9, 8, 3, 2, 10, -1, -1, -1, -1, -1, -1, -1] /* 56 7 */,\n [9, 7, 5, 9, 2, 7, 9, 0, 2, 2, 10, 7, -1, -1, -1, -1] /* 57 14 */,\n [2, 10, 3, 0, 8, 1, 1, 8, 7, 1, 7, 5, -1, -1, -1, -1] /* 58 12 */,\n [10, 1, 2, 10, 7, 1, 7, 5, 1, -1, -1, -1, -1, -1, -1, -1] /* 59 5 */,\n [9, 8, 5, 8, 7, 5, 11, 3, 1, 11, 10, 3, -1, -1, -1, -1] /* 60 10 */,\n [5, 0, 7, 5, 9, 0, 7, 0, 10, 1, 11, 0, 10, 0, 11, -1] /* 61 7 */,\n [10, 0, 11, 10, 3, 0, 11, 0, 5, 8, 7, 0, 5, 0, 7, -1] /* 62 7 */,\n [10, 5, 11, 7, 5, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 63 2 */,\n [11, 5, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 64 1 */,\n [0, 3, 8, 5, 6, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 65 4 */,\n [9, 1, 0, 5, 6, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 66 3 */,\n [1, 3, 8, 1, 8, 9, 5, 6, 11, -1, -1, -1, -1, -1, -1, -1] /* 67 7 */,\n [1, 5, 6, 2, 1, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 68 2 */,\n [1, 5, 6, 1, 6, 2, 3, 8, 0, -1, -1, -1, -1, -1, -1, -1] /* 69 7 */,\n [9, 5, 6, 9, 6, 0, 0, 6, 2, -1, -1, -1, -1, -1, -1, -1] /* 70 5 */,\n [5, 8, 9, 5, 2, 8, 5, 6, 2, 3, 8, 2, -1, -1, -1, -1] /* 71 11 */,\n [2, 10, 3, 11, 5, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 72 3 */,\n [10, 8, 0, 10, 0, 2, 11, 5, 6, -1, -1, -1, -1, -1, -1, -1] /* 73 7 */,\n [0, 9, 1, 2, 10, 3, 5, 6, 11, -1, -1, -1, -1, -1, -1, -1] /* 74 6 */,\n [5, 6, 11, 1, 2, 9, 9, 2, 10, 9, 10, 8, -1, -1, -1, -1] /* 75 12 */,\n [6, 10, 3, 6, 3, 5, 5, 3, 1, -1, -1, -1, -1, -1, -1, -1] /* 76 5 */,\n [0, 10, 8, 0, 5, 10, 0, 1, 5, 5, 6, 10, -1, -1, -1, -1] /* 77 14 */,\n [3, 6, 10, 0, 6, 3, 0, 5, 6, 0, 9, 5, -1, -1, -1, -1] /* 78 9 */,\n [6, 9, 5, 6, 10, 9, 10, 8, 9, -1, -1, -1, -1, -1, -1, -1] /* 79 5 */,\n [5, 6, 11, 4, 8, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 80 3 */,\n [4, 0, 3, 4, 3, 7, 6, 11, 5, -1, -1, -1, -1, -1, -1, -1] /* 81 7 */,\n [1, 0, 9, 5, 6, 11, 8, 7, 4, -1, -1, -1, -1, -1, -1, -1] /* 82 6 */,\n [11, 5, 6, 1, 7, 9, 1, 3, 7, 7, 4, 9, -1, -1, -1, -1] /* 83 12 */,\n [6, 2, 1, 6, 1, 5, 4, 8, 7, -1, -1, -1, -1, -1, -1, -1] /* 84 7 */,\n [1, 5, 2, 5, 6, 2, 3, 4, 0, 3, 7, 4, -1, -1, -1, -1] /* 85 10 */,\n [8, 7, 4, 9, 5, 0, 0, 5, 6, 0, 6, 2, -1, -1, -1, -1] /* 86 12 */,\n [7, 9, 3, 7, 4, 9, 3, 9, 2, 5, 6, 9, 2, 9, 6, -1] /* 87 7 */,\n [3, 2, 10, 7, 4, 8, 11, 5, 6, -1, -1, -1, -1, -1, -1, -1] /* 88 6 */,\n [5, 6, 11, 4, 2, 7, 4, 0, 2, 2, 10, 7, -1, -1, -1, -1] /* 89 12 */,\n [0, 9, 1, 4, 8, 7, 2, 10, 3, 5, 6, 11, -1, -1, -1, -1] /* 90 13 */,\n [9, 1, 2, 9, 2, 10, 9, 10, 4, 7, 4, 10, 5, 6, 11, -1] /* 91 6 */,\n [8, 7, 4, 3, 5, 10, 3, 1, 5, 5, 6, 10, -1, -1, -1, -1] /* 92 12 */,\n [5, 10, 1, 5, 6, 10, 1, 10, 0, 7, 4, 10, 0, 10, 4, -1] /* 93 7 */,\n [0, 9, 5, 0, 5, 6, 0, 6, 3, 10, 3, 6, 8, 7, 4, -1] /* 94 6 */,\n [6, 9, 5, 6, 10, 9, 4, 9, 7, 7, 9, 10, -1, -1, -1, -1] /* 95 3 */,\n [11, 9, 4, 6, 11, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 96 2 */,\n [4, 6, 11, 4, 11, 9, 0, 3, 8, -1, -1, -1, -1, -1, -1, -1] /* 97 7 */,\n [11, 1, 0, 11, 0, 6, 6, 0, 4, -1, -1, -1, -1, -1, -1, -1] /* 98 5 */,\n [8, 1, 3, 8, 6, 1, 8, 4, 6, 6, 11, 1, -1, -1, -1, -1] /* 99 14 */,\n [1, 9, 4, 1, 4, 2, 2, 4, 6, -1, -1, -1, -1, -1, -1, -1] /* 100 5 */,\n [3, 8, 0, 1, 9, 2, 2, 9, 4, 2, 4, 6, -1, -1, -1, -1] /* 101 12 */,\n [0, 4, 2, 4, 6, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 102 8 */,\n [8, 2, 3, 8, 4, 2, 4, 6, 2, -1, -1, -1, -1, -1, -1, -1] /* 103 5 */,\n [11, 9, 4, 11, 4, 6, 10, 3, 2, -1, -1, -1, -1, -1, -1, -1] /* 104 7 */,\n [0, 2, 8, 2, 10, 8, 4, 11, 9, 4, 6, 11, -1, -1, -1, -1] /* 105 10 */,\n [3, 2, 10, 0, 6, 1, 0, 4, 6, 6, 11, 1, -1, -1, -1, -1] /* 106 12 */,\n [6, 1, 4, 6, 11, 1, 4, 1, 8, 2, 10, 1, 8, 1, 10, -1] /* 107 7 */,\n [9, 4, 6, 9, 6, 3, 9, 3, 1, 10, 3, 6, -1, -1, -1, -1] /* 108 11 */,\n [8, 1, 10, 8, 0, 1, 10, 1, 6, 9, 4, 1, 6, 1, 4, -1] /* 109 7 */,\n [3, 6, 10, 3, 0, 6, 0, 4, 6, -1, -1, -1, -1, -1, -1, -1] /* 110 5 */,\n [6, 8, 4, 10, 8, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 111 2 */,\n [7, 6, 11, 7, 11, 8, 8, 11, 9, -1, -1, -1, -1, -1, -1, -1] /* 112 5 */,\n [0, 3, 7, 0, 7, 11, 0, 11, 9, 6, 11, 7, -1, -1, -1, -1] /* 113 11 */,\n [11, 7, 6, 1, 7, 11, 1, 8, 7, 1, 0, 8, -1, -1, -1, -1] /* 114 9 */,\n [11, 7, 6, 11, 1, 7, 1, 3, 7, -1, -1, -1, -1, -1, -1, -1] /* 115 5 */,\n [1, 6, 2, 1, 8, 6, 1, 9, 8, 8, 7, 6, -1, -1, -1, -1] /* 116 14 */,\n [2, 9, 6, 2, 1, 9, 6, 9, 7, 0, 3, 9, 7, 9, 3, -1] /* 117 7 */,\n [7, 0, 8, 7, 6, 0, 6, 2, 0, -1, -1, -1, -1, -1, -1, -1] /* 118 5 */,\n [7, 2, 3, 6, 2, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 119 2 */,\n [2, 10, 3, 11, 8, 6, 11, 9, 8, 8, 7, 6, -1, -1, -1, -1] /* 120 12 */,\n [2, 7, 0, 2, 10, 7, 0, 7, 9, 6, 11, 7, 9, 7, 11, -1] /* 121 7 */,\n [1, 0, 8, 1, 8, 7, 1, 7, 11, 6, 11, 7, 2, 10, 3, -1] /* 122 6 */,\n [10, 1, 2, 10, 7, 1, 11, 1, 6, 6, 1, 7, -1, -1, -1, -1] /* 123 3 */,\n [8, 6, 9, 8, 7, 6, 9, 6, 1, 10, 3, 6, 1, 6, 3, -1] /* 124 7 */,\n [0, 1, 9, 10, 7, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 125 4 */,\n [7, 0, 8, 7, 6, 0, 3, 0, 10, 10, 0, 6, -1, -1, -1, -1] /* 126 3 */,\n [7, 6, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 127 1 */,\n [7, 10, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 128 1 */,\n [3, 8, 0, 10, 6, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 129 3 */,\n [0, 9, 1, 10, 6, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 130 4 */,\n [8, 9, 1, 8, 1, 3, 10, 6, 7, -1, -1, -1, -1, -1, -1, -1] /* 131 7 */,\n [11, 2, 1, 6, 7, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 132 3 */,\n [1, 11, 2, 3, 8, 0, 6, 7, 10, -1, -1, -1, -1, -1, -1, -1] /* 133 6 */,\n [2, 0, 9, 2, 9, 11, 6, 7, 10, -1, -1, -1, -1, -1, -1, -1] /* 134 7 */,\n [6, 7, 10, 2, 3, 11, 11, 3, 8, 11, 8, 9, -1, -1, -1, -1] /* 135 12 */,\n [7, 3, 2, 6, 7, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 136 2 */,\n [7, 8, 0, 7, 0, 6, 6, 0, 2, -1, -1, -1, -1, -1, -1, -1] /* 137 5 */,\n [2, 6, 7, 2, 7, 3, 0, 9, 1, -1, -1, -1, -1, -1, -1, -1] /* 138 7 */,\n [1, 2, 6, 1, 6, 8, 1, 8, 9, 8, 6, 7, -1, -1, -1, -1] /* 139 14 */,\n [11, 6, 7, 11, 7, 1, 1, 7, 3, -1, -1, -1, -1, -1, -1, -1] /* 140 5 */,\n [11, 6, 7, 1, 11, 7, 1, 7, 8, 1, 8, 0, -1, -1, -1, -1] /* 141 9 */,\n [0, 7, 3, 0, 11, 7, 0, 9, 11, 6, 7, 11, -1, -1, -1, -1] /* 142 11 */,\n [7, 11, 6, 7, 8, 11, 8, 9, 11, -1, -1, -1, -1, -1, -1, -1] /* 143 5 */,\n [6, 4, 8, 10, 6, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 144 2 */,\n [3, 10, 6, 3, 6, 0, 0, 6, 4, -1, -1, -1, -1, -1, -1, -1] /* 145 5 */,\n [8, 10, 6, 8, 6, 4, 9, 1, 0, -1, -1, -1, -1, -1, -1, -1] /* 146 7 */,\n [9, 6, 4, 9, 3, 6, 9, 1, 3, 10, 6, 3, -1, -1, -1, -1] /* 147 11 */,\n [6, 4, 8, 6, 8, 10, 2, 1, 11, -1, -1, -1, -1, -1, -1, -1] /* 148 7 */,\n [1, 11, 2, 3, 10, 0, 0, 10, 6, 0, 6, 4, -1, -1, -1, -1] /* 149 12 */,\n [4, 8, 10, 4, 10, 6, 0, 9, 2, 2, 9, 11, -1, -1, -1, -1] /* 150 10 */,\n [11, 3, 9, 11, 2, 3, 9, 3, 4, 10, 6, 3, 4, 3, 6, -1] /* 151 7 */,\n [8, 3, 2, 8, 2, 4, 4, 2, 6, -1, -1, -1, -1, -1, -1, -1] /* 152 5 */,\n [0, 2, 4, 4, 2, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 153 8 */,\n [1, 0, 9, 2, 4, 3, 2, 6, 4, 4, 8, 3, -1, -1, -1, -1] /* 154 12 */,\n [1, 4, 9, 1, 2, 4, 2, 6, 4, -1, -1, -1, -1, -1, -1, -1] /* 155 5 */,\n [8, 3, 1, 8, 1, 6, 8, 6, 4, 6, 1, 11, -1, -1, -1, -1] /* 156 14 */,\n [11, 0, 1, 11, 6, 0, 6, 4, 0, -1, -1, -1, -1, -1, -1, -1] /* 157 5 */,\n [4, 3, 6, 4, 8, 3, 6, 3, 11, 0, 9, 3, 11, 3, 9, -1] /* 158 7 */,\n [11, 4, 9, 6, 4, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 159 2 */,\n [4, 5, 9, 7, 10, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 160 3 */,\n [0, 3, 8, 4, 5, 9, 10, 6, 7, -1, -1, -1, -1, -1, -1, -1] /* 161 6 */,\n [5, 1, 0, 5, 0, 4, 7, 10, 6, -1, -1, -1, -1, -1, -1, -1] /* 162 7 */,\n [10, 6, 7, 8, 4, 3, 3, 4, 5, 3, 5, 1, -1, -1, -1, -1] /* 163 12 */,\n [9, 4, 5, 11, 2, 1, 7, 10, 6, -1, -1, -1, -1, -1, -1, -1] /* 164 6 */,\n [6, 7, 10, 1, 11, 2, 0, 3, 8, 4, 5, 9, -1, -1, -1, -1] /* 165 13 */,\n [7, 10, 6, 5, 11, 4, 4, 11, 2, 4, 2, 0, -1, -1, -1, -1] /* 166 12 */,\n [3, 8, 4, 3, 4, 5, 3, 5, 2, 11, 2, 5, 10, 6, 7, -1] /* 167 6 */,\n [7, 3, 2, 7, 2, 6, 5, 9, 4, -1, -1, -1, -1, -1, -1, -1] /* 168 7 */,\n [9, 4, 5, 0, 6, 8, 0, 2, 6, 6, 7, 8, -1, -1, -1, -1] /* 169 12 */,\n [3, 2, 6, 3, 6, 7, 1, 0, 5, 5, 0, 4, -1, -1, -1, -1] /* 170 10 */,\n [6, 8, 2, 6, 7, 8, 2, 8, 1, 4, 5, 8, 1, 8, 5, -1] /* 171 7 */,\n [9, 4, 5, 11, 6, 1, 1, 6, 7, 1, 7, 3, -1, -1, -1, -1] /* 172 12 */,\n [1, 11, 6, 1, 6, 7, 1, 7, 0, 8, 0, 7, 9, 4, 5, -1] /* 173 6 */,\n [4, 11, 0, 4, 5, 11, 0, 11, 3, 6, 7, 11, 3, 11, 7, -1] /* 174 7 */,\n [7, 11, 6, 7, 8, 11, 5, 11, 4, 4, 11, 8, -1, -1, -1, -1] /* 175 3 */,\n [6, 5, 9, 6, 9, 10, 10, 9, 8, -1, -1, -1, -1, -1, -1, -1] /* 176 5 */,\n [3, 10, 6, 0, 3, 6, 0, 6, 5, 0, 5, 9, -1, -1, -1, -1] /* 177 9 */,\n [0, 8, 10, 0, 10, 5, 0, 5, 1, 5, 10, 6, -1, -1, -1, -1] /* 178 14 */,\n [6, 3, 10, 6, 5, 3, 5, 1, 3, -1, -1, -1, -1, -1, -1, -1] /* 179 5 */,\n [1, 11, 2, 9, 10, 5, 9, 8, 10, 10, 6, 5, -1, -1, -1, -1] /* 180 12 */,\n [0, 3, 10, 0, 10, 6, 0, 6, 9, 5, 9, 6, 1, 11, 2, -1] /* 181 6 */,\n [10, 5, 8, 10, 6, 5, 8, 5, 0, 11, 2, 5, 0, 5, 2, -1] /* 182 7 */,\n [6, 3, 10, 6, 5, 3, 2, 3, 11, 11, 3, 5, -1, -1, -1, -1] /* 183 3 */,\n [5, 9, 8, 5, 8, 2, 5, 2, 6, 3, 2, 8, -1, -1, -1, -1] /* 184 11 */,\n [9, 6, 5, 9, 0, 6, 0, 2, 6, -1, -1, -1, -1, -1, -1, -1] /* 185 5 */,\n [1, 8, 5, 1, 0, 8, 5, 8, 6, 3, 2, 8, 6, 8, 2, -1] /* 186 7 */,\n [1, 6, 5, 2, 6, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 187 2 */,\n [1, 6, 3, 1, 11, 6, 3, 6, 8, 5, 9, 6, 8, 6, 9, -1] /* 188 7 */,\n [11, 0, 1, 11, 6, 0, 9, 0, 5, 5, 0, 6, -1, -1, -1, -1] /* 189 3 */,\n [0, 8, 3, 5, 11, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 190 4 */,\n [11, 6, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 191 1 */,\n [10, 11, 5, 7, 10, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 192 2 */,\n [10, 11, 5, 10, 5, 7, 8, 0, 3, -1, -1, -1, -1, -1, -1, -1] /* 193 7 */,\n [5, 7, 10, 5, 10, 11, 1, 0, 9, -1, -1, -1, -1, -1, -1, -1] /* 194 7 */,\n [11, 5, 7, 11, 7, 10, 9, 1, 8, 8, 1, 3, -1, -1, -1, -1] /* 195 10 */,\n [10, 2, 1, 10, 1, 7, 7, 1, 5, -1, -1, -1, -1, -1, -1, -1] /* 196 5 */,\n [0, 3, 8, 1, 7, 2, 1, 5, 7, 7, 10, 2, -1, -1, -1, -1] /* 197 12 */,\n [9, 5, 7, 9, 7, 2, 9, 2, 0, 2, 7, 10, -1, -1, -1, -1] /* 198 14 */,\n [7, 2, 5, 7, 10, 2, 5, 2, 9, 3, 8, 2, 9, 2, 8, -1] /* 199 7 */,\n [2, 11, 5, 2, 5, 3, 3, 5, 7, -1, -1, -1, -1, -1, -1, -1] /* 200 5 */,\n [8, 0, 2, 8, 2, 5, 8, 5, 7, 11, 5, 2, -1, -1, -1, -1] /* 201 11 */,\n [9, 1, 0, 5, 3, 11, 5, 7, 3, 3, 2, 11, -1, -1, -1, -1] /* 202 12 */,\n [9, 2, 8, 9, 1, 2, 8, 2, 7, 11, 5, 2, 7, 2, 5, -1] /* 203 7 */,\n [1, 5, 3, 3, 5, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 204 8 */,\n [0, 7, 8, 0, 1, 7, 1, 5, 7, -1, -1, -1, -1, -1, -1, -1] /* 205 5 */,\n [9, 3, 0, 9, 5, 3, 5, 7, 3, -1, -1, -1, -1, -1, -1, -1] /* 206 5 */,\n [9, 7, 8, 5, 7, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 207 2 */,\n [5, 4, 8, 5, 8, 11, 11, 8, 10, -1, -1, -1, -1, -1, -1, -1] /* 208 5 */,\n [5, 4, 0, 5, 0, 10, 5, 10, 11, 10, 0, 3, -1, -1, -1, -1] /* 209 14 */,\n [0, 9, 1, 8, 11, 4, 8, 10, 11, 11, 5, 4, -1, -1, -1, -1] /* 210 12 */,\n [11, 4, 10, 11, 5, 4, 10, 4, 3, 9, 1, 4, 3, 4, 1, -1] /* 211 7 */,\n [2, 1, 5, 2, 5, 8, 2, 8, 10, 4, 8, 5, -1, -1, -1, -1] /* 212 11 */,\n [0, 10, 4, 0, 3, 10, 4, 10, 5, 2, 1, 10, 5, 10, 1, -1] /* 213 7 */,\n [0, 5, 2, 0, 9, 5, 2, 5, 10, 4, 8, 5, 10, 5, 8, -1] /* 214 7 */,\n [9, 5, 4, 2, 3, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 215 4 */,\n [2, 11, 5, 3, 2, 5, 3, 5, 4, 3, 4, 8, -1, -1, -1, -1] /* 216 9 */,\n [5, 2, 11, 5, 4, 2, 4, 0, 2, -1, -1, -1, -1, -1, -1, -1] /* 217 5 */,\n [3, 2, 11, 3, 11, 5, 3, 5, 8, 4, 8, 5, 0, 9, 1, -1] /* 218 6 */,\n [5, 2, 11, 5, 4, 2, 1, 2, 9, 9, 2, 4, -1, -1, -1, -1] /* 219 3 */,\n [8, 5, 4, 8, 3, 5, 3, 1, 5, -1, -1, -1, -1, -1, -1, -1] /* 220 5 */,\n [0, 5, 4, 1, 5, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 221 2 */,\n [8, 5, 4, 8, 3, 5, 9, 5, 0, 0, 5, 3, -1, -1, -1, -1] /* 222 3 */,\n [9, 5, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 223 1 */,\n [4, 7, 10, 4, 10, 9, 9, 10, 11, -1, -1, -1, -1, -1, -1, -1] /* 224 5 */,\n [0, 3, 8, 4, 7, 9, 9, 7, 10, 9, 10, 11, -1, -1, -1, -1] /* 225 12 */,\n [1, 10, 11, 1, 4, 10, 1, 0, 4, 7, 10, 4, -1, -1, -1, -1] /* 226 11 */,\n [3, 4, 1, 3, 8, 4, 1, 4, 11, 7, 10, 4, 11, 4, 10, -1] /* 227 7 */,\n [4, 7, 10, 9, 4, 10, 9, 10, 2, 9, 2, 1, -1, -1, -1, -1] /* 228 9 */,\n [9, 4, 7, 9, 7, 10, 9, 10, 1, 2, 1, 10, 0, 3, 8, -1] /* 229 6 */,\n [10, 4, 7, 10, 2, 4, 2, 0, 4, -1, -1, -1, -1, -1, -1, -1] /* 230 5 */,\n [10, 4, 7, 10, 2, 4, 8, 4, 3, 3, 4, 2, -1, -1, -1, -1] /* 231 3 */,\n [2, 11, 9, 2, 9, 7, 2, 7, 3, 7, 9, 4, -1, -1, -1, -1] /* 232 14 */,\n [9, 7, 11, 9, 4, 7, 11, 7, 2, 8, 0, 7, 2, 7, 0, -1] /* 233 7 */,\n [3, 11, 7, 3, 2, 11, 7, 11, 4, 1, 0, 11, 4, 11, 0, -1] /* 234 7 */,\n [1, 2, 11, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 235 4 */,\n [4, 1, 9, 4, 7, 1, 7, 3, 1, -1, -1, -1, -1, -1, -1, -1] /* 236 5 */,\n [4, 1, 9, 4, 7, 1, 0, 1, 8, 8, 1, 7, -1, -1, -1, -1] /* 237 3 */,\n [4, 3, 0, 7, 3, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 238 2 */,\n [4, 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 239 1 */,\n [9, 8, 11, 11, 8, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 240 8 */,\n [3, 9, 0, 3, 10, 9, 10, 11, 9, -1, -1, -1, -1, -1, -1, -1] /* 241 5 */,\n [0, 11, 1, 0, 8, 11, 8, 10, 11, -1, -1, -1, -1, -1, -1, -1] /* 242 5 */,\n [3, 11, 1, 10, 11, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 243 2 */,\n [1, 10, 2, 1, 9, 10, 9, 8, 10, -1, -1, -1, -1, -1, -1, -1] /* 244 5 */,\n [3, 9, 0, 3, 10, 9, 1, 9, 2, 2, 9, 10, -1, -1, -1, -1] /* 245 3 */,\n [0, 10, 2, 8, 10, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 246 2 */,\n [3, 10, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 247 1 */,\n [2, 8, 3, 2, 11, 8, 11, 9, 8, -1, -1, -1, -1, -1, -1, -1] /* 248 5 */,\n [9, 2, 11, 0, 2, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 249 2 */,\n [2, 8, 3, 2, 11, 8, 0, 8, 1, 1, 8, 11, -1, -1, -1, -1] /* 250 3 */,\n [1, 2, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 251 1 */,\n [1, 8, 3, 9, 8, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 252 2 */,\n [0, 1, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 253 1 */,\n [0, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 254 1 */,\n [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] /* 255 0 */,\n];\n\nconst EDGES = [\n [0, 1],\n [1, 3],\n [2, 3],\n [0, 2],\n [4, 5],\n [5, 7],\n [6, 7],\n [4, 6],\n [0, 4],\n [1, 5],\n [2, 6],\n [3, 7],\n];\n\nfunction getCase(index) {\n return MARCHING_CUBE_CASES[index];\n}\n\n// Define the twelve edges of the voxel by the following pairs of vertices\nfunction getEdge(eid) {\n return EDGES[eid];\n}\n\n// ----------------------------------------------------------------------------\n// Static API\n// ----------------------------------------------------------------------------\nexport default {\n getCase,\n getEdge,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Filters/General/ImageMarchingCubes/caseTable.js","import { mat3, mat4, vec3 } from 'gl-matrix';\n\nimport Constants from 'vtk.js/Sources/Rendering/Core/Glyph3DMapper/Constants';\nimport macro from 'vtk.js/Sources/macro';\nimport vtkMapper from 'vtk.js/Sources/Rendering/Core/Mapper';\nimport vtkMath from 'vtk.js/Sources/Common/Core/Math';\nimport vtkBoundingBox from 'vtk.js/Sources/Common/DataModel/BoundingBox';\n\nconst { OrientationModes, ScaleModes } = Constants;\nconst { vtkErrorMacro } = macro;\n\n// ----------------------------------------------------------------------------\n// class methods\n// ----------------------------------------------------------------------------\n\nfunction vtkGlyph3DMapper(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkGlyph3DMapper');\n\n /**\n * An orientation array is a vtkDataArray with 3 components. The first\n * component is the angle of rotation along the X axis. The second\n * component is the angle of rotation along the Y axis. The third\n * component is the angle of rotation along the Z axis. Orientation is\n * specified in X,Y,Z order but the rotations are performed in Z,X an Y.\n * This definition is compliant with SetOrientation method on vtkProp3D.\n * By using vector or normal there is a degree of freedom or rotation\n * left (underconstrained). With the orientation array, there is no degree of\n * freedom left.\n */\n publicAPI.getOrientationModeAsString = () =>\n macro.enumToString(OrientationModes, model.orientationMode);\n publicAPI.setOrientationModeToDirection = () =>\n publicAPI.setOrientationMode(OrientationModes.DIRECTION);\n publicAPI.setOrientationModeToRotation = () =>\n publicAPI.setOrientationMode(OrientationModes.ROTATION);\n publicAPI.getOrientationArrayData = () => {\n const idata = publicAPI.getInputData(0);\n if (!idata || !idata.getPointData()) {\n return null;\n }\n if (!model.orientationArray) {\n return idata.getPointData().getVectors();\n }\n return idata.getPointData().getArray(model.orientationArray);\n };\n\n publicAPI.getScaleModeAsString = () =>\n macro.enumToString(ScaleModes, model.scaleMode);\n publicAPI.setScaleModeToScaleByMagnitude = () =>\n publicAPI.setScaleMode(ScaleModes.SCALE_BY_MAGNITUDE);\n publicAPI.setScaleModeToScaleByComponents = () =>\n publicAPI.setScaleMode(ScaleModes.SCALE_BY_COMPONENTS);\n publicAPI.setScaleModeToScaleByConstant = () =>\n publicAPI.setScaleMode(ScaleModes.SCALE_BY_CONSTANT);\n publicAPI.getScaleArrayData = () => {\n const idata = publicAPI.getInputData(0);\n if (!idata || !idata.getPointData()) {\n return null;\n }\n if (!model.scaleArray) {\n return idata.getPointData().getScalars();\n }\n return idata.getPointData().getArray(model.scaleArray);\n };\n\n publicAPI.getBounds = () => {\n const idata = publicAPI.getInputData(0);\n const gdata = publicAPI.getInputData(1);\n if (!idata || !gdata) {\n return vtkMath.createUninitializedBounds();\n }\n\n // first we build the arrays used for the glyphing\n publicAPI.buildArrays();\n return model.bounds;\n };\n\n publicAPI.buildArrays = () => {\n // if the mtgime requires it, rebuild\n const idata = publicAPI.getInputData(0);\n const gdata = publicAPI.getInputData(1);\n if (\n model.buildTime.getMTime() < gdata.getMTime() ||\n model.buildTime.getMTime() < idata.getMTime() ||\n model.buildTime.getMTime() < publicAPI.getMTime()\n ) {\n const pts = idata.getPoints().getData();\n let sArray = publicAPI.getScaleArrayData();\n let sData = null;\n let numSComp = 0;\n if (sArray) {\n sData = sArray.getData();\n numSComp = sArray.getNumberOfComponents();\n }\n\n if (\n model.scaling &&\n sArray &&\n model.scaleMode === ScaleModes.SCALE_BY_COMPONENTS &&\n sArray.getNumberOfComponents() !== 3\n ) {\n vtkErrorMacro(\n 'Cannot scale by components since scale array does not have 3 components.'\n );\n sArray = null;\n }\n\n // get the glyph bounds\n const gbounds = gdata.getBounds();\n // convert them to 8 points so we can compute the\n // overall bounds while building the arrays\n const corners = [];\n vtkBoundingBox.getCorners(gbounds, corners);\n model.bounds[0] = vtkBoundingBox.INIT_BOUNDS[0];\n model.bounds[1] = vtkBoundingBox.INIT_BOUNDS[1];\n model.bounds[2] = vtkBoundingBox.INIT_BOUNDS[2];\n model.bounds[3] = vtkBoundingBox.INIT_BOUNDS[3];\n model.bounds[4] = vtkBoundingBox.INIT_BOUNDS[4];\n model.bounds[5] = vtkBoundingBox.INIT_BOUNDS[5];\n\n const tcorner = vec3.create();\n\n const oArray = publicAPI.getOrientationArrayData();\n\n const identity = mat4.create();\n const trans = [];\n const scale = [];\n const numPts = pts.length / 3;\n model.matrixArray = new Float32Array(16 * numPts);\n const mbuff = model.matrixArray.buffer;\n model.normalArray = new Float32Array(9 * numPts);\n const nbuff = model.normalArray.buffer;\n const tuple = [];\n for (let i = 0; i < numPts; ++i) {\n const z = new Float32Array(mbuff, i * 64, 16);\n trans[0] = pts[i * 3];\n trans[1] = pts[i * 3 + 1];\n trans[2] = pts[i * 3 + 2];\n mat4.translate(z, identity, trans);\n\n if (oArray) {\n const orientation = [];\n oArray.getTuple(i, orientation);\n switch (model.orientationMode) {\n case OrientationModes.ROTATION:\n mat4.rotateZ(z, z, orientation[2]);\n mat4.rotateX(z, z, orientation[0]);\n mat4.rotateY(z, z, orientation[1]);\n break;\n\n case OrientationModes.DIRECTION:\n if (orientation[1] === 0.0 && orientation[2] === 0.0) {\n if (orientation[0] < 0) {\n mat4.rotateY(z, z, 3.1415926);\n }\n } else {\n const vMag = vtkMath.norm(orientation);\n const vNew = [];\n vNew[0] = (orientation[0] + vMag) / 2.0;\n vNew[1] = orientation[1] / 2.0;\n vNew[2] = orientation[2] / 2.0;\n mat4.rotate(z, z, 3.1415926, vNew);\n }\n break;\n default:\n break;\n }\n }\n\n // scale data if appropriate\n if (model.scaling) {\n scale[0] = model.scaleFactor;\n scale[1] = model.scaleFactor;\n scale[2] = model.scaleFactor;\n // Get the scalar and vector data\n if (sArray) {\n switch (model.scaleMode) {\n case ScaleModes.SCALE_BY_MAGNITUDE:\n for (let t = 0; t < numSComp; ++t) {\n tuple[t] = sData[i * numSComp + t];\n }\n scale[0] *= vtkMath.norm(tuple, numSComp);\n scale[1] = scale[0];\n scale[2] = scale[0];\n break;\n case ScaleModes.SCALE_BY_COMPONENTS:\n for (let t = 0; t < numSComp; ++t) {\n tuple[t] = sData[i * numSComp + t];\n }\n scale[0] *= tuple[0];\n scale[1] *= tuple[1];\n scale[2] *= tuple[2];\n break;\n case ScaleModes.SCALE_BY_CONSTANT:\n default:\n break;\n }\n }\n if (scale[0] === 0.0) {\n scale[0] = 1.0e-10;\n }\n if (scale[1] === 0.0) {\n scale[1] = 1.0e-10;\n }\n if (scale[2] === 0.0) {\n scale[2] = 1.0e-10;\n }\n mat4.scale(z, z, scale);\n }\n\n // update bounds\n for (let p = 0; p < 8; ++p) {\n vec3.transformMat4(tcorner, corners[p], z);\n if (tcorner[0] < model.bounds[0]) {\n model.bounds[0] = tcorner[0];\n }\n if (tcorner[1] < model.bounds[2]) {\n model.bounds[2] = tcorner[1];\n }\n if (tcorner[2] < model.bounds[4]) {\n model.bounds[4] = tcorner[2];\n }\n if (tcorner[0] > model.bounds[1]) {\n model.bounds[1] = tcorner[0];\n }\n if (tcorner[1] > model.bounds[3]) {\n model.bounds[3] = tcorner[1];\n }\n if (tcorner[2] > model.bounds[5]) {\n model.bounds[5] = tcorner[2];\n }\n }\n\n const n = new Float32Array(nbuff, i * 36, 9);\n mat3.fromMat4(n, z);\n mat3.invert(n, n);\n mat3.transpose(n, n);\n }\n\n // map scalars as well\n const scalars = publicAPI.getAbstractScalars(\n idata,\n model.scalarMode,\n model.arrayAccessMode,\n model.arrayId,\n model.colorByArrayName\n );\n\n if (!model.useLookupTableScalarRange) {\n publicAPI\n .getLookupTable()\n .setRange(model.scalarRange[0], model.scalarRange[1]);\n }\n\n model.colorArray = null;\n const lut = publicAPI.getLookupTable();\n if (lut && scalars) {\n // Ensure that the lookup table is built\n lut.build();\n model.colorArray = lut.mapScalars(scalars, model.colorMode, 0);\n }\n\n model.buildTime.modified();\n }\n };\n\n publicAPI.getPrimitiveCount = () => {\n const glyph = publicAPI.getInputData(1);\n const mult =\n publicAPI\n .getInputData()\n .getPoints()\n .getNumberOfValues() / 3;\n\n const pcount = {\n points: mult * glyph.getPoints().getNumberOfValues() / 3,\n verts:\n mult *\n (glyph.getVerts().getNumberOfValues() -\n glyph.getVerts().getNumberOfCells()),\n lines:\n mult *\n (glyph.getLines().getNumberOfValues() -\n 2 * glyph.getLines().getNumberOfCells()),\n triangles:\n mult *\n (glyph.getPolys().getNumberOfValues() -\n 3 * glyph.getLines().getNumberOfCells()),\n };\n return pcount;\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n orient: true,\n orientationMode: OrientationModes.DIRECTION,\n orientationArray: null,\n scaling: true,\n scaleFactor: 1.0,\n scaleMode: ScaleModes.SCALE_BY_MAGNITUDE,\n scaleArray: null,\n matrixArray: null,\n normalArray: null,\n colorArray: null,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkMapper.extend(publicAPI, model, initialValues);\n macro.algo(publicAPI, model, 2, 0);\n\n model.buildTime = {};\n macro.obj(model.buildTime, { mtime: 0 });\n\n model.boundsTime = {};\n macro.obj(model.boundsTime, { mtime: 0 });\n\n macro.setGet(publicAPI, model, [\n 'orient',\n 'orientationMode',\n 'orientationArray',\n 'scaleArray',\n 'scaleFactor',\n 'scaleMode',\n 'scaling',\n ]);\n\n macro.get(publicAPI, model, [\n 'colorArray',\n 'matrixArray',\n 'normalArray',\n 'buildTime',\n ]);\n\n // Object methods\n vtkGlyph3DMapper(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkGlyph3DMapper');\n\n// ----------------------------------------------------------------------------\n\nexport default Object.assign({ newInstance, extend }, Constants);\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/Core/Glyph3DMapper/index.js","export const OrientationModes = {\n DIRECTION: 0,\n ROTATION: 1,\n};\n\nexport const ScaleModes = {\n SCALE_BY_CONSTANT: 0,\n SCALE_BY_MAGNITUDE: 1,\n SCALE_BY_COMPONENTS: 2,\n};\n\nexport default {\n OrientationModes,\n ScaleModes,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/Core/Glyph3DMapper/Constants.js","import macro from 'vtk.js/Sources/macro';\nimport vtkAppendPolyData from 'vtk.js/Sources/Filters/General/AppendPolyData';\nimport vtkConeSource from 'vtk.js/Sources/Filters/Sources/ConeSource';\nimport vtkCylinderSource from 'vtk.js/Sources/Filters/Sources/CylinderSource';\nimport vtkMatrixBuilder from 'vtk.js/Sources/Common/Core/MatrixBuilder';\n\n// ----------------------------------------------------------------------------\n// vtkArrowSource methods\n// ----------------------------------------------------------------------------\n\nfunction vtkArrowSource(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkArrowSource');\n\n function requestData(inData, outData) {\n if (model.deleted) {\n return;\n }\n\n const cylinder = vtkCylinderSource.newInstance({ capping: true });\n cylinder.setResolution(model.shaftResolution);\n cylinder.setRadius(model.shaftRadius);\n cylinder.setHeight(1.0 - model.tipLength);\n cylinder.setCenter(0, (1.0 - model.tipLength) * 0.5, 0.0);\n\n const cylinderPD = cylinder.getOutputData();\n const cylinderPts = cylinderPD.getPoints().getData();\n const cylinderNormals = cylinderPD\n .getPointData()\n .getNormals()\n .getData();\n\n // Apply transformation to the cylinder\n vtkMatrixBuilder\n .buildFromDegree()\n .rotateZ(-90)\n .apply(cylinderPts)\n .apply(cylinderNormals);\n\n const cone = vtkConeSource.newInstance();\n cone.setResolution(model.tipResolution);\n cone.setHeight(model.tipLength);\n cone.setRadius(model.tipRadius);\n\n const conePD = cone.getOutputData();\n const conePts = conePD.getPoints().getData();\n\n // Apply transformation to the cone\n vtkMatrixBuilder\n .buildFromRadian()\n .translate(1.0 - model.tipLength * 0.5, 0.0, 0.0)\n .apply(conePts);\n\n const append = vtkAppendPolyData.newInstance();\n append.setInputData(cylinderPD);\n append.addInputData(conePD);\n\n const appendPD = append.getOutputData();\n const appendPts = appendPD.getPoints().getData();\n // Center the arrow about [0, 0, 0]\n vtkMatrixBuilder\n .buildFromRadian()\n .translate(-0.5 + model.tipLength * 0.5, 0.0, 0.0)\n .apply(appendPts);\n if (model.invert) {\n // Apply transformation to the arrow\n vtkMatrixBuilder\n .buildFromRadian()\n .rotateFromDirections([1, 0, 0], model.direction)\n .scale(-1, -1, -1)\n .apply(appendPts);\n\n // Update output\n outData[0] = appendPD;\n } else {\n // Apply transformation to the arrow\n vtkMatrixBuilder\n .buildFromRadian()\n .rotateFromDirections([1, 0, 0], model.direction)\n .scale(1, 1, 1)\n .apply(appendPts);\n\n // Update output\n outData[0] = append.getOutputData();\n }\n }\n\n // Expose methods\n publicAPI.requestData = requestData;\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n tipResolution: 6,\n tipRadius: 0.1,\n tipLength: 0.35,\n shaftResolution: 6,\n shaftRadius: 0.03,\n invert: false,\n direction: [1.0, 0.0, 0.0],\n pointType: 'Float32Array',\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Build VTK API\n macro.obj(publicAPI, model);\n macro.setGet(publicAPI, model, [\n 'tipResolution',\n 'tipRadius',\n 'tipLength',\n 'shaftResolution',\n 'shaftRadius',\n 'invert',\n ]);\n macro.setGetArray(publicAPI, model, ['direction'], 3);\n macro.algo(publicAPI, model, 0, 1);\n vtkArrowSource(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkArrowSource');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Filters/Sources/ArrowSource/index.js","import macro from 'vtk.js/Sources/macro';\nimport vtkDataArray from 'vtk.js/Sources/Common/Core/DataArray';\nimport vtkPoints from 'vtk.js/Sources/Common/Core/Points';\nimport vtkPolyData from 'vtk.js/Sources/Common/DataModel/PolyData';\n\nimport { DesiredOutputPrecision } from 'vtk.js/Sources/Common/DataModel/DataSetAttributes/Constants';\nimport { VtkDataTypes } from 'vtk.js/Sources/Common/Core/DataArray/Constants';\n\nconst { vtkErrorMacro } = macro;\n\nfunction offsetCellArray(typedArray, offset) {\n let currentIdx = 0;\n return typedArray.map((value, index) => {\n if (index === currentIdx) {\n currentIdx += value + 1;\n return value;\n }\n return value + offset;\n });\n}\n\nfunction appendCellData(dest, src, ptOffset, cellOffset) {\n dest.set(offsetCellArray(src, ptOffset), cellOffset);\n}\n\n// ----------------------------------------------------------------------------\n// vtkAppendPolyData methods\n// ----------------------------------------------------------------------------\n\nfunction vtkAppendPolyData(publicAPI, model) {\n // Set our classname\n model.classHierarchy.push('vtkAppendPolyData');\n\n publicAPI.requestData = (inData, outData) => {\n // implement requestData\n const numberOfInputs = publicAPI.getNumberOfInputPorts();\n if (!numberOfInputs) {\n vtkErrorMacro('No input specified.');\n return;\n }\n\n if (numberOfInputs === 1) {\n // pass through filter\n outData[0] = inData[0];\n return;\n }\n\n // Allocate output\n const output = vtkPolyData.newInstance();\n\n let numPts = 0;\n let pointType = 0;\n let ttype = 1;\n let firstType = 1;\n let numVerts = 0;\n let numLines = 0;\n let numStrips = 0;\n let numPolys = 0;\n\n // Field data is propogated to output only if present in all inputs\n let hasPtNormals = true; // assume present by default\n let hasPtTCoords = true;\n let hasPtScalars = true;\n\n for (let i = 0; i < numberOfInputs; i++) {\n const ds = inData[i];\n if (!ds) {\n vtkErrorMacro('Invalid or missing input');\n return;\n }\n const dsNumPts = ds.getPoints().getNumberOfPoints();\n numPts += dsNumPts;\n numVerts += ds.getVerts().getNumberOfValues();\n numLines += ds.getLines().getNumberOfValues();\n numStrips += ds.getStrips().getNumberOfValues();\n numPolys += ds.getPolys().getNumberOfValues();\n\n if (dsNumPts) {\n if (firstType) {\n firstType = 0;\n pointType = ds.getPoints().getDataType();\n }\n ttype = ds.getPoints().getDataType();\n pointType = pointType > ttype ? pointType : ttype;\n }\n\n const ptD = ds.getPointData();\n if (ptD) {\n hasPtNormals = hasPtNormals && ptD.getNormals() !== null;\n hasPtTCoords = hasPtTCoords && ptD.getTCoords() !== null;\n hasPtScalars = hasPtScalars && ptD.getScalars() !== null;\n } else {\n hasPtNormals = false;\n hasPtTCoords = false;\n hasPtScalars = false;\n }\n }\n\n if (model.outputPointsPrecision === DesiredOutputPrecision.SINGLE) {\n pointType = VtkDataTypes.FLOAT;\n } else if (model.outputPointsPrecision === DesiredOutputPrecision.DOUBLE) {\n pointType = VtkDataTypes.DOUBLE;\n }\n\n const points = vtkPoints.newInstance({ dataType: pointType });\n points.setNumberOfPoints(numPts);\n const pointData = points.getData();\n\n const vertData = new Uint32Array(numVerts);\n const lineData = new Uint32Array(numLines);\n const stripData = new Uint32Array(numStrips);\n const polyData = new Uint32Array(numPolys);\n\n let newPtNormals = null;\n let newPtTCoords = null;\n let newPtScalars = null;\n\n const lds = inData[numberOfInputs - 1];\n if (hasPtNormals) {\n const dsNormals = lds.getPointData().getNormals();\n newPtNormals = vtkDataArray.newInstance({\n numberOfComponents: 3,\n numberOfTuples: numPts,\n size: 3 * numPts,\n dataType: dsNormals.getDataType(),\n name: dsNormals.getName(),\n });\n }\n if (hasPtTCoords) {\n const dsTCoords = lds.getPointData().getTCoords();\n newPtTCoords = vtkDataArray.newInstance({\n numberOfComponents: 2,\n numberOfTuples: numPts,\n size: 2 * numPts,\n dataType: dsTCoords.getDataType(),\n name: dsTCoords.getName(),\n });\n }\n if (hasPtScalars) {\n const dsScalars = lds.getPointData().getScalars();\n newPtScalars = vtkDataArray.newInstance({\n numberOfComponents: dsScalars.getNumberOfComponents(),\n numberOfTuples: numPts,\n size: numPts * dsScalars.getNumberOfComponents(),\n dataType: dsScalars.getDataType(),\n name: dsScalars.getName(),\n });\n }\n\n numPts = 0;\n numVerts = 0;\n numLines = 0;\n numStrips = 0;\n numPolys = 0;\n for (let i = 0; i < numberOfInputs; i++) {\n const ds = inData[i];\n pointData.set(ds.getPoints().getData(), numPts * 3);\n appendCellData(vertData, ds.getVerts().getData(), numPts, numVerts);\n numVerts += ds.getVerts().getNumberOfValues();\n appendCellData(lineData, ds.getLines().getData(), numPts, numLines);\n numLines += ds.getLines().getNumberOfValues();\n appendCellData(stripData, ds.getStrips().getData(), numPts, numStrips);\n numStrips += ds.getStrips().getNumberOfValues();\n appendCellData(polyData, ds.getPolys().getData(), numPts, numPolys);\n numPolys += ds.getPolys().getNumberOfValues();\n\n const dsPD = ds.getPointData();\n if (hasPtNormals) {\n const ptNorms = dsPD.getNormals();\n newPtNormals.getData().set(ptNorms.getData(), numPts * 3);\n }\n if (hasPtTCoords) {\n const ptTCoords = dsPD.getTCoords();\n newPtTCoords.getData().set(ptTCoords.getData(), numPts * 2);\n }\n if (hasPtScalars) {\n const ptScalars = dsPD.getScalars();\n newPtScalars\n .getData()\n .set(\n ptScalars.getData(),\n numPts * newPtScalars.getNumberOfComponents()\n );\n }\n\n numPts += ds.getPoints().getNumberOfPoints();\n }\n\n output.setPoints(points);\n output.getVerts().setData(vertData);\n output.getLines().setData(lineData);\n output.getStrips().setData(stripData);\n output.getPolys().setData(polyData);\n if (newPtNormals) {\n output.getPointData().setNormals(newPtNormals);\n }\n if (newPtTCoords) {\n output.getPointData().setTCoords(newPtTCoords);\n }\n if (newPtScalars) {\n output.getPointData().setScalars(newPtScalars);\n }\n outData[0] = output;\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n outputPointsPrecision: DesiredOutputPrecision.DEFAULT,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Build VTK API\n macro.setGet(publicAPI, model, ['outputPointsPrecision']);\n\n // Make this a VTK object\n macro.obj(publicAPI, model);\n\n // Also make it an algorithm with one input and one output\n macro.algo(publicAPI, model, 1, 1);\n\n // Object specific methods\n vtkAppendPolyData(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkAppendPolyData');\n\n// ----------------------------------------------------------------------------\n\nexport default Object.assign({ newInstance, extend });\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Filters/General/AppendPolyData/index.js","import macro from 'vtk.js/Sources/macro';\nimport vtkDataArray from 'vtk.js/Sources/Common/Core/DataArray';\nimport vtkPolyData from 'vtk.js/Sources/Common/DataModel/PolyData';\n\n// ----------------------------------------------------------------------------\n// vtkCylinderSource methods\n// ----------------------------------------------------------------------------\n\nfunction vtkCylinderSource(publicAPI, model) {\n // Set our classname\n model.classHierarchy.push('vtkCylinderSource');\n\n function requestData(inData, outData) {\n if (model.deleted) {\n return;\n }\n\n let dataset = outData[0];\n\n const angle = 2.0 * Math.PI / model.resolution;\n let numberOfPoints = 2 * model.resolution;\n let numberOfPolys = 5 * model.resolution;\n\n if (model.capping) {\n numberOfPoints = 4 * model.resolution;\n numberOfPolys = 7 * model.resolution + 2;\n }\n\n // Points\n const points = new window[model.pointType](numberOfPoints * 3);\n\n // Cells\n let cellLocation = 0;\n const polys = new Uint32Array(numberOfPolys);\n\n // Normals\n const normalsData = new Float32Array(numberOfPoints * 3);\n const normals = vtkDataArray.newInstance({\n numberOfComponents: 3,\n values: normalsData,\n name: 'Normals',\n });\n\n // Texture coords\n const tcData = new Float32Array(numberOfPoints * 2);\n const tcoords = vtkDataArray.newInstance({\n numberOfComponents: 2,\n values: tcData,\n name: 'TCoords',\n });\n\n // Generate points for all sides\n const nbot = [0.0, 0.0, 0.0];\n const ntop = [0.0, 0.0, 0.0];\n const xbot = [0.0, 0.0, 0.0];\n const xtop = [0.0, 0.0, 0.0];\n const tcbot = [0.0, 0.0];\n const tctop = [0.0, 0.0];\n for (let i = 0; i < model.resolution; i++) {\n // x coordinate\n nbot[0] = Math.cos(i * angle);\n ntop[0] = nbot[0];\n xbot[0] = model.radius * nbot[0] + model.center[0];\n xtop[0] = xbot[0];\n tcbot[0] = Math.abs(2.0 * i / model.resolution - 1.0);\n tctop[0] = tcbot[0];\n\n // y coordinate\n xbot[1] = 0.5 * model.height + model.center[1];\n xtop[1] = -0.5 * model.height + model.center[1];\n tcbot[1] = 0.0;\n tctop[1] = 1.0;\n\n // z coordinate\n nbot[2] = -Math.sin(i * angle);\n ntop[2] = nbot[2];\n xbot[2] = model.radius * nbot[2] + model.center[2];\n xtop[2] = xbot[2];\n\n const pointIdx = 2 * i;\n for (let j = 0; j < 3; j++) {\n normalsData[pointIdx * 3 + j] = nbot[j];\n normalsData[(pointIdx + 1) * 3 + j] = ntop[j];\n points[pointIdx * 3 + j] = xbot[j];\n points[(pointIdx + 1) * 3 + j] = xtop[j];\n if (j < 2) {\n tcData[pointIdx * 2 + j] = tcbot[j];\n tcData[(pointIdx + 1) * 2 + j] = tctop[j];\n }\n }\n }\n\n // Generate polygons for sides\n for (let i = 0; i < model.resolution; i++) {\n polys[cellLocation++] = 4;\n polys[cellLocation++] = 2 * i;\n polys[cellLocation++] = 2 * i + 1;\n const pt = (2 * i + 3) % (2 * model.resolution);\n polys[cellLocation++] = pt;\n polys[cellLocation++] = pt - 1;\n }\n\n if (model.capping) {\n // Generate points for top/bottom polygons\n for (let i = 0; i < model.resolution; i++) {\n // x coordinate\n xbot[0] = model.radius * Math.cos(i * angle);\n xtop[0] = xbot[0];\n tcbot[0] = xbot[0];\n tctop[0] = xbot[0];\n xbot[0] += model.center[0];\n xtop[0] += model.center[0];\n\n // y coordinate\n nbot[1] = 1.0;\n ntop[1] = -1.0;\n xbot[1] = 0.5 * model.height + model.center[1];\n xtop[1] = -0.5 * model.height + model.center[1];\n\n // z coordinate\n xbot[2] = -model.radius * Math.sin(i * angle);\n xtop[2] = xbot[2];\n tcbot[1] = xbot[2];\n tctop[1] = xbot[2];\n xbot[2] += model.center[2];\n xtop[2] += model.center[2];\n const botIdx = 2 * model.resolution + i;\n const topIdx = 3 * model.resolution + model.resolution - i - 1;\n for (let j = 0; j < 3; j++) {\n normalsData[3 * botIdx + j] = nbot[j];\n normalsData[3 * topIdx + j] = ntop[j];\n points[3 * botIdx + j] = xbot[j];\n points[3 * topIdx + j] = xtop[j];\n if (j < 2) {\n tcData[2 * botIdx + j] = tcbot[j];\n tcData[2 * topIdx + j] = tctop[j];\n }\n }\n }\n\n // Generate polygons for top/bottom\n polys[cellLocation++] = model.resolution;\n for (let i = 0; i < model.resolution; i++) {\n polys[cellLocation++] = 2 * model.resolution + i;\n }\n polys[cellLocation++] = model.resolution;\n for (let i = 0; i < model.resolution; i++) {\n polys[cellLocation++] = 3 * model.resolution + i;\n }\n }\n\n dataset = vtkPolyData.newInstance();\n dataset.getPoints().setData(points, 3);\n dataset.getPolys().setData(polys, 1);\n dataset.getPointData().setNormals(normals);\n dataset.getPointData().setTCoords(tcoords);\n\n // Update output\n outData[0] = dataset;\n }\n\n // Expose methods\n publicAPI.requestData = requestData;\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n height: 1.0,\n radius: 1.0,\n resolution: 6,\n center: [0, 0, 0],\n capping: true,\n pointType: 'Float32Array',\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Build VTK API\n macro.obj(publicAPI, model);\n macro.setGet(publicAPI, model, ['height', 'radius', 'resolution', 'capping']);\n macro.setGetArray(publicAPI, model, ['center'], 3);\n macro.algo(publicAPI, model, 0, 1);\n vtkCylinderSource(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkCylinderSource');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Filters/Sources/CylinderSource/index.js","import { mat4, vec3 } from 'gl-matrix';\n\nimport macro from 'vtk.js/Sources/macro';\nimport vtkMapper from 'vtk.js/Sources/Rendering/Core/Mapper';\n\n// ----------------------------------------------------------------------------\n// vtkPixelSpaceCallbackMapper methods\n// ----------------------------------------------------------------------------\n\nfunction vtkPixelSpaceCallbackMapper(publicAPI, model) {\n model.classHierarchy.push('vtkPixelSpaceCallbackMapper');\n\n if (!model.callback) {\n model.callback = () => {};\n }\n\n publicAPI.invokeCallback = (\n dataset,\n camera,\n aspect,\n windowSize,\n depthValues\n ) => {\n if (!model.callback) {\n return;\n }\n\n const matrix = camera.getCompositeProjectionMatrix(aspect, -1, 1);\n mat4.transpose(matrix, matrix);\n\n const dataPoints = dataset.getPoints();\n const result = vec3.fromValues(0, 0, 0);\n const width = windowSize.usize;\n const height = windowSize.vsize;\n const hw = width / 2;\n const hh = height / 2;\n const coords = [];\n\n for (let pidx = 0; pidx < dataPoints.getNumberOfPoints(); pidx += 1) {\n const point = dataPoints.getPoint(pidx);\n result[0] = point[0];\n result[1] = point[1];\n result[2] = point[2];\n vec3.transformMat4(result, result, matrix);\n const coord = [result[0] * hw + hw, result[1] * hh + hh, result[2], 0];\n\n if (depthValues) {\n const linIdx = Math.floor(coord[1]) * width + Math.floor(coord[0]);\n const idx = linIdx * 4;\n const r = depthValues[idx] / 255;\n const g = depthValues[idx + 1] / 255;\n const z = (r * 256 + g) / 257;\n coord[3] = z * 2 - 1;\n }\n\n coords.push(coord);\n }\n\n model.callback(coords, camera, aspect, depthValues);\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n callback: null,\n useZValues: false,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkMapper.extend(publicAPI, model, initialValues);\n\n macro.setGet(publicAPI, model, ['callback', 'useZValues']);\n\n // Object methods\n vtkPixelSpaceCallbackMapper(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(\n extend,\n 'vtkPixelSpaceCallbackMapper'\n);\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/Core/PixelSpaceCallbackMapper/index.js","import macro from 'vtk.js/Sources/macro';\nimport vtkRenderer from 'vtk.js/Sources/Rendering/Core/Renderer';\nimport Constants from 'vtk.js/Sources/Interaction/Widgets/OrientationMarkerWidget/Constants';\n\nconst { vtkErrorMacro } = macro;\nconst { Corners } = Constants;\n\n// ----------------------------------------------------------------------------\n// vtkOrientationMarkerWidget\n// ----------------------------------------------------------------------------\n\nfunction vtkOrientationMarkerWidget(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkOrientationMarkerWidget');\n\n // Private variables\n\n const previousCameraInput = [];\n const selfRenderer = vtkRenderer.newInstance();\n let interactorUnsubscribe = null;\n let viewUnsubscribe = null;\n\n publicAPI.computeViewport = () => {\n const [viewXSize, viewYSize] = model.interactor.getView().getSize();\n const minViewSize = Math.min(viewXSize, viewYSize);\n\n let pixelSize = model.viewportSize * minViewSize;\n // clamp pixel size\n pixelSize = Math.max(\n Math.min(model.minPixelSize, minViewSize),\n Math.min(model.maxPixelSize, pixelSize)\n );\n\n const xFrac = pixelSize / viewXSize;\n const yFrac = pixelSize / viewYSize;\n // [left bottom right top]\n switch (model.viewportCorner) {\n case Corners.TOP_LEFT:\n return [0, 1 - yFrac, xFrac, 1];\n case Corners.TOP_RIGHT:\n return [1 - xFrac, 1 - yFrac, 1, 1];\n case Corners.BOTTOM_LEFT:\n return [0, 0, xFrac, yFrac];\n case Corners.BOTTOM_RIGHT:\n return [1 - xFrac, 0, 1, yFrac];\n default:\n vtkErrorMacro('Invalid widget corner');\n return null;\n }\n };\n\n publicAPI.updateViewport = () => {\n selfRenderer.setViewport(...publicAPI.computeViewport());\n model.interactor.render();\n };\n\n publicAPI.updateMarkerOrientation = () => {\n const currentCamera = model.interactor\n .findPokedRenderer()\n .getActiveCamera();\n\n if (!currentCamera) {\n return;\n }\n\n const position = currentCamera.getReferenceByName('position');\n const focalPoint = currentCamera.getReferenceByName('focalPoint');\n const viewUp = currentCamera.getReferenceByName('viewUp');\n if (\n previousCameraInput[0] !== position[0] ||\n previousCameraInput[1] !== position[1] ||\n previousCameraInput[2] !== position[2] ||\n previousCameraInput[3] !== focalPoint[0] ||\n previousCameraInput[4] !== focalPoint[1] ||\n previousCameraInput[5] !== focalPoint[2] ||\n previousCameraInput[6] !== viewUp[0] ||\n previousCameraInput[7] !== viewUp[1] ||\n previousCameraInput[8] !== viewUp[2]\n ) {\n previousCameraInput[0] = position[0];\n previousCameraInput[1] = position[1];\n previousCameraInput[2] = position[2];\n previousCameraInput[3] = focalPoint[0];\n previousCameraInput[4] = focalPoint[1];\n previousCameraInput[5] = focalPoint[2];\n previousCameraInput[6] = viewUp[0];\n previousCameraInput[7] = viewUp[1];\n previousCameraInput[8] = viewUp[2];\n const activeCamera = selfRenderer.getActiveCamera();\n activeCamera.setPosition(position[0], position[1], position[2]);\n activeCamera.setFocalPoint(focalPoint[0], focalPoint[1], focalPoint[2]);\n activeCamera.setViewUp(viewUp[0], viewUp[1], viewUp[2]);\n selfRenderer.resetCamera();\n }\n };\n\n /**\n * Enables/Disables the orientation marker.\n */\n publicAPI.setEnabled = (enabling) => {\n if (enabling) {\n if (model.enabled) {\n return;\n }\n\n if (!model.actor) {\n vtkErrorMacro('Must set actor before enabling orientation marker.');\n return;\n }\n\n if (!model.interactor) {\n vtkErrorMacro(\n 'Must set interactor before enabling orientation marker.'\n );\n return;\n }\n\n const renderWindow = model.interactor\n .findPokedRenderer()\n .getRenderWindow();\n renderWindow.addRenderer(selfRenderer);\n if (renderWindow.getNumberOfLayers() < 2) {\n renderWindow.setNumberOfLayers(2);\n }\n // Highest number is foreground\n selfRenderer.setLayer(renderWindow.getNumberOfLayers() - 1);\n selfRenderer.setInteractive(false);\n\n selfRenderer.addViewProp(model.actor);\n model.actor.setVisibility(true);\n\n ({ unsubscribe: interactorUnsubscribe } = model.interactor.onAnimation(\n publicAPI.updateMarkerOrientation\n ));\n\n ({ unsubscribe: viewUnsubscribe } = model.interactor\n .getView()\n .onModified(publicAPI.updateViewport));\n\n publicAPI.updateViewport();\n publicAPI.updateMarkerOrientation();\n\n model.enabled = true;\n } else {\n if (!model.enabled) {\n return;\n }\n model.enabled = false;\n\n viewUnsubscribe();\n viewUnsubscribe = null;\n interactorUnsubscribe();\n interactorUnsubscribe = null;\n\n model.actor.setVisibility(false);\n selfRenderer.removeViewProp(model.actor);\n\n const renderWindow = model.interactor\n .findPokedRenderer()\n .getRenderWindow();\n if (renderWindow) {\n renderWindow.removeRenderer(selfRenderer);\n }\n }\n publicAPI.modified();\n };\n\n /**\n * Sets the viewport corner.\n */\n publicAPI.setViewportCorner = (corner) => {\n if (corner === model.viewportCorner) {\n return;\n }\n\n model.viewportCorner = corner;\n if (model.enabled) {\n publicAPI.updateViewport();\n }\n };\n\n /**\n * Sets the viewport size.\n */\n publicAPI.setViewportSize = (sizeFactor) => {\n const viewportSize = Math.min(1, Math.max(0, sizeFactor));\n if (viewportSize === model.viewportSize) {\n return;\n }\n\n model.viewportSize = viewportSize;\n if (model.enabled) {\n publicAPI.updateViewport();\n }\n };\n\n publicAPI.setActor = (actor) => {\n const previousState = model.enabled;\n publicAPI.setEnabled(false);\n model.actor = actor;\n publicAPI.setEnabled(previousState);\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nexport const DEFAULT_VALUES = {\n // actor: null,\n // interactor: null,\n viewportCorner: Constants.Corners.BOTTOM_LEFT,\n viewportSize: 0.2,\n minPixelSize: 50,\n maxPixelSize: 200,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Build VTK API\n macro.obj(publicAPI, model);\n\n macro.get(publicAPI, model, ['enabled', 'viewportCorner', 'viewportSize']);\n\n // NOTE: setting these while the widget is enabled will\n // not update the widget.\n macro.setGet(publicAPI, model, [\n 'interactor',\n 'minPixelSize',\n 'maxPixelSize',\n ]);\n macro.get(publicAPI, model, ['actor']);\n\n // Object methods\n vtkOrientationMarkerWidget(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(\n extend,\n 'vtkOrientationMarkerWidget'\n);\n\n// ----------------------------------------------------------------------------\n\nexport default Object.assign({ newInstance, extend }, Constants);\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Interaction/Widgets/OrientationMarkerWidget/index.js","const Corners = {\n TOP_LEFT: 'TOP_LEFT',\n TOP_RIGHT: 'TOP_RIGHT',\n BOTTOM_LEFT: 'BOTTOM_LEFT',\n BOTTOM_RIGHT: 'BOTTOM_RIGHT',\n};\n\nexport default { Corners };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Interaction/Widgets/OrientationMarkerWidget/Constants.js","import macro from 'vtk.js/Sources/macro';\nimport vtkActor from 'vtk.js/Sources/Rendering/Core/Actor';\nimport vtkMapper from 'vtk.js/Sources/Rendering/Core/Mapper';\nimport vtkTexture from 'vtk.js/Sources/Rendering/Core/Texture';\nimport vtkCubeSource from 'vtk.js/Sources/Filters/Sources/CubeSource';\nimport ImageHelper from 'vtk.js/Sources/Common/Core/ImageHelper';\n\nconst FACE_TO_INDEX = {\n xPlus: 0,\n xMinus: 1,\n yPlus: 2,\n yMinus: 3,\n zPlus: 4,\n zMinus: 5,\n};\n\n// ----------------------------------------------------------------------------\n// vtkAnnotatedCubeActor\n// ----------------------------------------------------------------------------\n\nfunction vtkAnnotatedCubeActor(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkAnnotatedCubeActor');\n\n // Make sure face properties are not references to the default value\n model.xPlusFaceProperty = Object.assign({}, model.xPlusFaceProperty);\n model.xMinusFaceProperty = Object.assign({}, model.xMinusFaceProperty);\n model.yPlusFaceProperty = Object.assign({}, model.yPlusFaceProperty);\n model.yMinusFaceProperty = Object.assign({}, model.yMinusFaceProperty);\n model.zPlusFaceProperty = Object.assign({}, model.zPlusFaceProperty);\n model.zMinusFaceProperty = Object.assign({}, model.zMinusFaceProperty);\n\n // private variables\n\n let cubeSource = null;\n\n const canvas = document.createElement('canvas');\n const mapper = vtkMapper.newInstance();\n const texture = vtkTexture.newInstance();\n texture.setInterpolate(true);\n\n // private methods\n\n function updateFaceTexture(faceName, newProp = null) {\n if (newProp) {\n Object.assign(model[`${faceName}FaceProperty`], newProp);\n }\n\n const prop = Object.assign(\n {},\n model.defaultStyle,\n model[`${faceName}FaceProperty`]\n );\n\n // set canvas resolution\n canvas.width = prop.resolution;\n canvas.height = prop.resolution;\n\n const ctxt = canvas.getContext('2d');\n\n // set background color\n ctxt.fillStyle = prop.faceColor;\n ctxt.fillRect(0, 0, canvas.width, canvas.height);\n\n // draw edge\n if (prop.edgeThickness > 0) {\n ctxt.strokeStyle = prop.edgeColor;\n ctxt.lineWidth = prop.edgeThickness * canvas.width;\n ctxt.strokeRect(0, 0, canvas.width, canvas.height);\n }\n\n // set face rotation\n ctxt.save();\n\n // vertical flip\n ctxt.translate(0, canvas.height);\n ctxt.scale(1, -1);\n\n ctxt.translate(canvas.width / 2, canvas.height / 2);\n ctxt.rotate(-Math.PI * (prop.faceRotation / 180.0));\n\n // set foreground text\n const textSize = prop.fontSizeScale(prop.resolution);\n ctxt.fillStyle = prop.fontColor;\n ctxt.textAlign = 'center';\n ctxt.textBaseline = 'middle';\n ctxt.font = `${prop.fontStyle} ${textSize}px \"${prop.fontFamily}\"`;\n ctxt.fillText(prop.text, 0, 0);\n\n ctxt.restore();\n\n const vtkImage = ImageHelper.canvasToImageData(canvas);\n texture.setInputData(vtkImage, FACE_TO_INDEX[faceName]);\n publicAPI.modified();\n }\n\n function updateAllFaceTextures() {\n cubeSource = vtkCubeSource.newInstance({\n generate3DTextureCoordinates: true,\n });\n\n mapper.setInputConnection(cubeSource.getOutputPort());\n\n updateFaceTexture('xPlus');\n updateFaceTexture('xMinus');\n updateFaceTexture('yPlus');\n updateFaceTexture('yMinus');\n updateFaceTexture('zPlus');\n updateFaceTexture('zMinus');\n }\n\n // public methods\n\n publicAPI.setDefaultStyle = (style) => {\n model.defaultStyle = Object.assign({}, model.defaultStyle, style);\n updateAllFaceTextures();\n };\n\n publicAPI.setXPlusFaceProperty = (prop) => updateFaceTexture('xPlus', prop);\n publicAPI.setXMinusFaceProperty = (prop) => updateFaceTexture('xMinus', prop);\n publicAPI.setYPlusFaceProperty = (prop) => updateFaceTexture('yPlus', prop);\n publicAPI.setYMinusFaceProperty = (prop) => updateFaceTexture('yMinus', prop);\n publicAPI.setZPlusFaceProperty = (prop) => updateFaceTexture('zPlus', prop);\n publicAPI.setZMinusFaceProperty = (prop) => updateFaceTexture('zMinus', prop);\n\n // constructor\n\n updateAllFaceTextures();\n\n // set mapper\n mapper.setInputConnection(cubeSource.getOutputPort());\n publicAPI.setMapper(mapper);\n\n // set texture\n publicAPI.addTexture(texture);\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nexport const DEFAULT_VALUES = {\n defaultStyle: {\n text: '',\n faceColor: 'white',\n faceRotation: 0,\n fontFamily: 'Arial',\n fontColor: 'black',\n fontStyle: 'normal',\n fontSizeScale: (resolution) => resolution / 1.8,\n edgeThickness: 0.1,\n edgeColor: 'black',\n resolution: 200,\n },\n // xPlusFaceProperty: null,\n // xMinusFaceProperty: null,\n // yPlusFaceProperty: null,\n // yMinusFaceProperty: null,\n // zPlusFaceProperty: null,\n // zMinusFaceProperty: null,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkActor.extend(publicAPI, model, initialValues);\n\n macro.get(publicAPI, model, [\n 'defaultStyle',\n 'xPlusFaceProperty',\n 'xMinusFaceProperty',\n 'yPlusFaceProperty',\n 'yMinusFaceProperty',\n 'zPlusFaceProperty',\n 'zMinusFaceProperty',\n ]);\n\n // Object methods\n vtkAnnotatedCubeActor(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkAnnotatedCubeActor');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/Core/AnnotatedCubeActor/index.js","import macro from 'vtk.js/Sources/macro';\n\n// ----------------------------------------------------------------------------\n// vtkTexture methods\n// ----------------------------------------------------------------------------\n\nfunction vtkTexture(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkTexture');\n\n publicAPI.imageLoaded = () => {\n model.image.removeEventListener('load', publicAPI.imageLoaded);\n model.imageLoaded = true;\n publicAPI.modified();\n };\n\n publicAPI.setImage = (image) => {\n if (model.image === image) {\n return;\n }\n\n if (image !== null) {\n publicAPI.setInputData(null);\n publicAPI.setInputConnection(null);\n }\n\n model.image = image;\n model.imageLoaded = false;\n\n if (image.complete) {\n publicAPI.imageLoaded();\n } else {\n image.addEventListener('load', publicAPI.imageLoaded);\n }\n\n publicAPI.modified();\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n repeat: false,\n interpolate: false,\n edgeClamp: false,\n image: null,\n imageLoaded: false,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Build VTK API\n macro.obj(publicAPI, model);\n macro.algo(publicAPI, model, 6, 0);\n\n macro.get(publicAPI, model, ['imageLoaded']);\n\n macro.setGet(publicAPI, model, [\n 'repeat',\n 'edgeClamp',\n 'interpolate',\n 'image',\n ]);\n\n vtkTexture(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkTexture');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Rendering/Core/Texture/index.js","import vtkImageData from 'vtk.js/Sources/Common/DataModel/ImageData';\nimport vtkDataArray from 'vtk.js/Sources/Common/Core/DataArray';\n\n/**\n * Takes a canvas and converts it to a vtkImageData.\n *\n * Optionally supply a bounding box to get a particular subset of the canvas.\n *\n * @param canvas The HTML canvas to convert\n * @param boundingBox A bounding box of type [top, left, width, height]\n */\nfunction canvasToImageData(canvas, boundingBox = [0, 0, 0, 0]) {\n const [top, left, width, height] = boundingBox;\n const ctxt = canvas.getContext('2d');\n const idata = ctxt.getImageData(\n top,\n left,\n width || canvas.width,\n height || canvas.height\n );\n\n const imageData = vtkImageData.newInstance({ type: 'vtkImageData' });\n imageData.setOrigin(0, 0, 0);\n imageData.setSpacing(1, 1, 1);\n imageData.setExtent(\n 0,\n (width || canvas.width) - 1,\n 0,\n (height || canvas.height) - 1,\n 0,\n 0\n );\n\n const scalars = vtkDataArray.newInstance({\n numberOfComponents: 4,\n values: new Uint8Array(idata.data.buffer),\n });\n scalars.setName('scalars');\n imageData.getPointData().setScalars(scalars);\n\n return imageData;\n}\n\n/**\n * Converts an Image object to a vtkImageData.\n */\nfunction imageToImageData(\n image,\n transform = { flipX: false, flipY: false, rotate: 0 }\n) {\n const canvas = document.createElement('canvas');\n canvas.width = image.width;\n canvas.height = image.height;\n\n const ctx = canvas.getContext('2d');\n\n const { flipX, flipY, rotate } = transform;\n ctx.translate(canvas.width / 2, canvas.height / 2);\n ctx.scale(flipX ? -1 : 1, flipY ? -1 : 1);\n ctx.rotate(rotate * Math.PI / 180);\n ctx.drawImage(image, -image.width / 2, -image.width / 2);\n\n return canvasToImageData(canvas);\n}\n\nexport default { canvasToImageData, imageToImageData };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Common/Core/ImageHelper/index.js","'use strict';\n\nimport macro from 'vtk.js/Sources/macro';\nimport vtkMath from 'vtk.js/Sources/Common/Core/Math';\nimport vtkPolyData from 'vtk.js/Sources/Common/DataModel/PolyData';\n\nconst DEFAULT_VALUES = {\n lss: [],\n};\n\nfunction lssSource(publicAPI, model, lss) {\n model.classHierarchy.push('lssSource');\n\n publicAPI.requestData = (inData, outData) => {\n if (model.deleted) {\n return;\n }\n\n const lssStructure = vtkPolyData.newInstance();\n const numPts = lss.length;\n const points = new Float32Array((numPts + 1) * 3);\n lssStructure.getPoints().setData(points, 3);\n\n const verts = new Uint32Array(numPts + 2);\n lssStructure.getVerts().setData(verts, 1);\n\n points[0] = 0;\n points[1] = 0;\n points[2] = 0;\n\n for (let i = 0; i < numPts; i++) {\n const j = i;\n const k = i + 1;\n const phi = vtkMath.radiansFromDegrees(lss[j].lon);\n const theta = vtkMath.radiansFromDegrees(lss[j].lat);\n const d = lss[j].d;\n const cos_theta = Math.cos(theta);\n const sin_theta = Math.sin(theta);\n const cos_phi = Math.cos(phi);\n const sin_phi = Math.sin(phi);\n\n points[k * 3] = d * cos_phi * cos_theta;\n points[k * 3 + 1] = d * sin_phi * cos_theta;\n points[k * 3 + 2] = d * sin_theta;\n }\n\n verts[0] = numPts + 1;\n for (let i = 0; i <= numPts; i++) {\n verts[i + 1] = i;\n }\n\n outData[0] = lssStructure;\n };\n}\n\nfunction buildLSS(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n macro.obj(publicAPI, model);\n\n macro.algo(publicAPI, model, 0, 1);\n lssSource(publicAPI, model, initialValues.lss);\n}\n\nconst newLSSInstance = macro.newInstance(buildLSS, 'lssSource');\nexport function setupLSS() {\n return new Promise((resolve, fail) => {\n const q = $.ajax({ url: '/lss.json' })\n .done((data) => {\n const lss = data.array;\n const lssStructure = newLSSInstance({ lss: lss });\n\n resolve({\n names: ['MW'].concat(lss.map((x) => x.name)),\n poly: lssStructure,\n center: 0,\n });\n });\n console.log(q);\n q.fail(() => {\n fail();\n });\n });\n}\n\n\n\n// WEBPACK FOOTER //\n// ./external_modules/helpers/lss.js","\"use strict\";\n\nimport macro from 'vtk.js/Sources/macro';\nimport vtkPolyData from 'vtk.js/Sources/Common/DataModel/PolyData';\nimport Math from 'vtk.js/Sources/Common/Core/Math';\n\n// Class to generate random point sources\n\nfunction lssSource(publicAPI, model) {\n model.classHierarchy.push('lssRandomSource');\n\n publicAPI.requestData = function (inData, outData) {\n if (model.deleted) {\n return;\n }\n\n console.log(\"Build sources\");\n\n const sources = vtkPolyData.newInstance();\n const numPts = model.numPoints;\n const Lmin = model.minBox;\n const Lmax = model.maxBox;\n const points = new Float32Array((numPts + 1) * 3);\n sources.getPoints().setData(points, 3);\n\n const verts = new Uint32Array(numPts + 2);\n sources.getVerts().setData(verts, 1);\n\n points[0] = 0;\n points[1] = 0;\n points[2] = 0;\n\n for (let i = 0; i < numPts; i++) {\n const j = i;\n const k = i + 1;\n\n points[k * 3] = Math.random(Lmin, Lmax);\n points[k * 3 + 1] = Math.random(Lmin, Lmax);\n points[k * 3 + 2] = Math.random(Lmin, Lmax);\n }\n\n verts[0] = numPts + 1;\n for (let i = 0; i <= numPts; i++) {\n verts[i + 1] = i;\n }\n\n outData[0] = sources;\n };\n}\n\nvar DEFAULT_VALUES = {\n numPoints: 20,\n boxSize: 1.0\n};\n\nfunction buildSources(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n macro.obj(publicAPI, model);\n macro.setGet(publicAPI, model, ['numPoints', 'minBox', 'maxBox']);\n macro.algo(publicAPI, model, 0, 1);\n lssSource(publicAPI, model);\n}\n\nexport const newInstance = macro.newInstance(buildSources, 'lssRandomSources');\n\nexport default { newInstance };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./external_modules/vtk_plus/RandomSources/index.js\n// module id = 673\n// module chunks = 1","\"use strict\";\n\nimport macro from 'vtk.js/Sources/macro';\nimport vtkPolyData from 'vtk.js/Sources/Common/DataModel/PolyData';\nimport vtkMath from 'vtk.js/Sources/Common/Core/Math';\nimport vtkDataArray from 'vtk.js/Sources/Common/Core/DataArray';\n\nfunction lssInterpolationFilter(publicAPI, model) {\n\n const indices = new Int32Array(3);\n const paramCoords = new Float32Array(3);\n const weights = new Float32Array(8);\n const voxelIndices = new Uint32Array(8);\n const dimensions = new Uint32Array(3);\n const velAt = new Float32Array(3);\n\n model.classHierarchy.push('lssInterpolationFilter');\n\n //+\n // Taken from ImageStreamLine\n publicAPI.interpolationFunctions = (pcoords, sf) => {\n const r = pcoords[0];\n const s = pcoords[1];\n const t = pcoords[2];\n\n const rm = 1.0 - r;\n const sm = 1.0 - s;\n const tm = 1.0 - t;\n\n sf[0] = rm * sm * tm;\n sf[1] = r * sm * tm;\n sf[2] = rm * s * tm;\n sf[3] = r * s * tm;\n sf[4] = rm * sm * t;\n sf[5] = r * sm * t;\n sf[6] = rm * s * t;\n sf[7] = r * s * t;\n }\n\n publicAPI.getVoxelIndices = (ijk, dims, ids) => {\n ids[0] = ijk[2] * dims[0] * dims[1] + ijk[1] * dims[0] + ijk[0];\n ids[1] = ids[0] + 1; // i+1, j, k\n ids[2] = ids[0] + dims[0]; // i, j+1, k\n ids[3] = ids[2] + 1; // i+1, j+1, k\n ids[4] = ids[0] + dims[0] * dims[1]; // i, j, k+1\n ids[5] = ids[4] + 1; // i+1, j, k+1\n ids[6] = ids[4] + dims[0]; // i, j+1, k+1\n ids[7] = ids[6] + 1; // i+1, j+1, k+1\n };\n\n publicAPI.computeStructuredCoordinates = (\n x,\n ijk,\n pcoords,\n extent,\n spacing,\n origin,\n bounds\n ) => {\n // tolerance is needed for 2D data (this is squared tolerance)\n const tol2 = 1e-12;\n //\n // Compute the ijk location\n //\n let isInBounds = true;\n for (let i = 0; i < 3; i++) {\n const d = x[i] - origin[i];\n const doubleLoc = d / spacing[i];\n // Floor for negative indexes.\n ijk[i] = vtkMath.floor(doubleLoc);\n pcoords[i] = doubleLoc - ijk[i];\n\n let tmpInBounds = false;\n const minExt = extent[i * 2];\n const maxExt = extent[i * 2 + 1];\n\n // check if data is one pixel thick\n if (minExt === maxExt) {\n const dist = x[i] - bounds[2 * i];\n if (dist * dist <= spacing[i] * spacing[i] * tol2) {\n pcoords[i] = 0.0;\n ijk[i] = minExt;\n tmpInBounds = true;\n }\n } else if (ijk[i] < minExt) {\n if (\n (spacing[i] >= 0 && x[i] >= bounds[i * 2]) ||\n (spacing[i] < 0 && x[i] <= bounds[i * 2 + 1])\n ) {\n pcoords[i] = 0.0;\n ijk[i] = minExt;\n tmpInBounds = true;\n }\n } else if (ijk[i] >= maxExt) {\n if (\n (spacing[i] >= 0 && x[i] <= bounds[i * 2 + 1]) ||\n (spacing[i] < 0 && x[i] >= bounds[i * 2])\n ) {\n // make sure index is within the allowed cell index range\n pcoords[i] = 1.0;\n ijk[i] = maxExt - 1;\n tmpInBounds = true;\n }\n } else {\n tmpInBounds = true;\n }\n\n // clear isInBounds if out of bounds for this dimension\n isInBounds = isInBounds && tmpInBounds;\n }\n\n return isInBounds;\n };\n\n publicAPI.vectorAt = (xyz, velArray, image, velAtArg) => {\n if (\n !publicAPI.computeStructuredCoordinates(\n xyz,\n indices,\n paramCoords,\n image.getExtent(),\n image.getSpacing(),\n image.getOrigin(),\n image.getBounds()\n )\n ) {\n return false;\n }\n\n publicAPI.interpolationFunctions(paramCoords, weights);\n const extent = image.getExtent();\n dimensions[0] = extent[1] - extent[0] + 1;\n dimensions[1] = extent[3] - extent[2] + 1;\n dimensions[2] = extent[5] - extent[4] + 1;\n publicAPI.getVoxelIndices(indices, dimensions, voxelIndices);\n velAtArg[0] = 0.0;\n velAtArg[1] = 0.0;\n velAtArg[2] = 0.0;\n for (let i = 0; i < 8; i++) {\n const vel = velArray.getTuple(voxelIndices[i]);\n for (let j = 0; j < 3; j++) {\n velAtArg[j] += weights[i] * vel[j];\n }\n }\n\n return true;\n };\n\n //+ END\n\n publicAPI.requestData = (inData, outData) => {\n if (model.deleted)\n return;\n\n\n const polyPoints = vtkPolyData.newInstance();\n polyPoints.shallowCopy(inData[0]);\n\n const image = inData[1];\n\n const inVectors = image.getPointData().getVectors();\n const points = polyPoints.getPoints();\n const nPoints = points.getNumberOfPoints();\n\n const outVectors = new Float32Array( 3 * nPoints );\n const scalars = new Float32Array( 3 * nPoints );\n\n console.log(\"Generating vectors\");\n let j = 0;\n for (let i = 0; i < nPoints; i++) {\n if (!publicAPI.vectorAt(points.getTuple(i), inVectors, image, velAt)) {\n velAt[0] = velAt[1] = velAt[2] = 0;\n }\n\n const vN = vtkMath.norm(velAt);\n scalars[3 * j + 0] = vN;\n scalars[3 * j + 1] = 100;\n scalars[3 * j + 2] = 100;\n\n outVectors[3 * j + 0] = 0;\n outVectors[3 * j + 1] = -Math.asin(velAt[2]/vN);\n outVectors[3 * j + 2] = Math.atan2(velAt[1],velAt[0]);\n j++;\n }\n\n let dataArray = null;\n if (j != nPoints) {\n dataArray = vtkDataArray.newInstance({numberOfComponents:3, values:outVectors.slice(0, j)});\n } else {\n dataArray = vtkDataArray.newInstance({numberOfComponents:3, values:outVectors});\n }\n polyPoints.getPointData().setVectors(dataArray);\n polyPoints.getPointData().setScalars(\n vtkDataArray.newInstance({numberOfComponents:3, values:scalars})\n );\n\n outData[0] = polyPoints;\n }\n}\n\nconst DEFAULT_VALUES = {};\n\nfunction buildFilter(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n macro.obj(publicAPI, model);\n macro.algo(publicAPI, model, 2, 1);\n lssInterpolationFilter(publicAPI, model);\n}\n\nexport const newInstance = macro.newInstance(buildFilter, 'lssInterpolationFilter');\n\nexport default { newInstance };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./external_modules/vtk_plus/InterpolationFilter/index.js\n// module id = 674\n// module chunks = 1","import macro from 'vtk.js/Sources/macro';\nimport vtkPolyData from 'vtk.js/Sources/Common/DataModel/PolyData';\n\nconst { vtkErrorMacro } = macro;\n\n// ----------------------------------------------------------------------------\n// vtkImageStreamline methods\n// ----------------------------------------------------------------------------\n\nfunction vtkImageStreamline(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkImageStreamline');\n\n const indices = new Int32Array(3);\n const paramCoords = new Float32Array(3);\n const weights = new Float32Array(8);\n const voxelIndices = new Uint32Array(8);\n const dimensions = new Uint32Array(3);\n const velAt = new Float32Array(3);\n const xtmp = new Float32Array(3);\n\n publicAPI.interpolationFunctions = (pcoords, sf) => {\n const r = pcoords[0];\n const s = pcoords[1];\n const t = pcoords[2];\n\n const rm = 1.0 - r;\n const sm = 1.0 - s;\n const tm = 1.0 - t;\n\n sf[0] = rm * sm * tm;\n sf[1] = r * sm * tm;\n sf[2] = rm * s * tm;\n sf[3] = r * s * tm;\n sf[4] = rm * sm * t;\n sf[5] = r * sm * t;\n sf[6] = rm * s * t;\n sf[7] = r * s * t;\n };\n\n publicAPI.computeStructuredCoordinates = (\n x,\n ijk,\n pcoords,\n extent,\n spacing,\n origin,\n bounds\n ) => {\n // tolerance is needed for 2D data (this is squared tolerance)\n const tol2 = 1e-12;\n //\n // Compute the ijk location\n //\n let isInBounds = true;\n for (let i = 0; i < 3; i++) {\n const d = x[i] - origin[i];\n const doubleLoc = d / spacing[i];\n // Floor for negative indexes.\n ijk[i] = Math.floor(doubleLoc);\n pcoords[i] = doubleLoc - ijk[i];\n\n let tmpInBounds = false;\n const minExt = extent[i * 2];\n const maxExt = extent[i * 2 + 1];\n\n // check if data is one pixel thick\n if (minExt === maxExt) {\n const dist = x[i] - bounds[2 * i];\n if (dist * dist <= spacing[i] * spacing[i] * tol2) {\n pcoords[i] = 0.0;\n ijk[i] = minExt;\n tmpInBounds = true;\n }\n } else if (ijk[i] < minExt) {\n if (\n (spacing[i] >= 0 && x[i] >= bounds[i * 2]) ||\n (spacing[i] < 0 && x[i] <= bounds[i * 2 + 1])\n ) {\n pcoords[i] = 0.0;\n ijk[i] = minExt;\n tmpInBounds = true;\n }\n } else if (ijk[i] >= maxExt) {\n if (\n (spacing[i] >= 0 && x[i] <= bounds[i * 2 + 1]) ||\n (spacing[i] < 0 && x[i] >= bounds[i * 2])\n ) {\n // make sure index is within the allowed cell index range\n pcoords[i] = 1.0;\n ijk[i] = maxExt - 1;\n tmpInBounds = true;\n }\n } else {\n tmpInBounds = true;\n }\n\n // clear isInBounds if out of bounds for this dimension\n isInBounds = isInBounds && tmpInBounds;\n }\n\n return isInBounds;\n };\n\n publicAPI.getVoxelIndices = (ijk, dims, ids) => {\n ids[0] = ijk[2] * dims[0] * dims[1] + ijk[1] * dims[0] + ijk[0];\n ids[1] = ids[0] + 1; // i+1, j, k\n ids[2] = ids[0] + dims[0]; // i, j+1, k\n ids[3] = ids[2] + 1; // i+1, j+1, k\n ids[4] = ids[0] + dims[0] * dims[1]; // i, j, k+1\n ids[5] = ids[4] + 1; // i+1, j, k+1\n ids[6] = ids[4] + dims[0]; // i, j+1, k+1\n ids[7] = ids[6] + 1; // i+1, j+1, k+1\n };\n\n publicAPI.vectorAt = (xyz, velArray, image, velAtArg) => {\n if (\n !publicAPI.computeStructuredCoordinates(\n xyz,\n indices,\n paramCoords,\n image.getExtent(),\n image.getSpacing(),\n image.getOrigin(),\n image.getBounds()\n )\n ) {\n return false;\n }\n\n publicAPI.interpolationFunctions(paramCoords, weights);\n const extent = image.getExtent();\n dimensions[0] = extent[1] - extent[0] + 1;\n dimensions[1] = extent[3] - extent[2] + 1;\n dimensions[2] = extent[5] - extent[4] + 1;\n publicAPI.getVoxelIndices(indices, dimensions, voxelIndices);\n velAtArg[0] = 0.0;\n velAtArg[1] = 0.0;\n velAtArg[2] = 0.0;\n for (let i = 0; i < 8; i++) {\n const vel = velArray.getTuple(voxelIndices[i]);\n for (let j = 0; j < 3; j++) {\n velAtArg[j] += weights[i] * vel[j];\n }\n }\n\n return true;\n };\n\n publicAPI.computeNextStep = (velArray, image, delT, xyz) => {\n // This does Runge-Kutta 2\n\n // Start with evaluating velocity @ initial point\n if (!publicAPI.vectorAt(xyz, velArray, image, velAt)) {\n return false;\n }\n // Now find the mid point\n for (let i = 0; i < 3; i++) {\n xtmp[i] = xyz[i] + delT / 2.0 * velAt[i];\n }\n // Use the velocity @ that point to project\n if (!publicAPI.vectorAt(xtmp, velArray, image, velAt)) {\n return false;\n }\n for (let i = 0; i < 3; i++) {\n xyz[i] += delT * velAt[i];\n }\n\n if (!publicAPI.vectorAt(xyz, velArray, image, velAt)) {\n return false;\n }\n\n return true;\n };\n\n publicAPI.streamIntegrate = (velArray, image, seed, offset) => {\n const retVal = [];\n\n const maxSteps = model.maximumNumberOfSteps;\n const delT = model.integrationStep;\n const xyz = new Float32Array(3);\n xyz[0] = seed[0];\n xyz[1] = seed[1];\n xyz[2] = seed[2];\n\n const pointsBuffer = [];\n\n let step = 0;\n for (step = 0; step < maxSteps; step++) {\n if (!publicAPI.computeNextStep(velArray, image, delT, xyz)) {\n break;\n }\n for (let i = 0; i < 3; i++) {\n pointsBuffer[3 * step + i] = xyz[i];\n }\n }\n\n const pd = vtkPolyData.newInstance();\n\n const points = new Float32Array(pointsBuffer);\n retVal[0] = points;\n\n pd.getPoints().setData(points, 3);\n\n const npts = points.length / 3;\n const line = new Uint32Array(npts + 1);\n line[0] = npts;\n for (let i = 0; i < npts; i++) {\n line[i + 1] = i + offset;\n }\n retVal[1] = line;\n\n pd.getLines().setData(line);\n\n return retVal;\n };\n\n publicAPI.requestData = (inData, outData) => {\n // implement requestData\n const input = inData[0];\n const seeds = inData[1];\n\n if (!input) {\n vtkErrorMacro('Invalid or missing input');\n return;\n }\n\n if (!seeds) {\n vtkErrorMacro('Invalid or missing seeds');\n return;\n }\n\n const seedPts = seeds.getPoints();\n const nSeeds = seedPts.getNumberOfPoints();\n\n let offset = 0;\n const datas = [];\n const vectors = input.getPointData().getVectors();\n for (let i = 0; i < nSeeds; i++) {\n const retVal = publicAPI.streamIntegrate(\n vectors,\n input,\n seedPts.getTuple(i),\n offset\n );\n offset += retVal[0].length / 3;\n datas.push(retVal);\n }\n\n let cellArrayLength = 0;\n let pointArrayLength = 0;\n datas.forEach((data) => {\n cellArrayLength += data[1].length;\n pointArrayLength += data[0].length;\n });\n offset = 0;\n let offset2 = 0;\n const cellArray = new Uint32Array(cellArrayLength);\n const pointArray = new Float32Array(pointArrayLength);\n datas.forEach((data) => {\n cellArray.set(data[1], offset);\n offset += data[1].length;\n pointArray.set(data[0], offset2);\n offset2 += data[0].length;\n });\n\n const output = vtkPolyData.newInstance();\n output.getPoints().setData(pointArray, 3);\n output.getLines().setData(cellArray);\n\n outData[0] = output;\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n integrationStep: 1,\n maximumNumberOfSteps: 1000,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Make this a VTK object\n macro.obj(publicAPI, model);\n\n // Also make it an algorithm with one input and one output\n macro.algo(publicAPI, model, 2, 1);\n\n // Generate macros for properties\n macro.setGet(publicAPI, model, ['integrationStep', 'maximumNumberOfSteps']);\n\n // Object specific methods\n vtkImageStreamline(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkImageStreamline');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vtk.js/Sources/Filters/General/ImageStreamline/index.js","\nvar content = require(\"!!../node_modules/css-loader/index.js??ref--10-1!../node_modules/postcss-loader/lib/index.js??ref--10-2!./style.mcss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../node_modules/css-loader/index.js??ref--10-1!../node_modules/postcss-loader/lib/index.js??ref--10-2!./style.mcss\", function() {\n\t\tvar newContent = require(\"!!../node_modules/css-loader/index.js??ref--10-1!../node_modules/postcss-loader/lib/index.js??ref--10-2!./style.mcss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}\n\n\n// WEBPACK FOOTER //\n// ./app/style.mcss","exports = module.exports = require(\"../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"._2zhnf-style-container {\\n\\tposition: absolute;\\n\\ttop: 0;\\n\\tright: 0;\\n\\tbottom: 0;\\n\\tleft: 0;\\n}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"container\": \"_2zhnf-style-container\"\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader??ref--10-1!./node_modules/postcss-loader/lib??ref--10-2!./app/style.mcss\n// module id = 677\n// module chunks = 1","/*!\n * Bootstrap Colorpicker v2.5.2\n * https://itsjavi.com/bootstrap-colorpicker/\n *\n * Originally written by (c) 2012 Stefan Petre\n * Licensed under the Apache License v2.0\n * http://www.apache.org/licenses/LICENSE-2.0.txt\n *\n */\n\n(function(root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module unless amdModuleId is set\n define([\"jquery\"], function(jq) {\n return (factory(jq));\n });\n } else if (typeof exports === 'object') {\n // Node. Does not work with strict CommonJS, but\n // only CommonJS-like environments that support module.exports,\n // like Node.\n module.exports = factory(require(\"jquery\"));\n } else if (jQuery && !jQuery.fn.colorpicker) {\n factory(jQuery);\n }\n}(this, function($) {\n 'use strict';\n /**\n * Color manipulation helper class\n *\n * @param {Object|String} [val]\n * @param {Object} [predefinedColors]\n * @param {String|null} [fallbackColor]\n * @param {String|null} [fallbackFormat]\n * @param {Boolean} [hexNumberSignPrefix]\n * @constructor\n */\n var Color = function(\n val, predefinedColors, fallbackColor, fallbackFormat, hexNumberSignPrefix) {\n this.fallbackValue = fallbackColor ?\n (\n (typeof fallbackColor === 'string') ?\n this.parse(fallbackColor) :\n fallbackColor\n ) :\n null;\n\n this.fallbackFormat = fallbackFormat ? fallbackFormat : 'rgba';\n\n this.hexNumberSignPrefix = hexNumberSignPrefix === true;\n\n this.value = this.fallbackValue;\n\n this.origFormat = null; // original string format\n\n this.predefinedColors = predefinedColors ? predefinedColors : {};\n\n // We don't want to share aliases across instances so we extend new object\n this.colors = $.extend({}, Color.webColors, this.predefinedColors);\n\n if (val) {\n if (typeof val.h !== 'undefined') {\n this.value = val;\n } else {\n this.setColor(String(val));\n }\n }\n\n if (!this.value) {\n // Initial value is always black if no arguments are passed or val is empty\n this.value = {\n h: 0,\n s: 0,\n b: 0,\n a: 1\n };\n }\n };\n\n Color.webColors = { // 140 predefined colors from the HTML Colors spec\n \"aliceblue\": \"f0f8ff\",\n \"antiquewhite\": \"faebd7\",\n \"aqua\": \"00ffff\",\n \"aquamarine\": \"7fffd4\",\n \"azure\": \"f0ffff\",\n \"beige\": \"f5f5dc\",\n \"bisque\": \"ffe4c4\",\n \"black\": \"000000\",\n \"blanchedalmond\": \"ffebcd\",\n \"blue\": \"0000ff\",\n \"blueviolet\": \"8a2be2\",\n \"brown\": \"a52a2a\",\n \"burlywood\": \"deb887\",\n \"cadetblue\": \"5f9ea0\",\n \"chartreuse\": \"7fff00\",\n \"chocolate\": \"d2691e\",\n \"coral\": \"ff7f50\",\n \"cornflowerblue\": \"6495ed\",\n \"cornsilk\": \"fff8dc\",\n \"crimson\": \"dc143c\",\n \"cyan\": \"00ffff\",\n \"darkblue\": \"00008b\",\n \"darkcyan\": \"008b8b\",\n \"darkgoldenrod\": \"b8860b\",\n \"darkgray\": \"a9a9a9\",\n \"darkgreen\": \"006400\",\n \"darkkhaki\": \"bdb76b\",\n \"darkmagenta\": \"8b008b\",\n \"darkolivegreen\": \"556b2f\",\n \"darkorange\": \"ff8c00\",\n \"darkorchid\": \"9932cc\",\n \"darkred\": \"8b0000\",\n \"darksalmon\": \"e9967a\",\n \"darkseagreen\": \"8fbc8f\",\n \"darkslateblue\": \"483d8b\",\n \"darkslategray\": \"2f4f4f\",\n \"darkturquoise\": \"00ced1\",\n \"darkviolet\": \"9400d3\",\n \"deeppink\": \"ff1493\",\n \"deepskyblue\": \"00bfff\",\n \"dimgray\": \"696969\",\n \"dodgerblue\": \"1e90ff\",\n \"firebrick\": \"b22222\",\n \"floralwhite\": \"fffaf0\",\n \"forestgreen\": \"228b22\",\n \"fuchsia\": \"ff00ff\",\n \"gainsboro\": \"dcdcdc\",\n \"ghostwhite\": \"f8f8ff\",\n \"gold\": \"ffd700\",\n \"goldenrod\": \"daa520\",\n \"gray\": \"808080\",\n \"green\": \"008000\",\n \"greenyellow\": \"adff2f\",\n \"honeydew\": \"f0fff0\",\n \"hotpink\": \"ff69b4\",\n \"indianred\": \"cd5c5c\",\n \"indigo\": \"4b0082\",\n \"ivory\": \"fffff0\",\n \"khaki\": \"f0e68c\",\n \"lavender\": \"e6e6fa\",\n \"lavenderblush\": \"fff0f5\",\n \"lawngreen\": \"7cfc00\",\n \"lemonchiffon\": \"fffacd\",\n \"lightblue\": \"add8e6\",\n \"lightcoral\": \"f08080\",\n \"lightcyan\": \"e0ffff\",\n \"lightgoldenrodyellow\": \"fafad2\",\n \"lightgrey\": \"d3d3d3\",\n \"lightgreen\": \"90ee90\",\n \"lightpink\": \"ffb6c1\",\n \"lightsalmon\": \"ffa07a\",\n \"lightseagreen\": \"20b2aa\",\n \"lightskyblue\": \"87cefa\",\n \"lightslategray\": \"778899\",\n \"lightsteelblue\": \"b0c4de\",\n \"lightyellow\": \"ffffe0\",\n \"lime\": \"00ff00\",\n \"limegreen\": \"32cd32\",\n \"linen\": \"faf0e6\",\n \"magenta\": \"ff00ff\",\n \"maroon\": \"800000\",\n \"mediumaquamarine\": \"66cdaa\",\n \"mediumblue\": \"0000cd\",\n \"mediumorchid\": \"ba55d3\",\n \"mediumpurple\": \"9370d8\",\n \"mediumseagreen\": \"3cb371\",\n \"mediumslateblue\": \"7b68ee\",\n \"mediumspringgreen\": \"00fa9a\",\n \"mediumturquoise\": \"48d1cc\",\n \"mediumvioletred\": \"c71585\",\n \"midnightblue\": \"191970\",\n \"mintcream\": \"f5fffa\",\n \"mistyrose\": \"ffe4e1\",\n \"moccasin\": \"ffe4b5\",\n \"navajowhite\": \"ffdead\",\n \"navy\": \"000080\",\n \"oldlace\": \"fdf5e6\",\n \"olive\": \"808000\",\n \"olivedrab\": \"6b8e23\",\n \"orange\": \"ffa500\",\n \"orangered\": \"ff4500\",\n \"orchid\": \"da70d6\",\n \"palegoldenrod\": \"eee8aa\",\n \"palegreen\": \"98fb98\",\n \"paleturquoise\": \"afeeee\",\n \"palevioletred\": \"d87093\",\n \"papayawhip\": \"ffefd5\",\n \"peachpuff\": \"ffdab9\",\n \"peru\": \"cd853f\",\n \"pink\": \"ffc0cb\",\n \"plum\": \"dda0dd\",\n \"powderblue\": \"b0e0e6\",\n \"purple\": \"800080\",\n \"red\": \"ff0000\",\n \"rosybrown\": \"bc8f8f\",\n \"royalblue\": \"4169e1\",\n \"saddlebrown\": \"8b4513\",\n \"salmon\": \"fa8072\",\n \"sandybrown\": \"f4a460\",\n \"seagreen\": \"2e8b57\",\n \"seashell\": \"fff5ee\",\n \"sienna\": \"a0522d\",\n \"silver\": \"c0c0c0\",\n \"skyblue\": \"87ceeb\",\n \"slateblue\": \"6a5acd\",\n \"slategray\": \"708090\",\n \"snow\": \"fffafa\",\n \"springgreen\": \"00ff7f\",\n \"steelblue\": \"4682b4\",\n \"tan\": \"d2b48c\",\n \"teal\": \"008080\",\n \"thistle\": \"d8bfd8\",\n \"tomato\": \"ff6347\",\n \"turquoise\": \"40e0d0\",\n \"violet\": \"ee82ee\",\n \"wheat\": \"f5deb3\",\n \"white\": \"ffffff\",\n \"whitesmoke\": \"f5f5f5\",\n \"yellow\": \"ffff00\",\n \"yellowgreen\": \"9acd32\",\n \"transparent\": \"transparent\"\n };\n\n Color.prototype = {\n constructor: Color,\n colors: {}, // merged web and predefined colors\n predefinedColors: {},\n /**\n * @return {Object}\n */\n getValue: function() {\n return this.value;\n },\n /**\n * @param {Object} val\n */\n setValue: function(val) {\n this.value = val;\n },\n _sanitizeNumber: function(val) {\n if (typeof val === 'number') {\n return val;\n }\n if (isNaN(val) || (val === null) || (val === '') || (val === undefined)) {\n return 1;\n }\n if (val === '') {\n return 0;\n }\n if (typeof val.toLowerCase !== 'undefined') {\n if (val.match(/^\\./)) {\n val = \"0\" + val;\n }\n return Math.ceil(parseFloat(val) * 100) / 100;\n }\n return 1;\n },\n isTransparent: function(strVal) {\n if (!strVal || !(typeof strVal === 'string' || strVal instanceof String)) {\n return false;\n }\n strVal = strVal.toLowerCase().trim();\n return (strVal === 'transparent') || (strVal.match(/#?00000000/)) || (strVal.match(/(rgba|hsla)\\(0,0,0,0?\\.?0\\)/));\n },\n rgbaIsTransparent: function(rgba) {\n return ((rgba.r === 0) && (rgba.g === 0) && (rgba.b === 0) && (rgba.a === 0));\n },\n // parse a string to HSB\n /**\n * @protected\n * @param {String} strVal\n * @returns {boolean} Returns true if it could be parsed, false otherwise\n */\n setColor: function(strVal) {\n strVal = strVal.toLowerCase().trim();\n if (strVal) {\n if (this.isTransparent(strVal)) {\n this.value = {\n h: 0,\n s: 0,\n b: 0,\n a: 0\n };\n return true;\n } else {\n var parsedColor = this.parse(strVal);\n if (parsedColor) {\n this.value = this.value = {\n h: parsedColor.h,\n s: parsedColor.s,\n b: parsedColor.b,\n a: parsedColor.a\n };\n if (!this.origFormat) {\n this.origFormat = parsedColor.format;\n }\n } else if (this.fallbackValue) {\n // if parser fails, defaults to fallbackValue if defined, otherwise the value won't be changed\n this.value = this.fallbackValue;\n }\n }\n }\n return false;\n },\n setHue: function(h) {\n this.value.h = 1 - h;\n },\n setSaturation: function(s) {\n this.value.s = s;\n },\n setBrightness: function(b) {\n this.value.b = 1 - b;\n },\n setAlpha: function(a) {\n this.value.a = Math.round((parseInt((1 - a) * 100, 10) / 100) * 100) / 100;\n },\n toRGB: function(h, s, b, a) {\n if (arguments.length === 0) {\n h = this.value.h;\n s = this.value.s;\n b = this.value.b;\n a = this.value.a;\n }\n\n h *= 360;\n var R, G, B, X, C;\n h = (h % 360) / 60;\n C = b * s;\n X = C * (1 - Math.abs(h % 2 - 1));\n R = G = B = b - C;\n\n h = ~~h;\n R += [C, X, 0, 0, X, C][h];\n G += [X, C, C, X, 0, 0][h];\n B += [0, 0, X, C, C, X][h];\n\n return {\n r: Math.round(R * 255),\n g: Math.round(G * 255),\n b: Math.round(B * 255),\n a: a\n };\n },\n toHex: function(ignoreFormat, h, s, b, a) {\n if (arguments.length <= 1) {\n h = this.value.h;\n s = this.value.s;\n b = this.value.b;\n a = this.value.a;\n }\n\n var prefix = '#';\n var rgb = this.toRGB(h, s, b, a);\n\n if (this.rgbaIsTransparent(rgb)) {\n return 'transparent';\n }\n\n if (!ignoreFormat) {\n prefix = (this.hexNumberSignPrefix ? '#' : '');\n }\n\n var hexStr = prefix + (\n (1 << 24) +\n (parseInt(rgb.r) << 16) +\n (parseInt(rgb.g) << 8) +\n parseInt(rgb.b))\n .toString(16)\n .slice(1);\n\n return hexStr;\n },\n toHSL: function(h, s, b, a) {\n if (arguments.length === 0) {\n h = this.value.h;\n s = this.value.s;\n b = this.value.b;\n a = this.value.a;\n }\n\n var H = h,\n L = (2 - s) * b,\n S = s * b;\n if (L > 0 && L <= 1) {\n S /= L;\n } else {\n S /= 2 - L;\n }\n L /= 2;\n if (S > 1) {\n S = 1;\n }\n return {\n h: isNaN(H) ? 0 : H,\n s: isNaN(S) ? 0 : S,\n l: isNaN(L) ? 0 : L,\n a: isNaN(a) ? 0 : a\n };\n },\n toAlias: function(r, g, b, a) {\n var c, rgb = (arguments.length === 0) ? this.toHex(true) : this.toHex(true, r, g, b, a);\n\n // support predef. colors in non-hex format too, as defined in the alias itself\n var original = this.origFormat === 'alias' ? rgb : this.toString(false, this.origFormat);\n\n for (var alias in this.colors) {\n c = this.colors[alias].toLowerCase().trim();\n if ((c === rgb) || (c === original)) {\n return alias;\n }\n }\n return false;\n },\n RGBtoHSB: function(r, g, b, a) {\n r /= 255;\n g /= 255;\n b /= 255;\n\n var H, S, V, C;\n V = Math.max(r, g, b);\n C = V - Math.min(r, g, b);\n H = (C === 0 ? null :\n V === r ? (g - b) / C :\n V === g ? (b - r) / C + 2 :\n (r - g) / C + 4\n );\n H = ((H + 360) % 6) * 60 / 360;\n S = C === 0 ? 0 : C / V;\n return {\n h: this._sanitizeNumber(H),\n s: S,\n b: V,\n a: this._sanitizeNumber(a)\n };\n },\n HueToRGB: function(p, q, h) {\n if (h < 0) {\n h += 1;\n } else if (h > 1) {\n h -= 1;\n }\n if ((h * 6) < 1) {\n return p + (q - p) * h * 6;\n } else if ((h * 2) < 1) {\n return q;\n } else if ((h * 3) < 2) {\n return p + (q - p) * ((2 / 3) - h) * 6;\n } else {\n return p;\n }\n },\n HSLtoRGB: function(h, s, l, a) {\n if (s < 0) {\n s = 0;\n }\n var q;\n if (l <= 0.5) {\n q = l * (1 + s);\n } else {\n q = l + s - (l * s);\n }\n\n var p = 2 * l - q;\n\n var tr = h + (1 / 3);\n var tg = h;\n var tb = h - (1 / 3);\n\n var r = Math.round(this.HueToRGB(p, q, tr) * 255);\n var g = Math.round(this.HueToRGB(p, q, tg) * 255);\n var b = Math.round(this.HueToRGB(p, q, tb) * 255);\n return [r, g, b, this._sanitizeNumber(a)];\n },\n /**\n * @param {String} strVal\n * @returns {Object} Object containing h,s,b,a,format properties or FALSE if failed to parse\n */\n parse: function(strVal) {\n if (typeof strVal !== 'string') {\n return this.fallbackValue;\n }\n if (arguments.length === 0) {\n return false;\n }\n\n var that = this,\n result = false,\n isAlias = (typeof this.colors[strVal] !== 'undefined'),\n values, format;\n\n if (isAlias) {\n strVal = this.colors[strVal].toLowerCase().trim();\n }\n\n $.each(this.stringParsers, function(i, parser) {\n var match = parser.re.exec(strVal);\n values = match && parser.parse.apply(that, [match]);\n if (values) {\n result = {};\n format = (isAlias ? 'alias' : (parser.format ? parser.format : that.getValidFallbackFormat()));\n if (format.match(/hsla?/)) {\n result = that.RGBtoHSB.apply(that, that.HSLtoRGB.apply(that, values));\n } else {\n result = that.RGBtoHSB.apply(that, values);\n }\n if (result instanceof Object) {\n result.format = format;\n }\n return false; // stop iterating\n }\n return true;\n });\n return result;\n },\n getValidFallbackFormat: function() {\n var formats = [\n 'rgba', 'rgb', 'hex', 'hsla', 'hsl'\n ];\n if (this.origFormat && (formats.indexOf(this.origFormat) !== -1)) {\n return this.origFormat;\n }\n if (this.fallbackFormat && (formats.indexOf(this.fallbackFormat) !== -1)) {\n return this.fallbackFormat;\n }\n\n return 'rgba'; // By default, return a format that will not lose the alpha info\n },\n /**\n *\n * @param {string} [format] (default: rgba)\n * @param {boolean} [translateAlias] Return real color for pre-defined (non-standard) aliases (default: false)\n * @param {boolean} [forceRawValue] Forces hashtag prefix when getting hex color (default: false)\n * @returns {String}\n */\n toString: function(forceRawValue, format, translateAlias) {\n format = format || this.origFormat || this.fallbackFormat;\n translateAlias = translateAlias || false;\n\n var c = false;\n\n switch (format) {\n case 'rgb':\n {\n c = this.toRGB();\n if (this.rgbaIsTransparent(c)) {\n return 'transparent';\n }\n return 'rgb(' + c.r + ',' + c.g + ',' + c.b + ')';\n }\n break;\n case 'rgba':\n {\n c = this.toRGB();\n return 'rgba(' + c.r + ',' + c.g + ',' + c.b + ',' + c.a + ')';\n }\n break;\n case 'hsl':\n {\n c = this.toHSL();\n return 'hsl(' + Math.round(c.h * 360) + ',' + Math.round(c.s * 100) + '%,' + Math.round(c.l * 100) + '%)';\n }\n break;\n case 'hsla':\n {\n c = this.toHSL();\n return 'hsla(' + Math.round(c.h * 360) + ',' + Math.round(c.s * 100) + '%,' + Math.round(c.l * 100) + '%,' + c.a + ')';\n }\n break;\n case 'hex':\n {\n return this.toHex(forceRawValue);\n }\n break;\n case 'alias':\n {\n c = this.toAlias();\n\n if (c === false) {\n return this.toString(forceRawValue, this.getValidFallbackFormat());\n }\n\n if (translateAlias && !(c in Color.webColors) && (c in this.predefinedColors)) {\n return this.predefinedColors[c];\n }\n\n return c;\n }\n default:\n {\n return c;\n }\n break;\n }\n },\n // a set of RE's that can match strings and generate color tuples.\n // from John Resig color plugin\n // https://github.com/jquery/jquery-color/\n stringParsers: [{\n re: /rgb\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*?\\)/,\n format: 'rgb',\n parse: function(execResult) {\n return [\n execResult[1],\n execResult[2],\n execResult[3],\n 1\n ];\n }\n }, {\n re: /rgb\\(\\s*(\\d*(?:\\.\\d+)?)\\%\\s*,\\s*(\\d*(?:\\.\\d+)?)\\%\\s*,\\s*(\\d*(?:\\.\\d+)?)\\%\\s*?\\)/,\n format: 'rgb',\n parse: function(execResult) {\n return [\n 2.55 * execResult[1],\n 2.55 * execResult[2],\n 2.55 * execResult[3],\n 1\n ];\n }\n }, {\n re: /rgba\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*(?:,\\s*(\\d*(?:\\.\\d+)?)\\s*)?\\)/,\n format: 'rgba',\n parse: function(execResult) {\n return [\n execResult[1],\n execResult[2],\n execResult[3],\n execResult[4]\n ];\n }\n }, {\n re: /rgba\\(\\s*(\\d*(?:\\.\\d+)?)\\%\\s*,\\s*(\\d*(?:\\.\\d+)?)\\%\\s*,\\s*(\\d*(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d*(?:\\.\\d+)?)\\s*)?\\)/,\n format: 'rgba',\n parse: function(execResult) {\n return [\n 2.55 * execResult[1],\n 2.55 * execResult[2],\n 2.55 * execResult[3],\n execResult[4]\n ];\n }\n }, {\n re: /hsl\\(\\s*(\\d*(?:\\.\\d+)?)\\s*,\\s*(\\d*(?:\\.\\d+)?)\\%\\s*,\\s*(\\d*(?:\\.\\d+)?)\\%\\s*?\\)/,\n format: 'hsl',\n parse: function(execResult) {\n return [\n execResult[1] / 360,\n execResult[2] / 100,\n execResult[3] / 100,\n execResult[4]\n ];\n }\n }, {\n re: /hsla\\(\\s*(\\d*(?:\\.\\d+)?)\\s*,\\s*(\\d*(?:\\.\\d+)?)\\%\\s*,\\s*(\\d*(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d*(?:\\.\\d+)?)\\s*)?\\)/,\n format: 'hsla',\n parse: function(execResult) {\n return [\n execResult[1] / 360,\n execResult[2] / 100,\n execResult[3] / 100,\n execResult[4]\n ];\n }\n }, {\n re: /#?([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/,\n format: 'hex',\n parse: function(execResult) {\n return [\n parseInt(execResult[1], 16),\n parseInt(execResult[2], 16),\n parseInt(execResult[3], 16),\n 1\n ];\n }\n }, {\n re: /#?([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/,\n format: 'hex',\n parse: function(execResult) {\n return [\n parseInt(execResult[1] + execResult[1], 16),\n parseInt(execResult[2] + execResult[2], 16),\n parseInt(execResult[3] + execResult[3], 16),\n 1\n ];\n }\n }],\n colorNameToHex: function(name) {\n if (typeof this.colors[name.toLowerCase()] !== 'undefined') {\n return this.colors[name.toLowerCase()];\n }\n return false;\n }\n };\n\n /*\n * Default plugin options\n */\n var defaults = {\n horizontal: false, // horizontal mode layout ?\n inline: false, //forces to show the colorpicker as an inline element\n color: false, //forces a color\n format: false, //forces a format\n input: 'input', // children input selector\n container: false, // container selector\n component: '.add-on, .input-group-addon', // children component selector\n fallbackColor: false, // fallback color value. null = keeps current color.\n fallbackFormat: 'hex', // fallback color format\n hexNumberSignPrefix: true, // put a '#' (number sign) before hex strings\n sliders: {\n saturation: {\n maxLeft: 100,\n maxTop: 100,\n callLeft: 'setSaturation',\n callTop: 'setBrightness'\n },\n hue: {\n maxLeft: 0,\n maxTop: 100,\n callLeft: false,\n callTop: 'setHue'\n },\n alpha: {\n maxLeft: 0,\n maxTop: 100,\n callLeft: false,\n callTop: 'setAlpha'\n }\n },\n slidersHorz: {\n saturation: {\n maxLeft: 100,\n maxTop: 100,\n callLeft: 'setSaturation',\n callTop: 'setBrightness'\n },\n hue: {\n maxLeft: 100,\n maxTop: 0,\n callLeft: 'setHue',\n callTop: false\n },\n alpha: {\n maxLeft: 100,\n maxTop: 0,\n callLeft: 'setAlpha',\n callTop: false\n }\n },\n template: '<div class=\"colorpicker dropdown-menu\">' +\n '<div class=\"colorpicker-saturation\"><i><b></b></i></div>' +\n '<div class=\"colorpicker-hue\"><i></i></div>' +\n '<div class=\"colorpicker-alpha\"><i></i></div>' +\n '<div class=\"colorpicker-color\"><div /></div>' +\n '<div class=\"colorpicker-selectors\"></div>' +\n '</div>',\n align: 'right',\n customClass: null, // custom class added to the colorpicker element\n colorSelectors: null // custom color aliases\n };\n\n /**\n * Colorpicker component class\n *\n * @param {Object|String} element\n * @param {Object} options\n * @constructor\n */\n var Colorpicker = function(element, options) {\n this.element = $(element).addClass('colorpicker-element');\n this.options = $.extend(true, {}, defaults, this.element.data(), options);\n this.component = this.options.component;\n this.component = (this.component !== false) ? this.element.find(this.component) : false;\n if (this.component && (this.component.length === 0)) {\n this.component = false;\n }\n this.container = (this.options.container === true) ? this.element : this.options.container;\n this.container = (this.container !== false) ? $(this.container) : false;\n\n // Is the element an input? Should we search inside for any input?\n this.input = this.element.is('input') ? this.element : (this.options.input ?\n this.element.find(this.options.input) : false);\n if (this.input && (this.input.length === 0)) {\n this.input = false;\n }\n // Set HSB color\n this.color = this.createColor(this.options.color !== false ? this.options.color : this.getValue());\n\n this.format = this.options.format !== false ? this.options.format : this.color.origFormat;\n\n if (this.options.color !== false) {\n this.updateInput(this.color);\n this.updateData(this.color);\n }\n\n this.disabled = false;\n\n // Setup picker\n var $picker = this.picker = $(this.options.template);\n if (this.options.customClass) {\n $picker.addClass(this.options.customClass);\n }\n if (this.options.inline) {\n $picker.addClass('colorpicker-inline colorpicker-visible');\n } else {\n $picker.addClass('colorpicker-hidden');\n }\n if (this.options.horizontal) {\n $picker.addClass('colorpicker-horizontal');\n }\n if (\n (['rgba', 'hsla', 'alias'].indexOf(this.format) !== -1) ||\n this.options.format === false ||\n this.getValue() === 'transparent'\n ) {\n $picker.addClass('colorpicker-with-alpha');\n }\n if (this.options.align === 'right') {\n $picker.addClass('colorpicker-right');\n }\n if (this.options.inline === true) {\n $picker.addClass('colorpicker-no-arrow');\n }\n if (this.options.colorSelectors) {\n var colorpicker = this,\n selectorsContainer = colorpicker.picker.find('.colorpicker-selectors');\n\n if (selectorsContainer.length > 0) {\n $.each(this.options.colorSelectors, function(name, color) {\n var $btn = $('<i />')\n .addClass('colorpicker-selectors-color')\n .css('background-color', color)\n .data('class', name).data('alias', name);\n\n $btn.on('mousedown.colorpicker touchstart.colorpicker', function(event) {\n event.preventDefault();\n colorpicker.setValue(\n colorpicker.format === 'alias' ? $(this).data('alias') : $(this).css('background-color')\n );\n });\n selectorsContainer.append($btn);\n });\n selectorsContainer.show().addClass('colorpicker-visible');\n }\n }\n\n // Prevent closing the colorpicker when clicking on itself\n $picker.on('mousedown.colorpicker touchstart.colorpicker', $.proxy(function(e) {\n if (e.target === e.currentTarget) {\n e.preventDefault();\n }\n }, this));\n\n // Bind click/tap events on the sliders\n $picker.find('.colorpicker-saturation, .colorpicker-hue, .colorpicker-alpha')\n .on('mousedown.colorpicker touchstart.colorpicker', $.proxy(this.mousedown, this));\n\n $picker.appendTo(this.container ? this.container : $('body'));\n\n // Bind other events\n if (this.input !== false) {\n this.input.on({\n 'keyup.colorpicker': $.proxy(this.keyup, this)\n });\n this.input.on({\n 'input.colorpicker': $.proxy(this.change, this)\n });\n if (this.component === false) {\n this.element.on({\n 'focus.colorpicker': $.proxy(this.show, this)\n });\n }\n if (this.options.inline === false) {\n this.element.on({\n 'focusout.colorpicker': $.proxy(this.hide, this)\n });\n }\n }\n\n if (this.component !== false) {\n this.component.on({\n 'click.colorpicker': $.proxy(this.show, this)\n });\n }\n\n if ((this.input === false) && (this.component === false)) {\n this.element.on({\n 'click.colorpicker': $.proxy(this.show, this)\n });\n }\n\n // for HTML5 input[type='color']\n if ((this.input !== false) && (this.component !== false) && (this.input.attr('type') === 'color')) {\n\n this.input.on({\n 'click.colorpicker': $.proxy(this.show, this),\n 'focus.colorpicker': $.proxy(this.show, this)\n });\n }\n this.update();\n\n $($.proxy(function() {\n this.element.trigger('create');\n }, this));\n };\n\n Colorpicker.Color = Color;\n\n Colorpicker.prototype = {\n constructor: Colorpicker,\n destroy: function() {\n this.picker.remove();\n this.element.removeData('colorpicker', 'color').off('.colorpicker');\n if (this.input !== false) {\n this.input.off('.colorpicker');\n }\n if (this.component !== false) {\n this.component.off('.colorpicker');\n }\n this.element.removeClass('colorpicker-element');\n this.element.trigger({\n type: 'destroy'\n });\n },\n reposition: function() {\n if (this.options.inline !== false || this.options.container) {\n return false;\n }\n var type = this.container && this.container[0] !== window.document.body ? 'position' : 'offset';\n var element = this.component || this.element;\n var offset = element[type]();\n if (this.options.align === 'right') {\n offset.left -= this.picker.outerWidth() - element.outerWidth();\n }\n this.picker.css({\n top: offset.top + element.outerHeight(),\n left: offset.left\n });\n },\n show: function(e) {\n if (this.isDisabled()) {\n // Don't show the widget if it's disabled (the input)\n return;\n }\n this.picker.addClass('colorpicker-visible').removeClass('colorpicker-hidden');\n this.reposition();\n $(window).on('resize.colorpicker', $.proxy(this.reposition, this));\n if (e && (!this.hasInput() || this.input.attr('type') === 'color')) {\n if (e.stopPropagation && e.preventDefault) {\n e.stopPropagation();\n e.preventDefault();\n }\n }\n if ((this.component || !this.input) && (this.options.inline === false)) {\n $(window.document).on({\n 'mousedown.colorpicker': $.proxy(this.hide, this)\n });\n }\n this.element.trigger({\n type: 'showPicker',\n color: this.color\n });\n },\n hide: function(e) {\n if ((typeof e !== 'undefined') && e.target) {\n // Prevent hide if triggered by an event and an element inside the colorpicker has been clicked/touched\n if (\n $(e.currentTarget).parents('.colorpicker').length > 0 ||\n $(e.target).parents('.colorpicker').length > 0\n ) {\n return false;\n }\n }\n this.picker.addClass('colorpicker-hidden').removeClass('colorpicker-visible');\n $(window).off('resize.colorpicker', this.reposition);\n $(window.document).off({\n 'mousedown.colorpicker': this.hide\n });\n this.update();\n this.element.trigger({\n type: 'hidePicker',\n color: this.color\n });\n },\n updateData: function(val) {\n val = val || this.color.toString(false, this.format);\n this.element.data('color', val);\n return val;\n },\n updateInput: function(val) {\n val = val || this.color.toString(false, this.format);\n if (this.input !== false) {\n this.input.prop('value', val);\n this.input.trigger('change');\n }\n return val;\n },\n updatePicker: function(val) {\n if (typeof val !== 'undefined') {\n this.color = this.createColor(val);\n }\n var sl = (this.options.horizontal === false) ? this.options.sliders : this.options.slidersHorz;\n var icns = this.picker.find('i');\n if (icns.length === 0) {\n return;\n }\n if (this.options.horizontal === false) {\n sl = this.options.sliders;\n icns.eq(1).css('top', sl.hue.maxTop * (1 - this.color.value.h)).end()\n .eq(2).css('top', sl.alpha.maxTop * (1 - this.color.value.a));\n } else {\n sl = this.options.slidersHorz;\n icns.eq(1).css('left', sl.hue.maxLeft * (1 - this.color.value.h)).end()\n .eq(2).css('left', sl.alpha.maxLeft * (1 - this.color.value.a));\n }\n icns.eq(0).css({\n 'top': sl.saturation.maxTop - this.color.value.b * sl.saturation.maxTop,\n 'left': this.color.value.s * sl.saturation.maxLeft\n });\n\n this.picker.find('.colorpicker-saturation')\n .css('backgroundColor', this.color.toHex(true, this.color.value.h, 1, 1, 1));\n\n this.picker.find('.colorpicker-alpha')\n .css('backgroundColor', this.color.toHex(true));\n\n this.picker.find('.colorpicker-color, .colorpicker-color div')\n .css('backgroundColor', this.color.toString(true, this.format));\n\n return val;\n },\n updateComponent: function(val) {\n var color;\n\n if (typeof val !== 'undefined') {\n color = this.createColor(val);\n } else {\n color = this.color;\n }\n\n if (this.component !== false) {\n var icn = this.component.find('i').eq(0);\n if (icn.length > 0) {\n icn.css({\n 'backgroundColor': color.toString(true, this.format)\n });\n } else {\n this.component.css({\n 'backgroundColor': color.toString(true, this.format)\n });\n }\n }\n\n return color.toString(false, this.format);\n },\n update: function(force) {\n var val;\n if ((this.getValue(false) !== false) || (force === true)) {\n // Update input/data only if the current value is not empty\n val = this.updateComponent();\n this.updateInput(val);\n this.updateData(val);\n this.updatePicker(); // only update picker if value is not empty\n }\n return val;\n\n },\n setValue: function(val) { // set color manually\n this.color = this.createColor(val);\n this.update(true);\n this.element.trigger({\n type: 'changeColor',\n color: this.color,\n value: val\n });\n },\n /**\n * Creates a new color using the instance options\n * @protected\n * @param {String} val\n * @returns {Color}\n */\n createColor: function(val) {\n return new Color(\n val ? val : null,\n this.options.colorSelectors,\n this.options.fallbackColor ? this.options.fallbackColor : this.color,\n this.options.fallbackFormat,\n this.options.hexNumberSignPrefix\n );\n },\n getValue: function(defaultValue) {\n defaultValue = (typeof defaultValue === 'undefined') ? this.options.fallbackColor : defaultValue;\n var val;\n if (this.hasInput()) {\n val = this.input.val();\n } else {\n val = this.element.data('color');\n }\n if ((val === undefined) || (val === '') || (val === null)) {\n // if not defined or empty, return default\n val = defaultValue;\n }\n return val;\n },\n hasInput: function() {\n return (this.input !== false);\n },\n isDisabled: function() {\n return this.disabled;\n },\n disable: function() {\n if (this.hasInput()) {\n this.input.prop('disabled', true);\n }\n this.disabled = true;\n this.element.trigger({\n type: 'disable',\n color: this.color,\n value: this.getValue()\n });\n return true;\n },\n enable: function() {\n if (this.hasInput()) {\n this.input.prop('disabled', false);\n }\n this.disabled = false;\n this.element.trigger({\n type: 'enable',\n color: this.color,\n value: this.getValue()\n });\n return true;\n },\n currentSlider: null,\n mousePointer: {\n left: 0,\n top: 0\n },\n mousedown: function(e) {\n if (!e.pageX && !e.pageY && e.originalEvent && e.originalEvent.touches) {\n e.pageX = e.originalEvent.touches[0].pageX;\n e.pageY = e.originalEvent.touches[0].pageY;\n }\n e.stopPropagation();\n e.preventDefault();\n\n var target = $(e.target);\n\n //detect the slider and set the limits and callbacks\n var zone = target.closest('div');\n var sl = this.options.horizontal ? this.options.slidersHorz : this.options.sliders;\n if (!zone.is('.colorpicker')) {\n if (zone.is('.colorpicker-saturation')) {\n this.currentSlider = $.extend({}, sl.saturation);\n } else if (zone.is('.colorpicker-hue')) {\n this.currentSlider = $.extend({}, sl.hue);\n } else if (zone.is('.colorpicker-alpha')) {\n this.currentSlider = $.extend({}, sl.alpha);\n } else {\n return false;\n }\n var offset = zone.offset();\n //reference to guide's style\n this.currentSlider.guide = zone.find('i')[0].style;\n this.currentSlider.left = e.pageX - offset.left;\n this.currentSlider.top = e.pageY - offset.top;\n this.mousePointer = {\n left: e.pageX,\n top: e.pageY\n };\n //trigger mousemove to move the guide to the current position\n $(window.document).on({\n 'mousemove.colorpicker': $.proxy(this.mousemove, this),\n 'touchmove.colorpicker': $.proxy(this.mousemove, this),\n 'mouseup.colorpicker': $.proxy(this.mouseup, this),\n 'touchend.colorpicker': $.proxy(this.mouseup, this)\n }).trigger('mousemove');\n }\n return false;\n },\n mousemove: function(e) {\n if (!e.pageX && !e.pageY && e.originalEvent && e.originalEvent.touches) {\n e.pageX = e.originalEvent.touches[0].pageX;\n e.pageY = e.originalEvent.touches[0].pageY;\n }\n e.stopPropagation();\n e.preventDefault();\n var left = Math.max(\n 0,\n Math.min(\n this.currentSlider.maxLeft,\n this.currentSlider.left + ((e.pageX || this.mousePointer.left) - this.mousePointer.left)\n )\n );\n var top = Math.max(\n 0,\n Math.min(\n this.currentSlider.maxTop,\n this.currentSlider.top + ((e.pageY || this.mousePointer.top) - this.mousePointer.top)\n )\n );\n this.currentSlider.guide.left = left + 'px';\n this.currentSlider.guide.top = top + 'px';\n if (this.currentSlider.callLeft) {\n this.color[this.currentSlider.callLeft].call(this.color, left / this.currentSlider.maxLeft);\n }\n if (this.currentSlider.callTop) {\n this.color[this.currentSlider.callTop].call(this.color, top / this.currentSlider.maxTop);\n }\n // Change format dynamically\n // Only occurs if user choose the dynamic format by\n // setting option format to false\n if (\n this.options.format === false &&\n (this.currentSlider.callTop === 'setAlpha' ||\n this.currentSlider.callLeft === 'setAlpha')\n ) {\n\n // Converting from hex / rgb to rgba\n if (this.color.value.a !== 1) {\n this.format = 'rgba';\n this.color.origFormat = 'rgba';\n }\n\n // Converting from rgba to hex\n else {\n this.format = 'hex';\n this.color.origFormat = 'hex';\n }\n }\n this.update(true);\n\n this.element.trigger({\n type: 'changeColor',\n color: this.color\n });\n return false;\n },\n mouseup: function(e) {\n e.stopPropagation();\n e.preventDefault();\n $(window.document).off({\n 'mousemove.colorpicker': this.mousemove,\n 'touchmove.colorpicker': this.mousemove,\n 'mouseup.colorpicker': this.mouseup,\n 'touchend.colorpicker': this.mouseup\n });\n return false;\n },\n change: function(e) {\n this.color = this.createColor(this.input.val());\n // Change format dynamically\n // Only occurs if user choose the dynamic format by\n // setting option format to false\n if (this.color.origFormat && this.options.format === false) {\n this.format = this.color.origFormat;\n }\n if (this.getValue(false) !== false) {\n this.updateData();\n this.updateComponent();\n this.updatePicker();\n }\n\n this.element.trigger({\n type: 'changeColor',\n color: this.color,\n value: this.input.val()\n });\n },\n keyup: function(e) {\n if ((e.keyCode === 38)) {\n if (this.color.value.a < 1) {\n this.color.value.a = Math.round((this.color.value.a + 0.01) * 100) / 100;\n }\n this.update(true);\n } else if ((e.keyCode === 40)) {\n if (this.color.value.a > 0) {\n this.color.value.a = Math.round((this.color.value.a - 0.01) * 100) / 100;\n }\n this.update(true);\n }\n\n this.element.trigger({\n type: 'changeColor',\n color: this.color,\n value: this.input.val()\n });\n }\n };\n\n $.colorpicker = Colorpicker;\n\n $.fn.colorpicker = function(option) {\n var apiArgs = Array.prototype.slice.call(arguments, 1),\n isSingleElement = (this.length === 1),\n returnValue = null;\n\n var $jq = this.each(function() {\n var $this = $(this),\n inst = $this.data('colorpicker'),\n options = ((typeof option === 'object') ? option : {});\n\n if (!inst) {\n inst = new Colorpicker(this, options);\n $this.data('colorpicker', inst);\n }\n\n if (typeof option === 'string') {\n if ($.isFunction(inst[option])) {\n returnValue = inst[option].apply(inst, apiArgs);\n } else { // its a property ?\n if (apiArgs.length) {\n // set property\n inst[option] = apiArgs[0];\n }\n returnValue = inst[option];\n }\n } else {\n returnValue = $this;\n }\n });\n return isSingleElement ? returnValue : $jq;\n };\n\n $.fn.colorpicker.constructor = Colorpicker;\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/bootstrap-colorpicker/dist/js/bootstrap-colorpicker.js\n// module id = 678\n// module chunks = 1","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/bootstrap-colorpicker/src/sass/_colorpicker.scss\n// module id = 679\n// module chunks = 1"],"sourceRoot":""}